mirror of
https://github.com/lukaszraczylo/traefik-llmgateway.git
synced 2026-10-12 04:54:45 +00:00
Every tab row scrolls sideways instead of being clipped by its card. On phones this hid tabs, such as the Config change helper's last forms at 360-390px. The login button has a larger touch target, and long names are truncated with a tooltip. Loading and empty states: - Skeletons show only while a selection has no data yet, never over data already on screen during a refresh. - Empty states name the next step to take. - Error states offer a Retry button that shows progress, and each card keeps its own error. - Toasts confirm copies and key generation, and report background failures once per streak through polite and assertive live regions. Other changes: - The access matrix switches between Models, MCP servers and Agents, and says "none configured" only once its data has loaded. - Home ranks the top 5 users by cost, requests or tokens. It requests only the needed metrics and warns before a range exceeds the server's key cap. - MCP and agent deep links accept a bare target name. admin_assets_gen.go is regenerated. Claude-Session: https://claude.ai/code/session_01V5jYJNxpDFdJkyyExpADrv
242 lines
1.1 MiB
Plaintext
242 lines
1.1 MiB
Plaintext
// Code generated by webui/generate.mjs; DO NOT EDIT.
|
|
//
|
|
// Source: webui/dist/ (vite build output), digest bddab0473d8a86fb.
|
|
// Regenerate via `make admin-ui` after any webui/ source change.
|
|
//
|
|
// Every asset body below is base64-encoded and decoded once at package-var
|
|
// initialization (encoding/base64, stdlib — Yaegi-safe). See generate.mjs's
|
|
// own header comment for why base64 was chosen over a raw-string literal.
|
|
|
|
package traefikllmgateway
|
|
|
|
import "encoding/base64"
|
|
|
|
// adminAsset is one baked static file: its HTTP Content-Type and decoded body.
|
|
type adminAsset struct {
|
|
contentType string
|
|
body []byte
|
|
}
|
|
|
|
// decodeAdminAsset base64-decodes one embedded asset body. Every literal
|
|
// passed to it below was produced by this exact encoding (base64.StdEncoding)
|
|
// in webui/generate.mjs, so a decode error here can only mean this generated
|
|
// file is corrupt — a build-time invariant violation, not a reachable runtime
|
|
// condition — so it panics rather than threading an error return through
|
|
// every var initializer below.
|
|
func decodeAdminAsset(encoded string) []byte {
|
|
data, err := base64.StdEncoding.DecodeString(encoded)
|
|
if err != nil {
|
|
panic("admin_assets_gen.go: corrupt embedded asset: " + err.Error())
|
|
}
|
|
return data
|
|
}
|
|
|
|
// adminIndexHTML is GET /admin's response body (admin.go's serveAdminPage) —
|
|
// the built Vue app's HTML shell.
|
|
var adminIndexHTML = decodeAdminAsset(
|
|
"PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgPCEtLSBJbmxpbmUgZGF0YTogVVJJLCBub3QgYSBmaWxlIHVuZGVyIHB1YmxpYy86IGFkbWluLmdvJ3MgYXNzZXQgbWFwIG9ubHkKICAgICAgICAgZXZlciBob2xkcyBjb250ZW50LWhhc2hlZCBmaWxlcyB1bmRlciAvYWRtaW4vYXNzZXRzLyosIGFuZCB0aGUgYWRtaW4KICAgICAgICAgQ1NQJ3MgaW1nLXNyYyBhbGxvd3MgJ3NlbGYnIHBsdXMgZGF0YTogZm9yIGV4YWN0bHkgdGhpcyByZWFzb24g4oCUIG5vCiAgICAgICAgIGV4dHJhIHVuaGFzaGVkLWFzc2V0IHJvdXRlIGlzIG5lZWRlZCBmb3Igb25lIHNtYWxsIGljb24uIC0tPgogICAgPGxpbmsKICAgICAgcmVsPSJpY29uIgogICAgICB0eXBlPSJpbWFnZS9zdmcreG1sIgogICAgICBocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI0IDI0JyUzRSUzQ3JlY3Qgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyByeD0nNScgZmlsbD0nJTIzMDA3MmIyJy8lM0UlM0NwYXRoIGQ9J002IDE2LjUgMTAgOGwzIDYgMi0zLjUgMyA2JyBzdHJva2U9JyUyM2ZmZicgc3Ryb2tlLXdpZHRoPScyJyBmaWxsPSdub25lJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzRSUzQy9zdmclM0UiCiAgICAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+CiAgICA8dGl0bGU+TExNIEdhdGV3YXkgLSBBZG1pbjwvdGl0bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSIvYWRtaW4vYXNzZXRzL2luZGV4LWR5d1M4T3BULmpzIj48L3NjcmlwdD4KICAgIDxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgY3Jvc3NvcmlnaW4gaHJlZj0iL2FkbWluL2Fzc2V0cy9Ta2VsZXRvbi1CMHppQjZPZC5qcyI+CiAgICA8bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGNyb3Nzb3JpZ2luIGhyZWY9Ii9hZG1pbi9hc3NldHMvdXNlSWQtQjlkSnVtb0kuanMiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbiBocmVmPSIvYWRtaW4vYXNzZXRzL2luZGV4LUJENWJCaXNPLmNzcyI+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBpZD0iYXBwIj48L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K",
|
|
)
|
|
|
|
// adminAssets maps each hashed filename under /admin/assets/ (admin.go's
|
|
// serveAdminAsset) to its content.
|
|
var adminAssets = map[string]adminAsset{
|
|
"ClampedRangeNotice-D2walnXf.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0ZyIGFzIGUsU2kgYXMgdCxfbiBhcyBuLGdpIGFzIHIsaG4gYXMgaSxpbiBhcyBhLG1uIGFzIG8sbnIgYXMgcyxvbiBhcyBjLHMgYXMgbCxzbiBhcyB1fWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7aW1wb3J0e2cgYXMgZCxoIGFzIGZ9ZnJvbSIuL2luZGV4LWR5d1M4T3BULmpzIjt2YXIgcD1uKHtfX25hbWU6YENsYW1wZWRSYW5nZU5vdGljZWAscHJvcHM6e3dpbmRvdzp7fSxzcGFuOnt9fSxzZXR1cChuKXtsZXQgcD1uLG09YSgoKT0+bChwLndpbmRvdyxwLnNwYW4pKTtyZXR1cm4obixhKT0+bS52YWx1ZT8ocygpLGMocihkKSx7a2V5OjAsdmFyaWFudDpgd2FybmB9LHtkZWZhdWx0OmUoKCk9PltpKHIoZiksbnVsbCx7ZGVmYXVsdDplKCgpPT5bbyh0KG0udmFsdWUpLDEpXSksXzoxfSldKSxfOjF9KSk6dShgYCwhMCl9fSk7ZXhwb3J0e3AgYXMgdH07",
|
|
),
|
|
},
|
|
"CompactNumber-pr8cJ4cv.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e1NpIGFzIGUsX24gYXMgdCxhbiBhcyBuLGNuIGFzIHIsaW4gYXMgaSxuciBhcyBhfWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7aW1wb3J0e2MgYXMgbyxpIGFzIHN9ZnJvbSIuL2JhZGdlLURVaUJURHlBLmpzIjt2YXIgYz1bYHRpdGxlYF0sbD17ImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LHU9e2NsYXNzOmBzci1vbmx5YH0sZD10KHtfX25hbWU6YENvbXBhY3ROdW1iZXJgLHByb3BzOnt2YWx1ZTp7fX0sc2V0dXAodCl7bGV0IGQ9dCxmPWkoKCk9PnMoZC52YWx1ZSkpLHA9aSgoKT0+byhkLnZhbHVlKSk7cmV0dXJuKHQsaSk9PihhKCkscihgc3BhbmAse3RpdGxlOnAudmFsdWV9LFtuKGBzcGFuYCxsLGUoZi52YWx1ZSksMSksbihgc3BhbmAsdSxlKHAudmFsdWUpLDEpXSw4LGMpKX19KTtleHBvcnR7ZCBhcyB0fTs=",
|
|
),
|
|
},
|
|
"ConfigPage-7IYcafPw.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0MgYXMgZSxFIGFzIHQsRXIgYXMgbixGciBhcyByLEZ0IGFzIGksSnQgYXMgYSxMciBhcyBvLFMgYXMgcyxTaSBhcyBjLFQgYXMgbCxYIGFzIHUsWG4gYXMgZCxfIGFzIGYsX24gYXMgcCxfdCBhcyBtLGFuIGFzIGgsYiBhcyBnLGNuIGFzIF8sY3IgYXMgdixlciBhcyB5LGcgYXMgYixnaSBhcyB4LGhuIGFzIFMsaWkgYXMgQyxpbiBhcyB3LGl0IGFzIFQsbW4gYXMgRSxtdCBhcyBELG4gYXMgTyxuciBhcyBrLG9pIGFzIEEsb24gYXMgaixzbiBhcyBNLHQgYXMgTix1ciBhcyBlZSx3IGFzIFAseCBhcyBGLHkgYXMgdGUseWkgYXMgbmV9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjtpbXBvcnR7biBhcyByZSxyIGFzIGllLHQgYXMgYWV9ZnJvbSIuL3RhYnMtWWxobkhwSy0uanMiO2ltcG9ydHthIGFzIEksYyBhcyBvZSxnIGFzIEwsaCBhcyBSLGkgYXMgeixtIGFzIHNlLG4gYXMgQixvIGFzIFYsciBhcyBILHMgYXMgVX1mcm9tIi4vaW5kZXgtZHl3UzhPcFQuanMiO2ltcG9ydHt0IGFzIGNlfWZyb20iLi9jbGlwYm9hcmQtQjczZlowYzEuanMiO2ltcG9ydHt0IGFzIGxlfWZyb20iLi9FcnJvclN0YXRlLXltNmVTbGoyLmpzIjtpbXBvcnR7dCBhcyB1ZX1mcm9tIi4vY29uc3VtZXJzLUNRdEVKOUs3LmpzIjt2YXIgZGU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xLjVgfSxmZT17Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMmB9LHBlPXtrZXk6MCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxXPXAoe19fbmFtZTpgU25pcHBldEJsb2NrYCxwcm9wczp7dGV4dDp7fSxsYWJlbDp7fX0sc2V0dXAoZSl7bGV0IGk9ZSxhPW4oYHByZWApLG89QShgaWRsZWApLHMsbD1mKCk7YXN5bmMgZnVuY3Rpb24gZCgpe28udmFsdWU9YXdhaXQgY2UoaS50ZXh0LGEudmFsdWU/P3ZvaWQgMCksby52YWx1ZT09PWBmYWlsZWRgJiZsLnB1c2goe2tpbmQ6YGVycm9yYCxtZXNzYWdlOmBDb3VsZCBub3QgY29weSB0aGUgc25pcHBldC5gfSksY2xlYXJUaW1lb3V0KHMpLHM9c2V0VGltZW91dCgoKT0+e28udmFsdWU9YGlkbGVgfSwxNTAwKX1sZXQgcD17aWRsZTpgQ29weWAsY29waWVkOmBDb3BpZWRgLHNlbGVjdGVkOmBTZWxlY3RlZCDigJQgcHJlc3Mg4oyYL0N0cmwrQ2AsZmFpbGVkOmBDb3B5IGZhaWxlZGB9O3JldHVybiB5KCgpPT5jbGVhclRpbWVvdXQocykpLChuLGkpPT57bGV0IGE9ZWUoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBrKCksXyhgZGl2YCxkZSxbaChgZGl2YCxmZSxbZS5sYWJlbD8oaygpLF8oYHNwYW5gLHBlLGMoZS5sYWJlbCksMSkpOk0oYGAsITApLFMoeCh0KSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsY2xhc3M6YG1sLWF1dG9gLG9uQ2xpY2s6ZH0se2RlZmF1bHQ6cigoKT0+W1MoYSx7aWNvbjpvLnZhbHVlPT09YGlkbGVgP3goVCk6by52YWx1ZT09PWBmYWlsZWRgP3goRCk6eCh1KSxjbGFzczpuZShbYHNpemUtMy41YCxvLnZhbHVlPT09YGZhaWxlZGA/YHRleHQtZGVzdHJ1Y3RpdmVgOnZvaWQgMF0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSksRShgIGArYyhwW28udmFsdWVdKSwxKV0pLF86MX0pXSksaChgcHJlYCx7cmVmOmBwcmVgLGNsYXNzOmBvdmVyZmxvdy14LWF1dG8gcm91bmRlZC1tZCBib3JkZXIgYmctbXV0ZWQgcC0zIGZvbnQtbW9ubyB0ZXh0LXhzIHNlbGVjdC10ZXh0IHdoaXRlc3BhY2UtcHJlYH0sYyhlLnRleHQpLDUxMyldKX19fSksbWU9YCAgYCxoZT0vXltBLVphLXpfXVtBLVphLXowLTkuXy1dKiQvLGdlPW5ldyBTZXQoW2B0cnVlYCxgZmFsc2VgLGB5ZXNgLGBub2AsYHlgLGBuYCxgb25gLGBvZmZgLGBudWxsYCxgbmlsYCxgbmFuYCxgaW5mYF0pO2Z1bmN0aW9uIF9lKGUpe3JldHVybiFoZS50ZXN0KGUpfHxnZS5oYXMoZS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiB2ZShlKXtyZXR1cm4gX2UoZSl9dmFyIHllPVJlZ0V4cChgW1xcdTAwN2ZcXHUwMDgwLVxcdTAwOWZcdTIwMjhcdTIwMjldYCxgZ2ApO2Z1bmN0aW9uIGJlKGUpe3JldHVybiBlLnJlcGxhY2UoeWUsZT0+e2xldCB0PWUuY29kZVBvaW50QXQoMCk7cmV0dXJuIHQ8PTI1NT9gXFx4JHt0LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLGAwYCl9YDpgXFx1JHt0LnRvU3RyaW5nKDE2KS5wYWRTdGFydCg0LGAwYCl9YH0pfWZ1bmN0aW9uIEcoZSl7cmV0dXJuIHZlKGUpP2JlKEpTT04uc3RyaW5naWZ5KGUpKTplfWZ1bmN0aW9uIEsoZSl7cmV0dXJuIGU9PT1udWxsP2BudWxsYDp0eXBlb2YgZT09YGJvb2xlYW5gfHx0eXBlb2YgZT09YG51bWJlcmA/U3RyaW5nKGUpOl9lKGUpP2JlKEpTT04uc3RyaW5naWZ5KGUpKTplfWZ1bmN0aW9uIHhlKGUpe3JldHVybiBlLmxlbmd0aD09PTA/YFtdYDpgWyR7ZS5tYXAoZT0+SyhlKSkuam9pbihgLCBgKX1dYH1mdW5jdGlvbiBTZShlKXtyZXR1cm4gZS5sZW5ndGg9PT0wP2B7fWA6YHsgJHtlLm1hcCgoW2UsdF0pPT5gJHtHKGUpfTogJHtLKHQpfWApLmpvaW4oYCwgYCl9IH1gfWZ1bmN0aW9uIENlKGUpe3JldHVybiB0eXBlb2YgZT09YG9iamVjdGAmJiEhZSYmIUFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gcShlKXtyZXR1cm4gZT09PW51bGx8fHR5cGVvZiBlPT1gc3RyaW5nYHx8dHlwZW9mIGU9PWBudW1iZXJgfHx0eXBlb2YgZT09YGJvb2xlYW5gfWZ1bmN0aW9uIHdlKGUsdCl7bGV0IG49bWUucmVwZWF0KHQpLHI9W107Zm9yKGxldFtpLGFdb2YgT2JqZWN0LmVudHJpZXMoZSkpe2lmKGE9PT12b2lkIDApY29udGludWU7bGV0IGU9YCR7bn0ke0coaSl9OmA7aWYocShhKSlyLnB1c2goYCR7ZX0gJHtLKGEpfWApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShhKSl7aWYoYS5ldmVyeShxKSlyLnB1c2goYCR7ZX0gJHt4ZShhKX1gKTtlbHNle3IucHVzaChlKTtmb3IobGV0IGUgb2YgYSlyLnB1c2goYCR7bn0ke21lfS0gJHtxKGUpP0soZSk6SlNPTi5zdHJpbmdpZnkoZSl9YCl9fWVsc2UgQ2UoYSkmJihPYmplY3Qua2V5cyhhKS5maWx0ZXIoZT0+YVtlXSE9PXZvaWQgMCkubGVuZ3RoPT09MD9yLnB1c2goYCR7ZX0ge31gKTooci5wdXNoKGUpLHIucHVzaCguLi53ZShhLHQrMSkpKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gVGUoZSx0PTApe3JldHVybiB3ZShlLHQpLmpvaW4oYApgKX1mdW5jdGlvbiBFZShlLHQpe2xldCBuPXQscj1bYHNwZWNgLGBwbHVnaW5gLGBsbG1nYXRld2F5YCwuLi5lXTtmb3IobGV0IGU9ci5sZW5ndGgtMTtlPj0wO2UtLSluPXtbcltlXV06bn07cmV0dXJuIFRlKG4pfWZ1bmN0aW9uIEooZSl7aWYoZT09PW51bGx8fHR5cGVvZiBlPT1gc3RyaW5nYHx8dHlwZW9mIGU9PWBudW1iZXJgfHx0eXBlb2YgZT09YGJvb2xlYW5gKXJldHVybiBlO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUubWFwKEopO2lmKHR5cGVvZiBlPT1gb2JqZWN0YCl7bGV0IHQ9e307Zm9yKGxldFtuLHJdb2YgT2JqZWN0LmVudHJpZXMoZSkpdFtuXT1KKHIpO3JldHVybiB0fXJldHVybiBTdHJpbmcoZSl9dmFyIERlPS9eW2EtekEtWjAtOS5fLV0rJC87ZnVuY3Rpb24gT2UoZSl7cmV0dXJuIERlLnRlc3QoZSl9ZnVuY3Rpb24gWShlKXtyZXR1cm4gZS50cmltKCkhPT1gYH1mdW5jdGlvbiBYKGUpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUoZSkmJmU+PTB9ZnVuY3Rpb24ga2UoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTB9ZnVuY3Rpb24gQWUoZSx0KXtyZXR1cm4gdC5sZW5ndGg+MCYmZS5sZW5ndGg9PT0wP2BBIHBlcnNvbmFsIGdyYW50IG5hbWluZyBtb2RlbHMgbmVlZHMgYXQgbGVhc3Qgb25lIHByb3ZpZGVyIHRvbyDigJQgYW4gZW1wdHkgcHJvdmlkZXJzIGxpc3QgbWVhbnMgRVZFUlkgY29uZmlndXJlZCBwcm92aWRlciAobm90IG5vbmUpLCBzbyB0aGlzIHdvdWxkIHNpbGVudGx5IHdpZGVuIGFjY2VzcyBmYXIgYmV5b25kIHdoYXQgd2FzIHR5cGVkIChhdXRoLmdvIHJlamVjdHMgaXQpLmA6bnVsbH12YXIgamU9W2ByZXF1ZXN0c1Blck1pbnV0ZWAsYHJlcXVlc3RzUGVyRGF5YCxgdG9rZW5zUGVyRGF5YCxgdG9rZW5zUGVyTW9udGhgLGBjb3N0UGVyRGF5VVNEYCxgY29zdFBlck1vbnRoVVNEYF07ZnVuY3Rpb24gWihlKXtsZXQgdD1bXTtmb3IobGV0IG4gb2YgamUpe2xldCByPWVbbl07ciYmdC5wdXNoKFtuLHJdKX1yZXR1cm4gdH1mdW5jdGlvbiBNZShlLHQpe2xldCBuPXt9O2ZvcihsZXRbZSxyXW9mIFoodCkpbltlXT1yO3JldHVybiBFZShbYGdyb3Vwc2AsZV0se2xpbWl0czpufSl9ZnVuY3Rpb24gUShlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSl9ZnVuY3Rpb24gJChlKXtyZXR1cm5gWyR7ZS5tYXAoUSkuam9pbihgLCBgKX1dYH1mdW5jdGlvbiBOZShlKXtyZXR1cm5geyR7WihlKS5tYXAoKFtlLHRdKT0+YCR7UShlKX06ICR7dH1gKS5qb2luKGAsIGApfX1gfWZ1bmN0aW9uIFBlKGUpe3JldHVybmAibGltaXRzIjogJHtOZShlKX1gfWZ1bmN0aW9uIEZlKGUsdCl7cmV0dXJuIEVlKFtgZ3JvdXBzYCxlXSx7cHJvdmlkZXJzOnQucHJvdmlkZXJzLG1vZGVsczp0Lm1vZGVscyxtY3BTZXJ2ZXJzOnQubWNwU2VydmVycyxhZ2VudHM6dC5hZ2VudHN9KX1mdW5jdGlvbiBJZShlKXtsZXQgdD1bXTtyZXR1cm4gZS5wcm92aWRlcnMubGVuZ3RoPjAmJnQucHVzaChgInByb3ZpZGVycyI6ICR7JChlLnByb3ZpZGVycyl9YCksZS5tb2RlbHMubGVuZ3RoPjAmJnQucHVzaChgIm1vZGVscyI6ICR7JChlLm1vZGVscyl9YCksdC5qb2luKGAsIGApfWZ1bmN0aW9uIExlKGUsdCl7bGV0IG49W107dC5jb250ZXh0VG9rZW5zIT09dm9pZCAwJiZuLnB1c2goW2Bjb250ZXh0VG9rZW5zYCx0LmNvbnRleHRUb2tlbnNdKSx0LmZyZWUhPT12b2lkIDAmJm4ucHVzaChbYGZyZWVgLHQuZnJlZV0pO2xldCByPVNlKG4pO3JldHVybltgc3BlYzpgLGAgIHBsdWdpbjpgLGAgICAgbGxtZ2F0ZXdheTpgLGAgICAgICBtb2RlbE1ldGE6YCxgICAgICAgICAke0pTT04uc3RyaW5naWZ5KGUpfTogJHtyfWBdLmpvaW4oYApgKX1mdW5jdGlvbiBSZShlLHQpe2xldCBuPVNlKFtbYGlucHV0UGVyTWAsdC5pbnB1dFBlck1dLFtgb3V0cHV0UGVyTWAsdC5vdXRwdXRQZXJNXV0pO3JldHVybltgc3BlYzpgLGAgIHBsdWdpbjpgLGAgICAgbGxtZ2F0ZXdheTpgLGAgICAgICBwcmljaW5nOmAsYCAgICAgICAgJHtHKGUpfTogJHtufWBdLmpvaW4oYApgKX12YXIgemU9YHNrLWxsbWd3LVJFUExBQ0VfTUVgO2Z1bmN0aW9uIEJlKCl7bGV0IGU9Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMikpLHQ9YGA7Zm9yKGxldCBuIG9mIGUpdCs9U3RyaW5nLmZyb21DaGFyQ29kZShuKTtyZXR1cm5gc2stbGxtZ3ctJHtidG9hKHQpLnJlcGxhY2UoL1wrL2csYC1gKS5yZXBsYWNlKC9cLy9nLGBfYCkucmVwbGFjZSgvPSskLyxgYCl9YH1mdW5jdGlvbiBWZShlKXtsZXQgdD1bYCJuYW1lIjogJHtRKGUubmFtZSl9YCxgImFwaUtleSI6ICR7UShlLmFwaUtleSl9YF07cmV0dXJuIGUuZ3JvdXAmJnQucHVzaChgImdyb3VwIjogJHtRKGUuZ3JvdXApfWApLGUuZ3JvdXBzJiZlLmdyb3Vwcy5sZW5ndGg+MCYmdC5wdXNoKGAiZ3JvdXBzIjogJHskKGUuZ3JvdXBzKX1gKSxlLnByb3ZpZGVycyYmZS5wcm92aWRlcnMubGVuZ3RoPjAmJnQucHVzaChgInByb3ZpZGVycyI6ICR7JChlLnByb3ZpZGVycyl9YCksZS5tb2RlbHMmJmUubW9kZWxzLmxlbmd0aD4wJiZ0LnB1c2goYCJtb2RlbHMiOiAkeyQoZS5tb2RlbHMpfWApLGUubGltaXRzJiZaKGUubGltaXRzKS5sZW5ndGg+MCYmdC5wdXNoKGAibGltaXRzIjogJHtOZShlLmxpbWl0cyl9YCksZS5hZG1pbiYmdC5wdXNoKGAiYWRtaW4iOiAke0soITApfWApLGB7JHt0LmpvaW4oYCwgYCl9fWB9dmFyIEhlPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LFVlPXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMyBzbTpncmlkLWNvbHMtMmB9LFdlPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LEdlPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LEtlPXtpZDpgZ3JhbnQtdGFyZ2V0LW5hbWUtbGFiZWxgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHFlPXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMyBzbTpncmlkLWNvbHMtMmB9LEplPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LFllPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LFhlPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LFplPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LFFlPXtrZXk6MixjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSwkZT1wKHtfX25hbWU6YEdyYW50Rm9ybWAscHJvcHM6e2dyb3VwTmFtZXM6e30sdXNlck5hbWVzOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49QShgZ3JvdXBgKSxpPUEoYGApLG89QShgYCkscz1BKGBgKSxsPUEoYGApLHU9QShgYCk7ZnVuY3Rpb24gZChlKXtsZXQgdD1uZXcgU2V0O2ZvcihsZXQgbiBvZiBlLnNwbGl0KGAsYCkpe2xldCBlPW4udHJpbSgpO2UmJnQuYWRkKGUpfXJldHVybiBBcnJheS5mcm9tKHQpfWxldCBmPXcoKCk9PmQoby52YWx1ZSkpLHA9dygoKT0+ZChzLnZhbHVlKSksbT13KCgpPT5kKGwudmFsdWUpKSxnPXcoKCk9PmQodS52YWx1ZSkpLHk9dygoKT0+bi52YWx1ZT09PWBncm91cGA/dC5ncm91cE5hbWVzOnQudXNlck5hbWVzKSxiPXcoKCk9Pm4udmFsdWU9PT1gZ3JvdXBgP09lKGkudmFsdWUudHJpbSgpKTpZKGkudmFsdWUpKSxDPXcoKCk9Pm4udmFsdWU9PT1gdXNlcmA/QWUoZi52YWx1ZSxwLnZhbHVlKTpudWxsKSxUPXcoKCk9PmYudmFsdWUubGVuZ3RoPT09MCYmcC52YWx1ZS5sZW5ndGg9PT0wJiZtLnZhbHVlLmxlbmd0aD09PTAmJmcudmFsdWUubGVuZ3RoPT09MCksRD13KCgpPT4hYi52YWx1ZXx8Qy52YWx1ZXx8VC52YWx1ZT9udWxsOm4udmFsdWU9PT1gZ3JvdXBgP0ZlKGkudmFsdWUudHJpbSgpLHtwcm92aWRlcnM6Zi52YWx1ZSxtb2RlbHM6cC52YWx1ZSxtY3BTZXJ2ZXJzOm0udmFsdWUsYWdlbnRzOmcudmFsdWV9KTpJZSh7cHJvdmlkZXJzOmYudmFsdWUsbW9kZWxzOnAudmFsdWV9KXx8bnVsbCk7cmV0dXJuKGUsdCk9PihrKCksXyhgZGl2YCxIZSxbaChgZGl2YCxVZSxbaChgZGl2YCxXZSxbdFs4XXx8PWgoYGxhYmVsYCx7aWQ6YGdyYW50LXRhcmdldC1raW5kLWxhYmVsYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgVGFyZ2V0YCwtMSksUyh4KFYpLHsibW9kZWwtdmFsdWUiOm4udmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbMF18fD1lPT5uLnZhbHVlPWV9LHtkZWZhdWx0OnIoKCk9PltTKHgoSCkseyJhcmlhLWxhYmVsbGVkYnkiOmBncmFudC10YXJnZXQta2luZC1sYWJlbGB9LHtkZWZhdWx0OnIoKCk9PltTKHgoQikpXSksXzoxfSksUyh4KEkpLG51bGwse2RlZmF1bHQ6cigoKT0+W1MoeCh6KSx7dmFsdWU6YGdyb3VwYH0se2RlZmF1bHQ6cigoKT0+Wy4uLnRbNl18fD1bRShgR3JvdXBgLC0xKV1dKSxfOjF9KSxTKHgoeikse3ZhbHVlOmB1c2VyYH0se2RlZmF1bHQ6cigoKT0+Wy4uLnRbN118fD1bRShgVXNlciAocGVyc29uYWwgZ3JhbnQsIGV4aXN0aW5nIHVzZXJzLmpzb24gZW50cnkpYCwtMSldXSksXzoxfSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSksaChgZGl2YCxHZSxbaChgbGFiZWxgLEtlLGMobi52YWx1ZT09PWBncm91cGA/YEdyb3VwIG5hbWVgOmBVc2VyIG5hbWVgKSwxKSxTKHgoVikseyJtb2RlbC12YWx1ZSI6aS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFsxXXx8PWU9PmkudmFsdWU9U3RyaW5nKGUpfSx7ZGVmYXVsdDpyKCgpPT5bUyh4KEgpLHsiYXJpYS1sYWJlbGxlZGJ5IjpgZ3JhbnQtdGFyZ2V0LW5hbWUtbGFiZWxgfSx7ZGVmYXVsdDpyKCgpPT5bUyh4KEIpLHtwbGFjZWhvbGRlcjpgU2VsZWN04oCmYH0pXSksXzoxfSksUyh4KEkpLG51bGwse2RlZmF1bHQ6cigoKT0+WyhrKCEwKSxfKGEsbnVsbCx2KHkudmFsdWUsZT0+KGsoKSxqKHgoeikse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0OnIoKCk9PltFKGMoZSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pXSksaChgZGl2YCxxZSxbaChgZGl2YCxKZSxbdFs5XXx8PWgoYGxhYmVsYCx7Zm9yOmBncmFudC1wcm92aWRlcnNgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBQcm92aWRlcnMgKGNvbW1hLXNlcGFyYXRlZCwgZW1wdHkgPSBhbGwpYCwtMSksUyh4KFUpLHtpZDpgZ3JhbnQtcHJvdmlkZXJzYCxtb2RlbFZhbHVlOm8udmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbMl18fD1lPT5vLnZhbHVlPWUscGxhY2Vob2xkZXI6YGFudGhyb3BpYywgb3BlbmFpYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLGgoYGRpdmAsWWUsW3RbMTBdfHw9aChgbGFiZWxgLHtmb3I6YGdyYW50LW1vZGVsc2AsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYE1vZGVscyAoY29tbWEtc2VwYXJhdGVkLCBlbXB0eSA9IGFsbClgLC0xKSxTKHgoVSkse2lkOmBncmFudC1tb2RlbHNgLG1vZGVsVmFsdWU6cy52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFszXXx8PWU9PnMudmFsdWU9ZSxwbGFjZWhvbGRlcjpgYW50aHJvcGljL2NsYXVkZS1zb25uZXQtNWB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxuLnZhbHVlPT09YGdyb3VwYD8oaygpLF8oYSx7a2V5OjB9LFtoKGBkaXZgLFhlLFt0WzExXXx8PWgoYGxhYmVsYCx7Zm9yOmBncmFudC1tY3BgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNQ1Agc2VydmVycyAoY29tbWEtc2VwYXJhdGVkLCBlbXB0eSA9IGFsbClgLC0xKSxTKHgoVSkse2lkOmBncmFudC1tY3BgLG1vZGVsVmFsdWU6bC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFs0XXx8PWU9PmwudmFsdWU9ZSxwbGFjZWhvbGRlcjpgZmV0Y2gsIHdlYXRoZXJgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSksaChgZGl2YCxaZSxbdFsxMl18fD1oKGBsYWJlbGAse2ZvcjpgZ3JhbnQtYWdlbnRzYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQWdlbnRzIChjb21tYS1zZXBhcmF0ZWQsIGVtcHR5ID0gYWxsKWAsLTEpLFMoeChVKSx7aWQ6YGdyYW50LWFnZW50c2AsbW9kZWxWYWx1ZTp1LnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzVdfHw9ZT0+dS52YWx1ZT1lLHBsYWNlaG9sZGVyOmBhZ2VudGtpdGB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKV0sNjQpKTpNKGBgLCEwKV0pLEMudmFsdWU/KGsoKSxqKHgoTCkse2tleTowLHZhcmlhbnQ6YGRlc3RydWN0aXZlYH0se2RlZmF1bHQ6cigoKT0+W1MoeChSKSxudWxsLHtkZWZhdWx0OnIoKCk9PltFKGMoQy52YWx1ZSksMSldKSxfOjF9KV0pLF86MX0pKTpNKGBgLCEwKSxELnZhbHVlPyhrKCksaihXLHtrZXk6MSxsYWJlbDpuLnZhbHVlPT09YGdyb3VwYD9gUGFzdGUgaW50byBtaWRkbGV3YXJlLnlhbWxgOmBNZXJnZSBpbnRvICR7aS52YWx1ZX3igJlzIHVzZXJzLmpzb24gbGluZWAsdGV4dDpELnZhbHVlfSxudWxsLDgsW2BsYWJlbGAsYHRleHRgXSkpOihrKCksXyhgcGAsUWUsYFBpY2sgYSB0YXJnZXQgYW5kIGF0IGxlYXN0IG9uZSBsaXN0IHRvIGJ1aWxkIGEgc25pcHBldC5gKSldKSl9fSksZXQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sdHQ9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0yYH0sbnQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0scnQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0saXQ9e2lkOmBsaW1pdHMtdGFyZ2V0LW5hbWUtbGFiZWxgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGF0PXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMyBzbTpncmlkLWNvbHMtM2B9LG90PVtgZm9yYF0sc3Q9e2tleTowfSxjdD17a2V5OjF9LGx0PXtrZXk6MixjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx1dD1wKHtfX25hbWU6YExpbWl0c0Zvcm1gLHByb3BzOntncm91cE5hbWVzOnt9LHVzZXJOYW1lczp7fX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPUEoYGdyb3VwYCksaT1BKGBgKSxvPW5ldyBTZXQoW2ByZXF1ZXN0c1Blck1pbnV0ZWAsYHJlcXVlc3RzUGVyRGF5YCxgdG9rZW5zUGVyRGF5YCxgdG9rZW5zUGVyTW9udGhgXSk7ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBvLmhhcyhlKT9rZSh0KTpYKHQpfWxldCBsPVt7a2V5OmByZXF1ZXN0c1Blck1pbnV0ZWAsbGFiZWw6YFJlcXVlc3RzL21pbnV0ZWB9LHtrZXk6YHJlcXVlc3RzUGVyRGF5YCxsYWJlbDpgUmVxdWVzdHMvZGF5YH0se2tleTpgdG9rZW5zUGVyRGF5YCxsYWJlbDpgVG9rZW5zL2RheSAoaW4rb3V0KWB9LHtrZXk6YHRva2Vuc1Blck1vbnRoYCxsYWJlbDpgVG9rZW5zL21vbnRoIChpbitvdXQpYH0se2tleTpgY29zdFBlckRheVVTRGAsbGFiZWw6YENvc3QvZGF5IChVU0QpYH0se2tleTpgY29zdFBlck1vbnRoVVNEYCxsYWJlbDpgQ29zdC9tb250aCAoVVNEKWB9XSx1PUMoe3JlcXVlc3RzUGVyTWludXRlOmBgLHJlcXVlc3RzUGVyRGF5OmBgLHRva2Vuc1BlckRheTpgYCx0b2tlbnNQZXJNb250aDpgYCxjb3N0UGVyRGF5VVNEOmBgLGNvc3RQZXJNb250aFVTRDpgYH0pLGQ9dygoKT0+bi52YWx1ZT09PWBncm91cGA/dC5ncm91cE5hbWVzOnQudXNlck5hbWVzKSxmPXcoKCk9PmwuZmlsdGVyKCh7a2V5OmV9KT0+dVtlXS50cmltKCkhPT1gYCYmIXMoZSxOdW1iZXIodVtlXSkpKS5tYXAoZT0+ZS5sYWJlbCkpLHA9dygoKT0+bC5maWx0ZXIoKHtrZXk6ZX0pPT5vLmhhcyhlKSYmdVtlXS50cmltKCkhPT1gYCYmIXMoZSxOdW1iZXIodVtlXSkpKS5tYXAoZT0+ZS5sYWJlbCkpLG09dygoKT0+bC5maWx0ZXIoKHtrZXk6ZX0pPT4hby5oYXMoZSkmJnVbZV0udHJpbSgpIT09YGAmJiFzKGUsTnVtYmVyKHVbZV0pKSkubWFwKGU9PmUubGFiZWwpKSxnPXcoKCk9PntsZXQgZT17fTtmb3IobGV0e2tleTp0fW9mIGwpe2xldCBuPU51bWJlcih1W3RdKTt1W3RdLnRyaW0oKSE9PWBgJiZzKHQsbikmJm4+MCYmKGVbdF09bil9cmV0dXJuIGV9KSx5PXcoKCk9Pm4udmFsdWU9PT1gZ3JvdXBgP09lKGkudmFsdWUudHJpbSgpKTpZKGkudmFsdWUpKSxiPXcoKCk9PiF5LnZhbHVlfHxmLnZhbHVlLmxlbmd0aD4wfHxPYmplY3Qua2V5cyhnLnZhbHVlKS5sZW5ndGg9PT0wP251bGw6bi52YWx1ZT09PWBncm91cGA/TWUoaS52YWx1ZS50cmltKCksZy52YWx1ZSk6UGUoZy52YWx1ZSkpO3JldHVybihlLHQpPT4oaygpLF8oYGRpdmAsZXQsW2goYGRpdmAsdHQsW2goYGRpdmAsbnQsW3RbNF18fD1oKGBsYWJlbGAse2lkOmBsaW1pdHMtdGFyZ2V0LWtpbmQtbGFiZWxgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBUYXJnZXRgLC0xKSxTKHgoVikseyJtb2RlbC12YWx1ZSI6bi52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFswXXx8PWU9Pm4udmFsdWU9ZX0se2RlZmF1bHQ6cigoKT0+W1MoeChIKSx7ImFyaWEtbGFiZWxsZWRieSI6YGxpbWl0cy10YXJnZXQta2luZC1sYWJlbGB9LHtkZWZhdWx0OnIoKCk9PltTKHgoQikpXSksXzoxfSksUyh4KEkpLG51bGwse2RlZmF1bHQ6cigoKT0+W1MoeCh6KSx7dmFsdWU6YGdyb3VwYH0se2RlZmF1bHQ6cigoKT0+Wy4uLnRbMl18fD1bRShgR3JvdXBgLC0xKV1dKSxfOjF9KSxTKHgoeikse3ZhbHVlOmB1c2VyYH0se2RlZmF1bHQ6cigoKT0+Wy4uLnRbM118fD1bRShgVXNlciAoZXhpc3RpbmcgdXNlcnMuanNvbiBlbnRyeSlgLC0xKV1dKSxfOjF9KV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKSxoKGBkaXZgLHJ0LFtoKGBsYWJlbGAsaXQsYyhuLnZhbHVlPT09YGdyb3VwYD9gR3JvdXAgbmFtZWA6YFVzZXIgbmFtZWApLDEpLFMoeChWKSx7Im1vZGVsLXZhbHVlIjppLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzFdfHw9ZT0+aS52YWx1ZT1TdHJpbmcoZSl9LHtkZWZhdWx0OnIoKCk9PltTKHgoSCkseyJhcmlhLWxhYmVsbGVkYnkiOmBsaW1pdHMtdGFyZ2V0LW5hbWUtbGFiZWxgfSx7ZGVmYXVsdDpyKCgpPT5bUyh4KEIpLHtwbGFjZWhvbGRlcjpgU2VsZWN04oCmYH0pXSksXzoxfSksUyh4KEkpLG51bGwse2RlZmF1bHQ6cigoKT0+WyhrKCEwKSxfKGEsbnVsbCx2KGQudmFsdWUsZT0+KGsoKSxqKHgoeikse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0OnIoKCk9PltFKGMoZSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pXSksaChgZGl2YCxhdCxbKGsoKSxfKGEsbnVsbCx2KGwsZT0+aChgZGl2YCx7a2V5OmUua2V5LGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sW2goYGxhYmVsYCx7Zm9yOmBsaW1pdHMtJHtlLmtleX1gLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGMoZS5sYWJlbCksOSxvdCksUyh4KFUpLHtpZDpgbGltaXRzLSR7ZS5rZXl9YCxtb2RlbFZhbHVlOnVbZS5rZXldLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0PT51W2Uua2V5XT10LHR5cGU6YG51bWJlcmAsbWluOmAwYCxzdGVwOngobykuaGFzKGUua2V5KT9gMWA6YGFueWAscGxhY2Vob2xkZXI6YHVuc2V0YH0sbnVsbCw4LFtgaWRgLGBtb2RlbFZhbHVlYCxgb25VcGRhdGU6bW9kZWxWYWx1ZWAsYHN0ZXBgXSldKSksNjQpKV0pLGYudmFsdWUubGVuZ3RoPyhrKCksaih4KEwpLHtrZXk6MCx2YXJpYW50OmBkZXN0cnVjdGl2ZWB9LHtkZWZhdWx0OnIoKCk9PltTKHgoUiksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bcC52YWx1ZS5sZW5ndGg/KGsoKSxfKGBwYCxzdCxgRW50ZXIgYSBub24tbmVnYXRpdmUgd2hvbGUgbnVtYmVyIGZvcjogYCtjKHAudmFsdWUuam9pbihgLCBgKSkrYC5gLDEpKTpNKGBgLCEwKSxtLnZhbHVlLmxlbmd0aD8oaygpLF8oYHBgLGN0LGBFbnRlciBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgZm9yOiBgK2MobS52YWx1ZS5qb2luKGAsIGApKStgLmAsMSkpOk0oYGAsITApXSksXzoxfSldKSxfOjF9KSk6TShgYCwhMCksYi52YWx1ZT8oaygpLGooVyx7a2V5OjEsbGFiZWw6bi52YWx1ZT09PWBncm91cGA/YFBhc3RlIGludG8gbWlkZGxld2FyZS55YW1sYDpgTWVyZ2UgaW50byAke2kudmFsdWV94oCZcyB1c2Vycy5qc29uIGxpbmVgLHRleHQ6Yi52YWx1ZX0sbnVsbCw4LFtgbGFiZWxgLGB0ZXh0YF0pKTooaygpLF8oYHBgLGx0LGBQaWNrIGEgdGFyZ2V0IGFuZCBhdCBsZWFzdCBvbmUgbGltaXQgdG8gYnVpbGQgYSBzbmlwcGV0LmApKV0pKX19KSxkdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxmdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxwdD17Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgc206Z3JpZC1jb2xzLTIgc206aXRlbXMtZW5kYH0sbXQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0saHQ9e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBwYi0xLjUgdGV4dC1zbWB9LGd0PXtrZXk6MixjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxfdD1wKHtfX25hbWU6YE1vZGVsTWV0YUZvcm1gLHNldHVwKGUpe2xldCB0PUEoYGApLG49QShgYCksYT1BKCExKSxzPXcoKCk9PnQudmFsdWUudHJpbSgpIT09YGApLGM9dygoKT0+TnVtYmVyKG4udmFsdWUpKSxsPXcoKCk9Pm4udmFsdWUudHJpbSgpIT09YGApLHU9dygoKT0+IWwudmFsdWV8fGtlKGMudmFsdWUpJiZjLnZhbHVlPjApLGQ9dygoKT0+IXMudmFsdWV8fCF1LnZhbHVlfHwhbC52YWx1ZSYmIWEudmFsdWU/bnVsbDpMZSh0LnZhbHVlLnRyaW0oKSx7Y29udGV4dFRva2VuczpsLnZhbHVlP2MudmFsdWU6dm9pZCAwLGZyZWU6YS52YWx1ZXx8dm9pZCAwfSkpO3JldHVybihlLHMpPT4oaygpLF8oYGRpdmAsZHQsW2goYGRpdmAsZnQsW3NbM118fD1oKGBsYWJlbGAse2ZvcjpgbW9kZWxtZXRhLW1vZGVsLWlkYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTW9kZWwgaWQgKHByb3ZpZGVyL21vZGVsKWAsLTEpLFMoeChVKSx7aWQ6YG1vZGVsbWV0YS1tb2RlbC1pZGAsbW9kZWxWYWx1ZTp0LnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpzWzBdfHw9ZT0+dC52YWx1ZT1lLHBsYWNlaG9sZGVyOmBneDEwL2N1cnJlbnRgLGNsYXNzOmBmb250LW1vbm9gfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSksaChgZGl2YCxwdCxbaChgZGl2YCxtdCxbc1s0XXx8PWgoYGxhYmVsYCx7Zm9yOmBtb2RlbG1ldGEtY29udGV4dGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYENvbnRleHQgd2luZG93ICh0b2tlbnMpYCwtMSksUyh4KFUpLHtpZDpgbW9kZWxtZXRhLWNvbnRleHRgLG1vZGVsVmFsdWU6bi52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6c1sxXXx8PWU9Pm4udmFsdWU9ZSx0eXBlOmBudW1iZXJgLG1pbjpgMWAsc3RlcDpgMWAscGxhY2Vob2xkZXI6YDEzMTA3MmB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxoKGBsYWJlbGAsaHQsW28oaChgaW5wdXRgLHtpZDpgbW9kZWxtZXRhLWZyZWVgLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpzWzJdfHw9ZT0+YS52YWx1ZT1lLHR5cGU6YGNoZWNrYm94YCxjbGFzczpgc2l6ZS00IHJvdW5kZWQgYm9yZGVyLWlucHV0YH0sbnVsbCw1MTIpLFtbaSxhLnZhbHVlXV0pLHNbNV18fD1FKGAgRnJlZSAoYmlsbGVkIGFzICQwIHJlZ2FyZGxlc3Mgb2YgYW55IHJlc29sdmVkIHByaWNlKSBgLC0xKV0pXSksbC52YWx1ZSYmIXUudmFsdWU/KGsoKSxqKHgoTCkse2tleTowLHZhcmlhbnQ6YGRlc3RydWN0aXZlYH0se2RlZmF1bHQ6cigoKT0+W1MoeChSKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5zWzZdfHw9W0UoYENvbnRleHQgd2luZG93IG11c3QgYmUgYSBwb3NpdGl2ZSB3aG9sZSBudW1iZXIgb2YgdG9rZW5zLmAsLTEpXV0pLF86MX0pXSksXzoxfSkpOk0oYGAsITApLGQudmFsdWU/KGsoKSxqKFcse2tleToxLGxhYmVsOmBQYXN0ZSBpbnRvIG1pZGRsZXdhcmUueWFtbGAsdGV4dDpkLnZhbHVlfSxudWxsLDgsW2B0ZXh0YF0pKTooaygpLF8oYHBgLGd0LGBFbnRlciBhIG1vZGVsIGlkIGFuZCBzZXQgYSBjb250ZXh0IHdpbmRvdyBhbmQvb3IgZnJlZSB0byBidWlsZCBhIHNuaXBwZXQuYCkpXSkpfX0pLHZ0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHl0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LGJ0PXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMyBzbTpncmlkLWNvbHMtMmB9LHh0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LFN0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LEN0PXtrZXk6MixjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx3dD1wKHtfX25hbWU6YFByaWNpbmdGb3JtYCxzZXR1cChlKXtsZXQgdD1BKGBgKSxuPUEoYGApLGk9QShgYCksbz13KCgpPT50LnZhbHVlLnRyaW0oKSE9PWBgKSxzPXcoKCk9Pk51bWJlcihuLnZhbHVlKSksbD13KCgpPT5OdW1iZXIoaS52YWx1ZSkpLHU9dygoKT0+bi52YWx1ZS50cmltKCkhPT1gYCYmWChzLnZhbHVlKSksZD13KCgpPT5pLnZhbHVlLnRyaW0oKSE9PWBgJiZYKGwudmFsdWUpKSxmPXcoKCk9PntsZXQgZT1bXTtyZXR1cm4gbi52YWx1ZS50cmltKCkhPT1gYCYmIXUudmFsdWUmJmUucHVzaChgSW5wdXQgcHJpY2UvTVRvayBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5gKSxpLnZhbHVlLnRyaW0oKSE9PWBgJiYhZC52YWx1ZSYmZS5wdXNoKGBPdXRwdXQgcHJpY2UvTVRvayBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5gKSwodS52YWx1ZSYmIWQudmFsdWV8fCF1LnZhbHVlJiZkLnZhbHVlKSYmZS5wdXNoKGBTZXQgYm90aCBpbnB1dCBhbmQgb3V0cHV0IHByaWNlL01Ub2sg4oCUIGEgb25lLXNpZGVkIG92ZXJyaWRlIGhhcyBubyBiaWxsaW5nIG1lYW5pbmcuYCksZX0pLHA9dygoKT0+IW8udmFsdWV8fCF1LnZhbHVlfHwhZC52YWx1ZT9udWxsOlJlKHQudmFsdWUudHJpbSgpLHtpbnB1dFBlck06cy52YWx1ZSxvdXRwdXRQZXJNOmwudmFsdWV9KSk7cmV0dXJuKGUsbyk9PihrKCksXyhgZGl2YCx2dCxbaChgZGl2YCx5dCxbb1szXXx8PWgoYGxhYmVsYCx7Zm9yOmBwcmljaW5nLW1vZGVsLWlkYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTW9kZWwgaWQgKHByb3ZpZGVyL21vZGVsKWAsLTEpLFMoeChVKSx7aWQ6YHByaWNpbmctbW9kZWwtaWRgLG1vZGVsVmFsdWU6dC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b1swXXx8PWU9PnQudmFsdWU9ZSxwbGFjZWhvbGRlcjpgb3BlbmFpL2dwdC00YCxjbGFzczpgZm9udC1tb25vYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLGgoYGRpdmAsYnQsW2goYGRpdmAseHQsW29bNF18fD1oKGBsYWJlbGAse2ZvcjpgcHJpY2luZy1pbnB1dGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYElucHV0IHByaWNlIC8gTVRvayAoVVNEKWAsLTEpLFMoeChVKSx7aWQ6YHByaWNpbmctaW5wdXRgLG1vZGVsVmFsdWU6bi52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b1sxXXx8PWU9Pm4udmFsdWU9ZSx0eXBlOmBudW1iZXJgLG1pbjpgMGAsc3RlcDpgYW55YCxwbGFjZWhvbGRlcjpgMC41MGB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxoKGBkaXZgLFN0LFtvWzVdfHw9aChgbGFiZWxgLHtmb3I6YHByaWNpbmctb3V0cHV0YCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgT3V0cHV0IHByaWNlIC8gTVRvayAoVVNEKWAsLTEpLFMoeChVKSx7aWQ6YHByaWNpbmctb3V0cHV0YCxtb2RlbFZhbHVlOmkudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm9bMl18fD1lPT5pLnZhbHVlPWUsdHlwZTpgbnVtYmVyYCxtaW46YDBgLHN0ZXA6YGFueWAscGxhY2Vob2xkZXI6YDEuNTBgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSldKSxmLnZhbHVlLmxlbmd0aD8oaygpLGooeChMKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpyKCgpPT5bUyh4KFIpLG51bGwse2RlZmF1bHQ6cigoKT0+WyhrKCEwKSxfKGEsbnVsbCx2KGYudmFsdWUsKGUsdCk9PihrKCksXyhgcGAse2tleTp0fSxjKGUpLDEpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pKTpNKGBgLCEwKSxwLnZhbHVlPyhrKCksaihXLHtrZXk6MSxsYWJlbDpgUGFzdGUgaW50byBtaWRkbGV3YXJlLnlhbWxgLHRleHQ6cC52YWx1ZX0sbnVsbCw4LFtgdGV4dGBdKSk6KGsoKSxfKGBwYCxDdCxgRW50ZXIgYSBtb2RlbCBpZCBhbmQgYm90aCBwcmljZXMgdG8gYnVpbGQgYSBzbmlwcGV0LmApKV0pKX19KSxUdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxFdD17Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgc206Z3JpZC1jb2xzLTJgfSxEdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxPdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxrdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxBdD17Y2xhc3M6YGZsZXggZ2FwLTJgfSxqdD17a2V5OjAsY2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sTXQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sTnQ9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0yYH0sUHQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sRnQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sSXQ9e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtYH0sTHQ9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFJ0PXAoe19fbmFtZTpgVXNlckZvcm1gLHByb3BzOntncm91cE5hbWVzOnt9fSxzZXR1cChlKXtsZXQgbj1lLHM9QShgYCksbD1BKHplKSx1PUEoYGApLGQ9QShgYCkscD1BKGBgKSxtPUEoYGApLGc9QSghMSkseT1mKCk7ZnVuY3Rpb24gYigpe3RyeXtsLnZhbHVlPUJlKCkseS5wdXNoKHtraW5kOmBzdWNjZXNzYCxtZXNzYWdlOmBHZW5lcmF0ZWQgYSBuZXcgQVBJIGtleS5gfSl9Y2F0Y2goZSl7eS5wdXNoKHtraW5kOmBlcnJvcmAsbWVzc2FnZTplIGluc3RhbmNlb2YgRXJyb3I/YENvdWxkIG5vdCBnZW5lcmF0ZSBhbiBBUEkga2V5OiAke2UubWVzc2FnZX1gOmBDb3VsZCBub3QgZ2VuZXJhdGUgYW4gQVBJIGtleS5gfSl9fWZ1bmN0aW9uIEMoZSl7bGV0IHQ9bmV3IFNldDtmb3IobGV0IG4gb2YgZS5zcGxpdChgLGApKXtsZXQgZT1uLnRyaW0oKTtlJiZ0LmFkZChlKX1yZXR1cm4gQXJyYXkuZnJvbSh0KX1sZXQgVD13KCgpPT5DKGQudmFsdWUpKSxEPXcoKCk9PkMocC52YWx1ZSkpLE89dygoKT0+QyhtLnZhbHVlKSksTj13KCgpPT5ZKHMudmFsdWUpKSxlZT13KCgpPT51LnZhbHVlIT09YGApLFA9dygoKT0+bC52YWx1ZS50cmltKCkhPT1gYCYmbC52YWx1ZSE9PWBzay1sbG1ndy1SRVBMQUNFX01FYCksRj13KCgpPT5BZShELnZhbHVlLE8udmFsdWUpKSx0ZT13KCgpPT57aWYoIU4udmFsdWV8fCFlZS52YWx1ZXx8IVAudmFsdWV8fEYudmFsdWUpcmV0dXJuIG51bGw7bGV0IGU9VC52YWx1ZS5sZW5ndGg+MD9bdS52YWx1ZSwuLi5ULnZhbHVlXTpudWxsO3JldHVybiBWZSh7bmFtZTpzLnZhbHVlLnRyaW0oKSxhcGlLZXk6bC52YWx1ZS50cmltKCksZ3JvdXA6ZT92b2lkIDA6dS52YWx1ZSxncm91cHM6ZT8/dm9pZCAwLHByb3ZpZGVyczpELnZhbHVlLG1vZGVsczpPLnZhbHVlLGFkbWluOmcudmFsdWV9KX0pO3JldHVybihlLGYpPT4oaygpLF8oYGRpdmAsVHQsW2goYGRpdmAsRXQsW2goYGRpdmAsRHQsW2ZbN118fD1oKGBsYWJlbGAse2ZvcjpgdXNlci1uYW1lYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTmFtZWAsLTEpLFMoeChVKSx7aWQ6YHVzZXItbmFtZWAsbW9kZWxWYWx1ZTpzLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpmWzBdfHw9ZT0+cy52YWx1ZT1lLHBsYWNlaG9sZGVyOmBhbGljZWB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxoKGBkaXZgLE90LFtmWzhdfHw9aChgbGFiZWxgLHtpZDpgdXNlci1ncm91cC1sYWJlbGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFByaW1hcnkgZ3JvdXBgLC0xKSxTKHgoVikseyJtb2RlbC12YWx1ZSI6dS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZlsxXXx8PWU9PnUudmFsdWU9U3RyaW5nKGUpfSx7ZGVmYXVsdDpyKCgpPT5bUyh4KEgpLHsiYXJpYS1sYWJlbGxlZGJ5IjpgdXNlci1ncm91cC1sYWJlbGB9LHtkZWZhdWx0OnIoKCk9PltTKHgoQikse3BsYWNlaG9sZGVyOmBTZWxlY3TigKZgfSldKSxfOjF9KSxTKHgoSSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bKGsoITApLF8oYSxudWxsLHYobi5ncm91cE5hbWVzLGU9PihrKCksaih4KHopLHtrZXk6ZSx2YWx1ZTplfSx7ZGVmYXVsdDpyKCgpPT5bRShjKGUpLDEpXSksXzoyfSwxMDMyLFtgdmFsdWVgXSkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKV0pLGgoYGRpdmAsa3QsW2ZbMTBdfHw9aChgbGFiZWxgLHtmb3I6YHVzZXItYXBpLWtleWAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYEFQSSBrZXlgLC0xKSxoKGBkaXZgLEF0LFtTKHgoVSkse2lkOmB1c2VyLWFwaS1rZXlgLG1vZGVsVmFsdWU6bC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6ZlsyXXx8PWU9PmwudmFsdWU9ZSxjbGFzczpgZm9udC1tb25vYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKSxTKHgodCkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLG9uQ2xpY2s6Yn0se2RlZmF1bHQ6cigoKT0+Wy4uLmZbOV18fD1bRShgR2VuZXJhdGVgLC0xKV1dKSxfOjF9KV0pLGwudmFsdWU9PT14KGBzay1sbG1ndy1SRVBMQUNFX01FYCk/KGsoKSxfKGBwYCxqdCxgU3RpbGwgdGhlIHBsYWNlaG9sZGVyIOKAlCBjbGljayBHZW5lcmF0ZSBmb3IgYSByZWFsIGtleS5gKSk6TShgYCwhMCldKSxoKGBkaXZgLE10LFtmWzExXXx8PWgoYGxhYmVsYCx7Zm9yOmB1c2VyLWV4dHJhLWdyb3Vwc2AsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYEFkZGl0aW9uYWwgZ3JvdXBzIChjb21tYS1zZXBhcmF0ZWQsIG9wdGlvbmFsKWAsLTEpLFMoeChVKSx7aWQ6YHVzZXItZXh0cmEtZ3JvdXBzYCxtb2RlbFZhbHVlOmQudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmZbM118fD1lPT5kLnZhbHVlPWUscGxhY2Vob2xkZXI6YGZyaWVuZHNgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSksaChgZGl2YCxOdCxbaChgZGl2YCxQdCxbZlsxMl18fD1oKGBsYWJlbGAse2ZvcjpgdXNlci1wcm92aWRlcnNgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBQZXJzb25hbCBncmFudDogcHJvdmlkZXJzIChvcHRpb25hbClgLC0xKSxTKHgoVSkse2lkOmB1c2VyLXByb3ZpZGVyc2AsbW9kZWxWYWx1ZTpwLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpmWzRdfHw9ZT0+cC52YWx1ZT1lLHBsYWNlaG9sZGVyOmBneDEwYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLGgoYGRpdmAsRnQsW2ZbMTNdfHw9aChgbGFiZWxgLHtmb3I6YHVzZXItbW9kZWxzYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUGVyc29uYWwgZ3JhbnQ6IG1vZGVscyAob3B0aW9uYWwpYCwtMSksUyh4KFUpLHtpZDpgdXNlci1tb2RlbHNgLG1vZGVsVmFsdWU6bS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6Zls1XXx8PWU9Pm0udmFsdWU9ZSxwbGFjZWhvbGRlcjpgZ3gxMC9jdXJyZW50YH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pXSksaChgbGFiZWxgLEl0LFtvKGgoYGlucHV0YCx7Im9uVXBkYXRlOm1vZGVsVmFsdWUiOmZbNl18fD1lPT5nLnZhbHVlPWUsdHlwZTpgY2hlY2tib3hgLGNsYXNzOmBzaXplLTQgcm91bmRlZCBib3JkZXItaW5wdXRgfSxudWxsLDUxMiksW1tpLGcudmFsdWVdXSksZlsxNF18fD1FKGAgQWRtaW4gKGZ1bGwgYWNjZXNzIHRvIC9hZG1pbi9hcGkvKikgYCwtMSldKSxGLnZhbHVlPyhrKCksaih4KEwpLHtrZXk6MCx2YXJpYW50OmBkZXN0cnVjdGl2ZWB9LHtkZWZhdWx0OnIoKCk9PltTKHgoUiksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bRShjKEYudmFsdWUpLDEpXSksXzoxfSldKSxfOjF9KSk6TShgYCwhMCksdGUudmFsdWU/KGsoKSxqKFcse2tleToxLGxhYmVsOmBBZGQgYXMgYSBuZXcgbGluZSBpbiB1c2Vycy5qc29uYCx0ZXh0OnRlLnZhbHVlfSxudWxsLDgsW2B0ZXh0YF0pKTooaygpLF8oYHBgLEx0LGBGaWxsIGluIGEgbmFtZSwgZ3JvdXAsIGFuZCBhIHJlYWwgKGdlbmVyYXRlZCkgQVBJIGtleSB0byBidWlsZCBhIHNuaXBwZXQuYCkpXSkpfX0pLHp0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LEJ0PXAoe19fbmFtZTpgQ2hhbmdlSGVscGVyYCxwcm9wczp7Z3JvdXBOYW1lczp7fSx1c2VyTmFtZXM6e319LHNldHVwKGUpe2xldCB0PVtgbGltaXRzYCxgZ3JhbnRgLGBwcmljaW5nYCxgbW9kZWxgLGB1c2VyYF0sbj17bGltaXRzOmBMaW1pdHNgLGdyYW50OmBBY2Nlc3MgZ3JhbnRgLHByaWNpbmc6YFByaWNpbmdgLG1vZGVsOmBNb2RlbCBtZXRhZGF0YWAsdXNlcjpgTmV3IHVzZXJgfSxpPWUsbz1PKCkscz13KCgpPT57bGV0IGU9by5wYXJhbXMuaGVscGVyO3JldHVybiB0LmluY2x1ZGVzKGU/P2BgKT9lOmBsaW1pdHNgfSk7ZnVuY3Rpb24gbChlKXt0eXBlb2YgZSE9YHN0cmluZ2B8fCF0LmluY2x1ZGVzKGUpfHxvLmdvVG8oYGNvbmZpZ2Asey4uLm8ucGFyYW1zLGhlbHBlcjplfSl9cmV0dXJuKGUsbyk9PihrKCksXyhgZGl2YCx6dCxbUyh4KGllKSx7Im1vZGVsLXZhbHVlIjpzLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpsfSx7ZGVmYXVsdDpyKCgpPT5bUyh4KHJlKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsoaygpLF8oYSxudWxsLHYodCxlPT5TKHgoYWUpLHtrZXk6ZSx2YWx1ZTplfSx7ZGVmYXVsdDpyKCgpPT5bRShjKG5bZV0pLDEpXSksXzoyfSwxMDMyLFtgdmFsdWVgXSkpLDY0KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pLHMudmFsdWU9PT1gbGltaXRzYD8oaygpLGoodXQse2tleTowLCJncm91cC1uYW1lcyI6aS5ncm91cE5hbWVzLCJ1c2VyLW5hbWVzIjppLnVzZXJOYW1lc30sbnVsbCw4LFtgZ3JvdXAtbmFtZXNgLGB1c2VyLW5hbWVzYF0pKTpzLnZhbHVlPT09YGdyYW50YD8oaygpLGooJGUse2tleToxLCJncm91cC1uYW1lcyI6aS5ncm91cE5hbWVzLCJ1c2VyLW5hbWVzIjppLnVzZXJOYW1lc30sbnVsbCw4LFtgZ3JvdXAtbmFtZXNgLGB1c2VyLW5hbWVzYF0pKTpzLnZhbHVlPT09YHByaWNpbmdgPyhrKCksaih3dCx7a2V5OjJ9KSk6cy52YWx1ZT09PWBtb2RlbGA/KGsoKSxqKF90LHtrZXk6M30pKTooaygpLGooUnQse2tleTo0LCJncm91cC1uYW1lcyI6aS5ncm91cE5hbWVzfSxudWxsLDgsW2Bncm91cC1uYW1lc2BdKSldKSl9fSksVnQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sSHQ9cCh7X19uYW1lOmBDb25maWdUcmVlYCxwcm9wczp7Y29uZmlnOnt9LHdhcm5pbmdzOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49dygoKT0+VGUoSih0LmNvbmZpZykpKTtyZXR1cm4odCxpKT0+KGsoKSxfKGBkaXZgLFZ0LFsoayghMCksXyhhLG51bGwsdihlLndhcm5pbmdzLChlLHQpPT4oaygpLGooeChMKSx7a2V5OnQsdmFyaWFudDpgd2FybmB9LHtkZWZhdWx0OnIoKCk9PltTKHgoc2UpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmlbMF18fD1bRShgQ29uZmlnIHdhcm5pbmdgLC0xKV1dKSxfOjF9KSxTKHgoUiksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bRShjKGUpLDEpXSksXzoyfSwxMDI0KV0pLF86Mn0sMTAyNCkpKSwxMjgpKSxTKFcse2xhYmVsOmBSZWRhY3RlZCBydW5uaW5nIGNvbmZpZyAocmVhZC1vbmx5KWAsdGV4dDpuLnZhbHVlfSxudWxsLDgsW2B0ZXh0YF0pXSkpfX0pLFV0PW0oYGNvbmZpZ2Ase3N0YXRlOigpPT4oe2RhdGE6bnVsbCxsb2FkaW5nOiExLGVycm9yOmBgfSksYWN0aW9uczp7YXN5bmMgZmV0Y2hDb25maWcoKXtpZihGKCkuaXNBdXRoZW50aWNhdGVkKXt0aGlzLmxvYWRpbmc9ITA7dHJ5e3RoaXMuZGF0YT1hd2FpdCBnKGAvYWRtaW4vYXBpL2NvbmZpZ2ApLHRoaXMuZXJyb3I9YGB9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHRlJiYoZS5zdGF0dXM9PT00MDF8fGUuc3RhdHVzPT09NDAzKSlyZXR1cm47dGhpcy5lcnJvcj1lIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1maW5hbGx5e3RoaXMubG9hZGluZz0hMX19fSxhc3luYyBlbnN1cmVDb25maWcoKXt0aGlzLmxvYWRpbmd8fHRoaXMuZGF0YXx8YXdhaXQgdGhpcy5mZXRjaENvbmZpZygpfX19KSxXdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxHdD1wKHtfX25hbWU6YENvbmZpZ1BhZ2VgLHNldHVwKHQpe2xldCBuPVV0KCksaT1iKCksYT11ZSgpO2QoKCk9PntuLmVuc3VyZUNvbmZpZygpLGEuZW5zdXJlQ29uc3VtZXJzKCl9KTtsZXQgbz13KCgpPT4oaS5vdmVydmlldz8uZ3JvdXBzPz9bXSkubWFwKGU9PmUubmFtZSkpLGM9dygoKT0+KGEuZGF0YT8udXNlcnM/P1tdKS5tYXAoZT0+ZS5uYW1lKSk7cmV0dXJuKHQsaSk9PihrKCksXyhgZGl2YCxXdCxbeChuKS5lcnJvciYmIXgobikuZGF0YT8oaygpLGooeChsKSx7a2V5OjB9LHtkZWZhdWx0OnIoKCk9PltTKHgoZSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bUyh4KHMpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmlbMF18fD1bRShgQ29uZmlnYCwtMSldXSksXzoxfSldKSxfOjF9KSxTKHgoUCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bUyhsZSx7bWVzc2FnZTp4KG4pLmVycm9yLCJvbi1yZXRyeSI6eChuKS5mZXRjaENvbmZpZ30sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pXSksXzoxfSldKSxfOjF9KSk6eChuKS5sb2FkaW5nJiYheChuKS5kYXRhPyhrKCksaih4KGwpLHtrZXk6MX0se2RlZmF1bHQ6cigoKT0+W1MoeChQKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTEuNWB9LHtkZWZhdWx0OnIoKCk9PltTKHgoTikse2NsYXNzOmBoLTMgdy01NmB9KSxTKHgoTikse2NsYXNzOmBoLTY0IHctZnVsbCByb3VuZGVkLW1kYH0pXSksXzoxfSldKSxfOjF9KSk6eChuKS5kYXRhPyhrKCksaihIdCx7a2V5OjIsY29uZmlnOngobikuZGF0YS5jb25maWcsd2FybmluZ3M6eChuKS5kYXRhLndhcm5pbmdzfSxudWxsLDgsW2Bjb25maWdgLGB3YXJuaW5nc2BdKSk6TShgYCwhMCksUyh4KGwpLG51bGwse2RlZmF1bHQ6cigoKT0+W1MoeChlKSxudWxsLHtkZWZhdWx0OnIoKCk9PltTKHgocyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uaVsxXXx8PVtFKGBDaGFuZ2UgaGVscGVyYCwtMSldXSksXzoxfSksUyh4KG9lKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5pWzJdfHw9W0UoYEJ1aWxkIGEgcGFzdGUtcmVhZHkgc25pcHBldCBmb3IgbWlkZGxld2FyZS55YW1sIG9yIHVzZXJzLmpzb24g4oCUIG5vdGhpbmcgaGVyZSB3cml0ZXMgdG8gdGhlIHJ1bm5pbmcgY29uZmlnLmAsLTEpXV0pLF86MX0pXSksXzoxfSksUyh4KFApLG51bGwse2RlZmF1bHQ6cigoKT0+W1MoQnQseyJncm91cC1uYW1lcyI6by52YWx1ZSwidXNlci1uYW1lcyI6Yy52YWx1ZX0sbnVsbCw4LFtgZ3JvdXAtbmFtZXNgLGB1c2VyLW5hbWVzYF0pXSksXzoxfSldKSxfOjF9KV0pKX19KTtleHBvcnR7R3QgYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"ConsumersPage-i8sZV9MX.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FyIGFzIGUsQyBhcyB0LEUgYXMgbixGciBhcyByLEp0IGFzIGksSyBhcyBhLE9uIGFzIG8sUXIgYXMgcyxTIGFzIGMsU2kgYXMgbCxUIGFzIHUsVyBhcyBkLFggYXMgZixYbiBhcyBwLF9uIGFzIG0sYW4gYXMgaCxjbiBhcyBnLGNyIGFzIF8sZXIgYXMgZWUsZyBhcyB0ZSxnaSBhcyB2LGhuIGFzIHksaHQgYXMgYixpaSBhcyB4LGluIGFzIFMsbW4gYXMgQyxtdCBhcyB3LG4gYXMgbmUsbnIgYXMgVCxvaSBhcyBFLG9uIGFzIEQsc24gYXMgTyx1ciBhcyByZSx3IGFzIGsseGkgYXMgQSx5aSBhcyBqfWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7aW1wb3J0e2EgYXMgaWUsYyBhcyBhZSxpIGFzIE0sbiBhcyBOLG8gYXMgUCxyIGFzIEYscyBhcyBJLHQgYXMgTH1mcm9tIi4vc2VhcmNoLWV4cGFuZC1DSGQ0RldaWi5qcyI7aW1wb3J0e24gYXMgb2UsciBhcyBSLHQgYXMgen1mcm9tIi4vdGFicy1ZbGhuSHBLLS5qcyI7aW1wb3J0e2MgYXMgQixnIGFzIHNlLGggYXMgY2UsbSBhcyBWLHQgYXMgSH1mcm9tIi4vaW5kZXgtZHl3UzhPcFQuanMiO2ltcG9ydHt0IGFzIFV9ZnJvbSIuL0Vycm9yU3RhdGUteW02ZVNsajIuanMiO2ltcG9ydHt0IGFzIGxlfWZyb20iLi9jb25zdW1lcnMtQ1F0RUo5SzcuanMiO2ltcG9ydHtfIGFzIFcsYyBhcyBHLGYgYXMgSyxvIGFzIHEsciBhcyB1ZSx0IGFzIEosdSBhcyBZLHYgYXMgZGV9ZnJvbSIuL2JhZGdlLURVaUJURHlBLmpzIjtpbXBvcnR7YSBhcyBmZSxjIGFzIFgsZCBhcyBwZSxmIGFzIG1lLGkgYXMgaGUsbCBhcyBnZSxuIGFzIF9lLG8gYXMgdmUsciBhcyB5ZSxzIGFzIGJlLHQgYXMgeGUsdSBhcyBTZX1mcm9tIi4vRGF0YVRhYmxlLUNReFJWRFNZLmpzIjtpbXBvcnR7dCBhcyBafWZyb20iLi9Db21wYWN0TnVtYmVyLXByOGNKNGN2LmpzIjtpbXBvcnR7YSBhcyBDZSxjIGFzIHdlLGkgYXMgUSxuIGFzIFRlLG8gYXMgRWUsciBhcyBEZSxzIGFzIE9lLHQgYXMga2V9ZnJvbSIuL1RyeUxvbmdlclJhbmdlQnV0dG9uLUNqa1VuYU96LmpzIjtpbXBvcnR7YSBhcyBBZSxpIGFzIGplLG8gYXMgTWUsciBhcyBOZSxzIGFzIFBlfWZyb20iLi9idXJuZG93bi1CejQ0eDctZC5qcyI7aW1wb3J0e24gYXMgRmUsdCBhcyBJZX1mcm9tIi4vdXNlU2VhcmNoUXVlcnktYlFaUDRUc1ouanMiO2ltcG9ydHt0IGFzIExlfWZyb20iLi9Ta2VsZXRvbkxpc3QtQ21xejNoZmEuanMiO2ltcG9ydHt0IGFzIFJlfWZyb20iLi9FbnRpdHlMaW5rLURnOTNLR1ZULmpzIjtpbXBvcnR7dCBhcyB6ZX1mcm9tIi4vQ2xhbXBlZFJhbmdlTm90aWNlLUQyd2FsblhmLmpzIjtpbXBvcnR7biBhcyBCZSx0IGFzIFZlfWZyb20iLi9UaW1lU2VyaWVzQ2hhcnQtQkZjVDZ3b0EuanMiO2ltcG9ydHt0IGFzIEhlfWZyb20iLi9ldmVudHMtUFV4aEVlZ2EuanMiO2Z1bmN0aW9uIFVlKGUsdCl7dC52YWx1ZT10eXBlb2YgZT09YGZ1bmN0aW9uYD9lKHQudmFsdWUpOmV9ZnVuY3Rpb24gV2UoZSx0KXtpZighZS5hbGxvd2VkUHJvdmlkZXJzLmluY2x1ZGVzKHQpKXJldHVybnthbGxvd2VkOiExfTtsZXQgbj1lLm1vZGVsQWNjZXNzW3RdO2lmKCFuKXJldHVybnthbGxvd2VkOiEwfTtsZXQgcj1uLmFsbG93ZWQ9PT0wJiZuLnRvdGFsPjB8fHZvaWQgMDtyZXR1cm57YWxsb3dlZDohMCxkZXRhaWw6YCR7bi5hbGxvd2VkfS8ke24udG90YWx9IG1vZGVsc2AsemVybzpyfX1mdW5jdGlvbiBHZShlLHQpe3JldHVybiB0LmFjY2Vzcz09PXZvaWQgMHx8dC5hY2Nlc3M9PT1udWxsP3thbGxvd2VkOiEwfTp7YWxsb3dlZDp0LmFjY2Vzcy5pbmNsdWRlcyhlLm5hbWUpfX12YXIgS2U9W2Btb2RlbHNgLGBtY3BgLGBhZ2VudHNgXSxxZT17bW9kZWxzOmBNb2RlbHNgLG1jcDpgTUNQIHNlcnZlcnNgLGFnZW50czpgQWdlbnRzYH07ZnVuY3Rpb24gSmUoZSl7cmV0dXJuIEtlLmluY2x1ZGVzKGU/P2BgKT9lOmBtb2RlbHNgfWZ1bmN0aW9uIFllKGUsdCxuLHIpe3JldHVybiBlLm1hcChlPT4oe2dyb3VwOmUubmFtZSxwcm92aWRlcnM6T2JqZWN0LmZyb21FbnRyaWVzKHQubWFwKHQ9Plt0LFdlKGUsdCldKSksbWNwU2VydmVyczpPYmplY3QuZnJvbUVudHJpZXMobi5tYXAodD0+W3QubmFtZSxHZShlLHQpXSkpLGFnZW50czpPYmplY3QuZnJvbUVudHJpZXMoci5tYXAodD0+W3QubmFtZSxHZShlLHQpXSkpfSkpfWZ1bmN0aW9uIFhlKGUsdCxuKXtyZXR1cm4gZT90PT09MD9gZW1wdHlgOmByZWFkeWA6bj9gZXJyb3JgOmBsb2FkaW5nYH12YXIgWmU9e2tleTowLCJhcmlhLWhpZGRlbiI6YHRydWVgLGNsYXNzOmBtbC0xIHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sUWU9e2NsYXNzOmBzci1vbmx5YH0sJGU9bSh7X19uYW1lOmBBY2Nlc3NNYXRyaXhgLHByb3BzOntraW5kOnt9fSxlbWl0czpbYHVwZGF0ZTpraW5kYF0sc2V0dXAoZSx7ZW1pdDphfSl7bGV0IG89ZSxzPWEsZD1sZSgpLG09dGUoKSxlZT1uZSgpO3AoKCk9PntkLmVuc3VyZUNvbnN1bWVycygpfSk7bGV0IHg9UygoKT0+KG0ub3ZlcnZpZXc/LnByb3ZpZGVycz8/W10pLm1hcChlPT5lLm5hbWUpKSxFPVMoKCk9Pm0udGFyZ2V0cz8ubWNwU2VydmVycz8/W10pLEE9UygoKT0+bS50YXJnZXRzPy5hZ2VudHM/P1tdKSxpZT17bW9kZWxzOmBwcm92aWRlcnNgLG1jcDpgbWNwU2VydmVyc2AsYWdlbnRzOmBhZ2VudHNgfSxhZT17bW9kZWxzOmBXaGljaCBncm91cHMgY2FuIHJlYWNoIHdoaWNoIHByb3ZpZGVycywgYW5kIGhvdyBtYW55IG9mIGVhY2ggcHJvdmlkZXIncyBtb2RlbHMuYCxtY3A6YFdoaWNoIGdyb3VwcyBjYW4gcmVhY2ggd2hpY2ggTUNQIHNlcnZlcnMuYCxhZ2VudHM6YFdoaWNoIGdyb3VwcyBjYW4gcmVhY2ggd2hpY2ggYWdlbnRzLmB9LE09e21vZGVsczpgTm8gcHJvdmlkZXJzIGNvbmZpZ3VyZWQuYCxtY3A6YE5vIE1DUCBzZXJ2ZXJzIGNvbmZpZ3VyZWQuYCxhZ2VudHM6YE5vIGFnZW50cyBjb25maWd1cmVkLmB9LE49UygoKT0+e2xldCBlPWllW28ua2luZF07cmV0dXJuIG8ua2luZD09PWBtb2RlbHNgP3gudmFsdWUubWFwKHQ9Pih7a2V5OnQsbGFiZWw6dCxzZWN0aW9uOmV9KSk6KG8ua2luZD09PWBtY3BgP0UudmFsdWU6QS52YWx1ZSkubWFwKHQ9Pih7a2V5OnQubmFtZSxsYWJlbDp0Lm5hbWUsc2VjdGlvbjplfSkpfSksUD1TKCgpPT5ZZShkLmRhdGE/Lmdyb3Vwcz8/W10seC52YWx1ZSxFLnZhbHVlLEEudmFsdWUpKSxGPVMoKCk9Pm8ua2luZD09PWBtb2RlbHNgP20ub3ZlcnZpZXchPT1udWxsOm0udGFyZ2V0cyE9PW51bGwpLEk9UygoKT0+WGUoRi52YWx1ZSxOLnZhbHVlLmxlbmd0aCxtLmVycm9yKSksTD1TKCgpPT5XKHtsb2FkaW5nOmQubG9hZGluZyxoYXNEYXRhOmQuZGF0YSE9PW51bGwsZXJyb3I6ZC5lcnJvcn0pKSxzZT1TKCgpPT5MLnZhbHVlPT09YHJlYWR5YCYmUC52YWx1ZS5sZW5ndGg9PT0wKSxjZT17YWxsb3dlZDohMX07ZnVuY3Rpb24gVihlLHQpe3JldHVybiBlW3Quc2VjdGlvbl1bdC5rZXldPz9jZX1mdW5jdGlvbiBIKGUpe3R5cGVvZiBlIT1gc3RyaW5nYHx8IUtlLmluY2x1ZGVzKGUpfHxzKGB1cGRhdGU6a2luZGAsZSl9ZnVuY3Rpb24gRyhlKXtyZXR1cm4gZS5hbGxvd2VkP2UuemVybz9gQWxsb3dlZCwgYnV0ICR7ZS5kZXRhaWx9IHJlYWNoYWJsZSDigJQgdGhlIG1vZGVsIGdyYW50IG1hdGNoZXMgbm9uZSBvZiB0aGlzIHByb3ZpZGVyJ3MgbW9kZWxzYDplLmRldGFpbD9gQWxsb3dlZCwgJHtlLmRldGFpbH1gOmBBbGxvd2VkYDpgTm90IGFsbG93ZWRgfWZ1bmN0aW9uIEsoZSl7cmV0dXJuIGUuYWxsb3dlZD9lLnplcm8/dzpmOmJ9ZnVuY3Rpb24gcShlKXtyZXR1cm4gZS5hbGxvd2VkP2UuemVybz9gdGV4dC1zdGF0dXMtd2FybmA6YHRleHQtY2hhcnQtcmVxdWVzdHNgOmB0ZXh0LW11dGVkLWZvcmVncm91bmQvNDBgfXJldHVybihlLGEpPT57bGV0IHM9cmUoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBUKCksRCh2KHUpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodih0KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYoYyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxXXx8PVtDKGBBY2Nlc3MgbWF0cml4YCwtMSldXSksXzoxfSkseSh2KEIpLG51bGwse2RlZmF1bHQ6cigoKT0+W0MobChhZVtvLmtpbmRdKSwxKV0pLF86MX0pLHkodihSKSx7Im1vZGVsLXZhbHVlIjpvLmtpbmQsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOkh9LHtkZWZhdWx0OnIoKCk9Plt5KHYob2UpLG51bGwse2RlZmF1bHQ6cigoKT0+WyhUKCEwKSxnKGksbnVsbCxfKHYoS2UpLGU9PihUKCksRCh2KHopLHtrZXk6ZSx2YWx1ZTplfSx7ZGVmYXVsdDpyKCgpPT5bQyhsKHYocWUpW2VdKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSksXzoxfSksTC52YWx1ZT09PWBlcnJvcmA/KFQoKSxEKHYoaykse2tleTowfSx7ZGVmYXVsdDpyKCgpPT5beShVLHttZXNzYWdlOnYoZCkuZXJyb3IsIm9uLXJldHJ5Ijp2KGQpLmZldGNoQ29uc3VtZXJzfSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSldKSxfOjF9KSk6TC52YWx1ZT09PWBza2VsZXRvbmA/KFQoKSxEKHYoaykse2tleToxfSx7ZGVmYXVsdDpyKCgpPT5beSh2ZSx7cm93czo0LGNvbHM6NH0pXSksXzoxfSkpOnNlLnZhbHVlPyhUKCksRCh2KGspLHtrZXk6Mn0se2RlZmF1bHQ6cigoKT0+W3koZGUse3RpdGxlOmBObyBncm91cHMgY29uZmlndXJlZC5gLGRlc2NyaXB0aW9uOmBHcmFudCBhIGdyb3VwIGFjY2VzcyBmcm9tIHRoZSBDb25maWcgcGFnZSdzIGNoYW5nZSBoZWxwZXIuYH0se2RlZmF1bHQ6cigoKT0+W3kodihuKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsb25DbGljazphWzBdfHw9ZT0+dihlZSkuZ29UbyhgY29uZmlnYCx7aGVscGVyOmBncmFudGB9KX0se2RlZmF1bHQ6cigoKT0+Wy4uLmFbMl18fD1bQyhgT3BlbiBjaGFuZ2UgaGVscGVyYCwtMSldXSksXzoxfSldKSxfOjF9KV0pLF86MX0pKTpJLnZhbHVlPT09YGVycm9yYD8oVCgpLEQodihrKSx7a2V5OjN9LHtkZWZhdWx0OnIoKCk9Plt5KFUse21lc3NhZ2U6dihtKS5lcnJvcn0sbnVsbCw4LFtgbWVzc2FnZWBdKV0pLF86MX0pKTpJLnZhbHVlPT09YGxvYWRpbmdgPyhUKCksRCh2KGspLHtrZXk6NH0se2RlZmF1bHQ6cigoKT0+W3kodmUse3Jvd3M6UC52YWx1ZS5sZW5ndGgsY29sczo0fSxudWxsLDgsW2Byb3dzYF0pXSksXzoxfSkpOkkudmFsdWU9PT1gZW1wdHlgPyhUKCksRCh2KGspLHtrZXk6NX0se2RlZmF1bHQ6cigoKT0+W3koZGUse3RpdGxlOk1bby5raW5kXX0sbnVsbCw4LFtgdGl0bGVgXSldKSxfOjF9KSk6KFQoKSxEKHYoaykse2tleTo2LGNsYXNzOmBvdmVyZmxvdy14LWF1dG9gfSx7ZGVmYXVsdDpyKCgpPT5beSh2KG1lKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYoYmUpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihnZSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KFgpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbM118fD1bQyhgR3JvdXBgLC0xKV1dKSxfOjF9KSwoVCghMCksZyhpLG51bGwsXyhOLnZhbHVlLGU9PihUKCksRCh2KFgpLHtrZXk6ZS5rZXl9LHtkZWZhdWx0OnIoKCk9PltDKGwoZS5sYWJlbCksMSldKSxfOjJ9LDEwMjQpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pLHkodihwZSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bKFQoITApLGcoaSxudWxsLF8oUC52YWx1ZSxlPT4oVCgpLEQodihnZSkse2tleTplLmdyb3VwfSx7ZGVmYXVsdDpyKCgpPT5beSh2KFgpLHtzY29wZTpgcm93YCxjbGFzczpgZm9udC1tZWRpdW1gfSx7ZGVmYXVsdDpyKCgpPT5bQyhsKGUuZ3JvdXApLDEpXSksXzoyfSwxMDI0KSwoVCghMCksZyhpLG51bGwsXyhOLnZhbHVlLHQ9PihUKCksRCh2KFNlKSx7a2V5OnQua2V5LGNsYXNzOmB0ZXh0LWNlbnRlcmAsdGl0bGU6VihlLHQpLmRldGFpbH0se2RlZmF1bHQ6cigoKT0+W3kocyx7aWNvbjpLKFYoZSx0KSksY2xhc3M6aihbcShWKGUsdCkpLGBzaXplLTMuNWBdKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pLFYoZSx0KS5kZXRhaWw/KFQoKSxnKGBzcGFuYCxaZSxsKFYoZSx0KS5kZXRhaWwpLDEpKTpPKGBgLCEwKSxoKGBzcGFuYCxRZSxsKEcoVihlLHQpKSksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSkpLDEyOCkpXSksXzoyfSwxMDI0KSkpLDEyOCkpXSksXzoxfSldKSxfOjF9KV0pLF86MX0pKV0pLF86MX0pfX19KSxldD1bYGFyaWEtbGFiZWxgLGBhcmlhLXZhbHVlbm93YCxgYXJpYS12YWx1ZXRleHRgLGB0aXRsZWBdLHR0PW0oe19fbmFtZTpgVXNhZ2VCYXJgLHByb3BzOntyYXRpbzp7fSxsYWJlbDp7fSx2YWx1ZVRleHQ6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUsbj1TKCgpPT53ZSh0LnJhdGlvKSkscj1TKCgpPT5NYXRoLm1pbigxMDAsTWF0aC5tYXgoMCx0LnJhdGlvKjEwMCkpKSxpPVMoKCk9Pk1hdGgucm91bmQoci52YWx1ZSkpLGE9e25vcm1hbDpgYmctcHJpbWFyeWAsYW1iZXI6YGJnLWJhci1hbWJlcmAscmVkOmBiZy1kZXN0cnVjdGl2ZWB9O3JldHVybihvLHMpPT4oVCgpLGcoYHNwYW5gLHtyb2xlOmBtZXRlcmAsImFyaWEtbGFiZWwiOmUubGFiZWwsImFyaWEtdmFsdWVub3ciOmkudmFsdWUsImFyaWEtdmFsdWVtaW4iOmAwYCwiYXJpYS12YWx1ZW1heCI6YDEwMGAsImFyaWEtdmFsdWV0ZXh0IjplLnZhbHVlVGV4dCx0aXRsZTplLnZhbHVlVGV4dCxjbGFzczpqKHYoZCkoYHJlbGF0aXZlIGlubGluZS1ibG9jayBoLTEuNSB3LTE0IHNocmluay0wIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWZ1bGwgYmctbXV0ZWQgYWxpZ24tbWlkZGxlYCx0LmNsYXNzKSl9LFtoKGBzcGFuYCx7Y2xhc3M6aihbYGFic29sdXRlIGluc2V0LXktMCBsZWZ0LTAgcm91bmRlZC1mdWxsYCxhW24udmFsdWVdXSksc3R5bGU6QSh7d2lkdGg6YCR7ci52YWx1ZX0lYH0pfSxudWxsLDYpXSwxMCxldCkpfX0pLG50PTYwLHJ0PTM2MDAsaXQ9ODY0MDAsYXQ9NjAsb3Q9MzA7ZnVuY3Rpb24gc3QoZSx0PW5ldyBEYXRlKXtpZighZSlyZXR1cm5gbmV2ZXJgO2xldCBuPU1hdGguZmxvb3IodC5nZXRUaW1lKCkvMWUzKSxyPU1hdGgubWF4KDAsbi1lKTtpZihyPG50KXJldHVybmBqdXN0IG5vd2A7aWYocjxydClyZXR1cm5gJHtNYXRoLmZsb29yKHIvbnQpfW0gYWdvYDtpZihyPGl0KXJldHVybmAke01hdGguZmxvb3Ioci9ydCl9aCBhZ29gO2xldCBpPU1hdGguZmxvb3Ioci9pdCk7cmV0dXJuIGk8YXQ/YCR7aX1kIGFnb2A6YCR7TWF0aC5mbG9vcihpL290KX1tbyBhZ29gfWZ1bmN0aW9uICQoZSx0LG4scj1TdHJpbmcsaT0hMCxhKXtyZXR1cm57aWQ6ZSxoZWFkZXI6dCxhY2Nlc3NvckZuOm4sbWV0YTp7YWxpZ246YHJpZ2h0YH0sY2VsbDooe3JvdzplfSk9PntpZihlLm9yaWdpbmFsLnN0b3JlRG93bilyZXR1cm5gP2A7bGV0IHM9bihlLm9yaWdpbmFsKSxjPWk/byhaLHt2YWx1ZTpzfSk6cihzKTtpZighYSlyZXR1cm4gYztsZXQgbD1PZShlLm9yaWdpbmFsKS5maW5kKGU9PmUuaWQ9PT1hKTtpZighbClyZXR1cm4gYztsZXQgdT1pP2Ake0cobC51c2VkKX0gLyAke0cobC5saW1pdCl9YDpgJHtyKGwudXNlZCl9IC8gJHtyKGwubGltaXQpfWA7cmV0dXJuIG8oYHNwYW5gLHtjbGFzczpgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0xLjVgfSxbYyxvKHR0LHtyYXRpbzpsLnJhdGlvLGxhYmVsOkNlW2FdPz90LHZhbHVlVGV4dDp1fSldKX19fWZ1bmN0aW9uIGN0KCl7cmV0dXJue2lkOmByZWpEYXlgLGhlYWRlcjpgcmVqZWN0ZWQvZGF5YCxhY2Nlc3NvckZuOmU9PmUucmVqZWN0aW9uc1BlckRheSxtZXRhOnthbGlnbjpgcmlnaHRgfSxjZWxsOih7cm93OmV9KT0+e2lmKGUub3JpZ2luYWwuc3RvcmVEb3duKXJldHVybmA/YDtsZXQgdD1lLm9yaWdpbmFsLnJlamVjdGlvbnNQZXJEYXk7cmV0dXJuIG8oWix7dmFsdWU6dCxjbGFzczp0PjA/YHRleHQtZGVzdHJ1Y3RpdmVgOnZvaWQgMH0pfX19ZnVuY3Rpb24gbHQoZSl7cmV0dXJue2lkOmBjb3N0TW9udGhQcm9qYCxoZWFkZXI6YGNvc3QvbW9udGggKHByb2ouKWAsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjp0PT5RKHQuY29zdFBlck1vbnRoTWljcm9Vc2QsZSk/PzAsY2VsbDooe3Jvdzp0fSk9PntpZih0Lm9yaWdpbmFsLnN0b3JlRG93bilyZXR1cm5gP2A7bGV0IG49USh0Lm9yaWdpbmFsLmNvc3RQZXJNb250aE1pY3JvVXNkLGUpO2lmKG49PT1udWxsKXJldHVybiBvKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBub3QgZW5vdWdoIGRhdGEgeWV0YCk7bGV0IHI9VGUobix0Lm9yaWdpbmFsLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEKTtyZXR1cm4gbyhgc3BhbmAse2NsYXNzOnIud2lsbEV4Y2VlZD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwLHRpdGxlOnIud2lsbEV4Y2VlZD9gUHJvamVjdGVkIHRvIGV4Y2VlZCB0aGUgY29uZmlndXJlZCBjb3N0L21vbnRoIGxpbWl0YDp2b2lkIDB9LHEobikpfX19ZnVuY3Rpb24gdXQoZSl7cmV0dXJue2lkOmBzb3VyY2VgLGhlYWRlcjpgU291cmNlYCxhY2Nlc3NvckZuOnQ9PmUodCk/P2BgLGNlbGw6KHtyb3c6dH0pPT5vKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGUodC5vcmlnaW5hbCk/P2DigJRgKX19ZnVuY3Rpb24gZHQoZSl7cmV0dXJue2lkOmBsYXN0U2VlbmAsaGVhZGVyOmBMYXN0IHNlZW5gLGFjY2Vzc29yRm46ZT0+ZS5sYXN0U2Vlbj8/MCxjZWxsOih7cm93OnR9KT0+c3QodC5vcmlnaW5hbC5sYXN0U2VlbixlKX19ZnVuY3Rpb24gZnQoZSx0LG4scj1uZXcgRGF0ZSxpKXtsZXQgYT1EZShyKSxzPVt7aWQ6YGlkYCxoZWFkZXI6ZSxhY2Nlc3NvckZuOmU9PmUuaWQsY2VsbDooe3JvdzplfSk9Pm8oUmUse2NsYXNzOmBmb250LW1lZGl1bWAsbGFiZWw6ZS5vcmlnaW5hbC5pZCxraW5kOmB1c2VyYCxpZDplLm9yaWdpbmFsLmlkfSl9LHtpZDpgc2Vjb25kYXJ5YCxoZWFkZXI6dCxhY2Nlc3NvckZuOm4sc29ydGluZ0ZuOmBhbHBoYW51bWVyaWNgLGNlbGw6KHtyb3c6ZX0pPT5vKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LG4oZS5vcmlnaW5hbCkpfV07cmV0dXJuIGkmJnMucHVzaCh1dChpKSkscy5wdXNoKHtpZDpgbGltaXRzYCxoZWFkZXI6YExpbWl0c2AsYWNjZXNzb3JGbjplPT5ZKGUubGltaXRzKSxjZWxsOih7cm93OmV9KT0+byhgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxZKGUub3JpZ2luYWwubGltaXRzKSl9LCQoYHJlcU1pbmAsYHJlcS9taW5gLGU9PmUucmVxdWVzdHNQZXJNaW51dGUsU3RyaW5nLCEwLGByZXFNaW5gKSwkKGByZXFEYXlgLGByZXEvZGF5YCxlPT5lLnJlcXVlc3RzUGVyRGF5LFN0cmluZywhMCxgcmVxRGF5YCksY3QoKSwkKGB0b2tJbkRheWAsYHRva0luL2RheWAsZT0+ZS50b2tlbnNJblBlckRheSxTdHJpbmcsITAsYHRva0RheWApLCQoYHRva091dERheWAsYHRva091dC9kYXlgLGU9PmUudG9rZW5zT3V0UGVyRGF5LFN0cmluZywhMCxgdG9rRGF5YCksJChgdG9rSW5Nb250aGAsYHRva0luL21vbnRoYCxlPT5lLnRva2Vuc0luUGVyTW9udGgsU3RyaW5nLCEwLGB0b2tNb250aGApLCQoYHRva091dE1vbnRoYCxgdG9rT3V0L21vbnRoYCxlPT5lLnRva2Vuc091dFBlck1vbnRoLFN0cmluZywhMCxgdG9rTW9udGhgKSwkKGBjb3N0RGF5YCxgY29zdC9kYXlgLGU9PmUuY29zdFBlckRheU1pY3JvVXNkLHEsITEsYGNvc3REYXlgKSwkKGBjb3N0TW9udGhgLGBjb3N0L21vbnRoYCxlPT5lLmNvc3RQZXJNb250aE1pY3JvVXNkLHEsITEsYGNvc3RNb250aGApLGx0KGEpLGR0KHIpKSxzfXZhciBwdD1tKHtfX25hbWU6YFVzYWdlVGFibGVgLHByb3BzOntpZExhYmVsOnt9LGVudHJpZXM6e30sc2Vjb25kYXJ5Q29sdW1uTGFiZWw6e30sc2Vjb25kYXJ5VmFsdWU6e3R5cGU6RnVuY3Rpb259LGVtcHR5TWVzc2FnZTp7fSxub3c6e30sc29ydGluZzp7fSxzb3VyY2VWYWx1ZTp7dHlwZTpGdW5jdGlvbn19LGVtaXRzOltgdXBkYXRlOnNvcnRpbmdgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgbj1lLHI9dCxpPVMoKCk9PmZ0KG4uaWRMYWJlbCxuLnNlY29uZGFyeUNvbHVtbkxhYmVsLG4uc2Vjb25kYXJ5VmFsdWUsbi5ub3csbi5zb3VyY2VWYWx1ZSkpO3JldHVybih0LG4pPT4oVCgpLEQoeGUse2NvbHVtbnM6aS52YWx1ZSxkYXRhOmUuZW50cmllcywiZW1wdHktbWVzc2FnZSI6ZS5lbXB0eU1lc3NhZ2UsInJvdy1jbGFzcyI6ZT0+ZS5zdG9yZURvd24/YGJnLWRlc3RydWN0aXZlLzEwYDp2b2lkIDAsc29ydGluZzplLnNvcnRpbmcsIm9uVXBkYXRlOnNvcnRpbmciOm5bMF18fD1lPT5yKGB1cGRhdGU6c29ydGluZ2AsZSl9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYCxgZW1wdHktbWVzc2FnZWAsYHJvdy1jbGFzc2AsYHNvcnRpbmdgXSkpfX0pLG10PXt1c2VyczpgR3JvdXBgLGdyb3VwczpgTWVtYmVyc2B9O2Z1bmN0aW9uIGh0KGUpe3JldHVybihlL0VlKS50b0ZpeGVkKDYpfWZ1bmN0aW9uIGd0KGUsdCxuLHI9bmV3IERhdGUpe2xldCBpPURlKHIpLGE9W2BOYW1lYCxtdFt0XSxgTGltaXRzYCxgcmVxL21pbmAsYHJlcS9kYXlgLGByZWplY3RlZC9kYXlgLGB0b2tJbi9kYXlgLGB0b2tPdXQvZGF5YCxgdG9rSW4vbW9udGhgLGB0b2tPdXQvbW9udGhgLGBjb3N0L2RheSAoVVNEKWAsYGNvc3QvbW9udGggKFVTRClgLGBjb3N0L21vbnRoIChwcm9qLiwgVVNEKWAsYGxhc3Qgc2VlbiAodW5peCBzZWNvbmRzKWBdLG89ZS5tYXAoZT0+e2xldCB0PWUuc3RvcmVEb3duLHI9dD9udWxsOlEoZS5jb3N0UGVyTW9udGhNaWNyb1VzZCxpKTtyZXR1cm5bZS5pZCxuKGUpLFkoZS5saW1pdHMpLHQ/YD9gOmUucmVxdWVzdHNQZXJNaW51dGUsdD9gP2A6ZS5yZXF1ZXN0c1BlckRheSx0P2A/YDplLnJlamVjdGlvbnNQZXJEYXksdD9gP2A6ZS50b2tlbnNJblBlckRheSx0P2A/YDplLnRva2Vuc091dFBlckRheSx0P2A/YDplLnRva2Vuc0luUGVyTW9udGgsdD9gP2A6ZS50b2tlbnNPdXRQZXJNb250aCx0P2A/YDpodChlLmNvc3RQZXJEYXlNaWNyb1VzZCksdD9gP2A6aHQoZS5jb3N0UGVyTW9udGhNaWNyb1VzZCksdD9gP2A6cj09PW51bGw/YG5vdCBlbm91Z2ggZGF0YSB5ZXRgOmh0KHIpLGUubGFzdFNlZW4/PzBdfSk7cmV0dXJuIGplKGEsbyl9ZnVuY3Rpb24gX3QoZSx0KXtyZXR1cm4gZS5pZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHQpfWZ1bmN0aW9uIHZ0KGUsdCl7cmV0dXJuIGUuaWQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0KX1mdW5jdGlvbiB5dChlLHQpe3JldHVybiB0LmZpbHRlcih0PT4odC5ncm91cHM/P1t0Lmdyb3VwTmFtZV0pLmluY2x1ZGVzKGUuaWQpKX1mdW5jdGlvbiBidChlLHQsbil7cmV0dXJuIHl0KGUsdCkuZmlsdGVyKGU9Pl90KGUsbikpfWZ1bmN0aW9uIHh0KGUsdCxuKXtyZXR1cm4gdnQoZSxuKXx8YnQoZSx0LG4pLmxlbmd0aD4wfXZhciBTdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxDdD17Y2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXNgfSx3dD17Y2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXNgfSxUdD17Y2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXNgfSxFdD17Y2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXNgfSxEdD17Y2xhc3M6YGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGdhcC0yYH0sT3Q9e2tleTowLGNsYXNzOmBtYi0zIGZsZXggZmxleC13cmFwIGdhcC14LTQgZ2FwLXktMSB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGt0PXtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxBdD17Y2xhc3M6YHNocmluay0wIHB5LTIuNSBmb250LW1lZGl1bWB9LGp0PXtjbGFzczpgc3Itb25seWB9LE10PXtjbGFzczpgZmxleCBmbGV4LTEgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC00IGdhcC15LTEgcHItMiB0ZXh0LWxlZnRgfSxOdD17Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRhYnVsYXItbnVtc2B9LFB0PXtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGFidWxhci1udW1zYH0sRnQ9e2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0YWJ1bGFyLW51bXNgfSxJdD17Y2xhc3M6YG1iLTMgZ3JpZCBncmlkLWNvbHMtMiBnYXAteC02IGdhcC15LTEuNSB0ZXh0LXNtIHNtOmdyaWQtY29scy00YH0sTHQ9e2tleTowLGNsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sUnQ9e2tleToxLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx6dD17a2V5OjAsY2xhc3M6YGZsZXggZmxleC13cmFwIGdhcC0xLjVgfSxCdD17a2V5OjEsY2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFZ0PXtrZXk6MCxjbGFzczpgZmxleCBmbGV4LXdyYXAgZ2FwLTEuNWB9LEh0PXtrZXk6MSxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sVXQ9e2tleTowLGNsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sV3Q9e2tleToxLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxHdD17Y2xhc3M6YG1iLTMgZ3JpZCBncmlkLWNvbHMtMiBnYXAteC02IGdhcC15LTEuNSB0ZXh0LXNtIHNtOmdyaWQtY29scy00YH0sS3Q9e2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxxdD17Y2xhc3M6YHRhYnVsYXItbnVtc2B9LEp0PXtjbGFzczpgdGFidWxhci1udW1zYH0sWXQ9e2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxYdD17Y2xhc3M6YHRhYnVsYXItbnVtc2B9LFp0PXtjbGFzczpgdGFidWxhci1udW1zYH0sUXQ9W2B0aXRsZWBdLCR0PXtrZXk6MCxjbGFzczpgbWItMyBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtNCBnYXAteS0xLjVgfSxlbj17a2V5OjMsY2xhc3M6YHB5LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx0bj17Y2xhc3M6YGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGdhcC0yYH0sbm49YEdsb2IgcGF0dGVybiDigJQgbWF0Y2hlcyBsaWtlIGEgc2hlbGwgd2lsZGNhcmQgKCosID8sIFsuLi5dKWAscm49bSh7X19uYW1lOmBDb25zdW1lckRpcmVjdG9yeWAsc2V0dXAoYSl7bGV0IG89dGUoKSxkPWxlKCksZj1uZSgpLG09UygoKT0+by51c2FnZSksYj1TKCgpPT5XKHtsb2FkaW5nOiFvLmxhc3RVcGRhdGVkLGhhc0RhdGE6bS52YWx1ZSE9PW51bGwsZXJyb3I6by5lcnJvcn0pKTtwKCgpPT57ZC5lbnN1cmVDb25zdW1lcnMoKX0pO2xldHtub3c6dyxzdGFydDpyZSxzdG9wOkF9PUFlKCk7cChyZSksZWUoQSk7bGV0IG9lPVMoKCk9PntsZXQgZT17fTtmb3IobGV0IHQgb2Ygby5vdmVydmlldz8uZ3JvdXBzPz9bXSllW3QubmFtZV09dC5tZW1iZXJDb3VudDtyZXR1cm4gZX0pO2Z1bmN0aW9uIFIoZSl7cmV0dXJuKGUuZ3JvdXBzPz8oZS5ncm91cE5hbWU9PT12b2lkIDA/W106W2UuZ3JvdXBOYW1lXSkpLmpvaW4oYCwgYCl9ZnVuY3Rpb24geihlKXtsZXQgdD1vZS52YWx1ZVtlLmlkXTtyZXR1cm4gdD09PXZvaWQgMD9gYDpTdHJpbmcodCl9ZnVuY3Rpb24gc2UoZSl7cmV0dXJuIGQuZGF0YT8udXNlcnMuZmluZCh0PT50Lm5hbWU9PT1lLmlkKT8uc291cmNlfWxldCBjZT1TKHtnZXQ6KCk9PmYucGFyYW1zLnE/P2BgLHNldDplPT5mLmdvVG8oYGNvbnN1bWVyc2Asey4uLmYucGFyYW1zLHE6ZX0pfSkse3F1ZXJ5OlYsbm9ybWFsaXplZDpILGhhc1F1ZXJ5Okt9PUllKGNlKSx1ZT1TKCgpPT57bGV0IGU9bS52YWx1ZT8uZ3JvdXBzPz9bXTtpZighSy52YWx1ZSlyZXR1cm4gZTtsZXQgdD1tLnZhbHVlPy51c2Vycz8/W107cmV0dXJuIGUuZmlsdGVyKGU9Pnh0KGUsdCxILnZhbHVlKSl9KSxYPVMoKCk9PksudmFsdWU/dWUudmFsdWUuZmlsdGVyKGU9PiF2dChlLEgudmFsdWUpKS5tYXAoZT0+ZS5pZCk6W10pO2Z1bmN0aW9uIHBlKGUpe2xldCB0PW0udmFsdWU/LnVzZXJzPz9bXTtyZXR1cm4hSy52YWx1ZXx8dnQoZSxILnZhbHVlKT95dChlLHQpOmJ0KGUsdCxILnZhbHVlKX1sZXQgbWU9UygoKT0+bS52YWx1ZT8uZ3JvdXBzLmxlbmd0aD9LLnZhbHVlP2BubyBncm91cHMgbWF0Y2ggIiR7Vi52YWx1ZX0iYDpgbm9uZWA6YG5vbmUgY29uZmlndXJlZGApLGdlPVMoKCk9PihtLnZhbHVlPy5ncm91cHMubGVuZ3RoPz8wKT09PTAmJiFLLnZhbHVlKSxiZT1TKCgpPT57bGV0IGU9bS52YWx1ZT8udXNlcnM/P1tdO2lmKCFLLnZhbHVlKXJldHVybiBlO2xldCB0PW0udmFsdWU/Lmdyb3Vwcz8/W10sbj1uZXcgU2V0KHQuZmlsdGVyKGU9PnZ0KGUsSC52YWx1ZSkpLm1hcChlPT5lLmlkKSk7cmV0dXJuIGUuZmlsdGVyKGU9Pl90KGUsSC52YWx1ZSl8fChlLmdyb3Vwcz8/W2UuZ3JvdXBOYW1lXSkuc29tZShlPT5lIT09dm9pZCAwJiZuLmhhcyhlKSkpfSkseGU9UygoKT0+bS52YWx1ZT8udXNlcnMubGVuZ3RoP0sudmFsdWU/YG5vIHVzZXJzIG1hdGNoICIke1YudmFsdWV9ImA6YG5vbmVgOmBub25lIGNvbmZpZ3VyZWRgKSxTZT1TKCgpPT5mdChgTmFtZWAsYE1lbWJlcnNgLHosdy52YWx1ZSkpLHdlPUUoW10pLEVlPXllKHtnZXQgZGF0YSgpe3JldHVybiB1ZS52YWx1ZX0sZ2V0IGNvbHVtbnMoKXtyZXR1cm4gU2UudmFsdWV9LGdldENvcmVSb3dNb2RlbDpoZSgpLGdldFNvcnRlZFJvd01vZGVsOmZlKCksb25Tb3J0aW5nQ2hhbmdlOmU9PlVlKGUsd2UpLHN0YXRlOntnZXQgc29ydGluZygpe3JldHVybiB3ZS52YWx1ZX19fSksa2U9UygoKT0+RWUuZ2V0Um93TW9kZWwoKS5yb3dzKSxqZT1uZXcgU2V0KFtgaWRgLGBzZWNvbmRhcnlgLGByZXFEYXlgLGBjb3N0RGF5YF0pLE5lPVMoKCk9PkVlLmdldEhlYWRlckdyb3VwcygpWzBdLmhlYWRlcnMuZmlsdGVyKGU9PmplLmhhcyhlLmNvbHVtbi5pZCkpKSxSZT14KHttYW51YWxseUV4cGFuZGVkOm5ldyBTZXQsbWFudWFsbHlDb2xsYXBzZWQ6bmV3IFNldH0pLHplPVMoKCk9Pk4oUmUsSy52YWx1ZSxYLnZhbHVlKSk7ZnVuY3Rpb24gQmUoZSl7RihSZSxlLHplLnZhbHVlLmhhcyhlKSl9bGV0IFZlPVMoe2dldDooKT0+QXJyYXkuZnJvbSh6ZS52YWx1ZSksc2V0OmU9PntsZXQgdD1uZXcgU2V0KGUpO2ZvcihsZXQgZSBvZiB6ZS52YWx1ZSl0LmhhcyhlKXx8QmUoZSk7Zm9yKGxldCBlIG9mIHQpemUudmFsdWUuaGFzKGUpfHxCZShlKX19KTtlKFYsZT0+e2UudHJpbSgpPT09YGAmJkwoUmUpfSk7ZnVuY3Rpb24gSGUoZSl7cmV0dXJuL1sqP1tdLy50ZXN0KGUpfWZ1bmN0aW9uIFdlKGUpe3JldHVybiBlLmlkLnN0YXJ0c1dpdGgoYGNvc3RgKT9gJHtxKGUudXNlZCl9IC8gJHtxKGUubGltaXQpfWA6YCR7RyhlLnVzZWQpfSAvICR7RyhlLmxpbWl0KX1gfWZ1bmN0aW9uIEdlKGUsdCl7bGV0IG49RGUodCkscj1RKGUuY29zdFBlck1vbnRoTWljcm9Vc2Qsbik7cmV0dXJuIHI9PT1udWxsP3t0ZXh0OmBub3QgZW5vdWdoIGRhdGEgeWV0YCx3aWxsRXhjZWVkOiExfTp7dGV4dDpxKHIpLHdpbGxFeGNlZWQ6VGUocixlLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEKS53aWxsRXhjZWVkfX1sZXQgS2U9UygoKT0+ZnQoYE5hbWVgLGBHcm91cGAsUix3LnZhbHVlLHNlKSkscWU9RShbXSksSmU9eWUoe2dldCBkYXRhKCl7cmV0dXJuIGJlLnZhbHVlfSxnZXQgY29sdW1ucygpe3JldHVybiBLZS52YWx1ZX0sZ2V0Q29yZVJvd01vZGVsOmhlKCksZ2V0U29ydGVkUm93TW9kZWw6ZmUoKSxvblNvcnRpbmdDaGFuZ2U6ZT0+VWUoZSxxZSksc3RhdGU6e2dldCBzb3J0aW5nKCl7cmV0dXJuIHFlLnZhbHVlfX19KTtmdW5jdGlvbiBZZSgpe3JldHVybiBndChKZS5nZXRSb3dNb2RlbCgpLnJvd3MubWFwKGU9PmUub3JpZ2luYWwpLGB1c2Vyc2AsUix3LnZhbHVlKX1mdW5jdGlvbiBYZSgpe3JldHVybiBndChrZS52YWx1ZS5tYXAoZT0+ZS5vcmlnaW5hbCksYGdyb3Vwc2Aseix3LnZhbHVlKX1yZXR1cm4oZSxhKT0+KFQoKSxnKGBkaXZgLFN0LFt5KEZlLHttb2RlbFZhbHVlOnYoViksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMF18fD1lPT5zKFYpP1YudmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOmBGaWx0ZXIgdXNlcnMgb3IgZ3JvdXBzYCxjbGFzczpgbWF4LXctc21gfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pLG0udmFsdWU/KFQoKSxEKHYodSkse2tleTowfSx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihjKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzRdfHw9W0MoYFRvdGFsYCwtMSldXSksXzoxfSkseSh2KEIpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbNV18fD1bQyhgVXNhZ2Ugc3VtbWVkIGFjcm9zcyBldmVyeSB1c2VyIGFuZCBncm91cCBjb21iaW5lZC5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLHkodihrKSx7Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdGV4dC1zbSBzbTpncmlkLWNvbHMtNWB9LHtkZWZhdWx0OnIoKCk9PltoKGBkaXZgLG51bGwsW2FbNl18fD1oKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBSZXF1ZXN0cy9kYXlgLC0xKSxoKGBwYCxDdCxbeShaLHt2YWx1ZTptLnZhbHVlLnRvdGFsLnJlcXVlc3RzUGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKV0pXSksaChgZGl2YCxudWxsLFthWzddfHw9aChgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUmVqZWN0ZWQvZGF5YCwtMSksaChgcGAse2NsYXNzOmooW2B0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYCxtLnZhbHVlLnRvdGFsLnJlamVjdGlvbnNQZXJEYXk+MD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwXSl9LFt5KFose3ZhbHVlOm0udmFsdWUudG90YWwucmVqZWN0aW9uc1BlckRheX0sbnVsbCw4LFtgdmFsdWVgXSldLDIpXSksaChgZGl2YCxudWxsLFthWzhdfHw9aChgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgVG9rZW5zIGluL2RheWAsLTEpLGgoYHBgLHd0LFt5KFose3ZhbHVlOm0udmFsdWUudG90YWwudG9rZW5zSW5QZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pXSldKSxoKGBkaXZgLG51bGwsW2FbOV18fD1oKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBUb2tlbnMgb3V0L2RheWAsLTEpLGgoYHBgLFR0LFt5KFose3ZhbHVlOm0udmFsdWUudG90YWwudG9rZW5zT3V0UGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKV0pXSksaChgZGl2YCxudWxsLFthWzEwXXx8PWgoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYENvc3QvZGF5YCwtMSksaChgcGAsRXQsbCh2KHEpKG0udmFsdWUudG90YWwuY29zdFBlckRheU1pY3JvVXNkKSksMSldKV0pLF86MX0pXSksXzoxfSkpOk8oYGAsITApLG0udmFsdWU/KFQoKSxEKFBlLHtrZXk6MSwibXRkLW1pY3JvcyI6bS52YWx1ZS50b3RhbC5jb3N0UGVyTW9udGhNaWNyb1VzZCxsaW1pdHM6bS52YWx1ZS50b3RhbC5saW1pdHMsbm93OnYodyl9LG51bGwsOCxbYG10ZC1taWNyb3NgLGBsaW1pdHNgLGBub3dgXSkpOk8oYGAsITApLHkodih1KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYodCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5baChgZGl2YCxEdCxbaChgZGl2YCxudWxsLFt5KHYoYyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxMV18fD1bQyhgR3JvdXBzYCwtMSldXSksXzoxfSkseSh2KEIpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMTJdfHw9W0MoYEV4cGFuZCBhIGdyb3VwIHRvIHNlZSBpdHMgbWVtYmVyIHVzZXJzJyBvd24gdXNhZ2UuYCwtMSldXSksXzoxfSldKSx5KE1lLHtmaWxlbmFtZTpgY29uc3VtZXJzLWdyb3Vwcy5jc3ZgLGJ1aWxkOlhlfSldKV0pLF86MX0pLHkodihrKSxudWxsLHtkZWZhdWx0OnIoKCk9PltiLnZhbHVlPT09YHNrZWxldG9uYD8oVCgpLEQoTGUse2tleTowLHJvd3M6M30pKTpiLnZhbHVlPT09YGVycm9yYD8oVCgpLEQoVSx7a2V5OjEsbWVzc2FnZTp2KG8pLmVycm9yLCJvbi1yZXRyeSI6dihvKS5yZWZyZXNofSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOihUKCksZyhpLHtrZXk6Mn0sW2tlLnZhbHVlLmxlbmd0aD8oVCgpLGcoYGRpdmAsT3QsWyhUKCEwKSxnKGksbnVsbCxfKE5lLnZhbHVlLGU9PihUKCksRChfZSx7a2V5OmUuaWQsaGVhZGVyOmV9LG51bGwsOCxbYGhlYWRlcmBdKSkpLDEyOCkpXSkpOk8oYGAsITApLGtlLnZhbHVlLmxlbmd0aD8oVCgpLEQodihJKSx7a2V5OjEsbW9kZWxWYWx1ZTpWZS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVsxXXx8PWU9PlZlLnZhbHVlPWUsdHlwZTpgbXVsdGlwbGVgLGNsYXNzOmByb3VuZGVkLW1kIGJvcmRlciBweC0zYH0se2RlZmF1bHQ6cigoKT0+WyhUKCEwKSxnKGksbnVsbCxfKGtlLnZhbHVlLGU9PihUKCksRCh2KGllKSx7a2V5OmUub3JpZ2luYWwuaWQsdmFsdWU6ZS5vcmlnaW5hbC5pZH0se2RlZmF1bHQ6cigoKT0+W2goYGRpdmAsa3QsW2goYHNwYW5gLEF0LGwoZS5vcmlnaW5hbC5pZCksMSkseSh2KE0pLHsiaGVhZGVyLWNsYXNzIjpgZmxleC0xYH0se2RlZmF1bHQ6cigoKT0+W2goYHNwYW5gLGp0LGBHcm91cCBgK2woZS5vcmlnaW5hbC5pZCkrYCBkZXRhaWxzYCwxKSxoKGBzcGFuYCxNdCxbaChgc3BhbmAsTnQsbCh6KGUub3JpZ2luYWwpfHxgMGApK2AgbWVtYmVyc2AsMSksaChgc3BhbmAsUHQsW2Uub3JpZ2luYWwuc3RvcmVEb3duPyhUKCksZyhpLHtrZXk6MH0sW0MoYD9gKV0sNjQpKTooVCgpLEQoWix7a2V5OjEsdmFsdWU6ZS5vcmlnaW5hbC5yZXF1ZXN0c1BlckRheX0sbnVsbCw4LFtgdmFsdWVgXSkpLGFbMTNdfHw9QyhgIHJlcS9kYXkgYCwtMSldKSxoKGBzcGFuYCxGdCxsKGUub3JpZ2luYWwuc3RvcmVEb3duP2A/YDp2KHEpKGUub3JpZ2luYWwuY29zdFBlckRheU1pY3JvVXNkKSkrYC9kYXkgYCwxKV0pXSksXzoyfSwxMDI0KV0pLHkodihQKSxudWxsLHtkZWZhdWx0OnIoKCk9PltoKGBkbGAsSXQsW2goYGRpdmAsbnVsbCxbaChgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgLHRpdGxlOm5ufSxgUHJvdmlkZXJzYCksaChgZGRgLG51bGwsW2Uub3JpZ2luYWwucHJvdmlkZXJzPy5sZW5ndGg/KFQoKSxnKGBkaXZgLEx0LFsoVCghMCksZyhpLG51bGwsXyhlLm9yaWdpbmFsLnByb3ZpZGVycyxlPT4oVCgpLEQodihKKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YG1heC13LWZ1bGwgdHJ1bmNhdGUgZm9udC1tb25vIGZvbnQtbm9ybWFsYCx0aXRsZTplfSx7ZGVmYXVsdDpyKCgpPT5bQyhsKGUpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpKSwxMjgpKV0pKTooVCgpLGcoYHNwYW5gLFJ0LGBBbGwgcHJvdmlkZXJzYCkpXSldKSxoKGBkaXZgLG51bGwsW2goYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCx0aXRsZTpubn0sYE1vZGVsc2ApLGgoYGRkYCxudWxsLFtlLm9yaWdpbmFsLm1vZGVscz8ubGVuZ3RoPyhUKCksZyhgZGl2YCx6dCxbKFQoITApLGcoaSxudWxsLF8oZS5vcmlnaW5hbC5tb2RlbHMsZT0+KFQoKSxnKGkse2tleTplfSxbSGUoZSk/KFQoKSxEKHYoSikse2tleToxLGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBtYXgtdy1mdWxsIHRydW5jYXRlIGZvbnQtbW9ubyBmb250LW5vcm1hbGAsdGl0bGU6ZX0se2RlZmF1bHQ6cigoKT0+W0MobChlKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKTooVCgpLEQoYWUse2tleTowLGlkOmV9LG51bGwsOCxbYGlkYF0pKV0sNjQpKSksMTI4KSldKSk6KFQoKSxnKGBzcGFuYCxCdCxgQWxsIG1vZGVsc2ApKV0pXSksaChgZGl2YCxudWxsLFtoKGBkdGAse2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsdGl0bGU6bm59LGBNQ1Agc2VydmVyc2ApLGgoYGRkYCxudWxsLFtlLm9yaWdpbmFsLm1jcFNlcnZlcnM/Lmxlbmd0aD8oVCgpLGcoYGRpdmAsVnQsWyhUKCEwKSxnKGksbnVsbCxfKGUub3JpZ2luYWwubWNwU2VydmVycyxlPT4oVCgpLEQodihKKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YG1heC13LWZ1bGwgdHJ1bmNhdGUgZm9udC1tb25vIGZvbnQtbm9ybWFsYCx0aXRsZTplfSx7ZGVmYXVsdDpyKCgpPT5bQyhsKGUpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpKSwxMjgpKV0pKTooVCgpLGcoYHNwYW5gLEh0LGBBbGwgTUNQIHNlcnZlcnNgKSldKV0pLGgoYGRpdmAsbnVsbCxbaChgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgLHRpdGxlOm5ufSxgQWdlbnRzYCksaChgZGRgLG51bGwsW2Uub3JpZ2luYWwuYWdlbnRzPy5sZW5ndGg/KFQoKSxnKGBkaXZgLFV0LFsoVCghMCksZyhpLG51bGwsXyhlLm9yaWdpbmFsLmFnZW50cyxlPT4oVCgpLEQodihKKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YG1heC13LWZ1bGwgdHJ1bmNhdGUgZm9udC1tb25vIGZvbnQtbm9ybWFsYCx0aXRsZTplfSx7ZGVmYXVsdDpyKCgpPT5bQyhsKGUpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpKSwxMjgpKV0pKTooVCgpLGcoYHNwYW5gLFd0LGBBbGwgYWdlbnRzYCkpXSldKV0pLGgoYGRsYCxHdCxbaChgZGl2YCxudWxsLFthWzE0XXx8PWgoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYExpbWl0c2AsLTEpLGgoYGRkYCxudWxsLGwodihZKShlLm9yaWdpbmFsLmxpbWl0cykpLDEpXSksaChgZGl2YCxudWxsLFthWzE1XXx8PWgoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYHJlcS9taW5gLC0xKSxoKGBkZGAsS3QsW2Uub3JpZ2luYWwuc3RvcmVEb3duPyhUKCksZyhpLHtrZXk6MH0sW0MoYD9gKV0sNjQpKTooVCgpLEQoWix7a2V5OjEsdmFsdWU6ZS5vcmlnaW5hbC5yZXF1ZXN0c1Blck1pbnV0ZX0sbnVsbCw4LFtgdmFsdWVgXSkpXSldKSxoKGBkaXZgLG51bGwsW2FbMTZdfHw9aChgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgcmVqZWN0ZWQvZGF5YCwtMSksaChgZGRgLHtjbGFzczpqKFtgdGFidWxhci1udW1zYCwhZS5vcmlnaW5hbC5zdG9yZURvd24mJmUub3JpZ2luYWwucmVqZWN0aW9uc1BlckRheT4wP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDBdKX0sW2Uub3JpZ2luYWwuc3RvcmVEb3duPyhUKCksZyhpLHtrZXk6MH0sW0MoYD9gKV0sNjQpKTooVCgpLEQoWix7a2V5OjEsdmFsdWU6ZS5vcmlnaW5hbC5yZWplY3Rpb25zUGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKSldLDIpXSksaChgZGl2YCxudWxsLFthWzE3XXx8PWgoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYHRva0luL2RheWAsLTEpLGgoYGRkYCxxdCxbZS5vcmlnaW5hbC5zdG9yZURvd24/KFQoKSxnKGkse2tleTowfSxbQyhgP2ApXSw2NCkpOihUKCksRChaLHtrZXk6MSx2YWx1ZTplLm9yaWdpbmFsLnRva2Vuc0luUGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKSldKV0pLGgoYGRpdmAsbnVsbCxbYVsxOF18fD1oKGBkdGAse2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGB0b2tPdXQvZGF5YCwtMSksaChgZGRgLEp0LFtlLm9yaWdpbmFsLnN0b3JlRG93bj8oVCgpLGcoaSx7a2V5OjB9LFtDKGA/YCldLDY0KSk6KFQoKSxEKFose2tleToxLHZhbHVlOmUub3JpZ2luYWwudG9rZW5zT3V0UGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKSldKV0pLGgoYGRpdmAsbnVsbCxbYVsxOV18fD1oKGBkdGAse2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGB0b2tJbi9tb250aGAsLTEpLGgoYGRkYCxZdCxbZS5vcmlnaW5hbC5zdG9yZURvd24/KFQoKSxnKGkse2tleTowfSxbQyhgP2ApXSw2NCkpOihUKCksRChaLHtrZXk6MSx2YWx1ZTplLm9yaWdpbmFsLnRva2Vuc0luUGVyTW9udGh9LG51bGwsOCxbYHZhbHVlYF0pKV0pXSksaChgZGl2YCxudWxsLFthWzIwXXx8PWgoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYHRva091dC9tb250aGAsLTEpLGgoYGRkYCxYdCxbZS5vcmlnaW5hbC5zdG9yZURvd24/KFQoKSxnKGkse2tleTowfSxbQyhgP2ApXSw2NCkpOihUKCksRChaLHtrZXk6MSx2YWx1ZTplLm9yaWdpbmFsLnRva2Vuc091dFBlck1vbnRofSxudWxsLDgsW2B2YWx1ZWBdKSldKV0pLGgoYGRpdmAsbnVsbCxbYVsyMV18fD1oKGBkdGAse2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBjb3N0L21vbnRoYCwtMSksaChgZGRgLFp0LGwoZS5vcmlnaW5hbC5zdG9yZURvd24/YD9gOnYocSkoZS5vcmlnaW5hbC5jb3N0UGVyTW9udGhNaWNyb1VzZCkpLDEpXSksaChgZGl2YCxudWxsLFthWzIyXXx8PWgoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYGNvc3QvbW9udGggKHByb2ouKWAsLTEpLGgoYGRkYCx7Y2xhc3M6aihbYHRhYnVsYXItbnVtc2AsIWUub3JpZ2luYWwuc3RvcmVEb3duJiZHZShlLm9yaWdpbmFsLHYodykpLndpbGxFeGNlZWQ/YHRleHQtZGVzdHJ1Y3RpdmVgOnZvaWQgMF0pLHRpdGxlOiFlLm9yaWdpbmFsLnN0b3JlRG93biYmR2UoZS5vcmlnaW5hbCx2KHcpKS53aWxsRXhjZWVkP2BQcm9qZWN0ZWQgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGNvc3QvbW9udGggbGltaXRgOnZvaWQgMH0sbChlLm9yaWdpbmFsLnN0b3JlRG93bj9gP2A6R2UoZS5vcmlnaW5hbCx2KHcpKS50ZXh0KSwxMSxRdCldKV0pLHYoT2UpKGUub3JpZ2luYWwpLmxlbmd0aD8oVCgpLGcoYGRpdmAsJHQsWyhUKCEwKSxnKGksbnVsbCxfKHYoT2UpKGUub3JpZ2luYWwpLGU9PihUKCksZyhgc3BhbmAse2tleTplLmlkLGNsYXNzOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFtDKGwodihDZSlbZS5pZF0pK2AgYCwxKSx5KHR0LHtyYXRpbzplLnJhdGlvLGxhYmVsOnYoQ2UpW2UuaWRdLCJ2YWx1ZS10ZXh0IjpXZShlKX0sbnVsbCw4LFtgcmF0aW9gLGBsYWJlbGAsYHZhbHVlLXRleHRgXSldKSkpLDEyOCkpXSkpOk8oYGAsITApLGFbMjNdfHw9aChgcGAse2NsYXNzOmBtYi0xLjUgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTWVtYmVyc2AsLTEpLHkocHQseyJpZC1sYWJlbCI6YE5hbWVgLCJzZWNvbmRhcnktY29sdW1uLWxhYmVsIjpgR3JvdXBgLGVudHJpZXM6cGUoZS5vcmlnaW5hbCksInNlY29uZGFyeS12YWx1ZSI6Uixub3c6dih3KSwic291cmNlLXZhbHVlIjpzZX0sbnVsbCw4LFtgZW50cmllc2AsYG5vd2BdKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSw4LFtgbW9kZWxWYWx1ZWBdKSk6Z2UudmFsdWU/KFQoKSxEKGRlLHtrZXk6Mix0aXRsZTpgTm8gZ3JvdXBzIGNvbmZpZ3VyZWQuYCxkZXNjcmlwdGlvbjpgR3JhbnQgYSBncm91cCBhY2Nlc3MgZnJvbSB0aGUgQ29uZmlnIHBhZ2UncyBjaGFuZ2UgaGVscGVyLmB9LHtkZWZhdWx0OnIoKCk9Plt5KHYobikse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLG9uQ2xpY2s6YVsyXXx8PWU9PnYoZikuZ29UbyhgY29uZmlnYCx7aGVscGVyOmBncmFudGB9KX0se2RlZmF1bHQ6cigoKT0+Wy4uLmFbMjRdfHw9W0MoYE9wZW4gY2hhbmdlIGhlbHBlcmAsLTEpXV0pLF86MX0pXSksXzoxfSkpOihUKCksZyhgcGAsZW4sbChtZS52YWx1ZSksMSkpXSw2NCkpXSksXzoxfSldKSxfOjF9KSx5KHYodSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W2goYGRpdmAsdG4sW2goYGRpdmAsbnVsbCxbeSh2KGMpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMjVdfHw9W0MoYFVzZXJzYCwtMSldXSksXzoxfSksdihkKS5kYXRhPy51c2Vyc0ZpbGU/KFQoKSxEKHYoQikse2tleTowfSx7ZGVmYXVsdDpyKCgpPT5bQyhgRmlsZS1iYWNrZWQgdXNlcnMgbG9hZCBmcm9tIGArbCh2KGQpLmRhdGEudXNlcnNGaWxlKStgLmAsMSldKSxfOjF9KSk6TyhgYCwhMCldKSx5KE1lLHtmaWxlbmFtZTpgY29uc3VtZXJzLXVzZXJzLmNzdmAsYnVpbGQ6WWV9KV0pXSksXzoxfSkseSh2KGspLG51bGwse2RlZmF1bHQ6cigoKT0+W2IudmFsdWU9PT1gc2tlbGV0b25gPyhUKCksRCh2ZSx7a2V5OjAscm93czo1LGNvbHM6NX0pKTpiLnZhbHVlPT09YGVycm9yYD8oVCgpLEQoVSx7a2V5OjEsbWVzc2FnZTp2KG8pLmVycm9yLCJvbi1yZXRyeSI6dihvKS5yZWZyZXNofSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOihUKCksRChwdCx7a2V5OjIsImlkLWxhYmVsIjpgTmFtZWAsInNlY29uZGFyeS1jb2x1bW4tbGFiZWwiOmBHcm91cGAsZW50cmllczpiZS52YWx1ZSwic2Vjb25kYXJ5LXZhbHVlIjpSLCJlbXB0eS1tZXNzYWdlIjp4ZS52YWx1ZSxub3c6dih3KSwic291cmNlLXZhbHVlIjpzZSxzb3J0aW5nOnFlLnZhbHVlLCJvblVwZGF0ZTpzb3J0aW5nIjphWzNdfHw9ZT0+cWUudmFsdWU9ZX0sbnVsbCw4LFtgZW50cmllc2AsYGVtcHR5LW1lc3NhZ2VgLGBub3dgLGBzb3J0aW5nYF0pKV0pLF86MX0pXSksXzoxfSldKSl9fSksYW49e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sb249e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMmB9LHNuPXtjbGFzczpgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0yYH0sY249e2NsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYH0sbG49e2NsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYH0sdW49e2NsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYH0sZG49e2NsYXNzOmB0ZXh0LXNtYH0sZm49e2tleTowLGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0yIHRleHQtc21gfSxwbj17Y2xhc3M6YGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMmB9LG1uPXtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0saG49e2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxnbj17a2V5OjEsY2xhc3M6YHB5LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxfbj17Y2xhc3M6YGZsZXggZmxleC13cmFwIGdhcC0xLjVgfSx2bj17Y2xhc3M6YGZsZXggZmxleC13cmFwIGdhcC0xLjVgfSx5bj1tKHtfX25hbWU6YFVzZXJEZXRhaWxgLHByb3BzOnt1c2VySWQ6e319LGVtaXRzOltgY2xvc2VgXSxzZXR1cChvLHtlbWl0OnN9KXtsZXQgZD1vLGY9cyxtPXRlKCksYj1sZSgpLHg9SGUoKSx3PUgoKSxFPW5lKCkse25vdzpBLHN0YXJ0Omosc3RvcDppZX09QWUoKTtwKGopLGVlKGllKTtsZXQgTT1TKCgpPT5tLnVzYWdlPy51c2Vycy5maW5kKGU9PmUuaWQ9PT1kLnVzZXJJZCkpLE49UygoKT0+Yi5kYXRhPy51c2Vycy5maW5kKGU9PmUubmFtZT09PWQudXNlcklkKSksUD1TKCgpPT5tLm92ZXJ2aWV3Py5mZWF0dXJlcy51c2VyTW9kZWxTdGF0cz8/ITEpO2Z1bmN0aW9uIEYoKXtyZXR1cm4gYi5mZXRjaFVzZXJEZXRhaWwoZC51c2VySWQsdy53aW5kb3csdy5zcGFuLFAudmFsdWUpfXAoKCk9PntGKCkseC5yZWZyZXNoKCl9KSxlKFsoKT0+ZC51c2VySWQsKCk9PncucmFuZ2UsUF0sRik7bGV0IEk9UygoKT0+Yi5kZXRhaWxbZC51c2VySWRdKSxMPVMoKCk9PihJLnZhbHVlPy5yZXFTZXJpZXM/LmJ1Y2tldHM/P1tdKS5tYXAoZT0+dWUoZSxJLnZhbHVlPy5yZXFTZXJpZXM/LndpbmRvdz8/dy53aW5kb3cpKSksb2U9UygoKT0+W3tsYWJlbDpgUmVxdWVzdHNgLGRhdGE6SS52YWx1ZT8ucmVxU2VyaWVzPy5zZXJpZXNbMF0/LnBvaW50cz8/W10sY29sb3I6YC0tY2hhcnQtcmVxdWVzdHNgfV0pLFI9UygoKT0+KEkudmFsdWU/LmNvc3RTZXJpZXM/LmJ1Y2tldHM/P1tdKS5tYXAoZT0+dWUoZSxJLnZhbHVlPy5jb3N0U2VyaWVzPy53aW5kb3c/P3cud2luZG93KSkpLHo9UygoKT0+W3tsYWJlbDpgQ29zdGAsZGF0YTooSS52YWx1ZT8uY29zdFNlcmllcz8uc2VyaWVzWzBdPy5wb2ludHM/P1tdKS5tYXAoZT0+ZSksY29sb3I6YC0tY2hhcnQtY29zdGB9XSksZmU9UygoKT0+Vyh7bG9hZGluZzpJLnZhbHVlPy5sb2FkaW5nPz8hMSxoYXNEYXRhOkkudmFsdWU/LnJlcVNlcmllcyE9bnVsbCxlcnJvcjpJLnZhbHVlPy5yZXFFcnJvcj8/YGB9KSksaGU9UygoKT0+Vyh7bG9hZGluZzpJLnZhbHVlPy5sb2FkaW5nPz8hMSxoYXNEYXRhOkkudmFsdWU/LmNvc3RTZXJpZXMhPW51bGwsZXJyb3I6SS52YWx1ZT8uY29zdEVycm9yPz9gYH0pKSxfZT1TKCgpPT4hUC52YWx1ZXx8SS52YWx1ZT8ubW9kZWxUb3RhbHNVbmF2YWlsYWJsZT09PSEwKSx5ZT1TKCgpPT5bLi4uSS52YWx1ZT8ubW9kZWxUb3RhbHM/LnJvd3M/P1tdXS5zb3J0KChlLHQpPT4odC52YWx1ZXMuY29zdD8/dC52YWx1ZXMucmVxPz8wKS0oZS52YWx1ZXMuY29zdD8/ZS52YWx1ZXMucmVxPz8wKSkpLHhlPVMoKCk9Plcoe2xvYWRpbmc6SS52YWx1ZT8ubG9hZGluZz8/ITEsaGFzRGF0YTpJLnZhbHVlPy5tb2RlbFRvdGFscyE9bnVsbCxlcnJvcjpJLnZhbHVlPy5tb2RlbEVycm9yPz9gYH0pKSx3ZT1TKCgpPT54LmV2ZW50cy5maWx0ZXIoZT0+ZS51c2VyPT09ZC51c2VySWQpLnNsaWNlKDAsMTApKSxRPVMoKCk9Pk0udmFsdWU/T2UoTS52YWx1ZSk6W10pO2Z1bmN0aW9uIFRlKGUsdCxuKXtyZXR1cm4gZS5zdGFydHNXaXRoKGBjb3N0YCk/YCR7cSh0KX0gLyAke3Eobil9YDpgJHtHKHQpfSAvICR7RyhuKX1gfWxldCBFZT1TKCgpPT57bGV0IGU9TS52YWx1ZT8ubGltaXRzPy5jb3N0UGVyTW9udGhVU0Q7cmV0dXJuIU0udmFsdWV8fCFlP251bGw6TmUoTS52YWx1ZS5jb3N0UGVyTW9udGhNaWNyb1VzZCxNYXRoLnJvdW5kKGUqMWU2KSxBLnZhbHVlKX0pO3JldHVybihlLHMpPT57bGV0IGQ9cmUoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBUKCksZyhgZGl2YCxhbixbaChgZGl2YCxvbixbeSh2KG4pLHt0eXBlOmBidXR0b25gLHZhcmlhbnQ6YGdob3N0YCxzaXplOmBzbWAsb25DbGljazpzWzBdfHw9ZT0+ZihgY2xvc2VgKX0se2RlZmF1bHQ6cigoKT0+W3koZCx7aWNvbjp2KGEpLGNsYXNzOmBzaXplLTMuNWAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSksc1syXXx8PUMoYCBCYWNrIHRvIGRpcmVjdG9yeSBgLC0xKV0pLF86MX0pXSkseSh2KHUpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodih0KSxudWxsLHtkZWZhdWx0OnIoKCk9PltoKGBkaXZgLHNuLFt5KHYoYykse2NsYXNzOmBtaW4tdy0wIGJyZWFrLWFsbCBmb250LW1vbm9gfSx7ZGVmYXVsdDpyKCgpPT5bQyhsKG8udXNlcklkKSwxKV0pLF86MX0pLE4udmFsdWU/LmFkbWluPyhUKCksRCh2KEopLHtrZXk6MCx2YXJpYW50OmBkZXN0cnVjdGl2ZWB9LHtkZWZhdWx0OnIoKCk9PlsuLi5zWzNdfHw9W0MoYGFkbWluYCwtMSldXSksXzoxfSkpOk8oYGAsITApLE4udmFsdWU/LnNvdXJjZT8oVCgpLEQodihKKSx7a2V5OjEsdmFyaWFudDpgc2Vjb25kYXJ5YH0se2RlZmF1bHQ6cigoKT0+W0MobChOLnZhbHVlLnNvdXJjZSksMSldKSxfOjF9KSk6TyhgYCwhMCldKSxNLnZhbHVlPy5ncm91cHM/Lmxlbmd0aHx8TS52YWx1ZT8uZ3JvdXBOYW1lPyhUKCksRCh2KEIpLHtrZXk6MH0se2RlZmF1bHQ6cigoKT0+W0MoYCBNZW1iZXIgb2YgYCtsKChNLnZhbHVlPy5ncm91cHM/P1tNLnZhbHVlPy5ncm91cE5hbWVdKS5maWx0ZXIoQm9vbGVhbikuam9pbihgLCBgKSksMSldKSxfOjF9KSk6TyhgYCwhMCldKSxfOjF9KSxNLnZhbHVlPyhUKCksRCh2KGspLHtrZXk6MSxjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtIHNtOmdyaWQtY29scy00YH0se2RlZmF1bHQ6cigoKT0+W2goYGRpdmAsbnVsbCxbc1s1XXx8PWgoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFJlcXVlc3RzL2RheWAsLTEpLGgoYHBgLGNuLFt5KFose3ZhbHVlOk0udmFsdWUucmVxdWVzdHNQZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pXSldKSxoKGBkaXZgLG51bGwsW3NbNl18fD1oKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBDb3N0L2RheWAsLTEpLGgoYHBgLGxuLGwodihxKShNLnZhbHVlLmNvc3RQZXJEYXlNaWNyb1VzZCkpLDEpXSksaChgZGl2YCxudWxsLFtzWzddfHw9aChgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQ29zdC9tb250aGAsLTEpLGgoYHBgLHVuLGwodihxKShNLnZhbHVlLmNvc3RQZXJNb250aE1pY3JvVXNkKSksMSldKSxoKGBkaXZgLG51bGwsW3NbOF18fD1oKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBMaW1pdHNgLC0xKSxoKGBwYCxkbixsKHYoWSkoTS52YWx1ZS5saW1pdHMpKSwxKV0pXSksXzoxfSkpOihUKCksRCh2KGspLHtrZXk6MCxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx7ZGVmYXVsdDpyKCgpPT5bLi4uc1s0XXx8PVtDKGAgTm8gdXNhZ2Ugc2NvcGUgZm9yIHRoaXMgdXNlciB5ZXQg4oCUIGl0IGFwcGVhcnMgYWZ0ZXIgdGhlaXIgZmlyc3QgcmVxdWVzdC4gYCwtMSldXSksXzoxfSkpXSksXzoxfSksTS52YWx1ZSYmUS52YWx1ZS5sZW5ndGg/KFQoKSxEKHYodSkse2tleTowfSx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihjKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5zWzldfHw9W0MoYEhlYWRyb29tYCwtMSldXSksXzoxfSksRWUudmFsdWU/KFQoKSxEKHYoQikse2tleTowfSx7ZGVmYXVsdDpyKCgpPT5bQyhgQXQgdGhlIGN1cnJlbnQgcGFjZSwgY29zdC9tb250aCBydW5zIG91dCBhcm91bmQgYCtsKHYoSykoRWUudmFsdWUudG9JU09TdHJpbmcoKSkpK2AuYCwxKV0pLF86MX0pKTpPKGBgLCEwKV0pLF86MX0pLHkodihrKSx7Y2xhc3M6YGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC00IGdhcC15LTEuNWB9LHtkZWZhdWx0OnIoKCk9PlsoVCghMCksZyhpLG51bGwsXyhRLnZhbHVlLGU9PihUKCksZyhgc3BhbmAse2tleTplLmlkLGNsYXNzOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFtDKGwodihDZSlbZS5pZF0pK2AgYCwxKSx5KHR0LHtyYXRpbzplLnJhdGlvLGxhYmVsOnYoQ2UpW2UuaWRdLCJ2YWx1ZS10ZXh0IjpUZShlLmlkLGUudXNlZCxlLmxpbWl0KX0sbnVsbCw4LFtgcmF0aW9gLGBsYWJlbGAsYHZhbHVlLXRleHRgXSldKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9KSk6TyhgYCwhMCkseSh2KHUpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodih0KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYoYyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uc1sxMF18fD1bQyhgUmVxdWVzdHMgb3ZlciB0aW1lYCwtMSldXSksXzoxfSldKSxfOjF9KSx5KHYoayksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bZmUudmFsdWU9PT1gc2tlbGV0b25gPyhUKCksRChCZSx7a2V5OjB9KSk6ZmUudmFsdWU9PT1gZXJyb3JgPyhUKCksRChVLHtrZXk6MSxtZXNzYWdlOkkudmFsdWU/LnJlcUVycm9yPz9gYCwib24tcmV0cnkiOkZ9LG51bGwsOCxbYG1lc3NhZ2VgXSkpOihUKCksRChWZSx7a2V5OjIsbGFiZWxzOkwudmFsdWUsZGF0YXNldHM6b2UudmFsdWUsYXJpYUxhYmVsOmBSZXF1ZXN0cyBvdmVyIHRpbWUgZm9yICR7by51c2VySWR9YH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgLGBhcmlhTGFiZWxgXSkpXSksXzoxfSldKSxfOjF9KSx5KHYodSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihjKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5zWzExXXx8PVtDKGBDb3N0IG92ZXIgdGltZWAsLTEpXV0pLF86MX0pXSksXzoxfSkseSh2KGspLG51bGwse2RlZmF1bHQ6cigoKT0+W2hlLnZhbHVlPT09YHNrZWxldG9uYD8oVCgpLEQoQmUse2tleTowfSkpOmhlLnZhbHVlPT09YGVycm9yYD8oVCgpLEQoVSx7a2V5OjEsbWVzc2FnZTpJLnZhbHVlPy5jb3N0RXJyb3I/P2BgLCJvbi1yZXRyeSI6Rn0sbnVsbCw4LFtgbWVzc2FnZWBdKSk6KFQoKSxEKFZlLHtrZXk6MixsYWJlbHM6Ui52YWx1ZSxkYXRhc2V0czp6LnZhbHVlLCJ2YWx1ZS1mb3JtYXR0ZXIiOnYocSksYXJpYUxhYmVsOmBDb3N0IG92ZXIgdGltZSBmb3IgJHtvLnVzZXJJZH1gfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2AsYHZhbHVlLWZvcm1hdHRlcmAsYGFyaWFMYWJlbGBdKSldKSxfOjF9KV0pLF86MX0pLHkodih1KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYodCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KGMpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLnNbMTJdfHw9W0MoYE1vZGVscyB1c2VkYCwtMSldXSksXzoxfSldKSxfOjF9KSx5KHYoaykse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0zYH0se2RlZmF1bHQ6cigoKT0+W3koemUse3dpbmRvdzp2KHcpLndpbmRvdyxzcGFuOnYodykuc3Bhbn0sbnVsbCw4LFtgd2luZG93YCxgc3BhbmBdKSxfZS52YWx1ZT8oVCgpLEQodihzZSkse2tleTowLHZhcmlhbnQ6YHdhcm5gfSx7ZGVmYXVsdDpyKCgpPT5beSh2KFYpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLnNbMTNdfHw9W0MoYFBlci11c2VyLW1vZGVsIHN0YXRpc3RpY3MgYXJlIG9mZmAsLTEpXV0pLF86MX0pLHkodihjZSkse2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSx7ZGVmYXVsdDpyKCgpPT5bc1sxNV18fD1oKGBzcGFuYCxudWxsLFtDKGBFbmFibGUgYCksaChgY29kZWAse2NsYXNzOmBmb250LW1vbm8gdGV4dC14c2B9LGBhZG1pbi5zdGF0cy51c2VyTW9kZWxgKSxDKGAgaW4gdGhlIG1pZGRsZXdhcmUgY29uZmlnIHRvIHNlZSBhIHBlci1tb2RlbCBicmVha2Rvd24gZm9yIHRoaXMgdXNlci5gKV0sLTEpLHkodihuKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsb25DbGljazpzWzFdfHw9ZT0+dihFKS5nb1RvKGBjb25maWdgKX0se2RlZmF1bHQ6cigoKT0+Wy4uLnNbMTRdfHw9W0MoYE9wZW4gQ29uZmlnYCwtMSldXSksXzoxfSldKSxfOjF9KV0pLF86MX0pKTp4ZS52YWx1ZT09PWBza2VsZXRvbmA/KFQoKSxEKHZlLHtrZXk6MSxyb3dzOjMsY29sczozfSkpOnhlLnZhbHVlPT09YGVycm9yYD8oVCgpLEQoVSx7a2V5OjIsbWVzc2FnZTpJLnZhbHVlPy5tb2RlbEVycm9yPz9gYCwib24tcmV0cnkiOkZ9LG51bGwsOCxbYG1lc3NhZ2VgXSkpOnllLnZhbHVlLmxlbmd0aD8oVCgpLEQodihtZSkse2tleTo0fSx7ZGVmYXVsdDpyKCgpPT5beSh2KGJlKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYoZ2UpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihYKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5zWzE2XXx8PVtDKGBNb2RlbGAsLTEpXV0pLF86MX0pLHkodihYKSx7Y2xhc3M6YHRleHQtcmlnaHRgfSx7ZGVmYXVsdDpyKCgpPT5bLi4uc1sxN118fD1bQyhgUmVxdWVzdHNgLC0xKV1dKSxfOjF9KSx5KHYoWCkse2NsYXNzOmB0ZXh0LXJpZ2h0YH0se2RlZmF1bHQ6cigoKT0+Wy4uLnNbMThdfHw9W0MoYENvc3RgLC0xKV1dKSxfOjF9KV0pLF86MX0pXSksXzoxfSkseSh2KHBlKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsoVCghMCksZyhpLG51bGwsXyh5ZS52YWx1ZSxlPT4oVCgpLEQodihnZSkse2tleTplLmlkfSx7ZGVmYXVsdDpyKCgpPT5beSh2KFNlKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KGFlLHtpZDplLmlkfSxudWxsLDgsW2BpZGBdKV0pLF86Mn0sMTAyNCkseSh2KFNlKSx7Y2xhc3M6YHRleHQtcmlnaHQgdGFidWxhci1udW1zYH0se2RlZmF1bHQ6cigoKT0+W3koWix7dmFsdWU6ZS52YWx1ZXMucmVxPz8wfSxudWxsLDgsW2B2YWx1ZWBdKV0pLF86Mn0sMTAyNCkseSh2KFNlKSx7Y2xhc3M6YHRleHQtcmlnaHQgdGFidWxhci1udW1zYH0se2RlZmF1bHQ6cigoKT0+W0MobCh2KHEpKGUudmFsdWVzLmNvc3Q/PzApKSwxKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwMjQpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pKTooVCgpLEQoZGUse2tleTozLHRpdGxlOmBObyB0cmFmZmljIGluIHRoaXMgcmFuZ2UuYH0se2RlZmF1bHQ6cigoKT0+W3koa2UpXSksXzoxfSkpXSksXzoxfSldKSxfOjF9KSx5KHYodSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihjKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5zWzE5XXx8PVtDKGBSZWNlbnQgZXJyb3JzYCwtMSldXSksXzoxfSldKSxfOjF9KSx5KHYoayksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bd2UudmFsdWUubGVuZ3RoPyhUKCksZyhgdWxgLGZuLFsoVCghMCksZyhpLG51bGwsXyh3ZS52YWx1ZSwoZSx0KT0+KFQoKSxnKGBsaWAse2tleTp0LGNsYXNzOmBib3JkZXItYiBwYi0yIGxhc3Q6Ym9yZGVyLTAgbGFzdDpwYi0wYH0sW2goYHBgLHBuLFt5KHYoSikse3ZhcmlhbnQ6YHNlY29uZGFyeWB9LHtkZWZhdWx0OnIoKCk9PltDKGwoZS5raW5kKSwxKV0pLF86Mn0sMTAyNCksaChgc3BhbmAsbW4sbCh2KEspKGUudGltZSkpLDEpXSksaChgcGAsaG4sbChlLm1lc3NhZ2UpLDEpXSkpKSwxMjgpKV0pKTooVCgpLGcoYHBgLGduLGBub25lIGluIHRoZSBjdXJyZW50IGV2ZW50IHdpbmRvd2ApKV0pLF86MX0pXSksXzoxfSksTi52YWx1ZT8ucHJvdmlkZXJzPy5sZW5ndGh8fE4udmFsdWU/Lm1vZGVscz8ubGVuZ3RoPyhUKCksRCh2KHUpLHtrZXk6MX0se2RlZmF1bHQ6cigoKT0+W3kodih0KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYoYyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uc1syMF18fD1bQyhgUGVyc29uYWwgZ3JhbnRgLC0xKV1dKSxfOjF9KSx5KHYoQiksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uc1syMV18fD1bQyhgQWNjZXNzIHRoaXMgdXNlciBoYXMgYmV5b25kIHRoZWlyIGdyb3VwJ3Mgb3duLmAsLTEpXV0pLF86MX0pXSksXzoxfSkseSh2KGspLHtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBzbTpncmlkLWNvbHMtMmB9LHtkZWZhdWx0OnIoKCk9PltoKGBkaXZgLG51bGwsW3NbMjJdfHw9aChgcGAse2NsYXNzOmBtYi0xLjUgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUHJvdmlkZXJzYCwtMSksaChgZGl2YCxfbixbKFQoITApLGcoaSxudWxsLF8oTi52YWx1ZT8ucHJvdmlkZXJzPz9bXSxlPT4oVCgpLEQodihKKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YG1heC13LWZ1bGwgdHJ1bmNhdGUgZm9udC1tb25vIGZvbnQtbm9ybWFsYCx0aXRsZTplfSx7ZGVmYXVsdDpyKCgpPT5bQyhsKGUpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpKSwxMjgpKV0pXSksaChgZGl2YCxudWxsLFtzWzIzXXx8PWgoYHBgLHtjbGFzczpgbWItMS41IHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYE1vZGVsc2AsLTEpLGgoYGRpdmAsdm4sWyhUKCEwKSxnKGksbnVsbCxfKE4udmFsdWU/Lm1vZGVscz8/W10sZT0+KFQoKSxEKGFlLHtrZXk6ZSxpZDplfSxudWxsLDgsW2BpZGBdKSkpLDEyOCkpXSldKV0pLF86MX0pXSksXzoxfSkpOk8oYGAsITApXSl9fX0pLGJuPXtrZXk6MSxjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHhuPW0oe19fbmFtZTpgQ29uc3VtZXJzUGFnZWAsc2V0dXAoZSl7bGV0IHQ9bmUoKSxuPVMoKCk9PnQucGFyYW1zLnVzZXIpLGk9UygoKT0+dC5wYXJhbXMudmlldz09PWBtYXRyaXhgP2BtYXRyaXhgOmBkaXJlY3RvcnlgKSxhPVMoKCk9PkplKHQucGFyYW1zLm1hdHJpeCkpO2Z1bmN0aW9uIG8oZSl7aWYoZSE9PWBkaXJlY3RvcnlgJiZlIT09YG1hdHJpeGApcmV0dXJuO2xldHt1c2VyOm4sLi4ucn09dC5wYXJhbXM7dC5nb1RvKGBjb25zdW1lcnNgLHsuLi5yLHZpZXc6ZX0pfWZ1bmN0aW9uIHMoZSl7bGV0e3VzZXI6bixtYXRyaXg6ciwuLi5pfT10LnBhcmFtcztpZihlPT09YG1vZGVsc2Ape3QuZ29UbyhgY29uc3VtZXJzYCx7Li4uaSx2aWV3OmBtYXRyaXhgfSk7cmV0dXJufXQuZ29UbyhgY29uc3VtZXJzYCx7Li4uaSx2aWV3OmBtYXRyaXhgLG1hdHJpeDplfSl9ZnVuY3Rpb24gYygpe2xldHt1c2VyOmUsLi4ubn09dC5wYXJhbXM7dC5nb1RvKGBjb25zdW1lcnNgLG4pfXJldHVybihlLHQpPT5uLnZhbHVlPyhUKCksRCh5bix7a2V5OjAsInVzZXItaWQiOm4udmFsdWUsb25DbG9zZTpjfSxudWxsLDgsW2B1c2VyLWlkYF0pKTooVCgpLGcoYGRpdmAsYm4sW3kodihSKSx7Im1vZGVsLXZhbHVlIjppLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvfSx7ZGVmYXVsdDpyKCgpPT5beSh2KG9lKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYoeikse3ZhbHVlOmBkaXJlY3RvcnlgfSx7ZGVmYXVsdDpyKCgpPT5bLi4udFswXXx8PVtDKGBEaXJlY3RvcnlgLC0xKV1dKSxfOjF9KSx5KHYoeikse3ZhbHVlOmBtYXRyaXhgfSx7ZGVmYXVsdDpyKCgpPT5bLi4udFsxXXx8PVtDKGBBY2Nlc3MgbWF0cml4YCwtMSldXSksXzoxfSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pLGkudmFsdWU9PT1gZGlyZWN0b3J5YD8oVCgpLEQocm4se2tleTowfSkpOihUKCksRCgkZSx7a2V5OjEsa2luZDphLnZhbHVlLCJvblVwZGF0ZTpraW5kIjpzfSxudWxsLDgsW2BraW5kYF0pKV0pKX19KTtleHBvcnR7eG4gYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"DataTable-CQxRVDSY.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FyIGFzIGUsRnIgYXMgdCxIbiBhcyBuLEp0IGFzIHIsT24gYXMgaSxRciBhcyBhLFNpIGFzIG8sViBhcyBzLFcgYXMgYyxfbiBhcyBsLGFuIGFzIHUsY24gYXMgZCxjciBhcyBmLGR0IGFzIHAsZnQgYXMgbSxnaSBhcyBoLGhuIGFzIGcsaW4gYXMgXyxqciBhcyBlZSxsaSBhcyB0ZSxsciBhcyB2LG1uIGFzIG5lLG5yIGFzIHksb2kgYXMgcmUsb24gYXMgYixwdCBhcyBpZSxzbiBhcyB4LHQgYXMgYWUsdXIgYXMgb2UseWkgYXMgU31mcm9tIi4vU2tlbGV0b24tQjB6aUI2T2QuanMiO3ZhciBzZT17ImRhdGEtc2xvdCI6YHRhYmxlLWNvbnRhaW5lcmAsY2xhc3M6YHJlbGF0aXZlIHctZnVsbCBvdmVyZmxvdy14LWF1dG9gfSxjZT1sKHtfX25hbWU6YFRhYmxlYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9Pih5KCksZChgZGl2YCxzZSxbdShgdGFibGVgLHsiZGF0YS1zbG90IjpgdGFibGVgLGNsYXNzOlMoaChjKShgdy1mdWxsIGNhcHRpb24tYm90dG9tIHRleHQtc21gLHQuY2xhc3MpKX0sW3YoZS4kc2xvdHMsYGRlZmF1bHRgKV0sMildKSl9fSksbGU9bCh7X19uYW1lOmBUYWJsZUJvZHlgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KHkoKSxkKGB0Ym9keWAseyJkYXRhLXNsb3QiOmB0YWJsZS1ib2R5YCxjbGFzczpTKGgoYykoYFsmX3RyOmxhc3QtY2hpbGRdOmJvcmRlci0wYCx0LmNsYXNzKSl9LFt2KGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxDPWwoe19fbmFtZTpgVGFibGVDZWxsYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9Pih5KCksZChgdGRgLHsiZGF0YS1zbG90IjpgdGFibGUtY2VsbGAsY2xhc3M6UyhoKGMpKGBwLTIgYWxpZ24tbWlkZGxlIHdoaXRlc3BhY2Utbm93cmFwIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwci0wYCx0LmNsYXNzKSl9LFt2KGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSx3PWwoe19fbmFtZTpgVGFibGVSb3dgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KHkoKSxkKGB0cmAseyJkYXRhLXNsb3QiOmB0YWJsZS1yb3dgLGNsYXNzOlMoaChjKShgaG92ZXI6YmctbXV0ZWQvNTAgZGF0YS1bc3RhdGU9c2VsZWN0ZWRdOmJnLW11dGVkIGJvcmRlci1iIHRyYW5zaXRpb24tY29sb3JzIGhhcy1hcmlhLWV4cGFuZGVkOmJnLW11dGVkLzUwYCx0LmNsYXNzKSl9LFt2KGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSx1ZT17Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEwYH0sZGU9bCh7X19uYW1lOmBUYWJsZUVtcHR5YCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX0sY29sc3Bhbjp7ZGVmYXVsdDoxfX0sc2V0dXAoZSl7bGV0IHI9ZSxpPXMocixgY2xhc3NgKTtyZXR1cm4oZSxhKT0+KHkoKSxiKHcsbnVsbCx7ZGVmYXVsdDp0KCgpPT5bZyhDLG4oe2NsYXNzOmgoYykoYHAtNCB3aGl0ZXNwYWNlLW5vd3JhcCBhbGlnbi1taWRkbGUgdGV4dC1zbSB0ZXh0LWZvcmVncm91bmRgLHIuY2xhc3MpfSxoKGkpKSx7ZGVmYXVsdDp0KCgpPT5bdShgZGl2YCx1ZSxbdihlLiRzbG90cyxgZGVmYXVsdGApXSldKSxfOjN9LDE2LFtgY2xhc3NgXSldKSxfOjN9KSl9fSksVD1sKHtfX25hbWU6YFRhYmxlSGVhZGAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLG4pPT4oeSgpLGQoYHRoYCx7ImRhdGEtc2xvdCI6YHRhYmxlLWhlYWRgLGNsYXNzOlMoaChjKShgdGV4dC1mb3JlZ3JvdW5kIGgtMTAgcHgtMiB0ZXh0LWxlZnQgYWxpZ24tbWlkZGxlIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwci0wYCx0LmNsYXNzKSl9LFt2KGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxFPWwoe19fbmFtZTpgVGFibGVIZWFkZXJgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KHkoKSxkKGB0aGVhZGAseyJkYXRhLXNsb3QiOmB0YWJsZS1oZWFkZXJgLGNsYXNzOlMoaChjKShgWyZfdHJdOmJvcmRlci1iYCx0LmNsYXNzKSl9LFt2KGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxmZT1sKHtfX25hbWU6YFNrZWxldG9uVGFibGVgLHByb3BzOntyb3dzOntkZWZhdWx0OjV9LGNvbHM6e2RlZmF1bHQ6NH19LHNldHVwKGUpe3JldHVybihuLGkpPT4oeSgpLGIoaChjZSksbnVsbCx7ZGVmYXVsdDp0KCgpPT5bZyhoKEUpLG51bGwse2RlZmF1bHQ6dCgoKT0+W2coaCh3KSxudWxsLHtkZWZhdWx0OnQoKCk9PlsoeSghMCksZChyLG51bGwsZihlLmNvbHMsZT0+KHkoKSxiKGgoVCkse2tleTplfSx7ZGVmYXVsdDp0KCgpPT5bZyhoKGFlKSx7Y2xhc3M6YGgtNCB3LTE2YH0pXSksXzoxfSkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSksZyhoKGxlKSxudWxsLHtkZWZhdWx0OnQoKCk9PlsoeSghMCksZChyLG51bGwsZihlLnJvd3Msbj0+KHkoKSxiKGgodykse2tleTpufSx7ZGVmYXVsdDp0KCgpPT5bKHkoITApLGQocixudWxsLGYoZS5jb2xzLGU9Pih5KCksYihoKEMpLHtrZXk6ZX0se2RlZmF1bHQ6dCgoKT0+W2coaChhZSkse2NsYXNzOmBoLTQgdy1mdWxsIG1heC13LTMyYH0pXSksXzoxfSkpKSwxMjgpKV0pLF86MX0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0pKX19KTtmdW5jdGlvbiBEKGUsdCl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gP2UodCk6ZX1mdW5jdGlvbiBPKGUsdCl7cmV0dXJuIG49Pnt0LnNldFN0YXRlKHQ9Pih7Li4udCxbZV06RChuLHRbZV0pfSkpfX1mdW5jdGlvbiBrKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRnVuY3Rpb259ZnVuY3Rpb24gcGUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoZT0+dHlwZW9mIGU9PWBudW1iZXJgKX1mdW5jdGlvbiBtZShlLHQpe2xldCBuPVtdLHI9ZT0+e2UuZm9yRWFjaChlPT57bi5wdXNoKGUpO2xldCBpPXQoZSk7aSE9bnVsbCYmaS5sZW5ndGgmJnIoaSl9KX07cmV0dXJuIHIoZSksbn1mdW5jdGlvbiBBKGUsdCxuKXtsZXQgcj1bXSxpO3JldHVybiBhPT57bGV0IG87bi5rZXkmJm4uZGVidWcmJihvPURhdGUubm93KCkpO2xldCBzPWUoYSk7aWYoIShzLmxlbmd0aCE9PXIubGVuZ3RofHxzLnNvbWUoKGUsdCk9PnJbdF0hPT1lKSkpcmV0dXJuIGk7cj1zO2xldCBjO2lmKG4ua2V5JiZuLmRlYnVnJiYoYz1EYXRlLm5vdygpKSxpPXQoLi4ucyksbj09bnVsbHx8bi5vbkNoYW5nZT09bnVsbHx8bi5vbkNoYW5nZShpKSxuLmtleSYmbi5kZWJ1ZyYmbiE9bnVsbCYmbi5kZWJ1ZygpKXtsZXQgZT1NYXRoLnJvdW5kKChEYXRlLm5vdygpLW8pKjEwMCkvMTAwLHQ9TWF0aC5yb3VuZCgoRGF0ZS5ub3coKS1jKSoxMDApLzEwMCxyPXQvMTYsaT0oZSx0KT0+e2ZvcihlPVN0cmluZyhlKTtlLmxlbmd0aDx0OyllPWAgYCtlO3JldHVybiBlfTtjb25zb2xlLmluZm8oYCVj4o+xICR7aSh0LDUpfSAvJHtpKGUsNSl9IG1zYCxgCiAgICAgICAgICAgIGZvbnQtc2l6ZTogLjZyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICBjb2xvcjogaHNsKCR7TWF0aC5tYXgoMCxNYXRoLm1pbigxMjAtMTIwKnIsMTIwKSl9ZGVnIDEwMCUgMzElKTtgLG4/LmtleSl9cmV0dXJuIGl9fWZ1bmN0aW9uIGooZSx0LG4scil7cmV0dXJue2RlYnVnOigpPT5lPy5kZWJ1Z0FsbD8/ZVt0XSxrZXk6ITEsb25DaGFuZ2U6cn19ZnVuY3Rpb24gaGUoZSx0LG4scil7bGV0IGk9e2lkOmAke3QuaWR9XyR7bi5pZH1gLHJvdzp0LGNvbHVtbjpuLGdldFZhbHVlOigpPT50LmdldFZhbHVlKHIpLHJlbmRlclZhbHVlOigpPT5pLmdldFZhbHVlKCk/P2Uub3B0aW9ucy5yZW5kZXJGYWxsYmFja1ZhbHVlLGdldENvbnRleHQ6QSgoKT0+W2Usbix0LGldLChlLHQsbixyKT0+KHt0YWJsZTplLGNvbHVtbjp0LHJvdzpuLGNlbGw6cixnZXRWYWx1ZTpyLmdldFZhbHVlLHJlbmRlclZhbHVlOnIucmVuZGVyVmFsdWV9KSxqKGUub3B0aW9ucyxgZGVidWdDZWxsc2AsYGNlbGwuZ2V0Q29udGV4dGApKX07cmV0dXJuIGUuX2ZlYXR1cmVzLmZvckVhY2gocj0+e3IuY3JlYXRlQ2VsbD09bnVsbHx8ci5jcmVhdGVDZWxsKGksbix0LGUpfSx7fSksaX1mdW5jdGlvbiBnZShlLHQsbixyKXtsZXQgaT17Li4uZS5fZ2V0RGVmYXVsdENvbHVtbkRlZigpLC4uLnR9LGE9aS5hY2Nlc3NvcktleSxvPWkuaWQ/PyhhP3R5cGVvZiBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VBbGw9PWBmdW5jdGlvbmA/YS5yZXBsYWNlQWxsKGAuYCxgX2ApOmEucmVwbGFjZSgvXC4vZyxgX2ApOnZvaWQgMCk/Pyh0eXBlb2YgaS5oZWFkZXI9PWBzdHJpbmdgP2kuaGVhZGVyOnZvaWQgMCkscztpZihpLmFjY2Vzc29yRm4/cz1pLmFjY2Vzc29yRm46YSYmKHM9YS5pbmNsdWRlcyhgLmApP2U9PntsZXQgdD1lO2ZvcihsZXQgZSBvZiBhLnNwbGl0KGAuYCkpdD10Py5bZV07cmV0dXJuIHR9OmU9PmVbaS5hY2Nlc3NvcktleV0pLCFvKXRocm93IEVycm9yKCk7bGV0IGM9e2lkOmAke1N0cmluZyhvKX1gLGFjY2Vzc29yRm46cyxwYXJlbnQ6cixkZXB0aDpuLGNvbHVtbkRlZjppLGNvbHVtbnM6W10sZ2V0RmxhdENvbHVtbnM6QSgoKT0+WyEwXSwoKT0+W2MsLi4uYy5jb2x1bW5zPy5mbGF0TWFwKGU9PmUuZ2V0RmxhdENvbHVtbnMoKSldLGooZS5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBjb2x1bW4uZ2V0RmxhdENvbHVtbnNgKSksZ2V0TGVhZkNvbHVtbnM6QSgoKT0+W2UuX2dldE9yZGVyQ29sdW1uc0ZuKCldLGU9Pnt2YXIgdDtyZXR1cm4odD1jLmNvbHVtbnMpIT1udWxsJiZ0Lmxlbmd0aD9lKGMuY29sdW1ucy5mbGF0TWFwKGU9PmUuZ2V0TGVhZkNvbHVtbnMoKSkpOltjXX0saihlLm9wdGlvbnMsYGRlYnVnQ29sdW1uc2AsYGNvbHVtbi5nZXRMZWFmQ29sdW1uc2ApKX07Zm9yKGxldCB0IG9mIGUuX2ZlYXR1cmVzKXQuY3JlYXRlQ29sdW1uPT1udWxsfHx0LmNyZWF0ZUNvbHVtbihjLGUpO3JldHVybiBjfXZhciBNPWBkZWJ1Z0hlYWRlcnNgO2Z1bmN0aW9uIF9lKGUsdCxuKXtsZXQgcj17aWQ6bi5pZD8/dC5pZCxjb2x1bW46dCxpbmRleDpuLmluZGV4LGlzUGxhY2Vob2xkZXI6ISFuLmlzUGxhY2Vob2xkZXIscGxhY2Vob2xkZXJJZDpuLnBsYWNlaG9sZGVySWQsZGVwdGg6bi5kZXB0aCxzdWJIZWFkZXJzOltdLGNvbFNwYW46MCxyb3dTcGFuOjAsaGVhZGVyR3JvdXA6bnVsbCxnZXRMZWFmSGVhZGVyczooKT0+e2xldCBlPVtdLHQ9bj0+e24uc3ViSGVhZGVycyYmbi5zdWJIZWFkZXJzLmxlbmd0aCYmbi5zdWJIZWFkZXJzLm1hcCh0KSxlLnB1c2gobil9O3JldHVybiB0KHIpLGV9LGdldENvbnRleHQ6KCk9Pih7dGFibGU6ZSxoZWFkZXI6cixjb2x1bW46dH0pfTtyZXR1cm4gZS5fZmVhdHVyZXMuZm9yRWFjaCh0PT57dC5jcmVhdGVIZWFkZXI9PW51bGx8fHQuY3JlYXRlSGVhZGVyKHIsZSl9KSxyfXZhciB2ZT17Y3JlYXRlVGFibGU6ZT0+e2UuZ2V0SGVhZGVyR3JvdXBzPUEoKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnQsZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcucmlnaHRdLCh0LG4scixpKT0+e2xldCBhPXI/Lm1hcChlPT5uLmZpbmQodD0+dC5pZD09PWUpKS5maWx0ZXIoQm9vbGVhbik/P1tdLG89aT8ubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKT8/W10scz1uLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZS5pZCkpJiYhKGkhPW51bGwmJmkuaW5jbHVkZXMoZS5pZCkpKTtyZXR1cm4gTih0LFsuLi5hLC4uLnMsLi4ub10sZSl9LGooZS5vcHRpb25zLE0sYGdldEhlYWRlckdyb3Vwc2ApKSxlLmdldENlbnRlckhlYWRlckdyb3Vwcz1BKCgpPT5bZS5nZXRBbGxDb2x1bW5zKCksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwodCxuLHIsaSk9PihuPW4uZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlLmlkKSkmJiEoaSE9bnVsbCYmaS5pbmNsdWRlcyhlLmlkKSkpLE4odCxuLGUsYGNlbnRlcmApKSxqKGUub3B0aW9ucyxNLGBnZXRDZW50ZXJIZWFkZXJHcm91cHNgKSksZS5nZXRMZWZ0SGVhZGVyR3JvdXBzPUEoKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLCh0LG4scik9Pk4odCxyPy5tYXAoZT0+bi5maW5kKHQ9PnQuaWQ9PT1lKSkuZmlsdGVyKEJvb2xlYW4pPz9bXSxlLGBsZWZ0YCksaihlLm9wdGlvbnMsTSxgZ2V0TGVmdEhlYWRlckdyb3Vwc2ApKSxlLmdldFJpZ2h0SGVhZGVyR3JvdXBzPUEoKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwodCxuLHIpPT5OKHQscj8ubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKT8/W10sZSxgcmlnaHRgKSxqKGUub3B0aW9ucyxNLGBnZXRSaWdodEhlYWRlckdyb3Vwc2ApKSxlLmdldEZvb3Rlckdyb3Vwcz1BKCgpPT5bZS5nZXRIZWFkZXJHcm91cHMoKV0sZT0+Wy4uLmVdLnJldmVyc2UoKSxqKGUub3B0aW9ucyxNLGBnZXRGb290ZXJHcm91cHNgKSksZS5nZXRMZWZ0Rm9vdGVyR3JvdXBzPUEoKCk9PltlLmdldExlZnRIZWFkZXJHcm91cHMoKV0sZT0+Wy4uLmVdLnJldmVyc2UoKSxqKGUub3B0aW9ucyxNLGBnZXRMZWZ0Rm9vdGVyR3JvdXBzYCkpLGUuZ2V0Q2VudGVyRm9vdGVyR3JvdXBzPUEoKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxlPT5bLi4uZV0ucmV2ZXJzZSgpLGooZS5vcHRpb25zLE0sYGdldENlbnRlckZvb3Rlckdyb3Vwc2ApKSxlLmdldFJpZ2h0Rm9vdGVyR3JvdXBzPUEoKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksaihlLm9wdGlvbnMsTSxgZ2V0UmlnaHRGb290ZXJHcm91cHNgKSksZS5nZXRGbGF0SGVhZGVycz1BKCgpPT5bZS5nZXRIZWFkZXJHcm91cHMoKV0sZT0+ZS5tYXAoZT0+ZS5oZWFkZXJzKS5mbGF0KCksaihlLm9wdGlvbnMsTSxgZ2V0RmxhdEhlYWRlcnNgKSksZS5nZXRMZWZ0RmxhdEhlYWRlcnM9QSgoKT0+W2UuZ2V0TGVmdEhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxqKGUub3B0aW9ucyxNLGBnZXRMZWZ0RmxhdEhlYWRlcnNgKSksZS5nZXRDZW50ZXJGbGF0SGVhZGVycz1BKCgpPT5bZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKV0sZT0+ZS5tYXAoZT0+ZS5oZWFkZXJzKS5mbGF0KCksaihlLm9wdGlvbnMsTSxgZ2V0Q2VudGVyRmxhdEhlYWRlcnNgKSksZS5nZXRSaWdodEZsYXRIZWFkZXJzPUEoKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLGU9PmUubWFwKGU9PmUuaGVhZGVycykuZmxhdCgpLGooZS5vcHRpb25zLE0sYGdldFJpZ2h0RmxhdEhlYWRlcnNgKSksZS5nZXRDZW50ZXJMZWFmSGVhZGVycz1BKCgpPT5bZS5nZXRDZW50ZXJGbGF0SGVhZGVycygpXSxlPT5lLmZpbHRlcihlPT57dmFyIHQ7cmV0dXJuISgodD1lLnN1YkhlYWRlcnMpIT1udWxsJiZ0Lmxlbmd0aCl9KSxqKGUub3B0aW9ucyxNLGBnZXRDZW50ZXJMZWFmSGVhZGVyc2ApKSxlLmdldExlZnRMZWFmSGVhZGVycz1BKCgpPT5bZS5nZXRMZWZ0RmxhdEhlYWRlcnMoKV0sZT0+ZS5maWx0ZXIoZT0+e3ZhciB0O3JldHVybiEoKHQ9ZS5zdWJIZWFkZXJzKSE9bnVsbCYmdC5sZW5ndGgpfSksaihlLm9wdGlvbnMsTSxgZ2V0TGVmdExlYWZIZWFkZXJzYCkpLGUuZ2V0UmlnaHRMZWFmSGVhZGVycz1BKCgpPT5bZS5nZXRSaWdodEZsYXRIZWFkZXJzKCldLGU9PmUuZmlsdGVyKGU9Pnt2YXIgdDtyZXR1cm4hKCh0PWUuc3ViSGVhZGVycykhPW51bGwmJnQubGVuZ3RoKX0pLGooZS5vcHRpb25zLE0sYGdldFJpZ2h0TGVhZkhlYWRlcnNgKSksZS5nZXRMZWFmSGVhZGVycz1BKCgpPT5bZS5nZXRMZWZ0SGVhZGVyR3JvdXBzKCksZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKSxlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLChlLHQsbik9PlsuLi5lWzBdPy5oZWFkZXJzPz9bXSwuLi50WzBdPy5oZWFkZXJzPz9bXSwuLi5uWzBdPy5oZWFkZXJzPz9bXV0ubWFwKGU9PmUuZ2V0TGVhZkhlYWRlcnMoKSkuZmxhdCgpLGooZS5vcHRpb25zLE0sYGdldExlYWZIZWFkZXJzYCkpfX07ZnVuY3Rpb24gTihlLHQsbixyKXtsZXQgaT0wLGE9ZnVuY3Rpb24oZSx0KXt0PT09dm9pZCAwJiYodD0xKSxpPU1hdGgubWF4KGksdCksZS5maWx0ZXIoZT0+ZS5nZXRJc1Zpc2libGUoKSkuZm9yRWFjaChlPT57dmFyIG47KG49ZS5jb2x1bW5zKSE9bnVsbCYmbi5sZW5ndGgmJmEoZS5jb2x1bW5zLHQrMSl9LDApfTthKGUpO2xldCBvPVtdLHM9KGUsdCk9PntsZXQgaT17ZGVwdGg6dCxpZDpbcixgJHt0fWBdLmZpbHRlcihCb29sZWFuKS5qb2luKGBfYCksaGVhZGVyczpbXX0sYT1bXTtlLmZvckVhY2goZT0+e2xldCBvPVsuLi5hXS5yZXZlcnNlKClbMF0scz1lLmNvbHVtbi5kZXB0aD09PWkuZGVwdGgsYyxsPSExO2lmKHMmJmUuY29sdW1uLnBhcmVudD9jPWUuY29sdW1uLnBhcmVudDooYz1lLmNvbHVtbixsPSEwKSxvJiZvPy5jb2x1bW49PT1jKW8uc3ViSGVhZGVycy5wdXNoKGUpO2Vsc2V7bGV0IGk9X2UobixjLHtpZDpbcix0LGMuaWQsZT8uaWRdLmZpbHRlcihCb29sZWFuKS5qb2luKGBfYCksaXNQbGFjZWhvbGRlcjpsLHBsYWNlaG9sZGVySWQ6bD9gJHthLmZpbHRlcihlPT5lLmNvbHVtbj09PWMpLmxlbmd0aH1gOnZvaWQgMCxkZXB0aDp0LGluZGV4OmEubGVuZ3RofSk7aS5zdWJIZWFkZXJzLnB1c2goZSksYS5wdXNoKGkpfWkuaGVhZGVycy5wdXNoKGUpLGUuaGVhZGVyR3JvdXA9aX0pLG8ucHVzaChpKSx0PjAmJnMoYSx0LTEpfTtzKHQubWFwKChlLHQpPT5fZShuLGUse2RlcHRoOmksaW5kZXg6dH0pKSxpLTEpLG8ucmV2ZXJzZSgpO2xldCBjPWU9PmUuZmlsdGVyKGU9PmUuY29sdW1uLmdldElzVmlzaWJsZSgpKS5tYXAoZT0+e2xldCB0PTAsbj0wLHI9WzBdO2Uuc3ViSGVhZGVycyYmZS5zdWJIZWFkZXJzLmxlbmd0aD8ocj1bXSxjKGUuc3ViSGVhZGVycykuZm9yRWFjaChlPT57bGV0e2NvbFNwYW46bixyb3dTcGFuOml9PWU7dCs9bixyLnB1c2goaSl9KSk6dD0xO2xldCBpPU1hdGgubWluKC4uLnIpO3JldHVybiBuKz1pLGUuY29sU3Bhbj10LGUucm93U3Bhbj1uLHtjb2xTcGFuOnQscm93U3BhbjpufX0pO3JldHVybiBjKG9bMF0/LmhlYWRlcnM/P1tdKSxvfXZhciB5ZT0oZSx0LG4scixpLGEsbyk9PntsZXQgcz17aWQ6dCxpbmRleDpyLG9yaWdpbmFsOm4sZGVwdGg6aSxwYXJlbnRJZDpvLF92YWx1ZXNDYWNoZTp7fSxfdW5pcXVlVmFsdWVzQ2FjaGU6e30sZ2V0VmFsdWU6dD0+e2lmKHMuX3ZhbHVlc0NhY2hlLmhhc093blByb3BlcnR5KHQpKXJldHVybiBzLl92YWx1ZXNDYWNoZVt0XTtsZXQgbj1lLmdldENvbHVtbih0KTtpZihuIT1udWxsJiZuLmFjY2Vzc29yRm4pcmV0dXJuIHMuX3ZhbHVlc0NhY2hlW3RdPW4uYWNjZXNzb3JGbihzLm9yaWdpbmFsLHIpLHMuX3ZhbHVlc0NhY2hlW3RdfSxnZXRVbmlxdWVWYWx1ZXM6dD0+e2lmKHMuX3VuaXF1ZVZhbHVlc0NhY2hlLmhhc093blByb3BlcnR5KHQpKXJldHVybiBzLl91bmlxdWVWYWx1ZXNDYWNoZVt0XTtsZXQgbj1lLmdldENvbHVtbih0KTtpZihuIT1udWxsJiZuLmFjY2Vzc29yRm4pcmV0dXJuIG4uY29sdW1uRGVmLmdldFVuaXF1ZVZhbHVlcz8ocy5fdW5pcXVlVmFsdWVzQ2FjaGVbdF09bi5jb2x1bW5EZWYuZ2V0VW5pcXVlVmFsdWVzKHMub3JpZ2luYWwscikscy5fdW5pcXVlVmFsdWVzQ2FjaGVbdF0pOihzLl91bmlxdWVWYWx1ZXNDYWNoZVt0XT1bcy5nZXRWYWx1ZSh0KV0scy5fdW5pcXVlVmFsdWVzQ2FjaGVbdF0pfSxyZW5kZXJWYWx1ZTp0PT5zLmdldFZhbHVlKHQpPz9lLm9wdGlvbnMucmVuZGVyRmFsbGJhY2tWYWx1ZSxzdWJSb3dzOmE/P1tdLGdldExlYWZSb3dzOigpPT5tZShzLnN1YlJvd3MsZT0+ZS5zdWJSb3dzKSxnZXRQYXJlbnRSb3c6KCk9PnMucGFyZW50SWQ/ZS5nZXRSb3cocy5wYXJlbnRJZCwhMCk6dm9pZCAwLGdldFBhcmVudFJvd3M6KCk9PntsZXQgZT1bXSx0PXM7Zm9yKDs7KXtsZXQgbj10LmdldFBhcmVudFJvdygpO2lmKCFuKWJyZWFrO2UucHVzaChuKSx0PW59cmV0dXJuIGUucmV2ZXJzZSgpfSxnZXRBbGxDZWxsczpBKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpXSx0PT50Lm1hcCh0PT5oZShlLHMsdCx0LmlkKSksaihlLm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldEFsbENlbGxzYCkpLF9nZXRBbGxDZWxsc0J5Q29sdW1uSWQ6QSgoKT0+W3MuZ2V0QWxsQ2VsbHMoKV0sZT0+ZS5yZWR1Y2UoKGUsdCk9PihlW3QuY29sdW1uLmlkXT10LGUpLHt9KSxqKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0QWxsQ2VsbHNCeUNvbHVtbklkYCkpfTtmb3IobGV0IHQ9MDt0PGUuX2ZlYXR1cmVzLmxlbmd0aDt0Kyspe2xldCBuPWUuX2ZlYXR1cmVzW3RdO249PW51bGx8fG4uY3JlYXRlUm93PT1udWxsfHxuLmNyZWF0ZVJvdyhzLGUpfXJldHVybiBzfSxiZT17Y3JlYXRlQ29sdW1uOihlLHQpPT57ZS5fZ2V0RmFjZXRlZFJvd01vZGVsPXQub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwmJnQub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwodCxlLmlkKSxlLmdldEZhY2V0ZWRSb3dNb2RlbD0oKT0+ZS5fZ2V0RmFjZXRlZFJvd01vZGVsP2UuX2dldEZhY2V0ZWRSb3dNb2RlbCgpOnQuZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbCgpLGUuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXM9dC5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMmJnQub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzKHQsZS5pZCksZS5nZXRGYWNldGVkVW5pcXVlVmFsdWVzPSgpPT5lLl9nZXRGYWNldGVkVW5pcXVlVmFsdWVzP2UuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXMoKTpuZXcgTWFwLGUuX2dldEZhY2V0ZWRNaW5NYXhWYWx1ZXM9dC5vcHRpb25zLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXMmJnQub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzKHQsZS5pZCksZS5nZXRGYWNldGVkTWluTWF4VmFsdWVzPSgpPT57aWYoZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcylyZXR1cm4gZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcygpfX19LHhlPShlLHQsbik9Pnt2YXIgcixpO2xldCBhPW49PW51bGx8fChyPW4udG9TdHJpbmcoKSk9PW51bGw/dm9pZCAwOnIudG9Mb3dlckNhc2UoKTtyZXR1cm4hISgoaT1lLmdldFZhbHVlKHQpKSE9bnVsbCYmKGk9aS50b1N0cmluZygpKSE9bnVsbCYmKGk9aS50b0xvd2VyQ2FzZSgpKSE9bnVsbCYmaS5pbmNsdWRlcyhhKSl9O3hlLmF1dG9SZW1vdmU9ZT0+SShlKTt2YXIgU2U9KGUsdCxuKT0+e3ZhciByO3JldHVybiEhKChyPWUuZ2V0VmFsdWUodCkpIT1udWxsJiYocj1yLnRvU3RyaW5nKCkpIT1udWxsJiZyLmluY2x1ZGVzKG4pKX07U2UuYXV0b1JlbW92ZT1lPT5JKGUpO3ZhciBDZT0oZSx0LG4pPT57dmFyIHI7cmV0dXJuKChyPWUuZ2V0VmFsdWUodCkpPT1udWxsfHwocj1yLnRvU3RyaW5nKCkpPT1udWxsP3ZvaWQgMDpyLnRvTG93ZXJDYXNlKCkpPT09bj8udG9Mb3dlckNhc2UoKX07Q2UuYXV0b1JlbW92ZT1lPT5JKGUpO3ZhciB3ZT0oZSx0LG4pPT5lLmdldFZhbHVlKHQpPy5pbmNsdWRlcyhuKTt3ZS5hdXRvUmVtb3ZlPWU9PkkoZSk7dmFyIFRlPShlLHQsbik9PiFuLnNvbWUobj0+e3ZhciByO3JldHVybiEoKHI9ZS5nZXRWYWx1ZSh0KSkhPW51bGwmJnIuaW5jbHVkZXMobikpfSk7VGUuYXV0b1JlbW92ZT1lPT5JKGUpfHwhKGUhPW51bGwmJmUubGVuZ3RoKTt2YXIgRWU9KGUsdCxuKT0+bi5zb21lKG49PmUuZ2V0VmFsdWUodCk/LmluY2x1ZGVzKG4pKTtFZS5hdXRvUmVtb3ZlPWU9PkkoZSl8fCEoZSE9bnVsbCYmZS5sZW5ndGgpO3ZhciBEZT0oZSx0LG4pPT5lLmdldFZhbHVlKHQpPT09bjtEZS5hdXRvUmVtb3ZlPWU9PkkoZSk7dmFyIE9lPShlLHQsbik9PmUuZ2V0VmFsdWUodCk9PW47T2UuYXV0b1JlbW92ZT1lPT5JKGUpO3ZhciBQPShlLHQsbik9PntsZXRbcixpXT1uLGE9ZS5nZXRWYWx1ZSh0KTtyZXR1cm4gYT49ciYmYTw9aX07UC5yZXNvbHZlRmlsdGVyVmFsdWU9ZT0+e2xldFt0LG5dPWUscj10eXBlb2YgdD09YG51bWJlcmA/dDpwYXJzZUZsb2F0KHQpLGk9dHlwZW9mIG49PWBudW1iZXJgP246cGFyc2VGbG9hdChuKSxhPXQ9PT1udWxsfHxOdW1iZXIuaXNOYU4ocik/LTEvMDpyLG89bj09PW51bGx8fE51bWJlci5pc05hTihpKT8xLzA6aTtpZihhPm8pe2xldCBlPWE7YT1vLG89ZX1yZXR1cm5bYSxvXX0sUC5hdXRvUmVtb3ZlPWU9PkkoZSl8fEkoZVswXSkmJkkoZVsxXSk7dmFyIEY9e2luY2x1ZGVzU3RyaW5nOnhlLGluY2x1ZGVzU3RyaW5nU2Vuc2l0aXZlOlNlLGVxdWFsc1N0cmluZzpDZSxhcnJJbmNsdWRlczp3ZSxhcnJJbmNsdWRlc0FsbDpUZSxhcnJJbmNsdWRlc1NvbWU6RWUsZXF1YWxzOkRlLHdlYWtFcXVhbHM6T2UsaW5OdW1iZXJSYW5nZTpQfTtmdW5jdGlvbiBJKGUpe3JldHVybiBlPT1udWxsfHxlPT09YGB9dmFyIGtlPXtnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe2ZpbHRlckZuOmBhdXRvYH0pLGdldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtbkZpbHRlcnM6W10sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5GaWx0ZXJzQ2hhbmdlOk8oYGNvbHVtbkZpbHRlcnNgLGUpLGZpbHRlckZyb21MZWFmUm93czohMSxtYXhMZWFmUm93RmlsdGVyRGVwdGg6MTAwfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRBdXRvRmlsdGVyRm49KCk9PntsZXQgbj10LmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdPy5nZXRWYWx1ZShlLmlkKTtyZXR1cm4gdHlwZW9mIG49PWBzdHJpbmdgP0YuaW5jbHVkZXNTdHJpbmc6dHlwZW9mIG49PWBudW1iZXJgP0YuaW5OdW1iZXJSYW5nZTp0eXBlb2Ygbj09YGJvb2xlYW5gfHx0eXBlb2Ygbj09YG9iamVjdGAmJm4/Ri5lcXVhbHM6QXJyYXkuaXNBcnJheShuKT9GLmFyckluY2x1ZGVzOkYud2Vha0VxdWFsc30sZS5nZXRGaWx0ZXJGbj0oKT0+ayhlLmNvbHVtbkRlZi5maWx0ZXJGbik/ZS5jb2x1bW5EZWYuZmlsdGVyRm46ZS5jb2x1bW5EZWYuZmlsdGVyRm49PT1gYXV0b2A/ZS5nZXRBdXRvRmlsdGVyRm4oKTp0Lm9wdGlvbnMuZmlsdGVyRm5zPy5bZS5jb2x1bW5EZWYuZmlsdGVyRm5dPz9GW2UuY29sdW1uRGVmLmZpbHRlckZuXSxlLmdldENhbkZpbHRlcj0oKT0+KGUuY29sdW1uRGVmLmVuYWJsZUNvbHVtbkZpbHRlcj8/ITApJiYodC5vcHRpb25zLmVuYWJsZUNvbHVtbkZpbHRlcnM/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVGaWx0ZXJzPz8hMCkmJiEhZS5hY2Nlc3NvckZuLGUuZ2V0SXNGaWx0ZXJlZD0oKT0+ZS5nZXRGaWx0ZXJJbmRleCgpPi0xLGUuZ2V0RmlsdGVyVmFsdWU9KCk9Pnt2YXIgbjtyZXR1cm4obj10LmdldFN0YXRlKCkuY29sdW1uRmlsdGVycyk9PW51bGx8fChuPW4uZmluZCh0PT50LmlkPT09ZS5pZCkpPT1udWxsP3ZvaWQgMDpuLnZhbHVlfSxlLmdldEZpbHRlckluZGV4PSgpPT50LmdldFN0YXRlKCkuY29sdW1uRmlsdGVycz8uZmluZEluZGV4KHQ9PnQuaWQ9PT1lLmlkKT8/LTEsZS5zZXRGaWx0ZXJWYWx1ZT1uPT57dC5zZXRDb2x1bW5GaWx0ZXJzKHQ9PntsZXQgcj1lLmdldEZpbHRlckZuKCksaT10Py5maW5kKHQ9PnQuaWQ9PT1lLmlkKSxhPUQobixpP2kudmFsdWU6dm9pZCAwKTtpZihBZShyLGEsZSkpcmV0dXJuIHQ/LmZpbHRlcih0PT50LmlkIT09ZS5pZCk/P1tdO2xldCBvPXtpZDplLmlkLHZhbHVlOmF9O3JldHVybiBpP3Q/Lm1hcCh0PT50LmlkPT09ZS5pZD9vOnQpPz9bXTp0IT1udWxsJiZ0Lmxlbmd0aD9bLi4udCxvXTpbb119KX19LGNyZWF0ZVJvdzooZSx0KT0+e2UuY29sdW1uRmlsdGVycz17fSxlLmNvbHVtbkZpbHRlcnNNZXRhPXt9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5GaWx0ZXJzPXQ9PntsZXQgbj1lLmdldEFsbExlYWZDb2x1bW5zKCk7ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZT09bnVsbHx8ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZShlPT5EKHQsZSk/LmZpbHRlcihlPT57bGV0IHQ9bi5maW5kKHQ9PnQuaWQ9PT1lLmlkKTtyZXR1cm4hKHQmJkFlKHQuZ2V0RmlsdGVyRm4oKSxlLnZhbHVlLHQpKX0pKX0sZS5yZXNldENvbHVtbkZpbHRlcnM9dD0+e2Uuc2V0Q29sdW1uRmlsdGVycyh0P1tdOmUuaW5pdGlhbFN0YXRlPy5jb2x1bW5GaWx0ZXJzPz9bXSl9LGUuZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbD0oKT0+ZS5nZXRDb3JlUm93TW9kZWwoKSxlLmdldEZpbHRlcmVkUm93TW9kZWw9KCk9PighZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEZpbHRlcmVkUm93TW9kZWwmJihlLl9nZXRGaWx0ZXJlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRGaWx0ZXJlZFJvd01vZGVsKGUpKSxlLm9wdGlvbnMubWFudWFsRmlsdGVyaW5nfHwhZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbD9lLmdldFByZUZpbHRlcmVkUm93TW9kZWwoKTplLl9nZXRGaWx0ZXJlZFJvd01vZGVsKCkpfX07ZnVuY3Rpb24gQWUoZSx0LG4pe3JldHVybihlJiZlLmF1dG9SZW1vdmU/ZS5hdXRvUmVtb3ZlKHQsbik6ITEpfHx0PT09dm9pZCAwfHx0eXBlb2YgdD09YHN0cmluZ2AmJiF0fXZhciBMPXtzdW06KGUsdCxuKT0+bi5yZWR1Y2UoKHQsbik9PntsZXQgcj1uLmdldFZhbHVlKGUpO3JldHVybiB0Kyh0eXBlb2Ygcj09YG51bWJlcmA/cjowKX0sMCksbWluOihlLHQsbik9PntsZXQgcjtyZXR1cm4gbi5mb3JFYWNoKHQ9PntsZXQgbj10LmdldFZhbHVlKGUpO24hPW51bGwmJihyPm58fHI9PT12b2lkIDAmJm4+PW4pJiYocj1uKX0pLHJ9LG1heDooZSx0LG4pPT57bGV0IHI7cmV0dXJuIG4uZm9yRWFjaCh0PT57bGV0IG49dC5nZXRWYWx1ZShlKTtuIT1udWxsJiYocjxufHxyPT09dm9pZCAwJiZuPj1uKSYmKHI9bil9KSxyfSxleHRlbnQ6KGUsdCxuKT0+e2xldCByLGk7cmV0dXJuIG4uZm9yRWFjaCh0PT57bGV0IG49dC5nZXRWYWx1ZShlKTtuIT1udWxsJiYocj09PXZvaWQgMD9uPj1uJiYocj1pPW4pOihyPm4mJihyPW4pLGk8biYmKGk9bikpKX0pLFtyLGldfSxtZWFuOihlLHQpPT57bGV0IG49MCxyPTA7aWYodC5mb3JFYWNoKHQ9PntsZXQgaT10LmdldFZhbHVlKGUpO2khPW51bGwmJihpPStpKT49aSYmKCsrbixyKz1pKX0pLG4pcmV0dXJuIHIvbn0sbWVkaWFuOihlLHQpPT57aWYoIXQubGVuZ3RoKXJldHVybjtsZXQgbj10Lm1hcCh0PT50LmdldFZhbHVlKGUpKTtpZighcGUobikpcmV0dXJuO2lmKG4ubGVuZ3RoPT09MSlyZXR1cm4gblswXTtsZXQgcj1NYXRoLmZsb29yKG4ubGVuZ3RoLzIpLGk9bi5zb3J0KChlLHQpPT5lLXQpO3JldHVybiBuLmxlbmd0aCUyPT0wPyhpW3ItMV0raVtyXSkvMjppW3JdfSx1bmlxdWU6KGUsdCk9PkFycmF5LmZyb20obmV3IFNldCh0Lm1hcCh0PT50LmdldFZhbHVlKGUpKSkudmFsdWVzKCkpLHVuaXF1ZUNvdW50OihlLHQpPT5uZXcgU2V0KHQubWFwKHQ9PnQuZ2V0VmFsdWUoZSkpKS5zaXplLGNvdW50OihlLHQpPT50Lmxlbmd0aH0samU9e2dldERlZmF1bHRDb2x1bW5EZWY6KCk9Pih7YWdncmVnYXRlZENlbGw6ZT0+e3ZhciB0O3JldHVybigodD1lLmdldFZhbHVlKCkpPT1udWxsfHx0LnRvU3RyaW5nPT1udWxsP3ZvaWQgMDp0LnRvU3RyaW5nKCkpPz9udWxsfSxhZ2dyZWdhdGlvbkZuOmBhdXRvYH0pLGdldEluaXRpYWxTdGF0ZTplPT4oe2dyb3VwaW5nOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR3JvdXBpbmdDaGFuZ2U6TyhgZ3JvdXBpbmdgLGUpLGdyb3VwZWRDb2x1bW5Nb2RlOmByZW9yZGVyYH0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UudG9nZ2xlR3JvdXBpbmc9KCk9Pnt0LnNldEdyb3VwaW5nKHQ9PnQhPW51bGwmJnQuaW5jbHVkZXMoZS5pZCk/dC5maWx0ZXIodD0+dCE9PWUuaWQpOlsuLi50Pz9bXSxlLmlkXSl9LGUuZ2V0Q2FuR3JvdXA9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVHcm91cGluZz8/ITApJiYodC5vcHRpb25zLmVuYWJsZUdyb3VwaW5nPz8hMCkmJighIWUuYWNjZXNzb3JGbnx8ISFlLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKSxlLmdldElzR3JvdXBlZD0oKT0+dC5nZXRTdGF0ZSgpLmdyb3VwaW5nPy5pbmNsdWRlcyhlLmlkKSxlLmdldEdyb3VwZWRJbmRleD0oKT0+dC5nZXRTdGF0ZSgpLmdyb3VwaW5nPy5pbmRleE9mKGUuaWQpLGUuZ2V0VG9nZ2xlR3JvdXBpbmdIYW5kbGVyPSgpPT57bGV0IHQ9ZS5nZXRDYW5Hcm91cCgpO3JldHVybigpPT57dCYmZS50b2dnbGVHcm91cGluZygpfX0sZS5nZXRBdXRvQWdncmVnYXRpb25Gbj0oKT0+e2xldCBuPXQuZ2V0Q29yZVJvd01vZGVsKCkuZmxhdFJvd3NbMF0/LmdldFZhbHVlKGUuaWQpO2lmKHR5cGVvZiBuPT1gbnVtYmVyYClyZXR1cm4gTC5zdW07aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pPT09YFtvYmplY3QgRGF0ZV1gKXJldHVybiBMLmV4dGVudH0sZS5nZXRBZ2dyZWdhdGlvbkZuPSgpPT57aWYoIWUpdGhyb3cgRXJyb3IoKTtyZXR1cm4gayhlLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuKT9lLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuOmUuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm49PT1gYXV0b2A/ZS5nZXRBdXRvQWdncmVnYXRpb25GbigpOnQub3B0aW9ucy5hZ2dyZWdhdGlvbkZucz8uW2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm5dPz9MW2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm5dfX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0R3JvdXBpbmc9dD0+ZS5vcHRpb25zLm9uR3JvdXBpbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkdyb3VwaW5nQ2hhbmdlKHQpLGUucmVzZXRHcm91cGluZz10PT57ZS5zZXRHcm91cGluZyh0P1tdOmUuaW5pdGlhbFN0YXRlPy5ncm91cGluZz8/W10pfSxlLmdldFByZUdyb3VwZWRSb3dNb2RlbD0oKT0+ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCksZS5nZXRHcm91cGVkUm93TW9kZWw9KCk9PighZS5fZ2V0R3JvdXBlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0R3JvdXBlZFJvd01vZGVsJiYoZS5fZ2V0R3JvdXBlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRHcm91cGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxHcm91cGluZ3x8IWUuX2dldEdyb3VwZWRSb3dNb2RlbD9lLmdldFByZUdyb3VwZWRSb3dNb2RlbCgpOmUuX2dldEdyb3VwZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLHQpPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PiEhZS5ncm91cGluZ0NvbHVtbklkLGUuZ2V0R3JvdXBpbmdWYWx1ZT1uPT57aWYoZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm4gZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVtuXTtsZXQgcj10LmdldENvbHVtbihuKTtyZXR1cm4gciE9bnVsbCYmci5jb2x1bW5EZWYuZ2V0R3JvdXBpbmdWYWx1ZT8oZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVtuXT1yLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKGUub3JpZ2luYWwpLGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGVbbl0pOmUuZ2V0VmFsdWUobil9LGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGU9e319LGNyZWF0ZUNlbGw6KGUsdCxuLHIpPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PnQuZ2V0SXNHcm91cGVkKCkmJnQuaWQ9PT1uLmdyb3VwaW5nQ29sdW1uSWQsZS5nZXRJc1BsYWNlaG9sZGVyPSgpPT4hZS5nZXRJc0dyb3VwZWQoKSYmdC5nZXRJc0dyb3VwZWQoKSxlLmdldElzQWdncmVnYXRlZD0oKT0+e3ZhciB0O3JldHVybiFlLmdldElzR3JvdXBlZCgpJiYhZS5nZXRJc1BsYWNlaG9sZGVyKCkmJiEhKCh0PW4uc3ViUm93cykhPW51bGwmJnQubGVuZ3RoKX19fTtmdW5jdGlvbiBNZShlLHQsbil7aWYoISh0IT1udWxsJiZ0Lmxlbmd0aCl8fCFuKXJldHVybiBlO2xldCByPWUuZmlsdGVyKGU9PiF0LmluY2x1ZGVzKGUuaWQpKTtyZXR1cm4gbj09PWByZW1vdmVgP3I6Wy4uLnQubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSwuLi5yXX12YXIgTmU9e2dldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtbk9yZGVyOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uT3JkZXJDaGFuZ2U6TyhgY29sdW1uT3JkZXJgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRJbmRleD1BKGU9PltVKHQsZSldLHQ9PnQuZmluZEluZGV4KHQ9PnQuaWQ9PT1lLmlkKSxqKHQub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0SW5kZXhgKSksZS5nZXRJc0ZpcnN0Q29sdW1uPW49PlUodCxuKVswXT8uaWQ9PT1lLmlkLGUuZ2V0SXNMYXN0Q29sdW1uPW49PntsZXQgcj1VKHQsbik7cmV0dXJuIHJbci5sZW5ndGgtMV0/LmlkPT09ZS5pZH19LGNyZWF0ZVRhYmxlOmU9PntlLnNldENvbHVtbk9yZGVyPXQ9PmUub3B0aW9ucy5vbkNvbHVtbk9yZGVyQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5PcmRlckNoYW5nZSh0KSxlLnJlc2V0Q29sdW1uT3JkZXI9dD0+e2Uuc2V0Q29sdW1uT3JkZXIodD9bXTplLmluaXRpYWxTdGF0ZS5jb2x1bW5PcmRlcj8/W10pfSxlLl9nZXRPcmRlckNvbHVtbnNGbj1BKCgpPT5bZS5nZXRTdGF0ZSgpLmNvbHVtbk9yZGVyLGUuZ2V0U3RhdGUoKS5ncm91cGluZyxlLm9wdGlvbnMuZ3JvdXBlZENvbHVtbk1vZGVdLChlLHQsbik9PnI9PntsZXQgaT1bXTtpZighKGUhPW51bGwmJmUubGVuZ3RoKSlpPXI7ZWxzZXtsZXQgdD1bLi4uZV0sbj1bLi4ucl07Zm9yKDtuLmxlbmd0aCYmdC5sZW5ndGg7KXtsZXQgZT10LnNoaWZ0KCkscj1uLmZpbmRJbmRleCh0PT50LmlkPT09ZSk7cj4tMSYmaS5wdXNoKG4uc3BsaWNlKHIsMSlbMF0pfWk9Wy4uLmksLi4ubl19cmV0dXJuIE1lKGksdCxuKX0saihlLm9wdGlvbnMsYGRlYnVnVGFibGVgLGBfZ2V0T3JkZXJDb2x1bW5zRm5gKSl9fSxSPSgpPT4oe2xlZnQ6W10scmlnaHQ6W119KSxQZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uUGlubmluZzpSKCksLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5QaW5uaW5nQ2hhbmdlOk8oYGNvbHVtblBpbm5pbmdgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5waW49bj0+e2xldCByPWUuZ2V0TGVhZkNvbHVtbnMoKS5tYXAoZT0+ZS5pZCkuZmlsdGVyKEJvb2xlYW4pO3Quc2V0Q29sdW1uUGlubmluZyhlPT5uPT09YHJpZ2h0YD97bGVmdDooZT8ubGVmdD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKSxyaWdodDpbLi4uKGU/LnJpZ2h0Pz9bXSkuZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlKSkpLC4uLnJdfTpuPT09YGxlZnRgP3tsZWZ0OlsuLi4oZT8ubGVmdD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKSwuLi5yXSxyaWdodDooZT8ucmlnaHQ/P1tdKS5maWx0ZXIoZT0+IShyIT1udWxsJiZyLmluY2x1ZGVzKGUpKSl9OntsZWZ0OihlPy5sZWZ0Pz9bXSkuZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlKSkpLHJpZ2h0OihlPy5yaWdodD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKX0pfSxlLmdldENhblBpbj0oKT0+ZS5nZXRMZWFmQ29sdW1ucygpLnNvbWUoZT0+KGUuY29sdW1uRGVmLmVuYWJsZVBpbm5pbmc/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVDb2x1bW5QaW5uaW5nPz90Lm9wdGlvbnMuZW5hYmxlUGlubmluZz8/ITApKSxlLmdldElzUGlubmVkPSgpPT57bGV0IG49ZS5nZXRMZWFmQ29sdW1ucygpLm1hcChlPT5lLmlkKSx7bGVmdDpyLHJpZ2h0Oml9PXQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLGE9bi5zb21lKGU9PnI/LmluY2x1ZGVzKGUpKSxvPW4uc29tZShlPT5pPy5pbmNsdWRlcyhlKSk7cmV0dXJuIGE/YGxlZnRgOm8/YHJpZ2h0YDohMX0sZS5nZXRQaW5uZWRJbmRleD0oKT0+e3ZhciBuO2xldCByPWUuZ2V0SXNQaW5uZWQoKTtyZXR1cm4gcj8oKG49dC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcpPT1udWxsfHwobj1uW3JdKT09bnVsbD92b2lkIDA6bi5pbmRleE9mKGUuaWQpKT8/LTE6MH19LGNyZWF0ZVJvdzooZSx0KT0+e2UuZ2V0Q2VudGVyVmlzaWJsZUNlbGxzPUEoKCk9PltlLl9nZXRBbGxWaXNpYmxlQ2VsbHMoKSx0LmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0LG4pPT57bGV0IHI9Wy4uLnQ/P1tdLC4uLm4/P1tdXTtyZXR1cm4gZS5maWx0ZXIoZT0+IXIuaW5jbHVkZXMoZS5jb2x1bW4uaWQpKX0saih0Lm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldENlbnRlclZpc2libGVDZWxsc2ApKSxlLmdldExlZnRWaXNpYmxlQ2VsbHM9QSgoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChlLHQpPT4odD8/W10pLm1hcCh0PT5lLmZpbmQoZT0+ZS5jb2x1bW4uaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246YGxlZnRgfSkpLGoodC5vcHRpb25zLGBkZWJ1Z1Jvd3NgLGBnZXRMZWZ0VmlzaWJsZUNlbGxzYCkpLGUuZ2V0UmlnaHRWaXNpYmxlQ2VsbHM9QSgoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0KT0+KHQ/P1tdKS5tYXAodD0+ZS5maW5kKGU9PmUuY29sdW1uLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKS5tYXAoZT0+KHsuLi5lLHBvc2l0aW9uOmByaWdodGB9KSksaih0Lm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldFJpZ2h0VmlzaWJsZUNlbGxzYCkpfSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5QaW5uaW5nPXQ9PmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2UodCksZS5yZXNldENvbHVtblBpbm5pbmc9dD0+ZS5zZXRDb2x1bW5QaW5uaW5nKHQ/UigpOmUuaW5pdGlhbFN0YXRlPy5jb2x1bW5QaW5uaW5nPz9SKCkpLGUuZ2V0SXNTb21lQ29sdW1uc1Bpbm5lZD10PT57bGV0IG49ZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmc7cmV0dXJuIHQ/ISFuW3RdPy5sZW5ndGg6ISEobi5sZWZ0Py5sZW5ndGh8fG4ucmlnaHQ/Lmxlbmd0aCl9LGUuZ2V0TGVmdExlYWZDb2x1bW5zPUEoKCk9PltlLmdldEFsbExlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdF0sKGUsdCk9Pih0Pz9bXSkubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSxqKGUub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0TGVmdExlYWZDb2x1bW5zYCkpLGUuZ2V0UmlnaHRMZWFmQ29sdW1ucz1BKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0KT0+KHQ/P1tdKS5tYXAodD0+ZS5maW5kKGU9PmUuaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLGooZS5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRSaWdodExlYWZDb2x1bW5zYCkpLGUuZ2V0Q2VudGVyTGVhZkNvbHVtbnM9QSgoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0LG4pPT57bGV0IHI9Wy4uLnQ/P1tdLC4uLm4/P1tdXTtyZXR1cm4gZS5maWx0ZXIoZT0+IXIuaW5jbHVkZXMoZS5pZCkpfSxqKGUub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0Q2VudGVyTGVhZkNvbHVtbnNgKSl9fTtmdW5jdGlvbiBGZShlKXtyZXR1cm4gZXx8KHR5cGVvZiBkb2N1bWVudDxgdWA/ZG9jdW1lbnQ6bnVsbCl9dmFyIHo9e3NpemU6MTUwLG1pblNpemU6MjAsbWF4U2l6ZToyKio1My0xfSxCPSgpPT4oe3N0YXJ0T2Zmc2V0Om51bGwsc3RhcnRTaXplOm51bGwsZGVsdGFPZmZzZXQ6bnVsbCxkZWx0YVBlcmNlbnRhZ2U6bnVsbCxpc1Jlc2l6aW5nQ29sdW1uOiExLGNvbHVtblNpemluZ1N0YXJ0OltdfSksSWU9e2dldERlZmF1bHRDb2x1bW5EZWY6KCk9PnosZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uU2l6aW5nOnt9LGNvbHVtblNpemluZ0luZm86QigpLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe2NvbHVtblJlc2l6ZU1vZGU6YG9uRW5kYCxjb2x1bW5SZXNpemVEaXJlY3Rpb246YGx0cmAsb25Db2x1bW5TaXppbmdDaGFuZ2U6TyhgY29sdW1uU2l6aW5nYCxlKSxvbkNvbHVtblNpemluZ0luZm9DaGFuZ2U6TyhgY29sdW1uU2l6aW5nSW5mb2AsZSl9KSxjcmVhdGVDb2x1bW46KGUsdCk9PntlLmdldFNpemU9KCk9PntsZXQgbj10LmdldFN0YXRlKCkuY29sdW1uU2l6aW5nW2UuaWRdO3JldHVybiBNYXRoLm1pbihNYXRoLm1heChlLmNvbHVtbkRlZi5taW5TaXplPz96Lm1pblNpemUsbj8/ZS5jb2x1bW5EZWYuc2l6ZT8/ei5zaXplKSxlLmNvbHVtbkRlZi5tYXhTaXplPz96Lm1heFNpemUpfSxlLmdldFN0YXJ0PUEoZT0+W2UsVSh0LGUpLHQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmddLCh0LG4pPT5uLnNsaWNlKDAsZS5nZXRJbmRleCh0KSkucmVkdWNlKChlLHQpPT5lK3QuZ2V0U2l6ZSgpLDApLGoodC5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRTdGFydGApKSxlLmdldEFmdGVyPUEoZT0+W2UsVSh0LGUpLHQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmddLCh0LG4pPT5uLnNsaWNlKGUuZ2V0SW5kZXgodCkrMSkucmVkdWNlKChlLHQpPT5lK3QuZ2V0U2l6ZSgpLDApLGoodC5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRBZnRlcmApKSxlLnJlc2V0U2l6ZT0oKT0+e3Quc2V0Q29sdW1uU2l6aW5nKHQ9PntsZXR7W2UuaWRdOm4sLi4ucn09dDtyZXR1cm4gcn0pfSxlLmdldENhblJlc2l6ZT0oKT0+KGUuY29sdW1uRGVmLmVuYWJsZVJlc2l6aW5nPz8hMCkmJih0Lm9wdGlvbnMuZW5hYmxlQ29sdW1uUmVzaXppbmc/PyEwKSxlLmdldElzUmVzaXppbmc9KCk9PnQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmdJbmZvLmlzUmVzaXppbmdDb2x1bW49PT1lLmlkfSxjcmVhdGVIZWFkZXI6KGUsdCk9PntlLmdldFNpemU9KCk9PntsZXQgdD0wLG49ZT0+e2Uuc3ViSGVhZGVycy5sZW5ndGg/ZS5zdWJIZWFkZXJzLmZvckVhY2gobik6dCs9ZS5jb2x1bW4uZ2V0U2l6ZSgpPz8wfTtyZXR1cm4gbihlKSx0fSxlLmdldFN0YXJ0PSgpPT57aWYoZS5pbmRleD4wKXtsZXQgdD1lLmhlYWRlckdyb3VwLmhlYWRlcnNbZS5pbmRleC0xXTtyZXR1cm4gdC5nZXRTdGFydCgpK3QuZ2V0U2l6ZSgpfXJldHVybiAwfSxlLmdldFJlc2l6ZUhhbmRsZXI9bj0+e2xldCByPXQuZ2V0Q29sdW1uKGUuY29sdW1uLmlkKSxpPXI/LmdldENhblJlc2l6ZSgpO3JldHVybiBhPT57aWYoIXJ8fCFpfHwoYS5wZXJzaXN0PT1udWxsfHxhLnBlcnNpc3QoKSxIKGEpJiZhLnRvdWNoZXMmJmEudG91Y2hlcy5sZW5ndGg+MSkpcmV0dXJuO2xldCBvPWUuZ2V0U2l6ZSgpLHM9ZT9lLmdldExlYWZIZWFkZXJzKCkubWFwKGU9PltlLmNvbHVtbi5pZCxlLmNvbHVtbi5nZXRTaXplKCldKTpbW3IuaWQsci5nZXRTaXplKCldXSxjPUgoYSk/TWF0aC5yb3VuZChhLnRvdWNoZXNbMF0uY2xpZW50WCk6YS5jbGllbnRYLGw9e30sdT0oZSxuKT0+e3R5cGVvZiBuPT1gbnVtYmVyYCYmKHQuc2V0Q29sdW1uU2l6aW5nSW5mbyhlPT57bGV0IHI9dC5vcHRpb25zLmNvbHVtblJlc2l6ZURpcmVjdGlvbj09PWBydGxgPy0xOjEsaT0obi0oZT8uc3RhcnRPZmZzZXQ/PzApKSpyLGE9TWF0aC5tYXgoaS8oZT8uc3RhcnRTaXplPz8wKSwtLjk5OTk5OSk7cmV0dXJuIGUuY29sdW1uU2l6aW5nU3RhcnQuZm9yRWFjaChlPT57bGV0W3Qsbl09ZTtsW3RdPU1hdGgucm91bmQoTWF0aC5tYXgobituKmEsMCkqMTAwKS8xMDB9KSx7Li4uZSxkZWx0YU9mZnNldDppLGRlbHRhUGVyY2VudGFnZTphfX0pLCh0Lm9wdGlvbnMuY29sdW1uUmVzaXplTW9kZT09PWBvbkNoYW5nZWB8fGU9PT1gZW5kYCkmJnQuc2V0Q29sdW1uU2l6aW5nKGU9Pih7Li4uZSwuLi5sfSkpKX0sZD1lPT51KGBtb3ZlYCxlKSxmPWU9Pnt1KGBlbmRgLGUpLHQuc2V0Q29sdW1uU2l6aW5nSW5mbyhlPT4oey4uLmUsaXNSZXNpemluZ0NvbHVtbjohMSxzdGFydE9mZnNldDpudWxsLHN0YXJ0U2l6ZTpudWxsLGRlbHRhT2Zmc2V0Om51bGwsZGVsdGFQZXJjZW50YWdlOm51bGwsY29sdW1uU2l6aW5nU3RhcnQ6W119KSl9LHA9RmUobiksbT17bW92ZUhhbmRsZXI6ZT0+ZChlLmNsaWVudFgpLHVwSGFuZGxlcjplPT57cD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgbW91c2Vtb3ZlYCxtLm1vdmVIYW5kbGVyKSxwPy5yZW1vdmVFdmVudExpc3RlbmVyKGBtb3VzZXVwYCxtLnVwSGFuZGxlciksZihlLmNsaWVudFgpfX0saD17bW92ZUhhbmRsZXI6ZT0+KGUuY2FuY2VsYWJsZSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKSxkKGUudG91Y2hlc1swXS5jbGllbnRYKSwhMSksdXBIYW5kbGVyOmU9PntwPy5yZW1vdmVFdmVudExpc3RlbmVyKGB0b3VjaG1vdmVgLGgubW92ZUhhbmRsZXIpLHA/LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHRvdWNoZW5kYCxoLnVwSGFuZGxlciksZS5jYW5jZWxhYmxlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpLGYoZS50b3VjaGVzWzBdPy5jbGllbnRYKX19LGc9TGUoKT97cGFzc2l2ZTohMX06ITE7SChhKT8ocD8uYWRkRXZlbnRMaXN0ZW5lcihgdG91Y2htb3ZlYCxoLm1vdmVIYW5kbGVyLGcpLHA/LmFkZEV2ZW50TGlzdGVuZXIoYHRvdWNoZW5kYCxoLnVwSGFuZGxlcixnKSk6KHA/LmFkZEV2ZW50TGlzdGVuZXIoYG1vdXNlbW92ZWAsbS5tb3ZlSGFuZGxlcixnKSxwPy5hZGRFdmVudExpc3RlbmVyKGBtb3VzZXVwYCxtLnVwSGFuZGxlcixnKSksdC5zZXRDb2x1bW5TaXppbmdJbmZvKGU9Pih7Li4uZSxzdGFydE9mZnNldDpjLHN0YXJ0U2l6ZTpvLGRlbHRhT2Zmc2V0OjAsZGVsdGFQZXJjZW50YWdlOjAsY29sdW1uU2l6aW5nU3RhcnQ6cyxpc1Jlc2l6aW5nQ29sdW1uOnIuaWR9KSl9fX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uU2l6aW5nPXQ9PmUub3B0aW9ucy5vbkNvbHVtblNpemluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uU2l6aW5nQ2hhbmdlKHQpLGUuc2V0Q29sdW1uU2l6aW5nSW5mbz10PT5lLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlKHQpLGUucmVzZXRDb2x1bW5TaXppbmc9dD0+e2Uuc2V0Q29sdW1uU2l6aW5nKHQ/e306ZS5pbml0aWFsU3RhdGUuY29sdW1uU2l6aW5nPz97fSl9LGUucmVzZXRIZWFkZXJTaXplSW5mbz10PT57ZS5zZXRDb2x1bW5TaXppbmdJbmZvKHQ/QigpOmUuaW5pdGlhbFN0YXRlLmNvbHVtblNpemluZ0luZm8/P0IoKSl9LGUuZ2V0VG90YWxTaXplPSgpPT5lLmdldEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MCxlLmdldExlZnRUb3RhbFNpemU9KCk9PmUuZ2V0TGVmdEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MCxlLmdldENlbnRlclRvdGFsU2l6ZT0oKT0+ZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKVswXT8uaGVhZGVycy5yZWR1Y2UoKGUsdCk9PmUrdC5nZXRTaXplKCksMCk/PzAsZS5nZXRSaWdodFRvdGFsU2l6ZT0oKT0+ZS5nZXRSaWdodEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MH19LFY9bnVsbDtmdW5jdGlvbiBMZSgpe2lmKHR5cGVvZiBWPT1gYm9vbGVhbmApcmV0dXJuIFY7bGV0IGU9ITE7dHJ5e2xldCB0PXtnZXQgcGFzc2l2ZSgpe3JldHVybiBlPSEwLCExfX0sbj0oKT0+e307d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoYHRlc3RgLG4sdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHRlc3RgLG4pfWNhdGNoe2U9ITF9cmV0dXJuIFY9ZSxWfWZ1bmN0aW9uIEgoZSl7cmV0dXJuIGUudHlwZT09PWB0b3VjaHN0YXJ0YH12YXIgUmU9e2dldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtblZpc2liaWxpdHk6e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlOk8oYGNvbHVtblZpc2liaWxpdHlgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS50b2dnbGVWaXNpYmlsaXR5PW49PntlLmdldENhbkhpZGUoKSYmdC5zZXRDb2x1bW5WaXNpYmlsaXR5KHQ9Pih7Li4udCxbZS5pZF06bj8/IWUuZ2V0SXNWaXNpYmxlKCl9KSl9LGUuZ2V0SXNWaXNpYmxlPSgpPT57bGV0IG49ZS5jb2x1bW5zO3JldHVybihuLmxlbmd0aD9uLnNvbWUoZT0+ZS5nZXRJc1Zpc2libGUoKSk6dC5nZXRTdGF0ZSgpLmNvbHVtblZpc2liaWxpdHk/LltlLmlkXSk/PyEwfSxlLmdldENhbkhpZGU9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVIaWRpbmc/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVIaWRpbmc/PyEwKSxlLmdldFRvZ2dsZVZpc2liaWxpdHlIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVWaXNpYmlsaXR5PT1udWxsfHxlLnRvZ2dsZVZpc2liaWxpdHkodC50YXJnZXQuY2hlY2tlZCl9fSxjcmVhdGVSb3c6KGUsdCk9PntlLl9nZXRBbGxWaXNpYmxlQ2VsbHM9QSgoKT0+W2UuZ2V0QWxsQ2VsbHMoKSx0LmdldFN0YXRlKCkuY29sdW1uVmlzaWJpbGl0eV0sZT0+ZS5maWx0ZXIoZT0+ZS5jb2x1bW4uZ2V0SXNWaXNpYmxlKCkpLGoodC5vcHRpb25zLGBkZWJ1Z1Jvd3NgLGBfZ2V0QWxsVmlzaWJsZUNlbGxzYCkpLGUuZ2V0VmlzaWJsZUNlbGxzPUEoKCk9PltlLmdldExlZnRWaXNpYmxlQ2VsbHMoKSxlLmdldENlbnRlclZpc2libGVDZWxscygpLGUuZ2V0UmlnaHRWaXNpYmxlQ2VsbHMoKV0sKGUsdCxuKT0+Wy4uLmUsLi4udCwuLi5uXSxqKHQub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0VmlzaWJsZUNlbGxzYCkpfSxjcmVhdGVUYWJsZTplPT57bGV0IHQ9KHQsbik9PkEoKCk9PltuKCksbigpLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZSgpKS5tYXAoZT0+ZS5pZCkuam9pbihgX2ApXSxlPT5lLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZT09bnVsbD92b2lkIDA6ZS5nZXRJc1Zpc2libGUoKSksaihlLm9wdGlvbnMsYGRlYnVnQ29sdW1uc2AsdCkpO2UuZ2V0VmlzaWJsZUZsYXRDb2x1bW5zPXQoYGdldFZpc2libGVGbGF0Q29sdW1uc2AsKCk9PmUuZ2V0QWxsRmxhdENvbHVtbnMoKSksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zYCwoKT0+ZS5nZXRBbGxMZWFmQ29sdW1ucygpKSxlLmdldExlZnRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1uc2AsKCk9PmUuZ2V0TGVmdExlYWZDb2x1bW5zKCkpLGUuZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnNgLCgpPT5lLmdldFJpZ2h0TGVhZkNvbHVtbnMoKSksZS5nZXRDZW50ZXJWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0Q2VudGVyVmlzaWJsZUxlYWZDb2x1bW5zYCwoKT0+ZS5nZXRDZW50ZXJMZWFmQ29sdW1ucygpKSxlLnNldENvbHVtblZpc2liaWxpdHk9dD0+ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZSh0KSxlLnJlc2V0Q29sdW1uVmlzaWJpbGl0eT10PT57ZS5zZXRDb2x1bW5WaXNpYmlsaXR5KHQ/e306ZS5pbml0aWFsU3RhdGUuY29sdW1uVmlzaWJpbGl0eT8/e30pfSxlLnRvZ2dsZUFsbENvbHVtbnNWaXNpYmxlPXQ9Pnt0Pz89IWUuZ2V0SXNBbGxDb2x1bW5zVmlzaWJsZSgpLGUuc2V0Q29sdW1uVmlzaWJpbGl0eShlLmdldEFsbExlYWZDb2x1bW5zKCkucmVkdWNlKChlLG4pPT4oey4uLmUsW24uaWRdOnR8fCEobi5nZXRDYW5IaWRlIT1udWxsJiZuLmdldENhbkhpZGUoKSl9KSx7fSkpfSxlLmdldElzQWxsQ29sdW1uc1Zpc2libGU9KCk9PiFlLmdldEFsbExlYWZDb2x1bW5zKCkuc29tZShlPT4hKGUuZ2V0SXNWaXNpYmxlIT1udWxsJiZlLmdldElzVmlzaWJsZSgpKSksZS5nZXRJc1NvbWVDb2x1bW5zVmlzaWJsZT0oKT0+ZS5nZXRBbGxMZWFmQ29sdW1ucygpLnNvbWUoZT0+ZS5nZXRJc1Zpc2libGU9PW51bGw/dm9pZCAwOmUuZ2V0SXNWaXNpYmxlKCkpLGUuZ2V0VG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHlIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVBbGxDb2x1bW5zVmlzaWJsZSh0LnRhcmdldD8uY2hlY2tlZCl9fX07ZnVuY3Rpb24gVShlLHQpe3JldHVybiB0P3Q9PT1gY2VudGVyYD9lLmdldENlbnRlclZpc2libGVMZWFmQ29sdW1ucygpOnQ9PT1gbGVmdGA/ZS5nZXRMZWZ0VmlzaWJsZUxlYWZDb2x1bW5zKCk6ZS5nZXRSaWdodFZpc2libGVMZWFmQ29sdW1ucygpOmUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCl9dmFyIHplPXtjcmVhdGVUYWJsZTplPT57ZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwoZSxgX19nbG9iYWxfX2ApLGUuZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsPSgpPT5lLm9wdGlvbnMubWFudWFsRmlsdGVyaW5nfHwhZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsP2UuZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbCgpOmUuX2dldEdsb2JhbEZhY2V0ZWRSb3dNb2RlbCgpLGUuX2dldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM9ZS5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMmJmUub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzKGUsYF9fZ2xvYmFsX19gKSxlLmdldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM9KCk9PmUuX2dldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM/ZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcygpOm5ldyBNYXAsZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcz1lLm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyYmZS5vcHRpb25zLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXMoZSxgX19nbG9iYWxfX2ApLGUuZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcz0oKT0+e2lmKGUuX2dldEdsb2JhbEZhY2V0ZWRNaW5NYXhWYWx1ZXMpcmV0dXJuIGUuX2dldEdsb2JhbEZhY2V0ZWRNaW5NYXhWYWx1ZXMoKX19fSxCZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Z2xvYmFsRmlsdGVyOnZvaWQgMCwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkdsb2JhbEZpbHRlckNoYW5nZTpPKGBnbG9iYWxGaWx0ZXJgLGUpLGdsb2JhbEZpbHRlckZuOmBhdXRvYCxnZXRDb2x1bW5DYW5HbG9iYWxGaWx0ZXI6dD0+e3ZhciBuO2xldCByPShuPWUuZ2V0Q29yZVJvd01vZGVsKCkuZmxhdFJvd3NbMF0pPT1udWxsfHwobj1uLl9nZXRBbGxDZWxsc0J5Q29sdW1uSWQoKVt0LmlkXSk9PW51bGw/dm9pZCAwOm4uZ2V0VmFsdWUoKTtyZXR1cm4gdHlwZW9mIHI9PWBzdHJpbmdgfHx0eXBlb2Ygcj09YG51bWJlcmB9fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRDYW5HbG9iYWxGaWx0ZXI9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVHbG9iYWxGaWx0ZXI/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVHbG9iYWxGaWx0ZXI/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVGaWx0ZXJzPz8hMCkmJigodC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcj09bnVsbD92b2lkIDA6dC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcihlKSk/PyEwKSYmISFlLmFjY2Vzc29yRm59LGNyZWF0ZVRhYmxlOmU9PntlLmdldEdsb2JhbEF1dG9GaWx0ZXJGbj0oKT0+Ri5pbmNsdWRlc1N0cmluZyxlLmdldEdsb2JhbEZpbHRlckZuPSgpPT57bGV0e2dsb2JhbEZpbHRlckZuOnR9PWUub3B0aW9ucztyZXR1cm4gayh0KT90OnQ9PT1gYXV0b2A/ZS5nZXRHbG9iYWxBdXRvRmlsdGVyRm4oKTplLm9wdGlvbnMuZmlsdGVyRm5zPy5bdF0/P0ZbdF19LGUuc2V0R2xvYmFsRmlsdGVyPXQ9PntlLm9wdGlvbnMub25HbG9iYWxGaWx0ZXJDaGFuZ2U9PW51bGx8fGUub3B0aW9ucy5vbkdsb2JhbEZpbHRlckNoYW5nZSh0KX0sZS5yZXNldEdsb2JhbEZpbHRlcj10PT57ZS5zZXRHbG9iYWxGaWx0ZXIodD92b2lkIDA6ZS5pbml0aWFsU3RhdGUuZ2xvYmFsRmlsdGVyKX19fSxWZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7ZXhwYW5kZWQ6e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25FeHBhbmRlZENoYW5nZTpPKGBleHBhbmRlZGAsZSkscGFnaW5hdGVFeHBhbmRlZFJvd3M6ITB9KSxjcmVhdGVUYWJsZTplPT57bGV0IHQ9ITEsbj0hMTtlLl9hdXRvUmVzZXRFeHBhbmRlZD0oKT0+e2lmKCF0KXtlLl9xdWV1ZSgoKT0+e3Q9ITB9KTtyZXR1cm59aWYoZS5vcHRpb25zLmF1dG9SZXNldEFsbD8/ZS5vcHRpb25zLmF1dG9SZXNldEV4cGFuZGVkPz8hZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZyl7aWYobilyZXR1cm47bj0hMCxlLl9xdWV1ZSgoKT0+e2UucmVzZXRFeHBhbmRlZCgpLG49ITF9KX19LGUuc2V0RXhwYW5kZWQ9dD0+ZS5vcHRpb25zLm9uRXhwYW5kZWRDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkV4cGFuZGVkQ2hhbmdlKHQpLGUudG9nZ2xlQWxsUm93c0V4cGFuZGVkPXQ9Pnt0Pz8hZS5nZXRJc0FsbFJvd3NFeHBhbmRlZCgpP2Uuc2V0RXhwYW5kZWQoITApOmUuc2V0RXhwYW5kZWQoe30pfSxlLnJlc2V0RXhwYW5kZWQ9dD0+e2Uuc2V0RXhwYW5kZWQodD97fTplLmluaXRpYWxTdGF0ZT8uZXhwYW5kZWQ/P3t9KX0sZS5nZXRDYW5Tb21lUm93c0V4cGFuZD0oKT0+ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5zb21lKGU9PmUuZ2V0Q2FuRXhwYW5kKCkpLGUuZ2V0VG9nZ2xlQWxsUm93c0V4cGFuZGVkSGFuZGxlcj0oKT0+dD0+e3QucGVyc2lzdD09bnVsbHx8dC5wZXJzaXN0KCksZS50b2dnbGVBbGxSb3dzRXhwYW5kZWQoKX0sZS5nZXRJc1NvbWVSb3dzRXhwYW5kZWQ9KCk9PntsZXQgdD1lLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuIHQ9PT0hMHx8T2JqZWN0LnZhbHVlcyh0KS5zb21lKEJvb2xlYW4pfSxlLmdldElzQWxsUm93c0V4cGFuZGVkPSgpPT57bGV0IHQ9ZS5nZXRTdGF0ZSgpLmV4cGFuZGVkO3JldHVybiB0eXBlb2YgdD09YGJvb2xlYW5gP3Q9PT0hMDohKCFPYmplY3Qua2V5cyh0KS5sZW5ndGh8fGUuZ2V0Um93TW9kZWwoKS5mbGF0Um93cy5zb21lKGU9PiFlLmdldElzRXhwYW5kZWQoKSkpfSxlLmdldEV4cGFuZGVkRGVwdGg9KCk9PntsZXQgdD0wO3JldHVybihlLmdldFN0YXRlKCkuZXhwYW5kZWQ9PT0hMD9PYmplY3Qua2V5cyhlLmdldFJvd01vZGVsKCkucm93c0J5SWQpOk9iamVjdC5rZXlzKGUuZ2V0U3RhdGUoKS5leHBhbmRlZCkpLmZvckVhY2goZT0+e2xldCBuPWUuc3BsaXQoYC5gKTt0PU1hdGgubWF4KHQsbi5sZW5ndGgpfSksdH0sZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsPSgpPT5lLmdldFNvcnRlZFJvd01vZGVsKCksZS5nZXRFeHBhbmRlZFJvd01vZGVsPSgpPT4oIWUuX2dldEV4cGFuZGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRFeHBhbmRlZFJvd01vZGVsJiYoZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RXhwYW5kZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZ3x8IWUuX2dldEV4cGFuZGVkUm93TW9kZWw/ZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsKCk6ZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLHQpPT57ZS50b2dnbGVFeHBhbmRlZD1uPT57dC5zZXRFeHBhbmRlZChyPT57bGV0IGk9cj09PSEwfHwhIShyIT1udWxsJiZyW2UuaWRdKSxhPXt9O2lmKHI9PT0hMD9PYmplY3Qua2V5cyh0LmdldFJvd01vZGVsKCkucm93c0J5SWQpLmZvckVhY2goZT0+e2FbZV09ITB9KTphPXIsbj8/PSFpLCFpJiZuKXJldHVybnsuLi5hLFtlLmlkXTohMH07aWYoaSYmIW4pe2xldHtbZS5pZF06dCwuLi5ufT1hO3JldHVybiBufXJldHVybiByfSl9LGUuZ2V0SXNFeHBhbmRlZD0oKT0+e2xldCBuPXQuZ2V0U3RhdGUoKS5leHBhbmRlZDtyZXR1cm4hISgodC5vcHRpb25zLmdldElzUm93RXhwYW5kZWQ9PW51bGw/dm9pZCAwOnQub3B0aW9ucy5nZXRJc1Jvd0V4cGFuZGVkKGUpKT8/KG49PT0hMHx8bj8uW2UuaWRdKSl9LGUuZ2V0Q2FuRXhwYW5kPSgpPT57dmFyIG47cmV0dXJuKHQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQ9PW51bGw/dm9pZCAwOnQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQoZSkpPz8oKHQub3B0aW9ucy5lbmFibGVFeHBhbmRpbmc/PyEwKSYmISEoKG49ZS5zdWJSb3dzKSE9bnVsbCYmbi5sZW5ndGgpKX0sZS5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZD0oKT0+e2xldCBuPSEwLHI9ZTtmb3IoO24mJnIucGFyZW50SWQ7KXI9dC5nZXRSb3coci5wYXJlbnRJZCwhMCksbj1yLmdldElzRXhwYW5kZWQoKTtyZXR1cm4gbn0sZS5nZXRUb2dnbGVFeHBhbmRlZEhhbmRsZXI9KCk9PntsZXQgdD1lLmdldENhbkV4cGFuZCgpO3JldHVybigpPT57dCYmZS50b2dnbGVFeHBhbmRlZCgpfX19fSxXPTAsRz0xMCxLPSgpPT4oe3BhZ2VJbmRleDpXLHBhZ2VTaXplOkd9KSxIZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Li4uZSxwYWdpbmF0aW9uOnsuLi5LKCksLi4uZT8ucGFnaW5hdGlvbn19KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uUGFnaW5hdGlvbkNoYW5nZTpPKGBwYWdpbmF0aW9uYCxlKX0pLGNyZWF0ZVRhYmxlOmU9PntsZXQgdD0hMSxuPSExO2UuX2F1dG9SZXNldFBhZ2VJbmRleD0oKT0+e2lmKCF0KXtlLl9xdWV1ZSgoKT0+e3Q9ITB9KTtyZXR1cm59aWYoZS5vcHRpb25zLmF1dG9SZXNldEFsbD8/ZS5vcHRpb25zLmF1dG9SZXNldFBhZ2VJbmRleD8/IWUub3B0aW9ucy5tYW51YWxQYWdpbmF0aW9uKXtpZihuKXJldHVybjtuPSEwLGUuX3F1ZXVlKCgpPT57ZS5yZXNldFBhZ2VJbmRleCgpLG49ITF9KX19LGUuc2V0UGFnaW5hdGlvbj10PT5lLm9wdGlvbnMub25QYWdpbmF0aW9uQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25QYWdpbmF0aW9uQ2hhbmdlKGU9PkQodCxlKSksZS5yZXNldFBhZ2luYXRpb249dD0+e2Uuc2V0UGFnaW5hdGlvbih0P0soKTplLmluaXRpYWxTdGF0ZS5wYWdpbmF0aW9uPz9LKCkpfSxlLnNldFBhZ2VJbmRleD10PT57ZS5zZXRQYWdpbmF0aW9uKG49PntsZXQgcj1EKHQsbi5wYWdlSW5kZXgpLGk9ZS5vcHRpb25zLnBhZ2VDb3VudD09PXZvaWQgMHx8ZS5vcHRpb25zLnBhZ2VDb3VudD09PS0xPzIqKjUzLTE6ZS5vcHRpb25zLnBhZ2VDb3VudC0xO3JldHVybiByPU1hdGgubWF4KDAsTWF0aC5taW4ocixpKSksey4uLm4scGFnZUluZGV4OnJ9fSl9LGUucmVzZXRQYWdlSW5kZXg9dD0+e3ZhciBuO2Uuc2V0UGFnZUluZGV4KHQ/VzooKG49ZS5pbml0aWFsU3RhdGUpPT1udWxsfHwobj1uLnBhZ2luYXRpb24pPT1udWxsP3ZvaWQgMDpuLnBhZ2VJbmRleCk/P1cpfSxlLnJlc2V0UGFnZVNpemU9dD0+e3ZhciBuO2Uuc2V0UGFnZVNpemUodD9HOigobj1lLmluaXRpYWxTdGF0ZSk9PW51bGx8fChuPW4ucGFnaW5hdGlvbik9PW51bGw/dm9pZCAwOm4ucGFnZVNpemUpPz9HKX0sZS5zZXRQYWdlU2l6ZT10PT57ZS5zZXRQYWdpbmF0aW9uKGU9PntsZXQgbj1NYXRoLm1heCgxLEQodCxlLnBhZ2VTaXplKSkscj1lLnBhZ2VTaXplKmUucGFnZUluZGV4LGk9TWF0aC5mbG9vcihyL24pO3JldHVybnsuLi5lLHBhZ2VJbmRleDppLHBhZ2VTaXplOm59fSl9LGUuc2V0UGFnZUNvdW50PXQ9PmUuc2V0UGFnaW5hdGlvbihuPT57bGV0IHI9RCh0LGUub3B0aW9ucy5wYWdlQ291bnQ/Py0xKTtyZXR1cm4gdHlwZW9mIHI9PWBudW1iZXJgJiYocj1NYXRoLm1heCgtMSxyKSksey4uLm4scGFnZUNvdW50OnJ9fSksZS5nZXRQYWdlT3B0aW9ucz1BKCgpPT5bZS5nZXRQYWdlQ291bnQoKV0sZT0+e2xldCB0PVtdO3JldHVybiBlJiZlPjAmJih0PVsuLi5BcnJheShlKV0uZmlsbChudWxsKS5tYXAoKGUsdCk9PnQpKSx0fSxqKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldFBhZ2VPcHRpb25zYCkpLGUuZ2V0Q2FuUHJldmlvdXNQYWdlPSgpPT5lLmdldFN0YXRlKCkucGFnaW5hdGlvbi5wYWdlSW5kZXg+MCxlLmdldENhbk5leHRQYWdlPSgpPT57bGV0e3BhZ2VJbmRleDp0fT1lLmdldFN0YXRlKCkucGFnaW5hdGlvbixuPWUuZ2V0UGFnZUNvdW50KCk7cmV0dXJuIG49PT0tMXx8biE9PTAmJnQ8bi0xfSxlLnByZXZpb3VzUGFnZT0oKT0+ZS5zZXRQYWdlSW5kZXgoZT0+ZS0xKSxlLm5leHRQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlPT5lKzEpLGUuZmlyc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleCgwKSxlLmxhc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlLmdldFBhZ2VDb3VudCgpLTEpLGUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsPSgpPT5lLmdldEV4cGFuZGVkUm93TW9kZWwoKSxlLmdldFBhZ2luYXRpb25Sb3dNb2RlbD0oKT0+KCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwmJmUub3B0aW9ucy5nZXRQYWdpbmF0aW9uUm93TW9kZWwmJihlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw9ZS5vcHRpb25zLmdldFBhZ2luYXRpb25Sb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFBhZ2luYXRpb258fCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw/ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTplLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwoKSksZS5nZXRQYWdlQ291bnQ9KCk9PmUub3B0aW9ucy5wYWdlQ291bnQ/P01hdGguY2VpbChlLmdldFJvd0NvdW50KCkvZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZVNpemUpLGUuZ2V0Um93Q291bnQ9KCk9PmUub3B0aW9ucy5yb3dDb3VudD8/ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKS5yb3dzLmxlbmd0aH19LHE9KCk9Pih7dG9wOltdLGJvdHRvbTpbXX0pLFVlPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtyb3dQaW5uaW5nOnEoKSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblJvd1Bpbm5pbmdDaGFuZ2U6Tyhgcm93UGlubmluZ2AsZSl9KSxjcmVhdGVSb3c6KGUsdCk9PntlLnBpbj0obixyLGkpPT57bGV0IGE9cj9lLmdldExlYWZSb3dzKCkubWFwKGU9PntsZXR7aWQ6dH09ZTtyZXR1cm4gdH0pOltdLG89aT9lLmdldFBhcmVudFJvd3MoKS5tYXAoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSk6W10scz1uZXcgU2V0KFsuLi5vLGUuaWQsLi4uYV0pO3Quc2V0Um93UGlubmluZyhlPT5uPT09YGJvdHRvbWA/e3RvcDooZT8udG9wPz9bXSkuZmlsdGVyKGU9PiEocyE9bnVsbCYmcy5oYXMoZSkpKSxib3R0b206Wy4uLihlPy5ib3R0b20/P1tdKS5maWx0ZXIoZT0+IShzIT1udWxsJiZzLmhhcyhlKSkpLC4uLkFycmF5LmZyb20ocyldfTpuPT09YHRvcGA/e3RvcDpbLi4uKGU/LnRvcD8/W10pLmZpbHRlcihlPT4hKHMhPW51bGwmJnMuaGFzKGUpKSksLi4uQXJyYXkuZnJvbShzKV0sYm90dG9tOihlPy5ib3R0b20/P1tdKS5maWx0ZXIoZT0+IShzIT1udWxsJiZzLmhhcyhlKSkpfTp7dG9wOihlPy50b3A/P1tdKS5maWx0ZXIoZT0+IShzIT1udWxsJiZzLmhhcyhlKSkpLGJvdHRvbTooZT8uYm90dG9tPz9bXSkuZmlsdGVyKGU9PiEocyE9bnVsbCYmcy5oYXMoZSkpKX0pfSxlLmdldENhblBpbj0oKT0+e2xldHtlbmFibGVSb3dQaW5uaW5nOm4sZW5hYmxlUGlubmluZzpyfT10Lm9wdGlvbnM7cmV0dXJuIHR5cGVvZiBuPT1gZnVuY3Rpb25gP24oZSk6bj8/cj8/ITB9LGUuZ2V0SXNQaW5uZWQ9KCk9PntsZXQgbj1bZS5pZF0se3RvcDpyLGJvdHRvbTppfT10LmdldFN0YXRlKCkucm93UGlubmluZyxhPW4uc29tZShlPT5yPy5pbmNsdWRlcyhlKSksbz1uLnNvbWUoZT0+aT8uaW5jbHVkZXMoZSkpO3JldHVybiBhP2B0b3BgOm8/YGJvdHRvbWA6ITF9LGUuZ2V0UGlubmVkSW5kZXg9KCk9PntsZXQgbj1lLmdldElzUGlubmVkKCk7cmV0dXJuIG4/KChuPT09YHRvcGA/dC5nZXRUb3BSb3dzKCk6dC5nZXRCb3R0b21Sb3dzKCkpPy5tYXAoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSkpPy5pbmRleE9mKGUuaWQpPz8tMTotMX19LGNyZWF0ZVRhYmxlOmU9PntlLnNldFJvd1Bpbm5pbmc9dD0+ZS5vcHRpb25zLm9uUm93UGlubmluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uUm93UGlubmluZ0NoYW5nZSh0KSxlLnJlc2V0Um93UGlubmluZz10PT5lLnNldFJvd1Bpbm5pbmcodD9xKCk6ZS5pbml0aWFsU3RhdGU/LnJvd1Bpbm5pbmc/P3EoKSksZS5nZXRJc1NvbWVSb3dzUGlubmVkPXQ9PntsZXQgbj1lLmdldFN0YXRlKCkucm93UGlubmluZztyZXR1cm4gdD8hIW5bdF0/Lmxlbmd0aDohIShuLnRvcD8ubGVuZ3RofHxuLmJvdHRvbT8ubGVuZ3RoKX0sZS5fZ2V0UGlubmVkUm93cz0odCxuLHIpPT4oZS5vcHRpb25zLmtlZXBQaW5uZWRSb3dzPz8hMD8obj8/W10pLm1hcCh0PT57bGV0IG49ZS5nZXRSb3codCwhMCk7cmV0dXJuIG4uZ2V0SXNBbGxQYXJlbnRzRXhwYW5kZWQoKT9uOm51bGx9KToobj8/W10pLm1hcChlPT50LmZpbmQodD0+dC5pZD09PWUpKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246cn0pKSxlLmdldFRvcFJvd3M9QSgoKT0+W2UuZ2V0Um93TW9kZWwoKS5yb3dzLGUuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLnRvcF0sKHQsbik9PmUuX2dldFBpbm5lZFJvd3ModCxuLGB0b3BgKSxqKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0VG9wUm93c2ApKSxlLmdldEJvdHRvbVJvd3M9QSgoKT0+W2UuZ2V0Um93TW9kZWwoKS5yb3dzLGUuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLmJvdHRvbV0sKHQsbik9PmUuX2dldFBpbm5lZFJvd3ModCxuLGBib3R0b21gKSxqKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0Qm90dG9tUm93c2ApKSxlLmdldENlbnRlclJvd3M9QSgoKT0+W2UuZ2V0Um93TW9kZWwoKS5yb3dzLGUuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLnRvcCxlLmdldFN0YXRlKCkucm93UGlubmluZy5ib3R0b21dLChlLHQsbik9PntsZXQgcj1uZXcgU2V0KFsuLi50Pz9bXSwuLi5uPz9bXV0pO3JldHVybiBlLmZpbHRlcihlPT4hci5oYXMoZS5pZCkpfSxqKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0Q2VudGVyUm93c2ApKX19LFdlPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtyb3dTZWxlY3Rpb246e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Sb3dTZWxlY3Rpb25DaGFuZ2U6Tyhgcm93U2VsZWN0aW9uYCxlKSxlbmFibGVSb3dTZWxlY3Rpb246ITAsZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb246ITAsZW5hYmxlU3ViUm93U2VsZWN0aW9uOiEwfSksY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Um93U2VsZWN0aW9uPXQ9PmUub3B0aW9ucy5vblJvd1NlbGVjdGlvbkNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uUm93U2VsZWN0aW9uQ2hhbmdlKHQpLGUucmVzZXRSb3dTZWxlY3Rpb249dD0+ZS5zZXRSb3dTZWxlY3Rpb24odD97fTplLmluaXRpYWxTdGF0ZS5yb3dTZWxlY3Rpb24/P3t9KSxlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZD10PT57ZS5zZXRSb3dTZWxlY3Rpb24obj0+e3Q9dD09PXZvaWQgMD8hZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpOnQ7bGV0IHI9ey4uLm59LGk9ZS5nZXRQcmVHcm91cGVkUm93TW9kZWwoKS5mbGF0Um93cztyZXR1cm4gdD9pLmZvckVhY2goZT0+e2UuZ2V0Q2FuU2VsZWN0KCkmJihyW2UuaWRdPSEwKX0pOmkuZm9yRWFjaChlPT57ZGVsZXRlIHJbZS5pZF19KSxyfSl9LGUudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZD10PT5lLnNldFJvd1NlbGVjdGlvbihuPT57bGV0IHI9dD09PXZvaWQgMD8hZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQoKTp0LGk9ey4uLm59O3JldHVybiBlLmdldFJvd01vZGVsKCkucm93cy5mb3JFYWNoKHQ9PntKKGksdC5pZCxyLCEwLGUpfSksaX0pLGUuZ2V0UHJlU2VsZWN0ZWRSb3dNb2RlbD0oKT0+ZS5nZXRDb3JlUm93TW9kZWwoKSxlLmdldFNlbGVjdGVkUm93TW9kZWw9QSgoKT0+W2UuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24sZS5nZXRDb3JlUm93TW9kZWwoKV0sKHQsbik9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD9HZShlLG4pOntyb3dzOltdLGZsYXRSb3dzOltdLHJvd3NCeUlkOnt9fSxqKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldFNlbGVjdGVkUm93TW9kZWxgKSksZS5nZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWw9QSgoKT0+W2UuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24sZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCldLCh0LG4pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg/R2UoZSxuKTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0saihlLm9wdGlvbnMsYGRlYnVnVGFibGVgLGBnZXRGaWx0ZXJlZFNlbGVjdGVkUm93TW9kZWxgKSksZS5nZXRHcm91cGVkU2VsZWN0ZWRSb3dNb2RlbD1BKCgpPT5bZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixlLmdldFNvcnRlZFJvd01vZGVsKCldLCh0LG4pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg/R2UoZSxuKTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0saihlLm9wdGlvbnMsYGRlYnVnVGFibGVgLGBnZXRHcm91cGVkU2VsZWN0ZWRSb3dNb2RlbGApKSxlLmdldElzQWxsUm93c1NlbGVjdGVkPSgpPT57bGV0IHQ9ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3Mse3Jvd1NlbGVjdGlvbjpufT1lLmdldFN0YXRlKCkscj0hISh0Lmxlbmd0aCYmT2JqZWN0LmtleXMobikubGVuZ3RoKTtyZXR1cm4gciYmdC5zb21lKGU9PmUuZ2V0Q2FuU2VsZWN0KCkmJiFuW2UuaWRdKSYmKHI9ITEpLHJ9LGUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkPSgpPT57bGV0IHQ9ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5maWx0ZXIoZT0+ZS5nZXRDYW5TZWxlY3QoKSkse3Jvd1NlbGVjdGlvbjpufT1lLmdldFN0YXRlKCkscj0hIXQubGVuZ3RoO3JldHVybiByJiZ0LnNvbWUoZT0+IW5bZS5pZF0pJiYocj0hMSkscn0sZS5nZXRJc1NvbWVSb3dzU2VsZWN0ZWQ9KCk9PntsZXQgdD1PYmplY3Qua2V5cyhlLmdldFN0YXRlKCkucm93U2VsZWN0aW9uPz97fSkubGVuZ3RoO3JldHVybiB0PjAmJnQ8ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3MubGVuZ3RofSxlLmdldElzU29tZVBhZ2VSb3dzU2VsZWN0ZWQ9KCk9PntsZXQgdD1lLmdldFBhZ2luYXRpb25Sb3dNb2RlbCgpLmZsYXRSb3dzO3JldHVybiFlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZCgpJiZ0LmZpbHRlcihlPT5lLmdldENhblNlbGVjdCgpKS5zb21lKGU9PmUuZ2V0SXNTZWxlY3RlZCgpfHxlLmdldElzU29tZVNlbGVjdGVkKCkpfSxlLmdldFRvZ2dsZUFsbFJvd3NTZWxlY3RlZEhhbmRsZXI9KCk9PnQ9PntlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCh0LnRhcmdldC5jaGVja2VkKX0sZS5nZXRUb2dnbGVBbGxQYWdlUm93c1NlbGVjdGVkSGFuZGxlcj0oKT0+dD0+e2UudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZCh0LnRhcmdldC5jaGVja2VkKX19LGNyZWF0ZVJvdzooZSx0KT0+e2UudG9nZ2xlU2VsZWN0ZWQ9KG4scik9PntsZXQgaT1lLmdldElzU2VsZWN0ZWQoKTt0LnNldFJvd1NlbGVjdGlvbihhPT57aWYobj1uPT09dm9pZCAwPyFpOm4sZS5nZXRDYW5TZWxlY3QoKSYmaT09PW4pcmV0dXJuIGE7bGV0IG89ey4uLmF9O3JldHVybiBKKG8sZS5pZCxuLHI/LnNlbGVjdENoaWxkcmVuPz8hMCx0KSxvfSl9LGUuZ2V0SXNTZWxlY3RlZD0oKT0+e2xldHtyb3dTZWxlY3Rpb246bn09dC5nZXRTdGF0ZSgpO3JldHVybiBLZShlLG4pfSxlLmdldElzU29tZVNlbGVjdGVkPSgpPT57bGV0e3Jvd1NlbGVjdGlvbjpufT10LmdldFN0YXRlKCk7cmV0dXJuIHFlKGUsbik9PT1gc29tZWB9LGUuZ2V0SXNBbGxTdWJSb3dzU2VsZWN0ZWQ9KCk9PntsZXR7cm93U2VsZWN0aW9uOm59PXQuZ2V0U3RhdGUoKTtyZXR1cm4gcWUoZSxuKT09PWBhbGxgfSxlLmdldENhblNlbGVjdD0oKT0+dHlwZW9mIHQub3B0aW9ucy5lbmFibGVSb3dTZWxlY3Rpb249PWBmdW5jdGlvbmA/dC5vcHRpb25zLmVuYWJsZVJvd1NlbGVjdGlvbihlKTp0Lm9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uPz8hMCxlLmdldENhblNlbGVjdFN1YlJvd3M9KCk9PnR5cGVvZiB0Lm9wdGlvbnMuZW5hYmxlU3ViUm93U2VsZWN0aW9uPT1gZnVuY3Rpb25gP3Qub3B0aW9ucy5lbmFibGVTdWJSb3dTZWxlY3Rpb24oZSk6dC5vcHRpb25zLmVuYWJsZVN1YlJvd1NlbGVjdGlvbj8/ITAsZS5nZXRDYW5NdWx0aVNlbGVjdD0oKT0+dHlwZW9mIHQub3B0aW9ucy5lbmFibGVNdWx0aVJvd1NlbGVjdGlvbj09YGZ1bmN0aW9uYD90Lm9wdGlvbnMuZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb24oZSk6dC5vcHRpb25zLmVuYWJsZU11bHRpUm93U2VsZWN0aW9uPz8hMCxlLmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcj0oKT0+e2xldCB0PWUuZ2V0Q2FuU2VsZWN0KCk7cmV0dXJuIG49Pnt0JiZlLnRvZ2dsZVNlbGVjdGVkKG4udGFyZ2V0Py5jaGVja2VkKX19fX0sSj0oZSx0LG4scixpKT0+e3ZhciBhO2xldCBvPWkuZ2V0Um93KHQsITApO24/KG8uZ2V0Q2FuTXVsdGlTZWxlY3QoKXx8T2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT5kZWxldGUgZVt0XSksby5nZXRDYW5TZWxlY3QoKSYmKGVbdF09ITApKTpkZWxldGUgZVt0XSxyJiYoYT1vLnN1YlJvd3MpIT1udWxsJiZhLmxlbmd0aCYmby5nZXRDYW5TZWxlY3RTdWJSb3dzKCkmJm8uc3ViUm93cy5mb3JFYWNoKHQ9PkooZSx0LmlkLG4scixpKSl9O2Z1bmN0aW9uIEdlKGUsdCl7bGV0IG49ZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixyPVtdLGk9e30sYT1mdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcChlPT57dmFyIHQ7bGV0IG89S2UoZSxuKTtpZihvJiYoci5wdXNoKGUpLGlbZS5pZF09ZSksKHQ9ZS5zdWJSb3dzKSE9bnVsbCYmdC5sZW5ndGgmJihlPXsuLi5lLHN1YlJvd3M6YShlLnN1YlJvd3MpfSksbylyZXR1cm4gZX0pLmZpbHRlcihCb29sZWFuKX07cmV0dXJue3Jvd3M6YSh0LnJvd3MpLGZsYXRSb3dzOnIscm93c0J5SWQ6aX19ZnVuY3Rpb24gS2UoZSx0KXtyZXR1cm4gdFtlLmlkXT8/ITF9ZnVuY3Rpb24gcWUoZSx0LG4pe3ZhciByO2lmKCEoKHI9ZS5zdWJSb3dzKSE9bnVsbCYmci5sZW5ndGgpKXJldHVybiExO2xldCBpPSEwLGE9ITE7cmV0dXJuIGUuc3ViUm93cy5mb3JFYWNoKGU9PntpZighKGEmJiFpKSYmKGUuZ2V0Q2FuU2VsZWN0KCkmJihLZShlLHQpP2E9ITA6aT0hMSksZS5zdWJSb3dzJiZlLnN1YlJvd3MubGVuZ3RoKSl7bGV0IG49cWUoZSx0KTtuPT09YGFsbGA/YT0hMDoobj09PWBzb21lYCYmKGE9ITApLGk9ITEpfX0pLGk/YGFsbGA6YT9gc29tZWA6ITF9dmFyIEplPS8oWzAtOV0rKS9nbSxZZT0oZSx0LG4pPT5udChZKGUuZ2V0VmFsdWUobikpLnRvTG93ZXJDYXNlKCksWSh0LmdldFZhbHVlKG4pKS50b0xvd2VyQ2FzZSgpKSxYZT0oZSx0LG4pPT5udChZKGUuZ2V0VmFsdWUobikpLFkodC5nZXRWYWx1ZShuKSkpLFplPShlLHQsbik9PnR0KFkoZS5nZXRWYWx1ZShuKSkudG9Mb3dlckNhc2UoKSxZKHQuZ2V0VmFsdWUobikpLnRvTG93ZXJDYXNlKCkpLFFlPShlLHQsbik9PnR0KFkoZS5nZXRWYWx1ZShuKSksWSh0LmdldFZhbHVlKG4pKSksJGU9KGUsdCxuKT0+e2xldCByPWUuZ2V0VmFsdWUobiksaT10LmdldFZhbHVlKG4pO3JldHVybiByPmk/MTpyPGk/LTE6MH0sZXQ9KGUsdCxuKT0+dHQoZS5nZXRWYWx1ZShuKSx0LmdldFZhbHVlKG4pKTtmdW5jdGlvbiB0dChlLHQpe3JldHVybiBlPT09dD8wOmU+dD8xOi0xfWZ1bmN0aW9uIFkoZSl7cmV0dXJuIHR5cGVvZiBlPT1gbnVtYmVyYD9pc05hTihlKXx8ZT09PTEvMHx8ZT09PS0xLzA/YGA6U3RyaW5nKGUpOnR5cGVvZiBlPT1gc3RyaW5nYD9lOmBgfWZ1bmN0aW9uIG50KGUsdCl7bGV0IG49ZS5zcGxpdChKZSkuZmlsdGVyKEJvb2xlYW4pLHI9dC5zcGxpdChKZSkuZmlsdGVyKEJvb2xlYW4pO2Zvcig7bi5sZW5ndGgmJnIubGVuZ3RoOyl7bGV0IGU9bi5zaGlmdCgpLHQ9ci5zaGlmdCgpLGk9cGFyc2VJbnQoZSwxMCksYT1wYXJzZUludCh0LDEwKSxvPVtpLGFdLnNvcnQoKTtpZihpc05hTihvWzBdKSl7aWYoZT50KXJldHVybiAxO2lmKHQ+ZSlyZXR1cm4tMTtjb250aW51ZX1pZihpc05hTihvWzFdKSlyZXR1cm4gaXNOYU4oaSk/LTE6MTtpZihpPmEpcmV0dXJuIDE7aWYoYT5pKXJldHVybi0xfXJldHVybiBuLmxlbmd0aC1yLmxlbmd0aH12YXIgWD17YWxwaGFudW1lcmljOlllLGFscGhhbnVtZXJpY0Nhc2VTZW5zaXRpdmU6WGUsdGV4dDpaZSx0ZXh0Q2FzZVNlbnNpdGl2ZTpRZSxkYXRldGltZTokZSxiYXNpYzpldH0scnQ9W3ZlLFJlLE5lLFBlLGJlLGtlLHplLEJlLHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtzb3J0aW5nOltdLC4uLmV9KSxnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe3NvcnRpbmdGbjpgYXV0b2Asc29ydFVuZGVmaW5lZDoxfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblNvcnRpbmdDaGFuZ2U6Tyhgc29ydGluZ2AsZSksaXNNdWx0aVNvcnRFdmVudDplPT5lLnNoaWZ0S2V5fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRBdXRvU29ydGluZ0ZuPSgpPT57bGV0IG49dC5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3Muc2xpY2UoMTApLHI9ITE7Zm9yKGxldCB0IG9mIG4pe2xldCBuPXQ/LmdldFZhbHVlKGUuaWQpO2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKT09PWBbb2JqZWN0IERhdGVdYClyZXR1cm4gWC5kYXRldGltZTtpZih0eXBlb2Ygbj09YHN0cmluZ2AmJihyPSEwLG4uc3BsaXQoSmUpLmxlbmd0aD4xKSlyZXR1cm4gWC5hbHBoYW51bWVyaWN9cmV0dXJuIHI/WC50ZXh0OlguYmFzaWN9LGUuZ2V0QXV0b1NvcnREaXI9KCk9PnR5cGVvZiB0LmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93c1swXT8uZ2V0VmFsdWUoZS5pZCk9PWBzdHJpbmdgP2Bhc2NgOmBkZXNjYCxlLmdldFNvcnRpbmdGbj0oKT0+e2lmKCFlKXRocm93IEVycm9yKCk7cmV0dXJuIGsoZS5jb2x1bW5EZWYuc29ydGluZ0ZuKT9lLmNvbHVtbkRlZi5zb3J0aW5nRm46ZS5jb2x1bW5EZWYuc29ydGluZ0ZuPT09YGF1dG9gP2UuZ2V0QXV0b1NvcnRpbmdGbigpOnQub3B0aW9ucy5zb3J0aW5nRm5zPy5bZS5jb2x1bW5EZWYuc29ydGluZ0ZuXT8/WFtlLmNvbHVtbkRlZi5zb3J0aW5nRm5dfSxlLnRvZ2dsZVNvcnRpbmc9KG4scik9PntsZXQgaT1lLmdldE5leHRTb3J0aW5nT3JkZXIoKSxhPW4hPW51bGw7dC5zZXRTb3J0aW5nKG89PntsZXQgcz1vPy5maW5kKHQ9PnQuaWQ9PT1lLmlkKSxjPW8/LmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCksbD1bXSx1LGQ9YT9uOmk9PT1gZGVzY2A7cmV0dXJuIHU9byE9bnVsbCYmby5sZW5ndGgmJmUuZ2V0Q2FuTXVsdGlTb3J0KCkmJnI/cz9gdG9nZ2xlYDpgYWRkYDpvIT1udWxsJiZvLmxlbmd0aCYmYyE9PW8ubGVuZ3RoLTE/YHJlcGxhY2VgOnM/YHRvZ2dsZWA6YHJlcGxhY2VgLHU9PT1gdG9nZ2xlYCYmKGF8fGl8fCh1PWByZW1vdmVgKSksdT09PWBhZGRgPyhsPVsuLi5vLHtpZDplLmlkLGRlc2M6ZH1dLGwuc3BsaWNlKDAsbC5sZW5ndGgtKHQub3B0aW9ucy5tYXhNdWx0aVNvcnRDb2xDb3VudD8/MioqNTMtMSkpKTpsPXU9PT1gdG9nZ2xlYD9vLm1hcCh0PT50LmlkPT09ZS5pZD97Li4udCxkZXNjOmR9OnQpOnU9PT1gcmVtb3ZlYD9vLmZpbHRlcih0PT50LmlkIT09ZS5pZCk6W3tpZDplLmlkLGRlc2M6ZH1dLGx9KX0sZS5nZXRGaXJzdFNvcnREaXI9KCk9PmUuY29sdW1uRGVmLnNvcnREZXNjRmlyc3Q/P3Qub3B0aW9ucy5zb3J0RGVzY0ZpcnN0Pz9lLmdldEF1dG9Tb3J0RGlyKCk9PT1gZGVzY2A/YGRlc2NgOmBhc2NgLGUuZ2V0TmV4dFNvcnRpbmdPcmRlcj1uPT57bGV0IHI9ZS5nZXRGaXJzdFNvcnREaXIoKSxpPWUuZ2V0SXNTb3J0ZWQoKTtyZXR1cm4gaT9pIT09ciYmKHQub3B0aW9ucy5lbmFibGVTb3J0aW5nUmVtb3ZhbD8/ITApJiYoIW58fCh0Lm9wdGlvbnMuZW5hYmxlTXVsdGlSZW1vdmU/PyEwKSk/ITE6aT09PWBkZXNjYD9gYXNjYDpgZGVzY2A6cn0sZS5nZXRDYW5Tb3J0PSgpPT4oZS5jb2x1bW5EZWYuZW5hYmxlU29ydGluZz8/ITApJiYodC5vcHRpb25zLmVuYWJsZVNvcnRpbmc/PyEwKSYmISFlLmFjY2Vzc29yRm4sZS5nZXRDYW5NdWx0aVNvcnQ9KCk9PmUuY29sdW1uRGVmLmVuYWJsZU11bHRpU29ydD8/dC5vcHRpb25zLmVuYWJsZU11bHRpU29ydD8/ISFlLmFjY2Vzc29yRm4sZS5nZXRJc1NvcnRlZD0oKT0+e2xldCBuPXQuZ2V0U3RhdGUoKS5zb3J0aW5nPy5maW5kKHQ9PnQuaWQ9PT1lLmlkKTtyZXR1cm4gbj9uLmRlc2M/YGRlc2NgOmBhc2NgOiExfSxlLmdldFNvcnRJbmRleD0oKT0+dC5nZXRTdGF0ZSgpLnNvcnRpbmc/LmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCk/Py0xLGUuY2xlYXJTb3J0aW5nPSgpPT57dC5zZXRTb3J0aW5nKHQ9PnQhPW51bGwmJnQubGVuZ3RoP3QuZmlsdGVyKHQ9PnQuaWQhPT1lLmlkKTpbXSl9LGUuZ2V0VG9nZ2xlU29ydGluZ0hhbmRsZXI9KCk9PntsZXQgbj1lLmdldENhblNvcnQoKTtyZXR1cm4gcj0+e24mJihyLnBlcnNpc3Q9PW51bGx8fHIucGVyc2lzdCgpLGUudG9nZ2xlU29ydGluZz09bnVsbHx8ZS50b2dnbGVTb3J0aW5nKHZvaWQgMCxlLmdldENhbk11bHRpU29ydCgpP3Qub3B0aW9ucy5pc011bHRpU29ydEV2ZW50PT1udWxsP3ZvaWQgMDp0Lm9wdGlvbnMuaXNNdWx0aVNvcnRFdmVudChyKTohMSkpfX19LGNyZWF0ZVRhYmxlOmU9PntlLnNldFNvcnRpbmc9dD0+ZS5vcHRpb25zLm9uU29ydGluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uU29ydGluZ0NoYW5nZSh0KSxlLnJlc2V0U29ydGluZz10PT57ZS5zZXRTb3J0aW5nKHQ/W106ZS5pbml0aWFsU3RhdGU/LnNvcnRpbmc/P1tdKX0sZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbD0oKT0+ZS5nZXRHcm91cGVkUm93TW9kZWwoKSxlLmdldFNvcnRlZFJvd01vZGVsPSgpPT4oIWUuX2dldFNvcnRlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0U29ydGVkUm93TW9kZWwmJihlLl9nZXRTb3J0ZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0U29ydGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxTb3J0aW5nfHwhZS5fZ2V0U29ydGVkUm93TW9kZWw/ZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbCgpOmUuX2dldFNvcnRlZFJvd01vZGVsKCkpfX0samUsVmUsSGUsVWUsV2UsSWVdO2Z1bmN0aW9uIGl0KGUpe2xldCB0PVsuLi5ydCwuLi5lLl9mZWF0dXJlcz8/W11dLG49e19mZWF0dXJlczp0fSxyPW4uX2ZlYXR1cmVzLnJlZHVjZSgoZSx0KT0+T2JqZWN0LmFzc2lnbihlLHQuZ2V0RGVmYXVsdE9wdGlvbnM9PW51bGw/dm9pZCAwOnQuZ2V0RGVmYXVsdE9wdGlvbnMobikpLHt9KSxpPWU9Pm4ub3B0aW9ucy5tZXJnZU9wdGlvbnM/bi5vcHRpb25zLm1lcmdlT3B0aW9ucyhyLGUpOnsuLi5yLC4uLmV9LGE9ey4uLmUuaW5pdGlhbFN0YXRlPz97fX07bi5fZmVhdHVyZXMuZm9yRWFjaChlPT57YT0oZS5nZXRJbml0aWFsU3RhdGU9PW51bGw/dm9pZCAwOmUuZ2V0SW5pdGlhbFN0YXRlKGEpKT8/YX0pO2xldCBvPVtdLHM9ITEsYz17X2ZlYXR1cmVzOnQsb3B0aW9uczp7Li4uciwuLi5lfSxpbml0aWFsU3RhdGU6YSxfcXVldWU6ZT0+e28ucHVzaChlKSxzfHwocz0hMCxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57Zm9yKDtvLmxlbmd0aDspby5zaGlmdCgpKCk7cz0hMX0pLmNhdGNoKGU9PnNldFRpbWVvdXQoKCk9Pnt0aHJvdyBlfSkpKX0scmVzZXQ6KCk9PntuLnNldFN0YXRlKG4uaW5pdGlhbFN0YXRlKX0sc2V0T3B0aW9uczplPT57bGV0IHQ9RChlLG4ub3B0aW9ucyk7bi5vcHRpb25zPWkodCl9LGdldFN0YXRlOigpPT5uLm9wdGlvbnMuc3RhdGUsc2V0U3RhdGU6ZT0+e24ub3B0aW9ucy5vblN0YXRlQ2hhbmdlPT1udWxsfHxuLm9wdGlvbnMub25TdGF0ZUNoYW5nZShlKX0sX2dldFJvd0lkOihlLHQscik9PihuLm9wdGlvbnMuZ2V0Um93SWQ9PW51bGw/dm9pZCAwOm4ub3B0aW9ucy5nZXRSb3dJZChlLHQscikpPz9gJHtyP1tyLmlkLHRdLmpvaW4oYC5gKTp0fWAsZ2V0Q29yZVJvd01vZGVsOigpPT4obi5fZ2V0Q29yZVJvd01vZGVsfHw9bi5vcHRpb25zLmdldENvcmVSb3dNb2RlbChuKSxuLl9nZXRDb3JlUm93TW9kZWwoKSksZ2V0Um93TW9kZWw6KCk9Pm4uZ2V0UGFnaW5hdGlvblJvd01vZGVsKCksZ2V0Um93OihlLHQpPT57bGV0IHI9KHQ/bi5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTpuLmdldFJvd01vZGVsKCkpLnJvd3NCeUlkW2VdO2lmKCFyJiYocj1uLmdldENvcmVSb3dNb2RlbCgpLnJvd3NCeUlkW2VdLCFyKSl0aHJvdyBFcnJvcigpO3JldHVybiByfSxfZ2V0RGVmYXVsdENvbHVtbkRlZjpBKCgpPT5bbi5vcHRpb25zLmRlZmF1bHRDb2x1bW5dLGU9PihlPz89e30se2hlYWRlcjplPT57bGV0IHQ9ZS5oZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtyZXR1cm4gdC5hY2Nlc3NvcktleT90LmFjY2Vzc29yS2V5OnQuYWNjZXNzb3JGbj90LmlkOm51bGx9LGNlbGw6ZT0+e3ZhciB0O3JldHVybigodD1lLnJlbmRlclZhbHVlKCkpPT1udWxsfHx0LnRvU3RyaW5nPT1udWxsP3ZvaWQgMDp0LnRvU3RyaW5nKCkpPz9udWxsfSwuLi5uLl9mZWF0dXJlcy5yZWR1Y2UoKGUsdCk9Pk9iamVjdC5hc3NpZ24oZSx0LmdldERlZmF1bHRDb2x1bW5EZWY9PW51bGw/dm9pZCAwOnQuZ2V0RGVmYXVsdENvbHVtbkRlZigpKSx7fSksLi4uZX0pLGooZSxgZGVidWdDb2x1bW5zYCxgX2dldERlZmF1bHRDb2x1bW5EZWZgKSksX2dldENvbHVtbkRlZnM6KCk9Pm4ub3B0aW9ucy5jb2x1bW5zLGdldEFsbENvbHVtbnM6QSgoKT0+W24uX2dldENvbHVtbkRlZnMoKV0sZT0+e2xldCB0PWZ1bmN0aW9uKGUscixpKXtyZXR1cm4gaT09PXZvaWQgMCYmKGk9MCksZS5tYXAoZT0+e2xldCBhPWdlKG4sZSxpLHIpLG89ZTtyZXR1cm4gYS5jb2x1bW5zPW8uY29sdW1ucz90KG8uY29sdW1ucyxhLGkrMSk6W10sYX0pfTtyZXR1cm4gdChlKX0saihlLGBkZWJ1Z0NvbHVtbnNgLGBnZXRBbGxDb2x1bW5zYCkpLGdldEFsbEZsYXRDb2x1bW5zOkEoKCk9PltuLmdldEFsbENvbHVtbnMoKV0sZT0+ZS5mbGF0TWFwKGU9PmUuZ2V0RmxhdENvbHVtbnMoKSksaihlLGBkZWJ1Z0NvbHVtbnNgLGBnZXRBbGxGbGF0Q29sdW1uc2ApKSxfZ2V0QWxsRmxhdENvbHVtbnNCeUlkOkEoKCk9PltuLmdldEFsbEZsYXRDb2x1bW5zKCldLGU9PmUucmVkdWNlKChlLHQpPT4oZVt0LmlkXT10LGUpLHt9KSxqKGUsYGRlYnVnQ29sdW1uc2AsYGdldEFsbEZsYXRDb2x1bW5zQnlJZGApKSxnZXRBbGxMZWFmQ29sdW1uczpBKCgpPT5bbi5nZXRBbGxDb2x1bW5zKCksbi5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sKGUsdCk9PnQoZS5mbGF0TWFwKGU9PmUuZ2V0TGVhZkNvbHVtbnMoKSkpLGooZSxgZGVidWdDb2x1bW5zYCxgZ2V0QWxsTGVhZkNvbHVtbnNgKSksZ2V0Q29sdW1uOmU9Pm4uX2dldEFsbEZsYXRDb2x1bW5zQnlJZCgpW2VdfTtPYmplY3QuYXNzaWduKG4sYyk7Zm9yKGxldCBlPTA7ZTxuLl9mZWF0dXJlcy5sZW5ndGg7ZSsrKXtsZXQgdD1uLl9mZWF0dXJlc1tlXTt0PT1udWxsfHx0LmNyZWF0ZVRhYmxlPT1udWxsfHx0LmNyZWF0ZVRhYmxlKG4pfXJldHVybiBufWZ1bmN0aW9uIGF0KCl7cmV0dXJuIGU9PkEoKCk9PltlLm9wdGlvbnMuZGF0YV0sdD0+e2xldCBuPXtyb3dzOltdLGZsYXRSb3dzOltdLHJvd3NCeUlkOnt9fSxyPWZ1bmN0aW9uKHQsaSxhKXtpPT09dm9pZCAwJiYoaT0wKTtsZXQgbz1bXTtmb3IobGV0IGM9MDtjPHQubGVuZ3RoO2MrKyl7bGV0IGw9eWUoZSxlLl9nZXRSb3dJZCh0W2NdLGMsYSksdFtjXSxjLGksdm9pZCAwLGE/LmlkKTtpZihuLmZsYXRSb3dzLnB1c2gobCksbi5yb3dzQnlJZFtsLmlkXT1sLG8ucHVzaChsKSxlLm9wdGlvbnMuZ2V0U3ViUm93cyl7dmFyIHM7bC5vcmlnaW5hbFN1YlJvd3M9ZS5vcHRpb25zLmdldFN1YlJvd3ModFtjXSxjKSwocz1sLm9yaWdpbmFsU3ViUm93cykhPW51bGwmJnMubGVuZ3RoJiYobC5zdWJSb3dzPXIobC5vcmlnaW5hbFN1YlJvd3MsaSsxLGwpKX19cmV0dXJuIG99O3JldHVybiBuLnJvd3M9cih0KSxufSxqKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldFJvd01vZGVsYCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKX1mdW5jdGlvbiBvdCgpe3JldHVybiBlPT5BKCgpPT5bZS5nZXRTdGF0ZSgpLnNvcnRpbmcsZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbCgpXSwodCxuKT0+e2lmKCFuLnJvd3MubGVuZ3RofHwhKHQhPW51bGwmJnQubGVuZ3RoKSlyZXR1cm4gbjtsZXQgcj1lLmdldFN0YXRlKCkuc29ydGluZyxpPVtdLGE9ci5maWx0ZXIodD0+ZS5nZXRDb2x1bW4odC5pZCk/LmdldENhblNvcnQoKSksbz17fTthLmZvckVhY2godD0+e2xldCBuPWUuZ2V0Q29sdW1uKHQuaWQpO24mJihvW3QuaWRdPXtzb3J0VW5kZWZpbmVkOm4uY29sdW1uRGVmLnNvcnRVbmRlZmluZWQsaW52ZXJ0U29ydGluZzpuLmNvbHVtbkRlZi5pbnZlcnRTb3J0aW5nLHNvcnRpbmdGbjpuLmdldFNvcnRpbmdGbigpfSl9KTtsZXQgcz1lPT57bGV0IHQ9ZS5tYXAoZT0+KHsuLi5lfSkpO3JldHVybiB0LnNvcnQoKGUsdCk9Pntmb3IobGV0IG49MDtuPGEubGVuZ3RoO24rPTEpe2xldCByPWFbbl0saT1vW3IuaWRdLHM9aS5zb3J0VW5kZWZpbmVkLGM9cj8uZGVzYz8/ITEsbD0wO2lmKHMpe2xldCBuPWUuZ2V0VmFsdWUoci5pZCksaT10LmdldFZhbHVlKHIuaWQpLGE9bj09PXZvaWQgMCxvPWk9PT12b2lkIDA7aWYoYXx8byl7aWYocz09PWBmaXJzdGApcmV0dXJuIGE/LTE6MTtpZihzPT09YGxhc3RgKXJldHVybiBhPzE6LTE7bD1hJiZvPzA6YT9zOi1zfX1pZihsPT09MCYmKGw9aS5zb3J0aW5nRm4oZSx0LHIuaWQpKSxsIT09MClyZXR1cm4gYyYmKGwqPS0xKSxpLmludmVydFNvcnRpbmcmJihsKj0tMSksbH1yZXR1cm4gZS5pbmRleC10LmluZGV4fSksdC5mb3JFYWNoKGU9Pnt2YXIgdDtpLnB1c2goZSksKHQ9ZS5zdWJSb3dzKSE9bnVsbCYmdC5sZW5ndGgmJihlLnN1YlJvd3M9cyhlLnN1YlJvd3MpKX0pLHR9O3JldHVybntyb3dzOnMobi5yb3dzKSxmbGF0Um93czppLHJvd3NCeUlkOm4ucm93c0J5SWR9fSxqKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldFNvcnRlZFJvd01vZGVsYCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKX1mdW5jdGlvbiBaKCl7cmV0dXJuITB9dmFyIHN0PVN5bWJvbChgbWVyZ2UtcHJveHlgKSxjdD17Z2V0KGUsdCxuKXtyZXR1cm4gdD09PXN0P246ZS5nZXQodCl9LGhhcyhlLHQpe3JldHVybiBlLmhhcyh0KX0sc2V0OlosZGVsZXRlUHJvcGVydHk6WixnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KXtyZXR1cm57Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0KCl7cmV0dXJuIGUuZ2V0KHQpfSxzZXQ6WixkZWxldGVQcm9wZXJ0eTpafX0sb3duS2V5cyhlKXtyZXR1cm4gZS5rZXlzKCl9fTtmdW5jdGlvbiBsdChlKXtyZXR1cm5gdmFsdWVgaW4gZT9lLnZhbHVlOmV9ZnVuY3Rpb24gUSgpe3ZhciBlPVsuLi5hcmd1bWVudHNdO3JldHVybiBuZXcgUHJveHkoe2dldCh0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7bGV0IHI9bHQoZVtuXSlbdF07aWYociE9PXZvaWQgMClyZXR1cm4gcn19LGhhcyh0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZih0IGluIGx0KGVbbl0pKXJldHVybiEwO3JldHVybiExfSxrZXlzKCl7bGV0IHQ9W107Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5wdXNoKC4uLk9iamVjdC5rZXlzKGx0KGVbbl0pKSk7cmV0dXJuWy4uLkFycmF5LmZyb20obmV3IFNldCh0KSldfX0sY3QpfXZhciAkPWwoe3Byb3BzOltgcmVuZGVyYCxgcHJvcHNgXSxzZXR1cDplPT4oKT0+dHlwZW9mIGUucmVuZGVyPT1gZnVuY3Rpb25gfHx0eXBlb2YgZS5yZW5kZXI9PWBvYmplY3RgP2koZS5yZW5kZXIsZS5wcm9wcyk6ZS5yZW5kZXJ9KTtmdW5jdGlvbiB1dChlKXtyZXR1cm4gUShlLHtkYXRhOmgoZS5kYXRhKX0pfWZ1bmN0aW9uIGR0KHQpe2xldCBuPWEodC5kYXRhKSxyPWl0KFEoe3N0YXRlOnt9LG9uU3RhdGVDaGFuZ2U6KCk9Pnt9LHJlbmRlckZhbGxiYWNrVmFsdWU6bnVsbCxtZXJnZU9wdGlvbnMoZSx0KXtyZXR1cm4gbj97Li4uZSwuLi50fTpRKGUsdCl9fSxuP3V0KHQpOnQpKTtpZihuKXtsZXQgbj10ZSh0LmRhdGEpO2UobiwoKT0+e3Iuc2V0U3RhdGUoZT0+KHsuLi5lLGRhdGE6bi52YWx1ZX0pKX0se2ltbWVkaWF0ZTohMH0pfWxldCBpPXJlKHIuaW5pdGlhbFN0YXRlKTtyZXR1cm4gZWUoKCk9PntyLnNldE9wdGlvbnMoZT0+e2xldCByPW5ldyBQcm94eSh7fSx7Z2V0OihlLHQpPT5pLnZhbHVlW3RdfSk7cmV0dXJuIFEoZSxuP3V0KHQpOnQse3N0YXRlOlEocix0LnN0YXRlPz97fSksb25TdGF0ZUNoYW5nZTplPT57ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2kudmFsdWU9ZShpLnZhbHVlKTppLnZhbHVlPWUsdC5vblN0YXRlQ2hhbmdlPT1udWxsfHx0Lm9uU3RhdGVDaGFuZ2UoZSl9fSl9KX0pLHJ9dmFyIGZ0PVtgYXJpYS1sYWJlbGBdLHB0PWwoe19fbmFtZTpgU29ydEhlYWRlckJ1dHRvbmAscHJvcHM6e2hlYWRlcjp7fX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPV8oKCk9PnQuaGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpKSxyPV8oKCk9Pm4udmFsdWU9PT1gYXNjYD9pZTpuLnZhbHVlPT09YGRlc2NgP206cCksaT1fKCgpPT57bGV0IGU9dC5oZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXI7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYD9lOnQuaGVhZGVyLmNvbHVtbi5pZH0pLGE9XygoKT0+e2xldCBlPW4udmFsdWU9PT1gYXNjYD9gYXNjZW5kaW5nYDpuLnZhbHVlPT09YGRlc2NgP2BkZXNjZW5kaW5nYDpgbm9uZWA7cmV0dXJuYFNvcnQgYnkgJHtpLnZhbHVlfSwgY3VycmVudGx5ICR7ZX1gfSk7ZnVuY3Rpb24gbygpe3QuaGVhZGVyLmNvbHVtbi50b2dnbGVTb3J0aW5nKG4udmFsdWU9PT1gYXNjYCl9cmV0dXJuKHQsaSk9PntsZXQgcz1vZShgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIHkoKSxkKGBidXR0b25gLHt0eXBlOmBidXR0b25gLCJhcmlhLWxhYmVsIjphLnZhbHVlLGNsYXNzOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgcm91bmRlZCBweC0xLjUgcHktMC41IGhvdmVyOnRleHQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOnJpbmctMyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMSBmb2N1cy12aXNpYmxlOm91dGxpbmUtcmluZ2Asb25DbGljazpvfSxbZS5oZWFkZXIuaXNQbGFjZWhvbGRlcj94KGBgLCEwKTooeSgpLGIoaCgkKSx7a2V5OjAscmVuZGVyOmUuaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLHByb3BzOmUuaGVhZGVyLmdldENvbnRleHQoKX0sbnVsbCw4LFtgcmVuZGVyYCxgcHJvcHNgXSkpLGcocyx7aWNvbjpyLnZhbHVlLGNsYXNzOlMoW2BzaXplLTMgc2hyaW5rLTBgLG4udmFsdWU/YHRleHQtZm9yZWdyb3VuZGA6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MGBdKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pXSw4LGZ0KX19fSksbXQ9bCh7X19uYW1lOmBEYXRhVGFibGVgLHByb3BzOntjb2x1bW5zOnt9LGRhdGE6e30scm93Q2xhc3M6e3R5cGU6RnVuY3Rpb259LGVtcHR5TWVzc2FnZTp7fSxzb3J0aW5nOnt9fSxlbWl0czpbYHVwZGF0ZTpzb3J0aW5nYF0sc2V0dXAoZSx7ZW1pdDpufSl7bGV0IGk9ZSxhPW4scz1yZShbXSksYz1kdCh7Z2V0IGRhdGEoKXtyZXR1cm4gaS5kYXRhfSxnZXQgY29sdW1ucygpe3JldHVybiBpLmNvbHVtbnN9LGdldENvcmVSb3dNb2RlbDphdCgpLGdldFNvcnRlZFJvd01vZGVsOm90KCksb25Tb3J0aW5nQ2hhbmdlOmU9PntsZXQgdD1pLnNvcnRpbmc/P3MudmFsdWUsbj10eXBlb2YgZT09YGZ1bmN0aW9uYD9lKHQpOmU7aS5zb3J0aW5nPT09dm9pZCAwP3MudmFsdWU9bjphKGB1cGRhdGU6c29ydGluZ2Asbil9LHN0YXRlOntnZXQgc29ydGluZygpe3JldHVybiBpLnNvcnRpbmc/P3MudmFsdWV9fX0pO2Z1bmN0aW9uIGwoZSl7aWYoZT09PWBhc2NgKXJldHVybmBhc2NlbmRpbmdgO2lmKGU9PT1gZGVzY2ApcmV0dXJuYGRlc2NlbmRpbmdgfXJldHVybihuLGkpPT4oeSgpLGIoaChjZSksbnVsbCx7ZGVmYXVsdDp0KCgpPT5bZyhoKEUpLG51bGwse2RlZmF1bHQ6dCgoKT0+Wyh5KCEwKSxkKHIsbnVsbCxmKGgoYykuZ2V0SGVhZGVyR3JvdXBzKCksZT0+KHkoKSxiKGgodykse2tleTplLmlkfSx7ZGVmYXVsdDp0KCgpPT5bKHkoITApLGQocixudWxsLGYoZS5oZWFkZXJzLGU9Pih5KCksYihoKFQpLHtrZXk6ZS5pZCxjbGFzczpTKGUuY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5hbGlnbj09PWByaWdodGA/YHRleHQtcmlnaHRgOnZvaWQgMCksImFyaWEtc29ydCI6ZS5jb2x1bW4uZ2V0Q2FuU29ydCgpP2woZS5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSk/P2Bub25lYDp2b2lkIDB9LHtkZWZhdWx0OnQoKCk9PltlLmNvbHVtbi5nZXRDYW5Tb3J0KCk/KHkoKSxiKHB0LHtrZXk6MCxoZWFkZXI6ZSxjbGFzczpgLW14LTEuNWB9LG51bGwsOCxbYGhlYWRlcmBdKSk6ZS5pc1BsYWNlaG9sZGVyP3goYGAsITApOih5KCksYihoKCQpLHtrZXk6MSxyZW5kZXI6ZS5jb2x1bW4uY29sdW1uRGVmLmhlYWRlcixwcm9wczplLmdldENvbnRleHQoKX0sbnVsbCw4LFtgcmVuZGVyYCxgcHJvcHNgXSkpXSksXzoyfSwxMDMyLFtgY2xhc3NgLGBhcmlhLXNvcnRgXSkpKSwxMjgpKV0pLF86Mn0sMTAyNCkpKSwxMjgpKV0pLF86MX0pLGcoaChsZSksbnVsbCx7ZGVmYXVsdDp0KCgpPT5baChjKS5nZXRSb3dNb2RlbCgpLnJvd3MubGVuZ3RoPT09MD8oeSgpLGIoaChkZSkse2tleTowLGNvbHNwYW46ZS5jb2x1bW5zLmxlbmd0aCxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0se2RlZmF1bHQ6dCgoKT0+W25lKG8oZS5lbXB0eU1lc3NhZ2U/P2Bub25lYCksMSldKSxfOjF9LDgsW2Bjb2xzcGFuYF0pKTp4KGBgLCEwKSwoeSghMCksZChyLG51bGwsZihoKGMpLmdldFJvd01vZGVsKCkucm93cyxuPT4oeSgpLGIoaCh3KSx7a2V5Om4uaWQsY2xhc3M6UyhlLnJvd0NsYXNzPy4obi5vcmlnaW5hbCkpfSx7ZGVmYXVsdDp0KCgpPT5bKHkoITApLGQocixudWxsLGYobi5nZXRWaXNpYmxlQ2VsbHMoKSxlPT4oeSgpLGIoaChDKSx7a2V5OmUuaWQsY2xhc3M6UyhlLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uYWxpZ249PT1gcmlnaHRgP2B0ZXh0LXJpZ2h0IHRhYnVsYXItbnVtc2A6dm9pZCAwKX0se2RlZmF1bHQ6dCgoKT0+W2coaCgkKSx7cmVuZGVyOmUuY29sdW1uLmNvbHVtbkRlZi5jZWxsLHByb3BzOmUuZ2V0Q29udGV4dCgpfSxudWxsLDgsW2ByZW5kZXJgLGBwcm9wc2BdKV0pLF86Mn0sMTAzMixbYGNsYXNzYF0pKSksMTI4KSldKSxfOjJ9LDEwMzIsW2BjbGFzc2BdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9KSl9fSk7ZXhwb3J0e290IGFzIGEsVCBhcyBjLGxlIGFzIGQsY2UgYXMgZixhdCBhcyBpLHcgYXMgbCxwdCBhcyBuLGZlIGFzIG8sZHQgYXMgcixFIGFzIHMsbXQgYXMgdCxDIGFzIHV9Ow==",
|
|
),
|
|
},
|
|
"EntityLink-Dg93KGVT.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e1NpIGFzIGUsWSBhcyB0LF9uIGFzIG4sYW4gYXMgcixjbiBhcyBpLGdpIGFzIGEsaG4gYXMgbyxuIGFzIHMsbnIgYXMgYyx1ciBhcyBsLHlpIGFzIHV9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjt2YXIgZD1bYGFyaWEtbGFiZWxgLGB0aXRsZWBdLGY9bih7X19uYW1lOmBFbnRpdHlMaW5rYCxwcm9wczp7bGFiZWw6e30sa2luZDp7fSxpZDp7fSxsYWJlbENsYXNzOnt9fSxzZXR1cChuKXtsZXQgZj1uLHA9cygpLG09e3VzZXI6e3BhZ2U6YGNvbnN1bWVyc2AscGFyYW1LZXk6YHVzZXJgLG5vdW46YENvbnN1bWVyc2B9LG1vZGVsOntwYWdlOmBtb2RlbHNgLHBhcmFtS2V5OmBtb2RlbGAsbm91bjpgTW9kZWxzYH19O2Z1bmN0aW9uIGgoZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgdD1tW2Yua2luZF07cC5nb1RvKHQucGFnZSx7W3QucGFyYW1LZXldOmYuaWR9KX1yZXR1cm4ocyxmKT0+e2xldCBwPWwoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBjKCksaShgYnV0dG9uYCx7dHlwZTpgYnV0dG9uYCwiYXJpYS1sYWJlbCI6YFZpZXcgJHtuLmxhYmVsfSBpbiAke21bbi5raW5kXS5ub3VufWAsdGl0bGU6YFZpZXcgJHtuLmxhYmVsfSBpbiAke21bbi5raW5kXS5ub3VufWAsY2xhc3M6YGlubGluZS1mbGV4IG1pbi13LTAgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xIHJvdW5kZWQtc20gdGV4dC1pbmhlcml0IGhvdmVyOnRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTBgLG9uQ2xpY2s6aH0sW3IoYHNwYW5gLHtjbGFzczp1KFtgbWluLXctMGAsbi5sYWJlbENsYXNzXSl9LGUobi5sYWJlbCksMyksbyhwLHtpY29uOmEodCksY2xhc3M6YHNpemUtMyBzaHJpbmstMGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSldLDgsZCl9fX0pO2V4cG9ydHtmIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"ErrorState-ym6eSlj2.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0UgYXMgZSxGciBhcyB0LEogYXMgbixTaSBhcyByLF9uIGFzIGksYW4gYXMgYSxjbiBhcyBvLGdpIGFzIHMsaG4gYXMgYyxtbiBhcyBsLG10IGFzIHUsbnIgYXMgZCxvaSBhcyBmLG9uIGFzIHAsc24gYXMgbSx1ciBhcyBoLHlpIGFzIGd9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjt2YXIgXz17cm9sZTpgYWxlcnRgLGNsYXNzOmBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMiBweC00IHB5LTggdGV4dC1jZW50ZXJgfSx2PXtjbGFzczpgbWF4LXctZnVsbCBicmVhay13b3JkcyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZGVzdHJ1Y3RpdmVgfSx5PWkoe19fbmFtZTpgRXJyb3JTdGF0ZWAscHJvcHM6e21lc3NhZ2U6e30sb25SZXRyeTp7dHlwZTpGdW5jdGlvbn19LHNldHVwKGkpe2xldCB5PWksYj1mKCExKTthc3luYyBmdW5jdGlvbiB4KCl7aWYoISgheS5vblJldHJ5fHxiLnZhbHVlKSl7Yi52YWx1ZT0hMDt0cnl7YXdhaXQgeS5vblJldHJ5KCl9ZmluYWxseXtiLnZhbHVlPSExfX19cmV0dXJuKGYseSk9PntsZXQgUz1oKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gZCgpLG8oYGRpdmAsXyxbYyhTLHtpY29uOnModSksY2xhc3M6YHNpemUtNiB0ZXh0LWRlc3RydWN0aXZlYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxhKGBwYCx2LHIoaS5tZXNzYWdlKSwxKSxpLm9uUmV0cnk/KGQoKSxwKHMoZSkse2tleTowLHR5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLGNsYXNzOmBtdC0xYCxkaXNhYmxlZDpiLnZhbHVlLG9uQ2xpY2s6eH0se2RlZmF1bHQ6dCgoKT0+W2MoUyx7aWNvbjpzKG4pLGNsYXNzOmcoW2BzaXplLTMuNWAsYi52YWx1ZT9gYW5pbWF0ZS1zcGluIG1vdGlvbi1yZWR1Y2U6YW5pbWF0ZS1ub25lYDp2b2lkIDBdKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pLGwoYCBgK3IoYi52YWx1ZT9gUmV0cnlpbmfigKZgOmBSZXRyeWApLDEpXSksXzoxfSw4LFtgZGlzYWJsZWRgXSkpOm0oYGAsITApXSl9fX0pO2V4cG9ydHt5IGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"HomePage-xxao-DzQ.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FyIGFzIGUsQyBhcyB0LEZyIGFzIG4sSnQgYXMgcixTIGFzIGksU2kgYXMgYSxUIGFzIG8sWG4gYXMgcyxfbiBhcyBjLGFuIGFzIGwsYiBhcyBlZSxjbiBhcyB1LGNyIGFzIGQsZXIgYXMgdGUsZnIgYXMgZixnIGFzIG5lLGdpIGFzIHAsaG4gYXMgbSxpaSBhcyByZSxpbiBhcyBoLGxyIGFzIGcsbW4gYXMgXyxuIGFzIGllLG5yIGFzIHYsb2kgYXMgeSxvbiBhcyBiLHNuIGFzIHgsdCBhcyBTLHYgYXMgYWUsdyBhcyBDLHggYXMgb2UseSBhcyBzZSx5aSBhcyB3fWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7aW1wb3J0e24gYXMgY2UsciBhcyBsZSx0IGFzIHVlfWZyb20iLi90YWJzLVlsaG5IcEstLmpzIjtpbXBvcnR7dCBhcyBkZX1mcm9tIi4vaW5kZXgtZHl3UzhPcFQuanMiO2ltcG9ydHt0IGFzIFR9ZnJvbSIuL0Vycm9yU3RhdGUteW02ZVNsajIuanMiO2ltcG9ydHtfIGFzIEUsZiBhcyBmZSxpIGFzIHBlLG8gYXMgRCx0IGFzIG1lLHYgYXMgT31mcm9tIi4vYmFkZ2UtRFVpQlREeUEuanMiO2ltcG9ydHtpIGFzIGhlLG4gYXMgZ2UsciBhcyBfZSx0IGFzIHZlfWZyb20iLi9UcnlMb25nZXJSYW5nZUJ1dHRvbi1DamtVbmFPei5qcyI7aW1wb3J0e3QgYXMgeWV9ZnJvbSIuL1NrZWxldG9uTGlzdC1DbXF6M2hmYS5qcyI7aW1wb3J0e3QgYXMga31mcm9tIi4vRW50aXR5TGluay1EZzkzS0dWVC5qcyI7aW1wb3J0e3QgYXMgYmV9ZnJvbSIuL2V2ZW50cy1QVXhoRWVnYS5qcyI7aW1wb3J0e24gYXMgeGUsciBhcyBTZX1mcm9tIi4vZXZlbnRzLWZpbHRlci1YRm5qSWFSNy5qcyI7aW1wb3J0e2EgYXMgQ2UsaSBhcyB3ZSxuIGFzIFRlLG8gYXMgRWUsciBhcyBEZSx0IGFzIE9lfWZyb20iLi9rcGktY2htM0JpdUYuanMiO3ZhciBBPXtjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxqPXtrZXk6MCxjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxNPWMoe19fbmFtZTpgS3BpVGlsZWAscHJvcHM6e2xhYmVsOnt9LHZhbHVlOnt9LGRlbHRhOnt9LHRpZXI6e2RlZmF1bHQ6YG9rYH0sdG86e319LHNldHVwKGUpe2xldCB0PWUscj1pZSgpLGk9aCgoKT0+e3N3aXRjaCh0LnRpZXIpe2Nhc2Vgd2FybmA6cmV0dXJuYHRleHQtc3RhdHVzLXdhcm5gO2Nhc2VgY3JpdGljYWxgOnJldHVybmB0ZXh0LWRlc3RydWN0aXZlYDtkZWZhdWx0OnJldHVybmB0ZXh0LWZvcmVncm91bmRgfX0pO2Z1bmN0aW9uIHMoKXt0LnRvJiZyLmdvVG8odC50by5wYWdlLHQudG8ucGFyYW1zPz97fSl9cmV0dXJuKHQscik9Pih2KCksYihmKGUudG8/YGJ1dHRvbmA6YGRpdmApLHt0eXBlOmUudG8/YGJ1dHRvbmA6dm9pZCAwLGNsYXNzOncoW2BibG9jayB3LWZ1bGwgcm91bmRlZC14bCB0ZXh0LWxlZnRgLGUudG8/YGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOm9wYWNpdHktOTAgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTBgOnZvaWQgMF0pLG9uQ2xpY2s6c30se2RlZmF1bHQ6bigoKT0+W20ocChvKSxudWxsLHtkZWZhdWx0Om4oKCk9PlttKHAoQykse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xIHB4LTQgcHktM2B9LHtkZWZhdWx0Om4oKCk9PltsKGBzcGFuYCxBLGEoZS5sYWJlbCksMSksbChgc3BhbmAse2NsYXNzOncoW2B0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0IHRhYnVsYXItbnVtc2AsaS52YWx1ZV0pfSxhKGUudmFsdWUpLDMpLGUuZGVsdGE/KHYoKSx1KGBzcGFuYCxqLGEoZS5kZWx0YSksMSkpOngoYGAsITApXSksXzoxfSldKSxfOjF9KV0pLF86MX0sOCxbYHR5cGVgLGBjbGFzc2BdKSl9fSksa2U9Yyh7X19uYW1lOmBTa2VsZXRvbktwaVRpbGVgLHNldHVwKGUpe3JldHVybihlLHQpPT4odigpLGIocChvKSxudWxsLHtkZWZhdWx0Om4oKCk9PlttKHAoQykse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xIHB4LTQgcHktM2B9LHtkZWZhdWx0Om4oKCk9PlttKHAoUykse2NsYXNzOmBoLTMgdy0yMGB9KSxtKHAoUykse2NsYXNzOmBoLTcgdy0xNmB9KSxtKHAoUykse2NsYXNzOmBoLTMgdy0yOGB9KV0pLF86MX0pXSksXzoxfSkpfX0pLE49e2tleTo0LGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xLjVgfSxQPXtjbGFzczpgZmxleCBtaW4tdy0wIGl0ZW1zLWNlbnRlciBnYXAtMmB9LEY9e2NsYXNzOmB3LTQgc2hyaW5rLTAgdGV4dC1yaWdodCB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEFlPXtjbGFzczpgc2hyaW5rLTAgZm9udC1tZWRpdW0gdGFidWxhci1udW1zYH0sST1jKHtfX25hbWU6YFRvcExpc3RgLHByb3BzOnt0aXRsZTp7fSxpdGVtczp7fSxlbXB0eVRleHQ6e30sbG9hZGluZzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGxvYWRlZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGVycm9yOntkZWZhdWx0OmBgfSxvblJldHJ5Ont9LG5vdGljZTp7fSxub3RpY2VEZXNjcmlwdGlvbjp7fX0sc2V0dXAoZSl7bGV0IHM9ZSxjPWgoKCk9PkUoe2xvYWRpbmc6cy5sb2FkaW5nLGhhc0RhdGE6cy5sb2FkZWQsZXJyb3I6cy5lcnJvcj8/YGB9KSk7cmV0dXJuKHMsZWUpPT4odigpLGIocChvKSxudWxsLHtkZWZhdWx0Om4oKCk9PlttKHAodCksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bbShwKGkpLG51bGwse2RlZmF1bHQ6bigoKT0+W18oYShlLnRpdGxlKSwxKV0pLF86MX0pLGcocy4kc2xvdHMsYGNvbnRyb2xzYCldKSxfOjN9KSxtKHAoQyksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bZS5ub3RpY2U/KHYoKSxiKE8se2tleTowLHRpdGxlOmUubm90aWNlLGRlc2NyaXB0aW9uOmUubm90aWNlRGVzY3JpcHRpb259LG51bGwsOCxbYHRpdGxlYCxgZGVzY3JpcHRpb25gXSkpOmMudmFsdWU9PT1gc2tlbGV0b25gPyh2KCksYih5ZSx7a2V5OjEscm93czo1fSkpOmMudmFsdWU9PT1gZXJyb3JgPyh2KCksYihULHtrZXk6MixtZXNzYWdlOmUuZXJyb3I/P2BgLCJvbi1yZXRyeSI6ZS5vblJldHJ5fSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOmUuaXRlbXMubGVuZ3RoPT09MD8odigpLGIoTyx7a2V5OjMsdGl0bGU6ZS5lbXB0eVRleHR9LHtkZWZhdWx0Om4oKCk9PltnKHMuJHNsb3RzLGBlbXB0eS1hY3Rpb25gKV0pLF86M30sOCxbYHRpdGxlYF0pKToodigpLHUoYG9sYCxOLFsodighMCksdShyLG51bGwsZChlLml0ZW1zLChlLHQpPT4odigpLHUoYGxpYCx7a2V5OmUuaWQsY2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMyB0ZXh0LXNtYH0sW2woYHNwYW5gLFAsW2woYHNwYW5gLEYsYSh0KzEpLDEpLG0oayx7bGFiZWw6ZS5sYWJlbCxraW5kOmUua2luZCxpZDplLmlkLGNsYXNzOmBtaW4tdy0wYCwibGFiZWwtY2xhc3MiOmB0cnVuY2F0ZWB9LG51bGwsOCxbYGxhYmVsYCxga2luZGAsYGlkYF0pXSksbChgc3BhbmAsQWUsYShlLnZhbHVlKSwxKV0pKSksMTI4KSldKSldKSxfOjN9KV0pLF86M30pKX19KSxMPVtgY29zdGAsYHJlcWAsYHRva2Vuc2BdLGplPWBjb3N0YCxNZT17Y29zdDpgQ29zdGAscmVxOmBSZXF1ZXN0c2AsdG9rZW5zOmBUb2tlbnNgfSxOZT02NGUzLFBlPXtjb3N0OltgY29zdGBdLHJlcTpbYHJlcWBdLHRva2VuczpbYHRva2luYCxgdG9rb3V0YF19O2Z1bmN0aW9uIEZlKGUpe3JldHVybiBMLmluY2x1ZGVzKGU/P2BgKT9lOmplfXZhciBJZT0xZTM7ZnVuY3Rpb24gTGUoZSx0LG4scj1JZSl7bGV0IGk9bmV3IFVSTFNlYXJjaFBhcmFtcztyZXR1cm4gaS5zZXQoYGtpbmRgLGB1c2VyYCksaS5zZXQoYHdpbmRvd2AsZSksaS5zZXQoYHNwYW5gLFN0cmluZyh0KSksaS5zZXQoYG9mZnNldGAsYDBgKSxpLnNldChgbWV0cmljc2AsUGVbbl0uam9pbihgLGApKSxpLnNldChgbGltaXRgLFN0cmluZyhyKSksYC9hZG1pbi9hcGkvdXNhZ2UvdG90YWxzPyR7aS50b1N0cmluZygpfWB9ZnVuY3Rpb24gUihlLHQsbil7cmV0dXJuIGUqdCpuPk5lfWZ1bmN0aW9uIFJlKGUsdCxuKXtyZXR1cm4gZSE9PW51bGwmJlIoZSx0LG4pfWZ1bmN0aW9uIHplKGUsdCl7c3dpdGNoKHQpe2Nhc2VgY29zdGA6cmV0dXJuIGUudmFsdWVzLmNvc3Q/PzA7Y2FzZWByZXFgOnJldHVybiBlLnZhbHVlcy5yZXE/PzA7Y2FzZWB0b2tlbnNgOnJldHVybihlLnZhbHVlcy50b2tpbj8/MCkrKGUudmFsdWVzLnRva291dD8/MCl9fWZ1bmN0aW9uIEJlKGUsdCxuPTUpe3JldHVybiBlLm1hcChlPT4oe2lkOmUuaWQsdmFsdWU6emUoZSx0KX0pKS5maWx0ZXIoZT0+ZS52YWx1ZT4wKS5zb3J0KChlLHQpPT50LnZhbHVlPT09ZS52YWx1ZT9lLmlkLmxvY2FsZUNvbXBhcmUodC5pZCk6dC52YWx1ZS1lLnZhbHVlKS5zbGljZSgwLG4pfXZhciBWZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxIZT17ImFyaWEtbGFiZWwiOmBLZXkgbWV0cmljc2AsY2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTMgc206Z3JpZC1jb2xzLTMgbGc6Z3JpZC1jb2xzLTRgfSxVZT17a2V5OjEsY2xhc3M6YGNvbC1zcGFuLWZ1bGxgfSxXZT17ImFyaWEtbGFiZWwiOmBUb3Agc3BlbmRlcnMgYW5kIG1vZGVsc2AsY2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgbGc6Z3JpZC1jb2xzLTJgfSxHZT17a2V5OjIsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sS2U9e2tleTozLGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0yYH0scWU9e2NsYXNzOmBmbGV4IG1pbi13LTAgaXRlbXMtY2VudGVyIGdhcC0yYH0sSmU9e2NsYXNzOmBtaW4tdy0wIHRydW5jYXRlIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFllPXtjbGFzczpgc2hyaW5rLTAgdGFidWxhci1udW1zIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFhlPTUsWmU9NmU0LFFlPWMoe19fbmFtZTpgSG9tZVBhZ2VgLHNldHVwKGMpe2xldCBmPW9lKCksZz1uZSgpLHg9YmUoKSxTPWRlKCksdz1pZSgpLE89aCgoKT0+Zy51c2FnZT8udG90YWwuY29zdFBlckRheU1pY3JvVXNkPz8wKSxrPWgoKCk9PmcudXNhZ2U/LnRvdGFsLmNvc3RQZXJNb250aE1pY3JvVXNkPz8wKSxBPWgoKCk9PkVlKGcub3ZlcnZpZXc/Lmdyb3Vwcz8/W10pKSxqPWgoKCk9PlRlKE9lKGsudmFsdWUsQS52YWx1ZSkpKSxOPWgoKCk9PntsZXQgZT1gJHtEKE8udmFsdWUpfSB0b2RheWA7cmV0dXJuIEEudmFsdWU+MD9gJHtlfSDCtyBidWRnZXQgJHtEKEEudmFsdWUpfS9tb2A6YCR7ZX0gwrcgbm8gYnVkZ2V0IHNldGB9KSxQPWgoKCk9PmhlKGsudmFsdWUsX2UobmV3IERhdGUpKSksRj1oKCgpPT5nZShQLnZhbHVlLEEudmFsdWU+MD9BLnZhbHVlLzFlNjp2b2lkIDApKSxBZT1oKCgpPT5QLnZhbHVlPT09bnVsbD9gbm90IGVub3VnaCBkYXRhIHlldGA6RChQLnZhbHVlKSksamU9aCgoKT0+Ri52YWx1ZS53aWxsRXhjZWVkP2Bjcml0aWNhbGA6YG9rYCksTmU9aCgoKT0+e2lmKFAudmFsdWUhPT1udWxsKXJldHVybiBBLnZhbHVlPD0wP2BubyBidWRnZXQgc2V0YDpGLnZhbHVlLndpbGxFeGNlZWQ/YHByb2plY3RlZCB0byBleGNlZWQgYnVkZ2V0YDpgcHJvamVjdGVkIHdpdGhpbiBidWRnZXRgfSksSWU9aCgoKT0+Zy51c2FnZT8udG90YWwucmVxdWVzdHNQZXJNaW51dGU/PzApLFI9aCgoKT0+d2UoZy5vdmVydmlldz8ucHJvdmlkZXJzPz9bXSkpLHplPWgoKCk9PkRlKFIudmFsdWUucmF0ZSkpLFFlPWgoKCk9PntsZXQgZT1SLnZhbHVlLnJhdGU7cmV0dXJuIGU9PT1udWxsP2BubyB0cmFmZmljYDplPD0wP2AwJWA6YCR7TWF0aC5jZWlsKGUqMTAwKX0lYH0pLCRlPWgoKCk9PmAke1IudmFsdWUuZmFpbHVyZXN9LyR7Ui52YWx1ZS5hdHRlbXB0c30gYXR0ZW1wdHMgaW4gdGhlIGxhc3QgbWludXRlYCksZXQ9aCgoKT0+Q2UoZy5vdmVydmlldz8ucHJvdmlkZXJzPz9bXSkpLHR0PWgoKCk9Pmcub3ZlcnZpZXc/Lndhcm5pbmdzLmxlbmd0aD8/MCksbnQ9aCgoKT0+Zy5vdmVydmlldz8ucHJpY2luZy51bnByaWNlZD8/MCkscnQ9aCgoKT0+RSh7bG9hZGluZzohMCxoYXNEYXRhOmcub3ZlcnZpZXchPT1udWxsJiZnLnVzYWdlIT09bnVsbCxlcnJvcjpnLmVycm9yfSkpLHo9aCgoKT0+RmUody5wYXJhbXMudG9wKSk7ZnVuY3Rpb24gaXQoZSl7aWYodHlwZW9mIGUhPWBzdHJpbmdgfHwhTC5pbmNsdWRlcyhlKSlyZXR1cm47bGV0IHQ9ZTtpZih0PT09YGNvc3RgKXtsZXR7dG9wOmUsLi4udH09dy5wYXJhbXM7dy5nb1RvKGBob21lYCx0KTtyZXR1cm59dy5nb1RvKGBob21lYCx7Li4udy5wYXJhbXMsdG9wOnR9KX1sZXQgYXQ9aCgoKT0+Zy51c2FnZT8udXNlcnMubGVuZ3RoPz9udWxsKSxCPXkoW10pLFY9eShbXSksSD15KCExKSxVPXkoYGApLFc9eSghMSksRz15KGBgKSxLPXkoITEpLHE9eSghMSksSj1yZShuZXcgTWFwKSxvdD1oKCgpPT5KLmhhcyh6LnZhbHVlKSksWT0wLFg9MDtmdW5jdGlvbiBzdChlLHQpe3JldHVybiBlPT09YGNvc3RgP0QodCk6cGUodCl9bGV0IGN0PWgoKCk9PkJlKEIudmFsdWUsei52YWx1ZSkubWFwKGU9Pih7aWQ6ZS5pZCxsYWJlbDplLmlkLHZhbHVlOnN0KHoudmFsdWUsZS52YWx1ZSksa2luZDpgdXNlcmB9KSkpLGx0PWgoKCk9PmBUb3AgNSB1c2VycyBieSAke01lW3oudmFsdWVdLnRvTG93ZXJDYXNlKCl9YCk7YXN5bmMgZnVuY3Rpb24gWigpe2lmKCFmLmlzQXV0aGVudGljYXRlZClyZXR1cm47bGV0IGU9ei52YWx1ZSx0PVBlW2VdLmxlbmd0aDtpZihSZShhdC52YWx1ZSx0LFMuc3BhbikpeysrWSxILnZhbHVlPSExLHEudmFsdWU9ITAsVS52YWx1ZT1gYDtyZXR1cm59bGV0IG49KytZO0gudmFsdWU9ITA7dHJ5e2xldCB0PWF3YWl0IGVlKExlKFMud2luZG93LFMuc3BhbixlKSk7aWYobiE9PVkpcmV0dXJuO0ouc2V0KGUsdC5yb3dzKSxCLnZhbHVlPXQucm93cyxVLnZhbHVlPWBgLHEudmFsdWU9ITF9Y2F0Y2goZSl7aWYobiE9PVkpcmV0dXJuO2UgaW5zdGFuY2VvZiBzZSYmZS5zdGF0dXM9PT00MDAmJi9yYW5nZSB0b28gbGFyZ2UvaS50ZXN0KGUubWVzc2FnZSk/KHEudmFsdWU9ITAsVS52YWx1ZT1gYCk6VS52YWx1ZT1lIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1maW5hbGx5e249PT1ZJiYoSC52YWx1ZT0hMSl9fWFzeW5jIGZ1bmN0aW9uIHV0KCl7aWYoIWYuaXNBdXRoZW50aWNhdGVkKXJldHVybjtsZXQgZT0rK1g7Vy52YWx1ZT0hMDt0cnl7bGV0IHQ9YXdhaXQgZWUoYC9hZG1pbi9hcGkvdXNhZ2UvbW9kZWxzP21ldHJpYz1jb3N0JndpbmRvdz0ke1Mud2luZG93fSZzcGFuPSR7Uy5zcGFufSZsaW1pdD0ke1hlfWApO2lmKGUhPT1YKXJldHVybjtWLnZhbHVlPXQubW9kZWxzLm1hcChlPT4oe2lkOmUuaWQsbGFiZWw6ZS5pZCx2YWx1ZTpEKGUudmFsdWUpLGtpbmQ6YG1vZGVsYH0pKSxHLnZhbHVlPWBgLEsudmFsdWU9ITB9Y2F0Y2godCl7aWYoZSE9PVgpcmV0dXJuO0cudmFsdWU9dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9ZmluYWxseXtlPT09WCYmKFcudmFsdWU9ITEpfX1hc3luYyBmdW5jdGlvbiBkdCgpe2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbWigpLHV0KCldKX1sZXQgUTtlKHosZT0+e2xldCB0PUouZ2V0KGUpO0IudmFsdWU9dD8/W10sVS52YWx1ZT1gYCxxLnZhbHVlPSExLFooKX0pLGUoKCk9PlMucmFuZ2UsKCk9PntKLmNsZWFyKCksQi52YWx1ZT1bXSxWLnZhbHVlPVtdLEsudmFsdWU9ITEsVS52YWx1ZT1gYCxHLnZhbHVlPWBgLHEudmFsdWU9ITEsZHQoKX0pO2Z1bmN0aW9uIGZ0KGUpe3JldHVybiB4ZVtlXT8/ZX1sZXQgcHQ9aCgoKT0+eC5ldmVudHMuc2xpY2UoMCw4KSksJD1oKCgpPT5FKHtsb2FkaW5nOngucmVmcmVzaGluZyxoYXNEYXRhOngubGFzdFVwZGF0ZWQhPT1udWxsLGVycm9yOnguZXJyb3J9KSksbXQ9aCgoKT0+cHQudmFsdWUubGVuZ3RoPT09MCk7cmV0dXJuIHMoKCk9Pnt4LnN0YXJ0UG9sbGluZygpLFE9YWUoe2ludGVydmFsTXM6WmUsdGljazooKT0+dm9pZCBkdCgpfSksUS5zdGFydCgpfSksdGUoKCk9Pnt4LnN0b3BQb2xsaW5nKCksUT8uc3RvcCgpfSksKGUscyk9Pih2KCksdShgZGl2YCxWZSxbbChgc2VjdGlvbmAsSGUsW3J0LnZhbHVlPT09YHNrZWxldG9uYD8odigpLHUocix7a2V5OjB9LGQoNyxlPT5tKGtlLHtrZXk6ZX0pKSw2NCkpOnJ0LnZhbHVlPT09YGVycm9yYD8odigpLHUoYGRpdmAsVWUsW20oVCx7bWVzc2FnZTpwKGcpLmVycm9yLCJvbi1yZXRyeSI6cChnKS5yZWZyZXNofSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSldKSk6KHYoKSx1KHIse2tleToyfSxbbShNLHtsYWJlbDpgU3BlbmQgKE1URClgLHZhbHVlOnAoRCkoay52YWx1ZSksZGVsdGE6Ti52YWx1ZSx0aWVyOmoudmFsdWUsdG86e3BhZ2U6YHNwZW5kYH19LG51bGwsOCxbYHZhbHVlYCxgZGVsdGFgLGB0aWVyYF0pLG0oTSx7bGFiZWw6YFByb2plY3RlZCBtb250aC1lbmRgLHZhbHVlOkFlLnZhbHVlLGRlbHRhOk5lLnZhbHVlLHRpZXI6amUudmFsdWUsdG86e3BhZ2U6YHNwZW5kYH19LG51bGwsOCxbYHZhbHVlYCxgZGVsdGFgLGB0aWVyYF0pLG0oTSx7bGFiZWw6YFJlcXVlc3RzL21pbmAsdmFsdWU6cChwZSkoSWUudmFsdWUpfSxudWxsLDgsW2B2YWx1ZWBdKSxtKE0se2xhYmVsOmBFcnJvciByYXRlIChsYXN0IG1pbnV0ZSlgLHZhbHVlOlFlLnZhbHVlLGRlbHRhOiRlLnZhbHVlLHRpZXI6emUudmFsdWUsdG86e3BhZ2U6YHJlbGlhYmlsaXR5YH19LG51bGwsOCxbYHZhbHVlYCxgZGVsdGFgLGB0aWVyYF0pLG0oTSx7bGFiZWw6YE9wZW4gYnJlYWtlcnMgKHBlciByZXBsaWNhKWAsdmFsdWU6U3RyaW5nKGV0LnZhbHVlKSx0aWVyOmV0LnZhbHVlPjA/YHdhcm5gOmBva2AsdG86e3BhZ2U6YG1vZGVsc2B9fSxudWxsLDgsW2B2YWx1ZWAsYHRpZXJgXSksbShNLHtsYWJlbDpgQ29uZmlnIHdhcm5pbmdzYCx2YWx1ZTpTdHJpbmcodHQudmFsdWUpLHRpZXI6dHQudmFsdWU+MD9gd2FybmA6YG9rYCx0bzp7cGFnZTpgY29uZmlnYH19LG51bGwsOCxbYHZhbHVlYCxgdGllcmBdKSxtKE0se2xhYmVsOmBVbnByaWNlZCBtb2RlbHNgLHZhbHVlOlN0cmluZyhudC52YWx1ZSksdGllcjpudC52YWx1ZT4wP2B3YXJuYDpgb2tgLHRvOntwYWdlOmBzcGVuZGB9fSxudWxsLDgsW2B2YWx1ZWAsYHRpZXJgXSldLDY0KSldKSxsKGBzZWN0aW9uYCxXZSxbbShJLHt0aXRsZTpsdC52YWx1ZSxpdGVtczpjdC52YWx1ZSwiZW1wdHktdGV4dCI6YE5vIHRyYWZmaWMgaW4gdGhpcyByYW5nZS5gLGxvYWRpbmc6SC52YWx1ZSxsb2FkZWQ6b3QudmFsdWUsZXJyb3I6VS52YWx1ZSwib24tcmV0cnkiOlosbm90aWNlOnEudmFsdWU/YFRvbyBtYW55IGNvbmZpZ3VyZWQgdXNlcnMgZm9yIHRoaXMgcmFuZ2UuYDp2b2lkIDAsIm5vdGljZS1kZXNjcmlwdGlvbiI6YFBpY2sgYSBzaG9ydGVyIHJhbmdlIGFib3ZlIOKAlCBhIGZsZWV0IHRoaXMgc2l6ZSBuZWVkcyBhIG5hcnJvd2VyIHdpbmRvdyB0byByYW5rIHVzZXJzLmB9LHtjb250cm9sczpuKCgpPT5bbShwKGxlKSx7Im1vZGVsLXZhbHVlIjp6LnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppdH0se2RlZmF1bHQ6bigoKT0+W20ocChjZSksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bKHYoITApLHUocixudWxsLGQocChMKSxlPT4odigpLGIocCh1ZSkse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0Om4oKCk9PltfKGEocChNZSlbZV0pLDEpXSksXzoyfSwxMDMyLFtgdmFsdWVgXSkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKSwiZW1wdHktYWN0aW9uIjpuKCgpPT5bbSh2ZSldKSxfOjF9LDgsW2B0aXRsZWAsYGl0ZW1zYCxgbG9hZGluZ2AsYGxvYWRlZGAsYGVycm9yYCxgbm90aWNlYF0pLG0oSSx7dGl0bGU6YFRvcCA1IG1vZGVscyBieSBjb3N0YCxpdGVtczpWLnZhbHVlLCJlbXB0eS10ZXh0IjpgTm8gdHJhZmZpYyBpbiB0aGlzIHJhbmdlLmAsbG9hZGluZzpXLnZhbHVlLGxvYWRlZDpLLnZhbHVlLGVycm9yOkcudmFsdWUsIm9uLXJldHJ5Ijp1dH0seyJlbXB0eS1hY3Rpb24iOm4oKCk9PlttKHZlKV0pLF86MX0sOCxbYGl0ZW1zYCxgbG9hZGluZ2AsYGxvYWRlZGAsYGVycm9yYF0pXSksbShwKG8pLG51bGwse2RlZmF1bHQ6bigoKT0+W20ocCh0KSxudWxsLHtkZWZhdWx0Om4oKCk9PlttKHAoaSksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bLi4uc1swXXx8PVtfKGBMYXRlc3QgZXZlbnRzYCwtMSldXSksXzoxfSldKSxfOjF9KSxtKHAoQyksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bJC52YWx1ZT09PWBza2VsZXRvbmA/KHYoKSxiKHllLHtrZXk6MCxyb3dzOjR9KSk6JC52YWx1ZT09PWBlcnJvcmA/KHYoKSxiKFQse2tleToxLG1lc3NhZ2U6cCh4KS5lcnJvciwib24tcmV0cnkiOnAoeCkucmVmcmVzaH0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTptdC52YWx1ZT8odigpLHUoYHBgLEdlLGBObyBldmVudHMgcmVjb3JkZWQgeWV0LmApKToodigpLHUoYG9sYCxLZSxbKHYoITApLHUocixudWxsLGQocHQudmFsdWUsKGUsdCk9Pih2KCksdShgbGlgLHtrZXk6YCR7ZS50aW1lfS0ke2UucmVwbGljYX0tJHt0fWAsY2xhc3M6YGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGdhcC0zIHRleHQtc21gfSxbbChgc3BhbmAscWUsW20ocChtZSkse3ZhcmlhbnQ6cChTZSkoZS5raW5kKSxjbGFzczpgc2hyaW5rLTAgZm9udC1ub3JtYWxgfSx7ZGVmYXVsdDpuKCgpPT5bXyhhKGZ0KGUua2luZCkpLDEpXSksXzoyfSwxMDMyLFtgdmFyaWFudGBdKSxsKGBzcGFuYCxKZSxhKGUubWVzc2FnZSksMSldKSxsKGBzcGFuYCxZZSxhKHAoZmUpKGUudGltZSkpLDEpXSkpKSwxMjgpKV0pKV0pLF86MX0pXSksXzoxfSldKSl9fSk7ZXhwb3J0e1FlIGFzIGRlZmF1bHR9Ow==",
|
|
),
|
|
},
|
|
"ModelsPage-CcA1RHK6.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FyIGFzIGUsQyBhcyB0LEUgYXMgbixGciBhcyByLEp0IGFzIGksT24gYXMgYSxRciBhcyBvLFMgYXMgcyxTaSBhcyBjLFQgYXMgbCxYbiBhcyB1LF9uIGFzIGQsX3QgYXMgZixhbiBhcyBwLGIgYXMgbSxjbiBhcyBoLGNyIGFzIGVlLGV0IGFzIGcsZyBhcyB0ZSxnaSBhcyBfLGhuIGFzIHYsaWkgYXMgbmUsaW4gYXMgeSxtbiBhcyBiLG10IGFzIHJlLG4gYXMgeCxuciBhcyBTLG9uIGFzIEMscnQgYXMgdyxzbiBhcyBULHVyIGFzIGllLHcgYXMgRSx5IGFzIGFlLHlpIGFzIER9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjtpbXBvcnR7YSBhcyBvZSxjIGFzIE8saSBhcyBzZSxuIGFzIGNlLG8gYXMgbGUsciBhcyB1ZSxzIGFzIGRlLHQgYXMgZmV9ZnJvbSIuL3NlYXJjaC1leHBhbmQtQ0hkNEZXWlouanMiO2ltcG9ydHtjIGFzIGssZyBhcyBwZSxoIGFzIG1lLG0gYXMgaGUsdCBhcyBBfWZyb20iLi9pbmRleC1keXdTOE9wVC5qcyI7aW1wb3J0e3QgYXMgZ2V9ZnJvbSIuL0Vycm9yU3RhdGUteW02ZVNsajIuanMiO2ltcG9ydHtfIGFzIF9lLGEgYXMgdmUsZCBhcyBqLGcgYXMgTSxoIGFzIHllLGwgYXMgTixtIGFzIGJlLG4gYXMgeGUsbyBhcyBQLHAgYXMgU2UsdCBhcyBGLHYgYXMgSX1mcm9tIi4vYmFkZ2UtRFVpQlREeUEuanMiO2ltcG9ydHtvIGFzIEwsdCBhcyBDZX1mcm9tIi4vRGF0YVRhYmxlLUNReFJWRFNZLmpzIjtpbXBvcnR7dCBhcyBSfWZyb20iLi9Db21wYWN0TnVtYmVyLXByOGNKNGN2LmpzIjtpbXBvcnR7biBhcyB3ZSx0IGFzIFRlfWZyb20iLi91c2VTZWFyY2hRdWVyeS1iUVpQNFRzWi5qcyI7aW1wb3J0e3QgYXMgRWV9ZnJvbSIuL1NrZWxldG9uTGlzdC1DbXF6M2hmYS5qcyI7aW1wb3J0e3QgYXMgRGV9ZnJvbSIuL0VudGl0eUxpbmstRGc5M0tHVlQuanMiO2ltcG9ydHthIGFzIE9lLGMgYXMga2UsaSBhcyBBZSxuIGFzIHosbyBhcyBCLHIgYXMgamUscyBhcyBWLHQgYXMgSH1mcm9tIi4vcHJvdmlkZXItcmF0ZS1EVTdPZ1NlQi5qcyI7aW1wb3J0e3QgYXMgVX1mcm9tIi4vY2F0YWxvZy1sVTQxaXJJcS5qcyI7aW1wb3J0e3QgYXMgV31mcm9tIi4vcmVsaWFiaWxpdHktQ0ZJa1J4VlYuanMiO2Z1bmN0aW9uIE1lKGUsdCl7bGV0IG49dC50cmltKCkudG9Mb3dlckNhc2UoKTtyZXR1cm4gbj9lLmZpbHRlcihlPT5lLmlkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobil8fGUuYWxpYXNlcy5zb21lKGU9PmUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuKSkpOmV9ZnVuY3Rpb24gRyhlLHQsbil7bGV0IHI9bmV3IE1hcCh0Lm1vZGVscy5tYXAoZT0+W2UuaWQsZV0pKSxpPW5ldyBNYXAoKG4ucm93cz8/W10pLm1hcChlPT5bZS5pZCxlXSkpLGE9W107Zm9yKGxldCB0IG9mIGUucHJvdmlkZXJzKWZvcihsZXQgZSBvZiB0Lm1vZGVscyl7bGV0IG49ci5nZXQoZS5pZCksbz1pLmdldChlLmlkKTthLnB1c2goe2lkOmUuaWQsbW9kZWw6ZS5tb2RlbCxwcm92aWRlck5hbWU6dC5uYW1lLGNvbnRleHRUb2tlbnM6ZS5jb250ZXh0VG9rZW5zLGlucHV0UGVyTVRva1VzZDplLmlucHV0UGVyTVRva1VzZCxvdXRwdXRQZXJNVG9rVXNkOmUub3V0cHV0UGVyTVRva1VzZCxwcmljZVNvdXJjZTplLnByaWNlU291cmNlLGRpc3BsYXlGcmVlOmUuZGlzcGxheUZyZWUsYWxpYXNlczplLmFsaWFzZXM/P1tdLHJlcXVlc3RzOm4/LnJlcXVlc3RzPz8wLHRva2Vuc0luOm4/LnRva2Vuc0luPz8wLHRva2Vuc091dDpuPy50b2tlbnNPdXQ/PzAsY29zdE1pY3JvVXNkOm4/LmNvc3RNaWNyb1VzZD8/MCxwNTBNczpvPy5wNTBNcyxwOTVNczpvPy5wOTVNcyxhdHRlbXB0czpvPy5hdHRlbXB0cz8/MCxmYWlsdXJlczpvPy5mYWlsdXJlcz8/MH0pfXJldHVybiBhfXZhciBOZT17b3ZlcnJpZGU6YG92ZXJyaWRlYCxidWlsdGluOmBidWlsdGluYCxsaXRlbGxtOmBsaXRlbGxtYH07ZnVuY3Rpb24gUGUoZSl7aWYoZS5wcmljZVNvdXJjZT09PWB1bnByaWNlZGApcmV0dXJuIGEoRix7YXM6YHNwYW5gLHZhcmlhbnQ6YGRlc3RydWN0aXZlYCxjbGFzczpgZm9udC1ub3JtYWxgLHRpdGxlOmBObyBwcmljaW5nIHJ1bGUgbWF0Y2hlZCDigJQgYmlsbGVkIGFzICQwLmB9LCgpPT5gdW5wcmljZWRgKTtpZihlLnByaWNlU291cmNlPT09YGZyZWVgKXJldHVybiBhKEYse2FzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6YENvbmZpZ3VyZWQgZnJlZSAobW9kZWxNZXRhLmZyZWUpIOKAlCBwcmljZWQgYXQgJDAuYH0sKCk9PmBmcmVlYCk7bGV0IHQ9ZS5pbnB1dFBlck1Ub2tVc2QhPT12b2lkIDAmJmUub3V0cHV0UGVyTVRva1VzZCE9PXZvaWQgMCxuPWUucHJpY2VTb3VyY2U7cmV0dXJuIGEoYHNwYW5gLHtjbGFzczpgaW5saW5lLWZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMS41YH0sW2EoYHNwYW5gLHt9LHQ/aihlLmlucHV0UGVyTVRva1VzZCxlLm91dHB1dFBlck1Ub2tVc2QpOmDigJRgKSxhKEYse2FzOmBzcGFuYCx2YXJpYW50OmBvdXRsaW5lYCxjbGFzczpgZm9udC1ub3JtYWxgfSwoKT0+TmVbbl0pXSl9ZnVuY3Rpb24gSyhlKXtyZXR1cm4gZS5wcmljZVNvdXJjZT09PWB1bnByaWNlZGA/LTE6ZS5pbnB1dFBlck1Ub2tVc2Q/PzB9ZnVuY3Rpb24gRmUoKXtyZXR1cm5be2lkOmBpZGAsaGVhZGVyOmBNb2RlbGAsYWNjZXNzb3JGbjplPT5lLmlkLGNlbGw6KHtyb3c6ZX0pPT5hKGBzcGFuYCx7Y2xhc3M6YGlubGluZS1mbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEuNWB9LFthKE8se2lkOmUub3JpZ2luYWwuaWQsY29udGV4dFRva2VuczplLm9yaWdpbmFsLmNvbnRleHRUb2tlbnMsaW5wdXRQZXJNVG9rVXNkOmUub3JpZ2luYWwuaW5wdXRQZXJNVG9rVXNkLG91dHB1dFBlck1Ub2tVc2Q6ZS5vcmlnaW5hbC5vdXRwdXRQZXJNVG9rVXNkfSksYShEZSx7bGFiZWw6ZS5vcmlnaW5hbC5pZCxraW5kOmBtb2RlbGAsaWQ6ZS5vcmlnaW5hbC5pZH0pXSl9LHtpZDpgY29udGV4dGAsaGVhZGVyOmBDb250ZXh0YCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUuY29udGV4dFRva2Vucz8/MCxjZWxsOih7cm93OmV9KT0+YShgc3BhbmAse2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxlLm9yaWdpbmFsLmNvbnRleHRUb2tlbnM9PT12b2lkIDA/YOKAlGA6dmUoZS5vcmlnaW5hbC5jb250ZXh0VG9rZW5zKSl9LHtpZDpgcHJpY2VgLGhlYWRlcjpgUHJpY2VgLGFjY2Vzc29yRm46ZT0+SyhlKSxjZWxsOih7cm93OmV9KT0+UGUoZS5vcmlnaW5hbCl9LHtpZDpgZnJlZWAsaGVhZGVyOmBGcmVlYCxhY2Nlc3NvckZuOmU9PishIWUuZGlzcGxheUZyZWUsY2VsbDooe3JvdzplfSk9PmUub3JpZ2luYWwuZGlzcGxheUZyZWU/YShGLHthczpgc3BhbmAsdmFyaWFudDpgc2Vjb25kYXJ5YCxjbGFzczpgZm9udC1ub3JtYWxgLHRpdGxlOmAnOmZyZWUnIHN1ZmZpeCBtb2RlbCDigJQgZGlzcGxheS1vbmx5LCBiaWxsaW5nIGZvbGxvd3MgdGhlIFByaWNlIGNvbHVtbidzIG93biBzb3VyY2VgfSwoKT0+YGZyZWVgKTphKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGDigJRgKX0se2lkOmBhbGlhc2VzYCxoZWFkZXI6YEFsaWFzZXNgLGVuYWJsZVNvcnRpbmc6ITEsYWNjZXNzb3JGbjplPT5lLmFsaWFzZXMuam9pbihgLCBgKSxjZWxsOih7cm93OmV9KT0+e2xldCB0PWUub3JpZ2luYWwuYWxpYXNlcztyZXR1cm4gdC5sZW5ndGg9PT0wP2EoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYOKAlGApOmEoYGRpdmAse2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMWB9LHQubWFwKGU9PmEoRix7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW1vbm8gZm9udC1ub3JtYWxgfSwoKT0+ZSkpKX19LHtpZDpgcmVxdWVzdHNgLGhlYWRlcjpgUmVxdWVzdHNgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS5yZXF1ZXN0cyxjZWxsOih7cm93OmV9KT0+YShSLHt2YWx1ZTplLm9yaWdpbmFsLnJlcXVlc3RzfSl9LHtpZDpgdG9rZW5zSW5gLGhlYWRlcjpgVG9rZW5zIGluYCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUudG9rZW5zSW4sY2VsbDooe3JvdzplfSk9PmEoUix7dmFsdWU6ZS5vcmlnaW5hbC50b2tlbnNJbn0pfSx7aWQ6YHRva2Vuc091dGAsaGVhZGVyOmBUb2tlbnMgb3V0YCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUudG9rZW5zT3V0LGNlbGw6KHtyb3c6ZX0pPT5hKFIse3ZhbHVlOmUub3JpZ2luYWwudG9rZW5zT3V0fSl9LHtpZDpgY29zdGAsaGVhZGVyOmBDb3N0YCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUuY29zdE1pY3JvVXNkLGNlbGw6KHtyb3c6ZX0pPT57bGV0IHQ9ZS5vcmlnaW5hbDtyZXR1cm4odC5wcmljZVNvdXJjZT09PWBmcmVlYHx8dC5kaXNwbGF5RnJlZSkmJnQuY29zdE1pY3JvVXNkPT09MD9hKEYse2FzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6YHByaWNlZCBhdCAkMCBwZXIgdG9rZW5gfSwoKT0+YGZyZWVgKTpQKHQuY29zdE1pY3JvVXNkKX19LHtpZDpgcDUwYCxoZWFkZXI6YHA1MGAsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5lLnA1ME1zPz8tMSxjZWxsOih7cm93OmV9KT0+YShgc3BhbmAse2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxlLm9yaWdpbmFsLnA1ME1zPT09dm9pZCAwP2DigJRgOk4oZS5vcmlnaW5hbC5wNTBNcykpfSx7aWQ6YHA5NWAsaGVhZGVyOmBwOTVgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS5wOTVNcz8/LTEsY2VsbDooe3JvdzplfSk9PmEoYHNwYW5gLHtjbGFzczpgdGFidWxhci1udW1zYH0sZS5vcmlnaW5hbC5wOTVNcz09PXZvaWQgMD9g4oCUYDpOKGUub3JpZ2luYWwucDk1TXMpKX0se2lkOmBlcnJvclJhdGVgLGhlYWRlcjpgRXJyb3IgcmF0ZWAsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5CKGUuYXR0ZW1wdHMsZS5mYWlsdXJlcyk/Py0xLGNlbGw6KHtyb3c6ZX0pPT5hKGBzcGFuYCx7Y2xhc3M6YHRhYnVsYXItbnVtc2B9LHooQihlLm9yaWdpbmFsLmF0dGVtcHRzLGUub3JpZ2luYWwuZmFpbHVyZXMpKSl9XX12YXIgcT1kKHtfX25hbWU6YE1vZGVsQ2F0YWxvZ1RhYmxlYCxwcm9wczp7cm93czp7fSxxdWVyeTp7fSxsYXRlbmN5RW5hYmxlZDp7dHlwZTpCb29sZWFufSxsb2FkaW5nOnt0eXBlOkJvb2xlYW59LGVycm9yOnt9LG9uUmV0cnk6e3R5cGU6RnVuY3Rpb259fSxlbWl0czpbYHVwZGF0ZTpxdWVyeWBdLHNldHVwKGUse2VtaXQ6aX0pe2xldCBhPWUsbz1pLGM9eCgpLHU9eSgoKT0+TWUoYS5yb3dzLGEucXVlcnkpKSxkPUZlKCksZj15KCgpPT5fZSh7bG9hZGluZzphLmxvYWRpbmcsaGFzRGF0YTphLnJvd3MubGVuZ3RoPjAsZXJyb3I6YS5lcnJvcj8/YGB9KSksbT15KCgpPT5hLnF1ZXJ5LnRyaW0oKT9gbm8gbW9kZWxzIG1hdGNoICIke2EucXVlcnl9ImA6YG5vbmVgKTtyZXR1cm4oaSxhKT0+KFMoKSxDKF8obCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bdihfKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3YoXyhzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzJdfHw9W2IoYE1vZGVsIGNhdGFsb2dgLC0xKV1dKSxfOjF9KSx2KF8oayksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVszXXx8PVtiKGAgRXZlcnkgY29uZmlndXJlZCBtb2RlbDogcHJpY2Ugc291cmNlLCBwZXItbW9kZWwgdXNhZ2UgZm9yIHRoZSBjdXJyZW50IHJhbmdlLCBmbGVldCBwNTAvcDk1LCBhbmQgZXJyb3IgcmF0ZS4gYCwtMSldXSksXzoxfSksdih3ZSx7Im1vZGVsLXZhbHVlIjplLnF1ZXJ5LHBsYWNlaG9sZGVyOmBTZWFyY2ggbW9kZWxzIG9yIGFsaWFzZXMuLi5gLGNsYXNzOmBtdC0yIG1heC13LXNtYCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8PWU9Pm8oYHVwZGF0ZTpxdWVyeWAsZSl9LG51bGwsOCxbYG1vZGVsLXZhbHVlYF0pXSksXzoxfSksdihfKEUpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LHtkZWZhdWx0OnIoKCk9PltlLmxhdGVuY3lFbmFibGVkP1QoYGAsITApOihTKCksQyhfKHBlKSx7a2V5OjAsdmFyaWFudDpgd2FybmB9LHtkZWZhdWx0OnIoKCk9Plt2KF8oaGUpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbNF18fD1bYihgTGF0ZW5jeSBzdGF0aXN0aWNzIGFyZSBvZmZgLC0xKV1dKSxfOjF9KSx2KF8obWUpLHtjbGFzczpgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0yYH0se2RlZmF1bHQ6cigoKT0+W2FbNl18fD1wKGBzcGFuYCxudWxsLFtiKGBFbmFibGUgYCkscChgY29kZWAsbnVsbCxgYWRtaW4uc3RhdHMubGF0ZW5jeWApLGIoYCBpbiB0aGUgbWlkZGxld2FyZSBjb25maWcgdG8gc2VlIGZsZWV0IHA1MC9wOTUuYCldLC0xKSx2KF8obikse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLG9uQ2xpY2s6YVsxXXx8PWU9Pl8oYykuZ29UbyhgY29uZmlnYCl9LHtkZWZhdWx0OnIoKCk9PlsuLi5hWzVdfHw9W2IoYE9wZW4gQ29uZmlnYCwtMSldXSksXzoxfSldKSxfOjF9KV0pLF86MX0pKSxmLnZhbHVlPT09YHNrZWxldG9uYD8oUygpLEMoTCx7a2V5OjEscm93czo1LGNvbHM6XyhkKS5sZW5ndGh9LG51bGwsOCxbYGNvbHNgXSkpOmYudmFsdWU9PT1gZXJyb3JgPyhTKCksQyhnZSx7a2V5OjIsbWVzc2FnZTplLmVycm9yPz9gYCwib24tcmV0cnkiOmUub25SZXRyeX0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTpmLnZhbHVlPT09YGVtcHR5YD8oUygpLEMoSSx7a2V5OjMsdGl0bGU6YE5vIG1vZGVscyBjb25maWd1cmVkLmB9KSk6KFMoKSxDKENlLHtrZXk6NCxjb2x1bW5zOl8oZCksZGF0YTp1LnZhbHVlLCJlbXB0eS1tZXNzYWdlIjptLnZhbHVlfSxudWxsLDgsW2Bjb2x1bW5zYCxgZGF0YWAsYGVtcHR5LW1lc3NhZ2VgXSkpXSksXzoxfSldKSxfOjF9KSl9fSksSWU9eyJhcmlhLWhpZGRlbiI6YHRydWVgfSxKPXtjbGFzczpgc3Itb25seWB9LExlPWQoe19fbmFtZTpgUHJvdmlkZXJSYXRlQmFkZ2VgLHByb3BzOnthdHRlbXB0c0RheTp7fSxmYWlsdXJlc0RheTp7fSxhdHRlbXB0c01pbnV0ZTp7fSxmYWlsdXJlc01pbnV0ZTp7fX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPXkoKCk9PmtlKHQuYXR0ZW1wdHNEYXksdC5mYWlsdXJlc0RheSkpLGk9eSgoKT0+VihuLnZhbHVlKSksYT15KCgpPT5pLnZhbHVlPT09YG5vLXRyYWZmaWNgP2BubyB0cmFmZmljYDpqZShuLnZhbHVlKSksbz15KCgpPT50LmF0dGVtcHRzTWludXRlPT09dm9pZCAwfHx0LmZhaWx1cmVzTWludXRlPT09dm9pZCAwP0godC5hdHRlbXB0c0RheSx0LmZhaWx1cmVzRGF5KTpPZSh0LmF0dGVtcHRzTWludXRlLHQuZmFpbHVyZXNNaW51dGUpKSxzPXkoKCk9PmkudmFsdWU9PT1gc2V2ZXJlYD9gZGVzdHJ1Y3RpdmVgOmkudmFsdWU9PT1gaGVhbHRoeWA/YHNlY29uZGFyeWA6YG91dGxpbmVgKSxsPXkoKCk9PmkudmFsdWU9PT1gZGVncmFkZWRgP2Bib3JkZXItc3RhdHVzLXdhcm4vNDAgdGV4dC1zdGF0dXMtd2FybmA6aS52YWx1ZT09PWBuby10cmFmZmljYD9gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYDpgYCk7cmV0dXJuKGUsdCk9PihTKCksQyhfKEYpLHthczpgc3BhbmAsdmFyaWFudDpzLnZhbHVlLGNsYXNzOkQoW2wudmFsdWUsYGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2BdKSx0aXRsZTpvLnZhbHVlfSx7ZGVmYXVsdDpyKCgpPT5bcChgc3BhbmAsSWUsYyhhLnZhbHVlKSwxKSxwKGBzcGFuYCxKLGMoby52YWx1ZSksMSldKSxfOjF9LDgsW2B2YXJpYW50YCxgY2xhc3NgLGB0aXRsZWBdKSl9fSksUmU9ZihgbW9kZWxzYCx7c3RhdGU6KCk9Pih7cm93czpbXSxwcm92aWRlclBlcmY6W10scGVyZldpbmRvdzp7d2luZG93OmBkYXlgLHNwYW46MH0sbGF0ZW5jeUVuYWJsZWQ6ITEsbG9hZGluZzohMSxsYXN0VXBkYXRlZDpudWxsLGVycm9yOmBgLHJlcUlkOjB9KSxhY3Rpb25zOnthc3luYyBmZXRjaCgpe2xldCBlPSsrdGhpcy5yZXFJZDt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCB0PVUoKSxuPUEoKTtpZihhd2FpdCB0LmVuc3VyZUxvYWRlZCgpLGUhPT10aGlzLnJlcUlkKXJldHVybjtpZighdC5kYXRhKXt0aGlzLmVycm9yPXQuZXJyb3J8fGBjYXRhbG9nIHVuYXZhaWxhYmxlYDtyZXR1cm59bGV0IHI9VyhuLndpbmRvdyxuLnNwYW4pLFtpLGEsb109YXdhaXQgUHJvbWlzZS5hbGwoW20oYC9hZG1pbi9hcGkvdXNhZ2UvbW9kZWxzP3dpbmRvdz0ke24ud2luZG93fSZzcGFuPSR7bi5zcGFufSZsaW1pdD0xMDAmZGV0YWlsPTEmbWV0cmljPXJlcWApLG0oYC9hZG1pbi9hcGkvcGVyZm9ybWFuY2U/a2luZD1tb2RlbCZ3aW5kb3c9JHtyLndpbmRvd30mc3Bhbj0ke3Iuc3Bhbn1gKSxtKGAvYWRtaW4vYXBpL3BlcmZvcm1hbmNlP2tpbmQ9cHJvdmlkZXImd2luZG93PSR7ci53aW5kb3d9JnNwYW49JHtyLnNwYW59YCldKTtpZihlIT09dGhpcy5yZXFJZClyZXR1cm47dGhpcy5yb3dzPUcodC5kYXRhLGksYSksdGhpcy5wcm92aWRlclBlcmY9by5yb3dzPz9bXSx0aGlzLnBlcmZXaW5kb3c9cix0aGlzLmxhdGVuY3lFbmFibGVkPWEubGF0ZW5jeUVuYWJsZWQsdGhpcy5sYXN0VXBkYXRlZD1uZXcgRGF0ZSx0aGlzLmVycm9yPWBgfWNhdGNoKHQpe2lmKGUhPT10aGlzLnJlcUlkfHx0IGluc3RhbmNlb2YgYWUmJih0LnN0YXR1cz09PTQwMXx8dC5zdGF0dXM9PT00MDMpKXJldHVybjt0aGlzLmVycm9yPXQgaW5zdGFuY2VvZiBFcnJvcj90Lm1lc3NhZ2U6U3RyaW5nKHQpfWZpbmFsbHl7ZT09PXRoaXMucmVxSWQmJih0aGlzLmxvYWRpbmc9ITEpfX19fSksemU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC02YH0sQmU9e2NsYXNzOmBncmlkIGdhcC00IHNtOmdyaWQtY29scy0zYH0sVmU9e2NsYXNzOmBmb250LW1lZGl1bWB9LEhlPXtrZXk6MCxjbGFzczpgZmxleCBpdGVtcy1zdGFydCBnYXAtMS41IHRleHQtZGVzdHJ1Y3RpdmVgfSxVZT17Y2xhc3M6YGZvbnQtbWVkaXVtYH0sV2U9e2tleTowLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxHZT17Y2xhc3M6YGZvbnQtbWVkaXVtYH0sS2U9e2tleTowLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxxZT17a2V5OjMsY2xhc3M6YHB5LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxKZT17a2V5OjQsY2xhc3M6YHB5LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxZZT17Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sWGU9e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMmB9LFplPVtgYXJpYS1sYWJlbGAsYHRpdGxlYCxgb25DbGlja2BdLFFlPXtjbGFzczpgc3Itb25seWB9LCRlPXtjbGFzczpgZmxleCBmbGV4LTEgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC0zIGdhcC15LTEgcHItMiB0ZXh0LWxlZnRgfSxldD17Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRhYnVsYXItbnVtc2B9LHR0PXtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxudD17Y2xhc3M6YG1iLTMgZ3JpZCBncmlkLWNvbHMtMiBnYXAteC02IGdhcC15LTEuNSB0ZXh0LXNtIHNtOmdyaWQtY29scy0zYH0scnQ9e2NsYXNzOmBicmVhay1hbGxgfSxpdD17a2V5OjB9LGF0PXtrZXk6MX0sb3Q9e2NsYXNzOmB0ZXh0LWRlc3RydWN0aXZlYH0sc3Q9e2tleTowLGNsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sY3Q9e2tleTowLHRpdGxlOmBjb250ZXh0IHdpbmRvd2AsY2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRhYnVsYXItbnVtc2B9LGx0PXtrZXk6MSxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx1dD17a2V5OjAsY2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sWT1kKHtfX25hbWU6YFByb3ZpZGVySGVhbHRoUGFuZWxgLHNldHVwKHUpe2xldCBkPXRlKCksZj1SZSgpLG09eSgoKT0+ZC5vdmVydmlldyksYWU9eCgpO2Z1bmN0aW9uIEEoZSl7YWUuZ29UbyhgbW9kZWxzYCx7cTpgJHtlfS9gfSl9bGV0IGo9bmUoe21hbnVhbGx5RXhwYW5kZWQ6bmV3IFNldCxtYW51YWxseUNvbGxhcHNlZDpuZXcgU2V0fSkse3F1ZXJ5OlAsbm9ybWFsaXplZDpJLGhhc1F1ZXJ5Okx9PVRlKCk7ZnVuY3Rpb24gUihlLHQpe3JldHVybiBNKGUsdCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhJLnZhbHVlKX1mdW5jdGlvbiBPZShlKXtyZXR1cm4gZS5tb2RlbHMuc29tZSh0PT5SKGUubmFtZSx0KSl9ZnVuY3Rpb24ga2UoZSl7cmV0dXJuIGUuYWxpYXMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhJLnZhbHVlKXx8ZS50YXJnZXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhJLnZhbHVlKX1sZXQgej15KCgpPT5fZSh7bG9hZGluZzohMCxoYXNEYXRhOm0udmFsdWUhPT1udWxsLGVycm9yOmQuZXJyb3J9KSksQj15KCgpPT57bGV0IGU9bS52YWx1ZT8ucHJvdmlkZXJzPz9bXTtyZXR1cm4gTC52YWx1ZT9lLmZpbHRlcihPZSk6ZX0pLGplPXkoKCk9PntsZXQgZT1tLnZhbHVlPy5hbGlhc2VzPz9bXTtyZXR1cm4gTC52YWx1ZT9lLmZpbHRlcihrZSk6ZX0pLFY9eSgoKT0+Y2UoaixMLnZhbHVlLEIudmFsdWUubWFwKGU9PmUubmFtZSkpKTtmdW5jdGlvbiBIKGUpe3VlKGosZSxWLnZhbHVlLmhhcyhlKSl9bGV0IFU9eSh7Z2V0OigpPT5BcnJheS5mcm9tKFYudmFsdWUpLHNldDplPT57bGV0IHQ9bmV3IFNldChlKTtmb3IobGV0IGUgb2YgVi52YWx1ZSl0LmhhcyhlKXx8SChlKTtmb3IobGV0IGUgb2YgdClWLnZhbHVlLmhhcyhlKXx8SChlKX19KTtlKFAsZT0+e2UudHJpbSgpPT09YGAmJmZlKGopfSk7ZnVuY3Rpb24gVyhlKXtyZXR1cm4gTC52YWx1ZT9lLm1vZGVscy5maWx0ZXIodD0+UihlLm5hbWUsdCkpOmUubW9kZWxzfWxldCBNZT17YXR0ZW1wdHNEYXk6MCxmYWlsdXJlc0RheTowfTtmdW5jdGlvbiBHKGUsdCl7cmV0dXJuIGUubW9kZWxSYXRlcz8uW3RdPz9NZX1mdW5jdGlvbiBOZShlLHQpe2xldCBuPUcoZSx0KTtyZXR1cm4gQWUobi5hdHRlbXB0c0RheSxuLmZhaWx1cmVzRGF5KX1sZXQgUGU9e307ZnVuY3Rpb24gSyhlLHQpe3JldHVybiBlLm1vZGVsTWV0YT8uW3RdPz9QZX1mdW5jdGlvbiBGZShlKXtzd2l0Y2goZSl7Y2FzZWBvcGVuYDpyZXR1cm5gZGVzdHJ1Y3RpdmVgO2Nhc2VgaGFsZi1vcGVuYDpyZXR1cm5gc2Vjb25kYXJ5YDtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gcShlKXtsZXQgdD1TZShlLm9wZW5VbnRpbCk7cmV0dXJuIHQ/YCR7ZS5oZWFsdGhTdGF0ZX0gKCR7dH0pYDplLmhlYWx0aFN0YXRlfWZ1bmN0aW9uIEllKGUpe3JldHVybiBlPT09YG9wZW5gP2B0ZXh0LWRlc3RydWN0aXZlYDpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH1mdW5jdGlvbiBKKGUpe3JldHVybiBlLmxhdGVuY3k/LnN0cmVhbWluZ31mdW5jdGlvbiBZKGUpe3JldHVybiBlLmxhdGVuY3k/Lltgbm9uLXN0cmVhbWluZ2BdfWZ1bmN0aW9uIFgoZSl7cmV0dXJuIGUuY291bnQ9PT12b2lkIDA/YG5vIG9ic2VydmF0aW9ucyBjb3VudGVkYDpgJHtlLmNvdW50fSAke2UuY291bnQ9PT0xP2BvYnNlcnZhdGlvbmA6YG9ic2VydmF0aW9uc2B9IG9uIHRoaXMgcmVwbGljYWB9ZnVuY3Rpb24gWigpe2xldCBlPW0udmFsdWU/LnJlcGxpY2E7cmV0dXJuYFBlci1yZXBsaWNhICgke2U/YHJlcGxpY2EgJHtlfWA6YHRoaXMgcmVwbGljYWB9KSwgaW4tcHJvY2VzcyBvbmx5IOKAlCBub3QgYSBmbGVldC13aWRlIGF2ZXJhZ2UgYWNyb3NzIHRoaXMgZGVwbG95bWVudOKAmXMgcmVwbGljYXMuYH1mdW5jdGlvbiBkdChlKXtyZXR1cm5gQXZlcmFnZSB0aW1lIHRvIGZpcnN0IGJ5dGUsIHRoZSBsb2FkLXNlbnNpdGl2ZSByZWFkaW5nIGZvciBzdHJlYW1pbmcgdHJhZmZpYy4gJHtYKGUpfS4gJHtaKCl9YH1mdW5jdGlvbiBmdChlKXtyZXR1cm5gQXZlcmFnZSB0b3RhbCByZXNwb25zZSB0aW1lLCBpbmNsdWRpbmcgZ2VuZXJhdGlvbiDigJQgbm90IGEgbG9hZC1zZW5zaXRpdmUgc2lnbmFsIGxpa2Ugc3RyZWFtaW5nIHR0ZmIsIHNpbmNlIHRoaXMgcHJvdmlkZXIgYnVmZmVycyB0aGUgd2hvbGUgY29tcGxldGlvbiBiZWZvcmUgc2VuZGluZyBhbnl0aGluZy4gJHtYKGUpfS4gJHtaKCl9YH1mdW5jdGlvbiBRKGUpe3JldHVybiBlLnByb3ZlbmFuY2U/LmVzdGltYXRlZH1mdW5jdGlvbiBwdChlKXtyZXR1cm4gZS5wcm92ZW5hbmNlPy51bmJpbGxlZH1mdW5jdGlvbiBtdChlKXtsZXQgdD1lLnJlcXVlc3RzPT09MT9gYDpgc2A7cmV0dXJuYCR7ZS5yZXF1ZXN0c30gbm9uLXN0cmVhbWluZyByZXNwb25zZSR7dH0gY2FycmllZCBubyB1c2FnZSBmcm9tIHRoZSBwcm92aWRlciDigJQgcHJvbXB0IHRva2VucyB3ZXJlIGVzdGltYXRlZCBmcm9tIHJlcXVlc3QgYm9keSBzaXplIGluc3RlYWQgKCR7ZS50b2tlbnN9IHRva2VucyBiaWxsZWQgZnJvbSB0aGUgZXN0aW1hdGUpLCBjb21wbGV0aW9uIGJpbGxlZCBhcyB6ZXJvLiAke1ooKX1gfWZ1bmN0aW9uIGh0KGUpe2xldCB0PWUucmVxdWVzdHM9PT0xP2BgOmBzYDtyZXR1cm5gJHtlLnJlcXVlc3RzfSBzdHJlYW1pbmcgcmVzcG9uc2Uke3R9IGNhcnJpZWQgbm8gdXNhZ2UgZnJvbSB0aGUgcHJvdmlkZXIg4oCUIHRoZSByZXF1ZXN0IHdhcyBjb3VudGVkIGJ1dCB6ZXJvIHRva2VucyB3ZXJlIGJpbGxlZC4gSWYgdGhpcyBrZWVwcyBoYXBwZW5pbmcsIHRoaXMgcHJvdmlkZXIgbWF5IGJlIHNlcnZpbmcgY29tcGxldGlvbnMgZW50aXJlbHkgZnJlZSBhZ2FpbnN0IGV2ZXJ5IGJ1ZGdldC4gJHtaKCl9YH1mdW5jdGlvbiAkKGUpe3JldHVybiBmLnByb3ZpZGVyUGVyZi5maW5kKHQ9PnQuaWQ9PT1lKX1mdW5jdGlvbiBndChlKXtsZXR7d2luZG93OnQsc3BhbjpufT1mLnBlcmZXaW5kb3c7cmV0dXJuYEZsZWV0LXdpZGUgKGV2ZXJ5IHJlcGxpY2EgY29tYmluZWQpICR7ZT09PWBwNTBgP2BtZWRpYW5gOmA5NXRoIHBlcmNlbnRpbGVgfSByZXNwb25zZSB0aW1lLCBvdmVyIHRoZSBsYXN0ICR7bn0gJHt0fSR7bj09PTE/YGA6YHNgfS5gfWZ1bmN0aW9uIF90KGUpe2xldHt3aW5kb3c6dCxzcGFuOm59PWYucGVyZldpbmRvdztyZXR1cm5gJHtlPT09YHRpbWVvdXRzYD9gcmVxdWVzdHMgdGhhdCBleGNlZWRlZCB0aGUgZGVhZGxpbmVgOmByZXF1ZXN0cyBmYWlsZWQgYXdheSBmcm9tIHRoaXMgcHJvdmlkZXIgdG8gYW5vdGhlciBjYW5kaWRhdGVgfSwgZmxlZXQtd2lkZSwgb3ZlciB0aGUgbGFzdCAke259ICR7dH0ke249PT0xP2BgOmBzYH0uYH1sZXQgdnQ9W3tpZDpgYWxpYXNgLGhlYWRlcjpgQWxpYXNgLGFjY2Vzc29yRm46ZT0+ZS5hbGlhcyxjZWxsOih7cm93OmV9KT0+YShPLHtpZDplLm9yaWdpbmFsLmFsaWFzLGNvbnRleHRUb2tlbnM6ZS5vcmlnaW5hbC5tb2RlbE1ldGE/LmNvbnRleHRUb2tlbnMsaW5wdXRQZXJNVG9rVXNkOmUub3JpZ2luYWwubW9kZWxNZXRhPy5pbnB1dFBlck1Ub2tVc2Qsb3V0cHV0UGVyTVRva1VzZDplLm9yaWdpbmFsLm1vZGVsTWV0YT8ub3V0cHV0UGVyTVRva1VzZH0pfSx7aWQ6YHRhcmdldGAsaGVhZGVyOmBUYXJnZXRgLGFjY2Vzc29yRm46ZT0+ZS50YXJnZXQsY2VsbDooe3JvdzplfSk9PmEoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sZS5vcmlnaW5hbC50YXJnZXQpfV0seXQ9eSgoKT0+bS52YWx1ZT8uYWxpYXNlcy5sZW5ndGg/TC52YWx1ZT9gbm8gYWxpYXNlcyBtYXRjaCAiJHtQLnZhbHVlfSJgOmBub25lYDpgbm9uZSBjb25maWd1cmVkYCk7cmV0dXJuKGUsYSk9PntsZXQgdT1pZShgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIFMoKSxoKGBkaXZgLHplLFtwKGBkaXZgLEJlLFt2KF8obCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bdihfKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3YoXyhzKSx7Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0se2RlZmF1bHQ6cigoKT0+W3YodSx7aWNvbjptLnZhbHVlPy5yZWRpcy5jb25maWd1cmVkP18oZyk6Xyh3KSxjbGFzczpEKFttLnZhbHVlPy5yZWRpcy5jb25maWd1cmVkP2B0ZXh0LWNoYXJ0LXJlcXVlc3RzYDpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCxgc2l6ZS0zLjVgXSksImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gLGBjbGFzc2BdKSxhWzNdfHw9YihgIFJlZGlzIGAsLTEpXSksXzoxfSldKSxfOjF9KSx2KF8oRSkse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xIHRleHQtc21gfSx7ZGVmYXVsdDpyKCgpPT5bcChgcGAsVmUsYyhtLnZhbHVlPy5yZWRpcy5jb25maWd1cmVkP2BDb25maWd1cmVkYDpgTm90IGNvbmZpZ3VyZWRgKSwxKSxtLnZhbHVlPy5yZWRpcy5sYXN0RXJyPyhTKCksaChgcGAsSGUsW3YodSx7aWNvbjpfKHJlKSxjbGFzczpgbXQtMC41IHNpemUtMy41IHNocmluay0wYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxwKGBzcGFuYCxudWxsLGMobS52YWx1ZS5yZWRpcy5sYXN0RXJyKStjKF8oeGUpKG0udmFsdWUucmVkaXMubGFzdEVyckF0KSksMSldKSk6VChgYCwhMCldKSxfOjF9KV0pLF86MX0pLHYoXyhsKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt2KF8odCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bdihfKHMpLHtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx7ZGVmYXVsdDpyKCgpPT5bdih1LHtpY29uOm0udmFsdWU/LmNhY2hlLmVuYWJsZWQ/XyhnKTpfKHcpLGNsYXNzOkQoW20udmFsdWU/LmNhY2hlLmVuYWJsZWQ/YHRleHQtY2hhcnQtcmVxdWVzdHNgOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgLGBzaXplLTMuNWBdKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pLGFbNF18fD1iKGAgUmVzcG9uc2UgY2FjaGUgYCwtMSldKSxfOjF9KV0pLF86MX0pLHYoXyhFKSx7Y2xhc3M6YHRleHQtc21gfSx7ZGVmYXVsdDpyKCgpPT5bcChgcGAsVWUsYyhtLnZhbHVlPy5jYWNoZS5lbmFibGVkP2BFbmFibGVkYDpgRGlzYWJsZWRgKSwxKSxtLnZhbHVlPy5jYWNoZS5lbmFibGVkPyhTKCksaChgcGAsV2UsYHR0bCBgK2MobS52YWx1ZS5jYWNoZS50dGwpLDEpKTpUKGBgLCEwKV0pLF86MX0pXSksXzoxfSksdihfKGwpLG51bGwse2RlZmF1bHQ6cigoKT0+W3YoXyh0KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt2KF8ocykse2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHtkZWZhdWx0OnIoKCk9Plt2KHUse2ljb246bS52YWx1ZT8ucmV0cnkuZW5hYmxlZD9fKGcpOl8odyksY2xhc3M6RChbbS52YWx1ZT8ucmV0cnkuZW5hYmxlZD9gdGV4dC1jaGFydC1yZXF1ZXN0c2A6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsYHNpemUtMy41YF0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSksYVs1XXx8PWIoYCBSZXRyeSBgLC0xKV0pLF86MX0pXSksXzoxfSksdihfKEUpLHtjbGFzczpgdGV4dC1zbWB9LHtkZWZhdWx0OnIoKCk9PltwKGBwYCxHZSxjKG0udmFsdWU/LnJldHJ5LmVuYWJsZWQ/YEVuYWJsZWRgOmBEaXNhYmxlZGApLDEpLG0udmFsdWU/LnJldHJ5LmVuYWJsZWQ/KFMoKSxoKGBwYCxLZSxgIGF0dGVtcHRzIGArYyhtLnZhbHVlLnJldHJ5LmF0dGVtcHRzKStgLCBiYWNrb2ZmIGArYyhtLnZhbHVlLnJldHJ5LmJhY2tvZmYpLDEpKTpUKGBgLCEwKV0pLF86MX0pXSksXzoxfSldKSx2KF8obCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bdihfKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3YoXyhzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzZdfHw9W2IoYFByb3ZpZGVyc2AsLTEpXV0pLF86MX0pLHYoXyhrKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzddfHw9W2IoYCBFdmVyeSBjb25maWd1cmVkIHVwc3RyZWFtLCBpdHMgbGFzdCBkaXNjb3ZlcnkgcmVmcmVzaCwgYW5kIGZsZWV0LXdpZGUgcGVyZm9ybWFuY2UuIFNlYXJjaCBmaWx0ZXJzIHByb3ZpZGVycyBhbmQgYWxpYXNlcyBieSBtb2RlbCBpZC4gYCwtMSldXSksXzoxfSksdih3ZSx7bW9kZWxWYWx1ZTpfKFApLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzBdfHw9ZT0+byhQKT9QLnZhbHVlPWU6bnVsbCxwbGFjZWhvbGRlcjpgU2VhcmNoIG1vZGVscyBvciBhbGlhc2VzLi4uYCxjbGFzczpgbXQtMiBtYXgtdy1zbWB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxfOjF9KSx2KF8oRSkse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0zYH0se2RlZmF1bHQ6cigoKT0+W18oZikubGF0ZW5jeUVuYWJsZWQ/VChgYCwhMCk6KFMoKSxDKF8ocGUpLHtrZXk6MCx2YXJpYW50OmB3YXJuYH0se2RlZmF1bHQ6cigoKT0+W3YoXyhoZSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVs4XXx8PVtiKGBMYXRlbmN5IHN0YXRpc3RpY3MgYXJlIG9mZmAsLTEpXV0pLF86MX0pLHYoXyhtZSkse2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSx7ZGVmYXVsdDpyKCgpPT5bYVsxMF18fD1wKGBzcGFuYCxudWxsLFtiKGBFbmFibGUgYCkscChgY29kZWAsbnVsbCxgYWRtaW4uc3RhdHMubGF0ZW5jeWApLGIoYCBpbiB0aGUgbWlkZGxld2FyZSBjb25maWcgdG8gc2VlIGZsZWV0IHA1MC9wOTUuYCldLC0xKSx2KF8obikse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLG9uQ2xpY2s6YVsxXXx8PWU9Pl8oYWUpLmdvVG8oYGNvbmZpZ2ApfSx7ZGVmYXVsdDpyKCgpPT5bLi4uYVs5XXx8PVtiKGBPcGVuIENvbmZpZ2AsLTEpXV0pLF86MX0pXSksXzoxfSldKSxfOjF9KSksei52YWx1ZT09PWBza2VsZXRvbmA/KFMoKSxDKEVlLHtrZXk6MSxyb3dzOjN9KSk6ei52YWx1ZT09PWBlcnJvcmA/KFMoKSxDKGdlLHtrZXk6MixtZXNzYWdlOl8oZCkuZXJyb3IsIm9uLXJldHJ5IjpfKGQpLnJlZnJlc2h9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKSk6bS52YWx1ZT8ucHJvdmlkZXJzLmxlbmd0aD9fKEwpJiZCLnZhbHVlLmxlbmd0aD09PTA/KFMoKSxoKGBwYCxKZSxgIG5vIHByb3ZpZGVycyBtYXRjaCAiYCtjKF8oUCkpK2AiIGAsMSkpOihTKCksaChpLHtrZXk6NX0sW3AoYHBgLFllLGMoWigpKStgIEZsZWV0IHA1MC9wOTUvdGltZW91dHMvZmFpbG92ZXJzIGJlbG93IGFyZSBmbGVldC13aWRlLCBub3QgcGVyLXJlcGxpY2EuYCwxKSx2KF8oZGUpLHttb2RlbFZhbHVlOlUudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMl18fD1lPT5VLnZhbHVlPWUsdHlwZTpgbXVsdGlwbGVgLGNsYXNzOmByb3VuZGVkLW1kIGJvcmRlciBweC0zYH0se2RlZmF1bHQ6cigoKT0+WyhTKCEwKSxoKGksbnVsbCxlZShCLnZhbHVlLGU9PihTKCksQyhfKG9lKSx7a2V5OmUubmFtZSx2YWx1ZTplLm5hbWV9LHtkZWZhdWx0OnIoKCk9PltwKGBkaXZgLFhlLFtwKGBidXR0b25gLHt0eXBlOmBidXR0b25gLGNsYXNzOmBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciByb3VuZGVkLXNtIHB5LTIuNSBmb250LW1lZGl1bSBob3Zlcjp0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwYCwiYXJpYS1sYWJlbCI6YFZpZXcgJHtlLm5hbWV9J3MgbW9kZWxzIGluIHRoZSBNb2RlbHMgdGFibGVgLHRpdGxlOmBWaWV3ICR7ZS5uYW1lfSdzIG1vZGVscyBpbiB0aGUgTW9kZWxzIHRhYmxlYCxvbkNsaWNrOnQ9PkEoZS5uYW1lKX0sYyhlLm5hbWUpLDksWmUpLHYoXyhzZSkseyJoZWFkZXItY2xhc3MiOmBmbGV4LTFgfSx7ZGVmYXVsdDpyKCgpPT5bcChgc3BhbmAsUWUsYFByb3ZpZGVyIGArYyhlLm5hbWUpK2AgZGV0YWlsc2AsMSkscChgc3BhbmAsJGUsW3YoXyhGKSx7YXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbm9ybWFsYH0se2RlZmF1bHQ6cigoKT0+W2IoYyhlLnR5cGUpLDEpXSksXzoyfSwxMDI0KSxwKGBzcGFuYCxldCxjKGUubW9kZWxDb3VudCkrYCBtb2RlbHNgLDEpLHYoTGUseyJhdHRlbXB0cy1kYXkiOmUuYXR0ZW1wdHNEYXksImZhaWx1cmVzLWRheSI6ZS5mYWlsdXJlc0RheSwiYXR0ZW1wdHMtbWludXRlIjplLmF0dGVtcHRzTWludXRlLCJmYWlsdXJlcy1taW51dGUiOmUuZmFpbHVyZXNNaW51dGV9LG51bGwsOCxbYGF0dGVtcHRzLWRheWAsYGZhaWx1cmVzLWRheWAsYGF0dGVtcHRzLW1pbnV0ZWAsYGZhaWx1cmVzLW1pbnV0ZWBdKSxlLmhlYWx0aFN0YXRlPT09YGNsb3NlZGA/VChgYCwhMCk6KFMoKSxDKF8oRikse2tleTowLGFzOmBzcGFuYCx2YXJpYW50OkZlKGUuaGVhbHRoU3RhdGUpLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6ZS5oZWFsdGhTdGF0ZT09PWBvcGVuYD9gZGlzY292ZXJ5IGlzIGJhY2tpbmcgb2ZmIGFmdGVyIHJlcGVhdGVkIGZhaWx1cmVzYDpgYSBkaXNjb3ZlcnkgcHJvYmUgaXMgZGVjaWRpbmcgd2hldGhlciB0byByZWNvdmVyYH0se2RlZmF1bHQ6cigoKT0+W2IoYyhxKGUpKSwxKV0pLF86Mn0sMTAzMixbYHZhcmlhbnRgLGB0aXRsZWBdKSksSihlKT8uYXZnVHRmYk1zPT09dm9pZCAwP1QoYGAsITApOihTKCksQyhfKEYpLHtrZXk6MSxhczpgc3BhbmAsdmFyaWFudDpgb3V0bGluZWAsY2xhc3M6YGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2AsdGl0bGU6ZHQoSihlKSl9LHtkZWZhdWx0OnIoKCk9PltiKGAgc3RyZWFtaW5nIHR0ZmIgYCtjKF8oTikoSihlKS5hdmdUdGZiTXMpKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKSxZKGUpPy5hdmdEdXJhdGlvbk1zPT09dm9pZCAwP1QoYGAsITApOihTKCksQyhfKEYpLHtrZXk6Mixhczpgc3BhbmAsdmFyaWFudDpgb3V0bGluZWAsY2xhc3M6YGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2AsdGl0bGU6ZnQoWShlKSl9LHtkZWZhdWx0OnIoKCk9PltiKGAgbm9uLXN0cmVhbWluZyBhdmcgYCtjKF8oTikoWShlKS5hdmdEdXJhdGlvbk1zKSksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSksJChlLm5hbWUpPy5wNTBNcz09PXZvaWQgMD9UKGBgLCEwKTooUygpLEMoXyhGKSx7a2V5OjMsYXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOmd0KGBwNTBgKX0se2RlZmF1bHQ6cigoKT0+W2IoYCBmbGVldCBwNTAgYCtjKF8oTikoJChlLm5hbWUpLnA1ME1zKSksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSksJChlLm5hbWUpPy5wOTVNcz09PXZvaWQgMD9UKGBgLCEwKTooUygpLEMoXyhGKSx7a2V5OjQsYXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOmd0KGBwOTVgKX0se2RlZmF1bHQ6cigoKT0+W2IoYCBmbGVldCBwOTUgYCtjKF8oTikoJChlLm5hbWUpLnA5NU1zKSksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSksKCQoZS5uYW1lKT8udGltZW91dHM/PzApPjA/KFMoKSxDKF8oRikse2tleTo1LGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOl90KGB0aW1lb3V0c2ApfSx7ZGVmYXVsdDpyKCgpPT5bYihjKCQoZS5uYW1lKS50aW1lb3V0cykrYCB0aW1lb3V0cyBgLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpOlQoYGAsITApLCgkKGUubmFtZSk/LmZhaWxvdmVycz8/MCk+MD8oUygpLEMoXyhGKSx7a2V5OjYsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2AsdGl0bGU6X3QoYGZhaWxvdmVyc2ApfSx7ZGVmYXVsdDpyKCgpPT5bYihjKCQoZS5uYW1lKS5mYWlsb3ZlcnMpK2AgZmFpbG92ZXJzIGAsMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSk6VChgYCwhMCksUShlKT8oUygpLEMoXyhGKSx7a2V5OjcsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2AsdGl0bGU6bXQoUShlKSl9LHtkZWZhdWx0OnIoKCk9PltiKGAgZXN0aW1hdGVkIGArYyhRKGUpLnJlcXVlc3RzKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKTpUKGBgLCEwKSxwdChlKT8oUygpLEMoXyhGKSx7a2V5OjgsYXM6YHNwYW5gLHZhcmlhbnQ6YGRlc3RydWN0aXZlYCxjbGFzczpgZm9udC1ub3JtYWwgdGFidWxhci1udW1zYCx0aXRsZTpodChwdChlKSl9LHtkZWZhdWx0OnIoKCk9PltiKGAgdW5iaWxsZWQgYCtjKHB0KGUpLnJlcXVlc3RzKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKTpUKGBgLCEwKSxlLmxhc3RFcnI/KFMoKSxDKHUse2tleTo5LGljb246XyhyZSksY2xhc3M6YHNpemUtMy41IHNocmluay0wIHRleHQtZGVzdHJ1Y3RpdmVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pKTpUKGBgLCEwKSxwKGBzcGFuYCx0dCxjKF8oeWUpKGUuZGlzY292ZXJ5RW5hYmxlZCxlLmxhc3RSZWZyZXNoKSksMSldKV0pLF86Mn0sMTAyNCldKSx2KF8obGUpLG51bGwse2RlZmF1bHQ6cigoKT0+W3AoYGRsYCxudCxbcChgZGl2YCxudWxsLFthWzExXXx8PXAoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYEJhc2UgVVJMYCwtMSkscChgZGRgLHJ0LGMoZS5iYXNlVXJsKSwxKV0pLHAoYGRpdmAsbnVsbCxbYVsxMl18fD1wKGBkdGAse2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBMYXN0IHJlZnJlc2hgLC0xKSxwKGBkZGAsbnVsbCxjKF8oYmUpKGUuZGlzY292ZXJ5RW5hYmxlZCxlLmxhc3RSZWZyZXNoKSksMSldKSxlLmhlYWx0aFN0YXRlPT09YGNsb3NlZGA/VChgYCwhMCk6KFMoKSxoKGBkaXZgLGl0LFthWzEzXXx8PXAoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYERpc2NvdmVyeSBoZWFsdGhgLC0xKSxwKGBkZGAse2NsYXNzOkQoSWUoZS5oZWFsdGhTdGF0ZSkpfSxjKHEoZSkpLDMpXSkpLGUubGFzdEVycj8oUygpLGgoYGRpdmAsYXQsW2FbMTRdfHw9cChgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGFzdCBlcnJvcmAsLTEpLHAoYGRkYCxvdCxjKGUubGFzdEVyciksMSldKSk6VChgYCwhMCldKSxXKGUpLmxlbmd0aD8oUygpLGgoYGRpdmAsc3QsWyhTKCEwKSxoKGksbnVsbCxlZShXKGUpLHQ9PihTKCksaChgc3BhbmAse2tleTp0LGNsYXNzOmBpbmxpbmUtZmxleCBtaW4tdy0wIG1heC13LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0xYH0sW3YoTyx7aWQ6XyhNKShlLm5hbWUsdCksImNvbnRleHQtdG9rZW5zIjpLKGUsdCkuY29udGV4dFRva2VucywiaW5wdXQtcGVyLW0tdG9rLXVzZCI6SyhlLHQpLmlucHV0UGVyTVRva1VzZCwib3V0cHV0LXBlci1tLXRvay11c2QiOksoZSx0KS5vdXRwdXRQZXJNVG9rVXNkfSxudWxsLDgsW2BpZGAsYGNvbnRleHQtdG9rZW5zYCxgaW5wdXQtcGVyLW0tdG9rLXVzZGAsYG91dHB1dC1wZXItbS10b2stdXNkYF0pLHYoRGUse2xhYmVsOl8oTSkoZS5uYW1lLHQpLGtpbmQ6YG1vZGVsYCxpZDpfKE0pKGUubmFtZSx0KSxjbGFzczpgbWluLXctMGAsImxhYmVsLWNsYXNzIjpgdHJ1bmNhdGVgfSxudWxsLDgsW2BsYWJlbGAsYGlkYF0pLEsoZSx0KS5jb250ZXh0VG9rZW5zPT09dm9pZCAwP1QoYGAsITApOihTKCksaChgc3BhbmAsY3QsYyhfKHZlKShLKGUsdCkuY29udGV4dFRva2VucykpLDEpKSxOZShlLHQpPyhTKCksQyhMZSx7a2V5OjEsImF0dGVtcHRzLWRheSI6RyhlLHQpLmF0dGVtcHRzRGF5LCJmYWlsdXJlcy1kYXkiOkcoZSx0KS5mYWlsdXJlc0RheX0sbnVsbCw4LFtgYXR0ZW1wdHMtZGF5YCxgZmFpbHVyZXMtZGF5YF0pKTpUKGBgLCEwKV0pKSksMTI4KSldKSk6KFMoKSxoKGBwYCxsdCxgbm8gbW9kZWxzIGtub3duIHlldGApKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSw4LFtgbW9kZWxWYWx1ZWBdKV0sNjQpKTooUygpLGgoYHBgLHFlLGBub25lYCkpXSksXzoxfSldKSxfOjF9KSx2KF8obCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bdihfKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3YoXyhzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzE1XXx8PVtiKGBNb2RlbCBhbGlhc2VzYCwtMSldXSksXzoxfSksdihfKGspLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMTZdfHw9W2IoYE9wZXJhdG9yLWRlZmluZWQgYWxpYXMg4oaSIHRhcmdldCBtb2RlbCBtYXBwaW5ncy5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLHYoXyhFKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt2KENlLHtjb2x1bW5zOnZ0LGRhdGE6amUudmFsdWUsImVtcHR5LW1lc3NhZ2UiOnl0LnZhbHVlfSxudWxsLDgsW2BkYXRhYCxgZW1wdHktbWVzc2FnZWBdKV0pLF86MX0pXSksXzoxfSksbS52YWx1ZT8udmVyc2lvbj8oUygpLGgoYHBgLHV0LGBWZXJzaW9uOiBgK2MobS52YWx1ZS52ZXJzaW9uKSwxKSk6VChgYCwhMCldKX19fSksWD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxaPXtrZXk6MCxjbGFzczpgdGV4dC1zbSBicmVhay13b3JkcyB0ZXh0LWRlc3RydWN0aXZlYH0sZHQ9ZCh7X19uYW1lOmBNb2RlbHNQYWdlYCxzZXR1cCh0KXtsZXQgbj1BKCkscj1SZSgpLGk9eCgpLGE9eSh7Z2V0OigpPT5pLnBhcmFtcy5xPz9pLnBhcmFtcy5tb2RlbD8/YGAsc2V0OmU9PntsZXR7bW9kZWw6dCwuLi5ufT1pLnBhcmFtcztpLmdvVG8oYG1vZGVsc2Asey4uLm4scTplfSl9fSk7cmV0dXJuIHUoKCk9PnZvaWQgci5mZXRjaCgpKSxlKCgpPT5uLnJhbmdlLCgpPT52b2lkIHIuZmV0Y2goKSksKGUsdCk9PihTKCksaChgZGl2YCxYLFt2KFkpLF8ocikuZXJyb3ImJl8ocikucm93cy5sZW5ndGg+MD8oUygpLGgoYHBgLFosYyhfKHIpLmVycm9yKSwxKSk6VChgYCwhMCksdihxLHtyb3dzOl8ocikucm93cyxxdWVyeTphLnZhbHVlLCJsYXRlbmN5LWVuYWJsZWQiOl8ocikubGF0ZW5jeUVuYWJsZWQsbG9hZGluZzpfKHIpLmxvYWRpbmcsZXJyb3I6XyhyKS5lcnJvciwib24tcmV0cnkiOl8ocikuZmV0Y2gsIm9uVXBkYXRlOnF1ZXJ5Ijp0WzBdfHw9ZT0+YS52YWx1ZT1lfSxudWxsLDgsW2Byb3dzYCxgcXVlcnlgLGBsYXRlbmN5LWVuYWJsZWRgLGBsb2FkaW5nYCxgZXJyb3JgLGBvbi1yZXRyeWBdKV0pKX19KTtleHBvcnR7ZHQgYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"ReliabilityPage-6-bz5x6z.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FyIGFzIGUsQyBhcyB0LEUgYXMgbixGciBhcyByLEp0IGFzIGksT24gYXMgYSxRciBhcyBvLFMgYXMgcyxTaSBhcyBjLFQgYXMgbCxYbiBhcyB1LF9uIGFzIGQsYW4gYXMgZixjbiBhcyBwLGNyIGFzIG0sZXIgYXMgaCxldCBhcyBnLGcgYXMgXyxnaSBhcyB2LGhuIGFzIHksaW4gYXMgYixtbiBhcyB4LG10IGFzIFMsbiBhcyBDLG5yIGFzIHcsb24gYXMgVCxzbiBhcyBFLHVyIGFzIEQsdnQgYXMgZWUsdyBhcyBPfWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7aW1wb3J0e2EgYXMgdGUsYyBhcyBrLGcgYXMgQSxoIGFzIGosaSBhcyBNLG0gYXMgbmUsbiBhcyByZSxvIGFzIGllLHIgYXMgYWUsdCBhcyBOfWZyb20iLi9pbmRleC1keXdTOE9wVC5qcyI7aW1wb3J0e3QgYXMgUH1mcm9tIi4vRXJyb3JTdGF0ZS15bTZlU2xqMi5qcyI7aW1wb3J0e18gYXMgRixmIGFzIEksciBhcyBMLHQgYXMgUix2IGFzIG9lfWZyb20iLi9iYWRnZS1EVWlCVER5QS5qcyI7aW1wb3J0e28gYXMgeix0IGFzIHNlfWZyb20iLi9EYXRhVGFibGUtQ1F4UlZEU1kuanMiO2ltcG9ydHtuIGFzIGNlLHQgYXMgQn1mcm9tIi4vdXNlU2VhcmNoUXVlcnktYlFaUDRUc1ouanMiO2ltcG9ydHt0IGFzIFZ9ZnJvbSIuL1NrZWxldG9uTGlzdC1DbXF6M2hmYS5qcyI7aW1wb3J0e24gYXMgSCx0IGFzIFV9ZnJvbSIuL1RpbWVTZXJpZXNDaGFydC1CRmNUNndvQS5qcyI7aW1wb3J0e3QgYXMgV31mcm9tIi4vZXZlbnRzLVBVeGhFZWdhLmpzIjtpbXBvcnR7aSBhcyBHLG4gYXMgSyxyIGFzIGxlLHQgYXMgdWV9ZnJvbSIuL2V2ZW50cy1maWx0ZXItWEZuaklhUjcuanMiO2ltcG9ydHtuIGFzIGRlfWZyb20iLi9wcm92aWRlci1yYXRlLURVN09nU2VCLmpzIjtpbXBvcnR7biBhcyBmZSxyIGFzIHBlfWZyb20iLi9yZWxpYWJpbGl0eS1DRklrUnhWVi5qcyI7ZnVuY3Rpb24gcShlKXtyZXR1cm4gS1tlXT8/ZX1mdW5jdGlvbiBtZShlKXtyZXR1cm4gZS51c2VyP2B1c2VyOiR7ZS51c2VyfWA6ZS5ncm91cD9gZ3JvdXA6JHtlLmdyb3VwfWA6YOKAlGB9ZnVuY3Rpb24gSihlKXtsZXQgdD1bZS5tb2RlbCxlLnByb3ZpZGVyXS5maWx0ZXIoZT0+ISFlKTtyZXR1cm4gdC5sZW5ndGg/dC5qb2luKGAg4oaSIGApOmDigJRgfWZ1bmN0aW9uIGhlKCl7cmV0dXJuW3tpZDpgdGltZWAsaGVhZGVyOmBUaW1lYCxhY2Nlc3NvckZuOmU9PmUudGltZSxjZWxsOih7cm93OmV9KT0+YShgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGFidWxhci1udW1zYH0sSShlLm9yaWdpbmFsLnRpbWUpKX0se2lkOmBraW5kYCxoZWFkZXI6YEtpbmRgLGFjY2Vzc29yRm46ZT0+ZS5raW5kLGNlbGw6KHtyb3c6ZX0pPT5hKFIse2FzOmBzcGFuYCx2YXJpYW50OmxlKGUub3JpZ2luYWwua2luZCksY2xhc3M6YGZvbnQtbm9ybWFsYH0sKCk9PnEoZS5vcmlnaW5hbC5raW5kKSl9LHtpZDpgcm91dGVgLGhlYWRlcjpgUm91dGVgLGFjY2Vzc29yRm46ZT0+ZS5yb3V0ZSxjZWxsOih7cm93OmV9KT0+YShgc3BhbmAse2NsYXNzOmBmb250LW1vbm8gdGV4dC14c2B9LGUub3JpZ2luYWwucm91dGUpfSx7aWQ6YHNjb3BlYCxoZWFkZXI6YFVzZXIgLyBncm91cGAsZW5hYmxlU29ydGluZzohMSxhY2Nlc3NvckZuOmU9PmUudXNlcj8/ZS5ncm91cD8/YGAsY2VsbDooe3JvdzplfSk9PntsZXQgdD1tZShlLm9yaWdpbmFsKTtyZXR1cm4gYShgc3BhbmAse2NsYXNzOnQ9PT1g4oCUYD9gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYDp2b2lkIDB9LHQpfX0se2lkOmB0YXJnZXRgLGhlYWRlcjpgTW9kZWwgLyBwcm92aWRlcmAsZW5hYmxlU29ydGluZzohMSxhY2Nlc3NvckZuOmU9PmAke2UubW9kZWw/P2BgfSAke2UucHJvdmlkZXI/P2BgfWAsY2VsbDooe3JvdzplfSk9PntsZXQgdD1KKGUub3JpZ2luYWwpO3JldHVybiBhKGBzcGFuYCx7Y2xhc3M6dD09PWDigJRgP2B0ZXh0LW11dGVkLWZvcmVncm91bmRgOmBmb250LW1vbm8gdGV4dC14c2B9LHQpfX0se2lkOmByZXBsaWNhYCxoZWFkZXI6YFJlcGxpY2FgLGFjY2Vzc29yRm46ZT0+ZS5yZXBsaWNhLGNlbGw6KHtyb3c6ZX0pPT5hKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGUub3JpZ2luYWwucmVwbGljYSl9LHtpZDpgc3RhdHVzYCxoZWFkZXI6YFN0YXR1c2AsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5lLnN0YXR1cz8/MCxjZWxsOih7cm93OmV9KT0+YShgc3BhbmAse2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxlLm9yaWdpbmFsLnN0YXR1cz09PXZvaWQgMD9g4oCUYDpTdHJpbmcoZS5vcmlnaW5hbC5zdGF0dXMpKX0se2lkOmBtZXNzYWdlYCxoZWFkZXI6YE1lc3NhZ2VgLGVuYWJsZVNvcnRpbmc6ITEsYWNjZXNzb3JGbjplPT5lLm1lc3NhZ2UsY2VsbDooe3JvdzplfSk9PmEoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sZS5vcmlnaW5hbC5tZXNzYWdlKX1dfXZhciBZPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNmB9LFg9e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTNgfSxaPWBhbGxgLGdlPWQoe19fbmFtZTpgRXZlbnRzVmlld2Asc2V0dXAoZSl7bGV0IG49VygpLHtraW5kRmlsdGVyOmEsdXNlckZpbHRlcjpkfT1lZShuKSx7bm9ybWFsaXplZDpffT1CKGQpLEM9YigoKT0+YS52YWx1ZT09PWBgP1o6YS52YWx1ZSksTj1iKCgpPT5HKG4uZXZlbnRzLHtraW5kOmEudmFsdWUsdXNlcjpfLnZhbHVlfSkpO2Z1bmN0aW9uIEkoZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZuLnNldEtpbmRGaWx0ZXIoZT09PVo/YGA6ZSl9bGV0IEw9aGUoKSxSPWIoKCk9PkYoe2xvYWRpbmc6bi5yZWZyZXNoaW5nLGhhc0RhdGE6bi5sYXN0VXBkYXRlZCE9PW51bGwsZXJyb3I6bi5lcnJvcn0pKSxWPWIoKCk9Pm4uZXZlbnRzLmxlbmd0aD09PTApLEg9YigoKT0+YS52YWx1ZSE9PWBgfHxfLnZhbHVlP2BubyBldmVudHMgbWF0Y2ggdGhlIGN1cnJlbnQgZmlsdGVyYDpgbm9uZWApLFU9YigoKT0+bi5zb3VyY2U9PT1gcmVkaXNgP2BGbGVldC13aWRlLCBhY3Jvc3MgZXZlcnkgcmVwbGljYWA6YFRoaXMgcmVwbGljYSBvbmx5ICgke24ucmVwbGljYXx8YHVua25vd25gfSkg4oCUIFJlZGlzIGlzIHVucmVhY2hhYmxlIG9yIHVuY29uZmlndXJlZGApO3JldHVybiB1KCgpPT57bi5zdGFydFBvbGxpbmcoKX0pLGgoKCk9PntuLnN0b3BQb2xsaW5nKCl9KSwoZSxhKT0+e2xldCB1PUQoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiB3KCkscChgZGl2YCxZLFt2KG4pLmRlZ3JhZGVkPyh3KCksVCh2KEEpLHtrZXk6MCx2YXJpYW50OmBkZXN0cnVjdGl2ZWB9LHtkZWZhdWx0OnIoKCk9Plt5KHUse2ljb246dihTKSxjbGFzczpgc2l6ZS00YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSx5KHYobmUpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMV18fD1beChgRmxlZXQtd2lkZSBldmVudCBsb2cgdW5hdmFpbGFibGVgLC0xKV1dKSxfOjF9KSx5KHYoaiksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsyXXx8PVt4KGAgUmVkaXMgaXMgY29uZmlndXJlZCBidXQgY291bGQgbm90IGJlIHJlYWQg4oCUIHNob3dpbmcgdGhpcyByZXBsaWNhJ3Mgb3duIGluLW1lbW9yeSBldmVudHMgb25seSwgd2hpY2ggbWF5IG1pc3MgZXZlbnRzIHJlY29yZGVkIGJ5IG90aGVyIHJlcGxpY2FzLiBgLC0xKV1dKSxfOjF9KV0pLF86MX0pKTpFKGBgLCEwKSx5KHYobCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpmbGV4LXJvdyBzbTppdGVtcy1jZW50ZXIgc206anVzdGlmeS1iZXR3ZWVuYH0se2RlZmF1bHQ6cigoKT0+W2YoYGRpdmAsbnVsbCxbeSh2KHMpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbM118fD1beChgRXZlbnRzYCwtMSldXSksXzoxfSksUi52YWx1ZT09PWByZWFkeWA/KHcoKSxUKHYoaykse2tleTowfSx7ZGVmYXVsdDpyKCgpPT5beChjKFUudmFsdWUpK2Ag4oCUIHJhdGUgbGltaXQsIGJ1ZGdldCwgYW5kIHVwc3RyZWFtIGV2ZW50cywgbmV3ZXN0IGZpcnN0IChjYXBhY2l0eSBgK2ModihuKS5jYXBhY2l0eSkrYCkuIGAsMSldKSxfOjF9KSk6RShgYCwhMCldKSxmKGBkaXZgLFgsW3koY2Use21vZGVsVmFsdWU6dihkKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8PWU9Pm8oZCk/ZC52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6YEZpbHRlciBieSB1c2VyIG9yIGdyb3VwYCxjbGFzczpgdy01NmB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSkseSh2KGllKSx7Im1vZGVsLXZhbHVlIjpDLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpJfSx7ZGVmYXVsdDpyKCgpPT5beSh2KGFlKSx7Y2xhc3M6YHctNDRgLCJhcmlhLWxhYmVsIjpgRmlsdGVyIGJ5IGtpbmRgfSx7ZGVmYXVsdDpyKCgpPT5beSh2KHJlKSx7cGxhY2Vob2xkZXI6YEtpbmRgfSldKSxfOjF9KSx5KHYodGUpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihNKSx7dmFsdWU6Wn0se2RlZmF1bHQ6cigoKT0+Wy4uLmFbNF18fD1beChgQWxsIGtpbmRzYCwtMSldXSksXzoxfSksKHcoITApLHAoaSxudWxsLG0odih1ZSksZT0+KHcoKSxUKHYoTSkse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0OnIoKCk9Plt4KGModihLKVtlXSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pXSksXzoxfSkseSh2KE8pLG51bGwse2RlZmF1bHQ6cigoKT0+W1IudmFsdWU9PT1gc2tlbGV0b25gPyh3KCksVCh6LHtrZXk6MCxyb3dzOjUsY29sczp2KEwpLmxlbmd0aH0sbnVsbCw4LFtgY29sc2BdKSk6Ui52YWx1ZT09PWBlcnJvcmA/KHcoKSxUKFAse2tleToxLG1lc3NhZ2U6dihuKS5lcnJvciwib24tcmV0cnkiOnYobikucmVmcmVzaH0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTpWLnZhbHVlPyh3KCksVChvZSx7a2V5OjIsaWNvbjp2KGcpLHRpdGxlOmBObyBmYWlsdXJlcyByZWNvcmRlZC5gLGRlc2NyaXB0aW9uOmBSYXRlLWxpbWl0LCBidWRnZXQsIGFuZCB1cHN0cmVhbSBldmVudHMgd2lsbCBzaG93IHVwIGhlcmUgYXMgdGhleSBoYXBwZW4uYH0sbnVsbCw4LFtgaWNvbmBdKSk6KHcoKSxUKHNlLHtrZXk6Myxjb2x1bW5zOnYoTCksZGF0YTpOLnZhbHVlLCJlbXB0eS1tZXNzYWdlIjpILnZhbHVlfSxudWxsLDgsW2Bjb2x1bW5zYCxgZGF0YWAsYGVtcHR5LW1lc3NhZ2VgXSkpXSksXzoxfSldKSxfOjF9KV0pfX19KSxfZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSx2ZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSx5ZT17a2V5OjIsY2xhc3M6YHRleHQtc20gYnJlYWstd29yZHMgdGV4dC1kZXN0cnVjdGl2ZWB9LGJlPXtrZXk6MyxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx4ZT17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sU2U9e2tleToyLGNsYXNzOmBncmlkIGdhcC02IGxnOmdyaWQtY29scy0yYH0sQ2U9e2NsYXNzOmBncmlkIGdhcC02IGxnOmdyaWQtY29scy0yYH0sUT1gYWxsYCx3ZT1kKHtfX25hbWU6YFJlbGlhYmlsaXR5UGFnZWAsc2V0dXAoYSl7bGV0IG89XygpLGQ9VygpLGg9TigpLGc9QygpLFM9cGUoKSxEPWIoKCk9PmcucGFyYW1zLnByb3ZpZGVyPz9gYCksZWU9YigoKT0+RC52YWx1ZXx8USk7ZnVuY3Rpb24gSShlKXt0eXBlb2YgZT09YHN0cmluZ2AmJmcuZ29UbyhgcmVsaWFiaWxpdHlgLHsuLi5nLnBhcmFtcyxwcm92aWRlcjplPT09UT9gYDplfSl9ZnVuY3Rpb24gUihlKXtyZXR1cm4gZS5yZXBsYWNlKC9ecHJvdmlkZXI6LyxgYCl9ZnVuY3Rpb24geihlKXtyZXR1cm4gRC52YWx1ZT9lLmZpbHRlcihlPT5SKGUuc2NvcGUpPT09RC52YWx1ZSk6ZX1mdW5jdGlvbiBzZShlKXtyZXR1cm4gZS5tYXAoZT0+ZT09PW51bGw/TmFOOmUpfWxldCBjZT1iKCgpPT56KFMuZXJyb3JSYXRlKS5tYXAoKGUsdCk9Pih7bGFiZWw6UihlLnNjb3BlKSxkYXRhOnNlKGUucG9pbnRzKSxjb2xvcjpmZSh0KX0pKSk7ZnVuY3Rpb24gQihlKXtyZXR1cm4geihlKS5tYXAoKGUsdCk9Pih7bGFiZWw6UihlLnNjb3BlKSxkYXRhOmUucG9pbnRzLGNvbG9yOmZlKHQpfSkpfWxldCBHPWIoKCk9PkIoUy50aW1lb3V0cykpLEs9YigoKT0+QihTLmZhaWxvdmVycykpLGxlPWIoKCk9Plt7bGFiZWw6YDQyOSByZWplY3Rpb25zYCxkYXRhOlMucmVqZWN0aW9ucyxjb2xvcjpgLS1kZXN0cnVjdGl2ZWB9XSksdWU9YigoKT0+W3tsYWJlbDpgNDAyIHVucHJpY2VkIHJlZnVzYWxzYCxkYXRhOlMudW5wcmljZWQsY29sb3I6YC0tc3RhdHVzLXdhcm5gfV0pLHE9YigoKT0+Uy5idWNrZXRzLm1hcChlPT5MKGUsUy53aW5kb3dVc2VkKSkpO2Z1bmN0aW9uIG1lKGUpe3JldHVybiBkZShOdW1iZXIuaXNOYU4oZSk/bnVsbDplKX1sZXQgSj1iKCgpPT4oby5vdmVydmlldz8ucHJvdmlkZXJzLmxlbmd0aD8/MCk+MCksaGU9YigoKT0+by5vdmVydmlldyE9PW51bGwmJm8ub3ZlcnZpZXcuZmVhdHVyZXMuZmFpbG92ZXI9PT0hMSksWT1iKCgpPT5GKHtsb2FkaW5nOiFvLmxhc3RVcGRhdGVkLGhhc0RhdGE6by5vdmVydmlldyE9PW51bGwsZXJyb3I6by5lcnJvcn0pKSxYPWIoKCk9PlkudmFsdWU9PT1gcmVhZHlgP0oudmFsdWU/YHJlYWR5YDpgZW1wdHlgOlkudmFsdWUpLFo9YigoKT0+by5vdmVydmlldz8uZmVhdHVyZXMubGF0ZW5jeVN0YXRzPz8hMSksd2U9YigoKT0+RC52YWx1ZSE9PWBgJiZaLnZhbHVlKSxUZT1iKCgpPT5TLnByb3ZpZGVyUGVyZkJ1Y2tldHMubWFwKGU9PkwoZSxTLnByb3ZpZGVyUGVyZldpbmRvd1VzZWQpKSksRWU9YigoKT0+W3tsYWJlbDpgcDUwYCxkYXRhOlMucHJvdmlkZXJQZXJmUG9pbnRzLm1hcChlPT5lLnA1ME1zPz9OYU4pLGNvbG9yOmAtLWNoYXJ0LXJlcXVlc3RzYH0se2xhYmVsOmBwOTVgLGRhdGE6Uy5wcm92aWRlclBlcmZQb2ludHMubWFwKGU9PmUucDk1TXM/P05hTiksY29sb3I6YC0tY2hhcnQtdG9rZW5zLWluYH1dKSxEZT1iKCgpPT5be2xhYmVsOmBmYWlsdXJlc2AsZGF0YTpTLnByb3ZpZGVyUGVyZlBvaW50cy5tYXAoZT0+ZS5mYWlsdXJlcyksY29sb3I6YC0tZGVzdHJ1Y3RpdmVgfV0pO2UoKCk9PltELnZhbHVlLGgucmFuZ2VdLChbZV0pPT52b2lkIFMuZmV0Y2hQcm92aWRlclBlcmYoZSkse2ltbWVkaWF0ZTohMH0pO2xldCBPZT1iKCgpPT5oLndpbmRvdz09PWBtb250aGApLCQ9YigoKT0+WS52YWx1ZT09PWByZWFkeWA/Rih7bG9hZGluZzpTLmxvYWRpbmcsaGFzRGF0YTpTLmJ1Y2tldHMubGVuZ3RoPjAsZXJyb3I6Uy5lcnJvcn0pOlkudmFsdWUpLGtlPWIoKCk9PkYoe2xvYWRpbmc6Uy5wcm92aWRlclBlcmZMb2FkaW5nLGhhc0RhdGE6Uy5wcm92aWRlclBlcmZQb2ludHMubGVuZ3RoPjAsZXJyb3I6Uy5wcm92aWRlclBlcmZFcnJvcn0pKTtyZXR1cm4gZSgoKT0+W2gucmFuZ2Usby5vdmVydmlldz8ucHJvdmlkZXJzLmxlbmd0aD8/MF0sKCk9PnZvaWQgUy5mZXRjaCgpKSxlKCgpPT5bZC5raW5kRmlsdGVyLGQudXNlckZpbHRlcl0sKFtlLHRdKT0+e2cuZ29UbyhgcmVsaWFiaWxpdHlgLHsuLi5nLnBhcmFtcyxraW5kOmUsdXNlcjp0fSl9KSxlKCgpPT5bZy5wYXJhbXMua2luZCxnLnBhcmFtcy51c2VyXSwoW2UsdF0pPT57ZC5zZXRLaW5kRmlsdGVyKGU/P2BgKSxkLnNldFVzZXJGaWx0ZXIodD8/YGApfSx7aW1tZWRpYXRlOiEwfSksdSgoKT0+dm9pZCBTLmZldGNoKCkpLChlLGEpPT4odygpLHAoYGRpdmAsX2UsW3kodihsKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYodCkse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0zIHNtOmZsZXgtcm93IHNtOml0ZW1zLWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW5gfSx7ZGVmYXVsdDpyKCgpPT5bZihgZGl2YCxudWxsLFt5KHYocyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxXXx8PVt4KGBSZWxpYWJpbGl0eWAsLTEpXV0pLF86MX0pLHkodihrKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzJdfHw9W3goYFByb3ZpZGVyIGVycm9yIHJhdGUsIGZhaWxvdmVycywgdGltZW91dHMsIHJhdGUtbGltaXQgcmVqZWN0aW9ucywgYW5kIDQwMiByZWZ1c2Fscy5gLC0xKV1dKSxfOjF9KV0pLGYoYGRpdmAsdmUsW2FbNF18fD1mKGBsYWJlbGAse2lkOmByZWxpYWJpbGl0eS1wcm92aWRlci1sYWJlbGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFByb3ZpZGVyYCwtMSkseSh2KGllKSx7Im1vZGVsLXZhbHVlIjplZS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6SX0se2RlZmF1bHQ6cigoKT0+W3kodihhZSkseyJhcmlhLWxhYmVsbGVkYnkiOmByZWxpYWJpbGl0eS1wcm92aWRlci1sYWJlbGAsY2xhc3M6YHctNDhgfSx7ZGVmYXVsdDpyKCgpPT5beSh2KHJlKSx7cGxhY2Vob2xkZXI6YEFsbCBwcm92aWRlcnNgfSldKSxfOjF9KSx5KHYodGUpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihNKSx7dmFsdWU6UX0se2RlZmF1bHQ6cigoKT0+Wy4uLmFbM118fD1beChgQWxsIHByb3ZpZGVyc2AsLTEpXV0pLF86MX0pLCh3KCEwKSxwKGksbnVsbCxtKHYobykub3ZlcnZpZXc/LnByb3ZpZGVycz8/W10sZT0+KHcoKSxUKHYoTSkse2tleTplLm5hbWUsdmFsdWU6ZS5uYW1lfSx7ZGVmYXVsdDpyKCgpPT5beChjKGUubmFtZSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pXSksXzoxfSkseSh2KE8pLG51bGwse2RlZmF1bHQ6cigoKT0+W1kudmFsdWU9PT1gc2tlbGV0b25gPyh3KCksVChWLHtrZXk6MCxyb3dzOjJ9KSk6WS52YWx1ZT09PWBlcnJvcmA/KHcoKSxUKFAse2tleToxLG1lc3NhZ2U6dihvKS5lcnJvciwib24tcmV0cnkiOnYobykucmVmcmVzaH0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTp2KFMpLmVycm9yPyh3KCkscChgcGAseWUsYyh2KFMpLmVycm9yKSwxKSk6Si52YWx1ZT9FKGBgLCEwKToodygpLHAoYHBgLGJlLGBObyBwcm92aWRlcnMgY29uZmlndXJlZC5gKSldKSxfOjF9KV0pLF86MX0pLE9lLnZhbHVlPyh3KCksVCh2KEEpLHtrZXk6MCx2YXJpYW50OmB3YXJuYH0se2RlZmF1bHQ6cigoKT0+W3kodihqKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt4KGAgUmVsaWFiaWxpdHkgZGF0YSBoYXMgbm8gbW9udGhseSByZXRlbnRpb24g4oCUIGV2ZXJ5IGNoYXJ0IGJlbG93IHNob3dzIHRoZSBtb3N0IHJlY2VudCAzMCBkYXlzLCBub3QgdGhlIGZ1bGwgYCtjKHYoaCkucmFuZ2UpK2AgcmFuZ2Ugc2VsZWN0ZWQgYWJvdmUuIGAsMSldKSxfOjF9KV0pLF86MX0pKTpFKGBgLCEwKSxYLnZhbHVlPT09YHNrZWxldG9uYD8odygpLHAoaSx7a2V5OjF9LFt5KHYobCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzVdfHw9W3goYEVycm9yIHJhdGUgYnkgcHJvdmlkZXJgLC0xKV1dKSxfOjF9KV0pLF86MX0pLHkodihPKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KEgpXSksXzoxfSldKSxfOjF9KSx5KHYobCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzZdfHw9W3goYFNlbGVjdGVkIHByb3ZpZGVyIHBlcmZvcm1hbmNlYCwtMSldXSksXzoxfSldKSxfOjF9KSx5KHYoTyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beShIKV0pLF86MX0pXSksXzoxfSkseSh2KGwpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodih0KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYocyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVs3XXx8PVt4KGBUaW1lb3V0cyBieSBwcm92aWRlcmAsLTEpXV0pLF86MX0pXSksXzoxfSkseSh2KE8pLG51bGwse2RlZmF1bHQ6cigoKT0+W3koSCldKSxfOjF9KV0pLF86MX0pLHkodihsKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYodCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHMpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbOF18fD1beChgRmFpbG92ZXJzIGJ5IHByb3ZpZGVyYCwtMSldXSksXzoxfSldKSxfOjF9KSx5KHYoTyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beShIKV0pLF86MX0pXSksXzoxfSldLDY0KSk6WC52YWx1ZT09PWBlbXB0eWA/KHcoKSxUKHYobCkse2tleToyfSx7ZGVmYXVsdDpyKCgpPT5beSh2KE8pLG51bGwse2RlZmF1bHQ6cigoKT0+W3kob2Use3RpdGxlOmBObyBwcm92aWRlcnMgY29uZmlndXJlZC5gLGRlc2NyaXB0aW9uOmBBZGQgYSBwcm92aWRlcnMgZW50cnkgdG8gdGhlIG1pZGRsZXdhcmUgY29uZmlnIHRvIHNlZSBwZXItcHJvdmlkZXIgcmVsaWFiaWxpdHkgY2hhcnRzIGhlcmUuYH0pXSksXzoxfSldKSxfOjF9KSk6WC52YWx1ZT09PWByZWFkeWA/KHcoKSxwKGkse2tleTozfSxbeSh2KGwpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodih0KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYocyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVs5XXx8PVt4KGBFcnJvciByYXRlIGJ5IHByb3ZpZGVyYCwtMSldXSksXzoxfSkseSh2KGspLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMTBdfHw9W3goYEZhaWxlZCBhdHRlbXB0cyAvIHRvdGFsIGF0dGVtcHRzIHBlciBidWNrZXQuIEEgZ2FwIG1lYW5zIG5vIGF0dGVtcHRzIGluIHRoYXQgYnVja2V0LmAsLTEpXV0pLF86MX0pXSksXzoxfSkseSh2KE8pLG51bGwse2RlZmF1bHQ6cigoKT0+WyQudmFsdWU9PT1gc2tlbGV0b25gPyh3KCksVChILHtrZXk6MH0pKTokLnZhbHVlPT09YGVycm9yYD8odygpLFQoUCx7a2V5OjEsbWVzc2FnZTp2KFMpLmVycm9yLCJvbi1yZXRyeSI6dihTKS5mZXRjaH0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKToodygpLFQoVSx7a2V5OjIsbGFiZWxzOnEudmFsdWUsZGF0YXNldHM6Y2UudmFsdWUsInZhbHVlLWZvcm1hdHRlciI6bWUsYXJpYUxhYmVsOmBFcnJvciByYXRlIGJ5IHByb3ZpZGVyIG92ZXIgdGltZWB9LG51bGwsOCxbYGxhYmVsc2AsYGRhdGFzZXRzYF0pKV0pLF86MX0pXSksXzoxfSkseSh2KGwpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodih0KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYocyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxMV18fD1beChgU2VsZWN0ZWQgcHJvdmlkZXIgcGVyZm9ybWFuY2VgLC0xKV1dKSxfOjF9KSx5KHYoayksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxMl18fD1beChgTGF0ZW5jeSAocDUwL3A5NSkgYW5kIGZhaWx1cmVzIHBlciBidWNrZXQgZm9yIG9uZSBwcm92aWRlci5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLHkodihPKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSx7ZGVmYXVsdDpyKCgpPT5bRC52YWx1ZT09PWBgPyh3KCkscChgcGAseGUsYCBTZWxlY3QgYSBwcm92aWRlciBhYm92ZSB0byBzZWUgaXRzIGxhdGVuY3kgYW5kIGZhaWx1cmUgYnJlYWtkb3duIHBlciBidWNrZXQuIGApKTpaLnZhbHVlP3dlLnZhbHVlPyh3KCkscChpLHtrZXk6Mn0sW2tlLnZhbHVlPT09YHNrZWxldG9uYD8odygpLFQoSCx7a2V5OjB9KSk6a2UudmFsdWU9PT1gZXJyb3JgPyh3KCksVChQLHtrZXk6MSxtZXNzYWdlOnYoUykucHJvdmlkZXJQZXJmRXJyb3IsIm9uLXJldHJ5IjooKT0+dihTKS5mZXRjaFByb3ZpZGVyUGVyZihELnZhbHVlKX0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKToodygpLHAoYGRpdmAsU2UsW2YoYGRpdmAsbnVsbCxbYVsxN118fD1mKGBwYCx7Y2xhc3M6YG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGF0ZW5jeSAobXMpYCwtMSkseShVLHtsYWJlbHM6VGUudmFsdWUsZGF0YXNldHM6RWUudmFsdWUsYXJpYUxhYmVsOmBwNTAvcDk1IGxhdGVuY3kgZm9yICR7RC52YWx1ZX0gb3ZlciB0aW1lYH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgLGBhcmlhTGFiZWxgXSldKSxmKGBkaXZgLG51bGwsW2FbMThdfHw9ZihgcGAse2NsYXNzOmBtYi0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYEZhaWx1cmVzYCwtMSkseShVLHtsYWJlbHM6VGUudmFsdWUsZGF0YXNldHM6RGUudmFsdWUsYXJpYUxhYmVsOmBGYWlsdXJlcyBmb3IgJHtELnZhbHVlfSBvdmVyIHRpbWVgfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2AsYGFyaWFMYWJlbGBdKV0pXSkpXSw2NCkpOkUoYGAsITApOih3KCksVCh2KEEpLHtrZXk6MSx2YXJpYW50OmB3YXJuYH0se2RlZmF1bHQ6cigoKT0+W3kodihuZSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxM118fD1beChgTGF0ZW5jeSBzdGF0aXN0aWNzIGFyZSBvZmZgLC0xKV1dKSxfOjF9KSx5KHYoaikse2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSx7ZGVmYXVsdDpyKCgpPT5bZihgc3BhbmAsbnVsbCxbYVsxNF18fD14KGBFbmFibGUgYCwtMSksYVsxNV18fD1mKGBjb2RlYCx7Y2xhc3M6YGZvbnQtbW9ubyB0ZXh0LXhzYH0sYGFkbWluLnN0YXRzLmxhdGVuY3lgLC0xKSx4KGAgaW4gdGhlIG1pZGRsZXdhcmUgY29uZmlnIHRvIHNlZSBwZXItYnVja2V0IGxhdGVuY3kgZm9yIGArYyhELnZhbHVlKStgLmAsMSldKSx5KHYobikse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLG9uQ2xpY2s6YVswXXx8PWU9PnYoZykuZ29UbyhgY29uZmlnYCl9LHtkZWZhdWx0OnIoKCk9PlsuLi5hWzE2XXx8PVt4KGBPcGVuIENvbmZpZ2AsLTEpXV0pLF86MX0pXSksXzoxfSldKSxfOjF9KSldKSxfOjF9KV0pLF86MX0pLHkodihsKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYodCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHMpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMTldfHw9W3goYFRpbWVvdXRzIGJ5IHByb3ZpZGVyYCwtMSldXSksXzoxfSldKSxfOjF9KSx5KHYoTyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bJC52YWx1ZT09PWBza2VsZXRvbmA/KHcoKSxUKEgse2tleTowfSkpOiQudmFsdWU9PT1gZXJyb3JgPyh3KCksVChQLHtrZXk6MSxtZXNzYWdlOnYoUykuZXJyb3IsIm9uLXJldHJ5Ijp2KFMpLmZldGNofSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOih3KCksVChVLHtrZXk6MixsYWJlbHM6cS52YWx1ZSxkYXRhc2V0czpHLnZhbHVlLGFyaWFMYWJlbDpgVGltZW91dHMgYnkgcHJvdmlkZXIgb3ZlciB0aW1lYH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgXSkpXSksXzoxfSldKSxfOjF9KSx5KHYobCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzIwXXx8PVt4KGBGYWlsb3ZlcnMgYnkgcHJvdmlkZXJgLC0xKV1dKSxfOjF9KSxoZS52YWx1ZT8odygpLFQodihrKSx7a2V5OjB9LHtkZWZhdWx0OnIoKCk9PlsuLi5hWzIxXXx8PVt4KGBUaGlzIGRlcGxveW1lbnQgaGFzIG5vIGZhaWxvdmVyIGNoYWlucyBjb25maWd1cmVkLmAsLTEpXV0pLF86MX0pKTpFKGBgLCEwKV0pLF86MX0pLHkodihPKSxudWxsLHtkZWZhdWx0OnIoKCk9PlskLnZhbHVlPT09YHNrZWxldG9uYD8odygpLFQoSCx7a2V5OjB9KSk6JC52YWx1ZT09PWBlcnJvcmA/KHcoKSxUKFAse2tleToxLG1lc3NhZ2U6dihTKS5lcnJvciwib24tcmV0cnkiOnYoUykuZmV0Y2h9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKSk6KHcoKSxUKFUse2tleToyLGxhYmVsczpxLnZhbHVlLGRhdGFzZXRzOksudmFsdWUsYXJpYUxhYmVsOmBGYWlsb3ZlcnMgYnkgcHJvdmlkZXIgb3ZlciB0aW1lYH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgXSkpXSksXzoxfSldKSxfOjF9KV0sNjQpKTpFKGBgLCEwKSxmKGBkaXZgLENlLFt5KHYobCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3kodihzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzIyXXx8PVt4KGBSYXRlLWxpbWl0IHJlamVjdGlvbnMgKDQyOSlgLC0xKV1dKSxfOjF9KSx5KHYoayksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsyM118fD1beChgRmxlZXQtd2lkZSwgZXZlcnkgc2NvcGUgY29tYmluZWQuYCwtMSldXSksXzoxfSldKSxfOjF9KSx5KHYoTyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bJC52YWx1ZT09PWBza2VsZXRvbmA/KHcoKSxUKEgse2tleTowfSkpOiQudmFsdWU9PT1gZXJyb3JgPyh3KCksVChQLHtrZXk6MSxtZXNzYWdlOnYoUykuZXJyb3IsIm9uLXJldHJ5Ijp2KFMpLmZldGNofSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOih3KCksVChVLHtrZXk6MixsYWJlbHM6cS52YWx1ZSxkYXRhc2V0czpsZS52YWx1ZSxhcmlhTGFiZWw6YFJhdGUtbGltaXQgcmVqZWN0aW9ucyBvdmVyIHRpbWUsIGZsZWV0LXdpZGVgfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2BdKSldKSxfOjF9KV0pLF86MX0pLHkodihsKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KHYodCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5beSh2KHMpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMjRdfHw9W3goYFVucHJpY2VkIHJlZnVzYWxzICg0MDIpYCwtMSldXSksXzoxfSkseSh2KGspLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMjVdfHw9W3goYEZsZWV0LXdpZGUgcmVxdWVzdHMgcmVmdXNlZCBmb3IgaGF2aW5nIG5vIHJlc29sdmFibGUgcHJpY2UuYCwtMSldXSksXzoxfSldKSxfOjF9KSx5KHYoTyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bJC52YWx1ZT09PWBza2VsZXRvbmA/KHcoKSxUKEgse2tleTowfSkpOiQudmFsdWU9PT1gZXJyb3JgPyh3KCksVChQLHtrZXk6MSxtZXNzYWdlOnYoUykuZXJyb3IsIm9uLXJldHJ5Ijp2KFMpLmZldGNofSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOih3KCksVChVLHtrZXk6MixsYWJlbHM6cS52YWx1ZSxkYXRhc2V0czp1ZS52YWx1ZSxhcmlhTGFiZWw6YFVucHJpY2VkIHJlZnVzYWxzICg0MDIpIG92ZXIgdGltZSwgZmxlZXQtd2lkZWB9LG51bGwsOCxbYGxhYmVsc2AsYGRhdGFzZXRzYF0pKV0pLF86MX0pXSksXzoxfSldKSx5KGdlKV0pKX19KTtleHBvcnR7d2UgYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"Skeleton-B0ziB6Od.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"ZnVuY3Rpb24gZShlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgbiBvZiBlLnNwbGl0KGAsYCkpdFtuXT0xO3JldHVybiBlPT5lIGluIHR9dmFyIHQ9e30sbj1bXSxyPSgpPT57fSxpPSgpPT4hMSxhPWU9PmUuY2hhckNvZGVBdCgwKT09PTExMSYmZS5jaGFyQ29kZUF0KDEpPT09MTEwJiYoZS5jaGFyQ29kZUF0KDIpPjEyMnx8ZS5jaGFyQ29kZUF0KDIpPDk3KSxvPWU9PmUuc3RhcnRzV2l0aChgb25VcGRhdGU6YCkscz1PYmplY3QuYXNzaWduLGM9KGUsdCk9PntsZXQgbj1lLmluZGV4T2YodCk7bj4tMSYmZS5zcGxpY2UobiwxKX0sbD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHU9KGUsdCk9PmwuY2FsbChlLHQpLGQ9QXJyYXkuaXNBcnJheSxmPWU9PlMoZSk9PT1gW29iamVjdCBNYXBdYCxwPWU9PlMoZSk9PT1gW29iamVjdCBTZXRdYCxtPWU9PlMoZSk9PT1gW29iamVjdCBEYXRlXWAsaD1lPT5TKGUpPT09YFtvYmplY3QgUmVnRXhwXWAsZz1lPT50eXBlb2YgZT09YGZ1bmN0aW9uYCxfPWU9PnR5cGVvZiBlPT1gc3RyaW5nYCx2PWU9PnR5cGVvZiBlPT1gc3ltYm9sYCx5PWU9PnR5cGVvZiBlPT1gb2JqZWN0YCYmISFlLGI9ZT0+KHkoZSl8fGcoZSkpJiZnKGUudGhlbikmJmcoZS5jYXRjaCkseD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFM9ZT0+eC5jYWxsKGUpLEM9ZT0+UyhlKS5zbGljZSg4LC0xKSx3PWU9PlMoZSk9PT1gW29iamVjdCBPYmplY3RdYCxUPWU9Pl8oZSkmJmUhPT1gTmFOYCYmZVswXSE9PWAtYCYmYGArcGFyc2VJbnQoZSwxMCk9PT1lLEU9ZShgLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LG9uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCxvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLG9uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWRgKSxEPWU9PntsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybihuPT50W25dfHwodFtuXT1lKG4pKSl9LGVlPS8tXHcvZyxPPUQoZT0+ZS5yZXBsYWNlKGVlLGU9PmUuc2xpY2UoMSkudG9VcHBlckNhc2UoKSkpLHRlPS9cQihbQS1aXSkvZyxrPUQoZT0+ZS5yZXBsYWNlKHRlLGAtJDFgKS50b0xvd2VyQ2FzZSgpKSxBPUQoZT0+ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKSxuZT1EKGU9PmU/YG9uJHtBKGUpfWA6YGApLGo9KGUsdCk9PiFPYmplY3QuaXMoZSx0KSxNPShlLC4uLnQpPT57Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSguLi50KX0sTj0oZSx0LG4scj0hMSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTpyLHZhbHVlOm59KX0scmU9ZT0+e2xldCB0PXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHQpP2U6dH0saWU9ZT0+e2xldCB0PV8oZSk/TnVtYmVyKGUpOk5hTjtyZXR1cm4gaXNOYU4odCk/ZTp0fSxhZSxvZT0oKT0+YWV8fD10eXBlb2YgZ2xvYmFsVGhpczxgdWA/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjxgdWA/c2VsZjp0eXBlb2Ygd2luZG93PGB1YD93aW5kb3c6dHlwZW9mIGdsb2JhbDxgdWA/Z2xvYmFsOnt9LFA9ZShgSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTixwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCxNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsQmlnSW50LGNvbnNvbGUsRXJyb3IsU3ltYm9sYCk7ZnVuY3Rpb24gRihlKXtpZihkKGUpKXtsZXQgdD17fTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHI9ZVtuXSxpPV8ocik/bGUocik6RihyKTtpZihpKWZvcihsZXQgZSBpbiBpKXRbZV09aVtlXX1yZXR1cm4gdH1pZihfKGUpfHx5KGUpKXJldHVybiBlfXZhciBzZT0vOyg/IVteKF0qXCkpL2csY2U9LzooW15dKykvLEk9L1wvXCpbXl0qP1wqXC8vZztmdW5jdGlvbiBsZShlKXtsZXQgdD17fTtyZXR1cm4gZS5yZXBsYWNlKEksYGApLnNwbGl0KHNlKS5mb3JFYWNoKGU9PntpZihlKXtsZXQgbj1lLnNwbGl0KGNlKTtuLmxlbmd0aD4xJiYodFtuWzBdLnRyaW0oKV09blsxXS50cmltKCkpfX0pLHR9ZnVuY3Rpb24gTChlKXtsZXQgdD1gYDtpZihfKGUpKXQ9ZTtlbHNlIGlmKGQoZSkpZm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2xldCByPUwoZVtuXSk7ciYmKHQrPXIrYCBgKX1lbHNlIGlmKHkoZSkpZm9yKGxldCBuIGluIGUpZVtuXSYmKHQrPW4rYCBgKTtyZXR1cm4gdC50cmltKCl9ZnVuY3Rpb24gdWUoZSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0e2NsYXNzOnQsc3R5bGU6bn09ZTtyZXR1cm4gdCYmIV8odCkmJihlLmNsYXNzPUwodCkpLG4mJihlLnN0eWxlPUYobikpLGV9dmFyIGRlPWBpdGVtc2NvcGUsYWxsb3dmdWxsc2NyZWVuLGZvcm1ub3ZhbGlkYXRlLGlzbWFwLG5vbW9kdWxlLG5vdmFsaWRhdGUscmVhZG9ubHlgLGZlPWUoZGUpO2RlK2BgO2Z1bmN0aW9uIHBlKGUpe3JldHVybiEhZXx8ZT09PWBgfWZ1bmN0aW9uIG1lKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtsZXQgbj0hMDtmb3IobGV0IHI9MDtuJiZyPGUubGVuZ3RoO3IrKyluPWhlKGVbcl0sdFtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gaGUoZSx0KXtpZihlPT09dClyZXR1cm4hMDtsZXQgbj1tKGUpLHI9bSh0KTtpZihufHxyKXJldHVybiBuJiZyP2UuZ2V0VGltZSgpPT09dC5nZXRUaW1lKCk6ITE7aWYobj12KGUpLHI9dih0KSxufHxyKXJldHVybiBlPT09dDtpZihuPWQoZSkscj1kKHQpLG58fHIpcmV0dXJuIG4mJnI/bWUoZSx0KTohMTtpZihuPXkoZSkscj15KHQpLG58fHIpe2lmKCFufHwhcnx8T2JqZWN0LmtleXMoZSkubGVuZ3RoIT09T2JqZWN0LmtleXModCkubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbiBpbiBlKXtsZXQgcj1lLmhhc093blByb3BlcnR5KG4pLGk9dC5oYXNPd25Qcm9wZXJ0eShuKTtpZihyJiYhaXx8IXImJml8fCFoZShlW25dLHRbbl0pKXJldHVybiExfX1yZXR1cm4gU3RyaW5nKGUpPT09U3RyaW5nKHQpfWZ1bmN0aW9uIGdlKGUsdCl7cmV0dXJuIGUuZmluZEluZGV4KGU9PmhlKGUsdCkpfXZhciBfZT1lPT4hIShlJiZlLl9fdl9pc1JlZj09PSEwKSx2ZT1lPT5fKGUpP2U6ZT09bnVsbD9gYDpkKGUpfHx5KGUpJiYoZS50b1N0cmluZz09PXh8fCFnKGUudG9TdHJpbmcpKT9fZShlKT92ZShlLnZhbHVlKTpKU09OLnN0cmluZ2lmeShlLHllLDIpOlN0cmluZyhlKSx5ZT0oZSx0KT0+X2UodCk/eWUoZSx0LnZhbHVlKTpmKHQpP3tbYE1hcCgke3Quc2l6ZX0pYF06Wy4uLnQuZW50cmllcygpXS5yZWR1Y2UoKGUsW3Qsbl0scik9PihlW2JlKHQscikrYCA9PmBdPW4sZSkse30pfTpwKHQpP3tbYFNldCgke3Quc2l6ZX0pYF06Wy4uLnQudmFsdWVzKCldLm1hcChlPT5iZShlKSl9OnYodCk/YmUodCk6eSh0KSYmIWQodCkmJiF3KHQpP1N0cmluZyh0KTp0LGJlPShlLHQ9YGApPT52KGUpP2BTeW1ib2woJHtlLmRlc2NyaXB0aW9uPz90fSlgOmU7ZnVuY3Rpb24geGUoZSl7cmV0dXJuIGU9PW51bGw/YGluaXRpYWxgOnR5cGVvZiBlPT1gc3RyaW5nYD9lPT09YGA/YCBgOmU6U3RyaW5nKGUpfXZhciBSLFNlPWNsYXNze2NvbnN0cnVjdG9yKGU9ITEpe3RoaXMuZGV0YWNoZWQ9ZSx0aGlzLl9hY3RpdmU9ITAsdGhpcy5fb249MCx0aGlzLmVmZmVjdHM9W10sdGhpcy5jbGVhbnVwcz1bXSx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl93YXJuT25SdW49ITAsdGhpcy5fX3Zfc2tpcD0hMCwhZSYmUiYmKFIuYWN0aXZlPyh0aGlzLnBhcmVudD1SLHRoaXMuaW5kZXg9KFIuc2NvcGVzfHwoUi5zY29wZXM9W10pKS5wdXNoKHRoaXMpLTEpOih0aGlzLl9hY3RpdmU9ITEsdGhpcy5fd2Fybk9uUnVuPSExKSl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmV9cGF1c2UoKXtpZih0aGlzLl9hY3RpdmUpe3RoaXMuX2lzUGF1c2VkPSEwO2xldCBlLHQ7aWYodGhpcy5zY29wZXMpe2xldCBuPXRoaXMuc2NvcGVzLnNsaWNlKCk7Zm9yKGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspbltlXS5wYXVzZSgpfWZvcihlPTAsdD10aGlzLmVmZmVjdHMubGVuZ3RoO2U8dDtlKyspdGhpcy5lZmZlY3RzW2VdLnBhdXNlKCl9fXJlc3VtZSgpe2lmKHRoaXMuX2FjdGl2ZSYmdGhpcy5faXNQYXVzZWQpe3RoaXMuX2lzUGF1c2VkPSExO2xldCBlLHQ7aWYodGhpcy5zY29wZXMpe2xldCBuPXRoaXMuc2NvcGVzLnNsaWNlKCk7Zm9yKGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspbltlXS5yZXN1bWUoKX1sZXQgbj10aGlzLmVmZmVjdHMuc2xpY2UoKTtmb3IoZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyluW2VdLnJlc3VtZSgpfX1ydW4oZSl7aWYodGhpcy5fYWN0aXZlKXtsZXQgdD1SO3RyeXtyZXR1cm4gUj10aGlzLGUoKX1maW5hbGx5e1I9dH19fW9uKCl7Kyt0aGlzLl9vbj09PTEmJih0aGlzLnByZXZTY29wZT1SLFI9dGhpcyl9b2ZmKCl7aWYodGhpcy5fb24+MCYmLS10aGlzLl9vbj09PTApe2lmKFI9PT10aGlzKVI9dGhpcy5wcmV2U2NvcGU7ZWxzZXtsZXQgZT1SO2Zvcig7ZTspe2lmKGUucHJldlNjb3BlPT09dGhpcyl7ZS5wcmV2U2NvcGU9dGhpcy5wcmV2U2NvcGU7YnJlYWt9ZT1lLnByZXZTY29wZX19dGhpcy5wcmV2U2NvcGU9dm9pZCAwfX1zdG9wKGUpe2lmKHRoaXMuX2FjdGl2ZSl7dGhpcy5fYWN0aXZlPSExO2xldCB0LG47Zm9yKHQ9MCxuPXRoaXMuZWZmZWN0cy5sZW5ndGg7dDxuO3QrKyl0aGlzLmVmZmVjdHNbdF0uc3RvcCgpO2Zvcih0aGlzLmVmZmVjdHMubGVuZ3RoPTAsdD0wLG49dGhpcy5jbGVhbnVwcy5sZW5ndGg7dDxuO3QrKyl0aGlzLmNsZWFudXBzW3RdKCk7aWYodGhpcy5jbGVhbnVwcy5sZW5ndGg9MCx0aGlzLnNjb3Blcyl7bGV0IGU9dGhpcy5zY29wZXMuc2xpY2UoKTtmb3IodD0wLG49ZS5sZW5ndGg7dDxuO3QrKyllW3RdLnN0b3AoITApO3RoaXMuc2NvcGVzLmxlbmd0aD0wfWlmKCF0aGlzLmRldGFjaGVkJiZ0aGlzLnBhcmVudCYmIWUpe2xldCBlPXRoaXMucGFyZW50LnNjb3Blcy5wb3AoKTtlJiZlIT09dGhpcyYmKHRoaXMucGFyZW50LnNjb3Blc1t0aGlzLmluZGV4XT1lLGUuaW5kZXg9dGhpcy5pbmRleCl9dGhpcy5wYXJlbnQ9dm9pZCAwfX19O2Z1bmN0aW9uIENlKGUpe3JldHVybiBuZXcgU2UoZSl9ZnVuY3Rpb24gd2UoKXtyZXR1cm4gUn1mdW5jdGlvbiBUZShlLHQ9ITEpe1ImJlIuY2xlYW51cHMucHVzaChlKX12YXIgeixFZT1uZXcgV2Vha1NldCxEZT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZuPWUsdGhpcy5kZXBzPXZvaWQgMCx0aGlzLmRlcHNUYWlsPXZvaWQgMCx0aGlzLmZsYWdzPTUsdGhpcy5uZXh0PXZvaWQgMCx0aGlzLmNsZWFudXA9dm9pZCAwLHRoaXMuc2NoZWR1bGVyPXZvaWQgMCxSJiYoUi5hY3RpdmU/Ui5lZmZlY3RzLnB1c2godGhpcyk6dGhpcy5mbGFncyY9LTIpfXBhdXNlKCl7dGhpcy5mbGFnc3w9NjR9cmVzdW1lKCl7dGhpcy5mbGFncyY2NCYmKHRoaXMuZmxhZ3MmPS02NSxFZS5oYXModGhpcykmJihFZS5kZWxldGUodGhpcyksdGhpcy50cmlnZ2VyKCkpKX1ub3RpZnkoKXt0aGlzLmZsYWdzJjImJiEodGhpcy5mbGFncyYzMil8fHRoaXMuZmxhZ3MmOHx8amUodGhpcyl9cnVuKCl7aWYoISh0aGlzLmZsYWdzJjEpKXJldHVybiB0aGlzLmZuKCk7dGhpcy5mbGFnc3w9MixLZSh0aGlzKSxQZSh0aGlzKTtsZXQgZT16LHQ9SGU7ej10aGlzLEhlPSEwO3RyeXtyZXR1cm4gdGhpcy5mbigpfWZpbmFsbHl7RmUodGhpcyksej1lLEhlPXQsdGhpcy5mbGFncyY9LTN9fXN0b3AoKXtpZih0aGlzLmZsYWdzJjEpe2ZvcihsZXQgZT10aGlzLmRlcHM7ZTtlPWUubmV4dERlcClSZShlKTt0aGlzLmRlcHM9dGhpcy5kZXBzVGFpbD12b2lkIDAsS2UodGhpcyksdGhpcy5vblN0b3AmJnRoaXMub25TdG9wKCksdGhpcy5mbGFncyY9LTJ9fXRyaWdnZXIoKXt0aGlzLmZsYWdzJjY0P0VlLmFkZCh0aGlzKTp0aGlzLnNjaGVkdWxlcj90aGlzLnNjaGVkdWxlcigpOnRoaXMucnVuSWZEaXJ0eSgpfXJ1bklmRGlydHkoKXtJZSh0aGlzKSYmdGhpcy5ydW4oKX1nZXQgZGlydHkoKXtyZXR1cm4gSWUodGhpcyl9fSxPZT0wLGtlLEFlO2Z1bmN0aW9uIGplKGUsdD0hMSl7aWYoZS5mbGFnc3w9OCx0KXtlLm5leHQ9QWUsQWU9ZTtyZXR1cm59ZS5uZXh0PWtlLGtlPWV9ZnVuY3Rpb24gTWUoKXtPZSsrfWZ1bmN0aW9uIE5lKCl7aWYoLS1PZT4wKXJldHVybjtpZihBZSl7bGV0IGU9QWU7Zm9yKEFlPXZvaWQgMDtlOyl7bGV0IHQ9ZS5uZXh0O2UubmV4dD12b2lkIDAsZS5mbGFncyY9LTksZT10fX1sZXQgZTtmb3IoO2tlOyl7bGV0IHQ9a2U7Zm9yKGtlPXZvaWQgMDt0Oyl7bGV0IG49dC5uZXh0O2lmKHQubmV4dD12b2lkIDAsdC5mbGFncyY9LTksdC5mbGFncyYxKXRyeXt0LnRyaWdnZXIoKX1jYXRjaCh0KXtlfHw9dH10PW59fWlmKGUpdGhyb3cgZX1mdW5jdGlvbiBQZShlKXtmb3IobGV0IHQ9ZS5kZXBzO3Q7dD10Lm5leHREZXApdC52ZXJzaW9uPS0xLHQucHJldkFjdGl2ZUxpbms9dC5kZXAuYWN0aXZlTGluayx0LmRlcC5hY3RpdmVMaW5rPXR9ZnVuY3Rpb24gRmUoZSl7bGV0IHQsbj1lLmRlcHNUYWlsLHI9bjtmb3IoO3I7KXtsZXQgZT1yLnByZXZEZXA7ci52ZXJzaW9uPT09LTE/KHI9PT1uJiYobj1lKSxSZShyKSx6ZShyKSk6dD1yLHIuZGVwLmFjdGl2ZUxpbms9ci5wcmV2QWN0aXZlTGluayxyLnByZXZBY3RpdmVMaW5rPXZvaWQgMCxyPWV9ZS5kZXBzPXQsZS5kZXBzVGFpbD1ufWZ1bmN0aW9uIEllKGUpe2ZvcihsZXQgdD1lLmRlcHM7dDt0PXQubmV4dERlcClpZih0LmRlcC52ZXJzaW9uIT09dC52ZXJzaW9ufHx0LmRlcC5jb21wdXRlZCYmKExlKHQuZGVwLmNvbXB1dGVkKXx8dC5kZXAudmVyc2lvbiE9PXQudmVyc2lvbikpcmV0dXJuITA7cmV0dXJuISFlLl9kaXJ0eX1mdW5jdGlvbiBMZShlKXtpZihlLmZsYWdzJjQmJiEoZS5mbGFncyYxNil8fChlLmZsYWdzJj0tMTcsZS5nbG9iYWxWZXJzaW9uPT09cWUpfHwoZS5nbG9iYWxWZXJzaW9uPXFlLCFlLmlzU1NSJiZlLmZsYWdzJjEyOCYmKCFlLmRlcHMmJiFlLl9kaXJ0eXx8IUllKGUpKSkpcmV0dXJuO2UuZmxhZ3N8PTI7bGV0IHQ9ZS5kZXAsbj16LHI9SGU7ej1lLEhlPSEwO3RyeXtQZShlKTtsZXQgbj1lLmZuKGUuX3ZhbHVlKTsodC52ZXJzaW9uPT09MHx8aihuLGUuX3ZhbHVlKSkmJihlLmZsYWdzfD0xMjgsZS5fdmFsdWU9bix0LnZlcnNpb24rKyl9Y2F0Y2goZSl7dGhyb3cgdC52ZXJzaW9uKyssZX1maW5hbGx5e3o9bixIZT1yLEZlKGUpLGUuZmxhZ3MmPS0zfX1mdW5jdGlvbiBSZShlLHQ9ITEpe2xldHtkZXA6bixwcmV2U3ViOnIsbmV4dFN1YjppfT1lO2lmKHImJihyLm5leHRTdWI9aSxlLnByZXZTdWI9dm9pZCAwKSxpJiYoaS5wcmV2U3ViPXIsZS5uZXh0U3ViPXZvaWQgMCksbi5zdWJzPT09ZSYmKG4uc3Vicz1yLCFyJiZuLmNvbXB1dGVkKSl7bi5jb21wdXRlZC5mbGFncyY9LTU7Zm9yKGxldCBlPW4uY29tcHV0ZWQuZGVwcztlO2U9ZS5uZXh0RGVwKVJlKGUsITApfSF0JiYhLS1uLnNjJiZuLm1hcCYmbi5tYXAuZGVsZXRlKG4ua2V5KX1mdW5jdGlvbiB6ZShlKXtsZXR7cHJldkRlcDp0LG5leHREZXA6bn09ZTt0JiYodC5uZXh0RGVwPW4sZS5wcmV2RGVwPXZvaWQgMCksbiYmKG4ucHJldkRlcD10LGUubmV4dERlcD12b2lkIDApfWZ1bmN0aW9uIEJlKGUsdCl7ZS5lZmZlY3QgaW5zdGFuY2VvZiBEZSYmKGU9ZS5lZmZlY3QuZm4pO2xldCBuPW5ldyBEZShlKTt0JiZzKG4sdCk7dHJ5e24ucnVuKCl9Y2F0Y2goZSl7dGhyb3cgbi5zdG9wKCksZX1sZXQgcj1uLnJ1bi5iaW5kKG4pO3JldHVybiByLmVmZmVjdD1uLHJ9ZnVuY3Rpb24gVmUoZSl7ZS5lZmZlY3Quc3RvcCgpfXZhciBIZT0hMCxVZT1bXTtmdW5jdGlvbiBXZSgpe1VlLnB1c2goSGUpLEhlPSExfWZ1bmN0aW9uIEdlKCl7bGV0IGU9VWUucG9wKCk7SGU9ZT09PXZvaWQgMHx8ZX1mdW5jdGlvbiBLZShlKXtsZXR7Y2xlYW51cDp0fT1lO2lmKGUuY2xlYW51cD12b2lkIDAsdCl7bGV0IGU9ejt6PXZvaWQgMDt0cnl7dCgpfWZpbmFsbHl7ej1lfX19dmFyIHFlPTAsSmU9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN1Yj1lLHRoaXMuZGVwPXQsdGhpcy52ZXJzaW9uPXQudmVyc2lvbix0aGlzLm5leHREZXA9dGhpcy5wcmV2RGVwPXRoaXMubmV4dFN1Yj10aGlzLnByZXZTdWI9dGhpcy5wcmV2QWN0aXZlTGluaz12b2lkIDB9fSxZZT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbXB1dGVkPWUsdGhpcy52ZXJzaW9uPTAsdGhpcy5hY3RpdmVMaW5rPXZvaWQgMCx0aGlzLnN1YnM9dm9pZCAwLHRoaXMubWFwPXZvaWQgMCx0aGlzLmtleT12b2lkIDAsdGhpcy5zYz0wLHRoaXMuX192X3NraXA9ITB9dHJhY2soZSl7aWYoIXp8fCFIZXx8ej09PXRoaXMuY29tcHV0ZWQpcmV0dXJuO2xldCB0PXRoaXMuYWN0aXZlTGluaztpZih0PT09dm9pZCAwfHx0LnN1YiE9PXopdD10aGlzLmFjdGl2ZUxpbms9bmV3IEplKHosdGhpcyksei5kZXBzPyh0LnByZXZEZXA9ei5kZXBzVGFpbCx6LmRlcHNUYWlsLm5leHREZXA9dCx6LmRlcHNUYWlsPXQpOnouZGVwcz16LmRlcHNUYWlsPXQsWGUodCk7ZWxzZSBpZih0LnZlcnNpb249PT0tMSYmKHQudmVyc2lvbj10aGlzLnZlcnNpb24sdC5uZXh0RGVwKSl7bGV0IGU9dC5uZXh0RGVwO2UucHJldkRlcD10LnByZXZEZXAsdC5wcmV2RGVwJiYodC5wcmV2RGVwLm5leHREZXA9ZSksdC5wcmV2RGVwPXouZGVwc1RhaWwsdC5uZXh0RGVwPXZvaWQgMCx6LmRlcHNUYWlsLm5leHREZXA9dCx6LmRlcHNUYWlsPXQsei5kZXBzPT09dCYmKHouZGVwcz1lKX1yZXR1cm4gdH10cmlnZ2VyKGUpe3RoaXMudmVyc2lvbisrLHFlKyssdGhpcy5ub3RpZnkoZSl9bm90aWZ5KGUpe01lKCk7dHJ5e2ZvcihsZXQgZT10aGlzLnN1YnM7ZTtlPWUucHJldlN1YillLnN1Yi5ub3RpZnkoKSYmZS5zdWIuZGVwLm5vdGlmeSgpfWZpbmFsbHl7TmUoKX19fTtmdW5jdGlvbiBYZShlKXtpZihlLmRlcC5zYysrLGUuc3ViLmZsYWdzJjQpe2xldCB0PWUuZGVwLmNvbXB1dGVkO2lmKHQmJiFlLmRlcC5zdWJzKXt0LmZsYWdzfD0yMDtmb3IobGV0IGU9dC5kZXBzO2U7ZT1lLm5leHREZXApWGUoZSl9bGV0IG49ZS5kZXAuc3VicztuIT09ZSYmKGUucHJldlN1Yj1uLG4mJihuLm5leHRTdWI9ZSkpLGUuZGVwLnN1YnM9ZX19dmFyIFplPW5ldyBXZWFrTWFwLFFlPVN5bWJvbChgYCksJGU9U3ltYm9sKGBgKSxldD1TeW1ib2woYGApO2Z1bmN0aW9uIEIoZSx0LG4pe2lmKEhlJiZ6KXtsZXQgdD1aZS5nZXQoZSk7dHx8WmUuc2V0KGUsdD1uZXcgTWFwKTtsZXQgcj10LmdldChuKTtyfHwodC5zZXQobixyPW5ldyBZZSksci5tYXA9dCxyLmtleT1uKSxyLnRyYWNrKCl9fWZ1bmN0aW9uIHR0KGUsdCxuLHIsaSxhKXtsZXQgbz1aZS5nZXQoZSk7aWYoIW8pe3FlKys7cmV0dXJufWxldCBzPWU9PntlJiZlLnRyaWdnZXIoKX07aWYoTWUoKSx0PT09YGNsZWFyYClvLmZvckVhY2gocyk7ZWxzZXtsZXQgaT1kKGUpLGE9aSYmVChuKTtpZihpJiZuPT09YGxlbmd0aGApe2xldCBlPU51bWJlcihyKTtvLmZvckVhY2goKHQsbik9Pnsobj09PWBsZW5ndGhgfHxuPT09ZXR8fCF2KG4pJiZuPj1lKSYmcyh0KX0pfWVsc2Ugc3dpdGNoKChuIT09dm9pZCAwfHxvLmhhcyh2b2lkIDApKSYmcyhvLmdldChuKSksYSYmcyhvLmdldChldCkpLHQpe2Nhc2VgYWRkYDppP2EmJnMoby5nZXQoYGxlbmd0aGApKToocyhvLmdldChRZSkpLGYoZSkmJnMoby5nZXQoJGUpKSk7YnJlYWs7Y2FzZWBkZWxldGVgOml8fChzKG8uZ2V0KFFlKSksZihlKSYmcyhvLmdldCgkZSkpKTticmVhaztjYXNlYHNldGA6ZihlKSYmcyhvLmdldChRZSkpfX1OZSgpfWZ1bmN0aW9uIG50KGUsdCl7bGV0IG49WmUuZ2V0KGUpO3JldHVybiBuJiZuLmdldCh0KX1mdW5jdGlvbiBydChlKXtsZXQgdD1WKGUpO3JldHVybiB0PT09ZT90OihCKHQsYGl0ZXJhdGVgLGV0KSxHdChlKT90OnQubWFwKEp0KSl9ZnVuY3Rpb24gaXQoZSl7cmV0dXJuIEIoZT1WKGUpLGBpdGVyYXRlYCxldCksZX1mdW5jdGlvbiBhdChlLHQpe3JldHVybiBXdChlKT9ZdChVdChlKT9KdCh0KTp0KTpKdCh0KX12YXIgb3Q9e19fcHJvdG9fXzpudWxsLFtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHN0KHRoaXMsU3ltYm9sLml0ZXJhdG9yLGU9PmF0KHRoaXMsZSkpfSxjb25jYXQoLi4uZSl7cmV0dXJuIHJ0KHRoaXMpLmNvbmNhdCguLi5lLm1hcChlPT5kKGUpP3J0KGUpOmUpKX0sZW50cmllcygpe3JldHVybiBzdCh0aGlzLGBlbnRyaWVzYCxlPT4oZVsxXT1hdCh0aGlzLGVbMV0pLGUpKX0sZXZlcnkoZSx0KXtyZXR1cm4gbHQodGhpcyxgZXZlcnlgLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZmlsdGVyKGUsdCl7cmV0dXJuIGx0KHRoaXMsYGZpbHRlcmAsZSx0LGU9PmUubWFwKGU9PmF0KHRoaXMsZSkpLGFyZ3VtZW50cyl9LGZpbmQoZSx0KXtyZXR1cm4gbHQodGhpcyxgZmluZGAsZSx0LGU9PmF0KHRoaXMsZSksYXJndW1lbnRzKX0sZmluZEluZGV4KGUsdCl7cmV0dXJuIGx0KHRoaXMsYGZpbmRJbmRleGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxmaW5kTGFzdChlLHQpe3JldHVybiBsdCh0aGlzLGBmaW5kTGFzdGAsZSx0LGU9PmF0KHRoaXMsZSksYXJndW1lbnRzKX0sZmluZExhc3RJbmRleChlLHQpe3JldHVybiBsdCh0aGlzLGBmaW5kTGFzdEluZGV4YCxlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGZvckVhY2goZSx0KXtyZXR1cm4gbHQodGhpcyxgZm9yRWFjaGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxpbmNsdWRlcyguLi5lKXtyZXR1cm4gZHQodGhpcyxgaW5jbHVkZXNgLGUpfSxpbmRleE9mKC4uLmUpe3JldHVybiBkdCh0aGlzLGBpbmRleE9mYCxlKX0sam9pbihlKXtyZXR1cm4gcnQodGhpcykuam9pbihlKX0sbGFzdEluZGV4T2YoLi4uZSl7cmV0dXJuIGR0KHRoaXMsYGxhc3RJbmRleE9mYCxlKX0sbWFwKGUsdCl7cmV0dXJuIGx0KHRoaXMsYG1hcGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxwb3AoKXtyZXR1cm4gZnQodGhpcyxgcG9wYCl9LHB1c2goLi4uZSl7cmV0dXJuIGZ0KHRoaXMsYHB1c2hgLGUpfSxyZWR1Y2UoZSwuLi50KXtyZXR1cm4gdXQodGhpcyxgcmVkdWNlYCxlLHQpfSxyZWR1Y2VSaWdodChlLC4uLnQpe3JldHVybiB1dCh0aGlzLGByZWR1Y2VSaWdodGAsZSx0KX0sc2hpZnQoKXtyZXR1cm4gZnQodGhpcyxgc2hpZnRgKX0sc29tZShlLHQpe3JldHVybiBsdCh0aGlzLGBzb21lYCxlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LHNwbGljZSguLi5lKXtyZXR1cm4gZnQodGhpcyxgc3BsaWNlYCxlKX0sdG9SZXZlcnNlZCgpe3JldHVybiBydCh0aGlzKS50b1JldmVyc2VkKCl9LHRvU29ydGVkKGUpe3JldHVybiBydCh0aGlzKS50b1NvcnRlZChlKX0sdG9TcGxpY2VkKC4uLmUpe3JldHVybiBydCh0aGlzKS50b1NwbGljZWQoLi4uZSl9LHVuc2hpZnQoLi4uZSl7cmV0dXJuIGZ0KHRoaXMsYHVuc2hpZnRgLGUpfSx2YWx1ZXMoKXtyZXR1cm4gc3QodGhpcyxgdmFsdWVzYCxlPT5hdCh0aGlzLGUpKX19O2Z1bmN0aW9uIHN0KGUsdCxuKXtsZXQgcj1pdChlKSxpPXJbdF0oKTtyZXR1cm4gciE9PWUmJiFHdChlKSYmKGkuX25leHQ9aS5uZXh0LGkubmV4dD0oKT0+e2xldCBlPWkuX25leHQoKTtyZXR1cm4gZS5kb25lfHwoZS52YWx1ZT1uKGUudmFsdWUpKSxlfSksaX12YXIgY3Q9QXJyYXkucHJvdG90eXBlO2Z1bmN0aW9uIGx0KGUsdCxuLHIsaSxhKXtsZXQgbz1pdChlKSxzPW8hPT1lJiYhR3QoZSksYz1vW3RdO2lmKGMhPT1jdFt0XSl7bGV0IHQ9Yy5hcHBseShlLGEpO3JldHVybiBzP0p0KHQpOnR9bGV0IGw9bjtvIT09ZSYmKHM/bD1mdW5jdGlvbih0LHIpe3JldHVybiBuLmNhbGwodGhpcyxhdChlLHQpLHIsZSl9Om4ubGVuZ3RoPjImJihsPWZ1bmN0aW9uKHQscil7cmV0dXJuIG4uY2FsbCh0aGlzLHQscixlKX0pKTtsZXQgdT1jLmNhbGwobyxsLHIpO3JldHVybiBzJiZpP2kodSk6dX1mdW5jdGlvbiB1dChlLHQsbixyKXtsZXQgaT1pdChlKSxhPWkhPT1lJiYhR3QoZSksbz1uLHM9ITE7aSE9PWUmJihhPyhzPXIubGVuZ3RoPT09MCxvPWZ1bmN0aW9uKHQscixpKXtyZXR1cm4gcyYmKHM9ITEsdD1hdChlLHQpKSxuLmNhbGwodGhpcyx0LGF0KGUsciksaSxlKX0pOm4ubGVuZ3RoPjMmJihvPWZ1bmN0aW9uKHQscixpKXtyZXR1cm4gbi5jYWxsKHRoaXMsdCxyLGksZSl9KSk7bGV0IGM9aVt0XShvLC4uLnIpO3JldHVybiBzP2F0KGUsYyk6Y31mdW5jdGlvbiBkdChlLHQsbil7bGV0IHI9VihlKTtCKHIsYGl0ZXJhdGVgLGV0KTtsZXQgaT1yW3RdKC4uLm4pO3JldHVybihpPT09LTF8fGk9PT0hMSkmJkt0KG5bMF0pPyhuWzBdPVYoblswXSksclt0XSguLi5uKSk6aX1mdW5jdGlvbiBmdChlLHQsbj1bXSl7V2UoKSxNZSgpO2xldCByPVYoZSlbdF0uYXBwbHkoZSxuKTtyZXR1cm4gTmUoKSxHZSgpLHJ9dmFyIHB0PWUoYF9fcHJvdG9fXyxfX3ZfaXNSZWYsX19pc1Z1ZWApLG10PW5ldyBTZXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKS5maWx0ZXIoZT0+ZSE9PWBhcmd1bWVudHNgJiZlIT09YGNhbGxlcmApLm1hcChlPT5TeW1ib2xbZV0pLmZpbHRlcih2KSk7ZnVuY3Rpb24gaHQoZSl7dihlKXx8KGU9U3RyaW5nKGUpKTtsZXQgdD1WKHRoaXMpO3JldHVybiBCKHQsYGhhc2AsZSksdC5oYXNPd25Qcm9wZXJ0eShlKX12YXIgZ3Q9Y2xhc3N7Y29uc3RydWN0b3IoZT0hMSx0PSExKXt0aGlzLl9pc1JlYWRvbmx5PWUsdGhpcy5faXNTaGFsbG93PXR9Z2V0KGUsdCxuKXtpZih0PT09YF9fdl9za2lwYClyZXR1cm4gZS5fX3Zfc2tpcDtsZXQgcj10aGlzLl9pc1JlYWRvbmx5LGk9dGhpcy5faXNTaGFsbG93O2lmKHQ9PT1gX192X2lzUmVhY3RpdmVgKXJldHVybiFyO2lmKHQ9PT1gX192X2lzUmVhZG9ubHlgKXJldHVybiByO2lmKHQ9PT1gX192X2lzU2hhbGxvd2ApcmV0dXJuIGk7aWYodD09PWBfX3ZfcmF3YClyZXR1cm4gbj09PShyP2k/SXQ6RnQ6aT9QdDpOdCkuZ2V0KGUpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik/ZTp2b2lkIDA7bGV0IGE9ZChlKTtpZighcil7bGV0IGU7aWYoYSYmKGU9b3RbdF0pKXJldHVybiBlO2lmKHQ9PT1gaGFzT3duUHJvcGVydHlgKXJldHVybiBodH1sZXQgbz1SZWZsZWN0LmdldChlLHQsSChlKT9lOm4pO2lmKCh2KHQpP210Lmhhcyh0KTpwdCh0KSl8fChyfHxCKGUsYGdldGAsdCksaSkpcmV0dXJuIG87aWYoSChvKSl7bGV0IGU9YSYmVCh0KT9vOm8udmFsdWU7cmV0dXJuIHImJnkoZSk/QnQoZSk6ZX1yZXR1cm4geShvKT9yP0J0KG8pOlJ0KG8pOm99fSxfdD1jbGFzcyBleHRlbmRzIGd0e2NvbnN0cnVjdG9yKGU9ITEpe3N1cGVyKCExLGUpfXNldChlLHQsbixyKXtsZXQgaT1lW3RdLGE9ZChlKSYmVCh0KTtpZighdGhpcy5faXNTaGFsbG93KXtsZXQgZT1XdChpKTtpZighR3QobikmJiFXdChuKSYmKGk9VihpKSxuPVYobikpLCFhJiZIKGkpJiYhSChuKSlyZXR1cm4gZXx8KGkudmFsdWU9biksITB9bGV0IG89YT9OdW1iZXIodCk8ZS5sZW5ndGg6dShlLHQpLHM9UmVmbGVjdC5zZXQoZSx0LG4sSChlKT9lOnIpO3JldHVybiBlPT09VihyKSYmcyYmKG8/aihuLGkpJiZ0dChlLGBzZXRgLHQsbixpKTp0dChlLGBhZGRgLHQsbikpLHN9ZGVsZXRlUHJvcGVydHkoZSx0KXtsZXQgbj11KGUsdCkscj1lW3RdLGk9UmVmbGVjdC5kZWxldGVQcm9wZXJ0eShlLHQpO3JldHVybiBpJiZuJiZ0dChlLGBkZWxldGVgLHQsdm9pZCAwLHIpLGl9aGFzKGUsdCl7bGV0IG49UmVmbGVjdC5oYXMoZSx0KTtyZXR1cm4oIXYodCl8fCFtdC5oYXModCkpJiZCKGUsYGhhc2AsdCksbn1vd25LZXlzKGUpe3JldHVybiBCKGUsYGl0ZXJhdGVgLGQoZSk/YGxlbmd0aGA6UWUpLFJlZmxlY3Qub3duS2V5cyhlKX19LHZ0PWNsYXNzIGV4dGVuZHMgZ3R7Y29uc3RydWN0b3IoZT0hMSl7c3VwZXIoITAsZSl9c2V0KGUsdCl7cmV0dXJuITB9ZGVsZXRlUHJvcGVydHkoZSx0KXtyZXR1cm4hMH19LHl0PW5ldyBfdCxidD1uZXcgdnQseHQ9bmV3IF90KCEwKSxTdD1uZXcgdnQoITApLEN0PWU9PmUsd3Q9ZT0+UmVmbGVjdC5nZXRQcm90b3R5cGVPZihlKTtmdW5jdGlvbiBUdChlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKC4uLnIpe2xldCBpPXRoaXMuX192X3JhdyxhPVYoaSksbz1mKGEpLGM9ZT09PWBlbnRyaWVzYHx8ZT09PVN5bWJvbC5pdGVyYXRvciYmbyxsPWU9PT1ga2V5c2AmJm8sdT1pW2VdKC4uLnIpLGQ9bj9DdDp0P1l0Okp0O3JldHVybiF0JiZCKGEsYGl0ZXJhdGVgLGw/JGU6UWUpLHMoT2JqZWN0LmNyZWF0ZSh1KSx7bmV4dCgpe2xldHt2YWx1ZTplLGRvbmU6dH09dS5uZXh0KCk7cmV0dXJuIHQ/e3ZhbHVlOmUsZG9uZTp0fTp7dmFsdWU6Yz9bZChlWzBdKSxkKGVbMV0pXTpkKGUpLGRvbmU6dH19fSl9fWZ1bmN0aW9uIEV0KGUpe3JldHVybiBmdW5jdGlvbiguLi50KXtyZXR1cm4gZT09PWBkZWxldGVgPyExOmU9PT1gY2xlYXJgP3ZvaWQgMDp0aGlzfX1mdW5jdGlvbiBEdChlLHQpe2xldCBuPXtnZXQobil7bGV0IHI9dGhpcy5fX3ZfcmF3LGk9VihyKSxhPVYobik7ZXx8KGoobixhKSYmQihpLGBnZXRgLG4pLEIoaSxgZ2V0YCxhKSk7bGV0e2hhczpvfT13dChpKSxzPXQ/Q3Q6ZT9ZdDpKdDtpZihvLmNhbGwoaSxuKSlyZXR1cm4gcyhyLmdldChuKSk7aWYoby5jYWxsKGksYSkpcmV0dXJuIHMoci5nZXQoYSkpO3IhPT1pJiZyLmdldChuKX0sZ2V0IHNpemUoKXtsZXQgdD10aGlzLl9fdl9yYXc7cmV0dXJuIWUmJkIoVih0KSxgaXRlcmF0ZWAsUWUpLHQuc2l6ZX0saGFzKHQpe2xldCBuPXRoaXMuX192X3JhdyxyPVYobiksaT1WKHQpO3JldHVybiBlfHwoaih0LGkpJiZCKHIsYGhhc2AsdCksQihyLGBoYXNgLGkpKSx0PT09aT9uLmhhcyh0KTpuLmhhcyh0KXx8bi5oYXMoaSl9LGZvckVhY2gobixyKXtsZXQgaT10aGlzLGE9aS5fX3ZfcmF3LG89VihhKSxzPXQ/Q3Q6ZT9ZdDpKdDtyZXR1cm4hZSYmQihvLGBpdGVyYXRlYCxRZSksYS5mb3JFYWNoKChlLHQpPT5uLmNhbGwocixzKGUpLHModCksaSkpfX07cmV0dXJuIHMobixlP3thZGQ6RXQoYGFkZGApLHNldDpFdChgc2V0YCksZGVsZXRlOkV0KGBkZWxldGVgKSxjbGVhcjpFdChgY2xlYXJgKX06e2FkZChlKXtsZXQgbj1WKHRoaXMpLHI9d3QobiksaT1WKGUpLGE9IXQmJiFHdChlKSYmIVd0KGUpP2k6ZTtyZXR1cm4gci5oYXMuY2FsbChuLGEpfHxqKGUsYSkmJnIuaGFzLmNhbGwobixlKXx8aihpLGEpJiZyLmhhcy5jYWxsKG4saSl8fChuLmFkZChhKSx0dChuLGBhZGRgLGEsYSkpLHRoaXN9LHNldChlLG4peyF0JiYhR3QobikmJiFXdChuKSYmKG49VihuKSk7bGV0IHI9Vih0aGlzKSx7aGFzOmksZ2V0OmF9PXd0KHIpLG89aS5jYWxsKHIsZSk7b3x8PShlPVYoZSksaS5jYWxsKHIsZSkpO2xldCBzPWEuY2FsbChyLGUpO3JldHVybiByLnNldChlLG4pLG8/aihuLHMpJiZ0dChyLGBzZXRgLGUsbixzKTp0dChyLGBhZGRgLGUsbiksdGhpc30sZGVsZXRlKGUpe2xldCB0PVYodGhpcykse2hhczpuLGdldDpyfT13dCh0KSxpPW4uY2FsbCh0LGUpO2l8fD0oZT1WKGUpLG4uY2FsbCh0LGUpKTtsZXQgYT1yP3IuY2FsbCh0LGUpOnZvaWQgMCxvPXQuZGVsZXRlKGUpO3JldHVybiBpJiZ0dCh0LGBkZWxldGVgLGUsdm9pZCAwLGEpLG99LGNsZWFyKCl7bGV0IGU9Vih0aGlzKSx0PWUuc2l6ZSE9PTAsbj1lLmNsZWFyKCk7cmV0dXJuIHQmJnR0KGUsYGNsZWFyYCx2b2lkIDAsdm9pZCAwLHZvaWQgMCksbn19KSxbYGtleXNgLGB2YWx1ZXNgLGBlbnRyaWVzYCxTeW1ib2wuaXRlcmF0b3JdLmZvckVhY2gocj0+e25bcl09VHQocixlLHQpfSksbn1mdW5jdGlvbiBPdChlLHQpe2xldCBuPUR0KGUsdCk7cmV0dXJuKHQscixpKT0+cj09PWBfX3ZfaXNSZWFjdGl2ZWA/IWU6cj09PWBfX3ZfaXNSZWFkb25seWA/ZTpyPT09YF9fdl9yYXdgP3Q6UmVmbGVjdC5nZXQodShuLHIpJiZyIGluIHQ/bjp0LHIsaSl9dmFyIGt0PXtnZXQ6T3QoITEsITEpfSxBdD17Z2V0Ok90KCExLCEwKX0sanQ9e2dldDpPdCghMCwhMSl9LE10PXtnZXQ6T3QoITAsITApfSxOdD1uZXcgV2Vha01hcCxQdD1uZXcgV2Vha01hcCxGdD1uZXcgV2Vha01hcCxJdD1uZXcgV2Vha01hcDtmdW5jdGlvbiBMdChlKXtzd2l0Y2goZSl7Y2FzZWBPYmplY3RgOmNhc2VgQXJyYXlgOnJldHVybiAxO2Nhc2VgTWFwYDpjYXNlYFNldGA6Y2FzZWBXZWFrTWFwYDpjYXNlYFdlYWtTZXRgOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIFJ0KGUpe3JldHVybiBXdChlKT9lOkh0KGUsITEseXQsa3QsTnQpfWZ1bmN0aW9uIHp0KGUpe3JldHVybiBIdChlLCExLHh0LEF0LFB0KX1mdW5jdGlvbiBCdChlKXtyZXR1cm4gSHQoZSwhMCxidCxqdCxGdCl9ZnVuY3Rpb24gVnQoZSl7cmV0dXJuIEh0KGUsITAsU3QsTXQsSXQpfWZ1bmN0aW9uIEh0KGUsdCxuLHIsaSl7aWYoIXkoZSl8fGUuX192X3JhdyYmISh0JiZlLl9fdl9pc1JlYWN0aXZlKXx8ZS5fX3Zfc2tpcHx8IU9iamVjdC5pc0V4dGVuc2libGUoZSkpcmV0dXJuIGU7bGV0IGE9aS5nZXQoZSk7aWYoYSlyZXR1cm4gYTtsZXQgbz1MdChDKGUpKTtpZihvPT09MClyZXR1cm4gZTtsZXQgcz1uZXcgUHJveHkoZSxvPT09Mj9yOm4pO3JldHVybiBpLnNldChlLHMpLHN9ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIFd0KGUpP1V0KGUuX192X3Jhdyk6ISEoZSYmZS5fX3ZfaXNSZWFjdGl2ZSl9ZnVuY3Rpb24gV3QoZSl7cmV0dXJuISEoZSYmZS5fX3ZfaXNSZWFkb25seSl9ZnVuY3Rpb24gR3QoZSl7cmV0dXJuISEoZSYmZS5fX3ZfaXNTaGFsbG93KX1mdW5jdGlvbiBLdChlKXtyZXR1cm4gZT8hIWUuX192X3JhdzohMX1mdW5jdGlvbiBWKGUpe2xldCB0PWUmJmUuX192X3JhdztyZXR1cm4gdD9WKHQpOmV9ZnVuY3Rpb24gcXQoZSl7cmV0dXJuIXUoZSxgX192X3NraXBgKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmTihlLGBfX3Zfc2tpcGAsITApLGV9dmFyIEp0PWU9PnkoZSk/UnQoZSk6ZSxZdD1lPT55KGUpP0J0KGUpOmU7ZnVuY3Rpb24gSChlKXtyZXR1cm4gZT9lLl9fdl9pc1JlZj09PSEwOiExfWZ1bmN0aW9uIFh0KGUpe3JldHVybiBRdChlLCExKX1mdW5jdGlvbiBadChlKXtyZXR1cm4gUXQoZSwhMCl9ZnVuY3Rpb24gUXQoZSx0KXtyZXR1cm4gSChlKT9lOm5ldyAkdChlLHQpfXZhciAkdD1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGVwPW5ldyBZZSx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLl9fdl9pc1NoYWxsb3c9ITEsdGhpcy5fcmF3VmFsdWU9dD9lOlYoZSksdGhpcy5fdmFsdWU9dD9lOkp0KGUpLHRoaXMuX192X2lzU2hhbGxvdz10fWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLmRlcC50cmFjaygpLHRoaXMuX3ZhbHVlfXNldCB2YWx1ZShlKXtsZXQgdD10aGlzLl9yYXdWYWx1ZSxuPXRoaXMuX192X2lzU2hhbGxvd3x8R3QoZSl8fFd0KGUpO2U9bj9lOlYoZSksaihlLHQpJiYodGhpcy5fcmF3VmFsdWU9ZSx0aGlzLl92YWx1ZT1uP2U6SnQoZSksdGhpcy5kZXAudHJpZ2dlcigpKX19O2Z1bmN0aW9uIGVuKGUpe2UuZGVwJiZlLmRlcC50cmlnZ2VyKCl9ZnVuY3Rpb24gdG4oZSl7cmV0dXJuIEgoZSk/ZS52YWx1ZTplfWZ1bmN0aW9uIG5uKGUpe3JldHVybiBnKGUpP2UoKTp0bihlKX12YXIgcm49e2dldDooZSx0LG4pPT50PT09YF9fdl9yYXdgP2U6dG4oUmVmbGVjdC5nZXQoZSx0LG4pKSxzZXQ6KGUsdCxuLHIpPT57bGV0IGk9ZVt0XTtyZXR1cm4gSChpKSYmIUgobik/KGkudmFsdWU9biwhMCk6UmVmbGVjdC5zZXQoZSx0LG4scil9fTtmdW5jdGlvbiBhbihlKXtyZXR1cm4gVXQoZSk/ZTpuZXcgUHJveHkoZSxybil9dmFyIG9uPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX192X2lzUmVmPSEwLHRoaXMuX3ZhbHVlPXZvaWQgMDtsZXQgdD10aGlzLmRlcD1uZXcgWWUse2dldDpuLHNldDpyfT1lKHQudHJhY2suYmluZCh0KSx0LnRyaWdnZXIuYmluZCh0KSk7dGhpcy5fZ2V0PW4sdGhpcy5fc2V0PXJ9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlPXRoaXMuX2dldCgpfXNldCB2YWx1ZShlKXt0aGlzLl9zZXQoZSl9fTtmdW5jdGlvbiBzbihlKXtyZXR1cm4gbmV3IG9uKGUpfWZ1bmN0aW9uIGNuKGUpe2xldCB0PWQoZSk/QXJyYXkoZS5sZW5ndGgpOnt9O2ZvcihsZXQgbiBpbiBlKXRbbl09Zm4oZSxuKTtyZXR1cm4gdH12YXIgbG49Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX29iamVjdD1lLHRoaXMuX2RlZmF1bHRWYWx1ZT1uLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLl9rZXk9dih0KT90OlN0cmluZyh0KSx0aGlzLl9yYXc9VihlKTtsZXQgcj0hMCxpPWU7aWYoIWQoZSl8fHYodGhpcy5fa2V5KXx8IVQodGhpcy5fa2V5KSlkbyByPSFLdChpKXx8R3QoaSk7d2hpbGUociYmKGk9aS5fX3ZfcmF3KSk7dGhpcy5fc2hhbGxvdz1yfWdldCB2YWx1ZSgpe2xldCBlPXRoaXMuX29iamVjdFt0aGlzLl9rZXldO3JldHVybiB0aGlzLl9zaGFsbG93JiYoZT10bihlKSksdGhpcy5fdmFsdWU9ZT09PXZvaWQgMD90aGlzLl9kZWZhdWx0VmFsdWU6ZX1zZXQgdmFsdWUoZSl7aWYodGhpcy5fc2hhbGxvdyYmSCh0aGlzLl9yYXdbdGhpcy5fa2V5XSkpe2xldCB0PXRoaXMuX29iamVjdFt0aGlzLl9rZXldO2lmKEgodCkpe3QudmFsdWU9ZTtyZXR1cm59fXRoaXMuX29iamVjdFt0aGlzLl9rZXldPWV9Z2V0IGRlcCgpe3JldHVybiBudCh0aGlzLl9yYXcsdGhpcy5fa2V5KX19LHVuPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2dldHRlcj1lLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzUmVhZG9ubHk9ITAsdGhpcy5fdmFsdWU9dm9pZCAwfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXR0ZXIoKX19O2Z1bmN0aW9uIGRuKGUsdCxuKXtyZXR1cm4gSChlKT9lOmcoZSk/bmV3IHVuKGUpOnkoZSkmJmFyZ3VtZW50cy5sZW5ndGg+MT9mbihlLHQsbik6WHQoZSl9ZnVuY3Rpb24gZm4oZSx0LG4pe3JldHVybiBuZXcgbG4oZSx0LG4pfXZhciBwbj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5mbj1lLHRoaXMuc2V0dGVyPXQsdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuZGVwPW5ldyBZZSh0aGlzKSx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9MTYsdGhpcy5nbG9iYWxWZXJzaW9uPXFlLTEsdGhpcy5uZXh0PXZvaWQgMCx0aGlzLmVmZmVjdD10aGlzLHRoaXMuX192X2lzUmVhZG9ubHk9IXQsdGhpcy5pc1NTUj1ufW5vdGlmeSgpe2lmKHRoaXMuZmxhZ3N8PTE2LCEodGhpcy5mbGFncyY4KSYmeiE9PXRoaXMpcmV0dXJuIGplKHRoaXMsITApLCEwfWdldCB2YWx1ZSgpe2xldCBlPXRoaXMuZGVwLnRyYWNrKCk7cmV0dXJuIExlKHRoaXMpLGUmJihlLnZlcnNpb249dGhpcy5kZXAudmVyc2lvbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKGUpe3RoaXMuc2V0dGVyJiZ0aGlzLnNldHRlcihlKX19O2Z1bmN0aW9uIG1uKGUsdCxuPSExKXtsZXQgcixpO3JldHVybiBnKGUpP3I9ZToocj1lLmdldCxpPWUuc2V0KSxuZXcgcG4ocixpLG4pfXZhciBobj17R0VUOmBnZXRgLEhBUzpgaGFzYCxJVEVSQVRFOmBpdGVyYXRlYH0sZ249e1NFVDpgc2V0YCxBREQ6YGFkZGAsREVMRVRFOmBkZWxldGVgLENMRUFSOmBjbGVhcmB9LF9uPXt9LHZuPW5ldyBXZWFrTWFwLHluPXZvaWQgMDtmdW5jdGlvbiBibigpe3JldHVybiB5bn1mdW5jdGlvbiB4bihlLHQ9ITEsbj15bil7aWYobil7bGV0IHQ9dm4uZ2V0KG4pO3R8fHZuLnNldChuLHQ9W10pLHQucHVzaChlKX19ZnVuY3Rpb24gU24oZSxuLGk9dCl7bGV0e2ltbWVkaWF0ZTphLGRlZXA6byxvbmNlOnMsc2NoZWR1bGVyOmwsYXVnbWVudEpvYjp1LGNhbGw6Zn09aSxwPWU9Pm8/ZTpHdChlKXx8bz09PSExfHxvPT09MD9DbihlLDEpOkNuKGUpLG0saCxfLHYseT0hMSxiPSExO2lmKEgoZSk/KGg9KCk9PmUudmFsdWUseT1HdChlKSk6VXQoZSk/KGg9KCk9PnAoZSkseT0hMCk6ZChlKT8oYj0hMCx5PWUuc29tZShlPT5VdChlKXx8R3QoZSkpLGg9KCk9PmUubWFwKGU9PntpZihIKGUpKXJldHVybiBlLnZhbHVlO2lmKFV0KGUpKXJldHVybiBwKGUpO2lmKGcoZSkpcmV0dXJuIGY/ZihlLDIpOmUoKX0pKTpoPWcoZSk/bj9mPygpPT5mKGUsMik6ZTooKT0+e2lmKF8pe1dlKCk7dHJ5e18oKX1maW5hbGx5e0dlKCl9fWxldCB0PXluO3luPW07dHJ5e3JldHVybiBmP2YoZSwzLFt2XSk6ZSh2KX1maW5hbGx5e3luPXR9fTpyLG4mJm8pe2xldCBlPWgsdD1vPT09ITA/MS8wOm87aD0oKT0+Q24oZSgpLHQpfWxldCB4PXdlKCksUz0oKT0+e20uc3RvcCgpLHgmJnguYWN0aXZlJiZjKHguZWZmZWN0cyxtKX07aWYocyYmbil7bGV0IGU9bjtuPSguLi50KT0+e2xldCBuPWUoLi4udCk7cmV0dXJuIFMoKSxufX1sZXQgQz1iP0FycmF5KGUubGVuZ3RoKS5maWxsKF9uKTpfbix3PWU9PntpZighKCEobS5mbGFncyYxKXx8IW0uZGlydHkmJiFlKSl7aWYobil7bGV0IHQ9bS5ydW4oKTtpZihlfHxvfHx5fHwoYj90LnNvbWUoKGUsdCk9PmooZSxDW3RdKSk6aih0LEMpKSl7XyYmXygpO2xldCBlPXluO3luPW07dHJ5e2xldCBlPVt0LEM9PT1fbj92b2lkIDA6YiYmQ1swXT09PV9uP1tdOkMsdl07Qz10LGY/ZihuLDMsZSk6biguLi5lKX1maW5hbGx5e3luPWV9fX1lbHNlIG0ucnVuKCl9fTtyZXR1cm4gdSYmdSh3KSxtPW5ldyBEZShoKSxtLnNjaGVkdWxlcj1sPygpPT5sKHcsITEpOncsdj1lPT54bihlLCExLG0pLF89bS5vblN0b3A9KCk9PntsZXQgZT12bi5nZXQobSk7aWYoZSl7aWYoZilmKGUsNCk7ZWxzZSBmb3IobGV0IHQgb2YgZSl0KCk7dm4uZGVsZXRlKG0pfX0sbj9hP3coITApOkM9bS5ydW4oKTpsP2wody5iaW5kKG51bGwsITApLCEwKTptLnJ1bigpLFMucGF1c2U9bS5wYXVzZS5iaW5kKG0pLFMucmVzdW1lPW0ucmVzdW1lLmJpbmQobSksUy5zdG9wPVMsU31mdW5jdGlvbiBDbihlLHQ9MS8wLG4pe2lmKHQ8PTB8fCF5KGUpfHxlLl9fdl9za2lwfHwobnx8PW5ldyBNYXAsKG4uZ2V0KGUpfHwwKT49dCkpcmV0dXJuIGU7aWYobi5zZXQoZSx0KSx0LS0sSChlKSlDbihlLnZhbHVlLHQsbik7ZWxzZSBpZihkKGUpKWZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKUNuKGVbcl0sdCxuKTtlbHNlIGlmKHAoZSl8fGYoZSkpZS5mb3JFYWNoKGU9PntDbihlLHQsbil9KTtlbHNlIGlmKHcoZSkpe2ZvcihsZXQgciBpbiBlKUNuKGVbcl0sdCxuKTtmb3IobGV0IHIgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSlPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmQ24oZVtyXSx0LG4pfXJldHVybiBlfXZhciB3bj1bXTtmdW5jdGlvbiBUbihlKXt3bi5wdXNoKGUpfWZ1bmN0aW9uIEVuKCl7d24ucG9wKCl9ZnVuY3Rpb24gRG4oZSx0KXt9dmFyIE9uPXtTRVRVUF9GVU5DVElPTjowLDA6YFNFVFVQX0ZVTkNUSU9OYCxSRU5ERVJfRlVOQ1RJT046MSwxOmBSRU5ERVJfRlVOQ1RJT05gLE5BVElWRV9FVkVOVF9IQU5ETEVSOjUsNTpgTkFUSVZFX0VWRU5UX0hBTkRMRVJgLENPTVBPTkVOVF9FVkVOVF9IQU5ETEVSOjYsNjpgQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVJgLFZOT0RFX0hPT0s6Nyw3OmBWTk9ERV9IT09LYCxESVJFQ1RJVkVfSE9PSzo4LDg6YERJUkVDVElWRV9IT09LYCxUUkFOU0lUSU9OX0hPT0s6OSw5OmBUUkFOU0lUSU9OX0hPT0tgLEFQUF9FUlJPUl9IQU5ETEVSOjEwLDEwOmBBUFBfRVJST1JfSEFORExFUmAsQVBQX1dBUk5fSEFORExFUjoxMSwxMTpgQVBQX1dBUk5fSEFORExFUmAsRlVOQ1RJT05fUkVGOjEyLDEyOmBGVU5DVElPTl9SRUZgLEFTWU5DX0NPTVBPTkVOVF9MT0FERVI6MTMsMTM6YEFTWU5DX0NPTVBPTkVOVF9MT0FERVJgLFNDSEVEVUxFUjoxNCwxNDpgU0NIRURVTEVSYCxDT01QT05FTlRfVVBEQVRFOjE1LDE1OmBDT01QT05FTlRfVVBEQVRFYCxBUFBfVU5NT1VOVF9DTEVBTlVQOjE2LDE2OmBBUFBfVU5NT1VOVF9DTEVBTlVQYH0sa249e3NwOmBzZXJ2ZXJQcmVmZXRjaCBob29rYCxiYzpgYmVmb3JlQ3JlYXRlIGhvb2tgLGM6YGNyZWF0ZWQgaG9va2AsYm06YGJlZm9yZU1vdW50IGhvb2tgLG06YG1vdW50ZWQgaG9va2AsYnU6YGJlZm9yZVVwZGF0ZSBob29rYCx1OmB1cGRhdGVkYCxidW06YGJlZm9yZVVubW91bnQgaG9va2AsdW06YHVubW91bnRlZCBob29rYCxhOmBhY3RpdmF0ZWQgaG9va2AsZGE6YGRlYWN0aXZhdGVkIGhvb2tgLGVjOmBlcnJvckNhcHR1cmVkIGhvb2tgLHJ0YzpgcmVuZGVyVHJhY2tlZCBob29rYCxydGc6YHJlbmRlclRyaWdnZXJlZCBob29rYCwwOmBzZXR1cCBmdW5jdGlvbmAsMTpgcmVuZGVyIGZ1bmN0aW9uYCwyOmB3YXRjaGVyIGdldHRlcmAsMzpgd2F0Y2hlciBjYWxsYmFja2AsNDpgd2F0Y2hlciBjbGVhbnVwIGZ1bmN0aW9uYCw1OmBuYXRpdmUgZXZlbnQgaGFuZGxlcmAsNjpgY29tcG9uZW50IGV2ZW50IGhhbmRsZXJgLDc6YHZub2RlIGhvb2tgLDg6YGRpcmVjdGl2ZSBob29rYCw5OmB0cmFuc2l0aW9uIGhvb2tgLDEwOmBhcHAgZXJyb3JIYW5kbGVyYCwxMTpgYXBwIHdhcm5IYW5kbGVyYCwxMjpgcmVmIGZ1bmN0aW9uYCwxMzpgYXN5bmMgY29tcG9uZW50IGxvYWRlcmAsMTQ6YHNjaGVkdWxlciBmbHVzaGAsMTU6YGNvbXBvbmVudCB1cGRhdGVgLDE2OmBhcHAgdW5tb3VudCBjbGVhbnVwIGZ1bmN0aW9uYH07ZnVuY3Rpb24gQW4oZSx0LG4scil7dHJ5e3JldHVybiByP2UoLi4ucik6ZSgpfWNhdGNoKGUpe01uKGUsdCxuKX19ZnVuY3Rpb24gam4oZSx0LG4scil7aWYoZyhlKSl7bGV0IGk9QW4oZSx0LG4scik7cmV0dXJuIGkmJmIoaSkmJmkuY2F0Y2goZT0+e01uKGUsdCxuKX0pLGl9aWYoZChlKSl7bGV0IGk9W107Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspaS5wdXNoKGpuKGVbYV0sdCxuLHIpKTtyZXR1cm4gaX19ZnVuY3Rpb24gTW4oZSxuLHIsaT0hMCl7bGV0IGE9bj9uLnZub2RlOm51bGwse2Vycm9ySGFuZGxlcjpvLHRocm93VW5oYW5kbGVkRXJyb3JJblByb2R1Y3Rpb246c309biYmbi5hcHBDb250ZXh0LmNvbmZpZ3x8dDtpZihuKXtsZXQgdD1uLnBhcmVudCxpPW4ucHJveHksYT1gaHR0cHM6Ly92dWVqcy5vcmcvZXJyb3ItcmVmZXJlbmNlLyNydW50aW1lLSR7cn1gO2Zvcig7dDspe2xldCBuPXQuZWM7aWYobil7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XShlLGksYSk9PT0hMSlyZXR1cm59dD10LnBhcmVudH1pZihvKXtXZSgpLEFuKG8sbnVsbCwxMCxbZSxpLGFdKSxHZSgpO3JldHVybn19Tm4oZSxyLGEsaSxzKX1mdW5jdGlvbiBObihlLHQsbixyPSEwLGk9ITEpe2lmKGkpdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfXZhciBQbj1bXSxGbj0tMSxJbj1bXSxMbj1udWxsLFJuPTAsem49UHJvbWlzZS5yZXNvbHZlKCksQm49bnVsbDtmdW5jdGlvbiBWbihlKXtsZXQgdD1Cbnx8em47cmV0dXJuIGU/dC50aGVuKHRoaXM/ZS5iaW5kKHRoaXMpOmUpOnR9ZnVuY3Rpb24gSG4oZSl7bGV0IHQ9Rm4rMSxuPVBuLmxlbmd0aDtmb3IoO3Q8bjspe2xldCByPXQrbj4+PjEsaT1QbltyXSxhPUpuKGkpO2E8ZXx8YT09PWUmJmkuZmxhZ3MmMj90PXIrMTpuPXJ9cmV0dXJuIHR9ZnVuY3Rpb24gVW4oZSl7aWYoIShlLmZsYWdzJjEpKXtsZXQgdD1KbihlKSxuPVBuW1BuLmxlbmd0aC0xXTshbnx8IShlLmZsYWdzJjIpJiZ0Pj1KbihuKT9Qbi5wdXNoKGUpOlBuLnNwbGljZShIbih0KSwwLGUpLGUuZmxhZ3N8PTEsV24oKX19ZnVuY3Rpb24gV24oKXtCbnx8PXpuLnRoZW4oWW4pfWZ1bmN0aW9uIEduKGUpe2lmKCFkKGUpKUxuJiZlLmlkPT09LTE/TG4uc3BsaWNlKFJuKzEsMCxlKTplLmZsYWdzJjF8fChJbi5wdXNoKGUpLGUuZmxhZ3N8PTEpO2Vsc2UgZm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspSW4ucHVzaChlW3RdKTtXbigpfWZ1bmN0aW9uIEtuKGUsdCxuPUZuKzEpe2Zvcig7bjxQbi5sZW5ndGg7bisrKXtsZXQgdD1QbltuXTtpZih0JiZ0LmZsYWdzJjIpe2lmKGUmJnQuaWQhPT1lLnVpZCljb250aW51ZTtQbi5zcGxpY2UobiwxKSxuLS0sdC5mbGFncyY0JiYodC5mbGFncyY9LTIpLHQoKSx0LmZsYWdzJjR8fCh0LmZsYWdzJj0tMil9fX1mdW5jdGlvbiBxbihlKXtpZihJbi5sZW5ndGgpe2xldCBlPVsuLi5uZXcgU2V0KEluKV0uc29ydCgoZSx0KT0+Sm4oZSktSm4odCkpO2lmKEluLmxlbmd0aD0wLExuKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylMbi5wdXNoKGVbdF0pO3JldHVybn1mb3IoTG49ZSxSbj0wO1JuPExuLmxlbmd0aDtSbisrKXtsZXQgZT1MbltSbl07ZS5mbGFncyY0JiYoZS5mbGFncyY9LTIpLGUuZmxhZ3MmOHx8ZSgpLGUuZmxhZ3MmPS0yfUxuPW51bGwsUm49MH19dmFyIEpuPWU9PmUuaWQ9PW51bGw/ZS5mbGFncyYyPy0xOjEvMDplLmlkO2Z1bmN0aW9uIFluKGUpe3RyeXtmb3IoRm49MDtGbjxQbi5sZW5ndGg7Rm4rKyl7bGV0IGU9UG5bRm5dO2UmJiEoZS5mbGFncyY4KSYmKGUuZmxhZ3MmNCYmKGUuZmxhZ3MmPS0yKSxBbihlLGUuaSxlLmk/MTU6MTQpLGUuZmxhZ3MmNHx8KGUuZmxhZ3MmPS0yKSl9fWZpbmFsbHl7Zm9yKDtGbjxQbi5sZW5ndGg7Rm4rKyl7bGV0IGU9UG5bRm5dO2UmJihlLmZsYWdzJj0tMil9Rm49LTEsUG4ubGVuZ3RoPTAscW4oZSksQm49bnVsbCwoUG4ubGVuZ3RofHxJbi5sZW5ndGgpJiZZbihlKX19dmFyIFhuLFpuPVtdO2Z1bmN0aW9uIFFuKGUsdCl7WG49ZSxYbj8oWG4uZW5hYmxlZD0hMCxabi5mb3JFYWNoKCh7ZXZlbnQ6ZSxhcmdzOnR9KT0+WG4uZW1pdChlLC4uLnQpKSxabj1bXSk6dHlwZW9mIHdpbmRvdzxgdWAmJndpbmRvdy5IVE1MRWxlbWVudCYmISh3aW5kb3cubmF2aWdhdG9yPy51c2VyQWdlbnQpPy5pbmNsdWRlcyhganNkb21gKT8oKHQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXz10Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX198fFtdKS5wdXNoKGU9PntRbihlLHQpfSksc2V0VGltZW91dCgoKT0+e1hufHwodC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fPW51bGwsWm49W10pfSwzZTMpKTpabj1bXX12YXIgVT1udWxsLCRuPW51bGw7ZnVuY3Rpb24gZXIoZSl7bGV0IHQ9VTtyZXR1cm4gVT1lLCRuPWUmJmUudHlwZS5fX3Njb3BlSWR8fG51bGwsdH1mdW5jdGlvbiB0cihlKXskbj1lfWZ1bmN0aW9uIG5yKCl7JG49bnVsbH12YXIgcnI9ZT0+aXI7ZnVuY3Rpb24gaXIoZSx0PVUsbil7aWYoIXR8fGUuX24pcmV0dXJuIGU7bGV0IHI9KC4uLm4pPT57ci5fZCYmaXMoLTEpO2xldCBpPWVyKHQpLGE9JG8ubGVuZ3RoLG87dHJ5e289ZSguLi5uKX1maW5hbGx5e2ZvcihsZXQgZT0kby5sZW5ndGg7ZT5hO2UtLSlucygpO2VyKGkpLHIuX2QmJmlzKDEpfXJldHVybiBvfTtyZXR1cm4gci5fbj0hMCxyLl9jPSEwLHIuX2Q9ITAscn1mdW5jdGlvbiBhcihlLG4pe2lmKFU9PT1udWxsKXJldHVybiBlO2xldCByPVdzKFUpLGk9ZS5kaXJzfHw9W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2xldFthLG8scyxjPXRdPW5bZV07YSYmKGcoYSkmJihhPXttb3VudGVkOmEsdXBkYXRlZDphfSksYS5kZWVwJiZDbihvKSxpLnB1c2goe2RpcjphLGluc3RhbmNlOnIsdmFsdWU6byxvbGRWYWx1ZTp2b2lkIDAsYXJnOnMsbW9kaWZpZXJzOmN9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gb3IoZSx0LG4scil7bGV0IGk9ZS5kaXJzLGE9dCYmdC5kaXJzO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXtsZXQgcz1pW29dO2EmJihzLm9sZFZhbHVlPWFbb10udmFsdWUpO2xldCBjPXMuZGlyW3JdO2MmJihXZSgpLGpuKGMsbiw4LFtlLmVsLHMsZSx0XSksR2UoKSl9fWZ1bmN0aW9uIHNyKGUsdCl7aWYoSil7bGV0IG49Si5wcm92aWRlcyxyPUoucGFyZW50JiZKLnBhcmVudC5wcm92aWRlcztyPT09biYmKG49Si5wcm92aWRlcz1PYmplY3QuY3JlYXRlKHIpKSxuW2VdPXR9fWZ1bmN0aW9uIGNyKGUsdCxuPSExKXtsZXQgcj1ZKCk7aWYocnx8cWEpe2xldCBpPXFhP3FhLl9jb250ZXh0LnByb3ZpZGVzOnI/ci5wYXJlbnQ9PW51bGx8fHIuY2U/ci52bm9kZS5hcHBDb250ZXh0JiZyLnZub2RlLmFwcENvbnRleHQucHJvdmlkZXM6ci5wYXJlbnQucHJvdmlkZXM6dm9pZCAwO2lmKGkmJmUgaW4gaSlyZXR1cm4gaVtlXTtpZihhcmd1bWVudHMubGVuZ3RoPjEpcmV0dXJuIG4mJmcodCk/dC5jYWxsKHImJnIucHJveHkpOnR9fWZ1bmN0aW9uIGxyKCl7cmV0dXJuISEoWSgpfHxxYSl9dmFyIHVyPVN5bWJvbC5mb3IoYHYtc2N4YCksZHI9KCk9PmNyKHVyKTtmdW5jdGlvbiBmcihlLHQpe3JldHVybiBncihlLG51bGwsdCl9ZnVuY3Rpb24gcHIoZSx0KXtyZXR1cm4gZ3IoZSxudWxsLHtmbHVzaDpgcG9zdGB9KX1mdW5jdGlvbiBtcihlLHQpe3JldHVybiBncihlLG51bGwse2ZsdXNoOmBzeW5jYH0pfWZ1bmN0aW9uIGhyKGUsdCxuKXtyZXR1cm4gZ3IoZSx0LG4pfWZ1bmN0aW9uIGdyKGUsbixpPXQpe2xldHtpbW1lZGlhdGU6YSxkZWVwOm8sZmx1c2g6YyxvbmNlOmx9PWksdT1zKHt9LGkpLGQ9biYmYXx8IW4mJmMhPT1gcG9zdGAsZjtpZihOcyl7aWYoYz09PWBzeW5jYCl7bGV0IGU9ZHIoKTtmPWUuX193YXRjaGVySGFuZGxlc3x8PVtdfWVsc2UgaWYoIWQpe2xldCBlPSgpPT57fTtyZXR1cm4gZS5zdG9wPXIsZS5yZXN1bWU9cixlLnBhdXNlPXIsZX19bGV0IHA9Sjt1LmNhbGw9KGUsdCxuKT0+am4oZSxwLHQsbik7bGV0IG09ITE7Yz09PWBwb3N0YD91LnNjaGVkdWxlcj1lPT57VyhlLHAmJnAuc3VzcGVuc2UpfTpjIT09YHN5bmNgJiYobT0hMCx1LnNjaGVkdWxlcj0oZSx0KT0+e3Q/ZSgpOlVuKGUpfSksdS5hdWdtZW50Sm9iPWU9PntuJiYoZS5mbGFnc3w9NCksbSYmKGUuZmxhZ3N8PTIscCYmKGUuaWQ9cC51aWQsZS5pPXApKX07bGV0IGg9U24oZSxuLHUpO3JldHVybiBOcyYmKGY/Zi5wdXNoKGgpOmQmJmgoKSksaH1mdW5jdGlvbiBfcihlLHQsbil7bGV0IHI9dGhpcy5wcm94eSxpPV8oZSk/ZS5pbmNsdWRlcyhgLmApP3ZyKHIsZSk6KCk9PnJbZV06ZS5iaW5kKHIsciksYTtnKHQpP2E9dDooYT10LmhhbmRsZXIsbj10KTtsZXQgbz1Bcyh0aGlzKSxzPWdyKGksYS5iaW5kKHIpLG4pO3JldHVybiBvKCksc31mdW5jdGlvbiB2cihlLHQpe2xldCBuPXQuc3BsaXQoYC5gKTtyZXR1cm4oKT0+e2xldCB0PWU7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aCYmdDtlKyspdD10W25bZV1dO3JldHVybiB0fX12YXIgeXI9bmV3IFdlYWtNYXAsYnI9U3ltYm9sKGBfdnRlYCkseHI9ZT0+ZS5fX2lzVGVsZXBvcnQsU3I9ZT0+ZSYmKGUuZGlzYWJsZWR8fGUuZGlzYWJsZWQ9PT1gYCksQ3I9ZT0+ZSYmKGUuZGVmZXJ8fGUuZGVmZXI9PT1gYCksd3I9ZT0+dHlwZW9mIFNWR0VsZW1lbnQ8YHVgJiZlIGluc3RhbmNlb2YgU1ZHRWxlbWVudCxUcj1lPT50eXBlb2YgTWF0aE1MRWxlbWVudD09YGZ1bmN0aW9uYCYmZSBpbnN0YW5jZW9mIE1hdGhNTEVsZW1lbnQsRXI9KGUsdCk9PntsZXQgbj1lJiZlLnRvO3JldHVybiBfKG4pP3Q/dChuKTpudWxsOm59LERyPXtuYW1lOmBUZWxlcG9ydGAsX19pc1RlbGVwb3J0OiEwLHByb2Nlc3MoZSx0LG4scixpLGEsbyxzLGMsbCl7bGV0e21jOnUscGM6ZCxwYmM6ZixvOntpbnNlcnQ6cCxxdWVyeVNlbGVjdG9yOm0sY3JlYXRlVGV4dDpoLGNyZWF0ZUNvbW1lbnQ6ZyxwYXJlbnROb2RlOl99fT1sLHY9U3IodC5wcm9wcykse2R5bmFtaWNDaGlsZHJlbjp5fT10LGI9KGUsdCxuKT0+e2Uuc2hhcGVGbGFnJjE2JiZ1KGUuY2hpbGRyZW4sdCxuLGksYSxvLHMsYyl9LHg9KGU9dCk9PntsZXQgbj1TcihlLnByb3BzKSxyPWUudGFyZ2V0PUVyKGUucHJvcHMsbSksYT1NcihyLGUsaCxwKTtyJiYobyE9PWBzdmdgJiZ3cihyKT9vPWBzdmdgOm8hPT1gbWF0aG1sYCYmVHIocikmJihvPWBtYXRobWxgKSxpJiZpLmlzQ0UmJihpLmNlLl90ZWxlcG9ydFRhcmdldHN8fChpLmNlLl90ZWxlcG9ydFRhcmdldHM9bmV3IFNldCkpLmFkZChyKSxufHwoYihlLHIsYSksanIoZSwhMSkpKX0sUz1lPT57bGV0IHQ9KCk9PntpZih5ci5nZXQoZSk9PT10KXtpZih5ci5kZWxldGUoZSksU3IoZS5wcm9wcykpe2xldCB0PV8oZS5lbCl8fG47YihlLHQsZS5hbmNob3IpLGpyKGUsITApfXgoZSl9fTt5ci5zZXQoZSx0KSxXKHQsYSl9O2lmKGU9PW51bGwpe2xldCBlPXQuZWw9aChgYCksaT10LmFuY2hvcj1oKGBgKTtpZihwKGUsbixyKSxwKGksbixyKSxDcih0LnByb3BzKXx8YSYmYS5wZW5kaW5nQnJhbmNoKXtTKHQpO3JldHVybn12JiYoYih0LG4saSksanIodCwhMCkpLHgoKX1lbHNle3QuZWw9ZS5lbDtsZXQgcj10LmFuY2hvcj1lLmFuY2hvcix1PXlyLmdldChlKTtpZih1KXt1LmZsYWdzfD04LHlyLmRlbGV0ZShlKSxTKHQpO3JldHVybn10LnRhcmdldFN0YXJ0PWUudGFyZ2V0U3RhcnQ7bGV0IHA9dC50YXJnZXQ9ZS50YXJnZXQsaD10LnRhcmdldEFuY2hvcj1lLnRhcmdldEFuY2hvcixnPVNyKGUucHJvcHMpLF89Zz9uOnAsYj1nP3I6aDtpZihvPT09YHN2Z2B8fHdyKHApP289YHN2Z2A6KG89PT1gbWF0aG1sYHx8VHIocCkpJiYobz1gbWF0aG1sYCkseT8oZihlLmR5bmFtaWNDaGlsZHJlbix5LF8saSxhLG8scyksTm8oZSx0LCEwKSk6Y3x8ZChlLHQsXyxiLGksYSxvLHMsITEpLHYpZz90LnByb3BzJiZlLnByb3BzJiZ0LnByb3BzLnRvIT09ZS5wcm9wcy50byYmKHQucHJvcHMudG89ZS5wcm9wcy50byk6T3IodCxuLHIsbCwxKTtlbHNlIGlmKCh0LnByb3BzJiZ0LnByb3BzLnRvKSE9PShlLnByb3BzJiZlLnByb3BzLnRvKSl7bGV0IGU9RXIodC5wcm9wcyxtKTtlJiYodC50YXJnZXQ9ZSxPcih0LGUsbnVsbCxsLDApKX1lbHNlIGcmJk9yKHQscCxoLGwsMSk7anIodCx2KX19LHJlbW92ZShlLHQsbix7dW06cixvOntyZW1vdmU6aX19LGEpe2xldHtzaGFwZUZsYWc6byxjaGlsZHJlbjpzLGFuY2hvcjpjLHRhcmdldFN0YXJ0OmwsdGFyZ2V0QW5jaG9yOnUsdGFyZ2V0OmQscHJvcHM6Zn09ZSxwPVNyKGYpLG09YXx8IXAsaD15ci5nZXQoZSk7aWYoaCYmKGguZmxhZ3N8PTgseXIuZGVsZXRlKGUpKSxkJiYoaShsKSxpKHUpKSxhJiZpKGMpLCFoJiYocHx8ZCkmJm8mMTYpZm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspe2xldCBpPXNbZV07cihpLHQsbixtLCEhaS5keW5hbWljQ2hpbGRyZW4pfX0sbW92ZTpPcixoeWRyYXRlOmtyfTtmdW5jdGlvbiBPcihlLHQsbix7bzp7aW5zZXJ0OnJ9LG06aX0sYT0yKXthPT09MCYmcihlLnRhcmdldEFuY2hvcix0LG4pO2xldHtlbDpvLGFuY2hvcjpzLHNoYXBlRmxhZzpjLGNoaWxkcmVuOmwscHJvcHM6dX09ZSxkPWE9PT0yO2lmKGQmJnIobyx0LG4pLCF5ci5oYXMoZSkmJighZHx8U3IodSkpJiZjJjE2KWZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSsrKWkobFtlXSx0LG4sMik7ZCYmcihzLHQsbil9ZnVuY3Rpb24ga3IoZSx0LG4scixpLGEse286e25leHRTaWJsaW5nOm8scGFyZW50Tm9kZTpzLHF1ZXJ5U2VsZWN0b3I6YyxpbnNlcnQ6bCxjcmVhdGVUZXh0OnV9fSxkKXtmdW5jdGlvbiBmKGUsbil7bGV0IHI9bjtmb3IoO3I7KXtpZihyJiZyLm5vZGVUeXBlPT09OCl7aWYoci5kYXRhPT09YHRlbGVwb3J0IHN0YXJ0IGFuY2hvcmApdC50YXJnZXRTdGFydD1yO2Vsc2UgaWYoci5kYXRhPT09YHRlbGVwb3J0IGFuY2hvcmApe3QudGFyZ2V0QW5jaG9yPXIsZS5fbHBhPXQudGFyZ2V0QW5jaG9yJiZvKHQudGFyZ2V0QW5jaG9yKTticmVha319cj1vKHIpfX1mdW5jdGlvbiBwKGUsdCl7dC5hbmNob3I9ZChvKGUpLHQscyhlKSxuLHIsaSxhKX1sZXQgbT10LnRhcmdldD1Fcih0LnByb3BzLGMpLGg9U3IodC5wcm9wcyk7aWYobSl7bGV0IGM9bS5fbHBhfHxtLmZpcnN0Q2hpbGQ7dC5zaGFwZUZsYWcmMTYmJihoPyhwKGUsdCksZihtLGMpLHQudGFyZ2V0QW5jaG9yfHxNcihtLHQsdSxsLHMoZSk9PT1tP2U6bnVsbCkpOih0LmFuY2hvcj1vKGUpLGYobSxjKSx0LnRhcmdldEFuY2hvcnx8TXIobSx0LHUsbCksZChjJiZvKGMpLHQsbSxuLHIsaSxhKSkpLGpyKHQsaCl9ZWxzZSBoJiZ0LnNoYXBlRmxhZyYxNiYmKHAoZSx0KSx0LnRhcmdldFN0YXJ0PWUsdC50YXJnZXRBbmNob3I9byhlKSk7cmV0dXJuIHQuYW5jaG9yJiZvKHQuYW5jaG9yKX12YXIgQXI9RHI7ZnVuY3Rpb24ganIoZSx0KXtsZXQgbj1lLmN0eDtpZihuJiZuLnV0KXtsZXQgcixpO2Zvcih0PyhyPWUuZWwsaT1lLmFuY2hvcik6KHI9ZS50YXJnZXRTdGFydCxpPWUudGFyZ2V0QW5jaG9yKTtyJiZyIT09aTspci5ub2RlVHlwZT09PTEmJnIuc2V0QXR0cmlidXRlKGBkYXRhLXYtb3duZXJgLG4udWlkKSxyPXIubmV4dFNpYmxpbmc7bi51dCgpfX1mdW5jdGlvbiBNcihlLHQsbixyLGk9bnVsbCl7bGV0IGE9dC50YXJnZXRTdGFydD1uKGBgKSxvPXQudGFyZ2V0QW5jaG9yPW4oYGApO3JldHVybiBhW2JyXT1vLGUmJihyKGEsZSxpKSxyKG8sZSxpKSksb312YXIgTnI9U3ltYm9sKGBfbGVhdmVDYmApLFByPVN5bWJvbChgX2VudGVyQ2JgKTtmdW5jdGlvbiBGcigpe2xldCBlPXtpc01vdW50ZWQ6ITEsaXNMZWF2aW5nOiExLGlzVW5tb3VudGluZzohMSxsZWF2aW5nVk5vZGVzOm5ldyBNYXB9O3JldHVybiBWaSgoKT0+e2UuaXNNb3VudGVkPSEwfSksV2koKCk9PntlLmlzVW5tb3VudGluZz0hMH0pLGV9dmFyIElyPVtGdW5jdGlvbixBcnJheV0sTHI9e21vZGU6U3RyaW5nLGFwcGVhcjpCb29sZWFuLHBlcnNpc3RlZDpCb29sZWFuLG9uQmVmb3JlRW50ZXI6SXIsb25FbnRlcjpJcixvbkFmdGVyRW50ZXI6SXIsb25FbnRlckNhbmNlbGxlZDpJcixvbkJlZm9yZUxlYXZlOklyLG9uTGVhdmU6SXIsb25BZnRlckxlYXZlOklyLG9uTGVhdmVDYW5jZWxsZWQ6SXIsb25CZWZvcmVBcHBlYXI6SXIsb25BcHBlYXI6SXIsb25BZnRlckFwcGVhcjpJcixvbkFwcGVhckNhbmNlbGxlZDpJcn0sUnI9ZT0+e2xldCB0PWUuc3ViVHJlZTtyZXR1cm4gdC5jb21wb25lbnQ/UnIodC5jb21wb25lbnQpOnR9LHpyPXtuYW1lOmBCYXNlVHJhbnNpdGlvbmAscHJvcHM6THIsc2V0dXAoZSx7c2xvdHM6dH0pe2xldCBuPVkoKSxyPUZyKCk7cmV0dXJuKCk9PntsZXQgaT10LmRlZmF1bHQmJnFyKHQuZGVmYXVsdCgpLCEwKSxhPWkmJmkubGVuZ3RoP0JyKGkpOm4uc3ViVHJlZT95cygpOnZvaWQgMDtpZighYSlyZXR1cm47bGV0IG89VihlKSx7bW9kZTpzfT1vO2lmKHIuaXNMZWF2aW5nKXJldHVybiBXcihhKTtsZXQgYz1HcihhKTtpZighYylyZXR1cm4gV3IoYSk7bGV0IGw9VXIoYyxvLHIsbixlPT5sPWUpO2MudHlwZSE9PUsmJktyKGMsbCk7bGV0IHU9bi5zdWJUcmVlJiZHcihuLnN1YlRyZWUpO2lmKHUmJnUudHlwZSE9PUsmJiFscyh1LGMpJiZScihuKS50eXBlIT09Syl7bGV0IGU9VXIodSxvLHIsbik7aWYoS3IodSxlKSxzPT09YG91dC1pbmAmJmMudHlwZSE9PUspcmV0dXJuIHIuaXNMZWF2aW5nPSEwLGUuYWZ0ZXJMZWF2ZT0oKT0+e3IuaXNMZWF2aW5nPSExLG4uam9iLmZsYWdzJjh8fG4udXBkYXRlKCksZGVsZXRlIGUuYWZ0ZXJMZWF2ZSx1PXZvaWQgMH0sV3IoYSk7cz09PWBpbi1vdXRgJiZjLnR5cGUhPT1LP2UuZGVsYXlMZWF2ZT0oZSx0LG4pPT57bGV0IGk9SHIocix1KTtpW1N0cmluZyh1LmtleSldPXUsZVtOcl09KCk9Pnt0KCksZVtOcl09dm9pZCAwLGRlbGV0ZSBsLmRlbGF5ZWRMZWF2ZSx1PXZvaWQgMH0sbC5kZWxheWVkTGVhdmU9KCk9PntuKCksZGVsZXRlIGwuZGVsYXllZExlYXZlLHU9dm9pZCAwfX06dT12b2lkIDB9ZWxzZSB1JiY9dm9pZCAwO3JldHVybiBhfX19O2Z1bmN0aW9uIEJyKGUpe2xldCB0PWVbMF07aWYoZS5sZW5ndGg+MSl7Zm9yKGxldCBuIG9mIGUpaWYobi50eXBlIT09Syl7dD1uO2JyZWFrfX1yZXR1cm4gdH12YXIgVnI9enI7ZnVuY3Rpb24gSHIoZSx0KXtsZXR7bGVhdmluZ1ZOb2RlczpufT1lLHI9bi5nZXQodC50eXBlKTtyZXR1cm4gcnx8KHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuLnNldCh0LnR5cGUscikpLHJ9ZnVuY3Rpb24gVXIoZSx0LG4scixpKXtsZXR7YXBwZWFyOmEsbW9kZTpvLHBlcnNpc3RlZDpzPSExLG9uQmVmb3JlRW50ZXI6YyxvbkVudGVyOmwsb25BZnRlckVudGVyOnUsb25FbnRlckNhbmNlbGxlZDpmLG9uQmVmb3JlTGVhdmU6cCxvbkxlYXZlOm0sb25BZnRlckxlYXZlOmgsb25MZWF2ZUNhbmNlbGxlZDpnLG9uQmVmb3JlQXBwZWFyOl8sb25BcHBlYXI6dixvbkFmdGVyQXBwZWFyOnksb25BcHBlYXJDYW5jZWxsZWQ6Yn09dCx4PVN0cmluZyhlLmtleSksUz1IcihuLGUpLEM9KGUsdCk9PntlJiZqbihlLHIsOSx0KX0sdz0oZSx0KT0+e2xldCBuPXRbMV07QyhlLHQpLGQoZSk/ZS5ldmVyeShlPT5lLmxlbmd0aDw9MSkmJm4oKTplLmxlbmd0aDw9MSYmbigpfSxUPXttb2RlOm8scGVyc2lzdGVkOnMsYmVmb3JlRW50ZXIodCl7bGV0IHI9YztpZighbi5pc01vdW50ZWQpe2lmKGEpcj1ffHxjO2Vsc2UgcmV0dXJufXRbTnJdJiZ0W05yXSghMCk7bGV0IGk9U1t4XTtpJiZscyhlLGkpJiZpLmVsW05yXSYmaS5lbFtOcl0oKSxDKHIsW3RdKX0sZW50ZXIodCl7aWYoU1t4XT09PWUpcmV0dXJuO2xldCByPWwsaT11LG89ZjtpZighbi5pc01vdW50ZWQpe2lmKGEpcj12fHxsLGk9eXx8dSxvPWJ8fGY7ZWxzZSByZXR1cm59bGV0IHM9ITE7dFtQcl09ZT0+e3N8fChzPSEwLEMoZT9vOmksW3RdKSxULmRlbGF5ZWRMZWF2ZSYmVC5kZWxheWVkTGVhdmUoKSx0W1ByXT12b2lkIDApfTtsZXQgYz10W1ByXS5iaW5kKG51bGwsITEpO3I/dyhyLFt0LGNdKTpjKCl9LGxlYXZlKHQscil7bGV0IGk9U3RyaW5nKGUua2V5KTtpZih0W1ByXSYmdFtQcl0oITApLG4uaXNVbm1vdW50aW5nKXJldHVybiByKCk7QyhwLFt0XSk7bGV0IGE9ITE7dFtOcl09bj0+e2F8fChhPSEwLHIoKSxDKG4/ZzpoLFt0XSksdFtOcl09dm9pZCAwLFNbaV09PT1lJiZkZWxldGUgU1tpXSl9O2xldCBvPXRbTnJdLmJpbmQobnVsbCwhMSk7U1tpXT1lLG0/dyhtLFt0LG9dKTpvKCl9LGNsb25lKGUpe2xldCBhPVVyKGUsdCxuLHIsaSk7cmV0dXJuIGkmJmkoYSksYX19O3JldHVybiBUfWZ1bmN0aW9uIFdyKGUpe2lmKGtpKGUpKXJldHVybiBlPWdzKGUpLGUuY2hpbGRyZW49bnVsbCxlfWZ1bmN0aW9uIEdyKGUpe2lmKCFraShlKSlyZXR1cm4geHIoZS50eXBlKSYmZS5jaGlsZHJlbj9CcihlLmNoaWxkcmVuKTplO2lmKGUuY29tcG9uZW50KXJldHVybiBlLmNvbXBvbmVudC5zdWJUcmVlO2xldHtzaGFwZUZsYWc6dCxjaGlsZHJlbjpufT1lO2lmKG4pe2lmKHQmMTYpcmV0dXJuIG5bMF07aWYodCYzMiYmZyhuLmRlZmF1bHQpKXJldHVybiBuLmRlZmF1bHQoKX19ZnVuY3Rpb24gS3IoZSx0KXtpZihlLnNoYXBlRmxhZyY2JiZlLmNvbXBvbmVudCl7ZS50cmFuc2l0aW9uPXQ7bGV0IG49ZS5jb21wb25lbnQuc3ViVHJlZTtLcih4cihuLnR5cGUpJiZHcihuKXx8bix0KX1lbHNlIGUuc2hhcGVGbGFnJjEyOD8oZS5zc0NvbnRlbnQudHJhbnNpdGlvbj10LmNsb25lKGUuc3NDb250ZW50KSxlLnNzRmFsbGJhY2sudHJhbnNpdGlvbj10LmNsb25lKGUuc3NGYWxsYmFjaykpOmUudHJhbnNpdGlvbj10fWZ1bmN0aW9uIHFyKGUsdD0hMSxuKXtsZXQgcj1bXSxpPTA7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2xldCBvPWVbYV0scz1uPT1udWxsP28ua2V5OlN0cmluZyhuKStTdHJpbmcoby5rZXk9PW51bGw/YTpvLmtleSk7by50eXBlPT09Rz8oby5wYXRjaEZsYWcmMTI4JiZpKysscj1yLmNvbmNhdChxcihvLmNoaWxkcmVuLHQscykpKToodHx8by50eXBlIT09SykmJnIucHVzaChzPT1udWxsP286Z3Mobyx7a2V5OnN9KSl9aWYoaT4xKWZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKXJbZV0ucGF0Y2hGbGFnPS0yO3JldHVybiByfWZ1bmN0aW9uIEpyKGUsdCl7cmV0dXJuIGcoZSk/cyh7bmFtZTplLm5hbWV9LHQse3NldHVwOmV9KTplfWZ1bmN0aW9uIFlyKCl7bGV0IGU9WSgpO3JldHVybiBlPyhlLmFwcENvbnRleHQuY29uZmlnLmlkUHJlZml4fHxgdmApK2AtYCtlLmlkc1swXStlLmlkc1sxXSsrOmBgfWZ1bmN0aW9uIFhyKGUpe2UuaWRzPVtlLmlkc1swXStlLmlkc1syXSsrK2AtYCwwLDBdfWZ1bmN0aW9uIFpyKGUpe2xldCBuPVkoKSxyPVp0KG51bGwpO2lmKG4pe2xldCBpPW4ucmVmcz09PXQ/bi5yZWZzPXt9Om4ucmVmcztPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxlLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ci52YWx1ZSxzZXQ6ZT0+ci52YWx1ZT1lfSl9cmV0dXJuIHJ9ZnVuY3Rpb24gUXIoZSx0KXtsZXQgbjtyZXR1cm4hISgobj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkpJiYhbi5jb25maWd1cmFibGUpfXZhciAkcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBlaShlLG4scixhLG89ITEpe2lmKGQoZSkpe2UuZm9yRWFjaCgoZSx0KT0+ZWkoZSxuJiYoZChuKT9uW3RdOm4pLHIsYSxvKSk7cmV0dXJufWlmKEVpKGEpJiYhbyl7YS5zaGFwZUZsYWcmNTEyJiZhLnR5cGUuX19hc3luY1Jlc29sdmVkJiZhLmNvbXBvbmVudC5zdWJUcmVlLmNvbXBvbmVudCYmZWkoZSxuLHIsYS5jb21wb25lbnQuc3ViVHJlZSk7cmV0dXJufWxldCBzPWEuc2hhcGVGbGFnJjQ/V3MoYS5jb21wb25lbnQpOmEuZWwsbD1vP251bGw6cyx7aTpmLHI6cH09ZSxtPW4mJm4ucixoPWYucmVmcz09PXQ/Zi5yZWZzPXt9OmYucmVmcyx2PWYuc2V0dXBTdGF0ZSx5PVYodiksYj12PT09dD9pOmU9PiFRcihoLGUpJiZ1KHksZSkseD0oZSx0KT0+ISh0JiZRcihoLHQpKTtpZihtIT1udWxsJiZtIT09cCl7aWYodGkobiksXyhtKSloW21dPW51bGwsYihtKSYmKHZbbV09bnVsbCk7ZWxzZSBpZihIKG0pKXtsZXQgZT1uO3gobSxlLmspJiYobS52YWx1ZT1udWxsKSxlLmsmJihoW2Uua109bnVsbCl9fWlmKGcocCkpQW4ocCxmLDEyLFtsLGhdKTtlbHNle2xldCB0PV8ocCksbj1IKHApO2lmKHR8fG4pe2xldCBpPSgpPT57aWYoZS5mKXtsZXQgbj10P2IocCk/dltwXTpoW3BdOngocCl8fCFlLms/cC52YWx1ZTpoW2Uua107aWYobylkKG4pJiZjKG4scyk7ZWxzZSBpZihkKG4pKW4uaW5jbHVkZXMocyl8fG4ucHVzaChzKTtlbHNlIGlmKHQpaFtwXT1bc10sYihwKSYmKHZbcF09aFtwXSk7ZWxzZXtsZXQgdD1bc107eChwLGUuaykmJihwLnZhbHVlPXQpLGUuayYmKGhbZS5rXT10KX19ZWxzZSB0PyhoW3BdPWwsYihwKSYmKHZbcF09bCkpOm4mJih4KHAsZS5rKSYmKHAudmFsdWU9bCksZS5rJiYoaFtlLmtdPWwpKX07aWYobCl7bGV0IHQ9KCk9PntpKCksJHIuZGVsZXRlKGUpfTt0LmlkPS0xLCRyLnNldChlLHQpLFcodCxyKX1lbHNlIHRpKGUpLGkoKX19fWZ1bmN0aW9uIHRpKGUpe2xldCB0PSRyLmdldChlKTt0JiYodC5mbGFnc3w9OCwkci5kZWxldGUoZSkpfXZhciBuaT0hMSxyaT0oKT0+e25pfHw9KGNvbnNvbGUuZXJyb3IoYEh5ZHJhdGlvbiBjb21wbGV0ZWQgYnV0IGNvbnRhaW5zIG1pc21hdGNoZXMuYCksITApfSxpaT1lPT5lLm5hbWVzcGFjZVVSSS5pbmNsdWRlcyhgc3ZnYCkmJmUudGFnTmFtZSE9PWBmb3JlaWduT2JqZWN0YCxhaT1lPT5lLm5hbWVzcGFjZVVSSS5pbmNsdWRlcyhgTWF0aE1MYCksb2k9ZT0+e2lmKGUubm9kZVR5cGU9PT0xKXtpZihpaShlKSlyZXR1cm5gc3ZnYDtpZihhaShlKSlyZXR1cm5gbWF0aG1sYH19LHNpPWU9PmUubm9kZVR5cGU9PT04O2Z1bmN0aW9uIGNpKGUpe2xldHttdDp0LHA6bixvOntwYXRjaFByb3A6cixjcmVhdGVUZXh0OmksbmV4dFNpYmxpbmc6byxwYXJlbnROb2RlOnMscmVtb3ZlOmMsaW5zZXJ0OmwsY3JlYXRlQ29tbWVudDp1fX09ZSxkPShlLHQpPT57aWYoIXQuaGFzQ2hpbGROb2RlcygpKXtuKG51bGwsZSx0KSxxbigpLHQuX3Zub2RlPWU7cmV0dXJufWYodC5maXJzdENoaWxkLGUsbnVsbCxudWxsLG51bGwpLHFuKCksdC5fdm5vZGU9ZX0sZj0obixyLGEsYyx1LGQ9ITEpPT57ZHx8PSEhci5keW5hbWljQ2hpbGRyZW47bGV0IGI9c2kobikmJm4uZGF0YT09PWBbYCx4PSgpPT5nKG4scixhLGMsdSxiKSx7dHlwZTpTLHJlZjpDLHNoYXBlRmxhZzp3LHBhdGNoRmxhZzpUfT1yLEU9bi5ub2RlVHlwZTtyLmVsPW4sVD09PS0yJiYoZD0hMSxyLmR5bmFtaWNDaGlsZHJlbj1udWxsKTtsZXQgRD1udWxsO3N3aXRjaChTKXtjYXNlIFpvOkU9PT0zPyhuLmRhdGEhPT1yLmNoaWxkcmVuJiYocmkoKSxuLmRhdGE9ci5jaGlsZHJlbiksRD1vKG4pKTpyLmNoaWxkcmVuPT09YGA/KGwoci5lbD1pKGBgKSxzKG4pLG4pLEQ9bik6RD14KCk7YnJlYWs7Y2FzZSBLOnkobik/KEQ9byhuKSx2KHIuZWw9bi5jb250ZW50LmZpcnN0Q2hpbGQsbixhKSk6RD1FIT09OHx8Yj94KCk6byhuKTticmVhaztjYXNlIFFvOmlmKGImJihuPW8obiksRT1uLm5vZGVUeXBlKSxFPT09MXx8RT09PTMpe0Q9bjtsZXQgZT0hci5jaGlsZHJlbi5sZW5ndGg7Zm9yKGxldCB0PTA7dDxyLnN0YXRpY0NvdW50O3QrKyllJiYoci5jaGlsZHJlbis9RC5ub2RlVHlwZT09PTE/RC5vdXRlckhUTUw6RC5kYXRhKSx0PT09ci5zdGF0aWNDb3VudC0xJiYoci5hbmNob3I9RCksRD1vKEQpO3JldHVybiBiP28oRCk6RH14KCk7YnJlYWs7Y2FzZSBHOkQ9Yj9oKG4scixhLGMsdSxkKTp4KCk7YnJlYWs7ZGVmYXVsdDppZih3JjEpRD0oRSE9PTF8fHIudHlwZS50b0xvd2VyQ2FzZSgpIT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkpJiYheShuKT94KCk6cChuLHIsYSxjLHUsZCk7ZWxzZSBpZih3JjYpe3Iuc2xvdFNjb3BlSWRzPXU7bGV0IGU9cyhuKTtpZihEPWI/XyhuKTpzaShuKSYmbi5kYXRhPT09YHRlbGVwb3J0IHN0YXJ0YD9fKG4sbi5kYXRhLGB0ZWxlcG9ydCBlbmRgKTpvKG4pLHQocixlLG51bGwsYSxjLG9pKGUpLGQpLEVpKHIpJiYhci50eXBlLl9fYXN5bmNSZXNvbHZlZCl7bGV0IHQ7Yj8odD1xKEcpLHQuYW5jaG9yPUQ/RC5wcmV2aW91c1NpYmxpbmc6ZS5sYXN0Q2hpbGQpOnQ9bi5ub2RlVHlwZT09PTM/X3MoYGApOnEoYGRpdmApLHQuZWw9bixyLmNvbXBvbmVudC5zdWJUcmVlPXR9fWVsc2UgdyY2ND9EPUU9PT04P3IudHlwZS5oeWRyYXRlKG4scixhLGMsdSxkLGUsbSk6eCgpOncmMTI4JiYoRD1yLnR5cGUuaHlkcmF0ZShuLHIsYSxjLG9pKHMobikpLHUsZCxlLGYpKX1yZXR1cm4gQyE9bnVsbCYmZWkoQyxudWxsLGMsciksRH0scD0oZSx0LG4saSxvLHMpPT57c3x8PSEhdC5keW5hbWljQ2hpbGRyZW47bGV0e3R5cGU6bCxkeW5hbWljUHJvcHM6dSxwcm9wczpkLHBhdGNoRmxhZzpmLHNoYXBlRmxhZzpwLGRpcnM6aCx0cmFuc2l0aW9uOmd9PXQsXz1sPT09YGlucHV0YHx8bD09PWBvcHRpb25gLGI9ISF1O2lmKF98fGJ8fGYhPT0tMSl7aCYmb3IodCxudWxsLG4sYGNyZWF0ZWRgKTtsZXQgbD0hMTtpZih5KGUpKXtsPU1vKG51bGwsZykmJm4mJm4udm5vZGUucHJvcHMmJm4udm5vZGUucHJvcHMuYXBwZWFyO2xldCByPWUuY29udGVudC5maXJzdENoaWxkO2lmKGwpe2xldCBlPXIuZ2V0QXR0cmlidXRlKGBjbGFzc2ApO2UmJihyLiRjbHM9ZSksZy5iZWZvcmVFbnRlcihyKX12KHIsZSxuKSx0LmVsPWU9cn1pZihwJjE2JiYhKGQmJihkLmlubmVySFRNTHx8ZC50ZXh0Q29udGVudCkpKXtsZXQgcj1tKGUuZmlyc3RDaGlsZCx0LGUsbixpLG8scyk7Zm9yKHImJiFwaShlLDEpJiZyaSgpO3I7KXtsZXQgZT1yO3I9ci5uZXh0U2libGluZyxjKGUpfX1lbHNlIGlmKHAmOCl7bGV0IG49dC5jaGlsZHJlbjtuWzBdPT09YApgJiYoZS50YWdOYW1lPT09YFBSRWB8fGUudGFnTmFtZT09PWBURVhUQVJFQWApJiYobj1uLnNsaWNlKDEpKTtsZXR7dGV4dENvbnRlbnQ6cn09ZTtyIT09biYmciE9PW4ucmVwbGFjZSgvXHJcbnxcci9nLGAKYCkmJihwaShlLDApfHxyaSgpLGUudGV4dENvbnRlbnQ9dC5jaGlsZHJlbil9aWYoZCl7aWYoX3x8Ynx8IXN8fGYmNDgpe2xldCB0PWUudGFnTmFtZS5pbmNsdWRlcyhgLWApLGk9ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoYHN2Z2ApP2BzdmdgOmUubmFtZXNwYWNlVVJJLmluY2x1ZGVzKGBNYXRoTUxgKT9gbWF0aG1sYDp2b2lkIDA7Zm9yKGxldCBvIGluIGQpaWYoXyYmKG8uZW5kc1dpdGgoYHZhbHVlYCl8fG89PT1gaW5kZXRlcm1pbmF0ZWApfHxhKG8pJiYhRShvKXx8b1swXT09PWAuYHx8dCYmIUUobyl8fHUmJnUuaW5jbHVkZXMobykpe2lmKHVpKGUsbyxkW29dKSljb250aW51ZTtyKGUsbyxudWxsLGRbb10saSxuKX19ZWxzZSBpZihkLm9uQ2xpY2spcihlLGBvbkNsaWNrYCxudWxsLGQub25DbGljayx2b2lkIDAsbik7ZWxzZSBpZihmJjQmJlV0KGQuc3R5bGUpKWZvcihsZXQgZSBpbiBkLnN0eWxlKWQuc3R5bGVbZV19bGV0IHg7KHg9ZCYmZC5vblZub2RlQmVmb3JlTW91bnQpJiZ3cyh4LG4sdCksaCYmb3IodCxudWxsLG4sYGJlZm9yZU1vdW50YCksKCh4PWQmJmQub25Wbm9kZU1vdW50ZWQpfHxofHxsKSYmSm8oKCk9Pnt4JiZ3cyh4LG4sdCksbCYmZy5lbnRlcihlKSxoJiZvcih0LG51bGwsbixgbW91bnRlZGApfSxpKX1yZXR1cm4gZS5uZXh0U2libGluZ30sbT0oZSx0LHIsYSxzLGMsdSk9Pnt1fHw9ISF0LmR5bmFtaWNDaGlsZHJlbjtsZXQgZD10LmNoaWxkcmVuLHA9ZC5sZW5ndGgsbT0hMTtmb3IobGV0IHQ9MDt0PHA7dCsrKXtsZXQgaD11P2RbdF06ZFt0XT1icyhkW3RdKSxnPWgudHlwZT09PVpvO2U/KGcmJiF1JiZ0KzE8cCYmYnMoZFt0KzFdKS50eXBlPT09Wm8mJihsKGkoZS5kYXRhLnNsaWNlKGguY2hpbGRyZW4ubGVuZ3RoKSkscixvKGUpKSxlLmRhdGE9aC5jaGlsZHJlbiksZT1mKGUsaCxhLHMsYyx1KSk6ZyYmIWguY2hpbGRyZW4/bChoLmVsPWkoYGApLHIpOihtfHwobT0hMCxwaShyLDEpfHxyaSgpKSxuKG51bGwsaCxyLG51bGwsYSxzLG9pKHIpLGMpKX1yZXR1cm4gZX0saD0oZSx0LG4scixpLGEpPT57bGV0e3Nsb3RTY29wZUlkczpjfT10O2MmJihpPWk/aS5jb25jYXQoYyk6Yyk7bGV0IGQ9cyhlKSxmPW0obyhlKSx0LGQsbixyLGksYSk7cmV0dXJuIGYmJnNpKGYpJiZmLmRhdGE9PT1gXWA/byh0LmFuY2hvcj1mKToocmkoKSxsKHQuYW5jaG9yPXUoYF1gKSxkLGYpLGYpfSxnPShlLHQscixpLGEsbCk9PntpZihoaShlLHQpfHxyaSgpLHQuZWw9bnVsbCxsKXtsZXQgdD1fKGUpO2Zvcig7Oyl7bGV0IG49byhlKTtpZihuJiZuIT09dCljKG4pO2Vsc2UgYnJlYWt9fWxldCB1PW8oZSksZD1zKGUpO3JldHVybiBjKGUpLG4obnVsbCx0LGQsdSxyLGksb2koZCksYSksciYmKHIudm5vZGUuZWw9dC5lbCxzbyhyLHQuZWwpKSx1fSxfPShlLHQ9YFtgLG49YF1gKT0+e2xldCByPTA7Zm9yKDtlOylpZihlPW8oZSksZSYmc2koZSkmJihlLmRhdGE9PT10JiZyKyssZS5kYXRhPT09bikpe2lmKHI9PT0wKXJldHVybiBvKGUpO3ItLX1yZXR1cm4gZX0sdj0oZSx0LG4pPT57bGV0IHI9dC5wYXJlbnROb2RlO3ImJnIucmVwbGFjZUNoaWxkKGUsdCk7bGV0IGk9bjtmb3IoO2k7KWkudm5vZGUuZWw9PT10JiYoaS52bm9kZS5lbD1pLnN1YlRyZWUuZWw9ZSksaT1pLnBhcmVudH0seT1lPT5lLm5vZGVUeXBlPT09MSYmZS50YWdOYW1lPT09YFRFTVBMQVRFYDtyZXR1cm5bZCxmXX12YXIgbGk9bmV3IFNldChbYHNyY2AsYHNyY3NldGAsYGhyZWZgLGBwb3N0ZXJgXSk7ZnVuY3Rpb24gdWkoZSx0LG4pe3JldHVybiBsaS5oYXModCk/ZS5nZXRBdHRyaWJ1dGUodCk9PT0obj09bnVsbD9udWxsOmAke259YCk6ITF9dmFyIGRpPWBkYXRhLWFsbG93LW1pc21hdGNoYCxmaT17MDpgdGV4dGAsMTpgY2hpbGRyZW5gLDI6YGNsYXNzYCwzOmBzdHlsZWAsNDpgYXR0cmlidXRlYH07ZnVuY3Rpb24gcGkoZSx0KXtpZih0PT09MHx8dD09PTEpZm9yKDtlJiYhZS5oYXNBdHRyaWJ1dGUoZGkpOyllPWUucGFyZW50RWxlbWVudDtyZXR1cm4gbWkoZSYmZS5nZXRBdHRyaWJ1dGUoZGkpLHQpfWZ1bmN0aW9uIG1pKGUsdCl7aWYoZT09bnVsbClyZXR1cm4hMTtpZihlPT09YGApcmV0dXJuITA7e2xldCBuPWUuc3BsaXQoYCxgKTtyZXR1cm4gdD09PTAmJm4uaW5jbHVkZXMoYGNoaWxkcmVuYCk/ITA6bi5pbmNsdWRlcyhmaVt0XSl9fWZ1bmN0aW9uIGhpKGUsdCl7cmV0dXJuIHBpKGUucGFyZW50RWxlbWVudCwxKXx8Z2koZSl8fF9pKHQpfWZ1bmN0aW9uIGdpKGUpe3JldHVybiBlLm5vZGVUeXBlPT09MSYmbWkoZS5nZXRBdHRyaWJ1dGUoZGkpLDEpfWZ1bmN0aW9uIF9pKHtwcm9wczplfSl7bGV0IHQ9ZSYmZVtkaV07cmV0dXJuIHR5cGVvZiB0PT1gc3RyaW5nYCYmbWkodCwxKX12YXIgdmk9b2UoKS5yZXF1ZXN0SWRsZUNhbGxiYWNrfHwoZT0+c2V0VGltZW91dChlLDEpKSx5aT1vZSgpLmNhbmNlbElkbGVDYWxsYmFja3x8KGU9PmNsZWFyVGltZW91dChlKSksYmk9KGU9MWU0KT0+dD0+e2xldCBuPXZpKHQse3RpbWVvdXQ6ZX0pO3JldHVybigpPT55aShuKX07ZnVuY3Rpb24geGkoZSl7bGV0e3RvcDp0LGxlZnQ6bixib3R0b206cixyaWdodDppfT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHtpbm5lckhlaWdodDphLGlubmVyV2lkdGg6b309d2luZG93O3JldHVybih0PjAmJnQ8YXx8cj4wJiZyPGEpJiYobj4wJiZuPG98fGk+MCYmaTxvKX12YXIgU2k9ZT0+KHQsbik9PntsZXQgcj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZT0+e2ZvcihsZXQgbiBvZiBlKWlmKG4uaXNJbnRlcnNlY3Rpbmcpe3IuZGlzY29ubmVjdCgpLHQoKTticmVha319LGUpO3JldHVybiBuKGU9PntpZihlIGluc3RhbmNlb2YgRWxlbWVudCl7aWYoeGkoZSkpcmV0dXJuIHQoKSxyLmRpc2Nvbm5lY3QoKSwhMTtyLm9ic2VydmUoZSl9fSksKCk9PnIuZGlzY29ubmVjdCgpfSxDaT1lPT50PT57aWYoZSl7bGV0IG49bWF0Y2hNZWRpYShlKTtpZihuLm1hdGNoZXMpdCgpO2Vsc2UgcmV0dXJuIG4uYWRkRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCx0LHtvbmNlOiEwfSksKCk9Pm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCx0KX19LHdpPShlPVtdKT0+KHQsbik9PntfKGUpJiYoZT1bZV0pO2xldCByPSExLGk9ZT0+e3J8fChyPSEwLGEoKSx0KCksZS50YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgZS5jb25zdHJ1Y3RvcihlLnR5cGUsZSkpKX0sYT0oKT0+e24odD0+e2ZvcihsZXQgbiBvZiBlKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGkpfSl9O3JldHVybiBuKHQ9Pntmb3IobGV0IG4gb2YgZSl0LmFkZEV2ZW50TGlzdGVuZXIobixpLHtvbmNlOiEwfSl9KSxhfTtmdW5jdGlvbiBUaShlLHQpe2lmKHNpKGUpJiZlLmRhdGE9PT1gW2Ape2xldCBuPTEscj1lLm5leHRTaWJsaW5nO2Zvcig7cjspe2lmKHIubm9kZVR5cGU9PT0xKXtpZih0KHIpPT09ITEpYnJlYWt9ZWxzZSBpZihzaShyKSl7aWYoci5kYXRhPT09YF1gKXtpZigtLW49PT0wKWJyZWFrfWVsc2Ugci5kYXRhPT09YFtgJiZuKyt9cj1yLm5leHRTaWJsaW5nfX1lbHNlIHQoZSl9dmFyIEVpPWU9PiEhZS50eXBlLl9fYXN5bmNMb2FkZXI7ZnVuY3Rpb24gRGkoZSl7ZyhlKSYmKGU9e2xvYWRlcjplfSk7bGV0e2xvYWRlcjp0LGxvYWRpbmdDb21wb25lbnQ6bixlcnJvckNvbXBvbmVudDpyLGRlbGF5Omk9MjAwLGh5ZHJhdGU6YSx0aW1lb3V0Om8sc3VzcGVuc2libGU6cz0hMCxvbkVycm9yOmN9PWUsbD1udWxsLHUsZD0wLGY9KCk9PihkKyssbD1udWxsLHAoKSkscD0oKT0+e2xldCBlO3JldHVybiBsfHwoZT1sPXQoKS5jYXRjaChlPT57aWYoZT1lIGluc3RhbmNlb2YgRXJyb3I/ZTpFcnJvcihTdHJpbmcoZSkpLGMpcmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57YyhlLCgpPT50KGYoKSksKCk9Pm4oZSksZCsxKX0pO3Rocm93IGV9KS50aGVuKHQ9PmUhPT1sJiZsP2w6KHQmJih0Ll9fZXNNb2R1bGV8fHRbU3ltYm9sLnRvU3RyaW5nVGFnXT09PWBNb2R1bGVgKSYmKHQ9dC5kZWZhdWx0KSx1PXQsdCkpKX07cmV0dXJuIEpyKHtuYW1lOmBBc3luY0NvbXBvbmVudFdyYXBwZXJgLF9fYXN5bmNMb2FkZXI6cCxfX2FzeW5jSHlkcmF0ZShlLHQsbil7bGV0IHI9ZS5pc0Nvbm5lY3RlZCxpPSExOyh0LmJ1fHw9W10pLnB1c2goKCk9Pmk9ITApO2xldCBvPSgpPT57aXx8IWUucGFyZW50Tm9kZXx8ciYmIWUuaXNDb25uZWN0ZWR8fG4oKX0scz1hPygpPT57bGV0IG49YShvLHQ9PlRpKGUsdCkpO24mJih0LmJ1bXx8PVtdKS5wdXNoKG4pfTpvO3U/cygpOnAoKS50aGVuKCgpPT4hdC5pc1VubW91bnRlZCYmcygpKX0sZ2V0IF9fYXN5bmNSZXNvbHZlZCgpe3JldHVybiB1fSxzZXR1cCgpe2xldCBlPUo7aWYoWHIoZSksdSlyZXR1cm4oKT0+T2kodSxlKTtsZXQgdD10PT57bD1udWxsLE1uKHQsZSwxMywhcil9O2lmKHMmJmUuc3VzcGVuc2V8fE5zKXJldHVybiBwKCkudGhlbih0PT4oKT0+T2kodCxlKSkuY2F0Y2goZT0+KHQoZSksKCk9PnI/cShyLHtlcnJvcjplfSk6bnVsbCkpO2xldCBhPVh0KCExKSxjPVh0KCksZD1YdCghIWkpLGYsbTtyZXR1cm4gR2koKCk9PntmIT1udWxsJiZjbGVhclRpbWVvdXQoZiksbSE9bnVsbCYmY2xlYXJUaW1lb3V0KG0pfSksaSYmKG09c2V0VGltZW91dCgoKT0+e2UuaXNVbm1vdW50ZWR8fChkLnZhbHVlPSExKX0saSkpLG8hPW51bGwmJihmPXNldFRpbWVvdXQoKCk9PntpZighZS5pc1VubW91bnRlZCYmIWEudmFsdWUmJiFjLnZhbHVlKXtsZXQgZT1FcnJvcihgQXN5bmMgY29tcG9uZW50IHRpbWVkIG91dCBhZnRlciAke299bXMuYCk7dChlKSxjLnZhbHVlPWV9fSxvKSkscCgpLnRoZW4oKCk9PntlLmlzVW5tb3VudGVkfHwoYS52YWx1ZT0hMCxlLnBhcmVudCYma2koZS5wYXJlbnQudm5vZGUpJiZlLnBhcmVudC51cGRhdGUoKSl9KS5jYXRjaChuPT57aWYoZS5pc1VubW91bnRlZCl7bD1udWxsO3JldHVybn10KG4pLGMudmFsdWU9bn0pLCgpPT57aWYoYS52YWx1ZSYmdSlyZXR1cm4gT2kodSxlKTtpZihjLnZhbHVlJiZyKXJldHVybiBxKHIse2Vycm9yOmMudmFsdWV9KTtpZihuJiYhZC52YWx1ZSlyZXR1cm4gT2kobixlKX19fSl9ZnVuY3Rpb24gT2koZSx0KXtsZXR7cmVmOm4scHJvcHM6cixjaGlsZHJlbjppLGNlOmF9PXQudm5vZGUsbz1xKGUscixpKTtyZXR1cm4gby5yZWY9bixvLmNlPWEsZGVsZXRlIHQudm5vZGUuY2Usb312YXIga2k9ZT0+ZS50eXBlLl9faXNLZWVwQWxpdmUsQWk9e25hbWU6YEtlZXBBbGl2ZWAsX19pc0tlZXBBbGl2ZTohMCxwcm9wczp7aW5jbHVkZTpbU3RyaW5nLFJlZ0V4cCxBcnJheV0sZXhjbHVkZTpbU3RyaW5nLFJlZ0V4cCxBcnJheV0sbWF4OltTdHJpbmcsTnVtYmVyXX0sc2V0dXAoZSx7c2xvdHM6dH0pe2xldCBuPVkoKSxyPW4uY3R4O2lmKCFyLnJlbmRlcmVyKXJldHVybigpPT57bGV0IGU9dC5kZWZhdWx0JiZ0LmRlZmF1bHQoKTtyZXR1cm4gZSYmZS5sZW5ndGg9PT0xP2VbMF06ZX07bGV0IGk9bmV3IE1hcCxhPW5ldyBTZXQsbz1udWxsLHM9bi5zdXNwZW5zZSx7cmVuZGVyZXI6e3A6YyxtOmwsdW06dSxvOntjcmVhdGVFbGVtZW50OmR9fX09cixmPWQoYGRpdmApO3IuYWN0aXZhdGU9KGUsdCxuLHIsaSk9PntsZXQgYT1lLmNvbXBvbmVudDtsKGUsdCxuLDAscyksYyhhLnZub2RlLGUsdCxuLGEscyxyLGUuc2xvdFNjb3BlSWRzLGkpLFcoKCk9PnthLmlzRGVhY3RpdmF0ZWQ9ITEsYS5hJiZNKGEuYSk7bGV0IHQ9ZS5wcm9wcyYmZS5wcm9wcy5vblZub2RlTW91bnRlZDt0JiZ3cyh0LGEucGFyZW50LGUpfSxzKX0sci5kZWFjdGl2YXRlPWU9PntsZXQgdD1lLmNvbXBvbmVudDtJbyh0Lm0pLElvKHQuYSksbChlLGYsbnVsbCwxLHMpLFcoKCk9Pnt0LmRhJiZNKHQuZGEpO2xldCBuPWUucHJvcHMmJmUucHJvcHMub25Wbm9kZVVubW91bnRlZDtuJiZ3cyhuLHQucGFyZW50LGUpLHQuaXNEZWFjdGl2YXRlZD0hMH0scyl9O2Z1bmN0aW9uIHAoZSl7SWkoZSksdShlLG4scywhMCl9ZnVuY3Rpb24gbShlKXtpLmZvckVhY2goKHQsbik9PntsZXQgcj1HcyhFaSh0KT90LnR5cGUuX19hc3luY1Jlc29sdmVkfHx7fTp0LnR5cGUpO3ImJiFlKHIpJiZoKG4pfSl9ZnVuY3Rpb24gaChlKXtsZXQgdD1pLmdldChlKTt0JiYoIW98fCFscyh0LG8pKT9wKHQpOm8mJklpKG8pLGkuZGVsZXRlKGUpLGEuZGVsZXRlKGUpfWhyKCgpPT5bZS5pbmNsdWRlLGUuZXhjbHVkZV0sKFtlLHRdKT0+e2UmJm0odD0+amkoZSx0KSksdCYmbShlPT4hamkodCxlKSl9LHtmbHVzaDpgcG9zdGAsZGVlcDohMH0pO2xldCBnPW51bGwsXz0oKT0+e2chPW51bGwmJihSbyhuLnN1YlRyZWUudHlwZSk/VygoKT0+e2kuc2V0KGcsTGkobi5zdWJUcmVlKSl9LG4uc3ViVHJlZS5zdXNwZW5zZSk6aS5zZXQoZyxMaShuLnN1YlRyZWUpKSl9O3JldHVybiBWaShfKSxVaShfKSxXaSgoKT0+e2kuZm9yRWFjaChlPT57bGV0e3N1YlRyZWU6dCxzdXNwZW5zZTpyfT1uLGk9TGkodCk7aWYoZS50eXBlPT09aS50eXBlJiZlLmtleT09PWkua2V5KXtJaShpKTtsZXQgZT1pLmNvbXBvbmVudC5kYTtlJiZXKGUscik7cmV0dXJufXAoZSl9KX0pLCgpPT57aWYoZz1udWxsLCF0LmRlZmF1bHQpcmV0dXJuIG89bnVsbDtsZXQgbj10LmRlZmF1bHQoKSxyPW5bMF07aWYobi5sZW5ndGg+MSlyZXR1cm4gbz1udWxsLG47aWYoIWNzKHIpfHwhKHIuc2hhcGVGbGFnJjQpJiYhKHIuc2hhcGVGbGFnJjEyOCkpcmV0dXJuIG89bnVsbCxyO2xldCBzPUxpKHIpO2lmKHMudHlwZT09PUspcmV0dXJuIG89bnVsbCxzO2xldCBjPXMudHlwZSxsPUdzKEVpKHMpP3MudHlwZS5fX2FzeW5jUmVzb2x2ZWR8fHt9OmMpLHtpbmNsdWRlOnUsZXhjbHVkZTpkLG1heDpmfT1lO2lmKHUmJighbHx8IWppKHUsbCkpfHxkJiZsJiZqaShkLGwpKXJldHVybiBzLnNoYXBlRmxhZyY9LTI1NyxvPXMscjtsZXQgcD1zLmtleT09bnVsbD9jOnMua2V5LG09aS5nZXQocCk7cmV0dXJuIHMuZWwmJihzPWdzKHMpLHIuc2hhcGVGbGFnJjEyOCYmKHIuc3NDb250ZW50PXMpKSxnPXAsbT8ocy5lbD1tLmVsLHMuY29tcG9uZW50PW0uY29tcG9uZW50LHMudHJhbnNpdGlvbiYmS3IocyxzLnRyYW5zaXRpb24pLHMuc2hhcGVGbGFnfD01MTIsYS5kZWxldGUocCksYS5hZGQocCkpOihhLmFkZChwKSxmJiZhLnNpemU+cGFyc2VJbnQoZiwxMCkmJmgoYS52YWx1ZXMoKS5uZXh0KCkudmFsdWUpKSxzLnNoYXBlRmxhZ3w9MjU2LG89cyxSbyhyLnR5cGUpP3I6c319fTtmdW5jdGlvbiBqaShlLHQpe3JldHVybiBkKGUpP2Uuc29tZShlPT5qaShlLHQpKTpfKGUpP2Uuc3BsaXQoYCxgKS5pbmNsdWRlcyh0KTpoKGUpPyhlLmxhc3RJbmRleD0wLGUudGVzdCh0KSk6ITF9ZnVuY3Rpb24gTWkoZSx0KXtQaShlLGBhYCx0KX1mdW5jdGlvbiBOaShlLHQpe1BpKGUsYGRhYCx0KX1mdW5jdGlvbiBQaShlLHQsbj1KKXtsZXQgcj1lLl9fd2RjfHw9KCk9PntsZXQgdD1uO2Zvcig7dDspe2lmKHQuaXNEZWFjdGl2YXRlZClyZXR1cm47dD10LnBhcmVudH1yZXR1cm4gZSgpfTtpZihSaSh0LHIsbiksbil7bGV0IGU9bi5wYXJlbnQ7Zm9yKDtlJiZlLnBhcmVudDspa2koZS5wYXJlbnQudm5vZGUpJiZGaShyLHQsbixlKSxlPWUucGFyZW50fX1mdW5jdGlvbiBGaShlLHQsbixyKXtsZXQgaT1SaSh0LGUsciwhMCk7R2koKCk9PntjKHJbdF0saSl9LG4pfWZ1bmN0aW9uIElpKGUpe2Uuc2hhcGVGbGFnJj0tMjU3LGUuc2hhcGVGbGFnJj0tNTEzfWZ1bmN0aW9uIExpKGUpe3JldHVybiBlLnNoYXBlRmxhZyYxMjg/ZS5zc0NvbnRlbnQ6ZX1mdW5jdGlvbiBSaShlLHQsbj1KLHI9ITEpe2lmKG4pe2xldCBpPW5bZV18fChuW2VdPVtdKSxhPXQuX193ZWh8fD0oLi4ucik9PntXZSgpO2xldCBpPUFzKG4pLGE9am4odCxuLGUscik7cmV0dXJuIGkoKSxHZSgpLGF9O3JldHVybiByP2kudW5zaGlmdChhKTppLnB1c2goYSksYX19dmFyIHppPWU9Pih0LG49Sik9PnsoIU5zfHxlPT09YHNwYCkmJlJpKGUsKC4uLmUpPT50KC4uLmUpLG4pfSxCaT16aShgYm1gKSxWaT16aShgbWApLEhpPXppKGBidWApLFVpPXppKGB1YCksV2k9emkoYGJ1bWApLEdpPXppKGB1bWApLEtpPXppKGBzcGApLHFpPXppKGBydGdgKSxKaT16aShgcnRjYCk7ZnVuY3Rpb24gWWkoZSx0PUope1JpKGBlY2AsZSx0KX12YXIgWGk9YGNvbXBvbmVudHNgLFppPWBkaXJlY3RpdmVzYDtmdW5jdGlvbiBRaShlLHQpe3JldHVybiBuYShYaSxlLCEwLHQpfHxlfXZhciAkaT1TeW1ib2wuZm9yKGB2LW5kY2ApO2Z1bmN0aW9uIGVhKGUpe3JldHVybiBfKGUpP25hKFhpLGUsITEpfHxlOmV8fCRpfWZ1bmN0aW9uIHRhKGUpe3JldHVybiBuYShaaSxlKX1mdW5jdGlvbiBuYShlLHQsbj0hMCxyPSExKXtsZXQgaT1VfHxKO2lmKGkpe2xldCBuPWkudHlwZTtpZihlPT09WGkpe2xldCBlPUdzKG4sITEpO2lmKGUmJihlPT09dHx8ZT09PU8odCl8fGU9PT1BKE8odCkpKSlyZXR1cm4gbn1sZXQgYT1yYShpW2VdfHxuW2VdLHQpfHxyYShpLmFwcENvbnRleHRbZV0sdCk7cmV0dXJuIWEmJnI/bjphfX1mdW5jdGlvbiByYShlLHQpe3JldHVybiBlJiYoZVt0XXx8ZVtPKHQpXXx8ZVtBKE8odCkpXSl9ZnVuY3Rpb24gaWEoZSx0LG4scil7bGV0IGksYT1uJiZuW3JdLG89ZChlKTtpZihvfHxfKGUpKXtsZXQgbj1vJiZVdChlKSxyPSExLHM9ITE7biYmKHI9IUd0KGUpLHM9V3QoZSksZT1pdChlKSksaT1BcnJheShlLmxlbmd0aCk7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bisrKWlbbl09dChyP3M/WXQoSnQoZVtuXSkpOkp0KGVbbl0pOmVbbl0sbix2b2lkIDAsYSYmYVtuXSl9ZWxzZSBpZih0eXBlb2YgZT09YG51bWJlcmApe2k9QXJyYXkoZSk7Zm9yKGxldCBuPTA7bjxlO24rKylpW25dPXQobisxLG4sdm9pZCAwLGEmJmFbbl0pfWVsc2UgaWYoeShlKSl7aWYoZVtTeW1ib2wuaXRlcmF0b3JdKWk9QXJyYXkuZnJvbShlLChlLG4pPT50KGUsbix2b2lkIDAsYSYmYVtuXSkpO2Vsc2V7bGV0IG49T2JqZWN0LmtleXMoZSk7aT1BcnJheShuLmxlbmd0aCk7Zm9yKGxldCByPTAsbz1uLmxlbmd0aDtyPG87cisrKXtsZXQgbz1uW3JdO2lbcl09dChlW29dLG8scixhJiZhW3JdKX19fWVsc2UgaT1bXTtyZXR1cm4gbiYmKG5bcl09aSksaX1mdW5jdGlvbiBhYShlLHQpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgcj10W25dO2lmKGQocikpZm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0KyspZVtyW3RdLm5hbWVdPXJbdF0uZm47ZWxzZSByJiYoZVtyLm5hbWVdPXIua2V5PyguLi5lKT0+e2xldCB0PXIuZm4oLi4uZSk7cmV0dXJuIHQmJih0LmtleT1yLmtleSksdH06ci5mbil9cmV0dXJuIGV9ZnVuY3Rpb24gb2EoZSx0LG4scixpLGEpe2lmKG4/Pz17fSxVLmNlfHxVLnBhcmVudCYmRWkoVS5wYXJlbnQpJiZVLnBhcmVudC5jZSl7bGV0IGU9YSE9bnVsbCYmbi5rZXk9PW51bGw/cyh7fSxuLHtrZXk6YX0pOm4saT1PYmplY3Qua2V5cyhlKS5sZW5ndGg+MDtyZXR1cm4gdCE9PSJkZWZhdWx0IiYmKGUubmFtZT10KSx0cygpLHNzKEcsbnVsbCxbcShgc2xvdGAsZSxyJiZyKCkpXSxpPy0yOjY0KX1sZXQgbz1lW3RdO28mJm8uX2MmJihvLl9kPSExKTtsZXQgYz0kby5sZW5ndGg7dHMoKTtsZXQgbDt0cnl7bGV0IGk9byYmc2EobyhuKSkscz1uLmtleXx8YXx8aSYmaS5rZXk7bD1zcyhHLHtrZXk6KHMmJiF2KHMpP3M6YF8ke3R9YCkrKCFpJiZyP2BfZmJgOmBgKX0saXx8KHI/cigpOltdKSxpJiZlLl89PT0xPzY0Oi0yKX1jYXRjaChlKXtmb3IobGV0IGU9JG8ubGVuZ3RoO2U+YztlLS0pbnMoKTt0aHJvdyBlfWZpbmFsbHl7byYmby5fYyYmKG8uX2Q9ITApfXJldHVybiFpJiZsLnNjb3BlSWQmJihsLnNsb3RTY29wZUlkcz1bbC5zY29wZUlkK2Atc2BdKSxsfWZ1bmN0aW9uIHNhKGUpe3JldHVybiBlLnNvbWUoZT0+IWNzKGUpfHwhKGUudHlwZT09PUt8fGUudHlwZT09PUcmJiFzYShlLmNoaWxkcmVuKSkpP2U6bnVsbH1mdW5jdGlvbiBjYShlLHQpe2xldCBuPXt9O2ZvcihsZXQgciBpbiBlKW5bdCYmL1tBLVpdLy50ZXN0KHIpP2Bvbjoke3J9YDpuZShyKV09ZVtyXTtyZXR1cm4gbn12YXIgbGE9ZT0+ZT9NcyhlKT9XcyhlKTpsYShlLnBhcmVudCk6bnVsbCx1YT1zKE9iamVjdC5jcmVhdGUobnVsbCkseyQ6ZT0+ZSwkZWw6ZT0+ZS52bm9kZS5lbCwkZGF0YTplPT5lLmRhdGEsJHByb3BzOmU9PmUucHJvcHMsJGF0dHJzOmU9PmUuYXR0cnMsJHNsb3RzOmU9PmUuc2xvdHMsJHJlZnM6ZT0+ZS5yZWZzLCRwYXJlbnQ6ZT0+bGEoZS5wYXJlbnQpLCRyb290OmU9PmxhKGUucm9vdCksJGhvc3Q6ZT0+ZS5jZSwkZW1pdDplPT5lLmVtaXQsJG9wdGlvbnM6ZT0+UGEoZSksJGZvcmNlVXBkYXRlOmU9PmUuZnx8PSgpPT57VW4oZS51cGRhdGUpfSwkbmV4dFRpY2s6ZT0+ZS5ufHw9Vm4uYmluZChlLnByb3h5KSwkd2F0Y2g6ZT0+X3IuYmluZChlKX0pLGRhPShlLG4pPT5lIT09dCYmIWUuX19pc1NjcmlwdFNldHVwJiZ1KGUsbiksZmE9e2dldCh7XzplfSxuKXtpZihuPT09YF9fdl9za2lwYClyZXR1cm4hMDtsZXR7Y3R4OnIsc2V0dXBTdGF0ZTppLGRhdGE6YSxwcm9wczpvLGFjY2Vzc0NhY2hlOnMsdHlwZTpjLGFwcENvbnRleHQ6bH09ZTtpZihuWzBdIT09YCRgKXtsZXQgZT1zW25dO2lmKGUhPT12b2lkIDApc3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gaVtuXTtjYXNlIDI6cmV0dXJuIGFbbl07Y2FzZSA0OnJldHVybiByW25dO2Nhc2UgMzpyZXR1cm4gb1tuXX1lbHNlIGlmKGRhKGksbikpcmV0dXJuIHNbbl09MSxpW25dO2Vsc2UgaWYoYSE9PXQmJnUoYSxuKSlyZXR1cm4gc1tuXT0yLGFbbl07ZWxzZSBpZih1KG8sbikpcmV0dXJuIHNbbl09MyxvW25dO2Vsc2UgaWYociE9PXQmJnUocixuKSlyZXR1cm4gc1tuXT00LHJbbl07ZWxzZSBrYSYmKHNbbl09MCl9bGV0IGQ9dWFbbl0sZixwO2lmKGQpcmV0dXJuIG49PT1gJGF0dHJzYCYmQihlLmF0dHJzLGBnZXRgLGBgKSxkKGUpO2lmKChmPWMuX19jc3NNb2R1bGVzKSYmKGY9ZltuXSkpcmV0dXJuIGY7aWYociE9PXQmJnUocixuKSlyZXR1cm4gc1tuXT00LHJbbl07aWYocD1sLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLHUocCxuKSlyZXR1cm4gcFtuXX0sc2V0KHtfOmV9LG4scil7bGV0e2RhdGE6aSxzZXR1cFN0YXRlOmEsY3R4Om99PWU7cmV0dXJuIGRhKGEsbik/KGFbbl09ciwhMCk6aSE9PXQmJnUoaSxuKT8oaVtuXT1yLCEwKTp1KGUucHJvcHMsbil8fG5bMF09PT1gJGAmJm4uc2xpY2UoMSlpbiBlPyExOihvW25dPXIsITApfSxoYXMoe186e2RhdGE6ZSxzZXR1cFN0YXRlOm4sYWNjZXNzQ2FjaGU6cixjdHg6aSxhcHBDb250ZXh0OmEscHJvcHM6byx0eXBlOnN9fSxjKXtsZXQgbDtyZXR1cm4hIShyW2NdfHxlIT09dCYmY1swXSE9PWAkYCYmdShlLGMpfHxkYShuLGMpfHx1KG8sYyl8fHUoaSxjKXx8dSh1YSxjKXx8dShhLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLGMpfHwobD1zLl9fY3NzTW9kdWxlcykmJmxbY10pfSxkZWZpbmVQcm9wZXJ0eShlLHQsbil7cmV0dXJuIG4uZ2V0PT1udWxsP3UobixgdmFsdWVgKSYmdGhpcy5zZXQoZSx0LG4udmFsdWUsbnVsbCk6ZS5fLmFjY2Vzc0NhY2hlW3RdPTAsUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbil9fSxwYT1zKHt9LGZhLHtnZXQoZSx0KXtpZih0IT09U3ltYm9sLnVuc2NvcGFibGVzKXJldHVybiBmYS5nZXQoZSx0LGUpfSxoYXMoZSx0KXtyZXR1cm4gdFswXSE9PWBfYCYmIVAodCl9fSk7ZnVuY3Rpb24gbWEoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBoYSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIGdhKGUpe31mdW5jdGlvbiBfYShlKXt9ZnVuY3Rpb24gdmEoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiB5YSgpe31mdW5jdGlvbiBiYShlLHQpe3JldHVybiBudWxsfWZ1bmN0aW9uIHhhKCl7cmV0dXJuIENhKGB1c2VTbG90c2ApLnNsb3RzfWZ1bmN0aW9uIFNhKCl7cmV0dXJuIENhKGB1c2VBdHRyc2ApLmF0dHJzfWZ1bmN0aW9uIENhKGUpe2xldCB0PVkoKTtyZXR1cm4gdC5zZXR1cENvbnRleHR8fD1Vcyh0KX1mdW5jdGlvbiB3YShlKXtyZXR1cm4gZChlKT9lLnJlZHVjZSgoZSx0KT0+KGVbdF09bnVsbCxlKSx7fSk6ZX1mdW5jdGlvbiBUYShlLHQpe2xldCBuPXdhKGUpO2ZvcihsZXQgZSBpbiB0KXtpZihlLnN0YXJ0c1dpdGgoYF9fc2tpcGApKWNvbnRpbnVlO2xldCByPW5bZV07cj9kKHIpfHxnKHIpP3I9bltlXT17dHlwZTpyLGRlZmF1bHQ6dFtlXX06ci5kZWZhdWx0PXRbZV06cj09PW51bGwmJihyPW5bZV09e2RlZmF1bHQ6dFtlXX0pLHImJnRbYF9fc2tpcF8ke2V9YF0mJihyLnNraXBGYWN0b3J5PSEwKX1yZXR1cm4gbn1mdW5jdGlvbiBFYShlLHQpe3JldHVybiFlfHwhdD9lfHx0OmQoZSkmJmQodCk/ZS5jb25jYXQodCk6cyh7fSx3YShlKSx3YSh0KSl9ZnVuY3Rpb24gRGEoZSx0KXtsZXQgbj17fTtmb3IobGV0IHIgaW4gZSl0LmluY2x1ZGVzKHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZVtyXX0pO3JldHVybiBufWZ1bmN0aW9uIE9hKGUpe2xldCB0PVkoKSxuPU5zLHI9ZSgpO2pzKCksbiYma3MoITEpO2xldCBpPSgpPT57QXModCksbiYma3MoITApfSxhPSgpPT57WSgpIT09dCYmdC5zY29wZS5vZmYoKSxqcygpLG4mJmtzKCExKX07cmV0dXJuIGIocikmJihyPXIuY2F0Y2goZT0+e3Rocm93IGkoKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGEpKSxlfSkpLFtyLCgpPT57aSgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYSl9XX12YXIga2E9ITA7ZnVuY3Rpb24gQWEoZSl7bGV0IHQ9UGEoZSksbj1lLnByb3h5LGk9ZS5jdHg7a2E9ITEsdC5iZWZvcmVDcmVhdGUmJk1hKHQuYmVmb3JlQ3JlYXRlLGUsYGJjYCk7bGV0e2RhdGE6YSxjb21wdXRlZDpvLG1ldGhvZHM6cyx3YXRjaDpjLHByb3ZpZGU6bCxpbmplY3Q6dSxjcmVhdGVkOmYsYmVmb3JlTW91bnQ6cCxtb3VudGVkOm0sYmVmb3JlVXBkYXRlOmgsdXBkYXRlZDpfLGFjdGl2YXRlZDp2LGRlYWN0aXZhdGVkOmIsYmVmb3JlRGVzdHJveTp4LGJlZm9yZVVubW91bnQ6UyxkZXN0cm95ZWQ6Qyx1bm1vdW50ZWQ6dyxyZW5kZXI6VCxyZW5kZXJUcmFja2VkOkUscmVuZGVyVHJpZ2dlcmVkOkQsZXJyb3JDYXB0dXJlZDplZSxzZXJ2ZXJQcmVmZXRjaDpPLGV4cG9zZTp0ZSxpbmhlcml0QXR0cnM6ayxjb21wb25lbnRzOkEsZGlyZWN0aXZlczpuZSxmaWx0ZXJzOmp9PXQ7aWYodSYmamEodSxpLG51bGwpLHMpZm9yKGxldCBlIGluIHMpe2xldCB0PXNbZV07Zyh0KSYmKGlbZV09dC5iaW5kKG4pKX1pZihhKXtsZXQgdD1hLmNhbGwobixuKTt5KHQpJiYoZS5kYXRhPVJ0KHQpKX1pZihrYT0hMCxvKWZvcihsZXQgZSBpbiBvKXtsZXQgdD1vW2VdLGE9cXMoe2dldDpnKHQpP3QuYmluZChuLG4pOmcodC5nZXQpP3QuZ2V0LmJpbmQobixuKTpyLHNldDohZyh0KSYmZyh0LnNldCk/dC5zZXQuYmluZChuKTpyfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5hLnZhbHVlLHNldDplPT5hLnZhbHVlPWV9KX1pZihjKWZvcihsZXQgZSBpbiBjKU5hKGNbZV0saSxuLGUpO2lmKGwpe2xldCBlPWcobCk/bC5jYWxsKG4pOmw7UmVmbGVjdC5vd25LZXlzKGUpLmZvckVhY2godD0+e3NyKHQsZVt0XSl9KX1mJiZNYShmLGUsYGNgKTtmdW5jdGlvbiBNKGUsdCl7ZCh0KT90LmZvckVhY2godD0+ZSh0LmJpbmQobikpKTp0JiZlKHQuYmluZChuKSl9aWYoTShCaSxwKSxNKFZpLG0pLE0oSGksaCksTShVaSxfKSxNKE1pLHYpLE0oTmksYiksTShZaSxlZSksTShKaSxFKSxNKHFpLEQpLE0oV2ksUyksTShHaSx3KSxNKEtpLE8pLGQodGUpKXtpZih0ZS5sZW5ndGgpe2xldCB0PWUuZXhwb3NlZHx8PXt9O3RlLmZvckVhY2goZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2dldDooKT0+bltlXSxzZXQ6dD0+bltlXT10LGVudW1lcmFibGU6ITB9KX0pfWVsc2UgZS5leHBvc2VkfHw9e319VCYmZS5yZW5kZXI9PT1yJiYoZS5yZW5kZXI9VCksayE9bnVsbCYmKGUuaW5oZXJpdEF0dHJzPWspLEEmJihlLmNvbXBvbmVudHM9QSksbmUmJihlLmRpcmVjdGl2ZXM9bmUpLE8mJlhyKGUpfWZ1bmN0aW9uIGphKGUsdCxuPXIpe2QoZSkmJihlPXphKGUpKTtmb3IobGV0IG4gaW4gZSl7bGV0IHI9ZVtuXSxpO2k9eShyKT9gZGVmYXVsdGBpbiByP2NyKHIuZnJvbXx8bixyLmRlZmF1bHQsITApOmNyKHIuZnJvbXx8bik6Y3IociksSChpKT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmkudmFsdWUsc2V0OmU9PmkudmFsdWU9ZX0pOnRbbl09aX19ZnVuY3Rpb24gTWEoZSx0LG4pe2puKGQoZSk/ZS5tYXAoZT0+ZS5iaW5kKHQucHJveHkpKTplLmJpbmQodC5wcm94eSksdCxuKX1mdW5jdGlvbiBOYShlLHQsbixyKXtsZXQgaT1yLmluY2x1ZGVzKGAuYCk/dnIobixyKTooKT0+bltyXTtpZihfKGUpKXtsZXQgbj10W2VdO2cobikmJmhyKGksbil9ZWxzZSBpZihnKGUpKWhyKGksZS5iaW5kKG4pKTtlbHNlIGlmKHkoZSkpe2lmKGQoZSkpZS5mb3JFYWNoKGU9Pk5hKGUsdCxuLHIpKTtlbHNle2xldCByPWcoZS5oYW5kbGVyKT9lLmhhbmRsZXIuYmluZChuKTp0W2UuaGFuZGxlcl07ZyhyKSYmaHIoaSxyLGUpfX19ZnVuY3Rpb24gUGEoZSl7bGV0IHQ9ZS50eXBlLHttaXhpbnM6bixleHRlbmRzOnJ9PXQse21peGluczppLG9wdGlvbnNDYWNoZTphLGNvbmZpZzp7b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOm99fT1lLmFwcENvbnRleHQscz1hLmdldCh0KSxjO3JldHVybiBzP2M9czohaS5sZW5ndGgmJiFuJiYhcj9jPXQ6KGM9e30saS5sZW5ndGgmJmkuZm9yRWFjaChlPT5GYShjLGUsbywhMCkpLEZhKGMsdCxvKSkseSh0KSYmYS5zZXQodCxjKSxjfWZ1bmN0aW9uIEZhKGUsdCxuLHI9ITEpe2xldHttaXhpbnM6aSxleHRlbmRzOmF9PXQ7YSYmRmEoZSxhLG4sITApLGkmJmkuZm9yRWFjaCh0PT5GYShlLHQsbiwhMCkpO2ZvcihsZXQgaSBpbiB0KWlmKCEociYmaT09PWBleHBvc2VgKSl7bGV0IHI9SWFbaV18fG4mJm5baV07ZVtpXT1yP3IoZVtpXSx0W2ldKTp0W2ldfXJldHVybiBlfXZhciBJYT17ZGF0YTpMYSxwcm9wczpIYSxlbWl0czpIYSxtZXRob2RzOlZhLGNvbXB1dGVkOlZhLGJlZm9yZUNyZWF0ZTpCYSxjcmVhdGVkOkJhLGJlZm9yZU1vdW50OkJhLG1vdW50ZWQ6QmEsYmVmb3JlVXBkYXRlOkJhLHVwZGF0ZWQ6QmEsYmVmb3JlRGVzdHJveTpCYSxiZWZvcmVVbm1vdW50OkJhLGRlc3Ryb3llZDpCYSx1bm1vdW50ZWQ6QmEsYWN0aXZhdGVkOkJhLGRlYWN0aXZhdGVkOkJhLGVycm9yQ2FwdHVyZWQ6QmEsc2VydmVyUHJlZmV0Y2g6QmEsY29tcG9uZW50czpWYSxkaXJlY3RpdmVzOlZhLHdhdGNoOlVhLHByb3ZpZGU6TGEsaW5qZWN0OlJhfTtmdW5jdGlvbiBMYShlLHQpe3JldHVybiB0P2U/ZnVuY3Rpb24oKXtyZXR1cm4gcyhnKGUpP2UuY2FsbCh0aGlzLHRoaXMpOmUsZyh0KT90LmNhbGwodGhpcyx0aGlzKTp0KX06dDplfWZ1bmN0aW9uIFJhKGUsdCl7cmV0dXJuIFZhKHphKGUpLHphKHQpKX1mdW5jdGlvbiB6YShlKXtpZihkKGUpKXtsZXQgdD17fTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0W2Vbbl1dPWVbbl07cmV0dXJuIHR9cmV0dXJuIGV9ZnVuY3Rpb24gQmEoZSx0KXtyZXR1cm4gZT9bLi4ubmV3IFNldChbXS5jb25jYXQoZSx0KSldOnR9ZnVuY3Rpb24gVmEoZSx0KXtyZXR1cm4gZT9zKE9iamVjdC5jcmVhdGUobnVsbCksZSx0KTp0fWZ1bmN0aW9uIEhhKGUsdCl7cmV0dXJuIGU/ZChlKSYmZCh0KT9bLi4ubmV3IFNldChbLi4uZSwuLi50XSldOnMoT2JqZWN0LmNyZWF0ZShudWxsKSx3YShlKSx3YSh0Pz97fSkpOnR9ZnVuY3Rpb24gVWEoZSx0KXtpZighZSlyZXR1cm4gdDtpZighdClyZXR1cm4gZTtsZXQgbj1zKE9iamVjdC5jcmVhdGUobnVsbCksZSk7Zm9yKGxldCByIGluIHQpbltyXT1CYShlW3JdLHRbcl0pO3JldHVybiBufWZ1bmN0aW9uIFdhKCl7cmV0dXJue2FwcDpudWxsLGNvbmZpZzp7aXNOYXRpdmVUYWc6aSxwZXJmb3JtYW5jZTohMSxnbG9iYWxQcm9wZXJ0aWVzOnt9LG9wdGlvbk1lcmdlU3RyYXRlZ2llczp7fSxlcnJvckhhbmRsZXI6dm9pZCAwLHdhcm5IYW5kbGVyOnZvaWQgMCxjb21waWxlck9wdGlvbnM6e319LG1peGluczpbXSxjb21wb25lbnRzOnt9LGRpcmVjdGl2ZXM6e30scHJvdmlkZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxvcHRpb25zQ2FjaGU6bmV3IFdlYWtNYXAscHJvcHNDYWNoZTpuZXcgV2Vha01hcCxlbWl0c0NhY2hlOm5ldyBXZWFrTWFwfX12YXIgR2E9MDtmdW5jdGlvbiBLYShlLHQpe3JldHVybiBmdW5jdGlvbihuLHI9bnVsbCl7ZyhuKXx8KG49cyh7fSxuKSksciE9bnVsbCYmIXkocikmJihyPW51bGwpO2xldCBpPVdhKCksYT1uZXcgV2Vha1NldCxvPVtdLGM9ITEsbD1pLmFwcD17X3VpZDpHYSsrLF9jb21wb25lbnQ6bixfcHJvcHM6cixfY29udGFpbmVyOm51bGwsX2NvbnRleHQ6aSxfaW5zdGFuY2U6bnVsbCx2ZXJzaW9uOlFzLGdldCBjb25maWcoKXtyZXR1cm4gaS5jb25maWd9LHNldCBjb25maWcoZSl7fSx1c2UoZSwuLi50KXtyZXR1cm4gYS5oYXMoZSl8fChlJiZnKGUuaW5zdGFsbCk/KGEuYWRkKGUpLGUuaW5zdGFsbChsLC4uLnQpKTpnKGUpJiYoYS5hZGQoZSksZShsLC4uLnQpKSksbH0sbWl4aW4oZSl7cmV0dXJuIGkubWl4aW5zLmluY2x1ZGVzKGUpfHxpLm1peGlucy5wdXNoKGUpLGx9LGNvbXBvbmVudChlLHQpe3JldHVybiB0PyhpLmNvbXBvbmVudHNbZV09dCxsKTppLmNvbXBvbmVudHNbZV19LGRpcmVjdGl2ZShlLHQpe3JldHVybiB0PyhpLmRpcmVjdGl2ZXNbZV09dCxsKTppLmRpcmVjdGl2ZXNbZV19LG1vdW50KGEsbyxzKXtpZighYyl7bGV0IHU9bC5fY2VWTm9kZXx8cShuLHIpO3JldHVybiB1LmFwcENvbnRleHQ9aSxzPT09ITA/cz1gc3ZnYDpzPT09ITEmJihzPXZvaWQgMCksbyYmdD90KHUsYSk6ZSh1LGEscyksYz0hMCxsLl9jb250YWluZXI9YSxhLl9fdnVlX2FwcF9fPWwsV3ModS5jb21wb25lbnQpfX0sb25Vbm1vdW50KGUpe28ucHVzaChlKX0sdW5tb3VudCgpe2MmJihqbihvLGwuX2luc3RhbmNlLDE2KSxlKG51bGwsbC5fY29udGFpbmVyKSxkZWxldGUgbC5fY29udGFpbmVyLl9fdnVlX2FwcF9fKX0scHJvdmlkZShlLHQpe3JldHVybiBpLnByb3ZpZGVzW2VdPXQsbH0scnVuV2l0aENvbnRleHQoZSl7bGV0IHQ9cWE7cWE9bDt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e3FhPXR9fX07cmV0dXJuIGx9fXZhciBxYT1udWxsO2Z1bmN0aW9uIEphKGUsbixyPXQpe2xldCBpPVkoKSxhPU8obiksbz1rKG4pLHM9WWEoZSxhKSxjPXNuKChzLGMpPT57bGV0IGwsdT10LGQ7cmV0dXJuIG1yKCgpPT57bGV0IHQ9ZVthXTtqKGwsdCkmJihsPXQsYygpKX0pLHtnZXQoKXtyZXR1cm4gcygpLHIuZ2V0P3IuZ2V0KGwpOmx9LHNldChlKXtsZXQgcz1yLnNldD9yLnNldChlKTplO2lmKCFqKHMsbCkmJiEodSE9PXQmJmooZSx1KSkpcmV0dXJuO2xldCBmPWkudm5vZGUucHJvcHMscD0hIShmJiYobiBpbiBmfHxhIGluIGZ8fG8gaW4gZikmJihgb25VcGRhdGU6JHtufWBpbiBmfHxgb25VcGRhdGU6JHthfWBpbiBmfHxgb25VcGRhdGU6JHtvfWBpbiBmKSk7cHx8KGw9ZSxjKCkpLGkuZW1pdChgdXBkYXRlOiR7bn1gLHMpLGooZSx1KSYmKGooZSxzKSYmIWoocyxkKXx8cCYmdSE9PXQmJiFqKHMsbCkpJiZjKCksdT1lLGQ9c319fSk7cmV0dXJuIGNbU3ltYm9sLml0ZXJhdG9yXT0oKT0+e2xldCBlPTA7cmV0dXJue25leHQoKXtyZXR1cm4gZTwyP3t2YWx1ZTplKys/c3x8dDpjLGRvbmU6ITF9Ontkb25lOiEwfX19fSxjfXZhciBZYT0oZSx0KT0+dD09PWBtb2RlbFZhbHVlYHx8dD09PWBtb2RlbC12YWx1ZWA/ZS5tb2RlbE1vZGlmaWVyczplW2Ake3R9TW9kaWZpZXJzYF18fGVbYCR7Tyh0KX1Nb2RpZmllcnNgXXx8ZVtgJHtrKHQpfU1vZGlmaWVyc2BdO2Z1bmN0aW9uIFhhKGUsbiwuLi5yKXtpZihlLmlzVW5tb3VudGVkKXJldHVybjtsZXQgaT1lLnZub2RlLnByb3BzfHx0LGE9cixvPW4uc3RhcnRzV2l0aChgdXBkYXRlOmApLHM9byYmWWEoaSxuLnNsaWNlKDcpKTtzJiYocy50cmltJiYoYT1yLm1hcChlPT5fKGUpP2UudHJpbSgpOmUpKSxzLm51bWJlciYmKGE9ci5tYXAocmUpKSk7bGV0IGMsbD1pW2M9bmUobildfHxpW2M9bmUoTyhuKSldOyFsJiZvJiYobD1pW2M9bmUoayhuKSldKSxsJiZqbihsLGUsNixhKTtsZXQgdT1pW2MrYE9uY2VgXTtpZih1KXtpZighZS5lbWl0dGVkKWUuZW1pdHRlZD17fTtlbHNlIGlmKGUuZW1pdHRlZFtjXSlyZXR1cm47ZS5lbWl0dGVkW2NdPSEwLGpuKHUsZSw2LGEpfX12YXIgWmE9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gUWEoZSx0LG49ITEpe2xldCByPW4/WmE6dC5lbWl0c0NhY2hlLGk9ci5nZXQoZSk7aWYoaSE9PXZvaWQgMClyZXR1cm4gaTtsZXQgYT1lLmVtaXRzLG89e30sYz0hMTtpZighZyhlKSl7bGV0IHI9ZT0+e2xldCBuPVFhKGUsdCwhMCk7biYmKGM9ITAscyhvLG4pKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChyKSxlLmV4dGVuZHMmJnIoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChyKX1yZXR1cm4hYSYmIWM/KHkoZSkmJnIuc2V0KGUsbnVsbCksbnVsbCk6KGQoYSk/YS5mb3JFYWNoKGU9Pm9bZV09bnVsbCk6cyhvLGEpLHkoZSkmJnIuc2V0KGUsbyksbyl9ZnVuY3Rpb24gJGEoZSx0KXtyZXR1cm4hZXx8IWEodCk/ITE6KHQ9dC5zbGljZSgyKSx0PXQ9PT1gT25jZWA/dDp0LnJlcGxhY2UoL09uY2UkLyxgYCksdShlLHRbMF0udG9Mb3dlckNhc2UoKSt0LnNsaWNlKDEpKXx8dShlLGsodCkpfHx1KGUsdCkpfWZ1bmN0aW9uIGVvKGUpe2xldHt0eXBlOnQsdm5vZGU6bixwcm94eTpyLHdpdGhQcm94eTppLHByb3BzT3B0aW9uczpbYV0sc2xvdHM6cyxhdHRyczpjLGVtaXQ6bCxyZW5kZXI6dSxyZW5kZXJDYWNoZTpkLHByb3BzOmYsZGF0YTpwLHNldHVwU3RhdGU6bSxjdHg6aCxpbmhlcml0QXR0cnM6Z309ZSxfPWVyKGUpLHYseTt0cnl7aWYobi5zaGFwZUZsYWcmNCl7bGV0IGU9aXx8cix0PWU7dj1icyh1LmNhbGwodCxlLGQsZixtLHAsaCkpLHk9Y31lbHNle2xldCBlPXQ7dj1icyhlLmxlbmd0aD4xP2UoZix7YXR0cnM6YyxzbG90czpzLGVtaXQ6bH0pOmUoZixudWxsKSkseT10LnByb3BzP2M6bm8oYyl9fWNhdGNoKHQpeyRvLmxlbmd0aD0wLE1uKHQsZSwxKSx2PXEoSyl9bGV0IGI9djtpZih5JiZnIT09ITEpe2xldCBlPU9iamVjdC5rZXlzKHkpLHtzaGFwZUZsYWc6dH09YjtlLmxlbmd0aCYmdCY3JiYoYSYmZS5zb21lKG8pJiYoeT1ybyh5LGEpKSxiPWdzKGIseSwhMSwhMCkpfXJldHVybiBuLmRpcnMmJihiPWdzKGIsbnVsbCwhMSwhMCksYi5kaXJzPWIuZGlycz9iLmRpcnMuY29uY2F0KG4uZGlycyk6bi5kaXJzKSxuLnRyYW5zaXRpb24mJktyKHhyKGIudHlwZSkmJkdyKGIpfHxiLG4udHJhbnNpdGlvbiksdj1iLGVyKF8pLHZ9ZnVuY3Rpb24gdG8oZSx0PSEwKXtsZXQgbjtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IHI9ZVt0XTtpZihjcyhyKSl7aWYoci50eXBlIT09S3x8ci5jaGlsZHJlbj09PWB2LWlmYCl7aWYobilyZXR1cm47bj1yfX1lbHNlIHJldHVybn1yZXR1cm4gbn12YXIgbm89ZT0+e2xldCB0O2ZvcihsZXQgbiBpbiBlKShuPT09YGNsYXNzYHx8bj09PWBzdHlsZWB8fGEobikpJiYoKHR8fD17fSlbbl09ZVtuXSk7cmV0dXJuIHR9LHJvPShlLHQpPT57bGV0IG49e307Zm9yKGxldCByIGluIGUpKCFvKHIpfHwhKHIuc2xpY2UoOSlpbiB0KSkmJihuW3JdPWVbcl0pO3JldHVybiBufTtmdW5jdGlvbiBpbyhlLHQsbil7bGV0e3Byb3BzOnIsY2hpbGRyZW46aSxjb21wb25lbnQ6YX09ZSx7cHJvcHM6byxjaGlsZHJlbjpzLHBhdGNoRmxhZzpjfT10LGw9YS5lbWl0c09wdGlvbnM7aWYodC5kaXJzfHx0LnRyYW5zaXRpb24pcmV0dXJuITA7aWYobiYmYz49MCl7aWYoYyYxMDI0KXJldHVybiEwO2lmKGMmMTYpcmV0dXJuIHI/YW8ocixvLGwpOiEhbztpZihjJjgpe2xldCBlPXQuZHluYW1pY1Byb3BzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgbj1lW3RdO2lmKG9vKG8scixuKSYmISRhKGwsbikpcmV0dXJuITB9fX1lbHNlIHJldHVybihpfHxzKSYmKCFzfHwhcy4kc3RhYmxlKT8hMDpyPT09bz8hMTpyPyFvfHxhbyhyLG8sbCk6ISFvO3JldHVybiExfWZ1bmN0aW9uIGFvKGUsdCxuKXtsZXQgcj1PYmplY3Qua2V5cyh0KTtpZihyLmxlbmd0aCE9PU9iamVjdC5rZXlzKGUpLmxlbmd0aClyZXR1cm4hMDtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7bGV0IGE9cltpXTtpZihvbyh0LGUsYSkmJiEkYShuLGEpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIG9vKGUsdCxuKXtsZXQgcj1lW25dLGk9dFtuXTtyZXR1cm4gbj09PWBzdHlsZWAmJnkocikmJnkoaSk/IWhlKHIsaSk6ciE9PWl9ZnVuY3Rpb24gc28oe3Zub2RlOmUscGFyZW50OnQsc3VzcGVuc2U6bn0scil7Zm9yKDt0Oyl7bGV0IG49dC5zdWJUcmVlO2lmKG4uc3VzcGVuc2UmJm4uc3VzcGVuc2UuYWN0aXZlQnJhbmNoPT09ZSYmKG4uc3VzcGVuc2Uudm5vZGUuZWw9bi5lbD1yLGU9biksbj09PWUpKGU9dC52bm9kZSkuZWw9cix0PXQucGFyZW50O2Vsc2UgYnJlYWt9biYmbi5hY3RpdmVCcmFuY2g9PT1lJiYobi52bm9kZS5lbD1yKX12YXIgY289e30sbG89KCk9Pk9iamVjdC5jcmVhdGUoY28pLHVvPWU9Pk9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PWNvO2Z1bmN0aW9uIGZvKGUsdCxuLHI9ITEpe2xldCBpPXt9LGE9bG8oKTtlLnByb3BzRGVmYXVsdHM9T2JqZWN0LmNyZWF0ZShudWxsKSxtbyhlLHQsaSxhKTtmb3IobGV0IHQgaW4gZS5wcm9wc09wdGlvbnNbMF0pdCBpbiBpfHwoaVt0XT12b2lkIDApO2UucHJvcHM9bj9yP2k6enQoaSk6ZS50eXBlLnByb3BzP2k6YSxlLmF0dHJzPWF9ZnVuY3Rpb24gcG8oZSx0LG4scil7bGV0e3Byb3BzOmksYXR0cnM6YSx2bm9kZTp7cGF0Y2hGbGFnOm99fT1lLHM9VihpKSxbY109ZS5wcm9wc09wdGlvbnMsbD0hMTtpZigocnx8bz4wKSYmIShvJjE2KSl7aWYobyY4KXtsZXQgbj1lLnZub2RlLmR5bmFtaWNQcm9wcztmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7bGV0IG89bltyXTtpZigkYShlLmVtaXRzT3B0aW9ucyxvKSljb250aW51ZTtsZXQgZD10W29dO2lmKGMpe2lmKHUoYSxvKSlkIT09YVtvXSYmKGFbb109ZCxsPSEwKTtlbHNle2xldCB0PU8obyk7aVt0XT1obyhjLHMsdCxkLGUsITEpfX1lbHNlIGQhPT1hW29dJiYoYVtvXT1kLGw9ITApfX19ZWxzZXttbyhlLHQsaSxhKSYmKGw9ITApO2xldCByO2ZvcihsZXQgYSBpbiBzKSghdHx8IXUodCxhKSYmKChyPWsoYSkpPT09YXx8IXUodCxyKSkpJiYoYz9uJiYoblthXSE9PXZvaWQgMHx8bltyXSE9PXZvaWQgMCkmJihpW2FdPWhvKGMscyxhLHZvaWQgMCxlLCEwKSk6ZGVsZXRlIGlbYV0pO2lmKGEhPT1zKWZvcihsZXQgZSBpbiBhKSghdHx8IXUodCxlKSkmJihkZWxldGUgYVtlXSxsPSEwKX1sJiZ0dChlLmF0dHJzLGBzZXRgLGBgKX1mdW5jdGlvbiBtbyhlLG4scixpKXtsZXRbYSxvXT1lLnByb3BzT3B0aW9ucyxzPSExLGM7aWYobilmb3IobGV0IHQgaW4gbil7aWYoRSh0KSljb250aW51ZTtsZXQgbD1uW3RdLGQ7YSYmdShhLGQ9Tyh0KSk/IW98fCFvLmluY2x1ZGVzKGQpP3JbZF09bDooY3x8PXt9KVtkXT1sOiRhKGUuZW1pdHNPcHRpb25zLHQpfHwoISh0IGluIGkpfHxsIT09aVt0XSkmJihpW3RdPWwscz0hMCl9aWYobyl7bGV0IG49VihyKSxpPWN8fHQ7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2xldCBzPW9bdF07cltzXT1obyhhLG4scyxpW3NdLGUsIXUoaSxzKSl9fXJldHVybiBzfWZ1bmN0aW9uIGhvKGUsdCxuLHIsaSxhKXtsZXQgbz1lW25dO2lmKG8hPW51bGwpe2xldCBlPXUobyxgZGVmYXVsdGApO2lmKGUmJnI9PT12b2lkIDApe2xldCBlPW8uZGVmYXVsdDtpZihvLnR5cGUhPT1GdW5jdGlvbiYmIW8uc2tpcEZhY3RvcnkmJmcoZSkpe2xldHtwcm9wc0RlZmF1bHRzOmF9PWk7aWYobiBpbiBhKXI9YVtuXTtlbHNle2xldCBvPUFzKGkpO3I9YVtuXT1lLmNhbGwobnVsbCx0KSxvKCl9fWVsc2Ugcj1lO2kuY2UmJmkuY2UuX3NldFByb3AobixyKX1vWzBdJiYoYSYmIWU/cj0hMTpvWzFdJiYocj09PWBgfHxyPT09ayhuKSkmJihyPSEwKSl9cmV0dXJuIHJ9dmFyIGdvPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIF9vKGUscixpPSExKXtsZXQgYT1pP2dvOnIucHJvcHNDYWNoZSxvPWEuZ2V0KGUpO2lmKG8pcmV0dXJuIG87bGV0IGM9ZS5wcm9wcyxsPXt9LGY9W10scD0hMTtpZighZyhlKSl7bGV0IHQ9ZT0+e3A9ITA7bGV0W3Qsbl09X28oZSxyLCEwKTtzKGwsdCksbiYmZi5wdXNoKC4uLm4pfTshaSYmci5taXhpbnMubGVuZ3RoJiZyLm1peGlucy5mb3JFYWNoKHQpLGUuZXh0ZW5kcyYmdChlLmV4dGVuZHMpLGUubWl4aW5zJiZlLm1peGlucy5mb3JFYWNoKHQpfWlmKCFjJiYhcClyZXR1cm4geShlKSYmYS5zZXQoZSxuKSxuO2lmKGQoYykpZm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2xldCBuPU8oY1tlXSk7dm8obikmJihsW25dPXQpfWVsc2UgaWYoYylmb3IobGV0IGUgaW4gYyl7bGV0IHQ9TyhlKTtpZih2byh0KSl7bGV0IG49Y1tlXSxyPWxbdF09ZChuKXx8ZyhuKT97dHlwZTpufTpzKHt9LG4pLGk9ci50eXBlLGE9ITEsbz0hMDtpZihkKGkpKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7KytlKXtsZXQgdD1pW2VdLG49Zyh0KSYmdC5uYW1lO2lmKG49PT1gQm9vbGVhbmApe2E9ITA7YnJlYWt9bj09PWBTdHJpbmdgJiYobz0hMSl9ZWxzZSBhPWcoaSkmJmkubmFtZT09PWBCb29sZWFuYDtyWzBdPWEsclsxXT1vLChhfHx1KHIsYGRlZmF1bHRgKSkmJmYucHVzaCh0KX19bGV0IG09W2wsZl07cmV0dXJuIHkoZSkmJmEuc2V0KGUsbSksbX1mdW5jdGlvbiB2byhlKXtyZXR1cm4gZVswXSE9PWAkYCYmIUUoZSl9dmFyIHlvPWU9PmU9PT1gX2B8fGU9PT1gX2N0eGB8fGU9PT1gJHN0YWJsZWAsYm89ZT0+ZChlKT9lLm1hcChicyk6W2JzKGUpXSx4bz0oZSx0LG4pPT57aWYodC5fbilyZXR1cm4gdDtsZXQgcj1pcigoLi4uZSk9PmJvKHQoLi4uZSkpLG4pO3JldHVybiByLl9jPSExLHJ9LFNvPShlLHQsbik9PntsZXQgcj1lLl9jdHg7Zm9yKGxldCBuIGluIGUpe2lmKHlvKG4pKWNvbnRpbnVlO2xldCBpPWVbbl07aWYoZyhpKSl0W25dPXhvKG4saSxyKTtlbHNlIGlmKGkhPW51bGwpe2xldCBlPWJvKGkpO3Rbbl09KCk9PmV9fX0sQ289KGUsdCk9PntsZXQgbj1ibyh0KTtlLnNsb3RzLmRlZmF1bHQ9KCk9Pm59LHdvPShlLHQsbik9Pntmb3IobGV0IHIgaW4gdCkobnx8IXlvKHIpKSYmKGVbcl09dFtyXSl9LFRvPShlLHQsbik9PntsZXQgcj1lLnNsb3RzPWxvKCk7aWYoZS52bm9kZS5zaGFwZUZsYWcmMzIpe2xldCBlPXQuXztlPyh3byhyLHQsbiksbiYmTihyLGBfYCxlLCEwKSk6U28odCxyKX1lbHNlIHQmJkNvKGUsdCl9LEVvPShlLG4scik9PntsZXR7dm5vZGU6aSxzbG90czphfT1lLG89ITAscz10O2lmKGkuc2hhcGVGbGFnJjMyKXtsZXQgZT1uLl87ZT9yJiZlPT09MT9vPSExOndvKGEsbixyKToobz0hbi4kc3RhYmxlLFNvKG4sYSkpLHM9bn1lbHNlIG4mJihDbyhlLG4pLHM9e2RlZmF1bHQ6MX0pO2lmKG8pZm9yKGxldCBlIGluIGEpIXlvKGUpJiZzW2VdPT1udWxsJiZkZWxldGUgYVtlXX0sVz1KbztmdW5jdGlvbiBEbyhlKXtyZXR1cm4ga28oZSl9ZnVuY3Rpb24gT28oZSl7cmV0dXJuIGtvKGUsY2kpfWZ1bmN0aW9uIGtvKGUsaSl7bGV0IGE9b2UoKTthLl9fVlVFX189ITA7bGV0e2luc2VydDpvLHJlbW92ZTpzLHBhdGNoUHJvcDpjLGNyZWF0ZUVsZW1lbnQ6bCxjcmVhdGVUZXh0OnUsY3JlYXRlQ29tbWVudDpkLHNldFRleHQ6ZixzZXRFbGVtZW50VGV4dDpwLHBhcmVudE5vZGU6bSxuZXh0U2libGluZzpoLHNldFNjb3BlSWQ6Zz1yLGluc2VydFN0YXRpY0NvbnRlbnQ6X309ZSx2PShlLHQsbixyPW51bGwsaT1udWxsLGE9bnVsbCxvPXZvaWQgMCxzPW51bGwsYz0hIXQuZHluYW1pY0NoaWxkcmVuKT0+e2lmKGU9PT10KXJldHVybjtlJiYhbHMoZSx0KSYmKHI9ZGUoZSksY2UoZSxpLGEsITApLGU9bnVsbCksdC5wYXRjaEZsYWc9PT0tMiYmKGM9ITEsdC5keW5hbWljQ2hpbGRyZW49bnVsbCk7bGV0e3R5cGU6bCxyZWY6dSxzaGFwZUZsYWc6ZH09dDtzd2l0Y2gobCl7Y2FzZSBabzp5KGUsdCxuLHIpO2JyZWFrO2Nhc2UgSzpiKGUsdCxuLHIpO2JyZWFrO2Nhc2UgUW86ZT8/eCh0LG4scixvKTticmVhaztjYXNlIEc6QShlLHQsbixyLGksYSxvLHMsYyk7YnJlYWs7ZGVmYXVsdDpkJjE/dyhlLHQsbixyLGksYSxvLHMsYyk6ZCY2P25lKGUsdCxuLHIsaSxhLG8scyxjKTooZCY2NHx8ZCYxMjgpJiZsLnByb2Nlc3MoZSx0LG4scixpLGEsbyxzLGMsbWUpfXUhPW51bGwmJmk/ZWkodSxlJiZlLnJlZixhLHR8fGUsIXQpOnU9PW51bGwmJmUmJmUucmVmIT1udWxsJiZlaShlLnJlZixudWxsLGEsZSwhMCl9LHk9KGUsdCxuLHIpPT57aWYoZT09bnVsbClvKHQuZWw9dSh0LmNoaWxkcmVuKSxuLHIpO2Vsc2V7bGV0IG49dC5lbD1lLmVsO3QuY2hpbGRyZW4hPT1lLmNoaWxkcmVuJiZmKG4sdC5jaGlsZHJlbil9fSxiPShlLHQsbixyKT0+e2U9PW51bGw/byh0LmVsPWQodC5jaGlsZHJlbnx8YGApLG4scik6dC5lbD1lLmVsfSx4PShlLHQsbixyKT0+e1tlLmVsLGUuYW5jaG9yXT1fKGUuY2hpbGRyZW4sdCxuLHIsZS5lbCxlLmFuY2hvcil9LFM9KHtlbDplLGFuY2hvcjp0fSxuLHIpPT57bGV0IGk7Zm9yKDtlJiZlIT09dDspaT1oKGUpLG8oZSxuLHIpLGU9aTtvKHQsbixyKX0sQz0oe2VsOmUsYW5jaG9yOnR9KT0+e2xldCBuO2Zvcig7ZSYmZSE9PXQ7KW49aChlKSxzKGUpLGU9bjtzKHQpfSx3PShlLHQsbixyLGksYSxvLHMsYyk9PntpZih0LnR5cGU9PT1gc3ZnYD9vPWBzdmdgOnQudHlwZT09PWBtYXRoYCYmKG89YG1hdGhtbGApLGU9PW51bGwpVCh0LG4scixpLGEsbyxzLGMpO2Vsc2V7bGV0IG49ZS5lbCYmZS5lbC5faXNWdWVDRT9lLmVsOm51bGw7dHJ5e24mJm4uX2JlZ2luUGF0Y2goKSxPKGUsdCxpLGEsbyxzLGMpfWZpbmFsbHl7biYmbi5fZW5kUGF0Y2goKX19fSxUPShlLHQsbixyLGksYSxzLHUpPT57bGV0IGQsZix7cHJvcHM6bSxzaGFwZUZsYWc6aCx0cmFuc2l0aW9uOmcsZGlyczpffT1lO2lmKGQ9ZS5lbD1sKGUudHlwZSxhLG0mJm0uaXMsbSksaCY4P3AoZCxlLmNoaWxkcmVuKTpoJjE2JiZlZShlLmNoaWxkcmVuLGQsbnVsbCxyLGksQW8oZSxhKSxzLHUpLF8mJm9yKGUsbnVsbCxyLGBjcmVhdGVkYCksRChkLGUsZS5zY29wZUlkLHMsciksbSl7Zm9yKGxldCBlIGluIG0pZSE9PWB2YWx1ZWAmJiFFKGUpJiZjKGQsZSxudWxsLG1bZV0sYSxyKTtgdmFsdWVgaW4gbSYmYyhkLGB2YWx1ZWAsbnVsbCxtLnZhbHVlLGEpLChmPW0ub25Wbm9kZUJlZm9yZU1vdW50KSYmd3MoZixyLGUpfV8mJm9yKGUsbnVsbCxyLGBiZWZvcmVNb3VudGApO2xldCB2PU1vKGksZyk7diYmZy5iZWZvcmVFbnRlcihkKSxvKGQsdCxuKSwoKGY9bSYmbS5vblZub2RlTW91bnRlZCl8fHZ8fF8pJiZXKCgpPT57dHJ5e2YmJndzKGYscixlKSx2JiZnLmVudGVyKGQpLF8mJm9yKGUsbnVsbCxyLGBtb3VudGVkYCl9ZmluYWxseXt9fSxpKX0sRD0oZSx0LG4scixpKT0+e2lmKG4mJmcoZSxuKSxyKWZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWcoZSxyW3RdKTtpZihpKXtsZXQgbj1pLnN1YlRyZWU7aWYodD09PW58fFJvKG4udHlwZSkmJihuLnNzQ29udGVudD09PXR8fG4uc3NGYWxsYmFjaz09PXQpKXtsZXQgdD1pLnZub2RlO0QoZSx0LHQuc2NvcGVJZCx0LnNsb3RTY29wZUlkcyxpLnBhcmVudCl9fX0sZWU9KGUsdCxuLHIsaSxhLG8scyxjPTApPT57Zm9yKGxldCBsPWM7bDxlLmxlbmd0aDtsKyspe2xldCBjPWVbbF09cz94cyhlW2xdKTpicyhlW2xdKTt2KG51bGwsYyx0LG4scixpLGEsbyxzKX19LE89KGUsbixyLGksYSxvLHMpPT57bGV0IGw9bi5lbD1lLmVsLHtwYXRjaEZsYWc6dSxkeW5hbWljQ2hpbGRyZW46ZCxkaXJzOmZ9PW47dXw9ZS5wYXRjaEZsYWcmMTY7bGV0IG09ZS5wcm9wc3x8dCxoPW4ucHJvcHN8fHQsZztpZihyJiZqbyhyLCExKSwoZz1oLm9uVm5vZGVCZWZvcmVVcGRhdGUpJiZ3cyhnLHIsbixlKSxmJiZvcihuLGUscixgYmVmb3JlVXBkYXRlYCksciYmam8ociwhMCksZCYmKCFlLmR5bmFtaWNDaGlsZHJlbnx8ZS5keW5hbWljQ2hpbGRyZW4ubGVuZ3RoIT09ZC5sZW5ndGgpJiYodT0wLHM9ITEsZD1udWxsKSwobS5pbm5lckhUTUwmJmguaW5uZXJIVE1MPT1udWxsfHxtLnRleHRDb250ZW50JiZoLnRleHRDb250ZW50PT1udWxsKSYmcChsLGBgKSxkP3RlKGUuZHluYW1pY0NoaWxkcmVuLGQsbCxyLGksQW8obixhKSxvKTpzfHxhZShlLG4sbCxudWxsLHIsaSxBbyhuLGEpLG8sITEpLHU+MCl7aWYodSYxNilrKGwsbSxoLHIsYSk7ZWxzZSBpZih1JjImJm0uY2xhc3MhPT1oLmNsYXNzJiZjKGwsYGNsYXNzYCxudWxsLGguY2xhc3MsYSksdSY0JiZjKGwsYHN0eWxlYCxtLnN0eWxlLGguc3R5bGUsYSksdSY4KXtsZXQgZT1uLmR5bmFtaWNQcm9wcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IG49ZVt0XSxpPW1bbl0sbz1oW25dOyhvIT09aXx8bj09PWB2YWx1ZWApJiZjKGwsbixpLG8sYSxyKX19dSYxJiZlLmNoaWxkcmVuIT09bi5jaGlsZHJlbiYmcChsLG4uY2hpbGRyZW4pfWVsc2UhcyYmZD09bnVsbCYmayhsLG0saCxyLGEpOygoZz1oLm9uVm5vZGVVcGRhdGVkKXx8ZikmJlcoKCk9PntnJiZ3cyhnLHIsbixlKSxmJiZvcihuLGUscixgdXBkYXRlZGApfSxpKX0sdGU9KGUsdCxuLHIsaSxhLG8pPT57Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKyspe2xldCBjPWVbc10sbD10W3NdLHU9Yy5lbCYmKGMudHlwZT09PUd8fCFscyhjLGwpfHxjLnNoYXBlRmxhZyYxOTgpP20oYy5lbCk6bjt2KGMsbCx1LG51bGwscixpLGEsbywhMCl9fSxrPShlLG4scixpLGEpPT57aWYobiE9PXIpe2lmKG4hPT10KWZvcihsZXQgdCBpbiBuKSFFKHQpJiYhKHQgaW4gcikmJmMoZSx0LG5bdF0sbnVsbCxhLGkpO2ZvcihsZXQgdCBpbiByKXtpZihFKHQpKWNvbnRpbnVlO2xldCBvPXJbdF0scz1uW3RdO28hPT1zJiZ0IT09YHZhbHVlYCYmYyhlLHQscyxvLGEsaSl9YHZhbHVlYGluIHImJmMoZSxgdmFsdWVgLG4udmFsdWUsci52YWx1ZSxhKX19LEE9KGUsdCxuLHIsaSxhLHMsYyxsKT0+e2xldCBkPXQuZWw9ZT9lLmVsOnUoYGApLGY9dC5hbmNob3I9ZT9lLmFuY2hvcjp1KGBgKSx7cGF0Y2hGbGFnOnAsZHluYW1pY0NoaWxkcmVuOm0sc2xvdFNjb3BlSWRzOmh9PXQ7aCYmKGM9Yz9jLmNvbmNhdChoKTpoKSxlPT1udWxsPyhvKGQsbixyKSxvKGYsbixyKSxlZSh0LmNoaWxkcmVufHxbXSxuLGYsaSxhLHMsYyxsKSk6cD4wJiZwJjY0JiZtJiZlLmR5bmFtaWNDaGlsZHJlbiYmZS5keW5hbWljQ2hpbGRyZW4ubGVuZ3RoPT09bS5sZW5ndGg/KHRlKGUuZHluYW1pY0NoaWxkcmVuLG0sbixpLGEscyxjKSwodC5rZXkhPW51bGx8fGkmJnQ9PT1pLnN1YlRyZWUpJiZObyhlLHQsITApKTphZShlLHQsbixmLGksYSxzLGMsbCl9LG5lPShlLHQsbixyLGksYSxvLHMsYyk9Pnt0LnNsb3RTY29wZUlkcz1zLGU9PW51bGw/dC5zaGFwZUZsYWcmNTEyP2kuY3R4LmFjdGl2YXRlKHQsbixyLG8sYyk6aih0LG4scixpLGEsbyxjKTpOKGUsdCxjKX0saj0oZSx0LG4scixpLGEsbyk9PntsZXQgcz1lLmNvbXBvbmVudD1EcyhlLHIsaSk7aWYoa2koZSkmJihzLmN0eC5yZW5kZXJlcj1tZSksUHMocywhMSxvKSxzLmFzeW5jRGVwKXtpZihpJiZpLnJlZ2lzdGVyRGVwKHMscmUsbyksIWUuZWwpe2xldCByPXMuc3ViVHJlZT1xKEspO2IobnVsbCxyLHQsbiksZS5wbGFjZWhvbGRlcj1yLmVsfX1lbHNlIHJlKHMsZSx0LG4saSxhLG8pfSxOPShlLHQsbik9PntsZXQgcj10LmNvbXBvbmVudD1lLmNvbXBvbmVudDtpZihpbyhlLHQsbikpe2lmKHIuYXN5bmNEZXAmJiFyLmFzeW5jUmVzb2x2ZWQpe2llKHIsdCxuKTtyZXR1cm59ci5uZXh0PXQsci51cGRhdGUoKX1lbHNlIHQuZWw9ZS5lbCxyLnZub2RlPXR9LHJlPShlLHQsbixyLGksYSxvKT0+e2xldCBzPSgpPT57aWYoZS5pc01vdW50ZWQpe2xldHtuZXh0OnQsYnU6bix1OnIscGFyZW50OnMsdm5vZGU6Y309ZTt7bGV0IG49Rm8oZSk7aWYobil7dCYmKHQuZWw9Yy5lbCxpZShlLHQsbykpLG4uYXN5bmNEZXAudGhlbigoKT0+e1coKCk9PntlLmlzVW5tb3VudGVkfHxsKCl9LGkpfSk7cmV0dXJufX1sZXQgdT10LGQ7am8oZSwhMSksdD8odC5lbD1jLmVsLGllKGUsdCxvKSk6dD1jLG4mJk0obiksKGQ9dC5wcm9wcyYmdC5wcm9wcy5vblZub2RlQmVmb3JlVXBkYXRlKSYmd3MoZCxzLHQsYyksam8oZSwhMCk7bGV0IGY9ZW8oZSkscD1lLnN1YlRyZWU7ZS5zdWJUcmVlPWYsdihwLGYsbShwLmVsKSxkZShwKSxlLGksYSksdC5lbD1mLmVsLHU9PT1udWxsJiZzbyhlLGYuZWwpLHImJlcocixpKSwoZD10LnByb3BzJiZ0LnByb3BzLm9uVm5vZGVVcGRhdGVkKSYmVygoKT0+d3MoZCxzLHQsYyksaSl9ZWxzZXtsZXQgbyx7ZWw6cyxwcm9wczpjfT10LHtibTpsLG06dSxwYXJlbnQ6ZCxyb290OmYsdHlwZTpwfT1lLG09RWkodCk7aWYoam8oZSwhMSksbCYmTShsKSwhbSYmKG89YyYmYy5vblZub2RlQmVmb3JlTW91bnQpJiZ3cyhvLGQsdCksam8oZSwhMCkscyYmZ2Upe2xldCB0PSgpPT57ZS5zdWJUcmVlPWVvKGUpLGdlKHMsZS5zdWJUcmVlLGUsaSxudWxsKX07bSYmcC5fX2FzeW5jSHlkcmF0ZT9wLl9fYXN5bmNIeWRyYXRlKHMsZSx0KTp0KCl9ZWxzZXtmLmNlJiZmLmNlLl9oYXNTaGFkb3dSb290KCkmJmYuY2UuX2luamVjdENoaWxkU3R5bGUocCxlLnBhcmVudD9lLnBhcmVudC50eXBlOnZvaWQgMCk7bGV0IG89ZS5zdWJUcmVlPWVvKGUpO3YobnVsbCxvLG4scixlLGksYSksdC5lbD1vLmVsfWlmKHUmJlcodSxpKSwhbSYmKG89YyYmYy5vblZub2RlTW91bnRlZCkpe2xldCBlPXQ7VygoKT0+d3MobyxkLGUpLGkpfSh0LnNoYXBlRmxhZyYyNTZ8fGQmJkVpKGQudm5vZGUpJiZkLnZub2RlLnNoYXBlRmxhZyYyNTYpJiZlLmEmJlcoZS5hLGkpLGUuaXNNb3VudGVkPSEwLHQ9bj1yPW51bGx9fTtlLnNjb3BlLm9uKCk7bGV0IGM9ZS5lZmZlY3Q9bmV3IERlKHMpO2Uuc2NvcGUub2ZmKCk7bGV0IGw9ZS51cGRhdGU9Yy5ydW4uYmluZChjKSx1PWUuam9iPWMucnVuSWZEaXJ0eS5iaW5kKGMpO3UuaT1lLHUuaWQ9ZS51aWQsYy5zY2hlZHVsZXI9KCk9PlVuKHUpLGpvKGUsITApLGwoKX0saWU9KGUsdCxuKT0+e3QuY29tcG9uZW50PWU7bGV0IHI9ZS52bm9kZS5wcm9wcztlLnZub2RlPXQsZS5uZXh0PW51bGwscG8oZSx0LnByb3BzLHIsbiksRW8oZSx0LmNoaWxkcmVuLG4pLFdlKCksS24oZSksR2UoKX0sYWU9KGUsdCxuLHIsaSxhLG8scyxjPSExKT0+e2xldCBsPWUmJmUuY2hpbGRyZW4sdT1lP2Uuc2hhcGVGbGFnOjAsZD10LmNoaWxkcmVuLHtwYXRjaEZsYWc6ZixzaGFwZUZsYWc6bX09dDtpZihmPjApe2lmKGYmMTI4KXtGKGwsZCxuLHIsaSxhLG8scyxjKTtyZXR1cm59aWYoZiYyNTYpe1AobCxkLG4scixpLGEsbyxzLGMpO3JldHVybn19bSY4Pyh1JjE2JiZ1ZShsLGksYSksZCE9PWwmJnAobixkKSk6dSYxNj9tJjE2P0YobCxkLG4scixpLGEsbyxzLGMpOnVlKGwsaSxhLCEwKToodSY4JiZwKG4sYGApLG0mMTYmJmVlKGQsbixyLGksYSxvLHMsYykpfSxQPShlLHQscixpLGEsbyxzLGMsbCk9PntlfHw9bix0fHw9bjtsZXQgdT1lLmxlbmd0aCxkPXQubGVuZ3RoLGY9TWF0aC5taW4odSxkKSxwO2ZvcihwPTA7cDxmO3ArKyl7bGV0IG49dFtwXT1sP3hzKHRbcF0pOmJzKHRbcF0pO3YoZVtwXSxuLHIsbnVsbCxhLG8scyxjLGwpfXU+ZD91ZShlLGEsbywhMCwhMSxmKTplZSh0LHIsaSxhLG8scyxjLGwsZil9LEY9KGUsdCxyLGksYSxvLHMsYyxsKT0+e2xldCB1PTAsZD10Lmxlbmd0aCxmPWUubGVuZ3RoLTEscD1kLTE7Zm9yKDt1PD1mJiZ1PD1wOyl7bGV0IG49ZVt1XSxpPXRbdV09bD94cyh0W3VdKTpicyh0W3VdKTtpZihscyhuLGkpKXYobixpLHIsbnVsbCxhLG8scyxjLGwpO2Vsc2UgYnJlYWs7dSsrfWZvcig7dTw9ZiYmdTw9cDspe2xldCBuPWVbZl0saT10W3BdPWw/eHModFtwXSk6YnModFtwXSk7aWYobHMobixpKSl2KG4saSxyLG51bGwsYSxvLHMsYyxsKTtlbHNlIGJyZWFrO2YtLSxwLS19aWYodT5mKXtpZih1PD1wKXtsZXQgZT1wKzEsbj1lPGQ/dFtlXS5lbDppO2Zvcig7dTw9cDspdihudWxsLHRbdV09bD94cyh0W3VdKTpicyh0W3VdKSxyLG4sYSxvLHMsYyxsKSx1Kyt9fWVsc2UgaWYodT5wKWZvcig7dTw9ZjspY2UoZVt1XSxhLG8sITApLHUrKztlbHNle2xldCBtPXUsaD11LGc9bmV3IE1hcDtmb3IodT1oO3U8PXA7dSsrKXtsZXQgZT10W3VdPWw/eHModFt1XSk6YnModFt1XSk7ZS5rZXkhPW51bGwmJmcuc2V0KGUua2V5LHUpfWxldCBfLHk9MCxiPXAtaCsxLHg9ITEsUz0wLEM9QXJyYXkoYik7Zm9yKHU9MDt1PGI7dSsrKUNbdV09MDtmb3IodT1tO3U8PWY7dSsrKXtsZXQgbj1lW3VdO2lmKHk+PWIpe2NlKG4sYSxvLCEwKTtjb250aW51ZX1sZXQgaTtpZihuLmtleSE9bnVsbClpPWcuZ2V0KG4ua2V5KTtlbHNlIGZvcihfPWg7Xzw9cDtfKyspaWYoQ1tfLWhdPT09MCYmbHMobix0W19dKSl7aT1fO2JyZWFrfWk9PT12b2lkIDA/Y2UobixhLG8sITApOihDW2ktaF09dSsxLGk+PVM/Uz1pOng9ITAsdihuLHRbaV0scixudWxsLGEsbyxzLGMsbCkseSsrKX1sZXQgdz14P1BvKEMpOm47Zm9yKF89dy5sZW5ndGgtMSx1PWItMTt1Pj0wO3UtLSl7bGV0IGU9aCt1LG49dFtlXSxmPXRbZSsxXSxwPWUrMTxkP2YuZWx8fExvKGYpOmk7Q1t1XT09PTA/dihudWxsLG4scixwLGEsbyxzLGMsbCk6eCYmKF88MHx8dSE9PXdbX10/c2UobixyLHAsMik6Xy0tKX19fSxzZT0oZSx0LG4scixpPW51bGwpPT57bGV0e2VsOmEsdHlwZTpjLHRyYW5zaXRpb246bCxjaGlsZHJlbjp1LHNoYXBlRmxhZzpkfT1lO2lmKGQmNil7c2UoZS5jb21wb25lbnQuc3ViVHJlZSx0LG4scik7cmV0dXJufWlmKGQmMTI4KXtlLnN1c3BlbnNlLm1vdmUodCxuLHIpO3JldHVybn1pZihkJjY0KXtjLm1vdmUoZSx0LG4sbWUpO3JldHVybn1pZihjPT09Ryl7byhhLHQsbik7Zm9yKGxldCBlPTA7ZTx1Lmxlbmd0aDtlKyspc2UodVtlXSx0LG4scik7byhlLmFuY2hvcix0LG4pO3JldHVybn1pZihjPT09UW8pe1MoZSx0LG4pO3JldHVybn1pZihyIT09MiYmZCYxJiZsKXtpZihyPT09MClsLnBlcnNpc3RlZCYmIWFbTnJdP28oYSx0LG4pOihsLmJlZm9yZUVudGVyKGEpLG8oYSx0LG4pLFcoKCk9PmwuZW50ZXIoYSksaSkpO2Vsc2V7bGV0e2xlYXZlOnIsZGVsYXlMZWF2ZTppLGFmdGVyTGVhdmU6Y309bCx1PSgpPT57ZS5jdHguaXNVbm1vdW50ZWQ/cyhhKTpvKGEsdCxuKX0sZD0oKT0+e2xldCBlPWEuX2lzTGVhdmluZ3x8ISFhW05yXTthLl9pc0xlYXZpbmcmJmFbTnJdKCEwKSxsLnBlcnNpc3RlZCYmIWU/dSgpOnIoYSwoKT0+e3UoKSxjJiZjKCl9KX07aT9pKGEsdSxkKTpkKCl9fWVsc2UgbyhhLHQsbil9LGNlPShlLHQsbixyPSExLGk9ITEpPT57bGV0e3R5cGU6YSxwcm9wczpvLHJlZjpzLGNoaWxkcmVuOmMsZHluYW1pY0NoaWxkcmVuOmwsc2hhcGVGbGFnOnUscGF0Y2hGbGFnOmQsZGlyczpmLGNhY2hlSW5kZXg6cCxtZW1vOm19PWU7aWYoZD09PS0yJiYoaT0hMSkscyE9bnVsbCYmKFdlKCksZWkocyxudWxsLG4sZSwhMCksR2UoKSkscCE9bnVsbCYmKHQucmVuZGVyQ2FjaGVbcF09dm9pZCAwKSx1JjI1Nil7dC5jdHguZGVhY3RpdmF0ZShlKTtyZXR1cm59bGV0IGg9dSYxJiZmLGc9IUVpKGUpLF87aWYoZyYmKF89byYmby5vblZub2RlQmVmb3JlVW5tb3VudCkmJndzKF8sdCxlKSx1JjYpTChlLmNvbXBvbmVudCxuLHIpO2Vsc2V7aWYodSYxMjgpe2Uuc3VzcGVuc2UudW5tb3VudChuLHIpO3JldHVybn1oJiZvcihlLG51bGwsdCxgYmVmb3JlVW5tb3VudGApLHUmNjQ/ZS50eXBlLnJlbW92ZShlLHQsbixtZSxyKTpsJiYhbC5oYXNPbmNlJiYoYSE9PUd8fGQ+MCYmZCY2NCk/dWUobCx0LG4sITEsITApOihhPT09RyYmZCYzODR8fCFpJiZ1JjE2KSYmdWUoYyx0LG4pLHImJkkoZSl9bGV0IHY9bSE9bnVsbCYmcD09bnVsbDsoZyYmKF89byYmby5vblZub2RlVW5tb3VudGVkKXx8aHx8dikmJlcoKCk9PntfJiZ3cyhfLHQsZSksaCYmb3IoZSxudWxsLHQsYHVubW91bnRlZGApLHYmJihlLmVsPW51bGwpfSxuKX0sST1lPT57bGV0e3R5cGU6dCxlbDpuLGFuY2hvcjpyLHRyYW5zaXRpb246aX09ZTtpZih0PT09Ryl7bGUobixyKTtyZXR1cm59aWYodD09PVFvKXtDKGUpO3JldHVybn1sZXQgYT0oKT0+e3MobiksaSYmIWkucGVyc2lzdGVkJiZpLmFmdGVyTGVhdmUmJmkuYWZ0ZXJMZWF2ZSgpfTtpZihlLnNoYXBlRmxhZyYxJiZpJiYhaS5wZXJzaXN0ZWQpe2xldHtsZWF2ZTp0LGRlbGF5TGVhdmU6cn09aSxvPSgpPT50KG4sYSk7cj9yKGUuZWwsYSxvKTpvKCl9ZWxzZSBhKCl9LGxlPShlLHQpPT57bGV0IG47Zm9yKDtlIT09dDspbj1oKGUpLHMoZSksZT1uO3ModCl9LEw9KGUsdCxuKT0+e2xldHtidW06cixzY29wZTppLGpvYjphLHN1YlRyZWU6byx1bTpzLG06YyxhOmx9PWU7SW8oYyksSW8obCksciYmTShyKSxpLnN0b3AoKSxhJiYoYS5mbGFnc3w9OCxjZShvLGUsdCxuKSkscyYmVyhzLHQpLFcoKCk9PntlLmlzVW5tb3VudGVkPSEwfSx0KX0sdWU9KGUsdCxuLHI9ITEsaT0hMSxhPTApPT57Zm9yKGxldCBvPWE7bzxlLmxlbmd0aDtvKyspY2UoZVtvXSx0LG4scixpKX0sZGU9ZT0+e2lmKGUuc2hhcGVGbGFnJjYpcmV0dXJuIGRlKGUuY29tcG9uZW50LnN1YlRyZWUpO2lmKGUuc2hhcGVGbGFnJjEyOClyZXR1cm4gZS5zdXNwZW5zZS5uZXh0KCk7bGV0IHQ9aChlLmFuY2hvcnx8ZS5lbCksbj10JiZ0W2JyXTtyZXR1cm4gbj9oKG4pOnR9LGZlPSExLHBlPShlLHQsbik9PntsZXQgcjtlPT1udWxsP3QuX3Zub2RlJiYoY2UodC5fdm5vZGUsbnVsbCxudWxsLCEwKSxyPXQuX3Zub2RlLmNvbXBvbmVudCk6dih0Ll92bm9kZXx8bnVsbCxlLHQsbnVsbCxudWxsLG51bGwsbiksdC5fdm5vZGU9ZSxmZXx8PShmZT0hMCxLbihyKSxxbigpLCExKX0sbWU9e3A6dix1bTpjZSxtOnNlLHI6SSxtdDpqLG1jOmVlLHBjOmFlLHBiYzp0ZSxuOmRlLG86ZX0saGUsZ2U7cmV0dXJuIGkmJihbaGUsZ2VdPWkobWUpKSx7cmVuZGVyOnBlLGh5ZHJhdGU6aGUsY3JlYXRlQXBwOkthKHBlLGhlKX19ZnVuY3Rpb24gQW8oe3R5cGU6ZSxwcm9wczp0fSxuKXtyZXR1cm4gbj09PWBzdmdgJiZlPT09YGZvcmVpZ25PYmplY3RgfHxuPT09YG1hdGhtbGAmJmU9PT1gYW5ub3RhdGlvbi14bWxgJiZ0JiZ0LmVuY29kaW5nJiZ0LmVuY29kaW5nLmluY2x1ZGVzKGBodG1sYCk/dm9pZCAwOm59ZnVuY3Rpb24gam8oe2VmZmVjdDplLGpvYjp0fSxuKXtuPyhlLmZsYWdzfD0zMix0LmZsYWdzfD00KTooZS5mbGFncyY9LTMzLHQuZmxhZ3MmPS01KX1mdW5jdGlvbiBNbyhlLHQpe3JldHVybighZXx8ZSYmIWUucGVuZGluZ0JyYW5jaCkmJnQmJiF0LnBlcnNpc3RlZH1mdW5jdGlvbiBObyhlLHQsbj0hMSl7bGV0IHI9ZS5jaGlsZHJlbixpPXQuY2hpbGRyZW47aWYoZChyKSYmZChpKSlmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyl7bGV0IHQ9cltlXSxhPWlbZV07YS5zaGFwZUZsYWcmMSYmIWEuZHluYW1pY0NoaWxkcmVuJiYoKGEucGF0Y2hGbGFnPD0wfHxhLnBhdGNoRmxhZz09PTMyKSYmKGE9aVtlXT14cyhpW2VdKSxhLmVsPXQuZWwpLCFuJiZhLnBhdGNoRmxhZyE9PS0yJiZObyh0LGEpKSxhLnR5cGU9PT1abyYmKGEucGF0Y2hGbGFnPT09LTEmJihhPWlbZV09eHMoYSkpLGEuZWw9dC5lbCksYS50eXBlPT09SyYmIWEuZWwmJihhLmVsPXQuZWwpfX1mdW5jdGlvbiBQbyhlKXtsZXQgdD1lLnNsaWNlKCksbj1bMF0scixpLGEsbyxzLGM9ZS5sZW5ndGg7Zm9yKHI9MDtyPGM7cisrKXtsZXQgYz1lW3JdO2lmKGMhPT0wKXtpZihpPW5bbi5sZW5ndGgtMV0sZVtpXTxjKXt0W3JdPWksbi5wdXNoKHIpO2NvbnRpbnVlfWZvcihhPTAsbz1uLmxlbmd0aC0xO2E8bzspcz1hK28+PjEsZVtuW3NdXTxjP2E9cysxOm89cztjPGVbblthXV0mJihhPjAmJih0W3JdPW5bYS0xXSksblthXT1yKX19Zm9yKGE9bi5sZW5ndGgsbz1uW2EtMV07YS0tPjA7KW5bYV09byxvPXRbb107cmV0dXJuIG59ZnVuY3Rpb24gRm8oZSl7bGV0IHQ9ZS5zdWJUcmVlLmNvbXBvbmVudDtpZih0KXJldHVybiB0LmFzeW5jRGVwJiYhdC5hc3luY1Jlc29sdmVkP3Q6Rm8odCl9ZnVuY3Rpb24gSW8oZSl7aWYoZSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLmZsYWdzfD04fWZ1bmN0aW9uIExvKGUpe2lmKGUucGxhY2Vob2xkZXIpcmV0dXJuIGUucGxhY2Vob2xkZXI7bGV0IHQ9ZS5jb21wb25lbnQ7cmV0dXJuIHQ/TG8odC5zdWJUcmVlKTpudWxsfXZhciBSbz1lPT5lLl9faXNTdXNwZW5zZSx6bz0wLEJvPXtuYW1lOmBTdXNwZW5zZWAsX19pc1N1c3BlbnNlOiEwLHByb2Nlc3MoZSx0LG4scixpLGEsbyxzLGMsbCl7aWYoZT09bnVsbClIbyh0LG4scixpLGEsbyxzLGMsbCk7ZWxzZXtpZihhJiZhLmRlcHM+MCYmIWUuc3VzcGVuc2UuaXNJbkZhbGxiYWNrKXt0LnN1c3BlbnNlPWUuc3VzcGVuc2UsdC5zdXNwZW5zZS52bm9kZT10LHQuZWw9ZS5lbDtyZXR1cm59VW8oZSx0LG4scixpLG8scyxjLGwpfX0saHlkcmF0ZTpHbyxub3JtYWxpemU6S299O2Z1bmN0aW9uIFZvKGUsdCl7bGV0IG49ZS5wcm9wcyYmZS5wcm9wc1t0XTtnKG4pJiZuKCl9ZnVuY3Rpb24gSG8oZSx0LG4scixpLGEsbyxzLGMpe2xldHtwOmwsbzp7Y3JlYXRlRWxlbWVudDp1fX09YyxkPXUoYGRpdmApLGY9ZS5zdXNwZW5zZT1XbyhlLGkscix0LGQsbixhLG8scyxjKTtsKG51bGwsZi5wZW5kaW5nQnJhbmNoPWUuc3NDb250ZW50LGQsbnVsbCxyLGYsYSxvKSxmLmRlcHM+MD8oVm8oZSxgb25QZW5kaW5nYCksVm8oZSxgb25GYWxsYmFja2ApLGwobnVsbCxlLnNzRmFsbGJhY2ssdCxuLHIsbnVsbCxhLG8pLFlvKGYsZS5zc0ZhbGxiYWNrKSk6Zi5yZXNvbHZlKCExLCEwKX1mdW5jdGlvbiBVbyhlLHQsbixyLGksYSxvLHMse3A6Yyx1bTpsLG86e2NyZWF0ZUVsZW1lbnQ6dX19KXtsZXQgZD10LnN1c3BlbnNlPWUuc3VzcGVuc2U7ZC52bm9kZT10LHQuZWw9ZS5lbDtsZXQgZj10LnNzQ29udGVudCxwPXQuc3NGYWxsYmFjayx7YWN0aXZlQnJhbmNoOm0scGVuZGluZ0JyYW5jaDpoLGlzSW5GYWxsYmFjazpnLGlzSHlkcmF0aW5nOl99PWQ7aWYoaClkLnBlbmRpbmdCcmFuY2g9ZixscyhoLGYpPyhjKGgsZixkLmhpZGRlbkNvbnRhaW5lcixudWxsLGksZCxhLG8scyksZC5kZXBzPD0wP2QucmVzb2x2ZSgpOmcmJihffHwoYyhtLHAsbixyLGksbnVsbCxhLG8scyksWW8oZCxwKSkpKTooZC5wZW5kaW5nSWQ9em8rKyxfPyhkLmlzSHlkcmF0aW5nPSExLGQuYWN0aXZlQnJhbmNoPWgpOmwoaCxpLGQpLGQuZGVwcz0wLGQuZWZmZWN0cy5sZW5ndGg9MCxkLmhpZGRlbkNvbnRhaW5lcj11KGBkaXZgKSxnPyhjKG51bGwsZixkLmhpZGRlbkNvbnRhaW5lcixudWxsLGksZCxhLG8scyksZC5kZXBzPD0wP2QucmVzb2x2ZSgpOihjKG0scCxuLHIsaSxudWxsLGEsbyxzKSxZbyhkLHApKSk6bSYmbHMobSxmKT8oYyhtLGYsbixyLGksZCxhLG8scyksZC5yZXNvbHZlKCEwKSk6KGMobnVsbCxmLGQuaGlkZGVuQ29udGFpbmVyLG51bGwsaSxkLGEsbyxzKSxkLmRlcHM8PTAmJmQucmVzb2x2ZSgpKSk7ZWxzZSBpZihtJiZscyhtLGYpKWMobSxmLG4scixpLGQsYSxvLHMpLFlvKGQsZik7ZWxzZSBpZihWbyh0LGBvblBlbmRpbmdgKSxkLnBlbmRpbmdCcmFuY2g9ZixkLnBlbmRpbmdJZD1mLnNoYXBlRmxhZyY1MTI/Zi5jb21wb25lbnQuc3VzcGVuc2VJZDp6bysrLGMobnVsbCxmLGQuaGlkZGVuQ29udGFpbmVyLG51bGwsaSxkLGEsbyxzKSxkLmRlcHM8PTApZC5yZXNvbHZlKCk7ZWxzZXtsZXR7dGltZW91dDplLHBlbmRpbmdJZDp0fT1kO2U+MD9zZXRUaW1lb3V0KCgpPT57ZC5wZW5kaW5nSWQ9PT10JiZkLmZhbGxiYWNrKHApfSxlKTplPT09MCYmZC5mYWxsYmFjayhwKX19ZnVuY3Rpb24gV28oZSx0LG4scixpLGEsbyxzLGMsbCx1PSExKXtsZXR7cDpkLG06Zix1bTpwLG46bSxvOntwYXJlbnROb2RlOmgscmVtb3ZlOmd9fT1sLF8sdj1YbyhlKTt2JiZ0JiZ0LnBlbmRpbmdCcmFuY2gmJihfPXQucGVuZGluZ0lkLHQuZGVwcysrKTtsZXQgeT1lLnByb3BzP2llKGUucHJvcHMudGltZW91dCk6dm9pZCAwLGI9YSx4PXt2bm9kZTplLHBhcmVudDp0LHBhcmVudENvbXBvbmVudDpuLG5hbWVzcGFjZTpvLGNvbnRhaW5lcjpyLGhpZGRlbkNvbnRhaW5lcjppLGRlcHM6MCxwZW5kaW5nSWQ6em8rKyx0aW1lb3V0OnR5cGVvZiB5PT1gbnVtYmVyYD95Oi0xLGFjdGl2ZUJyYW5jaDpudWxsLGlzRmFsbGJhY2tNb3VudFBlbmRpbmc6ITEscGVuZGluZ0JyYW5jaDpudWxsLGlzSW5GYWxsYmFjazohdSxpc0h5ZHJhdGluZzp1LGlzVW5tb3VudGVkOiExLGVmZmVjdHM6W10scmVzb2x2ZShlPSExLG49ITEpe2xldHt2bm9kZTpyLGFjdGl2ZUJyYW5jaDppLHBlbmRpbmdCcmFuY2g6byxwZW5kaW5nSWQ6cyxlZmZlY3RzOmMscGFyZW50Q29tcG9uZW50OmwsY29udGFpbmVyOnUsaXNJbkZhbGxiYWNrOmR9PXgsZz0hMTtpZih4LmlzSHlkcmF0aW5nKXguaXNIeWRyYXRpbmc9ITE7ZWxzZSBpZighZSl7Zz1pJiZvLnRyYW5zaXRpb24mJm8udHJhbnNpdGlvbi5tb2RlPT09YG91dC1pbmA7bGV0IGU9ITE7ZyYmKGkudHJhbnNpdGlvbi5hZnRlckxlYXZlPSgpPT57cz09PXgucGVuZGluZ0lkJiYoZihvLHUsYT09PWImJiFlP20oaSk6YSwwKSxHbihjKSxkJiZyLnNzRmFsbGJhY2smJihyLnNzRmFsbGJhY2suZWw9bnVsbCkpfSksaSYmIXguaXNGYWxsYmFja01vdW50UGVuZGluZyYmKGgoaS5lbCk9PT11JiYoYT1tKGkpLGU9ITApLHAoaSxsLHgsITApLCFnJiZkJiZyLnNzRmFsbGJhY2smJlcoKCk9PnIuc3NGYWxsYmFjay5lbD1udWxsLHgpKSxnfHxmKG8sdSxhLDApfXguaXNGYWxsYmFja01vdW50UGVuZGluZz0hMSxZbyh4LG8pLHgucGVuZGluZ0JyYW5jaD1udWxsLHguaXNJbkZhbGxiYWNrPSExO2xldCB5PXgucGFyZW50LFM9ITE7Zm9yKDt5Oyl7aWYoeS5wZW5kaW5nQnJhbmNoKXtmb3IobGV0IGU9MDtlPGMubGVuZ3RoO2UrKyl5LmVmZmVjdHMucHVzaChjW2VdKTtTPSEwO2JyZWFrfXk9eS5wYXJlbnR9IVMmJiFnJiZHbihjKSx4LmVmZmVjdHM9W10sdiYmdCYmdC5wZW5kaW5nQnJhbmNoJiZfPT09dC5wZW5kaW5nSWQmJih0LmRlcHMtLSx0LmRlcHM9PT0wJiYhbiYmdC5yZXNvbHZlKCkpLFZvKHIsYG9uUmVzb2x2ZWApfSxmYWxsYmFjayhlKXtpZigheC5wZW5kaW5nQnJhbmNoKXJldHVybjtsZXR7dm5vZGU6dCxhY3RpdmVCcmFuY2g6bixwYXJlbnRDb21wb25lbnQ6cixjb250YWluZXI6aSxuYW1lc3BhY2U6YX09eDtWbyh0LGBvbkZhbGxiYWNrYCk7bGV0IG89bShuKSxsPSgpPT57eC5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nPSExLHguaXNJbkZhbGxiYWNrJiYoZChudWxsLGUsaSxvLHIsbnVsbCxhLHMsYyksWW8oeCxlKSl9LHU9ZS50cmFuc2l0aW9uJiZlLnRyYW5zaXRpb24ubW9kZT09PWBvdXQtaW5gO3UmJih4LmlzRmFsbGJhY2tNb3VudFBlbmRpbmc9ITAsbi50cmFuc2l0aW9uLmFmdGVyTGVhdmU9bCkseC5pc0luRmFsbGJhY2s9ITAscChuLHIsbnVsbCwhMCksdXx8bCgpfSxtb3ZlKGUsdCxuKXt4LmFjdGl2ZUJyYW5jaCYmZih4LmFjdGl2ZUJyYW5jaCxlLHQsbikseC5jb250YWluZXI9ZX0sbmV4dCgpe3JldHVybiB4LmFjdGl2ZUJyYW5jaCYmbSh4LmFjdGl2ZUJyYW5jaCl9LHJlZ2lzdGVyRGVwKGUsdCxuKXtsZXQgcj0hIXgucGVuZGluZ0JyYW5jaDtyJiZ4LmRlcHMrKztsZXQgaT1lLnZub2RlLmVsO2UuYXN5bmNEZXAuY2F0Y2godD0+e01uKHQsZSwwKX0pLnRoZW4oYT0+e2lmKGUuaXNVbm1vdW50ZWR8fHguaXNVbm1vdW50ZWR8fHgucGVuZGluZ0lkIT09ZS5zdXNwZW5zZUlkKXJldHVybjtqcygpLGUuYXN5bmNSZXNvbHZlZD0hMDtsZXR7dm5vZGU6c309ZTtJcyhlLGEsITEpLGkmJihzLmVsPWkpO2xldCBjPSFpJiZlLnN1YlRyZWUuZWw7dChlLHMsaChpfHxlLnN1YlRyZWUuZWwpLGk/bnVsbDptKGUuc3ViVHJlZSkseCxvLG4pLGMmJihzLnBsYWNlaG9sZGVyPW51bGwsZyhjKSksc28oZSxzLmVsKSxyJiYtLXguZGVwcz09PTAmJngucmVzb2x2ZSgpfSl9LHVubW91bnQoZSx0KXt4LmlzVW5tb3VudGVkPSEwLHguYWN0aXZlQnJhbmNoJiZwKHguYWN0aXZlQnJhbmNoLG4sZSx0KSx4LnBlbmRpbmdCcmFuY2gmJnAoeC5wZW5kaW5nQnJhbmNoLG4sZSx0KX19O3JldHVybiB4fWZ1bmN0aW9uIEdvKGUsdCxuLHIsaSxhLG8scyxjKXtsZXQgbD10LnN1c3BlbnNlPVdvKHQscixuLGUucGFyZW50Tm9kZSxkb2N1bWVudC5jcmVhdGVFbGVtZW50KGBkaXZgKSxudWxsLGksYSxvLHMsITApLHU9YyhlLGwucGVuZGluZ0JyYW5jaD10LnNzQ29udGVudCxuLGwsYSxvKTtyZXR1cm4gbC5kZXBzPT09MCYmbC5yZXNvbHZlKCExLCEwKSx1fWZ1bmN0aW9uIEtvKGUpe2xldHtzaGFwZUZsYWc6dCxjaGlsZHJlbjpufT1lLHI9dCYzMjtlLnNzQ29udGVudD1xbyhyP24uZGVmYXVsdDpuKSxlLnNzRmFsbGJhY2s9cj9xbyhuLmZhbGxiYWNrKTpxKEspfWZ1bmN0aW9uIHFvKGUpe2xldCB0O2lmKGcoZSkpe2xldCBuPXJzJiZlLl9jO24mJihlLl9kPSExLHRzKCkpLGU9ZSgpLG4mJihlLl9kPSEwLHQ9ZXMsbnMoKSl9cmV0dXJuIGQoZSkmJihlPXRvKGUpKSxlPWJzKGUpLHQmJiFlLmR5bmFtaWNDaGlsZHJlbiYmKGUuZHluYW1pY0NoaWxkcmVuPXQuZmlsdGVyKHQ9PnQhPT1lKSksZX1mdW5jdGlvbiBKbyhlLHQpe3QmJnQucGVuZGluZ0JyYW5jaD9kKGUpP3QuZWZmZWN0cy5wdXNoKC4uLmUpOnQuZWZmZWN0cy5wdXNoKGUpOkduKGUpfWZ1bmN0aW9uIFlvKGUsdCl7ZS5hY3RpdmVCcmFuY2g9dDtsZXR7dm5vZGU6bixwYXJlbnRDb21wb25lbnQ6cn09ZSxpPXQuZWw7Zm9yKDshaSYmdC5jb21wb25lbnQ7KXQ9dC5jb21wb25lbnQuc3ViVHJlZSxpPXQuZWw7bi5lbD1pLHImJnIuc3ViVHJlZT09PW4mJihyLnZub2RlLmVsPWksc28ocixpKSl9ZnVuY3Rpb24gWG8oZSl7bGV0IHQ9ZS5wcm9wcyYmZS5wcm9wcy5zdXNwZW5zaWJsZTtyZXR1cm4gdCE9bnVsbCYmdCE9PSExfXZhciBHPVN5bWJvbC5mb3IoYHYtZmd0YCksWm89U3ltYm9sLmZvcihgdi10eHRgKSxLPVN5bWJvbC5mb3IoYHYtY210YCksUW89U3ltYm9sLmZvcihgdi1zdGNgKSwkbz1bXSxlcz1udWxsO2Z1bmN0aW9uIHRzKGU9ITEpeyRvLnB1c2goZXM9ZT9udWxsOltdKX1mdW5jdGlvbiBucygpeyRvLnBvcCgpLGVzPSRvWyRvLmxlbmd0aC0xXXx8bnVsbH12YXIgcnM9MTtmdW5jdGlvbiBpcyhlLHQ9ITEpe3JzKz1lLGU8MCYmZXMmJnQmJihlcy5oYXNPbmNlPSEwKX1mdW5jdGlvbiBhcyhlKXtyZXR1cm4gZS5keW5hbWljQ2hpbGRyZW49cnM+MD9lc3x8bjpudWxsLG5zKCkscnM+MCYmZXMmJmVzLnB1c2goZSksZX1mdW5jdGlvbiBvcyhlLHQsbixyLGksYSl7cmV0dXJuIGFzKHBzKGUsdCxuLHIsaSxhLCEwKSl9ZnVuY3Rpb24gc3MoZSx0LG4scixpKXtyZXR1cm4gYXMocShlLHQsbixyLGksITApKX1mdW5jdGlvbiBjcyhlKXtyZXR1cm4gZT9lLl9fdl9pc1ZOb2RlPT09ITA6ITF9ZnVuY3Rpb24gbHMoZSx0KXtyZXR1cm4gZS50eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fWZ1bmN0aW9uIHVzKGUpe312YXIgZHM9KHtrZXk6ZX0pPT5lPz9udWxsLGZzPSh7cmVmOmUscmVmX2tleTp0LHJlZl9mb3I6bn0pPT4odHlwZW9mIGU9PWBudW1iZXJgJiYoZT1gYCtlKSxlPT1udWxsP251bGw6XyhlKXx8SChlKXx8ZyhlKT97aTpVLHI6ZSxrOnQsZjohIW59OmUpO2Z1bmN0aW9uIHBzKGUsdD1udWxsLG49bnVsbCxyPTAsaT1udWxsLGE9ZT09PUc/MDoxLG89ITEscz0hMSl7bGV0IGM9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZSxwcm9wczp0LGtleTp0JiZkcyh0KSxyZWY6dCYmZnModCksc2NvcGVJZDokbixzbG90U2NvcGVJZHM6bnVsbCxjaGlsZHJlbjpuLGNvbXBvbmVudDpudWxsLHN1c3BlbnNlOm51bGwsc3NDb250ZW50Om51bGwsc3NGYWxsYmFjazpudWxsLGRpcnM6bnVsbCx0cmFuc2l0aW9uOm51bGwsZWw6bnVsbCxhbmNob3I6bnVsbCx0YXJnZXQ6bnVsbCx0YXJnZXRTdGFydDpudWxsLHRhcmdldEFuY2hvcjpudWxsLHN0YXRpY0NvdW50OjAsc2hhcGVGbGFnOmEscGF0Y2hGbGFnOnIsZHluYW1pY1Byb3BzOmksZHluYW1pY0NoaWxkcmVuOm51bGwsYXBwQ29udGV4dDpudWxsLGN0eDpVfTtyZXR1cm4gcz8oU3MoYyxuKSxhJjEyOCYmZS5ub3JtYWxpemUoYykpOm4mJihjLnNoYXBlRmxhZ3w9XyhuKT84OjE2KSxycz4wJiYhbyYmZXMmJihjLnBhdGNoRmxhZz4wfHxhJjYpJiZjLnBhdGNoRmxhZyE9PTMyJiZlcy5wdXNoKGMpLGN9dmFyIHE9bXM7ZnVuY3Rpb24gbXMoZSx0PW51bGwsbj1udWxsLHI9MCxpPW51bGwsYT0hMSl7aWYoKCFlfHxlPT09JGkpJiYoZT1LKSxjcyhlKSl7bGV0IHI9Z3MoZSx0LCEwKTtyZXR1cm4gbiYmU3MocixuKSxycz4wJiYhYSYmZXMmJihyLnNoYXBlRmxhZyY2P2VzW2VzLmluZGV4T2YoZSldPXI6ZXMucHVzaChyKSksci5wYXRjaEZsYWc9LTIscn1pZihLcyhlKSYmKGU9ZS5fX3ZjY09wdHMpLHQpe3Q9aHModCk7bGV0e2NsYXNzOmUsc3R5bGU6bn09dDtlJiYhXyhlKSYmKHQuY2xhc3M9TChlKSkseShuKSYmKEt0KG4pJiYhZChuKSYmKG49cyh7fSxuKSksdC5zdHlsZT1GKG4pKX1sZXQgbz1fKGUpPzE6Um8oZSk/MTI4OnhyKGUpPzY0OnkoZSk/NDpnKGUpPzI6MDtyZXR1cm4gcHMoZSx0LG4scixpLG8sYSwhMCl9ZnVuY3Rpb24gaHMoZSl7cmV0dXJuIGU/S3QoZSl8fHVvKGUpP3Moe30sZSk6ZTpudWxsfWZ1bmN0aW9uIGdzKGUsdCxuPSExLHI9ITEpe2xldHtwcm9wczppLHJlZjphLHBhdGNoRmxhZzpvLGNoaWxkcmVuOnMsdHJhbnNpdGlvbjpjfT1lLGw9dD9DcyhpfHx7fSx0KTppLHU9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZS50eXBlLHByb3BzOmwsa2V5OmwmJmRzKGwpLHJlZjp0JiZ0LnJlZj9uJiZhP2QoYSk/YS5jb25jYXQoZnModCkpOlthLGZzKHQpXTpmcyh0KTphLHNjb3BlSWQ6ZS5zY29wZUlkLHNsb3RTY29wZUlkczplLnNsb3RTY29wZUlkcyxjaGlsZHJlbjpzLHRhcmdldDplLnRhcmdldCx0YXJnZXRTdGFydDplLnRhcmdldFN0YXJ0LHRhcmdldEFuY2hvcjplLnRhcmdldEFuY2hvcixzdGF0aWNDb3VudDplLnN0YXRpY0NvdW50LHNoYXBlRmxhZzplLnNoYXBlRmxhZyxwYXRjaEZsYWc6dCYmZS50eXBlIT09Rz9vPT09LTE/MTY6b3wxNjpvLGR5bmFtaWNQcm9wczplLmR5bmFtaWNQcm9wcyxkeW5hbWljQ2hpbGRyZW46ZS5keW5hbWljQ2hpbGRyZW4sYXBwQ29udGV4dDplLmFwcENvbnRleHQsZGlyczplLmRpcnMsdHJhbnNpdGlvbjpjLGNvbXBvbmVudDplLmNvbXBvbmVudCxzdXNwZW5zZTplLnN1c3BlbnNlLHNzQ29udGVudDplLnNzQ29udGVudCYmZ3MoZS5zc0NvbnRlbnQpLHNzRmFsbGJhY2s6ZS5zc0ZhbGxiYWNrJiZncyhlLnNzRmFsbGJhY2spLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsZWw6ZS5lbCxhbmNob3I6ZS5hbmNob3IsY3R4OmUuY3R4LGNlOmUuY2V9O3JldHVybiBjJiZyJiZLcih1LGMuY2xvbmUodSkpLHV9ZnVuY3Rpb24gX3MoZT1gIGAsdD0wKXtyZXR1cm4gcShabyxudWxsLGUsdCl9ZnVuY3Rpb24gdnMoZSx0KXtsZXQgbj1xKFFvLG51bGwsZSk7cmV0dXJuIG4uc3RhdGljQ291bnQ9dCxufWZ1bmN0aW9uIHlzKGU9YGAsdD0hMSl7cmV0dXJuIHQ/KHRzKCksc3MoSyxudWxsLGUpKTpxKEssbnVsbCxlKX1mdW5jdGlvbiBicyhlKXtyZXR1cm4gZT09bnVsbHx8dHlwZW9mIGU9PWBib29sZWFuYD9xKEspOmQoZSk/cShHLG51bGwsZS5zbGljZSgpKTpjcyhlKT94cyhlKTpxKFpvLG51bGwsU3RyaW5nKGUpKX1mdW5jdGlvbiB4cyhlKXtyZXR1cm4gZS5lbD09PW51bGwmJmUucGF0Y2hGbGFnIT09LTF8fGUubWVtbz9lOmdzKGUpfWZ1bmN0aW9uIFNzKGUsdCl7bGV0IG49MCx7c2hhcGVGbGFnOnJ9PWU7aWYodD09bnVsbCl0PW51bGw7ZWxzZSBpZihkKHQpKW49MTY7ZWxzZSBpZih0eXBlb2YgdD09YG9iamVjdGApe2lmKHImNjUpe2xldCBuPXQuZGVmYXVsdDtuJiYobi5fYyYmKG4uX2Q9ITEpLFNzKGUsbigpKSxuLl9jJiYobi5fZD0hMCkpO3JldHVybn17bj0zMjtsZXQgcj10Ll87IXImJiF1byh0KT90Ll9jdHg9VTpyPT09MyYmVSYmKFUuc2xvdHMuXz09PTE/dC5fPTE6KHQuXz0yLGUucGF0Y2hGbGFnfD0xMDI0KSl9fWVsc2UgaWYoZyh0KSl7aWYociY2NSl7U3MoZSx7ZGVmYXVsdDp0fSk7cmV0dXJufXQ9e2RlZmF1bHQ6dCxfY3R4OlV9LG49MzJ9ZWxzZSB0PVN0cmluZyh0KSxyJjY0PyhuPTE2LHQ9W19zKHQpXSk6bj04O2UuY2hpbGRyZW49dCxlLnNoYXBlRmxhZ3w9bn1mdW5jdGlvbiBDcyguLi5lKXtsZXQgdD17fTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHI9ZVtuXTtmb3IobGV0IGUgaW4gcilpZihlPT09YGNsYXNzYCl0LmNsYXNzIT09ci5jbGFzcyYmKHQuY2xhc3M9TChbdC5jbGFzcyxyLmNsYXNzXSkpO2Vsc2UgaWYoZT09PWBzdHlsZWApdC5zdHlsZT1GKFt0LnN0eWxlLHIuc3R5bGVdKTtlbHNlIGlmKGEoZSkpe2xldCBuPXRbZV0saT1yW2VdO2kmJm4hPT1pJiYhKGQobikmJm4uaW5jbHVkZXMoaSkpP3RbZV09bj9bXS5jb25jYXQobixpKTppOmk9PW51bGwmJm49PW51bGwmJiFvKGUpJiYodFtlXT1pKX1lbHNlIGUhPT1gYCYmKHRbZV09cltlXSl9cmV0dXJuIHR9ZnVuY3Rpb24gd3MoZSx0LG4scj1udWxsKXtqbihlLHQsNyxbbixyXSl9dmFyIFRzPVdhKCksRXM9MDtmdW5jdGlvbiBEcyhlLG4scil7bGV0IGk9ZS50eXBlLGE9KG4/bi5hcHBDb250ZXh0OmUuYXBwQ29udGV4dCl8fFRzLG89e3VpZDpFcysrLHZub2RlOmUsdHlwZTppLHBhcmVudDpuLGFwcENvbnRleHQ6YSxyb290Om51bGwsbmV4dDpudWxsLHN1YlRyZWU6bnVsbCxlZmZlY3Q6bnVsbCx1cGRhdGU6bnVsbCxqb2I6bnVsbCxzY29wZTpuZXcgU2UoITApLHJlbmRlcjpudWxsLHByb3h5Om51bGwsZXhwb3NlZDpudWxsLGV4cG9zZVByb3h5Om51bGwsd2l0aFByb3h5Om51bGwscHJvdmlkZXM6bj9uLnByb3ZpZGVzOk9iamVjdC5jcmVhdGUoYS5wcm92aWRlcyksaWRzOm4/bi5pZHM6W2BgLDAsMF0sYWNjZXNzQ2FjaGU6bnVsbCxyZW5kZXJDYWNoZTpbXSxjb21wb25lbnRzOm51bGwsZGlyZWN0aXZlczpudWxsLHByb3BzT3B0aW9uczpfbyhpLGEpLGVtaXRzT3B0aW9uczpRYShpLGEpLGVtaXQ6bnVsbCxlbWl0dGVkOm51bGwscHJvcHNEZWZhdWx0czp0LGluaGVyaXRBdHRyczppLmluaGVyaXRBdHRycyxjdHg6dCxkYXRhOnQscHJvcHM6dCxhdHRyczp0LHNsb3RzOnQscmVmczp0LHNldHVwU3RhdGU6dCxzZXR1cENvbnRleHQ6bnVsbCxzdXNwZW5zZTpyLHN1c3BlbnNlSWQ6cj9yLnBlbmRpbmdJZDowLGFzeW5jRGVwOm51bGwsYXN5bmNSZXNvbHZlZDohMSxpc01vdW50ZWQ6ITEsaXNVbm1vdW50ZWQ6ITEsaXNEZWFjdGl2YXRlZDohMSxiYzpudWxsLGM6bnVsbCxibTpudWxsLG06bnVsbCxidTpudWxsLHU6bnVsbCx1bTpudWxsLGJ1bTpudWxsLGRhOm51bGwsYTpudWxsLHJ0ZzpudWxsLHJ0YzpudWxsLGVjOm51bGwsc3A6bnVsbH07cmV0dXJuIG8uY3R4PXtfOm99LG8ucm9vdD1uP24ucm9vdDpvLG8uZW1pdD1YYS5iaW5kKG51bGwsbyksZS5jZSYmZS5jZShvKSxvfXZhciBKPW51bGwsWT0oKT0+Snx8VSxPcyxrczt7bGV0IGU9b2UoKSx0PSh0LG4pPT57bGV0IHI7cmV0dXJuKHI9ZVt0XSl8fChyPWVbdF09W10pLHIucHVzaChuKSxlPT57ci5sZW5ndGg+MT9yLmZvckVhY2godD0+dChlKSk6clswXShlKX19O09zPXQoYF9fVlVFX0lOU1RBTkNFX1NFVFRFUlNfX2AsZT0+Sj1lKSxrcz10KGBfX1ZVRV9TU1JfU0VUVEVSU19fYCxlPT5Ocz1lKX12YXIgQXM9ZT0+e2xldCB0PUo7cmV0dXJuIE9zKGUpLGUuc2NvcGUub24oKSwoKT0+e2Uuc2NvcGUub2ZmKCksT3ModCl9fSxqcz0oKT0+e0omJkouc2NvcGUub2ZmKCksT3MobnVsbCl9O2Z1bmN0aW9uIE1zKGUpe3JldHVybiBlLnZub2RlLnNoYXBlRmxhZyY0fXZhciBOcz0hMTtmdW5jdGlvbiBQcyhlLHQ9ITEsbj0hMSl7dCYma3ModCk7bGV0e3Byb3BzOnIsY2hpbGRyZW46aX09ZS52bm9kZSxhPU1zKGUpO2ZvKGUscixhLHQpLFRvKGUsaSxufHx0KTtsZXQgbz1hP0ZzKGUsdCk6dm9pZCAwO3JldHVybiB0JiZrcyghMSksb31mdW5jdGlvbiBGcyhlLHQpe2xldCBuPWUudHlwZTtlLmFjY2Vzc0NhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksZS5wcm94eT1uZXcgUHJveHkoZS5jdHgsZmEpO2xldHtzZXR1cDpyfT1uO2lmKHIpe1dlKCk7bGV0IG49ZS5zZXR1cENvbnRleHQ9ci5sZW5ndGg+MT9VcyhlKTpudWxsLGk9QXMoZSksYT1BbihyLGUsMCxbZS5wcm9wcyxuXSksbz1iKGEpO2lmKEdlKCksaSgpLChvfHxlLnNwKSYmIUVpKGUpJiZYcihlKSxvKXtpZihhLnRoZW4oanMsanMpLHQpcmV0dXJuIGEudGhlbihuPT57a3MoITApO3RyeXtJcyhlLG4sdCl9ZmluYWxseXtrcyghMSl9fSkuY2F0Y2godD0+e01uKHQsZSwwKX0pO2UuYXN5bmNEZXA9YX1lbHNlIElzKGUsYSx0KX1lbHNlIFZzKGUsdCl9ZnVuY3Rpb24gSXMoZSx0LG4pe2codCk/ZS50eXBlLl9fc3NySW5saW5lUmVuZGVyP2Uuc3NyUmVuZGVyPXQ6ZS5yZW5kZXI9dDp5KHQpJiYoZS5zZXR1cFN0YXRlPWFuKHQpKSxWcyhlLG4pfXZhciBMcyxScztmdW5jdGlvbiB6cyhlKXtMcz1lLFJzPWU9PntlLnJlbmRlci5fcmMmJihlLndpdGhQcm94eT1uZXcgUHJveHkoZS5jdHgscGEpKX19dmFyIEJzPSgpPT4hTHM7ZnVuY3Rpb24gVnMoZSx0LG4pe2xldCBpPWUudHlwZTtpZighZS5yZW5kZXIpe2lmKCF0JiZMcyYmIWkucmVuZGVyKXtsZXQgdD1pLnRlbXBsYXRlfHxQYShlKS50ZW1wbGF0ZTtpZih0KXtsZXR7aXNDdXN0b21FbGVtZW50Om4sY29tcGlsZXJPcHRpb25zOnJ9PWUuYXBwQ29udGV4dC5jb25maWcse2RlbGltaXRlcnM6YSxjb21waWxlck9wdGlvbnM6b309aSxjPXMocyh7aXNDdXN0b21FbGVtZW50Om4sZGVsaW1pdGVyczphfSxyKSxvKTtpLnJlbmRlcj1Mcyh0LGMpfX1lLnJlbmRlcj1pLnJlbmRlcnx8cixScyYmUnMoZSl9e2xldCB0PUFzKGUpO1dlKCk7dHJ5e0FhKGUpfWZpbmFsbHl7R2UoKSx0KCl9fX12YXIgSHM9e2dldChlLHQpe3JldHVybiBCKGUsYGdldGAsYGApLGVbdF19fTtmdW5jdGlvbiBVcyhlKXtyZXR1cm57YXR0cnM6bmV3IFByb3h5KGUuYXR0cnMsSHMpLHNsb3RzOmUuc2xvdHMsZW1pdDplLmVtaXQsZXhwb3NlOnQ9PntlLmV4cG9zZWQ9dHx8e319fX1mdW5jdGlvbiBXcyhlKXtyZXR1cm4gZS5leHBvc2VkP2UuZXhwb3NlUHJveHl8fD1uZXcgUHJveHkoYW4ocXQoZS5leHBvc2VkKSkse2dldCh0LG4pe2lmKG4gaW4gdClyZXR1cm4gdFtuXTtpZihuIGluIHVhKXJldHVybiB1YVtuXShlKX0saGFzKGUsdCl7cmV0dXJuIHQgaW4gZXx8dCBpbiB1YX19KTplLnByb3h5fWZ1bmN0aW9uIEdzKGUsdD0hMCl7cmV0dXJuIGcoZSk/ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lOmUubmFtZXx8dCYmZS5fX25hbWV9ZnVuY3Rpb24gS3MoZSl7cmV0dXJuIGcoZSkmJmBfX3ZjY09wdHNgaW4gZX12YXIgcXM9KGUsdCk9Pm1uKGUsdCxOcyk7ZnVuY3Rpb24gSnMoZSx0LG4pe3RyeXtpcygtMSk7bGV0IHI9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcj09PTI/eSh0KSYmIWQodCk/Y3ModCk/cShlLG51bGwsW3RdKTpxKGUsdCk6cShlLG51bGwsdCk6KHI+Mz9uPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTpyPT09MyYmY3MobikmJihuPVtuXSkscShlLHQsbikpfWZpbmFsbHl7aXMoMSl9fWZ1bmN0aW9uIFlzKCl7fWZ1bmN0aW9uIFhzKGUsdCxuLHIpe2xldCBpPW5bcl07aWYoaSYmWnMoaSxlKSlyZXR1cm4gaTtsZXQgYT10KCk7cmV0dXJuIGEubWVtbz1lLnNsaWNlKCksYS5jYWNoZUluZGV4PXIsbltyXT1hfWZ1bmN0aW9uIFpzKGUsdCl7bGV0IG49ZS5tZW1vO2lmKG4ubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKylpZihqKG5bZV0sdFtlXSkpcmV0dXJuITE7cmV0dXJuIHJzPjAmJmVzJiZlcy5wdXNoKGUpLCEwfXZhciBRcz1gMy41LjQxYCwkcz1yLGVjPWtuLHRjPVhuLG5jPVFuLHJjPXtjcmVhdGVDb21wb25lbnRJbnN0YW5jZTpEcyxzZXR1cENvbXBvbmVudDpQcyxyZW5kZXJDb21wb25lbnRSb290OmVvLHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTplcixpc1ZOb2RlOmNzLG5vcm1hbGl6ZVZOb2RlOmJzLGdldENvbXBvbmVudFB1YmxpY0luc3RhbmNlOldzLGVuc3VyZVZhbGlkVk5vZGU6c2EscHVzaFdhcm5pbmdDb250ZXh0OlRuLHBvcFdhcm5pbmdDb250ZXh0OkVufSxpYz12b2lkIDAsYWM9dHlwZW9mIHdpbmRvdzxgdWAmJndpbmRvdy50cnVzdGVkVHlwZXM7aWYoYWMpdHJ5e2ljPWFjLmNyZWF0ZVBvbGljeShgdnVlYCx7Y3JlYXRlSFRNTDplPT5lfSl9Y2F0Y2h7fXZhciBvYz1pYz9lPT5pYy5jcmVhdGVIVE1MKGUpOmU9PmUsc2M9YGh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnYCxjYz1gaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTGAsbGM9dHlwZW9mIGRvY3VtZW50PGB1YD9kb2N1bWVudDpudWxsLHVjPWxjJiZsYy5jcmVhdGVFbGVtZW50KGB0ZW1wbGF0ZWApLGRjPXtpbnNlcnQ6KGUsdCxuKT0+e3QuaW5zZXJ0QmVmb3JlKGUsbnx8bnVsbCl9LHJlbW92ZTplPT57bGV0IHQ9ZS5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQoZSl9LGNyZWF0ZUVsZW1lbnQ6KGUsdCxuLHIpPT57bGV0IGk9dD09PWBzdmdgP2xjLmNyZWF0ZUVsZW1lbnROUyhzYyxlKTp0PT09YG1hdGhtbGA/bGMuY3JlYXRlRWxlbWVudE5TKGNjLGUpOm4/bGMuY3JlYXRlRWxlbWVudChlLHtpczpufSk6bGMuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZT09PWBzZWxlY3RgJiZyJiZyLm11bHRpcGxlIT1udWxsJiZpLnNldEF0dHJpYnV0ZShgbXVsdGlwbGVgLHIubXVsdGlwbGUpLGl9LGNyZWF0ZVRleHQ6ZT0+bGMuY3JlYXRlVGV4dE5vZGUoZSksY3JlYXRlQ29tbWVudDplPT5sYy5jcmVhdGVDb21tZW50KGUpLHNldFRleHQ6KGUsdCk9PntlLm5vZGVWYWx1ZT10fSxzZXRFbGVtZW50VGV4dDooZSx0KT0+e2UudGV4dENvbnRlbnQ9dH0scGFyZW50Tm9kZTplPT5lLnBhcmVudE5vZGUsbmV4dFNpYmxpbmc6ZT0+ZS5uZXh0U2libGluZyxxdWVyeVNlbGVjdG9yOmU9PmxjLnF1ZXJ5U2VsZWN0b3IoZSksc2V0U2NvcGVJZChlLHQpe2Uuc2V0QXR0cmlidXRlKHQsYGApfSxpbnNlcnRTdGF0aWNDb250ZW50KGUsdCxuLHIsaSxhKXtsZXQgbz1uP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkO2lmKGkmJihpPT09YXx8aS5uZXh0U2libGluZykpZm9yKDt0Lmluc2VydEJlZm9yZShpLmNsb25lTm9kZSghMCksbiksIShpPT09YXx8IShpPWkubmV4dFNpYmxpbmcpKTspO2Vsc2V7dWMuaW5uZXJIVE1MPW9jKHI9PT1gc3ZnYD9gPHN2Zz4ke2V9PC9zdmc+YDpyPT09YG1hdGhtbGA/YDxtYXRoPiR7ZX08L21hdGg+YDplKTtsZXQgaT11Yy5jb250ZW50O2lmKHI9PT1gc3ZnYHx8cj09PWBtYXRobWxgKXtsZXQgZT1pLmZpcnN0Q2hpbGQ7Zm9yKDtlLmZpcnN0Q2hpbGQ7KWkuYXBwZW5kQ2hpbGQoZS5maXJzdENoaWxkKTtpLnJlbW92ZUNoaWxkKGUpfXQuaW5zZXJ0QmVmb3JlKGksbil9cmV0dXJuW28/by5uZXh0U2libGluZzp0LmZpcnN0Q2hpbGQsbj9uLnByZXZpb3VzU2libGluZzp0Lmxhc3RDaGlsZF19fSxmYz1gdHJhbnNpdGlvbmAscGM9YGFuaW1hdGlvbmAsbWM9U3ltYm9sKGBfdnRjYCksaGM9e25hbWU6U3RyaW5nLHR5cGU6U3RyaW5nLGNzczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGR1cmF0aW9uOltTdHJpbmcsTnVtYmVyLE9iamVjdF0sZW50ZXJGcm9tQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGVudGVyVG9DbGFzczpTdHJpbmcsYXBwZWFyRnJvbUNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyVG9DbGFzczpTdHJpbmcsbGVhdmVGcm9tQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlVG9DbGFzczpTdHJpbmd9LGdjPXMoe30sTHIsaGMpLF9jPShlPT4oZS5kaXNwbGF5TmFtZT1gVHJhbnNpdGlvbmAsZS5wcm9wcz1nYyxlKSkoKGUse3Nsb3RzOnR9KT0+SnMoVnIsYmMoZSksdCkpLHZjPShlLHQ9W10pPT57ZChlKT9lLmZvckVhY2goZT0+ZSguLi50KSk6ZSYmZSguLi50KX0seWM9ZT0+ZT9kKGUpP2Uuc29tZShlPT5lLmxlbmd0aD4xKTplLmxlbmd0aD4xOiExO2Z1bmN0aW9uIGJjKGUpe2xldCB0PXt9O2ZvcihsZXQgbiBpbiBlKW4gaW4gaGN8fCh0W25dPWVbbl0pO2lmKGUuY3NzPT09ITEpcmV0dXJuIHQ7bGV0e25hbWU6bj1gdmAsdHlwZTpyLGR1cmF0aW9uOmksZW50ZXJGcm9tQ2xhc3M6YT1gJHtufS1lbnRlci1mcm9tYCxlbnRlckFjdGl2ZUNsYXNzOm89YCR7bn0tZW50ZXItYWN0aXZlYCxlbnRlclRvQ2xhc3M6Yz1gJHtufS1lbnRlci10b2AsYXBwZWFyRnJvbUNsYXNzOmw9YSxhcHBlYXJBY3RpdmVDbGFzczp1PW8sYXBwZWFyVG9DbGFzczpkPWMsbGVhdmVGcm9tQ2xhc3M6Zj1gJHtufS1sZWF2ZS1mcm9tYCxsZWF2ZUFjdGl2ZUNsYXNzOnA9YCR7bn0tbGVhdmUtYWN0aXZlYCxsZWF2ZVRvQ2xhc3M6bT1gJHtufS1sZWF2ZS10b2B9PWUsaD14YyhpKSxnPWgmJmhbMF0sXz1oJiZoWzFdLHtvbkJlZm9yZUVudGVyOnYsb25FbnRlcjp5LG9uRW50ZXJDYW5jZWxsZWQ6YixvbkxlYXZlOngsb25MZWF2ZUNhbmNlbGxlZDpTLG9uQmVmb3JlQXBwZWFyOkM9dixvbkFwcGVhcjp3PXksb25BcHBlYXJDYW5jZWxsZWQ6VD1ifT10LEU9KGUsdCxuLHIpPT57ZS5fZW50ZXJDYW5jZWxsZWQ9cix3YyhlLHQ/ZDpjKSx3YyhlLHQ/dTpvKSxuJiZuKCl9LEQ9KGUsdCk9PntlLl9pc0xlYXZpbmc9ITEsd2MoZSxmKSx3YyhlLG0pLHdjKGUscCksdCYmdCgpfSxlZT1lPT4odCxuKT0+e2xldCBpPWU/dzp5LG89KCk9PkUodCxlLG4pO3ZjKGksW3Qsb10pLFRjKCgpPT57d2ModCxlP2w6YSksQ2ModCxlP2Q6YykseWMoaSl8fERjKHQscixnLG8pfSl9O3JldHVybiBzKHQse29uQmVmb3JlRW50ZXIoZSl7dmModixbZV0pLENjKGUsYSksQ2MoZSxvKX0sb25CZWZvcmVBcHBlYXIoZSl7dmMoQyxbZV0pLENjKGUsbCksQ2MoZSx1KX0sb25FbnRlcjplZSghMSksb25BcHBlYXI6ZWUoITApLG9uTGVhdmUoZSx0KXtlLl9pc0xlYXZpbmc9ITA7bGV0IG49KCk9PkQoZSx0KTtDYyhlLGYpLGUuX2VudGVyQ2FuY2VsbGVkPyhDYyhlLHApLGpjKGUpKTooamMoZSksQ2MoZSxwKSksVGMoKCk9PntlLl9pc0xlYXZpbmcmJih3YyhlLGYpLENjKGUsbSkseWMoeCl8fERjKGUscixfLG4pKX0pLHZjKHgsW2Usbl0pfSxvbkVudGVyQ2FuY2VsbGVkKGUpe0UoZSwhMSx2b2lkIDAsITApLHZjKGIsW2VdKX0sb25BcHBlYXJDYW5jZWxsZWQoZSl7RShlLCEwLHZvaWQgMCwhMCksdmMoVCxbZV0pfSxvbkxlYXZlQ2FuY2VsbGVkKGUpe0QoZSksdmMoUyxbZV0pfX0pfWZ1bmN0aW9uIHhjKGUpe2lmKGU9PW51bGwpcmV0dXJuIG51bGw7aWYoeShlKSlyZXR1cm5bU2MoZS5lbnRlciksU2MoZS5sZWF2ZSldO3tsZXQgdD1TYyhlKTtyZXR1cm5bdCx0XX19ZnVuY3Rpb24gU2MoZSl7cmV0dXJuIGllKGUpfWZ1bmN0aW9uIENjKGUsdCl7dC5zcGxpdCgvXHMrLykuZm9yRWFjaCh0PT50JiZlLmNsYXNzTGlzdC5hZGQodCkpLChlW21jXXx8KGVbbWNdPW5ldyBTZXQpKS5hZGQodCl9ZnVuY3Rpb24gd2MoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKHQ9PnQmJmUuY2xhc3NMaXN0LnJlbW92ZSh0KSk7bGV0IG49ZVttY107biYmKG4uZGVsZXRlKHQpLG4uc2l6ZXx8KGVbbWNdPXZvaWQgMCkpfWZ1bmN0aW9uIFRjKGUpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZShlKX0pfXZhciBFYz0wO2Z1bmN0aW9uIERjKGUsdCxuLHIpe2xldCBpPWUuX2VuZElkPSsrRWMsYT0oKT0+e2k9PT1lLl9lbmRJZCYmcigpfTtpZihuIT1udWxsKXJldHVybiBzZXRUaW1lb3V0KGEsbik7bGV0e3R5cGU6byx0aW1lb3V0OnMscHJvcENvdW50OmN9PU9jKGUsdCk7aWYoIW8pcmV0dXJuIHIoKTtsZXQgbD1vK2BlbmRgLHU9MCxkPSgpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKGwsZiksYSgpfSxmPXQ9Pnt0LnRhcmdldD09PWUmJisrdT49YyYmZCgpfTtzZXRUaW1lb3V0KCgpPT57dTxjJiZkKCl9LHMrMSksZS5hZGRFdmVudExpc3RlbmVyKGwsZil9ZnVuY3Rpb24gT2MoZSx0KXtsZXQgbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKSxyPWU9PihuW2VdfHxgYCkuc3BsaXQoYCwgYCksaT1yKGAke2ZjfURlbGF5YCksYT1yKGAke2ZjfUR1cmF0aW9uYCksbz1rYyhpLGEpLHM9cihgJHtwY31EZWxheWApLGM9cihgJHtwY31EdXJhdGlvbmApLGw9a2MocyxjKSx1PW51bGwsZD0wLGY9MDt0PT09ZmM/bz4wJiYodT1mYyxkPW8sZj1hLmxlbmd0aCk6dD09PXBjP2w+MCYmKHU9cGMsZD1sLGY9Yy5sZW5ndGgpOihkPU1hdGgubWF4KG8sbCksdT1kPjA/bz5sP2ZjOnBjOm51bGwsZj11P3U9PT1mYz9hLmxlbmd0aDpjLmxlbmd0aDowKTtsZXQgcD11PT09ZmMmJi9cYig/OnRyYW5zZm9ybXxhbGwpKD86LHwkKS8udGVzdChyKGAke2ZjfVByb3BlcnR5YCkudG9TdHJpbmcoKSk7cmV0dXJue3R5cGU6dSx0aW1lb3V0OmQscHJvcENvdW50OmYsaGFzVHJhbnNmb3JtOnB9fWZ1bmN0aW9uIGtjKGUsdCl7Zm9yKDtlLmxlbmd0aDx0Lmxlbmd0aDspZT1lLmNvbmNhdChlKTtyZXR1cm4gTWF0aC5tYXgoLi4udC5tYXAoKHQsbik9PkFjKHQpK0FjKGVbbl0pKSl9ZnVuY3Rpb24gQWMoZSl7cmV0dXJuIGU9PT1gYXV0b2A/MDpOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKGAsYCxgLmApKSoxZTN9ZnVuY3Rpb24gamMoZSl7cmV0dXJuKGU/ZS5vd25lckRvY3VtZW50OmRvY3VtZW50KS5ib2R5Lm9mZnNldEhlaWdodH1mdW5jdGlvbiBNYyhlLHQsbil7bGV0IHI9ZVttY107ciYmKHQ9KHQ/W3QsLi4ucl06Wy4uLnJdKS5qb2luKGAgYCkpLHQ9PW51bGw/ZS5yZW1vdmVBdHRyaWJ1dGUoYGNsYXNzYCk6bj9lLnNldEF0dHJpYnV0ZShgY2xhc3NgLHQpOmUuY2xhc3NOYW1lPXR9dmFyIE5jPVN5bWJvbChgX3ZvZGApLFBjPVN5bWJvbChgX3ZzaGApLEZjPXtuYW1lOmBzaG93YCxiZWZvcmVNb3VudChlLHt2YWx1ZTp0fSx7dHJhbnNpdGlvbjpufSl7ZVtOY109ZS5zdHlsZS5kaXNwbGF5PT09YG5vbmVgP2BgOmUuc3R5bGUuZGlzcGxheSxuJiZ0P24uYmVmb3JlRW50ZXIoZSk6SWMoZSx0KX0sbW91bnRlZChlLHt2YWx1ZTp0fSx7dHJhbnNpdGlvbjpufSl7biYmdCYmbi5lbnRlcihlKX0sdXBkYXRlZChlLHt2YWx1ZTp0LG9sZFZhbHVlOm59LHt0cmFuc2l0aW9uOnJ9KXshdCE9IW4mJihyP3Q/KHIuYmVmb3JlRW50ZXIoZSksSWMoZSwhMCksci5lbnRlcihlKSk6ci5sZWF2ZShlLCgpPT57SWMoZSwhMSl9KTpJYyhlLHQpKX0sYmVmb3JlVW5tb3VudChlLHt2YWx1ZTp0fSl7SWMoZSx0KX19O2Z1bmN0aW9uIEljKGUsdCl7ZS5zdHlsZS5kaXNwbGF5PXQ/ZVtOY106YG5vbmVgLGVbUGNdPSF0fWZ1bmN0aW9uIExjKCl7RmMuZ2V0U1NSUHJvcHM9KHt2YWx1ZTplfSk9PntpZighZSlyZXR1cm57c3R5bGU6e2Rpc3BsYXk6YG5vbmVgfX19fXZhciBSYz1TeW1ib2woYGApO2Z1bmN0aW9uIHpjKGUpe2xldCB0PVkoKTtpZighdClyZXR1cm47bGV0IG49dC51dD0obj1lKHQucHJveHkpKT0+e0FycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtdi1vd25lcj0iJHt0LnVpZH0iXWApKS5mb3JFYWNoKGU9PlZjKGUsbikpfSxpPSgpPT57bGV0IHI9ZSh0LnByb3h5KTt0LmNlP1ZjKHQuY2Uscik6QmModC5zdWJUcmVlLHIpLG4ocil9O0hpKCgpPT57R24oaSl9KSxWaSgoKT0+e2hyKGkscix7Zmx1c2g6YHBvc3RgfSk7bGV0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoaSk7ZS5vYnNlcnZlKHQuc3ViVHJlZS5lbC5wYXJlbnROb2RlLHtjaGlsZExpc3Q6ITB9KSxHaSgoKT0+ZS5kaXNjb25uZWN0KCkpfSl9ZnVuY3Rpb24gQmMoZSx0KXtpZihlLnNoYXBlRmxhZyYxMjgpe2xldCBuPWUuc3VzcGVuc2U7ZT1uLmFjdGl2ZUJyYW5jaCxuLnBlbmRpbmdCcmFuY2gmJiFuLmlzSHlkcmF0aW5nJiZuLmVmZmVjdHMucHVzaCgoKT0+e0JjKG4uYWN0aXZlQnJhbmNoLHQpfSl9Zm9yKDtlLmNvbXBvbmVudDspZT1lLmNvbXBvbmVudC5zdWJUcmVlO2lmKGUuc2hhcGVGbGFnJjEmJmUuZWwpVmMoZS5lbCx0KTtlbHNlIGlmKGUudHlwZT09PUcpZS5jaGlsZHJlbi5mb3JFYWNoKGU9PkJjKGUsdCkpO2Vsc2UgaWYoZS50eXBlPT09UW8pe2xldHtlbDpuLGFuY2hvcjpyfT1lO2Zvcig7biYmKFZjKG4sdCksbiE9PXIpOyluPW4ubmV4dFNpYmxpbmd9fWZ1bmN0aW9uIFZjKGUsdCl7aWYoZS5ub2RlVHlwZT09PTEpe2xldCBuPWUuc3R5bGUscj1gYDtmb3IobGV0IGUgaW4gdCl7bGV0IGk9eGUodFtlXSk7bi5zZXRQcm9wZXJ0eShgLS0ke2V9YCxpKSxyKz1gLS0ke2V9OiAke2l9O2B9bltSY109cn19dmFyIEhjPS8oPzpefDspXHMqZGlzcGxheVxzKjovO2Z1bmN0aW9uIFVjKGUsdCxuKXtsZXQgcj1lLnN0eWxlLGk9XyhuKSxhPSExO2lmKG4mJiFpKXtpZih0KXtpZihfKHQpKWZvcihsZXQgZSBvZiB0LnNwbGl0KGA7YCkpe2xldCB0PWUuc2xpY2UoMCxlLmluZGV4T2YoYDpgKSkudHJpbSgpO25bdF0/P0djKHIsdCxgYCl9ZWxzZSBmb3IobGV0IGUgaW4gdCluW2VdPz9HYyhyLGUsYGApfWZvcihsZXQgaSBpbiBuKXtpPT09YGRpc3BsYXlgJiYoYT0hMCk7bGV0IG89bltpXTtvPT1udWxsP0djKHIsaSxgYCk6WWMoZSxpLCFfKHQpJiZ0P3RbaV06dm9pZCAwLG8pfHxHYyhyLGksbyl9fWVsc2UgaWYoaSl7aWYodCE9PW4pe2xldCBlPXJbUmNdO2UmJihuKz1gO2ArZSksci5jc3NUZXh0PW4sYT1IYy50ZXN0KG4pfX1lbHNlIHQmJmUucmVtb3ZlQXR0cmlidXRlKGBzdHlsZWApO05jIGluIGUmJihlW05jXT1hP3IuZGlzcGxheTpgYCxlW1BjXSYmKHIuZGlzcGxheT1gbm9uZWApKX12YXIgV2M9L1xzKiFpbXBvcnRhbnQkLztmdW5jdGlvbiBHYyhlLHQsbil7aWYoZChuKSluLmZvckVhY2gobj0+R2MoZSx0LG4pKTtlbHNlIGlmKG4/Pz1gYCx0LnN0YXJ0c1dpdGgoYC0tYCkpZS5zZXRQcm9wZXJ0eSh0LG4pO2Vsc2V7bGV0IHI9SmMoZSx0KTtXYy50ZXN0KG4pP2Uuc2V0UHJvcGVydHkoayhyKSxuLnJlcGxhY2UoV2MsYGApLGBpbXBvcnRhbnRgKTplW3JdPW59fXZhciBLYz1bYFdlYmtpdGAsYE1vemAsYG1zYF0scWM9e307ZnVuY3Rpb24gSmMoZSx0KXtsZXQgbj1xY1t0XTtpZihuKXJldHVybiBuO2xldCByPU8odCk7aWYociE9PWBmaWx0ZXJgJiZyIGluIGUpcmV0dXJuIHFjW3RdPXI7cj1BKHIpO2ZvcihsZXQgbj0wO248S2MubGVuZ3RoO24rKyl7bGV0IGk9S2Nbbl0rcjtpZihpIGluIGUpcmV0dXJuIHFjW3RdPWl9cmV0dXJuIHR9ZnVuY3Rpb24gWWMoZSx0LG4scil7cmV0dXJuIGUudGFnTmFtZT09PWBURVhUQVJFQWAmJih0PT09YHdpZHRoYHx8dD09PWBoZWlnaHRgKSYmXyhyKSYmbj09PXJ9dmFyIFhjPWBodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rYDtmdW5jdGlvbiBaYyhlLHQsbixyLGksYT1mZSh0KSl7ciYmdC5zdGFydHNXaXRoKGB4bGluazpgKT9uPT1udWxsP2UucmVtb3ZlQXR0cmlidXRlTlMoWGMsdC5zbGljZSg2LHQubGVuZ3RoKSk6ZS5zZXRBdHRyaWJ1dGVOUyhYYyx0LG4pOm49PW51bGx8fGEmJiFwZShuKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LGE/YGA6dihuKT9TdHJpbmcobik6bil9ZnVuY3Rpb24gUWMoZSx0LG4scixpKXtpZih0PT09YGlubmVySFRNTGB8fHQ9PT1gdGV4dENvbnRlbnRgKXtuIT1udWxsJiYoZVt0XT10PT09YGlubmVySFRNTGA/b2Mobik6bik7cmV0dXJufWxldCBhPWUudGFnTmFtZTtpZih0PT09YHZhbHVlYCYmYSE9PWBQUk9HUkVTU2AmJiFhLmluY2x1ZGVzKGAtYCkpe2xldCByPWE9PT1gT1BUSU9OYD9lLmdldEF0dHJpYnV0ZShgdmFsdWVgKXx8YGA6ZS52YWx1ZSxpPW49PW51bGw/ZS50eXBlPT09YGNoZWNrYm94YD9gb25gOmBgOlN0cmluZyhuKTsociE9PWl8fCEoYF92YWx1ZWBpbiBlKSkmJihlLnZhbHVlPWkpLG4/P2UucmVtb3ZlQXR0cmlidXRlKHQpLGUuX3ZhbHVlPW47cmV0dXJufWxldCBvPSExO2lmKG49PT1gYHx8bj09bnVsbCl7bGV0IHI9dHlwZW9mIGVbdF07cj09PWBib29sZWFuYD9uPXBlKG4pOm49PW51bGwmJnI9PT1gc3RyaW5nYD8obj1gYCxvPSEwKTpyPT09YG51bWJlcmAmJihuPTAsbz0hMCl9dHJ5e2VbdF09bn1jYXRjaHt9byYmZS5yZW1vdmVBdHRyaWJ1dGUoaXx8dCl9ZnVuY3Rpb24gJGMoZSx0LG4scil7ZS5hZGRFdmVudExpc3RlbmVyKHQsbixyKX1mdW5jdGlvbiBlbChlLHQsbixyKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLHIpfXZhciB0bD1TeW1ib2woYF92ZWlgKTtmdW5jdGlvbiBubChlLHQsbixyLGk9bnVsbCl7bGV0IGE9ZVt0bF18fChlW3RsXT17fSksbz1hW3RdO2lmKHImJm8pby52YWx1ZT1yO2Vsc2V7bGV0W24sc109YWwodCk7cj8kYyhlLG4sYVt0XT1sbChyLGkpLHMpOm8mJihlbChlLG4sbyxzKSxhW3RdPXZvaWQgMCl9fXZhciBybD0vKE9uY2V8UGFzc2l2ZXxDYXB0dXJlKSQvLGlsPS9eb246Pyg/Ok9uY2V8UGFzc2l2ZXxDYXB0dXJlKSQvO2Z1bmN0aW9uIGFsKGUpe2xldCB0LG47Zm9yKDsobj1lLm1hdGNoKHJsKSkmJiFpbC50ZXN0KGUpOyl0fHw9e30sZT1lLnNsaWNlKDAsZS5sZW5ndGgtblsxXS5sZW5ndGgpLHRbblsxXS50b0xvd2VyQ2FzZSgpXT0hMDtyZXR1cm5bZVsyXT09PWA6YD9lLnNsaWNlKDMpOmsoZS5zbGljZSgyKSksdF19dmFyIG9sPTAsc2w9UHJvbWlzZS5yZXNvbHZlKCksY2w9KCk9Pm9sfHw9KHNsLnRoZW4oKCk9Pm9sPTApLERhdGUubm93KCkpO2Z1bmN0aW9uIGxsKGUsdCl7bGV0IG49ZT0+e2lmKCFlLl92dHMpZS5fdnRzPURhdGUubm93KCk7ZWxzZSBpZihlLl92dHM8PW4uYXR0YWNoZWQpcmV0dXJuO2xldCByPW4udmFsdWU7aWYoZChyKSl7bGV0IG49ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249KCk9PntuLmNhbGwoZSksZS5fc3RvcHBlZD0hMH07bGV0IGk9ci5zbGljZSgpLGE9W2VdO2ZvcihsZXQgbj0wO248aS5sZW5ndGgmJiFlLl9zdG9wcGVkO24rKyl7bGV0IGU9aVtuXTtlJiZqbihlLHQsNSxhKX19ZWxzZSBqbihyLHQsNSxbZV0pfTtyZXR1cm4gbi52YWx1ZT1lLG4uYXR0YWNoZWQ9Y2woKSxufXZhciB1bD1lPT5lLmNoYXJDb2RlQXQoMCk9PT0xMTEmJmUuY2hhckNvZGVBdCgxKT09PTExMCYmZS5jaGFyQ29kZUF0KDIpPjk2JiZlLmNoYXJDb2RlQXQoMik8MTIzLGRsPShlLHQsbixyLGkscyk9PntsZXQgYz1pPT09YHN2Z2A7dD09PWBjbGFzc2A/TWMoZSxyLGMpOnQ9PT1gc3R5bGVgP1VjKGUsbixyKTphKHQpP28odCl8fG5sKGUsdCxuLHIscyk6KHRbMF09PT1gLmA/KHQ9dC5zbGljZSgxKSwhMCk6dFswXT09PWBeYD8odD10LnNsaWNlKDEpLCExKTpmbChlLHQscixjKSk/KFFjKGUsdCxyKSwhZS50YWdOYW1lLmluY2x1ZGVzKGAtYCkmJih0PT09YHZhbHVlYHx8dD09PWBjaGVja2VkYHx8dD09PWBzZWxlY3RlZGApJiZaYyhlLHQscixjLHMsdCE9PWB2YWx1ZWApKTplLl9pc1Z1ZUNFJiYocGwoZSx0KXx8ZS5fZGVmLl9fYXN5bmNMb2FkZXImJigvW0EtWl0vLnRlc3QodCl8fCFfKHIpKSk/UWMoZSxPKHQpLHIscyx0KToodD09PWB0cnVlLXZhbHVlYD9lLl90cnVlVmFsdWU9cjp0PT09YGZhbHNlLXZhbHVlYCYmKGUuX2ZhbHNlVmFsdWU9ciksWmMoZSx0LHIsYykpfTtmdW5jdGlvbiBmbChlLHQsbixyKXtpZihyKXJldHVybiEhKHQ9PT1gaW5uZXJIVE1MYHx8dD09PWB0ZXh0Q29udGVudGB8fHQgaW4gZSYmdWwodCkmJmcobikpO2lmKHQ9PT1gc3BlbGxjaGVja2B8fHQ9PT1gZHJhZ2dhYmxlYHx8dD09PWB0cmFuc2xhdGVgfHx0PT09YGF1dG9jb3JyZWN0YHx8dD09PWBzYW5kYm94YCYmZS50YWdOYW1lPT09YElGUkFNRWB8fHQ9PT1gZm9ybWB8fHQ9PT1gbGlzdGAmJmUudGFnTmFtZT09PWBJTlBVVGB8fHQ9PT1gdHlwZWAmJmUudGFnTmFtZT09PWBURVhUQVJFQWApcmV0dXJuITE7aWYodD09PWB3aWR0aGB8fHQ9PT1gaGVpZ2h0YCl7bGV0IHQ9ZS50YWdOYW1lO2lmKHQ9PT1gSU1HYHx8dD09PWBWSURFT2B8fHQ9PT1gQ0FOVkFTYHx8dD09PWBTT1VSQ0VgKXJldHVybiExfXJldHVybiB1bCh0KSYmXyhuKT8hMTp0IGluIGV9ZnVuY3Rpb24gcGwoZSx0KXtsZXQgbj1lLl9kZWYucHJvcHM7aWYoIW4pcmV0dXJuITE7bGV0IHI9Tyh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLnNvbWUoZT0+TyhlKT09PXIpOk9iamVjdC5rZXlzKG4pLnNvbWUoZT0+TyhlKT09PXIpfXZhciBtbD17fTtmdW5jdGlvbiBobChlLHQsbil7bGV0IHI9SnIoZSx0KTt3KHIpJiYocj1zKHt9LHIsdCkpO2NsYXNzIGkgZXh0ZW5kcyB2bHtjb25zdHJ1Y3RvcihlKXtzdXBlcihyLGUsbil9fXJldHVybiBpLmRlZj1yLGl9dmFyIGdsPSgoZSx0KT0+aGwoZSx0LGx1KSksX2w9dHlwZW9mIEhUTUxFbGVtZW50PGB1YD9IVE1MRWxlbWVudDpjbGFzc3t9LHZsPWNsYXNzIGUgZXh0ZW5kcyBfbHtjb25zdHJ1Y3RvcihlLHQ9e30sbj1jdSl7c3VwZXIoKSx0aGlzLl9kZWY9ZSx0aGlzLl9wcm9wcz10LHRoaXMuX2NyZWF0ZUFwcD1uLHRoaXMuX2lzVnVlQ0U9ITAsdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9hcHA9bnVsbCx0aGlzLl9ub25jZT10aGlzLl9kZWYubm9uY2UsdGhpcy5fY29ubmVjdGVkPSExLHRoaXMuX3Jlc29sdmVkPSExLHRoaXMuX3BhdGNoaW5nPSExLHRoaXMuX2RpcnR5PSExLHRoaXMuX251bWJlclByb3BzPW51bGwsdGhpcy5fc3R5bGVDaGlsZHJlbj1uZXcgV2Vha1NldCx0aGlzLl9zdHlsZUFuY2hvcnM9bmV3IFdlYWtNYXAsdGhpcy5fb2I9bnVsbCx0aGlzLnNoYWRvd1Jvb3QmJm4hPT1jdT90aGlzLl9yb290PXRoaXMuc2hhZG93Um9vdDplLnNoYWRvd1Jvb3Q9PT0hMT90aGlzLl9yb290PXRoaXM6KHRoaXMuYXR0YWNoU2hhZG93KHMoe30sZS5zaGFkb3dSb290T3B0aW9ucyx7bW9kZTpgb3BlbmB9KSksdGhpcy5fcm9vdD10aGlzLnNoYWRvd1Jvb3QpfWNvbm5lY3RlZENhbGxiYWNrKCl7aWYoIXRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuOyF0aGlzLnNoYWRvd1Jvb3QmJiF0aGlzLl9yZXNvbHZlZCYmdGhpcy5fcGFyc2VTbG90cygpLHRoaXMuX2Nvbm5lY3RlZD0hMDtsZXQgdD10aGlzO2Zvcig7dCYmPXQuYXNzaWduZWRTbG90fHx0LnBhcmVudE5vZGV8fHQuaG9zdDspaWYodCBpbnN0YW5jZW9mIGUpe3RoaXMuX3BhcmVudD10O2JyZWFrfXRoaXMuX2luc3RhbmNlfHwodGhpcy5fcmVzb2x2ZWQ/dGhpcy5fbW91bnQodGhpcy5fZGVmKTp0JiZ0Ll9wZW5kaW5nUmVzb2x2ZT90aGlzLl9wZW5kaW5nUmVzb2x2ZT10Ll9wZW5kaW5nUmVzb2x2ZS50aGVuKCgpPT57aWYodGhpcy5fcGVuZGluZ1Jlc29sdmU9dm9pZCAwLHRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuIHRoaXMuX3Jlc29sdmVEZWYoKX0pOnRoaXMuX3Jlc29sdmVEZWYoKSl9X3NldFBhcmVudChlPXRoaXMuX3BhcmVudCl7ZSYmKHRoaXMuX2luc3RhbmNlLnBhcmVudD1lLl9pbnN0YW5jZSx0aGlzLl9pbmhlcml0UGFyZW50Q29udGV4dChlKSl9X2luaGVyaXRQYXJlbnRDb250ZXh0KGU9dGhpcy5fcGFyZW50KXtlJiZ0aGlzLl9hcHAmJk9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLl9hcHAuX2NvbnRleHQucHJvdmlkZXMsZS5faW5zdGFuY2UucHJvdmlkZXMpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fY29ubmVjdGVkPSExLFZuKCgpPT57dGhpcy5fY29ubmVjdGVkfHwodGhpcy5fb2ImJj0odGhpcy5fb2IuZGlzY29ubmVjdCgpLG51bGwpLHRoaXMuX2FwcCYmdGhpcy5fYXBwLnVubW91bnQoKSx0aGlzLl9pbnN0YW5jZSYmKHRoaXMuX2luc3RhbmNlLmNlPXZvaWQgMCksdGhpcy5fYXBwPXRoaXMuX2luc3RhbmNlPW51bGwsdGhpcy5fdGVsZXBvcnRUYXJnZXRzJiY9KHRoaXMuX3RlbGVwb3J0VGFyZ2V0cy5jbGVhcigpLHZvaWQgMCkpfSl9X3Byb2Nlc3NNdXRhdGlvbnMoZSl7Zm9yKGxldCB0IG9mIGUpdGhpcy5fc2V0QXR0cih0LmF0dHJpYnV0ZU5hbWUpfV9yZXNvbHZlRGVmKCl7aWYodGhpcy5fcGVuZGluZ1Jlc29sdmUpcmV0dXJuIHRoaXMuX3BlbmRpbmdSZXNvbHZlO2ZvcihsZXQgZT0wO2U8dGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDtlKyspdGhpcy5fc2V0QXR0cih0aGlzLmF0dHJpYnV0ZXNbZV0ubmFtZSk7dGhpcy5fb2I9bmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5fcHJvY2Vzc011dGF0aW9ucy5iaW5kKHRoaXMpKSx0aGlzLl9vYi5vYnNlcnZlKHRoaXMse2F0dHJpYnV0ZXM6ITB9KTtsZXQgZT0oZSx0PSExKT0+e3RoaXMuX3Jlc29sdmVkPSEwLHRoaXMuX3BlbmRpbmdSZXNvbHZlPXZvaWQgMDtsZXR7cHJvcHM6bixzdHlsZXM6cn09ZSxpO2lmKG4mJiFkKG4pKWZvcihsZXQgZSBpbiBuKXtsZXQgdD1uW2VdOyh0PT09TnVtYmVyfHx0JiZ0LnR5cGU9PT1OdW1iZXIpJiYoZSBpbiB0aGlzLl9wcm9wcyYmKHRoaXMuX3Byb3BzW2VdPWllKHRoaXMuX3Byb3BzW2VdKSksKGl8fD1PYmplY3QuY3JlYXRlKG51bGwpKVtPKGUpXT0hMCl9dGhpcy5fbnVtYmVyUHJvcHM9aSx0aGlzLl9yZXNvbHZlUHJvcHMoZSksdGhpcy5zaGFkb3dSb290JiZ0aGlzLl9hcHBseVN0eWxlcyhyKSx0aGlzLl9tb3VudChlKX0sdD10aGlzLl9kZWYuX19hc3luY0xvYWRlcjtpZih0KXJldHVybiB0aGlzLl9wZW5kaW5nUmVzb2x2ZT10KCkudGhlbih0PT57dC5jb25maWd1cmVBcHA9dGhpcy5fZGVmLmNvbmZpZ3VyZUFwcCxlKHRoaXMuX2RlZj10LCEwKX0pLHRoaXMuX3BlbmRpbmdSZXNvbHZlO2UodGhpcy5fZGVmKX1fbW91bnQoZSl7dGhpcy5fYXBwPXRoaXMuX2NyZWF0ZUFwcChlKSx0aGlzLl9pbmhlcml0UGFyZW50Q29udGV4dCgpLGUuY29uZmlndXJlQXBwJiZlLmNvbmZpZ3VyZUFwcCh0aGlzLl9hcHApLHRoaXMuX2FwcC5fY2VWTm9kZT10aGlzLl9jcmVhdGVWTm9kZSgpLHRoaXMuX2FwcC5tb3VudCh0aGlzLl9yb290KTtsZXQgdD10aGlzLl9pbnN0YW5jZSYmdGhpcy5faW5zdGFuY2UuZXhwb3NlZDtpZih0KWZvcihsZXQgZSBpbiB0KXUodGhpcyxlKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsZSx7Z2V0OigpPT50bih0W2VdKX0pfV9yZXNvbHZlUHJvcHMoZSl7bGV0e3Byb3BzOnR9PWUsbj1kKHQpP3Q6T2JqZWN0LmtleXModHx8e30pO2ZvcihsZXQgZSBvZiBPYmplY3Qua2V5cyh0aGlzKSllWzBdIT09YF9gJiZuLmluY2x1ZGVzKGUpJiZ0aGlzLl9zZXRQcm9wKGUsdGhpc1tlXSk7Zm9yKGxldCBlIG9mIG4ubWFwKE8pKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2dldCgpe3JldHVybiB0aGlzLl9nZXRQcm9wKGUpfSxzZXQodCl7dGhpcy5fc2V0UHJvcChlLHQsITAsIXRoaXMuX3BhdGNoaW5nKX19KX1fc2V0QXR0cihlKXtpZihlLnN0YXJ0c1dpdGgoYGRhdGEtdi1gKSlyZXR1cm47bGV0IHQ9dGhpcy5oYXNBdHRyaWJ1dGUoZSksbj10P3RoaXMuZ2V0QXR0cmlidXRlKGUpOm1sLHI9TyhlKTt0JiZ0aGlzLl9udW1iZXJQcm9wcyYmdGhpcy5fbnVtYmVyUHJvcHNbcl0mJihuPWllKG4pKSx0aGlzLl9zZXRQcm9wKHIsbiwhMSwhMCl9X2dldFByb3AoZSl7cmV0dXJuIHRoaXMuX3Byb3BzW2VdfV9zZXRQcm9wKGUsdCxuPSEwLHI9ITEpe2lmKHQhPT10aGlzLl9wcm9wc1tlXSYmKHRoaXMuX2RpcnR5PSEwLHQ9PT1tbD9kZWxldGUgdGhpcy5fcHJvcHNbZV06KHRoaXMuX3Byb3BzW2VdPXQsZT09PWBrZXlgJiZ0aGlzLl9hcHAmJih0aGlzLl9hcHAuX2NlVk5vZGUua2V5PXQpKSxyJiZ0aGlzLl9pbnN0YW5jZSYmdGhpcy5fdXBkYXRlKCksbikpe2xldCBuPXRoaXMuX29iO24mJih0aGlzLl9wcm9jZXNzTXV0YXRpb25zKG4udGFrZVJlY29yZHMoKSksbi5kaXNjb25uZWN0KCkpLHQ9PT0hMD90aGlzLnNldEF0dHJpYnV0ZShrKGUpLGBgKTp0eXBlb2YgdD09YHN0cmluZ2B8fHR5cGVvZiB0PT1gbnVtYmVyYD90aGlzLnNldEF0dHJpYnV0ZShrKGUpLHQrYGApOnR8fHRoaXMucmVtb3ZlQXR0cmlidXRlKGsoZSkpLG4mJm4ub2JzZXJ2ZSh0aGlzLHthdHRyaWJ1dGVzOiEwfSl9fV91cGRhdGUoKXtsZXQgZT10aGlzLl9jcmVhdGVWTm9kZSgpO3RoaXMuX2FwcCYmKGUuYXBwQ29udGV4dD10aGlzLl9hcHAuX2NvbnRleHQpLG91KGUsdGhpcy5fcm9vdCl9X2NyZWF0ZVZOb2RlKCl7bGV0IGU9e307dGhpcy5zaGFkb3dSb290fHwoZS5vblZub2RlTW91bnRlZD1lLm9uVm5vZGVVcGRhdGVkPXRoaXMuX3JlbmRlclNsb3RzLmJpbmQodGhpcykpO2xldCB0PXEodGhpcy5fZGVmLHMoZSx0aGlzLl9wcm9wcykpO3JldHVybiB0aGlzLl9pbnN0YW5jZXx8KHQuY2U9ZT0+e3RoaXMuX2luc3RhbmNlPWUsZS5jZT10aGlzLGUuaXNDRT0hMDtsZXQgdD0oZSx0KT0+e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoZSx3KHRbMF0pP3Moe2RldGFpbDp0fSx0WzBdKTp7ZGV0YWlsOnR9KSl9O2UuZW1pdD0oZSwuLi5uKT0+e3QoZSxuKSxrKGUpIT09ZSYmdChrKGUpLG4pfSx0aGlzLl9zZXRQYXJlbnQoKX0pLHR9X2FwcGx5U3R5bGVzKGUsdCxuKXtpZighZSlyZXR1cm47aWYodCl7aWYodD09PXRoaXMuX2RlZnx8dGhpcy5fc3R5bGVDaGlsZHJlbi5oYXModCkpcmV0dXJuO3RoaXMuX3N0eWxlQ2hpbGRyZW4uYWRkKHQpfWxldCByPXRoaXMuX25vbmNlLGk9dGhpcy5zaGFkb3dSb290LGE9bj90aGlzLl9nZXRTdHlsZUFuY2hvcihuKXx8dGhpcy5fZ2V0U3R5bGVBbmNob3IodGhpcy5fZGVmKTp0aGlzLl9nZXRSb290U3R5bGVJbnNlcnRpb25BbmNob3IoaSksbz1udWxsO2ZvcihsZXQgcz1lLmxlbmd0aC0xO3M+PTA7cy0tKXtsZXQgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBzdHlsZWApO3ImJmMuc2V0QXR0cmlidXRlKGBub25jZWAsciksYy50ZXh0Q29udGVudD1lW3NdLGkuaW5zZXJ0QmVmb3JlKGMsb3x8YSksbz1jLHM9PT0wJiYobnx8dGhpcy5fc3R5bGVBbmNob3JzLnNldCh0aGlzLl9kZWYsYyksdCYmdGhpcy5fc3R5bGVBbmNob3JzLnNldCh0LGMpKX19X2dldFN0eWxlQW5jaG9yKGUpe2lmKCFlKXJldHVybiBudWxsO2xldCB0PXRoaXMuX3N0eWxlQW5jaG9ycy5nZXQoZSk7cmV0dXJuIHQmJnQucGFyZW50Tm9kZT09PXRoaXMuc2hhZG93Um9vdD90Oih0JiZ0aGlzLl9zdHlsZUFuY2hvcnMuZGVsZXRlKGUpLG51bGwpfV9nZXRSb290U3R5bGVJbnNlcnRpb25BbmNob3IoZSl7Zm9yKGxldCB0PTA7dDxlLmNoaWxkTm9kZXMubGVuZ3RoO3QrKyl7bGV0IG49ZS5jaGlsZE5vZGVzW3RdO2lmKCEobiBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpKXJldHVybiBufXJldHVybiBudWxsfV9wYXJzZVNsb3RzKCl7bGV0IGU9dGhpcy5fc2xvdHM9e30sdDtmb3IoO3Q9dGhpcy5maXJzdENoaWxkOyl7bGV0IG49dC5ub2RlVHlwZT09PTEmJnQuZ2V0QXR0cmlidXRlKGBzbG90YCl8fGBkZWZhdWx0YDsoZVtuXXx8KGVbbl09W10pKS5wdXNoKHQpLHRoaXMucmVtb3ZlQ2hpbGQodCl9fV9yZW5kZXJTbG90cygpe2xldCBlPXRoaXMuX2dldFNsb3RzKCksdD10aGlzLl9pbnN0YW5jZS50eXBlLl9fc2NvcGVJZDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHI9ZVtuXSxpPXIuZ2V0QXR0cmlidXRlKGBuYW1lYCl8fGBkZWZhdWx0YCxhPXRoaXMuX3Nsb3RzW2ldLG89ci5wYXJlbnROb2RlO2lmKGEpZm9yKGxldCBlIG9mIGEpe2lmKHQmJmUubm9kZVR5cGU9PT0xKXtsZXQgbj10K2Atc2Ascj1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGUsMSk7ZS5zZXRBdHRyaWJ1dGUobixgYCk7bGV0IGk7Zm9yKDtpPXIubmV4dE5vZGUoKTspaS5zZXRBdHRyaWJ1dGUobixgYCl9by5pbnNlcnRCZWZvcmUoZSxyKX1lbHNlIGZvcig7ci5maXJzdENoaWxkOylvLmluc2VydEJlZm9yZShyLmZpcnN0Q2hpbGQscik7by5yZW1vdmVDaGlsZChyKX19X2dldFNsb3RzKCl7bGV0IGU9W3RoaXNdO3RoaXMuX3RlbGVwb3J0VGFyZ2V0cyYmZS5wdXNoKC4uLnRoaXMuX3RlbGVwb3J0VGFyZ2V0cyk7bGV0IHQ9bmV3IFNldDtmb3IobGV0IG4gb2YgZSl7bGV0IGU9bi5xdWVyeVNlbGVjdG9yQWxsKGBzbG90YCk7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5hZGQoZVtuXSl9cmV0dXJuIEFycmF5LmZyb20odCl9X2luamVjdENoaWxkU3R5bGUoZSx0KXt0aGlzLl9hcHBseVN0eWxlcyhlLnN0eWxlcyxlLHQpfV9iZWdpblBhdGNoKCl7dGhpcy5fcGF0Y2hpbmc9ITAsdGhpcy5fZGlydHk9ITF9X2VuZFBhdGNoKCl7dGhpcy5fcGF0Y2hpbmc9ITEsdGhpcy5fZGlydHkmJnRoaXMuX2luc3RhbmNlJiZ0aGlzLl91cGRhdGUoKX1faGFzU2hhZG93Um9vdCgpe3JldHVybiB0aGlzLl9kZWYuc2hhZG93Um9vdCE9PSExfV9yZW1vdmVDaGlsZFN0eWxlKGUpe319O2Z1bmN0aW9uIHlsKGUpe2xldCB0PVkoKTtyZXR1cm4gdCYmdC5jZXx8bnVsbH1mdW5jdGlvbiBibCgpe2xldCBlPXlsKCk7cmV0dXJuIGUmJmUuc2hhZG93Um9vdH1mdW5jdGlvbiB4bChlPWAkc3R5bGVgKXt7bGV0IG49WSgpO2lmKCFuKXJldHVybiB0O2xldCByPW4udHlwZS5fX2Nzc01vZHVsZXM7cmV0dXJuIHImJnJbZV18fHR9fXZhciBTbD1uZXcgV2Vha01hcCxDbD1uZXcgV2Vha01hcCx3bD1TeW1ib2woYF9tb3ZlQ2JgKSxUbD1TeW1ib2woYF9lbnRlckNiYCksRWw9KGU9PihkZWxldGUgZS5wcm9wcy5tb2RlLGUpKSh7bmFtZTpgVHJhbnNpdGlvbkdyb3VwYCxwcm9wczpzKHt9LGdjLHt0YWc6U3RyaW5nLG1vdmVDbGFzczpTdHJpbmd9KSxzZXR1cChlLHtzbG90czp0fSl7bGV0IG49WSgpLHI9RnIoKSxpLGE7cmV0dXJuIFVpKCgpPT57aWYoIWkubGVuZ3RoKXJldHVybjtsZXQgdD1lLm1vdmVDbGFzc3x8YCR7ZS5uYW1lfHxgdmB9LW1vdmVgO2lmKCFqbChpWzBdLmVsLG4udm5vZGUuZWwsdCkpe2k9W107cmV0dXJufWkuZm9yRWFjaChEbCksaS5mb3JFYWNoKE9sKTtsZXQgcj1pLmZpbHRlcihrbCk7amMobi52bm9kZS5lbCksci5mb3JFYWNoKGU9PntsZXQgbj1lLmVsLHI9bi5zdHlsZTtDYyhuLHQpLHIudHJhbnNmb3JtPXIud2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1cmF0aW9uPWBgO2xldCBpPW5bd2xdPWU9PntlJiZlLnRhcmdldCE9PW58fCghZXx8ZS5wcm9wZXJ0eU5hbWUuZW5kc1dpdGgoYHRyYW5zZm9ybWApKSYmKG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgdHJhbnNpdGlvbmVuZGAsaSksblt3bF09bnVsbCx3YyhuLHQpKX07bi5hZGRFdmVudExpc3RlbmVyKGB0cmFuc2l0aW9uZW5kYCxpKX0pLGk9W119KSwoKT0+e2xldCBvPVYoZSkscz1iYyhvKSxjPW8udGFnfHxHO2lmKGk9W10sYSlmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7bGV0IHQ9YVtlXTt0LmVsJiZ0LmVsIGluc3RhbmNlb2YgRWxlbWVudCYmIXQuZWxbUGNdJiYoaS5wdXNoKHQpLEtyKHQsVXIodCxzLHIsbikpLFNsLnNldCh0LEFsKHQuZWwpKSl9YT10LmRlZmF1bHQ/cXIodC5kZWZhdWx0KCkpOltdO2ZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSsrKXtsZXQgdD1hW2VdO3Qua2V5IT1udWxsJiZLcih0LFVyKHQscyxyLG4pKX1yZXR1cm4gcShjLG51bGwsYSl9fX0pO2Z1bmN0aW9uIERsKGUpe2xldCB0PWUuZWw7dFt3bF0mJnRbd2xdKCksdFtUbF0mJnRbVGxdKCl9ZnVuY3Rpb24gT2woZSl7Q2wuc2V0KGUsQWwoZS5lbCkpfWZ1bmN0aW9uIGtsKGUpe2xldCB0PVNsLmdldChlKSxuPUNsLmdldChlKSxyPXQubGVmdC1uLmxlZnQsaT10LnRvcC1uLnRvcDtpZihyfHxpKXtsZXQgdD1lLmVsLG49dC5zdHlsZSxhPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz0xLHM9MTtyZXR1cm4gdC5vZmZzZXRXaWR0aCYmKG89YS53aWR0aC90Lm9mZnNldFdpZHRoKSx0Lm9mZnNldEhlaWdodCYmKHM9YS5oZWlnaHQvdC5vZmZzZXRIZWlnaHQpLCghTnVtYmVyLmlzRmluaXRlKG8pfHxvPT09MCkmJihvPTEpLCghTnVtYmVyLmlzRmluaXRlKHMpfHxzPT09MCkmJihzPTEpLE1hdGguYWJzKG8tMSk8LjAxJiYobz0xKSxNYXRoLmFicyhzLTEpPC4wMSYmKHM9MSksbi50cmFuc2Zvcm09bi53ZWJraXRUcmFuc2Zvcm09YHRyYW5zbGF0ZSgke3Ivb31weCwke2kvc31weClgLG4udHJhbnNpdGlvbkR1cmF0aW9uPWAwc2AsZX19ZnVuY3Rpb24gQWwoZSl7bGV0IHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57bGVmdDp0LmxlZnQsdG9wOnQudG9wfX1mdW5jdGlvbiBqbChlLHQsbil7bGV0IHI9ZS5jbG9uZU5vZGUoKSxpPWVbbWNdO2kmJmkuZm9yRWFjaChlPT57ZS5zcGxpdCgvXHMrLykuZm9yRWFjaChlPT5lJiZyLmNsYXNzTGlzdC5yZW1vdmUoZSkpfSksbi5zcGxpdCgvXHMrLykuZm9yRWFjaChlPT5lJiZyLmNsYXNzTGlzdC5hZGQoZSkpLHIuc3R5bGUuZGlzcGxheT1gbm9uZWA7bGV0IGE9dC5ub2RlVHlwZT09PTE/dDp0LnBhcmVudE5vZGU7YS5hcHBlbmRDaGlsZChyKTtsZXR7aGFzVHJhbnNmb3JtOm99PU9jKHIpO3JldHVybiBhLnJlbW92ZUNoaWxkKHIpLG99dmFyIE1sPWU9PntsZXQgdD1lLnByb3BzW2BvblVwZGF0ZTptb2RlbFZhbHVlYF18fCExO3JldHVybiBkKHQpP2U9Pk0odCxlKTp0fTtmdW5jdGlvbiBObChlKXtlLnRhcmdldC5jb21wb3Npbmc9ITB9ZnVuY3Rpb24gUGwoZSl7bGV0IHQ9ZS50YXJnZXQ7dC5jb21wb3NpbmcmJih0LmNvbXBvc2luZz0hMSx0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGBpbnB1dGApKSl9dmFyIEZsPVN5bWJvbChgX2Fzc2lnbmApLElsPVN5bWJvbChgX2luaXRpYWxWYWx1ZWApO2Z1bmN0aW9uIExsKGUsdCxuKXtyZXR1cm4gdCYmKGU9ZS50cmltKCkpLG4mJihlPXJlKGUpKSxlfXZhciBSbD17Y3JlYXRlZChlLHttb2RpZmllcnM6e2xhenk6dCx0cmltOm4sbnVtYmVyOnJ9fSxpKXtlLnBhcmVudE5vZGUmJihlLnR5cGU9PT1gdGV4dGA/ZVtJbF09ZS5kZWZhdWx0VmFsdWUucmVwbGFjZSgvW1xyXG5dL2csYGApOmUudHlwZT09PWB0ZXh0YXJlYWAmJihlW0lsXT1lLmRlZmF1bHRWYWx1ZS5yZXBsYWNlKC9cclxuPy9nLGAKYCkpKSxlW0ZsXT1NbChpKTtsZXQgYT1yfHxpLnByb3BzJiZpLnByb3BzLnR5cGU9PT1gbnVtYmVyYDskYyhlLHQ/YGNoYW5nZWA6YGlucHV0YCx0PT57dC50YXJnZXQuY29tcG9zaW5nfHxlW0ZsXShMbChlLnZhbHVlLG4sYSkpfSksKG58fGEpJiYkYyhlLGBjaGFuZ2VgLCgpPT57ZS52YWx1ZT1MbChlLnZhbHVlLG4sYSl9KSx0fHwoJGMoZSxgY29tcG9zaXRpb25zdGFydGAsTmwpLCRjKGUsYGNvbXBvc2l0aW9uZW5kYCxQbCksJGMoZSxgY2hhbmdlYCxQbCkpfSxtb3VudGVkKGUse3ZhbHVlOnQsbW9kaWZpZXJzOnt0cmltOm4sbnVtYmVyOnJ9fSl7bGV0IGk9dD8/YGAsYT1lW0lsXTtkZWxldGUgZVtJbF0sYSE9PXZvaWQgMCYmKGUudHlwZT09PWB0ZXh0YHx8ZS50eXBlPT09YHRleHRhcmVhYCkmJmUudmFsdWUhPT1hP2VbRmxdKExsKGUudmFsdWUsbixyKSk6ZS52YWx1ZT1pfSxiZWZvcmVVcGRhdGUoZSx7dmFsdWU6dCxvbGRWYWx1ZTpuLG1vZGlmaWVyczp7bGF6eTpyLHRyaW06aSxudW1iZXI6YX19LG8pe2lmKGVbRmxdPU1sKG8pLGUuY29tcG9zaW5nKXJldHVybjtsZXQgcz0oYXx8ZS50eXBlPT09YG51bWJlcmApJiYhL14wXGQvLnRlc3QoZS52YWx1ZSk/cmUoZS52YWx1ZSk6ZS52YWx1ZSxjPXQ/P2BgO2lmKHM9PT1jKXJldHVybjtsZXQgbD1lLmdldFJvb3ROb2RlKCk7KGwgaW5zdGFuY2VvZiBEb2N1bWVudHx8bCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpJiZsLmFjdGl2ZUVsZW1lbnQ9PT1lJiZlLnR5cGUhPT1gcmFuZ2VgJiYociYmdD09PW58fGkmJmUudmFsdWUudHJpbSgpPT09Yyl8fChlLnZhbHVlPWMpfX0semw9e2RlZXA6ITAsY3JlYXRlZChlLHQsbil7ZVtGbF09TWwobiksJGMoZSxgY2hhbmdlYCwoKT0+e2xldCB0PWUuX21vZGVsVmFsdWUsbj1XbChlKSxyPWUuY2hlY2tlZCxpPWVbRmxdO2lmKGQodCkpe2xldCBlPWdlKHQsbiksYT1lIT09LTE7aWYociYmIWEpaSh0LmNvbmNhdChuKSk7ZWxzZSBpZighciYmYSl7bGV0IG49Wy4uLnRdO24uc3BsaWNlKGUsMSksaShuKX19ZWxzZSBpZihwKHQpKXtsZXQgZT1uZXcgU2V0KHQpO3I/ZS5hZGQobik6ZS5kZWxldGUobiksaShlKX1lbHNlIGkoR2woZSxyKSl9KX0sbW91bnRlZDpCbCxiZWZvcmVVcGRhdGUoZSx0LG4pe2VbRmxdPU1sKG4pLEJsKGUsdCxuKX19O2Z1bmN0aW9uIEJsKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0scil7ZS5fbW9kZWxWYWx1ZT10O2xldCBpO2lmKGQodCkpaT1nZSh0LHIucHJvcHMudmFsdWUpPi0xO2Vsc2UgaWYocCh0KSlpPXQuaGFzKHIucHJvcHMudmFsdWUpO2Vsc2V7aWYodD09PW4pcmV0dXJuO2k9aGUodCxHbChlLCEwKSl9ZS5jaGVja2VkIT09aSYmKGUuY2hlY2tlZD1pKX12YXIgVmw9e2NyZWF0ZWQoZSx7dmFsdWU6dH0sbil7ZS5jaGVja2VkPWhlKHQsbi5wcm9wcy52YWx1ZSksZVtGbF09TWwobiksJGMoZSxgY2hhbmdlYCwoKT0+e2VbRmxdKFdsKGUpKX0pfSxiZWZvcmVVcGRhdGUoZSx7dmFsdWU6dCxvbGRWYWx1ZTpufSxyKXtlW0ZsXT1NbChyKSx0IT09biYmKGUuY2hlY2tlZD1oZSh0LHIucHJvcHMudmFsdWUpKX19LEhsPXtkZWVwOiEwLGNyZWF0ZWQoZSx7dmFsdWU6dCxtb2RpZmllcnM6e251bWJlcjpufX0scil7ZS5fbW9kZWxWYWx1ZT10LCRjKGUsYGNoYW5nZWAsKCk9PntsZXQgdD1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoZS5vcHRpb25zLGU9PmUuc2VsZWN0ZWQpLm1hcChlPT5uP3JlKFdsKGUpKTpXbChlKSk7ZVtGbF0oZS5tdWx0aXBsZT9wKGUuX21vZGVsVmFsdWUpP25ldyBTZXQodCk6dDp0WzBdKSxlLl9hc3NpZ25pbmc9ITAsVm4oKCk9PntlLl9hc3NpZ25pbmc9ITF9KX0pLGVbRmxdPU1sKHIpfSxtb3VudGVkKGUse3ZhbHVlOnR9KXtVbChlLHQpfSxiZWZvcmVVcGRhdGUoZSx7dmFsdWU6dH0sbil7ZS5fbW9kZWxWYWx1ZT10LGVbRmxdPU1sKG4pfSx1cGRhdGVkKGUse3ZhbHVlOnR9KXtlLl9hc3NpZ25pbmd8fFVsKGUsdCl9fTtmdW5jdGlvbiBVbChlLHQpe2xldCBuPWUubXVsdGlwbGUscj1kKHQpO2lmKCEobiYmIXImJiFwKHQpKSl7Zm9yKGxldCBpPTAsYT1lLm9wdGlvbnMubGVuZ3RoO2k8YTtpKyspe2xldCBhPWUub3B0aW9uc1tpXSxvPVdsKGEpO2lmKG4pe2lmKHIpe2xldCBlPXR5cGVvZiBvO2Euc2VsZWN0ZWQ9ZT09PWBzdHJpbmdgfHxlPT09YG51bWJlcmA/dC5zb21lKGU9PlN0cmluZyhlKT09PVN0cmluZyhvKSk6Z2UodCxvKT4tMX1lbHNlIGEuc2VsZWN0ZWQ9dC5oYXMobyl9ZWxzZSBpZihoZShXbChhKSx0KSl7ZS5zZWxlY3RlZEluZGV4IT09aSYmKGUuc2VsZWN0ZWRJbmRleD1pKTtyZXR1cm59fSFuJiZlLnNlbGVjdGVkSW5kZXghPT0tMSYmKGUuc2VsZWN0ZWRJbmRleD0tMSl9fWZ1bmN0aW9uIFdsKGUpe3JldHVybmBfdmFsdWVgaW4gZT9lLl92YWx1ZTplLnZhbHVlfWZ1bmN0aW9uIEdsKGUsdCl7bGV0IG49dD9gX3RydWVWYWx1ZWA6YF9mYWxzZVZhbHVlYDtyZXR1cm4gbiBpbiBlP2Vbbl06dH12YXIgS2w9e2NyZWF0ZWQoZSx0LG4pe0psKGUsdCxuLG51bGwsYGNyZWF0ZWRgKX0sbW91bnRlZChlLHQsbil7SmwoZSx0LG4sbnVsbCxgbW91bnRlZGApfSxiZWZvcmVVcGRhdGUoZSx0LG4scil7SmwoZSx0LG4scixgYmVmb3JlVXBkYXRlYCl9LHVwZGF0ZWQoZSx0LG4scil7SmwoZSx0LG4scixgdXBkYXRlZGApfX07ZnVuY3Rpb24gcWwoZSx0KXtzd2l0Y2goZSl7Y2FzZWBTRUxFQ1RgOnJldHVybiBIbDtjYXNlYFRFWFRBUkVBYDpyZXR1cm4gUmw7ZGVmYXVsdDpzd2l0Y2godCl7Y2FzZWBjaGVja2JveGA6cmV0dXJuIHpsO2Nhc2VgcmFkaW9gOnJldHVybiBWbDtkZWZhdWx0OnJldHVybiBSbH19fWZ1bmN0aW9uIEpsKGUsdCxuLHIsaSl7bGV0IGE9cWwoZS50YWdOYW1lLG4ucHJvcHMmJm4ucHJvcHMudHlwZSlbaV07YSYmYShlLHQsbixyKX1mdW5jdGlvbiBZbCgpe1JsLmdldFNTUlByb3BzPSh7dmFsdWU6ZX0pPT4oe3ZhbHVlOmV9KSxWbC5nZXRTU1JQcm9wcz0oe3ZhbHVlOmV9LHQpPT57aWYodC5wcm9wcyYmaGUodC5wcm9wcy52YWx1ZSxlKSlyZXR1cm57Y2hlY2tlZDohMH19LHpsLmdldFNTUlByb3BzPSh7dmFsdWU6ZX0sdCk9PntpZihkKGUpKXtpZih0LnByb3BzJiZnZShlLHQucHJvcHMudmFsdWUpPi0xKXJldHVybntjaGVja2VkOiEwfX1lbHNlIGlmKHAoZSkpe2lmKHQucHJvcHMmJmUuaGFzKHQucHJvcHMudmFsdWUpKXJldHVybntjaGVja2VkOiEwfX1lbHNlIGlmKGUpcmV0dXJue2NoZWNrZWQ6ITB9fSxLbC5nZXRTU1JQcm9wcz0oZSx0KT0+e2lmKHR5cGVvZiB0LnR5cGUhPWBzdHJpbmdgKXJldHVybjtsZXQgbj1xbCh0LnR5cGUudG9VcHBlckNhc2UoKSx0LnByb3BzJiZ0LnByb3BzLnR5cGUpO2lmKG4uZ2V0U1NSUHJvcHMpcmV0dXJuIG4uZ2V0U1NSUHJvcHMoZSx0KX19dmFyIFhsPVtgY3RybGAsYHNoaWZ0YCxgYWx0YCxgbWV0YWBdLFpsPXtzdG9wOmU9PmUuc3RvcFByb3BhZ2F0aW9uKCkscHJldmVudDplPT5lLnByZXZlbnREZWZhdWx0KCksc2VsZjplPT5lLnRhcmdldCE9PWUuY3VycmVudFRhcmdldCxjdHJsOmU9PiFlLmN0cmxLZXksc2hpZnQ6ZT0+IWUuc2hpZnRLZXksYWx0OmU9PiFlLmFsdEtleSxtZXRhOmU9PiFlLm1ldGFLZXksbGVmdDplPT5gYnV0dG9uYGluIGUmJmUuYnV0dG9uIT09MCxtaWRkbGU6ZT0+YGJ1dHRvbmBpbiBlJiZlLmJ1dHRvbiE9PTEscmlnaHQ6ZT0+YGJ1dHRvbmBpbiBlJiZlLmJ1dHRvbiE9PTIsZXhhY3Q6KGUsdCk9PlhsLnNvbWUobj0+ZVtgJHtufUtleWBdJiYhdC5pbmNsdWRlcyhuKSl9LFFsPShlLHQpPT57aWYoIWUpcmV0dXJuIGU7bGV0IG49ZS5fd2l0aE1vZHN8fD17fSxyPXQuam9pbihgLmApO3JldHVybiBuW3JdfHwobltyXT0oKG4sLi4ucik9Pntmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IHI9WmxbdFtlXV07aWYociYmcihuLHQpKXJldHVybn1yZXR1cm4gZShuLC4uLnIpfSkpfSwkbD17ZXNjOmBlc2NhcGVgLHNwYWNlOmAgYCx1cDpgYXJyb3ctdXBgLGxlZnQ6YGFycm93LWxlZnRgLHJpZ2h0OmBhcnJvdy1yaWdodGAsZG93bjpgYXJyb3ctZG93bmAsZGVsZXRlOmBiYWNrc3BhY2VgfSxldT0oZSx0KT0+e2xldCBuPWUuX3dpdGhLZXlzfHw9e30scj10LmpvaW4oYC5gKTtyZXR1cm4gbltyXXx8KG5bcl09KG49PntpZighKGBrZXlgaW4gbikpcmV0dXJuO2xldCByPWsobi5rZXkpO2lmKHQuc29tZShlPT5lPT09cnx8JGxbZV09PT1yKSlyZXR1cm4gZShuKX0pKX0sdHU9cyh7cGF0Y2hQcm9wOmRsfSxkYyksbnUscnU9ITE7ZnVuY3Rpb24gaXUoKXtyZXR1cm4gbnV8fD1Ebyh0dSl9ZnVuY3Rpb24gYXUoKXtyZXR1cm4gbnU9cnU/bnU6T28odHUpLHJ1PSEwLG51fXZhciBvdT0oKC4uLmUpPT57aXUoKS5yZW5kZXIoLi4uZSl9KSxzdT0oKC4uLmUpPT57YXUoKS5oeWRyYXRlKC4uLmUpfSksY3U9KCguLi5lKT0+e2xldCB0PWl1KCkuY3JlYXRlQXBwKC4uLmUpLHttb3VudDpufT10O3JldHVybiB0Lm1vdW50PWU9PntsZXQgcj1kdShlKTtpZighcilyZXR1cm47bGV0IGk9dC5fY29tcG9uZW50OyFnKGkpJiYhaS5yZW5kZXImJiFpLnRlbXBsYXRlJiYoaS50ZW1wbGF0ZT1yLmlubmVySFRNTCksci5ub2RlVHlwZT09PTEmJihyLnRleHRDb250ZW50PWBgKTtsZXQgYT1uKHIsITEsdXUocikpO3JldHVybiByIGluc3RhbmNlb2YgRWxlbWVudCYmKHIucmVtb3ZlQXR0cmlidXRlKGB2LWNsb2FrYCksci5zZXRBdHRyaWJ1dGUoYGRhdGEtdi1hcHBgLGBgKSksYX0sdH0pLGx1PSgoLi4uZSk9PntsZXQgdD1hdSgpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1lPT57bGV0IHQ9ZHUoZSk7aWYodClyZXR1cm4gbih0LCEwLHV1KHQpKX0sdH0pO2Z1bmN0aW9uIHV1KGUpe2lmKGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50KXJldHVybmBzdmdgO2lmKHR5cGVvZiBNYXRoTUxFbGVtZW50PT1gZnVuY3Rpb25gJiZlIGluc3RhbmNlb2YgTWF0aE1MRWxlbWVudClyZXR1cm5gbWF0aG1sYH1mdW5jdGlvbiBkdShlKXtyZXR1cm4gXyhlKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpOmV9dmFyIGZ1PSExLHB1PSgpPT57ZnV8fChmdT0hMCxZbCgpLExjKCkpfSxtdT10eXBlb2Ygd2luZG93PGB1YCxodSxndT1lPT5odT1lLF91PVN5bWJvbCgpO2Z1bmN0aW9uIHZ1KGUpe3JldHVybiBlJiZ0eXBlb2YgZT09YG9iamVjdGAmJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PWBbb2JqZWN0IE9iamVjdF1gJiZ0eXBlb2YgZS50b0pTT04hPWBmdW5jdGlvbmB9dmFyIHl1PXR5cGVvZiB3aW5kb3c9PWBvYmplY3RgJiZ3aW5kb3cud2luZG93PT09d2luZG93P3dpbmRvdzp0eXBlb2Ygc2VsZj09YG9iamVjdGAmJnNlbGYuc2VsZj09PXNlbGY/c2VsZjp0eXBlb2YgZ2xvYmFsPT1gb2JqZWN0YCYmZ2xvYmFsLmdsb2JhbD09PWdsb2JhbD9nbG9iYWw6dHlwZW9mIGdsb2JhbFRoaXM9PWBvYmplY3RgP2dsb2JhbFRoaXM6e0hUTUxFbGVtZW50Om51bGx9O2Z1bmN0aW9uIGJ1KGUse2F1dG9Cb206dD0hMX09e30pe3JldHVybiB0JiYvXlxzKig/OnRleHRcL1xTKnxhcHBsaWNhdGlvblwveG1sfFxTKlwvXFMqXCt4bWwpXHMqOy4qY2hhcnNldFxzKj1ccyp1dGYtOC9pLnRlc3QoZS50eXBlKT9uZXcgQmxvYihbYO+7v2AsZV0se3R5cGU6ZS50eXBlfSk6ZX1mdW5jdGlvbiB4dShlLHQsbil7bGV0IHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3Iub3BlbihgR0VUYCxlKSxyLnJlc3BvbnNlVHlwZT1gYmxvYmAsci5vbmxvYWQ9ZnVuY3Rpb24oKXtFdShyLnJlc3BvbnNlLHQsbil9LHIub25lcnJvcj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoYGNvdWxkIG5vdCBkb3dubG9hZCBmaWxlYCl9LHIuc2VuZCgpfWZ1bmN0aW9uIFN1KGUpe2xldCB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oYEhFQURgLGUsITEpO3RyeXt0LnNlbmQoKX1jYXRjaHt9cmV0dXJuIHQuc3RhdHVzPj0yMDAmJnQuc3RhdHVzPD0yOTl9ZnVuY3Rpb24gQ3UoZSl7dHJ5e2UuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChgY2xpY2tgKSl9Y2F0Y2h7bGV0IHQ9bmV3IE1vdXNlRXZlbnQoYGNsaWNrYCx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLHZpZXc6d2luZG93LGRldGFpbDowLHNjcmVlblg6ODAsc2NyZWVuWToyMCxjbGllbnRYOjgwLGNsaWVudFk6MjAsY3RybEtleTohMSxhbHRLZXk6ITEsc2hpZnRLZXk6ITEsbWV0YUtleTohMSxidXR0b246MCxyZWxhdGVkVGFyZ2V0Om51bGx9KTtlLmRpc3BhdGNoRXZlbnQodCl9fXZhciB3dT10eXBlb2YgbmF2aWdhdG9yPT1gb2JqZWN0YD9uYXZpZ2F0b3I6e3VzZXJBZ2VudDpgYH0sVHU9L01hY2ludG9zaC8udGVzdCh3dS51c2VyQWdlbnQpJiYvQXBwbGVXZWJLaXQvLnRlc3Qod3UudXNlckFnZW50KSYmIS9TYWZhcmkvLnRlc3Qod3UudXNlckFnZW50KSxFdT1tdT90eXBlb2YgSFRNTEFuY2hvckVsZW1lbnQ8YHVgJiZgZG93bmxvYWRgaW4gSFRNTEFuY2hvckVsZW1lbnQucHJvdG90eXBlJiYhVHU/RHU6YG1zU2F2ZU9yT3BlbkJsb2JgaW4gd3U/T3U6a3U6KCk9Pnt9O2Z1bmN0aW9uIER1KGUsdD1gZG93bmxvYWRgLG4pe2xldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGFgKTtyLmRvd25sb2FkPXQsci5yZWw9YG5vb3BlbmVyYCx0eXBlb2YgZT09YHN0cmluZ2A/KHIuaHJlZj1lLHIub3JpZ2luPT09bG9jYXRpb24ub3JpZ2luP0N1KHIpOlN1KHIuaHJlZik/eHUoZSx0LG4pOihyLnRhcmdldD1gX2JsYW5rYCxDdShyKSkpOihyLmhyZWY9VVJMLmNyZWF0ZU9iamVjdFVSTChlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VVJMLnJldm9rZU9iamVjdFVSTChyLmhyZWYpfSw0ZTQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtDdShyKX0sMCkpfWZ1bmN0aW9uIE91KGUsdD1gZG93bmxvYWRgLG4pe2lmKHR5cGVvZiBlPT1gc3RyaW5nYCl7aWYoU3UoZSkpeHUoZSx0LG4pO2Vsc2V7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgYWApO3QuaHJlZj1lLHQudGFyZ2V0PWBfYmxhbmtgLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtDdSh0KX0pfX1lbHNlIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGJ1KGUsbiksdCl9ZnVuY3Rpb24ga3UoZSx0LG4scil7aWYocnx8PW9wZW4oYGAsYF9ibGFua2ApLHImJihyLmRvY3VtZW50LnRpdGxlPXIuZG9jdW1lbnQuYm9keS5pbm5lclRleHQ9YGRvd25sb2FkaW5nLi4uYCksdHlwZW9mIGU9PWBzdHJpbmdgKXJldHVybiB4dShlLHQsbik7bGV0IGk9ZS50eXBlPT09YGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbWAsYT0vY29uc3RydWN0b3IvaS50ZXN0KFN0cmluZyh5dS5IVE1MRWxlbWVudCkpfHxgc2FmYXJpYGluIHl1LG89L0NyaU9TXC9bXGRdKy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtpZigob3x8aSYmYXx8VHUpJiZ0eXBlb2YgRmlsZVJlYWRlcjxgdWApe2xldCB0PW5ldyBGaWxlUmVhZGVyO3Qub25sb2FkZW5kPWZ1bmN0aW9uKCl7bGV0IGU9dC5yZXN1bHQ7aWYodHlwZW9mIGUhPWBzdHJpbmdgKXRocm93IHI9bnVsbCxFcnJvcihgV3JvbmcgcmVhZGVyLnJlc3VsdCB0eXBlYCk7ZT1vP2U6ZS5yZXBsYWNlKC9eZGF0YTpbXjtdKjsvLGBkYXRhOmF0dGFjaG1lbnQvZmlsZTtgKSxyP3IubG9jYXRpb24uaHJlZj1lOmxvY2F0aW9uLmFzc2lnbihlKSxyPW51bGx9LHQucmVhZEFzRGF0YVVSTChlKX1lbHNle2xldCB0PVVSTC5jcmVhdGVPYmplY3RVUkwoZSk7cj9yLmxvY2F0aW9uLmFzc2lnbih0KTpsb2NhdGlvbi5ocmVmPXQscj1udWxsLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtVUkwucmV2b2tlT2JqZWN0VVJMKHQpfSw0ZTQpfX12YXJ7YXNzaWduOkF1fT1PYmplY3Q7ZnVuY3Rpb24ganUoKXtsZXQgZT1DZSghMCksdD1lLnJ1bigoKT0+WHQoe30pKSxuPVtdLHI9W10saT1xdCh7aW5zdGFsbChlKXtndShpKSxpLl9hPWUsZS5wcm92aWRlKF91LGkpLGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJHBpbmlhPWksci5mb3JFYWNoKGU9Pm4ucHVzaChlKSkscj1bXX0sdXNlKGUpe3JldHVybiB0aGlzLl9hP24ucHVzaChlKTpyLnB1c2goZSksdGhpc30sX3A6bixfYTpudWxsLF9lOmUsX3M6bmV3IE1hcCxzdGF0ZTp0fSk7cmV0dXJuIGl9dmFyIE11PSgpPT57fTtmdW5jdGlvbiBOdShlLHQsbixyPU11KXtlLmFkZCh0KTtsZXQgaT0oKT0+e2UuZGVsZXRlKHQpJiZyKCl9O3JldHVybiFuJiZ3ZSgpJiZUZShpKSxpfWZ1bmN0aW9uIFB1KGUsLi4udCl7ZS5mb3JFYWNoKGU9PntlKC4uLnQpfSl9dmFyIEZ1PWU9PmUoKSxJdT1TeW1ib2woKSxMdT1TeW1ib2woKTtmdW5jdGlvbiBSdShlLHQpe2UgaW5zdGFuY2VvZiBNYXAmJnQgaW5zdGFuY2VvZiBNYXA/dC5mb3JFYWNoKCh0LG4pPT5lLnNldChuLHQpKTplIGluc3RhbmNlb2YgU2V0JiZ0IGluc3RhbmNlb2YgU2V0JiZ0LmZvckVhY2goZS5hZGQsZSk7Zm9yKGxldCBuIGluIHQpe2lmKCFPYmplY3QuaGFzT3duKHQsbikpY29udGludWU7bGV0IHI9dFtuXSxpPWVbbl07ZVtuXT12dShpKSYmdnUocikmJk9iamVjdC5oYXNPd24oZSxuKSYmIUgocikmJiFVdChyKT9SdShpLHIpOnJ9cmV0dXJuIGV9dmFyIHp1PVN5bWJvbCgpO2Z1bmN0aW9uIEJ1KGUpe3JldHVybiFlfHx0eXBlb2YgZSE9YG9iamVjdGB8fCFPYmplY3QuaGFzT3duKGUsenUpfXZhcnthc3NpZ246VnV9PU9iamVjdDtmdW5jdGlvbiBIdShlKXtyZXR1cm4hIShIKGUpJiZlLmVmZmVjdCl9ZnVuY3Rpb24gVXUoZSx0LG4scil7bGV0e3N0YXRlOmksYWN0aW9uczphLGdldHRlcnM6b309dCxzPW4uc3RhdGUudmFsdWVbZV0sYztmdW5jdGlvbiBsKCl7cmV0dXJuIHN8fChuLnN0YXRlLnZhbHVlW2VdPWk/aSgpOnt9KSxWdShjbihuLnN0YXRlLnZhbHVlW2VdKSxhLE9iamVjdC5rZXlzKG98fHt9KS5yZWR1Y2UoKHQscik9Pih0W3JdPXF0KHFzKCgpPT57Z3Uobik7bGV0IHQ9bi5fcy5nZXQoZSk7cmV0dXJuIG9bcl0uY2FsbCh0LHQpfSkpLHQpLHt9KSl9cmV0dXJuIGM9V3UoZSxsLHQsbixyLCEwKSxjfWZ1bmN0aW9uIFd1KGUsdCxuPXt9LHIsaSxhKXtsZXQgbyxzPVZ1KHthY3Rpb25zOnt9fSxuKSxjPXtkZWVwOiEwfSxsLHUsZD1uZXcgU2V0LGY9bmV3IFNldCxwLG09ci5zdGF0ZS52YWx1ZVtlXTshYSYmIW0mJihyLnN0YXRlLnZhbHVlW2VdPXt9KTtsZXQgaDtmdW5jdGlvbiBnKHQpe2xldCBuO2w9dT0hMSx0eXBlb2YgdD09YGZ1bmN0aW9uYD8odChyLnN0YXRlLnZhbHVlW2VdKSxuPXt0eXBlOmBwYXRjaCBmdW5jdGlvbmAsc3RvcmVJZDplLGV2ZW50czpwfSk6KFJ1KHIuc3RhdGUudmFsdWVbZV0sdCksbj17dHlwZTpgcGF0Y2ggb2JqZWN0YCxwYXlsb2FkOnQsc3RvcmVJZDplLGV2ZW50czpwfSk7bGV0IGk9aD1TeW1ib2woKTtWbigpLnRoZW4oKCk9PntoPT09aSYmKGw9ITApfSksdT0hMCxQdShkLG4sci5zdGF0ZS52YWx1ZVtlXSl9bGV0IF89YT9mdW5jdGlvbigpe2xldHtzdGF0ZTplfT1uLHQ9ZT9lKCk6e307dGhpcy4kcGF0Y2goZT0+e1Z1KGUsdCl9KX06TXU7ZnVuY3Rpb24gdigpe28uc3RvcCgpLGQuY2xlYXIoKSxmLmNsZWFyKCksci5fcy5kZWxldGUoZSl9bGV0IHk9KHQsbj1gYCk9PntpZihJdSBpbiB0KXJldHVybiB0W0x1XT1uLHQ7bGV0IGk9ZnVuY3Rpb24oKXtndShyKTtsZXQgbj1BcnJheS5mcm9tKGFyZ3VtZW50cyksYT1uZXcgU2V0LG89bmV3IFNldDtmdW5jdGlvbiBzKGUpe2EuYWRkKGUpfWZ1bmN0aW9uIGMoZSl7by5hZGQoZSl9UHUoZix7YXJnczpuLG5hbWU6aVtMdV0sc3RvcmU6YixhZnRlcjpzLG9uRXJyb3I6Y30pO2xldCBsO3RyeXtsPXQuYXBwbHkodGhpcyYmdGhpcy4kaWQ9PT1lP3RoaXM6YixuKX1jYXRjaChlKXt0aHJvdyBQdShvLGUpLGV9cmV0dXJuIGwgaW5zdGFuY2VvZiBQcm9taXNlP2wudGhlbihlPT4oUHUoYSxlKSxlKSkuY2F0Y2goZT0+KFB1KG8sZSksUHJvbWlzZS5yZWplY3QoZSkpKTooUHUoYSxsKSxsKX07cmV0dXJuIGlbSXVdPSEwLGlbTHVdPW4saX0sYj1SdCh7X3A6ciwkaWQ6ZSwkb25BY3Rpb246TnUuYmluZChudWxsLGYpLCRwYXRjaDpnLCRyZXNldDpfLCRzdWJzY3JpYmUodCxuPXt9KXtpZihkLmhhcyh0KSlyZXR1cm4gTXU7bGV0IGk9TnUoZCx0LG4uZGV0YWNoZWQsKCk9PmEoKSksYT1vLnJ1bigoKT0+aHIoKCk9PnIuc3RhdGUudmFsdWVbZV0scj0+eyhuLmZsdXNoPT09YHN5bmNgP3U6bCkmJnQoe3N0b3JlSWQ6ZSx0eXBlOmBkaXJlY3RgLGV2ZW50czpwfSxyKX0sVnUoe30sYyxuKSkpO3JldHVybiBpfSwkZGlzcG9zZTp2fSk7ci5fcy5zZXQoZSxiKTtsZXQgeD0oci5fYSYmci5fYS5ydW5XaXRoQ29udGV4dHx8RnUpKCgpPT5yLl9lLnJ1bigoKT0+KG89Q2UoKSkucnVuKCgpPT50KHthY3Rpb246eX0pKSkpO2ZvcihsZXQgdCBpbiB4KXtsZXQgbj14W3RdO0gobikmJiFIdShuKXx8VXQobik/YXx8KG0mJkJ1KG4pJiYoSChuKT9uLnZhbHVlPW1bdF06KChuIGluc3RhbmNlb2YgU2V0fHxuIGluc3RhbmNlb2YgTWFwKSYmbi5jbGVhcigpLFJ1KG4sbVt0XSkpKSxyLnN0YXRlLnZhbHVlW2VdW3RdPW4pOnR5cGVvZiBuPT1gZnVuY3Rpb25gJiYoeFt0XT15KG4sdCkscy5hY3Rpb25zW3RdPW4pfXJldHVybiBWdShiLHgpLFZ1KFYoYikseCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGIsIiRzdGF0ZSIse2dldDooKT0+ci5zdGF0ZS52YWx1ZVtlXSxzZXQ6ZT0+e2codD0+e1Z1KHQsZSl9KX19KSxyLl9wLmZvckVhY2goZT0+e2xldCB0PW8ucnVuKCgpPT5lKHtzdG9yZTpiLGFwcDpyLl9hLHBpbmlhOnIsb3B0aW9uczpzfSkpO1Z1KGIsdCl9KSxtJiZhJiZuLmh5ZHJhdGUmJm4uaHlkcmF0ZShiLiRzdGF0ZSxtKSxsPSEwLHU9ITAsYn1mdW5jdGlvbiBHdShlLHQsbil7bGV0IHIsaT10eXBlb2YgdD09YGZ1bmN0aW9uYDtyPWk/bjp0O2Z1bmN0aW9uIGEobixhKXtsZXQgbz1scigpO3JldHVybiBufHw9bz9jcihfdSxudWxsKTpudWxsLG4mJmd1KG4pLG49aHUsbi5fcy5oYXMoZSl8fChpP1d1KGUsdCxyLG4pOlV1KGUscixuKSksbi5fcy5nZXQoZSl9cmV0dXJuIGEuJGlkPWUsYX1mdW5jdGlvbiBLdShlKXtsZXQgdD1WKGUpLG49e307Zm9yKGxldCByIGluIHQpe2xldCBpPXRbcl07aT8uZWZmZWN0P25bcl09cXMoe2dldDooKT0+ZVtyXSxzZXQodCl7ZVtyXT10fX0pOihIKGkpfHxVdChpKSkmJihuW3JdPWRuKGUscikpfXJldHVybiBufXZhciBxdT17cHJlZml4OmBmYXNgLGljb25OYW1lOmBtYWduaWZ5aW5nLWdsYXNzYCxpY29uOls1MTIsNTEyLFsxMjgyNjksYHNlYXJjaGBdLGBmMDAyYCxgTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZDMjk2LjMgNDAxLjEgMjUzLjkgNDE2IDIwOCA0MTYgOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDAgNDE2IDkzLjEgNDE2IDIwOHpNMjA4IDM1MmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6YF19LEp1PXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGtleWAsaWNvbjpbNTEyLDUxMixbMTI4MjczXSxgZjA4NGAsYE0zMzYgMzUyYzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2UzQzMy4yIDAgMzM2IDAgMTYwIDc4LjggMTYwIDE3NmMwIDE4LjcgMi45IDM2LjggOC4zIDUzLjdMNyAzOTFjLTQuNSA0LjUtNyAxMC42LTcgMTdsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDAgNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQwIDQwIDBjNi40IDAgMTIuNS0yLjUgMTctN2wzMy4zLTMzLjNjMTYuOSA1LjQgMzUgOC4zIDUzLjcgOC4zek0zNzYgOTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwemBdfSxZdT17cHJlZml4OmBmYXNgLGljb25OYW1lOmBzb3J0LXVwYCxpY29uOlszODQsNTEyLFtgc29ydC1hc2NgXSxgZjBkZWAsYE0zMiAyMjRjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhTLjIgMTc4LjUgOS40IDE2OS40bDE2MC0xNjBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOVMzNjQuOSAyMjQgMzUyIDIyNEwzMiAyMjR6YF19LFh1PXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGV5ZWAsaWNvbjpbNTc2LDUxMixbMTI4MDY1XSxgZjA2ZWAsYE0yODggMzJjLTgwLjggMC0xNDUuNSAzNi44LTE5Mi42IDgwLjYtNDYuOCA0My41LTc4LjEgOTUuNC05MyAxMzEuMS0zLjMgNy45LTMuMyAxNi43IDAgMjQuNiAxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xIDQ3LjEgNDMuNyAxMTEuOCA4MC42IDE5Mi42IDgwLjZzMTQ1LjUtMzYuOCAxOTIuNi04MC42YzQ2LjgtNDMuNSA3OC4xLTk1LjQgOTMtMTMxLjEgMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjYtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMS00Ny4xLTQzLjctMTExLjgtODAuNi0xOTIuNi04MC42ek0xNDQgMjU2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0NC02NGMwIDM1LjMtMjguNyA2NC02NCA2NC0xMS41IDAtMjIuMy0zLTMxLjctOC40LTEgMTAuOS0uMSAyMi4xIDIuOSAzMy4yIDEzLjcgNTEuMiA2Ni40IDgxLjYgMTE3LjYgNjcuOXM4MS42LTY2LjQgNjcuOS0xMTcuNmMtMTIuMi00NS43LTU1LjUtNzQuOC0xMDEuMS03MC44IDUuMyA5LjMgOC40IDIwLjEgOC40IDMxLjd6YF19LFp1PXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGNoZXZyb24tdXBgLGljb246WzQ0OCw1MTIsW10sYGYwNzdgLGBNMjAxLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyMjQgMTczLjMgNTQuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTkyLTE5MnpgXX0sUXU9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hldnJvbi1yaWdodGAsaWNvbjpbMzIwLDUxMixbOTAwMl0sYGYwNTRgLGBNMzExLjEgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0My4yIDI1NiA3My45IDg2LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MnpgXX0sJHU9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgdXNlcnNgLGljb246WzY0MCw1MTIsW10sYGYwYzBgLGBNMzIwIDE2YTEwNCAxMDQgMCAxIDEgMCAyMDggMTA0IDEwNCAwIDEgMSAwLTIwOHpNOTYgODhhNzIgNzIgMCAxIDEgMCAxNDQgNzIgNzIgMCAxIDEgMC0xNDR6TTAgNDE2YzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4IDEyLjggMCAyNS4yIDEuOSAzNi45IDUuNC0zMi45IDM2LjgtNTIuOSA4NS40LTUyLjkgMTM4LjZsMCAxNmMwIDExLjQgMi40IDIyLjIgNi43IDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMnptNTIxLjMgNjRjNC4zLTkuOCA2LjctMjAuNiA2LjctMzJsMC0xNmMwLTUzLjItMjAtMTAxLjgtNTIuOS0xMzguNiAxMS43LTMuNSAyNC4xLTUuNCAzNi45LTUuNCA3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC04Ni43IDB6TTQ3MiAxNjBhNzIgNzIgMCAxIDEgMTQ0IDAgNzIgNzIgMCAxIDEgLTE0NCAwek0xNjAgNDMyYzAtODguNCA3MS42LTE2MCAxNjAtMTYwczE2MCA3MS42IDE2MCAxNjBsMCAxNmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTZ6YF19LGVkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGhlYXJ0LXB1bHNlYCxpY29uOls1MTIsNTEyLFtgaGVhcnRiZWF0YF0sYGYyMWVgLGBNMjU2IDEwNy45TDI0MSA4Ny4xQzIxNiA1Mi41IDE3NS45IDMyIDEzMy4xIDMyIDU5LjYgMzIgMCA5MS42IDAgMTY1LjFsMCAyLjZjMCAyMy42IDYuMiA0OCAxNi42IDcyLjNsMTA2IDBjMy4yIDAgNi4xLTEuOSA3LjQtNC45bDMxLjgtNzYuM2MzLjctOC44IDEyLjMtMTQuNiAyMS44LTE0LjhzMTguMyA1LjQgMjIuMiAxNC4xbDUxLjMgMTEzLjkgNDEuNC04Mi44YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjNsMjMuMiA0Ni4zYzEuNCAyLjcgNC4xIDQuNCA3LjIgNC40bDEyMy42IDBjMTAuNS0yNC4zIDE2LjYtNDguNyAxNi42LTcyLjNsMC0yLjZDNTEyIDkxLjYgNDUyLjQgMzIgMzc4LjkgMzIgMzM2LjIgMzIgMjk2IDUyLjUgMjcxIDg3LjFsLTE1IDIwLjd6TTQ2OS42IDI4OGwtOTcuOCAwYy0yMS4yIDAtNDAuNi0xMi01MC4xLTMxbC0xLjctMy40LTQyLjUgODUuMWMtNC4xIDguMy0xMi43IDEzLjUtMjIgMTMuM3MtMTcuNi01LjctMjEuNC0xNC4xbC00OS4zLTEwOS41LTEwLjUgMjUuMmMtOC43IDIwLjktMjkuMSAzNC41LTUxLjcgMzQuNWwtODAuMiAwYzQ3LjIgNzMuOCAxMjMgMTQxLjcgMTcwLjQgMTc3LjkgMTIuNCA5LjQgMjcuNiAxNC4xIDQzLjEgMTQuMXMzMC44LTQuNiA0My4xLTE0LjFDMzQ2LjYgNDI5LjcgNDIyLjQgMzYxLjggNDY5LjYgMjg4emBdfSx0ZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBjaXJjbGUteG1hcmtgLGljb246WzUxMiw1MTIsWzYxNTMyLGB0aW1lcy1jaXJjbGVgLGB4bWFyay1jaXJjbGVgXSxgZjA1N2AsYE0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY3IDE2N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw1NSA1NSA1NS01NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTU1IDU1IDU1IDU1YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTU1LTU1LTU1IDU1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU1LTU1LTU1LTU1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpgXX0sbmQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2lyY2xlLWV4Y2xhbWF0aW9uYCxpY29uOls1MTIsNTEyLFtgZXhjbGFtYXRpb24tY2lyY2xlYF0sYGYwNmFgLGBNMjU2IDUxMmEyNTYgMjU2IDAgMSAxIDAtNTEyIDI1NiAyNTYgMCAxIDEgMCA1MTJ6bTAtMTkyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHptMC0xOTJjLTE4LjIgMC0zMi43IDE1LjUtMzEuNCAzMy43bDcuNCAxMDRjLjkgMTIuNiAxMS40IDIyLjMgMjMuOSAyMi4zIDEyLjYgMCAyMy05LjcgMjMuOS0yMi4zbDcuNC0xMDRjMS4zLTE4LjItMTMuMS0zMy43LTMxLjQtMzMuN3pgXX0scmQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hlY2tgLGljb246WzQ0OCw1MTIsWzEwMDAzLDEwMDA0XSxgZjAwY2AsYE00MzQuOCA3MC4xYzE0LjMgMTAuNCAxNy41IDMwLjQgNy4xIDQ0LjdsLTI1NiAzNTJjLTUuNSA3LjYtMTQgMTIuMy0yMy40IDEzLjFzLTE4LjUtMi43LTI1LjEtOS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDEwMS41IDEwMS41IDIzNC0zMjEuN2MxMC40LTE0LjMgMzAuNC0xNy41IDQ0LjctNy4xemBdfSxpZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBob3VzZWAsaWNvbjpbNTEyLDUxMixbMTI3OTY4LDYzNDk4LDYzNTAwLGBob21lYCxgaG9tZS1hbHRgLGBob21lLWxnLWFsdGBdLGBmMDE1YCxgTTI3Ny44IDguNmMtMTIuMy0xMS40LTMxLjMtMTEuNC00My41IDBsLTIyNCAyMDhjLTkuNiA5LTEyLjggMjIuOS04IDM1LjFTMTguOCAyNzIgMzIgMjcybDE2IDAgMCAxNzZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjg4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNzYgMTYgMGMxMy4yIDAgMjUtOC4xIDI5LjgtMjAuM3MxLjYtMjYuMi04LTM1LjFsLTIyNC0yMDh6TTI0MCAzMjBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2LTEyOCAwIDAtOTZjMC0yNi41IDIxLjUtNDggNDgtNDh6YF19LGFkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHNsaWRlcnNgLGljb246WzUxMiw1MTIsW2BzbGlkZXJzLWhgXSxgZjFkZWAsYE0zMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJsODYuNyAwYzEyLjMgMjguMyA0MC41IDQ4IDczLjMgNDhzNjEtMTkuNyA3My4zLTQ4TDQ4MCAxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMjY1LjMgNjRDMjUzIDM1LjcgMjI0LjggMTYgMTkyIDE2cy02MSAxOS43LTczLjMgNDhMMzIgNjR6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI0Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhsNTQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01NC43IDBjLTEyLjMtMjguMy00MC41LTQ4LTczLjMtNDhzLTYxIDE5LjctNzMuMyA0OEwzMiAyMjR6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDU0LjcgMGMxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4czYxLTE5LjcgNzMuMy00OEw0ODAgNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yNDYuNyAwYy0xMi4zLTI4LjMtNDAuNS00OC03My4zLTQ4cy02MSAxOS43LTczLjMgNDhMMzIgMzg0emBdfSxvZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBzb3J0YCxpY29uOlszODQsNTEyLFtgdW5zb3J0ZWRgXSxgZjBkY2AsYE0yLjQgMjA0LjJjNSAxMiAxNi42IDE5LjggMjkuNiAxOS44bDMyMCAwYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXptMCAxMDMuNWMtNSAxMi0yLjIgMjUuNyA2LjkgMzQuOWwxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTMzY0LjkgMjg4IDM1MiAyODhMMzIgMjg4Yy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44emBdfSxzZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmB4bWFya2AsaWNvbjpbMzg0LDUxMixbMTI4NDczLDEwMDA1LDEwMDA2LDEwMDYwLDIxNSxgY2xvc2VgLGBtdWx0aXBseWAsYHJlbW92ZWAsYHRpbWVzYF0sYGYwMGRgLGBNNTUuMSA3My40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wxNDcuMiAyNTYgOS45IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5Mi41IDMwMS4zIDMyOS45IDQzOC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMjM3LjggMjU2IDM3NS4xIDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5Mi41IDIxMC43IDU1LjEgNzMuNHpgXX0sY2Q9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2lyY2xlLWNoZWNrYCxpY29uOls1MTIsNTEyLFs2MTUzMyxgY2hlY2stY2lyY2xlYF0sYGYwNThgLGBNMjU2IDUxMmEyNTYgMjU2IDAgMSAxIDAtNTEyIDI1NiAyNTYgMCAxIDEgMCA1MTJ6TTM3NCAxNDUuN2MtMTAuNy03LjgtMjUuNy01LjQtMzMuNSA1LjNMMjIxLjEgMzE1LjIgMTY5IDI2My4xYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyYzUgNSAxMS44IDcuNSAxOC44IDdzMTMuNC00LjEgMTcuNS05LjhMMzc5LjMgMTc5LjJjNy44LTEwLjcgNS40LTI1LjctNS4zLTMzLjV6YF19LGxkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGN1YmVzYCxpY29uOls1MTIsNTEyLFtdLGBmMWIzYCxgTTI4NC0xLjNjLTE3LjMtMTAtMzguNy0xMC01NiAwTDE0My44IDQ3LjNjLTE3LjMgMTAtMjggMjguNS0yOCA0OC41bDAgMTAxLjktODguMyA1MWMtMTcuMyAxMC0yOCAyOC41LTI4IDQ4LjVsMCA5Ny4zYzAgMjAgMTAuNyAzOC41IDI4IDQ4LjVsODQuMyA0OC42YzE3LjMgMTAgMzguNyAxMCA1NiAwbDg4LjMtNTEgODguMyA1MWMxNy4zIDEwIDM4LjcgMTAgNTYgMEw0ODQuNSA0NDNjMTcuMy0xMCAyOC0yOC41IDI4LTQ4LjVsMC05Ny4zYzAtMjAtMTAuNy0zOC41LTI4LTQ4LjVsLTg4LjMtNTEgMC0xMDEuOWMwLTIwLTEwLjctMzguNS0yOC00OC41TDI4NC0xLjN6TTIzMiAyOTIuNmwwIDEwNi41LTg4LjMgNTFjLTEuMiAuNy0yLjYgMS4xLTQgMS4xbDAtMTA1LjMgOTIuMy01My4zem0yMzEuNCAuNmMuNyAxLjIgMS4xIDIuNiAxLjEgNGwwIDk3LjNjMCAyLjktMS41IDUuNS00IDYuOWwtODQuMyA0OC42Yy0xLjIgLjctMi42IDEuMS00IDEuMWwwLTEwNS4zIDkxLjItNTIuNnpNMzQ4LjMgOTUuOGwwIDEwMS45LTkyLjMgNTMuMyAwLTEwNi41IDkxLjItNTIuNmMuNyAxLjIgMS4xIDIuNiAxLjEgNHpgXX0sdWQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hldnJvbi1kb3duYCxpY29uOls0NDgsNTEyLFtdLGBmMDc4YCxgTTIwMS40IDQwNi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDMzOC43IDU0LjYgMTY5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJ6YF19LGRkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHBsdWdgLGljb246WzQ0OCw1MTIsWzEyODI2OF0sYGYxZTZgLGBNMTI4LTMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMTI4IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgOTYgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDY0YzAgOTUuMS02OS4yIDE3NC4xLTE2MCAxODkuM2wwIDY2LjdjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02Ni43QzEwMS4yIDM5OC4xIDMyIDMxOS4xIDMyIDIyNGwwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlMxNC4zIDk2IDMyIDk2bDY0IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpgXX0sZmQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgaW5ib3hgLGljb246WzUxMiw1MTIsW10sYGYwMWNgLGBNOTEuOCAzMkM1OS45IDMyIDMyLjkgNTUuNCAyOC40IDg2LjlMLjYgMjgxLjJjLS40IDMtLjYgNi0uNiA5LjFMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xMjUuN2MwLTMtLjItNi4xLS42LTkuMUw0ODMuNiA4Ni45QzQ3OS4xIDU1LjQgNDUyLjEgMzIgNDIwLjIgMzJMOTEuOCAzMnptMCA2NGwzMjguNSAwIDI3LjQgMTkyLTU5LjkgMGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTQuMyAyOC42Yy01LjQgMTAuOC0xNi41IDE3LjctMjguNiAxNy43bC0xMjAuNCAwYy0xMi4xIDAtMjMuMi02LjgtMjguNi0xNy43bC0xNC4zLTI4LjZjLTUuNC0xMC44LTE2LjUtMTcuNy0yOC42LTE3LjdMNjQuMyAyODggOTEuOCA5NnpgXX0scGQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgZmlsZS1jc3ZgLGljb246WzU3Niw1MTIsW10sYGY2ZGRgLGBNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGw4MCAwIDAtMTEyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDE3NiAwIDAtMTY1LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjkwLjcgMTguN0MyNzguNyA2LjcgMjYyLjUgMCAyNDUuNSAwTDk2IDB6TTM1Ny41IDE3NkwyNjQgMTc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNEwyNDAgNTguNSAzNTcuNSAxNzZ6TTI2NCAzODBjLTI0LjMgMC00NCAxOS43LTQ0IDQ0bDAgODBjMCAyNC4zIDE5LjcgNDQgNDQgNDRsMTYgMGMyNC4zIDAgNDQtMTkuNyA0NC00NGwwLThjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwbDAgOGMwIDIuMi0xLjggNC00IDRsLTE2IDBjLTIuMiAwLTQtMS44LTQtNGwwLTgwYzAtMi4yIDEuOC00IDQtNGwxNiAwYzIuMiAwIDQgMS44IDQgNGwwIDhjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC04YzAtMjQuMy0xOS43LTQ0LTQ0LTQ0bC0xNiAwem0xMzYgMGMtMjguNyAwLTUyIDIzLjMtNTIgNTJzMjMuMyA1MiA1MiA1MmM2LjYgMCAxMiA1LjQgMTIgMTJzLTUuNCAxMi0xMiAxMmwtMzIgMGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBsMzIgMGMyOC43IDAgNTItMjMuMyA1Mi01MnMtMjMuMy01Mi01Mi01MmMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMmwyNCAwYzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMGwtMjQgMHptOTYgMGMtMTEgMC0yMCA5LTIwIDIwbDAgMzEuNmMwIDM1LjUgMTAuNSA3MC4zIDMwLjIgOTkuOGw1LjEgNy43YzMuNyA1LjYgMTAgOC45IDE2LjYgOC45czEyLjktMy4zIDE2LjYtOC45bDUuMS03LjdjMTkuNy0yOS42IDMwLjItNjQuMyAzMC4yLTk5LjhsMC0zMS42YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMGwwIDMxLjZjMCAxOS42LTQuMSAzOC45LTEyIDU2LjctNy45LTE3LjgtMTItMzcuMS0xMi01Ni43bDAtMzEuNmMwLTExLTktMjAtMjAtMjB6YF19LG1kPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHRyaWFuZ2xlLWV4Y2xhbWF0aW9uYCxpY29uOls1MTIsNTEyLFs5ODg4LGBleGNsYW1hdGlvbi10cmlhbmdsZWAsYHdhcm5pbmdgXSxgZjA3MWAsYE0yNTYgMGMxNC43IDAgMjguMiA4LjEgMzUuMiAyMWwyMTYgNDAwYzYuNyAxMi40IDYuNCAyNy40LS44IDM5LjVTNDg2LjEgNDgwIDQ3MiA0ODBMNDAgNDgwYy0xNC4xIDAtMjcuMi03LjQtMzQuNC0xOS41cy03LjUtMjcuMS0uOC0zOS41bDIxNi00MDBjNy0xMi45IDIwLjUtMjEgMzUuMi0yMXptMCAzNTJhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0em0wLTE5MmMtMTguMiAwLTMyLjcgMTUuNS0zMS40IDMzLjdsNy40IDEwNGMuOSAxMi41IDExLjQgMjIuMyAyMy45IDIyLjMgMTIuNiAwIDIzLTkuNyAyMy45LTIyLjNsNy40LTEwNGMxLjMtMTguMi0xMy4xLTMzLjctMzEuNC0zMy43emBdfSxoZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBhcnJvdy1yaWdodC1hcnJvdy1sZWZ0YCxpY29uOls1MTIsNTEyLFs4NjQ0LGBleGNoYW5nZWBdLGBmMGVjYCxgTTUwMi42IDE1MC42bC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMNDAyLjcgMTYwIDMyIDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJTMTQuMyA5NiAzMiA5NmwzNzAuNyAwLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3ptLTM5Ny4zIDM1MmwtOTYtOTZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDk2LTk2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMTA5LjMgMzUyIDQ4MCAzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM3MC43IDAgNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwemBdfSxnZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBhcnJvdy1sZWZ0YCxpY29uOls1MTIsNTEyLFs4NTkyXSxgZjA2MGAsYE05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODggNDgwIDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzcwLjcgMCAxMDUuNC0xMDUuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHpgXX0sX2Q9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY29weWAsaWNvbjpbNDQ4LDUxMixbXSxgZjBjNWAsYE0xOTIgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTkyIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMDAuNmMwLTE3LjQtNy4xLTM0LjEtMTkuNy00Ni4yTDM3MC42IDE3LjhDMzU4LjcgNi40IDM0Mi44IDAgMzI2LjMgMEwxOTIgMHpNNjQgMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE2LTY0IDAgMCAxNi0xOTIgMCAwLTI1NiAxNiAwIDAtNjQtMTYgMHpgXX0sdmQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgYXJyb3ctcm90YXRlLXJpZ2h0YCxpY29uOls1MTIsNTEyLFs4NjM1LGBhcnJvdy1yaWdodC1yb3RhdGVgLGBhcnJvdy1yb3RhdGUtZm9yd2FyZGAsYHJlZG9gXSxgZjAxZWAsYE00MzYuNyA3NC43TDQ0OCA4NS40IDQ0OCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0Ny45IDAtNy42LTcuMmMtLjItLjItLjQtLjQtLjYtLjYtNzUtNzUtMTk2LjUtNzUtMjcxLjUgMHMtNzUgMTk2LjUgMCAyNzEuNSAxOTYuNSA3NSAyNzEuNSAwYzguMi04LjIgMTUuNS0xNi45IDIxLjktMjYuMSAxMC4xLTE0LjUgMzAuMS0xOCA0NC42LTcuOXMxOCAzMC4xIDcuOSA0NC42Yy04LjUgMTIuMi0xOC4yIDIzLjgtMjkuMSAzNC43LTEwMCAxMDAtMjYyLjEgMTAwLTM2MiAwUy0yNSAxNzUgNzUgNzVjOTkuOS05OS45IDI2MS43LTEwMCAzNjEuNy0uM3pgXX0seWQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgZXllLXNsYXNoYCxpY29uOls1NzYsNTEyLFtdLGBmMDcwYCxgTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTk2LjQtOTYuNGMyLjctMi40IDUuNC00LjggOC03LjIgNDYuOC00My41IDc4LjEtOTUuNCA5My0xMzEuMSAzLjMtNy45IDMuMy0xNi43IDAtMjQuNi0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xLTQ3LjEtNDMuNy0xMTEuOC04MC42LTE5Mi42LTgwLjYtNTYuOCAwLTEwNS42IDE4LjItMTQ2IDQ0LjJMNDEtMjQuOXpNMjA0LjUgMTM4LjdjMjMuNS0xNi44IDUyLjQtMjYuNyA4My41LTI2LjcgNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCAzMS4xLTkuOSA1OS45LTI2LjcgODMuNWwtMzQuNy0zNC43YzEyLjctMjEuNCAxNy00Ny43IDEwLjEtNzMuNy0xMy43LTUxLjItNjYuNC04MS42LTExNy42LTY3LjktOC42IDIuMy0xNi43IDUuNy0yNCAxMGwtMzQuNy0zNC43ek0zMjUuMyAzOTUuMWMtMTEuOSAzLjItMjQuNCA0LjktMzcuMyA0LjktNzkuNSAwLTE0NC02NC41LTE0NC0xNDQgMC0xMi45IDEuNy0yNS40IDQuOS0zNy4zTDY5LjQgMTM5LjJjLTMyLjYgMzYuOC01NSA3NS44LTY2LjkgMTA0LjUtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjYgMTQuOSAzNS43IDQ2LjIgODcuNyA5MyAxMzEuMSA0Ny4xIDQzLjcgMTExLjggODAuNiAxOTIuNiA4MC42IDM3LjMgMCA3MS4yLTcuOSAxMDEuNS0yMC42bC02NC4yLTY0LjJ6YF19LGJkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGFycm93LXVwLXJpZ2h0LWZyb20tc3F1YXJlYCxpY29uOls1MTIsNTEyLFtgZXh0ZXJuYWwtbGlua2BdLGBmMDhlYCxgTTMyMCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDgyLjcgMC0yMDEuNCAyMDEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0NDggMTA5LjMgNDQ4IDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyMCAwek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZMMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBsMjU2IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC04MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkw4MCA0NDhjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTI1NmMwLTguOCA3LjItMTYgMTYtMTZsODAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw4MCA5NnpgXX0seGQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY29pbnNgLGljb246WzUxMiw1MTIsW10sYGY1MWVgLGBNMTI4IDk2bDAtMTZjMC00NC4yIDg2LTgwIDE5Mi04MFM1MTIgMzUuOCA1MTIgODBsMCAxNmMwIDMwLjYtNDEuMyA1Ny4yLTEwMiA3MC43LTIuNC0yLjgtNC45LTUuNS03LjQtOC0xNS41LTE1LjMtMzUuNS0yNi45LTU2LjQtMzUuNS00MS45LTE3LjUtOTYuNS0yNy4xLTE1NC4yLTI3LjEtMjEuOSAwLTQzLjMgMS40LTYzLjggNC4xLS4yLTEuMy0uMi0yLjctLjItNC4xek00MzIgMzUzbDAtNDYuMmMxNS4xLTMuOSAyOS4zLTguNSA0Mi4yLTEzLjkgMTMuMi01LjUgMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjRjMCAyNi44LTMxLjUgNTAuNS04MCA2NXptMC05NmwwLTMzYzAtNC41LS40LTguOC0xLTEzIDE1LjUtMy45IDMwLTguNiA0My4yLTE0LjJzMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjRjMCAyNi44LTMxLjUgNTAuNS04MCA2NXpNMCAyNDBsMC0xNmMwLTQ0LjIgODYtODAgMTkyLTgwczE5MiAzNS44IDE5MiA4MGwwIDE2YzAgNDQuMi04NiA4MC0xOTIgODBTMCAyODQuMiAwIDI0MHptMzg0IDk2YzAgNDQuMi04NiA4MC0xOTIgODBTMCAzODAuMiAwIDMzNmwwLTE1LjRjMTEuNiA4LjEgMjQuNSAxNC43IDM3LjggMjAuMyA0MS45IDE3LjUgOTYuNSAyNy4xIDE1NC4yIDI3LjFzMTEyLjMtOS43IDE1NC4yLTI3LjFjMTMuMi01LjUgMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjR6bTAgODAuNmwwIDE1LjRjMCA0NC4yLTg2IDgwLTE5MiA4MFMwIDQ3Ni4yIDAgNDMybDAtMTUuNGMxMS42IDguMSAyNC41IDE0LjcgMzcuOCAyMC4zIDQxLjkgMTcuNSA5Ni41IDI3LjEgMTU0LjIgMjcuMXMxMTIuMy05LjcgMTU0LjItMjcuMWMxMy4yLTUuNSAyNi4xLTEyLjIgMzcuOC0yMC4zemBdfSxTZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBjaXJjbGUtaW5mb2AsaWNvbjpbNTEyLDUxMixbYGluZm8tY2lyY2xlYF0sYGYwNWFgLGBNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIyNCAxNjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTggNjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDg4IDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtODAgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwyNCAwIDAtNjQtMjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpgXX0sQ2Q9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgc29ydC1kb3duYCxpY29uOlszODQsNTEyLFtgc29ydC1kZXNjYF0sYGYwZGRgLGBNMzIgMjg4Yy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44Uy4yIDMzMy41IDkuNCAzNDIuNmwxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTMzY0LjkgMjg4IDM1MiAyODhMMzIgMjg4emBdfTtmdW5jdGlvbiB3ZChlKXt2YXIgdCxuLHI9YGA7aWYodHlwZW9mIGU9PWBzdHJpbmdgfHx0eXBlb2YgZT09YG51bWJlcmApcis9ZTtlbHNlIGlmKHR5cGVvZiBlPT1gb2JqZWN0YCl7aWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIGk9ZS5sZW5ndGg7Zm9yKHQ9MDt0PGk7dCsrKWVbdF0mJihuPXdkKGVbdF0pKSYmKHImJihyKz1gIGApLHIrPW4pfWVsc2UgZm9yKG4gaW4gZSllW25dJiYociYmKHIrPWAgYCkscis9bil9cmV0dXJuIHJ9ZnVuY3Rpb24gVGQoKXtmb3IodmFyIGUsdCxuPTAscj1gYCxpPWFyZ3VtZW50cy5sZW5ndGg7bjxpO24rKykoZT1hcmd1bWVudHNbbl0pJiYodD13ZChlKSkmJihyJiYocis9YCBgKSxyKz10KTtyZXR1cm4gcn12YXIgRWQ9ZT0+dHlwZW9mIGU9PWBib29sZWFuYD9gJHtlfWA6ZT09PTA/YDBgOmUsRGQ9VGQsT2Q9KGUsdCk9Pm49PntpZih0Py52YXJpYW50cz09bnVsbClyZXR1cm4gRGQoZSxuPy5jbGFzcyxuPy5jbGFzc05hbWUpO2xldHt2YXJpYW50czpyLGRlZmF1bHRWYXJpYW50czppfT10LGE9T2JqZWN0LmtleXMocikubWFwKGU9PntsZXQgdD1uPy5bZV0sYT1pPy5bZV07aWYodD09PW51bGwpcmV0dXJuIG51bGw7bGV0IG89RWQodCl8fEVkKGEpO3JldHVybiByW2VdW29dfSksbz1uJiZPYmplY3QuZW50cmllcyhuKS5yZWR1Y2UoKGUsdCk9PntsZXRbbixyXT10O3JldHVybiByPT09dm9pZCAwfHwoZVtuXT1yKSxlfSx7fSk7cmV0dXJuIERkKGUsYSx0Py5jb21wb3VuZFZhcmlhbnRzPy5yZWR1Y2UoKGUsdCk9PntsZXR7Y2xhc3M6bixjbGFzc05hbWU6ciwuLi5hfT10O3JldHVybiBPYmplY3QuZW50cmllcyhhKS5ldmVyeShlPT57bGV0W3Qsbl09ZTtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLmluY2x1ZGVzKHsuLi5pLC4uLm99W3RdKTp7Li4uaSwuLi5vfVt0XT09PW59KT9bLi4uZSxuLHJdOmV9LFtdKSxuPy5jbGFzcyxuPy5jbGFzc05hbWUpfSxrZD0oZSx0KT0+e2xldCBuPUFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspbltlLmxlbmd0aCtyXT10W3JdO3JldHVybiBufSxBZD0oZSx0KT0+KHtjbGFzc0dyb3VwSWQ6ZSx2YWxpZGF0b3I6dH0pLGpkPShlPW5ldyBNYXAsdD1udWxsLG4pPT4oe25leHRQYXJ0OmUsdmFsaWRhdG9yczp0LGNsYXNzR3JvdXBJZDpufSksTWQ9YC1gLE5kPVtdLFBkPWBhcmJpdHJhcnkuLmAsRmQ9ZT0+e2xldCB0PVJkKGUpLHtjb25mbGljdGluZ0NsYXNzR3JvdXBzOm4sY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOnJ9PWU7cmV0dXJue2dldENsYXNzR3JvdXBJZDplPT57aWYoZS5zdGFydHNXaXRoKGBbYCkmJmUuZW5kc1dpdGgoYF1gKSlyZXR1cm4gTGQoZSk7bGV0IG49ZS5zcGxpdChNZCk7cmV0dXJuIElkKG4sKyhuWzBdPT09YGAmJm4ubGVuZ3RoPjEpLHQpfSxnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6KGUsdCk9PntpZih0KXtsZXQgdD1yW2VdLGk9bltlXTtyZXR1cm4gdD9pP2tkKGksdCk6dDppfHxOZH1yZXR1cm4gbltlXXx8TmR9fX0sSWQ9KGUsdCxuKT0+e2lmKGUubGVuZ3RoLXQ9PT0wKXJldHVybiBuLmNsYXNzR3JvdXBJZDtsZXQgcj1lW3RdLGk9bi5uZXh0UGFydC5nZXQocik7aWYoaSl7bGV0IG49SWQoZSx0KzEsaSk7aWYobilyZXR1cm4gbn1sZXQgYT1uLnZhbGlkYXRvcnM7aWYoYT09PW51bGwpcmV0dXJuO2xldCBvPXQ9PT0wP2Uuam9pbihNZCk6ZS5zbGljZSh0KS5qb2luKE1kKSxzPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cztlKyspe2xldCB0PWFbZV07aWYodC52YWxpZGF0b3IobykpcmV0dXJuIHQuY2xhc3NHcm91cElkfX0sTGQ9ZT0+ZS5zbGljZSgxLC0xKS5pbmRleE9mKGA6YCk9PT0tMT92b2lkIDA6KCgpPT57bGV0IHQ9ZS5zbGljZSgxLC0xKSxuPXQuaW5kZXhPZihgOmApLHI9dC5zbGljZSgwLG4pO3JldHVybiByP1BkK3I6dm9pZCAwfSkoKSxSZD1lPT57bGV0e3RoZW1lOnQsY2xhc3NHcm91cHM6bn09ZTtyZXR1cm4gemQobix0KX0semQ9KGUsdCk9PntsZXQgbj1qZCgpO2ZvcihsZXQgciBpbiBlKXtsZXQgaT1lW3JdO0JkKGksbixyLHQpfXJldHVybiBufSxCZD0oZSx0LG4scik9PntsZXQgaT1lLmxlbmd0aDtmb3IobGV0IGE9MDthPGk7YSsrKXtsZXQgaT1lW2FdO1ZkKGksdCxuLHIpfX0sVmQ9KGUsdCxuLHIpPT57aWYodHlwZW9mIGU9PWBzdHJpbmdgKXtIZChlLHQsbik7cmV0dXJufWlmKHR5cGVvZiBlPT1gZnVuY3Rpb25gKXtVZChlLHQsbixyKTtyZXR1cm59V2QoZSx0LG4scil9LEhkPShlLHQsbik9PntsZXQgcj1lPT09YGA/dDpHZCh0LGUpO3IuY2xhc3NHcm91cElkPW59LFVkPShlLHQsbixyKT0+e2lmKEtkKGUpKXtCZChlKHIpLHQsbixyKTtyZXR1cm59dC52YWxpZGF0b3JzPT09bnVsbCYmKHQudmFsaWRhdG9ycz1bXSksdC52YWxpZGF0b3JzLnB1c2goQWQobixlKSl9LFdkPShlLHQsbixyKT0+e2xldCBpPU9iamVjdC5lbnRyaWVzKGUpLGE9aS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7bGV0W2Esb109aVtlXTtCZChvLEdkKHQsYSksbixyKX19LEdkPShlLHQpPT57bGV0IG49ZSxyPXQuc3BsaXQoTWQpLGk9ci5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7bGV0IHQ9cltlXSxpPW4ubmV4dFBhcnQuZ2V0KHQpO2l8fChpPWpkKCksbi5uZXh0UGFydC5zZXQodCxpKSksbj1pfXJldHVybiBufSxLZD1lPT5gaXNUaGVtZUdldHRlcmBpbiBlJiZlLmlzVGhlbWVHZXR0ZXI9PT0hMCxxZD1lPT57aWYoZTwxKXJldHVybntnZXQ6KCk9PnZvaWQgMCxzZXQ6KCk9Pnt9fTtsZXQgdD0wLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPU9iamVjdC5jcmVhdGUobnVsbCksaT0oaSxhKT0+e25baV09YSx0KyssdD5lJiYodD0wLHI9bixuPU9iamVjdC5jcmVhdGUobnVsbCkpfTtyZXR1cm57Z2V0KGUpe2xldCB0PW5bZV07aWYodCE9PXZvaWQgMClyZXR1cm4gdDtpZigodD1yW2VdKSE9PXZvaWQgMClyZXR1cm4gaShlLHQpLHR9LHNldChlLHQpe2UgaW4gbj9uW2VdPXQ6aShlLHQpfX19LEpkPWAhYCxZZD1gOmAsWGQ9W10sWmQ9KGUsdCxuLHIsaSk9Pih7bW9kaWZpZXJzOmUsaGFzSW1wb3J0YW50TW9kaWZpZXI6dCxiYXNlQ2xhc3NOYW1lOm4sbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjpyLGlzRXh0ZXJuYWw6aX0pLFFkPWU9PntsZXR7cHJlZml4OnQsZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWU6bn09ZSxyPWU9PntsZXQgdD1bXSxuPTAscj0wLGk9MCxhLG89ZS5sZW5ndGg7Zm9yKGxldCBzPTA7czxvO3MrKyl7bGV0IG89ZVtzXTtpZihuPT09MCYmcj09PTApe2lmKG89PT1ZZCl7dC5wdXNoKGUuc2xpY2UoaSxzKSksaT1zKzE7Y29udGludWV9aWYobz09PWAvYCl7YT1zO2NvbnRpbnVlfX1vPT09YFtgP24rKzpvPT09YF1gP24tLTpvPT09YChgP3IrKzpvPT09YClgJiZyLS19bGV0IHM9dC5sZW5ndGg9PT0wP2U6ZS5zbGljZShpKSxjPXMsbD0hMTtzLmVuZHNXaXRoKEpkKT8oYz1zLnNsaWNlKDAsLTEpLGw9ITApOnMuc3RhcnRzV2l0aChKZCkmJihjPXMuc2xpY2UoMSksbD0hMCk7bGV0IHU9YSYmYT5pP2EtaTp2b2lkIDA7cmV0dXJuIFpkKHQsbCxjLHUpfTtpZih0KXtsZXQgZT10K1lkLG49cjtyPXQ9PnQuc3RhcnRzV2l0aChlKT9uKHQuc2xpY2UoZS5sZW5ndGgpKTpaZChYZCwhMSx0LHZvaWQgMCwhMCl9aWYobil7bGV0IGU9cjtyPXQ9Pm4oe2NsYXNzTmFtZTp0LHBhcnNlQ2xhc3NOYW1lOmV9KX1yZXR1cm4gcn0sJGQ9ZT0+e2xldCB0PW5ldyBNYXA7cmV0dXJuIGUub3JkZXJTZW5zaXRpdmVNb2RpZmllcnMuZm9yRWFjaCgoZSxuKT0+e3Quc2V0KGUsMWU2K24pfSksZT0+e2xldCBuPVtdLHI9W107Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2xldCBhPWVbaV0sbz1hWzBdPT09YFtgLHM9dC5oYXMoYSk7b3x8cz8oci5sZW5ndGg+MCYmKHIuc29ydCgpLG4ucHVzaCguLi5yKSxyPVtdKSxuLnB1c2goYSkpOnIucHVzaChhKX1yZXR1cm4gci5sZW5ndGg+MCYmKHIuc29ydCgpLG4ucHVzaCguLi5yKSksbn19LGVmPWU9Pih7Y2FjaGU6cWQoZS5jYWNoZVNpemUpLHBhcnNlQ2xhc3NOYW1lOlFkKGUpLHNvcnRNb2RpZmllcnM6JGQoZSkscG9zdGZpeExvb2t1cENsYXNzR3JvdXBJZHM6dGYoZSksLi4uRmQoZSl9KSx0Zj1lPT57bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxuPWUucG9zdGZpeExvb2t1cENsYXNzR3JvdXBzO2lmKG4pZm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspdFtuW2VdXT0hMDtyZXR1cm4gdH0sbmY9L1xzKy8scmY9KGUsdCk9PntsZXR7cGFyc2VDbGFzc05hbWU6bixnZXRDbGFzc0dyb3VwSWQ6cixnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6aSxzb3J0TW9kaWZpZXJzOmEscG9zdGZpeExvb2t1cENsYXNzR3JvdXBJZHM6b309dCxzPVtdLGM9ZS50cmltKCkuc3BsaXQobmYpLGw9YGA7Zm9yKGxldCBlPWMubGVuZ3RoLTE7ZT49MDstLWUpe2xldCB0PWNbZV0se2lzRXh0ZXJuYWw6dSxtb2RpZmllcnM6ZCxoYXNJbXBvcnRhbnRNb2RpZmllcjpmLGJhc2VDbGFzc05hbWU6cCxtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uOm19PW4odCk7aWYodSl7bD10KyhsLmxlbmd0aD4wP2AgYCtsOmwpO2NvbnRpbnVlfWxldCBoPSEhbSxnO2lmKGgpe2c9cihwLnN1YnN0cmluZygwLG0pKTtsZXQgZT1nJiZvW2ddP3IocCk6dm9pZCAwO2UmJmUhPT1nJiYoZz1lLGg9ITEpfWVsc2UgZz1yKHApO2lmKCFnKXtpZighaCl7bD10KyhsLmxlbmd0aD4wP2AgYCtsOmwpO2NvbnRpbnVlfWlmKGc9cihwKSwhZyl7bD10KyhsLmxlbmd0aD4wP2AgYCtsOmwpO2NvbnRpbnVlfWg9ITF9bGV0IF89ZC5sZW5ndGg9PT0wP2BgOmQubGVuZ3RoPT09MT9kWzBdOmEoZCkuam9pbihgOmApLHY9Zj9fK0pkOl8seT12K2c7aWYocy5pbmRleE9mKHkpPi0xKWNvbnRpbnVlO3MucHVzaCh5KTtsZXQgYj1pKGcsaCk7Zm9yKGxldCBlPTA7ZTxiLmxlbmd0aDsrK2Upe2xldCB0PWJbZV07cy5wdXNoKHYrdCl9bD10KyhsLmxlbmd0aD4wP2AgYCtsOmwpfXJldHVybiBsfSxhZj0oLi4uZSk9PntsZXQgdD0wLG4scixpPWBgO2Zvcig7dDxlLmxlbmd0aDspKG49ZVt0KytdKSYmKHI9b2YobikpJiYoaSYmKGkrPWAgYCksaSs9cik7cmV0dXJuIGl9LG9mPWU9PntpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIGU7bGV0IHQsbj1gYDtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYodD1vZihlW3JdKSkmJihuJiYobis9YCBgKSxuKz10KTtyZXR1cm4gbn0sc2Y9KGUsLi4udCk9PntsZXQgbixyLGksYSxvPW89PihuPWVmKHQucmVkdWNlKChlLHQpPT50KGUpLGUoKSkpLHI9bi5jYWNoZS5nZXQsaT1uLmNhY2hlLnNldCxhPXMscyhvKSkscz1lPT57bGV0IHQ9cihlKTtpZih0KXJldHVybiB0O2xldCBhPXJmKGUsbik7cmV0dXJuIGkoZSxhKSxhfTtyZXR1cm4gYT1vLCguLi5lKT0+YShhZiguLi5lKSl9LGNmPVtdLFg9ZT0+e2xldCB0PXQ9PnRbZV18fGNmO3JldHVybiB0LmlzVGhlbWVHZXR0ZXI9ITAsdH0sbGY9L15cWyg/Oihcd1tcdy1dKik6KT8oLispXF0kL2ksdWY9L15cKCg/Oihcd1tcdy1dKik6KT8oLispXCkkL2ksZGY9L15cZCsoPzpcLlxkKyk/XC9cZCsoPzpcLlxkKyk/JC8sZmY9L14oXGQrKFwuXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLyxwZj0vXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXCguK1wpfF4wJC8sbWY9L14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpfGNvbG9yLW1peClcKC4rXCkkLyxoZj0vXihpbnNldF8pPy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApXy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApLyxnZj0vXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVwoLitcKSQvLF9mPWU9PmRmLnRlc3QoZSksWj1lPT4hIWUmJiFOdW1iZXIuaXNOYU4oTnVtYmVyKGUpKSx2Zj1lPT4hIWUmJk51bWJlci5pc0ludGVnZXIoTnVtYmVyKGUpKSx5Zj1lPT5lLmVuZHNXaXRoKGAlYCkmJlooZS5zbGljZSgwLC0xKSksYmY9ZT0+ZmYudGVzdChlKSx4Zj0oKT0+ITAsU2Y9ZT0+cGYudGVzdChlKSYmIW1mLnRlc3QoZSksQ2Y9KCk9PiExLHdmPWU9PmhmLnRlc3QoZSksVGY9ZT0+Z2YudGVzdChlKSxFZj1lPT4hUShlKSYmISQoZSksRGY9ZT0+ZS5zdGFydHNXaXRoKGBAY29udGFpbmVyYCkmJihlWzEwXT09PWAvYCYmZVsxMV0hPT12b2lkIDB8fGVbMTFdPT09YHNgJiZlWzE2XSE9PXZvaWQgMCYmZS5zdGFydHNXaXRoKGAtc2l6ZS9gLDEwKXx8ZVsxMV09PT1gbmAmJmVbMThdIT09dm9pZCAwJiZlLnN0YXJ0c1dpdGgoYC1ub3JtYWwvYCwxMCkpLE9mPWU9PlVmKGUscWYsQ2YpLFE9ZT0+bGYudGVzdChlKSxrZj1lPT5VZihlLEpmLFNmKSxBZj1lPT5VZihlLFlmLFopLGpmPWU9PlVmKGUsWmYseGYpLE1mPWU9PlVmKGUsWGYsQ2YpLE5mPWU9PlVmKGUsR2YsQ2YpLFBmPWU9PlVmKGUsS2YsVGYpLEZmPWU9PlVmKGUsUWYsd2YpLCQ9ZT0+dWYudGVzdChlKSxJZj1lPT5XZihlLEpmKSxMZj1lPT5XZihlLFhmKSxSZj1lPT5XZihlLEdmKSx6Zj1lPT5XZihlLHFmKSxCZj1lPT5XZihlLEtmKSxWZj1lPT5XZihlLFFmLCEwKSxIZj1lPT5XZihlLFpmLCEwKSxVZj0oZSx0LG4pPT57bGV0IHI9bGYuZXhlYyhlKTtyZXR1cm4gcj9yWzFdP3QoclsxXSk6bihyWzJdKTohMX0sV2Y9KGUsdCxuPSExKT0+e2xldCByPXVmLmV4ZWMoZSk7cmV0dXJuIHI/clsxXT90KHJbMV0pOm46ITF9LEdmPWU9PmU9PT1gcG9zaXRpb25gfHxlPT09YHBlcmNlbnRhZ2VgLEtmPWU9PmU9PT1gaW1hZ2VgfHxlPT09YHVybGAscWY9ZT0+ZT09PWBsZW5ndGhgfHxlPT09YHNpemVgfHxlPT09YGJnLXNpemVgLEpmPWU9PmU9PT1gbGVuZ3RoYCxZZj1lPT5lPT09YG51bWJlcmAsWGY9ZT0+ZT09PWBmYW1pbHktbmFtZWAsWmY9ZT0+ZT09PWBudW1iZXJgfHxlPT09YHdlaWdodGAsUWY9ZT0+ZT09PWBzaGFkb3dgLCRmPXNmKCgpPT57bGV0IGU9WChgY29sb3JgKSx0PVgoYGZvbnRgKSxuPVgoYHRleHRgKSxyPVgoYGZvbnQtd2VpZ2h0YCksaT1YKGB0cmFja2luZ2ApLGE9WChgbGVhZGluZ2ApLG89WChgYnJlYWtwb2ludGApLHM9WChgY29udGFpbmVyYCksYz1YKGBzcGFjaW5nYCksbD1YKGByYWRpdXNgKSx1PVgoYHNoYWRvd2ApLGQ9WChgaW5zZXQtc2hhZG93YCksZj1YKGB0ZXh0LXNoYWRvd2ApLHA9WChgZHJvcC1zaGFkb3dgKSxtPVgoYGJsdXJgKSxoPVgoYHBlcnNwZWN0aXZlYCksZz1YKGBhc3BlY3RgKSxfPVgoYGVhc2VgKSx2PVgoYGFuaW1hdGVgKSx5PSgpPT5bYGF1dG9gLGBhdm9pZGAsYGFsbGAsYGF2b2lkLXBhZ2VgLGBwYWdlYCxgbGVmdGAsYHJpZ2h0YCxgY29sdW1uYF0sYj0oKT0+W2BjZW50ZXJgLGB0b3BgLGBib3R0b21gLGBsZWZ0YCxgcmlnaHRgLGB0b3AtbGVmdGAsYGxlZnQtdG9wYCxgdG9wLXJpZ2h0YCxgcmlnaHQtdG9wYCxgYm90dG9tLXJpZ2h0YCxgcmlnaHQtYm90dG9tYCxgYm90dG9tLWxlZnRgLGBsZWZ0LWJvdHRvbWBdLHg9KCk9PlsuLi5iKCksJCxRXSxTPSgpPT5bYGF1dG9gLGBoaWRkZW5gLGBjbGlwYCxgdmlzaWJsZWAsYHNjcm9sbGBdLEM9KCk9PltgYXV0b2AsYGNvbnRhaW5gLGBub25lYF0sdz0oKT0+WyQsUSxjXSxUPSgpPT5bX2YsYGZ1bGxgLGBhdXRvYCwuLi53KCldLEU9KCk9Plt2Zixgbm9uZWAsYHN1YmdyaWRgLCQsUV0sRD0oKT0+W2BhdXRvYCx7c3BhbjpbYGZ1bGxgLHZmLCQsUV19LHZmLCQsUV0sZWU9KCk9Plt2ZixgYXV0b2AsJCxRXSxPPSgpPT5bYGF1dG9gLGBtaW5gLGBtYXhgLGBmcmAsJCxRXSx0ZT0oKT0+W2BzdGFydGAsYGVuZGAsYGNlbnRlcmAsYGJldHdlZW5gLGBhcm91bmRgLGBldmVubHlgLGBzdHJldGNoYCxgYmFzZWxpbmVgLGBjZW50ZXItc2FmZWAsYGVuZC1zYWZlYF0saz0oKT0+W2BzdGFydGAsYGVuZGAsYGNlbnRlcmAsYHN0cmV0Y2hgLGBjZW50ZXItc2FmZWAsYGVuZC1zYWZlYF0sQT0oKT0+W2BhdXRvYCwuLi53KCldLG5lPSgpPT5bX2YsYGF1dG9gLGBmdWxsYCxgZHZ3YCxgZHZoYCxgbHZ3YCxgbHZoYCxgc3Z3YCxgc3ZoYCxgbWluYCxgbWF4YCxgZml0YCwuLi53KCldLGo9KCk9PltfZixgc2NyZWVuYCxgZnVsbGAsYGR2d2AsYGx2d2AsYHN2d2AsYG1pbmAsYG1heGAsYGZpdGAsLi4udygpXSxNPSgpPT5bX2YsYHNjcmVlbmAsYGZ1bGxgLGBsaGAsYGR2aGAsYGx2aGAsYHN2aGAsYG1pbmAsYG1heGAsYGZpdGAsLi4udygpXSxOPSgpPT5bZSwkLFFdLHJlPSgpPT5bLi4uYigpLFJmLE5mLHtwb3NpdGlvbjpbJCxRXX1dLGllPSgpPT5bYG5vLXJlcGVhdGAse3JlcGVhdDpbYGAsYHhgLGB5YCxgc3BhY2VgLGByb3VuZGBdfV0sYWU9KCk9PltgYXV0b2AsYGNvdmVyYCxgY29udGFpbmAsemYsT2Yse3NpemU6WyQsUV19XSxvZT0oKT0+W3lmLElmLGtmXSxQPSgpPT5bYGAsYG5vbmVgLGBmdWxsYCxsLCQsUV0sRj0oKT0+W2BgLFosSWYsa2ZdLHNlPSgpPT5bYHNvbGlkYCxgZGFzaGVkYCxgZG90dGVkYCxgZG91YmxlYF0sY2U9KCk9Pltgbm9ybWFsYCxgbXVsdGlwbHlgLGBzY3JlZW5gLGBvdmVybGF5YCxgZGFya2VuYCxgbGlnaHRlbmAsYGNvbG9yLWRvZGdlYCxgY29sb3ItYnVybmAsYGhhcmQtbGlnaHRgLGBzb2Z0LWxpZ2h0YCxgZGlmZmVyZW5jZWAsYGV4Y2x1c2lvbmAsYGh1ZWAsYHNhdHVyYXRpb25gLGBjb2xvcmAsYGx1bWlub3NpdHlgXSxJPSgpPT5bWix5ZixSZixOZl0sbGU9KCk9PltgYCxgbm9uZWAsbSwkLFFdLEw9KCk9Pltgbm9uZWAsWiwkLFFdLHVlPSgpPT5bYG5vbmVgLFosJCxRXSxkZT0oKT0+W1osJCxRXSxmZT0oKT0+W19mLGBmdWxsYCwuLi53KCldO3JldHVybntjYWNoZVNpemU6NTAwLHRoZW1lOnthbmltYXRlOltgc3BpbmAsYHBpbmdgLGBwdWxzZWAsYGJvdW5jZWBdLGFzcGVjdDpbYHZpZGVvYF0sYmx1cjpbYmZdLGJyZWFrcG9pbnQ6W2JmXSxjb2xvcjpbeGZdLGNvbnRhaW5lcjpbYmZdLCJkcm9wLXNoYWRvdyI6W2JmXSxlYXNlOltgaW5gLGBvdXRgLGBpbi1vdXRgXSxmb250OltFZl0sImZvbnQtd2VpZ2h0IjpbYHRoaW5gLGBleHRyYWxpZ2h0YCxgbGlnaHRgLGBub3JtYWxgLGBtZWRpdW1gLGBzZW1pYm9sZGAsYGJvbGRgLGBleHRyYWJvbGRgLGBibGFja2BdLCJpbnNldC1zaGFkb3ciOltiZl0sbGVhZGluZzpbYG5vbmVgLGB0aWdodGAsYHNudWdgLGBub3JtYWxgLGByZWxheGVkYCxgbG9vc2VgXSxwZXJzcGVjdGl2ZTpbYGRyYW1hdGljYCxgbmVhcmAsYG5vcm1hbGAsYG1pZHJhbmdlYCxgZGlzdGFudGAsYG5vbmVgXSxyYWRpdXM6W2JmXSxzaGFkb3c6W2JmXSxzcGFjaW5nOltgcHhgLFpdLHRleHQ6W2JmXSwidGV4dC1zaGFkb3ciOltiZl0sdHJhY2tpbmc6W2B0aWdodGVyYCxgdGlnaHRgLGBub3JtYWxgLGB3aWRlYCxgd2lkZXJgLGB3aWRlc3RgXX0sY2xhc3NHcm91cHM6e2FzcGVjdDpbe2FzcGVjdDpbYGF1dG9gLGBzcXVhcmVgLF9mLFEsJCxnXX1dLGNvbnRhaW5lcjpbYGNvbnRhaW5lcmBdLCJjb250YWluZXItdHlwZSI6W3siQGNvbnRhaW5lciI6W2BgLGBub3JtYWxgLGBzaXplYCwkLFFdfV0sImNvbnRhaW5lci1uYW1lZCI6W0RmXSxjb2x1bW5zOlt7Y29sdW1uczpbWixRLCQsc119XSwiYnJlYWstYWZ0ZXIiOlt7ImJyZWFrLWFmdGVyIjp5KCl9XSwiYnJlYWstYmVmb3JlIjpbeyJicmVhay1iZWZvcmUiOnkoKX1dLCJicmVhay1pbnNpZGUiOlt7ImJyZWFrLWluc2lkZSI6W2BhdXRvYCxgYXZvaWRgLGBhdm9pZC1wYWdlYCxgYXZvaWQtY29sdW1uYF19XSwiYm94LWRlY29yYXRpb24iOlt7ImJveC1kZWNvcmF0aW9uIjpbYHNsaWNlYCxgY2xvbmVgXX1dLGJveDpbe2JveDpbYGJvcmRlcmAsYGNvbnRlbnRgXX1dLGRpc3BsYXk6W2BibG9ja2AsYGlubGluZS1ibG9ja2AsYGlubGluZWAsYGZsZXhgLGBpbmxpbmUtZmxleGAsYHRhYmxlYCxgaW5saW5lLXRhYmxlYCxgdGFibGUtY2FwdGlvbmAsYHRhYmxlLWNlbGxgLGB0YWJsZS1jb2x1bW5gLGB0YWJsZS1jb2x1bW4tZ3JvdXBgLGB0YWJsZS1mb290ZXItZ3JvdXBgLGB0YWJsZS1oZWFkZXItZ3JvdXBgLGB0YWJsZS1yb3ctZ3JvdXBgLGB0YWJsZS1yb3dgLGBmbG93LXJvb3RgLGBncmlkYCxgaW5saW5lLWdyaWRgLGBjb250ZW50c2AsYGxpc3QtaXRlbWAsYGhpZGRlbmBdLHNyOltgc3Itb25seWAsYG5vdC1zci1vbmx5YF0sZmxvYXQ6W3tmbG9hdDpbYHJpZ2h0YCxgbGVmdGAsYG5vbmVgLGBzdGFydGAsYGVuZGBdfV0sY2xlYXI6W3tjbGVhcjpbYGxlZnRgLGByaWdodGAsYGJvdGhgLGBub25lYCxgc3RhcnRgLGBlbmRgXX1dLGlzb2xhdGlvbjpbYGlzb2xhdGVgLGBpc29sYXRpb24tYXV0b2BdLCJvYmplY3QtZml0Ijpbe29iamVjdDpbYGNvbnRhaW5gLGBjb3ZlcmAsYGZpbGxgLGBub25lYCxgc2NhbGUtZG93bmBdfV0sIm9iamVjdC1wb3NpdGlvbiI6W3tvYmplY3Q6eCgpfV0sb3ZlcmZsb3c6W3tvdmVyZmxvdzpTKCl9XSwib3ZlcmZsb3cteCI6W3sib3ZlcmZsb3cteCI6UygpfV0sIm92ZXJmbG93LXkiOlt7Im92ZXJmbG93LXkiOlMoKX1dLG92ZXJzY3JvbGw6W3tvdmVyc2Nyb2xsOkMoKX1dLCJvdmVyc2Nyb2xsLXgiOlt7Im92ZXJzY3JvbGwteCI6QygpfV0sIm92ZXJzY3JvbGwteSI6W3sib3ZlcnNjcm9sbC15IjpDKCl9XSxwb3NpdGlvbjpbYHN0YXRpY2AsYGZpeGVkYCxgYWJzb2x1dGVgLGByZWxhdGl2ZWAsYHN0aWNreWBdLGluc2V0Olt7aW5zZXQ6VCgpfV0sImluc2V0LXgiOlt7Imluc2V0LXgiOlQoKX1dLCJpbnNldC15IjpbeyJpbnNldC15IjpUKCl9XSxzdGFydDpbeyJpbnNldC1zIjpUKCksc3RhcnQ6VCgpfV0sZW5kOlt7Imluc2V0LWUiOlQoKSxlbmQ6VCgpfV0sImluc2V0LWJzIjpbeyJpbnNldC1icyI6VCgpfV0sImluc2V0LWJlIjpbeyJpbnNldC1iZSI6VCgpfV0sdG9wOlt7dG9wOlQoKX1dLHJpZ2h0Olt7cmlnaHQ6VCgpfV0sYm90dG9tOlt7Ym90dG9tOlQoKX1dLGxlZnQ6W3tsZWZ0OlQoKX1dLHZpc2liaWxpdHk6W2B2aXNpYmxlYCxgaW52aXNpYmxlYCxgY29sbGFwc2VgXSx6Olt7ejpbdmYsYGF1dG9gLCQsUV19XSxiYXNpczpbe2Jhc2lzOltfZixgZnVsbGAsYGF1dG9gLHMsLi4udygpXX1dLCJmbGV4LWRpcmVjdGlvbiI6W3tmbGV4Oltgcm93YCxgcm93LXJldmVyc2VgLGBjb2xgLGBjb2wtcmV2ZXJzZWBdfV0sImZsZXgtd3JhcCI6W3tmbGV4Oltgbm93cmFwYCxgd3JhcGAsYHdyYXAtcmV2ZXJzZWBdfV0sZmxleDpbe2ZsZXg6W1osX2YsYGF1dG9gLGBpbml0aWFsYCxgbm9uZWAsUV19XSxncm93Olt7Z3JvdzpbYGAsWiwkLFFdfV0sc2hyaW5rOlt7c2hyaW5rOltgYCxaLCQsUV19XSxvcmRlcjpbe29yZGVyOlt2ZixgZmlyc3RgLGBsYXN0YCxgbm9uZWAsJCxRXX1dLCJncmlkLWNvbHMiOlt7ImdyaWQtY29scyI6RSgpfV0sImNvbC1zdGFydC1lbmQiOlt7Y29sOkQoKX1dLCJjb2wtc3RhcnQiOlt7ImNvbC1zdGFydCI6ZWUoKX1dLCJjb2wtZW5kIjpbeyJjb2wtZW5kIjplZSgpfV0sImdyaWQtcm93cyI6W3siZ3JpZC1yb3dzIjpFKCl9XSwicm93LXN0YXJ0LWVuZCI6W3tyb3c6RCgpfV0sInJvdy1zdGFydCI6W3sicm93LXN0YXJ0IjplZSgpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOmVlKCl9XSwiZ3JpZC1mbG93IjpbeyJncmlkLWZsb3ciOltgcm93YCxgY29sYCxgZGVuc2VgLGByb3ctZGVuc2VgLGBjb2wtZGVuc2VgXX1dLCJhdXRvLWNvbHMiOlt7ImF1dG8tY29scyI6TygpfV0sImF1dG8tcm93cyI6W3siYXV0by1yb3dzIjpPKCl9XSxnYXA6W3tnYXA6dygpfV0sImdhcC14IjpbeyJnYXAteCI6dygpfV0sImdhcC15IjpbeyJnYXAteSI6dygpfV0sImp1c3RpZnktY29udGVudCI6W3tqdXN0aWZ5OlsuLi50ZSgpLGBub3JtYWxgXX1dLCJqdXN0aWZ5LWl0ZW1zIjpbeyJqdXN0aWZ5LWl0ZW1zIjpbLi4uaygpLGBub3JtYWxgXX1dLCJqdXN0aWZ5LXNlbGYiOlt7Imp1c3RpZnktc2VsZiI6W2BhdXRvYCwuLi5rKCldfV0sImFsaWduLWNvbnRlbnQiOlt7Y29udGVudDpbYG5vcm1hbGAsLi4udGUoKV19XSwiYWxpZ24taXRlbXMiOlt7aXRlbXM6Wy4uLmsoKSx7YmFzZWxpbmU6W2BgLGBsYXN0YF19XX1dLCJhbGlnbi1zZWxmIjpbe3NlbGY6W2BhdXRvYCwuLi5rKCkse2Jhc2VsaW5lOltgYCxgbGFzdGBdfV19XSwicGxhY2UtY29udGVudCI6W3sicGxhY2UtY29udGVudCI6dGUoKX1dLCJwbGFjZS1pdGVtcyI6W3sicGxhY2UtaXRlbXMiOlsuLi5rKCksYGJhc2VsaW5lYF19XSwicGxhY2Utc2VsZiI6W3sicGxhY2Utc2VsZiI6W2BhdXRvYCwuLi5rKCldfV0scDpbe3A6dygpfV0scHg6W3tweDp3KCl9XSxweTpbe3B5OncoKX1dLHBzOlt7cHM6dygpfV0scGU6W3twZTp3KCl9XSxwYnM6W3twYnM6dygpfV0scGJlOlt7cGJlOncoKX1dLHB0Olt7cHQ6dygpfV0scHI6W3twcjp3KCl9XSxwYjpbe3BiOncoKX1dLHBsOlt7cGw6dygpfV0sbTpbe206QSgpfV0sbXg6W3tteDpBKCl9XSxteTpbe215OkEoKX1dLG1zOlt7bXM6QSgpfV0sbWU6W3ttZTpBKCl9XSxtYnM6W3ttYnM6QSgpfV0sbWJlOlt7bWJlOkEoKX1dLG10Olt7bXQ6QSgpfV0sbXI6W3ttcjpBKCl9XSxtYjpbe21iOkEoKX1dLG1sOlt7bWw6QSgpfV0sInNwYWNlLXgiOlt7InNwYWNlLXgiOncoKX1dLCJzcGFjZS14LXJldmVyc2UiOltgc3BhY2UteC1yZXZlcnNlYF0sInNwYWNlLXkiOlt7InNwYWNlLXkiOncoKX1dLCJzcGFjZS15LXJldmVyc2UiOltgc3BhY2UteS1yZXZlcnNlYF0sc2l6ZTpbe3NpemU6bmUoKX1dLCJpbmxpbmUtc2l6ZSI6W3tpbmxpbmU6W2BhdXRvYCwuLi5qKCldfV0sIm1pbi1pbmxpbmUtc2l6ZSI6W3sibWluLWlubGluZSI6W2BhdXRvYCwuLi5qKCldfV0sIm1heC1pbmxpbmUtc2l6ZSI6W3sibWF4LWlubGluZSI6W2Bub25lYCwuLi5qKCldfV0sImJsb2NrLXNpemUiOlt7YmxvY2s6W2BhdXRvYCwuLi5NKCldfV0sIm1pbi1ibG9jay1zaXplIjpbeyJtaW4tYmxvY2siOltgYXV0b2AsLi4uTSgpXX1dLCJtYXgtYmxvY2stc2l6ZSI6W3sibWF4LWJsb2NrIjpbYG5vbmVgLC4uLk0oKV19XSx3Olt7dzpbcyxgc2NyZWVuYCwuLi5uZSgpXX1dLCJtaW4tdyI6W3sibWluLXciOltzLGBzY3JlZW5gLGBub25lYCwuLi5uZSgpXX1dLCJtYXgtdyI6W3sibWF4LXciOltzLGBzY3JlZW5gLGBub25lYCxgcHJvc2VgLHtzY3JlZW46W29dfSwuLi5uZSgpXX1dLGg6W3toOltgc2NyZWVuYCxgbGhgLC4uLm5lKCldfV0sIm1pbi1oIjpbeyJtaW4taCI6W2BzY3JlZW5gLGBsaGAsYG5vbmVgLC4uLm5lKCldfV0sIm1heC1oIjpbeyJtYXgtaCI6W2BzY3JlZW5gLGBsaGAsLi4ubmUoKV19XSwiZm9udC1zaXplIjpbe3RleHQ6W2BiYXNlYCxuLElmLGtmXX1dLCJmb250LXNtb290aGluZyI6W2BhbnRpYWxpYXNlZGAsYHN1YnBpeGVsLWFudGlhbGlhc2VkYF0sImZvbnQtc3R5bGUiOltgaXRhbGljYCxgbm90LWl0YWxpY2BdLCJmb250LXdlaWdodCI6W3tmb250OltyLEhmLGpmXX1dLCJmb250LXN0cmV0Y2giOlt7ImZvbnQtc3RyZXRjaCI6W2B1bHRyYS1jb25kZW5zZWRgLGBleHRyYS1jb25kZW5zZWRgLGBjb25kZW5zZWRgLGBzZW1pLWNvbmRlbnNlZGAsYG5vcm1hbGAsYHNlbWktZXhwYW5kZWRgLGBleHBhbmRlZGAsYGV4dHJhLWV4cGFuZGVkYCxgdWx0cmEtZXhwYW5kZWRgLHlmLFFdfV0sImZvbnQtZmFtaWx5Ijpbe2ZvbnQ6W0xmLE1mLHRdfV0sImZvbnQtZmVhdHVyZXMiOlt7ImZvbnQtZmVhdHVyZXMiOltRXX1dLCJmdm4tbm9ybWFsIjpbYG5vcm1hbC1udW1zYF0sImZ2bi1vcmRpbmFsIjpbYG9yZGluYWxgXSwiZnZuLXNsYXNoZWQtemVybyI6W2BzbGFzaGVkLXplcm9gXSwiZnZuLWZpZ3VyZSI6W2BsaW5pbmctbnVtc2AsYG9sZHN0eWxlLW51bXNgXSwiZnZuLXNwYWNpbmciOltgcHJvcG9ydGlvbmFsLW51bXNgLGB0YWJ1bGFyLW51bXNgXSwiZnZuLWZyYWN0aW9uIjpbYGRpYWdvbmFsLWZyYWN0aW9uc2AsYHN0YWNrZWQtZnJhY3Rpb25zYF0sdHJhY2tpbmc6W3t0cmFja2luZzpbaSwkLFFdfV0sImxpbmUtY2xhbXAiOlt7ImxpbmUtY2xhbXAiOltaLGBub25lYCwkLEFmXX1dLGxlYWRpbmc6W3tsZWFkaW5nOlthLC4uLncoKV19XSwibGlzdC1pbWFnZSI6W3sibGlzdC1pbWFnZSI6W2Bub25lYCwkLFFdfV0sImxpc3Qtc3R5bGUtcG9zaXRpb24iOlt7bGlzdDpbYGluc2lkZWAsYG91dHNpZGVgXX1dLCJsaXN0LXN0eWxlLXR5cGUiOlt7bGlzdDpbYGRpc2NgLGBkZWNpbWFsYCxgbm9uZWAsJCxRXX1dLCJ0ZXh0LWFsaWdubWVudCI6W3t0ZXh0OltgbGVmdGAsYGNlbnRlcmAsYHJpZ2h0YCxganVzdGlmeWAsYHN0YXJ0YCxgZW5kYF19XSwicGxhY2Vob2xkZXItY29sb3IiOlt7cGxhY2Vob2xkZXI6TigpfV0sInRleHQtY29sb3IiOlt7dGV4dDpOKCl9XSwidGV4dC1kZWNvcmF0aW9uIjpbYHVuZGVybGluZWAsYG92ZXJsaW5lYCxgbGluZS10aHJvdWdoYCxgbm8tdW5kZXJsaW5lYF0sInRleHQtZGVjb3JhdGlvbi1zdHlsZSI6W3tkZWNvcmF0aW9uOlsuLi5zZSgpLGB3YXZ5YF19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltaLGBmcm9tLWZvbnRgLGBhdXRvYCwkLGtmXX1dLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiOlt7ZGVjb3JhdGlvbjpOKCl9XSwidW5kZXJsaW5lLW9mZnNldCI6W3sidW5kZXJsaW5lLW9mZnNldCI6W1osYGF1dG9gLCQsUV19XSwidGV4dC10cmFuc2Zvcm0iOltgdXBwZXJjYXNlYCxgbG93ZXJjYXNlYCxgY2FwaXRhbGl6ZWAsYG5vcm1hbC1jYXNlYF0sInRleHQtb3ZlcmZsb3ciOltgdHJ1bmNhdGVgLGB0ZXh0LWVsbGlwc2lzYCxgdGV4dC1jbGlwYF0sInRleHQtd3JhcCI6W3t0ZXh0Oltgd3JhcGAsYG5vd3JhcGAsYGJhbGFuY2VgLGBwcmV0dHlgXX1dLGluZGVudDpbe2luZGVudDp3KCl9XSwidGFiLXNpemUiOlt7dGFiOlt2ZiwkLFFdfV0sInZlcnRpY2FsLWFsaWduIjpbe2FsaWduOltgYmFzZWxpbmVgLGB0b3BgLGBtaWRkbGVgLGBib3R0b21gLGB0ZXh0LXRvcGAsYHRleHQtYm90dG9tYCxgc3ViYCxgc3VwZXJgLCQsUV19XSx3aGl0ZXNwYWNlOlt7d2hpdGVzcGFjZTpbYG5vcm1hbGAsYG5vd3JhcGAsYHByZWAsYHByZS1saW5lYCxgcHJlLXdyYXBgLGBicmVhay1zcGFjZXNgXX1dLGJyZWFrOlt7YnJlYWs6W2Bub3JtYWxgLGB3b3Jkc2AsYGFsbGAsYGtlZXBgXX1dLHdyYXA6W3t3cmFwOltgYnJlYWstd29yZGAsYGFueXdoZXJlYCxgbm9ybWFsYF19XSxoeXBoZW5zOlt7aHlwaGVuczpbYG5vbmVgLGBtYW51YWxgLGBhdXRvYF19XSxjb250ZW50Olt7Y29udGVudDpbYG5vbmVgLCQsUV19XSwiYmctYXR0YWNobWVudCI6W3tiZzpbYGZpeGVkYCxgbG9jYWxgLGBzY3JvbGxgXX1dLCJiZy1jbGlwIjpbeyJiZy1jbGlwIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YCxgdGV4dGBdfV0sImJnLW9yaWdpbiI6W3siYmctb3JpZ2luIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YF19XSwiYmctcG9zaXRpb24iOlt7Ymc6cmUoKX1dLCJiZy1yZXBlYXQiOlt7Ymc6aWUoKX1dLCJiZy1zaXplIjpbe2JnOmFlKCl9XSwiYmctaW1hZ2UiOlt7Ymc6W2Bub25lYCx7bGluZWFyOlt7dG86W2B0YCxgdHJgLGByYCxgYnJgLGBiYCxgYmxgLGBsYCxgdGxgXX0sdmYsJCxRXSxyYWRpYWw6W2BgLCQsUV0sY29uaWM6W3ZmLCQsUV19LEJmLFBmXX1dLCJiZy1jb2xvciI6W3tiZzpOKCl9XSwiZ3JhZGllbnQtZnJvbS1wb3MiOlt7ZnJvbTpvZSgpfV0sImdyYWRpZW50LXZpYS1wb3MiOlt7dmlhOm9lKCl9XSwiZ3JhZGllbnQtdG8tcG9zIjpbe3RvOm9lKCl9XSwiZ3JhZGllbnQtZnJvbSI6W3tmcm9tOk4oKX1dLCJncmFkaWVudC12aWEiOlt7dmlhOk4oKX1dLCJncmFkaWVudC10byI6W3t0bzpOKCl9XSxyb3VuZGVkOlt7cm91bmRlZDpQKCl9XSwicm91bmRlZC1zIjpbeyJyb3VuZGVkLXMiOlAoKX1dLCJyb3VuZGVkLWUiOlt7InJvdW5kZWQtZSI6UCgpfV0sInJvdW5kZWQtdCI6W3sicm91bmRlZC10IjpQKCl9XSwicm91bmRlZC1yIjpbeyJyb3VuZGVkLXIiOlAoKX1dLCJyb3VuZGVkLWIiOlt7InJvdW5kZWQtYiI6UCgpfV0sInJvdW5kZWQtbCI6W3sicm91bmRlZC1sIjpQKCl9XSwicm91bmRlZC1zcyI6W3sicm91bmRlZC1zcyI6UCgpfV0sInJvdW5kZWQtc2UiOlt7InJvdW5kZWQtc2UiOlAoKX1dLCJyb3VuZGVkLWVlIjpbeyJyb3VuZGVkLWVlIjpQKCl9XSwicm91bmRlZC1lcyI6W3sicm91bmRlZC1lcyI6UCgpfV0sInJvdW5kZWQtdGwiOlt7InJvdW5kZWQtdGwiOlAoKX1dLCJyb3VuZGVkLXRyIjpbeyJyb3VuZGVkLXRyIjpQKCl9XSwicm91bmRlZC1iciI6W3sicm91bmRlZC1iciI6UCgpfV0sInJvdW5kZWQtYmwiOlt7InJvdW5kZWQtYmwiOlAoKX1dLCJib3JkZXItdyI6W3tib3JkZXI6RigpfV0sImJvcmRlci13LXgiOlt7ImJvcmRlci14IjpGKCl9XSwiYm9yZGVyLXcteSI6W3siYm9yZGVyLXkiOkYoKX1dLCJib3JkZXItdy1zIjpbeyJib3JkZXItcyI6RigpfV0sImJvcmRlci13LWUiOlt7ImJvcmRlci1lIjpGKCl9XSwiYm9yZGVyLXctYnMiOlt7ImJvcmRlci1icyI6RigpfV0sImJvcmRlci13LWJlIjpbeyJib3JkZXItYmUiOkYoKX1dLCJib3JkZXItdy10IjpbeyJib3JkZXItdCI6RigpfV0sImJvcmRlci13LXIiOlt7ImJvcmRlci1yIjpGKCl9XSwiYm9yZGVyLXctYiI6W3siYm9yZGVyLWIiOkYoKX1dLCJib3JkZXItdy1sIjpbeyJib3JkZXItbCI6RigpfV0sImRpdmlkZS14IjpbeyJkaXZpZGUteCI6RigpfV0sImRpdmlkZS14LXJldmVyc2UiOltgZGl2aWRlLXgtcmV2ZXJzZWBdLCJkaXZpZGUteSI6W3siZGl2aWRlLXkiOkYoKX1dLCJkaXZpZGUteS1yZXZlcnNlIjpbYGRpdmlkZS15LXJldmVyc2VgXSwiYm9yZGVyLXN0eWxlIjpbe2JvcmRlcjpbLi4uc2UoKSxgaGlkZGVuYCxgbm9uZWBdfV0sImRpdmlkZS1zdHlsZSI6W3tkaXZpZGU6Wy4uLnNlKCksYGhpZGRlbmAsYG5vbmVgXX1dLCJib3JkZXItY29sb3IiOlt7Ym9yZGVyOk4oKX1dLCJib3JkZXItY29sb3IteCI6W3siYm9yZGVyLXgiOk4oKX1dLCJib3JkZXItY29sb3IteSI6W3siYm9yZGVyLXkiOk4oKX1dLCJib3JkZXItY29sb3ItcyI6W3siYm9yZGVyLXMiOk4oKX1dLCJib3JkZXItY29sb3ItZSI6W3siYm9yZGVyLWUiOk4oKX1dLCJib3JkZXItY29sb3ItYnMiOlt7ImJvcmRlci1icyI6TigpfV0sImJvcmRlci1jb2xvci1iZSI6W3siYm9yZGVyLWJlIjpOKCl9XSwiYm9yZGVyLWNvbG9yLXQiOlt7ImJvcmRlci10IjpOKCl9XSwiYm9yZGVyLWNvbG9yLXIiOlt7ImJvcmRlci1yIjpOKCl9XSwiYm9yZGVyLWNvbG9yLWIiOlt7ImJvcmRlci1iIjpOKCl9XSwiYm9yZGVyLWNvbG9yLWwiOlt7ImJvcmRlci1sIjpOKCl9XSwiZGl2aWRlLWNvbG9yIjpbe2RpdmlkZTpOKCl9XSwib3V0bGluZS1zdHlsZSI6W3tvdXRsaW5lOlsuLi5zZSgpLGBub25lYCxgaGlkZGVuYF19XSwib3V0bGluZS1vZmZzZXQiOlt7Im91dGxpbmUtb2Zmc2V0IjpbWiwkLFFdfV0sIm91dGxpbmUtdyI6W3tvdXRsaW5lOltgYCxaLElmLGtmXX1dLCJvdXRsaW5lLWNvbG9yIjpbe291dGxpbmU6TigpfV0sc2hhZG93Olt7c2hhZG93OltgYCxgbm9uZWAsdSxWZixGZl19XSwic2hhZG93LWNvbG9yIjpbe3NoYWRvdzpOKCl9XSwiaW5zZXQtc2hhZG93IjpbeyJpbnNldC1zaGFkb3ciOltgbm9uZWAsZCxWZixGZl19XSwiaW5zZXQtc2hhZG93LWNvbG9yIjpbeyJpbnNldC1zaGFkb3ciOk4oKX1dLCJyaW5nLXciOlt7cmluZzpGKCl9XSwicmluZy13LWluc2V0IjpbYHJpbmctaW5zZXRgXSwicmluZy1jb2xvciI6W3tyaW5nOk4oKX1dLCJyaW5nLW9mZnNldC13IjpbeyJyaW5nLW9mZnNldCI6W1osa2ZdfV0sInJpbmctb2Zmc2V0LWNvbG9yIjpbeyJyaW5nLW9mZnNldCI6TigpfV0sImluc2V0LXJpbmctdyI6W3siaW5zZXQtcmluZyI6RigpfV0sImluc2V0LXJpbmctY29sb3IiOlt7Imluc2V0LXJpbmciOk4oKX1dLCJ0ZXh0LXNoYWRvdyI6W3sidGV4dC1zaGFkb3ciOltgbm9uZWAsZixWZixGZl19XSwidGV4dC1zaGFkb3ctY29sb3IiOlt7InRleHQtc2hhZG93IjpOKCl9XSxvcGFjaXR5Olt7b3BhY2l0eTpbWiwkLFFdfV0sIm1peC1ibGVuZCI6W3sibWl4LWJsZW5kIjpbLi4uY2UoKSxgcGx1cy1kYXJrZXJgLGBwbHVzLWxpZ2h0ZXJgXX1dLCJiZy1ibGVuZCI6W3siYmctYmxlbmQiOmNlKCl9XSwibWFzay1jbGlwIjpbeyJtYXNrLWNsaXAiOltgYm9yZGVyYCxgcGFkZGluZ2AsYGNvbnRlbnRgLGBmaWxsYCxgc3Ryb2tlYCxgdmlld2BdfSxgbWFzay1uby1jbGlwYF0sIm1hc2stY29tcG9zaXRlIjpbe21hc2s6W2BhZGRgLGBzdWJ0cmFjdGAsYGludGVyc2VjdGAsYGV4Y2x1ZGVgXX1dLCJtYXNrLWltYWdlLWxpbmVhci1wb3MiOlt7Im1hc2stbGluZWFyIjpbWl19XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1wb3MiOlt7Im1hc2stbGluZWFyLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1wb3MiOlt7Im1hc2stbGluZWFyLXRvIjpJKCl9XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1jb2xvciI6W3sibWFzay1saW5lYXItZnJvbSI6TigpfV0sIm1hc2staW1hZ2UtbGluZWFyLXRvLWNvbG9yIjpbeyJtYXNrLWxpbmVhci10byI6TigpfV0sIm1hc2staW1hZ2UtdC1mcm9tLXBvcyI6W3sibWFzay10LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXQtdG8tcG9zIjpbeyJtYXNrLXQtdG8iOkkoKX1dLCJtYXNrLWltYWdlLXQtZnJvbS1jb2xvciI6W3sibWFzay10LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXQtdG8tY29sb3IiOlt7Im1hc2stdC10byI6TigpfV0sIm1hc2staW1hZ2Utci1mcm9tLXBvcyI6W3sibWFzay1yLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXItdG8tcG9zIjpbeyJtYXNrLXItdG8iOkkoKX1dLCJtYXNrLWltYWdlLXItZnJvbS1jb2xvciI6W3sibWFzay1yLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXItdG8tY29sb3IiOlt7Im1hc2stci10byI6TigpfV0sIm1hc2staW1hZ2UtYi1mcm9tLXBvcyI6W3sibWFzay1iLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWItdG8tcG9zIjpbeyJtYXNrLWItdG8iOkkoKX1dLCJtYXNrLWltYWdlLWItZnJvbS1jb2xvciI6W3sibWFzay1iLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWItdG8tY29sb3IiOlt7Im1hc2stYi10byI6TigpfV0sIm1hc2staW1hZ2UtbC1mcm9tLXBvcyI6W3sibWFzay1sLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWwtdG8tcG9zIjpbeyJtYXNrLWwtdG8iOkkoKX1dLCJtYXNrLWltYWdlLWwtZnJvbS1jb2xvciI6W3sibWFzay1sLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWwtdG8tY29sb3IiOlt7Im1hc2stbC10byI6TigpfV0sIm1hc2staW1hZ2UteC1mcm9tLXBvcyI6W3sibWFzay14LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXgtdG8tcG9zIjpbeyJtYXNrLXgtdG8iOkkoKX1dLCJtYXNrLWltYWdlLXgtZnJvbS1jb2xvciI6W3sibWFzay14LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXgtdG8tY29sb3IiOlt7Im1hc2steC10byI6TigpfV0sIm1hc2staW1hZ2UteS1mcm9tLXBvcyI6W3sibWFzay15LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXktdG8tcG9zIjpbeyJtYXNrLXktdG8iOkkoKX1dLCJtYXNrLWltYWdlLXktZnJvbS1jb2xvciI6W3sibWFzay15LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXktdG8tY29sb3IiOlt7Im1hc2steS10byI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsIjpbeyJtYXNrLXJhZGlhbCI6WyQsUV19XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1wb3MiOlt7Im1hc2stcmFkaWFsLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXJhZGlhbC10by1wb3MiOlt7Im1hc2stcmFkaWFsLXRvIjpJKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1jb2xvciI6W3sibWFzay1yYWRpYWwtZnJvbSI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXRvLWNvbG9yIjpbeyJtYXNrLXJhZGlhbC10byI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNoYXBlIjpbeyJtYXNrLXJhZGlhbCI6W2BjaXJjbGVgLGBlbGxpcHNlYF19XSwibWFzay1pbWFnZS1yYWRpYWwtc2l6ZSI6W3sibWFzay1yYWRpYWwiOlt7Y2xvc2VzdDpbYHNpZGVgLGBjb3JuZXJgXSxmYXJ0aGVzdDpbYHNpZGVgLGBjb3JuZXJgXX1dfV0sIm1hc2staW1hZ2UtcmFkaWFsLXBvcyI6W3sibWFzay1yYWRpYWwtYXQiOmIoKX1dLCJtYXNrLWltYWdlLWNvbmljLXBvcyI6W3sibWFzay1jb25pYyI6W1pdfV0sIm1hc2staW1hZ2UtY29uaWMtZnJvbS1wb3MiOlt7Im1hc2stY29uaWMtZnJvbSI6SSgpfV0sIm1hc2staW1hZ2UtY29uaWMtdG8tcG9zIjpbeyJtYXNrLWNvbmljLXRvIjpJKCl9XSwibWFzay1pbWFnZS1jb25pYy1mcm9tLWNvbG9yIjpbeyJtYXNrLWNvbmljLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWNvbmljLXRvLWNvbG9yIjpbeyJtYXNrLWNvbmljLXRvIjpOKCl9XSwibWFzay1tb2RlIjpbe21hc2s6W2BhbHBoYWAsYGx1bWluYW5jZWAsYG1hdGNoYF19XSwibWFzay1vcmlnaW4iOlt7Im1hc2stb3JpZ2luIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YCxgZmlsbGAsYHN0cm9rZWAsYHZpZXdgXX1dLCJtYXNrLXBvc2l0aW9uIjpbe21hc2s6cmUoKX1dLCJtYXNrLXJlcGVhdCI6W3ttYXNrOmllKCl9XSwibWFzay1zaXplIjpbe21hc2s6YWUoKX1dLCJtYXNrLXR5cGUiOlt7Im1hc2stdHlwZSI6W2BhbHBoYWAsYGx1bWluYW5jZWBdfV0sIm1hc2staW1hZ2UiOlt7bWFzazpbYG5vbmVgLCQsUV19XSxmaWx0ZXI6W3tmaWx0ZXI6W2BgLGBub25lYCwkLFFdfV0sYmx1cjpbe2JsdXI6bGUoKX1dLGJyaWdodG5lc3M6W3ticmlnaHRuZXNzOltaLCQsUV19XSxjb250cmFzdDpbe2NvbnRyYXN0OltaLCQsUV19XSwiZHJvcC1zaGFkb3ciOlt7ImRyb3Atc2hhZG93IjpbYGAsYG5vbmVgLHAsVmYsRmZdfV0sImRyb3Atc2hhZG93LWNvbG9yIjpbeyJkcm9wLXNoYWRvdyI6TigpfV0sZ3JheXNjYWxlOlt7Z3JheXNjYWxlOltgYCxaLCQsUV19XSwiaHVlLXJvdGF0ZSI6W3siaHVlLXJvdGF0ZSI6W1osJCxRXX1dLGludmVydDpbe2ludmVydDpbYGAsWiwkLFFdfV0sc2F0dXJhdGU6W3tzYXR1cmF0ZTpbWiwkLFFdfV0sc2VwaWE6W3tzZXBpYTpbYGAsWiwkLFFdfV0sImJhY2tkcm9wLWZpbHRlciI6W3siYmFja2Ryb3AtZmlsdGVyIjpbYGAsYG5vbmVgLCQsUV19XSwiYmFja2Ryb3AtYmx1ciI6W3siYmFja2Ryb3AtYmx1ciI6bGUoKX1dLCJiYWNrZHJvcC1icmlnaHRuZXNzIjpbeyJiYWNrZHJvcC1icmlnaHRuZXNzIjpbWiwkLFFdfV0sImJhY2tkcm9wLWNvbnRyYXN0IjpbeyJiYWNrZHJvcC1jb250cmFzdCI6W1osJCxRXX1dLCJiYWNrZHJvcC1ncmF5c2NhbGUiOlt7ImJhY2tkcm9wLWdyYXlzY2FsZSI6W2BgLFosJCxRXX1dLCJiYWNrZHJvcC1odWUtcm90YXRlIjpbeyJiYWNrZHJvcC1odWUtcm90YXRlIjpbWiwkLFFdfV0sImJhY2tkcm9wLWludmVydCI6W3siYmFja2Ryb3AtaW52ZXJ0IjpbYGAsWiwkLFFdfV0sImJhY2tkcm9wLW9wYWNpdHkiOlt7ImJhY2tkcm9wLW9wYWNpdHkiOltaLCQsUV19XSwiYmFja2Ryb3Atc2F0dXJhdGUiOlt7ImJhY2tkcm9wLXNhdHVyYXRlIjpbWiwkLFFdfV0sImJhY2tkcm9wLXNlcGlhIjpbeyJiYWNrZHJvcC1zZXBpYSI6W2BgLFosJCxRXX1dLCJib3JkZXItY29sbGFwc2UiOlt7Ym9yZGVyOltgY29sbGFwc2VgLGBzZXBhcmF0ZWBdfV0sImJvcmRlci1zcGFjaW5nIjpbeyJib3JkZXItc3BhY2luZyI6dygpfV0sImJvcmRlci1zcGFjaW5nLXgiOlt7ImJvcmRlci1zcGFjaW5nLXgiOncoKX1dLCJib3JkZXItc3BhY2luZy15IjpbeyJib3JkZXItc3BhY2luZy15Ijp3KCl9XSwidGFibGUtbGF5b3V0Ijpbe3RhYmxlOltgYXV0b2AsYGZpeGVkYF19XSxjYXB0aW9uOlt7Y2FwdGlvbjpbYHRvcGAsYGJvdHRvbWBdfV0sdHJhbnNpdGlvbjpbe3RyYW5zaXRpb246W2BgLGBhbGxgLGBjb2xvcnNgLGBvcGFjaXR5YCxgc2hhZG93YCxgdHJhbnNmb3JtYCxgbm9uZWAsJCxRXX1dLCJ0cmFuc2l0aW9uLWJlaGF2aW9yIjpbe3RyYW5zaXRpb246W2Bub3JtYWxgLGBkaXNjcmV0ZWBdfV0sZHVyYXRpb246W3tkdXJhdGlvbjpbWixgaW5pdGlhbGAsJCxRXX1dLGVhc2U6W3tlYXNlOltgbGluZWFyYCxgaW5pdGlhbGAsXywkLFFdfV0sZGVsYXk6W3tkZWxheTpbWiwkLFFdfV0sYW5pbWF0ZTpbe2FuaW1hdGU6W2Bub25lYCx2LCQsUV19XSxiYWNrZmFjZTpbe2JhY2tmYWNlOltgaGlkZGVuYCxgdmlzaWJsZWBdfV0scGVyc3BlY3RpdmU6W3twZXJzcGVjdGl2ZTpbaCwkLFFdfV0sInBlcnNwZWN0aXZlLW9yaWdpbiI6W3sicGVyc3BlY3RpdmUtb3JpZ2luIjp4KCl9XSxyb3RhdGU6W3tyb3RhdGU6TCgpfV0sInJvdGF0ZS14IjpbeyJyb3RhdGUteCI6TCgpfV0sInJvdGF0ZS15IjpbeyJyb3RhdGUteSI6TCgpfV0sInJvdGF0ZS16IjpbeyJyb3RhdGUteiI6TCgpfV0sc2NhbGU6W3tzY2FsZTp1ZSgpfV0sInNjYWxlLXgiOlt7InNjYWxlLXgiOnVlKCl9XSwic2NhbGUteSI6W3sic2NhbGUteSI6dWUoKX1dLCJzY2FsZS16IjpbeyJzY2FsZS16Ijp1ZSgpfV0sInNjYWxlLTNkIjpbYHNjYWxlLTNkYF0sc2tldzpbe3NrZXc6ZGUoKX1dLCJza2V3LXgiOlt7InNrZXcteCI6ZGUoKX1dLCJza2V3LXkiOlt7InNrZXcteSI6ZGUoKX1dLHRyYW5zZm9ybTpbe3RyYW5zZm9ybTpbJCxRLGBgLGBub25lYCxgZ3B1YCxgY3B1YF19XSwidHJhbnNmb3JtLW9yaWdpbiI6W3tvcmlnaW46eCgpfV0sInRyYW5zZm9ybS1zdHlsZSI6W3t0cmFuc2Zvcm06W2AzZGAsYGZsYXRgXX1dLHRyYW5zbGF0ZTpbe3RyYW5zbGF0ZTpmZSgpfV0sInRyYW5zbGF0ZS14IjpbeyJ0cmFuc2xhdGUteCI6ZmUoKX1dLCJ0cmFuc2xhdGUteSI6W3sidHJhbnNsYXRlLXkiOmZlKCl9XSwidHJhbnNsYXRlLXoiOlt7InRyYW5zbGF0ZS16IjpmZSgpfV0sInRyYW5zbGF0ZS1ub25lIjpbYHRyYW5zbGF0ZS1ub25lYF0sem9vbTpbe3pvb206W3ZmLCQsUV19XSxhY2NlbnQ6W3thY2NlbnQ6TigpfV0sYXBwZWFyYW5jZTpbe2FwcGVhcmFuY2U6W2Bub25lYCxgYXV0b2BdfV0sImNhcmV0LWNvbG9yIjpbe2NhcmV0Ok4oKX1dLCJjb2xvci1zY2hlbWUiOlt7c2NoZW1lOltgbm9ybWFsYCxgZGFya2AsYGxpZ2h0YCxgbGlnaHQtZGFya2AsYG9ubHktZGFya2AsYG9ubHktbGlnaHRgXX1dLGN1cnNvcjpbe2N1cnNvcjpbYGF1dG9gLGBkZWZhdWx0YCxgcG9pbnRlcmAsYHdhaXRgLGB0ZXh0YCxgbW92ZWAsYGhlbHBgLGBub3QtYWxsb3dlZGAsYG5vbmVgLGBjb250ZXh0LW1lbnVgLGBwcm9ncmVzc2AsYGNlbGxgLGBjcm9zc2hhaXJgLGB2ZXJ0aWNhbC10ZXh0YCxgYWxpYXNgLGBjb3B5YCxgbm8tZHJvcGAsYGdyYWJgLGBncmFiYmluZ2AsYGFsbC1zY3JvbGxgLGBjb2wtcmVzaXplYCxgcm93LXJlc2l6ZWAsYG4tcmVzaXplYCxgZS1yZXNpemVgLGBzLXJlc2l6ZWAsYHctcmVzaXplYCxgbmUtcmVzaXplYCxgbnctcmVzaXplYCxgc2UtcmVzaXplYCxgc3ctcmVzaXplYCxgZXctcmVzaXplYCxgbnMtcmVzaXplYCxgbmVzdy1yZXNpemVgLGBud3NlLXJlc2l6ZWAsYHpvb20taW5gLGB6b29tLW91dGAsJCxRXX1dLCJmaWVsZC1zaXppbmciOlt7ImZpZWxkLXNpemluZyI6W2BmaXhlZGAsYGNvbnRlbnRgXX1dLCJwb2ludGVyLWV2ZW50cyI6W3sicG9pbnRlci1ldmVudHMiOltgYXV0b2AsYG5vbmVgXX1dLHJlc2l6ZTpbe3Jlc2l6ZTpbYG5vbmVgLGBgLGB5YCxgeGBdfV0sInNjcm9sbC1iZWhhdmlvciI6W3tzY3JvbGw6W2BhdXRvYCxgc21vb3RoYF19XSwic2Nyb2xsYmFyLXRodW1iLWNvbG9yIjpbeyJzY3JvbGxiYXItdGh1bWIiOk4oKX1dLCJzY3JvbGxiYXItdHJhY2stY29sb3IiOlt7InNjcm9sbGJhci10cmFjayI6TigpfV0sInNjcm9sbGJhci1ndXR0ZXIiOlt7InNjcm9sbGJhci1ndXR0ZXIiOltgYXV0b2AsYHN0YWJsZWAsYGJvdGhgXX1dLCJzY3JvbGxiYXItdyI6W3tzY3JvbGxiYXI6W2BhdXRvYCxgdGhpbmAsYG5vbmVgXX1dLCJzY3JvbGwtbSI6W3sic2Nyb2xsLW0iOncoKX1dLCJzY3JvbGwtbXgiOlt7InNjcm9sbC1teCI6dygpfV0sInNjcm9sbC1teSI6W3sic2Nyb2xsLW15Ijp3KCl9XSwic2Nyb2xsLW1zIjpbeyJzY3JvbGwtbXMiOncoKX1dLCJzY3JvbGwtbWUiOlt7InNjcm9sbC1tZSI6dygpfV0sInNjcm9sbC1tYnMiOlt7InNjcm9sbC1tYnMiOncoKX1dLCJzY3JvbGwtbWJlIjpbeyJzY3JvbGwtbWJlIjp3KCl9XSwic2Nyb2xsLW10IjpbeyJzY3JvbGwtbXQiOncoKX1dLCJzY3JvbGwtbXIiOlt7InNjcm9sbC1tciI6dygpfV0sInNjcm9sbC1tYiI6W3sic2Nyb2xsLW1iIjp3KCl9XSwic2Nyb2xsLW1sIjpbeyJzY3JvbGwtbWwiOncoKX1dLCJzY3JvbGwtcCI6W3sic2Nyb2xsLXAiOncoKX1dLCJzY3JvbGwtcHgiOlt7InNjcm9sbC1weCI6dygpfV0sInNjcm9sbC1weSI6W3sic2Nyb2xsLXB5Ijp3KCl9XSwic2Nyb2xsLXBzIjpbeyJzY3JvbGwtcHMiOncoKX1dLCJzY3JvbGwtcGUiOlt7InNjcm9sbC1wZSI6dygpfV0sInNjcm9sbC1wYnMiOlt7InNjcm9sbC1wYnMiOncoKX1dLCJzY3JvbGwtcGJlIjpbeyJzY3JvbGwtcGJlIjp3KCl9XSwic2Nyb2xsLXB0IjpbeyJzY3JvbGwtcHQiOncoKX1dLCJzY3JvbGwtcHIiOlt7InNjcm9sbC1wciI6dygpfV0sInNjcm9sbC1wYiI6W3sic2Nyb2xsLXBiIjp3KCl9XSwic2Nyb2xsLXBsIjpbeyJzY3JvbGwtcGwiOncoKX1dLCJzbmFwLWFsaWduIjpbe3NuYXA6W2BzdGFydGAsYGVuZGAsYGNlbnRlcmAsYGFsaWduLW5vbmVgXX1dLCJzbmFwLXN0b3AiOlt7c25hcDpbYG5vcm1hbGAsYGFsd2F5c2BdfV0sInNuYXAtdHlwZSI6W3tzbmFwOltgbm9uZWAsYHhgLGB5YCxgYm90aGBdfV0sInNuYXAtc3RyaWN0bmVzcyI6W3tzbmFwOltgbWFuZGF0b3J5YCxgcHJveGltaXR5YF19XSx0b3VjaDpbe3RvdWNoOltgYXV0b2AsYG5vbmVgLGBtYW5pcHVsYXRpb25gXX1dLCJ0b3VjaC14IjpbeyJ0b3VjaC1wYW4iOltgeGAsYGxlZnRgLGByaWdodGBdfV0sInRvdWNoLXkiOlt7InRvdWNoLXBhbiI6W2B5YCxgdXBgLGBkb3duYF19XSwidG91Y2gtcHoiOltgdG91Y2gtcGluY2gtem9vbWBdLHNlbGVjdDpbe3NlbGVjdDpbYG5vbmVgLGB0ZXh0YCxgYWxsYCxgYXV0b2BdfV0sIndpbGwtY2hhbmdlIjpbeyJ3aWxsLWNoYW5nZSI6W2BhdXRvYCxgc2Nyb2xsYCxgY29udGVudHNgLGB0cmFuc2Zvcm1gLCQsUV19XSxmaWxsOlt7ZmlsbDpbYG5vbmVgLC4uLk4oKV19XSwic3Ryb2tlLXciOlt7c3Ryb2tlOltaLElmLGtmLEFmXX1dLHN0cm9rZTpbe3N0cm9rZTpbYG5vbmVgLC4uLk4oKV19XSwiZm9yY2VkLWNvbG9yLWFkanVzdCI6W3siZm9yY2VkLWNvbG9yLWFkanVzdCI6W2BhdXRvYCxgbm9uZWBdfV19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6eyJjb250YWluZXItbmFtZWQiOltgY29udGFpbmVyLXR5cGVgXSxvdmVyZmxvdzpbYG92ZXJmbG93LXhgLGBvdmVyZmxvdy15YF0sb3ZlcnNjcm9sbDpbYG92ZXJzY3JvbGwteGAsYG92ZXJzY3JvbGwteWBdLGluc2V0OltgaW5zZXQteGAsYGluc2V0LXlgLGBpbnNldC1ic2AsYGluc2V0LWJlYCxgc3RhcnRgLGBlbmRgLGB0b3BgLGByaWdodGAsYGJvdHRvbWAsYGxlZnRgXSwiaW5zZXQteCI6W2ByaWdodGAsYGxlZnRgXSwiaW5zZXQteSI6W2B0b3BgLGBib3R0b21gXSxmbGV4OltgYmFzaXNgLGBncm93YCxgc2hyaW5rYF0sZ2FwOltgZ2FwLXhgLGBnYXAteWBdLHA6W2BweGAsYHB5YCxgcHNgLGBwZWAsYHBic2AsYHBiZWAsYHB0YCxgcHJgLGBwYmAsYHBsYF0scHg6W2BwcmAsYHBsYF0scHk6W2BwdGAsYHBiYF0sbTpbYG14YCxgbXlgLGBtc2AsYG1lYCxgbWJzYCxgbWJlYCxgbXRgLGBtcmAsYG1iYCxgbWxgXSxteDpbYG1yYCxgbWxgXSxteTpbYG10YCxgbWJgXSxzaXplOltgd2AsYGhgXSwiZm9udC1zaXplIjpbYGxlYWRpbmdgXSwiZnZuLW5vcm1hbCI6W2Bmdm4tb3JkaW5hbGAsYGZ2bi1zbGFzaGVkLXplcm9gLGBmdm4tZmlndXJlYCxgZnZuLXNwYWNpbmdgLGBmdm4tZnJhY3Rpb25gXSwiZnZuLW9yZGluYWwiOltgZnZuLW5vcm1hbGBdLCJmdm4tc2xhc2hlZC16ZXJvIjpbYGZ2bi1ub3JtYWxgXSwiZnZuLWZpZ3VyZSI6W2Bmdm4tbm9ybWFsYF0sImZ2bi1zcGFjaW5nIjpbYGZ2bi1ub3JtYWxgXSwiZnZuLWZyYWN0aW9uIjpbYGZ2bi1ub3JtYWxgXSwibGluZS1jbGFtcCI6W2BkaXNwbGF5YCxgb3ZlcmZsb3dgXSxyb3VuZGVkOltgcm91bmRlZC1zYCxgcm91bmRlZC1lYCxgcm91bmRlZC10YCxgcm91bmRlZC1yYCxgcm91bmRlZC1iYCxgcm91bmRlZC1sYCxgcm91bmRlZC1zc2AsYHJvdW5kZWQtc2VgLGByb3VuZGVkLWVlYCxgcm91bmRlZC1lc2AsYHJvdW5kZWQtdGxgLGByb3VuZGVkLXRyYCxgcm91bmRlZC1icmAsYHJvdW5kZWQtYmxgXSwicm91bmRlZC1zIjpbYHJvdW5kZWQtc3NgLGByb3VuZGVkLWVzYF0sInJvdW5kZWQtZSI6W2Byb3VuZGVkLXNlYCxgcm91bmRlZC1lZWBdLCJyb3VuZGVkLXQiOltgcm91bmRlZC10bGAsYHJvdW5kZWQtdHJgXSwicm91bmRlZC1yIjpbYHJvdW5kZWQtdHJgLGByb3VuZGVkLWJyYF0sInJvdW5kZWQtYiI6W2Byb3VuZGVkLWJyYCxgcm91bmRlZC1ibGBdLCJyb3VuZGVkLWwiOltgcm91bmRlZC10bGAsYHJvdW5kZWQtYmxgXSwiYm9yZGVyLXNwYWNpbmciOltgYm9yZGVyLXNwYWNpbmcteGAsYGJvcmRlci1zcGFjaW5nLXlgXSwiYm9yZGVyLXciOltgYm9yZGVyLXcteGAsYGJvcmRlci13LXlgLGBib3JkZXItdy1zYCxgYm9yZGVyLXctZWAsYGJvcmRlci13LWJzYCxgYm9yZGVyLXctYmVgLGBib3JkZXItdy10YCxgYm9yZGVyLXctcmAsYGJvcmRlci13LWJgLGBib3JkZXItdy1sYF0sImJvcmRlci13LXgiOltgYm9yZGVyLXctcmAsYGJvcmRlci13LWxgXSwiYm9yZGVyLXcteSI6W2Bib3JkZXItdy10YCxgYm9yZGVyLXctYmBdLCJib3JkZXItY29sb3IiOltgYm9yZGVyLWNvbG9yLXhgLGBib3JkZXItY29sb3IteWAsYGJvcmRlci1jb2xvci1zYCxgYm9yZGVyLWNvbG9yLWVgLGBib3JkZXItY29sb3ItYnNgLGBib3JkZXItY29sb3ItYmVgLGBib3JkZXItY29sb3ItdGAsYGJvcmRlci1jb2xvci1yYCxgYm9yZGVyLWNvbG9yLWJgLGBib3JkZXItY29sb3ItbGBdLCJib3JkZXItY29sb3IteCI6W2Bib3JkZXItY29sb3ItcmAsYGJvcmRlci1jb2xvci1sYF0sImJvcmRlci1jb2xvci15IjpbYGJvcmRlci1jb2xvci10YCxgYm9yZGVyLWNvbG9yLWJgXSx0cmFuc2xhdGU6W2B0cmFuc2xhdGUteGAsYHRyYW5zbGF0ZS15YCxgdHJhbnNsYXRlLW5vbmVgXSwidHJhbnNsYXRlLW5vbmUiOltgdHJhbnNsYXRlYCxgdHJhbnNsYXRlLXhgLGB0cmFuc2xhdGUteWAsYHRyYW5zbGF0ZS16YF0sInNjcm9sbC1tIjpbYHNjcm9sbC1teGAsYHNjcm9sbC1teWAsYHNjcm9sbC1tc2AsYHNjcm9sbC1tZWAsYHNjcm9sbC1tYnNgLGBzY3JvbGwtbWJlYCxgc2Nyb2xsLW10YCxgc2Nyb2xsLW1yYCxgc2Nyb2xsLW1iYCxgc2Nyb2xsLW1sYF0sInNjcm9sbC1teCI6W2BzY3JvbGwtbXJgLGBzY3JvbGwtbWxgXSwic2Nyb2xsLW15IjpbYHNjcm9sbC1tdGAsYHNjcm9sbC1tYmBdLCJzY3JvbGwtcCI6W2BzY3JvbGwtcHhgLGBzY3JvbGwtcHlgLGBzY3JvbGwtcHNgLGBzY3JvbGwtcGVgLGBzY3JvbGwtcGJzYCxgc2Nyb2xsLXBiZWAsYHNjcm9sbC1wdGAsYHNjcm9sbC1wcmAsYHNjcm9sbC1wYmAsYHNjcm9sbC1wbGBdLCJzY3JvbGwtcHgiOltgc2Nyb2xsLXByYCxgc2Nyb2xsLXBsYF0sInNjcm9sbC1weSI6W2BzY3JvbGwtcHRgLGBzY3JvbGwtcGJgXSx0b3VjaDpbYHRvdWNoLXhgLGB0b3VjaC15YCxgdG91Y2gtcHpgXSwidG91Y2gteCI6W2B0b3VjaGBdLCJ0b3VjaC15IjpbYHRvdWNoYF0sInRvdWNoLXB6IjpbYHRvdWNoYF19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczp7ImZvbnQtc2l6ZSI6W2BsZWFkaW5nYF19LHBvc3RmaXhMb29rdXBDbGFzc0dyb3VwczpbYGNvbnRhaW5lci10eXBlYF0sb3JkZXJTZW5zaXRpdmVNb2RpZmllcnM6W2AqYCxgKipgLGBhZnRlcmAsYGJhY2tkcm9wYCxgYmVmb3JlYCxgZGV0YWlscy1jb250ZW50YCxgZmlsZWAsYGZpcnN0LWxldHRlcmAsYGZpcnN0LWxpbmVgLGBtYXJrZXJgLGBwbGFjZWhvbGRlcmAsYHNlbGVjdGlvbmBdfX0pO2Z1bmN0aW9uIGVwKC4uLmUpe3JldHVybiAkZihUZChlKSl9ZnVuY3Rpb24gdHAoZSx0KXtyZXR1cm4gd2UoKT8oVGUoZSx0KSwhMCk6ITF9ZnVuY3Rpb24gbnAoZSl7bGV0IHQ9ITEsbixyPUNlKCEwKTtyZXR1cm4oKC4uLmkpPT4odHx8PShuPXIucnVuKCgpPT5lKC4uLmkpKSwhMCksbikpfXZhciBycD10eXBlb2Ygd2luZG93PGB1YCYmdHlwZW9mIGRvY3VtZW50PGB1YDt0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8YHVgJiZnbG9iYWxUaGlzIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7dmFyIGlwPWU9PmUhPT12b2lkIDAsYXA9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxvcD1lPT5hcC5jYWxsKGUpPT09YFtvYmplY3QgT2JqZWN0XWAsc3A9Y3AoKTtmdW5jdGlvbiBjcCgpe3ZhciBlLHQ7cmV0dXJuIHJwJiYhISgoZT13aW5kb3cpIT1udWxsJiYoZT1lLm5hdmlnYXRvcikhPW51bGwmJmUudXNlckFnZW50KSYmKC9pUCg/OmFkfGhvbmV8b2QpLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KXx8KCh0PXdpbmRvdyk9PW51bGx8fCh0PXQubmF2aWdhdG9yKT09bnVsbD92b2lkIDA6dC5tYXhUb3VjaFBvaW50cyk+MiYmL2lQYWR8TWFjaW50b3NoLy50ZXN0KHdpbmRvdz8ubmF2aWdhdG9yLnVzZXJBZ2VudCkpfWZ1bmN0aW9uIGxwKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWZ1bmN0aW9uIHVwKGUpe3JldHVybiBlfHxZKCl9ZnVuY3Rpb24gZHAoZSl7aWYoIXJwKXJldHVybiBlO2xldCB0PTAsbixyLGk9KCk9PnstLXQsciYmdDw9MCYmKHIuc3RvcCgpLG49dm9pZCAwLHI9dm9pZCAwKX07cmV0dXJuKCguLi5hKT0+KHQrPTEscnx8KHI9Q2UoITApLG49ci5ydW4oKCk9PmUoLi4uYSkpKSx0cChpKSxuKSl9ZnVuY3Rpb24gZnAoZSl7cmV0dXJuIFJ0KEgoZSk/bmV3IFByb3h5KHt9LHtnZXQodCxuLHIpe3JldHVybiB0bihSZWZsZWN0LmdldChlLnZhbHVlLG4scikpfSxzZXQodCxuLHIpe3JldHVybiBIKGUudmFsdWVbbl0pJiYhSChyKT9lLnZhbHVlW25dLnZhbHVlPXI6ZS52YWx1ZVtuXT1yLCEwfSxkZWxldGVQcm9wZXJ0eSh0LG4pe3JldHVybiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KGUudmFsdWUsbil9LGhhcyh0LG4pe3JldHVybiBSZWZsZWN0LmhhcyhlLnZhbHVlLG4pfSxvd25LZXlzKCl7cmV0dXJuIE9iamVjdC5rZXlzKGUudmFsdWUpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKXtyZXR1cm57ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9fX0pOmUpfWZ1bmN0aW9uIHBwKGUpe3JldHVybiBmcChxcyhlKSl9ZnVuY3Rpb24gbXAoZSwuLi50KXtsZXQgbj10LmZsYXQoKSxyPW5bMF07cmV0dXJuIHBwKCgpPT5PYmplY3QuZnJvbUVudHJpZXModHlwZW9mIHI9PWBmdW5jdGlvbmA/T2JqZWN0LmVudHJpZXMoY24oZSkpLmZpbHRlcigoW2UsdF0pPT4hcihubih0KSxlKSk6T2JqZWN0LmVudHJpZXMoY24oZSkpLmZpbHRlcihlPT4hbi5pbmNsdWRlcyhlWzBdKSkpKX1mdW5jdGlvbiBocChlLHQ9MWU0KXtyZXR1cm4gc24oKG4scik9PntsZXQgaT1ubihlKSxhLG89KCk9PnNldFRpbWVvdXQoKCk9PntpPW5uKGUpLHIoKX0sbm4odCkpO3JldHVybiB0cCgoKT0+e2NsZWFyVGltZW91dChhKX0pLHtnZXQoKXtyZXR1cm4gbigpLGl9LHNldChlKXtpPWUscigpLGNsZWFyVGltZW91dChhKSxhPW8oKX19fSl9ZnVuY3Rpb24gZ3AoZSx0KXt1cCh0KSYmV2koZSx0KX1mdW5jdGlvbiBfcChlLHQsbil7cmV0dXJuIGhyKGUsdCx7Li4ubixpbW1lZGlhdGU6ITB9KX12YXIgdnA9cnA/d2luZG93OnZvaWQgMDtycCYmd2luZG93LmRvY3VtZW50LHJwJiZ3aW5kb3cubmF2aWdhdG9yLHJwJiZ3aW5kb3cubG9jYXRpb247ZnVuY3Rpb24geXAoZSl7bGV0IHQ9bm4oZSk7cmV0dXJuIHQ/LiRlbD8/dH1mdW5jdGlvbiBicCguLi5lKXtsZXQgdD0oZSx0LG4scik9PihlLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLHIpKSxuPXFzKCgpPT57bGV0IHQ9bHAobm4oZVswXSkpLmZpbHRlcihlPT5lIT1udWxsKTtyZXR1cm4gdC5ldmVyeShlPT50eXBlb2YgZSE9YHN0cmluZ2ApP3Q6dm9pZCAwfSk7cmV0dXJuIF9wKCgpPT5bbi52YWx1ZT8ubWFwKGU9PnlwKGUpKT8/W3ZwXS5maWx0ZXIoZT0+ZSE9bnVsbCksbHAobm4obi52YWx1ZT9lWzFdOmVbMF0pKSxscCh0bihuLnZhbHVlP2VbMl06ZVsxXSkpLG5uKG4udmFsdWU/ZVszXTplWzJdKV0sKFtlLG4scixpXSxhLG8pPT57aWYoIWU/Lmxlbmd0aHx8IW4/Lmxlbmd0aHx8IXI/Lmxlbmd0aClyZXR1cm47bGV0IHM9b3AoaSk/ey4uLml9OmksYz1lLmZsYXRNYXAoZT0+bi5mbGF0TWFwKG49PnIubWFwKHI9PnQoZSxuLHIscykpKSk7bygoKT0+e2MuZm9yRWFjaChlPT5lKCkpfSl9LHtmbHVzaDpgcG9zdGB9KX1mdW5jdGlvbiB4cCgpe2xldCBlPVp0KCExKSx0PVkoKTtyZXR1cm4gdCYmVmkoKCk9PntlLnZhbHVlPSEwfSx0KSxlfWZ1bmN0aW9uIFNwKGUpe2xldCB0PXhwKCk7cmV0dXJuIHFzKCgpPT4odC52YWx1ZSwhIWUoKSkpfWZ1bmN0aW9uIENwKGUpe3JldHVybiB0eXBlb2YgZT09YGZ1bmN0aW9uYD9lOnR5cGVvZiBlPT1gc3RyaW5nYD90PT50LmtleT09PWU6QXJyYXkuaXNBcnJheShlKT90PT5lLmluY2x1ZGVzKHQua2V5KTooKT0+ITB9ZnVuY3Rpb24gd3AoLi4uZSl7bGV0IHQsbixyPXt9O2UubGVuZ3RoPT09Mz8odD1lWzBdLG49ZVsxXSxyPWVbMl0pOmUubGVuZ3RoPT09Mj90eXBlb2YgZVsxXT09YG9iamVjdGA/KHQ9ITAsbj1lWzBdLHI9ZVsxXSk6KHQ9ZVswXSxuPWVbMV0pOih0PSEwLG49ZVswXSk7bGV0e3RhcmdldDppPXZwLGV2ZW50TmFtZTphPWBrZXlkb3duYCxwYXNzaXZlOm89ITEsZGVkdXBlOnM9ITF9PXIsYz1DcCh0KTtyZXR1cm4gYnAoaSxhLGU9PntlLnJlcGVhdCYmbm4ocyl8fGMoZSkmJm4oZSl9LG8pfWZ1bmN0aW9uIFRwKGUpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKX1mdW5jdGlvbiBFcChlLHQsbj17fSl7bGV0e3dpbmRvdzpyPXZwLC4uLml9PW4sYSxvPVNwKCgpPT5yJiZgUmVzaXplT2JzZXJ2ZXJgaW4gcikscz0oKT0+e2EmJj0oYS5kaXNjb25uZWN0KCksdm9pZCAwKX0sYz1ocihxcygoKT0+e2xldCB0PW5uKGUpO3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGU9PnlwKGUpKTpbeXAodCldfSksZT0+e2lmKHMoKSxvLnZhbHVlJiZyKXthPW5ldyBSZXNpemVPYnNlcnZlcih0KTtmb3IobGV0IHQgb2YgZSl0JiZhLm9ic2VydmUodCxpKX19LHtpbW1lZGlhdGU6ITAsZmx1c2g6YHBvc3RgfSksbD0oKT0+e3MoKSxjKCl9O3JldHVybiB0cChsKSx7aXNTdXBwb3J0ZWQ6byxzdG9wOmx9fWZ1bmN0aW9uIERwKGUsdCxuLHI9e30pe3ZhciBpLGE7bGV0e2Nsb25lOm89ITEscGFzc2l2ZTpzPSExLGV2ZW50TmFtZTpjLGRlZXA6bD0hMSxkZWZhdWx0VmFsdWU6dSxzaG91bGRFbWl0OmR9PXIsZj1ZKCkscD1ufHxmPy5lbWl0fHwoZj09bnVsbHx8KGk9Zi4kZW1pdCk9PW51bGw/dm9pZCAwOmkuYmluZChmKSl8fChmPT1udWxsfHwoYT1mLnByb3h5KT09bnVsbHx8KGE9YS4kZW1pdCk9PW51bGw/dm9pZCAwOmEuYmluZChmPy5wcm94eSkpLG09Yzt0fHw9YG1vZGVsVmFsdWVgLG18fD1gdXBkYXRlOiR7dC50b1N0cmluZygpfWA7bGV0IGg9ZT0+bz90eXBlb2Ygbz09YGZ1bmN0aW9uYD9vKGUpOlRwKGUpOmUsZz0oKT0+aXAoZVt0XSk/aChlW3RdKTp1LF89ZT0+e2Q/ZChlKSYmcChtLGUpOnAobSxlKX07aWYocyl7bGV0IG49WHQoZygpKSxyPSExO3JldHVybiBocigoKT0+ZVt0XSxlPT57cnx8KHI9ITAsbi52YWx1ZT1oKGUpLFZuKCgpPT5yPSExKSl9KSxocihuLG49PnshciYmKG4hPT1lW3RdfHxsKSYmXyhuKX0se2RlZXA6bH0pLG59cmV0dXJuIHFzKHtnZXQoKXtyZXR1cm4gZygpfSxzZXQoZSl7XyhlKX19KX1mdW5jdGlvbiBPcChlKXtyZXR1cm4gZT9lLmZsYXRNYXAoZT0+ZS50eXBlPT09Rz9PcChlLmNoaWxkcmVuKTpbZV0pOltdfXZhciBrcD1Kcih7bmFtZTpgUHJpbWl0aXZlU2xvdGAsaW5oZXJpdEF0dHJzOiExLHNldHVwKGUse2F0dHJzOnQsc2xvdHM6bn0pe3JldHVybigpPT57aWYoIW4uZGVmYXVsdClyZXR1cm4gbnVsbDtsZXQgZT1PcChuLmRlZmF1bHQoKSkscj1lLmZpbmRJbmRleChlPT5lLnR5cGUhPT1LKTtpZihyPT09LTEpcmV0dXJuIGU7bGV0IGk9ZVtyXTtkZWxldGUgaS5wcm9wcz8ucmVmO2xldCBhPWkucHJvcHM/Q3ModCxpLnByb3BzKTp0LG89Z3Moey4uLmkscHJvcHM6e319LGEpO3JldHVybiBlLmxlbmd0aD09PTE/bzooZVtyXT1vLGUpfX19KSxBcD1bYGFyZWFgLGBpbWdgLGBpbnB1dGBdLGpwPUpyKHtuYW1lOmBQcmltaXRpdmVgLGluaGVyaXRBdHRyczohMSxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGFzOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0OmBkaXZgfX0sc2V0dXAoZSx7YXR0cnM6dCxzbG90czpufSl7bGV0IHI9ZS5hc0NoaWxkP2B0ZW1wbGF0ZWA6ZS5hcztyZXR1cm4gdHlwZW9mIHI9PWBzdHJpbmdgJiZBcC5pbmNsdWRlcyhyKT8oKT0+SnMocix0KTpyPT09YHRlbXBsYXRlYD8oKT0+SnMoa3AsdCx7ZGVmYXVsdDpuLmRlZmF1bHR9KTooKT0+SnMoZS5hcyx0LHtkZWZhdWx0Om4uZGVmYXVsdH0pfX0pLE1wPUpyKHtfX25hbWU6YEJ1dHRvbmAscHJvcHM6e3ZhcmlhbnQ6e30sc2l6ZTp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOntkZWZhdWx0OmBidXR0b25gfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4obixyKT0+KHRzKCksc3ModG4oanApLHsiZGF0YS1zbG90IjpgYnV0dG9uYCwiZGF0YS12YXJpYW50IjplLnZhcmlhbnQsImRhdGEtc2l6ZSI6ZS5zaXplLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsY2xhc3M6TCh0bihlcCkodG4oTnApKHt2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZX0pLHQuY2xhc3MpKX0se2RlZmF1bHQ6aXIoKCk9PltvYShuLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgZGF0YS12YXJpYW50YCxgZGF0YS1zaXplYCxgYXNgLGBhcy1jaGlsZGAsYGNsYXNzYF0pKX19KSxOcD1PZChgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZS8yMCBkYXJrOmFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzQwIGFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUgZGFyazphcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlLzUwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1jbGlwLXBhZGRpbmcgdGV4dC1zbSBmb250LW1lZGl1bSBmb2N1cy12aXNpYmxlOnJpbmctMyBhcmlhLWludmFsaWQ6cmluZy0zIGFjdGl2ZTpub3QtYXJpYS1baGFzcG9wdXBdOnRyYW5zbGF0ZS15LXB4IFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTQgZ3JvdXAvYnV0dG9uIGlubGluZS1mbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3aGl0ZXNwYWNlLW5vd3JhcCB0cmFuc2l0aW9uLWFsbCBvdXRsaW5lLW5vbmUgc2VsZWN0LW5vbmUgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIFsmX3N2Z106cG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnNocmluay0wYCx7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6YGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgW2FdOmhvdmVyOmJnLXByaW1hcnkvODBgLG91dGxpbmU6YGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgZGFyazpiZy1pbnB1dC8zMCBkYXJrOmJvcmRlci1pbnB1dCBkYXJrOmhvdmVyOmJnLWlucHV0LzUwIGFyaWEtZXhwYW5kZWQ6YmctbXV0ZWQgYXJpYS1leHBhbmRlZDp0ZXh0LWZvcmVncm91bmRgLHNlY29uZGFyeTpgYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwIGFyaWEtZXhwYW5kZWQ6Ymctc2Vjb25kYXJ5IGFyaWEtZXhwYW5kZWQ6dGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZGAsZ2hvc3Q6YGhvdmVyOmJnLW11dGVkIGhvdmVyOnRleHQtZm9yZWdyb3VuZCBkYXJrOmhvdmVyOmJnLW11dGVkLzUwIGFyaWEtZXhwYW5kZWQ6YmctbXV0ZWQgYXJpYS1leHBhbmRlZDp0ZXh0LWZvcmVncm91bmRgLGRlc3RydWN0aXZlOmBiZy1kZXN0cnVjdGl2ZS8xMCBob3ZlcjpiZy1kZXN0cnVjdGl2ZS8yMCBmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvMjAgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvNDAgZGFyazpiZy1kZXN0cnVjdGl2ZS8yMCB0ZXh0LWRlc3RydWN0aXZlIGZvY3VzLXZpc2libGU6Ym9yZGVyLWRlc3RydWN0aXZlLzQwIGRhcms6aG92ZXI6YmctZGVzdHJ1Y3RpdmUvMzBgLGxpbms6YHRleHQtcHJpbWFyeSB1bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6dW5kZXJsaW5lYH0sc2l6ZTp7ZGVmYXVsdDpgaC04IGdhcC0xLjUgcHgtMi41IGhhcy1kYXRhLVtpY29uPWlubGluZS1lbmRdOnByLTIgaGFzLWRhdGEtW2ljb249aW5saW5lLXN0YXJ0XTpwbC0yYCx4czpgaC02IGdhcC0xIHJvdW5kZWQtW21pbih2YXIoLS1yYWRpdXMtbWQpLDEwcHgpXSBweC0yIHRleHQteHMgaW4tZGF0YS1bc2xvdD1idXR0b24tZ3JvdXBdOnJvdW5kZWQtbGcgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMS41IGhhcy1kYXRhLVtpY29uPWlubGluZS1zdGFydF06cGwtMS41IFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTNgLHNtOmBoLTcgZ2FwLTEgcm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTJweCldIHB4LTIuNSB0ZXh0LVswLjhyZW1dIGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWxnIGhhcy1kYXRhLVtpY29uPWlubGluZS1lbmRdOnByLTEuNSBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTEuNSBbJl9zdmc6bm90KFtjbGFzcyo9c2l6ZS1dKV06c2l6ZS0zLjVgLGxnOmBoLTkgZ2FwLTEuNSBweC0yLjUgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMiBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTJgLGljb246YHNpemUtOGAsImljb24teHMiOmBzaXplLTYgcm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTBweCldIGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWxnIFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTNgLCJpY29uLXNtIjpgc2l6ZS03IHJvdW5kZWQtW21pbih2YXIoLS1yYWRpdXMtbWQpLDEycHgpXSBpbi1kYXRhLVtzbG90PWJ1dHRvbi1ncm91cF06cm91bmRlZC1sZ2AsImljb24tbGciOmBzaXplLTlgfX0sZGVmYXVsdFZhcmlhbnRzOnt2YXJpYW50OmBkZWZhdWx0YCxzaXplOmBkZWZhdWx0YH19KSxQcD1bYGRhdGEtc2l6ZWBdLEZwPUpyKHtfX25hbWU6YENhcmRgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSxzaXplOntkZWZhdWx0OmBkZWZhdWx0YH19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKG4scik9Pih0cygpLG9zKGBkaXZgLHsiZGF0YS1zbG90IjpgY2FyZGAsImRhdGEtc2l6ZSI6ZS5zaXplLGNsYXNzOkwodG4oZXApKGByaW5nLWZvcmVncm91bmQvMTAgYmctY2FyZCB0ZXh0LWNhcmQtZm9yZWdyb3VuZCBnYXAtNCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bCBweS00IHRleHQtc20gcmluZy0xIGhhcy1kYXRhLVtzbG90PWNhcmQtZm9vdGVyXTpwYi0wIGhhcy1bPmltZzpmaXJzdC1jaGlsZF06cHQtMCBkYXRhLVtzaXplPXNtXTpnYXAtMyBkYXRhLVtzaXplPXNtXTpweS0zIGRhdGEtW3NpemU9c21dOmhhcy1kYXRhLVtzbG90PWNhcmQtZm9vdGVyXTpwYi0wICo6W2ltZzpmaXJzdC1jaGlsZF06cm91bmRlZC10LXhsICo6W2ltZzpsYXN0LWNoaWxkXTpyb3VuZGVkLWIteGwgZ3JvdXAvY2FyZCBmbGV4IGZsZXgtY29sYCx0LmNsYXNzKSl9LFtvYShuLiRzbG90cyxgZGVmYXVsdGApXSwxMCxQcCkpfX0pLElwPUpyKHtfX25hbWU6YENhcmRDb250ZW50YCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9Pih0cygpLG9zKGBkaXZgLHsiZGF0YS1zbG90IjpgY2FyZC1jb250ZW50YCxjbGFzczpMKHRuKGVwKShgcHgtNCBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOnB4LTNgLHQuY2xhc3MpKX0sW29hKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxMcD1Kcih7X19uYW1lOmBDYXJkSGVhZGVyYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9Pih0cygpLG9zKGBkaXZgLHsiZGF0YS1zbG90IjpgY2FyZC1oZWFkZXJgLGNsYXNzOkwodG4oZXApKGBnYXAtMSByb3VuZGVkLXQteGwgcHgtNCBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOnB4LTMgWy5ib3JkZXItYl06cGItNCBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOlsuYm9yZGVyLWJdOnBiLTMgZ3JvdXAvY2FyZC1oZWFkZXIgQGNvbnRhaW5lci9jYXJkLWhlYWRlciBncmlkIGF1dG8tcm93cy1taW4gaXRlbXMtc3RhcnQgaGFzLWRhdGEtW3Nsb3Q9Y2FyZC1hY3Rpb25dOmdyaWQtY29scy1bMWZyX2F1dG9dIGhhcy1kYXRhLVtzbG90PWNhcmQtZGVzY3JpcHRpb25dOmdyaWQtcm93cy1bYXV0b19hdXRvXWAsdC5jbGFzcykpfSxbb2EoZS4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pLFJwPUpyKHtfX25hbWU6YENhcmRUaXRsZWAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLG4pPT4odHMoKSxvcyhgZGl2YCx7ImRhdGEtc2xvdCI6YGNhcmQtdGl0bGVgLGNsYXNzOkwodG4oZXApKGB0ZXh0LWJhc2UgbGVhZGluZy1zbnVnIGZvbnQtbWVkaXVtIGdyb3VwLWRhdGEtW3NpemU9c21dL2NhcmQ6dGV4dC1zbSBmb250LWhlYWRpbmdgLHQuY2xhc3MpKX0sW29hKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSx6cD1gbGxtZ3dBZG1pbktleWA7ZnVuY3Rpb24gQnAoKXt0cnl7cmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oenApPz9gYH1jYXRjaHtyZXR1cm5gYH19ZnVuY3Rpb24gVnAoZSl7dHJ5e3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oenAsZSl9Y2F0Y2h7fX1mdW5jdGlvbiBIcCgpe3RyeXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHpwKX1jYXRjaHt9fXZhciBVcD1HdShgYXV0aGAse3N0YXRlOigpPT4oe2FwaUtleTpCcCgpLGVycm9yOmBgfSksZ2V0dGVyczp7aXNBdXRoZW50aWNhdGVkOmU9PmUuYXBpS2V5IT09YGB9LGFjdGlvbnM6e3N1Ym1pdChlKXtlJiYodGhpcy5hcGlLZXk9ZSx0aGlzLmVycm9yPWBgLFZwKGUpKX0scmVqZWN0KGUpe3RoaXMuYXBpS2V5PWBgLHRoaXMuZXJyb3I9ZSxIcCgpfX19KSxXcD1jbGFzcyBleHRlbmRzIEVycm9ye3N0YXR1cztjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUpLHRoaXMubmFtZT1gQWRtaW5BcGlFcnJvcmAsdGhpcy5zdGF0dXM9dH19O2FzeW5jIGZ1bmN0aW9uIEdwKGUsdCl7bGV0IG49YCR7dH06IEhUVFAgJHtlLnN0YXR1c31gO3RyeXtyZXR1cm4oYXdhaXQgZS5qc29uKCkpLmVycm9yPy5tZXNzYWdlfHxufWNhdGNoe3JldHVybiBufX1hc3luYyBmdW5jdGlvbiBLcChlKXtsZXQgdD1VcCgpLG49dC5hcGlLZXkscj1hd2FpdCBmZXRjaChlLHtjcmVkZW50aWFsczpgc2FtZS1vcmlnaW5gLGhlYWRlcnM6bj97IngtYXBpLWtleSI6bn06e319KTtpZighci5vayl7bGV0IGk9YXdhaXQgR3AocixlKTt0aHJvdyhyLnN0YXR1cz09PTQwMXx8ci5zdGF0dXM9PT00MDMpJiZ0LmFwaUtleT09PW4mJnQucmVqZWN0KGBpbnZhbGlkIGtleSwgb3Igbm90IGFuIGFkbWluYCksbmV3IFdwKGksci5zdGF0dXMpfXJldHVybiBhd2FpdCByLmpzb24oKX1mdW5jdGlvbiBxcChlKXtyZXR1cm4gZXx8KHR5cGVvZiBkb2N1bWVudD5gdWA/dm9pZCAwOmRvY3VtZW50KX1mdW5jdGlvbiBKcCh7aW50ZXJ2YWxNczplLHRpY2s6dCxkb2M6bn0pe2xldCByPXFwKG4pLGksYT0hMTtmdW5jdGlvbiBvKCl7aSE9PXZvaWQgMCYmKGNsZWFySW50ZXJ2YWwoaSksaT12b2lkIDApfWZ1bmN0aW9uIHMoKXtvKCksaT1zZXRJbnRlcnZhbCh0LGUpfWZ1bmN0aW9uIGMoKXtyJiYoci5oaWRkZW4/bygpOih0KCkscygpKSl9ZnVuY3Rpb24gbCgpe2F8fChhPSEwLHI/LmhpZGRlbnx8KHQoKSxzKCkpLHI/LmFkZEV2ZW50TGlzdGVuZXIoYHZpc2liaWxpdHljaGFuZ2VgLGMpKX1mdW5jdGlvbiB1KCl7YT0hMSxvKCkscj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgdmlzaWJpbGl0eWNoYW5nZWAsYyl9cmV0dXJue3N0YXJ0Omwsc3RvcDp1fX12YXIgWXA9e3N1Y2Nlc3M6M2UzLGluZm86M2UzLGVycm9yOjZlM30sWHA9R3UoYHRvYXN0c2Ase3N0YXRlOigpPT4oe3RvYXN0czpbXSxuZXh0SWQ6MSx0aW1lcnM6e319KSxhY3Rpb25zOntwdXNoKHtraW5kOmUsbWVzc2FnZTp0LHRpbWVvdXRNczpufSl7bGV0IHI9dGhpcy50b2FzdHNbdGhpcy50b2FzdHMubGVuZ3RoLTFdO2lmKHImJnIua2luZD09PWUmJnIubWVzc2FnZT09PXQpcmV0dXJuO2xldCBpPXRoaXMubmV4dElkKyssYT17aWQ6aSxraW5kOmUsbWVzc2FnZTp0LHRpbWVvdXRNczpuPz9ZcFtlXX07aWYodGhpcy50b2FzdHMucHVzaChhKSx0aGlzLnRvYXN0cy5sZW5ndGg+Myl7bGV0IGU9dGhpcy50b2FzdHMuc2hpZnQoKTtlJiZ0aGlzLmNsZWFyVGltZXIoZS5pZCl9dGhpcy50aW1lcnNbaV09c2V0VGltZW91dCgoKT0+dGhpcy5kaXNtaXNzKGkpLGEudGltZW91dE1zKX0sZGlzbWlzcyhlKXt0aGlzLmNsZWFyVGltZXIoZSksdGhpcy50b2FzdHM9dGhpcy50b2FzdHMuZmlsdGVyKHQ9PnQuaWQhPT1lKX0sY2xlYXJUaW1lcihlKXtsZXQgdD10aGlzLnRpbWVyc1tlXTt0IT09dm9pZCAwJiYoY2xlYXJUaW1lb3V0KHQpLGRlbGV0ZSB0aGlzLnRpbWVyc1tlXSl9fX0pLFpwPTVlMyxRcD1HdShgZGFzaGJvYXJkYCx7c3RhdGU6KCk9Pih7b3ZlcnZpZXc6bnVsbCx1c2FnZTpudWxsLHRhcmdldHM6bnVsbCxsYXN0VXBkYXRlZDpudWxsLGVycm9yOmBgLHBvbGxlcjp2b2lkIDAscmVmcmVzaGluZzohMSx0b2FzdGVkRm9yRmFpbHVyZTohMX0pLGFjdGlvbnM6e2FzeW5jIHJlZnJlc2goKXtpZihVcCgpLmlzQXV0aGVudGljYXRlZCYmIXRoaXMucmVmcmVzaGluZyl7dGhpcy5yZWZyZXNoaW5nPSEwO3RyeXthd2FpdCB0aGlzLmRvUmVmcmVzaCgpfWZpbmFsbHl7dGhpcy5yZWZyZXNoaW5nPSExfX19LGFzeW5jIGRvUmVmcmVzaCgpe2xldCBlPXRoaXMub3ZlcnZpZXchPT1udWxsfHx0aGlzLnVzYWdlIT09bnVsbHx8dGhpcy50YXJnZXRzIT09bnVsbCxbdCxuLHJdPWF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbS3AoYC9hZG1pbi9hcGkvb3ZlcnZpZXdgKSxLcChgL2FkbWluL2FwaS91c2FnZWApLEtwKGAvYWRtaW4vYXBpL3RhcmdldHNgKV0pO3Quc3RhdHVzPT09YGZ1bGZpbGxlZGAmJih0aGlzLm92ZXJ2aWV3PXQudmFsdWUpLG4uc3RhdHVzPT09YGZ1bGZpbGxlZGAmJih0aGlzLnVzYWdlPW4udmFsdWUpLHIuc3RhdHVzPT09YGZ1bGZpbGxlZGAmJih0aGlzLnRhcmdldHM9ci52YWx1ZSk7bGV0IGk9W107aWYodC5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZpLnB1c2goe2xhYmVsOmBvdmVydmlld2AscmVhc29uOnQucmVhc29ufSksbi5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZpLnB1c2goe2xhYmVsOmB1c2FnZWAscmVhc29uOm4ucmVhc29ufSksci5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZpLnB1c2goe2xhYmVsOmB0YXJnZXRzYCxyZWFzb246ci5yZWFzb259KSxpLmxlbmd0aD09PTApe3RoaXMubGFzdFVwZGF0ZWQ9bmV3IERhdGUsdGhpcy5lcnJvcj1gYCx0aGlzLnRvYXN0ZWRGb3JGYWlsdXJlPSExO3JldHVybn1pLnNvbWUoKHtyZWFzb246ZX0pPT5lIGluc3RhbmNlb2YgV3AmJihlLnN0YXR1cz09PTQwMXx8ZS5zdGF0dXM9PT00MDMpKXx8KGkubGVuZ3RoPDMmJih0aGlzLmxhc3RVcGRhdGVkPW5ldyBEYXRlKSx0aGlzLmVycm9yPWkubWFwKCh7bGFiZWw6ZSxyZWFzb246dH0pPT5gJHtlfTogJHt0IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOlN0cmluZyh0KX1gKS5qb2luKGA7IGApLGUmJiF0aGlzLnRvYXN0ZWRGb3JGYWlsdXJlJiZYcCgpLnB1c2goe2tpbmQ6YGVycm9yYCxtZXNzYWdlOmBEYXNoYm9hcmQgcmVmcmVzaCBmYWlsZWQ6ICR7dGhpcy5lcnJvcn1gfSksdGhpcy50b2FzdGVkRm9yRmFpbHVyZT0hMCl9LHN0YXJ0UG9sbGluZygpe3RoaXMucG9sbGVyfHwodGhpcy5wb2xsZXI9SnAoe2ludGVydmFsTXM6WnAsdGljazooKT0+dm9pZCB0aGlzLnJlZnJlc2goKX0pLHRoaXMucG9sbGVyLnN0YXJ0KCkpfX19KSwkcD1bYGhvbWVgLGBzcGVuZGAsYGNvbnN1bWVyc2AsYG1vZGVsc2AsYHJlbGlhYmlsaXR5YCxgY29uZmlnYCxgdGFyZ2V0c2BdLGVtPWBob21lYCx0bT1be2lkOmBob21lYCxsYWJlbDpgSG9tZWAsaWNvbjppZH0se2lkOmBzcGVuZGAsbGFiZWw6YFNwZW5kYCxpY29uOnhkfSx7aWQ6YGNvbnN1bWVyc2AsbGFiZWw6YENvbnN1bWVyc2AsaWNvbjokdX0se2lkOmBtb2RlbHNgLGxhYmVsOmBNb2RlbHNgLGljb246bGR9LHtpZDpgcmVsaWFiaWxpdHlgLGxhYmVsOmBSZWxpYWJpbGl0eWAsaWNvbjplZH0se2lkOmBjb25maWdgLGxhYmVsOmBDb25maWdgLGljb246YWR9LHtpZDpgdGFyZ2V0c2AsbGFiZWw6YE1DUCAmIEFnZW50c2AsaWNvbjpkZH1dO2Z1bmN0aW9uIG5tKGUpe3JldHVybiAkcC5pbmNsdWRlcyhlKX12YXIgcm09W2AyNGhgLGA0OGhgLGA3ZGAsYDE0ZGAsYDMwZGAsYDNtb2AsYDZtb2AsYDEybW9gXSxpbT17IjI0aCI6e3dpbmRvdzpgaG91cmAsc3BhbjoyNH0sIjQ4aCI6e3dpbmRvdzpgaG91cmAsc3Bhbjo0OH0sIjdkIjp7d2luZG93OmBkYXlgLHNwYW46N30sIjE0ZCI6e3dpbmRvdzpgZGF5YCxzcGFuOjE0fSwiMzBkIjp7d2luZG93OmBkYXlgLHNwYW46MzB9LCIzbW8iOnt3aW5kb3c6YG1vbnRoYCxzcGFuOjN9LCI2bW8iOnt3aW5kb3c6YG1vbnRoYCxzcGFuOjZ9LCIxMm1vIjp7d2luZG93OmBtb250aGAsc3BhbjoxMn19LGFtPXtob3VyOjQ4LGRheTozNSxtb250aDoxM30sb209W2Bub25lYCxgcHJldmBdLHNtPWBub25lYDtmdW5jdGlvbiBjbShlKXtsZXR7d2luZG93OnQsc3BhbjpufT1pbVtlXSxyPWFtW3RdO3JldHVybiAyKm4+cj97YXZhaWxhYmxlOiExLG9mZnNldDpuLHJlYXNvbjpgcmV0ZW50aW9uIGxpbWl0YH06e2F2YWlsYWJsZTohMCxvZmZzZXQ6bn19ZnVuY3Rpb24gbG0oZSx0KXtyZXR1cm4gZT09PWBtb250aGA/e3dpbmRvdzpgbW9udGhgLHNwYW46dH06ZT09PWBkYXlgP3t3aW5kb3c6YGRheWAsc3Bhbjp0fTp7d2luZG93OmBkYXlgLHNwYW46N319ZnVuY3Rpb24gdW0oZSx0KXtyZXR1cm4gZT09PWBob3VyYD9gU2hvd2luZyBsYXN0ICR7bG0oZSx0KS5zcGFufSBkYXlzIOKAlCBwZXItaG91ciBkYXRhIGlzIG5vdCBrZXB0IGZvciB0aGlzIHZpZXcuYDpudWxsfWZ1bmN0aW9uIGRtKGUpe3JldHVybiBybS5pbmNsdWRlcyhlKX1mdW5jdGlvbiBmbShlKXtyZXR1cm4gb20uaW5jbHVkZXMoZSl9ZnVuY3Rpb24gcG0oZSl7bGV0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IobGV0IG4gb2YgZS5zY29wZSl0LmFwcGVuZChgc2NvcGVgLG4pO3JldHVybiB0LnNldChgbWV0cmljYCxlLm1ldHJpYyksdC5zZXQoYHdpbmRvd2AsZS53aW5kb3cpLHQuc2V0KGBzcGFuYCxTdHJpbmcoZS5zcGFuKSksZS5vZmZzZXQmJnQuc2V0KGBvZmZzZXRgLFN0cmluZyhlLm9mZnNldCkpLGAvYWRtaW4vYXBpL3VzYWdlL3Nlcmllcz8ke3QudG9TdHJpbmcoKX1gfWZ1bmN0aW9uIG1tKGUpe2xldCB0PW5ldyBVUkxTZWFyY2hQYXJhbXM7cmV0dXJuIHQuc2V0KGBraW5kYCxlLmtpbmQpLGUud2luZG93JiZ0LnNldChgd2luZG93YCxlLndpbmRvdyksZS5zcGFuIT09dm9pZCAwJiZ0LnNldChgc3BhbmAsU3RyaW5nKGUuc3BhbikpLGUub2Zmc2V0JiZ0LnNldChgb2Zmc2V0YCxTdHJpbmcoZS5vZmZzZXQpKSxlLm1ldHJpY3MmJmUubWV0cmljcy5sZW5ndGg+MCYmdC5zZXQoYG1ldHJpY3NgLGUubWV0cmljcy5qb2luKGAsYCkpLGUubGltaXQhPT12b2lkIDAmJnQuc2V0KGBsaW1pdGAsU3RyaW5nKGUubGltaXQpKSxlLmdyb3VwJiZ0LnNldChgZ3JvdXBgLGUuZ3JvdXApLGUudXNlciYmdC5zZXQoYHVzZXJgLGUudXNlciksZS5tb2RlbCYmdC5zZXQoYG1vZGVsYCxlLm1vZGVsKSxlLnRhcmdldCYmdC5zZXQoYHRhcmdldGAsZS50YXJnZXQpLGAvYWRtaW4vYXBpL3VzYWdlL3RvdGFscz8ke3QudG9TdHJpbmcoKX1gfXZhciBobT1HdShgbmF2YCx7c3RhdGU6KCk9Pih7cGFnZTplbSxwYXJhbXM6e319KSxhY3Rpb25zOntnb1RvKGUsdD17fSl7dGhpcy5wYWdlPWUsdGhpcy5wYXJhbXM9dH19fSksZ209SnIoe19fbmFtZTpgU2tlbGV0b25gLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KHRzKCksb3MoYGRpdmAseyJkYXRhLXNsb3QiOmBza2VsZXRvbmAsY2xhc3M6TCh0bihlcCkoYGFuaW1hdGUtcHVsc2Ugcm91bmRlZC1tZCBiZy1tdXRlZCBtb3Rpb24tcmVkdWNlOmFuaW1hdGUtbm9uZWAsdC5jbGFzcykpfSxudWxsLDIpKX19KTtleHBvcnR7WnUgYXMgJCxLaSBhcyAkbixHdCBhcyAkcixabyBhcyAkdCx2cCBhcyBBLGxyIGFzIEFuLGhyIGFzIEFyLG91IGFzIEF0LHNwIGFzIEIsVGEgYXMgQm4sU2UgYXMgQnIsRmMgYXMgQnQsTHAgYXMgQyxuZSBhcyBDaSx2YSBhcyBDbixKYSBhcyBDcixsdSBhcyBDdCxqcCBhcyBELGhzIGFzIERuLEZyIGFzIERyLHB1IGFzIER0LE1wIGFzIEUscXIgYXMgRW4sWnIgYXMgRXIsc3UgYXMgRXQsRXAgYXMgRixZcyBhcyBGbixpciBhcyBGcix6bCBhcyBGdCxPZCBhcyBHLEJpIGFzIEduLEJlIGFzIEdyLEsgYXMgR3QsaHAgYXMgSCxDcyBhcyBIbixobiBhcyBIcixRbCBhcyBIdCxEcCBhcyBJLGNyIGFzIEluLGJhIGFzIElyLEtsIGFzIEl0LHZkIGFzIEosTmkgYXMgSm4sYm4gYXMgSnIsRyBhcyBKdCxnZCBhcyBLLFdpIGFzIEtuLENlIGFzIEtyLE9uIGFzIEt0LG5wIGFzIEwsWnMgYXMgTG4sYXIgYXMgTHIsVmwgYXMgTHQseXAgYXMgTSx3aSBhcyBNbixwciBhcyBNcix6YyBhcyBNdCxicCBhcyBOLENpIGFzIE5uLG1yIGFzIE5yLHlsIGFzIE50LGtwIGFzIE8sSnMgYXMgT24sUXMgYXMgT3IsZGMgYXMgT3QseHAgYXMgUCxTaSBhcyBQbixPYSBhcyBQcixibCBhcyBQdCxRdSBhcyBRLHFpIGFzIFFuLEggYXMgUXIsQXIgYXMgUXQsZHAgYXMgUixCcyBhcyBSbixYcyBhcyBScixIbCBhcyBSdCxScCBhcyBTLHZlIGFzIFNpLG1hIGFzIFNuLFlyIGFzIFNyLGN1IGFzIFN0LEZwIGFzIFQsWSBhcyBUbix4YSBhcyBUcixnbCBhcyBUdCxncCBhcyBVLFZuIGFzIFVuLGduIGFzIFVyLFZyIGFzIFV0LG1wIGFzIFYsRWEgYXMgVm4sRGUgYXMgVnIsZXUgYXMgVnQsZXAgYXMgVyxNaSBhcyBXbixzbiBhcyBXcixMciBhcyBXdCxyZCBhcyBYLFZpIGFzIFhuLFV0IGFzIFhyLFFvIGFzIFh0LGJkIGFzIFksWWkgYXMgWW4sS3QgYXMgWXIsQWkgYXMgWXQsdWQgYXMgWixKaSBhcyBabixXdCBhcyBacixCbyBhcyBadCxYcCBhcyBfLE8gYXMgX2ksSnIgYXMgX24sdXIgYXMgX3IsR3UgYXMgX3QsaW0gYXMgYSxCdCBhcyBhaSxwcyBhcyBhbix0ciBhcyBhcixYdSBhcyBhdCxLcCBhcyBiLHVlIGFzIGJpLHlhIGFzIGJuLHVzIGFzIGJyLEVsIGFzIGJ0LGxtIGFzIGMsVnQgYXMgY2ksb3MgYXMgY24saWEgYXMgY3IsZmQgYXMgY3QscG0gYXMgZCxWIGFzIGRpLERvIGFzIGRuLHRhIGFzIGRyLG9kIGFzIGR0LHF0IGFzIGVpLERuIGFzIGVuLEdpIGFzIGVyLGNkIGFzIGV0LG1tIGFzIGYsZG4gYXMgZmksYWEgYXMgZm4sZWEgYXMgZnIsQ2QgYXMgZnQsUXAgYXMgZyx0biBhcyBnaSxEaSBhcyBnbixLciBhcyBncixqdSBhcyBndCxubSBhcyBoLGVuIGFzIGhpLHEgYXMgaG4sbmMgYXMgaHIsc2QgYXMgaHQscm0gYXMgaSxSdCBhcyBpaSxxcyBhcyBpbixzciBhcyBpcixfZCBhcyBpdCx3cCBhcyBqLGJpIGFzIGpuLGZyIGFzIGpyLHhsIGFzIGp0LE9wIGFzIGssTW4gYXMga24sJHMgYXMga3IsZGwgYXMga3QsZm0gYXMgbCxadCBhcyBsaSxPbyBhcyBsbixvYSBhcyBscixKdSBhcyBsdCx0bSBhcyBtLG5uIGFzIG1pLF9zIGFzIG1uLGlzIGFzIG1yLG1kIGFzIG10LGhtIGFzIG4seG4gYXMgbmksQW4gYXMgbm4sdHMgYXMgbnIsU2QgYXMgbnQsY20gYXMgbyxYdCBhcyBvaSxzcyBhcyBvbixHbiBhcyBvcix5ZCBhcyBvdCxlbSBhcyBwLGNuIGFzIHBpLHZzIGFzIHBuLFVyIGFzIHByLFl1IGFzIHB0LGhkIGFzIHEsSGkgYXMgcW4sd2UgYXMgcXIsZWMgYXMgcXQsc20gYXMgcixhbiBhcyByaSxncyBhcyBybixuciBhcyBycix0ZCBhcyBydCx1bSBhcyBzLHp0IGFzIHNpLHlzIGFzIHNuLHpzIGFzIHNyLHBkIGFzIHN0LGdtIGFzIHQsVGUgYXMgdGksam4gYXMgdG4sVWkgYXMgdHIsbmQgYXMgdHQsZG0gYXMgdSxWZSBhcyB1aSxEYSBhcyB1bixRaSBhcyB1cixxdSBhcyB1dCxKcCBhcyB2LEEgYXMgdmksaGEgYXMgdm4scmMgYXMgdnIsS3UgYXMgdnQsSXAgYXMgdyx0YyBhcyB3bixkciBhcyB3cixobCBhcyB3dCxVcCBhcyB4LEYgYXMgeGksX2EgYXMgeG4sU2EgYXMgeHIsdmwgYXMgeHQsV3AgYXMgeSxMIGFzIHlpLGdhIGFzIHluLGNhIGFzIHlyLF9jIGFzIHl0LHJwIGFzIHosY3MgYXMgem4scnIgYXMgenIsUmwgYXMgenR9Ow==",
|
|
),
|
|
},
|
|
"SkeletonList-Cmqz3hfa.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0p0IGFzIGUsX24gYXMgdCxhbiBhcyBuLGNuIGFzIHIsY3IgYXMgaSxnaSBhcyBhLGhuIGFzIG8sbnIgYXMgcyx0IGFzIGN9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjt2YXIgbD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTEuNWB9LHU9e2NsYXNzOmBmbGV4IG1pbi13LTAgZmxleC0xIGl0ZW1zLWNlbnRlciBnYXAtMmB9LGQ9dCh7X19uYW1lOmBTa2VsZXRvbkxpc3RgLHByb3BzOntyb3dzOntkZWZhdWx0OjV9fSxzZXR1cCh0KXtyZXR1cm4oZCxmKT0+KHMoKSxyKGBvbGAsbCxbKHMoITApLHIoZSxudWxsLGkodC5yb3dzLGU9PihzKCkscihgbGlgLHtrZXk6ZSxjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zYH0sW24oYHNwYW5gLHUsW28oYShjKSx7Y2xhc3M6YGgtMyB3LTQgc2hyaW5rLTBgfSksbyhhKGMpLHtjbGFzczpgaC00IHctZnVsbCBtYXgtdy00MGB9KV0pLG8oYShjKSx7Y2xhc3M6YGgtNCB3LTEyIHNocmluay0wYH0pXSkpKSwxMjgpKV0pKX19KTtleHBvcnR7ZCBhcyB0fTs=",
|
|
),
|
|
},
|
|
"SpendPage-6ZX2q3Zv.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FyIGFzIGUsQyBhcyB0LEUgYXMgbixGciBhcyByLEp0IGFzIGksT24gYXMgYSxRIGFzIG8sUyBhcyBzLFNpIGFzIGMsVCBhcyBsLFhuIGFzIHUsX24gYXMgZCxfdCBhcyBmLGFuIGFzIHAsYiBhcyBtLGMgYXMgaCxjbiBhcyBnLGNyIGFzIF8sZCBhcyB2LGVyIGFzIHksZiBhcyBiLGcgYXMgeCxnaSBhcyBTLGhuIGFzIEMsaW4gYXMgdyxtbiBhcyBULG4gYXMgZWUsbnIgYXMgRSxvaSBhcyBELG9uIGFzIE8sc24gYXMgayx2IGFzIEEsdyBhcyBqLHggYXMgTSx5IGFzIE4seWkgYXMgUH1mcm9tIi4vU2tlbGV0b24tQjB6aUI2T2QuanMiO2ltcG9ydHtuIGFzIHRlLHIgYXMgbmUsdCBhcyByZX1mcm9tIi4vdGFicy1ZbGhuSHBLLS5qcyI7aW1wb3J0e18gYXMgRixhIGFzIGllLGMgYXMgSSxnIGFzIEwsaCBhcyBhZSxpIGFzIG9lLG0gYXMgc2UsbiBhcyBjZSxvIGFzIGxlLHIgYXMgdWUsdCBhcyBSfWZyb20iLi9pbmRleC1keXdTOE9wVC5qcyI7aW1wb3J0e3QgYXMgen1mcm9tIi4vRXJyb3JTdGF0ZS15bTZlU2xqMi5qcyI7aW1wb3J0e18gYXMgQixhIGFzIGRlLGQgYXMgZmUsaSBhcyBwZSxvIGFzIFYsciBhcyBtZSx0IGFzIEgsdiBhcyBVfWZyb20iLi9iYWRnZS1EVWlCVER5QS5qcyI7aW1wb3J0e28gYXMgVyx0IGFzIEd9ZnJvbSIuL0RhdGFUYWJsZS1DUXhSVkRTWS5qcyI7aW1wb3J0e3QgYXMgS31mcm9tIi4vQ29tcGFjdE51bWJlci1wcjhjSjRjdi5qcyI7aW1wb3J0e3QgYXMgcX1mcm9tIi4vVHJ5TG9uZ2VyUmFuZ2VCdXR0b24tQ2prVW5hT3ouanMiO2ltcG9ydHthIGFzIGhlLGkgYXMgZ2UsbiBhcyBfZSxvIGFzIEosciBhcyB2ZSxzIGFzIHllLHQgYXMgYmV9ZnJvbSIuL2J1cm5kb3duLUJ6NDR4Ny1kLmpzIjtpbXBvcnR7dCBhcyBZfWZyb20iLi9FbnRpdHlMaW5rLURnOTNLR1ZULmpzIjtpbXBvcnR7dCBhcyB4ZX1mcm9tIi4vQ2xhbXBlZFJhbmdlTm90aWNlLUQyd2FsblhmLmpzIjtpbXBvcnR7biBhcyBTZSx0IGFzIENlfWZyb20iLi9UaW1lU2VyaWVzQ2hhcnQtQkZjVDZ3b0EuanMiO2ltcG9ydHtvIGFzIHdlfWZyb20iLi9rcGktY2htM0JpdUYuanMiO2ltcG9ydHt0IGFzIFRlfWZyb20iLi9jYXRhbG9nLWxVNDFpcklxLmpzIjtpbXBvcnR7aSBhcyBFZSxyIGFzIERlLHQgYXMgT2V9ZnJvbSIuL3Nlcmllcy1OSVJWQlhNUC5qcyI7dmFyIGtlPVtgbW9kZWxgLGBwcm92aWRlcmAsYGdyb3VwYF07ZnVuY3Rpb24gQWUoZSl7cmV0dXJuIGtlLmluY2x1ZGVzKGUpfXZhciBqZT1bYGNvc3RgLGByZXFgLGB0b2tpbmAsYHRva291dGBdLFg9e2Nvc3Q6YENvc3RgLHJlcTpgUmVxdWVzdHNgLHRva2luOmBUb2tlbnMgaW5gLHRva291dDpgVG9rZW5zIG91dGB9O2Z1bmN0aW9uIE1lKGUpe3JldHVybiBqZS5pbmNsdWRlcyhlKX12YXIgTmU9MTAwLFo9MTAwLFBlPTZlNCxGZT1mKGBzcGVuZGAse3N0YXRlOigpPT4oe2J5OmBtb2RlbGAsbWV0cmljOmBjb3N0YCxkcmlsbDpgYCxidWNrZXRzOltdLGJyZWFrZG93bjpbXSxvdGhlclBvaW50czpudWxsLHRvdGFsUG9pbnRzOltdLGNvbXBhcmlzb25Qb2ludHM6bnVsbCxjb21wYXJpc29uVW5hdmFpbGFibGVSZWFzb246bnVsbCxtb2RlbFJhbmtpbmc6W10scHJpY2luZ0hlYWx0aFJhbmtpbmc6W10sYnVybmRvd25CdWNrZXRzOltdLGJ1cm5kb3duUG9pbnRzOltdLGJ1cm5kb3duQnVkZ2V0TWljcm9zOm51bGwsZHJpbGxkb3duUm93czpbXSxkcmlsbGRvd25NZXRyaWNzOltdLGRyaWxsZG93bkRpc2FibGVkOiExLGxvYWRpbmc6ITEsYnJlYWtkb3duRXJyb3I6YGAscmFua2luZ0Vycm9yOmBgLHByaWNpbmdIZWFsdGhFcnJvcjpgYCxkcmlsbGRvd25FcnJvcjpgYCxidXJuZG93bkVycm9yOmBgLHByaWNpbmdIZWFsdGhMb2FkaW5nOiExLGRyaWxsZG93bkxvYWRpbmc6ITEsYnVybmRvd25Mb2FkaW5nOiExLHByaWNpbmdIZWFsdGhMb2FkZWQ6ITEsZHJpbGxkb3duTG9hZGVkOiExLHByaWNpbmdIZWFsdGhXaW5kb3c6bnVsbCxwcmljaW5nSGVhbHRoU3BhbjpudWxsLGRyaWxsZG93bldpbmRvdzpudWxsLGRyaWxsZG93blNwYW46bnVsbCxkcmlsbGRvd25EcmlsbEZldGNoZWRGb3I6bnVsbCxicmVha2Rvd25CeUZldGNoZWRGb3I6bnVsbCxicmVha2Rvd25NZXRyaWNGZXRjaGVkRm9yOm51bGwsYnJlYWtkb3duV2luZG93Om51bGwsYnJlYWtkb3duU3BhbjpudWxsLGJyZWFrZG93blNjb3BlOm51bGwsYnJlYWtkb3duUmVxSWQ6MCxyYW5raW5nUmVxSWQ6MCxwcmljaW5nSGVhbHRoUmVxSWQ6MCxidXJuZG93blJlcUlkOjAsZHJpbGxkb3duUmVxSWQ6MCxyZWZyZXNoUmVxSWQ6MCxwb2xsZXI6dm9pZCAwfSksZ2V0dGVyczp7YnVybmRvd25BdmFpbGFibGU6KCk9PkxlKFIoKS5zY29wZSkhPT1udWxsfSxhY3Rpb25zOntzZXRTZWxlY3Rpb24oZSl7bGV0IHQ9ITE7ZS5ieSE9PXZvaWQgMCYmZS5ieSE9PXRoaXMuYnkmJih0aGlzLmJ5PWUuYnksdD0hMCksZS5tZXRyaWMhPT12b2lkIDAmJmUubWV0cmljIT09dGhpcy5tZXRyaWMmJih0aGlzLm1ldHJpYz1lLm1ldHJpYyx0PSEwKSxlLmRyaWxsIT09dm9pZCAwJiZlLmRyaWxsIT09dGhpcy5kcmlsbCYmKHRoaXMuZHJpbGw9ZS5kcmlsbCx0PSEwKSx0JiZ0aGlzLnJlZnJlc2goKX0sYXN5bmMgcmVmcmVzaCgpe2lmKCFNKCkuaXNBdXRoZW50aWNhdGVkKXJldHVybjtsZXQgZT0rK3RoaXMucmVmcmVzaFJlcUlkO3RoaXMubG9hZGluZz0hMDt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuZmV0Y2hNb2RlbFJhbmtpbmcoKS50aGVuKCgpPT50aGlzLmZldGNoQnJlYWtkb3duKCkpLHRoaXMuZmV0Y2hQcmljaW5nSGVhbHRoUmFua2luZygpLHRoaXMuZmV0Y2hCdXJuZG93bigpLHRoaXMuZmV0Y2hEcmlsbGRvd24oKV0pfWZpbmFsbHl7ZT09PXRoaXMucmVmcmVzaFJlcUlkJiYodGhpcy5sb2FkaW5nPSExKX19LGFzeW5jIGZldGNoTW9kZWxSYW5raW5nKCl7bGV0IGU9UigpLHQ9Kyt0aGlzLnJhbmtpbmdSZXFJZDt0cnl7bGV0IG49YXdhaXQgbShgL2FkbWluL2FwaS91c2FnZS9tb2RlbHM/bWV0cmljPSR7dGhpcy5tZXRyaWN9JndpbmRvdz0ke2Uud2luZG93fSZzcGFuPSR7ZS5zcGFufSZsaW1pdD0ke05lfSZkZXRhaWw9MWApO2lmKHQhPT10aGlzLnJhbmtpbmdSZXFJZClyZXR1cm47dGhpcy5tb2RlbFJhbmtpbmc9bi5tb2RlbHMsdGhpcy5yYW5raW5nRXJyb3I9YGB9Y2F0Y2goZSl7aWYodCE9PXRoaXMucmFua2luZ1JlcUlkfHxRKGUpKXJldHVybjt0aGlzLnJhbmtpbmdFcnJvcj0kKGUpfX0sYXN5bmMgZmV0Y2hQcmljaW5nSGVhbHRoUmFua2luZygpe2xldCBlPVIoKTsodGhpcy5wcmljaW5nSGVhbHRoV2luZG93IT09ZS53aW5kb3d8fHRoaXMucHJpY2luZ0hlYWx0aFNwYW4hPT1lLnNwYW4pJiYodGhpcy5wcmljaW5nSGVhbHRoTG9hZGVkPSExKSx0aGlzLnByaWNpbmdIZWFsdGhXaW5kb3c9ZS53aW5kb3csdGhpcy5wcmljaW5nSGVhbHRoU3Bhbj1lLnNwYW47bGV0IHQ9Kyt0aGlzLnByaWNpbmdIZWFsdGhSZXFJZDt0aGlzLnByaWNpbmdIZWFsdGhMb2FkaW5nPSEwO3RyeXtsZXQgbj1hd2FpdCBtKGAvYWRtaW4vYXBpL3VzYWdlL21vZGVscz9tZXRyaWM9cmVxJndpbmRvdz0ke2Uud2luZG93fSZzcGFuPSR7ZS5zcGFufSZsaW1pdD0ke05lfSZkZXRhaWw9MWApO2lmKHQhPT10aGlzLnByaWNpbmdIZWFsdGhSZXFJZClyZXR1cm47dGhpcy5wcmljaW5nSGVhbHRoUmFua2luZz1uLm1vZGVscyx0aGlzLnByaWNpbmdIZWFsdGhFcnJvcj1gYCx0aGlzLnByaWNpbmdIZWFsdGhMb2FkZWQ9ITB9Y2F0Y2goZSl7aWYodCE9PXRoaXMucHJpY2luZ0hlYWx0aFJlcUlkfHxRKGUpKXJldHVybjt0aGlzLnByaWNpbmdIZWFsdGhFcnJvcj0kKGUpfWZpbmFsbHl7dD09PXRoaXMucHJpY2luZ0hlYWx0aFJlcUlkJiYodGhpcy5wcmljaW5nSGVhbHRoTG9hZGluZz0hMSl9fSxhc3luYyBmZXRjaEJyZWFrZG93bigpe2xldCBlPVIoKTsodGhpcy5icmVha2Rvd25CeUZldGNoZWRGb3IhPT10aGlzLmJ5fHx0aGlzLmJyZWFrZG93bk1ldHJpY0ZldGNoZWRGb3IhPT10aGlzLm1ldHJpY3x8dGhpcy5icmVha2Rvd25XaW5kb3chPT1lLndpbmRvd3x8dGhpcy5icmVha2Rvd25TcGFuIT09ZS5zcGFufHx0aGlzLmJyZWFrZG93blNjb3BlIT09ZS5zY29wZSkmJih0aGlzLmJ1Y2tldHM9W10pLHRoaXMuYnJlYWtkb3duQnlGZXRjaGVkRm9yPXRoaXMuYnksdGhpcy5icmVha2Rvd25NZXRyaWNGZXRjaGVkRm9yPXRoaXMubWV0cmljLHRoaXMuYnJlYWtkb3duV2luZG93PWUud2luZG93LHRoaXMuYnJlYWtkb3duU3Bhbj1lLnNwYW4sdGhpcy5icmVha2Rvd25TY29wZT1lLnNjb3BlO2xldCB0PSsrdGhpcy5icmVha2Rvd25SZXFJZDt0cnl7aWYoZS5zY29wZT09PWBhbGxgP2F3YWl0IHRoaXMuZmV0Y2hCcmVha2Rvd25GbGVldFdpZGUoZS53aW5kb3csZS5zcGFuLHQpOmUuc2NvcGUuc3RhcnRzV2l0aChgZ3JvdXA6YCl8fGUuc2NvcGUuc3RhcnRzV2l0aChgdXNlcjpgKT9hd2FpdCB0aGlzLmZldGNoQnJlYWtkb3duU2luZ2xlU2NvcGUoZS5zY29wZSxlLndpbmRvdyxlLnNwYW4sdCk6YXdhaXQgdGhpcy5mZXRjaEJyZWFrZG93blByb3ZpZGVyU2NvcGUoZS5zY29wZS5zbGljZSg5KSxlLndpbmRvdyxlLnNwYW4sdCksdCE9PXRoaXMuYnJlYWtkb3duUmVxSWQpcmV0dXJuO3RoaXMuYnJlYWtkb3duRXJyb3I9YGAsZS5jbXBTcGVjLnJlcXVlc3RlZD9hd2FpdCB0aGlzLmZldGNoQ29tcGFyaXNvbihlLnNjb3BlLGUud2luZG93LGUuc3BhbixlLmNtcFNwZWMub2Zmc2V0LHQpOih0aGlzLmNvbXBhcmlzb25Qb2ludHM9bnVsbCx0aGlzLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbj1udWxsKX1jYXRjaChlKXtpZih0IT09dGhpcy5icmVha2Rvd25SZXFJZHx8UShlKSlyZXR1cm47dGhpcy5icmVha2Rvd25FcnJvcj0kKGUpfX0sYXN5bmMgZmV0Y2hCcmVha2Rvd25GbGVldFdpZGUoZSx0LG4pe2xldCByPWF3YWl0IHRoaXMuZmV0Y2hTZXJpZXMoW2B0b3RhbGBdLHRoaXMubWV0cmljLGUsdCwwKTtpZihuIT09dGhpcy5icmVha2Rvd25SZXFJZClyZXR1cm47dGhpcy5idWNrZXRzPXIuYnVja2V0cztsZXQgaT1yLnNlcmllcy5maW5kKGU9PmUuc2NvcGU9PT1gdG90YWxgKT8ucG9pbnRzPz9BcnJheShyLmJ1Y2tldHMubGVuZ3RoKS5maWxsKDApO2lmKHRoaXMudG90YWxQb2ludHM9aSx0aGlzLmJ5PT09YG1vZGVsYCl7bGV0IHI9dGhpcy5tb2RlbFJhbmtpbmcuc2xpY2UoMCwxMCkubWFwKGU9PmBtb2RlbDoke2UuaWR9YCk7aWYoci5sZW5ndGg9PT0wKXt0aGlzLmJyZWFrZG93bj1bXSx0aGlzLm90aGVyUG9pbnRzPU9lKGksW10pO3JldHVybn1sZXQgYT1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKHIsdGhpcy5tZXRyaWMsZSx0LDApO2lmKG4hPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjtsZXQgbz1EZShhLnNlcmllcywxMCk7dGhpcy5icmVha2Rvd249byx0aGlzLm90aGVyUG9pbnRzPU9lKGksbyk7cmV0dXJufWlmKHRoaXMuYnk9PT1gcHJvdmlkZXJgKXtsZXQgcj10aGlzLm1vZGVsUmFua2luZy5zbGljZSgwLFopLm1hcChlPT5gbW9kZWw6JHtlLmlkfWApO2lmKHIubGVuZ3RoPT09MCl7dGhpcy5icmVha2Rvd249W10sdGhpcy5vdGhlclBvaW50cz1udWxsO3JldHVybn1sZXQgaT1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKHIsdGhpcy5tZXRyaWMsZSx0LDApO2lmKG4hPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjt0aGlzLmJyZWFrZG93bj1FZShpLnNlcmllcyksdGhpcy5vdGhlclBvaW50cz1udWxsO3JldHVybn1sZXQgYT1hd2FpdCBtKGIoe2tpbmQ6YGdyb3VwYCx3aW5kb3c6ZSxzcGFuOnQsbWV0cmljczpbdGhpcy5tZXRyaWNdfSkpO2lmKG4hPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjtsZXQgbz1hLnJvd3Muc2xpY2UoMCxaKS5tYXAoZT0+YGdyb3VwOiR7ZS5pZH1gKTtpZihvLmxlbmd0aD09PTApe3RoaXMuYnJlYWtkb3duPVtdLHRoaXMub3RoZXJQb2ludHM9bnVsbDtyZXR1cm59bGV0IHM9YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhvLHRoaXMubWV0cmljLGUsdCwwKTtuPT09dGhpcy5icmVha2Rvd25SZXFJZCYmKHRoaXMuYnJlYWtkb3duPXMuc2VyaWVzLHRoaXMub3RoZXJQb2ludHM9bnVsbCl9LGFzeW5jIGZldGNoQnJlYWtkb3duU2luZ2xlU2NvcGUoZSx0LG4scil7bGV0IGk9YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhbZV0sdGhpcy5tZXRyaWMsdCxuLDApO2lmKHIhPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjt0aGlzLmJ1Y2tldHM9aS5idWNrZXRzO2xldCBhPWkuc2VyaWVzLmZpbmQodD0+dC5zY29wZT09PWUpPy5wb2ludHM/P0FycmF5KGkuYnVja2V0cy5sZW5ndGgpLmZpbGwoMCk7dGhpcy5icmVha2Rvd249W3tzY29wZTplLHBvaW50czphfV0sdGhpcy5vdGhlclBvaW50cz1udWxsLHRoaXMudG90YWxQb2ludHM9YX0sYXN5bmMgZmV0Y2hCcmVha2Rvd25Qcm92aWRlclNjb3BlKGUsdCxuLHIpe2xldCBpPXRoaXMubW9kZWxSYW5raW5nLmZpbHRlcih0PT50LmlkLnN0YXJ0c1dpdGgoYCR7ZX0vYCkpLnNsaWNlKDAsWikubWFwKGU9PmBtb2RlbDoke2UuaWR9YCk7aWYoaS5sZW5ndGg9PT0wKXt0aGlzLmJ1Y2tldHM9W10sdGhpcy5icmVha2Rvd249W10sdGhpcy5vdGhlclBvaW50cz1udWxsLHRoaXMudG90YWxQb2ludHM9W107cmV0dXJufWxldCBhPWF3YWl0IHRoaXMuZmV0Y2hTZXJpZXMoaSx0aGlzLm1ldHJpYyx0LG4sMCk7aWYociE9PXRoaXMuYnJlYWtkb3duUmVxSWQpcmV0dXJuO3RoaXMuYnVja2V0cz1hLmJ1Y2tldHM7bGV0W29dPUVlKGEuc2VyaWVzKSxzPW8/LnBvaW50cz8/QXJyYXkoYS5idWNrZXRzLmxlbmd0aCkuZmlsbCgwKTt0aGlzLmJyZWFrZG93bj1be3Njb3BlOmBwcm92aWRlcjoke2V9YCxwb2ludHM6c31dLHRoaXMub3RoZXJQb2ludHM9bnVsbCx0aGlzLnRvdGFsUG9pbnRzPXN9LGFzeW5jIGZldGNoQ29tcGFyaXNvbihlLHQsbixyLGkpe2xldCBhPWU9PT1gYWxsYD9gdG90YWxgOmUuc3RhcnRzV2l0aChgcHJvdmlkZXI6YCk/bnVsbDplO2lmKGE9PT1udWxsKXt0aGlzLmNvbXBhcmlzb25Qb2ludHM9bnVsbCx0aGlzLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbj1gQ29tcGFyaXNvbiBpcyBub3QgYXZhaWxhYmxlIGZvciBhIHNpbmdsZS1wcm92aWRlciBzY29wZS5gO3JldHVybn1sZXQgbz1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKFthXSx0aGlzLm1ldHJpYyx0LG4scik7aT09PXRoaXMuYnJlYWtkb3duUmVxSWQmJih0aGlzLmNvbXBhcmlzb25Qb2ludHM9by5zZXJpZXMuZmluZChlPT5lLnNjb3BlPT09YSk/LnBvaW50cz8/bnVsbCx0aGlzLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbj1udWxsKX0sYXN5bmMgZmV0Y2hTZXJpZXMoZSx0LG4scixpKXtyZXR1cm4gbSh2KHtzY29wZTplLG1ldHJpYzp0LHdpbmRvdzpuLHNwYW46cixvZmZzZXQ6aXx8dm9pZCAwfSkpfSxhc3luYyBmZXRjaEJ1cm5kb3duKCl7bGV0IGU9UigpLHQ9Kyt0aGlzLmJ1cm5kb3duUmVxSWQsbj1MZShlLnNjb3BlKTtpZihuPT09bnVsbCl7dGhpcy5idXJuZG93bkJ1Y2tldHM9W10sdGhpcy5idXJuZG93blBvaW50cz1bXSx0aGlzLmJ1cm5kb3duQnVkZ2V0TWljcm9zPW51bGwsdGhpcy5idXJuZG93bkVycm9yPWBgLHRoaXMuYnVybmRvd25Mb2FkaW5nPSExO3JldHVybn10aGlzLmJ1cm5kb3duTG9hZGluZz0hMDt0cnl7bGV0IGU9X2UobmV3IERhdGUpLHI9YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhbbl0sYGNvc3RgLGBkYXlgLGUsMCk7aWYodCE9PXRoaXMuYnVybmRvd25SZXFJZClyZXR1cm47dGhpcy5idXJuZG93bkJ1Y2tldHM9ci5idWNrZXRzLHRoaXMuYnVybmRvd25Qb2ludHM9ci5zZXJpZXMuZmluZChlPT5lLnNjb3BlPT09bik/LnBvaW50cz8/QXJyYXkoci5idWNrZXRzLmxlbmd0aCkuZmlsbCgwKSx0aGlzLmJ1cm5kb3duQnVkZ2V0TWljcm9zPVJlKG4pLHRoaXMuYnVybmRvd25FcnJvcj1gYH1jYXRjaChlKXtpZih0IT09dGhpcy5idXJuZG93blJlcUlkfHxRKGUpKXJldHVybjt0aGlzLmJ1cm5kb3duRXJyb3I9JChlKX1maW5hbGx5e3Q9PT10aGlzLmJ1cm5kb3duUmVxSWQmJih0aGlzLmJ1cm5kb3duTG9hZGluZz0hMSl9fSxhc3luYyBmZXRjaERyaWxsZG93bigpe2xldCBlPVIoKTsodGhpcy5kcmlsbGRvd25XaW5kb3chPT1lLndpbmRvd3x8dGhpcy5kcmlsbGRvd25TcGFuIT09ZS5zcGFufHx0aGlzLmRyaWxsZG93bkRyaWxsRmV0Y2hlZEZvciE9PXRoaXMuZHJpbGwpJiYodGhpcy5kcmlsbGRvd25Mb2FkZWQ9ITEpLHRoaXMuZHJpbGxkb3duV2luZG93PWUud2luZG93LHRoaXMuZHJpbGxkb3duU3Bhbj1lLnNwYW4sdGhpcy5kcmlsbGRvd25EcmlsbEZldGNoZWRGb3I9dGhpcy5kcmlsbDtsZXQgdD0rK3RoaXMuZHJpbGxkb3duUmVxSWQsbj1JZSh0aGlzLmRyaWxsKTt0aGlzLmRyaWxsZG93bkxvYWRpbmc9ITA7dHJ5e2xldCByPW4ua2luZD09PWB1c2VybW9kZWxgP3traW5kOmB1c2VybW9kZWxgLC4uLmgoZS53aW5kb3csZS5zcGFuKSx1c2VyOm4udXNlcn06bi5raW5kPT09YHVzZXJgP3traW5kOmB1c2VyYCx3aW5kb3c6ZS53aW5kb3csc3BhbjplLnNwYW4sZ3JvdXA6bi5ncm91cCxtZXRyaWNzOltgcmVxYCxgdG9raW5gLGB0b2tvdXRgLGBjb3N0YF19OntraW5kOmBncm91cGAsd2luZG93OmUud2luZG93LHNwYW46ZS5zcGFuLG1ldHJpY3M6W2ByZXFgLGB0b2tpbmAsYHRva291dGAsYGNvc3RgXX0saT1hd2FpdCBtKGIocikpO2lmKHQhPT10aGlzLmRyaWxsZG93blJlcUlkKXJldHVybjt0aGlzLmRyaWxsZG93blJvd3M9aS5yb3dzLHRoaXMuZHJpbGxkb3duTWV0cmljcz1pLm1ldHJpY3MsdGhpcy5kcmlsbGRvd25EaXNhYmxlZD0hMSx0aGlzLmRyaWxsZG93bkVycm9yPWBgLHRoaXMuZHJpbGxkb3duTG9hZGVkPSEwfWNhdGNoKGUpe2lmKHQhPT10aGlzLmRyaWxsZG93blJlcUlkfHxRKGUpKXJldHVybjtpZihlIGluc3RhbmNlb2YgTiYmZS5zdGF0dXM9PT00MDQpe3RoaXMuZHJpbGxkb3duUm93cz1bXSx0aGlzLmRyaWxsZG93bk1ldHJpY3M9W10sdGhpcy5kcmlsbGRvd25EaXNhYmxlZD0hMCx0aGlzLmRyaWxsZG93bkVycm9yPWBgLHRoaXMuZHJpbGxkb3duTG9hZGVkPSEwO3JldHVybn10aGlzLmRyaWxsZG93bkVycm9yPSQoZSl9ZmluYWxseXt0PT09dGhpcy5kcmlsbGRvd25SZXFJZCYmKHRoaXMuZHJpbGxkb3duTG9hZGluZz0hMSl9fSxzdGFydFBvbGxpbmcoKXt0aGlzLnBvbGxlcnx8KHRoaXMucG9sbGVyPUEoe2ludGVydmFsTXM6UGUsdGljazooKT0+dm9pZCB0aGlzLnJlZnJlc2goKX0pLHRoaXMucG9sbGVyLnN0YXJ0KCkpfSxzdG9wUG9sbGluZygpe3RoaXMucG9sbGVyPy5zdG9wKCksdGhpcy5wb2xsZXI9dm9pZCAwfX19KTtmdW5jdGlvbiBJZShlKXtyZXR1cm4gZT09PWBgP3traW5kOmBncm91cGB9OmUuc3RhcnRzV2l0aChgZ3JvdXA6YCk/e2tpbmQ6YHVzZXJgLGdyb3VwOmUuc2xpY2UoNil9OntraW5kOmB1c2VybW9kZWxgLHVzZXI6ZS5zbGljZSg1KX19ZnVuY3Rpb24gTGUoZSl7cmV0dXJuIGU9PT1gYWxsYD9gdG90YWxgOmUuc3RhcnRzV2l0aChgZ3JvdXA6YCl8fGUuc3RhcnRzV2l0aChgdXNlcjpgKT9lOm51bGx9ZnVuY3Rpb24gUmUoZSl7bGV0IHQ9eCgpO2lmKGU9PT1gdG90YWxgKXtsZXQgZT13ZSh0Lm92ZXJ2aWV3Py5ncm91cHM/P1tdKTtyZXR1cm4gZT4wP2U6bnVsbH1pZihlLnN0YXJ0c1dpdGgoYGdyb3VwOmApKXtsZXQgbj1lLnNsaWNlKDYpLHI9dC5vdmVydmlldz8uZ3JvdXBzLmZpbmQoZT0+ZS5uYW1lPT09bik/LmxpbWl0cz8uY29zdFBlck1vbnRoVVNEO3JldHVybiByJiZyPjA/TWF0aC5yb3VuZChyKjFlNik6bnVsbH1sZXQgbj1lLnNsaWNlKDUpLHI9dC51c2FnZT8udXNlcnMuZmluZChlPT5lLmlkPT09bik/LmxpbWl0cz8uY29zdFBlck1vbnRoVVNEO3JldHVybiByJiZyPjA/TWF0aC5yb3VuZChyKjFlNik6bnVsbH1mdW5jdGlvbiBRKGUpe3JldHVybiBlIGluc3RhbmNlb2YgTiYmKGUuc3RhdHVzPT09NDAxfHxlLnN0YXR1cz09PTQwMyl9ZnVuY3Rpb24gJChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTpTdHJpbmcoZSl9dmFyIHplPXsiYXJpYS1sYWJlbCI6YEJyZWFkY3J1bWJgLGNsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEJlPVtgZGlzYWJsZWRgXSxWZT17Y2xhc3M6YGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZGB9LEhlPXtjbGFzczpgZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kYH0sVWU9ZCh7X19uYW1lOmBBdHRyaWJ1dGlvbkRyaWxsZG93bmAscHJvcHM6e3Jvd3M6e30sbWV0cmljczp7fSxkcmlsbDp7fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFufSx1c2VyTW9kZWxTdGF0c0VuYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sd2luZG93Ont9LHNwYW46e30sbG9hZGluZzp7dHlwZTpCb29sZWFufSxsb2FkZWQ6e3R5cGU6Qm9vbGVhbn0sZXJyb3I6e30sb25SZXRyeTp7dHlwZTpGdW5jdGlvbn19LGVtaXRzOltgdXBkYXRlOmRyaWxsYF0sc2V0dXAoZSx7ZW1pdDp1fSl7bGV0IGQ9ZSxmPXUsbT1lZSgpLGg9dygoKT0+ZC5kcmlsbD09PWBgP3traW5kOmBncm91cGB9OmQuZHJpbGwuc3RhcnRzV2l0aChgZ3JvdXA6YCk/e2tpbmQ6YHVzZXJgLGdyb3VwOmQuZHJpbGwuc2xpY2UoNil9OntraW5kOmB1c2VybW9kZWxgLHVzZXI6ZC5kcmlsbC5zbGljZSg1KX0pLF89RChgYCk7ZnVuY3Rpb24gdigpe2YoYHVwZGF0ZTpkcmlsbGAsYGApfWZ1bmN0aW9uIHkoKXtfLnZhbHVlJiZmKGB1cGRhdGU6ZHJpbGxgLGBncm91cDoke18udmFsdWV9YCl9ZnVuY3Rpb24gYihlKXtsZXQgdD1oLnZhbHVlO3Qua2luZD09PWBncm91cGA/ZihgdXBkYXRlOmRyaWxsYCxgZ3JvdXA6JHtlfWApOnQua2luZD09PWB1c2VyYCYmZC51c2VyTW9kZWxTdGF0c0VuYWJsZWQmJihfLnZhbHVlPXQuZ3JvdXAsZihgdXBkYXRlOmRyaWxsYCxgdXNlcjoke2V9YCkpfWxldCB4PXcoKCk9PmgudmFsdWUua2luZD09PWBncm91cGA/YEdyb3VwYDpoLnZhbHVlLmtpbmQ9PT1gdXNlcmA/YFVzZXJgOmBNb2RlbGApO2Z1bmN0aW9uIEEoZSl7bGV0IHQ9aC52YWx1ZTtyZXR1cm4gdC5raW5kPT09YHVzZXJtb2RlbGA/YShZLHtsYWJlbDplLmlkLGtpbmQ6YG1vZGVsYCxpZDplLmlkfSk6dC5raW5kPT09YGdyb3VwYHx8ZC51c2VyTW9kZWxTdGF0c0VuYWJsZWQ/YShgYnV0dG9uYCx7dHlwZTpgYnV0dG9uYCxjbGFzczpgaW5saW5lLWZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xIHJvdW5kZWQtc20gaG92ZXI6dGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MGAsb25DbGljazooKT0+YihlLmlkKX0sW2UuaWQsYShGLHtpY29uOm8sY2xhc3M6YHNpemUtM2AsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9KV0pOmEoYHNwYW5gLHt9LGUuaWQpfWxldCBNPXcoKCk9Plt7aWQ6YGlkYCxoZWFkZXI6eC52YWx1ZSxhY2Nlc3NvckZuOmU9PmUuaWQsY2VsbDooe3JvdzplfSk9PkEoZS5vcmlnaW5hbCl9LC4uLmQubWV0cmljcy5tYXAoZT0+KHtpZDplLGhlYWRlcjpYW2VdPz9lLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46dD0+dC52YWx1ZXNbZV0/PzAsY2VsbDooe3Jvdzp0fSk9PntsZXQgbj10Lm9yaWdpbmFsLnZhbHVlc1tlXT8/MDtyZXR1cm4gZT09PWBjb3N0YD9WKG4pOmEoSyx7dmFsdWU6bn0pfX0pKV0pLE49dygoKT0+aC52YWx1ZS5raW5kPT09YHVzZXJgJiYoIWQudXNlck1vZGVsU3RhdHNFbmFibGVkfHxkLmRpc2FibGVkKSksUD13KCgpPT5CKHtsb2FkaW5nOmQubG9hZGluZyxoYXNEYXRhOmQubG9hZGVkLGVycm9yOmQuZXJyb3J9KSksdGU9dygoKT0+IU4udmFsdWUmJmQucm93cy5sZW5ndGg9PT0wKTtyZXR1cm4oYSx1KT0+KEUoKSxPKFMobCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bQyhTKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W0MoUyhzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi51WzFdfHw9W1QoYEF0dHJpYnV0aW9uYCwtMSldXSksXzoxfSksQyhTKEkpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLnVbMl18fD1bVChgRHJpbGwgZnJvbSBncm91cHMgaW50byB1c2VycyBpbnRvIHRoZSBtb2RlbHMgdGhleSB1c2VkLmAsLTEpXV0pLF86MX0pLHAoYG5hdmAsemUsW3AoYGJ1dHRvbmAse3R5cGU6YGJ1dHRvbmAsY2xhc3M6YGhvdmVyOnRleHQtZm9yZWdyb3VuZCBob3Zlcjp1bmRlcmxpbmVgLGRpc2FibGVkOmgudmFsdWUua2luZD09PWBncm91cGAsb25DbGljazp2fSxgIEFsbCBncm91cHMgYCw4LEJlKSxoLnZhbHVlLmtpbmQ9PT1gdXNlcmA/KEUoKSxnKGkse2tleTowfSxbQyhTKEYpLHtpY29uOlMobyksY2xhc3M6YHNpemUtM2AsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkscChgc3BhbmAsVmUsYyhoLnZhbHVlLmdyb3VwKSwxKV0sNjQpKTprKGBgLCEwKSxoLnZhbHVlLmtpbmQ9PT1gdXNlcm1vZGVsYD8oRSgpLGcoaSx7a2V5OjF9LFtDKFMoRikse2ljb246UyhvKSxjbGFzczpgc2l6ZS0zYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxfLnZhbHVlPyhFKCksZyhgYnV0dG9uYCx7a2V5OjAsdHlwZTpgYnV0dG9uYCxjbGFzczpgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGhvdmVyOnVuZGVybGluZWAsb25DbGljazp5fSxjKF8udmFsdWUpLDEpKTprKGBgLCEwKSxDKFMoRikse2ljb246UyhvKSxjbGFzczpgc2l6ZS0zYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxwKGBzcGFuYCxIZSxjKGgudmFsdWUudXNlciksMSldLDY0KSk6ayhgYCwhMCldKV0pLF86MX0pLEMoUyhqKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTNgfSx7ZGVmYXVsdDpyKCgpPT5baC52YWx1ZS5raW5kPT09YHVzZXJtb2RlbGA/KEUoKSxPKHhlLHtrZXk6MCx3aW5kb3c6ZS53aW5kb3csc3BhbjplLnNwYW59LG51bGwsOCxbYHdpbmRvd2AsYHNwYW5gXSkpOmsoYGAsITApLE4udmFsdWU/KEUoKSxPKFMoTCkse2tleToxLHZhcmlhbnQ6YHdhcm5gfSx7ZGVmYXVsdDpyKCgpPT5bQyhTKHNlKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi51WzNdfHw9W1QoYFBlci11c2VyLW1vZGVsIHN0YXRpc3RpY3MgYXJlIG9mZmAsLTEpXV0pLF86MX0pLEMoUyhhZSkse2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSx7ZGVmYXVsdDpyKCgpPT5bdVs1XXx8PXAoYHNwYW5gLG51bGwsW1QoYEVuYWJsZSBgKSxwKGBjb2RlYCx7Y2xhc3M6YGZvbnQtbW9ubyB0ZXh0LXhzYH0sYGFkbWluLnN0YXRzLnVzZXJNb2RlbGApLFQoYCBpbiB0aGUgbWlkZGxld2FyZSBjb25maWcgdG8gc2VlIHBlci1tb2RlbCBhdHRyaWJ1dGlvbiBmb3IgdGhpcyB1c2VyLmApXSwtMSksQyhTKG4pLHt0eXBlOmBidXR0b25gLHZhcmlhbnQ6YG91dGxpbmVgLHNpemU6YHNtYCxvbkNsaWNrOnVbMF18fD1lPT5TKG0pLmdvVG8oYGNvbmZpZ2ApfSx7ZGVmYXVsdDpyKCgpPT5bLi4udVs0XXx8PVtUKGBPcGVuIENvbmZpZ2AsLTEpXV0pLF86MX0pXSksXzoxfSldKSxfOjF9KSk6UC52YWx1ZT09PWBza2VsZXRvbmA/KEUoKSxPKFcse2tleToyLHJvd3M6NSxjb2xzOmUubWV0cmljcy5sZW5ndGgrMX0sbnVsbCw4LFtgY29sc2BdKSk6UC52YWx1ZT09PWBlcnJvcmA/KEUoKSxPKHose2tleTozLG1lc3NhZ2U6ZS5lcnJvciwib24tcmV0cnkiOmUub25SZXRyeX0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTp0ZS52YWx1ZT8oRSgpLE8oVSx7a2V5OjQsdGl0bGU6YE5vIHRyYWZmaWMgaW4gdGhpcyByYW5nZS5gfSx7ZGVmYXVsdDpyKCgpPT5bQyhxKV0pLF86MX0pKTooRSgpLE8oRyx7a2V5OjUsY29sdW1uczpNLnZhbHVlLGRhdGE6ZS5yb3dzLCJlbXB0eS1tZXNzYWdlIjpgbm9uZWB9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYF0pKV0pLF86MX0pXSksXzoxfSkpfX0pLFdlPXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtIHNtOmdyaWQtY29scy0zYH0sR2U9e2tleTowfSxLZT17Y2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXNgfSxxZT17a2V5OjF9LEplPXtrZXk6MCxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxZZT17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sWGU9ZCh7X19uYW1lOmBCdXJuRG93bkNoYXJ0YCxwcm9wczp7YnVja2V0czp7fSxwb2ludHM6e30sYnVkZ2V0TWljcm9zOnt9LG5vdzp7fSxsb2FkaW5nOnt0eXBlOkJvb2xlYW59LGVycm9yOnt9LG9uUmV0cnk6e3R5cGU6RnVuY3Rpb259fSxzZXR1cChlKXtsZXQgbj1lLGE9dygoKT0+Qih7bG9hZGluZzpuLmxvYWRpbmc/PyExLGhhc0RhdGE6bi5idWNrZXRzLmxlbmd0aD4wLGVycm9yOm4uZXJyb3I/P2BgfSkpLG89dygoKT0+bi5idWNrZXRzLm1hcChlPT5tZShlLGBkYXlgKSkpLHU9dygoKT0+YmUobi5wb2ludHMpKSxkPXcoKCk9PnUudmFsdWUuYXQoLTEpPz8wKSxmPXcoKCk9Plt7bGFiZWw6YFNwZW50IChNVEQpYCxkYXRhOnUudmFsdWUsY29sb3I6YC0tY2hhcnQtY29zdGB9XSksbT13KCgpPT5uLmJ1ZGdldE1pY3Jvcz09PW51bGw/W106W3tsYWJlbDpgQnVkZ2V0YCxkYXRhOkFycmF5KHUudmFsdWUubGVuZ3RoKS5maWxsKG4uYnVkZ2V0TWljcm9zKSxjb2xvcjpgLS1kZXN0cnVjdGl2ZWB9XSksaD13KCgpPT5uLmJ1ZGdldE1pY3Jvcz09PW51bGw/bnVsbDp2ZShkLnZhbHVlLG4uYnVkZ2V0TWljcm9zLG4ubm93KSksXz13KCgpPT5uLmJ1ZGdldE1pY3JvcyE9PW51bGwmJmQudmFsdWU+PW4uYnVkZ2V0TWljcm9zKTtyZXR1cm4obix1KT0+KEUoKSxPKFMobCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bQyhTKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W0MoUyhzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi51WzBdfHw9W1QoYEJ1cm4tZG93bmAsLTEpXV0pLF86MX0pLEMoUyhJKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi51WzFdfHw9W1QoYEN1bXVsYXRpdmUgc3BlbmQgdGhpcyBVVEMgY2FsZW5kYXIgbW9udGggYWdhaW5zdCB0aGUgY29uZmlndXJlZCBidWRnZXQuYCwtMSldXSksXzoxfSldKSxfOjF9KSxDKFMoaikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0se2RlZmF1bHQ6cigoKT0+W2EudmFsdWU9PT1gc2tlbGV0b25gPyhFKCksTyhTZSx7a2V5OjB9KSk6YS52YWx1ZT09PWBlcnJvcmA/KEUoKSxPKHose2tleToxLG1lc3NhZ2U6ZS5lcnJvcj8/YGAsIm9uLXJldHJ5IjplLm9uUmV0cnl9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKSk6KEUoKSxnKGkse2tleToyfSxbcChgZGl2YCxXZSxbcChgZGl2YCxudWxsLFt1WzJdfHw9cChgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgU3BlbnQgc28gZmFyYCwtMSkscChgcGAse2NsYXNzOlAoW2B0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYCxfLnZhbHVlP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDBdKX0sYyhTKFYpKGQudmFsdWUpKSwzKV0pLGUuYnVkZ2V0TWljcm9zPT09bnVsbD9rKGBgLCEwKTooRSgpLGcoYGRpdmAsR2UsW3VbM118fD1wKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBCdWRnZXRgLC0xKSxwKGBwYCxLZSxjKFMoVikoZS5idWRnZXRNaWNyb3MpKSwxKV0pKSxlLmJ1ZGdldE1pY3Jvcz09PW51bGw/ayhgYCwhMCk6KEUoKSxnKGBkaXZgLHFlLFt1WzRdfHw9cChgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUHJvamVjdGVkIHJ1bi1vdXRgLC0xKSxoLnZhbHVlPT09bnVsbD8oRSgpLGcoYHBgLEplLGBub3QgZW5vdWdoIGRhdGEgeWV0YCkpOihFKCksZyhgcGAse2tleToxLGNsYXNzOlAoW2B0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYCxfLnZhbHVlP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDBdKX0sYyhoLnZhbHVlLnRvTG9jYWxlRGF0ZVN0cmluZyh2b2lkIDAse21vbnRoOmBzaG9ydGAsZGF5OmBudW1lcmljYH0pKSwzKSldKSldKSxlLmJ1ZGdldE1pY3Jvcz09PW51bGw/KEUoKSxnKGBwYCxZZSxgTm8gYnVkZ2V0IGNvbmZpZ3VyZWQgZm9yIHRoaXMgc2NvcGUuYCkpOmsoYGAsITApLEMoQ2Use2xhYmVsczpvLnZhbHVlLGRhdGFzZXRzOmYudmFsdWUsImNvbXBhcmlzb24tZGF0YXNldHMiOm0udmFsdWUsInZhbHVlLWZvcm1hdHRlciI6UyhWKSxhcmlhTGFiZWw6YEN1bXVsYXRpdmUgc3BlbmQgdGhpcyBtb250aCBhZ2FpbnN0IHRoZSBjb25maWd1cmVkIGJ1ZGdldGB9LG51bGwsOCxbYGxhYmVsc2AsYGRhdGFzZXRzYCxgY29tcGFyaXNvbi1kYXRhc2V0c2AsYHZhbHVlLWZvcm1hdHRlcmBdKV0sNjQpKV0pLF86MX0pXSksXzoxfSkpfX0pO2Z1bmN0aW9uIFplKGUpe3JldHVybiBlLmZpbHRlcihlPT5lLmZyZWUpLm1hcChlPT4oe3Rva2Vuc0luOmUudG9rZW5zSW4/PzAsdG9rZW5zT3V0OmUudG9rZW5zT3V0Pz8wfSkpfWZ1bmN0aW9uIFFlKGUsdCxuKXtsZXQgcj0wO2ZvcihsZXQgaSBvZiBlKXIrPWkudG9rZW5zSW4qdCtpLnRva2Vuc091dCpuO3JldHVybiBNYXRoLnJvdW5kKHIpfXZhciAkZT1uZXcgU2V0KFtgZnJlZWAsYHVucHJpY2VkYF0pO2Z1bmN0aW9uIGV0KGUsdCl7bGV0IG49bnVsbDtmb3IobGV0IHIgb2YgZSl7aWYoci5yZXF1ZXN0cz09PXZvaWQgMCljb250aW51ZTtsZXQgZT10LmdldChyLmlkKTshZXx8JGUuaGFzKGUucHJpY2VTb3VyY2UpfHwobj09PW51bGx8fHIucmVxdWVzdHM+KG4ucmVxdWVzdHM/PzApKSYmKG49cil9cmV0dXJuIG4/LmlkPz9udWxsfXZhciB0dD17a2V5OjAsY2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxudD17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0scnQ9e2tleToxLGNsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zIHRleHQtY2hhcnQtcmVxdWVzdHNgfSxpdD17a2V5OjB9LGF0PXtrZXk6MCxjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtcyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxvdD17a2V5OjEsY2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXMgdGV4dC1jaGFydC1yZXF1ZXN0c2B9LHN0PXtrZXk6MixjbGFzczpgdGV4dC14cyB0ZXh0LXN0YXR1cy13YXJuYH0sY3Q9ZCh7X19uYW1lOmBDb3N0QXZvaWRlZENhcmRgLHByb3BzOnttb2RlbHM6e30sY2F0YWxvZzp7fSxyZWZNb2RlbDp7fSxjYWNoZVN0YXRzRW5hYmxlZDp7dHlwZTpCb29sZWFufSxjYWNoZVNhdmluZ3NBdmFpbGFibGU6e3R5cGU6Qm9vbGVhbn0sY2FjaGVTYXZpbmdzTm90ZTp7fX0sZW1pdHM6W2B1cGRhdGU6cmVmTW9kZWxgXSxzZXR1cChlLHtlbWl0Om59KXtsZXQgYT1lLG89bix1PXcoKCk9PntsZXQgZT1bXTtmb3IobGV0IHQgb2YgYS5tb2RlbHMpe2xldCBuPWEuY2F0YWxvZy5nZXQodC5pZCk7IW58fG4ucHJpY2VTb3VyY2U9PT1gZnJlZWB8fG4ucHJpY2VTb3VyY2U9PT1gdW5wcmljZWRgfHxlLnB1c2goe2lkOnQuaWQscmVxdWVzdHM6dC5yZXF1ZXN0cz8/MH0pfXJldHVybiBlLnNvcnQoKGUsdCk9PnQucmVxdWVzdHMtZS5yZXF1ZXN0cyl9KSxkPXcoKCk9PmV0KGEubW9kZWxzLGEuY2F0YWxvZykpLGY9dygoKT0+YS5yZWZNb2RlbHx8ZC52YWx1ZSksbT13KCgpPT5mLnZhbHVlP2EuY2F0YWxvZy5nZXQoZi52YWx1ZSk6dm9pZCAwKSxoPXcoKCk9PntsZXQgZT1tLnZhbHVlO3JldHVybiFlfHxlLmlucHV0UGVyTVRva1VzZD09PXZvaWQgMHx8ZS5vdXRwdXRQZXJNVG9rVXNkPT09dm9pZCAwP251bGw6UWUoWmUoYS5tb2RlbHMpLGUuaW5wdXRQZXJNVG9rVXNkLGUub3V0cHV0UGVyTVRva1VzZCl9KSx2PXcoKCk9PntsZXQgZT0wO2ZvcihsZXQgdCBvZiBhLm1vZGVscyllKz10LmNhY2hlU2F2ZWRNaWNyb1VzZD8/MDtyZXR1cm4gZX0pO2Z1bmN0aW9uIHkoZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZvKGB1cGRhdGU6cmVmTW9kZWxgLGUpfXJldHVybihuLGEpPT4oRSgpLE8oUyhsKSxudWxsLHtkZWZhdWx0OnIoKCk9PltDKFModCkse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00IHNtOmZsZXgtcm93IHNtOml0ZW1zLXN0YXJ0IHNtOmp1c3RpZnktYmV0d2VlbmB9LHtkZWZhdWx0OnIoKCk9PltwKGBkaXZgLG51bGwsW0MoUyhzKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzBdfHw9W1QoYENvc3QgYXZvaWRlZGAsLTEpXV0pLF86MX0pLEMoUyhJKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzFdfHw9W1QoYFdoYXQgZnJlZS10aWVyIHRyYWZmaWMgaW4gcmFuZ2Ugd291bGQgaGF2ZSBjb3N0IGF0IGEgcmVhbCBtb2RlbCdzIG93biByYXRlcy5gLC0xKV1dKSxfOjF9KV0pLHUudmFsdWUubGVuZ3RoPjA/KEUoKSxnKGBkaXZgLHR0LFthWzJdfHw9cChgbGFiZWxgLHtpZDpgY29zdC1hdm9pZGVkLXJlZi1sYWJlbGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFJlZmVyZW5jZSBtb2RlbGAsLTEpLEMoUyhsZSkseyJtb2RlbC12YWx1ZSI6Zi52YWx1ZT8/dm9pZCAwLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp5fSx7ZGVmYXVsdDpyKCgpPT5bQyhTKHVlKSx7ImFyaWEtbGFiZWxsZWRieSI6YGNvc3QtYXZvaWRlZC1yZWYtbGFiZWxgLGNsYXNzOmB3LTU2YH0se2RlZmF1bHQ6cigoKT0+W0MoUyhjZSkse3BsYWNlaG9sZGVyOmBQaWNrIGEgcmVmZXJlbmNlIG1vZGVsYH0pXSksXzoxfSksQyhTKGllKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsoRSghMCksZyhpLG51bGwsXyh1LnZhbHVlLGU9PihFKCksTyhTKG9lKSx7a2V5OmUuaWQsdmFsdWU6ZS5pZH0se2RlZmF1bHQ6cigoKT0+W1QoYyhlLmlkKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSkpOmsoYGAsITApXSksXzoxfSksQyhTKGopLHtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtYH0se2RlZmF1bHQ6cigoKT0+W3AoYGRpdmAsbnVsbCxbYVszXXx8PXAoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYENvc3QgYXZvaWRlZCAoZnJlZS10aWVyIHRyYWZmaWMpYCwtMSksaC52YWx1ZT09PW51bGw/KEUoKSxnKGBwYCxudCxjKHUudmFsdWUubGVuZ3RoPT09MD9gTm8gcHJpY2VkIG1vZGVsIHNlcnZlZCBpbiByYW5nZSB0byBjb21wYXJlIGFnYWluc3QuYDpgUGljayBhIHJlZmVyZW5jZSBtb2RlbCBhYm92ZS5gKSwxKSk6KEUoKSxnKGBwYCxydCxjKFMoVikoaC52YWx1ZSkpLDEpKV0pLGUuY2FjaGVTdGF0c0VuYWJsZWQ/KEUoKSxnKGBkaXZgLGl0LFthWzRdfHw9cChgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQ2FjaGUgc2F2aW5nc2AsLTEpLGUuY2FjaGVTYXZpbmdzQXZhaWxhYmxlPyhFKCksZyhgcGAsb3QsYyhTKFYpKHYudmFsdWUpKSwxKSk6KEUoKSxnKGBwYCxhdCxgbi9hYCkpLGUuY2FjaGVTYXZpbmdzTm90ZT8oRSgpLGcoYHBgLHN0LGMoZS5jYWNoZVNhdmluZ3NOb3RlKSwxKSk6ayhgYCwhMCldKSk6ayhgYCwhMCldKSxfOjF9KV0pLF86MX0pKX19KTtmdW5jdGlvbiBsdChlLHQpe2xldCBuPVtdO2ZvcihsZXQgciBvZiBlKXtsZXQgZT10LmdldChyLmlkKTtlJiZuLnB1c2goe2lkOnIuaWQscHJpY2VTb3VyY2U6ZS5wcmljZVNvdXJjZSxkaXNwbGF5RnJlZTplLmRpc3BsYXlGcmVlPz8hMSxyZXF1ZXN0czpyLnJlcXVlc3RzPz8wLHRva2Vuc0luOnIudG9rZW5zSW4/PzAsdG9rZW5zT3V0OnIudG9rZW5zT3V0Pz8wLGNvc3RNaWNyb1VzZDpyLmNvc3RNaWNyb1VzZD8/MCxjb250ZXh0VG9rZW5zOmUuY29udGV4dFRva2VucyxpbnB1dFBlck1Ub2tVc2Q6ZS5pbnB1dFBlck1Ub2tVc2Qsb3V0cHV0UGVyTVRva1VzZDplLm91dHB1dFBlck1Ub2tVc2QsYWxpYXNlczplLmFsaWFzZXN9KX1yZXR1cm4gbn12YXIgdXQ9e3VucHJpY2VkOjAsb3ZlcnJpZGU6MSxidWlsdGluOjIsbGl0ZWxsbTozLGZyZWU6NH07ZnVuY3Rpb24gZHQoZSl7cmV0dXJuWy4uLmVdLnNvcnQoKGUsdCk9PntsZXQgbj11dFtlLnByaWNlU291cmNlXS11dFt0LnByaWNlU291cmNlXTtyZXR1cm4gbj09PTA/dC5yZXF1ZXN0cy1lLnJlcXVlc3RzOm59KX12YXIgZnQ9e2NsYXNzOmBmbGV4IGp1c3RpZnktZW5kYH0scHQ9ZCh7X19uYW1lOmBQcmljaW5nSGVhbHRoVGFibGVgLHByb3BzOnttb2RlbHM6e30sY2F0YWxvZzp7fSxsb2FkaW5nOnt0eXBlOkJvb2xlYW59LGxvYWRlZDp7dHlwZTpCb29sZWFufSxlcnJvcjp7fSxvblJldHJ5Ont0eXBlOkZ1bmN0aW9ufX0sc2V0dXAoZSl7bGV0IG49ZSxvPXcoKCk9PmR0KGx0KG4ubW9kZWxzLG4uY2F0YWxvZykpKSx1PXcoKCk9PkIoe2xvYWRpbmc6bi5sb2FkaW5nLGhhc0RhdGE6bi5sb2FkZWQsZXJyb3I6bi5lcnJvcn0pKSxkPXcoKCk9Pm8udmFsdWUuZmlsdGVyKGU9PmUucHJpY2VTb3VyY2U9PT1gdW5wcmljZWRgKS5sZW5ndGgpLGY9e3VucHJpY2VkOmBkZXN0cnVjdGl2ZWAsZnJlZTpgc2Vjb25kYXJ5YCxvdmVycmlkZTpgb3V0bGluZWAsYnVpbHRpbjpgb3V0bGluZWAsbGl0ZWxsbTpgb3V0bGluZWB9O2Z1bmN0aW9uIG0oZSl7cmV0dXJuIGEoSCx7YXM6YHNwYW5gLHZhcmlhbnQ6ZltlLnByaWNlU291cmNlXSxjbGFzczpgZm9udC1ub3JtYWxgfSwoKT0+ZS5wcmljZVNvdXJjZSl9ZnVuY3Rpb24gaChlKXtyZXR1cm4gZS5pbnB1dFBlck1Ub2tVc2Q9PT12b2lkIDB8fGUub3V0cHV0UGVyTVRva1VzZD09PXZvaWQgMD9hKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGDigJRgKTphKGBzcGFuYCx7fSxmZShlLmlucHV0UGVyTVRva1VzZCxlLm91dHB1dFBlck1Ub2tVc2QpKX1sZXQgXz1be2lkOmBpZGAsaGVhZGVyOmBNb2RlbGAsYWNjZXNzb3JGbjplPT5lLmlkLGNlbGw6KHtyb3c6ZX0pPT5hKFkse2xhYmVsOmUub3JpZ2luYWwuaWQsa2luZDpgbW9kZWxgLGlkOmUub3JpZ2luYWwuaWR9KX0se2lkOmBzb3VyY2VgLGhlYWRlcjpgU291cmNlYCxhY2Nlc3NvckZuOmU9PmUucHJpY2VTb3VyY2UsY2VsbDooe3JvdzplfSk9Pm0oZS5vcmlnaW5hbCl9LHtpZDpgcHJpY2VgLGhlYWRlcjpgUHJpY2VgLGVuYWJsZVNvcnRpbmc6ITEsY2VsbDooe3JvdzplfSk9PmgoZS5vcmlnaW5hbCl9LHtpZDpgY29udGV4dGAsaGVhZGVyOmBDb250ZXh0YCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUuY29udGV4dFRva2Vucz8/MCxjZWxsOih7cm93OmV9KT0+YShgc3BhbmAse2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxlLm9yaWdpbmFsLmNvbnRleHRUb2tlbnM9PT12b2lkIDA/YOKAlGA6ZGUoZS5vcmlnaW5hbC5jb250ZXh0VG9rZW5zKSl9LHtpZDpgcmVxdWVzdHNgLGhlYWRlcjpgUmVxdWVzdHNgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS5yZXF1ZXN0cyxjZWxsOih7cm93OmV9KT0+YShLLHt2YWx1ZTplLm9yaWdpbmFsLnJlcXVlc3RzfSl9LHtpZDpgdG9rZW5zSW5gLGhlYWRlcjpgVG9rZW5zIGluYCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUudG9rZW5zSW4sY2VsbDooe3JvdzplfSk9PmEoSyx7dmFsdWU6ZS5vcmlnaW5hbC50b2tlbnNJbn0pfSx7aWQ6YHRva2Vuc091dGAsaGVhZGVyOmBUb2tlbnMgb3V0YCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUudG9rZW5zT3V0LGNlbGw6KHtyb3c6ZX0pPT5hKEsse3ZhbHVlOmUub3JpZ2luYWwudG9rZW5zT3V0fSl9LHtpZDpgY29zdGAsaGVhZGVyOmBDb3N0YCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUuY29zdE1pY3JvVXNkLGNlbGw6KHtyb3c6ZX0pPT5WKGUub3JpZ2luYWwuY29zdE1pY3JvVXNkKX1dO2Z1bmN0aW9uIHYoKXtyZXR1cm4gZ2UoW2BpZGAsYHByaWNlU291cmNlYCxgZGlzcGxheUZyZWVgLGByZXF1ZXN0c2AsYHRva2Vuc0luYCxgdG9rZW5zT3V0YCxgY29zdE1pY3JvVXNkYCxgY29udGV4dFRva2Vuc2AsYGlucHV0UGVyTVRva1VzZGAsYG91dHB1dFBlck1Ub2tVc2RgXSxvLnZhbHVlLm1hcChlPT5bZS5pZCxlLnByaWNlU291cmNlLGUuZGlzcGxheUZyZWUsZS5yZXF1ZXN0cyxlLnRva2Vuc0luLGUudG9rZW5zT3V0LGUuY29zdE1pY3JvVXNkLGUuY29udGV4dFRva2Vucz8/YGAsZS5pbnB1dFBlck1Ub2tVc2Q/P2BgLGUub3V0cHV0UGVyTVRva1VzZD8/YGBdKSl9cmV0dXJuKG4sYSk9PihFKCksTyhTKGwpLG51bGwse2RlZmF1bHQ6cigoKT0+W0MoUyh0KSxudWxsLHtkZWZhdWx0OnIoKCk9PltDKFMocykse2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMmB9LHtkZWZhdWx0OnIoKCk9PlthWzBdfHw9VChgIFByaWNpbmcgaGVhbHRoIGAsLTEpLGQudmFsdWU+MD8oRSgpLE8oUyhIKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgLGNsYXNzOmBmb250LW5vcm1hbGB9LHtkZWZhdWx0OnIoKCk9PltUKGMoZC52YWx1ZSkrYCB1bnByaWNlZGAsMSldKSxfOjF9KSk6ayhgYCwhMCldKSxfOjF9KSxDKFMoSSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxXXx8PVtUKGBFdmVyeSBtb2RlbCBzZXJ2ZWQgaW4gcmFuZ2UsIGpvaW5lZCB3aXRoIGl0cyBiaWxsaW5nIHByaWNlIHNvdXJjZS5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLEMoUyhqKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTNgfSx7ZGVmYXVsdDpyKCgpPT5bdS52YWx1ZT09PWBza2VsZXRvbmA/KEUoKSxPKFcse2tleTowLHJvd3M6NSxjb2xzOl8ubGVuZ3RofSxudWxsLDgsW2Bjb2xzYF0pKTp1LnZhbHVlPT09YGVycm9yYD8oRSgpLE8oeix7a2V5OjEsbWVzc2FnZTplLmVycm9yLCJvbi1yZXRyeSI6ZS5vblJldHJ5fSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOm8udmFsdWUubGVuZ3RoPT09MD8oRSgpLE8oVSx7a2V5OjIsdGl0bGU6YE5vIHRyYWZmaWMgaW4gdGhpcyByYW5nZS5gfSx7ZGVmYXVsdDpyKCgpPT5bQyhxKV0pLF86MX0pKTooRSgpLGcoaSx7a2V5OjN9LFtDKEcse2NvbHVtbnM6XyxkYXRhOm8udmFsdWUsImVtcHR5LW1lc3NhZ2UiOmBub25lYH0sbnVsbCw4LFtgZGF0YWBdKSxwKGBkaXZgLGZ0LFtDKEose2ZpbGVuYW1lOmBwcmljaW5nLWhlYWx0aC5jc3ZgLGJ1aWxkOnZ9KV0pXSw2NCkpXSksXzoxfSldKSxfOjF9KSl9fSk7ZnVuY3Rpb24gbXQoZSl7cmV0dXJuIGU9PT1gaG91cmA/e2F2YWlsYWJsZTohMSxub3RlOmBDYWNoZSBzYXZpbmdzIGFyZSBub3QgdHJhY2tlZCBwZXIgaG91ciDigJQgcGljayBhIGRheSBvciBtb250aCByYW5nZSBpbnN0ZWFkLmB9OmU9PT1gbW9udGhgP3thdmFpbGFibGU6ITAsbm90ZTpgQ292ZXJzIG9ubHkgdGhlIG1vc3QgcmVjZW50IDM1IGRheXMgKGRheS1idWNrZXQgcmV0ZW50aW9uKSwgbm90IHRoZSBmdWxsIHNlbGVjdGVkIHJhbmdlLmB9OnthdmFpbGFibGU6ITAsbm90ZTpudWxsfX12YXIgaHQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sZ3Q9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00IHNtOmZsZXgtcm93IHNtOml0ZW1zLWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW5gfSxfdD17Y2xhc3M6YGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtM2B9LHZ0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LHl0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LGJ0PXtjbGFzczpgdGV4dC1yaWdodGB9LHh0PXtjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxTdD17Y2xhc3M6YHRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYH0sQ3Q9e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHd0PXtjbGFzczpgZm9udC1tb25vIHRleHQteHNgfSxUdD17a2V5OjEsY2xhc3M6YHRleHQtc20gYnJlYWstd29yZHMgdGV4dC1kZXN0cnVjdGl2ZWB9LEV0PXtrZXk6MixjbGFzczpgdGV4dC1zbSBicmVhay13b3JkcyB0ZXh0LWRlc3RydWN0aXZlYH0sRHQ9e2tleTozLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LE90PXtrZXk6NyxjbGFzczpgdGV4dC1zbSBicmVhay13b3JkcyB0ZXh0LWRlc3RydWN0aXZlYH0sa3Q9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC00IGxnOmdyaWQtY29scy0yYH0sQXQ9ZCh7X19uYW1lOmBTcGVuZFBhZ2VgLHNldHVwKHQpe2xldCBuPXttb2RlbDpgQnkgbW9kZWxgLHByb3ZpZGVyOmBCeSBwcm92aWRlcmAsZ3JvdXA6YEJ5IGdyb3VwYH0sYT1lZSgpLG89UigpLHM9eCgpLGw9VGUoKSxkPUZlKCkse25vdzpmLHN0YXJ0Om0sc3RvcDpofT1oZSgpLHY9dygoKT0+YS5wYXJhbXMuYnkmJkFlKGEucGFyYW1zLmJ5KT9hLnBhcmFtcy5ieTpgbW9kZWxgKSxiPXcoKCk9PmEucGFyYW1zLm1ldHJpYyYmTWUoYS5wYXJhbXMubWV0cmljKT9hLnBhcmFtcy5tZXRyaWM6YGNvc3RgKSxEPXcoKCk9PmEucGFyYW1zLnJlZj8/YGApLEE9dygoKT0+YS5wYXJhbXMuZHJpbGw/P2BgKTtmdW5jdGlvbiBqKGUpe2xldCB0PXtieTplLmJ5Pz92LnZhbHVlLG1ldHJpYzplLm1ldHJpYz8/Yi52YWx1ZSxyZWY6ZS5yZWY/P0QudmFsdWUsZHJpbGw6ZS5kcmlsbD8/QS52YWx1ZX0sbj17fTt0LmJ5IT09YG1vZGVsYCYmKG4uYnk9dC5ieSksdC5tZXRyaWMhPT1gY29zdGAmJihuLm1ldHJpYz10Lm1ldHJpYyksdC5yZWYhPT1gYCYmKG4ucmVmPXQucmVmKSx0LmRyaWxsIT09YGAmJihuLmRyaWxsPXQuZHJpbGwpLGEuZ29Ubyhgc3BlbmRgLG4pfWZ1bmN0aW9uIE0oZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZBZShlKSYmaih7Ynk6ZX0pfWZ1bmN0aW9uIE4oZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZNZShlKSYmaih7bWV0cmljOmV9KX1mdW5jdGlvbiBQKGUpe2ooe3JlZjplfSl9ZnVuY3Rpb24gRihlKXtqKHtkcmlsbDplfSl9bGV0IEk9dygoKT0+by5zY29wZSE9PWBhbGxgKTtlKFt2LGIsQV0sKFtlLHQsbl0pPT57ZC5zZXRTZWxlY3Rpb24oe2J5OmUsbWV0cmljOnQsZHJpbGw6bn0pfSksZSgoKT0+W28ucmFuZ2Usby5jbXAsby5zY29wZV0sKCk9PnZvaWQgZC5yZWZyZXNoKCkpLHUoKCk9PntkLiRwYXRjaCh7Ynk6di52YWx1ZSxtZXRyaWM6Yi52YWx1ZSxkcmlsbDpBLnZhbHVlfSksbC5lbnN1cmVMb2FkZWQoKSxkLnN0YXJ0UG9sbGluZygpLG0oKX0pLHkoKCk9PntkLnN0b3BQb2xsaW5nKCksaCgpfSk7bGV0IEw9W2AtLWNoYXJ0LXJlcXVlc3RzYCxgLS1jaGFydC10b2tlbnMtaW5gLGAtLWNoYXJ0LXRva2Vucy1vdXRgLGAtLWNoYXJ0LWNvc3RgLGAtLWNoYXJ0LXNlcmllcy1hYCxgLS1jaGFydC1zZXJpZXMtYmAsYC0tY2hhcnQtc2VyaWVzLWNgLGAtLWNoYXJ0LXNlcmllcy1kYF07ZnVuY3Rpb24gYWUoZSl7cmV0dXJuIExbZSVMLmxlbmd0aF19ZnVuY3Rpb24gc2UoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChgbW9kZWw6YCl8fGUuc3RhcnRzV2l0aChgZ3JvdXA6YCk/ZS5zbGljZSg2KTplLnN0YXJ0c1dpdGgoYHByb3ZpZGVyOmApP2Uuc2xpY2UoOSk6ZX1sZXQgZGU9dygoKT0+ZC5idWNrZXRzLm1hcChlPT5tZShlLG8ud2luZG93KSkpLGZlPXcoKCk9PntsZXQgZT1kLmJyZWFrZG93bi5tYXAoKGUsdCk9Pih7bGFiZWw6c2UoZS5zY29wZSksZGF0YTplLnBvaW50cyxjb2xvcjphZSh0KX0pKTtyZXR1cm4gZC5vdGhlclBvaW50cyYmZS5wdXNoKHtsYWJlbDpgT3RoZXJgLGRhdGE6ZC5vdGhlclBvaW50cyxjb2xvcjpgLS1tdXRlZC1mb3JlZ3JvdW5kYH0pLGV9KSxIPXcoKCk9PmQuY29tcGFyaXNvblBvaW50cz9be2xhYmVsOmBUb3RhbGAsZGF0YTpkLmNvbXBhcmlzb25Qb2ludHMsY29sb3I6YC0tZm9yZWdyb3VuZGAsbGFiZWxTdWZmaXg6YCAocHJldmlvdXMgcGVyaW9kKWB9XTpbXSksVT13KCgpPT5iLnZhbHVlPT09YGNvc3RgP1Y6cGUpLFc9dygoKT0+ZC50b3RhbFBvaW50cy5yZWR1Y2UoKGUsdCk9PmUrdCwwKSksRz13KCgpPT57aWYoby5zY29wZT09PWBhbGxgKXJldHVybiBzLnVzYWdlPy50b3RhbC5jb3N0UGVyTW9udGhNaWNyb1VzZD8/MDtpZihvLnNjb3BlLnN0YXJ0c1dpdGgoYGdyb3VwOmApKXtsZXQgZT1vLnNjb3BlLnNsaWNlKDYpO3JldHVybiBzLnVzYWdlPy5ncm91cHMuZmluZCh0PT50LmlkPT09ZSk/LmNvc3RQZXJNb250aE1pY3JvVXNkPz8wfWlmKG8uc2NvcGUuc3RhcnRzV2l0aChgdXNlcjpgKSl7bGV0IGU9by5zY29wZS5zbGljZSg1KTtyZXR1cm4gcy51c2FnZT8udXNlcnMuZmluZCh0PT50LmlkPT09ZSk/LmNvc3RQZXJNb250aE1pY3JvVXNkPz8wfXJldHVybiAwfSksSz13KCgpPT57aWYoby5zY29wZT09PWBhbGxgKXtsZXQgZT0ocy5vdmVydmlldz8uZ3JvdXBzPz9bXSkuZmlsdGVyKGU9PihlLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEPz8wKT4wKTtyZXR1cm4gZS5sZW5ndGg9PT0wP3ZvaWQgMDp7Y29zdFBlck1vbnRoVVNEOmUucmVkdWNlKChlLHQpPT5lKyh0LmxpbWl0cz8uY29zdFBlck1vbnRoVVNEPz8wKSwwKX19aWYoby5zY29wZS5zdGFydHNXaXRoKGBncm91cDpgKSl7bGV0IGU9by5zY29wZS5zbGljZSg2KTtyZXR1cm4gcy5vdmVydmlldz8uZ3JvdXBzLmZpbmQodD0+dC5uYW1lPT09ZSk/LmxpbWl0c31pZihvLnNjb3BlLnN0YXJ0c1dpdGgoYHVzZXI6YCkpe2xldCBlPW8uc2NvcGUuc2xpY2UoNSk7cmV0dXJuIHMudXNhZ2U/LnVzZXJzLmZpbmQodD0+dC5pZD09PWUpPy5saW1pdHN9fSkscT13KCgpPT5vLnNjb3BlPT09YGFsbGB8fG8uc2NvcGUuc3RhcnRzV2l0aChgZ3JvdXA6YCl8fG8uc2NvcGUuc3RhcnRzV2l0aChgdXNlcjpgKSksZ2U9dygoKT0+cy5vdmVydmlldz8uZmVhdHVyZXMudXNlck1vZGVsU3RhdHM/PyExKSxfZT13KCgpPT5zLm92ZXJ2aWV3Py5mZWF0dXJlcy5jYWNoZVN0YXRzPz8hMSksSj13KCgpPT5tdChvLndpbmRvdykpLHZlPXcoKCk9PkoudmFsdWUuYXZhaWxhYmxlKSxiZT13KCgpPT5KLnZhbHVlLm5vdGUpLFk9dygoKT0+Qih7bG9hZGluZzpkLmxvYWRpbmcsaGFzRGF0YTpkLmJ1Y2tldHMubGVuZ3RoPjAsZXJyb3I6ZC5icmVha2Rvd25FcnJvcn0pKTtmdW5jdGlvbiB4ZSgpe2xldCBlPVtkLmZldGNoUHJpY2luZ0hlYWx0aFJhbmtpbmcoKV07cmV0dXJuIGwuZXJyb3ImJmUucHVzaChsLmZldGNoKCkpLFByb21pc2UuYWxsKGUpLnRoZW4oKCk9PnZvaWQgMCl9cmV0dXJuKGUsdCk9PihFKCksZyhgZGl2YCxodCxbcChgZGl2YCxndCxbcChgZGl2YCxfdCxbcChgZGl2YCx2dCxbdFswXXx8PXAoYHNwYW5gLHtjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQnJlYWtkb3duYCwtMSksQyhTKG5lKSx7Im1vZGVsLXZhbHVlIjp2LnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpNfSx7ZGVmYXVsdDpyKCgpPT5bQyhTKHRlKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsoRSghMCksZyhpLG51bGwsXyhTKGtlKSxlPT4oRSgpLE8oUyhyZSkse2tleTplLHZhbHVlOmUsZGlzYWJsZWQ6SS52YWx1ZX0se2RlZmF1bHQ6cigoKT0+W1QoYyhuW2VdKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYCxgZGlzYWJsZWRgXSkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKSxwKGBkaXZgLHl0LFt0WzFdfHw9cChgbGFiZWxgLHtpZDpgc3BlbmQtbWV0cmljLWxhYmVsYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTWV0cmljYCwtMSksQyhTKGxlKSx7Im1vZGVsLXZhbHVlIjpiLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpOfSx7ZGVmYXVsdDpyKCgpPT5bQyhTKHVlKSx7ImFyaWEtbGFiZWxsZWRieSI6YHNwZW5kLW1ldHJpYy1sYWJlbGAsY2xhc3M6YHctNDBgfSx7ZGVmYXVsdDpyKCgpPT5bQyhTKGNlKSldKSxfOjF9KSxDKFMoaWUpLG51bGwse2RlZmF1bHQ6cigoKT0+WyhFKCEwKSxnKGksbnVsbCxfKFMoamUpLGU9PihFKCksTyhTKG9lKSx7a2V5OmUsdmFsdWU6ZX0se2RlZmF1bHQ6cigoKT0+W1QoYyhTKFgpW2VdKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSldKSxwKGBkaXZgLGJ0LFtwKGBwYCx4dCxjKFMoWClbYi52YWx1ZV0pK2AgaW4gcmFuZ2VgLDEpLHAoYHBgLFN0LGMoVS52YWx1ZShXLnZhbHVlKSksMSldKV0pLEkudmFsdWU/KEUoKSxnKGBwYCxDdCxbdFsyXXx8PVQoYCBTaG93aW5nIGAsLTEpLHAoYHNwYW5gLHd0LGMoUyhvKS5zY29wZSksMSksdFszXXx8PVQoYCBkaXJlY3RseSDigJQgY2xlYXIgdGhlIHNjb3BlIGZpbHRlciB0byBicmVhayBzcGVuZCBkb3duIGJ5IG1vZGVsLCBwcm92aWRlciwgb3IgZ3JvdXAuIGAsLTEpXSkpOmsoYGAsITApLFMobCkuZXJyb3I/KEUoKSxnKGBwYCxUdCxjKFMobCkuZXJyb3IpLDEpKTprKGBgLCEwKSxTKGQpLnJhbmtpbmdFcnJvcj8oRSgpLGcoYHBgLEV0LGMoUyhkKS5yYW5raW5nRXJyb3IpLDEpKTprKGBgLCEwKSxTKG8pLmNtcFNwZWMucmVxdWVzdGVkJiZTKGQpLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbj8oRSgpLGcoYHBgLER0LGMoUyhkKS5jb21wYXJpc29uVW5hdmFpbGFibGVSZWFzb24pLDEpKTprKGBgLCEwKSxZLnZhbHVlPT09YHNrZWxldG9uYD8oRSgpLE8oU2Use2tleTo0fSkpOlkudmFsdWU9PT1gZXJyb3JgPyhFKCksTyh6LHtrZXk6NSxtZXNzYWdlOlMoZCkuYnJlYWtkb3duRXJyb3IsIm9uLXJldHJ5IjpTKGQpLnJlZnJlc2h9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKSk6KEUoKSxPKENlLHtrZXk6NixsYWJlbHM6ZGUudmFsdWUsZGF0YXNldHM6ZmUudmFsdWUsImNvbXBhcmlzb24tZGF0YXNldHMiOkgudmFsdWUsc3RhY2tlZDpgYCwidmFsdWUtZm9ybWF0dGVyIjpVLnZhbHVlLGFyaWFMYWJlbDpgJHtTKFgpW2IudmFsdWVdfSBicmVha2Rvd24gJHtuW3YudmFsdWVdLnRvTG93ZXJDYXNlKCl9IG92ZXIgdGltZWB9LG51bGwsOCxbYGxhYmVsc2AsYGRhdGFzZXRzYCxgY29tcGFyaXNvbi1kYXRhc2V0c2AsYHZhbHVlLWZvcm1hdHRlcmAsYGFyaWFMYWJlbGBdKSksUyhkKS5icmVha2Rvd25FcnJvciYmWS52YWx1ZT09PWByZWFkeWA/KEUoKSxnKGBwYCxPdCxjKFMoZCkuYnJlYWtkb3duRXJyb3IpLDEpKTprKGBgLCEwKSxwKGBkaXZgLGt0LFtTKGQpLmJ1cm5kb3duQXZhaWxhYmxlPyhFKCksTyhYZSx7a2V5OjAsYnVja2V0czpTKGQpLmJ1cm5kb3duQnVja2V0cyxwb2ludHM6UyhkKS5idXJuZG93blBvaW50cywiYnVkZ2V0LW1pY3JvcyI6UyhkKS5idXJuZG93bkJ1ZGdldE1pY3Jvcyxub3c6UyhmKSxsb2FkaW5nOlMoZCkuYnVybmRvd25Mb2FkaW5nLGVycm9yOlMoZCkuYnVybmRvd25FcnJvciwib24tcmV0cnkiOlMoZCkucmVmcmVzaH0sbnVsbCw4LFtgYnVja2V0c2AsYHBvaW50c2AsYGJ1ZGdldC1taWNyb3NgLGBub3dgLGBsb2FkaW5nYCxgZXJyb3JgLGBvbi1yZXRyeWBdKSk6ayhgYCwhMCkscS52YWx1ZT8oRSgpLE8oeWUse2tleToxLCJtdGQtbWljcm9zIjpHLnZhbHVlLGxpbWl0czpLLnZhbHVlLG5vdzpTKGYpfSxudWxsLDgsW2BtdGQtbWljcm9zYCxgbGltaXRzYCxgbm93YF0pKTprKGBgLCEwKV0pLEMoY3Qse21vZGVsczpTKGQpLm1vZGVsUmFua2luZyxjYXRhbG9nOlMobCkubW9kZWxzQnlJZCwicmVmLW1vZGVsIjpELnZhbHVlLCJjYWNoZS1zdGF0cy1lbmFibGVkIjpfZS52YWx1ZSwiY2FjaGUtc2F2aW5ncy1hdmFpbGFibGUiOnZlLnZhbHVlLCJjYWNoZS1zYXZpbmdzLW5vdGUiOmJlLnZhbHVlLCJvblVwZGF0ZTpyZWZNb2RlbCI6UH0sbnVsbCw4LFtgbW9kZWxzYCxgY2F0YWxvZ2AsYHJlZi1tb2RlbGAsYGNhY2hlLXN0YXRzLWVuYWJsZWRgLGBjYWNoZS1zYXZpbmdzLWF2YWlsYWJsZWAsYGNhY2hlLXNhdmluZ3Mtbm90ZWBdKSxDKHB0LHttb2RlbHM6UyhkKS5wcmljaW5nSGVhbHRoUmFua2luZyxjYXRhbG9nOlMobCkubW9kZWxzQnlJZCxsb2FkaW5nOlMoZCkucHJpY2luZ0hlYWx0aExvYWRpbmcsbG9hZGVkOlMoZCkucHJpY2luZ0hlYWx0aExvYWRlZCxlcnJvcjpTKGQpLnByaWNpbmdIZWFsdGhFcnJvcnx8UyhsKS5lcnJvciwib24tcmV0cnkiOnhlfSxudWxsLDgsW2Btb2RlbHNgLGBjYXRhbG9nYCxgbG9hZGluZ2AsYGxvYWRlZGAsYGVycm9yYF0pLEMoVWUse3Jvd3M6UyhkKS5kcmlsbGRvd25Sb3dzLG1ldHJpY3M6UyhkKS5kcmlsbGRvd25NZXRyaWNzLGRyaWxsOkEudmFsdWUsZGlzYWJsZWQ6UyhkKS5kcmlsbGRvd25EaXNhYmxlZCwidXNlci1tb2RlbC1zdGF0cy1lbmFibGVkIjpnZS52YWx1ZSx3aW5kb3c6UyhvKS53aW5kb3csc3BhbjpTKG8pLnNwYW4sbG9hZGluZzpTKGQpLmRyaWxsZG93bkxvYWRpbmcsbG9hZGVkOlMoZCkuZHJpbGxkb3duTG9hZGVkLGVycm9yOlMoZCkuZHJpbGxkb3duRXJyb3IsIm9uLXJldHJ5IjpTKGQpLmZldGNoRHJpbGxkb3duLCJvblVwZGF0ZTpkcmlsbCI6Rn0sbnVsbCw4LFtgcm93c2AsYG1ldHJpY3NgLGBkcmlsbGAsYGRpc2FibGVkYCxgdXNlci1tb2RlbC1zdGF0cy1lbmFibGVkYCxgd2luZG93YCxgc3BhbmAsYGxvYWRpbmdgLGBsb2FkZWRgLGBlcnJvcmAsYG9uLXJldHJ5YF0pXSkpfX0pO2V4cG9ydHtBdCBhcyBkZWZhdWx0fTs=",
|
|
),
|
|
},
|
|
"TargetsPage-DYUVhhsj.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FyIGFzIGUsQyBhcyB0LEZyIGFzIG4sSnQgYXMgcixPbiBhcyBpLFFyIGFzIGEsUyBhcyBvLFNpIGFzIHMsVCBhcyBjLF9uIGFzIGwsYiBhcyB1LGMgYXMgZCxjbiBhcyBmLGYgYXMgcCxnIGFzIG0sZ2kgYXMgaCxobiBhcyBnLGlpIGFzIF8saW4gYXMgdixtbiBhcyB5LG4gYXMgYixuciBhcyB4LG9pIGFzIFMsb24gYXMgQyxzbiBhcyB3LHcgYXMgVH1mcm9tIi4vU2tlbGV0b24tQjB6aUI2T2QuanMiO2ltcG9ydHtjIGFzIEUsZyBhcyBELGggYXMgTyx0IGFzIGt9ZnJvbSIuL2luZGV4LWR5d1M4T3BULmpzIjtpbXBvcnR7dCBhcyBBfWZyb20iLi9FcnJvclN0YXRlLXltNmVTbGoyLmpzIjtpbXBvcnR7XyBhcyBqLGwgYXMgTSxzIGFzIE4sdCBhcyBQLHYgYXMgRn1mcm9tIi4vYmFkZ2UtRFVpQlREeUEuanMiO2ltcG9ydHtvIGFzIEksdCBhcyBMfWZyb20iLi9EYXRhVGFibGUtQ1F4UlZEU1kuanMiO2ltcG9ydHt0IGFzIFJ9ZnJvbSIuL0NvbXBhY3ROdW1iZXItcHI4Y0o0Y3YuanMiO2ltcG9ydHtuIGFzIHosdCBhcyBCfWZyb20iLi91c2VTZWFyY2hRdWVyeS1iUVpQNFRzWi5qcyI7aW1wb3J0e3QgYXMgVn1mcm9tIi4vQ2xhbXBlZFJhbmdlTm90aWNlLUQyd2FsblhmLmpzIjtmdW5jdGlvbiBIKGUsdCxuKXtyZXR1cm57aWQ6ZSxoZWFkZXI6dCxhY2Nlc3NvckZuOm4sbWV0YTp7YWxpZ246YHJpZ2h0YH0sY2VsbDooe3JvdzplfSk9PmkoUix7dmFsdWU6bihlLm9yaWdpbmFsKX0pfX12YXIgVT1gbm90IG9ic2VydmVkIHlldCDigJQgbm8gdHJhZmZpYyBhbmQgcHJvYmVzIGRpc2FibGVkIG9yIG5vdCB5ZXQgcnVuYDtmdW5jdGlvbiBXKGUpe2xldCB0PU4oZS5sYXN0Q2hlY2spO3JldHVybiB0P2B1bmhlYWx0aHkgKCR7dH0pYDpgdW5oZWFsdGh5YH1mdW5jdGlvbiBHKGUpe2xldCB0PWUuY29uc2VjdXRpdmVGYWlsdXJlcz09PTE/YGZhaWx1cmVgOmBmYWlsdXJlc2Asbj1lLnNvdXJjZT9gIHZpYSAke2Uuc291cmNlfWA6YGAscj1gJHtlLmNvbnNlY3V0aXZlRmFpbHVyZXN9IGNvbnNlY3V0aXZlICR7dH0ke259YDtyZXR1cm4gZS5sYXN0RXJyb3I/YCR7cn06ICR7ZS5sYXN0RXJyb3J9YDpyfWZ1bmN0aW9uIEsoZSl7bGV0IHQ9TihlLmxhc3RDaGVjayk7cmV0dXJuIHQ/ZS5zb3VyY2U/YCR7dH0gdmlhICR7ZS5zb3VyY2V9YDp0OmUuc291cmNlP2B2aWEgJHtlLnNvdXJjZX1gOmBgfWZ1bmN0aW9uIHEoZSl7aWYoZS5jb25zZWN1dGl2ZUZhaWx1cmVzPD0wJiYhZS5sYXN0RXJyb3IpcmV0dXJuIFU7bGV0IHQ9ZS5jb25zZWN1dGl2ZUZhaWx1cmVzPT09MT9gZmFpbHVyZWA6YGZhaWx1cmVzYCxuPWUuc291cmNlP2AgdmlhICR7ZS5zb3VyY2V9YDpgYCxyPWAke2UuY29uc2VjdXRpdmVGYWlsdXJlc30gJHt0fSBzbyBmYXIke259YDtyZXR1cm4gZS5sYXN0RXJyb3I/YCR7cn06ICR7ZS5sYXN0RXJyb3J9YDpyfWZ1bmN0aW9uIEooZSl7aWYoZS5zdGF0ZT09PWB1bmhlYWx0aHlgKXJldHVybiBpKFAse2FzOmBzcGFuYCx2YXJpYW50OmBkZXN0cnVjdGl2ZWAsY2xhc3M6YGZvbnQtbm9ybWFsYCx0aXRsZTpHKGUpfSwoKT0+VyhlKSk7aWYoZS5zdGF0ZT09PWBoZWFsdGh5YCl7bGV0IHQ9ZS5sYXRlbmN5TXM9PT12b2lkIDA/YGA6YCDCtyAke00oZS5sYXRlbmN5TXMpfWA7cmV0dXJuIGkoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCx0aXRsZTpLKGUpfSxgaGVhbHRoeSR7dH1gKX1yZXR1cm4gaShQLHthczpgc3BhbmAsdmFyaWFudDpgb3V0bGluZWAsY2xhc3M6YGZvbnQtbm9ybWFsYCx0aXRsZTpxKGUpfSwoKT0+YHVua25vd25gKX1mdW5jdGlvbiBZKGUpe3JldHVyblt7aWQ6YG5hbWVgLGhlYWRlcjpgTmFtZWAsYWNjZXNzb3JGbjplPT5lLm5hbWUsY2VsbDooe3Jvdzp0fSk9PmU/aShgYnV0dG9uYCx7dHlwZTpgYnV0dG9uYCxjbGFzczpgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1zbSBmb250LW1lZGl1bSBob3Zlcjp0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwYCx0aXRsZTpgVmlldyAke3Qub3JpZ2luYWwubmFtZX0ncyBjYWxsZXJzYCxvbkNsaWNrOm49PntuLnN0b3BQcm9wYWdhdGlvbigpLGUodC5vcmlnaW5hbCl9fSx0Lm9yaWdpbmFsLm5hbWUpOmkoYHNwYW5gLHtjbGFzczpgZm9udC1tZWRpdW1gfSx0Lm9yaWdpbmFsLm5hbWUpfSx7aWQ6YHVybGAsaGVhZGVyOmBVUkxgLGFjY2Vzc29yRm46ZT0+ZS51cmwsY2VsbDooe3JvdzplfSk9PmkoYHNwYW5gLHtjbGFzczpgYmxvY2sgbWF4LXcteHMgdHJ1bmNhdGUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCx0aXRsZTplLm9yaWdpbmFsLnVybH0sZS5vcmlnaW5hbC51cmwpfSx7aWQ6YGhlYWx0aGAsaGVhZGVyOmBIZWFsdGhgLGVuYWJsZVNvcnRpbmc6ITEsYWNjZXNzb3JGbjplPT5lLmhlYWx0aC5zdGF0ZSxjZWxsOih7cm93OmV9KT0+SihlLm9yaWdpbmFsLmhlYWx0aCl9LHtpZDpgYWNjZXNzYCxoZWFkZXI6YEFjY2Vzc2AsZW5hYmxlU29ydGluZzohMSxhY2Nlc3NvckZuOmU9PihlLmFjY2Vzcz8/W10pLmpvaW4oYCwgYCksY2VsbDooe3JvdzplfSk9PntsZXQgdD1lLm9yaWdpbmFsLmFjY2VzcztyZXR1cm4gdD09bnVsbD9pKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBBbGwgZ3JvdXBzYCk6dC5sZW5ndGg9PT0wP2koYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYE5vIGdyb3Vwc2ApOmkoYGRpdmAse2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sdC5tYXAoZT0+aShQLHtrZXk6ZSxhczpgc3BhbmAsdmFyaWFudDpgc2Vjb25kYXJ5YCxjbGFzczpgZm9udC1tb25vIGZvbnQtbm9ybWFsYH0sKCk9PmUpKSl9fSxIKGByZXFNaW5gLGByZXEvbWluYCxlPT5lLmNvdW50ZXJzLnJlcXVlc3RzUGVyTWludXRlKSxIKGByZXFEYXlgLGByZXEvZGF5YCxlPT5lLmNvdW50ZXJzLnJlcXVlc3RzUGVyRGF5KSxIKGByZXFNb250aGAsYHJlcS9tb250aGAsZT0+ZS5jb3VudGVycy5yZXF1ZXN0c1Blck1vbnRoKV19ZnVuY3Rpb24gWChlLHQpe3JldHVybmAke2V9LyR7dH1gfWZ1bmN0aW9uIFooZSl7bGV0IHQ9ZS5pbmRleE9mKGAvYCk7aWYodD09PS0xKXJldHVybiBudWxsO2xldCBuPWUuc2xpY2UoMCx0KSxyPWUuc2xpY2UodCsxKTtyZXR1cm4gcj09PWBgfHxuIT09YG1jcGAmJm4hPT1gYWdlbnRgP251bGw6e2tpbmQ6bixuYW1lOnJ9fWZ1bmN0aW9uIGVlKGUsdCl7bGV0IG49WihlKTtpZihuKXJldHVybntraW5kOmByZWZgLHJlZjpYKG4ua2luZCxuLm5hbWUpLG5hbWU6bi5uYW1lfTtpZih0PT09bnVsbClyZXR1cm57a2luZDpgcGVuZGluZ2B9O2xldCByPXQubWNwU2VydmVycy5zb21lKHQ9PnQubmFtZT09PWUpLGk9dC5hZ2VudHMuc29tZSh0PT50Lm5hbWU9PT1lKTtyZXR1cm4gciYmaT97a2luZDpgbm90aWNlYCxtZXNzYWdlOmAiJHtlfSIgbWF0Y2hlcyBib3RoIGFuIE1DUCBzZXJ2ZXIgYW5kIGFuIGFnZW50IOKAlCB1c2UgIm1jcC8ke2V9IiBvciAiYWdlbnQvJHtlfSIgdG8gcGljayBvbmUuYH06cj97a2luZDpgcmVmYCxyZWY6WChgbWNwYCxlKSxuYW1lOmV9Omk/e2tpbmQ6YHJlZmAscmVmOlgoYGFnZW50YCxlKSxuYW1lOmV9OntraW5kOmBub3RpY2VgLG1lc3NhZ2U6YE5vIE1DUCBzZXJ2ZXIgb3IgYWdlbnQgbmFtZWQgIiR7ZX0iIGlzIGNvbmZpZ3VyZWQuYH19ZnVuY3Rpb24gUShlKXtsZXQgdD1lLmluZGV4T2YoYC9gKTtpZih0PT09LTEpcmV0dXJue2tpbmQ6YGAsdGFyZ2V0OmBgLGNhbGxlcjplfTtsZXQgbj1lLnNsaWNlKDAsdCkscj1lLnNsaWNlKHQrMSksaT1yLmluZGV4T2YoYC9gKTtyZXR1cm4gaT09PS0xP3traW5kOm4sdGFyZ2V0OnIsY2FsbGVyOmBgfTp7a2luZDpuLHRhcmdldDpyLnNsaWNlKDAsaSksY2FsbGVyOnIuc2xpY2UoaSsxKX19ZnVuY3Rpb24gdGUoZSl7bGV0IHQ9W107cmV0dXJuIGUmJnQucHVzaCh7aWQ6YHRhcmdldGAsaGVhZGVyOmBUYXJnZXRgLGFjY2Vzc29yRm46ZT0+e2xldCB0PVEoZS5pZCk7cmV0dXJuYCR7dC5raW5kfS8ke3QudGFyZ2V0fWB9LGNlbGw6KHtyb3c6ZX0pPT57bGV0IHQ9UShlLm9yaWdpbmFsLmlkKTtyZXR1cm4gaShgc3BhbmAse2NsYXNzOmBmb250LW1vbm8gdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgJHt0LmtpbmR9LyR7dC50YXJnZXR9YCl9fSksdC5wdXNoKHtpZDpgY2FsbGVyYCxoZWFkZXI6YENhbGxlcmAsYWNjZXNzb3JGbjplPT5RKGUuaWQpLmNhbGxlcnx8ZS5pZCxjZWxsOih7cm93OmV9KT0+e2xldCB0PVEoZS5vcmlnaW5hbC5pZCkuY2FsbGVyO3JldHVybiBpKGBzcGFuYCx7Y2xhc3M6YGZvbnQtbWVkaXVtYH0sdHx8ZS5vcmlnaW5hbC5pZCl9fSksdC5wdXNoKHtpZDpgcmVxdWVzdHNgLGhlYWRlcjpgUmVxdWVzdHNgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS52YWx1ZXMucmVxPz8wLGNlbGw6KHtyb3c6ZX0pPT5pKFIse3ZhbHVlOmUub3JpZ2luYWwudmFsdWVzLnJlcT8/MH0pfSksdH12YXIgJD1sKHtfX25hbWU6YFRhcmdldENhbGxlcnNgLHByb3BzOnt0YXJnZXQ6e30sdGl0bGU6e30sbGltaXQ6e2RlZmF1bHQ6MTB9fSxzZXR1cChyKXtsZXQgaT1yLGE9aygpLGw9UyhbXSksZj1TKCExKSxtPVMoITEpLF89UyhgYCksYj0wO2FzeW5jIGZ1bmN0aW9uIHcoKXtsZXQgZT0rK2I7Zi52YWx1ZT0hMCxsLnZhbHVlPVtdLG0udmFsdWU9ITEsXy52YWx1ZT1gYDt0cnl7bGV0e3dpbmRvdzp0LHNwYW46bn09ZChhLndpbmRvdyxhLnNwYW4pLHI9YXdhaXQgdShwKHtraW5kOmB0YXJnZXRjYWxsZXJgLHdpbmRvdzp0LHNwYW46bixtZXRyaWNzOltgcmVxYF0sbGltaXQ6aS5saW1pdCx0YXJnZXQ6aS50YXJnZXR9KSk7aWYoZSE9PWIpcmV0dXJuO2wudmFsdWU9ci5yb3dzLG0udmFsdWU9ITB9Y2F0Y2godCl7aWYoZSE9PWIpcmV0dXJuO18udmFsdWU9dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9ZmluYWxseXtlPT09YiYmKGYudmFsdWU9ITEpfX1lKFsoKT0+aS50YXJnZXQsKCk9PmEud2luZG93LCgpPT5hLnNwYW5dLCgpPT52b2lkIHcoKSx7aW1tZWRpYXRlOiEwfSk7bGV0IEQ9digoKT0+dGUoIWkudGFyZ2V0KSksTz12KCgpPT5qKHtsb2FkaW5nOmYudmFsdWUsaGFzRGF0YTptLnZhbHVlLGVycm9yOl8udmFsdWV9KSk7cmV0dXJuKGUsaSk9Pih4KCksQyhoKGMpLG51bGwse2RlZmF1bHQ6bigoKT0+W2coaCh0KSxudWxsLHtkZWZhdWx0Om4oKCk9PltnKGgobyksbnVsbCx7ZGVmYXVsdDpuKCgpPT5beShzKHIudGl0bGUpLDEpXSksXzoxfSksZyhoKEUpLG51bGwse2RlZmF1bHQ6bigoKT0+Wy4uLmlbMF18fD1beShgUmFua2VkIGJ5IHJlcXVlc3RzLCBtb3N0IHJlY2VudCBkYXkvbW9udGggd2luZG93IGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgcmFuZ2UuYCwtMSldXSksXzoxfSldKSxfOjF9KSxnKGgoVCkse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0zYH0se2RlZmF1bHQ6bigoKT0+W2coVix7d2luZG93OmgoYSkud2luZG93LHNwYW46aChhKS5zcGFufSxudWxsLDgsW2B3aW5kb3dgLGBzcGFuYF0pLE8udmFsdWU9PT1gc2tlbGV0b25gPyh4KCksQyhJLHtrZXk6MCxyb3dzOjUsY29sczpELnZhbHVlLmxlbmd0aH0sbnVsbCw4LFtgY29sc2BdKSk6Ty52YWx1ZT09PWBlcnJvcmA/KHgoKSxDKEEse2tleToxLG1lc3NhZ2U6Xy52YWx1ZSwib24tcmV0cnkiOnd9LG51bGwsOCxbYG1lc3NhZ2VgXSkpOih4KCksQyhMLHtrZXk6Mixjb2x1bW5zOkQudmFsdWUsZGF0YTpsLnZhbHVlLCJlbXB0eS1tZXNzYWdlIjpgbm8gY2FsbGVycyByZWNvcmRlZCBpbiB0aGlzIHdpbmRvd2B9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYF0pKV0pLF86MX0pXSksXzoxfSkpfX0pLG5lPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNmB9LHJlPWwoe19fbmFtZTpgVGFyZ2V0c1ZpZXdgLGVtaXRzOltgc2VsZWN0YF0sc2V0dXAoZSx7ZW1pdDppfSl7bGV0IHM9bSgpLGw9digoKT0+cy50YXJnZXRzKSx1PWk7ZnVuY3Rpb24gZChlKXtyZXR1cm4gdD0+dShgc2VsZWN0YCxYKGUsdC5uYW1lKSx0Lm5hbWUpfWxldHtxdWVyeTpwLG5vcm1hbGl6ZWQ6XyxoYXNRdWVyeTpifT1CKCk7ZnVuY3Rpb24gUyhlKXtyZXR1cm4gZS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXy52YWx1ZSl9bGV0IHc9digoKT0+e2xldCBlPWwudmFsdWU/Lm1jcFNlcnZlcnM/P1tdO3JldHVybiBiLnZhbHVlP2UuZmlsdGVyKFMpOmV9KSxEPXYoKCk9PntsZXQgZT1sLnZhbHVlPy5hZ2VudHM/P1tdO3JldHVybiBiLnZhbHVlP2UuZmlsdGVyKFMpOmV9KTtmdW5jdGlvbiBPKGUsdCl7cmV0dXJuIGU/Yi52YWx1ZSYmdD09PTA/YG5vIHRhcmdldHMgbWF0Y2ggIiR7cC52YWx1ZX0iYDpgbm9uZWA6YG5vbmUgY29uZmlndXJlZGB9bGV0IGs9digoKT0+TyhsLnZhbHVlPy5tY3BTZXJ2ZXJzLmxlbmd0aD8/MCx3LnZhbHVlLmxlbmd0aCkpLE09digoKT0+TyhsLnZhbHVlPy5hZ2VudHMubGVuZ3RoPz8wLEQudmFsdWUubGVuZ3RoKSksTj12KCgpPT5qKHtsb2FkaW5nOiEwLGhhc0RhdGE6cy50YXJnZXRzIT09bnVsbCxlcnJvcjpzLmVycm9yfSkpLFA9digoKT0+Ti52YWx1ZT09PWByZWFkeWAmJihsLnZhbHVlPy5tY3BTZXJ2ZXJzLmxlbmd0aD8/MCk9PT0wJiYobC52YWx1ZT8uYWdlbnRzLmxlbmd0aD8/MCk9PT0wKSxSPVkoZChgbWNwYCkpLFY9WShkKGBhZ2VudGApKTtyZXR1cm4oZSxpKT0+KHgoKSxmKGBkaXZgLG5lLFtnKHose21vZGVsVmFsdWU6aChwKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVswXXx8PWU9PmEocCk/cC52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6YEZpbHRlciBNQ1Agc2VydmVycyBvciBhZ2VudHNgLGNsYXNzOmBtYXgtdy1zbWB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSksUC52YWx1ZT8oeCgpLEMoaChjKSx7a2V5OjB9LHtkZWZhdWx0Om4oKCk9PltnKGgoVCksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bZyhGLHt0aXRsZTpgTm8gTUNQIHNlcnZlcnMgb3IgYWdlbnRzIGNvbmZpZ3VyZWQuYCxkZXNjcmlwdGlvbjpgQWRkIGFuIG1jcFNlcnZlcnMgb3IgYWdlbnRzIGVudHJ5IHRvIHRoZSBtaWRkbGV3YXJlIGNvbmZpZyB0byBzZWUgdGhlbSBoZXJlLmB9KV0pLF86MX0pXSksXzoxfSkpOih4KCksZihyLHtrZXk6MX0sW2coaChjKSxudWxsLHtkZWZhdWx0Om4oKCk9PltnKGgodCksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bZyhoKG8pLG51bGwse2RlZmF1bHQ6bigoKT0+Wy4uLmlbMV18fD1beShgTUNQIHNlcnZlcnNgLC0xKV1dKSxfOjF9KSxnKGgoRSksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bLi4uaVsyXXx8PVt5KGAgQ29uZmlndXJlZCBNQ1AgcHJveHkgdGFyZ2V0cywgdGhlIGdyb3VwcyBhbGxvd2VkIHRvIHJlYWNoIHRoZW0sIGFuZCB0aGVpciByZXF1ZXN0IGNvdW50ZXJzLiBDbGljayBhIG5hbWUgdG8gc2VlIGl0cyBjYWxsZXJzLiBgLC0xKV1dKSxfOjF9KV0pLF86MX0pLGcoaChUKSxudWxsLHtkZWZhdWx0Om4oKCk9PltOLnZhbHVlPT09YHNrZWxldG9uYD8oeCgpLEMoSSx7a2V5OjAscm93czozLGNvbHM6aChSKS5sZW5ndGh9LG51bGwsOCxbYGNvbHNgXSkpOk4udmFsdWU9PT1gZXJyb3JgPyh4KCksQyhBLHtrZXk6MSxtZXNzYWdlOmgocykuZXJyb3J9LG51bGwsOCxbYG1lc3NhZ2VgXSkpOih4KCksQyhMLHtrZXk6Mixjb2x1bW5zOmgoUiksZGF0YTp3LnZhbHVlLCJlbXB0eS1tZXNzYWdlIjprLnZhbHVlfSxudWxsLDgsW2Bjb2x1bW5zYCxgZGF0YWAsYGVtcHR5LW1lc3NhZ2VgXSkpXSksXzoxfSldKSxfOjF9KSxnKGgoYyksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bZyhoKHQpLG51bGwse2RlZmF1bHQ6bigoKT0+W2coaChvKSxudWxsLHtkZWZhdWx0Om4oKCk9PlsuLi5pWzNdfHw9W3koYEFnZW50c2AsLTEpXV0pLF86MX0pLGcoaChFKSxudWxsLHtkZWZhdWx0Om4oKCk9PlsuLi5pWzRdfHw9W3koYCBDb25maWd1cmVkIEEyQSBhZ2VudCBwcm94eSB0YXJnZXRzLCB0aGUgZ3JvdXBzIGFsbG93ZWQgdG8gcmVhY2ggdGhlbSwgYW5kIHRoZWlyIHJlcXVlc3QgY291bnRlcnMuIENsaWNrIGEgbmFtZSB0byBzZWUgaXRzIGNhbGxlcnMuIGAsLTEpXV0pLF86MX0pXSksXzoxfSksZyhoKFQpLG51bGwse2RlZmF1bHQ6bigoKT0+W04udmFsdWU9PT1gc2tlbGV0b25gPyh4KCksQyhJLHtrZXk6MCxyb3dzOjMsY29sczpoKFYpLmxlbmd0aH0sbnVsbCw4LFtgY29sc2BdKSk6Ti52YWx1ZT09PWBlcnJvcmA/KHgoKSxDKEEse2tleToxLG1lc3NhZ2U6aChzKS5lcnJvcn0sbnVsbCw4LFtgbWVzc2FnZWBdKSk6KHgoKSxDKEwse2tleToyLGNvbHVtbnM6aChWKSxkYXRhOkQudmFsdWUsImVtcHR5LW1lc3NhZ2UiOk0udmFsdWV9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYCxgZW1wdHktbWVzc2FnZWBdKSldKSxfOjF9KV0pLF86MX0pXSw2NCkpXSkpfX0pLGllPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNmB9LGFlPWwoe19fbmFtZTpgVGFyZ2V0c1BhZ2VgLHNldHVwKGUpe2xldCB0PWIoKSxyPW0oKSxpPXYoKCk9PnQucGFyYW1zLnRhcmdldD8/YGApLGE9digoKT0+aS52YWx1ZT09PWBgP251bGw6ZWUoaS52YWx1ZSxyLnRhcmdldHMpKSxvPV8oe30pLGM9digoKT0+e2xldCBlPWEudmFsdWU7cmV0dXJuIG9baS52YWx1ZV0/PyhlPy5raW5kPT09YHJlZmA/ZS5uYW1lOmkudmFsdWUpfSk7ZnVuY3Rpb24gbChlLG4pe29bZV09bix0LmdvVG8oYHRhcmdldHNgLHsuLi50LnBhcmFtcyx0YXJnZXQ6ZX0pfXJldHVybihlLHQpPT4oeCgpLGYoYGRpdmAsaWUsW2cocmUse29uU2VsZWN0Omx9KSxhLnZhbHVlPy5raW5kPT09YHJlZmA/KHgoKSxDKCQse2tleTowLHRhcmdldDphLnZhbHVlLnJlZix0aXRsZTpgQ2FsbGVycyBvZiAke2MudmFsdWV9YH0sbnVsbCw4LFtgdGFyZ2V0YCxgdGl0bGVgXSkpOmEudmFsdWU/LmtpbmQ9PT1gbm90aWNlYD8oeCgpLEMoaChEKSx7a2V5OjEsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpuKCgpPT5bZyhoKE8pLG51bGwse2RlZmF1bHQ6bigoKT0+W3kocyhhLnZhbHVlLm1lc3NhZ2UpLDEpXSksXzoxfSldKSxfOjF9KSk6dyhgYCwhMCksZygkLHt0aXRsZTpgVG9wIGNhbGxlcnMsIGFjcm9zcyBldmVyeSB0YXJnZXRgfSldKSl9fSk7ZXhwb3J0e2FlIGFzIGRlZmF1bHR9Ow==",
|
|
),
|
|
},
|
|
"TimeSeriesChart-BFcT6woA.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FyIGFzIGUsS24gYXMgdCxPbiBhcyBuLFNpIGFzIHIsU3IgYXMgaSxVbiBhcyBhLFhuIGFzIG8sWXIgYXMgcyxfbiBhcyBjLGFuIGFzIGwsY24gYXMgdSxkaSBhcyBkLGVyIGFzIGYsZ2kgYXMgcCxobiBhcyBtLGluIGFzIGgsbGkgYXMgZyxuciBhcyBfLG9pIGFzIHYsdCBhcyB5fWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7aW1wb3J0e2MgYXMgYn1mcm9tIi4vYmFkZ2UtRFVpQlREeUEuanMiO3ZhciB4PXtjbGFzczpgaC03MiB3LWZ1bGxgfSxTPWMoe19fbmFtZTpgU2tlbGV0b25DaGFydGAsc2V0dXAoZSl7cmV0dXJuKGUsdCk9PihfKCksdShgZGl2YCx4LFttKHAoeSkse2NsYXNzOmBoLWZ1bGwgdy1mdWxsYH0pXSkpfX0pO2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUrLjV8MH12YXIgdz0oZSx0LG4pPT5NYXRoLm1heChNYXRoLm1pbihlLG4pLHQpO2Z1bmN0aW9uIFQoZSl7cmV0dXJuIHcoQyhlKjIuNTUpLDAsMjU1KX1mdW5jdGlvbiBFKGUpe3JldHVybiB3KEMoZSoyNTUpLDAsMjU1KX1mdW5jdGlvbiBEKGUpe3JldHVybiB3KEMoZS8yLjU1KS8xMDAsMCwxKX1mdW5jdGlvbiBlZShlKXtyZXR1cm4gdyhDKGUqMTAwKSwwLDEwMCl9dmFyIE89ezA6MCwxOjEsMjoyLDM6Myw0OjQsNTo1LDY6Niw3OjcsODo4LDk6OSxBOjEwLEI6MTEsQzoxMixEOjEzLEU6MTQsRjoxNSxhOjEwLGI6MTEsYzoxMixkOjEzLGU6MTQsZjoxNX0sdGU9Wy4uLmAwMTIzNDU2Nzg5QUJDREVGYF0sbmU9ZT0+dGVbZSYxNV0scmU9ZT0+dGVbKGUmMjQwKT4+NF0rdGVbZSYxNV0saWU9ZT0+KGUmMjQwKT4+ND09KGUmMTUpLGFlPWU9PmllKGUucikmJmllKGUuZykmJmllKGUuYikmJmllKGUuYSk7ZnVuY3Rpb24gb2UoZSl7dmFyIHQ9ZS5sZW5ndGgsbjtyZXR1cm4gZVswXT09PWAjYCYmKHQ9PT00fHx0PT09NT9uPXtyOjI1NSZPW2VbMV1dKjE3LGc6MjU1Jk9bZVsyXV0qMTcsYjoyNTUmT1tlWzNdXSoxNyxhOnQ9PT01P09bZVs0XV0qMTc6MjU1fToodD09PTd8fHQ9PT05KSYmKG49e3I6T1tlWzFdXTw8NHxPW2VbMl1dLGc6T1tlWzNdXTw8NHxPW2VbNF1dLGI6T1tlWzVdXTw8NHxPW2VbNl1dLGE6dD09PTk/T1tlWzddXTw8NHxPW2VbOF1dOjI1NX0pKSxufXZhciBzZT0oZSx0KT0+ZTwyNTU/dChlKTpgYDtmdW5jdGlvbiBjZShlKXt2YXIgdD1hZShlKT9uZTpyZTtyZXR1cm4gZT9gI2ArdChlLnIpK3QoZS5nKSt0KGUuYikrc2UoZS5hLHQpOnZvaWQgMH12YXIgbGU9L14oaHNsYT98aHdifGhzdilcKFxzKihbLSsuZVxkXSspKD86ZGVnKT9bXHMsXSsoWy0rLmVcZF0rKSVbXHMsXSsoWy0rLmVcZF0rKSUoPzpbXHMsXSsoWy0rLmVcZF0rKSglKT8pP1xzKlwpJC87ZnVuY3Rpb24gdWUoZSx0LG4pe2xldCByPXQqTWF0aC5taW4obiwxLW4pLGk9KHQsaT0odCtlLzMwKSUxMik9Pm4tcipNYXRoLm1heChNYXRoLm1pbihpLTMsOS1pLDEpLC0xKTtyZXR1cm5baSgwKSxpKDgpLGkoNCldfWZ1bmN0aW9uIGRlKGUsdCxuKXtsZXQgcj0ocixpPShyK2UvNjApJTYpPT5uLW4qdCpNYXRoLm1heChNYXRoLm1pbihpLDQtaSwxKSwwKTtyZXR1cm5bcig1KSxyKDMpLHIoMSldfWZ1bmN0aW9uIGZlKGUsdCxuKXtsZXQgcj11ZShlLDEsLjUpLGk7Zm9yKHQrbj4xJiYoaT0xLyh0K24pLHQqPWksbio9aSksaT0wO2k8MztpKyspcltpXSo9MS10LW4scltpXSs9dDtyZXR1cm4gcn1mdW5jdGlvbiBwZShlLHQsbixyLGkpe3JldHVybiBlPT09aT8odC1uKS9yKyh0PG4/NjowKTp0PT09aT8obi1lKS9yKzI6KGUtdCkvcis0fWZ1bmN0aW9uIG1lKGUpe2xldCB0PWUuci8yNTUsbj1lLmcvMjU1LHI9ZS5iLzI1NSxpPU1hdGgubWF4KHQsbixyKSxhPU1hdGgubWluKHQsbixyKSxvPShpK2EpLzIscyxjLGw7cmV0dXJuIGkhPT1hJiYobD1pLWEsYz1vPi41P2wvKDItaS1hKTpsLyhpK2EpLHM9cGUodCxuLHIsbCxpKSxzPXMqNjArLjUpLFtzfDAsY3x8MCxvXX1mdW5jdGlvbiBoZShlLHQsbixyKXtyZXR1cm4oQXJyYXkuaXNBcnJheSh0KT9lKHRbMF0sdFsxXSx0WzJdKTplKHQsbixyKSkubWFwKEUpfWZ1bmN0aW9uIGdlKGUsdCxuKXtyZXR1cm4gaGUodWUsZSx0LG4pfWZ1bmN0aW9uIF9lKGUsdCxuKXtyZXR1cm4gaGUoZmUsZSx0LG4pfWZ1bmN0aW9uIHZlKGUsdCxuKXtyZXR1cm4gaGUoZGUsZSx0LG4pfWZ1bmN0aW9uIHllKGUpe3JldHVybihlJTM2MCszNjApJTM2MH1mdW5jdGlvbiBiZShlKXtsZXQgdD1sZS5leGVjKGUpLG49MjU1LHI7aWYoIXQpcmV0dXJuO3RbNV0hPT1yJiYobj10WzZdP1QoK3RbNV0pOkUoK3RbNV0pKTtsZXQgaT15ZSgrdFsyXSksYT10WzNdLzEwMCxvPXRbNF0vMTAwO3JldHVybiByPXRbMV09PT1gaHdiYD9fZShpLGEsbyk6dFsxXT09PWBoc3ZgP3ZlKGksYSxvKTpnZShpLGEsbykse3I6clswXSxnOnJbMV0sYjpyWzJdLGE6bn19ZnVuY3Rpb24geGUoZSx0KXt2YXIgbj1tZShlKTtuWzBdPXllKG5bMF0rdCksbj1nZShuKSxlLnI9blswXSxlLmc9blsxXSxlLmI9blsyXX1mdW5jdGlvbiBTZShlKXtpZighZSlyZXR1cm47bGV0IHQ9bWUoZSksbj10WzBdLHI9ZWUodFsxXSksaT1lZSh0WzJdKTtyZXR1cm4gZS5hPDI1NT9gaHNsYSgke259LCAke3J9JSwgJHtpfSUsICR7RChlLmEpfSlgOmBoc2woJHtufSwgJHtyfSUsICR7aX0lKWB9dmFyIENlPXt4OmBkYXJrYCxaOmBsaWdodGAsWTpgcmVgLFg6YGJsdWAsVzpgZ3JgLFY6YG1lZGl1bWAsVTpgc2xhdGVgLEE6YGVlYCxUOmBvbGAsUzpgb3JgLEI6YHJhYCxDOmBsYXRlZ2AsRDpgaWdodHNgLFI6YGluYCxROmB0dXJxdW9pc2AsRTpgaGlgLFA6YHJvYCxPOmBhbGAsTjpgbGVgLE06YGRlYCxMOmB5ZWxsb2AsRjpgZW5gLEs6YGNoYCxHOmBhcmtzYCxIOmBlYWAsSTpgaWdodGdgLEo6YHdoYH0sd2U9e09pY2VYZTpgZjBmOGZmYCxhbnRpcXVld0V0ZTpgZmFlYmQ3YCxhcXVhOmBmZmZmYCxhcXVhbWFyUmU6YDdmZmZkNGAsYXp1WTpgZjBmZmZmYCxiZWlnZTpgZjVmNWRjYCxiaXNxdWU6YGZmZTRjNGAsYmxhY2s6YDBgLGJsYW5LZWRPbW9uZDpgZmZlYmNkYCxYZTpgZmZgLFhldmlUZXQ6YDhhMmJlMmAsYlB3bjpgYTUyYTJhYCxidXJseXdvb2Q6YGRlYjg4N2AsY2FNdFhlOmA1ZjllYTBgLEthcnRZdXNlOmA3ZmZmMDBgLEtvY1RhdGU6YGQyNjkxZWAsY1NPOmBmZjdmNTBgLGNTbmZsb3dlclhlOmA2NDk1ZWRgLGNTbnNpbGs6YGZmZjhkY2AsY3JpbXNvbjpgZGMxNDNjYCxjeWFuOmBmZmZmYCx4WGU6YDhiYCx4Y3lhbjpgOGI4YmAseGdUTW5QZDpgYjg4NjBiYCx4V2F5OmBhOWE5YTlgLHhnWUY6YDY0MDBgLHhnWXk6YGE5YTlhOWAseGtoYWtpOmBiZGI3NmJgLHhtYWdGdGE6YDhiMDA4YmAseFRpdmVnWUY6YDU1NmIyZmAseFNhbmdlOmBmZjhjMDBgLHhTY0VkOmA5OTMyY2NgLHhZZDpgOGIwMDAwYCx4c09tb246YGU5OTY3YWAseHNIZ1lGOmA4ZmJjOGZgLHhVWGU6YDQ4M2Q4YmAseFVXYXk6YDJmNGY0ZmAseFVnWXk6YDJmNGY0ZmAseFFlOmBjZWQxYCx4dmlUZXQ6YDk0MDBkM2AsZEFwcFJrOmBmZjE0OTNgLGRBcHNreVhlOmBiZmZmYCxkaW1XYXk6YDY5Njk2OWAsZGltZ1l5OmA2OTY5NjlgLGRvZGdlclhlOmAxZTkwZmZgLGZpWWJyaWNrOmBiMjIyMjJgLGZsU093RXRlOmBmZmZhZjBgLGZvWXN0V0FuOmAyMjhiMjJgLGZ1S3NpYTpgZmYwMGZmYCxnYVJzYlNvOmBkY2RjZGNgLGdob3N0d0V0ZTpgZjhmOGZmYCxnVGQ6YGZmZDcwMGAsZ1RNblBkOmBkYWE1MjBgLFdheTpgODA4MDgwYCxnWUY6YDgwMDBgLGdZRkx3OmBhZGZmMmZgLGdZeTpgODA4MDgwYCxob25leU13OmBmMGZmZjBgLGhvdHBSazpgZmY2OWI0YCxSZGlhbllkOmBjZDVjNWNgLFJkaWdvOmA0YjAwODJgLGl2U3k6YGZmZmZmMGAsa2hha2k6YGYwZTY4Y2AsbGF2Rk1yOmBlNmU2ZmFgLGxhdkZNclhzaDpgZmZmMGY1YCxsYXduZ1lGOmA3Y2ZjMDBgLE5tb25jRWZmb246YGZmZmFjZGAsWlhlOmBhZGQ4ZTZgLFpjU086YGYwODA4MGAsWmN5YW46YGUwZmZmZmAsWmdUTW5QZEx3OmBmYWZhZDJgLFpXYXk6YGQzZDNkM2AsWmdZRjpgOTBlZTkwYCxaZ1l5OmBkM2QzZDNgLFpwUms6YGZmYjZjMWAsWnNPbW9uOmBmZmEwN2FgLFpzSGdZRjpgMjBiMmFhYCxac2t5WGU6YDg3Y2VmYWAsWlVXYXk6YDc3ODg5OWAsWlVnWXk6YDc3ODg5OWAsWnN0QWxYZTpgYjBjNGRlYCxaTHc6YGZmZmZlMGAsbGltZTpgZmYwMGAsbGltZWdZRjpgMzJjZDMyYCxsUkY6YGZhZjBlNmAsbWFnRnRhOmBmZjAwZmZgLG1hUG9uOmA4MDAwMDBgLFZhcXVhbWFyUmU6YDY2Y2RhYWAsVlhlOmBjZGAsVlNjRWQ6YGJhNTVkM2AsVnB1cnBOOmA5MzcwZGJgLFZzSGdZRjpgM2NiMzcxYCxWVVhlOmA3YjY4ZWVgLFZzcHJSZ2dZRjpgZmE5YWAsVlFlOmA0OGQxY2NgLFZ2aVRldFlkOmBjNzE1ODVgLG1pZG5pZ2h0WGU6YDE5MTk3MGAsbVJ0Y1lhbTpgZjVmZmZhYCxtaXN0eVBzZTpgZmZlNGUxYCxtb2NjYXNSOmBmZmU0YjVgLG5hdmFqb3dFdGU6YGZmZGVhZGAsbmF2eTpgODBgLFRkbGFjZTpgZmRmNWU2YCxUaXZlOmA4MDgwMDBgLFRpdmVkQmI6YDZiOGUyM2AsU2FuZ2U6YGZmYTUwMGAsU2FuZ2VZZDpgZmY0NTAwYCxTY0VkOmBkYTcwZDZgLHBPZWdUTW5QZDpgZWVlOGFhYCxwT2VnWUY6YDk4ZmI5OGAscE9lUWU6YGFmZWVlZWAscE9ldmlUZXRZZDpgZGI3MDkzYCxwYXBheWF3RXA6YGZmZWZkNWAscEhLcHVmZjpgZmZkYWI5YCxwZXJ1OmBjZDg1M2ZgLHBSazpgZmZjMGNiYCxwbHVtOmBkZGEwZGRgLHBvd01yWGU6YGIwZTBlNmAscHVycE46YDgwMDA4MGAsWWJlY2NhcHVycE46YDY2MzM5OWAsWWQ6YGZmMDAwMGAsUHN5YnJvd246YGJjOGY4ZmAsUHlPWGU6YDQxNjllMWAsc2FkZE5iUHduOmA4YjQ1MTNgLHNPbW9uOmBmYTgwNzJgLHNhbmR5YlB3bjpgZjRhNDYwYCxzSGdZRjpgMmU4YjU3YCxzSHNoZWxsOmBmZmY1ZWVgLHNpRm5hOmBhMDUyMmRgLHNpbHZlcjpgYzBjMGMwYCxza3lYZTpgODdjZWViYCxVWGU6YDZhNWFjZGAsVVdheTpgNzA4MDkwYCxVZ1l5OmA3MDgwOTBgLHNub3c6YGZmZmFmYWAsc3ByUmdnWUY6YGZmN2ZgLHN0QWxYZTpgNDY4MmI0YCx0YW46YGQyYjQ4Y2AsdGVPOmA4MDgwYCx0RXN0TjpgZDhiZmQ4YCx0b21hdG86YGZmNjM0N2AsUWU6YDQwZTBkMGAsdmlUZXQ6YGVlODJlZWAsSkh0OmBmNWRlYjNgLHdFdGU6YGZmZmZmZmAsd0V0ZXNtb2tlOmBmNWY1ZjVgLEx3OmBmZmZmMDBgLEx3Z1lGOmA5YWNkMzJgfTtmdW5jdGlvbiBUZSgpe2xldCBlPXt9LHQ9T2JqZWN0LmtleXMod2UpLG49T2JqZWN0LmtleXMoQ2UpLHIsaSxhLG8scztmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXtmb3Iobz1zPXRbcl0saT0wO2k8bi5sZW5ndGg7aSsrKWE9bltpXSxzPXMucmVwbGFjZShhLENlW2FdKTthPXBhcnNlSW50KHdlW29dLDE2KSxlW3NdPVthPj4xNiYyNTUsYT4+OCYyNTUsYSYyNTVdfXJldHVybiBlfXZhciBFZTtmdW5jdGlvbiBEZShlKXtFZXx8KEVlPVRlKCksRWUudHJhbnNwYXJlbnQ9WzAsMCwwLDBdKTtsZXQgdD1FZVtlLnRvTG93ZXJDYXNlKCldO3JldHVybiB0JiZ7cjp0WzBdLGc6dFsxXSxiOnRbMl0sYTp0Lmxlbmd0aD09PTQ/dFszXToyNTV9fXZhciBPZT0vXnJnYmE/XChccyooWy0rLlxkXSspKCUpP1tccyxdKyhbLSsuZVxkXSspKCUpP1tccyxdKyhbLSsuZVxkXSspKCUpPyg/OltccywvXSsoWy0rLmVcZF0rKSglKT8pP1xzKlwpJC87ZnVuY3Rpb24ga2UoZSl7bGV0IHQ9T2UuZXhlYyhlKSxuPTI1NSxyLGksYTtpZih0KXtpZih0WzddIT09cil7bGV0IGU9K3RbN107bj10WzhdP1QoZSk6dyhlKjI1NSwwLDI1NSl9cmV0dXJuIHI9K3RbMV0saT0rdFszXSxhPSt0WzVdLHI9MjU1Jih0WzJdP1Qocik6dyhyLDAsMjU1KSksaT0yNTUmKHRbNF0/VChpKTp3KGksMCwyNTUpKSxhPTI1NSYodFs2XT9UKGEpOncoYSwwLDI1NSkpLHtyLGc6aSxiOmEsYTpufX19ZnVuY3Rpb24gQWUoZSl7cmV0dXJuIGUmJihlLmE8MjU1P2ByZ2JhKCR7ZS5yfSwgJHtlLmd9LCAke2UuYn0sICR7RChlLmEpfSlgOmByZ2IoJHtlLnJ9LCAke2UuZ30sICR7ZS5ifSlgKX12YXIgamU9ZT0+ZTw9LjAwMzEzMDg/ZSoxMi45MjplKiooMS8yLjQpKjEuMDU1LS4wNTUsTWU9ZT0+ZTw9LjA0MDQ1P2UvMTIuOTI6KChlKy4wNTUpLzEuMDU1KSoqMi40O2Z1bmN0aW9uIE5lKGUsdCxuKXtsZXQgcj1NZShEKGUucikpLGk9TWUoRChlLmcpKSxhPU1lKEQoZS5iKSk7cmV0dXJue3I6RShqZShyK24qKE1lKEQodC5yKSktcikpKSxnOkUoamUoaStuKihNZShEKHQuZykpLWkpKSksYjpFKGplKGErbiooTWUoRCh0LmIpKS1hKSkpLGE6ZS5hK24qKHQuYS1lLmEpfX1mdW5jdGlvbiBQZShlLHQsbil7aWYoZSl7bGV0IHI9bWUoZSk7clt0XT1NYXRoLm1heCgwLE1hdGgubWluKHJbdF0rclt0XSpuLHQ9PT0wPzM2MDoxKSkscj1nZShyKSxlLnI9clswXSxlLmc9clsxXSxlLmI9clsyXX19ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm4gZSYmT2JqZWN0LmFzc2lnbih0fHx7fSxlKX1mdW5jdGlvbiBJZShlKXt2YXIgdD17cjowLGc6MCxiOjAsYToyNTV9O3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubGVuZ3RoPj0zJiYodD17cjplWzBdLGc6ZVsxXSxiOmVbMl0sYToyNTV9LGUubGVuZ3RoPjMmJih0LmE9RShlWzNdKSkpOih0PUZlKGUse3I6MCxnOjAsYjowLGE6MX0pLHQuYT1FKHQuYSkpLHR9ZnVuY3Rpb24gTGUoZSl7cmV0dXJuIGUuY2hhckF0KDApPT09YHJgP2tlKGUpOmJlKGUpfXZhciBSZT1jbGFzcyBle2NvbnN0cnVjdG9yKHQpe2lmKHQgaW5zdGFuY2VvZiBlKXJldHVybiB0O2xldCBuPXR5cGVvZiB0LHI7bj09PWBvYmplY3RgP3I9SWUodCk6bj09PWBzdHJpbmdgJiYocj1vZSh0KXx8RGUodCl8fExlKHQpKSx0aGlzLl9yZ2I9cix0aGlzLl92YWxpZD0hIXJ9Z2V0IHZhbGlkKCl7cmV0dXJuIHRoaXMuX3ZhbGlkfWdldCByZ2IoKXt2YXIgZT1GZSh0aGlzLl9yZ2IpO3JldHVybiBlJiYoZS5hPUQoZS5hKSksZX1zZXQgcmdiKGUpe3RoaXMuX3JnYj1JZShlKX1yZ2JTdHJpbmcoKXtyZXR1cm4gdGhpcy5fdmFsaWQ/QWUodGhpcy5fcmdiKTp2b2lkIDB9aGV4U3RyaW5nKCl7cmV0dXJuIHRoaXMuX3ZhbGlkP2NlKHRoaXMuX3JnYik6dm9pZCAwfWhzbFN0cmluZygpe3JldHVybiB0aGlzLl92YWxpZD9TZSh0aGlzLl9yZ2IpOnZvaWQgMH1taXgoZSx0KXtpZihlKXtsZXQgbj10aGlzLnJnYixyPWUucmdiLGksYT10PT09aT8uNTp0LG89MiphLTEscz1uLmEtci5hLGM9KChvKnM9PT0tMT9vOihvK3MpLygxK28qcykpKzEpLzI7aT0xLWMsbi5yPTI1NSZjKm4ucitpKnIucisuNSxuLmc9MjU1JmMqbi5nK2kqci5nKy41LG4uYj0yNTUmYypuLmIraSpyLmIrLjUsbi5hPWEqbi5hKygxLWEpKnIuYSx0aGlzLnJnYj1ufXJldHVybiB0aGlzfWludGVycG9sYXRlKGUsdCl7cmV0dXJuIGUmJih0aGlzLl9yZ2I9TmUodGhpcy5fcmdiLGUuX3JnYix0KSksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgZSh0aGlzLnJnYil9YWxwaGEoZSl7cmV0dXJuIHRoaXMuX3JnYi5hPUUoZSksdGhpc31jbGVhcmVyKGUpe2xldCB0PXRoaXMuX3JnYjtyZXR1cm4gdC5hKj0xLWUsdGhpc31ncmV5c2NhbGUoKXtsZXQgZT10aGlzLl9yZ2I7cmV0dXJuIGUucj1lLmc9ZS5iPUMoZS5yKi4zK2UuZyouNTkrZS5iKi4xMSksdGhpc31vcGFxdWVyKGUpe2xldCB0PXRoaXMuX3JnYjtyZXR1cm4gdC5hKj0xK2UsdGhpc31uZWdhdGUoKXtsZXQgZT10aGlzLl9yZ2I7cmV0dXJuIGUucj0yNTUtZS5yLGUuZz0yNTUtZS5nLGUuYj0yNTUtZS5iLHRoaXN9bGlnaHRlbihlKXtyZXR1cm4gUGUodGhpcy5fcmdiLDIsZSksdGhpc31kYXJrZW4oZSl7cmV0dXJuIFBlKHRoaXMuX3JnYiwyLC1lKSx0aGlzfXNhdHVyYXRlKGUpe3JldHVybiBQZSh0aGlzLl9yZ2IsMSxlKSx0aGlzfWRlc2F0dXJhdGUoZSl7cmV0dXJuIFBlKHRoaXMuX3JnYiwxLC1lKSx0aGlzfXJvdGF0ZShlKXtyZXR1cm4geGUodGhpcy5fcmdiLGUpLHRoaXN9fTtmdW5jdGlvbiBrKCl7fXZhciB6ZT0oKCk9PntsZXQgZT0wO3JldHVybigpPT5lKyt9KSgpO2Z1bmN0aW9uIEEoZSl7cmV0dXJuIGU9PW51bGx9ZnVuY3Rpb24gaihlKXtpZihBcnJheS5pc0FycmF5JiZBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2xldCB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtyZXR1cm4gdC5zbGljZSgwLDcpPT09YFtvYmplY3RgJiZ0LnNsaWNlKC02KT09PWBBcnJheV1gfWZ1bmN0aW9uIE0oZSl7cmV0dXJuIGUhPT1udWxsJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk9PT1gW29iamVjdCBPYmplY3RdYH1mdW5jdGlvbiBOKGUpe3JldHVybih0eXBlb2YgZT09YG51bWJlcmB8fGUgaW5zdGFuY2VvZiBOdW1iZXIpJiZpc0Zpbml0ZSgrZSl9ZnVuY3Rpb24gUChlLHQpe3JldHVybiBOKGUpP2U6dH1mdW5jdGlvbiBGKGUsdCl7cmV0dXJuIGU9PT12b2lkIDA/dDplfXZhciBCZT0oZSx0KT0+dHlwZW9mIGU9PWBzdHJpbmdgJiZlLmVuZHNXaXRoKGAlYCk/cGFyc2VGbG9hdChlKS8xMDAqdDorZTtmdW5jdGlvbiBJKGUsdCxuKXtpZihlJiZ0eXBlb2YgZS5jYWxsPT1gZnVuY3Rpb25gKXJldHVybiBlLmFwcGx5KG4sdCl9ZnVuY3Rpb24gTChlLHQsbixyKXtsZXQgaSxhLG87aWYoaihlKSl7aWYoYT1lLmxlbmd0aCxyKWZvcihpPWEtMTtpPj0wO2ktLSl0LmNhbGwobixlW2ldLGkpO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKXQuY2FsbChuLGVbaV0saSl9ZWxzZSBpZihNKGUpKWZvcihvPU9iamVjdC5rZXlzKGUpLGE9by5sZW5ndGgsaT0wO2k8YTtpKyspdC5jYWxsKG4sZVtvW2ldXSxvW2ldKX1mdW5jdGlvbiBWZShlLHQpe2xldCBuLHIsaSxhO2lmKCFlfHwhdHx8ZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3Iobj0wLHI9ZS5sZW5ndGg7bjxyOysrbilpZihpPWVbbl0sYT10W25dLGkuZGF0YXNldEluZGV4IT09YS5kYXRhc2V0SW5kZXh8fGkuaW5kZXghPT1hLmluZGV4KXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEhlKGUpe2lmKGooZSkpcmV0dXJuIGUubWFwKEhlKTtpZihNKGUpKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpLG49T2JqZWN0LmtleXMoZSkscj1uLmxlbmd0aCxpPTA7Zm9yKDtpPHI7KytpKXRbbltpXV09SGUoZVtuW2ldXSk7cmV0dXJuIHR9cmV0dXJuIGV9ZnVuY3Rpb24gVWUoZSl7cmV0dXJuW2BfX3Byb3RvX19gLGBwcm90b3R5cGVgLGBjb25zdHJ1Y3RvcmBdLmluZGV4T2YoZSk9PT0tMX1mdW5jdGlvbiBXZShlLHQsbixyKXtpZighVWUoZSkpcmV0dXJuO2xldCBpPXRbZV0sYT1uW2VdO00oaSkmJk0oYSk/R2UoaSxhLHIpOnRbZV09SGUoYSl9ZnVuY3Rpb24gR2UoZSx0LG4pe2xldCByPWoodCk/dDpbdF0saT1yLmxlbmd0aDtpZighTShlKSlyZXR1cm4gZTtufHw9e307bGV0IGE9bi5tZXJnZXJ8fFdlLG87Zm9yKGxldCB0PTA7dDxpOysrdCl7aWYobz1yW3RdLCFNKG8pKWNvbnRpbnVlO2xldCBpPU9iamVjdC5rZXlzKG8pO2ZvcihsZXQgdD0wLHI9aS5sZW5ndGg7dDxyOysrdClhKGlbdF0sZSxvLG4pfXJldHVybiBlfWZ1bmN0aW9uIEtlKGUsdCl7cmV0dXJuIEdlKGUsdCx7bWVyZ2VyOnFlfSl9ZnVuY3Rpb24gcWUoZSx0LG4pe2lmKCFVZShlKSlyZXR1cm47bGV0IHI9dFtlXSxpPW5bZV07TShyKSYmTShpKT9LZShyLGkpOk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfHwodFtlXT1IZShpKSl9dmFyIEplPXsiIjplPT5lLHg6ZT0+ZS54LHk6ZT0+ZS55fTtmdW5jdGlvbiBZZShlKXtsZXQgdD1lLnNwbGl0KGAuYCksbj1bXSxyPWBgO2ZvcihsZXQgZSBvZiB0KXIrPWUsci5lbmRzV2l0aChgXFxgKT9yPXIuc2xpY2UoMCwtMSkrYC5gOihuLnB1c2gocikscj1gYCk7cmV0dXJuIG59ZnVuY3Rpb24gWGUoZSl7bGV0IHQ9WWUoZSk7cmV0dXJuIGU9Pntmb3IobGV0IG4gb2YgdCl7aWYobj09PWBgKWJyZWFrO2UmJj1lW25dfXJldHVybiBlfX1mdW5jdGlvbiBaZShlLHQpe3JldHVybihKZVt0XXx8KEplW3RdPVhlKHQpKSkoZSl9ZnVuY3Rpb24gUWUoZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX12YXIgJGU9ZT0+ZSE9PXZvaWQgMCxldD1lPT50eXBlb2YgZT09YGZ1bmN0aW9uYCx0dD0oZSx0KT0+e2lmKGUuc2l6ZSE9PXQuc2l6ZSlyZXR1cm4hMTtmb3IobGV0IG4gb2YgZSlpZighdC5oYXMobikpcmV0dXJuITE7cmV0dXJuITB9O2Z1bmN0aW9uIG50KGUpe3JldHVybiBlLnR5cGU9PT1gbW91c2V1cGB8fGUudHlwZT09PWBjbGlja2B8fGUudHlwZT09PWBjb250ZXh0bWVudWB9dmFyIFI9TWF0aC5QSSx6PTIqUixydD16K1IsaXQ9MS8wLGF0PVIvMTgwLEI9Ui8yLG90PVIvNCxzdD1SKjIvMyxjdD1NYXRoLmxvZzEwLGx0PU1hdGguc2lnbjtmdW5jdGlvbiB1dChlLHQsbil7cmV0dXJuIE1hdGguYWJzKGUtdCk8bn1mdW5jdGlvbiBkdChlKXtsZXQgdD1NYXRoLnJvdW5kKGUpO2U9dXQoZSx0LGUvMWUzKT90OmU7bGV0IG49MTAqKk1hdGguZmxvb3IoY3QoZSkpLHI9ZS9uO3JldHVybihyPD0xPzE6cjw9Mj8yOnI8PTU/NToxMCkqbn1mdW5jdGlvbiBmdChlKXtsZXQgdD1bXSxuPU1hdGguc3FydChlKSxyO2ZvcihyPTE7cjxuO3IrKyllJXI9PT0wJiYodC5wdXNoKHIpLHQucHVzaChlL3IpKTtyZXR1cm4gbj09PShufDApJiZ0LnB1c2gobiksdC5zb3J0KChlLHQpPT5lLXQpLnBvcCgpLHR9ZnVuY3Rpb24gcHQoZSl7cmV0dXJuIHR5cGVvZiBlPT1gc3ltYm9sYHx8dHlwZW9mIGU9PWBvYmplY3RgJiYhIWUmJiEoU3ltYm9sLnRvUHJpbWl0aXZlIGluIGV8fGB0b1N0cmluZ2BpbiBlfHxgdmFsdWVPZmBpbiBlKX1mdW5jdGlvbiBtdChlKXtyZXR1cm4hcHQoZSkmJiFpc05hTihwYXJzZUZsb2F0KGUpKSYmaXNGaW5pdGUoZSl9ZnVuY3Rpb24gaHQoZSx0KXtsZXQgbj1NYXRoLnJvdW5kKGUpO3JldHVybiBuLXQ8PWUmJm4rdD49ZX1mdW5jdGlvbiBndChlLHQsbil7bGV0IHIsaSxhO2ZvcihyPTAsaT1lLmxlbmd0aDtyPGk7cisrKWE9ZVtyXVtuXSxpc05hTihhKXx8KHQubWluPU1hdGgubWluKHQubWluLGEpLHQubWF4PU1hdGgubWF4KHQubWF4LGEpKX1mdW5jdGlvbiBfdChlKXtyZXR1cm4gUi8xODAqZX1mdW5jdGlvbiB2dChlKXtyZXR1cm4gMTgwL1IqZX1mdW5jdGlvbiB5dChlKXtpZighTihlKSlyZXR1cm47bGV0IHQ9MSxuPTA7Zm9yKDtNYXRoLnJvdW5kKGUqdCkvdCE9PWU7KXQqPTEwLG4rKztyZXR1cm4gbn1mdW5jdGlvbiBidChlLHQpe2xldCBuPXQueC1lLngscj10LnktZS55LGk9TWF0aC5zcXJ0KG4qbityKnIpLGE9TWF0aC5hdGFuMihyLG4pO3JldHVybiBhPC0uNSpSJiYoYSs9eikse2FuZ2xlOmEsZGlzdGFuY2U6aX19ZnVuY3Rpb24geHQoZSx0KXtyZXR1cm4gTWF0aC5zcXJ0KCh0LngtZS54KSoqMisodC55LWUueSkqKjIpfWZ1bmN0aW9uIFN0KGUsdCl7cmV0dXJuKGUtdCtydCklei1SfWZ1bmN0aW9uIFYoZSl7cmV0dXJuKGUleit6KSV6fWZ1bmN0aW9uIEN0KGUsdCxuLHIpe2xldCBpPVYoZSksYT1WKHQpLG89VihuKSxzPVYoYS1pKSxjPVYoby1pKSxsPVYoaS1hKSx1PVYoaS1vKTtyZXR1cm4gaT09PWF8fGk9PT1vfHxyJiZhPT09b3x8cz5jJiZsPHV9ZnVuY3Rpb24gSChlLHQsbil7cmV0dXJuIE1hdGgubWF4KHQsTWF0aC5taW4obixlKSl9ZnVuY3Rpb24gd3QoZSl7cmV0dXJuIEgoZSwtMzI3NjgsMzI3NjcpfWZ1bmN0aW9uIFR0KGUsdCxuLHI9MWUtNil7cmV0dXJuIGU+PU1hdGgubWluKHQsbiktciYmZTw9TWF0aC5tYXgodCxuKStyfWZ1bmN0aW9uIEV0KGUsdCxuKXtufHw9KG49PmVbbl08dCk7bGV0IHI9ZS5sZW5ndGgtMSxpPTAsYTtmb3IoO3ItaT4xOylhPWkrcj4+MSxuKGEpP2k9YTpyPWE7cmV0dXJue2xvOmksaGk6cn19dmFyIER0PShlLHQsbixyKT0+RXQoZSxuLHI/cj0+e2xldCBpPWVbcl1bdF07cmV0dXJuIGk8bnx8aT09PW4mJmVbcisxXVt0XT09PW59OnI9PmVbcl1bdF08biksT3Q9KGUsdCxuKT0+RXQoZSxuLHI9PmVbcl1bdF0+PW4pO2Z1bmN0aW9uIGt0KGUsdCxuKXtsZXQgcj0wLGk9ZS5sZW5ndGg7Zm9yKDtyPGkmJmVbcl08dDspcisrO2Zvcig7aT5yJiZlW2ktMV0+bjspaS0tO3JldHVybiByPjB8fGk8ZS5sZW5ndGg/ZS5zbGljZShyLGkpOmV9dmFyIEF0PVtgcHVzaGAsYHBvcGAsYHNoaWZ0YCxgc3BsaWNlYCxgdW5zaGlmdGBdO2Z1bmN0aW9uIGp0KGUsdCl7aWYoZS5fY2hhcnRqcyl7ZS5fY2hhcnRqcy5saXN0ZW5lcnMucHVzaCh0KTtyZXR1cm59T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9jaGFydGpzIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6e2xpc3RlbmVyczpbdF19fSksQXQuZm9yRWFjaCh0PT57bGV0IG49YF9vbkRhdGFgK1FlKHQpLHI9ZVt0XTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZSguLi50KXtsZXQgaT1yLmFwcGx5KHRoaXMsdCk7cmV0dXJuIGUuX2NoYXJ0anMubGlzdGVuZXJzLmZvckVhY2goZT0+e3R5cGVvZiBlW25dPT1gZnVuY3Rpb25gJiZlW25dKC4uLnQpfSksaX19KX0pfWZ1bmN0aW9uIE10KGUsdCl7bGV0IG49ZS5fY2hhcnRqcztpZighbilyZXR1cm47bGV0IHI9bi5saXN0ZW5lcnMsaT1yLmluZGV4T2YodCk7aSE9PS0xJiZyLnNwbGljZShpLDEpLCEoci5sZW5ndGg+MCkmJihBdC5mb3JFYWNoKHQ9PntkZWxldGUgZVt0XX0pLGRlbGV0ZSBlLl9jaGFydGpzKX1mdW5jdGlvbiBOdChlKXtsZXQgdD1uZXcgU2V0KGUpO3JldHVybiB0LnNpemU9PT1lLmxlbmd0aD9lOkFycmF5LmZyb20odCl9dmFyIFB0PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c+YHVgP2Z1bmN0aW9uKGUpe3JldHVybiBlKCl9OndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV9KCk7ZnVuY3Rpb24gRnQoZSx0KXtsZXQgbj1bXSxyPSExO3JldHVybiBmdW5jdGlvbiguLi5pKXtuPWkscnx8KHI9ITAsUHQuY2FsbCh3aW5kb3csKCk9PntyPSExLGUuYXBwbHkodCxuKX0pKX19ZnVuY3Rpb24gSXQoZSx0KXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oLi4ucil7cmV0dXJuIHQ/KGNsZWFyVGltZW91dChuKSxuPXNldFRpbWVvdXQoZSx0LHIpKTplLmFwcGx5KHRoaXMsciksdH19dmFyIEx0PWU9PmU9PT1gc3RhcnRgP2BsZWZ0YDplPT09YGVuZGA/YHJpZ2h0YDpgY2VudGVyYCxVPShlLHQsbik9PmU9PT1gc3RhcnRgP3Q6ZT09PWBlbmRgP246KHQrbikvMixSdD0oZSx0LG4scik9PmU9PT0ocj9gbGVmdGA6YHJpZ2h0YCk/bjplPT09YGNlbnRlcmA/KHQrbikvMjp0O2Z1bmN0aW9uIHp0KGUsdCxuKXtsZXQgcj10Lmxlbmd0aCxpPTAsYT1yO2lmKGUuX3NvcnRlZCl7bGV0e2lTY2FsZTpvLHZTY2FsZTpzLF9wYXJzZWQ6Y309ZSxsPWUuZGF0YXNldCYmZS5kYXRhc2V0Lm9wdGlvbnM/ZS5kYXRhc2V0Lm9wdGlvbnMuc3BhbkdhcHM6bnVsbCx1PW8uYXhpcyx7bWluOmQsbWF4OmYsbWluRGVmaW5lZDpwLG1heERlZmluZWQ6bX09by5nZXRVc2VyQm91bmRzKCk7aWYocCl7aWYoaT1NYXRoLm1pbihEdChjLHUsZCkubG8sbj9yOkR0KHQsdSxvLmdldFBpeGVsRm9yVmFsdWUoZCkpLmxvKSxsKXtsZXQgZT1jLnNsaWNlKDAsaSsxKS5yZXZlcnNlKCkuZmluZEluZGV4KGU9PiFBKGVbcy5heGlzXSkpO2ktPU1hdGgubWF4KDAsZSl9aT1IKGksMCxyLTEpfWlmKG0pe2xldCBlPU1hdGgubWF4KER0KGMsby5heGlzLGYsITApLmhpKzEsbj8wOkR0KHQsdSxvLmdldFBpeGVsRm9yVmFsdWUoZiksITApLmhpKzEpO2lmKGwpe2xldCB0PWMuc2xpY2UoZS0xKS5maW5kSW5kZXgoZT0+IUEoZVtzLmF4aXNdKSk7ZSs9TWF0aC5tYXgoMCx0KX1hPUgoZSxpLHIpLWl9ZWxzZSBhPXItaX1yZXR1cm57c3RhcnQ6aSxjb3VudDphfX1mdW5jdGlvbiBCdChlKXtsZXR7eFNjYWxlOnQseVNjYWxlOm4sX3NjYWxlUmFuZ2VzOnJ9PWUsaT17eG1pbjp0Lm1pbix4bWF4OnQubWF4LHltaW46bi5taW4seW1heDpuLm1heH07aWYoIXIpcmV0dXJuIGUuX3NjYWxlUmFuZ2VzPWksITA7bGV0IGE9ci54bWluIT09dC5taW58fHIueG1heCE9PXQubWF4fHxyLnltaW4hPT1uLm1pbnx8ci55bWF4IT09bi5tYXg7cmV0dXJuIE9iamVjdC5hc3NpZ24ocixpKSxhfXZhciBWdD1lPT5lPT09MHx8ZT09PTEsSHQ9KGUsdCxuKT0+LSgyKiooMTAqLS1lKSpNYXRoLnNpbigoZS10KSp6L24pKSxVdD0oZSx0LG4pPT4yKiooLTEwKmUpKk1hdGguc2luKChlLXQpKnovbikrMSxXdD17bGluZWFyOmU9PmUsZWFzZUluUXVhZDplPT5lKmUsZWFzZU91dFF1YWQ6ZT0+LWUqKGUtMiksZWFzZUluT3V0UXVhZDplPT4oZS89LjUpPDE/LjUqZSplOi0uNSooLS1lKihlLTIpLTEpLGVhc2VJbkN1YmljOmU9PmUqZSplLGVhc2VPdXRDdWJpYzplPT4tLWUqZSplKzEsZWFzZUluT3V0Q3ViaWM6ZT0+KGUvPS41KTwxPy41KmUqZSplOi41KigoZS09MikqZSplKzIpLGVhc2VJblF1YXJ0OmU9PmUqZSplKmUsZWFzZU91dFF1YXJ0OmU9Pi0oLS1lKmUqZSplLTEpLGVhc2VJbk91dFF1YXJ0OmU9PihlLz0uNSk8MT8uNSplKmUqZSplOi0uNSooKGUtPTIpKmUqZSplLTIpLGVhc2VJblF1aW50OmU9PmUqZSplKmUqZSxlYXNlT3V0UXVpbnQ6ZT0+LS1lKmUqZSplKmUrMSxlYXNlSW5PdXRRdWludDplPT4oZS89LjUpPDE/LjUqZSplKmUqZSplOi41KigoZS09MikqZSplKmUqZSsyKSxlYXNlSW5TaW5lOmU9Pi1NYXRoLmNvcyhlKkIpKzEsZWFzZU91dFNpbmU6ZT0+TWF0aC5zaW4oZSpCKSxlYXNlSW5PdXRTaW5lOmU9Pi0uNSooTWF0aC5jb3MoUiplKS0xKSxlYXNlSW5FeHBvOmU9PmU9PT0wPzA6MioqKDEwKihlLTEpKSxlYXNlT3V0RXhwbzplPT5lPT09MT8xOi0oMioqKC0xMCplKSkrMSxlYXNlSW5PdXRFeHBvOmU9PlZ0KGUpP2U6ZTwuNT8uNSoyKiooMTAqKGUqMi0xKSk6LjUqKC0oMioqKC0xMCooZSoyLTEpKSkrMiksZWFzZUluQ2lyYzplPT5lPj0xP2U6LShNYXRoLnNxcnQoMS1lKmUpLTEpLGVhc2VPdXRDaXJjOmU9Pk1hdGguc3FydCgxLSAtLWUqZSksZWFzZUluT3V0Q2lyYzplPT4oZS89LjUpPDE/LS41KihNYXRoLnNxcnQoMS1lKmUpLTEpOi41KihNYXRoLnNxcnQoMS0oZS09MikqZSkrMSksZWFzZUluRWxhc3RpYzplPT5WdChlKT9lOkh0KGUsLjA3NSwuMyksZWFzZU91dEVsYXN0aWM6ZT0+VnQoZSk/ZTpVdChlLC4wNzUsLjMpLGVhc2VJbk91dEVsYXN0aWMoZSl7bGV0IHQ9LjExMjUsbj0uNDU7cmV0dXJuIFZ0KGUpP2U6ZTwuNT8uNSpIdChlKjIsdCxuKTouNSsuNSpVdChlKjItMSx0LG4pfSxlYXNlSW5CYWNrKGUpe3JldHVybiBlKmUqKDIuNzAxNTgqZS0xLjcwMTU4KX0sZWFzZU91dEJhY2soZSl7cmV0dXJuLS1lKmUqKDIuNzAxNTgqZSsxLjcwMTU4KSsxfSxlYXNlSW5PdXRCYWNrKGUpe2xldCB0PTEuNzAxNTg7cmV0dXJuKGUvPS41KTwxPy41KihlKmUqKCgodCo9MS41MjUpKzEpKmUtdCkpOi41KigoZS09MikqZSooKCh0Kj0xLjUyNSkrMSkqZSt0KSsyKX0sZWFzZUluQm91bmNlOmU9PjEtV3QuZWFzZU91dEJvdW5jZSgxLWUpLGVhc2VPdXRCb3VuY2UoZSl7bGV0IHQ9Ny41NjI1LG49Mi43NTtyZXR1cm4gZTwxL24/dCplKmU6ZTwyL24/dCooZS09MS41L24pKmUrLjc1OmU8Mi41L24/dCooZS09Mi4yNS9uKSplKy45Mzc1OnQqKGUtPTIuNjI1L24pKmUrLjk4NDM3NX0sZWFzZUluT3V0Qm91bmNlOmU9PmU8LjU/V3QuZWFzZUluQm91bmNlKGUqMikqLjU6V3QuZWFzZU91dEJvdW5jZShlKjItMSkqLjUrLjV9O2Z1bmN0aW9uIEd0KGUpe2lmKGUmJnR5cGVvZiBlPT1gb2JqZWN0YCl7bGV0IHQ9ZS50b1N0cmluZygpO3JldHVybiB0PT09YFtvYmplY3QgQ2FudmFzUGF0dGVybl1gfHx0PT09YFtvYmplY3QgQ2FudmFzR3JhZGllbnRdYH1yZXR1cm4hMX1mdW5jdGlvbiBLdChlKXtyZXR1cm4gR3QoZSk/ZTpuZXcgUmUoZSl9ZnVuY3Rpb24gcXQoZSl7cmV0dXJuIEd0KGUpP2U6bmV3IFJlKGUpLnNhdHVyYXRlKC41KS5kYXJrZW4oLjEpLmhleFN0cmluZygpfXZhciBKdD1bYHhgLGB5YCxgYm9yZGVyV2lkdGhgLGByYWRpdXNgLGB0ZW5zaW9uYF0sWXQ9W2Bjb2xvcmAsYGJvcmRlckNvbG9yYCxgYmFja2dyb3VuZENvbG9yYF07ZnVuY3Rpb24gWHQoZSl7ZS5zZXQoYGFuaW1hdGlvbmAse2RlbGF5OnZvaWQgMCxkdXJhdGlvbjoxZTMsZWFzaW5nOmBlYXNlT3V0UXVhcnRgLGZuOnZvaWQgMCxmcm9tOnZvaWQgMCxsb29wOnZvaWQgMCx0bzp2b2lkIDAsdHlwZTp2b2lkIDB9KSxlLmRlc2NyaWJlKGBhbmltYXRpb25gLHtfZmFsbGJhY2s6ITEsX2luZGV4YWJsZTohMSxfc2NyaXB0YWJsZTplPT5lIT09YG9uUHJvZ3Jlc3NgJiZlIT09YG9uQ29tcGxldGVgJiZlIT09YGZuYH0pLGUuc2V0KGBhbmltYXRpb25zYCx7Y29sb3JzOnt0eXBlOmBjb2xvcmAscHJvcGVydGllczpZdH0sbnVtYmVyczp7dHlwZTpgbnVtYmVyYCxwcm9wZXJ0aWVzOkp0fX0pLGUuZGVzY3JpYmUoYGFuaW1hdGlvbnNgLHtfZmFsbGJhY2s6YGFuaW1hdGlvbmB9KSxlLnNldChgdHJhbnNpdGlvbnNgLHthY3RpdmU6e2FuaW1hdGlvbjp7ZHVyYXRpb246NDAwfX0scmVzaXplOnthbmltYXRpb246e2R1cmF0aW9uOjB9fSxzaG93OnthbmltYXRpb25zOntjb2xvcnM6e2Zyb206YHRyYW5zcGFyZW50YH0sdmlzaWJsZTp7dHlwZTpgYm9vbGVhbmAsZHVyYXRpb246MH19fSxoaWRlOnthbmltYXRpb25zOntjb2xvcnM6e3RvOmB0cmFuc3BhcmVudGB9LHZpc2libGU6e3R5cGU6YGJvb2xlYW5gLGVhc2luZzpgbGluZWFyYCxmbjplPT5lfDB9fX19KX1mdW5jdGlvbiBadChlKXtlLnNldChgbGF5b3V0YCx7YXV0b1BhZGRpbmc6ITAscGFkZGluZzp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9fSl9dmFyIFF0PW5ldyBNYXA7ZnVuY3Rpb24gJHQoZSx0KXt0fHw9e307bGV0IG49ZStKU09OLnN0cmluZ2lmeSh0KSxyPVF0LmdldChuKTtyZXR1cm4gcnx8KHI9bmV3IEludGwuTnVtYmVyRm9ybWF0KGUsdCksUXQuc2V0KG4scikpLHJ9ZnVuY3Rpb24gZW4oZSx0LG4pe3JldHVybiAkdCh0LG4pLmZvcm1hdChlKX12YXIgdG49e3ZhbHVlcyhlKXtyZXR1cm4gaihlKT9lOmBgK2V9LG51bWVyaWMoZSx0LG4pe2lmKGU9PT0wKXJldHVybmAwYDtsZXQgcj10aGlzLmNoYXJ0Lm9wdGlvbnMubG9jYWxlLGksYT1lO2lmKG4ubGVuZ3RoPjEpe2xldCB0PU1hdGgubWF4KE1hdGguYWJzKG5bMF0udmFsdWUpLE1hdGguYWJzKG5bbi5sZW5ndGgtMV0udmFsdWUpKTsodDwxZS00fHx0PjB4MzhkN2VhNGM2ODAwMCkmJihpPWBzY2llbnRpZmljYCksYT1ubihlLG4pfWxldCBvPWN0KE1hdGguYWJzKGEpKSxzPWlzTmFOKG8pPzE6TWF0aC5tYXgoTWF0aC5taW4oLTEqTWF0aC5mbG9vcihvKSwyMCksMCksYz17bm90YXRpb246aSxtaW5pbXVtRnJhY3Rpb25EaWdpdHM6cyxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6c307cmV0dXJuIE9iamVjdC5hc3NpZ24oYyx0aGlzLm9wdGlvbnMudGlja3MuZm9ybWF0KSxlbihlLHIsYyl9LGxvZ2FyaXRobWljKGUsdCxuKXtpZihlPT09MClyZXR1cm5gMGA7bGV0IHI9blt0XS5zaWduaWZpY2FuZHx8ZS8xMCoqTWF0aC5mbG9vcihjdChlKSk7cmV0dXJuWzEsMiwzLDUsMTAsMTVdLmluY2x1ZGVzKHIpfHx0Pi44Km4ubGVuZ3RoP3RuLm51bWVyaWMuY2FsbCh0aGlzLGUsdCxuKTpgYH19O2Z1bmN0aW9uIG5uKGUsdCl7bGV0IG49dC5sZW5ndGg+Mz90WzJdLnZhbHVlLXRbMV0udmFsdWU6dFsxXS52YWx1ZS10WzBdLnZhbHVlO3JldHVybiBNYXRoLmFicyhuKT49MSYmZSE9PU1hdGguZmxvb3IoZSkmJihuPWUtTWF0aC5mbG9vcihlKSksbn12YXIgcm49e2Zvcm1hdHRlcnM6dG59O2Z1bmN0aW9uIGFuKGUpe2Uuc2V0KGBzY2FsZWAse2Rpc3BsYXk6ITAsb2Zmc2V0OiExLHJldmVyc2U6ITEsYmVnaW5BdFplcm86ITEsYm91bmRzOmB0aWNrc2AsY2xpcDohMCxncmFjZTowLGdyaWQ6e2Rpc3BsYXk6ITAsbGluZVdpZHRoOjEsZHJhd09uQ2hhcnRBcmVhOiEwLGRyYXdUaWNrczohMCx0aWNrTGVuZ3RoOjgsdGlja1dpZHRoOihlLHQpPT50LmxpbmVXaWR0aCx0aWNrQ29sb3I6KGUsdCk9PnQuY29sb3Isb2Zmc2V0OiExfSxib3JkZXI6e2Rpc3BsYXk6ITAsZGFzaDpbXSxkYXNoT2Zmc2V0OjAsd2lkdGg6MX0sdGl0bGU6e2Rpc3BsYXk6ITEsdGV4dDpgYCxwYWRkaW5nOnt0b3A6NCxib3R0b206NH19LHRpY2tzOnttaW5Sb3RhdGlvbjowLG1heFJvdGF0aW9uOjUwLG1pcnJvcjohMSx0ZXh0U3Ryb2tlV2lkdGg6MCx0ZXh0U3Ryb2tlQ29sb3I6YGAscGFkZGluZzozLGRpc3BsYXk6ITAsYXV0b1NraXA6ITAsYXV0b1NraXBQYWRkaW5nOjMsbGFiZWxPZmZzZXQ6MCxjYWxsYmFjazpybi5mb3JtYXR0ZXJzLnZhbHVlcyxtaW5vcjp7fSxtYWpvcjp7fSxhbGlnbjpgY2VudGVyYCxjcm9zc0FsaWduOmBuZWFyYCxzaG93TGFiZWxCYWNrZHJvcDohMSxiYWNrZHJvcENvbG9yOmByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpYCxiYWNrZHJvcFBhZGRpbmc6Mn19KSxlLnJvdXRlKGBzY2FsZS50aWNrc2AsYGNvbG9yYCxgYCxgY29sb3JgKSxlLnJvdXRlKGBzY2FsZS5ncmlkYCxgY29sb3JgLGBgLGBib3JkZXJDb2xvcmApLGUucm91dGUoYHNjYWxlLmJvcmRlcmAsYGNvbG9yYCxgYCxgYm9yZGVyQ29sb3JgKSxlLnJvdXRlKGBzY2FsZS50aXRsZWAsYGNvbG9yYCxgYCxgY29sb3JgKSxlLmRlc2NyaWJlKGBzY2FsZWAse19mYWxsYmFjazohMSxfc2NyaXB0YWJsZTplPT4hZS5zdGFydHNXaXRoKGBiZWZvcmVgKSYmIWUuc3RhcnRzV2l0aChgYWZ0ZXJgKSYmZSE9PWBjYWxsYmFja2AmJmUhPT1gcGFyc2VyYCxfaW5kZXhhYmxlOmU9PmUhPT1gYm9yZGVyRGFzaGAmJmUhPT1gdGlja0JvcmRlckRhc2hgJiZlIT09YGRhc2hgfSksZS5kZXNjcmliZShgc2NhbGVzYCx7X2ZhbGxiYWNrOmBzY2FsZWB9KSxlLmRlc2NyaWJlKGBzY2FsZS50aWNrc2Ase19zY3JpcHRhYmxlOmU9PmUhPT1gYmFja2Ryb3BQYWRkaW5nYCYmZSE9PWBjYWxsYmFja2AsX2luZGV4YWJsZTplPT5lIT09YGJhY2tkcm9wUGFkZGluZ2B9KX12YXIgb249T2JqZWN0LmNyZWF0ZShudWxsKSxzbj1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGNuKGUsdCl7aWYoIXQpcmV0dXJuIGU7bGV0IG49dC5zcGxpdChgLmApO2ZvcihsZXQgdD0wLHI9bi5sZW5ndGg7dDxyOysrdCl7bGV0IHI9blt0XTtlPWVbcl18fChlW3JdPU9iamVjdC5jcmVhdGUobnVsbCkpfXJldHVybiBlfWZ1bmN0aW9uIGxuKGUsdCxuKXtyZXR1cm4gdHlwZW9mIHQ9PWBzdHJpbmdgP0dlKGNuKGUsdCksbik6R2UoY24oZSxgYCksdCl9dmFyIFc9bmV3IGNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5hbmltYXRpb249dm9pZCAwLHRoaXMuYmFja2dyb3VuZENvbG9yPWByZ2JhKDAsMCwwLDAuMSlgLHRoaXMuYm9yZGVyQ29sb3I9YHJnYmEoMCwwLDAsMC4xKWAsdGhpcy5jb2xvcj1gIzY2NmAsdGhpcy5kYXRhc2V0cz17fSx0aGlzLmRldmljZVBpeGVsUmF0aW89ZT0+ZS5jaGFydC5wbGF0Zm9ybS5nZXREZXZpY2VQaXhlbFJhdGlvKCksdGhpcy5lbGVtZW50cz17fSx0aGlzLmV2ZW50cz1bYG1vdXNlbW92ZWAsYG1vdXNlb3V0YCxgY2xpY2tgLGB0b3VjaHN0YXJ0YCxgdG91Y2htb3ZlYF0sdGhpcy5mb250PXtmYW1pbHk6YCdIZWx2ZXRpY2EgTmV1ZScsICdIZWx2ZXRpY2EnLCAnQXJpYWwnLCBzYW5zLXNlcmlmYCxzaXplOjEyLHN0eWxlOmBub3JtYWxgLGxpbmVIZWlnaHQ6MS4yLHdlaWdodDpudWxsfSx0aGlzLmhvdmVyPXt9LHRoaXMuaG92ZXJCYWNrZ3JvdW5kQ29sb3I9KGUsdCk9PnF0KHQuYmFja2dyb3VuZENvbG9yKSx0aGlzLmhvdmVyQm9yZGVyQ29sb3I9KGUsdCk9PnF0KHQuYm9yZGVyQ29sb3IpLHRoaXMuaG92ZXJDb2xvcj0oZSx0KT0+cXQodC5jb2xvciksdGhpcy5pbmRleEF4aXM9YHhgLHRoaXMuaW50ZXJhY3Rpb249e21vZGU6YG5lYXJlc3RgLGludGVyc2VjdDohMCxpbmNsdWRlSW52aXNpYmxlOiExfSx0aGlzLm1haW50YWluQXNwZWN0UmF0aW89ITAsdGhpcy5vbkhvdmVyPW51bGwsdGhpcy5vbkNsaWNrPW51bGwsdGhpcy5wYXJzaW5nPSEwLHRoaXMucGx1Z2lucz17fSx0aGlzLnJlc3BvbnNpdmU9ITAsdGhpcy5zY2FsZT12b2lkIDAsdGhpcy5zY2FsZXM9e30sdGhpcy5zaG93TGluZT0hMCx0aGlzLmRyYXdBY3RpdmVFbGVtZW50c09uVG9wPSEwLHRoaXMuZGVzY3JpYmUoZSksdGhpcy5hcHBseSh0KX1zZXQoZSx0KXtyZXR1cm4gbG4odGhpcyxlLHQpfWdldChlKXtyZXR1cm4gY24odGhpcyxlKX1kZXNjcmliZShlLHQpe3JldHVybiBsbihzbixlLHQpfW92ZXJyaWRlKGUsdCl7cmV0dXJuIGxuKG9uLGUsdCl9cm91dGUoZSx0LG4scil7bGV0IGk9Y24odGhpcyxlKSxhPWNuKHRoaXMsbiksbz1gX2ArdDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLHtbb106e3ZhbHVlOmlbdF0sd3JpdGFibGU6ITB9LFt0XTp7ZW51bWVyYWJsZTohMCxnZXQoKXtsZXQgZT10aGlzW29dLHQ9YVtyXTtyZXR1cm4gTShlKT9PYmplY3QuYXNzaWduKHt9LHQsZSk6RihlLHQpfSxzZXQoZSl7dGhpc1tvXT1lfX19KX1hcHBseShlKXtlLmZvckVhY2goZT0+ZSh0aGlzKSl9fSh7X3NjcmlwdGFibGU6ZT0+IWUuc3RhcnRzV2l0aChgb25gKSxfaW5kZXhhYmxlOmU9PmUhPT1gZXZlbnRzYCxob3Zlcjp7X2ZhbGxiYWNrOmBpbnRlcmFjdGlvbmB9LGludGVyYWN0aW9uOntfc2NyaXB0YWJsZTohMSxfaW5kZXhhYmxlOiExfX0sW1h0LFp0LGFuXSk7ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIWV8fEEoZS5zaXplKXx8QShlLmZhbWlseSk/bnVsbDooZS5zdHlsZT9lLnN0eWxlK2AgYDpgYCkrKGUud2VpZ2h0P2Uud2VpZ2h0K2AgYDpgYCkrZS5zaXplK2BweCBgK2UuZmFtaWx5fWZ1bmN0aW9uIGRuKGUsdCxuLHIsaSl7bGV0IGE9dFtpXTtyZXR1cm4gYXx8KGE9dFtpXT1lLm1lYXN1cmVUZXh0KGkpLndpZHRoLG4ucHVzaChpKSksYT5yJiYocj1hKSxyfWZ1bmN0aW9uIGZuKGUsdCxuLHIpe3J8fD17fTtsZXQgaT1yLmRhdGE9ci5kYXRhfHx7fSxhPXIuZ2FyYmFnZUNvbGxlY3Q9ci5nYXJiYWdlQ29sbGVjdHx8W107ci5mb250IT09dCYmKGk9ci5kYXRhPXt9LGE9ci5nYXJiYWdlQ29sbGVjdD1bXSxyLmZvbnQ9dCksZS5zYXZlKCksZS5mb250PXQ7bGV0IG89MCxzPW4ubGVuZ3RoLGMsbCx1LGQsZjtmb3IoYz0wO2M8cztjKyspaWYoZD1uW2NdLGQhPW51bGwmJiFqKGQpKW89ZG4oZSxpLGEsbyxkKTtlbHNlIGlmKGooZCkpZm9yKGw9MCx1PWQubGVuZ3RoO2w8dTtsKyspZj1kW2xdLGYhPW51bGwmJiFqKGYpJiYobz1kbihlLGksYSxvLGYpKTtlLnJlc3RvcmUoKTtsZXQgcD1hLmxlbmd0aC8yO2lmKHA+bi5sZW5ndGgpe2ZvcihjPTA7YzxwO2MrKylkZWxldGUgaVthW2NdXTthLnNwbGljZSgwLHApfXJldHVybiBvfWZ1bmN0aW9uIHBuKGUsdCxuKXtsZXQgcj1lLmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvLGk9bj09PTA/MDpNYXRoLm1heChuLzIsLjUpO3JldHVybiBNYXRoLnJvdW5kKCh0LWkpKnIpL3IraX1mdW5jdGlvbiBtbihlLHQpeyF0JiYhZXx8KHR8fD1lLmdldENvbnRleHQoYDJkYCksdC5zYXZlKCksdC5yZXNldFRyYW5zZm9ybSgpLHQuY2xlYXJSZWN0KDAsMCxlLndpZHRoLGUuaGVpZ2h0KSx0LnJlc3RvcmUoKSl9ZnVuY3Rpb24gaG4oZSx0LG4scil7Z24oZSx0LG4scixudWxsKX1mdW5jdGlvbiBnbihlLHQsbixyLGkpe2xldCBhLG8scyxjLGwsdSxkLGYscD10LnBvaW50U3R5bGUsbT10LnJvdGF0aW9uLGg9dC5yYWRpdXMsZz0obXx8MCkqYXQ7aWYocCYmdHlwZW9mIHA9PWBvYmplY3RgJiYoYT1wLnRvU3RyaW5nKCksYT09PWBbb2JqZWN0IEhUTUxJbWFnZUVsZW1lbnRdYHx8YT09PWBbb2JqZWN0IEhUTUxDYW52YXNFbGVtZW50XWApKXtlLnNhdmUoKSxlLnRyYW5zbGF0ZShuLHIpLGUucm90YXRlKGcpLGUuZHJhd0ltYWdlKHAsLXAud2lkdGgvMiwtcC5oZWlnaHQvMixwLndpZHRoLHAuaGVpZ2h0KSxlLnJlc3RvcmUoKTtyZXR1cm59aWYoIShpc05hTihoKXx8aDw9MCkpe3N3aXRjaChlLmJlZ2luUGF0aCgpLHApe2RlZmF1bHQ6aT9lLmVsbGlwc2UobixyLGkvMixoLDAsMCx6KTplLmFyYyhuLHIsaCwwLHopLGUuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZWB0cmlhbmdsZWA6dT1pP2kvMjpoLGUubW92ZVRvKG4rTWF0aC5zaW4oZykqdSxyLU1hdGguY29zKGcpKmgpLGcrPXN0LGUubGluZVRvKG4rTWF0aC5zaW4oZykqdSxyLU1hdGguY29zKGcpKmgpLGcrPXN0LGUubGluZVRvKG4rTWF0aC5zaW4oZykqdSxyLU1hdGguY29zKGcpKmgpLGUuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZWByZWN0Um91bmRlZGA6bD1oKi41MTYsYz1oLWwsbz1NYXRoLmNvcyhnK290KSpjLGQ9TWF0aC5jb3MoZytvdCkqKGk/aS8yLWw6Yykscz1NYXRoLnNpbihnK290KSpjLGY9TWF0aC5zaW4oZytvdCkqKGk/aS8yLWw6YyksZS5hcmMobi1kLHItcyxsLGctUixnLUIpLGUuYXJjKG4rZixyLW8sbCxnLUIsZyksZS5hcmMobitkLHIrcyxsLGcsZytCKSxlLmFyYyhuLWYscitvLGwsZytCLGcrUiksZS5jbG9zZVBhdGgoKTticmVhaztjYXNlYHJlY3RgOmlmKCFtKXtjPU1hdGguU1FSVDFfMipoLHU9aT9pLzI6YyxlLnJlY3Qobi11LHItYywyKnUsMipjKTticmVha31nKz1vdDtjYXNlYHJlY3RSb3RgOmQ9TWF0aC5jb3MoZykqKGk/aS8yOmgpLG89TWF0aC5jb3MoZykqaCxzPU1hdGguc2luKGcpKmgsZj1NYXRoLnNpbihnKSooaT9pLzI6aCksZS5tb3ZlVG8obi1kLHItcyksZS5saW5lVG8obitmLHItbyksZS5saW5lVG8obitkLHIrcyksZS5saW5lVG8obi1mLHIrbyksZS5jbG9zZVBhdGgoKTticmVhaztjYXNlYGNyb3NzUm90YDpnKz1vdDtjYXNlYGNyb3NzYDpkPU1hdGguY29zKGcpKihpP2kvMjpoKSxvPU1hdGguY29zKGcpKmgscz1NYXRoLnNpbihnKSpoLGY9TWF0aC5zaW4oZykqKGk/aS8yOmgpLGUubW92ZVRvKG4tZCxyLXMpLGUubGluZVRvKG4rZCxyK3MpLGUubW92ZVRvKG4rZixyLW8pLGUubGluZVRvKG4tZixyK28pO2JyZWFrO2Nhc2Vgc3RhcmA6ZD1NYXRoLmNvcyhnKSooaT9pLzI6aCksbz1NYXRoLmNvcyhnKSpoLHM9TWF0aC5zaW4oZykqaCxmPU1hdGguc2luKGcpKihpP2kvMjpoKSxlLm1vdmVUbyhuLWQsci1zKSxlLmxpbmVUbyhuK2QscitzKSxlLm1vdmVUbyhuK2Ysci1vKSxlLmxpbmVUbyhuLWYscitvKSxnKz1vdCxkPU1hdGguY29zKGcpKihpP2kvMjpoKSxvPU1hdGguY29zKGcpKmgscz1NYXRoLnNpbihnKSpoLGY9TWF0aC5zaW4oZykqKGk/aS8yOmgpLGUubW92ZVRvKG4tZCxyLXMpLGUubGluZVRvKG4rZCxyK3MpLGUubW92ZVRvKG4rZixyLW8pLGUubGluZVRvKG4tZixyK28pO2JyZWFrO2Nhc2VgbGluZWA6bz1pP2kvMjpNYXRoLmNvcyhnKSpoLHM9TWF0aC5zaW4oZykqaCxlLm1vdmVUbyhuLW8sci1zKSxlLmxpbmVUbyhuK28scitzKTticmVhaztjYXNlYGRhc2hgOmUubW92ZVRvKG4sciksZS5saW5lVG8obitNYXRoLmNvcyhnKSooaT9pLzI6aCkscitNYXRoLnNpbihnKSpoKTticmVhaztjYXNlITE6ZS5jbG9zZVBhdGgoKX1lLmZpbGwoKSx0LmJvcmRlcldpZHRoPjAmJmUuc3Ryb2tlKCl9fWZ1bmN0aW9uIEcoZSx0LG4pe3JldHVybiBufHw9LjUsIXR8fGUmJmUueD50LmxlZnQtbiYmZS54PHQucmlnaHQrbiYmZS55PnQudG9wLW4mJmUueTx0LmJvdHRvbStufWZ1bmN0aW9uIF9uKGUsdCl7ZS5zYXZlKCksZS5iZWdpblBhdGgoKSxlLnJlY3QodC5sZWZ0LHQudG9wLHQucmlnaHQtdC5sZWZ0LHQuYm90dG9tLXQudG9wKSxlLmNsaXAoKX1mdW5jdGlvbiB2bihlKXtlLnJlc3RvcmUoKX1mdW5jdGlvbiB5bihlLHQsbixyLGkpe2lmKCF0KXJldHVybiBlLmxpbmVUbyhuLngsbi55KTtpZihpPT09YG1pZGRsZWApe2xldCByPSh0Lngrbi54KS8yO2UubGluZVRvKHIsdC55KSxlLmxpbmVUbyhyLG4ueSl9ZWxzZSBpPT09YGFmdGVyYD09ISFyP2UubGluZVRvKG4ueCx0LnkpOmUubGluZVRvKHQueCxuLnkpO2UubGluZVRvKG4ueCxuLnkpfWZ1bmN0aW9uIGJuKGUsdCxuLHIpe2lmKCF0KXJldHVybiBlLmxpbmVUbyhuLngsbi55KTtlLmJlemllckN1cnZlVG8ocj90LmNwMXg6dC5jcDJ4LHI/dC5jcDF5OnQuY3AyeSxyP24uY3AyeDpuLmNwMXgscj9uLmNwMnk6bi5jcDF5LG4ueCxuLnkpfWZ1bmN0aW9uIHhuKGUsdCl7dC50cmFuc2xhdGlvbiYmZS50cmFuc2xhdGUodC50cmFuc2xhdGlvblswXSx0LnRyYW5zbGF0aW9uWzFdKSxBKHQucm90YXRpb24pfHxlLnJvdGF0ZSh0LnJvdGF0aW9uKSx0LmNvbG9yJiYoZS5maWxsU3R5bGU9dC5jb2xvciksdC50ZXh0QWxpZ24mJihlLnRleHRBbGlnbj10LnRleHRBbGlnbiksdC50ZXh0QmFzZWxpbmUmJihlLnRleHRCYXNlbGluZT10LnRleHRCYXNlbGluZSl9ZnVuY3Rpb24gU24oZSx0LG4scixpKXtpZihpLnN0cmlrZXRocm91Z2h8fGkudW5kZXJsaW5lKXtsZXQgYT1lLm1lYXN1cmVUZXh0KHIpLG89dC1hLmFjdHVhbEJvdW5kaW5nQm94TGVmdCxzPXQrYS5hY3R1YWxCb3VuZGluZ0JveFJpZ2h0LGM9bi1hLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50LGw9bithLmFjdHVhbEJvdW5kaW5nQm94RGVzY2VudCx1PWkuc3RyaWtldGhyb3VnaD8oYytsKS8yOmw7ZS5zdHJva2VTdHlsZT1lLmZpbGxTdHlsZSxlLmJlZ2luUGF0aCgpLGUubGluZVdpZHRoPWkuZGVjb3JhdGlvbldpZHRofHwyLGUubW92ZVRvKG8sdSksZS5saW5lVG8ocyx1KSxlLnN0cm9rZSgpfX1mdW5jdGlvbiBDbihlLHQpe2xldCBuPWUuZmlsbFN0eWxlO2UuZmlsbFN0eWxlPXQuY29sb3IsZS5maWxsUmVjdCh0LmxlZnQsdC50b3AsdC53aWR0aCx0LmhlaWdodCksZS5maWxsU3R5bGU9bn1mdW5jdGlvbiB3bihlLHQsbixyLGksYT17fSl7bGV0IG89aih0KT90Olt0XSxzPWEuc3Ryb2tlV2lkdGg+MCYmYS5zdHJva2VDb2xvciE9PWBgLGMsbDtmb3IoZS5zYXZlKCksZS5mb250PWkuc3RyaW5nLHhuKGUsYSksYz0wO2M8by5sZW5ndGg7KytjKWw9b1tjXSxhLmJhY2tkcm9wJiZDbihlLGEuYmFja2Ryb3ApLHMmJihhLnN0cm9rZUNvbG9yJiYoZS5zdHJva2VTdHlsZT1hLnN0cm9rZUNvbG9yKSxBKGEuc3Ryb2tlV2lkdGgpfHwoZS5saW5lV2lkdGg9YS5zdHJva2VXaWR0aCksZS5zdHJva2VUZXh0KGwsbixyLGEubWF4V2lkdGgpKSxlLmZpbGxUZXh0KGwsbixyLGEubWF4V2lkdGgpLFNuKGUsbixyLGwsYSkscis9TnVtYmVyKGkubGluZUhlaWdodCk7ZS5yZXN0b3JlKCl9ZnVuY3Rpb24gVG4oZSx0KXtsZXR7eDpuLHk6cix3OmksaDphLHJhZGl1czpvfT10O2UuYXJjKG4rby50b3BMZWZ0LHIrby50b3BMZWZ0LG8udG9wTGVmdCwxLjUqUixSLCEwKSxlLmxpbmVUbyhuLHIrYS1vLmJvdHRvbUxlZnQpLGUuYXJjKG4rby5ib3R0b21MZWZ0LHIrYS1vLmJvdHRvbUxlZnQsby5ib3R0b21MZWZ0LFIsQiwhMCksZS5saW5lVG8obitpLW8uYm90dG9tUmlnaHQscithKSxlLmFyYyhuK2ktby5ib3R0b21SaWdodCxyK2Etby5ib3R0b21SaWdodCxvLmJvdHRvbVJpZ2h0LEIsMCwhMCksZS5saW5lVG8obitpLHIrby50b3BSaWdodCksZS5hcmMobitpLW8udG9wUmlnaHQscitvLnRvcFJpZ2h0LG8udG9wUmlnaHQsMCwtQiwhMCksZS5saW5lVG8obitvLnRvcExlZnQscil9dmFyIEVuPS9eKG5vcm1hbHwoXGQrKD86XC5cZCspPykocHh8ZW18JSk/KSQvLERuPS9eKG5vcm1hbHxpdGFsaWN8aW5pdGlhbHxpbmhlcml0fHVuc2V0fChvYmxpcXVlKCAtP1swLTldP1swLTldZGVnKT8pKSQvO2Z1bmN0aW9uIE9uKGUsdCl7bGV0IG49KGBgK2UpLm1hdGNoKEVuKTtpZighbnx8blsxXT09PWBub3JtYWxgKXJldHVybiB0KjEuMjtzd2l0Y2goZT0rblsyXSxuWzNdKXtjYXNlYHB4YDpyZXR1cm4gZTtjYXNlYCVgOmUvPTEwMH1yZXR1cm4gdCplfXZhciBrbj1lPT4rZXx8MDtmdW5jdGlvbiBBbihlLHQpe2xldCBuPXt9LHI9TSh0KSxpPXI/T2JqZWN0LmtleXModCk6dCxhPU0oZSk/cj9uPT5GKGVbbl0sZVt0W25dXSk6dD0+ZVt0XTooKT0+ZTtmb3IobGV0IGUgb2YgaSluW2VdPWtuKGEoZSkpO3JldHVybiBufWZ1bmN0aW9uIGpuKGUpe3JldHVybiBBbihlLHt0b3A6YHlgLHJpZ2h0OmB4YCxib3R0b206YHlgLGxlZnQ6YHhgfSl9ZnVuY3Rpb24gTW4oZSl7cmV0dXJuIEFuKGUsW2B0b3BMZWZ0YCxgdG9wUmlnaHRgLGBib3R0b21MZWZ0YCxgYm90dG9tUmlnaHRgXSl9ZnVuY3Rpb24gSyhlKXtsZXQgdD1qbihlKTtyZXR1cm4gdC53aWR0aD10LmxlZnQrdC5yaWdodCx0LmhlaWdodD10LnRvcCt0LmJvdHRvbSx0fWZ1bmN0aW9uIHEoZSx0KXtlfHw9e30sdHx8PVcuZm9udDtsZXQgbj1GKGUuc2l6ZSx0LnNpemUpO3R5cGVvZiBuPT1gc3RyaW5nYCYmKG49cGFyc2VJbnQobiwxMCkpO2xldCByPUYoZS5zdHlsZSx0LnN0eWxlKTtyJiYhKGBgK3IpLm1hdGNoKERuKSYmKGNvbnNvbGUud2FybihgSW52YWxpZCBmb250IHN0eWxlIHNwZWNpZmllZDogImArcitgImApLHI9dm9pZCAwKTtsZXQgaT17ZmFtaWx5OkYoZS5mYW1pbHksdC5mYW1pbHkpLGxpbmVIZWlnaHQ6T24oRihlLmxpbmVIZWlnaHQsdC5saW5lSGVpZ2h0KSxuKSxzaXplOm4sc3R5bGU6cix3ZWlnaHQ6RihlLndlaWdodCx0LndlaWdodCksc3RyaW5nOmBgfTtyZXR1cm4gaS5zdHJpbmc9dW4oaSksaX1mdW5jdGlvbiBObihlLHQsbixyKXtsZXQgaT0hMCxhLG8scztmb3IoYT0wLG89ZS5sZW5ndGg7YTxvOysrYSlpZihzPWVbYV0scyE9PXZvaWQgMCYmKHQhPT12b2lkIDAmJnR5cGVvZiBzPT1gZnVuY3Rpb25gJiYocz1zKHQpLGk9ITEpLG4hPT12b2lkIDAmJmoocykmJihzPXNbbiVzLmxlbmd0aF0saT0hMSkscyE9PXZvaWQgMCkpcmV0dXJuIHImJiFpJiYoci5jYWNoZWFibGU9ITEpLHN9ZnVuY3Rpb24gUG4oZSx0LG4pe2xldHttaW46cixtYXg6aX09ZSxhPUJlKHQsKGktcikvMiksbz0oZSx0KT0+biYmZT09PTA/MDplK3Q7cmV0dXJue21pbjpvKHIsLU1hdGguYWJzKGEpKSxtYXg6byhpLGEpfX1mdW5jdGlvbiBGbihlLHQpe3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZSksdCl9ZnVuY3Rpb24gSW4oZSx0PVtgYF0sbixyLGk9KCk9PmVbMF0pe2xldCBhPW58fGU7cmV0dXJuIHI9PT12b2lkIDAmJihyPVFuKGBfZmFsbGJhY2tgLGUpKSxuZXcgUHJveHkoe1tTeW1ib2wudG9TdHJpbmdUYWddOmBPYmplY3RgLF9jYWNoZWFibGU6ITAsX3Njb3BlczplLF9yb290U2NvcGVzOmEsX2ZhbGxiYWNrOnIsX2dldFRhcmdldDppLG92ZXJyaWRlOm49PkluKFtuLC4uLmVdLHQsYSxyKX0se2RlbGV0ZVByb3BlcnR5KHQsbil7cmV0dXJuIGRlbGV0ZSB0W25dLGRlbGV0ZSB0Ll9rZXlzLGRlbGV0ZSBlWzBdW25dLCEwfSxnZXQobixyKXtyZXR1cm4gVm4obixyLCgpPT5abihyLHQsZSxuKSl9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpe3JldHVybiBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLl9zY29wZXNbMF0sdCl9LGdldFByb3RvdHlwZU9mKCl7cmV0dXJuIFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoZVswXSl9LGhhcyhlLHQpe3JldHVybiAkbihlKS5pbmNsdWRlcyh0KX0sb3duS2V5cyhlKXtyZXR1cm4gJG4oZSl9LHNldChlLHQsbil7bGV0IHI9ZS5fc3RvcmFnZXx8PWkoKTtyZXR1cm4gZVt0XT1yW3RdPW4sZGVsZXRlIGUuX2tleXMsITB9fSl9ZnVuY3Rpb24gTG4oZSx0LG4scil7bGV0IGk9e19jYWNoZWFibGU6ITEsX3Byb3h5OmUsX2NvbnRleHQ6dCxfc3ViUHJveHk6bixfc3RhY2s6bmV3IFNldCxfZGVzY3JpcHRvcnM6Um4oZSxyKSxzZXRDb250ZXh0OnQ9PkxuKGUsdCxuLHIpLG92ZXJyaWRlOmk9PkxuKGUub3ZlcnJpZGUoaSksdCxuLHIpfTtyZXR1cm4gbmV3IFByb3h5KGkse2RlbGV0ZVByb3BlcnR5KHQsbil7cmV0dXJuIGRlbGV0ZSB0W25dLGRlbGV0ZSBlW25dLCEwfSxnZXQoZSx0LG4pe3JldHVybiBWbihlLHQsKCk9PkhuKGUsdCxuKSl9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pe3JldHVybiB0Ll9kZXNjcmlwdG9ycy5hbGxLZXlzP1JlZmxlY3QuaGFzKGUsbik/e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfTp2b2lkIDA6UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKX0sZ2V0UHJvdG90eXBlT2YoKXtyZXR1cm4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihlKX0saGFzKHQsbil7cmV0dXJuIFJlZmxlY3QuaGFzKGUsbil9LG93bktleXMoKXtyZXR1cm4gUmVmbGVjdC5vd25LZXlzKGUpfSxzZXQodCxuLHIpe3JldHVybiBlW25dPXIsZGVsZXRlIHRbbl0sITB9fSl9ZnVuY3Rpb24gUm4oZSx0PXtzY3JpcHRhYmxlOiEwLGluZGV4YWJsZTohMH0pe2xldHtfc2NyaXB0YWJsZTpuPXQuc2NyaXB0YWJsZSxfaW5kZXhhYmxlOnI9dC5pbmRleGFibGUsX2FsbEtleXM6aT10LmFsbEtleXN9PWU7cmV0dXJue2FsbEtleXM6aSxzY3JpcHRhYmxlOm4saW5kZXhhYmxlOnIsaXNTY3JpcHRhYmxlOmV0KG4pP246KCk9Pm4saXNJbmRleGFibGU6ZXQocik/cjooKT0+cn19dmFyIHpuPShlLHQpPT5lP2UrUWUodCk6dCxCbj0oZSx0KT0+TSh0KSYmZSE9PWBhZGFwdGVyc2AmJihPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1udWxsfHx0LmNvbnN0cnVjdG9yPT09T2JqZWN0KTtmdW5jdGlvbiBWbihlLHQsbil7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl8fHQ9PT1gY29uc3RydWN0b3JgKXJldHVybiBlW3RdO2xldCByPW4oKTtyZXR1cm4gZVt0XT1yLHJ9ZnVuY3Rpb24gSG4oZSx0LG4pe2xldHtfcHJveHk6cixfY29udGV4dDppLF9zdWJQcm94eTphLF9kZXNjcmlwdG9yczpvfT1lLHM9clt0XTtyZXR1cm4gZXQocykmJm8uaXNTY3JpcHRhYmxlKHQpJiYocz1Vbih0LHMsZSxuKSksaihzKSYmcy5sZW5ndGgmJihzPVduKHQscyxlLG8uaXNJbmRleGFibGUpKSxCbih0LHMpJiYocz1MbihzLGksYSYmYVt0XSxvKSksc31mdW5jdGlvbiBVbihlLHQsbixyKXtsZXR7X3Byb3h5OmksX2NvbnRleHQ6YSxfc3ViUHJveHk6byxfc3RhY2s6c309bjtpZihzLmhhcyhlKSl0aHJvdyBFcnJvcihgUmVjdXJzaW9uIGRldGVjdGVkOiBgK0FycmF5LmZyb20ocykuam9pbihgLT5gKStgLT5gK2UpO3MuYWRkKGUpO2xldCBjPXQoYSxvfHxyKTtyZXR1cm4gcy5kZWxldGUoZSksQm4oZSxjKSYmKGM9Sm4oaS5fc2NvcGVzLGksZSxjKSksY31mdW5jdGlvbiBXbihlLHQsbixyKXtsZXR7X3Byb3h5OmksX2NvbnRleHQ6YSxfc3ViUHJveHk6byxfZGVzY3JpcHRvcnM6c309bjtpZihhLmluZGV4IT09dm9pZCAwJiZyKGUpKXJldHVybiB0W2EuaW5kZXgldC5sZW5ndGhdO2lmKE0odFswXSkpe2xldCBuPXQscj1pLl9zY29wZXMuZmlsdGVyKGU9PmUhPT1uKTt0PVtdO2ZvcihsZXQgYyBvZiBuKXtsZXQgbj1KbihyLGksZSxjKTt0LnB1c2goTG4obixhLG8mJm9bZV0scykpfX1yZXR1cm4gdH1mdW5jdGlvbiBHbihlLHQsbil7cmV0dXJuIGV0KGUpP2UodCxuKTplfXZhciBLbj0oZSx0KT0+ZT09PSEwP3Q6dHlwZW9mIGU9PWBzdHJpbmdgP1plKHQsZSk6dm9pZCAwO2Z1bmN0aW9uIHFuKGUsdCxuLHIsaSl7Zm9yKGxldCBhIG9mIHQpe2xldCB0PUtuKG4sYSk7aWYodCl7ZS5hZGQodCk7bGV0IGE9R24odC5fZmFsbGJhY2ssbixpKTtpZihhIT09dm9pZCAwJiZhIT09biYmYSE9PXIpcmV0dXJuIGF9ZWxzZSBpZih0PT09ITEmJnIhPT12b2lkIDAmJm4hPT1yKXJldHVybiBudWxsfXJldHVybiExfWZ1bmN0aW9uIEpuKGUsdCxuLHIpe2xldCBpPXQuX3Jvb3RTY29wZXMsYT1Hbih0Ll9mYWxsYmFjayxuLHIpLG89Wy4uLmUsLi4uaV0scz1uZXcgU2V0O3MuYWRkKHIpO2xldCBjPVluKHMsbyxuLGF8fG4scik7cmV0dXJuIGM9PT1udWxsfHxhIT09dm9pZCAwJiZhIT09biYmKGM9WW4ocyxvLGEsYyxyKSxjPT09bnVsbCk/ITE6SW4oQXJyYXkuZnJvbShzKSxbYGBdLGksYSwoKT0+WG4odCxuLHIpKX1mdW5jdGlvbiBZbihlLHQsbixyLGkpe2Zvcig7bjspbj1xbihlLHQsbixyLGkpO3JldHVybiBufWZ1bmN0aW9uIFhuKGUsdCxuKXtsZXQgcj1lLl9nZXRUYXJnZXQoKTt0IGluIHJ8fChyW3RdPXt9KTtsZXQgaT1yW3RdO3JldHVybiBqKGkpJiZNKG4pP246aXx8e319ZnVuY3Rpb24gWm4oZSx0LG4scil7bGV0IGk7Zm9yKGxldCBhIG9mIHQpaWYoaT1Rbih6bihhLGUpLG4pLGkhPT12b2lkIDApcmV0dXJuIEJuKGUsaSk/Sm4obixyLGUsaSk6aX1mdW5jdGlvbiBRbihlLHQpe2ZvcihsZXQgbiBvZiB0KXtpZighbiljb250aW51ZTtsZXQgdD1uW2VdO2lmKHQhPT12b2lkIDApcmV0dXJuIHR9fWZ1bmN0aW9uICRuKGUpe2xldCB0PWUuX2tleXM7cmV0dXJuIHR8fD1lLl9rZXlzPWVyKGUuX3Njb3BlcyksdH1mdW5jdGlvbiBlcihlKXtsZXQgdD1uZXcgU2V0O2ZvcihsZXQgbiBvZiBlKWZvcihsZXQgZSBvZiBPYmplY3Qua2V5cyhuKS5maWx0ZXIoZT0+IWUuc3RhcnRzV2l0aChgX2ApKSl0LmFkZChlKTtyZXR1cm4gQXJyYXkuZnJvbSh0KX12YXIgdHI9MioqLTUyfHwxZS0xNCxucj0oZSx0KT0+dDxlLmxlbmd0aCYmIWVbdF0uc2tpcCYmZVt0XSxycj1lPT5lPT09YHhgP2B5YDpgeGA7ZnVuY3Rpb24gaXIoZSx0LG4scil7bGV0IGk9ZS5za2lwP3Q6ZSxhPXQsbz1uLnNraXA/dDpuLHM9eHQoYSxpKSxjPXh0KG8sYSksbD1zLyhzK2MpLHU9Yy8ocytjKTtsPWlzTmFOKGwpPzA6bCx1PWlzTmFOKHUpPzA6dTtsZXQgZD1yKmwsZj1yKnU7cmV0dXJue3ByZXZpb3VzOnt4OmEueC1kKihvLngtaS54KSx5OmEueS1kKihvLnktaS55KX0sbmV4dDp7eDphLngrZiooby54LWkueCkseTphLnkrZiooby55LWkueSl9fX1mdW5jdGlvbiBhcihlLHQsbil7bGV0IHI9ZS5sZW5ndGgsaSxhLG8scyxjLGw9bnIoZSwwKTtmb3IobGV0IHU9MDt1PHItMTsrK3UpaWYoYz1sLGw9bnIoZSx1KzEpLCEoIWN8fCFsKSl7aWYodXQodFt1XSwwLHRyKSl7blt1XT1uW3UrMV09MDtjb250aW51ZX1pPW5bdV0vdFt1XSxhPW5bdSsxXS90W3VdLHM9aSoqMithKioyLCEoczw9OSkmJihvPTMvTWF0aC5zcXJ0KHMpLG5bdV09aSpvKnRbdV0sblt1KzFdPWEqbyp0W3VdKX19ZnVuY3Rpb24gb3IoZSx0LG49YHhgKXtsZXQgcj1ycihuKSxpPWUubGVuZ3RoLGEsbyxzLGM9bnIoZSwwKTtmb3IobGV0IGw9MDtsPGk7KytsKXtpZihvPXMscz1jLGM9bnIoZSxsKzEpLCFzKWNvbnRpbnVlO2xldCBpPXNbbl0sdT1zW3JdO28mJihhPShpLW9bbl0pLzMsc1tgY3AxJHtufWBdPWktYSxzW2BjcDEke3J9YF09dS1hKnRbbF0pLGMmJihhPShjW25dLWkpLzMsc1tgY3AyJHtufWBdPWkrYSxzW2BjcDIke3J9YF09dSthKnRbbF0pfX1mdW5jdGlvbiBzcihlLHQ9YHhgKXtsZXQgbj1ycih0KSxyPWUubGVuZ3RoLGk9QXJyYXkocikuZmlsbCgwKSxhPUFycmF5KHIpLG8scyxjLGw9bnIoZSwwKTtmb3Iobz0wO288cjsrK28paWYocz1jLGM9bCxsPW5yKGUsbysxKSxjKXtpZihsKXtsZXQgZT1sW3RdLWNbdF07aVtvXT1lPT09MD8wOihsW25dLWNbbl0pL2V9YVtvXT1zP2w/bHQoaVtvLTFdKT09PWx0KGlbb10pPyhpW28tMV0raVtvXSkvMjowOmlbby0xXTppW29dfWFyKGUsaSxhKSxvcihlLGEsdCl9ZnVuY3Rpb24gY3IoZSx0LG4pe3JldHVybiBNYXRoLm1heChNYXRoLm1pbihlLG4pLHQpfWZ1bmN0aW9uIGxyKGUsdCl7bGV0IG4scixpLGEsbyxzPUcoZVswXSx0KTtmb3Iobj0wLHI9ZS5sZW5ndGg7bjxyOysrbilvPWEsYT1zLHM9bjxyLTEmJkcoZVtuKzFdLHQpLGEmJihpPWVbbl0sbyYmKGkuY3AxeD1jcihpLmNwMXgsdC5sZWZ0LHQucmlnaHQpLGkuY3AxeT1jcihpLmNwMXksdC50b3AsdC5ib3R0b20pKSxzJiYoaS5jcDJ4PWNyKGkuY3AyeCx0LmxlZnQsdC5yaWdodCksaS5jcDJ5PWNyKGkuY3AyeSx0LnRvcCx0LmJvdHRvbSkpKX1mdW5jdGlvbiB1cihlLHQsbixyLGkpe2xldCBhLG8scyxjO2lmKHQuc3BhbkdhcHMmJihlPWUuZmlsdGVyKGU9PiFlLnNraXApKSx0LmN1YmljSW50ZXJwb2xhdGlvbk1vZGU9PT1gbW9ub3RvbmVgKXNyKGUsaSk7ZWxzZXtsZXQgbj1yP2VbZS5sZW5ndGgtMV06ZVswXTtmb3IoYT0wLG89ZS5sZW5ndGg7YTxvOysrYSlzPWVbYV0sYz1pcihuLHMsZVtNYXRoLm1pbihhKzEsby0rIXIpJW9dLHQudGVuc2lvbikscy5jcDF4PWMucHJldmlvdXMueCxzLmNwMXk9Yy5wcmV2aW91cy55LHMuY3AyeD1jLm5leHQueCxzLmNwMnk9Yy5uZXh0Lnksbj1zfXQuY2FwQmV6aWVyUG9pbnRzJiZscihlLG4pfWZ1bmN0aW9uIGRyKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c8YHVgJiZ0eXBlb2YgZG9jdW1lbnQ8YHVgfWZ1bmN0aW9uIGZyKGUpe2xldCB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC50b1N0cmluZygpPT09YFtvYmplY3QgU2hhZG93Um9vdF1gJiYodD10Lmhvc3QpLHR9ZnVuY3Rpb24gcHIoZSx0LG4pe2xldCByO3JldHVybiB0eXBlb2YgZT09YHN0cmluZ2A/KHI9cGFyc2VJbnQoZSwxMCksZS5pbmRleE9mKGAlYCkhPT0tMSYmKHI9ci8xMDAqdC5wYXJlbnROb2RlW25dKSk6cj1lLHJ9dmFyIG1yPWU9PmUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk7ZnVuY3Rpb24gaHIoZSx0KXtyZXR1cm4gbXIoZSkuZ2V0UHJvcGVydHlWYWx1ZSh0KX12YXIgZ3I9W2B0b3BgLGByaWdodGAsYGJvdHRvbWAsYGxlZnRgXTtmdW5jdGlvbiBfcihlLHQsbil7bGV0IHI9e307bj1uP2AtYCtuOmBgO2ZvcihsZXQgaT0wO2k8NDtpKyspe2xldCBhPWdyW2ldO3JbYV09cGFyc2VGbG9hdChlW3QrYC1gK2Erbl0pfHwwfXJldHVybiByLndpZHRoPXIubGVmdCtyLnJpZ2h0LHIuaGVpZ2h0PXIudG9wK3IuYm90dG9tLHJ9dmFyIHZyPShlLHQsbik9PihlPjB8fHQ+MCkmJighbnx8IW4uc2hhZG93Um9vdCk7ZnVuY3Rpb24geXIoZSx0KXtsZXQgbj1lLnRvdWNoZXMscj1uJiZuLmxlbmd0aD9uWzBdOmUse29mZnNldFg6aSxvZmZzZXRZOmF9PXIsbz0hMSxzLGM7aWYodnIoaSxhLGUudGFyZ2V0KSlzPWksYz1hO2Vsc2V7bGV0IGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtzPXIuY2xpZW50WC1lLmxlZnQsYz1yLmNsaWVudFktZS50b3Asbz0hMH1yZXR1cm57eDpzLHk6Yyxib3g6b319ZnVuY3Rpb24gYnIoZSx0KXtpZihgbmF0aXZlYGluIGUpcmV0dXJuIGU7bGV0e2NhbnZhczpuLGN1cnJlbnREZXZpY2VQaXhlbFJhdGlvOnJ9PXQsaT1tcihuKSxhPWkuYm94U2l6aW5nPT09YGJvcmRlci1ib3hgLG89X3IoaSxgcGFkZGluZ2ApLHM9X3IoaSxgYm9yZGVyYCxgd2lkdGhgKSx7eDpjLHk6bCxib3g6dX09eXIoZSxuKSxkPW8ubGVmdCsodSYmcy5sZWZ0KSxmPW8udG9wKyh1JiZzLnRvcCkse3dpZHRoOnAsaGVpZ2h0Om19PXQ7cmV0dXJuIGEmJihwLT1vLndpZHRoK3Mud2lkdGgsbS09by5oZWlnaHQrcy5oZWlnaHQpLHt4Ok1hdGgucm91bmQoKGMtZCkvcCpuLndpZHRoL3IpLHk6TWF0aC5yb3VuZCgobC1mKS9tKm4uaGVpZ2h0L3IpfX1mdW5jdGlvbiB4cihlLHQsbil7bGV0IHIsaTtpZih0PT09dm9pZCAwfHxuPT09dm9pZCAwKXtsZXQgYT1lJiZmcihlKTtpZighYSl0PWUuY2xpZW50V2lkdGgsbj1lLmNsaWVudEhlaWdodDtlbHNle2xldCBlPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1tcihhKSxzPV9yKG8sYGJvcmRlcmAsYHdpZHRoYCksYz1fcihvLGBwYWRkaW5nYCk7dD1lLndpZHRoLWMud2lkdGgtcy53aWR0aCxuPWUuaGVpZ2h0LWMuaGVpZ2h0LXMuaGVpZ2h0LHI9cHIoby5tYXhXaWR0aCxhLGBjbGllbnRXaWR0aGApLGk9cHIoby5tYXhIZWlnaHQsYSxgY2xpZW50SGVpZ2h0YCl9fXJldHVybnt3aWR0aDp0LGhlaWdodDpuLG1heFdpZHRoOnJ8fGl0LG1heEhlaWdodDppfHxpdH19dmFyIFNyPWU9Pk1hdGgucm91bmQoZSoxMCkvMTA7ZnVuY3Rpb24gQ3IoZSx0LG4scil7bGV0IGk9bXIoZSksYT1fcihpLGBtYXJnaW5gKSxvPXByKGkubWF4V2lkdGgsZSxgY2xpZW50V2lkdGhgKXx8aXQscz1wcihpLm1heEhlaWdodCxlLGBjbGllbnRIZWlnaHRgKXx8aXQsYz14cihlLHQsbikse3dpZHRoOmwsaGVpZ2h0OnV9PWM7aWYoaS5ib3hTaXppbmc9PT1gY29udGVudC1ib3hgKXtsZXQgZT1fcihpLGBib3JkZXJgLGB3aWR0aGApLHQ9X3IoaSxgcGFkZGluZ2ApO2wtPXQud2lkdGgrZS53aWR0aCx1LT10LmhlaWdodCtlLmhlaWdodH1yZXR1cm4gbD1NYXRoLm1heCgwLGwtYS53aWR0aCksdT1NYXRoLm1heCgwLHI/bC9yOnUtYS5oZWlnaHQpLGw9U3IoTWF0aC5taW4obCxvLGMubWF4V2lkdGgpKSx1PVNyKE1hdGgubWluKHUscyxjLm1heEhlaWdodCkpLGwmJiF1JiYodT1TcihsLzIpKSwodCE9PXZvaWQgMHx8biE9PXZvaWQgMCkmJnImJmMuaGVpZ2h0JiZ1PmMuaGVpZ2h0JiYodT1jLmhlaWdodCxsPVNyKE1hdGguZmxvb3IodSpyKSkpLHt3aWR0aDpsLGhlaWdodDp1fX1mdW5jdGlvbiB3cihlLHQsbil7bGV0IHI9dHx8MSxpPVNyKGUuaGVpZ2h0KnIpLGE9U3IoZS53aWR0aCpyKTtlLmhlaWdodD1TcihlLmhlaWdodCksZS53aWR0aD1TcihlLndpZHRoKTtsZXQgbz1lLmNhbnZhcztyZXR1cm4gby5zdHlsZSYmKG58fCFvLnN0eWxlLmhlaWdodCYmIW8uc3R5bGUud2lkdGgpJiYoby5zdHlsZS5oZWlnaHQ9YCR7ZS5oZWlnaHR9cHhgLG8uc3R5bGUud2lkdGg9YCR7ZS53aWR0aH1weGApLGUuY3VycmVudERldmljZVBpeGVsUmF0aW8hPT1yfHxvLmhlaWdodCE9PWl8fG8ud2lkdGghPT1hPyhlLmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvPXIsby5oZWlnaHQ9aSxvLndpZHRoPWEsZS5jdHguc2V0VHJhbnNmb3JtKHIsMCwwLHIsMCwwKSwhMCk6ITF9dmFyIFRyPWZ1bmN0aW9uKCl7bGV0IGU9ITE7dHJ5e2xldCB0PXtnZXQgcGFzc2l2ZSgpe3JldHVybiBlPSEwLCExfX07ZHIoKSYmKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGB0ZXN0YCxudWxsLHQpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGB0ZXN0YCxudWxsLHQpKX1jYXRjaHt9cmV0dXJuIGV9KCk7ZnVuY3Rpb24gRXIoZSx0KXtsZXQgbj1ocihlLHQpLHI9biYmbi5tYXRjaCgvXihcZCspKFwuXGQrKT9weCQvKTtyZXR1cm4gcj8rclsxXTp2b2lkIDB9ZnVuY3Rpb24gRHIoZSx0LG4scil7cmV0dXJue3g6ZS54K24qKHQueC1lLngpLHk6ZS55K24qKHQueS1lLnkpfX1mdW5jdGlvbiBPcihlLHQsbixyKXtyZXR1cm57eDplLngrbioodC54LWUueCkseTpyPT09YG1pZGRsZWA/bjwuNT9lLnk6dC55OnI9PT1gYWZ0ZXJgP248MT9lLnk6dC55Om4+MD90Lnk6ZS55fX1mdW5jdGlvbiBrcihlLHQsbixyKXtsZXQgaT17eDplLmNwMngseTplLmNwMnl9LGE9e3g6dC5jcDF4LHk6dC5jcDF5fSxvPURyKGUsaSxuKSxzPURyKGksYSxuKSxjPURyKGEsdCxuKTtyZXR1cm4gRHIoRHIobyxzLG4pLERyKHMsYyxuKSxuKX12YXIgQXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm57eChuKXtyZXR1cm4gZStlK3Qtbn0sc2V0V2lkdGgoZSl7dD1lfSx0ZXh0QWxpZ24oZSl7cmV0dXJuIGU9PT1gY2VudGVyYD9lOmU9PT1gcmlnaHRgP2BsZWZ0YDpgcmlnaHRgfSx4UGx1cyhlLHQpe3JldHVybiBlLXR9LGxlZnRGb3JMdHIoZSx0KXtyZXR1cm4gZS10fX19LGpyPWZ1bmN0aW9uKCl7cmV0dXJue3goZSl7cmV0dXJuIGV9LHNldFdpZHRoKGUpe30sdGV4dEFsaWduKGUpe3JldHVybiBlfSx4UGx1cyhlLHQpe3JldHVybiBlK3R9LGxlZnRGb3JMdHIoZSx0KXtyZXR1cm4gZX19fTtmdW5jdGlvbiBNcihlLHQsbil7cmV0dXJuIGU/QXIodCxuKTpqcigpfWZ1bmN0aW9uIE5yKGUsdCl7bGV0IG4scjsodD09PWBsdHJgfHx0PT09YHJ0bGApJiYobj1lLmNhbnZhcy5zdHlsZSxyPVtuLmdldFByb3BlcnR5VmFsdWUoYGRpcmVjdGlvbmApLG4uZ2V0UHJvcGVydHlQcmlvcml0eShgZGlyZWN0aW9uYCldLG4uc2V0UHJvcGVydHkoYGRpcmVjdGlvbmAsdCxgaW1wb3J0YW50YCksZS5wcmV2VGV4dERpcmVjdGlvbj1yKX1mdW5jdGlvbiBQcihlLHQpe3QhPT12b2lkIDAmJihkZWxldGUgZS5wcmV2VGV4dERpcmVjdGlvbixlLmNhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eShgZGlyZWN0aW9uYCx0WzBdLHRbMV0pKX1mdW5jdGlvbiBGcihlKXtyZXR1cm4gZT09PWBhbmdsZWA/e2JldHdlZW46Q3QsY29tcGFyZTpTdCxub3JtYWxpemU6Vn06e2JldHdlZW46VHQsY29tcGFyZTooZSx0KT0+ZS10LG5vcm1hbGl6ZTplPT5lfX1mdW5jdGlvbiBJcih7c3RhcnQ6ZSxlbmQ6dCxjb3VudDpuLGxvb3A6cixzdHlsZTppfSl7cmV0dXJue3N0YXJ0OmUlbixlbmQ6dCVuLGxvb3A6ciYmKHQtZSsxKSVuPT09MCxzdHlsZTppfX1mdW5jdGlvbiBMcihlLHQsbil7bGV0e3Byb3BlcnR5OnIsc3RhcnQ6aSxlbmQ6YX09bix7YmV0d2VlbjpvLG5vcm1hbGl6ZTpzfT1GcihyKSxjPXQubGVuZ3RoLHtzdGFydDpsLGVuZDp1LGxvb3A6ZH09ZSxmLHA7aWYoZCl7Zm9yKGwrPWMsdSs9YyxmPTAscD1jO2Y8cCYmbyhzKHRbbCVjXVtyXSksaSxhKTsrK2YpbC0tLHUtLTtsJT1jLHUlPWN9cmV0dXJuIHU8bCYmKHUrPWMpLHtzdGFydDpsLGVuZDp1LGxvb3A6ZCxzdHlsZTplLnN0eWxlfX1mdW5jdGlvbiBScihlLHQsbil7aWYoIW4pcmV0dXJuW2VdO2xldHtwcm9wZXJ0eTpyLHN0YXJ0OmksZW5kOmF9PW4sbz10Lmxlbmd0aCx7Y29tcGFyZTpzLGJldHdlZW46Yyxub3JtYWxpemU6bH09RnIocikse3N0YXJ0OnUsZW5kOmQsbG9vcDpmLHN0eWxlOnB9PUxyKGUsdCxuKSxtPVtdLGg9ITEsZz1udWxsLF8sdix5LGI9KCk9PmMoaSx5LF8pJiZzKGkseSkhPT0wLHg9KCk9PnMoYSxfKT09PTB8fGMoYSx5LF8pLFM9KCk9Pmh8fGIoKSxDPSgpPT4haHx8eCgpO2ZvcihsZXQgZT11LG49dTtlPD1kOysrZSl2PXRbZSVvXSwhdi5za2lwJiYoXz1sKHZbcl0pLF8hPT15JiYoaD1jKF8saSxhKSxnPT09bnVsbCYmUygpJiYoZz1zKF8saSk9PT0wP2U6biksZyE9PW51bGwmJkMoKSYmKG0ucHVzaChJcih7c3RhcnQ6ZyxlbmQ6ZSxsb29wOmYsY291bnQ6byxzdHlsZTpwfSkpLGc9bnVsbCksbj1lLHk9XykpO3JldHVybiBnIT09bnVsbCYmbS5wdXNoKElyKHtzdGFydDpnLGVuZDpkLGxvb3A6Zixjb3VudDpvLHN0eWxlOnB9KSksbX1mdW5jdGlvbiB6cihlLHQpe2xldCBuPVtdLHI9ZS5zZWdtZW50cztmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7bGV0IGE9UnIocltpXSxlLnBvaW50cyx0KTthLmxlbmd0aCYmbi5wdXNoKC4uLmEpfXJldHVybiBufWZ1bmN0aW9uIEJyKGUsdCxuLHIpe2xldCBpPTAsYT10LTE7aWYobiYmIXIpZm9yKDtpPHQmJiFlW2ldLnNraXA7KWkrKztmb3IoO2k8dCYmZVtpXS5za2lwOylpKys7Zm9yKGklPXQsbiYmKGErPWkpO2E+aSYmZVthJXRdLnNraXA7KWEtLTtyZXR1cm4gYSU9dCx7c3RhcnQ6aSxlbmQ6YX19ZnVuY3Rpb24gVnIoZSx0LG4scil7bGV0IGk9ZS5sZW5ndGgsYT1bXSxvPXQscz1lW3RdLGM7Zm9yKGM9dCsxO2M8PW47KytjKXtsZXQgbj1lW2MlaV07bi5za2lwfHxuLnN0b3A/cy5za2lwfHwocj0hMSxhLnB1c2goe3N0YXJ0OnQlaSxlbmQ6KGMtMSklaSxsb29wOnJ9KSx0PW89bi5zdG9wP2M6bnVsbCk6KG89YyxzLnNraXAmJih0PWMpKSxzPW59cmV0dXJuIG8hPT1udWxsJiZhLnB1c2goe3N0YXJ0OnQlaSxlbmQ6byVpLGxvb3A6cn0pLGF9ZnVuY3Rpb24gSHIoZSx0KXtsZXQgbj1lLnBvaW50cyxyPWUub3B0aW9ucy5zcGFuR2FwcyxpPW4ubGVuZ3RoO2lmKCFpKXJldHVybltdO2xldCBhPSEhZS5fbG9vcCx7c3RhcnQ6byxlbmQ6c309QnIobixpLGEscik7cmV0dXJuIHI9PT0hMD9VcihlLFt7c3RhcnQ6byxlbmQ6cyxsb29wOmF9XSxuLHQpOlVyKGUsVnIobixvLHM8bz9zK2k6cywhIWUuX2Z1bGxMb29wJiZvPT09MCYmcz09PWktMSksbix0KX1mdW5jdGlvbiBVcihlLHQsbixyKXtyZXR1cm4hcnx8IXIuc2V0Q29udGV4dHx8IW4/dDpXcihlLHQsbixyKX1mdW5jdGlvbiBXcihlLHQsbixyKXtsZXQgaT1lLl9jaGFydC5nZXRDb250ZXh0KCksYT1HcihlLm9wdGlvbnMpLHtfZGF0YXNldEluZGV4Om8sb3B0aW9uczp7c3BhbkdhcHM6c319PWUsYz1uLmxlbmd0aCxsPVtdLHU9YSxkPXRbMF0uc3RhcnQsZj1kO2Z1bmN0aW9uIHAoZSx0LHIsaSl7bGV0IGE9cz8tMToxO2lmKGUhPT10KXtmb3IoZSs9YztuW2UlY10uc2tpcDspZS09YTtmb3IoO25bdCVjXS5za2lwOyl0Kz1hO2UlYyE9PXQlYyYmKGwucHVzaCh7c3RhcnQ6ZSVjLGVuZDp0JWMsbG9vcDpyLHN0eWxlOml9KSx1PWksZD10JWMpfX1mb3IobGV0IGUgb2YgdCl7ZD1zP2Q6ZS5zdGFydDtsZXQgdD1uW2QlY10sYTtmb3IoZj1kKzE7Zjw9ZS5lbmQ7ZisrKXtsZXQgcz1uW2YlY107YT1HcihyLnNldENvbnRleHQoRm4oaSx7dHlwZTpgc2VnbWVudGAscDA6dCxwMTpzLHAwRGF0YUluZGV4OihmLTEpJWMscDFEYXRhSW5kZXg6ZiVjLGRhdGFzZXRJbmRleDpvfSkpKSxLcihhLHUpJiZwKGQsZi0xLGUubG9vcCx1KSx0PXMsdT1hfWQ8Zi0xJiZwKGQsZi0xLGUubG9vcCx1KX1yZXR1cm4gbH1mdW5jdGlvbiBHcihlKXtyZXR1cm57YmFja2dyb3VuZENvbG9yOmUuYmFja2dyb3VuZENvbG9yLGJvcmRlckNhcFN0eWxlOmUuYm9yZGVyQ2FwU3R5bGUsYm9yZGVyRGFzaDplLmJvcmRlckRhc2gsYm9yZGVyRGFzaE9mZnNldDplLmJvcmRlckRhc2hPZmZzZXQsYm9yZGVySm9pblN0eWxlOmUuYm9yZGVySm9pblN0eWxlLGJvcmRlcldpZHRoOmUuYm9yZGVyV2lkdGgsYm9yZGVyQ29sb3I6ZS5ib3JkZXJDb2xvcn19ZnVuY3Rpb24gS3IoZSx0KXtpZighdClyZXR1cm4hMTtsZXQgbj1bXSxyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEd0KHQpPyhuLmluY2x1ZGVzKHQpfHxuLnB1c2godCksbi5pbmRleE9mKHQpKTp0fTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSxyKSE9PUpTT04uc3RyaW5naWZ5KHQscil9ZnVuY3Rpb24gcXIoZSx0LG4pe3JldHVybiBlLm9wdGlvbnMuY2xpcD9lW25dOnRbbl19ZnVuY3Rpb24gSnIoZSx0KXtsZXR7eFNjYWxlOm4seVNjYWxlOnJ9PWU7cmV0dXJuIG4mJnI/e2xlZnQ6cXIobix0LGBsZWZ0YCkscmlnaHQ6cXIobix0LGByaWdodGApLHRvcDpxcihyLHQsYHRvcGApLGJvdHRvbTpxcihyLHQsYGJvdHRvbWApfTp0fWZ1bmN0aW9uIFlyKGUsdCl7bGV0IG49dC5fY2xpcDtpZihuLmRpc2FibGVkKXJldHVybiExO2xldCByPUpyKHQsZS5jaGFydEFyZWEpO3JldHVybntsZWZ0Om4ubGVmdD09PSExPzA6ci5sZWZ0LShuLmxlZnQ9PT0hMD8wOm4ubGVmdCkscmlnaHQ6bi5yaWdodD09PSExP2Uud2lkdGg6ci5yaWdodCsobi5yaWdodD09PSEwPzA6bi5yaWdodCksdG9wOm4udG9wPT09ITE/MDpyLnRvcC0obi50b3A9PT0hMD8wOm4udG9wKSxib3R0b206bi5ib3R0b209PT0hMT9lLmhlaWdodDpyLmJvdHRvbSsobi5ib3R0b209PT0hMD8wOm4uYm90dG9tKX19dmFyIEo9bmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVxdWVzdD1udWxsLHRoaXMuX2NoYXJ0cz1uZXcgTWFwLHRoaXMuX3J1bm5pbmc9ITEsdGhpcy5fbGFzdERhdGU9dm9pZCAwfV9ub3RpZnkoZSx0LG4scil7bGV0IGk9dC5saXN0ZW5lcnNbcl0sYT10LmR1cmF0aW9uO2kuZm9yRWFjaChyPT5yKHtjaGFydDplLGluaXRpYWw6dC5pbml0aWFsLG51bVN0ZXBzOmEsY3VycmVudFN0ZXA6TWF0aC5taW4obi10LnN0YXJ0LGEpfSkpfV9yZWZyZXNoKCl7dGhpcy5fcmVxdWVzdHx8PSh0aGlzLl9ydW5uaW5nPSEwLFB0LmNhbGwod2luZG93LCgpPT57dGhpcy5fdXBkYXRlKCksdGhpcy5fcmVxdWVzdD1udWxsLHRoaXMuX3J1bm5pbmcmJnRoaXMuX3JlZnJlc2goKX0pKX1fdXBkYXRlKGU9RGF0ZS5ub3coKSl7bGV0IHQ9MDt0aGlzLl9jaGFydHMuZm9yRWFjaCgobixyKT0+e2lmKCFuLnJ1bm5pbmd8fCFuLml0ZW1zLmxlbmd0aClyZXR1cm47bGV0IGk9bi5pdGVtcyxhPWkubGVuZ3RoLTEsbz0hMSxzO2Zvcig7YT49MDstLWEpcz1pW2FdLHMuX2FjdGl2ZT8ocy5fdG90YWw+bi5kdXJhdGlvbiYmKG4uZHVyYXRpb249cy5fdG90YWwpLHMudGljayhlKSxvPSEwKTooaVthXT1pW2kubGVuZ3RoLTFdLGkucG9wKCkpO28mJihyLmRyYXcoKSx0aGlzLl9ub3RpZnkocixuLGUsYHByb2dyZXNzYCkpLGkubGVuZ3RofHwobi5ydW5uaW5nPSExLHRoaXMuX25vdGlmeShyLG4sZSxgY29tcGxldGVgKSxuLmluaXRpYWw9ITEpLHQrPWkubGVuZ3RofSksdGhpcy5fbGFzdERhdGU9ZSx0PT09MCYmKHRoaXMuX3J1bm5pbmc9ITEpfV9nZXRBbmltcyhlKXtsZXQgdD10aGlzLl9jaGFydHMsbj10LmdldChlKTtyZXR1cm4gbnx8KG49e3J1bm5pbmc6ITEsaW5pdGlhbDohMCxpdGVtczpbXSxsaXN0ZW5lcnM6e2NvbXBsZXRlOltdLHByb2dyZXNzOltdfX0sdC5zZXQoZSxuKSksbn1saXN0ZW4oZSx0LG4pe3RoaXMuX2dldEFuaW1zKGUpLmxpc3RlbmVyc1t0XS5wdXNoKG4pfWFkZChlLHQpeyF0fHwhdC5sZW5ndGh8fHRoaXMuX2dldEFuaW1zKGUpLml0ZW1zLnB1c2goLi4udCl9aGFzKGUpe3JldHVybiB0aGlzLl9nZXRBbmltcyhlKS5pdGVtcy5sZW5ndGg+MH1zdGFydChlKXtsZXQgdD10aGlzLl9jaGFydHMuZ2V0KGUpO3QmJih0LnJ1bm5pbmc9ITAsdC5zdGFydD1EYXRlLm5vdygpLHQuZHVyYXRpb249dC5pdGVtcy5yZWR1Y2UoKGUsdCk9Pk1hdGgubWF4KGUsdC5fZHVyYXRpb24pLDApLHRoaXMuX3JlZnJlc2goKSl9cnVubmluZyhlKXtpZighdGhpcy5fcnVubmluZylyZXR1cm4hMTtsZXQgdD10aGlzLl9jaGFydHMuZ2V0KGUpO3JldHVybiEoIXR8fCF0LnJ1bm5pbmd8fCF0Lml0ZW1zLmxlbmd0aCl9c3RvcChlKXtsZXQgdD10aGlzLl9jaGFydHMuZ2V0KGUpO2lmKCF0fHwhdC5pdGVtcy5sZW5ndGgpcmV0dXJuO2xldCBuPXQuaXRlbXMscj1uLmxlbmd0aC0xO2Zvcig7cj49MDstLXIpbltyXS5jYW5jZWwoKTt0Lml0ZW1zPVtdLHRoaXMuX25vdGlmeShlLHQsRGF0ZS5ub3coKSxgY29tcGxldGVgKX1yZW1vdmUoZSl7cmV0dXJuIHRoaXMuX2NoYXJ0cy5kZWxldGUoZSl9fSxYcj1gdHJhbnNwYXJlbnRgLFpyPXtib29sZWFuKGUsdCxuKXtyZXR1cm4gbj4uNT90OmV9LGNvbG9yKGUsdCxuKXtsZXQgcj1LdChlfHxYciksaT1yLnZhbGlkJiZLdCh0fHxYcik7cmV0dXJuIGkmJmkudmFsaWQ/aS5taXgocixuKS5oZXhTdHJpbmcoKTp0fSxudW1iZXIoZSx0LG4pe3JldHVybiBlKyh0LWUpKm59fSxRcj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbixyKXtsZXQgaT10W25dO3I9Tm4oW2UudG8scixpLGUuZnJvbV0pO2xldCBhPU5uKFtlLmZyb20saSxyXSk7dGhpcy5fYWN0aXZlPSEwLHRoaXMuX2ZuPWUuZm58fFpyW2UudHlwZXx8dHlwZW9mIGFdLHRoaXMuX2Vhc2luZz1XdFtlLmVhc2luZ118fFd0LmxpbmVhcix0aGlzLl9zdGFydD1NYXRoLmZsb29yKERhdGUubm93KCkrKGUuZGVsYXl8fDApKSx0aGlzLl9kdXJhdGlvbj10aGlzLl90b3RhbD1NYXRoLmZsb29yKGUuZHVyYXRpb24pLHRoaXMuX2xvb3A9ISFlLmxvb3AsdGhpcy5fdGFyZ2V0PXQsdGhpcy5fcHJvcD1uLHRoaXMuX2Zyb209YSx0aGlzLl90bz1yLHRoaXMuX3Byb21pc2VzPXZvaWQgMH1hY3RpdmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfXVwZGF0ZShlLHQsbil7aWYodGhpcy5fYWN0aXZlKXt0aGlzLl9ub3RpZnkoITEpO2xldCByPXRoaXMuX3RhcmdldFt0aGlzLl9wcm9wXSxpPW4tdGhpcy5fc3RhcnQsYT10aGlzLl9kdXJhdGlvbi1pO3RoaXMuX3N0YXJ0PW4sdGhpcy5fZHVyYXRpb249TWF0aC5mbG9vcihNYXRoLm1heChhLGUuZHVyYXRpb24pKSx0aGlzLl90b3RhbCs9aSx0aGlzLl9sb29wPSEhZS5sb29wLHRoaXMuX3RvPU5uKFtlLnRvLHQscixlLmZyb21dKSx0aGlzLl9mcm9tPU5uKFtlLmZyb20scix0XSl9fWNhbmNlbCgpe3RoaXMuX2FjdGl2ZSYmKHRoaXMudGljayhEYXRlLm5vdygpKSx0aGlzLl9hY3RpdmU9ITEsdGhpcy5fbm90aWZ5KCExKSl9dGljayhlKXtsZXQgdD1lLXRoaXMuX3N0YXJ0LG49dGhpcy5fZHVyYXRpb24scj10aGlzLl9wcm9wLGk9dGhpcy5fZnJvbSxhPXRoaXMuX2xvb3Asbz10aGlzLl90byxzO2lmKHRoaXMuX2FjdGl2ZT1pIT09byYmKGF8fHQ8biksIXRoaXMuX2FjdGl2ZSl7dGhpcy5fdGFyZ2V0W3JdPW8sdGhpcy5fbm90aWZ5KCEwKTtyZXR1cm59aWYodDwwKXt0aGlzLl90YXJnZXRbcl09aTtyZXR1cm59cz10L24lMixzPWEmJnM+MT8yLXM6cyxzPXRoaXMuX2Vhc2luZyhNYXRoLm1pbigxLE1hdGgubWF4KDAscykpKSx0aGlzLl90YXJnZXRbcl09dGhpcy5fZm4oaSxvLHMpfXdhaXQoKXtsZXQgZT10aGlzLl9wcm9taXNlc3x8PVtdO3JldHVybiBuZXcgUHJvbWlzZSgodCxuKT0+e2UucHVzaCh7cmVzOnQscmVqOm59KX0pfV9ub3RpZnkoZSl7bGV0IHQ9ZT9gcmVzYDpgcmVqYCxuPXRoaXMuX3Byb21pc2VzfHxbXTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdW3RdKCl9fSwkcj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2NoYXJ0PWUsdGhpcy5fcHJvcGVydGllcz1uZXcgTWFwLHRoaXMuY29uZmlndXJlKHQpfWNvbmZpZ3VyZShlKXtpZighTShlKSlyZXR1cm47bGV0IHQ9T2JqZWN0LmtleXMoVy5hbmltYXRpb24pLG49dGhpcy5fcHJvcGVydGllcztPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5mb3JFYWNoKHI9PntsZXQgaT1lW3JdO2lmKCFNKGkpKXJldHVybjtsZXQgYT17fTtmb3IobGV0IGUgb2YgdClhW2VdPWlbZV07KGooaS5wcm9wZXJ0aWVzKSYmaS5wcm9wZXJ0aWVzfHxbcl0pLmZvckVhY2goZT0+eyhlPT09cnx8IW4uaGFzKGUpKSYmbi5zZXQoZSxhKX0pfSl9X2FuaW1hdGVPcHRpb25zKGUsdCl7bGV0IG49dC5vcHRpb25zLHI9dGkoZSxuKTtpZighcilyZXR1cm5bXTtsZXQgaT10aGlzLl9jcmVhdGVBbmltYXRpb25zKHIsbik7cmV0dXJuIG4uJHNoYXJlZCYmZWkoZS5vcHRpb25zLiRhbmltYXRpb25zLG4pLnRoZW4oKCk9PntlLm9wdGlvbnM9bn0sKCk9Pnt9KSxpfV9jcmVhdGVBbmltYXRpb25zKGUsdCl7bGV0IG49dGhpcy5fcHJvcGVydGllcyxyPVtdLGk9ZS4kYW5pbWF0aW9uc3x8PXt9LGE9T2JqZWN0LmtleXModCksbz1EYXRlLm5vdygpLHM7Zm9yKHM9YS5sZW5ndGgtMTtzPj0wOy0tcyl7bGV0IGM9YVtzXTtpZihjLmNoYXJBdCgwKT09PWAkYCljb250aW51ZTtpZihjPT09YG9wdGlvbnNgKXtyLnB1c2goLi4udGhpcy5fYW5pbWF0ZU9wdGlvbnMoZSx0KSk7Y29udGludWV9bGV0IGw9dFtjXSx1PWlbY10sZD1uLmdldChjKTtpZih1KXtpZihkJiZ1LmFjdGl2ZSgpKXt1LnVwZGF0ZShkLGwsbyk7Y29udGludWV9dS5jYW5jZWwoKX1pZighZHx8IWQuZHVyYXRpb24pe2VbY109bDtjb250aW51ZX1pW2NdPXU9bmV3IFFyKGQsZSxjLGwpLHIucHVzaCh1KX1yZXR1cm4gcn11cGRhdGUoZSx0KXtpZih0aGlzLl9wcm9wZXJ0aWVzLnNpemU9PT0wKXtPYmplY3QuYXNzaWduKGUsdCk7cmV0dXJufWxldCBuPXRoaXMuX2NyZWF0ZUFuaW1hdGlvbnMoZSx0KTtpZihuLmxlbmd0aClyZXR1cm4gSi5hZGQodGhpcy5fY2hhcnQsbiksITB9fTtmdW5jdGlvbiBlaShlLHQpe2xldCBuPVtdLHI9T2JqZWN0LmtleXModCk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kyspe2xldCBpPWVbclt0XV07aSYmaS5hY3RpdmUoKSYmbi5wdXNoKGkud2FpdCgpKX1yZXR1cm4gUHJvbWlzZS5hbGwobil9ZnVuY3Rpb24gdGkoZSx0KXtpZighdClyZXR1cm47bGV0IG49ZS5vcHRpb25zO2lmKCFuKXtlLm9wdGlvbnM9dDtyZXR1cm59cmV0dXJuIG4uJHNoYXJlZCYmKGUub3B0aW9ucz1uPU9iamVjdC5hc3NpZ24oe30sbix7JHNoYXJlZDohMSwkYW5pbWF0aW9uczp7fX0pKSxufWZ1bmN0aW9uIG5pKGUsdCl7bGV0IG49ZSYmZS5vcHRpb25zfHx7fSxyPW4ucmV2ZXJzZSxpPW4ubWluPT09dm9pZCAwP3Q6MCxhPW4ubWF4PT09dm9pZCAwP3Q6MDtyZXR1cm57c3RhcnQ6cj9hOmksZW5kOnI/aTphfX1mdW5jdGlvbiByaShlLHQsbil7aWYobj09PSExKXJldHVybiExO2xldCByPW5pKGUsbiksaT1uaSh0LG4pO3JldHVybnt0b3A6aS5lbmQscmlnaHQ6ci5lbmQsYm90dG9tOmkuc3RhcnQsbGVmdDpyLnN0YXJ0fX1mdW5jdGlvbiBpaShlKXtsZXQgdCxuLHIsaTtyZXR1cm4gTShlKT8odD1lLnRvcCxuPWUucmlnaHQscj1lLmJvdHRvbSxpPWUubGVmdCk6dD1uPXI9aT1lLHt0b3A6dCxyaWdodDpuLGJvdHRvbTpyLGxlZnQ6aSxkaXNhYmxlZDplPT09ITF9fWZ1bmN0aW9uIGFpKGUsdCl7bGV0IG49W10scj1lLl9nZXRTb3J0ZWREYXRhc2V0TWV0YXModCksaSxhO2ZvcihpPTAsYT1yLmxlbmd0aDtpPGE7KytpKW4ucHVzaChyW2ldLmluZGV4KTtyZXR1cm4gbn1mdW5jdGlvbiBvaShlLHQsbixyPXt9KXtsZXQgaT1lLmtleXMsYT1yLm1vZGU9PT1gc2luZ2xlYCxvLHMsYyxsO2lmKHQ9PT1udWxsKXJldHVybjtsZXQgdT0hMTtmb3Iobz0wLHM9aS5sZW5ndGg7bzxzOysrbyl7aWYoYz0raVtvXSxjPT09bil7aWYodT0hMCxyLmFsbCljb250aW51ZTticmVha31sPWUudmFsdWVzW2NdLE4obCkmJihhfHx0PT09MHx8bHQodCk9PT1sdChsKSkmJih0Kz1sKX1yZXR1cm4hdSYmIXIuYWxsPzA6dH1mdW5jdGlvbiBzaShlLHQpe2xldHtpU2NhbGU6bix2U2NhbGU6cn09dCxpPW4uYXhpcz09PWB4YD9geGA6YHlgLGE9ci5heGlzPT09YHhgP2B4YDpgeWAsbz1PYmplY3Qua2V5cyhlKSxzPUFycmF5KG8ubGVuZ3RoKSxjLGwsdTtmb3IoYz0wLGw9by5sZW5ndGg7YzxsOysrYyl1PW9bY10sc1tjXT17W2ldOnUsW2FdOmVbdV19O3JldHVybiBzfWZ1bmN0aW9uIGNpKGUsdCl7bGV0IG49ZSYmZS5vcHRpb25zLnN0YWNrZWQ7cmV0dXJuIG58fG49PT12b2lkIDAmJnQuc3RhY2shPT12b2lkIDB9ZnVuY3Rpb24gbGkoZSx0LG4pe3JldHVybmAke2UuaWR9LiR7dC5pZH0uJHtuLnN0YWNrfHxuLnR5cGV9YH1mdW5jdGlvbiB1aShlKXtsZXR7bWluOnQsbWF4Om4sbWluRGVmaW5lZDpyLG1heERlZmluZWQ6aX09ZS5nZXRVc2VyQm91bmRzKCk7cmV0dXJue21pbjpyP3Q6LTEvMCxtYXg6aT9uOjEvMH19ZnVuY3Rpb24gZGkoZSx0LG4pe2xldCByPWVbdF18fChlW3RdPXt9KTtyZXR1cm4gcltuXXx8KHJbbl09e30pfWZ1bmN0aW9uIGZpKGUsdCxuLHIpe2ZvcihsZXQgaSBvZiB0LmdldE1hdGNoaW5nVmlzaWJsZU1ldGFzKHIpLnJldmVyc2UoKSl7bGV0IHQ9ZVtpLmluZGV4XTtpZihuJiZ0PjB8fCFuJiZ0PDApcmV0dXJuIGkuaW5kZXh9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcGkoZSx0KXtsZXR7Y2hhcnQ6bixfY2FjaGVkTWV0YTpyfT1lLGk9bi5fc3RhY2tzfHw9e30se2lTY2FsZTphLHZTY2FsZTpvLGluZGV4OnN9PXIsYz1hLmF4aXMsbD1vLmF4aXMsdT1saShhLG8sciksZD10Lmxlbmd0aCxmO2ZvcihsZXQgZT0wO2U8ZDsrK2Upe2xldCBuPXRbZV0se1tjXTphLFtsXTpkfT1uLHA9bi5fc3RhY2tzfHw9e307Zj1wW2xdPWRpKGksdSxhKSxmW3NdPWQsZi5fdG9wPWZpKGYsbywhMCxyLnR5cGUpLGYuX2JvdHRvbT1maShmLG8sITEsci50eXBlKTtsZXQgbT1mLl92aXN1YWxWYWx1ZXN8fChmLl92aXN1YWxWYWx1ZXM9e30pO21bc109ZH19ZnVuY3Rpb24gbWkoZSx0KXtsZXQgbj1lLnNjYWxlcztyZXR1cm4gT2JqZWN0LmtleXMobikuZmlsdGVyKGU9Pm5bZV0uYXhpcz09PXQpLnNoaWZ0KCl9ZnVuY3Rpb24gaGkoZSx0KXtyZXR1cm4gRm4oZSx7YWN0aXZlOiExLGRhdGFzZXQ6dm9pZCAwLGRhdGFzZXRJbmRleDp0LGluZGV4OnQsbW9kZTpgZGVmYXVsdGAsdHlwZTpgZGF0YXNldGB9KX1mdW5jdGlvbiBnaShlLHQsbil7cmV0dXJuIEZuKGUse2FjdGl2ZTohMSxkYXRhSW5kZXg6dCxwYXJzZWQ6dm9pZCAwLHJhdzp2b2lkIDAsZWxlbWVudDpuLGluZGV4OnQsbW9kZTpgZGVmYXVsdGAsdHlwZTpgZGF0YWB9KX1mdW5jdGlvbiBfaShlLHQpe2xldCBuPWUuY29udHJvbGxlci5pbmRleCxyPWUudlNjYWxlJiZlLnZTY2FsZS5heGlzO2lmKHIpe3R8fD1lLl9wYXJzZWQ7Zm9yKGxldCBlIG9mIHQpe2xldCB0PWUuX3N0YWNrcztpZighdHx8dFtyXT09PXZvaWQgMHx8dFtyXVtuXT09PXZvaWQgMClyZXR1cm47ZGVsZXRlIHRbcl1bbl0sdFtyXS5fdmlzdWFsVmFsdWVzIT09dm9pZCAwJiZ0W3JdLl92aXN1YWxWYWx1ZXNbbl0hPT12b2lkIDAmJmRlbGV0ZSB0W3JdLl92aXN1YWxWYWx1ZXNbbl19fX12YXIgdmk9ZT0+ZT09PWByZXNldGB8fGU9PT1gbm9uZWAseWk9KGUsdCk9PnQ/ZTpPYmplY3QuYXNzaWduKHt9LGUpLGJpPShlLHQsbik9PmUmJiF0LmhpZGRlbiYmdC5fc3RhY2tlZCYme2tleXM6YWkobiwhMCksdmFsdWVzOm51bGx9LHhpPWNsYXNze3N0YXRpYyBkZWZhdWx0cz17fTtzdGF0aWMgZGF0YXNldEVsZW1lbnRUeXBlPW51bGw7c3RhdGljIGRhdGFFbGVtZW50VHlwZT1udWxsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jaGFydD1lLHRoaXMuX2N0eD1lLmN0eCx0aGlzLmluZGV4PXQsdGhpcy5fY2FjaGVkRGF0YU9wdHM9e30sdGhpcy5fY2FjaGVkTWV0YT10aGlzLmdldE1ldGEoKSx0aGlzLl90eXBlPXRoaXMuX2NhY2hlZE1ldGEudHlwZSx0aGlzLm9wdGlvbnM9dm9pZCAwLHRoaXMuX3BhcnNpbmc9ITEsdGhpcy5fZGF0YT12b2lkIDAsdGhpcy5fb2JqZWN0RGF0YT12b2lkIDAsdGhpcy5fc2hhcmVkT3B0aW9ucz12b2lkIDAsdGhpcy5fZHJhd1N0YXJ0PXZvaWQgMCx0aGlzLl9kcmF3Q291bnQ9dm9pZCAwLHRoaXMuZW5hYmxlT3B0aW9uU2hhcmluZz0hMSx0aGlzLnN1cHBvcnRzRGVjaW1hdGlvbj0hMSx0aGlzLiRjb250ZXh0PXZvaWQgMCx0aGlzLl9zeW5jTGlzdD1bXSx0aGlzLmRhdGFzZXRFbGVtZW50VHlwZT1uZXcudGFyZ2V0LmRhdGFzZXRFbGVtZW50VHlwZSx0aGlzLmRhdGFFbGVtZW50VHlwZT1uZXcudGFyZ2V0LmRhdGFFbGVtZW50VHlwZSx0aGlzLmluaXRpYWxpemUoKX1pbml0aWFsaXplKCl7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YTt0aGlzLmNvbmZpZ3VyZSgpLHRoaXMubGlua1NjYWxlcygpLGUuX3N0YWNrZWQ9Y2koZS52U2NhbGUsZSksdGhpcy5hZGRFbGVtZW50cygpLHRoaXMub3B0aW9ucy5maWxsJiYhdGhpcy5jaGFydC5pc1BsdWdpbkVuYWJsZWQoYGZpbGxlcmApJiZjb25zb2xlLndhcm4oYFRyaWVkIHRvIHVzZSB0aGUgJ2ZpbGwnIG9wdGlvbiB3aXRob3V0IHRoZSAnRmlsbGVyJyBwbHVnaW4gZW5hYmxlZC4gUGxlYXNlIGltcG9ydCBhbmQgcmVnaXN0ZXIgdGhlICdGaWxsZXInIHBsdWdpbiBhbmQgbWFrZSBzdXJlIGl0IGlzIG5vdCBkaXNhYmxlZCBpbiB0aGUgb3B0aW9uc2ApfXVwZGF0ZUluZGV4KGUpe3RoaXMuaW5kZXghPT1lJiZfaSh0aGlzLl9jYWNoZWRNZXRhKSx0aGlzLmluZGV4PWV9bGlua1NjYWxlcygpe2xldCBlPXRoaXMuY2hhcnQsdD10aGlzLl9jYWNoZWRNZXRhLG49dGhpcy5nZXREYXRhc2V0KCkscj0oZSx0LG4scik9PmU9PT1geGA/dDplPT09YHJgP3I6bixpPXQueEF4aXNJRD1GKG4ueEF4aXNJRCxtaShlLGB4YCkpLGE9dC55QXhpc0lEPUYobi55QXhpc0lELG1pKGUsYHlgKSksbz10LnJBeGlzSUQ9RihuLnJBeGlzSUQsbWkoZSxgcmApKSxzPXQuaW5kZXhBeGlzLGM9dC5pQXhpc0lEPXIocyxpLGEsbyksbD10LnZBeGlzSUQ9cihzLGEsaSxvKTt0LnhTY2FsZT10aGlzLmdldFNjYWxlRm9ySWQoaSksdC55U2NhbGU9dGhpcy5nZXRTY2FsZUZvcklkKGEpLHQuclNjYWxlPXRoaXMuZ2V0U2NhbGVGb3JJZChvKSx0LmlTY2FsZT10aGlzLmdldFNjYWxlRm9ySWQoYyksdC52U2NhbGU9dGhpcy5nZXRTY2FsZUZvcklkKGwpfWdldERhdGFzZXQoKXtyZXR1cm4gdGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW3RoaXMuaW5kZXhdfWdldE1ldGEoKXtyZXR1cm4gdGhpcy5jaGFydC5nZXREYXRhc2V0TWV0YSh0aGlzLmluZGV4KX1nZXRTY2FsZUZvcklkKGUpe3JldHVybiB0aGlzLmNoYXJ0LnNjYWxlc1tlXX1fZ2V0T3RoZXJTY2FsZShlKXtsZXQgdD10aGlzLl9jYWNoZWRNZXRhO3JldHVybiBlPT09dC5pU2NhbGU/dC52U2NhbGU6dC5pU2NhbGV9cmVzZXQoKXt0aGlzLl91cGRhdGUoYHJlc2V0YCl9X2Rlc3Ryb3koKXtsZXQgZT10aGlzLl9jYWNoZWRNZXRhO3RoaXMuX2RhdGEmJk10KHRoaXMuX2RhdGEsdGhpcyksZS5fc3RhY2tlZCYmX2koZSl9X2RhdGFDaGVjaygpe2xldCBlPXRoaXMuZ2V0RGF0YXNldCgpLHQ9ZS5kYXRhfHw9W10sbj10aGlzLl9kYXRhO2lmKE0odCkpe2xldCBlPXRoaXMuX2NhY2hlZE1ldGE7dGhpcy5fZGF0YT1zaSh0LGUpfWVsc2UgaWYobiE9PXQpe2lmKG4pe010KG4sdGhpcyk7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YTtfaShlKSxlLl9wYXJzZWQ9W119dCYmT2JqZWN0LmlzRXh0ZW5zaWJsZSh0KSYmanQodCx0aGlzKSx0aGlzLl9zeW5jTGlzdD1bXSx0aGlzLl9kYXRhPXR9fWFkZEVsZW1lbnRzKCl7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YTt0aGlzLl9kYXRhQ2hlY2soKSx0aGlzLmRhdGFzZXRFbGVtZW50VHlwZSYmKGUuZGF0YXNldD1uZXcgdGhpcy5kYXRhc2V0RWxlbWVudFR5cGUpfWJ1aWxkT3JVcGRhdGVFbGVtZW50cyhlKXtsZXQgdD10aGlzLl9jYWNoZWRNZXRhLG49dGhpcy5nZXREYXRhc2V0KCkscj0hMTt0aGlzLl9kYXRhQ2hlY2soKTtsZXQgaT10Ll9zdGFja2VkO3QuX3N0YWNrZWQ9Y2kodC52U2NhbGUsdCksdC5zdGFjayE9PW4uc3RhY2smJihyPSEwLF9pKHQpLHQuc3RhY2s9bi5zdGFjayksdGhpcy5fcmVzeW5jRWxlbWVudHMoZSksKHJ8fGkhPT10Ll9zdGFja2VkKSYmKHBpKHRoaXMsdC5fcGFyc2VkKSx0Ll9zdGFja2VkPWNpKHQudlNjYWxlLHQpKX1jb25maWd1cmUoKXtsZXQgZT10aGlzLmNoYXJ0LmNvbmZpZyx0PWUuZGF0YXNldFNjb3BlS2V5cyh0aGlzLl90eXBlKSxuPWUuZ2V0T3B0aW9uU2NvcGVzKHRoaXMuZ2V0RGF0YXNldCgpLHQsITApO3RoaXMub3B0aW9ucz1lLmNyZWF0ZVJlc29sdmVyKG4sdGhpcy5nZXRDb250ZXh0KCkpLHRoaXMuX3BhcnNpbmc9dGhpcy5vcHRpb25zLnBhcnNpbmcsdGhpcy5fY2FjaGVkRGF0YU9wdHM9e319cGFyc2UoZSx0KXtsZXR7X2NhY2hlZE1ldGE6bixfZGF0YTpyfT10aGlzLHtpU2NhbGU6aSxfc3RhY2tlZDphfT1uLG89aS5heGlzLHM9ZT09PTAmJnQ9PT1yLmxlbmd0aHx8bi5fc29ydGVkLGM9ZT4wJiZuLl9wYXJzZWRbZS0xXSxsLHUsZDtpZih0aGlzLl9wYXJzaW5nPT09ITEpbi5fcGFyc2VkPXIsbi5fc29ydGVkPSEwLGQ9cjtlbHNle2Q9aihyW2VdKT90aGlzLnBhcnNlQXJyYXlEYXRhKG4scixlLHQpOk0ocltlXSk/dGhpcy5wYXJzZU9iamVjdERhdGEobixyLGUsdCk6dGhpcy5wYXJzZVByaW1pdGl2ZURhdGEobixyLGUsdCk7bGV0IGk9KCk9PnVbb109PT1udWxsfHxjJiZ1W29dPGNbb107Zm9yKGw9MDtsPHQ7KytsKW4uX3BhcnNlZFtsK2VdPXU9ZFtsXSxzJiYoaSgpJiYocz0hMSksYz11KTtuLl9zb3J0ZWQ9c31hJiZwaSh0aGlzLGQpfXBhcnNlUHJpbWl0aXZlRGF0YShlLHQsbixyKXtsZXR7aVNjYWxlOmksdlNjYWxlOmF9PWUsbz1pLmF4aXMscz1hLmF4aXMsYz1pLmdldExhYmVscygpLGw9aT09PWEsdT1BcnJheShyKSxkLGYscDtmb3IoZD0wLGY9cjtkPGY7KytkKXA9ZCtuLHVbZF09e1tvXTpsfHxpLnBhcnNlKGNbcF0scCksW3NdOmEucGFyc2UodFtwXSxwKX07cmV0dXJuIHV9cGFyc2VBcnJheURhdGEoZSx0LG4scil7bGV0e3hTY2FsZTppLHlTY2FsZTphfT1lLG89QXJyYXkocikscyxjLGwsdTtmb3Iocz0wLGM9cjtzPGM7KytzKWw9cytuLHU9dFtsXSxvW3NdPXt4OmkucGFyc2UodVswXSxsKSx5OmEucGFyc2UodVsxXSxsKX07cmV0dXJuIG99cGFyc2VPYmplY3REYXRhKGUsdCxuLHIpe2xldHt4U2NhbGU6aSx5U2NhbGU6YX09ZSx7eEF4aXNLZXk6bz1geGAseUF4aXNLZXk6cz1geWB9PXRoaXMuX3BhcnNpbmcsYz1BcnJheShyKSxsLHUsZCxmO2ZvcihsPTAsdT1yO2w8dTsrK2wpZD1sK24sZj10W2RdLGNbbF09e3g6aS5wYXJzZShaZShmLG8pLGQpLHk6YS5wYXJzZShaZShmLHMpLGQpfTtyZXR1cm4gY31nZXRQYXJzZWQoZSl7cmV0dXJuIHRoaXMuX2NhY2hlZE1ldGEuX3BhcnNlZFtlXX1nZXREYXRhRWxlbWVudChlKXtyZXR1cm4gdGhpcy5fY2FjaGVkTWV0YS5kYXRhW2VdfWFwcGx5U3RhY2soZSx0LG4pe2xldCByPXRoaXMuY2hhcnQsaT10aGlzLl9jYWNoZWRNZXRhLGE9dFtlLmF4aXNdO3JldHVybiBvaSh7a2V5czphaShyLCEwKSx2YWx1ZXM6dC5fc3RhY2tzW2UuYXhpc10uX3Zpc3VhbFZhbHVlc30sYSxpLmluZGV4LHttb2RlOm59KX11cGRhdGVSYW5nZUZyb21QYXJzZWQoZSx0LG4scil7bGV0IGk9blt0LmF4aXNdLGE9aT09PW51bGw/TmFOOmksbz1yJiZuLl9zdGFja3NbdC5heGlzXTtyJiZvJiYoci52YWx1ZXM9byxhPW9pKHIsaSx0aGlzLl9jYWNoZWRNZXRhLmluZGV4KSksZS5taW49TWF0aC5taW4oZS5taW4sYSksZS5tYXg9TWF0aC5tYXgoZS5tYXgsYSl9Z2V0TWluTWF4KGUsdCl7bGV0IG49dGhpcy5fY2FjaGVkTWV0YSxyPW4uX3BhcnNlZCxpPW4uX3NvcnRlZCYmZT09PW4uaVNjYWxlLGE9ci5sZW5ndGgsbz10aGlzLl9nZXRPdGhlclNjYWxlKGUpLHM9YmkodCxuLHRoaXMuY2hhcnQpLGM9e21pbjoxLzAsbWF4Oi0xLzB9LHttaW46bCxtYXg6dX09dWkobyksZCxmO2Z1bmN0aW9uIHAoKXtmPXJbZF07bGV0IHQ9ZltvLmF4aXNdO3JldHVybiFOKGZbZS5heGlzXSl8fGw+dHx8dTx0fWZvcihkPTA7ZDxhJiYhKCFwKCkmJih0aGlzLnVwZGF0ZVJhbmdlRnJvbVBhcnNlZChjLGUsZixzKSxpKSk7KytkKTtpZihpKXtmb3IoZD1hLTE7ZD49MDstLWQpaWYoIXAoKSl7dGhpcy51cGRhdGVSYW5nZUZyb21QYXJzZWQoYyxlLGYscyk7YnJlYWt9fXJldHVybiBjfWdldEFsbFBhcnNlZFZhbHVlcyhlKXtsZXQgdD10aGlzLl9jYWNoZWRNZXRhLl9wYXJzZWQsbj1bXSxyLGksYTtmb3Iocj0wLGk9dC5sZW5ndGg7cjxpOysrcilhPXRbcl1bZS5heGlzXSxOKGEpJiZuLnB1c2goYSk7cmV0dXJuIG59Z2V0TWF4T3ZlcmZsb3coKXtyZXR1cm4hMX1nZXRMYWJlbEFuZFZhbHVlKGUpe2xldCB0PXRoaXMuX2NhY2hlZE1ldGEsbj10LmlTY2FsZSxyPXQudlNjYWxlLGk9dGhpcy5nZXRQYXJzZWQoZSk7cmV0dXJue2xhYmVsOm4/YGArbi5nZXRMYWJlbEZvclZhbHVlKGlbbi5heGlzXSk6YGAsdmFsdWU6cj9gYCtyLmdldExhYmVsRm9yVmFsdWUoaVtyLmF4aXNdKTpgYH19X3VwZGF0ZShlKXtsZXQgdD10aGlzLl9jYWNoZWRNZXRhO3RoaXMudXBkYXRlKGV8fGBkZWZhdWx0YCksdC5fY2xpcD1paShGKHRoaXMub3B0aW9ucy5jbGlwLHJpKHQueFNjYWxlLHQueVNjYWxlLHRoaXMuZ2V0TWF4T3ZlcmZsb3coKSkpKX11cGRhdGUoZSl7fWRyYXcoKXtsZXQgZT10aGlzLl9jdHgsdD10aGlzLmNoYXJ0LG49dGhpcy5fY2FjaGVkTWV0YSxyPW4uZGF0YXx8W10saT10LmNoYXJ0QXJlYSxhPVtdLG89dGhpcy5fZHJhd1N0YXJ0fHwwLHM9dGhpcy5fZHJhd0NvdW50fHxyLmxlbmd0aC1vLGM9dGhpcy5vcHRpb25zLmRyYXdBY3RpdmVFbGVtZW50c09uVG9wLGw7Zm9yKG4uZGF0YXNldCYmbi5kYXRhc2V0LmRyYXcoZSxpLG8scyksbD1vO2w8bytzOysrbCl7bGV0IHQ9cltsXTt0LmhpZGRlbnx8KHQuYWN0aXZlJiZjP2EucHVzaCh0KTp0LmRyYXcoZSxpKSl9Zm9yKGw9MDtsPGEubGVuZ3RoOysrbClhW2xdLmRyYXcoZSxpKX1nZXRTdHlsZShlLHQpe2xldCBuPXQ/YGFjdGl2ZWA6YGRlZmF1bHRgO3JldHVybiBlPT09dm9pZCAwJiZ0aGlzLl9jYWNoZWRNZXRhLmRhdGFzZXQ/dGhpcy5yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKG4pOnRoaXMucmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucyhlfHwwLG4pfWdldENvbnRleHQoZSx0LG4pe2xldCByPXRoaXMuZ2V0RGF0YXNldCgpLGk7aWYoZT49MCYmZTx0aGlzLl9jYWNoZWRNZXRhLmRhdGEubGVuZ3RoKXtsZXQgdD10aGlzLl9jYWNoZWRNZXRhLmRhdGFbZV07aT10LiRjb250ZXh0fHw9Z2kodGhpcy5nZXRDb250ZXh0KCksZSx0KSxpLnBhcnNlZD10aGlzLmdldFBhcnNlZChlKSxpLnJhdz1yLmRhdGFbZV0saS5pbmRleD1pLmRhdGFJbmRleD1lfWVsc2UgaT10aGlzLiRjb250ZXh0fHw9aGkodGhpcy5jaGFydC5nZXRDb250ZXh0KCksdGhpcy5pbmRleCksaS5kYXRhc2V0PXIsaS5pbmRleD1pLmRhdGFzZXRJbmRleD10aGlzLmluZGV4O3JldHVybiBpLmFjdGl2ZT0hIXQsaS5tb2RlPW4saX1yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKGUpe3JldHVybiB0aGlzLl9yZXNvbHZlRWxlbWVudE9wdGlvbnModGhpcy5kYXRhc2V0RWxlbWVudFR5cGUuaWQsZSl9cmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucyhlLHQpe3JldHVybiB0aGlzLl9yZXNvbHZlRWxlbWVudE9wdGlvbnModGhpcy5kYXRhRWxlbWVudFR5cGUuaWQsdCxlKX1fcmVzb2x2ZUVsZW1lbnRPcHRpb25zKGUsdD1gZGVmYXVsdGAsbil7bGV0IHI9dD09PWBhY3RpdmVgLGk9dGhpcy5fY2FjaGVkRGF0YU9wdHMsYT1lK2AtYCt0LG89aVthXSxzPXRoaXMuZW5hYmxlT3B0aW9uU2hhcmluZyYmJGUobik7aWYobylyZXR1cm4geWkobyxzKTtsZXQgYz10aGlzLmNoYXJ0LmNvbmZpZyxsPWMuZGF0YXNldEVsZW1lbnRTY29wZUtleXModGhpcy5fdHlwZSxlKSx1PXI/W2Ake2V9SG92ZXJgLGBob3ZlcmAsZSxgYF06W2UsYGBdLGQ9Yy5nZXRPcHRpb25TY29wZXModGhpcy5nZXREYXRhc2V0KCksbCksZj1PYmplY3Qua2V5cyhXLmVsZW1lbnRzW2VdKSxwPWMucmVzb2x2ZU5hbWVkT3B0aW9ucyhkLGYsKCk9PnRoaXMuZ2V0Q29udGV4dChuLHIsdCksdSk7cmV0dXJuIHAuJHNoYXJlZCYmKHAuJHNoYXJlZD1zLGlbYV09T2JqZWN0LmZyZWV6ZSh5aShwLHMpKSkscH1fcmVzb2x2ZUFuaW1hdGlvbnMoZSx0LG4pe2xldCByPXRoaXMuY2hhcnQsaT10aGlzLl9jYWNoZWREYXRhT3B0cyxhPWBhbmltYXRpb24tJHt0fWAsbz1pW2FdO2lmKG8pcmV0dXJuIG87bGV0IHM7aWYoci5vcHRpb25zLmFuaW1hdGlvbiE9PSExKXtsZXQgcj10aGlzLmNoYXJ0LmNvbmZpZyxpPXIuZGF0YXNldEFuaW1hdGlvblNjb3BlS2V5cyh0aGlzLl90eXBlLHQpLGE9ci5nZXRPcHRpb25TY29wZXModGhpcy5nZXREYXRhc2V0KCksaSk7cz1yLmNyZWF0ZVJlc29sdmVyKGEsdGhpcy5nZXRDb250ZXh0KGUsbix0KSl9bGV0IGM9bmV3ICRyKHIscyYmcy5hbmltYXRpb25zKTtyZXR1cm4gcyYmcy5fY2FjaGVhYmxlJiYoaVthXT1PYmplY3QuZnJlZXplKGMpKSxjfWdldFNoYXJlZE9wdGlvbnMoZSl7aWYoZS4kc2hhcmVkKXJldHVybiB0aGlzLl9zaGFyZWRPcHRpb25zfHw9T2JqZWN0LmFzc2lnbih7fSxlKX1pbmNsdWRlT3B0aW9ucyhlLHQpe3JldHVybiF0fHx2aShlKXx8dGhpcy5jaGFydC5fYW5pbWF0aW9uc0Rpc2FibGVkfV9nZXRTaGFyZWRPcHRpb25zKGUsdCl7bGV0IG49dGhpcy5yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKGUsdCkscj10aGlzLl9zaGFyZWRPcHRpb25zLGk9dGhpcy5nZXRTaGFyZWRPcHRpb25zKG4pLGE9dGhpcy5pbmNsdWRlT3B0aW9ucyh0LGkpfHxpIT09cjtyZXR1cm4gdGhpcy51cGRhdGVTaGFyZWRPcHRpb25zKGksdCxuKSx7c2hhcmVkT3B0aW9uczppLGluY2x1ZGVPcHRpb25zOmF9fXVwZGF0ZUVsZW1lbnQoZSx0LG4scil7dmkocik/T2JqZWN0LmFzc2lnbihlLG4pOnRoaXMuX3Jlc29sdmVBbmltYXRpb25zKHQscikudXBkYXRlKGUsbil9dXBkYXRlU2hhcmVkT3B0aW9ucyhlLHQsbil7ZSYmIXZpKHQpJiZ0aGlzLl9yZXNvbHZlQW5pbWF0aW9ucyh2b2lkIDAsdCkudXBkYXRlKGUsbil9X3NldFN0eWxlKGUsdCxuLHIpe2UuYWN0aXZlPXI7bGV0IGk9dGhpcy5nZXRTdHlsZSh0LHIpO3RoaXMuX3Jlc29sdmVBbmltYXRpb25zKHQsbixyKS51cGRhdGUoZSx7b3B0aW9uczohciYmdGhpcy5nZXRTaGFyZWRPcHRpb25zKGkpfHxpfSl9cmVtb3ZlSG92ZXJTdHlsZShlLHQsbil7dGhpcy5fc2V0U3R5bGUoZSxuLGBhY3RpdmVgLCExKX1zZXRIb3ZlclN0eWxlKGUsdCxuKXt0aGlzLl9zZXRTdHlsZShlLG4sYGFjdGl2ZWAsITApfV9yZW1vdmVEYXRhc2V0SG92ZXJTdHlsZSgpe2xldCBlPXRoaXMuX2NhY2hlZE1ldGEuZGF0YXNldDtlJiZ0aGlzLl9zZXRTdHlsZShlLHZvaWQgMCxgYWN0aXZlYCwhMSl9X3NldERhdGFzZXRIb3ZlclN0eWxlKCl7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YS5kYXRhc2V0O2UmJnRoaXMuX3NldFN0eWxlKGUsdm9pZCAwLGBhY3RpdmVgLCEwKX1fcmVzeW5jRWxlbWVudHMoZSl7bGV0IHQ9dGhpcy5fZGF0YSxuPXRoaXMuX2NhY2hlZE1ldGEuZGF0YTtmb3IobGV0W2UsdCxuXW9mIHRoaXMuX3N5bmNMaXN0KXRoaXNbZV0odCxuKTt0aGlzLl9zeW5jTGlzdD1bXTtsZXQgcj1uLmxlbmd0aCxpPXQubGVuZ3RoLGE9TWF0aC5taW4oaSxyKTthJiZ0aGlzLnBhcnNlKDAsYSksaT5yP3RoaXMuX2luc2VydEVsZW1lbnRzKHIsaS1yLGUpOmk8ciYmdGhpcy5fcmVtb3ZlRWxlbWVudHMoaSxyLWkpfV9pbnNlcnRFbGVtZW50cyhlLHQsbj0hMCl7bGV0IHI9dGhpcy5fY2FjaGVkTWV0YSxpPXIuZGF0YSxhPWUrdCxvLHM9ZT0+e2ZvcihlLmxlbmd0aCs9dCxvPWUubGVuZ3RoLTE7bz49YTtvLS0pZVtvXT1lW28tdF19O2ZvcihzKGkpLG89ZTtvPGE7KytvKWlbb109bmV3IHRoaXMuZGF0YUVsZW1lbnRUeXBlO3RoaXMuX3BhcnNpbmcmJnMoci5fcGFyc2VkKSx0aGlzLnBhcnNlKGUsdCksbiYmdGhpcy51cGRhdGVFbGVtZW50cyhpLGUsdCxgcmVzZXRgKX11cGRhdGVFbGVtZW50cyhlLHQsbixyKXt9X3JlbW92ZUVsZW1lbnRzKGUsdCl7bGV0IG49dGhpcy5fY2FjaGVkTWV0YTtpZih0aGlzLl9wYXJzaW5nKXtsZXQgcj1uLl9wYXJzZWQuc3BsaWNlKGUsdCk7bi5fc3RhY2tlZCYmX2kobixyKX1uLmRhdGEuc3BsaWNlKGUsdCl9X3N5bmMoZSl7aWYodGhpcy5fcGFyc2luZyl0aGlzLl9zeW5jTGlzdC5wdXNoKGUpO2Vsc2V7bGV0W3QsbixyXT1lO3RoaXNbdF0obixyKX10aGlzLmNoYXJ0Ll9kYXRhQ2hhbmdlcy5wdXNoKFt0aGlzLmluZGV4LC4uLmVdKX1fb25EYXRhUHVzaCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg7dGhpcy5fc3luYyhbYF9pbnNlcnRFbGVtZW50c2AsdGhpcy5nZXREYXRhc2V0KCkuZGF0YS5sZW5ndGgtZSxlXSl9X29uRGF0YVBvcCgpe3RoaXMuX3N5bmMoW2BfcmVtb3ZlRWxlbWVudHNgLHRoaXMuX2NhY2hlZE1ldGEuZGF0YS5sZW5ndGgtMSwxXSl9X29uRGF0YVNoaWZ0KCl7dGhpcy5fc3luYyhbYF9yZW1vdmVFbGVtZW50c2AsMCwxXSl9X29uRGF0YVNwbGljZShlLHQpe3QmJnRoaXMuX3N5bmMoW2BfcmVtb3ZlRWxlbWVudHNgLGUsdF0pO2xldCBuPWFyZ3VtZW50cy5sZW5ndGgtMjtuJiZ0aGlzLl9zeW5jKFtgX2luc2VydEVsZW1lbnRzYCxlLG5dKX1fb25EYXRhVW5zaGlmdCgpe3RoaXMuX3N5bmMoW2BfaW5zZXJ0RWxlbWVudHNgLDAsYXJndW1lbnRzLmxlbmd0aF0pfX0sU2k9Y2xhc3MgZXh0ZW5kcyB4aXtzdGF0aWMgaWQ9YGxpbmVgO3N0YXRpYyBkZWZhdWx0cz17ZGF0YXNldEVsZW1lbnRUeXBlOmBsaW5lYCxkYXRhRWxlbWVudFR5cGU6YHBvaW50YCxzaG93TGluZTohMCxzcGFuR2FwczohMX07c3RhdGljIG92ZXJyaWRlcz17c2NhbGVzOntfaW5kZXhfOnt0eXBlOmBjYXRlZ29yeWB9LF92YWx1ZV86e3R5cGU6YGxpbmVhcmB9fX07aW5pdGlhbGl6ZSgpe3RoaXMuZW5hYmxlT3B0aW9uU2hhcmluZz0hMCx0aGlzLnN1cHBvcnRzRGVjaW1hdGlvbj0hMCxzdXBlci5pbml0aWFsaXplKCl9dXBkYXRlKGUpe2xldCB0PXRoaXMuX2NhY2hlZE1ldGEse2RhdGFzZXQ6bixkYXRhOnI9W10sX2RhdGFzZXQ6aX09dCxhPXRoaXMuY2hhcnQuX2FuaW1hdGlvbnNEaXNhYmxlZCx7c3RhcnQ6byxjb3VudDpzfT16dCh0LHIsYSk7dGhpcy5fZHJhd1N0YXJ0PW8sdGhpcy5fZHJhd0NvdW50PXMsQnQodCkmJihvPTAscz1yLmxlbmd0aCksbi5fY2hhcnQ9dGhpcy5jaGFydCxuLl9kYXRhc2V0SW5kZXg9dGhpcy5pbmRleCxuLl9kZWNpbWF0ZWQ9ISFpLl9kZWNpbWF0ZWQsbi5wb2ludHM9cjtsZXQgYz10aGlzLnJlc29sdmVEYXRhc2V0RWxlbWVudE9wdGlvbnMoZSk7dGhpcy5vcHRpb25zLnNob3dMaW5lfHwoYy5ib3JkZXJXaWR0aD0wKSxjLnNlZ21lbnQ9dGhpcy5vcHRpb25zLnNlZ21lbnQsdGhpcy51cGRhdGVFbGVtZW50KG4sdm9pZCAwLHthbmltYXRlZDohYSxvcHRpb25zOmN9LGUpLHRoaXMudXBkYXRlRWxlbWVudHMocixvLHMsZSl9dXBkYXRlRWxlbWVudHMoZSx0LG4scil7bGV0IGk9cj09PWByZXNldGAse2lTY2FsZTphLHZTY2FsZTpvLF9zdGFja2VkOnMsX2RhdGFzZXQ6Y309dGhpcy5fY2FjaGVkTWV0YSx7c2hhcmVkT3B0aW9uczpsLGluY2x1ZGVPcHRpb25zOnV9PXRoaXMuX2dldFNoYXJlZE9wdGlvbnModCxyKSxkPWEuYXhpcyxmPW8uYXhpcyx7c3BhbkdhcHM6cCxzZWdtZW50Om19PXRoaXMub3B0aW9ucyxoPW10KHApP3A6MS8wLGc9dGhpcy5jaGFydC5fYW5pbWF0aW9uc0Rpc2FibGVkfHxpfHxyPT09YG5vbmVgLF89dCtuLHY9ZS5sZW5ndGgseT10PjAmJnRoaXMuZ2V0UGFyc2VkKHQtMSk7Zm9yKGxldCBuPTA7bjx2Oysrbil7bGV0IHA9ZVtuXSx2PWc/cDp7fTtpZihuPHR8fG4+PV8pe3Yuc2tpcD0hMDtjb250aW51ZX1sZXQgYj10aGlzLmdldFBhcnNlZChuKSx4PUEoYltmXSksUz12W2RdPWEuZ2V0UGl4ZWxGb3JWYWx1ZShiW2RdLG4pLEM9dltmXT1pfHx4P28uZ2V0QmFzZVBpeGVsKCk6by5nZXRQaXhlbEZvclZhbHVlKHM/dGhpcy5hcHBseVN0YWNrKG8sYixzKTpiW2ZdLG4pO3Yuc2tpcD1pc05hTihTKXx8aXNOYU4oQyl8fHgsdi5zdG9wPW4+MCYmTWF0aC5hYnMoYltkXS15W2RdKT5oLG0mJih2LnBhcnNlZD1iLHYucmF3PWMuZGF0YVtuXSksdSYmKHYub3B0aW9ucz1sfHx0aGlzLnJlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMobixwLmFjdGl2ZT9gYWN0aXZlYDpyKSksZ3x8dGhpcy51cGRhdGVFbGVtZW50KHAsbix2LHIpLHk9Yn19Z2V0TWF4T3ZlcmZsb3coKXtsZXQgZT10aGlzLl9jYWNoZWRNZXRhLHQ9ZS5kYXRhc2V0LG49dC5vcHRpb25zJiZ0Lm9wdGlvbnMuYm9yZGVyV2lkdGh8fDAscj1lLmRhdGF8fFtdO2lmKCFyLmxlbmd0aClyZXR1cm4gbjtsZXQgaT1yWzBdLnNpemUodGhpcy5yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKDApKSxhPXJbci5sZW5ndGgtMV0uc2l6ZSh0aGlzLnJlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMoci5sZW5ndGgtMSkpO3JldHVybiBNYXRoLm1heChuLGksYSkvMn1kcmF3KCl7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YTtlLmRhdGFzZXQudXBkYXRlQ29udHJvbFBvaW50cyh0aGlzLmNoYXJ0LmNoYXJ0QXJlYSxlLmlTY2FsZS5heGlzKSxzdXBlci5kcmF3KCl9fTtmdW5jdGlvbiBDaSgpe3Rocm93IEVycm9yKGBUaGlzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQ6IENoZWNrIHRoYXQgYSBjb21wbGV0ZSBkYXRlIGFkYXB0ZXIgaXMgcHJvdmlkZWQuYCl9dmFyIHdpPXtfZGF0ZTpjbGFzcyBle3N0YXRpYyBvdmVycmlkZSh0KXtPYmplY3QuYXNzaWduKGUucHJvdG90eXBlLHQpfW9wdGlvbnM7Y29uc3RydWN0b3IoZSl7dGhpcy5vcHRpb25zPWV8fHt9fWluaXQoKXt9Zm9ybWF0cygpe3JldHVybiBDaSgpfXBhcnNlKCl7cmV0dXJuIENpKCl9Zm9ybWF0KCl7cmV0dXJuIENpKCl9YWRkKCl7cmV0dXJuIENpKCl9ZGlmZigpe3JldHVybiBDaSgpfXN0YXJ0T2YoKXtyZXR1cm4gQ2koKX1lbmRPZigpe3JldHVybiBDaSgpfX19O2Z1bmN0aW9uIFRpKGUsdCxuLHIpe2xldHtjb250cm9sbGVyOmksZGF0YTphLF9zb3J0ZWQ6b309ZSxzPWkuX2NhY2hlZE1ldGEuaVNjYWxlLGM9ZS5kYXRhc2V0JiZlLmRhdGFzZXQub3B0aW9ucz9lLmRhdGFzZXQub3B0aW9ucy5zcGFuR2FwczpudWxsO2lmKHMmJnQ9PT1zLmF4aXMmJnQhPT1gcmAmJm8mJmEubGVuZ3RoKXtsZXQgbz1zLl9yZXZlcnNlUGl4ZWxzP090OkR0O2lmKCFyKXtsZXQgcj1vKGEsdCxuKTtpZihjKXtsZXR7dlNjYWxlOnR9PWkuX2NhY2hlZE1ldGEse19wYXJzZWQ6bn09ZSxhPW4uc2xpY2UoMCxyLmxvKzEpLnJldmVyc2UoKS5maW5kSW5kZXgoZT0+IUEoZVt0LmF4aXNdKSk7ci5sby09TWF0aC5tYXgoMCxhKTtsZXQgbz1uLnNsaWNlKHIuaGkpLmZpbmRJbmRleChlPT4hQShlW3QuYXhpc10pKTtyLmhpKz1NYXRoLm1heCgwLG8pfXJldHVybiByfWlmKGkuX3NoYXJlZE9wdGlvbnMpe2xldCBlPWFbMF0scj10eXBlb2YgZS5nZXRSYW5nZT09YGZ1bmN0aW9uYCYmZS5nZXRSYW5nZSh0KTtpZihyKXtsZXQgZT1vKGEsdCxuLXIpLGk9byhhLHQsbityKTtyZXR1cm57bG86ZS5sbyxoaTppLmhpfX19fXJldHVybntsbzowLGhpOmEubGVuZ3RoLTF9fWZ1bmN0aW9uIEVpKGUsdCxuLHIsaSl7bGV0IGE9ZS5nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCksbz1uW3RdO2ZvcihsZXQgZT0wLG49YS5sZW5ndGg7ZTxuOysrZSl7bGV0e2luZGV4Om4sZGF0YTpzfT1hW2VdLHtsbzpjLGhpOmx9PVRpKGFbZV0sdCxvLGkpO2ZvcihsZXQgZT1jO2U8PWw7KytlKXtsZXQgdD1zW2VdO3Quc2tpcHx8cih0LG4sZSl9fX1mdW5jdGlvbiBEaShlKXtsZXQgdD1lLmluZGV4T2YoYHhgKSE9PS0xLG49ZS5pbmRleE9mKGB5YCkhPT0tMTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtsZXQgaT10P01hdGguYWJzKGUueC1yLngpOjAsYT1uP01hdGguYWJzKGUueS1yLnkpOjA7cmV0dXJuIE1hdGguc3FydChpKioyK2EqKjIpfX1mdW5jdGlvbiBPaShlLHQsbixyLGkpe2xldCBhPVtdO3JldHVybiFpJiYhZS5pc1BvaW50SW5BcmVhKHQpfHxFaShlLG4sdCxmdW5jdGlvbihuLG8scyl7IWkmJiFHKG4sZS5jaGFydEFyZWEsMCl8fG4uaW5SYW5nZSh0LngsdC55LHIpJiZhLnB1c2goe2VsZW1lbnQ6bixkYXRhc2V0SW5kZXg6byxpbmRleDpzfSl9LCEwKSxhfWZ1bmN0aW9uIGtpKGUsdCxuLHIpe2xldCBpPVtdO2Z1bmN0aW9uIGEoZSxuLGEpe2xldHtzdGFydEFuZ2xlOm8sZW5kQW5nbGU6c309ZS5nZXRQcm9wcyhbYHN0YXJ0QW5nbGVgLGBlbmRBbmdsZWBdLHIpLHthbmdsZTpjfT1idChlLHt4OnQueCx5OnQueX0pO0N0KGMsbyxzKSYmaS5wdXNoKHtlbGVtZW50OmUsZGF0YXNldEluZGV4Om4saW5kZXg6YX0pfXJldHVybiBFaShlLG4sdCxhKSxpfWZ1bmN0aW9uIEFpKGUsdCxuLHIsaSxhKXtsZXQgbz1bXSxzPURpKG4pLGM9MS8wO2Z1bmN0aW9uIGwobixsLHUpe2xldCBkPW4uaW5SYW5nZSh0LngsdC55LGkpO2lmKHImJiFkKXJldHVybjtsZXQgZj1uLmdldENlbnRlclBvaW50KGkpO2lmKCEoYXx8ZS5pc1BvaW50SW5BcmVhKGYpKSYmIWQpcmV0dXJuO2xldCBwPXModCxmKTtwPGM/KG89W3tlbGVtZW50Om4sZGF0YXNldEluZGV4OmwsaW5kZXg6dX1dLGM9cCk6cD09PWMmJm8ucHVzaCh7ZWxlbWVudDpuLGRhdGFzZXRJbmRleDpsLGluZGV4OnV9KX1yZXR1cm4gRWkoZSxuLHQsbCksb31mdW5jdGlvbiBqaShlLHQsbixyLGksYSl7cmV0dXJuIWEmJiFlLmlzUG9pbnRJbkFyZWEodCk/W106bj09PWByYCYmIXI/a2koZSx0LG4saSk6QWkoZSx0LG4scixpLGEpfWZ1bmN0aW9uIE1pKGUsdCxuLHIsaSl7bGV0IGE9W10sbz1uPT09YHhgP2BpblhSYW5nZWA6YGluWVJhbmdlYCxzPSExO3JldHVybiBFaShlLG4sdCwoZSxyLGMpPT57ZVtvXSYmZVtvXSh0W25dLGkpJiYoYS5wdXNoKHtlbGVtZW50OmUsZGF0YXNldEluZGV4OnIsaW5kZXg6Y30pLHN8fD1lLmluUmFuZ2UodC54LHQueSxpKSl9KSxyJiYhcz9bXTphfXZhciBOaT17ZXZhbHVhdGVJbnRlcmFjdGlvbkl0ZW1zOkVpLG1vZGVzOntpbmRleChlLHQsbixyKXtsZXQgaT1icih0LGUpLGE9bi5heGlzfHxgeGAsbz1uLmluY2x1ZGVJbnZpc2libGV8fCExLHM9bi5pbnRlcnNlY3Q/T2koZSxpLGEscixvKTpqaShlLGksYSwhMSxyLG8pLGM9W107cmV0dXJuIHMubGVuZ3RoPyhlLmdldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKS5mb3JFYWNoKGU9PntsZXQgdD1zWzBdLmluZGV4LG49ZS5kYXRhW3RdO24mJiFuLnNraXAmJmMucHVzaCh7ZWxlbWVudDpuLGRhdGFzZXRJbmRleDplLmluZGV4LGluZGV4OnR9KX0pLGMpOltdfSxkYXRhc2V0KGUsdCxuLHIpe2xldCBpPWJyKHQsZSksYT1uLmF4aXN8fGB4eWAsbz1uLmluY2x1ZGVJbnZpc2libGV8fCExLHM9bi5pbnRlcnNlY3Q/T2koZSxpLGEscixvKTpqaShlLGksYSwhMSxyLG8pO2lmKHMubGVuZ3RoPjApe2xldCB0PXNbMF0uZGF0YXNldEluZGV4LG49ZS5nZXREYXRhc2V0TWV0YSh0KS5kYXRhO3M9W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDsrK2Upcy5wdXNoKHtlbGVtZW50Om5bZV0sZGF0YXNldEluZGV4OnQsaW5kZXg6ZX0pfXJldHVybiBzfSxwb2ludChlLHQsbixyKXtyZXR1cm4gT2koZSxicih0LGUpLG4uYXhpc3x8YHh5YCxyLG4uaW5jbHVkZUludmlzaWJsZXx8ITEpfSxuZWFyZXN0KGUsdCxuLHIpe2xldCBpPWJyKHQsZSksYT1uLmF4aXN8fGB4eWAsbz1uLmluY2x1ZGVJbnZpc2libGV8fCExO3JldHVybiBqaShlLGksYSxuLmludGVyc2VjdCxyLG8pfSx4KGUsdCxuLHIpe3JldHVybiBNaShlLGJyKHQsZSksYHhgLG4uaW50ZXJzZWN0LHIpfSx5KGUsdCxuLHIpe3JldHVybiBNaShlLGJyKHQsZSksYHlgLG4uaW50ZXJzZWN0LHIpfX19LFBpPVtgbGVmdGAsYHRvcGAsYHJpZ2h0YCxgYm90dG9tYF07ZnVuY3Rpb24gRmkoZSx0KXtyZXR1cm4gZS5maWx0ZXIoZT0+ZS5wb3M9PT10KX1mdW5jdGlvbiBJaShlLHQpe3JldHVybiBlLmZpbHRlcihlPT5QaS5pbmRleE9mKGUucG9zKT09PS0xJiZlLmJveC5heGlzPT09dCl9ZnVuY3Rpb24gTGkoZSx0KXtyZXR1cm4gZS5zb3J0KChlLG4pPT57bGV0IHI9dD9uOmUsaT10P2U6bjtyZXR1cm4gci53ZWlnaHQ9PT1pLndlaWdodD9yLmluZGV4LWkuaW5kZXg6ci53ZWlnaHQtaS53ZWlnaHR9KX1mdW5jdGlvbiBSaShlKXtsZXQgdD1bXSxuLHIsaSxhLG8scztmb3Iobj0wLHI9KGV8fFtdKS5sZW5ndGg7bjxyOysrbilpPWVbbl0se3Bvc2l0aW9uOmEsb3B0aW9uczp7c3RhY2s6byxzdGFja1dlaWdodDpzPTF9fT1pLHQucHVzaCh7aW5kZXg6bixib3g6aSxwb3M6YSxob3Jpem9udGFsOmkuaXNIb3Jpem9udGFsKCksd2VpZ2h0Omkud2VpZ2h0LHN0YWNrOm8mJmErbyxzdGFja1dlaWdodDpzfSk7cmV0dXJuIHR9ZnVuY3Rpb24gemkoZSl7bGV0IHQ9e307Zm9yKGxldCBuIG9mIGUpe2xldHtzdGFjazplLHBvczpyLHN0YWNrV2VpZ2h0Oml9PW47aWYoIWV8fCFQaS5pbmNsdWRlcyhyKSljb250aW51ZTtsZXQgYT10W2VdfHwodFtlXT17Y291bnQ6MCxwbGFjZWQ6MCx3ZWlnaHQ6MCxzaXplOjB9KTthLmNvdW50KyssYS53ZWlnaHQrPWl9cmV0dXJuIHR9ZnVuY3Rpb24gQmkoZSx0KXtsZXQgbj16aShlKSx7dkJveE1heFdpZHRoOnIsaEJveE1heEhlaWdodDppfT10LGEsbyxzO2ZvcihhPTAsbz1lLmxlbmd0aDthPG87KythKXtzPWVbYV07bGV0e2Z1bGxTaXplOm99PXMuYm94LGM9bltzLnN0YWNrXSxsPWMmJnMuc3RhY2tXZWlnaHQvYy53ZWlnaHQ7cy5ob3Jpem9udGFsPyhzLndpZHRoPWw/bCpyOm8mJnQuYXZhaWxhYmxlV2lkdGgscy5oZWlnaHQ9aSk6KHMud2lkdGg9cixzLmhlaWdodD1sP2wqaTpvJiZ0LmF2YWlsYWJsZUhlaWdodCl9cmV0dXJuIG59ZnVuY3Rpb24gVmkoZSl7bGV0IHQ9UmkoZSksbj1MaSh0LmZpbHRlcihlPT5lLmJveC5mdWxsU2l6ZSksITApLHI9TGkoRmkodCxgbGVmdGApLCEwKSxpPUxpKEZpKHQsYHJpZ2h0YCkpLGE9TGkoRmkodCxgdG9wYCksITApLG89TGkoRmkodCxgYm90dG9tYCkpLHM9SWkodCxgeGApLGM9SWkodCxgeWApO3JldHVybntmdWxsU2l6ZTpuLGxlZnRBbmRUb3A6ci5jb25jYXQoYSkscmlnaHRBbmRCb3R0b206aS5jb25jYXQoYykuY29uY2F0KG8pLmNvbmNhdChzKSxjaGFydEFyZWE6RmkodCxgY2hhcnRBcmVhYCksdmVydGljYWw6ci5jb25jYXQoaSkuY29uY2F0KGMpLGhvcml6b250YWw6YS5jb25jYXQobykuY29uY2F0KHMpfX1mdW5jdGlvbiBIaShlLHQsbixyKXtyZXR1cm4gTWF0aC5tYXgoZVtuXSx0W25dKStNYXRoLm1heChlW3JdLHRbcl0pfWZ1bmN0aW9uIFVpKGUsdCl7ZS50b3A9TWF0aC5tYXgoZS50b3AsdC50b3ApLGUubGVmdD1NYXRoLm1heChlLmxlZnQsdC5sZWZ0KSxlLmJvdHRvbT1NYXRoLm1heChlLmJvdHRvbSx0LmJvdHRvbSksZS5yaWdodD1NYXRoLm1heChlLnJpZ2h0LHQucmlnaHQpfWZ1bmN0aW9uIFdpKGUsdCxuLHIpe2xldHtwb3M6aSxib3g6YX09bixvPWUubWF4UGFkZGluZztpZighTShpKSl7bi5zaXplJiYoZVtpXS09bi5zaXplKTtsZXQgdD1yW24uc3RhY2tdfHx7c2l6ZTowLGNvdW50OjF9O3Quc2l6ZT1NYXRoLm1heCh0LnNpemUsbi5ob3Jpem9udGFsP2EuaGVpZ2h0OmEud2lkdGgpLG4uc2l6ZT10LnNpemUvdC5jb3VudCxlW2ldKz1uLnNpemV9YS5nZXRQYWRkaW5nJiZVaShvLGEuZ2V0UGFkZGluZygpKTtsZXQgcz1NYXRoLm1heCgwLHQub3V0ZXJXaWR0aC1IaShvLGUsYGxlZnRgLGByaWdodGApKSxjPU1hdGgubWF4KDAsdC5vdXRlckhlaWdodC1IaShvLGUsYHRvcGAsYGJvdHRvbWApKSxsPXMhPT1lLncsdT1jIT09ZS5oO3JldHVybiBlLnc9cyxlLmg9YyxuLmhvcml6b250YWw/e3NhbWU6bCxvdGhlcjp1fTp7c2FtZTp1LG90aGVyOmx9fWZ1bmN0aW9uIEdpKGUpe2xldCB0PWUubWF4UGFkZGluZztmdW5jdGlvbiBuKG4pe2xldCByPU1hdGgubWF4KHRbbl0tZVtuXSwwKTtyZXR1cm4gZVtuXSs9cixyfWUueSs9bihgdG9wYCksZS54Kz1uKGBsZWZ0YCksbihgcmlnaHRgKSxuKGBib3R0b21gKX1mdW5jdGlvbiBLaShlLHQpe2xldCBuPXQubWF4UGFkZGluZztmdW5jdGlvbiByKGUpe2xldCByPXtsZWZ0OjAsdG9wOjAscmlnaHQ6MCxib3R0b206MH07cmV0dXJuIGUuZm9yRWFjaChlPT57cltlXT1NYXRoLm1heCh0W2VdLG5bZV0pfSkscn1yZXR1cm4gcihlP1tgbGVmdGAsYHJpZ2h0YF06W2B0b3BgLGBib3R0b21gXSl9ZnVuY3Rpb24gcWkoZSx0LG4scil7bGV0IGk9W10sYSxvLHMsYyxsLHU7Zm9yKGE9MCxvPWUubGVuZ3RoLGw9MDthPG87KythKXtzPWVbYV0sYz1zLmJveCxjLnVwZGF0ZShzLndpZHRofHx0Lncscy5oZWlnaHR8fHQuaCxLaShzLmhvcml6b250YWwsdCkpO2xldHtzYW1lOm8sb3RoZXI6ZH09V2kodCxuLHMscik7bHw9byYmaS5sZW5ndGgsdXx8PWQsYy5mdWxsU2l6ZXx8aS5wdXNoKHMpfXJldHVybiBsJiZxaShpLHQsbixyKXx8dX1mdW5jdGlvbiBKaShlLHQsbixyLGkpe2UudG9wPW4sZS5sZWZ0PXQsZS5yaWdodD10K3IsZS5ib3R0b209bitpLGUud2lkdGg9cixlLmhlaWdodD1pfWZ1bmN0aW9uIFlpKGUsdCxuLHIpe2xldCBpPW4ucGFkZGluZyx7eDphLHk6b309dDtmb3IobGV0IHMgb2YgZSl7bGV0IGU9cy5ib3gsYz1yW3Muc3RhY2tdfHx7Y291bnQ6MSxwbGFjZWQ6MCx3ZWlnaHQ6MX0sbD1zLnN0YWNrV2VpZ2h0L2Mud2VpZ2h0fHwxO2lmKHMuaG9yaXpvbnRhbCl7bGV0IHI9dC53KmwsYT1jLnNpemV8fGUuaGVpZ2h0OyRlKGMuc3RhcnQpJiYobz1jLnN0YXJ0KSxlLmZ1bGxTaXplP0ppKGUsaS5sZWZ0LG8sbi5vdXRlcldpZHRoLWkucmlnaHQtaS5sZWZ0LGEpOkppKGUsdC5sZWZ0K2MucGxhY2VkLG8scixhKSxjLnN0YXJ0PW8sYy5wbGFjZWQrPXIsbz1lLmJvdHRvbX1lbHNle2xldCByPXQuaCpsLG89Yy5zaXplfHxlLndpZHRoOyRlKGMuc3RhcnQpJiYoYT1jLnN0YXJ0KSxlLmZ1bGxTaXplP0ppKGUsYSxpLnRvcCxvLG4ub3V0ZXJIZWlnaHQtaS5ib3R0b20taS50b3ApOkppKGUsYSx0LnRvcCtjLnBsYWNlZCxvLHIpLGMuc3RhcnQ9YSxjLnBsYWNlZCs9cixhPWUucmlnaHR9fXQueD1hLHQueT1vfXZhciBYaT17YWRkQm94KGUsdCl7ZS5ib3hlc3x8PVtdLHQuZnVsbFNpemU9dC5mdWxsU2l6ZXx8ITEsdC5wb3NpdGlvbj10LnBvc2l0aW9ufHxgdG9wYCx0LndlaWdodD10LndlaWdodHx8MCx0Ll9sYXllcnM9dC5fbGF5ZXJzfHxmdW5jdGlvbigpe3JldHVyblt7ejowLGRyYXcoZSl7dC5kcmF3KGUpfX1dfSxlLmJveGVzLnB1c2godCl9LHJlbW92ZUJveChlLHQpe2xldCBuPWUuYm94ZXM/ZS5ib3hlcy5pbmRleE9mKHQpOi0xO24hPT0tMSYmZS5ib3hlcy5zcGxpY2UobiwxKX0sY29uZmlndXJlKGUsdCxuKXt0LmZ1bGxTaXplPW4uZnVsbFNpemUsdC5wb3NpdGlvbj1uLnBvc2l0aW9uLHQud2VpZ2h0PW4ud2VpZ2h0fSx1cGRhdGUoZSx0LG4scil7aWYoIWUpcmV0dXJuO2xldCBpPUsoZS5vcHRpb25zLmxheW91dC5wYWRkaW5nKSxhPU1hdGgubWF4KHQtaS53aWR0aCwwKSxvPU1hdGgubWF4KG4taS5oZWlnaHQsMCkscz1WaShlLmJveGVzKSxjPXMudmVydGljYWwsbD1zLmhvcml6b250YWw7TChlLmJveGVzLGU9Pnt0eXBlb2YgZS5iZWZvcmVMYXlvdXQ9PWBmdW5jdGlvbmAmJmUuYmVmb3JlTGF5b3V0KCl9KTtsZXQgdT1jLnJlZHVjZSgoZSx0KT0+dC5ib3gub3B0aW9ucyYmdC5ib3gub3B0aW9ucy5kaXNwbGF5PT09ITE/ZTplKzEsMCl8fDEsZD1PYmplY3QuZnJlZXplKHtvdXRlcldpZHRoOnQsb3V0ZXJIZWlnaHQ6bixwYWRkaW5nOmksYXZhaWxhYmxlV2lkdGg6YSxhdmFpbGFibGVIZWlnaHQ6byx2Qm94TWF4V2lkdGg6YS8yL3UsaEJveE1heEhlaWdodDpvLzJ9KSxmPU9iamVjdC5hc3NpZ24oe30saSk7VWkoZixLKHIpKTtsZXQgcD1PYmplY3QuYXNzaWduKHttYXhQYWRkaW5nOmYsdzphLGg6byx4OmkubGVmdCx5OmkudG9wfSxpKSxtPUJpKGMuY29uY2F0KGwpLGQpO3FpKHMuZnVsbFNpemUscCxkLG0pLHFpKGMscCxkLG0pLHFpKGwscCxkLG0pJiZxaShjLHAsZCxtKSxHaShwKSxZaShzLmxlZnRBbmRUb3AscCxkLG0pLHAueCs9cC53LHAueSs9cC5oLFlpKHMucmlnaHRBbmRCb3R0b20scCxkLG0pLGUuY2hhcnRBcmVhPXtsZWZ0OnAubGVmdCx0b3A6cC50b3AscmlnaHQ6cC5sZWZ0K3Audyxib3R0b206cC50b3ArcC5oLGhlaWdodDpwLmgsd2lkdGg6cC53fSxMKHMuY2hhcnRBcmVhLHQ9PntsZXQgbj10LmJveDtPYmplY3QuYXNzaWduKG4sZS5jaGFydEFyZWEpLG4udXBkYXRlKHAudyxwLmgse2xlZnQ6MCx0b3A6MCxyaWdodDowLGJvdHRvbTowfSl9KX19LFppPWNsYXNze2FjcXVpcmVDb250ZXh0KGUsdCl7fXJlbGVhc2VDb250ZXh0KGUpe3JldHVybiExfWFkZEV2ZW50TGlzdGVuZXIoZSx0LG4pe31yZW1vdmVFdmVudExpc3RlbmVyKGUsdCxuKXt9Z2V0RGV2aWNlUGl4ZWxSYXRpbygpe3JldHVybiAxfWdldE1heGltdW1TaXplKGUsdCxuLHIpe3JldHVybiB0PU1hdGgubWF4KDAsdHx8ZS53aWR0aCksbnx8PWUuaGVpZ2h0LHt3aWR0aDp0LGhlaWdodDpNYXRoLm1heCgwLHI/TWF0aC5mbG9vcih0L3IpOm4pfX1pc0F0dGFjaGVkKGUpe3JldHVybiEwfXVwZGF0ZUNvbmZpZyhlKXt9fSxRaT1jbGFzcyBleHRlbmRzIFppe2FjcXVpcmVDb250ZXh0KGUpe3JldHVybiBlJiZlLmdldENvbnRleHQmJmUuZ2V0Q29udGV4dChgMmRgKXx8bnVsbH11cGRhdGVDb25maWcoZSl7ZS5vcHRpb25zLmFuaW1hdGlvbj0hMX19LCRpPWAkY2hhcnRqc2AsZWE9e3RvdWNoc3RhcnQ6YG1vdXNlZG93bmAsdG91Y2htb3ZlOmBtb3VzZW1vdmVgLHRvdWNoZW5kOmBtb3VzZXVwYCxwb2ludGVyZW50ZXI6YG1vdXNlZW50ZXJgLHBvaW50ZXJkb3duOmBtb3VzZWRvd25gLHBvaW50ZXJtb3ZlOmBtb3VzZW1vdmVgLHBvaW50ZXJ1cDpgbW91c2V1cGAscG9pbnRlcmxlYXZlOmBtb3VzZW91dGAscG9pbnRlcm91dDpgbW91c2VvdXRgfSx0YT1lPT5lPT09bnVsbHx8ZT09PWBgO2Z1bmN0aW9uIG5hKGUsdCl7bGV0IG49ZS5zdHlsZSxyPWUuZ2V0QXR0cmlidXRlKGBoZWlnaHRgKSxpPWUuZ2V0QXR0cmlidXRlKGB3aWR0aGApO2lmKGVbJGldPXtpbml0aWFsOntoZWlnaHQ6cix3aWR0aDppLHN0eWxlOntkaXNwbGF5Om4uZGlzcGxheSxoZWlnaHQ6bi5oZWlnaHQsd2lkdGg6bi53aWR0aH19fSxuLmRpc3BsYXk9bi5kaXNwbGF5fHxgYmxvY2tgLG4uYm94U2l6aW5nPW4uYm94U2l6aW5nfHxgYm9yZGVyLWJveGAsdGEoaSkpe2xldCB0PUVyKGUsYHdpZHRoYCk7dCE9PXZvaWQgMCYmKGUud2lkdGg9dCl9aWYodGEocikpe2lmKGUuc3R5bGUuaGVpZ2h0PT09YGApZS5oZWlnaHQ9ZS53aWR0aC8odHx8Mik7ZWxzZXtsZXQgdD1FcihlLGBoZWlnaHRgKTt0IT09dm9pZCAwJiYoZS5oZWlnaHQ9dCl9fXJldHVybiBlfXZhciByYT1Ucj97cGFzc2l2ZTohMH06ITE7ZnVuY3Rpb24gaWEoZSx0LG4pe2UmJmUuYWRkRXZlbnRMaXN0ZW5lcih0LG4scmEpfWZ1bmN0aW9uIGFhKGUsdCxuKXtlJiZlLmNhbnZhcyYmZS5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4scmEpfWZ1bmN0aW9uIG9hKGUsdCl7bGV0IG49ZWFbZS50eXBlXXx8ZS50eXBlLHt4OnIseTppfT1icihlLHQpO3JldHVybnt0eXBlOm4sY2hhcnQ6dCxuYXRpdmU6ZSx4OnI9PT12b2lkIDA/bnVsbDpyLHk6aT09PXZvaWQgMD9udWxsOml9fWZ1bmN0aW9uIHNhKGUsdCl7Zm9yKGxldCBuIG9mIGUpaWYobj09PXR8fG4uY29udGFpbnModCkpcmV0dXJuITB9ZnVuY3Rpb24gY2EoZSx0LG4pe2xldCByPWUuY2FudmFzLGk9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2xldCB0PSExO2ZvcihsZXQgbiBvZiBlKXR8fD1zYShuLmFkZGVkTm9kZXMsciksdCYmPSFzYShuLnJlbW92ZWROb2RlcyxyKTt0JiZuKCl9KTtyZXR1cm4gaS5vYnNlcnZlKGRvY3VtZW50LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGl9ZnVuY3Rpb24gbGEoZSx0LG4pe2xldCByPWUuY2FudmFzLGk9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2xldCB0PSExO2ZvcihsZXQgbiBvZiBlKXR8fD1zYShuLnJlbW92ZWROb2RlcyxyKSx0JiY9IXNhKG4uYWRkZWROb2RlcyxyKTt0JiZuKCl9KTtyZXR1cm4gaS5vYnNlcnZlKGRvY3VtZW50LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGl9dmFyIHVhPW5ldyBNYXAsZGE9MDtmdW5jdGlvbiBmYSgpe2xldCBlPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO2UhPT1kYSYmKGRhPWUsdWEuZm9yRWFjaCgodCxuKT0+e24uY3VycmVudERldmljZVBpeGVsUmF0aW8hPT1lJiZ0KCl9KSl9ZnVuY3Rpb24gcGEoZSx0KXt1YS5zaXplfHx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihgcmVzaXplYCxmYSksdWEuc2V0KGUsdCl9ZnVuY3Rpb24gbWEoZSl7dWEuZGVsZXRlKGUpLHVhLnNpemV8fHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGByZXNpemVgLGZhKX1mdW5jdGlvbiBoYShlLHQsbil7bGV0IHI9ZS5jYW52YXMsaT1yJiZmcihyKTtpZighaSlyZXR1cm47bGV0IGE9RnQoKGUsdCk9PntsZXQgcj1pLmNsaWVudFdpZHRoO24oZSx0KSxyPGkuY2xpZW50V2lkdGgmJm4oKX0sd2luZG93KSxvPW5ldyBSZXNpemVPYnNlcnZlcihlPT57bGV0IHQ9ZVswXSxuPXQuY29udGVudFJlY3Qud2lkdGgscj10LmNvbnRlbnRSZWN0LmhlaWdodDsobiE9PTB8fHIhPT0wKSYmYShuLHIpfSk7cmV0dXJuIG8ub2JzZXJ2ZShpKSxwYShlLGEpLG99ZnVuY3Rpb24gZ2EoZSx0LG4pe24mJm4uZGlzY29ubmVjdCgpLHQ9PT1gcmVzaXplYCYmbWEoZSl9ZnVuY3Rpb24gX2EoZSx0LG4pe2xldCByPWUuY2FudmFzLGk9RnQodD0+e2UuY3R4IT09bnVsbCYmbihvYSh0LGUpKX0sZSk7cmV0dXJuIGlhKHIsdCxpKSxpfXZhciB2YT1jbGFzcyBleHRlbmRzIFppe2FjcXVpcmVDb250ZXh0KGUsdCl7bGV0IG49ZSYmZS5nZXRDb250ZXh0JiZlLmdldENvbnRleHQoYDJkYCk7cmV0dXJuIG4mJm4uY2FudmFzPT09ZT8obmEoZSx0KSxuKTpudWxsfXJlbGVhc2VDb250ZXh0KGUpe2xldCB0PWUuY2FudmFzO2lmKCF0WyRpXSlyZXR1cm4hMTtsZXQgbj10WyRpXS5pbml0aWFsO1tgaGVpZ2h0YCxgd2lkdGhgXS5mb3JFYWNoKGU9PntsZXQgcj1uW2VdO0Eocik/dC5yZW1vdmVBdHRyaWJ1dGUoZSk6dC5zZXRBdHRyaWJ1dGUoZSxyKX0pO2xldCByPW4uc3R5bGV8fHt9O3JldHVybiBPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGU9Pnt0LnN0eWxlW2VdPXJbZV19KSx0LndpZHRoPXQud2lkdGgsZGVsZXRlIHRbJGldLCEwfWFkZEV2ZW50TGlzdGVuZXIoZSx0LG4pe3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQpO2xldCByPWUuJHByb3hpZXN8fD17fTtyW3RdPSh7YXR0YWNoOmNhLGRldGFjaDpsYSxyZXNpemU6aGF9W3RdfHxfYSkoZSx0LG4pfXJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0KXtsZXQgbj1lLiRwcm94aWVzfHw9e30scj1uW3RdO3ImJigoe2F0dGFjaDpnYSxkZXRhY2g6Z2EscmVzaXplOmdhfVt0XXx8YWEpKGUsdCxyKSxuW3RdPXZvaWQgMCl9Z2V0RGV2aWNlUGl4ZWxSYXRpbygpe3JldHVybiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb31nZXRNYXhpbXVtU2l6ZShlLHQsbixyKXtyZXR1cm4gQ3IoZSx0LG4scil9aXNBdHRhY2hlZChlKXtsZXQgdD1lJiZmcihlKTtyZXR1cm4hISh0JiZ0LmlzQ29ubmVjdGVkKX19O2Z1bmN0aW9uIHlhKGUpe3JldHVybiFkcigpfHx0eXBlb2YgT2Zmc2NyZWVuQ2FudmFzPGB1YCYmZSBpbnN0YW5jZW9mIE9mZnNjcmVlbkNhbnZhcz9RaTp2YX12YXIgYmE9Y2xhc3N7c3RhdGljIGRlZmF1bHRzPXt9O3N0YXRpYyBkZWZhdWx0Um91dGVzPXZvaWQgMDt4O3k7YWN0aXZlPSExO29wdGlvbnM7JGFuaW1hdGlvbnM7dG9vbHRpcFBvc2l0aW9uKGUpe2xldHt4OnQseTpufT10aGlzLmdldFByb3BzKFtgeGAsYHlgXSxlKTtyZXR1cm57eDp0LHk6bn19aGFzVmFsdWUoKXtyZXR1cm4gbXQodGhpcy54KSYmbXQodGhpcy55KX1nZXRQcm9wcyhlLHQpe2xldCBuPXRoaXMuJGFuaW1hdGlvbnM7aWYoIXR8fCFuKXJldHVybiB0aGlzO2xldCByPXt9O3JldHVybiBlLmZvckVhY2goZT0+e3JbZV09bltlXSYmbltlXS5hY3RpdmUoKT9uW2VdLl90bzp0aGlzW2VdfSkscn19O2Z1bmN0aW9uIHhhKGUsdCl7bGV0IG49ZS5vcHRpb25zLnRpY2tzLHI9U2EoZSksaT1NYXRoLm1pbihuLm1heFRpY2tzTGltaXR8fHIsciksYT1uLm1ham9yLmVuYWJsZWQ/d2EodCk6W10sbz1hLmxlbmd0aCxzPWFbMF0sYz1hW28tMV0sbD1bXTtpZihvPmkpcmV0dXJuIFRhKHQsbCxhLG8vaSksbDtsZXQgdT1DYShhLHQsaSk7aWYobz4wKXtsZXQgZSxuLHI9bz4xP01hdGgucm91bmQoKGMtcykvKG8tMSkpOm51bGw7Zm9yKEVhKHQsbCx1LEEocik/MDpzLXIscyksZT0wLG49by0xO2U8bjtlKyspRWEodCxsLHUsYVtlXSxhW2UrMV0pO3JldHVybiBFYSh0LGwsdSxjLEEocik/dC5sZW5ndGg6YytyKSxsfXJldHVybiBFYSh0LGwsdSksbH1mdW5jdGlvbiBTYShlKXtsZXQgdD1lLm9wdGlvbnMub2Zmc2V0LG49ZS5fdGlja1NpemUoKSxyPWUuX2xlbmd0aC9uKyArIXQsaT1lLl9tYXhMZW5ndGgvbjtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLm1pbihyLGkpKX1mdW5jdGlvbiBDYShlLHQsbil7bGV0IHI9RGEoZSksaT10Lmxlbmd0aC9uO2lmKCFyKXJldHVybiBNYXRoLm1heChpLDEpO2xldCBhPWZ0KHIpO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGgtMTtlPHQ7ZSsrKXtsZXQgdD1hW2VdO2lmKHQ+aSlyZXR1cm4gdH1yZXR1cm4gTWF0aC5tYXgoaSwxKX1mdW5jdGlvbiB3YShlKXtsZXQgdD1bXSxuLHI7Zm9yKG49MCxyPWUubGVuZ3RoO248cjtuKyspZVtuXS5tYWpvciYmdC5wdXNoKG4pO3JldHVybiB0fWZ1bmN0aW9uIFRhKGUsdCxuLHIpe2xldCBpPTAsYT1uWzBdLG87Zm9yKHI9TWF0aC5jZWlsKHIpLG89MDtvPGUubGVuZ3RoO28rKylvPT09YSYmKHQucHVzaChlW29dKSxpKyssYT1uW2kqcl0pfWZ1bmN0aW9uIEVhKGUsdCxuLHIsaSl7bGV0IGE9RihyLDApLG89TWF0aC5taW4oRihpLGUubGVuZ3RoKSxlLmxlbmd0aCkscz0wLGMsbCx1O2ZvcihuPU1hdGguY2VpbChuKSxpJiYoYz1pLXIsbj1jL01hdGguZmxvb3IoYy9uKSksdT1hO3U8MDspcysrLHU9TWF0aC5yb3VuZChhK3Mqbik7Zm9yKGw9TWF0aC5tYXgoYSwwKTtsPG87bCsrKWw9PT11JiYodC5wdXNoKGVbbF0pLHMrKyx1PU1hdGgucm91bmQoYStzKm4pKX1mdW5jdGlvbiBEYShlKXtsZXQgdD1lLmxlbmd0aCxuLHI7aWYodDwyKXJldHVybiExO2ZvcihyPWVbMF0sbj0xO248dDsrK24paWYoZVtuXS1lW24tMV0hPT1yKXJldHVybiExO3JldHVybiByfXZhciBPYT1lPT5lPT09YGxlZnRgP2ByaWdodGA6ZT09PWByaWdodGA/YGxlZnRgOmUsa2E9KGUsdCxuKT0+dD09PWB0b3BgfHx0PT09YGxlZnRgP2VbdF0rbjplW3RdLW4sQWE9KGUsdCk9Pk1hdGgubWluKHR8fGUsZSk7ZnVuY3Rpb24gamEoZSx0KXtsZXQgbj1bXSxyPWUubGVuZ3RoL3QsaT1lLmxlbmd0aCxhPTA7Zm9yKDthPGk7YSs9ciluLnB1c2goZVtNYXRoLmZsb29yKGEpXSk7cmV0dXJuIG59ZnVuY3Rpb24gTWEoZSx0LG4pe2xldCByPWUudGlja3MubGVuZ3RoLGk9TWF0aC5taW4odCxyLTEpLGE9ZS5fc3RhcnRQaXhlbCxvPWUuX2VuZFBpeGVsLHM9MWUtNixjPWUuZ2V0UGl4ZWxGb3JUaWNrKGkpLGw7aWYoIShuJiYobD1yPT09MT9NYXRoLm1heChjLWEsby1jKTp0PT09MD8oZS5nZXRQaXhlbEZvclRpY2soMSktYykvMjooYy1lLmdldFBpeGVsRm9yVGljayhpLTEpKS8yLGMrPWk8dD9sOi1sLGM8YS1zfHxjPm8rcykpKXJldHVybiBjfWZ1bmN0aW9uIE5hKGUsdCl7TChlLGU9PntsZXQgbj1lLmdjLHI9bi5sZW5ndGgvMixpO2lmKHI+dCl7Zm9yKGk9MDtpPHI7KytpKWRlbGV0ZSBlLmRhdGFbbltpXV07bi5zcGxpY2UoMCxyKX19KX1mdW5jdGlvbiBQYShlKXtyZXR1cm4gZS5kcmF3VGlja3M/ZS50aWNrTGVuZ3RoOjB9ZnVuY3Rpb24gRmEoZSx0KXtpZighZS5kaXNwbGF5KXJldHVybiAwO2xldCBuPXEoZS5mb250LHQpLHI9SyhlLnBhZGRpbmcpO3JldHVybihqKGUudGV4dCk/ZS50ZXh0Lmxlbmd0aDoxKSpuLmxpbmVIZWlnaHQrci5oZWlnaHR9ZnVuY3Rpb24gSWEoZSx0KXtyZXR1cm4gRm4oZSx7c2NhbGU6dCx0eXBlOmBzY2FsZWB9KX1mdW5jdGlvbiBMYShlLHQsbil7cmV0dXJuIEZuKGUse3RpY2s6bixpbmRleDp0LHR5cGU6YHRpY2tgfSl9ZnVuY3Rpb24gUmEoZSx0LG4pe2xldCByPUx0KGUpO3JldHVybihuJiZ0IT09YHJpZ2h0YHx8IW4mJnQ9PT1gcmlnaHRgKSYmKHI9T2EocikpLHJ9ZnVuY3Rpb24gemEoZSx0LG4scil7bGV0e3RvcDppLGxlZnQ6YSxib3R0b206byxyaWdodDpzLGNoYXJ0OmN9PWUse2NoYXJ0QXJlYTpsLHNjYWxlczp1fT1jLGQ9MCxmLHAsbSxoPW8taSxnPXMtYTtpZihlLmlzSG9yaXpvbnRhbCgpKXtpZihwPVUocixhLHMpLE0obikpe2xldCBlPU9iamVjdC5rZXlzKG4pWzBdLHI9bltlXTttPXVbZV0uZ2V0UGl4ZWxGb3JWYWx1ZShyKStoLXR9ZWxzZSBtPW49PT1gY2VudGVyYD8obC5ib3R0b20rbC50b3ApLzIraC10OmthKGUsbix0KTtmPXMtYX1lbHNle2lmKE0obikpe2xldCBlPU9iamVjdC5rZXlzKG4pWzBdLHI9bltlXTtwPXVbZV0uZ2V0UGl4ZWxGb3JWYWx1ZShyKS1nK3R9ZWxzZSBwPW49PT1gY2VudGVyYD8obC5sZWZ0K2wucmlnaHQpLzItZyt0OmthKGUsbix0KTttPVUocixvLGkpLGQ9bj09PWBsZWZ0YD8tQjpCfXJldHVybnt0aXRsZVg6cCx0aXRsZVk6bSxtYXhXaWR0aDpmLHJvdGF0aW9uOmR9fXZhciBCYT1jbGFzcyBlIGV4dGVuZHMgYmF7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmlkPWUuaWQsdGhpcy50eXBlPWUudHlwZSx0aGlzLm9wdGlvbnM9dm9pZCAwLHRoaXMuY3R4PWUuY3R4LHRoaXMuY2hhcnQ9ZS5jaGFydCx0aGlzLnRvcD12b2lkIDAsdGhpcy5ib3R0b209dm9pZCAwLHRoaXMubGVmdD12b2lkIDAsdGhpcy5yaWdodD12b2lkIDAsdGhpcy53aWR0aD12b2lkIDAsdGhpcy5oZWlnaHQ9dm9pZCAwLHRoaXMuX21hcmdpbnM9e2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfSx0aGlzLm1heFdpZHRoPXZvaWQgMCx0aGlzLm1heEhlaWdodD12b2lkIDAsdGhpcy5wYWRkaW5nVG9wPXZvaWQgMCx0aGlzLnBhZGRpbmdCb3R0b209dm9pZCAwLHRoaXMucGFkZGluZ0xlZnQ9dm9pZCAwLHRoaXMucGFkZGluZ1JpZ2h0PXZvaWQgMCx0aGlzLmF4aXM9dm9pZCAwLHRoaXMubGFiZWxSb3RhdGlvbj12b2lkIDAsdGhpcy5taW49dm9pZCAwLHRoaXMubWF4PXZvaWQgMCx0aGlzLl9yYW5nZT12b2lkIDAsdGhpcy50aWNrcz1bXSx0aGlzLl9ncmlkTGluZUl0ZW1zPW51bGwsdGhpcy5fbGFiZWxJdGVtcz1udWxsLHRoaXMuX2xhYmVsU2l6ZXM9bnVsbCx0aGlzLl9sZW5ndGg9MCx0aGlzLl9tYXhMZW5ndGg9MCx0aGlzLl9sb25nZXN0VGV4dENhY2hlPXt9LHRoaXMuX3N0YXJ0UGl4ZWw9dm9pZCAwLHRoaXMuX2VuZFBpeGVsPXZvaWQgMCx0aGlzLl9yZXZlcnNlUGl4ZWxzPSExLHRoaXMuX3VzZXJNYXg9dm9pZCAwLHRoaXMuX3VzZXJNaW49dm9pZCAwLHRoaXMuX3N1Z2dlc3RlZE1heD12b2lkIDAsdGhpcy5fc3VnZ2VzdGVkTWluPXZvaWQgMCx0aGlzLl90aWNrc0xlbmd0aD0wLHRoaXMuX2JvcmRlclZhbHVlPTAsdGhpcy5fY2FjaGU9e30sdGhpcy5fZGF0YUxpbWl0c0NhY2hlZD0hMSx0aGlzLiRjb250ZXh0PXZvaWQgMH1pbml0KGUpe3RoaXMub3B0aW9ucz1lLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KCkpLHRoaXMuYXhpcz1lLmF4aXMsdGhpcy5fdXNlck1pbj10aGlzLnBhcnNlKGUubWluKSx0aGlzLl91c2VyTWF4PXRoaXMucGFyc2UoZS5tYXgpLHRoaXMuX3N1Z2dlc3RlZE1pbj10aGlzLnBhcnNlKGUuc3VnZ2VzdGVkTWluKSx0aGlzLl9zdWdnZXN0ZWRNYXg9dGhpcy5wYXJzZShlLnN1Z2dlc3RlZE1heCl9cGFyc2UoZSx0KXtyZXR1cm4gZX1nZXRVc2VyQm91bmRzKCl7bGV0e191c2VyTWluOmUsX3VzZXJNYXg6dCxfc3VnZ2VzdGVkTWluOm4sX3N1Z2dlc3RlZE1heDpyfT10aGlzO3JldHVybiBlPVAoZSwxLzApLHQ9UCh0LC0xLzApLG49UChuLDEvMCkscj1QKHIsLTEvMCkse21pbjpQKGUsbiksbWF4OlAodCxyKSxtaW5EZWZpbmVkOk4oZSksbWF4RGVmaW5lZDpOKHQpfX1nZXRNaW5NYXgoZSl7bGV0e21pbjp0LG1heDpuLG1pbkRlZmluZWQ6cixtYXhEZWZpbmVkOml9PXRoaXMuZ2V0VXNlckJvdW5kcygpLGE7aWYociYmaSlyZXR1cm57bWluOnQsbWF4Om59O2xldCBvPXRoaXMuZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXMoKTtmb3IobGV0IHM9MCxjPW8ubGVuZ3RoO3M8YzsrK3MpYT1vW3NdLmNvbnRyb2xsZXIuZ2V0TWluTWF4KHRoaXMsZSkscnx8KHQ9TWF0aC5taW4odCxhLm1pbikpLGl8fChuPU1hdGgubWF4KG4sYS5tYXgpKTtyZXR1cm4gdD1pJiZ0Pm4/bjp0LG49ciYmdD5uP3Q6bix7bWluOlAodCxQKG4sdCkpLG1heDpQKG4sUCh0LG4pKX19Z2V0UGFkZGluZygpe3JldHVybntsZWZ0OnRoaXMucGFkZGluZ0xlZnR8fDAsdG9wOnRoaXMucGFkZGluZ1RvcHx8MCxyaWdodDp0aGlzLnBhZGRpbmdSaWdodHx8MCxib3R0b206dGhpcy5wYWRkaW5nQm90dG9tfHwwfX1nZXRUaWNrcygpe3JldHVybiB0aGlzLnRpY2tzfWdldExhYmVscygpe2xldCBlPXRoaXMuY2hhcnQuZGF0YTtyZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsc3x8KHRoaXMuaXNIb3Jpem9udGFsKCk/ZS54TGFiZWxzOmUueUxhYmVscyl8fGUubGFiZWxzfHxbXX1nZXRMYWJlbEl0ZW1zKGU9dGhpcy5jaGFydC5jaGFydEFyZWEpe3JldHVybiB0aGlzLl9sYWJlbEl0ZW1zfHw9dGhpcy5fY29tcHV0ZUxhYmVsSXRlbXMoZSl9YmVmb3JlTGF5b3V0KCl7dGhpcy5fY2FjaGU9e30sdGhpcy5fZGF0YUxpbWl0c0NhY2hlZD0hMX1iZWZvcmVVcGRhdGUoKXtJKHRoaXMub3B0aW9ucy5iZWZvcmVVcGRhdGUsW3RoaXNdKX11cGRhdGUoZSx0LG4pe2xldHtiZWdpbkF0WmVybzpyLGdyYWNlOmksdGlja3M6YX09dGhpcy5vcHRpb25zLG89YS5zYW1wbGVTaXplO3RoaXMuYmVmb3JlVXBkYXRlKCksdGhpcy5tYXhXaWR0aD1lLHRoaXMubWF4SGVpZ2h0PXQsdGhpcy5fbWFyZ2lucz1uPU9iamVjdC5hc3NpZ24oe2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTowfSxuKSx0aGlzLnRpY2tzPW51bGwsdGhpcy5fbGFiZWxTaXplcz1udWxsLHRoaXMuX2dyaWRMaW5lSXRlbXM9bnVsbCx0aGlzLl9sYWJlbEl0ZW1zPW51bGwsdGhpcy5iZWZvcmVTZXREaW1lbnNpb25zKCksdGhpcy5zZXREaW1lbnNpb25zKCksdGhpcy5hZnRlclNldERpbWVuc2lvbnMoKSx0aGlzLl9tYXhMZW5ndGg9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLndpZHRoK24ubGVmdCtuLnJpZ2h0OnRoaXMuaGVpZ2h0K24udG9wK24uYm90dG9tLHRoaXMuX2RhdGFMaW1pdHNDYWNoZWR8fD0odGhpcy5iZWZvcmVEYXRhTGltaXRzKCksdGhpcy5kZXRlcm1pbmVEYXRhTGltaXRzKCksdGhpcy5hZnRlckRhdGFMaW1pdHMoKSx0aGlzLl9yYW5nZT1Qbih0aGlzLGksciksITApLHRoaXMuYmVmb3JlQnVpbGRUaWNrcygpLHRoaXMudGlja3M9dGhpcy5idWlsZFRpY2tzKCl8fFtdLHRoaXMuYWZ0ZXJCdWlsZFRpY2tzKCk7bGV0IHM9bzx0aGlzLnRpY2tzLmxlbmd0aDt0aGlzLl9jb252ZXJ0VGlja3NUb0xhYmVscyhzP2phKHRoaXMudGlja3Msbyk6dGhpcy50aWNrcyksdGhpcy5jb25maWd1cmUoKSx0aGlzLmJlZm9yZUNhbGN1bGF0ZUxhYmVsUm90YXRpb24oKSx0aGlzLmNhbGN1bGF0ZUxhYmVsUm90YXRpb24oKSx0aGlzLmFmdGVyQ2FsY3VsYXRlTGFiZWxSb3RhdGlvbigpLGEuZGlzcGxheSYmKGEuYXV0b1NraXB8fGEuc291cmNlPT09YGF1dG9gKSYmKHRoaXMudGlja3M9eGEodGhpcyx0aGlzLnRpY2tzKSx0aGlzLl9sYWJlbFNpemVzPW51bGwsdGhpcy5hZnRlckF1dG9Ta2lwKCkpLHMmJnRoaXMuX2NvbnZlcnRUaWNrc1RvTGFiZWxzKHRoaXMudGlja3MpLHRoaXMuYmVmb3JlRml0KCksdGhpcy5maXQoKSx0aGlzLmFmdGVyRml0KCksdGhpcy5hZnRlclVwZGF0ZSgpfWNvbmZpZ3VyZSgpe2xldCBlPXRoaXMub3B0aW9ucy5yZXZlcnNlLHQsbjt0aGlzLmlzSG9yaXpvbnRhbCgpPyh0PXRoaXMubGVmdCxuPXRoaXMucmlnaHQpOih0PXRoaXMudG9wLG49dGhpcy5ib3R0b20sZT0hZSksdGhpcy5fc3RhcnRQaXhlbD10LHRoaXMuX2VuZFBpeGVsPW4sdGhpcy5fcmV2ZXJzZVBpeGVscz1lLHRoaXMuX2xlbmd0aD1uLXQsdGhpcy5fYWxpZ25Ub1BpeGVscz10aGlzLm9wdGlvbnMuYWxpZ25Ub1BpeGVsc31hZnRlclVwZGF0ZSgpe0kodGhpcy5vcHRpb25zLmFmdGVyVXBkYXRlLFt0aGlzXSl9YmVmb3JlU2V0RGltZW5zaW9ucygpe0kodGhpcy5vcHRpb25zLmJlZm9yZVNldERpbWVuc2lvbnMsW3RoaXNdKX1zZXREaW1lbnNpb25zKCl7dGhpcy5pc0hvcml6b250YWwoKT8odGhpcy53aWR0aD10aGlzLm1heFdpZHRoLHRoaXMubGVmdD0wLHRoaXMucmlnaHQ9dGhpcy53aWR0aCk6KHRoaXMuaGVpZ2h0PXRoaXMubWF4SGVpZ2h0LHRoaXMudG9wPTAsdGhpcy5ib3R0b209dGhpcy5oZWlnaHQpLHRoaXMucGFkZGluZ0xlZnQ9MCx0aGlzLnBhZGRpbmdUb3A9MCx0aGlzLnBhZGRpbmdSaWdodD0wLHRoaXMucGFkZGluZ0JvdHRvbT0wfWFmdGVyU2V0RGltZW5zaW9ucygpe0kodGhpcy5vcHRpb25zLmFmdGVyU2V0RGltZW5zaW9ucyxbdGhpc10pfV9jYWxsSG9va3MoZSl7dGhpcy5jaGFydC5ub3RpZnlQbHVnaW5zKGUsdGhpcy5nZXRDb250ZXh0KCkpLEkodGhpcy5vcHRpb25zW2VdLFt0aGlzXSl9YmVmb3JlRGF0YUxpbWl0cygpe3RoaXMuX2NhbGxIb29rcyhgYmVmb3JlRGF0YUxpbWl0c2ApfWRldGVybWluZURhdGFMaW1pdHMoKXt9YWZ0ZXJEYXRhTGltaXRzKCl7dGhpcy5fY2FsbEhvb2tzKGBhZnRlckRhdGFMaW1pdHNgKX1iZWZvcmVCdWlsZFRpY2tzKCl7dGhpcy5fY2FsbEhvb2tzKGBiZWZvcmVCdWlsZFRpY2tzYCl9YnVpbGRUaWNrcygpe3JldHVybltdfWFmdGVyQnVpbGRUaWNrcygpe3RoaXMuX2NhbGxIb29rcyhgYWZ0ZXJCdWlsZFRpY2tzYCl9YmVmb3JlVGlja1RvTGFiZWxDb252ZXJzaW9uKCl7SSh0aGlzLm9wdGlvbnMuYmVmb3JlVGlja1RvTGFiZWxDb252ZXJzaW9uLFt0aGlzXSl9Z2VuZXJhdGVUaWNrTGFiZWxzKGUpe2xldCB0PXRoaXMub3B0aW9ucy50aWNrcyxuLHIsaTtmb3Iobj0wLHI9ZS5sZW5ndGg7bjxyO24rKylpPWVbbl0saS5sYWJlbD1JKHQuY2FsbGJhY2ssW2kudmFsdWUsbixlXSx0aGlzKX1hZnRlclRpY2tUb0xhYmVsQ29udmVyc2lvbigpe0kodGhpcy5vcHRpb25zLmFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uLFt0aGlzXSl9YmVmb3JlQ2FsY3VsYXRlTGFiZWxSb3RhdGlvbigpe0kodGhpcy5vcHRpb25zLmJlZm9yZUNhbGN1bGF0ZUxhYmVsUm90YXRpb24sW3RoaXNdKX1jYWxjdWxhdGVMYWJlbFJvdGF0aW9uKCl7bGV0IGU9dGhpcy5vcHRpb25zLHQ9ZS50aWNrcyxuPUFhKHRoaXMudGlja3MubGVuZ3RoLGUudGlja3MubWF4VGlja3NMaW1pdCkscj10Lm1pblJvdGF0aW9ufHwwLGk9dC5tYXhSb3RhdGlvbixhPXIsbyxzLGM7aWYoIXRoaXMuX2lzVmlzaWJsZSgpfHwhdC5kaXNwbGF5fHxyPj1pfHxuPD0xfHwhdGhpcy5pc0hvcml6b250YWwoKSl7dGhpcy5sYWJlbFJvdGF0aW9uPXI7cmV0dXJufWxldCBsPXRoaXMuX2dldExhYmVsU2l6ZXMoKSx1PWwud2lkZXN0LndpZHRoLGQ9bC5oaWdoZXN0LmhlaWdodCxmPUgodGhpcy5jaGFydC53aWR0aC11LDAsdGhpcy5tYXhXaWR0aCk7bz1lLm9mZnNldD90aGlzLm1heFdpZHRoL246Zi8obi0xKSx1KzY+byYmKG89Zi8obi0oZS5vZmZzZXQ/LjU6MSkpLHM9dGhpcy5tYXhIZWlnaHQtUGEoZS5ncmlkKS10LnBhZGRpbmctRmEoZS50aXRsZSx0aGlzLmNoYXJ0Lm9wdGlvbnMuZm9udCksYz1NYXRoLnNxcnQodSp1K2QqZCksYT12dChNYXRoLm1pbihNYXRoLmFzaW4oSCgobC5oaWdoZXN0LmhlaWdodCs2KS9vLC0xLDEpKSxNYXRoLmFzaW4oSChzL2MsLTEsMSkpLU1hdGguYXNpbihIKGQvYywtMSwxKSkpKSxhPU1hdGgubWF4KHIsTWF0aC5taW4oaSxhKSkpLHRoaXMubGFiZWxSb3RhdGlvbj1hfWFmdGVyQ2FsY3VsYXRlTGFiZWxSb3RhdGlvbigpe0kodGhpcy5vcHRpb25zLmFmdGVyQ2FsY3VsYXRlTGFiZWxSb3RhdGlvbixbdGhpc10pfWFmdGVyQXV0b1NraXAoKXt9YmVmb3JlRml0KCl7SSh0aGlzLm9wdGlvbnMuYmVmb3JlRml0LFt0aGlzXSl9Zml0KCl7bGV0IGU9e3dpZHRoOjAsaGVpZ2h0OjB9LHtjaGFydDp0LG9wdGlvbnM6e3RpY2tzOm4sdGl0bGU6cixncmlkOml9fT10aGlzLGE9dGhpcy5faXNWaXNpYmxlKCksbz10aGlzLmlzSG9yaXpvbnRhbCgpO2lmKGEpe2xldCBhPUZhKHIsdC5vcHRpb25zLmZvbnQpO2lmKG8/KGUud2lkdGg9dGhpcy5tYXhXaWR0aCxlLmhlaWdodD1QYShpKSthKTooZS5oZWlnaHQ9dGhpcy5tYXhIZWlnaHQsZS53aWR0aD1QYShpKSthKSxuLmRpc3BsYXkmJnRoaXMudGlja3MubGVuZ3RoKXtsZXR7Zmlyc3Q6dCxsYXN0OnIsd2lkZXN0OmksaGlnaGVzdDphfT10aGlzLl9nZXRMYWJlbFNpemVzKCkscz1uLnBhZGRpbmcqMixjPV90KHRoaXMubGFiZWxSb3RhdGlvbiksbD1NYXRoLmNvcyhjKSx1PU1hdGguc2luKGMpO2lmKG8pe2xldCB0PW4ubWlycm9yPzA6dSppLndpZHRoK2wqYS5oZWlnaHQ7ZS5oZWlnaHQ9TWF0aC5taW4odGhpcy5tYXhIZWlnaHQsZS5oZWlnaHQrdCtzKX1lbHNle2xldCB0PW4ubWlycm9yPzA6bCppLndpZHRoK3UqYS5oZWlnaHQ7ZS53aWR0aD1NYXRoLm1pbih0aGlzLm1heFdpZHRoLGUud2lkdGgrdCtzKX10aGlzLl9jYWxjdWxhdGVQYWRkaW5nKHQscix1LGwpfX10aGlzLl9oYW5kbGVNYXJnaW5zKCksbz8odGhpcy53aWR0aD10aGlzLl9sZW5ndGg9dC53aWR0aC10aGlzLl9tYXJnaW5zLmxlZnQtdGhpcy5fbWFyZ2lucy5yaWdodCx0aGlzLmhlaWdodD1lLmhlaWdodCk6KHRoaXMud2lkdGg9ZS53aWR0aCx0aGlzLmhlaWdodD10aGlzLl9sZW5ndGg9dC5oZWlnaHQtdGhpcy5fbWFyZ2lucy50b3AtdGhpcy5fbWFyZ2lucy5ib3R0b20pfV9jYWxjdWxhdGVQYWRkaW5nKGUsdCxuLHIpe2xldHt0aWNrczp7YWxpZ246aSxwYWRkaW5nOmF9LHBvc2l0aW9uOm99PXRoaXMub3B0aW9ucyxzPXRoaXMubGFiZWxSb3RhdGlvbiE9PTAsYz1vIT09YHRvcGAmJnRoaXMuYXhpcz09PWB4YDtpZih0aGlzLmlzSG9yaXpvbnRhbCgpKXtsZXQgbz10aGlzLmdldFBpeGVsRm9yVGljaygwKS10aGlzLmxlZnQsbD10aGlzLnJpZ2h0LXRoaXMuZ2V0UGl4ZWxGb3JUaWNrKHRoaXMudGlja3MubGVuZ3RoLTEpLHU9MCxkPTA7cz9jPyh1PXIqZS53aWR0aCxkPW4qdC5oZWlnaHQpOih1PW4qZS5oZWlnaHQsZD1yKnQud2lkdGgpOmk9PT1gc3RhcnRgP2Q9dC53aWR0aDppPT09YGVuZGA/dT1lLndpZHRoOmkhPT1gaW5uZXJgJiYodT1lLndpZHRoLzIsZD10LndpZHRoLzIpLHRoaXMucGFkZGluZ0xlZnQ9TWF0aC5tYXgoKHUtbythKSp0aGlzLndpZHRoLyh0aGlzLndpZHRoLW8pLDApLHRoaXMucGFkZGluZ1JpZ2h0PU1hdGgubWF4KChkLWwrYSkqdGhpcy53aWR0aC8odGhpcy53aWR0aC1sKSwwKX1lbHNle2xldCBuPXQuaGVpZ2h0LzIscj1lLmhlaWdodC8yO2k9PT1gc3RhcnRgPyhuPTAscj1lLmhlaWdodCk6aT09PWBlbmRgJiYobj10LmhlaWdodCxyPTApLHRoaXMucGFkZGluZ1RvcD1uK2EsdGhpcy5wYWRkaW5nQm90dG9tPXIrYX19X2hhbmRsZU1hcmdpbnMoKXt0aGlzLl9tYXJnaW5zJiYodGhpcy5fbWFyZ2lucy5sZWZ0PU1hdGgubWF4KHRoaXMucGFkZGluZ0xlZnQsdGhpcy5fbWFyZ2lucy5sZWZ0KSx0aGlzLl9tYXJnaW5zLnRvcD1NYXRoLm1heCh0aGlzLnBhZGRpbmdUb3AsdGhpcy5fbWFyZ2lucy50b3ApLHRoaXMuX21hcmdpbnMucmlnaHQ9TWF0aC5tYXgodGhpcy5wYWRkaW5nUmlnaHQsdGhpcy5fbWFyZ2lucy5yaWdodCksdGhpcy5fbWFyZ2lucy5ib3R0b209TWF0aC5tYXgodGhpcy5wYWRkaW5nQm90dG9tLHRoaXMuX21hcmdpbnMuYm90dG9tKSl9YWZ0ZXJGaXQoKXtJKHRoaXMub3B0aW9ucy5hZnRlckZpdCxbdGhpc10pfWlzSG9yaXpvbnRhbCgpe2xldHtheGlzOmUscG9zaXRpb246dH09dGhpcy5vcHRpb25zO3JldHVybiB0PT09YHRvcGB8fHQ9PT1gYm90dG9tYHx8ZT09PWB4YH1pc0Z1bGxTaXplKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5mdWxsU2l6ZX1fY29udmVydFRpY2tzVG9MYWJlbHMoZSl7dGhpcy5iZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb24oKSx0aGlzLmdlbmVyYXRlVGlja0xhYmVscyhlKTtsZXQgdCxuO2Zvcih0PTAsbj1lLmxlbmd0aDt0PG47dCsrKUEoZVt0XS5sYWJlbCkmJihlLnNwbGljZSh0LDEpLG4tLSx0LS0pO3RoaXMuYWZ0ZXJUaWNrVG9MYWJlbENvbnZlcnNpb24oKX1fZ2V0TGFiZWxTaXplcygpe2xldCBlPXRoaXMuX2xhYmVsU2l6ZXM7aWYoIWUpe2xldCB0PXRoaXMub3B0aW9ucy50aWNrcy5zYW1wbGVTaXplLG49dGhpcy50aWNrczt0PG4ubGVuZ3RoJiYobj1qYShuLHQpKSx0aGlzLl9sYWJlbFNpemVzPWU9dGhpcy5fY29tcHV0ZUxhYmVsU2l6ZXMobixuLmxlbmd0aCx0aGlzLm9wdGlvbnMudGlja3MubWF4VGlja3NMaW1pdCl9cmV0dXJuIGV9X2NvbXB1dGVMYWJlbFNpemVzKGUsdCxuKXtsZXR7Y3R4OnIsX2xvbmdlc3RUZXh0Q2FjaGU6aX09dGhpcyxhPVtdLG89W10scz1NYXRoLmZsb29yKHQvQWEodCxuKSksYz0wLGw9MCx1LGQsZixwLG0saCxnLF8sdix5LGI7Zm9yKHU9MDt1PHQ7dSs9cyl7aWYocD1lW3VdLmxhYmVsLG09dGhpcy5fcmVzb2x2ZVRpY2tGb250T3B0aW9ucyh1KSxyLmZvbnQ9aD1tLnN0cmluZyxnPWlbaF09aVtoXXx8e2RhdGE6e30sZ2M6W119LF89bS5saW5lSGVpZ2h0LHY9eT0wLCFBKHApJiYhaihwKSl2PWRuKHIsZy5kYXRhLGcuZ2MsdixwKSx5PV87ZWxzZSBpZihqKHApKWZvcihkPTAsZj1wLmxlbmd0aDtkPGY7KytkKWI9cFtkXSwhQShiKSYmIWooYikmJih2PWRuKHIsZy5kYXRhLGcuZ2MsdixiKSx5Kz1fKTthLnB1c2godiksby5wdXNoKHkpLGM9TWF0aC5tYXgodixjKSxsPU1hdGgubWF4KHksbCl9TmEoaSx0KTtsZXQgeD1hLmluZGV4T2YoYyksUz1vLmluZGV4T2YobCksQz1lPT4oe3dpZHRoOmFbZV18fDAsaGVpZ2h0Om9bZV18fDB9KTtyZXR1cm57Zmlyc3Q6QygwKSxsYXN0OkModC0xKSx3aWRlc3Q6Qyh4KSxoaWdoZXN0OkMoUyksd2lkdGhzOmEsaGVpZ2h0czpvfX1nZXRMYWJlbEZvclZhbHVlKGUpe3JldHVybiBlfWdldFBpeGVsRm9yVmFsdWUoZSx0KXtyZXR1cm4gTmFOfWdldFZhbHVlRm9yUGl4ZWwoZSl7fWdldFBpeGVsRm9yVGljayhlKXtsZXQgdD10aGlzLnRpY2tzO3JldHVybiBlPDB8fGU+dC5sZW5ndGgtMT9udWxsOnRoaXMuZ2V0UGl4ZWxGb3JWYWx1ZSh0W2VdLnZhbHVlKX1nZXRQaXhlbEZvckRlY2ltYWwoZSl7dGhpcy5fcmV2ZXJzZVBpeGVscyYmKGU9MS1lKTtsZXQgdD10aGlzLl9zdGFydFBpeGVsK2UqdGhpcy5fbGVuZ3RoO3JldHVybiB3dCh0aGlzLl9hbGlnblRvUGl4ZWxzP3BuKHRoaXMuY2hhcnQsdCwwKTp0KX1nZXREZWNpbWFsRm9yUGl4ZWwoZSl7bGV0IHQ9KGUtdGhpcy5fc3RhcnRQaXhlbCkvdGhpcy5fbGVuZ3RoO3JldHVybiB0aGlzLl9yZXZlcnNlUGl4ZWxzPzEtdDp0fWdldEJhc2VQaXhlbCgpe3JldHVybiB0aGlzLmdldFBpeGVsRm9yVmFsdWUodGhpcy5nZXRCYXNlVmFsdWUoKSl9Z2V0QmFzZVZhbHVlKCl7bGV0e21pbjplLG1heDp0fT10aGlzO3JldHVybiBlPDAmJnQ8MD90OmU+MCYmdD4wP2U6MH1nZXRDb250ZXh0KGUpe2xldCB0PXRoaXMudGlja3N8fFtdO2lmKGU+PTAmJmU8dC5sZW5ndGgpe2xldCBuPXRbZV07cmV0dXJuIG4uJGNvbnRleHR8fD1MYSh0aGlzLmdldENvbnRleHQoKSxlLG4pfXJldHVybiB0aGlzLiRjb250ZXh0fHw9SWEodGhpcy5jaGFydC5nZXRDb250ZXh0KCksdGhpcyl9X3RpY2tTaXplKCl7bGV0IGU9dGhpcy5vcHRpb25zLnRpY2tzLHQ9X3QodGhpcy5sYWJlbFJvdGF0aW9uKSxuPU1hdGguYWJzKE1hdGguY29zKHQpKSxyPU1hdGguYWJzKE1hdGguc2luKHQpKSxpPXRoaXMuX2dldExhYmVsU2l6ZXMoKSxhPWUuYXV0b1NraXBQYWRkaW5nfHwwLG89aT9pLndpZGVzdC53aWR0aCthOjAscz1pP2kuaGlnaGVzdC5oZWlnaHQrYTowO3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbCgpP3Mqbj5vKnI/by9uOnMvcjpzKnI8bypuP3MvbjpvL3J9X2lzVmlzaWJsZSgpe2xldCBlPXRoaXMub3B0aW9ucy5kaXNwbGF5O3JldHVybiBlPT09YGF1dG9gP3RoaXMuZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXMoKS5sZW5ndGg+MDohIWV9X2NvbXB1dGVHcmlkTGluZUl0ZW1zKGUpe2xldCB0PXRoaXMuYXhpcyxuPXRoaXMuY2hhcnQscj10aGlzLm9wdGlvbnMse2dyaWQ6aSxwb3NpdGlvbjphLGJvcmRlcjpvfT1yLHM9aS5vZmZzZXQsYz10aGlzLmlzSG9yaXpvbnRhbCgpLGw9dGhpcy50aWNrcy5sZW5ndGgrICshIXMsdT1QYShpKSxkPVtdLGY9by5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgpKSxwPWYuZGlzcGxheT9mLndpZHRoOjAsbT1wLzIsaD1mdW5jdGlvbihlKXtyZXR1cm4gcG4obixlLHApfSxnLF8sdix5LGIseCxTLEMsdyxULEUsRDtpZihhPT09YHRvcGApZz1oKHRoaXMuYm90dG9tKSx4PXRoaXMuYm90dG9tLXUsQz1nLW0sVD1oKGUudG9wKSttLEQ9ZS5ib3R0b207ZWxzZSBpZihhPT09YGJvdHRvbWApZz1oKHRoaXMudG9wKSxUPWUudG9wLEQ9aChlLmJvdHRvbSktbSx4PWcrbSxDPXRoaXMudG9wK3U7ZWxzZSBpZihhPT09YGxlZnRgKWc9aCh0aGlzLnJpZ2h0KSxiPXRoaXMucmlnaHQtdSxTPWctbSx3PWgoZS5sZWZ0KSttLEU9ZS5yaWdodDtlbHNlIGlmKGE9PT1gcmlnaHRgKWc9aCh0aGlzLmxlZnQpLHc9ZS5sZWZ0LEU9aChlLnJpZ2h0KS1tLGI9ZyttLFM9dGhpcy5sZWZ0K3U7ZWxzZSBpZih0PT09YHhgKXtpZihhPT09YGNlbnRlcmApZz1oKChlLnRvcCtlLmJvdHRvbSkvMisuNSk7ZWxzZSBpZihNKGEpKXtsZXQgZT1PYmplY3Qua2V5cyhhKVswXSx0PWFbZV07Zz1oKHRoaXMuY2hhcnQuc2NhbGVzW2VdLmdldFBpeGVsRm9yVmFsdWUodCkpfVQ9ZS50b3AsRD1lLmJvdHRvbSx4PWcrbSxDPXgrdX1lbHNlIGlmKHQ9PT1geWApe2lmKGE9PT1gY2VudGVyYClnPWgoKGUubGVmdCtlLnJpZ2h0KS8yKTtlbHNlIGlmKE0oYSkpe2xldCBlPU9iamVjdC5rZXlzKGEpWzBdLHQ9YVtlXTtnPWgodGhpcy5jaGFydC5zY2FsZXNbZV0uZ2V0UGl4ZWxGb3JWYWx1ZSh0KSl9Yj1nLW0sUz1iLXUsdz1lLmxlZnQsRT1lLnJpZ2h0fWxldCBlZT1GKHIudGlja3MubWF4VGlja3NMaW1pdCxsKSxPPU1hdGgubWF4KDEsTWF0aC5jZWlsKGwvZWUpKTtmb3IoXz0wO188bDtfKz1PKXtsZXQgZT10aGlzLmdldENvbnRleHQoXyksdD1pLnNldENvbnRleHQoZSkscj1vLnNldENvbnRleHQoZSksYT10LmxpbmVXaWR0aCxsPXQuY29sb3IsdT1yLmRhc2h8fFtdLGY9ci5kYXNoT2Zmc2V0LHA9dC50aWNrV2lkdGgsbT10LnRpY2tDb2xvcixoPXQudGlja0JvcmRlckRhc2h8fFtdLGc9dC50aWNrQm9yZGVyRGFzaE9mZnNldDt2PU1hKHRoaXMsXyxzKSx2IT09dm9pZCAwJiYoeT1wbihuLHYsYSksYz9iPVM9dz1FPXk6eD1DPVQ9RD15LGQucHVzaCh7dHgxOmIsdHkxOngsdHgyOlMsdHkyOkMseDE6dyx5MTpULHgyOkUseTI6RCx3aWR0aDphLGNvbG9yOmwsYm9yZGVyRGFzaDp1LGJvcmRlckRhc2hPZmZzZXQ6Zix0aWNrV2lkdGg6cCx0aWNrQ29sb3I6bSx0aWNrQm9yZGVyRGFzaDpoLHRpY2tCb3JkZXJEYXNoT2Zmc2V0Omd9KSl9cmV0dXJuIHRoaXMuX3RpY2tzTGVuZ3RoPWwsdGhpcy5fYm9yZGVyVmFsdWU9ZyxkfV9jb21wdXRlTGFiZWxJdGVtcyhlKXtsZXQgdD10aGlzLmF4aXMsbj10aGlzLm9wdGlvbnMse3Bvc2l0aW9uOnIsdGlja3M6aX09bixhPXRoaXMuaXNIb3Jpem9udGFsKCksbz10aGlzLnRpY2tzLHthbGlnbjpzLGNyb3NzQWxpZ246YyxwYWRkaW5nOmwsbWlycm9yOnV9PWksZD1QYShuLmdyaWQpLGY9ZCtsLHA9dT8tbDpmLG09LV90KHRoaXMubGFiZWxSb3RhdGlvbiksaD1bXSxnLF8sdix5LGIseCxTLEMsdyxULEUsRCxlZT1gbWlkZGxlYDtpZihyPT09YHRvcGApeD10aGlzLmJvdHRvbS1wLFM9dGhpcy5fZ2V0WEF4aXNMYWJlbEFsaWdubWVudCgpO2Vsc2UgaWYocj09PWBib3R0b21gKXg9dGhpcy50b3ArcCxTPXRoaXMuX2dldFhBeGlzTGFiZWxBbGlnbm1lbnQoKTtlbHNlIGlmKHI9PT1gbGVmdGApe2xldCBlPXRoaXMuX2dldFlBeGlzTGFiZWxBbGlnbm1lbnQoZCk7Uz1lLnRleHRBbGlnbixiPWUueH1lbHNlIGlmKHI9PT1gcmlnaHRgKXtsZXQgZT10aGlzLl9nZXRZQXhpc0xhYmVsQWxpZ25tZW50KGQpO1M9ZS50ZXh0QWxpZ24sYj1lLnh9ZWxzZSBpZih0PT09YHhgKXtpZihyPT09YGNlbnRlcmApeD0oZS50b3ArZS5ib3R0b20pLzIrZjtlbHNlIGlmKE0ocikpe2xldCBlPU9iamVjdC5rZXlzKHIpWzBdLHQ9cltlXTt4PXRoaXMuY2hhcnQuc2NhbGVzW2VdLmdldFBpeGVsRm9yVmFsdWUodCkrZn1TPXRoaXMuX2dldFhBeGlzTGFiZWxBbGlnbm1lbnQoKX1lbHNlIGlmKHQ9PT1geWApe2lmKHI9PT1gY2VudGVyYCliPShlLmxlZnQrZS5yaWdodCkvMi1mO2Vsc2UgaWYoTShyKSl7bGV0IGU9T2JqZWN0LmtleXMocilbMF0sdD1yW2VdO2I9dGhpcy5jaGFydC5zY2FsZXNbZV0uZ2V0UGl4ZWxGb3JWYWx1ZSh0KX1TPXRoaXMuX2dldFlBeGlzTGFiZWxBbGlnbm1lbnQoZCkudGV4dEFsaWdufXQ9PT1geWAmJihzPT09YHN0YXJ0YD9lZT1gdG9wYDpzPT09YGVuZGAmJihlZT1gYm90dG9tYCkpO2xldCBPPXRoaXMuX2dldExhYmVsU2l6ZXMoKTtmb3IoZz0wLF89by5sZW5ndGg7ZzxfOysrZyl7dj1vW2ddLHk9di5sYWJlbDtsZXQgZT1pLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KGcpKTtDPXRoaXMuZ2V0UGl4ZWxGb3JUaWNrKGcpK2kubGFiZWxPZmZzZXQsdz10aGlzLl9yZXNvbHZlVGlja0ZvbnRPcHRpb25zKGcpLFQ9dy5saW5lSGVpZ2h0LEU9aih5KT95Lmxlbmd0aDoxO2xldCB0PUUvMixuPWUuY29sb3Iscz1lLnRleHRTdHJva2VDb2xvcixsPWUudGV4dFN0cm9rZVdpZHRoLGQ9UzthPyhiPUMsUz09PWBpbm5lcmAmJihkPWc9PT1fLTE/dGhpcy5vcHRpb25zLnJldmVyc2U/YGxlZnRgOmByaWdodGA6Zz09PTA/dGhpcy5vcHRpb25zLnJldmVyc2U/YHJpZ2h0YDpgbGVmdGA6YGNlbnRlcmApLEQ9cj09PWB0b3BgP2M9PT1gbmVhcmB8fG0hPT0wPy1FKlQrVC8yOmM9PT1gY2VudGVyYD8tTy5oaWdoZXN0LmhlaWdodC8yLXQqVCtUOi1PLmhpZ2hlc3QuaGVpZ2h0K1QvMjpjPT09YG5lYXJgfHxtIT09MD9ULzI6Yz09PWBjZW50ZXJgP08uaGlnaGVzdC5oZWlnaHQvMi10KlQ6Ty5oaWdoZXN0LmhlaWdodC1FKlQsdSYmKEQqPS0xKSxtIT09MCYmIWUuc2hvd0xhYmVsQmFja2Ryb3AmJihiKz1ULzIqTWF0aC5zaW4obSkpKTooeD1DLEQ9KDEtRSkqVC8yKTtsZXQgZjtpZihlLnNob3dMYWJlbEJhY2tkcm9wKXtsZXQgdD1LKGUuYmFja2Ryb3BQYWRkaW5nKSxuPU8uaGVpZ2h0c1tnXSxyPU8ud2lkdGhzW2ddLGk9RC10LnRvcCxhPTAtdC5sZWZ0O3N3aXRjaChlZSl7Y2FzZWBtaWRkbGVgOmktPW4vMjticmVhaztjYXNlYGJvdHRvbWA6aS09bn1zd2l0Y2goUyl7Y2FzZWBjZW50ZXJgOmEtPXIvMjticmVhaztjYXNlYHJpZ2h0YDphLT1yO2JyZWFrO2Nhc2VgaW5uZXJgOmc9PT1fLTE/YS09cjpnPjAmJihhLT1yLzIpfWY9e2xlZnQ6YSx0b3A6aSx3aWR0aDpyK3Qud2lkdGgsaGVpZ2h0Om4rdC5oZWlnaHQsY29sb3I6ZS5iYWNrZHJvcENvbG9yfX1oLnB1c2goe2xhYmVsOnksZm9udDp3LHRleHRPZmZzZXQ6RCxvcHRpb25zOntyb3RhdGlvbjptLGNvbG9yOm4sc3Ryb2tlQ29sb3I6cyxzdHJva2VXaWR0aDpsLHRleHRBbGlnbjpkLHRleHRCYXNlbGluZTplZSx0cmFuc2xhdGlvbjpbYix4XSxiYWNrZHJvcDpmfX0pfXJldHVybiBofV9nZXRYQXhpc0xhYmVsQWxpZ25tZW50KCl7bGV0e3Bvc2l0aW9uOmUsdGlja3M6dH09dGhpcy5vcHRpb25zO2lmKC1fdCh0aGlzLmxhYmVsUm90YXRpb24pKXJldHVybiBlPT09YHRvcGA/YGxlZnRgOmByaWdodGA7bGV0IG49YGNlbnRlcmA7cmV0dXJuIHQuYWxpZ249PT1gc3RhcnRgP249YGxlZnRgOnQuYWxpZ249PT1gZW5kYD9uPWByaWdodGA6dC5hbGlnbj09PWBpbm5lcmAmJihuPWBpbm5lcmApLG59X2dldFlBeGlzTGFiZWxBbGlnbm1lbnQoZSl7bGV0e3Bvc2l0aW9uOnQsdGlja3M6e2Nyb3NzQWxpZ246bixtaXJyb3I6cixwYWRkaW5nOml9fT10aGlzLm9wdGlvbnMsYT10aGlzLl9nZXRMYWJlbFNpemVzKCksbz1lK2kscz1hLndpZGVzdC53aWR0aCxjLGw7cmV0dXJuIHQ9PT1gbGVmdGA/cj8obD10aGlzLnJpZ2h0K2ksbj09PWBuZWFyYD9jPWBsZWZ0YDpuPT09YGNlbnRlcmA/KGM9YGNlbnRlcmAsbCs9cy8yKTooYz1gcmlnaHRgLGwrPXMpKToobD10aGlzLnJpZ2h0LW8sbj09PWBuZWFyYD9jPWByaWdodGA6bj09PWBjZW50ZXJgPyhjPWBjZW50ZXJgLGwtPXMvMik6KGM9YGxlZnRgLGw9dGhpcy5sZWZ0KSk6dD09PWByaWdodGA/cj8obD10aGlzLmxlZnQraSxuPT09YG5lYXJgP2M9YHJpZ2h0YDpuPT09YGNlbnRlcmA/KGM9YGNlbnRlcmAsbC09cy8yKTooYz1gbGVmdGAsbC09cykpOihsPXRoaXMubGVmdCtvLG49PT1gbmVhcmA/Yz1gbGVmdGA6bj09PWBjZW50ZXJgPyhjPWBjZW50ZXJgLGwrPXMvMik6KGM9YHJpZ2h0YCxsPXRoaXMucmlnaHQpKTpjPWByaWdodGAse3RleHRBbGlnbjpjLHg6bH19X2NvbXB1dGVMYWJlbEFyZWEoKXtpZih0aGlzLm9wdGlvbnMudGlja3MubWlycm9yKXJldHVybjtsZXQgZT10aGlzLmNoYXJ0LHQ9dGhpcy5vcHRpb25zLnBvc2l0aW9uO2lmKHQ9PT1gbGVmdGB8fHQ9PT1gcmlnaHRgKXJldHVybnt0b3A6MCxsZWZ0OnRoaXMubGVmdCxib3R0b206ZS5oZWlnaHQscmlnaHQ6dGhpcy5yaWdodH07aWYodD09PWB0b3BgfHx0PT09YGJvdHRvbWApcmV0dXJue3RvcDp0aGlzLnRvcCxsZWZ0OjAsYm90dG9tOnRoaXMuYm90dG9tLHJpZ2h0OmUud2lkdGh9fWRyYXdCYWNrZ3JvdW5kKCl7bGV0e2N0eDplLG9wdGlvbnM6e2JhY2tncm91bmRDb2xvcjp0fSxsZWZ0Om4sdG9wOnIsd2lkdGg6aSxoZWlnaHQ6YX09dGhpczt0JiYoZS5zYXZlKCksZS5maWxsU3R5bGU9dCxlLmZpbGxSZWN0KG4scixpLGEpLGUucmVzdG9yZSgpKX1nZXRMaW5lV2lkdGhGb3JWYWx1ZShlKXtsZXQgdD10aGlzLm9wdGlvbnMuZ3JpZDtpZighdGhpcy5faXNWaXNpYmxlKCl8fCF0LmRpc3BsYXkpcmV0dXJuIDA7bGV0IG49dGhpcy50aWNrcy5maW5kSW5kZXgodD0+dC52YWx1ZT09PWUpO3JldHVybiBuPj0wP3Quc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQobikpLmxpbmVXaWR0aDowfWRyYXdHcmlkKGUpe2xldCB0PXRoaXMub3B0aW9ucy5ncmlkLG49dGhpcy5jdHgscj10aGlzLl9ncmlkTGluZUl0ZW1zfHw9dGhpcy5fY29tcHV0ZUdyaWRMaW5lSXRlbXMoZSksaSxhLG89KGUsdCxyKT0+eyFyLndpZHRofHwhci5jb2xvcnx8KG4uc2F2ZSgpLG4ubGluZVdpZHRoPXIud2lkdGgsbi5zdHJva2VTdHlsZT1yLmNvbG9yLG4uc2V0TGluZURhc2goci5ib3JkZXJEYXNofHxbXSksbi5saW5lRGFzaE9mZnNldD1yLmJvcmRlckRhc2hPZmZzZXQsbi5iZWdpblBhdGgoKSxuLm1vdmVUbyhlLngsZS55KSxuLmxpbmVUbyh0LngsdC55KSxuLnN0cm9rZSgpLG4ucmVzdG9yZSgpKX07aWYodC5kaXNwbGF5KWZvcihpPTAsYT1yLmxlbmd0aDtpPGE7KytpKXtsZXQgZT1yW2ldO3QuZHJhd09uQ2hhcnRBcmVhJiZvKHt4OmUueDEseTplLnkxfSx7eDplLngyLHk6ZS55Mn0sZSksdC5kcmF3VGlja3MmJm8oe3g6ZS50eDEseTplLnR5MX0se3g6ZS50eDIseTplLnR5Mn0se2NvbG9yOmUudGlja0NvbG9yLHdpZHRoOmUudGlja1dpZHRoLGJvcmRlckRhc2g6ZS50aWNrQm9yZGVyRGFzaCxib3JkZXJEYXNoT2Zmc2V0OmUudGlja0JvcmRlckRhc2hPZmZzZXR9KX19ZHJhd0JvcmRlcigpe2xldHtjaGFydDplLGN0eDp0LG9wdGlvbnM6e2JvcmRlcjpuLGdyaWQ6cn19PXRoaXMsaT1uLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KCkpLGE9bi5kaXNwbGF5P2kud2lkdGg6MDtpZighYSlyZXR1cm47bGV0IG89ci5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgwKSkubGluZVdpZHRoLHM9dGhpcy5fYm9yZGVyVmFsdWUsYyxsLHUsZDt0aGlzLmlzSG9yaXpvbnRhbCgpPyhjPXBuKGUsdGhpcy5sZWZ0LGEpLWEvMixsPXBuKGUsdGhpcy5yaWdodCxvKStvLzIsdT1kPXMpOih1PXBuKGUsdGhpcy50b3AsYSktYS8yLGQ9cG4oZSx0aGlzLmJvdHRvbSxvKStvLzIsYz1sPXMpLHQuc2F2ZSgpLHQubGluZVdpZHRoPWkud2lkdGgsdC5zdHJva2VTdHlsZT1pLmNvbG9yLHQuYmVnaW5QYXRoKCksdC5tb3ZlVG8oYyx1KSx0LmxpbmVUbyhsLGQpLHQuc3Ryb2tlKCksdC5yZXN0b3JlKCl9ZHJhd0xhYmVscyhlKXtpZighdGhpcy5vcHRpb25zLnRpY2tzLmRpc3BsYXkpcmV0dXJuO2xldCB0PXRoaXMuY3R4LG49dGhpcy5fY29tcHV0ZUxhYmVsQXJlYSgpO24mJl9uKHQsbik7bGV0IHI9dGhpcy5nZXRMYWJlbEl0ZW1zKGUpO2ZvcihsZXQgZSBvZiByKXtsZXQgbj1lLm9wdGlvbnMscj1lLmZvbnQsaT1lLmxhYmVsLGE9ZS50ZXh0T2Zmc2V0O3duKHQsaSwwLGEscixuKX1uJiZ2bih0KX1kcmF3VGl0bGUoKXtsZXR7Y3R4OmUsb3B0aW9uczp7cG9zaXRpb246dCx0aXRsZTpuLHJldmVyc2U6cn19PXRoaXM7aWYoIW4uZGlzcGxheSlyZXR1cm47bGV0IGk9cShuLmZvbnQpLGE9SyhuLnBhZGRpbmcpLG89bi5hbGlnbixzPWkubGluZUhlaWdodC8yO3Q9PT1gYm90dG9tYHx8dD09PWBjZW50ZXJgfHxNKHQpPyhzKz1hLmJvdHRvbSxqKG4udGV4dCkmJihzKz1pLmxpbmVIZWlnaHQqKG4udGV4dC5sZW5ndGgtMSkpKTpzKz1hLnRvcDtsZXR7dGl0bGVYOmMsdGl0bGVZOmwsbWF4V2lkdGg6dSxyb3RhdGlvbjpkfT16YSh0aGlzLHMsdCxvKTt3bihlLG4udGV4dCwwLDAsaSx7Y29sb3I6bi5jb2xvcixtYXhXaWR0aDp1LHJvdGF0aW9uOmQsdGV4dEFsaWduOlJhKG8sdCxyKSx0ZXh0QmFzZWxpbmU6YG1pZGRsZWAsdHJhbnNsYXRpb246W2MsbF19KX1kcmF3KGUpe3RoaXMuX2lzVmlzaWJsZSgpJiYodGhpcy5kcmF3QmFja2dyb3VuZCgpLHRoaXMuZHJhd0dyaWQoZSksdGhpcy5kcmF3Qm9yZGVyKCksdGhpcy5kcmF3VGl0bGUoKSx0aGlzLmRyYXdMYWJlbHMoZSkpfV9sYXllcnMoKXtsZXQgdD10aGlzLm9wdGlvbnMsbj10LnRpY2tzJiZ0LnRpY2tzLnp8fDAscj1GKHQuZ3JpZCYmdC5ncmlkLnosLTEpLGk9Rih0LmJvcmRlciYmdC5ib3JkZXIueiwwKTtyZXR1cm4hdGhpcy5faXNWaXNpYmxlKCl8fHRoaXMuZHJhdyE9PWUucHJvdG90eXBlLmRyYXc/W3t6Om4sZHJhdzplPT57dGhpcy5kcmF3KGUpfX1dOlt7ejpyLGRyYXc6ZT0+e3RoaXMuZHJhd0JhY2tncm91bmQoKSx0aGlzLmRyYXdHcmlkKGUpLHRoaXMuZHJhd1RpdGxlKCl9fSx7ejppLGRyYXc6KCk9Pnt0aGlzLmRyYXdCb3JkZXIoKX19LHt6Om4sZHJhdzplPT57dGhpcy5kcmF3TGFiZWxzKGUpfX1dfWdldE1hdGNoaW5nVmlzaWJsZU1ldGFzKGUpe2xldCB0PXRoaXMuY2hhcnQuZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpLG49dGhpcy5heGlzK2BBeGlzSURgLHI9W10saSxhO2ZvcihpPTAsYT10Lmxlbmd0aDtpPGE7KytpKXtsZXQgYT10W2ldO2Fbbl09PT10aGlzLmlkJiYoIWV8fGEudHlwZT09PWUpJiZyLnB1c2goYSl9cmV0dXJuIHJ9X3Jlc29sdmVUaWNrRm9udE9wdGlvbnMoZSl7cmV0dXJuIHEodGhpcy5vcHRpb25zLnRpY2tzLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KGUpKS5mb250KX1fbWF4RGlnaXRzKCl7bGV0IGU9dGhpcy5fcmVzb2x2ZVRpY2tGb250T3B0aW9ucygwKS5saW5lSGVpZ2h0O3JldHVybih0aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMud2lkdGg6dGhpcy5oZWlnaHQpL2V9fSxWYT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy50eXBlPWUsdGhpcy5zY29wZT10LHRoaXMub3ZlcnJpZGU9bix0aGlzLml0ZW1zPU9iamVjdC5jcmVhdGUobnVsbCl9aXNGb3JUeXBlKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YuY2FsbCh0aGlzLnR5cGUucHJvdG90eXBlLGUucHJvdG90eXBlKX1yZWdpc3RlcihlKXtsZXQgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSksbjtXYSh0KSYmKG49dGhpcy5yZWdpc3Rlcih0KSk7bGV0IHI9dGhpcy5pdGVtcyxpPWUuaWQsYT10aGlzLnNjb3BlK2AuYCtpO2lmKCFpKXRocm93IEVycm9yKGBjbGFzcyBkb2VzIG5vdCBoYXZlIGlkOiBgK2UpO3JldHVybiBpIGluIHI/YToocltpXT1lLEhhKGUsYSxuKSx0aGlzLm92ZXJyaWRlJiZXLm92ZXJyaWRlKGUuaWQsZS5vdmVycmlkZXMpLGEpfWdldChlKXtyZXR1cm4gdGhpcy5pdGVtc1tlXX11bnJlZ2lzdGVyKGUpe2xldCB0PXRoaXMuaXRlbXMsbj1lLmlkLHI9dGhpcy5zY29wZTtuIGluIHQmJmRlbGV0ZSB0W25dLHImJm4gaW4gV1tyXSYmKGRlbGV0ZSBXW3JdW25dLHRoaXMub3ZlcnJpZGUmJmRlbGV0ZSBvbltuXSl9fTtmdW5jdGlvbiBIYShlLHQsbil7bGV0IHI9R2UoT2JqZWN0LmNyZWF0ZShudWxsKSxbbj9XLmdldChuKTp7fSxXLmdldCh0KSxlLmRlZmF1bHRzXSk7Vy5zZXQodCxyKSxlLmRlZmF1bHRSb3V0ZXMmJlVhKHQsZS5kZWZhdWx0Um91dGVzKSxlLmRlc2NyaXB0b3JzJiZXLmRlc2NyaWJlKHQsZS5kZXNjcmlwdG9ycyl9ZnVuY3Rpb24gVWEoZSx0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKG49PntsZXQgcj1uLnNwbGl0KGAuYCksaT1yLnBvcCgpLGE9W2VdLmNvbmNhdChyKS5qb2luKGAuYCksbz10W25dLnNwbGl0KGAuYCkscz1vLnBvcCgpLGM9by5qb2luKGAuYCk7Vy5yb3V0ZShhLGksYyxzKX0pfWZ1bmN0aW9uIFdhKGUpe3JldHVybmBpZGBpbiBlJiZgZGVmYXVsdHNgaW4gZX12YXIgWT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmNvbnRyb2xsZXJzPW5ldyBWYSh4aSxgZGF0YXNldHNgLCEwKSx0aGlzLmVsZW1lbnRzPW5ldyBWYShiYSxgZWxlbWVudHNgKSx0aGlzLnBsdWdpbnM9bmV3IFZhKE9iamVjdCxgcGx1Z2luc2ApLHRoaXMuc2NhbGVzPW5ldyBWYShCYSxgc2NhbGVzYCksdGhpcy5fdHlwZWRSZWdpc3RyaWVzPVt0aGlzLmNvbnRyb2xsZXJzLHRoaXMuc2NhbGVzLHRoaXMuZWxlbWVudHNdfWFkZCguLi5lKXt0aGlzLl9lYWNoKGByZWdpc3RlcmAsZSl9cmVtb3ZlKC4uLmUpe3RoaXMuX2VhY2goYHVucmVnaXN0ZXJgLGUpfWFkZENvbnRyb2xsZXJzKC4uLmUpe3RoaXMuX2VhY2goYHJlZ2lzdGVyYCxlLHRoaXMuY29udHJvbGxlcnMpfWFkZEVsZW1lbnRzKC4uLmUpe3RoaXMuX2VhY2goYHJlZ2lzdGVyYCxlLHRoaXMuZWxlbWVudHMpfWFkZFBsdWdpbnMoLi4uZSl7dGhpcy5fZWFjaChgcmVnaXN0ZXJgLGUsdGhpcy5wbHVnaW5zKX1hZGRTY2FsZXMoLi4uZSl7dGhpcy5fZWFjaChgcmVnaXN0ZXJgLGUsdGhpcy5zY2FsZXMpfWdldENvbnRyb2xsZXIoZSl7cmV0dXJuIHRoaXMuX2dldChlLHRoaXMuY29udHJvbGxlcnMsYGNvbnRyb2xsZXJgKX1nZXRFbGVtZW50KGUpe3JldHVybiB0aGlzLl9nZXQoZSx0aGlzLmVsZW1lbnRzLGBlbGVtZW50YCl9Z2V0UGx1Z2luKGUpe3JldHVybiB0aGlzLl9nZXQoZSx0aGlzLnBsdWdpbnMsYHBsdWdpbmApfWdldFNjYWxlKGUpe3JldHVybiB0aGlzLl9nZXQoZSx0aGlzLnNjYWxlcyxgc2NhbGVgKX1yZW1vdmVDb250cm9sbGVycyguLi5lKXt0aGlzLl9lYWNoKGB1bnJlZ2lzdGVyYCxlLHRoaXMuY29udHJvbGxlcnMpfXJlbW92ZUVsZW1lbnRzKC4uLmUpe3RoaXMuX2VhY2goYHVucmVnaXN0ZXJgLGUsdGhpcy5lbGVtZW50cyl9cmVtb3ZlUGx1Z2lucyguLi5lKXt0aGlzLl9lYWNoKGB1bnJlZ2lzdGVyYCxlLHRoaXMucGx1Z2lucyl9cmVtb3ZlU2NhbGVzKC4uLmUpe3RoaXMuX2VhY2goYHVucmVnaXN0ZXJgLGUsdGhpcy5zY2FsZXMpfV9lYWNoKGUsdCxuKXtbLi4udF0uZm9yRWFjaCh0PT57bGV0IHI9bnx8dGhpcy5fZ2V0UmVnaXN0cnlGb3JUeXBlKHQpO258fHIuaXNGb3JUeXBlKHQpfHxyPT09dGhpcy5wbHVnaW5zJiZ0LmlkP3RoaXMuX2V4ZWMoZSxyLHQpOkwodCx0PT57bGV0IHI9bnx8dGhpcy5fZ2V0UmVnaXN0cnlGb3JUeXBlKHQpO3RoaXMuX2V4ZWMoZSxyLHQpfSl9KX1fZXhlYyhlLHQsbil7bGV0IHI9UWUoZSk7SShuW2BiZWZvcmVgK3JdLFtdLG4pLHRbZV0obiksSShuW2BhZnRlcmArcl0sW10sbil9X2dldFJlZ2lzdHJ5Rm9yVHlwZShlKXtmb3IobGV0IHQ9MDt0PHRoaXMuX3R5cGVkUmVnaXN0cmllcy5sZW5ndGg7dCsrKXtsZXQgbj10aGlzLl90eXBlZFJlZ2lzdHJpZXNbdF07aWYobi5pc0ZvclR5cGUoZSkpcmV0dXJuIG59cmV0dXJuIHRoaXMucGx1Z2luc31fZ2V0KGUsdCxuKXtsZXQgcj10LmdldChlKTtpZihyPT09dm9pZCAwKXRocm93IEVycm9yKGAiYCtlK2AiIGlzIG5vdCBhIHJlZ2lzdGVyZWQgYCtuK2AuYCk7cmV0dXJuIHJ9fSxHYT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2luaXQ9dm9pZCAwfW5vdGlmeShlLHQsbixyKXtpZih0PT09YGJlZm9yZUluaXRgJiYodGhpcy5faW5pdD10aGlzLl9jcmVhdGVEZXNjcmlwdG9ycyhlLCEwKSx0aGlzLl9ub3RpZnkodGhpcy5faW5pdCxlLGBpbnN0YWxsYCkpLHRoaXMuX2luaXQ9PT12b2lkIDApcmV0dXJuO2xldCBpPXI/dGhpcy5fZGVzY3JpcHRvcnMoZSkuZmlsdGVyKHIpOnRoaXMuX2Rlc2NyaXB0b3JzKGUpLGE9dGhpcy5fbm90aWZ5KGksZSx0LG4pO3JldHVybiB0PT09YGFmdGVyRGVzdHJveWAmJih0aGlzLl9ub3RpZnkoaSxlLGBzdG9wYCksdGhpcy5fbm90aWZ5KHRoaXMuX2luaXQsZSxgdW5pbnN0YWxsYCksdGhpcy5faW5pdD12b2lkIDApLGF9X25vdGlmeShlLHQsbixyKXtyfHw9e307Zm9yKGxldCBpIG9mIGUpe2xldCBlPWkucGx1Z2luLGE9ZVtuXTtpZihJKGEsW3QscixpLm9wdGlvbnNdLGUpPT09ITEmJnIuY2FuY2VsYWJsZSlyZXR1cm4hMX1yZXR1cm4hMH1pbnZhbGlkYXRlKCl7QSh0aGlzLl9jYWNoZSl8fCh0aGlzLl9vbGRDYWNoZT10aGlzLl9jYWNoZSx0aGlzLl9jYWNoZT12b2lkIDApfV9kZXNjcmlwdG9ycyhlKXtpZih0aGlzLl9jYWNoZSlyZXR1cm4gdGhpcy5fY2FjaGU7bGV0IHQ9dGhpcy5fY2FjaGU9dGhpcy5fY3JlYXRlRGVzY3JpcHRvcnMoZSk7cmV0dXJuIHRoaXMuX25vdGlmeVN0YXRlQ2hhbmdlcyhlKSx0fV9jcmVhdGVEZXNjcmlwdG9ycyhlLHQpe2xldCBuPWUmJmUuY29uZmlnLHI9RihuLm9wdGlvbnMmJm4ub3B0aW9ucy5wbHVnaW5zLHt9KSxpPUthKG4pO3JldHVybiByPT09ITEmJiF0P1tdOkphKGUsaSxyLHQpfV9ub3RpZnlTdGF0ZUNoYW5nZXMoZSl7bGV0IHQ9dGhpcy5fb2xkQ2FjaGV8fFtdLG49dGhpcy5fY2FjaGUscj0oZSx0KT0+ZS5maWx0ZXIoZT0+IXQuc29tZSh0PT5lLnBsdWdpbi5pZD09PXQucGx1Z2luLmlkKSk7dGhpcy5fbm90aWZ5KHIodCxuKSxlLGBzdG9wYCksdGhpcy5fbm90aWZ5KHIobix0KSxlLGBzdGFydGApfX07ZnVuY3Rpb24gS2EoZSl7bGV0IHQ9e30sbj1bXSxyPU9iamVjdC5rZXlzKFkucGx1Z2lucy5pdGVtcyk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspbi5wdXNoKFkuZ2V0UGx1Z2luKHJbZV0pKTtsZXQgaT1lLnBsdWdpbnN8fFtdO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXtsZXQgcj1pW2VdO24uaW5kZXhPZihyKT09PS0xJiYobi5wdXNoKHIpLHRbci5pZF09ITApfXJldHVybntwbHVnaW5zOm4sbG9jYWxJZHM6dH19ZnVuY3Rpb24gcWEoZSx0KXtyZXR1cm4hdCYmZT09PSExP251bGw6ZT09PSEwP3t9OmV9ZnVuY3Rpb24gSmEoZSx7cGx1Z2luczp0LGxvY2FsSWRzOm59LHIsaSl7bGV0IGE9W10sbz1lLmdldENvbnRleHQoKTtmb3IobGV0IHMgb2YgdCl7bGV0IHQ9cy5pZCxjPXFhKHJbdF0saSk7YyE9PW51bGwmJmEucHVzaCh7cGx1Z2luOnMsb3B0aW9uczpZYShlLmNvbmZpZyx7cGx1Z2luOnMsbG9jYWw6blt0XX0sYyxvKX0pfXJldHVybiBhfWZ1bmN0aW9uIFlhKGUse3BsdWdpbjp0LGxvY2FsOm59LHIsaSl7bGV0IGE9ZS5wbHVnaW5TY29wZUtleXModCksbz1lLmdldE9wdGlvblNjb3BlcyhyLGEpO3JldHVybiBuJiZ0LmRlZmF1bHRzJiZvLnB1c2godC5kZWZhdWx0cyksZS5jcmVhdGVSZXNvbHZlcihvLGksW2BgXSx7c2NyaXB0YWJsZTohMSxpbmRleGFibGU6ITEsYWxsS2V5czohMH0pfWZ1bmN0aW9uIFhhKGUsdCl7bGV0IG49Vy5kYXRhc2V0c1tlXXx8e307cmV0dXJuKCh0LmRhdGFzZXRzfHx7fSlbZV18fHt9KS5pbmRleEF4aXN8fHQuaW5kZXhBeGlzfHxuLmluZGV4QXhpc3x8YHhgfWZ1bmN0aW9uIFphKGUsdCl7bGV0IG49ZTtyZXR1cm4gZT09PWBfaW5kZXhfYD9uPXQ6ZT09PWBfdmFsdWVfYCYmKG49dD09PWB4YD9geWA6YHhgKSxufWZ1bmN0aW9uIFFhKGUsdCl7cmV0dXJuIGU9PT10P2BfaW5kZXhfYDpgX3ZhbHVlX2B9ZnVuY3Rpb24gJGEoZSl7aWYoZT09PWB4YHx8ZT09PWB5YHx8ZT09PWByYClyZXR1cm4gZX1mdW5jdGlvbiBlbyhlKXtpZihlPT09YHRvcGB8fGU9PT1gYm90dG9tYClyZXR1cm5geGA7aWYoZT09PWBsZWZ0YHx8ZT09PWByaWdodGApcmV0dXJuYHlgfWZ1bmN0aW9uIHRvKGUsLi4udCl7aWYoJGEoZSkpcmV0dXJuIGU7Zm9yKGxldCBuIG9mIHQpe2xldCB0PW4uYXhpc3x8ZW8obi5wb3NpdGlvbil8fGUubGVuZ3RoPjEmJiRhKGVbMF0udG9Mb3dlckNhc2UoKSk7aWYodClyZXR1cm4gdH10aHJvdyBFcnJvcihgQ2Fubm90IGRldGVybWluZSB0eXBlIG9mICcke2V9JyBheGlzLiBQbGVhc2UgcHJvdmlkZSAnYXhpcycgb3IgJ3Bvc2l0aW9uJyBvcHRpb24uYCl9ZnVuY3Rpb24gbm8oZSx0LG4pe2lmKG5bdCtgQXhpc0lEYF09PT1lKXJldHVybntheGlzOnR9fWZ1bmN0aW9uIHJvKGUsdCl7aWYodC5kYXRhJiZ0LmRhdGEuZGF0YXNldHMpe2xldCBuPXQuZGF0YS5kYXRhc2V0cy5maWx0ZXIodD0+dC54QXhpc0lEPT09ZXx8dC55QXhpc0lEPT09ZSk7aWYobi5sZW5ndGgpcmV0dXJuIG5vKGUsYHhgLG5bMF0pfHxubyhlLGB5YCxuWzBdKX1yZXR1cm57fX1mdW5jdGlvbiBpbyhlLHQpe2xldCBuPW9uW2UudHlwZV18fHtzY2FsZXM6e319LHI9dC5zY2FsZXN8fHt9LGk9WGEoZS50eXBlLHQpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaCh0PT57bGV0IG89clt0XTtpZighTShvKSlyZXR1cm4gY29uc29sZS5lcnJvcihgSW52YWxpZCBzY2FsZSBjb25maWd1cmF0aW9uIGZvciBzY2FsZTogJHt0fWApO2lmKG8uX3Byb3h5KXJldHVybiBjb25zb2xlLndhcm4oYElnbm9yaW5nIHJlc29sdmVyIHBhc3NlZCBhcyBvcHRpb25zIGZvciBzY2FsZTogJHt0fWApO2xldCBzPXRvKHQsbyxybyh0LGUpLFcuc2NhbGVzW28udHlwZV0pLGM9UWEocyxpKSxsPW4uc2NhbGVzfHx7fTthW3RdPUtlKE9iamVjdC5jcmVhdGUobnVsbCksW3theGlzOnN9LG8sbFtzXSxsW2NdXSl9KSxlLmRhdGEuZGF0YXNldHMuZm9yRWFjaChuPT57bGV0IGk9bi50eXBlfHxlLnR5cGUsbz1uLmluZGV4QXhpc3x8WGEoaSx0KSxzPShvbltpXXx8e30pLnNjYWxlc3x8e307T2JqZWN0LmtleXMocykuZm9yRWFjaChlPT57bGV0IHQ9WmEoZSxvKSxpPW5bdCtgQXhpc0lEYF18fHQ7YVtpXT1hW2ldfHxPYmplY3QuY3JlYXRlKG51bGwpLEtlKGFbaV0sW3theGlzOnR9LHJbaV0sc1tlXV0pfSl9KSxPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGU9PntsZXQgdD1hW2VdO0tlKHQsW1cuc2NhbGVzW3QudHlwZV0sVy5zY2FsZV0pfSksYX1mdW5jdGlvbiBhbyhlKXtsZXQgdD1lLm9wdGlvbnN8fD17fTt0LnBsdWdpbnM9Rih0LnBsdWdpbnMse30pLHQuc2NhbGVzPWlvKGUsdCl9ZnVuY3Rpb24gb28oZSl7cmV0dXJuIGV8fD17fSxlLmRhdGFzZXRzPWUuZGF0YXNldHN8fFtdLGUubGFiZWxzPWUubGFiZWxzfHxbXSxlfWZ1bmN0aW9uIHNvKGUpe3JldHVybiBlfHw9e30sZS5kYXRhPW9vKGUuZGF0YSksYW8oZSksZX12YXIgY289bmV3IE1hcCxsbz1uZXcgU2V0O2Z1bmN0aW9uIHVvKGUsdCl7bGV0IG49Y28uZ2V0KGUpO3JldHVybiBufHwobj10KCksY28uc2V0KGUsbiksbG8uYWRkKG4pKSxufXZhciBmbz0oZSx0LG4pPT57bGV0IHI9WmUodCxuKTtyIT09dm9pZCAwJiZlLmFkZChyKX0scG89Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5fY29uZmlnPXNvKGUpLHRoaXMuX3Njb3BlQ2FjaGU9bmV3IE1hcCx0aGlzLl9yZXNvbHZlckNhY2hlPW5ldyBNYXB9Z2V0IHBsYXRmb3JtKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5wbGF0Zm9ybX1nZXQgdHlwZSgpe3JldHVybiB0aGlzLl9jb25maWcudHlwZX1zZXQgdHlwZShlKXt0aGlzLl9jb25maWcudHlwZT1lfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5kYXRhfXNldCBkYXRhKGUpe3RoaXMuX2NvbmZpZy5kYXRhPW9vKGUpfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5vcHRpb25zfXNldCBvcHRpb25zKGUpe3RoaXMuX2NvbmZpZy5vcHRpb25zPWV9Z2V0IHBsdWdpbnMoKXtyZXR1cm4gdGhpcy5fY29uZmlnLnBsdWdpbnN9dXBkYXRlKCl7bGV0IGU9dGhpcy5fY29uZmlnO3RoaXMuY2xlYXJDYWNoZSgpLGFvKGUpfWNsZWFyQ2FjaGUoKXt0aGlzLl9zY29wZUNhY2hlLmNsZWFyKCksdGhpcy5fcmVzb2x2ZXJDYWNoZS5jbGVhcigpfWRhdGFzZXRTY29wZUtleXMoZSl7cmV0dXJuIHVvKGUsKCk9PltbYGRhdGFzZXRzLiR7ZX1gLGBgXV0pfWRhdGFzZXRBbmltYXRpb25TY29wZUtleXMoZSx0KXtyZXR1cm4gdW8oYCR7ZX0udHJhbnNpdGlvbi4ke3R9YCwoKT0+W1tgZGF0YXNldHMuJHtlfS50cmFuc2l0aW9ucy4ke3R9YCxgdHJhbnNpdGlvbnMuJHt0fWBdLFtgZGF0YXNldHMuJHtlfWAsYGBdXSl9ZGF0YXNldEVsZW1lbnRTY29wZUtleXMoZSx0KXtyZXR1cm4gdW8oYCR7ZX0tJHt0fWAsKCk9PltbYGRhdGFzZXRzLiR7ZX0uZWxlbWVudHMuJHt0fWAsYGRhdGFzZXRzLiR7ZX1gLGBlbGVtZW50cy4ke3R9YCxgYF1dKX1wbHVnaW5TY29wZUtleXMoZSl7bGV0IHQ9ZS5pZCxuPXRoaXMudHlwZTtyZXR1cm4gdW8oYCR7bn0tcGx1Z2luLSR7dH1gLCgpPT5bW2BwbHVnaW5zLiR7dH1gLC4uLmUuYWRkaXRpb25hbE9wdGlvblNjb3Blc3x8W11dXSl9X2NhY2hlZFNjb3BlcyhlLHQpe2xldCBuPXRoaXMuX3Njb3BlQ2FjaGUscj1uLmdldChlKTtyZXR1cm4oIXJ8fHQpJiYocj1uZXcgTWFwLG4uc2V0KGUscikpLHJ9Z2V0T3B0aW9uU2NvcGVzKGUsdCxuKXtsZXR7b3B0aW9uczpyLHR5cGU6aX09dGhpcyxhPXRoaXMuX2NhY2hlZFNjb3BlcyhlLG4pLG89YS5nZXQodCk7aWYobylyZXR1cm4gbztsZXQgcz1uZXcgU2V0O3QuZm9yRWFjaCh0PT57ZSYmKHMuYWRkKGUpLHQuZm9yRWFjaCh0PT5mbyhzLGUsdCkpKSx0LmZvckVhY2goZT0+Zm8ocyxyLGUpKSx0LmZvckVhY2goZT0+Zm8ocyxvbltpXXx8e30sZSkpLHQuZm9yRWFjaChlPT5mbyhzLFcsZSkpLHQuZm9yRWFjaChlPT5mbyhzLHNuLGUpKX0pO2xldCBjPUFycmF5LmZyb20ocyk7cmV0dXJuIGMubGVuZ3RoPT09MCYmYy5wdXNoKE9iamVjdC5jcmVhdGUobnVsbCkpLGxvLmhhcyh0KSYmYS5zZXQodCxjKSxjfWNoYXJ0T3B0aW9uU2NvcGVzKCl7bGV0e29wdGlvbnM6ZSx0eXBlOnR9PXRoaXM7cmV0dXJuW2Usb25bdF18fHt9LFcuZGF0YXNldHNbdF18fHt9LHt0eXBlOnR9LFcsc25dfXJlc29sdmVOYW1lZE9wdGlvbnMoZSx0LG4scj1bYGBdKXtsZXQgaT17JHNoYXJlZDohMH0se3Jlc29sdmVyOmEsc3ViUHJlZml4ZXM6b309bW8odGhpcy5fcmVzb2x2ZXJDYWNoZSxlLHIpLHM9YTtpZihnbyhhLHQpKXtpLiRzaGFyZWQ9ITEsbj1ldChuKT9uKCk6bjtsZXQgdD10aGlzLmNyZWF0ZVJlc29sdmVyKGUsbixvKTtzPUxuKGEsbix0KX1mb3IobGV0IGUgb2YgdClpW2VdPXNbZV07cmV0dXJuIGl9Y3JlYXRlUmVzb2x2ZXIoZSx0LG49W2BgXSxyKXtsZXR7cmVzb2x2ZXI6aX09bW8odGhpcy5fcmVzb2x2ZXJDYWNoZSxlLG4pO3JldHVybiBNKHQpP0xuKGksdCx2b2lkIDAscik6aX19O2Z1bmN0aW9uIG1vKGUsdCxuKXtsZXQgcj1lLmdldCh0KTtyfHwocj1uZXcgTWFwLGUuc2V0KHQscikpO2xldCBpPW4uam9pbigpLGE9ci5nZXQoaSk7cmV0dXJuIGF8fChhPXtyZXNvbHZlcjpJbih0LG4pLHN1YlByZWZpeGVzOm4uZmlsdGVyKGU9PiFlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoYGhvdmVyYCkpfSxyLnNldChpLGEpKSxhfXZhciBobz1lPT5NKGUpJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5zb21lKHQ9PmV0KGVbdF0pKTtmdW5jdGlvbiBnbyhlLHQpe2xldHtpc1NjcmlwdGFibGU6bixpc0luZGV4YWJsZTpyfT1SbihlKTtmb3IobGV0IGkgb2YgdCl7bGV0IHQ9bihpKSxhPXIoaSksbz0oYXx8dCkmJmVbaV07aWYodCYmKGV0KG8pfHxobyhvKSl8fGEmJmoobykpcmV0dXJuITB9cmV0dXJuITF9dmFyIF9vPWA0LjUuMWAsdm89W2B0b3BgLGBib3R0b21gLGBsZWZ0YCxgcmlnaHRgLGBjaGFydEFyZWFgXTtmdW5jdGlvbiB5byhlLHQpe3JldHVybiBlPT09YHRvcGB8fGU9PT1gYm90dG9tYHx8dm8uaW5kZXhPZihlKT09PS0xJiZ0PT09YHhgfWZ1bmN0aW9uIGJvKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIG5bZV09PT1yW2VdP25bdF0tclt0XTpuW2VdLXJbZV19fWZ1bmN0aW9uIHhvKGUpe2xldCB0PWUuY2hhcnQsbj10Lm9wdGlvbnMuYW5pbWF0aW9uO3Qubm90aWZ5UGx1Z2lucyhgYWZ0ZXJSZW5kZXJgKSxJKG4mJm4ub25Db21wbGV0ZSxbZV0sdCl9ZnVuY3Rpb24gU28oZSl7bGV0IHQ9ZS5jaGFydCxuPXQub3B0aW9ucy5hbmltYXRpb247SShuJiZuLm9uUHJvZ3Jlc3MsW2VdLHQpfWZ1bmN0aW9uIENvKGUpe3JldHVybiBkcigpJiZ0eXBlb2YgZT09YHN0cmluZ2A/ZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTplJiZlLmxlbmd0aCYmKGU9ZVswXSksZSYmZS5jYW52YXMmJihlPWUuY2FudmFzKSxlfXZhciB3bz17fSxUbz1lPT57bGV0IHQ9Q28oZSk7cmV0dXJuIE9iamVjdC52YWx1ZXMod28pLmZpbHRlcihlPT5lLmNhbnZhcz09PXQpLnBvcCgpfTtmdW5jdGlvbiBFbyhlLHQsbil7bGV0IHI9T2JqZWN0LmtleXMoZSk7Zm9yKGxldCBpIG9mIHIpe2xldCByPStpO2lmKHI+PXQpe2xldCBhPWVbaV07ZGVsZXRlIGVbaV0sKG4+MHx8cj50KSYmKGVbcituXT1hKX19fWZ1bmN0aW9uIERvKGUsdCxuLHIpe3JldHVybiFufHxlLnR5cGU9PT1gbW91c2VvdXRgP251bGw6cj90OmV9dmFyIE9vPWNsYXNze3N0YXRpYyBkZWZhdWx0cz1XO3N0YXRpYyBpbnN0YW5jZXM9d287c3RhdGljIG92ZXJyaWRlcz1vbjtzdGF0aWMgcmVnaXN0cnk9WTtzdGF0aWMgdmVyc2lvbj1fbztzdGF0aWMgZ2V0Q2hhcnQ9VG87c3RhdGljIHJlZ2lzdGVyKC4uLmUpe1kuYWRkKC4uLmUpLGtvKCl9c3RhdGljIHVucmVnaXN0ZXIoLi4uZSl7WS5yZW1vdmUoLi4uZSksa28oKX1jb25zdHJ1Y3RvcihlLHQpe2xldCBuPXRoaXMuY29uZmlnPW5ldyBwbyh0KSxyPUNvKGUpLGk9VG8ocik7aWYoaSl0aHJvdyBFcnJvcihgQ2FudmFzIGlzIGFscmVhZHkgaW4gdXNlLiBDaGFydCB3aXRoIElEICdgK2kuaWQrYCcgbXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSBjYW52YXMgd2l0aCBJRCAnYCtpLmNhbnZhcy5pZCtgJyBjYW4gYmUgcmV1c2VkLmApO2xldCBhPW4uY3JlYXRlUmVzb2x2ZXIobi5jaGFydE9wdGlvblNjb3BlcygpLHRoaXMuZ2V0Q29udGV4dCgpKTt0aGlzLnBsYXRmb3JtPW5ldyhuLnBsYXRmb3JtfHwoeWEocikpKSx0aGlzLnBsYXRmb3JtLnVwZGF0ZUNvbmZpZyhuKTtsZXQgbz10aGlzLnBsYXRmb3JtLmFjcXVpcmVDb250ZXh0KHIsYS5hc3BlY3RSYXRpbykscz1vJiZvLmNhbnZhcyxjPXMmJnMuaGVpZ2h0LGw9cyYmcy53aWR0aDtpZih0aGlzLmlkPXplKCksdGhpcy5jdHg9byx0aGlzLmNhbnZhcz1zLHRoaXMud2lkdGg9bCx0aGlzLmhlaWdodD1jLHRoaXMuX29wdGlvbnM9YSx0aGlzLl9hc3BlY3RSYXRpbz10aGlzLmFzcGVjdFJhdGlvLHRoaXMuX2xheWVycz1bXSx0aGlzLl9tZXRhc2V0cz1bXSx0aGlzLl9zdGFja3M9dm9pZCAwLHRoaXMuYm94ZXM9W10sdGhpcy5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbz12b2lkIDAsdGhpcy5jaGFydEFyZWE9dm9pZCAwLHRoaXMuX2FjdGl2ZT1bXSx0aGlzLl9sYXN0RXZlbnQ9dm9pZCAwLHRoaXMuX2xpc3RlbmVycz17fSx0aGlzLl9yZXNwb25zaXZlTGlzdGVuZXJzPXZvaWQgMCx0aGlzLl9zb3J0ZWRNZXRhc2V0cz1bXSx0aGlzLnNjYWxlcz17fSx0aGlzLl9wbHVnaW5zPW5ldyBHYSx0aGlzLiRwcm94aWVzPXt9LHRoaXMuX2hpZGRlbkluZGljZXM9e30sdGhpcy5hdHRhY2hlZD0hMSx0aGlzLl9hbmltYXRpb25zRGlzYWJsZWQ9dm9pZCAwLHRoaXMuJGNvbnRleHQ9dm9pZCAwLHRoaXMuX2RvUmVzaXplPUl0KGU9PnRoaXMudXBkYXRlKGUpLGEucmVzaXplRGVsYXl8fDApLHRoaXMuX2RhdGFDaGFuZ2VzPVtdLHdvW3RoaXMuaWRdPXRoaXMsIW98fCFzKXtjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGNoYXJ0OiBjYW4ndCBhY3F1aXJlIGNvbnRleHQgZnJvbSB0aGUgZ2l2ZW4gaXRlbWApO3JldHVybn1KLmxpc3Rlbih0aGlzLGBjb21wbGV0ZWAseG8pLEoubGlzdGVuKHRoaXMsYHByb2dyZXNzYCxTbyksdGhpcy5faW5pdGlhbGl6ZSgpLHRoaXMuYXR0YWNoZWQmJnRoaXMudXBkYXRlKCl9Z2V0IGFzcGVjdFJhdGlvKCl7bGV0e29wdGlvbnM6e2FzcGVjdFJhdGlvOmUsbWFpbnRhaW5Bc3BlY3RSYXRpbzp0fSx3aWR0aDpuLGhlaWdodDpyLF9hc3BlY3RSYXRpbzppfT10aGlzO3JldHVybiBBKGUpP3QmJmk/aTpyP24vcjpudWxsOmV9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5jb25maWcuZGF0YX1zZXQgZGF0YShlKXt0aGlzLmNvbmZpZy5kYXRhPWV9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fb3B0aW9uc31zZXQgb3B0aW9ucyhlKXt0aGlzLmNvbmZpZy5vcHRpb25zPWV9Z2V0IHJlZ2lzdHJ5KCl7cmV0dXJuIFl9X2luaXRpYWxpemUoKXtyZXR1cm4gdGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVJbml0YCksdGhpcy5vcHRpb25zLnJlc3BvbnNpdmU/dGhpcy5yZXNpemUoKTp3cih0aGlzLHRoaXMub3B0aW9ucy5kZXZpY2VQaXhlbFJhdGlvKSx0aGlzLmJpbmRFdmVudHMoKSx0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVySW5pdGApLHRoaXN9Y2xlYXIoKXtyZXR1cm4gbW4odGhpcy5jYW52YXMsdGhpcy5jdHgpLHRoaXN9c3RvcCgpe3JldHVybiBKLnN0b3AodGhpcyksdGhpc31yZXNpemUoZSx0KXtKLnJ1bm5pbmcodGhpcyk/dGhpcy5fcmVzaXplQmVmb3JlRHJhdz17d2lkdGg6ZSxoZWlnaHQ6dH06dGhpcy5fcmVzaXplKGUsdCl9X3Jlc2l6ZShlLHQpe2xldCBuPXRoaXMub3B0aW9ucyxyPXRoaXMuY2FudmFzLGk9bi5tYWludGFpbkFzcGVjdFJhdGlvJiZ0aGlzLmFzcGVjdFJhdGlvLGE9dGhpcy5wbGF0Zm9ybS5nZXRNYXhpbXVtU2l6ZShyLGUsdCxpKSxvPW4uZGV2aWNlUGl4ZWxSYXRpb3x8dGhpcy5wbGF0Zm9ybS5nZXREZXZpY2VQaXhlbFJhdGlvKCkscz10aGlzLndpZHRoP2ByZXNpemVgOmBhdHRhY2hgO3RoaXMud2lkdGg9YS53aWR0aCx0aGlzLmhlaWdodD1hLmhlaWdodCx0aGlzLl9hc3BlY3RSYXRpbz10aGlzLmFzcGVjdFJhdGlvLHdyKHRoaXMsbywhMCkmJih0aGlzLm5vdGlmeVBsdWdpbnMoYHJlc2l6ZWAse3NpemU6YX0pLEkobi5vblJlc2l6ZSxbdGhpcyxhXSx0aGlzKSx0aGlzLmF0dGFjaGVkJiZ0aGlzLl9kb1Jlc2l6ZShzKSYmdGhpcy5yZW5kZXIoKSl9ZW5zdXJlU2NhbGVzSGF2ZUlEcygpe0wodGhpcy5vcHRpb25zLnNjYWxlc3x8e30sKGUsdCk9PntlLmlkPXR9KX1idWlsZE9yVXBkYXRlU2NhbGVzKCl7bGV0IGU9dGhpcy5vcHRpb25zLHQ9ZS5zY2FsZXMsbj10aGlzLnNjYWxlcyxyPU9iamVjdC5rZXlzKG4pLnJlZHVjZSgoZSx0KT0+KGVbdF09ITEsZSkse30pLGk9W107dCYmKGk9aS5jb25jYXQoT2JqZWN0LmtleXModCkubWFwKGU9PntsZXQgbj10W2VdLHI9dG8oZSxuKSxpPXI9PT1gcmAsYT1yPT09YHhgO3JldHVybntvcHRpb25zOm4sZHBvc2l0aW9uOmk/YGNoYXJ0QXJlYWA6YT9gYm90dG9tYDpgbGVmdGAsZHR5cGU6aT9gcmFkaWFsTGluZWFyYDphP2BjYXRlZ29yeWA6YGxpbmVhcmB9fSkpKSxMKGksdD0+e2xldCBpPXQub3B0aW9ucyxhPWkuaWQsbz10byhhLGkpLHM9RihpLnR5cGUsdC5kdHlwZSk7KGkucG9zaXRpb249PT12b2lkIDB8fHlvKGkucG9zaXRpb24sbykhPT15byh0LmRwb3NpdGlvbikpJiYoaS5wb3NpdGlvbj10LmRwb3NpdGlvbiksclthXT0hMDtsZXQgYz1udWxsO2EgaW4gbiYmblthXS50eXBlPT09cz9jPW5bYV06KGM9bmV3KFkuZ2V0U2NhbGUocykpKHtpZDphLHR5cGU6cyxjdHg6dGhpcy5jdHgsY2hhcnQ6dGhpc30pLG5bYy5pZF09YyksYy5pbml0KGksZSl9KSxMKHIsKGUsdCk9PntlfHxkZWxldGUgblt0XX0pLEwobixlPT57WGkuY29uZmlndXJlKHRoaXMsZSxlLm9wdGlvbnMpLFhpLmFkZEJveCh0aGlzLGUpfSl9X3VwZGF0ZU1ldGFzZXRzKCl7bGV0IGU9dGhpcy5fbWV0YXNldHMsdD10aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoLG49ZS5sZW5ndGg7aWYoZS5zb3J0KChlLHQpPT5lLmluZGV4LXQuaW5kZXgpLG4+dCl7Zm9yKGxldCBlPXQ7ZTxuOysrZSl0aGlzLl9kZXN0cm95RGF0YXNldE1ldGEoZSk7ZS5zcGxpY2UodCxuLXQpfXRoaXMuX3NvcnRlZE1ldGFzZXRzPWUuc2xpY2UoMCkuc29ydChibyhgb3JkZXJgLGBpbmRleGApKX1fcmVtb3ZlVW5yZWZlcmVuY2VkTWV0YXNldHMoKXtsZXR7X21ldGFzZXRzOmUsZGF0YTp7ZGF0YXNldHM6dH19PXRoaXM7ZS5sZW5ndGg+dC5sZW5ndGgmJmRlbGV0ZSB0aGlzLl9zdGFja3MsZS5mb3JFYWNoKChlLG4pPT57dC5maWx0ZXIodD0+dD09PWUuX2RhdGFzZXQpLmxlbmd0aD09PTAmJnRoaXMuX2Rlc3Ryb3lEYXRhc2V0TWV0YShuKX0pfWJ1aWxkT3JVcGRhdGVDb250cm9sbGVycygpe2xldCBlPVtdLHQ9dGhpcy5kYXRhLmRhdGFzZXRzLG4scjtmb3IodGhpcy5fcmVtb3ZlVW5yZWZlcmVuY2VkTWV0YXNldHMoKSxuPTAscj10Lmxlbmd0aDtuPHI7bisrKXtsZXQgcj10W25dLGk9dGhpcy5nZXREYXRhc2V0TWV0YShuKSxhPXIudHlwZXx8dGhpcy5jb25maWcudHlwZTtpZihpLnR5cGUmJmkudHlwZSE9PWEmJih0aGlzLl9kZXN0cm95RGF0YXNldE1ldGEobiksaT10aGlzLmdldERhdGFzZXRNZXRhKG4pKSxpLnR5cGU9YSxpLmluZGV4QXhpcz1yLmluZGV4QXhpc3x8WGEoYSx0aGlzLm9wdGlvbnMpLGkub3JkZXI9ci5vcmRlcnx8MCxpLmluZGV4PW4saS5sYWJlbD1gYCtyLmxhYmVsLGkudmlzaWJsZT10aGlzLmlzRGF0YXNldFZpc2libGUobiksaS5jb250cm9sbGVyKWkuY29udHJvbGxlci51cGRhdGVJbmRleChuKSxpLmNvbnRyb2xsZXIubGlua1NjYWxlcygpO2Vsc2V7bGV0IHQ9WS5nZXRDb250cm9sbGVyKGEpLHtkYXRhc2V0RWxlbWVudFR5cGU6cixkYXRhRWxlbWVudFR5cGU6b309Vy5kYXRhc2V0c1thXTtPYmplY3QuYXNzaWduKHQse2RhdGFFbGVtZW50VHlwZTpZLmdldEVsZW1lbnQobyksZGF0YXNldEVsZW1lbnRUeXBlOnImJlkuZ2V0RWxlbWVudChyKX0pLGkuY29udHJvbGxlcj1uZXcgdCh0aGlzLG4pLGUucHVzaChpLmNvbnRyb2xsZXIpfX1yZXR1cm4gdGhpcy5fdXBkYXRlTWV0YXNldHMoKSxlfV9yZXNldEVsZW1lbnRzKCl7TCh0aGlzLmRhdGEuZGF0YXNldHMsKGUsdCk9Pnt0aGlzLmdldERhdGFzZXRNZXRhKHQpLmNvbnRyb2xsZXIucmVzZXQoKX0sdGhpcyl9cmVzZXQoKXt0aGlzLl9yZXNldEVsZW1lbnRzKCksdGhpcy5ub3RpZnlQbHVnaW5zKGByZXNldGApfXVwZGF0ZShlKXtsZXQgdD10aGlzLmNvbmZpZzt0LnVwZGF0ZSgpO2xldCBuPXRoaXMuX29wdGlvbnM9dC5jcmVhdGVSZXNvbHZlcih0LmNoYXJ0T3B0aW9uU2NvcGVzKCksdGhpcy5nZXRDb250ZXh0KCkpLHI9dGhpcy5fYW5pbWF0aW9uc0Rpc2FibGVkPSFuLmFuaW1hdGlvbjtpZih0aGlzLl91cGRhdGVTY2FsZXMoKSx0aGlzLl9jaGVja0V2ZW50QmluZGluZ3MoKSx0aGlzLl91cGRhdGVIaWRkZW5JbmRpY2VzKCksdGhpcy5fcGx1Z2lucy5pbnZhbGlkYXRlKCksdGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVVcGRhdGVgLHttb2RlOmUsY2FuY2VsYWJsZTohMH0pPT09ITEpcmV0dXJuO2xldCBpPXRoaXMuYnVpbGRPclVwZGF0ZUNvbnRyb2xsZXJzKCk7dGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVFbGVtZW50c1VwZGF0ZWApO2xldCBhPTA7Zm9yKGxldCBlPTAsdD10aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoO2U8dDtlKyspe2xldHtjb250cm9sbGVyOnR9PXRoaXMuZ2V0RGF0YXNldE1ldGEoZSksbj0hciYmaS5pbmRleE9mKHQpPT09LTE7dC5idWlsZE9yVXBkYXRlRWxlbWVudHMobiksYT1NYXRoLm1heCgrdC5nZXRNYXhPdmVyZmxvdygpLGEpfWE9dGhpcy5fbWluUGFkZGluZz1uLmxheW91dC5hdXRvUGFkZGluZz9hOjAsdGhpcy5fdXBkYXRlTGF5b3V0KGEpLHJ8fEwoaSxlPT57ZS5yZXNldCgpfSksdGhpcy5fdXBkYXRlRGF0YXNldHMoZSksdGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlclVwZGF0ZWAse21vZGU6ZX0pLHRoaXMuX2xheWVycy5zb3J0KGJvKGB6YCxgX2lkeGApKTtsZXR7X2FjdGl2ZTpvLF9sYXN0RXZlbnQ6c309dGhpcztzP3RoaXMuX2V2ZW50SGFuZGxlcihzLCEwKTpvLmxlbmd0aCYmdGhpcy5fdXBkYXRlSG92ZXJTdHlsZXMobyxvLCEwKSx0aGlzLnJlbmRlcigpfV91cGRhdGVTY2FsZXMoKXtMKHRoaXMuc2NhbGVzLGU9PntYaS5yZW1vdmVCb3godGhpcyxlKX0pLHRoaXMuZW5zdXJlU2NhbGVzSGF2ZUlEcygpLHRoaXMuYnVpbGRPclVwZGF0ZVNjYWxlcygpfV9jaGVja0V2ZW50QmluZGluZ3MoKXtsZXQgZT10aGlzLm9wdGlvbnM7KCF0dChuZXcgU2V0KE9iamVjdC5rZXlzKHRoaXMuX2xpc3RlbmVycykpLG5ldyBTZXQoZS5ldmVudHMpKXx8ISF0aGlzLl9yZXNwb25zaXZlTGlzdGVuZXJzIT09ZS5yZXNwb25zaXZlKSYmKHRoaXMudW5iaW5kRXZlbnRzKCksdGhpcy5iaW5kRXZlbnRzKCkpfV91cGRhdGVIaWRkZW5JbmRpY2VzKCl7bGV0e19oaWRkZW5JbmRpY2VzOmV9PXRoaXMsdD10aGlzLl9nZXRVbmlmb3JtRGF0YUNoYW5nZXMoKXx8W107Zm9yKGxldHttZXRob2Q6bixzdGFydDpyLGNvdW50Oml9b2YgdClFbyhlLHIsbj09PWBfcmVtb3ZlRWxlbWVudHNgPy1pOmkpfV9nZXRVbmlmb3JtRGF0YUNoYW5nZXMoKXtsZXQgZT10aGlzLl9kYXRhQ2hhbmdlcztpZighZXx8IWUubGVuZ3RoKXJldHVybjt0aGlzLl9kYXRhQ2hhbmdlcz1bXTtsZXQgdD10aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoLG49dD0+bmV3IFNldChlLmZpbHRlcihlPT5lWzBdPT09dCkubWFwKChlLHQpPT50K2AsYCtlLnNwbGljZSgxKS5qb2luKGAsYCkpKSxyPW4oMCk7Zm9yKGxldCBlPTE7ZTx0O2UrKylpZighdHQocixuKGUpKSlyZXR1cm47cmV0dXJuIEFycmF5LmZyb20ocikubWFwKGU9PmUuc3BsaXQoYCxgKSkubWFwKGU9Pih7bWV0aG9kOmVbMV0sc3RhcnQ6K2VbMl0sY291bnQ6K2VbM119KSl9X3VwZGF0ZUxheW91dChlKXtpZih0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZUxheW91dGAse2NhbmNlbGFibGU6ITB9KT09PSExKXJldHVybjtYaS51cGRhdGUodGhpcyx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LGUpO2xldCB0PXRoaXMuY2hhcnRBcmVhLG49dC53aWR0aDw9MHx8dC5oZWlnaHQ8PTA7dGhpcy5fbGF5ZXJzPVtdLEwodGhpcy5ib3hlcyxlPT57biYmZS5wb3NpdGlvbj09PWBjaGFydEFyZWFgfHwoZS5jb25maWd1cmUmJmUuY29uZmlndXJlKCksdGhpcy5fbGF5ZXJzLnB1c2goLi4uZS5fbGF5ZXJzKCkpKX0sdGhpcyksdGhpcy5fbGF5ZXJzLmZvckVhY2goKGUsdCk9PntlLl9pZHg9dH0pLHRoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJMYXlvdXRgKX1fdXBkYXRlRGF0YXNldHMoZSl7aWYodGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVEYXRhc2V0c1VwZGF0ZWAse21vZGU6ZSxjYW5jZWxhYmxlOiEwfSkhPT0hMSl7Zm9yKGxldCBlPTAsdD10aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoO2U8dDsrK2UpdGhpcy5nZXREYXRhc2V0TWV0YShlKS5jb250cm9sbGVyLmNvbmZpZ3VyZSgpO2ZvcihsZXQgdD0wLG49dGhpcy5kYXRhLmRhdGFzZXRzLmxlbmd0aDt0PG47Kyt0KXRoaXMuX3VwZGF0ZURhdGFzZXQodCxldChlKT9lKHtkYXRhc2V0SW5kZXg6dH0pOmUpO3RoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJEYXRhc2V0c1VwZGF0ZWAse21vZGU6ZX0pfX1fdXBkYXRlRGF0YXNldChlLHQpe2xldCBuPXRoaXMuZ2V0RGF0YXNldE1ldGEoZSkscj17bWV0YTpuLGluZGV4OmUsbW9kZTp0LGNhbmNlbGFibGU6ITB9O3RoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlRGF0YXNldFVwZGF0ZWAscikhPT0hMSYmKG4uY29udHJvbGxlci5fdXBkYXRlKHQpLHIuY2FuY2VsYWJsZT0hMSx0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyRGF0YXNldFVwZGF0ZWAscikpfXJlbmRlcigpe3RoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlUmVuZGVyYCx7Y2FuY2VsYWJsZTohMH0pIT09ITEmJihKLmhhcyh0aGlzKT90aGlzLmF0dGFjaGVkJiYhSi5ydW5uaW5nKHRoaXMpJiZKLnN0YXJ0KHRoaXMpOih0aGlzLmRyYXcoKSx4byh7Y2hhcnQ6dGhpc30pKSl9ZHJhdygpe2xldCBlO2lmKHRoaXMuX3Jlc2l6ZUJlZm9yZURyYXcpe2xldHt3aWR0aDplLGhlaWdodDp0fT10aGlzLl9yZXNpemVCZWZvcmVEcmF3O3RoaXMuX3Jlc2l6ZUJlZm9yZURyYXc9bnVsbCx0aGlzLl9yZXNpemUoZSx0KX1pZih0aGlzLmNsZWFyKCksdGhpcy53aWR0aDw9MHx8dGhpcy5oZWlnaHQ8PTB8fHRoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlRHJhd2Ase2NhbmNlbGFibGU6ITB9KT09PSExKXJldHVybjtsZXQgdD10aGlzLl9sYXllcnM7Zm9yKGU9MDtlPHQubGVuZ3RoJiZ0W2VdLno8PTA7KytlKXRbZV0uZHJhdyh0aGlzLmNoYXJ0QXJlYSk7Zm9yKHRoaXMuX2RyYXdEYXRhc2V0cygpO2U8dC5sZW5ndGg7KytlKXRbZV0uZHJhdyh0aGlzLmNoYXJ0QXJlYSk7dGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckRyYXdgKX1fZ2V0U29ydGVkRGF0YXNldE1ldGFzKGUpe2xldCB0PXRoaXMuX3NvcnRlZE1ldGFzZXRzLG49W10scixpO2ZvcihyPTAsaT10Lmxlbmd0aDtyPGk7KytyKXtsZXQgaT10W3JdOyghZXx8aS52aXNpYmxlKSYmbi5wdXNoKGkpfXJldHVybiBufWdldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKXtyZXR1cm4gdGhpcy5fZ2V0U29ydGVkRGF0YXNldE1ldGFzKCEwKX1fZHJhd0RhdGFzZXRzKCl7aWYodGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVEYXRhc2V0c0RyYXdgLHtjYW5jZWxhYmxlOiEwfSk9PT0hMSlyZXR1cm47bGV0IGU9dGhpcy5nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCk7Zm9yKGxldCB0PWUubGVuZ3RoLTE7dD49MDstLXQpdGhpcy5fZHJhd0RhdGFzZXQoZVt0XSk7dGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckRhdGFzZXRzRHJhd2ApfV9kcmF3RGF0YXNldChlKXtsZXQgdD10aGlzLmN0eCxuPXttZXRhOmUsaW5kZXg6ZS5pbmRleCxjYW5jZWxhYmxlOiEwfSxyPVlyKHRoaXMsZSk7dGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVEYXRhc2V0RHJhd2AsbikhPT0hMSYmKHImJl9uKHQsciksZS5jb250cm9sbGVyLmRyYXcoKSxyJiZ2bih0KSxuLmNhbmNlbGFibGU9ITEsdGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckRhdGFzZXREcmF3YCxuKSl9aXNQb2ludEluQXJlYShlKXtyZXR1cm4gRyhlLHRoaXMuY2hhcnRBcmVhLHRoaXMuX21pblBhZGRpbmcpfWdldEVsZW1lbnRzQXRFdmVudEZvck1vZGUoZSx0LG4scil7bGV0IGk9TmkubW9kZXNbdF07cmV0dXJuIHR5cGVvZiBpPT1gZnVuY3Rpb25gP2kodGhpcyxlLG4scik6W119Z2V0RGF0YXNldE1ldGEoZSl7bGV0IHQ9dGhpcy5kYXRhLmRhdGFzZXRzW2VdLG49dGhpcy5fbWV0YXNldHMscj1uLmZpbHRlcihlPT5lJiZlLl9kYXRhc2V0PT09dCkucG9wKCk7cmV0dXJuIHJ8fChyPXt0eXBlOm51bGwsZGF0YTpbXSxkYXRhc2V0Om51bGwsY29udHJvbGxlcjpudWxsLGhpZGRlbjpudWxsLHhBeGlzSUQ6bnVsbCx5QXhpc0lEOm51bGwsb3JkZXI6dCYmdC5vcmRlcnx8MCxpbmRleDplLF9kYXRhc2V0OnQsX3BhcnNlZDpbXSxfc29ydGVkOiExfSxuLnB1c2gocikpLHJ9Z2V0Q29udGV4dCgpe3JldHVybiB0aGlzLiRjb250ZXh0fHw9Rm4obnVsbCx7Y2hhcnQ6dGhpcyx0eXBlOmBjaGFydGB9KX1nZXRWaXNpYmxlRGF0YXNldENvdW50KCl7cmV0dXJuIHRoaXMuZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpLmxlbmd0aH1pc0RhdGFzZXRWaXNpYmxlKGUpe2xldCB0PXRoaXMuZGF0YS5kYXRhc2V0c1tlXTtpZighdClyZXR1cm4hMTtsZXQgbj10aGlzLmdldERhdGFzZXRNZXRhKGUpO3JldHVybiB0eXBlb2Ygbi5oaWRkZW49PWBib29sZWFuYD8hbi5oaWRkZW46IXQuaGlkZGVufXNldERhdGFzZXRWaXNpYmlsaXR5KGUsdCl7bGV0IG49dGhpcy5nZXREYXRhc2V0TWV0YShlKTtuLmhpZGRlbj0hdH10b2dnbGVEYXRhVmlzaWJpbGl0eShlKXt0aGlzLl9oaWRkZW5JbmRpY2VzW2VdPSF0aGlzLl9oaWRkZW5JbmRpY2VzW2VdfWdldERhdGFWaXNpYmlsaXR5KGUpe3JldHVybiF0aGlzLl9oaWRkZW5JbmRpY2VzW2VdfV91cGRhdGVWaXNpYmlsaXR5KGUsdCxuKXtsZXQgcj1uP2BzaG93YDpgaGlkZWAsaT10aGlzLmdldERhdGFzZXRNZXRhKGUpLGE9aS5jb250cm9sbGVyLl9yZXNvbHZlQW5pbWF0aW9ucyh2b2lkIDAscik7JGUodCk/KGkuZGF0YVt0XS5oaWRkZW49IW4sdGhpcy51cGRhdGUoKSk6KHRoaXMuc2V0RGF0YXNldFZpc2liaWxpdHkoZSxuKSxhLnVwZGF0ZShpLHt2aXNpYmxlOm59KSx0aGlzLnVwZGF0ZSh0PT50LmRhdGFzZXRJbmRleD09PWU/cjp2b2lkIDApKX1oaWRlKGUsdCl7dGhpcy5fdXBkYXRlVmlzaWJpbGl0eShlLHQsITEpfXNob3coZSx0KXt0aGlzLl91cGRhdGVWaXNpYmlsaXR5KGUsdCwhMCl9X2Rlc3Ryb3lEYXRhc2V0TWV0YShlKXtsZXQgdD10aGlzLl9tZXRhc2V0c1tlXTt0JiZ0LmNvbnRyb2xsZXImJnQuY29udHJvbGxlci5fZGVzdHJveSgpLGRlbGV0ZSB0aGlzLl9tZXRhc2V0c1tlXX1fc3RvcCgpe2xldCBlLHQ7Zm9yKHRoaXMuc3RvcCgpLEoucmVtb3ZlKHRoaXMpLGU9MCx0PXRoaXMuZGF0YS5kYXRhc2V0cy5sZW5ndGg7ZTx0OysrZSl0aGlzLl9kZXN0cm95RGF0YXNldE1ldGEoZSl9ZGVzdHJveSgpe3RoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlRGVzdHJveWApO2xldHtjYW52YXM6ZSxjdHg6dH09dGhpczt0aGlzLl9zdG9wKCksdGhpcy5jb25maWcuY2xlYXJDYWNoZSgpLGUmJih0aGlzLnVuYmluZEV2ZW50cygpLG1uKGUsdCksdGhpcy5wbGF0Zm9ybS5yZWxlYXNlQ29udGV4dCh0KSx0aGlzLmNhbnZhcz1udWxsLHRoaXMuY3R4PW51bGwpLGRlbGV0ZSB3b1t0aGlzLmlkXSx0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyRGVzdHJveWApfXRvQmFzZTY0SW1hZ2UoLi4uZSl7cmV0dXJuIHRoaXMuY2FudmFzLnRvRGF0YVVSTCguLi5lKX1iaW5kRXZlbnRzKCl7dGhpcy5iaW5kVXNlckV2ZW50cygpLHRoaXMub3B0aW9ucy5yZXNwb25zaXZlP3RoaXMuYmluZFJlc3BvbnNpdmVFdmVudHMoKTp0aGlzLmF0dGFjaGVkPSEwfWJpbmRVc2VyRXZlbnRzKCl7bGV0IGU9dGhpcy5fbGlzdGVuZXJzLHQ9dGhpcy5wbGF0Zm9ybSxuPShuLHIpPT57dC5hZGRFdmVudExpc3RlbmVyKHRoaXMsbixyKSxlW25dPXJ9LHI9KGUsdCxuKT0+e2Uub2Zmc2V0WD10LGUub2Zmc2V0WT1uLHRoaXMuX2V2ZW50SGFuZGxlcihlKX07TCh0aGlzLm9wdGlvbnMuZXZlbnRzLGU9Pm4oZSxyKSl9YmluZFJlc3BvbnNpdmVFdmVudHMoKXt0aGlzLl9yZXNwb25zaXZlTGlzdGVuZXJzfHw9e307bGV0IGU9dGhpcy5fcmVzcG9uc2l2ZUxpc3RlbmVycyx0PXRoaXMucGxhdGZvcm0sbj0obixyKT0+e3QuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLG4sciksZVtuXT1yfSxyPShuLHIpPT57ZVtuXSYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLG4sciksZGVsZXRlIGVbbl0pfSxpPShlLHQpPT57dGhpcy5jYW52YXMmJnRoaXMucmVzaXplKGUsdCl9LGEsbz0oKT0+e3IoYGF0dGFjaGAsbyksdGhpcy5hdHRhY2hlZD0hMCx0aGlzLnJlc2l6ZSgpLG4oYHJlc2l6ZWAsaSksbihgZGV0YWNoYCxhKX07YT0oKT0+e3RoaXMuYXR0YWNoZWQ9ITEscihgcmVzaXplYCxpKSx0aGlzLl9zdG9wKCksdGhpcy5fcmVzaXplKDAsMCksbihgYXR0YWNoYCxvKX0sdC5pc0F0dGFjaGVkKHRoaXMuY2FudmFzKT9vKCk6YSgpfXVuYmluZEV2ZW50cygpe0wodGhpcy5fbGlzdGVuZXJzLChlLHQpPT57dGhpcy5wbGF0Zm9ybS5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsdCxlKX0pLHRoaXMuX2xpc3RlbmVycz17fSxMKHRoaXMuX3Jlc3BvbnNpdmVMaXN0ZW5lcnMsKGUsdCk9Pnt0aGlzLnBsYXRmb3JtLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcyx0LGUpfSksdGhpcy5fcmVzcG9uc2l2ZUxpc3RlbmVycz12b2lkIDB9dXBkYXRlSG92ZXJTdHlsZShlLHQsbil7bGV0IHI9bj9gc2V0YDpgcmVtb3ZlYCxpLGEsbyxzO2Zvcih0PT09YGRhdGFzZXRgJiYoaT10aGlzLmdldERhdGFzZXRNZXRhKGVbMF0uZGF0YXNldEluZGV4KSxpLmNvbnRyb2xsZXJbYF9gK3IrYERhdGFzZXRIb3ZlclN0eWxlYF0oKSksbz0wLHM9ZS5sZW5ndGg7bzxzOysrbyl7YT1lW29dO2xldCB0PWEmJnRoaXMuZ2V0RGF0YXNldE1ldGEoYS5kYXRhc2V0SW5kZXgpLmNvbnRyb2xsZXI7dCYmdFtyK2BIb3ZlclN0eWxlYF0oYS5lbGVtZW50LGEuZGF0YXNldEluZGV4LGEuaW5kZXgpfX1nZXRBY3RpdmVFbGVtZW50cygpe3JldHVybiB0aGlzLl9hY3RpdmV8fFtdfXNldEFjdGl2ZUVsZW1lbnRzKGUpe2xldCB0PXRoaXMuX2FjdGl2ZXx8W10sbj1lLm1hcCgoe2RhdGFzZXRJbmRleDplLGluZGV4OnR9KT0+e2xldCBuPXRoaXMuZ2V0RGF0YXNldE1ldGEoZSk7aWYoIW4pdGhyb3cgRXJyb3IoYE5vIGRhdGFzZXQgZm91bmQgYXQgaW5kZXggYCtlKTtyZXR1cm57ZGF0YXNldEluZGV4OmUsZWxlbWVudDpuLmRhdGFbdF0saW5kZXg6dH19KTtWZShuLHQpfHwodGhpcy5fYWN0aXZlPW4sdGhpcy5fbGFzdEV2ZW50PW51bGwsdGhpcy5fdXBkYXRlSG92ZXJTdHlsZXMobix0KSl9bm90aWZ5UGx1Z2lucyhlLHQsbil7cmV0dXJuIHRoaXMuX3BsdWdpbnMubm90aWZ5KHRoaXMsZSx0LG4pfWlzUGx1Z2luRW5hYmxlZChlKXtyZXR1cm4gdGhpcy5fcGx1Z2lucy5fY2FjaGUuZmlsdGVyKHQ9PnQucGx1Z2luLmlkPT09ZSkubGVuZ3RoPT09MX1fdXBkYXRlSG92ZXJTdHlsZXMoZSx0LG4pe2xldCByPXRoaXMub3B0aW9ucy5ob3ZlcixpPShlLHQpPT5lLmZpbHRlcihlPT4hdC5zb21lKHQ9PmUuZGF0YXNldEluZGV4PT09dC5kYXRhc2V0SW5kZXgmJmUuaW5kZXg9PT10LmluZGV4KSksYT1pKHQsZSksbz1uP2U6aShlLHQpO2EubGVuZ3RoJiZ0aGlzLnVwZGF0ZUhvdmVyU3R5bGUoYSxyLm1vZGUsITEpLG8ubGVuZ3RoJiZyLm1vZGUmJnRoaXMudXBkYXRlSG92ZXJTdHlsZShvLHIubW9kZSwhMCl9X2V2ZW50SGFuZGxlcihlLHQpe2xldCBuPXtldmVudDplLHJlcGxheTp0LGNhbmNlbGFibGU6ITAsaW5DaGFydEFyZWE6dGhpcy5pc1BvaW50SW5BcmVhKGUpfSxyPXQ9Pih0Lm9wdGlvbnMuZXZlbnRzfHx0aGlzLm9wdGlvbnMuZXZlbnRzKS5pbmNsdWRlcyhlLm5hdGl2ZS50eXBlKTtpZih0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZUV2ZW50YCxuLHIpPT09ITEpcmV0dXJuO2xldCBpPXRoaXMuX2hhbmRsZUV2ZW50KGUsdCxuLmluQ2hhcnRBcmVhKTtyZXR1cm4gbi5jYW5jZWxhYmxlPSExLHRoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJFdmVudGAsbixyKSwoaXx8bi5jaGFuZ2VkKSYmdGhpcy5yZW5kZXIoKSx0aGlzfV9oYW5kbGVFdmVudChlLHQsbil7bGV0e19hY3RpdmU6cj1bXSxvcHRpb25zOml9PXRoaXMsYT10LG89dGhpcy5fZ2V0QWN0aXZlRWxlbWVudHMoZSxyLG4sYSkscz1udChlKSxjPURvKGUsdGhpcy5fbGFzdEV2ZW50LG4scyk7biYmKHRoaXMuX2xhc3RFdmVudD1udWxsLEkoaS5vbkhvdmVyLFtlLG8sdGhpc10sdGhpcykscyYmSShpLm9uQ2xpY2ssW2Usbyx0aGlzXSx0aGlzKSk7bGV0IGw9IVZlKG8scik7cmV0dXJuKGx8fHQpJiYodGhpcy5fYWN0aXZlPW8sdGhpcy5fdXBkYXRlSG92ZXJTdHlsZXMobyxyLHQpKSx0aGlzLl9sYXN0RXZlbnQ9YyxsfV9nZXRBY3RpdmVFbGVtZW50cyhlLHQsbixyKXtpZihlLnR5cGU9PT1gbW91c2VvdXRgKXJldHVybltdO2lmKCFuKXJldHVybiB0O2xldCBpPXRoaXMub3B0aW9ucy5ob3ZlcjtyZXR1cm4gdGhpcy5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKGUsaS5tb2RlLGkscil9fTtmdW5jdGlvbiBrbygpe3JldHVybiBMKE9vLmluc3RhbmNlcyxlPT5lLl9wbHVnaW5zLmludmFsaWRhdGUoKSl9ZnVuY3Rpb24gQW8oZSx0LG49dCl7ZS5saW5lQ2FwPUYobi5ib3JkZXJDYXBTdHlsZSx0LmJvcmRlckNhcFN0eWxlKSxlLnNldExpbmVEYXNoKEYobi5ib3JkZXJEYXNoLHQuYm9yZGVyRGFzaCkpLGUubGluZURhc2hPZmZzZXQ9RihuLmJvcmRlckRhc2hPZmZzZXQsdC5ib3JkZXJEYXNoT2Zmc2V0KSxlLmxpbmVKb2luPUYobi5ib3JkZXJKb2luU3R5bGUsdC5ib3JkZXJKb2luU3R5bGUpLGUubGluZVdpZHRoPUYobi5ib3JkZXJXaWR0aCx0LmJvcmRlcldpZHRoKSxlLnN0cm9rZVN0eWxlPUYobi5ib3JkZXJDb2xvcix0LmJvcmRlckNvbG9yKX1mdW5jdGlvbiBqbyhlLHQsbil7ZS5saW5lVG8obi54LG4ueSl9ZnVuY3Rpb24gTW8oZSl7cmV0dXJuIGUuc3RlcHBlZD95bjplLnRlbnNpb258fGUuY3ViaWNJbnRlcnBvbGF0aW9uTW9kZT09PWBtb25vdG9uZWA/Ym46am99ZnVuY3Rpb24gTm8oZSx0LG49e30pe2xldCByPWUubGVuZ3RoLHtzdGFydDppPTAsZW5kOmE9ci0xfT1uLHtzdGFydDpvLGVuZDpzfT10LGM9TWF0aC5tYXgoaSxvKSxsPU1hdGgubWluKGEscyksdT1pPG8mJmE8b3x8aT5zJiZhPnM7cmV0dXJue2NvdW50OnIsc3RhcnQ6Yyxsb29wOnQubG9vcCxpbGVuOmw8YyYmIXU/citsLWM6bC1jfX1mdW5jdGlvbiBQbyhlLHQsbixyKXtsZXR7cG9pbnRzOmksb3B0aW9uczphfT10LHtjb3VudDpvLHN0YXJ0OnMsbG9vcDpjLGlsZW46bH09Tm8oaSxuLHIpLHU9TW8oYSkse21vdmU6ZD0hMCxyZXZlcnNlOmZ9PXJ8fHt9LHAsbSxoO2ZvcihwPTA7cDw9bDsrK3ApbT1pWyhzKyhmP2wtcDpwKSklb10sIW0uc2tpcCYmKGQ/KGUubW92ZVRvKG0ueCxtLnkpLGQ9ITEpOnUoZSxoLG0sZixhLnN0ZXBwZWQpLGg9bSk7cmV0dXJuIGMmJihtPWlbKHMrKGY/bDowKSklb10sdShlLGgsbSxmLGEuc3RlcHBlZCkpLCEhY31mdW5jdGlvbiBGbyhlLHQsbixyKXtsZXQgaT10LnBvaW50cyx7Y291bnQ6YSxzdGFydDpvLGlsZW46c309Tm8oaSxuLHIpLHttb3ZlOmM9ITAscmV2ZXJzZTpsfT1yfHx7fSx1PTAsZD0wLGYscCxtLGgsZyxfLHY9ZT0+KG8rKGw/cy1lOmUpKSVhLHk9KCk9PntoIT09ZyYmKGUubGluZVRvKHUsZyksZS5saW5lVG8odSxoKSxlLmxpbmVUbyh1LF8pKX07Zm9yKGMmJihwPWlbdigwKV0sZS5tb3ZlVG8ocC54LHAueSkpLGY9MDtmPD1zOysrZil7aWYocD1pW3YoZildLHAuc2tpcCljb250aW51ZTtsZXQgdD1wLngsbj1wLnkscj10fDA7cj09PW0/KG48aD9oPW46bj5nJiYoZz1uKSx1PShkKnUrdCkvKytkKTooeSgpLGUubGluZVRvKHQsbiksbT1yLGQ9MCxoPWc9biksXz1ufXkoKX1mdW5jdGlvbiBJbyhlKXtsZXQgdD1lLm9wdGlvbnMsbj10LmJvcmRlckRhc2gmJnQuYm9yZGVyRGFzaC5sZW5ndGg7cmV0dXJuIWUuX2RlY2ltYXRlZCYmIWUuX2xvb3AmJiF0LnRlbnNpb24mJnQuY3ViaWNJbnRlcnBvbGF0aW9uTW9kZSE9PWBtb25vdG9uZWAmJiF0LnN0ZXBwZWQmJiFuP0ZvOlBvfWZ1bmN0aW9uIExvKGUpe3JldHVybiBlLnN0ZXBwZWQ/T3I6ZS50ZW5zaW9ufHxlLmN1YmljSW50ZXJwb2xhdGlvbk1vZGU9PT1gbW9ub3RvbmVgP2tyOkRyfWZ1bmN0aW9uIFJvKGUsdCxuLHIpe2xldCBpPXQuX3BhdGg7aXx8KGk9dC5fcGF0aD1uZXcgUGF0aDJELHQucGF0aChpLG4scikmJmkuY2xvc2VQYXRoKCkpLEFvKGUsdC5vcHRpb25zKSxlLnN0cm9rZShpKX1mdW5jdGlvbiB6byhlLHQsbixyKXtsZXR7c2VnbWVudHM6aSxvcHRpb25zOmF9PXQsbz1Jbyh0KTtmb3IobGV0IHMgb2YgaSlBbyhlLGEscy5zdHlsZSksZS5iZWdpblBhdGgoKSxvKGUsdCxzLHtzdGFydDpuLGVuZDpuK3ItMX0pJiZlLmNsb3NlUGF0aCgpLGUuc3Ryb2tlKCl9dmFyIEJvPXR5cGVvZiBQYXRoMkQ9PWBmdW5jdGlvbmA7ZnVuY3Rpb24gVm8oZSx0LG4scil7Qm8mJiF0Lm9wdGlvbnMuc2VnbWVudD9SbyhlLHQsbixyKTp6byhlLHQsbixyKX12YXIgSG89Y2xhc3MgZXh0ZW5kcyBiYXtzdGF0aWMgaWQ9YGxpbmVgO3N0YXRpYyBkZWZhdWx0cz17Ym9yZGVyQ2FwU3R5bGU6YGJ1dHRgLGJvcmRlckRhc2g6W10sYm9yZGVyRGFzaE9mZnNldDowLGJvcmRlckpvaW5TdHlsZTpgbWl0ZXJgLGJvcmRlcldpZHRoOjMsY2FwQmV6aWVyUG9pbnRzOiEwLGN1YmljSW50ZXJwb2xhdGlvbk1vZGU6YGRlZmF1bHRgLGZpbGw6ITEsc3BhbkdhcHM6ITEsc3RlcHBlZDohMSx0ZW5zaW9uOjB9O3N0YXRpYyBkZWZhdWx0Um91dGVzPXtiYWNrZ3JvdW5kQ29sb3I6YGJhY2tncm91bmRDb2xvcmAsYm9yZGVyQ29sb3I6YGJvcmRlckNvbG9yYH07c3RhdGljIGRlc2NyaXB0b3JzPXtfc2NyaXB0YWJsZTohMCxfaW5kZXhhYmxlOmU9PmUhPT1gYm9yZGVyRGFzaGAmJmUhPT1gZmlsbGB9O2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5hbmltYXRlZD0hMCx0aGlzLm9wdGlvbnM9dm9pZCAwLHRoaXMuX2NoYXJ0PXZvaWQgMCx0aGlzLl9sb29wPXZvaWQgMCx0aGlzLl9mdWxsTG9vcD12b2lkIDAsdGhpcy5fcGF0aD12b2lkIDAsdGhpcy5fcG9pbnRzPXZvaWQgMCx0aGlzLl9zZWdtZW50cz12b2lkIDAsdGhpcy5fZGVjaW1hdGVkPSExLHRoaXMuX3BvaW50c1VwZGF0ZWQ9ITEsdGhpcy5fZGF0YXNldEluZGV4PXZvaWQgMCxlJiZPYmplY3QuYXNzaWduKHRoaXMsZSl9dXBkYXRlQ29udHJvbFBvaW50cyhlLHQpe2xldCBuPXRoaXMub3B0aW9ucztpZigobi50ZW5zaW9ufHxuLmN1YmljSW50ZXJwb2xhdGlvbk1vZGU9PT1gbW9ub3RvbmVgKSYmIW4uc3RlcHBlZCYmIXRoaXMuX3BvaW50c1VwZGF0ZWQpe2xldCByPW4uc3BhbkdhcHM/dGhpcy5fbG9vcDp0aGlzLl9mdWxsTG9vcDt1cih0aGlzLl9wb2ludHMsbixlLHIsdCksdGhpcy5fcG9pbnRzVXBkYXRlZD0hMH19c2V0IHBvaW50cyhlKXt0aGlzLl9wb2ludHM9ZSxkZWxldGUgdGhpcy5fc2VnbWVudHMsZGVsZXRlIHRoaXMuX3BhdGgsdGhpcy5fcG9pbnRzVXBkYXRlZD0hMX1nZXQgcG9pbnRzKCl7cmV0dXJuIHRoaXMuX3BvaW50c31nZXQgc2VnbWVudHMoKXtyZXR1cm4gdGhpcy5fc2VnbWVudHN8fD1Icih0aGlzLHRoaXMub3B0aW9ucy5zZWdtZW50KX1maXJzdCgpe2xldCBlPXRoaXMuc2VnbWVudHMsdD10aGlzLnBvaW50cztyZXR1cm4gZS5sZW5ndGgmJnRbZVswXS5zdGFydF19bGFzdCgpe2xldCBlPXRoaXMuc2VnbWVudHMsdD10aGlzLnBvaW50cyxuPWUubGVuZ3RoO3JldHVybiBuJiZ0W2Vbbi0xXS5lbmRdfWludGVycG9sYXRlKGUsdCl7bGV0IG49dGhpcy5vcHRpb25zLHI9ZVt0XSxpPXRoaXMucG9pbnRzLGE9enIodGhpcyx7cHJvcGVydHk6dCxzdGFydDpyLGVuZDpyfSk7aWYoIWEubGVuZ3RoKXJldHVybjtsZXQgbz1bXSxzPUxvKG4pLGMsbDtmb3IoYz0wLGw9YS5sZW5ndGg7YzxsOysrYyl7bGV0e3N0YXJ0OmwsZW5kOnV9PWFbY10sZD1pW2xdLGY9aVt1XTtpZihkPT09Zil7by5wdXNoKGQpO2NvbnRpbnVlfWxldCBwPXMoZCxmLE1hdGguYWJzKChyLWRbdF0pLyhmW3RdLWRbdF0pKSxuLnN0ZXBwZWQpO3BbdF09ZVt0XSxvLnB1c2gocCl9cmV0dXJuIG8ubGVuZ3RoPT09MT9vWzBdOm99cGF0aFNlZ21lbnQoZSx0LG4pe3JldHVybiBJbyh0aGlzKShlLHRoaXMsdCxuKX1wYXRoKGUsdCxuKXtsZXQgcj10aGlzLnNlZ21lbnRzLGk9SW8odGhpcyksYT10aGlzLl9sb29wO3R8fD0wLG58fD10aGlzLnBvaW50cy5sZW5ndGgtdDtmb3IobGV0IG8gb2YgcilhJj1pKGUsdGhpcyxvLHtzdGFydDp0LGVuZDp0K24tMX0pO3JldHVybiEhYX1kcmF3KGUsdCxuLHIpe2xldCBpPXRoaXMub3B0aW9uc3x8e307KHRoaXMucG9pbnRzfHxbXSkubGVuZ3RoJiZpLmJvcmRlcldpZHRoJiYoZS5zYXZlKCksVm8oZSx0aGlzLG4sciksZS5yZXN0b3JlKCkpLHRoaXMuYW5pbWF0ZWQmJih0aGlzLl9wb2ludHNVcGRhdGVkPSExLHRoaXMuX3BhdGg9dm9pZCAwKX19O2Z1bmN0aW9uIFVvKGUsdCxuLHIpe2xldCBpPWUub3B0aW9ucyx7W25dOmF9PWUuZ2V0UHJvcHMoW25dLHIpO3JldHVybiBNYXRoLmFicyh0LWEpPGkucmFkaXVzK2kuaGl0UmFkaXVzfXZhciBXbz1jbGFzcyBleHRlbmRzIGJhe3N0YXRpYyBpZD1gcG9pbnRgO3BhcnNlZDtza2lwO3N0b3A7c3RhdGljIGRlZmF1bHRzPXtib3JkZXJXaWR0aDoxLGhpdFJhZGl1czoxLGhvdmVyQm9yZGVyV2lkdGg6MSxob3ZlclJhZGl1czo0LHBvaW50U3R5bGU6YGNpcmNsZWAscmFkaXVzOjMscm90YXRpb246MH07c3RhdGljIGRlZmF1bHRSb3V0ZXM9e2JhY2tncm91bmRDb2xvcjpgYmFja2dyb3VuZENvbG9yYCxib3JkZXJDb2xvcjpgYm9yZGVyQ29sb3JgfTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMub3B0aW9ucz12b2lkIDAsdGhpcy5wYXJzZWQ9dm9pZCAwLHRoaXMuc2tpcD12b2lkIDAsdGhpcy5zdG9wPXZvaWQgMCxlJiZPYmplY3QuYXNzaWduKHRoaXMsZSl9aW5SYW5nZShlLHQsbil7bGV0IHI9dGhpcy5vcHRpb25zLHt4OmkseTphfT10aGlzLmdldFByb3BzKFtgeGAsYHlgXSxuKTtyZXR1cm4oZS1pKSoqMisodC1hKSoqMjwoci5oaXRSYWRpdXMrci5yYWRpdXMpKioyfWluWFJhbmdlKGUsdCl7cmV0dXJuIFVvKHRoaXMsZSxgeGAsdCl9aW5ZUmFuZ2UoZSx0KXtyZXR1cm4gVW8odGhpcyxlLGB5YCx0KX1nZXRDZW50ZXJQb2ludChlKXtsZXR7eDp0LHk6bn09dGhpcy5nZXRQcm9wcyhbYHhgLGB5YF0sZSk7cmV0dXJue3g6dCx5Om59fXNpemUoZSl7ZT1lfHx0aGlzLm9wdGlvbnN8fHt9O2xldCB0PWUucmFkaXVzfHwwO3Q9TWF0aC5tYXgodCx0JiZlLmhvdmVyUmFkaXVzfHwwKTtsZXQgbj10JiZlLmJvcmRlcldpZHRofHwwO3JldHVybih0K24pKjJ9ZHJhdyhlLHQpe2xldCBuPXRoaXMub3B0aW9uczt0aGlzLnNraXB8fG4ucmFkaXVzPC4xfHwhRyh0aGlzLHQsdGhpcy5zaXplKG4pLzIpfHwoZS5zdHJva2VTdHlsZT1uLmJvcmRlckNvbG9yLGUubGluZVdpZHRoPW4uYm9yZGVyV2lkdGgsZS5maWxsU3R5bGU9bi5iYWNrZ3JvdW5kQ29sb3IsaG4oZSxuLHRoaXMueCx0aGlzLnkpKX1nZXRSYW5nZSgpe2xldCBlPXRoaXMub3B0aW9uc3x8e307cmV0dXJuIGUucmFkaXVzK2UuaGl0UmFkaXVzfX07ZnVuY3Rpb24gR28oZSx0LG4pe2xldCByPWUuc2VnbWVudHMsaT1lLnBvaW50cyxhPXQucG9pbnRzLG89W107Zm9yKGxldCBlIG9mIHIpe2xldHtzdGFydDpyLGVuZDpzfT1lO3M9Sm8ocixzLGkpO2xldCBjPUtvKG4saVtyXSxpW3NdLGUubG9vcCk7aWYoIXQuc2VnbWVudHMpe28ucHVzaCh7c291cmNlOmUsdGFyZ2V0OmMsc3RhcnQ6aVtyXSxlbmQ6aVtzXX0pO2NvbnRpbnVlfWxldCBsPXpyKHQsYyk7Zm9yKGxldCB0IG9mIGwpe2xldCByPUtvKG4sYVt0LnN0YXJ0XSxhW3QuZW5kXSx0Lmxvb3ApLHM9UnIoZSxpLHIpO2ZvcihsZXQgZSBvZiBzKW8ucHVzaCh7c291cmNlOmUsdGFyZ2V0OnQsc3RhcnQ6e1tuXTpZbyhjLHIsYHN0YXJ0YCxNYXRoLm1heCl9LGVuZDp7W25dOllvKGMscixgZW5kYCxNYXRoLm1pbil9fSl9fXJldHVybiBvfWZ1bmN0aW9uIEtvKGUsdCxuLHIpe2lmKHIpcmV0dXJuO2xldCBpPXRbZV0sYT1uW2VdO3JldHVybiBlPT09YGFuZ2xlYCYmKGk9VihpKSxhPVYoYSkpLHtwcm9wZXJ0eTplLHN0YXJ0OmksZW5kOmF9fWZ1bmN0aW9uIHFvKGUsdCl7bGV0e3g6bj1udWxsLHk6cj1udWxsfT1lfHx7fSxpPXQucG9pbnRzLGE9W107cmV0dXJuIHQuc2VnbWVudHMuZm9yRWFjaCgoe3N0YXJ0OmUsZW5kOnR9KT0+e3Q9Sm8oZSx0LGkpO2xldCBvPWlbZV0scz1pW3RdO3I9PT1udWxsP24hPT1udWxsJiYoYS5wdXNoKHt4Om4seTpvLnl9KSxhLnB1c2goe3g6bix5OnMueX0pKTooYS5wdXNoKHt4Om8ueCx5OnJ9KSxhLnB1c2goe3g6cy54LHk6cn0pKX0pLGF9ZnVuY3Rpb24gSm8oZSx0LG4pe2Zvcig7dD5lO3QtLSl7bGV0IGU9blt0XTtpZighaXNOYU4oZS54KSYmIWlzTmFOKGUueSkpYnJlYWt9cmV0dXJuIHR9ZnVuY3Rpb24gWW8oZSx0LG4scil7cmV0dXJuIGUmJnQ/cihlW25dLHRbbl0pOmU/ZVtuXTp0P3Rbbl06MH1mdW5jdGlvbiBYbyhlLHQpe2xldCBuPVtdLHI9ITE7cmV0dXJuIGooZSk/KHI9ITAsbj1lKTpuPXFvKGUsdCksbi5sZW5ndGg/bmV3IEhvKHtwb2ludHM6bixvcHRpb25zOnt0ZW5zaW9uOjB9LF9sb29wOnIsX2Z1bGxMb29wOnJ9KTpudWxsfWZ1bmN0aW9uIFpvKGUpe3JldHVybiBlJiZlLmZpbGwhPT0hMX1mdW5jdGlvbiBRbyhlLHQsbil7bGV0IHI9ZVt0XS5maWxsLGk9W3RdLGE7aWYoIW4pcmV0dXJuIHI7Zm9yKDtyIT09ITEmJmkuaW5kZXhPZihyKT09PS0xOyl7aWYoIU4ocikpcmV0dXJuIHI7aWYoYT1lW3JdLCFhKXJldHVybiExO2lmKGEudmlzaWJsZSlyZXR1cm4gcjtpLnB1c2gocikscj1hLmZpbGx9cmV0dXJuITF9ZnVuY3Rpb24gJG8oZSx0LG4pe2xldCByPXJzKGUpO2lmKE0ocikpcmV0dXJuIWlzTmFOKHIudmFsdWUpJiZyO2xldCBpPXBhcnNlRmxvYXQocik7cmV0dXJuIE4oaSkmJk1hdGguZmxvb3IoaSk9PT1pP2VzKHJbMF0sdCxpLG4pOltgb3JpZ2luYCxgc3RhcnRgLGBlbmRgLGBzdGFja2AsYHNoYXBlYF0uaW5kZXhPZihyKT49MCYmcn1mdW5jdGlvbiBlcyhlLHQsbixyKXtyZXR1cm4oZT09PWAtYHx8ZT09PWArYCkmJihuPXQrbiksbj09PXR8fG48MHx8bj49cj8hMTpufWZ1bmN0aW9uIHRzKGUsdCl7bGV0IG49bnVsbDtyZXR1cm4gZT09PWBzdGFydGA/bj10LmJvdHRvbTplPT09YGVuZGA/bj10LnRvcDpNKGUpP249dC5nZXRQaXhlbEZvclZhbHVlKGUudmFsdWUpOnQuZ2V0QmFzZVBpeGVsJiYobj10LmdldEJhc2VQaXhlbCgpKSxufWZ1bmN0aW9uIG5zKGUsdCxuKXtsZXQgcjtyZXR1cm4gcj1lPT09YHN0YXJ0YD9uOmU9PT1gZW5kYD90Lm9wdGlvbnMucmV2ZXJzZT90Lm1pbjp0Lm1heDpNKGUpP2UudmFsdWU6dC5nZXRCYXNlVmFsdWUoKSxyfWZ1bmN0aW9uIHJzKGUpe2xldCB0PWUub3B0aW9ucyxuPXQuZmlsbCxyPUYobiYmbi50YXJnZXQsbik7cmV0dXJuIHI9PT12b2lkIDAmJihyPSEhdC5iYWNrZ3JvdW5kQ29sb3IpLHI9PT0hMXx8cj09PW51bGw/ITE6cj09PSEwP2BvcmlnaW5gOnJ9ZnVuY3Rpb24gaXMoZSl7bGV0e3NjYWxlOnQsaW5kZXg6bixsaW5lOnJ9PWUsaT1bXSxhPXIuc2VnbWVudHMsbz1yLnBvaW50cyxzPWFzKHQsbik7cy5wdXNoKFhvKHt4Om51bGwseTp0LmJvdHRvbX0scikpO2ZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSsrKXtsZXQgdD1hW2VdO2ZvcihsZXQgZT10LnN0YXJ0O2U8PXQuZW5kO2UrKylvcyhpLG9bZV0scyl9cmV0dXJuIG5ldyBIbyh7cG9pbnRzOmksb3B0aW9uczp7fX0pfWZ1bmN0aW9uIGFzKGUsdCl7bGV0IG49W10scj1lLmdldE1hdGNoaW5nVmlzaWJsZU1ldGFzKGBsaW5lYCk7Zm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspe2xldCBpPXJbZV07aWYoaS5pbmRleD09PXQpYnJlYWs7aS5oaWRkZW58fG4udW5zaGlmdChpLmRhdGFzZXQpfXJldHVybiBufWZ1bmN0aW9uIG9zKGUsdCxuKXtsZXQgcj1bXTtmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyl7bGV0IGE9bltpXSx7Zmlyc3Q6byxsYXN0OnMscG9pbnQ6Y309c3MoYSx0LGB4YCk7aWYoISghY3x8byYmcykpe2lmKG8pci51bnNoaWZ0KGMpO2Vsc2UgaWYoZS5wdXNoKGMpLCFzKWJyZWFrfX1lLnB1c2goLi4ucil9ZnVuY3Rpb24gc3MoZSx0LG4pe2xldCByPWUuaW50ZXJwb2xhdGUodCxuKTtpZighcilyZXR1cm57fTtsZXQgaT1yW25dLGE9ZS5zZWdtZW50cyxvPWUucG9pbnRzLHM9ITEsYz0hMTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7bGV0IHQ9YVtlXSxyPW9bdC5zdGFydF1bbl0sbD1vW3QuZW5kXVtuXTtpZihUdChpLHIsbCkpe3M9aT09PXIsYz1pPT09bDticmVha319cmV0dXJue2ZpcnN0OnMsbGFzdDpjLHBvaW50OnJ9fXZhciBjcz1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLng9ZS54LHRoaXMueT1lLnksdGhpcy5yYWRpdXM9ZS5yYWRpdXN9cGF0aFNlZ21lbnQoZSx0LG4pe2xldHt4OnIseTppLHJhZGl1czphfT10aGlzO3JldHVybiB0fHw9e3N0YXJ0OjAsZW5kOnp9LGUuYXJjKHIsaSxhLHQuZW5kLHQuc3RhcnQsITApLCFuLmJvdW5kc31pbnRlcnBvbGF0ZShlKXtsZXR7eDp0LHk6bixyYWRpdXM6cn09dGhpcyxpPWUuYW5nbGU7cmV0dXJue3g6dCtNYXRoLmNvcyhpKSpyLHk6bitNYXRoLnNpbihpKSpyLGFuZ2xlOml9fX07ZnVuY3Rpb24gbHMoZSl7bGV0e2NoYXJ0OnQsZmlsbDpuLGxpbmU6cn09ZTtpZihOKG4pKXJldHVybiB1cyh0LG4pO2lmKG49PT1gc3RhY2tgKXJldHVybiBpcyhlKTtpZihuPT09YHNoYXBlYClyZXR1cm4hMDtsZXQgaT1kcyhlKTtyZXR1cm4gaSBpbnN0YW5jZW9mIGNzP2k6WG8oaSxyKX1mdW5jdGlvbiB1cyhlLHQpe2xldCBuPWUuZ2V0RGF0YXNldE1ldGEodCk7cmV0dXJuIG4mJmUuaXNEYXRhc2V0VmlzaWJsZSh0KT9uLmRhdGFzZXQ6bnVsbH1mdW5jdGlvbiBkcyhlKXtyZXR1cm4oZS5zY2FsZXx8e30pLmdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZT9wcyhlKTpmcyhlKX1mdW5jdGlvbiBmcyhlKXtsZXR7c2NhbGU6dD17fSxmaWxsOm59PWUscj10cyhuLHQpO2lmKE4ocikpe2xldCBlPXQuaXNIb3Jpem9udGFsKCk7cmV0dXJue3g6ZT9yOm51bGwseTplP251bGw6cn19cmV0dXJuIG51bGx9ZnVuY3Rpb24gcHMoZSl7bGV0e3NjYWxlOnQsZmlsbDpufT1lLHI9dC5vcHRpb25zLGk9dC5nZXRMYWJlbHMoKS5sZW5ndGgsYT1yLnJldmVyc2U/dC5tYXg6dC5taW4sbz1ucyhuLHQsYSkscz1bXTtpZihyLmdyaWQuY2lyY3VsYXIpe2xldCBlPXQuZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKDAsYSk7cmV0dXJuIG5ldyBjcyh7eDplLngseTplLnkscmFkaXVzOnQuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUobyl9KX1mb3IobGV0IGU9MDtlPGk7KytlKXMucHVzaCh0LmdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZShlLG8pKTtyZXR1cm4gc31mdW5jdGlvbiBtcyhlLHQsbil7bGV0IHI9bHModCkse2NoYXJ0OmksaW5kZXg6YSxsaW5lOm8sc2NhbGU6cyxheGlzOmN9PXQsbD1vLm9wdGlvbnMsdT1sLmZpbGwsZD1sLmJhY2tncm91bmRDb2xvcix7YWJvdmU6Zj1kLGJlbG93OnA9ZH09dXx8e30sbT1ZcihpLGkuZ2V0RGF0YXNldE1ldGEoYSkpO3ImJm8ucG9pbnRzLmxlbmd0aCYmKF9uKGUsbiksaHMoZSx7bGluZTpvLHRhcmdldDpyLGFib3ZlOmYsYmVsb3c6cCxhcmVhOm4sc2NhbGU6cyxheGlzOmMsY2xpcDptfSksdm4oZSkpfWZ1bmN0aW9uIGhzKGUsdCl7bGV0e2xpbmU6bix0YXJnZXQ6cixhYm92ZTppLGJlbG93OmEsYXJlYTpvLHNjYWxlOnMsY2xpcDpjfT10LGw9bi5fbG9vcD9gYW5nbGVgOnQuYXhpcztlLnNhdmUoKTtsZXQgdT1hO2EhPT1pJiYobD09PWB4YD8oZ3MoZSxyLG8udG9wKSx2cyhlLHtsaW5lOm4sdGFyZ2V0OnIsY29sb3I6aSxzY2FsZTpzLHByb3BlcnR5OmwsY2xpcDpjfSksZS5yZXN0b3JlKCksZS5zYXZlKCksZ3MoZSxyLG8uYm90dG9tKSk6bD09PWB5YCYmKF9zKGUscixvLmxlZnQpLHZzKGUse2xpbmU6bix0YXJnZXQ6cixjb2xvcjphLHNjYWxlOnMscHJvcGVydHk6bCxjbGlwOmN9KSxlLnJlc3RvcmUoKSxlLnNhdmUoKSxfcyhlLHIsby5yaWdodCksdT1pKSksdnMoZSx7bGluZTpuLHRhcmdldDpyLGNvbG9yOnUsc2NhbGU6cyxwcm9wZXJ0eTpsLGNsaXA6Y30pLGUucmVzdG9yZSgpfWZ1bmN0aW9uIGdzKGUsdCxuKXtsZXR7c2VnbWVudHM6cixwb2ludHM6aX09dCxhPSEwLG89ITE7ZS5iZWdpblBhdGgoKTtmb3IobGV0IHMgb2Ygcil7bGV0e3N0YXJ0OnIsZW5kOmN9PXMsbD1pW3JdLHU9aVtKbyhyLGMsaSldO2E/KGUubW92ZVRvKGwueCxsLnkpLGE9ITEpOihlLmxpbmVUbyhsLngsbiksZS5saW5lVG8obC54LGwueSkpLG89ISF0LnBhdGhTZWdtZW50KGUscyx7bW92ZTpvfSksbz9lLmNsb3NlUGF0aCgpOmUubGluZVRvKHUueCxuKX1lLmxpbmVUbyh0LmZpcnN0KCkueCxuKSxlLmNsb3NlUGF0aCgpLGUuY2xpcCgpfWZ1bmN0aW9uIF9zKGUsdCxuKXtsZXR7c2VnbWVudHM6cixwb2ludHM6aX09dCxhPSEwLG89ITE7ZS5iZWdpblBhdGgoKTtmb3IobGV0IHMgb2Ygcil7bGV0e3N0YXJ0OnIsZW5kOmN9PXMsbD1pW3JdLHU9aVtKbyhyLGMsaSldO2E/KGUubW92ZVRvKGwueCxsLnkpLGE9ITEpOihlLmxpbmVUbyhuLGwueSksZS5saW5lVG8obC54LGwueSkpLG89ISF0LnBhdGhTZWdtZW50KGUscyx7bW92ZTpvfSksbz9lLmNsb3NlUGF0aCgpOmUubGluZVRvKG4sdS55KX1lLmxpbmVUbyhuLHQuZmlyc3QoKS55KSxlLmNsb3NlUGF0aCgpLGUuY2xpcCgpfWZ1bmN0aW9uIHZzKGUsdCl7bGV0e2xpbmU6bix0YXJnZXQ6cixwcm9wZXJ0eTppLGNvbG9yOmEsc2NhbGU6byxjbGlwOnN9PXQsYz1HbyhuLHIsaSk7Zm9yKGxldHtzb3VyY2U6dCx0YXJnZXQ6bCxzdGFydDp1LGVuZDpkfW9mIGMpe2xldHtzdHlsZTp7YmFja2dyb3VuZENvbG9yOmM9YX09e319PXQsZj1yIT09ITA7ZS5zYXZlKCksZS5maWxsU3R5bGU9Yyx5cyhlLG8scyxmJiZLbyhpLHUsZCkpLGUuYmVnaW5QYXRoKCk7bGV0IHA9ISFuLnBhdGhTZWdtZW50KGUsdCksbTtpZihmKXtwP2UuY2xvc2VQYXRoKCk6YnMoZSxyLGQsaSk7bGV0IHQ9ISFyLnBhdGhTZWdtZW50KGUsbCx7bW92ZTpwLHJldmVyc2U6ITB9KTttPXAmJnQsbXx8YnMoZSxyLHUsaSl9ZS5jbG9zZVBhdGgoKSxlLmZpbGwobT9gZXZlbm9kZGA6YG5vbnplcm9gKSxlLnJlc3RvcmUoKX19ZnVuY3Rpb24geXMoZSx0LG4scil7bGV0IGk9dC5jaGFydC5jaGFydEFyZWEse3Byb3BlcnR5OmEsc3RhcnQ6byxlbmQ6c309cnx8e307aWYoYT09PWB4YHx8YT09PWB5YCl7bGV0IHQscixjLGw7YT09PWB4YD8odD1vLHI9aS50b3AsYz1zLGw9aS5ib3R0b20pOih0PWkubGVmdCxyPW8sYz1pLnJpZ2h0LGw9cyksZS5iZWdpblBhdGgoKSxuJiYodD1NYXRoLm1heCh0LG4ubGVmdCksYz1NYXRoLm1pbihjLG4ucmlnaHQpLHI9TWF0aC5tYXgocixuLnRvcCksbD1NYXRoLm1pbihsLG4uYm90dG9tKSksZS5yZWN0KHQscixjLXQsbC1yKSxlLmNsaXAoKX19ZnVuY3Rpb24gYnMoZSx0LG4scil7bGV0IGk9dC5pbnRlcnBvbGF0ZShuLHIpO2kmJmUubGluZVRvKGkueCxpLnkpfXZhciB4cz17aWQ6YGZpbGxlcmAsYWZ0ZXJEYXRhc2V0c1VwZGF0ZShlLHQsbil7bGV0IHI9KGUuZGF0YS5kYXRhc2V0c3x8W10pLmxlbmd0aCxpPVtdLGEsbyxzLGM7Zm9yKG89MDtvPHI7KytvKWE9ZS5nZXREYXRhc2V0TWV0YShvKSxzPWEuZGF0YXNldCxjPW51bGwscyYmcy5vcHRpb25zJiZzIGluc3RhbmNlb2YgSG8mJihjPXt2aXNpYmxlOmUuaXNEYXRhc2V0VmlzaWJsZShvKSxpbmRleDpvLGZpbGw6JG8ocyxvLHIpLGNoYXJ0OmUsYXhpczphLmNvbnRyb2xsZXIub3B0aW9ucy5pbmRleEF4aXMsc2NhbGU6YS52U2NhbGUsbGluZTpzfSksYS4kZmlsbGVyPWMsaS5wdXNoKGMpO2ZvcihvPTA7bzxyOysrbyljPWlbb10sISghY3x8Yy5maWxsPT09ITEpJiYoYy5maWxsPVFvKGksbyxuLnByb3BhZ2F0ZSkpfSxiZWZvcmVEcmF3KGUsdCxuKXtsZXQgcj1uLmRyYXdUaW1lPT09YGJlZm9yZURyYXdgLGk9ZS5nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCksYT1lLmNoYXJ0QXJlYTtmb3IobGV0IHQ9aS5sZW5ndGgtMTt0Pj0wOy0tdCl7bGV0IG49aVt0XS4kZmlsbGVyO24mJihuLmxpbmUudXBkYXRlQ29udHJvbFBvaW50cyhhLG4uYXhpcyksciYmbi5maWxsJiZtcyhlLmN0eCxuLGEpKX19LGJlZm9yZURhdGFzZXRzRHJhdyhlLHQsbil7aWYobi5kcmF3VGltZSE9PWBiZWZvcmVEYXRhc2V0c0RyYXdgKXJldHVybjtsZXQgcj1lLmdldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKTtmb3IobGV0IHQ9ci5sZW5ndGgtMTt0Pj0wOy0tdCl7bGV0IG49clt0XS4kZmlsbGVyO1pvKG4pJiZtcyhlLmN0eCxuLGUuY2hhcnRBcmVhKX19LGJlZm9yZURhdGFzZXREcmF3KGUsdCxuKXtsZXQgcj10Lm1ldGEuJGZpbGxlcjshWm8ocil8fG4uZHJhd1RpbWUhPT1gYmVmb3JlRGF0YXNldERyYXdgfHxtcyhlLmN0eCxyLGUuY2hhcnRBcmVhKX0sZGVmYXVsdHM6e3Byb3BhZ2F0ZTohMCxkcmF3VGltZTpgYmVmb3JlRGF0YXNldERyYXdgfX0sU3M9KGUsdCk9PntsZXR7Ym94SGVpZ2h0Om49dCxib3hXaWR0aDpyPXR9PWU7cmV0dXJuIGUudXNlUG9pbnRTdHlsZSYmKG49TWF0aC5taW4obix0KSxyPWUucG9pbnRTdHlsZVdpZHRofHxNYXRoLm1pbihyLHQpKSx7Ym94V2lkdGg6cixib3hIZWlnaHQ6bixpdGVtSGVpZ2h0Ok1hdGgubWF4KHQsbil9fSxDcz0oZSx0KT0+ZSE9PW51bGwmJnQhPT1udWxsJiZlLmRhdGFzZXRJbmRleD09PXQuZGF0YXNldEluZGV4JiZlLmluZGV4PT09dC5pbmRleCx3cz1jbGFzcyBleHRlbmRzIGJhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fYWRkZWQ9ITEsdGhpcy5sZWdlbmRIaXRCb3hlcz1bXSx0aGlzLl9ob3ZlcmVkSXRlbT1udWxsLHRoaXMuZG91Z2hudXRNb2RlPSExLHRoaXMuY2hhcnQ9ZS5jaGFydCx0aGlzLm9wdGlvbnM9ZS5vcHRpb25zLHRoaXMuY3R4PWUuY3R4LHRoaXMubGVnZW5kSXRlbXM9dm9pZCAwLHRoaXMuY29sdW1uU2l6ZXM9dm9pZCAwLHRoaXMubGluZVdpZHRocz12b2lkIDAsdGhpcy5tYXhIZWlnaHQ9dm9pZCAwLHRoaXMubWF4V2lkdGg9dm9pZCAwLHRoaXMudG9wPXZvaWQgMCx0aGlzLmJvdHRvbT12b2lkIDAsdGhpcy5sZWZ0PXZvaWQgMCx0aGlzLnJpZ2h0PXZvaWQgMCx0aGlzLmhlaWdodD12b2lkIDAsdGhpcy53aWR0aD12b2lkIDAsdGhpcy5fbWFyZ2lucz12b2lkIDAsdGhpcy5wb3NpdGlvbj12b2lkIDAsdGhpcy53ZWlnaHQ9dm9pZCAwLHRoaXMuZnVsbFNpemU9dm9pZCAwfXVwZGF0ZShlLHQsbil7dGhpcy5tYXhXaWR0aD1lLHRoaXMubWF4SGVpZ2h0PXQsdGhpcy5fbWFyZ2lucz1uLHRoaXMuc2V0RGltZW5zaW9ucygpLHRoaXMuYnVpbGRMYWJlbHMoKSx0aGlzLmZpdCgpfXNldERpbWVuc2lvbnMoKXt0aGlzLmlzSG9yaXpvbnRhbCgpPyh0aGlzLndpZHRoPXRoaXMubWF4V2lkdGgsdGhpcy5sZWZ0PXRoaXMuX21hcmdpbnMubGVmdCx0aGlzLnJpZ2h0PXRoaXMud2lkdGgpOih0aGlzLmhlaWdodD10aGlzLm1heEhlaWdodCx0aGlzLnRvcD10aGlzLl9tYXJnaW5zLnRvcCx0aGlzLmJvdHRvbT10aGlzLmhlaWdodCl9YnVpbGRMYWJlbHMoKXtsZXQgZT10aGlzLm9wdGlvbnMubGFiZWxzfHx7fSx0PUkoZS5nZW5lcmF0ZUxhYmVscyxbdGhpcy5jaGFydF0sdGhpcyl8fFtdO2UuZmlsdGVyJiYodD10LmZpbHRlcih0PT5lLmZpbHRlcih0LHRoaXMuY2hhcnQuZGF0YSkpKSxlLnNvcnQmJih0PXQuc29ydCgodCxuKT0+ZS5zb3J0KHQsbix0aGlzLmNoYXJ0LmRhdGEpKSksdGhpcy5vcHRpb25zLnJldmVyc2UmJnQucmV2ZXJzZSgpLHRoaXMubGVnZW5kSXRlbXM9dH1maXQoKXtsZXR7b3B0aW9uczplLGN0eDp0fT10aGlzO2lmKCFlLmRpc3BsYXkpe3RoaXMud2lkdGg9dGhpcy5oZWlnaHQ9MDtyZXR1cm59bGV0IG49ZS5sYWJlbHMscj1xKG4uZm9udCksaT1yLnNpemUsYT10aGlzLl9jb21wdXRlVGl0bGVIZWlnaHQoKSx7Ym94V2lkdGg6byxpdGVtSGVpZ2h0OnN9PVNzKG4saSksYyxsO3QuZm9udD1yLnN0cmluZyx0aGlzLmlzSG9yaXpvbnRhbCgpPyhjPXRoaXMubWF4V2lkdGgsbD10aGlzLl9maXRSb3dzKGEsaSxvLHMpKzEwKToobD10aGlzLm1heEhlaWdodCxjPXRoaXMuX2ZpdENvbHMoYSxyLG8scykrMTApLHRoaXMud2lkdGg9TWF0aC5taW4oYyxlLm1heFdpZHRofHx0aGlzLm1heFdpZHRoKSx0aGlzLmhlaWdodD1NYXRoLm1pbihsLGUubWF4SGVpZ2h0fHx0aGlzLm1heEhlaWdodCl9X2ZpdFJvd3MoZSx0LG4scil7bGV0e2N0eDppLG1heFdpZHRoOmEsb3B0aW9uczp7bGFiZWxzOntwYWRkaW5nOm99fX09dGhpcyxzPXRoaXMubGVnZW5kSGl0Qm94ZXM9W10sYz10aGlzLmxpbmVXaWR0aHM9WzBdLGw9citvLHU9ZTtpLnRleHRBbGlnbj1gbGVmdGAsaS50ZXh0QmFzZWxpbmU9YG1pZGRsZWA7bGV0IGQ9LTEsZj0tbDtyZXR1cm4gdGhpcy5sZWdlbmRJdGVtcy5mb3JFYWNoKChlLHApPT57bGV0IG09bit0LzIraS5tZWFzdXJlVGV4dChlLnRleHQpLndpZHRoOyhwPT09MHx8Y1tjLmxlbmd0aC0xXSttKzIqbz5hKSYmKHUrPWwsY1tjLmxlbmd0aC0ocD4wPzA6MSldPTAsZis9bCxkKyspLHNbcF09e2xlZnQ6MCx0b3A6Zixyb3c6ZCx3aWR0aDptLGhlaWdodDpyfSxjW2MubGVuZ3RoLTFdKz1tK299KSx1fV9maXRDb2xzKGUsdCxuLHIpe2xldHtjdHg6aSxtYXhIZWlnaHQ6YSxvcHRpb25zOntsYWJlbHM6e3BhZGRpbmc6b319fT10aGlzLHM9dGhpcy5sZWdlbmRIaXRCb3hlcz1bXSxjPXRoaXMuY29sdW1uU2l6ZXM9W10sbD1hLWUsdT1vLGQ9MCxmPTAscD0wLG09MDtyZXR1cm4gdGhpcy5sZWdlbmRJdGVtcy5mb3JFYWNoKChlLGEpPT57bGV0e2l0ZW1XaWR0aDpoLGl0ZW1IZWlnaHQ6Z309VHMobix0LGksZSxyKTthPjAmJmYrZysyKm8+bCYmKHUrPWQrbyxjLnB1c2goe3dpZHRoOmQsaGVpZ2h0OmZ9KSxwKz1kK28sbSsrLGQ9Zj0wKSxzW2FdPXtsZWZ0OnAsdG9wOmYsY29sOm0sd2lkdGg6aCxoZWlnaHQ6Z30sZD1NYXRoLm1heChkLGgpLGYrPWcrb30pLHUrPWQsYy5wdXNoKHt3aWR0aDpkLGhlaWdodDpmfSksdX1hZGp1c3RIaXRCb3hlcygpe2lmKCF0aGlzLm9wdGlvbnMuZGlzcGxheSlyZXR1cm47bGV0IGU9dGhpcy5fY29tcHV0ZVRpdGxlSGVpZ2h0KCkse2xlZ2VuZEhpdEJveGVzOnQsb3B0aW9uczp7YWxpZ246bixsYWJlbHM6e3BhZGRpbmc6cn0scnRsOml9fT10aGlzLGE9TXIoaSx0aGlzLmxlZnQsdGhpcy53aWR0aCk7aWYodGhpcy5pc0hvcml6b250YWwoKSl7bGV0IGk9MCxvPVUobix0aGlzLmxlZnQrcix0aGlzLnJpZ2h0LXRoaXMubGluZVdpZHRoc1tpXSk7Zm9yKGxldCBzIG9mIHQpaSE9PXMucm93JiYoaT1zLnJvdyxvPVUobix0aGlzLmxlZnQrcix0aGlzLnJpZ2h0LXRoaXMubGluZVdpZHRoc1tpXSkpLHMudG9wKz10aGlzLnRvcCtlK3Iscy5sZWZ0PWEubGVmdEZvckx0cihhLngobykscy53aWR0aCksbys9cy53aWR0aCtyfWVsc2V7bGV0IGk9MCxvPVUobix0aGlzLnRvcCtlK3IsdGhpcy5ib3R0b20tdGhpcy5jb2x1bW5TaXplc1tpXS5oZWlnaHQpO2ZvcihsZXQgcyBvZiB0KXMuY29sIT09aSYmKGk9cy5jb2wsbz1VKG4sdGhpcy50b3ArZStyLHRoaXMuYm90dG9tLXRoaXMuY29sdW1uU2l6ZXNbaV0uaGVpZ2h0KSkscy50b3A9byxzLmxlZnQrPXRoaXMubGVmdCtyLHMubGVmdD1hLmxlZnRGb3JMdHIoYS54KHMubGVmdCkscy53aWR0aCksbys9cy5oZWlnaHQrcn19aXNIb3Jpem9udGFsKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wb3NpdGlvbj09PWB0b3BgfHx0aGlzLm9wdGlvbnMucG9zaXRpb249PT1gYm90dG9tYH1kcmF3KCl7aWYodGhpcy5vcHRpb25zLmRpc3BsYXkpe2xldCBlPXRoaXMuY3R4O19uKGUsdGhpcyksdGhpcy5fZHJhdygpLHZuKGUpfX1fZHJhdygpe2xldHtvcHRpb25zOmUsY29sdW1uU2l6ZXM6dCxsaW5lV2lkdGhzOm4sY3R4OnJ9PXRoaXMse2FsaWduOmksbGFiZWxzOmF9PWUsbz1XLmNvbG9yLHM9TXIoZS5ydGwsdGhpcy5sZWZ0LHRoaXMud2lkdGgpLGM9cShhLmZvbnQpLHtwYWRkaW5nOmx9PWEsdT1jLnNpemUsZD11LzIsZjt0aGlzLmRyYXdUaXRsZSgpLHIudGV4dEFsaWduPXMudGV4dEFsaWduKGBsZWZ0YCksci50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsci5saW5lV2lkdGg9LjUsci5mb250PWMuc3RyaW5nO2xldHtib3hXaWR0aDpwLGJveEhlaWdodDptLGl0ZW1IZWlnaHQ6aH09U3MoYSx1KSxnPWZ1bmN0aW9uKGUsdCxuKXtpZihpc05hTihwKXx8cDw9MHx8aXNOYU4obSl8fG08MClyZXR1cm47ci5zYXZlKCk7bGV0IGk9RihuLmxpbmVXaWR0aCwxKTtpZihyLmZpbGxTdHlsZT1GKG4uZmlsbFN0eWxlLG8pLHIubGluZUNhcD1GKG4ubGluZUNhcCxgYnV0dGApLHIubGluZURhc2hPZmZzZXQ9RihuLmxpbmVEYXNoT2Zmc2V0LDApLHIubGluZUpvaW49RihuLmxpbmVKb2luLGBtaXRlcmApLHIubGluZVdpZHRoPWksci5zdHJva2VTdHlsZT1GKG4uc3Ryb2tlU3R5bGUsbyksci5zZXRMaW5lRGFzaChGKG4ubGluZURhc2gsW10pKSxhLnVzZVBvaW50U3R5bGUpe2xldCBvPXtyYWRpdXM6bSpNYXRoLlNRUlQyLzIscG9pbnRTdHlsZTpuLnBvaW50U3R5bGUscm90YXRpb246bi5yb3RhdGlvbixib3JkZXJXaWR0aDppfSxjPXMueFBsdXMoZSxwLzIpLGw9dCtkO2duKHIsbyxjLGwsYS5wb2ludFN0eWxlV2lkdGgmJnApfWVsc2V7bGV0IGE9dCtNYXRoLm1heCgodS1tKS8yLDApLG89cy5sZWZ0Rm9yTHRyKGUscCksYz1NbihuLmJvcmRlclJhZGl1cyk7ci5iZWdpblBhdGgoKSxPYmplY3QudmFsdWVzKGMpLnNvbWUoZT0+ZSE9PTApP1RuKHIse3g6byx5OmEsdzpwLGg6bSxyYWRpdXM6Y30pOnIucmVjdChvLGEscCxtKSxyLmZpbGwoKSxpIT09MCYmci5zdHJva2UoKX1yLnJlc3RvcmUoKX0sXz1mdW5jdGlvbihlLHQsbil7d24ocixuLnRleHQsZSx0K2gvMixjLHtzdHJpa2V0aHJvdWdoOm4uaGlkZGVuLHRleHRBbGlnbjpzLnRleHRBbGlnbihuLnRleHRBbGlnbil9KX0sdj10aGlzLmlzSG9yaXpvbnRhbCgpLHk9dGhpcy5fY29tcHV0ZVRpdGxlSGVpZ2h0KCk7Zj12P3t4OlUoaSx0aGlzLmxlZnQrbCx0aGlzLnJpZ2h0LW5bMF0pLHk6dGhpcy50b3ArbCt5LGxpbmU6MH06e3g6dGhpcy5sZWZ0K2wseTpVKGksdGhpcy50b3AreStsLHRoaXMuYm90dG9tLXRbMF0uaGVpZ2h0KSxsaW5lOjB9LE5yKHRoaXMuY3R4LGUudGV4dERpcmVjdGlvbik7bGV0IGI9aCtsO3RoaXMubGVnZW5kSXRlbXMuZm9yRWFjaCgobyx1KT0+e3Iuc3Ryb2tlU3R5bGU9by5mb250Q29sb3Isci5maWxsU3R5bGU9by5mb250Q29sb3I7bGV0IG09ci5tZWFzdXJlVGV4dChvLnRleHQpLndpZHRoLGg9cy50ZXh0QWxpZ24oby50ZXh0QWxpZ258fD1hLnRleHRBbGlnbikseD1wK2QrbSxTPWYueCxDPWYueTtzLnNldFdpZHRoKHRoaXMud2lkdGgpLHY/dT4wJiZTK3grbD50aGlzLnJpZ2h0JiYoQz1mLnkrPWIsZi5saW5lKyssUz1mLng9VShpLHRoaXMubGVmdCtsLHRoaXMucmlnaHQtbltmLmxpbmVdKSk6dT4wJiZDK2I+dGhpcy5ib3R0b20mJihTPWYueD1TK3RbZi5saW5lXS53aWR0aCtsLGYubGluZSsrLEM9Zi55PVUoaSx0aGlzLnRvcCt5K2wsdGhpcy5ib3R0b20tdFtmLmxpbmVdLmhlaWdodCkpO2xldCB3PXMueChTKTtpZihnKHcsQyxvKSxTPVJ0KGgsUytwK2Qsdj9TK3g6dGhpcy5yaWdodCxlLnJ0bCksXyhzLngoUyksQyxvKSx2KWYueCs9eCtsO2Vsc2UgaWYodHlwZW9mIG8udGV4dCE9YHN0cmluZ2Ape2xldCBlPWMubGluZUhlaWdodDtmLnkrPU9zKG8sZSkrbH1lbHNlIGYueSs9Yn0pLFByKHRoaXMuY3R4LGUudGV4dERpcmVjdGlvbil9ZHJhd1RpdGxlKCl7bGV0IGU9dGhpcy5vcHRpb25zLHQ9ZS50aXRsZSxuPXEodC5mb250KSxyPUsodC5wYWRkaW5nKTtpZighdC5kaXNwbGF5KXJldHVybjtsZXQgaT1NcihlLnJ0bCx0aGlzLmxlZnQsdGhpcy53aWR0aCksYT10aGlzLmN0eCxvPXQucG9zaXRpb24scz1uLnNpemUvMixjPXIudG9wK3MsbCx1PXRoaXMubGVmdCxkPXRoaXMud2lkdGg7aWYodGhpcy5pc0hvcml6b250YWwoKSlkPU1hdGgubWF4KC4uLnRoaXMubGluZVdpZHRocyksbD10aGlzLnRvcCtjLHU9VShlLmFsaWduLHUsdGhpcy5yaWdodC1kKTtlbHNle2xldCB0PXRoaXMuY29sdW1uU2l6ZXMucmVkdWNlKChlLHQpPT5NYXRoLm1heChlLHQuaGVpZ2h0KSwwKTtsPWMrVShlLmFsaWduLHRoaXMudG9wLHRoaXMuYm90dG9tLXQtZS5sYWJlbHMucGFkZGluZy10aGlzLl9jb21wdXRlVGl0bGVIZWlnaHQoKSl9bGV0IGY9VShvLHUsdStkKTthLnRleHRBbGlnbj1pLnRleHRBbGlnbihMdChvKSksYS50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsYS5zdHJva2VTdHlsZT10LmNvbG9yLGEuZmlsbFN0eWxlPXQuY29sb3IsYS5mb250PW4uc3RyaW5nLHduKGEsdC50ZXh0LGYsbCxuKX1fY29tcHV0ZVRpdGxlSGVpZ2h0KCl7bGV0IGU9dGhpcy5vcHRpb25zLnRpdGxlLHQ9cShlLmZvbnQpLG49SyhlLnBhZGRpbmcpO3JldHVybiBlLmRpc3BsYXk/dC5saW5lSGVpZ2h0K24uaGVpZ2h0OjB9X2dldExlZ2VuZEl0ZW1BdChlLHQpe2xldCBuLHIsaTtpZihUdChlLHRoaXMubGVmdCx0aGlzLnJpZ2h0KSYmVHQodCx0aGlzLnRvcCx0aGlzLmJvdHRvbSkpe2ZvcihpPXRoaXMubGVnZW5kSGl0Qm94ZXMsbj0wO248aS5sZW5ndGg7KytuKWlmKHI9aVtuXSxUdChlLHIubGVmdCxyLmxlZnQrci53aWR0aCkmJlR0KHQsci50b3Asci50b3Arci5oZWlnaHQpKXJldHVybiB0aGlzLmxlZ2VuZEl0ZW1zW25dfXJldHVybiBudWxsfWhhbmRsZUV2ZW50KGUpe2xldCB0PXRoaXMub3B0aW9ucztpZigha3MoZS50eXBlLHQpKXJldHVybjtsZXQgbj10aGlzLl9nZXRMZWdlbmRJdGVtQXQoZS54LGUueSk7aWYoZS50eXBlPT09YG1vdXNlbW92ZWB8fGUudHlwZT09PWBtb3VzZW91dGApe2xldCByPXRoaXMuX2hvdmVyZWRJdGVtLGk9Q3MocixuKTtyJiYhaSYmSSh0Lm9uTGVhdmUsW2Uscix0aGlzXSx0aGlzKSx0aGlzLl9ob3ZlcmVkSXRlbT1uLG4mJiFpJiZJKHQub25Ib3ZlcixbZSxuLHRoaXNdLHRoaXMpfWVsc2UgbiYmSSh0Lm9uQ2xpY2ssW2Usbix0aGlzXSx0aGlzKX19O2Z1bmN0aW9uIFRzKGUsdCxuLHIsaSl7cmV0dXJue2l0ZW1XaWR0aDpFcyhyLGUsdCxuKSxpdGVtSGVpZ2h0OkRzKGkscix0LmxpbmVIZWlnaHQpfX1mdW5jdGlvbiBFcyhlLHQsbixyKXtsZXQgaT1lLnRleHQ7cmV0dXJuIGkmJnR5cGVvZiBpIT1gc3RyaW5nYCYmKGk9aS5yZWR1Y2UoKGUsdCk9PmUubGVuZ3RoPnQubGVuZ3RoP2U6dCkpLHQrbi5zaXplLzIrci5tZWFzdXJlVGV4dChpKS53aWR0aH1mdW5jdGlvbiBEcyhlLHQsbil7bGV0IHI9ZTtyZXR1cm4gdHlwZW9mIHQudGV4dCE9YHN0cmluZ2AmJihyPU9zKHQsbikpLHJ9ZnVuY3Rpb24gT3MoZSx0KXtyZXR1cm4gdCooZS50ZXh0P2UudGV4dC5sZW5ndGg6MCl9ZnVuY3Rpb24ga3MoZSx0KXtyZXR1cm4hISgoZT09PWBtb3VzZW1vdmVgfHxlPT09YG1vdXNlb3V0YCkmJih0Lm9uSG92ZXJ8fHQub25MZWF2ZSl8fHQub25DbGljayYmKGU9PT1gY2xpY2tgfHxlPT09YG1vdXNldXBgKSl9dmFyIEFzPXtpZDpgbGVnZW5kYCxfZWxlbWVudDp3cyxzdGFydChlLHQsbil7bGV0IHI9ZS5sZWdlbmQ9bmV3IHdzKHtjdHg6ZS5jdHgsb3B0aW9uczpuLGNoYXJ0OmV9KTtYaS5jb25maWd1cmUoZSxyLG4pLFhpLmFkZEJveChlLHIpfSxzdG9wKGUpe1hpLnJlbW92ZUJveChlLGUubGVnZW5kKSxkZWxldGUgZS5sZWdlbmR9LGJlZm9yZVVwZGF0ZShlLHQsbil7bGV0IHI9ZS5sZWdlbmQ7WGkuY29uZmlndXJlKGUscixuKSxyLm9wdGlvbnM9bn0sYWZ0ZXJVcGRhdGUoZSl7bGV0IHQ9ZS5sZWdlbmQ7dC5idWlsZExhYmVscygpLHQuYWRqdXN0SGl0Qm94ZXMoKX0sYWZ0ZXJFdmVudChlLHQpe3QucmVwbGF5fHxlLmxlZ2VuZC5oYW5kbGVFdmVudCh0LmV2ZW50KX0sZGVmYXVsdHM6e2Rpc3BsYXk6ITAscG9zaXRpb246YHRvcGAsYWxpZ246YGNlbnRlcmAsZnVsbFNpemU6ITAscmV2ZXJzZTohMSx3ZWlnaHQ6MWUzLG9uQ2xpY2soZSx0LG4pe2xldCByPXQuZGF0YXNldEluZGV4LGk9bi5jaGFydDtpLmlzRGF0YXNldFZpc2libGUocik/KGkuaGlkZShyKSx0LmhpZGRlbj0hMCk6KGkuc2hvdyhyKSx0LmhpZGRlbj0hMSl9LG9uSG92ZXI6bnVsbCxvbkxlYXZlOm51bGwsbGFiZWxzOntjb2xvcjplPT5lLmNoYXJ0Lm9wdGlvbnMuY29sb3IsYm94V2lkdGg6NDAscGFkZGluZzoxMCxnZW5lcmF0ZUxhYmVscyhlKXtsZXQgdD1lLmRhdGEuZGF0YXNldHMse2xhYmVsczp7dXNlUG9pbnRTdHlsZTpuLHBvaW50U3R5bGU6cix0ZXh0QWxpZ246aSxjb2xvcjphLHVzZUJvcmRlclJhZGl1czpvLGJvcmRlclJhZGl1czpzfX09ZS5sZWdlbmQub3B0aW9ucztyZXR1cm4gZS5fZ2V0U29ydGVkRGF0YXNldE1ldGFzKCkubWFwKGU9PntsZXQgYz1lLmNvbnRyb2xsZXIuZ2V0U3R5bGUobj8wOnZvaWQgMCksbD1LKGMuYm9yZGVyV2lkdGgpO3JldHVybnt0ZXh0OnRbZS5pbmRleF0ubGFiZWwsZmlsbFN0eWxlOmMuYmFja2dyb3VuZENvbG9yLGZvbnRDb2xvcjphLGhpZGRlbjohZS52aXNpYmxlLGxpbmVDYXA6Yy5ib3JkZXJDYXBTdHlsZSxsaW5lRGFzaDpjLmJvcmRlckRhc2gsbGluZURhc2hPZmZzZXQ6Yy5ib3JkZXJEYXNoT2Zmc2V0LGxpbmVKb2luOmMuYm9yZGVySm9pblN0eWxlLGxpbmVXaWR0aDoobC53aWR0aCtsLmhlaWdodCkvNCxzdHJva2VTdHlsZTpjLmJvcmRlckNvbG9yLHBvaW50U3R5bGU6cnx8Yy5wb2ludFN0eWxlLHJvdGF0aW9uOmMucm90YXRpb24sdGV4dEFsaWduOml8fGMudGV4dEFsaWduLGJvcmRlclJhZGl1czpvJiYoc3x8Yy5ib3JkZXJSYWRpdXMpLGRhdGFzZXRJbmRleDplLmluZGV4fX0sdGhpcyl9fSx0aXRsZTp7Y29sb3I6ZT0+ZS5jaGFydC5vcHRpb25zLmNvbG9yLGRpc3BsYXk6ITEscG9zaXRpb246YGNlbnRlcmAsdGV4dDpgYH19LGRlc2NyaXB0b3JzOntfc2NyaXB0YWJsZTplPT4hZS5zdGFydHNXaXRoKGBvbmApLGxhYmVsczp7X3NjcmlwdGFibGU6ZT0+IVtgZ2VuZXJhdGVMYWJlbHNgLGBmaWx0ZXJgLGBzb3J0YF0uaW5jbHVkZXMoZSl9fX0sanM9e2F2ZXJhZ2UoZSl7aWYoIWUubGVuZ3RoKXJldHVybiExO2xldCB0LG4scj1uZXcgU2V0LGk9MCxhPTA7Zm9yKHQ9MCxuPWUubGVuZ3RoO3Q8bjsrK3Qpe2xldCBuPWVbdF0uZWxlbWVudDtpZihuJiZuLmhhc1ZhbHVlKCkpe2xldCBlPW4udG9vbHRpcFBvc2l0aW9uKCk7ci5hZGQoZS54KSxpKz1lLnksKythfX1yZXR1cm4gYT09PTB8fHIuc2l6ZT09PTA/ITE6e3g6Wy4uLnJdLnJlZHVjZSgoZSx0KT0+ZSt0KS9yLnNpemUseTppL2F9fSxuZWFyZXN0KGUsdCl7aWYoIWUubGVuZ3RoKXJldHVybiExO2xldCBuPXQueCxyPXQueSxpPTEvMCxhLG8scztmb3IoYT0wLG89ZS5sZW5ndGg7YTxvOysrYSl7bGV0IG49ZVthXS5lbGVtZW50O2lmKG4mJm4uaGFzVmFsdWUoKSl7bGV0IGU9eHQodCxuLmdldENlbnRlclBvaW50KCkpO2U8aSYmKGk9ZSxzPW4pfX1pZihzKXtsZXQgZT1zLnRvb2x0aXBQb3NpdGlvbigpO249ZS54LHI9ZS55fXJldHVybnt4Om4seTpyfX19O2Z1bmN0aW9uIFgoZSx0KXtyZXR1cm4gdCYmKGoodCk/QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZSx0KTplLnB1c2godCkpLGV9ZnVuY3Rpb24gWihlKXtyZXR1cm4odHlwZW9mIGU9PWBzdHJpbmdgfHxlIGluc3RhbmNlb2YgU3RyaW5nKSYmZS5pbmRleE9mKGAKYCk+LTE/ZS5zcGxpdChgCmApOmV9ZnVuY3Rpb24gTXMoZSx0KXtsZXR7ZWxlbWVudDpuLGRhdGFzZXRJbmRleDpyLGluZGV4Oml9PXQsYT1lLmdldERhdGFzZXRNZXRhKHIpLmNvbnRyb2xsZXIse2xhYmVsOm8sdmFsdWU6c309YS5nZXRMYWJlbEFuZFZhbHVlKGkpO3JldHVybntjaGFydDplLGxhYmVsOm8scGFyc2VkOmEuZ2V0UGFyc2VkKGkpLHJhdzplLmRhdGEuZGF0YXNldHNbcl0uZGF0YVtpXSxmb3JtYXR0ZWRWYWx1ZTpzLGRhdGFzZXQ6YS5nZXREYXRhc2V0KCksZGF0YUluZGV4OmksZGF0YXNldEluZGV4OnIsZWxlbWVudDpufX1mdW5jdGlvbiBOcyhlLHQpe2xldCBuPWUuY2hhcnQuY3R4LHtib2R5OnIsZm9vdGVyOmksdGl0bGU6YX09ZSx7Ym94V2lkdGg6byxib3hIZWlnaHQ6c309dCxjPXEodC5ib2R5Rm9udCksbD1xKHQudGl0bGVGb250KSx1PXEodC5mb290ZXJGb250KSxkPWEubGVuZ3RoLGY9aS5sZW5ndGgscD1yLmxlbmd0aCxtPUsodC5wYWRkaW5nKSxoPW0uaGVpZ2h0LGc9MCxfPXIucmVkdWNlKChlLHQpPT5lK3QuYmVmb3JlLmxlbmd0aCt0LmxpbmVzLmxlbmd0aCt0LmFmdGVyLmxlbmd0aCwwKTtpZihfKz1lLmJlZm9yZUJvZHkubGVuZ3RoK2UuYWZ0ZXJCb2R5Lmxlbmd0aCxkJiYoaCs9ZCpsLmxpbmVIZWlnaHQrKGQtMSkqdC50aXRsZVNwYWNpbmcrdC50aXRsZU1hcmdpbkJvdHRvbSksXyl7bGV0IGU9dC5kaXNwbGF5Q29sb3JzP01hdGgubWF4KHMsYy5saW5lSGVpZ2h0KTpjLmxpbmVIZWlnaHQ7aCs9cCplKyhfLXApKmMubGluZUhlaWdodCsoXy0xKSp0LmJvZHlTcGFjaW5nfWYmJihoKz10LmZvb3Rlck1hcmdpblRvcCtmKnUubGluZUhlaWdodCsoZi0xKSp0LmZvb3RlclNwYWNpbmcpO2xldCB2PTAseT1mdW5jdGlvbihlKXtnPU1hdGgubWF4KGcsbi5tZWFzdXJlVGV4dChlKS53aWR0aCt2KX07cmV0dXJuIG4uc2F2ZSgpLG4uZm9udD1sLnN0cmluZyxMKGUudGl0bGUseSksbi5mb250PWMuc3RyaW5nLEwoZS5iZWZvcmVCb2R5LmNvbmNhdChlLmFmdGVyQm9keSkseSksdj10LmRpc3BsYXlDb2xvcnM/bysyK3QuYm94UGFkZGluZzowLEwocixlPT57TChlLmJlZm9yZSx5KSxMKGUubGluZXMseSksTChlLmFmdGVyLHkpfSksdj0wLG4uZm9udD11LnN0cmluZyxMKGUuZm9vdGVyLHkpLG4ucmVzdG9yZSgpLGcrPW0ud2lkdGgse3dpZHRoOmcsaGVpZ2h0Omh9fWZ1bmN0aW9uIFBzKGUsdCl7bGV0e3k6bixoZWlnaHQ6cn09dDtyZXR1cm4gbjxyLzI/YHRvcGA6bj5lLmhlaWdodC1yLzI/YGJvdHRvbWA6YGNlbnRlcmB9ZnVuY3Rpb24gRnMoZSx0LG4scil7bGV0e3g6aSx3aWR0aDphfT1yLG89bi5jYXJldFNpemUrbi5jYXJldFBhZGRpbmc7aWYoZT09PWBsZWZ0YCYmaSthK28+dC53aWR0aHx8ZT09PWByaWdodGAmJmktYS1vPDApcmV0dXJuITB9ZnVuY3Rpb24gSXMoZSx0LG4scil7bGV0e3g6aSx3aWR0aDphfT1uLHt3aWR0aDpvLGNoYXJ0QXJlYTp7bGVmdDpzLHJpZ2h0OmN9fT1lLGw9YGNlbnRlcmA7cmV0dXJuIHI9PT1gY2VudGVyYD9sPWk8PShzK2MpLzI/YGxlZnRgOmByaWdodGA6aTw9YS8yP2w9YGxlZnRgOmk+PW8tYS8yJiYobD1gcmlnaHRgKSxGcyhsLGUsdCxuKSYmKGw9YGNlbnRlcmApLGx9ZnVuY3Rpb24gTHMoZSx0LG4pe2xldCByPW4ueUFsaWdufHx0LnlBbGlnbnx8UHMoZSxuKTtyZXR1cm57eEFsaWduOm4ueEFsaWdufHx0LnhBbGlnbnx8SXMoZSx0LG4scikseUFsaWduOnJ9fWZ1bmN0aW9uIFJzKGUsdCl7bGV0e3g6bix3aWR0aDpyfT1lO3JldHVybiB0PT09YHJpZ2h0YD9uLT1yOnQ9PT1gY2VudGVyYCYmKG4tPXIvMiksbn1mdW5jdGlvbiB6cyhlLHQsbil7bGV0e3k6cixoZWlnaHQ6aX09ZTtyZXR1cm4gdD09PWB0b3BgP3IrPW46ci09dD09PWBib3R0b21gP2krbjppLzIscn1mdW5jdGlvbiBCcyhlLHQsbixyKXtsZXR7Y2FyZXRTaXplOmksY2FyZXRQYWRkaW5nOmEsY29ybmVyUmFkaXVzOm99PWUse3hBbGlnbjpzLHlBbGlnbjpjfT1uLGw9aSthLHt0b3BMZWZ0OnUsdG9wUmlnaHQ6ZCxib3R0b21MZWZ0OmYsYm90dG9tUmlnaHQ6cH09TW4obyksbT1Scyh0LHMpLGg9enModCxjLGwpO3JldHVybiBjPT09YGNlbnRlcmA/cz09PWBsZWZ0YD9tKz1sOnM9PT1gcmlnaHRgJiYobS09bCk6cz09PWBsZWZ0YD9tLT1NYXRoLm1heCh1LGYpK2k6cz09PWByaWdodGAmJihtKz1NYXRoLm1heChkLHApK2kpLHt4OkgobSwwLHIud2lkdGgtdC53aWR0aCkseTpIKGgsMCxyLmhlaWdodC10LmhlaWdodCl9fWZ1bmN0aW9uIFZzKGUsdCxuKXtsZXQgcj1LKG4ucGFkZGluZyk7cmV0dXJuIHQ9PT1gY2VudGVyYD9lLngrZS53aWR0aC8yOnQ9PT1gcmlnaHRgP2UueCtlLndpZHRoLXIucmlnaHQ6ZS54K3IubGVmdH1mdW5jdGlvbiBIcyhlKXtyZXR1cm4gWChbXSxaKGUpKX1mdW5jdGlvbiBVcyhlLHQsbil7cmV0dXJuIEZuKGUse3Rvb2x0aXA6dCx0b29sdGlwSXRlbXM6bix0eXBlOmB0b29sdGlwYH0pfWZ1bmN0aW9uIFdzKGUsdCl7bGV0IG49dCYmdC5kYXRhc2V0JiZ0LmRhdGFzZXQudG9vbHRpcCYmdC5kYXRhc2V0LnRvb2x0aXAuY2FsbGJhY2tzO3JldHVybiBuP2Uub3ZlcnJpZGUobik6ZX12YXIgR3M9e2JlZm9yZVRpdGxlOmssdGl0bGUoZSl7aWYoZS5sZW5ndGg+MCl7bGV0IHQ9ZVswXSxuPXQuY2hhcnQuZGF0YS5sYWJlbHMscj1uP24ubGVuZ3RoOjA7aWYodGhpcyYmdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMubW9kZT09PWBkYXRhc2V0YClyZXR1cm4gdC5kYXRhc2V0LmxhYmVsfHxgYDtpZih0LmxhYmVsKXJldHVybiB0LmxhYmVsO2lmKHI+MCYmdC5kYXRhSW5kZXg8cilyZXR1cm4gblt0LmRhdGFJbmRleF19cmV0dXJuYGB9LGFmdGVyVGl0bGU6ayxiZWZvcmVCb2R5OmssYmVmb3JlTGFiZWw6ayxsYWJlbChlKXtpZih0aGlzJiZ0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5tb2RlPT09YGRhdGFzZXRgKXJldHVybiBlLmxhYmVsK2A6IGArZS5mb3JtYXR0ZWRWYWx1ZXx8ZS5mb3JtYXR0ZWRWYWx1ZTtsZXQgdD1lLmRhdGFzZXQubGFiZWx8fGBgO3QmJih0Kz1gOiBgKTtsZXQgbj1lLmZvcm1hdHRlZFZhbHVlO3JldHVybiBBKG4pfHwodCs9biksdH0sbGFiZWxDb2xvcihlKXtsZXQgdD1lLmNoYXJ0LmdldERhdGFzZXRNZXRhKGUuZGF0YXNldEluZGV4KS5jb250cm9sbGVyLmdldFN0eWxlKGUuZGF0YUluZGV4KTtyZXR1cm57Ym9yZGVyQ29sb3I6dC5ib3JkZXJDb2xvcixiYWNrZ3JvdW5kQ29sb3I6dC5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyV2lkdGg6dC5ib3JkZXJXaWR0aCxib3JkZXJEYXNoOnQuYm9yZGVyRGFzaCxib3JkZXJEYXNoT2Zmc2V0OnQuYm9yZGVyRGFzaE9mZnNldCxib3JkZXJSYWRpdXM6MH19LGxhYmVsVGV4dENvbG9yKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5ib2R5Q29sb3J9LGxhYmVsUG9pbnRTdHlsZShlKXtsZXQgdD1lLmNoYXJ0LmdldERhdGFzZXRNZXRhKGUuZGF0YXNldEluZGV4KS5jb250cm9sbGVyLmdldFN0eWxlKGUuZGF0YUluZGV4KTtyZXR1cm57cG9pbnRTdHlsZTp0LnBvaW50U3R5bGUscm90YXRpb246dC5yb3RhdGlvbn19LGFmdGVyTGFiZWw6ayxhZnRlckJvZHk6ayxiZWZvcmVGb290ZXI6ayxmb290ZXI6ayxhZnRlckZvb3RlcjprfTtmdW5jdGlvbiBRKGUsdCxuLHIpe2xldCBpPWVbdF0uY2FsbChuLHIpO3JldHVybiBpPT09dm9pZCAwP0dzW3RdLmNhbGwobixyKTppfXZhciBLcz1jbGFzcyBleHRlbmRzIGJhe3N0YXRpYyBwb3NpdGlvbmVycz1qcztjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMub3BhY2l0eT0wLHRoaXMuX2FjdGl2ZT1bXSx0aGlzLl9ldmVudFBvc2l0aW9uPXZvaWQgMCx0aGlzLl9zaXplPXZvaWQgMCx0aGlzLl9jYWNoZWRBbmltYXRpb25zPXZvaWQgMCx0aGlzLl90b29sdGlwSXRlbXM9W10sdGhpcy4kYW5pbWF0aW9ucz12b2lkIDAsdGhpcy4kY29udGV4dD12b2lkIDAsdGhpcy5jaGFydD1lLmNoYXJ0LHRoaXMub3B0aW9ucz1lLm9wdGlvbnMsdGhpcy5kYXRhUG9pbnRzPXZvaWQgMCx0aGlzLnRpdGxlPXZvaWQgMCx0aGlzLmJlZm9yZUJvZHk9dm9pZCAwLHRoaXMuYm9keT12b2lkIDAsdGhpcy5hZnRlckJvZHk9dm9pZCAwLHRoaXMuZm9vdGVyPXZvaWQgMCx0aGlzLnhBbGlnbj12b2lkIDAsdGhpcy55QWxpZ249dm9pZCAwLHRoaXMueD12b2lkIDAsdGhpcy55PXZvaWQgMCx0aGlzLmhlaWdodD12b2lkIDAsdGhpcy53aWR0aD12b2lkIDAsdGhpcy5jYXJldFg9dm9pZCAwLHRoaXMuY2FyZXRZPXZvaWQgMCx0aGlzLmxhYmVsQ29sb3JzPXZvaWQgMCx0aGlzLmxhYmVsUG9pbnRTdHlsZXM9dm9pZCAwLHRoaXMubGFiZWxUZXh0Q29sb3JzPXZvaWQgMH1pbml0aWFsaXplKGUpe3RoaXMub3B0aW9ucz1lLHRoaXMuX2NhY2hlZEFuaW1hdGlvbnM9dm9pZCAwLHRoaXMuJGNvbnRleHQ9dm9pZCAwfV9yZXNvbHZlQW5pbWF0aW9ucygpe2xldCBlPXRoaXMuX2NhY2hlZEFuaW1hdGlvbnM7aWYoZSlyZXR1cm4gZTtsZXQgdD10aGlzLmNoYXJ0LG49dGhpcy5vcHRpb25zLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KCkpLHI9bi5lbmFibGVkJiZ0Lm9wdGlvbnMuYW5pbWF0aW9uJiZuLmFuaW1hdGlvbnMsaT1uZXcgJHIodGhpcy5jaGFydCxyKTtyZXR1cm4gci5fY2FjaGVhYmxlJiYodGhpcy5fY2FjaGVkQW5pbWF0aW9ucz1PYmplY3QuZnJlZXplKGkpKSxpfWdldENvbnRleHQoKXtyZXR1cm4gdGhpcy4kY29udGV4dHx8PVVzKHRoaXMuY2hhcnQuZ2V0Q29udGV4dCgpLHRoaXMsdGhpcy5fdG9vbHRpcEl0ZW1zKX1nZXRUaXRsZShlLHQpe2xldHtjYWxsYmFja3M6bn09dCxyPVEobixgYmVmb3JlVGl0bGVgLHRoaXMsZSksaT1RKG4sYHRpdGxlYCx0aGlzLGUpLGE9UShuLGBhZnRlclRpdGxlYCx0aGlzLGUpLG89W107cmV0dXJuIG89WChvLFoocikpLG89WChvLFooaSkpLG89WChvLFooYSkpLG99Z2V0QmVmb3JlQm9keShlLHQpe3JldHVybiBIcyhRKHQuY2FsbGJhY2tzLGBiZWZvcmVCb2R5YCx0aGlzLGUpKX1nZXRCb2R5KGUsdCl7bGV0e2NhbGxiYWNrczpufT10LHI9W107cmV0dXJuIEwoZSxlPT57bGV0IHQ9e2JlZm9yZTpbXSxsaW5lczpbXSxhZnRlcjpbXX0saT1XcyhuLGUpO1godC5iZWZvcmUsWihRKGksYGJlZm9yZUxhYmVsYCx0aGlzLGUpKSksWCh0LmxpbmVzLFEoaSxgbGFiZWxgLHRoaXMsZSkpLFgodC5hZnRlcixaKFEoaSxgYWZ0ZXJMYWJlbGAsdGhpcyxlKSkpLHIucHVzaCh0KX0pLHJ9Z2V0QWZ0ZXJCb2R5KGUsdCl7cmV0dXJuIEhzKFEodC5jYWxsYmFja3MsYGFmdGVyQm9keWAsdGhpcyxlKSl9Z2V0Rm9vdGVyKGUsdCl7bGV0e2NhbGxiYWNrczpufT10LHI9UShuLGBiZWZvcmVGb290ZXJgLHRoaXMsZSksaT1RKG4sYGZvb3RlcmAsdGhpcyxlKSxhPVEobixgYWZ0ZXJGb290ZXJgLHRoaXMsZSksbz1bXTtyZXR1cm4gbz1YKG8sWihyKSksbz1YKG8sWihpKSksbz1YKG8sWihhKSksb31fY3JlYXRlSXRlbXMoZSl7bGV0IHQ9dGhpcy5fYWN0aXZlLG49dGhpcy5jaGFydC5kYXRhLHI9W10saT1bXSxhPVtdLG89W10scyxjO2ZvcihzPTAsYz10Lmxlbmd0aDtzPGM7KytzKW8ucHVzaChNcyh0aGlzLmNoYXJ0LHRbc10pKTtyZXR1cm4gZS5maWx0ZXImJihvPW8uZmlsdGVyKCh0LHIsaSk9PmUuZmlsdGVyKHQscixpLG4pKSksZS5pdGVtU29ydCYmKG89by5zb3J0KCh0LHIpPT5lLml0ZW1Tb3J0KHQscixuKSkpLEwobyx0PT57bGV0IG49V3MoZS5jYWxsYmFja3MsdCk7ci5wdXNoKFEobixgbGFiZWxDb2xvcmAsdGhpcyx0KSksaS5wdXNoKFEobixgbGFiZWxQb2ludFN0eWxlYCx0aGlzLHQpKSxhLnB1c2goUShuLGBsYWJlbFRleHRDb2xvcmAsdGhpcyx0KSl9KSx0aGlzLmxhYmVsQ29sb3JzPXIsdGhpcy5sYWJlbFBvaW50U3R5bGVzPWksdGhpcy5sYWJlbFRleHRDb2xvcnM9YSx0aGlzLmRhdGFQb2ludHM9byxvfXVwZGF0ZShlLHQpe2xldCBuPXRoaXMub3B0aW9ucy5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgpKSxyPXRoaXMuX2FjdGl2ZSxpLGE9W107aWYoIXIubGVuZ3RoKXRoaXMub3BhY2l0eSE9PTAmJihpPXtvcGFjaXR5OjB9KTtlbHNle2xldCBlPWpzW24ucG9zaXRpb25dLmNhbGwodGhpcyxyLHRoaXMuX2V2ZW50UG9zaXRpb24pO2E9dGhpcy5fY3JlYXRlSXRlbXMobiksdGhpcy50aXRsZT10aGlzLmdldFRpdGxlKGEsbiksdGhpcy5iZWZvcmVCb2R5PXRoaXMuZ2V0QmVmb3JlQm9keShhLG4pLHRoaXMuYm9keT10aGlzLmdldEJvZHkoYSxuKSx0aGlzLmFmdGVyQm9keT10aGlzLmdldEFmdGVyQm9keShhLG4pLHRoaXMuZm9vdGVyPXRoaXMuZ2V0Rm9vdGVyKGEsbik7bGV0IHQ9dGhpcy5fc2l6ZT1Ocyh0aGlzLG4pLG89T2JqZWN0LmFzc2lnbih7fSxlLHQpLHM9THModGhpcy5jaGFydCxuLG8pLGM9QnMobixvLHMsdGhpcy5jaGFydCk7dGhpcy54QWxpZ249cy54QWxpZ24sdGhpcy55QWxpZ249cy55QWxpZ24saT17b3BhY2l0eToxLHg6Yy54LHk6Yy55LHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LGNhcmV0WDplLngsY2FyZXRZOmUueX19dGhpcy5fdG9vbHRpcEl0ZW1zPWEsdGhpcy4kY29udGV4dD12b2lkIDAsaSYmdGhpcy5fcmVzb2x2ZUFuaW1hdGlvbnMoKS51cGRhdGUodGhpcyxpKSxlJiZuLmV4dGVybmFsJiZuLmV4dGVybmFsLmNhbGwodGhpcyx7Y2hhcnQ6dGhpcy5jaGFydCx0b29sdGlwOnRoaXMscmVwbGF5OnR9KX1kcmF3Q2FyZXQoZSx0LG4scil7bGV0IGk9dGhpcy5nZXRDYXJldFBvc2l0aW9uKGUsbixyKTt0LmxpbmVUbyhpLngxLGkueTEpLHQubGluZVRvKGkueDIsaS55MiksdC5saW5lVG8oaS54MyxpLnkzKX1nZXRDYXJldFBvc2l0aW9uKGUsdCxuKXtsZXR7eEFsaWduOnIseUFsaWduOml9PXRoaXMse2NhcmV0U2l6ZTphLGNvcm5lclJhZGl1czpvfT1uLHt0b3BMZWZ0OnMsdG9wUmlnaHQ6Yyxib3R0b21MZWZ0OmwsYm90dG9tUmlnaHQ6dX09TW4obykse3g6ZCx5OmZ9PWUse3dpZHRoOnAsaGVpZ2h0Om19PXQsaCxnLF8sdix5LGI7cmV0dXJuIGk9PT1gY2VudGVyYD8oeT1mK20vMixyPT09YGxlZnRgPyhoPWQsZz1oLWEsdj15K2EsYj15LWEpOihoPWQrcCxnPWgrYSx2PXktYSxiPXkrYSksXz1oKTooZz1yPT09YGxlZnRgP2QrTWF0aC5tYXgocyxsKSthOnI9PT1gcmlnaHRgP2QrcC1NYXRoLm1heChjLHUpLWE6dGhpcy5jYXJldFgsaT09PWB0b3BgPyh2PWYseT12LWEsaD1nLWEsXz1nK2EpOih2PWYrbSx5PXYrYSxoPWcrYSxfPWctYSksYj12KSx7eDE6aCx4MjpnLHgzOl8seTE6dix5Mjp5LHkzOmJ9fWRyYXdUaXRsZShlLHQsbil7bGV0IHI9dGhpcy50aXRsZSxpPXIubGVuZ3RoLGEsbyxzO2lmKGkpe2xldCBjPU1yKG4ucnRsLHRoaXMueCx0aGlzLndpZHRoKTtmb3IoZS54PVZzKHRoaXMsbi50aXRsZUFsaWduLG4pLHQudGV4dEFsaWduPWMudGV4dEFsaWduKG4udGl0bGVBbGlnbiksdC50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsYT1xKG4udGl0bGVGb250KSxvPW4udGl0bGVTcGFjaW5nLHQuZmlsbFN0eWxlPW4udGl0bGVDb2xvcix0LmZvbnQ9YS5zdHJpbmcscz0wO3M8aTsrK3MpdC5maWxsVGV4dChyW3NdLGMueChlLngpLGUueSthLmxpbmVIZWlnaHQvMiksZS55Kz1hLmxpbmVIZWlnaHQrbyxzKzE9PT1pJiYoZS55Kz1uLnRpdGxlTWFyZ2luQm90dG9tLW8pfX1fZHJhd0NvbG9yQm94KGUsdCxuLHIsaSl7bGV0IGE9dGhpcy5sYWJlbENvbG9yc1tuXSxvPXRoaXMubGFiZWxQb2ludFN0eWxlc1tuXSx7Ym94SGVpZ2h0OnMsYm94V2lkdGg6Y309aSxsPXEoaS5ib2R5Rm9udCksdT1Wcyh0aGlzLGBsZWZ0YCxpKSxkPXIueCh1KSxmPXM8bC5saW5lSGVpZ2h0PyhsLmxpbmVIZWlnaHQtcykvMjowLHA9dC55K2Y7aWYoaS51c2VQb2ludFN0eWxlKXtsZXQgdD17cmFkaXVzOk1hdGgubWluKGMscykvMixwb2ludFN0eWxlOm8ucG9pbnRTdHlsZSxyb3RhdGlvbjpvLnJvdGF0aW9uLGJvcmRlcldpZHRoOjF9LG49ci5sZWZ0Rm9yTHRyKGQsYykrYy8yLGw9cCtzLzI7ZS5zdHJva2VTdHlsZT1pLm11bHRpS2V5QmFja2dyb3VuZCxlLmZpbGxTdHlsZT1pLm11bHRpS2V5QmFja2dyb3VuZCxobihlLHQsbixsKSxlLnN0cm9rZVN0eWxlPWEuYm9yZGVyQ29sb3IsZS5maWxsU3R5bGU9YS5iYWNrZ3JvdW5kQ29sb3IsaG4oZSx0LG4sbCl9ZWxzZXtlLmxpbmVXaWR0aD1NKGEuYm9yZGVyV2lkdGgpP01hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMoYS5ib3JkZXJXaWR0aCkpOmEuYm9yZGVyV2lkdGh8fDEsZS5zdHJva2VTdHlsZT1hLmJvcmRlckNvbG9yLGUuc2V0TGluZURhc2goYS5ib3JkZXJEYXNofHxbXSksZS5saW5lRGFzaE9mZnNldD1hLmJvcmRlckRhc2hPZmZzZXR8fDA7bGV0IHQ9ci5sZWZ0Rm9yTHRyKGQsYyksbj1yLmxlZnRGb3JMdHIoci54UGx1cyhkLDEpLGMtMiksbz1NbihhLmJvcmRlclJhZGl1cyk7T2JqZWN0LnZhbHVlcyhvKS5zb21lKGU9PmUhPT0wKT8oZS5iZWdpblBhdGgoKSxlLmZpbGxTdHlsZT1pLm11bHRpS2V5QmFja2dyb3VuZCxUbihlLHt4OnQseTpwLHc6YyxoOnMscmFkaXVzOm99KSxlLmZpbGwoKSxlLnN0cm9rZSgpLGUuZmlsbFN0eWxlPWEuYmFja2dyb3VuZENvbG9yLGUuYmVnaW5QYXRoKCksVG4oZSx7eDpuLHk6cCsxLHc6Yy0yLGg6cy0yLHJhZGl1czpvfSksZS5maWxsKCkpOihlLmZpbGxTdHlsZT1pLm11bHRpS2V5QmFja2dyb3VuZCxlLmZpbGxSZWN0KHQscCxjLHMpLGUuc3Ryb2tlUmVjdCh0LHAsYyxzKSxlLmZpbGxTdHlsZT1hLmJhY2tncm91bmRDb2xvcixlLmZpbGxSZWN0KG4scCsxLGMtMixzLTIpKX1lLmZpbGxTdHlsZT10aGlzLmxhYmVsVGV4dENvbG9yc1tuXX1kcmF3Qm9keShlLHQsbil7bGV0e2JvZHk6cn09dGhpcyx7Ym9keVNwYWNpbmc6aSxib2R5QWxpZ246YSxkaXNwbGF5Q29sb3JzOm8sYm94SGVpZ2h0OnMsYm94V2lkdGg6Yyxib3hQYWRkaW5nOmx9PW4sdT1xKG4uYm9keUZvbnQpLGQ9dS5saW5lSGVpZ2h0LGY9MCxwPU1yKG4ucnRsLHRoaXMueCx0aGlzLndpZHRoKSxtPWZ1bmN0aW9uKG4pe3QuZmlsbFRleHQobixwLngoZS54K2YpLGUueStkLzIpLGUueSs9ZCtpfSxoPXAudGV4dEFsaWduKGEpLGcsXyx2LHksYix4LFM7Zm9yKHQudGV4dEFsaWduPWEsdC50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsdC5mb250PXUuc3RyaW5nLGUueD1Wcyh0aGlzLGgsbiksdC5maWxsU3R5bGU9bi5ib2R5Q29sb3IsTCh0aGlzLmJlZm9yZUJvZHksbSksZj1vJiZoIT09YHJpZ2h0YD9hPT09YGNlbnRlcmA/Yy8yK2w6YysyK2w6MCx5PTAseD1yLmxlbmd0aDt5PHg7Kyt5KXtmb3IoZz1yW3ldLF89dGhpcy5sYWJlbFRleHRDb2xvcnNbeV0sdC5maWxsU3R5bGU9XyxMKGcuYmVmb3JlLG0pLHY9Zy5saW5lcyxvJiZ2Lmxlbmd0aCYmKHRoaXMuX2RyYXdDb2xvckJveCh0LGUseSxwLG4pLGQ9TWF0aC5tYXgodS5saW5lSGVpZ2h0LHMpKSxiPTAsUz12Lmxlbmd0aDtiPFM7KytiKW0odltiXSksZD11LmxpbmVIZWlnaHQ7TChnLmFmdGVyLG0pfWY9MCxkPXUubGluZUhlaWdodCxMKHRoaXMuYWZ0ZXJCb2R5LG0pLGUueS09aX1kcmF3Rm9vdGVyKGUsdCxuKXtsZXQgcj10aGlzLmZvb3RlcixpPXIubGVuZ3RoLGEsbztpZihpKXtsZXQgcz1NcihuLnJ0bCx0aGlzLngsdGhpcy53aWR0aCk7Zm9yKGUueD1Wcyh0aGlzLG4uZm9vdGVyQWxpZ24sbiksZS55Kz1uLmZvb3Rlck1hcmdpblRvcCx0LnRleHRBbGlnbj1zLnRleHRBbGlnbihuLmZvb3RlckFsaWduKSx0LnRleHRCYXNlbGluZT1gbWlkZGxlYCxhPXEobi5mb290ZXJGb250KSx0LmZpbGxTdHlsZT1uLmZvb3RlckNvbG9yLHQuZm9udD1hLnN0cmluZyxvPTA7bzxpOysrbyl0LmZpbGxUZXh0KHJbb10scy54KGUueCksZS55K2EubGluZUhlaWdodC8yKSxlLnkrPWEubGluZUhlaWdodCtuLmZvb3RlclNwYWNpbmd9fWRyYXdCYWNrZ3JvdW5kKGUsdCxuLHIpe2xldHt4QWxpZ246aSx5QWxpZ246YX09dGhpcyx7eDpvLHk6c309ZSx7d2lkdGg6YyxoZWlnaHQ6bH09bix7dG9wTGVmdDp1LHRvcFJpZ2h0OmQsYm90dG9tTGVmdDpmLGJvdHRvbVJpZ2h0OnB9PU1uKHIuY29ybmVyUmFkaXVzKTt0LmZpbGxTdHlsZT1yLmJhY2tncm91bmRDb2xvcix0LnN0cm9rZVN0eWxlPXIuYm9yZGVyQ29sb3IsdC5saW5lV2lkdGg9ci5ib3JkZXJXaWR0aCx0LmJlZ2luUGF0aCgpLHQubW92ZVRvKG8rdSxzKSxhPT09YHRvcGAmJnRoaXMuZHJhd0NhcmV0KGUsdCxuLHIpLHQubGluZVRvKG8rYy1kLHMpLHQucXVhZHJhdGljQ3VydmVUbyhvK2MscyxvK2MscytkKSxhPT09YGNlbnRlcmAmJmk9PT1gcmlnaHRgJiZ0aGlzLmRyYXdDYXJldChlLHQsbixyKSx0LmxpbmVUbyhvK2MscytsLXApLHQucXVhZHJhdGljQ3VydmVUbyhvK2MscytsLG8rYy1wLHMrbCksYT09PWBib3R0b21gJiZ0aGlzLmRyYXdDYXJldChlLHQsbixyKSx0LmxpbmVUbyhvK2YscytsKSx0LnF1YWRyYXRpY0N1cnZlVG8obyxzK2wsbyxzK2wtZiksYT09PWBjZW50ZXJgJiZpPT09YGxlZnRgJiZ0aGlzLmRyYXdDYXJldChlLHQsbixyKSx0LmxpbmVUbyhvLHMrdSksdC5xdWFkcmF0aWNDdXJ2ZVRvKG8scyxvK3UscyksdC5jbG9zZVBhdGgoKSx0LmZpbGwoKSxyLmJvcmRlcldpZHRoPjAmJnQuc3Ryb2tlKCl9X3VwZGF0ZUFuaW1hdGlvblRhcmdldChlKXtsZXQgdD10aGlzLmNoYXJ0LG49dGhpcy4kYW5pbWF0aW9ucyxyPW4mJm4ueCxpPW4mJm4ueTtpZihyfHxpKXtsZXQgbj1qc1tlLnBvc2l0aW9uXS5jYWxsKHRoaXMsdGhpcy5fYWN0aXZlLHRoaXMuX2V2ZW50UG9zaXRpb24pO2lmKCFuKXJldHVybjtsZXQgYT10aGlzLl9zaXplPU5zKHRoaXMsZSksbz1PYmplY3QuYXNzaWduKHt9LG4sdGhpcy5fc2l6ZSkscz1Mcyh0LGUsbyksYz1CcyhlLG8scyx0KTsoci5fdG8hPT1jLnh8fGkuX3RvIT09Yy55KSYmKHRoaXMueEFsaWduPXMueEFsaWduLHRoaXMueUFsaWduPXMueUFsaWduLHRoaXMud2lkdGg9YS53aWR0aCx0aGlzLmhlaWdodD1hLmhlaWdodCx0aGlzLmNhcmV0WD1uLngsdGhpcy5jYXJldFk9bi55LHRoaXMuX3Jlc29sdmVBbmltYXRpb25zKCkudXBkYXRlKHRoaXMsYykpfX1fd2lsbFJlbmRlcigpe3JldHVybiEhdGhpcy5vcGFjaXR5fWRyYXcoZSl7bGV0IHQ9dGhpcy5vcHRpb25zLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KCkpLG49dGhpcy5vcGFjaXR5O2lmKCFuKXJldHVybjt0aGlzLl91cGRhdGVBbmltYXRpb25UYXJnZXQodCk7bGV0IHI9e3dpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0fSxpPXt4OnRoaXMueCx5OnRoaXMueX07bj1NYXRoLmFicyhuKTwuMDAxPzA6bjtsZXQgYT1LKHQucGFkZGluZyksbz10aGlzLnRpdGxlLmxlbmd0aHx8dGhpcy5iZWZvcmVCb2R5Lmxlbmd0aHx8dGhpcy5ib2R5Lmxlbmd0aHx8dGhpcy5hZnRlckJvZHkubGVuZ3RofHx0aGlzLmZvb3Rlci5sZW5ndGg7dC5lbmFibGVkJiZvJiYoZS5zYXZlKCksZS5nbG9iYWxBbHBoYT1uLHRoaXMuZHJhd0JhY2tncm91bmQoaSxlLHIsdCksTnIoZSx0LnRleHREaXJlY3Rpb24pLGkueSs9YS50b3AsdGhpcy5kcmF3VGl0bGUoaSxlLHQpLHRoaXMuZHJhd0JvZHkoaSxlLHQpLHRoaXMuZHJhd0Zvb3RlcihpLGUsdCksUHIoZSx0LnRleHREaXJlY3Rpb24pLGUucmVzdG9yZSgpKX1nZXRBY3RpdmVFbGVtZW50cygpe3JldHVybiB0aGlzLl9hY3RpdmV8fFtdfXNldEFjdGl2ZUVsZW1lbnRzKGUsdCl7bGV0IG49dGhpcy5fYWN0aXZlLHI9ZS5tYXAoKHtkYXRhc2V0SW5kZXg6ZSxpbmRleDp0fSk9PntsZXQgbj10aGlzLmNoYXJ0LmdldERhdGFzZXRNZXRhKGUpO2lmKCFuKXRocm93IEVycm9yKGBDYW5ub3QgZmluZCBhIGRhdGFzZXQgYXQgaW5kZXggYCtlKTtyZXR1cm57ZGF0YXNldEluZGV4OmUsZWxlbWVudDpuLmRhdGFbdF0saW5kZXg6dH19KSxpPSFWZShuLHIpLGE9dGhpcy5fcG9zaXRpb25DaGFuZ2VkKHIsdCk7KGl8fGEpJiYodGhpcy5fYWN0aXZlPXIsdGhpcy5fZXZlbnRQb3NpdGlvbj10LHRoaXMuX2lnbm9yZVJlcGxheUV2ZW50cz0hMCx0aGlzLnVwZGF0ZSghMCkpfWhhbmRsZUV2ZW50KGUsdCxuPSEwKXtpZih0JiZ0aGlzLl9pZ25vcmVSZXBsYXlFdmVudHMpcmV0dXJuITE7dGhpcy5faWdub3JlUmVwbGF5RXZlbnRzPSExO2xldCByPXRoaXMub3B0aW9ucyxpPXRoaXMuX2FjdGl2ZXx8W10sYT10aGlzLl9nZXRBY3RpdmVFbGVtZW50cyhlLGksdCxuKSxvPXRoaXMuX3Bvc2l0aW9uQ2hhbmdlZChhLGUpLHM9dHx8IVZlKGEsaSl8fG87cmV0dXJuIHMmJih0aGlzLl9hY3RpdmU9YSwoci5lbmFibGVkfHxyLmV4dGVybmFsKSYmKHRoaXMuX2V2ZW50UG9zaXRpb249e3g6ZS54LHk6ZS55fSx0aGlzLnVwZGF0ZSghMCx0KSkpLHN9X2dldEFjdGl2ZUVsZW1lbnRzKGUsdCxuLHIpe2xldCBpPXRoaXMub3B0aW9ucztpZihlLnR5cGU9PT1gbW91c2VvdXRgKXJldHVybltdO2lmKCFyKXJldHVybiB0LmZpbHRlcihlPT50aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbZS5kYXRhc2V0SW5kZXhdJiZ0aGlzLmNoYXJ0LmdldERhdGFzZXRNZXRhKGUuZGF0YXNldEluZGV4KS5jb250cm9sbGVyLmdldFBhcnNlZChlLmluZGV4KSE9PXZvaWQgMCk7bGV0IGE9dGhpcy5jaGFydC5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKGUsaS5tb2RlLGksbik7cmV0dXJuIGkucmV2ZXJzZSYmYS5yZXZlcnNlKCksYX1fcG9zaXRpb25DaGFuZ2VkKGUsdCl7bGV0e2NhcmV0WDpuLGNhcmV0WTpyLG9wdGlvbnM6aX09dGhpcyxhPWpzW2kucG9zaXRpb25dLmNhbGwodGhpcyxlLHQpO3JldHVybiBhIT09ITEmJihuIT09YS54fHxyIT09YS55KX19LHFzPXtpZDpgdG9vbHRpcGAsX2VsZW1lbnQ6S3MscG9zaXRpb25lcnM6anMsYWZ0ZXJJbml0KGUsdCxuKXtuJiYoZS50b29sdGlwPW5ldyBLcyh7Y2hhcnQ6ZSxvcHRpb25zOm59KSl9LGJlZm9yZVVwZGF0ZShlLHQsbil7ZS50b29sdGlwJiZlLnRvb2x0aXAuaW5pdGlhbGl6ZShuKX0scmVzZXQoZSx0LG4pe2UudG9vbHRpcCYmZS50b29sdGlwLmluaXRpYWxpemUobil9LGFmdGVyRHJhdyhlKXtsZXQgdD1lLnRvb2x0aXA7aWYodCYmdC5fd2lsbFJlbmRlcigpKXtsZXQgbj17dG9vbHRpcDp0fTtpZihlLm5vdGlmeVBsdWdpbnMoYGJlZm9yZVRvb2x0aXBEcmF3YCx7Li4ubixjYW5jZWxhYmxlOiEwfSk9PT0hMSlyZXR1cm47dC5kcmF3KGUuY3R4KSxlLm5vdGlmeVBsdWdpbnMoYGFmdGVyVG9vbHRpcERyYXdgLG4pfX0sYWZ0ZXJFdmVudChlLHQpe2lmKGUudG9vbHRpcCl7bGV0IG49dC5yZXBsYXk7ZS50b29sdGlwLmhhbmRsZUV2ZW50KHQuZXZlbnQsbix0LmluQ2hhcnRBcmVhKSYmKHQuY2hhbmdlZD0hMCl9fSxkZWZhdWx0czp7ZW5hYmxlZDohMCxleHRlcm5hbDpudWxsLHBvc2l0aW9uOmBhdmVyYWdlYCxiYWNrZ3JvdW5kQ29sb3I6YHJnYmEoMCwwLDAsMC44KWAsdGl0bGVDb2xvcjpgI2ZmZmAsdGl0bGVGb250Ont3ZWlnaHQ6YGJvbGRgfSx0aXRsZVNwYWNpbmc6Mix0aXRsZU1hcmdpbkJvdHRvbTo2LHRpdGxlQWxpZ246YGxlZnRgLGJvZHlDb2xvcjpgI2ZmZmAsYm9keVNwYWNpbmc6Mixib2R5Rm9udDp7fSxib2R5QWxpZ246YGxlZnRgLGZvb3RlckNvbG9yOmAjZmZmYCxmb290ZXJTcGFjaW5nOjIsZm9vdGVyTWFyZ2luVG9wOjYsZm9vdGVyRm9udDp7d2VpZ2h0OmBib2xkYH0sZm9vdGVyQWxpZ246YGxlZnRgLHBhZGRpbmc6NixjYXJldFBhZGRpbmc6MixjYXJldFNpemU6NSxjb3JuZXJSYWRpdXM6Nixib3hIZWlnaHQ6KGUsdCk9PnQuYm9keUZvbnQuc2l6ZSxib3hXaWR0aDooZSx0KT0+dC5ib2R5Rm9udC5zaXplLG11bHRpS2V5QmFja2dyb3VuZDpgI2ZmZmAsZGlzcGxheUNvbG9yczohMCxib3hQYWRkaW5nOjAsYm9yZGVyQ29sb3I6YHJnYmEoMCwwLDAsMClgLGJvcmRlcldpZHRoOjAsYW5pbWF0aW9uOntkdXJhdGlvbjo0MDAsZWFzaW5nOmBlYXNlT3V0UXVhcnRgfSxhbmltYXRpb25zOntudW1iZXJzOnt0eXBlOmBudW1iZXJgLHByb3BlcnRpZXM6W2B4YCxgeWAsYHdpZHRoYCxgaGVpZ2h0YCxgY2FyZXRYYCxgY2FyZXRZYF19LG9wYWNpdHk6e2Vhc2luZzpgbGluZWFyYCxkdXJhdGlvbjoyMDB9fSxjYWxsYmFja3M6R3N9LGRlZmF1bHRSb3V0ZXM6e2JvZHlGb250OmBmb250YCxmb290ZXJGb250OmBmb250YCx0aXRsZUZvbnQ6YGZvbnRgfSxkZXNjcmlwdG9yczp7X3NjcmlwdGFibGU6ZT0+ZSE9PWBmaWx0ZXJgJiZlIT09YGl0ZW1Tb3J0YCYmZSE9PWBleHRlcm5hbGAsX2luZGV4YWJsZTohMSxjYWxsYmFja3M6e19zY3JpcHRhYmxlOiExLF9pbmRleGFibGU6ITF9LGFuaW1hdGlvbjp7X2ZhbGxiYWNrOiExfSxhbmltYXRpb25zOntfZmFsbGJhY2s6YGFuaW1hdGlvbmB9fSxhZGRpdGlvbmFsT3B0aW9uU2NvcGVzOltgaW50ZXJhY3Rpb25gXX0sSnM9KGUsdCxuLHIpPT4odHlwZW9mIHQ9PWBzdHJpbmdgPyhuPWUucHVzaCh0KS0xLHIudW5zaGlmdCh7aW5kZXg6bixsYWJlbDp0fSkpOmlzTmFOKHQpJiYobj1udWxsKSxuKTtmdW5jdGlvbiBZcyhlLHQsbixyKXtsZXQgaT1lLmluZGV4T2YodCk7cmV0dXJuIGk9PT0tMT9KcyhlLHQsbixyKTppPT09ZS5sYXN0SW5kZXhPZih0KT9pOm59dmFyIFhzPShlLHQpPT5lPT09bnVsbD9udWxsOkgoTWF0aC5yb3VuZChlKSwwLHQpO2Z1bmN0aW9uIFpzKGUpe2xldCB0PXRoaXMuZ2V0TGFiZWxzKCk7cmV0dXJuIGU+PTAmJmU8dC5sZW5ndGg/dFtlXTplfXZhciBRcz1jbGFzcyBleHRlbmRzIEJhe3N0YXRpYyBpZD1gY2F0ZWdvcnlgO3N0YXRpYyBkZWZhdWx0cz17dGlja3M6e2NhbGxiYWNrOlpzfX07Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5fc3RhcnRWYWx1ZT12b2lkIDAsdGhpcy5fdmFsdWVSYW5nZT0wLHRoaXMuX2FkZGVkTGFiZWxzPVtdfWluaXQoZSl7bGV0IHQ9dGhpcy5fYWRkZWRMYWJlbHM7aWYodC5sZW5ndGgpe2xldCBlPXRoaXMuZ2V0TGFiZWxzKCk7Zm9yKGxldHtpbmRleDpuLGxhYmVsOnJ9b2YgdCllW25dPT09ciYmZS5zcGxpY2UobiwxKTt0aGlzLl9hZGRlZExhYmVscz1bXX1zdXBlci5pbml0KGUpfXBhcnNlKGUsdCl7aWYoQShlKSlyZXR1cm4gbnVsbDtsZXQgbj10aGlzLmdldExhYmVscygpO3JldHVybiB0PWlzRmluaXRlKHQpJiZuW3RdPT09ZT90OllzKG4sZSxGKHQsZSksdGhpcy5fYWRkZWRMYWJlbHMpLFhzKHQsbi5sZW5ndGgtMSl9ZGV0ZXJtaW5lRGF0YUxpbWl0cygpe2xldHttaW5EZWZpbmVkOmUsbWF4RGVmaW5lZDp0fT10aGlzLmdldFVzZXJCb3VuZHMoKSx7bWluOm4sbWF4OnJ9PXRoaXMuZ2V0TWluTWF4KCEwKTt0aGlzLm9wdGlvbnMuYm91bmRzPT09YHRpY2tzYCYmKGV8fChuPTApLHR8fChyPXRoaXMuZ2V0TGFiZWxzKCkubGVuZ3RoLTEpKSx0aGlzLm1pbj1uLHRoaXMubWF4PXJ9YnVpbGRUaWNrcygpe2xldCBlPXRoaXMubWluLHQ9dGhpcy5tYXgsbj10aGlzLm9wdGlvbnMub2Zmc2V0LHI9W10saT10aGlzLmdldExhYmVscygpO2k9ZT09PTAmJnQ9PT1pLmxlbmd0aC0xP2k6aS5zbGljZShlLHQrMSksdGhpcy5fdmFsdWVSYW5nZT1NYXRoLm1heChpLmxlbmd0aC0rIW4sMSksdGhpcy5fc3RhcnRWYWx1ZT10aGlzLm1pbi0obj8uNTowKTtmb3IobGV0IG49ZTtuPD10O24rKylyLnB1c2goe3ZhbHVlOm59KTtyZXR1cm4gcn1nZXRMYWJlbEZvclZhbHVlKGUpe3JldHVybiBacy5jYWxsKHRoaXMsZSl9Y29uZmlndXJlKCl7c3VwZXIuY29uZmlndXJlKCksdGhpcy5pc0hvcml6b250YWwoKXx8KHRoaXMuX3JldmVyc2VQaXhlbHM9IXRoaXMuX3JldmVyc2VQaXhlbHMpfWdldFBpeGVsRm9yVmFsdWUoZSl7cmV0dXJuIHR5cGVvZiBlIT1gbnVtYmVyYCYmKGU9dGhpcy5wYXJzZShlKSksZT09PW51bGw/TmFOOnRoaXMuZ2V0UGl4ZWxGb3JEZWNpbWFsKChlLXRoaXMuX3N0YXJ0VmFsdWUpL3RoaXMuX3ZhbHVlUmFuZ2UpfWdldFBpeGVsRm9yVGljayhlKXtsZXQgdD10aGlzLnRpY2tzO3JldHVybiBlPDB8fGU+dC5sZW5ndGgtMT9udWxsOnRoaXMuZ2V0UGl4ZWxGb3JWYWx1ZSh0W2VdLnZhbHVlKX1nZXRWYWx1ZUZvclBpeGVsKGUpe3JldHVybiBNYXRoLnJvdW5kKHRoaXMuX3N0YXJ0VmFsdWUrdGhpcy5nZXREZWNpbWFsRm9yUGl4ZWwoZSkqdGhpcy5fdmFsdWVSYW5nZSl9Z2V0QmFzZVBpeGVsKCl7cmV0dXJuIHRoaXMuYm90dG9tfX07ZnVuY3Rpb24gJHMoZSx0KXtsZXQgbj1bXSx7Ym91bmRzOnIsc3RlcDppLG1pbjphLG1heDpvLHByZWNpc2lvbjpzLGNvdW50OmMsbWF4VGlja3M6bCxtYXhEaWdpdHM6dSxpbmNsdWRlQm91bmRzOmR9PWUsZj1pfHwxLHA9bC0xLHttaW46bSxtYXg6aH09dCxnPSFBKGEpLF89IUEobyksdj0hQShjKSx5PShoLW0pLyh1KzEpLGI9ZHQoKGgtbSkvcC9mKSpmLHgsUyxDLHc7aWYoYjwxZS0xNCYmIWcmJiFfKXJldHVyblt7dmFsdWU6bX0se3ZhbHVlOmh9XTt3PU1hdGguY2VpbChoL2IpLU1hdGguZmxvb3IobS9iKSx3PnAmJihiPWR0KHcqYi9wL2YpKmYpLEEocyl8fCh4PTEwKipzLGI9TWF0aC5jZWlsKGIqeCkveCkscj09PWB0aWNrc2A/KFM9TWF0aC5mbG9vcihtL2IpKmIsQz1NYXRoLmNlaWwoaC9iKSpiKTooUz1tLEM9aCksZyYmXyYmaSYmaHQoKG8tYSkvaSxiLzFlMyk/KHc9TWF0aC5yb3VuZChNYXRoLm1pbigoby1hKS9iLGwpKSxiPShvLWEpL3csUz1hLEM9byk6dj8oUz1nP2E6UyxDPV8/bzpDLHc9Yy0xLGI9KEMtUykvdyk6KHc9KEMtUykvYix3PXV0KHcsTWF0aC5yb3VuZCh3KSxiLzFlMyk/TWF0aC5yb3VuZCh3KTpNYXRoLmNlaWwodykpO2xldCBUPU1hdGgubWF4KHl0KGIpLHl0KFMpKTt4PTEwKiooQShzKT9UOnMpLFM9TWF0aC5yb3VuZChTKngpL3gsQz1NYXRoLnJvdW5kKEMqeCkveDtsZXQgRT0wO2ZvcihnJiYoZCYmUyE9PWE/KG4ucHVzaCh7dmFsdWU6YX0pLFM8YSYmRSsrLHV0KE1hdGgucm91bmQoKFMrRSpiKSp4KS94LGEsZWMoYSx5LGUpKSYmRSsrKTpTPGEmJkUrKyk7RTx3OysrRSl7bGV0IGU9TWF0aC5yb3VuZCgoUytFKmIpKngpL3g7aWYoXyYmZT5vKWJyZWFrO24ucHVzaCh7dmFsdWU6ZX0pfXJldHVybiBfJiZkJiZDIT09bz9uLmxlbmd0aCYmdXQobltuLmxlbmd0aC0xXS52YWx1ZSxvLGVjKG8seSxlKSk/bltuLmxlbmd0aC0xXS52YWx1ZT1vOm4ucHVzaCh7dmFsdWU6b30pOighX3x8Qz09PW8pJiZuLnB1c2goe3ZhbHVlOkN9KSxufWZ1bmN0aW9uIGVjKGUsdCx7aG9yaXpvbnRhbDpuLG1pblJvdGF0aW9uOnJ9KXtsZXQgaT1fdChyKSxhPShuP01hdGguc2luKGkpOk1hdGguY29zKGkpKXx8LjAwMSxvPS43NSp0KihgYCtlKS5sZW5ndGg7cmV0dXJuIE1hdGgubWluKHQvYSxvKX12YXIgdGM9Y2xhc3MgZXh0ZW5kcyBCYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLnN0YXJ0PXZvaWQgMCx0aGlzLmVuZD12b2lkIDAsdGhpcy5fc3RhcnRWYWx1ZT12b2lkIDAsdGhpcy5fZW5kVmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlUmFuZ2U9MH1wYXJzZShlLHQpe3JldHVybiBBKGUpfHwodHlwZW9mIGU9PWBudW1iZXJgfHxlIGluc3RhbmNlb2YgTnVtYmVyKSYmIWlzRmluaXRlKCtlKT9udWxsOitlfWhhbmRsZVRpY2tSYW5nZU9wdGlvbnMoKXtsZXR7YmVnaW5BdFplcm86ZX09dGhpcy5vcHRpb25zLHttaW5EZWZpbmVkOnQsbWF4RGVmaW5lZDpufT10aGlzLmdldFVzZXJCb3VuZHMoKSx7bWluOnIsbWF4Oml9PXRoaXMsYT1lPT5yPXQ/cjplLG89ZT0+aT1uP2k6ZTtpZihlKXtsZXQgZT1sdChyKSx0PWx0KGkpO2U8MCYmdDwwP28oMCk6ZT4wJiZ0PjAmJmEoMCl9aWYocj09PWkpe2xldCB0PWk9PT0wPzE6TWF0aC5hYnMoaSouMDUpO28oaSt0KSxlfHxhKHItdCl9dGhpcy5taW49cix0aGlzLm1heD1pfWdldFRpY2tMaW1pdCgpe2xldHttYXhUaWNrc0xpbWl0OmUsc3RlcFNpemU6dH09dGhpcy5vcHRpb25zLnRpY2tzLG47cmV0dXJuIHQ/KG49TWF0aC5jZWlsKHRoaXMubWF4L3QpLU1hdGguZmxvb3IodGhpcy5taW4vdCkrMSxuPjFlMyYmKGNvbnNvbGUud2Fybihgc2NhbGVzLiR7dGhpcy5pZH0udGlja3Muc3RlcFNpemU6ICR7dH0gd291bGQgcmVzdWx0IGdlbmVyYXRpbmcgdXAgdG8gJHtufSB0aWNrcy4gTGltaXRpbmcgdG8gMTAwMC5gKSxuPTFlMykpOihuPXRoaXMuY29tcHV0ZVRpY2tMaW1pdCgpLGV8fD0xMSksZSYmKG49TWF0aC5taW4oZSxuKSksbn1jb21wdXRlVGlja0xpbWl0KCl7cmV0dXJuIDEvMH1idWlsZFRpY2tzKCl7bGV0IGU9dGhpcy5vcHRpb25zLHQ9ZS50aWNrcyxuPXRoaXMuZ2V0VGlja0xpbWl0KCk7bj1NYXRoLm1heCgyLG4pO2xldCByPSRzKHttYXhUaWNrczpuLGJvdW5kczplLmJvdW5kcyxtaW46ZS5taW4sbWF4OmUubWF4LHByZWNpc2lvbjp0LnByZWNpc2lvbixzdGVwOnQuc3RlcFNpemUsY291bnQ6dC5jb3VudCxtYXhEaWdpdHM6dGhpcy5fbWF4RGlnaXRzKCksaG9yaXpvbnRhbDp0aGlzLmlzSG9yaXpvbnRhbCgpLG1pblJvdGF0aW9uOnQubWluUm90YXRpb258fDAsaW5jbHVkZUJvdW5kczp0LmluY2x1ZGVCb3VuZHMhPT0hMX0sdGhpcy5fcmFuZ2V8fHRoaXMpO3JldHVybiBlLmJvdW5kcz09PWB0aWNrc2AmJmd0KHIsdGhpcyxgdmFsdWVgKSxlLnJldmVyc2U/KHIucmV2ZXJzZSgpLHRoaXMuc3RhcnQ9dGhpcy5tYXgsdGhpcy5lbmQ9dGhpcy5taW4pOih0aGlzLnN0YXJ0PXRoaXMubWluLHRoaXMuZW5kPXRoaXMubWF4KSxyfWNvbmZpZ3VyZSgpe2xldCBlPXRoaXMudGlja3MsdD10aGlzLm1pbixuPXRoaXMubWF4O2lmKHN1cGVyLmNvbmZpZ3VyZSgpLHRoaXMub3B0aW9ucy5vZmZzZXQmJmUubGVuZ3RoKXtsZXQgcj0obi10KS9NYXRoLm1heChlLmxlbmd0aC0xLDEpLzI7dC09cixuKz1yfXRoaXMuX3N0YXJ0VmFsdWU9dCx0aGlzLl9lbmRWYWx1ZT1uLHRoaXMuX3ZhbHVlUmFuZ2U9bi10fWdldExhYmVsRm9yVmFsdWUoZSl7cmV0dXJuIGVuKGUsdGhpcy5jaGFydC5vcHRpb25zLmxvY2FsZSx0aGlzLm9wdGlvbnMudGlja3MuZm9ybWF0KX19LG5jPWNsYXNzIGV4dGVuZHMgdGN7c3RhdGljIGlkPWBsaW5lYXJgO3N0YXRpYyBkZWZhdWx0cz17dGlja3M6e2NhbGxiYWNrOnJuLmZvcm1hdHRlcnMubnVtZXJpY319O2RldGVybWluZURhdGFMaW1pdHMoKXtsZXR7bWluOmUsbWF4OnR9PXRoaXMuZ2V0TWluTWF4KCEwKTt0aGlzLm1pbj1OKGUpP2U6MCx0aGlzLm1heD1OKHQpP3Q6MSx0aGlzLmhhbmRsZVRpY2tSYW5nZU9wdGlvbnMoKX1jb21wdXRlVGlja0xpbWl0KCl7bGV0IGU9dGhpcy5pc0hvcml6b250YWwoKSx0PWU/dGhpcy53aWR0aDp0aGlzLmhlaWdodCxuPV90KHRoaXMub3B0aW9ucy50aWNrcy5taW5Sb3RhdGlvbikscj0oZT9NYXRoLnNpbihuKTpNYXRoLmNvcyhuKSl8fC4wMDEsaT10aGlzLl9yZXNvbHZlVGlja0ZvbnRPcHRpb25zKDApO3JldHVybiBNYXRoLmNlaWwodC9NYXRoLm1pbig0MCxpLmxpbmVIZWlnaHQvcikpfWdldFBpeGVsRm9yVmFsdWUoZSl7cmV0dXJuIGU9PT1udWxsP05hTjp0aGlzLmdldFBpeGVsRm9yRGVjaW1hbCgoZS10aGlzLl9zdGFydFZhbHVlKS90aGlzLl92YWx1ZVJhbmdlKX1nZXRWYWx1ZUZvclBpeGVsKGUpe3JldHVybiB0aGlzLl9zdGFydFZhbHVlK3RoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKGUpKnRoaXMuX3ZhbHVlUmFuZ2V9fSxyYz1lPT5NYXRoLmZsb29yKGN0KGUpKSxpYz0oZSx0KT0+MTAqKihyYyhlKSt0KTtmdW5jdGlvbiBhYyhlKXtyZXR1cm4gZS8xMCoqcmMoZSk9PTF9ZnVuY3Rpb24gb2MoZSx0LG4pe2xldCByPTEwKipuLGk9TWF0aC5mbG9vcihlL3IpO3JldHVybiBNYXRoLmNlaWwodC9yKS1pfWZ1bmN0aW9uIHNjKGUsdCl7bGV0IG49cmModC1lKTtmb3IoO29jKGUsdCxuKT4xMDspbisrO2Zvcig7b2MoZSx0LG4pPDEwOyluLS07cmV0dXJuIE1hdGgubWluKG4scmMoZSkpfWZ1bmN0aW9uIGNjKGUse21pbjp0LG1heDpufSl7dD1QKGUubWluLHQpO2xldCByPVtdLGk9cmModCksYT1zYyh0LG4pLG89YTwwPzEwKipNYXRoLmFicyhhKToxLHM9MTAqKmEsYz1pPmE/MTAqKmk6MCxsPU1hdGgucm91bmQoKHQtYykqbykvbyx1PU1hdGguZmxvb3IoKHQtYykvcy8xMCkqcyoxMCxkPU1hdGguZmxvb3IoKGwtdSkvMTAqKmEpLGY9UChlLm1pbixNYXRoLnJvdW5kKChjK3UrZCoxMCoqYSkqbykvbyk7Zm9yKDtmPG47KXIucHVzaCh7dmFsdWU6ZixtYWpvcjphYyhmKSxzaWduaWZpY2FuZDpkfSksZD49MTA/ZD1kPDE1PzE1OjIwOmQrKyxkPj0yMCYmKGErKyxkPTIsbz1hPj0wPzE6byksZj1NYXRoLnJvdW5kKChjK3UrZCoxMCoqYSkqbykvbztsZXQgcD1QKGUubWF4LGYpO3JldHVybiByLnB1c2goe3ZhbHVlOnAsbWFqb3I6YWMocCksc2lnbmlmaWNhbmQ6ZH0pLHJ9KGNsYXNzIGV4dGVuZHMgQmF7c3RhdGljIGlkPWBsb2dhcml0aG1pY2A7c3RhdGljIGRlZmF1bHRzPXt0aWNrczp7Y2FsbGJhY2s6cm4uZm9ybWF0dGVycy5sb2dhcml0aG1pYyxtYWpvcjp7ZW5hYmxlZDohMH19fTtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLnN0YXJ0PXZvaWQgMCx0aGlzLmVuZD12b2lkIDAsdGhpcy5fc3RhcnRWYWx1ZT12b2lkIDAsdGhpcy5fdmFsdWVSYW5nZT0wfXBhcnNlKGUsdCl7bGV0IG49dGMucHJvdG90eXBlLnBhcnNlLmFwcGx5KHRoaXMsW2UsdF0pO2lmKG49PT0wKXt0aGlzLl96ZXJvPSEwO3JldHVybn1yZXR1cm4gTihuKSYmbj4wP246bnVsbH1kZXRlcm1pbmVEYXRhTGltaXRzKCl7bGV0e21pbjplLG1heDp0fT10aGlzLmdldE1pbk1heCghMCk7dGhpcy5taW49TihlKT9NYXRoLm1heCgwLGUpOm51bGwsdGhpcy5tYXg9Tih0KT9NYXRoLm1heCgwLHQpOm51bGwsdGhpcy5vcHRpb25zLmJlZ2luQXRaZXJvJiYodGhpcy5femVybz0hMCksdGhpcy5femVybyYmdGhpcy5taW4hPT10aGlzLl9zdWdnZXN0ZWRNaW4mJiFOKHRoaXMuX3VzZXJNaW4pJiYodGhpcy5taW49ZT09PWljKHRoaXMubWluLDApP2ljKHRoaXMubWluLC0xKTppYyh0aGlzLm1pbiwwKSksdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl9aGFuZGxlVGlja1JhbmdlT3B0aW9ucygpe2xldHttaW5EZWZpbmVkOmUsbWF4RGVmaW5lZDp0fT10aGlzLmdldFVzZXJCb3VuZHMoKSxuPXRoaXMubWluLHI9dGhpcy5tYXgsaT10PT5uPWU/bjp0LGE9ZT0+cj10P3I6ZTtuPT09ciYmKG48PTA/KGkoMSksYSgxMCkpOihpKGljKG4sLTEpKSxhKGljKHIsMSkpKSksbjw9MCYmaShpYyhyLC0xKSkscjw9MCYmYShpYyhuLDEpKSx0aGlzLm1pbj1uLHRoaXMubWF4PXJ9YnVpbGRUaWNrcygpe2xldCBlPXRoaXMub3B0aW9ucyx0PWNjKHttaW46dGhpcy5fdXNlck1pbixtYXg6dGhpcy5fdXNlck1heH0sdGhpcyk7cmV0dXJuIGUuYm91bmRzPT09YHRpY2tzYCYmZ3QodCx0aGlzLGB2YWx1ZWApLGUucmV2ZXJzZT8odC5yZXZlcnNlKCksdGhpcy5zdGFydD10aGlzLm1heCx0aGlzLmVuZD10aGlzLm1pbik6KHRoaXMuc3RhcnQ9dGhpcy5taW4sdGhpcy5lbmQ9dGhpcy5tYXgpLHR9Z2V0TGFiZWxGb3JWYWx1ZShlKXtyZXR1cm4gZT09PXZvaWQgMD9gMGA6ZW4oZSx0aGlzLmNoYXJ0Lm9wdGlvbnMubG9jYWxlLHRoaXMub3B0aW9ucy50aWNrcy5mb3JtYXQpfWNvbmZpZ3VyZSgpe2xldCBlPXRoaXMubWluO3N1cGVyLmNvbmZpZ3VyZSgpLHRoaXMuX3N0YXJ0VmFsdWU9Y3QoZSksdGhpcy5fdmFsdWVSYW5nZT1jdCh0aGlzLm1heCktY3QoZSl9Z2V0UGl4ZWxGb3JWYWx1ZShlKXtyZXR1cm4oZT09PXZvaWQgMHx8ZT09PTApJiYoZT10aGlzLm1pbiksZT09PW51bGx8fGlzTmFOKGUpP05hTjp0aGlzLmdldFBpeGVsRm9yRGVjaW1hbChlPT09dGhpcy5taW4/MDooY3QoZSktdGhpcy5fc3RhcnRWYWx1ZSkvdGhpcy5fdmFsdWVSYW5nZSl9Z2V0VmFsdWVGb3JQaXhlbChlKXtsZXQgdD10aGlzLmdldERlY2ltYWxGb3JQaXhlbChlKTtyZXR1cm4gMTAqKih0aGlzLl9zdGFydFZhbHVlK3QqdGhpcy5fdmFsdWVSYW5nZSl9fSk7ZnVuY3Rpb24gbGMoZSl7bGV0IHQ9ZS50aWNrcztpZih0LmRpc3BsYXkmJmUuZGlzcGxheSl7bGV0IGU9Syh0LmJhY2tkcm9wUGFkZGluZyk7cmV0dXJuIEYodC5mb250JiZ0LmZvbnQuc2l6ZSxXLmZvbnQuc2l6ZSkrZS5oZWlnaHR9cmV0dXJuIDB9ZnVuY3Rpb24gdWMoZSx0LG4pe3JldHVybiBuPWoobik/bjpbbl0se3c6Zm4oZSx0LnN0cmluZyxuKSxoOm4ubGVuZ3RoKnQubGluZUhlaWdodH19ZnVuY3Rpb24gZGMoZSx0LG4scixpKXtyZXR1cm4gZT09PXJ8fGU9PT1pP3tzdGFydDp0LW4vMixlbmQ6dCtuLzJ9OmU8cnx8ZT5pP3tzdGFydDp0LW4sZW5kOnR9OntzdGFydDp0LGVuZDp0K259fWZ1bmN0aW9uIGZjKGUpe2xldCB0PXtsOmUubGVmdCtlLl9wYWRkaW5nLmxlZnQscjplLnJpZ2h0LWUuX3BhZGRpbmcucmlnaHQsdDplLnRvcCtlLl9wYWRkaW5nLnRvcCxiOmUuYm90dG9tLWUuX3BhZGRpbmcuYm90dG9tfSxuPU9iamVjdC5hc3NpZ24oe30sdCkscj1bXSxpPVtdLGE9ZS5fcG9pbnRMYWJlbHMubGVuZ3RoLG89ZS5vcHRpb25zLnBvaW50TGFiZWxzLHM9by5jZW50ZXJQb2ludExhYmVscz9SL2E6MDtmb3IobGV0IGM9MDtjPGE7YysrKXtsZXQgYT1vLnNldENvbnRleHQoZS5nZXRQb2ludExhYmVsQ29udGV4dChjKSk7aVtjXT1hLnBhZGRpbmc7bGV0IGw9ZS5nZXRQb2ludFBvc2l0aW9uKGMsZS5kcmF3aW5nQXJlYStpW2NdLHMpLHU9cShhLmZvbnQpLGQ9dWMoZS5jdHgsdSxlLl9wb2ludExhYmVsc1tjXSk7cltjXT1kO2xldCBmPVYoZS5nZXRJbmRleEFuZ2xlKGMpK3MpLHA9TWF0aC5yb3VuZCh2dChmKSk7cGMobix0LGYsZGMocCxsLngsZC53LDAsMTgwKSxkYyhwLGwueSxkLmgsOTAsMjcwKSl9ZS5zZXRDZW50ZXJQb2ludCh0Lmwtbi5sLG4uci10LnIsdC50LW4udCxuLmItdC5iKSxlLl9wb2ludExhYmVsSXRlbXM9Z2MoZSxyLGkpfWZ1bmN0aW9uIHBjKGUsdCxuLHIsaSl7bGV0IGE9TWF0aC5hYnMoTWF0aC5zaW4obikpLG89TWF0aC5hYnMoTWF0aC5jb3MobikpLHM9MCxjPTA7ci5zdGFydDx0Lmw/KHM9KHQubC1yLnN0YXJ0KS9hLGUubD1NYXRoLm1pbihlLmwsdC5sLXMpKTpyLmVuZD50LnImJihzPShyLmVuZC10LnIpL2EsZS5yPU1hdGgubWF4KGUucix0LnIrcykpLGkuc3RhcnQ8dC50PyhjPSh0LnQtaS5zdGFydCkvbyxlLnQ9TWF0aC5taW4oZS50LHQudC1jKSk6aS5lbmQ+dC5iJiYoYz0oaS5lbmQtdC5iKS9vLGUuYj1NYXRoLm1heChlLmIsdC5iK2MpKX1mdW5jdGlvbiBtYyhlLHQsbil7bGV0IHI9ZS5kcmF3aW5nQXJlYSx7ZXh0cmE6aSxhZGRpdGlvbmFsQW5nbGU6YSxwYWRkaW5nOm8sc2l6ZTpzfT1uLGM9ZS5nZXRQb2ludFBvc2l0aW9uKHQscitpK28sYSksbD1NYXRoLnJvdW5kKHZ0KFYoYy5hbmdsZStCKSkpLHU9eWMoYy55LHMuaCxsKSxkPV9jKGwpLGY9dmMoYy54LHMudyxkKTtyZXR1cm57dmlzaWJsZTohMCx4OmMueCx5OnUsdGV4dEFsaWduOmQsbGVmdDpmLHRvcDp1LHJpZ2h0OmYrcy53LGJvdHRvbTp1K3MuaH19ZnVuY3Rpb24gaGMoZSx0KXtpZighdClyZXR1cm4hMDtsZXR7bGVmdDpuLHRvcDpyLHJpZ2h0OmksYm90dG9tOmF9PWU7cmV0dXJuIShHKHt4Om4seTpyfSx0KXx8Ryh7eDpuLHk6YX0sdCl8fEcoe3g6aSx5OnJ9LHQpfHxHKHt4OmkseTphfSx0KSl9ZnVuY3Rpb24gZ2MoZSx0LG4pe2xldCByPVtdLGk9ZS5fcG9pbnRMYWJlbHMubGVuZ3RoLGE9ZS5vcHRpb25zLHtjZW50ZXJQb2ludExhYmVsczpvLGRpc3BsYXk6c309YS5wb2ludExhYmVscyxjPXtleHRyYTpsYyhhKS8yLGFkZGl0aW9uYWxBbmdsZTpvP1IvaTowfSxsO2ZvcihsZXQgYT0wO2E8aTthKyspe2MucGFkZGluZz1uW2FdLGMuc2l6ZT10W2FdO2xldCBpPW1jKGUsYSxjKTtyLnB1c2goaSkscz09PWBhdXRvYCYmKGkudmlzaWJsZT1oYyhpLGwpLGkudmlzaWJsZSYmKGw9aSkpfXJldHVybiByfWZ1bmN0aW9uIF9jKGUpe3JldHVybiBlPT09MHx8ZT09PTE4MD9gY2VudGVyYDplPDE4MD9gbGVmdGA6YHJpZ2h0YH1mdW5jdGlvbiB2YyhlLHQsbil7cmV0dXJuIG49PT1gcmlnaHRgP2UtPXQ6bj09PWBjZW50ZXJgJiYoZS09dC8yKSxlfWZ1bmN0aW9uIHljKGUsdCxuKXtyZXR1cm4gbj09PTkwfHxuPT09MjcwP2UtPXQvMjoobj4yNzB8fG48OTApJiYoZS09dCksZX1mdW5jdGlvbiBiYyhlLHQsbil7bGV0e2xlZnQ6cix0b3A6aSxyaWdodDphLGJvdHRvbTpvfT1uLHtiYWNrZHJvcENvbG9yOnN9PXQ7aWYoIUEocykpe2xldCBuPU1uKHQuYm9yZGVyUmFkaXVzKSxjPUsodC5iYWNrZHJvcFBhZGRpbmcpO2UuZmlsbFN0eWxlPXM7bGV0IGw9ci1jLmxlZnQsdT1pLWMudG9wLGQ9YS1yK2Mud2lkdGgsZj1vLWkrYy5oZWlnaHQ7T2JqZWN0LnZhbHVlcyhuKS5zb21lKGU9PmUhPT0wKT8oZS5iZWdpblBhdGgoKSxUbihlLHt4OmwseTp1LHc6ZCxoOmYscmFkaXVzOm59KSxlLmZpbGwoKSk6ZS5maWxsUmVjdChsLHUsZCxmKX19ZnVuY3Rpb24geGMoZSx0KXtsZXR7Y3R4Om4sb3B0aW9uczp7cG9pbnRMYWJlbHM6cn19PWU7Zm9yKGxldCBpPXQtMTtpPj0wO2ktLSl7bGV0IHQ9ZS5fcG9pbnRMYWJlbEl0ZW1zW2ldO2lmKCF0LnZpc2libGUpY29udGludWU7bGV0IGE9ci5zZXRDb250ZXh0KGUuZ2V0UG9pbnRMYWJlbENvbnRleHQoaSkpO2JjKG4sYSx0KTtsZXQgbz1xKGEuZm9udCkse3g6cyx5OmMsdGV4dEFsaWduOmx9PXQ7d24obixlLl9wb2ludExhYmVsc1tpXSxzLGMrby5saW5lSGVpZ2h0LzIsbyx7Y29sb3I6YS5jb2xvcix0ZXh0QWxpZ246bCx0ZXh0QmFzZWxpbmU6YG1pZGRsZWB9KX19ZnVuY3Rpb24gU2MoZSx0LG4scil7bGV0e2N0eDppfT1lO2lmKG4paS5hcmMoZS54Q2VudGVyLGUueUNlbnRlcix0LDAseik7ZWxzZXtsZXQgbj1lLmdldFBvaW50UG9zaXRpb24oMCx0KTtpLm1vdmVUbyhuLngsbi55KTtmb3IobGV0IGE9MTthPHI7YSsrKW49ZS5nZXRQb2ludFBvc2l0aW9uKGEsdCksaS5saW5lVG8obi54LG4ueSl9fWZ1bmN0aW9uIENjKGUsdCxuLHIsaSl7bGV0IGE9ZS5jdHgsbz10LmNpcmN1bGFyLHtjb2xvcjpzLGxpbmVXaWR0aDpjfT10OyFvJiYhcnx8IXN8fCFjfHxuPDB8fChhLnNhdmUoKSxhLnN0cm9rZVN0eWxlPXMsYS5saW5lV2lkdGg9YyxhLnNldExpbmVEYXNoKGkuZGFzaHx8W10pLGEubGluZURhc2hPZmZzZXQ9aS5kYXNoT2Zmc2V0LGEuYmVnaW5QYXRoKCksU2MoZSxuLG8sciksYS5jbG9zZVBhdGgoKSxhLnN0cm9rZSgpLGEucmVzdG9yZSgpKX1mdW5jdGlvbiB3YyhlLHQsbil7cmV0dXJuIEZuKGUse2xhYmVsOm4saW5kZXg6dCx0eXBlOmBwb2ludExhYmVsYH0pfShjbGFzcyBleHRlbmRzIHRje3N0YXRpYyBpZD1gcmFkaWFsTGluZWFyYDtzdGF0aWMgZGVmYXVsdHM9e2Rpc3BsYXk6ITAsYW5pbWF0ZTohMCxwb3NpdGlvbjpgY2hhcnRBcmVhYCxhbmdsZUxpbmVzOntkaXNwbGF5OiEwLGxpbmVXaWR0aDoxLGJvcmRlckRhc2g6W10sYm9yZGVyRGFzaE9mZnNldDowfSxncmlkOntjaXJjdWxhcjohMX0sc3RhcnRBbmdsZTowLHRpY2tzOntzaG93TGFiZWxCYWNrZHJvcDohMCxjYWxsYmFjazpybi5mb3JtYXR0ZXJzLm51bWVyaWN9LHBvaW50TGFiZWxzOntiYWNrZHJvcENvbG9yOnZvaWQgMCxiYWNrZHJvcFBhZGRpbmc6MixkaXNwbGF5OiEwLGZvbnQ6e3NpemU6MTB9LGNhbGxiYWNrKGUpe3JldHVybiBlfSxwYWRkaW5nOjUsY2VudGVyUG9pbnRMYWJlbHM6ITF9fTtzdGF0aWMgZGVmYXVsdFJvdXRlcz17ImFuZ2xlTGluZXMuY29sb3IiOmBib3JkZXJDb2xvcmAsInBvaW50TGFiZWxzLmNvbG9yIjpgY29sb3JgLCJ0aWNrcy5jb2xvciI6YGNvbG9yYH07c3RhdGljIGRlc2NyaXB0b3JzPXthbmdsZUxpbmVzOntfZmFsbGJhY2s6YGdyaWRgfX07Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy54Q2VudGVyPXZvaWQgMCx0aGlzLnlDZW50ZXI9dm9pZCAwLHRoaXMuZHJhd2luZ0FyZWE9dm9pZCAwLHRoaXMuX3BvaW50TGFiZWxzPVtdLHRoaXMuX3BvaW50TGFiZWxJdGVtcz1bXX1zZXREaW1lbnNpb25zKCl7bGV0IGU9dGhpcy5fcGFkZGluZz1LKGxjKHRoaXMub3B0aW9ucykvMiksdD10aGlzLndpZHRoPXRoaXMubWF4V2lkdGgtZS53aWR0aCxuPXRoaXMuaGVpZ2h0PXRoaXMubWF4SGVpZ2h0LWUuaGVpZ2h0O3RoaXMueENlbnRlcj1NYXRoLmZsb29yKHRoaXMubGVmdCt0LzIrZS5sZWZ0KSx0aGlzLnlDZW50ZXI9TWF0aC5mbG9vcih0aGlzLnRvcCtuLzIrZS50b3ApLHRoaXMuZHJhd2luZ0FyZWE9TWF0aC5mbG9vcihNYXRoLm1pbih0LG4pLzIpfWRldGVybWluZURhdGFMaW1pdHMoKXtsZXR7bWluOmUsbWF4OnR9PXRoaXMuZ2V0TWluTWF4KCExKTt0aGlzLm1pbj1OKGUpJiYhaXNOYU4oZSk/ZTowLHRoaXMubWF4PU4odCkmJiFpc05hTih0KT90OjAsdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl9Y29tcHV0ZVRpY2tMaW1pdCgpe3JldHVybiBNYXRoLmNlaWwodGhpcy5kcmF3aW5nQXJlYS9sYyh0aGlzLm9wdGlvbnMpKX1nZW5lcmF0ZVRpY2tMYWJlbHMoZSl7dGMucHJvdG90eXBlLmdlbmVyYXRlVGlja0xhYmVscy5jYWxsKHRoaXMsZSksdGhpcy5fcG9pbnRMYWJlbHM9dGhpcy5nZXRMYWJlbHMoKS5tYXAoKGUsdCk9PntsZXQgbj1JKHRoaXMub3B0aW9ucy5wb2ludExhYmVscy5jYWxsYmFjayxbZSx0XSx0aGlzKTtyZXR1cm4gbnx8bj09PTA/bjpgYH0pLmZpbHRlcigoZSx0KT0+dGhpcy5jaGFydC5nZXREYXRhVmlzaWJpbGl0eSh0KSl9Zml0KCl7bGV0IGU9dGhpcy5vcHRpb25zO2UuZGlzcGxheSYmZS5wb2ludExhYmVscy5kaXNwbGF5P2ZjKHRoaXMpOnRoaXMuc2V0Q2VudGVyUG9pbnQoMCwwLDAsMCl9c2V0Q2VudGVyUG9pbnQoZSx0LG4scil7dGhpcy54Q2VudGVyKz1NYXRoLmZsb29yKChlLXQpLzIpLHRoaXMueUNlbnRlcis9TWF0aC5mbG9vcigobi1yKS8yKSx0aGlzLmRyYXdpbmdBcmVhLT1NYXRoLm1pbih0aGlzLmRyYXdpbmdBcmVhLzIsTWF0aC5tYXgoZSx0LG4scikpfWdldEluZGV4QW5nbGUoZSl7bGV0IHQ9ei8odGhpcy5fcG9pbnRMYWJlbHMubGVuZ3RofHwxKSxuPXRoaXMub3B0aW9ucy5zdGFydEFuZ2xlfHwwO3JldHVybiBWKGUqdCtfdChuKSl9Z2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoZSl7aWYoQShlKSlyZXR1cm4gTmFOO2xldCB0PXRoaXMuZHJhd2luZ0FyZWEvKHRoaXMubWF4LXRoaXMubWluKTtyZXR1cm4gdGhpcy5vcHRpb25zLnJldmVyc2U/KHRoaXMubWF4LWUpKnQ6KGUtdGhpcy5taW4pKnR9Z2V0VmFsdWVGb3JEaXN0YW5jZUZyb21DZW50ZXIoZSl7aWYoQShlKSlyZXR1cm4gTmFOO2xldCB0PWUvKHRoaXMuZHJhd2luZ0FyZWEvKHRoaXMubWF4LXRoaXMubWluKSk7cmV0dXJuIHRoaXMub3B0aW9ucy5yZXZlcnNlP3RoaXMubWF4LXQ6dGhpcy5taW4rdH1nZXRQb2ludExhYmVsQ29udGV4dChlKXtsZXQgdD10aGlzLl9wb2ludExhYmVsc3x8W107aWYoZT49MCYmZTx0Lmxlbmd0aCl7bGV0IG49dFtlXTtyZXR1cm4gd2ModGhpcy5nZXRDb250ZXh0KCksZSxuKX19Z2V0UG9pbnRQb3NpdGlvbihlLHQsbj0wKXtsZXQgcj10aGlzLmdldEluZGV4QW5nbGUoZSktQituO3JldHVybnt4Ok1hdGguY29zKHIpKnQrdGhpcy54Q2VudGVyLHk6TWF0aC5zaW4ocikqdCt0aGlzLnlDZW50ZXIsYW5nbGU6cn19Z2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKGUsdCl7cmV0dXJuIHRoaXMuZ2V0UG9pbnRQb3NpdGlvbihlLHRoaXMuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUodCkpfWdldEJhc2VQb3NpdGlvbihlKXtyZXR1cm4gdGhpcy5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoZXx8MCx0aGlzLmdldEJhc2VWYWx1ZSgpKX1nZXRQb2ludExhYmVsUG9zaXRpb24oZSl7bGV0e2xlZnQ6dCx0b3A6bixyaWdodDpyLGJvdHRvbTppfT10aGlzLl9wb2ludExhYmVsSXRlbXNbZV07cmV0dXJue2xlZnQ6dCx0b3A6bixyaWdodDpyLGJvdHRvbTppfX1kcmF3QmFja2dyb3VuZCgpe2xldHtiYWNrZ3JvdW5kQ29sb3I6ZSxncmlkOntjaXJjdWxhcjp0fX09dGhpcy5vcHRpb25zO2lmKGUpe2xldCBuPXRoaXMuY3R4O24uc2F2ZSgpLG4uYmVnaW5QYXRoKCksU2ModGhpcyx0aGlzLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKHRoaXMuX2VuZFZhbHVlKSx0LHRoaXMuX3BvaW50TGFiZWxzLmxlbmd0aCksbi5jbG9zZVBhdGgoKSxuLmZpbGxTdHlsZT1lLG4uZmlsbCgpLG4ucmVzdG9yZSgpfX1kcmF3R3JpZCgpe2xldCBlPXRoaXMuY3R4LHQ9dGhpcy5vcHRpb25zLHthbmdsZUxpbmVzOm4sZ3JpZDpyLGJvcmRlcjppfT10LGE9dGhpcy5fcG9pbnRMYWJlbHMubGVuZ3RoLG8scyxjO2lmKHQucG9pbnRMYWJlbHMuZGlzcGxheSYmeGModGhpcyxhKSxyLmRpc3BsYXkmJnRoaXMudGlja3MuZm9yRWFjaCgoZSx0KT0+e2lmKHQhPT0wfHx0PT09MCYmdGhpcy5taW48MCl7cz10aGlzLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKGUudmFsdWUpO2xldCBuPXRoaXMuZ2V0Q29udGV4dCh0KSxvPXIuc2V0Q29udGV4dChuKSxjPWkuc2V0Q29udGV4dChuKTtDYyh0aGlzLG8scyxhLGMpfX0pLG4uZGlzcGxheSl7Zm9yKGUuc2F2ZSgpLG89YS0xO28+PTA7by0tKXtsZXQgcj1uLnNldENvbnRleHQodGhpcy5nZXRQb2ludExhYmVsQ29udGV4dChvKSkse2NvbG9yOmksbGluZVdpZHRoOmF9PXI7IWF8fCFpfHwoZS5saW5lV2lkdGg9YSxlLnN0cm9rZVN0eWxlPWksZS5zZXRMaW5lRGFzaChyLmJvcmRlckRhc2gpLGUubGluZURhc2hPZmZzZXQ9ci5ib3JkZXJEYXNoT2Zmc2V0LHM9dGhpcy5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZSh0LnJldmVyc2U/dGhpcy5taW46dGhpcy5tYXgpLGM9dGhpcy5nZXRQb2ludFBvc2l0aW9uKG8scyksZS5iZWdpblBhdGgoKSxlLm1vdmVUbyh0aGlzLnhDZW50ZXIsdGhpcy55Q2VudGVyKSxlLmxpbmVUbyhjLngsYy55KSxlLnN0cm9rZSgpKX1lLnJlc3RvcmUoKX19ZHJhd0JvcmRlcigpe31kcmF3TGFiZWxzKCl7bGV0IGU9dGhpcy5jdHgsdD10aGlzLm9wdGlvbnMsbj10LnRpY2tzO2lmKCFuLmRpc3BsYXkpcmV0dXJuO2xldCByPXRoaXMuZ2V0SW5kZXhBbmdsZSgwKSxpLGE7ZS5zYXZlKCksZS50cmFuc2xhdGUodGhpcy54Q2VudGVyLHRoaXMueUNlbnRlciksZS5yb3RhdGUociksZS50ZXh0QWxpZ249YGNlbnRlcmAsZS50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsdGhpcy50aWNrcy5mb3JFYWNoKChyLG8pPT57aWYobz09PTAmJnRoaXMubWluPj0wJiYhdC5yZXZlcnNlKXJldHVybjtsZXQgcz1uLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KG8pKSxjPXEocy5mb250KTtpZihpPXRoaXMuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUodGhpcy50aWNrc1tvXS52YWx1ZSkscy5zaG93TGFiZWxCYWNrZHJvcCl7ZS5mb250PWMuc3RyaW5nLGE9ZS5tZWFzdXJlVGV4dChyLmxhYmVsKS53aWR0aCxlLmZpbGxTdHlsZT1zLmJhY2tkcm9wQ29sb3I7bGV0IHQ9SyhzLmJhY2tkcm9wUGFkZGluZyk7ZS5maWxsUmVjdCgtYS8yLXQubGVmdCwtaS1jLnNpemUvMi10LnRvcCxhK3Qud2lkdGgsYy5zaXplK3QuaGVpZ2h0KX13bihlLHIubGFiZWwsMCwtaSxjLHtjb2xvcjpzLmNvbG9yLHN0cm9rZUNvbG9yOnMudGV4dFN0cm9rZUNvbG9yLHN0cm9rZVdpZHRoOnMudGV4dFN0cm9rZVdpZHRofSl9KSxlLnJlc3RvcmUoKX1kcmF3VGl0bGUoKXt9fSk7dmFyIFRjPXttaWxsaXNlY29uZDp7Y29tbW9uOiEwLHNpemU6MSxzdGVwczoxZTN9LHNlY29uZDp7Y29tbW9uOiEwLHNpemU6MWUzLHN0ZXBzOjYwfSxtaW51dGU6e2NvbW1vbjohMCxzaXplOjZlNCxzdGVwczo2MH0saG91cjp7Y29tbW9uOiEwLHNpemU6MzZlNSxzdGVwczoyNH0sZGF5Ontjb21tb246ITAsc2l6ZTo4NjRlNSxzdGVwczozMH0sd2Vlazp7Y29tbW9uOiExLHNpemU6NjA0OGU1LHN0ZXBzOjR9LG1vbnRoOntjb21tb246ITAsc2l6ZToyNjI4ZTYsc3RlcHM6MTJ9LHF1YXJ0ZXI6e2NvbW1vbjohMSxzaXplOjc4ODRlNixzdGVwczo0fSx5ZWFyOntjb21tb246ITAsc2l6ZTozMTU0ZTd9fSwkPU9iamVjdC5rZXlzKFRjKTtmdW5jdGlvbiBFYyhlLHQpe3JldHVybiBlLXR9ZnVuY3Rpb24gRGMoZSx0KXtpZihBKHQpKXJldHVybiBudWxsO2xldCBuPWUuX2FkYXB0ZXIse3BhcnNlcjpyLHJvdW5kOmksaXNvV2Vla2RheTphfT1lLl9wYXJzZU9wdHMsbz10O3JldHVybiB0eXBlb2Ygcj09YGZ1bmN0aW9uYCYmKG89cihvKSksTihvKXx8KG89dHlwZW9mIHI9PWBzdHJpbmdgP24ucGFyc2UobyxyKTpuLnBhcnNlKG8pKSxvPT09bnVsbD9udWxsOihpJiYobz1pPT09YHdlZWtgJiYobXQoYSl8fGE9PT0hMCk/bi5zdGFydE9mKG8sYGlzb1dlZWtgLGEpOm4uc3RhcnRPZihvLGkpKSwrbyl9ZnVuY3Rpb24gT2MoZSx0LG4scil7bGV0IGk9JC5sZW5ndGg7Zm9yKGxldCBhPSQuaW5kZXhPZihlKTthPGktMTsrK2Epe2xldCBlPVRjWyRbYV1dLGk9ZS5zdGVwcz9lLnN0ZXBzOjIqKjUzLTE7aWYoZS5jb21tb24mJk1hdGguY2VpbCgobi10KS8oaSplLnNpemUpKTw9cilyZXR1cm4gJFthXX1yZXR1cm4gJFtpLTFdfWZ1bmN0aW9uIGtjKGUsdCxuLHIsaSl7Zm9yKGxldCBhPSQubGVuZ3RoLTE7YT49JC5pbmRleE9mKG4pO2EtLSl7bGV0IG49JFthXTtpZihUY1tuXS5jb21tb24mJmUuX2FkYXB0ZXIuZGlmZihpLHIsbik+PXQtMSlyZXR1cm4gbn1yZXR1cm4gJFtuPyQuaW5kZXhPZihuKTowXX1mdW5jdGlvbiBBYyhlKXtmb3IobGV0IHQ9JC5pbmRleE9mKGUpKzEsbj0kLmxlbmd0aDt0PG47Kyt0KWlmKFRjWyRbdF1dLmNvbW1vbilyZXR1cm4gJFt0XX1mdW5jdGlvbiBqYyhlLHQsbil7aWYoIW4pZVt0XT0hMDtlbHNlIGlmKG4ubGVuZ3RoKXtsZXR7bG86cixoaTppfT1FdChuLHQpLGE9bltyXT49dD9uW3JdOm5baV07ZVthXT0hMH19ZnVuY3Rpb24gTWMoZSx0LG4scil7bGV0IGk9ZS5fYWRhcHRlcixhPStpLnN0YXJ0T2YodFswXS52YWx1ZSxyKSxvPXRbdC5sZW5ndGgtMV0udmFsdWUscyxjO2ZvcihzPWE7czw9bztzPStpLmFkZChzLDEscikpYz1uW3NdLGM+PTAmJih0W2NdLm1ham9yPSEwKTtyZXR1cm4gdH1mdW5jdGlvbiBOYyhlLHQsbil7bGV0IHI9W10saT17fSxhPXQubGVuZ3RoLG8scztmb3Iobz0wO288YTsrK28pcz10W29dLGlbc109byxyLnB1c2goe3ZhbHVlOnMsbWFqb3I6ITF9KTtyZXR1cm4gYT09PTB8fCFuP3I6TWMoZSxyLGksbil9dmFyIFBjPWNsYXNzIGV4dGVuZHMgQmF7c3RhdGljIGlkPWB0aW1lYDtzdGF0aWMgZGVmYXVsdHM9e2JvdW5kczpgZGF0YWAsYWRhcHRlcnM6e30sdGltZTp7cGFyc2VyOiExLHVuaXQ6ITEscm91bmQ6ITEsaXNvV2Vla2RheTohMSxtaW5Vbml0OmBtaWxsaXNlY29uZGAsZGlzcGxheUZvcm1hdHM6e319LHRpY2tzOntzb3VyY2U6YGF1dG9gLGNhbGxiYWNrOiExLG1ham9yOntlbmFibGVkOiExfX19O2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMuX2NhY2hlPXtkYXRhOltdLGxhYmVsczpbXSxhbGw6W119LHRoaXMuX3VuaXQ9YGRheWAsdGhpcy5fbWFqb3JVbml0PXZvaWQgMCx0aGlzLl9vZmZzZXRzPXt9LHRoaXMuX25vcm1hbGl6ZWQ9ITEsdGhpcy5fcGFyc2VPcHRzPXZvaWQgMH1pbml0KGUsdD17fSl7bGV0IG49ZS50aW1lfHw9e30scj10aGlzLl9hZGFwdGVyPW5ldyB3aS5fZGF0ZShlLmFkYXB0ZXJzLmRhdGUpO3IuaW5pdCh0KSxLZShuLmRpc3BsYXlGb3JtYXRzLHIuZm9ybWF0cygpKSx0aGlzLl9wYXJzZU9wdHM9e3BhcnNlcjpuLnBhcnNlcixyb3VuZDpuLnJvdW5kLGlzb1dlZWtkYXk6bi5pc29XZWVrZGF5fSxzdXBlci5pbml0KGUpLHRoaXMuX25vcm1hbGl6ZWQ9dC5ub3JtYWxpemVkfXBhcnNlKGUsdCl7cmV0dXJuIGU9PT12b2lkIDA/bnVsbDpEYyh0aGlzLGUpfWJlZm9yZUxheW91dCgpe3N1cGVyLmJlZm9yZUxheW91dCgpLHRoaXMuX2NhY2hlPXtkYXRhOltdLGxhYmVsczpbXSxhbGw6W119fWRldGVybWluZURhdGFMaW1pdHMoKXtsZXQgZT10aGlzLm9wdGlvbnMsdD10aGlzLl9hZGFwdGVyLG49ZS50aW1lLnVuaXR8fGBkYXlgLHttaW46cixtYXg6aSxtaW5EZWZpbmVkOmEsbWF4RGVmaW5lZDpvfT10aGlzLmdldFVzZXJCb3VuZHMoKTtmdW5jdGlvbiBzKGUpeyFhJiYhaXNOYU4oZS5taW4pJiYocj1NYXRoLm1pbihyLGUubWluKSksIW8mJiFpc05hTihlLm1heCkmJihpPU1hdGgubWF4KGksZS5tYXgpKX0oIWF8fCFvKSYmKHModGhpcy5fZ2V0TGFiZWxCb3VuZHMoKSksKGUuYm91bmRzIT09YHRpY2tzYHx8ZS50aWNrcy5zb3VyY2UhPT1gbGFiZWxzYCkmJnModGhpcy5nZXRNaW5NYXgoITEpKSkscj1OKHIpJiYhaXNOYU4ocik/cjordC5zdGFydE9mKERhdGUubm93KCksbiksaT1OKGkpJiYhaXNOYU4oaSk/aTordC5lbmRPZihEYXRlLm5vdygpLG4pKzEsdGhpcy5taW49TWF0aC5taW4ocixpLTEpLHRoaXMubWF4PU1hdGgubWF4KHIrMSxpKX1fZ2V0TGFiZWxCb3VuZHMoKXtsZXQgZT10aGlzLmdldExhYmVsVGltZXN0YW1wcygpLHQ9MS8wLG49LTEvMDtyZXR1cm4gZS5sZW5ndGgmJih0PWVbMF0sbj1lW2UubGVuZ3RoLTFdKSx7bWluOnQsbWF4Om59fWJ1aWxkVGlja3MoKXtsZXQgZT10aGlzLm9wdGlvbnMsdD1lLnRpbWUsbj1lLnRpY2tzLHI9bi5zb3VyY2U9PT1gbGFiZWxzYD90aGlzLmdldExhYmVsVGltZXN0YW1wcygpOnRoaXMuX2dlbmVyYXRlKCk7ZS5ib3VuZHM9PT1gdGlja3NgJiZyLmxlbmd0aCYmKHRoaXMubWluPXRoaXMuX3VzZXJNaW58fHJbMF0sdGhpcy5tYXg9dGhpcy5fdXNlck1heHx8cltyLmxlbmd0aC0xXSk7bGV0IGk9dGhpcy5taW4sYT10aGlzLm1heCxvPWt0KHIsaSxhKTtyZXR1cm4gdGhpcy5fdW5pdD10LnVuaXR8fChuLmF1dG9Ta2lwP09jKHQubWluVW5pdCx0aGlzLm1pbix0aGlzLm1heCx0aGlzLl9nZXRMYWJlbENhcGFjaXR5KGkpKTprYyh0aGlzLG8ubGVuZ3RoLHQubWluVW5pdCx0aGlzLm1pbix0aGlzLm1heCkpLHRoaXMuX21ham9yVW5pdD0hbi5tYWpvci5lbmFibGVkfHx0aGlzLl91bml0PT09YHllYXJgP3ZvaWQgMDpBYyh0aGlzLl91bml0KSx0aGlzLmluaXRPZmZzZXRzKHIpLGUucmV2ZXJzZSYmby5yZXZlcnNlKCksTmModGhpcyxvLHRoaXMuX21ham9yVW5pdCl9YWZ0ZXJBdXRvU2tpcCgpe3RoaXMub3B0aW9ucy5vZmZzZXRBZnRlckF1dG9za2lwJiZ0aGlzLmluaXRPZmZzZXRzKHRoaXMudGlja3MubWFwKGU9PitlLnZhbHVlKSl9aW5pdE9mZnNldHMoZT1bXSl7bGV0IHQ9MCxuPTAscixpO3RoaXMub3B0aW9ucy5vZmZzZXQmJmUubGVuZ3RoJiYocj10aGlzLmdldERlY2ltYWxGb3JWYWx1ZShlWzBdKSx0PWUubGVuZ3RoPT09MT8xLXI6KHRoaXMuZ2V0RGVjaW1hbEZvclZhbHVlKGVbMV0pLXIpLzIsaT10aGlzLmdldERlY2ltYWxGb3JWYWx1ZShlW2UubGVuZ3RoLTFdKSxuPWUubGVuZ3RoPT09MT9pOihpLXRoaXMuZ2V0RGVjaW1hbEZvclZhbHVlKGVbZS5sZW5ndGgtMl0pKS8yKTtsZXQgYT1lLmxlbmd0aDwzPy41Oi4yNTt0PUgodCwwLGEpLG49SChuLDAsYSksdGhpcy5fb2Zmc2V0cz17c3RhcnQ6dCxlbmQ6bixmYWN0b3I6MS8odCsxK24pfX1fZ2VuZXJhdGUoKXtsZXQgZT10aGlzLl9hZGFwdGVyLHQ9dGhpcy5taW4sbj10aGlzLm1heCxyPXRoaXMub3B0aW9ucyxpPXIudGltZSxhPWkudW5pdHx8T2MoaS5taW5Vbml0LHQsbix0aGlzLl9nZXRMYWJlbENhcGFjaXR5KHQpKSxvPUYoci50aWNrcy5zdGVwU2l6ZSwxKSxzPWE9PT1gd2Vla2AmJmkuaXNvV2Vla2RheSxjPW10KHMpfHxzPT09ITAsbD17fSx1PXQsZCxmO2lmKGMmJih1PStlLnN0YXJ0T2YodSxgaXNvV2Vla2AscykpLHU9K2Uuc3RhcnRPZih1LGM/YGRheWA6YSksZS5kaWZmKG4sdCxhKT4xZTUqbyl0aHJvdyBFcnJvcih0K2AgYW5kIGArbitgIGFyZSB0b28gZmFyIGFwYXJ0IHdpdGggc3RlcFNpemUgb2YgYCtvK2AgYCthKTtsZXQgcD1yLnRpY2tzLnNvdXJjZT09PWBkYXRhYCYmdGhpcy5nZXREYXRhVGltZXN0YW1wcygpO2ZvcihkPXUsZj0wO2Q8bjtkPStlLmFkZChkLG8sYSksZisrKWpjKGwsZCxwKTtyZXR1cm4oZD09PW58fHIuYm91bmRzPT09YHRpY2tzYHx8Zj09PTEpJiZqYyhsLGQscCksT2JqZWN0LmtleXMobCkuc29ydChFYykubWFwKGU9PitlKX1nZXRMYWJlbEZvclZhbHVlKGUpe2xldCB0PXRoaXMuX2FkYXB0ZXIsbj10aGlzLm9wdGlvbnMudGltZTtyZXR1cm4gbi50b29sdGlwRm9ybWF0P3QuZm9ybWF0KGUsbi50b29sdGlwRm9ybWF0KTp0LmZvcm1hdChlLG4uZGlzcGxheUZvcm1hdHMuZGF0ZXRpbWUpfWZvcm1hdChlLHQpe2xldCBuPXRoaXMub3B0aW9ucy50aW1lLmRpc3BsYXlGb3JtYXRzLHI9dGhpcy5fdW5pdCxpPXR8fG5bcl07cmV0dXJuIHRoaXMuX2FkYXB0ZXIuZm9ybWF0KGUsaSl9X3RpY2tGb3JtYXRGdW5jdGlvbihlLHQsbixyKXtsZXQgaT10aGlzLm9wdGlvbnMsYT1pLnRpY2tzLmNhbGxiYWNrO2lmKGEpcmV0dXJuIEkoYSxbZSx0LG5dLHRoaXMpO2xldCBvPWkudGltZS5kaXNwbGF5Rm9ybWF0cyxzPXRoaXMuX3VuaXQsYz10aGlzLl9tYWpvclVuaXQsbD1zJiZvW3NdLHU9YyYmb1tjXSxkPW5bdF0sZj1jJiZ1JiZkJiZkLm1ham9yO3JldHVybiB0aGlzLl9hZGFwdGVyLmZvcm1hdChlLHJ8fChmP3U6bCkpfWdlbmVyYXRlVGlja0xhYmVscyhlKXtsZXQgdCxuLHI7Zm9yKHQ9MCxuPWUubGVuZ3RoO3Q8bjsrK3Qpcj1lW3RdLHIubGFiZWw9dGhpcy5fdGlja0Zvcm1hdEZ1bmN0aW9uKHIudmFsdWUsdCxlKX1nZXREZWNpbWFsRm9yVmFsdWUoZSl7cmV0dXJuIGU9PT1udWxsP05hTjooZS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKX1nZXRQaXhlbEZvclZhbHVlKGUpe2xldCB0PXRoaXMuX29mZnNldHMsbj10aGlzLmdldERlY2ltYWxGb3JWYWx1ZShlKTtyZXR1cm4gdGhpcy5nZXRQaXhlbEZvckRlY2ltYWwoKHQuc3RhcnQrbikqdC5mYWN0b3IpfWdldFZhbHVlRm9yUGl4ZWwoZSl7bGV0IHQ9dGhpcy5fb2Zmc2V0cyxuPXRoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKGUpL3QuZmFjdG9yLXQuZW5kO3JldHVybiB0aGlzLm1pbituKih0aGlzLm1heC10aGlzLm1pbil9X2dldExhYmVsU2l6ZShlKXtsZXQgdD10aGlzLm9wdGlvbnMudGlja3Msbj10aGlzLmN0eC5tZWFzdXJlVGV4dChlKS53aWR0aCxyPV90KHRoaXMuaXNIb3Jpem9udGFsKCk/dC5tYXhSb3RhdGlvbjp0Lm1pblJvdGF0aW9uKSxpPU1hdGguY29zKHIpLGE9TWF0aC5zaW4ociksbz10aGlzLl9yZXNvbHZlVGlja0ZvbnRPcHRpb25zKDApLnNpemU7cmV0dXJue3c6bippK28qYSxoOm4qYStvKml9fV9nZXRMYWJlbENhcGFjaXR5KGUpe2xldCB0PXRoaXMub3B0aW9ucy50aW1lLG49dC5kaXNwbGF5Rm9ybWF0cyxyPW5bdC51bml0XXx8bi5taWxsaXNlY29uZCxpPXRoaXMuX3RpY2tGb3JtYXRGdW5jdGlvbihlLDAsTmModGhpcyxbZV0sdGhpcy5fbWFqb3JVbml0KSxyKSxhPXRoaXMuX2dldExhYmVsU2l6ZShpKSxvPU1hdGguZmxvb3IodGhpcy5pc0hvcml6b250YWwoKT90aGlzLndpZHRoL2Eudzp0aGlzLmhlaWdodC9hLmgpLTE7cmV0dXJuIG8+MD9vOjF9Z2V0RGF0YVRpbWVzdGFtcHMoKXtsZXQgZT10aGlzLl9jYWNoZS5kYXRhfHxbXSx0LG47aWYoZS5sZW5ndGgpcmV0dXJuIGU7bGV0IHI9dGhpcy5nZXRNYXRjaGluZ1Zpc2libGVNZXRhcygpO2lmKHRoaXMuX25vcm1hbGl6ZWQmJnIubGVuZ3RoKXJldHVybiB0aGlzLl9jYWNoZS5kYXRhPXJbMF0uY29udHJvbGxlci5nZXRBbGxQYXJzZWRWYWx1ZXModGhpcyk7Zm9yKHQ9MCxuPXIubGVuZ3RoO3Q8bjsrK3QpZT1lLmNvbmNhdChyW3RdLmNvbnRyb2xsZXIuZ2V0QWxsUGFyc2VkVmFsdWVzKHRoaXMpKTtyZXR1cm4gdGhpcy5fY2FjaGUuZGF0YT10aGlzLm5vcm1hbGl6ZShlKX1nZXRMYWJlbFRpbWVzdGFtcHMoKXtsZXQgZT10aGlzLl9jYWNoZS5sYWJlbHN8fFtdLHQsbjtpZihlLmxlbmd0aClyZXR1cm4gZTtsZXQgcj10aGlzLmdldExhYmVscygpO2Zvcih0PTAsbj1yLmxlbmd0aDt0PG47Kyt0KWUucHVzaChEYyh0aGlzLHJbdF0pKTtyZXR1cm4gdGhpcy5fY2FjaGUubGFiZWxzPXRoaXMuX25vcm1hbGl6ZWQ/ZTp0aGlzLm5vcm1hbGl6ZShlKX1ub3JtYWxpemUoZSl7cmV0dXJuIE50KGUuc29ydChFYykpfX07ZnVuY3Rpb24gRmMoZSx0LG4pe2xldCByPTAsaT1lLmxlbmd0aC0xLGEsbyxzLGM7bj8odD49ZVtyXS5wb3MmJnQ8PWVbaV0ucG9zJiYoe2xvOnIsaGk6aX09RHQoZSxgcG9zYCx0KSkse3BvczphLHRpbWU6c309ZVtyXSx7cG9zOm8sdGltZTpjfT1lW2ldKToodD49ZVtyXS50aW1lJiZ0PD1lW2ldLnRpbWUmJih7bG86cixoaTppfT1EdChlLGB0aW1lYCx0KSkse3RpbWU6YSxwb3M6c309ZVtyXSx7dGltZTpvLHBvczpjfT1lW2ldKTtsZXQgbD1vLWE7cmV0dXJuIGw/cysoYy1zKSoodC1hKS9sOnN9KGNsYXNzIGV4dGVuZHMgUGN7c3RhdGljIGlkPWB0aW1lc2VyaWVzYDtzdGF0aWMgZGVmYXVsdHM9UGMuZGVmYXVsdHM7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5fdGFibGU9W10sdGhpcy5fbWluUG9zPXZvaWQgMCx0aGlzLl90YWJsZVJhbmdlPXZvaWQgMH1pbml0T2Zmc2V0cygpe2xldCBlPXRoaXMuX2dldFRpbWVzdGFtcHNGb3JUYWJsZSgpLHQ9dGhpcy5fdGFibGU9dGhpcy5idWlsZExvb2t1cFRhYmxlKGUpO3RoaXMuX21pblBvcz1GYyh0LHRoaXMubWluKSx0aGlzLl90YWJsZVJhbmdlPUZjKHQsdGhpcy5tYXgpLXRoaXMuX21pblBvcyxzdXBlci5pbml0T2Zmc2V0cyhlKX1idWlsZExvb2t1cFRhYmxlKGUpe2xldHttaW46dCxtYXg6bn09dGhpcyxyPVtdLGk9W10sYSxvLHMsYyxsO2ZvcihhPTAsbz1lLmxlbmd0aDthPG87KythKWM9ZVthXSxjPj10JiZjPD1uJiZyLnB1c2goYyk7aWYoci5sZW5ndGg8MilyZXR1cm5be3RpbWU6dCxwb3M6MH0se3RpbWU6bixwb3M6MX1dO2ZvcihhPTAsbz1yLmxlbmd0aDthPG87KythKWw9clthKzFdLHM9clthLTFdLGM9clthXSxNYXRoLnJvdW5kKChsK3MpLzIpIT09YyYmaS5wdXNoKHt0aW1lOmMscG9zOmEvKG8tMSl9KTtyZXR1cm4gaX1fZ2VuZXJhdGUoKXtsZXQgZT10aGlzLm1pbix0PXRoaXMubWF4LG49c3VwZXIuZ2V0RGF0YVRpbWVzdGFtcHMoKTtyZXR1cm4oIW4uaW5jbHVkZXMoZSl8fCFuLmxlbmd0aCkmJm4uc3BsaWNlKDAsMCxlKSwoIW4uaW5jbHVkZXModCl8fG4ubGVuZ3RoPT09MSkmJm4ucHVzaCh0KSxuLnNvcnQoKGUsdCk9PmUtdCl9X2dldFRpbWVzdGFtcHNGb3JUYWJsZSgpe2xldCBlPXRoaXMuX2NhY2hlLmFsbHx8W107aWYoZS5sZW5ndGgpcmV0dXJuIGU7bGV0IHQ9dGhpcy5nZXREYXRhVGltZXN0YW1wcygpLG49dGhpcy5nZXRMYWJlbFRpbWVzdGFtcHMoKTtyZXR1cm4gZT10Lmxlbmd0aCYmbi5sZW5ndGg/dGhpcy5ub3JtYWxpemUodC5jb25jYXQobikpOnQubGVuZ3RoP3Q6bixlPXRoaXMuX2NhY2hlLmFsbD1lLGV9Z2V0RGVjaW1hbEZvclZhbHVlKGUpe3JldHVybihGYyh0aGlzLl90YWJsZSxlKS10aGlzLl9taW5Qb3MpL3RoaXMuX3RhYmxlUmFuZ2V9Z2V0VmFsdWVGb3JQaXhlbChlKXtsZXQgdD10aGlzLl9vZmZzZXRzLG49dGhpcy5nZXREZWNpbWFsRm9yUGl4ZWwoZSkvdC5mYWN0b3ItdC5lbmQ7cmV0dXJuIEZjKHRoaXMuX3RhYmxlLG4qdGhpcy5fdGFibGVSYW5nZSt0aGlzLl9taW5Qb3MsITApfX0pO3ZhciBJYz17ZGF0YTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LG9wdGlvbnM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pih7fSl9LHBsdWdpbnM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGRhdGFzZXRJZEtleTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpgbGFiZWxgfSx1cGRhdGVNb2RlOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMH19LExjPXthcmlhTGFiZWw6e3R5cGU6U3RyaW5nfSxhcmlhRGVzY3JpYmVkYnk6e3R5cGU6U3RyaW5nfX0sUmM9e3R5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxkZXN0cm95RGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sLi4uSWMsLi4uTGN9LHpjPShlLHQpPT5PYmplY3QuYXNzaWduKGUsdCk7ZnVuY3Rpb24gQmMoZSl7cmV0dXJuIHMoZSk/ZChlKTplfWZ1bmN0aW9uIFZjKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTplO3JldHVybiBzKHQpP25ldyBQcm94eShlLHt9KTplfWZ1bmN0aW9uIEhjKGUsdCl7bGV0IG49ZS5vcHRpb25zO24mJnQmJk9iamVjdC5hc3NpZ24obix0KX1mdW5jdGlvbiBVYyhlLHQpe2UubGFiZWxzPXR9ZnVuY3Rpb24gV2MoZSx0LG4pe2xldCByPVtdO2UuZGF0YXNldHM9dC5tYXAodD0+e2xldCBpPWUuZGF0YXNldHMuZmluZChlPT5lW25dPT09dFtuXSk7cmV0dXJuIWl8fCF0LmRhdGF8fHIuaW5jbHVkZXMoaSk/ey4uLnR9OihyLnB1c2goaSksT2JqZWN0LmFzc2lnbihpLHQpLGkpfSl9ZnVuY3Rpb24gR2MoZSx0KXtsZXQgbj17bGFiZWxzOltdLGRhdGFzZXRzOltdfTtyZXR1cm4gVWMobixlLmxhYmVscyksV2MobixlLmRhdGFzZXRzLHQpLG59dmFyIEtjPWMoe3Byb3BzOlJjLHNldHVwKHQscil7bGV0e2V4cG9zZTppLHNsb3RzOnN9PXIsYz12KG51bGwpLGw9ZyhudWxsKTtpKHtjaGFydDpsfSk7bGV0IHU9KCk9PntpZighYy52YWx1ZSlyZXR1cm47bGV0e3R5cGU6ZSxkYXRhOm4sb3B0aW9uczpyLHBsdWdpbnM6aSxkYXRhc2V0SWRLZXk6YX09dCxvPVZjKEdjKG4sYSksbik7bC52YWx1ZT1uZXcgT28oYy52YWx1ZSx7dHlwZTplLGRhdGE6byxvcHRpb25zOnsuLi5yfSxwbHVnaW5zOml9KX0scD0oKT0+e2xldCBlPWQobC52YWx1ZSk7ZSYmKHQuZGVzdHJveURlbGF5PjA/c2V0VGltZW91dCgoKT0+e2UuZGVzdHJveSgpLGwudmFsdWU9bnVsbH0sdC5kZXN0cm95RGVsYXkpOihlLmRlc3Ryb3koKSxsLnZhbHVlPW51bGwpKX0sbT1lPT57ZS51cGRhdGUodC51cGRhdGVNb2RlKX07cmV0dXJuIG8odSksZihwKSxlKFsoKT0+dC5vcHRpb25zLCgpPT50LmRhdGFdLChlLG4pPT57bGV0W3IsaV09ZSxbbyxzXT1uLGM9ZChsLnZhbHVlKTtpZighYylyZXR1cm47bGV0IHU9ITE7aWYocil7bGV0IGU9QmMociksdD1CYyhvKTtlJiZlIT09dCYmKEhjKGMsZSksdT0hMCl9aWYoaSl7bGV0IGU9QmMoaS5sYWJlbHMpLG49QmMocy5sYWJlbHMpLHI9QmMoaS5kYXRhc2V0cyksYT1CYyhzLmRhdGFzZXRzKTtlIT09biYmKFVjKGMuY29uZmlnLmRhdGEsZSksdT0hMCksciYmciE9PWEmJihXYyhjLmNvbmZpZy5kYXRhLHIsdC5kYXRhc2V0SWRLZXkpLHU9ITApfXUmJmEoKCk9PnttKGMpfSl9LHtkZWVwOiEwfSksKCk9Pm4oYGNhbnZhc2Ase3JvbGU6YGltZ2AsImFyaWEtbGFiZWwiOnQuYXJpYUxhYmVsLCJhcmlhLWRlc2NyaWJlZGJ5Ijp0LmFyaWFEZXNjcmliZWRieSxyZWY6Y30sW24oYHBgLHt9LFtzLmRlZmF1bHQ/cy5kZWZhdWx0KCk6YGBdKV0pfX0pO2Z1bmN0aW9uIHFjKHQscil7cmV0dXJuIE9vLnJlZ2lzdGVyKHIpLGMoe3Byb3BzOkljLHNldHVwKHIsaSl7bGV0e2V4cG9zZTphfT1pLG89ZyhudWxsKSxzPWcobnVsbCk7ZSgoKT0+cy52YWx1ZT8uY2hhcnQ/P251bGwsZT0+e28udmFsdWU9ZX0se2ZsdXNoOmBzeW5jYH0pLGEoe2NoYXJ0Om99KTtsZXQgYz1lPT57cy52YWx1ZT1lfTtyZXR1cm4oKT0+bihLYyx6Yyh7cmVmOmN9LHt0eXBlOnQsLi4ucn0pKX19KX12YXIgSmM9cWMoYGxpbmVgLFNpKTtPby5yZWdpc3RlcihRcyxuYyxBcyxxcyxTaSxIbyxXbyx4cyk7ZnVuY3Rpb24gWWMoKXtsZXQgZT12KGBgKSxuPXYoYGApLHI9dihgYCk7ZnVuY3Rpb24gaSgpe2xldCB0PWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtlLnZhbHVlPXQuZ2V0UHJvcGVydHlWYWx1ZShgLS1mb3JlZ3JvdW5kYCkudHJpbSgpLG4udmFsdWU9dC5nZXRQcm9wZXJ0eVZhbHVlKGAtLW11dGVkLWZvcmVncm91bmRgKS50cmltKCksci52YWx1ZT10LmdldFByb3BlcnR5VmFsdWUoYC0tYm9yZGVyYCkudHJpbSgpfWxldCBhO3JldHVybiBvKCgpPT57aSgpLGE9d2luZG93Lm1hdGNoTWVkaWEoYChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylgKSxhLmFkZEV2ZW50TGlzdGVuZXIoYGNoYW5nZWAsaSl9KSx0KCgpPT57YT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCxpKX0pLHtmb3JlZ3JvdW5kOmUsbXV0ZWRGb3JlZ3JvdW5kOm4sYm9yZGVyOnJ9fXZhciBYYz1bYGFyaWEtbGFiZWxgXSxaYz1jKHtfX25hbWU6YFRpbWVTZXJpZXNDaGFydGAscHJvcHM6e2xhYmVsczp7fSxkYXRhc2V0czp7fSxjb21wYXJpc29uRGF0YXNldHM6e2RlZmF1bHQ6KCk9PltdfSxzdGFja2VkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdmFsdWVGb3JtYXR0ZXI6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDpifSxhcmlhTGFiZWw6e319LHNldHVwKGUpe2xldCB0PWUsbj1gdGltZXNlcmllcy1jaGFydC1kZXNjLSR7aSgpfWAsYT1oKCgpPT50LmRhdGFzZXRzLmxlbmd0aD09PTB8fHQubGFiZWxzLmxlbmd0aD09PTA/YE5vIGRhdGEgZm9yIHRoaXMgcmFuZ2UuYDp0LmRhdGFzZXRzLm1hcChlPT57bGV0IG49ZS5kYXRhLmxlbmd0aD4wP2UuZGF0YVtlLmRhdGEubGVuZ3RoLTFdOjAscj1lLmRhdGEucmVkdWNlKChlLHQpPT5lK3QsMCk7cmV0dXJuYCR7ZS5sYWJlbH06IGxhdGVzdCAke3QudmFsdWVGb3JtYXR0ZXIobil9LCB0b3RhbCAke3QudmFsdWVGb3JtYXR0ZXIocil9IG92ZXIgJHt0LmxhYmVscy5sZW5ndGh9IGJ1Y2tldHMuYH0pLmpvaW4oYCBgKSkse2ZvcmVncm91bmQ6byxtdXRlZEZvcmVncm91bmQ6cyxib3JkZXI6Y309WWMoKTtmdW5jdGlvbiBkKGUpe3JldHVybiBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShlKS50cmltKCl9bGV0IGY9aCgoKT0+e28udmFsdWU7bGV0IGU9dC5kYXRhc2V0cy5tYXAoZT0+e2xldCBuPWQoZS5jb2xvcik7cmV0dXJue2xhYmVsOmUubGFiZWwsZGF0YTplLmRhdGEsYm9yZGVyQ29sb3I6bixiYWNrZ3JvdW5kQ29sb3I6bixmaWxsOnQuc3RhY2tlZCxzdGFjazp0LnN0YWNrZWQ/YG1haW5gOnZvaWQgMCx0ZW5zaW9uOi4yLHBvaW50UmFkaXVzOjIsYm9yZGVyV2lkdGg6Mn19KSxuPXQuY29tcGFyaXNvbkRhdGFzZXRzLm1hcChlPT57bGV0IHQ9ZChlLmNvbG9yKTtyZXR1cm57bGFiZWw6YCR7ZS5sYWJlbH0ke2UubGFiZWxTdWZmaXg/P2BgfWAsZGF0YTplLmRhdGEsYm9yZGVyQ29sb3I6dCxiYWNrZ3JvdW5kQ29sb3I6YHRyYW5zcGFyZW50YCxib3JkZXJEYXNoOls2LDRdLGZpbGw6ITEsdGVuc2lvbjouMixwb2ludFJhZGl1czowLGJvcmRlcldpZHRoOjEuNX19KTtyZXR1cm57bGFiZWxzOnQubGFiZWxzLGRhdGFzZXRzOlsuLi5lLC4uLm5dfX0pLGc9aCgoKT0+KHtyZXNwb25zaXZlOiEwLG1haW50YWluQXNwZWN0UmF0aW86ITEsYW5pbWF0aW9uOiExLGludGVyYWN0aW9uOnttb2RlOmBpbmRleGAsaW50ZXJzZWN0OiExfSxzY2FsZXM6e3g6e3N0YWNrZWQ6dC5zdGFja2VkLGdyaWQ6e2NvbG9yOmMudmFsdWUsZGlzcGxheTohMX0sdGlja3M6e2NvbG9yOnMudmFsdWV9fSx5OntzdGFja2VkOnQuc3RhY2tlZCxiZWdpbkF0WmVybzohMCxncmlkOntjb2xvcjpjLnZhbHVlfSx0aWNrczp7Y29sb3I6cy52YWx1ZSxjYWxsYmFjazplPT50LnZhbHVlRm9ybWF0dGVyKE51bWJlcihlKSl9fX0scGx1Z2luczp7bGVnZW5kOntkaXNwbGF5OnQuZGF0YXNldHMubGVuZ3RoPjF8fHQuY29tcGFyaXNvbkRhdGFzZXRzLmxlbmd0aD4wLGxhYmVsczp7Y29sb3I6by52YWx1ZX19LHRvb2x0aXA6e2NhbGxiYWNrczp7bGFiZWw6ZT0+YCR7ZS5kYXRhc2V0LmxhYmVsfTogJHt0LnZhbHVlRm9ybWF0dGVyKGUucGFyc2VkLnk/PzApfWB9fX19KSk7cmV0dXJuKHQsaSk9PihfKCksdShgZGl2YCx7Y2xhc3M6YGgtNzIgdy1mdWxsYCxyb2xlOmBpbWdgLCJhcmlhLWxhYmVsIjplLmFyaWFMYWJlbCwiYXJpYS1kZXNjcmliZWRieSI6bn0sW20ocChKYykse2RhdGE6Zi52YWx1ZSxvcHRpb25zOmcudmFsdWV9LG51bGwsOCxbYGRhdGFgLGBvcHRpb25zYF0pLGwoYHBgLHtpZDpuLGNsYXNzOmBzci1vbmx5YH0scihhLnZhbHVlKSwxKV0sOCxYYykpfX0pO2V4cG9ydHtTIGFzIG4sWmMgYXMgdH07",
|
|
),
|
|
},
|
|
"TryLongerRangeButton-CjkUnaOz.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0UgYXMgZSxGciBhcyB0LF9uIGFzIG4sZ2kgYXMgcixpLGluIGFzIGEsbW4gYXMgbyxuciBhcyBzLG9uIGFzIGMsc24gYXMgbH1mcm9tIi4vU2tlbGV0b24tQjB6aUI2T2QuanMiO2ltcG9ydHt0IGFzIHV9ZnJvbSIuL2luZGV4LWR5d1M4T3BULmpzIjtmdW5jdGlvbiBkKGUpe3JldHVybiFOdW1iZXIuaXNGaW5pdGUoZSl8fGU8Ljg/YG5vcm1hbGA6ZTwxP2BhbWJlcmA6YHJlZGB9dmFyIGY9MWU2LHA9e3JlcU1pbjpgcmVxL21pbmAscmVxRGF5OmByZXEvZGF5YCx0b2tEYXk6YHRva2VucyAoaW4rb3V0KS9kYXlgLHRva01vbnRoOmB0b2tlbnMgKGluK291dCkvbW9udGhgLGNvc3REYXk6YGNvc3QvZGF5YCxjb3N0TW9udGg6YGNvc3QvbW9udGhgfTtmdW5jdGlvbiBtKGUsdCxuKXtyZXR1cm57aWQ6ZSx1c2VkOnQsbGltaXQ6bixyYXRpbzp0L259fWZ1bmN0aW9uIGgoZSl7bGV0IHQ9ZS5saW1pdHM7aWYoIXR8fGUuc3RvcmVEb3duKXJldHVybltdO2xldCBuPVtdO2lmKHQucmVxdWVzdHNQZXJNaW51dGUmJm4ucHVzaChtKGByZXFNaW5gLGUucmVxdWVzdHNQZXJNaW51dGUsdC5yZXF1ZXN0c1Blck1pbnV0ZSkpLHQucmVxdWVzdHNQZXJEYXkmJm4ucHVzaChtKGByZXFEYXlgLGUucmVxdWVzdHNQZXJEYXksdC5yZXF1ZXN0c1BlckRheSkpLHQudG9rZW5zUGVyRGF5JiZuLnB1c2gobShgdG9rRGF5YCxlLnRva2Vuc0luUGVyRGF5K2UudG9rZW5zT3V0UGVyRGF5LHQudG9rZW5zUGVyRGF5KSksdC50b2tlbnNQZXJNb250aCYmbi5wdXNoKG0oYHRva01vbnRoYCxlLnRva2Vuc0luUGVyTW9udGgrZS50b2tlbnNPdXRQZXJNb250aCx0LnRva2Vuc1Blck1vbnRoKSksdC5jb3N0UGVyRGF5VVNEKXtsZXQgcj1NYXRoLnJvdW5kKHQuY29zdFBlckRheVVTRCpmKTtyPjAmJm4ucHVzaChtKGBjb3N0RGF5YCxlLmNvc3RQZXJEYXlNaWNyb1VzZCxyKSl9aWYodC5jb3N0UGVyTW9udGhVU0Qpe2xldCByPU1hdGgucm91bmQodC5jb3N0UGVyTW9udGhVU0QqZik7cj4wJiZuLnB1c2gobShgY29zdE1vbnRoYCxlLmNvc3RQZXJNb250aE1pY3JvVXNkLHIpKX1yZXR1cm4gbn1mdW5jdGlvbiBnKGUpe2xldCB0PWUuZ2V0VVRDRnVsbFllYXIoKSxuPWUuZ2V0VVRDTW9udGgoKSxyPURhdGUuVVRDKHQsbiwxKSxpPURhdGUuVVRDKHQsbisxLDEpO3JldHVybihlLmdldFRpbWUoKS1yKS8oaS1yKX1mdW5jdGlvbiBfKGUsdCl7cmV0dXJuIHQ8LjAyP251bGw6TWF0aC5yb3VuZChlL3QpfWZ1bmN0aW9uIHYoZSx0KXtpZihlPT09bnVsbHx8dD09PXZvaWQgMHx8dDw9MClyZXR1cm57bGltaXRNaWNyb3M6bnVsbCxyZW1haW5pbmdNaWNyb3M6bnVsbCx3aWxsRXhjZWVkOiExfTtsZXQgbj1NYXRoLnJvdW5kKHQqZikscj1uLWU7cmV0dXJue2xpbWl0TWljcm9zOm4scmVtYWluaW5nTWljcm9zOnIsd2lsbEV4Y2VlZDpyPDB9fXZhciB5PW4oe19fbmFtZTpgVHJ5TG9uZ2VyUmFuZ2VCdXR0b25gLHNldHVwKG4pe2xldCBkPXUoKSxmPWEoKCk9PntsZXQgZT1pLmluZGV4T2YoZC5yYW5nZSk7cmV0dXJuIGlbZSsxXT8/bnVsbH0pO2Z1bmN0aW9uIHAoKXtmLnZhbHVlJiZkLnNldEZpbHRlcnMoe3JhbmdlOmYudmFsdWV9KX1yZXR1cm4obixpKT0+Zi52YWx1ZT8ocygpLGMocihlKSx7a2V5OjAsdHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsb25DbGljazpwfSx7ZGVmYXVsdDp0KCgpPT5bLi4uaVswXXx8PVtvKGBUcnkgYSBsb25nZXIgcmFuZ2VgLC0xKV1dKSxfOjF9KSk6bChgYCwhMCl9fSk7ZXhwb3J0e3AgYXMgYSxkIGFzIGMsXyBhcyBpLHYgYXMgbixmIGFzIG8sZyBhcyByLGggYXMgcyx5IGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"badge-DUiBTDyA.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0QgYXMgZSxGciBhcyB0LEcgYXMgbixIbiBhcyByLFNpIGFzIGksViBhcyBhLFcgYXMgbyxfbiBhcyBzLGFuIGFzIGMsY24gYXMgbCxjdCBhcyB1LGdpIGFzIGQsaG4gYXMgZixsciBhcyBwLG5yIGFzIG0sb24gYXMgaCxzbiBhcyBnLHVyIGFzIF99ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjt2YXIgdj17cm9sZTpgc3RhdHVzYCxjbGFzczpgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtNCBweS04IHRleHQtY2VudGVyYH0seT17Y2xhc3M6YHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kYH0sYj17a2V5OjAsY2xhc3M6YG1heC13LXNtIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0seD17a2V5OjEsY2xhc3M6YG10LTFgfSxTPXMoe19fbmFtZTpgRW1wdHlTdGF0ZWAscHJvcHM6e2ljb246e2RlZmF1bHQ6KCk9PnV9LHRpdGxlOnt9LGRlc2NyaXB0aW9uOnt9fSxzZXR1cChlKXtyZXR1cm4odCxuKT0+e2xldCByPV8oYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBtKCksbChgZGl2YCx2LFtmKHIse2ljb246ZS5pY29uLGNsYXNzOmBzaXplLTYgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxjKGBwYCx5LGkoZS50aXRsZSksMSksZS5kZXNjcmlwdGlvbj8obSgpLGwoYHBgLGIsaShlLmRlc2NyaXB0aW9uKSwxKSk6ZyhgYCwhMCksdC4kc2xvdHMuZGVmYXVsdD8obSgpLGwoYGRpdmAseCxbcCh0LiRzbG90cyxgZGVmYXVsdGApXSkpOmcoYGAsITApXSl9fX0pO2Z1bmN0aW9uIEMoe2xvYWRpbmc6ZSxoYXNEYXRhOnQsZXJyb3I6bn0pe3JldHVybiB0P2ByZWFkeWA6bj9gZXJyb3JgOmU/YHNrZWxldG9uYDpgZW1wdHlgfWZ1bmN0aW9uIHcoZSx0KXtyZXR1cm5gJHtlfS8ke3R9YH1mdW5jdGlvbiBUKGUpe3JldHVybmAkJHsoZS8xZTYpLnRvRml4ZWQoNCl9YH1mdW5jdGlvbiBFKGUpe3JldHVybiBlLnRvTG9jYWxlU3RyaW5nKGBlbi1VU2ApfWZ1bmN0aW9uIEQoZSl7bGV0IHQ9TWF0aC5hYnMoZSk7aWYodDwxZTQpcmV0dXJuIEUoZSk7bGV0IG49ZTwwP2AtYDpgYCxbcixpXT10PDFlNj9bMWUzLGBrYF06dDwxZTk/WzFlNixgTWBdOlsxZTksYEJgXSxhPXQvcixvPTMtKE1hdGguZmxvb3IoYSk+PTEwMD8zOk1hdGguZmxvb3IoYSk+PTEwPzI6MSkscz0xMCoqbyxjPShNYXRoLmZsb29yKHQqcy9yKS9zKS50b0ZpeGVkKG8pO3JldHVybiBvPjAmJihjPWMucmVwbGFjZSgvMCskLyxgYCkucmVwbGFjZSgvXC4kLyxgYCkpLGAke259JHtjfSR7aX1gfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIGU+MCYmIShlJmUtMSl9ZnVuY3Rpb24gayhlKXtyZXR1cm4gZTwxMDI0P2Ake2V9YDpPKGUpP2U8MTA0ODU3Nj9gJHtNYXRoLnJvdW5kKGUvMTAyNCl9a2A6YCR7TWF0aC5yb3VuZChlLzEwNDg1NzYpfU1gOmU8MWU2P2Ake01hdGgucm91bmQoZS8xZTMpfWtgOmAke01hdGgucm91bmQoZS8xZTYpfU1gfWZ1bmN0aW9uIEEoZSl7cmV0dXJuYCQke2UudG9GaXhlZCgyKX1gfWZ1bmN0aW9uIGooZSx0KXtyZXR1cm4gZT09PTAmJnQ9PT0wP2BmcmVlYDpgaW4gJHtBKGUpfSAvIG91dCAke0EodCl9IHBlciBNVG9rYH1mdW5jdGlvbiBNKGUpe3JldHVybiBlPDFlMz9gJHtNYXRoLnJvdW5kKGUpfW1zYDpgJHsoZS8xZTMpLnRvRml4ZWQoMSl9c2B9ZnVuY3Rpb24gTihlLHQpe2lmKCFlfHxlPT09YDAwMDEtMDEtMDFUMDA6MDA6MDBaYClyZXR1cm4gbnVsbDtsZXQgbj1uZXcgRGF0ZShlKS5nZXRUaW1lKCk7cmV0dXJuIE51bWJlci5pc05hTihuKT9udWxsOk1hdGgubWF4KDAsTWF0aC5yb3VuZCgodC1uKS8xZTMpKX1mdW5jdGlvbiBQKGUpe2xldCB0PU4oZSxEYXRlLm5vdygpKTtyZXR1cm4gdD09PW51bGw/YGA6YCAoJHt0fXMgYWdvKWB9ZnVuY3Rpb24gRihlLHQ9RGF0ZS5ub3coKSl7bGV0IG49TihlLHQpO3JldHVybiBuPT09bnVsbD9gYDpgJHtufXMgYWdvYH1mdW5jdGlvbiBJKGUpe2lmKCFlfHxlPT09YDAwMDEtMDEtMDFUMDA6MDA6MDBaYClyZXR1cm5gYDtsZXQgdD1uZXcgRGF0ZShlKS5nZXRUaW1lKCk7aWYoTnVtYmVyLmlzTmFOKHQpKXJldHVybmBgO2xldCBuPU1hdGgucm91bmQoKHQtRGF0ZS5ub3coKSkvMWUzKTtyZXR1cm4gbjw9MD9gYDpgaW4gJHtufXNgfWZ1bmN0aW9uIEwoZSl7aWYoIWV8fGU9PT1gMDAwMS0wMS0wMVQwMDowMDowMFpgKXJldHVybmBuZXZlcmA7bGV0IHQ9bmV3IERhdGUoZSk7cmV0dXJuIE51bWJlci5pc05hTih0LmdldFRpbWUoKSk/ZTp0LnRvTG9jYWxlU3RyaW5nKCl9ZnVuY3Rpb24gUihlLHQpe3JldHVybiBlP1AodCk/YHJlZnJlc2hlZGA6YHBlbmRpbmdgOmBvZmZgfWZ1bmN0aW9uIHooZSx0KXtzd2l0Y2goUihlLHQpKXtjYXNlYG9mZmA6cmV0dXJuYGRpc2NvdmVyeSBvZmZgO2Nhc2VgcGVuZGluZ2A6cmV0dXJuYHBlbmRpbmdgO2Nhc2VgcmVmcmVzaGVkYDpyZXR1cm5gcmVmcmVzaGVkJHtQKHQpfWB9fWZ1bmN0aW9uIEIoZSx0KXtzd2l0Y2goUihlLHQpKXtjYXNlYG9mZmA6cmV0dXJuYGRpc2NvdmVyeSBvZmZgO2Nhc2VgcGVuZGluZ2A6cmV0dXJuYHBlbmRpbmdgO2Nhc2VgcmVmcmVzaGVkYDpyZXR1cm4gTCh0KX19ZnVuY3Rpb24gVihlKXtpZighZSlyZXR1cm5gbm9uZWA7bGV0IHQ9W107cmV0dXJuIGUucmVxdWVzdHNQZXJNaW51dGUmJnQucHVzaChgcmVxL21pbiAke2UucmVxdWVzdHNQZXJNaW51dGV9YCksZS5yZXF1ZXN0c1BlckRheSYmdC5wdXNoKGByZXEvZGF5ICR7ZS5yZXF1ZXN0c1BlckRheX1gKSxlLnRva2Vuc1BlckRheSYmdC5wdXNoKGB0b2svZGF5ICR7ZS50b2tlbnNQZXJEYXl9YCksZS50b2tlbnNQZXJNb250aCYmdC5wdXNoKGB0b2svbW9udGggJHtlLnRva2Vuc1Blck1vbnRofWApLGUuY29zdFBlckRheVVTRCYmdC5wdXNoKGBjb3N0L2RheSAkJHtlLmNvc3RQZXJEYXlVU0R9YCksZS5jb3N0UGVyTW9udGhVU0QmJnQucHVzaChgY29zdC9tb250aCAkJHtlLmNvc3RQZXJNb250aFVTRH1gKSx0Lmxlbmd0aD90LmpvaW4oYCwgYCk6YG5vbmVgfWZ1bmN0aW9uIEgoZSx0KXtzd2l0Y2godCl7Y2FzZWBob3VyYDpyZXR1cm5gJHtlLnNsaWNlKDgsMTApfTowMCBVVENgO2Nhc2VgZGF5YDp7bGV0IHQ9TnVtYmVyKGUuc2xpY2UoMCw0KSksbj1OdW1iZXIoZS5zbGljZSg0LDYpKSxyPU51bWJlcihlLnNsaWNlKDYsOCkpO3JldHVybiBuZXcgRGF0ZSh0LG4tMSxyKS50b0xvY2FsZURhdGVTdHJpbmcodm9pZCAwLHttb250aDpgc2hvcnRgLGRheTpgbnVtZXJpY2B9KX1jYXNlYG1vbnRoYDp7bGV0IHQ9TnVtYmVyKGUuc2xpY2UoMCw0KSksbj1OdW1iZXIoZS5zbGljZSg0LDYpKTtyZXR1cm4gbmV3IERhdGUodCxuLTEsMSkudG9Mb2NhbGVEYXRlU3RyaW5nKHZvaWQgMCx7bW9udGg6YHNob3J0YCx5ZWFyOmBudW1lcmljYH0pfX19dmFyIFU9cyh7X19uYW1lOmBCYWRnZWAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sdmFyaWFudDp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAobil7bGV0IGk9bixzPWEoaSxgY2xhc3NgKTtyZXR1cm4oYSxjKT0+KG0oKSxoKGQoZSkscih7ImRhdGEtc2xvdCI6YGJhZGdlYCwiZGF0YS12YXJpYW50IjpuLnZhcmlhbnQsY2xhc3M6ZChvKShkKFcpKHt2YXJpYW50Om4udmFyaWFudH0pLGkuY2xhc3MpfSxkKHMpKSx7ZGVmYXVsdDp0KCgpPT5bcChhLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGRhdGEtdmFyaWFudGAsYGNsYXNzYF0pKX19KSxXPW4oYGgtNSBnYXAtMSByb3VuZGVkLTR4bCBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IHB4LTIgcHktMC41IHRleHQteHMgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1hbGwgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMS41IGhhcy1kYXRhLVtpY29uPWlubGluZS1zdGFydF06cGwtMS41IFsmPnN2Z106c2l6ZS0zISBncm91cC9iYWRnZSBpbmxpbmUtZmxleCB3LWZpdCBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHdoaXRlc3BhY2Utbm93cmFwIGZvY3VzLXZpc2libGU6Ym9yZGVyLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLTMgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgYXJpYS1pbnZhbGlkOmJvcmRlci1kZXN0cnVjdGl2ZSBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZS8yMCBkYXJrOmFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzQwIFsmPnN2Z106cG9pbnRlci1ldmVudHMtbm9uZWAse3ZhcmlhbnRzOnt2YXJpYW50OntkZWZhdWx0OmBiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFthXTpob3ZlcjpiZy1wcmltYXJ5LzgwYCxzZWNvbmRhcnk6YGJnLXNlY29uZGFyeSB0ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIFthXTpob3ZlcjpiZy1zZWNvbmRhcnkvODBgLGRlc3RydWN0aXZlOmBiZy1kZXN0cnVjdGl2ZS8xMCBbYV06aG92ZXI6YmctZGVzdHJ1Y3RpdmUvMjAgZm9jdXMtdmlzaWJsZTpyaW5nLWRlc3RydWN0aXZlLzIwIGRhcms6Zm9jdXMtdmlzaWJsZTpyaW5nLWRlc3RydWN0aXZlLzQwIHRleHQtZGVzdHJ1Y3RpdmUgZGFyazpiZy1kZXN0cnVjdGl2ZS8yMGAsb3V0bGluZTpgYm9yZGVyLWJvcmRlciB0ZXh0LWZvcmVncm91bmQgW2FdOmhvdmVyOmJnLW11dGVkIFthXTpob3Zlcjp0ZXh0LW11dGVkLWZvcmVncm91bmRgLGdob3N0OmBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZGFyazpob3ZlcjpiZy1tdXRlZC81MGAsbGluazpgdGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmVgfX0sZGVmYXVsdFZhcmlhbnRzOnt2YXJpYW50OmBkZWZhdWx0YH19KTtleHBvcnR7QyBhcyBfLGsgYXMgYSxFIGFzIGMsaiBhcyBkLEwgYXMgZix3IGFzIGcseiBhcyBoLEQgYXMgaSxNIGFzIGwsQiBhcyBtLFAgYXMgbixUIGFzIG8sSSBhcyBwLEggYXMgcixGIGFzIHMsVSBhcyB0LFYgYXMgdSxTIGFzIHZ9Ow==",
|
|
),
|
|
},
|
|
"burndown-Bz44x7-d.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0MgYXMgZSxFIGFzIHQsRnIgYXMgbixLbiBhcyByLFMgYXMgaSxTaSBhcyBhLFQgYXMgbyxfbiBhcyBzLGFuIGFzIGMsY24gYXMgbCxldCBhcyB1LGdpIGFzIGQsaG4gYXMgZixpbiBhcyBwLG1uIGFzIG0sbnIgYXMgaCxvaSBhcyBnLG9uIGFzIF8scnQgYXMgdixzbiBhcyB5LHN0IGFzIGIsdXIgYXMgeCx2IGFzIFMsdyBhcyBDLHlpIGFzIHd9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjtpbXBvcnR7YyBhcyBUfWZyb20iLi9pbmRleC1keXdTOE9wVC5qcyI7aW1wb3J0e3QgYXMgRX1mcm9tIi4vY2xpcGJvYXJkLUI3M2ZaMGMxLmpzIjtpbXBvcnR7byBhcyBEfWZyb20iLi9iYWRnZS1EVWlCVER5QS5qcyI7aW1wb3J0e2kgYXMgTyxuIGFzIGssciBhcyBBfWZyb20iLi9UcnlMb25nZXJSYW5nZUJ1dHRvbi1DamtVbmFPei5qcyI7dmFyIGo9e2NsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYH0sTT17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sTj1bYHRpdGxlYF0sUD17a2V5OjB9LEY9e2NsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYH0sST1zKHtfX25hbWU6YENvc3RGb3JlY2FzdENhcmRgLHByb3BzOnttdGRNaWNyb3M6e30sbGltaXRzOnt9LG5vdzp7fX0sc2V0dXAodCl7bGV0IHI9dCxzPXAoKCk9PkEoci5ub3cpKSx1PXAoKCk9Pk8oci5tdGRNaWNyb3Mscy52YWx1ZSkpLGc9cCgoKT0+ayh1LnZhbHVlLHIubGltaXRzPy5jb3N0UGVyTW9udGhVU0QpKTtyZXR1cm4ocixzKT0+KGgoKSxfKGQobyksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bZihkKGUpLG51bGwse2RlZmF1bHQ6bigoKT0+W2YoZChpKSxudWxsLHtkZWZhdWx0Om4oKCk9PlsuLi5zWzBdfHw9W20oYENvc3QgZm9yZWNhc3RgLC0xKV1dKSxfOjF9KSxmKGQoVCksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bLi4uc1sxXXx8PVttKGBQcm9qZWN0ZWQgbW9udGgtZW5kIHNwZW5kLCBleHRyYXBvbGF0ZWQgZnJvbSBtb250aC10by1kYXRlIHVzYWdlIChVVEMgY2FsZW5kYXIgbW9udGgpLmAsLTEpXV0pLF86MX0pXSksXzoxfSksZihkKEMpLHtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtIHNtOmdyaWQtY29scy0zYH0se2RlZmF1bHQ6bigoKT0+W2MoYGRpdmAsbnVsbCxbc1syXXx8PWMoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYE1vbnRoIHRvIGRhdGVgLC0xKSxjKGBwYCxqLGEoZChEKSh0Lm10ZE1pY3JvcykpLDEpXSksYyhgZGl2YCxudWxsLFtzWzNdfHw9YyhgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUHJvamVjdGVkIG1vbnRoLWVuZGAsLTEpLHUudmFsdWU9PT1udWxsPyhoKCksbChgcGAsTSxgbm90IGVub3VnaCBkYXRhIHlldGApKTooaCgpLGwoYHBgLHtrZXk6MSxjbGFzczp3KFtgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2AsZy52YWx1ZS53aWxsRXhjZWVkP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDBdKSx0aXRsZTpnLnZhbHVlLndpbGxFeGNlZWQ/YFByb2plY3RlZCB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgY29zdC9tb250aCBsaW1pdGA6dm9pZCAwfSxhKGQoRCkodS52YWx1ZSkpLDExLE4pKV0pLGcudmFsdWUubGltaXRNaWNyb3M9PT1udWxsP3koYGAsITApOihoKCksbChgZGl2YCxQLFtzWzRdfHw9YyhgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGltaXRgLC0xKSxjKGBwYCxGLGEoZChEKShnLnZhbHVlLmxpbWl0TWljcm9zKSksMSldKSldKSxfOjF9KV0pLF86MX0pKX19KSxMPWB0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04O2AsUj0xZTM7YXN5bmMgZnVuY3Rpb24geihlLHQsbj1MKXtpZih0eXBlb2YgZG9jdW1lbnQ+YHVgKXJldHVybmBmYWlsZWRgO3RyeXtsZXQgcj1uZXcgQmxvYihbdF0se3R5cGU6bn0pLGk9VVJMLmNyZWF0ZU9iamVjdFVSTChyKSxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGFgKTtyZXR1cm4gYS5ocmVmPWksYS5kb3dubG9hZD1lLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksYS5jbGljaygpLGEucmVtb3ZlKCksc2V0VGltZW91dCgoKT0+VVJMLnJldm9rZU9iamVjdFVSTChpKSxSKSxgZG93bmxvYWRlZGB9Y2F0Y2h7cmV0dXJuIEUodCl9fXZhciBCPTI1MDAsVj1zKHtfX25hbWU6YENzdkV4cG9ydEJ1dHRvbmAscHJvcHM6e2ZpbGVuYW1lOnt9LGJ1aWxkOnt0eXBlOkZ1bmN0aW9ufX0sc2V0dXAoZSl7bGV0IGk9ZSxvPWcoITEpLHM9ZyhudWxsKSxsLGY9e2Rvd25sb2FkZWQ6YERvd25sb2FkZWRgLGNvcGllZDpgQ29waWVkYCxzZWxlY3RlZDpgU2VsZWN0ZWQg4oCUIHByZXNzIOKMmC9DdHJsK0NgLGZhaWxlZDpgRXhwb3J0IGZhaWxlZGB9LG09cCgoKT0+cy52YWx1ZT9mW3MudmFsdWVdOmBFeHBvcnQgQ1NWYCkseT1wKCgpPT5zLnZhbHVlPT09YGZhaWxlZGApO2Z1bmN0aW9uIFMoKXtsIT09dm9pZCAwJiZjbGVhclRpbWVvdXQobCksbD1zZXRUaW1lb3V0KCgpPT57cy52YWx1ZT1udWxsLGw9dm9pZCAwfSxCKX1hc3luYyBmdW5jdGlvbiBDKCl7aWYoIW8udmFsdWUpe28udmFsdWU9ITA7dHJ5e3MudmFsdWU9YXdhaXQgeihpLmZpbGVuYW1lLGkuYnVpbGQoKSksUygpfWZpbmFsbHl7by52YWx1ZT0hMX19fXJldHVybiByKCgpPT57bCE9PXZvaWQgMCYmY2xlYXJUaW1lb3V0KGwpfSksKGUscik9PntsZXQgaT14KGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gaCgpLF8oZCh0KSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsZGlzYWJsZWQ6by52YWx1ZSxvbkNsaWNrOkN9LHtkZWZhdWx0Om4oKCk9PltzLnZhbHVlPT09YGZhaWxlZGA/KGgoKSxfKGkse2tleTowLGljb246ZCh2KSxjbGFzczpgc2l6ZS0zLjUgdGV4dC1kZXN0cnVjdGl2ZWAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkpOnMudmFsdWU/KGgoKSxfKGkse2tleToxLGljb246ZCh1KSxjbGFzczpgc2l6ZS0zLjUgdGV4dC1jaGFydC1yZXF1ZXN0c2AsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkpOihoKCksXyhpLHtrZXk6MixpY29uOmQoYiksY2xhc3M6YHNpemUtMy41YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSksYyhgc3BhbmAse2NsYXNzOncoeS52YWx1ZT9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwKX0sYShtLnZhbHVlKSwzKV0pLF86MX0sOCxbYGRpc2FibGVkYF0pfX19KSxIPTZlNDtmdW5jdGlvbiBVKGU9SCl7bGV0IHQ9ZyhuZXcgRGF0ZSksbjtmdW5jdGlvbiByKCl7bnx8KG49Uyh7aW50ZXJ2YWxNczplLHRpY2s6KCk9Pnt0LnZhbHVlPW5ldyBEYXRlfX0pLG4uc3RhcnQoKSl9ZnVuY3Rpb24gaSgpe24/LnN0b3AoKSxuPXZvaWQgMH1yZXR1cm57bm93OnQsc3RhcnQ6cixzdG9wOml9fXZhciBXPWBccgpgLEc9L1siLFxyXG5dLyxLPS9eWz0rXC1AXHRccl0vO2Z1bmN0aW9uIHEoZSl7bGV0IHQ9ZT09bnVsbD9gYDpTdHJpbmcoZSk7cmV0dXJuIEsudGVzdCh0KSYmKHQ9YCcke3R9YCksRy50ZXN0KHQpP2AiJHt0LnJlcGxhY2UoLyIvZyxgIiJgKX0iYDp0fWZ1bmN0aW9uIEooZSx0KXtyZXR1cm5bZSwuLi50XS5tYXAoZT0+ZS5tYXAocSkuam9pbihgLGApKS5qb2luKFcpK1d9dmFyIFk9ODY0ZTU7ZnVuY3Rpb24gWChlKXtsZXQgdD1lLmdldFVUQ0Z1bGxZZWFyKCksbj1lLmdldFVUQ01vbnRoKCk7cmV0dXJuKERhdGUuVVRDKHQsbisxLDEpLURhdGUuVVRDKHQsbiwxKSkvWX1mdW5jdGlvbiBaKGUpe3JldHVybiBlLmdldFVUQ0RhdGUoKX1mdW5jdGlvbiBRKGUpe2xldCB0PTA7cmV0dXJuIGUubWFwKGU9PnQrPWUpfWZ1bmN0aW9uICQoZSx0LG4pe2lmKHQ8PTApcmV0dXJuIG51bGw7aWYoZT49dClyZXR1cm4gbmV3IERhdGUobi5nZXRUaW1lKCkpO2xldCByPUEobikqWChuKTtpZihyPDEpcmV0dXJuIG51bGw7bGV0IGk9ZS9yO2lmKGk8PTApcmV0dXJuIG51bGw7bGV0IGE9KHQtZSkvaTtyZXR1cm4gbmV3IERhdGUobi5nZXRUaW1lKCkrYSpZKX1leHBvcnR7VSBhcyBhLEogYXMgaSxaIGFzIG4sViBhcyBvLCQgYXMgcixJIGFzIHMsUSBhcyB0fTs=",
|
|
),
|
|
},
|
|
"catalog-lU41irIq.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e190IGFzIGUsYiBhcyB0LHggYXMgbix5IGFzIHJ9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjt2YXIgaT0zZTUsYT1lKGBjYXRhbG9nYCx7c3RhdGU6KCk9Pih7ZGF0YTpudWxsLGZldGNoZWRBdDpudWxsLGxvYWRpbmc6ITEsZXJyb3I6YGAscmVxSWQ6MH0pLGdldHRlcnM6e3N0YWxlKGUpe3JldHVybiFlLmZldGNoZWRBdHx8RGF0ZS5ub3coKS1lLmZldGNoZWRBdC5nZXRUaW1lKCk+aX0sbW9kZWxzQnlJZChlKXtsZXQgdD1uZXcgTWFwO2ZvcihsZXQgbiBvZiBlLmRhdGE/LnByb3ZpZGVycz8/W10pZm9yKGxldCBlIG9mIG4ubW9kZWxzKXQuc2V0KGUuaWQsZSk7cmV0dXJuIHR9fSxhY3Rpb25zOnthc3luYyBlbnN1cmVMb2FkZWQoZT0hMSl7IWUmJnRoaXMuZGF0YSYmIXRoaXMuc3RhbGV8fGF3YWl0IHRoaXMuZmV0Y2goKX0sYXN5bmMgZmV0Y2goKXtpZighbigpLmlzQXV0aGVudGljYXRlZClyZXR1cm47bGV0IGU9Kyt0aGlzLnJlcUlkO3RoaXMubG9hZGluZz0hMDt0cnl7bGV0IG49YXdhaXQgdChgL2FkbWluL2FwaS9jYXRhbG9nYCk7aWYoZSE9PXRoaXMucmVxSWQpcmV0dXJuO3RoaXMuZGF0YT1uLHRoaXMuZmV0Y2hlZEF0PW5ldyBEYXRlLHRoaXMuZXJyb3I9YGB9Y2F0Y2godCl7aWYoZSE9PXRoaXMucmVxSWR8fHQgaW5zdGFuY2VvZiByJiYodC5zdGF0dXM9PT00MDF8fHQuc3RhdHVzPT09NDAzKSlyZXR1cm47dGhpcy5lcnJvcj10IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOlN0cmluZyh0KX1maW5hbGx5e2U9PT10aGlzLnJlcUlkJiYodGhpcy5sb2FkaW5nPSExKX19fX0pO2V4cG9ydHthIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"clipboard-B73fZ0c1.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"YXN5bmMgZnVuY3Rpb24gZShlLHQpe2lmKG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCl0cnl7cmV0dXJuIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGUpLGBjb3BpZWRgfWNhdGNoe31pZighdClyZXR1cm5gZmFpbGVkYDtsZXQgbj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO24uc2VsZWN0Tm9kZUNvbnRlbnRzKHQpO2xldCByPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm4gcj8oci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKG4pLGBzZWxlY3RlZGApOmBmYWlsZWRgfWV4cG9ydHtlIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"consumers-CQtEJ9K7.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e190IGFzIGUsYiBhcyB0LGMgYXMgbixkIGFzIHIsZiBhcyBpLHggYXMgYSx5IGFzIG99ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjt2YXIgcz02ZTQ7ZnVuY3Rpb24gYygpe3JldHVybntsb2FkaW5nOiExLHJlcUVycm9yOmBgLGNvc3RFcnJvcjpgYCxtb2RlbEVycm9yOmBgLHJlcVNlcmllczpudWxsLGNvc3RTZXJpZXM6bnVsbCxtb2RlbFRvdGFsczpudWxsLG1vZGVsVG90YWxzVW5hdmFpbGFibGU6ITEsZmV0Y2hlZEF0Om51bGwscmVxSWQ6MCx3aW5kb3c6bnVsbCxzcGFuOm51bGx9fWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUuc3RhdHVzPT09YHJlamVjdGVkYD9lLnJlYXNvbiBpbnN0YW5jZW9mIEVycm9yP2UucmVhc29uLm1lc3NhZ2U6U3RyaW5nKGUucmVhc29uKTpgYH12YXIgdT1lKGBjb25zdW1lcnNgLHtzdGF0ZTooKT0+KHtkYXRhOm51bGwsbG9hZGluZzohMSxlcnJvcjpgYCxmZXRjaGVkQXQ6bnVsbCxkZXRhaWw6e319KSxhY3Rpb25zOnthc3luYyBmZXRjaENvbnN1bWVycygpe2lmKGEoKS5pc0F1dGhlbnRpY2F0ZWQmJiF0aGlzLmxvYWRpbmcpe3RoaXMubG9hZGluZz0hMDt0cnl7dGhpcy5kYXRhPWF3YWl0IHQoYC9hZG1pbi9hcGkvY29uc3VtZXJzYCksdGhpcy5lcnJvcj1gYCx0aGlzLmZldGNoZWRBdD1EYXRlLm5vdygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBvJiYoZS5zdGF0dXM9PT00MDF8fGUuc3RhdHVzPT09NDAzKSlyZXR1cm47dGhpcy5lcnJvcj1lIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1maW5hbGx5e3RoaXMubG9hZGluZz0hMX19fSxhc3luYyBlbnN1cmVDb25zdW1lcnMoKXt0aGlzLmxvYWRpbmd8fHRoaXMuZGF0YSYmdGhpcy5mZXRjaGVkQXQhPT1udWxsJiZEYXRlLm5vdygpLXRoaXMuZmV0Y2hlZEF0PHN8fGF3YWl0IHRoaXMuZmV0Y2hDb25zdW1lcnMoKX0sYXN5bmMgZmV0Y2hVc2VyRGV0YWlsKGUscyx1LGQpe2lmKCFhKCkuaXNBdXRoZW50aWNhdGVkKXJldHVybjtsZXQgZj10aGlzLmRldGFpbFtlXT8/YygpLHA9Zi5yZXFJZCsxLG09Zi53aW5kb3chPT1udWxsJiYoZi53aW5kb3chPT1zfHxmLnNwYW4hPT11KTt0aGlzLmRldGFpbFtlXT17Li4uZixsb2FkaW5nOiEwLHJlcUlkOnAscmVxU2VyaWVzOm0/bnVsbDpmLnJlcVNlcmllcyxjb3N0U2VyaWVzOm0/bnVsbDpmLmNvc3RTZXJpZXMsbW9kZWxUb3RhbHM6bT9udWxsOmYubW9kZWxUb3RhbHMscmVxRXJyb3I6bT9gYDpmLnJlcUVycm9yLGNvc3RFcnJvcjptP2BgOmYuY29zdEVycm9yLG1vZGVsRXJyb3I6bT9gYDpmLm1vZGVsRXJyb3J9O2xldCBoPW4ocyx1KSxbZyxfLHZdPWF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbdChyKHtzY29wZTpbYHVzZXI6JHtlfWBdLG1ldHJpYzpgcmVxYCx3aW5kb3c6cyxzcGFuOnV9KSksdChyKHtzY29wZTpbYHVzZXI6JHtlfWBdLG1ldHJpYzpgY29zdGAsd2luZG93OnMsc3Bhbjp1fSkpLGQ/dChpKHtraW5kOmB1c2VybW9kZWxgLHVzZXI6ZSx3aW5kb3c6aC53aW5kb3csc3BhbjpoLnNwYW4sbWV0cmljczpbYHJlcWAsYGNvc3RgXX0pKTpQcm9taXNlLnJlc29sdmUobnVsbCldKTtpZih0aGlzLmRldGFpbFtlXT8ucmVxSWQhPT1wfHxbZyxfLHZdLnNvbWUoZT0+ZS5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZlLnJlYXNvbiBpbnN0YW5jZW9mIG8mJihlLnJlYXNvbi5zdGF0dXM9PT00MDF8fGUucmVhc29uLnN0YXR1cz09PTQwMykpKXJldHVybjtsZXQgeT12LnN0YXR1cz09PWByZWplY3RlZGAmJnYucmVhc29uIGluc3RhbmNlb2YgbyYmdi5yZWFzb24uc3RhdHVzPT09NDA0LGI9dGhpcy5kZXRhaWxbZV0/P2MoKTt0aGlzLmRldGFpbFtlXT17bG9hZGluZzohMSxyZXFFcnJvcjpsKGcpLGNvc3RFcnJvcjpsKF8pLG1vZGVsRXJyb3I6eT9gYDpsKHYpLHJlcVNlcmllczpnLnN0YXR1cz09PWBmdWxmaWxsZWRgP2cudmFsdWU6Yi5yZXFTZXJpZXMsY29zdFNlcmllczpfLnN0YXR1cz09PWBmdWxmaWxsZWRgP18udmFsdWU6Yi5jb3N0U2VyaWVzLG1vZGVsVG90YWxzOnYuc3RhdHVzPT09YGZ1bGZpbGxlZGA/di52YWx1ZTp5P251bGw6Yi5tb2RlbFRvdGFscyxtb2RlbFRvdGFsc1VuYXZhaWxhYmxlOnksZmV0Y2hlZEF0OkRhdGUubm93KCkscmVxSWQ6cCx3aW5kb3c6cyxzcGFuOnV9fX19KTtleHBvcnR7dSBhcyB0fTs=",
|
|
),
|
|
},
|
|
"events-PUxhEega.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e18gYXMgZSxfdCBhcyB0LGIgYXMgbix2IGFzIHIseCBhcyBpLHkgYXMgYX1mcm9tIi4vU2tlbGV0b24tQjB6aUI2T2QuanMiO3ZhciBvPTVlMyxzPTIwMCxjPXQoYGV2ZW50c2Ase3N0YXRlOigpPT4oe2V2ZW50czpbXSxzb3VyY2U6YHJlcGxpY2FgLHJlcGxpY2E6YGAsY2FwYWNpdHk6MCxkZWdyYWRlZDohMSxsYXN0VXBkYXRlZDpudWxsLGVycm9yOmBgLGtpbmRGaWx0ZXI6YGAsdXNlckZpbHRlcjpgYCxwb2xsZXI6dm9pZCAwLHJlZnJlc2hpbmc6ITEsdG9hc3RlZEZvckZhaWx1cmU6ITF9KSxhY3Rpb25zOnthc3luYyByZWZyZXNoKCl7aWYoIWkoKS5pc0F1dGhlbnRpY2F0ZWR8fHRoaXMucmVmcmVzaGluZylyZXR1cm47dGhpcy5yZWZyZXNoaW5nPSEwO2xldCB0PXRoaXMubGFzdFVwZGF0ZWQhPT1udWxsO3RyeXtsZXQgZT1hd2FpdCBuKGAvYWRtaW4vYXBpL2V2ZW50cz9saW1pdD0ke3N9YCk7dGhpcy5ldmVudHM9ZS5ldmVudHMsdGhpcy5zb3VyY2U9ZS5zb3VyY2UsdGhpcy5yZXBsaWNhPWUucmVwbGljYSx0aGlzLmNhcGFjaXR5PWUuY2FwYWNpdHksdGhpcy5kZWdyYWRlZD1lLmRlZ3JhZGVkPz8hMSx0aGlzLmxhc3RVcGRhdGVkPW5ldyBEYXRlLHRoaXMuZXJyb3I9YGAsdGhpcy50b2FzdGVkRm9yRmFpbHVyZT0hMX1jYXRjaChuKXtpZihuIGluc3RhbmNlb2YgYSYmKG4uc3RhdHVzPT09NDAxfHxuLnN0YXR1cz09PTQwMykpcmV0dXJuO3RoaXMuZXJyb3I9biBpbnN0YW5jZW9mIEVycm9yP24ubWVzc2FnZTpTdHJpbmcobiksdCYmIXRoaXMudG9hc3RlZEZvckZhaWx1cmUmJmUoKS5wdXNoKHtraW5kOmBlcnJvcmAsbWVzc2FnZTpgRXZlbnRzIHJlZnJlc2ggZmFpbGVkOiAke3RoaXMuZXJyb3J9YH0pLHRoaXMudG9hc3RlZEZvckZhaWx1cmU9ITB9ZmluYWxseXt0aGlzLnJlZnJlc2hpbmc9ITF9fSxzZXRLaW5kRmlsdGVyKGUpe3RoaXMua2luZEZpbHRlcj1lfSxzZXRVc2VyRmlsdGVyKGUpe3RoaXMudXNlckZpbHRlcj1lfSxzdGFydFBvbGxpbmcoKXt0aGlzLnBvbGxlcnx8KHRoaXMucG9sbGVyPXIoe2ludGVydmFsTXM6byx0aWNrOigpPT52b2lkIHRoaXMucmVmcmVzaCgpfSksdGhpcy5wb2xsZXIuc3RhcnQoKSl9LHN0b3BQb2xsaW5nKCl7dGhpcy5wb2xsZXI/LnN0b3AoKSx0aGlzLnBvbGxlcj12b2lkIDB9fX0pO2V4cG9ydHtjIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"events-filter-XFnjIaR7.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"dmFyIGU9e3JhdGVfbGltaXQ6YFJhdGUgbGltaXRgLGJ1ZGdldDpgQnVkZ2V0YCxzdG9yZV9kb3duOmBTdG9yZSBkb3duYCx1cHN0cmVhbTpgVXBzdHJlYW0gZXJyb3JgLHRpbWVvdXQ6YFRpbWVvdXRgLHVucHJpY2VkOmBVbnByaWNlZCBtb2RlbGAsY2FwYWNpdHk6YENhcGFjaXR5YH0sdD1PYmplY3Qua2V5cyhlKTtmdW5jdGlvbiBuKGUpe3N3aXRjaChlKXtjYXNlYHJhdGVfbGltaXRgOmNhc2VgYnVkZ2V0YDpjYXNlYGNhcGFjaXR5YDpyZXR1cm5gZGVzdHJ1Y3RpdmVgO2Nhc2Vgc3RvcmVfZG93bmA6Y2FzZWB1cHN0cmVhbWA6Y2FzZWB0aW1lb3V0YDpyZXR1cm5gc2Vjb25kYXJ5YDtkZWZhdWx0OnJldHVybmBvdXRsaW5lYH19ZnVuY3Rpb24gcihlLHQpe2xldCBuPXQua2luZCxyPXQudXNlci50cmltKCkudG9Mb3dlckNhc2UoKTtyZXR1cm4gZS5maWx0ZXIoZT0+e2lmKG4mJmUua2luZCE9PW4pcmV0dXJuITE7aWYoIXIpcmV0dXJuITA7bGV0IHQ9ZS51c2VyPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHIpPz8hMSxpPWUuZ3JvdXA/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocik/PyExO3JldHVybiB0fHxpfSl9ZXhwb3J0e3IgYXMgaSxlIGFzIG4sbiBhcyByLHR9Ow==",
|
|
),
|
|
},
|
|
"index-BD5bBisO.css": {
|
|
contentType: "text/css; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"QGtleWZyYW1lcyBhdXRoZ2F0ZS1zaGFrZS1iNmQ2ZmIxZXsxMCUsOTAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTFweCl9MjAlLDgwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDJweCl9MzAlLDUwJSw3MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNHB4KX00MCUsNjAle3RyYW5zZm9ybTp0cmFuc2xhdGUoNHB4KX19QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2Upey5hdXRoZ2F0ZS1zaGFrZVtkYXRhLXYtYjZkNmZiMWVde2FuaW1hdGlvbjouNHMgZWFzZS1pbi1vdXQgYXV0aGdhdGUtc2hha2UtYjZkNmZiMWV9fUBsYXllciBwcm9wZXJ0aWVze0BzdXBwb3J0cyAoKCgtd2Via2l0LWh5cGhlbnM6bm9uZSkpIGFuZCAobm90IChtYXJnaW4tdHJpbTppbmxpbmUpKSkgb3IgKCgtbW96LW9yaWVudDppbmxpbmUpIGFuZCAobm90IChjb2xvcjpyZ2IoZnJvbSByZWQgciBnIGIpKSkpezpyb290LDpob3N0ey0tc2hpbW1lci1hbmdsZToyMGRlZ30qLDpiZWZvcmUsOmFmdGVyLDo6YmFja2Ryb3B7LS10dy10cmFuc2xhdGUteDowOy0tdHctdHJhbnNsYXRlLXk6MDstLXR3LXRyYW5zbGF0ZS16OjA7LS10dy1yb3RhdGUteDppbml0aWFsOy0tdHctcm90YXRlLXk6aW5pdGlhbDstLXR3LXJvdGF0ZS16OmluaXRpYWw7LS10dy1za2V3LXg6aW5pdGlhbDstLXR3LXNrZXcteTppbml0aWFsOy0tdHctc3BhY2UteS1yZXZlcnNlOjA7LS10dy1ib3JkZXItc3R5bGU6c29saWQ7LS10dy1sZWFkaW5nOmluaXRpYWw7LS10dy1mb250LXdlaWdodDppbml0aWFsOy0tdHctdHJhY2tpbmc6aW5pdGlhbDstLXR3LW9yZGluYWw6aW5pdGlhbDstLXR3LXNsYXNoZWQtemVybzppbml0aWFsOy0tdHctbnVtZXJpYy1maWd1cmU6aW5pdGlhbDstLXR3LW51bWVyaWMtc3BhY2luZzppbml0aWFsOy0tdHctbnVtZXJpYy1mcmFjdGlvbjppbml0aWFsOy0tdHctc2hhZG93OjAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctc2hhZG93LWFscGhhOjEwMCU7LS10dy1pbnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctaW5zZXQtc2hhZG93LWNvbG9yOmluaXRpYWw7LS10dy1pbnNldC1zaGFkb3ctYWxwaGE6MTAwJTstLXR3LXJpbmctY29sb3I6aW5pdGlhbDstLXR3LXJpbmctc2hhZG93OjAgMCAjMDAwMDstLXR3LWluc2V0LXJpbmctY29sb3I6aW5pdGlhbDstLXR3LWluc2V0LXJpbmctc2hhZG93OjAgMCAjMDAwMDstLXR3LXJpbmctaW5zZXQ6aW5pdGlhbDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOjBweDstLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiNmZmY7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctb3V0bGluZS1zdHlsZTpzb2xpZDstLXR3LWJsdXI6aW5pdGlhbDstLXR3LWJyaWdodG5lc3M6aW5pdGlhbDstLXR3LWNvbnRyYXN0OmluaXRpYWw7LS10dy1ncmF5c2NhbGU6aW5pdGlhbDstLXR3LWh1ZS1yb3RhdGU6aW5pdGlhbDstLXR3LWludmVydDppbml0aWFsOy0tdHctb3BhY2l0eTppbml0aWFsOy0tdHctc2F0dXJhdGU6aW5pdGlhbDstLXR3LXNlcGlhOmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdzppbml0aWFsOy0tdHctZHJvcC1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93LWFscGhhOjEwMCU7LS10dy1kcm9wLXNoYWRvdy1zaXplOmluaXRpYWw7LS10dy1kdXJhdGlvbjppbml0aWFsOy0tdHctZWFzZTppbml0aWFsOy0tdHctY29udGVudDoiIjstLXR3LWFuaW1hdGlvbi1kZWxheTowczstLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb246bm9ybWFsOy0tdHctYW5pbWF0aW9uLWR1cmF0aW9uOmluaXRpYWw7LS10dy1hbmltYXRpb24tZmlsbC1tb2RlOm5vbmU7LS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjE7LS10dy1lbnRlci1ibHVyOjA7LS10dy1lbnRlci1vcGFjaXR5OjE7LS10dy1lbnRlci1yb3RhdGU6MDstLXR3LWVudGVyLXNjYWxlOjE7LS10dy1lbnRlci10cmFuc2xhdGUteDowOy0tdHctZW50ZXItdHJhbnNsYXRlLXk6MDstLXR3LWV4aXQtYmx1cjowOy0tdHctZXhpdC1vcGFjaXR5OjE7LS10dy1leGl0LXJvdGF0ZTowOy0tdHctZXhpdC1zY2FsZToxOy0tdHctZXhpdC10cmFuc2xhdGUteDowOy0tdHctZXhpdC10cmFuc2xhdGUteTowOy0tc2Nyb2xsLWZhZGUtdDowOy0tc2Nyb2xsLWZhZGUtYjowOy0tc2Nyb2xsLWZhZGUtczowOy0tc2Nyb2xsLWZhZGUtZTowOy0tc2Nyb2xsLWZhZGUtbWFzazppbml0aWFsOy0tc2hpbW1lci1pbWFnZTppbml0aWFsOy0tc2hpbW1lci10ZXh0LWZpbGw6aW5pdGlhbH19fUBsYXllciB0aGVtZXs6cm9vdCw6aG9zdHstLWZvbnQtc2Fuczp1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWY7LS1zcGFjaW5nOi4yNXJlbTstLWNvbnRhaW5lci14czoyMHJlbTstLWNvbnRhaW5lci1zbToyNHJlbTstLWNvbnRhaW5lci1tZDoyOHJlbTstLXRleHQteHM6Ljc1cmVtOy0tdGV4dC14cy0tbGluZS1oZWlnaHQ6Y2FsYygxIC8gLjc1KTstLXRleHQtc206Ljg3NXJlbTstLXRleHQtc20tLWxpbmUtaGVpZ2h0OmNhbGMoMS4yNSAvIC44NzUpOy0tdGV4dC1iYXNlOjFyZW07LS10ZXh0LWJhc2UtLWxpbmUtaGVpZ2h0OmNhbGMoMS41IC8gMSk7LS10ZXh0LWxnOjEuMTI1cmVtOy0tdGV4dC1sZy0tbGluZS1oZWlnaHQ6Y2FsYygxLjc1IC8gMS4xMjUpOy0tdGV4dC14bDoxLjI1cmVtOy0tdGV4dC14bC0tbGluZS1oZWlnaHQ6Y2FsYygxLjc1IC8gMS4yNSk7LS10ZXh0LTJ4bDoxLjVyZW07LS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQ6Y2FsYygyIC8gMS41KTstLWZvbnQtd2VpZ2h0LW5vcm1hbDo0MDA7LS1mb250LXdlaWdodC1tZWRpdW06NTAwOy0tZm9udC13ZWlnaHQtc2VtaWJvbGQ6NjAwOy0tdHJhY2tpbmctdGlnaHQ6LS4wMjVlbTstLWxlYWRpbmctc251ZzoxLjM3NTstLXJhZGl1cy1tZDpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpOy0tcmFkaXVzLTR4bDoycmVtOy0tZWFzZS1pbjpjdWJpYy1iZXppZXIoLjQsIDAsIDEsIDEpOy0tZWFzZS1vdXQ6Y3ViaWMtYmV6aWVyKDAsIDAsIC4yLCAxKTstLWFuaW1hdGUtc3BpbjpzcGluIDFzIGxpbmVhciBpbmZpbml0ZTstLWFuaW1hdGUtcHVsc2U6cHVsc2UgMnMgY3ViaWMtYmV6aWVyKC40LCAwLCAuNiwgMSkgaW5maW5pdGU7LS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb246LjE1czstLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LCAwLCAuMiwgMSk7LS1kZWZhdWx0LWZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZjstLWRlZmF1bHQtbW9uby1mb250LWZhbWlseTp1aS1tb25vc3BhY2UsICJTRiBNb25vIiwgIkNhc2NhZGlhIENvZGUiLCAiUm9ib3RvIE1vbm8iLCBDb25zb2xhcywgbW9ub3NwYWNlfX1AbGF5ZXIgYmFzZXsqLDphZnRlciw6YmVmb3JlLDo6YmFja2Ryb3B7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6MCBzb2xpZDttYXJnaW46MDtwYWRkaW5nOjB9aHRtbCw6aG9zdHstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTt0YWItc2l6ZTo0O2xpbmUtaGVpZ2h0OjEuNTtmb250LWZhbWlseTp2YXIoLS1kZWZhdWx0LWZvbnQtZmFtaWx5LC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCAiTm90byBTYW5zIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSIpO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtZm9udC12YXJpYXRpb24tc2V0dGluZ3Msbm9ybWFsKTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDstd2Via2l0LXRleHQtZGVjb3JhdGlvbjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Y29kZSxrYmQsc2FtcCxwcmV7Zm9udC1mYW1pbHk6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5LHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtbW9uby1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfTotbW96LWZvY3VzcmluZzp3aGVyZSg6bm90KGlmcmFtZSkpe291dGxpbmU6YXV0b31wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtfW9sLHVsLG1lbnV7bGlzdC1zdHlsZTpub25lfWltZyxzdmcsdmlkZW8sY2FudmFzLGF1ZGlvLGlmcmFtZSxlbWJlZCxvYmplY3R7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6YmxvY2t9aW1nLHZpZGVve21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfWJ1dHRvbixpbnB1dCxzZWxlY3Qsb3B0Z3JvdXAsdGV4dGFyZWF7Zm9udDppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtjb2xvcjppbmhlcml0O29wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlci1yYWRpdXM6MH06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwMDtib3JkZXItcmFkaXVzOjB9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OmJvbGRlcn06d2hlcmUoc2VsZWN0OmlzKFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXAgb3B0aW9ue3BhZGRpbmctaW5saW5lLXN0YXJ0OjIwcHh9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnttYXJnaW4taW5saW5lLWVuZDo0cHh9OjpwbGFjZWhvbGRlcntvcGFjaXR5OjF9QHN1cHBvcnRzIChub3QgKCgtd2Via2l0LWFwcGVhcmFuY2U6LWFwcGxlLXBheS1idXR0b24pKSkgb3IgKGNvbnRhaW4taW50cmluc2ljLXNpemU6MXB4KXs6OnBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7OjpwbGFjZWhvbGRlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIGN1cnJlbnRjb2xvciA1MCUsIHRyYW5zcGFyZW50KX19fXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWRhdGUtYW5kLXRpbWUtdmFsdWV7bWluLWhlaWdodDoxbGg7dGV4dC1hbGlnbjppbmhlcml0fTo6LXdlYmtpdC1kYXRldGltZS1lZGl0e2Rpc3BsYXk6aW5saW5lLWZsZXh9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtZmllbGRzLXdyYXBwZXJ7cGFkZGluZzowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0e3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtZGF5LWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXNlY29uZC1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWlsbGlzZWNvbmQtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1lcmlkaWVtLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcntsaW5lLWhlaWdodDoxfTotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfWJ1dHRvbixpbnB1dDp3aGVyZShbdHlwZT1idXR0b25dLFt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdKXthcHBlYXJhbmNlOmJ1dHRvbn06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2FwcGVhcmFuY2U6YnV0dG9ufTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b306Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W2hpZGRlbl06d2hlcmUoOm5vdChbaGlkZGVuPXVudGlsLWZvdW5kXSkpe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Kntib3JkZXItY29sb3I6dmFyKC0tYm9yZGVyKTtvdXRsaW5lLWNvbG9yOnZhcigtLXJpbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsqe291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1yaW5nKSA1MCUsIHRyYW5zcGFyZW50KX19Ym9keXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLWZvcmVncm91bmQpO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtcztmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmfX1AbGF5ZXIgY29tcG9uZW50cztAbGF5ZXIgdXRpbGl0aWVzey5cQGNvbnRhaW5lclwvY2FyZC1oZWFkZXJ7Y29udGFpbmVyOmNhcmQtaGVhZGVyL2lubGluZS1zaXplfS5wb2ludGVyLWV2ZW50cy1hdXRve3BvaW50ZXItZXZlbnRzOmF1dG99LnBvaW50ZXItZXZlbnRzLW5vbmV7cG9pbnRlci1ldmVudHM6bm9uZX0uY29sbGFwc2V7dmlzaWJpbGl0eTpjb2xsYXBzZX0uaW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVufS52aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZX0uc3Itb25seXtjbGlwLXBhdGg6aW5zZXQoNTAlKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXdpZHRoOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbn0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uc3RhdGlje3Bvc2l0aW9uOnN0YXRpY30uaW5zZXQteC0we2luc2V0LWlubGluZTowfS5pbnNldC15LTB7aW5zZXQtYmxvY2s6MH0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTV7dG9wOmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0udG9wLTEwMHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwMCl9LnJpZ2h0LTF7cmlnaHQ6dmFyKC0tc3BhY2luZyl9LnJpZ2h0LTFcLjV7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LnJpZ2h0LTJ7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5ib3R0b20tMHtib3R0b206MH0ubGVmdC0we2xlZnQ6MH0ubGVmdC0yXC41e2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LnotMTB7ei1pbmRleDoxMH0uei01MHt6LWluZGV4OjUwfS5jb2wtc3Bhbi1mdWxse2dyaWQtY29sdW1uOjEvLTF9LmNvbnRhaW5lcnt3aWR0aDoxMDAlfUBtZWRpYSAod2lkdGg+PTQwcmVtKXsuY29udGFpbmVye21heC13aWR0aDo0MHJlbX19QG1lZGlhICh3aWR0aD49NDhyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjQ4cmVtfX1AbWVkaWEgKHdpZHRoPj02NHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NjRyZW19fUBtZWRpYSAod2lkdGg+PTgwcmVtKXsuY29udGFpbmVye21heC13aWR0aDo4MHJlbX19QG1lZGlhICh3aWR0aD49OTZyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjk2cmVtfX0uLW14LTFcLjV7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEuNSl9Lm14LWF1dG97bWFyZ2luLWlubGluZTphdXRvfS4tbXQtMXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAtMSl9Lm10LTBcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpfS5tdC0xe21hcmdpbi10b3A6dmFyKC0tc3BhY2luZyl9Lm10LTJ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Li1tci0xe21hcmdpbi1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEpfS5tYi0xXC41e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9Lm1iLTJ7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Lm1iLTN7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9Lm1sLTF7bWFyZ2luLWxlZnQ6dmFyKC0tc3BhY2luZyl9Lm1sLWF1dG97bWFyZ2luLWxlZnQ6YXV0b30uYmxvY2t7ZGlzcGxheTpibG9ja30uY29udGVudHN7ZGlzcGxheTpjb250ZW50c30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5pbmxpbmV7ZGlzcGxheTppbmxpbmV9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0udGFibGV7ZGlzcGxheTp0YWJsZX0udGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGx9LnRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvd30uc2l6ZS0yXC41e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0uc2l6ZS0ze3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzKTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5zaXplLTNcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpfS5zaXplLTR7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnNpemUtNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0uc2l6ZS02e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA2KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5zaXplLTd7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDcpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNyl9LnNpemUtOHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0uc2l6ZS05e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA5KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDkpfS5zaXplLTEye3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAxMik7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxMil9LmgtMVwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LmgtM3toZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5oLTR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uaC01e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9LmgtNntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5oLTd7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA3KX0uaC04e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LmgtOXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDkpfS5oLTEwe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTApfS5oLTY0e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNjQpfS5oLTcye2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNzIpfS5oLVxbY2FsY1woMTAwXCUtMXB4XClcXXtoZWlnaHQ6Y2FsYygxMDAlIC0gMXB4KX0uaC1mdWxse2hlaWdodDoxMDAlfS5tYXgtaC1cKC0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XCl7bWF4LWhlaWdodDp2YXIoLS1yZWthLXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpfS5taW4taC1cWzcwdmhcXXttaW4taGVpZ2h0Ojcwdmh9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnctMTJ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEyKX0udy0xNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTQpfS53LTE2e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAxNil9LnctMjB7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIwKX0udy0yNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMjQpfS53LTI4e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAyOCl9LnctMzZ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDM2KX0udy00MHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNDApfS53LTQ0e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0NCl9LnctNDh7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQ4KX0udy01Nnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNTYpfS53LWZpdHt3aWR0aDpmaXQtY29udGVudH0udy1mdWxse3dpZHRoOjEwMCV9Lm1heC13LTMye21heC13aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMzIpfS5tYXgtdy00MHttYXgtd2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQwKX0ubWF4LXctZnVsbHttYXgtd2lkdGg6MTAwJX0ubWF4LXctbWR7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci1tZCl9Lm1heC13LXNte21heC13aWR0aDp2YXIoLS1jb250YWluZXItc20pfS5tYXgtdy14c3ttYXgtd2lkdGg6dmFyKC0tY29udGFpbmVyLXhzKX0ubWluLXctMHttaW4td2lkdGg6MH0ubWluLXctMzZ7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzNil9LmZsZXgtMXtmbGV4OjF9LnNocmluay0we2ZsZXgtc2hyaW5rOjB9LmNhcHRpb24tYm90dG9te2NhcHRpb24tc2lkZTpib3R0b219Lm9yaWdpbi1cKC0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCl7dHJhbnNmb3JtLW9yaWdpbjp2YXIoLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pfS4tdHJhbnNsYXRlLXktMVwvMnstLXR3LXRyYW5zbGF0ZS15OmNhbGMoY2FsYygxIC8gMiAqIDEwMCUpICogLTEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS50cmFuc2xhdGUteS0yey0tdHctdHJhbnNsYXRlLXk6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS50cmFuc2Zvcm17dHJhbnNmb3JtOnZhcigtLXR3LXJvdGF0ZS14LCkgdmFyKC0tdHctcm90YXRlLXksKSB2YXIoLS10dy1yb3RhdGUteiwpIHZhcigtLXR3LXNrZXcteCwpIHZhcigtLXR3LXNrZXcteSwpfS5hbmltYXRlLXB1bHNle2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXB1bHNlKX0uYW5pbWF0ZS1zcGlue2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXNwaW4pfS5jdXJzb3ItZGVmYXVsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9Lmxpc3QtZGlzY3tsaXN0LXN0eWxlLXR5cGU6ZGlzY30uYXV0by1yb3dzLW1pbntncmlkLWF1dG8tcm93czptaW4tY29udGVudH0uZ3JpZC1jb2xzLTF7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgxLG1pbm1heCgwLDFmcikpfS5ncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC1jb2wtcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX0uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmR9Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uanVzdGlmeS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uanVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5qdXN0aWZ5LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5nYXAtMFwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KX0uZ2FwLTF7Z2FwOnZhcigtLXNwYWNpbmcpfS5nYXAtMVwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LmdhcC0ye2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LmdhcC0ze2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LmdhcC00e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LmdhcC02e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9OndoZXJlKC5zcGFjZS15LTBcLjU+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpfS5nYXAteC0ze2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5nYXAteC00e2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5nYXAteC02e2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5nYXAteS0xe3Jvdy1nYXA6dmFyKC0tc3BhY2luZyl9LmdhcC15LTFcLjV7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0udHJ1bmNhdGV7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy14LWF1dG97b3ZlcmZsb3cteDphdXRvfS5vdmVyZmxvdy14LWhpZGRlbntvdmVyZmxvdy14OmhpZGRlbn0ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ub3ZlcmZsb3cteS1oaWRkZW57b3ZlcmZsb3cteTpoaWRkZW59LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czouMjVyZW19LnJvdW5kZWQtNHhse2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLTR4bCl9LnJvdW5kZWQtXFttaW5cKHZhclwoLS1yYWRpdXMtbWRcKVwsMTBweFwpXF17Ym9yZGVyLXJhZGl1czptaW4odmFyKC0tcmFkaXVzLW1kKSwgMTBweCl9LnJvdW5kZWQtXFttaW5cKHZhclwoLS1yYWRpdXMtbWRcKVwsMTJweFwpXF17Ym9yZGVyLXJhZGl1czptaW4odmFyKC0tcmFkaXVzLW1kKSwgMTJweCl9LnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjIxNDc0ODM2NDdweH0ucm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyl9LnJvdW5kZWQtbWR7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5yb3VuZGVkLXNte2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gNHB4KX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCl9LnJvdW5kZWQtdC14bHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KX0uYm9yZGVye2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDoxcHh9LmJvcmRlci1ie2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uYm9yZGVyLWJvcmRlcntib3JkZXItY29sb3I6dmFyKC0tYm9yZGVyKX0uYm9yZGVyLWlucHV0e2JvcmRlci1jb2xvcjp2YXIoLS1pbnB1dCl9LmJvcmRlci1zdGF0dXMtd2FyblwvNDB7Ym9yZGVyLWNvbG9yOnZhcigtLXN0YXR1cy13YXJuKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci1zdGF0dXMtd2FyblwvNDB7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tc3RhdHVzLXdhcm4pIDQwJSwgdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXRyYW5zcGFyZW50e2JvcmRlci1jb2xvcjojMDAwMH0uYmctYWNjZW50e2JhY2tncm91bmQtY29sb3I6dmFyKC0tYWNjZW50KX0uYmctYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJhY2tncm91bmQpfS5iZy1iYXItYW1iZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1iYXItYW1iZXIpfS5iZy1jYXJke2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2FyZCl9LmJnLWRlc3RydWN0aXZlLC5iZy1kZXN0cnVjdGl2ZVwvMTB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy1kZXN0cnVjdGl2ZVwvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSAxMCUsIHRyYW5zcGFyZW50KX19LmJnLW11dGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXV0ZWQpfS5iZy1wb3BvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tcG9wb3Zlcil9LmJnLXByaW1hcnksLmJnLXByaW1hcnlcLzEwe2JhY2tncm91bmQtY29sb3I6dmFyKC0tcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy1wcmltYXJ5XC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tcHJpbWFyeSkgMTAlLCB0cmFuc3BhcmVudCl9fS5iZy1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1zZWNvbmRhcnkpfS5iZy10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfS5iZy1jbGlwLXBhZGRpbmd7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94fS5wLTBcLjc1e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC43NSl9LnAtMntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucC0ze3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5wLTR7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnB4LTFcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LnB4LTJ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5weC0yXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5weC0ze3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucHgtNHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnB5LTBcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpfS5weS0xe3BhZGRpbmctYmxvY2s6dmFyKC0tc3BhY2luZyl9LnB5LTJ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnB5LTJcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0ucHktM3twYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucHktNHtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0ucHktNntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0ucHktOHtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0ucHktMTB7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMTApfS5wdC0we3BhZGRpbmctdG9wOjB9LnByLTJ7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnByLTh7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LnByLTEwe3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwKX0ucGItMVwuNXtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0ucGItMntwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnBiLTJcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LnBiLVxbY2FsY1woZW52XChzYWZlLWFyZWEtaW5zZXQtYm90dG9tXClcKzFyZW1cKVxde3BhZGRpbmctYm90dG9tOmNhbGMoZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pICsgMXJlbSl9LnBsLTFcLjV7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5wbC0yXC41e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0ucGwtNHtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5wbC04e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LmFsaWduLW1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvbnQtaGVhZGluZ3tmb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpfS5mb250LW1vbm97Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLFNGIE1vbm8sQ2FzY2FkaWEgQ29kZSxSb2JvdG8gTW9ubyxDb25zb2xhcyxtb25vc3BhY2V9LnRleHQtMnhse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTJ4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQpKX0udGV4dC1iYXNle2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LWJhc2UpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1iYXNlLS1saW5lLWhlaWdodCkpfS50ZXh0LWxne2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LWxnKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtbGctLWxpbmUtaGVpZ2h0KSl9LnRleHQtc217Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0udGV4dC14bHtmb250LXNpemU6dmFyKC0tdGV4dC14bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXhsLS1saW5lLWhlaWdodCkpfS50ZXh0LXhze2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXhzKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQteHMtLWxpbmUtaGVpZ2h0KSl9LnRleHQtXFswXC44cmVtXF17Zm9udC1zaXplOi44cmVtfS5sZWFkaW5nLXNudWd7LS10dy1sZWFkaW5nOnZhcigtLWxlYWRpbmctc251Zyk7bGluZS1oZWlnaHQ6dmFyKC0tbGVhZGluZy1zbnVnKX0uZm9udC1tZWRpdW17LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmZvbnQtbm9ybWFsey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpfS5mb250LXNlbWlib2xkey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKX0udHJhY2tpbmctdGlnaHR7LS10dy10cmFja2luZzp2YXIoLS10cmFja2luZy10aWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tdHJhY2tpbmctdGlnaHQpfS50ZXh0LWJhbGFuY2V7dGV4dC13cmFwOmJhbGFuY2V9LmJyZWFrLXdvcmRze292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0uYnJlYWstYWxse3dvcmQtYnJlYWs6YnJlYWstYWxsfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LndoaXRlc3BhY2UtcHJle3doaXRlLXNwYWNlOnByZX0udGV4dC1hY2NlbnQtZm9yZWdyb3VuZHtjb2xvcjp2YXIoLS1hY2NlbnQtZm9yZWdyb3VuZCl9LnRleHQtY2FyZC1mb3JlZ3JvdW5ke2NvbG9yOnZhcigtLWNhcmQtZm9yZWdyb3VuZCl9LnRleHQtY2hhcnQtcmVxdWVzdHN7Y29sb3I6dmFyKC0tY2hhcnQtcmVxdWVzdHMpfS50ZXh0LWRlc3RydWN0aXZle2NvbG9yOnZhcigtLWRlc3RydWN0aXZlKX0udGV4dC1mb3JlZ3JvdW5kLC50ZXh0LWZvcmVncm91bmRcLzYwe2NvbG9yOnZhcigtLWZvcmVncm91bmQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC1mb3JlZ3JvdW5kXC82MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWZvcmVncm91bmQpIDYwJSwgdHJhbnNwYXJlbnQpfX0udGV4dC1pbmhlcml0e2NvbG9yOmluaGVyaXR9LnRleHQtbXV0ZWQtZm9yZWdyb3VuZCwudGV4dC1tdXRlZC1mb3JlZ3JvdW5kXC80MHtjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwvNDB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSA0MCUsIHRyYW5zcGFyZW50KX19LnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwvNjB7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LW11dGVkLWZvcmVncm91bmRcLzYwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkgNjAlLCB0cmFuc3BhcmVudCl9fS50ZXh0LXBvcG92ZXItZm9yZWdyb3VuZHtjb2xvcjp2YXIoLS1wb3BvdmVyLWZvcmVncm91bmQpfS50ZXh0LXByaW1hcnl7Y29sb3I6dmFyKC0tcHJpbWFyeSl9LnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5ke2NvbG9yOnZhcigtLXByaW1hcnktZm9yZWdyb3VuZCl9LnRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmR7Y29sb3I6dmFyKC0tc2Vjb25kYXJ5LWZvcmVncm91bmQpfS50ZXh0LXN0YXR1cy13YXJue2NvbG9yOnZhcigtLXN0YXR1cy13YXJuKX0udGFidWxhci1udW1zey0tdHctbnVtZXJpYy1zcGFjaW5nOnRhYnVsYXItbnVtcztmb250LXZhcmlhbnQtbnVtZXJpYzp2YXIoLS10dy1vcmRpbmFsLCkgdmFyKC0tdHctc2xhc2hlZC16ZXJvLCkgdmFyKC0tdHctbnVtZXJpYy1maWd1cmUsKSB2YXIoLS10dy1udW1lcmljLXNwYWNpbmcsKSB2YXIoLS10dy1udW1lcmljLWZyYWN0aW9uLCl9LnVuZGVybGluZS1vZmZzZXQtNHt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6NHB4fS5vcGFjaXR5LTB7b3BhY2l0eTowfS5zaGFkb3ctbGd7LS10dy1zaGFkb3c6MCAxMHB4IDE1cHggLTNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwgMCA0cHggNnB4IC00cHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSk7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLCB2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXR3LXJpbmctc2hhZG93KSwgdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LW1key0tdHctc2hhZG93OjAgNHB4IDZweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLCAwIDJweCA0cHggLTJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5yaW5nLC5yaW5nLTF7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygxcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5yaW5nLWZvcmVncm91bmRcLzEwey0tdHctcmluZy1jb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnJpbmctZm9yZWdyb3VuZFwvMTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZm9yZWdyb3VuZCkgMTAlLCB0cmFuc3BhcmVudCl9fS5vdXRsaW5lLWhpZGRlbnstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7Lm91dGxpbmUtaGlkZGVue291dGxpbmUtb2Zmc2V0OjJweDtvdXRsaW5lOjJweCBzb2xpZCAjMDAwMH19Lm91dGxpbmV7b3V0bGluZS1zdHlsZTp2YXIoLS10dy1vdXRsaW5lLXN0eWxlKTtvdXRsaW5lLXdpZHRoOjFweH0uZmlsdGVye2ZpbHRlcjp2YXIoLS10dy1ibHVyLCkgdmFyKC0tdHctYnJpZ2h0bmVzcywpIHZhcigtLXR3LWNvbnRyYXN0LCkgdmFyKC0tdHctZ3JheXNjYWxlLCkgdmFyKC0tdHctaHVlLXJvdGF0ZSwpIHZhcigtLXR3LWludmVydCwpIHZhcigtLXR3LXNhdHVyYXRlLCkgdmFyKC0tdHctc2VwaWEsKSB2YXIoLS10dy1kcm9wLXNoYWRvdywpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3Isb3V0bGluZS1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsLS10dy1ncmFkaWVudC1mcm9tLC0tdHctZ3JhZGllbnQtdmlhLC0tdHctZ3JhZGllbnQtdG8sb3BhY2l0eSxib3gtc2hhZG93LHRyYW5zZm9ybSx0cmFuc2xhdGUsc2NhbGUscm90YXRlLGZpbHRlciwtd2Via2l0LWJhY2tkcm9wLWZpbHRlcixiYWNrZHJvcC1maWx0ZXIsZGlzcGxheSxjb250ZW50LXZpc2liaWxpdHksb3ZlcmxheSxwb2ludGVyLWV2ZW50czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLWFsbHt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LmR1cmF0aW9uLTEwMHstLXR3LWR1cmF0aW9uOi4xczt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZHVyYXRpb24tMTUwey0tdHctZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LmVhc2UtaW57LS10dy1lYXNlOnZhcigtLWVhc2UtaW4pO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWVhc2UtaW4pfS5lYXNlLW91dHstLXR3LWVhc2U6dmFyKC0tZWFzZS1vdXQpO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWVhc2Utb3V0KX0ub3V0bGluZS1ub25ley0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uc2VsZWN0LW5vbmV7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnNlbGVjdC10ZXh0ey13ZWJraXQtdXNlci1zZWxlY3Q6dGV4dDt1c2VyLXNlbGVjdDp0ZXh0fS5ydW5uaW5ne2FuaW1hdGlvbi1wbGF5LXN0YXRlOnJ1bm5pbmd9Lm5vdC1sYXN0XDpib3JkZXItYjpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uZ3JvdXAtaGFzLVxbXD5zdmdcXVwvYWxlcnRcOmNvbC1zdGFydC0yOmlzKDp3aGVyZSguZ3JvdXBcL2FsZXJ0KTpoYXMoPnN2ZykgKil7Z3JpZC1jb2x1bW4tc3RhcnQ6Mn0uZ3JvdXAtYXJpYS1leHBhbmRlZFwvYWNjb3JkaW9uLXRyaWdnZXJcOmhpZGRlbjppcyg6d2hlcmUoLmdyb3VwXC9hY2NvcmRpb24tdHJpZ2dlcilbYXJpYS1leHBhbmRlZD10cnVlXSAqKXtkaXNwbGF5Om5vbmV9Lmdyb3VwLWFyaWEtZXhwYW5kZWRcL2FjY29yZGlvbi10cmlnZ2VyXDppbmxpbmU6aXMoOndoZXJlKC5ncm91cFwvYWNjb3JkaW9uLXRyaWdnZXIpW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0gKil7ZGlzcGxheTppbmxpbmV9Lmdyb3VwLWRhdGEtXFtzaXplXD1zbVxdXC9jYXJkXDpweC0zOmlzKDp3aGVyZSguZ3JvdXBcL2NhcmQpW2RhdGEtc2l6ZT1zbV0gKil7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5ncm91cC1kYXRhLVxbc2l6ZVw9c21cXVwvY2FyZFw6dGV4dC1zbTppcyg6d2hlcmUoLmdyb3VwXC9jYXJkKVtkYXRhLXNpemU9c21dICope2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9Lmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6YmctdHJhbnNwYXJlbnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKil7YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZ3JvdXAtZGF0YS1ob3Jpem9udGFsXC90YWJzXDpoLTg6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249aG9yaXpvbnRhbF0pICope2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6bWF4LXctZnVsbDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKil7bWF4LXdpZHRoOjEwMCV9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6ZmxleC1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKSAqKXtmbGV4Om5vbmV9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6anVzdGlmeS1zdGFydDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKil7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6b3ZlcmZsb3cteC1hdXRvOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKSAqKXtvdmVyZmxvdy14OmF1dG99Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6b3ZlcmZsb3cteS1oaWRkZW46aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249aG9yaXpvbnRhbF0pICope292ZXJmbG93LXk6aGlkZGVufS5ncm91cC1kYXRhLXZlcnRpY2FsXC90YWJzXDpoLWZpdDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj12ZXJ0aWNhbF0pICope2hlaWdodDpmaXQtY29udGVudH0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6dy1mdWxsOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPXZlcnRpY2FsXSkgKil7d2lkdGg6MTAwJX0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6ZmxleC1jb2w6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249dmVydGljYWxdKSAqKXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lmdyb3VwLWRhdGEtdmVydGljYWxcL3RhYnNcOmp1c3RpZnktc3RhcnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249dmVydGljYWxdKSAqKXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uZmlsZVw6aW5saW5lLWZsZXg6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXh9LmZpbGVcOmgtNjo6ZmlsZS1zZWxlY3Rvci1idXR0b257aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0uZmlsZVw6Ym9yZGVyLTA6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDowfS5maWxlXDpiZy10cmFuc3BhcmVudDo6ZmlsZS1zZWxlY3Rvci1idXR0b257YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZmlsZVw6dGV4dC1zbTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0uZmlsZVw6Zm9udC1tZWRpdW06OmZpbGUtc2VsZWN0b3ItYnV0dG9uey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pfS5maWxlXDp0ZXh0LWZvcmVncm91bmQ6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2NvbG9yOnZhcigtLWZvcmVncm91bmQpfS5wbGFjZWhvbGRlclw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX0uYWZ0ZXJcOmFic29sdXRlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7cG9zaXRpb246YWJzb2x1dGV9LmFmdGVyXDpib3R0b20tXFstNXB4XF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtib3R0b206LTVweH0uYWZ0ZXJcOmJnLWZvcmVncm91bmQ6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWZvcmVncm91bmQpfS5hZnRlclw6b3BhY2l0eS0wOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7b3BhY2l0eTowfS5hZnRlclw6dHJhbnNpdGlvbi1vcGFjaXR5OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6YWZ0ZXJcOmluc2V0LXgtMDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKik6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1pbmxpbmU6MH0uZ3JvdXAtZGF0YS1ob3Jpem9udGFsXC90YWJzXDphZnRlclw6Ym90dG9tLVxbLTVweFxdOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2JvdHRvbTotNXB4fS5ncm91cC1kYXRhLWhvcml6b250YWxcL3RhYnNcOmFmdGVyXDpoLTBcLjU6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249aG9yaXpvbnRhbF0pICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAuNSl9Lmdyb3VwLWRhdGEtdmVydGljYWxcL3RhYnNcOmFmdGVyXDppbnNldC15LTA6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249dmVydGljYWxdKSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0LWJsb2NrOjB9Lmdyb3VwLWRhdGEtdmVydGljYWxcL3RhYnNcOmFmdGVyXDotcmlnaHQtMTppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj12ZXJ0aWNhbF0pICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xKX0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6YWZ0ZXJcOnctMFwuNTppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj12ZXJ0aWNhbF0pICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KX0ubGFzdFw6Ym9yZGVyLTA6bGFzdC1jaGlsZHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0ubGFzdFw6cGItMDpsYXN0LWNoaWxke3BhZGRpbmctYm90dG9tOjB9QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy1hY2NlbnQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1hY2NlbnQpfS5ob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzIwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLWRlc3RydWN0aXZlXC8yMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDIwJSwgdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLW11dGVkOmhvdmVyLC5ob3Zlclw6YmctbXV0ZWRcLzUwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXV0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLW11dGVkXC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tbXV0ZWQpIDUwJSwgdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXNlY29uZGFyeVwvODA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXNlY29uZGFyeVwvODA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLXNlY29uZGFyeSkgODAlLCB0cmFuc3BhcmVudCl9fS5ob3Zlclw6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZDpob3Zlcntjb2xvcjp2YXIoLS1hY2NlbnQtZm9yZWdyb3VuZCl9LmhvdmVyXDp0ZXh0LWZvcmVncm91bmQ6aG92ZXJ7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9LmhvdmVyXDp0ZXh0LW11dGVkLWZvcmVncm91bmQ6aG92ZXJ7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCl9LmhvdmVyXDp0ZXh0LXByaW1hcnk6aG92ZXJ7Y29sb3I6dmFyKC0tcHJpbWFyeSl9LmhvdmVyXDp1bmRlcmxpbmU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS5ob3Zlclw6b3BhY2l0eS05MDpob3ZlcntvcGFjaXR5Oi45fX0uZm9jdXNcOmJnLWFjY2VudDpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWFjY2VudCl9LmZvY3VzXDp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kOmZvY3VzLDppcygubm90LWRhdGEtXFt2YXJpYW50XD1kZXN0cnVjdGl2ZVxdXDpmb2N1c1w6XCpcKlw6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZDpub3QoW2RhdGEtdmFyaWFudD1kZXN0cnVjdGl2ZV0pOmZvY3VzICope2NvbG9yOnZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKX0uZm9jdXMtdmlzaWJsZVw6Ym9yZGVyLWRlc3RydWN0aXZlXC80MDpmb2N1cy12aXNpYmxle2JvcmRlci1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5mb2N1cy12aXNpYmxlXDpib3JkZXItZGVzdHJ1Y3RpdmVcLzQwOmZvY3VzLXZpc2libGV7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDQwJSwgdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ym9yZGVyLXJpbmc6Zm9jdXMtdmlzaWJsZXtib3JkZXItY29sb3I6dmFyKC0tcmluZyl9LmZvY3VzLXZpc2libGVcOnJpbmctMjpmb2N1cy12aXNpYmxley0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLCB2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXR3LXJpbmctc2hhZG93KSwgdmFyKC0tdHctc2hhZG93KX0uZm9jdXMtdmlzaWJsZVw6cmluZy0zOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygzcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5mb2N1cy12aXNpYmxlXDpyaW5nLWRlc3RydWN0aXZlXC8yMDpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5mb2N1cy12aXNpYmxlXDpyaW5nLWRlc3RydWN0aXZlXC8yMDpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSAyMCUsIHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOnJpbmctcmluZ1wvNTA6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6dmFyKC0tcmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5mb2N1cy12aXNpYmxlXDpyaW5nLXJpbmdcLzUwOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tcmluZykgNTAlLCB0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLTE6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MXB4fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXJpbmc6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOnZhcigtLXJpbmcpfS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLW5vbmU6Zm9jdXMtdmlzaWJsZXstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9LmZvY3VzLXZpc2libGVcOmFmdGVyXDpib3JkZXItcmluZzpmb2N1cy12aXNpYmxlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLWNvbG9yOnZhcigtLXJpbmcpfS5hY3RpdmVcOm5vdC1hcmlhLVxbaGFzcG9wdXBcXVw6dHJhbnNsYXRlLXktcHg6YWN0aXZlOm5vdChbYXJpYS1oYXNwb3B1cF0pey0tdHctdHJhbnNsYXRlLXk6MXB4O3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kaXNhYmxlZFw6cG9pbnRlci1ldmVudHMtbm9uZTpkaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lfS5kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcOmJnLWlucHV0XC81MDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRpc2FibGVkXDpiZy1pbnB1dFwvNTA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWlucHV0KSA1MCUsIHRyYW5zcGFyZW50KX19LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9OndoZXJlKFtkYXRhLXNsb3Q9YnV0dG9uLWdyb3VwXSkgLmluLWRhdGEtXFtzbG90XD1idXR0b24tZ3JvdXBcXVw6cm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyl9Lmhhcy1hcmlhLWV4cGFuZGVkXDpiZy1tdXRlZFwvNTA6aGFzKFthcmlhLWV4cGFuZGVkPXRydWVdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW11dGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7Lmhhcy1hcmlhLWV4cGFuZGVkXDpiZy1tdXRlZFwvNTA6aGFzKFthcmlhLWV4cGFuZGVkPXRydWVdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tbXV0ZWQpIDUwJSwgdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtpY29uXD1pbmxpbmUtZW5kXF1cOnByLTE6aGFzKFtkYXRhLWljb249aW5saW5lLWVuZF0pe3BhZGRpbmctcmlnaHQ6dmFyKC0tc3BhY2luZyl9Lmhhcy1kYXRhLVxbaWNvblw9aW5saW5lLWVuZFxdXDpwci0xXC41OmhhcyhbZGF0YS1pY29uPWlubGluZS1lbmRdKXtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5oYXMtZGF0YS1cW2ljb25cPWlubGluZS1lbmRcXVw6cHItMjpoYXMoW2RhdGEtaWNvbj1pbmxpbmUtZW5kXSl7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Lmhhcy1kYXRhLVxbaWNvblw9aW5saW5lLXN0YXJ0XF1cOnBsLTE6aGFzKFtkYXRhLWljb249aW5saW5lLXN0YXJ0XSl7cGFkZGluZy1sZWZ0OnZhcigtLXNwYWNpbmcpfS5oYXMtZGF0YS1cW2ljb25cPWlubGluZS1zdGFydFxdXDpwbC0xXC41OmhhcyhbZGF0YS1pY29uPWlubGluZS1zdGFydF0pe3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0uaGFzLWRhdGEtXFtpY29uXD1pbmxpbmUtc3RhcnRcXVw6cGwtMjpoYXMoW2RhdGEtaWNvbj1pbmxpbmUtc3RhcnRdKXtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5oYXMtZGF0YS1cW3Nsb3RcPWFsZXJ0LWFjdGlvblxdXDpyZWxhdGl2ZTpoYXMoW2RhdGEtc2xvdD1hbGVydC1hY3Rpb25dKXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFzLWRhdGEtXFtzbG90XD1hbGVydC1hY3Rpb25cXVw6cHItMTg6aGFzKFtkYXRhLXNsb3Q9YWxlcnQtYWN0aW9uXSl7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTgpfS5oYXMtZGF0YS1cW3Nsb3RcPWNhcmQtYWN0aW9uXF1cOmdyaWQtY29scy1cWzFmcl9hdXRvXF06aGFzKFtkYXRhLXNsb3Q9Y2FyZC1hY3Rpb25dKXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG99Lmhhcy1kYXRhLVxbc2xvdFw9Y2FyZC1kZXNjcmlwdGlvblxdXDpncmlkLXJvd3MtXFthdXRvX2F1dG9cXTpoYXMoW2RhdGEtc2xvdD1jYXJkLWRlc2NyaXB0aW9uXSl7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0b30uaGFzLWRhdGEtXFtzbG90XD1jYXJkLWZvb3RlclxdXDpwYi0wOmhhcyhbZGF0YS1zbG90PWNhcmQtZm9vdGVyXSl7cGFkZGluZy1ib3R0b206MH0uaGFzLVxbXD5pbWdcOmZpcnN0LWNoaWxkXF1cOnB0LTA6aGFzKD5pbWc6Zmlyc3QtY2hpbGQpe3BhZGRpbmctdG9wOjB9Lmhhcy1cW1w+c3ZnXF1cOmdyaWQtY29scy1cW2F1dG9fMWZyXF06aGFzKD5zdmcpe2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcn0uaGFzLVxbXD5zdmdcXVw6Z2FwLXgtMjpoYXMoPnN2Zyl7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LmFyaWEtZXhwYW5kZWRcOmJnLW11dGVkW2FyaWEtZXhwYW5kZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9LmFyaWEtZXhwYW5kZWRcOmJnLXNlY29uZGFyeVthcmlhLWV4cGFuZGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6dmFyKC0tc2Vjb25kYXJ5KX0uYXJpYS1leHBhbmRlZFw6dGV4dC1mb3JlZ3JvdW5kW2FyaWEtZXhwYW5kZWQ9dHJ1ZV17Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9LmFyaWEtZXhwYW5kZWRcOnRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmRbYXJpYS1leHBhbmRlZD10cnVlXXtjb2xvcjp2YXIoLS1zZWNvbmRhcnktZm9yZWdyb3VuZCl9LmFyaWEtaW52YWxpZFw6Ym9yZGVyLWRlc3RydWN0aXZlW2FyaWEtaW52YWxpZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfS5hcmlhLWludmFsaWRcOnJpbmctM1thcmlhLWludmFsaWQ9dHJ1ZV17LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygzcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5hcmlhLWludmFsaWRcOnJpbmctZGVzdHJ1Y3RpdmVcLzIwW2FyaWEtaW52YWxpZD10cnVlXXstLXR3LXJpbmctY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYXJpYS1pbnZhbGlkXDpyaW5nLWRlc3RydWN0aXZlXC8yMFthcmlhLWludmFsaWQ9dHJ1ZV17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDIwJSwgdHJhbnNwYXJlbnQpfX0uZGF0YS1wbGFjZWhvbGRlclw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kW2RhdGEtcGxhY2Vob2xkZXJde2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfS5kYXRhLVxbYWxpZ24tdHJpZ2dlclw9dHJ1ZVxdXDphbmltYXRlLW5vbmVbZGF0YS1hbGlnbi10cmlnZ2VyPXRydWVde2FuaW1hdGlvbjpub25lfS5kYXRhLVxbZGlzYWJsZWRcXVw6cG9pbnRlci1ldmVudHMtbm9uZVtkYXRhLWRpc2FibGVkXXtwb2ludGVyLWV2ZW50czpub25lfS5kYXRhLVxbZGlzYWJsZWRcXVw6b3BhY2l0eS01MFtkYXRhLWRpc2FibGVkXXtvcGFjaXR5Oi41fS5kYXRhLVxbcG9zaXRpb25cPXBvcHBlclxdXDpoLVwoLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodFwpW2RhdGEtcG9zaXRpb249cG9wcGVyXXtoZWlnaHQ6dmFyKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpfS5kYXRhLVxbcG9zaXRpb25cPXBvcHBlclxdXDp3LWZ1bGxbZGF0YS1wb3NpdGlvbj1wb3BwZXJde3dpZHRoOjEwMCV9LmRhdGEtXFtwb3NpdGlvblw9cG9wcGVyXF1cOm1pbi13LVwoLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoXClbZGF0YS1wb3NpdGlvbj1wb3BwZXJde21pbi13aWR0aDp2YXIoLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoKX0uZGF0YS1cW3NpZGVcPWJvdHRvbVxdXDp0cmFuc2xhdGUteS0xW2RhdGEtc2lkZT1ib3R0b21dey0tdHctdHJhbnNsYXRlLXk6dmFyKC0tc3BhY2luZyk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzaWRlXD1ib3R0b21cXVw6c2xpZGUtaW4tZnJvbS10b3AtMltkYXRhLXNpZGU9Ym90dG9tXXstLXR3LWVudGVyLXRyYW5zbGF0ZS15OmNhbGMoMip2YXIoLS1zcGFjaW5nKSotMSl9LmRhdGEtXFtzaWRlXD1pbmxpbmUtZW5kXF1cOnNsaWRlLWluLWZyb20tbGVmdC0yW2RhdGEtc2lkZT1pbmxpbmUtZW5kXXstLXR3LWVudGVyLXRyYW5zbGF0ZS14OmNhbGMoMip2YXIoLS1zcGFjaW5nKSotMSl9LmRhdGEtXFtzaWRlXD1pbmxpbmUtc3RhcnRcXVw6c2xpZGUtaW4tZnJvbS1yaWdodC0yW2RhdGEtc2lkZT1pbmxpbmUtc3RhcnRdey0tdHctZW50ZXItdHJhbnNsYXRlLXg6Y2FsYygyKnZhcigtLXNwYWNpbmcpKX0uZGF0YS1cW3NpZGVcPWxlZnRcXVw6LXRyYW5zbGF0ZS14LTFbZGF0YS1zaWRlPWxlZnRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPWxlZnRcXVw6c2xpZGUtaW4tZnJvbS1yaWdodC0yW2RhdGEtc2lkZT1sZWZ0XXstLXR3LWVudGVyLXRyYW5zbGF0ZS14OmNhbGMoMip2YXIoLS1zcGFjaW5nKSl9LmRhdGEtXFtzaWRlXD1yaWdodFxdXDp0cmFuc2xhdGUteC0xW2RhdGEtc2lkZT1yaWdodF17LS10dy10cmFuc2xhdGUteDp2YXIoLS1zcGFjaW5nKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPXJpZ2h0XF1cOnNsaWRlLWluLWZyb20tbGVmdC0yW2RhdGEtc2lkZT1yaWdodF17LS10dy1lbnRlci10cmFuc2xhdGUteDpjYWxjKDIqdmFyKC0tc3BhY2luZykqLTEpfS5kYXRhLVxbc2lkZVw9dG9wXF1cOi10cmFuc2xhdGUteS0xW2RhdGEtc2lkZT10b3Bdey0tdHctdHJhbnNsYXRlLXk6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPXRvcFxdXDpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yW2RhdGEtc2lkZT10b3Bdey0tdHctZW50ZXItdHJhbnNsYXRlLXk6Y2FsYygyKnZhcigtLXNwYWNpbmcpKX0uZGF0YS1cW3NpemVcPWRlZmF1bHRcXVw6aC04W2RhdGEtc2l6ZT1kZWZhdWx0XXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpfS5kYXRhLVxbc2l6ZVw9c21cXVw6aC03W2RhdGEtc2l6ZT1zbV17aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA3KX0uZGF0YS1cW3NpemVcPXNtXF1cOmdhcC0zW2RhdGEtc2l6ZT1zbV17Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uZGF0YS1cW3NpemVcPXNtXF1cOnJvdW5kZWQtXFttaW5cKHZhclwoLS1yYWRpdXMtbWRcKVwsMTBweFwpXF1bZGF0YS1zaXplPXNtXXtib3JkZXItcmFkaXVzOm1pbih2YXIoLS1yYWRpdXMtbWQpLCAxMHB4KX0uZGF0YS1cW3NpemVcPXNtXF1cOnB5LTNbZGF0YS1zaXplPXNtXXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uZGF0YS1cW3NpemVcPXNtXF1cOmhhcy1kYXRhLVxbc2xvdFw9Y2FyZC1mb290ZXJcXVw6cGItMFtkYXRhLXNpemU9c21dOmhhcyhbZGF0YS1zbG90PWNhcmQtZm9vdGVyXSl7cGFkZGluZy1ib3R0b206MH06aXMoLlwqXCpcOmRhdGEtXFtzbG90XD1hY2NvcmRpb24tdHJpZ2dlci1pY29uXF1cOm1sLWF1dG8gKilbZGF0YS1zbG90PWFjY29yZGlvbi10cmlnZ2VyLWljb25de21hcmdpbi1sZWZ0OmF1dG99OmlzKC5cKlwqXDpkYXRhLVxbc2xvdFw9YWNjb3JkaW9uLXRyaWdnZXItaWNvblxdXDpzaXplLTQgKilbZGF0YS1zbG90PWFjY29yZGlvbi10cmlnZ2VyLWljb25de3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfTppcyguXCpcKlw6ZGF0YS1cW3Nsb3RcPWFjY29yZGlvbi10cmlnZ2VyLWljb25cXVw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kICopW2RhdGEtc2xvdD1hY2NvcmRpb24tdHJpZ2dlci1pY29uXXtjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX06aXMoLlwqXDpkYXRhLVxbc2xvdFw9YWxlcnQtZGVzY3JpcHRpb25cXVw6dGV4dC1kZXN0cnVjdGl2ZVwvOTA+KilbZGF0YS1zbG90PWFsZXJ0LWRlc2NyaXB0aW9uXXtjb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpezppcyguXCpcOmRhdGEtXFtzbG90XD1hbGVydC1kZXNjcmlwdGlvblxdXDp0ZXh0LWRlc3RydWN0aXZlXC85MD4qKVtkYXRhLXNsb3Q9YWxlcnQtZGVzY3JpcHRpb25de2NvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDkwJSwgdHJhbnNwYXJlbnQpfX06aXMoLlwqXDpkYXRhLVxbc2xvdFw9YWxlcnQtZGVzY3JpcHRpb25cXVw6dGV4dC1zdGF0dXMtd2FyblwvOTA+KilbZGF0YS1zbG90PWFsZXJ0LWRlc2NyaXB0aW9uXXtjb2xvcjp2YXIoLS1zdGF0dXMtd2Fybil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpezppcyguXCpcOmRhdGEtXFtzbG90XD1hbGVydC1kZXNjcmlwdGlvblxdXDp0ZXh0LXN0YXR1cy13YXJuXC85MD4qKVtkYXRhLXNsb3Q9YWxlcnQtZGVzY3JpcHRpb25de2NvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tc3RhdHVzLXdhcm4pIDkwJSwgdHJhbnNwYXJlbnQpfX06aXMoLlwqXDpkYXRhLVxbc2xvdFw9c2VsZWN0LXZhbHVlXF1cOmxpbmUtY2xhbXAtMT4qKVtkYXRhLXNsb3Q9c2VsZWN0LXZhbHVlXXstd2Via2l0LWxpbmUtY2xhbXA6MTstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW59OmlzKC5cKlw6ZGF0YS1cW3Nsb3RcPXNlbGVjdC12YWx1ZVxdXDpmbGV4PiopW2RhdGEtc2xvdD1zZWxlY3QtdmFsdWVde2Rpc3BsYXk6ZmxleH06aXMoLlwqXDpkYXRhLVxbc2xvdFw9c2VsZWN0LXZhbHVlXF1cOml0ZW1zLWNlbnRlcj4qKVtkYXRhLXNsb3Q9c2VsZWN0LXZhbHVlXXthbGlnbi1pdGVtczpjZW50ZXJ9OmlzKC5cKlw6ZGF0YS1cW3Nsb3RcPXNlbGVjdC12YWx1ZVxdXDpnYXAtMVwuNT4qKVtkYXRhLXNsb3Q9c2VsZWN0LXZhbHVlXXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LmRhdGEtXFtzdGF0ZVw9c2VsZWN0ZWRcXVw6YmctbXV0ZWRbZGF0YS1zdGF0ZT1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9LmRhdGEtXFt2YXJpYW50XD1saW5lXF1cOnJvdW5kZWQtbm9uZVtkYXRhLXZhcmlhbnQ9bGluZV17Ym9yZGVyLXJhZGl1czowfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5tb3Rpb24tcmVkdWNlXDphbmltYXRlLW5vbmV7YW5pbWF0aW9uOm5vbmV9Lm1vdGlvbi1yZWR1Y2VcOnRyYW5zaXRpb24tbm9uZXt0cmFuc2l0aW9uLXByb3BlcnR5Om5vbmV9fUBtZWRpYSAod2lkdGg+PTQwcmVtKXsuc21cOmluc2V0LXgtYXV0b3tpbnNldC1pbmxpbmU6YXV0b30uc21cOnJpZ2h0LTR7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5zbVw6Ym90dG9tLTR7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uc21cOnctOTZ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDk2KX0uc21cOmdyaWQtY29scy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX0uc21cOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0uc21cOmdyaWQtY29scy00e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCxtaW5tYXgoMCwxZnIpKX0uc21cOmdyaWQtY29scy01e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNSxtaW5tYXgoMCwxZnIpKX0uc21cOmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uc21cOml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9LnNtXDppdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmR9LnNtXDppdGVtcy1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5zbVw6anVzdGlmeS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5zbVw6cHgtNntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9fUBtZWRpYSAod2lkdGg+PTQ4cmVtKXsubWRcOnctNTJ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUyKX0ubWRcOnctZnVsbHt3aWR0aDoxMDAlfS5tZFw6c2hyaW5rLTB7ZmxleC1zaHJpbms6MH0ubWRcOmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ubWRcOmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30ubWRcOmJvcmRlci1ye2JvcmRlci1yaWdodC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1yaWdodC13aWR0aDoxcHh9Lm1kXDpib3JkZXItYi0we2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjB9Lm1kXDpwci0ze3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5tZFw6cGItMHtwYWRkaW5nLWJvdHRvbTowfS5tZFw6dGV4dC1zbXtmb250LXNpemU6dmFyKC0tdGV4dC1zbSk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXNtLS1saW5lLWhlaWdodCkpfS5tZFw6dGV4dC1wcmV0dHl7dGV4dC13cmFwOnByZXR0eX19QG1lZGlhICh3aWR0aD49NjRyZW0pey5sZ1w6Z3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5sZ1w6Z3JpZC1jb2xzLTR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LG1pbm1heCgwLDFmcikpfS5sZ1w6cHgtOHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9fUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcOmJvcmRlci1pbnB1dHtib3JkZXItY29sb3I6dmFyKC0taW5wdXQpfS5kYXJrXDpiZy1kZXN0cnVjdGl2ZVwvMjB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDpiZy1kZXN0cnVjdGl2ZVwvMjB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSAyMCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmJnLWlucHV0XC8zMHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRhcmtcOmJnLWlucHV0XC8zMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0taW5wdXQpIDMwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6dGV4dC1tdXRlZC1mb3JlZ3JvdW5ke2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5kYXJrXDpob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzMwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6aG92ZXJcOmJnLWRlc3RydWN0aXZlXC8zMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDMwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6aG92ZXJcOmJnLWlucHV0XC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRhcmtcOmhvdmVyXDpiZy1pbnB1dFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWlucHV0KSA1MCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmhvdmVyXDpiZy1tdXRlZFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDpob3Zlclw6YmctbXV0ZWRcLzUwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1tdXRlZCkgNTAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDpob3Zlclw6dGV4dC1mb3JlZ3JvdW5kOmhvdmVye2NvbG9yOnZhcigtLWZvcmVncm91bmQpfX0uZGFya1w6Zm9jdXMtdmlzaWJsZVw6cmluZy1kZXN0cnVjdGl2ZVwvNDA6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6Zm9jdXMtdmlzaWJsZVw6cmluZy1kZXN0cnVjdGl2ZVwvNDA6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgNDAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDpkaXNhYmxlZFw6YmctaW5wdXRcLzgwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6ZGlzYWJsZWRcOmJnLWlucHV0XC84MDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0taW5wdXQpIDgwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6YXJpYS1pbnZhbGlkXDpib3JkZXItZGVzdHJ1Y3RpdmVcLzUwW2FyaWEtaW52YWxpZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6YXJpYS1pbnZhbGlkXDpib3JkZXItZGVzdHJ1Y3RpdmVcLzUwW2FyaWEtaW52YWxpZD10cnVlXXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgNTAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDphcmlhLWludmFsaWRcOnJpbmctZGVzdHJ1Y3RpdmVcLzQwW2FyaWEtaW52YWxpZD10cnVlXXstLXR3LXJpbmctY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6YXJpYS1pbnZhbGlkXDpyaW5nLWRlc3RydWN0aXZlXC80MFthcmlhLWludmFsaWQ9dHJ1ZV17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDQwJSwgdHJhbnNwYXJlbnQpfX19LmRhdGEtb3Blblw6YW5pbWF0ZS1hY2NvcmRpb24tZG93bjp3aGVyZShbZGF0YS1zdGF0ZT1vcGVuXSksLmRhdGEtb3Blblw6YW5pbWF0ZS1hY2NvcmRpb24tZG93bjp3aGVyZShbZGF0YS1vcGVuXTpub3QoW2RhdGEtb3Blbj1mYWxzZV0pKXthbmltYXRpb246YWNjb3JkaW9uLWRvd24gdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4ycykpdmFyKC0tdHctZWFzZSxlYXNlLW91dCl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtb3Blblw6YW5pbWF0ZS1pbjp3aGVyZShbZGF0YS1zdGF0ZT1vcGVuXSksLmRhdGEtb3Blblw6YW5pbWF0ZS1pbjp3aGVyZShbZGF0YS1vcGVuXTpub3QoW2RhdGEtb3Blbj1mYWxzZV0pKXthbmltYXRpb246ZW50ZXIgdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4xNXMpKXZhcigtLXR3LWVhc2UsZWFzZSl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtb3Blblw6ZmFkZS1pbi0wOndoZXJlKFtkYXRhLXN0YXRlPW9wZW5dKSwuZGF0YS1vcGVuXDpmYWRlLWluLTA6d2hlcmUoW2RhdGEtb3Blbl06bm90KFtkYXRhLW9wZW49ZmFsc2VdKSl7LS10dy1lbnRlci1vcGFjaXR5OjB9LmRhdGEtb3Blblw6em9vbS1pbi05NTp3aGVyZShbZGF0YS1zdGF0ZT1vcGVuXSksLmRhdGEtb3Blblw6em9vbS1pbi05NTp3aGVyZShbZGF0YS1vcGVuXTpub3QoW2RhdGEtb3Blbj1mYWxzZV0pKXstLXR3LWVudGVyLXNjYWxlOi45NX0uZGF0YS1jbG9zZWRcOmFuaW1hdGUtYWNjb3JkaW9uLXVwOndoZXJlKFtkYXRhLXN0YXRlPWNsb3NlZF0pLC5kYXRhLWNsb3NlZFw6YW5pbWF0ZS1hY2NvcmRpb24tdXA6d2hlcmUoW2RhdGEtY2xvc2VkXTpub3QoW2RhdGEtY2xvc2VkPWZhbHNlXSkpe2FuaW1hdGlvbjphY2NvcmRpb24tdXAgdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4ycykpdmFyKC0tdHctZWFzZSxlYXNlLW91dCl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtY2xvc2VkXDphbmltYXRlLW91dDp3aGVyZShbZGF0YS1zdGF0ZT1jbG9zZWRdKSwuZGF0YS1jbG9zZWRcOmFuaW1hdGUtb3V0OndoZXJlKFtkYXRhLWNsb3NlZF06bm90KFtkYXRhLWNsb3NlZD1mYWxzZV0pKXthbmltYXRpb246ZXhpdCB2YXIoLS10dy1hbmltYXRpb24tZHVyYXRpb24sdmFyKC0tdHctZHVyYXRpb24sLjE1cykpdmFyKC0tdHctZWFzZSxlYXNlKXZhcigtLXR3LWFuaW1hdGlvbi1kZWxheSwwcyl2YXIoLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LDEpdmFyKC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpdmFyKC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZSxub25lKX0uZGF0YS1jbG9zZWRcOmZhZGUtb3V0LTA6d2hlcmUoW2RhdGEtc3RhdGU9Y2xvc2VkXSksLmRhdGEtY2xvc2VkXDpmYWRlLW91dC0wOndoZXJlKFtkYXRhLWNsb3NlZF06bm90KFtkYXRhLWNsb3NlZD1mYWxzZV0pKXstLXR3LWV4aXQtb3BhY2l0eTowfS5kYXRhLWNsb3NlZFw6em9vbS1vdXQtOTU6d2hlcmUoW2RhdGEtc3RhdGU9Y2xvc2VkXSksLmRhdGEtY2xvc2VkXDp6b29tLW91dC05NTp3aGVyZShbZGF0YS1jbG9zZWRdOm5vdChbZGF0YS1jbG9zZWQ9ZmFsc2VdKSl7LS10dy1leGl0LXNjYWxlOi45NX0uZGF0YS1hY3RpdmVcOmJnLWJhY2tncm91bmQ6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhdGEtYWN0aXZlXDpiZy1iYWNrZ3JvdW5kOndoZXJlKFtkYXRhLWFjdGl2ZV06bm90KFtkYXRhLWFjdGl2ZT1mYWxzZV0pKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJhY2tncm91bmQpfS5kYXRhLWFjdGl2ZVw6dGV4dC1mb3JlZ3JvdW5kOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5kYXRhLWFjdGl2ZVw6dGV4dC1mb3JlZ3JvdW5kOndoZXJlKFtkYXRhLWFjdGl2ZV06bm90KFtkYXRhLWFjdGl2ZT1mYWxzZV0pKXtjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKX0uZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWRlZmF1bHRcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6c2hhZG93LXNtOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWRlZmF1bHRdICopOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5ncm91cC1kYXRhLVxbdmFyaWFudFw9ZGVmYXVsdFxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpzaGFkb3ctc206aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9ZGVmYXVsdF0gKik6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpey0tdHctc2hhZG93OjAgMXB4IDNweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLCAwIDFweCAycHggLTFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5ncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpiZy10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6YmctdHJhbnNwYXJlbnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JhY2tncm91bmQtY29sb3I6IzAwMDB9Lmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOnNoYWRvdy1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWxpbmVdICopOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5ncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpzaGFkb3ctbm9uZTppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7LS10dy1zaGFkb3c6MCAwICMwMDAwO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSwgdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdyl9OmlzKC5ncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDphZnRlclw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOmFmdGVyXDpvcGFjaXR5LTEwMDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSkpOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7b3BhY2l0eToxfUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcOmRhdGEtYWN0aXZlXDpib3JkZXItaW5wdXQ6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhcmtcOmRhdGEtYWN0aXZlXDpib3JkZXItaW5wdXQ6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JvcmRlci1jb2xvcjp2YXIoLS1pbnB1dCl9LmRhcmtcOmRhdGEtYWN0aXZlXDpiZy1pbnB1dFwvMzA6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhcmtcOmRhdGEtYWN0aXZlXDpiZy1pbnB1dFwvMzA6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6ZGF0YS1hY3RpdmVcOmJnLWlucHV0XC8zMDp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGFya1w6ZGF0YS1hY3RpdmVcOmJnLWlucHV0XC8zMDp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWlucHV0KSAzMCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmRhdGEtYWN0aXZlXDp0ZXh0LWZvcmVncm91bmQ6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhcmtcOmRhdGEtYWN0aXZlXDp0ZXh0LWZvcmVncm91bmQ6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2NvbG9yOnZhcigtLWZvcmVncm91bmQpfS5kYXJrXDpncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpib3JkZXItdHJhbnNwYXJlbnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhcmtcOmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOmJvcmRlci10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7Ym9yZGVyLWNvbG9yOiMwMDAwfS5kYXJrXDpncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpiZy10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGFya1w6Z3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6YmctdHJhbnNwYXJlbnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JhY2tncm91bmQtY29sb3I6IzAwMDB9fS5kYXRhLWhvcml6b250YWxcOmZsZXgtY29sOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LlxbXCZfYVxdXDp1bmRlcmxpbmUgYXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LlxbXCZfYVxdXDp1bmRlcmxpbmUtb2Zmc2V0LTMgYXt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5cW1wmX2FcXVw6aG92ZXJcOnRleHQtZm9yZWdyb3VuZCBhOmhvdmVye2NvbG9yOnZhcigtLWZvcmVncm91bmQpfX0uXFtcJl9wXDpub3RcKFw6bGFzdC1jaGlsZFwpXF1cOm1iLTQgcDpub3QoOmxhc3QtY2hpbGQpe21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5cW1wmX3N2Z1xdXDpwb2ludGVyLWV2ZW50cy1ub25lIHN2Z3twb2ludGVyLWV2ZW50czpub25lfS5cW1wmX3N2Z1xdXDpzaHJpbmstMCBzdmd7ZmxleC1zaHJpbms6MH0uXFtcJl9zdmdcOm5vdFwoXFtjbGFzc1wqXD1zaXplLVxdXClcXVw6c2l6ZS0zIHN2Zzpub3QoW2NsYXNzKj1zaXplLV0pe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzKTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5cW1wmX3N2Z1w6bm90XChcW2NsYXNzXCpcPXNpemUtXF1cKVxdXDpzaXplLTNcLjUgc3ZnOm5vdChbY2xhc3MqPXNpemUtXSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpfS5cW1wmX3N2Z1w6bm90XChcW2NsYXNzXCpcPXNpemUtXF1cKVxdXDpzaXplLTQgc3ZnOm5vdChbY2xhc3MqPXNpemUtXSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LlxbXCZfdHJcXVw6Ym9yZGVyLWIgdHJ7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5cW1wmX3RyXDpsYXN0LWNoaWxkXF1cOmJvcmRlci0wIHRyOmxhc3QtY2hpbGR7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjB9LlxbXCZcOmhhc1woXFtyb2xlXD1jaGVja2JveFxdXClcXVw6cHItMDpoYXMoW3JvbGU9Y2hlY2tib3hdKXtwYWRkaW5nLXJpZ2h0OjB9LlxbXC5ib3JkZXItYlxdXDpwYi00LmJvcmRlci1ie3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uZ3JvdXAtZGF0YS1cW3NpemVcPXNtXF1cL2NhcmRcOlxbXC5ib3JkZXItYlxdXDpwYi0zOmlzKDp3aGVyZSguZ3JvdXBcL2NhcmQpW2RhdGEtc2l6ZT1zbV0gKikuYm9yZGVyLWJ7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5cW2FcXVw6aG92ZXJcOmJnLWRlc3RydWN0aXZlXC8yMDppcyhhKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRlc3RydWN0aXZlKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LlxbYVxdXDpob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzIwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgMjAlLCB0cmFuc3BhcmVudCl9fS5cW2FcXVw6aG92ZXJcOmJnLW11dGVkOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXV0ZWQpfS5cW2FcXVw6aG92ZXJcOmJnLXByaW1hcnlcLzgwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5cW2FcXVw6aG92ZXJcOmJnLXByaW1hcnlcLzgwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1wcmltYXJ5KSA4MCUsIHRyYW5zcGFyZW50KX19LlxbYVxdXDpob3Zlclw6Ymctc2Vjb25kYXJ5XC84MDppcyhhKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5cW2FcXVw6aG92ZXJcOmJnLXNlY29uZGFyeVwvODA6aXMoYSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLXNlY29uZGFyeSkgODAlLCB0cmFuc3BhcmVudCl9fS5cW2FcXVw6aG92ZXJcOnRleHQtbXV0ZWQtZm9yZWdyb3VuZDppcyhhKTpob3Zlcntjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX19OmlzKC5cKlw6XFtpbWdcOmZpcnN0LWNoaWxkXF1cOnJvdW5kZWQtdC14bD4qKTppcyhpbWc6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgKyA0cHgpfTppcyguXCpcOlxbaW1nXDpsYXN0LWNoaWxkXF1cOnJvdW5kZWQtYi14bD4qKTppcyhpbWc6bGFzdC1jaGlsZCl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCl9OmlzKC5cKlw6XFtzcGFuXF1cOmxhc3RcOmZsZXg+Kik6aXMoc3Bhbik6bGFzdC1jaGlsZHtkaXNwbGF5OmZsZXh9OmlzKC5cKlw6XFtzcGFuXF1cOmxhc3RcOml0ZW1zLWNlbnRlcj4qKTppcyhzcGFuKTpsYXN0LWNoaWxke2FsaWduLWl0ZW1zOmNlbnRlcn06aXMoLlwqXDpcW3NwYW5cXVw6bGFzdFw6Z2FwLTI+Kik6aXMoc3Bhbik6bGFzdC1jaGlsZHtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfTppcyguXCpcOlxbc3ZnXF1cOnJvdy1zcGFuLTI+Kik6aXMoc3ZnKXtncmlkLXJvdzpzcGFuIDIvc3BhbiAyfTppcyguXCpcOlxbc3ZnXF1cOnRyYW5zbGF0ZS15LTBcLjU+Kik6aXMoc3ZnKXstLXR3LXRyYW5zbGF0ZS15OmNhbGModmFyKC0tc3BhY2luZykgKiAuNSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9OmlzKC5cKlw6XFtzdmdcXVw6dGV4dC1jdXJyZW50PiopOmlzKHN2Zyl7Y29sb3I6Y3VycmVudENvbG9yfTppcyguXCpcOlxbc3ZnXDpub3RcKFxbY2xhc3NcKlw9c2l6ZS1cXVwpXF1cOnNpemUtND4qKTppcyhzdmc6bm90KFtjbGFzcyo9c2l6ZS1dKSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LlxbXCZcPnN2Z1xdXDpwb2ludGVyLWV2ZW50cy1ub25lPnN2Z3twb2ludGVyLWV2ZW50czpub25lfS5cW1wmXD5zdmdcXVw6c2l6ZS0zXCE+c3Zne3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzKSFpbXBvcnRhbnQ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzKSFpbXBvcnRhbnR9fUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1kZWxheXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MHN9QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6bm9ybWFsfUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1kdXJhdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOm5vbmV9QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1lbnRlci1ibHVye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctZW50ZXItcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXNjYWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWV4aXQtYmx1cntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1leGl0LW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctZXhpdC1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZXhpdC1zY2FsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1leGl0LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWV4aXQtdHJhbnNsYXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tc2Nyb2xsLWZhZGUtdHtzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS1zY3JvbGwtZmFkZS1ie3N5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXNjcm9sbC1mYWRlLXN7c3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tc2Nyb2xsLWZhZGUtZXtzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS1zY3JvbGwtZmFkZS1tYXNre3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tc2hpbW1lci1hbmdsZXtzeW50YXg6IjxhbmdsZT4iO2luaGVyaXRzOnRydWU7aW5pdGlhbC12YWx1ZToyMGRlZ31AcHJvcGVydHkgLS1zaGltbWVyLWltYWdle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tc2hpbW1lci10ZXh0LWZpbGx7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuc2hpbW1lcnstd2Via2l0LXRleHQtZmlsbC1jb2xvcjpjdXJyZW50Q29sb3I7YmFja2dyb3VuZC1pbWFnZTpub25lO2FuaW1hdGlvbjpub25lfX06cm9vdHstLWJhY2tncm91bmQ6b2tsY2goOTklIC4wMDQgNzUpOy0tZm9yZWdyb3VuZDpva2xjaCgxOSUgLjAxMiA3NSk7LS1jYXJkOm9rbGNoKDk5LjUlIC4wMDMgNzUpOy0tY2FyZC1mb3JlZ3JvdW5kOm9rbGNoKDE5JSAuMDEyIDc1KTstLXBvcG92ZXI6b2tsY2goOTkuNSUgLjAwMyA3NSk7LS1wb3BvdmVyLWZvcmVncm91bmQ6b2tsY2goMTklIC4wMTIgNzUpOy0tcHJpbWFyeTpva2xjaCg0NiUgLjA5IDIwMCk7LS1wcmltYXJ5LWZvcmVncm91bmQ6b2tsY2goOTglIC4wMDYgMjAwKTstLXNlY29uZGFyeTpva2xjaCg5NSUgLjAwNiA3NSk7LS1zZWNvbmRhcnktZm9yZWdyb3VuZDpva2xjaCgyMiUgLjAxIDc1KTstLW11dGVkOm9rbGNoKDk1JSAuMDA2IDc1KTstLW11dGVkLWZvcmVncm91bmQ6b2tsY2goNDglIC4wMTIgNzUpOy0tYWNjZW50Om9rbGNoKDkzJSAuMDIgMjAwKTstLWFjY2VudC1mb3JlZ3JvdW5kOm9rbGNoKDI4JSAuMDUgMjAwKTstLWRlc3RydWN0aXZlOm9rbGNoKDU1JSAuMiAyNSk7LS1ib3JkZXI6b2tsY2goOTAlIC4wMDcgNzUpOy0taW5wdXQ6b2tsY2goOTAlIC4wMDcgNzUpOy0tcmluZzpva2xjaCg1NSUgLjA5IDIwMCk7LS1yYWRpdXM6LjM3NXJlbTstLWNoYXJ0LXJlcXVlc3RzOiMwMDllNzM7LS1jaGFydC10b2tlbnMtaW46IzAwNzJiMjstLWNoYXJ0LXRva2Vucy1vdXQ6I2U2OWYwMDstLWNoYXJ0LWNvc3Q6I2Q1NWUwMDstLWNoYXJ0LXNlcmllcy1hOiM1NmI0ZTk7LS1jaGFydC1zZXJpZXMtYjojOGE2ZDAwOy0tY2hhcnQtc2VyaWVzLWM6I2NjNzlhNzstLWNoYXJ0LXNlcmllcy1kOiM0ZDRkNGQ7LS1zdGF0dXMtd2FybjojYTM1YzAwOy0tYmFyLWFtYmVyOiNhMzVjMDB9QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXs6cm9vdHstLWJhY2tncm91bmQ6b2tsY2goMTclIC4wMDcgNzUpOy0tZm9yZWdyb3VuZDpva2xjaCg5NSUgLjAwNSA3NSk7LS1jYXJkOm9rbGNoKDIxJSAuMDA5IDc1KTstLWNhcmQtZm9yZWdyb3VuZDpva2xjaCg5NSUgLjAwNSA3NSk7LS1wb3BvdmVyOm9rbGNoKDIxJSAuMDA5IDc1KTstLXBvcG92ZXItZm9yZWdyb3VuZDpva2xjaCg5NSUgLjAwNSA3NSk7LS1wcmltYXJ5Om9rbGNoKDc0JSAuMTEgMjAwKTstLXByaW1hcnktZm9yZWdyb3VuZDpva2xjaCgxNiUgLjAxMiAyMDApOy0tc2Vjb25kYXJ5Om9rbGNoKDI3JSAuMDExIDc1KTstLXNlY29uZGFyeS1mb3JlZ3JvdW5kOm9rbGNoKDkzJSAuMDA1IDc1KTstLW11dGVkOm9rbGNoKDI3JSAuMDExIDc1KTstLW11dGVkLWZvcmVncm91bmQ6b2tsY2goNjglIC4wMTIgNzUpOy0tYWNjZW50Om9rbGNoKDMyJSAuMDM1IDIwMCk7LS1hY2NlbnQtZm9yZWdyb3VuZDpva2xjaCg5MSUgLjAzIDIwMCk7LS1kZXN0cnVjdGl2ZTpva2xjaCg2OCUgLjE5IDI1KTstLWJvcmRlcjpva2xjaCgxMDAlIDAgMC8uMTIpOy0taW5wdXQ6b2tsY2goMTAwJSAwIDAvLjE2KTstLXJpbmc6b2tsY2goNjIlIC4xIDIwMCk7LS1jaGFydC1yZXF1ZXN0czojMTZiODkxOy0tY2hhcnQtdG9rZW5zLWluOiM0MDk4ZDc7LS1jaGFydC10b2tlbnMtb3V0OiNmMGFjMWY7LS1jaGFydC1jb3N0OiNlODc2M2E7LS1jaGFydC1zZXJpZXMtYTojNTZiNGU5Oy0tY2hhcnQtc2VyaWVzLWI6I2YwZTQ0MjstLWNoYXJ0LXNlcmllcy1jOiNjYzc5YTc7LS1jaGFydC1zZXJpZXMtZDojYjhiOGI4Oy0tc3RhdHVzLXdhcm46I2YwYWMxZjstLWJhci1hbWJlcjojZjBhYzFmfX1AcHJvcGVydHkgLS10dy10cmFuc2xhdGUteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy10cmFuc2xhdGUteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy10cmFuc2xhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1yb3RhdGUteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXp7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1za2V3LXh7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1za2V3LXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zcGFjZS15LXJldmVyc2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctYm9yZGVyLXN0eWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTpzb2xpZH1AcHJvcGVydHkgLS10dy1sZWFkaW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZm9udC13ZWlnaHR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy10cmFja2luZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW9yZGluYWx7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zbGFzaGVkLXplcm97c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1udW1lcmljLWZpZ3VyZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtc3BhY2luZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtZnJhY3Rpb257c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW5zZXQtcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1yaW5nLWluc2V0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtd2lkdGh7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTojZmZmfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LW91dGxpbmUtc3R5bGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOnNvbGlkfUBwcm9wZXJ0eSAtLXR3LWJsdXJ7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1icmlnaHRuZXNze3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctY29udHJhc3R7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmF5c2NhbGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1odWUtcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW52ZXJ0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNhdHVyYXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2VwaWF7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1zaXple3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHVyYXRpb257c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1lYXNle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctY29udGVudHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IiJ9QGtleWZyYW1lcyBzcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBwdWxzZXs1MCV7b3BhY2l0eTouNX19QGtleWZyYW1lcyBlbnRlcnswJXtvcGFjaXR5OnZhcigtLXR3LWVudGVyLW9wYWNpdHksMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKHZhcigtLXR3LWVudGVyLXRyYW5zbGF0ZS14LDApLHZhcigtLXR3LWVudGVyLXRyYW5zbGF0ZS15LDApLDApc2NhbGUzZCh2YXIoLS10dy1lbnRlci1zY2FsZSwxKSx2YXIoLS10dy1lbnRlci1zY2FsZSwxKSx2YXIoLS10dy1lbnRlci1zY2FsZSwxKSlyb3RhdGUodmFyKC0tdHctZW50ZXItcm90YXRlLDApKTtmaWx0ZXI6Ymx1cih2YXIoLS10dy1lbnRlci1ibHVyLDApKX19QGtleWZyYW1lcyBleGl0e3Rve29wYWNpdHk6dmFyKC0tdHctZXhpdC1vcGFjaXR5LDEpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCh2YXIoLS10dy1leGl0LXRyYW5zbGF0ZS14LDApLHZhcigtLXR3LWV4aXQtdHJhbnNsYXRlLXksMCksMClzY2FsZTNkKHZhcigtLXR3LWV4aXQtc2NhbGUsMSksdmFyKC0tdHctZXhpdC1zY2FsZSwxKSx2YXIoLS10dy1leGl0LXNjYWxlLDEpKXJvdGF0ZSh2YXIoLS10dy1leGl0LXJvdGF0ZSwwKSk7ZmlsdGVyOmJsdXIodmFyKC0tdHctZXhpdC1ibHVyLDApKX19QGtleWZyYW1lcyBhY2NvcmRpb24tZG93bnswJXtoZWlnaHQ6MH10b3toZWlnaHQ6dmFyKC0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQsdmFyKC0tYWNjb3JkaW9uLXBhbmVsLWhlaWdodCxhdXRvKSl9fUBrZXlmcmFtZXMgYWNjb3JkaW9uLXVwezAle2hlaWdodDp2YXIoLS1yZWthLWFjY29yZGlvbi1jb250ZW50LWhlaWdodCx2YXIoLS1hY2NvcmRpb24tcGFuZWwtaGVpZ2h0LGF1dG8pKX10b3toZWlnaHQ6MH19Cg==",
|
|
),
|
|
},
|
|
"index-dywS8OpT.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"Y29uc3QgX192aXRlX19tYXBEZXBzPShpLG09X192aXRlX19tYXBEZXBzLGQ9KG0uZnx8KG0uZj1bImFzc2V0cy9Ib21lUGFnZS14eGFvLUR6US5qcyIsImFzc2V0cy9Ta2VsZXRvbi1CMHppQjZPZC5qcyIsImFzc2V0cy90YWJzLVlsaG5IcEstLmpzIiwiYXNzZXRzL3VzZUlkLUI5ZEp1bW9JLmpzIiwiYXNzZXRzL0Vycm9yU3RhdGUteW02ZVNsajIuanMiLCJhc3NldHMvYmFkZ2UtRFVpQlREeUEuanMiLCJhc3NldHMvVHJ5TG9uZ2VyUmFuZ2VCdXR0b24tQ2prVW5hT3ouanMiLCJhc3NldHMvU2tlbGV0b25MaXN0LUNtcXozaGZhLmpzIiwiYXNzZXRzL0VudGl0eUxpbmstRGc5M0tHVlQuanMiLCJhc3NldHMvZXZlbnRzLVBVeGhFZWdhLmpzIiwiYXNzZXRzL2V2ZW50cy1maWx0ZXItWEZuaklhUjcuanMiLCJhc3NldHMva3BpLWNobTNCaXVGLmpzIiwiYXNzZXRzL3Byb3ZpZGVyLXJhdGUtRFU3T2dTZUIuanMiLCJhc3NldHMvU3BlbmRQYWdlLTZaWDJxM1p2LmpzIiwiYXNzZXRzL0RhdGFUYWJsZS1DUXhSVkRTWS5qcyIsImFzc2V0cy9Db21wYWN0TnVtYmVyLXByOGNKNGN2LmpzIiwiYXNzZXRzL2J1cm5kb3duLUJ6NDR4Ny1kLmpzIiwiYXNzZXRzL2NsaXBib2FyZC1CNzNmWjBjMS5qcyIsImFzc2V0cy9DbGFtcGVkUmFuZ2VOb3RpY2UtRDJ3YWxuWGYuanMiLCJhc3NldHMvVGltZVNlcmllc0NoYXJ0LUJGY1Q2d29BLmpzIiwiYXNzZXRzL2NhdGFsb2ctbFU0MWlySXEuanMiLCJhc3NldHMvc2VyaWVzLU5JUlZCWE1QLmpzIiwiYXNzZXRzL0NvbnN1bWVyc1BhZ2UtaThzWlY5TVguanMiLCJhc3NldHMvc2VhcmNoLWV4cGFuZC1DSGQ0RldaWi5qcyIsImFzc2V0cy9jb25zdW1lcnMtQ1F0RUo5SzcuanMiLCJhc3NldHMvdXNlU2VhcmNoUXVlcnktYlFaUDRUc1ouanMiLCJhc3NldHMvTW9kZWxzUGFnZS1DY0ExUkhLNi5qcyIsImFzc2V0cy9yZWxpYWJpbGl0eS1DRklrUnhWVi5qcyIsImFzc2V0cy9SZWxpYWJpbGl0eVBhZ2UtNi1iejV4NnouanMiLCJhc3NldHMvQ29uZmlnUGFnZS03SVljYWZQdy5qcyIsImFzc2V0cy9UYXJnZXRzUGFnZS1EWVVWaGhzai5qcyJdKSkpPT5pLm1hcChpPT5kW2ldKTsKaW1wb3J0e2EgYXMgZSxpIGFzIHQsbixvIGFzIHIsciBhcyBpLHMgYXMgYSx0IGFzIG99ZnJvbSIuL3VzZUlkLUI5ZEp1bW9JLmpzIjtpbXBvcnR7JCBhcyBzLEEgYXMgYyxBciBhcyBsLEIgYXMgdSxCbiBhcyBkLEMgYXMgZixEIGFzIHAsRG4gYXMgbSxFIGFzIGgsRiBhcyBnLEZyIGFzIF8sRyBhcyB2LEggYXMgeSxIbiBhcyBiLEh0IGFzIHgsSSBhcyBTLEluIGFzIEMsSnQgYXMgdyxLbiBhcyBULEwgYXMgRSxMciBhcyBlZSxNIGFzIEQsTXIgYXMgdGUsTiBhcyBuZSxPIGFzIHJlLE9uIGFzIE8sUCBhcyBpZSxRciBhcyBhZSxRdCBhcyBvZSxSIGFzIHNlLFJyIGFzIGNlLFMgYXMgbGUsU2kgYXMgayxTdCBhcyB1ZSxUIGFzIGRlLFRuIGFzIGZlLFUgYXMgcGUsVW4gYXMgQSxWIGFzIG1lLFZ0IGFzIGhlLFcgYXMgZ2UsWCBhcyBfZSxYbiBhcyB2ZSxaIGFzIHllLF8gYXMgYmUsX24gYXMgaixfdCBhcyB4ZSxhIGFzIFNlLGFuIGFzIE0sYXQgYXMgQ2UsYmkgYXMgd2UsYnQgYXMgVGUsY2kgYXMgRWUsY24gYXMgTixjciBhcyBEZSxlaSBhcyBPZSxlciBhcyBrZSxmciBhcyBBZSxnIGFzIGplLGdpIGFzIFAsZ24gYXMgTWUsZ3QgYXMgTmUsaCBhcyBQZSxobiBhcyBGLGh0IGFzIEZlLGkgYXMgSWUsaWkgYXMgTGUsaW4gYXMgSSxpciBhcyBSZSxqIGFzIHplLGpyIGFzIEwsayBhcyBCZSxsIGFzIFZlLGxpIGFzIEhlLGxyIGFzIFIsbHQgYXMgVWUsbSBhcyBXZSxtaSBhcyBHZSxtbiBhcyBLZSxtdCBhcyBxZSxuIGFzIEplLG5yIGFzIHosbnQgYXMgWWUsbyBhcyBYZSxvaSBhcyBCLG9uIGFzIFYsb3QgYXMgWmUscCBhcyBRZSxwaSBhcyAkZSxxIGFzIGV0LHFyIGFzIHR0LHIgYXMgbnQsc24gYXMgSCx0IGFzIHJ0LHRpIGFzIGl0LHR0IGFzIGF0LHUgYXMgb3QsdXIgYXMgc3QsdyBhcyBjdCx4IGFzIGx0LHhpIGFzIHV0LHlpIGFzIGR0LHogYXMgZnQsenQgYXMgcHR9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjtmdW5jdGlvbiBtdChlLHQpeyh0PT1udWxsfHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gaHQoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX1mdW5jdGlvbiBndChlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBtdChlKX1mdW5jdGlvbiBfdChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IFR5cGVFcnJvcihgQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uYCl9ZnVuY3Rpb24gdnQoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxgdmFsdWVgaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGt0KHIua2V5KSxyKX19ZnVuY3Rpb24geXQoZSx0LG4pe3JldHVybiB0JiZ2dChlLnByb3RvdHlwZSx0KSxuJiZ2dChlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24gYnQoZSx0KXt2YXIgbj10eXBlb2YgU3ltYm9sPGB1YCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW2BAQGl0ZXJhdG9yYF07aWYoIW4pe2lmKEFycmF5LmlzQXJyYXkoZSl8fChuPWp0KGUpKXx8dCYmZSYmdHlwZW9mIGUubGVuZ3RoPT1gbnVtYmVyYCl7biYmKGU9bik7dmFyIHI9MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gcj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbcisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjppfX10aHJvdyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe249bi5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9bi5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxhPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bi5yZXR1cm49PW51bGx8fG4ucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19ZnVuY3Rpb24gVShlLHQsbil7cmV0dXJuKHQ9a3QodCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24geHQoZSl7aWYodHlwZW9mIFN5bWJvbDxgdWAmJmVbU3ltYm9sLml0ZXJhdG9yXSE9bnVsbHx8ZVtgQEBpdGVyYXRvcmBdIT1udWxsKXJldHVybiBBcnJheS5mcm9tKGUpfWZ1bmN0aW9uIFN0KGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8YHVgJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbYEBAaXRlcmF0b3JgXTtpZihuIT1udWxsKXt2YXIgcixpLGEsbyxzPVtdLGM9ITAsbD0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsdD09PTApe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYocy5wdXNoKHIudmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe2w9ITAsaT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZuLnJldHVybiE9bnVsbCYmKG89bi5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZihsKXRocm93IGl9fXJldHVybiBzfX1mdW5jdGlvbiBDdCgpe3Rocm93IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIHd0KCl7dGhyb3cgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIFR0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF09PW51bGw/e306YXJndW1lbnRzW3RdO3QlMj9UdChPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24odCl7VShlLHQsblt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpUdChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gRXQoZSx0KXtyZXR1cm4gaHQoZSl8fFN0KGUsdCl8fGp0KGUsdCl8fEN0KCl9ZnVuY3Rpb24gRHQoZSl7cmV0dXJuIGd0KGUpfHx4dChlKXx8anQoZSl8fHd0KCl9ZnVuY3Rpb24gT3QoZSx0KXtpZih0eXBlb2YgZSE9YG9iamVjdGB8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0fHxgZGVmYXVsdGApO2lmKHR5cGVvZiByIT1gb2JqZWN0YClyZXR1cm4gcjt0aHJvdyBUeXBlRXJyb3IoYEBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuYCl9cmV0dXJuKHQ9PT1gc3RyaW5nYD9TdHJpbmc6TnVtYmVyKShlKX1mdW5jdGlvbiBrdChlKXt2YXIgdD1PdChlLGBzdHJpbmdgKTtyZXR1cm4gdHlwZW9mIHQ9PWBzeW1ib2xgP3Q6dCtgYH1mdW5jdGlvbiBBdChlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBBdD10eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1gc3ltYm9sYD9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZ0eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9gc3ltYm9sYDp0eXBlb2YgZX0sQXQoZSl9ZnVuY3Rpb24ganQoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIG10KGUsdCk7dmFyIG49e30udG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4gbj09PWBPYmplY3RgJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT1gTWFwYHx8bj09PWBTZXRgP0FycmF5LmZyb20oZSk6bj09PWBBcmd1bWVudHNgfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9tdChlLHQpOnZvaWQgMH19dmFyIE10PWZ1bmN0aW9uKCl7fSxOdD17fSxQdD17fSxGdD1udWxsLEl0PXttYXJrOk10LG1lYXN1cmU6TXR9O3RyeXt0eXBlb2Ygd2luZG93PGB1YCYmKE50PXdpbmRvdyksdHlwZW9mIGRvY3VtZW50PGB1YCYmKFB0PWRvY3VtZW50KSx0eXBlb2YgTXV0YXRpb25PYnNlcnZlcjxgdWAmJihGdD1NdXRhdGlvbk9ic2VydmVyKSx0eXBlb2YgcGVyZm9ybWFuY2U8YHVgJiYoSXQ9cGVyZm9ybWFuY2UpfWNhdGNoe312YXIgTHQ9KE50Lm5hdmlnYXRvcnx8e30pLnVzZXJBZ2VudCxSdD1MdD09PXZvaWQgMD9gYDpMdCx6dD1OdCxHPVB0LEJ0PUZ0LFZ0PUl0O3p0LmRvY3VtZW50O3ZhciBIdD0hIUcuZG9jdW1lbnRFbGVtZW50JiYhIUcuaGVhZCYmdHlwZW9mIEcuYWRkRXZlbnRMaXN0ZW5lcj09YGZ1bmN0aW9uYCYmdHlwZW9mIEcuY3JlYXRlRWxlbWVudD09YGZ1bmN0aW9uYCxVdD1+UnQuaW5kZXhPZihgTVNJRWApfHx+UnQuaW5kZXhPZihgVHJpZGVudC9gKSxXdCxHdD0vZmEoa3xrZHxzfHJ8bHx0fGR8ZHJ8ZGx8ZHR8YnxzbHJ8c2xwcnx3c2J8dGx8bnN8bmRzfGVzfGd0fGpyfGpmcnxqZHJ8dXNifHVmc2J8dWRzYnxjcnxzc3xzcnxzbHxzdHxzZHN8c2RyfHNkbHxzZHR8c2xkcnxzbHBkcnxwcnxtc3x2cyk/W1wtXCBdLyxLdD0vRm9udCA/QXdlc29tZSA/KFs1NjcgXSopKFNvbGlkfFJlZ3VsYXJ8TGlnaHR8VGhpbnxEdW90b25lfEJyYW5kc3xGcmVlfFByb3xTaGFycCBEdW90b25lfFNoYXJwfEtpdHxOb3Rkb2cgRHVvfE5vdGRvZ3xDaGlzZWx8RXRjaHxHcmFwaGl0ZXxUaHVtYnByaW50fEplbGx5IEZpbGx8SmVsbHkgRHVvfEplbGx5fFV0aWxpdHl8VXRpbGl0eSBGaWxsfFV0aWxpdHkgRHVvfFNsYWIgUHJlc3N8U2xhYnxTbGFiIER1b3xTbGFiIFByZXNzIER1b3xQaXhlbHxNb3NhaWN8VmVsbHVtfFdoaXRlYm9hcmQpPy4qL2kscXQ9e2NsYXNzaWM6e2ZhOmBzb2xpZGAsZmFzOmBzb2xpZGAsImZhLXNvbGlkIjpgc29saWRgLGZhcjpgcmVndWxhcmAsImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWw6YGxpZ2h0YCwiZmEtbGlnaHQiOmBsaWdodGAsZmF0OmB0aGluYCwiZmEtdGhpbiI6YHRoaW5gLGZhYjpgYnJhbmRzYCwiZmEtYnJhbmRzIjpgYnJhbmRzYH0sZHVvdG9uZTp7ZmE6YHNvbGlkYCxmYWQ6YHNvbGlkYCwiZmEtc29saWQiOmBzb2xpZGAsImZhLWR1b3RvbmUiOmBzb2xpZGAsZmFkcjpgcmVndWxhcmAsImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWRsOmBsaWdodGAsImZhLWxpZ2h0IjpgbGlnaHRgLGZhZHQ6YHRoaW5gLCJmYS10aGluIjpgdGhpbmB9LHNoYXJwOntmYTpgc29saWRgLGZhc3M6YHNvbGlkYCwiZmEtc29saWQiOmBzb2xpZGAsZmFzcjpgcmVndWxhcmAsImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNsOmBsaWdodGAsImZhLWxpZ2h0IjpgbGlnaHRgLGZhc3Q6YHRoaW5gLCJmYS10aGluIjpgdGhpbmB9LCJzaGFycC1kdW90b25lIjp7ZmE6YHNvbGlkYCxmYXNkczpgc29saWRgLCJmYS1zb2xpZCI6YHNvbGlkYCxmYXNkcjpgcmVndWxhcmAsImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNkbDpgbGlnaHRgLCJmYS1saWdodCI6YGxpZ2h0YCxmYXNkdDpgdGhpbmAsImZhLXRoaW4iOmB0aGluYH0sc2xhYjp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNscjpgcmVndWxhcmB9LCJzbGFiLXByZXNzIjp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNscHI6YHJlZ3VsYXJgfSwic2xhYi1kdW8iOnsiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhc2xkcjpgcmVndWxhcmB9LCJzbGFiLXByZXNzLWR1byI6eyJmYS1yZWd1bGFyIjpgcmVndWxhcmAsZmFzbHBkcjpgcmVndWxhcmB9LHRodW1icHJpbnQ6eyJmYS1saWdodCI6YGxpZ2h0YCxmYXRsOmBsaWdodGB9LHZlbGx1bTp7ImZhLXNvbGlkIjpgc29saWRgLGZhdnM6YHNvbGlkYH0scGl4ZWw6eyJmYS1yZWd1bGFyIjpgcmVndWxhcmAsZmFwcjpgcmVndWxhcmB9LG1vc2FpYzp7ImZhLXNvbGlkIjpgc29saWRgLGZhbXM6YHNvbGlkYH0sd2hpdGVib2FyZDp7ImZhLXNlbWlib2xkIjpgc2VtaWJvbGRgLGZhd3NiOmBzZW1pYm9sZGB9LG5vdGRvZzp7ImZhLXNvbGlkIjpgc29saWRgLGZhbnM6YHNvbGlkYH0sIm5vdGRvZy1kdW8iOnsiZmEtc29saWQiOmBzb2xpZGAsZmFuZHM6YHNvbGlkYH0sZXRjaDp7ImZhLXNvbGlkIjpgc29saWRgLGZhZXM6YHNvbGlkYH0sZ3JhcGhpdGU6eyJmYS10aGluIjpgdGhpbmAsZmFndDpgdGhpbmB9LGplbGx5OnsiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhanI6YHJlZ3VsYXJgfSwiamVsbHktZmlsbCI6eyJmYS1yZWd1bGFyIjpgcmVndWxhcmAsZmFqZnI6YHJlZ3VsYXJgfSwiamVsbHktZHVvIjp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWpkcjpgcmVndWxhcmB9LGNoaXNlbDp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWNyOmByZWd1bGFyYH0sdXRpbGl0eTp7ImZhLXNlbWlib2xkIjpgc2VtaWJvbGRgLGZhdXNiOmBzZW1pYm9sZGB9LCJ1dGlsaXR5LWR1byI6eyJmYS1zZW1pYm9sZCI6YHNlbWlib2xkYCxmYXVkc2I6YHNlbWlib2xkYH0sInV0aWxpdHktZmlsbCI6eyJmYS1zZW1pYm9sZCI6YHNlbWlib2xkYCxmYXVmc2I6YHNlbWlib2xkYH19LEp0PXtHUk9VUDpgZHVvdG9uZS1ncm91cGAsU1dBUF9PUEFDSVRZOmBzd2FwLW9wYWNpdHlgLFBSSU1BUlk6YHByaW1hcnlgLFNFQ09OREFSWTpgc2Vjb25kYXJ5YH0sWXQ9W2BmYS1jbGFzc2ljYCxgZmEtZHVvdG9uZWAsYGZhLXNoYXJwYCxgZmEtc2hhcnAtZHVvdG9uZWAsYGZhLXRodW1icHJpbnRgLGBmYS13aGl0ZWJvYXJkYCxgZmEtbm90ZG9nYCxgZmEtbm90ZG9nLWR1b2AsYGZhLWNoaXNlbGAsYGZhLWV0Y2hgLGBmYS1ncmFwaGl0ZWAsYGZhLWplbGx5YCxgZmEtamVsbHktZmlsbGAsYGZhLWplbGx5LWR1b2AsYGZhLXNsYWJgLGBmYS1zbGFiLXByZXNzYCxgZmEtc2xhYi1wcmVzcy1kdW9gLGBmYS1zbGFiLWR1b2AsYGZhLW1vc2FpY2AsYGZhLXBpeGVsYCxgZmEtdmVsbHVtYCxgZmEtdXRpbGl0eWAsYGZhLXV0aWxpdHktZHVvYCxgZmEtdXRpbGl0eS1maWxsYF0sSz1gY2xhc3NpY2AsWHQ9YGR1b3RvbmVgLFp0PWBzaGFycGAsUXQ9YHNoYXJwLWR1b3RvbmVgLCR0PWBjaGlzZWxgLGVuPWBldGNoYCx0bj1gZ3JhcGhpdGVgLG5uPWBqZWxseWAscm49YGplbGx5LWR1b2AsYW49YGplbGx5LWZpbGxgLG9uPWBtb3NhaWNgLHNuPWBub3Rkb2dgLGNuPWBub3Rkb2ctZHVvYCxsbj1gcGl4ZWxgLHVuPWBzbGFiYCxkbj1gc2xhYi1kdW9gLGZuPWBzbGFiLXByZXNzYCxwbj1gc2xhYi1wcmVzcy1kdW9gLG1uPWB0aHVtYnByaW50YCxobj1gdXRpbGl0eWAsZ249YHV0aWxpdHktZHVvYCxfbj1gdXRpbGl0eS1maWxsYCx2bj1gdmVsbHVtYCx5bj1gd2hpdGVib2FyZGAsYm49YENsYXNzaWNgLHhuPWBEdW90b25lYCxTbj1gU2hhcnBgLENuPWBTaGFycCBEdW90b25lYCx3bj1gQ2hpc2VsYCxUbj1gRXRjaGAsRW49YEdyYXBoaXRlYCxEbj1gSmVsbHlgLE9uPWBKZWxseSBEdW9gLGtuPWBKZWxseSBGaWxsYCxBbj1gTW9zYWljYCxqbj1gTm90ZG9nYCxNbj1gTm90ZG9nIER1b2AsTm49YFBpeGVsYCxQbj1gU2xhYmAsRm49YFNsYWIgRHVvYCxJbj1gU2xhYiBQcmVzc2AsTG49YFNsYWIgUHJlc3MgRHVvYCxSbj1gVGh1bWJwcmludGAsem49YFV0aWxpdHlgLEJuPWBVdGlsaXR5IER1b2AsVm49YFV0aWxpdHkgRmlsbGAsSG49YFZlbGx1bWAsVW49YFdoaXRlYm9hcmRgLFduPVtLLFh0LFp0LFF0LCR0LGVuLHRuLG5uLHJuLGFuLG9uLHNuLGNuLGxuLHVuLGRuLGZuLHBuLG1uLGhuLGduLF9uLHZuLHluXTtXdD17fSxVKFUoVShVKFUoVShVKFUoVShVKFd0LEssYm4pLFh0LHhuKSxadCxTbiksUXQsQ24pLCR0LHduKSxlbixUbiksdG4sRW4pLG5uLERuKSxybixPbiksYW4sa24pLFUoVShVKFUoVShVKFUoVShVKFUoV3Qsb24sQW4pLHNuLGpuKSxjbixNbiksbG4sTm4pLHVuLFBuKSxkbixGbiksZm4sSW4pLHBuLExuKSxtbixSbiksaG4sem4pLFUoVShVKFUoV3QsZ24sQm4pLF9uLFZuKSx2bixIbikseW4sVW4pO3ZhciBHbj17Y2xhc3NpYzp7OTAwOmBmYXNgLDQwMDpgZmFyYCxub3JtYWw6YGZhcmAsMzAwOmBmYWxgLDEwMDpgZmF0YH0sZHVvdG9uZTp7OTAwOmBmYWRgLDQwMDpgZmFkcmAsMzAwOmBmYWRsYCwxMDA6YGZhZHRgfSxzaGFycDp7OTAwOmBmYXNzYCw0MDA6YGZhc3JgLDMwMDpgZmFzbGAsMTAwOmBmYXN0YH0sInNoYXJwLWR1b3RvbmUiOns5MDA6YGZhc2RzYCw0MDA6YGZhc2RyYCwzMDA6YGZhc2RsYCwxMDA6YGZhc2R0YH0sc2xhYjp7NDAwOmBmYXNscmB9LCJzbGFiLXByZXNzIjp7NDAwOmBmYXNscHJgfSwic2xhYi1kdW8iOns0MDA6YGZhc2xkcmB9LCJzbGFiLXByZXNzLWR1byI6ezQwMDpgZmFzbHBkcmB9LHZlbGx1bTp7OTAwOmBmYXZzYH0sbW9zYWljOns5MDA6YGZhbXNgfSxwaXhlbDp7NDAwOmBmYXByYH0sd2hpdGVib2FyZDp7NjAwOmBmYXdzYmB9LHRodW1icHJpbnQ6ezMwMDpgZmF0bGB9LG5vdGRvZzp7OTAwOmBmYW5zYH0sIm5vdGRvZy1kdW8iOns5MDA6YGZhbmRzYH0sZXRjaDp7OTAwOmBmYWVzYH0sZ3JhcGhpdGU6ezEwMDpgZmFndGB9LGNoaXNlbDp7NDAwOmBmYWNyYH0samVsbHk6ezQwMDpgZmFqcmB9LCJqZWxseS1maWxsIjp7NDAwOmBmYWpmcmB9LCJqZWxseS1kdW8iOns0MDA6YGZhamRyYH0sdXRpbGl0eTp7NjAwOmBmYXVzYmB9LCJ1dGlsaXR5LWR1byI6ezYwMDpgZmF1ZHNiYH0sInV0aWxpdHktZmlsbCI6ezYwMDpgZmF1ZnNiYH19LEtuPXsiRm9udCBBd2Vzb21lIDcgRnJlZSI6ezkwMDpgZmFzYCw0MDA6YGZhcmB9LCJGb250IEF3ZXNvbWUgNyBQcm8iOns5MDA6YGZhc2AsNDAwOmBmYXJgLG5vcm1hbDpgZmFyYCwzMDA6YGZhbGAsMTAwOmBmYXRgfSwiRm9udCBBd2Vzb21lIDcgQnJhbmRzIjp7NDAwOmBmYWJgLG5vcm1hbDpgZmFiYH0sIkZvbnQgQXdlc29tZSA3IER1b3RvbmUiOns5MDA6YGZhZGAsNDAwOmBmYWRyYCxub3JtYWw6YGZhZHJgLDMwMDpgZmFkbGAsMTAwOmBmYWR0YH0sIkZvbnQgQXdlc29tZSA3IFNoYXJwIjp7OTAwOmBmYXNzYCw0MDA6YGZhc3JgLG5vcm1hbDpgZmFzcmAsMzAwOmBmYXNsYCwxMDA6YGZhc3RgfSwiRm9udCBBd2Vzb21lIDcgU2hhcnAgRHVvdG9uZSI6ezkwMDpgZmFzZHNgLDQwMDpgZmFzZHJgLG5vcm1hbDpgZmFzZHJgLDMwMDpgZmFzZGxgLDEwMDpgZmFzZHRgfSwiRm9udCBBd2Vzb21lIDcgSmVsbHkiOns0MDA6YGZhanJgLG5vcm1hbDpgZmFqcmB9LCJGb250IEF3ZXNvbWUgNyBKZWxseSBGaWxsIjp7NDAwOmBmYWpmcmAsbm9ybWFsOmBmYWpmcmB9LCJGb250IEF3ZXNvbWUgNyBKZWxseSBEdW8iOns0MDA6YGZhamRyYCxub3JtYWw6YGZhamRyYH0sIkZvbnQgQXdlc29tZSA3IFNsYWIiOns0MDA6YGZhc2xyYCxub3JtYWw6YGZhc2xyYH0sIkZvbnQgQXdlc29tZSA3IFNsYWIgUHJlc3MiOns0MDA6YGZhc2xwcmAsbm9ybWFsOmBmYXNscHJgfSwiRm9udCBBd2Vzb21lIDcgU2xhYiBEdW8iOns0MDA6YGZhc2xkcmAsbm9ybWFsOmBmYXNsZHJgfSwiRm9udCBBd2Vzb21lIDcgU2xhYiBQcmVzcyBEdW8iOns0MDA6YGZhc2xwZHJgLG5vcm1hbDpgZmFzbHBkcmB9LCJGb250IEF3ZXNvbWUgNyBQaXhlbCI6ezQwMDpgZmFwcmAsbm9ybWFsOmBmYXByYH0sIkZvbnQgQXdlc29tZSA3IE1vc2FpYyI6ezkwMDpgZmFtc2Asbm9ybWFsOmBmYW1zYH0sIkZvbnQgQXdlc29tZSA3IFZlbGx1bSI6ezkwMDpgZmF2c2Asbm9ybWFsOmBmYXZzYH0sIkZvbnQgQXdlc29tZSA3IFRodW1icHJpbnQiOnszMDA6YGZhdGxgLG5vcm1hbDpgZmF0bGB9LCJGb250IEF3ZXNvbWUgNyBOb3Rkb2ciOns5MDA6YGZhbnNgLG5vcm1hbDpgZmFuc2B9LCJGb250IEF3ZXNvbWUgNyBOb3Rkb2cgRHVvIjp7OTAwOmBmYW5kc2Asbm9ybWFsOmBmYW5kc2B9LCJGb250IEF3ZXNvbWUgNyBFdGNoIjp7OTAwOmBmYWVzYCxub3JtYWw6YGZhZXNgfSwiRm9udCBBd2Vzb21lIDcgR3JhcGhpdGUiOnsxMDA6YGZhZ3RgLG5vcm1hbDpgZmFndGB9LCJGb250IEF3ZXNvbWUgNyBDaGlzZWwiOns0MDA6YGZhY3JgLG5vcm1hbDpgZmFjcmB9LCJGb250IEF3ZXNvbWUgNyBXaGl0ZWJvYXJkIjp7NjAwOmBmYXdzYmAsbm9ybWFsOmBmYXdzYmB9LCJGb250IEF3ZXNvbWUgNyBVdGlsaXR5Ijp7NjAwOmBmYXVzYmAsbm9ybWFsOmBmYXVzYmB9LCJGb250IEF3ZXNvbWUgNyBVdGlsaXR5IER1byI6ezYwMDpgZmF1ZHNiYCxub3JtYWw6YGZhdWRzYmB9LCJGb250IEF3ZXNvbWUgNyBVdGlsaXR5IEZpbGwiOns2MDA6YGZhdWZzYmAsbm9ybWFsOmBmYXVmc2JgfX0scW49bmV3IE1hcChbW2BjbGFzc2ljYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYCxgcmVndWxhcmAsYGxpZ2h0YCxgdGhpbmAsYGJyYW5kc2BdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgZHVvdG9uZWAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYWRgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGAsYHJlZ3VsYXJgLGBsaWdodGAsYHRoaW5gXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYHNoYXJwYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc3NgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGAsYHJlZ3VsYXJgLGBsaWdodGAsYHRoaW5gXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYHNoYXJwLWR1b3RvbmVgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFzZHNgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGAsYHJlZ3VsYXJgLGBsaWdodGAsYHRoaW5gXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYGNoaXNlbGAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYWNyYCxkZWZhdWx0U3R5bGVJZDpgcmVndWxhcmAsc3R5bGVJZHM6W2ByZWd1bGFyYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sW2BldGNoYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhZXNgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgZ3JhcGhpdGVgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFndGAsZGVmYXVsdFN0eWxlSWQ6YHRoaW5gLHN0eWxlSWRzOltgdGhpbmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjEwMH1dLFtgamVsbHlgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFqcmAsZGVmYXVsdFN0eWxlSWQ6YHJlZ3VsYXJgLHN0eWxlSWRzOltgcmVndWxhcmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFtgamVsbHktZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhamRyYCxkZWZhdWx0U3R5bGVJZDpgcmVndWxhcmAsc3R5bGVJZHM6W2ByZWd1bGFyYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sW2BqZWxseS1maWxsYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhamZyYCxkZWZhdWx0U3R5bGVJZDpgcmVndWxhcmAsc3R5bGVJZHM6W2ByZWd1bGFyYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sW2Btb3NhaWNgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFtc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6OTAwfV0sW2Bub3Rkb2dgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFuc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6OTAwfV0sW2Bub3Rkb2ctZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhbmRzYCxkZWZhdWx0U3R5bGVJZDpgc29saWRgLHN0eWxlSWRzOltgc29saWRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYHBpeGVsYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhcHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYHNsYWJgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFzbHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYHNsYWItZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc2xkcmAsZGVmYXVsdFN0eWxlSWQ6YHJlZ3VsYXJgLHN0eWxlSWRzOltgcmVndWxhcmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFtgc2xhYi1wcmVzc2Ase2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXNscHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYHNsYWItcHJlc3MtZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc2xwZHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYHRodW1icHJpbnRgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmF0bGAsZGVmYXVsdFN0eWxlSWQ6YGxpZ2h0YCxzdHlsZUlkczpbYGxpZ2h0YF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6MzAwfV0sW2B1dGlsaXR5YCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhdXNiYCxkZWZhdWx0U3R5bGVJZDpgc2VtaWJvbGRgLHN0eWxlSWRzOltgc2VtaWJvbGRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo2MDB9XSxbYHV0aWxpdHktZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhdWRzYmAsZGVmYXVsdFN0eWxlSWQ6YHNlbWlib2xkYCxzdHlsZUlkczpbYHNlbWlib2xkYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NjAwfV0sW2B1dGlsaXR5LWZpbGxgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmF1ZnNiYCxkZWZhdWx0U3R5bGVJZDpgc2VtaWJvbGRgLHN0eWxlSWRzOltgc2VtaWJvbGRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo2MDB9XSxbYHZlbGx1bWAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXZzYCxkZWZhdWx0U3R5bGVJZDpgc29saWRgLHN0eWxlSWRzOltgc29saWRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYHdoaXRlYm9hcmRgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmF3c2JgLGRlZmF1bHRTdHlsZUlkOmBzZW1pYm9sZGAsc3R5bGVJZHM6W2BzZW1pYm9sZGBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjYwMH1dXSksSm49e2NoaXNlbDp7cmVndWxhcjpgZmFjcmB9LGNsYXNzaWM6e2JyYW5kczpgZmFiYCxsaWdodDpgZmFsYCxyZWd1bGFyOmBmYXJgLHNvbGlkOmBmYXNgLHRoaW46YGZhdGB9LGR1b3RvbmU6e2xpZ2h0OmBmYWRsYCxyZWd1bGFyOmBmYWRyYCxzb2xpZDpgZmFkYCx0aGluOmBmYWR0YH0sZXRjaDp7c29saWQ6YGZhZXNgfSxncmFwaGl0ZTp7dGhpbjpgZmFndGB9LGplbGx5OntyZWd1bGFyOmBmYWpyYH0sImplbGx5LWR1byI6e3JlZ3VsYXI6YGZhamRyYH0sImplbGx5LWZpbGwiOntyZWd1bGFyOmBmYWpmcmB9LG1vc2FpYzp7c29saWQ6YGZhbXNgfSxub3Rkb2c6e3NvbGlkOmBmYW5zYH0sIm5vdGRvZy1kdW8iOntzb2xpZDpgZmFuZHNgfSxwaXhlbDp7cmVndWxhcjpgZmFwcmB9LHNoYXJwOntsaWdodDpgZmFzbGAscmVndWxhcjpgZmFzcmAsc29saWQ6YGZhc3NgLHRoaW46YGZhc3RgfSwic2hhcnAtZHVvdG9uZSI6e2xpZ2h0OmBmYXNkbGAscmVndWxhcjpgZmFzZHJgLHNvbGlkOmBmYXNkc2AsdGhpbjpgZmFzZHRgfSxzbGFiOntyZWd1bGFyOmBmYXNscmB9LCJzbGFiLWR1byI6e3JlZ3VsYXI6YGZhc2xkcmB9LCJzbGFiLXByZXNzIjp7cmVndWxhcjpgZmFzbHByYH0sInNsYWItcHJlc3MtZHVvIjp7cmVndWxhcjpgZmFzbHBkcmB9LHRodW1icHJpbnQ6e2xpZ2h0OmBmYXRsYH0sdXRpbGl0eTp7c2VtaWJvbGQ6YGZhdXNiYH0sInV0aWxpdHktZHVvIjp7c2VtaWJvbGQ6YGZhdWRzYmB9LCJ1dGlsaXR5LWZpbGwiOntzZW1pYm9sZDpgZmF1ZnNiYH0sdmVsbHVtOntzb2xpZDpgZmF2c2B9LHdoaXRlYm9hcmQ6e3NlbWlib2xkOmBmYXdzYmB9fSxZbj1bYGZha2AsYGZhLWtpdGAsYGZha2RgLGBmYS1raXQtZHVvdG9uZWBdLFhuPXtraXQ6e2Zhazpga2l0YCwiZmEta2l0Ijpga2l0YH0sImtpdC1kdW90b25lIjp7ZmFrZDpga2l0LWR1b3RvbmVgLCJmYS1raXQtZHVvdG9uZSI6YGtpdC1kdW90b25lYH19LFpuPVtga2l0YF07VShVKHt9LGBraXRgLGBLaXRgKSxga2l0LWR1b3RvbmVgLGBLaXQgRHVvdG9uZWApO3ZhciBRbj17a2l0OnsiZmEta2l0IjpgZmFrYH0sImtpdC1kdW90b25lIjp7ImZhLWtpdC1kdW90b25lIjpgZmFrZGB9fSwkbj17IkZvbnQgQXdlc29tZSBLaXQiOns0MDA6YGZha2Asbm9ybWFsOmBmYWtgfSwiRm9udCBBd2Vzb21lIEtpdCBEdW90b25lIjp7NDAwOmBmYWtkYCxub3JtYWw6YGZha2RgfX0sZXI9e2tpdDp7ZmFrOmBmYS1raXRgfSwia2l0LWR1b3RvbmUiOntmYWtkOmBmYS1raXQtZHVvdG9uZWB9fSx0cj17a2l0OntraXQ6YGZha2B9LCJraXQtZHVvdG9uZSI6eyJraXQtZHVvdG9uZSI6YGZha2RgfX0sbnIscnI9e0dST1VQOmBkdW90b25lLWdyb3VwYCxTV0FQX09QQUNJVFk6YHN3YXAtb3BhY2l0eWAsUFJJTUFSWTpgcHJpbWFyeWAsU0VDT05EQVJZOmBzZWNvbmRhcnlgfSxpcj1bYGZhLWNsYXNzaWNgLGBmYS1kdW90b25lYCxgZmEtc2hhcnBgLGBmYS1zaGFycC1kdW90b25lYCxgZmEtdGh1bWJwcmludGAsYGZhLXdoaXRlYm9hcmRgLGBmYS1ub3Rkb2dgLGBmYS1ub3Rkb2ctZHVvYCxgZmEtY2hpc2VsYCxgZmEtZXRjaGAsYGZhLWdyYXBoaXRlYCxgZmEtamVsbHlgLGBmYS1qZWxseS1maWxsYCxgZmEtamVsbHktZHVvYCxgZmEtc2xhYmAsYGZhLXNsYWItcHJlc3NgLGBmYS1zbGFiLXByZXNzLWR1b2AsYGZhLXNsYWItZHVvYCxgZmEtbW9zYWljYCxgZmEtcGl4ZWxgLGBmYS12ZWxsdW1gLGBmYS11dGlsaXR5YCxgZmEtdXRpbGl0eS1kdW9gLGBmYS11dGlsaXR5LWZpbGxgXTtucj17fSxVKFUoVShVKFUoVShVKFUoVShVKG5yLGBjbGFzc2ljYCxgQ2xhc3NpY2ApLGBkdW90b25lYCxgRHVvdG9uZWApLGBzaGFycGAsYFNoYXJwYCksYHNoYXJwLWR1b3RvbmVgLGBTaGFycCBEdW90b25lYCksYGNoaXNlbGAsYENoaXNlbGApLGBldGNoYCxgRXRjaGApLGBncmFwaGl0ZWAsYEdyYXBoaXRlYCksYGplbGx5YCxgSmVsbHlgKSxgamVsbHktZHVvYCxgSmVsbHkgRHVvYCksYGplbGx5LWZpbGxgLGBKZWxseSBGaWxsYCksVShVKFUoVShVKFUoVShVKFUoVShucixgbW9zYWljYCxgTW9zYWljYCksYG5vdGRvZ2AsYE5vdGRvZ2ApLGBub3Rkb2ctZHVvYCxgTm90ZG9nIER1b2ApLGBwaXhlbGAsYFBpeGVsYCksYHNsYWJgLGBTbGFiYCksYHNsYWItZHVvYCxgU2xhYiBEdW9gKSxgc2xhYi1wcmVzc2AsYFNsYWIgUHJlc3NgKSxgc2xhYi1wcmVzcy1kdW9gLGBTbGFiIFByZXNzIER1b2ApLGB0aHVtYnByaW50YCxgVGh1bWJwcmludGApLGB1dGlsaXR5YCxgVXRpbGl0eWApLFUoVShVKFUobnIsYHV0aWxpdHktZHVvYCxgVXRpbGl0eSBEdW9gKSxgdXRpbGl0eS1maWxsYCxgVXRpbGl0eSBGaWxsYCksYHZlbGx1bWAsYFZlbGx1bWApLGB3aGl0ZWJvYXJkYCxgV2hpdGVib2FyZGApLFUoVSh7fSxga2l0YCxgS2l0YCksYGtpdC1kdW90b25lYCxgS2l0IER1b3RvbmVgKTt2YXIgYXI9e2NsYXNzaWM6eyJmYS1icmFuZHMiOmBmYWJgLCJmYS1kdW90b25lIjpgZmFkYCwiZmEtbGlnaHQiOmBmYWxgLCJmYS1yZWd1bGFyIjpgZmFyYCwiZmEtc29saWQiOmBmYXNgLCJmYS10aGluIjpgZmF0YH0sZHVvdG9uZTp7ImZhLXJlZ3VsYXIiOmBmYWRyYCwiZmEtbGlnaHQiOmBmYWRsYCwiZmEtdGhpbiI6YGZhZHRgfSxzaGFycDp7ImZhLXNvbGlkIjpgZmFzc2AsImZhLXJlZ3VsYXIiOmBmYXNyYCwiZmEtbGlnaHQiOmBmYXNsYCwiZmEtdGhpbiI6YGZhc3RgfSwic2hhcnAtZHVvdG9uZSI6eyJmYS1zb2xpZCI6YGZhc2RzYCwiZmEtcmVndWxhciI6YGZhc2RyYCwiZmEtbGlnaHQiOmBmYXNkbGAsImZhLXRoaW4iOmBmYXNkdGB9LHNsYWI6eyJmYS1yZWd1bGFyIjpgZmFzbHJgfSwic2xhYi1wcmVzcyI6eyJmYS1yZWd1bGFyIjpgZmFzbHByYH0sInNsYWItZHVvIjp7ImZhLXJlZ3VsYXIiOmBmYXNsZHJgfSwic2xhYi1wcmVzcy1kdW8iOnsiZmEtcmVndWxhciI6YGZhc2xwZHJgfSxwaXhlbDp7ImZhLXJlZ3VsYXIiOmBmYXByYH0sbW9zYWljOnsiZmEtc29saWQiOmBmYW1zYH0sdmVsbHVtOnsiZmEtc29saWQiOmBmYXZzYH0sd2hpdGVib2FyZDp7ImZhLXNlbWlib2xkIjpgZmF3c2JgfSx0aHVtYnByaW50OnsiZmEtbGlnaHQiOmBmYXRsYH0sbm90ZG9nOnsiZmEtc29saWQiOmBmYW5zYH0sIm5vdGRvZy1kdW8iOnsiZmEtc29saWQiOmBmYW5kc2B9LGV0Y2g6eyJmYS1zb2xpZCI6YGZhZXNgfSxncmFwaGl0ZTp7ImZhLXRoaW4iOmBmYWd0YH0samVsbHk6eyJmYS1yZWd1bGFyIjpgZmFqcmB9LCJqZWxseS1maWxsIjp7ImZhLXJlZ3VsYXIiOmBmYWpmcmB9LCJqZWxseS1kdW8iOnsiZmEtcmVndWxhciI6YGZhamRyYH0sY2hpc2VsOnsiZmEtcmVndWxhciI6YGZhY3JgfSx1dGlsaXR5OnsiZmEtc2VtaWJvbGQiOmBmYXVzYmB9LCJ1dGlsaXR5LWR1byI6eyJmYS1zZW1pYm9sZCI6YGZhdWRzYmB9LCJ1dGlsaXR5LWZpbGwiOnsiZmEtc2VtaWJvbGQiOmBmYXVmc2JgfX0sb3I9e2NsYXNzaWM6W2BmYXNgLGBmYXJgLGBmYWxgLGBmYXRgLGBmYWRgXSxkdW90b25lOltgZmFkcmAsYGZhZGxgLGBmYWR0YF0sc2hhcnA6W2BmYXNzYCxgZmFzcmAsYGZhc2xgLGBmYXN0YF0sInNoYXJwLWR1b3RvbmUiOltgZmFzZHNgLGBmYXNkcmAsYGZhc2RsYCxgZmFzZHRgXSxzbGFiOltgZmFzbHJgXSwic2xhYi1wcmVzcyI6W2BmYXNscHJgXSwic2xhYi1kdW8iOltgZmFzbGRyYF0sInNsYWItcHJlc3MtZHVvIjpbYGZhc2xwZHJgXSxwaXhlbDpbYGZhcHJgXSxtb3NhaWM6W2BmYW1zYF0sdmVsbHVtOltgZmF2c2BdLHdoaXRlYm9hcmQ6W2BmYXdzYmBdLHRodW1icHJpbnQ6W2BmYXRsYF0sbm90ZG9nOltgZmFuc2BdLCJub3Rkb2ctZHVvIjpbYGZhbmRzYF0sZXRjaDpbYGZhZXNgXSxncmFwaGl0ZTpbYGZhZ3RgXSxqZWxseTpbYGZhanJgXSwiamVsbHktZmlsbCI6W2BmYWpmcmBdLCJqZWxseS1kdW8iOltgZmFqZHJgXSxjaGlzZWw6W2BmYWNyYF0sdXRpbGl0eTpbYGZhdXNiYF0sInV0aWxpdHktZHVvIjpbYGZhdWRzYmBdLCJ1dGlsaXR5LWZpbGwiOltgZmF1ZnNiYF19LHNyPXtjbGFzc2ljOntmYWI6YGZhLWJyYW5kc2AsZmFkOmBmYS1kdW90b25lYCxmYWw6YGZhLWxpZ2h0YCxmYXI6YGZhLXJlZ3VsYXJgLGZhczpgZmEtc29saWRgLGZhdDpgZmEtdGhpbmB9LGR1b3RvbmU6e2ZhZHI6YGZhLXJlZ3VsYXJgLGZhZGw6YGZhLWxpZ2h0YCxmYWR0OmBmYS10aGluYH0sc2hhcnA6e2Zhc3M6YGZhLXNvbGlkYCxmYXNyOmBmYS1yZWd1bGFyYCxmYXNsOmBmYS1saWdodGAsZmFzdDpgZmEtdGhpbmB9LCJzaGFycC1kdW90b25lIjp7ZmFzZHM6YGZhLXNvbGlkYCxmYXNkcjpgZmEtcmVndWxhcmAsZmFzZGw6YGZhLWxpZ2h0YCxmYXNkdDpgZmEtdGhpbmB9LHNsYWI6e2Zhc2xyOmBmYS1yZWd1bGFyYH0sInNsYWItcHJlc3MiOntmYXNscHI6YGZhLXJlZ3VsYXJgfSwic2xhYi1kdW8iOntmYXNsZHI6YGZhLXJlZ3VsYXJgfSwic2xhYi1wcmVzcy1kdW8iOntmYXNscGRyOmBmYS1yZWd1bGFyYH0scGl4ZWw6e2ZhcHI6YGZhLXJlZ3VsYXJgfSxtb3NhaWM6e2ZhbXM6YGZhLXNvbGlkYH0sdmVsbHVtOntmYXZzOmBmYS1zb2xpZGB9LHdoaXRlYm9hcmQ6e2Zhd3NiOmBmYS1zZW1pYm9sZGB9LHRodW1icHJpbnQ6e2ZhdGw6YGZhLWxpZ2h0YH0sbm90ZG9nOntmYW5zOmBmYS1zb2xpZGB9LCJub3Rkb2ctZHVvIjp7ZmFuZHM6YGZhLXNvbGlkYH0sZXRjaDp7ZmFlczpgZmEtc29saWRgfSxncmFwaGl0ZTp7ZmFndDpgZmEtdGhpbmB9LGplbGx5OntmYWpyOmBmYS1yZWd1bGFyYH0sImplbGx5LWZpbGwiOntmYWpmcjpgZmEtcmVndWxhcmB9LCJqZWxseS1kdW8iOntmYWpkcjpgZmEtcmVndWxhcmB9LGNoaXNlbDp7ZmFjcjpgZmEtcmVndWxhcmB9LHV0aWxpdHk6e2ZhdXNiOmBmYS1zZW1pYm9sZGB9LCJ1dGlsaXR5LWR1byI6e2ZhdWRzYjpgZmEtc2VtaWJvbGRgfSwidXRpbGl0eS1maWxsIjp7ZmF1ZnNiOmBmYS1zZW1pYm9sZGB9fSxjcj1gZmEuZmFzLmZhci5mYWwuZmF0LmZhZC5mYWRyLmZhZGwuZmFkdC5mYWIuZmFzcy5mYXNyLmZhc2wuZmFzdC5mYXNkcy5mYXNkci5mYXNkbC5mYXNkdC5mYXNsci5mYXNscHIuZmFzbGRyLmZhc2xwZHIuZmFwci5mYW1zLmZhdnMuZmF3c2IuZmF0bC5mYW5zLmZhbmRzLmZhZXMuZmFndC5mYWpyLmZhamZyLmZhamRyLmZhY3IuZmF1c2IuZmF1ZHNiLmZhdWZzYmAuc3BsaXQoYC5gKS5jb25jYXQoaXIsW2BmYS1zb2xpZGAsYGZhLXJlZ3VsYXJgLGBmYS1saWdodGAsYGZhLXRoaW5gLGBmYS1kdW90b25lYCxgZmEtYnJhbmRzYCxgZmEtc2VtaWJvbGRgXSksbHI9W2Bzb2xpZGAsYHJlZ3VsYXJgLGBsaWdodGAsYHRoaW5gLGBkdW90b25lYCxgYnJhbmRzYCxgc2VtaWJvbGRgXSx1cj1bMSwyLDMsNCw1LDYsNyw4LDksMTBdLGRyPXVyLmNvbmNhdChbMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjBdKSxmcj1bXS5jb25jYXQoRHQoT2JqZWN0LmtleXMob3IpKSxscixbYGF3YCxgZndgLGBwdWxsLWxlZnRgLGBwdWxsLXJpZ2h0YF0sW2AyeHNgLGB4c2AsYHNtYCxgbGdgLGB4bGAsYDJ4bGAsYGJlYXRgLGBiZWF0LWZhZGVgLGBib3JkZXJgLGBib3VuY2VgLGBidXp6YCxgY2FudmFzLXNxdWFyZWAsYGNhbnZhcy1yb29teWAsYGZhZGVgLGBmbGlwLTM2MGAsYGZsaXAtYm90aGAsYGZsaXAtaG9yaXpvbnRhbGAsYGZsaXAtdmVydGljYWxgLGBmbGlwYCxgZmxvYXRgLGBpbnZlcnNlYCxgamVsbG9gLGBsYXllcnNgLGBsYXllcnMtYm90dG9tLWxlZnRgLGBsYXllcnMtYm90dG9tLXJpZ2h0YCxgbGF5ZXJzLWNvdW50ZXJgLGBsYXllcnMtdGV4dGAsYGxheWVycy10b3AtbGVmdGAsYGxheWVycy10b3AtcmlnaHRgLGBsaWAsYHB1bGwtZW5kYCxgcHVsbC1zdGFydGAsYHB1bHNlYCxgcm90YXRlLTE4MGAsYHJvdGF0ZS0yNzBgLGByb3RhdGUtOTBgLGByb3RhdGUtYnlgLGBzaGFrZWAsYHNwaW4tcHVsc2VgLGBzcGluLXJldmVyc2VgLGBzcGluYCxgc3Bpbi1zbmFwYCxgc3Bpbi1zbmFwLTRgLGBzcGluLXNuYXAtOGAsYHN0YWNrLTF4YCxgc3RhY2stMnhgLGBzdGFja2AsYHN3aW5nYCxgdWxgLGB3YWdgLGB3aWR0aC1hdXRvYCxgd2lkdGgtZml4ZWRgLHJyLkdST1VQLHJyLlNXQVBfT1BBQ0lUWSxyci5QUklNQVJZLHJyLlNFQ09OREFSWV0sdXIubWFwKGZ1bmN0aW9uKGUpe3JldHVybmAke2V9eGB9KSxkci5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuYHctJHtlfWB9KSkscHI9eyJGb250IEF3ZXNvbWUgNSBGcmVlIjp7OTAwOmBmYXNgLDQwMDpgZmFyYH0sIkZvbnQgQXdlc29tZSA1IFBybyI6ezkwMDpgZmFzYCw0MDA6YGZhcmAsbm9ybWFsOmBmYXJgLDMwMDpgZmFsYH0sIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI6ezQwMDpgZmFiYCxub3JtYWw6YGZhYmB9LCJGb250IEF3ZXNvbWUgNSBEdW90b25lIjp7OTAwOmBmYWRgfX0sbXI9YF9fX0ZPTlRfQVdFU09NRV9fX2AsaHI9MTYsZ3I9YGZhYCxfcj1gc3ZnLWlubGluZS0tZmFgLHZyPWBkYXRhLWZhLWkyc3ZnYCx5cj1gZGF0YS1mYS1wc2V1ZG8tZWxlbWVudGAsYnI9YGRhdGEtZmEtcHNldWRvLWVsZW1lbnQtcGVuZGluZ2AseHI9YGRhdGEtcHJlZml4YCxTcj1gZGF0YS1pY29uYCxDcj1gZm9udGF3ZXNvbWUtaTJzdmdgLHdyPWBhc3luY2AsVHI9W2BIVE1MYCxgSEVBRGAsYFNUWUxFYCxgU0NSSVBUYF0sRXI9W2A6OmJlZm9yZWAsYDo6YWZ0ZXJgLGA6YmVmb3JlYCxgOmFmdGVyYF0sRHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fSgpO2Z1bmN0aW9uIE9yKGUpe3JldHVybiBuZXcgUHJveHkoZSx7Z2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQgaW4gZT9lW3RdOmVbS119fSl9dmFyIGtyPVcoe30scXQpO2tyW0tdPVcoVyhXKFcoe30seyJmYS1kdW90b25lIjpgZHVvdG9uZWB9KSxxdFtLXSksWG4ua2l0KSxYbltga2l0LWR1b3RvbmVgXSk7dmFyIEFyPU9yKGtyKSxqcj1XKHt9LEpuKTtqcltLXT1XKFcoVyhXKHt9LHtkdW90b25lOmBmYWRgfSksanJbS10pLHRyLmtpdCksdHJbYGtpdC1kdW90b25lYF0pO3ZhciBNcj1PcihqciksTnI9Vyh7fSxzcik7TnJbS109VyhXKHt9LE5yW0tdKSxlci5raXQpO3ZhciBQcj1PcihOciksRnI9Vyh7fSxhcik7RnJbS109VyhXKHt9LEZyW0tdKSxRbi5raXQpLE9yKEZyKTt2YXIgSXI9R3QsTHI9YGZhLWxheWVycy10ZXh0YCxScj1LdDtPcihXKHt9LEduKSk7dmFyIHpyPVtgY2xhc3NgLGBkYXRhLXByZWZpeGAsYGRhdGEtaWNvbmAsYGRhdGEtZmEtdHJhbnNmb3JtYCxgZGF0YS1mYS1tYXNrYF0sQnI9SnQsVnI9W10uY29uY2F0KER0KFpuKSxEdChmcikpLEhyPXp0LkZvbnRBd2Vzb21lQ29uZmlnfHx7fTtmdW5jdGlvbiBVcihlKXt2YXIgdD1HLnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtgK2UrYF1gKTtpZih0KXJldHVybiB0LmdldEF0dHJpYnV0ZShlKX1mdW5jdGlvbiBXcihlKXtyZXR1cm4gZT09PWBgPyEwOmU9PT1gZmFsc2VgPyExOmU9PT1gdHJ1ZWB8fGV9RyYmdHlwZW9mIEcucXVlcnlTZWxlY3Rvcj09YGZ1bmN0aW9uYCYmW1tgZGF0YS1mYW1pbHktcHJlZml4YCxgZmFtaWx5UHJlZml4YF0sW2BkYXRhLWNzcy1wcmVmaXhgLGBjc3NQcmVmaXhgXSxbYGRhdGEtZmFtaWx5LWRlZmF1bHRgLGBmYW1pbHlEZWZhdWx0YF0sW2BkYXRhLXN0eWxlLWRlZmF1bHRgLGBzdHlsZURlZmF1bHRgXSxbYGRhdGEtcmVwbGFjZW1lbnQtY2xhc3NgLGByZXBsYWNlbWVudENsYXNzYF0sW2BkYXRhLWF1dG8tcmVwbGFjZS1zdmdgLGBhdXRvUmVwbGFjZVN2Z2BdLFtgZGF0YS1hdXRvLWFkZC1jc3NgLGBhdXRvQWRkQ3NzYF0sW2BkYXRhLXNlYXJjaC1wc2V1ZG8tZWxlbWVudHNgLGBzZWFyY2hQc2V1ZG9FbGVtZW50c2BdLFtgZGF0YS1zZWFyY2gtcHNldWRvLWVsZW1lbnRzLXdhcm5pbmdzYCxgc2VhcmNoUHNldWRvRWxlbWVudHNXYXJuaW5nc2BdLFtgZGF0YS1zZWFyY2gtcHNldWRvLWVsZW1lbnRzLWZ1bGwtc2NhbmAsYHNlYXJjaFBzZXVkb0VsZW1lbnRzRnVsbFNjYW5gXSxbYGRhdGEtb2JzZXJ2ZS1tdXRhdGlvbnNgLGBvYnNlcnZlTXV0YXRpb25zYF0sW2BkYXRhLW11dGF0ZS1hcHByb2FjaGAsYG11dGF0ZUFwcHJvYWNoYF0sW2BkYXRhLWtlZXAtb3JpZ2luYWwtc291cmNlYCxga2VlcE9yaWdpbmFsU291cmNlYF0sW2BkYXRhLW1lYXN1cmUtcGVyZm9ybWFuY2VgLGBtZWFzdXJlUGVyZm9ybWFuY2VgXSxbYGRhdGEtc2hvdy1taXNzaW5nLWljb25zYCxgc2hvd01pc3NpbmdJY29uc2BdXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PUV0KGUsMiksbj10WzBdLHI9dFsxXSxpPVdyKFVyKG4pKTtpIT1udWxsJiYoSHJbcl09aSl9KTt2YXIgR3I9e3N0eWxlRGVmYXVsdDpgc29saWRgLGZhbWlseURlZmF1bHQ6Syxjc3NQcmVmaXg6Z3IscmVwbGFjZW1lbnRDbGFzczpfcixhdXRvUmVwbGFjZVN2ZzohMCxhdXRvQWRkQ3NzOiEwLHNlYXJjaFBzZXVkb0VsZW1lbnRzOiExLHNlYXJjaFBzZXVkb0VsZW1lbnRzV2FybmluZ3M6ITAsc2VhcmNoUHNldWRvRWxlbWVudHNGdWxsU2NhbjohMSxvYnNlcnZlTXV0YXRpb25zOiEwLG11dGF0ZUFwcHJvYWNoOmBhc3luY2Asa2VlcE9yaWdpbmFsU291cmNlOiEwLG1lYXN1cmVQZXJmb3JtYW5jZTohMSxzaG93TWlzc2luZ0ljb25zOiEwfTtIci5mYW1pbHlQcmVmaXgmJihIci5jc3NQcmVmaXg9SHIuZmFtaWx5UHJlZml4KTt2YXIgS3I9VyhXKHt9LEdyKSxIcik7S3IuYXV0b1JlcGxhY2VTdmd8fChLci5vYnNlcnZlTXV0YXRpb25zPSExKTt2YXIgcT17fTtPYmplY3Qua2V5cyhHcikuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocSxlLHtlbnVtZXJhYmxlOiEwLHNldDpmdW5jdGlvbih0KXtLcltlXT10LHFyLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUocSl9KX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtyW2VdfX0pfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHEsImZhbWlseVByZWZpeCIse2VudW1lcmFibGU6ITAsc2V0OmZ1bmN0aW9uKGUpe0tyLmNzc1ByZWZpeD1lLHFyLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUocSl9KX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEtyLmNzc1ByZWZpeH19KSx6dC5Gb250QXdlc29tZUNvbmZpZz1xO3ZhciBxcj1bXTtmdW5jdGlvbiBKcihlKXtyZXR1cm4gcXIucHVzaChlKSxmdW5jdGlvbigpe3FyLnNwbGljZShxci5pbmRleE9mKGUpLDEpfX12YXIgWXI9aHIsWHI9e3NpemU6MTYseDowLHk6MCxyb3RhdGU6MCxmbGlwWDohMSxmbGlwWTohMX07ZnVuY3Rpb24gWnIoZSl7aWYoISghZXx8IUh0KSl7dmFyIHQ9Ry5jcmVhdGVFbGVtZW50KGBzdHlsZWApO3Quc2V0QXR0cmlidXRlKGB0eXBlYCxgdGV4dC9jc3NgKSx0LmlubmVySFRNTD1lO2Zvcih2YXIgbj1HLmhlYWQuY2hpbGROb2RlcyxyPW51bGwsaT1uLmxlbmd0aC0xO2k+LTE7aS0tKXt2YXIgYT1uW2ldLG89KGEudGFnTmFtZXx8YGApLnRvVXBwZXJDYXNlKCk7W2BTVFlMRWAsYExJTktgXS5pbmRleE9mKG8pPi0xJiYocj1hKX1yZXR1cm4gRy5oZWFkLmluc2VydEJlZm9yZSh0LHIpLGV9fXZhciBRcj1gMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpgO2Z1bmN0aW9uICRyKCl7Zm9yKHZhciBlPTEyLHQ9YGA7ZS0tPjA7KXQrPVFyW01hdGgucmFuZG9tKCkqNjJ8MF07cmV0dXJuIHR9ZnVuY3Rpb24gZWkoZSl7Zm9yKHZhciB0PVtdLG49KGV8fFtdKS5sZW5ndGg+Pj4wO24tLTspdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0aW9uIHRpKGUpe3JldHVybiBlLmNsYXNzTGlzdD9laShlLmNsYXNzTGlzdCk6KGUuZ2V0QXR0cmlidXRlKGBjbGFzc2ApfHxgYCkuc3BsaXQoYCBgKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KX1mdW5jdGlvbiBuaShlKXtyZXR1cm5gJHtlfWAucmVwbGFjZSgvJi9nLGAmYW1wO2ApLnJlcGxhY2UoLyIvZyxgJnF1b3Q7YCkucmVwbGFjZSgvJy9nLGAmIzM5O2ApLnJlcGxhY2UoLzwvZyxgJmx0O2ApLnJlcGxhY2UoLz4vZyxgJmd0O2ApfWZ1bmN0aW9uIHJpKGUpe3JldHVybiBPYmplY3Qua2V5cyhlfHx7fSkucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQrYCR7bn09IiR7bmkoZVtuXSl9IiBgfSxgYCkudHJpbSgpfWZ1bmN0aW9uIGlpKGUpe3JldHVybiBPYmplY3Qua2V5cyhlfHx7fSkucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQrYCR7bn06ICR7ZVtuXS50cmltKCl9O2B9LGBgKX1mdW5jdGlvbiBhaShlKXtyZXR1cm4gZS5zaXplIT09WHIuc2l6ZXx8ZS54IT09WHIueHx8ZS55IT09WHIueXx8ZS5yb3RhdGUhPT1Yci5yb3RhdGV8fGUuZmxpcFh8fGUuZmxpcFl9ZnVuY3Rpb24gb2koZSl7dmFyIHQ9ZS50cmFuc2Zvcm0sbj1lLmNvbnRhaW5lcldpZHRoLHI9ZS5pY29uV2lkdGg7cmV0dXJue291dGVyOnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSgke24vMn0gMjU2KWB9LGlubmVyOnt0cmFuc2Zvcm06YCR7YHRyYW5zbGF0ZSgke3QueCozMn0sICR7dC55KjMyfSkgYH0gJHtgc2NhbGUoJHt0LnNpemUvMTYqKHQuZmxpcFg/LTE6MSl9LCAke3Quc2l6ZS8xNioodC5mbGlwWT8tMToxKX0pIGB9ICR7YHJvdGF0ZSgke3Qucm90YXRlfSAwIDApYH1gfSxwYXRoOnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSgke3IvMiotMX0gLTI1NilgfX19ZnVuY3Rpb24gc2koZSl7dmFyIHQ9ZS50cmFuc2Zvcm0sbj1lLndpZHRoLHI9bj09PXZvaWQgMD9ocjpuLGk9ZS5oZWlnaHQsYT1pPT09dm9pZCAwP2hyOmksbz1lLnN0YXJ0Q2VudGVyZWQscz1vIT09dm9pZCAwJiZvLGM9YGA7cmV0dXJuIGMrPXMmJlV0P2B0cmFuc2xhdGUoJHt0LngvWXItci8yfWVtLCAke3QueS9Zci1hLzJ9ZW0pIGA6cz9gdHJhbnNsYXRlKGNhbGMoLTUwJSArICR7dC54L1lyfWVtKSwgY2FsYygtNTAlICsgJHt0LnkvWXJ9ZW0pKSBgOmB0cmFuc2xhdGUoJHt0LngvWXJ9ZW0sICR7dC55L1lyfWVtKSBgLGMrPWBzY2FsZSgke3Quc2l6ZS9ZcioodC5mbGlwWD8tMToxKX0sICR7dC5zaXplL1lyKih0LmZsaXBZPy0xOjEpfSkgYCxjKz1gcm90YXRlKCR7dC5yb3RhdGV9ZGVnKSBgLGN9dmFyIGNpPWA6cm9vdCwgOmhvc3QgewogIC0tZmEtZm9udC1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRnJlZSc7CiAgLS1mYS1mb250LXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEZyZWUnOwogIC0tZmEtZm9udC1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgUHJvJzsKICAtLWZhLWZvbnQtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgUHJvJzsKICAtLWZhLWZvbnQtZHVvdG9uZTogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRHVvdG9uZSc7CiAgLS1mYS1mb250LWR1b3RvbmUtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRHVvdG9uZSc7CiAgLS1mYS1mb250LWR1b3RvbmUtbGlnaHQ6IG5vcm1hbCAzMDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IER1b3RvbmUnOwogIC0tZmEtZm9udC1kdW90b25lLXRoaW46IG5vcm1hbCAxMDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IER1b3RvbmUnOwogIC0tZmEtZm9udC1icmFuZHM6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEJyYW5kcyc7CiAgLS1mYS1mb250LXNoYXJwLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCc7CiAgLS1mYS1mb250LXNoYXJwLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwJzsKICAtLWZhLWZvbnQtc2hhcnAtbGlnaHQ6IG5vcm1hbCAzMDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwJzsKICAtLWZhLWZvbnQtc2hhcnAtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAnOwogIC0tZmEtZm9udC1zaGFycC1kdW90b25lLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lJzsKICAtLWZhLWZvbnQtc2hhcnAtZHVvdG9uZS1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lJzsKICAtLWZhLWZvbnQtc2hhcnAtZHVvdG9uZS1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAgRHVvdG9uZSc7CiAgLS1mYS1mb250LXNoYXJwLWR1b3RvbmUtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAgRHVvdG9uZSc7CiAgLS1mYS1mb250LXNsYWItcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2xhYic7CiAgLS1mYS1mb250LXNsYWItcHJlc3MtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2xhYiBQcmVzcyc7CiAgLS1mYS1mb250LXNsYWItZHVvLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNsYWIgRHVvJzsKICAtLWZhLWZvbnQtc2xhYi1wcmVzcy1kdW8tcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2xhYiBQcmVzcyBEdW8nOwogIC0tZmEtZm9udC1waXhlbC1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBQaXhlbCc7CiAgLS1mYS1mb250LW1vc2FpYy1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgTW9zYWljJzsKICAtLWZhLWZvbnQtdmVsbHVtLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBWZWxsdW0nOwogIC0tZmEtZm9udC13aGl0ZWJvYXJkLXNlbWlib2xkOiBub3JtYWwgNjAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBXaGl0ZWJvYXJkJzsKICAtLWZhLWZvbnQtdGh1bWJwcmludC1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgVGh1bWJwcmludCc7CiAgLS1mYS1mb250LW5vdGRvZy1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgTm90ZG9nJzsKICAtLWZhLWZvbnQtbm90ZG9nLWR1by1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgTm90ZG9nIER1byc7CiAgLS1mYS1mb250LWV0Y2gtc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEV0Y2gnOwogIC0tZmEtZm9udC1ncmFwaGl0ZS10aGluOiBub3JtYWwgMTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBHcmFwaGl0ZSc7CiAgLS1mYS1mb250LWplbGx5LXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEplbGx5JzsKICAtLWZhLWZvbnQtamVsbHktZmlsbC1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBKZWxseSBGaWxsJzsKICAtLWZhLWZvbnQtamVsbHktZHVvLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEplbGx5IER1byc7CiAgLS1mYS1mb250LWNoaXNlbC1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBDaGlzZWwnOwogIC0tZmEtZm9udC11dGlsaXR5LXNlbWlib2xkOiBub3JtYWwgNjAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBVdGlsaXR5JzsKICAtLWZhLWZvbnQtdXRpbGl0eS1kdW8tc2VtaWJvbGQ6IG5vcm1hbCA2MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFV0aWxpdHkgRHVvJzsKICAtLWZhLWZvbnQtdXRpbGl0eS1maWxsLXNlbWlib2xkOiBub3JtYWwgNjAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBVdGlsaXR5IEZpbGwnOwp9Cgouc3ZnLWlubGluZS0tZmEgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIGRpc3BsYXk6IHZhcigtLWZhLWRpc3BsYXksIGlubGluZS1ibG9jayk7CiAgaGVpZ2h0OiAxZW07CiAgb3ZlcmZsb3c6IHZpc2libGU7CiAgdmVydGljYWwtYWxpZ246IC0wLjEyNWVtOwogIHdpZHRoOiB2YXIoLS1mYS13aWR0aCwgMS4yNWVtKTsKfQouc3ZnLWlubGluZS0tZmEuZmEtMnhzIHsKICB2ZXJ0aWNhbC1hbGlnbjogMC4xZW07Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXhzIHsKICB2ZXJ0aWNhbC1hbGlnbjogMGVtOwp9Ci5zdmctaW5saW5lLS1mYS5mYS1zbSB7CiAgdmVydGljYWwtYWxpZ246IC0wLjA3MTQyODU3MTRlbTsKfQouc3ZnLWlubGluZS0tZmEuZmEtbGcgewogIHZlcnRpY2FsLWFsaWduOiAtMC4yZW07Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXhsIHsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMjVlbTsKfQouc3ZnLWlubGluZS0tZmEuZmEtMnhsIHsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMzEyNWVtOwp9Ci5zdmctaW5saW5lLS1mYS5mYS1wdWxsLWxlZnQsCi5zdmctaW5saW5lLS1mYSAuZmEtcHVsbC1zdGFydCB7CiAgZmxvYXQ6IGlubGluZS1zdGFydDsKICBtYXJnaW4taW5saW5lLWVuZDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTsKfQouc3ZnLWlubGluZS0tZmEuZmEtcHVsbC1yaWdodCwKLnN2Zy1pbmxpbmUtLWZhIC5mYS1wdWxsLWVuZCB7CiAgZmxvYXQ6IGlubGluZS1lbmQ7CiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTsKfQouc3ZnLWlubGluZS0tZmEuZmEtbGkgewogIHdpZHRoOiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKTsKICBpbnNldC1pbmxpbmUtc3RhcnQ6IGNhbGMoLTEgKiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKSk7CiAgaW5zZXQtYmxvY2stc3RhcnQ6IDAuMjVlbTsgLyogc3luY2luZyB2ZXJ0aWNhbCBhbGlnbm1lbnQgd2l0aCBXZWIgRm9udCByZW5kZXJpbmcgKi8KfQoKLmZhLWxheWVycy1jb3VudGVyLCAuZmEtbGF5ZXJzLXRleHQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouZmEtbGF5ZXJzIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAxZW07CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTI1ZW07CiAgd2lkdGg6IHZhcigtLWZhLXdpZHRoLCAxLjI1ZW0pOwp9Ci5mYS1sYXllcnMgLnN2Zy1pbmxpbmUtLWZhIHsKICBpbnNldDogMDsKICBtYXJnaW46IGF1dG87CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7Cn0KCi5mYS1sYXllcnMtdGV4dCB7CiAgbGVmdDogNTAlOwogIHRvcDogNTAlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7Cn0KCi5mYS1sYXllcnMtY291bnRlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmEtY291bnRlci1iYWNrZ3JvdW5kLWNvbG9yLCAjZmYyNTNhKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1mYS1jb3VudGVyLWJvcmRlci1yYWRpdXMsIDFlbSk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBjb2xvcjogdmFyKC0tZmEtaW52ZXJzZSwgI2ZmZik7CiAgbGluZS1oZWlnaHQ6IHZhcigtLWZhLWNvdW50ZXItbGluZS1oZWlnaHQsIDEpOwogIG1heC13aWR0aDogdmFyKC0tZmEtY291bnRlci1tYXgtd2lkdGgsIDVlbSk7CiAgbWluLXdpZHRoOiB2YXIoLS1mYS1jb3VudGVyLW1pbi13aWR0aCwgMS41ZW0pOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcGFkZGluZzogdmFyKC0tZmEtY291bnRlci1wYWRkaW5nLCAwLjI1ZW0gMC41ZW0pOwogIHJpZ2h0OiB2YXIoLS1mYS1yaWdodCwgMCk7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgdG9wOiB2YXIoLS1mYS10b3AsIDApOwogIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtY291bnRlci1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDsKfQoKLmZhLWxheWVycy1ib3R0b20tcmlnaHQgewogIGJvdHRvbTogdmFyKC0tZmEtYm90dG9tLCAwKTsKICByaWdodDogdmFyKC0tZmEtcmlnaHQsIDApOwogIHRvcDogYXV0bzsKICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDsKfQoKLmZhLWxheWVycy1ib3R0b20tbGVmdCB7CiAgYm90dG9tOiB2YXIoLS1mYS1ib3R0b20sIDApOwogIGxlZnQ6IHZhcigtLWZhLWxlZnQsIDApOwogIHJpZ2h0OiBhdXRvOwogIHRvcDogYXV0bzsKICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0Owp9CgouZmEtbGF5ZXJzLXRvcC1yaWdodCB7CiAgdG9wOiB2YXIoLS1mYS10b3AsIDApOwogIHJpZ2h0OiB2YXIoLS1mYS1yaWdodCwgMCk7CiAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1sYXllcnMtc2NhbGUsIDAuMjUpKTsKICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgcmlnaHQ7Cn0KCi5mYS1sYXllcnMtdG9wLWxlZnQgewogIGxlZnQ6IHZhcigtLWZhLWxlZnQsIDApOwogIHJpZ2h0OiBhdXRvOwogIHRvcDogdmFyKC0tZmEtdG9wLCAwKTsKICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0Owp9CgouZmEtMXggewogIGZvbnQtc2l6ZTogMWVtOwp9CgouZmEtMnggewogIGZvbnQtc2l6ZTogMmVtOwp9CgouZmEtM3ggewogIGZvbnQtc2l6ZTogM2VtOwp9CgouZmEtNHggewogIGZvbnQtc2l6ZTogNGVtOwp9CgouZmEtNXggewogIGZvbnQtc2l6ZTogNWVtOwp9CgouZmEtNnggewogIGZvbnQtc2l6ZTogNmVtOwp9CgouZmEtN3ggewogIGZvbnQtc2l6ZTogN2VtOwp9CgouZmEtOHggewogIGZvbnQtc2l6ZTogOGVtOwp9CgouZmEtOXggewogIGZvbnQtc2l6ZTogOWVtOwp9CgouZmEtMTB4IHsKICBmb250LXNpemU6IDEwZW07Cn0KCi5mYS0yeHMgewogIGZvbnQtc2l6ZTogY2FsYygxMCAvIDE2ICogMWVtKTsgLyogY29udmVydHMgYSAxMHB4IHNpemUgaW50byBhbiBlbS1iYXNlZCB2YWx1ZSB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHNjYWxlJ3MgMTZweCBiYXNlICovCiAgbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDEwICogMWVtKTsgLyogc2V0cyB0aGUgbGluZS1oZWlnaHQgb2YgdGhlIGljb24gYmFjayB0byB0aGF0IG9mIGl0J3MgcGFyZW50ICovCiAgdmVydGljYWwtYWxpZ246IGNhbGMoKDYgLyAxMCAtIDAuMzc1KSAqIDFlbSk7IC8qIHZlcnRpY2FsbHkgY2VudGVycyB0aGUgaWNvbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzdXJyb3VuZGluZyB0ZXh0J3MgZGVzY2VuZGVyICovCn0KCi5mYS14cyB7CiAgZm9udC1zaXplOiBjYWxjKDEyIC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDEycHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMTIgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDEyIC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLXNtIHsKICBmb250LXNpemU6IGNhbGMoMTQgLyAxNiAqIDFlbSk7IC8qIGNvbnZlcnRzIGEgMTRweCBzaXplIGludG8gYW4gZW0tYmFzZWQgdmFsdWUgdGhhdCdzIHJlbGF0aXZlIHRvIHRoZSBzY2FsZSdzIDE2cHggYmFzZSAqLwogIGxpbmUtaGVpZ2h0OiBjYWxjKDEgLyAxNCAqIDFlbSk7IC8qIHNldHMgdGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBpY29uIGJhY2sgdG8gdGhhdCBvZiBpdCdzIHBhcmVudCAqLwogIHZlcnRpY2FsLWFsaWduOiBjYWxjKCg2IC8gMTQgLSAwLjM3NSkgKiAxZW0pOyAvKiB2ZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGljb24gdGFraW5nIGludG8gYWNjb3VudCB0aGUgc3Vycm91bmRpbmcgdGV4dCdzIGRlc2NlbmRlciAqLwp9CgouZmEtbGcgewogIGZvbnQtc2l6ZTogY2FsYygyMCAvIDE2ICogMWVtKTsgLyogY29udmVydHMgYSAyMHB4IHNpemUgaW50byBhbiBlbS1iYXNlZCB2YWx1ZSB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHNjYWxlJ3MgMTZweCBiYXNlICovCiAgbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDIwICogMWVtKTsgLyogc2V0cyB0aGUgbGluZS1oZWlnaHQgb2YgdGhlIGljb24gYmFjayB0byB0aGF0IG9mIGl0J3MgcGFyZW50ICovCiAgdmVydGljYWwtYWxpZ246IGNhbGMoKDYgLyAyMCAtIDAuMzc1KSAqIDFlbSk7IC8qIHZlcnRpY2FsbHkgY2VudGVycyB0aGUgaWNvbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzdXJyb3VuZGluZyB0ZXh0J3MgZGVzY2VuZGVyICovCn0KCi5mYS14bCB7CiAgZm9udC1zaXplOiBjYWxjKDI0IC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDI0cHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMjQgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDI0IC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLTJ4bCB7CiAgZm9udC1zaXplOiBjYWxjKDMyIC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDMycHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMzIgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDMyIC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLXdpZHRoLWF1dG8gewogIC0tZmEtd2lkdGg6IGF1dG87Cn0KCi5mYS1mdywKLmZhLXdpZHRoLWZpeGVkIHsKICAtLWZhLXdpZHRoOiAxLjI1ZW07Cn0KCi5mYS1jYW52YXMtc3F1YXJlIHsKICBwYWRkaW5nLWJsb2NrOiAwLjEyNWVtOwogIG1hcmdpbi1ibG9jay1lbmQ6IC0wLjEyNWVtOwp9CgouZmEtY2FudmFzLXJvb215IHsKICBwYWRkaW5nLWJsb2NrOiAwLjI1ZW07CiAgcGFkZGluZy1pbmxpbmU6IDAuMTI1ZW07CiAgbWFyZ2luLWJsb2NrLWVuZDogLTAuMjVlbTsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQoKLmZhLXVsIHsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tZmEtbGktbWFyZ2luLCAyLjVlbSk7CiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7Cn0KLmZhLXVsID4gbGkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmZhLWxpIHsKICBpbnNldC1pbmxpbmUtc3RhcnQ6IGNhbGMoLTEgKiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKSk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aWR0aDogdmFyKC0tZmEtbGktd2lkdGgsIDJlbSk7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCi8qIEhlYWRzIFVwOiBCb3JkZXJlZCBJY29ucyB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQgaW4gdGhlIGZ1dHVyZSEKICAtIFRoaXMgZmVhdHVyZSB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZSBvZiBGb250IEF3ZXNvbWUgKHY4KSEKICAtIFlvdSBtYXkgY29udGludWUgdG8gdXNlIGl0IGluIHRoaXMgdmVyc2lvbiAqdjcpLCBidXQgaXQgd2lsbCBub3QgYmUgc3VwcG9ydGVkIGluIEZvbnQgQXdlc29tZSB2OC4KKi8KLyogTm90ZXM6CiogLS1Ae3YuJGNzcy1wcmVmaXh9LWJvcmRlci13aWR0aCA9IDEvMTYgYnkgZGVmYXVsdCAodG8gcmVuZGVyIGFzIH4xcHggYmFzZWQgb24gYSAxNnB4IGRlZmF1bHQgZm9udC1zaXplKQoqIC0tQHt2LiRjc3MtcHJlZml4fS1ib3JkZXItcGFkZGluZyA9CiAgKiogMy8xNiBmb3IgdmVydGljYWwgcGFkZGluZyAodG8gZ2l2ZSB+MnB4IG9mIHZlcnRpY2FsIHdoaXRlc3BhY2UgYXJvdW5kIGFuIGljb24gY29uc2lkZXJpbmcgaXQncyB2ZXJ0aWNhbCBhbGlnbm1lbnQpCiAgKiogNC8xNiBmb3IgaG9yaXpvbnRhbCBwYWRkaW5nICh0byBnaXZlIH40cHggb2YgaG9yaXpvbnRhbCB3aGl0ZXNwYWNlIGFyb3VuZCBhbiBpY29uKQoqLwouZmEtYm9yZGVyIHsKICBib3JkZXItY29sb3I6IHZhcigtLWZhLWJvcmRlci1jb2xvciwgI2VlZSk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tZmEtYm9yZGVyLXJhZGl1cywgMC4xZW0pOwogIGJvcmRlci1zdHlsZTogdmFyKC0tZmEtYm9yZGVyLXN0eWxlLCBzb2xpZCk7CiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1mYS1ib3JkZXItd2lkdGgsIDAuMDYyNWVtKTsKICBib3gtc2l6aW5nOiB2YXIoLS1mYS1ib3JkZXItYm94LXNpemluZywgY29udGVudC1ib3gpOwogIHBhZGRpbmc6IHZhcigtLWZhLWJvcmRlci1wYWRkaW5nLCAwLjE4NzVlbSAwLjI1ZW0pOwp9CgouZmEtcHVsbC1sZWZ0LAouZmEtcHVsbC1zdGFydCB7CiAgZmxvYXQ6IGlubGluZS1zdGFydDsKICBtYXJnaW4taW5saW5lLWVuZDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTsKfQoKLmZhLXB1bGwtcmlnaHQsCi5mYS1wdWxsLWVuZCB7CiAgZmxvYXQ6IGlubGluZS1lbmQ7CiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTsKfQoKLmZhLWJlYXQgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1iZWF0OwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1ib3VuY2UgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1ib3VuY2U7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGN1YmljLWJlemllcigwLjI4LCAwLjg0LCAwLjQyLCAxKSk7Cn0KCi5mYS1mYWRlIHsKICBhbmltYXRpb24tbmFtZTogZmEtZmFkZTsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1pbi1vdXQpOwp9CgouZmEtYmVhdC1mYWRlIHsKICBhbmltYXRpb24tbmFtZTogZmEtYmVhdC1mYWRlOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1mbGlwIHsKICBhbmltYXRpb24tbmFtZTogZmEtZmxpcDsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDEuNXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1mbGlwLTM2MCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWZsaXAtMzYwOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1zaGFrZSB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLXNoYWtlOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMC43NXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1zcGluIHsKICBhbmltYXRpb24tbmFtZTogZmEtc3BpbjsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDJzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgbGluZWFyKTsKfQoKLmZhLXNwaW4tcmV2ZXJzZSB7CiAgLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwp9CgouZmEtcHVsc2UsCi5mYS1zcGluLXB1bHNlIHsKICBhbmltYXRpb24tbmFtZTogZmEtc3BpbjsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIHN0ZXBzKDgpKTsKfQoKLmZhLXNwaW4tc25hcCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLXNwaW4tc25hcDsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDNzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgbGluZWFyKTsKfQoKLmZhLXNwaW4tc25hcC00IHsKICBhbmltYXRpb24tbmFtZTogZmEtc3Bpbi1zbmFwLTQ7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAyLjRzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgbGluZWFyKTsKfQoKLmZhLXNwaW4tc25hcC04IHsKICBhbmltYXRpb24tbmFtZTogZmEtc3Bpbi1zbmFwLTg7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCA0cyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGxpbmVhcik7Cn0KCi5mYS1idXp6IHsKICBhbmltYXRpb24tbmFtZTogZmEtYnV6ejsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDAuNnMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBsaW5lYXIpOwp9CgouZmEtd2FnIHsKICBhbmltYXRpb24tbmFtZTogZmEtd2FnOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMC45cyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2Utb3V0KTsKICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gY2VudGVyOwp9CgouZmEtZmxvYXQgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1mbG9hdDsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDNzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1pbi1vdXQpOwogIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07Cn0KCi5mYS1zd2luZyB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLXN3aW5nOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMS4ycyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2Utb3V0KTsKICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyOwp9CgouZmEtamVsbG8gewogIGFuaW1hdGlvbi1uYW1lOiBmYS1qZWxsbzsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDAuOXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLW91dCk7Cn0KCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmZhLWJlYXQsCiAgLmZhLWJvdW5jZSwKICAuZmEtZmFkZSwKICAuZmEtYmVhdC1mYWRlLAogIC5mYS1mbGlwLAogIC5mYS1mbGlwLTM2MCwKICAuZmEtcHVsc2UsCiAgLmZhLXNoYWtlLAogIC5mYS1zcGluLAogIC5mYS1zcGluLXB1bHNlLAogIC5mYS1idXp6LAogIC5mYS1mbG9hdCwKICAuZmEtamVsbG8sCiAgLmZhLXNwaW4tc25hcCwKICAuZmEtc3Bpbi1zbmFwLTQsCiAgLmZhLXNwaW4tc25hcC04LAogIC5mYS1zd2luZywKICAuZmEtd2FnIHsKICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAa2V5ZnJhbWVzIGZhLWJlYXQgewogIDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQogIDI1JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKGNhbGMoMS4yNSAqIHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjUpKSk7CiAgfQogIDQ1JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKGNhbGMoMS4yMiAqIHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjIpKSk7CiAgfQogIDY1JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKGNhbGMoMS4yNSAqIHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjUpKSk7CiAgfQogIDkwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWJvdW5jZSB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKDApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZyk7CiAgfQogIDE0JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS14LCAxLjA2KSwgdmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXksIDAuOTQpKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1hbnRpY2lwYXRpb24sIDNweCkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICAzMiUgewogICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS14LCAwLjk0KSwgdmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteSwgMS4xMikpIHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWZhLWJvdW5jZS1oZWlnaHQsIDAuNWVtKSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAuNjYsIDAuNjYsIDEpOwogIH0KICA1MiUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKGNhbGMoLTEgKiB2YXIoLS1mYS1ib3VuY2UtaGVpZ2h0LCAwLjVlbSkgKiAxLjEpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjUsIDAsIDEsIDAuNSk7CiAgfQogIDcwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXgsIDEuMDYpLCB2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS15LCAwLjkyKSkgdHJhbnNsYXRlWSgwKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLjMzLCAwLjY2LCAxKTsKICB9CiAgODUlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCwgMS4wNCkgdHJhbnNsYXRlWShjYWxjKC0ycHggKiB2YXIoLS1mYS1ib3VuY2UtcmVib3VuZCwgMSkpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLCAwLjY2LCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoMCk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtZmFkZSB7CiAgMCUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjQsIDEpOwogIH0KICA0MCUgewogICAgb3BhY2l0eTogdmFyKC0tZmEtZmFkZS1vcGFjaXR5LCAwLjQpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtYmVhdC1mYWRlIHsKICAwJSB7CiAgICBvcGFjaXR5OiB2YXIoLS1mYS1iZWF0LWZhZGUtb3BhY2l0eSwgMC40KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjQsIDEpOwogIH0KICAyNSUgewogICAgb3BhY2l0eTogY2FsYyh2YXIoLS1mYS1iZWF0LWZhZGUtb3BhY2l0eSwgMC40KSArIDAuNCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwgMS4yOCkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKTsKICB9CiAgNDUlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwgMS4yNSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICB9CiAgNjUlIHsKICAgIG9wYWNpdHk6IGNhbGModmFyKC0tZmEtYmVhdC1mYWRlLW9wYWNpdHksIDAuNCkgKyAwLjQpOwogICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1iZWF0LWZhZGUtc2NhbGUsIDEuMjgpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogdmFyKC0tZmEtYmVhdC1mYWRlLW9wYWNpdHksIDAuNCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWZsaXAgewogIDAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCAwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuNCwgMSk7CiAgfQogIDglIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSh2YXIoLS1mYS1mbGlwLWFudGljaXBhdGlvbi1zY2FsZSwgMC45NSkpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICAzNSUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIGNhbGModmFyKC0tZmEtZmxpcC1hbmdsZSwgLTM2MGRlZykgKiAwLjYpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICB9CiAgNjUlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCBjYWxjKHZhcigtLWZhLWZsaXAtYW5nbGUsIC0zNjBkZWcpICogMC41KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMC42NiwgMC42NiwgMSk7CiAgfQogIDkyJSB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDJlbSkgc2NhbGUoMSkgcm90YXRlM2QodmFyKC0tZmEtZmxpcC14LCAwKSwgdmFyKC0tZmEtZmxpcC15LCAxKSwgdmFyKC0tZmEtZmxpcC16LCAwKSwgY2FsYyh2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMzYwZGVnKSAqIHZhcigtLWZhLWZsaXAtb3ZlcnNob290LCAxLjA0KSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCB2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMzYwZGVnKSk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtZmxpcC0zNjAgewogIDAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCAwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuNCwgMSk7CiAgfQogIDglIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSh2YXIoLS1mYS1mbGlwLWFudGljaXBhdGlvbi1zY2FsZSwgMC45NSkpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIGNhbGModmFyKC0tZmEtZmxpcC1hbmdsZSwgLTM2MGRlZykgKiAwLjYpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLjY2LCAwLjY2LCAxKTsKICB9CiAgODAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCBjYWxjKHZhcigtLWZhLWZsaXAtYW5nbGUsIC0zNjBkZWcpICogdmFyKC0tZmEtZmxpcC1vdmVyc2hvb3QsIDEuMDQpKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIHZhcigtLWZhLWZsaXAtYW5nbGUsIC0zNjBkZWcpKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1zaGFrZSB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjgsIDEpOwogIH0KICA4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNWRlZykgdHJhbnNsYXRlWCgxcHgpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgMjAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC0yMmRlZykgdHJhbnNsYXRlWCgtMXB4KTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMsIDAsIDAuNywgMSk7CiAgfQogIDM1JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNWRlZykgdHJhbnNsYXRlWCgxcHgpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDY1JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDc4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtM2RlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA5MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXNwaW4gewogIDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtc3Bpbi1zbmFwIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICAxMiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDE2LjY3JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgMjguNjclIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDEyMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMzMuMzMlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDEyMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNDUuMzMlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNjIlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI0MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNjYuNjclIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI0MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNzguNjclIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgODMuMzMlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgOTUuMzMlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXNwaW4tc25hcC00IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICAxNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDI1JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNzUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgOTAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXNwaW4tc25hcC04IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA5JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMTIuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDIxLjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICAyNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDM0JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDM3LjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNDYuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA1OSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjI1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA2Mi41JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMjVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDcxLjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNzUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgODQlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDMxNWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgODcuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzE1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA5Ni41JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1idXp6IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMSwgMCwgMC45LCAxKTsKICB9CiAgNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLWZhLWJ1enotZGlzdGFuY2UsIDRweCkpIHJvdGF0ZSgwLjVkZWcpOwogIH0KICAxMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1mYS1idXp6LWRpc3RhbmNlLCA0cHgpKSkgcm90YXRlKC0wLjVkZWcpOwogIH0KICAxNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLWZhLWJ1enotZGlzdGFuY2UsIDRweCkpIHJvdGF0ZSgwLjNkZWcpOwogIH0KICAyMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1mYS1idXp6LWRpc3RhbmNlLCA0cHgpKSkgcm90YXRlKC0wLjNkZWcpOwogIH0KICAyNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGModmFyKC0tZmEtYnV6ei1kaXN0YW5jZSwgNHB4KSAqIDAuNykpIHJvdGF0ZSgwLjJkZWcpOwogIH0KICAzMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1mYS1idXp6LWRpc3RhbmNlLCA0cHgpICogMC43KSkgcm90YXRlKC0wLjJkZWcpOwogIH0KICAzNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGModmFyKC0tZmEtYnV6ei1kaXN0YW5jZSwgNHB4KSAqIDAuNCkpIHJvdGF0ZSgwLjFkZWcpOwogIH0KICA0MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHJvdGF0ZSgwZGVnKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXdhZyB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjYsIDEpOwogIH0KICAxMiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tZmEtd2FnLWFuZ2xlLCAxMmRlZykpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICB9CiAgMjQlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDJkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMiwgMCwgMC42LCAxKTsKICB9CiAgMzYlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKGNhbGModmFyKC0tZmEtd2FnLWFuZ2xlLCAxMmRlZykgKiAwLjg1KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIH0KICA0OCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjYsIDEpOwogIH0KICA1OCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoY2FsYyh2YXIoLS1mYS13YWctYW5nbGUsIDEyZGVnKSAqIDAuNikpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICB9CiAgNjglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWZsb2F0IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgdHJhbnNsYXRlWCgwKSByb3RhdGUoMGRlZykgc2NhbGUodmFyKC0tZmEtZmxvYXQtc3F1YXNoLXgsIDEuMDIpLCB2YXIoLS1mYS1mbG9hdC1zcXVhc2gteSwgMC45OCkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICAxNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTAuNCAqIHZhcigtLWZhLWZsb2F0LWhlaWdodCwgNnB4KSkpIHRyYW5zbGF0ZVgodmFyKC0tZmEtZmxvYXQtZHJpZnQsIDFweCkpIHJvdGF0ZSh2YXIoLS1mYS1mbG9hdC10aWx0LCAxZGVnKSkgc2NhbGUoMSwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMC42NiwgMC42NiwgMSk7CiAgfQogIDM1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWZhLWZsb2F0LWhlaWdodCwgNnB4KSkpIHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpIHNjYWxlKHZhcigtLWZhLWZsb2F0LXN0cmV0Y2gteCwgMC45OCksIHZhcigtLWZhLWZsb2F0LXN0cmV0Y2gteSwgMS4wMykpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNSwgMCwgMC41LCAwKTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0wLjkyICogdmFyKC0tZmEtZmxvYXQtaGVpZ2h0LCA2cHgpKSkgdHJhbnNsYXRlWChjYWxjKC0wLjUgKiB2YXIoLS1mYS1mbG9hdC1kcmlmdCwgMXB4KSkpIHJvdGF0ZShjYWxjKC0wLjUgKiB2YXIoLS1mYS1mbG9hdC10aWx0LCAxZGVnKSkpIHNjYWxlKDAuOTk1LCAxLjAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLCAwLjY2LCAwLjMzKTsKICB9CiAgNzAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0wLjMgKiB2YXIoLS1mYS1mbG9hdC1oZWlnaHQsIDZweCkpKSB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1mYS1mbG9hdC1kcmlmdCwgMXB4KSkpIHJvdGF0ZShjYWxjKC0xICogdmFyKC0tZmEtZmxvYXQtdGlsdCwgMWRlZykpKSBzY2FsZSgxLCAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLjY2LCAwLjY2LCAxKTsKICB9CiAgOTAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKDAuMDUgKiB2YXIoLS1mYS1mbG9hdC1oZWlnaHQsIDZweCkpKSB0cmFuc2xhdGVYKDApIHJvdGF0ZSgwZGVnKSBzY2FsZSh2YXIoLS1mYS1mbG9hdC1zcXVhc2gteCwgMS4wMiksIHZhcigtLWZhLWZsb2F0LXNxdWFzaC15LCAwLjk4KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpIHNjYWxlKHZhcigtLWZhLWZsb2F0LXNxdWFzaC14LCAxLjAyKSwgdmFyKC0tZmEtZmxvYXQtc3F1YXNoLXksIDAuOTgpKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1zd2luZyB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjgsIDEpOwogIH0KICA4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1mYS1zd2luZy1hbmdsZSwgMjJkZWcpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMsIDAsIDAuNywgMSk7CiAgfQogIDE4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKC0xICogdmFyKC0tZmEtc3dpbmctYW5nbGUsIDIyZGVnKSAqIDAuODUpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMsIDAsIDAuNywgMSk7CiAgfQogIDI4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKHZhcigtLWZhLXN3aW5nLWFuZ2xlLCAyMmRlZykgKiAwLjY1KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC42NSwgMSk7CiAgfQogIDM4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKC0xICogdmFyKC0tZmEtc3dpbmctYW5nbGUsIDIyZGVnKSAqIDAuNDUpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDQ4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKHZhcigtLWZhLXN3aW5nLWFuZ2xlLCAyMmRlZykgKiAwLjI1KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA1NiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoY2FsYygtMSAqIHZhcigtLWZhLXN3aW5nLWFuZ2xlLCAyMmRlZykgKiAwLjEpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDY0JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1qZWxsbyB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuOCwgMSk7CiAgfQogIDEyJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWplbGxvLXNjYWxlLXgsIDEuMTUpLCBjYWxjKDIgLSB2YXIoLS1mYS1qZWxsby1zY2FsZS14LCAxLjE1KSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgMjQlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoY2FsYygyIC0gdmFyKC0tZmEtamVsbG8tc2NhbGUteSwgMS4xMikpLCB2YXIoLS1mYS1qZWxsby1zY2FsZS15LCAxLjEyKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zLCAwLCAwLjcsIDEpOwogIH0KICAzNiUgewogICAgdHJhbnNmb3JtOiBzY2FsZShjYWxjKDEgKyAodmFyKC0tZmEtamVsbG8tc2NhbGUteCwgMS4xNSkgLSAxKSAqIDAuNSksIGNhbGMoMiAtICgxICsgKHZhcigtLWZhLWplbGxvLXNjYWxlLXgsIDEuMTUpIC0gMSkgKiAwLjUpKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA0OCUgewogICAgdHJhbnNmb3JtOiBzY2FsZShjYWxjKDIgLSAoMSArICh2YXIoLS1mYS1qZWxsby1zY2FsZS15LCAxLjEyKSAtIDEpICogMC4zKSksIGNhbGMoMSArICh2YXIoLS1mYS1qZWxsby1zY2FsZS15LCAxLjEyKSAtIDEpICogMC4zKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA1OCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyLCAwLjk4KTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgfQogIDY4JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7CiAgfQp9Ci5mYS1yb3RhdGUtOTAgewogIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKfQoKLmZhLXJvdGF0ZS0xODAgewogIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7Cn0KCi5mYS1yb3RhdGUtMjcwIHsKICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOwp9CgouZmEtZmxpcC1ob3Jpem9udGFsIHsKICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTsKfQoKLmZhLWZsaXAtdmVydGljYWwgewogIHRyYW5zZm9ybTogc2NhbGUoMSwgLTEpOwp9CgouZmEtZmxpcC1ib3RoLAouZmEtZmxpcC1ob3Jpem9udGFsLmZhLWZsaXAtdmVydGljYWwgewogIHRyYW5zZm9ybTogc2NhbGUoLTEsIC0xKTsKfQoKLmZhLXJvdGF0ZS1ieSB7CiAgdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tZmEtcm90YXRlLWFuZ2xlLCAwKSk7Cn0KCi5zdmctaW5saW5lLS1mYSAuZmEtcHJpbWFyeSB7CiAgZmlsbDogdmFyKC0tZmEtcHJpbWFyeS1jb2xvciwgY3VycmVudENvbG9yKTsKICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpOwp9Cgouc3ZnLWlubGluZS0tZmEgLmZhLXNlY29uZGFyeSB7CiAgZmlsbDogdmFyKC0tZmEtc2Vjb25kYXJ5LWNvbG9yLCBjdXJyZW50Q29sb3IpOwogIG9wYWNpdHk6IHZhcigtLWZhLXNlY29uZGFyeS1vcGFjaXR5LCAwLjQpOwp9Cgouc3ZnLWlubGluZS0tZmEuZmEtc3dhcC1vcGFjaXR5IC5mYS1wcmltYXJ5IHsKICBvcGFjaXR5OiB2YXIoLS1mYS1zZWNvbmRhcnktb3BhY2l0eSwgMC40KTsKfQoKLnN2Zy1pbmxpbmUtLWZhLmZhLXN3YXAtb3BhY2l0eSAuZmEtc2Vjb25kYXJ5IHsKICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpOwp9Cgouc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtcHJpbWFyeSwKLnN2Zy1pbmxpbmUtLWZhIG1hc2sgLmZhLXNlY29uZGFyeSB7CiAgZmlsbDogYmxhY2s7Cn0KCi5zdmctaW5saW5lLS1mYS5mYS1pbnZlcnNlIHsKICBmaWxsOiB2YXIoLS1mYS1pbnZlcnNlLCAjZmZmKTsKfQoKLmZhLXN0YWNrIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAyZW07CiAgbGluZS1oZWlnaHQ6IDJlbTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB3aWR0aDogMi41ZW07Cn0KCi5mYS1pbnZlcnNlIHsKICBjb2xvcjogdmFyKC0tZmEtaW52ZXJzZSwgI2ZmZik7Cn0KCi5zdmctaW5saW5lLS1mYS5mYS1zdGFjay0xeCB7CiAgLS1mYS13aWR0aDogMS4yNWVtOwogIGhlaWdodDogMWVtOwogIHdpZHRoOiB2YXIoLS1mYS13aWR0aCk7Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXN0YWNrLTJ4IHsKICAtLWZhLXdpZHRoOiAyLjVlbTsKICBoZWlnaHQ6IDJlbTsKICB3aWR0aDogdmFyKC0tZmEtd2lkdGgpOwp9CgouZmEtc3RhY2stMXgsCi5mYS1zdGFjay0yeCB7CiAgaW5zZXQ6IDA7CiAgbWFyZ2luOiBhdXRvOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiB2YXIoLS1mYS1zdGFjay16LWluZGV4LCBhdXRvKTsKfWA7ZnVuY3Rpb24gbGkoKXt2YXIgZT1ncix0PV9yLG49cS5jc3NQcmVmaXgscj1xLnJlcGxhY2VtZW50Q2xhc3MsaT1jaTtpZihuIT09ZXx8ciE9PXQpe3ZhciBhPVJlZ0V4cChgXFwuJHtlfVxcLWAsYGdgKSxvPVJlZ0V4cChgXFwtLSR7ZX1cXC1gLGBnYCkscz1SZWdFeHAoYFxcLiR7dH1gLGBnYCk7aT1pLnJlcGxhY2UoYSxgLiR7bn0tYCkucmVwbGFjZShvLGAtLSR7bn0tYCkucmVwbGFjZShzLGAuJHtyfWApfXJldHVybiBpfXZhciB1aT0hMTtmdW5jdGlvbiBkaSgpe3EuYXV0b0FkZENzcyYmIXVpJiYoWnIobGkoKSksdWk9ITApfXZhciBmaT17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbTp7Y3NzOmxpLGluc2VydENzczpkaX19fSxob29rczpmdW5jdGlvbigpe3JldHVybntiZWZvcmVET01FbGVtZW50Q3JlYXRpb246ZnVuY3Rpb24oKXtkaSgpfSxiZWZvcmVJMnN2ZzpmdW5jdGlvbigpe2RpKCl9fX19LHBpPXp0fHx7fTtwaVttcl18fChwaVttcl09e30pLHBpW21yXS5zdHlsZXN8fChwaVttcl0uc3R5bGVzPXt9KSxwaVttcl0uaG9va3N8fChwaVttcl0uaG9va3M9e30pLHBpW21yXS5zaGltc3x8KHBpW21yXS5zaGltcz1bXSk7dmFyIG1pPXBpW21yXSxoaT1bXSxnaT1mdW5jdGlvbigpe0cucmVtb3ZlRXZlbnRMaXN0ZW5lcihgRE9NQ29udGVudExvYWRlZGAsZ2kpLF9pPTEsaGkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KX0sX2k9ITE7SHQmJihfaT0oRy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/L15sb2FkZWR8XmMvOi9ebG9hZGVkfF5pfF5jLykudGVzdChHLnJlYWR5U3RhdGUpLF9pfHxHLmFkZEV2ZW50TGlzdGVuZXIoYERPTUNvbnRlbnRMb2FkZWRgLGdpKSk7ZnVuY3Rpb24gdmkoZSl7SHQmJihfaT9zZXRUaW1lb3V0KGUsMCk6aGkucHVzaChlKSl9ZnVuY3Rpb24geWkoZSl7dmFyIHQ9ZS50YWcsbj1lLmF0dHJpYnV0ZXMscj1uPT09dm9pZCAwP3t9Om4saT1lLmNoaWxkcmVuLGE9aT09PXZvaWQgMD9bXTppO3JldHVybiB0eXBlb2YgZT09YHN0cmluZ2A/bmkoZSk6YDwke3R9ICR7cmkocil9PiR7YS5tYXAoeWkpLmpvaW4oYGApfTwvJHt0fT5gfWZ1bmN0aW9uIGJpKGUsdCxuKXtpZihlJiZlW3RdJiZlW3RdW25dKXJldHVybntwcmVmaXg6dCxpY29uTmFtZTpuLGljb246ZVt0XVtuXX19dmFyIHhpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scixpLGEpe3JldHVybiBlLmNhbGwodCxuLHIsaSxhKX19LFNpPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPU9iamVjdC5rZXlzKGUpLGE9aS5sZW5ndGgsbz1yPT09dm9pZCAwP3Q6eGkodCxyKSxzLGMsbDtmb3Iobj09PXZvaWQgMD8ocz0xLGw9ZVtpWzBdXSk6KHM9MCxsPW4pO3M8YTtzKyspYz1pW3NdLGw9byhsLGVbY10sYyxlKTtyZXR1cm4gbH07ZnVuY3Rpb24gQ2koZSl7cmV0dXJuIER0KGUpLmxlbmd0aD09PTE/ZS5jb2RlUG9pbnRBdCgwKS50b1N0cmluZygxNik6bnVsbH1mdW5jdGlvbiB3aShlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkucmVkdWNlKGZ1bmN0aW9uKHQsbil7dmFyIHI9ZVtuXTtyZXR1cm4gci5pY29uP3Rbci5pY29uTmFtZV09ci5pY29uOnRbbl09cix0fSx7fSl9ZnVuY3Rpb24gVGkoZSx0KXt2YXIgbj0oYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9KS5za2lwSG9va3Mscj1uIT09dm9pZCAwJiZuLGk9d2kodCk7dHlwZW9mIG1pLmhvb2tzLmFkZFBhY2s9PWBmdW5jdGlvbmAmJiFyP21pLmhvb2tzLmFkZFBhY2soZSx3aSh0KSk6bWkuc3R5bGVzW2VdPVcoVyh7fSxtaS5zdHlsZXNbZV18fHt9KSxpKSxlPT09YGZhc2AmJlRpKGBmYWAsdCl9dmFyIEVpPW1pLnN0eWxlcyxEaT1taS5zaGltcyxPaT1PYmplY3Qua2V5cyhQciksa2k9T2kucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09T2JqZWN0LmtleXMoUHJbdF0pLGV9LHt9KSxBaT1udWxsLGppPXt9LE1pPXt9LE5pPXt9LFBpPXt9LEZpPXt9O2Z1bmN0aW9uIElpKGUpe3JldHVybn5Wci5pbmRleE9mKGUpfWZ1bmN0aW9uIExpKGUsdCl7dmFyIG49dC5zcGxpdChgLWApLHI9blswXSxpPW4uc2xpY2UoMSkuam9pbihgLWApO3JldHVybiByPT09ZSYmaSE9PWBgJiYhSWkoaSk/aTpudWxsfXZhciBSaT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBTaShFaSxmdW5jdGlvbih0LG4scil7cmV0dXJuIHRbcl09U2kobixlLHt9KSx0fSx7fSl9O2ppPWUoZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0WzNdJiYoZVt0WzNdXT1uKSx0WzJdJiZ0WzJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PWBudW1iZXJgfSkuZm9yRWFjaChmdW5jdGlvbih0KXtlW3QudG9TdHJpbmcoMTYpXT1ufSksZX0pLE1pPWUoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlW25dPW4sdFsyXSYmdFsyXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYH0pLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1ufSksZX0pLEZpPWUoZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRbMl07cmV0dXJuIGVbbl09bixyLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1ufSksZX0pO3ZhciB0PWBmYXJgaW4gRWl8fHEuYXV0b0ZldGNoU3ZnLG49U2koRGksZnVuY3Rpb24oZSxuKXt2YXIgcj1uWzBdLGk9blsxXSxhPW5bMl07cmV0dXJuIGk9PT1gZmFyYCYmIXQmJihpPWBmYXNgKSx0eXBlb2Ygcj09YHN0cmluZ2AmJihlLm5hbWVzW3JdPXtwcmVmaXg6aSxpY29uTmFtZTphfSksdHlwZW9mIHI9PWBudW1iZXJgJiYoZS51bmljb2Rlc1tyLnRvU3RyaW5nKDE2KV09e3ByZWZpeDppLGljb25OYW1lOmF9KSxlfSx7bmFtZXM6e30sdW5pY29kZXM6e319KTtOaT1uLm5hbWVzLFBpPW4udW5pY29kZXMsQWk9cWkocS5zdHlsZURlZmF1bHQse2ZhbWlseTpxLmZhbWlseURlZmF1bHR9KX07SnIoZnVuY3Rpb24oZSl7QWk9cWkoZS5zdHlsZURlZmF1bHQse2ZhbWlseTpxLmZhbWlseURlZmF1bHR9KX0pLFJpKCk7ZnVuY3Rpb24gemkoZSx0KXtyZXR1cm4oamlbZV18fHt9KVt0XX1mdW5jdGlvbiBCaShlLHQpe3JldHVybihNaVtlXXx8e30pW3RdfWZ1bmN0aW9uIFZpKGUsdCl7cmV0dXJuKEZpW2VdfHx7fSlbdF19ZnVuY3Rpb24gSGkoZSl7cmV0dXJuIE5pW2VdfHx7cHJlZml4Om51bGwsaWNvbk5hbWU6bnVsbH19ZnVuY3Rpb24gVWkoZSl7dmFyIHQ9UGlbZV0sbj16aShgZmFzYCxlKTtyZXR1cm4gdHx8KG4/e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpufTpudWxsKXx8e3ByZWZpeDpudWxsLGljb25OYW1lOm51bGx9fWZ1bmN0aW9uIFdpKCl7cmV0dXJuIEFpfXZhciBHaT1mdW5jdGlvbigpe3JldHVybntwcmVmaXg6bnVsbCxpY29uTmFtZTpudWxsLHJlc3Q6W119fTtmdW5jdGlvbiBLaShlKXt2YXIgdD1LLG49T2kucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09YCR7cS5jc3NQcmVmaXh9LSR7dH1gLGV9LHt9KTtyZXR1cm4gV24uZm9yRWFjaChmdW5jdGlvbihyKXsoZS5pbmNsdWRlcyhuW3JdKXx8ZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBraVtyXS5pbmNsdWRlcyhlKX0pKSYmKHQ9cil9KSx0fWZ1bmN0aW9uIHFpKGUpe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30pLmZhbWlseSxuPXQ9PT12b2lkIDA/Szp0LHI9QXJbbl1bZV07aWYobj09PVh0JiYhZSlyZXR1cm5gZmFkYDt2YXIgaT1NcltuXVtlXXx8TXJbbl1bcl0sYT1lIGluIG1pLnN0eWxlcz9lOm51bGw7cmV0dXJuIGl8fGF8fG51bGx9ZnVuY3Rpb24gSmkoZSl7dmFyIHQ9W10sbj1udWxsO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHI9TGkocS5jc3NQcmVmaXgsZSk7cj9uPXI6ZSYmdC5wdXNoKGUpfSkse2ljb25OYW1lOm4scmVzdDp0fX1mdW5jdGlvbiBZaShlKXtyZXR1cm4gZS5zb3J0KCkuZmlsdGVyKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5pbmRleE9mKGUpPT09dH0pfXZhciBYaT1jci5jb25jYXQoWW4pO2Z1bmN0aW9uIFppKGUpe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30pLnNraXBMb29rdXBzLG49dCE9PXZvaWQgMCYmdCxyPW51bGwsaT1ZaShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gWGkuaW5jbHVkZXMoZSl9KSksYT1ZaShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hWGkuaW5jbHVkZXMoZSl9KSksbz1FdChpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gcj1lLCFZdC5pbmNsdWRlcyhlKX0pLDEpWzBdLHM9bz09PXZvaWQgMD9udWxsOm8sYz1LaShpKSxsPVcoVyh7fSxKaShhKSkse30se3ByZWZpeDpxaShzLHtmYW1pbHk6Y30pfSk7cmV0dXJuIFcoVyhXKHt9LGwpLHRhKHt2YWx1ZXM6ZSxmYW1pbHk6YyxzdHlsZXM6RWksY29uZmlnOnEsY2Fub25pY2FsOmwsZ2l2ZW5QcmVmaXg6cn0pKSxRaShuLHIsbCkpfWZ1bmN0aW9uIFFpKGUsdCxuKXt2YXIgcj1uLnByZWZpeCxpPW4uaWNvbk5hbWU7aWYoZXx8IXJ8fCFpKXJldHVybntwcmVmaXg6cixpY29uTmFtZTppfTt2YXIgYT10PT09YGZhYD9IaShpKTp7fSxvPVZpKHIsaSk7cmV0dXJuIGk9YS5pY29uTmFtZXx8b3x8aSxyPWEucHJlZml4fHxyLHI9PT1gZmFyYCYmIUVpLmZhciYmRWkuZmFzJiYhcS5hdXRvRmV0Y2hTdmcmJihyPWBmYXNgKSx7cHJlZml4OnIsaWNvbk5hbWU6aX19dmFyICRpPVduLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PUt8fGUhPT1YdH0pLGVhPU9iamVjdC5rZXlzKHNyKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1LfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhzcltlXSl9KS5mbGF0KCk7ZnVuY3Rpb24gdGEoZSl7dmFyIHQ9ZS52YWx1ZXMsbj1lLmZhbWlseSxyPWUuY2Fub25pY2FsLGk9ZS5naXZlblByZWZpeCxhPWk9PT12b2lkIDA/YGA6aSxvPWUuc3R5bGVzLHM9bz09PXZvaWQgMD97fTpvLGM9ZS5jb25maWcsbD1jPT09dm9pZCAwP3t9OmMsdT1uPT09WHQsZD10LmluY2x1ZGVzKGBmYS1kdW90b25lYCl8fHQuaW5jbHVkZXMoYGZhZGApLGY9bC5mYW1pbHlEZWZhdWx0PT09YGR1b3RvbmVgLHA9ci5wcmVmaXg9PT1gZmFkYHx8ci5wcmVmaXg9PT1gZmEtZHVvdG9uZWA7cmV0dXJuIXUmJihkfHxmfHxwKSYmKHIucHJlZml4PWBmYWRgKSwodC5pbmNsdWRlcyhgZmEtYnJhbmRzYCl8fHQuaW5jbHVkZXMoYGZhYmApKSYmKHIucHJlZml4PWBmYWJgKSwhci5wcmVmaXgmJiRpLmluY2x1ZGVzKG4pJiYoT2JqZWN0LmtleXMocykuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gZWEuaW5jbHVkZXMoZSl9KXx8bC5hdXRvRmV0Y2hTdmcpJiYoci5wcmVmaXg9cW4uZ2V0KG4pLmRlZmF1bHRTaG9ydFByZWZpeElkLHIuaWNvbk5hbWU9Vmkoci5wcmVmaXgsci5pY29uTmFtZSl8fHIuaWNvbk5hbWUpLChyLnByZWZpeD09PWBmYWB8fGE9PT1gZmFgKSYmKHIucHJlZml4PVdpKCl8fGBmYXNgKSxyfXZhciBuYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtfdCh0aGlzLGUpLHRoaXMuZGVmaW5pdGlvbnM9e319cmV0dXJuIHl0KGUsW3trZXk6YGFkZGAsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9Wy4uLmFyZ3VtZW50c10ucmVkdWNlKHRoaXMuX3B1bGxEZWZpbml0aW9ucyx7fSk7T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXtlLmRlZmluaXRpb25zW25dPVcoVyh7fSxlLmRlZmluaXRpb25zW25dfHx7fSksdFtuXSksVGkobix0W25dKTt2YXIgcj1QcltLXVtuXTtyJiZUaShyLHRbbl0pLFJpKCl9KX19LHtrZXk6YHJlc2V0YCx2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGVmaW5pdGlvbnM9e319fSx7a2V5OmBfcHVsbERlZmluaXRpb25zYCx2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXQucHJlZml4JiZ0Lmljb25OYW1lJiZ0Lmljb24/ezA6dH06dDtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKHQpe3ZhciByPW5bdF0saT1yLnByZWZpeCxhPXIuaWNvbk5hbWUsbz1yLmljb24scz1vWzJdO2VbaV18fChlW2ldPXt9KSxzLmxlbmd0aD4wJiZzLmZvckVhY2goZnVuY3Rpb24odCl7dHlwZW9mIHQ9PWBzdHJpbmdgJiYoZVtpXVt0XT1vKX0pLGVbaV1bYV09b30pLGV9fV0pfSgpLHJhPVtdLGlhPXt9LGFhPXt9LG9hPU9iamVjdC5rZXlzKGFhKTtmdW5jdGlvbiBzYShlLHQpe3ZhciBuPXQubWl4b3V0c1RvO3JldHVybiByYT1lLGlhPXt9LE9iamVjdC5rZXlzKGFhKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe29hLmluZGV4T2YoZSk9PT0tMSYmZGVsZXRlIGFhW2VdfSkscmEuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLm1peG91dD9lLm1peG91dCgpOnt9O2lmKE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24oZSl7dHlwZW9mIHRbZV09PWBmdW5jdGlvbmAmJihuW2VdPXRbZV0pLEF0KHRbZV0pPT09YG9iamVjdGAmJk9iamVjdC5rZXlzKHRbZV0pLmZvckVhY2goZnVuY3Rpb24ocil7bltlXXx8KG5bZV09e30pLG5bZV1bcl09dFtlXVtyXX0pfSksZS5ob29rcyl7dmFyIHI9ZS5ob29rcygpO09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oZSl7aWFbZV18fChpYVtlXT1bXSksaWFbZV0ucHVzaChyW2VdKX0pfWUucHJvdmlkZXMmJmUucHJvdmlkZXMoYWEpfSksbn1mdW5jdGlvbiBjYShlLHQpe3ZhciBuPVsuLi5hcmd1bWVudHNdLnNsaWNlKDIpO3JldHVybihpYVtlXXx8W10pLmZvckVhY2goZnVuY3Rpb24oZSl7dD1lLmFwcGx5KG51bGwsW3RdLmNvbmNhdChuKSl9KSx0fWZ1bmN0aW9uIGxhKGUpe3ZhciB0PVsuLi5hcmd1bWVudHNdLnNsaWNlKDEpOyhpYVtlXXx8W10pLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5hcHBseShudWxsLHQpfSl9ZnVuY3Rpb24gdWEoKXt2YXIgZT1hcmd1bWVudHNbMF0sdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGFhW2VdP2FhW2VdLmFwcGx5KG51bGwsdCk6dm9pZCAwfWZ1bmN0aW9uIGRhKGUpe2UucHJlZml4PT09YGZhYCYmKGUucHJlZml4PWBmYXNgKTt2YXIgdD1lLmljb25OYW1lLG49ZS5wcmVmaXh8fFdpKCk7aWYodClyZXR1cm4gdD1WaShuLHQpfHx0LGJpKGZhLmRlZmluaXRpb25zLG4sdCl8fGJpKG1pLnN0eWxlcyxuLHQpfXZhciBmYT1uZXcgbmEsSj17bm9BdXRvOmZ1bmN0aW9uKCl7cS5hdXRvUmVwbGFjZVN2Zz0hMSxxLm9ic2VydmVNdXRhdGlvbnM9ITEsbGEoYG5vQXV0b2ApfSxjb25maWc6cSxkb206e2kyc3ZnOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O3JldHVybiBIdD8obGEoYGJlZm9yZUkyc3ZnYCxlKSx1YShgcHNldWRvRWxlbWVudHMyc3ZnYCxlKSx1YShgaTJzdmdgLGUpKTpQcm9taXNlLnJlamVjdChFcnJvcihgT3BlcmF0aW9uIHJlcXVpcmVzIGEgRE9NIG9mIHNvbWUga2luZC5gKSl9LHdhdGNoOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LHQ9ZS5hdXRvUmVwbGFjZVN2Z1Jvb3Q7cS5hdXRvUmVwbGFjZVN2Zz09PSExJiYocS5hdXRvUmVwbGFjZVN2Zz0hMCkscS5vYnNlcnZlTXV0YXRpb25zPSEwLHZpKGZ1bmN0aW9uKCl7cGEoe2F1dG9SZXBsYWNlU3ZnUm9vdDp0fSksbGEoYHdhdGNoYCxlKX0pfX0scGFyc2U6e2ljb246ZnVuY3Rpb24oZSl7aWYoZT09PW51bGwpcmV0dXJuIG51bGw7aWYoQXQoZSk9PT1gb2JqZWN0YCYmZS5wcmVmaXgmJmUuaWNvbk5hbWUpcmV0dXJue3ByZWZpeDplLnByZWZpeCxpY29uTmFtZTpWaShlLnByZWZpeCxlLmljb25OYW1lKXx8ZS5pY29uTmFtZX07aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg9PT0yKXt2YXIgdD1lWzFdLmluZGV4T2YoYGZhLWApPT09MD9lWzFdLnNsaWNlKDMpOmVbMV0sbj1xaShlWzBdKTtyZXR1cm57cHJlZml4Om4saWNvbk5hbWU6Vmkobix0KXx8dH19aWYodHlwZW9mIGU9PWBzdHJpbmdgJiYoZS5pbmRleE9mKGAke3EuY3NzUHJlZml4fS1gKT4tMXx8ZS5tYXRjaChJcikpKXt2YXIgcj1aaShlLnNwbGl0KGAgYCkse3NraXBMb29rdXBzOiEwfSk7cmV0dXJue3ByZWZpeDpyLnByZWZpeHx8V2koKSxpY29uTmFtZTpWaShyLnByZWZpeCxyLmljb25OYW1lKXx8ci5pY29uTmFtZX19aWYodHlwZW9mIGU9PWBzdHJpbmdgKXt2YXIgaT1XaSgpO3JldHVybntwcmVmaXg6aSxpY29uTmFtZTpWaShpLGUpfHxlfX19fSxsaWJyYXJ5OmZhLGZpbmRJY29uRGVmaW5pdGlvbjpkYSx0b0h0bWw6eWl9LHBhPWZ1bmN0aW9uKCl7dmFyIGU9KGFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSkuYXV0b1JlcGxhY2VTdmdSb290LHQ9ZT09PXZvaWQgMD9HOmU7KE9iamVjdC5rZXlzKG1pLnN0eWxlcykubGVuZ3RoPjB8fHEuYXV0b0ZldGNoU3ZnKSYmSHQmJnEuYXV0b1JlcGxhY2VTdmcmJkouZG9tLmkyc3ZnKHtub2RlOnR9KX07ZnVuY3Rpb24gbWEoZSx0KXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImFic3RyYWN0Iix7Z2V0OnR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaHRtbCIse2dldDpmdW5jdGlvbigpe3JldHVybiBlLmFic3RyYWN0Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4geWkoZSl9KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwibm9kZSIse2dldDpmdW5jdGlvbigpe2lmKEh0KXt2YXIgdD1HLmNyZWF0ZUVsZW1lbnQoYGRpdmApO3JldHVybiB0LmlubmVySFRNTD1lLmh0bWwsdC5jaGlsZHJlbn19fSksZX1mdW5jdGlvbiBoYShlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5tYWluLHI9ZS5tYXNrLGk9ZS5hdHRyaWJ1dGVzLGE9ZS5zdHlsZXMsbz1lLnRyYW5zZm9ybTtpZihhaShvKSYmbi5mb3VuZCYmIXIuZm91bmQpe3ZhciBzPXt4Om4ud2lkdGgvbi5oZWlnaHQvMix5Oi41fTtpLnN0eWxlPWlpKFcoVyh7fSxhKSx7fSx7InRyYW5zZm9ybS1vcmlnaW4iOmAke3MueCtvLngvMTZ9ZW0gJHtzLnkrby55LzE2fWVtYH0pKX1yZXR1cm5be3RhZzpgc3ZnYCxhdHRyaWJ1dGVzOmksY2hpbGRyZW46dH1dfWZ1bmN0aW9uIGdhKGUpe3ZhciB0PWUucHJlZml4LG49ZS5pY29uTmFtZSxyPWUuY2hpbGRyZW4saT1lLmF0dHJpYnV0ZXMsYT1lLnN5bWJvbCxvPWE9PT0hMD9gJHt0fS0ke3EuY3NzUHJlZml4fS0ke259YDphO3JldHVyblt7dGFnOmBzdmdgLGF0dHJpYnV0ZXM6e3N0eWxlOmBkaXNwbGF5OiBub25lO2B9LGNoaWxkcmVuOlt7dGFnOmBzeW1ib2xgLGF0dHJpYnV0ZXM6VyhXKHt9LGkpLHt9LHtpZDpvfSksY2hpbGRyZW46cn1dfV19ZnVuY3Rpb24gX2EoZSl7cmV0dXJuW2BhcmlhLWxhYmVsYCxgYXJpYS1sYWJlbGxlZGJ5YCxgdGl0bGVgLGByb2xlYF0uc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdCBpbiBlfSl9ZnVuY3Rpb24gdmEoZSl7dmFyIHQ9ZS5pY29ucyxuPXQubWFpbixyPXQubWFzayxpPWUucHJlZml4LGE9ZS5pY29uTmFtZSxvPWUudHJhbnNmb3JtLHM9ZS5zeW1ib2wsYz1lLm1hc2tJZCxsPWUuZXh0cmEsdT1lLndhdGNoYWJsZSxkPXUhPT12b2lkIDAmJnUsZj1yLmZvdW5kP3I6bixwPWYud2lkdGgsbT1mLmhlaWdodCxoPVtxLnJlcGxhY2VtZW50Q2xhc3MsYT9gJHtxLmNzc1ByZWZpeH0tJHthfWA6YGBdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbC5jbGFzc2VzLmluZGV4T2YoZSk9PT0tMX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PWBgfHwhIWV9KS5jb25jYXQobC5jbGFzc2VzKS5qb2luKGAgYCksZz17Y2hpbGRyZW46W10sYXR0cmlidXRlczpXKFcoe30sbC5hdHRyaWJ1dGVzKSx7fSx7ImRhdGEtcHJlZml4IjppLCJkYXRhLWljb24iOmEsY2xhc3M6aCxyb2xlOmwuYXR0cmlidXRlcy5yb2xlfHxgaW1nYCx2aWV3Qm94OmAwIDAgJHtwfSAke219YH0pfTshX2EobC5hdHRyaWJ1dGVzKSYmIWwuYXR0cmlidXRlc1tgYXJpYS1oaWRkZW5gXSYmKGcuYXR0cmlidXRlc1tgYXJpYS1oaWRkZW5gXT1gdHJ1ZWApLGQmJihnLmF0dHJpYnV0ZXNbdnJdPWBgKTt2YXIgXz1XKFcoe30sZykse30se3ByZWZpeDppLGljb25OYW1lOmEsbWFpbjpuLG1hc2s6cixtYXNrSWQ6Yyx0cmFuc2Zvcm06byxzeW1ib2w6cyxzdHlsZXM6Vyh7fSxsLnN0eWxlcyl9KSx2PXIuZm91bmQmJm4uZm91bmQ/dWEoYGdlbmVyYXRlQWJzdHJhY3RNYXNrYCxfKXx8e2NoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319OnVhKGBnZW5lcmF0ZUFic3RyYWN0SWNvbmAsXyl8fHtjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSx5PXYuY2hpbGRyZW4sYj12LmF0dHJpYnV0ZXM7cmV0dXJuIF8uY2hpbGRyZW49eSxfLmF0dHJpYnV0ZXM9YixzP2dhKF8pOmhhKF8pfWZ1bmN0aW9uIHlhKGUpe3ZhciB0PWUuY29udGVudCxuPWUud2lkdGgscj1lLmhlaWdodCxpPWUudHJhbnNmb3JtLGE9ZS5leHRyYSxvPWUud2F0Y2hhYmxlLHM9byE9PXZvaWQgMCYmbyxjPVcoVyh7fSxhLmF0dHJpYnV0ZXMpLHt9LHtjbGFzczphLmNsYXNzZXMuam9pbihgIGApfSk7cyYmKGNbdnJdPWBgKTt2YXIgbD1XKHt9LGEuc3R5bGVzKTthaShpKSYmKGwudHJhbnNmb3JtPXNpKHt0cmFuc2Zvcm06aSxzdGFydENlbnRlcmVkOiEwLHdpZHRoOm4saGVpZ2h0OnJ9KSxsW2Atd2Via2l0LXRyYW5zZm9ybWBdPWwudHJhbnNmb3JtKTt2YXIgdT1paShsKTt1Lmxlbmd0aD4wJiYoYy5zdHlsZT11KTt2YXIgZD1bXTtyZXR1cm4gZC5wdXNoKHt0YWc6YHNwYW5gLGF0dHJpYnV0ZXM6YyxjaGlsZHJlbjpbdF19KSxkfWZ1bmN0aW9uIGJhKGUpe3ZhciB0PWUuY29udGVudCxuPWUuZXh0cmEscj1XKFcoe30sbi5hdHRyaWJ1dGVzKSx7fSx7Y2xhc3M6bi5jbGFzc2VzLmpvaW4oYCBgKX0pLGk9aWkobi5zdHlsZXMpO2kubGVuZ3RoPjAmJihyLnN0eWxlPWkpO3ZhciBhPVtdO3JldHVybiBhLnB1c2goe3RhZzpgc3BhbmAsYXR0cmlidXRlczpyLGNoaWxkcmVuOlt0XX0pLGF9dmFyIHhhPW1pLnN0eWxlcztmdW5jdGlvbiBTYShlKXt2YXIgdD1lWzBdLG49ZVsxXSxyPUV0KGUuc2xpY2UoNCksMSlbMF0saT1udWxsO3JldHVybiBpPUFycmF5LmlzQXJyYXkocik/e3RhZzpgZ2AsYXR0cmlidXRlczp7Y2xhc3M6YCR7cS5jc3NQcmVmaXh9LSR7QnIuR1JPVVB9YH0sY2hpbGRyZW46W3t0YWc6YHBhdGhgLGF0dHJpYnV0ZXM6e2NsYXNzOmAke3EuY3NzUHJlZml4fS0ke0JyLlNFQ09OREFSWX1gLGZpbGw6YGN1cnJlbnRDb2xvcmAsZDpyWzBdfX0se3RhZzpgcGF0aGAsYXR0cmlidXRlczp7Y2xhc3M6YCR7cS5jc3NQcmVmaXh9LSR7QnIuUFJJTUFSWX1gLGZpbGw6YGN1cnJlbnRDb2xvcmAsZDpyWzFdfX1dfTp7dGFnOmBwYXRoYCxhdHRyaWJ1dGVzOntmaWxsOmBjdXJyZW50Q29sb3JgLGQ6cn19LHtmb3VuZDohMCx3aWR0aDp0LGhlaWdodDpuLGljb246aX19dmFyIENhPXtmb3VuZDohMSx3aWR0aDo1MTIsaGVpZ2h0OjUxMn07ZnVuY3Rpb24gd2EoZSx0KXshRHImJiFxLnNob3dNaXNzaW5nSWNvbnMmJmUmJmNvbnNvbGUuZXJyb3IoYEljb24gd2l0aCBuYW1lICIke2V9IiBhbmQgcHJlZml4ICIke3R9IiBpcyBtaXNzaW5nLmApfWZ1bmN0aW9uIFRhKGUsdCl7dmFyIG49dDtyZXR1cm4gdD09PWBmYWAmJnEuc3R5bGVEZWZhdWx0IT09bnVsbCYmKHQ9V2koKSksbmV3IFByb21pc2UoZnVuY3Rpb24ocixpKXtpZihuPT09YGZhYCl7dmFyIGE9SGkoZSl8fHt9O2U9YS5pY29uTmFtZXx8ZSx0PWEucHJlZml4fHx0fWlmKGUmJnQmJnhhW3RdJiZ4YVt0XVtlXSl7dmFyIG89eGFbdF1bZV07cmV0dXJuIHIoU2EobykpfXdhKGUsdCkscihXKFcoe30sQ2EpLHt9LHtpY29uOnEuc2hvd01pc3NpbmdJY29ucyYmZSYmdWEoYG1pc3NpbmdJY29uQWJzdHJhY3RgKXx8e319KSl9KX12YXIgRWE9ZnVuY3Rpb24oKXt9LERhPXEubWVhc3VyZVBlcmZvcm1hbmNlJiZWdCYmVnQubWFyayYmVnQubWVhc3VyZT9WdDp7bWFyazpFYSxtZWFzdXJlOkVhfSxPYT1gRkEgIjcuMy4xImAsa2E9ZnVuY3Rpb24oZSl7cmV0dXJuIERhLm1hcmsoYCR7T2F9ICR7ZX0gYmVnaW5zYCksZnVuY3Rpb24oKXtyZXR1cm4gQWEoZSl9fSxBYT1mdW5jdGlvbihlKXtEYS5tYXJrKGAke09hfSAke2V9IGVuZHNgKSxEYS5tZWFzdXJlKGAke09hfSAke2V9YCxgJHtPYX0gJHtlfSBiZWdpbnNgLGAke09hfSAke2V9IGVuZHNgKX0samE9e2JlZ2luOmthLGVuZDpBYX0sTWE9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIE5hKGUpe3JldHVybiB0eXBlb2YoZS5nZXRBdHRyaWJ1dGU/ZS5nZXRBdHRyaWJ1dGUodnIpOm51bGwpPT1gc3RyaW5nYH1mdW5jdGlvbiBQYShlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZT9lLmdldEF0dHJpYnV0ZSh4cik6bnVsbCxuPWUuZ2V0QXR0cmlidXRlP2UuZ2V0QXR0cmlidXRlKFNyKTpudWxsO3JldHVybiB0JiZufWZ1bmN0aW9uIEZhKGUpe3JldHVybiBlJiZlLmNsYXNzTGlzdCYmZS5jbGFzc0xpc3QuY29udGFpbnMmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKHEucmVwbGFjZW1lbnRDbGFzcyl9ZnVuY3Rpb24gSWEoKXtyZXR1cm4gcS5hdXRvUmVwbGFjZVN2Zz09PSEwP1ZhLnJlcGxhY2U6VmFbcS5hdXRvUmVwbGFjZVN2Z118fFZhLnJlcGxhY2V9ZnVuY3Rpb24gTGEoZSl7cmV0dXJuIEcuY3JlYXRlRWxlbWVudE5TKGBodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z2AsZSl9ZnVuY3Rpb24gUmEoZSl7cmV0dXJuIEcuY3JlYXRlRWxlbWVudChlKX1mdW5jdGlvbiB6YShlKXt2YXIgdD0oYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9KS5jZUZuLG49dD09PXZvaWQgMD9lLnRhZz09PWBzdmdgP0xhOlJhOnQ7aWYodHlwZW9mIGU9PWBzdHJpbmdgKXJldHVybiBHLmNyZWF0ZVRleHROb2RlKGUpO3ZhciByPW4oZS50YWcpO3JldHVybiBPYmplY3Qua2V5cyhlLmF0dHJpYnV0ZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Iuc2V0QXR0cmlidXRlKHQsZS5hdHRyaWJ1dGVzW3RdKX0pLChlLmNoaWxkcmVufHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXtyLmFwcGVuZENoaWxkKHphKGUse2NlRm46bn0pKX0pLHJ9ZnVuY3Rpb24gQmEoZSl7dmFyIHQ9YCAke2Uub3V0ZXJIVE1MfSBgO3JldHVybiB0PWAke3R9Rm9udCBBd2Vzb21lIGZvbnRhd2Vzb21lLmNvbSBgLHR9dmFyIFZhPXtyZXBsYWNlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbMF07aWYodC5wYXJlbnROb2RlKXtpZihlWzFdLmZvckVhY2goZnVuY3Rpb24oZSl7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh6YShlKSx0KX0pLHQuZ2V0QXR0cmlidXRlKHZyKT09PW51bGwmJnEua2VlcE9yaWdpbmFsU291cmNlKXt2YXIgbj1HLmNyZWF0ZUNvbW1lbnQoQmEodCkpO3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobix0KX1lbHNlIHQucmVtb3ZlKCl9fSxuZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0sbj1lWzFdO2lmKH50aSh0KS5pbmRleE9mKHEucmVwbGFjZW1lbnRDbGFzcykpcmV0dXJuIFZhLnJlcGxhY2UoZSk7dmFyIHI9UmVnRXhwKGAke3EuY3NzUHJlZml4fS0uKmApO2lmKGRlbGV0ZSBuWzBdLmF0dHJpYnV0ZXMuaWQsblswXS5hdHRyaWJ1dGVzLmNsYXNzKXt2YXIgaT1uWzBdLmF0dHJpYnV0ZXMuY2xhc3Muc3BsaXQoYCBgKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PXEucmVwbGFjZW1lbnRDbGFzc3x8dC5tYXRjaChyKT9lLnRvU3ZnLnB1c2godCk6ZS50b05vZGUucHVzaCh0KSxlfSx7dG9Ob2RlOltdLHRvU3ZnOltdfSk7blswXS5hdHRyaWJ1dGVzLmNsYXNzPWkudG9Tdmcuam9pbihgIGApLGkudG9Ob2RlLmxlbmd0aD09PTA/dC5yZW1vdmVBdHRyaWJ1dGUoYGNsYXNzYCk6dC5zZXRBdHRyaWJ1dGUoYGNsYXNzYCxpLnRvTm9kZS5qb2luKGAgYCkpfXZhciBhPW4ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB5aShlKX0pLmpvaW4oYApgKTt0LnNldEF0dHJpYnV0ZSh2cixgYCksdC5pbm5lckhUTUw9YX19O2Z1bmN0aW9uIEhhKGUpe2UoKX1mdW5jdGlvbiBVYShlLHQpe3ZhciBuPXR5cGVvZiB0PT1gZnVuY3Rpb25gP3Q6TWE7aWYoZS5sZW5ndGg9PT0wKW4oKTtlbHNle3ZhciByPUhhO3EubXV0YXRlQXBwcm9hY2g9PT13ciYmKHI9enQucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxIYSkscihmdW5jdGlvbigpe3ZhciB0PUlhKCkscj1qYS5iZWdpbihgbXV0YXRlYCk7ZS5tYXAodCkscigpLG4oKX0pfX12YXIgV2E9ITE7ZnVuY3Rpb24gR2EoKXtXYT0hMH1mdW5jdGlvbiBLYSgpe1dhPSExfXZhciBxYT1udWxsO2Z1bmN0aW9uIEphKGUpe2lmKEJ0JiZxLm9ic2VydmVNdXRhdGlvbnMpe3ZhciB0PWUudHJlZUNhbGxiYWNrLG49dD09PXZvaWQgMD9NYTp0LHI9ZS5ub2RlQ2FsbGJhY2ssaT1yPT09dm9pZCAwP01hOnIsYT1lLnBzZXVkb0VsZW1lbnRzQ2FsbGJhY2ssbz1hPT09dm9pZCAwP01hOmEscz1lLm9ic2VydmVNdXRhdGlvbnNSb290LGM9cz09PXZvaWQgMD9HOnM7cWE9bmV3IEJ0KGZ1bmN0aW9uKGUpe2lmKCFXYSl7dmFyIHQ9V2koKTtlaShlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUudHlwZT09PWBjaGlsZExpc3RgJiZlLmFkZGVkTm9kZXMubGVuZ3RoPjAmJiFOYShlLmFkZGVkTm9kZXNbMF0pJiYocS5zZWFyY2hQc2V1ZG9FbGVtZW50cyYmbyhlLnRhcmdldCksbihlLnRhcmdldCkpLGUudHlwZT09PWBhdHRyaWJ1dGVzYCYmZS50YXJnZXQucGFyZW50Tm9kZSYmcS5zZWFyY2hQc2V1ZG9FbGVtZW50cyYmbyhbZS50YXJnZXRdLCEwKSxlLnR5cGU9PT1gYXR0cmlidXRlc2AmJk5hKGUudGFyZ2V0KSYmfnpyLmluZGV4T2YoZS5hdHRyaWJ1dGVOYW1lKSl7aWYoZS5hdHRyaWJ1dGVOYW1lPT09YGNsYXNzYCYmUGEoZS50YXJnZXQpKXt2YXIgcj1aaSh0aShlLnRhcmdldCkpLGE9ci5wcmVmaXgscz1yLmljb25OYW1lO2UudGFyZ2V0LnNldEF0dHJpYnV0ZSh4cixhfHx0KSxzJiZlLnRhcmdldC5zZXRBdHRyaWJ1dGUoU3Iscyl9ZWxzZSBGYShlLnRhcmdldCkmJmkoZS50YXJnZXQpfX0pfX0pLEh0JiZxYS5vYnNlcnZlKGMse2NoaWxkTGlzdDohMCxhdHRyaWJ1dGVzOiEwLGNoYXJhY3RlckRhdGE6ITAsc3VidHJlZTohMH0pfX1mdW5jdGlvbiBZYSgpe3FhJiZxYS5kaXNjb25uZWN0KCl9ZnVuY3Rpb24gWGEoZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGUoYHN0eWxlYCksbj1bXTtyZXR1cm4gdCYmKG49dC5zcGxpdChgO2ApLnJlZHVjZShmdW5jdGlvbihlLHQpe3ZhciBuPXQuc3BsaXQoYDpgKSxyPW5bMF0saT1uLnNsaWNlKDEpO3JldHVybiByJiZpLmxlbmd0aD4wJiYoZVtyXT1pLmpvaW4oYDpgKS50cmltKCkpLGV9LHt9KSksbn1mdW5jdGlvbiBaYShlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZShgZGF0YS1wcmVmaXhgKSxuPWUuZ2V0QXR0cmlidXRlKGBkYXRhLWljb25gKSxyPWUuaW5uZXJUZXh0PT09dm9pZCAwP2BgOmUuaW5uZXJUZXh0LnRyaW0oKSxpPVppKHRpKGUpKTtyZXR1cm4gaS5wcmVmaXh8fD1XaSgpLHQmJm4mJihpLnByZWZpeD10LGkuaWNvbk5hbWU9biksaS5pY29uTmFtZSYmaS5wcmVmaXg/aTooaS5wcmVmaXgmJnIubGVuZ3RoPjAmJihpLmljb25OYW1lPUJpKGkucHJlZml4LGUuaW5uZXJUZXh0KXx8emkoaS5wcmVmaXgsQ2koZS5pbm5lclRleHQpKSksIWkuaWNvbk5hbWUmJnEuYXV0b0ZldGNoU3ZnJiZlLmZpcnN0Q2hpbGQmJmUuZmlyc3RDaGlsZC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYoaS5pY29uTmFtZT1lLmZpcnN0Q2hpbGQuZGF0YSksaSl9ZnVuY3Rpb24gUWEoZSl7cmV0dXJuIGVpKGUuYXR0cmlidXRlcykucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubmFtZSE9PWBjbGFzc2AmJmUubmFtZSE9PWBzdHlsZWAmJihlW3QubmFtZV09dC52YWx1ZSksZX0se30pfWZ1bmN0aW9uICRhKCl7cmV0dXJue2ljb25OYW1lOm51bGwscHJlZml4Om51bGwsdHJhbnNmb3JtOlhyLHN5bWJvbDohMSxtYXNrOntpY29uTmFtZTpudWxsLHByZWZpeDpudWxsLHJlc3Q6W119LG1hc2tJZDpudWxsLGV4dHJhOntjbGFzc2VzOltdLHN0eWxlczp7fSxhdHRyaWJ1dGVzOnt9fX19ZnVuY3Rpb24gZW8oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOntzdHlsZVBhcnNlcjohMH0sbj1aYShlKSxyPW4uaWNvbk5hbWUsaT1uLnByZWZpeCxhPW4ucmVzdCxvPVFhKGUpLHM9Y2EoYHBhcnNlTm9kZUF0dHJpYnV0ZXNgLHt9LGUpO3JldHVybiBXKHtpY29uTmFtZTpyLHByZWZpeDppLHRyYW5zZm9ybTpYcixtYXNrOntpY29uTmFtZTpudWxsLHByZWZpeDpudWxsLHJlc3Q6W119LG1hc2tJZDpudWxsLHN5bWJvbDohMSxleHRyYTp7Y2xhc3NlczphLHN0eWxlczp0LnN0eWxlUGFyc2VyP1hhKGUpOltdLGF0dHJpYnV0ZXM6b319LHMpfXZhciB0bz1taS5zdHlsZXM7ZnVuY3Rpb24gbm8oZSl7dmFyIHQ9cS5hdXRvUmVwbGFjZVN2Zz09PWBuZXN0YD9lbyhlLHtzdHlsZVBhcnNlcjohMX0pOmVvKGUpO3JldHVybn50LmV4dHJhLmNsYXNzZXMuaW5kZXhPZihMcik/dWEoYGdlbmVyYXRlTGF5ZXJzVGV4dGAsZSx0KTp1YShgZ2VuZXJhdGVTdmdSZXBsYWNlbWVudE11dGF0aW9uYCxlLHQpfWZ1bmN0aW9uIHJvKCl7cmV0dXJuW10uY29uY2F0KER0KFluKSxEdChjcikpfWZ1bmN0aW9uIGlvKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO2lmKCFIdClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7dmFyIG49Ry5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LHI9ZnVuY3Rpb24oZSl7cmV0dXJuIG4uYWRkKGAke0NyfS0ke2V9YCl9LGk9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ucmVtb3ZlKGAke0NyfS0ke2V9YCl9LGE9cS5hdXRvRmV0Y2hTdmc/cm8oKTpZdC5jb25jYXQoT2JqZWN0LmtleXModG8pKTthLmluY2x1ZGVzKGBmYWApfHxhLnB1c2goYGZhYCk7dmFyIG89W2AuJHtMcn06bm90KFske3ZyfV0pYF0uY29uY2F0KGEubWFwKGZ1bmN0aW9uKGUpe3JldHVybmAuJHtlfTpub3QoWyR7dnJ9XSlgfSkpLmpvaW4oYCwgYCk7aWYoby5sZW5ndGg9PT0wKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTt2YXIgcz1bXTt0cnl7cz1laShlLnF1ZXJ5U2VsZWN0b3JBbGwobykpfWNhdGNoe31pZihzLmxlbmd0aD4wKXIoYHBlbmRpbmdgKSxpKGBjb21wbGV0ZWApO2Vsc2UgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO3ZhciBjPWphLmJlZ2luKGBvblRyZWVgKSxsPXMucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dHJ5e3ZhciBuPW5vKHQpO24mJmUucHVzaChuKX1jYXRjaChlKXtEcnx8ZS5uYW1lPT09YE1pc3NpbmdJY29uYCYmY29uc29sZS5lcnJvcihlKX1yZXR1cm4gZX0sW10pO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLG4pe1Byb21pc2UuYWxsKGwpLnRoZW4oZnVuY3Rpb24obil7VWEobixmdW5jdGlvbigpe3IoYGFjdGl2ZWApLHIoYGNvbXBsZXRlYCksaShgcGVuZGluZ2ApLHR5cGVvZiB0PT1gZnVuY3Rpb25gJiZ0KCksYygpLGUoKX0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7YygpLG4oZSl9KX0pfWZ1bmN0aW9uIGFvKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO25vKGUpLnRoZW4oZnVuY3Rpb24oZSl7ZSYmVWEoW2VdLHQpfSl9ZnVuY3Rpb24gb28oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxyPSh0fHx7fSkuaWNvbj90OmRhKHR8fHt9KSxpPW4ubWFzaztyZXR1cm4gaSYmPShpfHx7fSkuaWNvbj9pOmRhKGl8fHt9KSxlKHIsVyhXKHt9LG4pLHt9LHttYXNrOml9KSl9fXZhciBzbz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sbj10LnRyYW5zZm9ybSxyPW49PT12b2lkIDA/WHI6bixpPXQuc3ltYm9sLGE9aSE9PXZvaWQgMCYmaSxvPXQubWFzayxzPW89PT12b2lkIDA/bnVsbDpvLGM9dC5tYXNrSWQsbD1jPT09dm9pZCAwP251bGw6Yyx1PXQuY2xhc3NlcyxkPXU9PT12b2lkIDA/W106dSxmPXQuYXR0cmlidXRlcyxwPWY9PT12b2lkIDA/e306ZixtPXQuc3R5bGVzLGg9bT09PXZvaWQgMD97fTptO2lmKGUpe3ZhciBnPWUucHJlZml4LF89ZS5pY29uTmFtZSx2PWUuaWNvbjtyZXR1cm4gbWEoVyh7dHlwZTpgaWNvbmB9LGUpLGZ1bmN0aW9uKCl7cmV0dXJuIGxhKGBiZWZvcmVET01FbGVtZW50Q3JlYXRpb25gLHtpY29uRGVmaW5pdGlvbjplLHBhcmFtczp0fSksdmEoe2ljb25zOnttYWluOlNhKHYpLG1hc2s6cz9TYShzLmljb24pOntmb3VuZDohMSx3aWR0aDpudWxsLGhlaWdodDpudWxsLGljb246e319fSxwcmVmaXg6ZyxpY29uTmFtZTpfLHRyYW5zZm9ybTpXKFcoe30sWHIpLHIpLHN5bWJvbDphLG1hc2tJZDpsLGV4dHJhOnthdHRyaWJ1dGVzOnAsc3R5bGVzOmgsY2xhc3NlczpkfX0pfSl9fSxjbz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue2ljb246b28oc28pfX0saG9va3M6ZnVuY3Rpb24oKXtyZXR1cm57bXV0YXRpb25PYnNlcnZlckNhbGxiYWNrczpmdW5jdGlvbihlKXtyZXR1cm4gZS50cmVlQ2FsbGJhY2s9aW8sZS5ub2RlQ2FsbGJhY2s9YW8sZX19fSxwcm92aWRlczpmdW5jdGlvbihlKXtlLmkyc3ZnPWZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZSxuPXQ9PT12b2lkIDA/Rzp0LHI9ZS5jYWxsYmFjaztyZXR1cm4gaW8obixyPT09dm9pZCAwP2Z1bmN0aW9uKCl7fTpyKX0sZS5nZW5lcmF0ZVN2Z1JlcGxhY2VtZW50TXV0YXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10Lmljb25OYW1lLHI9dC5wcmVmaXgsaT10LnRyYW5zZm9ybSxhPXQuc3ltYm9sLG89dC5tYXNrLHM9dC5tYXNrSWQsYz10LmV4dHJhO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGwpe1Byb21pc2UuYWxsKFtUYShuLHIpLG8uaWNvbk5hbWU/VGEoby5pY29uTmFtZSxvLnByZWZpeCk6UHJvbWlzZS5yZXNvbHZlKHtmb3VuZDohMSx3aWR0aDo1MTIsaGVpZ2h0OjUxMixpY29uOnt9fSldKS50aGVuKGZ1bmN0aW9uKG8pe3ZhciBsPUV0KG8sMiksdT1sWzBdLGQ9bFsxXTt0KFtlLHZhKHtpY29uczp7bWFpbjp1LG1hc2s6ZH0scHJlZml4OnIsaWNvbk5hbWU6bix0cmFuc2Zvcm06aSxzeW1ib2w6YSxtYXNrSWQ6cyxleHRyYTpjLHdhdGNoYWJsZTohMH0pXSl9KS5jYXRjaChsKX0pfSxlLmdlbmVyYXRlQWJzdHJhY3RJY29uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmF0dHJpYnV0ZXMscj1lLm1haW4saT1lLnRyYW5zZm9ybSxhPWUuc3R5bGVzLG89aWkoYSk7by5sZW5ndGg+MCYmKG4uc3R5bGU9byk7dmFyIHM7cmV0dXJuIGFpKGkpJiYocz11YShgZ2VuZXJhdGVBYnN0cmFjdFRyYW5zZm9ybUdyb3VwaW5nYCx7bWFpbjpyLHRyYW5zZm9ybTppLGNvbnRhaW5lcldpZHRoOnIud2lkdGgsaWNvbldpZHRoOnIud2lkdGh9KSksdC5wdXNoKHN8fHIuaWNvbikse2NoaWxkcmVuOnQsYXR0cmlidXRlczpufX19fSxsbz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue2xheWVyOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPXQuY2xhc3NlcyxyPW49PT12b2lkIDA/W106bjtyZXR1cm4gbWEoe3R5cGU6YGxheWVyYH0sZnVuY3Rpb24oKXtsYShgYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uYCx7YXNzZW1ibGVyOmUscGFyYW1zOnR9KTt2YXIgbj1bXTtyZXR1cm4gZShmdW5jdGlvbihlKXtBcnJheS5pc0FycmF5KGUpP2UubWFwKGZ1bmN0aW9uKGUpe249bi5jb25jYXQoZS5hYnN0cmFjdCl9KTpuPW4uY29uY2F0KGUuYWJzdHJhY3QpfSksW3t0YWc6YHNwYW5gLGF0dHJpYnV0ZXM6e2NsYXNzOltgJHtxLmNzc1ByZWZpeH0tbGF5ZXJzYF0uY29uY2F0KER0KHIpKS5qb2luKGAgYCl9LGNoaWxkcmVuOm59XX0pfX19fSx1bz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue2NvdW50ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LG49dC50aXRsZSxyPW49PT12b2lkIDA/bnVsbDpuLGk9dC5jbGFzc2VzLGE9aT09PXZvaWQgMD9bXTppLG89dC5hdHRyaWJ1dGVzLHM9bz09PXZvaWQgMD97fTpvLGM9dC5zdHlsZXMsbD1jPT09dm9pZCAwP3t9OmM7cmV0dXJuIG1hKHt0eXBlOmBjb3VudGVyYCxjb250ZW50OmV9LGZ1bmN0aW9uKCl7cmV0dXJuIGxhKGBiZWZvcmVET01FbGVtZW50Q3JlYXRpb25gLHtjb250ZW50OmUscGFyYW1zOnR9KSxiYSh7Y29udGVudDplLnRvU3RyaW5nKCksdGl0bGU6cixleHRyYTp7YXR0cmlidXRlczpzLHN0eWxlczpsLGNsYXNzZXM6W2Ake3EuY3NzUHJlZml4fS1sYXllcnMtY291bnRlcmBdLmNvbmNhdChEdChhKSl9fSl9KX19fX0sZm89e21peG91dDpmdW5jdGlvbigpe3JldHVybnt0ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPXQudHJhbnNmb3JtLHI9bj09PXZvaWQgMD9YcjpuLGk9dC5jbGFzc2VzLGE9aT09PXZvaWQgMD9bXTppLG89dC5hdHRyaWJ1dGVzLHM9bz09PXZvaWQgMD97fTpvLGM9dC5zdHlsZXMsbD1jPT09dm9pZCAwP3t9OmM7cmV0dXJuIG1hKHt0eXBlOmB0ZXh0YCxjb250ZW50OmV9LGZ1bmN0aW9uKCl7cmV0dXJuIGxhKGBiZWZvcmVET01FbGVtZW50Q3JlYXRpb25gLHtjb250ZW50OmUscGFyYW1zOnR9KSx5YSh7Y29udGVudDplLHRyYW5zZm9ybTpXKFcoe30sWHIpLHIpLGV4dHJhOnthdHRyaWJ1dGVzOnMsc3R5bGVzOmwsY2xhc3NlczpbYCR7cS5jc3NQcmVmaXh9LWxheWVycy10ZXh0YF0uY29uY2F0KER0KGEpKX19KX0pfX19LHByb3ZpZGVzOmZ1bmN0aW9uKGUpe2UuZ2VuZXJhdGVMYXllcnNUZXh0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dC50cmFuc2Zvcm0scj10LmV4dHJhLGk9bnVsbCxhPW51bGw7aWYoVXQpe3ZhciBvPXBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZSkuZm9udFNpemUsMTApLHM9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpPXMud2lkdGgvbyxhPXMuaGVpZ2h0L299cmV0dXJuIFByb21pc2UucmVzb2x2ZShbZSx5YSh7Y29udGVudDplLmlubmVySFRNTCx3aWR0aDppLGhlaWdodDphLHRyYW5zZm9ybTpuLGV4dHJhOnIsd2F0Y2hhYmxlOiEwfSldKX19fSxwbz1SZWdFeHAoYCJgLGB1Z2ApLG1vPVsxMTA1OTIwLDExMTIzMTldLGhvPVcoVyhXKFcoe30se0ZvbnRBd2Vzb21lOntub3JtYWw6YGZhc2AsNDAwOmBmYXNgfX0pLEtuKSxwciksJG4pLGdvPU9iamVjdC5rZXlzKGhvKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0LnRvTG93ZXJDYXNlKCldPWhvW3RdLGV9LHt9KSxfbz1PYmplY3Qua2V5cyhnbykucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIG49Z29bdF07cmV0dXJuIGVbdF09bls5MDBdfHxEdChPYmplY3QuZW50cmllcyhuKSlbMF1bMV0sZX0se30pO2Z1bmN0aW9uIHZvKGUpe3JldHVybiBDaShEdChlLnJlcGxhY2UocG8sYGApKVswXXx8YGApfWZ1bmN0aW9uIHlvKGUpe3ZhciB0PWUuZ2V0UHJvcGVydHlWYWx1ZShgZm9udC1mZWF0dXJlLXNldHRpbmdzYCkuaW5jbHVkZXMoYHNzMDFgKSxuPWUuZ2V0UHJvcGVydHlWYWx1ZShgY29udGVudGApLnJlcGxhY2UocG8sYGApLHI9bi5jb2RlUG9pbnRBdCgwKSxpPXI+PW1vWzBdJiZyPD1tb1sxXSxhPW4ubGVuZ3RoPT09MiYmblswXT09PW5bMV07cmV0dXJuIGl8fGF8fHR9ZnVuY3Rpb24gYm8oZSx0KXt2YXIgbj1lLnJlcGxhY2UoL15bJyJdfFsnIl0kL2csYGApLnRvTG93ZXJDYXNlKCkscj1wYXJzZUludCh0KSxpPWlzTmFOKHIpP2Bub3JtYWxgOnI7cmV0dXJuKGdvW25dfHx7fSlbaV18fF9vW25dfWZ1bmN0aW9uIHhvKGUsdCl7dmFyIG49YCR7YnJ9JHt0LnJlcGxhY2UoYDpgLGAtYCl9YDtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixpKXtpZihlLmdldEF0dHJpYnV0ZShuKSE9PW51bGwpcmV0dXJuIHIoKTt2YXIgYT1laShlLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKHlyKT09PXR9KVswXSxvPXp0LmdldENvbXB1dGVkU3R5bGUoZSx0KSxzPW8uZ2V0UHJvcGVydHlWYWx1ZShgZm9udC1mYW1pbHlgKSxjPXMubWF0Y2goUnIpLGw9by5nZXRQcm9wZXJ0eVZhbHVlKGBmb250LXdlaWdodGApLHU9by5nZXRQcm9wZXJ0eVZhbHVlKGBjb250ZW50YCk7aWYoYSYmIWMpcmV0dXJuIGUucmVtb3ZlQ2hpbGQoYSkscigpO2lmKGMmJnUhPT1gbm9uZWAmJnUhPT1gYCl7dmFyIGQ9by5nZXRQcm9wZXJ0eVZhbHVlKGBjb250ZW50YCksZj1ibyhzLGwpLHA9dm8oZCksbT1jWzBdLnN0YXJ0c1dpdGgoYEZvbnRBd2Vzb21lYCksaD15byhvKSxnPXppKGYscCksXz1nO2lmKG0pe3ZhciB2PVVpKHApO3YuaWNvbk5hbWUmJnYucHJlZml4JiYoZz12Lmljb25OYW1lLGY9di5wcmVmaXgpfWlmKGcmJiFoJiYoIWF8fGEuZ2V0QXR0cmlidXRlKHhyKSE9PWZ8fGEuZ2V0QXR0cmlidXRlKFNyKSE9PV8pKXtlLnNldEF0dHJpYnV0ZShuLF8pLGEmJmUucmVtb3ZlQ2hpbGQoYSk7dmFyIHk9JGEoKSxiPXkuZXh0cmE7Yi5hdHRyaWJ1dGVzW3lyXT10LFRhKGcsZikudGhlbihmdW5jdGlvbihpKXt2YXIgYT12YShXKFcoe30seSkse30se2ljb25zOnttYWluOmksbWFzazpHaSgpfSxwcmVmaXg6ZixpY29uTmFtZTpfLGV4dHJhOmIsd2F0Y2hhYmxlOiEwfSkpLG89Ry5jcmVhdGVFbGVtZW50TlMoYGh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnYCxgc3ZnYCk7dD09PWA6OmJlZm9yZWA/ZS5pbnNlcnRCZWZvcmUobyxlLmZpcnN0Q2hpbGQpOmUuYXBwZW5kQ2hpbGQobyksby5vdXRlckhUTUw9YS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHlpKGUpfSkuam9pbihgCmApLGUucmVtb3ZlQXR0cmlidXRlKG4pLHIoKX0pLmNhdGNoKGkpfWVsc2UgcigpfWVsc2UgcigpfSl9ZnVuY3Rpb24gU28oZSl7cmV0dXJuIFByb21pc2UuYWxsKFt4byhlLGA6OmJlZm9yZWApLHhvKGUsYDo6YWZ0ZXJgKV0pfWZ1bmN0aW9uIENvKGUpe3JldHVybiBlLnBhcmVudE5vZGUhPT1kb2N1bWVudC5oZWFkJiYhflRyLmluZGV4T2YoZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpJiYhZS5nZXRBdHRyaWJ1dGUoeXIpJiYoIWUucGFyZW50Tm9kZXx8ZS5wYXJlbnROb2RlLnRhZ05hbWUhPT1gc3ZnYCl9dmFyIHdvPWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmRXIuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmNsdWRlcyh0KX0pfSxUbz1mdW5jdGlvbihlKXtpZighZSlyZXR1cm5bXTt2YXIgdD1uZXcgU2V0LG49ZS5zcGxpdCgvLCg/IVteKCldKlwpKS8pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KTtuPW4uZmxhdE1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pbmNsdWRlcyhgKGApP2U6ZS5zcGxpdChgLGApLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KX0pO3ZhciByPWJ0KG4pLGk7dHJ5e2ZvcihyLnMoKTshKGk9ci5uKCkpLmRvbmU7KXt2YXIgYT1pLnZhbHVlO2lmKHdvKGEpKXt2YXIgbz1Fci5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yZXBsYWNlKHQsYGApfSxhKTtvIT09YGAmJm8hPT1gKmAmJnQuYWRkKG8pfX19Y2F0Y2goZSl7ci5lKGUpfWZpbmFsbHl7ci5mKCl9cmV0dXJuIHR9O2Z1bmN0aW9uIEVvKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwJiZhcmd1bWVudHNbMV07aWYoSHQpe3ZhciBuO2lmKHQpbj1lO2Vsc2UgaWYocS5zZWFyY2hQc2V1ZG9FbGVtZW50c0Z1bGxTY2FuKW49ZS5xdWVyeVNlbGVjdG9yQWxsKGAqYCk7ZWxzZXt2YXIgcj1uZXcgU2V0LGk9YnQoZG9jdW1lbnQuc3R5bGVTaGVldHMpLGE7dHJ5e2ZvcihpLnMoKTshKGE9aS5uKCkpLmRvbmU7KXt2YXIgbz1hLnZhbHVlO3RyeXt2YXIgcz1idChvLmNzc1J1bGVzKSxjO3RyeXtmb3Iocy5zKCk7IShjPXMubigpKS5kb25lOyl7dmFyIGw9Yy52YWx1ZSx1PWJ0KFRvKGwuc2VsZWN0b3JUZXh0KSksZDt0cnl7Zm9yKHUucygpOyEoZD11Lm4oKSkuZG9uZTspe3ZhciBmPWQudmFsdWU7ci5hZGQoZil9fWNhdGNoKGUpe3UuZShlKX1maW5hbGx5e3UuZigpfX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9fWNhdGNoKGUpe3Euc2VhcmNoUHNldWRvRWxlbWVudHNXYXJuaW5ncyYmY29uc29sZS53YXJuKGBGb250IEF3ZXNvbWU6IGNhbm5vdCBwYXJzZSBzdHlsZXNoZWV0OiAke28uaHJlZn0gKCR7ZS5tZXNzYWdlfSkKSWYgaXQgZGVjbGFyZXMgYW55IEZvbnQgQXdlc29tZSBDU1MgcHNldWRvLWVsZW1lbnRzLCB0aGV5IHdpbGwgbm90IGJlIHJlbmRlcmVkIGFzIFNWRyBpY29ucy4gQWRkIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHRvIHRoZSA8bGluaz4sIGVuYWJsZSBzZWFyY2hQc2V1ZG9FbGVtZW50c0Z1bGxTY2FuIGZvciBzbG93ZXIgYnV0IG1vcmUgdGhvcm91Z2ggRE9NIHBhcnNpbmcsIG9yIHN1cHByZXNzIHRoaXMgd2FybmluZyBieSBzZXR0aW5nIHNlYXJjaFBzZXVkb0VsZW1lbnRzV2FybmluZ3MgdG8gZmFsc2UuYCl9fX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX1pZighci5zaXplKXJldHVybjt2YXIgcD1BcnJheS5mcm9tKHIpLmpvaW4oYCwgYCk7dHJ5e249ZS5xdWVyeVNlbGVjdG9yQWxsKHApfWNhdGNoe319cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZWkobikuZmlsdGVyKENvKS5tYXAoU28pLGk9amEuYmVnaW4oYHNlYXJjaFBzZXVkb0VsZW1lbnRzYCk7R2EoKSxQcm9taXNlLmFsbChyKS50aGVuKGZ1bmN0aW9uKCl7aSgpLEthKCksZSgpfSkuY2F0Y2goZnVuY3Rpb24oKXtpKCksS2EoKSx0KCl9KX0pfX12YXIgRG89e2hvb2tzOmZ1bmN0aW9uKCl7cmV0dXJue211dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucHNldWRvRWxlbWVudHNDYWxsYmFjaz1FbyxlfX19LHByb3ZpZGVzOmZ1bmN0aW9uKGUpe2UucHNldWRvRWxlbWVudHMyc3ZnPWZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZSxuPXQ9PT12b2lkIDA/Rzp0O3Euc2VhcmNoUHNldWRvRWxlbWVudHMmJkVvKG4pfX19LE9vPSExLGtvPXttaXhvdXQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9tOnt1bndhdGNoOmZ1bmN0aW9uKCl7R2EoKSxPbz0hMH19fX0saG9va3M6ZnVuY3Rpb24oKXtyZXR1cm57Ym9vdHN0cmFwOmZ1bmN0aW9uKCl7SmEoY2EoYG11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3NgLHt9KSl9LG5vQXV0bzpmdW5jdGlvbigpe1lhKCl9LHdhdGNoOmZ1bmN0aW9uKGUpe3ZhciB0PWUub2JzZXJ2ZU11dGF0aW9uc1Jvb3Q7T28/S2EoKTpKYShjYShgbXV0YXRpb25PYnNlcnZlckNhbGxiYWNrc2Ase29ic2VydmVNdXRhdGlvbnNSb290OnR9KSl9fX19LEFvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkuc3BsaXQoYCBgKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRvTG93ZXJDYXNlKCkuc3BsaXQoYC1gKSxyPW5bMF0saT1uLnNsaWNlKDEpLmpvaW4oYC1gKTtpZihyJiZpPT09YGhgKXJldHVybiBlLmZsaXBYPSEwLGU7aWYociYmaT09PWB2YClyZXR1cm4gZS5mbGlwWT0hMCxlO2lmKGk9cGFyc2VGbG9hdChpKSxpc05hTihpKSlyZXR1cm4gZTtzd2l0Y2gocil7Y2FzZWBncm93YDplLnNpemUrPWk7YnJlYWs7Y2FzZWBzaHJpbmtgOmUuc2l6ZS09aTticmVhaztjYXNlYGxlZnRgOmUueC09aTticmVhaztjYXNlYHJpZ2h0YDplLngrPWk7YnJlYWs7Y2FzZWB1cGA6ZS55LT1pO2JyZWFrO2Nhc2VgZG93bmA6ZS55Kz1pO2JyZWFrO2Nhc2Vgcm90YXRlYDplLnJvdGF0ZSs9aX1yZXR1cm4gZX0se3NpemU6MTYseDowLHk6MCxmbGlwWDohMSxmbGlwWTohMSxyb3RhdGU6MH0pfSxqbz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue3BhcnNlOnt0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7cmV0dXJuIEFvKGUpfX19fSxob29rczpmdW5jdGlvbigpe3JldHVybntwYXJzZU5vZGVBdHRyaWJ1dGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoYGRhdGEtZmEtdHJhbnNmb3JtYCk7cmV0dXJuIG4mJihlLnRyYW5zZm9ybT1BbyhuKSksZX19fSxwcm92aWRlczpmdW5jdGlvbihlKXtlLmdlbmVyYXRlQWJzdHJhY3RUcmFuc2Zvcm1Hcm91cGluZz1mdW5jdGlvbihlKXt2YXIgdD1lLm1haW4sbj1lLnRyYW5zZm9ybSxyPWUuY29udGFpbmVyV2lkdGgsaT1lLmljb25XaWR0aCxhPXtvdXRlcjp7dHJhbnNmb3JtOmB0cmFuc2xhdGUoJHtyLzJ9IDI1NilgfSxpbm5lcjp7dHJhbnNmb3JtOmAke2B0cmFuc2xhdGUoJHtuLngqMzJ9LCAke24ueSozMn0pIGB9ICR7YHNjYWxlKCR7bi5zaXplLzE2KihuLmZsaXBYPy0xOjEpfSwgJHtuLnNpemUvMTYqKG4uZmxpcFk/LTE6MSl9KSBgfSAke2Byb3RhdGUoJHtuLnJvdGF0ZX0gMCAwKWB9YH0scGF0aDp7dHJhbnNmb3JtOmB0cmFuc2xhdGUoJHtpLzIqLTF9IC0yNTYpYH19O3JldHVybnt0YWc6YGdgLGF0dHJpYnV0ZXM6Vyh7fSxhLm91dGVyKSxjaGlsZHJlbjpbe3RhZzpgZ2AsYXR0cmlidXRlczpXKHt9LGEuaW5uZXIpLGNoaWxkcmVuOlt7dGFnOnQuaWNvbi50YWcsY2hpbGRyZW46dC5pY29uLmNoaWxkcmVuLGF0dHJpYnV0ZXM6VyhXKHt9LHQuaWNvbi5hdHRyaWJ1dGVzKSxhLnBhdGgpfV19XX19fX0sTW89e3g6MCx5OjAsd2lkdGg6YDEwMCVgLGhlaWdodDpgMTAwJWB9O2Z1bmN0aW9uIE5vKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTohMDtyZXR1cm4gZS5hdHRyaWJ1dGVzJiYoZS5hdHRyaWJ1dGVzLmZpbGx8fHQpJiYoZS5hdHRyaWJ1dGVzLmZpbGw9YGJsYWNrYCksZX1mdW5jdGlvbiBQbyhlKXtyZXR1cm4gZS50YWc9PT1gZ2A/ZS5jaGlsZHJlbjpbZV19c2EoW2ZpLGNvLGxvLHVvLGZvLERvLGtvLGpvLHtob29rczpmdW5jdGlvbigpe3JldHVybntwYXJzZU5vZGVBdHRyaWJ1dGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoYGRhdGEtZmEtbWFza2ApLHI9bj9aaShuLnNwbGl0KGAgYCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX0pKTpHaSgpO3JldHVybiByLnByZWZpeHx8PVdpKCksZS5tYXNrPXIsZS5tYXNrSWQ9dC5nZXRBdHRyaWJ1dGUoYGRhdGEtZmEtbWFzay1pZGApLGV9fX0scHJvdmlkZXM6ZnVuY3Rpb24oZSl7ZS5nZW5lcmF0ZUFic3RyYWN0TWFzaz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5hdHRyaWJ1dGVzLHI9ZS5tYWluLGk9ZS5tYXNrLGE9ZS5tYXNrSWQsbz1lLnRyYW5zZm9ybSxzPXIud2lkdGgsYz1yLmljb24sbD1pLndpZHRoLHU9aS5pY29uLGQ9b2koe3RyYW5zZm9ybTpvLGNvbnRhaW5lcldpZHRoOmwsaWNvbldpZHRoOnN9KSxmPXt0YWc6YHJlY3RgLGF0dHJpYnV0ZXM6VyhXKHt9LE1vKSx7fSx7ZmlsbDpgd2hpdGVgfSl9LHA9Yy5jaGlsZHJlbj97Y2hpbGRyZW46Yy5jaGlsZHJlbi5tYXAoTm8pfTp7fSxtPXt0YWc6YGdgLGF0dHJpYnV0ZXM6Vyh7fSxkLmlubmVyKSxjaGlsZHJlbjpbTm8oVyh7dGFnOmMudGFnLGF0dHJpYnV0ZXM6VyhXKHt9LGMuYXR0cmlidXRlcyksZC5wYXRoKX0scCkpXX0saD17dGFnOmBnYCxhdHRyaWJ1dGVzOlcoe30sZC5vdXRlciksY2hpbGRyZW46W21dfSxnPWBtYXNrLSR7YXx8JHIoKX1gLF89YGNsaXAtJHthfHwkcigpfWAsdj17dGFnOmBtYXNrYCxhdHRyaWJ1dGVzOlcoVyh7fSxNbykse30se2lkOmcsbWFza1VuaXRzOmB1c2VyU3BhY2VPblVzZWAsbWFza0NvbnRlbnRVbml0czpgdXNlclNwYWNlT25Vc2VgfSksY2hpbGRyZW46W2YsaF19LHk9e3RhZzpgZGVmc2AsY2hpbGRyZW46W3t0YWc6YGNsaXBQYXRoYCxhdHRyaWJ1dGVzOntpZDpffSxjaGlsZHJlbjpQbyh1KX0sdl19O3JldHVybiB0LnB1c2goeSx7dGFnOmByZWN0YCxhdHRyaWJ1dGVzOlcoe2ZpbGw6YGN1cnJlbnRDb2xvcmAsImNsaXAtcGF0aCI6YHVybCgjJHtffSlgLG1hc2s6YHVybCgjJHtnfSlgfSxNbyl9KSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOm59fX19LHtwcm92aWRlczpmdW5jdGlvbihlKXt2YXIgdD0hMTt6dC5tYXRjaE1lZGlhJiYodD16dC5tYXRjaE1lZGlhKGAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKWApLm1hdGNoZXMpLGUubWlzc2luZ0ljb25BYnN0cmFjdD1mdW5jdGlvbigpe3ZhciBlPVtdLG49e2ZpbGw6YGN1cnJlbnRDb2xvcmB9LHI9e2F0dHJpYnV0ZVR5cGU6YFhNTGAscmVwZWF0Q291bnQ6YGluZGVmaW5pdGVgLGR1cjpgMnNgfTtlLnB1c2goe3RhZzpgcGF0aGAsYXR0cmlidXRlczpXKFcoe30sbikse30se2Q6YE0xNTYuNSw0NDcuN2wtMTIuNiwyOS41Yy0xOC43LTkuNS0zNS45LTIxLjItNTEuNS0zNC45bDIyLjctMjIuN0MxMjcuNiw0MzAuNSwxNDEuNSw0NDAsMTU2LjUsNDQ3Ljd6IE00MC42LDI3Mkg4LjUgYzEuNCwyMS4yLDUuNCw0MS43LDExLjcsNjEuMUw1MCwzMjEuMkM0NS4xLDMwNS41LDQxLjgsMjg5LDQwLjYsMjcyeiBNNDAuNiwyNDBjMS40LTE4LjgsNS4yLTM3LDExLjEtNTQuMWwtMjkuNS0xMi42IEMxNC43LDE5NC4zLDEwLDIxNi43LDguNSwyNDBINDAuNnogTTY0LjMsMTU2LjVjNy44LTE0LjksMTcuMi0yOC44LDI4LjEtNDEuNUw2OS43LDkyLjNjLTEzLjcsMTUuNi0yNS41LDMyLjgtMzQuOSw1MS41IEw2NC4zLDE1Ni41eiBNMzk3LDQxOS42Yy0xMy45LDEyLTI5LjQsMjIuMy00Ni4xLDMwLjRsMTEuOSwyOS44YzIwLjctOS45LDM5LjgtMjIuNiw1Ni45LTM3LjZMMzk3LDQxOS42eiBNMTE1LDkyLjQgYzEzLjktMTIsMjkuNC0yMi4zLDQ2LjEtMzAuNGwtMTEuOS0yOS44Yy0yMC43LDkuOS0zOS44LDIyLjYtNTYuOCwzNy42TDExNSw5Mi40eiBNNDQ3LjcsMzU1LjVjLTcuOCwxNC45LTE3LjIsMjguOC0yOC4xLDQxLjUgbDIyLjcsMjIuN2MxMy43LTE1LjYsMjUuNS0zMi45LDM0LjktNTEuNUw0NDcuNywzNTUuNXogTTQ3MS40LDI3MmMtMS40LDE4LjgtNS4yLDM3LTExLjEsNTQuMWwyOS41LDEyLjYgYzcuNS0yMS4xLDEyLjItNDMuNSwxMy42LTY2LjhINDcxLjR6IE0zMjEuMiw0NjJjLTE1LjcsNS0zMi4yLDguMi00OS4yLDkuNHYzMi4xYzIxLjItMS40LDQxLjctNS40LDYxLjEtMTEuN0wzMjEuMiw0NjJ6IE0yNDAsNDcxLjRjLTE4LjgtMS40LTM3LTUuMi01NC4xLTExLjFsLTEyLjYsMjkuNWMyMS4xLDcuNSw0My41LDEyLjIsNjYuOCwxMy42VjQ3MS40eiBNNDYyLDE5MC44YzUsMTUuNyw4LjIsMzIuMiw5LjQsNDkuMmgzMi4xIGMtMS40LTIxLjItNS40LTQxLjctMTEuNy02MS4xTDQ2MiwxOTAuOHogTTkyLjQsMzk3Yy0xMi0xMy45LTIyLjMtMjkuNC0zMC40LTQ2LjFsLTI5LjgsMTEuOWM5LjksMjAuNywyMi42LDM5LjgsMzcuNiw1Ni45IEw5Mi40LDM5N3ogTTI3Miw0MC42YzE4LjgsMS40LDM2LjksNS4yLDU0LjEsMTEuMWwxMi42LTI5LjVDMzE3LjcsMTQuNywyOTUuMywxMCwyNzIsOC41VjQwLjZ6IE0xOTAuOCw1MCBjMTUuNy01LDMyLjItOC4yLDQ5LjItOS40VjguNWMtMjEuMiwxLjQtNDEuNyw1LjQtNjEuMSwxMS43TDE5MC44LDUweiBNNDQyLjMsOTIuM0w0MTkuNiwxMTVjMTIsMTMuOSwyMi4zLDI5LjQsMzAuNSw0Ni4xIGwyOS44LTExLjlDNDcwLDEyOC41LDQ1Ny4zLDEwOS40LDQ0Mi4zLDkyLjN6IE0zOTcsOTIuNGwyMi43LTIyLjdjLTE1LjYtMTMuNy0zMi44LTI1LjUtNTEuNS0zNC45bC0xMi42LDI5LjUgQzM3MC40LDcyLjEsMzg0LjQsODEuNSwzOTcsOTIuNHpgfSl9KTt2YXIgaT1XKFcoe30scikse30se2F0dHJpYnV0ZU5hbWU6YG9wYWNpdHlgfSksYT17dGFnOmBjaXJjbGVgLGF0dHJpYnV0ZXM6VyhXKHt9LG4pLHt9LHtjeDpgMjU2YCxjeTpgMzY0YCxyOmAyOGB9KSxjaGlsZHJlbjpbXX07cmV0dXJuIHR8fGEuY2hpbGRyZW4ucHVzaCh7dGFnOmBhbmltYXRlYCxhdHRyaWJ1dGVzOlcoVyh7fSxyKSx7fSx7YXR0cmlidXRlTmFtZTpgcmAsdmFsdWVzOmAyODsxNDsyODsyODsxNDsyODtgfSl9LHt0YWc6YGFuaW1hdGVgLGF0dHJpYnV0ZXM6VyhXKHt9LGkpLHt9LHt2YWx1ZXM6YDE7MDsxOzE7MDsxO2B9KX0pLGUucHVzaChhKSxlLnB1c2goe3RhZzpgcGF0aGAsYXR0cmlidXRlczpXKFcoe30sbikse30se29wYWNpdHk6YDFgLGQ6YE0yNjMuNywzMTJoLTE2Yy02LjYsMC0xMi01LjQtMTItMTJjMC03MSw3Ny40LTYzLjksNzcuNC0xMDcuOGMwLTIwLTE3LjgtNDAuMi01Ny40LTQwLjJjLTI5LjEsMC00NC4zLDkuNi01OS4yLDI4LjcgYy0zLjksNS0xMS4xLDYtMTYuMiwyLjRsLTEzLjEtOS4yYy01LjYtMy45LTYuOS0xMS44LTIuNi0xNy4yYzIxLjItMjcuMiw0Ni40LTQ0LjcsOTEuMi00NC43YzUyLjMsMCw5Ny40LDI5LjgsOTcuNCw4MC4yIGMwLDY3LjYtNzcuNCw2My41LTc3LjQsMTA3LjhDMjc1LjcsMzA2LjYsMjcwLjMsMzEyLDI2My43LDMxMnpgfSksY2hpbGRyZW46dD9bXTpbe3RhZzpgYW5pbWF0ZWAsYXR0cmlidXRlczpXKFcoe30saSkse30se3ZhbHVlczpgMTswOzA7MDswOzE7YH0pfV19KSx0fHxlLnB1c2goe3RhZzpgcGF0aGAsYXR0cmlidXRlczpXKFcoe30sbikse30se29wYWNpdHk6YDBgLGQ6YE0yMzIuNSwxMzQuNWw3LDE2OGMwLjMsNi40LDUuNiwxMS41LDEyLDExLjVoOWM2LjQsMCwxMS43LTUuMSwxMi0xMS41bDctMTY4YzAuMy02LjgtNS4yLTEyLjUtMTItMTIuNWgtMjMgQzIzNy43LDEyMiwyMzIuMiwxMjcuNywyMzIuNSwxMzQuNXpgfSksY2hpbGRyZW46W3t0YWc6YGFuaW1hdGVgLGF0dHJpYnV0ZXM6VyhXKHt9LGkpLHt9LHt2YWx1ZXM6YDA7MDsxOzE7MDswO2B9KX1dfSkse3RhZzpgZ2AsYXR0cmlidXRlczp7Y2xhc3M6YG1pc3NpbmdgfSxjaGlsZHJlbjplfX19fSx7aG9va3M6ZnVuY3Rpb24oKXtyZXR1cm57cGFyc2VOb2RlQXR0cmlidXRlczpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0QXR0cmlidXRlKGBkYXRhLWZhLXN5bWJvbGApO3JldHVybiBlLnN5bWJvbD1uPT09bnVsbD8hMTpuPT09YGB8fG4sZX19fX1dLHttaXhvdXRzVG86Sn0pLEoubm9BdXRvO3ZhciBGbz1KLmNvbmZpZztKLmxpYnJhcnksSi5kb207dmFyIElvPUoucGFyc2U7Si5maW5kSWNvbkRlZmluaXRpb24sSi50b0h0bWw7dmFyIExvPUouaWNvbjtKLmxheWVyO3ZhciBSbz1KLnRleHQ7Si5jb3VudGVyO2Z1bmN0aW9uIHpvKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBCbyhlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiB6byhlKX1mdW5jdGlvbiBZKGUsdCxuKXtyZXR1cm4odD1Kbyh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBWbyhlKXtpZih0eXBlb2YgU3ltYm9sPGB1YCYmZVtTeW1ib2wuaXRlcmF0b3JdIT1udWxsfHxlW2BAQGl0ZXJhdG9yYF0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gSG8oKXt0aHJvdyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gVW8oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBYKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XT09bnVsbD97fTphcmd1bWVudHNbdF07dCUyP1VvKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbih0KXtZKGUsdCxuW3RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlVvKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBXbyhlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG4scixpPUdvKGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik9PT0tMSYme30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYoaVtuXT1lW25dKX1yZXR1cm4gaX1mdW5jdGlvbiBHbyhlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIGUpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2YocikhPT0tMSljb250aW51ZTtuW3JdPWVbcl19cmV0dXJuIG59ZnVuY3Rpb24gS28oZSl7cmV0dXJuIEJvKGUpfHxWbyhlKXx8WG8oZSl8fEhvKCl9ZnVuY3Rpb24gcW8oZSx0KXtpZih0eXBlb2YgZSE9YG9iamVjdGB8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0fHxgZGVmYXVsdGApO2lmKHR5cGVvZiByIT1gb2JqZWN0YClyZXR1cm4gcjt0aHJvdyBUeXBlRXJyb3IoYEBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuYCl9cmV0dXJuKHQ9PT1gc3RyaW5nYD9TdHJpbmc6TnVtYmVyKShlKX1mdW5jdGlvbiBKbyhlKXt2YXIgdD1xbyhlLGBzdHJpbmdgKTtyZXR1cm4gdHlwZW9mIHQ9PWBzeW1ib2xgP3Q6dCtgYH1mdW5jdGlvbiBZbyhlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBZbz10eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1gc3ltYm9sYD9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZ0eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9gc3ltYm9sYDp0eXBlb2YgZX0sWW8oZSl9ZnVuY3Rpb24gWG8oZSx0KXtpZihlKXtpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIHpvKGUsdCk7dmFyIG49e30udG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4gbj09PWBPYmplY3RgJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT1gTWFwYHx8bj09PWBTZXRgP0FycmF5LmZyb20oZSk6bj09PWBBcmd1bWVudHNgfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT96byhlLHQpOnZvaWQgMH19ZnVuY3Rpb24gWm8oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+MHx8IUFycmF5LmlzQXJyYXkodCkmJnQ/WSh7fSxlLHQpOnt9fWZ1bmN0aW9uIFFvKGUpe3ZhciB0LG49KHQ9eyJmYS1zcGluIjplLnNwaW4sImZhLXB1bHNlIjplLnB1bHNlLCJmYS1mdyI6ZS5maXhlZFdpZHRoLCJmYS1ib3JkZXIiOmUuYm9yZGVyLCJmYS1saSI6ZS5saXN0SXRlbSwiZmEtaW52ZXJzZSI6ZS5pbnZlcnNlLCJmYS1mbGlwIjplLmZsaXA9PT0hMCwiZmEtZmxpcC1ob3Jpem9udGFsIjplLmZsaXA9PT1gaG9yaXpvbnRhbGB8fGUuZmxpcD09PWBib3RoYCwiZmEtZmxpcC12ZXJ0aWNhbCI6ZS5mbGlwPT09YHZlcnRpY2FsYHx8ZS5mbGlwPT09YGJvdGhgfSxZKFkoWShZKFkoWShZKFkoWShZKHQsYGZhLSR7ZS5zaXplfWAsZS5zaXplIT09bnVsbCksYGZhLXJvdGF0ZS0ke2Uucm90YXRpb259YCxlLnJvdGF0aW9uIT09bnVsbCksYGZhLXJvdGF0ZS1ieWAsZS5yb3RhdGVCeSksYGZhLXB1bGwtJHtlLnB1bGx9YCxlLnB1bGwhPT1udWxsKSxgZmEtc3dhcC1vcGFjaXR5YCxlLnN3YXBPcGFjaXR5KSxgZmEtYm91bmNlYCxlLmJvdW5jZSksYGZhLXNoYWtlYCxlLnNoYWtlKSxgZmEtYmVhdGAsZS5iZWF0KSxgZmEtZmFkZWAsZS5mYWRlKSxgZmEtYmVhdC1mYWRlYCxlLmJlYXRGYWRlKSxZKFkoWShZKFkoWShZKFkoWShZKHQsYGZhLWZsYXNoYCxlLmZsYXNoKSxgZmEtc3Bpbi1wdWxzZWAsZS5zcGluUHVsc2UpLGBmYS1zcGluLXJldmVyc2VgLGUuc3BpblJldmVyc2UpLGBmYS13aWR0aC1hdXRvYCxlLndpZHRoQXV0byksYGZhLWNhbnZhcy1zcXVhcmVgLGUuY2FudmFzU3F1YXJlKSxgZmEtY2FudmFzLXJvb215YCxlLmNhbnZhc1Jvb215KSxgZmEtZmxpcC0zNjBgLGUuZmxpcDM2MCksYGZhLWJ1enpgLGUuYnV6eiksYGZhLWZsb2F0YCxlLmZsb2F0KSxgZmEtamVsbG9gLGUuamVsbG8pLFkoWShZKFkoWSh0LGBmYS1zcGluLXNuYXBgLGUuc3BpblNuYXApLGBmYS1zcGluLXNuYXAtNGAsZS5zcGluU25hcDQpLGBmYS1zcGluLXNuYXAtOGAsZS5zcGluU25hcDgpLGBmYS1zd2luZ2AsZS5zd2luZyksYGZhLXdhZ2AsZS53YWcpKTtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdP2U6bnVsbH0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pfXZhciAkbz10eXBlb2YgZ2xvYmFsVGhpczxgdWA/Z2xvYmFsVGhpczp0eXBlb2Ygd2luZG93PGB1YD93aW5kb3c6dHlwZW9mIGdsb2JhbDxgdWA/Z2xvYmFsOnR5cGVvZiBzZWxmPGB1YD9zZWxmOnt9LGVzPXtleHBvcnRzOnt9fTsoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKGUsdCxyKXtpZighbCh0KXx8ZCh0KXx8Zih0KXx8cCh0KXx8Yyh0KSlyZXR1cm4gdDt2YXIgaSxhPTAsbz0wO2lmKHUodCkpZm9yKGk9W10sbz10Lmxlbmd0aDthPG87YSsrKWkucHVzaChuKGUsdFthXSxyKSk7ZWxzZSBmb3IodmFyIHMgaW4gaT17fSx0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHMpJiYoaVtlKHMscildPW4oZSx0W3NdLHIpKTtyZXR1cm4gaX0scj1mdW5jdGlvbihlLHQpe3R8fD17fTt2YXIgbj10LnNlcGFyYXRvcnx8YF9gLHI9dC5zcGxpdHx8Lyg/PVtBLVpdKS87cmV0dXJuIGUuc3BsaXQocikuam9pbihuKX0saT1mdW5jdGlvbihlKXtyZXR1cm4gbShlKT9lOihlPWUucmVwbGFjZSgvW1wtX1xzXSsoLik/L2csZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD90LnRvVXBwZXJDYXNlKCk6YGB9KSxlLnN1YnN0cigwLDEpLnRvTG93ZXJDYXNlKCkrZS5zdWJzdHIoMSkpfSxhPWZ1bmN0aW9uKGUpe3ZhciB0PWkoZSk7cmV0dXJuIHQuc3Vic3RyKDAsMSkudG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKX0sbz1mdW5jdGlvbihlLHQpe3JldHVybiByKGUsdCkudG9Mb3dlckNhc2UoKX0scz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGM9ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gfSxsPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09T2JqZWN0KGUpfSx1PWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSk9PWBbb2JqZWN0IEFycmF5XWB9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHMuY2FsbChlKT09YFtvYmplY3QgRGF0ZV1gfSxmPWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSk9PWBbb2JqZWN0IFJlZ0V4cF1gfSxwPWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSk9PWBbb2JqZWN0IEJvb2xlYW5dYH0sbT1mdW5jdGlvbihlKXtyZXR1cm4gZS09MCxlPT09ZX0saD1mdW5jdGlvbihlLHQpe3ZhciBuPXQmJmBwcm9jZXNzYGluIHQ/dC5wcm9jZXNzOnQ7cmV0dXJuIHR5cGVvZiBuPT1gZnVuY3Rpb25gP2Z1bmN0aW9uKHQscil7cmV0dXJuIG4odCxlLHIpfTplfSxnPXtjYW1lbGl6ZTppLGRlY2FtZWxpemU6byxwYXNjYWxpemU6YSxkZXBhc2NhbGl6ZTpvLGNhbWVsaXplS2V5czpmdW5jdGlvbihlLHQpe3JldHVybiBuKGgoaSx0KSxlKX0sZGVjYW1lbGl6ZUtleXM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihoKG8sdCksZSx0KX0scGFzY2FsaXplS2V5czpmdW5jdGlvbihlLHQpe3JldHVybiBuKGgoYSx0KSxlKX0sZGVwYXNjYWxpemVLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVjYW1lbGl6ZUtleXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07ZS5leHBvcnRzP2UuZXhwb3J0cz1nOnQuaHVtcHM9Z30pKCRvKX0pKGVzKTt2YXIgdHM9ZXMuZXhwb3J0cyxucz1bYGdyYWRpZW50RmlsbGBdLHJzPVtgY2xhc3NgLGBzdHlsZWBdLGlzPVtgdHlwZWAsYHN0b3BzYCxgaWRgXTtmdW5jdGlvbiBhcyhlKXtyZXR1cm4gZS5zcGxpdChgO2ApLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj10LmluZGV4T2YoYDpgKSxyPXRzLmNhbWVsaXplKHQuc2xpY2UoMCxuKSk7cmV0dXJuIGVbcl09dC5zbGljZShuKzEpLnRyaW0oKSxlfSx7fSl9ZnVuY3Rpb24gb3MoZSl7cmV0dXJuIGUuc3BsaXQoL1xzKy8pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPSEwLGV9LHt9KX1mdW5jdGlvbiBzcyhlLHQpe3JldHVybiBPKGBzdG9wYCxYKHtrZXk6YCR7dH0tJHtlLm9mZnNldH1gLG9mZnNldDplLm9mZnNldCwic3RvcC1jb2xvciI6ZS5jb2xvcn0sZS5vcGFjaXR5IT09dm9pZCAwJiZ7InN0b3Atb3BhY2l0eSI6ZS5vcGFjaXR5fSkpfWZ1bmN0aW9uIGNzKGUpe2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm4gZTt2YXIgdD0oZS5jaGlsZHJlbnx8W10pLm1hcChjcyk7cmV0dXJuIGUudGFnPT09YHBhdGhgJiZlLmF0dHJpYnV0ZXMmJmBmaWxsYGluIGUuYXR0cmlidXRlcz9YKFgoe30sZSkse30se2F0dHJpYnV0ZXM6WChYKHt9LGUuYXR0cmlidXRlcykse30se2ZpbGw6dm9pZCAwfSksY2hpbGRyZW46dH0pOlgoWCh7fSxlKSx7fSx7Y2hpbGRyZW46dH0pfWZ1bmN0aW9uIGxzKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fTtpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIGU7dmFyIHI9dC5ncmFkaWVudEZpbGwsaT1yPT09dm9pZCAwP251bGw6cixhPVdvKHQsbnMpLG89aXx8YGZpbGxgaW4gbj9jcyhlKTplLHM9KG8uY2hpbGRyZW58fFtdKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGxzKGUse30se30pfSksYz1PYmplY3Qua2V5cyhvLmF0dHJpYnV0ZXN8fHt9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj1vLmF0dHJpYnV0ZXNbdF07c3dpdGNoKHQpe2Nhc2VgY2xhc3NgOmUuY2xhc3M9b3Mobik7YnJlYWs7Y2FzZWBzdHlsZWA6ZS5zdHlsZT1hcyhuKTticmVhaztkZWZhdWx0OmUuYXR0cnNbdF09bn1yZXR1cm4gZX0se2F0dHJzOnt9LGNsYXNzOnt9LHN0eWxlOnt9fSk7bi5jbGFzczt2YXIgbD1uLnN0eWxlLHU9bD09PXZvaWQgMD97fTpsLGQ9V28obixycyk7aWYoaSYmaS5pZCYmKGkudHlwZT09PWBsaW5lYXJgfHxpLnR5cGU9PT1gcmFkaWFsYCkpe3ZhciBmPWkudHlwZSxwPWkuc3RvcHMsbT1wPT09dm9pZCAwP1tdOnAsaD1pLmlkLGc9V28oaSxpcyksXz1PKGY9PT1gbGluZWFyYD9gbGluZWFyR3JhZGllbnRgOmByYWRpYWxHcmFkaWVudGAsWChYKHt9LGcpLHt9LHtpZDpofSksbS5tYXAoc3MpKTtyZXR1cm4gTyhvLnRhZyxYKFgoWChYKHt9LGEpLHt9LHtjbGFzczpjLmNsYXNzLHN0eWxlOlgoWCh7fSxjLnN0eWxlKSx1KX0sYy5hdHRycyksZCkse30se2ZpbGw6YHVybCgjJHtofSlgfSksW19dLmNvbmNhdChLbyhzKSkpfXJldHVybiBPKGUudGFnLFgoWChYKHt9LGEpLHt9LHtjbGFzczpjLmNsYXNzLHN0eWxlOlgoWCh7fSxjLnN0eWxlKSx1KX0sYy5hdHRycyksZCkscyl9dmFyIHVzPSExO3RyeXt1cz0hMH1jYXRjaHt9ZnVuY3Rpb24gZHMoKXtpZighdXMmJmNvbnNvbGUmJnR5cGVvZiBjb25zb2xlLmVycm9yPT1gZnVuY3Rpb25gKXt2YXIgZTsoZT1jb25zb2xlKS5lcnJvci5hcHBseShlLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGZzKGUpe2lmKGUmJllvKGUpPT09YG9iamVjdGAmJmUucHJlZml4JiZlLmljb25OYW1lJiZlLmljb24pcmV0dXJuIGU7aWYoSW8uaWNvbilyZXR1cm4gSW8uaWNvbihlKTtpZihlPT09bnVsbClyZXR1cm4gbnVsbDtpZihZbyhlKT09PWBvYmplY3RgJiZlLnByZWZpeCYmZS5pY29uTmFtZSlyZXR1cm4gZTtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PTIpcmV0dXJue3ByZWZpeDplWzBdLGljb25OYW1lOmVbMV19O2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm57cHJlZml4OmBmYXNgLGljb25OYW1lOmV9fXZhciBwcz1qKHtuYW1lOmBGb250QXdlc29tZUljb25gLHByb3BzOntib3JkZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmaXhlZFdpZHRoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZmxpcDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITEsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVyblshMCwhMSxgaG9yaXpvbnRhbGAsYHZlcnRpY2FsYCxgYm90aGBdLmluZGV4T2YoZSk+LTF9fSxpY29uOnt0eXBlOltPYmplY3QsQXJyYXksU3RyaW5nXSxyZXF1aXJlZDohMH0sbWFzazp7dHlwZTpbT2JqZWN0LEFycmF5LFN0cmluZ10sZGVmYXVsdDpudWxsfSxtYXNrSWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sbGlzdEl0ZW06e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwdWxsOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGwsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVybltgcmlnaHRgLGBsZWZ0YF0uaW5kZXhPZihlKT4tMX19LHB1bHNlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scm90YXRpb246e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6bnVsbCx2YWxpZGF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuWzkwLDE4MCwyNzBdLmluZGV4T2YoTnVtYmVyLnBhcnNlSW50KGUsMTApKT4tMX19LHJvdGF0ZUJ5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3dhcE9wYWNpdHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzaXplOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGwsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVybltgMnhzYCxgeHNgLGBzbWAsYGxnYCxgeGxgLGAyeGxgLGAxeGAsYDJ4YCxgM3hgLGA0eGAsYDV4YCxgNnhgLGA3eGAsYDh4YCxgOXhgLGAxMHhgXS5pbmRleE9mKGUpPi0xfX0sc3Bpbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRyYW5zZm9ybTp7dHlwZTpbU3RyaW5nLE9iamVjdF0sZGVmYXVsdDpudWxsfSxzeW1ib2w6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSx0aXRsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSx0aXRsZUlkOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LGludmVyc2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxib3VuY2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzaGFrZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGJlYXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmYWRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYmVhdEZhZGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmbGFzaDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5QdWxzZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5SZXZlcnNlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sd2lkdGhBdXRvOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2FudmFzU3F1YXJlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2FudmFzUm9vbXk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxncmFkaWVudEZpbGw6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbCx2YWxpZGF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlLmlkIT1gc3RyaW5nYHx8IWUuaWQ/KGNvbnNvbGUud2FybihgRm9udEF3ZXNvbWVJY29uOiBncmFkaWVudEZpbGwuaWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdgKSwhMSk6ZS50eXBlIT09YGxpbmVhcmAmJmUudHlwZSE9PWByYWRpYWxgPyhjb25zb2xlLndhcm4oYEZvbnRBd2Vzb21lSWNvbjogZ3JhZGllbnRGaWxsLnR5cGUgbXVzdCBiZSAibGluZWFyIiBvciAicmFkaWFsImApLCExKTohMH19LGZsaXAzNjA6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxidXp6Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZmxvYXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxqZWxsbzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5TbmFwOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3BpblNuYXA0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3BpblNuYXA4Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3dpbmc6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx3YWc6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfX0sc2V0dXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmF0dHJzLHI9SShmdW5jdGlvbigpe3JldHVybiBmcyhlLmljb24pfSksaT1JKGZ1bmN0aW9uKCl7cmV0dXJuIFpvKGBjbGFzc2VzYCxRbyhlKSl9KSxhPUkoZnVuY3Rpb24oKXtyZXR1cm4gWm8oYHRyYW5zZm9ybWAsdHlwZW9mIGUudHJhbnNmb3JtPT1gc3RyaW5nYD9Jby50cmFuc2Zvcm0oZS50cmFuc2Zvcm0pOmUudHJhbnNmb3JtKX0pLG89SShmdW5jdGlvbigpe3JldHVybiBabyhgbWFza2AsZnMoZS5tYXNrKSl9KSxzPUkoZnVuY3Rpb24oKXt2YXIgdD1YKFgoWChYKHt9LGkudmFsdWUpLGEudmFsdWUpLG8udmFsdWUpLHt9LHtzeW1ib2w6ZS5zeW1ib2wsbWFza0lkOmUubWFza0lkfSk7cmV0dXJuIHQudGl0bGU9ZS50aXRsZSx0LnRpdGxlSWQ9ZS50aXRsZUlkLExvKHIudmFsdWUsdCl9KTtsKHMsZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGRzKGBDb3VsZCBub3QgZmluZCBvbmUgb3IgbW9yZSBpY29uKHMpYCxyLnZhbHVlLG8udmFsdWUpfSx7aW1tZWRpYXRlOiEwfSksZS5ncmFkaWVudEZpbGwmJmUuc3ltYm9sJiZkcyhgZ3JhZGllbnRGaWxsIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBzeW1ib2wgaXMgdHJ1ZSBhbmQgd2lsbCBiZSBpZ25vcmVkYCk7dmFyIGM9SShmdW5jdGlvbigpe3JldHVybiBzLnZhbHVlP2xzKHMudmFsdWUuYWJzdHJhY3RbMF0se2dyYWRpZW50RmlsbDplLnN5bWJvbD9udWxsOmUuZ3JhZGllbnRGaWxsfSxuKTpudWxsfSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGMudmFsdWV9fX0pO2ooe25hbWU6YEZvbnRBd2Vzb21lTGF5ZXJzYCxwcm9wczp7Zml4ZWRXaWR0aDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxzZXR1cDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc2xvdHMscj1Gby5mYW1pbHlQcmVmaXgsaT1JKGZ1bmN0aW9uKCl7cmV0dXJuW2Ake3J9LWxheWVyc2BdLmNvbmNhdChLbyhlLmZpeGVkV2lkdGg/W2Ake3J9LWZ3YF06W10pKX0pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBPKGBkaXZgLHtjbGFzczppLnZhbHVlfSxuLmRlZmF1bHQ/bi5kZWZhdWx0KCk6W10pfX19KSxqKHtuYW1lOmBGb250QXdlc29tZUxheWVyc1RleHRgLHByb3BzOnt2YWx1ZTp7dHlwZTpbU3RyaW5nLE51bWJlcl0sZGVmYXVsdDpgYH0sdHJhbnNmb3JtOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0Om51bGx9LGNvdW50ZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwb3NpdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsLHZhbGlkYXRvcjpmdW5jdGlvbihlKXtyZXR1cm5bYGJvdHRvbS1sZWZ0YCxgYm90dG9tLXJpZ2h0YCxgdG9wLWxlZnRgLGB0b3AtcmlnaHRgXS5pbmRleE9mKGUpPi0xfX19LHNldHVwOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5hdHRycyxyPUZvLmZhbWlseVByZWZpeCxpPUkoZnVuY3Rpb24oKXtyZXR1cm4gWm8oYGNsYXNzZXNgLFtdLmNvbmNhdChLbyhlLmNvdW50ZXI/W2Ake3J9LWxheWVycy1jb3VudGVyYF06W10pLEtvKGUucG9zaXRpb24/W2Ake3J9LWxheWVycy0ke2UucG9zaXRpb259YF06W10pKSl9KSxhPUkoZnVuY3Rpb24oKXtyZXR1cm4gWm8oYHRyYW5zZm9ybWAsdHlwZW9mIGUudHJhbnNmb3JtPT1gc3RyaW5nYD9Jby50cmFuc2Zvcm0oZS50cmFuc2Zvcm0pOmUudHJhbnNmb3JtKX0pLG89SShmdW5jdGlvbigpe3ZhciB0PVJvKGUudmFsdWUudG9TdHJpbmcoKSxYKFgoe30sYS52YWx1ZSksaS52YWx1ZSkpLmFic3RyYWN0O3JldHVybiBlLmNvdW50ZXImJih0WzBdLmF0dHJpYnV0ZXMuY2xhc3M9dFswXS5hdHRyaWJ1dGVzLmNsYXNzLnJlcGxhY2UoYGZhLWxheWVycy10ZXh0YCxgYCkpLHRbMF19KSxzPUkoZnVuY3Rpb24oKXtyZXR1cm4gbHMoby52YWx1ZSx7fSxuKX0pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzLnZhbHVlfX19KTt2YXIgbXM9e3ByZWZpeDpgZmFiYCxpY29uTmFtZTpgZ2l0aHViYCxpY29uOls1MTIsNTEyLFtdLGBmMDliYCxgTTIxNi41IDM2Mi41Yy02Ni04LTExMi41LTU1LjUtMTEyLjUtMTE3IDAtMjUgOS01MiAyNC03MC02LjUtMTYuNS01LjUtNTEuNSAyLTY2IDIwLTIuNSA0NyA4IDYzIDIyLjUgMTktNiAzOS05IDYzLjUtOXM0NC41IDMgNjIuNSA4LjVjMTUuNS0xNCA0My0yNC41IDYzLTIyIDcgMTMuNSA4IDQ4LjUgMS41IDY1LjUgMTYgMTkgMjQuNSA0NC41IDI0LjUgNzAuNSAwIDYxLjUtNDYuNSAxMDgtMTEzLjUgMTE2LjUgMTcgMTEgMjguNSAzNSAyOC41IDYyLjVsMCA1MkMzMjMgNDkxLjUgMzM1LjUgNTAwIDM1MC41IDQ5NCA0NDEgNDU5LjUgNTEyIDM2OSA1MTIgMjU3IDUxMiAxMTUuNSAzOTcgMCAyNTUuNSAwUzAgMTE1LjUgMCAyNTdjMCAxMTEgNzAuNSAyMDMgMTY1LjUgMjM3LjUgMTMuNSA1IDI2LjUtNCAyNi41LTE3LjVsMC00MGMtNyAzLTE2IDUtMjQgNS0zMyAwLTUyLjUtMTgtNjYuNS01MS41LTUuNS0xMy41LTExLjUtMjEuNS0yMy0yMy02LS41LTgtMy04LTYgMC02IDEwLTEwLjUgMjAtMTAuNSAxNC41IDAgMjcgOSA0MCAyNy41IDEwIDE0LjUgMjAuNSAyMSAzMyAyMXMyMC41LTQuNSAzMi0xNmM4LjUtOC41IDE1LTE2IDIxLTIxemBdfSxocz1qKHtfX25hbWU6YEFsZXJ0YCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX0sdmFyaWFudDp7fX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4obixyKT0+KHooKSxOKGBkaXZgLHsiZGF0YS1zbG90IjpgYWxlcnRgLGNsYXNzOmR0KFAoZ2UpKFAodnMpKHt2YXJpYW50OmUudmFyaWFudH0pLHQuY2xhc3MpKSxyb2xlOmBhbGVydGB9LFtSKG4uJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxncz1qKHtfX25hbWU6YEFsZXJ0RGVzY3JpcHRpb25gLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KHooKSxOKGBkaXZgLHsiZGF0YS1zbG90IjpgYWxlcnQtZGVzY3JpcHRpb25gLGNsYXNzOmR0KFAoZ2UpKGB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGV4dC1zbSB0ZXh0LWJhbGFuY2UgbWQ6dGV4dC1wcmV0dHkgWyZfcDpub3QoOmxhc3QtY2hpbGQpXTptYi00IFsmX2FdOnVuZGVybGluZSBbJl9hXTp1bmRlcmxpbmUtb2Zmc2V0LTMgWyZfYV06aG92ZXI6dGV4dC1mb3JlZ3JvdW5kYCx0LmNsYXNzKSl9LFtSKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxfcz1qKHtfX25hbWU6YEFsZXJ0VGl0bGVgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KHooKSxOKGBkaXZgLHsiZGF0YS1zbG90IjpgYWxlcnQtdGl0bGVgLGNsYXNzOmR0KFAoZ2UpKGBmb250LW1lZGl1bSBncm91cC1oYXMtWz5zdmddL2FsZXJ0OmNvbC1zdGFydC0yIGZvbnQtaGVhZGluZyBbJl9hXTp1bmRlcmxpbmUgWyZfYV06dW5kZXJsaW5lLW9mZnNldC0zIFsmX2FdOmhvdmVyOnRleHQtZm9yZWdyb3VuZGAsdC5jbGFzcykpfSxbUihlLiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksdnM9dihgZ3JpZCBnYXAtMC41IHJvdW5kZWQtbGcgYm9yZGVyIHB4LTIuNSBweS0yIHRleHQtbGVmdCB0ZXh0LXNtIGhhcy1kYXRhLVtzbG90PWFsZXJ0LWFjdGlvbl06cmVsYXRpdmUgaGFzLWRhdGEtW3Nsb3Q9YWxlcnQtYWN0aW9uXTpwci0xOCBoYXMtWz5zdmddOmdyaWQtY29scy1bYXV0b18xZnJdIGhhcy1bPnN2Z106Z2FwLXgtMiAqOltzdmddOnJvdy1zcGFuLTIgKjpbc3ZnXTp0cmFuc2xhdGUteS0wLjUgKjpbc3ZnXTp0ZXh0LWN1cnJlbnQgKjpbc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNCBncm91cC9hbGVydCByZWxhdGl2ZSB3LWZ1bGxgLHt2YXJpYW50czp7dmFyaWFudDp7ZGVmYXVsdDpgYmctY2FyZCB0ZXh0LWNhcmQtZm9yZWdyb3VuZGAsZGVzdHJ1Y3RpdmU6YHRleHQtZGVzdHJ1Y3RpdmUgYmctY2FyZCAqOmRhdGEtW3Nsb3Q9YWxlcnQtZGVzY3JpcHRpb25dOnRleHQtZGVzdHJ1Y3RpdmUvOTAgKjpbc3ZnXTp0ZXh0LWN1cnJlbnRgLHdhcm46YHRleHQtc3RhdHVzLXdhcm4gYmctY2FyZCAqOmRhdGEtW3Nsb3Q9YWxlcnQtZGVzY3JpcHRpb25dOnRleHQtc3RhdHVzLXdhcm4vOTAgKjpbc3ZnXTp0ZXh0LWN1cnJlbnRgfX0sZGVmYXVsdFZhcmlhbnRzOnt2YXJpYW50OmBkZWZhdWx0YH19KTtmdW5jdGlvbiB5cyhlKXtyZXR1cm4gdHlwZW9mIGU9PWBzdHJpbmdgP2AnJHtlfSdgOm5ldyBDcygpLnNlcmlhbGl6ZShlKX12YXIgYnM9YCBfLSw7OiE/LiciKClbXXt9QCovXFwmIyVcYF4rPD0+fH4kMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YCx4cz0oZnVuY3Rpb24oKXtsZXQgZT1uZXcgVWludDhBcnJheSgxMjgpO2ZvcihsZXQgdD0wO3Q8Njk7dCsrKWVbYnMuY2hhckNvZGVBdCh0KV09dCsxO2ZvcihsZXQgdD02NTt0PD05MDt0KyspZVt0XT1lW3QrMzJdO3JldHVybiBlfSkoKTtmdW5jdGlvbiBTcyhlLHQpe2lmKGU9PT10KXJldHVybiAwO2xldCBuPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKSxyPTA7Zm9yKGxldCBpPTA7aTxuO2krKyl7bGV0IG49ZS5jaGFyQ29kZUF0KGkpLGE9dC5jaGFyQ29kZUF0KGkpO2lmKG49PT1hKWNvbnRpbnVlO2xldCBvPW48MTI4JiZ4c1tuXT94c1tuXTpuKzEyOCxzPWE8MTI4JiZ4c1thXT94c1thXTphKzEyODtpZihvIT09cylyZXR1cm4gbzxzPy0xOjE7cj09PTAmJihyPW4+YT8tMToxKX1yZXR1cm4gZS5sZW5ndGg9PT10Lmxlbmd0aD9yOmUubGVuZ3RoPHQubGVuZ3RoPy0xOjF9dmFyIENzPShmdW5jdGlvbigpe2NsYXNzIGV7I2U9bmV3IE1hcDtjb21wYXJlKGUsdCl7bGV0IG49dHlwZW9mIGUscj10eXBlb2YgdDtyZXR1cm4gbj09PWBzdHJpbmdgJiZyPT09YHN0cmluZ2A/U3MoZSx0KTpuPT09YG51bWJlcmAmJnI9PT1gbnVtYmVyYD9lLXQ6U3ModGhpcy5zZXJpYWxpemUoZSwhMCksdGhpcy5zZXJpYWxpemUodCwhMCkpfXNlcmlhbGl6ZShlLHQpe2lmKGU9PT1udWxsKXJldHVybmBudWxsYDtzd2l0Y2godHlwZW9mIGUpe2Nhc2Vgc3RyaW5nYDpyZXR1cm4gdD9lOmAnJHtlfSdgO2Nhc2VgYmlnaW50YDpyZXR1cm5gJHtlfW5gO2Nhc2Vgb2JqZWN0YDpyZXR1cm4gdGhpcy4kb2JqZWN0KGUpO2Nhc2VgZnVuY3Rpb25gOnJldHVybiB0aGlzLiRmdW5jdGlvbihlKX1yZXR1cm4gU3RyaW5nKGUpfXNlcmlhbGl6ZU9iamVjdChlKXtsZXQgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7aWYodCE9PWBbb2JqZWN0IE9iamVjdF1gKXJldHVybiB0aGlzLnNlcmlhbGl6ZUJ1aWx0SW5UeXBlKHQubGVuZ3RoPDEwP2B1bmtub3duOiR7dH1gOnQuc2xpY2UoOCwtMSksZSk7bGV0IG49ZS5jb25zdHJ1Y3RvcixyPW49PT1PYmplY3R8fG49PT12b2lkIDA/YGA6bi5uYW1lO2lmKHIhPT1gYCYmZ2xvYmFsVGhpc1tyXT09PW4pcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUocixlKTtpZihgdG9KU09OYGluIGUmJnR5cGVvZiBlLnRvSlNPTj09YGZ1bmN0aW9uYCl7bGV0IHQ9ZS50b0pTT04oKTtyZXR1cm4gcisodHlwZW9mIHQ9PWBvYmplY3RgJiZ0P3RoaXMuJG9iamVjdCh0KTpgKCR7dGhpcy5zZXJpYWxpemUodCl9KWApfWxldCBpPU9iamVjdC5rZXlzKGUpLnNvcnQoU3MpLGE9YCR7cn17YDtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7bGV0IG49aVt0XTthKz1gJHtufToke3RoaXMuc2VyaWFsaXplKGVbbl0pfWAsdDxpLmxlbmd0aC0xJiYoYSs9YCxgKX1yZXR1cm4gYStgfWB9c2VyaWFsaXplQnVpbHRJblR5cGUoZSx0KXtsZXQgbj10aGlzW2AkYCtlXTtpZihuKXJldHVybiBuLmNhbGwodGhpcyx0KTtpZih0eXBlb2YgdC5lbnRyaWVzPT1gZnVuY3Rpb25gKXJldHVybiB0aGlzLnNlcmlhbGl6ZU9iamVjdEVudHJpZXMoZSx0LmVudHJpZXMoKSk7dGhyb3cgRXJyb3IoYENhbm5vdCBzZXJpYWxpemUgJHtlfWApfXNlcmlhbGl6ZU9iamVjdEVudHJpZXMoZSx0KXtsZXQgbj1BcnJheS5mcm9tKHQpLnNvcnQoKGUsdCk9PnRoaXMuY29tcGFyZShlWzBdLHRbMF0pKSxyPWAke2V9e2A7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2xldFt0LGldPW5bZV07cis9YCR7dGhpcy5zZXJpYWxpemUodCwhMCl9OiR7dGhpcy5zZXJpYWxpemUoaSl9YCxlPG4ubGVuZ3RoLTEmJihyKz1gLGApfXJldHVybiByK2B9YH0kb2JqZWN0KGUpe2xldCB0PXRoaXMuI2UuZ2V0KGUpO3JldHVybiB0PT09dm9pZCAwJiYodGhpcy4jZS5zZXQoZSxgIyR7dGhpcy4jZS5zaXplfWApLHQ9dGhpcy5zZXJpYWxpemVPYmplY3QoZSksdGhpcy4jZS5zZXQoZSx0KSksdH0kZnVuY3Rpb24oZSl7bGV0IHQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7cmV0dXJuIHQuc2xpY2UoLTE1KT09PWBbbmF0aXZlIGNvZGVdIH1gP2Ake2UubmFtZXx8YGB9KClbbmF0aXZlXWA6YCR7ZS5uYW1lfSgke2UubGVuZ3RofSkke3QucmVwbGFjZSgvXHMqXG5ccyovZyxgYCl9YH0kQXJyYXkoZSl7bGV0IHQ9YFtgO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQrPXRoaXMuc2VyaWFsaXplKGVbbl0pLG48ZS5sZW5ndGgtMSYmKHQrPWAsYCk7cmV0dXJuIHQrYF1gfSREYXRlKGUpe3RyeXtyZXR1cm5gRGF0ZSgke2UudG9JU09TdHJpbmcoKX0pYH1jYXRjaHtyZXR1cm5gRGF0ZShudWxsKWB9fSRBcnJheUJ1ZmZlcihlKXtyZXR1cm5gQXJyYXlCdWZmZXJbJHtuZXcgVWludDhBcnJheShlKS5qb2luKGAsYCl9XWB9JFNldChlKXtyZXR1cm5gU2V0JHt0aGlzLiRBcnJheShBcnJheS5mcm9tKGUpLnNvcnQoKGUsdCk9PnRoaXMuY29tcGFyZShlLHQpKSl9YH0kTWFwKGUpe3JldHVybiB0aGlzLnNlcmlhbGl6ZU9iamVjdEVudHJpZXMoYE1hcGAsZS5lbnRyaWVzKCkpfX1mb3IobGV0IHQgb2ZbYEVycm9yYCxgUmVnRXhwYCxgVVJMYF0pZS5wcm90b3R5cGVbYCRgK3RdPWZ1bmN0aW9uKGUpe3JldHVybmAke3R9KCR7ZX0pYH07Zm9yKGxldCB0IG9mW2BJbnQ4QXJyYXlgLGBVaW50OEFycmF5YCxgVWludDhDbGFtcGVkQXJyYXlgLGBJbnQxNkFycmF5YCxgVWludDE2QXJyYXlgLGBJbnQzMkFycmF5YCxgVWludDMyQXJyYXlgLGBGbG9hdDMyQXJyYXlgLGBGbG9hdDY0QXJyYXlgXSllLnByb3RvdHlwZVtgJGArdF09ZnVuY3Rpb24oZSl7cmV0dXJuYCR7dH1bJHtlLmpvaW4oYCxgKX1dYH07Zm9yKGxldCB0IG9mW2BCaWdJbnQ2NEFycmF5YCxgQmlnVWludDY0QXJyYXlgXSllLnByb3RvdHlwZVtgJGArdF09ZnVuY3Rpb24oZSl7cmV0dXJuYCR7dH1bJHtlLmpvaW4oYG4sYCl9JHtlLmxlbmd0aD4wP2BuYDpgYH1dYH07cmV0dXJuIGV9KSgpO2Z1bmN0aW9uIHdzKGUsdCl7cmV0dXJuIGU9PT10fHx5cyhlKT09PXlzKHQpfWZ1bmN0aW9uIFRzKGUsdD0tMS8wLG49MS8wKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heCh0LGUpKX1mdW5jdGlvbiBaKCl7bGV0IGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZihlPT1udWxsKXJldHVybiBudWxsO2Zvcig7ZSE9bnVsbCYmZS5zaGFkb3dSb290IT1udWxsJiZlLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCE9bnVsbDspZT1lLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtyZXR1cm4gZX1mdW5jdGlvbiBFcyhlLHQsbil7bGV0IHI9bi5vcmlnaW5hbEV2ZW50LnRhcmdldCxpPW5ldyBDdXN0b21FdmVudChlLHtidWJibGVzOiExLGNhbmNlbGFibGU6ITAsZGV0YWlsOm59KTt0JiZyLmFkZEV2ZW50TGlzdGVuZXIoZSx0LHtvbmNlOiEwfSksci5kaXNwYXRjaEV2ZW50KGkpfWZ1bmN0aW9uIERzKGUpe3JldHVybiBlPT1udWxsfXZhciBRPUxlKHtsYXllcnNSb290Om5ldyBTZXQsbGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQ6bmV3IFNldCxvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzOnZvaWQgMCxicmFuY2hlczpuZXcgU2V0fSk7ZnVuY3Rpb24gT3MoZSl7aWYodHlwZW9mIGUhPWBvYmplY3RgfHwhZSlyZXR1cm4hMTtsZXQgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQhPT1udWxsJiZ0IT09T2JqZWN0LnByb3RvdHlwZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpIT09bnVsbHx8U3ltYm9sLml0ZXJhdG9yIGluIGU/ITE6U3ltYm9sLnRvU3RyaW5nVGFnIGluIGU/T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT09YFtvYmplY3QgTW9kdWxlXWA6ITB9ZnVuY3Rpb24ga3MoZSx0LG49YC5gLHIpe2lmKCFPcyh0KSlyZXR1cm4ga3MoZSx7fSxuLHIpO2xldCBpPXsuLi50fTtmb3IobGV0IHQgb2YgT2JqZWN0LmtleXMoZSkpe2lmKHQ9PT1gX19wcm90b19fYHx8dD09PWBjb25zdHJ1Y3RvcmApY29udGludWU7bGV0IGE9ZVt0XTthIT1udWxsJiYociYmcihpLHQsYSxuKXx8KGlbdF09QXJyYXkuaXNBcnJheShhKSYmQXJyYXkuaXNBcnJheShpW3RdKT9bLi4uYSwuLi5pW3RdXTpPcyhhKSYmT3MoaVt0XSk/a3MoYSxpW3RdLChuP2Ake259LmA6YGApK3QudG9TdHJpbmcoKSxyKTphKSl9cmV0dXJuIGl9ZnVuY3Rpb24gQXMoZSl7cmV0dXJuKC4uLnQpPT50LnJlZHVjZSgodCxuKT0+a3ModCxuLGBgLGUpLHt9KX12YXIganM9QXMoKSxNcz1zZSgoKT0+e2xldCBlPUIobmV3IE1hcCksdD1CKCksbj1JKCgpPT57Zm9yKGxldCB0IG9mIGUudmFsdWUudmFsdWVzKCkpaWYodClyZXR1cm4hMDtyZXR1cm4hMX0pLGk9cih7c2Nyb2xsQm9keTpCKCEwKX0pLGE9bnVsbCxvPSgpPT57ZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9YGAsZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5SaWdodD1gYCxRLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU9PT0wJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPWBgKSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoYC0tc2Nyb2xsYmFyLXdpZHRoYCksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz10LnZhbHVlPz9gYCx1JiZhPy4oKSx0LnZhbHVlPXZvaWQgMH07cmV0dXJuIGwobiwoZSxyKT0+e2lmKCFmdClyZXR1cm47aWYoIWUpe3ImJm8oKTtyZXR1cm59dC52YWx1ZT09PXZvaWQgMCYmKHQudmFsdWU9ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyk7bGV0IHM9d2luZG93LmlubmVyV2lkdGgtZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGM9e3BhZGRpbmc6cyxtYXJnaW46MH0sbD1pLnNjcm9sbEJvZHk/LnZhbHVlP3R5cGVvZiBpLnNjcm9sbEJvZHkudmFsdWU9PWBvYmplY3RgP2pzKHtwYWRkaW5nOmkuc2Nyb2xsQm9keS52YWx1ZS5wYWRkaW5nPT09ITA/czppLnNjcm9sbEJvZHkudmFsdWUucGFkZGluZyxtYXJnaW46aS5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbj09PSEwP3M6aS5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbn0sYyk6Yzp7cGFkZGluZzowLG1hcmdpbjowfTtzPjAmJihkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD10eXBlb2YgbC5wYWRkaW5nPT1gbnVtYmVyYD9gJHtsLnBhZGRpbmd9cHhgOlN0cmluZyhsLnBhZGRpbmcpLGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luUmlnaHQ9dHlwZW9mIGwubWFyZ2luPT1gbnVtYmVyYD9gJHtsLm1hcmdpbn1weGA6U3RyaW5nKGwubWFyZ2luKSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYC0tc2Nyb2xsYmFyLXdpZHRoYCxgJHtzfXB4YCksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1gaGlkZGVuYCksdSYmKGE9bmUoZG9jdW1lbnQsYHRvdWNobW92ZWAsZT0+RnMoZSkse3Bhc3NpdmU6ITF9KSksQSgoKT0+e24udmFsdWUmJihkb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM9YG5vbmVgLGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9YGhpZGRlbmApfSl9LHtpbW1lZGlhdGU6ITAsZmx1c2g6YHN5bmNgfSksZX0pO2Z1bmN0aW9uIE5zKGUpe2xldCB0PU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDcpLG49TXMoKTtuLnZhbHVlLnNldCh0LGU/PyExKTtsZXQgcj1JKHtnZXQ6KCk9Pm4udmFsdWUuZ2V0KHQpPz8hMSxzZXQ6ZT0+bi52YWx1ZS5zZXQodCxlKX0pO3JldHVybiBwZSgoKT0+e24udmFsdWUuZGVsZXRlKHQpfSkscn1mdW5jdGlvbiBQcyhlKXtsZXQgdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKTtpZih0Lm92ZXJmbG93WD09PWBzY3JvbGxgfHx0Lm92ZXJmbG93WT09PWBzY3JvbGxgfHx0Lm92ZXJmbG93WD09PWBhdXRvYCYmZS5jbGllbnRXaWR0aDxlLnNjcm9sbFdpZHRofHx0Lm92ZXJmbG93WT09PWBhdXRvYCYmZS5jbGllbnRIZWlnaHQ8ZS5zY3JvbGxIZWlnaHQpcmV0dXJuITA7e2xldCB0PWUucGFyZW50Tm9kZTtyZXR1cm4hKHQgaW5zdGFuY2VvZiBFbGVtZW50KXx8dC50YWdOYW1lPT09YEJPRFlgPyExOlBzKHQpfX1mdW5jdGlvbiBGcyhlKXtsZXQgdD1lfHx3aW5kb3cuZXZlbnQsbj10LnRhcmdldDtyZXR1cm4gbiBpbnN0YW5jZW9mIEVsZW1lbnQmJlBzKG4pPyExOnQudG91Y2hlcy5sZW5ndGg+MXx8KHQucHJldmVudERlZmF1bHQmJnQuY2FuY2VsYWJsZSYmdC5wcmV2ZW50RGVmYXVsdCgpLCExKX12YXIgSXM9MDtmdW5jdGlvbiBMcygpe0woZT0+e2lmKCFmdClyZXR1cm47bGV0IHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtcmVrYS1mb2N1cy1ndWFyZF1gKTtkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudChgYWZ0ZXJiZWdpbmAsdFswXT8/UnMoKSksZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoYGJlZm9yZWVuZGAsdFsxXT8/UnMoKSksSXMrKyxlKCgpPT57SXM9PT0xJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1yZWthLWZvY3VzLWd1YXJkXWApLmZvckVhY2goZT0+ZS5yZW1vdmUoKSksSXMtLX0pfSl9ZnVuY3Rpb24gUnMoKXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBzcGFuYCk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKGBkYXRhLXJla2EtZm9jdXMtZ3VhcmRgLGBgKSxlLnRhYkluZGV4PTAsZS5zdHlsZS5vdXRsaW5lPWBub25lYCxlLnN0eWxlLm9wYWNpdHk9YDBgLGUuc3R5bGUucG9zaXRpb249YGZpeGVkYCxlLnN0eWxlLnBvaW50ZXJFdmVudHM9YG5vbmVgLGV9ZnVuY3Rpb24genMoZSl7cmV0dXJuIEkoKCk9PiFHZShlKXx8ISFEKGUpPy5jbG9zZXN0KGBmb3JtYCkpfXZhciBCcz1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PmB1YD9udWxsOihBcnJheS5pc0FycmF5KGUpP2VbMF06ZSkub3duZXJEb2N1bWVudC5ib2R5fSxWcz1uZXcgV2Vha01hcCxIcz1uZXcgV2Vha01hcCxVcz17fSxXcz0wLEdzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYoZS5ob3N0fHxHcyhlLnBhcmVudE5vZGUpKX0sS3M9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7aWYoZS5jb250YWlucyh0KSlyZXR1cm4gdDt2YXIgbj1Hcyh0KTtyZXR1cm4gbiYmZS5jb250YWlucyhuKT9uOihjb25zb2xlLmVycm9yKGBhcmlhLWhpZGRlbmAsdCxgaW4gbm90IGNvbnRhaW5lZCBpbnNpZGVgLGUsYC4gRG9pbmcgbm90aGluZ2ApLG51bGwpfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pfSxxcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1Lcyh0LEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pO1VzW25dfHwoVXNbbl09bmV3IFdlYWtNYXApO3ZhciBhPVVzW25dLG89W10scz1uZXcgU2V0LGM9bmV3IFNldChpKSxsPWZ1bmN0aW9uKGUpeyFlfHxzLmhhcyhlKXx8KHMuYWRkKGUpLGwoZS5wYXJlbnROb2RlKSl9O2kuZm9yRWFjaChsKTt2YXIgdT1mdW5jdGlvbihlKXshZXx8Yy5oYXMoZSl8fEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5jaGlsZHJlbixmdW5jdGlvbihlKXtpZihzLmhhcyhlKSl1KGUpO2Vsc2UgdHJ5e3ZhciB0PWUuZ2V0QXR0cmlidXRlKHIpLGk9dCE9PW51bGwmJnQhPT1gZmFsc2VgLGM9KFZzLmdldChlKXx8MCkrMSxsPShhLmdldChlKXx8MCkrMTtWcy5zZXQoZSxjKSxhLnNldChlLGwpLG8ucHVzaChlKSxjPT09MSYmaSYmSHMuc2V0KGUsITApLGw9PT0xJiZlLnNldEF0dHJpYnV0ZShuLGB0cnVlYCksaXx8ZS5zZXRBdHRyaWJ1dGUocixgdHJ1ZWApfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoYGFyaWEtaGlkZGVuOiBjYW5ub3Qgb3BlcmF0ZSBvbiBgLGUsdCl9fSl9O3JldHVybiB1KHQpLHMuY2xlYXIoKSxXcysrLGZ1bmN0aW9uKCl7by5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PVZzLmdldChlKS0xLGk9YS5nZXQoZSktMTtWcy5zZXQoZSx0KSxhLnNldChlLGkpLHR8fChIcy5oYXMoZSl8fGUucmVtb3ZlQXR0cmlidXRlKHIpLEhzLmRlbGV0ZShlKSksaXx8ZS5yZW1vdmVBdHRyaWJ1dGUobil9KSxXcy0tLFdzfHwoVnM9bmV3IFdlYWtNYXAsVnM9bmV3IFdlYWtNYXAsSHM9bmV3IFdlYWtNYXAsVXM9e30pfX0sSnM9ZnVuY3Rpb24oZSx0LG4pe249PT12b2lkIDAmJihuPWBkYXRhLWFyaWEtaGlkZGVuYCk7dmFyIHI9QXJyYXkuZnJvbShBcnJheS5pc0FycmF5KGUpP2U6W2VdKSxpPXR8fEJzKGUpO3JldHVybiBpPyhyLnB1c2guYXBwbHkocixBcnJheS5mcm9tKGkucXVlcnlTZWxlY3RvckFsbChgW2FyaWEtbGl2ZV0sIHNjcmlwdGApKSkscXMocixpLG4sYGFyaWEtaGlkZGVuYCkpOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBZcyhlKXtsZXQgdDtsKCgpPT5EKGUpLGU9PntsZXQgbj0hMTt0cnl7bj0hIWU/LmNsb3Nlc3QoYFtwb3BvdmVyXTpub3QoOnBvcG92ZXItb3BlbilgKX1jYXRjaHt9ZSYmIW4/dD1KcyhlKTp0JiZ0KCl9KSxrZSgoKT0+e3QmJnQoKX0pfWZ1bmN0aW9uIFhzKGUpe2xldCB0PUIoKSxuPUkoKCk9PnQudmFsdWU/LndpZHRoPz8wKSxyPUkoKCk9PnQudmFsdWU/LmhlaWdodD8/MCksaTtyZXR1cm4gdmUoKCk9PntsZXQgbj1EKGUpO24/KHQudmFsdWU9e3dpZHRoOm4ub2Zmc2V0V2lkdGgsaGVpZ2h0Om4ub2Zmc2V0SGVpZ2h0fSxpPW5ldyBSZXNpemVPYnNlcnZlcihlPT57aWYoIUFycmF5LmlzQXJyYXkoZSl8fCFlLmxlbmd0aClyZXR1cm47bGV0IHI9ZVswXSxpLGE7aWYoYGJvcmRlckJveFNpemVgaW4gcil7bGV0IGU9ci5ib3JkZXJCb3hTaXplLHQ9QXJyYXkuaXNBcnJheShlKT9lWzBdOmU7aT10LmlubGluZVNpemUsYT10LmJsb2NrU2l6ZX1lbHNlIGk9bi5vZmZzZXRXaWR0aCxhPW4ub2Zmc2V0SGVpZ2h0O3QudmFsdWU9e3dpZHRoOmksaGVpZ2h0OmF9fSksaS5vYnNlcnZlKG4se2JveDpgYm9yZGVyLWJveGB9KSk6dC52YWx1ZT12b2lkIDB9KSxrZSgoKT0+e2k/LmRpc2Nvbm5lY3QoKSxpPXZvaWQgMH0pLHt3aWR0aDpuLGhlaWdodDpyfX1mdW5jdGlvbiBacyhlLHQpe2xldCBuPUIoZSk7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdFtuLnZhbHVlXVtlXT8/bi52YWx1ZX1yZXR1cm57c3RhdGU6bixkaXNwYXRjaDplPT57bi52YWx1ZT1yKGUpfX19ZnVuY3Rpb24gUXMoZSl7bGV0IHQ9eShgYCwxZTMpO3JldHVybntzZWFyY2g6dCxoYW5kbGVUeXBlYWhlYWRTZWFyY2g6KG4scik9PntpZih0LnZhbHVlKz1uLGUpZShuKTtlbHNle2xldCBlPVooKSxuPXIubWFwKGU9Pih7Li4uZSx0ZXh0VmFsdWU6ZS52YWx1ZT8udGV4dFZhbHVlPz9lLnJlZi50ZXh0Q29udGVudD8udHJpbSgpPz9gYH0pKSxpPW4uZmluZCh0PT50LnJlZj09PWUpLGE9ZWMobi5tYXAoZT0+ZS50ZXh0VmFsdWUpLHQudmFsdWUsaT8udGV4dFZhbHVlKSxvPW4uZmluZChlPT5lLnRleHRWYWx1ZT09PWEpO3JldHVybiBvJiZvLnJlZi5mb2N1cygpLG8/LnJlZn19LHJlc2V0VHlwZWFoZWFkOigpPT57dC52YWx1ZT1gYH19fWZ1bmN0aW9uICRzKGUsdCl7cmV0dXJuIGUubWFwKChuLHIpPT5lWyh0K3IpJWUubGVuZ3RoXSl9ZnVuY3Rpb24gZWMoZSx0LG4pe2xldCByPXQubGVuZ3RoPjEmJkFycmF5LmZyb20odCkuZXZlcnkoZT0+ZT09PXRbMF0pP3RbMF06dCxpPW4/ZS5pbmRleE9mKG4pOi0xLGE9JHMoZSxNYXRoLm1heChpLDApKTtyLmxlbmd0aD09PTEmJihhPWEuZmlsdGVyKGU9PmUhPT1uKSk7bGV0IG89YS5maW5kKGU9PmUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIudG9Mb3dlckNhc2UoKSkpO3JldHVybiBvPT09bj92b2lkIDA6b31mdW5jdGlvbiB0YyhlLHQpe2xldCBuPUIoe30pLHI9Qihgbm9uZWApLGk9QihlKSxhPWUudmFsdWU/YG1vdW50ZWRgOmB1bm1vdW50ZWRgLG8scz10LnZhbHVlPy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Pz9jLHtzdGF0ZTp1LGRpc3BhdGNoOmR9PVpzKGEse21vdW50ZWQ6e1VOTU9VTlQ6YHVubW91bnRlZGAsQU5JTUFUSU9OX09VVDpgdW5tb3VudFN1c3BlbmRlZGB9LHVubW91bnRTdXNwZW5kZWQ6e01PVU5UOmBtb3VudGVkYCxBTklNQVRJT05fRU5EOmB1bm1vdW50ZWRgfSx1bm1vdW50ZWQ6e01PVU5UOmBtb3VudGVkYH19KSxmPWU9PntpZihmdCl7bGV0IG49bmV3IEN1c3RvbUV2ZW50KGUse2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMX0pO3QudmFsdWU/LmRpc3BhdGNoRXZlbnQobil9fTtsKGUsYXN5bmMoZSxpKT0+e2xldCBhPWkhPT1lO2lmKGF3YWl0IEEoKSxhKXtsZXQgYT1yLnZhbHVlLG89bmModC52YWx1ZSk7ZT8oZChgTU9VTlRgKSxmKGBlbnRlcmApLG89PT1gbm9uZWAmJmYoYGFmdGVyLWVudGVyYCkpOm89PT1gbm9uZWB8fG89PT1gdW5kZWZpbmVkYHx8bi52YWx1ZT8uZGlzcGxheT09PWBub25lYD8oZChgVU5NT1VOVGApLGYoYGxlYXZlYCksZihgYWZ0ZXItbGVhdmVgKSk6aSYmYSE9PW8/KGQoYEFOSU1BVElPTl9PVVRgKSxmKGBsZWF2ZWApKTooZChgVU5NT1VOVGApLGYoYGFmdGVyLWxlYXZlYCkpfX0se2ltbWVkaWF0ZTohMH0pO2xldCBwPWU9PntpZihlLnRhcmdldCE9PXQudmFsdWUpcmV0dXJuO2xldCBuPW5jKHQudmFsdWUpLHI9bi5pbmNsdWRlcyhDU1MuZXNjYXBlKGUuYW5pbWF0aW9uTmFtZSkpLGE9dS52YWx1ZT09PWBtb3VudGVkYD9gZW50ZXJgOmBsZWF2ZWA7aWYociYmKGYoYGFmdGVyLSR7YX1gKSxkKGBBTklNQVRJT05fRU5EYCksIWkudmFsdWUpKXtsZXQgZT10LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlO3QudmFsdWUuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGU9YGZvcndhcmRzYCxvPXM/LnNldFRpbWVvdXQoKCk9Pnt0LnZhbHVlPy5zdHlsZS5hbmltYXRpb25GaWxsTW9kZT09PWBmb3J3YXJkc2AmJih0LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPWUpfSl9bj09PWBub25lYCYmZChgQU5JTUFUSU9OX0VORGApfSxtPWU9PntlLnRhcmdldD09PXQudmFsdWUmJihyLnZhbHVlPW5jKHQudmFsdWUpKX0saD1sKHQsKGUsdCk9PntlPyhuLnZhbHVlPWdldENvbXB1dGVkU3R5bGUoZSksZS5hZGRFdmVudExpc3RlbmVyKGBhbmltYXRpb25zdGFydGAsbSksZS5hZGRFdmVudExpc3RlbmVyKGBhbmltYXRpb25jYW5jZWxgLHApLGUuYWRkRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uZW5kYCxwKSk6KGQoYEFOSU1BVElPTl9FTkRgKSxvIT09dm9pZCAwJiZzPy5jbGVhclRpbWVvdXQobyksdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uc3RhcnRgLG0pLHQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoYGFuaW1hdGlvbmNhbmNlbGAscCksdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uZW5kYCxwKSl9LHtpbW1lZGlhdGU6ITB9KSxnPWwodSwoKT0+e2xldCBlPW5jKHQudmFsdWUpO3IudmFsdWU9dS52YWx1ZT09PWBtb3VudGVkYD9lOmBub25lYH0pO3JldHVybiBrZSgoKT0+e2goKSxnKCksdC52YWx1ZSYmKHQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uc3RhcnRgLG0pLHQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uY2FuY2VsYCxwKSx0LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGFuaW1hdGlvbmVuZGAscCkpLG8hPT12b2lkIDAmJnM/LmNsZWFyVGltZW91dChvKX0pLHtpc1ByZXNlbnQ6SSgoKT0+W2Btb3VudGVkYCxgdW5tb3VudFN1c3BlbmRlZGBdLmluY2x1ZGVzKHUudmFsdWUpKX19ZnVuY3Rpb24gbmMoZSl7cmV0dXJuIGUmJmdldENvbXB1dGVkU3R5bGUoZSkuYW5pbWF0aW9uTmFtZXx8YG5vbmVgfXZhciByYz1qKHtuYW1lOmBQcmVzZW5jZWAscHJvcHM6e3ByZXNlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMH0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFufX0sc2xvdHM6e30sc2V0dXAoZSx7c2xvdHM6dCxleHBvc2U6bn0pe2xldHtwcmVzZW50OnIsZm9yY2VNb3VudDppfT0kZShlKSxhPUIoKSx7aXNQcmVzZW50Om99PXRjKHIsYSk7bih7cHJlc2VudDpvfSk7bGV0IHM9dC5kZWZhdWx0KHtwcmVzZW50Om8udmFsdWV9KTtzPUJlKHN8fFtdKTtsZXQgYz1mZSgpO2lmKHMmJnM/Lmxlbmd0aD4xKXtsZXQgZT1jPy5wYXJlbnQ/LnR5cGUubmFtZT9gPCR7Yy5wYXJlbnQudHlwZS5uYW1lfSAvPmA6YGNvbXBvbmVudGA7dGhyb3cgRXJyb3IoW2BEZXRlY3RlZCBhbiBpbnZhbGlkIGNoaWxkcmVuIGZvciBcYCR7ZX1cYCBmb3IgIFxgUHJlc2VuY2VcYCBjb21wb25lbnQuYCxgYCwiTm90ZTogUHJlc2VuY2Ugd29ya3Mgc2ltaWxhcmx5IHRvIGB2LWlmYCBkaXJlY3RseSwgYnV0IGl0IHdhaXRzIGZvciBhbmltYXRpb24vdHJhbnNpdGlvbiB0byBmaW5pc2hlZCBiZWZvcmUgdW5tb3VudGluZy4gU28gaXQgZXhwZWN0IG9ubHkgb25lIGRpcmVjdCBjaGlsZCBvZiB2YWxpZCBWTm9kZSB0eXBlLiIsYFlvdSBjYW4gYXBwbHkgYSBmZXcgc29sdXRpb25zOmAsWyJQcm92aWRlIGEgc2luZ2xlIGNoaWxkIGVsZW1lbnQgc28gdGhhdCBgcHJlc2VuY2VgIGRpcmVjdGl2ZSBhdHRhY2ggY29ycmVjdGx5LiIsYEVuc3VyZSB0aGUgZmlyc3QgY2hpbGQgaXMgYW4gYWN0dWFsIGVsZW1lbnQgaW5zdGVhZCBvZiBhIHJhdyB0ZXh0IG5vZGUgb3IgY29tbWVudCBub2RlLmBdLm1hcChlPT5gICAtICR7ZX1gKS5qb2luKGAKYCldLmpvaW4oYApgKSl9cmV0dXJuKCk9PmkudmFsdWV8fHIudmFsdWV8fG8udmFsdWU/Tyh0LmRlZmF1bHQoe3ByZXNlbnQ6by52YWx1ZX0pWzBdLHtyZWY6ZT0+e2xldCB0PUQoZSk7cmV0dXJuIHQ/Lmhhc0F0dHJpYnV0ZT09PXZvaWQgMHx8KHQ/Lmhhc0F0dHJpYnV0ZShgZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXJgKT9hLnZhbHVlPXQuZmlyc3RFbGVtZW50Q2hpbGQ6YS52YWx1ZT10KSx0fX0pOm51bGx9fSk7ZnVuY3Rpb24gaWMoKXtsZXQgZT1CKCk7cmV0dXJue3ByaW1pdGl2ZUVsZW1lbnQ6ZSxjdXJyZW50RWxlbWVudDpJKCgpPT5bYCN0ZXh0YCxgI2NvbW1lbnRgXS5pbmNsdWRlcyhlLnZhbHVlPy4kZWwubm9kZU5hbWUpP2UudmFsdWU/LiRlbC5uZXh0RWxlbWVudFNpYmxpbmc6RChlKSl9fXZhciBhYz1gZGlzbWlzc2FibGVMYXllci5wb2ludGVyRG93bk91dHNpZGVgLG9jPWBkaXNtaXNzYWJsZUxheWVyLmZvY3VzT3V0c2lkZWA7ZnVuY3Rpb24gc2MoZSx0KXtpZighKHQgaW5zdGFuY2VvZiBFbGVtZW50KSlyZXR1cm4hMTtsZXQgbj10LmNsb3Nlc3QoYFtkYXRhLWRpc21pc3NhYmxlLWxheWVyXWApLHI9ZS5kYXRhc2V0LmRpc21pc3NhYmxlTGF5ZXI9PT1gYD9lOmUucXVlcnlTZWxlY3RvcihgW2RhdGEtZGlzbWlzc2FibGUtbGF5ZXJdYCksaT1BcnJheS5mcm9tKGUub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1kaXNtaXNzYWJsZS1sYXllcl1gKSk7cmV0dXJuISEobiYmKHI9PT1ufHxpLmluZGV4T2Yocik8aS5pbmRleE9mKG4pKSl9ZnVuY3Rpb24gY2MoZSx0LG49ITApe2xldCByPXQ/LnZhbHVlPy5vd25lckRvY3VtZW50Pz9nbG9iYWxUaGlzPy5kb2N1bWVudCxpPUIoITEpLGE9QigoKT0+e30pO3JldHVybiBMKG89PntpZighZnR8fCFHZShuKSlyZXR1cm47bGV0IHM9YXN5bmMgbj0+e2xldCBvPW4udGFyZ2V0O2lmKCEoIXQ/LnZhbHVlfHwhbykpe2lmKHNjKHQudmFsdWUsbykpe2kudmFsdWU9ITE7cmV0dXJufWlmKG4udGFyZ2V0JiYhaS52YWx1ZSl7bGV0IHQ9e29yaWdpbmFsRXZlbnQ6bn07ZnVuY3Rpb24gaSgpe0VzKGFjLGUsdCl9bi5wb2ludGVyVHlwZT09PWB0b3VjaGA/KHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihgY2xpY2tgLGEudmFsdWUpLGEudmFsdWU9aSxyLmFkZEV2ZW50TGlzdGVuZXIoYGNsaWNrYCxhLnZhbHVlLHtvbmNlOiEwfSkpOmkoKX1lbHNlIHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihgY2xpY2tgLGEudmFsdWUpO2kudmFsdWU9ITF9fSxjPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT57ci5hZGRFdmVudExpc3RlbmVyKGBwb2ludGVyZG93bmAscyl9LDApO28oKCk9Pnt3aW5kb3cuY2xlYXJUaW1lb3V0KGMpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcG9pbnRlcmRvd25gLHMpLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihgY2xpY2tgLGEudmFsdWUpfSl9KSx7b25Qb2ludGVyRG93bkNhcHR1cmU6KCk9PntHZShuKSYmKGkudmFsdWU9ITApfX19ZnVuY3Rpb24gbGMoZSx0LG49ITApe2xldCByPXQ/LnZhbHVlPy5vd25lckRvY3VtZW50Pz9nbG9iYWxUaGlzPy5kb2N1bWVudCxpPUIoITEpO3JldHVybiBMKGE9PntpZighZnR8fCFHZShuKSlyZXR1cm47bGV0IG89YXN5bmMgbj0+e2lmKCF0Py52YWx1ZSlyZXR1cm47YXdhaXQgQSgpLGF3YWl0IEEoKTtsZXQgcj1uLnRhcmdldDshdC52YWx1ZXx8IXJ8fHNjKHQudmFsdWUscil8fG4udGFyZ2V0JiYhaS52YWx1ZSYmRXMob2MsZSx7b3JpZ2luYWxFdmVudDpufSl9O3IuYWRkRXZlbnRMaXN0ZW5lcihgZm9jdXNpbmAsbyksYSgoKT0+ci5yZW1vdmVFdmVudExpc3RlbmVyKGBmb2N1c2luYCxvKSl9KSx7b25Gb2N1c0NhcHR1cmU6KCk9PntHZShuKSYmKGkudmFsdWU9ITApfSxvbkJsdXJDYXB0dXJlOigpPT57R2UobikmJihpLnZhbHVlPSExKX19fXZhciB1Yz1qKHtfX25hbWU6YERpc21pc3NhYmxlTGF5ZXJgLHByb3BzOntkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHByZXNlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6W2Blc2NhcGVLZXlEb3duYCxgcG9pbnRlckRvd25PdXRzaWRlYCxgZm9jdXNPdXRzaWRlYCxgaW50ZXJhY3RPdXRzaWRlYCxgZGlzbWlzc2BdLHNldHVwKGUse2VtaXQ6bn0pe2xldCByPWUsaT1uLHtmb3J3YXJkUmVmOmEsY3VycmVudEVsZW1lbnQ6b309dCgpLHM9SSgoKT0+by52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcy5kb2N1bWVudCksYz1JKCgpPT5RLmxheWVyc1Jvb3QpLHU9SSgoKT0+by52YWx1ZT9BcnJheS5mcm9tKGMudmFsdWUpLmluZGV4T2Yoby52YWx1ZSk6LTEpLGQ9SSgoKT0+US5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplPjApLGY9SSgoKT0+e2xldCBlPUFycmF5LmZyb20oYy52YWx1ZSksW3RdPVsuLi5RLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkXS5zbGljZSgtMSksbj1lLmluZGV4T2YodCk7cmV0dXJuIHUudmFsdWU+PW59KSxtPWNjKGFzeW5jIGU9PntsZXQgdD1bLi4uUS5icmFuY2hlc10uc29tZSh0PT50Py5jb250YWlucyhlLnRhcmdldCkpOyFyLnByZXNlbnR8fCFmLnZhbHVlfHx0fHwoaShgcG9pbnRlckRvd25PdXRzaWRlYCxlKSxpKGBpbnRlcmFjdE91dHNpZGVgLGUpLGF3YWl0IEEoKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fGkoYGRpc21pc3NgKSl9LG8pLGg9bGMoZT0+e2xldCB0PVsuLi5RLmJyYW5jaGVzXS5zb21lKHQ9PnQ/LmNvbnRhaW5zKGUudGFyZ2V0KSk7IXIucHJlc2VudHx8dHx8KGkoYGZvY3VzT3V0c2lkZWAsZSksaShgaW50ZXJhY3RPdXRzaWRlYCxlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fGkoYGRpc21pc3NgKSl9LG8pO3JldHVybiB6ZShgRXNjYXBlYCxlPT57ci5wcmVzZW50JiZ1LnZhbHVlPT09Yy52YWx1ZS5zaXplLTEmJihpKGBlc2NhcGVLZXlEb3duYCxlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fGkoYGRpc21pc3NgKSl9KSxsKFtvLCgpPT5yLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cywoKT0+ci5wcmVzZW50XSwoW2UsdCxuXSxyLGkpPT57IWV8fCFufHx0JiYoUS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplPT09MCYmKFEub3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cz1zLnZhbHVlLmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cyxzLnZhbHVlLmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cz1gbm9uZWApLFEubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuYWRkKGUpLGkoKCk9PntRLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmRlbGV0ZShlKSxRLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU9PT0wJiYhRHMoUS5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzKSYmKHMudmFsdWUuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPVEub3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cyl9KSl9LHtpbW1lZGlhdGU6ITB9KSxsKFtvLCgpPT5yLnByZXNlbnRdLChbZSx0XSxuLHIpPT57IWV8fCF0fHwoYy52YWx1ZS5hZGQoZSkscigoKT0+e2MudmFsdWUuZGVsZXRlKGUpfSkpfSx7aW1tZWRpYXRlOiEwfSksTChlPT57ZSgoKT0+e28udmFsdWUmJihjLnZhbHVlLmRlbGV0ZShvLnZhbHVlKSxRLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmRlbGV0ZShvLnZhbHVlKSl9KX0pLChlLHQpPT4oeigpLFYoUChwKSx7cmVmOlAoYSksImFzLWNoaWxkIjplLmFzQ2hpbGQsYXM6ZS5hcywiZGF0YS1kaXNtaXNzYWJsZS1sYXllciI6YGAsc3R5bGU6dXQoe3BvaW50ZXJFdmVudHM6ZC52YWx1ZT9mLnZhbHVlP2BhdXRvYDpgbm9uZWA6dm9pZCAwfSksb25Gb2N1c0NhcHR1cmU6UChoKS5vbkZvY3VzQ2FwdHVyZSxvbkJsdXJDYXB0dXJlOlAoaCkub25CbHVyQ2FwdHVyZSxvblBvaW50ZXJkb3duQ2FwdHVyZTpQKG0pLm9uUG9pbnRlckRvd25DYXB0dXJlfSx7ZGVmYXVsdDpfKCgpPT5bUihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgYXMtY2hpbGRgLGBhc2AsYHN0eWxlYCxgb25Gb2N1c0NhcHR1cmVgLGBvbkJsdXJDYXB0dXJlYCxgb25Qb2ludGVyZG93bkNhcHR1cmVgXSkpfX0pLGRjPUUoKCk9PkIoW10pKTtmdW5jdGlvbiBmYygpe2xldCBlPWRjKCk7cmV0dXJue2FkZCh0KXtsZXQgbj1lLnZhbHVlWzBdO3QhPT1uJiZuPy5wYXVzZSgpLGUudmFsdWU9cGMoZS52YWx1ZSx0KSxlLnZhbHVlLnVuc2hpZnQodCl9LHJlbW92ZSh0KXtlLnZhbHVlPXBjKGUudmFsdWUsdCksZS52YWx1ZVswXT8ucmVzdW1lKCl9fX1mdW5jdGlvbiBwYyhlLHQpe2xldCBuPVsuLi5lXSxyPW4uaW5kZXhPZih0KTtyZXR1cm4gciE9PS0xJiZuLnNwbGljZShyLDEpLG59dmFyIG1jPWBmb2N1c1Njb3BlLmF1dG9Gb2N1c09uTW91bnRgLGhjPWBmb2N1c1Njb3BlLmF1dG9Gb2N1c09uVW5tb3VudGAsZ2M9e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMH07ZnVuY3Rpb24gX2MoZSx7c2VsZWN0OnQ9ITF9PXt9KXtsZXQgbj1aKCk7Zm9yKGxldCByIG9mIGUpaWYoQ2Mocix7c2VsZWN0OnR9KSxaKCkhPT1uKXJldHVybiEwfWZ1bmN0aW9uIHZjKGUpe2xldCB0PXljKGUpO3JldHVybltiYyh0LGUpLGJjKHQucmV2ZXJzZSgpLGUpXX1mdW5jdGlvbiB5YyhlKXtsZXQgdD1bXSxuPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCx7YWNjZXB0Tm9kZTplPT57bGV0IHQ9ZS50YWdOYW1lPT09YElOUFVUYCYmZS50eXBlPT09YGhpZGRlbmA7cmV0dXJuIGUuZGlzYWJsZWR8fGUuaGlkZGVufHx0P05vZGVGaWx0ZXIuRklMVEVSX1NLSVA6ZS50YWJJbmRleD49MD9Ob2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ6Tm9kZUZpbHRlci5GSUxURVJfU0tJUH19KTtmb3IoO24ubmV4dE5vZGUoKTspdC5wdXNoKG4uY3VycmVudE5vZGUpO3JldHVybiB0fWZ1bmN0aW9uIGJjKGUsdCl7Zm9yKGxldCBuIG9mIGUpaWYoIXhjKG4se3VwVG86dH0pKXJldHVybiBufWZ1bmN0aW9uIHhjKGUse3VwVG86dH0pe2lmKGdldENvbXB1dGVkU3R5bGUoZSkudmlzaWJpbGl0eT09PWBoaWRkZW5gKXJldHVybiEwO2Zvcig7ZTspe2lmKHQhPT12b2lkIDAmJmU9PT10KXJldHVybiExO2lmKGdldENvbXB1dGVkU3R5bGUoZSkuZGlzcGxheT09PWBub25lYClyZXR1cm4hMDtlPWUucGFyZW50RWxlbWVudH1yZXR1cm4hMX1mdW5jdGlvbiBTYyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQmJmBzZWxlY3RgaW4gZX1mdW5jdGlvbiBDYyhlLHtzZWxlY3Q6dD0hMX09e30pe2lmKGUmJmUuZm9jdXMpe2xldCBuPVooKTtlLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksZSE9PW4mJlNjKGUpJiZ0JiZlLnNlbGVjdCgpfX12YXIgd2M9aih7X19uYW1lOmBGb2N1c1Njb3BlYCxwcm9wczp7bG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHRyYXBwZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxwcmVzZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2Btb3VudEF1dG9Gb2N1c2AsYHVubW91bnRBdXRvRm9jdXNgXSxzZXR1cChlLHtlbWl0Om59KXtsZXQgcj1lLGk9bix7Y3VycmVudFJlZjphLGN1cnJlbnRFbGVtZW50Om99PXQoKSxzPUIobnVsbCksYz1mYygpLHU9TGUoe3BhdXNlZDohMSxwYXVzZSgpe3RoaXMucGF1c2VkPSEwfSxyZXN1bWUoKXt0aGlzLnBhdXNlZD0hMX19KTtMKGU9PntpZighZnQpcmV0dXJuO2xldCB0PW8udmFsdWU7aWYoIXIudHJhcHBlZClyZXR1cm47ZnVuY3Rpb24gbihlKXtpZih1LnBhdXNlZHx8IXQpcmV0dXJuO2xldCBuPWUudGFyZ2V0O3QuY29udGFpbnMobik/cy52YWx1ZT1uOkNjKHMudmFsdWUse3NlbGVjdDohMH0pfWZ1bmN0aW9uIGkoZSl7aWYodS5wYXVzZWR8fCF0KXJldHVybjtsZXQgbj1lLnJlbGF0ZWRUYXJnZXQ7biE9PW51bGwmJih0LmNvbnRhaW5zKG4pfHxDYyhzLnZhbHVlLHtzZWxlY3Q6ITB9KSl9ZnVuY3Rpb24gYShlKXtsZXQgbj1zLnZhbHVlO24hPT1udWxsJiZlLnNvbWUoZT0+ZS5yZW1vdmVkTm9kZXMubGVuZ3RoPjApJiYodC5jb250YWlucyhuKXx8Q2ModCkpfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYGZvY3VzaW5gLG4pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYGZvY3Vzb3V0YCxpKTtsZXQgYz1uZXcgTXV0YXRpb25PYnNlcnZlcihhKTt0JiZjLm9ic2VydmUodCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSxlKCgpPT57ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgZm9jdXNpbmAsbiksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgZm9jdXNvdXRgLGkpLGMuZGlzY29ubmVjdCgpfSl9KTtmdW5jdGlvbiBkKGUsdCl7bGV0IG49bmV3IEN1c3RvbUV2ZW50KG1jLGdjKSxyPWU9PmkoYG1vdW50QXV0b0ZvY3VzYCxlKTtlLmFkZEV2ZW50TGlzdGVuZXIobWMsciksZS5kaXNwYXRjaEV2ZW50KG4pLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihtYyxyKSxuLmRlZmF1bHRQcmV2ZW50ZWR8fChfYyh5YyhlKSx7c2VsZWN0OiEwfSksWigpPT09dCYmQ2MoZSkpfUwoYXN5bmMgZT0+e2xldCB0PW8udmFsdWU7aWYoYXdhaXQgQSgpLCF0KXJldHVybjtyLnByZXNlbnQhPT0hMSYmYy5hZGQodSk7bGV0IG49WigpOyF0LmNvbnRhaW5zKG4pJiZyLnByZXNlbnQhPT0hMSYmZCh0LG4pLGUoKCk9PntsZXQgZT1uZXcgQ3VzdG9tRXZlbnQoaGMsZ2MpLHI9ZT0+e2koYHVubW91bnRBdXRvRm9jdXNgLGUpfTt0LmFkZEV2ZW50TGlzdGVuZXIoaGMsciksdC5kaXNwYXRjaEV2ZW50KGUpLHQuc2V0QXR0cmlidXRlKGBkYXRhLWZvY3VzLXNjb3BlLXVubW91bnRpbmdgLGBgKSxzZXRUaW1lb3V0KCgpPT57ZS5kZWZhdWx0UHJldmVudGVkfHxDYyhuPz9kb2N1bWVudC5ib2R5LHtzZWxlY3Q6ITB9KSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoaGMsciksYy5yZW1vdmUodSksdC5yZW1vdmVBdHRyaWJ1dGUoYGRhdGEtZm9jdXMtc2NvcGUtdW5tb3VudGluZ2ApfSwwKX0pfSksbCgoKT0+ci5wcmVzZW50LGFzeW5jKGUsdCk9PntpZighZnQpcmV0dXJuO2lmKGU9PT0hMSYmdD09PSEwKXtjLnJlbW92ZSh1KTtyZXR1cm59aWYoZSE9PSEwfHx0IT09ITEpcmV0dXJuO2MuYWRkKHUpLGF3YWl0IEEoKTtsZXQgbj1vLnZhbHVlO2lmKCFuKXJldHVybjtsZXQgcj1aKCk7bi5jb250YWlucyhyKXx8ZChuLHIpfSk7ZnVuY3Rpb24gZihlKXtpZighci5sb29wJiYhci50cmFwcGVkfHx1LnBhdXNlZClyZXR1cm47bGV0IHQ9ZS5rZXk9PT1gVGFiYCYmIWUuYWx0S2V5JiYhZS5jdHJsS2V5JiYhZS5tZXRhS2V5LG49WigpO2lmKHQmJm4pe2xldCB0PWUuY3VycmVudFRhcmdldCxbaSxhXT12Yyh0KTtpJiZhPyFlLnNoaWZ0S2V5JiZuPT09YT8oZS5wcmV2ZW50RGVmYXVsdCgpLHIubG9vcCYmQ2MoaSx7c2VsZWN0OiEwfSkpOmUuc2hpZnRLZXkmJm49PT1pJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHIubG9vcCYmQ2MoYSx7c2VsZWN0OiEwfSkpOm49PT10JiZlLnByZXZlbnREZWZhdWx0KCl9fXJldHVybihlLHQpPT4oeigpLFYoUChwKSx7cmVmX2tleTpgY3VycmVudFJlZmAscmVmOmEsdGFiaW5kZXg6YC0xYCwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzLG9uS2V5ZG93bjpmfSx7ZGVmYXVsdDpfKCgpPT5bUihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgYXMtY2hpbGRgLGBhc2BdKSl9fSksVGM9W2BFbnRlcmAsYCBgXSxFYz1bYEFycm93RG93bmAsYFBhZ2VVcGAsYEhvbWVgXSxEYz1bYEFycm93VXBgLGBQYWdlRG93bmAsYEVuZGBdO1suLi5FYywuLi5EY10sWy4uLlRjXSxbLi4uVGNdO2Z1bmN0aW9uIE9jKGUpe2xldCB0PVooKTtmb3IobGV0IG4gb2YgZSlpZihuPT09dHx8KG4uZm9jdXMoKSxaKCkhPT10KSlyZXR1cm59dmFyIGtjPWooe19fbmFtZTpgVGVsZXBvcnRgLHByb3BzOnt0bzp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZlcjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtsZXQgdD1lLG49cih7fSksaT1JKCgpPT50LnRvPz9uLnRlbGVwb3J0VG8/LnZhbHVlPz9gYm9keWApLGE9aWUoKTtyZXR1cm4oZSx0KT0+UChhKXx8ZS5mb3JjZU1vdW50Pyh6KCksVihvZSx7a2V5OjAsdG86aS52YWx1ZSxkaXNhYmxlZDplLmRpc2FibGVkLGRlZmVyOmUuZGVmZXJ9LFtSKGUuJHNsb3RzLGBkZWZhdWx0YCldLDgsW2B0b2AsYGRpc2FibGVkYCxgZGVmZXJgXSkpOkgoYHYtaWZgLCEwKX19KSxBYz1gZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbWA7ZnVuY3Rpb24gamMoZT17fSl7bGV0e2tleTp0PWBgLGlzUHJvdmlkZXI6bj0hMX09ZSxyPWAke3R9Q29sbGVjdGlvblByb3ZpZGVyYCxpO2lmKG4pe2xldCBlPUIobmV3IE1hcCk7aT17Y29sbGVjdGlvblJlZjpCKCksaXRlbU1hcDplfSxSZShyLGkpfWVsc2UgaT1DKHIpO2xldCBhPShlPSExKT0+e2xldCB0PWkuY29sbGVjdGlvblJlZi52YWx1ZTtpZighdClyZXR1cm5bXTtsZXQgbj1BcnJheS5mcm9tKHQucXVlcnlTZWxlY3RvckFsbChgWyR7QWN9XWApKSxyPW5ldyBNYXAobi5tYXAoKGUsdCk9PltlLHRdKSksYT1BcnJheS5mcm9tKGkuaXRlbU1hcC52YWx1ZS52YWx1ZXMoKSkuc29ydCgoZSx0KT0+KHIuZ2V0KGUucmVmKT8/LTEpLShyLmdldCh0LnJlZik/Py0xKSk7cmV0dXJuIGU/YTphLmZpbHRlcihlPT5lLnJlZi5kYXRhc2V0LmRpc2FibGVkIT09YGApfSxvPWooe25hbWU6YENvbGxlY3Rpb25TbG90YCxpbmhlcml0QXR0cnM6ITEsc2V0dXAoZSx7c2xvdHM6dCxhdHRyczpufSl7bGV0e3ByaW1pdGl2ZUVsZW1lbnQ6cixjdXJyZW50RWxlbWVudDphfT1pYygpO3JldHVybiBsKGEsKCk9PntpLmNvbGxlY3Rpb25SZWYudmFsdWU9YS52YWx1ZX0pLCgpPT5PKHJlLHtyZWY6ciwuLi5ufSx0KX19KSxzPWooe25hbWU6YENvbGxlY3Rpb25JdGVtYCxpbmhlcml0QXR0cnM6ITEscHJvcHM6e3ZhbHVlOnt2YWxpZGF0b3I6KCk9PiEwfX0sc2V0dXAoZSx7c2xvdHM6dCxhdHRyczpufSl7bGV0e3ByaW1pdGl2ZUVsZW1lbnQ6cixjdXJyZW50RWxlbWVudDphfT1pYygpO3JldHVybiBMKHQ9PntpZihhLnZhbHVlKXtsZXQgbj1PZShhLnZhbHVlKTtpLml0ZW1NYXAudmFsdWUuc2V0KG4se3JlZjphLnZhbHVlLHZhbHVlOmUudmFsdWV9KSx0KCgpPT5pLml0ZW1NYXAudmFsdWUuZGVsZXRlKG4pKX19KSwoKT0+TyhyZSx7Li4ubixbQWNdOmBgLHJlZjpyfSx0KX19KTtyZXR1cm57Z2V0SXRlbXM6YSxyZWFjdGl2ZUl0ZW1zOkkoKCk9PkFycmF5LmZyb20oaS5pdGVtTWFwLnZhbHVlLnZhbHVlcygpKSksaXRlbU1hcFNpemU6SSgoKT0+aS5pdGVtTWFwLnZhbHVlLnNpemUpLENvbGxlY3Rpb25TbG90Om8sQ29sbGVjdGlvbkl0ZW06c319dmFyIE1jPWooe19fbmFtZTpgVmlzdWFsbHlIaWRkZW5gLHByb3BzOntmZWF0dXJlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OmBmb2N1c2FibGVgfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgc3BhbmB9fSxzZXR1cChlKXtyZXR1cm4oZSx0KT0+KHooKSxWKFAocCkse2FzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImFyaWEtaGlkZGVuIjplLmZlYXR1cmU9PT1gZm9jdXNhYmxlYHx8ZS5mZWF0dXJlPT09YGZ1bGx5LWhpZGRlbmA/YHRydWVgOnZvaWQgMCwiZGF0YS1oaWRkZW4iOmUuZmVhdHVyZT09PWBmdWxseS1oaWRkZW5gP2BgOnZvaWQgMCx0YWJpbmRleDplLmZlYXR1cmU9PT1gZnVsbHktaGlkZGVuYD9gLTFgOnZvaWQgMCxzdHlsZTp7cG9zaXRpb246YGFic29sdXRlYCxib3JkZXI6MCx3aWR0aDpgMXB4YCxoZWlnaHQ6YDFweGAscGFkZGluZzowLG1hcmdpbjpgLTFweGAsb3ZlcmZsb3c6YGhpZGRlbmAsY2xpcDpgcmVjdCgwLCAwLCAwLCAwKWAsY2xpcFBhdGg6YGluc2V0KDUwJSlgLHdoaXRlU3BhY2U6YG5vd3JhcGAsd29yZFdyYXA6YG5vcm1hbGAsdG9wOmAtMXB4YCxsZWZ0OmAtMXB4YH19LHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhc2AsYGFzLWNoaWxkYCxgYXJpYS1oaWRkZW5gLGBkYXRhLWhpZGRlbmAsYHRhYmluZGV4YF0pKX19KSxbTmMsUGNdPWEoYFBvcHBlclJvb3RgKSxGYz1qKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBQb3BwZXJSb290YCxzZXR1cChlKXtsZXQgdD1CKCk7cmV0dXJuIFBjKHthbmNob3I6dCxvbkFuY2hvckNoYW5nZTplPT50LnZhbHVlPWV9KSwoZSx0KT0+UihlLiRzbG90cyxgZGVmYXVsdGApfX0pLEljPWooe19fbmFtZTpgUG9wcGVyQW5jaG9yYCxwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCBuPWUse2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDppfT10KCksYT1OYygpO3JldHVybiB0ZSgoKT0+e2Eub25BbmNob3JDaGFuZ2Uobi5yZWZlcmVuY2U/P2kudmFsdWUpfSksKGUsdCk9Pih6KCksVihQKHApLHtyZWY6UChyKSxhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkfSx7ZGVmYXVsdDpfKCgpPT5bUihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgYXNgLGBhcy1jaGlsZGBdKSl9fSk7ZnVuY3Rpb24gTGMoZSl7cmV0dXJuIGUhPT1udWxsfWZ1bmN0aW9uIFJjKGUpe3JldHVybntuYW1lOmB0cmFuc2Zvcm1PcmlnaW5gLG9wdGlvbnM6ZSxmbih0KXtsZXR7cGxhY2VtZW50Om4scmVjdHM6cixtaWRkbGV3YXJlRGF0YTppfT10LGE9aS5hcnJvdz8uY2VudGVyT2Zmc2V0IT09MCxvPWE/MDplLmFycm93V2lkdGgscz1hPzA6ZS5hcnJvd0hlaWdodCxbYyxsXT16YyhuKSx1PXtzdGFydDplLmRpcj09PWBydGxgP2AxMDAlYDpgMCVgLGNlbnRlcjpgNTAlYCxlbmQ6ZS5kaXI9PT1gcnRsYD9gMCVgOmAxMDAlYH1bbF0sZD17c3RhcnQ6YDAlYCxjZW50ZXI6YDUwJWAsZW5kOmAxMDAlYH1bbF0sZj0oaS5hcnJvdz8ueD8/MCkrby8yLHA9KGkuYXJyb3c/Lnk/PzApK3MvMixtPWBgLGg9YGA7cmV0dXJuIGM9PT1gYm90dG9tYD8obT1hP3U6YCR7Zn1weGAsaD1gJHstc31weGApOmM9PT1gdG9wYD8obT1hP3U6YCR7Zn1weGAsaD1gJHtyLmZsb2F0aW5nLmhlaWdodCtzfXB4YCk6Yz09PWByaWdodGA/KG09YCR7LXN9cHhgLGg9YT9kOmAke3B9cHhgKTpjPT09YGxlZnRgJiYobT1gJHtyLmZsb2F0aW5nLndpZHRoK3N9cHhgLGg9YT9kOmAke3B9cHhgKSx7ZGF0YTp7eDptLHk6aH19fX19ZnVuY3Rpb24gemMoZSl7bGV0W3Qsbj1gY2VudGVyYF09ZS5zcGxpdChgLWApO3JldHVyblt0LG5dfXZhciBCYz1bYHRvcGAsYHJpZ2h0YCxgYm90dG9tYCxgbGVmdGBdLFZjPU1hdGgubWluLEhjPU1hdGgubWF4LFVjPU1hdGgucm91bmQsV2M9TWF0aC5mbG9vcixHYz1lPT4oe3g6ZSx5OmV9KSxLYz17bGVmdDpgcmlnaHRgLHJpZ2h0OmBsZWZ0YCxib3R0b206YHRvcGAsdG9wOmBib3R0b21gfTtmdW5jdGlvbiBxYyhlLHQsbil7cmV0dXJuIEhjKGUsVmModCxuKSl9ZnVuY3Rpb24gSmMoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PWBmdW5jdGlvbmA/ZSh0KTplfWZ1bmN0aW9uIFljKGUpe3JldHVybiBlLnNwbGl0KGAtYClbMF19ZnVuY3Rpb24gWGMoZSl7cmV0dXJuIGUuc3BsaXQoYC1gKVsxXX1mdW5jdGlvbiBaYyhlKXtyZXR1cm4gZT09PWB4YD9geWA6YHhgfWZ1bmN0aW9uIFFjKGUpe3JldHVybiBlPT09YHlgP2BoZWlnaHRgOmB3aWR0aGB9ZnVuY3Rpb24gJGMoZSl7bGV0IHQ9ZVswXTtyZXR1cm4gdD09PWB0YHx8dD09PWBiYD9geWA6YHhgfWZ1bmN0aW9uIGVsKGUpe3JldHVybiBaYygkYyhlKSl9ZnVuY3Rpb24gdGwoZSx0LG4pe249PT12b2lkIDAmJihuPSExKTtsZXQgcj1YYyhlKSxpPWVsKGUpLGE9UWMoaSksbz1pPT09YHhgP3I9PT0obj9gZW5kYDpgc3RhcnRgKT9gcmlnaHRgOmBsZWZ0YDpyPT09YHN0YXJ0YD9gYm90dG9tYDpgdG9wYDtyZXR1cm4gdC5yZWZlcmVuY2VbYV0+dC5mbG9hdGluZ1thXSYmKG89dWwobykpLFtvLHVsKG8pXX1mdW5jdGlvbiBubChlKXtsZXQgdD11bChlKTtyZXR1cm5bcmwoZSksdCxybCh0KV19ZnVuY3Rpb24gcmwoZSl7cmV0dXJuIGUuaW5jbHVkZXMoYHN0YXJ0YCk/ZS5yZXBsYWNlKGBzdGFydGAsYGVuZGApOmUucmVwbGFjZShgZW5kYCxgc3RhcnRgKX12YXIgaWw9W2BsZWZ0YCxgcmlnaHRgXSxhbD1bYHJpZ2h0YCxgbGVmdGBdLG9sPVtgdG9wYCxgYm90dG9tYF0sc2w9W2Bib3R0b21gLGB0b3BgXTtmdW5jdGlvbiBjbChlLHQsbil7c3dpdGNoKGUpe2Nhc2VgdG9wYDpjYXNlYGJvdHRvbWA6cmV0dXJuIG4/dD9hbDppbDp0P2lsOmFsO2Nhc2VgbGVmdGA6Y2FzZWByaWdodGA6cmV0dXJuIHQ/b2w6c2w7ZGVmYXVsdDpyZXR1cm5bXX19ZnVuY3Rpb24gbGwoZSx0LG4scil7bGV0IGk9WGMoZSksYT1jbChZYyhlKSxuPT09YHN0YXJ0YCxyKTtyZXR1cm4gaSYmKGE9YS5tYXAoZT0+ZStgLWAraSksdCYmKGE9YS5jb25jYXQoYS5tYXAocmwpKSkpLGF9ZnVuY3Rpb24gdWwoZSl7bGV0IHQ9WWMoZSk7cmV0dXJuIEtjW3RdK2Uuc2xpY2UodC5sZW5ndGgpfWZ1bmN0aW9uIGRsKGUpe3JldHVybnt0b3A6ZS50b3A/PzAscmlnaHQ6ZS5yaWdodD8/MCxib3R0b206ZS5ib3R0b20/PzAsbGVmdDplLmxlZnQ/PzB9fWZ1bmN0aW9uIGZsKGUpe3JldHVybiB0eXBlb2YgZT09YG51bWJlcmA/e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfTpkbChlKX1mdW5jdGlvbiBwbChlKXtsZXR7eDp0LHk6bix3aWR0aDpyLGhlaWdodDppfT1lO3JldHVybnt3aWR0aDpyLGhlaWdodDppLHRvcDpuLGxlZnQ6dCxyaWdodDp0K3IsYm90dG9tOm4raSx4OnQseTpufX1mdW5jdGlvbiBtbChlLHQsbil7bGV0e3JlZmVyZW5jZTpyLGZsb2F0aW5nOml9PWUsYT0kYyh0KSxvPWVsKHQpLHM9UWMobyksYz1ZYyh0KSxsPWE9PT1geWAsdT1yLngrci53aWR0aC8yLWkud2lkdGgvMixkPXIueStyLmhlaWdodC8yLWkuaGVpZ2h0LzIsZj1yW3NdLzItaVtzXS8yLHA7c3dpdGNoKGMpe2Nhc2VgdG9wYDpwPXt4OnUseTpyLnktaS5oZWlnaHR9O2JyZWFrO2Nhc2VgYm90dG9tYDpwPXt4OnUseTpyLnkrci5oZWlnaHR9O2JyZWFrO2Nhc2VgcmlnaHRgOnA9e3g6ci54K3Iud2lkdGgseTpkfTticmVhaztjYXNlYGxlZnRgOnA9e3g6ci54LWkud2lkdGgseTpkfTticmVhaztkZWZhdWx0OnA9e3g6ci54LHk6ci55fX1sZXQgbT1YYyh0KTtyZXR1cm4gbSYmKHBbb10rPWYqKG09PT1gZW5kYD8xOi0xKSoobiYmbD8tMToxKSkscH1hc3luYyBmdW5jdGlvbiBobChlLHQpe3Q9PT12b2lkIDAmJih0PXt9KTtsZXR7eDpuLHk6cixwbGF0Zm9ybTppLHJlY3RzOmEsZWxlbWVudHM6byxzdHJhdGVneTpzfT1lLHtib3VuZGFyeTpjPWBjbGlwcGluZ0FuY2VzdG9yc2Ascm9vdEJvdW5kYXJ5Omw9YHZpZXdwb3J0YCxlbGVtZW50Q29udGV4dDp1PWBmbG9hdGluZ2AsYWx0Qm91bmRhcnk6ZD0hMSxwYWRkaW5nOmY9MH09SmModCxlKSxwPWZsKGYpLG09b1tkP3U9PT1gZmxvYXRpbmdgP2ByZWZlcmVuY2VgOmBmbG9hdGluZ2A6dV0saD1wbChhd2FpdCBpLmdldENsaXBwaW5nUmVjdCh7ZWxlbWVudDphd2FpdChpLmlzRWxlbWVudD09bnVsbD92b2lkIDA6aS5pc0VsZW1lbnQobSkpPz8hMD9tOm0uY29udGV4dEVsZW1lbnR8fGF3YWl0KGkuZ2V0RG9jdW1lbnRFbGVtZW50PT1udWxsP3ZvaWQgMDppLmdldERvY3VtZW50RWxlbWVudChvLmZsb2F0aW5nKSksYm91bmRhcnk6Yyxyb290Qm91bmRhcnk6bCxzdHJhdGVneTpzfSkpLGc9dT09PWBmbG9hdGluZ2A/e3g6bix5OnIsd2lkdGg6YS5mbG9hdGluZy53aWR0aCxoZWlnaHQ6YS5mbG9hdGluZy5oZWlnaHR9OmEucmVmZXJlbmNlLF89YXdhaXQoaS5nZXRPZmZzZXRQYXJlbnQ9PW51bGw/dm9pZCAwOmkuZ2V0T2Zmc2V0UGFyZW50KG8uZmxvYXRpbmcpKSx2PWF3YWl0KGkuaXNFbGVtZW50PT1udWxsP3ZvaWQgMDppLmlzRWxlbWVudChfKSkmJmF3YWl0KGkuZ2V0U2NhbGU9PW51bGw/dm9pZCAwOmkuZ2V0U2NhbGUoXykpfHx7eDoxLHk6MX0seT1wbChpLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IGkuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOm8scmVjdDpnLG9mZnNldFBhcmVudDpfLHN0cmF0ZWd5OnN9KTpnKTtyZXR1cm57dG9wOihoLnRvcC15LnRvcCtwLnRvcCkvdi55LGJvdHRvbTooeS5ib3R0b20taC5ib3R0b20rcC5ib3R0b20pL3YueSxsZWZ0OihoLmxlZnQteS5sZWZ0K3AubGVmdCkvdi54LHJpZ2h0Oih5LnJpZ2h0LWgucmlnaHQrcC5yaWdodCkvdi54fX12YXIgZ2w9NTAsX2w9YXN5bmMoZSx0LG4pPT57bGV0e3BsYWNlbWVudDpyPWBib3R0b21gLHN0cmF0ZWd5Omk9YGFic29sdXRlYCxtaWRkbGV3YXJlOmE9W10scGxhdGZvcm06b309bixzPW8uZGV0ZWN0T3ZlcmZsb3c/bzp7Li4ubyxkZXRlY3RPdmVyZmxvdzpobH0sYz1hd2FpdChvLmlzUlRMPT1udWxsP3ZvaWQgMDpvLmlzUlRMKHQpKSxsPWF3YWl0IG8uZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Oml9KSx7eDp1LHk6ZH09bWwobCxyLGMpLGY9cixwPTAsbT17fTtmb3IobGV0IG49MDtuPGEubGVuZ3RoO24rKyl7bGV0IGg9YVtuXTtpZighaCljb250aW51ZTtsZXR7bmFtZTpnLGZuOl99PWgse3g6dix5LGRhdGE6YixyZXNldDp4fT1hd2FpdCBfKHt4OnUseTpkLGluaXRpYWxQbGFjZW1lbnQ6cixwbGFjZW1lbnQ6ZixzdHJhdGVneTppLG1pZGRsZXdhcmVEYXRhOm0scmVjdHM6bCxwbGF0Zm9ybTpzLGVsZW1lbnRzOntyZWZlcmVuY2U6ZSxmbG9hdGluZzp0fX0pO3U9dj8/dSxkPXk/P2QsbVtnXT17Li4ubVtnXSwuLi5ifSx4JiZwPGdsJiYocCsrLHR5cGVvZiB4PT1gb2JqZWN0YCYmKHgucGxhY2VtZW50JiYoZj14LnBsYWNlbWVudCkseC5yZWN0cyYmKGw9eC5yZWN0cz09PSEwP2F3YWl0IG8uZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Oml9KTp4LnJlY3RzKSx7eDp1LHk6ZH09bWwobCxmLGMpKSxuPS0xKX1yZXR1cm57eDp1LHk6ZCxwbGFjZW1lbnQ6ZixzdHJhdGVneTppLG1pZGRsZXdhcmVEYXRhOm19fSx2bD1lPT4oe25hbWU6YGFycm93YCxvcHRpb25zOmUsYXN5bmMgZm4odCl7bGV0e3g6bix5OnIscGxhY2VtZW50OmkscmVjdHM6YSxwbGF0Zm9ybTpvLGVsZW1lbnRzOnMsbWlkZGxld2FyZURhdGE6Y309dCx7ZWxlbWVudDpsLHBhZGRpbmc6dT0wfT1KYyhlLHQpfHx7fTtpZihsPT1udWxsKXJldHVybnt9O2xldCBkPWZsKHUpLGY9e3g6bix5OnJ9LHA9ZWwoaSksbT1RYyhwKSxoPWF3YWl0IG8uZ2V0RGltZW5zaW9ucyhsKSxnPXA9PT1geWAsXz1nP2B0b3BgOmBsZWZ0YCx2PWc/YGJvdHRvbWA6YHJpZ2h0YCx5PWc/YGNsaWVudEhlaWdodGA6YGNsaWVudFdpZHRoYCxiPWEucmVmZXJlbmNlW21dK2EucmVmZXJlbmNlW3BdLWZbcF0tYS5mbG9hdGluZ1ttXSx4PWZbcF0tYS5yZWZlcmVuY2VbcF0sUz1hd2FpdChvLmdldE9mZnNldFBhcmVudD09bnVsbD92b2lkIDA6by5nZXRPZmZzZXRQYXJlbnQobCkpLEM9Uz9TW3ldOjA7KCFDfHwhYXdhaXQoby5pc0VsZW1lbnQ9PW51bGw/dm9pZCAwOm8uaXNFbGVtZW50KFMpKSkmJihDPXMuZmxvYXRpbmdbeV18fGEuZmxvYXRpbmdbbV0pO2xldCB3PWIvMi14LzIsVD1DLzItaFttXS8yLTEsRT1WYyhkW19dLFQpLGVlPVZjKGRbdl0sVCksRD1DLWhbbV0tZWUsdGU9Qy8yLWhbbV0vMit3LG5lPXFjKEUsdGUsRCkscmU9IWMuYXJyb3cmJlhjKGkpIT1udWxsJiZ0ZSE9PW5lJiZhLnJlZmVyZW5jZVttXS8yLSh0ZTxFP0U6ZWUpLWhbbV0vMjwwLE89cmU/dGU8RT90ZS1FOnRlLUQ6MDtyZXR1cm57W3BdOmZbcF0rTyxkYXRhOntbcF06bmUsY2VudGVyT2Zmc2V0OnRlLW5lLU8sLi4ucmUmJnthbGlnbm1lbnRPZmZzZXQ6T319LHJlc2V0OnJlfX19KSx5bD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOmBmbGlwYCxvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG47bGV0e3BsYWNlbWVudDpyLG1pZGRsZXdhcmVEYXRhOmkscmVjdHM6YSxpbml0aWFsUGxhY2VtZW50Om8scGxhdGZvcm06cyxlbGVtZW50czpjfT10LHttYWluQXhpczpsPSEwLGNyb3NzQXhpczp1PSEwLGZhbGxiYWNrUGxhY2VtZW50czpkLGZhbGxiYWNrU3RyYXRlZ3k6Zj1gYmVzdEZpdGAsZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbjpwPWBub25lYCxmbGlwQWxpZ25tZW50Om09ITAsLi4uaH09SmMoZSx0KTtpZigobj1pLmFycm93KSE9bnVsbCYmbi5hbGlnbm1lbnRPZmZzZXQpcmV0dXJue307bGV0IGc9WWMociksXz0kYyhvKSx2PVljKG8pPT09byx5PWF3YWl0KHMuaXNSVEw9PW51bGw/dm9pZCAwOnMuaXNSVEwoYy5mbG9hdGluZykpLGI9ZHx8KHZ8fCFtP1t1bChvKV06bmwobykpLHg9cCE9PWBub25lYDshZCYmeCYmYi5wdXNoKC4uLmxsKG8sbSxwLHkpKTtsZXQgUz1bbywuLi5iXSxDPWF3YWl0IHMuZGV0ZWN0T3ZlcmZsb3codCxoKSx3PVtdLFQ9aS5mbGlwPy5vdmVyZmxvd3N8fFtdO2lmKGwmJncucHVzaChDW2ddKSx1KXtsZXQgZT10bChyLGEseSk7dy5wdXNoKENbZVswXV0sQ1tlWzFdXSl9aWYoVD1bLi4uVCx7cGxhY2VtZW50OnIsb3ZlcmZsb3dzOnd9XSwhdy5ldmVyeShlPT5lPD0wKSl7bGV0IGU9KGkuZmxpcD8uaW5kZXh8fDApKzEsdD1TW2VdO2lmKHQmJih1IT09YGFsaWdubWVudGB8fF89PT0kYyh0KXx8VC5ldmVyeShlPT4kYyhlLnBsYWNlbWVudCkhPT1ffHxlLm92ZXJmbG93c1swXT4wKSkpcmV0dXJue2RhdGE6e2luZGV4OmUsb3ZlcmZsb3dzOlR9LHJlc2V0OntwbGFjZW1lbnQ6dH19O2xldCBuPVQuZmlsdGVyKGU9PmUub3ZlcmZsb3dzWzBdPD0wKS5zb3J0KChlLHQpPT5lLm92ZXJmbG93c1sxXS10Lm92ZXJmbG93c1sxXSlbMF0/LnBsYWNlbWVudDtpZighbilzd2l0Y2goZil7Y2FzZWBiZXN0Rml0YDp7bGV0IGU9VC5maWx0ZXIoZT0+e2lmKHgpe2xldCB0PSRjKGUucGxhY2VtZW50KTtyZXR1cm4gdD09PV98fHQ9PT1geWB9cmV0dXJuITB9KS5tYXAoZT0+W2UucGxhY2VtZW50LGUub3ZlcmZsb3dzLmZpbHRlcihlPT5lPjApLnJlZHVjZSgoZSx0KT0+ZSt0LDApXSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKVswXT8uWzBdO2UmJihuPWUpO2JyZWFrfWNhc2VgaW5pdGlhbFBsYWNlbWVudGA6bj1vfWlmKHIhPT1uKXJldHVybntyZXNldDp7cGxhY2VtZW50Om59fX1yZXR1cm57fX19fTtmdW5jdGlvbiBibChlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiB4bChlKXtyZXR1cm4gQmMuc29tZSh0PT5lW3RdPj0wKX12YXIgU2w9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZTpgaGlkZWAsb3B0aW9uczplLGFzeW5jIGZuKHQpe2xldHtyZWN0czpuLHBsYXRmb3JtOnJ9PXQse3N0cmF0ZWd5Omk9YHJlZmVyZW5jZUhpZGRlbmAsLi4uYX09SmMoZSx0KTtzd2l0Y2goaSl7Y2FzZWByZWZlcmVuY2VIaWRkZW5gOntsZXQgZT1ibChhd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLmEsZWxlbWVudENvbnRleHQ6YHJlZmVyZW5jZWB9KSxuLnJlZmVyZW5jZSk7cmV0dXJue2RhdGE6e3JlZmVyZW5jZUhpZGRlbk9mZnNldHM6ZSxyZWZlcmVuY2VIaWRkZW46eGwoZSl9fX1jYXNlYGVzY2FwZWRgOntsZXQgZT1ibChhd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLmEsYWx0Qm91bmRhcnk6ITB9KSxuLmZsb2F0aW5nKTtyZXR1cm57ZGF0YTp7ZXNjYXBlZE9mZnNldHM6ZSxlc2NhcGVkOnhsKGUpfX19ZGVmYXVsdDpyZXR1cm57fX19fX0sQ2w9bmV3IFNldChbYGxlZnRgLGB0b3BgXSk7YXN5bmMgZnVuY3Rpb24gd2woZSx0KXtsZXR7cGxhY2VtZW50Om4scGxhdGZvcm06cixlbGVtZW50czppfT1lLGE9YXdhaXQoci5pc1JUTD09bnVsbD92b2lkIDA6ci5pc1JUTChpLmZsb2F0aW5nKSksbz1ZYyhuKSxzPVhjKG4pLGM9JGMobik9PT1geWAsbD1DbC5oYXMobyk/LTE6MSx1PWEmJmM/LTE6MSxkPUpjKHQsZSkse21haW5BeGlzOmYsY3Jvc3NBeGlzOnAsYWxpZ25tZW50QXhpczptfT10eXBlb2YgZD09YG51bWJlcmA/e21haW5BeGlzOmQsY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6ZC5tYWluQXhpc3x8MCxjcm9zc0F4aXM6ZC5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczpkLmFsaWdubWVudEF4aXN9O3JldHVybiBzJiZ0eXBlb2YgbT09YG51bWJlcmAmJihwPXM9PT1gZW5kYD9tKi0xOm0pLGM/e3g6cCp1LHk6ZipsfTp7eDpmKmwseTpwKnV9fXZhciBUbD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9MCkse25hbWU6YG9mZnNldGAsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuO2xldHt4OnIseTppLHBsYWNlbWVudDphLG1pZGRsZXdhcmVEYXRhOm99PXQscz1hd2FpdCB3bCh0LGUpO3JldHVybiBhPT09by5vZmZzZXQ/LnBsYWNlbWVudCYmKG49by5hcnJvdykhPW51bGwmJm4uYWxpZ25tZW50T2Zmc2V0P3t9Ont4OnIrcy54LHk6aStzLnksZGF0YTp7Li4ucyxwbGFjZW1lbnQ6YX19fX19LEVsPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6YHNoaWZ0YCxvcHRpb25zOmUsYXN5bmMgZm4odCl7bGV0e3g6bix5OnIscGxhY2VtZW50OmkscGxhdGZvcm06YX09dCx7bWFpbkF4aXM6bz0hMCxjcm9zc0F4aXM6cz0hMSxsaW1pdGVyOmM9e2ZuOmU9PntsZXR7eDp0LHk6bn09ZTtyZXR1cm57eDp0LHk6bn19fSwuLi5sfT1KYyhlLHQpLHU9e3g6bix5OnJ9LGQ9YXdhaXQgYS5kZXRlY3RPdmVyZmxvdyh0LGwpLGY9JGMoaSkscD1aYyhmKSxtPXVbcF0saD11W2ZdLGc9KGUsdCk9PnFjKHQrZFtlPT09YHlgP2B0b3BgOmBsZWZ0YF0sdCx0LWRbZT09PWB5YD9gYm90dG9tYDpgcmlnaHRgXSk7byYmKG09ZyhwLG0pKSxzJiYoaD1nKGYsaCkpO2xldCBfPWMuZm4oey4uLnQsW3BdOm0sW2ZdOmh9KTtyZXR1cm57Li4uXyxkYXRhOnt4Ol8ueC1uLHk6Xy55LXIsZW5hYmxlZDp7W3BdOm8sW2ZdOnN9fX19fX0sRGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7b3B0aW9uczplLGZuKHQpe2xldHt4Om4seTpyLHBsYWNlbWVudDppLHJlY3RzOmEsbWlkZGxld2FyZURhdGE6b309dCx7b2Zmc2V0OnM9MCxtYWluQXhpczpjPSEwLGNyb3NzQXhpczpsPSEwfT1KYyhlLHQpLHU9e3g6bix5OnJ9LGQ9JGMoaSksZj1aYyhkKSxwPXVbZl0sbT11W2RdLGg9SmMocyx0KSxnPXR5cGVvZiBoPT1gbnVtYmVyYD97bWFpbkF4aXM6aCxjcm9zc0F4aXM6MH06e21haW5BeGlzOmgubWFpbkF4aXM/PzAsY3Jvc3NBeGlzOmguY3Jvc3NBeGlzPz8wfTtpZihjKXtsZXQgZT1mPT09YHlgP2BoZWlnaHRgOmB3aWR0aGAsdD1hLnJlZmVyZW5jZVtmXS1hLmZsb2F0aW5nW2VdK2cubWFpbkF4aXMsbj1hLnJlZmVyZW5jZVtmXSthLnJlZmVyZW5jZVtlXS1nLm1haW5BeGlzO3A8dD9wPXQ6cD5uJiYocD1uKX1pZihsKXtsZXQgZT1mPT09YHlgP2B3aWR0aGA6YGhlaWdodGAsdD1DbC5oYXMoWWMoaSkpLG49YS5yZWZlcmVuY2VbZF0tYS5mbG9hdGluZ1tlXSsodCYmby5vZmZzZXQ/LltkXXx8MCkrKHQ/MDpnLmNyb3NzQXhpcykscj1hLnJlZmVyZW5jZVtkXSthLnJlZmVyZW5jZVtlXSsodD8wOm8ub2Zmc2V0Py5bZF18fDApLSh0P2cuY3Jvc3NBeGlzOjApO208bj9tPW46bT5yJiYobT1yKX1yZXR1cm57W2ZdOnAsW2RdOm19fX19LE9sPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6YHNpemVgLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtsZXR7cGxhY2VtZW50Om4scmVjdHM6cixwbGF0Zm9ybTppLGVsZW1lbnRzOmF9PXQse2FwcGx5Om89KCk9Pnt9LC4uLnN9PUpjKGUsdCksYz1hd2FpdCBpLmRldGVjdE92ZXJmbG93KHQscyksbD1ZYyhuKSx1PVhjKG4pLGQ9JGMobik9PT1geWAse3dpZHRoOmYsaGVpZ2h0OnB9PXIuZmxvYXRpbmcsbSxoO2w9PT1gdG9wYHx8bD09PWBib3R0b21gPyhtPWwsaD11PT09KGF3YWl0KGkuaXNSVEw9PW51bGw/dm9pZCAwOmkuaXNSVEwoYS5mbG9hdGluZykpP2BzdGFydGA6YGVuZGApP2BsZWZ0YDpgcmlnaHRgKTooaD1sLG09dT09PWBlbmRgP2B0b3BgOmBib3R0b21gKTtsZXQgZz1wLWMudG9wLWMuYm90dG9tLF89Zi1jLmxlZnQtYy5yaWdodCx2PVZjKHAtY1ttXSxnKSx5PVZjKGYtY1toXSxfKSxiPXQubWlkZGxld2FyZURhdGEuc2hpZnQseD0hYixTPXYsQz15O2IhPW51bGwmJmIuZW5hYmxlZC54JiYoQz1fKSxiIT1udWxsJiZiLmVuYWJsZWQueSYmKFM9ZykseCYmIXUmJihkP0M9Zi0yKkhjKGMubGVmdCxjLnJpZ2h0KTpTPXAtMipIYyhjLnRvcCxjLmJvdHRvbSkpLGF3YWl0IG8oey4uLnQsYXZhaWxhYmxlV2lkdGg6QyxhdmFpbGFibGVIZWlnaHQ6U30pO2xldCB3PWF3YWl0IGkuZ2V0RGltZW5zaW9ucyhhLmZsb2F0aW5nKTtyZXR1cm4gZiE9PXcud2lkdGh8fHAhPT13LmhlaWdodD97cmVzZXQ6e3JlY3RzOiEwfX06e319fX07ZnVuY3Rpb24ga2woKXtyZXR1cm4gdHlwZW9mIHdpbmRvdzxgdWB9ZnVuY3Rpb24gQWwoZSl7cmV0dXJuIE1sKGUpPyhlLm5vZGVOYW1lfHxgYCkudG9Mb3dlckNhc2UoKTpgI2RvY3VtZW50YH1mdW5jdGlvbiAkKGUpe3ZhciB0O3JldHVybihlPT1udWxsfHwodD1lLm93bmVyRG9jdW1lbnQpPT1udWxsP3ZvaWQgMDp0LmRlZmF1bHRWaWV3KXx8d2luZG93fWZ1bmN0aW9uIGpsKGUpe3JldHVybigoTWwoZSk/ZS5vd25lckRvY3VtZW50OmUuZG9jdW1lbnQpfHx3aW5kb3cuZG9jdW1lbnQpPy5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gTWwoZSl7cmV0dXJuIGtsKCk/ZSBpbnN0YW5jZW9mIE5vZGV8fGUgaW5zdGFuY2VvZiAkKGUpLk5vZGU6ITF9ZnVuY3Rpb24gTmwoZSl7cmV0dXJuIGtsKCk/ZSBpbnN0YW5jZW9mIEVsZW1lbnR8fGUgaW5zdGFuY2VvZiAkKGUpLkVsZW1lbnQ6ITF9ZnVuY3Rpb24gUGwoZSl7cmV0dXJuIGtsKCk/ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHxlIGluc3RhbmNlb2YgJChlKS5IVE1MRWxlbWVudDohMX1mdW5jdGlvbiBGbChlKXtyZXR1cm4ha2woKXx8dHlwZW9mIFNoYWRvd1Jvb3Q+YHVgPyExOmUgaW5zdGFuY2VvZiBTaGFkb3dSb290fHxlIGluc3RhbmNlb2YgJChlKS5TaGFkb3dSb290fWZ1bmN0aW9uIElsKGUpe2xldHtvdmVyZmxvdzp0LG92ZXJmbG93WDpuLG92ZXJmbG93WTpyLGRpc3BsYXk6aX09cWwoZSk7cmV0dXJuL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3QodCtyK24pJiZpIT09YGlubGluZWAmJmkhPT1gY29udGVudHNgfWZ1bmN0aW9uIExsKGUpe3JldHVybi9eKHRhYmxlfHRkfHRoKSQvLnRlc3QoQWwoZSkpfWZ1bmN0aW9uIFJsKGUpe3RyeXtpZihlLm1hdGNoZXMoYDpwb3BvdmVyLW9wZW5gKSlyZXR1cm4hMH1jYXRjaHt9dHJ5e3JldHVybiBlLm1hdGNoZXMoYDptb2RhbGApfWNhdGNoe3JldHVybiExfX12YXIgemw9L3RyYW5zZm9ybXx0cmFuc2xhdGV8c2NhbGV8cm90YXRlfHBlcnNwZWN0aXZlfGZpbHRlci8sQmw9L3BhaW50fGxheW91dHxzdHJpY3R8Y29udGVudC8sVmw9ZT0+ISFlJiZlIT09YG5vbmVgLEhsO2Z1bmN0aW9uIFVsKGUpe2xldCB0PU5sKGUpP3FsKGUpOmU7cmV0dXJuIFZsKHQudHJhbnNmb3JtKXx8VmwodC50cmFuc2xhdGUpfHxWbCh0LnNjYWxlKXx8VmwodC5yb3RhdGUpfHxWbCh0LnBlcnNwZWN0aXZlKXx8IUdsKCkmJihWbCh0LmJhY2tkcm9wRmlsdGVyKXx8VmwodC5maWx0ZXIpKXx8emwudGVzdCh0LndpbGxDaGFuZ2V8fGBgKXx8QmwudGVzdCh0LmNvbnRhaW58fGBgKX1mdW5jdGlvbiBXbChlKXtsZXQgdD1ZbChlKTtmb3IoO1BsKHQpJiYhS2wodCk7KXtpZihVbCh0KSlyZXR1cm4gdDtpZihSbCh0KSlyZXR1cm4gbnVsbDt0PVlsKHQpfXJldHVybiBudWxsfWZ1bmN0aW9uIEdsKCl7cmV0dXJuIEhsPz89dHlwZW9mIENTUzxgdWAmJkNTUy5zdXBwb3J0cyYmQ1NTLnN1cHBvcnRzKGAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcmAsYG5vbmVgKSxIbH1mdW5jdGlvbiBLbChlKXtyZXR1cm4vXihodG1sfGJvZHl8I2RvY3VtZW50KSQvLnRlc3QoQWwoZSkpfWZ1bmN0aW9uIHFsKGUpe3JldHVybiAkKGUpLmdldENvbXB1dGVkU3R5bGUoZSl9ZnVuY3Rpb24gSmwoZSl7cmV0dXJuIE5sKGUpP3tzY3JvbGxMZWZ0OmUuc2Nyb2xsTGVmdCxzY3JvbGxUb3A6ZS5zY3JvbGxUb3B9OntzY3JvbGxMZWZ0OmUuc2Nyb2xsWCxzY3JvbGxUb3A6ZS5zY3JvbGxZfX1mdW5jdGlvbiBZbChlKXtpZihBbChlKT09PWBodG1sYClyZXR1cm4gZTtsZXQgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHxGbChlKSYmZS5ob3N0fHxqbChlKTtyZXR1cm4gRmwodCk/dC5ob3N0OnR9ZnVuY3Rpb24gWGwoZSl7bGV0IHQ9WWwoZSk7cmV0dXJuIEtsKHQpPyhlLm93bmVyRG9jdW1lbnR8fGUpLmJvZHk6UGwodCkmJklsKHQpP3Q6WGwodCl9ZnVuY3Rpb24gWmwoZSx0LG4pe3Q9PT12b2lkIDAmJih0PVtdKSxuPT09dm9pZCAwJiYobj0hMCk7bGV0IHI9WGwoZSksaT1yPT09ZS5vd25lckRvY3VtZW50Py5ib2R5LGE9JChyKTtpZihpKXtsZXQgZT1RbChhKTtyZXR1cm4gdC5jb25jYXQoYSxhLnZpc3VhbFZpZXdwb3J0fHxbXSxJbChyKT9yOltdLGUmJm4/WmwoZSk6W10pfXJldHVybiB0LmNvbmNhdChyLFpsKHIsW10sbikpfWZ1bmN0aW9uIFFsKGUpe3JldHVybiBlLnBhcmVudCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUucGFyZW50KT9lLmZyYW1lRWxlbWVudDpudWxsfWZ1bmN0aW9uICRsKGUpe2xldCB0PXFsKGUpLG49cGFyc2VGbG9hdCh0LndpZHRoKXx8MCxyPXBhcnNlRmxvYXQodC5oZWlnaHQpfHwwLGk9UGwoZSksYT1pP2Uub2Zmc2V0V2lkdGg6bixvPWk/ZS5vZmZzZXRIZWlnaHQ6cixzPVVjKG4pIT09YXx8VWMocikhPT1vO3JldHVybiBzJiYobj1hLHI9bykse3dpZHRoOm4saGVpZ2h0OnIsJDpzfX1mdW5jdGlvbiBldShlKXtyZXR1cm4gTmwoZSk/ZTplLmNvbnRleHRFbGVtZW50fWZ1bmN0aW9uIHR1KGUpe2xldCB0PWV1KGUpO2lmKCFQbCh0KSlyZXR1cm4gR2MoMSk7bGV0IG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7d2lkdGg6cixoZWlnaHQ6aSwkOmF9PSRsKHQpLG89KGE/VWMobi53aWR0aCk6bi53aWR0aCkvcixzPShhP1VjKG4uaGVpZ2h0KTpuLmhlaWdodCkvaTtyZXR1cm4oIW98fCFOdW1iZXIuaXNGaW5pdGUobykpJiYobz0xKSwoIXN8fCFOdW1iZXIuaXNGaW5pdGUocykpJiYocz0xKSx7eDpvLHk6c319dmFyIG51PUdjKDApO2Z1bmN0aW9uIHJ1KGUpe2xldCB0PSQoZSk7cmV0dXJuIUdsKCl8fCF0LnZpc3VhbFZpZXdwb3J0P251Ont4OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCx5OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wfX1mdW5jdGlvbiBpdShlLHQsbil7cmV0dXJuIHQ9PT12b2lkIDAmJih0PSExKSwhIW4mJnQmJm49PT0kKGUpfWZ1bmN0aW9uIGF1KGUsdCxuLHIpe3Q9PT12b2lkIDAmJih0PSExKSxuPT09dm9pZCAwJiYobj0hMSk7bGV0IGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWV1KGUpLG89R2MoMSk7dCYmKHI/TmwocikmJihvPXR1KHIpKTpvPXR1KGUpKTtsZXQgcz1pdShhLG4scik/cnUoYSk6R2MoMCksYz0oaS5sZWZ0K3MueCkvby54LGw9KGkudG9wK3MueSkvby55LHU9aS53aWR0aC9vLngsZD1pLmhlaWdodC9vLnk7aWYoYSYmcil7bGV0IGU9JChhKSx0PU5sKHIpPyQocik6cixuPWUsaT1RbChuKTtmb3IoO2kmJnQhPT1uOyl7bGV0IGU9dHUoaSksdD1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9cWwoaSksYT10LmxlZnQrKGkuY2xpZW50TGVmdCtwYXJzZUZsb2F0KHIucGFkZGluZ0xlZnQpKSplLngsbz10LnRvcCsoaS5jbGllbnRUb3ArcGFyc2VGbG9hdChyLnBhZGRpbmdUb3ApKSplLnk7Yyo9ZS54LGwqPWUueSx1Kj1lLngsZCo9ZS55LGMrPWEsbCs9byxuPSQoaSksaT1RbChuKX19cmV0dXJuIHBsKHt3aWR0aDp1LGhlaWdodDpkLHg6Yyx5Omx9KX1mdW5jdGlvbiBvdShlLHQpe2xldCBuPUpsKGUpLnNjcm9sbExlZnQ7cmV0dXJuIHQ/dC5sZWZ0K246YXUoamwoZSkpLmxlZnQrbn1mdW5jdGlvbiBzdShlLHQpe2xldCBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3g6bi5sZWZ0K3Quc2Nyb2xsTGVmdC1vdShlLG4pLHk6bi50b3ArdC5zY3JvbGxUb3B9fWZ1bmN0aW9uIGN1KGUpe2xldHtlbGVtZW50czp0LHJlY3Q6bixvZmZzZXRQYXJlbnQ6cixzdHJhdGVneTppfT1lLGE9aT09PWBmaXhlZGAsbz1qbChyKSxzPXQ/UmwodC5mbG9hdGluZyk6ITE7aWYocj09PW98fHMmJmEpcmV0dXJuIG47bGV0IGM9e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH0sbD1HYygxKSx1PUdjKDApLGQ9UGwocik7aWYoKGR8fCFhKSYmKChBbChyKSE9PWBib2R5YHx8SWwobykpJiYoYz1KbChyKSksZCkpe2xldCBlPWF1KHIpO2w9dHUociksdS54PWUueCtyLmNsaWVudExlZnQsdS55PWUueStyLmNsaWVudFRvcH1sZXQgZj1vJiYhZCYmIWE/c3UobyxjKTpHYygwKTtyZXR1cm57d2lkdGg6bi53aWR0aCpsLngsaGVpZ2h0Om4uaGVpZ2h0KmwueSx4Om4ueCpsLngtYy5zY3JvbGxMZWZ0KmwueCt1LngrZi54LHk6bi55KmwueS1jLnNjcm9sbFRvcCpsLnkrdS55K2YueX19ZnVuY3Rpb24gbHUoZSl7cmV0dXJuIGUuZ2V0Q2xpZW50UmVjdHM/QXJyYXkuZnJvbShlLmdldENsaWVudFJlY3RzKCkpOltdfWZ1bmN0aW9uIHV1KGUpe2xldCB0PUpsKGUpLG49ZS5vd25lckRvY3VtZW50LmJvZHkscj1IYyhlLnNjcm9sbFdpZHRoLGUuY2xpZW50V2lkdGgsbi5zY3JvbGxXaWR0aCxuLmNsaWVudFdpZHRoKSxpPUhjKGUuc2Nyb2xsSGVpZ2h0LGUuY2xpZW50SGVpZ2h0LG4uc2Nyb2xsSGVpZ2h0LG4uY2xpZW50SGVpZ2h0KSxhPS10LnNjcm9sbExlZnQrb3UoZSksbz0tdC5zY3JvbGxUb3A7cmV0dXJuIHFsKG4pLmRpcmVjdGlvbj09PWBydGxgJiYoYSs9SGMoZS5jbGllbnRXaWR0aCxuLmNsaWVudFdpZHRoKS1yKSx7d2lkdGg6cixoZWlnaHQ6aSx4OmEseTpvfX12YXIgZHU9MjU7ZnVuY3Rpb24gZnUoZSx0LG4pe249PT12b2lkIDAmJihuPWB2aWV3cG9ydGApO2xldCByPW49PT1gbGF5b3V0Vmlld3BvcnRgLGk9JChlKSxhPWpsKGUpLG89aS52aXN1YWxWaWV3cG9ydCxzPWEuY2xpZW50V2lkdGgsYz1hLmNsaWVudEhlaWdodCxsPTAsdT0wO2lmKG8pe2xldCBlPSFHbCgpfHx0PT09YGZpeGVkYDtyP2V8fChsPS1vLm9mZnNldExlZnQsdT0tby5vZmZzZXRUb3ApOihzPW8ud2lkdGgsYz1vLmhlaWdodCxlJiYobD1vLm9mZnNldExlZnQsdT1vLm9mZnNldFRvcCkpfWlmKG91KGEpPD0wKXtsZXQgZT1hLm93bmVyRG9jdW1lbnQsdD1lLmJvZHksbj1nZXRDb21wdXRlZFN0eWxlKHQpLHI9ZS5jb21wYXRNb2RlPT09YENTUzFDb21wYXRgJiZwYXJzZUZsb2F0KG4ubWFyZ2luTGVmdCkrcGFyc2VGbG9hdChuLm1hcmdpblJpZ2h0KXx8MCxpPU1hdGguYWJzKGEuY2xpZW50V2lkdGgtdC5jbGllbnRXaWR0aC1yKSxvPWdldENvbXB1dGVkU3R5bGUoYSkuc2Nyb2xsYmFyR3V0dGVyPT09YHN0YWJsZSBib3RoLWVkZ2VzYD9pLzI6aTtvPD1kdSYmKHMtPW8pfXJldHVybnt3aWR0aDpzLGhlaWdodDpjLHg6bCx5OnV9fWZ1bmN0aW9uIHB1KGUsdCl7bGV0IG49YXUoZSwhMCx0PT09YGZpeGVkYCkscj1uLnRvcCtlLmNsaWVudFRvcCxpPW4ubGVmdCtlLmNsaWVudExlZnQsYT10dShlKTtyZXR1cm57d2lkdGg6ZS5jbGllbnRXaWR0aCphLngsaGVpZ2h0OmUuY2xpZW50SGVpZ2h0KmEueSx4OmkqYS54LHk6ciphLnl9fWZ1bmN0aW9uIG11KGUsdCxuKXtsZXQgcjtpZih0PT09YHZpZXdwb3J0YHx8dD09PWBsYXlvdXRWaWV3cG9ydGApcj1mdShlLG4sdCk7ZWxzZSBpZih0PT09YGRvY3VtZW50YClyPXV1KGpsKGUpKTtlbHNlIGlmKE5sKHQpKXI9cHUodCxuKTtlbHNle2xldCBuPXJ1KGUpO3I9e3g6dC54LW4ueCx5OnQueS1uLnksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9fXJldHVybiBwbChyKX1mdW5jdGlvbiBodShlLHQpe2xldCBuPXQuZ2V0KGUpO2lmKG4pcmV0dXJuIG47bGV0IHI9WmwoZSxbXSwhMSkuZmlsdGVyKGU9Pk5sKGUpJiZBbChlKSE9PWBib2R5YCksaT1udWxsLGE9cWwoZSkucG9zaXRpb249PT1gZml4ZWRgLG89YT9ZbChlKTplO2Zvcig7TmwobykmJiFLbChvKTspe2xldCBlPXFsKG8pLHQ9VWwobyksbj1pP2kucG9zaXRpb246YT9gZml4ZWRgOmBgOyF0JiYobj09PWBmaXhlZGB8fG49PT1gYWJzb2x1dGVgJiZlLnBvc2l0aW9uPT09YHN0YXRpY2ApP3I9ci5maWx0ZXIoZT0+ZSE9PW8pOmk9ZSxvPVlsKG8pfXJldHVybiB0LnNldChlLHIpLHJ9ZnVuY3Rpb24gZ3UoZSl7bGV0e2VsZW1lbnQ6dCxib3VuZGFyeTpuLHJvb3RCb3VuZGFyeTpyLHN0cmF0ZWd5Oml9PWUsYT1bLi4ubj09PWBjbGlwcGluZ0FuY2VzdG9yc2A/UmwodCk/W106aHUodCx0aGlzLl9jKTpbXS5jb25jYXQobikscl0sbz1tdSh0LGFbMF0saSkscz1vLnRvcCxjPW8ucmlnaHQsbD1vLmJvdHRvbSx1PW8ubGVmdDtmb3IobGV0IGU9MTtlPGEubGVuZ3RoO2UrKyl7bGV0IG49bXUodCxhW2VdLGkpO3M9SGMobi50b3AscyksYz1WYyhuLnJpZ2h0LGMpLGw9VmMobi5ib3R0b20sbCksdT1IYyhuLmxlZnQsdSl9cmV0dXJue3dpZHRoOmMtdSxoZWlnaHQ6bC1zLHg6dSx5OnN9fWZ1bmN0aW9uIF91KGUpe2xldHt3aWR0aDp0LGhlaWdodDpufT0kbChlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19ZnVuY3Rpb24gdnUoZSx0LG4pe2xldCByPVBsKHQpLGk9amwodCksYT1uPT09YGZpeGVkYCxvPWF1KGUsITAsYSx0KSxzPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LGM9R2MoMCk7aWYoKHJ8fCFhKSYmKChBbCh0KSE9PWBib2R5YHx8SWwoaSkpJiYocz1KbCh0KSkscikpe2xldCBlPWF1KHQsITAsYSx0KTtjLng9ZS54K3QuY2xpZW50TGVmdCxjLnk9ZS55K3QuY2xpZW50VG9wfSFyJiZpJiYoYy54PW91KGkpKTtsZXQgbD1pJiYhciYmIWE/c3UoaSxzKTpHYygwKTtyZXR1cm57eDpvLmxlZnQrcy5zY3JvbGxMZWZ0LWMueC1sLngseTpvLnRvcCtzLnNjcm9sbFRvcC1jLnktbC55LHdpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fX1mdW5jdGlvbiB5dShlKXtyZXR1cm4gcWwoZSkucG9zaXRpb249PT1gc3RhdGljYH1mdW5jdGlvbiBidShlLHQpe2lmKCFQbChlKXx8cWwoZSkucG9zaXRpb249PT1gZml4ZWRgKXJldHVybiBudWxsO2lmKHQpcmV0dXJuIHQoZSk7bGV0IG49ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGpsKGUpPT09biYmKG49bi5vd25lckRvY3VtZW50LmJvZHkpLG59ZnVuY3Rpb24geHUoZSx0KXtsZXQgbj0kKGUpO2lmKFJsKGUpKXJldHVybiBuO2lmKCFQbChlKSl7bGV0IHQ9WWwoZSk7Zm9yKDt0JiYhS2wodCk7KXtpZihObCh0KSYmIXl1KHQpKXJldHVybiB0O3Q9WWwodCl9cmV0dXJuIG59bGV0IHI9YnUoZSx0KTtmb3IoO3ImJkxsKHIpJiZ5dShyKTspcj1idShyLHQpO3JldHVybiByJiZLbChyKSYmeXUocikmJiFVbChyKT9uOnJ8fFdsKGUpfHxufXZhciBTdT1hc3luYyBmdW5jdGlvbihlKXtsZXQgdD10aGlzLmdldE9mZnNldFBhcmVudHx8eHUsbj10aGlzLmdldERpbWVuc2lvbnMscj1hd2FpdCBuKGUuZmxvYXRpbmcpO3JldHVybntyZWZlcmVuY2U6dnUoZS5yZWZlcmVuY2UsYXdhaXQgdChlLmZsb2F0aW5nKSxlLnN0cmF0ZWd5KSxmbG9hdGluZzp7eDowLHk6MCx3aWR0aDpyLndpZHRoLGhlaWdodDpyLmhlaWdodH19fTtmdW5jdGlvbiBDdShlKXtyZXR1cm4gcWwoZSkuZGlyZWN0aW9uPT09YHJ0bGB9dmFyIHd1PXtjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdDpjdSxnZXREb2N1bWVudEVsZW1lbnQ6amwsZ2V0Q2xpcHBpbmdSZWN0Omd1LGdldE9mZnNldFBhcmVudDp4dSxnZXRFbGVtZW50UmVjdHM6U3UsZ2V0Q2xpZW50UmVjdHM6bHUsZ2V0RGltZW5zaW9uczpfdSxnZXRTY2FsZTp0dSxpc0VsZW1lbnQ6TmwsaXNSVEw6Q3V9O2Z1bmN0aW9uIFR1KGUsdCl7cmV0dXJuIGUueD09PXQueCYmZS55PT09dC55JiZlLndpZHRoPT09dC53aWR0aCYmZS5oZWlnaHQ9PT10LmhlaWdodH1mdW5jdGlvbiBFdShlLHQsbil7bGV0IHI9bnVsbCxpLGE9amwoZSk7ZnVuY3Rpb24gbygpe3ZhciBlO2NsZWFyVGltZW91dChpKSwoZT1yKT09bnVsbHx8ZS5kaXNjb25uZWN0KCkscj1udWxsfWZ1bmN0aW9uIHMobixjKXtuPT09dm9pZCAwJiYobj0hMSksYz09PXZvaWQgMCYmKGM9MSksbygpO2xldCBsPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse2xlZnQ6dSx0b3A6ZCx3aWR0aDpmLGhlaWdodDpwfT1sO2lmKG58fHQoKSwhZnx8IXApcmV0dXJuO2xldCBtPVdjKGQpLGg9V2MoYS5jbGllbnRXaWR0aC0odStmKSksZz1XYyhhLmNsaWVudEhlaWdodC0oZCtwKSksXz1XYyh1KSx2PXtyb290TWFyZ2luOi1tK2BweCBgKy1oK2BweCBgKy1nK2BweCBgKy1fK2BweGAsdGhyZXNob2xkOkhjKDAsVmMoMSxjKSl8fDF9LHk9ITA7ZnVuY3Rpb24gYih0KXtsZXQgbj10WzBdLmludGVyc2VjdGlvblJhdGlvO2lmKCFUdShsLGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKXJldHVybiBzKCk7aWYobiE9PWMpe2lmKCF5KXJldHVybiBzKCk7bj9zKCExLG4pOmk9c2V0VGltZW91dCgoKT0+e3MoITEsMWUtNyl9LDFlMyl9eT0hMX10cnl7cj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYix7Li4udixyb290OmEub3duZXJEb2N1bWVudH0pfWNhdGNoe3I9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGIsdil9ci5vYnNlcnZlKGUpfWxldCBjPSQoZSksbD0oKT0+cyhuKTtyZXR1cm4gYy5hZGRFdmVudExpc3RlbmVyKGByZXNpemVgLGwpLHMoITApLCgpPT57Yy5yZW1vdmVFdmVudExpc3RlbmVyKGByZXNpemVgLGwpLG8oKX19ZnVuY3Rpb24gRHUoZSx0LG4scil7cj09PXZvaWQgMCYmKHI9e30pO2xldHthbmNlc3RvclNjcm9sbDppPSEwLGFuY2VzdG9yUmVzaXplOmE9ITAsZWxlbWVudFJlc2l6ZTpvPXR5cGVvZiBSZXNpemVPYnNlcnZlcj09YGZ1bmN0aW9uYCxsYXlvdXRTaGlmdDpzPXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcj09YGZ1bmN0aW9uYCxhbmltYXRpb25GcmFtZTpjPSExfT1yLGw9ZXUoZSksdT1pfHxhP1suLi5sP1psKGwpOltdLC4uLnQ/WmwodCk6W11dOltdO3UuZm9yRWFjaChlPT57aSYmZS5hZGRFdmVudExpc3RlbmVyKGBzY3JvbGxgLG4pLGEmJmUuYWRkRXZlbnRMaXN0ZW5lcihgcmVzaXplYCxuKX0pO2xldCBkPWwmJnM/RXUobCxuLGEpOm51bGwsZj0tMSxwPW51bGw7byYmKHA9bmV3IFJlc2l6ZU9ic2VydmVyKGU9PntsZXRbcl09ZTtyJiZyLnRhcmdldD09PWwmJnAmJnQmJihwLnVub2JzZXJ2ZSh0KSxjYW5jZWxBbmltYXRpb25GcmFtZShmKSxmPXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBlOyhlPXApPT1udWxsfHxlLm9ic2VydmUodCl9KSksbigpfSksbCYmIWMmJnAub2JzZXJ2ZShsKSx0JiZwLm9ic2VydmUodCkpO2xldCBtLGg9Yz9hdShlKTpudWxsO2MmJmcoKTtmdW5jdGlvbiBnKCl7bGV0IHQ9YXUoZSk7aCYmIVR1KGgsdCkmJm4oKSxoPXQsbT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZyl9cmV0dXJuIG4oKSwoKT0+e3ZhciBlO3UuZm9yRWFjaChlPT57aSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKGBzY3JvbGxgLG4pLGEmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcmVzaXplYCxuKX0pLGQ/LigpLChlPXApPT1udWxsfHxlLmRpc2Nvbm5lY3QoKSxwPW51bGwsYyYmY2FuY2VsQW5pbWF0aW9uRnJhbWUobSl9fXZhciBPdT1UbCxrdT1FbCxBdT15bCxqdT1PbCxNdT1TbCxOdT12bCxQdT1EbCxGdT0oZSx0LG4pPT57bGV0IHI9bmV3IE1hcCxpPW4/P3t9LGE9ey4uLnd1LC4uLmkucGxhdGZvcm0sX2M6cn07cmV0dXJuIF9sKGUsdCx7Li4uaSxwbGF0Zm9ybTphfSl9O2Z1bmN0aW9uIEl1KGUpe3JldHVybiB0eXBlb2YgZT09YG9iamVjdGAmJiEhZSYmYCRlbGBpbiBlfWZ1bmN0aW9uIEx1KGUpe2lmKEl1KGUpKXtsZXQgdD1lLiRlbDtyZXR1cm4gTWwodCkmJkFsKHQpPT09YCNjb21tZW50YD9udWxsOnR9cmV0dXJuIGV9ZnVuY3Rpb24gUnUoZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gP2UoKTpQKGUpfWZ1bmN0aW9uIHp1KGUpe3JldHVybntuYW1lOmBhcnJvd2Asb3B0aW9uczplLGZuKHQpe2xldCBuPUx1KFJ1KGUuZWxlbWVudCkpO3JldHVybiBuPT1udWxsP3t9Ok51KHtlbGVtZW50Om4scGFkZGluZzplLnBhZGRpbmd9KS5mbih0KX19fWZ1bmN0aW9uIEJ1KGUpe3JldHVybiB0eXBlb2Ygd2luZG93PmB1YD8xOihlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZGV2aWNlUGl4ZWxSYXRpb3x8MX1mdW5jdGlvbiBWdShlLHQpe2xldCBuPUJ1KGUpO3JldHVybiBNYXRoLnJvdW5kKHQqbikvbn1mdW5jdGlvbiBIdShlLHQsbil7bj09PXZvaWQgMCYmKG49e30pO2xldCByPW4ud2hpbGVFbGVtZW50c01vdW50ZWQsaT1JKCgpPT5SdShuLm9wZW4pPz8hMCksYT1JKCgpPT5SdShuLm1pZGRsZXdhcmUpKSxvPUkoKCk9PlJ1KG4ucGxhY2VtZW50KT8/YGJvdHRvbWApLHM9SSgoKT0+UnUobi5zdHJhdGVneSk/P2BhYnNvbHV0ZWApLGM9SSgoKT0+UnUobi50cmFuc2Zvcm0pPz8hMCksdT1JKCgpPT5MdShlLnZhbHVlKSksZD1JKCgpPT5MdSh0LnZhbHVlKSksZj1CKDApLHA9QigwKSxtPUIocy52YWx1ZSksaD1CKG8udmFsdWUpLGc9SGUoe30pLF89QighMSksdj1JKCgpPT57bGV0IGU9e3Bvc2l0aW9uOm0udmFsdWUsbGVmdDpgMGAsdG9wOmAwYH07aWYoIWQudmFsdWUpcmV0dXJuIGU7bGV0IHQ9VnUoZC52YWx1ZSxmLnZhbHVlKSxuPVZ1KGQudmFsdWUscC52YWx1ZSk7cmV0dXJuIGMudmFsdWU/ey4uLmUsdHJhbnNmb3JtOmB0cmFuc2xhdGUoYCt0K2BweCwgYCtuK2BweClgLC4uLkJ1KGQudmFsdWUpPj0xLjUmJnt3aWxsQ2hhbmdlOmB0cmFuc2Zvcm1gfX06e3Bvc2l0aW9uOm0udmFsdWUsbGVmdDp0K2BweGAsdG9wOm4rYHB4YH19KSx5O2Z1bmN0aW9uIGIoKXtpZih1LnZhbHVlPT1udWxsfHxkLnZhbHVlPT1udWxsKXJldHVybjtsZXQgZT1pLnZhbHVlO0Z1KHUudmFsdWUsZC52YWx1ZSx7bWlkZGxld2FyZTphLnZhbHVlLHBsYWNlbWVudDpvLnZhbHVlLHN0cmF0ZWd5OnMudmFsdWV9KS50aGVuKHQ9PntmLnZhbHVlPXQueCxwLnZhbHVlPXQueSxtLnZhbHVlPXQuc3RyYXRlZ3ksaC52YWx1ZT10LnBsYWNlbWVudCxnLnZhbHVlPXQubWlkZGxld2FyZURhdGEsXy52YWx1ZT1lIT09ITF9KX1mdW5jdGlvbiB4KCl7dHlwZW9mIHk9PWBmdW5jdGlvbmAmJih5KCkseT12b2lkIDApfWZ1bmN0aW9uIFMoKXtpZih4KCkscj09PXZvaWQgMCl7YigpO3JldHVybn1pZih1LnZhbHVlIT1udWxsJiZkLnZhbHVlIT1udWxsKXt5PXIodS52YWx1ZSxkLnZhbHVlLGIpO3JldHVybn19ZnVuY3Rpb24gQygpe2kudmFsdWV8fChfLnZhbHVlPSExKX1yZXR1cm4gbChbYSxvLHMsaV0sYix7Zmx1c2g6YHN5bmNgfSksbChbdSxkXSxTLHtmbHVzaDpgc3luY2B9KSxsKGksQyx7Zmx1c2g6YHN5bmNgfSksdHQoKSYmaXQoeCkse3g6RWUoZikseTpFZShwKSxzdHJhdGVneTpFZShtKSxwbGFjZW1lbnQ6RWUoaCksbWlkZGxld2FyZURhdGE6RWUoZyksaXNQb3NpdGlvbmVkOkVlKF8pLGZsb2F0aW5nU3R5bGVzOnYsdXBkYXRlOmJ9fXZhciBVdT1bYGRpcmBdLFd1PXtzaWRlOmBib3R0b21gLHNpZGVPZmZzZXQ6MCxzaWRlRmxpcDohMCxhbGlnbjpgY2VudGVyYCxhbGlnbk9mZnNldDowLGFsaWduRmxpcDohMCxhcnJvd1BhZGRpbmc6MCxoaWRlU2hpZnRlZEFycm93OiEwLGF2b2lkQ29sbGlzaW9uczohMCxjb2xsaXNpb25Cb3VuZGFyeTooKT0+W10sY29sbGlzaW9uUGFkZGluZzowLHN0aWNreTpgcGFydGlhbGAsaGlkZVdoZW5EZXRhY2hlZDohMSxwb3NpdGlvblN0cmF0ZWd5OmBmaXhlZGAsdXBkYXRlUG9zaXRpb25TdHJhdGVneTpgb3B0aW1pemVkYCxwcmlvcml0aXplUG9zaXRpb246ITF9LFtHdSxLdV09YShgUG9wcGVyQ29udGVudGApLHF1PWooe2luaGVyaXRBdHRyczohMSxfX25hbWU6YFBvcHBlckNvbnRlbnRgLHByb3BzOmQoe21lbW9EZXBlbmRlbmNpZXM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7Li4uV3V9KSxlbWl0czpbYHBsYWNlZGBdLHNldHVwKG4se2VtaXQ6cn0pe2xldCBpPW4sYT1yLG89TmMoKSx7Zm9yd2FyZFJlZjpzLGN1cnJlbnRFbGVtZW50OmN9PXQoKSxsPWUoSSgoKT0+aS5kaXIpKSx1PUIoKSxkPUIoKSx7d2lkdGg6ZixoZWlnaHQ6bX09WHMoZCksaD1JKCgpPT5pLnNpZGUrKGkuYWxpZ249PT1gY2VudGVyYD9gYDpgLSR7aS5hbGlnbn1gKSksZz1JKCgpPT50eXBlb2YgaS5jb2xsaXNpb25QYWRkaW5nPT1gbnVtYmVyYD9pLmNvbGxpc2lvblBhZGRpbmc6e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLC4uLmkuY29sbGlzaW9uUGFkZGluZ30pLHY9SSgoKT0+QXJyYXkuaXNBcnJheShpLmNvbGxpc2lvbkJvdW5kYXJ5KT9pLmNvbGxpc2lvbkJvdW5kYXJ5OltpLmNvbGxpc2lvbkJvdW5kYXJ5XSkseT1JKCgpPT4oe3BhZGRpbmc6Zy52YWx1ZSxib3VuZGFyeTp2LnZhbHVlLmZpbHRlcihMYyksYWx0Qm91bmRhcnk6di52YWx1ZS5sZW5ndGg+MH0pKSx4PUkoKCk9Pih7bWFpbkF4aXM6aS5zaWRlRmxpcCxjcm9zc0F4aXM6aS5hbGlnbkZsaXB9KSksUz1JKCgpPT5bT3Uoe21haW5BeGlzOmkuc2lkZU9mZnNldCttLnZhbHVlLGFsaWdubWVudEF4aXM6aS5hbGlnbk9mZnNldH0pLGkucHJpb3JpdGl6ZVBvc2l0aW9uJiZpLmF2b2lkQ29sbGlzaW9ucyYmQXUoey4uLnkudmFsdWUsLi4ueC52YWx1ZX0pLGkuYXZvaWRDb2xsaXNpb25zJiZrdSh7bWFpbkF4aXM6ITAsY3Jvc3NBeGlzOiEhaS5wcmlvcml0aXplUG9zaXRpb24sbGltaXRlcjppLnN0aWNreT09PWBwYXJ0aWFsYD9QdSgpOnZvaWQgMCwuLi55LnZhbHVlfSksIWkucHJpb3JpdGl6ZVBvc2l0aW9uJiZpLmF2b2lkQ29sbGlzaW9ucyYmQXUoey4uLnkudmFsdWUsLi4ueC52YWx1ZX0pLGp1KHsuLi55LnZhbHVlLGFwcGx5Oih7ZWxlbWVudHM6ZSxyZWN0czp0LGF2YWlsYWJsZVdpZHRoOm4sYXZhaWxhYmxlSGVpZ2h0OnJ9KT0+e2xldHt3aWR0aDppLGhlaWdodDphfT10LnJlZmVyZW5jZSxvPWUuZmxvYXRpbmcuc3R5bGU7by5zZXRQcm9wZXJ0eShgLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGhgLGAke259cHhgKSxvLnNldFByb3BlcnR5KGAtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHRgLGAke3J9cHhgKSxvLnNldFByb3BlcnR5KGAtLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aGAsYCR7aX1weGApLG8uc2V0UHJvcGVydHkoYC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodGAsYCR7YX1weGApfX0pLGQudmFsdWUmJnp1KHtlbGVtZW50OmQudmFsdWUscGFkZGluZzppLmFycm93UGFkZGluZ30pLFJjKHthcnJvd1dpZHRoOmYudmFsdWUsYXJyb3dIZWlnaHQ6bS52YWx1ZSxkaXI6bC52YWx1ZX0pLGkuaGlkZVdoZW5EZXRhY2hlZCYmTXUoe3N0cmF0ZWd5OmByZWZlcmVuY2VIaWRkZW5gLC4uLnkudmFsdWV9KV0pLHtmbG9hdGluZ1N0eWxlczpDLHBsYWNlbWVudDp3LGlzUG9zaXRpb25lZDpULG1pZGRsZXdhcmVEYXRhOkUsdXBkYXRlOmVlfT1IdShJKCgpPT5pLnJlZmVyZW5jZT8/by5hbmNob3IudmFsdWUpLHUse3N0cmF0ZWd5OmkucG9zaXRpb25TdHJhdGVneSxwbGFjZW1lbnQ6aCx3aGlsZUVsZW1lbnRzTW91bnRlZDooLi4uZSk9PkR1KC4uLmUse2xheW91dFNoaWZ0OiFpLmRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0LGFuaW1hdGlvbkZyYW1lOmkudXBkYXRlUG9zaXRpb25TdHJhdGVneT09PWBhbHdheXNgfSksbWlkZGxld2FyZTpTfSksRD1JKCgpPT56Yyh3LnZhbHVlKVswXSksbmU9SSgoKT0+emMody52YWx1ZSlbMV0pO3RlKCgpPT57VC52YWx1ZSYmYShgcGxhY2VkYCl9KTtsZXQgcmU9SSgoKT0+e2xldCBlPUUudmFsdWUuYXJyb3c/LmNlbnRlck9mZnNldCE9PTA7cmV0dXJuIGkuaGlkZVNoaWZ0ZWRBcnJvdyYmZX0pLE89QihgYCk7cmV0dXJuIEwoKCk9PntjLnZhbHVlJiYoTy52YWx1ZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjLnZhbHVlKS56SW5kZXgpfSksS3Uoe3BsYWNlZFNpZGU6RCxvbkFycm93Q2hhbmdlOmU9PmQudmFsdWU9ZSxhcnJvd1g6SSgoKT0+RS52YWx1ZS5hcnJvdz8ueD8/MCksYXJyb3dZOkkoKCk9PkUudmFsdWUuYXJyb3c/Lnk/PzApLHNob3VsZEhpZGVBcnJvdzpyZX0pLChlLHQpPT4oeigpLE4oYGRpdmAse3JlZl9rZXk6YGZsb2F0aW5nUmVmYCxyZWY6dSwiZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXIiOmBgLGRpcjpQKGwpLHN0eWxlOnV0KHsuLi5QKEMpLHRyYW5zZm9ybTpQKFQpP1AoQykudHJhbnNmb3JtOmB0cmFuc2xhdGUoMCwgLTIwMCUpYCxtaW5XaWR0aDpgbWF4LWNvbnRlbnRgLHpJbmRleDpPLnZhbHVlLCItLXJla2EtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4iOltQKEUpLnRyYW5zZm9ybU9yaWdpbj8ueCxQKEUpLnRyYW5zZm9ybU9yaWdpbj8ueV0uam9pbihgIGApLC4uLlAoRSkuaGlkZT8ucmVmZXJlbmNlSGlkZGVuJiZ7dmlzaWJpbGl0eTpgaGlkZGVuYCxwb2ludGVyRXZlbnRzOmBub25lYH19KX0sW2kubWVtb0RlcGVuZGVuY2llcz9jZShbaS5hc0NoaWxkLGkuYXMsRC52YWx1ZSxuZS52YWx1ZSxQKFQpLC4uLk9iamVjdC52YWx1ZXMoZS4kYXR0cnMpLC4uLmkubWVtb0RlcGVuZGVuY2llc10sKCk9Pih6KCksVihQKHApLGIoe2tleTowLHJlZjpQKHMpfSxlLiRhdHRycyx7ImFzLWNoaWxkIjppLmFzQ2hpbGQsYXM6aS5hcywiZGF0YS1zaWRlIjpELnZhbHVlLCJkYXRhLWFsaWduIjpuZS52YWx1ZSxzdHlsZTp7YW5pbWF0aW9uOlAoVCk/dm9pZCAwOmBub25lYH19KSx7ZGVmYXVsdDpfKCgpPT5bUihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGFzLWNoaWxkYCxgYXNgLGBkYXRhLXNpZGVgLGBkYXRhLWFsaWduYCxgc3R5bGVgXSkpLHQsMCk6KHooKSxWKFAocCksYih7a2V5OjEscmVmOlAocyl9LGUuJGF0dHJzLHsiYXMtY2hpbGQiOmkuYXNDaGlsZCxhczppLmFzLCJkYXRhLXNpZGUiOkQudmFsdWUsImRhdGEtYWxpZ24iOm5lLnZhbHVlLGRpcjpQKGwpLHN0eWxlOnthbmltYXRpb246UChUKT92b2lkIDA6YG5vbmVgfX0pLHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2LFtgYXMtY2hpbGRgLGBhc2AsYGRhdGEtc2lkZWAsYGRhdGEtYWxpZ25gLGBkaXJgLGBzdHlsZWBdKSldLDEyLFV1KSl9fSk7ZnVuY3Rpb24gSnUoZSl7bGV0IHQ9cih7bm9uY2U6QigpfSk7cmV0dXJuIEkoKCk9PmU/LnZhbHVlfHx0Lm5vbmNlPy52YWx1ZSl9dmFyIFl1PVtgIGAsYEVudGVyYCxgQXJyb3dVcGAsYEFycm93RG93bmBdLFh1PVtgIGAsYEVudGVyYF07ZnVuY3Rpb24gWnUoZSx0LG4pe3JldHVybiBlPT09dm9pZCAwPyExOkFycmF5LmlzQXJyYXkoZSk/ZS5zb21lKGU9PlF1KGUsdCxuKSk6UXUoZSx0LG4pfWZ1bmN0aW9uIFF1KGUsdCxuKXtyZXR1cm4gZT09PXZvaWQgMHx8dD09PXZvaWQgMD8hMTp0eXBlb2YgZT09YHN0cmluZ2A/ZT09PXQ6dHlwZW9mIG49PWBmdW5jdGlvbmA/bihlLHQpOnR5cGVvZiBuPT1gc3RyaW5nYD9lPy5bbl09PT10Py5bbl06d3MoZSx0KX1mdW5jdGlvbiAkdShlKXtyZXR1cm4gZT09bnVsbHx8ZT09PWBgfHxBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PTB9dmFyIGVkPVtgdmFsdWVgXSxbdGQsbmRdPWEoYFNlbGVjdFJvb3RgKSxyZD1qKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RSb290YCxwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxudWxsYWJsZVZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OmBgfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYCxgdXBkYXRlOm9wZW5gXSxzZXR1cCh0LHtlbWl0Om59KXtsZXQgcj10LGk9bix7cmVxdWlyZWQ6YSxkaXNhYmxlZDpvLG11bHRpcGxlOnMsZGlyOmN9PSRlKHIpLGw9UyhyLGBtb2RlbFZhbHVlYCxpLHtkZWZhdWx0VmFsdWU6ci5kZWZhdWx0VmFsdWU/PyhzLnZhbHVlP1tdOnZvaWQgMCkscGFzc2l2ZTpyLm1vZGVsVmFsdWU9PT12b2lkIDAsZGVlcDohMH0pLHU9UyhyLGBvcGVuYCxpLHtkZWZhdWx0VmFsdWU6ci5kZWZhdWx0T3BlbixwYXNzaXZlOnIub3Blbj09PXZvaWQgMH0pLGQ9QigpLGY9QigpLHA9Qih7eDowLHk6MH0pLG09SSgoKT0+cy52YWx1ZSYmQXJyYXkuaXNBcnJheShsLnZhbHVlKT9sLnZhbHVlPy5sZW5ndGg9PT0wOkRzKGwudmFsdWUpKTtqYyh7aXNQcm92aWRlcjohMH0pO2xldCBoPWUoYyksZz16cyhkKSx2PUIobmV3IFNldCkseT1JKCgpPT5BcnJheS5mcm9tKHYudmFsdWUpLm1hcChlPT5lLnZhbHVlKS5qb2luKGA7YCkpO2Z1bmN0aW9uIHgoZSl7aWYocy52YWx1ZSl7bGV0IHQ9QXJyYXkuaXNBcnJheShsLnZhbHVlKT9bLi4ubC52YWx1ZV06W10sbj10LmZpbmRJbmRleCh0PT5RdSh0LGUsci5ieSkpO249PT0tMT90LnB1c2goZSk6dC5zcGxpY2UobiwxKSxsLnZhbHVlPVsuLi50XX1lbHNlIGwudmFsdWU9ZX1mdW5jdGlvbiBDKGUpe3JldHVybiBBcnJheS5mcm9tKHYudmFsdWUpLmZpbmQodD0+WnUoZSx0LnZhbHVlLHIuYnkpKX1yZXR1cm4gbmQoe3RyaWdnZXJFbGVtZW50OmQsb25UcmlnZ2VyQ2hhbmdlOmU9PntkLnZhbHVlPWV9LHZhbHVlRWxlbWVudDpmLG9uVmFsdWVFbGVtZW50Q2hhbmdlOmU9PntmLnZhbHVlPWV9LGNvbnRlbnRJZDpgYCxtb2RlbFZhbHVlOmwsb25WYWx1ZUNoYW5nZTp4LGJ5OnIuYnksb3Blbjp1LG11bHRpcGxlOnMscmVxdWlyZWQ6YSxvbk9wZW5DaGFuZ2U6ZT0+e3UudmFsdWU9ZX0sZGlyOmgsdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOnAsZGlzYWJsZWQ6byxpc0VtcHR5TW9kZWxWYWx1ZTptLG9wdGlvbnNTZXQ6dixvbk9wdGlvbkFkZDplPT57bGV0IHQ9QyhlLnZhbHVlKTt0JiZ2LnZhbHVlLmRlbGV0ZSh0KSx2LnZhbHVlLmFkZChlKX0sb25PcHRpb25SZW1vdmU6ZT0+e2xldCB0PUMoZS52YWx1ZSk7dCYmdi52YWx1ZS5kZWxldGUodCl9fSksKGUsdCk9Pih6KCksVihQKEZjKSxudWxsLHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCx7bW9kZWxWYWx1ZTpQKGwpLG9wZW46UCh1KX0pLFAoZykmJmUubmFtZT8oeigpLFYoaWQse2tleTp5LnZhbHVlLCJhcmlhLWhpZGRlbiI6YHRydWVgLHRhYmluZGV4OmAtMWAsbXVsdGlwbGU6UChzKSxyZXF1aXJlZDpQKGEpLG5hbWU6ZS5uYW1lLGF1dG9jb21wbGV0ZTplLmF1dG9jb21wbGV0ZSxkaXNhYmxlZDpQKG8pLHZhbHVlOlAobCl9LHtkZWZhdWx0Ol8oKCk9PltQKERzKShQKGwpKT8oeigpLE4oYG9wdGlvbmAse2tleTowLHZhbHVlOmUubnVsbGFibGVWYWx1ZX0sbnVsbCw4LGVkKSk6SChgdi1pZmAsITApLCh6KCEwKSxOKHcsbnVsbCxEZShBcnJheS5mcm9tKHYudmFsdWUpLGU9Pih6KCksTihgb3B0aW9uYCxiKHtrZXk6ZS52YWx1ZT8/YGB9LHtyZWZfZm9yOiEwfSxlKSxudWxsLDE2KSkpLDEyOCkpXSksXzoxfSw4LFtgbXVsdGlwbGVgLGByZXF1aXJlZGAsYG5hbWVgLGBhdXRvY29tcGxldGVgLGBkaXNhYmxlZGAsYHZhbHVlYF0pKTpIKGB2LWlmYCwhMCldKSxfOjN9KSl9fSksaWQ9aih7X19uYW1lOmBCdWJibGVTZWxlY3RgLHByb3BzOnthdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9ybTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sdmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCB0PWUsbj1CKCkscj10ZCgpO2woKCk9PnQudmFsdWUsKGUsdCk9PntsZXQgcj13aW5kb3cuSFRNTFNlbGVjdEVsZW1lbnQucHJvdG90eXBlLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGB2YWx1ZWApLnNldDtpZihlIT09dCYmaSYmbi52YWx1ZSl7bGV0IHQ9bmV3IEV2ZW50KGBjaGFuZ2VgLHtidWJibGVzOiEwfSk7aS5jYWxsKG4udmFsdWUsZSksbi52YWx1ZS5kaXNwYXRjaEV2ZW50KHQpfX0pO2Z1bmN0aW9uIGkoZSl7ci5vblZhbHVlQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1yZXR1cm4oZSxyKT0+KHooKSxWKFAoTWMpLHsiYXMtY2hpbGQiOmBgfSx7ZGVmYXVsdDpfKCgpPT5bTShgc2VsZWN0YCxiKHtyZWZfa2V5OmBzZWxlY3RFbGVtZW50YCxyZWY6bn0sdCx7b25JbnB1dDppfSksW1IoZS4kc2xvdHMsYGRlZmF1bHRgKV0sMTYpXSksXzozfSkpfX0pLGFkPWooe19fbmFtZTpgU2VsZWN0UG9wcGVyUG9zaXRpb25gLHByb3BzOnttZW1vRGVwZW5kZW5jaWVzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YHN0YXJ0YH0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IHQ9aShlKTtyZXR1cm4oZSxuKT0+KHooKSxWKFAocXUpLGIoUCh0KSx7c3R5bGU6e2JveFNpemluZzpgYm9yZGVyLWJveGAsIi0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjpgdmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbilgLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjpgdmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKWAsIi0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjpgdmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodClgLCItLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgiOmB2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpYCwiLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodCI6YHZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpYH19KSx7ZGVmYXVsdDpfKCgpPT5bUihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNikpfX0pLG9kPXtvblZpZXdwb3J0Q2hhbmdlOigpPT57fSxpdGVtVGV4dFJlZkNhbGxiYWNrOigpPT57fSxpdGVtUmVmQ2FsbGJhY2s6KCk9Pnt9fSxbc2QsY2RdPWEoYFNlbGVjdENvbnRlbnRgKSxsZD1qKHtfX25hbWU6YFNlbGVjdENvbnRlbnRJbXBsYCxwcm9wczp7cG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGl0ZW0tYWxpZ25lZGB9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sbWVtb0RlcGVuZGVuY2llczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzdGFydGB9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbYGNsb3NlQXV0b0ZvY3VzYCxgZXNjYXBlS2V5RG93bmAsYHBvaW50ZXJEb3duT3V0c2lkZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCBuPWUscj10LGE9dGQoKTtMcygpLE5zKG4uYm9keUxvY2spO2xldHtDb2xsZWN0aW9uU2xvdDpvLGdldEl0ZW1zOnN9PWpjKCksYz1CKCk7WXMoYyk7bGV0e3NlYXJjaDp1LGhhbmRsZVR5cGVhaGVhZFNlYXJjaDpkfT1RcygpLGY9QigpLHA9QigpLG09QigpLGg9QighMSksZz1CKCExKSx2PUIoITEpO2Z1bmN0aW9uIHkoKXtwLnZhbHVlJiZjLnZhbHVlJiZPYyhbcC52YWx1ZSxjLnZhbHVlXSl9bChoLCgpPT57eSgpfSk7bGV0e29uT3BlbkNoYW5nZTpTLHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjpDfT1hO0woZT0+e2lmKCFjLnZhbHVlKXJldHVybjtsZXQgdD17eDowLHk6MH0sbj1lPT57dD17eDpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVgpLShDLnZhbHVlPy54Pz8wKSkseTpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVkpLShDLnZhbHVlPy55Pz8wKSl9fSxyPWU9PntlLnBvaW50ZXJUeXBlIT09YHRvdWNoYCYmKHQueDw9MTAmJnQueTw9MTA/ZS5wcmV2ZW50RGVmYXVsdCgpOmMudmFsdWU/LmNvbnRhaW5zKGUudGFyZ2V0KXx8UyghMSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcG9pbnRlcm1vdmVgLG4pLEMudmFsdWU9bnVsbCl9O0MudmFsdWUhPT1udWxsJiYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihgcG9pbnRlcm1vdmVgLG4pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYHBvaW50ZXJ1cGAscix7Y2FwdHVyZTohMCxvbmNlOiEwfSkpLGUoKCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGBwb2ludGVybW92ZWAsbiksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcG9pbnRlcnVwYCxyLHtjYXB0dXJlOiEwfSl9KX0pO2Z1bmN0aW9uIHcoZSl7bGV0IHQ9ZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5tZXRhS2V5O2lmKGUua2V5PT09YFRhYmAmJmUucHJldmVudERlZmF1bHQoKSwhdCYmZS5rZXkubGVuZ3RoPT09MSYmZChlLmtleSxzKCkpLFtgQXJyb3dVcGAsYEFycm93RG93bmAsYEhvbWVgLGBFbmRgXS5pbmNsdWRlcyhlLmtleSkpe2xldCB0PVsuLi5zKCkubWFwKGU9PmUucmVmKV07aWYoW2BBcnJvd1VwYCxgRW5kYF0uaW5jbHVkZXMoZS5rZXkpJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpKSxbYEFycm93VXBgLGBBcnJvd0Rvd25gXS5pbmNsdWRlcyhlLmtleSkpe2xldCBuPWUudGFyZ2V0LHI9dC5pbmRleE9mKG4pO3Q9dC5zbGljZShyKzEpfXNldFRpbWVvdXQoKCk9Pk9jKHQpKSxlLnByZXZlbnREZWZhdWx0KCl9fWxldCBUPUkoKCk9Pm4ucG9zaXRpb249PT1gcG9wcGVyYD9uOnt9KSxFPWkoVC52YWx1ZSk7cmV0dXJuIGNkKHtjb250ZW50OmMsdmlld3BvcnQ6ZixvblZpZXdwb3J0Q2hhbmdlOmU9PntmLnZhbHVlPWV9LGl0ZW1SZWZDYWxsYmFjazooZSx0LG4pPT57bGV0IHI9IWcudmFsdWUmJiFuLGk9WnUoYS5tb2RlbFZhbHVlLnZhbHVlLHQsYS5ieSk7aWYoYS5tdWx0aXBsZS52YWx1ZSl7aWYodi52YWx1ZSlyZXR1cm47KGl8fHIpJiYocC52YWx1ZT1lLGkmJih2LnZhbHVlPSEwKSl9ZWxzZShpfHxyKSYmKHAudmFsdWU9ZSk7ciYmKGcudmFsdWU9ITApfSxzZWxlY3RlZEl0ZW06cCxzZWxlY3RlZEl0ZW1UZXh0Om0sb25JdGVtTGVhdmU6KCk9PntjLnZhbHVlPy5mb2N1cygpfSxpdGVtVGV4dFJlZkNhbGxiYWNrOihlLHQsbik9PntsZXQgcj0hZy52YWx1ZSYmIW47KFp1KGEubW9kZWxWYWx1ZS52YWx1ZSx0LGEuYnkpfHxyKSYmKG0udmFsdWU9ZSl9LGZvY3VzU2VsZWN0ZWRJdGVtOnkscG9zaXRpb246bi5wb3NpdGlvbixpc1Bvc2l0aW9uZWQ6aCxzZWFyY2hSZWY6dX0pLChlLHQpPT4oeigpLFYoUChvKSxudWxsLHtkZWZhdWx0Ol8oKCk9PltGKFAod2MpLHsiYXMtY2hpbGQiOmBgLG9uTW91bnRBdXRvRm9jdXM6dFs2XXx8PXgoKCk9Pnt9LFtgcHJldmVudGBdKSxvblVubW91bnRBdXRvRm9jdXM6dFs3XXx8PWU9PntyKGBjbG9zZUF1dG9Gb2N1c2AsZSksIWUuZGVmYXVsdFByZXZlbnRlZCYmKFAoYSkudHJpZ2dlckVsZW1lbnQudmFsdWU/LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksZS5wcmV2ZW50RGVmYXVsdCgpKX19LHtkZWZhdWx0Ol8oKCk9PltGKFAodWMpLHsiYXMtY2hpbGQiOmBgLCJkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHMiOmUuZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLG9uRm9jdXNPdXRzaWRlOnRbMl18fD14KCgpPT57fSxbYHByZXZlbnRgXSksb25EaXNtaXNzOnRbM118fD1lPT5QKGEpLm9uT3BlbkNoYW5nZSghMSksb25Fc2NhcGVLZXlEb3duOnRbNF18fD1lPT5yKGBlc2NhcGVLZXlEb3duYCxlKSxvblBvaW50ZXJEb3duT3V0c2lkZTp0WzVdfHw9ZT0+cihgcG9pbnRlckRvd25PdXRzaWRlYCxlKX0se2RlZmF1bHQ6XygoKT0+Wyh6KCksVihBZShlLnBvc2l0aW9uPT09YHBvcHBlcmA/YWQ6ZmQpLGIoey4uLmUuJGF0dHJzLC4uLlAoRSl9LHtpZDpQKGEpLmNvbnRlbnRJZCxyZWY6ZT0+e2lmKCFlKXJldHVybjtsZXQgdD1QKEQpKGUpO3Q/Lmhhc0F0dHJpYnV0ZShgZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXJgKT9jLnZhbHVlPXQuZmlyc3RFbGVtZW50Q2hpbGQ6Yy52YWx1ZT10fSxyb2xlOmBsaXN0Ym94YCwiZGF0YS1zdGF0ZSI6UChhKS5vcGVuLnZhbHVlP2BvcGVuYDpgY2xvc2VkYCxkaXI6UChhKS5kaXIudmFsdWUsc3R5bGU6e2Rpc3BsYXk6YGZsZXhgLGZsZXhEaXJlY3Rpb246YGNvbHVtbmAsb3V0bGluZTpgbm9uZWB9LG9uQ29udGV4dG1lbnU6dFswXXx8PXgoKCk9Pnt9LFtgcHJldmVudGBdKSxvblBsYWNlZDp0WzFdfHw9ZT0+aC52YWx1ZT0hMCxvbktleWRvd246d30pLHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2LFtgaWRgLGBkYXRhLXN0YXRlYCxgZGlyYCxgb25LZXlkb3duYF0pKV0pLF86M30sOCxbYGRpc2FibGUtb3V0c2lkZS1wb2ludGVyLWV2ZW50c2BdKV0pLF86M30pXSksXzozfSkpfX0pLFt1ZCxkZF09YShgU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbmApLGZkPWooe2luaGVyaXRBdHRyczohMSxfX25hbWU6YFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb25gLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbYHBsYWNlZGBdLHNldHVwKGUse2VtaXQ6bn0pe2xldCByPWUsaT1uLHtnZXRJdGVtczphfT1qYygpLG89dGQoKSxzPXNkKCksYz1CKCExKSxsPUIoITApLHU9QigpLHtmb3J3YXJkUmVmOmQsY3VycmVudEVsZW1lbnQ6Zn09dCgpLHt2aWV3cG9ydDptLHNlbGVjdGVkSXRlbTpoLHNlbGVjdGVkSXRlbVRleHQ6dixmb2N1c1NlbGVjdGVkSXRlbTp5fT1zO2Z1bmN0aW9uIHgoKXtpZihvLnRyaWdnZXJFbGVtZW50LnZhbHVlJiZvLnZhbHVlRWxlbWVudC52YWx1ZSYmdS52YWx1ZSYmZi52YWx1ZSYmbT8udmFsdWUmJmg/LnZhbHVlJiZ2Py52YWx1ZSl7bGV0IGU9by50cmlnZ2VyRWxlbWVudC52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0PWYudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1vLnZhbHVlRWxlbWVudC52YWx1ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPXYudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoby5kaXIudmFsdWUhPT1gcnRsYCl7bGV0IGk9ci5sZWZ0LXQubGVmdCxhPW4ubGVmdC1pLG89ZS5sZWZ0LWEscz1lLndpZHRoK28sYz1NYXRoLm1heChzLHQud2lkdGgpLGw9d2luZG93LmlubmVyV2lkdGgtMTAsZD1UcyhhLDEwLE1hdGgubWF4KDEwLGwtYykpO3UudmFsdWUuc3R5bGUubWluV2lkdGg9YCR7c31weGAsdS52YWx1ZS5zdHlsZS5sZWZ0PWAke2R9cHhgfWVsc2V7bGV0IGk9dC5yaWdodC1yLnJpZ2h0LGE9d2luZG93LmlubmVyV2lkdGgtbi5yaWdodC1pLG89d2luZG93LmlubmVyV2lkdGgtZS5yaWdodC1hLHM9ZS53aWR0aCtvLGM9TWF0aC5tYXgocyx0LndpZHRoKSxsPXdpbmRvdy5pbm5lcldpZHRoLTEwLGQ9VHMoYSwxMCxNYXRoLm1heCgxMCxsLWMpKTt1LnZhbHVlLnN0eWxlLm1pbldpZHRoPWAke3N9cHhgLHUudmFsdWUuc3R5bGUucmlnaHQ9YCR7ZH1weGB9bGV0IHM9YSgpLm1hcChlPT5lLnJlZiksbD13aW5kb3cuaW5uZXJIZWlnaHQtMjAsZD1tLnZhbHVlLnNjcm9sbEhlaWdodCxwPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGYudmFsdWUpLGc9TnVtYmVyLnBhcnNlSW50KHAuYm9yZGVyVG9wV2lkdGgsMTApLF89TnVtYmVyLnBhcnNlSW50KHAucGFkZGluZ1RvcCwxMCkseT1OdW1iZXIucGFyc2VJbnQocC5ib3JkZXJCb3R0b21XaWR0aCwxMCksYj1OdW1iZXIucGFyc2VJbnQocC5wYWRkaW5nQm90dG9tLDEwKSx4PWcrXytkK2IreSxTPU1hdGgubWluKGgudmFsdWUub2Zmc2V0SGVpZ2h0KjUseCksQz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShtLnZhbHVlKSx3PU51bWJlci5wYXJzZUludChDLnBhZGRpbmdUb3AsMTApLFQ9TnVtYmVyLnBhcnNlSW50KEMucGFkZGluZ0JvdHRvbSwxMCksRT1lLnRvcCtlLmhlaWdodC8yLTEwLGVlPWwtRSxEPWgudmFsdWUub2Zmc2V0SGVpZ2h0LzIsdGU9aC52YWx1ZS5vZmZzZXRUb3ArRCxuZT1nK18rdGUscmU9eC1uZTtpZihuZTw9RSl7bGV0IGU9aC52YWx1ZT09PXMuYXQoLTEpO3UudmFsdWUuc3R5bGUuYm90dG9tPWAwcHhgO2xldCB0PWYudmFsdWUuY2xpZW50SGVpZ2h0LW0udmFsdWUub2Zmc2V0VG9wLW0udmFsdWUub2Zmc2V0SGVpZ2h0LG49bmUrTWF0aC5tYXgoZWUsRCsoZT9UOjApK3QreSk7dS52YWx1ZS5zdHlsZS5oZWlnaHQ9YCR7bn1weGB9ZWxzZXtsZXQgZT1oLnZhbHVlPT09c1swXTt1LnZhbHVlLnN0eWxlLnRvcD1gMHB4YDtsZXQgdD1NYXRoLm1heChFLGcrbS52YWx1ZS5vZmZzZXRUb3ArKGU/dzowKStEKStyZTt1LnZhbHVlLnN0eWxlLmhlaWdodD1gJHt0fXB4YCxtLnZhbHVlLnNjcm9sbFRvcD1uZS1FK20udmFsdWUub2Zmc2V0VG9wfXUudmFsdWUuc3R5bGUubWFyZ2luPWAxMHB4IDBgLHUudmFsdWUuc3R5bGUubWluSGVpZ2h0PWAke1N9cHhgLHUudmFsdWUuc3R5bGUubWF4SGVpZ2h0PWAke2x9cHhgLGkoYHBsYWNlZGApLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+Yy52YWx1ZT0hMCl9fWxldCBTPUIoYGApO3ZlKGFzeW5jKCk9Pnthd2FpdCBBKCkseCgpLGYudmFsdWUmJihTLnZhbHVlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGYudmFsdWUpLnpJbmRleCl9KTtmdW5jdGlvbiBDKGUpe2UmJmwudmFsdWU9PT0hMCYmKHgoKSx5Py4oKSxsLnZhbHVlPSExKX1yZXR1cm4gZyhvLnRyaWdnZXJFbGVtZW50LCgpPT57eCgpfSksZGQoe2NvbnRlbnRXcmFwcGVyOnUsc2hvdWxkRXhwYW5kT25TY3JvbGxSZWY6YyxvblNjcm9sbEJ1dHRvbkNoYW5nZTpDfSksKGUsdCk9Pih6KCksTihgZGl2YCx7cmVmX2tleTpgY29udGVudFdyYXBwZXJFbGVtZW50YCxyZWY6dSxzdHlsZTp1dCh7ZGlzcGxheTpgZmxleGAsZmxleERpcmVjdGlvbjpgY29sdW1uYCxwb3NpdGlvbjpgZml4ZWRgLHpJbmRleDpTLnZhbHVlfSl9LFtGKFAocCksYih7cmVmOlAoZCksc3R5bGU6e2JveFNpemluZzpgYm9yZGVyLWJveGAsbWF4SGVpZ2h0OmAxMDAlYH19LHsuLi5lLiRhdHRycywuLi5yfSkse2RlZmF1bHQ6XygoKT0+W1IoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpXSw0KSl9fSkscGQ9aih7aW5oZXJpdEF0dHJzOiExLF9fbmFtZTpgU2VsZWN0UHJvdmlkZXJgLHByb3BzOntjb250ZXh0Ont0eXBlOk9iamVjdCxyZXF1aXJlZDohMH19LHNldHVwKGUpe3JldHVybiBuZChlLmNvbnRleHQpLGNkKG9kKSwoZSx0KT0+UihlLiRzbG90cyxgZGVmYXVsdGApfX0pLG1kPXtrZXk6MX0saGQ9aih7aW5oZXJpdEF0dHJzOiExLF9fbmFtZTpgU2VsZWN0Q29udGVudGAscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxib2R5TG9jazp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxtZW1vRGVwZW5kZW5jaWVzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhbGlnbk9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sY29sbGlzaW9uQm91bmRhcnk6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sY29sbGlzaW9uUGFkZGluZzp7dHlwZTpbTnVtYmVyLE9iamVjdF0scmVxdWlyZWQ6ITF9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LGVtaXRzOltgY2xvc2VBdXRvRm9jdXNgLGBlc2NhcGVLZXlEb3duYCxgcG9pbnRlckRvd25PdXRzaWRlYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IHI9ZSxpPW4ocix0KSxhPXRkKCksbz1CKCk7dmUoKCk9PntvLnZhbHVlPW5ldyBEb2N1bWVudEZyYWdtZW50fSk7bGV0IHM9QigpLGM9SSgoKT0+ci5mb3JjZU1vdW50fHxhLm9wZW4udmFsdWUpLHU9QihjLnZhbHVlKSxkO2Z1bmN0aW9uIGYoKXtkJiY9KGNsZWFyVGltZW91dChkKSx2b2lkIDApfXJldHVybiBsKGMsKGUsdCxuKT0+e2YoKSxkPXNldFRpbWVvdXQoKCk9Pnt1LnZhbHVlPWMudmFsdWUsZD12b2lkIDB9KSxuKGYpfSksa2UoZiksKGUsdCk9PmMudmFsdWV8fHUudmFsdWV8fHMudmFsdWU/LnByZXNlbnQ/KHooKSxWKFAocmMpLHtrZXk6MCxyZWZfa2V5OmBwcmVzZW5jZVJlZmAscmVmOnMscHJlc2VudDpjLnZhbHVlfSx7ZGVmYXVsdDpfKCgpPT5bRihsZCx3ZShtKHsuLi5QKGkpLC4uLmUuJGF0dHJzfSkpLHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2KV0pLF86M30sOCxbYHByZXNlbnRgXSkpOm8udmFsdWU/KHooKSxOKGBkaXZgLG1kLFsoeigpLFYob2Use3RvOm8udmFsdWV9LFtGKHBkLHtjb250ZXh0OlAoYSl9LHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bjb250ZXh0YF0pXSw4LFtgdG9gXSkpXSkpOkgoYHYtaWZgLCEwKX19KSxnZD1qKHtfX25hbWU6YFNlbGVjdEljb25gLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgc3BhbmB9fSxzZXR1cChlKXtyZXR1cm4oZSx0KT0+KHooKSxWKFAocCkseyJhcmlhLWhpZGRlbiI6YHRydWVgLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGR9LHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCx7fSwoKT0+W3RbMF18fD1LZShg4pa8YCldKV0pLF86M30sOCxbYGFzYCxgYXMtY2hpbGRgXSkpfX0pLFtfZCx2ZF09YShgU2VsZWN0SXRlbWApLHlkPWooe19fbmFtZTpgU2VsZWN0SXRlbWAscHJvcHM6e3ZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHRleHRWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOltgc2VsZWN0YF0sc2V0dXAoZSx7ZW1pdDpufSl7bGV0IHI9ZSxpPW4se2Rpc2FibGVkOmF9PSRlKHIpLHM9dGQoKSxjPXNkKCkse2ZvcndhcmRSZWY6bCxjdXJyZW50RWxlbWVudDp1fT10KCkse0NvbGxlY3Rpb25JdGVtOmR9PWpjKCksZj1JKCgpPT5adShzLm1vZGVsVmFsdWU/LnZhbHVlLHIudmFsdWUscy5ieSkpLG09QighMSksaD1CKHIudGV4dFZhbHVlPz9gYCksZz1vKHZvaWQgMCxgcmVrYS1zZWxlY3QtaXRlbS10ZXh0YCk7YXN5bmMgZnVuY3Rpb24gdihlKXtlLmRlZmF1bHRQcmV2ZW50ZWR8fEVzKGBzZWxlY3Quc2VsZWN0YCx5LHtvcmlnaW5hbEV2ZW50OmUsdmFsdWU6ci52YWx1ZX0pfWFzeW5jIGZ1bmN0aW9uIHkoZSl7YXdhaXQgQSgpLGkoYHNlbGVjdGAsZSksIWUuZGVmYXVsdFByZXZlbnRlZCYmKGEudmFsdWV8fChzLm9uVmFsdWVDaGFuZ2Uoci52YWx1ZSkscy5tdWx0aXBsZS52YWx1ZXx8cy5vbk9wZW5DaGFuZ2UoITEpKSl9YXN5bmMgZnVuY3Rpb24gYihlKXthd2FpdCBBKCksIWUuZGVmYXVsdFByZXZlbnRlZCYmKGEudmFsdWU/Yy5vbkl0ZW1MZWF2ZT8uKCk6ZS5jdXJyZW50VGFyZ2V0Py5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pKX1hc3luYyBmdW5jdGlvbiBTKGUpe2F3YWl0IEEoKSwhZS5kZWZhdWx0UHJldmVudGVkJiZlLmN1cnJlbnRUYXJnZXQ9PT1aKCkmJmMub25JdGVtTGVhdmU/LigpfWFzeW5jIGZ1bmN0aW9uIEMoZSl7YXdhaXQgQSgpLCFlLmRlZmF1bHRQcmV2ZW50ZWQmJihjLnNlYXJjaFJlZj8udmFsdWU9PT1gYHx8ZS5rZXkhPT1gIGApJiYoWHUuaW5jbHVkZXMoZS5rZXkpJiZ2KGUpLGUua2V5PT09YCBgJiZlLnByZXZlbnREZWZhdWx0KCkpfWlmKHIudmFsdWU9PT1gYCl0aHJvdyBFcnJvcihgQSA8U2VsZWN0SXRlbSAvPiBtdXN0IGhhdmUgYSB2YWx1ZSBwcm9wIHRoYXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBTZWxlY3QgdmFsdWUgY2FuIGJlIHNldCB0byBhbiBlbXB0eSBzdHJpbmcgdG8gY2xlYXIgdGhlIHNlbGVjdGlvbiBhbmQgc2hvdyB0aGUgcGxhY2Vob2xkZXIuYCk7cmV0dXJuIHZlKCgpPT57dS52YWx1ZSYmYy5pdGVtUmVmQ2FsbGJhY2sodS52YWx1ZSxyLnZhbHVlLHIuZGlzYWJsZWQpfSksdmQoe3ZhbHVlOnIudmFsdWUsZGlzYWJsZWQ6YSx0ZXh0SWQ6Zyxpc1NlbGVjdGVkOmYsb25JdGVtVGV4dENoYW5nZTplPT57aC52YWx1ZT0oKGgudmFsdWV8fGU/LnRleHRDb250ZW50KT8/YGApLnRyaW0oKX19KSwoZSx0KT0+KHooKSxWKFAoZCkse3ZhbHVlOnt0ZXh0VmFsdWU6aC52YWx1ZX19LHtkZWZhdWx0Ol8oKCk9PltGKFAocCkse3JlZjpQKGwpLHJvbGU6YG9wdGlvbmAsImFyaWEtbGFiZWxsZWRieSI6UChnKSwiZGF0YS1oaWdobGlnaHRlZCI6bS52YWx1ZT9gYDp2b2lkIDAsImFyaWEtc2VsZWN0ZWQiOmYudmFsdWUsImRhdGEtc3RhdGUiOmYudmFsdWU/YGNoZWNrZWRgOmB1bmNoZWNrZWRgLCJhcmlhLWRpc2FibGVkIjpQKGEpfHx2b2lkIDAsImRhdGEtZGlzYWJsZWQiOlAoYSk/YGA6dm9pZCAwLHRhYmluZGV4OlAoYSk/dm9pZCAwOi0xLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsb25Gb2N1czp0WzBdfHw9ZT0+bS52YWx1ZT0hMCxvbkJsdXI6dFsxXXx8PWU9Pm0udmFsdWU9ITEsb25Qb2ludGVydXA6dixvblBvaW50ZXJkb3duOnRbMl18fD1lPT57ZS5jdXJyZW50VGFyZ2V0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9LG9uVG91Y2hlbmQ6dFszXXx8PXgoKCk9Pnt9LFtgcHJldmVudGAsYHN0b3BgXSksb25Qb2ludGVybW92ZTpiLG9uUG9pbnRlcmxlYXZlOlMsb25LZXlkb3duOkN9LHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2BhcmlhLWxhYmVsbGVkYnlgLGBkYXRhLWhpZ2hsaWdodGVkYCxgYXJpYS1zZWxlY3RlZGAsYGRhdGEtc3RhdGVgLGBhcmlhLWRpc2FibGVkYCxgZGF0YS1kaXNhYmxlZGAsYHRhYmluZGV4YCxgYXNgLGBhcy1jaGlsZGBdKV0pLF86M30sOCxbYHZhbHVlYF0pKX19KSxiZD1qKHtfX25hbWU6YFNlbGVjdEl0ZW1JbmRpY2F0b3JgLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgc3BhbmB9fSxzZXR1cChlKXtsZXQgdD1lLG49X2QoKTtyZXR1cm4oZSxyKT0+UChuKS5pc1NlbGVjdGVkLnZhbHVlPyh6KCksVihQKHApLGIoe2tleTowLCJhcmlhLWhpZGRlbiI6YHRydWVgfSx0KSx7ZGVmYXVsdDpfKCgpPT5bUihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNikpOkgoYHYtaWZgLCEwKX19KSx4ZD1qKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RJdGVtVGV4dGAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzcGFuYH19LHNldHVwKGUpe2xldCBuPWUscj10ZCgpLGk9c2QoKSxhPV9kKCkse2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDpzfT10KCksYz1JKCgpPT4oe3ZhbHVlOmEudmFsdWUsZGlzYWJsZWQ6YS5kaXNhYmxlZC52YWx1ZSx0ZXh0Q29udGVudDpzLnZhbHVlPy50ZXh0Q29udGVudD8/YS52YWx1ZT8udG9TdHJpbmcoKT8/YGB9KSk7cmV0dXJuIHZlKCgpPT57cy52YWx1ZSYmKGEub25JdGVtVGV4dENoYW5nZShzLnZhbHVlKSxpLml0ZW1UZXh0UmVmQ2FsbGJhY2socy52YWx1ZSxhLnZhbHVlLGEuZGlzYWJsZWQudmFsdWUpLHIub25PcHRpb25BZGQoYy52YWx1ZSkpfSksa2UoKCk9PntyLm9uT3B0aW9uUmVtb3ZlKGMudmFsdWUpfSksKGUsdCk9Pih6KCksVihQKHApLGIoe2lkOlAoYSkudGV4dElkLHJlZjpQKG8pfSx7Li4ubiwuLi5lLiRhdHRyc30pLHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2LFtgaWRgXSkpfX0pLFNkPWooe19fbmFtZTpgU2VsZWN0UG9ydGFsYCxwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KHooKSxWKFAoa2MpLHdlKG0odCkpLHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2KSl9fSksQ2Q9aih7X19uYW1lOmBTZWxlY3RTY3JvbGxCdXR0b25JbXBsYCxlbWl0czpbYGF1dG9TY3JvbGxgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgbj10LHtnZXRJdGVtczpyfT1qYygpLGk9c2QoKSxhPUIobnVsbCk7ZnVuY3Rpb24gbygpe2EudmFsdWUhPT1udWxsJiYod2luZG93LmNsZWFySW50ZXJ2YWwoYS52YWx1ZSksYS52YWx1ZT1udWxsKX1MKCgpPT57cigpLm1hcChlPT5lLnJlZikuZmluZChlPT5lPT09WigpKT8uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOmBuZWFyZXN0YH0pfSk7ZnVuY3Rpb24gcygpe2EudmFsdWU9PT1udWxsJiYoYS52YWx1ZT13aW5kb3cuc2V0SW50ZXJ2YWwoKCk9PntuKGBhdXRvU2Nyb2xsYCl9LDUwKSl9ZnVuY3Rpb24gYygpe2kub25JdGVtTGVhdmU/LigpLGEudmFsdWU9PT1udWxsJiYoYS52YWx1ZT13aW5kb3cuc2V0SW50ZXJ2YWwoKCk9PntuKGBhdXRvU2Nyb2xsYCl9LDUwKSl9cmV0dXJuIFQoKCk9Pm8oKSksKGUsdCk9Pih6KCksVihQKHApLGIoeyJhcmlhLWhpZGRlbiI6YHRydWVgLHN0eWxlOntmbGV4U2hyaW5rOjB9fSxlLiRwYXJlbnQ/LiRwcm9wcyx7b25Qb2ludGVyZG93bjpzLG9uUG9pbnRlcm1vdmU6YyxvblBvaW50ZXJsZWF2ZTp0WzBdfHw9KCk9PntvKCl9fSkse2RlZmF1bHQ6XygoKT0+W1IoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpKX19KSx3ZD1qKHtfX25hbWU6YFNlbGVjdFNjcm9sbERvd25CdXR0b25gLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtsZXQgbj1zZCgpLHI9bi5wb3NpdGlvbj09PWBpdGVtLWFsaWduZWRgP3VkKCk6dm9pZCAwLHtmb3J3YXJkUmVmOmksY3VycmVudEVsZW1lbnQ6YX09dCgpLG89QighMSk7cmV0dXJuIEwoZT0+e2lmKG4udmlld3BvcnQ/LnZhbHVlJiZuLmlzUG9zaXRpb25lZD8udmFsdWUpe2xldCB0PW4udmlld3BvcnQudmFsdWU7ZnVuY3Rpb24gcigpe2xldCBlPXQuc2Nyb2xsSGVpZ2h0LXQuY2xpZW50SGVpZ2h0O28udmFsdWU9TWF0aC5jZWlsKHQuc2Nyb2xsVG9wKTxlfXIoKSx0LmFkZEV2ZW50TGlzdGVuZXIoYHNjcm9sbGAsciksZSgoKT0+dC5yZW1vdmVFdmVudExpc3RlbmVyKGBzY3JvbGxgLHIpKX19KSxsKGEsKCk9PnthLnZhbHVlJiZyPy5vblNjcm9sbEJ1dHRvbkNoYW5nZShhLnZhbHVlKX0pLChlLHQpPT5vLnZhbHVlPyh6KCksVihDZCx7a2V5OjAscmVmOlAoaSksb25BdXRvU2Nyb2xsOnRbMF18fD0oKT0+e2xldHt2aWV3cG9ydDplLHNlbGVjdGVkSXRlbTp0fT1QKG4pO2U/LnZhbHVlJiZ0Py52YWx1ZSYmKGUudmFsdWUuc2Nyb2xsVG9wPWUudmFsdWUuc2Nyb2xsVG9wK3QudmFsdWUub2Zmc2V0SGVpZ2h0KX19LHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDUxMikpOkgoYHYtaWZgLCEwKX19KSxUZD1qKHtfX25hbWU6YFNlbGVjdFNjcm9sbFVwQnV0dG9uYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IG49c2QoKSxyPW4ucG9zaXRpb249PT1gaXRlbS1hbGlnbmVkYD91ZCgpOnZvaWQgMCx7Zm9yd2FyZFJlZjppLGN1cnJlbnRFbGVtZW50OmF9PXQoKSxvPUIoITEpO3JldHVybiBMKGU9PntpZihuLnZpZXdwb3J0Py52YWx1ZSYmbi5pc1Bvc2l0aW9uZWQ/LnZhbHVlKXtsZXQgdD1uLnZpZXdwb3J0LnZhbHVlO2Z1bmN0aW9uIHIoKXtvLnZhbHVlPXQuc2Nyb2xsVG9wPjB9cigpLHQuYWRkRXZlbnRMaXN0ZW5lcihgc2Nyb2xsYCxyKSxlKCgpPT50LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHNjcm9sbGAscikpfX0pLGwoYSwoKT0+e2EudmFsdWUmJnI/Lm9uU2Nyb2xsQnV0dG9uQ2hhbmdlKGEudmFsdWUpfSksKGUsdCk9Pm8udmFsdWU/KHooKSxWKENkLHtrZXk6MCxyZWY6UChpKSxvbkF1dG9TY3JvbGw6dFswXXx8PSgpPT57bGV0e3ZpZXdwb3J0OmUsc2VsZWN0ZWRJdGVtOnR9PVAobik7ZT8udmFsdWUmJnQ/LnZhbHVlJiYoZS52YWx1ZS5zY3JvbGxUb3A9ZS52YWx1ZS5zY3JvbGxUb3AtdC52YWx1ZS5vZmZzZXRIZWlnaHQpfX0se2RlZmF1bHQ6XygoKT0+W1IoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sNTEyKSk6SChgdi1pZmAsITApfX0pLEVkPWooe19fbmFtZTpgU2VsZWN0VHJpZ2dlcmAscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgYnV0dG9uYH19LHNldHVwKGUpe2xldCBuPWUscj10ZCgpLHtmb3J3YXJkUmVmOmksY3VycmVudEVsZW1lbnQ6YX09dCgpLHM9SSgoKT0+ci5kaXNhYmxlZD8udmFsdWV8fG4uZGlzYWJsZWQpO3IuY29udGVudElkfHw9byh2b2lkIDAsYHJla2Etc2VsZWN0LWNvbnRlbnRgKSx2ZSgoKT0+e3Iub25UcmlnZ2VyQ2hhbmdlKGEudmFsdWUpfSk7bGV0e2dldEl0ZW1zOmN9PWpjKCkse3NlYXJjaDpsLGhhbmRsZVR5cGVhaGVhZFNlYXJjaDp1LHJlc2V0VHlwZWFoZWFkOmR9PVFzKCk7ZnVuY3Rpb24gZigpe3MudmFsdWV8fChyLm9uT3BlbkNoYW5nZSghMCksZCgpKX1mdW5jdGlvbiBtKGUpe2YoKSxyLnRyaWdnZXJQb2ludGVyRG93blBvc1JlZi52YWx1ZT17eDpNYXRoLnJvdW5kKGUucGFnZVgpLHk6TWF0aC5yb3VuZChlLnBhZ2VZKX19ZnVuY3Rpb24gaChlKXtyZXR1cm4gZS5idXR0b249PT0wJiZlLmN0cmxLZXk9PT0hMX1sZXQgZz0hMTtmdW5jdGlvbiB2KGUpe2lmKGUucG9pbnRlclR5cGU9PT1gdG91Y2hgKXJldHVybiBlLnByZXZlbnREZWZhdWx0KCk7bGV0IHQ9ZS50YXJnZXQ7dC5oYXNQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCkmJnQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKSxoKGUpJiYobShlKSxnPSEwKX1mdW5jdGlvbiB5KGUpe2goZSkmJmUucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBiKGUpe2d8fGUuY3VycmVudFRhcmdldD8uZm9jdXMoKSxnPSExfXJldHVybihlLHQpPT4oeigpLFYoUChJYykseyJhcy1jaGlsZCI6YGAscmVmZXJlbmNlOmUucmVmZXJlbmNlfSx7ZGVmYXVsdDpfKCgpPT5bRihQKHApLHtyZWY6UChpKSxyb2xlOmBjb21ib2JveGAsdHlwZTplLmFzPT09YGJ1dHRvbmA/YGJ1dHRvbmA6dm9pZCAwLCJhcmlhLWNvbnRyb2xzIjpQKHIpLmNvbnRlbnRJZCwiYXJpYS1leHBhbmRlZCI6UChyKS5vcGVuLnZhbHVlfHwhMSwiYXJpYS1yZXF1aXJlZCI6UChyKS5yZXF1aXJlZD8udmFsdWUsImFyaWEtYXV0b2NvbXBsZXRlIjpgbm9uZWAsZGlzYWJsZWQ6cy52YWx1ZSxkaXI6UChyKT8uZGlyLnZhbHVlLCJkYXRhLXN0YXRlIjpQKHIpPy5vcGVuLnZhbHVlP2BvcGVuYDpgY2xvc2VkYCwiZGF0YS1kaXNhYmxlZCI6cy52YWx1ZT9gYDp2b2lkIDAsImRhdGEtcGxhY2Vob2xkZXIiOlAoJHUpKFAocikubW9kZWxWYWx1ZT8udmFsdWUpP2BgOnZvaWQgMCwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzLG9uQ2xpY2s6YixvblBvaW50ZXJkb3duOnYsb25Nb3VzZWRvd246eSxvblBvaW50ZXJ1cDp0WzBdfHw9eChlPT57ZS5wb2ludGVyVHlwZT09PWB0b3VjaGAmJm0oZSl9LFtgcHJldmVudGBdKSxvbktleWRvd246dFsxXXx8PWU9PntsZXQgdD1QKGwpIT09YGA7IShlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkpJiZlLmtleS5sZW5ndGg9PT0xJiZ0JiZlLmtleT09PWAgYHx8KFAodSkoZS5rZXksUChjKSgpKSxQKFl1KS5pbmNsdWRlcyhlLmtleSkmJihmKCksZS5wcmV2ZW50RGVmYXVsdCgpKSl9fSx7ZGVmYXVsdDpfKCgpPT5bUihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgdHlwZWAsYGFyaWEtY29udHJvbHNgLGBhcmlhLWV4cGFuZGVkYCxgYXJpYS1yZXF1aXJlZGAsYGRpc2FibGVkYCxgZGlyYCxgZGF0YS1zdGF0ZWAsYGRhdGEtZGlzYWJsZWRgLGBkYXRhLXBsYWNlaG9sZGVyYCxgYXMtY2hpbGRgLGBhc2BdKV0pLF86M30sOCxbYHJlZmVyZW5jZWBdKSl9fSksRGQ9aih7X19uYW1lOmBTZWxlY3RWYWx1ZWAscHJvcHM6e3BsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OmBgfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgc3BhbmB9fSxzZXR1cChlKXtsZXQgbj1lLHtmb3J3YXJkUmVmOnIsY3VycmVudEVsZW1lbnQ6aX09dCgpLGE9dGQoKTt2ZSgoKT0+e2EudmFsdWVFbGVtZW50PWl9KTtsZXQgbz1JKCgpPT57bGV0IGU9W10sdD1BcnJheS5mcm9tKGEub3B0aW9uc1NldC52YWx1ZSksbj1lPT50LmZpbmQodD0+WnUoZSx0LnZhbHVlLGEuYnkpKTtyZXR1cm4gZT1BcnJheS5pc0FycmF5KGEubW9kZWxWYWx1ZS52YWx1ZSk/YS5tb2RlbFZhbHVlLnZhbHVlLm1hcChlPT5uKGUpPy50ZXh0Q29udGVudD8/YGApOltuKGEubW9kZWxWYWx1ZS52YWx1ZSk/LnRleHRDb250ZW50Pz9gYF0sZS5maWx0ZXIoQm9vbGVhbil9KSxzPUkoKCk9Pm8udmFsdWUubGVuZ3RoP28udmFsdWUuam9pbihgLCBgKTpuLnBsYWNlaG9sZGVyKTtyZXR1cm4oZSx0KT0+KHooKSxWKFAocCkse3JlZjpQKHIpLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsc3R5bGU6e3BvaW50ZXJFdmVudHM6YG5vbmVgfSwiZGF0YS1wbGFjZWhvbGRlciI6by52YWx1ZS5sZW5ndGg/dm9pZCAwOm4ucGxhY2Vob2xkZXJ9LHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCx7c2VsZWN0ZWRMYWJlbDpvLnZhbHVlLG1vZGVsVmFsdWU6UChhKS5tb2RlbFZhbHVlLnZhbHVlfSwoKT0+W0tlKGsocy52YWx1ZSksMSldKV0pLF86M30sOCxbYGFzYCxgYXMtY2hpbGRgLGBkYXRhLXBsYWNlaG9sZGVyYF0pKX19KSxPZD1qKHtfX25hbWU6YFNlbGVjdFZpZXdwb3J0YCxwcm9wczp7bm9uY2U6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlKXtsZXQgbj1lLHtub25jZTpyfT0kZShuKSxpPUp1KHIpLGE9c2QoKSxvPWEucG9zaXRpb249PT1gaXRlbS1hbGlnbmVkYD91ZCgpOnZvaWQgMCx7Zm9yd2FyZFJlZjpzLGN1cnJlbnRFbGVtZW50OmN9PXQoKTt2ZSgoKT0+e2E/Lm9uVmlld3BvcnRDaGFuZ2UoYy52YWx1ZSl9KTtsZXQgbD1CKDApO2Z1bmN0aW9uIHUoZSl7bGV0IHQ9ZS5jdXJyZW50VGFyZ2V0LHtzaG91bGRFeHBhbmRPblNjcm9sbFJlZjpuLGNvbnRlbnRXcmFwcGVyOnJ9PW8/P3t9O2lmKG4/LnZhbHVlJiZyPy52YWx1ZSl7bGV0IGU9TWF0aC5hYnMobC52YWx1ZS10LnNjcm9sbFRvcCk7aWYoZT4wKXtsZXQgbj13aW5kb3cuaW5uZXJIZWlnaHQtMjAsaT1OdW1iZXIucGFyc2VGbG9hdChyLnZhbHVlLnN0eWxlLm1pbkhlaWdodCksYT1OdW1iZXIucGFyc2VGbG9hdChyLnZhbHVlLnN0eWxlLmhlaWdodCksbz1NYXRoLm1heChpLGEpO2lmKG88bil7bGV0IGk9bytlLGE9TWF0aC5taW4obixpKSxzPWktYTtyLnZhbHVlLnN0eWxlLmhlaWdodD1gJHthfXB4YCxyLnZhbHVlLnN0eWxlLmJvdHRvbT09PWAwcHhgJiYodC5zY3JvbGxUb3A9cz4wP3M6MCxyLnZhbHVlLnN0eWxlLmp1c3RpZnlDb250ZW50PWBmbGV4LWVuZGApfX19bC52YWx1ZT10LnNjcm9sbFRvcH1yZXR1cm4oZSx0KT0+KHooKSxOKHcsbnVsbCxbRihQKHApLGIoe3JlZjpQKHMpLCJkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0IjpgYCxyb2xlOmBwcmVzZW50YXRpb25gfSx7Li4uZS4kYXR0cnMsLi4ubn0se3N0eWxlOntwb3NpdGlvbjpgcmVsYXRpdmVgLGZsZXg6MSxvdmVyZmxvdzpgaGlkZGVuIGF1dG9gfSxvblNjcm9sbDp1fSkse2RlZmF1bHQ6XygoKT0+W1IoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpLEYoUChwKSx7YXM6YHN0eWxlYCxub25jZTpQKGkpfSx7ZGVmYXVsdDpfKCgpPT50WzBdfHw9W0tlKGAgLyogSGlkZSBzY3JvbGxiYXJzIGNyb3NzLWJyb3dzZXIgYW5kIGVuYWJsZSBtb21lbnR1bSBzY3JvbGwgZm9yIHRvdWNoIGRldmljZXMgKi8gW2RhdGEtcmVrYS1zZWxlY3Qtdmlld3BvcnRdIHsgc2Nyb2xsYmFyLXdpZHRoOm5vbmU7IC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyB9IFtkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0XTo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25lOyB9IGApXSksXzoxLF9fOlswXX0sOCxbYG5vbmNlYF0pXSw2NCkpfX0pLGtkPWooe19fbmFtZTpgQ2FyZERlc2NyaXB0aW9uYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9Pih6KCksTihgZGl2YCx7ImRhdGEtc2xvdCI6YGNhcmQtZGVzY3JpcHRpb25gLGNsYXNzOmR0KFAoZ2UpKGB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGV4dC1zbWAsdC5jbGFzcykpfSxbUihlLiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksQWQ9aih7X19uYW1lOmBJbnB1dGAscHJvcHM6e2RlZmF1bHRWYWx1ZTp7fSxtb2RlbFZhbHVlOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IG49ZSxyPVMobixgbW9kZWxWYWx1ZWAsdCx7cGFzc2l2ZTohMCxkZWZhdWx0VmFsdWU6bi5kZWZhdWx0VmFsdWV9KTtyZXR1cm4oZSx0KT0+ZWUoKHooKSxOKGBpbnB1dGAseyJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzBdfHw9ZT0+YWUocik/ci52YWx1ZT1lOm51bGwsImRhdGEtc2xvdCI6YGlucHV0YCxjbGFzczpkdChQKGdlKShgZGFyazpiZy1pbnB1dC8zMCBib3JkZXItaW5wdXQgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZS8yMCBkYXJrOmFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzQwIGFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUgZGFyazphcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlLzUwIGRpc2FibGVkOmJnLWlucHV0LzUwIGRhcms6ZGlzYWJsZWQ6YmctaW5wdXQvODAgaC04IHJvdW5kZWQtbGcgYm9yZGVyIGJnLXRyYW5zcGFyZW50IHB4LTIuNSBweS0xIHRleHQtYmFzZSB0cmFuc2l0aW9uLWNvbG9ycyBmaWxlOmgtNiBmaWxlOnRleHQtc20gZmlsZTpmb250LW1lZGl1bSBmb2N1cy12aXNpYmxlOnJpbmctMyBhcmlhLWludmFsaWQ6cmluZy0zIG1kOnRleHQtc20gdy1mdWxsIG1pbi13LTAgb3V0bGluZS1ub25lIGZpbGU6aW5saW5lLWZsZXggZmlsZTpib3JkZXItMCBmaWxlOmJnLXRyYW5zcGFyZW50IGZpbGU6dGV4dC1mb3JlZ3JvdW5kIHBsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwYCxuLmNsYXNzKSl9LG51bGwsMikpLFtbcHQsUChyKV1dKX19KSxqZD17Y2xhc3M6YG14LWF1dG8gZmxleCBtaW4taC1bNzB2aF0gbWF4LXctbWQgZmxleC1jb2wganVzdGlmeS1jZW50ZXIgcHgtNGB9LE1kPXtjbGFzczpgZmxleCBzaXplLTEyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeS8xMCB0ZXh0LXByaW1hcnlgfSxOZD17Y2xhc3M6YGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0xYH0sUGQ9eyJhcmlhLWxhYmVsbGVkYnkiOmBhdXRoZ2F0ZS1zZWN1cml0eS1oZWFkaW5nYCxjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMS41IHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sRmQ9e2NsYXNzOmBmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0xLjVgfSxJZD17Y2xhc3M6YGZsZXggaXRlbXMtc3RhcnQgZ2FwLTEuNWB9LExkPXtjbGFzczpgZmxleCBpdGVtcy1zdGFydCBnYXAtMS41YH0sUmQ9e2NsYXNzOmByZWxhdGl2ZWB9LHpkPSgoZSx0KT0+e2xldCBuPWUuX192Y2NPcHRzfHxlO2ZvcihsZXRbZSxyXW9mIHQpbltlXT1yO3JldHVybiBufSkoaih7X19uYW1lOmBBdXRoR2F0ZWAsc2V0dXAoZSl7bGV0IHQ9bHQoKSxuPWplKCkscj1CKGBgKSxpPUIoITEpLGE9QihudWxsKSxvPUkoKCk9PnIudmFsdWUudHJpbSgpIT09YGApO2Z1bmN0aW9uIHMoKXtsZXQgZT1yLnZhbHVlO3IudmFsdWU9YGAsdC5zdWJtaXQoZSksbi5yZWZyZXNoKCl9ZnVuY3Rpb24gYygpe0EoKCk9PmEudmFsdWU/LiRlbD8uZm9jdXMoKSl9cmV0dXJuIHZlKGMpLGwoKCk9PnQuZXJyb3IsZT0+e2UmJmMoKX0pLChlLG4pPT57bGV0IGM9c3QoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiB6KCksTihgZGl2YCxqZCxbRihQKGRlKSxudWxsLHtkZWZhdWx0Ol8oKCk9PltGKFAoZikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMyB0ZXh0LWNlbnRlcmB9LHtkZWZhdWx0Ol8oKCk9PltNKGBkaXZgLE1kLFtGKGMse2ljb246UChVZSksY2xhc3M6YHNpemUtNWAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSldKSxNKGBkaXZgLE5kLFtuWzNdfHw9TShgc3BhbmAse2NsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBMTE0gR2F0ZXdheWAsLTEpLEYoUChsZSkse2NsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGRgfSx7ZGVmYXVsdDpfKCgpPT5bLi4ublsyXXx8PVtLZShgQWRtaW4ga2V5IHJlcXVpcmVkYCwtMSldXSksXzoxfSldKSxGKFAoa2QpLG51bGwse2RlZmF1bHQ6XygoKT0+Wy4uLm5bNF18fD1bS2UoYEVudGVyIGFuIGFkbWluIEFQSSBrZXkgdG8gY29udGludWUuYCwtMSldXSksXzoxfSldKSxfOjF9KSxGKFAoY3QpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHtkZWZhdWx0Ol8oKCk9PltuWzEwXXx8PU0oYGgyYCx7aWQ6YGF1dGhnYXRlLXNlY3VyaXR5LWhlYWRpbmdgLGNsYXNzOmBzci1vbmx5YH0sYCBIb3cgdGhpcyBrZXkgaXMgaGFuZGxlZCBgLC0xKSxNKGB1bGAsUGQsW00oYGxpYCxGZCxbRihjLHtpY29uOlAoX2UpLGNsYXNzOmBtdC0wLjUgc2l6ZS0zIHNocmluay0wYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxuWzVdfHw9TShgc3BhbmAsbnVsbCxgS2VwdCBvbmx5IGluIHRoaXMgdGFiJ3Mgc2Vzc2lvbiBzdG9yYWdlYCwtMSldKSxNKGBsaWAsSWQsW0YoYyx7aWNvbjpQKF9lKSxjbGFzczpgbXQtMC41IHNpemUtMyBzaHJpbmstMGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSksbls2XXx8PU0oYHNwYW5gLG51bGwsYE5ldmVyIHdyaXR0ZW4gdG8gZGlza2AsLTEpXSksTShgbGlgLExkLFtGKGMse2ljb246UChfZSksY2xhc3M6YG10LTAuNSBzaXplLTMgc2hyaW5rLTBgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLG5bN118fD1NKGBzcGFuYCxudWxsLGBTZW50IG9ubHkgdG8gdGhpcyBwYWdlJ3Mgb3duIC9hZG1pbi9hcGkvKiByZXF1ZXN0c2AsLTEpXSldKSxNKGBmb3JtYCx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTNgLG9uU3VibWl0OngocyxbYHByZXZlbnRgXSl9LFtNKGBkaXZgLFJkLFtGKFAoQWQpLHtyZWZfa2V5OmBrZXlJbnB1dEVsYCxyZWY6YSxtb2RlbFZhbHVlOnIudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm5bMF18fD1lPT5yLnZhbHVlPWUsdHlwZTppLnZhbHVlP2B0ZXh0YDpgcGFzc3dvcmRgLGF1dG9jb21wbGV0ZTpgb2ZmYCxwbGFjZWhvbGRlcjpgQVBJIGtleWAsImFyaWEtbGFiZWwiOmBBZG1pbiBBUEkga2V5YCwiYXJpYS1pbnZhbGlkIjohIVAodCkuZXJyb3IsImFyaWEtZGVzY3JpYmVkYnkiOlAodCkuZXJyb3I/YGF1dGhnYXRlLWVycm9yYDp2b2lkIDAsY2xhc3M6ZHQoW2BoLTEwIHByLTEwYCx7ImF1dGhnYXRlLXNoYWtlIjpQKHQpLmVycm9yfV0pfSxudWxsLDgsW2Btb2RlbFZhbHVlYCxgdHlwZWAsYGFyaWEtaW52YWxpZGAsYGFyaWEtZGVzY3JpYmVkYnlgLGBjbGFzc2BdKSxGKFAoaCkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgZ2hvc3RgLHNpemU6YGljb24teHNgLGNsYXNzOmBhYnNvbHV0ZSB0b3AtMS8yIHJpZ2h0LTEuNSAtdHJhbnNsYXRlLXktMS8yIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRgLCJhcmlhLWxhYmVsIjppLnZhbHVlP2BIaWRlIGtleWA6YFNob3cga2V5YCxvbkNsaWNrOm5bMV18fD1lPT5pLnZhbHVlPSFpLnZhbHVlfSx7ZGVmYXVsdDpfKCgpPT5bRihjLHtpY29uOmkudmFsdWU/UChaZSk6UChDZSksY2xhc3M6YHNpemUtMy41YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKV0pLF86MX0sOCxbYGFyaWEtbGFiZWxgXSldKSxGKFAoaCkse3R5cGU6YHN1Ym1pdGAsY2xhc3M6YGgtMTAgdy1mdWxsYCxkaXNhYmxlZDohby52YWx1ZX0se2RlZmF1bHQ6XygoKT0+Wy4uLm5bOF18fD1bS2UoYCBDb250aW51ZSBgLC0xKV1dKSxfOjF9LDgsW2BkaXNhYmxlZGBdKV0sMzIpLFAodCkuZXJyb3I/KHooKSxWKFAoaHMpLHtrZXk6MCxpZDpgYXV0aGdhdGUtZXJyb3JgLHZhcmlhbnQ6YGRlc3RydWN0aXZlYH0se2RlZmF1bHQ6XygoKT0+W0YoUChfcyksbnVsbCx7ZGVmYXVsdDpfKCgpPT5bLi4ubls5XXx8PVtLZShgQXV0aGVudGljYXRpb24gZmFpbGVkYCwtMSldXSksXzoxfSksRihQKGdzKSxudWxsLHtkZWZhdWx0Ol8oKCk9PltLZShrKFAodCkuZXJyb3IpLDEpXSksXzoxfSldKSxfOjF9KSk6SChgYCwhMCldKSxfOjF9KV0pLF86MX0pXSl9fX0pLFtbYF9fc2NvcGVJZGAsYGRhdGEtdi1iNmQ2ZmIxZWBdXSksQmQ9e2NsYXNzOmBtdC0xIGxpc3QtZGlzYyBzcGFjZS15LTAuNSBwbC00IGZvbnQtbW9ubyB0ZXh0LXhzYH0sVmQ9e2tleTowLGNsYXNzOmBtdC0xIHRleHQteHNgfSxIZD1qKHtfX25hbWU6YENvbmZpZ1dhcm5pbmdzQmFubmVyYCxwcm9wczp7d2FybmluZ3M6e30sd2FybmluZ3NEcm9wcGVkOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49QighMSk7ZnVuY3Rpb24gcigpe24udmFsdWU9IW4udmFsdWV9cmV0dXJuKGUsaSk9PntsZXQgYT1zdChgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIHQud2FybmluZ3MubGVuZ3RoPjA/KHooKSxWKFAoaHMpLHtrZXk6MCx2YXJpYW50OmB3YXJuYH0se2RlZmF1bHQ6XygoKT0+W0YoYSx7aWNvbjpQKHFlKSxjbGFzczpgc2l6ZS00YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxGKFAoX3MpLHtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yYH0se2RlZmF1bHQ6XygoKT0+W00oYHNwYW5gLG51bGwsayh0Lndhcm5pbmdzLmxlbmd0aCkrYCBjb25maWd1cmF0aW9uIGArayh0Lndhcm5pbmdzLmxlbmd0aD09PTE/YHdhcm5pbmdgOmB3YXJuaW5nc2ApLDEpLEYoUChoKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBnaG9zdGAsc2l6ZTpgeHNgLCJhcmlhLWV4cGFuZGVkIjpuLnZhbHVlLCJhcmlhLWxhYmVsIjpgJHtuLnZhbHVlP2BIaWRlYDpgU2hvd2B9IGNvbmZpZ3VyYXRpb24gd2FybmluZyBkZXRhaWxzYCxvbkNsaWNrOnJ9LHtkZWZhdWx0Ol8oKCk9PltLZShrKG4udmFsdWU/YEhpZGVgOmBTaG93YCksMSldKSxfOjF9LDgsW2BhcmlhLWV4cGFuZGVkYCxgYXJpYS1sYWJlbGBdKV0pLF86MX0pLG4udmFsdWU/KHooKSxWKFAoZ3MpLHtrZXk6MH0se2RlZmF1bHQ6XygoKT0+W00oYHVsYCxCZCxbKHooITApLE4odyxudWxsLERlKHQud2FybmluZ3MsKGUsdCk9Pih6KCksTihgbGlgLHtrZXk6dH0sayhlKSwxKSkpLDEyOCkpXSksdC53YXJuaW5nc0Ryb3BwZWQ/KHooKSxOKGBwYCxWZCxgYW5kIGArayh0Lndhcm5pbmdzRHJvcHBlZCkrYCBtb3JlIHdlcmUgbm90IGtlcHRgLDEpKTpIKGBgLCEwKV0pLF86MX0pKTpIKGBgLCEwKV0pLF86MX0pKTpIKGBgLCEwKX19fSksVWQ9aih7X19uYW1lOmBTZWxlY3RgLHByb3BzOntvcGVuOnt0eXBlOkJvb2xlYW59LGRlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW59LGRlZmF1bHRWYWx1ZTp7fSxtb2RlbFZhbHVlOnt9LG51bGxhYmxlVmFsdWU6e30sYnk6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl19LGRpcjp7fSxtdWx0aXBsZTp7dHlwZTpCb29sZWFufSxhdXRvY29tcGxldGU6e30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sbmFtZTp7fSxyZXF1aXJlZDp7dHlwZTpCb29sZWFufX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWAsYHVwZGF0ZTpvcGVuYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IHI9bihlLHQpO3JldHVybihlLHQpPT4oeigpLFYoUChyZCksYih7ImRhdGEtc2xvdCI6YHNlbGVjdGB9LFAocikpLHtkZWZhdWx0Ol8odD0+W1IoZS4kc2xvdHMsYGRlZmF1bHRgLHdlKG0odCkpKV0pLF86M30sMTYpKX19KSxXZD1qKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RDb250ZW50YCxwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFufSxwb3NpdGlvbjp7ZGVmYXVsdDpgaXRlbS1hbGlnbmVkYH0sYm9keUxvY2s6e3R5cGU6Qm9vbGVhbn0sbWVtb0RlcGVuZGVuY2llczp7fSxzaWRlOnt9LHNpZGVPZmZzZXQ6e30sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbn0sYWxpZ246e2RlZmF1bHQ6YGNlbnRlcmB9LGFsaWduT2Zmc2V0Ont9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFufSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbn0sY29sbGlzaW9uQm91bmRhcnk6e30sY29sbGlzaW9uUGFkZGluZzp7fSxhcnJvd1BhZGRpbmc6e30saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFufSxzdGlja3k6e30saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFufSxwb3NpdGlvblN0cmF0ZWd5Ont9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e30sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbn0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW59LHJlZmVyZW5jZTp7fSxkaXI6e30sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbn0sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LGVtaXRzOltgY2xvc2VBdXRvRm9jdXNgLGBlc2NhcGVLZXlEb3duYCxgcG9pbnRlckRvd25PdXRzaWRlYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IHI9ZSxpPXQsYT1tZShyLGBjbGFzc2ApLG89bihhLGkpO3JldHVybih0LG4pPT4oeigpLFYoUChTZCksbnVsbCx7ZGVmYXVsdDpfKCgpPT5bRihQKGhkKSxiKHsiZGF0YS1zbG90Ijpgc2VsZWN0LWNvbnRlbnRgLCJkYXRhLWFsaWduLXRyaWdnZXIiOmUucG9zaXRpb249PT1gaXRlbS1hbGlnbmVkYH0sey4uLnQuJGF0dHJzLC4uLlAobyl9LHtjbGFzczpQKGdlKShgYmctcG9wb3ZlciB0ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBkYXRhLW9wZW46YW5pbWF0ZS1pbiBkYXRhLWNsb3NlZDphbmltYXRlLW91dCBkYXRhLWNsb3NlZDpmYWRlLW91dC0wIGRhdGEtb3BlbjpmYWRlLWluLTAgZGF0YS1jbG9zZWQ6em9vbS1vdXQtOTUgZGF0YS1vcGVuOnpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpzbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnNsaWRlLWluLWZyb20tYm90dG9tLTIgcmluZy1mb3JlZ3JvdW5kLzEwIG1pbi13LTM2IHJvdW5kZWQtbGcgc2hhZG93LW1kIHJpbmctMSBkdXJhdGlvbi0xMDAgZGF0YS1bc2lkZT1pbmxpbmUtc3RhcnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPWlubGluZS1lbmRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGNuLW1lbnUtdHJhbnNsdWNlbnQgcmVsYXRpdmUgei01MCBtYXgtaC0oLS1yZWthLXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpIG9yaWdpbi0oLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pIG92ZXJmbG93LXgtaGlkZGVuIG92ZXJmbG93LXktYXV0byBkYXRhLVthbGlnbi10cmlnZ2VyPXRydWVdOmFuaW1hdGUtbm9uZWAsZS5wb3NpdGlvbj09PWBwb3BwZXJgJiZgZGF0YS1bc2lkZT1ib3R0b21dOnRyYW5zbGF0ZS15LTEgZGF0YS1bc2lkZT1sZWZ0XTotdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXJpZ2h0XTp0cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9dG9wXTotdHJhbnNsYXRlLXktMWAsci5jbGFzcyl9KSx7ZGVmYXVsdDpfKCgpPT5bRihQKEpkKSksRihQKE9kKSx7ImRhdGEtcG9zaXRpb24iOmUucG9zaXRpb24sY2xhc3M6ZHQoUChnZSkoYGRhdGEtW3Bvc2l0aW9uPXBvcHBlcl06aC0oLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodCkgZGF0YS1bcG9zaXRpb249cG9wcGVyXTp3LWZ1bGwgZGF0YS1bcG9zaXRpb249cG9wcGVyXTptaW4tdy0oLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoKWApKX0se2RlZmF1bHQ6XygoKT0+W1IodC4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGRhdGEtcG9zaXRpb25gLGBjbGFzc2BdKSxGKFAocWQpKV0pLF86M30sMTYsW2BkYXRhLWFsaWduLXRyaWdnZXJgLGBjbGFzc2BdKV0pLF86M30pKX19KSxHZD17Y2xhc3M6YHBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgcmlnaHQtMiBmbGV4IHNpemUtNCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJgfSxLZD1qKHtfX25hbWU6YFNlbGVjdEl0ZW1gLHByb3BzOnt2YWx1ZTp7fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFufSx0ZXh0VmFsdWU6e30sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPW1lKHQsYGNsYXNzYCkscj1pKG4pO3JldHVybihlLG4pPT4oeigpLFYoUCh5ZCksYih7ImRhdGEtc2xvdCI6YHNlbGVjdC1pdGVtYH0sUChyKSx7Y2xhc3M6UChnZSkoYGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIG5vdC1kYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTpmb2N1czoqKjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGdhcC0xLjUgcm91bmRlZC1tZCBweS0xIHByLTggcGwtMS41IHRleHQtc20gWyZfc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNCAqOltzcGFuXTpsYXN0OmZsZXggKjpbc3Bhbl06bGFzdDppdGVtcy1jZW50ZXIgKjpbc3Bhbl06bGFzdDpnYXAtMiByZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItZGVmYXVsdCBpdGVtcy1jZW50ZXIgb3V0bGluZS1oaWRkZW4gc2VsZWN0LW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBgLHQuY2xhc3MpfSkse2RlZmF1bHQ6XygoKT0+W00oYHNwYW5gLEdkLFtGKFAoYmQpLG51bGwse2RlZmF1bHQ6XygoKT0+W1IoZS4kc2xvdHMsYGluZGljYXRvci1pY29uYCx7fSwoKT0+W0YoUChwcykse2ljb246UChfZSksY2xhc3M6YHBvaW50ZXItZXZlbnRzLW5vbmUgc2l6ZS0zLjVgfSxudWxsLDgsW2BpY29uYF0pXSldKSxfOjN9KV0pLEYoUCh4ZCksbnVsbCx7ZGVmYXVsdDpfKCgpPT5bUihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSldKSxfOjN9LDE2LFtgY2xhc3NgXSkpfX0pLHFkPWooe19fbmFtZTpgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUsbj1tZSh0LGBjbGFzc2ApLHI9aShuKTtyZXR1cm4oZSxuKT0+KHooKSxWKFAod2QpLGIoeyJkYXRhLXNsb3QiOmBzZWxlY3Qtc2Nyb2xsLWRvd24tYnV0dG9uYH0sUChyKSx7Y2xhc3M6UChnZSkoYGJnLXBvcG92ZXIgei0xMCBmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTRgLHQuY2xhc3MpfSkse2RlZmF1bHQ6XygoKT0+W1IoZS4kc2xvdHMsYGRlZmF1bHRgLHt9LCgpPT5bRihQKHBzKSx7aWNvbjpQKHllKSxjbGFzczpgc2l6ZS00YH0sbnVsbCw4LFtgaWNvbmBdKV0pXSksXzozfSwxNixbYGNsYXNzYF0pKX19KSxKZD1qKHtfX25hbWU6YFNlbGVjdFNjcm9sbFVwQnV0dG9uYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPW1lKHQsYGNsYXNzYCkscj1pKG4pO3JldHVybihlLG4pPT4oeigpLFYoUChUZCksYih7ImRhdGEtc2xvdCI6YHNlbGVjdC1zY3JvbGwtdXAtYnV0dG9uYH0sUChyKSx7Y2xhc3M6UChnZSkoYGJnLXBvcG92ZXIgei0xMCBmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTRgLHQuY2xhc3MpfSkse2RlZmF1bHQ6XygoKT0+W1IoZS4kc2xvdHMsYGRlZmF1bHRgLHt9LCgpPT5bRihQKHBzKSx7aWNvbjpQKHMpLGNsYXNzOmBzaXplLTRgfSxudWxsLDgsW2BpY29uYF0pXSldKSxfOjN9LDE2LFtgY2xhc3NgXSkpfX0pLFlkPWooe19fbmFtZTpgU2VsZWN0VHJpZ2dlcmAscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW59LHJlZmVyZW5jZTp7fSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19LHNpemU6e2RlZmF1bHQ6YGRlZmF1bHRgfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPW1lKHQsYGNsYXNzYCxgc2l6ZWApLHI9aShuKTtyZXR1cm4obixpKT0+KHooKSxWKFAoRWQpLGIoeyJkYXRhLXNsb3QiOmBzZWxlY3QtdHJpZ2dlcmAsImRhdGEtc2l6ZSI6ZS5zaXplfSxQKHIpLHtjbGFzczpQKGdlKShgYm9yZGVyLWlucHV0IGRhdGEtcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRhcms6YmctaW5wdXQvMzAgZGFyazpob3ZlcjpiZy1pbnB1dC81MCBmb2N1cy12aXNpYmxlOmJvcmRlci1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzIwIGRhcms6YXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvNDAgYXJpYS1pbnZhbGlkOmJvcmRlci1kZXN0cnVjdGl2ZSBkYXJrOmFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUvNTAgZ2FwLTEuNSByb3VuZGVkLWxnIGJvcmRlciBiZy10cmFuc3BhcmVudCBweS0yIHByLTIgcGwtMi41IHRleHQtc20gdHJhbnNpdGlvbi1jb2xvcnMgc2VsZWN0LW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTMgYXJpYS1pbnZhbGlkOnJpbmctMyBkYXRhLVtzaXplPWRlZmF1bHRdOmgtOCBkYXRhLVtzaXplPXNtXTpoLTcgZGF0YS1bc2l6ZT1zbV06cm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTBweCldICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOmdhcC0xLjUgWyZfc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNCBmbGV4IHctZml0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gd2hpdGVzcGFjZS1ub3dyYXAgb3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOmxpbmUtY2xhbXAtMSAqOmRhdGEtW3Nsb3Q9c2VsZWN0LXZhbHVlXTpmbGV4ICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOml0ZW1zLWNlbnRlciBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpzaHJpbmstMGAsdC5jbGFzcyl9KSx7ZGVmYXVsdDpfKCgpPT5bUihuLiRzbG90cyxgZGVmYXVsdGApLEYoUChnZCkseyJhcy1jaGlsZCI6YGB9LHtkZWZhdWx0Ol8oKCk9PltGKFAocHMpLHtpY29uOlAoeWUpLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmQgc2l6ZS00IHBvaW50ZXItZXZlbnRzLW5vbmVgfSxudWxsLDgsW2BpY29uYF0pXSksXzoxfSldKSxfOjN9LDE2LFtgZGF0YS1zaXplYCxgY2xhc3NgXSkpfX0pLFhkPWooe19fbmFtZTpgU2VsZWN0VmFsdWVgLHByb3BzOntwbGFjZWhvbGRlcjp7fSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLG4pPT4oeigpLFYoUChEZCksYih7ImRhdGEtc2xvdCI6YHNlbGVjdC12YWx1ZWB9LHQpLHtkZWZhdWx0Ol8oKCk9PltSKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2KSl9fSksWmQ9e3Byb3ZpZGVyczpgbW9kZWxzYCx1c2FnZTpgY29uc3VtZXJzYCxjaGFydHM6YHNwZW5kYCxldmVudHM6YHJlbGlhYmlsaXR5YCx0YXJnZXRzOmB0YXJnZXRzYH07ZnVuY3Rpb24gUWQoZSl7bGV0IHQ9ZS5zdGFydHNXaXRoKGAjYCk/ZS5zbGljZSgxKTplLG49dC5pbmRleE9mKGA/YCkscj1uPT09LTE/dDp0LnNsaWNlKDAsbiksaT1uPT09LTE/YGA6dC5zbGljZShuKzEpO2lmKFBlKHIpKXJldHVybntwYWdlOnIscXVlcnk6bmV3IFVSTFNlYXJjaFBhcmFtcyhpKX07bGV0IGE9WmRbcl07cmV0dXJuIGE/e3BhZ2U6YSxxdWVyeTpuZXcgVVJMU2VhcmNoUGFyYW1zfTp7cGFnZTpRZSxxdWVyeTpuZXcgVVJMU2VhcmNoUGFyYW1zKGkpfX1mdW5jdGlvbiAkZChlLHQpe2xldCBuPU9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoWyxlXSk9PmUhPT1gYCk7cmV0dXJuIG4ubGVuZ3RoPT09MD9gIyR7ZX1gOmAjJHtlfT8ke25ldyBVUkxTZWFyY2hQYXJhbXMobikudG9TdHJpbmcoKX1gfXZhciBlZj0vXihhbGx8Z3JvdXA6Lit8dXNlcjouK3xwcm92aWRlcjouKykkLztmdW5jdGlvbiB0ZihlKXtsZXQgdD17fSxuPWUuZ2V0KGByYW5nZWApO24mJm90KG4pJiYodC5yYW5nZT1uKTtsZXQgcj1lLmdldChgY21wYCk7ciYmVmUocikmJih0LmNtcD1yKTtsZXQgaT1lLmdldChgc2NvcGVgKTtyZXR1cm4gaSYmZWYudGVzdChpKSYmKHQuc2NvcGU9aSksdH12YXIgbmY9bmV3IFNldChbYHJhbmdlYCxgY21wYCxgc2NvcGVgXSk7ZnVuY3Rpb24gcmYoZSl7bGV0IHQ9e307Zm9yKGxldFtuLHJdb2YgZS5lbnRyaWVzKCkpbmYuaGFzKG4pfHxyIT09YGAmJih0W25dPXIpO3JldHVybiB0fXZhciBhZj14ZShgZmlsdGVyc2Ase3N0YXRlOigpPT4oe3JhbmdlOmA3ZGAsY21wOm50LHNjb3BlOmBhbGxgfSksZ2V0dGVyczp7d2luZG93OmU9PlNlW2UucmFuZ2VdLndpbmRvdyxzcGFuOmU9PlNlW2UucmFuZ2VdLnNwYW4sY21wU3BlYzplPT57bGV0IHQ9WGUoZS5yYW5nZSk7cmV0dXJuey4uLnQscmVxdWVzdGVkOmUuY21wPT09YHByZXZgJiZ0LmF2YWlsYWJsZX19fSxhY3Rpb25zOntzZXRGaWx0ZXJzKGUpe2UucmFuZ2UhPT12b2lkIDAmJih0aGlzLnJhbmdlPWUucmFuZ2UpLGUuY21wIT09dm9pZCAwJiYodGhpcy5jbXA9ZS5jbXApLGUuc2NvcGUhPT12b2lkIDAmJih0aGlzLnNjb3BlPWUuc2NvcGUpfX19KSxvZj17Y2xhc3M6YGZsZXggZmxleC13cmFwIGl0ZW1zLWVuZCBnYXAtM2B9LHNmPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LGNmPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LGxmPWooe19fbmFtZTpgR2xvYmFsRmlsdGVyQmFyYCxzZXR1cChlKXtsZXQgdD17IjI0aCI6YExhc3QgMjQgaG91cnNgLCI0OGgiOmBMYXN0IDQ4IGhvdXJzYCwiN2QiOmBMYXN0IDcgZGF5c2AsIjE0ZCI6YExhc3QgMTQgZGF5c2AsIjMwZCI6YExhc3QgMzAgZGF5c2AsIjNtbyI6YExhc3QgMyBtb250aHNgLCI2bW8iOmBMYXN0IDYgbW9udGhzYCwiMTJtbyI6YExhc3QgMTIgbW9udGhzYH0sbj1hZigpO2Z1bmN0aW9uIHIoZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZuLnNldEZpbHRlcnMoe3JhbmdlOmV9KX1mdW5jdGlvbiBpKCl7aWYobi5jbXA9PT1gcHJldmApe24uc2V0RmlsdGVycyh7Y21wOmBub25lYH0pO3JldHVybn1uLmNtcFNwZWMuYXZhaWxhYmxlJiZuLnNldEZpbHRlcnMoe2NtcDpgcHJldmB9KX1sZXQgYT1JKCgpPT5uLmNtcCE9PWBwcmV2YCYmIW4uY21wU3BlYy5hdmFpbGFibGUpLG89SSgoKT0+bi5jbXA9PT1gcHJldmAmJiFuLmNtcFNwZWMuYXZhaWxhYmxlP2BDb21wYXJpc29uIHVuYXZhaWxhYmxlIGZvciB0aGlzIHJhbmdlICgke24uY21wU3BlYy5yZWFzb259KSDigJQgY2xpY2sgdG8gdHVybiBvZmZgOm4uY21wU3BlYy5hdmFpbGFibGU/YENvbXBhcmUgYWdhaW5zdCB0aGUgcHJldmlvdXMgZXF1YWwtbGVuZ3RoIHBlcmlvZGA6YENvbXBhcmlzb24gdW5hdmFpbGFibGUgZm9yIHRoaXMgcmFuZ2U6ICR7bi5jbXBTcGVjLnJlYXNvbn1gKSxzPUIobi5zY29wZSk7bCgoKT0+bi5zY29wZSxlPT57cy52YWx1ZT1lfSk7ZnVuY3Rpb24gYygpe2xldCBlPXMudmFsdWUudHJpbSgpfHxgYWxsYDtlZi50ZXN0KGUpP24uc2V0RmlsdGVycyh7c2NvcGU6ZX0pOnMudmFsdWU9bi5zY29wZX1yZXR1cm4oZSxsKT0+e2xldCB1PXN0KGBGb250QXdlc29tZUljb25gKTtyZXR1cm4geigpLE4oYGRpdmAsb2YsW00oYGRpdmAsc2YsW2xbMV18fD1NKGBsYWJlbGAse2lkOmBnbG9iYWwtZmlsdGVyLXJhbmdlLWxhYmVsYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUmFuZ2VgLC0xKSxGKFAoVWQpLHsibW9kZWwtdmFsdWUiOlAobikucmFuZ2UsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnJ9LHtkZWZhdWx0Ol8oKCk9PltGKFAoWWQpLHsiYXJpYS1sYWJlbGxlZGJ5IjpgZ2xvYmFsLWZpbHRlci1yYW5nZS1sYWJlbGAsY2xhc3M6YHctMzZgfSx7ZGVmYXVsdDpfKCgpPT5bRihQKFhkKSldKSxfOjF9KSxGKFAoV2QpLG51bGwse2RlZmF1bHQ6XygoKT0+Wyh6KCEwKSxOKHcsbnVsbCxEZShQKEllKSxlPT4oeigpLFYoUChLZCkse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0Ol8oKCk9PltLZShrKHRbZV0pLDEpXSksXzoyfSwxMDMyLFtgdmFsdWVgXSkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKSxGKFAoaCkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsImFyaWEtcHJlc3NlZCI6UChuKS5jbXA9PT1gcHJldmAsZGlzYWJsZWQ6YS52YWx1ZSx0aXRsZTpvLnZhbHVlLG9uQ2xpY2s6aX0se2RlZmF1bHQ6XygoKT0+W0YodSx7aWNvbjpQKGV0KSxjbGFzczpgc2l6ZS0zLjVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLGxbMl18fD1LZShgIHZzIHByZXZpb3VzIHBlcmlvZCBgLC0xKV0pLF86MX0sOCxbYGFyaWEtcHJlc3NlZGAsYGRpc2FibGVkYCxgdGl0bGVgXSksTShgZGl2YCxjZixbbFszXXx8PU0oYGxhYmVsYCx7Zm9yOmBnbG9iYWwtZmlsdGVyLXNjb3BlYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgU2NvcGVgLC0xKSxGKFAoQWQpLHtpZDpgZ2xvYmFsLWZpbHRlci1zY29wZWAsbW9kZWxWYWx1ZTpzLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpsWzBdfHw9ZT0+cy52YWx1ZT1lLGNsYXNzOmB3LTQ4YCxwbGFjZWhvbGRlcjpgYWxsYCx0aXRsZTpgYWxsLCBncm91cDo8bmFtZT4sIHVzZXI6PG5hbWU+LCBvciBwcm92aWRlcjo8bmFtZT5gLG9uS2V5dXA6aGUoYyxbYGVudGVyYF0pLG9uQmx1cjpjfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSldKX19fSksdWY9eyJhcmlhLWxhYmVsIjpgUHJpbWFyeWAsY2xhc3M6YGZsZXggZ2FwLTEgb3ZlcmZsb3cteC1hdXRvIGJvcmRlci1iIGJvcmRlci1ib3JkZXIgcGItMiBtZDp3LTUyIG1kOnNocmluay0wIG1kOmZsZXgtY29sIG1kOmJvcmRlci1yIG1kOmJvcmRlci1iLTAgbWQ6cHItMyBtZDpwYi0wYH0sZGY9W2BhcmlhLWN1cnJlbnRgLGBvbkNsaWNrYF0sZmY9aih7X19uYW1lOmBTaWRlYmFyTmF2YCxzZXR1cChlKXtsZXQgdD1KZSgpO3JldHVybihlLG4pPT57bGV0IHI9c3QoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiB6KCksTihgbmF2YCx1ZixbKHooITApLE4odyxudWxsLERlKFAoV2UpLGU9Pih6KCksTihgYnV0dG9uYCx7a2V5OmUuaWQsdHlwZTpgYnV0dG9uYCwiYXJpYS1jdXJyZW50IjpQKHQpLnBhZ2U9PT1lLmlkP2BwYWdlYDp2b2lkIDAsY2xhc3M6ZHQoW2BmbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWxnIHB4LTMgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwIHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIG1kOnctZnVsbGAsUCh0KS5wYWdlPT09ZS5pZD9gYmctYWNjZW50IHRleHQtYWNjZW50LWZvcmVncm91bmRgOmB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6YmctbXV0ZWQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kYF0pLG9uQ2xpY2s6bj0+UCh0KS5nb1RvKGUuaWQpfSxbRihyLHtpY29uOmUuaWNvbixjbGFzczpgc2l6ZS00YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxNKGBzcGFuYCxudWxsLGsoZS5sYWJlbCksMSldLDEwLGRmKSkpLDEyOCkpXSl9fX0pLHBmPXtjbGFzczpgcG9pbnRlci1ldmVudHMtbm9uZSBmaXhlZCBpbnNldC14LTAgYm90dG9tLTAgei01MCBmbGV4IGZsZXgtY29sLXJldmVyc2UgZ2FwLTIgcC00IHBiLVtjYWxjKGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSsxcmVtKV0gc206aW5zZXQteC1hdXRvIHNtOnJpZ2h0LTQgc206Ym90dG9tLTQgc206dy05NmB9LG1mPXsiYXJpYS1saXZlIjpgYXNzZXJ0aXZlYCxjbGFzczpgZmxleCBmbGV4LWNvbC1yZXZlcnNlIGdhcC0yYH0saGY9e2NsYXNzOmBtaW4tdy0wIGZsZXgtMSB0ZXh0LXNtYH0sZ2Y9eyJhcmlhLWxpdmUiOmBwb2xpdGVgLGNsYXNzOmBmbGV4IGZsZXgtY29sLXJldmVyc2UgZ2FwLTJgfSxfZj17Y2xhc3M6YG1pbi13LTAgZmxleC0xIHRleHQtc21gfSx2Zj1qKHtfX25hbWU6YFRvYXN0Vmlld3BvcnRgLHNldHVwKGUpe2xldCB0PWJlKCksbj17c3VjY2VzczpfZSxlcnJvcjpxZSxpbmZvOlllfSxyPXtzdWNjZXNzOmB0ZXh0LWNoYXJ0LXJlcXVlc3RzYCxlcnJvcjpgdGV4dC1kZXN0cnVjdGl2ZWAsaW5mbzpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0saT1JKCgpPT50LnRvYXN0cy5maWx0ZXIoZT0+ZS5raW5kIT09YGVycm9yYCkpLGE9SSgoKT0+dC50b2FzdHMuZmlsdGVyKGU9PmUua2luZD09PWBlcnJvcmApKTtmdW5jdGlvbiBvKGUpe3QuZGlzbWlzcyhlLmlkKX1yZXR1cm4oZSx0KT0+e2xldCBzPXN0KGBGb250QXdlc29tZUljb25gKTtyZXR1cm4geigpLE4oYGRpdmAscGYsW00oYGRpdmAsbWYsW0YoVGUse3RhZzpgZGl2YCxjbGFzczpgZmxleCBmbGV4LWNvbC1yZXZlcnNlIGdhcC0yYCwiZW50ZXItYWN0aXZlLWNsYXNzIjpgdHJhbnNpdGlvbiBkdXJhdGlvbi0xNTAgZWFzZS1vdXQgbW90aW9uLXJlZHVjZTp0cmFuc2l0aW9uLW5vbmVgLCJlbnRlci1mcm9tLWNsYXNzIjpgdHJhbnNsYXRlLXktMiBvcGFjaXR5LTBgLCJsZWF2ZS1hY3RpdmUtY2xhc3MiOmB0cmFuc2l0aW9uIGR1cmF0aW9uLTE1MCBlYXNlLWluIG1vdGlvbi1yZWR1Y2U6dHJhbnNpdGlvbi1ub25lYCwibGVhdmUtdG8tY2xhc3MiOmBvcGFjaXR5LTBgfSx7ZGVmYXVsdDpfKCgpPT5bKHooITApLE4odyxudWxsLERlKGEudmFsdWUsZT0+KHooKSxOKGBkaXZgLHtrZXk6ZS5pZCxjbGFzczpgcG9pbnRlci1ldmVudHMtYXV0byBmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0yIHJvdW5kZWQtbGcgYm9yZGVyIGJnLXBvcG92ZXIgcHgtMyBweS0yLjUgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LWxnYH0sW0Yocyx7aWNvbjpuW2Uua2luZF0sY2xhc3M6ZHQoW2BtdC0wLjUgc2l6ZS0zLjUgc2hyaW5rLTBgLHJbZS5raW5kXV0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSksTShgcGAsaGYsayhlLm1lc3NhZ2UpLDEpLEYoUChoKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBnaG9zdGAsc2l6ZTpgaWNvbmAsY2xhc3M6YC1tdC0xIC1tci0xIHNpemUtNiBzaHJpbmstMCB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kYCwiYXJpYS1sYWJlbCI6YERpc21pc3M6ICR7ZS5tZXNzYWdlfWAsb25DbGljazp0PT5vKGUpfSx7ZGVmYXVsdDpfKCgpPT5bRihzLHtpY29uOlAoRmUpLGNsYXNzOmBzaXplLTNgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pXSksXzoxfSw4LFtgYXJpYS1sYWJlbGAsYG9uQ2xpY2tgXSldKSkpLDEyOCkpXSksXzoxfSldKSxNKGBkaXZgLGdmLFtGKFRlLHt0YWc6YGRpdmAsY2xhc3M6YGZsZXggZmxleC1jb2wtcmV2ZXJzZSBnYXAtMmAsImVudGVyLWFjdGl2ZS1jbGFzcyI6YHRyYW5zaXRpb24gZHVyYXRpb24tMTUwIGVhc2Utb3V0IG1vdGlvbi1yZWR1Y2U6dHJhbnNpdGlvbi1ub25lYCwiZW50ZXItZnJvbS1jbGFzcyI6YHRyYW5zbGF0ZS15LTIgb3BhY2l0eS0wYCwibGVhdmUtYWN0aXZlLWNsYXNzIjpgdHJhbnNpdGlvbiBkdXJhdGlvbi0xNTAgZWFzZS1pbiBtb3Rpb24tcmVkdWNlOnRyYW5zaXRpb24tbm9uZWAsImxlYXZlLXRvLWNsYXNzIjpgb3BhY2l0eS0wYH0se2RlZmF1bHQ6XygoKT0+Wyh6KCEwKSxOKHcsbnVsbCxEZShpLnZhbHVlLGU9Pih6KCksTihgZGl2YCx7a2V5OmUuaWQsY2xhc3M6YHBvaW50ZXItZXZlbnRzLWF1dG8gZmxleCBpdGVtcy1zdGFydCBnYXAtMiByb3VuZGVkLWxnIGJvcmRlciBiZy1wb3BvdmVyIHB4LTMgcHktMi41IHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHNoYWRvdy1sZ2B9LFtGKHMse2ljb246bltlLmtpbmRdLGNsYXNzOmR0KFtgbXQtMC41IHNpemUtMy41IHNocmluay0wYCxyW2Uua2luZF1dKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pLE0oYHBgLF9mLGsoZS5tZXNzYWdlKSwxKSxGKFAoaCkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgZ2hvc3RgLHNpemU6YGljb25gLGNsYXNzOmAtbXQtMSAtbXItMSBzaXplLTYgc2hyaW5rLTAgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZGAsImFyaWEtbGFiZWwiOmBEaXNtaXNzOiAke2UubWVzc2FnZX1gLG9uQ2xpY2s6dD0+byhlKX0se2RlZmF1bHQ6XygoKT0+W0Yocyx7aWNvbjpQKEZlKSxjbGFzczpgc2l6ZS0zYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKV0pLF86MX0sOCxbYGFyaWEtbGFiZWxgLGBvbkNsaWNrYF0pXSkpKSwxMjgpKV0pLF86MX0pXSldKX19fSk7ZnVuY3Rpb24geWYoKXtsZXQgZT1hZigpLHQ9SmUoKTtmdW5jdGlvbiBuKG4pe2xldHtwYWdlOnIscXVlcnk6aX09UWQobiksYT10ZihpKTtlLnNldEZpbHRlcnMoe3JhbmdlOmEucmFuZ2U/P2A3ZGAsY21wOmEuY21wPz9gbm9uZWAsc2NvcGU6YS5zY29wZT8/YGFsbGB9KSx0LmdvVG8ocixyZihpKSl9bGV0IHI9dHlwZW9mIHdpbmRvdzxgdWA7ciYmbih3aW5kb3cubG9jYXRpb24uaGFzaCk7bGV0IGk9SSgoKT0+e2xldCBuPXt9O3JldHVybiBlLnJhbmdlIT09YDdkYCYmKG4ucmFuZ2U9ZS5yYW5nZSksZS5jbXAhPT1gbm9uZWAmJihuLmNtcD1lLmNtcCksZS5zY29wZSE9PWBhbGxgJiYobi5zY29wZT1lLnNjb3BlKSxPYmplY3QuYXNzaWduKG4sdC5wYXJhbXMpLCRkKHQucGFnZSxuKX0pO2woaSxlPT57ciYmd2luZG93LmxvY2F0aW9uLmhhc2ghPT1lJiZ3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCxgYCxlKX0se2ltbWVkaWF0ZTohMH0pO2Z1bmN0aW9uIGEoKXtuKHdpbmRvdy5sb2NhdGlvbi5oYXNoKX1yJiYodmUoKCk9PndpbmRvdy5hZGRFdmVudExpc3RlbmVyKGBoYXNoY2hhbmdlYCxhKSksa2UoKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGBoYXNoY2hhbmdlYCxhKSkpfXZhciBiZj0oZnVuY3Rpb24oKXtsZXQgZT10eXBlb2YgZG9jdW1lbnQ8YHVgJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KGBsaW5rYCkucmVsTGlzdDtyZXR1cm4gZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cyhgbW9kdWxlcHJlbG9hZGApP2Btb2R1bGVwcmVsb2FkYDpgcHJlbG9hZGB9KSgpLHhmPWZ1bmN0aW9uKGUpe3JldHVybmAvYWRtaW4vYCtlfSxTZj17fSxDZj1mdW5jdGlvbihlLHQsbil7bGV0IHI9UHJvbWlzZS5yZXNvbHZlKCk7aWYodCYmdC5sZW5ndGg+MCl7bGV0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYGxpbmtgKSxpPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYG1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXWApLGE9aT8ubm9uY2V8fGk/LmdldEF0dHJpYnV0ZShgbm9uY2VgKTtmdW5jdGlvbiBvKGUpe3JldHVybiBQcm9taXNlLmFsbChlLm1hcChlPT5Qcm9taXNlLnJlc29sdmUoZSkudGhlbihlPT4oe3N0YXR1czpgZnVsZmlsbGVkYCx2YWx1ZTplfSksZT0+KHtzdGF0dXM6YHJlamVjdGVkYCxyZWFzb246ZX0pKSkpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGltcG9ydC5tZXRhLnJlc29sdmU/aW1wb3J0Lm1ldGEucmVzb2x2ZShlKTpuZXcgVVJMKGUsaW1wb3J0Lm1ldGEudXJsKS5ocmVmfXI9byh0Lm1hcCh0PT57aWYodD14Zih0LG4pLHQ9cyh0KSx0IGluIFNmKXJldHVybjtTZlt0XT0hMDtsZXQgcj10LmVuZHNXaXRoKGAuY3NzYCk7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0pe2xldCBpPWVbbl07aWYoaS5ocmVmPT09dCYmKCFyfHxpLnJlbD09PWBzdHlsZXNoZWV0YCkpcmV0dXJufWxldCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGxpbmtgKTtpZihpLnJlbD1yP2BzdHlsZXNoZWV0YDpiZixyfHwoaS5hcz1gc2NyaXB0YCksaS5jcm9zc09yaWdpbj1gYCxpLmhyZWY9dCxhJiZpLnNldEF0dHJpYnV0ZShgbm9uY2VgLGEpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaSkscilyZXR1cm4gbmV3IFByb21pc2UoKGUsbik9PntpLmFkZEV2ZW50TGlzdGVuZXIoYGxvYWRgLGUpLGkuYWRkRXZlbnRMaXN0ZW5lcihgZXJyb3JgLCgpPT5uKEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7dH1gKSkpfSl9KSl9ZnVuY3Rpb24gaShlKXtsZXQgdD1uZXcgRXZlbnQoYHZpdGU6cHJlbG9hZEVycm9yYCx7Y2FuY2VsYWJsZTohMH0pO2lmKHQucGF5bG9hZD1lLHdpbmRvdy5kaXNwYXRjaEV2ZW50KHQpLCF0LmRlZmF1bHRQcmV2ZW50ZWQpdGhyb3cgZX1yZXR1cm4gci50aGVuKHQ9Pntmb3IobGV0IGUgb2YgdHx8W10pZS5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZpKGUucmVhc29uKTtyZXR1cm4gZSgpLmNhdGNoKGkpfSl9LHdmPXtjbGFzczpgZmxleCB3LWZ1bGwgZmxleC1jb2wgZ2FwLTQgcHgtNCBweS02IHNtOnB4LTYgbGc6cHgtOGB9LFRmPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LEVmPXtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yYH0sRGY9e2tleTowLGNsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sT2Y9e2tleToyLGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00IG1kOmZsZXgtcm93YH0sa2Y9e2NsYXNzOmBtaW4tdy0wIGZsZXgtMWB9LEFmPWBodHRwczovL2dpdGh1Yi5jb20vbHVrYXN6cmFjenlsby90cmFlZmlrLWxsbWdhdGV3YXlgLGpmPXVlKGooe19fbmFtZTpgQXBwYCxzZXR1cChlKXtsZXQgdD1sdCgpLG49amUoKSxyPUplKCk7eWYoKTtsZXQgaT17aG9tZTpNZSgoKT0+Q2YoKCk9PmltcG9ydChgLi9Ib21lUGFnZS14eGFvLUR6US5qc2ApLF9fdml0ZV9fbWFwRGVwcyhbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0pKSksc3BlbmQ6TWUoKCk9PkNmKCgpPT5pbXBvcnQoYC4vU3BlbmRQYWdlLTZaWDJxM1p2LmpzYCksX192aXRlX19tYXBEZXBzKFsxMywxLDIsMyw0LDUsMTQsMTUsNiwxNiwxNyw4LDE4LDE5LDExLDEyLDIwLDIxXSkpKSxjb25zdW1lcnM6TWUoKCk9PkNmKCgpPT5pbXBvcnQoYC4vQ29uc3VtZXJzUGFnZS1pOHNaVjlNWC5qc2ApLF9fdml0ZV9fbWFwRGVwcyhbMjIsMSwyMywzLDE3LDUsMiw0LDI0LDE0LDE1LDYsMTYsMjUsNyw4LDE4LDE5LDldKSkpLG1vZGVsczpNZSgoKT0+Q2YoKCk9PmltcG9ydChgLi9Nb2RlbHNQYWdlLUNjQTFSSEs2LmpzYCksX192aXRlX19tYXBEZXBzKFsyNiwxLDIzLDMsMTcsNSw0LDE0LDE1LDI1LDcsOCwxMiwyMCwyNywyMV0pKSkscmVsaWFiaWxpdHk6TWUoKCk9PkNmKCgpPT5pbXBvcnQoYC4vUmVsaWFiaWxpdHlQYWdlLTYtYno1eDZ6LmpzYCksX192aXRlX19tYXBEZXBzKFsyOCwxLDQsNSwxNCwyNSw3LDE5LDksMTAsMTIsMjcsMjFdKSkpLGNvbmZpZzpNZSgoKT0+Q2YoKCk9PmltcG9ydChgLi9Db25maWdQYWdlLTdJWWNhZlB3LmpzYCksX192aXRlX19tYXBEZXBzKFsyOSwxLDIsMywxNyw0LDI0XSkpKSx0YXJnZXRzOk1lKCgpPT5DZigoKT0+aW1wb3J0KGAuL1RhcmdldHNQYWdlLURZVVZoaHNqLmpzYCksX192aXRlX19tYXBEZXBzKFszMCwxLDQsNSwxNCwxNSwyNSwxOF0pKSl9LGE9SSgoKT0+aVtyLnBhZ2VdKSxvPUkoKCk9PntpZihuLmVycm9yKXJldHVybmByZWZyZXNoIGZhaWxlZDogJHtuLmVycm9yfWA7bGV0IGU9bi5vdmVydmlldz8ucmVwbGljYTtyZXR1cm5gbGFzdCB1cGRhdGVkICR7bi5sYXN0VXBkYXRlZD8udG9Mb2NhbGVUaW1lU3RyaW5nKCk/P2BgfSR7ZT9gIMK3IHJlcGxpY2EgJHtlfWA6YGB9YH0pLHM9SSgoKT0+IW4uZXJyb3ImJiFuLmxhc3RVcGRhdGVkKTtyZXR1cm4gdmUoKCk9PntuLnN0YXJ0UG9sbGluZygpfSksKGUscik9PntsZXQgaT1zdChgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIHooKSxOKHcsbnVsbCxbTShgZGl2YCx3ZixbTShgaGVhZGVyYCxUZixbTShgZGl2YCxFZixbclswXXx8PU0oYGgxYCx7Y2xhc3M6YHRleHQteGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodGB9LGBMTE0gR2F0ZXdheSDigJQgQWRtaW5gLC0xKSxGKFAoaCkse2FzOmBhYCxocmVmOkFmLHRhcmdldDpgX2JsYW5rYCxyZWw6YG5vb3BlbmVyIG5vcmVmZXJyZXJgLHZhcmlhbnQ6YGdob3N0YCxzaXplOmBpY29uYCwiYXJpYS1sYWJlbCI6YEdpdEh1YiByZXBvc2l0b3J5YCxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZGB9LHtkZWZhdWx0Ol8oKCk9PltGKGkse2ljb246UChtcyksY2xhc3M6YHNpemUtNGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSldKSxfOjF9KV0pLFAodCkuaXNBdXRoZW50aWNhdGVkPyh6KCksTihgcGAsRGYsW3MudmFsdWU/KHooKSxOKHcse2tleTowfSxbRihQKHJ0KSx7Y2xhc3M6YGgtNCB3LTQwYH0pLHJbMV18fD1NKGBzcGFuYCx7Y2xhc3M6YHNyLW9ubHlgfSxgTG9hZGluZyBkYXNoYm9hcmQgc3RhdHVz4oCmYCwtMSldLDY0KSk6KHooKSxOKHcse2tleToxfSxbUChuKS5lcnJvcj8oeigpLFYoaSx7a2V5OjAsaWNvbjpQKGF0KSxjbGFzczpgc2l6ZS0zLjUgdGV4dC1kZXN0cnVjdGl2ZWAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkpOkgoYGAsITApLE0oYHNwYW5gLHtjbGFzczpkdChQKG4pLmVycm9yP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDApfSxrKG8udmFsdWUpLDMpXSw2NCkpXSkpOkgoYGAsITApLFAodCkuaXNBdXRoZW50aWNhdGVkPyh6KCksVihsZix7a2V5OjF9KSk6SChgYCwhMCldKSxQKHQpLmlzQXV0aGVudGljYXRlZD8oeigpLFYoSGQse2tleTowLHdhcm5pbmdzOlAobikub3ZlcnZpZXc/Lndhcm5pbmdzPz9bXSwid2FybmluZ3MtZHJvcHBlZCI6UChuKS5vdmVydmlldz8ud2FybmluZ3NEcm9wcGVkfSxudWxsLDgsW2B3YXJuaW5nc2AsYHdhcm5pbmdzLWRyb3BwZWRgXSkpOkgoYGAsITApLFAodCkuaXNBdXRoZW50aWNhdGVkPyh6KCksTihgZGl2YCxPZixbRihmZiksTShgbWFpbmAsa2YsWyh6KCksVihBZShhLnZhbHVlKSkpXSldKSk6KHooKSxWKHpkLHtrZXk6MX0pKV0pLEYodmYpXSw2NCl9fX0pKTtqZi51c2UoTmUoKSksamYuY29tcG9uZW50KGBGb250QXdlc29tZUljb25gLHBzKSxqZi5tb3VudChgI2FwcGApO2V4cG9ydHtwcyBhcyBfLFdkIGFzIGEsa2QgYXMgYyxEcyBhcyBkLFogYXMgZixocyBhcyBnLGdzIGFzIGgsS2QgYXMgaSxqYyBhcyBsLF9zIGFzIG0sWGQgYXMgbixVZCBhcyBvLHdzIGFzIHAsWWQgYXMgcixBZCBhcyBzLGFmIGFzIHQscmMgYXMgdX07",
|
|
),
|
|
},
|
|
"kpi-chm3BiuF.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e2MgYXMgZSxvIGFzIHR9ZnJvbSIuL1RyeUxvbmdlclJhbmdlQnV0dG9uLUNqa1VuYU96LmpzIjtpbXBvcnR7YyBhcyBuLHMgYXMgcn1mcm9tIi4vcHJvdmlkZXItcmF0ZS1EVTdPZ1NlQi5qcyI7ZnVuY3Rpb24gaShlKXtsZXQgbj0wO2ZvcihsZXQgciBvZiBlKXtsZXQgZT1yLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEO2UmJmU+MCYmKG4rPU1hdGgucm91bmQoZSp0KSl9cmV0dXJuIG59ZnVuY3Rpb24gYShlLHQpe3JldHVybiB0PD0wP251bGw6ZS90fWZ1bmN0aW9uIG8odCl7aWYodD09PW51bGwpcmV0dXJuYG9rYDtzd2l0Y2goZSh0KSl7Y2FzZWBub3JtYWxgOnJldHVybmBva2A7Y2FzZWBhbWJlcmA6cmV0dXJuYHdhcm5gO2Nhc2VgcmVkYDpyZXR1cm5gY3JpdGljYWxgfX1mdW5jdGlvbiBzKGUpe3JldHVybiBlLmZpbHRlcihlPT5lLmhlYWx0aFN0YXRlIT09YGNsb3NlZGApLmxlbmd0aH1mdW5jdGlvbiBjKGUpe2xldCB0PTAscj0wO2ZvcihsZXQgbiBvZiBlKXQrPW4uYXR0ZW1wdHNNaW51dGUscis9bi5mYWlsdXJlc01pbnV0ZTtsZXQgaT1uKHQscik7cmV0dXJue3JhdGU6aT09PW51bGw/bnVsbDoxLWksYXR0ZW1wdHM6dCxmYWlsdXJlczpyfX1mdW5jdGlvbiBsKGUpe2lmKGU9PT1udWxsKXJldHVybmBva2A7c3dpdGNoKHIoMS1lKSl7Y2FzZWBuby10cmFmZmljYDpjYXNlYGhlYWx0aHlgOnJldHVybmBva2A7Y2FzZWBkZWdyYWRlZGA6cmV0dXJuYHdhcm5gO2Nhc2Vgc2V2ZXJlYDpyZXR1cm5gY3JpdGljYWxgfX1leHBvcnR7cyBhcyBhLGMgYXMgaSxvIGFzIG4saSBhcyBvLGwgYXMgcixhIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"provider-rate-DU7OgSeB.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"ZnVuY3Rpb24gZShlLHQpe3JldHVybiFOdW1iZXIuaXNGaW5pdGUoZSl8fGU8PTA/bnVsbDooZS0oTnVtYmVyLmlzRmluaXRlKHQpP3Q6MCkpL2V9ZnVuY3Rpb24gdChlKXtyZXR1cm4gZT09PW51bGw/YG5vLXRyYWZmaWNgOmU8Ljk/YHNldmVyZWA6ZTwuOTk/YGRlZ3JhZGVkYDpgaGVhbHRoeWB9ZnVuY3Rpb24gbih0LG4pe2xldCByPWUodCxuKTtyZXR1cm4gciE9PW51bGwmJnI8Ljk5fWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGU+PTE/YDEwMCVgOmAke01hdGguZmxvb3IoZSoxMDApfSVgfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4hTnVtYmVyLmlzRmluaXRlKGUpfHxlPD0wP251bGw6KE51bWJlci5pc0Zpbml0ZSh0KT90OjApL2V9ZnVuY3Rpb24gYShlKXtyZXR1cm4gZT09PW51bGw/YG5vIGRhdGFgOmU8PTA/YDAlYDpgJHtNYXRoLmNlaWwoZSoxMDApfSVgfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBlPT09MT90Om59ZnVuY3Rpb24gcyh0LG4pe2lmKHQ8PTApcmV0dXJuYG5vIHRyYWZmaWMgaW4gdGhlIGxhc3QgbWludXRlYDtsZXQgaT1lKHQsbiksYT1pPT09bnVsbD9gYDpgICgke3IoaSl9KWA7cmV0dXJuYCR7dH0gJHtvKHQsYGF0dGVtcHRgLGBhdHRlbXB0c2ApfSwgJHtufSAke28obixgZmFpbHVyZWAsYGZhaWx1cmVzYCl9IGluIHRoZSBsYXN0IG1pbnV0ZSR7YX1gfWZ1bmN0aW9uIGModCxuKXtpZih0PD0wKXJldHVybmBubyB0cmFmZmljIHRvZGF5YDtsZXQgaT1lKHQsbiksYT1pPT09bnVsbD9gYDpgICgke3IoaSl9KWA7cmV0dXJuYCR7dH0gJHtvKHQsYGF0dGVtcHRgLGBhdHRlbXB0c2ApfSwgJHtufSAke28obixgZmFpbHVyZWAsYGZhaWx1cmVzYCl9IHRvZGF5JHthfWB9ZXhwb3J0e3MgYXMgYSxlIGFzIGMsbiBhcyBpLGEgYXMgbixpIGFzIG8scix0IGFzIHMsYyBhcyB0fTs=",
|
|
),
|
|
},
|
|
"reliability-CFIkRxVV.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e190IGFzIGUsYiBhcyB0LGQgYXMgbixnIGFzIHIseSBhcyBpfWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7aW1wb3J0e3QgYXMgYX1mcm9tIi4vaW5kZXgtZHl3UzhPcFQuanMiO2ltcG9ydHtuIGFzIG99ZnJvbSIuL3Nlcmllcy1OSVJWQlhNUC5qcyI7ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBlPT09YGhvdXJgP3t3aW5kb3c6YGhvdXJgLHNwYW46dH06ZT09PWBkYXlgP3t3aW5kb3c6YGRheWAsc3Bhbjp0fTp7d2luZG93OmBkYXlgLHNwYW46MzB9fWZ1bmN0aW9uIGMoZSx0KXtsZXQgbj1uZXcgTWFwKHQuc2VyaWVzLm1hcChlPT5bZS5zY29wZSxlLnBvaW50c10pKTtyZXR1cm4gZS5zZXJpZXMubWFwKGU9Pih7c2NvcGU6ZS5zY29wZSxwb2ludHM6byhuLmdldChlLnNjb3BlKT8/QXJyYXkoZS5wb2ludHMubGVuZ3RoKS5maWxsKDApLGUucG9pbnRzKX0pKX12YXIgbD1bYC0tY2hhcnQtcmVxdWVzdHNgLGAtLWNoYXJ0LXRva2Vucy1pbmAsYC0tY2hhcnQtdG9rZW5zLW91dGAsYC0tY2hhcnQtY29zdGBdO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIGxbZSVsLmxlbmd0aF19dmFyIGQ9ZShgcmVsaWFiaWxpdHlgLHtzdGF0ZTooKT0+KHtidWNrZXRzOltdLHdpbmRvd1VzZWQ6YGRheWAsZXJyb3JSYXRlOltdLHRpbWVvdXRzOltdLGZhaWxvdmVyczpbXSxyZWplY3Rpb25zOltdLHVucHJpY2VkOltdLGxvYWRpbmc6ITEsbGFzdFVwZGF0ZWQ6bnVsbCxlcnJvcjpgYCxyZXFJZDowLHByb3ZpZGVyUGVyZkJ1Y2tldHM6W10scHJvdmlkZXJQZXJmV2luZG93VXNlZDpgZGF5YCxwcm92aWRlclBlcmZQb2ludHM6W10scHJvdmlkZXJQZXJmTGF0ZW5jeUVuYWJsZWQ6ITEscHJvdmlkZXJQZXJmTG9hZGluZzohMSxwcm92aWRlclBlcmZFcnJvcjpgYCxwcm92aWRlclBlcmZSZXFJZDowfSksYWN0aW9uczp7YXN5bmMgZmV0Y2goKXtsZXQgZT1yKCkub3ZlcnZpZXc7aWYoZT09PW51bGwpcmV0dXJuO2xldCBvPSsrdGhpcy5yZXFJZDt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCByPWEoKSxpPWUucHJvdmlkZXJzLm1hcChlPT5lLm5hbWUpO2lmKGkubGVuZ3RoPT09MCl7aWYobyE9PXRoaXMucmVxSWQpcmV0dXJuO3RoaXMuYnVja2V0cz1bXSx0aGlzLndpbmRvd1VzZWQ9cyhyLndpbmRvdyxyLnNwYW4pLndpbmRvdyx0aGlzLmVycm9yUmF0ZT1bXSx0aGlzLnRpbWVvdXRzPVtdLHRoaXMuZmFpbG92ZXJzPVtdLHRoaXMucmVqZWN0aW9ucz1bXSx0aGlzLnVucHJpY2VkPVtdLHRoaXMubGFzdFVwZGF0ZWQ9bmV3IERhdGUsdGhpcy5lcnJvcj1gYDtyZXR1cm59bGV0e3dpbmRvdzpsLHNwYW46dX09cyhyLndpbmRvdyxyLnNwYW4pLGQ9aS5tYXAoZT0+YHByb3ZpZGVyOiR7ZX1gKSxbZixwLG0saCxnLF9dPWF3YWl0IFByb21pc2UuYWxsKFt0KG4oe3Njb3BlOmQsbWV0cmljOmBhdHRlbXB0YCx3aW5kb3c6bCxzcGFuOnV9KSksdChuKHtzY29wZTpkLG1ldHJpYzpgZmFpbGAsd2luZG93Omwsc3Bhbjp1fSkpLHQobih7c2NvcGU6ZCxtZXRyaWM6YHRpbWVvdXRgLHdpbmRvdzpsLHNwYW46dX0pKSx0KG4oe3Njb3BlOmQsbWV0cmljOmBmb3ZlcmAsd2luZG93Omwsc3Bhbjp1fSkpLHQobih7c2NvcGU6W2B0b3RhbGBdLG1ldHJpYzpgcmVqYCx3aW5kb3c6bCxzcGFuOnV9KSksdChuKHtzY29wZTpbYHRvdGFsYF0sbWV0cmljOmByNDAyYCx3aW5kb3c6bCxzcGFuOnV9KSldKTtpZihvIT09dGhpcy5yZXFJZClyZXR1cm47dGhpcy5idWNrZXRzPWYuYnVja2V0cyx0aGlzLndpbmRvd1VzZWQ9bCx0aGlzLmVycm9yUmF0ZT1jKGYscCksdGhpcy50aW1lb3V0cz1tLnNlcmllcyx0aGlzLmZhaWxvdmVycz1oLnNlcmllcyx0aGlzLnJlamVjdGlvbnM9Zy5zZXJpZXNbMF0/LnBvaW50cz8/W10sdGhpcy51bnByaWNlZD1fLnNlcmllc1swXT8ucG9pbnRzPz9bXSx0aGlzLmxhc3RVcGRhdGVkPW5ldyBEYXRlLHRoaXMuZXJyb3I9YGB9Y2F0Y2goZSl7aWYobyE9PXRoaXMucmVxSWR8fGUgaW5zdGFuY2VvZiBpJiYoZS5zdGF0dXM9PT00MDF8fGUuc3RhdHVzPT09NDAzKSlyZXR1cm47dGhpcy5lcnJvcj1lIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1maW5hbGx5e289PT10aGlzLnJlcUlkJiYodGhpcy5sb2FkaW5nPSExKX19LGFzeW5jIGZldGNoUHJvdmlkZXJQZXJmKGUpe2xldCBuPSsrdGhpcy5wcm92aWRlclBlcmZSZXFJZCxvPXIoKS5vdmVydmlldz8uZmVhdHVyZXMubGF0ZW5jeVN0YXRzPz8hMTtpZighZXx8IW8pe2lmKG4hPT10aGlzLnByb3ZpZGVyUGVyZlJlcUlkKXJldHVybjt0aGlzLnByb3ZpZGVyUGVyZkJ1Y2tldHM9W10sdGhpcy5wcm92aWRlclBlcmZQb2ludHM9W10sdGhpcy5wcm92aWRlclBlcmZMYXRlbmN5RW5hYmxlZD0hMSx0aGlzLnByb3ZpZGVyUGVyZkVycm9yPWBgLHRoaXMucHJvdmlkZXJQZXJmTG9hZGluZz0hMTtyZXR1cm59dGhpcy5wcm92aWRlclBlcmZMb2FkaW5nPSEwO3RyeXtsZXQgcj1hKCkse3dpbmRvdzppLHNwYW46b309cyhyLndpbmRvdyxyLnNwYW4pLGM9bmV3IFVSTFNlYXJjaFBhcmFtcyh7a2luZDpgcHJvdmlkZXJgLHdpbmRvdzppLHNwYW46U3RyaW5nKG8pLHNlcmllczpgMWB9KTtjLmFwcGVuZChgaWRgLGUpO2xldCBsPWF3YWl0IHQoYC9hZG1pbi9hcGkvcGVyZm9ybWFuY2U/JHtjLnRvU3RyaW5nKCl9YCk7aWYobiE9PXRoaXMucHJvdmlkZXJQZXJmUmVxSWQpcmV0dXJuO3RoaXMucHJvdmlkZXJQZXJmQnVja2V0cz1sLmJ1Y2tldHM/P1tdLHRoaXMucHJvdmlkZXJQZXJmV2luZG93VXNlZD1pLHRoaXMucHJvdmlkZXJQZXJmUG9pbnRzPWwucG9pbnRzPz9bXSx0aGlzLnByb3ZpZGVyUGVyZkxhdGVuY3lFbmFibGVkPWwubGF0ZW5jeUVuYWJsZWQsdGhpcy5wcm92aWRlclBlcmZFcnJvcj1gYH1jYXRjaChlKXtpZihuIT09dGhpcy5wcm92aWRlclBlcmZSZXFJZHx8ZSBpbnN0YW5jZW9mIGkmJihlLnN0YXR1cz09PTQwMXx8ZS5zdGF0dXM9PT00MDMpKXJldHVybjt0aGlzLnByb3ZpZGVyUGVyZkVycm9yPWUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfWZpbmFsbHl7bj09PXRoaXMucHJvdmlkZXJQZXJmUmVxSWQmJih0aGlzLnByb3ZpZGVyUGVyZkxvYWRpbmc9ITEpfX19fSk7ZXhwb3J0e3UgYXMgbixkIGFzIHIscyBhcyB0fTs=",
|
|
),
|
|
},
|
|
"search-expand-CHd4FWZZ.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e2EgYXMgZSxpIGFzIHQsbixyLHMgYXMgaSx0IGFzIGF9ZnJvbSIuL3VzZUlkLUI5ZEp1bW9JLmpzIjtpbXBvcnR7JCBhcyBvLEFyIGFzIHMsRCBhcyBjLERuIGFzIGwsRXIgYXMgdSxGciBhcyBkLEhuIGFzIGYsSSBhcyBwLE4gYXMgbSxTaSBhcyBoLFVuIGFzIGcsViBhcyBfLFZ0IGFzIHYsVyBhcyB5LFggYXMgYixYbiBhcyBlZSxaIGFzIHgsXyBhcyBTLF9uIGFzIEMsYW4gYXMgdyxiaSBhcyBULGVyIGFzIHRlLGdpIGFzIEUsaG4gYXMgRCxpbiBhcyBPLGl0IGFzIG5lLGxyIGFzIGssbXQgYXMgcmUsbnIgYXMgQSxvaSBhcyBqLG9uIGFzIE0scGkgYXMgTixzbiBhcyBQLHVyIGFzIEYseWkgYXMgSX1mcm9tIi4vU2tlbGV0b24tQjB6aUI2T2QuanMiO2ltcG9ydHtkIGFzIGllLHAgYXMgTCx1IGFzIFJ9ZnJvbSIuL2luZGV4LWR5d1M4T3BULmpzIjtpbXBvcnR7dCBhcyB6fWZyb20iLi9jbGlwYm9hcmQtQjczZlowYzEuanMiO2ltcG9ydHthIGFzIEIsZCBhcyBWLHQgYXMgSH1mcm9tIi4vYmFkZ2UtRFVpQlREeUEuanMiO2Z1bmN0aW9uIFUoZSx0KXtyZXR1cm4gaWUoZSk/ITE6QXJyYXkuaXNBcnJheShlKT9lLnNvbWUoZT0+TChlLHQpKTpMKGUsdCl9dmFyIFc9W2BJTlBVVGAsYFRFWFRBUkVBYF07ZnVuY3Rpb24gRyhlLHQsbixyPXt9KXtpZighdHx8ci5lbmFibGVJZ25vcmVkRWxlbWVudCYmVy5pbmNsdWRlcyh0Lm5vZGVOYW1lKSlyZXR1cm4gbnVsbDtsZXR7YXJyb3dLZXlPcHRpb25zOmk9YGJvdGhgLGF0dHJpYnV0ZU5hbWU6YT1gW2RhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1dYCxpdGVtc0FycmF5Om89W10sbG9vcDpzPSEwLGRpcjpjPWBsdHJgLHByZXZlbnRTY3JvbGw6bD0hMCxmb2N1czp1PSExfT1yLFtkLGYscCxtLGgsZ109W2Uua2V5PT09YEFycm93UmlnaHRgLGUua2V5PT09YEFycm93TGVmdGAsZS5rZXk9PT1gQXJyb3dVcGAsZS5rZXk9PT1gQXJyb3dEb3duYCxlLmtleT09PWBIb21lYCxlLmtleT09PWBFbmRgXSxfPXB8fG0sdj1kfHxmO2lmKCFoJiYhZyYmKCFfJiYhdnx8aT09PWB2ZXJ0aWNhbGAmJnZ8fGk9PT1gaG9yaXpvbnRhbGAmJl8pKXJldHVybiBudWxsO2xldCB5PW4/QXJyYXkuZnJvbShuLnF1ZXJ5U2VsZWN0b3JBbGwoYSkpOm87aWYoIXkubGVuZ3RoKXJldHVybiBudWxsO2wmJmUucHJldmVudERlZmF1bHQoKTtsZXQgYj1udWxsO3JldHVybiB2fHxfP2I9Syh5LHQse2dvRm9yd2FyZDpfP206Yz09PWBsdHJgP2Q6Zixsb29wOnN9KTpoP2I9eS5hdCgwKXx8bnVsbDpnJiYoYj15LmF0KC0xKXx8bnVsbCksdSYmYj8uZm9jdXMoKSxifWZ1bmN0aW9uIEsoZSx0LG4scj1lLmluY2x1ZGVzKHQpP2UubGVuZ3RoOmUubGVuZ3RoKzEpe2lmKC0tcj09PTApcmV0dXJuIG51bGw7bGV0IGk9ZS5pbmRleE9mKHQpLGE7aWYoYT1pPT09LTE/bi5nb0ZvcndhcmQ/MDplLmxlbmd0aC0xOm4uZ29Gb3J3YXJkP2krMTppLTEsIW4ubG9vcCYmKGE8MHx8YT49ZS5sZW5ndGgpKXJldHVybiBudWxsO2xldCBvPWVbKGErZS5sZW5ndGgpJWUubGVuZ3RoXTtyZXR1cm4gbz9vLmhhc0F0dHJpYnV0ZShgZGlzYWJsZWRgKSYmby5nZXRBdHRyaWJ1dGUoYGRpc2FibGVkYCkhPT1gZmFsc2VgP0soZSxvLG4scik6bzpudWxsfXZhcltxLEpdPWkoYENvbGxhcHNpYmxlUm9vdGApLFk9Qyh7X19uYW1lOmBDb2xsYXBzaWJsZVJvb3RgLHByb3BzOntkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LG9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOltgdXBkYXRlOm9wZW5gXSxzZXR1cChlLHtleHBvc2U6bixlbWl0OnJ9KXtsZXQgaT1lLGE9cChpLGBvcGVuYCxyLHtkZWZhdWx0VmFsdWU6aS5kZWZhdWx0T3BlbixwYXNzaXZlOmkub3Blbj09PXZvaWQgMH0pLHtkaXNhYmxlZDpvLHVubW91bnRPbkhpZGU6c309TihpKTtyZXR1cm4gSih7Y29udGVudElkOmBgLGRpc2FibGVkOm8sb3BlbjphLHVubW91bnRPbkhpZGU6cyxvbk9wZW5Ub2dnbGU6KCk9PntvLnZhbHVlfHwoYS52YWx1ZT0hYS52YWx1ZSl9fSksbih7b3BlbjphfSksdCgpLChlLHQpPT4oQSgpLE0oRShjKSx7YXM6ZS5hcywiYXMtY2hpbGQiOmkuYXNDaGlsZCwiZGF0YS1zdGF0ZSI6RShhKT9gb3BlbmA6YGNsb3NlZGAsImRhdGEtZGlzYWJsZWQiOkUobyk/YGA6dm9pZCAwfSx7ZGVmYXVsdDpkKCgpPT5bayhlLiRzbG90cyxgZGVmYXVsdGAse29wZW46RShhKX0pXSksXzozfSw4LFtgYXNgLGBhcy1jaGlsZGAsYGRhdGEtc3RhdGVgLGBkYXRhLWRpc2FibGVkYF0pKX19KSxYPUMoe2luaGVyaXRBdHRyczohMSxfX25hbWU6YENvbGxhcHNpYmxlQ29udGVudGAscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2Bjb250ZW50Rm91bmRgXSxzZXR1cChlLHtlbWl0Om59KXtsZXQgcj1lLGk9bixvPXEoKTtvLmNvbnRlbnRJZHx8PWEodm9pZCAwLGByZWthLWNvbGxhcHNpYmxlLWNvbnRlbnRgKTtsZXQgbD1qKCkse2ZvcndhcmRSZWY6dSxjdXJyZW50RWxlbWVudDpwfT10KCksaD1qKDApLF89aigwKSx2PU8oKCk9Pm8ub3Blbi52YWx1ZSkseT1qKHYudmFsdWUpLGI9aigpO3MoKCk9Plt2LnZhbHVlLGwudmFsdWU/LnByZXNlbnRdLGFzeW5jKCk9Pnthd2FpdCBnKCk7bGV0IGU9cC52YWx1ZTtpZighZSlyZXR1cm47Yi52YWx1ZT1iLnZhbHVlfHx7dHJhbnNpdGlvbkR1cmF0aW9uOmUuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uLGFuaW1hdGlvbk5hbWU6ZS5zdHlsZS5hbmltYXRpb25OYW1lfSxlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1gMHNgLGUuc3R5bGUuYW5pbWF0aW9uTmFtZT1gbm9uZWA7bGV0IHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtfLnZhbHVlPXQuaGVpZ2h0LGgudmFsdWU9dC53aWR0aCx5LnZhbHVlfHwoZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249Yi52YWx1ZS50cmFuc2l0aW9uRHVyYXRpb24sZS5zdHlsZS5hbmltYXRpb25OYW1lPWIudmFsdWUuYW5pbWF0aW9uTmFtZSl9LHtpbW1lZGlhdGU6ITB9KTtsZXQgeD1PKCgpPT55LnZhbHVlJiZvLm9wZW4udmFsdWUpO3JldHVybiBlZSgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3kudmFsdWU9ITF9KX0pLG0ocCxgYmVmb3JlbWF0Y2hgLGU9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntvLm9uT3BlblRvZ2dsZSgpLGkoYGNvbnRlbnRGb3VuZGApfSl9KSwoZSx0KT0+KEEoKSxNKEUoUikse3JlZl9rZXk6YHByZXNlbnRSZWZgLHJlZjpsLHByZXNlbnQ6ZS5mb3JjZU1vdW50fHxFKG8pLm9wZW4udmFsdWUsImZvcmNlLW1vdW50IjohMH0se2RlZmF1bHQ6ZCgoe3ByZXNlbnQ6dH0pPT5bRChFKGMpLGYoZS4kYXR0cnMse2lkOkUobykuY29udGVudElkLHJlZjpFKHUpLCJhcy1jaGlsZCI6ci5hc0NoaWxkLGFzOmUuYXMsaGlkZGVuOnQ/dm9pZCAwOkUobykudW5tb3VudE9uSGlkZS52YWx1ZT9gYDpgdW50aWwtZm91bmRgLCJkYXRhLXN0YXRlIjp4LnZhbHVlP3ZvaWQgMDpFKG8pLm9wZW4udmFsdWU/YG9wZW5gOmBjbG9zZWRgLCJkYXRhLWRpc2FibGVkIjpFKG8pLmRpc2FibGVkPy52YWx1ZT9gYDp2b2lkIDAsc3R5bGU6eyItLXJla2EtY29sbGFwc2libGUtY29udGVudC1oZWlnaHQiOmAke18udmFsdWV9cHhgLCItLXJla2EtY29sbGFwc2libGUtY29udGVudC13aWR0aCI6YCR7aC52YWx1ZX1weGB9fSkse2RlZmF1bHQ6ZCgoKT0+WyFFKG8pLnVubW91bnRPbkhpZGUudmFsdWV8fHQ/ayhlLiRzbG90cyxgZGVmYXVsdGAse2tleTowfSk6UChgdi1pZmAsITApXSksXzoyfSwxMDQwLFtgaWRgLGBhcy1jaGlsZGAsYGFzYCxgaGlkZGVuYCxgZGF0YS1zdGF0ZWAsYGRhdGEtZGlzYWJsZWRgLGBzdHlsZWBdKV0pLF86M30sOCxbYHByZXNlbnRgXSkpfX0pLGFlPUMoe19fbmFtZTpgQ29sbGFwc2libGVUcmlnZ2VyYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGJ1dHRvbmB9fSxzZXR1cChlKXtsZXQgbj1lO3QoKTtsZXQgcj1xKCk7cmV0dXJuKGUsdCk9PihBKCksTShFKGMpLHt0eXBlOmUuYXM9PT1gYnV0dG9uYD9gYnV0dG9uYDp2b2lkIDAsYXM6ZS5hcywiYXMtY2hpbGQiOm4uYXNDaGlsZCwiYXJpYS1jb250cm9scyI6RShyKS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOkUocikub3Blbi52YWx1ZSwiZGF0YS1zdGF0ZSI6RShyKS5vcGVuLnZhbHVlP2BvcGVuYDpgY2xvc2VkYCwiZGF0YS1kaXNhYmxlZCI6RShyKS5kaXNhYmxlZD8udmFsdWU/YGA6dm9pZCAwLGRpc2FibGVkOkUocikuZGlzYWJsZWQ/LnZhbHVlLG9uQ2xpY2s6RShyKS5vbk9wZW5Ub2dnbGV9LHtkZWZhdWx0OmQoKCk9PltrKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2B0eXBlYCxgYXNgLGBhcy1jaGlsZGAsYGFyaWEtY29udHJvbHNgLGBhcmlhLWV4cGFuZGVkYCxgZGF0YS1zdGF0ZWAsYGRhdGEtZGlzYWJsZWRgLGBkaXNhYmxlZGAsYG9uQ2xpY2tgXSkpfX0pO2Z1bmN0aW9uIG9lKHt0eXBlOmUsZGVmYXVsdFZhbHVlOnQsbW9kZWxWYWx1ZTpufSl7bGV0IHI9bnx8dDtyZXR1cm4gbiE9PXZvaWQgMHx8dCE9PXZvaWQgMD9BcnJheS5pc0FycmF5KHIpP2BtdWx0aXBsZWA6YHNpbmdsZWA6ZT8/YHNpbmdsZWB9ZnVuY3Rpb24gc2Uoe3R5cGU6ZSxkZWZhdWx0VmFsdWU6dCxtb2RlbFZhbHVlOm59KXtyZXR1cm4gZXx8b2Uoe3R5cGU6ZSxkZWZhdWx0VmFsdWU6dCxtb2RlbFZhbHVlOm59KX1mdW5jdGlvbiBjZSh7dHlwZTplLGRlZmF1bHRWYWx1ZTp0fSl7cmV0dXJuIHQ9PT12b2lkIDA/ZT09PWBzaW5nbGVgP3ZvaWQgMDpbXTp0fWZ1bmN0aW9uIGxlKGUsdCl7bGV0IG49TygoKT0+c2UoZSkpLHI9cChlLGBtb2RlbFZhbHVlYCx0LHtkZWZhdWx0VmFsdWU6Y2UoZSkscGFzc2l2ZTplLm1vZGVsVmFsdWU9PT12b2lkIDAsZGVlcDohMH0pO2Z1bmN0aW9uIGkoZSl7aWYobi52YWx1ZT09PWBzaW5nbGVgKXIudmFsdWU9TChlLHIudmFsdWUpP3ZvaWQgMDplO2Vsc2V7bGV0IHQ9QXJyYXkuaXNBcnJheShyLnZhbHVlKT9bLi4uci52YWx1ZXx8W11dOltyLnZhbHVlXS5maWx0ZXIoQm9vbGVhbik7aWYoVSh0LGUpKXtsZXQgbj10LmZpbmRJbmRleCh0PT5MKHQsZSkpO3Quc3BsaWNlKG4sMSl9ZWxzZSB0LnB1c2goZSk7ci52YWx1ZT10fX1yZXR1cm57bW9kZWxWYWx1ZTpyLGNoYW5nZU1vZGVsVmFsdWU6aSxpc1NpbmdsZTpPKCgpPT5uLnZhbHVlPT09YHNpbmdsZWApfX12YXJbWix1ZV09aShgQWNjb3JkaW9uUm9vdGApLGRlPUMoe19fbmFtZTpgQWNjb3JkaW9uUm9vdGAscHJvcHM6e2NvbGxhcHNpYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDpgdmVydGljYWxgfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx0eXBlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOltgdXBkYXRlOm1vZGVsVmFsdWVgXSxzZXR1cChuLHtlbWl0OnJ9KXtsZXQgaT1uLGE9cix7ZGlyOm8sZGlzYWJsZWQ6cyx1bm1vdW50T25IaWRlOmx9PU4oaSksdT1lKG8pLHttb2RlbFZhbHVlOmYsY2hhbmdlTW9kZWxWYWx1ZTpwLGlzU2luZ2xlOm19PWxlKGksYSkse2ZvcndhcmRSZWY6aCxjdXJyZW50RWxlbWVudDpnfT10KCk7cmV0dXJuIHVlKHtkaXNhYmxlZDpzLGRpcmVjdGlvbjp1LG9yaWVudGF0aW9uOmkub3JpZW50YXRpb24scGFyZW50RWxlbWVudDpnLGlzU2luZ2xlOm0sY29sbGFwc2libGU6aS5jb2xsYXBzaWJsZSxtb2RlbFZhbHVlOmYsY2hhbmdlTW9kZWxWYWx1ZTpwLHVubW91bnRPbkhpZGU6bH0pLChlLHQpPT4oQSgpLE0oRShjKSx7cmVmOkUoaCksImFzLWNoaWxkIjplLmFzQ2hpbGQsYXM6ZS5hc30se2RlZmF1bHQ6ZCgoKT0+W2soZS4kc2xvdHMsYGRlZmF1bHRgLHttb2RlbFZhbHVlOkUoZil9KV0pLF86M30sOCxbYGFzLWNoaWxkYCxgYXNgXSkpfX0pLFE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuT3Blbj1gb3BlbmAsZS5DbG9zZWQ9YGNsb3NlZGAsZX0oUXx8e30pLFskLGZlXT1pKGBBY2NvcmRpb25JdGVtYCkscGU9Qyh7X19uYW1lOmBBY2NvcmRpb25JdGVtYCxwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUse2V4cG9zZTpufSl7bGV0IHI9ZSxpPVooKSxhPU8oKCk9PmkuaXNTaW5nbGUudmFsdWU/ci52YWx1ZT09PWkubW9kZWxWYWx1ZS52YWx1ZTpBcnJheS5pc0FycmF5KGkubW9kZWxWYWx1ZS52YWx1ZSkmJmkubW9kZWxWYWx1ZS52YWx1ZS5pbmNsdWRlcyhyLnZhbHVlKSksbz1PKCgpPT5pLmRpc2FibGVkLnZhbHVlfHxyLmRpc2FibGVkKSxzPU8oKCk9Pm8udmFsdWU/YGA6dm9pZCAwKSxjPU8oKCk9PmEudmFsdWU/US5PcGVuOlEuQ2xvc2VkKTtuKHtvcGVuOmEsZGF0YURpc2FibGVkOnN9KTtsZXR7Y3VycmVudFJlZjpsLGN1cnJlbnRFbGVtZW50OnV9PXQoKTtmZSh7b3BlbjphLGRhdGFTdGF0ZTpjLGRpc2FibGVkOm8sZGF0YURpc2FibGVkOnMsdHJpZ2dlcklkOmBgLGN1cnJlbnRSZWY6bCxjdXJyZW50RWxlbWVudDp1LHZhbHVlOk8oKCk9PnIudmFsdWUpfSk7ZnVuY3Rpb24gZihlKXtsZXQgdD1lLnRhcmdldDtpZihBcnJheS5mcm9tKGkucGFyZW50RWxlbWVudC52YWx1ZT8ucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1dYCk/P1tdKS5maW5kSW5kZXgoZT0+ZT09PXQpPT09LTEpcmV0dXJuIG51bGw7RyhlLHQsaS5wYXJlbnRFbGVtZW50LnZhbHVlLHthcnJvd0tleU9wdGlvbnM6aS5vcmllbnRhdGlvbixkaXI6aS5kaXJlY3Rpb24udmFsdWUsZm9jdXM6ITB9KX1yZXR1cm4oZSx0KT0+KEEoKSxNKEUoWSkseyJkYXRhLW9yaWVudGF0aW9uIjpFKGkpLm9yaWVudGF0aW9uLCJkYXRhLWRpc2FibGVkIjpzLnZhbHVlLCJkYXRhLXN0YXRlIjpjLnZhbHVlLGRpc2FibGVkOm8udmFsdWUsb3BlbjphLnZhbHVlLGFzOnIuYXMsImFzLWNoaWxkIjpyLmFzQ2hpbGQsInVubW91bnQtb24taGlkZSI6ci51bm1vdW50T25IaWRlPz9FKGkpLnVubW91bnRPbkhpZGUudmFsdWUsb25LZXlkb3duOnYoZixbYHVwYCxgZG93bmAsYGxlZnRgLGByaWdodGAsYGhvbWVgLGBlbmRgXSl9LHtkZWZhdWx0OmQoKCk9PltrKGUuJHNsb3RzLGBkZWZhdWx0YCx7b3BlbjphLnZhbHVlfSldKSxfOjN9LDgsW2BkYXRhLW9yaWVudGF0aW9uYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtc3RhdGVgLGBkaXNhYmxlZGAsYG9wZW5gLGBhc2AsYGFzLWNoaWxkYCxgdW5tb3VudC1vbi1oaWRlYF0pKX19KSxtZT1DKHtfX25hbWU6YEFjY29yZGlvbkNvbnRlbnRgLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCBuPWUscj1aKCksaT0kKCk7cmV0dXJuIHQoKSwoZSx0KT0+KEEoKSxNKEUoWCkse3JvbGU6YHJlZ2lvbmAsImFzLWNoaWxkIjpuLmFzQ2hpbGQsYXM6ZS5hcywiZm9yY2UtbW91bnQiOm4uZm9yY2VNb3VudCwiYXJpYS1sYWJlbGxlZGJ5IjpFKGkpLnRyaWdnZXJJZCwiZGF0YS1zdGF0ZSI6RShpKS5kYXRhU3RhdGUudmFsdWUsImRhdGEtZGlzYWJsZWQiOkUoaSkuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjpFKHIpLm9yaWVudGF0aW9uLHN0eWxlOnsiLS1yZWthLWFjY29yZGlvbi1jb250ZW50LXdpZHRoIjpgdmFyKC0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoKWAsIi0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQiOmB2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KWB9LG9uQ29udGVudEZvdW5kOnRbMF18fD1lPT5FKHIpLmNoYW5nZU1vZGVsVmFsdWUoRShpKS52YWx1ZS52YWx1ZSl9LHtkZWZhdWx0OmQoKCk9PltrKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhcy1jaGlsZGAsYGFzYCxgZm9yY2UtbW91bnRgLGBhcmlhLWxhYmVsbGVkYnlgLGBkYXRhLXN0YXRlYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtb3JpZW50YXRpb25gXSkpfX0pLGhlPUMoe19fbmFtZTpgQWNjb3JkaW9uSGVhZGVyYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGgzYH19LHNldHVwKGUpe2xldCBuPWUscj1aKCksaT0kKCk7cmV0dXJuIHQoKSwoZSx0KT0+KEEoKSxNKEUoYykse2FzOm4uYXMsImFzLWNoaWxkIjpuLmFzQ2hpbGQsImRhdGEtb3JpZW50YXRpb24iOkUocikub3JpZW50YXRpb24sImRhdGEtc3RhdGUiOkUoaSkuZGF0YVN0YXRlLnZhbHVlLCJkYXRhLWRpc2FibGVkIjpFKGkpLmRhdGFEaXNhYmxlZC52YWx1ZX0se2RlZmF1bHQ6ZCgoKT0+W2soZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGFzYCxgYXMtY2hpbGRgLGBkYXRhLW9yaWVudGF0aW9uYCxgZGF0YS1zdGF0ZWAsYGRhdGEtZGlzYWJsZWRgXSkpfX0pLGdlPUMoe19fbmFtZTpgQWNjb3JkaW9uVHJpZ2dlcmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCB0PWUsbj1aKCkscj0kKCk7ci50cmlnZ2VySWR8fD1hKHZvaWQgMCxgcmVrYS1hY2NvcmRpb24tdHJpZ2dlcmApO2Z1bmN0aW9uIGkoKXtsZXQgZT1uLmlzU2luZ2xlLnZhbHVlJiZyLm9wZW4udmFsdWUmJiFuLmNvbGxhcHNpYmxlO3IuZGlzYWJsZWQudmFsdWV8fGV8fG4uY2hhbmdlTW9kZWxWYWx1ZShyLnZhbHVlLnZhbHVlKX1yZXR1cm4oZSxhKT0+KEEoKSxNKEUoYWUpLHtpZDpFKHIpLnRyaWdnZXJJZCxyZWY6RShyKS5jdXJyZW50UmVmLCJkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtIjpgYCxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJhcmlhLWRpc2FibGVkIjpFKHIpLmRpc2FibGVkLnZhbHVlfHx2b2lkIDAsImFyaWEtZXhwYW5kZWQiOkUocikub3Blbi52YWx1ZXx8ITEsImRhdGEtZGlzYWJsZWQiOkUocikuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjpFKG4pLm9yaWVudGF0aW9uLCJkYXRhLXN0YXRlIjpFKHIpLmRhdGFTdGF0ZS52YWx1ZSxkaXNhYmxlZDpFKHIpLmRpc2FibGVkLnZhbHVlLG9uQ2xpY2s6aX0se2RlZmF1bHQ6ZCgoKT0+W2soZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGlkYCxgYXNgLGBhcy1jaGlsZGAsYGFyaWEtZGlzYWJsZWRgLGBhcmlhLWV4cGFuZGVkYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtb3JpZW50YXRpb25gLGBkYXRhLXN0YXRlYCxgZGlzYWJsZWRgXSkpfX0pLF9lPUMoe19fbmFtZTpgTW9kZWxDaGlwYCxwcm9wczp7aWQ6e30sY29udGV4dFRva2Vuczp7fSxpbnB1dFBlck1Ub2tVc2Q6e30sb3V0cHV0UGVyTVRva1VzZDp7fX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPXUoYGxhYmVsYCkscj1qKGBpZGxlYCksaSxhPVMoKTtmdW5jdGlvbiBvKCl7Y2xlYXJUaW1lb3V0KGkpLGk9c2V0VGltZW91dCgoKT0+e3IudmFsdWU9YGlkbGVgfSwxNTAwKX1hc3luYyBmdW5jdGlvbiBzKCl7bGV0IGU9YXdhaXQgeih0LmlkLG4udmFsdWU/P3ZvaWQgMCk7ci52YWx1ZT1lLGU9PT1gZmFpbGVkYCYmYS5wdXNoKHtraW5kOmBlcnJvcmAsbWVzc2FnZTpgQ291bGQgbm90IGNvcHkgJHt0LmlkfS5gfSksbygpfWxldCBjPXtpZGxlOm5lLGNvcGllZDpiLHNlbGVjdGVkOmIsZmFpbGVkOnJlfSxsPU8oKCk9Pih7aWRsZTpgQ29weSAke3QuaWR9YCxjb3BpZWQ6YENvcGllZGAsc2VsZWN0ZWQ6YFNlbGVjdGVkIOKAlCBwcmVzcyBDdHJsL0NtZCtDYCxmYWlsZWQ6YENvcHkgZmFpbGVkYH0pKSxmPU8oKCk9PntsZXQgZT1bXTtyZXR1cm4gdC5pbnB1dFBlck1Ub2tVc2QhPT12b2lkIDAmJnQub3V0cHV0UGVyTVRva1VzZCE9PXZvaWQgMCYmZS5wdXNoKFYodC5pbnB1dFBlck1Ub2tVc2QsdC5vdXRwdXRQZXJNVG9rVXNkKSksdC5jb250ZXh0VG9rZW5zIT09dm9pZCAwJiZlLnB1c2goYCR7Qih0LmNvbnRleHRUb2tlbnMpfSBjb250ZXh0YCksZS5qb2luKGAgwrcgYCl9KSxwPU8oKCk9PntsZXQgZT1sLnZhbHVlW3IudmFsdWVdO3JldHVybiBmLnZhbHVlP2Ake2V9IMK3ICR7Zi52YWx1ZX1gOmV9KTtyZXR1cm4gdGUoKCk9PntjbGVhclRpbWVvdXQoaSl9KSwodCxuKT0+e2xldCBpPUYoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBBKCksTShFKEgpLHthczpgYnV0dG9uYCx0eXBlOmBidXR0b25gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6SShbYG1heC13LWZ1bGwgY3Vyc29yLXBvaW50ZXIgZ2FwLTEgdHJ1bmNhdGUgZm9udC1tb25vIHRleHQteHMgZm9udC1ub3JtYWwgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmRgLHIudmFsdWU9PT1gZmFpbGVkYD9gdGV4dC1kZXN0cnVjdGl2ZWA6YGBdKSx0aXRsZTpwLnZhbHVlLCJhcmlhLWxhYmVsIjpwLnZhbHVlLG9uQ2xpY2s6c30se2RlZmF1bHQ6ZCgoKT0+W3coYHNwYW5gLHtyZWY6YGxhYmVsYCxjbGFzczpgbWluLXctMCB0cnVuY2F0ZSBzZWxlY3QtdGV4dGB9LGgoZS5pZCksNTEzKSxEKGkse2ljb246Y1tyLnZhbHVlXSxjbGFzczpgc2l6ZS0yLjUgc2hyaW5rLTBgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pXSksXzoxfSw4LFtgY2xhc3NgLGB0aXRsZWAsYGFyaWEtbGFiZWxgXSl9fX0pLHZlPUMoe19fbmFtZTpgQWNjb3JkaW9uYCxwcm9wczp7Y29sbGFwc2libGU6e3R5cGU6Qm9vbGVhbn0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sZGlyOnt9LG9yaWVudGF0aW9uOnt9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbn0sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSx0eXBlOnt9LG1vZGVsVmFsdWU6e30sZGVmYXVsdFZhbHVlOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IHI9ZSxpPXQsYT1fKHIsYGNsYXNzYCksbz1uKGEsaSk7cmV0dXJuKGUsdCk9PihBKCksTShFKGRlKSxmKHsiZGF0YS1zbG90IjpgYWNjb3JkaW9uYH0sRShvKSx7Y2xhc3M6RSh5KShgZmxleCB3LWZ1bGwgZmxleC1jb2xgLHIuY2xhc3MpfSkse2RlZmF1bHQ6ZCh0PT5bayhlLiRzbG90cyxgZGVmYXVsdGAsVChsKHQpKSldKSxfOjN9LDE2LFtgY2xhc3NgXSkpfX0pLHllPUMoe19fbmFtZTpgQWNjb3JkaW9uQ29udGVudGAscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbn0sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPV8odCxgY2xhc3NgKTtyZXR1cm4oZSxyKT0+KEEoKSxNKEUobWUpLGYoeyJkYXRhLXNsb3QiOmBhY2NvcmRpb24tY29udGVudGB9LEUobikse2NsYXNzOmBkYXRhLW9wZW46YW5pbWF0ZS1hY2NvcmRpb24tZG93biBkYXRhLWNsb3NlZDphbmltYXRlLWFjY29yZGlvbi11cCB0ZXh0LXNtIG92ZXJmbG93LWhpZGRlbmB9KSx7ZGVmYXVsdDpkKCgpPT5bdyhgZGl2YCx7Y2xhc3M6SShFKHkpKGBwdC0wIHBiLTIuNSBbJl9hXTp1bmRlcmxpbmUgWyZfYV06dW5kZXJsaW5lLW9mZnNldC0zIFsmX2FdOmhvdmVyOnRleHQtZm9yZWdyb3VuZCBbJl9wOm5vdCg6bGFzdC1jaGlsZCldOm1iLTRgLHQuY2xhc3MpKX0sW2soZS4kc2xvdHMsYGRlZmF1bHRgKV0sMildKSxfOjN9LDE2KSl9fSksYmU9Qyh7X19uYW1lOmBBY2NvcmRpb25JdGVtYCxwcm9wczp7ZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sdmFsdWU6e30sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFufSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lLG49Xyh0LGBjbGFzc2ApLGk9cihuKTtyZXR1cm4oZSxuKT0+KEEoKSxNKEUocGUpLGYoeyJkYXRhLXNsb3QiOmBhY2NvcmRpb24taXRlbWB9LEUoaSkse2NsYXNzOkUoeSkoYG5vdC1sYXN0OmJvcmRlci1iYCx0LmNsYXNzKX0pLHtkZWZhdWx0OmQodD0+W2soZS4kc2xvdHMsYGRlZmF1bHRgLFQobCh0KSkpXSksXzozfSwxNixbYGNsYXNzYF0pKX19KSx4ZT1DKHtfX25hbWU6YEFjY29yZGlvblRyaWdnZXJgLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19LGhlYWRlckNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lLG49Xyh0LGBjbGFzc2AsYGhlYWRlckNsYXNzYCk7cmV0dXJuKGUscik9PntsZXQgaT1GKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gQSgpLE0oRShoZSkse2NsYXNzOkkoRSh5KShgZmxleGAsdC5oZWFkZXJDbGFzcykpfSx7ZGVmYXVsdDpkKCgpPT5bRChFKGdlKSxmKHsiZGF0YS1zbG90IjpgYWNjb3JkaW9uLXRyaWdnZXJgfSxFKG4pLHtjbGFzczpFKHkpKGBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOmJvcmRlci1yaW5nIGZvY3VzLXZpc2libGU6YWZ0ZXI6Ym9yZGVyLXJpbmcgKio6ZGF0YS1bc2xvdD1hY2NvcmRpb24tdHJpZ2dlci1pY29uXTp0ZXh0LW11dGVkLWZvcmVncm91bmQgcm91bmRlZC1sZyBweS0yLjUgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1tZWRpdW0gaG92ZXI6dW5kZXJsaW5lIGZvY3VzLXZpc2libGU6cmluZy0zICoqOmRhdGEtW3Nsb3Q9YWNjb3JkaW9uLXRyaWdnZXItaWNvbl06bWwtYXV0byAqKjpkYXRhLVtzbG90PWFjY29yZGlvbi10cmlnZ2VyLWljb25dOnNpemUtNCBncm91cC9hY2NvcmRpb24tdHJpZ2dlciByZWxhdGl2ZSBmbGV4IGZsZXgtMSBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCB0cmFuc2l0aW9uLWFsbCBvdXRsaW5lLW5vbmUgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwYCx0LmNsYXNzKX0pLHtkZWZhdWx0OmQoKCk9PltrKGUuJHNsb3RzLGBkZWZhdWx0YCksayhlLiRzbG90cyxgaWNvbmAse30sKCk9PltEKGkse2ljb246RSh4KSwiZGF0YS1zbG90IjpgYWNjb3JkaW9uLXRyaWdnZXItaWNvbmAsImFyaWEtaGlkZGVuIjpgdHJ1ZWAsY2xhc3M6YHBvaW50ZXItZXZlbnRzLW5vbmUgc2hyaW5rLTAgZ3JvdXAtYXJpYS1leHBhbmRlZC9hY2NvcmRpb24tdHJpZ2dlcjpoaWRkZW5gfSxudWxsLDgsW2BpY29uYF0pLEQoaSx7aWNvbjpFKG8pLCJkYXRhLXNsb3QiOmBhY2NvcmRpb24tdHJpZ2dlci1pY29uYCwiYXJpYS1oaWRkZW4iOmB0cnVlYCxjbGFzczpgcG9pbnRlci1ldmVudHMtbm9uZSBoaWRkZW4gc2hyaW5rLTAgZ3JvdXAtYXJpYS1leHBhbmRlZC9hY2NvcmRpb24tdHJpZ2dlcjppbmxpbmVgfSxudWxsLDgsW2BpY29uYF0pXSldKSxfOjN9LDE2LFtgY2xhc3NgXSldKSxfOjN9LDgsW2BjbGFzc2BdKX19fSk7ZnVuY3Rpb24gU2UoZSx0LG4pe2lmKCF0KXJldHVybiBuZXcgU2V0KGUubWFudWFsbHlFeHBhbmRlZCk7bGV0IHI9bmV3IFNldChlLm1hbnVhbGx5RXhwYW5kZWQpO2ZvcihsZXQgdCBvZiBuKWUubWFudWFsbHlDb2xsYXBzZWQuaGFzKHQpfHxyLmFkZCh0KTtyZXR1cm4gcn1mdW5jdGlvbiBDZShlLHQsbil7bj8oZS5tYW51YWxseUV4cGFuZGVkLmRlbGV0ZSh0KSxlLm1hbnVhbGx5Q29sbGFwc2VkLmFkZCh0KSk6KGUubWFudWFsbHlDb2xsYXBzZWQuZGVsZXRlKHQpLGUubWFudWFsbHlFeHBhbmRlZC5hZGQodCkpfWZ1bmN0aW9uIHdlKGUpe2UubWFudWFsbHlDb2xsYXBzZWQuY2xlYXIoKX1leHBvcnR7YmUgYXMgYSxfZSBhcyBjLHhlIGFzIGksU2UgYXMgbix5ZSBhcyBvLENlIGFzIHIsdmUgYXMgcyx3ZSBhcyB0fTs=",
|
|
),
|
|
},
|
|
"series-NIRVBXMP.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"ZnVuY3Rpb24gZShlKXtsZXQgdD0wO2ZvcihsZXQgbiBvZiBlKXQrPW47cmV0dXJuIHR9ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBuPD0wP1tdOlsuLi50XS5zb3J0KCh0LG4pPT5lKG4ucG9pbnRzKS1lKHQucG9pbnRzKSkuc2xpY2UoMCxuKX1mdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUubWFwKChlLG4pPT57bGV0IHI9MDtmb3IobGV0IGUgb2YgdClyKz1lLnBvaW50c1tuXT8/MDtyZXR1cm4gTWF0aC5tYXgoMCxlLXIpfSl9ZnVuY3Rpb24gcih0KXtsZXQgbj1uZXcgTWFwO2ZvcihsZXQgZSBvZiB0KXtsZXQgdD1lLnNjb3BlLnN0YXJ0c1dpdGgoYG1vZGVsOmApP2Uuc2NvcGUuc2xpY2UoNik6ZS5zY29wZSxyPXQuaW5kZXhPZihgL2ApLGk9cj09PS0xP3Q6dC5zbGljZSgwLHIpLGE9bi5nZXQoaSk/P0FycmF5KGUucG9pbnRzLmxlbmd0aCkuZmlsbCgwKTtmb3IobGV0IHQ9MDt0PGUucG9pbnRzLmxlbmd0aDt0KyspYVt0XT0oYVt0XT8/MCkrKGUucG9pbnRzW3RdPz8wKTtuLnNldChpLGEpfXJldHVybiBBcnJheS5mcm9tKG4uZW50cmllcygpKS5tYXAoKFtlLHRdKT0+KHtzY29wZTplLHBvaW50czp0fSkpLnNvcnQoKHQsbik9PmUobi5wb2ludHMpLWUodC5wb2ludHMpKX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIHQubWFwKCh0LG4pPT50PjA/KGVbbl0/PzApL3Q6bnVsbCl9ZXhwb3J0e3IgYXMgaSxpIGFzIG4sdCBhcyByLG4gYXMgdH07",
|
|
),
|
|
},
|
|
"tabs-YlhnHpK-.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e2EgYXMgZSxpIGFzIHQsbixyLHMgYXMgaSx0IGFzIGF9ZnJvbSIuL3VzZUlkLUI5ZEp1bW9JLmpzIjtpbXBvcnR7QXIgYXMgbyxEIGFzIHMsRG4gYXMgYyxGciBhcyBsLEcgYXMgdSxIbiBhcyBkLEh0IGFzIGYsSSBhcyBwLFVuIGFzIG0sViBhcyBoLFZ0IGFzIGcsVyBhcyBfLFhuIGFzIHYsX24gYXMgeSxiaSBhcyBiLGVyIGFzIHgsZ2kgYXMgUyxobiBhcyBDLGluIGFzIHcsbGkgYXMgVCxsciBhcyBFLG5yIGFzIEQsb2kgYXMgTyxvbiBhcyBrLHBpIGFzIEF9ZnJvbSIuL1NrZWxldG9uLUIwemlCNk9kLmpzIjtpbXBvcnR7ZiBhcyBqLGwgYXMgTX1mcm9tIi4vaW5kZXgtZHl3UzhPcFQuanMiO3ZhciBOPWByb3ZpbmdGb2N1c0dyb3VwLm9uRW50cnlGb2N1c2AsUD17YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfSxGPXtBcnJvd0xlZnQ6YHByZXZgLEFycm93VXA6YHByZXZgLEFycm93UmlnaHQ6YG5leHRgLEFycm93RG93bjpgbmV4dGAsUGFnZVVwOmBmaXJzdGAsSG9tZTpgZmlyc3RgLFBhZ2VEb3duOmBsYXN0YCxFbmQ6YGxhc3RgfTtmdW5jdGlvbiBJKGUsdCl7cmV0dXJuIHQ9PT1gcnRsYD9lPT09YEFycm93TGVmdGA/YEFycm93UmlnaHRgOmU9PT1gQXJyb3dSaWdodGA/YEFycm93TGVmdGA6ZTplfWZ1bmN0aW9uIEwoZSx0LG4pe2xldCByPUkoZS5rZXksbik7aWYoISh0PT09YHZlcnRpY2FsYCYmW2BBcnJvd0xlZnRgLGBBcnJvd1JpZ2h0YF0uaW5jbHVkZXMocikpJiYhKHQ9PT1gaG9yaXpvbnRhbGAmJltgQXJyb3dVcGAsYEFycm93RG93bmBdLmluY2x1ZGVzKHIpKSlyZXR1cm4gRltyXX1mdW5jdGlvbiBSKGUsdD0hMSl7bGV0IG49aigpO2ZvcihsZXQgciBvZiBlKWlmKHI9PT1ufHwoci5mb2N1cyh7cHJldmVudFNjcm9sbDp0fSksaigpIT09bikpcmV0dXJufWZ1bmN0aW9uIHooZSx0KXtyZXR1cm4gZS5tYXAoKG4scik9PmVbKHQrciklZS5sZW5ndGhdKX12YXJbQixWXT1pKGBSb3ZpbmdGb2N1c0dyb3VwYCksSD15KHtfX25hbWU6YFJvdmluZ0ZvY3VzR3JvdXBgLHByb3BzOntvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjdXJyZW50VGFiU3RvcElkOnt0eXBlOltTdHJpbmcsbnVsbF0scmVxdWlyZWQ6ITF9LGRlZmF1bHRDdXJyZW50VGFiU3RvcElkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJldmVudFNjcm9sbE9uRW50cnlGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOltgZW50cnlGb2N1c2AsYHVwZGF0ZTpjdXJyZW50VGFiU3RvcElkYF0sc2V0dXAodCx7ZXhwb3NlOm4sZW1pdDpyfSl7bGV0IGk9dCxhPXIse2xvb3A6byxvcmllbnRhdGlvbjpjLGRpcjp1fT1BKGkpLGQ9ZSh1KSxmPXAoaSxgY3VycmVudFRhYlN0b3BJZGAsYSx7ZGVmYXVsdFZhbHVlOmkuZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQscGFzc2l2ZTppLmN1cnJlbnRUYWJTdG9wSWQ9PT12b2lkIDB9KSxtPU8oITEpLGg9TyghMSksZz1PKDApLHtnZXRJdGVtczpfLENvbGxlY3Rpb25TbG90OnZ9PU0oe2lzUHJvdmlkZXI6ITB9KTtmdW5jdGlvbiB5KGUpe2xldCB0PSFoLnZhbHVlO2lmKGUuY3VycmVudFRhcmdldCYmZS50YXJnZXQ9PT1lLmN1cnJlbnRUYXJnZXQmJnQmJiFtLnZhbHVlKXtsZXQgdD1uZXcgQ3VzdG9tRXZlbnQoTixQKTtpZihlLmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudCh0KSxhKGBlbnRyeUZvY3VzYCx0KSwhdC5kZWZhdWx0UHJldmVudGVkKXtsZXQgZT1fKCkubWFwKGU9PmUucmVmKS5maWx0ZXIoZT0+ZS5kYXRhc2V0LmRpc2FibGVkIT09YGApO1IoW2UuZmluZChlPT5lLmdldEF0dHJpYnV0ZShgZGF0YS1hY3RpdmVgKT09PWBgKSxlLmZpbmQoZT0+ZS5nZXRBdHRyaWJ1dGUoYGRhdGEtaGlnaGxpZ2h0ZWRgKT09PWBgKSxlLmZpbmQoZT0+ZS5pZD09PWYudmFsdWUpLC4uLmVdLmZpbHRlcihCb29sZWFuKSxpLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpfX1oLnZhbHVlPSExfWZ1bmN0aW9uIGIoKXtzZXRUaW1lb3V0KCgpPT57aC52YWx1ZT0hMX0sMSl9cmV0dXJuIG4oe2dldEl0ZW1zOl99KSxWKHtsb29wOm8sZGlyOmQsb3JpZW50YXRpb246YyxjdXJyZW50VGFiU3RvcElkOmYsb25JdGVtRm9jdXM6ZT0+e2YudmFsdWU9ZX0sb25JdGVtU2hpZnRUYWI6KCk9PnttLnZhbHVlPSEwfSxvbkZvY3VzYWJsZUl0ZW1BZGQ6KCk9PntnLnZhbHVlKyt9LG9uRm9jdXNhYmxlSXRlbVJlbW92ZTooKT0+e2cudmFsdWUtLX19KSwoZSx0KT0+KEQoKSxrKFModiksbnVsbCx7ZGVmYXVsdDpsKCgpPT5bQyhTKHMpLHt0YWJpbmRleDptLnZhbHVlfHxnLnZhbHVlPT09MD8tMTowLCJkYXRhLW9yaWVudGF0aW9uIjpTKGMpLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsZGlyOlMoZCksc3R5bGU6e291dGxpbmU6YG5vbmVgfSxvbk1vdXNlZG93bjp0WzBdfHw9ZT0+aC52YWx1ZT0hMCxvbk1vdXNldXA6YixvbkZvY3VzOnksb25CbHVyOnRbMV18fD1lPT5tLnZhbHVlPSExfSx7ZGVmYXVsdDpsKCgpPT5bRShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgdGFiaW5kZXhgLGBkYXRhLW9yaWVudGF0aW9uYCxgYXNgLGBhcy1jaGlsZGAsYGRpcmBdKV0pLF86M30pKX19KSxVPXkoe19fbmFtZTpgUm92aW5nRm9jdXNJdGVtYCxwcm9wczp7dGFiU3RvcElkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZm9jdXNhYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsbG93U2hpZnRLZXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YHNwYW5gfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPUIoKSxyPWEoKSxpPXcoKCk9PnQudGFiU3RvcElkfHxyKSxjPXcoKCk9Pm4uY3VycmVudFRhYlN0b3BJZC52YWx1ZT09PWkudmFsdWUpLHtnZXRJdGVtczp1LENvbGxlY3Rpb25JdGVtOmR9PU0oKTt2KCgpPT57dC5mb2N1c2FibGUmJm4ub25Gb2N1c2FibGVJdGVtQWRkKCl9KSx4KCgpPT57dC5mb2N1c2FibGUmJm4ub25Gb2N1c2FibGVJdGVtUmVtb3ZlKCl9KSxvKCgpPT50LmZvY3VzYWJsZSwoZSx0KT0+e2UhPT10JiYoZT9uLm9uRm9jdXNhYmxlSXRlbUFkZCgpOm4ub25Gb2N1c2FibGVJdGVtUmVtb3ZlKCkpfSk7ZnVuY3Rpb24gZihlKXtpZihlLmtleT09PWBUYWJgJiZlLnNoaWZ0S2V5KXtuLm9uSXRlbVNoaWZ0VGFiKCk7cmV0dXJufWlmKGUudGFyZ2V0IT09ZS5jdXJyZW50VGFyZ2V0KXJldHVybjtsZXQgcj1MKGUsbi5vcmllbnRhdGlvbi52YWx1ZSxuLmRpci52YWx1ZSk7aWYociE9PXZvaWQgMCl7aWYoZS5tZXRhS2V5fHxlLmN0cmxLZXl8fGUuYWx0S2V5fHwhdC5hbGxvd1NoaWZ0S2V5JiZlLnNoaWZ0S2V5KXJldHVybjtlLnByZXZlbnREZWZhdWx0KCk7bGV0IGk9Wy4uLnUoKS5tYXAoZT0+ZS5yZWYpLmZpbHRlcihlPT5lLmRhdGFzZXQuZGlzYWJsZWQhPT1gYCldO2lmKHI9PT1gbGFzdGApaS5yZXZlcnNlKCk7ZWxzZSBpZihyPT09YHByZXZgfHxyPT09YG5leHRgKXtyPT09YHByZXZgJiZpLnJldmVyc2UoKTtsZXQgdD1pLmluZGV4T2YoZS5jdXJyZW50VGFyZ2V0KTtpPW4ubG9vcC52YWx1ZT96KGksdCsxKTppLnNsaWNlKHQrMSl9bSgoKT0+UihpKSl9fXJldHVybihlLHQpPT4oRCgpLGsoUyhkKSxudWxsLHtkZWZhdWx0OmwoKCk9PltDKFMocykse3RhYmluZGV4OmMudmFsdWU/MDotMSwiZGF0YS1vcmllbnRhdGlvbiI6UyhuKS5vcmllbnRhdGlvbi52YWx1ZSwiZGF0YS1hY3RpdmUiOmUuYWN0aXZlP2BgOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6ZS5mb2N1c2FibGU/dm9pZCAwOmBgLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsb25Nb3VzZWRvd246dFswXXx8PXQ9PntlLmZvY3VzYWJsZT9TKG4pLm9uSXRlbUZvY3VzKGkudmFsdWUpOnQucHJldmVudERlZmF1bHQoKX0sb25Gb2N1czp0WzFdfHw9ZT0+UyhuKS5vbkl0ZW1Gb2N1cyhpLnZhbHVlKSxvbktleWRvd246Zn0se2RlZmF1bHQ6bCgoKT0+W0UoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYHRhYmluZGV4YCxgZGF0YS1vcmllbnRhdGlvbmAsYGRhdGEtYWN0aXZlYCxgZGF0YS1kaXNhYmxlZGAsYGFzYCxgYXMtY2hpbGRgXSldKSxfOjN9KSl9fSksW1csR109aShgVGFic1Jvb3RgKSxLPXkoe19fbmFtZTpgVGFic1Jvb3RgLHByb3BzOntkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGhvcml6b250YWxgfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhY3RpdmF0aW9uTW9kZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDpgYXV0b21hdGljYH0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWBdLHNldHVwKG4se2VtaXQ6cn0pe2xldCBpPW4sbz1yLHtvcmllbnRhdGlvbjpjLHVubW91bnRPbkhpZGU6dSxkaXI6ZH09QShpKSxmPWUoZCk7dCgpO2xldCBtPXAoaSxgbW9kZWxWYWx1ZWAsbyx7ZGVmYXVsdFZhbHVlOmkuZGVmYXVsdFZhbHVlLHBhc3NpdmU6aS5tb2RlbFZhbHVlPT09dm9pZCAwfSksaD1PKCksZz1UKG5ldyBTZXQpO3JldHVybiBHKHttb2RlbFZhbHVlOm0sY2hhbmdlTW9kZWxWYWx1ZTplPT57bS52YWx1ZT1lfSxvcmllbnRhdGlvbjpjLGRpcjpmLHVubW91bnRPbkhpZGU6dSxhY3RpdmF0aW9uTW9kZTppLmFjdGl2YXRpb25Nb2RlLGJhc2VJZDphKHZvaWQgMCxgcmVrYS10YWJzYCksdGFic0xpc3Q6aCxjb250ZW50SWRzOmcscmVnaXN0ZXJDb250ZW50OmU9PntnLnZhbHVlPW5ldyBTZXQoWy4uLmcudmFsdWUsZV0pfSx1bnJlZ2lzdGVyQ29udGVudDplPT57bGV0IHQ9bmV3IFNldChnLnZhbHVlKTt0LmRlbGV0ZShlKSxnLnZhbHVlPXR9fSksKGUsdCk9PihEKCksayhTKHMpLHtkaXI6UyhmKSwiZGF0YS1vcmllbnRhdGlvbiI6UyhjKSwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzfSx7ZGVmYXVsdDpsKCgpPT5bRShlLiRzbG90cyxgZGVmYXVsdGAse21vZGVsVmFsdWU6UyhtKX0pXSksXzozfSw4LFtgZGlyYCxgZGF0YS1vcmllbnRhdGlvbmAsYGFzLWNoaWxkYCxgYXNgXSkpfX0pO2Z1bmN0aW9uIHEoZSx0KXtyZXR1cm5gJHtlfS10cmlnZ2VyLSR7dH1gfWZ1bmN0aW9uIEooZSx0KXtyZXR1cm5gJHtlfS1jb250ZW50LSR7dH1gfXZhciBZPXkoe19fbmFtZTpgVGFic0xpc3RgLHByb3BzOntsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0e2xvb3A6bn09QShlKSx7Zm9yd2FyZFJlZjpyLGN1cnJlbnRFbGVtZW50Oml9PXQoKSxhPVcoKTtyZXR1cm4gYS50YWJzTGlzdD1pLChlLHQpPT4oRCgpLGsoUyhIKSx7ImFzLWNoaWxkIjpgYCxvcmllbnRhdGlvbjpTKGEpLm9yaWVudGF0aW9uLnZhbHVlLGRpcjpTKGEpLmRpci52YWx1ZSxsb29wOlMobil9LHtkZWZhdWx0OmwoKCk9PltDKFMocykse3JlZjpTKHIpLHJvbGU6YHRhYmxpc3RgLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLGFzOmUuYXMsImFyaWEtb3JpZW50YXRpb24iOlMoYSkub3JpZW50YXRpb24udmFsdWV9LHtkZWZhdWx0OmwoKCk9PltFKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhcy1jaGlsZGAsYGFzYCxgYXJpYS1vcmllbnRhdGlvbmBdKV0pLF86M30sOCxbYG9yaWVudGF0aW9uYCxgZGlyYCxgbG9vcGBdKSl9fSksWD15KHtfX25hbWU6YFRhYnNUcmlnZ2VyYCxwcm9wczp7dmFsdWU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBidXR0b25gfX0sc2V0dXAoZSl7bGV0IG49ZSx7Zm9yd2FyZFJlZjpyfT10KCksaT1XKCksYT13KCgpPT5xKGkuYmFzZUlkLG4udmFsdWUpKSxvPXcoKCk9PmkuY29udGVudElkcy52YWx1ZS5oYXMobi52YWx1ZSk/SihpLmJhc2VJZCxuLnZhbHVlKTp2b2lkIDApLGM9dygoKT0+bi52YWx1ZT09PWkubW9kZWxWYWx1ZS52YWx1ZSk7cmV0dXJuKGUsdCk9PihEKCksayhTKFUpLHsiYXMtY2hpbGQiOmBgLGZvY3VzYWJsZTohZS5kaXNhYmxlZCxhY3RpdmU6Yy52YWx1ZX0se2RlZmF1bHQ6bCgoKT0+W0MoUyhzKSx7aWQ6YS52YWx1ZSxyZWY6UyhyKSxyb2xlOmB0YWJgLHR5cGU6ZS5hcz09PWBidXR0b25gP2BidXR0b25gOnZvaWQgMCxhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLCJhcmlhLXNlbGVjdGVkIjpjLnZhbHVlP2B0cnVlYDpgZmFsc2VgLCJhcmlhLWNvbnRyb2xzIjpvLnZhbHVlLCJkYXRhLXN0YXRlIjpjLnZhbHVlP2BhY3RpdmVgOmBpbmFjdGl2ZWAsZGlzYWJsZWQ6ZS5kaXNhYmxlZCwiZGF0YS1kaXNhYmxlZCI6ZS5kaXNhYmxlZD9gYDp2b2lkIDAsImRhdGEtb3JpZW50YXRpb24iOlMoaSkub3JpZW50YXRpb24udmFsdWUsb25Nb3VzZWRvd246dFswXXx8PWYodD0+eyFlLmRpc2FibGVkJiZ0LmN0cmxLZXk9PT0hMT9TKGkpLmNoYW5nZU1vZGVsVmFsdWUoZS52YWx1ZSk6dC5wcmV2ZW50RGVmYXVsdCgpfSxbYGxlZnRgXSksb25LZXlkb3duOnRbMV18fD1nKHQ9PlMoaSkuY2hhbmdlTW9kZWxWYWx1ZShlLnZhbHVlKSxbYGVudGVyYCxgc3BhY2VgXSksb25Gb2N1czp0WzJdfHw9KCk9PntsZXQgdD1TKGkpLmFjdGl2YXRpb25Nb2RlIT09YG1hbnVhbGA7IWMudmFsdWUmJiFlLmRpc2FibGVkJiZ0JiZTKGkpLmNoYW5nZU1vZGVsVmFsdWUoZS52YWx1ZSl9fSx7ZGVmYXVsdDpsKCgpPT5bRShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgaWRgLGB0eXBlYCxgYXNgLGBhcy1jaGlsZGAsYGFyaWEtc2VsZWN0ZWRgLGBhcmlhLWNvbnRyb2xzYCxgZGF0YS1zdGF0ZWAsYGRpc2FibGVkYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtb3JpZW50YXRpb25gXSldKSxfOjN9LDgsW2Bmb2N1c2FibGVgLGBhY3RpdmVgXSkpfX0pLFo9eSh7X19uYW1lOmBUYWJzYCxwcm9wczp7ZGVmYXVsdFZhbHVlOnt9LG9yaWVudGF0aW9uOnt9LGRpcjp7fSxhY3RpdmF0aW9uTW9kZTp7fSxtb2RlbFZhbHVlOnt9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbn0sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCByPWUsaT10LGE9aChyLGBjbGFzc2ApLG89bihhLGkpO3JldHVybihlLHQpPT4oRCgpLGsoUyhLKSxkKHsiZGF0YS1zbG90IjpgdGFic2AsImRhdGEtb3JpZW50YXRpb24iOlMobykub3JpZW50YXRpb258fGBob3Jpem9udGFsYH0sUyhvKSx7Y2xhc3M6UyhfKShgZ2FwLTIgZ3JvdXAvdGFicyBmbGV4IGRhdGEtaG9yaXpvbnRhbDpmbGV4LWNvbGAsci5jbGFzcyl9KSx7ZGVmYXVsdDpsKHQ9PltFKGUuJHNsb3RzLGBkZWZhdWx0YCxiKGModCkpKV0pLF86M30sMTYsW2BkYXRhLW9yaWVudGF0aW9uYCxgY2xhc3NgXSkpfX0pLFE9eSh7X19uYW1lOmBUYWJzTGlzdGAscHJvcHM6e2xvb3A6e3R5cGU6Qm9vbGVhbn0sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSx2YXJpYW50OntkZWZhdWx0OmBkZWZhdWx0YH19LHNldHVwKGUpe2xldCB0PWUsbj1oKHQsYGNsYXNzYCxgdmFyaWFudGApO3JldHVybihyLGkpPT4oRCgpLGsoUyhZKSxkKHsiZGF0YS1zbG90IjpgdGFicy1saXN0YCwiZGF0YS12YXJpYW50IjplLnZhcmlhbnR9LFMobikse2NsYXNzOlMoXykoUyhlZSkoe3ZhcmlhbnQ6ZS52YXJpYW50fSksdC5jbGFzcyl9KSx7ZGVmYXVsdDpsKCgpPT5bRShyLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGRhdGEtdmFyaWFudGAsYGNsYXNzYF0pKX19KSwkPXkoe19fbmFtZTpgVGFic1RyaWdnZXJgLHByb3BzOnt2YWx1ZTp7fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFufSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lLG49aCh0LGBjbGFzc2ApLGk9cihuKTtyZXR1cm4oZSxuKT0+KEQoKSxrKFMoWCksZCh7ImRhdGEtc2xvdCI6YHRhYnMtdHJpZ2dlcmAsY2xhc3M6UyhfKShgZ2FwLTEuNSByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgcHgtMS41IHB5LTAuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIGdyb3VwLWRhdGEtW3ZhcmlhbnQ9ZGVmYXVsdF0vdGFicy1saXN0OmRhdGEtYWN0aXZlOnNoYWRvdy1zbSBncm91cC1kYXRhLVt2YXJpYW50PWxpbmVdL3RhYnMtbGlzdDpkYXRhLWFjdGl2ZTpzaGFkb3ctbm9uZSBbJl9zdmc6bm90KFtjbGFzcyo9c2l6ZS1dKV06c2l6ZS00IGhhcy1kYXRhLVtpY29uPWlubGluZS1lbmRdOnByLTEgaGFzLWRhdGEtW2ljb249aW5saW5lLXN0YXJ0XTpwbC0xIHJlbGF0aXZlIGlubGluZS1mbGV4IGgtW2NhbGMoMTAwJS0xcHgpXSBmbGV4LTEgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtZm9yZWdyb3VuZC82MCB0cmFuc2l0aW9uLWFsbCBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczpmbGV4LW5vbmUgZ3JvdXAtZGF0YS12ZXJ0aWNhbC90YWJzOnctZnVsbCBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6anVzdGlmeS1zdGFydCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctMyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMSBmb2N1cy12aXNpYmxlOm91dGxpbmUtcmluZyBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazp0ZXh0LW11dGVkLWZvcmVncm91bmQgZGFyazpob3Zlcjp0ZXh0LWZvcmVncm91bmQgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBgLGBncm91cC1kYXRhLVt2YXJpYW50PWxpbmVdL3RhYnMtbGlzdDpiZy10cmFuc3BhcmVudCBncm91cC1kYXRhLVt2YXJpYW50PWxpbmVdL3RhYnMtbGlzdDpkYXRhLWFjdGl2ZTpiZy10cmFuc3BhcmVudCBkYXJrOmdyb3VwLWRhdGEtW3ZhcmlhbnQ9bGluZV0vdGFicy1saXN0OmRhdGEtYWN0aXZlOmJvcmRlci10cmFuc3BhcmVudCBkYXJrOmdyb3VwLWRhdGEtW3ZhcmlhbnQ9bGluZV0vdGFicy1saXN0OmRhdGEtYWN0aXZlOmJnLXRyYW5zcGFyZW50YCxgZGF0YS1hY3RpdmU6YmctYmFja2dyb3VuZCBkYXRhLWFjdGl2ZTp0ZXh0LWZvcmVncm91bmQgZGFyazpkYXRhLWFjdGl2ZTpib3JkZXItaW5wdXQgZGFyazpkYXRhLWFjdGl2ZTpiZy1pbnB1dC8zMCBkYXJrOmRhdGEtYWN0aXZlOnRleHQtZm9yZWdyb3VuZGAsYGFmdGVyOmFic29sdXRlIGFmdGVyOmJnLWZvcmVncm91bmQgYWZ0ZXI6b3BhY2l0eS0wIGFmdGVyOnRyYW5zaXRpb24tb3BhY2l0eSBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczphZnRlcjppbnNldC14LTAgZ3JvdXAtZGF0YS1ob3Jpem9udGFsL3RhYnM6YWZ0ZXI6Ym90dG9tLVstNXB4XSBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczphZnRlcjpoLTAuNSBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6YWZ0ZXI6aW5zZXQteS0wIGdyb3VwLWRhdGEtdmVydGljYWwvdGFiczphZnRlcjotcmlnaHQtMSBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6YWZ0ZXI6dy0wLjUgZ3JvdXAtZGF0YS1bdmFyaWFudD1saW5lXS90YWJzLWxpc3Q6ZGF0YS1hY3RpdmU6YWZ0ZXI6b3BhY2l0eS0xMDBgLHQuY2xhc3MpfSxTKGkpKSx7ZGVmYXVsdDpsKCgpPT5bRShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGNsYXNzYF0pKX19KSxlZT11KGByb3VuZGVkLWxnIHAtMC43NSBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczpoLTggZ3JvdXAtZGF0YS1ob3Jpem9udGFsL3RhYnM6bWF4LXctZnVsbCBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczpqdXN0aWZ5LXN0YXJ0IGdyb3VwLWRhdGEtaG9yaXpvbnRhbC90YWJzOm92ZXJmbG93LXgtYXV0byBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczpvdmVyZmxvdy15LWhpZGRlbiBkYXRhLVt2YXJpYW50PWxpbmVdOnJvdW5kZWQtbm9uZSBncm91cC90YWJzLWxpc3QgaW5saW5lLWZsZXggdy1maXQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6aC1maXQgZ3JvdXAtZGF0YS12ZXJ0aWNhbC90YWJzOmZsZXgtY29sYCx7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6YGJnLW11dGVkYCxsaW5lOmBnYXAtMSBiZy10cmFuc3BhcmVudGB9fSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6YGRlZmF1bHRgfX0pO2V4cG9ydHtRIGFzIG4sWiBhcyByLCQgYXMgdH07",
|
|
),
|
|
},
|
|
"useId-B9dJumoI.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0eyRuIGFzIGUsJHIgYXMgdCwkdCBhcyBuLEFuIGFzIHIsQXIgYXMgaSxBdCBhcyBhLEJuIGFzIG8sQnIgYXMgZWUsQnQgYXMgcyxDaSBhcyBjLENuIGFzIHRlLENyIGFzIG5lLEN0IGFzIHJlLERuIGFzIGllLERyIGFzIGFlLER0IGFzIG9lLEVuIGFzIHNlLEVyIGFzIGNlLEV0IGFzIGxlLEZuIGFzIHVlLEZyIGFzIGRlLEZ0IGFzIGZlLEduIGFzIHBlLEdyIGFzIG1lLEd0IGFzIGwsSG4gYXMgdSxIciBhcyBkLEh0IGFzIGYsSW4gYXMgcCxJciBhcyBtLEl0IGFzIGgsSm4gYXMgZyxKciBhcyBfLEp0IGFzIHYsS24gYXMgeSxLciBhcyBiLEt0IGFzIHgsTG4gYXMgUyxMciBhcyBDLEx0IGFzIHcsTSBhcyBULE1uIGFzIEUsTXIgYXMgRCxNdCBhcyBPLE5uIGFzIGssTnIgYXMgQSxOdCBhcyBqLE9uIGFzIE0sT3IgYXMgTixPdCBhcyBQLFBuIGFzIEYsUHIgYXMgSSxQdCBhcyBMLFFuIGFzIFIsUXIgYXMgeixRdCBhcyBoZSxSbiBhcyBnZSxSciBhcyBfZSxSdCBhcyB2ZSxTaSBhcyB5ZSxTbiBhcyBiZSxTciBhcyBCLFN0IGFzIHhlLFRuIGFzIFYsVHIgYXMgU2UsVHQgYXMgQ2UsVW4gYXMgd2UsVXIgYXMgVGUsVXQgYXMgRWUsVm4gYXMgRGUsVnIgYXMgT2UsVnQgYXMga2UsV24gYXMgQWUsV3IgYXMgamUsV3QgYXMgTWUsWG4gYXMgTmUsWHIgYXMgUGUsWHQgYXMgRmUsWW4gYXMgSWUsWXIgYXMgTGUsWXQgYXMgUmUsWm4gYXMgemUsWnIgYXMgQmUsWnQgYXMgVmUsX2kgYXMgSCxfbiBhcyBIZSxfciBhcyBVZSxhaSBhcyBXZSxhbiBhcyBHZSxhciBhcyBLZSxiaSBhcyBxZSxibiBhcyBKZSxiciBhcyBZZSxidCBhcyBYZSxjaSBhcyBaZSxjbiBhcyBRZSxjciBhcyBVLGRpIGFzICRlLGRuIGFzIGV0LGRyIGFzIHR0LGVpIGFzIG50LGVuIGFzIHJ0LGVyIGFzIGl0LGZpIGFzIFcsZm4gYXMgYXQsZnIgYXMgb3QsZ2kgYXMgc3QsZ24gYXMgY3QsZ3IgYXMgbHQsaGkgYXMgRyxobiBhcyB1dCxociBhcyBkdCxpaSBhcyBmdCxpbiBhcyBLLGlyIGFzIHEsam4gYXMgcHQsanIgYXMgbXQsanQgYXMgaHQsa24gYXMgZ3Qsa3IgYXMgX3Qsa3QgYXMgdnQsbGkgYXMgeXQsbG4gYXMgYnQsbHIgYXMgeHQsbWkgYXMgU3QsbW4gYXMgQ3QsbXIgYXMgd3QsbmkgYXMgVHQsbm4gYXMgRXQsbnIgYXMgRHQsb2kgYXMgSixvbiBhcyBPdCxvciBhcyBrdCxwaSBhcyBBdCxwbiBhcyBqdCxwciBhcyBNdCxxbiBhcyBOdCxxciBhcyBQdCxxdCBhcyBGdCxyaSBhcyBJdCxybiBhcyBMdCxyciBhcyBSdCxzaSBhcyB6dCxzbiBhcyBCdCxzciBhcyBWdCx0aSBhcyBIdCx0biBhcyBVdCx0ciBhcyBZLHVpIGFzIFd0LHVuIGFzIEd0LHVyIGFzIEt0LHZpIGFzIHF0LHZuIGFzIEp0LHZyIGFzIFl0LHduIGFzIFh0LHdyIGFzIFp0LHd0IGFzIFF0LHhpIGFzICR0LHhuIGFzIGVuLHhyIGFzIHRuLHh0IGFzIG5uLHlpIGFzIHJuLHluIGFzIGFuLHlyIGFzIG9uLHl0IGFzIHNuLHpuIGFzIGNuLHpyIGFzIGxuLHp0IGFzIHVufWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7dmFyIFg9T2JqZWN0LmRlZmluZVByb3BlcnR5LGRuPSgoZSx0KT0+e2xldCBuPXt9O2Zvcih2YXIgciBpbiBlKVgobixyLHtnZXQ6ZVtyXSxlbnVtZXJhYmxlOiEwfSk7cmV0dXJuIHR8fFgobixTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOmBNb2R1bGVgfSksbn0pKHtCYXNlVHJhbnNpdGlvbjooKT0+RWUsQmFzZVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnM6KCk9Pk1lLENvbW1lbnQ6KCk9PmwsRGVwcmVjYXRpb25UeXBlczooKT0+bnVsbCxFZmZlY3RTY29wZTooKT0+ZWUsRXJyb3JDb2RlczooKT0+eCxFcnJvclR5cGVTdHJpbmdzOigpPT5GdCxGcmFnbWVudDooKT0+dixLZWVwQWxpdmU6KCk9PlJlLFJlYWN0aXZlRWZmZWN0OigpPT5PZSxTdGF0aWM6KCk9PkZlLFN1c3BlbnNlOigpPT5WZSxUZWxlcG9ydDooKT0+aGUsVGV4dDooKT0+bixUcmFja09wVHlwZXM6KCk9PmQsVHJhbnNpdGlvbjooKT0+c24sVHJhbnNpdGlvbkdyb3VwOigpPT5YZSxUcmlnZ2VyT3BUeXBlczooKT0+VGUsVnVlRWxlbWVudDooKT0+bm4sYXNzZXJ0TnVtYmVyOigpPT5ydCxjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZzooKT0+VXQsY2FsbFdpdGhFcnJvckhhbmRsaW5nOigpPT5FdCxjYW1lbGl6ZTooKT0+SCxjYXBpdGFsaXplOigpPT5xdCxjbG9uZVZOb2RlOigpPT5MdCxjb21wYXRVdGlsczooKT0+bnVsbCxjb21waWxlOigpPT5mbixjb21wdXRlZDooKT0+SyxjcmVhdGVBcHA6KCk9PnhlLGNyZWF0ZUJsb2NrOigpPT5PdCxjcmVhdGVDb21tZW50Vk5vZGU6KCk9PkJ0LGNyZWF0ZUVsZW1lbnRCbG9jazooKT0+UWUsY3JlYXRlRWxlbWVudFZOb2RlOigpPT5HZSxjcmVhdGVIeWRyYXRpb25SZW5kZXJlcjooKT0+YnQsY3JlYXRlUHJvcHNSZXN0UHJveHk6KCk9Pkd0LGNyZWF0ZVJlbmRlcmVyOigpPT5ldCxjcmVhdGVTU1JBcHA6KCk9PnJlLGNyZWF0ZVNsb3RzOigpPT5hdCxjcmVhdGVTdGF0aWNWTm9kZTooKT0+anQsY3JlYXRlVGV4dFZOb2RlOigpPT5DdCxjcmVhdGVWTm9kZTooKT0+dXQsY3VzdG9tUmVmOigpPT5qZSxkZWZpbmVBc3luY0NvbXBvbmVudDooKT0+Y3QsZGVmaW5lQ29tcG9uZW50OigpPT5IZSxkZWZpbmVDdXN0b21FbGVtZW50OigpPT5RdCxkZWZpbmVFbWl0czooKT0+SnQsZGVmaW5lRXhwb3NlOigpPT5hbixkZWZpbmVNb2RlbDooKT0+SmUsZGVmaW5lT3B0aW9uczooKT0+ZW4sZGVmaW5lUHJvcHM6KCk9PmJlLGRlZmluZVNTUkN1c3RvbUVsZW1lbnQ6KCk9PkNlLGRlZmluZVNsb3RzOigpPT50ZSxkZXZ0b29sczooKT0+WHQsZWZmZWN0OigpPT5tZSxlZmZlY3RTY29wZTooKT0+YixnZXRDdXJyZW50SW5zdGFuY2U6KCk9PlYsZ2V0Q3VycmVudFNjb3BlOigpPT5QdCxnZXRDdXJyZW50V2F0Y2hlcjooKT0+XyxnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW46KCk9PnNlLGd1YXJkUmVhY3RpdmVQcm9wczooKT0+aWUsaDooKT0+TSxoYW5kbGVFcnJvcjooKT0+Z3QsaGFzSW5qZWN0aW9uQ29udGV4dDooKT0+cixoeWRyYXRlOigpPT5sZSxoeWRyYXRlT25JZGxlOigpPT5wdCxoeWRyYXRlT25JbnRlcmFjdGlvbjooKT0+RSxoeWRyYXRlT25NZWRpYVF1ZXJ5OigpPT5rLGh5ZHJhdGVPblZpc2libGU6KCk9PkYsaW5pdEN1c3RvbUZvcm1hdHRlcjooKT0+dWUsaW5pdERpcmVjdGl2ZXNGb3JTU1I6KCk9Pm9lLGluamVjdDooKT0+cCxpc01lbW9TYW1lOigpPT5TLGlzUHJveHk6KCk9PkxlLGlzUmVhY3RpdmU6KCk9PlBlLGlzUmVhZG9ubHk6KCk9PkJlLGlzUmVmOigpPT56LGlzUnVudGltZU9ubHk6KCk9PmdlLGlzU2hhbGxvdzooKT0+dCxpc1ZOb2RlOigpPT5jbixtYXJrUmF3OigpPT5udCxtZXJnZURlZmF1bHRzOigpPT5vLG1lcmdlTW9kZWxzOigpPT5EZSxtZXJnZVByb3BzOigpPT51LG5leHRUaWNrOigpPT53ZSxub2RlT3BzOigpPT5QLG5vcm1hbGl6ZUNsYXNzOigpPT5ybixub3JtYWxpemVQcm9wczooKT0+cWUsbm9ybWFsaXplU3R5bGU6KCk9PiR0LG9uQWN0aXZhdGVkOigpPT5BZSxvbkJlZm9yZU1vdW50OigpPT5wZSxvbkJlZm9yZVVubW91bnQ6KCk9Pnksb25CZWZvcmVVcGRhdGU6KCk9Pk50LG9uRGVhY3RpdmF0ZWQ6KCk9Pmcsb25FcnJvckNhcHR1cmVkOigpPT5JZSxvbk1vdW50ZWQ6KCk9Pk5lLG9uUmVuZGVyVHJhY2tlZDooKT0+emUsb25SZW5kZXJUcmlnZ2VyZWQ6KCk9PlIsb25TY29wZURpc3Bvc2U6KCk9Pkh0LG9uU2VydmVyUHJlZmV0Y2g6KCk9PmUsb25Vbm1vdW50ZWQ6KCk9Pml0LG9uVXBkYXRlZDooKT0+WSxvbldhdGNoZXJDbGVhbnVwOigpPT5UdCxvcGVuQmxvY2s6KCk9PkR0LHBhdGNoUHJvcDooKT0+dnQscG9wU2NvcGVJZDooKT0+UnQscHJvdmlkZTooKT0+cSxwcm94eVJlZnM6KCk9Pkl0LHB1c2hTY29wZUlkOigpPT5LZSxxdWV1ZVBvc3RGbHVzaENiOigpPT5rdCxyZWFjdGl2ZTooKT0+ZnQscmVhZG9ubHk6KCk9PldlLHJlZjooKT0+SixyZWdpc3RlclJ1bnRpbWVDb21waWxlcjooKT0+VnQscmVuZGVyOigpPT5hLHJlbmRlckxpc3Q6KCk9PlUscmVuZGVyU2xvdDooKT0+eHQscmVzb2x2ZUNvbXBvbmVudDooKT0+S3QscmVzb2x2ZURpcmVjdGl2ZTooKT0+dHQscmVzb2x2ZUR5bmFtaWNDb21wb25lbnQ6KCk9Pm90LHJlc29sdmVGaWx0ZXI6KCk9Pm51bGwscmVzb2x2ZVRyYW5zaXRpb25Ib29rczooKT0+TXQsc2V0QmxvY2tUcmFja2luZzooKT0+d3Qsc2V0RGV2dG9vbHNIb29rOigpPT5kdCxzZXRUcmFuc2l0aW9uSG9va3M6KCk9Pmx0LHNoYWxsb3dSZWFjdGl2ZTooKT0+enQsc2hhbGxvd1JlYWRvbmx5OigpPT5aZSxzaGFsbG93UmVmOigpPT55dCxzc3JDb250ZXh0S2V5OigpPT5VZSxzc3JVdGlsczooKT0+WXQsc3RvcDooKT0+V3QsdG9EaXNwbGF5U3RyaW5nOigpPT55ZSx0b0hhbmRsZXJLZXk6KCk9PmMsdG9IYW5kbGVyczooKT0+b24sdG9SYXc6KCk9PiRlLHRvUmVmOigpPT5XLHRvUmVmczooKT0+QXQsdG9WYWx1ZTooKT0+U3QsdHJhbnNmb3JtVk5vZGVBcmdzOigpPT5ZZSx0cmlnZ2VyUmVmOigpPT5HLHVucmVmOigpPT5zdCx1c2VBdHRyczooKT0+dG4sdXNlQ3NzTW9kdWxlOigpPT5odCx1c2VDc3NWYXJzOigpPT5PLHVzZUhvc3Q6KCk9PmosdXNlSWQ6KCk9PkIsdXNlTW9kZWw6KCk9Pm5lLHVzZVNTUkNvbnRleHQ6KCk9Plp0LHVzZVNoYWRvd1Jvb3Q6KCk9PkwsdXNlU2xvdHM6KCk9PlNlLHVzZVRlbXBsYXRlUmVmOigpPT5jZSx1c2VUcmFuc2l0aW9uU3RhdGU6KCk9PmFlLHZNb2RlbENoZWNrYm94OigpPT5mZSx2TW9kZWxEeW5hbWljOigpPT5oLHZNb2RlbFJhZGlvOigpPT53LHZNb2RlbFNlbGVjdDooKT0+dmUsdk1vZGVsVGV4dDooKT0+dW4sdlNob3c6KCk9PnMsdmVyc2lvbjooKT0+Tix3YXJuOigpPT5fdCx3YXRjaDooKT0+aSx3YXRjaEVmZmVjdDooKT0+bXQsd2F0Y2hQb3N0RWZmZWN0OigpPT5ELHdhdGNoU3luY0VmZmVjdDooKT0+QSx3aXRoQXN5bmNDb250ZXh0OigpPT5JLHdpdGhDdHg6KCk9PmRlLHdpdGhEZWZhdWx0czooKT0+bSx3aXRoRGlyZWN0aXZlczooKT0+Qyx3aXRoS2V5czooKT0+a2Usd2l0aE1lbW86KCk9Pl9lLHdpdGhNb2RpZmllcnM6KCk9PmYsd2l0aFNjb3BlSWQ6KCk9PmxufSksZm49KCk9Pnt9O2Z1bmN0aW9uIFooZSx0KXtsZXQgbj10eXBlb2YgZT09YHN0cmluZ2AmJiF0P2Ake2V9Q29udGV4dGA6dCxyPVN5bWJvbChuKTtyZXR1cm5bdD0+e2xldCBuPXAocix0KTtpZihufHxuPT09bnVsbClyZXR1cm4gbjt0aHJvdyBFcnJvcihgSW5qZWN0aW9uIFxgJHtyLnRvU3RyaW5nKCl9XGAgbm90IGZvdW5kLiBDb21wb25lbnQgbXVzdCBiZSB1c2VkIHdpdGhpbiAke0FycmF5LmlzQXJyYXkoZSk/YG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHM6ICR7ZS5qb2luKGAsIGApfWA6YFxgJHtlfVxgYH1gKX0sZT0+KHEocixlKSxlKV19dmFyW1EscG5dPVooYENvbmZpZ1Byb3ZpZGVyYCk7ZnVuY3Rpb24gbW4oZSl7bGV0IHQ9USh7ZGlyOkooYGx0cmApfSk7cmV0dXJuIEsoKCk9PmU/LnZhbHVlfHx0LmRpcj8udmFsdWV8fGBsdHJgKX1mdW5jdGlvbiBobihlKXtsZXQgdD1WKCksbj10Py50eXBlLmVtaXRzLHI9e307cmV0dXJuIG4/Lmxlbmd0aHx8Y29uc29sZS53YXJuKGBObyBlbWl0dGVkIGV2ZW50IGZvdW5kLiBQbGVhc2UgY2hlY2sgY29tcG9uZW50OiAke3Q/LnR5cGUuX19uYW1lfWApLG4/LmZvckVhY2godD0+e3JbYyhIKHQpKV09KC4uLm4pPT5lKHQsLi4ubil9KSxyfWZ1bmN0aW9uIGduKCl7bGV0IGU9VigpLHQ9SigpLG49SygoKT0+cigpKTtZKCgpPT57bi52YWx1ZSE9PXIoKSYmRyh0KX0pO2Z1bmN0aW9uIHIoKXtyZXR1cm4gdC52YWx1ZSYmYCRlbGBpbiB0LnZhbHVlJiZbYCN0ZXh0YCxgI2NvbW1lbnRgXS5pbmNsdWRlcyh0LnZhbHVlLiRlbC5ub2RlTmFtZSk/dC52YWx1ZS4kZWwubmV4dEVsZW1lbnRTaWJsaW5nOlQodCl9bGV0IGk9T2JqZWN0LmFzc2lnbih7fSxlLmV4cG9zZWQpLGE9e307Zm9yKGxldCB0IGluIGUucHJvcHMpT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5lLnByb3BzW3RdfSk7aWYoT2JqZWN0LmtleXMoaSkubGVuZ3RoPjApZm9yKGxldCBlIGluIGkpT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5pW2VdfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS52bm9kZS5lbH0pLGUuZXhwb3NlZD1hO2Z1bmN0aW9uIG8obil7aWYodC52YWx1ZT1uLG4mJihPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiJGVsIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5uIGluc3RhbmNlb2YgRWxlbWVudD9uOm4uJGVsfSksIShuIGluc3RhbmNlb2YgRWxlbWVudCkmJiFPYmplY3QuaGFzT3duKG4sYCRlbGApKSl7bGV0IHQ9bi4kLmV4cG9zZWQscj1PYmplY3QuYXNzaWduKHt9LGEpO2ZvcihsZXQgZSBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+dFtlXX0pO2UuZXhwb3NlZD1yfX1yZXR1cm57Zm9yd2FyZFJlZjpvLGN1cnJlbnRSZWY6dCxjdXJyZW50RWxlbWVudDpufX1mdW5jdGlvbiAkKGUpe2xldCB0PVYoKSxuPU9iamVjdC5rZXlzKHQ/LnR5cGUucHJvcHM/P3t9KS5yZWR1Y2UoKGUsbik9PntsZXQgcj0odD8udHlwZS5wcm9wc1tuXSkuZGVmYXVsdDtyZXR1cm4gciE9PXZvaWQgMCYmKGVbbl09ciksZX0se30pLHI9VyhlKTtyZXR1cm4gSygoKT0+e2xldCBlPXt9LGk9dD8udm5vZGUucHJvcHM/P3t9O3JldHVybiBPYmplY3Qua2V5cyhpKS5mb3JFYWNoKHQ9PntlW0godCldPWlbdF19KSxPYmplY3Qua2V5cyh7Li4ubiwuLi5lfSkucmVkdWNlKChlLHQpPT4oci52YWx1ZVt0XSE9PXZvaWQgMCYmKGVbdF09ci52YWx1ZVt0XSksZSkse30pfSl9ZnVuY3Rpb24gX24oZSx0KXtsZXQgbj0kKGUpLHI9dD9obih0KTp7fTtyZXR1cm4gSygoKT0+KHsuLi5uLnZhbHVlLC4uLnJ9KSl9dmFyIHZuPTA7ZnVuY3Rpb24geW4oZSx0PWByZWthYCl7aWYoZSlyZXR1cm4gZTtsZXQgbixyPVEoe3VzZUlkOnZvaWQgMH0pO3JldHVybiBuPXIudXNlSWQ/ci51c2VJZCgpOmB1c2VJZGBpbiBkbj9CPy4oKTpgJHsrK3ZufWAsdD9gJHt0fS0ke259YDpufWV4cG9ydHttbiBhcyBhLGduIGFzIGksX24gYXMgbixRIGFzIG8sJCBhcyByLFogYXMgcyx5biBhcyB0fTs=",
|
|
),
|
|
},
|
|
"useSearchQuery-bQZP4TsZ.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0UgYXMgZSxGciBhcyB0LFcgYXMgbixfbiBhcyByLGNuIGFzIGksZ2kgYXMgYSxobiBhcyBvLGh0IGFzIHMsaW4gYXMgYyxuciBhcyBsLG9pIGFzIHUsb24gYXMgZCxzbiBhcyBmLHVyIGFzIHAsdXQgYXMgbSx5aSBhcyBofWZyb20iLi9Ta2VsZXRvbi1CMHppQjZPZC5qcyI7aW1wb3J0e3MgYXMgZ31mcm9tIi4vaW5kZXgtZHl3UzhPcFQuanMiO3ZhciBfPXIoe19fbmFtZTpgU2VhcmNoSW5wdXRgLHByb3BzOnttb2RlbFZhbHVlOnt9LHBsYWNlaG9sZGVyOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYF0sc2V0dXAocix7ZW1pdDp1fSl7bGV0IF89cix2PXUseT1jKCgpPT5fLm1vZGVsVmFsdWUubGVuZ3RoPjApO2Z1bmN0aW9uIGIoZSl7dihgdXBkYXRlOm1vZGVsVmFsdWVgLFN0cmluZyhlKSl9ZnVuY3Rpb24geCgpe3YoYHVwZGF0ZTptb2RlbFZhbHVlYCxgYCl9cmV0dXJuKGMsdSk9PntsZXQgdj1wKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gbCgpLGkoYGRpdmAse2NsYXNzOmgoYShuKShgcmVsYXRpdmVgLF8uY2xhc3MpKX0sW28odix7aWNvbjphKG0pLGNsYXNzOmBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHRvcC0xLzIgbGVmdC0yLjUgc2l6ZS0zLjUgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LW11dGVkLWZvcmVncm91bmRgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLG8oYShnKSx7Im1vZGVsLXZhbHVlIjpyLm1vZGVsVmFsdWUsdHlwZTpgdGV4dGAscGxhY2Vob2xkZXI6ci5wbGFjZWhvbGRlciwiYXJpYS1sYWJlbCI6ci5wbGFjZWhvbGRlcixjbGFzczpgcHItOCBwbC04YCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6Yn0sbnVsbCw4LFtgbW9kZWwtdmFsdWVgLGBwbGFjZWhvbGRlcmAsYGFyaWEtbGFiZWxgXSkseS52YWx1ZT8obCgpLGQoYShlKSx7a2V5OjAsdHlwZTpgYnV0dG9uYCx2YXJpYW50OmBnaG9zdGAsc2l6ZTpgaWNvbi14c2AsImFyaWEtbGFiZWwiOmBDbGVhciBzZWFyY2hgLGNsYXNzOmBhYnNvbHV0ZSB0b3AtMS8yIHJpZ2h0LTEgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kYCxvbkNsaWNrOnh9LHtkZWZhdWx0OnQoKCk9PltvKHYse2ljb246YShzKSxjbGFzczpgc2l6ZS0zLjVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pXSksXzoxfSkpOmYoYGAsITApXSwyKX19fSk7ZnVuY3Rpb24gdihlKXtsZXQgdD1lPz91KGBgKSxuPWMoKCk9PnQudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO3JldHVybntxdWVyeTp0LG5vcm1hbGl6ZWQ6bixoYXNRdWVyeTpjKCgpPT5uLnZhbHVlLmxlbmd0aD4wKX19ZXhwb3J0e18gYXMgbix2IGFzIHR9Ow==",
|
|
),
|
|
},
|
|
}
|