-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathb0xfile__chunk-0b510f4b.d676e2ca.js.go
22 lines (18 loc) · 56.9 KB
/
b0xfile__chunk-0b510f4b.d676e2ca.js.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package knife4go
import (
"os"
)
func init() {
f, err := FS.OpenFile(CTX, "/chunk-0b510f4b.d676e2ca.js", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
if err != nil {
panic(err)
}
_, err = f.Write([] byte(base64Decoding("KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1siY2h1bmstMGI1MTBmNGIiXSx7IjU3NmYiOmZ1bmN0aW9uKGUsXyx0KXsidXNlIHN0cmljdCI7dC5kKF8sImEiLChmdW5jdGlvbigpe3JldHVybiBufSkpLHQoIjE0ZDkiKSx0KCJkM2I3IiksdCgiMjVmMCIpLHQoImE0ZDMiKSx0KCJlMDFhIiksdCgiYTE1YiIpLHQoIjE1OWIiKSx0KCJiMGMwIik7dmFyIHI9dCgiYjFjNyIpO2Z1bmN0aW9uIG4oZSl7dmFyIF89W107cmV0dXJuIG51bGwhPWUmJm51bGwhPWUmJihhKF8pLF8ucHVzaCgiIyMgIitlLnN1bW1hcnkpLGEoXyksXy5wdXNoKCIqKlVybCoqOmAiK2Uuc2hvd1VybCsiYCIpLGEoXyksXy5wdXNoKCIqKk1ldGhvZCoqOmAiK2UubWV0aG9kVHlwZSsiYCIpLGEoXyksXy5wdXNoKCIqKnByb2R1Y2VzKio6YCIrci5hLnRvU3RyaW5nKGUuY29uc3VtZXMsIioiKSsiYCIpLGEoXyksXy5wdXNoKCIqKmNvbnN1bWVzKio6YCIrci5hLnRvU3RyaW5nKGUucHJvZHVjZXMsIioiKSsiYCIpLGEoXyksXy5wdXNoKCIqKmRlc2NyaXB0aW9uKio6IityLmEudG9TdHJpbmcoZS5kZXNjcmlwdGlvbiwiTm9uZSIpKSxyLmEuY2hlY2tVbmRlZmluZWQoZS5yZXF1ZXN0VmFsdWUpJiYoYShfKSxfLnB1c2goIioqU2FtcGxlKio6IiksYShfKSxfLnB1c2goImBgYGphdmFzY3JpcHQiKSxfLnB1c2goZS5yZXF1ZXN0VmFsdWUpLF8ucHVzaCgiYGBgIikpLGZ1bmN0aW9uKGUsXyl7dmFyIHQ9ZS5yZXFQYXJhbWV0ZXJzO2EoXyksXy5wdXNoKCIqKlBhcmFtcyoqOiIpLGEoXyksXy5wdXNoKCIqKlBhcmFtcyoqOiIpLHQubGVuZ3RoPjA/KGEoXyksXy5wdXNoKCJ8IG5hbWUgfCBkZXNjcmlwdGlvbiB8IGluICAgIHwgcmVxdWlyZSB8IHR5cGUgfCBzY2hlbWEgfCIpLF8ucHVzaCgifCAtLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tIHwiKSxmdW5jdGlvbiBlKF8sdCxuKXtudWxsIT1fJiZudWxsIT1fJiZfLmxlbmd0aD4wJiZfLmZvckVhY2goKGZ1bmN0aW9uKF8pe18ubGV2ZWw9bix0LnB1c2goInwiK28oXykrInwiK3IuYS50b1N0cmluZyhfLmRlc2NyaXB0aW9uLCIiKSsifCIrci5hLnRvU3RyaW5nKF8uaW4sIiIpKyJ8IityLmEudG9TdHJpbmcoXy5yZXF1aXJlLCIiKSsifCIrci5hLnRvU3RyaW5nKF8udHlwZSwiIikrInwiK3IuYS50b1N0cmluZyhfLnNjaGVtYVZhbHVlLCIiKSsifCIpLGUoXy5jaGlsZHJlbix0LF8ubGV2ZWwrMSl9KSl9KHQsXywxKSk6KGEoXyksXy5wdXNoKCJOb25lIikpfShlLF8pLGZ1bmN0aW9uKGUsXyl7ci5hLmNoZWNrVW5kZWZpbmVkKGUucmVzcG9uc2VDb2RlcykmJmUucmVzcG9uc2VDb2Rlcy5sZW5ndGg+MCYmKGEoXyksXy5wdXNoKCIqKnN0YXR1cyoqOiIpLGEoXyksXy5wdXNoKCJ8IGNvZGUgfCBkZXNjcmlwdGlvbiB8IHNjaGVtYSB8IiksXy5wdXNoKCJ8IC0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLSB8ICIpLGUucmVzcG9uc2VDb2Rlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtfLnB1c2goInwiK3IuYS50b1N0cmluZyhlLmNvZGUsIiIpKyJ8IityLmEudG9TdHJpbmcoZS5kZXNjcmlwdGlvbiwiIikrInwiK3IuYS50b1N0cmluZyhlLnNjaGVtYSwiIikrInwiKX0pKSl9KGUsXyksZnVuY3Rpb24oZSxfKXtpZihlLm11bHRpcGFydFJlc3BvbnNlU2NoZW1hKXt2YXIgdD1lLm11bHRpcENvZGVEYXRhcztyLmEuYXJyTm90RW1wdHkodCkmJnQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YShfKSxfLnB1c2goIioqY29kZS0iK3IuYS50b1N0cmluZyhlLmNvZGUsIiIpKyIqKjoiKSxzKGUsXyl9KSl9ZWxzZSBzKGUubXVsdGlwRGF0YSxfKX0oZSxfKSksXy5qb2luKCJcbiIpfWZ1bmN0aW9uIGEoZSl7ZS5wdXNoKCJcbiIpfWZ1bmN0aW9uIHMoZSxfKXsoZnVuY3Rpb24oZSxfKXtyLmEuY2hlY2tVbmRlZmluZWQoZSkmJmUubGVuZ3RoPjAmJihhKF8pLF8ucHVzaCgiKipSZXNwb25zZSBIZWFkZXIqKjoiKSxhKF8pLF8ucHVzaCgifG5hbWUgfCBkZXNjcmlwdGlvbiB8IHR5cGUgfCIpLF8ucHVzaCgifCAtLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0gfCAiKSxlLmZvckVhY2goKGZ1bmN0aW9uKGUpe18ucHVzaCgifCIrci5hLnRvU3RyaW5nKGUubmFtZSwiIikrInwiK3IuYS50b1N0cmluZyhlLmRlc2NyaXB0aW9uLCIiKSsifCIrci5hLnRvU3RyaW5nKGUudHlwZSwiIikrInwiKX0pKSl9KShlLnJlc3BvbnNlSGVhZGVyUGFyYW1ldGVycyxfKSxhKF8pLF8ucHVzaCgiKipSZXNwb25zZXMqKjoiKSxhKF8pLHIuYS5hcnJOb3RFbXB0eShlLmRhdGEpPyhfLnB1c2goInwgbmFtZSB8IGRlc2NyaXB0aW9uIHwgdHlwZSB8IHNjaGVtYSB8IiksXy5wdXNoKCJ8IC0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLSB8LS0tLS0gfCAiKSxlLmRhdGEuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5sZXZlbD0xLF8ucHVzaCgifCIrbyhlKSsifCIrci5hLnRvU3RyaW5nKGUuZGVzY3JpcHRpb24sIiIpKyJ8IityLmEudG9TdHJpbmcoZS50eXBlLCIiKSsifCIrci5hLnRvU3RyaW5nKGUuc2NoZW1hVmFsdWUsIiIpKyJ8IiksZnVuY3Rpb24gZShfLHQsbil7bnVsbCE9XyYmbnVsbCE9XyYmXy5sZW5ndGg+MCYmXy5mb3JFYWNoKChmdW5jdGlvbihfKXtfLmxldmVsPW4sdC5wdXNoKCJ8IitvKF8pKyJ8IityLmEudG9TdHJpbmcoXy5kZXNjcmlwdGlvbiwiIikrInwiK3IuYS50b1N0cmluZyhfLnR5cGUsIiIpKyJ8IityLmEudG9TdHJpbmcoXy5zY2hlbWFWYWx1ZSwiIikrInwiKSxlKF8uY2hpbGRyZW4sdCxfLmxldmVsKzEpfSkpfShlLmNoaWxkcmVuLF8sZS5sZXZlbCsxKX0pKSk6Xy5wdXNoKCJOb25lIiksYShfKSxfLnB1c2goIioqUmVzcG9uc2UgU2FtcGxlKio6IiksZS5yZXNwb25zZUJhc2ljVHlwZT8oXy5wdXNoKCJgYGB0ZXh0IiksXy5wdXNoKGUucmVzcG9uc2VUZXh0KSxfLnB1c2goImBgYCIpKTooXy5wdXNoKCJgYGBqYXZhc2NyaXB0IiksXy5wdXNoKGUucmVzcG9uc2VWYWx1ZSksXy5wdXNoKCJgYGAiKSl9ZnVuY3Rpb24gbyhlKXtmb3IodmFyIF89W10sdD0xO3Q8ZS5sZXZlbDt0KyspXy5wdXNoKCImZW1zcDsmZW1zcDsiKTtyZXR1cm4gXy5qb2luKCIiKStlLm5hbWV9fSwiNWE0ZiI6ZnVuY3Rpb24oZSxfLHQpe30sYjMxMTpmdW5jdGlvbihlLF8sdCl7Ci8qIQogKiBjbGlwYm9hcmQuanMgdjIuMC4xMQogKiBodHRwczovL2NsaXBib2FyZGpzLmNvbS8KICoKICogTGljZW5zZWQgTUlUIMKpIFplbm8gUm9jaGEKICovCmUuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPXs2ODY6ZnVuY3Rpb24oZSxfLHQpeyJ1c2Ugc3RyaWN0Ijt0LmQoXyx7ZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybiBnfX0pO3ZhciByPXQoMjc5KSxuPXQubihyKSxhPXQoMzcwKSxzPXQubihhKSxvPXQoODE3KSxpPXQubihvKTtmdW5jdGlvbiBjKGUpe3RyeXtyZXR1cm4gZG9jdW1lbnQuZXhlY0NvbW1hbmQoZSl9Y2F0Y2goZSl7cmV0dXJuITF9fXZhciB1PWZ1bmN0aW9uKGUpe3ZhciBfPWkoKShlKTtyZXR1cm4gYygiY3V0IiksX30sbD1mdW5jdGlvbihlLF8pe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciBfPSJydGwiPT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIiksdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO3Quc3R5bGUuZm9udFNpemU9IjEycHQiLHQuc3R5bGUuYm9yZGVyPSIwIix0LnN0eWxlLnBhZGRpbmc9IjAiLHQuc3R5bGUubWFyZ2luPSIwIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZVtfPyJyaWdodCI6ImxlZnQiXT0iLTk5OTlweCI7dmFyIHI9d2luZG93LnBhZ2VZT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO3JldHVybiB0LnN0eWxlLnRvcD0iIi5jb25jYXQociwicHgiKSx0LnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCIiKSx0LnZhbHVlPWUsdH0oZSk7Xy5jb250YWluZXIuYXBwZW5kQ2hpbGQodCk7dmFyIHI9aSgpKHQpO3JldHVybiBjKCJjb3B5IiksdC5yZW1vdmUoKSxyfSxwPWZ1bmN0aW9uKGUpe3ZhciBfPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7Y29udGFpbmVyOmRvY3VtZW50LmJvZHl9LHQ9IiI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3Q9bChlLF8pOmUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50JiYhWyJ0ZXh0Iiwic2VhcmNoIiwidXJsIiwidGVsIiwicGFzc3dvcmQiXS5pbmNsdWRlcyhudWxsPT1lP3ZvaWQgMDplLnR5cGUpP3Q9bChlLnZhbHVlLF8pOih0PWkoKShlKSxjKCJjb3B5IikpLHR9O2Z1bmN0aW9uIGQoZSl7cmV0dXJuKGQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9KShlKX12YXIgbT1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxfPWUuYWN0aW9uLHQ9dm9pZCAwPT09Xz8iY29weSI6XyxyPWUuY29udGFpbmVyLG49ZS50YXJnZXQsYT1lLnRleHQ7aWYoImNvcHkiIT09dCYmImN1dCIhPT10KXRocm93IG5ldyBFcnJvcignSW52YWxpZCAiYWN0aW9uIiB2YWx1ZSwgdXNlIGVpdGhlciAiY29weSIgb3IgImN1dCInKTtpZih2b2lkIDAhPT1uKXtpZighbnx8Im9iamVjdCIhPT1kKG4pfHwxIT09bi5ub2RlVHlwZSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgInRhcmdldCIgdmFsdWUsIHVzZSBhIHZhbGlkIEVsZW1lbnQnKTtpZigiY29weSI9PT10JiZuLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgInRhcmdldCIgYXR0cmlidXRlLiBQbGVhc2UgdXNlICJyZWFkb25seSIgaW5zdGVhZCBvZiAiZGlzYWJsZWQiIGF0dHJpYnV0ZScpO2lmKCJjdXQiPT09dCYmKG4uaGFzQXR0cmlidXRlKCJyZWFkb25seSIpfHxuLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSkpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkICJ0YXJnZXQiIGF0dHJpYnV0ZS4gWW91IGNhblwndCBjdXQgdGV4dCBmcm9tIGVsZW1lbnRzIHdpdGggInJlYWRvbmx5IiBvciAiZGlzYWJsZWQiIGF0dHJpYnV0ZXMnKX1yZXR1cm4gYT9wKGEse2NvbnRhaW5lcjpyfSk6bj8iY3V0Ij09PXQ/dShuKTpwKG4se2NvbnRhaW5lcjpyfSk6dm9pZCAwfTtmdW5jdGlvbiBmKGUpe3JldHVybihmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gaChlLF8pe2Zvcih2YXIgdD0wO3Q8Xy5sZW5ndGg7dCsrKXt2YXIgcj1fW3RdO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIEUoZSxfKXtyZXR1cm4oRT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsXyl7cmV0dXJuIGUuX19wcm90b19fPV8sZX0pKGUsXyl9ZnVuY3Rpb24gUChlKXt2YXIgXz1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0LHI9TShlKTtpZihfKXt2YXIgbj1NKHRoaXMpLmNvbnN0cnVjdG9yO3Q9UmVmbGVjdC5jb25zdHJ1Y3Qocixhcmd1bWVudHMsbil9ZWxzZSB0PXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB5KHRoaXMsdCl9fWZ1bmN0aW9uIHkoZSxfKXtyZXR1cm4hX3x8Im9iamVjdCIhPT1mKF8pJiYiZnVuY3Rpb24iIT10eXBlb2YgXz9mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpOl99ZnVuY3Rpb24gTShlKXtyZXR1cm4oTT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24gRChlLF8pe3ZhciB0PSJkYXRhLWNsaXBib2FyZC0iLmNvbmNhdChlKTtpZihfLmhhc0F0dHJpYnV0ZSh0KSlyZXR1cm4gXy5nZXRBdHRyaWJ1dGUodCl9dmFyIGc9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsXyl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIF8mJm51bGwhPT1fKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShfJiZfLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLF8mJkUoZSxfKX0odCxlKTt2YXIgXz1QKHQpO2Z1bmN0aW9uIHQoZSxyKXt2YXIgbjtyZXR1cm4gZnVuY3Rpb24oZSxfKXtpZighKGUgaW5zdGFuY2VvZiBfKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KSwobj1fLmNhbGwodGhpcykpLnJlc29sdmVPcHRpb25zKHIpLG4ubGlzdGVuQ2xpY2soZSksbn1yZXR1cm4gZnVuY3Rpb24oZSxfLHQpe18mJmgoZS5wcm90b3R5cGUsXyksdCYmaChlLHQpfSh0LFt7a2V5OiJyZXNvbHZlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307dGhpcy5hY3Rpb249ImZ1bmN0aW9uIj09dHlwZW9mIGUuYWN0aW9uP2UuYWN0aW9uOnRoaXMuZGVmYXVsdEFjdGlvbix0aGlzLnRhcmdldD0iZnVuY3Rpb24iPT10eXBlb2YgZS50YXJnZXQ/ZS50YXJnZXQ6dGhpcy5kZWZhdWx0VGFyZ2V0LHRoaXMudGV4dD0iZnVuY3Rpb24iPT10eXBlb2YgZS50ZXh0P2UudGV4dDp0aGlzLmRlZmF1bHRUZXh0LHRoaXMuY29udGFpbmVyPSJvYmplY3QiPT09ZihlLmNvbnRhaW5lcik/ZS5jb250YWluZXI6ZG9jdW1lbnQuYm9keX19LHtrZXk6Imxpc3RlbkNsaWNrIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgXz10aGlzO3RoaXMubGlzdGVuZXI9cygpKGUsImNsaWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIF8ub25DbGljayhlKX0pKX19LHtrZXk6Im9uQ2xpY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciBfPWUuZGVsZWdhdGVUYXJnZXR8fGUuY3VycmVudFRhcmdldCx0PXRoaXMuYWN0aW9uKF8pfHwiY29weSIscj1tKHthY3Rpb246dCxjb250YWluZXI6dGhpcy5jb250YWluZXIsdGFyZ2V0OnRoaXMudGFyZ2V0KF8pLHRleHQ6dGhpcy50ZXh0KF8pfSk7dGhpcy5lbWl0KHI/InN1Y2Nlc3MiOiJlcnJvciIse2FjdGlvbjp0LHRleHQ6cix0cmlnZ2VyOl8sY2xlYXJTZWxlY3Rpb246ZnVuY3Rpb24oKXtfJiZfLmZvY3VzKCksd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpfX0pfX0se2tleToiZGVmYXVsdEFjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEQoImFjdGlvbiIsZSl9fSx7a2V5OiJkZWZhdWx0VGFyZ2V0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgXz1EKCJ0YXJnZXQiLGUpO2lmKF8pcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXyl9fSx7a2V5OiJkZWZhdWx0VGV4dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEQoInRleHQiLGUpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmVyLmRlc3Ryb3koKX19XSxbe2tleToiY29weSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIF89YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOntjb250YWluZXI6ZG9jdW1lbnQuYm9keX07cmV0dXJuIHAoZSxfKX19LHtrZXk6ImN1dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSl9fSx7a2V5OiJpc1N1cHBvcnRlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06WyJjb3B5IiwiY3V0Il0sXz0ic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUsdD0hIWRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZDtyZXR1cm4gXy5mb3JFYWNoKChmdW5jdGlvbihlKXt0PXQmJiEhZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkKGUpfSkpLHR9fV0pLHR9KG4oKSl9LDgyODpmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQmJiFFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzKXt2YXIgXz1FbGVtZW50LnByb3RvdHlwZTtfLm1hdGNoZXM9Xy5tYXRjaGVzU2VsZWN0b3J8fF8ubW96TWF0Y2hlc1NlbGVjdG9yfHxfLm1zTWF0Y2hlc1NlbGVjdG9yfHxfLm9NYXRjaGVzU2VsZWN0b3J8fF8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfWUuZXhwb3J0cz1mdW5jdGlvbihlLF8pe2Zvcig7ZSYmOSE9PWUubm9kZVR5cGU7KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS5tYXRjaGVzJiZlLm1hdGNoZXMoXykpcmV0dXJuIGU7ZT1lLnBhcmVudE5vZGV9fX0sNDM4OmZ1bmN0aW9uKGUsXyx0KXt2YXIgcj10KDgyOCk7ZnVuY3Rpb24gbihlLF8sdCxyLG4pe3ZhciBzPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIodCxzLG4pLHtkZXN0cm95OmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQscyxuKX19fWZ1bmN0aW9uIGEoZSxfLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHQpe3QuZGVsZWdhdGVUYXJnZXQ9cih0LnRhcmdldCxfKSx0LmRlbGVnYXRlVGFyZ2V0JiZuLmNhbGwoZSx0KX19ZS5leHBvcnRzPWZ1bmN0aW9uKGUsXyx0LHIsYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuYWRkRXZlbnRMaXN0ZW5lcj9uLmFwcGx5KG51bGwsYXJndW1lbnRzKToiZnVuY3Rpb24iPT10eXBlb2YgdD9uLmJpbmQobnVsbCxkb2N1bWVudCkuYXBwbHkobnVsbCxhcmd1bWVudHMpOigic3RyaW5nIj09dHlwZW9mIGUmJihlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSkpLEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChlLChmdW5jdGlvbihlKXtyZXR1cm4gbihlLF8sdCxyLGEpfSkpKX19LDg3OTpmdW5jdGlvbihlLF8pe18ubm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZSYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiYxPT09ZS5ub2RlVHlwZX0sXy5ub2RlTGlzdD1mdW5jdGlvbihlKXt2YXIgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7cmV0dXJuIHZvaWQgMCE9PWUmJigiW29iamVjdCBOb2RlTGlzdF0iPT09dHx8IltvYmplY3QgSFRNTENvbGxlY3Rpb25dIj09PXQpJiYibGVuZ3RoImluIGUmJigwPT09ZS5sZW5ndGh8fF8ubm9kZShlWzBdKSl9LF8uc3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFN0cmluZ30sXy5mbj1mdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfX0sMzcwOmZ1bmN0aW9uKGUsXyx0KXt2YXIgcj10KDg3OSksbj10KDQzOCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsXyx0KXtpZighZSYmIV8mJiF0KXRocm93IG5ldyBFcnJvcigiTWlzc2luZyByZXF1aXJlZCBhcmd1bWVudHMiKTtpZighci5zdHJpbmcoXykpdGhyb3cgbmV3IFR5cGVFcnJvcigiU2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBTdHJpbmciKTtpZighci5mbih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGlyZCBhcmd1bWVudCBtdXN0IGJlIGEgRnVuY3Rpb24iKTtpZihyLm5vZGUoZSkpcmV0dXJuIGZ1bmN0aW9uKGUsXyx0KXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKF8sdCkse2Rlc3Ryb3k6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXyx0KX19fShlLF8sdCk7aWYoci5ub2RlTGlzdChlKSlyZXR1cm4gZnVuY3Rpb24oZSxfLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUsKGZ1bmN0aW9uKGUpe2UuYWRkRXZlbnRMaXN0ZW5lcihfLHQpfSkpLHtkZXN0cm95OmZ1bmN0aW9uKCl7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLChmdW5jdGlvbihlKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXyx0KX0pKX19fShlLF8sdCk7aWYoci5zdHJpbmcoZSkpcmV0dXJuIGZ1bmN0aW9uKGUsXyx0KXtyZXR1cm4gbihkb2N1bWVudC5ib2R5LGUsXyx0KX0oZSxfLHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBTdHJpbmcsIEhUTUxFbGVtZW50LCBIVE1MQ29sbGVjdGlvbiwgb3IgTm9kZUxpc3QiKX19LDgxNzpmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIF87aWYoIlNFTEVDVCI9PT1lLm5vZGVOYW1lKWUuZm9jdXMoKSxfPWUudmFsdWU7ZWxzZSBpZigiSU5QVVQiPT09ZS5ub2RlTmFtZXx8IlRFWFRBUkVBIj09PWUubm9kZU5hbWUpe3ZhciB0PWUuaGFzQXR0cmlidXRlKCJyZWFkb25seSIpO3R8fGUuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpLGUuc2VsZWN0KCksZS5zZXRTZWxlY3Rpb25SYW5nZSgwLGUudmFsdWUubGVuZ3RoKSx0fHxlLnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKSxfPWUudmFsdWV9ZWxzZXtlLmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIikmJmUuZm9jdXMoKTt2YXIgcj13aW5kb3cuZ2V0U2VsZWN0aW9uKCksbj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO24uc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLHIucmVtb3ZlQWxsUmFuZ2VzKCksci5hZGRSYW5nZShuKSxfPXIudG9TdHJpbmcoKX1yZXR1cm4gX319LDI3OTpmdW5jdGlvbihlKXtmdW5jdGlvbiBfKCl7fV8ucHJvdG90eXBlPXtvbjpmdW5jdGlvbihlLF8sdCl7dmFyIHI9dGhpcy5lfHwodGhpcy5lPXt9KTtyZXR1cm4ocltlXXx8KHJbZV09W10pKS5wdXNoKHtmbjpfLGN0eDp0fSksdGhpc30sb25jZTpmdW5jdGlvbihlLF8sdCl7dmFyIHI9dGhpcztmdW5jdGlvbiBuKCl7ci5vZmYoZSxuKSxfLmFwcGx5KHQsYXJndW1lbnRzKX1yZXR1cm4gbi5fPV8sdGhpcy5vbihlLG4sdCl9LGVtaXQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciBfPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHQ9KCh0aGlzLmV8fCh0aGlzLmU9e30pKVtlXXx8W10pLnNsaWNlKCkscj0wLG49dC5sZW5ndGg7cjxuO3IrKyl0W3JdLmZuLmFwcGx5KHRbcl0uY3R4LF8pO3JldHVybiB0aGlzfSxvZmY6ZnVuY3Rpb24oZSxfKXt2YXIgdD10aGlzLmV8fCh0aGlzLmU9e30pLHI9dFtlXSxuPVtdO2lmKHImJl8pZm9yKHZhciBhPTAscz1yLmxlbmd0aDthPHM7YSsrKXJbYV0uZm4hPT1fJiZyW2FdLmZuLl8hPT1fJiZuLnB1c2goclthXSk7cmV0dXJuIG4ubGVuZ3RoP3RbZV09bjpkZWxldGUgdFtlXSx0aGlzfX0sZS5leHBvcnRzPV8sZS5leHBvcnRzLlRpbnlFbWl0dGVyPV99fSxfPXt9O2Z1bmN0aW9uIHQocil7aWYoX1tyXSlyZXR1cm4gX1tyXS5leHBvcnRzO3ZhciBuPV9bcl09e2V4cG9ydHM6e319O3JldHVybiBlW3JdKG4sbi5leHBvcnRzLHQpLG4uZXhwb3J0c31yZXR1cm4gdC5uPWZ1bmN0aW9uKGUpe3ZhciBfPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiB0LmQoXyx7YTpffSksX30sdC5kPWZ1bmN0aW9uKGUsXyl7Zm9yKHZhciByIGluIF8pdC5vKF8scikmJiF0Lm8oZSxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6X1tyXX0pfSx0Lm89ZnVuY3Rpb24oZSxfKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsXyl9LHQoNjg2KX0oKS5kZWZhdWx0fSxiOWJmOmZ1bmN0aW9uKGUsXyx0KXsidXNlIHN0cmljdCI7dC5kKF8sImEiLChmdW5jdGlvbigpe3JldHVybiBufSkpLHQoIjE0ZDkiKSx0KCJkM2I3IiksdCgiMjVmMCIpLHQoImE0ZDMiKSx0KCJlMDFhIiksdCgiYTE1YiIpLHQoIjE1OWIiKSx0KCJiMGMwIik7dmFyIHI9dCgiYjFjNyIpO2Z1bmN0aW9uIG4oZSl7dmFyIF89W107cmV0dXJuIG51bGwhPWUmJm51bGwhPWUmJihhKF8pLF8ucHVzaCgiIyMgIitlLnN1bW1hcnkpLGEoXyksXy5wdXNoKCIqKuaOpeWPo+WcsOWdgCoqOmAiK2Uuc2hvd1VybCsiYCIpLGEoXyksXy5wdXNoKCIqKuivt+axguaWueW8jyoqOmAiK2UubWV0aG9kVHlwZSsiYCIpLGEoXyksXy5wdXNoKCIqKuivt+axguaVsOaNruexu+WeiyoqOmAiK3IuYS50b1N0cmluZyhlLmNvbnN1bWVzLCIqIikrImAiKSxhKF8pLF8ucHVzaCgiKirlk43lupTmlbDmja7nsbvlnosqKjpgIityLmEudG9TdHJpbmcoZS5wcm9kdWNlcywiKiIpKyJgIiksYShfKSxfLnB1c2goIioq5o6l5Y+j5o+P6L+wKio6IityLmEudG9TdHJpbmcoZS5kZXNjcmlwdGlvbiwi5pqC5pegIikpLHIuYS5jaGVja1VuZGVmaW5lZChlLnJlcXVlc3RWYWx1ZSkmJihhKF8pLF8ucHVzaCgiKiror7fmsYLnpLrkvosqKjoiKSxhKF8pLF8ucHVzaCgiYGBgamF2YXNjcmlwdCIpLF8ucHVzaChlLnJlcXVlc3RWYWx1ZSksXy5wdXNoKCJgYGAiKSksZnVuY3Rpb24oZSxfKXt2YXIgdD1lLnJlcVBhcmFtZXRlcnM7YShfKSxfLnB1c2goIioq6K+35rGC5Y+C5pWwKio6IiksYShfKSxfLnB1c2goIioq6K+35rGC5Y+C5pWwKio6IiksdC5sZW5ndGg+MD8oYShfKSxfLnB1c2goInwg5Y+C5pWw5ZCN56ewIHwg5Y+C5pWw6K+05piOIHwg6K+35rGC57G75Z6LICAgIHwg5piv5ZCm5b+F6aG7IHwg5pWw5o2u57G75Z6LIHwgc2NoZW1hIHwiKSxfLnB1c2goInwgLS0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLSB8IiksZnVuY3Rpb24gZShfLHQsbil7bnVsbCE9XyYmbnVsbCE9XyYmXy5sZW5ndGg+MCYmXy5mb3JFYWNoKChmdW5jdGlvbihfKXtfLmxldmVsPW4sdC5wdXNoKCJ8IitvKF8pKyJ8IityLmEudG9TdHJpbmcoXy5kZXNjcmlwdGlvbiwiIikrInwiK3IuYS50b1N0cmluZyhfLmluLCIiKSsifCIrci5hLnRvU3RyaW5nKF8ucmVxdWlyZSwiIikrInwiK3IuYS50b1N0cmluZyhfLnR5cGUsIiIpKyJ8IityLmEudG9TdHJpbmcoXy5zY2hlbWFWYWx1ZSwiIikrInwiKSxlKF8uY2hpbGRyZW4sdCxfLmxldmVsKzEpfSkpfSh0LF8sMSkpOihhKF8pLF8ucHVzaCgi5pqC5pegIikpfShlLF8pLGZ1bmN0aW9uKGUsXyl7ci5hLmNoZWNrVW5kZWZpbmVkKGUucmVzcG9uc2VDb2RlcykmJmUucmVzcG9uc2VDb2Rlcy5sZW5ndGg+MCYmKGEoXyksXy5wdXNoKCIqKuWTjeW6lOeKtuaAgSoqOiIpLGEoXyksXy5wdXNoKCJ8IOeKtuaAgeeggSB8IOivtOaYjiB8IHNjaGVtYSB8IiksXy5wdXNoKCJ8IC0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLSB8ICIpLGUucmVzcG9uc2VDb2Rlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtfLnB1c2goInwiK3IuYS50b1N0cmluZyhlLmNvZGUsIiIpKyJ8IityLmEudG9TdHJpbmcoZS5kZXNjcmlwdGlvbiwiIikrInwiK3IuYS50b1N0cmluZyhlLnNjaGVtYSwiIikrInwiKX0pKSl9KGUsXyksZnVuY3Rpb24oZSxfKXtpZihlLm11bHRpcGFydFJlc3BvbnNlU2NoZW1hKXt2YXIgdD1lLm11bHRpcENvZGVEYXRhcztyLmEuYXJyTm90RW1wdHkodCkmJnQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YShfKSxfLnB1c2goIioq5ZON5bqU54q25oCB56CBLSIrci5hLnRvU3RyaW5nKGUuY29kZSwiIikrIioqOiIpLHMoZSxfKX0pKX1lbHNlIHMoZS5tdWx0aXBEYXRhLF8pfShlLF8pKSxfLmpvaW4oIlxuIil9ZnVuY3Rpb24gYShlKXtlLnB1c2goIlxuIil9ZnVuY3Rpb24gcyhlLF8peyhmdW5jdGlvbihlLF8pe3IuYS5jaGVja1VuZGVmaW5lZChlKSYmZS5sZW5ndGg+MCYmKGEoXyksXy5wdXNoKCIqKuWTjeW6lEhlYWRlcioqOiIpLGEoXyksXy5wdXNoKCJ8IOWPguaVsOWQjeensCB8IOWPguaVsOivtOaYjiB8IOaVsOaNruexu+WeiyB8IiksXy5wdXNoKCJ8IC0tLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLSB8ICIpLGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Xy5wdXNoKCJ8IityLmEudG9TdHJpbmcoZS5uYW1lLCIiKSsifCIrci5hLnRvU3RyaW5nKGUuZGVzY3JpcHRpb24sIiIpKyJ8IityLmEudG9TdHJpbmcoZS50eXBlLCIiKSsifCIpfSkpKX0pKGUucmVzcG9uc2VIZWFkZXJQYXJhbWV0ZXJzLF8pLGEoXyksXy5wdXNoKCIqKuWTjeW6lOWPguaVsCoqOiIpLGEoXyksci5hLmFyck5vdEVtcHR5KGUuZGF0YSk/KF8ucHVzaCgifCDlj4LmlbDlkI3np7AgfCDlj4LmlbDor7TmmI4gfCDnsbvlnosgfCBzY2hlbWEgfCIpLF8ucHVzaCgifCAtLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0gfC0tLS0tIHwgIiksZS5kYXRhLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UubGV2ZWw9MSxfLnB1c2goInwiK28oZSkrInwiK3IuYS50b1N0cmluZyhlLmRlc2NyaXB0aW9uLCIiKSsifCIrci5hLnRvU3RyaW5nKGUudHlwZSwiIikrInwiK3IuYS50b1N0cmluZyhlLnNjaGVtYVZhbHVlLCIiKSsifCIpLGZ1bmN0aW9uIGUoXyx0LG4pe251bGwhPV8mJm51bGwhPV8mJl8ubGVuZ3RoPjAmJl8uZm9yRWFjaCgoZnVuY3Rpb24oXyl7Xy5sZXZlbD1uLHQucHVzaCgifCIrbyhfKSsifCIrci5hLnRvU3RyaW5nKF8uZGVzY3JpcHRpb24sIiIpKyJ8IityLmEudG9TdHJpbmcoXy50eXBlLCIiKSsifCIrci5hLnRvU3RyaW5nKF8uc2NoZW1hVmFsdWUsIiIpKyJ8IiksZShfLmNoaWxkcmVuLHQsXy5sZXZlbCsxKX0pKX0oZS5jaGlsZHJlbixfLGUubGV2ZWwrMSl9KSkpOl8ucHVzaCgi5pqC5pegIiksYShfKSxfLnB1c2goIioq5ZON5bqU56S65L6LKio6IiksZS5yZXNwb25zZUJhc2ljVHlwZT8oXy5wdXNoKCJgYGB0ZXh0IiksXy5wdXNoKGUucmVzcG9uc2VUZXh0KSxfLnB1c2goImBgYCIpKTooXy5wdXNoKCJgYGBqYXZhc2NyaXB0IiksXy5wdXNoKGUucmVzcG9uc2VWYWx1ZSksXy5wdXNoKCJgYGAiKSl9ZnVuY3Rpb24gbyhlKXtmb3IodmFyIF89W10sdD0xO3Q8ZS5sZXZlbDt0KyspXy5wdXNoKCImZW1zcDsmZW1zcDsiKTtyZXR1cm4gXy5qb2luKCIiKStlLm5hbWV9fSxiZDA4OmZ1bmN0aW9uKG1vZHVsZSxfX3dlYnBhY2tfZXhwb3J0c19fLF9fd2VicGFja19yZXF1aXJlX18peyJ1c2Ugc3RyaWN0Ijt2YXIgX2lkZV93b3Jrc3BhY2Vfa25pZmU0al9ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2VzbV9vYmplY3RTcHJlYWQyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX189X193ZWJwYWNrX3JlcXVpcmVfXygiNTUzMCIpLGNvcmVfanNfbW9kdWxlc19lc19vYmplY3RfdG9fc3RyaW5nX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX189X193ZWJwYWNrX3JlcXVpcmVfXygiZDNiNyIpLGNvcmVfanNfbW9kdWxlc19lc19vYmplY3RfdG9fc3RyaW5nX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX29iamVjdF90b19zdHJpbmdfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyksY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19pdGVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fPV9fd2VicGFja19yZXF1aXJlX18oIjNjYTMiKSxjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX2l0ZXJhdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19pdGVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fKSxjb3JlX2pzX21vZHVsZXNfd2ViX2RvbV9jb2xsZWN0aW9uc19pdGVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fPV9fd2VicGFja19yZXF1aXJlX18oImRkYjAiKSxjb3JlX2pzX21vZHVsZXNfd2ViX2RvbV9jb2xsZWN0aW9uc19pdGVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc193ZWJfZG9tX2NvbGxlY3Rpb25zX2l0ZXJhdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18pLGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9maWx0ZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCI0ZGU0IiksY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2ZpbHRlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9maWx0ZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyksY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2luY2x1ZGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X189X193ZWJwYWNrX3JlcXVpcmVfXygiY2FhZCIpLGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9pbmNsdWRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9pbmNsdWRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fKSxjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX2luY2x1ZGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X189X193ZWJwYWNrX3JlcXVpcmVfXygiMjUzMiIpLGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfaW5jbHVkZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX2luY2x1ZGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18pLGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9jb25jYXRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCI5OWFmIiksY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2NvbmNhdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9jb25jYXRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyksY29yZV9qc19tb2R1bGVzX2VzX2Z1bmN0aW9uX25hbWVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCJiMGMwIiksY29yZV9qc19tb2R1bGVzX2VzX2Z1bmN0aW9uX25hbWVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfZnVuY3Rpb25fbmFtZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fKSxjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfbWFwX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X189X193ZWJwYWNrX3JlcXVpcmVfXygiZDgxZCIpLGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9tYXBfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfbWFwX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X18pLGNvcmVfanNfbW9kdWxlc19lc19vYmplY3Rfa2V5c19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCJiNjRiIiksY29yZV9qc19tb2R1bGVzX2VzX29iamVjdF9rZXlzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19vYmplY3Rfa2V5c19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXyksY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF9jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCI0ZDYzIiksY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF9jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX2NvbnN0cnVjdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fKSxjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX2RvdF9hbGxfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEyX189X193ZWJwYWNrX3JlcXVpcmVfXygiYzYwNyIpLGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfZG90X2FsbF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX2RvdF9hbGxfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEyX18pLGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfZXhlY19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTNfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCJhYzFmIiksY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF9leGVjX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xM19fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfZXhlY19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTNfXyksY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF9zdGlja3lfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE0X189X193ZWJwYWNrX3JlcXVpcmVfXygiMmMzZSIpLGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfc3RpY2t5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNF9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfc3RpY2t5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNF9fKSxjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX3RvX3N0cmluZ19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTVfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCIyNWYwIiksY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF90b19zdHJpbmdfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE1X19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF90b19zdHJpbmdfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE1X18pLGNvcmVfanNfbW9kdWxlc193ZWJfZG9tX2NvbGxlY3Rpb25zX2Zvcl9lYWNoX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNl9fPV9fd2VicGFja19yZXF1aXJlX18oIjE1OWIiKSxjb3JlX2pzX21vZHVsZXNfd2ViX2RvbV9jb2xsZWN0aW9uc19mb3JfZWFjaF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTZfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfd2ViX2RvbV9jb2xsZWN0aW9uc19mb3JfZWFjaF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTZfXyksY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X3B1c2hfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE3X189X193ZWJwYWNrX3JlcXVpcmVfXygiMTRkOSIpLGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9wdXNoX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9wdXNoX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xN19fKSxjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3JlcGxhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE4X189X193ZWJwYWNrX3JlcXVpcmVfXygiNTMxOSIpLGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfcmVwbGFjZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMThfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3JlcGxhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE4X18pLGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfc3RhcnRzX3dpdGhfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X189X193ZWJwYWNrX3JlcXVpcmVfXygiMmNhMCIpLGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfc3RhcnRzX3dpdGhfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19zdGFydHNfd2l0aF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTlfXyksY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X3NvcnRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIwX189X193ZWJwYWNrX3JlcXVpcmVfXygiNGU4MiIpLGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9zb3J0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMF9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9zb3J0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMF9fKSxjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX3Rlc3RfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIxX189X193ZWJwYWNrX3JlcXVpcmVfXygiMDBiNCIpLGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfdGVzdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjFfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX3Rlc3RfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIxX18pLGNvcmVfanNfbW9kdWxlc19lc19qc29uX3N0cmluZ2lmeV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjJfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCJlOWM0IiksY29yZV9qc19tb2R1bGVzX2VzX2pzb25fc3RyaW5naWZ5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMl9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19qc29uX3N0cmluZ2lmeV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjJfXyksY29yZV9qc19tb2R1bGVzX2VzX3N5bWJvbF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjNfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCJhNGQzIiksY29yZV9qc19tb2R1bGVzX2VzX3N5bWJvbF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjNfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfc3ltYm9sX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yM19fKSxjb3JlX2pzX21vZHVsZXNfZXNfc3ltYm9sX2Rlc2NyaXB0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNF9fPV9fd2VicGFja19yZXF1aXJlX18oImUwMWEiKSxjb3JlX2pzX21vZHVsZXNfZXNfc3ltYm9sX2Rlc2NyaXB0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNF9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19zeW1ib2xfZGVzY3JpcHRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI0X18pLGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9qb2luX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNV9fPV9fd2VicGFja19yZXF1aXJlX18oImExNWIiKSxjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfam9pbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjVfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfam9pbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjVfXyksX2NvcmVfdXRpbHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X189X193ZWJwYWNrX3JlcXVpcmVfXygiYjFjNyIpLF9zdG9yZV9jb25zdGFudHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI3X189X193ZWJwYWNrX3JlcXVpcmVfXygiNTYwOSIpLF9jb21wb25lbnRzX29mZmljZURvY3VtZW50X21hcmtkb3duU2luZ2xlVHJhbnNmb3JtX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yOF9fPV9fd2VicGFja19yZXF1aXJlX18oImI5YmYiKSxfY29tcG9uZW50c19vZmZpY2VEb2N1bWVudF9tYXJrZG93blNpbmdsZVRyYW5zZm9ybVVTX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yOV9fPV9fd2VicGFja19yZXF1aXJlX18oIjU3NmYiKSxjbGlwYm9hcmRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMwX189X193ZWJwYWNrX3JlcXVpcmVfXygiYjMxMSIpLGNsaXBib2FyZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzBfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihjbGlwYm9hcmRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMwX18pLGxvZGFzaF91bmlxdWVJZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzFfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCI5OGRjIiksbG9kYXNoX3VuaXF1ZUlkX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMV9fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGxvZGFzaF91bmlxdWVJZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzFfXyksbG9kYXNoX2lzT2JqZWN0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMl9fPV9fd2VicGFja19yZXF1aXJlX18oIjFhOGMiKSxsb2Rhc2hfaXNPYmplY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMyX19fZGVmYXVsdD1fX3dlYnBhY2tfcmVxdWlyZV9fLm4obG9kYXNoX2lzT2JqZWN0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMl9fKSxsb2Rhc2hfaGFzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zM19fPV9fd2VicGFja19yZXF1aXJlX18oIjM4NTIiKSxsb2Rhc2hfaGFzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zM19fX2RlZmF1bHQ9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGxvZGFzaF9oYXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMzX18pLGxvZGFzaF9rZXlzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNF9fPV9fd2VicGFja19yZXF1aXJlX18oImVjNjkiKSxsb2Rhc2hfa2V5c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzRfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihsb2Rhc2hfa2V5c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzRfXyksbG9kYXNoX2Nsb25lRGVlcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzVfXz1fX3dlYnBhY2tfcmVxdWlyZV9fKCIwNjQ0IiksbG9kYXNoX2Nsb25lRGVlcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzVfX19kZWZhdWx0PV9fd2VicGFja19yZXF1aXJlX18ubihsb2Rhc2hfY2xvbmVEZWVwX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNV9fKTtfX3dlYnBhY2tfZXhwb3J0c19fLmE9e25hbWU6IkRvY3VtZW50Iixjb21wb25lbnRzOntlZGl0b3I6X193ZWJwYWNrX3JlcXVpcmVfXygiN2M5ZSIpLERhdGFUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZSgiY2h1bmstMmQwYmQ3OTkiKS50aGVuKF9fd2VicGFja19yZXF1aXJlX18uYmluZChudWxsLCIyYmM2IikpfSxFZGl0b3JTaG93OmZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UuYWxsKFtfX3dlYnBhY2tfcmVxdWlyZV9fLmUoImNodW5rLTNiODg4YTY1IiksX193ZWJwYWNrX3JlcXVpcmVfXy5lKCJjaHVuay0yMTQyMThmMCIpLF9fd2VicGFja19yZXF1aXJlX18uZSgiY2h1bmstMmQwYWY0NGUiKV0pLnRoZW4oX193ZWJwYWNrX3JlcXVpcmVfXy5iaW5kKG51bGwsIjBlMzYiKSl9fSxwcm9wczp7YXBpOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sc3dhZ2dlckluc3RhbmNlOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y29udGVudDoiPHNwYW4+SGVsbG88L3NwYW4+Iixjb250ZW50VHlwZToiKi8qIixjb2x1bW5zOltdLHJlc3BvbnNlSGVhZGVyQ29sdW1uczpbXSxyZXNwb25zZVN0YXR1c2NvbHVtbnM6W10scmVzcG9uc2VQYXJhbWV0ZXJzQ29sdW1uczpbXSxleHBhblJvd3M6ITAsbXVsdGlwQ29kZTohMSxtdWx0aXBDb2RlRGF0YXM6W10sbXVsdGlwRGF0YTp7fSxwYWdlOiExLHJlcVBhcmFtZXRlcnM6W119fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxfPV9zdG9yZV9jb25zdGFudHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI3X18uYS5nbG9iYWxUcmVlVGFibGVNb2RlbFBhcmFtcyt0aGlzLnN3YWdnZXJJbnN0YW5jZS5pZCx0PXRoaXMuc3dhZ2dlckluc3RhbmNlLnN3YWdnZXJUcmVlVGFibGVNb2RlbHM7dGhpcy4kS25pZmU0ak1vZGVscy5zZXRWYWx1ZShfLHQpLHRoaXMuaW5pdEkxOG4oKSx0aGlzLmluaXRSZXF1ZXN0UGFyYW1zKCksdGhpcy5pbml0UmVzcG9uc2VDb2RlUGFyYW1zKCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLmNvcHlBcGlBZGRyZXNzKCksZS5jb3B5QXBpTWFya2Rvd24oKSxlLmNvcHlBcGlVcmwoKX0pLDE1MDApfSxjb21wdXRlZDp7bGFuZ3VhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuZ2xvYmFscy5sYW5ndWFnZX0sc3dhZ2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5nbG9iYWxzLnN3YWdnZXJ9LHJlc3BvbnNlQ29kZURpc3BsYXlTdGF0dXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuZ2xvYmFscy5lbmFibGVSZXNwb25zZUNvZGV9fSx3YXRjaDp7bGFuZ3VhZ2U6ZnVuY3Rpb24oZSxfKXt0aGlzLmluaXRJMThuKCl9fSxtZXRob2RzOntnZXRDdXJyZW50STE4bkluc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGkxOG4ubWVzc2FnZXNbdGhpcy5sYW5ndWFnZV19LGluaXRJMThuOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRDdXJyZW50STE4bkluc3RhbmNlKCk7dGhpcy5jb2x1bW5zPWUudGFibGUuZG9jdW1lbnRSZXF1ZXN0Q29sdW1ucyx0aGlzLnJlc3BvbnNlU3RhdHVzY29sdW1ucz1lLnRhYmxlLmRvY3VtZW50UmVzcG9uc2VTdGF0dXNDb2x1bW5zLHRoaXMucmVzcG9uc2VIZWFkZXJDb2x1bW5zPWUudGFibGUuZG9jdW1lbnRSZXNwb25zZUhlYWRlckNvbHVtbnMsdGhpcy5yZXNwb25zZVBhcmFtZXRlcnNDb2x1bW5zPWUudGFibGUuZG9jdW1lbnRSZXNwb25zZUNvbHVtbnN9LGNvcHlBcGlVcmw6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLF89ImJ0bkNvcHlNZXRob2QiK3RoaXMuYXBpLmlkLHQ9dGhpcy5hcGkuc2hvd1VybCxyPW5ldyBjbGlwYm9hcmRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMwX19fZGVmYXVsdC5hKCIjIitfLHt0ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9fSk7ci5vbigic3VjY2VzcyIsKGZ1bmN0aW9uKCl7dmFyIF89ZS5nZXRDdXJyZW50STE4bkluc3RhbmNlKCkubWVzc2FnZS5jb3B5Lm1ldGhvZC5zdWNjZXNzO2UuJG1lc3NhZ2UuaW5mbyhfKX0pKSxyLm9uKCJlcnJvciIsKGZ1bmN0aW9uKF8pe3ZhciB0PWUuZ2V0Q3VycmVudEkxOG5JbnN0YW5jZSgpLm1lc3NhZ2UuY29weS5tZXRob2QuZmFpbDtlLiRtZXNzYWdlLmluZm8odCl9KSl9LGNvcHlBcGlBZGRyZXNzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxfPSJidG5Db3B5QWRkcmVzcyIrdGhpcy5hcGkuaWQsdD1uZXcgY2xpcGJvYXJkX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMF9fX2RlZmF1bHQuYSgiIyIrXyx7dGV4dDpmdW5jdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZn19KTt0Lm9uKCJzdWNjZXNzIiwoZnVuY3Rpb24oXyl7dmFyIHQ9ZS5nZXRDdXJyZW50STE4bkluc3RhbmNlKCkubWVzc2FnZS5jb3B5LnVybC5zdWNjZXNzO2UuJG1lc3NhZ2UuaW5mbyh0KX0pKSx0Lm9uKCJlcnJvciIsKGZ1bmN0aW9uKF8pe3ZhciB0PWUuZ2V0Q3VycmVudEkxOG5JbnN0YW5jZSgpLm1lc3NhZ2UuY29weS51cmwuZmFpbDtlLiRtZXNzYWdlLmluZm8odCl9KSl9LGNvcHlBcGlNYXJrZG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsXz0iYnRuQ29weU1hcmtkb3duIit0aGlzLmFwaS5pZCx0PU9iamVjdChfaWRlX3dvcmtzcGFjZV9rbmlmZTRqX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZXNtX29iamVjdFNwcmVhZDJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5hKShPYmplY3QoX2lkZV93b3Jrc3BhY2Vfa25pZmU0al9ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2VzbV9vYmplY3RTcHJlYWQyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uYSkoe30sZS5hcGkpLHt9LHtyZXFQYXJhbWV0ZXJzOmUucmVxUGFyYW1ldGVycyxtdWx0aXBDb2RlRGF0YXM6ZS5tdWx0aXBDb2RlRGF0YXMsbXVsdGlwRGF0YTplLm11bHRpcERhdGF9KSxyPW5ldyBjbGlwYm9hcmRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMwX19fZGVmYXVsdC5hKCIjIitfLHt0ZXh0OmZ1bmN0aW9uKCl7dmFyIF89ZS5nZXRDdXJyZW50STE4bkluc3RhbmNlKCk7cmV0dXJuInpoIj09PV8ubGFuZz9PYmplY3QoX2NvbXBvbmVudHNfb2ZmaWNlRG9jdW1lbnRfbWFya2Rvd25TaW5nbGVUcmFuc2Zvcm1fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI4X18uYSkodCk6InVzIj09PV8ubGFuZz9PYmplY3QoX2NvbXBvbmVudHNfb2ZmaWNlRG9jdW1lbnRfbWFya2Rvd25TaW5nbGVUcmFuc2Zvcm1VU19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjlfXy5hKSh0KTp2b2lkIDB9fSk7ci5vbigic3VjY2VzcyIsKGZ1bmN0aW9uKF8pe3ZhciB0PWUuZ2V0Q3VycmVudEkxOG5JbnN0YW5jZSgpLm1lc3NhZ2UuY29weS5kb2N1bWVudC5zdWNjZXNzO2UuJG1lc3NhZ2UuaW5mbyh0KX0pKSxyLm9uKCJlcnJvciIsKGZ1bmN0aW9uKF8pe3ZhciB0PWUuZ2V0Q3VycmVudEkxOG5JbnN0YW5jZSgpLm1lc3NhZ2UuY29weS5kb2N1bWVudC5mYWlsO2UuJG1lc3NhZ2UuaW5mbyh0KX0pKX0sZmlsdGVyQ2hpbGRyZW5zOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdLF89YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdLHQ9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7aWYoMD09PWUubGVuZ3RoKXJldHVybiBfO3ZhciByPXRoaXMsbj10P18uZmlsdGVyKChmdW5jdGlvbihfKXtyZXR1cm4hZS5pbmNsdWRlcygiIi5jb25jYXQodCwiLiIpLmNvbmNhdChfLm5hbWUpKX0pKTpfLmZpbHRlcigoZnVuY3Rpb24oXyl7cmV0dXJuIWUuaW5jbHVkZXMoXy5uYW1lKX0pKTtyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKF8pe3JldHVybiBfLmlkPWxvZGFzaF91bmlxdWVJZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzFfX19kZWZhdWx0KCkoInBhcmFtIiksXy5jaGlsZHJlbiYmKF8uY2hpbGRyZW49ci5maWx0ZXJDaGlsZHJlbnMoZSxfLmNoaWxkcmVuLF8ubmFtZSkpLF99KSl9LGluaXRSZXF1ZXN0UGFyYW1zOmZ1bmN0aW9uIGluaXRSZXF1ZXN0UGFyYW1zKCl7dmFyIF90aGlzPXRoaXMsa2V5PV9zdG9yZV9jb25zdGFudHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI3X18uYS5nbG9iYWxUcmVlVGFibGVNb2RlbFBhcmFtcyt0aGlzLnN3YWdnZXJJbnN0YW5jZS5pZCxkYXRhPVtdLHRoYXQ9dGhpcyxhcGlJbmZvPXRoaXMuYXBpO19jb3JlX3V0aWxzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fLmEuc3RyTm90QmxhbmsoYXBpSW5mby5jb250ZW50VHlwZSkmJih0aGlzLmNvbnRlbnRUeXBlPWFwaUluZm8uY29udGVudFR5cGUpLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI9PWFwaUluZm8uY29udGVudFR5cGUmJih0aGlzLmNvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTt2YXIgdG1wS2V5cz1PYmplY3Qua2V5cyhhcGlJbmZvLmlnbm9yZVBhcmFtZXRlcnN8fHt9KSxpZ25vcmVQYXJhbWV0ZXJBbGxLZXlzPVtdLHJlZz1uZXcgUmVnRXhwKCJcXFswXFxdIiwiZ20iKTtpZihudWxsIT10bXBLZXlzJiZ0bXBLZXlzLmxlbmd0aD4wJiZ0bXBLZXlzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lnbm9yZVBhcmFtZXRlckFsbEtleXMucHVzaChlKSxlLmluZGV4T2YoIlswXSIpPi0xJiZpZ25vcmVQYXJhbWV0ZXJBbGxLZXlzLnB1c2goZS5yZXBsYWNlKHJlZywiIikpfSkpLG51bGwhPWFwaUluZm8ucGFyYW1ldGVycyYmYXBpSW5mby5wYXJhbWV0ZXJzLmxlbmd0aD4wKXt2YXIgZHg9YXBpSW5mby5wYXJhbWV0ZXJzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUubmFtZS5pbmRleE9mKCJbMF0iKT4tMT8hKGlnbm9yZVBhcmFtZXRlckFsbEtleXMubGVuZ3RoPjApfHxpZ25vcmVQYXJhbWV0ZXJBbGxLZXlzLmZpbHRlcigoZnVuY3Rpb24oXyl7cmV0dXJuIWUubmFtZS5zdGFydHNXaXRoKF8pfSkpLmxlbmd0aD4wOiFpZ25vcmVQYXJhbWV0ZXJBbGxLZXlzLmluY2x1ZGVzKGUubmFtZSl9KSk7ZGF0YT1kYXRhLmNvbmNhdChkeCl9bnVsbCE9YXBpSW5mby5yZWZUcmVldGFibGVwYXJhbWV0ZXJzJiZhcGlJbmZvLnJlZlRyZWV0YWJsZXBhcmFtZXRlcnMubGVuZ3RoPjAmJmFwaUluZm8ucmVmVHJlZXRhYmxlcGFyYW1ldGVycy5mb3JFYWNoKChmdW5jdGlvbihlKXtkYXRhPWRhdGEuY29uY2F0KGUucGFyYW1zKX0pKSxudWxsIT1kYXRhJiZkYXRhLnNvcnQoKGZ1bmN0aW9uKGUsXyl7cmV0dXJuIF8ucmVxdWlyZS1lLnJlcXVpcmV9KSk7dmFyIHJlcVBhcmFtZXRlcnM9W107aWYobnVsbCE9ZGF0YSYmZGF0YS5sZW5ndGg+MCYmZGF0YS5mb3JFYWNoKChmdW5jdGlvbihwYXJhbSl7aWYoIi0xIj09cGFyYW0ucGlkKXtpZihwYXJhbS5jaGlsZHJlbj1udWxsLHBhcmFtLnNjaGVtYSl7dmFyIHNjaGVtYU5hbWU9cGFyYW0uc2NoZW1hVmFsdWU7aWYoX2NvcmVfdXRpbHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X18uYS5jaGVja1VuZGVmaW5lZChzY2hlbWFOYW1lKSYmdGhhdC4kS25pZmU0ak1vZGVscy5leGlzdHMoa2V5LHNjaGVtYU5hbWUpKXt2YXIgbW9kZWw9dGhhdC4kS25pZmU0ak1vZGVscy5nZXRCeU1vZGVsTmFtZShrZXksc2NoZW1hTmFtZSk7aWYobW9kZWw9dGhhdC5zd2FnZ2VyLmFuYWx5c2lzRGVmaW5pdGlvblJlZlRhYmxlTW9kZWwodGhhdC5zd2FnZ2VySW5zdGFuY2UuaWQsbW9kZWwpLG1vZGVsJiZtb2RlbC5wYXJhbXMpe3ZhciBjaGlsZHJlbnM9bW9kZWwucGFyYW1zLmZpbHRlcigoZnVuY3Rpb24oX3JlZil7dmFyIG5hbWU9X3JlZi5uYW1lO3JldHVybiEoaWdub3JlUGFyYW1ldGVyQWxsS2V5cy5pbmNsdWRlcyhuYW1lKXx8aWdub3JlUGFyYW1ldGVyQWxsS2V5cy5pbmNsdWRlcyhuYW1lKyJbMF0iKXx8aWdub3JlUGFyYW1ldGVyQWxsS2V5cy5pbmNsdWRlcygiIi5jb25jYXQocGFyYW0ubmFtZSwiLiIpLmNvbmNhdChuYW1lKSl8fGlnbm9yZVBhcmFtZXRlckFsbEtleXMuc29tZSgoZnVuY3Rpb24oa2V5KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXigiLmNvbmNhdChrZXksIiR8IikuY29uY2F0KGtleSwiWy5bXSkiKSkudGVzdChuYW1lKXx8ZXZhbCgiLyIra2V5KyIvZyIpLnRlc3QobmFtZSl9KSkpfSkpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIF89dGhhdC5jb3B5TmV3UGFyYW1ldGVyKGUpO2lmKF8ucGlkPXBhcmFtLmlkLF8uY2hpbGRyZW4pe3ZhciB0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoXy5jaGlsZHJlbikpLHI9aWdub3JlUGFyYW1ldGVyQWxsS2V5cy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiIuY29uY2F0KHBhcmFtLm5hbWUsIi4iKS5jb25jYXQoXy5uYW1lLCIuIikpP2UucmVwbGFjZSgiIi5jb25jYXQocGFyYW0ubmFtZSwiLiIpLmNvbmNhdChfLm5hbWUsIi4iKSwiIik6ZS5zdGFydHNXaXRoKCIiLmNvbmNhdChfLm5hbWUsIi4iKSk/ZS5yZXBsYWNlKCIiLmNvbmNhdChfLm5hbWUsIi4iKSwiIik6bnVsbH0pKS5maWx0ZXIoQm9vbGVhbik7Xy5jaGlsZHJlbj10aGF0LmZpbHRlckNoaWxkcmVucyhyLHQpfXJldHVybiBffSkpO3BhcmFtLmNoaWxkcmVuPWNoaWxkcmVucy5sZW5ndGg+MD9jaGlsZHJlbnM6bnVsbH19fXJlcVBhcmFtZXRlcnMucHVzaChwYXJhbSl9fSkpLG51bGwhPWFwaUluZm8uaW5jbHVkZVBhcmFtZXRlcnMpe3ZhciB0bXBJbmNsdWRlS2V5cz1PYmplY3Qua2V5cyhhcGlJbmZvLmluY2x1ZGVQYXJhbWV0ZXJzfHx7fSksYm9keVBhcmFtPXJlcVBhcmFtZXRlcnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4iYm9keSI9PWUuaW59KSkubGVuZ3RoO2lmKHRtcEluY2x1ZGVLZXlzLmxlbmd0aD4wJiZib2R5UGFyYW0+MCl7dmFyIGluY2x1ZGVQYXJhbWV0ZXJzPVtdLHJvb3RLZXlzPVtdO3RoaXMuZGVlcFJvb3RLZXlzKHRtcEluY2x1ZGVLZXlzLHJvb3RLZXlzKSxyZXFQYXJhbWV0ZXJzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKHJvb3RLZXlzLmluY2x1ZGVzKGUubmFtZSkpe3ZhciBfPWxvZGFzaF9jbG9uZURlZXBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM1X19fZGVmYXVsdCgpKGUpO18uY2hpbGRyZW49bnVsbCxudWxsIT1lLmNoaWxkcmVuJiZlLmNoaWxkcmVuLmxlbmd0aD4wJiYoXy5jaGlsZHJlbj1uZXcgQXJyYXksX3RoaXMuZGVlcEluY2x1ZGVQYXJhbShfLm5hbWUsXyxlLmNoaWxkcmVuLHRtcEluY2x1ZGVLZXlzLHJvb3RLZXlzKSksaW5jbHVkZVBhcmFtZXRlcnMucHVzaChfKX1lbHNlIHRtcEluY2x1ZGVLZXlzLmluY2x1ZGVzKGUubmFtZSkmJigoXz1sb2Rhc2hfY2xvbmVEZWVwX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNV9fX2RlZmF1bHQoKShlKSkuY2hpbGRyZW49bnVsbCxudWxsIT1lLmNoaWxkcmVuJiZlLmNoaWxkcmVuLmxlbmd0aD4wJiYoXy5jaGlsZHJlbj1uZXcgQXJyYXksX3RoaXMuZGVlcEluY2x1ZGVQYXJhbShfLm5hbWUsXyxlLmNoaWxkcmVuLHRtcEluY2x1ZGVLZXlzLHJvb3RLZXlzKSksaW5jbHVkZVBhcmFtZXRlcnMucHVzaChfKSl9KSksdGhhdC5yZXFQYXJhbWV0ZXJzPWluY2x1ZGVQYXJhbWV0ZXJzfWVsc2UgdGhhdC5yZXFQYXJhbWV0ZXJzPXJlcVBhcmFtZXRlcnN9ZWxzZSB0aGF0LnJlcVBhcmFtZXRlcnM9cmVxUGFyYW1ldGVyc30sZGVlcFJvb3RLZXlzOmZ1bmN0aW9uKGUsXyl7dmFyIHQ9W107ZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcj1lLnN1YnN0cmluZygwLGUubGFzdEluZGV4T2YoIi4iKSk7ci5pbmRleE9mKCIuIik+LTEmJnQucHVzaChyKSxfLmluY2x1ZGVzKHIpfHxfLnB1c2gocil9KSksdC5sZW5ndGg+MCYmdGhpcy5kZWVwUm9vdEtleXModCxfKX0sZGVlcEluY2x1ZGVQYXJhbTpmdW5jdGlvbihlLF8sdCxyLG4pe3ZhciBhPXRoaXM7bnVsbCE9dCYmdC5sZW5ndGg+MCYmdC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcz1lKyIuIit0Lm5hbWU7aWYobi5pbmNsdWRlcyhzKSl7dmFyIG89bG9kYXNoX2Nsb25lRGVlcF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzVfX19kZWZhdWx0KCkodCk7by5jaGlsZHJlbj1udWxsLF8uY2hpbGRyZW4ucHVzaChvKSxfY29yZV91dGlsc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjZfXy5hLmFyck5vdEVtcHR5KHQuY2hpbGRyZW4pJiYoby5jaGlsZHJlbj1uZXcgQXJyYXksYS5kZWVwSW5jbHVkZVBhcmFtKHMsbyx0LmNoaWxkcmVuLHIsbikpfWVsc2Ugci5pbmNsdWRlcyhzKSYmXy5jaGlsZHJlbi5wdXNoKHQpfSkpfSxjb3B5TmV3UGFyYW1ldGVyOmZ1bmN0aW9uKGUpe3ZhciBfPU9iamVjdC5hc3NpZ24oe30sZSk7cmV0dXJuIF8uaWQ9bG9kYXNoX3VuaXF1ZUlkX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMV9fX2RlZmF1bHQoKSgicGFyYW0iKSxmdW5jdGlvbiBlKF8pe3JldHVybiBfP18ubWFwKChmdW5jdGlvbihfKXtfLmlkPWxvZGFzaF91bmlxdWVJZF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzFfX19kZWZhdWx0KCkoInBhcmFtIiksZShfLmNoaWxkcmVuKX0pKTpudWxsfShfLmNoaWxkcmVuKSxffSxkZWVwVHJlZVRhYmxlU2NoZW1hTW9kZWw6ZnVuY3Rpb24oZSxfLHQpe3ZhciByPXRoaXM7aWYoX2NvcmVfdXRpbHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X18uYS5jaGVja1VuZGVmaW5lZChlLnNjaGVtYVZhbHVlKSl7dmFyIG49X1tlLnNjaGVtYVZhbHVlXTtfY29yZV91dGlsc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjZfXy5hLmNoZWNrVW5kZWZpbmVkKG4pJiYodC5wYXJlbnRUeXBlcy5wdXNoKGUuc2NoZW1hVmFsdWUpLF9jb3JlX3V0aWxzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fLmEuYXJyTm90RW1wdHkobi5wYXJhbXMpJiZuLnBhcmFtcy5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgYT17Y2hpbGRyZW5UeXBlczpuLmNoaWxkcmVuVHlwZXMsZGVmOm4uZGVmLGRlc2NyaXB0aW9uOm4uZGVzY3JpcHRpb24sZW51bTpuLmVudW0sZXhhbXBsZTpuLmV4YW1wbGUsaWQ6bi5pZCxpZ25vcmVGaWx0ZXJOYW1lOm4uaWdub3JlRmlsdGVyTmFtZSxpbjpuLmluLGxldmVsOm4ubGV2ZWwsbmFtZTpuLm5hbWUscGFyZW50VHlwZXM6bi5wYXJlbnRUeXBlcyxwaWQ6bi5waWQscmVhZE9ubHk6bi5yZWFkT25seSxyZXF1aXJlOm4ucmVxdWlyZSxzY2hlbWE6bi5zY2hlbWEsc2NoZW1hVmFsdWU6bi5zY2hlbWFWYWx1ZSxzaG93Om4uc2hvdyx0eHRWYWx1ZTpuLnR4dFZhbHVlLHR5cGU6bi50eXBlLHZhbGlkYXRlSW5zdGFuY2U6bi52YWxpZGF0ZUluc3RhbmNlLHZhbGlkYXRlU3RhdHVzOm4udmFsaWRhdGVTdGF0dXMsdmFsdWU6bi52YWx1ZX07YS5waWQ9ZS5pZCxlLmNoaWxkcmVuLnB1c2goYSksYS5zY2hlbWEmJi0xPT10LnBhcmVudFR5cGVzLmluZGV4T2YoYS5zY2hlbWFWYWx1ZSkmJihhLmNoaWxkcmVuPVtdLHIuZGVlcFRyZWVUYWJsZVNjaGVtYU1vZGVsKGEsXyx0KSwwPT1hLmNoaWxkcmVuLmxlbmd0aCYmKGEuY2hpbGRyZW49bnVsbCkpfSkpKX19LGZpbmRNb2RlbENoaWxkcmVuOmZ1bmN0aW9uKGUsXyl7dmFyIHQ9dGhpcztudWxsIT1fJiZudWxsIT1fJiZfLmxlbmd0aD4wJiZfLmZvckVhY2goKGZ1bmN0aW9uKHIpe3IucGlkPT1lLmlkJiYoci5jaGlsZHJlbj1bXSx0LmZpbmRNb2RlbENoaWxkcmVuKHIsXyksMD09ci5jaGlsZHJlbi5sZW5ndGgmJihyLmNoaWxkcmVuPW51bGwpLGUuY2hpbGRyZW4ucHVzaChyKSl9KSl9LGluaXRSZXNwb25zZUNvZGVQYXJhbXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLF89X3N0b3JlX2NvbnN0YW50c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjdfXy5hLmdsb2JhbFRyZWVUYWJsZU1vZGVsUGFyYW1zK3RoaXMuc3dhZ2dlckluc3RhbmNlLmlkO2UubXVsdGlwQ29kZT10aGlzLmFwaS5tdWx0aXBhcnRSZXNwb25zZVNjaGVtYSxlLm11bHRpcENvZGVEYXRhcz1bXSxlLm11bHRpcERhdGE9e307dmFyIHQ9dGhpcy5hcGkucmVzcG9uc2VDb2RlcztpZihudWxsIT10JiZudWxsIT10KXtmb3IodmFyIHI9ZnVuY3Rpb24oKXt2YXIgcj10W25dO2lmKG51bGwhPXIuc2NoZW1hJiZudWxsIT1yLnNjaGVtYSl7YT1bXSxudWxsIT1yLnJlc3BvbnNlUGFyYW1ldGVycyYmci5yZXNwb25zZVBhcmFtZXRlcnMubGVuZ3RoPjAmJihhPWEuY29uY2F0KHIucmVzcG9uc2VQYXJhbWV0ZXJzKSksbnVsbCE9ci5yZXNwb25zZVRyZWV0YWJsZVJlZlBhcmFtZXRlcnMmJnIucmVzcG9uc2VUcmVldGFibGVSZWZQYXJhbWV0ZXJzLmxlbmd0aD4wJiZyLnJlc3BvbnNlVHJlZXRhYmxlUmVmUGFyYW1ldGVycy5mb3JFYWNoKChmdW5jdGlvbihlKXthPWEuY29uY2F0KGUucGFyYW1zKX0pKTt2YXIgcz1bXTtudWxsIT1hJiZhLmxlbmd0aD4wJiZhLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCItMSI9PXQucGlkKXtpZih0LmNoaWxkcmVuPVtdLHQuc2NoZW1hKXt2YXIgcj10LnNjaGVtYVZhbHVlO2lmKF9jb3JlX3V0aWxzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fLmEuY2hlY2tVbmRlZmluZWQocikpaWYoZS4kS25pZmU0ak1vZGVscy5leGlzdHMoXyxyKSl7dmFyIG49ZS4kS25pZmU0ak1vZGVscy5nZXRCeU1vZGVsTmFtZShfLHIpOyhuPWUuc3dhZ2dlci5hbmFseXNpc0RlZmluaXRpb25SZWZUYWJsZU1vZGVsKGUuc3dhZ2dlckluc3RhbmNlLmlkLG4pKSYmbi5wYXJhbXMmJih0LmNoaWxkcmVuPW4ucGFyYW1zLm1hcCgoZnVuY3Rpb24oXyl7dmFyIHI9ZS5jb3B5TmV3UGFyYW1ldGVyKF8pO3JldHVybiByLnBpZD10LmlkLHJ9KSkpfWVsc2V7dmFyIG89YS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnBpZD09dC5pZH0pKTtfY29yZV91dGlsc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjZfXy5hLmNoZWNrVW5kZWZpbmVkKG8pJiYodC5jaGlsZHJlbj1vLm1hcCgoZnVuY3Rpb24oXyl7dmFyIHI9ZS5jb3B5TmV3UGFyYW1ldGVyKF8pO3JldHVybiByLnBpZD10LmlkLHJ9KSkpfX0wPT10LmNoaWxkcmVuLmxlbmd0aCYmKHQuY2hpbGRyZW49bnVsbCkscy5wdXNoKHQpfX0pKSxpPU9iamVjdChfaWRlX3dvcmtzcGFjZV9rbmlmZTRqX25vZGVfbW9kdWxlc19iYWJlbF9ydW50aW1lX2hlbHBlcnNfZXNtX29iamVjdFNwcmVhZDJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5hKShPYmplY3QoX2lkZV93b3Jrc3BhY2Vfa25pZmU0al9ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2VzbV9vYmplY3RTcHJlYWQyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uYSkoe30scikse30se2RhdGE6c30pLGUubXVsdGlwQ29kZXx8KGUubXVsdGlwRGF0YT1pKSxlLm11bHRpcENvZGVEYXRhcy5wdXNoKGkpfWVsc2UgMD09biYmKGUubXVsdGlwRGF0YT1yKX0sbj0wO248dC5sZW5ndGg7bisrKXt2YXIgYTtyKCl9dmFyIHM9T2JqZWN0LmtleXMoZS5tdWx0aXBEYXRhKTtpZihfY29yZV91dGlsc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjZfXy5hLmFyck5vdEVtcHR5KHQpJiYhX2NvcmVfdXRpbHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X18uYS5hcnJOb3RFbXB0eShzKSl7dmFyIG89dFswXTtpZihfY29yZV91dGlsc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjZfXy5hLnN0ck5vdEJsYW5rKG8uc2NoZW1hVGl0bGUpKXt2YXIgaT1PYmplY3QoX2lkZV93b3Jrc3BhY2Vfa25pZmU0al9ub2RlX21vZHVsZXNfYmFiZWxfcnVudGltZV9oZWxwZXJzX2VzbV9vYmplY3RTcHJlYWQyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uYSkoT2JqZWN0KF9pZGVfd29ya3NwYWNlX2tuaWZlNGpfbm9kZV9tb2R1bGVzX2JhYmVsX3J1bnRpbWVfaGVscGVyc19lc21fb2JqZWN0U3ByZWFkMl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLmEpKHt9LG8pLHt9LHtkYXRhOltdfSk7ZS5tdWx0aXBEYXRhPWl9fX19LHNob3dSZXNwb25zZUVkaXRGaWVsZERlc2NyaXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuYXBpLm11bHRpcGFydFJlc3BvbnNlU2NoZW1hKXt2YXIgXz10aGlzLm11bHRpcENvZGVEYXRhc1swXSx0PSJrbmlmZTRqRG9jdW1lbnRTaG93RWRpdG9yIit0aGlzLmFwaS5pZCtfLmNvZGU7dGhpcy5zaG93RWRpdG9yRmllbGRBbnlXYXkodCl9ZWxzZSB0PSJrbmlmZTRqRG9jdW1lbnRTaG93RWRpdG9yIit0aGlzLmFwaS5pZCx0aGlzLnNob3dFZGl0b3JGaWVsZEFueVdheSh0KX0sbXVsdGlwYXJ0VGFiQ29kZUNoYW5nZXM6ZnVuY3Rpb24oZSl7dmFyIF89dGhpcztzZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciB0PSJrbmlmZTRqRG9jdW1lbnRTaG93RWRpdG9yIitfLmFwaS5pZCtlO18uc2hvd0VkaXRvckZpZWxkQW55V2F5KHQpfSksMWUzKX0sc2hvd0VkaXRvckZpZWxkQW55V2F5OmZ1bmN0aW9uKGUpe3ZhciBfPXRoaXMuc3dhZ2dlckluc3RhbmNlLHQ9dGhpcy5hcGkuZ2V0SHR0cFN1Y2Nlc3NDb2RlT2JqZWN0KCkscj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKSxuPVtdLGE9ci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhY2VfdGV4dC1sYXllciIpLHM9ci5xdWVyeVNlbGVjdG9yKCIuYWNlX3ByaW50LW1hcmdpbiIpLnN0eWxlLmxlZnQ7aWYoYS5sZW5ndGg+MClmb3IodmFyIG89YVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhY2VfbGluZSIpLGk9MDtpPG8ubGVuZ3RoO2krKyl7dmFyIGM9b1tpXSx1PWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWNlX3ZhcmlhYmxlIiksbD1udWxsO2lmKF9jb3JlX3V0aWxzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fLmEuYXJyTm90RW1wdHkodSkpe2w9X2NvcmVfdXRpbHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X18uYS50b1N0cmluZyh1WzBdLmlubmVySFRNTCwiIikucmVwbGFjZSgvXiIoLiopIiQvZywiJDEiKTt2YXIgcD1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImtuaWZlNGotZGVidWctZWRpdG9yLWZpZWxkLWRlc2NyaXB0aW9uIik7aWYoIV9jb3JlX3V0aWxzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fLmEuYXJyTm90RW1wdHkocCkmJm51bGwhPXQpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtkLmNsYXNzTmFtZT0ia25pZmU0ai1kZWJ1Zy1lZGl0b3ItZmllbGQtZGVzY3JpcHRpb24iLGQuaW5uZXJIVE1MPXQucmVzcG9uc2VEZXNjcmlwdGlvbkZpbmQobixsLF8pLGQuc3R5bGUubGVmdD1zLGMuYXBwZW5kQ2hpbGQoZCl9fXZhciBtPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWNlX3BhcmVuIik7aWYoX2NvcmVfdXRpbHNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X18uYS5hcnJOb3RFbXB0eShtKSl7Zm9yKHZhciBmPVtdLGg9MDtoPG0ubGVuZ3RoO2grKylmLnB1c2gobVtoXS5pbm5lckhUTUwpO3N3aXRjaChmLmpvaW4oIiIpKXtjYXNlIlsiOmNhc2UieyI6bi5wdXNoKGx8fDApO2JyZWFrO2Nhc2UifSI6Y2FzZSJdIjpuLnBvcCgpfX19fX19fSxlZWJhOmZ1bmN0aW9uKGUsXyx0KXsidXNlIHN0cmljdCI7dC5yKF8pLHQoImE0ZDMiKSx0KCJlMDFhIik7dmFyIHI9dCgiYmQwOCIpLmEsbj0odCgiZjM3NyIpLHQoIjI4NzciKSksYT1PYmplY3Qobi5hKShyLChmdW5jdGlvbigpe3ZhciBlPXRoaXMsXz1lLl9zZWxmLl9jO3JldHVybiBfKCJkaXYiLHtzdGF0aWNDbGFzczoiZG9jdW1lbnQifSxbXygiYS1yb3ciLFtfKCJhLXJvdyIse3N0YXRpY0NsYXNzOiJrbmlmZTRqLWFwaS10aXRsZSJ9LFtfKCJhLWNvbCIse2F0dHJzOntzcGFuOjE4fX0sW2UuYXBpLmRlcHJlY2F0ZWQ/Xygic3BhbiIse3N0YXRpY0NsYXNzOiJrbmlmZTRqLW1lbnUtYXBpLWRlcHJlY2F0ZWQifSxbZS5fdigiICIrZS5fcyhlLmFwaS5zdW1tYXJ5KSsiICIpXSk6Xygic3BhbiIsW2UuX3YoIiAiK2UuX3MoZS5hcGkuc3VtbWFyeSkrIiAiKV0pXSksXygiYS1jb2wiLHtzdGF0aWNDbGFzczoia25pZmU0ai1hcGktY29weS1hZGRyZXNzIixhdHRyczp7c3BhbjoyLGlkOiJidG5Db3B5TWV0aG9kIitlLmFwaS5pZH0sZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKGUuJHQoImRvYy5jb3B5TWV0aG9kIikpfX0sW2UuX3YoIiDlpI3liLbmjqXlj6MiKV0pLF8oImEtY29sIix7c3RhdGljQ2xhc3M6ImtuaWZlNGotYXBpLWNvcHktYWRkcmVzcyIsYXR0cnM6e3NwYW46MixpZDoiYnRuQ29weU1hcmtkb3duIitlLmFwaS5pZH0sZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKGUuJHQoImRvYy5jb3B5IikpfX0sW2UuX3YoIuWkjeWItuaWh+ahoyAiKV0pLF8oImEtY29sIix7c3RhdGljQ2xhc3M6ImtuaWZlNGotYXBpLWNvcHktYWRkcmVzcyIsYXR0cnM6e3NwYW46MixpZDoiYnRuQ29weUFkZHJlc3MiK2UuYXBpLmlkfSxkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3MoZS4kdCgiZG9jLmNvcHlIYXNoIikpfX0sW2UuX3YoIiDlpI3liLblnLDlnYAiKV0pXSwxKSxfKCJhLXJvdyIse2NsYXNzOiJrbmlmZTRqLWFwaS0iK2UuYXBpLm1ldGhvZFR5cGUudG9Mb3dlckNhc2UoKX0sW18oImRpdiIse3N0YXRpY0NsYXNzOiJrbmlmZTRqLWFwaS1zdW1tYXJ5In0sW18oInNwYW4iLHtzdGF0aWNDbGFzczoia25pZmU0ai1hcGktc3VtbWFyeS1tZXRob2QifSxbZS5hcGkuc2VjdXJpdHlGbGFnP18oImEtaWNvbiIse3N0YXRpY1N0eWxlOnsiZm9udC1zaXplIjoiMTZweCJ9LGF0dHJzOnt0eXBlOiJ1bmxvY2sifX0pOmUuX2UoKSxlLl92KCIgIitlLl9zKGUuYXBpLm1ldGhvZFR5cGUpKyIgIildLDEpLF8oInNwYW4iLHtzdGF0aWNDbGFzczoia25pZmU0ai1hcGktc3VtbWFyeS1wYXRoIn0sW2UuX3YoZS5fcyhlLmFwaS5zaG93VXJsKSldKV0pXSksXygiYS1yb3ciLHtzdGF0aWNDbGFzczoia25pZmU0ai1hcGktcm93In0sW18oImEtY29sIix7YXR0cnM6e3NwYW46MTJ9fSxbXygiYS1yb3ciLFtfKCJhLWNvbCIse3N0YXRpY0NsYXNzOiJhcGktYmFzaWMtdGl0bGUiLGF0dHJzOntzcGFuOjZ9LGRvbVByb3BzOntpbm5lckhUTUw6ZS5fcyhlLiR0KCJkb2MucHJvZHVjZXMiKSl9fSxbZS5fdigi6K+35rGC5pWw5o2u57G75Z6LIildKSxlLl92KCIgIitlLl9zKGUuY29udGVudFR5cGUpKyIgIildLDEpXSwxKSxfKCJhLWNvbCIse2F0dHJzOntzcGFuOjEyfX0sW18oImEtcm93IixbXygiYS1jb2wiLHtzdGF0aWNDbGFzczoiYXBpLWJhc2ljLXRpdGxlIixhdHRyczp7c3Bhbjo2fSxkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3MoZS4kdCgiZG9jLmNvbnN1bWVzIikpfX0sW2UuX3YoIuWTjeW6lOaVsOaNruexu+WeiyIpXSksZS5fdigiICIrZS5fcyhlLmFwaS5wcm9kdWNlcykrIiAiKV0sMSldLDEpXSwxKV0sMSksZS5hcGkuYXV0aG9yP18oImRpdiIsW18oImRpdiIse3N0YXRpY0NsYXNzOiJhcGktdGl0bGUiLGRvbVByb3BzOntpbm5lckhUTUw6ZS5fcyhlLiR0KCJkb2MuYXV0aG9yIikpfX0sW2UuX3YoIiDlvIDlj5HogIUgIildKSxlLmFwaS5hdXRob3I/XygiZGl2Iix7c3RhdGljQ2xhc3M6ImFwaS1ib2R5LWRlc2MiLGRvbVByb3BzOntpbm5lckhUTUw6ZS5fcyhlLmFwaS5hdXRob3IpfX0pOmUuX2UoKV0pOmUuX2UoKSxlLmFwaS5kZXNjcmlwdGlvbj9fKCJkaXYiLFtfKCJkaXYiLHtzdGF0aWNDbGFzczoiYXBpLXRpdGxlIixkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3MoZS4kdCgiZG9jLmRlcyIpKX19LFtlLl92KCIg5o6l5Y+j5o+P6L+wICIpXSksZS5hcGkuZGVzY3JpcHRpb24/XygiZGl2Iix7c3RhdGljQ2xhc3M6ImFwaS1ib2R5LWRlc2MiLGRvbVByb3BzOntpbm5lckhUTUw6ZS5fcyhlLmFwaS5kZXNjcmlwdGlvbil9fSk6ZS5fZSgpXSk6ZS5fZSgpLGUuYXBpLnJlcXVlc3RWYWx1ZT9fKCJkaXYiLFtfKCJkaXYiLHtzdGF0aWNDbGFzczoiYXBpLXRpdGxlIixkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3MoZS4kdCgiZG9jLnJlcXVlc3RFeGFtcGxlIikpfX0sW2UuX3YoIiDor7fmsYLnpLrkvosgIildKSxfKCJlZGl0b3Itc2hvdyIse2F0dHJzOnt2YWx1ZTplLmFwaS5yZXF1ZXN0VmFsdWUseG1sTW9kZTplLmFwaS54bWxSZXF1ZXN0fX0pXSwxKTplLl9lKCksXygiZGl2Iix7c3RhdGljQ2xhc3M6ImFwaS10aXRsZSIsZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKGUuJHQoImRvYy5wYXJhbXMiKSl9fSxbZS5fdigiIOivt+axguWPguaVsCAiKV0pLF8oImEtdGFibGUiLHthdHRyczp7ZGVmYXVsdEV4cGFuZEFsbFJvd3M6ZS5leHBhblJvd3MsY29sdW1uczplLmNvbHVtbnMsZGF0YVNvdXJjZTplLnJlcVBhcmFtZXRlcnMscm93S2V5OiJpZCIsc2l6ZToic21hbGwiLHBhZ2luYXRpb246ZS5wYWdlfSxzY29wZWRTbG90czplLl91KFt7a2V5OiJkZXNjcmlwdGlvblZhbHVlVGVtcGxhdGUiLGZuOmZ1bmN0aW9uKHQscil7cmV0dXJuW18oInNwYW4iLHtkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3ModCl9fSksci5leGFtcGxlP18oInNwYW4iLFtlLl92KCIsIiksXygic3BhbiIse2RvbVByb3BzOntpbm5lckhUTUw6ZS5fcyhlLiR0KCJkb2MuZXhhbXBsZSIpKX19KSxlLl92KCIoIitlLl9zKHIuZXhhbXBsZSkrIikiKV0pOmUuX2UoKV19fSx7a2V5OiJyZXF1aXJlVGVtcGxhdGUiLGZuOmZ1bmN0aW9uKHQpe3JldHVyblt0P18oInNwYW4iLHtzdGF0aWNTdHlsZTp7Y29sb3I6InJlZCJ9fSxbZS5fdihlLl9zKHQudG9Mb2NhbGVTdHJpbmcoKSkpXSk6Xygic3BhbiIsW2UuX3YoZS5fcyh0LnRvTG9jYWxlU3RyaW5nKCkpKV0pXX19LHtrZXk6InR5cGVUZW1wbGF0ZSIsZm46ZnVuY3Rpb24odCl7cmV0dXJuW18oInNwYW4iLHtjbGFzczoia25pZmU0ai1yZXF1ZXN0LSIrdH0sW2UuX3YoZS5fcyh0KSldKV19fSx7a2V5OiJkYXRhdHlwZVRlbXBsYXRlIixmbjpmdW5jdGlvbihlLHQpe3JldHVybltfKCJkYXRhLXR5cGUiLHthdHRyczp7dGV4dDplLHJlY29yZDp0fX0pXX19XSl9KSxlLnJlc3BvbnNlQ29kZURpc3BsYXlTdGF0dXM/XygiZGl2IixbXygiZGl2Iix7c3RhdGljQ2xhc3M6ImFwaS10aXRsZSIsZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKGUuJHQoImRvYy5yZXNwb25zZSIpKX19LFtlLl92KCIg5ZON5bqU54q25oCBICIpXSksXygiYS10YWJsZSIse2F0dHJzOntkZWZhdWx0RXhwYW5kQWxsUm93czplLmV4cGFuUm93cyxjb2x1bW5zOmUucmVzcG9uc2VTdGF0dXNjb2x1bW5zLGRhdGFTb3VyY2U6ZS5hcGkucmVzcG9uc2VDb2Rlcyxyb3dLZXk6ImNvZGUiLHNpemU6InNtYWxsIixwYWdpbmF0aW9uOmUucGFnZX0sc2NvcGVkU2xvdHM6ZS5fdShbe2tleToiZGVzY3JpcHRpb25UZW1wbGF0ZSIsZm46ZnVuY3Rpb24odCl7cmV0dXJuW18oImRpdiIse2RvbVByb3BzOntpbm5lckhUTUw6ZS5fcyh0KX19KV19fSx7a2V5OiJzY2hlbWFUZW1wbGF0ZSIsZm46ZnVuY3Rpb24odCxyKXtyZXR1cm5bbnVsbCE9dD9fKCJzcGFuIix7ZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKHQpfX0pOm51bGwhPXIuc2NoZW1hVGl0bGU/Xygic3BhbiIse2RvbVByb3BzOntpbm5lckhUTUw6ZS5fcyhyLnNjaGVtYVRpdGxlKX19KTplLl9lKCldfX1dLG51bGwsITEsMzk0NzI4Njc3Myl9KV0sMSk6ZS5fZSgpLGUuYXBpLm11bHRpcGFydFJlc3BvbnNlU2NoZW1hP18oImRpdiIsW18oImEtdGFicyIse29uOntjaGFuZ2U6ZS5tdWx0aXBhcnRUYWJDb2RlQ2hhbmdlc319LGUuX2woZS5tdWx0aXBDb2RlRGF0YXMsKGZ1bmN0aW9uKHQpe3JldHVybiBfKCJhLXRhYi1wYW5lIix7a2V5OnQuY29kZSxhdHRyczp7dGFiOnQuY29kZX19LFt0LnJlc3BvbnNlSGVhZGVyUGFyYW1ldGVycz9fKCJkaXYiLFtfKCJkaXYiLHtzdGF0aWNDbGFzczoiYXBpLXRpdGxlIixkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3MoZS4kdCgiZG9jLnJlc3BvbnNlSGVhZGVyUGFyYW1zIikpfX0sW2UuX3YoIiDlk43lupRIZWFkZXIgIildKSxfKCJhLXRhYmxlIix7YXR0cnM6e2RlZmF1bHRFeHBhbmRBbGxSb3dzOmUuZXhwYW5Sb3dzLGNvbHVtbnM6ZS5yZXNwb25zZUhlYWRlckNvbHVtbnMsZGF0YVNvdXJjZTp0LnJlc3BvbnNlSGVhZGVyUGFyYW1ldGVycyxyb3dLZXk6ImlkIixzaXplOiJzbWFsbCIscGFnaW5hdGlvbjplLnBhZ2V9fSldLDEpOmUuX2UoKSxfKCJkaXYiLHtzdGF0aWNDbGFzczoiYXBpLXRpdGxlIixkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3MoZS4kdCgiZG9jLnJlc3BvbnNlUGFyYW1zIikpfX0sW2UuX3YoIiDlk43lupTlj4LmlbAgIildKSxfKCJhLXRhYmxlIix7YXR0cnM6e2RlZmF1bHRFeHBhbmRBbGxSb3dzOmUuZXhwYW5Sb3dzLGNvbHVtbnM6ZS5yZXNwb25zZVBhcmFtZXRlcnNDb2x1bW5zLGRhdGFTb3VyY2U6dC5kYXRhLHJvd0tleToiaWQiLHNpemU6InNtYWxsIixwYWdpbmF0aW9uOmUucGFnZX0sc2NvcGVkU2xvdHM6ZS5fdShbe2tleToiZGVzY3JpcHRpb25UZW1wbGF0ZSIsZm46ZnVuY3Rpb24odCl7cmV0dXJuW18oInNwYW4iLHtkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3ModCl9fSldfX1dLG51bGwsITApfSksXygiZGl2Iix7c3RhdGljQ2xhc3M6ImFwaS10aXRsZSIsZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKGUuJHQoImRvYy5yZXNwb25zZUV4YW1wbGUiKSl9fSxbZS5fdigiIOWTjeW6lOekuuS+iyAiKV0pLF8oImEtcm93Iix7YXR0cnM6e2lkOiJrbmlmZTRqRG9jdW1lbnRTaG93RWRpdG9yIitlLmFwaS5pZCt0LmNvZGV9fSxbXygiZWRpdG9yLXNob3ciLHthdHRyczp7dmFsdWU6dC5yZXNwb25zZUJhc2ljVHlwZT90LnJlc3BvbnNlVGV4dDp0LnJlc3BvbnNlVmFsdWV9LG9uOntzaG93RGVzY3JpcHRpb246ZS5zaG93UmVzcG9uc2VFZGl0RmllbGREZXNjcmlwdGlvbn19KV0sMSldLDEpfSkpLDEpXSwxKTpfKCJkaXYiLFtlLmFwaS5yZXNwb25zZUhlYWRlclBhcmFtZXRlcnM/XygiZGl2IixbXygiZGl2Iix7c3RhdGljQ2xhc3M6ImFwaS10aXRsZSIsZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKGUuJHQoImRvYy5yZXNwb25zZUhlYWRlclBhcmFtcyIpKX19LFtlLl92KCIg5ZON5bqUSGVhZGVyICIpXSksXygiYS10YWJsZSIse2F0dHJzOntkZWZhdWx0RXhwYW5kQWxsUm93czplLmV4cGFuUm93cyxjb2x1bW5zOmUucmVzcG9uc2VIZWFkZXJDb2x1bW5zLGRhdGFTb3VyY2U6ZS5hcGkucmVzcG9uc2VIZWFkZXJQYXJhbWV0ZXJzLHJvd0tleToiaWQiLHNpemU6InNtYWxsIixwYWdpbmF0aW9uOmUucGFnZX19KV0sMSk6ZS5fZSgpLF8oImRpdiIse3N0YXRpY0NsYXNzOiJhcGktdGl0bGUiLGRvbVByb3BzOntpbm5lckhUTUw6ZS5fcyhlLiR0KCJkb2MucmVzcG9uc2VQYXJhbXMiKSl9fSxbZS5fdigiIOWTjeW6lOWPguaVsCAiKV0pLF8oImEtdGFibGUiLHthdHRyczp7ZGVmYXVsdEV4cGFuZEFsbFJvd3M6ZS5leHBhblJvd3MsY29sdW1uczplLnJlc3BvbnNlUGFyYW1ldGVyc0NvbHVtbnMsZGF0YVNvdXJjZTplLm11bHRpcERhdGEuZGF0YSxyb3dLZXk6ImlkIixzaXplOiJzbWFsbCIscGFnaW5hdGlvbjplLnBhZ2V9LHNjb3BlZFNsb3RzOmUuX3UoW3trZXk6ImRlc2NyaXB0aW9uVGVtcGxhdGUiLGZuOmZ1bmN0aW9uKHQpe3JldHVybltfKCJzcGFuIix7ZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKHQpfX0pXX19XSl9KSxfKCJkaXYiLHtzdGF0aWNDbGFzczoiYXBpLXRpdGxlIixkb21Qcm9wczp7aW5uZXJIVE1MOmUuX3MoZS4kdCgiZG9jLnJlc3BvbnNlRXhhbXBsZSIpKX19LFtlLl92KCIg5ZON5bqU56S65L6LICIpXSksXygiYS1yb3ciLHthdHRyczp7aWQ6ImtuaWZlNGpEb2N1bWVudFNob3dFZGl0b3IiK2UuYXBpLmlkfX0sW18oImVkaXRvci1zaG93Iix7YXR0cnM6e3ZhbHVlOmUubXVsdGlwRGF0YS5yZXNwb25zZUJhc2ljVHlwZT9lLm11bHRpcERhdGEucmVzcG9uc2VUZXh0OmUubXVsdGlwRGF0YS5yZXNwb25zZVZhbHVlfSxvbjp7c2hvd0Rlc2NyaXB0aW9uOmUuc2hvd1Jlc3BvbnNlRWRpdEZpZWxkRGVzY3JpcHRpb259fSldLDEpXSwxKV0sMSl9KSxbXSwhMSxudWxsLCIzZTFlYzk5NCIsbnVsbCk7Xy5kZWZhdWx0PWEuZXhwb3J0c30sZjM3NzpmdW5jdGlvbihlLF8sdCl7InVzZSBzdHJpY3QiO3QoIjVhNGYiKX19XSk7")))
if err != nil {
panic(err)
}
err = f.Close()
if err != nil {
panic(err)
}
}