3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ · data · qwer?polyfills-es5.js?6?5
{
"qwer?polyfills-es5.js?6?5": "base64:b24odCl7dmFyIGUsbixyLG8sdT10aGlzO3JldHVybiBmJiYobj1uZXcgUmVnRXhwKCJeIit1LnNvdXJjZSsiJCg/IVxccykiLGkuY2FsbCh1KSkpLHMmJihlPXUubGFzdEluZGV4KSxyPWEuY2FsbCh1LHQpLHMmJnImJih1Lmxhc3RJbmRleD11Lmdsb2JhbD9yLmluZGV4K3JbMF0ubGVuZ3RoOmUpLGYmJnImJnIubGVuZ3RoPjEmJmMuY2FsbChyWzBdLG4sKGZ1bmN0aW9uKCl7Zm9yKG89MTtvPGFyZ3VtZW50cy5sZW5ndGgtMjtvKyspdm9pZCAwPT09YXJndW1lbnRzW29dJiYocltvXT12b2lkIDApfSkpLHJ9KSx0LmV4cG9ydHM9dX0sbDJkSzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgiZm9udGNvbG9yIil9LHtmb250Y29sb3I6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcywiZm9udCIsImNvbG9yIix0KX19KX0sbEVvdTpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJ0b1N0cmluZ1RhZyIpfSxsTXE1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iiksbz0vI3xcLnByb3RvdHlwZVwuLyxpPWZ1bmN0aW9uKHQsZSl7dmFyIG49Y1thKHQpXTtyZXR1cm4gbj09c3x8biE9dSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBlP3IoZSk6ISFlKX0sYT1pLm5vcm1hbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpLnJlcGxhY2UobywiLiIpLnRvTG93ZXJDYXNlKCl9LGM9aS5kYXRhPXt9LHU9aS5OQVRJVkU9Ik4iLHM9aS5QT0xZRklMTD0iUCI7dC5leHBvcnRzPWl9LGxzODI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1vLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYT1vLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGM9by50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUodCxlLG4scil7dmFyIG89T2JqZWN0LmNyZWF0ZSgoZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBkP2U6ZCkucHJvdG90eXBlKSxpPW5ldyBUKHJ8fFtdKTtyZXR1cm4gby5faW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mO3JldHVybiBmdW5jdGlvbihvLGkpe2lmKHI9PT1wKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKHI9PT1oKXtpZigidGhyb3ciPT09byl0aHJvdyBpO3JldHVybiBqKCl9Zm9yKG4ubWV0aG9kPW8sbi5hcmc9aTs7KXt2YXIgYT1uLmRlbGVnYXRlO2lmKGEpe3ZhciBjPVMoYSxuKTtpZihjKXtpZihjPT09diljb250aW51ZTtyZXR1cm4gY319aWYoIm5leHQiPT09bi5tZXRob2Qpbi5zZW50PW4uX3NlbnQ9bi5hcmc7ZWxzZSBpZigidGhyb3ciPT09bi5tZXRob2Qpe2lmKHI9PT1mKXRocm93IHI9aCxuLmFyZztuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKX1lbHNlInJldHVybiI9PT1uLm1ldGhvZCYmbi5hYnJ1cHQoInJldHVybiIsbi5hcmcpO3I9cDt2YXIgdT1zKHQsZSxuKTtpZigibm9ybWFsIj09PXUudHlwZSl7aWYocj1uLmRvbmU/aDpsLHUuYXJnPT09diljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpuLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihyPWgsbi5tZXRob2Q9InRocm93IixuLmFyZz11LmFyZyl9fX0odCxuLGkpLG99ZnVuY3Rpb24gcyh0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2gocil7cmV0dXJue3R5cGU6InRocm93Iixhcmc6cn19fXQud3JhcD11O3ZhciBmPSJzdXNwZW5kZWRTdGFydCIsbD0ic3VzcGVuZGVkWWllbGQiLHA9ImV4ZWN1dGluZyIsaD0iY29tcGxldGVkIix2PXt9O2Z1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gZygpe31mdW5jdGlvbiB5KCl7fXZhciBiPXt9O2JbaV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dmFyIG09T2JqZWN0LmdldFByb3RvdHlwZU9mLGs9bSYmbShtKEkoW10pKSk7ayYmayE9PW4mJnIuY2FsbChrLGkpJiYoYj1rKTt2YXIgXz15LnByb3RvdHlwZT1kLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGIpO2Z1bmN0aW9uIHcodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX19KSl9ZnVuY3Rpb24geCh0KXt2YXIgZTt0aGlzLl9pbnZva2U9ZnVuY3Rpb24obixvKXtmdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpeyFmdW5jdGlvbiBlKG4sbyxpLGEpe3ZhciBjPXModFtuXSx0LG8pO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciB1PWMuYXJnLGY9dS52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PXR5cGVvZiBmJiZyLmNhbGwoZiwiX19hd2FpdCIpP1Byb21pc2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe2UoIm5leHQiLHQsaSxhKX0pLChmdW5jdGlvbih0KXtlKCJ0aHJvdyIsdCxpLGEpfSkpOlByb21pc2UucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbih0KXt1LnZhbHVlPXQsaSh1KX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZSgidGhyb3ciLHQsaSxhKX0pKX1hKGMuYXJnKX0obixvLGUsaSl9KSl9cmV0dXJuIGU9ZT9lLnRoZW4oaSxpKTppKCl9fWZ1bmN0aW9uIFModCxuKXt2YXIgcj10Lml0ZXJhdG9yW24ubWV0aG9kXTtpZihyPT09ZSl7aWYobi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1uLm1ldGhvZCl7aWYodC5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz1lLFModCxuKSwidGhyb3ciPT09bi5tZXRob2QpKXJldHVybiB2O24ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiB2fXZhciBvPXMocix0Lml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09by50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW8uYXJnLG4uZGVsZWdhdGU9bnVsbCx2O3ZhciBpPW8uYXJnO3JldHVybiBpP2kuZG9uZT8oblt0LnJlc3VsdE5hbWVdPWkudmFsdWUsbi5uZXh0PXQubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPWUpLG4uZGVsZWdhdGU9bnVsbCx2KTppOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHYpfWZ1bmN0aW9uIEUodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gTyh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gVCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEUsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gSSh0KXtpZih0KXt2YXIgbj10W2ldO2lmKG4pcmV0dXJuIG4uY2FsbCh0KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBvPS0xLGE9ZnVuY3Rpb24gbigpe2Zvcig7KytvPHQubGVuZ3RoOylpZihyLmNhbGwodCxvKSlyZXR1cm4gbi52YWx1ZT10W29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPWUsbi5kb25lPSEwLG59O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6an19ZnVuY3Rpb24gaigpe3JldHVybnt2YWx1ZTplLGRvbmU6ITB9fXJldHVybiBnLnByb3RvdHlwZT1fLmNvbnN0cnVjdG9yPXkseS5jb25zdHJ1Y3Rvcj1nLHlbY109Zy5kaXNwbGF5TmFtZT0iR2VuZXJhdG9yRnVuY3Rpb24iLHQuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09Z3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sdC5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQseSk6KHQuX19wcm90b19fPXksYyBpbiB0fHwodFtjXT0iR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShfKSx0fSx0LmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSx3KHgucHJvdG90eXBlKSx4LnByb3RvdHlwZVthXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0LkFzeW5jSXRlcmF0b3I9eCx0LmFzeW5jPWZ1bmN0aW9uKGUsbixyLG8pe3ZhciBpPW5ldyB4KHUoZSxuLHIsbykpO3JldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24obik/aTppLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6aS5uZXh0KCl9KSl9LHcoXyksX1tjXT0iR2VuZXJhdG9yIixfW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LF8udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0sdC5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaChuKTtyZXR1cm4gZS5yZXZlcnNlKCksZnVuY3Rpb24gbigpe2Zvcig7ZS5sZW5ndGg7KXt2YXIgcj1lLnBvcCgpO2lmKHIgaW4gdClyZXR1cm4gbi52YWx1ZT1yLG4uZG9uZT0hMSxufXJldHVybiBuLmRvbmU9ITAsbn19LHQudmFsdWVzPUksVC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlQscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9ZSx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz1lLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKE8pLCF0KWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09ZSl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbih0KXtpZih0aGlzLmRvbmUpdGhyb3cgdDt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gYy50eXBlPSJ0aHJvdyIsYy5hcmc9dCxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPWUpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sYz1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciB1PXIuY2FsbChhLCJjYXRjaExvYyIpLHM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZih1JiZzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZih1KXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFzKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2Msdik6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx2fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLE8obiksdn19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztPKG4pfXJldHVybiBvfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6SSh0KSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPWUpLHZ9fSx0fSh0LmV4cG9ydHMpO3RyeXtyZWdlbmVyYXRvclJ1bnRpbWU9cn1jYXRjaChvKXtGdW5jdGlvbigiciIsInJlZ2VuZXJhdG9yUnVudGltZSA9IHIiKShyKX19LCJtL0w4IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigiRFBzeCIpLGk9bigiZ2xyayIpLGE9bigid0U2diIpLGM9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1yP2M6ZnVuY3Rpb24odCxlLG4pe2lmKGkodCksZT1hKGUsITApLGkobiksbyl0cnl7cmV0dXJuIGModCxlLG4pfWNhdGNoKHIpe31pZigiZ2V0ImluIG58fCJzZXQiaW4gbil0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIG4mJih0W2VdPW4udmFsdWUpLHR9fSxtOTJuOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8pe3RyeXtyZXR1cm4gbz9lKHIobilbMF0sblsxXSk6ZShuKX1jYXRjaChhKXt2YXIgaT10LnJldHVybjt0aHJvdyB2b2lkIDAhPT1pJiZyKGkuY2FsbCh0KSksYX19fSxtUkg2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJsaW5rIil9LHtsaW5rOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImEiLCJocmVmIix0KX19KX0sbVJJcTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuKCJIMHBiIiksbigid0xZbiIpLG4oInNNQk8iKSxuKCJ0VzV5IiksbigidUw4VyIpLG4oImVvTDgiKSxuKCJIUnhVIiksbigiNURtVyIpLG4oIk5CQVMiKSxuKCJ0a3RvIiksbigiY0RrZSIpLG4oIjNLZ1YiKSxuKCJyNU9nIiksbigienVoVyIpLG4oIjRoMFkiKSxuKCI1RDVvIiksbigieVFZbiIpLG4oInpLWmUiKSxuKCJLeGxkIiksbigiRXhvQyIpLG4oIjA3ZDciKSxuKCJtYTlJIiksbigiSjMwWCIpLG4oInBqRHYiKSxuKCJYZTNMIiksbigib1Z1WCIpLG4oIisyb1AiKSxuKCJwRFFxIiksbigiVG9KeSIpLG4oIlFXQmwiKSxuKCIyQjFSIiksbigiVGVRRiIpLG4oIlJmeHoiKSxuKCJwaU1iIiksbigiRTlYRCIpLG4oIjlOMjkiKSxuKCJ5WFYzIiksbigidXFYYyIpLG4oInFIVCsiKSxuKCJ5eW1lIiksbigiZmJDVyIpLG4oIngwQUciKSxuKCI0bURtIiksbigiOXRiLyIpLG4oIjJBK2QiKSxuKCJTWW9yIiksbigiUEtQayIpLG4oIjliSjciKSxuKCJpbmxBIiksbigiSlRKZyIpLG4oIk9NOVoiKSxuKCJMS0J4IiksbigiR0tWVSIpLG4oIkU1Tk0iKSxuKCJCTk10IiksbigiekhGdSIpLG4oIng4M3ciKSxuKCJsMmRLIiksbigiR1JQRiIpLG4oInhkQloiKSxuKCJtUkg2IiksbigieVdvMiIpLG4oIkl4WFIiKSxuKCJURlBUIiksbigiWms4WCIpLG4oIlJtMVMiKSxuKCJVeGxDIiksbigiaEJ5USIpLG4oIkVuWnkiKSxuKCI0bDYzIiksbigick5obCIpLG4oIjdzYkQiKSxuKCI2aHBuIiksbigiZnRLZyIpLG4oIkt2OWwiKSxuKCJUc2txIiksbigiRU5GOSIpLG4oIllHSzQiKSxuKCJGWnRQIiksbigiM2JCWiIpLG4oIjVzK24iKSxuKCJERWZ1IiksbigibHM4MiIpfSxtYTlJOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiNkxXQSIpLGE9bigiaGgxdiIpLGM9bigiZXd2VyIpLHU9bigiVU1TUSIpLHM9bigiaEJqTiIpLGY9bigiWmZEdiIpLGw9bigiSGQ1ZiIpLHA9bigidGlLcCIpKCJpc0NvbmNhdFNwcmVhZGFibGUiKSxoPSFvKChmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0W3BdPSExLHQuY29uY2F0KClbMF0hPT10fSkpLHY9bCgiY29uY2F0IiksZD1mdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgZT10W3BdO3JldHVybiB2b2lkIDAhPT1lPyEhZTppKHQpfTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IWh8fCF2fSx7Y29uY2F0OmZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLGksYT1jKHRoaXMpLGw9ZihhLDApLHA9MDtmb3IoZT0tMSxyPWFyZ3VtZW50cy5sZW5ndGg7ZTxyO2UrKylpZihkKGk9LTE9PT1lP2E6YXJndW1lbnRzW2VdKSl7aWYocCsobz11KGkubGVuZ3RoKSk+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO2ZvcihuPTA7bjxvO24rKyxwKyspbiBpbiBpJiZzKGwscCxpW25dKX1lbHNle2lmKHA+PTkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtzKGwscCsrLGkpfXJldHVybiBsLmxlbmd0aD1wLGx9fSl9LG1yU0c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsIl9fZXh0ZW5kcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsIl9fYXNzaWduIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQoZSwiX19yZXN0IiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwiX19kZWNvcmF0ZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsIl9fcGFyYW0iLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCJfX21ldGFkYXRhIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwiX19hd2FpdGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKSxuLmQoZSwiX19nZW5lcmF0b3IiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLCJfX2V4cG9ydFN0YXIiLChmdW5jdGlvbigpe3JldHVybiBwfSkpLG4uZChlLCJfX3ZhbHVlcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSksbi5kKGUsIl9fcmVhZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsIl9fc3ByZWFkIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwiX19zcHJlYWRBcnJheXMiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZChlLCJfX2F3YWl0IiwoZnVuY3Rpb24oKXtyZXR1cm4geX0pKSxuLmQoZSwiX19hc3luY0dlbmVyYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSksbi5kKGUsIl9fYXN5bmNEZWxlZ2F0b3IiLChmdW5jdGlvbigpe3JldHVybiBtfSkpLG4uZChlLCJfX2FzeW5jVmFsdWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4ga30pKSxuLmQoZSwiX19tYWtlVGVtcGxhdGVPYmplY3QiLChmdW5jdGlvbigpe3JldHVybiBffSkpLG4uZChlLCJfX2ltcG9ydFN0YXIiLChmdW5jdGlvbigpe3JldHVybiB3fSkpLG4uZChlLCJfX2ltcG9ydERlZmF1bHQiLChmdW5jdGlvbigpe3JldHVybiB4fSkpO3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9KSh0LGUpfTtmdW5jdGlvbiBvKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1yKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfXZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuKGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gZT1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJih0W29dPWVbb10pO3JldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBhKHQsZSl7dmFyIG49e307Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJmUuaW5kZXhPZihyKTwwJiYobltyXT10W3JdKTtpZihudWxsIT10JiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO288ci5sZW5ndGg7bysrKWUuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodCxyW29dKSYmKG5bcltvXV09dFtyW29dXSl9cmV0dXJuIG59ZnVuY3Rpb24gYyh0LGUsbixyKXt2YXIgbyxpPWFyZ3VtZW50cy5sZW5ndGgsYT1pPDM/ZTpudWxsPT09cj9yPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKTpyO2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpYT1SZWZsZWN0LmRlY29yYXRlKHQsZSxuLHIpO2Vsc2UgZm9yKHZhciBjPXQubGVuZ3RoLTE7Yz49MDtjLS0pKG89dFtjXSkmJihhPShpPDM/byhhKTppPjM/byhlLG4sYSk6byhlLG4pKXx8YSk7cmV0dXJuIGk+MyYmYSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixhKSxhfWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXtlKG4scix0KX19ZnVuY3Rpb24gcyh0LGUpe2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QubWV0YWRhdGEpcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEodCxlKX1mdW5jdGlvbiBmKHQsZSxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihvLGkpe2Z1bmN0aW9uIGEodCl7dHJ5e3Uoci5uZXh0KHQpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBjKHQpe3RyeXt1KHIudGhyb3codCkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUodCl7dC5kb25lP28odC52YWx1ZSk6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodC52YWx1ZSl9KSkudGhlbihhLGMpfXUoKHI9ci5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pKX1mdW5jdGlvbiBsKHQsZSl7dmFyIG4scixvLGksYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gaT17bmV4dDpjKDApLHRocm93OmMoMSkscmV0dXJuOmMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gYyhpKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGkpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKG49MSxyJiYobz0yJmlbMF0/ci5yZXR1cm46aVswXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGlbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGk9WzImaVswXSxvLnZhbHVlXSksaVswXSl7Y2FzZSAwOmNhc2UgMTpvPWk7YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOmlbMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxyPWlbMV0saT1bMF07Y29udGludWU7Y2FzZSA3Omk9YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PWlbMF18fDI9PT1pWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1pWzBdJiYoIW98fGlbMV0+b1swXSYmaVsxXTxvWzNdKSl7YS5sYWJlbD1pWzFdO2JyZWFrfWlmKDY9PT1pWzBdJiZhLmxhYmVsPG9bMV0pe2EubGFiZWw9b1sxXSxvPWk7YnJlYWt9aWYobyYmYS5sYWJlbDxvWzJdKXthLmxhYmVsPW9bMl0sYS5vcHMucHVzaChpKTticmVha31vWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9aT1lLmNhbGwodCxhKX1jYXRjaChjKXtpPVs2LGNdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmaVswXSl0aHJvdyBpWzFdO3JldHVybnt2YWx1ZTppWzBdP2lbMV06dm9pZCAwLGRvbmU6ITB9fShbaSxjXSl9fX1mdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciBuIGluIHQpZS5oYXNPd25Qcm9wZXJ0eShuKXx8KGVbbl09dFtuXSl9ZnVuY3Rpb24gaCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19ZnVuY3Rpb24gdih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgcixvLGk9bi5jYWxsKHQpLGE9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEocj1pLm5leHQoKSkuZG9uZTspYS5wdXNoKHIudmFsdWUpfWNhdGNoKGMpe289e2Vycm9yOmN9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihuPWkucmV0dXJuKSYmbi5jYWxsKGkpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX1mdW5jdGlvbiBkKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQodihhcmd1bWVudHNbZV0pKTtyZXR1cm4gdH1mdW5jdGlvbiBnKCl7Zm9yKHZhciB0PTAsZT0wLG49YXJndW1lbnRzLmxlbmd0aDtlPG47ZSsrKXQrPWFyZ3VtZW50c1tlXS5sZW5ndGg7dmFyIHI9QXJyYXkodCksbz0wO2ZvcihlPTA7ZTxuO2UrKylmb3IodmFyIGk9YXJndW1lbnRzW2VdLGE9MCxjPWkubGVuZ3RoO2E8YzthKyssbysrKXJbb109aVthXTtyZXR1cm4gcn1mdW5jdGlvbiB5KHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgeT8odGhpcy52PXQsdGhpcyk6bmV3IHkodCl9ZnVuY3Rpb24gYih0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciByLG89bi5hcHBseSh0LGV8fFtdKSxpPVtdO3JldHVybiByPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIpLGEoInJldHVybiIpLHJbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHI7ZnVuY3Rpb24gYSh0KXtvW3RdJiYoclt0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7aS5wdXNoKFt0LGUsbixyXSk+MXx8Yyh0LGUpfSkpfSl9ZnVuY3Rpb24gYyh0LGUpe3RyeXsobj1vW3RdKGUpKS52YWx1ZSBpbnN0YW5jZW9mIHk/UHJvbWlzZS5yZXNvbHZlKG4udmFsdWUudikudGhlbih1LHMpOmYoaVswXVsyXSxuKX1jYXRjaChyKXtmKGlbMF1bM10scil9dmFyIG59ZnVuY3Rpb24gdSh0KXtjKCJuZXh0Iix0KX1mdW5jdGlvbiBzKHQpe2MoInRocm93Iix0KX1mdW5jdGlvbiBmKHQsZSl7dChlKSxpLnNoaWZ0KCksaS5sZW5ndGgmJmMoaVswXVswXSxpWzBdWzFdKX19ZnVuY3Rpb24gbSh0KXt2YXIgZSxuO3JldHVybiBlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIsKGZ1bmN0aW9uKHQpe3Rocm93IHR9KSkscigicmV0dXJuIiksZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGU7ZnVuY3Rpb24gcihyLG8pe2Vbcl09dFtyXT9mdW5jdGlvbihlKXtyZXR1cm4obj0hbik/e3ZhbHVlOnkodFtyXShlKSksZG9uZToicmV0dXJuIj09PXJ9Om8/byhlKTplfTpvfX1mdW5jdGlvbiBrKHQpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgZSxuPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBuP24uY2FsbCh0KToodD1oKHQpLGU9e30scigibmV4dCIpLHIoInRocm93IikscigicmV0dXJuIiksZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZSk7ZnVuY3Rpb24gcihuKXtlW25dPXRbbl0mJmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXshZnVuY3Rpb24odCxlLG4scil7UHJvbWlzZS5yZXNvbHZlKHIpLnRoZW4oKGZ1bmN0aW9uKGUpe3Qoe3ZhbHVlOmUsZG9uZTpufSl9KSxlKX0ocixvLChlPXRbbl0oZSkpLmRvbmUsZS52YWx1ZSl9KSl9fX1mdW5jdGlvbiBfKHQsZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmF3Iix7dmFsdWU6ZX0pOnQucmF3PWUsdH1mdW5jdGlvbiB3KHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fX0sIm4vbVUiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1NYXRoLmF0YW5oLGk9TWF0aC5sb2c7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGZvcmNlZDohKG8mJjEvbygtMCk8MCl9LHthdGFuaDpmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6aSgoMSt0KS8oMS10KSkvMn19KX0sbm9HbzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVnBJVCIpO3QuZXhwb3J0cz1yKCJuYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nIixGdW5jdGlvbi50b1N0cmluZyl9LG50T1U6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJycE5rIikuSXRlcmF0b3JQcm90b3R5cGUsbz1uKCJmSE1ZIiksaT1uKCJYR3dDIiksYT1uKCIxRTV6IiksYz1uKCJQNHkxIiksdT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBzPWUrIiBJdGVyYXRvciI7cmV0dXJuIHQucHJvdG90eXBlPW8ocix7bmV4dDppKDEsbil9KSxhKHQscywhMSwhMCksY1tzXT11LHR9fSxvVnVYOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiUkszdCIpLGk9bigiL0dxVSIpLGE9bigic3dGTCIpLGM9W10uam9pbix1PW8hPU9iamVjdCxzPWEoImpvaW4iLCIsIik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOnV8fHN9LHtqb2luOmZ1bmN0aW9uKHQpe3JldHVybiBjLmNhbGwoaSh0aGlzKSx2b2lkIDA9PT10PyIsIjp0KX19KX0scERRcTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIkk4dmgiKSxpPW4oInBwR0IiKSxhPW4oIlVNU1EiKSxjPW4oImV3dlciKSx1PW4oIlpmRHYiKSxzPW4oImhCak4iKSxmPW4oIkhkNWYiKSxsPU1hdGgubWF4LHA9TWF0aC5taW47cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFmKCJzcGxpY2UiKX0se3NwbGljZTpmdW5jdGlvbih0LGUpe3ZhciBuLHIsZixoLHYsZCxnPWModGhpcykseT1hKGcubGVuZ3RoKSxiPW8odCx5KSxtPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PW0/bj1yPTA6MT09PW0/KG49MCxyPXktYik6KG49bS0yLHI9cChsKGkoZSksMCkseS1iKSkseStuLXI+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoIk1heGltdW0gYWxsb3dlZCBsZW5ndGggZXhjZWVkZWQiKTtmb3IoZj11KGcsciksaD0wO2g8cjtoKyspKHY9YitoKWluIGcmJnMoZixoLGdbdl0pO2lmKGYubGVuZ3RoPXIsbjxyKXtmb3IoaD1iO2g8eS1yO2grKylkPWgrbiwodj1oK3IpaW4gZz9nW2RdPWdbdl06ZGVsZXRlIGdbZF07Zm9yKGg9eTtoPnktcituO2gtLSlkZWxldGUgZ1toLTFdfWVsc2UgaWYobj5yKWZvcihoPXktcjtoPmI7aC0tKWQ9aCtuLTEsKHY9aCtyLTEpaW4gZz9nW2RdPWdbdl06ZGVsZXRlIGdbZF07Zm9yKGg9MDtoPG47aCsrKWdbaCtiXT1hcmd1bWVudHNbaCsyXTtyZXR1cm4gZy5sZW5ndGg9eS1yK24sZn19KX0scE5NTzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjJvUm8iKSxpPW4oInhEQlIiKSxhPW4oImc2di8iKSxjPW4oIlNUQUUiKSx1PW4oIjBEa3kiKSxzPW4oIlVUVlMiKSxmPW4oIjZMV0EiKSxsPW4oImhoMXYiKSxwPW4oImdscmsiKSxoPW4oImV3dlciKSx2PW4oIi9HcVUiKSxkPW4oIndFNnYiKSxnPW4oIlhHd0MiKSx5PW4oImZITVkiKSxiPW4oIjMzV2giKSxtPW4oIkpCeTgiKSxrPW4oIkJYL2IiKSxfPW4oImRCZysiKSx3PW4oIkJzOFYiKSx4PW4oIm0vTDgiKSxTPW4oIjBlZWYiKSxFPW4oIlgyVSsiKSxPPW4oImJ1c0UiKSxUPW4oIlZwSVQiKSxJPW4oIjkzSTAiKSxqPW4oIjBCSzIiKSxNPW4oImtPT2wiKSxQPW4oInRpS3AiKSxEPW4oIndETG8iKSxSPW4oImRHL24iKSxOPW4oIjFFNXoiKSxBPW4oImFmTzgiKSxMPW4oInR5Y1IiKS5mb3JFYWNoLEY9SSgiaGlkZGVuIiksej1QKCJ0b1ByaW1pdGl2ZSIpLFo9QS5zZXQsQz1BLmdldHRlckZvcigiU3ltYm9sIiksVz1PYmplY3QucHJvdG90eXBlLEc9by5TeW1ib2wsVT1vLkpTT04sSD1VJiZVLnN0cmluZ2lmeSxCPXcuZixLPXguZixWPWsuZixYPVMuZixZPVQoInN5bWJvbHMiKSxxPVQoIm9wLXN5bWJvbHMiKSxRPVQoInN0cmluZy10by1zeW1ib2wtcmVnaXN0cnkiKSxKPVQoInN5bWJvbC10by1zdHJpbmctcmVnaXN0cnkiKSwkPVQoIndrcyIpLHR0PW8uUU9iamVjdCxldD0hdHR8fCF0dC5wcm90b3R5cGV8fCF0dC5wcm90b3R5cGUuZmluZENoaWxkLG50PWEmJnUoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPXkoSyh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiBLKHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pKT9mdW5jdGlvbih0LGUsbil7dmFyIHI9QihXLGUpO3ImJmRlbGV0ZSBXW2VdLEsodCxlLG4pLHImJnQhPT1XJiZLKFcsZSxyKX06SyxydD1mdW5jdGlvbih0LGUpe3ZhciBuPVlbdF09eShHLnByb3RvdHlwZSk7cmV0dXJuIFoobix7dHlwZToiU3ltYm9sIix0YWc6dCxkZXNjcmlwdGlvbjplfSksYXx8KG4uZGVzY3JpcHRpb249ZSksbn0sb3Q9YyYmInN5bWJvbCI9PXR5cGVvZiBHLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdCh0KWluc3RhbmNlb2YgR30saXQ9ZnVuY3Rpb24odCxlLG4pe3Q9PT1XJiZpdChxLGUsbikscCh0KTt2YXIgcj1kKGUsITApO3JldHVybiBwKG4pLHMoWSxyKT8obi5lbnVtZXJhYmxlPyhzKHQsRikmJnRbRl1bcl0mJih0W0ZdW3JdPSExKSxuPXkobix7ZW51bWVyYWJsZTpnKDAsITEpfSkpOihzKHQsRil8fEsodCxGLGcoMSx7fSkpLHRbRl1bcl09ITApLG50KHQscixuKSk6Syh0LHIsbil9LGF0PWZ1bmN0aW9uKHQsZSl7cCh0KTt2YXIgbj12KGUpLHI9YihuKS5jb25jYXQoZnQobikpO3JldHVybiBMKHIsKGZ1bmN0aW9uKGUpe2EmJiFjdC5jYWxsKG4sZSl8fGl0KHQsZSxuW2VdKX0pKSx0fSxjdD1mdW5jdGlvbih0KXt2YXIgZT1kKHQsITApLG49WC5jYWxsKHRoaXMsZSk7cmV0dXJuISh0aGlzPT09VyYmcyhZLGUpJiYhcyhxLGUpKSYmKCEobnx8IXModGhpcyxlKXx8IXMoWSxlKXx8cyh0aGlzLEYpJiZ0aGlzW0ZdW2VdKXx8bil9LHV0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dih0KSxyPWQoZSwhMCk7aWYobiE9PVd8fCFzKFkscil8fHMocSxyKSl7dmFyIG89QihuLHIpO3JldHVybiFvfHwhcyhZLHIpfHxzKG4sRikmJm5bRl1bcl18fChvLmVudW1lcmFibGU9ITApLG99fSxzdD1mdW5jdGlvbih0KXt2YXIgZT1WKHYodCkpLG49W107cmV0dXJuIEwoZSwoZnVuY3Rpb24odCl7cyhZLHQpfHxzKGosdCl8fG4ucHVzaCh0KX0pKSxufSxmdD1mdW5jdGlvbih0KXt2YXIgZT10PT09VyxuPVYoZT9xOnYodCkpLHI9W107cmV0dXJuIEwobiwoZnVuY3Rpb24odCl7IXMoWSx0KXx8ZSYmIXMoVyx0KXx8ci5wdXNoKFlbdF0pfSkpLHJ9O2N8fChPKChHPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIEcpdGhyb3cgVHlwZUVycm9yKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IiKTt2YXIgdD1hcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/U3RyaW5nKGFyZ3VtZW50c1swXSk6dm9pZCAwLGU9TSh0KSxuPWZ1bmN0aW9uKHQpe3RoaXM9PT1XJiZuLmNhbGwocSx0KSxzKHRoaXMsRikmJnModGhpc1tGXSxlKSYmKHRoaXNbRl1bZV09ITEpLG50KHRoaXMsZSxnKDEsdCkpfTtyZXR1cm4gYSYmZXQmJm50KFcsZSx7Y29uZmlndXJhYmxlOiEwLHNldDpufSkscnQoZSx0KX0pLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBDKHRoaXMpLnRhZ30pKSxTLmY9Y3QseC5mPWl0LHcuZj11dCxtLmY9ay5mPXN0LF8uZj1mdCxhJiYoSyhHLnByb3RvdHlwZSwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcykuZGVzY3JpcHRpb259fSksaXx8TyhXLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsY3Qse3Vuc2FmZTohMH0pKSxELmY9ZnVuY3Rpb24odCl7cmV0dXJuIHJ0KFAodCksdCl9KSxyKHtnbG9iYWw6ITAsd3JhcDohMCxmb3JjZWQ6IWMsc2hhbTohY30se1N5bWJvbDpHfSksTChiKCQpLChmdW5jdGlvbih0KXtSKHQpfSkpLHIoe3RhcmdldDoiU3ltYm9sIixzdGF0OiEwLGZvcmNlZDohY30se2ZvcjpmdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcodCk7aWYocyhRLGUpKXJldHVybiBRW2VdO3ZhciBuPUcoZSk7cmV0dXJuIFFbZV09bixKW25dPWUsbn0sa2V5Rm9yOmZ1bmN0aW9uKHQpe2lmKCFvdCh0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIHN5bWJvbCIpO2lmKHMoSix0KSlyZXR1cm4gSlt0XX0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7ZXQ9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe2V0PSExfX0pLHIoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohYyxzaGFtOiFhfSx7Y3JlYXQ="
}
Changelog:
{
"2019.12.04 14:30": "base64:b24odCl7dmFyIGUsbixyLG8sdT10aGlzO3JldHVybiBmJiYobj1uZXcgUmVnRXhwKCJeIit1LnNvdXJjZSsiJCg/IVxccykiLGkuY2FsbCh1KSkpLHMmJihlPXUubGFzdEluZGV4KSxyPWEuY2FsbCh1LHQpLHMmJnImJih1Lmxhc3RJbmRleD11Lmdsb2JhbD9yLmluZGV4K3JbMF0ubGVuZ3RoOmUpLGYmJnImJnIubGVuZ3RoPjEmJmMuY2FsbChyWzBdLG4sKGZ1bmN0aW9uKCl7Zm9yKG89MTtvPGFyZ3VtZW50cy5sZW5ndGgtMjtvKyspdm9pZCAwPT09YXJndW1lbnRzW29dJiYocltvXT12b2lkIDApfSkpLHJ9KSx0LmV4cG9ydHM9dX0sbDJkSzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oImhYcE8iKTtyKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOm4oIjZ1bksiKSgiZm9udGNvbG9yIil9LHtmb250Y29sb3I6ZnVuY3Rpb24odCl7cmV0dXJuIG8odGhpcywiZm9udCIsImNvbG9yIix0KX19KX0sbEVvdTpmdW5jdGlvbih0LGUsbil7bigiZEcvbiIpKCJ0b1N0cmluZ1RhZyIpfSxsTXE1OmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCIwRGt5Iiksbz0vI3xcLnByb3RvdHlwZVwuLyxpPWZ1bmN0aW9uKHQsZSl7dmFyIG49Y1thKHQpXTtyZXR1cm4gbj09c3x8biE9dSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBlP3IoZSk6ISFlKX0sYT1pLm5vcm1hbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpLnJlcGxhY2UobywiLiIpLnRvTG93ZXJDYXNlKCl9LGM9aS5kYXRhPXt9LHU9aS5OQVRJVkU9Ik4iLHM9aS5QT0xZRklMTD0iUCI7dC5leHBvcnRzPWl9LGxzODI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZSxuPU9iamVjdC5wcm90b3R5cGUscj1uLmhhc093blByb3BlcnR5LG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1vLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYT1vLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLGM9by50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUodCxlLG4scil7dmFyIG89T2JqZWN0LmNyZWF0ZSgoZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBkP2U6ZCkucHJvdG90eXBlKSxpPW5ldyBUKHJ8fFtdKTtyZXR1cm4gby5faW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1mO3JldHVybiBmdW5jdGlvbihvLGkpe2lmKHI9PT1wKXRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2lmKHI9PT1oKXtpZigidGhyb3ciPT09byl0aHJvdyBpO3JldHVybiBqKCl9Zm9yKG4ubWV0aG9kPW8sbi5hcmc9aTs7KXt2YXIgYT1uLmRlbGVnYXRlO2lmKGEpe3ZhciBjPVMoYSxuKTtpZihjKXtpZihjPT09diljb250aW51ZTtyZXR1cm4gY319aWYoIm5leHQiPT09bi5tZXRob2Qpbi5zZW50PW4uX3NlbnQ9bi5hcmc7ZWxzZSBpZigidGhyb3ciPT09bi5tZXRob2Qpe2lmKHI9PT1mKXRocm93IHI9aCxuLmFyZztuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKX1lbHNlInJldHVybiI9PT1uLm1ldGhvZCYmbi5hYnJ1cHQoInJldHVybiIsbi5hcmcpO3I9cDt2YXIgdT1zKHQsZSxuKTtpZigibm9ybWFsIj09PXUudHlwZSl7aWYocj1uLmRvbmU/aDpsLHUuYXJnPT09diljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpuLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihyPWgsbi5tZXRob2Q9InRocm93IixuLmFyZz11LmFyZyl9fX0odCxuLGkpLG99ZnVuY3Rpb24gcyh0LGUsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGFyZzp0LmNhbGwoZSxuKX19Y2F0Y2gocil7cmV0dXJue3R5cGU6InRocm93Iixhcmc6cn19fXQud3JhcD11O3ZhciBmPSJzdXNwZW5kZWRTdGFydCIsbD0ic3VzcGVuZGVkWWllbGQiLHA9ImV4ZWN1dGluZyIsaD0iY29tcGxldGVkIix2PXt9O2Z1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gZygpe31mdW5jdGlvbiB5KCl7fXZhciBiPXt9O2JbaV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dmFyIG09T2JqZWN0LmdldFByb3RvdHlwZU9mLGs9bSYmbShtKEkoW10pKSk7ayYmayE9PW4mJnIuY2FsbChrLGkpJiYoYj1rKTt2YXIgXz15LnByb3RvdHlwZT1kLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGIpO2Z1bmN0aW9uIHcodCl7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbnZva2UoZSx0KX19KSl9ZnVuY3Rpb24geCh0KXt2YXIgZTt0aGlzLl9pbnZva2U9ZnVuY3Rpb24obixvKXtmdW5jdGlvbiBpKCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpeyFmdW5jdGlvbiBlKG4sbyxpLGEpe3ZhciBjPXModFtuXSx0LG8pO2lmKCJ0aHJvdyIhPT1jLnR5cGUpe3ZhciB1PWMuYXJnLGY9dS52YWx1ZTtyZXR1cm4gZiYmIm9iamVjdCI9PXR5cGVvZiBmJiZyLmNhbGwoZiwiX19hd2FpdCIpP1Byb21pc2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oKGZ1bmN0aW9uKHQpe2UoIm5leHQiLHQsaSxhKX0pLChmdW5jdGlvbih0KXtlKCJ0aHJvdyIsdCxpLGEpfSkpOlByb21pc2UucmVzb2x2ZShmKS50aGVuKChmdW5jdGlvbih0KXt1LnZhbHVlPXQsaSh1KX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZSgidGhyb3ciLHQsaSxhKX0pKX1hKGMuYXJnKX0obixvLGUsaSl9KSl9cmV0dXJuIGU9ZT9lLnRoZW4oaSxpKTppKCl9fWZ1bmN0aW9uIFModCxuKXt2YXIgcj10Lml0ZXJhdG9yW24ubWV0aG9kXTtpZihyPT09ZSl7aWYobi5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1uLm1ldGhvZCl7aWYodC5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD0icmV0dXJuIixuLmFyZz1lLFModCxuKSwidGhyb3ciPT09bi5tZXRob2QpKXJldHVybiB2O24ubWV0aG9kPSJ0aHJvdyIsbi5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiB2fXZhciBvPXMocix0Lml0ZXJhdG9yLG4uYXJnKTtpZigidGhyb3ciPT09by50eXBlKXJldHVybiBuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW8uYXJnLG4uZGVsZWdhdGU9bnVsbCx2O3ZhciBpPW8uYXJnO3JldHVybiBpP2kuZG9uZT8oblt0LnJlc3VsdE5hbWVdPWkudmFsdWUsbi5uZXh0PXQubmV4dExvYywicmV0dXJuIiE9PW4ubWV0aG9kJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPWUpLG4uZGVsZWdhdGU9bnVsbCx2KTppOihuLm1ldGhvZD0idGhyb3ciLG4uYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksbi5kZWxlZ2F0ZT1udWxsLHYpfWZ1bmN0aW9uIEUodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gTyh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT0ibm9ybWFsIixkZWxldGUgZS5hcmcsdC5jb21wbGV0aW9uPWV9ZnVuY3Rpb24gVCh0KXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sdC5mb3JFYWNoKEUsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gSSh0KXtpZih0KXt2YXIgbj10W2ldO2lmKG4pcmV0dXJuIG4uY2FsbCh0KTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBvPS0xLGE9ZnVuY3Rpb24gbigpe2Zvcig7KytvPHQubGVuZ3RoOylpZihyLmNhbGwodCxvKSlyZXR1cm4gbi52YWx1ZT10W29dLG4uZG9uZT0hMSxuO3JldHVybiBuLnZhbHVlPWUsbi5kb25lPSEwLG59O3JldHVybiBhLm5leHQ9YX19cmV0dXJue25leHQ6an19ZnVuY3Rpb24gaigpe3JldHVybnt2YWx1ZTplLGRvbmU6ITB9fXJldHVybiBnLnByb3RvdHlwZT1fLmNvbnN0cnVjdG9yPXkseS5jb25zdHJ1Y3Rvcj1nLHlbY109Zy5kaXNwbGF5TmFtZT0iR2VuZXJhdG9yRnVuY3Rpb24iLHQuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09Z3x8IkdlbmVyYXRvckZ1bmN0aW9uIj09PShlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKX0sdC5tYXJrPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQseSk6KHQuX19wcm90b19fPXksYyBpbiB0fHwodFtjXT0iR2VuZXJhdG9yRnVuY3Rpb24iKSksdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShfKSx0fSx0LmF3cmFwPWZ1bmN0aW9uKHQpe3JldHVybntfX2F3YWl0OnR9fSx3KHgucHJvdG90eXBlKSx4LnByb3RvdHlwZVthXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0LkFzeW5jSXRlcmF0b3I9eCx0LmFzeW5jPWZ1bmN0aW9uKGUsbixyLG8pe3ZhciBpPW5ldyB4KHUoZSxuLHIsbykpO3JldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24obik/aTppLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6aS5uZXh0KCl9KSl9LHcoXyksX1tjXT0iR2VuZXJhdG9yIixfW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LF8udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0sdC5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaChuKTtyZXR1cm4gZS5yZXZlcnNlKCksZnVuY3Rpb24gbigpe2Zvcig7ZS5sZW5ndGg7KXt2YXIgcj1lLnBvcCgpO2lmKHIgaW4gdClyZXR1cm4gbi52YWx1ZT1yLG4uZG9uZT0hMSxufXJldHVybiBuLmRvbmU9ITAsbn19LHQudmFsdWVzPUksVC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlQscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9ZSx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz1lLHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKE8pLCF0KWZvcih2YXIgbiBpbiB0aGlzKSJ0Ij09PW4uY2hhckF0KDApJiZyLmNhbGwodGhpcyxuKSYmIWlzTmFOKCtuLnNsaWNlKDEpKSYmKHRoaXNbbl09ZSl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PXQudHlwZSl0aHJvdyB0LmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbih0KXtpZih0aGlzLmRvbmUpdGhyb3cgdDt2YXIgbj10aGlzO2Z1bmN0aW9uIG8ocixvKXtyZXR1cm4gYy50eXBlPSJ0aHJvdyIsYy5hcmc9dCxuLm5leHQ9cixvJiYobi5tZXRob2Q9Im5leHQiLG4uYXJnPWUpLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sYz1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIG8oImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciB1PXIuY2FsbChhLCJjYXRjaExvYyIpLHM9ci5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZih1JiZzKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9ZWxzZSBpZih1KXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gbyhhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFzKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBvKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBvPXRoaXMudHJ5RW50cmllc1tuXTtpZihvLnRyeUxvYzw9dGhpcy5wcmV2JiZyLmNhbGwobywiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8by5maW5hbGx5TG9jKXt2YXIgaT1vO2JyZWFrfX1pJiYoImJyZWFrIj09PXR8fCJjb250aW51ZSI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIGE9aT9pLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT10LGEuYXJnPWUsaT8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2Msdik6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZigidGhyb3ciPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVybiJicmVhayI9PT10LnR5cGV8fCJjb250aW51ZSI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOiJyZXR1cm4iPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSx2fSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIG49dGhpcy50cnlFbnRyaWVzW2VdO2lmKG4uZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUobi5jb21wbGV0aW9uLG4uYWZ0ZXJMb2MpLE8obiksdn19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tlXTtpZihuLnRyeUxvYz09PXQpe3ZhciByPW4uY29tcGxldGlvbjtpZigidGhyb3ciPT09ci50eXBlKXt2YXIgbz1yLmFyZztPKG4pfXJldHVybiBvfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6SSh0KSxyZXN1bHROYW1lOm4sbmV4dExvYzpyfSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPWUpLHZ9fSx0fSh0LmV4cG9ydHMpO3RyeXtyZWdlbmVyYXRvclJ1bnRpbWU9cn1jYXRjaChvKXtGdW5jdGlvbigiciIsInJlZ2VuZXJhdG9yUnVudGltZSA9IHIiKShyKX19LCJtL0w4IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiZzZ2LyIpLG89bigiRFBzeCIpLGk9bigiZ2xyayIpLGE9bigid0U2diIpLGM9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1yP2M6ZnVuY3Rpb24odCxlLG4pe2lmKGkodCksZT1hKGUsITApLGkobiksbyl0cnl7cmV0dXJuIGModCxlLG4pfWNhdGNoKHIpe31pZigiZ2V0ImluIG58fCJzZXQiaW4gbil0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIG4mJih0W2VdPW4udmFsdWUpLHR9fSxtOTJuOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJnbHJrIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuLG8pe3RyeXtyZXR1cm4gbz9lKHIobilbMF0sblsxXSk6ZShuKX1jYXRjaChhKXt2YXIgaT10LnJldHVybjt0aHJvdyB2b2lkIDAhPT1pJiZyKGkuY2FsbCh0KSksYX19fSxtUkg2OmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiaFhwTyIpO3Ioe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6bigiNnVuSyIpKCJsaW5rIil9LHtsaW5rOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsImEiLCJocmVmIix0KX19KX0sbVJJcTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuKCJIMHBiIiksbigid0xZbiIpLG4oInNNQk8iKSxuKCJ0VzV5IiksbigidUw4VyIpLG4oImVvTDgiKSxuKCJIUnhVIiksbigiNURtVyIpLG4oIk5CQVMiKSxuKCJ0a3RvIiksbigiY0RrZSIpLG4oIjNLZ1YiKSxuKCJyNU9nIiksbigienVoVyIpLG4oIjRoMFkiKSxuKCI1RDVvIiksbigieVFZbiIpLG4oInpLWmUiKSxuKCJLeGxkIiksbigiRXhvQyIpLG4oIjA3ZDciKSxuKCJtYTlJIiksbigiSjMwWCIpLG4oInBqRHYiKSxuKCJYZTNMIiksbigib1Z1WCIpLG4oIisyb1AiKSxuKCJwRFFxIiksbigiVG9KeSIpLG4oIlFXQmwiKSxuKCIyQjFSIiksbigiVGVRRiIpLG4oIlJmeHoiKSxuKCJwaU1iIiksbigiRTlYRCIpLG4oIjlOMjkiKSxuKCJ5WFYzIiksbigidXFYYyIpLG4oInFIVCsiKSxuKCJ5eW1lIiksbigiZmJDVyIpLG4oIngwQUciKSxuKCI0bURtIiksbigiOXRiLyIpLG4oIjJBK2QiKSxuKCJTWW9yIiksbigiUEtQayIpLG4oIjliSjciKSxuKCJpbmxBIiksbigiSlRKZyIpLG4oIk9NOVoiKSxuKCJMS0J4IiksbigiR0tWVSIpLG4oIkU1Tk0iKSxuKCJCTk10IiksbigiekhGdSIpLG4oIng4M3ciKSxuKCJsMmRLIiksbigiR1JQRiIpLG4oInhkQloiKSxuKCJtUkg2IiksbigieVdvMiIpLG4oIkl4WFIiKSxuKCJURlBUIiksbigiWms4WCIpLG4oIlJtMVMiKSxuKCJVeGxDIiksbigiaEJ5USIpLG4oIkVuWnkiKSxuKCI0bDYzIiksbigick5obCIpLG4oIjdzYkQiKSxuKCI2aHBuIiksbigiZnRLZyIpLG4oIkt2OWwiKSxuKCJUc2txIiksbigiRU5GOSIpLG4oIllHSzQiKSxuKCJGWnRQIiksbigiM2JCWiIpLG4oIjVzK24iKSxuKCJERWZ1IiksbigibHM4MiIpfSxtYTlJOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiMERreSIpLGk9bigiNkxXQSIpLGE9bigiaGgxdiIpLGM9bigiZXd2VyIpLHU9bigiVU1TUSIpLHM9bigiaEJqTiIpLGY9bigiWmZEdiIpLGw9bigiSGQ1ZiIpLHA9bigidGlLcCIpKCJpc0NvbmNhdFNwcmVhZGFibGUiKSxoPSFvKChmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0W3BdPSExLHQuY29uY2F0KClbMF0hPT10fSkpLHY9bCgiY29uY2F0IiksZD1mdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgZT10W3BdO3JldHVybiB2b2lkIDAhPT1lPyEhZTppKHQpfTtyKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IWh8fCF2fSx7Y29uY2F0OmZ1bmN0aW9uKHQpe3ZhciBlLG4scixvLGksYT1jKHRoaXMpLGw9ZihhLDApLHA9MDtmb3IoZT0tMSxyPWFyZ3VtZW50cy5sZW5ndGg7ZTxyO2UrKylpZihkKGk9LTE9PT1lP2E6YXJndW1lbnRzW2VdKSl7aWYocCsobz11KGkubGVuZ3RoKSk+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO2ZvcihuPTA7bjxvO24rKyxwKyspbiBpbiBpJiZzKGwscCxpW25dKX1lbHNle2lmKHA+PTkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtzKGwscCsrLGkpfXJldHVybiBsLmxlbmd0aD1wLGx9fSl9LG1yU0c6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSksbi5kKGUsIl9fZXh0ZW5kcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIG99KSksbi5kKGUsIl9fYXNzaWduIiwoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxuLmQoZSwiX19yZXN0IiwoZnVuY3Rpb24oKXtyZXR1cm4gYX0pKSxuLmQoZSwiX19kZWNvcmF0ZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KSksbi5kKGUsIl9fcGFyYW0iLChmdW5jdGlvbigpe3JldHVybiB1fSkpLG4uZChlLCJfX21ldGFkYXRhIiwoZnVuY3Rpb24oKXtyZXR1cm4gc30pKSxuLmQoZSwiX19hd2FpdGVyIiwoZnVuY3Rpb24oKXtyZXR1cm4gZn0pKSxuLmQoZSwiX19nZW5lcmF0b3IiLChmdW5jdGlvbigpe3JldHVybiBsfSkpLG4uZChlLCJfX2V4cG9ydFN0YXIiLChmdW5jdGlvbigpe3JldHVybiBwfSkpLG4uZChlLCJfX3ZhbHVlcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSksbi5kKGUsIl9fcmVhZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsIl9fc3ByZWFkIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwiX19zcHJlYWRBcnJheXMiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZChlLCJfX2F3YWl0IiwoZnVuY3Rpb24oKXtyZXR1cm4geX0pKSxuLmQoZSwiX19hc3luY0dlbmVyYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSksbi5kKGUsIl9fYXN5bmNEZWxlZ2F0b3IiLChmdW5jdGlvbigpe3JldHVybiBtfSkpLG4uZChlLCJfX2FzeW5jVmFsdWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4ga30pKSxuLmQoZSwiX19tYWtlVGVtcGxhdGVPYmplY3QiLChmdW5jdGlvbigpe3JldHVybiBffSkpLG4uZChlLCJfX2ltcG9ydFN0YXIiLChmdW5jdGlvbigpe3JldHVybiB3fSkpLG4uZChlLCJfX2ltcG9ydERlZmF1bHQiLChmdW5jdGlvbigpe3JldHVybiB4fSkpO3ZhciByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9KSh0LGUpfTtmdW5jdGlvbiBvKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1yKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfXZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuKGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gZT1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJih0W29dPWVbb10pO3JldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBhKHQsZSl7dmFyIG49e307Zm9yKHZhciByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJmUuaW5kZXhPZihyKTwwJiYobltyXT10W3JdKTtpZihudWxsIT10JiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89MDtmb3Iocj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO288ci5sZW5ndGg7bysrKWUuaW5kZXhPZihyW29dKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodCxyW29dKSYmKG5bcltvXV09dFtyW29dXSl9cmV0dXJuIG59ZnVuY3Rpb24gYyh0LGUsbixyKXt2YXIgbyxpPWFyZ3VtZW50cy5sZW5ndGgsYT1pPDM/ZTpudWxsPT09cj9yPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKTpyO2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpYT1SZWZsZWN0LmRlY29yYXRlKHQsZSxuLHIpO2Vsc2UgZm9yKHZhciBjPXQubGVuZ3RoLTE7Yz49MDtjLS0pKG89dFtjXSkmJihhPShpPDM/byhhKTppPjM/byhlLG4sYSk6byhlLG4pKXx8YSk7cmV0dXJuIGk+MyYmYSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixhKSxhfWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gZnVuY3Rpb24obixyKXtlKG4scix0KX19ZnVuY3Rpb24gcyh0LGUpe2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QubWV0YWRhdGEpcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEodCxlKX1mdW5jdGlvbiBmKHQsZSxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihvLGkpe2Z1bmN0aW9uIGEodCl7dHJ5e3Uoci5uZXh0KHQpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBjKHQpe3RyeXt1KHIudGhyb3codCkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUodCl7dC5kb25lP28odC52YWx1ZSk6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodC52YWx1ZSl9KSkudGhlbihhLGMpfXUoKHI9ci5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pKX1mdW5jdGlvbiBsKHQsZSl7dmFyIG4scixvLGksYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gaT17bmV4dDpjKDApLHRocm93OmMoMSkscmV0dXJuOmMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gYyhpKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGkpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKG49MSxyJiYobz0yJmlbMF0/ci5yZXR1cm46aVswXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGlbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGk9WzImaVswXSxvLnZhbHVlXSksaVswXSl7Y2FzZSAwOmNhc2UgMTpvPWk7YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOmlbMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxyPWlbMV0saT1bMF07Y29udGludWU7Y2FzZSA3Omk9YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PWlbMF18fDI9PT1pWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1pWzBdJiYoIW98fGlbMV0+b1swXSYmaVsxXTxvWzNdKSl7YS5sYWJlbD1pWzFdO2JyZWFrfWlmKDY9PT1pWzBdJiZhLmxhYmVsPG9bMV0pe2EubGFiZWw9b1sxXSxvPWk7YnJlYWt9aWYobyYmYS5sYWJlbDxvWzJdKXthLmxhYmVsPW9bMl0sYS5vcHMucHVzaChpKTticmVha31vWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9aT1lLmNhbGwodCxhKX1jYXRjaChjKXtpPVs2LGNdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmaVswXSl0aHJvdyBpWzFdO3JldHVybnt2YWx1ZTppWzBdP2lbMV06dm9pZCAwLGRvbmU6ITB9fShbaSxjXSl9fX1mdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciBuIGluIHQpZS5oYXNPd25Qcm9wZXJ0eShuKXx8KGVbbl09dFtuXSl9ZnVuY3Rpb24gaCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19ZnVuY3Rpb24gdih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgcixvLGk9bi5jYWxsKHQpLGE9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEocj1pLm5leHQoKSkuZG9uZTspYS5wdXNoKHIudmFsdWUpfWNhdGNoKGMpe289e2Vycm9yOmN9fWZpbmFsbHl7dHJ5e3ImJiFyLmRvbmUmJihuPWkucmV0dXJuKSYmbi5jYWxsKGkpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gYX1mdW5jdGlvbiBkKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQodihhcmd1bWVudHNbZV0pKTtyZXR1cm4gdH1mdW5jdGlvbiBnKCl7Zm9yKHZhciB0PTAsZT0wLG49YXJndW1lbnRzLmxlbmd0aDtlPG47ZSsrKXQrPWFyZ3VtZW50c1tlXS5sZW5ndGg7dmFyIHI9QXJyYXkodCksbz0wO2ZvcihlPTA7ZTxuO2UrKylmb3IodmFyIGk9YXJndW1lbnRzW2VdLGE9MCxjPWkubGVuZ3RoO2E8YzthKyssbysrKXJbb109aVthXTtyZXR1cm4gcn1mdW5jdGlvbiB5KHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgeT8odGhpcy52PXQsdGhpcyk6bmV3IHkodCl9ZnVuY3Rpb24gYih0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciByLG89bi5hcHBseSh0LGV8fFtdKSxpPVtdO3JldHVybiByPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIpLGEoInJldHVybiIpLHJbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHI7ZnVuY3Rpb24gYSh0KXtvW3RdJiYoclt0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7aS5wdXNoKFt0LGUsbixyXSk+MXx8Yyh0LGUpfSkpfSl9ZnVuY3Rpb24gYyh0LGUpe3RyeXsobj1vW3RdKGUpKS52YWx1ZSBpbnN0YW5jZW9mIHk/UHJvbWlzZS5yZXNvbHZlKG4udmFsdWUudikudGhlbih1LHMpOmYoaVswXVsyXSxuKX1jYXRjaChyKXtmKGlbMF1bM10scil9dmFyIG59ZnVuY3Rpb24gdSh0KXtjKCJuZXh0Iix0KX1mdW5jdGlvbiBzKHQpe2MoInRocm93Iix0KX1mdW5jdGlvbiBmKHQsZSl7dChlKSxpLnNoaWZ0KCksaS5sZW5ndGgmJmMoaVswXVswXSxpWzBdWzFdKX19ZnVuY3Rpb24gbSh0KXt2YXIgZSxuO3JldHVybiBlPXt9LHIoIm5leHQiKSxyKCJ0aHJvdyIsKGZ1bmN0aW9uKHQpe3Rocm93IHR9KSkscigicmV0dXJuIiksZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGU7ZnVuY3Rpb24gcihyLG8pe2Vbcl09dFtyXT9mdW5jdGlvbihlKXtyZXR1cm4obj0hbik/e3ZhbHVlOnkodFtyXShlKSksZG9uZToicmV0dXJuIj09PXJ9Om8/byhlKTplfTpvfX1mdW5jdGlvbiBrKHQpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgZSxuPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBuP24uY2FsbCh0KToodD1oKHQpLGU9e30scigibmV4dCIpLHIoInRocm93IikscigicmV0dXJuIiksZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZSk7ZnVuY3Rpb24gcihuKXtlW25dPXRbbl0mJmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXshZnVuY3Rpb24odCxlLG4scil7UHJvbWlzZS5yZXNvbHZlKHIpLnRoZW4oKGZ1bmN0aW9uKGUpe3Qoe3ZhbHVlOmUsZG9uZTpufSl9KSxlKX0ocixvLChlPXRbbl0oZSkpLmRvbmUsZS52YWx1ZSl9KSl9fX1mdW5jdGlvbiBfKHQsZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmF3Iix7dmFsdWU6ZX0pOnQucmF3PWUsdH1mdW5jdGlvbiB3KHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9fX0sIm4vbVUiOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKCJJK2ViIiksbz1NYXRoLmF0YW5oLGk9TWF0aC5sb2c7cih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGZvcmNlZDohKG8mJjEvbygtMCk8MCl9LHthdGFuaDpmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6aSgoMSt0KS8oMS10KSkvMn19KX0sbm9HbzpmdW5jdGlvbih0LGUsbil7dmFyIHI9bigiVnBJVCIpO3QuZXhwb3J0cz1yKCJuYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nIixGdW5jdGlvbi50b1N0cmluZyl9LG50T1U6ZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKCJycE5rIikuSXRlcmF0b3JQcm90b3R5cGUsbz1uKCJmSE1ZIiksaT1uKCJYR3dDIiksYT1uKCIxRTV6IiksYz1uKCJQNHkxIiksdT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBzPWUrIiBJdGVyYXRvciI7cmV0dXJuIHQucHJvdG90eXBlPW8ocix7bmV4dDppKDEsbil9KSxhKHQscywhMSwhMCksY1tzXT11LHR9fSxvVnVYOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigiSStlYiIpLG89bigiUkszdCIpLGk9bigiL0dxVSIpLGE9bigic3dGTCIpLGM9W10uam9pbix1PW8hPU9iamVjdCxzPWEoImpvaW4iLCIsIik7cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOnV8fHN9LHtqb2luOmZ1bmN0aW9uKHQpe3JldHVybiBjLmNhbGwoaSh0aGlzKSx2b2lkIDA9PT10PyIsIjp0KX19KX0scERRcTpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIkk4dmgiKSxpPW4oInBwR0IiKSxhPW4oIlVNU1EiKSxjPW4oImV3dlciKSx1PW4oIlpmRHYiKSxzPW4oImhCak4iKSxmPW4oIkhkNWYiKSxsPU1hdGgubWF4LHA9TWF0aC5taW47cih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFmKCJzcGxpY2UiKX0se3NwbGljZTpmdW5jdGlvbih0LGUpe3ZhciBuLHIsZixoLHYsZCxnPWModGhpcykseT1hKGcubGVuZ3RoKSxiPW8odCx5KSxtPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PW0/bj1yPTA6MT09PW0/KG49MCxyPXktYik6KG49bS0yLHI9cChsKGkoZSksMCkseS1iKSkseStuLXI+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoIk1heGltdW0gYWxsb3dlZCBsZW5ndGggZXhjZWVkZWQiKTtmb3IoZj11KGcsciksaD0wO2g8cjtoKyspKHY9YitoKWluIGcmJnMoZixoLGdbdl0pO2lmKGYubGVuZ3RoPXIsbjxyKXtmb3IoaD1iO2g8eS1yO2grKylkPWgrbiwodj1oK3IpaW4gZz9nW2RdPWdbdl06ZGVsZXRlIGdbZF07Zm9yKGg9eTtoPnktcituO2gtLSlkZWxldGUgZ1toLTFdfWVsc2UgaWYobj5yKWZvcihoPXktcjtoPmI7aC0tKWQ9aCtuLTEsKHY9aCtyLTEpaW4gZz9nW2RdPWdbdl06ZGVsZXRlIGdbZF07Zm9yKGg9MDtoPG47aCsrKWdbaCtiXT1hcmd1bWVudHNbaCsyXTtyZXR1cm4gZy5sZW5ndGg9eS1yK24sZn19KX0scE5NTzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oIkkrZWIiKSxvPW4oIjJvUm8iKSxpPW4oInhEQlIiKSxhPW4oImc2di8iKSxjPW4oIlNUQUUiKSx1PW4oIjBEa3kiKSxzPW4oIlVUVlMiKSxmPW4oIjZMV0EiKSxsPW4oImhoMXYiKSxwPW4oImdscmsiKSxoPW4oImV3dlciKSx2PW4oIi9HcVUiKSxkPW4oIndFNnYiKSxnPW4oIlhHd0MiKSx5PW4oImZITVkiKSxiPW4oIjMzV2giKSxtPW4oIkpCeTgiKSxrPW4oIkJYL2IiKSxfPW4oImRCZysiKSx3PW4oIkJzOFYiKSx4PW4oIm0vTDgiKSxTPW4oIjBlZWYiKSxFPW4oIlgyVSsiKSxPPW4oImJ1c0UiKSxUPW4oIlZwSVQiKSxJPW4oIjkzSTAiKSxqPW4oIjBCSzIiKSxNPW4oImtPT2wiKSxQPW4oInRpS3AiKSxEPW4oIndETG8iKSxSPW4oImRHL24iKSxOPW4oIjFFNXoiKSxBPW4oImFmTzgiKSxMPW4oInR5Y1IiKS5mb3JFYWNoLEY9SSgiaGlkZGVuIiksej1QKCJ0b1ByaW1pdGl2ZSIpLFo9QS5zZXQsQz1BLmdldHRlckZvcigiU3ltYm9sIiksVz1PYmplY3QucHJvdG90eXBlLEc9by5TeW1ib2wsVT1vLkpTT04sSD1VJiZVLnN0cmluZ2lmeSxCPXcuZixLPXguZixWPWsuZixYPVMuZixZPVQoInN5bWJvbHMiKSxxPVQoIm9wLXN5bWJvbHMiKSxRPVQoInN0cmluZy10by1zeW1ib2wtcmVnaXN0cnkiKSxKPVQoInN5bWJvbC10by1zdHJpbmctcmVnaXN0cnkiKSwkPVQoIndrcyIpLHR0PW8uUU9iamVjdCxldD0hdHR8fCF0dC5wcm90b3R5cGV8fCF0dC5wcm90b3R5cGUuZmluZENoaWxkLG50PWEmJnUoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPXkoSyh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiBLKHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pKT9mdW5jdGlvbih0LGUsbil7dmFyIHI9QihXLGUpO3ImJmRlbGV0ZSBXW2VdLEsodCxlLG4pLHImJnQhPT1XJiZLKFcsZSxyKX06SyxydD1mdW5jdGlvbih0LGUpe3ZhciBuPVlbdF09eShHLnByb3RvdHlwZSk7cmV0dXJuIFoobix7dHlwZToiU3ltYm9sIix0YWc6dCxkZXNjcmlwdGlvbjplfSksYXx8KG4uZGVzY3JpcHRpb249ZSksbn0sb3Q9YyYmInN5bWJvbCI9PXR5cGVvZiBHLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdCh0KWluc3RhbmNlb2YgR30saXQ9ZnVuY3Rpb24odCxlLG4pe3Q9PT1XJiZpdChxLGUsbikscCh0KTt2YXIgcj1kKGUsITApO3JldHVybiBwKG4pLHMoWSxyKT8obi5lbnVtZXJhYmxlPyhzKHQsRikmJnRbRl1bcl0mJih0W0ZdW3JdPSExKSxuPXkobix7ZW51bWVyYWJsZTpnKDAsITEpfSkpOihzKHQsRil8fEsodCxGLGcoMSx7fSkpLHRbRl1bcl09ITApLG50KHQscixuKSk6Syh0LHIsbil9LGF0PWZ1bmN0aW9uKHQsZSl7cCh0KTt2YXIgbj12KGUpLHI9YihuKS5jb25jYXQoZnQobikpO3JldHVybiBMKHIsKGZ1bmN0aW9uKGUpe2EmJiFjdC5jYWxsKG4sZSl8fGl0KHQsZSxuW2VdKX0pKSx0fSxjdD1mdW5jdGlvbih0KXt2YXIgZT1kKHQsITApLG49WC5jYWxsKHRoaXMsZSk7cmV0dXJuISh0aGlzPT09VyYmcyhZLGUpJiYhcyhxLGUpKSYmKCEobnx8IXModGhpcyxlKXx8IXMoWSxlKXx8cyh0aGlzLEYpJiZ0aGlzW0ZdW2VdKXx8bil9LHV0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dih0KSxyPWQoZSwhMCk7aWYobiE9PVd8fCFzKFkscil8fHMocSxyKSl7dmFyIG89QihuLHIpO3JldHVybiFvfHwhcyhZLHIpfHxzKG4sRikmJm5bRl1bcl18fChvLmVudW1lcmFibGU9ITApLG99fSxzdD1mdW5jdGlvbih0KXt2YXIgZT1WKHYodCkpLG49W107cmV0dXJuIEwoZSwoZnVuY3Rpb24odCl7cyhZLHQpfHxzKGosdCl8fG4ucHVzaCh0KX0pKSxufSxmdD1mdW5jdGlvbih0KXt2YXIgZT10PT09VyxuPVYoZT9xOnYodCkpLHI9W107cmV0dXJuIEwobiwoZnVuY3Rpb24odCl7IXMoWSx0KXx8ZSYmIXMoVyx0KXx8ci5wdXNoKFlbdF0pfSkpLHJ9O2N8fChPKChHPWZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIEcpdGhyb3cgVHlwZUVycm9yKCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IiKTt2YXIgdD1hcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/U3RyaW5nKGFyZ3VtZW50c1swXSk6dm9pZCAwLGU9TSh0KSxuPWZ1bmN0aW9uKHQpe3RoaXM9PT1XJiZuLmNhbGwocSx0KSxzKHRoaXMsRikmJnModGhpc1tGXSxlKSYmKHRoaXNbRl1bZV09ITEpLG50KHRoaXMsZSxnKDEsdCkpfTtyZXR1cm4gYSYmZXQmJm50KFcsZSx7Y29uZmlndXJhYmxlOiEwLHNldDpufSkscnQoZSx0KX0pLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBDKHRoaXMpLnRhZ30pKSxTLmY9Y3QseC5mPWl0LHcuZj11dCxtLmY9ay5mPXN0LF8uZj1mdCxhJiYoSyhHLnByb3RvdHlwZSwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcykuZGVzY3JpcHRpb259fSksaXx8TyhXLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsY3Qse3Vuc2FmZTohMH0pKSxELmY9ZnVuY3Rpb24odCl7cmV0dXJuIHJ0KFAodCksdCl9KSxyKHtnbG9iYWw6ITAsd3JhcDohMCxmb3JjZWQ6IWMsc2hhbTohY30se1N5bWJvbDpHfSksTChiKCQpLChmdW5jdGlvbih0KXtSKHQpfSkpLHIoe3RhcmdldDoiU3ltYm9sIixzdGF0OiEwLGZvcmNlZDohY30se2ZvcjpmdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcodCk7aWYocyhRLGUpKXJldHVybiBRW2VdO3ZhciBuPUcoZSk7cmV0dXJuIFFbZV09bixKW25dPWUsbn0sa2V5Rm9yOmZ1bmN0aW9uKHQpe2lmKCFvdCh0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIHN5bWJvbCIpO2lmKHMoSix0KSlyZXR1cm4gSlt0XX0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7ZXQ9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe2V0PSExfX0pLHIoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDohYyxzaGFtOiFhfSx7Y3JlYXQ="
}