tx · 9NiYEfsXfDZFqwXi2xBj3PoGVzGsiSd2TJAxmfaCXGHs

3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P:  -0.14200000 Waves

2020.03.29 15:15 [930718] data 3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P > SELF 0.00000000 Waves

3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P: 2.7c767379.chunk.js_69: "base64:ZiIscWk9aSgiZnVuY3Rpb24iPT09dHlwZW9mIFN0cmluZy5wcm90b3R5cGUudHJpbSYmIVZpLnRyaW0oKSYmIlx1MjAwYiIudHJpbSgpP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX06ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFJlZ0V4cCgiXlsiK1ZpKyJdWyIrVmkrIl0qIikscj1uZXcgUmVnRXhwKCJbIitWaSsiXVsiK1ZpKyJdKiQiKTtyZXR1cm4gZS5yZXBsYWNlKHQsIiIpLnJlcGxhY2UociwiIil9KSxLaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKHIpe3JldHVybiB0LmFwcGx5KHRoaXMsbChbcl0sYXJndW1lbnRzKSl9fSl9KSx6aT1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9fSksR2k9aShmdW5jdGlvbihlKXtyZXR1cm4gdmUoMSxlKX0pLEhpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChlLGZ1bmN0aW9uKCl7Zm9yKHZhciByLG49MSxpPXQsbz0wO248PWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgaTspcj1uPT09ZT9hcmd1bWVudHMubGVuZ3RoOm8raS5sZW5ndGgsaT1pLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLG8scikpLG4rPTEsbz1yO3JldHVybiBpfSl9KSxXaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUodCksbj1bXTtyJiZyLmxlbmd0aDspbltuLmxlbmd0aF09clswXSxyPWUoclsxXSk7cmV0dXJuIG59KSxZaT1jKHFlKE1yLGwpKSxYaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG49MCxpPXQubGVuZ3RoLG89W107bjxpOylZZShlLHI9dFtuXSxvKXx8KG9bby5sZW5ndGhdPXIpLG4rPTE7cmV0dXJuIG99KSxRaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWGkoZSxsKHQscikpfSksJGk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUocik/cjp0KHIpfSksWmk9eGUoRXIpLEppPWcoZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj1yOyFlKG4pOyluPXQobik7cmV0dXJuIG59KSxlbz1pKGZ1bmN0aW9uKGUpe3ZhciB0LHI9W107Zm9yKHQgaW4gZSlyW3IubGVuZ3RoXT1lW3RdO3JldHVybiByfSksdG89ZnVuY3Rpb24oZSl7cmV0dXJue3ZhbHVlOmUsImZhbnRhc3ktbGFuZC9tYXAiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fX0scm89YyhmdW5jdGlvbihlLHQpe3JldHVybiBlKHRvKSh0KS52YWx1ZX0pLG5vPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlKHIpP3Qocik6cn0pLGlvPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gZSlpZihqKHIsZSkmJiFlW3JdKHRbcl0pKXJldHVybiExO3JldHVybiEwfSksb289YyhmdW5jdGlvbihlLHQpe3JldHVybiBpbyhIKFplLGUpLHQpfSksYW89YyhmdW5jdGlvbihlLHQpe3JldHVybiBjdChscihldCkoZSksdCl9KSxzbz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG49MCxpPWUubGVuZ3RoLG89dC5sZW5ndGgsYT1bXTtuPGk7KXtmb3Iocj0wO3I8bzspYVthLmxlbmd0aF09W2Vbbl0sdFtyXV0scis9MTtuKz0xfXJldHVybiBhfSksdW89YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPTAsaT1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk7bjxpOylyW25dPVtlW25dLHRbbl1dLG4rPTE7cmV0dXJuIHJ9KSxjbz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCksaT17fTtyPG47KWlbZVtyXV09dFtyXSxyKz0xO3JldHVybiBpfSksZm89ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPVtdLGk9MCxvPU1hdGgubWluKHQubGVuZ3RoLHIubGVuZ3RoKTtpPG87KW5baV09ZSh0W2ldLHJbaV0pLGkrPTE7cmV0dXJuIG59KTtyLmQodCwiRiIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLHIuZCh0LCJUIixmdW5jdGlvbigpe3JldHVybiBzfSksci5kKHQsIl9fIixmdW5jdGlvbigpe3JldHVybiB1fSksci5kKHQsImFkZCIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pLHIuZCh0LCJhZGRJbmRleCIsZnVuY3Rpb24oKXtyZXR1cm4geX0pLHIuZCh0LCJhZGp1c3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSxyLmQodCwiYWxsIixmdW5jdGlvbigpe3JldHVybiBUfSksci5kKHQsImFsbFBhc3MiLGZ1bmN0aW9uKCl7cmV0dXJuICR9KSxyLmQodCwiYWx3YXlzIixmdW5jdGlvbigpe3JldHVybiBvfSksci5kKHQsImFuZCIsZnVuY3Rpb24oKXtyZXR1cm4gWn0pLHIuZCh0LCJhbnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRlfSksci5kKHQsImFueVBhc3MiLGZ1bmN0aW9uKCl7cmV0dXJuIHJlfSksci5kKHQsImFwIixmdW5jdGlvbigpe3JldHVybiBuZX0pLHIuZCh0LCJhcGVydHVyZSIsZnVuY3Rpb24oKXtyZXR1cm4gYWV9KSxyLmQodCwiYXBwZW5kIixmdW5jdGlvbigpe3JldHVybiBzZX0pLHIuZCh0LCJhcHBseSIsZnVuY3Rpb24oKXtyZXR1cm4gdWV9KSxyLmQodCwiYXBwbHlTcGVjIixmdW5jdGlvbigpe3JldHVybiBmZX0pLHIuZCh0LCJhcHBseVRvIixmdW5jdGlvbigpe3JldHVybiBsZX0pLHIuZCh0LCJhc2NlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGhlfSksci5kKHQsImFzc29jIixmdW5jdGlvbigpe3JldHVybiBwZX0pLHIuZCh0LCJhc3NvY1BhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIGdlfSksci5kKHQsImJpbmFyeSIsZnVuY3Rpb24oKXtyZXR1cm4gbWV9KSxyLmQodCwiYmluZCIsZnVuY3Rpb24oKXtyZXR1cm4gTn0pLHIuZCh0LCJib3RoIixmdW5jdGlvbigpe3JldHVybiBFZX0pLHIuZCh0LCJjYWxsIixmdW5jdGlvbigpe3JldHVybiBUZX0pLHIuZCh0LCJjaGFpbiIsZnVuY3Rpb24oKXtyZXR1cm4geGV9KSxyLmQodCwiY2xhbXAiLGZ1bmN0aW9uKCl7cmV0dXJuIEllfSksci5kKHQsImNsb25lIixmdW5jdGlvbigpe3JldHVybiBQZX0pLHIuZCh0LCJjb21wYXJhdG9yIixmdW5jdGlvbigpe3JldHVybiBSZX0pLHIuZCh0LCJjb21wbGVtZW50IixmdW5jdGlvbigpe3JldHVybiBNZX0pLHIuZCh0LCJjb21wb3NlIixmdW5jdGlvbigpe3JldHVybiBxZX0pLHIuZCh0LCJjb21wb3NlSyIsZnVuY3Rpb24oKXtyZXR1cm4gS2V9KSxyLmQodCwiY29tcG9zZVAiLGZ1bmN0aW9uKCl7cmV0dXJuIEhlfSksci5kKHQsImNvbmNhdCIsZnVuY3Rpb24oKXtyZXR1cm4gbHR9KSxyLmQodCwiY29uZCIsZnVuY3Rpb24oKXtyZXR1cm4gaHR9KSxyLmQodCwiY29uc3RydWN0IixmdW5jdGlvbigpe3JldHVybiBkdH0pLHIuZCh0LCJjb25zdHJ1Y3ROIixmdW5jdGlvbigpe3JldHVybiBwdH0pLHIuZCh0LCJjb250YWlucyIsZnVuY3Rpb24oKXtyZXR1cm4geXR9KSxyLmQodCwiY29udmVyZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGd0fSksci5kKHQsImNvdW50QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIGJ0fSksci5kKHQsImN1cnJ5IixmdW5jdGlvbigpe3JldHVybiB3ZX0pLHIuZCh0LCJjdXJyeU4iLGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSxyLmQodCwiZGVjIixmdW5jdGlvbigpe3JldHVybiBfdH0pLHIuZCh0LCJkZWZhdWx0VG8iLGZ1bmN0aW9uKCl7cmV0dXJuIFN0fSksci5kKHQsImRlc2NlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIEV0fSksci5kKHQsImRpZmZlcmVuY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHd0fSksci5kKHQsImRpZmZlcmVuY2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBUdH0pLHIuZCh0LCJkaXNzb2MiLGZ1bmN0aW9uKCl7cmV0dXJuIEF0fSksci5kKHQsImRpc3NvY1BhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIEl0fSksci5kKHQsImRpdmlkZSIsZnVuY3Rpb24oKXtyZXR1cm4ga3R9KSxyLmQodCwiZHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gTnR9KSxyLmQodCwiZHJvcExhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuIEx0fSksci5kKHQsImRyb3BMYXN0V2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0fSksci5kKHQsImRyb3BSZXBlYXRzIixmdW5jdGlvbigpe3JldHVybiBHdH0pLHIuZCh0LCJkcm9wUmVwZWF0c1dpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIHp0fSksci5kKHQsImRyb3BXaGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gV3R9KSxyLmQodCwiZWl0aGVyIixmdW5jdGlvbigpe3JldHVybiBYdH0pLHIuZCh0LCJlbXB0eSIsZnVuY3Rpb24oKXtyZXR1cm4gUXR9KSxyLmQodCwiZW5kc1dpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFp0fSksci5kKHQsImVxQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIEp0fSksci5kKHQsImVxUHJvcHMiLGZ1bmN0aW9uKCl7cmV0dXJuIGVyfSksci5kKHQsImVxdWFscyIsZnVuY3Rpb24oKXtyZXR1cm4gWmV9KSxyLmQodCwiZXZvbHZlIixmdW5jdGlvbigpe3JldHVybiB0cn0pLHIuZCh0LCJmaWx0ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHV0fSksci5kKHQsImZpbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIG5yfSksci5kKHQsImZpbmRJbmRleCIsZnVuY3Rpb24oKXtyZXR1cm4gb3J9KSxyLmQodCwiZmluZExhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHNyfSksci5kKHQsImZpbmRMYXN0SW5kZXgiLGZ1bmN0aW9uKCl7cmV0dXJuIGNyfSksci5kKHQsImZsYXR0ZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGZyfSksci5kKHQsImZsaXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGxyfSksci5kKHQsImZvckVhY2giLGZ1bmN0aW9uKCl7cmV0dXJuIGhyfSksci5kKHQsImZvckVhY2hPYmpJbmRleGVkIixmdW5jdGlvbigpe3JldHVybiBwcn0pLHIuZCh0LCJmcm9tUGFpcnMiLGZ1bmN0aW9uKCl7cmV0dXJuIGRyfSksci5kKHQsImdyb3VwQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHlyfSksci5kKHQsImdyb3VwV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gZ3J9KSxyLmQodCwiZ3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHZyfSksci5kKHQsImd0ZSIsZnVuY3Rpb24oKXtyZXR1cm4gbXJ9KSxyLmQodCwiaGFzIixmdW5jdGlvbigpe3JldHVybiBicn0pLHIuZCh0LCJoYXNJbiIsZnVuY3Rpb24oKXtyZXR1cm4gX3J9KSxyLmQodCwiaGVhZCIsZnVuY3Rpb24oKXtyZXR1cm4gU3J9KSxyLmQodCwiaWRlbnRpY2FsIixmdW5jdGlvbigpe3JldHVybiBYZX0pLHIuZCh0LCJpZGVudGl0eSIsZnVuY3Rpb24oKXtyZXR1cm4gd3J9KSxyLmQodCwiaWZFbHNlIixmdW5jdGlvbigpe3JldHVybiBUcn0pLHIuZCh0LCJpbmMiLGZ1bmN0aW9uKCl7cmV0dXJuIEFyfSksci5kKHQsImluZGV4QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIENyfSksci5kKHQsImluZGV4T2YiLGZ1bmN0aW9uKCl7cmV0dXJuIHhyfSksci5kKHQsImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIElyfSksci5kKHQsImlubmVySm9pbiIsZnVuY3Rpb24oKXtyZXR1cm4ga3J9KSxyLmQodCwiaW5zZXJ0IixmdW5jdGlvbigpe3JldHVybiBPcn0pLHIuZCh0LCJpbnNlcnRBbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIE5yfSksci5kKHQsImludGVyc2VjdGlvbiIsZnVuY3Rpb24oKXtyZXR1cm4gTHJ9KSxyLmQodCwiaW50ZXJzcGVyc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIERyfSksci5kKHQsImludG8iLGZ1bmN0aW9uKCl7cmV0dXJuIEtyfSksci5kKHQsImludmVydCIsZnVuY3Rpb24oKXtyZXR1cm4genJ9KSxyLmQodCwiaW52ZXJ0T2JqIixmdW5jdGlvbigpe3JldHVybiBHcn0pLHIuZCh0LCJpbnZva2VyIixmdW5jdGlvbigpe3JldHVybiBIcn0pLHIuZCh0LCJpcyIsZnVuY3Rpb24oKXtyZXR1cm4gV3J9KSxyLmQodCwiaXNFbXB0eSIsZnVuY3Rpb24oKXtyZXR1cm4gWXJ9KSxyLmQodCwiaXNOaWwiLGZ1bmN0aW9uKCl7cmV0dXJuIHllfSksci5kKHQsImpvaW4iLGZ1bmN0aW9uKCl7cmV0dXJuIFhyfSksci5kKHQsImp1eHQiLGZ1bmN0aW9uKCl7cmV0dXJuIFFyfSksci5kKHQsImtleXMiLGZ1bmN0aW9uKCl7cmV0dXJuIEd9KSxyLmQodCwia2V5c0luIixmdW5jdGlvbigpe3JldHVybiAkcn0pLHIuZCh0LCJsYXN0IixmdW5jdGlvbigpe3JldHVybiBLdH0pLHIuZCh0LCJsYXN0SW5kZXhPZiIsZnVuY3Rpb24oKXtyZXR1cm4gWnJ9KSxyLmQodCwibGVuZ3RoIixmdW5jdGlvbigpe3JldHVybiBlbn0pLHIuZCh0LCJsZW5zIixmdW5jdGlvbigpe3JldHVybiB0bn0pLHIuZCh0LCJsZW5zSW5kZXgiLGZ1bmN0aW9uKCl7cmV0dXJuIHJufSksci5kKHQsImxlbnNQYXRoIixmdW5jdGlvbigpe3JldHVybiBubn0pLHIuZCh0LCJsZW5zUHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gb259KSxyLmQodCwibGlmdCIsZnVuY3Rpb24oKXtyZXR1cm4gU2V9KSxyLmQodCwibGlmdE4iLGZ1bmN0aW9uKCl7cmV0dXJuIF9lfSksci5kKHQsImx0IixmdW5jdGlvbigpe3JldHVybiBhbn0pLHIuZCh0LCJsdGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHNufSksci5kKHQsIm1hcCIsZnVuY3Rpb24oKXtyZXR1cm4gSH0pLHIuZCh0LCJtYXBBY2N1bSIsZnVuY3Rpb24oKXtyZXR1cm4gdW59KSxyLmQodCwibWFwQWNjdW1SaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gY259KSxyLmQodCwibWFwT2JqSW5kZXhlZCIsZnVuY3Rpb24oKXtyZXR1cm4gZm59KSxyLmQodCwibWF0Y2giLGZ1bmN0aW9uKCl7cmV0dXJuIGxufSksci5kKHQsIm1hdGhNb2QiLGZ1bmN0aW9uKCl7cmV0dXJuIGhufSksci5kKHQsIm1heCIsZnVuY3Rpb24oKXtyZXR1cm4gQX0pLHIuZCh0LCJtYXhCeSIsZnVuY3Rpb24oKXtyZXR1cm4gcG59KSxyLmQodCwibWVhbiIsZnVuY3Rpb24oKXtyZXR1cm4geW59KSxyLmQodCwibWVkaWFuIixmdW5jdGlvbigpe3JldHVybiBnbn0pLHIuZCh0LCJtZW1vaXplIixmdW5jdGlvbigpe3JldHVybiBtbn0pLHIuZCh0LCJtZW1vaXplV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gdm59KSxyLmQodCwibWVyZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGJufSksci5kKHQsIm1lcmdlQWxsIixmdW5jdGlvbigpe3JldHVybiBfbn0pLHIuZCh0LCJtZXJnZURlZXBMZWZ0IixmdW5jdGlvbigpe3JldHVybiB3bn0pLHIuZCh0LCJtZXJnZURlZXBSaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gVG59KSxyLmQodCwibWVyZ2VEZWVwV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gQW59KSxyLmQodCwibWVyZ2VEZWVwV2l0aEtleSIsZnVuY3Rpb24oKXtyZXR1cm4gRW59KSxyLmQodCwibWVyZ2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBDbn0pLHIuZCh0LCJtZXJnZVdpdGhLZXkiLGZ1bmN0aW9uKCl7cmV0dXJuIFNufSksci5kKHQsIm1pbiIsZnVuY3Rpb24oKXtyZXR1cm4geG59KSxyLmQodCwibWluQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIElufSksci5kKHQsIm1vZHVsbyIsZnVuY3Rpb24oKXtyZXR1cm4ga259KSxyLmQodCwibXVsdGlwbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIE9ufSksci5kKHQsIm5BcnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHZlfSksci5kKHQsIm5lZ2F0ZSIsZnVuY3Rpb24oKXtyZXR1cm4gTm59KSxyLmQodCwibm9uZSIsZnVuY3Rpb24oKXtyZXR1cm4gUG59KSxyLmQodCwibm90IixmdW5jdGlvbigpe3JldHVybiBCZX0pLHIuZCh0LCJudGgiLGZ1bmN0aW9uKCl7cmV0dXJuIHF0fSksci5kKHQsIm50aEFyZyIsZnVuY3Rpb24oKXtyZXR1cm4gUm59KSxyLmQodCwibyIsZnVuY3Rpb24oKXtyZXR1cm4gQm59KSxyLmQodCwib2JqT2YiLGZ1bmN0aW9uKCl7cmV0dXJuIFVyfSksci5kKHQsIm9mIixmdW5jdGlvbigpe3JldHVybiBMbn0pLHIuZCh0LCJvbWl0IixmdW5jdGlvbigpe3JldHVybiBEbn0pLHIuZCh0LCJvbmNlIixmdW5jdGlvbigpe3JldHVybiBqbn0pLHIuZCh0LCJvciIsZnVuY3Rpb24oKXtyZXR1cm4gWXR9KSxyLmQodCwib3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gVW59KSxyLmQodCwicGFpciIsZnVuY3Rpb24oKXtyZXR1cm4gRm59KSxyLmQodCwicGFydGlhbCIsZnVuY3Rpb24oKXtyZXR1cm4gcW59KSxyLmQodCwicGFydGlhbFJpZ2h0IixmdW5jdGlvbigpe3JldHVybiBLbn0pLHIuZCh0LCJwYXJ0aXRpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIHpufSksci5kKHQsInBhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KSxyLmQodCwicGF0aEVxIixmdW5jdGlvbigpe3JldHVybiBHbn0pLHIuZCh0LCJwYXRoT3IiLGZ1bmN0aW9uKCl7cmV0dXJuIEhufSksci5kKHQsInBhdGhTYXRpc2ZpZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIFdufSksci5kKHQsInBpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFlufSksci5kKHQsInBpY2tBbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIFhufSksci5kKHQsInBpY2tCeSIsZnVuY3Rpb24oKXtyZXR1cm4gUW59KSxyLmQodCwicGlwZSIsZnVuY3Rpb24oKXtyZXR1cm4gRmV9KSxyLmQodCwicGlwZUsiLGZ1bmN0aW9uKCl7cmV0dXJuICRufSksci5kKHQsInBpcGVQIixmdW5jdGlvbigpe3JldHVybiBHZX0pLHIuZCh0LCJwbHVjayIsZnVuY3Rpb24oKXtyZXR1cm4gWH0pLHIuZCh0LCJwcmVwZW5kIixmdW5jdGlvbigpe3JldHVybiBabn0pLHIuZCh0LCJwcm9kdWN0IixmdW5jdGlvbigpe3JldHVybiBKbn0pLHIuZCh0LCJwcm9qZWN0IixmdW5jdGlvbigpe3JldHVybiB0aX0pLHIuZCh0LCJwcm9wIixmdW5jdGlvbigpe3JldHVybiBZfSksci5kKHQsInByb3BFcSIsZnVuY3Rpb24oKXtyZXR1cm4gcml9KSxyLmQodCwicHJvcElzIixmdW5jdGlvbigpe3JldHVybiBuaX0pLHIuZCh0LCJwcm9wT3IiLGZ1bmN0aW9uKCl7cmV0dXJuIGlpfSksci5kKHQsInByb3BTYXRpc2ZpZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIG9pfSksci5kKHQsInByb3BzIixmdW5jdGlvbigpe3JldHVybiBhaX0pLHIuZCh0LCJyYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gc2l9KSxyLmQodCwicmVkdWNlIixmdW5jdGlvbigpe3JldHVybiBRfSksci5kKHQsInJlZHVjZUJ5IixmdW5jdGlvbigpe3JldHVybiBtdH0pLHIuZCh0LCJyZWR1Y2VSaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gdWl9KSxyLmQodCwicmVkdWNlV2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIGNpfSksci5kKHQsInJlZHVjZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGZpfSksci5kKHQsInJlamVjdCIsZnVuY3Rpb24oKXtyZXR1cm4gY3R9KSxyLmQodCwicmVtb3ZlIixmdW5jdGlvbigpe3JldHVybiBDdH0pLHIuZCh0LCJyZXBlYXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGhpfSksci5kKHQsInJlcGxhY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHBpfSksci5kKHQsInJldmVyc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFZlfSksci5kKHQsInNjYW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGRpfSksci5kKHQsInNlcXVlbmNlIixmdW5jdGlvbigpe3JldHVybiB5aX0pLHIuZCh0LCJzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGdpfSksci5kKHQsInNsaWNlIixmdW5jdGlvbigpe3JldHVybiBqZX0pLHIuZCh0LCJzb3J0IixmdW5jdGlvbigpe3JldHVybiB2aX0pLHIuZCh0LCJzb3J0QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIG1pfSksci5kKHQsInNvcnRXaXRoIixmdW5jdGlvbigpe3JldHVybiBiaX0pLHIuZCh0LCJzcGxpdCIsZnVuY3Rpb24oKXtyZXR1cm4gX2l9KSxyLmQodCwic3BsaXRBdCIsZnVuY3Rpb24oKXtyZXR1cm4gU2l9KSxyLmQodCwic3BsaXRFdmVyeSIsZnVuY3Rpb24oKXtyZXR1cm4gRWl9KSxyLmQodCwic3BsaXRXaGVuIixmdW5jdGlvbigpe3JldHVybiB3aX0pLHIuZCh0LCJzdGFydHNXaXRoIixmdW5jdGlvbigpe3JldHVybiBUaX0pLHIuZCh0LCJzdWJ0cmFjdCIsZnVuY3Rpb24oKXtyZXR1cm4gQWl9KSxyLmQodCwic3VtIixmdW5jdGlvbigpe3JldHVybiBkbn0pLHIuZCh0LCJzeW1tZXRyaWNEaWZmZXJlbmNlIixmdW5jdGlvbigpe3JldHVybiBDaX0pLHIuZCh0LCJzeW1tZXRyaWNEaWZmZXJlbmNlV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4geGl9KSxyLmQodCwidGFpbCIsZnVuY3Rpb24oKXtyZXR1cm4gVWV9KSxyLmQodCwidGFrZSIsZnVuY3Rpb24oKXtyZXR1cm4gUnR9KSxyLmQodCwidGFrZUxhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuICR0fSksci5kKHQsInRha2VMYXN0V2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIElpfSksci5kKHQsInRha2VXaGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gT2l9KSxyLmQodCwidGFwIixmdW5jdGlvbigpe3JldHVybiBQaX0pLHIuZCh0LCJ0ZXN0IixmdW5jdGlvbigpe3JldHVybiBSaX0pLHIuZCh0LCJ0aW1lcyIsZnVuY3Rpb24oKXtyZXR1cm4gbGl9KSxyLmQodCwidG9Mb3dlciIsZnVuY3Rpb24oKXtyZXR1cm4gQml9KSxyLmQodCwidG9QYWlycyIsZnVuY3Rpb24oKXtyZXR1cm4gTWl9KSxyLmQodCwidG9QYWlyc0luIixmdW5jdGlvbigpe3JldHVybiBMaX0pLHIuZCh0LCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gZnR9KSxyLmQodCwidG9VcHBlciIsZnVuY3Rpb24oKXtyZXR1cm4gRGl9KSxyLmQodCwidHJhbnNkdWNlIixmdW5jdGlvbigpe3JldHVybiBqaX0pLHIuZCh0LCJ0cmFuc3Bvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFVpfSksci5kKHQsInRyYXZlcnNlIixmdW5jdGlvbigpe3JldHVybiBGaX0pLHIuZCh0LCJ0cmltIixmdW5jdGlvbigpe3JldHVybiBxaX0pLHIuZCh0LCJ0cnlDYXRjaCIsZnVuY3Rpb24oKXtyZXR1cm4gS2l9KSxyLmQodCwidHlwZSIsZnVuY3Rpb24oKXtyZXR1cm4gT2V9KSxyLmQodCwidW5hcHBseSIsZnVuY3Rpb24oKXtyZXR1cm4geml9KSxyLmQodCwidW5hcnkiLGZ1bmN0aW9uKCl7cmV0dXJuIEdpfSksci5kKHQsInVuY3VycnlOIixmdW5jdGlvbigpe3JldHVybiBIaX0pLHIuZCh0LCJ1bmZvbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIFdpfSksci5kKHQsInVuaW9uIixmdW5jdGlvbigpe3JldHVybiBZaX0pLHIuZCh0LCJ1bmlvbldpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFFpfSksci5kKHQsInVuaXEiLGZ1bmN0aW9uKCl7cmV0dXJuIE1yfSksci5kKHQsInVuaXFCeSIsZnVuY3Rpb24oKXtyZXR1cm4gQnJ9KSxyLmQodCwidW5pcVdpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFhpfSksci5kKHQsInVubGVzcyIsZnVuY3Rpb24oKXtyZXR1cm4gJGl9KSxyLmQodCwidW5uZXN0IixmdW5jdGlvbigpe3JldHVybiBaaX0pLHIuZCh0LCJ1bnRpbCIsZnVuY3Rpb24oKXtyZXR1cm4gSml9KSxyLmQodCwidXBkYXRlIixmdW5jdGlvbigpe3JldHVybiB4dH0pLHIuZCh0LCJ1c2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBlaX0pLHIuZCh0LCJ2YWx1ZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGNlfSksci5kKHQsInZhbHVlc0luIixmdW5jdGlvbigpe3JldHVybiBlb30pLHIuZCh0LCJ2aWV3IixmdW5jdGlvbigpe3JldHVybiByb30pLHIuZCh0LCJ3aGVuIixmdW5jdGlvbigpe3JldHVybiBub30pLHIuZCh0LCJ3aGVyZSIsZnVuY3Rpb24oKXtyZXR1cm4gaW99KSxyLmQodCwid2hlcmVFcSIsZnVuY3Rpb24oKXtyZXR1cm4gb299KSxyLmQodCwid2l0aG91dCIsZnVuY3Rpb24oKXtyZXR1cm4gYW99KSxyLmQodCwieHByb2QiLGZ1bmN0aW9uKCl7cmV0dXJuIHNvfSksci5kKHQsInppcCIsZnVuY3Rpb24oKXtyZXR1cm4gdW99KSxyLmQodCwiemlwT2JqIixmdW5jdGlvbigpe3JldHVybiBjb30pLHIuZCh0LCJ6aXBXaXRoIixmdW5jdGlvbigpe3JldHVybiBmb30pfV1dKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Mi43Yzc2NzM3OS5jaHVuay5qcy5tYXA=" == "base64:ZiIscWk9aSgiZnVuY3Rpb24iPT09dHlwZW9mIFN0cmluZy5wcm90b3R5cGUudHJpbSYmIVZpLnRyaW0oKSYmIlx1MjAwYiIudHJpbSgpP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX06ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFJlZ0V4cCgiXlsiK1ZpKyJdWyIrVmkrIl0qIikscj1uZXcgUmVnRXhwKCJbIitWaSsiXVsiK1ZpKyJdKiQiKTtyZXR1cm4gZS5yZXBsYWNlKHQsIiIpLnJlcGxhY2UociwiIil9KSxLaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKHIpe3JldHVybiB0LmFwcGx5KHRoaXMsbChbcl0sYXJndW1lbnRzKSl9fSl9KSx6aT1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9fSksR2k9aShmdW5jdGlvbihlKXtyZXR1cm4gdmUoMSxlKX0pLEhpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChlLGZ1bmN0aW9uKCl7Zm9yKHZhciByLG49MSxpPXQsbz0wO248PWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgaTspcj1uPT09ZT9hcmd1bWVudHMubGVuZ3RoOm8raS5sZW5ndGgsaT1pLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLG8scikpLG4rPTEsbz1yO3JldHVybiBpfSl9KSxXaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUodCksbj1bXTtyJiZyLmxlbmd0aDspbltuLmxlbmd0aF09clswXSxyPWUoclsxXSk7cmV0dXJuIG59KSxZaT1jKHFlKE1yLGwpKSxYaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG49MCxpPXQubGVuZ3RoLG89W107bjxpOylZZShlLHI9dFtuXSxvKXx8KG9bby5sZW5ndGhdPXIpLG4rPTE7cmV0dXJuIG99KSxRaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWGkoZSxsKHQscikpfSksJGk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUocik/cjp0KHIpfSksWmk9eGUoRXIpLEppPWcoZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj1yOyFlKG4pOyluPXQobik7cmV0dXJuIG59KSxlbz1pKGZ1bmN0aW9uKGUpe3ZhciB0LHI9W107Zm9yKHQgaW4gZSlyW3IubGVuZ3RoXT1lW3RdO3JldHVybiByfSksdG89ZnVuY3Rpb24oZSl7cmV0dXJue3ZhbHVlOmUsImZhbnRhc3ktbGFuZC9tYXAiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fX0scm89YyhmdW5jdGlvbihlLHQpe3JldHVybiBlKHRvKSh0KS52YWx1ZX0pLG5vPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlKHIpP3Qocik6cn0pLGlvPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gZSlpZihqKHIsZSkmJiFlW3JdKHRbcl0pKXJldHVybiExO3JldHVybiEwfSksb289YyhmdW5jdGlvbihlLHQpe3JldHVybiBpbyhIKFplLGUpLHQpfSksYW89YyhmdW5jdGlvbihlLHQpe3JldHVybiBjdChscihldCkoZSksdCl9KSxzbz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG49MCxpPWUubGVuZ3RoLG89dC5sZW5ndGgsYT1bXTtuPGk7KXtmb3Iocj0wO3I8bzspYVthLmxlbmd0aF09W2Vbbl0sdFtyXV0scis9MTtuKz0xfXJldHVybiBhfSksdW89YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPTAsaT1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk7bjxpOylyW25dPVtlW25dLHRbbl1dLG4rPTE7cmV0dXJuIHJ9KSxjbz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCksaT17fTtyPG47KWlbZVtyXV09dFtyXSxyKz0xO3JldHVybiBpfSksZm89ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPVtdLGk9MCxvPU1hdGgubWluKHQubGVuZ3RoLHIubGVuZ3RoKTtpPG87KW5baV09ZSh0W2ldLHJbaV0pLGkrPTE7cmV0dXJuIG59KTtyLmQodCwiRiIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLHIuZCh0LCJUIixmdW5jdGlvbigpe3JldHVybiBzfSksci5kKHQsIl9fIixmdW5jdGlvbigpe3JldHVybiB1fSksci5kKHQsImFkZCIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pLHIuZCh0LCJhZGRJbmRleCIsZnVuY3Rpb24oKXtyZXR1cm4geX0pLHIuZCh0LCJhZGp1c3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSxyLmQodCwiYWxsIixmdW5jdGlvbigpe3JldHVybiBUfSksci5kKHQsImFsbFBhc3MiLGZ1bmN0aW9uKCl7cmV0dXJuICR9KSxyLmQodCwiYWx3YXlzIixmdW5jdGlvbigpe3JldHVybiBvfSksci5kKHQsImFuZCIsZnVuY3Rpb24oKXtyZXR1cm4gWn0pLHIuZCh0LCJhbnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRlfSksci5kKHQsImFueVBhc3MiLGZ1bmN0aW9uKCl7cmV0dXJuIHJlfSksci5kKHQsImFwIixmdW5jdGlvbigpe3JldHVybiBuZX0pLHIuZCh0LCJhcGVydHVyZSIsZnVuY3Rpb24oKXtyZXR1cm4gYWV9KSxyLmQodCwiYXBwZW5kIixmdW5jdGlvbigpe3JldHVybiBzZX0pLHIuZCh0LCJhcHBseSIsZnVuY3Rpb24oKXtyZXR1cm4gdWV9KSxyLmQodCwiYXBwbHlTcGVjIixmdW5jdGlvbigpe3JldHVybiBmZX0pLHIuZCh0LCJhcHBseVRvIixmdW5jdGlvbigpe3JldHVybiBsZX0pLHIuZCh0LCJhc2NlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGhlfSksci5kKHQsImFzc29jIixmdW5jdGlvbigpe3JldHVybiBwZX0pLHIuZCh0LCJhc3NvY1BhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIGdlfSksci5kKHQsImJpbmFyeSIsZnVuY3Rpb24oKXtyZXR1cm4gbWV9KSxyLmQodCwiYmluZCIsZnVuY3Rpb24oKXtyZXR1cm4gTn0pLHIuZCh0LCJib3RoIixmdW5jdGlvbigpe3JldHVybiBFZX0pLHIuZCh0LCJjYWxsIixmdW5jdGlvbigpe3JldHVybiBUZX0pLHIuZCh0LCJjaGFpbiIsZnVuY3Rpb24oKXtyZXR1cm4geGV9KSxyLmQodCwiY2xhbXAiLGZ1bmN0aW9uKCl7cmV0dXJuIEllfSksci5kKHQsImNsb25lIixmdW5jdGlvbigpe3JldHVybiBQZX0pLHIuZCh0LCJjb21wYXJhdG9yIixmdW5jdGlvbigpe3JldHVybiBSZX0pLHIuZCh0LCJjb21wbGVtZW50IixmdW5jdGlvbigpe3JldHVybiBNZX0pLHIuZCh0LCJjb21wb3NlIixmdW5jdGlvbigpe3JldHVybiBxZX0pLHIuZCh0LCJjb21wb3NlSyIsZnVuY3Rpb24oKXtyZXR1cm4gS2V9KSxyLmQodCwiY29tcG9zZVAiLGZ1bmN0aW9uKCl7cmV0dXJuIEhlfSksci5kKHQsImNvbmNhdCIsZnVuY3Rpb24oKXtyZXR1cm4gbHR9KSxyLmQodCwiY29uZCIsZnVuY3Rpb24oKXtyZXR1cm4gaHR9KSxyLmQodCwiY29uc3RydWN0IixmdW5jdGlvbigpe3JldHVybiBkdH0pLHIuZCh0LCJjb25zdHJ1Y3ROIixmdW5jdGlvbigpe3JldHVybiBwdH0pLHIuZCh0LCJjb250YWlucyIsZnVuY3Rpb24oKXtyZXR1cm4geXR9KSxyLmQodCwiY29udmVyZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGd0fSksci5kKHQsImNvdW50QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIGJ0fSksci5kKHQsImN1cnJ5IixmdW5jdGlvbigpe3JldHVybiB3ZX0pLHIuZCh0LCJjdXJyeU4iLGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSxyLmQodCwiZGVjIixmdW5jdGlvbigpe3JldHVybiBfdH0pLHIuZCh0LCJkZWZhdWx0VG8iLGZ1bmN0aW9uKCl7cmV0dXJuIFN0fSksci5kKHQsImRlc2NlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIEV0fSksci5kKHQsImRpZmZlcmVuY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHd0fSksci5kKHQsImRpZmZlcmVuY2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBUdH0pLHIuZCh0LCJkaXNzb2MiLGZ1bmN0aW9uKCl7cmV0dXJuIEF0fSksci5kKHQsImRpc3NvY1BhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIEl0fSksci5kKHQsImRpdmlkZSIsZnVuY3Rpb24oKXtyZXR1cm4ga3R9KSxyLmQodCwiZHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gTnR9KSxyLmQodCwiZHJvcExhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuIEx0fSksci5kKHQsImRyb3BMYXN0V2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0fSksci5kKHQsImRyb3BSZXBlYXRzIixmdW5jdGlvbigpe3JldHVybiBHdH0pLHIuZCh0LCJkcm9wUmVwZWF0c1dpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIHp0fSksci5kKHQsImRyb3BXaGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gV3R9KSxyLmQodCwiZWl0aGVyIixmdW5jdGlvbigpe3JldHVybiBYdH0pLHIuZCh0LCJlbXB0eSIsZnVuY3Rpb24oKXtyZXR1cm4gUXR9KSxyLmQodCwiZW5kc1dpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFp0fSksci5kKHQsImVxQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIEp0fSksci5kKHQsImVxUHJvcHMiLGZ1bmN0aW9uKCl7cmV0dXJuIGVyfSksci5kKHQsImVxdWFscyIsZnVuY3Rpb24oKXtyZXR1cm4gWmV9KSxyLmQodCwiZXZvbHZlIixmdW5jdGlvbigpe3JldHVybiB0cn0pLHIuZCh0LCJmaWx0ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHV0fSksci5kKHQsImZpbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIG5yfSksci5kKHQsImZpbmRJbmRleCIsZnVuY3Rpb24oKXtyZXR1cm4gb3J9KSxyLmQodCwiZmluZExhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHNyfSksci5kKHQsImZpbmRMYXN0SW5kZXgiLGZ1bmN0aW9uKCl7cmV0dXJuIGNyfSksci5kKHQsImZsYXR0ZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGZyfSksci5kKHQsImZsaXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGxyfSksci5kKHQsImZvckVhY2giLGZ1bmN0aW9uKCl7cmV0dXJuIGhyfSksci5kKHQsImZvckVhY2hPYmpJbmRleGVkIixmdW5jdGlvbigpe3JldHVybiBwcn0pLHIuZCh0LCJmcm9tUGFpcnMiLGZ1bmN0aW9uKCl7cmV0dXJuIGRyfSksci5kKHQsImdyb3VwQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHlyfSksci5kKHQsImdyb3VwV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gZ3J9KSxyLmQodCwiZ3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHZyfSksci5kKHQsImd0ZSIsZnVuY3Rpb24oKXtyZXR1cm4gbXJ9KSxyLmQodCwiaGFzIixmdW5jdGlvbigpe3JldHVybiBicn0pLHIuZCh0LCJoYXNJbiIsZnVuY3Rpb24oKXtyZXR1cm4gX3J9KSxyLmQodCwiaGVhZCIsZnVuY3Rpb24oKXtyZXR1cm4gU3J9KSxyLmQodCwiaWRlbnRpY2FsIixmdW5jdGlvbigpe3JldHVybiBYZX0pLHIuZCh0LCJpZGVudGl0eSIsZnVuY3Rpb24oKXtyZXR1cm4gd3J9KSxyLmQodCwiaWZFbHNlIixmdW5jdGlvbigpe3JldHVybiBUcn0pLHIuZCh0LCJpbmMiLGZ1bmN0aW9uKCl7cmV0dXJuIEFyfSksci5kKHQsImluZGV4QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIENyfSksci5kKHQsImluZGV4T2YiLGZ1bmN0aW9uKCl7cmV0dXJuIHhyfSksci5kKHQsImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIElyfSksci5kKHQsImlubmVySm9pbiIsZnVuY3Rpb24oKXtyZXR1cm4ga3J9KSxyLmQodCwiaW5zZXJ0IixmdW5jdGlvbigpe3JldHVybiBPcn0pLHIuZCh0LCJpbnNlcnRBbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIE5yfSksci5kKHQsImludGVyc2VjdGlvbiIsZnVuY3Rpb24oKXtyZXR1cm4gTHJ9KSxyLmQodCwiaW50ZXJzcGVyc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIERyfSksci5kKHQsImludG8iLGZ1bmN0aW9uKCl7cmV0dXJuIEtyfSksci5kKHQsImludmVydCIsZnVuY3Rpb24oKXtyZXR1cm4genJ9KSxyLmQodCwiaW52ZXJ0T2JqIixmdW5jdGlvbigpe3JldHVybiBHcn0pLHIuZCh0LCJpbnZva2VyIixmdW5jdGlvbigpe3JldHVybiBIcn0pLHIuZCh0LCJpcyIsZnVuY3Rpb24oKXtyZXR1cm4gV3J9KSxyLmQodCwiaXNFbXB0eSIsZnVuY3Rpb24oKXtyZXR1cm4gWXJ9KSxyLmQodCwiaXNOaWwiLGZ1bmN0aW9uKCl7cmV0dXJuIHllfSksci5kKHQsImpvaW4iLGZ1bmN0aW9uKCl7cmV0dXJuIFhyfSksci5kKHQsImp1eHQiLGZ1bmN0aW9uKCl7cmV0dXJuIFFyfSksci5kKHQsImtleXMiLGZ1bmN0aW9uKCl7cmV0dXJuIEd9KSxyLmQodCwia2V5c0luIixmdW5jdGlvbigpe3JldHVybiAkcn0pLHIuZCh0LCJsYXN0IixmdW5jdGlvbigpe3JldHVybiBLdH0pLHIuZCh0LCJsYXN0SW5kZXhPZiIsZnVuY3Rpb24oKXtyZXR1cm4gWnJ9KSxyLmQodCwibGVuZ3RoIixmdW5jdGlvbigpe3JldHVybiBlbn0pLHIuZCh0LCJsZW5zIixmdW5jdGlvbigpe3JldHVybiB0bn0pLHIuZCh0LCJsZW5zSW5kZXgiLGZ1bmN0aW9uKCl7cmV0dXJuIHJufSksci5kKHQsImxlbnNQYXRoIixmdW5jdGlvbigpe3JldHVybiBubn0pLHIuZCh0LCJsZW5zUHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gb259KSxyLmQodCwibGlmdCIsZnVuY3Rpb24oKXtyZXR1cm4gU2V9KSxyLmQodCwibGlmdE4iLGZ1bmN0aW9uKCl7cmV0dXJuIF9lfSksci5kKHQsImx0IixmdW5jdGlvbigpe3JldHVybiBhbn0pLHIuZCh0LCJsdGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHNufSksci5kKHQsIm1hcCIsZnVuY3Rpb24oKXtyZXR1cm4gSH0pLHIuZCh0LCJtYXBBY2N1bSIsZnVuY3Rpb24oKXtyZXR1cm4gdW59KSxyLmQodCwibWFwQWNjdW1SaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gY259KSxyLmQodCwibWFwT2JqSW5kZXhlZCIsZnVuY3Rpb24oKXtyZXR1cm4gZm59KSxyLmQodCwibWF0Y2giLGZ1bmN0aW9uKCl7cmV0dXJuIGxufSksci5kKHQsIm1hdGhNb2QiLGZ1bmN0aW9uKCl7cmV0dXJuIGhufSksci5kKHQsIm1heCIsZnVuY3Rpb24oKXtyZXR1cm4gQX0pLHIuZCh0LCJtYXhCeSIsZnVuY3Rpb24oKXtyZXR1cm4gcG59KSxyLmQodCwibWVhbiIsZnVuY3Rpb24oKXtyZXR1cm4geW59KSxyLmQodCwibWVkaWFuIixmdW5jdGlvbigpe3JldHVybiBnbn0pLHIuZCh0LCJtZW1vaXplIixmdW5jdGlvbigpe3JldHVybiBtbn0pLHIuZCh0LCJtZW1vaXplV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gdm59KSxyLmQodCwibWVyZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGJufSksci5kKHQsIm1lcmdlQWxsIixmdW5jdGlvbigpe3JldHVybiBfbn0pLHIuZCh0LCJtZXJnZURlZXBMZWZ0IixmdW5jdGlvbigpe3JldHVybiB3bn0pLHIuZCh0LCJtZXJnZURlZXBSaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gVG59KSxyLmQodCwibWVyZ2VEZWVwV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gQW59KSxyLmQodCwibWVyZ2VEZWVwV2l0aEtleSIsZnVuY3Rpb24oKXtyZXR1cm4gRW59KSxyLmQodCwibWVyZ2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBDbn0pLHIuZCh0LCJtZXJnZVdpdGhLZXkiLGZ1bmN0aW9uKCl7cmV0dXJuIFNufSksci5kKHQsIm1pbiIsZnVuY3Rpb24oKXtyZXR1cm4geG59KSxyLmQodCwibWluQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIElufSksci5kKHQsIm1vZHVsbyIsZnVuY3Rpb24oKXtyZXR1cm4ga259KSxyLmQodCwibXVsdGlwbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIE9ufSksci5kKHQsIm5BcnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHZlfSksci5kKHQsIm5lZ2F0ZSIsZnVuY3Rpb24oKXtyZXR1cm4gTm59KSxyLmQodCwibm9uZSIsZnVuY3Rpb24oKXtyZXR1cm4gUG59KSxyLmQodCwibm90IixmdW5jdGlvbigpe3JldHVybiBCZX0pLHIuZCh0LCJudGgiLGZ1bmN0aW9uKCl7cmV0dXJuIHF0fSksci5kKHQsIm50aEFyZyIsZnVuY3Rpb24oKXtyZXR1cm4gUm59KSxyLmQodCwibyIsZnVuY3Rpb24oKXtyZXR1cm4gQm59KSxyLmQodCwib2JqT2YiLGZ1bmN0aW9uKCl7cmV0dXJuIFVyfSksci5kKHQsIm9mIixmdW5jdGlvbigpe3JldHVybiBMbn0pLHIuZCh0LCJvbWl0IixmdW5jdGlvbigpe3JldHVybiBEbn0pLHIuZCh0LCJvbmNlIixmdW5jdGlvbigpe3JldHVybiBqbn0pLHIuZCh0LCJvciIsZnVuY3Rpb24oKXtyZXR1cm4gWXR9KSxyLmQodCwib3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gVW59KSxyLmQodCwicGFpciIsZnVuY3Rpb24oKXtyZXR1cm4gRm59KSxyLmQodCwicGFydGlhbCIsZnVuY3Rpb24oKXtyZXR1cm4gcW59KSxyLmQodCwicGFydGlhbFJpZ2h0IixmdW5jdGlvbigpe3JldHVybiBLbn0pLHIuZCh0LCJwYXJ0aXRpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIHpufSksci5kKHQsInBhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KSxyLmQodCwicGF0aEVxIixmdW5jdGlvbigpe3JldHVybiBHbn0pLHIuZCh0LCJwYXRoT3IiLGZ1bmN0aW9uKCl7cmV0dXJuIEhufSksci5kKHQsInBhdGhTYXRpc2ZpZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIFdufSksci5kKHQsInBpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFlufSksci5kKHQsInBpY2tBbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIFhufSksci5kKHQsInBpY2tCeSIsZnVuY3Rpb24oKXtyZXR1cm4gUW59KSxyLmQodCwicGlwZSIsZnVuY3Rpb24oKXtyZXR1cm4gRmV9KSxyLmQodCwicGlwZUsiLGZ1bmN0aW9uKCl7cmV0dXJuICRufSksci5kKHQsInBpcGVQIixmdW5jdGlvbigpe3JldHVybiBHZX0pLHIuZCh0LCJwbHVjayIsZnVuY3Rpb24oKXtyZXR1cm4gWH0pLHIuZCh0LCJwcmVwZW5kIixmdW5jdGlvbigpe3JldHVybiBabn0pLHIuZCh0LCJwcm9kdWN0IixmdW5jdGlvbigpe3JldHVybiBKbn0pLHIuZCh0LCJwcm9qZWN0IixmdW5jdGlvbigpe3JldHVybiB0aX0pLHIuZCh0LCJwcm9wIixmdW5jdGlvbigpe3JldHVybiBZfSksci5kKHQsInByb3BFcSIsZnVuY3Rpb24oKXtyZXR1cm4gcml9KSxyLmQodCwicHJvcElzIixmdW5jdGlvbigpe3JldHVybiBuaX0pLHIuZCh0LCJwcm9wT3IiLGZ1bmN0aW9uKCl7cmV0dXJuIGlpfSksci5kKHQsInByb3BTYXRpc2ZpZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIG9pfSksci5kKHQsInByb3BzIixmdW5jdGlvbigpe3JldHVybiBhaX0pLHIuZCh0LCJyYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gc2l9KSxyLmQodCwicmVkdWNlIixmdW5jdGlvbigpe3JldHVybiBRfSksci5kKHQsInJlZHVjZUJ5IixmdW5jdGlvbigpe3JldHVybiBtdH0pLHIuZCh0LCJyZWR1Y2VSaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gdWl9KSxyLmQodCwicmVkdWNlV2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIGNpfSksci5kKHQsInJlZHVjZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGZpfSksci5kKHQsInJlamVjdCIsZnVuY3Rpb24oKXtyZXR1cm4gY3R9KSxyLmQodCwicmVtb3ZlIixmdW5jdGlvbigpe3JldHVybiBDdH0pLHIuZCh0LCJyZXBlYXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGhpfSksci5kKHQsInJlcGxhY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHBpfSksci5kKHQsInJldmVyc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFZlfSksci5kKHQsInNjYW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGRpfSksci5kKHQsInNlcXVlbmNlIixmdW5jdGlvbigpe3JldHVybiB5aX0pLHIuZCh0LCJzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGdpfSksci5kKHQsInNsaWNlIixmdW5jdGlvbigpe3JldHVybiBqZX0pLHIuZCh0LCJzb3J0IixmdW5jdGlvbigpe3JldHVybiB2aX0pLHIuZCh0LCJzb3J0QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIG1pfSksci5kKHQsInNvcnRXaXRoIixmdW5jdGlvbigpe3JldHVybiBiaX0pLHIuZCh0LCJzcGxpdCIsZnVuY3Rpb24oKXtyZXR1cm4gX2l9KSxyLmQodCwic3BsaXRBdCIsZnVuY3Rpb24oKXtyZXR1cm4gU2l9KSxyLmQodCwic3BsaXRFdmVyeSIsZnVuY3Rpb24oKXtyZXR1cm4gRWl9KSxyLmQodCwic3BsaXRXaGVuIixmdW5jdGlvbigpe3JldHVybiB3aX0pLHIuZCh0LCJzdGFydHNXaXRoIixmdW5jdGlvbigpe3JldHVybiBUaX0pLHIuZCh0LCJzdWJ0cmFjdCIsZnVuY3Rpb24oKXtyZXR1cm4gQWl9KSxyLmQodCwic3VtIixmdW5jdGlvbigpe3JldHVybiBkbn0pLHIuZCh0LCJzeW1tZXRyaWNEaWZmZXJlbmNlIixmdW5jdGlvbigpe3JldHVybiBDaX0pLHIuZCh0LCJzeW1tZXRyaWNEaWZmZXJlbmNlV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4geGl9KSxyLmQodCwidGFpbCIsZnVuY3Rpb24oKXtyZXR1cm4gVWV9KSxyLmQodCwidGFrZSIsZnVuY3Rpb24oKXtyZXR1cm4gUnR9KSxyLmQodCwidGFrZUxhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuICR0fSksci5kKHQsInRha2VMYXN0V2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIElpfSksci5kKHQsInRha2VXaGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gT2l9KSxyLmQodCwidGFwIixmdW5jdGlvbigpe3JldHVybiBQaX0pLHIuZCh0LCJ0ZXN0IixmdW5jdGlvbigpe3JldHVybiBSaX0pLHIuZCh0LCJ0aW1lcyIsZnVuY3Rpb24oKXtyZXR1cm4gbGl9KSxyLmQodCwidG9Mb3dlciIsZnVuY3Rpb24oKXtyZXR1cm4gQml9KSxyLmQodCwidG9QYWlycyIsZnVuY3Rpb24oKXtyZXR1cm4gTWl9KSxyLmQodCwidG9QYWlyc0luIixmdW5jdGlvbigpe3JldHVybiBMaX0pLHIuZCh0LCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gZnR9KSxyLmQodCwidG9VcHBlciIsZnVuY3Rpb24oKXtyZXR1cm4gRGl9KSxyLmQodCwidHJhbnNkdWNlIixmdW5jdGlvbigpe3JldHVybiBqaX0pLHIuZCh0LCJ0cmFuc3Bvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFVpfSksci5kKHQsInRyYXZlcnNlIixmdW5jdGlvbigpe3JldHVybiBGaX0pLHIuZCh0LCJ0cmltIixmdW5jdGlvbigpe3JldHVybiBxaX0pLHIuZCh0LCJ0cnlDYXRjaCIsZnVuY3Rpb24oKXtyZXR1cm4gS2l9KSxyLmQodCwidHlwZSIsZnVuY3Rpb24oKXtyZXR1cm4gT2V9KSxyLmQodCwidW5hcHBseSIsZnVuY3Rpb24oKXtyZXR1cm4geml9KSxyLmQodCwidW5hcnkiLGZ1bmN0aW9uKCl7cmV0dXJuIEdpfSksci5kKHQsInVuY3VycnlOIixmdW5jdGlvbigpe3JldHVybiBIaX0pLHIuZCh0LCJ1bmZvbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIFdpfSksci5kKHQsInVuaW9uIixmdW5jdGlvbigpe3JldHVybiBZaX0pLHIuZCh0LCJ1bmlvbldpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFFpfSksci5kKHQsInVuaXEiLGZ1bmN0aW9uKCl7cmV0dXJuIE1yfSksci5kKHQsInVuaXFCeSIsZnVuY3Rpb24oKXtyZXR1cm4gQnJ9KSxyLmQodCwidW5pcVdpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFhpfSksci5kKHQsInVubGVzcyIsZnVuY3Rpb24oKXtyZXR1cm4gJGl9KSxyLmQodCwidW5uZXN0IixmdW5jdGlvbigpe3JldHVybiBaaX0pLHIuZCh0LCJ1bnRpbCIsZnVuY3Rpb24oKXtyZXR1cm4gSml9KSxyLmQodCwidXBkYXRlIixmdW5jdGlvbigpe3JldHVybiB4dH0pLHIuZCh0LCJ1c2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBlaX0pLHIuZCh0LCJ2YWx1ZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGNlfSksci5kKHQsInZhbHVlc0luIixmdW5jdGlvbigpe3JldHVybiBlb30pLHIuZCh0LCJ2aWV3IixmdW5jdGlvbigpe3JldHVybiByb30pLHIuZCh0LCJ3aGVuIixmdW5jdGlvbigpe3JldHVybiBub30pLHIuZCh0LCJ3aGVyZSIsZnVuY3Rpb24oKXtyZXR1cm4gaW99KSxyLmQodCwid2hlcmVFcSIsZnVuY3Rpb24oKXtyZXR1cm4gb299KSxyLmQodCwid2l0aG91dCIsZnVuY3Rpb24oKXtyZXR1cm4gYW99KSxyLmQodCwieHByb2QiLGZ1bmN0aW9uKCl7cmV0dXJuIHNvfSksci5kKHQsInppcCIsZnVuY3Rpb24oKXtyZXR1cm4gdW99KSxyLmQodCwiemlwT2JqIixmdW5jdGlvbigpe3JldHVybiBjb30pLHIuZCh0LCJ6aXBXaXRoIixmdW5jdGlvbigpe3JldHVybiBmb30pfV1dKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Mi43Yzc2NzM3OS5jaHVuay5qcy5tYXA="
3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P: 2.7c767379.chunk.js_68: "base64:dXJuIHRoaXMuZih0KT90aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCk6ZX0sZX0oKSx1dD1jKF8oWyJmaWx0ZXIiXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBzdChlLHQpfSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXQodCk/TShmdW5jdGlvbihyLG4pe3JldHVybiBlKHRbbl0pJiYocltuXT10W25dKSxyfSx7fSxHKHQpKTpvdChlLHQpfSkpLGN0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdXQoaXQoZSksdCl9KTt2YXIgZnQ9aShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIpe3ZhciBuPWZ1bmN0aW9uKG4pe3ZhciBpPXIuY29uY2F0KFt0XSk7cmV0dXJuIGV0KG4saSk/IjxDaXJjdWxhcj4iOmUobixpKX0saT1mdW5jdGlvbihlLHQpe3JldHVybiBDKGZ1bmN0aW9uKHQpe3JldHVybiB0dCh0KSsiOiAiK24oZVt0XSl9LHQuc2xpY2UoKS5zb3J0KCkpfTtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgQXJndW1lbnRzXSI6cmV0dXJuIihmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgiK0Mobix0KS5qb2luKCIsICIpKyIpKSI7Y2FzZSJbb2JqZWN0IEFycmF5XSI6cmV0dXJuIlsiK0Mobix0KS5jb25jYXQoaSh0LGN0KGZ1bmN0aW9uKGUpe3JldHVybi9eXGQrJC8udGVzdChlKX0sRyh0KSkpKS5qb2luKCIsICIpKyJdIjtjYXNlIltvYmplY3QgQm9vbGVhbl0iOnJldHVybiJvYmplY3QiPT09dHlwZW9mIHQ/Im5ldyBCb29sZWFuKCIrbih0LnZhbHVlT2YoKSkrIikiOnQudG9TdHJpbmcoKTtjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiJuZXcgRGF0ZSgiKyhpc05hTih0LnZhbHVlT2YoKSk/bihOYU4pOnR0KG50KHQpKSkrIikiO2Nhc2UiW29iamVjdCBOdWxsXSI6cmV0dXJuIm51bGwiO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiB0PyJuZXcgTnVtYmVyKCIrbih0LnZhbHVlT2YoKSkrIikiOjEvdD09PS0xLzA/Ii0wIjp0LnRvU3RyaW5nKDEwKTtjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgdD8ibmV3IFN0cmluZygiK24odC52YWx1ZU9mKCkpKyIpIjp0dCh0KTtjYXNlIltvYmplY3QgVW5kZWZpbmVkXSI6cmV0dXJuInVuZGVmaW5lZCI7ZGVmYXVsdDppZigiZnVuY3Rpb24iPT09dHlwZW9mIHQudG9TdHJpbmcpe3ZhciBvPXQudG9TdHJpbmcoKTtpZigiW29iamVjdCBPYmplY3RdIiE9PW8pcmV0dXJuIG99cmV0dXJuInsiK2kodCxHKHQpKS5qb2luKCIsICIpKyJ9In19KGUsW10pfSksbHQ9YyhmdW5jdGlvbihlLHQpe2lmKG0oZSkpe2lmKG0odCkpcmV0dXJuIGUuY29uY2F0KHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQodCkrIiBpcyBub3QgYW4gYXJyYXkiKX1pZih4KGUpKXtpZih4KHQpKXJldHVybiBlK3Q7dGhyb3cgbmV3IFR5cGVFcnJvcihmdCh0KSsiIGlzIG5vdCBhIHN0cmluZyIpfWlmKG51bGwhPWUmJmJlKGVbImZhbnRhc3ktbGFuZC9jb25jYXQiXSkpcmV0dXJuIGVbImZhbnRhc3ktbGFuZC9jb25jYXQiXSh0KTtpZihudWxsIT1lJiZiZShlLmNvbmNhdCkpcmV0dXJuIGUuY29uY2F0KHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQoZSkrJyBkb2VzIG5vdCBoYXZlIGEgbWV0aG9kIG5hbWVkICJjb25jYXQiIG9yICJmYW50YXN5LWxhbmQvY29uY2F0IicpfSksaHQ9aShmdW5jdGlvbihlKXtyZXR1cm4gaChRKEEsMCxIKGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdLmxlbmd0aH0sZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDspe2lmKGVbdF1bMF0uYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybiBlW3RdWzFdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0Kz0xfX0pfSkscHQ9YyhmdW5jdGlvbihlLHQpe2lmKGU+MTApdGhyb3cgbmV3IEVycm9yKCJDb25zdHJ1Y3RvciB3aXRoIGdyZWF0ZXIgdGhhbiB0ZW4gYXJndW1lbnRzIik7cmV0dXJuIDA9PT1lP2Z1bmN0aW9uKCl7cmV0dXJuIG5ldyB0fTp3ZSh2ZShlLGZ1bmN0aW9uKGUscixuLGksbyxhLHMsdSxjLGYpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIG5ldyB0KGUpO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZSxyKTtjYXNlIDM6cmV0dXJuIG5ldyB0KGUscixuKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KGUscixuLGkpO2Nhc2UgNTpyZXR1cm4gbmV3IHQoZSxyLG4saSxvKTtjYXNlIDY6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhKTtjYXNlIDc6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhLHMpO2Nhc2UgODpyZXR1cm4gbmV3IHQoZSxyLG4saSxvLGEscyx1KTtjYXNlIDk6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhLHMsdSxjKTtjYXNlIDEwOnJldHVybiBuZXcgdChlLHIsbixpLG8sYSxzLHUsYyxmKX19KSl9KSxkdD1pKGZ1bmN0aW9uKGUpe3JldHVybiBwdChlLmxlbmd0aCxlKX0pLHl0PWMoZXQpLGd0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLHQpKSxmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cyxuPXRoaXM7cmV0dXJuIGUuYXBwbHkobixDKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KG4scil9LHQpKX0pfSksdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLG4pe3RoaXMudmFsdWVGbj1lLHRoaXMudmFsdWVBY2M9dCx0aGlzLmtleUZuPXIsdGhpcy54Zj1uLHRoaXMuaW5wdXRzPXt9fXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiB0aGlzLmlucHV0cylpZihqKHQsdGhpcy5pbnB1dHMpJiYoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdGhpcy5pbnB1dHNbdF0pKVsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7ZT1lWyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31yZXR1cm4gdGhpcy5pbnB1dHM9bnVsbCx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5rZXlGbih0KTtyZXR1cm4gdGhpcy5pbnB1dHNbcl09dGhpcy5pbnB1dHNbcl18fFtyLHRoaXMudmFsdWVBY2NdLHRoaXMuaW5wdXRzW3JdWzFdPXRoaXMudmFsdWVGbih0aGlzLmlucHV0c1tyXVsxXSx0KSxlfSxlfSgpLG10PXAoNCxbXSxfKFtdLHAoNCxbXSxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gbmV3IHZ0KGUsdCxyLG4pfSksZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIE0oZnVuY3Rpb24obixpKXt2YXIgbz1yKGkpO3JldHVybiBuW29dPWUoaihvLG4pP25bb106dCxpKSxufSx7fSxuKX0pKSxidD1tdChmdW5jdGlvbihlLHQpe3JldHVybiBlKzF9LDApLF90PWYoLTEpLFN0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09dHx8dCE9PXQ/ZTp0fSksRXQ9ZyhmdW5jdGlvbihlLHQscil7dmFyIG49ZSh0KSxpPWUocik7cmV0dXJuIG4+aT8tMTpuPGk/MTowfSksd3Q9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPTAsaT1lLmxlbmd0aDtuPGk7KWV0KGVbbl0sdCl8fGV0KGVbbl0scil8fChyW3IubGVuZ3RoXT1lW25dKSxuKz0xO3JldHVybiByfSksVHQ9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPVtdLGk9MCxvPXQubGVuZ3RoO2k8bzspWWUoZSx0W2ldLHIpfHxZZShlLHRbaV0sbil8fG4ucHVzaCh0W2ldKSxpKz0xO3JldHVybiBufSksQXQ9YyhmdW5jdGlvbihlLHQpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiB0KXJbbl09dFtuXTtyZXR1cm4gZGVsZXRlIHJbZV0scn0pLEN0PWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsMCk7cmV0dXJuIG4uc3BsaWNlKGUsdCksbn0pLHh0PWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiB2KG8odCksZSxyKX0pLEl0PWMoZnVuY3Rpb24gZSh0LHIpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiByO2Nhc2UgMTpyZXR1cm4gZGUodFswXSk/Q3QodFswXSwxLHIpOkF0KHRbMF0scik7ZGVmYXVsdDp2YXIgbj10WzBdLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwxKTtyZXR1cm4gbnVsbD09cltuXT9yOmRlKHRbMF0pP3h0KG4sZShpLHJbbl0pLHIpOnBlKG4sZShpLHJbbl0pLHIpfX0pLGt0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS90fSksT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMubj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm4+MD8odGhpcy5uLT0xLGUpOnRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KX0sZX0oKSxOdD1jKF8oWyJkcm9wIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgT3QoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGplKE1hdGgubWF4KDAsZSksMS8wLHQpfSkpLFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLm49ZSx0aGlzLmk9MH1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXt0aGlzLmkrPTE7dmFyIHI9MD09PXRoaXMubj9lOnRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KTtyZXR1cm4gdGhpcy5uPj0wJiZ0aGlzLmk+PXRoaXMubj9TKHIpOnJ9LGV9KCksUnQ9YyhfKFsidGFrZSJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IFB0KGUsdCl9KSxmdW5jdGlvbihlLHQpe3JldHVybiBqZSgwLGU8MD8xLzA6ZSx0KX0pKTtmdW5jdGlvbiBCdChlLHQpe3JldHVybiBSdChlPHQubGVuZ3RoP3QubGVuZ3RoLWU6MCx0KX12YXIgTXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMucG9zPTAsdGhpcy5mdWxsPSExLHRoaXMuYWNjPW5ldyBBcnJheShlKX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWNjPW51bGwsdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmZ1bGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0aGlzLmFjY1t0aGlzLnBvc10pKSx0aGlzLnN0b3JlKHQpLGV9LGUucHJvdG90eXBlLnN0b3JlPWZ1bmN0aW9uKGUpe3RoaXMuYWNjW3RoaXMucG9zXT1lLHRoaXMucG9zKz0xLHRoaXMucG9zPT09dGhpcy5hY2MubGVuZ3RoJiYodGhpcy5wb3M9MCx0aGlzLmZ1bGw9ITApfSxlfSgpLEx0PWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBNdChlLHQpfSksQnQpKTtmdW5jdGlvbiBEdChlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTAmJmUodFtyXSk7KXItPTE7cmV0dXJuIGplKDAscisxLHQpfXZhciBqdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmY9ZSx0aGlzLnJldGFpbmVkPVtdLHRoaXMueGY9dH1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV0YWluZWQ9bnVsbCx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KT90aGlzLnJldGFpbihlLHQpOnRoaXMuZmx1c2goZSx0KX0sZS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1NKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0sZSx0aGlzLnJldGFpbmVkKSx0aGlzLnJldGFpbmVkPVtdLHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KX0sZS5wcm90b3R5cGUucmV0YWluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmV0YWluZWQucHVzaCh0KSxlfSxlfSgpLFV0PWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBqdChlLHQpfSksRHQpKSxGdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnhmPXQsdGhpcy5wcmVkPWUsdGhpcy5sYXN0VmFsdWU9dm9pZCAwLHRoaXMuc2VlbkZpcnN0VmFsdWU9ITF9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPUUucmVzdWx0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ITE7cmV0dXJuIHRoaXMuc2VlbkZpcnN0VmFsdWU/dGhpcy5wcmVkKHRoaXMubGFzdFZhbHVlLHQpJiYocj0hMCk6dGhpcy5zZWVuRmlyc3RWYWx1ZT0hMCx0aGlzLmxhc3RWYWx1ZT10LHI/ZTp0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCl9LGV9KCksVnQ9YyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRnQoZSx0KX0pLHF0PWMoZnVuY3Rpb24oZSx0KXt2YXIgcj1lPDA/dC5sZW5ndGgrZTplO3JldHVybiB4KHQpP3QuY2hhckF0KHIpOnRbcl19KSxLdD1xdCgtMSksenQ9YyhfKFtdLFZ0LGZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj0xLGk9dC5sZW5ndGg7aWYoMCE9PWkpZm9yKHJbMF09dFswXTtuPGk7KWUoS3QociksdFtuXSl8fChyW3IubGVuZ3RoXT10W25dKSxuKz0xO3JldHVybiByfSkpLEd0PWkoXyhbXSxWdChaZSksenQoWmUpKSksSHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuZil7aWYodGhpcy5mKHQpKXJldHVybiBlO3RoaXMuZj1udWxsfXJldHVybiB0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCl9LGV9KCksV3Q9YyhfKFsiZHJvcFdoaWxlIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgSHQoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG4mJmUodFtyXSk7KXIrPTE7cmV0dXJuIGplKHIsMS8wLHQpfSkpLFl0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8dH0pLFh0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShZdCkoZSx0KX0pLFF0PWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgZVsiZmFudGFzeS1sYW5kL2VtcHR5Il0/ZVsiZmFudGFzeS1sYW5kL2VtcHR5Il0oKTpudWxsIT1lJiZudWxsIT1lLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3JbImZhbnRhc3ktbGFuZC9lbXB0eSJdP2UuY29uc3RydWN0b3JbImZhbnRhc3ktbGFuZC9lbXB0eSJdKCk6bnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmVtcHR5P2UuZW1wdHkoKTpudWxsIT1lJiZudWxsIT1lLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3IuZW1wdHk/ZS5jb25zdHJ1Y3Rvci5lbXB0eSgpOm0oZSk/W106eChlKT8iIjphdChlKT97fTpGKGUpP2Z1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKTp2b2lkIDB9KSwkdD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE50KGU+PTA/dC5sZW5ndGgtZTowLHQpfSksWnQ9YyhmdW5jdGlvbihlLHQpe3JldHVybiBaZSgkdChlLmxlbmd0aCx0KSxlKX0pLEp0PWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBaZShlKHQpLGUocikpfSksZXI9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFplKHRbZV0scltlXSl9KSx0cj1jKGZ1bmN0aW9uIGUodCxyKXt2YXIgbixpLG8sYT17fTtmb3IoaSBpbiByKW89dHlwZW9mKG49dFtpXSksYVtpXT0iZnVuY3Rpb24iPT09bz9uKHJbaV0pOm4mJiJvYmplY3QiPT09bz9lKG4scltpXSk6cltpXTtyZXR1cm4gYX0pLHJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmZvdW5kPSExfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5mb3VuZHx8KGU9dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHZvaWQgMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpJiYodGhpcy5mb3VuZD0hMCxlPVModGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHQpKSksZX0sZX0oKSxucj1jKF8oWyJmaW5kIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcnIoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47KXtpZihlKHRbcl0pKXJldHVybiB0W3JdO3IrPTF9fSkpLGlyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmlkeD0tMSx0aGlzLmZvdW5kPSExfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5mb3VuZHx8KGU9dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLC0xKSksdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlkeCs9MSx0aGlzLmYodCkmJih0aGlzLmZvdW5kPSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdGhpcy5pZHgpKSksZX0sZX0oKSxvcj1jKF8oW10sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgaXIoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47KXtpZihlKHRbcl0pKXJldHVybiByO3IrPTF9cmV0dXJuLTF9KSksYXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0aGlzLmxhc3QpKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpJiYodGhpcy5sYXN0PXQpLGV9LGV9KCksc3I9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGFyKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihlKHRbcl0pKXJldHVybiB0W3JdO3ItPTF9fSkpLHVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmlkeD0tMSx0aGlzLmxhc3RJZHg9LTF9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMubGFzdElkeCkpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlkeCs9MSx0aGlzLmYodCkmJih0aGlzLmxhc3RJZHg9dGhpcy5pZHgpLGV9LGV9KCksY3I9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHVyKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihlKHRbcl0pKXJldHVybiByO3ItPTF9cmV0dXJuLTF9KSksZnI9aShBZSghMCkpLGxyPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5sZW5ndGgsZnVuY3Rpb24odCxyKXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIG5bMF09cixuWzFdPXQsZS5hcHBseSh0aGlzLG4pfSl9KSxocj1jKERlKCJmb3JFYWNoIixmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPTA7bjxyOyllKHRbbl0pLG4rPTE7cmV0dXJuIHR9KSkscHI9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1HKHQpLG49MDtuPHIubGVuZ3RoOyl7dmFyIGk9cltuXTtlKHRbaV0saSx0KSxuKz0xfXJldHVybiB0fSksZHI9aShmdW5jdGlvbihlKXtmb3IodmFyIHQ9e30scj0wO3I8ZS5sZW5ndGg7KXRbZVtyXVswXV09ZVtyXVsxXSxyKz0xO3JldHVybiB0fSkseXI9YyhEZSgiZ3JvdXBCeSIsbXQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZSYmKGU9W10pLGUucHVzaCh0KSxlfSxudWxsKSkpLGdyPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10sbj0wLGk9dC5sZW5ndGg7bjxpOyl7Zm9yKHZhciBvPW4rMTtvPGkmJmUodFtvLTFdLHRbb10pOylvKz0xO3IucHVzaCh0LnNsaWNlKG4sbykpLG49b31yZXR1cm4gcn0pLHZyPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fSksbXI9YyhmdW5jdGlvbihlLHQpe3JldHVybiBlPj10fSksYnI9YyhqKSxfcj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUgaW4gdH0pLFNyPXF0KDApO2Z1bmN0aW9uIEVyKGUpe3JldHVybiBlfXZhciB3cj1pKEVyKSxUcj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZChNYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCxyLmxlbmd0aCksZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0pLEFyPWYoMSksQ3I9bXQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0sbnVsbCkseHI9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiIhPT10eXBlb2YgdC5pbmRleE9mfHxtKHQpP0plKHQsZSwwKTp0LmluZGV4T2YoZSl9KSxJcj1qZSgwLC0xKSxrcj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gb3QoZnVuY3Rpb24odCl7cmV0dXJuIFllKGUsdCxyKX0sdCl9KSxPcj1nKGZ1bmN0aW9uKGUsdCxyKXtlPWU8ci5sZW5ndGgmJmU+PTA/ZTpyLmxlbmd0aDt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLDApO3JldHVybiBuLnNwbGljZShlLDAsdCksbn0pLE5yPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPWU8ci5sZW5ndGgmJmU+PTA/ZTpyLmxlbmd0aCxbXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwwLGUpLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocixlKSl9KTtmdW5jdGlvbiBQcihlLHQscil7dmFyIG4saT10eXBlb2YgZTtzd2l0Y2goaSl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjpyZXR1cm4gMD09PWUmJjEvZT09PS0xLzA/ISFyLl9pdGVtc1siLTAiXXx8KHQmJihyLl9pdGVtc1siLTAiXT0hMCksITEpOm51bGwhPT1yLl9uYXRpdmVTZXQ/dD8obj1yLl9uYXRpdmVTZXQuc2l6ZSxyLl9uYXRpdmVTZXQuYWRkKGUpLHIuX25hdGl2ZVNldC5zaXplPT09bik6ci5fbmF0aXZlU2V0LmhhcyhlKTppIGluIHIuX2l0ZW1zP2UgaW4gci5faXRlbXNbaV18fCh0JiYoci5faXRlbXNbaV1bZV09ITApLCExKToodCYmKHIuX2l0ZW1zW2ldPXt9LHIuX2l0ZW1zW2ldW2VdPSEwKSwhMSk7Y2FzZSJib29sZWFuIjppZihpIGluIHIuX2l0ZW1zKXt2YXIgbz1lPzE6MDtyZXR1cm4hIXIuX2l0ZW1zW2ldW29dfHwodCYmKHIuX2l0ZW1zW2ldW29dPSEwKSwhMSl9cmV0dXJuIHQmJihyLl9pdGVtc1tpXT1lP1shMSwhMF06WyEwLCExXSksITE7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIG51bGwhPT1yLl9uYXRpdmVTZXQ/dD8obj1yLl9uYXRpdmVTZXQuc2l6ZSxyLl9uYXRpdmVTZXQuYWRkKGUpLHIuX25hdGl2ZVNldC5zaXplPT09bik6ci5fbmF0aXZlU2V0LmhhcyhlKTppIGluIHIuX2l0ZW1zPyEhZXQoZSxyLl9pdGVtc1tpXSl8fCh0JiZyLl9pdGVtc1tpXS5wdXNoKGUpLCExKToodCYmKHIuX2l0ZW1zW2ldPVtlXSksITEpO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4hIXIuX2l0ZW1zW2ldfHwodCYmKHIuX2l0ZW1zW2ldPSEwKSwhMSk7Y2FzZSJvYmplY3QiOmlmKG51bGw9PT1lKXJldHVybiEhci5faXRlbXMubnVsbHx8KHQmJihyLl9pdGVtcy5udWxsPSEwKSwhMSk7ZGVmYXVsdDpyZXR1cm4oaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpaW4gci5faXRlbXM/ISFldChlLHIuX2l0ZW1zW2ldKXx8KHQmJnIuX2l0ZW1zW2ldLnB1c2goZSksITEpOih0JiYoci5faXRlbXNbaV09W2VdKSwhMSl9fXZhciBScj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLl9uYXRpdmVTZXQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBTZXQ/bmV3IFNldDpudWxsLHRoaXMuX2l0ZW1zPXt9fXJldHVybiBlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIVByKGUsITAsdGhpcyl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gUHIoZSwhMSx0aGlzKX0sZX0oKSxCcj1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4saT1uZXcgUnIsbz1bXSxhPTA7YTx0Lmxlbmd0aDspcj1lKG49dFthXSksaS5hZGQocikmJm8ucHVzaChuKSxhKz0xO3JldHVybiBvfSksTXI9QnIod3IpLExyPWMoZnVuY3Rpb24oZSx0KXt2YXIgcixuO3JldHVybiBlLmxlbmd0aD50Lmxlbmd0aD8ocj1lLG49dCk6KHI9dCxuPWUpLE1yKG90KGxyKGV0KShyKSxuKSl9KSxEcj1jKERlKCJpbnRlcnNwZXJzZSIsZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10sbj0wLGk9dC5sZW5ndGg7bjxpOyluPT09aS0xP3IucHVzaCh0W25dKTpyLnB1c2godFtuXSxlKSxuKz0xO3JldHVybiByfSkpO3ZhciBqcj0iZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO2Zvcih2YXIgdD1PYmplY3QoZSkscj0xLG49YXJndW1lbnRzLmxlbmd0aDtyPG47KXt2YXIgaT1hcmd1bWVudHNbcl07aWYobnVsbCE9aSlmb3IodmFyIG8gaW4gaSlqKG8saSkmJih0W29dPWlbb10pO3IrPTF9cmV0dXJuIHR9LFVyPWMoZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtyZXR1cm4gcltlXT10LHJ9KSxGcj17IkBAdHJhbnNkdWNlci9pbml0IjpBcnJheSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucHVzaCh0KSxlfSwiQEB0cmFuc2R1Y2VyL3Jlc3VsdCI6RXJ9LFZyPXsiQEB0cmFuc2R1Y2VyL2luaXQiOlN0cmluZywiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdH0sIkBAdHJhbnNkdWNlci9yZXN1bHQiOkVyfSxxcj17IkBAdHJhbnNkdWNlci9pbml0IjpPYmplY3QsIkBAdHJhbnNkdWNlci9zdGVwIjpmdW5jdGlvbihlLHQpe3JldHVybiBqcihlLEkodCk/VXIodFswXSx0WzFdKTp0KX0sIkBAdHJhbnNkdWNlci9yZXN1bHQiOkVyfTt2YXIgS3I9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGIoZSk/TSh0KGUpLGVbIkBAdHJhbnNkdWNlci9pbml0Il0oKSxyKTpNKHQoZnVuY3Rpb24oZSl7aWYoYihlKSlyZXR1cm4gZTtpZihJKGUpKXJldHVybiBGcjtpZigic3RyaW5nIj09PXR5cGVvZiBlKXJldHVybiBWcjtpZigib2JqZWN0Ij09PXR5cGVvZiBlKXJldHVybiBxcjt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjcmVhdGUgdHJhbnNmb3JtZXIgZm9yICIrZSl9KGUpKSxOZShlLFtdLFtdLCExKSxyKX0pLHpyPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPTAsaT17fTtuPHI7KXt2YXIgbz10W25dLGE9ZVtvXSxzPWooYSxpKT9pW2FdOmlbYV09W107c1tzLmxlbmd0aF09byxuKz0xfXJldHVybiBpfSksR3I9aShmdW5jdGlvbihlKXtmb3IodmFyIHQ9RyhlKSxyPXQubGVuZ3RoLG49MCxpPXt9O248cjspe3ZhciBvPXRbbl07aVtlW29dXT1vLG4rPTF9cmV0dXJuIGl9KSxIcj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGQoZSsxLGZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzW2VdO2lmKG51bGwhPXImJmJlKHJbdF0pKXJldHVybiByW3RdLmFwcGx5KHIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDAsZSkpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQocikrJyBkb2VzIG5vdCBoYXZlIGEgbWV0aG9kIG5hbWVkICInK3QrJyInKX0pfSksV3I9YyhmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT10JiZ0LmNvbnN0cnVjdG9yPT09ZXx8dCBpbnN0YW5jZW9mIGV9KSxZcj1pKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZaZShlLFF0KGUpKX0pLFhyPUhyKDEsImpvaW4iKSxRcj1pKGZ1bmN0aW9uKGUpe3JldHVybiBndChmdW5jdGlvbigpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCl9LGUpfSksJHI9aShmdW5jdGlvbihlKXt2YXIgdCxyPVtdO2Zvcih0IGluIGUpcltyLmxlbmd0aF09dDtyZXR1cm4gcn0pLFpyPWMoZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQubGFzdEluZGV4T2Z8fG0odCkpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihaZSh0W3JdLGUpKXJldHVybiByO3ItPTF9cmV0dXJuLTF9cmV0dXJuIHQubGFzdEluZGV4T2YoZSl9KTtmdW5jdGlvbiBKcihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX12YXIgZW49aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmSnIoZS5sZW5ndGgpP2UubGVuZ3RoOk5hTn0pLHRuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBIKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbil9LHIoZShuKSkpfX19KSxybj1pKGZ1bmN0aW9uKGUpe3JldHVybiB0bihxdChlKSx4dChlKSl9KSxubj1pKGZ1bmN0aW9uKGUpe3JldHVybiB0bihXKGUpLGdlKGUpKX0pLG9uPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHRuKFkoZSkscGUoZSkpfSksYW49YyhmdW5jdGlvbihlLHQpe3JldHVybiBlPHR9KSxzbj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXR9KSx1bj1nKGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoLG89W10sYT1bdF07bjxpOylhPWUoYVswXSxyW25dKSxvW25dPWFbMV0sbis9MTtyZXR1cm5bYVswXSxvXX0pLGNuPWcoZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj1yLmxlbmd0aC0xLGk9W10sbz1bdF07bj49MDspbz1lKHJbbl0sb1swXSksaVtuXT1vWzFdLG4tPTE7cmV0dXJuW2ksb1swXV19KSxmbj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0sbix0KSxyfSx7fSxHKHQpKX0pLGxuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tYXRjaChlKXx8W119KSxobj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGRlKGUpPyFkZSh0KXx8dDwxP05hTjooZSV0K3QpJXQ6TmFOfSkscG49ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUocik+ZSh0KT9yOnR9KSxkbj1RKGYsMCkseW49aShmdW5jdGlvbihlKXtyZXR1cm4gZG4oZSkvZS5sZW5ndGh9KSxnbj1pKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiBOYU47dmFyIHI9Mi10JTIsbj0odC1yKS8yO3JldHVybiB5bihBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDApLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9KS5zbGljZShuLG4rcikpfSksdm49YyhmdW5jdGlvbihlLHQpe3ZhciByPXt9O3JldHVybiBoKHQubGVuZ3RoLGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGoobixyKXx8KHJbbl09dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHJbbl19KX0pLG1uPXZuKGZ1bmN0aW9uKCl7cmV0dXJuIGZ0KGFyZ3VtZW50cyl9KSxibj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpyKHt9LGUsdCl9KSxfbj1pKGZ1bmN0aW9uKGUpe3JldHVybiBqci5hcHBseShudWxsLFt7fV0uY29uY2F0KGUpKX0pLFNuPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGk9e307Zm9yKG4gaW4gdClqKG4sdCkmJihpW25dPWoobixyKT9lKG4sdFtuXSxyW25dKTp0W25dKTtmb3IobiBpbiByKWoobixyKSYmIWoobixpKSYmKGlbbl09cltuXSk7cmV0dXJuIGl9KSxFbj1nKGZ1bmN0aW9uIGUodCxyLG4pe3JldHVybiBTbihmdW5jdGlvbihyLG4saSl7cmV0dXJuIGF0KG4pJiZhdChpKT9lKHQsbixpKTp0KHIsbixpKX0scixuKX0pLHduPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gRW4oZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0fSxlLHQpfSksVG49YyhmdW5jdGlvbihlLHQpe3JldHVybiBFbihmdW5jdGlvbihlLHQscil7cmV0dXJuIHJ9LGUsdCl9KSxBbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRW4oZnVuY3Rpb24odCxyLG4pe3JldHVybiBlKHIsbil9LHQscil9KSxDbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gU24oZnVuY3Rpb24odCxyLG4pe3JldHVybiBlKHIsbil9LHQscil9KSx4bj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ8ZT90OmV9KSxJbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZShyKTxlKHQpP3I6dH0pLGtuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSV0fSksT249YyhmdW5jdGlvbihlLHQpe3JldHVybiBlKnR9KSxObj1pKGZ1bmN0aW9uKGUpe3JldHVybi1lfSksUG49YyhpdChfKFsiYW55Il0sZWUsdGUpKSksUm49aShmdW5jdGlvbihlKXtyZXR1cm4gZChlPDA/MTplKzEsZnVuY3Rpb24oKXtyZXR1cm4gcXQoZSxhcmd1bWVudHMpfSl9KSxCbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZSh0KHIpKX0pO2Z1bmN0aW9uIE1uKGUpe3JldHVybltlXX12YXIgTG49aShNbiksRG49YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj17fSxuPXt9LGk9MCxvPWUubGVuZ3RoO2k8bzspbltlW2ldXT0xLGkrPTE7Zm9yKHZhciBhIGluIHQpbi5oYXNPd25Qcm9wZXJ0eShhKXx8KHJbYV09dFthXSk7cmV0dXJuIHJ9KSxqbj1pKGZ1bmN0aW9uKGUpe3ZhciB0LHI9ITE7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gcj90OihyPSEwLHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9KSxVbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gZSh0KXtyZXR1cm57dmFsdWU6dCxtYXA6ZnVuY3Rpb24ocil7cmV0dXJuIGUocih0KSl9fX0odChlKSl9KShyKS52YWx1ZX0pLEZuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm5bZSx0XX0pO2Z1bmN0aW9uIFZuKGUpe3JldHVybiBjKGZ1bmN0aW9uKHQscil7cmV0dXJuIGgoTWF0aC5tYXgoMCx0Lmxlbmd0aC1yLmxlbmd0aCksZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGUocixhcmd1bWVudHMpKX0pfSl9dmFyIHFuPVZuKGwpLEtuPVZuKGxyKGwpKSx6bj1RcihbdXQsY3RdKSxHbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWmUoVyhlLHIpLHQpfSksSG49ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFN0KGUsVyh0LHIpKX0pLFduPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0Lmxlbmd0aD4wJiZlKFcodCxyKSl9KSxZbj1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoOyllW25daW4gdCYmKHJbZVtuXV09dFtlW25dXSksbis9MTtyZXR1cm4gcn0pLFhuPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9e30sbj0wLGk9ZS5sZW5ndGg7bjxpOyl7dmFyIG89ZVtuXTtyW29dPXRbb10sbis9MX1yZXR1cm4gcn0pLFFuPWMoZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gdCllKHRbbl0sbix0KSYmKHJbbl09dFtuXSk7cmV0dXJuIHJ9KTtmdW5jdGlvbiAkbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIEtlLmFwcGx5KHRoaXMsVmUoYXJndW1lbnRzKSl9dmFyIFpuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbChbZV0sdCl9KSxKbj1RKE9uLDEpLGVpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDspci5wdXNoKHRbbl0uY2FsbCh0aGlzLGFyZ3VtZW50c1tuXSkpLG4rPTE7cmV0dXJuIGUuYXBwbHkodGhpcyxyLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsdC5sZW5ndGgpKSl9KX0pLHRpPWVpKEMsW1huLHdyXSkscmk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFplKHQscltlXSl9KSxuaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gV3IoZSxyW3RdKX0pLGlpPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBudWxsIT1yJiZqKHQscik/clt0XTplfSksb2k9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUoclt0XSl9KSxhaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUubGVuZ3RoLG49W10saT0wO2k8cjspbltpXT10W2VbaV1dLGkrPTE7cmV0dXJuIG59KSxzaT1jKGZ1bmN0aW9uKGUsdCl7aWYoIUpyKGUpfHwhSnIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm90aCBhcmd1bWVudHMgdG8gcmFuZ2UgbXVzdCBiZSBudW1iZXJzIik7Zm9yKHZhciByPVtdLG49ZTtuPHQ7KXIucHVzaChuKSxuKz0xO3JldHVybiByfSksdWk9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXIubGVuZ3RoLTE7bj49MDspdD1lKHJbbl0sdCksbi09MTtyZXR1cm4gdH0pLGNpPXAoNCxbXSxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gTShmdW5jdGlvbihyLG4pe3JldHVybiBlKHIsbik/dChyLG4pOlMocil9LHIsbil9KSxmaT1pKFMpLGxpPWMoZnVuY3Rpb24oZSx0KXt2YXIgcixuPU51bWJlcih0KSxpPTA7aWYobjwwfHxpc05hTihuKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigibiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlciIpO2ZvcihyPW5ldyBBcnJheShuKTtpPG47KXJbaV09ZShpKSxpKz0xO3JldHVybiByfSksaGk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBsaShvKGUpLHQpfSkscGk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIHIucmVwbGFjZShlLHQpfSksZGk9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTAsaT1yLmxlbmd0aCxvPVt0XTtuPGk7KXQ9ZSh0LHJbbl0pLG9bbisxXT10LG4rPTE7cmV0dXJuIG99KSx5aT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0LnNlcXVlbmNlP3Quc2VxdWVuY2UoZSk6dWkoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmUoSChabixlKSx0KX0sZShbXSksdCl9KSxnaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVW4oZSxvKHQpLHIpfSksdmk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDApLnNvcnQoZSl9KSxtaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCkuc29ydChmdW5jdGlvbih0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pfSksYmk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDApLnNvcnQoZnVuY3Rpb24odCxyKXtmb3IodmFyIG49MCxpPTA7MD09PW4mJmk8ZS5sZW5ndGg7KW49ZVtpXSh0LHIpLGkrPTE7cmV0dXJuIG59KX0pLF9pPUhyKDEsInNwbGl0IiksU2k9YyhmdW5jdGlvbihlLHQpe3JldHVybltqZSgwLGUsdCksamUoZSxlbih0KSx0KV19KSxFaT1jKGZ1bmN0aW9uKGUsdCl7aWYoZTw9MCl0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIHNwbGl0RXZlcnkgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTtmb3IodmFyIHI9W10sbj0wO248dC5sZW5ndGg7KXIucHVzaChqZShuLG4rPWUsdCkpO3JldHVybiByfSksd2k9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGgsaT1bXTtyPG4mJiFlKHRbcl0pOylpLnB1c2godFtyXSkscis9MTtyZXR1cm5baSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LHIpXX0pLFRpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gWmUoUnQoZS5sZW5ndGgsdCksZSl9KSxBaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKS1OdW1iZXIodCl9KSxDaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGx0KHd0KGUsdCksd3QodCxlKSl9KSx4aT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbHQoVHQoZSx0LHIpLFR0KGUscix0KSl9KSxJaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQubGVuZ3RoLTE7cj49MCYmZSh0W3JdKTspci09MTtyZXR1cm4gamUocisxLDEvMCx0KX0pLGtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpP3RoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KTpTKGUpfSxlfSgpLE9pPWMoXyhbInRha2VXaGlsZSJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGtpKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuJiZlKHRbcl0pOylyKz0xO3JldHVybiBqZSgwLHIsdCl9KSksTmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYodCksdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHQpfSxlfSgpLFBpPWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBOaShlLHQpfSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSh0KSx0fSkpO3ZhciBSaT1jKGZ1bmN0aW9uKGUsdCl7aWYocj1lLCJbb2JqZWN0IFJlZ0V4cF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoIlx1MjAxOHRlc3RcdTIwMTkgcmVxdWlyZXMgYSB2YWx1ZSBvZiB0eXBlIFJlZ0V4cCBhcyBpdHMgZmlyc3QgYXJndW1lbnQ7IHJlY2VpdmVkICIrZnQoZSkpO3ZhciByO3JldHVybiBrZShlKS50ZXN0KHQpfSksQmk9SHIoMCwidG9Mb3dlckNhc2UiKSxNaT1pKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKWoocixlKSYmKHRbdC5sZW5ndGhdPVtyLGVbcl1dKTtyZXR1cm4gdH0pLExpPWkoZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdFt0Lmxlbmd0aF09W3IsZVtyXV07cmV0dXJuIHR9KSxEaT1IcigwLCJ0b1VwcGVyQ2FzZSIpLGppPWQoNCxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gTShlKCJmdW5jdGlvbiI9PT10eXBlb2YgdD9PKHQpOnQpLHIsbil9KSxVaT1pKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLHI9W107dDxlLmxlbmd0aDspe2Zvcih2YXIgbj1lW3RdLGk9MDtpPG4ubGVuZ3RoOykidW5kZWZpbmVkIj09PXR5cGVvZiByW2ldJiYocltpXT1bXSkscltpXS5wdXNoKG5baV0pLGkrPTE7dCs9MX1yZXR1cm4gcn0pLEZpPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgclsiZmFudGFzeS1sYW5kL3RyYXZlcnNlIl0/clsiZmFudGFzeS1sYW5kL3RyYXZlcnNlIl0odCxlKTp5aShlLEgodCxyKSl9KSxWaT0iXHRcblx2XGZcciBceGEwXHUxNjgwXHUxODBlXHUyMDAwXHUyMDAxXHUyMDAyXHUyMDAzXHUyMDA0XHUyMDA1XHUyMDA2XHUyMDA3XHUyMDA4XHUyMDA5XHUyMDBhXHUyMDJmXHUyMDVmXHUzMDAwXHUyMDI4XHUyMDI5XHVmZWY=" == "base64:dXJuIHRoaXMuZih0KT90aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCk6ZX0sZX0oKSx1dD1jKF8oWyJmaWx0ZXIiXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBzdChlLHQpfSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXQodCk/TShmdW5jdGlvbihyLG4pe3JldHVybiBlKHRbbl0pJiYocltuXT10W25dKSxyfSx7fSxHKHQpKTpvdChlLHQpfSkpLGN0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdXQoaXQoZSksdCl9KTt2YXIgZnQ9aShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIpe3ZhciBuPWZ1bmN0aW9uKG4pe3ZhciBpPXIuY29uY2F0KFt0XSk7cmV0dXJuIGV0KG4saSk/IjxDaXJjdWxhcj4iOmUobixpKX0saT1mdW5jdGlvbihlLHQpe3JldHVybiBDKGZ1bmN0aW9uKHQpe3JldHVybiB0dCh0KSsiOiAiK24oZVt0XSl9LHQuc2xpY2UoKS5zb3J0KCkpfTtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgQXJndW1lbnRzXSI6cmV0dXJuIihmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgiK0Mobix0KS5qb2luKCIsICIpKyIpKSI7Y2FzZSJbb2JqZWN0IEFycmF5XSI6cmV0dXJuIlsiK0Mobix0KS5jb25jYXQoaSh0LGN0KGZ1bmN0aW9uKGUpe3JldHVybi9eXGQrJC8udGVzdChlKX0sRyh0KSkpKS5qb2luKCIsICIpKyJdIjtjYXNlIltvYmplY3QgQm9vbGVhbl0iOnJldHVybiJvYmplY3QiPT09dHlwZW9mIHQ/Im5ldyBCb29sZWFuKCIrbih0LnZhbHVlT2YoKSkrIikiOnQudG9TdHJpbmcoKTtjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiJuZXcgRGF0ZSgiKyhpc05hTih0LnZhbHVlT2YoKSk/bihOYU4pOnR0KG50KHQpKSkrIikiO2Nhc2UiW29iamVjdCBOdWxsXSI6cmV0dXJuIm51bGwiO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiB0PyJuZXcgTnVtYmVyKCIrbih0LnZhbHVlT2YoKSkrIikiOjEvdD09PS0xLzA/Ii0wIjp0LnRvU3RyaW5nKDEwKTtjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgdD8ibmV3IFN0cmluZygiK24odC52YWx1ZU9mKCkpKyIpIjp0dCh0KTtjYXNlIltvYmplY3QgVW5kZWZpbmVkXSI6cmV0dXJuInVuZGVmaW5lZCI7ZGVmYXVsdDppZigiZnVuY3Rpb24iPT09dHlwZW9mIHQudG9TdHJpbmcpe3ZhciBvPXQudG9TdHJpbmcoKTtpZigiW29iamVjdCBPYmplY3RdIiE9PW8pcmV0dXJuIG99cmV0dXJuInsiK2kodCxHKHQpKS5qb2luKCIsICIpKyJ9In19KGUsW10pfSksbHQ9YyhmdW5jdGlvbihlLHQpe2lmKG0oZSkpe2lmKG0odCkpcmV0dXJuIGUuY29uY2F0KHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQodCkrIiBpcyBub3QgYW4gYXJyYXkiKX1pZih4KGUpKXtpZih4KHQpKXJldHVybiBlK3Q7dGhyb3cgbmV3IFR5cGVFcnJvcihmdCh0KSsiIGlzIG5vdCBhIHN0cmluZyIpfWlmKG51bGwhPWUmJmJlKGVbImZhbnRhc3ktbGFuZC9jb25jYXQiXSkpcmV0dXJuIGVbImZhbnRhc3ktbGFuZC9jb25jYXQiXSh0KTtpZihudWxsIT1lJiZiZShlLmNvbmNhdCkpcmV0dXJuIGUuY29uY2F0KHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQoZSkrJyBkb2VzIG5vdCBoYXZlIGEgbWV0aG9kIG5hbWVkICJjb25jYXQiIG9yICJmYW50YXN5LWxhbmQvY29uY2F0IicpfSksaHQ9aShmdW5jdGlvbihlKXtyZXR1cm4gaChRKEEsMCxIKGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdLmxlbmd0aH0sZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDspe2lmKGVbdF1bMF0uYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybiBlW3RdWzFdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0Kz0xfX0pfSkscHQ9YyhmdW5jdGlvbihlLHQpe2lmKGU+MTApdGhyb3cgbmV3IEVycm9yKCJDb25zdHJ1Y3RvciB3aXRoIGdyZWF0ZXIgdGhhbiB0ZW4gYXJndW1lbnRzIik7cmV0dXJuIDA9PT1lP2Z1bmN0aW9uKCl7cmV0dXJuIG5ldyB0fTp3ZSh2ZShlLGZ1bmN0aW9uKGUscixuLGksbyxhLHMsdSxjLGYpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIG5ldyB0KGUpO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZSxyKTtjYXNlIDM6cmV0dXJuIG5ldyB0KGUscixuKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KGUscixuLGkpO2Nhc2UgNTpyZXR1cm4gbmV3IHQoZSxyLG4saSxvKTtjYXNlIDY6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhKTtjYXNlIDc6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhLHMpO2Nhc2UgODpyZXR1cm4gbmV3IHQoZSxyLG4saSxvLGEscyx1KTtjYXNlIDk6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhLHMsdSxjKTtjYXNlIDEwOnJldHVybiBuZXcgdChlLHIsbixpLG8sYSxzLHUsYyxmKX19KSl9KSxkdD1pKGZ1bmN0aW9uKGUpe3JldHVybiBwdChlLmxlbmd0aCxlKX0pLHl0PWMoZXQpLGd0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLHQpKSxmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cyxuPXRoaXM7cmV0dXJuIGUuYXBwbHkobixDKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KG4scil9LHQpKX0pfSksdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLG4pe3RoaXMudmFsdWVGbj1lLHRoaXMudmFsdWVBY2M9dCx0aGlzLmtleUZuPXIsdGhpcy54Zj1uLHRoaXMuaW5wdXRzPXt9fXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiB0aGlzLmlucHV0cylpZihqKHQsdGhpcy5pbnB1dHMpJiYoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdGhpcy5pbnB1dHNbdF0pKVsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7ZT1lWyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31yZXR1cm4gdGhpcy5pbnB1dHM9bnVsbCx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5rZXlGbih0KTtyZXR1cm4gdGhpcy5pbnB1dHNbcl09dGhpcy5pbnB1dHNbcl18fFtyLHRoaXMudmFsdWVBY2NdLHRoaXMuaW5wdXRzW3JdWzFdPXRoaXMudmFsdWVGbih0aGlzLmlucHV0c1tyXVsxXSx0KSxlfSxlfSgpLG10PXAoNCxbXSxfKFtdLHAoNCxbXSxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gbmV3IHZ0KGUsdCxyLG4pfSksZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIE0oZnVuY3Rpb24obixpKXt2YXIgbz1yKGkpO3JldHVybiBuW29dPWUoaihvLG4pP25bb106dCxpKSxufSx7fSxuKX0pKSxidD1tdChmdW5jdGlvbihlLHQpe3JldHVybiBlKzF9LDApLF90PWYoLTEpLFN0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09dHx8dCE9PXQ/ZTp0fSksRXQ9ZyhmdW5jdGlvbihlLHQscil7dmFyIG49ZSh0KSxpPWUocik7cmV0dXJuIG4+aT8tMTpuPGk/MTowfSksd3Q9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPTAsaT1lLmxlbmd0aDtuPGk7KWV0KGVbbl0sdCl8fGV0KGVbbl0scil8fChyW3IubGVuZ3RoXT1lW25dKSxuKz0xO3JldHVybiByfSksVHQ9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPVtdLGk9MCxvPXQubGVuZ3RoO2k8bzspWWUoZSx0W2ldLHIpfHxZZShlLHRbaV0sbil8fG4ucHVzaCh0W2ldKSxpKz0xO3JldHVybiBufSksQXQ9YyhmdW5jdGlvbihlLHQpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiB0KXJbbl09dFtuXTtyZXR1cm4gZGVsZXRlIHJbZV0scn0pLEN0PWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsMCk7cmV0dXJuIG4uc3BsaWNlKGUsdCksbn0pLHh0PWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiB2KG8odCksZSxyKX0pLEl0PWMoZnVuY3Rpb24gZSh0LHIpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiByO2Nhc2UgMTpyZXR1cm4gZGUodFswXSk/Q3QodFswXSwxLHIpOkF0KHRbMF0scik7ZGVmYXVsdDp2YXIgbj10WzBdLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwxKTtyZXR1cm4gbnVsbD09cltuXT9yOmRlKHRbMF0pP3h0KG4sZShpLHJbbl0pLHIpOnBlKG4sZShpLHJbbl0pLHIpfX0pLGt0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS90fSksT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMubj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm4+MD8odGhpcy5uLT0xLGUpOnRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KX0sZX0oKSxOdD1jKF8oWyJkcm9wIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgT3QoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGplKE1hdGgubWF4KDAsZSksMS8wLHQpfSkpLFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLm49ZSx0aGlzLmk9MH1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXt0aGlzLmkrPTE7dmFyIHI9MD09PXRoaXMubj9lOnRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KTtyZXR1cm4gdGhpcy5uPj0wJiZ0aGlzLmk+PXRoaXMubj9TKHIpOnJ9LGV9KCksUnQ9YyhfKFsidGFrZSJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IFB0KGUsdCl9KSxmdW5jdGlvbihlLHQpe3JldHVybiBqZSgwLGU8MD8xLzA6ZSx0KX0pKTtmdW5jdGlvbiBCdChlLHQpe3JldHVybiBSdChlPHQubGVuZ3RoP3QubGVuZ3RoLWU6MCx0KX12YXIgTXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMucG9zPTAsdGhpcy5mdWxsPSExLHRoaXMuYWNjPW5ldyBBcnJheShlKX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWNjPW51bGwsdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmZ1bGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0aGlzLmFjY1t0aGlzLnBvc10pKSx0aGlzLnN0b3JlKHQpLGV9LGUucHJvdG90eXBlLnN0b3JlPWZ1bmN0aW9uKGUpe3RoaXMuYWNjW3RoaXMucG9zXT1lLHRoaXMucG9zKz0xLHRoaXMucG9zPT09dGhpcy5hY2MubGVuZ3RoJiYodGhpcy5wb3M9MCx0aGlzLmZ1bGw9ITApfSxlfSgpLEx0PWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBNdChlLHQpfSksQnQpKTtmdW5jdGlvbiBEdChlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTAmJmUodFtyXSk7KXItPTE7cmV0dXJuIGplKDAscisxLHQpfXZhciBqdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmY9ZSx0aGlzLnJldGFpbmVkPVtdLHRoaXMueGY9dH1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV0YWluZWQ9bnVsbCx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KT90aGlzLnJldGFpbihlLHQpOnRoaXMuZmx1c2goZSx0KX0sZS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1NKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0sZSx0aGlzLnJldGFpbmVkKSx0aGlzLnJldGFpbmVkPVtdLHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KX0sZS5wcm90b3R5cGUucmV0YWluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmV0YWluZWQucHVzaCh0KSxlfSxlfSgpLFV0PWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBqdChlLHQpfSksRHQpKSxGdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnhmPXQsdGhpcy5wcmVkPWUsdGhpcy5sYXN0VmFsdWU9dm9pZCAwLHRoaXMuc2VlbkZpcnN0VmFsdWU9ITF9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPUUucmVzdWx0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ITE7cmV0dXJuIHRoaXMuc2VlbkZpcnN0VmFsdWU/dGhpcy5wcmVkKHRoaXMubGFzdFZhbHVlLHQpJiYocj0hMCk6dGhpcy5zZWVuRmlyc3RWYWx1ZT0hMCx0aGlzLmxhc3RWYWx1ZT10LHI/ZTp0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCl9LGV9KCksVnQ9YyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRnQoZSx0KX0pLHF0PWMoZnVuY3Rpb24oZSx0KXt2YXIgcj1lPDA/dC5sZW5ndGgrZTplO3JldHVybiB4KHQpP3QuY2hhckF0KHIpOnRbcl19KSxLdD1xdCgtMSksenQ9YyhfKFtdLFZ0LGZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj0xLGk9dC5sZW5ndGg7aWYoMCE9PWkpZm9yKHJbMF09dFswXTtuPGk7KWUoS3QociksdFtuXSl8fChyW3IubGVuZ3RoXT10W25dKSxuKz0xO3JldHVybiByfSkpLEd0PWkoXyhbXSxWdChaZSksenQoWmUpKSksSHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuZil7aWYodGhpcy5mKHQpKXJldHVybiBlO3RoaXMuZj1udWxsfXJldHVybiB0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCl9LGV9KCksV3Q9YyhfKFsiZHJvcFdoaWxlIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgSHQoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG4mJmUodFtyXSk7KXIrPTE7cmV0dXJuIGplKHIsMS8wLHQpfSkpLFl0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8dH0pLFh0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShZdCkoZSx0KX0pLFF0PWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgZVsiZmFudGFzeS1sYW5kL2VtcHR5Il0/ZVsiZmFudGFzeS1sYW5kL2VtcHR5Il0oKTpudWxsIT1lJiZudWxsIT1lLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3JbImZhbnRhc3ktbGFuZC9lbXB0eSJdP2UuY29uc3RydWN0b3JbImZhbnRhc3ktbGFuZC9lbXB0eSJdKCk6bnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmVtcHR5P2UuZW1wdHkoKTpudWxsIT1lJiZudWxsIT1lLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3IuZW1wdHk/ZS5jb25zdHJ1Y3Rvci5lbXB0eSgpOm0oZSk/W106eChlKT8iIjphdChlKT97fTpGKGUpP2Z1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKTp2b2lkIDB9KSwkdD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE50KGU+PTA/dC5sZW5ndGgtZTowLHQpfSksWnQ9YyhmdW5jdGlvbihlLHQpe3JldHVybiBaZSgkdChlLmxlbmd0aCx0KSxlKX0pLEp0PWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBaZShlKHQpLGUocikpfSksZXI9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFplKHRbZV0scltlXSl9KSx0cj1jKGZ1bmN0aW9uIGUodCxyKXt2YXIgbixpLG8sYT17fTtmb3IoaSBpbiByKW89dHlwZW9mKG49dFtpXSksYVtpXT0iZnVuY3Rpb24iPT09bz9uKHJbaV0pOm4mJiJvYmplY3QiPT09bz9lKG4scltpXSk6cltpXTtyZXR1cm4gYX0pLHJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmZvdW5kPSExfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5mb3VuZHx8KGU9dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHZvaWQgMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpJiYodGhpcy5mb3VuZD0hMCxlPVModGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHQpKSksZX0sZX0oKSxucj1jKF8oWyJmaW5kIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcnIoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47KXtpZihlKHRbcl0pKXJldHVybiB0W3JdO3IrPTF9fSkpLGlyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmlkeD0tMSx0aGlzLmZvdW5kPSExfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5mb3VuZHx8KGU9dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLC0xKSksdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlkeCs9MSx0aGlzLmYodCkmJih0aGlzLmZvdW5kPSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdGhpcy5pZHgpKSksZX0sZX0oKSxvcj1jKF8oW10sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgaXIoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47KXtpZihlKHRbcl0pKXJldHVybiByO3IrPTF9cmV0dXJuLTF9KSksYXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0aGlzLmxhc3QpKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpJiYodGhpcy5sYXN0PXQpLGV9LGV9KCksc3I9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGFyKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihlKHRbcl0pKXJldHVybiB0W3JdO3ItPTF9fSkpLHVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmlkeD0tMSx0aGlzLmxhc3RJZHg9LTF9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMubGFzdElkeCkpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlkeCs9MSx0aGlzLmYodCkmJih0aGlzLmxhc3RJZHg9dGhpcy5pZHgpLGV9LGV9KCksY3I9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHVyKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihlKHRbcl0pKXJldHVybiByO3ItPTF9cmV0dXJuLTF9KSksZnI9aShBZSghMCkpLGxyPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5sZW5ndGgsZnVuY3Rpb24odCxyKXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIG5bMF09cixuWzFdPXQsZS5hcHBseSh0aGlzLG4pfSl9KSxocj1jKERlKCJmb3JFYWNoIixmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPTA7bjxyOyllKHRbbl0pLG4rPTE7cmV0dXJuIHR9KSkscHI9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1HKHQpLG49MDtuPHIubGVuZ3RoOyl7dmFyIGk9cltuXTtlKHRbaV0saSx0KSxuKz0xfXJldHVybiB0fSksZHI9aShmdW5jdGlvbihlKXtmb3IodmFyIHQ9e30scj0wO3I8ZS5sZW5ndGg7KXRbZVtyXVswXV09ZVtyXVsxXSxyKz0xO3JldHVybiB0fSkseXI9YyhEZSgiZ3JvdXBCeSIsbXQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZSYmKGU9W10pLGUucHVzaCh0KSxlfSxudWxsKSkpLGdyPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10sbj0wLGk9dC5sZW5ndGg7bjxpOyl7Zm9yKHZhciBvPW4rMTtvPGkmJmUodFtvLTFdLHRbb10pOylvKz0xO3IucHVzaCh0LnNsaWNlKG4sbykpLG49b31yZXR1cm4gcn0pLHZyPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fSksbXI9YyhmdW5jdGlvbihlLHQpe3JldHVybiBlPj10fSksYnI9YyhqKSxfcj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUgaW4gdH0pLFNyPXF0KDApO2Z1bmN0aW9uIEVyKGUpe3JldHVybiBlfXZhciB3cj1pKEVyKSxUcj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZChNYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCxyLmxlbmd0aCksZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0pLEFyPWYoMSksQ3I9bXQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0sbnVsbCkseHI9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiIhPT10eXBlb2YgdC5pbmRleE9mfHxtKHQpP0plKHQsZSwwKTp0LmluZGV4T2YoZSl9KSxJcj1qZSgwLC0xKSxrcj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gb3QoZnVuY3Rpb24odCl7cmV0dXJuIFllKGUsdCxyKX0sdCl9KSxPcj1nKGZ1bmN0aW9uKGUsdCxyKXtlPWU8ci5sZW5ndGgmJmU+PTA/ZTpyLmxlbmd0aDt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLDApO3JldHVybiBuLnNwbGljZShlLDAsdCksbn0pLE5yPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPWU8ci5sZW5ndGgmJmU+PTA/ZTpyLmxlbmd0aCxbXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwwLGUpLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocixlKSl9KTtmdW5jdGlvbiBQcihlLHQscil7dmFyIG4saT10eXBlb2YgZTtzd2l0Y2goaSl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjpyZXR1cm4gMD09PWUmJjEvZT09PS0xLzA/ISFyLl9pdGVtc1siLTAiXXx8KHQmJihyLl9pdGVtc1siLTAiXT0hMCksITEpOm51bGwhPT1yLl9uYXRpdmVTZXQ/dD8obj1yLl9uYXRpdmVTZXQuc2l6ZSxyLl9uYXRpdmVTZXQuYWRkKGUpLHIuX25hdGl2ZVNldC5zaXplPT09bik6ci5fbmF0aXZlU2V0LmhhcyhlKTppIGluIHIuX2l0ZW1zP2UgaW4gci5faXRlbXNbaV18fCh0JiYoci5faXRlbXNbaV1bZV09ITApLCExKToodCYmKHIuX2l0ZW1zW2ldPXt9LHIuX2l0ZW1zW2ldW2VdPSEwKSwhMSk7Y2FzZSJib29sZWFuIjppZihpIGluIHIuX2l0ZW1zKXt2YXIgbz1lPzE6MDtyZXR1cm4hIXIuX2l0ZW1zW2ldW29dfHwodCYmKHIuX2l0ZW1zW2ldW29dPSEwKSwhMSl9cmV0dXJuIHQmJihyLl9pdGVtc1tpXT1lP1shMSwhMF06WyEwLCExXSksITE7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIG51bGwhPT1yLl9uYXRpdmVTZXQ/dD8obj1yLl9uYXRpdmVTZXQuc2l6ZSxyLl9uYXRpdmVTZXQuYWRkKGUpLHIuX25hdGl2ZVNldC5zaXplPT09bik6ci5fbmF0aXZlU2V0LmhhcyhlKTppIGluIHIuX2l0ZW1zPyEhZXQoZSxyLl9pdGVtc1tpXSl8fCh0JiZyLl9pdGVtc1tpXS5wdXNoKGUpLCExKToodCYmKHIuX2l0ZW1zW2ldPVtlXSksITEpO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4hIXIuX2l0ZW1zW2ldfHwodCYmKHIuX2l0ZW1zW2ldPSEwKSwhMSk7Y2FzZSJvYmplY3QiOmlmKG51bGw9PT1lKXJldHVybiEhci5faXRlbXMubnVsbHx8KHQmJihyLl9pdGVtcy5udWxsPSEwKSwhMSk7ZGVmYXVsdDpyZXR1cm4oaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpaW4gci5faXRlbXM/ISFldChlLHIuX2l0ZW1zW2ldKXx8KHQmJnIuX2l0ZW1zW2ldLnB1c2goZSksITEpOih0JiYoci5faXRlbXNbaV09W2VdKSwhMSl9fXZhciBScj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLl9uYXRpdmVTZXQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBTZXQ/bmV3IFNldDpudWxsLHRoaXMuX2l0ZW1zPXt9fXJldHVybiBlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIVByKGUsITAsdGhpcyl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gUHIoZSwhMSx0aGlzKX0sZX0oKSxCcj1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4saT1uZXcgUnIsbz1bXSxhPTA7YTx0Lmxlbmd0aDspcj1lKG49dFthXSksaS5hZGQocikmJm8ucHVzaChuKSxhKz0xO3JldHVybiBvfSksTXI9QnIod3IpLExyPWMoZnVuY3Rpb24oZSx0KXt2YXIgcixuO3JldHVybiBlLmxlbmd0aD50Lmxlbmd0aD8ocj1lLG49dCk6KHI9dCxuPWUpLE1yKG90KGxyKGV0KShyKSxuKSl9KSxEcj1jKERlKCJpbnRlcnNwZXJzZSIsZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10sbj0wLGk9dC5sZW5ndGg7bjxpOyluPT09aS0xP3IucHVzaCh0W25dKTpyLnB1c2godFtuXSxlKSxuKz0xO3JldHVybiByfSkpO3ZhciBqcj0iZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO2Zvcih2YXIgdD1PYmplY3QoZSkscj0xLG49YXJndW1lbnRzLmxlbmd0aDtyPG47KXt2YXIgaT1hcmd1bWVudHNbcl07aWYobnVsbCE9aSlmb3IodmFyIG8gaW4gaSlqKG8saSkmJih0W29dPWlbb10pO3IrPTF9cmV0dXJuIHR9LFVyPWMoZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtyZXR1cm4gcltlXT10LHJ9KSxGcj17IkBAdHJhbnNkdWNlci9pbml0IjpBcnJheSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucHVzaCh0KSxlfSwiQEB0cmFuc2R1Y2VyL3Jlc3VsdCI6RXJ9LFZyPXsiQEB0cmFuc2R1Y2VyL2luaXQiOlN0cmluZywiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdH0sIkBAdHJhbnNkdWNlci9yZXN1bHQiOkVyfSxxcj17IkBAdHJhbnNkdWNlci9pbml0IjpPYmplY3QsIkBAdHJhbnNkdWNlci9zdGVwIjpmdW5jdGlvbihlLHQpe3JldHVybiBqcihlLEkodCk/VXIodFswXSx0WzFdKTp0KX0sIkBAdHJhbnNkdWNlci9yZXN1bHQiOkVyfTt2YXIgS3I9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGIoZSk/TSh0KGUpLGVbIkBAdHJhbnNkdWNlci9pbml0Il0oKSxyKTpNKHQoZnVuY3Rpb24oZSl7aWYoYihlKSlyZXR1cm4gZTtpZihJKGUpKXJldHVybiBGcjtpZigic3RyaW5nIj09PXR5cGVvZiBlKXJldHVybiBWcjtpZigib2JqZWN0Ij09PXR5cGVvZiBlKXJldHVybiBxcjt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjcmVhdGUgdHJhbnNmb3JtZXIgZm9yICIrZSl9KGUpKSxOZShlLFtdLFtdLCExKSxyKX0pLHpyPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPTAsaT17fTtuPHI7KXt2YXIgbz10W25dLGE9ZVtvXSxzPWooYSxpKT9pW2FdOmlbYV09W107c1tzLmxlbmd0aF09byxuKz0xfXJldHVybiBpfSksR3I9aShmdW5jdGlvbihlKXtmb3IodmFyIHQ9RyhlKSxyPXQubGVuZ3RoLG49MCxpPXt9O248cjspe3ZhciBvPXRbbl07aVtlW29dXT1vLG4rPTF9cmV0dXJuIGl9KSxIcj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGQoZSsxLGZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzW2VdO2lmKG51bGwhPXImJmJlKHJbdF0pKXJldHVybiByW3RdLmFwcGx5KHIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDAsZSkpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQocikrJyBkb2VzIG5vdCBoYXZlIGEgbWV0aG9kIG5hbWVkICInK3QrJyInKX0pfSksV3I9YyhmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT10JiZ0LmNvbnN0cnVjdG9yPT09ZXx8dCBpbnN0YW5jZW9mIGV9KSxZcj1pKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZaZShlLFF0KGUpKX0pLFhyPUhyKDEsImpvaW4iKSxRcj1pKGZ1bmN0aW9uKGUpe3JldHVybiBndChmdW5jdGlvbigpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCl9LGUpfSksJHI9aShmdW5jdGlvbihlKXt2YXIgdCxyPVtdO2Zvcih0IGluIGUpcltyLmxlbmd0aF09dDtyZXR1cm4gcn0pLFpyPWMoZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQubGFzdEluZGV4T2Z8fG0odCkpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihaZSh0W3JdLGUpKXJldHVybiByO3ItPTF9cmV0dXJuLTF9cmV0dXJuIHQubGFzdEluZGV4T2YoZSl9KTtmdW5jdGlvbiBKcihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX12YXIgZW49aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmSnIoZS5sZW5ndGgpP2UubGVuZ3RoOk5hTn0pLHRuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBIKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbil9LHIoZShuKSkpfX19KSxybj1pKGZ1bmN0aW9uKGUpe3JldHVybiB0bihxdChlKSx4dChlKSl9KSxubj1pKGZ1bmN0aW9uKGUpe3JldHVybiB0bihXKGUpLGdlKGUpKX0pLG9uPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHRuKFkoZSkscGUoZSkpfSksYW49YyhmdW5jdGlvbihlLHQpe3JldHVybiBlPHR9KSxzbj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXR9KSx1bj1nKGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoLG89W10sYT1bdF07bjxpOylhPWUoYVswXSxyW25dKSxvW25dPWFbMV0sbis9MTtyZXR1cm5bYVswXSxvXX0pLGNuPWcoZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj1yLmxlbmd0aC0xLGk9W10sbz1bdF07bj49MDspbz1lKHJbbl0sb1swXSksaVtuXT1vWzFdLG4tPTE7cmV0dXJuW2ksb1swXV19KSxmbj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0sbix0KSxyfSx7fSxHKHQpKX0pLGxuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tYXRjaChlKXx8W119KSxobj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGRlKGUpPyFkZSh0KXx8dDwxP05hTjooZSV0K3QpJXQ6TmFOfSkscG49ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUocik+ZSh0KT9yOnR9KSxkbj1RKGYsMCkseW49aShmdW5jdGlvbihlKXtyZXR1cm4gZG4oZSkvZS5sZW5ndGh9KSxnbj1pKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiBOYU47dmFyIHI9Mi10JTIsbj0odC1yKS8yO3JldHVybiB5bihBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDApLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9KS5zbGljZShuLG4rcikpfSksdm49YyhmdW5jdGlvbihlLHQpe3ZhciByPXt9O3JldHVybiBoKHQubGVuZ3RoLGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGoobixyKXx8KHJbbl09dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHJbbl19KX0pLG1uPXZuKGZ1bmN0aW9uKCl7cmV0dXJuIGZ0KGFyZ3VtZW50cyl9KSxibj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpyKHt9LGUsdCl9KSxfbj1pKGZ1bmN0aW9uKGUpe3JldHVybiBqci5hcHBseShudWxsLFt7fV0uY29uY2F0KGUpKX0pLFNuPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGk9e307Zm9yKG4gaW4gdClqKG4sdCkmJihpW25dPWoobixyKT9lKG4sdFtuXSxyW25dKTp0W25dKTtmb3IobiBpbiByKWoobixyKSYmIWoobixpKSYmKGlbbl09cltuXSk7cmV0dXJuIGl9KSxFbj1nKGZ1bmN0aW9uIGUodCxyLG4pe3JldHVybiBTbihmdW5jdGlvbihyLG4saSl7cmV0dXJuIGF0KG4pJiZhdChpKT9lKHQsbixpKTp0KHIsbixpKX0scixuKX0pLHduPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gRW4oZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0fSxlLHQpfSksVG49YyhmdW5jdGlvbihlLHQpe3JldHVybiBFbihmdW5jdGlvbihlLHQscil7cmV0dXJuIHJ9LGUsdCl9KSxBbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRW4oZnVuY3Rpb24odCxyLG4pe3JldHVybiBlKHIsbil9LHQscil9KSxDbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gU24oZnVuY3Rpb24odCxyLG4pe3JldHVybiBlKHIsbil9LHQscil9KSx4bj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ8ZT90OmV9KSxJbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZShyKTxlKHQpP3I6dH0pLGtuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSV0fSksT249YyhmdW5jdGlvbihlLHQpe3JldHVybiBlKnR9KSxObj1pKGZ1bmN0aW9uKGUpe3JldHVybi1lfSksUG49YyhpdChfKFsiYW55Il0sZWUsdGUpKSksUm49aShmdW5jdGlvbihlKXtyZXR1cm4gZChlPDA/MTplKzEsZnVuY3Rpb24oKXtyZXR1cm4gcXQoZSxhcmd1bWVudHMpfSl9KSxCbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZSh0KHIpKX0pO2Z1bmN0aW9uIE1uKGUpe3JldHVybltlXX12YXIgTG49aShNbiksRG49YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj17fSxuPXt9LGk9MCxvPWUubGVuZ3RoO2k8bzspbltlW2ldXT0xLGkrPTE7Zm9yKHZhciBhIGluIHQpbi5oYXNPd25Qcm9wZXJ0eShhKXx8KHJbYV09dFthXSk7cmV0dXJuIHJ9KSxqbj1pKGZ1bmN0aW9uKGUpe3ZhciB0LHI9ITE7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gcj90OihyPSEwLHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9KSxVbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gZSh0KXtyZXR1cm57dmFsdWU6dCxtYXA6ZnVuY3Rpb24ocil7cmV0dXJuIGUocih0KSl9fX0odChlKSl9KShyKS52YWx1ZX0pLEZuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm5bZSx0XX0pO2Z1bmN0aW9uIFZuKGUpe3JldHVybiBjKGZ1bmN0aW9uKHQscil7cmV0dXJuIGgoTWF0aC5tYXgoMCx0Lmxlbmd0aC1yLmxlbmd0aCksZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGUocixhcmd1bWVudHMpKX0pfSl9dmFyIHFuPVZuKGwpLEtuPVZuKGxyKGwpKSx6bj1RcihbdXQsY3RdKSxHbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWmUoVyhlLHIpLHQpfSksSG49ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFN0KGUsVyh0LHIpKX0pLFduPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0Lmxlbmd0aD4wJiZlKFcodCxyKSl9KSxZbj1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoOyllW25daW4gdCYmKHJbZVtuXV09dFtlW25dXSksbis9MTtyZXR1cm4gcn0pLFhuPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9e30sbj0wLGk9ZS5sZW5ndGg7bjxpOyl7dmFyIG89ZVtuXTtyW29dPXRbb10sbis9MX1yZXR1cm4gcn0pLFFuPWMoZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gdCllKHRbbl0sbix0KSYmKHJbbl09dFtuXSk7cmV0dXJuIHJ9KTtmdW5jdGlvbiAkbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIEtlLmFwcGx5KHRoaXMsVmUoYXJndW1lbnRzKSl9dmFyIFpuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbChbZV0sdCl9KSxKbj1RKE9uLDEpLGVpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDspci5wdXNoKHRbbl0uY2FsbCh0aGlzLGFyZ3VtZW50c1tuXSkpLG4rPTE7cmV0dXJuIGUuYXBwbHkodGhpcyxyLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsdC5sZW5ndGgpKSl9KX0pLHRpPWVpKEMsW1huLHdyXSkscmk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFplKHQscltlXSl9KSxuaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gV3IoZSxyW3RdKX0pLGlpPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBudWxsIT1yJiZqKHQscik/clt0XTplfSksb2k9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUoclt0XSl9KSxhaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUubGVuZ3RoLG49W10saT0wO2k8cjspbltpXT10W2VbaV1dLGkrPTE7cmV0dXJuIG59KSxzaT1jKGZ1bmN0aW9uKGUsdCl7aWYoIUpyKGUpfHwhSnIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm90aCBhcmd1bWVudHMgdG8gcmFuZ2UgbXVzdCBiZSBudW1iZXJzIik7Zm9yKHZhciByPVtdLG49ZTtuPHQ7KXIucHVzaChuKSxuKz0xO3JldHVybiByfSksdWk9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXIubGVuZ3RoLTE7bj49MDspdD1lKHJbbl0sdCksbi09MTtyZXR1cm4gdH0pLGNpPXAoNCxbXSxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gTShmdW5jdGlvbihyLG4pe3JldHVybiBlKHIsbik/dChyLG4pOlMocil9LHIsbil9KSxmaT1pKFMpLGxpPWMoZnVuY3Rpb24oZSx0KXt2YXIgcixuPU51bWJlcih0KSxpPTA7aWYobjwwfHxpc05hTihuKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigibiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlciIpO2ZvcihyPW5ldyBBcnJheShuKTtpPG47KXJbaV09ZShpKSxpKz0xO3JldHVybiByfSksaGk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBsaShvKGUpLHQpfSkscGk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIHIucmVwbGFjZShlLHQpfSksZGk9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTAsaT1yLmxlbmd0aCxvPVt0XTtuPGk7KXQ9ZSh0LHJbbl0pLG9bbisxXT10LG4rPTE7cmV0dXJuIG99KSx5aT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0LnNlcXVlbmNlP3Quc2VxdWVuY2UoZSk6dWkoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmUoSChabixlKSx0KX0sZShbXSksdCl9KSxnaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVW4oZSxvKHQpLHIpfSksdmk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDApLnNvcnQoZSl9KSxtaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCkuc29ydChmdW5jdGlvbih0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pfSksYmk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDApLnNvcnQoZnVuY3Rpb24odCxyKXtmb3IodmFyIG49MCxpPTA7MD09PW4mJmk8ZS5sZW5ndGg7KW49ZVtpXSh0LHIpLGkrPTE7cmV0dXJuIG59KX0pLF9pPUhyKDEsInNwbGl0IiksU2k9YyhmdW5jdGlvbihlLHQpe3JldHVybltqZSgwLGUsdCksamUoZSxlbih0KSx0KV19KSxFaT1jKGZ1bmN0aW9uKGUsdCl7aWYoZTw9MCl0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIHNwbGl0RXZlcnkgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTtmb3IodmFyIHI9W10sbj0wO248dC5sZW5ndGg7KXIucHVzaChqZShuLG4rPWUsdCkpO3JldHVybiByfSksd2k9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGgsaT1bXTtyPG4mJiFlKHRbcl0pOylpLnB1c2godFtyXSkscis9MTtyZXR1cm5baSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LHIpXX0pLFRpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gWmUoUnQoZS5sZW5ndGgsdCksZSl9KSxBaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKS1OdW1iZXIodCl9KSxDaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGx0KHd0KGUsdCksd3QodCxlKSl9KSx4aT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbHQoVHQoZSx0LHIpLFR0KGUscix0KSl9KSxJaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQubGVuZ3RoLTE7cj49MCYmZSh0W3JdKTspci09MTtyZXR1cm4gamUocisxLDEvMCx0KX0pLGtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpP3RoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KTpTKGUpfSxlfSgpLE9pPWMoXyhbInRha2VXaGlsZSJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGtpKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuJiZlKHRbcl0pOylyKz0xO3JldHVybiBqZSgwLHIsdCl9KSksTmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYodCksdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHQpfSxlfSgpLFBpPWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBOaShlLHQpfSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSh0KSx0fSkpO3ZhciBSaT1jKGZ1bmN0aW9uKGUsdCl7aWYocj1lLCJbb2JqZWN0IFJlZ0V4cF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoIlx1MjAxOHRlc3RcdTIwMTkgcmVxdWlyZXMgYSB2YWx1ZSBvZiB0eXBlIFJlZ0V4cCBhcyBpdHMgZmlyc3QgYXJndW1lbnQ7IHJlY2VpdmVkICIrZnQoZSkpO3ZhciByO3JldHVybiBrZShlKS50ZXN0KHQpfSksQmk9SHIoMCwidG9Mb3dlckNhc2UiKSxNaT1pKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKWoocixlKSYmKHRbdC5sZW5ndGhdPVtyLGVbcl1dKTtyZXR1cm4gdH0pLExpPWkoZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdFt0Lmxlbmd0aF09W3IsZVtyXV07cmV0dXJuIHR9KSxEaT1IcigwLCJ0b1VwcGVyQ2FzZSIpLGppPWQoNCxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gTShlKCJmdW5jdGlvbiI9PT10eXBlb2YgdD9PKHQpOnQpLHIsbil9KSxVaT1pKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLHI9W107dDxlLmxlbmd0aDspe2Zvcih2YXIgbj1lW3RdLGk9MDtpPG4ubGVuZ3RoOykidW5kZWZpbmVkIj09PXR5cGVvZiByW2ldJiYocltpXT1bXSkscltpXS5wdXNoKG5baV0pLGkrPTE7dCs9MX1yZXR1cm4gcn0pLEZpPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgclsiZmFudGFzeS1sYW5kL3RyYXZlcnNlIl0/clsiZmFudGFzeS1sYW5kL3RyYXZlcnNlIl0odCxlKTp5aShlLEgodCxyKSl9KSxWaT0iXHRcblx2XGZcciBceGEwXHUxNjgwXHUxODBlXHUyMDAwXHUyMDAxXHUyMDAyXHUyMDAzXHUyMDA0XHUyMDA1XHUyMDA2XHUyMDA3XHUyMDA4XHUyMDA5XHUyMDBhXHUyMDJmXHUyMDVmXHUzMDAwXHUyMDI4XHUyMDI5XHVmZWY="
3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P: 2.7c767379.chunk.js_67: "base64:PWUuY2hpbGRyZW4scj1lLmluLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsWyJjaGlsZHJlbiIsImluIl0pLGE9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkodCkscz1hWzBdLHU9YVsxXTtyZXR1cm4gZGVsZXRlIGkub25FbnRlcixkZWxldGUgaS5vbkVudGVyaW5nLGRlbGV0ZSBpLm9uRW50ZXJlZCxkZWxldGUgaS5vbkV4aXQsZGVsZXRlIGkub25FeGl0aW5nLGRlbGV0ZSBpLm9uRXhpdGVkLG4uZGVmYXVsdC5jcmVhdGVFbGVtZW50KG8uZGVmYXVsdCxpLHI/bi5kZWZhdWx0LmNsb25lRWxlbWVudChzLHtrZXk6ImZpcnN0IixvbkVudGVyOnRoaXMuaGFuZGxlRW50ZXIsb25FbnRlcmluZzp0aGlzLmhhbmRsZUVudGVyaW5nLG9uRW50ZXJlZDp0aGlzLmhhbmRsZUVudGVyZWR9KTpuLmRlZmF1bHQuY2xvbmVFbGVtZW50KHUse2tleToic2Vjb25kIixvbkVudGVyOnRoaXMuaGFuZGxlRXhpdCxvbkVudGVyaW5nOnRoaXMuaGFuZGxlRXhpdGluZyxvbkVudGVyZWQ6dGhpcy5oYW5kbGVFeGl0ZWR9KSl9LGF9KG4uZGVmYXVsdC5Db21wb25lbnQpO3MucHJvcFR5cGVzPXt9O3ZhciB1PXM7dC5kZWZhdWx0PXUsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5nZXRDaGlsZE1hcHBpbmc9aSx0Lm1lcmdlQ2hpbGRNYXBwaW5ncz1vLHQuZ2V0SW5pdGlhbENoaWxkTWFwcGluZz1mdW5jdGlvbihlLHQpe3JldHVybiBpKGUuY2hpbGRyZW4sZnVuY3Rpb24ocil7cmV0dXJuKDAsbi5jbG9uZUVsZW1lbnQpKHIse29uRXhpdGVkOnQuYmluZChudWxsLHIpLGluOiEwLGFwcGVhcjphKHIsImFwcGVhciIsZSksZW50ZXI6YShyLCJlbnRlciIsZSksZXhpdDphKHIsImV4aXQiLGUpfSl9KX0sdC5nZXROZXh0Q2hpbGRNYXBwaW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1pKGUuY2hpbGRyZW4pLHU9byh0LHMpO3JldHVybiBPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPXVbaV07aWYoKDAsbi5pc1ZhbGlkRWxlbWVudCkobykpe3ZhciBjPWkgaW4gdCxmPWkgaW4gcyxsPXRbaV0saD0oMCxuLmlzVmFsaWRFbGVtZW50KShsKSYmIWwucHJvcHMuaW47IWZ8fGMmJiFoP2Z8fCFjfHxoP2YmJmMmJigwLG4uaXNWYWxpZEVsZW1lbnQpKGwpJiYodVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7b25FeGl0ZWQ6ci5iaW5kKG51bGwsbyksaW46bC5wcm9wcy5pbixleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KSk6dVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7aW46ITF9KTp1W2ldPSgwLG4uY2xvbmVFbGVtZW50KShvLHtvbkV4aXRlZDpyLmJpbmQobnVsbCxvKSxpbjohMCxleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KX19KSx1fTt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZuLkNoaWxkcmVuLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuZm9yRWFjaChmdW5jdGlvbihlKXtyW2Uua2V5XT1mdW5jdGlvbihlKXtyZXR1cm4gdCYmKDAsbi5pc1ZhbGlkRWxlbWVudCkoZSk/dChlKTplfShlKX0pLHJ9ZnVuY3Rpb24gbyhlLHQpe2Z1bmN0aW9uIHIocil7cmV0dXJuIHIgaW4gdD90W3JdOmVbcl19ZT1lfHx7fSx0PXR8fHt9O3ZhciBuLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxvPVtdO2Zvcih2YXIgYSBpbiBlKWEgaW4gdD9vLmxlbmd0aCYmKGlbYV09byxvPVtdKTpvLnB1c2goYSk7dmFyIHM9e307Zm9yKHZhciB1IGluIHQpe2lmKGlbdV0pZm9yKG49MDtuPGlbdV0ubGVuZ3RoO24rKyl7dmFyIGM9aVt1XVtuXTtzW2lbdV1bbl1dPXIoYyl9c1t1XT1yKHUpfWZvcihuPTA7bjxvLmxlbmd0aDtuKyspc1tvW25dXT1yKG9bbl0pO3JldHVybiBzfWZ1bmN0aW9uIGEoZSx0LHIpe3JldHVybiBudWxsIT1yW3RdP3JbdF06ZS5wcm9wc1t0XX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc1KSxpPXIoMTE3KSxvPXIoMTk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcz1PYmplY3QodCk7aWYoIWkodCkpe3ZhciB1PW4ociwzKTt0PW8odCkscj1mdW5jdGlvbihlKXtyZXR1cm4gdShzW2VdLGUscyl9fXZhciBjPWUodCxyLGEpO3JldHVybiBjPi0xP3NbdT90W2NdOmNdOnZvaWQgMH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0OTUpLGk9cig3NSksbz1yKDExMTMpLGE9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXMpcmV0dXJuLTE7dmFyIHU9bnVsbD09cj8wOm8ocik7cmV0dXJuIHU8MCYmKHU9YShzK3UsMCkpLG4oZSxpKHQsMyksdSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpLHI9dCUxO3JldHVybiB0PT09dD9yP3Qtcjp0OjB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTE1KSxpPXIoMTk5KSxvPXIoNTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXtyZXR1cm4gYSYmIm51bWJlciIhPXR5cGVvZiBhJiZpKHQscixhKSYmKHI9YT12b2lkIDApLHQ9byh0KSx2b2lkIDA9PT1yPyhyPXQsdD0wKTpyPW8ociksYT12b2lkIDA9PT1hP3Q8cj8xOi0xOm8oYSksbih0LHIsYSxlKX19fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguY2VpbCxuPU1hdGgubWF4O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtmb3IodmFyIGE9LTEscz1uKHIoKHQtZSkvKGl8fDEpKSwwKSx1PUFycmF5KHMpO3MtLTspdVtvP3M6KythXT1lLGUrPWk7cmV0dXJuIHV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigzNSksaT1yKDExMTcpLG89cig1MDIpLGE9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLHM9TWF0aC5tYXgsdT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBjLGYsbCxoLHAsZCx5PTAsZz0hMSx2PSExLG09ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhKTtmdW5jdGlvbiBiKHQpe3ZhciByPWMsbj1mO3JldHVybiBjPWY9dm9pZCAwLHk9dCxoPWUuYXBwbHkobixyKX1mdW5jdGlvbiBfKGUpe3ZhciByPWUtZDtyZXR1cm4gdm9pZCAwPT09ZHx8cj49dHx8cjwwfHx2JiZlLXk+PWx9ZnVuY3Rpb24gUygpe3ZhciBlPWkoKTtpZihfKGUpKXJldHVybiBFKGUpO3A9c2V0VGltZW91dChTLGZ1bmN0aW9uKGUpe3ZhciByPXQtKGUtZCk7cmV0dXJuIHY/dShyLGwtKGUteSkpOnJ9KGUpKX1mdW5jdGlvbiBFKGUpe3JldHVybiBwPXZvaWQgMCxtJiZjP2IoZSk6KGM9Zj12b2lkIDAsaCl9ZnVuY3Rpb24gdygpe3ZhciBlPWkoKSxyPV8oZSk7aWYoYz1hcmd1bWVudHMsZj10aGlzLGQ9ZSxyKXtpZih2b2lkIDA9PT1wKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4geT1lLHA9c2V0VGltZW91dChTLHQpLGc/YihlKTpofShkKTtpZih2KXJldHVybiBjbGVhclRpbWVvdXQocCkscD1zZXRUaW1lb3V0KFMsdCksYihkKX1yZXR1cm4gdm9pZCAwPT09cCYmKHA9c2V0VGltZW91dChTLHQpKSxofXJldHVybiB0PW8odCl8fDAsbihyKSYmKGc9ISFyLmxlYWRpbmcsbD0odj0ibWF4V2FpdCJpbiByKT9zKG8oci5tYXhXYWl0KXx8MCx0KTpsLG09InRyYWlsaW5nImluIHI/ISFyLnRyYWlsaW5nOm0pLHcuY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09cCYmY2xlYXJUaW1lb3V0KHApLHk9MCxjPWQ9Zj1wPXZvaWQgMH0sdy5mbHVzaD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1wP2g6RShpKCkpfSx3fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBuLkRhdGUubm93KCl9fSwsZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYhMD09PWVbIkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciJdfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uIHQocil7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RofHxuKHIpP3Q6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXIucih0KTt2YXIgbz1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0pLGE9byghMSkscz1vKCEwKSx1PXsiQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyIjohMH07ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8pe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQ7Y2FzZSAxOnJldHVybiBuKHIpP3Q6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQpfSk7ZGVmYXVsdDpyZXR1cm4gbihyKSYmbihvKT90Om4ocik/aShmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG8pfSk6bihvKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHIsdCl9KTplKHIsbyl9fX12YXIgZj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKStOdW1iZXIodCl9KTtmdW5jdGlvbiBsKGUsdCl7dmFyIHI7dD10fHxbXTt2YXIgbj0oZT1lfHxbXSkubGVuZ3RoLGk9dC5sZW5ndGgsbz1bXTtmb3Iocj0wO3I8bjspb1tvLmxlbmd0aF09ZVtyXSxyKz0xO2ZvcihyPTA7cjxpOylvW28ubGVuZ3RoXT10W3JdLHIrPTE7cmV0dXJuIG99ZnVuY3Rpb24gaChlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGkpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDc6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGksbyxhLHMpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDEwOnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyxmKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKX19ZnVuY3Rpb24gcChlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPVtdLG89MCxhPWUscz0wO3M8dC5sZW5ndGh8fG88YXJndW1lbnRzLmxlbmd0aDspe3ZhciB1O3M8dC5sZW5ndGgmJighbih0W3NdKXx8bz49YXJndW1lbnRzLmxlbmd0aCk/dT10W3NdOih1PWFyZ3VtZW50c1tvXSxvKz0xKSxpW3NdPXUsbih1KXx8KGEtPTEpLHMrPTF9cmV0dXJuIGE8PTA/ci5hcHBseSh0aGlzLGkpOmgoYSxwKGUsaSxyKSl9fXZhciBkPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09PWU/aSh0KTpoKGUscChlLFtdLHQpKX0pLHk9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxmdW5jdGlvbigpe3ZhciB0PTAscj1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gaVswXT1mdW5jdGlvbigpe3ZhciBlPXIuYXBwbHkodGhpcyxsKGFyZ3VtZW50cyxbdCxuXSkpO3JldHVybiB0Kz0xLGV9LGUuYXBwbHkodGhpcyxpKX0pfSk7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8sYSl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6cmV0dXJuIG4ocik/dDpjKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk7Y2FzZSAyOnJldHVybiBuKHIpJiZuKG8pP3Q6bihyKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLG8sdCl9KTtkZWZhdWx0OnJldHVybiBuKHIpJiZuKG8pJiZuKGEpP3Q6bihyKSYmbihvKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyLGEpfSk6bihyKSYmbihhKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKSYmbihhKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6bihyKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsbyxhKX0pOm4obyk/aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQsYSl9KTpuKGEpP2koZnVuY3Rpb24odCl7cmV0dXJuIGUocixvLHQpfSk6ZShyLG8sYSl9fX12YXIgdj1nKGZ1bmN0aW9uKGUsdCxyKXtpZih0Pj1yLmxlbmd0aHx8dDwtci5sZW5ndGgpcmV0dXJuIHI7dmFyIG49KHQ8MD9yLmxlbmd0aDowKSt0LGk9bChyKTtyZXR1cm4gaVtuXT1lKHJbbl0pLGl9KSxtPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD49MCYmIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX07ZnVuY3Rpb24gYihlKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGVbIkBAdHJhbnNkdWNlci9zdGVwIl19ZnVuY3Rpb24gXyhlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIoKTt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaT1uLnBvcCgpO2lmKCFtKGkpKXtmb3IodmFyIG89MDtvPGUubGVuZ3RoOyl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBpW2Vbb11dKXJldHVybiBpW2Vbb11dLmFwcGx5KGksbik7bys9MX1pZihiKGkpKXJldHVybiB0LmFwcGx5KG51bGwsbikoaSl9cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBTKGUpe3JldHVybiBlJiZlWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP2U6eyJAQHRyYW5zZHVjZXIvdmFsdWUiOmUsIkBAdHJhbnNkdWNlci9yZWR1Y2VkIjohMH19dmFyIEU9e2luaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL2luaXQiXSgpfSxyZXN1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX19LHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lLHRoaXMuYWxsPSEwfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hbGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpfHwodGhpcy5hbGw9ITEsZT1TKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMSkpKSxlfSxlfSgpLFQ9YyhfKFsiYWxsIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgdyhlLHQpfSksZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOyl7aWYoIWUodFtyXSkpcmV0dXJuITE7cis9MX1yZXR1cm4hMH0pKSxBPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD5lP3Q6ZX0pO2Z1bmN0aW9uIEMoZSx0KXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLGk9QXJyYXkobik7cjxuOylpW3JdPWUodFtyXSkscis9MTtyZXR1cm4gaX1mdW5jdGlvbiB4KGUpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBJPWkoZnVuY3Rpb24oZSl7cmV0dXJuISFtKGUpfHwhIWUmJigib2JqZWN0Ij09PXR5cGVvZiBlJiYoIXgoZSkmJigxPT09ZS5ub2RlVHlwZT8hIWUubGVuZ3RoOjA9PT1lLmxlbmd0aHx8ZS5sZW5ndGg+MCYmKGUuaGFzT3duUHJvcGVydHkoMCkmJmUuaGFzT3duUHJvcGVydHkoZS5sZW5ndGgtMSkpKSkpfSksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5mPWV9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJpbml0IG5vdCBpbXBsZW1lbnRlZCBvbiBYV3JhcCIpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYoZSx0KX0sZX0oKTtmdW5jdGlvbiBPKGUpe3JldHVybiBuZXcgayhlKX12YXIgTj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9KX0pO2Z1bmN0aW9uIFAoZSx0LHIpe2Zvcih2YXIgbj1yLm5leHQoKTshbi5kb25lOyl7aWYoKHQ9ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LG4udmFsdWUpKSYmdFsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7dD10WyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31uPXIubmV4dCgpfXJldHVybiBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odCl9ZnVuY3Rpb24gUihlLHQscixuKXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHJbbl0oTihlWyJAQHRyYW5zZHVjZXIvc3RlcCJdLGUpLHQpKX12YXIgQj0idW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2w/U3ltYm9sLml0ZXJhdG9yOiJAQGl0ZXJhdG9yIjtmdW5jdGlvbiBNKGUsdCxyKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUmJihlPU8oZSkpLEkocikpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKCh0PWVbIkBAdHJhbnNkdWNlci9zdGVwIl0odCxyW25dKSkmJnRbIkBAdHJhbnNkdWNlci9yZWR1Y2VkIl0pe3Q9dFsiQEB0cmFuc2R1Y2VyL3ZhbHVlIl07YnJlYWt9bis9MX1yZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfShlLHQscik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByWyJmYW50YXN5LWxhbmQvcmVkdWNlIl0pcmV0dXJuIFIoZSx0LHIsImZhbnRhc3ktbGFuZC9yZWR1Y2UiKTtpZihudWxsIT1yW0JdKXJldHVybiBQKGUsdCxyW0JdKCkpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygci5uZXh0KXJldHVybiBQKGUsdCxyKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIucmVkdWNlKXJldHVybiBSKGUsdCxyLCJyZWR1Y2UiKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2U6IGxpc3QgbXVzdCBiZSBhcnJheSBvciBpdGVyYWJsZSIpfXZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZih0KSl9LGV9KCksRD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBMKGUsdCl9KTtmdW5jdGlvbiBqKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfXZhciBVPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRj1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09VS5jYWxsKGFyZ3VtZW50cyk/ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1VLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBqKCJjYWxsZWUiLGUpfX0sVj0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLHE9WyJjb25zdHJ1Y3RvciIsInZhbHVlT2YiLCJpc1Byb3RvdHlwZU9mIiwidG9TdHJpbmciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5IiwidG9Mb2NhbGVTdHJpbmciXSxLPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksej1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KXtpZihlW3JdPT09dClyZXR1cm4hMDtyKz0xfXJldHVybiExfSxHPWkoImZ1bmN0aW9uIiE9PXR5cGVvZiBPYmplY3Qua2V5c3x8Sz9mdW5jdGlvbihlKXtpZihPYmplY3QoZSkhPT1lKXJldHVybltdO3ZhciB0LHIsbj1bXSxpPUsmJkYoZSk7Zm9yKHQgaW4gZSkhaih0LGUpfHxpJiYibGVuZ3RoIj09PXR8fChuW24ubGVuZ3RoXT10KTtpZihWKWZvcihyPXEubGVuZ3RoLTE7cj49MDspaih0PXFbcl0sZSkmJiF6KG4sdCkmJihuW24ubGVuZ3RoXT10KSxyLT0xO3JldHVybiBufTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KGUpIT09ZT9bXTpPYmplY3Qua2V5cyhlKX0pLEg9YyhfKFsiZmFudGFzeS1sYW5kL21hcCIsIm1hcCJdLEQsZnVuY3Rpb24oZSx0KXtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgRnVuY3Rpb25dIjpyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KTtjYXNlIltvYmplY3QgT2JqZWN0XSI6cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0pLHJ9LHt9LEcodCkpO2RlZmF1bHQ6cmV0dXJuIEMoZSx0KX19KSksVz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQsbj0wO248ZS5sZW5ndGg7KXtpZihudWxsPT1yKXJldHVybjtyPXJbZVtuXV0sbis9MX1yZXR1cm4gcn0pLFk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBXKFtlXSx0KX0pLFg9YyhmdW5jdGlvbihlLHQpe3JldHVybiBIKFkoZSksdCl9KSxRPWcoTSksJD1pKGZ1bmN0aW9uKGUpe3JldHVybiBkKFEoQSwwLFgoImxlbmd0aCIsZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj1lLmxlbmd0aDt0PHI7KXtpZighZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITE7dCs9MX1yZXR1cm4hMH0pfSksWj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnR9KSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmFueT0hMX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYW55fHwoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITEpKSx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KSYmKHRoaXMuYW55PSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITApKSksZX0sZX0oKSxlZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBKKGUsdCl9KSx0ZT1jKF8oWyJhbnkiXSxlZSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KXtpZihlKHRbcl0pKXJldHVybiEwO3IrPTF9cmV0dXJuITF9KSkscmU9aShmdW5jdGlvbihlKXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLGUpKSxmdW5jdGlvbigpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOyl7aWYoZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITA7dCs9MX1yZXR1cm4hMX0pfSksbmU9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdFsiZmFudGFzeS1sYW5kL2FwIl0/dFsiZmFudGFzeS1sYW5kL2FwIl0oZSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmFwP2UuYXAodCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlP2Z1bmN0aW9uKHIpe3JldHVybiBlKHIpKHQocikpfTpNKGZ1bmN0aW9uKGUscil7cmV0dXJuIGwoZSxIKHIsdCkpfSxbXSxlKX0pO2Z1bmN0aW9uIGllKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aC0oZS0xKSxpPW5ldyBBcnJheShuPj0wP246MCk7cjxuOylpW3JdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQscixyK2UpLHIrPTE7cmV0dXJuIGl9dmFyIG9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLnBvcz0wLHRoaXMuZnVsbD0hMSx0aGlzLmFjYz1uZXcgQXJyYXkoZSl9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFjYz1udWxsLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdG9yZSh0KSx0aGlzLmZ1bGw/dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZ2V0Q29weSgpKTplfSxlLnByb3RvdHlwZS5zdG9yZT1mdW5jdGlvbihlKXt0aGlzLmFjY1t0aGlzLnBvc109ZSx0aGlzLnBvcys9MSx0aGlzLnBvcz09PXRoaXMuYWNjLmxlbmd0aCYmKHRoaXMucG9zPTAsdGhpcy5mdWxsPSEwKX0sZS5wcm90b3R5cGUuZ2V0Q29weT1mdW5jdGlvbigpe3JldHVybiBsKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYWNjLHRoaXMucG9zKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFjYywwLHRoaXMucG9zKSl9LGV9KCksYWU9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG9lKGUsdCl9KSxpZSkpLHNlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh0LFtlXSl9KSx1ZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXBwbHkodGhpcyx0KX0pLGNlPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPVtdLGk9MDtpPHI7KW5baV09ZVt0W2ldXSxpKz0xO3JldHVybiBufSksZmU9aShmdW5jdGlvbiBlKHQpe3JldHVybiB0PUgoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplKHQpfSx0KSxkKFEoQSwwLFgoImxlbmd0aCIsY2UodCkpKSxmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gSChmdW5jdGlvbih0KXtyZXR1cm4gdWUodCxlKX0sdCl9KX0pLGxlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0pLGhlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pLHBlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9O2Zvcih2YXIgaSBpbiByKW5baV09cltpXTtyZXR1cm4gbltlXT10LG59KSxkZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4gZTw8MD09PWV9LHllPWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9KSxnZT1nKGZ1bmN0aW9uIGUodCxyLG4pe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gcjt2YXIgaT10WzBdO2lmKHQubGVuZ3RoPjEpe3ZhciBvPSF5ZShuKSYmaihpLG4pP25baV06ZGUodFsxXSk/W106e307cj1lKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMSkscixvKX1pZihkZShpKSYmbShuKSl7dmFyIGE9W10uY29uY2F0KG4pO3JldHVybiBhW2ldPXIsYX1yZXR1cm4gcGUoaSxyLG4pfSksdmU9YyhmdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbCh0aGlzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhKX07Y2FzZSA3OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1KXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyx1KX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1LGMsZil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjLGYpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gbkFyeSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpfX0pLG1lPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHZlKDIsZSl9KTtmdW5jdGlvbiBiZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBfZT1jKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZChlLHQpO3JldHVybiBkKGUsZnVuY3Rpb24oKXtyZXR1cm4gTShuZSxIKHIsYXJndW1lbnRzWzBdKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSl9KSxTZT1pKGZ1bmN0aW9uKGUpe3JldHVybiBfZShlLmxlbmd0aCxlKX0pLEVlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cykmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShaKShlLHQpfSksd2U9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxlKX0pLFRlPXdlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pO2Z1bmN0aW9uIEFlKGUpe3JldHVybiBmdW5jdGlvbiB0KHIpe2Zvcih2YXIgbixpLG8sYT1bXSxzPTAsdT1yLmxlbmd0aDtzPHU7KXtpZihJKHJbc10pKWZvcihvPTAsaT0obj1lP3QocltzXSk6cltzXSkubGVuZ3RoO288aTspYVthLmxlbmd0aF09bltvXSxvKz0xO2Vsc2UgYVthLmxlbmd0aF09cltzXTtzKz0xfXJldHVybiBhfX12YXIgQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbih0KXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKHQscil7dmFyIG49ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LHIpO3JldHVybiBuWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP3siQEB0cmFuc2R1Y2VyL3ZhbHVlIjpuLCJAQHRyYW5zZHVjZXIvcmVkdWNlZCI6ITB9Om59fX0oZSk7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbihlKXtyZXR1cm4gdFsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUscil7cmV0dXJuIEkocik/TSh0LGUscik6TSh0LGUsW3JdKX19fSx4ZT1jKF8oWyJmYW50YXN5LWxhbmQvY2hhaW4iLCJjaGFpbiJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gSChlLENlKHQpKX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0P2Z1bmN0aW9uKHIpe3JldHVybiBlKHQocikpKHIpfTpBZSghMSkoSChlLHQpKX0pKSxJZT1nKGZ1bmN0aW9uKGUsdCxyKXtpZihlPnQpdGhyb3cgbmV3IEVycm9yKCJtaW4gbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG1heCBpbiBjbGFtcChtaW4sIG1heCwgdmFsdWUpIik7cmV0dXJuIHI8ZT9lOnI+dD90OnJ9KTtmdW5jdGlvbiBrZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChlLnNvdXJjZSwoZS5nbG9iYWw/ImciOiIiKSsoZS5pZ25vcmVDYXNlPyJpIjoiIikrKGUubXVsdGlsaW5lPyJtIjoiIikrKGUuc3RpY2t5PyJ5IjoiIikrKGUudW5pY29kZT8idSI6IiIpKX12YXIgT2U9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWU/Ik51bGwiOnZvaWQgMD09PWU/IlVuZGVmaW5lZCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfSk7ZnVuY3Rpb24gTmUoZSx0LHIsbil7dmFyIGk9ZnVuY3Rpb24oaSl7Zm9yKHZhciBvPXQubGVuZ3RoLGE9MDthPG87KXtpZihlPT09dFthXSlyZXR1cm4gclthXTthKz0xfWZvcih2YXIgcyBpbiB0W2ErMV09ZSxyW2ErMV09aSxlKWlbc109bj9OZShlW3NdLHQsciwhMCk6ZVtzXTtyZXR1cm4gaX07c3dpdGNoKE9lKGUpKXtjYXNlIk9iamVjdCI6cmV0dXJuIGkoe30pO2Nhc2UiQXJyYXkiOnJldHVybiBpKFtdKTtjYXNlIkRhdGUiOnJldHVybiBuZXcgRGF0ZShlLnZhbHVlT2YoKSk7Y2FzZSJSZWdFeHAiOnJldHVybiBrZShlKTtkZWZhdWx0OnJldHVybiBlfX12YXIgUGU9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmNsb25lP2UuY2xvbmUoKTpOZShlLFtdLFtdLCEwKX0pLFJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyKT8tMTplKHIsdCk/MTowfX0pLEJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIWV9KSxNZT1TZShCZSk7ZnVuY3Rpb24gTGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHQoKTt2YXIgbj1hcmd1bWVudHNbci0xXTtyZXR1cm4gbShuKXx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBuW2VdP3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOm5bZV0uYXBwbHkobixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCxyLTEpKX19dmFyIGplPWcoRGUoInNsaWNlIixmdW5jdGlvbihlLHQscil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsZSx0KX0pKSxVZT1pKERlKCJ0YWlsIixqZSgxLDEvMCkpKTtmdW5jdGlvbiBGZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gaChhcmd1bWVudHNbMF0ubGVuZ3RoLFEoTGUsYXJndW1lbnRzWzBdLFVlKGFyZ3VtZW50cykpKX12YXIgVmU9aShmdW5jdGlvbihlKXtyZXR1cm4geChlKT9lLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwKS5yZXZlcnNlKCl9KTtmdW5jdGlvbiBxZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gRmUuYXBwbHkodGhpcyxWZShhcmd1bWVudHMpKX1mdW5jdGlvbiBLZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PWUucG9wKCk7cmV0dXJuIHFlKHFlLmFwcGx5KHRoaXMsSCh4ZSxlKSksdCl9ZnVuY3Rpb24gemUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiBlLmFwcGx5KHIsYXJndW1lbnRzKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwocixlKX0pfX1mdW5jdGlvbiBHZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZVAgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIGgoYXJndW1lbnRzWzBdLmxlbmd0aCxRKHplLGFyZ3VtZW50c1swXSxVZShhcmd1bWVudHMpKSl9ZnVuY3Rpb24gSGUoKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImNvbXBvc2VQIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBHZS5hcHBseSh0aGlzLFZlKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFdlKGUpe2Zvcih2YXIgdCxyPVtdOyEodD1lLm5leHQoKSkuZG9uZTspci5wdXNoKHQudmFsdWUpO3JldHVybiByfWZ1bmN0aW9uIFllKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKGUodCxyW25dKSlyZXR1cm4hMDtuKz0xfXJldHVybiExfXZhciBYZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fSk7ZnVuY3Rpb24gUWUoZSx0LHIsbil7dmFyIGk9V2UoZSk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiAkZShlLHQsci5zbGljZSgpLG4uc2xpY2UoKSl9cmV0dXJuIVllKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIVllKG8sdCxlKX0sV2UodCksaSl9ZnVuY3Rpb24gJGUoZSx0LHIsbil7aWYoWGUoZSx0KSlyZXR1cm4hMDt2YXIgaT1PZShlKTtpZihpIT09T2UodCkpcmV0dXJuITE7aWYobnVsbD09ZXx8bnVsbD09dClyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0pcmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBlWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSh0KSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJnRbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShlKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZXF1YWxzfHwiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZS5lcXVhbHMmJmUuZXF1YWxzKHQpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzJiZ0LmVxdWFscyhlKTtzd2l0Y2goaSl7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjppZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3ImJiJQcm9taXNlIj09PWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhlKS5tYXRjaCgvXmZ1bmN0aW9uIChcdyopLyk7cmV0dXJuIG51bGw9PXQ/IiI6dFsxXX0oZS5jb25zdHJ1Y3RvcikpcmV0dXJuIGU9PT10O2JyZWFrO2Nhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjppZih0eXBlb2YgZSE9PXR5cGVvZiB0fHwhWGUoZS52YWx1ZU9mKCksdC52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRGF0ZSI6aWYoIVhlKGUudmFsdWVPZigpLHQudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkVycm9yIjpyZXR1cm4gZS5uYW1lPT09dC5uYW1lJiZlLm1lc3NhZ2U9PT10Lm1lc3NhZ2U7Y2FzZSJSZWdFeHAiOmlmKGUuc291cmNlIT09dC5zb3VyY2V8fGUuZ2xvYmFsIT09dC5nbG9iYWx8fGUuaWdub3JlQ2FzZSE9PXQuaWdub3JlQ2FzZXx8ZS5tdWx0aWxpbmUhPT10Lm11bHRpbGluZXx8ZS5zdGlja3khPT10LnN0aWNreXx8ZS51bmljb2RlIT09dC51bmljb2RlKXJldHVybiExfWZvcih2YXIgbz1yLmxlbmd0aC0xO28+PTA7KXtpZihyW29dPT09ZSlyZXR1cm4gbltvXT09PXQ7by09MX1zd2l0Y2goaSl7Y2FzZSJNYXAiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUuZW50cmllcygpLHQuZW50cmllcygpLHIuY29uY2F0KFtlXSksbi5jb25jYXQoW3RdKSk7Y2FzZSJTZXQiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUudmFsdWVzKCksdC52YWx1ZXMoKSxyLmNvbmNhdChbZV0pLG4uY29uY2F0KFt0XSkpO2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmNhc2UiRGF0ZSI6Y2FzZSJFcnJvciI6Y2FzZSJSZWdFeHAiOmNhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQXJyYXlCdWZmZXIiOmJyZWFrO2RlZmF1bHQ6cmV0dXJuITF9dmFyIGE9RyhlKTtpZihhLmxlbmd0aCE9PUcodCkubGVuZ3RoKXJldHVybiExO3ZhciBzPXIuY29uY2F0KFtlXSksdT1uLmNvbmNhdChbdF0pO2ZvcihvPWEubGVuZ3RoLTE7bz49MDspe3ZhciBjPWFbb107aWYoIWooYyx0KXx8ISRlKHRbY10sZVtjXSxzLHUpKXJldHVybiExO28tPTF9cmV0dXJuITB9dmFyIFplPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gJGUoZSx0LFtdLFtdKX0pO2Z1bmN0aW9uIEplKGUsdCxyKXt2YXIgbixpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS5pbmRleE9mKXN3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmlmKDA9PT10KXtmb3Iobj0xL3Q7cjxlLmxlbmd0aDspe2lmKDA9PT0oaT1lW3JdKSYmMS9pPT09bilyZXR1cm4gcjtyKz0xfXJldHVybi0xfWlmKHQhPT10KXtmb3IoO3I8ZS5sZW5ndGg7KXtpZigibnVtYmVyIj09PXR5cGVvZihpPWVbcl0pJiZpIT09aSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfXJldHVybiBlLmluZGV4T2YodCxyKTtjYXNlInN0cmluZyI6Y2FzZSJib29sZWFuIjpjYXNlImZ1bmN0aW9uIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuIGUuaW5kZXhPZih0LHIpO2Nhc2Uib2JqZWN0IjppZihudWxsPT09dClyZXR1cm4gZS5pbmRleE9mKHQscil9Zm9yKDtyPGUubGVuZ3RoOyl7aWYoWmUoZVtyXSx0KSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfWZ1bmN0aW9uIGV0KGUsdCl7cmV0dXJuIEplKHQsZSwwKT49MH1mdW5jdGlvbiB0dChlKXtyZXR1cm4nIicrZS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvW1xiXS9nLCJcXGIiKS5yZXBsYWNlKC9cZi9nLCJcXGYiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKS5yZXBsYWNlKC9cci9nLCJcXHIiKS5yZXBsYWNlKC9cdC9nLCJcXHQiKS5yZXBsYWNlKC9cdi9nLCJcXHYiKS5yZXBsYWNlKC9cMC9nLCJcXDAiKS5yZXBsYWNlKC8iL2csJ1xcIicpKyciJ312YXIgcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU8MTA/IjAiOiIiKStlfSxudD0iZnVuY3Rpb24iPT09dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3J0KGUuZ2V0VVRDTW9udGgoKSsxKSsiLSIrcnQoZS5nZXRVVENEYXRlKCkpKyJUIitydChlLmdldFVUQ0hvdXJzKCkpKyI6IitydChlLmdldFVUQ01pbnV0ZXMoKSkrIjoiK3J0KGUuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkvMWUzKS50b0ZpeGVkKDMpLnNsaWNlKDIsNSkrIloifTtmdW5jdGlvbiBpdChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG90KGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aCxpPVtdO3I8bjspZSh0W3JdKSYmKGlbaS5sZW5ndGhdPXRbcl0pLHIrPTE7cmV0dXJuIGl9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXQ=" == "base64:PWUuY2hpbGRyZW4scj1lLmluLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsWyJjaGlsZHJlbiIsImluIl0pLGE9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkodCkscz1hWzBdLHU9YVsxXTtyZXR1cm4gZGVsZXRlIGkub25FbnRlcixkZWxldGUgaS5vbkVudGVyaW5nLGRlbGV0ZSBpLm9uRW50ZXJlZCxkZWxldGUgaS5vbkV4aXQsZGVsZXRlIGkub25FeGl0aW5nLGRlbGV0ZSBpLm9uRXhpdGVkLG4uZGVmYXVsdC5jcmVhdGVFbGVtZW50KG8uZGVmYXVsdCxpLHI/bi5kZWZhdWx0LmNsb25lRWxlbWVudChzLHtrZXk6ImZpcnN0IixvbkVudGVyOnRoaXMuaGFuZGxlRW50ZXIsb25FbnRlcmluZzp0aGlzLmhhbmRsZUVudGVyaW5nLG9uRW50ZXJlZDp0aGlzLmhhbmRsZUVudGVyZWR9KTpuLmRlZmF1bHQuY2xvbmVFbGVtZW50KHUse2tleToic2Vjb25kIixvbkVudGVyOnRoaXMuaGFuZGxlRXhpdCxvbkVudGVyaW5nOnRoaXMuaGFuZGxlRXhpdGluZyxvbkVudGVyZWQ6dGhpcy5oYW5kbGVFeGl0ZWR9KSl9LGF9KG4uZGVmYXVsdC5Db21wb25lbnQpO3MucHJvcFR5cGVzPXt9O3ZhciB1PXM7dC5kZWZhdWx0PXUsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5nZXRDaGlsZE1hcHBpbmc9aSx0Lm1lcmdlQ2hpbGRNYXBwaW5ncz1vLHQuZ2V0SW5pdGlhbENoaWxkTWFwcGluZz1mdW5jdGlvbihlLHQpe3JldHVybiBpKGUuY2hpbGRyZW4sZnVuY3Rpb24ocil7cmV0dXJuKDAsbi5jbG9uZUVsZW1lbnQpKHIse29uRXhpdGVkOnQuYmluZChudWxsLHIpLGluOiEwLGFwcGVhcjphKHIsImFwcGVhciIsZSksZW50ZXI6YShyLCJlbnRlciIsZSksZXhpdDphKHIsImV4aXQiLGUpfSl9KX0sdC5nZXROZXh0Q2hpbGRNYXBwaW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1pKGUuY2hpbGRyZW4pLHU9byh0LHMpO3JldHVybiBPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPXVbaV07aWYoKDAsbi5pc1ZhbGlkRWxlbWVudCkobykpe3ZhciBjPWkgaW4gdCxmPWkgaW4gcyxsPXRbaV0saD0oMCxuLmlzVmFsaWRFbGVtZW50KShsKSYmIWwucHJvcHMuaW47IWZ8fGMmJiFoP2Z8fCFjfHxoP2YmJmMmJigwLG4uaXNWYWxpZEVsZW1lbnQpKGwpJiYodVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7b25FeGl0ZWQ6ci5iaW5kKG51bGwsbyksaW46bC5wcm9wcy5pbixleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KSk6dVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7aW46ITF9KTp1W2ldPSgwLG4uY2xvbmVFbGVtZW50KShvLHtvbkV4aXRlZDpyLmJpbmQobnVsbCxvKSxpbjohMCxleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KX19KSx1fTt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZuLkNoaWxkcmVuLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuZm9yRWFjaChmdW5jdGlvbihlKXtyW2Uua2V5XT1mdW5jdGlvbihlKXtyZXR1cm4gdCYmKDAsbi5pc1ZhbGlkRWxlbWVudCkoZSk/dChlKTplfShlKX0pLHJ9ZnVuY3Rpb24gbyhlLHQpe2Z1bmN0aW9uIHIocil7cmV0dXJuIHIgaW4gdD90W3JdOmVbcl19ZT1lfHx7fSx0PXR8fHt9O3ZhciBuLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxvPVtdO2Zvcih2YXIgYSBpbiBlKWEgaW4gdD9vLmxlbmd0aCYmKGlbYV09byxvPVtdKTpvLnB1c2goYSk7dmFyIHM9e307Zm9yKHZhciB1IGluIHQpe2lmKGlbdV0pZm9yKG49MDtuPGlbdV0ubGVuZ3RoO24rKyl7dmFyIGM9aVt1XVtuXTtzW2lbdV1bbl1dPXIoYyl9c1t1XT1yKHUpfWZvcihuPTA7bjxvLmxlbmd0aDtuKyspc1tvW25dXT1yKG9bbl0pO3JldHVybiBzfWZ1bmN0aW9uIGEoZSx0LHIpe3JldHVybiBudWxsIT1yW3RdP3JbdF06ZS5wcm9wc1t0XX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc1KSxpPXIoMTE3KSxvPXIoMTk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcz1PYmplY3QodCk7aWYoIWkodCkpe3ZhciB1PW4ociwzKTt0PW8odCkscj1mdW5jdGlvbihlKXtyZXR1cm4gdShzW2VdLGUscyl9fXZhciBjPWUodCxyLGEpO3JldHVybiBjPi0xP3NbdT90W2NdOmNdOnZvaWQgMH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0OTUpLGk9cig3NSksbz1yKDExMTMpLGE9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXMpcmV0dXJuLTE7dmFyIHU9bnVsbD09cj8wOm8ocik7cmV0dXJuIHU8MCYmKHU9YShzK3UsMCkpLG4oZSxpKHQsMyksdSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpLHI9dCUxO3JldHVybiB0PT09dD9yP3Qtcjp0OjB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTE1KSxpPXIoMTk5KSxvPXIoNTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXtyZXR1cm4gYSYmIm51bWJlciIhPXR5cGVvZiBhJiZpKHQscixhKSYmKHI9YT12b2lkIDApLHQ9byh0KSx2b2lkIDA9PT1yPyhyPXQsdD0wKTpyPW8ociksYT12b2lkIDA9PT1hP3Q8cj8xOi0xOm8oYSksbih0LHIsYSxlKX19fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguY2VpbCxuPU1hdGgubWF4O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtmb3IodmFyIGE9LTEscz1uKHIoKHQtZSkvKGl8fDEpKSwwKSx1PUFycmF5KHMpO3MtLTspdVtvP3M6KythXT1lLGUrPWk7cmV0dXJuIHV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigzNSksaT1yKDExMTcpLG89cig1MDIpLGE9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLHM9TWF0aC5tYXgsdT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBjLGYsbCxoLHAsZCx5PTAsZz0hMSx2PSExLG09ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhKTtmdW5jdGlvbiBiKHQpe3ZhciByPWMsbj1mO3JldHVybiBjPWY9dm9pZCAwLHk9dCxoPWUuYXBwbHkobixyKX1mdW5jdGlvbiBfKGUpe3ZhciByPWUtZDtyZXR1cm4gdm9pZCAwPT09ZHx8cj49dHx8cjwwfHx2JiZlLXk+PWx9ZnVuY3Rpb24gUygpe3ZhciBlPWkoKTtpZihfKGUpKXJldHVybiBFKGUpO3A9c2V0VGltZW91dChTLGZ1bmN0aW9uKGUpe3ZhciByPXQtKGUtZCk7cmV0dXJuIHY/dShyLGwtKGUteSkpOnJ9KGUpKX1mdW5jdGlvbiBFKGUpe3JldHVybiBwPXZvaWQgMCxtJiZjP2IoZSk6KGM9Zj12b2lkIDAsaCl9ZnVuY3Rpb24gdygpe3ZhciBlPWkoKSxyPV8oZSk7aWYoYz1hcmd1bWVudHMsZj10aGlzLGQ9ZSxyKXtpZih2b2lkIDA9PT1wKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4geT1lLHA9c2V0VGltZW91dChTLHQpLGc/YihlKTpofShkKTtpZih2KXJldHVybiBjbGVhclRpbWVvdXQocCkscD1zZXRUaW1lb3V0KFMsdCksYihkKX1yZXR1cm4gdm9pZCAwPT09cCYmKHA9c2V0VGltZW91dChTLHQpKSxofXJldHVybiB0PW8odCl8fDAsbihyKSYmKGc9ISFyLmxlYWRpbmcsbD0odj0ibWF4V2FpdCJpbiByKT9zKG8oci5tYXhXYWl0KXx8MCx0KTpsLG09InRyYWlsaW5nImluIHI/ISFyLnRyYWlsaW5nOm0pLHcuY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09cCYmY2xlYXJUaW1lb3V0KHApLHk9MCxjPWQ9Zj1wPXZvaWQgMH0sdy5mbHVzaD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1wP2g6RShpKCkpfSx3fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBuLkRhdGUubm93KCl9fSwsZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYhMD09PWVbIkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciJdfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uIHQocil7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RofHxuKHIpP3Q6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXIucih0KTt2YXIgbz1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0pLGE9byghMSkscz1vKCEwKSx1PXsiQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyIjohMH07ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8pe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQ7Y2FzZSAxOnJldHVybiBuKHIpP3Q6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQpfSk7ZGVmYXVsdDpyZXR1cm4gbihyKSYmbihvKT90Om4ocik/aShmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG8pfSk6bihvKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHIsdCl9KTplKHIsbyl9fX12YXIgZj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKStOdW1iZXIodCl9KTtmdW5jdGlvbiBsKGUsdCl7dmFyIHI7dD10fHxbXTt2YXIgbj0oZT1lfHxbXSkubGVuZ3RoLGk9dC5sZW5ndGgsbz1bXTtmb3Iocj0wO3I8bjspb1tvLmxlbmd0aF09ZVtyXSxyKz0xO2ZvcihyPTA7cjxpOylvW28ubGVuZ3RoXT10W3JdLHIrPTE7cmV0dXJuIG99ZnVuY3Rpb24gaChlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGkpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDc6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGksbyxhLHMpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDEwOnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyxmKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKX19ZnVuY3Rpb24gcChlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPVtdLG89MCxhPWUscz0wO3M8dC5sZW5ndGh8fG88YXJndW1lbnRzLmxlbmd0aDspe3ZhciB1O3M8dC5sZW5ndGgmJighbih0W3NdKXx8bz49YXJndW1lbnRzLmxlbmd0aCk/dT10W3NdOih1PWFyZ3VtZW50c1tvXSxvKz0xKSxpW3NdPXUsbih1KXx8KGEtPTEpLHMrPTF9cmV0dXJuIGE8PTA/ci5hcHBseSh0aGlzLGkpOmgoYSxwKGUsaSxyKSl9fXZhciBkPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09PWU/aSh0KTpoKGUscChlLFtdLHQpKX0pLHk9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxmdW5jdGlvbigpe3ZhciB0PTAscj1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gaVswXT1mdW5jdGlvbigpe3ZhciBlPXIuYXBwbHkodGhpcyxsKGFyZ3VtZW50cyxbdCxuXSkpO3JldHVybiB0Kz0xLGV9LGUuYXBwbHkodGhpcyxpKX0pfSk7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8sYSl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6cmV0dXJuIG4ocik/dDpjKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk7Y2FzZSAyOnJldHVybiBuKHIpJiZuKG8pP3Q6bihyKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLG8sdCl9KTtkZWZhdWx0OnJldHVybiBuKHIpJiZuKG8pJiZuKGEpP3Q6bihyKSYmbihvKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyLGEpfSk6bihyKSYmbihhKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKSYmbihhKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6bihyKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsbyxhKX0pOm4obyk/aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQsYSl9KTpuKGEpP2koZnVuY3Rpb24odCl7cmV0dXJuIGUocixvLHQpfSk6ZShyLG8sYSl9fX12YXIgdj1nKGZ1bmN0aW9uKGUsdCxyKXtpZih0Pj1yLmxlbmd0aHx8dDwtci5sZW5ndGgpcmV0dXJuIHI7dmFyIG49KHQ8MD9yLmxlbmd0aDowKSt0LGk9bChyKTtyZXR1cm4gaVtuXT1lKHJbbl0pLGl9KSxtPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD49MCYmIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX07ZnVuY3Rpb24gYihlKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGVbIkBAdHJhbnNkdWNlci9zdGVwIl19ZnVuY3Rpb24gXyhlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIoKTt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaT1uLnBvcCgpO2lmKCFtKGkpKXtmb3IodmFyIG89MDtvPGUubGVuZ3RoOyl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBpW2Vbb11dKXJldHVybiBpW2Vbb11dLmFwcGx5KGksbik7bys9MX1pZihiKGkpKXJldHVybiB0LmFwcGx5KG51bGwsbikoaSl9cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBTKGUpe3JldHVybiBlJiZlWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP2U6eyJAQHRyYW5zZHVjZXIvdmFsdWUiOmUsIkBAdHJhbnNkdWNlci9yZWR1Y2VkIjohMH19dmFyIEU9e2luaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL2luaXQiXSgpfSxyZXN1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX19LHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lLHRoaXMuYWxsPSEwfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hbGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpfHwodGhpcy5hbGw9ITEsZT1TKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMSkpKSxlfSxlfSgpLFQ9YyhfKFsiYWxsIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgdyhlLHQpfSksZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOyl7aWYoIWUodFtyXSkpcmV0dXJuITE7cis9MX1yZXR1cm4hMH0pKSxBPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD5lP3Q6ZX0pO2Z1bmN0aW9uIEMoZSx0KXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLGk9QXJyYXkobik7cjxuOylpW3JdPWUodFtyXSkscis9MTtyZXR1cm4gaX1mdW5jdGlvbiB4KGUpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBJPWkoZnVuY3Rpb24oZSl7cmV0dXJuISFtKGUpfHwhIWUmJigib2JqZWN0Ij09PXR5cGVvZiBlJiYoIXgoZSkmJigxPT09ZS5ub2RlVHlwZT8hIWUubGVuZ3RoOjA9PT1lLmxlbmd0aHx8ZS5sZW5ndGg+MCYmKGUuaGFzT3duUHJvcGVydHkoMCkmJmUuaGFzT3duUHJvcGVydHkoZS5sZW5ndGgtMSkpKSkpfSksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5mPWV9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJpbml0IG5vdCBpbXBsZW1lbnRlZCBvbiBYV3JhcCIpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYoZSx0KX0sZX0oKTtmdW5jdGlvbiBPKGUpe3JldHVybiBuZXcgayhlKX12YXIgTj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9KX0pO2Z1bmN0aW9uIFAoZSx0LHIpe2Zvcih2YXIgbj1yLm5leHQoKTshbi5kb25lOyl7aWYoKHQ9ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LG4udmFsdWUpKSYmdFsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7dD10WyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31uPXIubmV4dCgpfXJldHVybiBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odCl9ZnVuY3Rpb24gUihlLHQscixuKXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHJbbl0oTihlWyJAQHRyYW5zZHVjZXIvc3RlcCJdLGUpLHQpKX12YXIgQj0idW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2w/U3ltYm9sLml0ZXJhdG9yOiJAQGl0ZXJhdG9yIjtmdW5jdGlvbiBNKGUsdCxyKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUmJihlPU8oZSkpLEkocikpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKCh0PWVbIkBAdHJhbnNkdWNlci9zdGVwIl0odCxyW25dKSkmJnRbIkBAdHJhbnNkdWNlci9yZWR1Y2VkIl0pe3Q9dFsiQEB0cmFuc2R1Y2VyL3ZhbHVlIl07YnJlYWt9bis9MX1yZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfShlLHQscik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByWyJmYW50YXN5LWxhbmQvcmVkdWNlIl0pcmV0dXJuIFIoZSx0LHIsImZhbnRhc3ktbGFuZC9yZWR1Y2UiKTtpZihudWxsIT1yW0JdKXJldHVybiBQKGUsdCxyW0JdKCkpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygci5uZXh0KXJldHVybiBQKGUsdCxyKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIucmVkdWNlKXJldHVybiBSKGUsdCxyLCJyZWR1Y2UiKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2U6IGxpc3QgbXVzdCBiZSBhcnJheSBvciBpdGVyYWJsZSIpfXZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZih0KSl9LGV9KCksRD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBMKGUsdCl9KTtmdW5jdGlvbiBqKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfXZhciBVPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRj1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09VS5jYWxsKGFyZ3VtZW50cyk/ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1VLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBqKCJjYWxsZWUiLGUpfX0sVj0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLHE9WyJjb25zdHJ1Y3RvciIsInZhbHVlT2YiLCJpc1Byb3RvdHlwZU9mIiwidG9TdHJpbmciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5IiwidG9Mb2NhbGVTdHJpbmciXSxLPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksej1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KXtpZihlW3JdPT09dClyZXR1cm4hMDtyKz0xfXJldHVybiExfSxHPWkoImZ1bmN0aW9uIiE9PXR5cGVvZiBPYmplY3Qua2V5c3x8Sz9mdW5jdGlvbihlKXtpZihPYmplY3QoZSkhPT1lKXJldHVybltdO3ZhciB0LHIsbj1bXSxpPUsmJkYoZSk7Zm9yKHQgaW4gZSkhaih0LGUpfHxpJiYibGVuZ3RoIj09PXR8fChuW24ubGVuZ3RoXT10KTtpZihWKWZvcihyPXEubGVuZ3RoLTE7cj49MDspaih0PXFbcl0sZSkmJiF6KG4sdCkmJihuW24ubGVuZ3RoXT10KSxyLT0xO3JldHVybiBufTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KGUpIT09ZT9bXTpPYmplY3Qua2V5cyhlKX0pLEg9YyhfKFsiZmFudGFzeS1sYW5kL21hcCIsIm1hcCJdLEQsZnVuY3Rpb24oZSx0KXtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgRnVuY3Rpb25dIjpyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KTtjYXNlIltvYmplY3QgT2JqZWN0XSI6cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0pLHJ9LHt9LEcodCkpO2RlZmF1bHQ6cmV0dXJuIEMoZSx0KX19KSksVz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQsbj0wO248ZS5sZW5ndGg7KXtpZihudWxsPT1yKXJldHVybjtyPXJbZVtuXV0sbis9MX1yZXR1cm4gcn0pLFk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBXKFtlXSx0KX0pLFg9YyhmdW5jdGlvbihlLHQpe3JldHVybiBIKFkoZSksdCl9KSxRPWcoTSksJD1pKGZ1bmN0aW9uKGUpe3JldHVybiBkKFEoQSwwLFgoImxlbmd0aCIsZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj1lLmxlbmd0aDt0PHI7KXtpZighZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITE7dCs9MX1yZXR1cm4hMH0pfSksWj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnR9KSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmFueT0hMX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYW55fHwoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITEpKSx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KSYmKHRoaXMuYW55PSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITApKSksZX0sZX0oKSxlZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBKKGUsdCl9KSx0ZT1jKF8oWyJhbnkiXSxlZSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KXtpZihlKHRbcl0pKXJldHVybiEwO3IrPTF9cmV0dXJuITF9KSkscmU9aShmdW5jdGlvbihlKXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLGUpKSxmdW5jdGlvbigpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOyl7aWYoZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITA7dCs9MX1yZXR1cm4hMX0pfSksbmU9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdFsiZmFudGFzeS1sYW5kL2FwIl0/dFsiZmFudGFzeS1sYW5kL2FwIl0oZSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmFwP2UuYXAodCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlP2Z1bmN0aW9uKHIpe3JldHVybiBlKHIpKHQocikpfTpNKGZ1bmN0aW9uKGUscil7cmV0dXJuIGwoZSxIKHIsdCkpfSxbXSxlKX0pO2Z1bmN0aW9uIGllKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aC0oZS0xKSxpPW5ldyBBcnJheShuPj0wP246MCk7cjxuOylpW3JdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQscixyK2UpLHIrPTE7cmV0dXJuIGl9dmFyIG9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLnBvcz0wLHRoaXMuZnVsbD0hMSx0aGlzLmFjYz1uZXcgQXJyYXkoZSl9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFjYz1udWxsLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdG9yZSh0KSx0aGlzLmZ1bGw/dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZ2V0Q29weSgpKTplfSxlLnByb3RvdHlwZS5zdG9yZT1mdW5jdGlvbihlKXt0aGlzLmFjY1t0aGlzLnBvc109ZSx0aGlzLnBvcys9MSx0aGlzLnBvcz09PXRoaXMuYWNjLmxlbmd0aCYmKHRoaXMucG9zPTAsdGhpcy5mdWxsPSEwKX0sZS5wcm90b3R5cGUuZ2V0Q29weT1mdW5jdGlvbigpe3JldHVybiBsKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYWNjLHRoaXMucG9zKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFjYywwLHRoaXMucG9zKSl9LGV9KCksYWU9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG9lKGUsdCl9KSxpZSkpLHNlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh0LFtlXSl9KSx1ZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXBwbHkodGhpcyx0KX0pLGNlPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPVtdLGk9MDtpPHI7KW5baV09ZVt0W2ldXSxpKz0xO3JldHVybiBufSksZmU9aShmdW5jdGlvbiBlKHQpe3JldHVybiB0PUgoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplKHQpfSx0KSxkKFEoQSwwLFgoImxlbmd0aCIsY2UodCkpKSxmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gSChmdW5jdGlvbih0KXtyZXR1cm4gdWUodCxlKX0sdCl9KX0pLGxlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0pLGhlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pLHBlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9O2Zvcih2YXIgaSBpbiByKW5baV09cltpXTtyZXR1cm4gbltlXT10LG59KSxkZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4gZTw8MD09PWV9LHllPWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9KSxnZT1nKGZ1bmN0aW9uIGUodCxyLG4pe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gcjt2YXIgaT10WzBdO2lmKHQubGVuZ3RoPjEpe3ZhciBvPSF5ZShuKSYmaihpLG4pP25baV06ZGUodFsxXSk/W106e307cj1lKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMSkscixvKX1pZihkZShpKSYmbShuKSl7dmFyIGE9W10uY29uY2F0KG4pO3JldHVybiBhW2ldPXIsYX1yZXR1cm4gcGUoaSxyLG4pfSksdmU9YyhmdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbCh0aGlzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhKX07Y2FzZSA3OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1KXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyx1KX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1LGMsZil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjLGYpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gbkFyeSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpfX0pLG1lPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHZlKDIsZSl9KTtmdW5jdGlvbiBiZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBfZT1jKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZChlLHQpO3JldHVybiBkKGUsZnVuY3Rpb24oKXtyZXR1cm4gTShuZSxIKHIsYXJndW1lbnRzWzBdKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSl9KSxTZT1pKGZ1bmN0aW9uKGUpe3JldHVybiBfZShlLmxlbmd0aCxlKX0pLEVlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cykmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShaKShlLHQpfSksd2U9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxlKX0pLFRlPXdlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pO2Z1bmN0aW9uIEFlKGUpe3JldHVybiBmdW5jdGlvbiB0KHIpe2Zvcih2YXIgbixpLG8sYT1bXSxzPTAsdT1yLmxlbmd0aDtzPHU7KXtpZihJKHJbc10pKWZvcihvPTAsaT0obj1lP3QocltzXSk6cltzXSkubGVuZ3RoO288aTspYVthLmxlbmd0aF09bltvXSxvKz0xO2Vsc2UgYVthLmxlbmd0aF09cltzXTtzKz0xfXJldHVybiBhfX12YXIgQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbih0KXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKHQscil7dmFyIG49ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LHIpO3JldHVybiBuWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP3siQEB0cmFuc2R1Y2VyL3ZhbHVlIjpuLCJAQHRyYW5zZHVjZXIvcmVkdWNlZCI6ITB9Om59fX0oZSk7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbihlKXtyZXR1cm4gdFsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUscil7cmV0dXJuIEkocik/TSh0LGUscik6TSh0LGUsW3JdKX19fSx4ZT1jKF8oWyJmYW50YXN5LWxhbmQvY2hhaW4iLCJjaGFpbiJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gSChlLENlKHQpKX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0P2Z1bmN0aW9uKHIpe3JldHVybiBlKHQocikpKHIpfTpBZSghMSkoSChlLHQpKX0pKSxJZT1nKGZ1bmN0aW9uKGUsdCxyKXtpZihlPnQpdGhyb3cgbmV3IEVycm9yKCJtaW4gbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG1heCBpbiBjbGFtcChtaW4sIG1heCwgdmFsdWUpIik7cmV0dXJuIHI8ZT9lOnI+dD90OnJ9KTtmdW5jdGlvbiBrZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChlLnNvdXJjZSwoZS5nbG9iYWw/ImciOiIiKSsoZS5pZ25vcmVDYXNlPyJpIjoiIikrKGUubXVsdGlsaW5lPyJtIjoiIikrKGUuc3RpY2t5PyJ5IjoiIikrKGUudW5pY29kZT8idSI6IiIpKX12YXIgT2U9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWU/Ik51bGwiOnZvaWQgMD09PWU/IlVuZGVmaW5lZCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfSk7ZnVuY3Rpb24gTmUoZSx0LHIsbil7dmFyIGk9ZnVuY3Rpb24oaSl7Zm9yKHZhciBvPXQubGVuZ3RoLGE9MDthPG87KXtpZihlPT09dFthXSlyZXR1cm4gclthXTthKz0xfWZvcih2YXIgcyBpbiB0W2ErMV09ZSxyW2ErMV09aSxlKWlbc109bj9OZShlW3NdLHQsciwhMCk6ZVtzXTtyZXR1cm4gaX07c3dpdGNoKE9lKGUpKXtjYXNlIk9iamVjdCI6cmV0dXJuIGkoe30pO2Nhc2UiQXJyYXkiOnJldHVybiBpKFtdKTtjYXNlIkRhdGUiOnJldHVybiBuZXcgRGF0ZShlLnZhbHVlT2YoKSk7Y2FzZSJSZWdFeHAiOnJldHVybiBrZShlKTtkZWZhdWx0OnJldHVybiBlfX12YXIgUGU9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmNsb25lP2UuY2xvbmUoKTpOZShlLFtdLFtdLCEwKX0pLFJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyKT8tMTplKHIsdCk/MTowfX0pLEJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIWV9KSxNZT1TZShCZSk7ZnVuY3Rpb24gTGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHQoKTt2YXIgbj1hcmd1bWVudHNbci0xXTtyZXR1cm4gbShuKXx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBuW2VdP3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOm5bZV0uYXBwbHkobixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCxyLTEpKX19dmFyIGplPWcoRGUoInNsaWNlIixmdW5jdGlvbihlLHQscil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsZSx0KX0pKSxVZT1pKERlKCJ0YWlsIixqZSgxLDEvMCkpKTtmdW5jdGlvbiBGZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gaChhcmd1bWVudHNbMF0ubGVuZ3RoLFEoTGUsYXJndW1lbnRzWzBdLFVlKGFyZ3VtZW50cykpKX12YXIgVmU9aShmdW5jdGlvbihlKXtyZXR1cm4geChlKT9lLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwKS5yZXZlcnNlKCl9KTtmdW5jdGlvbiBxZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gRmUuYXBwbHkodGhpcyxWZShhcmd1bWVudHMpKX1mdW5jdGlvbiBLZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PWUucG9wKCk7cmV0dXJuIHFlKHFlLmFwcGx5KHRoaXMsSCh4ZSxlKSksdCl9ZnVuY3Rpb24gemUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiBlLmFwcGx5KHIsYXJndW1lbnRzKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwocixlKX0pfX1mdW5jdGlvbiBHZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZVAgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIGgoYXJndW1lbnRzWzBdLmxlbmd0aCxRKHplLGFyZ3VtZW50c1swXSxVZShhcmd1bWVudHMpKSl9ZnVuY3Rpb24gSGUoKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImNvbXBvc2VQIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBHZS5hcHBseSh0aGlzLFZlKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFdlKGUpe2Zvcih2YXIgdCxyPVtdOyEodD1lLm5leHQoKSkuZG9uZTspci5wdXNoKHQudmFsdWUpO3JldHVybiByfWZ1bmN0aW9uIFllKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKGUodCxyW25dKSlyZXR1cm4hMDtuKz0xfXJldHVybiExfXZhciBYZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fSk7ZnVuY3Rpb24gUWUoZSx0LHIsbil7dmFyIGk9V2UoZSk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiAkZShlLHQsci5zbGljZSgpLG4uc2xpY2UoKSl9cmV0dXJuIVllKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIVllKG8sdCxlKX0sV2UodCksaSl9ZnVuY3Rpb24gJGUoZSx0LHIsbil7aWYoWGUoZSx0KSlyZXR1cm4hMDt2YXIgaT1PZShlKTtpZihpIT09T2UodCkpcmV0dXJuITE7aWYobnVsbD09ZXx8bnVsbD09dClyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0pcmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBlWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSh0KSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJnRbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShlKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZXF1YWxzfHwiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZS5lcXVhbHMmJmUuZXF1YWxzKHQpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzJiZ0LmVxdWFscyhlKTtzd2l0Y2goaSl7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjppZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3ImJiJQcm9taXNlIj09PWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhlKS5tYXRjaCgvXmZ1bmN0aW9uIChcdyopLyk7cmV0dXJuIG51bGw9PXQ/IiI6dFsxXX0oZS5jb25zdHJ1Y3RvcikpcmV0dXJuIGU9PT10O2JyZWFrO2Nhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjppZih0eXBlb2YgZSE9PXR5cGVvZiB0fHwhWGUoZS52YWx1ZU9mKCksdC52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRGF0ZSI6aWYoIVhlKGUudmFsdWVPZigpLHQudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkVycm9yIjpyZXR1cm4gZS5uYW1lPT09dC5uYW1lJiZlLm1lc3NhZ2U9PT10Lm1lc3NhZ2U7Y2FzZSJSZWdFeHAiOmlmKGUuc291cmNlIT09dC5zb3VyY2V8fGUuZ2xvYmFsIT09dC5nbG9iYWx8fGUuaWdub3JlQ2FzZSE9PXQuaWdub3JlQ2FzZXx8ZS5tdWx0aWxpbmUhPT10Lm11bHRpbGluZXx8ZS5zdGlja3khPT10LnN0aWNreXx8ZS51bmljb2RlIT09dC51bmljb2RlKXJldHVybiExfWZvcih2YXIgbz1yLmxlbmd0aC0xO28+PTA7KXtpZihyW29dPT09ZSlyZXR1cm4gbltvXT09PXQ7by09MX1zd2l0Y2goaSl7Y2FzZSJNYXAiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUuZW50cmllcygpLHQuZW50cmllcygpLHIuY29uY2F0KFtlXSksbi5jb25jYXQoW3RdKSk7Y2FzZSJTZXQiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUudmFsdWVzKCksdC52YWx1ZXMoKSxyLmNvbmNhdChbZV0pLG4uY29uY2F0KFt0XSkpO2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmNhc2UiRGF0ZSI6Y2FzZSJFcnJvciI6Y2FzZSJSZWdFeHAiOmNhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQXJyYXlCdWZmZXIiOmJyZWFrO2RlZmF1bHQ6cmV0dXJuITF9dmFyIGE9RyhlKTtpZihhLmxlbmd0aCE9PUcodCkubGVuZ3RoKXJldHVybiExO3ZhciBzPXIuY29uY2F0KFtlXSksdT1uLmNvbmNhdChbdF0pO2ZvcihvPWEubGVuZ3RoLTE7bz49MDspe3ZhciBjPWFbb107aWYoIWooYyx0KXx8ISRlKHRbY10sZVtjXSxzLHUpKXJldHVybiExO28tPTF9cmV0dXJuITB9dmFyIFplPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gJGUoZSx0LFtdLFtdKX0pO2Z1bmN0aW9uIEplKGUsdCxyKXt2YXIgbixpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS5pbmRleE9mKXN3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmlmKDA9PT10KXtmb3Iobj0xL3Q7cjxlLmxlbmd0aDspe2lmKDA9PT0oaT1lW3JdKSYmMS9pPT09bilyZXR1cm4gcjtyKz0xfXJldHVybi0xfWlmKHQhPT10KXtmb3IoO3I8ZS5sZW5ndGg7KXtpZigibnVtYmVyIj09PXR5cGVvZihpPWVbcl0pJiZpIT09aSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfXJldHVybiBlLmluZGV4T2YodCxyKTtjYXNlInN0cmluZyI6Y2FzZSJib29sZWFuIjpjYXNlImZ1bmN0aW9uIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuIGUuaW5kZXhPZih0LHIpO2Nhc2Uib2JqZWN0IjppZihudWxsPT09dClyZXR1cm4gZS5pbmRleE9mKHQscil9Zm9yKDtyPGUubGVuZ3RoOyl7aWYoWmUoZVtyXSx0KSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfWZ1bmN0aW9uIGV0KGUsdCl7cmV0dXJuIEplKHQsZSwwKT49MH1mdW5jdGlvbiB0dChlKXtyZXR1cm4nIicrZS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvW1xiXS9nLCJcXGIiKS5yZXBsYWNlKC9cZi9nLCJcXGYiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKS5yZXBsYWNlKC9cci9nLCJcXHIiKS5yZXBsYWNlKC9cdC9nLCJcXHQiKS5yZXBsYWNlKC9cdi9nLCJcXHYiKS5yZXBsYWNlKC9cMC9nLCJcXDAiKS5yZXBsYWNlKC8iL2csJ1xcIicpKyciJ312YXIgcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU8MTA/IjAiOiIiKStlfSxudD0iZnVuY3Rpb24iPT09dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3J0KGUuZ2V0VVRDTW9udGgoKSsxKSsiLSIrcnQoZS5nZXRVVENEYXRlKCkpKyJUIitydChlLmdldFVUQ0hvdXJzKCkpKyI6IitydChlLmdldFVUQ01pbnV0ZXMoKSkrIjoiK3J0KGUuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkvMWUzKS50b0ZpeGVkKDMpLnNsaWNlKDIsNSkrIloifTtmdW5jdGlvbiBpdChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG90KGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aCxpPVtdO3I8bjspZSh0W3JdKSYmKGlbaS5sZW5ndGhdPXRbcl0pLHIrPTE7cmV0dXJuIGl9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXQ="
3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P: 2.7c767379.chunk.js_66: "base64:Z2UpKDAsaC0xKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4tMS8wfSkpLmNvbmNhdChbdl0pO3JldHVybiByPmE/KDAsaS5yZXZlcnNlKShtKTptfWlmKGc9PT12KXJldHVybiBsKGcsaCxwKTt2YXIgYj1mdW5jdGlvbiBlKHQscixpLG8pe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowO2lmKCFOdW1iZXIuaXNGaW5pdGUoKHItdCkvKGktMSkpKXJldHVybntzdGVwOm5ldyBuLmRlZmF1bHQoMCksdGlja01pbjpuZXcgbi5kZWZhdWx0KDApLHRpY2tNYXg6bmV3IG4uZGVmYXVsdCgwKX07dmFyIHMsdT1mKG5ldyBuLmRlZmF1bHQocikuc3ViKHQpLmRpdihpLTEpLG8sYSk7cz10PD0wJiZyPj0wP25ldyBuLmRlZmF1bHQoMCk6KHM9bmV3IG4uZGVmYXVsdCh0KS5hZGQocikuZGl2KDIpKS5zdWIobmV3IG4uZGVmYXVsdChzKS5tb2QodSkpO3ZhciBjPU1hdGguY2VpbChzLnN1Yih0KS5kaXYodSkudG9OdW1iZXIoKSksbD1NYXRoLmNlaWwobmV3IG4uZGVmYXVsdChyKS5zdWIocykuZGl2KHUpLnRvTnVtYmVyKCkpLGg9YytsKzE7cmV0dXJuIGg+aT9lKHQscixpLG8sYSsxKTooaDxpJiYobD1yPjA/bCsoaS1oKTpsLGM9cj4wP2M6YysoaS1oKSkse3N0ZXA6dSx0aWNrTWluOnMuc3ViKG5ldyBuLmRlZmF1bHQoYykubXVsKHUpKSx0aWNrTWF4OnMuYWRkKG5ldyBuLmRlZmF1bHQobCkubXVsKHUpKX0pfShnLHYsZCxwKSxfPWIuc3RlcCxTPWIudGlja01pbixFPWIudGlja01heCx3PW8uZGVmYXVsdC5yYW5nZVN0ZXAoUyxFLmFkZChuZXcgbi5kZWZhdWx0KC4xKS5tdWwoXykpLF8pO3JldHVybiByPmE/KDAsaS5yZXZlcnNlKSh3KTp3fSk7dC5nZXROaWNlVGlja1ZhbHVlcz1oO3ZhciBwPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxvPXRbMV0sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixzPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0saD1NYXRoLm1heChhLDIpLHA9dShjKFtyLG9dKSwyKSxkPXBbMF0seT1wWzFdO2lmKGQ9PT0tMS8wfHx5PT09MS8wKXJldHVybltyLG9dO2lmKGQ9PT15KXJldHVybiBsKGQsYSxzKTt2YXIgZz1mKG5ldyBuLmRlZmF1bHQoeSkuc3ViKGQpLmRpdihoLTEpLHMsMCksdj0oMCxpLmNvbXBvc2UpKCgwLGkubWFwKShmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG4uZGVmYXVsdChkKS5hZGQobmV3IG4uZGVmYXVsdChlKS5tdWwoZykpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLGgpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZT49ZCYmZTw9eX0pO3JldHVybiByPm8/KDAsaS5yZXZlcnNlKSh2KTp2fSk7dC5nZXRUaWNrVmFsdWVzPXA7dmFyIGQ9KDAsaS5tZW1vaXplKShmdW5jdGlvbihlLHQpe3ZhciByPXUoZSwyKSxhPXJbMF0sbD1yWzFdLGg9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxwPXUoYyhbYSxsXSksMiksZD1wWzBdLHk9cFsxXTtpZihkPT09LTEvMHx8eT09PTEvMClyZXR1cm5bYSxsXTtpZihkPT09eSlyZXR1cm5bZF07dmFyIGc9TWF0aC5tYXgodCwyKSx2PWYobmV3IG4uZGVmYXVsdCh5KS5zdWIoZCkuZGl2KGctMSksaCwwKSxtPXMoby5kZWZhdWx0LnJhbmdlU3RlcChuZXcgbi5kZWZhdWx0KGQpLG5ldyBuLmRlZmF1bHQoeSkuc3ViKG5ldyBuLmRlZmF1bHQoLjk5KS5tdWwodikpLHYpKS5jb25jYXQoW3ldKTtyZXR1cm4gYT5sPygwLGkucmV2ZXJzZSkobSk6bX0pO3QuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPWR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG4saT0obj1yKDQ5MikpJiZuLl9fZXNNb2R1bGU/bjp7ZGVmYXVsdDpufSxvPXIoNDkzKTt2YXIgYT17cmFuZ2VTdGVwOmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49bmV3IGkuZGVmYXVsdChlKSxvPVtdO24ubHQodCk7KW8ucHVzaChuLnRvTnVtYmVyKCkpLG49bi5hZGQocik7cmV0dXJuIG99LGdldERpZ2l0Q291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzE6TWF0aC5mbG9vcihuZXcgaS5kZWZhdWx0KGUpLmFicygpLmxvZygxMCkudG9OdW1iZXIoKSkrMX0saW50ZXJwb2xhdGVOdW1iZXI6KDAsby5jdXJyeSkoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPStlO3JldHVybiBuK3IqKCt0LW4pfSksdW5pbnRlcnBvbGF0ZU51bWJlcjooMCxvLmN1cnJ5KShmdW5jdGlvbihlLHQscil7dmFyIG49dC0rZTtyZXR1cm4oci1lKS8obj1ufHwxLzApfSksdW5pbnRlcnBvbGF0ZVRydW5jYXRpb246KDAsby5jdXJyeSkoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXQtK2U7cmV0dXJuIG49bnx8MS8wLE1hdGgubWF4KDAsTWF0aC5taW4oMSwoci1lKS9uKSl9KX07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI5MiksaT1yKDQ5NCksbz1yKDQ5NiksYT1yKDI5Mykscz1yKDEwODQpLHU9cigyOTQpLGM9MjAwO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGY9LTEsbD1pLGg9ZS5sZW5ndGgscD0hMCxkPVtdLHk9ZDtpZihyKXA9ITEsbD1vO2Vsc2UgaWYoaD49Yyl7dmFyIGc9dD9udWxsOnMoZSk7aWYoZylyZXR1cm4gdShnKTtwPSExLGw9YSx5PW5ldyBufWVsc2UgeT10P1tdOmQ7ZTpmb3IoOysrZjxoOyl7dmFyIHY9ZVtmXSxtPXQ/dCh2KTp2O2lmKHY9cnx8MCE9PXY/djowLHAmJm09PT1tKXtmb3IodmFyIGI9eS5sZW5ndGg7Yi0tOylpZih5W2JdPT09bSljb250aW51ZSBlO3QmJnkucHVzaChtKSxkLnB1c2godil9ZWxzZSBsKHksbSxyKXx8KHkhPT1kJiZ5LnB1c2gobSksZC5wdXNoKHYpKX1yZXR1cm4gZH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5NSksaT1yKDEwODIpLG89cigxMDgzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0PT09dD9vKGUsdCxyKTpuKGUsaSxyKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlIT09ZX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49ci0xLGk9ZS5sZW5ndGg7KytuPGk7KWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDgxKSxpPXIoMTA4NSksbz1yKDI5NCksYT1uJiYxL28obmV3IG4oWywtMF0pKVsxXT09MS8wP2Z1bmN0aW9uKGUpe3JldHVybiBuZXcgbihlKX06aTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiBuKGUsZnVuY3Rpb24oZSxuLGkpe3JldHVybiEocj10KGUsbixpKSl9KSwhIXJ9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDsrK3I8bjspaWYoIXQoZVtyXSxyLGUpKXJldHVybiExO3JldHVybiEwfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj0hMDtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gcj0hIXQoZSxuLGkpfSkscn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXsiX19wcm90b19fIj09dCYmbj9uKGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6cix3cml0YWJsZTohMH0pOmVbdF09cn19LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQscil7ZSBpbnN0YW5jZW9mIFJlZ0V4cCYmKGU9bihlLHIpKSx0IGluc3RhbmNlb2YgUmVnRXhwJiYodD1uKHQscikpO3ZhciBvPWkoZSx0LHIpO3JldHVybiBvJiZ7c3RhcnQ6b1swXSxlbmQ6b1sxXSxwcmU6ci5zbGljZSgwLG9bMF0pLGJvZHk6ci5zbGljZShvWzBdK2UubGVuZ3RoLG9bMV0pLHBvc3Q6ci5zbGljZShvWzFdK3QubGVuZ3RoKX19ZnVuY3Rpb24gbihlLHQpe3ZhciByPXQubWF0Y2goZSk7cmV0dXJuIHI/clswXTpudWxsfWZ1bmN0aW9uIGkoZSx0LHIpe3ZhciBuLGksbyxhLHMsdT1yLmluZGV4T2YoZSksYz1yLmluZGV4T2YodCx1KzEpLGY9dTtpZih1Pj0wJiZjPjApe2ZvcihuPVtdLG89ci5sZW5ndGg7Zj49MCYmIXM7KWY9PXU/KG4ucHVzaChmKSx1PXIuaW5kZXhPZihlLGYrMSkpOjE9PW4ubGVuZ3RoP3M9W24ucG9wKCksY106KChpPW4ucG9wKCkpPG8mJihvPWksYT1jKSxjPXIuaW5kZXhPZih0LGYrMSkpLGY9dTxjJiZ1Pj0wP3U6YztuLmxlbmd0aCYmKHM9W28sYV0pfXJldHVybiBzfWUuZXhwb3J0cz1yLHIucmFuZ2U9aX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5Mik7ZnVuY3Rpb24gaShlLHQscil7dmFyIG89ZTtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxpPSJzdHJpbmciPT09dHlwZW9mIHQ/bmV3IFJlZ0V4cCgiXFxiKCIrdCsiKVxcKCIpOnQ7ZG97dmFyIG89aS5leGVjKGUpO2lmKCFvKXJldHVybiByO2lmKHZvaWQgMD09PW9bMV0pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHRoZSBmaXJzdCBjb3VwbGUgb2YgcGFyZW50aGVzaXMgdG8gZ2V0IHRoZSBmdW5jdGlvbiBpZGVudGlmaWVyIGluICIrdCk7dmFyIGE9b1sxXSxzPW8uaW5kZXgsdT1uKCIoIiwiKSIsZS5zdWJzdHJpbmcocykpO2lmKCF1fHx1LnN0YXJ0IT09b1swXS5sZW5ndGgtMSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoYSsiKCk6IG1pc3NpbmcgY2xvc2luZyAnKScgaW4gdGhlIHZhbHVlICciK2UrIiciKTtyLnB1c2goe21hdGNoZXM6dSxmdW5jdGlvbklkZW50aWZpZXI6YX0pLGU9dS5wb3N0fXdoaWxlKGkudGVzdChlKSk7cmV0dXJuIHJ9KGUsdCkucmVkdWNlKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUucmVwbGFjZShuLmZ1bmN0aW9uSWRlbnRpZmllcisiKCIrbi5tYXRjaGVzLmJvZHkrIikiLGZ1bmN0aW9uKGUsdCxyLG4sbyl7cmV0dXJuIHIoaShlLG8sciksdCxuKX0obi5tYXRjaGVzLmJvZHksbi5mdW5jdGlvbklkZW50aWZpZXIscixvLHQpKX0sZSl9ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQscil7ZSBpbnN0YW5jZW9mIFJlZ0V4cCYmKGU9bihlLHIpKSx0IGluc3RhbmNlb2YgUmVnRXhwJiYodD1uKHQscikpO3ZhciBvPWkoZSx0LHIpO3JldHVybiBvJiZ7c3RhcnQ6b1swXSxlbmQ6b1sxXSxwcmU6ci5zbGljZSgwLG9bMF0pLGJvZHk6ci5zbGljZShvWzBdK2UubGVuZ3RoLG9bMV0pLHBvc3Q6ci5zbGljZShvWzFdK3QubGVuZ3RoKX19ZnVuY3Rpb24gbihlLHQpe3ZhciByPXQubWF0Y2goZSk7cmV0dXJuIHI/clswXTpudWxsfWZ1bmN0aW9uIGkoZSx0LHIpe3ZhciBuLGksbyxhLHMsdT1yLmluZGV4T2YoZSksYz1yLmluZGV4T2YodCx1KzEpLGY9dTtpZih1Pj0wJiZjPjApe2ZvcihuPVtdLG89ci5sZW5ndGg7Zj49MCYmIXM7KWY9PXU/KG4ucHVzaChmKSx1PXIuaW5kZXhPZihlLGYrMSkpOjE9PW4ubGVuZ3RoP3M9W24ucG9wKCksY106KChpPW4ucG9wKCkpPG8mJihvPWksYT1jKSxjPXIuaW5kZXhPZih0LGYrMSkpLGY9dTxjJiZ1Pj0wP3U6YztuLmxlbmd0aCYmKHM9W28sYV0pfXJldHVybiBzfWUuZXhwb3J0cz1yLHIucmFuZ2U9aX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5NCk7bi5wcm90b3R5cGUuZm9ybXVsYUV2YWw9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Zm9yKHZhciBlLHQscixuPVtdLGk9dGhpcy52YWx1ZSxvPTA7bzxpLmxlbmd0aDtvKyspMT09PWlbb10udHlwZXx8Mz09PWlbb10udHlwZT9uLnB1c2goe3ZhbHVlOjM9PT1pW29dLnR5cGU/aVtvXS5zaG93Omlbb10udmFsdWUsdHlwZToxfSk6MTM9PT1pW29dLnR5cGU/bi5wdXNoKHt2YWx1ZTppW29dLnNob3csdHlwZToxfSk6MD09PWlbb10udHlwZT9uW24ubGVuZ3RoLTFdPXt2YWx1ZTppW29dLnNob3crKCItIiE9aVtvXS5zaG93PyIoIjoiIikrbltuLmxlbmd0aC0xXS52YWx1ZSsoIi0iIT1pW29dLnNob3c/IikiOiIiKSx0eXBlOjB9Ojc9PT1pW29dLnR5cGU/bltuLmxlbmd0aC0xXT17dmFsdWU6KDEhPW5bbi5sZW5ndGgtMV0udHlwZT8iKCI6IiIpK25bbi5sZW5ndGgtMV0udmFsdWUrKDEhPW5bbi5sZW5ndGgtMV0udHlwZT8iKSI6IiIpK2lbb10uc2hvdyx0eXBlOjd9OjEwPT09aVtvXS50eXBlPyhlPW4ucG9wKCksdD1uLnBvcCgpLCJQIj09PWlbb10uc2hvd3x8IkMiPT09aVtvXS5zaG93P24ucHVzaCh7dmFsdWU6IjxzdXA+Iit0LnZhbHVlKyI8L3N1cD4iK2lbb10uc2hvdysiPHN1Yj4iK2UudmFsdWUrIjwvc3ViPiIsdHlwZToxMH0pOm4ucHVzaCh7dmFsdWU6KDEhPXQudHlwZT8iKCI6IiIpK3QudmFsdWUrKDEhPXQudHlwZT8iKSI6IiIpKyI8c3VwPiIrZS52YWx1ZSsiPC9zdXA+Iix0eXBlOjF9KSk6Mj09PWlbb10udHlwZXx8OT09PWlbb10udHlwZT8oZT1uLnBvcCgpLHQ9bi5wb3AoKSxuLnB1c2goe3ZhbHVlOigxIT10LnR5cGU/IigiOiIiKSt0LnZhbHVlKygxIT10LnR5cGU/IikiOiIiKStpW29dLnNob3crKDEhPWUudHlwZT8iKCI6IiIpK2UudmFsdWUrKDEhPWUudHlwZT8iKSI6IiIpLHR5cGU6aVtvXS50eXBlfSkpOjEyPT09aVtvXS50eXBlJiYoZT1uLnBvcCgpLHQ9bi5wb3AoKSxyPW4ucG9wKCksbi5wdXNoKHt2YWx1ZTppW29dLnNob3crIigiK3IudmFsdWUrIiwiK3QudmFsdWUrIiwiK2UudmFsdWUrIikiLHR5cGU6MTJ9KSk7cmV0dXJuIG5bMF0udmFsdWV9LGUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDk1KTtuLnByb3RvdHlwZS5wb3N0Zml4RXZhbD1mdW5jdGlvbihlKXsidXNlIHN0cmljdCI7KGU9ZXx8e30pLlBJPU1hdGguUEksZS5FPU1hdGguRTtmb3IodmFyIHQscixpLG89W10sYT10aGlzLnZhbHVlLHM9InVuZGVmaW5lZCIhPT10eXBlb2YgZS5uLHU9MDt1PGEubGVuZ3RoO3UrKykxPT09YVt1XS50eXBlP28ucHVzaCh7dmFsdWU6YVt1XS52YWx1ZSx0eXBlOjF9KTozPT09YVt1XS50eXBlP28ucHVzaCh7dmFsdWU6ZVthW3VdLnZhbHVlXSx0eXBlOjF9KTowPT09YVt1XS50eXBlPyJ1bmRlZmluZWQiPT09dHlwZW9mIG9bby5sZW5ndGgtMV0udHlwZT9vW28ubGVuZ3RoLTFdLnZhbHVlLnB1c2goYVt1XSk6b1tvLmxlbmd0aC0xXS52YWx1ZT1hW3VdLnZhbHVlKG9bby5sZW5ndGgtMV0udmFsdWUpOjc9PT1hW3VdLnR5cGU/InVuZGVmaW5lZCI9PT10eXBlb2Ygb1tvLmxlbmd0aC0xXS50eXBlP29bby5sZW5ndGgtMV0udmFsdWUucHVzaChhW3VdKTpvW28ubGVuZ3RoLTFdLnZhbHVlPWFbdV0udmFsdWUob1tvLmxlbmd0aC0xXS52YWx1ZSk6OD09PWFbdV0udHlwZT8odD1vLnBvcCgpLHI9by5wb3AoKSxvLnB1c2goe3R5cGU6MSx2YWx1ZTphW3VdLnZhbHVlKHIudmFsdWUsdC52YWx1ZSl9KSk6MTA9PT1hW3VdLnR5cGU/KHQ9by5wb3AoKSwidW5kZWZpbmVkIj09PXR5cGVvZihyPW8ucG9wKCkpLnR5cGU/KHIudmFsdWU9ci5jb25jYXQodCksci52YWx1ZS5wdXNoKGFbdV0pLG8ucHVzaChyKSk6InVuZGVmaW5lZCI9PT10eXBlb2YgdC50eXBlPyh0LnVuc2hpZnQociksdC5wdXNoKGFbdV0pLG8ucHVzaCh0KSk6by5wdXNoKHt0eXBlOjEsdmFsdWU6YVt1XS52YWx1ZShyLnZhbHVlLHQudmFsdWUpfSkpOjI9PT1hW3VdLnR5cGV8fDk9PT1hW3VdLnR5cGU/KHQ9by5wb3AoKSwidW5kZWZpbmVkIj09PXR5cGVvZihyPW8ucG9wKCkpLnR5cGU/KGNvbnNvbGUubG9nKHIpLChyPXIuY29uY2F0KHQpKS5wdXNoKGFbdV0pLG8ucHVzaChyKSk6InVuZGVmaW5lZCI9PT10eXBlb2YgdC50eXBlPyh0LnVuc2hpZnQociksdC5wdXNoKGFbdV0pLG8ucHVzaCh0KSk6by5wdXNoKHt0eXBlOjEsdmFsdWU6YVt1XS52YWx1ZShyLnZhbHVlLHQudmFsdWUpfSkpOjEyPT09YVt1XS50eXBlPygidW5kZWZpbmVkIiE9PXR5cGVvZih0PW8ucG9wKCkpLnR5cGUmJih0PVt0XSkscj1vLnBvcCgpLGk9by5wb3AoKSxvLnB1c2goe3R5cGU6MSx2YWx1ZTphW3VdLnZhbHVlKGkudmFsdWUsci52YWx1ZSxuZXcgbih0KSl9KSk6MTM9PT1hW3VdLnR5cGUmJihzP28ucHVzaCh7dmFsdWU6ZVthW3VdLnZhbHVlXSx0eXBlOjN9KTpvLnB1c2goW2FbdV1dKSk7aWYoby5sZW5ndGg+MSl0aHJvdyBuZXcgbi5leGNlcHRpb24oIlVuY2F1Z2h0IFN5bnRheCBlcnJvciIpO3JldHVybiBvWzBdLnZhbHVlPjFlMTU/IkluZmluaXR5IjpwYXJzZUZsb2F0KG9bMF0udmFsdWUudG9GaXhlZCgxNSkpfSxuLmV2YWw9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIHQ/dGhpcy5sZXgoZSkudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwoKToidW5kZWZpbmVkIj09PXR5cGVvZiByPyJ1bmRlZmluZWQiIT09dHlwZW9mIHQubGVuZ3RoP3RoaXMubGV4KGUsdCkudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwoKTp0aGlzLmxleChlKS50b1Bvc3RmaXgoKS5wb3N0Zml4RXZhbCh0KTp0aGlzLmxleChlLHQpLnRvUG9zdGZpeCgpLnBvc3RmaXhFdmFsKHIpfSxlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5Nik7bi5wcm90b3R5cGUudG9Qb3N0Zml4PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Zvcih2YXIgZSx0LHIsaSxvLGE9W10scz1be3ZhbHVlOiIoIix0eXBlOjQscHJlOjB9XSx1PXRoaXMudmFsdWUsYz0xO2M8dS5sZW5ndGg7YysrKWlmKDE9PT11W2NdLnR5cGV8fDM9PT11W2NdLnR5cGV8fDEzPT09dVtjXS50eXBlKTE9PT11W2NdLnR5cGUmJih1W2NdLnZhbHVlPU51bWJlcih1W2NdLnZhbHVlKSksYS5wdXNoKHVbY10pO2Vsc2UgaWYoND09PXVbY10udHlwZSlzLnB1c2godVtjXSk7ZWxzZSBpZig1PT09dVtjXS50eXBlKWZvcig7NCE9PSh0PXMucG9wKCkpLnR5cGU7KWEucHVzaCh0KTtlbHNlIGlmKDExPT09dVtjXS50eXBlKXtmb3IoOzQhPT0odD1zLnBvcCgpKS50eXBlOylhLnB1c2godCk7cy5wdXNoKHQpfWVsc2V7aT0oZT11W2NdKS5wcmUscj0obz1zW3MubGVuZ3RoLTFdKS5wcmU7dmFyIGY9Ik1hdGgucG93Ij09by52YWx1ZSYmIk1hdGgucG93Ij09ZS52YWx1ZTtpZihpPnIpcy5wdXNoKGUpO2Vsc2V7Zm9yKDtyPj1pJiYhZnx8ZiYmaTxyOyl0PXMucG9wKCksbz1zW3MubGVuZ3RoLTFdLGEucHVzaCh0KSxyPW8ucHJlLGY9Ik1hdGgucG93Ij09ZS52YWx1ZSYmIk1hdGgucG93Ij09by52YWx1ZTtzLnB1c2goZSl9fXJldHVybiBuZXcgbihhKX0sZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwOTcpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdKz10O3JldHVybiBlfXZhciBhPVsic2luIiwiY29zIiwidGFuIiwicGkiLCIoIiwiKSIsIlAiLCJDIiwiYXNpbiIsImFjb3MiLCJhdGFuIiwiNyIsIjgiLCI5IiwiaW50IiwiY29zaCIsImFjb3NoIiwibG4iLCJeIiwicm9vdCIsIjQiLCI1IiwiNiIsIi8iLCIhIiwidGFuaCIsImF0YW5oIiwiTW9kIiwiMSIsIjIiLCIzIiwiKiIsInNpbmgiLCJhc2luaCIsImUiLCJsb2ciLCIwIiwiLiIsIisiLCItIiwiLCIsIlNpZ21hIiwibiIsIlBpIiwicG93Il0scz1bInNpbiIsImNvcyIsInRhbiIsIiZwaTsiLCIoIiwiKSIsIlAiLCJDIiwiYXNpbiIsImFjb3MiLCJhdGFuIiwiNyIsIjgiLCI5IiwiSW50IiwiY29zaCIsImFjb3NoIiwiIGxuIiwiXiIsInJvb3QiLCI0IiwiNSIsIjYiLCImZGl2aWRlOyIsIiEiLCJ0YW5oIiwiYXRhbmgiLCIgTW9kICIsIjEiLCIyIiwiMyIsIiZ0aW1lczsiLCJzaW5oIiwiYXNpbmgiLCJlIiwiIGxvZyIsIjAiLCIuIiwiKyIsIi0iLCIsIiwiJlNpZ21hOyIsIm4iLCImUGk7IiwicG93Il0sdT1bbi5tYXRoLnNpbixuLm1hdGguY29zLG4ubWF0aC50YW4sIlBJIiwiKCIsIikiLG4ubWF0aC5QLG4ubWF0aC5DLG4ubWF0aC5hc2luLG4ubWF0aC5hY29zLG4ubWF0aC5hdGFuLCI3IiwiOCIsIjkiLE1hdGguZmxvb3Isbi5tYXRoLmNvc2gsbi5tYXRoLmFjb3NoLE1hdGgubG9nLE1hdGgucG93LE1hdGguc3FydCwiNCIsIjUiLCI2IixuLm1hdGguZGl2LG4ubWF0aC5mYWN0LG4ubWF0aC50YW5oLG4ubWF0aC5hdGFuaCxuLm1hdGgubW9kLCIxIiwiMiIsIjMiLG4ubWF0aC5tdWwsbi5tYXRoLnNpbmgsbi5tYXRoLmFzaW5oLCJFIixuLm1hdGgubG9nLCIwIiwiLiIsbi5tYXRoLmFkZCxuLm1hdGguc3ViLCIsIixuLm1hdGguc2lnbWEsIm4iLG4ubWF0aC5QaSxNYXRoLnBvd10sYz17MDoxMSwxOjAsMjozLDM6MCw0OjAsNTowLDY6MCw3OjExLDg6MTEsOToxLDEwOjEwLDExOjAsMTI6MTEsMTM6MH0sZj1bMCwwLDAsMyw0LDUsMTAsMTAsMCwwLDAsMSwxLDEsMCwwLDAsMCwxMCwwLDEsMSwxLDIsNywwLDAsMiwxLDEsMSwyLDAsMCwzLDAsMSw2LDksOSwxMSwxMiwxMywxMiw4XSxsPXswOiEwLDE6ITAsMzohMCw0OiEwLDY6ITAsODohMCw5OiEwLDEyOiEwLDEzOiEwfSxoPXswOiEwLDE6ITAsMjohMCwzOiEwLDQ6ITAsNTohMCw2OiEwLDc6ITAsODohMCw5OiEwLDEwOiEwLDExOiEwLDEyOiEwLDEzOiEwfSxwPXswOiEwLDM6ITAsNDohMCw4OiEwLDEyOiEwLDEzOiEwfSxkPXt9LGc9ezA6ITAsMTohMCwzOiEwLDQ6ITAsNjohMCw4OiEwLDEyOiEwLDEzOiEwfSx2PXsxOiEwfSxtPVtbXSxbIjEiLCIyIiwiMyIsIjciLCI4IiwiOSIsIjQiLCI1IiwiNiIsIisiLCItIiwiKiIsIi8iLCIoIiwiKSIsIl4iLCIhIiwiUCIsIkMiLCJlIiwiMCIsIi4iLCIsIiwibiJdLFsicGkiLCJsbiIsIlBpIl0sWyJzaW4iLCJjb3MiLCJ0YW4iLCJEZWwiLCJpbnQiLCJNb2QiLCJsb2ciLCJwb3ciXSxbImFzaW4iLCJhY29zIiwiYXRhbiIsImNvc2giLCJyb290IiwidGFuaCIsInNpbmgiXSxbImFjb3NoIiwiYXRhbmgiLCJhc2luaCIsIlNpZ21hIl1dO2Z1bmN0aW9uIGIoZSx0LHIsbil7Zm9yKHZhciBpPTA7aTxuO2krKylpZihlW3IraV0hPT10W2ldKXJldHVybiExO3JldHVybiEwfW4uYWRkVG9rZW49ZnVuY3Rpb24oZSl7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7eD1lW2ldLnRva2VuLmxlbmd0aDt2YXIgdD0tMTtpZih4PG0ubGVuZ3RoKWZvcih5PTA7eTxtW3hdLmxlbmd0aDt5KyspaWYoZVtpXS50b2tlbj09PW1beF1beV0pe3Q9YS5pbmRleE9mKG1beF1beV0pO2JyZWFrfS0xPT09dD8oYS5wdXNoKGVbaV0udG9rZW4pLGYucHVzaChlW2ldLnR5cGUpLG0ubGVuZ3RoPD1lW2ldLnRva2VuLmxlbmd0aCYmKG1bZVtpXS50b2tlbi5sZW5ndGhdPVtdKSxtW2VbaV0udG9rZW4ubGVuZ3RoXS5wdXNoKGVbaV0udG9rZW4pLHUucHVzaChlW2ldLnZhbHVlKSxzLnB1c2goZVtpXS5zaG93KSk6KGFbdF09ZVtpXS50b2tlbixmW3RdPWVbaV0udHlwZSx1W3RdPWVbaV0udmFsdWUsc1t0XT1lW2ldLnNob3cpfX0sbi5sZXg9ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIHIsaSx5LF8sUz1be3R5cGU6NCx2YWx1ZToiKCIsc2hvdzoiKCIscHJlOjB9XSxFPVtdLHc9ZSxUPTAsQT1sLEM9MCx4PWQsST0iIjsidW5kZWZpbmVkIiE9PXR5cGVvZiB0JiZuLmFkZFRva2VuKHQpO3ZhciBrPXt9O2ZvcihpPTA7aTx3Lmxlbmd0aDtpKyspaWYoIiAiIT13W2ldKXtyPSIiO2U6Zm9yKHk9dy5sZW5ndGgtaT5tLmxlbmd0aC0yP20ubGVuZ3RoLTE6dy5sZW5ndGgtaTt5PjA7eS0tKWZvcihfPTA7XzxtW3ldLmxlbmd0aDtfKyspaWYoYih3LG1beV1bX10saSx5KSl7cj1tW3ldW19dO2JyZWFrIGV9aWYoaSs9ci5sZW5ndGgtMSwiIj09PXIpdGhyb3cgbmV3IG4uZXhjZXB0aW9uKCJDYW4ndCB1bmRlcnN0YW5kIGFmdGVyICIrdy5zbGljZShpKSk7dmFyIE89YS5pbmRleE9mKHIpLE49cixQPWZbT10sUj11W09dLEI9Y1tQXSxNPXNbT10sTD1TW1MubGVuZ3RoLTFdO2ZvcihEPUUubGVuZ3RoO0QtLTspaWYoMD09PUVbRF0mJi0xIT09WzAsMiwzLDUsOSwxMSwxMiwxM10uaW5kZXhPZihQKSl7aWYoITAhPT1BW1BdKXRocm93IG5ldyBuLmV4Y2VwdGlvbihyKyIgaXMgbm90IGFsbG93ZWQgYWZ0ZXIgIitJKTtTLnB1c2goe3ZhbHVlOiIpIix0eXBlOjUscHJlOjAsc2hvdzoiKSJ9KSxBPWgseD1nLG8oRSwtMSkucG9wKCl9aWYoITAhPT1BW1BdKXRocm93IG5ldyBuLmV4Y2VwdGlvbihyKyIgaXMgbm90IGFsbG93ZWQgYWZ0ZXIgIitJKTtpZighMD09PXhbUF0mJihQPTIsUj1uLm1hdGgubXVsLE09IiZ0aW1lczsiLEI9MyxpLT1yLmxlbmd0aCksaz17dmFsdWU6Uix0eXBlOlAscHJlOkIsc2hvdzpNfSwwPT09UClBPWwseD1kLG8oRSwyKS5wdXNoKDIpLFMucHVzaChrKSxTLnB1c2goe3ZhbHVlOiIoIix0eXBlOjQscHJlOjAsc2hvdzoiKCJ9KTtlbHNlIGlmKDE9PT1QKTE9PT1MLnR5cGU/KEwudmFsdWUrPVIsbyhFLDEpKTpTLnB1c2goayksQT1oLHg9cDtlbHNlIGlmKDI9PT1QKUE9bCx4PWQsbyhFLDIpLFMucHVzaChrKTtlbHNlIGlmKDM9PT1QKVMucHVzaChrKSxBPWgseD1nO2Vsc2UgaWYoND09PVApVCs9RS5sZW5ndGgsRT1bXSxDKyssQT1sLHg9ZCxTLnB1c2goayk7ZWxzZSBpZig1PT09UCl7aWYoIUMpdGhyb3cgbmV3IG4uZXhjZXB0aW9uKCJDbG9zaW5nIHBhcmVudGhlc2lzIGFyZSBtb3JlIHRoYW4gb3BlbmluZyBvbmUsIHdhaXQgV2hhdCEhISIpO2Zvcig7VC0tOylTLnB1c2goe3ZhbHVlOiIpIix0eXBlOjUscHJlOjAsc2hvdzoiKSJ9KTtUPTAsQy0tLEE9aCx4PWcsUy5wdXNoKGspfWVsc2UgaWYoNj09PVApe2lmKEwuaGFzRGVjKXRocm93IG5ldyBuLmV4Y2VwdGlvbigiVHdvIGRlY2ltYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBvbmUgbnVtYmVyIik7MSE9PUwudHlwZSYmKEw9e3ZhbHVlOjAsdHlwZToxLHByZTowfSxTLnB1c2goTCksbyhFLC0xKSksQT12LG8oRSwxKSx4PWQsTC52YWx1ZSs9UixMLmhhc0RlYz0hMH1lbHNlIDc9PT1QJiYoQT1oLHg9ZyxvKEUsMSksUy5wdXNoKGspKTs4PT09UD8oQT1sLHg9ZCxvKEUsNCkucHVzaCg0KSxTLnB1c2goayksUy5wdXNoKHt2YWx1ZToiKCIsdHlwZTo0LHByZTowLHNob3c6IigifSkpOjk9PT1QPyg5PT09TC50eXBlP0wudmFsdWU9PT1uLm1hdGguYWRkPyhMLnZhbHVlPVIsTC5zaG93PU0sbyhFLDEpKTpMLnZhbHVlPT09bi5tYXRoLnN1YiYmIi0iPT09TSYmKEwudmFsdWU9bi5tYXRoLmFkZCxMLnNob3c9IisiLG8oRSwxKSk6NSE9PUwudHlwZSYmNyE9PUwudHlwZSYmMSE9PUwudHlwZSYmMyE9PUwudHlwZSYmMTMhPT1MLnR5cGU/Ii0iPT09TiYmKEE9bCx4PWQsbyhFLDIpLnB1c2goMiksUy5wdXNoKHt2YWx1ZTpuLm1hdGguY2hhbmdlU2lnbix0eXBlOjAscHJlOjIxLHNob3c6Ii0ifSksUy5wdXNoKHt2YWx1ZToiKCIsdHlwZTo0LHByZTowLHNob3c6IigifSkpOihTLnB1c2goayksbyhFLDIpKSxBPWwseD1kKToxMD09PVA/KEE9bCx4PWQsbyhFLDIpLFMucHVzaChrKSk6MTE9PT1QPyhBPWwseD1kLFMucHVzaChrKSk6MTI9PT1QPyhBPWwseD1kLG8oRSw2KS5wdXNoKDYpLFMucHVzaChrKSxTLnB1c2goe3ZhbHVlOiIoIix0eXBlOjQscHJlOjB9KSk6MTM9PT1QJiYoQT1oLHg9ZyxTLnB1c2goaykpLG8oRSwtMSksST1yfWZvcih2YXIgRD1FLmxlbmd0aDtELS07KTA9PT1FW0RdJiYoUy5wdXNoKHt2YWx1ZToiKSIsc2hvdzoiKSIsdHlwZTo1LHByZTozfSksbyhFLC0xKS5wb3AoKSk7aWYoITAhPT1BWzVdKXRocm93IG5ldyBuLmV4Y2VwdGlvbigiY29tcGxldGUgdGhlIGV4cHJlc3Npb24iKTtmb3IoO0MtLTspUy5wdXNoKHt2YWx1ZToiKSIsc2hvdzoiKSIsdHlwZTo1LHByZTozfSk7cmV0dXJuIFMucHVzaCh7dHlwZTo1LHZhbHVlOiIpIixzaG93OiIpIixwcmU6MH0pLG5ldyBuKFMpfSxlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXt2YXIgcj1mdW5jdGlvbihlKXt0aGlzLnZhbHVlPWV9O3IubWF0aD17aXNEZWdyZWU6ITAsYWNvczpmdW5jdGlvbihlKXtyZXR1cm4gci5tYXRoLmlzRGVncmVlPzE4MC9NYXRoLlBJKk1hdGguYWNvcyhlKTpNYXRoLmFjb3MoZSl9LGFkZDpmdW5jdGlvbihlLHQpe3JldHVybiBlK3R9LGFzaW46ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZT8xODAvTWF0aC5QSSpNYXRoLmFzaW4oZSk6TWF0aC5hc2luKGUpfSxhdGFuOmZ1bmN0aW9uKGUpe3JldHVybiByLm1hdGguaXNEZWdyZWU/MTgwL01hdGguUEkqTWF0aC5hdGFuKGUpOk1hdGguYXRhbihlKX0sYWNvc2g6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUrTWF0aC5zcXJ0KGUqZS0xKSl9LGFzaW5oOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlK01hdGguc3FydChlKmUrMSkpfSxhdGFuaDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coKDErZSkvKDEtZSkpfSxDOmZ1bmN0aW9uKGUsdCl7dmFyIG49MSxpPWUtdCxvPXQ7bzxpJiYobz1pLGk9dCk7Zm9yKHZhciBhPW8rMTthPD1lO2ErKyluKj1hO3JldHVybiBuL3IubWF0aC5mYWN0KGkpfSxjaGFuZ2VTaWduOmZ1bmN0aW9uKGUpe3JldHVybi1lfSxjb3M6ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZSYmKGU9ci5tYXRoLnRvUmFkaWFuKGUpKSxNYXRoLmNvcyhlKX0sY29zaDpmdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5wb3coTWF0aC5FLGUpK01hdGgucG93KE1hdGguRSwtMSplKSkvMn0sZGl2OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUvdH0sZmFjdDpmdW5jdGlvbihlKXtpZihlJTEhPT0wKXJldHVybiJOQU4iO2Zvcih2YXIgdD0xLHI9MjtyPD1lO3IrKyl0Kj1yO3JldHVybiB0fSxpbnZlcnNlOmZ1bmN0aW9uKGUpe3JldHVybiAxL2V9LGxvZzpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5sb2coMTApfSxtb2Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSV0fSxtdWw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSp0fSxQOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTEsbj1NYXRoLmZsb29yKGUpLU1hdGguZmxvb3IodCkrMTtuPD1NYXRoLmZsb29yKGUpO24rKylyKj1uO3JldHVybiByfSxQaTpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTEsaT1lO2k8PXQ7aSsrKW4qPU51bWJlcihyLnBvc3RmaXhFdmFsKHtuOml9KSk7cmV0dXJuIG59LHBvdzEweDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTtlLS07KXQqPTEwO3JldHVybiB0fSxzaWdtYTpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTAsaT1lO2k8PXQ7aSsrKW4rPU51bWJlcihyLnBvc3RmaXhFdmFsKHtuOml9KSk7cmV0dXJuIG59LHNpbjpmdW5jdGlvbihlKXtyZXR1cm4gci5tYXRoLmlzRGVncmVlJiYoZT1yLm1hdGgudG9SYWRpYW4oZSkpLE1hdGguc2luKGUpfSxzaW5oOmZ1bmN0aW9uKGUpe3JldHVybihNYXRoLnBvdyhNYXRoLkUsZSktTWF0aC5wb3coTWF0aC5FLC0xKmUpKS8yfSxzdWI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSx0YW46ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZSYmKGU9ci5tYXRoLnRvUmFkaWFuKGUpKSxNYXRoLnRhbihlKX0sdGFuaDpmdW5jdGlvbihlKXtyZXR1cm4gci5zaW5oYShlKS9yLmNvc2hhKGUpfSx0b1JhZGlhbjpmdW5jdGlvbihlKXtyZXR1cm4gZSpNYXRoLlBJLzE4MH19LHIuZXhjZXB0aW9uPWZ1bmN0aW9uKGUpe3RoaXMubWVzc2FnZT1lfSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbih0KXsoZnVuY3Rpb24oKXt2YXIgcixuLGksbyxhLHM7InVuZGVmaW5lZCIhPT10eXBlb2YgcGVyZm9ybWFuY2UmJm51bGwhPT1wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX06InVuZGVmaW5lZCIhPT10eXBlb2YgdCYmbnVsbCE9PXQmJnQuaHJ0aW1lPyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4ocigpLWEpLzFlNn0sbj10LmhydGltZSxvPShyPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIDFlOSooZT1uKCkpWzBdK2VbMV19KSgpLHM9MWU5KnQudXB0aW1lKCksYT1vLXMpOkRhdGUubm93PyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKS1pfSxpPURhdGUubm93KCkpOihlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKS1pfSxpPShuZXcgRGF0ZSkuZ2V0VGltZSgpKX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscig0NikpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODApKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTIpLGk9cig0OTQpLG89cig0OTYpLGE9cigxNTIpLHM9cigyOTgpLHU9cigyOTMpLGM9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGY9cj9vOmksbD1lWzBdLmxlbmd0aCxoPWUubGVuZ3RoLHA9aCxkPUFycmF5KGgpLHk9MS8wLGc9W107cC0tOyl7dmFyIHY9ZVtwXTtwJiZ0JiYodj1hKHYscyh0KSkpLHk9Yyh2Lmxlbmd0aCx5KSxkW3BdPSFyJiYodHx8bD49MTIwJiZ2Lmxlbmd0aD49MTIwKT9uZXcgbihwJiZ2KTp2b2lkIDB9dj1lWzBdO3ZhciBtPS0xLGI9ZFswXTtlOmZvcig7KyttPGwmJmcubGVuZ3RoPHk7KXt2YXIgXz12W21dLFM9dD90KF8pOl87aWYoXz1yfHwwIT09Xz9fOjAsIShiP3UoYixTKTpmKGcsUyxyKSkpe2ZvcihwPWg7LS1wOyl7dmFyIEU9ZFtwXTtpZighKEU/dShFLFMpOmYoZVtwXSxTLHIpKSljb250aW51ZSBlfWImJmIucHVzaChTKSxnLnB1c2goXyl9fXJldHVybiBnfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTEwMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUpP2U6W119fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTcpLGk9cig3NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpJiZuKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXTtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXt0KGUsbixpKSYmci5wdXNoKGUpfSkscn19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7IWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXt2YXIgbj1PYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpOnt9O24uZ2V0fHxuLnNldD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4pOnRbcl09ZVtyXX10LmRlZmF1bHQ9ZX0ocigwKSk7dmFyIG49cyhyKDExMDUpKSxpPXMocigxMTA4KSksbz1zKHIoMSkpLGE9cyhyKDQ5NykpO3IoNDk5KTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiB1KCl7cmV0dXJuKHU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgYz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZ0JiZ0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4oMCxuLmRlZmF1bHQpKGUsdCl9KX0sZj1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZ0JiZ0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4oMCxpLmRlZmF1bHQpKGUsdCl9KX0sbD1mdW5jdGlvbihlKXt2YXIgdCxyO2Z1bmN0aW9uIG4oKXtmb3IodmFyIHQscj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3JldHVybih0PWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobikpfHx0aGlzKS5vbkVudGVyPWZ1bmN0aW9uKGUscil7dmFyIG49dC5nZXRDbGFzc05hbWVzKHI/ImFwcGVhciI6ImVudGVyIikuY2xhc3NOYW1lO3QucmVtb3ZlQ2xhc3NlcyhlLCJleGl0IiksYyhlLG4pLHQucHJvcHMub25FbnRlciYmdC5wcm9wcy5vbkVudGVyKGUscil9LHQub25FbnRlcmluZz1mdW5jdGlvbihlLHIpe3ZhciBuPXQuZ2V0Q2xhc3NOYW1lcyhyPyJhcHBlYXIiOiJlbnRlciIpLmFjdGl2ZUNsYXNzTmFtZTt0LnJlZmxvd0FuZEFkZENsYXNzKGUsbiksdC5wcm9wcy5vbkVudGVyaW5nJiZ0LnByb3BzLm9uRW50ZXJpbmcoZSxyKX0sdC5vbkVudGVyZWQ9ZnVuY3Rpb24oZSxyKXt2YXIgbj10LmdldENsYXNzTmFtZXMoImFwcGVhciIpLmRvbmVDbGFzc05hbWUsaT10LmdldENsYXNzTmFtZXMoImVudGVyIikuZG9uZUNsYXNzTmFtZSxvPXI/bisiICIraTppO3QucmVtb3ZlQ2xhc3NlcyhlLHI/ImFwcGVhciI6ImVudGVyIiksYyhlLG8pLHQucHJvcHMub25FbnRlcmVkJiZ0LnByb3BzLm9uRW50ZXJlZChlLHIpfSx0Lm9uRXhpdD1mdW5jdGlvbihlKXt2YXIgcj10LmdldENsYXNzTmFtZXMoImV4aXQiKS5jbGFzc05hbWU7dC5yZW1vdmVDbGFzc2VzKGUsImFwcGVhciIpLHQucmVtb3ZlQ2xhc3NlcyhlLCJlbnRlciIpLGMoZSxyKSx0LnByb3BzLm9uRXhpdCYmdC5wcm9wcy5vbkV4aXQoZSl9LHQub25FeGl0aW5nPWZ1bmN0aW9uKGUpe3ZhciByPXQuZ2V0Q2xhc3NOYW1lcygiZXhpdCIpLmFjdGl2ZUNsYXNzTmFtZTt0LnJlZmxvd0FuZEFkZENsYXNzKGUsciksdC5wcm9wcy5vbkV4aXRpbmcmJnQucHJvcHMub25FeGl0aW5nKGUpfSx0Lm9uRXhpdGVkPWZ1bmN0aW9uKGUpe3ZhciByPXQuZ2V0Q2xhc3NOYW1lcygiZXhpdCIpLmRvbmVDbGFzc05hbWU7dC5yZW1vdmVDbGFzc2VzKGUsImV4aXQiKSxjKGUsciksdC5wcm9wcy5vbkV4aXRlZCYmdC5wcm9wcy5vbkV4aXRlZChlKX0sdC5nZXRDbGFzc05hbWVzPWZ1bmN0aW9uKGUpe3ZhciByPXQucHJvcHMuY2xhc3NOYW1lcyxuPSJzdHJpbmciPT09dHlwZW9mIHIsaT1uPyhuJiZyP3IrIi0iOiIiKStlOnJbZV07cmV0dXJue2NsYXNzTmFtZTppLGFjdGl2ZUNsYXNzTmFtZTpuP2krIi1hY3RpdmUiOnJbZSsiQWN0aXZlIl0sZG9uZUNsYXNzTmFtZTpuP2krIi1kb25lIjpyW2UrIkRvbmUiXX19LHR9cj1lLCh0PW4pLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPXI7dmFyIGk9bi5wcm90b3R5cGU7cmV0dXJuIGkucmVtb3ZlQ2xhc3Nlcz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuZ2V0Q2xhc3NOYW1lcyh0KSxuPXIuY2xhc3NOYW1lLGk9ci5hY3RpdmVDbGFzc05hbWUsbz1yLmRvbmVDbGFzc05hbWU7biYmZihlLG4pLGkmJmYoZSxpKSxvJiZmKGUsbyl9LGkucmVmbG93QW5kQWRkQ2xhc3M9ZnVuY3Rpb24oZSx0KXt0JiYoZSYmZS5zY3JvbGxUb3AsYyhlLHQpKX0saS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT11KHt9LHRoaXMucHJvcHMpO3JldHVybiBkZWxldGUgZS5jbGFzc05hbWVzLG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGEuZGVmYXVsdCx1KHt9LGUse29uRW50ZXI6dGhpcy5vbkVudGVyLG9uRW50ZXJlZDp0aGlzLm9uRW50ZXJlZCxvbkVudGVyaW5nOnRoaXMub25FbnRlcmluZyxvbkV4aXQ6dGhpcy5vbkV4aXQsb25FeGl0aW5nOnRoaXMub25FeGl0aW5nLG9uRXhpdGVkOnRoaXMub25FeGl0ZWR9KSl9LG59KG8uZGVmYXVsdC5Db21wb25lbnQpO2wuZGVmYXVsdFByb3BzPXtjbGFzc05hbWVzOiIifSxsLnByb3BUeXBlcz17fTt2YXIgaD1sO3QuZGVmYXVsdD1oLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxMTA2KTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7ZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QuYWRkKHQpOigwLGkuZGVmYXVsdCkoZSx0KXx8KCJzdHJpbmciPT09dHlwZW9mIGUuY2xhc3NOYW1lP2UuY2xhc3NOYW1lPWUuY2xhc3NOYW1lKyIgIit0OmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZS5iYXNlVmFsfHwiIikrIiAiK3QpKX07dmFyIGk9bihyKDExMDcpKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbGFzc0xpc3Q/ISF0JiZlLmNsYXNzTGlzdC5jb250YWlucyh0KTotMSE9PSgiICIrKGUuY2xhc3NOYW1lLmJhc2VWYWx8fGUuY2xhc3NOYW1lKSsiICIpLmluZGV4T2YoIiAiK3QrIiAiKX0sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUucmVwbGFjZShuZXcgUmVnRXhwKCIoXnxcXHMpIit0KyIoPzpcXHN8JCkiLCJnIiksIiQxIikucmVwbGFjZSgvXHMrL2csIiAiKS5yZXBsYWNlKC9eXHMqfFxzKiQvZywiIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QucmVtb3ZlKHQpOiJzdHJpbmciPT09dHlwZW9mIGUuY2xhc3NOYW1lP2UuY2xhc3NOYW1lPW4oZS5jbGFzc05hbWUsdCk6ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZS5iYXNlVmFsfHwiIix0KSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO2EocigwKSk7dmFyIG49YShyKDEpKSxpPXIoMjAwKSxvPWEocig1MDApKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgcz1mdW5jdGlvbihlKXt2YXIgdCxyO2Z1bmN0aW9uIGEoKXtmb3IodmFyIHQscj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3JldHVybih0PWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobikpfHx0aGlzKS5oYW5kbGVFbnRlcj1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FbnRlciIsMCxyKX0sdC5oYW5kbGVFbnRlcmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FbnRlcmluZyIsMCxyKX0sdC5oYW5kbGVFbnRlcmVkPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIHQuaGFuZGxlTGlmZWN5Y2xlKCJvbkVudGVyZWQiLDAscil9LHQuaGFuZGxlRXhpdD1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FeGl0IiwxLHIpfSx0LmhhbmRsZUV4aXRpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5oYW5kbGVMaWZlY3ljbGUoIm9uRXhpdGluZyIsMSxyKX0sdC5oYW5kbGVFeGl0ZWQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5oYW5kbGVMaWZlY3ljbGUoIm9uRXhpdGVkIiwxLHIpfSx0fXI9ZSwodD1hKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1yO3ZhciBzPWEucHJvdG90eXBlO3JldHVybiBzLmhhbmRsZUxpZmVjeWNsZT1mdW5jdGlvbihlLHQscil7dmFyIG8sYT10aGlzLnByb3BzLmNoaWxkcmVuLHM9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkoYSlbdF07cy5wcm9wc1tlXSYmKG89cy5wcm9wcylbZV0uYXBwbHkobyxyKSx0aGlzLnByb3BzW2VdJiZ0aGlzLnByb3BzW2VdKCgwLGkuZmluZERPTU5vZGUpKHRoaXMpKX0scy5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ=" == "base64:Z2UpKDAsaC0xKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4tMS8wfSkpLmNvbmNhdChbdl0pO3JldHVybiByPmE/KDAsaS5yZXZlcnNlKShtKTptfWlmKGc9PT12KXJldHVybiBsKGcsaCxwKTt2YXIgYj1mdW5jdGlvbiBlKHQscixpLG8pe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowO2lmKCFOdW1iZXIuaXNGaW5pdGUoKHItdCkvKGktMSkpKXJldHVybntzdGVwOm5ldyBuLmRlZmF1bHQoMCksdGlja01pbjpuZXcgbi5kZWZhdWx0KDApLHRpY2tNYXg6bmV3IG4uZGVmYXVsdCgwKX07dmFyIHMsdT1mKG5ldyBuLmRlZmF1bHQocikuc3ViKHQpLmRpdihpLTEpLG8sYSk7cz10PD0wJiZyPj0wP25ldyBuLmRlZmF1bHQoMCk6KHM9bmV3IG4uZGVmYXVsdCh0KS5hZGQocikuZGl2KDIpKS5zdWIobmV3IG4uZGVmYXVsdChzKS5tb2QodSkpO3ZhciBjPU1hdGguY2VpbChzLnN1Yih0KS5kaXYodSkudG9OdW1iZXIoKSksbD1NYXRoLmNlaWwobmV3IG4uZGVmYXVsdChyKS5zdWIocykuZGl2KHUpLnRvTnVtYmVyKCkpLGg9YytsKzE7cmV0dXJuIGg+aT9lKHQscixpLG8sYSsxKTooaDxpJiYobD1yPjA/bCsoaS1oKTpsLGM9cj4wP2M6YysoaS1oKSkse3N0ZXA6dSx0aWNrTWluOnMuc3ViKG5ldyBuLmRlZmF1bHQoYykubXVsKHUpKSx0aWNrTWF4OnMuYWRkKG5ldyBuLmRlZmF1bHQobCkubXVsKHUpKX0pfShnLHYsZCxwKSxfPWIuc3RlcCxTPWIudGlja01pbixFPWIudGlja01heCx3PW8uZGVmYXVsdC5yYW5nZVN0ZXAoUyxFLmFkZChuZXcgbi5kZWZhdWx0KC4xKS5tdWwoXykpLF8pO3JldHVybiByPmE/KDAsaS5yZXZlcnNlKSh3KTp3fSk7dC5nZXROaWNlVGlja1ZhbHVlcz1oO3ZhciBwPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxvPXRbMV0sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixzPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0saD1NYXRoLm1heChhLDIpLHA9dShjKFtyLG9dKSwyKSxkPXBbMF0seT1wWzFdO2lmKGQ9PT0tMS8wfHx5PT09MS8wKXJldHVybltyLG9dO2lmKGQ9PT15KXJldHVybiBsKGQsYSxzKTt2YXIgZz1mKG5ldyBuLmRlZmF1bHQoeSkuc3ViKGQpLmRpdihoLTEpLHMsMCksdj0oMCxpLmNvbXBvc2UpKCgwLGkubWFwKShmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG4uZGVmYXVsdChkKS5hZGQobmV3IG4uZGVmYXVsdChlKS5tdWwoZykpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLGgpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZT49ZCYmZTw9eX0pO3JldHVybiByPm8/KDAsaS5yZXZlcnNlKSh2KTp2fSk7dC5nZXRUaWNrVmFsdWVzPXA7dmFyIGQ9KDAsaS5tZW1vaXplKShmdW5jdGlvbihlLHQpe3ZhciByPXUoZSwyKSxhPXJbMF0sbD1yWzFdLGg9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxwPXUoYyhbYSxsXSksMiksZD1wWzBdLHk9cFsxXTtpZihkPT09LTEvMHx8eT09PTEvMClyZXR1cm5bYSxsXTtpZihkPT09eSlyZXR1cm5bZF07dmFyIGc9TWF0aC5tYXgodCwyKSx2PWYobmV3IG4uZGVmYXVsdCh5KS5zdWIoZCkuZGl2KGctMSksaCwwKSxtPXMoby5kZWZhdWx0LnJhbmdlU3RlcChuZXcgbi5kZWZhdWx0KGQpLG5ldyBuLmRlZmF1bHQoeSkuc3ViKG5ldyBuLmRlZmF1bHQoLjk5KS5tdWwodikpLHYpKS5jb25jYXQoW3ldKTtyZXR1cm4gYT5sPygwLGkucmV2ZXJzZSkobSk6bX0pO3QuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPWR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG4saT0obj1yKDQ5MikpJiZuLl9fZXNNb2R1bGU/bjp7ZGVmYXVsdDpufSxvPXIoNDkzKTt2YXIgYT17cmFuZ2VTdGVwOmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49bmV3IGkuZGVmYXVsdChlKSxvPVtdO24ubHQodCk7KW8ucHVzaChuLnRvTnVtYmVyKCkpLG49bi5hZGQocik7cmV0dXJuIG99LGdldERpZ2l0Q291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzE6TWF0aC5mbG9vcihuZXcgaS5kZWZhdWx0KGUpLmFicygpLmxvZygxMCkudG9OdW1iZXIoKSkrMX0saW50ZXJwb2xhdGVOdW1iZXI6KDAsby5jdXJyeSkoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPStlO3JldHVybiBuK3IqKCt0LW4pfSksdW5pbnRlcnBvbGF0ZU51bWJlcjooMCxvLmN1cnJ5KShmdW5jdGlvbihlLHQscil7dmFyIG49dC0rZTtyZXR1cm4oci1lKS8obj1ufHwxLzApfSksdW5pbnRlcnBvbGF0ZVRydW5jYXRpb246KDAsby5jdXJyeSkoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXQtK2U7cmV0dXJuIG49bnx8MS8wLE1hdGgubWF4KDAsTWF0aC5taW4oMSwoci1lKS9uKSl9KX07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI5MiksaT1yKDQ5NCksbz1yKDQ5NiksYT1yKDI5Mykscz1yKDEwODQpLHU9cigyOTQpLGM9MjAwO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGY9LTEsbD1pLGg9ZS5sZW5ndGgscD0hMCxkPVtdLHk9ZDtpZihyKXA9ITEsbD1vO2Vsc2UgaWYoaD49Yyl7dmFyIGc9dD9udWxsOnMoZSk7aWYoZylyZXR1cm4gdShnKTtwPSExLGw9YSx5PW5ldyBufWVsc2UgeT10P1tdOmQ7ZTpmb3IoOysrZjxoOyl7dmFyIHY9ZVtmXSxtPXQ/dCh2KTp2O2lmKHY9cnx8MCE9PXY/djowLHAmJm09PT1tKXtmb3IodmFyIGI9eS5sZW5ndGg7Yi0tOylpZih5W2JdPT09bSljb250aW51ZSBlO3QmJnkucHVzaChtKSxkLnB1c2godil9ZWxzZSBsKHksbSxyKXx8KHkhPT1kJiZ5LnB1c2gobSksZC5wdXNoKHYpKX1yZXR1cm4gZH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5NSksaT1yKDEwODIpLG89cigxMDgzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0PT09dD9vKGUsdCxyKTpuKGUsaSxyKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlIT09ZX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49ci0xLGk9ZS5sZW5ndGg7KytuPGk7KWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDgxKSxpPXIoMTA4NSksbz1yKDI5NCksYT1uJiYxL28obmV3IG4oWywtMF0pKVsxXT09MS8wP2Z1bmN0aW9uKGUpe3JldHVybiBuZXcgbihlKX06aTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiBuKGUsZnVuY3Rpb24oZSxuLGkpe3JldHVybiEocj10KGUsbixpKSl9KSwhIXJ9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDsrK3I8bjspaWYoIXQoZVtyXSxyLGUpKXJldHVybiExO3JldHVybiEwfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj0hMDtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gcj0hIXQoZSxuLGkpfSkscn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXsiX19wcm90b19fIj09dCYmbj9uKGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6cix3cml0YWJsZTohMH0pOmVbdF09cn19LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQscil7ZSBpbnN0YW5jZW9mIFJlZ0V4cCYmKGU9bihlLHIpKSx0IGluc3RhbmNlb2YgUmVnRXhwJiYodD1uKHQscikpO3ZhciBvPWkoZSx0LHIpO3JldHVybiBvJiZ7c3RhcnQ6b1swXSxlbmQ6b1sxXSxwcmU6ci5zbGljZSgwLG9bMF0pLGJvZHk6ci5zbGljZShvWzBdK2UubGVuZ3RoLG9bMV0pLHBvc3Q6ci5zbGljZShvWzFdK3QubGVuZ3RoKX19ZnVuY3Rpb24gbihlLHQpe3ZhciByPXQubWF0Y2goZSk7cmV0dXJuIHI/clswXTpudWxsfWZ1bmN0aW9uIGkoZSx0LHIpe3ZhciBuLGksbyxhLHMsdT1yLmluZGV4T2YoZSksYz1yLmluZGV4T2YodCx1KzEpLGY9dTtpZih1Pj0wJiZjPjApe2ZvcihuPVtdLG89ci5sZW5ndGg7Zj49MCYmIXM7KWY9PXU/KG4ucHVzaChmKSx1PXIuaW5kZXhPZihlLGYrMSkpOjE9PW4ubGVuZ3RoP3M9W24ucG9wKCksY106KChpPW4ucG9wKCkpPG8mJihvPWksYT1jKSxjPXIuaW5kZXhPZih0LGYrMSkpLGY9dTxjJiZ1Pj0wP3U6YztuLmxlbmd0aCYmKHM9W28sYV0pfXJldHVybiBzfWUuZXhwb3J0cz1yLHIucmFuZ2U9aX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5Mik7ZnVuY3Rpb24gaShlLHQscil7dmFyIG89ZTtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxpPSJzdHJpbmciPT09dHlwZW9mIHQ/bmV3IFJlZ0V4cCgiXFxiKCIrdCsiKVxcKCIpOnQ7ZG97dmFyIG89aS5leGVjKGUpO2lmKCFvKXJldHVybiByO2lmKHZvaWQgMD09PW9bMV0pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHRoZSBmaXJzdCBjb3VwbGUgb2YgcGFyZW50aGVzaXMgdG8gZ2V0IHRoZSBmdW5jdGlvbiBpZGVudGlmaWVyIGluICIrdCk7dmFyIGE9b1sxXSxzPW8uaW5kZXgsdT1uKCIoIiwiKSIsZS5zdWJzdHJpbmcocykpO2lmKCF1fHx1LnN0YXJ0IT09b1swXS5sZW5ndGgtMSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoYSsiKCk6IG1pc3NpbmcgY2xvc2luZyAnKScgaW4gdGhlIHZhbHVlICciK2UrIiciKTtyLnB1c2goe21hdGNoZXM6dSxmdW5jdGlvbklkZW50aWZpZXI6YX0pLGU9dS5wb3N0fXdoaWxlKGkudGVzdChlKSk7cmV0dXJuIHJ9KGUsdCkucmVkdWNlKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUucmVwbGFjZShuLmZ1bmN0aW9uSWRlbnRpZmllcisiKCIrbi5tYXRjaGVzLmJvZHkrIikiLGZ1bmN0aW9uKGUsdCxyLG4sbyl7cmV0dXJuIHIoaShlLG8sciksdCxuKX0obi5tYXRjaGVzLmJvZHksbi5mdW5jdGlvbklkZW50aWZpZXIscixvLHQpKX0sZSl9ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQscil7ZSBpbnN0YW5jZW9mIFJlZ0V4cCYmKGU9bihlLHIpKSx0IGluc3RhbmNlb2YgUmVnRXhwJiYodD1uKHQscikpO3ZhciBvPWkoZSx0LHIpO3JldHVybiBvJiZ7c3RhcnQ6b1swXSxlbmQ6b1sxXSxwcmU6ci5zbGljZSgwLG9bMF0pLGJvZHk6ci5zbGljZShvWzBdK2UubGVuZ3RoLG9bMV0pLHBvc3Q6ci5zbGljZShvWzFdK3QubGVuZ3RoKX19ZnVuY3Rpb24gbihlLHQpe3ZhciByPXQubWF0Y2goZSk7cmV0dXJuIHI/clswXTpudWxsfWZ1bmN0aW9uIGkoZSx0LHIpe3ZhciBuLGksbyxhLHMsdT1yLmluZGV4T2YoZSksYz1yLmluZGV4T2YodCx1KzEpLGY9dTtpZih1Pj0wJiZjPjApe2ZvcihuPVtdLG89ci5sZW5ndGg7Zj49MCYmIXM7KWY9PXU/KG4ucHVzaChmKSx1PXIuaW5kZXhPZihlLGYrMSkpOjE9PW4ubGVuZ3RoP3M9W24ucG9wKCksY106KChpPW4ucG9wKCkpPG8mJihvPWksYT1jKSxjPXIuaW5kZXhPZih0LGYrMSkpLGY9dTxjJiZ1Pj0wP3U6YztuLmxlbmd0aCYmKHM9W28sYV0pfXJldHVybiBzfWUuZXhwb3J0cz1yLHIucmFuZ2U9aX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5NCk7bi5wcm90b3R5cGUuZm9ybXVsYUV2YWw9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Zm9yKHZhciBlLHQscixuPVtdLGk9dGhpcy52YWx1ZSxvPTA7bzxpLmxlbmd0aDtvKyspMT09PWlbb10udHlwZXx8Mz09PWlbb10udHlwZT9uLnB1c2goe3ZhbHVlOjM9PT1pW29dLnR5cGU/aVtvXS5zaG93Omlbb10udmFsdWUsdHlwZToxfSk6MTM9PT1pW29dLnR5cGU/bi5wdXNoKHt2YWx1ZTppW29dLnNob3csdHlwZToxfSk6MD09PWlbb10udHlwZT9uW24ubGVuZ3RoLTFdPXt2YWx1ZTppW29dLnNob3crKCItIiE9aVtvXS5zaG93PyIoIjoiIikrbltuLmxlbmd0aC0xXS52YWx1ZSsoIi0iIT1pW29dLnNob3c/IikiOiIiKSx0eXBlOjB9Ojc9PT1pW29dLnR5cGU/bltuLmxlbmd0aC0xXT17dmFsdWU6KDEhPW5bbi5sZW5ndGgtMV0udHlwZT8iKCI6IiIpK25bbi5sZW5ndGgtMV0udmFsdWUrKDEhPW5bbi5sZW5ndGgtMV0udHlwZT8iKSI6IiIpK2lbb10uc2hvdyx0eXBlOjd9OjEwPT09aVtvXS50eXBlPyhlPW4ucG9wKCksdD1uLnBvcCgpLCJQIj09PWlbb10uc2hvd3x8IkMiPT09aVtvXS5zaG93P24ucHVzaCh7dmFsdWU6IjxzdXA+Iit0LnZhbHVlKyI8L3N1cD4iK2lbb10uc2hvdysiPHN1Yj4iK2UudmFsdWUrIjwvc3ViPiIsdHlwZToxMH0pOm4ucHVzaCh7dmFsdWU6KDEhPXQudHlwZT8iKCI6IiIpK3QudmFsdWUrKDEhPXQudHlwZT8iKSI6IiIpKyI8c3VwPiIrZS52YWx1ZSsiPC9zdXA+Iix0eXBlOjF9KSk6Mj09PWlbb10udHlwZXx8OT09PWlbb10udHlwZT8oZT1uLnBvcCgpLHQ9bi5wb3AoKSxuLnB1c2goe3ZhbHVlOigxIT10LnR5cGU/IigiOiIiKSt0LnZhbHVlKygxIT10LnR5cGU/IikiOiIiKStpW29dLnNob3crKDEhPWUudHlwZT8iKCI6IiIpK2UudmFsdWUrKDEhPWUudHlwZT8iKSI6IiIpLHR5cGU6aVtvXS50eXBlfSkpOjEyPT09aVtvXS50eXBlJiYoZT1uLnBvcCgpLHQ9bi5wb3AoKSxyPW4ucG9wKCksbi5wdXNoKHt2YWx1ZTppW29dLnNob3crIigiK3IudmFsdWUrIiwiK3QudmFsdWUrIiwiK2UudmFsdWUrIikiLHR5cGU6MTJ9KSk7cmV0dXJuIG5bMF0udmFsdWV9LGUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDk1KTtuLnByb3RvdHlwZS5wb3N0Zml4RXZhbD1mdW5jdGlvbihlKXsidXNlIHN0cmljdCI7KGU9ZXx8e30pLlBJPU1hdGguUEksZS5FPU1hdGguRTtmb3IodmFyIHQscixpLG89W10sYT10aGlzLnZhbHVlLHM9InVuZGVmaW5lZCIhPT10eXBlb2YgZS5uLHU9MDt1PGEubGVuZ3RoO3UrKykxPT09YVt1XS50eXBlP28ucHVzaCh7dmFsdWU6YVt1XS52YWx1ZSx0eXBlOjF9KTozPT09YVt1XS50eXBlP28ucHVzaCh7dmFsdWU6ZVthW3VdLnZhbHVlXSx0eXBlOjF9KTowPT09YVt1XS50eXBlPyJ1bmRlZmluZWQiPT09dHlwZW9mIG9bby5sZW5ndGgtMV0udHlwZT9vW28ubGVuZ3RoLTFdLnZhbHVlLnB1c2goYVt1XSk6b1tvLmxlbmd0aC0xXS52YWx1ZT1hW3VdLnZhbHVlKG9bby5sZW5ndGgtMV0udmFsdWUpOjc9PT1hW3VdLnR5cGU/InVuZGVmaW5lZCI9PT10eXBlb2Ygb1tvLmxlbmd0aC0xXS50eXBlP29bby5sZW5ndGgtMV0udmFsdWUucHVzaChhW3VdKTpvW28ubGVuZ3RoLTFdLnZhbHVlPWFbdV0udmFsdWUob1tvLmxlbmd0aC0xXS52YWx1ZSk6OD09PWFbdV0udHlwZT8odD1vLnBvcCgpLHI9by5wb3AoKSxvLnB1c2goe3R5cGU6MSx2YWx1ZTphW3VdLnZhbHVlKHIudmFsdWUsdC52YWx1ZSl9KSk6MTA9PT1hW3VdLnR5cGU/KHQ9by5wb3AoKSwidW5kZWZpbmVkIj09PXR5cGVvZihyPW8ucG9wKCkpLnR5cGU/KHIudmFsdWU9ci5jb25jYXQodCksci52YWx1ZS5wdXNoKGFbdV0pLG8ucHVzaChyKSk6InVuZGVmaW5lZCI9PT10eXBlb2YgdC50eXBlPyh0LnVuc2hpZnQociksdC5wdXNoKGFbdV0pLG8ucHVzaCh0KSk6by5wdXNoKHt0eXBlOjEsdmFsdWU6YVt1XS52YWx1ZShyLnZhbHVlLHQudmFsdWUpfSkpOjI9PT1hW3VdLnR5cGV8fDk9PT1hW3VdLnR5cGU/KHQ9by5wb3AoKSwidW5kZWZpbmVkIj09PXR5cGVvZihyPW8ucG9wKCkpLnR5cGU/KGNvbnNvbGUubG9nKHIpLChyPXIuY29uY2F0KHQpKS5wdXNoKGFbdV0pLG8ucHVzaChyKSk6InVuZGVmaW5lZCI9PT10eXBlb2YgdC50eXBlPyh0LnVuc2hpZnQociksdC5wdXNoKGFbdV0pLG8ucHVzaCh0KSk6by5wdXNoKHt0eXBlOjEsdmFsdWU6YVt1XS52YWx1ZShyLnZhbHVlLHQudmFsdWUpfSkpOjEyPT09YVt1XS50eXBlPygidW5kZWZpbmVkIiE9PXR5cGVvZih0PW8ucG9wKCkpLnR5cGUmJih0PVt0XSkscj1vLnBvcCgpLGk9by5wb3AoKSxvLnB1c2goe3R5cGU6MSx2YWx1ZTphW3VdLnZhbHVlKGkudmFsdWUsci52YWx1ZSxuZXcgbih0KSl9KSk6MTM9PT1hW3VdLnR5cGUmJihzP28ucHVzaCh7dmFsdWU6ZVthW3VdLnZhbHVlXSx0eXBlOjN9KTpvLnB1c2goW2FbdV1dKSk7aWYoby5sZW5ndGg+MSl0aHJvdyBuZXcgbi5leGNlcHRpb24oIlVuY2F1Z2h0IFN5bnRheCBlcnJvciIpO3JldHVybiBvWzBdLnZhbHVlPjFlMTU/IkluZmluaXR5IjpwYXJzZUZsb2F0KG9bMF0udmFsdWUudG9GaXhlZCgxNSkpfSxuLmV2YWw9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIHQ/dGhpcy5sZXgoZSkudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwoKToidW5kZWZpbmVkIj09PXR5cGVvZiByPyJ1bmRlZmluZWQiIT09dHlwZW9mIHQubGVuZ3RoP3RoaXMubGV4KGUsdCkudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwoKTp0aGlzLmxleChlKS50b1Bvc3RmaXgoKS5wb3N0Zml4RXZhbCh0KTp0aGlzLmxleChlLHQpLnRvUG9zdGZpeCgpLnBvc3RmaXhFdmFsKHIpfSxlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5Nik7bi5wcm90b3R5cGUudG9Qb3N0Zml4PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Zvcih2YXIgZSx0LHIsaSxvLGE9W10scz1be3ZhbHVlOiIoIix0eXBlOjQscHJlOjB9XSx1PXRoaXMudmFsdWUsYz0xO2M8dS5sZW5ndGg7YysrKWlmKDE9PT11W2NdLnR5cGV8fDM9PT11W2NdLnR5cGV8fDEzPT09dVtjXS50eXBlKTE9PT11W2NdLnR5cGUmJih1W2NdLnZhbHVlPU51bWJlcih1W2NdLnZhbHVlKSksYS5wdXNoKHVbY10pO2Vsc2UgaWYoND09PXVbY10udHlwZSlzLnB1c2godVtjXSk7ZWxzZSBpZig1PT09dVtjXS50eXBlKWZvcig7NCE9PSh0PXMucG9wKCkpLnR5cGU7KWEucHVzaCh0KTtlbHNlIGlmKDExPT09dVtjXS50eXBlKXtmb3IoOzQhPT0odD1zLnBvcCgpKS50eXBlOylhLnB1c2godCk7cy5wdXNoKHQpfWVsc2V7aT0oZT11W2NdKS5wcmUscj0obz1zW3MubGVuZ3RoLTFdKS5wcmU7dmFyIGY9Ik1hdGgucG93Ij09by52YWx1ZSYmIk1hdGgucG93Ij09ZS52YWx1ZTtpZihpPnIpcy5wdXNoKGUpO2Vsc2V7Zm9yKDtyPj1pJiYhZnx8ZiYmaTxyOyl0PXMucG9wKCksbz1zW3MubGVuZ3RoLTFdLGEucHVzaCh0KSxyPW8ucHJlLGY9Ik1hdGgucG93Ij09ZS52YWx1ZSYmIk1hdGgucG93Ij09by52YWx1ZTtzLnB1c2goZSl9fXJldHVybiBuZXcgbihhKX0sZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwOTcpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdKz10O3JldHVybiBlfXZhciBhPVsic2luIiwiY29zIiwidGFuIiwicGkiLCIoIiwiKSIsIlAiLCJDIiwiYXNpbiIsImFjb3MiLCJhdGFuIiwiNyIsIjgiLCI5IiwiaW50IiwiY29zaCIsImFjb3NoIiwibG4iLCJeIiwicm9vdCIsIjQiLCI1IiwiNiIsIi8iLCIhIiwidGFuaCIsImF0YW5oIiwiTW9kIiwiMSIsIjIiLCIzIiwiKiIsInNpbmgiLCJhc2luaCIsImUiLCJsb2ciLCIwIiwiLiIsIisiLCItIiwiLCIsIlNpZ21hIiwibiIsIlBpIiwicG93Il0scz1bInNpbiIsImNvcyIsInRhbiIsIiZwaTsiLCIoIiwiKSIsIlAiLCJDIiwiYXNpbiIsImFjb3MiLCJhdGFuIiwiNyIsIjgiLCI5IiwiSW50IiwiY29zaCIsImFjb3NoIiwiIGxuIiwiXiIsInJvb3QiLCI0IiwiNSIsIjYiLCImZGl2aWRlOyIsIiEiLCJ0YW5oIiwiYXRhbmgiLCIgTW9kICIsIjEiLCIyIiwiMyIsIiZ0aW1lczsiLCJzaW5oIiwiYXNpbmgiLCJlIiwiIGxvZyIsIjAiLCIuIiwiKyIsIi0iLCIsIiwiJlNpZ21hOyIsIm4iLCImUGk7IiwicG93Il0sdT1bbi5tYXRoLnNpbixuLm1hdGguY29zLG4ubWF0aC50YW4sIlBJIiwiKCIsIikiLG4ubWF0aC5QLG4ubWF0aC5DLG4ubWF0aC5hc2luLG4ubWF0aC5hY29zLG4ubWF0aC5hdGFuLCI3IiwiOCIsIjkiLE1hdGguZmxvb3Isbi5tYXRoLmNvc2gsbi5tYXRoLmFjb3NoLE1hdGgubG9nLE1hdGgucG93LE1hdGguc3FydCwiNCIsIjUiLCI2IixuLm1hdGguZGl2LG4ubWF0aC5mYWN0LG4ubWF0aC50YW5oLG4ubWF0aC5hdGFuaCxuLm1hdGgubW9kLCIxIiwiMiIsIjMiLG4ubWF0aC5tdWwsbi5tYXRoLnNpbmgsbi5tYXRoLmFzaW5oLCJFIixuLm1hdGgubG9nLCIwIiwiLiIsbi5tYXRoLmFkZCxuLm1hdGguc3ViLCIsIixuLm1hdGguc2lnbWEsIm4iLG4ubWF0aC5QaSxNYXRoLnBvd10sYz17MDoxMSwxOjAsMjozLDM6MCw0OjAsNTowLDY6MCw3OjExLDg6MTEsOToxLDEwOjEwLDExOjAsMTI6MTEsMTM6MH0sZj1bMCwwLDAsMyw0LDUsMTAsMTAsMCwwLDAsMSwxLDEsMCwwLDAsMCwxMCwwLDEsMSwxLDIsNywwLDAsMiwxLDEsMSwyLDAsMCwzLDAsMSw2LDksOSwxMSwxMiwxMywxMiw4XSxsPXswOiEwLDE6ITAsMzohMCw0OiEwLDY6ITAsODohMCw5OiEwLDEyOiEwLDEzOiEwfSxoPXswOiEwLDE6ITAsMjohMCwzOiEwLDQ6ITAsNTohMCw2OiEwLDc6ITAsODohMCw5OiEwLDEwOiEwLDExOiEwLDEyOiEwLDEzOiEwfSxwPXswOiEwLDM6ITAsNDohMCw4OiEwLDEyOiEwLDEzOiEwfSxkPXt9LGc9ezA6ITAsMTohMCwzOiEwLDQ6ITAsNjohMCw4OiEwLDEyOiEwLDEzOiEwfSx2PXsxOiEwfSxtPVtbXSxbIjEiLCIyIiwiMyIsIjciLCI4IiwiOSIsIjQiLCI1IiwiNiIsIisiLCItIiwiKiIsIi8iLCIoIiwiKSIsIl4iLCIhIiwiUCIsIkMiLCJlIiwiMCIsIi4iLCIsIiwibiJdLFsicGkiLCJsbiIsIlBpIl0sWyJzaW4iLCJjb3MiLCJ0YW4iLCJEZWwiLCJpbnQiLCJNb2QiLCJsb2ciLCJwb3ciXSxbImFzaW4iLCJhY29zIiwiYXRhbiIsImNvc2giLCJyb290IiwidGFuaCIsInNpbmgiXSxbImFjb3NoIiwiYXRhbmgiLCJhc2luaCIsIlNpZ21hIl1dO2Z1bmN0aW9uIGIoZSx0LHIsbil7Zm9yKHZhciBpPTA7aTxuO2krKylpZihlW3IraV0hPT10W2ldKXJldHVybiExO3JldHVybiEwfW4uYWRkVG9rZW49ZnVuY3Rpb24oZSl7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7eD1lW2ldLnRva2VuLmxlbmd0aDt2YXIgdD0tMTtpZih4PG0ubGVuZ3RoKWZvcih5PTA7eTxtW3hdLmxlbmd0aDt5KyspaWYoZVtpXS50b2tlbj09PW1beF1beV0pe3Q9YS5pbmRleE9mKG1beF1beV0pO2JyZWFrfS0xPT09dD8oYS5wdXNoKGVbaV0udG9rZW4pLGYucHVzaChlW2ldLnR5cGUpLG0ubGVuZ3RoPD1lW2ldLnRva2VuLmxlbmd0aCYmKG1bZVtpXS50b2tlbi5sZW5ndGhdPVtdKSxtW2VbaV0udG9rZW4ubGVuZ3RoXS5wdXNoKGVbaV0udG9rZW4pLHUucHVzaChlW2ldLnZhbHVlKSxzLnB1c2goZVtpXS5zaG93KSk6KGFbdF09ZVtpXS50b2tlbixmW3RdPWVbaV0udHlwZSx1W3RdPWVbaV0udmFsdWUsc1t0XT1lW2ldLnNob3cpfX0sbi5sZXg9ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIHIsaSx5LF8sUz1be3R5cGU6NCx2YWx1ZToiKCIsc2hvdzoiKCIscHJlOjB9XSxFPVtdLHc9ZSxUPTAsQT1sLEM9MCx4PWQsST0iIjsidW5kZWZpbmVkIiE9PXR5cGVvZiB0JiZuLmFkZFRva2VuKHQpO3ZhciBrPXt9O2ZvcihpPTA7aTx3Lmxlbmd0aDtpKyspaWYoIiAiIT13W2ldKXtyPSIiO2U6Zm9yKHk9dy5sZW5ndGgtaT5tLmxlbmd0aC0yP20ubGVuZ3RoLTE6dy5sZW5ndGgtaTt5PjA7eS0tKWZvcihfPTA7XzxtW3ldLmxlbmd0aDtfKyspaWYoYih3LG1beV1bX10saSx5KSl7cj1tW3ldW19dO2JyZWFrIGV9aWYoaSs9ci5sZW5ndGgtMSwiIj09PXIpdGhyb3cgbmV3IG4uZXhjZXB0aW9uKCJDYW4ndCB1bmRlcnN0YW5kIGFmdGVyICIrdy5zbGljZShpKSk7dmFyIE89YS5pbmRleE9mKHIpLE49cixQPWZbT10sUj11W09dLEI9Y1tQXSxNPXNbT10sTD1TW1MubGVuZ3RoLTFdO2ZvcihEPUUubGVuZ3RoO0QtLTspaWYoMD09PUVbRF0mJi0xIT09WzAsMiwzLDUsOSwxMSwxMiwxM10uaW5kZXhPZihQKSl7aWYoITAhPT1BW1BdKXRocm93IG5ldyBuLmV4Y2VwdGlvbihyKyIgaXMgbm90IGFsbG93ZWQgYWZ0ZXIgIitJKTtTLnB1c2goe3ZhbHVlOiIpIix0eXBlOjUscHJlOjAsc2hvdzoiKSJ9KSxBPWgseD1nLG8oRSwtMSkucG9wKCl9aWYoITAhPT1BW1BdKXRocm93IG5ldyBuLmV4Y2VwdGlvbihyKyIgaXMgbm90IGFsbG93ZWQgYWZ0ZXIgIitJKTtpZighMD09PXhbUF0mJihQPTIsUj1uLm1hdGgubXVsLE09IiZ0aW1lczsiLEI9MyxpLT1yLmxlbmd0aCksaz17dmFsdWU6Uix0eXBlOlAscHJlOkIsc2hvdzpNfSwwPT09UClBPWwseD1kLG8oRSwyKS5wdXNoKDIpLFMucHVzaChrKSxTLnB1c2goe3ZhbHVlOiIoIix0eXBlOjQscHJlOjAsc2hvdzoiKCJ9KTtlbHNlIGlmKDE9PT1QKTE9PT1MLnR5cGU/KEwudmFsdWUrPVIsbyhFLDEpKTpTLnB1c2goayksQT1oLHg9cDtlbHNlIGlmKDI9PT1QKUE9bCx4PWQsbyhFLDIpLFMucHVzaChrKTtlbHNlIGlmKDM9PT1QKVMucHVzaChrKSxBPWgseD1nO2Vsc2UgaWYoND09PVApVCs9RS5sZW5ndGgsRT1bXSxDKyssQT1sLHg9ZCxTLnB1c2goayk7ZWxzZSBpZig1PT09UCl7aWYoIUMpdGhyb3cgbmV3IG4uZXhjZXB0aW9uKCJDbG9zaW5nIHBhcmVudGhlc2lzIGFyZSBtb3JlIHRoYW4gb3BlbmluZyBvbmUsIHdhaXQgV2hhdCEhISIpO2Zvcig7VC0tOylTLnB1c2goe3ZhbHVlOiIpIix0eXBlOjUscHJlOjAsc2hvdzoiKSJ9KTtUPTAsQy0tLEE9aCx4PWcsUy5wdXNoKGspfWVsc2UgaWYoNj09PVApe2lmKEwuaGFzRGVjKXRocm93IG5ldyBuLmV4Y2VwdGlvbigiVHdvIGRlY2ltYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBvbmUgbnVtYmVyIik7MSE9PUwudHlwZSYmKEw9e3ZhbHVlOjAsdHlwZToxLHByZTowfSxTLnB1c2goTCksbyhFLC0xKSksQT12LG8oRSwxKSx4PWQsTC52YWx1ZSs9UixMLmhhc0RlYz0hMH1lbHNlIDc9PT1QJiYoQT1oLHg9ZyxvKEUsMSksUy5wdXNoKGspKTs4PT09UD8oQT1sLHg9ZCxvKEUsNCkucHVzaCg0KSxTLnB1c2goayksUy5wdXNoKHt2YWx1ZToiKCIsdHlwZTo0LHByZTowLHNob3c6IigifSkpOjk9PT1QPyg5PT09TC50eXBlP0wudmFsdWU9PT1uLm1hdGguYWRkPyhMLnZhbHVlPVIsTC5zaG93PU0sbyhFLDEpKTpMLnZhbHVlPT09bi5tYXRoLnN1YiYmIi0iPT09TSYmKEwudmFsdWU9bi5tYXRoLmFkZCxMLnNob3c9IisiLG8oRSwxKSk6NSE9PUwudHlwZSYmNyE9PUwudHlwZSYmMSE9PUwudHlwZSYmMyE9PUwudHlwZSYmMTMhPT1MLnR5cGU/Ii0iPT09TiYmKEE9bCx4PWQsbyhFLDIpLnB1c2goMiksUy5wdXNoKHt2YWx1ZTpuLm1hdGguY2hhbmdlU2lnbix0eXBlOjAscHJlOjIxLHNob3c6Ii0ifSksUy5wdXNoKHt2YWx1ZToiKCIsdHlwZTo0LHByZTowLHNob3c6IigifSkpOihTLnB1c2goayksbyhFLDIpKSxBPWwseD1kKToxMD09PVA/KEE9bCx4PWQsbyhFLDIpLFMucHVzaChrKSk6MTE9PT1QPyhBPWwseD1kLFMucHVzaChrKSk6MTI9PT1QPyhBPWwseD1kLG8oRSw2KS5wdXNoKDYpLFMucHVzaChrKSxTLnB1c2goe3ZhbHVlOiIoIix0eXBlOjQscHJlOjB9KSk6MTM9PT1QJiYoQT1oLHg9ZyxTLnB1c2goaykpLG8oRSwtMSksST1yfWZvcih2YXIgRD1FLmxlbmd0aDtELS07KTA9PT1FW0RdJiYoUy5wdXNoKHt2YWx1ZToiKSIsc2hvdzoiKSIsdHlwZTo1LHByZTozfSksbyhFLC0xKS5wb3AoKSk7aWYoITAhPT1BWzVdKXRocm93IG5ldyBuLmV4Y2VwdGlvbigiY29tcGxldGUgdGhlIGV4cHJlc3Npb24iKTtmb3IoO0MtLTspUy5wdXNoKHt2YWx1ZToiKSIsc2hvdzoiKSIsdHlwZTo1LHByZTozfSk7cmV0dXJuIFMucHVzaCh7dHlwZTo1LHZhbHVlOiIpIixzaG93OiIpIixwcmU6MH0pLG5ldyBuKFMpfSxlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXt2YXIgcj1mdW5jdGlvbihlKXt0aGlzLnZhbHVlPWV9O3IubWF0aD17aXNEZWdyZWU6ITAsYWNvczpmdW5jdGlvbihlKXtyZXR1cm4gci5tYXRoLmlzRGVncmVlPzE4MC9NYXRoLlBJKk1hdGguYWNvcyhlKTpNYXRoLmFjb3MoZSl9LGFkZDpmdW5jdGlvbihlLHQpe3JldHVybiBlK3R9LGFzaW46ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZT8xODAvTWF0aC5QSSpNYXRoLmFzaW4oZSk6TWF0aC5hc2luKGUpfSxhdGFuOmZ1bmN0aW9uKGUpe3JldHVybiByLm1hdGguaXNEZWdyZWU/MTgwL01hdGguUEkqTWF0aC5hdGFuKGUpOk1hdGguYXRhbihlKX0sYWNvc2g6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUrTWF0aC5zcXJ0KGUqZS0xKSl9LGFzaW5oOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlK01hdGguc3FydChlKmUrMSkpfSxhdGFuaDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coKDErZSkvKDEtZSkpfSxDOmZ1bmN0aW9uKGUsdCl7dmFyIG49MSxpPWUtdCxvPXQ7bzxpJiYobz1pLGk9dCk7Zm9yKHZhciBhPW8rMTthPD1lO2ErKyluKj1hO3JldHVybiBuL3IubWF0aC5mYWN0KGkpfSxjaGFuZ2VTaWduOmZ1bmN0aW9uKGUpe3JldHVybi1lfSxjb3M6ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZSYmKGU9ci5tYXRoLnRvUmFkaWFuKGUpKSxNYXRoLmNvcyhlKX0sY29zaDpmdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5wb3coTWF0aC5FLGUpK01hdGgucG93KE1hdGguRSwtMSplKSkvMn0sZGl2OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUvdH0sZmFjdDpmdW5jdGlvbihlKXtpZihlJTEhPT0wKXJldHVybiJOQU4iO2Zvcih2YXIgdD0xLHI9MjtyPD1lO3IrKyl0Kj1yO3JldHVybiB0fSxpbnZlcnNlOmZ1bmN0aW9uKGUpe3JldHVybiAxL2V9LGxvZzpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5sb2coMTApfSxtb2Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSV0fSxtdWw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSp0fSxQOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTEsbj1NYXRoLmZsb29yKGUpLU1hdGguZmxvb3IodCkrMTtuPD1NYXRoLmZsb29yKGUpO24rKylyKj1uO3JldHVybiByfSxQaTpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTEsaT1lO2k8PXQ7aSsrKW4qPU51bWJlcihyLnBvc3RmaXhFdmFsKHtuOml9KSk7cmV0dXJuIG59LHBvdzEweDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTtlLS07KXQqPTEwO3JldHVybiB0fSxzaWdtYTpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTAsaT1lO2k8PXQ7aSsrKW4rPU51bWJlcihyLnBvc3RmaXhFdmFsKHtuOml9KSk7cmV0dXJuIG59LHNpbjpmdW5jdGlvbihlKXtyZXR1cm4gci5tYXRoLmlzRGVncmVlJiYoZT1yLm1hdGgudG9SYWRpYW4oZSkpLE1hdGguc2luKGUpfSxzaW5oOmZ1bmN0aW9uKGUpe3JldHVybihNYXRoLnBvdyhNYXRoLkUsZSktTWF0aC5wb3coTWF0aC5FLC0xKmUpKS8yfSxzdWI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSx0YW46ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZSYmKGU9ci5tYXRoLnRvUmFkaWFuKGUpKSxNYXRoLnRhbihlKX0sdGFuaDpmdW5jdGlvbihlKXtyZXR1cm4gci5zaW5oYShlKS9yLmNvc2hhKGUpfSx0b1JhZGlhbjpmdW5jdGlvbihlKXtyZXR1cm4gZSpNYXRoLlBJLzE4MH19LHIuZXhjZXB0aW9uPWZ1bmN0aW9uKGUpe3RoaXMubWVzc2FnZT1lfSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbih0KXsoZnVuY3Rpb24oKXt2YXIgcixuLGksbyxhLHM7InVuZGVmaW5lZCIhPT10eXBlb2YgcGVyZm9ybWFuY2UmJm51bGwhPT1wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX06InVuZGVmaW5lZCIhPT10eXBlb2YgdCYmbnVsbCE9PXQmJnQuaHJ0aW1lPyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4ocigpLWEpLzFlNn0sbj10LmhydGltZSxvPShyPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIDFlOSooZT1uKCkpWzBdK2VbMV19KSgpLHM9MWU5KnQudXB0aW1lKCksYT1vLXMpOkRhdGUubm93PyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKS1pfSxpPURhdGUubm93KCkpOihlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKS1pfSxpPShuZXcgRGF0ZSkuZ2V0VGltZSgpKX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscig0NikpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODApKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTIpLGk9cig0OTQpLG89cig0OTYpLGE9cigxNTIpLHM9cigyOTgpLHU9cigyOTMpLGM9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGY9cj9vOmksbD1lWzBdLmxlbmd0aCxoPWUubGVuZ3RoLHA9aCxkPUFycmF5KGgpLHk9MS8wLGc9W107cC0tOyl7dmFyIHY9ZVtwXTtwJiZ0JiYodj1hKHYscyh0KSkpLHk9Yyh2Lmxlbmd0aCx5KSxkW3BdPSFyJiYodHx8bD49MTIwJiZ2Lmxlbmd0aD49MTIwKT9uZXcgbihwJiZ2KTp2b2lkIDB9dj1lWzBdO3ZhciBtPS0xLGI9ZFswXTtlOmZvcig7KyttPGwmJmcubGVuZ3RoPHk7KXt2YXIgXz12W21dLFM9dD90KF8pOl87aWYoXz1yfHwwIT09Xz9fOjAsIShiP3UoYixTKTpmKGcsUyxyKSkpe2ZvcihwPWg7LS1wOyl7dmFyIEU9ZFtwXTtpZighKEU/dShFLFMpOmYoZVtwXSxTLHIpKSljb250aW51ZSBlfWImJmIucHVzaChTKSxnLnB1c2goXyl9fXJldHVybiBnfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTEwMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUpP2U6W119fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTcpLGk9cig3NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpJiZuKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXTtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXt0KGUsbixpKSYmci5wdXNoKGUpfSkscn19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7IWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXt2YXIgbj1PYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpOnt9O24uZ2V0fHxuLnNldD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4pOnRbcl09ZVtyXX10LmRlZmF1bHQ9ZX0ocigwKSk7dmFyIG49cyhyKDExMDUpKSxpPXMocigxMTA4KSksbz1zKHIoMSkpLGE9cyhyKDQ5NykpO3IoNDk5KTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiB1KCl7cmV0dXJuKHU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgYz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZ0JiZ0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4oMCxuLmRlZmF1bHQpKGUsdCl9KX0sZj1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZ0JiZ0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4oMCxpLmRlZmF1bHQpKGUsdCl9KX0sbD1mdW5jdGlvbihlKXt2YXIgdCxyO2Z1bmN0aW9uIG4oKXtmb3IodmFyIHQscj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3JldHVybih0PWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobikpfHx0aGlzKS5vbkVudGVyPWZ1bmN0aW9uKGUscil7dmFyIG49dC5nZXRDbGFzc05hbWVzKHI/ImFwcGVhciI6ImVudGVyIikuY2xhc3NOYW1lO3QucmVtb3ZlQ2xhc3NlcyhlLCJleGl0IiksYyhlLG4pLHQucHJvcHMub25FbnRlciYmdC5wcm9wcy5vbkVudGVyKGUscil9LHQub25FbnRlcmluZz1mdW5jdGlvbihlLHIpe3ZhciBuPXQuZ2V0Q2xhc3NOYW1lcyhyPyJhcHBlYXIiOiJlbnRlciIpLmFjdGl2ZUNsYXNzTmFtZTt0LnJlZmxvd0FuZEFkZENsYXNzKGUsbiksdC5wcm9wcy5vbkVudGVyaW5nJiZ0LnByb3BzLm9uRW50ZXJpbmcoZSxyKX0sdC5vbkVudGVyZWQ9ZnVuY3Rpb24oZSxyKXt2YXIgbj10LmdldENsYXNzTmFtZXMoImFwcGVhciIpLmRvbmVDbGFzc05hbWUsaT10LmdldENsYXNzTmFtZXMoImVudGVyIikuZG9uZUNsYXNzTmFtZSxvPXI/bisiICIraTppO3QucmVtb3ZlQ2xhc3NlcyhlLHI/ImFwcGVhciI6ImVudGVyIiksYyhlLG8pLHQucHJvcHMub25FbnRlcmVkJiZ0LnByb3BzLm9uRW50ZXJlZChlLHIpfSx0Lm9uRXhpdD1mdW5jdGlvbihlKXt2YXIgcj10LmdldENsYXNzTmFtZXMoImV4aXQiKS5jbGFzc05hbWU7dC5yZW1vdmVDbGFzc2VzKGUsImFwcGVhciIpLHQucmVtb3ZlQ2xhc3NlcyhlLCJlbnRlciIpLGMoZSxyKSx0LnByb3BzLm9uRXhpdCYmdC5wcm9wcy5vbkV4aXQoZSl9LHQub25FeGl0aW5nPWZ1bmN0aW9uKGUpe3ZhciByPXQuZ2V0Q2xhc3NOYW1lcygiZXhpdCIpLmFjdGl2ZUNsYXNzTmFtZTt0LnJlZmxvd0FuZEFkZENsYXNzKGUsciksdC5wcm9wcy5vbkV4aXRpbmcmJnQucHJvcHMub25FeGl0aW5nKGUpfSx0Lm9uRXhpdGVkPWZ1bmN0aW9uKGUpe3ZhciByPXQuZ2V0Q2xhc3NOYW1lcygiZXhpdCIpLmRvbmVDbGFzc05hbWU7dC5yZW1vdmVDbGFzc2VzKGUsImV4aXQiKSxjKGUsciksdC5wcm9wcy5vbkV4aXRlZCYmdC5wcm9wcy5vbkV4aXRlZChlKX0sdC5nZXRDbGFzc05hbWVzPWZ1bmN0aW9uKGUpe3ZhciByPXQucHJvcHMuY2xhc3NOYW1lcyxuPSJzdHJpbmciPT09dHlwZW9mIHIsaT1uPyhuJiZyP3IrIi0iOiIiKStlOnJbZV07cmV0dXJue2NsYXNzTmFtZTppLGFjdGl2ZUNsYXNzTmFtZTpuP2krIi1hY3RpdmUiOnJbZSsiQWN0aXZlIl0sZG9uZUNsYXNzTmFtZTpuP2krIi1kb25lIjpyW2UrIkRvbmUiXX19LHR9cj1lLCh0PW4pLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPXI7dmFyIGk9bi5wcm90b3R5cGU7cmV0dXJuIGkucmVtb3ZlQ2xhc3Nlcz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuZ2V0Q2xhc3NOYW1lcyh0KSxuPXIuY2xhc3NOYW1lLGk9ci5hY3RpdmVDbGFzc05hbWUsbz1yLmRvbmVDbGFzc05hbWU7biYmZihlLG4pLGkmJmYoZSxpKSxvJiZmKGUsbyl9LGkucmVmbG93QW5kQWRkQ2xhc3M9ZnVuY3Rpb24oZSx0KXt0JiYoZSYmZS5zY3JvbGxUb3AsYyhlLHQpKX0saS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT11KHt9LHRoaXMucHJvcHMpO3JldHVybiBkZWxldGUgZS5jbGFzc05hbWVzLG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGEuZGVmYXVsdCx1KHt9LGUse29uRW50ZXI6dGhpcy5vbkVudGVyLG9uRW50ZXJlZDp0aGlzLm9uRW50ZXJlZCxvbkVudGVyaW5nOnRoaXMub25FbnRlcmluZyxvbkV4aXQ6dGhpcy5vbkV4aXQsb25FeGl0aW5nOnRoaXMub25FeGl0aW5nLG9uRXhpdGVkOnRoaXMub25FeGl0ZWR9KSl9LG59KG8uZGVmYXVsdC5Db21wb25lbnQpO2wuZGVmYXVsdFByb3BzPXtjbGFzc05hbWVzOiIifSxsLnByb3BUeXBlcz17fTt2YXIgaD1sO3QuZGVmYXVsdD1oLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxMTA2KTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7ZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QuYWRkKHQpOigwLGkuZGVmYXVsdCkoZSx0KXx8KCJzdHJpbmciPT09dHlwZW9mIGUuY2xhc3NOYW1lP2UuY2xhc3NOYW1lPWUuY2xhc3NOYW1lKyIgIit0OmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZS5iYXNlVmFsfHwiIikrIiAiK3QpKX07dmFyIGk9bihyKDExMDcpKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbGFzc0xpc3Q/ISF0JiZlLmNsYXNzTGlzdC5jb250YWlucyh0KTotMSE9PSgiICIrKGUuY2xhc3NOYW1lLmJhc2VWYWx8fGUuY2xhc3NOYW1lKSsiICIpLmluZGV4T2YoIiAiK3QrIiAiKX0sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUucmVwbGFjZShuZXcgUmVnRXhwKCIoXnxcXHMpIit0KyIoPzpcXHN8JCkiLCJnIiksIiQxIikucmVwbGFjZSgvXHMrL2csIiAiKS5yZXBsYWNlKC9eXHMqfFxzKiQvZywiIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QucmVtb3ZlKHQpOiJzdHJpbmciPT09dHlwZW9mIGUuY2xhc3NOYW1lP2UuY2xhc3NOYW1lPW4oZS5jbGFzc05hbWUsdCk6ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZS5iYXNlVmFsfHwiIix0KSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO2EocigwKSk7dmFyIG49YShyKDEpKSxpPXIoMjAwKSxvPWEocig1MDApKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgcz1mdW5jdGlvbihlKXt2YXIgdCxyO2Z1bmN0aW9uIGEoKXtmb3IodmFyIHQscj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3JldHVybih0PWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobikpfHx0aGlzKS5oYW5kbGVFbnRlcj1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FbnRlciIsMCxyKX0sdC5oYW5kbGVFbnRlcmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FbnRlcmluZyIsMCxyKX0sdC5oYW5kbGVFbnRlcmVkPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIHQuaGFuZGxlTGlmZWN5Y2xlKCJvbkVudGVyZWQiLDAscil9LHQuaGFuZGxlRXhpdD1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FeGl0IiwxLHIpfSx0LmhhbmRsZUV4aXRpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5oYW5kbGVMaWZlY3ljbGUoIm9uRXhpdGluZyIsMSxyKX0sdC5oYW5kbGVFeGl0ZWQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5oYW5kbGVMaWZlY3ljbGUoIm9uRXhpdGVkIiwxLHIpfSx0fXI9ZSwodD1hKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1yO3ZhciBzPWEucHJvdG90eXBlO3JldHVybiBzLmhhbmRsZUxpZmVjeWNsZT1mdW5jdGlvbihlLHQscil7dmFyIG8sYT10aGlzLnByb3BzLmNoaWxkcmVuLHM9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkoYSlbdF07cy5wcm9wc1tlXSYmKG89cy5wcm9wcylbZV0uYXBwbHkobyxyKSx0aGlzLnByb3BzW2VdJiZ0aGlzLnByb3BzW2VdKCgwLGkuZmluZERPTU5vZGUpKHRoaXMpKX0scy5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ="
3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P: 2.7c767379.chunk.js_65: "base64:LnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09bihlKT9lLnNwbGl0KCIiKTpPYmplY3QoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NjcpLGk9cigyODUpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgzKSxpPXIoOTcyKSxvPXIoOTczKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcyx1PW4odCksYz1pKHUubGVuZ3RoKSxmPW8oYSxjKTtpZihlJiZyIT1yKXtmb3IoO2M+ZjspaWYoKHM9dVtmKytdKSE9cylyZXR1cm4hMH1lbHNlIGZvcig7Yz5mO2YrKylpZigoZXx8ZiBpbiB1KSYmdVtmXT09PXIpcmV0dXJuIGV8fGZ8fDA7cmV0dXJuIWUmJi0xfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1heCxvPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihlPW4oZSkpPDA/aShlK3QsMCk6byhlLHQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTg5KSxpPXIoOTc1KSxvPXIoMjg1KSxhPXIoNDY4KSgiSUVfUFJPVE8iKSxzPWZ1bmN0aW9uKCl7fSx1PWZ1bmN0aW9uKCl7dmFyIGUsdD1yKDQ1OSkoImlmcmFtZSIpLG49by5sZW5ndGg7Zm9yKHQuc3R5bGUuZGlzcGxheT0ibm9uZSIscig5NzcpLmFwcGVuZENoaWxkKHQpLHQuc3JjPSJqYXZhc2NyaXB0OiIsKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxlLmNsb3NlKCksdT1lLkY7bi0tOylkZWxldGUgdS5wcm90b3R5cGVbb1tuXV07cmV0dXJuIHUoKX07ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhzLnByb3RvdHlwZT1uKGUpLHI9bmV3IHMscy5wcm90b3R5cGU9bnVsbCxyW2FdPWUpOnI9dSgpLHZvaWQgMD09PXQ/cjppKHIsdCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyNzgpLGk9cigxODkpLG89cig5NzYpO2UuZXhwb3J0cz1yKDExNik/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtpKGUpO2Zvcih2YXIgcixhPW8odCkscz1hLmxlbmd0aCx1PTA7cz51OyluLmYoZSxyPWFbdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ2NyksaT1yKDI4NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE2KSxpPXIoMTkxKSxvPXIoNDY5KSxhPXIoOTc5KSxzPTEuLnRvRml4ZWQsdT1NYXRoLmZsb29yLGM9WzAsMCwwLDAsMCwwXSxmPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixsPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dDsrK3I8Njspbis9ZSpjW3JdLGNbcl09biUxZTcsbj11KG4vMWU3KX0saD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9NixyPTA7LS10Pj0wOylyKz1jW3RdLGNbdF09dShyL2UpLHI9ciVlKjFlN30scD1mdW5jdGlvbigpe2Zvcih2YXIgZT02LHQ9IiI7LS1lPj0wOylpZigiIiE9PXR8fDA9PT1lfHwwIT09Y1tlXSl7dmFyIHI9U3RyaW5nKGNbZV0pO3Q9IiI9PT10P3I6dCthLmNhbGwoIjAiLDctci5sZW5ndGgpK3J9cmV0dXJuIHR9LGQ9ZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIDA9PT1yP246ciUyPT09MT9lKHQsci0xLG4qdCk6ZSh0KnQsci8yLG4pfTtuKG4uUCtuLkYqKCEhcyYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCFyKDg0KShmdW5jdGlvbigpe3MuY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuLHMsdT1vKHRoaXMsZiksYz1pKGUpLHk9IiIsZz0iMCI7aWYoYzwwfHxjPjIwKXRocm93IFJhbmdlRXJyb3IoZik7aWYodSE9dSlyZXR1cm4iTmFOIjtpZih1PD0tMWUyMXx8dT49MWUyMSlyZXR1cm4gU3RyaW5nKHUpO2lmKHU8MCYmKHk9Ii0iLHU9LXUpLHU+MWUtMjEpaWYocj0odD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPWU7cj49NDA5NjspdCs9MTIsci89NDA5Njtmb3IoO3I+PTI7KXQrPTEsci89MjtyZXR1cm4gdH0odSpkKDIsNjksMSkpLTY5KTwwP3UqZCgyLC10LDEpOnUvZCgyLHQsMSkscio9NDUwMzU5OTYyNzM3MDQ5NiwodD01Mi10KT4wKXtmb3IobCgwLHIpLG49YztuPj03OylsKDFlNywwKSxuLT03O2ZvcihsKGQoMTAsbiwxKSwwKSxuPXQtMTtuPj0yMzspaCgxPDwyMyksbi09MjM7aCgxPDxuKSxsKDEsMSksaCgyKSxnPXAoKX1lbHNlIGwoMCxyKSxsKDE8PC10LDApLGc9cCgpK2EuY2FsbCgiMCIsYyk7cmV0dXJuIGc9Yz4wP3krKChzPWcubGVuZ3RoKTw9Yz8iMC4iK2EuY2FsbCgiMCIsYy1zKStnOmcuc2xpY2UoMCxzLWMpKyIuIitnLnNsaWNlKHMtYykpOnkrZ319KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE5MSksaT1yKDI4NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhpKHRoaXMpKSxyPSIiLG89bihlKTtpZihvPDB8fG89PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7bz4wOyhvPj4+PTEpJiYodCs9dCkpMSZvJiYocis9dCk7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTYpLGk9cig4NCksbz1yKDQ2OSksYT0xLi50b1ByZWNpc2lvbjtuKG4uUCtuLkYqKGkoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1hLmNhbGwoMSx2b2lkIDApfSl8fCFpKGZ1bmN0aW9uKCl7YS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB2b2lkIDA9PT1lP2EuY2FsbCh0KTphLmNhbGwodCxlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDczKS5pc0Zpbml0ZTtuKG4uUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZpKGUpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNik7bihuLlMsIk51bWJlciIse2lzSW50ZWdlcjpyKDQ3MCl9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtpc05hTjpmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cig0NzApLG89TWF0aC5hYnM7bihuLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJm8oZSk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUFYX1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDk4OSk7bihuLlMrbi5GKihOdW1iZXIucGFyc2VGbG9hdCE9aSksIk51bWJlciIse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MykucGFyc2VGbG9hdCxpPXIoMjg2KS50cmltO2UuZXhwb3J0cz0xL24ocigyODcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoOTkxKTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9aSksIk51bWJlciIse3BhcnNlSW50Oml9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLnBhcnNlSW50LGk9cigyODYpLnRyaW0sbz1yKDI4NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9T2JqZWN0LnByb3RvdHlwZSxvPWkuaGFzT3duUHJvcGVydHksYT1pLnRvU3RyaW5nLHM9bj9uLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9by5jYWxsKGUscykscj1lW3NdO3RyeXtlW3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh1KXt9dmFyIGk9YS5jYWxsKGUpO3JldHVybiBuJiYodD9lW3NdPXI6ZGVsZXRlIGVbc10pLGl9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTk1KTtmdW5jdGlvbiBpKCl7fWZ1bmN0aW9uIG8oKXt9by5yZXNldFdhcm5pbmdDYWNoZT1pLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsaSxvLGEpe2lmKGEhPT1uKXt2YXIgcz1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyBzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLHN9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgcj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6byxyZXNldFdhcm5pbmdDYWNoZTppfTtyZXR1cm4gci5Qcm9wVHlwZXM9cixyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDcyKSxpPXIoNDc0KSxvPXIoMTAyNSksYT1yKDEwMjgpLHM9cigxMDQyKSx1PXIoOSksYz1yKDQ3OCksZj1yKDQ3OSksbD0xLGg9IltvYmplY3QgQXJndW1lbnRzXSIscD0iW29iamVjdCBBcnJheV0iLGQ9IltvYmplY3QgT2JqZWN0XSIseT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixnLHYsbSl7dmFyIGI9dShlKSxfPXUodCksUz1iP3A6cyhlKSxFPV8/cDpzKHQpLHc9KFM9Uz09aD9kOlMpPT1kLFQ9KEU9RT09aD9kOkUpPT1kLEE9Uz09RTtpZihBJiZjKGUpKXtpZighYyh0KSlyZXR1cm4hMTtiPSEwLHc9ITF9aWYoQSYmIXcpcmV0dXJuIG18fChtPW5ldyBuKSxifHxmKGUpP2koZSx0LHIsZyx2LG0pOm8oZSx0LFMscixnLHYsbSk7aWYoIShyJmwpKXt2YXIgQz13JiZ5LmNhbGwoZSwiX193cmFwcGVkX18iKSx4PVQmJnkuY2FsbCh0LCJfX3dyYXBwZWRfXyIpO2lmKEN8fHgpe3ZhciBJPUM/ZS52YWx1ZSgpOmUsaz14P3QudmFsdWUoKTp0O3JldHVybiBtfHwobT1uZXcgbiksdihJLGsscixnLG0pfX1yZXR1cm4hIUEmJihtfHwobT1uZXcgbiksYShlLHQscixnLHYsbSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKSxpPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj1uKHQsZSk7cmV0dXJuIShyPDApJiYocj09dC5sZW5ndGgtMT90LnBvcCgpOmkuY2FsbCh0LHIsMSksLS10aGlzLnNpemUsITApfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPW4odCxlKTtyZXR1cm4gcjwwP3ZvaWQgMDp0W3JdWzFdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5fX2RhdGFfXyxlKT4tMX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Myk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxpPW4ocixlKTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW2UsdF0pKTpyW2ldWzFdPXQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgbix0aGlzLnNpemU9MH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj10LmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplPXQuc2l6ZSxyfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkyKSxpPXIoMjkwKSxvPXIoMjkxKSxhPTIwMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBuKXt2YXIgcz1yLl9fZGF0YV9fO2lmKCFpfHxzLmxlbmd0aDxhLTEpcmV0dXJuIHMucHVzaChbZSx0XSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBvKHMpfXJldHVybiByLnNldChlLHQpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMpLGk9cigxMDA4KSxvPXIoMzUpLGE9cig0NzMpLHM9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sdT1GdW5jdGlvbi5wcm90b3R5cGUsYz1PYmplY3QucHJvdG90eXBlLGY9dS50b1N0cmluZyxsPWMuaGFzT3duUHJvcGVydHksaD1SZWdFeHAoIl4iK2YuY2FsbChsKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghbyhlKXx8aShlKSkmJihuKGUpP2g6cykudGVzdChhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMDkpLGk9ZnVuY3Rpb24oKXt2YXIgZT0vW14uXSskLy5leGVjKG4mJm4ua2V5cyYmbi5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGU/IlN5bWJvbChzcmMpXzEuIitlOiIifSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hIWkmJmkgaW4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY0KVsiX19jb3JlLWpzX3NoYXJlZF9fIl07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDEyKSxpPXIoMTkyKSxvPXIoMjkwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBuLG1hcDpuZXcob3x8aSksc3RyaW5nOm5ldyBufX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMTMpLGk9cigxMDE0KSxvPXIoMTAxNSksYT1yKDEwMTYpLHM9cigxMDE3KTtmdW5jdGlvbiB1KGUpe3ZhciB0PS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgbj1lW3RdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXUucHJvdG90eXBlLmNsZWFyPW4sdS5wcm90b3R5cGUuZGVsZXRlPWksdS5wcm90b3R5cGUuZ2V0PW8sdS5wcm90b3R5cGUuaGFzPWEsdS5wcm90b3R5cGUuc2V0PXMsZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uP24obnVsbCk6e30sdGhpcy5zaXplPTB9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV07cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKG4pe3ZhciByPXRbZV07cmV0dXJuIHI9PT1pP3ZvaWQgMDpyfXJldHVybiBvLmNhbGwodCxlKT90W2VdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBuP3ZvaWQgMCE9PXRbZV06aS5jYWxsKHQsZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTQpLGk9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMoZSk/MDoxLHJbZV09biYmdm9pZCAwPT09dD9pOnQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKS5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiJzdHJpbmciPT10fHwibnVtYmVyIj09dHx8InN5bWJvbCI9PXR8fCJib29sZWFuIj09dD8iX19wcm90b19fIiE9PWU6bnVsbD09PWV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLGUpLmdldChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMsZSkuaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKHRoaXMsZSksaT1yLnNpemU7cmV0dXJuIHIuc2V0KGUsdCksdGhpcy5zaXplKz1yLnNpemU9PWk/MDoxLHRoaXN9fSxmdW5jdGlvbihlLHQpe3ZhciByPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsciksdGhpc319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1MSksaT1yKDEwMjYpLG89cigyODkpLGE9cig0NzQpLHM9cigxMDI3KSx1PXIoMjk0KSxjPTEsZj0yLGw9IltvYmplY3QgQm9vbGVhbl0iLGg9IltvYmplY3QgRGF0ZV0iLHA9IltvYmplY3QgRXJyb3JdIixkPSJbb2JqZWN0IE1hcF0iLHk9IltvYmplY3QgTnVtYmVyXSIsZz0iW29iamVjdCBSZWdFeHBdIix2PSJbb2JqZWN0IFNldF0iLG09IltvYmplY3QgU3RyaW5nXSIsYj0iW29iamVjdCBTeW1ib2xdIixfPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsUz0iW29iamVjdCBEYXRhVmlld10iLEU9bj9uLnByb3RvdHlwZTp2b2lkIDAsdz1FP0UudmFsdWVPZjp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sRSxULEEpe3N3aXRjaChyKXtjYXNlIFM6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fGUuYnl0ZU9mZnNldCE9dC5ieXRlT2Zmc2V0KXJldHVybiExO2U9ZS5idWZmZXIsdD10LmJ1ZmZlcjtjYXNlIF86cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IVQobmV3IGkoZSksbmV3IGkodCkpKTtjYXNlIGw6Y2FzZSBoOmNhc2UgeTpyZXR1cm4gbygrZSwrdCk7Y2FzZSBwOnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBnOmNhc2UgbTpyZXR1cm4gZT09dCsiIjtjYXNlIGQ6dmFyIEM9cztjYXNlIHY6dmFyIHg9biZjO2lmKEN8fChDPXUpLGUuc2l6ZSE9dC5zaXplJiYheClyZXR1cm4hMTt2YXIgST1BLmdldChlKTtpZihJKXJldHVybiBJPT10O258PWYsQS5zZXQoZSx0KTt2YXIgaz1hKEMoZSksQyh0KSxuLEUsVCxBKTtyZXR1cm4gQS5kZWxldGUoZSksaztjYXNlIGI6aWYodylyZXR1cm4gdy5jYWxsKGUpPT13LmNhbGwodCl9cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2NCkuVWludDhBcnJheTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9LTEscj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtyWysrdF09W24sZV19KSxyfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyOSksaT0xLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsYSxzLHUpe3ZhciBjPXImaSxmPW4oZSksbD1mLmxlbmd0aDtpZihsIT1uKHQpLmxlbmd0aCYmIWMpcmV0dXJuITE7Zm9yKHZhciBoPWw7aC0tOyl7dmFyIHA9ZltoXTtpZighKGM/cCBpbiB0Om8uY2FsbCh0LHApKSlyZXR1cm4hMX12YXIgZD11LmdldChlKTtpZihkJiZ1LmdldCh0KSlyZXR1cm4gZD09dDt2YXIgeT0hMDt1LnNldChlLHQpLHUuc2V0KHQsZSk7Zm9yKHZhciBnPWM7KytoPGw7KXt2YXIgdj1lW3A9ZltoXV0sbT10W3BdO2lmKGEpdmFyIGI9Yz9hKG0sdixwLHQsZSx1KTphKHYsbSxwLGUsdCx1KTtpZighKHZvaWQgMD09PWI/dj09PW18fHModixtLHIsYSx1KTpiKSl7eT0hMTticmVha31nfHwoZz0iY29uc3RydWN0b3IiPT1wKX1pZih5JiYhZyl7dmFyIF89ZS5jb25zdHJ1Y3RvcixTPXQuY29uc3RydWN0b3I7XyE9UyYmImNvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXyYmImZ1bmN0aW9uIj09dHlwZW9mIFMmJlMgaW5zdGFuY2VvZiBTKSYmKHk9ITEpfXJldHVybiB1LmRlbGV0ZShlKSx1LmRlbGV0ZSh0KSx5fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAzMCksaT1yKDEwMzEpLG89cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihlLG8saSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPXQoZSk7cmV0dXJuIGkoZSk/bzpuKG8scihlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzcpLGk9cigxMDMyKSxvPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHM9YT9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTooZT1PYmplY3QoZSksbihhKGUpLGZ1bmN0aW9uKHQpe3JldHVybiBvLmNhbGwoZSx0KX0pKX06aTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzQpLGk9cigyOTUpLG89cig5KSxhPXIoNDc4KSxzPXIoMjk2KSx1PXIoNDc5KSxjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9byhlKSxmPSFyJiZpKGUpLGw9IXImJiFmJiZhKGUpLGg9IXImJiFmJiYhbCYmdShlKSxwPXJ8fGZ8fGx8fGgsZD1wP24oZS5sZW5ndGgsU3RyaW5nKTpbXSx5PWQubGVuZ3RoO2Zvcih2YXIgZyBpbiBlKSF0JiYhYy5jYWxsKGUsZyl8fHAmJigibGVuZ3RoIj09Z3x8bCYmKCJvZmZzZXQiPT1nfHwicGFyZW50Ij09Zyl8fGgmJigiYnVmZmVyIj09Z3x8ImJ5dGVMZW5ndGgiPT1nfHwiYnl0ZU9mZnNldCI9PWcpfHxzKGcseSkpfHxkLnB1c2goZyk7cmV0dXJuIGR9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPUFycmF5KGUpOysrcjxlOyluW3JdPXQocik7cmV0dXJuIG59fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IEFyZ3VtZW50c10iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKSYmbihlKT09b319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDI5Nyksbz1yKDc0KSxhPXt9O2FbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWFbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWFbIltvYmplY3QgSW50OEFycmF5XSJdPWFbIltvYmplY3QgSW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IEludDMyQXJyYXldIl09YVsiW29iamVjdCBVaW50OEFycmF5XSJdPWFbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09YVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLGFbIltvYmplY3QgQXJndW1lbnRzXSJdPWFbIltvYmplY3QgQXJyYXldIl09YVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1hWyJbb2JqZWN0IEJvb2xlYW5dIl09YVsiW29iamVjdCBEYXRhVmlld10iXT1hWyJbb2JqZWN0IERhdGVdIl09YVsiW29iamVjdCBFcnJvcl0iXT1hWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWFbIltvYmplY3QgTWFwXSJdPWFbIltvYmplY3QgTnVtYmVyXSJdPWFbIltvYmplY3QgT2JqZWN0XSJdPWFbIltvYmplY3QgUmVnRXhwXSJdPWFbIltvYmplY3QgU2V0XSJdPWFbIltvYmplY3QgU3RyaW5nXSJdPWFbIltvYmplY3QgV2Vha01hcF0iXT0hMSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSkmJmkoZS5sZW5ndGgpJiYhIWFbbihlKV19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNDcxKSxpPXQmJiF0Lm5vZGVUeXBlJiZ0LG89aSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxhPW8mJm8uZXhwb3J0cz09PWkmJm4ucHJvY2VzcyxzPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW8mJm8ucmVxdWlyZSYmby5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIGV8fGEmJmEuYmluZGluZyYmYS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKTtlLmV4cG9ydHM9c30pLmNhbGwodGhpcyxyKDIxNSkoZSkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDQwKSxpPXIoMTA0MSksbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighbihlKSlyZXR1cm4gaShlKTt2YXIgdD1bXTtmb3IodmFyIHIgaW4gT2JqZWN0KGUpKW8uY2FsbChlLHIpJiYiY29uc3RydWN0b3IiIT1yJiZ0LnB1c2gocik7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuY29uc3RydWN0b3I7cmV0dXJuIGU9PT0oImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQucHJvdG90eXBlfHxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MCkoT2JqZWN0LmtleXMsT2JqZWN0KTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0MyksaT1yKDI5MCksbz1yKDEwNDQpLGE9cig0ODEpLHM9cigxMDQ1KSx1PXIoODUpLGM9cig0NzMpLGY9YyhuKSxsPWMoaSksaD1jKG8pLHA9YyhhKSxkPWMocykseT11OyhuJiYiW29iamVjdCBEYXRhVmlld10iIT15KG5ldyBuKG5ldyBBcnJheUJ1ZmZlcigxKSkpfHxpJiYiW29iamVjdCBNYXBdIiE9eShuZXcgaSl8fG8mJiJbb2JqZWN0IFByb21pc2VdIiE9eShvLnJlc29sdmUoKSl8fGEmJiJbb2JqZWN0IFNldF0iIT15KG5ldyBhKXx8cyYmIltvYmplY3QgV2Vha01hcF0iIT15KG5ldyBzKSkmJih5PWZ1bmN0aW9uKGUpe3ZhciB0PXUoZSkscj0iW29iamVjdCBPYmplY3RdIj09dD9lLmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/YyhyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGY6cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIjtjYXNlIGw6cmV0dXJuIltvYmplY3QgTWFwXSI7Y2FzZSBoOnJldHVybiJbb2JqZWN0IFByb21pc2VdIjtjYXNlIHA6cmV0dXJuIltvYmplY3QgU2V0XSI7Y2FzZSBkOnJldHVybiJbb2JqZWN0IFdlYWtNYXBdIn1yZXR1cm4gdH0pLGUuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJEYXRhVmlldyIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJQcm9taXNlIik7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIldlYWtNYXAiKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUxKSxpPXIoMjk1KSxvPXIoOSksYT1uP24uaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl8fGkoZSl8fCEhKGEmJmUmJmVbYV0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cigxMDY2KSxzPXIoMjk4KSx1PXIoMTA2NyksYz1yKDExOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgZj0tMTt0PW4odC5sZW5ndGg/dDpbY10scyhpKSk7dmFyIGw9byhlLGZ1bmN0aW9uKGUscixpKXtyZXR1cm57Y3JpdGVyaWE6bih0LGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSksaW5kZXg6KytmLHZhbHVlOmV9fSk7cmV0dXJuIGEobCxmdW5jdGlvbihlLHQpe3JldHVybiB1KGUsdCxyKX0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0OSksaT1yKDEwNTApLG89cig0ODQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pKGUpO3JldHVybiAxPT10Lmxlbmd0aCYmdFswXVsyXT9vKHRbMF1bMF0sdFswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1lfHxuKHIsZSx0KX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzIpLGk9cigyODgpLG89MSxhPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciB1PXIubGVuZ3RoLGM9dSxmPSFzO2lmKG51bGw9PWUpcmV0dXJuIWM7Zm9yKGU9T2JqZWN0KGUpO3UtLTspe3ZhciBsPXJbdV07aWYoZiYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrdTxjOyl7dmFyIGg9KGw9clt1XSlbMF0scD1lW2hdLGQ9bFsxXTtpZihmJiZsWzJdKXtpZih2b2lkIDA9PT1wJiYhKGggaW4gZSkpcmV0dXJuITF9ZWxzZXt2YXIgeT1uZXcgbjtpZihzKXZhciBnPXMocCxkLGgsZSx0LHkpO2lmKCEodm9pZCAwPT09Zz9pKGQscCxvfGEscyx5KTpnKSlyZXR1cm4hMX19cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODMpLGk9cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9aShlKSxyPXQubGVuZ3RoO3ItLTspe3ZhciBvPXRbcl0sYT1lW29dO3Rbcl09W28sYSxuKGEpXX1yZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4OCksaT1yKDEyMiksbz1yKDEwNTcpLGE9cigyOTkpLHM9cig0ODMpLHU9cig0ODQpLGM9cigxOTcpLGY9MSxsPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSkmJnModCk/dShjKGUpLHQpOmZ1bmN0aW9uKHIpe3ZhciBhPWkocixlKTtyZXR1cm4gdm9pZCAwPT09YSYmYT09PXQ/byhyLGUpOm4odCxhLGZ8bCl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1MyksaT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxvPS9cXChcXCk/L2csYT1uKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKCIiKSxlLnJlcGxhY2UoaSxmdW5jdGlvbihlLHIsbixpKXt0LnB1c2gobj9pLnJlcGxhY2UobywiJDEiKTpyfHxlKX0pLHR9KTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1NCksaT01MDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSxmdW5jdGlvbihlKXtyZXR1cm4gci5zaXplPT09aSYmci5jbGVhcigpLGV9KSxyPXQuY2FjaGU7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTEpLGk9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIG8oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZXx8bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihpKTt2YXIgcj1mdW5jdGlvbiByKCl7dmFyIG49YXJndW1lbnRzLGk9dD90LmFwcGx5KHRoaXMsbik6blswXSxvPXIuY2FjaGU7aWYoby5oYXMoaSkpcmV0dXJuIG8uZ2V0KGkpO3ZhciBhPWUuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1vLnNldChpLGEpfHxvLGF9O3JldHVybiByLmNhY2hlPW5ldyhvLkNhY2hlfHxuKSxyfW8uQ2FjaGU9bixlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOm4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9cigxNTIpLG89cig5KSxhPXIoMTE4KSxzPTEvMCx1PW4/bi5wcm90b3R5cGU6dm9pZCAwLGM9dT91LnRvU3RyaW5nOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobyh0KSlyZXR1cm4gaSh0LGUpKyIiO2lmKGEodCkpcmV0dXJuIGM/Yy5jYWxsKHQpOiIiO3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zPyItMCI6cn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNTgpLGk9cigxMDU5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmaShlLHQsbil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiZ0IGluIE9iamVjdChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDI5NSksbz1yKDkpLGE9cigyOTYpLHM9cigyOTcpLHU9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBjPS0xLGY9KHQ9bih0LGUpKS5sZW5ndGgsbD0hMTsrK2M8Zjspe3ZhciBoPXUodFtjXSk7aWYoIShsPW51bGwhPWUmJnIoZSxoKSkpYnJlYWs7ZT1lW2hdfXJldHVybiBsfHwrK2MhPWY/bDohIShmPW51bGw9PWU/MDplLmxlbmd0aCkmJnMoZikmJmEoaCxmKSYmKG8oZSl8fGkoZSkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MSksaT1yKDEwNjIpLG89cigyOTkpLGE9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKT9uKGEoZSkpOmkoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZSl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2NCkoKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtmb3IodmFyIGk9LTEsbz1PYmplY3QodCksYT1uKHQpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIHU9YVtlP3M6KytpXTtpZighMT09PXIob1t1XSx1LG8pKWJyZWFrfXJldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7aWYobnVsbD09cilyZXR1cm4gcjtpZighbihyKSlyZXR1cm4gZShyLGkpO2Zvcih2YXIgbz1yLmxlbmd0aCxhPXQ/bzotMSxzPU9iamVjdChyKTsodD9hLS06KythPG8pJiYhMSE9PWkoc1thXSxhLHMpOyk7cmV0dXJuIHJ9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aDtmb3IoZS5zb3J0KHQpO3ItLTspZVtyXT1lW3JdLnZhbHVlO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmNyaXRlcmlhLGE9dC5jcml0ZXJpYSxzPW8ubGVuZ3RoLHU9ci5sZW5ndGg7KytpPHM7KXt2YXIgYz1uKG9baV0sYVtpXSk7aWYoYylyZXR1cm4gaT49dT9jOmMqKCJkZXNjIj09cltpXT8tMToxKX1yZXR1cm4gZS5pbmRleC10LmluZGV4fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlIT09dCl7dmFyIHI9dm9pZCAwIT09ZSxpPW51bGw9PT1lLG89ZT09PWUsYT1uKGUpLHM9dm9pZCAwIT09dCx1PW51bGw9PT10LGM9dD09PXQsZj1uKHQpO2lmKCF1JiYhZiYmIWEmJmU+dHx8YSYmcyYmYyYmIXUmJiFmfHxpJiZzJiZjfHwhciYmY3x8IW8pcmV0dXJuIDE7aWYoIWkmJiFhJiYhZiYmZTx0fHxmJiZyJiZvJiYhaSYmIWF8fHUmJnImJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzApLGk9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdD1pKHZvaWQgMD09PXQ/ZS5sZW5ndGgtMTp0LDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cyxhPS0xLHM9aShvLmxlbmd0aC10LDApLHU9QXJyYXkocyk7KythPHM7KXVbYV09b1t0K2FdO2E9LTE7Zm9yKHZhciBjPUFycmF5KHQrMSk7KythPHQ7KWNbYV09b1thXTtyZXR1cm4gY1t0XT1yKHUpLG4oZSx0aGlzLGMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZS5jYWxsKHQpO2Nhc2UgMTpyZXR1cm4gZS5jYWxsKHQsclswXSk7Y2FzZSAyOnJldHVybiBlLmNhbGwodCxyWzBdLHJbMV0pO2Nhc2UgMzpyZXR1cm4gZS5jYWxsKHQsclswXSxyWzFdLHJbMl0pfXJldHVybiBlLmFwcGx5KHQscil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDcyKSxpPXIoMTA3NCkobik7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzMpLGk9cig0OTApLG89cigxMTkpLGE9aT9mdW5jdGlvbihlLHQpe3JldHVybiBpKGUsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bih0KSx3cml0YWJsZTohMH0pfTpvO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19fSxmdW5jdGlvbihlLHQpe3ZhciByPTgwMCxuPTE2LGk9RGF0ZS5ub3c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PTAsbz0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWkoKSxzPW4tKGEtbyk7aWYobz1hLHM+MCl7aWYoKyt0Pj1yKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSB0PTA7cmV0dXJuIGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oYShlKT9uOm8pKGUsaSh0LDMpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPXQuZ2V0VGlja1ZhbHVlcz10LmdldE5pY2VUaWNrVmFsdWVzPXZvaWQgMDt2YXIgbj1hKHIoNDkyKSksaT1yKDQ5Myksbz1hKHIoMTA3OSkpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKHUpe2k9ITAsbz11fWZpbmFsbHl7dHJ5e258fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gYyhlKXt2YXIgdD11KGUsMikscj10WzBdLG49dFsxXSxpPXIsbz1uO3JldHVybiByPm4mJihpPW4sbz1yKSxbaSxvXX1mdW5jdGlvbiBmKGUsdCxyKXtpZihlLmx0ZSgwKSlyZXR1cm4gbmV3IG4uZGVmYXVsdCgwKTt2YXIgaT1vLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlLnRvTnVtYmVyKCkpLGE9bmV3IG4uZGVmYXVsdCgxMCkucG93KGkpLHM9ZS5kaXYoYSksdT0xIT09aT8uMDU6LjEsYz1uZXcgbi5kZWZhdWx0KE1hdGguY2VpbChzLmRpdih1KS50b051bWJlcigpKSkuYWRkKHIpLm11bCh1KS5tdWwoYSk7cmV0dXJuIHQ/YzpuZXcgbi5kZWZhdWx0KE1hdGguY2VpbChjKSl9ZnVuY3Rpb24gbChlLHQscil7dmFyIGE9MSxzPW5ldyBuLmRlZmF1bHQoZSk7aWYoIXMuaXNpbnQoKSYmcil7dmFyIHU9TWF0aC5hYnMoZSk7dTwxPyhhPW5ldyBuLmRlZmF1bHQoMTApLnBvdyhvLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlKS0xKSxzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihzLmRpdihhKS50b051bWJlcigpKSkubXVsKGEpKTp1PjEmJihzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpfWVsc2UgMD09PWU/cz1uZXcgbi5kZWZhdWx0KE1hdGguZmxvb3IoKHQtMSkvMikpOnJ8fChzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpO3ZhciBjPU1hdGguZmxvb3IoKHQtMSkvMik7cmV0dXJuKDAsaS5jb21wb3NlKSgoMCxpLm1hcCkoZnVuY3Rpb24oZSl7cmV0dXJuIHMuYWRkKG5ldyBuLmRlZmF1bHQoZS1jKS5tdWwoYSkpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLHQpfXZhciBoPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxhPXRbMV0saD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixwPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sZD1NYXRoLm1heChoLDIpLHk9dShjKFtyLGFdKSwyKSxnPXlbMF0sdj15WzFdO2lmKGc9PT0tMS8wfHx2PT09MS8wKXt2YXIgbT12PT09MS8wP1tnXS5jb25jYXQocygoMCxpLnJhbmdlKSgwLGgtMSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIDEvMH0pKSk6cygoMCxpLnJhbg==" == "base64:LnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09bihlKT9lLnNwbGl0KCIiKTpPYmplY3QoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NjcpLGk9cigyODUpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgzKSxpPXIoOTcyKSxvPXIoOTczKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcyx1PW4odCksYz1pKHUubGVuZ3RoKSxmPW8oYSxjKTtpZihlJiZyIT1yKXtmb3IoO2M+ZjspaWYoKHM9dVtmKytdKSE9cylyZXR1cm4hMH1lbHNlIGZvcig7Yz5mO2YrKylpZigoZXx8ZiBpbiB1KSYmdVtmXT09PXIpcmV0dXJuIGV8fGZ8fDA7cmV0dXJuIWUmJi0xfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1heCxvPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihlPW4oZSkpPDA/aShlK3QsMCk6byhlLHQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTg5KSxpPXIoOTc1KSxvPXIoMjg1KSxhPXIoNDY4KSgiSUVfUFJPVE8iKSxzPWZ1bmN0aW9uKCl7fSx1PWZ1bmN0aW9uKCl7dmFyIGUsdD1yKDQ1OSkoImlmcmFtZSIpLG49by5sZW5ndGg7Zm9yKHQuc3R5bGUuZGlzcGxheT0ibm9uZSIscig5NzcpLmFwcGVuZENoaWxkKHQpLHQuc3JjPSJqYXZhc2NyaXB0OiIsKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxlLmNsb3NlKCksdT1lLkY7bi0tOylkZWxldGUgdS5wcm90b3R5cGVbb1tuXV07cmV0dXJuIHUoKX07ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhzLnByb3RvdHlwZT1uKGUpLHI9bmV3IHMscy5wcm90b3R5cGU9bnVsbCxyW2FdPWUpOnI9dSgpLHZvaWQgMD09PXQ/cjppKHIsdCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyNzgpLGk9cigxODkpLG89cig5NzYpO2UuZXhwb3J0cz1yKDExNik/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtpKGUpO2Zvcih2YXIgcixhPW8odCkscz1hLmxlbmd0aCx1PTA7cz51OyluLmYoZSxyPWFbdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ2NyksaT1yKDI4NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE2KSxpPXIoMTkxKSxvPXIoNDY5KSxhPXIoOTc5KSxzPTEuLnRvRml4ZWQsdT1NYXRoLmZsb29yLGM9WzAsMCwwLDAsMCwwXSxmPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixsPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dDsrK3I8Njspbis9ZSpjW3JdLGNbcl09biUxZTcsbj11KG4vMWU3KX0saD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9NixyPTA7LS10Pj0wOylyKz1jW3RdLGNbdF09dShyL2UpLHI9ciVlKjFlN30scD1mdW5jdGlvbigpe2Zvcih2YXIgZT02LHQ9IiI7LS1lPj0wOylpZigiIiE9PXR8fDA9PT1lfHwwIT09Y1tlXSl7dmFyIHI9U3RyaW5nKGNbZV0pO3Q9IiI9PT10P3I6dCthLmNhbGwoIjAiLDctci5sZW5ndGgpK3J9cmV0dXJuIHR9LGQ9ZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIDA9PT1yP246ciUyPT09MT9lKHQsci0xLG4qdCk6ZSh0KnQsci8yLG4pfTtuKG4uUCtuLkYqKCEhcyYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCFyKDg0KShmdW5jdGlvbigpe3MuY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuLHMsdT1vKHRoaXMsZiksYz1pKGUpLHk9IiIsZz0iMCI7aWYoYzwwfHxjPjIwKXRocm93IFJhbmdlRXJyb3IoZik7aWYodSE9dSlyZXR1cm4iTmFOIjtpZih1PD0tMWUyMXx8dT49MWUyMSlyZXR1cm4gU3RyaW5nKHUpO2lmKHU8MCYmKHk9Ii0iLHU9LXUpLHU+MWUtMjEpaWYocj0odD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPWU7cj49NDA5NjspdCs9MTIsci89NDA5Njtmb3IoO3I+PTI7KXQrPTEsci89MjtyZXR1cm4gdH0odSpkKDIsNjksMSkpLTY5KTwwP3UqZCgyLC10LDEpOnUvZCgyLHQsMSkscio9NDUwMzU5OTYyNzM3MDQ5NiwodD01Mi10KT4wKXtmb3IobCgwLHIpLG49YztuPj03OylsKDFlNywwKSxuLT03O2ZvcihsKGQoMTAsbiwxKSwwKSxuPXQtMTtuPj0yMzspaCgxPDwyMyksbi09MjM7aCgxPDxuKSxsKDEsMSksaCgyKSxnPXAoKX1lbHNlIGwoMCxyKSxsKDE8PC10LDApLGc9cCgpK2EuY2FsbCgiMCIsYyk7cmV0dXJuIGc9Yz4wP3krKChzPWcubGVuZ3RoKTw9Yz8iMC4iK2EuY2FsbCgiMCIsYy1zKStnOmcuc2xpY2UoMCxzLWMpKyIuIitnLnNsaWNlKHMtYykpOnkrZ319KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE5MSksaT1yKDI4NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhpKHRoaXMpKSxyPSIiLG89bihlKTtpZihvPDB8fG89PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7bz4wOyhvPj4+PTEpJiYodCs9dCkpMSZvJiYocis9dCk7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTYpLGk9cig4NCksbz1yKDQ2OSksYT0xLi50b1ByZWNpc2lvbjtuKG4uUCtuLkYqKGkoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1hLmNhbGwoMSx2b2lkIDApfSl8fCFpKGZ1bmN0aW9uKCl7YS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB2b2lkIDA9PT1lP2EuY2FsbCh0KTphLmNhbGwodCxlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDczKS5pc0Zpbml0ZTtuKG4uUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZpKGUpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNik7bihuLlMsIk51bWJlciIse2lzSW50ZWdlcjpyKDQ3MCl9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtpc05hTjpmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cig0NzApLG89TWF0aC5hYnM7bihuLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJm8oZSk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUFYX1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDk4OSk7bihuLlMrbi5GKihOdW1iZXIucGFyc2VGbG9hdCE9aSksIk51bWJlciIse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MykucGFyc2VGbG9hdCxpPXIoMjg2KS50cmltO2UuZXhwb3J0cz0xL24ocigyODcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoOTkxKTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9aSksIk51bWJlciIse3BhcnNlSW50Oml9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLnBhcnNlSW50LGk9cigyODYpLnRyaW0sbz1yKDI4NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9T2JqZWN0LnByb3RvdHlwZSxvPWkuaGFzT3duUHJvcGVydHksYT1pLnRvU3RyaW5nLHM9bj9uLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9by5jYWxsKGUscykscj1lW3NdO3RyeXtlW3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh1KXt9dmFyIGk9YS5jYWxsKGUpO3JldHVybiBuJiYodD9lW3NdPXI6ZGVsZXRlIGVbc10pLGl9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTk1KTtmdW5jdGlvbiBpKCl7fWZ1bmN0aW9uIG8oKXt9by5yZXNldFdhcm5pbmdDYWNoZT1pLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsaSxvLGEpe2lmKGEhPT1uKXt2YXIgcz1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyBzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLHN9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgcj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6byxyZXNldFdhcm5pbmdDYWNoZTppfTtyZXR1cm4gci5Qcm9wVHlwZXM9cixyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDcyKSxpPXIoNDc0KSxvPXIoMTAyNSksYT1yKDEwMjgpLHM9cigxMDQyKSx1PXIoOSksYz1yKDQ3OCksZj1yKDQ3OSksbD0xLGg9IltvYmplY3QgQXJndW1lbnRzXSIscD0iW29iamVjdCBBcnJheV0iLGQ9IltvYmplY3QgT2JqZWN0XSIseT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixnLHYsbSl7dmFyIGI9dShlKSxfPXUodCksUz1iP3A6cyhlKSxFPV8/cDpzKHQpLHc9KFM9Uz09aD9kOlMpPT1kLFQ9KEU9RT09aD9kOkUpPT1kLEE9Uz09RTtpZihBJiZjKGUpKXtpZighYyh0KSlyZXR1cm4hMTtiPSEwLHc9ITF9aWYoQSYmIXcpcmV0dXJuIG18fChtPW5ldyBuKSxifHxmKGUpP2koZSx0LHIsZyx2LG0pOm8oZSx0LFMscixnLHYsbSk7aWYoIShyJmwpKXt2YXIgQz13JiZ5LmNhbGwoZSwiX193cmFwcGVkX18iKSx4PVQmJnkuY2FsbCh0LCJfX3dyYXBwZWRfXyIpO2lmKEN8fHgpe3ZhciBJPUM/ZS52YWx1ZSgpOmUsaz14P3QudmFsdWUoKTp0O3JldHVybiBtfHwobT1uZXcgbiksdihJLGsscixnLG0pfX1yZXR1cm4hIUEmJihtfHwobT1uZXcgbiksYShlLHQscixnLHYsbSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKSxpPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj1uKHQsZSk7cmV0dXJuIShyPDApJiYocj09dC5sZW5ndGgtMT90LnBvcCgpOmkuY2FsbCh0LHIsMSksLS10aGlzLnNpemUsITApfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPW4odCxlKTtyZXR1cm4gcjwwP3ZvaWQgMDp0W3JdWzFdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5fX2RhdGFfXyxlKT4tMX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Myk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxpPW4ocixlKTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW2UsdF0pKTpyW2ldWzFdPXQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgbix0aGlzLnNpemU9MH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj10LmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplPXQuc2l6ZSxyfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkyKSxpPXIoMjkwKSxvPXIoMjkxKSxhPTIwMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBuKXt2YXIgcz1yLl9fZGF0YV9fO2lmKCFpfHxzLmxlbmd0aDxhLTEpcmV0dXJuIHMucHVzaChbZSx0XSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBvKHMpfXJldHVybiByLnNldChlLHQpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMpLGk9cigxMDA4KSxvPXIoMzUpLGE9cig0NzMpLHM9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sdT1GdW5jdGlvbi5wcm90b3R5cGUsYz1PYmplY3QucHJvdG90eXBlLGY9dS50b1N0cmluZyxsPWMuaGFzT3duUHJvcGVydHksaD1SZWdFeHAoIl4iK2YuY2FsbChsKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghbyhlKXx8aShlKSkmJihuKGUpP2g6cykudGVzdChhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMDkpLGk9ZnVuY3Rpb24oKXt2YXIgZT0vW14uXSskLy5leGVjKG4mJm4ua2V5cyYmbi5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGU/IlN5bWJvbChzcmMpXzEuIitlOiIifSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hIWkmJmkgaW4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY0KVsiX19jb3JlLWpzX3NoYXJlZF9fIl07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDEyKSxpPXIoMTkyKSxvPXIoMjkwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBuLG1hcDpuZXcob3x8aSksc3RyaW5nOm5ldyBufX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMTMpLGk9cigxMDE0KSxvPXIoMTAxNSksYT1yKDEwMTYpLHM9cigxMDE3KTtmdW5jdGlvbiB1KGUpe3ZhciB0PS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgbj1lW3RdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXUucHJvdG90eXBlLmNsZWFyPW4sdS5wcm90b3R5cGUuZGVsZXRlPWksdS5wcm90b3R5cGUuZ2V0PW8sdS5wcm90b3R5cGUuaGFzPWEsdS5wcm90b3R5cGUuc2V0PXMsZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uP24obnVsbCk6e30sdGhpcy5zaXplPTB9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV07cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKG4pe3ZhciByPXRbZV07cmV0dXJuIHI9PT1pP3ZvaWQgMDpyfXJldHVybiBvLmNhbGwodCxlKT90W2VdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBuP3ZvaWQgMCE9PXRbZV06aS5jYWxsKHQsZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTQpLGk9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMoZSk/MDoxLHJbZV09biYmdm9pZCAwPT09dD9pOnQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKS5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiJzdHJpbmciPT10fHwibnVtYmVyIj09dHx8InN5bWJvbCI9PXR8fCJib29sZWFuIj09dD8iX19wcm90b19fIiE9PWU6bnVsbD09PWV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLGUpLmdldChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMsZSkuaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKHRoaXMsZSksaT1yLnNpemU7cmV0dXJuIHIuc2V0KGUsdCksdGhpcy5zaXplKz1yLnNpemU9PWk/MDoxLHRoaXN9fSxmdW5jdGlvbihlLHQpe3ZhciByPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsciksdGhpc319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1MSksaT1yKDEwMjYpLG89cigyODkpLGE9cig0NzQpLHM9cigxMDI3KSx1PXIoMjk0KSxjPTEsZj0yLGw9IltvYmplY3QgQm9vbGVhbl0iLGg9IltvYmplY3QgRGF0ZV0iLHA9IltvYmplY3QgRXJyb3JdIixkPSJbb2JqZWN0IE1hcF0iLHk9IltvYmplY3QgTnVtYmVyXSIsZz0iW29iamVjdCBSZWdFeHBdIix2PSJbb2JqZWN0IFNldF0iLG09IltvYmplY3QgU3RyaW5nXSIsYj0iW29iamVjdCBTeW1ib2xdIixfPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsUz0iW29iamVjdCBEYXRhVmlld10iLEU9bj9uLnByb3RvdHlwZTp2b2lkIDAsdz1FP0UudmFsdWVPZjp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sRSxULEEpe3N3aXRjaChyKXtjYXNlIFM6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fGUuYnl0ZU9mZnNldCE9dC5ieXRlT2Zmc2V0KXJldHVybiExO2U9ZS5idWZmZXIsdD10LmJ1ZmZlcjtjYXNlIF86cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IVQobmV3IGkoZSksbmV3IGkodCkpKTtjYXNlIGw6Y2FzZSBoOmNhc2UgeTpyZXR1cm4gbygrZSwrdCk7Y2FzZSBwOnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBnOmNhc2UgbTpyZXR1cm4gZT09dCsiIjtjYXNlIGQ6dmFyIEM9cztjYXNlIHY6dmFyIHg9biZjO2lmKEN8fChDPXUpLGUuc2l6ZSE9dC5zaXplJiYheClyZXR1cm4hMTt2YXIgST1BLmdldChlKTtpZihJKXJldHVybiBJPT10O258PWYsQS5zZXQoZSx0KTt2YXIgaz1hKEMoZSksQyh0KSxuLEUsVCxBKTtyZXR1cm4gQS5kZWxldGUoZSksaztjYXNlIGI6aWYodylyZXR1cm4gdy5jYWxsKGUpPT13LmNhbGwodCl9cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2NCkuVWludDhBcnJheTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9LTEscj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtyWysrdF09W24sZV19KSxyfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyOSksaT0xLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsYSxzLHUpe3ZhciBjPXImaSxmPW4oZSksbD1mLmxlbmd0aDtpZihsIT1uKHQpLmxlbmd0aCYmIWMpcmV0dXJuITE7Zm9yKHZhciBoPWw7aC0tOyl7dmFyIHA9ZltoXTtpZighKGM/cCBpbiB0Om8uY2FsbCh0LHApKSlyZXR1cm4hMX12YXIgZD11LmdldChlKTtpZihkJiZ1LmdldCh0KSlyZXR1cm4gZD09dDt2YXIgeT0hMDt1LnNldChlLHQpLHUuc2V0KHQsZSk7Zm9yKHZhciBnPWM7KytoPGw7KXt2YXIgdj1lW3A9ZltoXV0sbT10W3BdO2lmKGEpdmFyIGI9Yz9hKG0sdixwLHQsZSx1KTphKHYsbSxwLGUsdCx1KTtpZighKHZvaWQgMD09PWI/dj09PW18fHModixtLHIsYSx1KTpiKSl7eT0hMTticmVha31nfHwoZz0iY29uc3RydWN0b3IiPT1wKX1pZih5JiYhZyl7dmFyIF89ZS5jb25zdHJ1Y3RvcixTPXQuY29uc3RydWN0b3I7XyE9UyYmImNvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXyYmImZ1bmN0aW9uIj09dHlwZW9mIFMmJlMgaW5zdGFuY2VvZiBTKSYmKHk9ITEpfXJldHVybiB1LmRlbGV0ZShlKSx1LmRlbGV0ZSh0KSx5fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAzMCksaT1yKDEwMzEpLG89cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihlLG8saSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPXQoZSk7cmV0dXJuIGkoZSk/bzpuKG8scihlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzcpLGk9cigxMDMyKSxvPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHM9YT9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTooZT1PYmplY3QoZSksbihhKGUpLGZ1bmN0aW9uKHQpe3JldHVybiBvLmNhbGwoZSx0KX0pKX06aTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzQpLGk9cigyOTUpLG89cig5KSxhPXIoNDc4KSxzPXIoMjk2KSx1PXIoNDc5KSxjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9byhlKSxmPSFyJiZpKGUpLGw9IXImJiFmJiZhKGUpLGg9IXImJiFmJiYhbCYmdShlKSxwPXJ8fGZ8fGx8fGgsZD1wP24oZS5sZW5ndGgsU3RyaW5nKTpbXSx5PWQubGVuZ3RoO2Zvcih2YXIgZyBpbiBlKSF0JiYhYy5jYWxsKGUsZyl8fHAmJigibGVuZ3RoIj09Z3x8bCYmKCJvZmZzZXQiPT1nfHwicGFyZW50Ij09Zyl8fGgmJigiYnVmZmVyIj09Z3x8ImJ5dGVMZW5ndGgiPT1nfHwiYnl0ZU9mZnNldCI9PWcpfHxzKGcseSkpfHxkLnB1c2goZyk7cmV0dXJuIGR9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPUFycmF5KGUpOysrcjxlOyluW3JdPXQocik7cmV0dXJuIG59fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IEFyZ3VtZW50c10iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKSYmbihlKT09b319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDI5Nyksbz1yKDc0KSxhPXt9O2FbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWFbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWFbIltvYmplY3QgSW50OEFycmF5XSJdPWFbIltvYmplY3QgSW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IEludDMyQXJyYXldIl09YVsiW29iamVjdCBVaW50OEFycmF5XSJdPWFbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09YVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLGFbIltvYmplY3QgQXJndW1lbnRzXSJdPWFbIltvYmplY3QgQXJyYXldIl09YVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1hWyJbb2JqZWN0IEJvb2xlYW5dIl09YVsiW29iamVjdCBEYXRhVmlld10iXT1hWyJbb2JqZWN0IERhdGVdIl09YVsiW29iamVjdCBFcnJvcl0iXT1hWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWFbIltvYmplY3QgTWFwXSJdPWFbIltvYmplY3QgTnVtYmVyXSJdPWFbIltvYmplY3QgT2JqZWN0XSJdPWFbIltvYmplY3QgUmVnRXhwXSJdPWFbIltvYmplY3QgU2V0XSJdPWFbIltvYmplY3QgU3RyaW5nXSJdPWFbIltvYmplY3QgV2Vha01hcF0iXT0hMSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSkmJmkoZS5sZW5ndGgpJiYhIWFbbihlKV19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNDcxKSxpPXQmJiF0Lm5vZGVUeXBlJiZ0LG89aSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxhPW8mJm8uZXhwb3J0cz09PWkmJm4ucHJvY2VzcyxzPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW8mJm8ucmVxdWlyZSYmby5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIGV8fGEmJmEuYmluZGluZyYmYS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKTtlLmV4cG9ydHM9c30pLmNhbGwodGhpcyxyKDIxNSkoZSkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDQwKSxpPXIoMTA0MSksbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighbihlKSlyZXR1cm4gaShlKTt2YXIgdD1bXTtmb3IodmFyIHIgaW4gT2JqZWN0KGUpKW8uY2FsbChlLHIpJiYiY29uc3RydWN0b3IiIT1yJiZ0LnB1c2gocik7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuY29uc3RydWN0b3I7cmV0dXJuIGU9PT0oImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQucHJvdG90eXBlfHxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MCkoT2JqZWN0LmtleXMsT2JqZWN0KTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0MyksaT1yKDI5MCksbz1yKDEwNDQpLGE9cig0ODEpLHM9cigxMDQ1KSx1PXIoODUpLGM9cig0NzMpLGY9YyhuKSxsPWMoaSksaD1jKG8pLHA9YyhhKSxkPWMocykseT11OyhuJiYiW29iamVjdCBEYXRhVmlld10iIT15KG5ldyBuKG5ldyBBcnJheUJ1ZmZlcigxKSkpfHxpJiYiW29iamVjdCBNYXBdIiE9eShuZXcgaSl8fG8mJiJbb2JqZWN0IFByb21pc2VdIiE9eShvLnJlc29sdmUoKSl8fGEmJiJbb2JqZWN0IFNldF0iIT15KG5ldyBhKXx8cyYmIltvYmplY3QgV2Vha01hcF0iIT15KG5ldyBzKSkmJih5PWZ1bmN0aW9uKGUpe3ZhciB0PXUoZSkscj0iW29iamVjdCBPYmplY3RdIj09dD9lLmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/YyhyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGY6cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIjtjYXNlIGw6cmV0dXJuIltvYmplY3QgTWFwXSI7Y2FzZSBoOnJldHVybiJbb2JqZWN0IFByb21pc2VdIjtjYXNlIHA6cmV0dXJuIltvYmplY3QgU2V0XSI7Y2FzZSBkOnJldHVybiJbb2JqZWN0IFdlYWtNYXBdIn1yZXR1cm4gdH0pLGUuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJEYXRhVmlldyIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJQcm9taXNlIik7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIldlYWtNYXAiKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUxKSxpPXIoMjk1KSxvPXIoOSksYT1uP24uaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl8fGkoZSl8fCEhKGEmJmUmJmVbYV0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cigxMDY2KSxzPXIoMjk4KSx1PXIoMTA2NyksYz1yKDExOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgZj0tMTt0PW4odC5sZW5ndGg/dDpbY10scyhpKSk7dmFyIGw9byhlLGZ1bmN0aW9uKGUscixpKXtyZXR1cm57Y3JpdGVyaWE6bih0LGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSksaW5kZXg6KytmLHZhbHVlOmV9fSk7cmV0dXJuIGEobCxmdW5jdGlvbihlLHQpe3JldHVybiB1KGUsdCxyKX0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0OSksaT1yKDEwNTApLG89cig0ODQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pKGUpO3JldHVybiAxPT10Lmxlbmd0aCYmdFswXVsyXT9vKHRbMF1bMF0sdFswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1lfHxuKHIsZSx0KX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzIpLGk9cigyODgpLG89MSxhPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciB1PXIubGVuZ3RoLGM9dSxmPSFzO2lmKG51bGw9PWUpcmV0dXJuIWM7Zm9yKGU9T2JqZWN0KGUpO3UtLTspe3ZhciBsPXJbdV07aWYoZiYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrdTxjOyl7dmFyIGg9KGw9clt1XSlbMF0scD1lW2hdLGQ9bFsxXTtpZihmJiZsWzJdKXtpZih2b2lkIDA9PT1wJiYhKGggaW4gZSkpcmV0dXJuITF9ZWxzZXt2YXIgeT1uZXcgbjtpZihzKXZhciBnPXMocCxkLGgsZSx0LHkpO2lmKCEodm9pZCAwPT09Zz9pKGQscCxvfGEscyx5KTpnKSlyZXR1cm4hMX19cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODMpLGk9cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9aShlKSxyPXQubGVuZ3RoO3ItLTspe3ZhciBvPXRbcl0sYT1lW29dO3Rbcl09W28sYSxuKGEpXX1yZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4OCksaT1yKDEyMiksbz1yKDEwNTcpLGE9cigyOTkpLHM9cig0ODMpLHU9cig0ODQpLGM9cigxOTcpLGY9MSxsPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSkmJnModCk/dShjKGUpLHQpOmZ1bmN0aW9uKHIpe3ZhciBhPWkocixlKTtyZXR1cm4gdm9pZCAwPT09YSYmYT09PXQ/byhyLGUpOm4odCxhLGZ8bCl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1MyksaT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxvPS9cXChcXCk/L2csYT1uKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKCIiKSxlLnJlcGxhY2UoaSxmdW5jdGlvbihlLHIsbixpKXt0LnB1c2gobj9pLnJlcGxhY2UobywiJDEiKTpyfHxlKX0pLHR9KTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1NCksaT01MDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSxmdW5jdGlvbihlKXtyZXR1cm4gci5zaXplPT09aSYmci5jbGVhcigpLGV9KSxyPXQuY2FjaGU7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTEpLGk9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIG8oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZXx8bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihpKTt2YXIgcj1mdW5jdGlvbiByKCl7dmFyIG49YXJndW1lbnRzLGk9dD90LmFwcGx5KHRoaXMsbik6blswXSxvPXIuY2FjaGU7aWYoby5oYXMoaSkpcmV0dXJuIG8uZ2V0KGkpO3ZhciBhPWUuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1vLnNldChpLGEpfHxvLGF9O3JldHVybiByLmNhY2hlPW5ldyhvLkNhY2hlfHxuKSxyfW8uQ2FjaGU9bixlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOm4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9cigxNTIpLG89cig5KSxhPXIoMTE4KSxzPTEvMCx1PW4/bi5wcm90b3R5cGU6dm9pZCAwLGM9dT91LnRvU3RyaW5nOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobyh0KSlyZXR1cm4gaSh0LGUpKyIiO2lmKGEodCkpcmV0dXJuIGM/Yy5jYWxsKHQpOiIiO3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zPyItMCI6cn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNTgpLGk9cigxMDU5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmaShlLHQsbil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiZ0IGluIE9iamVjdChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDI5NSksbz1yKDkpLGE9cigyOTYpLHM9cigyOTcpLHU9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBjPS0xLGY9KHQ9bih0LGUpKS5sZW5ndGgsbD0hMTsrK2M8Zjspe3ZhciBoPXUodFtjXSk7aWYoIShsPW51bGwhPWUmJnIoZSxoKSkpYnJlYWs7ZT1lW2hdfXJldHVybiBsfHwrK2MhPWY/bDohIShmPW51bGw9PWU/MDplLmxlbmd0aCkmJnMoZikmJmEoaCxmKSYmKG8oZSl8fGkoZSkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MSksaT1yKDEwNjIpLG89cigyOTkpLGE9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKT9uKGEoZSkpOmkoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZSl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2NCkoKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtmb3IodmFyIGk9LTEsbz1PYmplY3QodCksYT1uKHQpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIHU9YVtlP3M6KytpXTtpZighMT09PXIob1t1XSx1LG8pKWJyZWFrfXJldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7aWYobnVsbD09cilyZXR1cm4gcjtpZighbihyKSlyZXR1cm4gZShyLGkpO2Zvcih2YXIgbz1yLmxlbmd0aCxhPXQ/bzotMSxzPU9iamVjdChyKTsodD9hLS06KythPG8pJiYhMSE9PWkoc1thXSxhLHMpOyk7cmV0dXJuIHJ9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aDtmb3IoZS5zb3J0KHQpO3ItLTspZVtyXT1lW3JdLnZhbHVlO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmNyaXRlcmlhLGE9dC5jcml0ZXJpYSxzPW8ubGVuZ3RoLHU9ci5sZW5ndGg7KytpPHM7KXt2YXIgYz1uKG9baV0sYVtpXSk7aWYoYylyZXR1cm4gaT49dT9jOmMqKCJkZXNjIj09cltpXT8tMToxKX1yZXR1cm4gZS5pbmRleC10LmluZGV4fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlIT09dCl7dmFyIHI9dm9pZCAwIT09ZSxpPW51bGw9PT1lLG89ZT09PWUsYT1uKGUpLHM9dm9pZCAwIT09dCx1PW51bGw9PT10LGM9dD09PXQsZj1uKHQpO2lmKCF1JiYhZiYmIWEmJmU+dHx8YSYmcyYmYyYmIXUmJiFmfHxpJiZzJiZjfHwhciYmY3x8IW8pcmV0dXJuIDE7aWYoIWkmJiFhJiYhZiYmZTx0fHxmJiZyJiZvJiYhaSYmIWF8fHUmJnImJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzApLGk9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdD1pKHZvaWQgMD09PXQ/ZS5sZW5ndGgtMTp0LDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cyxhPS0xLHM9aShvLmxlbmd0aC10LDApLHU9QXJyYXkocyk7KythPHM7KXVbYV09b1t0K2FdO2E9LTE7Zm9yKHZhciBjPUFycmF5KHQrMSk7KythPHQ7KWNbYV09b1thXTtyZXR1cm4gY1t0XT1yKHUpLG4oZSx0aGlzLGMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZS5jYWxsKHQpO2Nhc2UgMTpyZXR1cm4gZS5jYWxsKHQsclswXSk7Y2FzZSAyOnJldHVybiBlLmNhbGwodCxyWzBdLHJbMV0pO2Nhc2UgMzpyZXR1cm4gZS5jYWxsKHQsclswXSxyWzFdLHJbMl0pfXJldHVybiBlLmFwcGx5KHQscil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDcyKSxpPXIoMTA3NCkobik7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzMpLGk9cig0OTApLG89cigxMTkpLGE9aT9mdW5jdGlvbihlLHQpe3JldHVybiBpKGUsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bih0KSx3cml0YWJsZTohMH0pfTpvO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19fSxmdW5jdGlvbihlLHQpe3ZhciByPTgwMCxuPTE2LGk9RGF0ZS5ub3c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PTAsbz0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWkoKSxzPW4tKGEtbyk7aWYobz1hLHM+MCl7aWYoKyt0Pj1yKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSB0PTA7cmV0dXJuIGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oYShlKT9uOm8pKGUsaSh0LDMpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPXQuZ2V0VGlja1ZhbHVlcz10LmdldE5pY2VUaWNrVmFsdWVzPXZvaWQgMDt2YXIgbj1hKHIoNDkyKSksaT1yKDQ5Myksbz1hKHIoMTA3OSkpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKHUpe2k9ITAsbz11fWZpbmFsbHl7dHJ5e258fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gYyhlKXt2YXIgdD11KGUsMikscj10WzBdLG49dFsxXSxpPXIsbz1uO3JldHVybiByPm4mJihpPW4sbz1yKSxbaSxvXX1mdW5jdGlvbiBmKGUsdCxyKXtpZihlLmx0ZSgwKSlyZXR1cm4gbmV3IG4uZGVmYXVsdCgwKTt2YXIgaT1vLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlLnRvTnVtYmVyKCkpLGE9bmV3IG4uZGVmYXVsdCgxMCkucG93KGkpLHM9ZS5kaXYoYSksdT0xIT09aT8uMDU6LjEsYz1uZXcgbi5kZWZhdWx0KE1hdGguY2VpbChzLmRpdih1KS50b051bWJlcigpKSkuYWRkKHIpLm11bCh1KS5tdWwoYSk7cmV0dXJuIHQ/YzpuZXcgbi5kZWZhdWx0KE1hdGguY2VpbChjKSl9ZnVuY3Rpb24gbChlLHQscil7dmFyIGE9MSxzPW5ldyBuLmRlZmF1bHQoZSk7aWYoIXMuaXNpbnQoKSYmcil7dmFyIHU9TWF0aC5hYnMoZSk7dTwxPyhhPW5ldyBuLmRlZmF1bHQoMTApLnBvdyhvLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlKS0xKSxzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihzLmRpdihhKS50b051bWJlcigpKSkubXVsKGEpKTp1PjEmJihzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpfWVsc2UgMD09PWU/cz1uZXcgbi5kZWZhdWx0KE1hdGguZmxvb3IoKHQtMSkvMikpOnJ8fChzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpO3ZhciBjPU1hdGguZmxvb3IoKHQtMSkvMik7cmV0dXJuKDAsaS5jb21wb3NlKSgoMCxpLm1hcCkoZnVuY3Rpb24oZSl7cmV0dXJuIHMuYWRkKG5ldyBuLmRlZmF1bHQoZS1jKS5tdWwoYSkpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLHQpfXZhciBoPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxhPXRbMV0saD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixwPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sZD1NYXRoLm1heChoLDIpLHk9dShjKFtyLGFdKSwyKSxnPXlbMF0sdj15WzFdO2lmKGc9PT0tMS8wfHx2PT09MS8wKXt2YXIgbT12PT09MS8wP1tnXS5jb25jYXQocygoMCxpLnJhbmdlKSgwLGgtMSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIDEvMH0pKSk6cygoMCxpLnJhbg=="

{ "type": 12, "id": "9NiYEfsXfDZFqwXi2xBj3PoGVzGsiSd2TJAxmfaCXGHs", "fee": 14200000, "feeAssetId": null, "timestamp": 1585480481259, "version": 1, "sender": "3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P", "senderPublicKey": "8cmrQLsXPmSBEvHmFoburXKroHxq9cUHKmJJAnVUZUdh", "proofs": [ "2eT9MUBjkgUJPwi4ieKnNkRjawBMT4GhKQ9kN8m4Wkm51XeerA35ScVNH2wL5xLLY1Xg3QnuhVVG9Dz7qmiiMmA4" ], "data": [ { "key": "2.7c767379.chunk.js_65", "type": "binary", "value": "base64:LnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09bihlKT9lLnNwbGl0KCIiKTpPYmplY3QoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NjcpLGk9cigyODUpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgzKSxpPXIoOTcyKSxvPXIoOTczKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcyx1PW4odCksYz1pKHUubGVuZ3RoKSxmPW8oYSxjKTtpZihlJiZyIT1yKXtmb3IoO2M+ZjspaWYoKHM9dVtmKytdKSE9cylyZXR1cm4hMH1lbHNlIGZvcig7Yz5mO2YrKylpZigoZXx8ZiBpbiB1KSYmdVtmXT09PXIpcmV0dXJuIGV8fGZ8fDA7cmV0dXJuIWUmJi0xfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1heCxvPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihlPW4oZSkpPDA/aShlK3QsMCk6byhlLHQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTg5KSxpPXIoOTc1KSxvPXIoMjg1KSxhPXIoNDY4KSgiSUVfUFJPVE8iKSxzPWZ1bmN0aW9uKCl7fSx1PWZ1bmN0aW9uKCl7dmFyIGUsdD1yKDQ1OSkoImlmcmFtZSIpLG49by5sZW5ndGg7Zm9yKHQuc3R5bGUuZGlzcGxheT0ibm9uZSIscig5NzcpLmFwcGVuZENoaWxkKHQpLHQuc3JjPSJqYXZhc2NyaXB0OiIsKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxlLmNsb3NlKCksdT1lLkY7bi0tOylkZWxldGUgdS5wcm90b3R5cGVbb1tuXV07cmV0dXJuIHUoKX07ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhzLnByb3RvdHlwZT1uKGUpLHI9bmV3IHMscy5wcm90b3R5cGU9bnVsbCxyW2FdPWUpOnI9dSgpLHZvaWQgMD09PXQ/cjppKHIsdCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyNzgpLGk9cigxODkpLG89cig5NzYpO2UuZXhwb3J0cz1yKDExNik/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtpKGUpO2Zvcih2YXIgcixhPW8odCkscz1hLmxlbmd0aCx1PTA7cz51OyluLmYoZSxyPWFbdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ2NyksaT1yKDI4NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE2KSxpPXIoMTkxKSxvPXIoNDY5KSxhPXIoOTc5KSxzPTEuLnRvRml4ZWQsdT1NYXRoLmZsb29yLGM9WzAsMCwwLDAsMCwwXSxmPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixsPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dDsrK3I8Njspbis9ZSpjW3JdLGNbcl09biUxZTcsbj11KG4vMWU3KX0saD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9NixyPTA7LS10Pj0wOylyKz1jW3RdLGNbdF09dShyL2UpLHI9ciVlKjFlN30scD1mdW5jdGlvbigpe2Zvcih2YXIgZT02LHQ9IiI7LS1lPj0wOylpZigiIiE9PXR8fDA9PT1lfHwwIT09Y1tlXSl7dmFyIHI9U3RyaW5nKGNbZV0pO3Q9IiI9PT10P3I6dCthLmNhbGwoIjAiLDctci5sZW5ndGgpK3J9cmV0dXJuIHR9LGQ9ZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIDA9PT1yP246ciUyPT09MT9lKHQsci0xLG4qdCk6ZSh0KnQsci8yLG4pfTtuKG4uUCtuLkYqKCEhcyYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCFyKDg0KShmdW5jdGlvbigpe3MuY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuLHMsdT1vKHRoaXMsZiksYz1pKGUpLHk9IiIsZz0iMCI7aWYoYzwwfHxjPjIwKXRocm93IFJhbmdlRXJyb3IoZik7aWYodSE9dSlyZXR1cm4iTmFOIjtpZih1PD0tMWUyMXx8dT49MWUyMSlyZXR1cm4gU3RyaW5nKHUpO2lmKHU8MCYmKHk9Ii0iLHU9LXUpLHU+MWUtMjEpaWYocj0odD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPWU7cj49NDA5NjspdCs9MTIsci89NDA5Njtmb3IoO3I+PTI7KXQrPTEsci89MjtyZXR1cm4gdH0odSpkKDIsNjksMSkpLTY5KTwwP3UqZCgyLC10LDEpOnUvZCgyLHQsMSkscio9NDUwMzU5OTYyNzM3MDQ5NiwodD01Mi10KT4wKXtmb3IobCgwLHIpLG49YztuPj03OylsKDFlNywwKSxuLT03O2ZvcihsKGQoMTAsbiwxKSwwKSxuPXQtMTtuPj0yMzspaCgxPDwyMyksbi09MjM7aCgxPDxuKSxsKDEsMSksaCgyKSxnPXAoKX1lbHNlIGwoMCxyKSxsKDE8PC10LDApLGc9cCgpK2EuY2FsbCgiMCIsYyk7cmV0dXJuIGc9Yz4wP3krKChzPWcubGVuZ3RoKTw9Yz8iMC4iK2EuY2FsbCgiMCIsYy1zKStnOmcuc2xpY2UoMCxzLWMpKyIuIitnLnNsaWNlKHMtYykpOnkrZ319KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE5MSksaT1yKDI4NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhpKHRoaXMpKSxyPSIiLG89bihlKTtpZihvPDB8fG89PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7bz4wOyhvPj4+PTEpJiYodCs9dCkpMSZvJiYocis9dCk7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTYpLGk9cig4NCksbz1yKDQ2OSksYT0xLi50b1ByZWNpc2lvbjtuKG4uUCtuLkYqKGkoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1hLmNhbGwoMSx2b2lkIDApfSl8fCFpKGZ1bmN0aW9uKCl7YS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB2b2lkIDA9PT1lP2EuY2FsbCh0KTphLmNhbGwodCxlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDczKS5pc0Zpbml0ZTtuKG4uUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZpKGUpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNik7bihuLlMsIk51bWJlciIse2lzSW50ZWdlcjpyKDQ3MCl9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtpc05hTjpmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cig0NzApLG89TWF0aC5hYnM7bihuLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJm8oZSk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUFYX1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDk4OSk7bihuLlMrbi5GKihOdW1iZXIucGFyc2VGbG9hdCE9aSksIk51bWJlciIse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MykucGFyc2VGbG9hdCxpPXIoMjg2KS50cmltO2UuZXhwb3J0cz0xL24ocigyODcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoOTkxKTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9aSksIk51bWJlciIse3BhcnNlSW50Oml9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLnBhcnNlSW50LGk9cigyODYpLnRyaW0sbz1yKDI4NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9T2JqZWN0LnByb3RvdHlwZSxvPWkuaGFzT3duUHJvcGVydHksYT1pLnRvU3RyaW5nLHM9bj9uLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9by5jYWxsKGUscykscj1lW3NdO3RyeXtlW3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh1KXt9dmFyIGk9YS5jYWxsKGUpO3JldHVybiBuJiYodD9lW3NdPXI6ZGVsZXRlIGVbc10pLGl9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTk1KTtmdW5jdGlvbiBpKCl7fWZ1bmN0aW9uIG8oKXt9by5yZXNldFdhcm5pbmdDYWNoZT1pLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsaSxvLGEpe2lmKGEhPT1uKXt2YXIgcz1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyBzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLHN9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgcj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6byxyZXNldFdhcm5pbmdDYWNoZTppfTtyZXR1cm4gci5Qcm9wVHlwZXM9cixyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDcyKSxpPXIoNDc0KSxvPXIoMTAyNSksYT1yKDEwMjgpLHM9cigxMDQyKSx1PXIoOSksYz1yKDQ3OCksZj1yKDQ3OSksbD0xLGg9IltvYmplY3QgQXJndW1lbnRzXSIscD0iW29iamVjdCBBcnJheV0iLGQ9IltvYmplY3QgT2JqZWN0XSIseT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixnLHYsbSl7dmFyIGI9dShlKSxfPXUodCksUz1iP3A6cyhlKSxFPV8/cDpzKHQpLHc9KFM9Uz09aD9kOlMpPT1kLFQ9KEU9RT09aD9kOkUpPT1kLEE9Uz09RTtpZihBJiZjKGUpKXtpZighYyh0KSlyZXR1cm4hMTtiPSEwLHc9ITF9aWYoQSYmIXcpcmV0dXJuIG18fChtPW5ldyBuKSxifHxmKGUpP2koZSx0LHIsZyx2LG0pOm8oZSx0LFMscixnLHYsbSk7aWYoIShyJmwpKXt2YXIgQz13JiZ5LmNhbGwoZSwiX193cmFwcGVkX18iKSx4PVQmJnkuY2FsbCh0LCJfX3dyYXBwZWRfXyIpO2lmKEN8fHgpe3ZhciBJPUM/ZS52YWx1ZSgpOmUsaz14P3QudmFsdWUoKTp0O3JldHVybiBtfHwobT1uZXcgbiksdihJLGsscixnLG0pfX1yZXR1cm4hIUEmJihtfHwobT1uZXcgbiksYShlLHQscixnLHYsbSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKSxpPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj1uKHQsZSk7cmV0dXJuIShyPDApJiYocj09dC5sZW5ndGgtMT90LnBvcCgpOmkuY2FsbCh0LHIsMSksLS10aGlzLnNpemUsITApfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPW4odCxlKTtyZXR1cm4gcjwwP3ZvaWQgMDp0W3JdWzFdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5fX2RhdGFfXyxlKT4tMX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Myk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxpPW4ocixlKTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW2UsdF0pKTpyW2ldWzFdPXQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgbix0aGlzLnNpemU9MH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj10LmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplPXQuc2l6ZSxyfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkyKSxpPXIoMjkwKSxvPXIoMjkxKSxhPTIwMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBuKXt2YXIgcz1yLl9fZGF0YV9fO2lmKCFpfHxzLmxlbmd0aDxhLTEpcmV0dXJuIHMucHVzaChbZSx0XSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBvKHMpfXJldHVybiByLnNldChlLHQpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMpLGk9cigxMDA4KSxvPXIoMzUpLGE9cig0NzMpLHM9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sdT1GdW5jdGlvbi5wcm90b3R5cGUsYz1PYmplY3QucHJvdG90eXBlLGY9dS50b1N0cmluZyxsPWMuaGFzT3duUHJvcGVydHksaD1SZWdFeHAoIl4iK2YuY2FsbChsKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghbyhlKXx8aShlKSkmJihuKGUpP2g6cykudGVzdChhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMDkpLGk9ZnVuY3Rpb24oKXt2YXIgZT0vW14uXSskLy5leGVjKG4mJm4ua2V5cyYmbi5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGU/IlN5bWJvbChzcmMpXzEuIitlOiIifSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hIWkmJmkgaW4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY0KVsiX19jb3JlLWpzX3NoYXJlZF9fIl07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDEyKSxpPXIoMTkyKSxvPXIoMjkwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBuLG1hcDpuZXcob3x8aSksc3RyaW5nOm5ldyBufX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMTMpLGk9cigxMDE0KSxvPXIoMTAxNSksYT1yKDEwMTYpLHM9cigxMDE3KTtmdW5jdGlvbiB1KGUpe3ZhciB0PS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgbj1lW3RdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXUucHJvdG90eXBlLmNsZWFyPW4sdS5wcm90b3R5cGUuZGVsZXRlPWksdS5wcm90b3R5cGUuZ2V0PW8sdS5wcm90b3R5cGUuaGFzPWEsdS5wcm90b3R5cGUuc2V0PXMsZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uP24obnVsbCk6e30sdGhpcy5zaXplPTB9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV07cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKG4pe3ZhciByPXRbZV07cmV0dXJuIHI9PT1pP3ZvaWQgMDpyfXJldHVybiBvLmNhbGwodCxlKT90W2VdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBuP3ZvaWQgMCE9PXRbZV06aS5jYWxsKHQsZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTQpLGk9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMoZSk/MDoxLHJbZV09biYmdm9pZCAwPT09dD9pOnQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKS5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiJzdHJpbmciPT10fHwibnVtYmVyIj09dHx8InN5bWJvbCI9PXR8fCJib29sZWFuIj09dD8iX19wcm90b19fIiE9PWU6bnVsbD09PWV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLGUpLmdldChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMsZSkuaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKHRoaXMsZSksaT1yLnNpemU7cmV0dXJuIHIuc2V0KGUsdCksdGhpcy5zaXplKz1yLnNpemU9PWk/MDoxLHRoaXN9fSxmdW5jdGlvbihlLHQpe3ZhciByPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsciksdGhpc319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1MSksaT1yKDEwMjYpLG89cigyODkpLGE9cig0NzQpLHM9cigxMDI3KSx1PXIoMjk0KSxjPTEsZj0yLGw9IltvYmplY3QgQm9vbGVhbl0iLGg9IltvYmplY3QgRGF0ZV0iLHA9IltvYmplY3QgRXJyb3JdIixkPSJbb2JqZWN0IE1hcF0iLHk9IltvYmplY3QgTnVtYmVyXSIsZz0iW29iamVjdCBSZWdFeHBdIix2PSJbb2JqZWN0IFNldF0iLG09IltvYmplY3QgU3RyaW5nXSIsYj0iW29iamVjdCBTeW1ib2xdIixfPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsUz0iW29iamVjdCBEYXRhVmlld10iLEU9bj9uLnByb3RvdHlwZTp2b2lkIDAsdz1FP0UudmFsdWVPZjp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sRSxULEEpe3N3aXRjaChyKXtjYXNlIFM6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fGUuYnl0ZU9mZnNldCE9dC5ieXRlT2Zmc2V0KXJldHVybiExO2U9ZS5idWZmZXIsdD10LmJ1ZmZlcjtjYXNlIF86cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IVQobmV3IGkoZSksbmV3IGkodCkpKTtjYXNlIGw6Y2FzZSBoOmNhc2UgeTpyZXR1cm4gbygrZSwrdCk7Y2FzZSBwOnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBnOmNhc2UgbTpyZXR1cm4gZT09dCsiIjtjYXNlIGQ6dmFyIEM9cztjYXNlIHY6dmFyIHg9biZjO2lmKEN8fChDPXUpLGUuc2l6ZSE9dC5zaXplJiYheClyZXR1cm4hMTt2YXIgST1BLmdldChlKTtpZihJKXJldHVybiBJPT10O258PWYsQS5zZXQoZSx0KTt2YXIgaz1hKEMoZSksQyh0KSxuLEUsVCxBKTtyZXR1cm4gQS5kZWxldGUoZSksaztjYXNlIGI6aWYodylyZXR1cm4gdy5jYWxsKGUpPT13LmNhbGwodCl9cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2NCkuVWludDhBcnJheTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9LTEscj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtyWysrdF09W24sZV19KSxyfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyOSksaT0xLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsYSxzLHUpe3ZhciBjPXImaSxmPW4oZSksbD1mLmxlbmd0aDtpZihsIT1uKHQpLmxlbmd0aCYmIWMpcmV0dXJuITE7Zm9yKHZhciBoPWw7aC0tOyl7dmFyIHA9ZltoXTtpZighKGM/cCBpbiB0Om8uY2FsbCh0LHApKSlyZXR1cm4hMX12YXIgZD11LmdldChlKTtpZihkJiZ1LmdldCh0KSlyZXR1cm4gZD09dDt2YXIgeT0hMDt1LnNldChlLHQpLHUuc2V0KHQsZSk7Zm9yKHZhciBnPWM7KytoPGw7KXt2YXIgdj1lW3A9ZltoXV0sbT10W3BdO2lmKGEpdmFyIGI9Yz9hKG0sdixwLHQsZSx1KTphKHYsbSxwLGUsdCx1KTtpZighKHZvaWQgMD09PWI/dj09PW18fHModixtLHIsYSx1KTpiKSl7eT0hMTticmVha31nfHwoZz0iY29uc3RydWN0b3IiPT1wKX1pZih5JiYhZyl7dmFyIF89ZS5jb25zdHJ1Y3RvcixTPXQuY29uc3RydWN0b3I7XyE9UyYmImNvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXyYmImZ1bmN0aW9uIj09dHlwZW9mIFMmJlMgaW5zdGFuY2VvZiBTKSYmKHk9ITEpfXJldHVybiB1LmRlbGV0ZShlKSx1LmRlbGV0ZSh0KSx5fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAzMCksaT1yKDEwMzEpLG89cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihlLG8saSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPXQoZSk7cmV0dXJuIGkoZSk/bzpuKG8scihlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzcpLGk9cigxMDMyKSxvPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHM9YT9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTooZT1PYmplY3QoZSksbihhKGUpLGZ1bmN0aW9uKHQpe3JldHVybiBvLmNhbGwoZSx0KX0pKX06aTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzQpLGk9cigyOTUpLG89cig5KSxhPXIoNDc4KSxzPXIoMjk2KSx1PXIoNDc5KSxjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9byhlKSxmPSFyJiZpKGUpLGw9IXImJiFmJiZhKGUpLGg9IXImJiFmJiYhbCYmdShlKSxwPXJ8fGZ8fGx8fGgsZD1wP24oZS5sZW5ndGgsU3RyaW5nKTpbXSx5PWQubGVuZ3RoO2Zvcih2YXIgZyBpbiBlKSF0JiYhYy5jYWxsKGUsZyl8fHAmJigibGVuZ3RoIj09Z3x8bCYmKCJvZmZzZXQiPT1nfHwicGFyZW50Ij09Zyl8fGgmJigiYnVmZmVyIj09Z3x8ImJ5dGVMZW5ndGgiPT1nfHwiYnl0ZU9mZnNldCI9PWcpfHxzKGcseSkpfHxkLnB1c2goZyk7cmV0dXJuIGR9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPUFycmF5KGUpOysrcjxlOyluW3JdPXQocik7cmV0dXJuIG59fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IEFyZ3VtZW50c10iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKSYmbihlKT09b319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDI5Nyksbz1yKDc0KSxhPXt9O2FbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWFbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWFbIltvYmplY3QgSW50OEFycmF5XSJdPWFbIltvYmplY3QgSW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IEludDMyQXJyYXldIl09YVsiW29iamVjdCBVaW50OEFycmF5XSJdPWFbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09YVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLGFbIltvYmplY3QgQXJndW1lbnRzXSJdPWFbIltvYmplY3QgQXJyYXldIl09YVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1hWyJbb2JqZWN0IEJvb2xlYW5dIl09YVsiW29iamVjdCBEYXRhVmlld10iXT1hWyJbb2JqZWN0IERhdGVdIl09YVsiW29iamVjdCBFcnJvcl0iXT1hWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWFbIltvYmplY3QgTWFwXSJdPWFbIltvYmplY3QgTnVtYmVyXSJdPWFbIltvYmplY3QgT2JqZWN0XSJdPWFbIltvYmplY3QgUmVnRXhwXSJdPWFbIltvYmplY3QgU2V0XSJdPWFbIltvYmplY3QgU3RyaW5nXSJdPWFbIltvYmplY3QgV2Vha01hcF0iXT0hMSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSkmJmkoZS5sZW5ndGgpJiYhIWFbbihlKV19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNDcxKSxpPXQmJiF0Lm5vZGVUeXBlJiZ0LG89aSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxhPW8mJm8uZXhwb3J0cz09PWkmJm4ucHJvY2VzcyxzPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW8mJm8ucmVxdWlyZSYmby5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIGV8fGEmJmEuYmluZGluZyYmYS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKTtlLmV4cG9ydHM9c30pLmNhbGwodGhpcyxyKDIxNSkoZSkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDQwKSxpPXIoMTA0MSksbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighbihlKSlyZXR1cm4gaShlKTt2YXIgdD1bXTtmb3IodmFyIHIgaW4gT2JqZWN0KGUpKW8uY2FsbChlLHIpJiYiY29uc3RydWN0b3IiIT1yJiZ0LnB1c2gocik7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuY29uc3RydWN0b3I7cmV0dXJuIGU9PT0oImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQucHJvdG90eXBlfHxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MCkoT2JqZWN0LmtleXMsT2JqZWN0KTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0MyksaT1yKDI5MCksbz1yKDEwNDQpLGE9cig0ODEpLHM9cigxMDQ1KSx1PXIoODUpLGM9cig0NzMpLGY9YyhuKSxsPWMoaSksaD1jKG8pLHA9YyhhKSxkPWMocykseT11OyhuJiYiW29iamVjdCBEYXRhVmlld10iIT15KG5ldyBuKG5ldyBBcnJheUJ1ZmZlcigxKSkpfHxpJiYiW29iamVjdCBNYXBdIiE9eShuZXcgaSl8fG8mJiJbb2JqZWN0IFByb21pc2VdIiE9eShvLnJlc29sdmUoKSl8fGEmJiJbb2JqZWN0IFNldF0iIT15KG5ldyBhKXx8cyYmIltvYmplY3QgV2Vha01hcF0iIT15KG5ldyBzKSkmJih5PWZ1bmN0aW9uKGUpe3ZhciB0PXUoZSkscj0iW29iamVjdCBPYmplY3RdIj09dD9lLmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/YyhyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGY6cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIjtjYXNlIGw6cmV0dXJuIltvYmplY3QgTWFwXSI7Y2FzZSBoOnJldHVybiJbb2JqZWN0IFByb21pc2VdIjtjYXNlIHA6cmV0dXJuIltvYmplY3QgU2V0XSI7Y2FzZSBkOnJldHVybiJbb2JqZWN0IFdlYWtNYXBdIn1yZXR1cm4gdH0pLGUuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJEYXRhVmlldyIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJQcm9taXNlIik7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIldlYWtNYXAiKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUxKSxpPXIoMjk1KSxvPXIoOSksYT1uP24uaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl8fGkoZSl8fCEhKGEmJmUmJmVbYV0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cigxMDY2KSxzPXIoMjk4KSx1PXIoMTA2NyksYz1yKDExOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgZj0tMTt0PW4odC5sZW5ndGg/dDpbY10scyhpKSk7dmFyIGw9byhlLGZ1bmN0aW9uKGUscixpKXtyZXR1cm57Y3JpdGVyaWE6bih0LGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSksaW5kZXg6KytmLHZhbHVlOmV9fSk7cmV0dXJuIGEobCxmdW5jdGlvbihlLHQpe3JldHVybiB1KGUsdCxyKX0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0OSksaT1yKDEwNTApLG89cig0ODQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pKGUpO3JldHVybiAxPT10Lmxlbmd0aCYmdFswXVsyXT9vKHRbMF1bMF0sdFswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1lfHxuKHIsZSx0KX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzIpLGk9cigyODgpLG89MSxhPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciB1PXIubGVuZ3RoLGM9dSxmPSFzO2lmKG51bGw9PWUpcmV0dXJuIWM7Zm9yKGU9T2JqZWN0KGUpO3UtLTspe3ZhciBsPXJbdV07aWYoZiYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrdTxjOyl7dmFyIGg9KGw9clt1XSlbMF0scD1lW2hdLGQ9bFsxXTtpZihmJiZsWzJdKXtpZih2b2lkIDA9PT1wJiYhKGggaW4gZSkpcmV0dXJuITF9ZWxzZXt2YXIgeT1uZXcgbjtpZihzKXZhciBnPXMocCxkLGgsZSx0LHkpO2lmKCEodm9pZCAwPT09Zz9pKGQscCxvfGEscyx5KTpnKSlyZXR1cm4hMX19cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODMpLGk9cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9aShlKSxyPXQubGVuZ3RoO3ItLTspe3ZhciBvPXRbcl0sYT1lW29dO3Rbcl09W28sYSxuKGEpXX1yZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4OCksaT1yKDEyMiksbz1yKDEwNTcpLGE9cigyOTkpLHM9cig0ODMpLHU9cig0ODQpLGM9cigxOTcpLGY9MSxsPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSkmJnModCk/dShjKGUpLHQpOmZ1bmN0aW9uKHIpe3ZhciBhPWkocixlKTtyZXR1cm4gdm9pZCAwPT09YSYmYT09PXQ/byhyLGUpOm4odCxhLGZ8bCl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1MyksaT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxvPS9cXChcXCk/L2csYT1uKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKCIiKSxlLnJlcGxhY2UoaSxmdW5jdGlvbihlLHIsbixpKXt0LnB1c2gobj9pLnJlcGxhY2UobywiJDEiKTpyfHxlKX0pLHR9KTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1NCksaT01MDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSxmdW5jdGlvbihlKXtyZXR1cm4gci5zaXplPT09aSYmci5jbGVhcigpLGV9KSxyPXQuY2FjaGU7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTEpLGk9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIG8oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZXx8bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihpKTt2YXIgcj1mdW5jdGlvbiByKCl7dmFyIG49YXJndW1lbnRzLGk9dD90LmFwcGx5KHRoaXMsbik6blswXSxvPXIuY2FjaGU7aWYoby5oYXMoaSkpcmV0dXJuIG8uZ2V0KGkpO3ZhciBhPWUuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1vLnNldChpLGEpfHxvLGF9O3JldHVybiByLmNhY2hlPW5ldyhvLkNhY2hlfHxuKSxyfW8uQ2FjaGU9bixlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOm4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9cigxNTIpLG89cig5KSxhPXIoMTE4KSxzPTEvMCx1PW4/bi5wcm90b3R5cGU6dm9pZCAwLGM9dT91LnRvU3RyaW5nOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobyh0KSlyZXR1cm4gaSh0LGUpKyIiO2lmKGEodCkpcmV0dXJuIGM/Yy5jYWxsKHQpOiIiO3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zPyItMCI6cn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNTgpLGk9cigxMDU5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmaShlLHQsbil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiZ0IGluIE9iamVjdChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDI5NSksbz1yKDkpLGE9cigyOTYpLHM9cigyOTcpLHU9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBjPS0xLGY9KHQ9bih0LGUpKS5sZW5ndGgsbD0hMTsrK2M8Zjspe3ZhciBoPXUodFtjXSk7aWYoIShsPW51bGwhPWUmJnIoZSxoKSkpYnJlYWs7ZT1lW2hdfXJldHVybiBsfHwrK2MhPWY/bDohIShmPW51bGw9PWU/MDplLmxlbmd0aCkmJnMoZikmJmEoaCxmKSYmKG8oZSl8fGkoZSkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MSksaT1yKDEwNjIpLG89cigyOTkpLGE9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKT9uKGEoZSkpOmkoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZSl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2NCkoKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtmb3IodmFyIGk9LTEsbz1PYmplY3QodCksYT1uKHQpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIHU9YVtlP3M6KytpXTtpZighMT09PXIob1t1XSx1LG8pKWJyZWFrfXJldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7aWYobnVsbD09cilyZXR1cm4gcjtpZighbihyKSlyZXR1cm4gZShyLGkpO2Zvcih2YXIgbz1yLmxlbmd0aCxhPXQ/bzotMSxzPU9iamVjdChyKTsodD9hLS06KythPG8pJiYhMSE9PWkoc1thXSxhLHMpOyk7cmV0dXJuIHJ9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aDtmb3IoZS5zb3J0KHQpO3ItLTspZVtyXT1lW3JdLnZhbHVlO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmNyaXRlcmlhLGE9dC5jcml0ZXJpYSxzPW8ubGVuZ3RoLHU9ci5sZW5ndGg7KytpPHM7KXt2YXIgYz1uKG9baV0sYVtpXSk7aWYoYylyZXR1cm4gaT49dT9jOmMqKCJkZXNjIj09cltpXT8tMToxKX1yZXR1cm4gZS5pbmRleC10LmluZGV4fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlIT09dCl7dmFyIHI9dm9pZCAwIT09ZSxpPW51bGw9PT1lLG89ZT09PWUsYT1uKGUpLHM9dm9pZCAwIT09dCx1PW51bGw9PT10LGM9dD09PXQsZj1uKHQpO2lmKCF1JiYhZiYmIWEmJmU+dHx8YSYmcyYmYyYmIXUmJiFmfHxpJiZzJiZjfHwhciYmY3x8IW8pcmV0dXJuIDE7aWYoIWkmJiFhJiYhZiYmZTx0fHxmJiZyJiZvJiYhaSYmIWF8fHUmJnImJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzApLGk9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdD1pKHZvaWQgMD09PXQ/ZS5sZW5ndGgtMTp0LDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cyxhPS0xLHM9aShvLmxlbmd0aC10LDApLHU9QXJyYXkocyk7KythPHM7KXVbYV09b1t0K2FdO2E9LTE7Zm9yKHZhciBjPUFycmF5KHQrMSk7KythPHQ7KWNbYV09b1thXTtyZXR1cm4gY1t0XT1yKHUpLG4oZSx0aGlzLGMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZS5jYWxsKHQpO2Nhc2UgMTpyZXR1cm4gZS5jYWxsKHQsclswXSk7Y2FzZSAyOnJldHVybiBlLmNhbGwodCxyWzBdLHJbMV0pO2Nhc2UgMzpyZXR1cm4gZS5jYWxsKHQsclswXSxyWzFdLHJbMl0pfXJldHVybiBlLmFwcGx5KHQscil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDcyKSxpPXIoMTA3NCkobik7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzMpLGk9cig0OTApLG89cigxMTkpLGE9aT9mdW5jdGlvbihlLHQpe3JldHVybiBpKGUsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bih0KSx3cml0YWJsZTohMH0pfTpvO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19fSxmdW5jdGlvbihlLHQpe3ZhciByPTgwMCxuPTE2LGk9RGF0ZS5ub3c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PTAsbz0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWkoKSxzPW4tKGEtbyk7aWYobz1hLHM+MCl7aWYoKyt0Pj1yKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSB0PTA7cmV0dXJuIGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oYShlKT9uOm8pKGUsaSh0LDMpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPXQuZ2V0VGlja1ZhbHVlcz10LmdldE5pY2VUaWNrVmFsdWVzPXZvaWQgMDt2YXIgbj1hKHIoNDkyKSksaT1yKDQ5Myksbz1hKHIoMTA3OSkpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKHUpe2k9ITAsbz11fWZpbmFsbHl7dHJ5e258fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gYyhlKXt2YXIgdD11KGUsMikscj10WzBdLG49dFsxXSxpPXIsbz1uO3JldHVybiByPm4mJihpPW4sbz1yKSxbaSxvXX1mdW5jdGlvbiBmKGUsdCxyKXtpZihlLmx0ZSgwKSlyZXR1cm4gbmV3IG4uZGVmYXVsdCgwKTt2YXIgaT1vLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlLnRvTnVtYmVyKCkpLGE9bmV3IG4uZGVmYXVsdCgxMCkucG93KGkpLHM9ZS5kaXYoYSksdT0xIT09aT8uMDU6LjEsYz1uZXcgbi5kZWZhdWx0KE1hdGguY2VpbChzLmRpdih1KS50b051bWJlcigpKSkuYWRkKHIpLm11bCh1KS5tdWwoYSk7cmV0dXJuIHQ/YzpuZXcgbi5kZWZhdWx0KE1hdGguY2VpbChjKSl9ZnVuY3Rpb24gbChlLHQscil7dmFyIGE9MSxzPW5ldyBuLmRlZmF1bHQoZSk7aWYoIXMuaXNpbnQoKSYmcil7dmFyIHU9TWF0aC5hYnMoZSk7dTwxPyhhPW5ldyBuLmRlZmF1bHQoMTApLnBvdyhvLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlKS0xKSxzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihzLmRpdihhKS50b051bWJlcigpKSkubXVsKGEpKTp1PjEmJihzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpfWVsc2UgMD09PWU/cz1uZXcgbi5kZWZhdWx0KE1hdGguZmxvb3IoKHQtMSkvMikpOnJ8fChzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpO3ZhciBjPU1hdGguZmxvb3IoKHQtMSkvMik7cmV0dXJuKDAsaS5jb21wb3NlKSgoMCxpLm1hcCkoZnVuY3Rpb24oZSl7cmV0dXJuIHMuYWRkKG5ldyBuLmRlZmF1bHQoZS1jKS5tdWwoYSkpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLHQpfXZhciBoPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxhPXRbMV0saD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixwPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sZD1NYXRoLm1heChoLDIpLHk9dShjKFtyLGFdKSwyKSxnPXlbMF0sdj15WzFdO2lmKGc9PT0tMS8wfHx2PT09MS8wKXt2YXIgbT12PT09MS8wP1tnXS5jb25jYXQocygoMCxpLnJhbmdlKSgwLGgtMSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIDEvMH0pKSk6cygoMCxpLnJhbg==" }, { "key": "2.7c767379.chunk.js_66", "type": "binary", "value": "base64:Z2UpKDAsaC0xKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4tMS8wfSkpLmNvbmNhdChbdl0pO3JldHVybiByPmE/KDAsaS5yZXZlcnNlKShtKTptfWlmKGc9PT12KXJldHVybiBsKGcsaCxwKTt2YXIgYj1mdW5jdGlvbiBlKHQscixpLG8pe3ZhciBhPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowO2lmKCFOdW1iZXIuaXNGaW5pdGUoKHItdCkvKGktMSkpKXJldHVybntzdGVwOm5ldyBuLmRlZmF1bHQoMCksdGlja01pbjpuZXcgbi5kZWZhdWx0KDApLHRpY2tNYXg6bmV3IG4uZGVmYXVsdCgwKX07dmFyIHMsdT1mKG5ldyBuLmRlZmF1bHQocikuc3ViKHQpLmRpdihpLTEpLG8sYSk7cz10PD0wJiZyPj0wP25ldyBuLmRlZmF1bHQoMCk6KHM9bmV3IG4uZGVmYXVsdCh0KS5hZGQocikuZGl2KDIpKS5zdWIobmV3IG4uZGVmYXVsdChzKS5tb2QodSkpO3ZhciBjPU1hdGguY2VpbChzLnN1Yih0KS5kaXYodSkudG9OdW1iZXIoKSksbD1NYXRoLmNlaWwobmV3IG4uZGVmYXVsdChyKS5zdWIocykuZGl2KHUpLnRvTnVtYmVyKCkpLGg9YytsKzE7cmV0dXJuIGg+aT9lKHQscixpLG8sYSsxKTooaDxpJiYobD1yPjA/bCsoaS1oKTpsLGM9cj4wP2M6YysoaS1oKSkse3N0ZXA6dSx0aWNrTWluOnMuc3ViKG5ldyBuLmRlZmF1bHQoYykubXVsKHUpKSx0aWNrTWF4OnMuYWRkKG5ldyBuLmRlZmF1bHQobCkubXVsKHUpKX0pfShnLHYsZCxwKSxfPWIuc3RlcCxTPWIudGlja01pbixFPWIudGlja01heCx3PW8uZGVmYXVsdC5yYW5nZVN0ZXAoUyxFLmFkZChuZXcgbi5kZWZhdWx0KC4xKS5tdWwoXykpLF8pO3JldHVybiByPmE/KDAsaS5yZXZlcnNlKSh3KTp3fSk7dC5nZXROaWNlVGlja1ZhbHVlcz1oO3ZhciBwPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxvPXRbMV0sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixzPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0saD1NYXRoLm1heChhLDIpLHA9dShjKFtyLG9dKSwyKSxkPXBbMF0seT1wWzFdO2lmKGQ9PT0tMS8wfHx5PT09MS8wKXJldHVybltyLG9dO2lmKGQ9PT15KXJldHVybiBsKGQsYSxzKTt2YXIgZz1mKG5ldyBuLmRlZmF1bHQoeSkuc3ViKGQpLmRpdihoLTEpLHMsMCksdj0oMCxpLmNvbXBvc2UpKCgwLGkubWFwKShmdW5jdGlvbihlKXtyZXR1cm4gbmV3IG4uZGVmYXVsdChkKS5hZGQobmV3IG4uZGVmYXVsdChlKS5tdWwoZykpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLGgpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZT49ZCYmZTw9eX0pO3JldHVybiByPm8/KDAsaS5yZXZlcnNlKSh2KTp2fSk7dC5nZXRUaWNrVmFsdWVzPXA7dmFyIGQ9KDAsaS5tZW1vaXplKShmdW5jdGlvbihlLHQpe3ZhciByPXUoZSwyKSxhPXJbMF0sbD1yWzFdLGg9IShhcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxwPXUoYyhbYSxsXSksMiksZD1wWzBdLHk9cFsxXTtpZihkPT09LTEvMHx8eT09PTEvMClyZXR1cm5bYSxsXTtpZihkPT09eSlyZXR1cm5bZF07dmFyIGc9TWF0aC5tYXgodCwyKSx2PWYobmV3IG4uZGVmYXVsdCh5KS5zdWIoZCkuZGl2KGctMSksaCwwKSxtPXMoby5kZWZhdWx0LnJhbmdlU3RlcChuZXcgbi5kZWZhdWx0KGQpLG5ldyBuLmRlZmF1bHQoeSkuc3ViKG5ldyBuLmRlZmF1bHQoLjk5KS5tdWwodikpLHYpKS5jb25jYXQoW3ldKTtyZXR1cm4gYT5sPygwLGkucmV2ZXJzZSkobSk6bX0pO3QuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPWR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD12b2lkIDA7dmFyIG4saT0obj1yKDQ5MikpJiZuLl9fZXNNb2R1bGU/bjp7ZGVmYXVsdDpufSxvPXIoNDkzKTt2YXIgYT17cmFuZ2VTdGVwOmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49bmV3IGkuZGVmYXVsdChlKSxvPVtdO24ubHQodCk7KW8ucHVzaChuLnRvTnVtYmVyKCkpLG49bi5hZGQocik7cmV0dXJuIG99LGdldERpZ2l0Q291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzE6TWF0aC5mbG9vcihuZXcgaS5kZWZhdWx0KGUpLmFicygpLmxvZygxMCkudG9OdW1iZXIoKSkrMX0saW50ZXJwb2xhdGVOdW1iZXI6KDAsby5jdXJyeSkoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPStlO3JldHVybiBuK3IqKCt0LW4pfSksdW5pbnRlcnBvbGF0ZU51bWJlcjooMCxvLmN1cnJ5KShmdW5jdGlvbihlLHQscil7dmFyIG49dC0rZTtyZXR1cm4oci1lKS8obj1ufHwxLzApfSksdW5pbnRlcnBvbGF0ZVRydW5jYXRpb246KDAsby5jdXJyeSkoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXQtK2U7cmV0dXJuIG49bnx8MS8wLE1hdGgubWF4KDAsTWF0aC5taW4oMSwoci1lKS9uKSl9KX07dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI5MiksaT1yKDQ5NCksbz1yKDQ5NiksYT1yKDI5Mykscz1yKDEwODQpLHU9cigyOTQpLGM9MjAwO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIGY9LTEsbD1pLGg9ZS5sZW5ndGgscD0hMCxkPVtdLHk9ZDtpZihyKXA9ITEsbD1vO2Vsc2UgaWYoaD49Yyl7dmFyIGc9dD9udWxsOnMoZSk7aWYoZylyZXR1cm4gdShnKTtwPSExLGw9YSx5PW5ldyBufWVsc2UgeT10P1tdOmQ7ZTpmb3IoOysrZjxoOyl7dmFyIHY9ZVtmXSxtPXQ/dCh2KTp2O2lmKHY9cnx8MCE9PXY/djowLHAmJm09PT1tKXtmb3IodmFyIGI9eS5sZW5ndGg7Yi0tOylpZih5W2JdPT09bSljb250aW51ZSBlO3QmJnkucHVzaChtKSxkLnB1c2godil9ZWxzZSBsKHksbSxyKXx8KHkhPT1kJiZ5LnB1c2gobSksZC5wdXNoKHYpKX1yZXR1cm4gZH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5NSksaT1yKDEwODIpLG89cigxMDgzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0PT09dD9vKGUsdCxyKTpuKGUsaSxyKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlIT09ZX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49ci0xLGk9ZS5sZW5ndGg7KytuPGk7KWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDgxKSxpPXIoMTA4NSksbz1yKDI5NCksYT1uJiYxL28obmV3IG4oWywtMF0pKVsxXT09MS8wP2Z1bmN0aW9uKGUpe3JldHVybiBuZXcgbihlKX06aTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiBuKGUsZnVuY3Rpb24oZSxuLGkpe3JldHVybiEocj10KGUsbixpKSl9KSwhIXJ9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPW51bGw9PWU/MDplLmxlbmd0aDsrK3I8bjspaWYoIXQoZVtyXSxyLGUpKXJldHVybiExO3JldHVybiEwfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj0hMDtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gcj0hIXQoZSxuLGkpfSkscn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXsiX19wcm90b19fIj09dCYmbj9uKGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6cix3cml0YWJsZTohMH0pOmVbdF09cn19LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQscil7ZSBpbnN0YW5jZW9mIFJlZ0V4cCYmKGU9bihlLHIpKSx0IGluc3RhbmNlb2YgUmVnRXhwJiYodD1uKHQscikpO3ZhciBvPWkoZSx0LHIpO3JldHVybiBvJiZ7c3RhcnQ6b1swXSxlbmQ6b1sxXSxwcmU6ci5zbGljZSgwLG9bMF0pLGJvZHk6ci5zbGljZShvWzBdK2UubGVuZ3RoLG9bMV0pLHBvc3Q6ci5zbGljZShvWzFdK3QubGVuZ3RoKX19ZnVuY3Rpb24gbihlLHQpe3ZhciByPXQubWF0Y2goZSk7cmV0dXJuIHI/clswXTpudWxsfWZ1bmN0aW9uIGkoZSx0LHIpe3ZhciBuLGksbyxhLHMsdT1yLmluZGV4T2YoZSksYz1yLmluZGV4T2YodCx1KzEpLGY9dTtpZih1Pj0wJiZjPjApe2ZvcihuPVtdLG89ci5sZW5ndGg7Zj49MCYmIXM7KWY9PXU/KG4ucHVzaChmKSx1PXIuaW5kZXhPZihlLGYrMSkpOjE9PW4ubGVuZ3RoP3M9W24ucG9wKCksY106KChpPW4ucG9wKCkpPG8mJihvPWksYT1jKSxjPXIuaW5kZXhPZih0LGYrMSkpLGY9dTxjJiZ1Pj0wP3U6YztuLmxlbmd0aCYmKHM9W28sYV0pfXJldHVybiBzfWUuZXhwb3J0cz1yLHIucmFuZ2U9aX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5Mik7ZnVuY3Rpb24gaShlLHQscil7dmFyIG89ZTtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxpPSJzdHJpbmciPT09dHlwZW9mIHQ/bmV3IFJlZ0V4cCgiXFxiKCIrdCsiKVxcKCIpOnQ7ZG97dmFyIG89aS5leGVjKGUpO2lmKCFvKXJldHVybiByO2lmKHZvaWQgMD09PW9bMV0pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHRoZSBmaXJzdCBjb3VwbGUgb2YgcGFyZW50aGVzaXMgdG8gZ2V0IHRoZSBmdW5jdGlvbiBpZGVudGlmaWVyIGluICIrdCk7dmFyIGE9b1sxXSxzPW8uaW5kZXgsdT1uKCIoIiwiKSIsZS5zdWJzdHJpbmcocykpO2lmKCF1fHx1LnN0YXJ0IT09b1swXS5sZW5ndGgtMSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoYSsiKCk6IG1pc3NpbmcgY2xvc2luZyAnKScgaW4gdGhlIHZhbHVlICciK2UrIiciKTtyLnB1c2goe21hdGNoZXM6dSxmdW5jdGlvbklkZW50aWZpZXI6YX0pLGU9dS5wb3N0fXdoaWxlKGkudGVzdChlKSk7cmV0dXJuIHJ9KGUsdCkucmVkdWNlKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUucmVwbGFjZShuLmZ1bmN0aW9uSWRlbnRpZmllcisiKCIrbi5tYXRjaGVzLmJvZHkrIikiLGZ1bmN0aW9uKGUsdCxyLG4sbyl7cmV0dXJuIHIoaShlLG8sciksdCxuKX0obi5tYXRjaGVzLmJvZHksbi5mdW5jdGlvbklkZW50aWZpZXIscixvLHQpKX0sZSl9ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQscil7ZSBpbnN0YW5jZW9mIFJlZ0V4cCYmKGU9bihlLHIpKSx0IGluc3RhbmNlb2YgUmVnRXhwJiYodD1uKHQscikpO3ZhciBvPWkoZSx0LHIpO3JldHVybiBvJiZ7c3RhcnQ6b1swXSxlbmQ6b1sxXSxwcmU6ci5zbGljZSgwLG9bMF0pLGJvZHk6ci5zbGljZShvWzBdK2UubGVuZ3RoLG9bMV0pLHBvc3Q6ci5zbGljZShvWzFdK3QubGVuZ3RoKX19ZnVuY3Rpb24gbihlLHQpe3ZhciByPXQubWF0Y2goZSk7cmV0dXJuIHI/clswXTpudWxsfWZ1bmN0aW9uIGkoZSx0LHIpe3ZhciBuLGksbyxhLHMsdT1yLmluZGV4T2YoZSksYz1yLmluZGV4T2YodCx1KzEpLGY9dTtpZih1Pj0wJiZjPjApe2ZvcihuPVtdLG89ci5sZW5ndGg7Zj49MCYmIXM7KWY9PXU/KG4ucHVzaChmKSx1PXIuaW5kZXhPZihlLGYrMSkpOjE9PW4ubGVuZ3RoP3M9W24ucG9wKCksY106KChpPW4ucG9wKCkpPG8mJihvPWksYT1jKSxjPXIuaW5kZXhPZih0LGYrMSkpLGY9dTxjJiZ1Pj0wP3U6YztuLmxlbmd0aCYmKHM9W28sYV0pfXJldHVybiBzfWUuZXhwb3J0cz1yLHIucmFuZ2U9aX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5NCk7bi5wcm90b3R5cGUuZm9ybXVsYUV2YWw9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7Zm9yKHZhciBlLHQscixuPVtdLGk9dGhpcy52YWx1ZSxvPTA7bzxpLmxlbmd0aDtvKyspMT09PWlbb10udHlwZXx8Mz09PWlbb10udHlwZT9uLnB1c2goe3ZhbHVlOjM9PT1pW29dLnR5cGU/aVtvXS5zaG93Omlbb10udmFsdWUsdHlwZToxfSk6MTM9PT1pW29dLnR5cGU/bi5wdXNoKHt2YWx1ZTppW29dLnNob3csdHlwZToxfSk6MD09PWlbb10udHlwZT9uW24ubGVuZ3RoLTFdPXt2YWx1ZTppW29dLnNob3crKCItIiE9aVtvXS5zaG93PyIoIjoiIikrbltuLmxlbmd0aC0xXS52YWx1ZSsoIi0iIT1pW29dLnNob3c/IikiOiIiKSx0eXBlOjB9Ojc9PT1pW29dLnR5cGU/bltuLmxlbmd0aC0xXT17dmFsdWU6KDEhPW5bbi5sZW5ndGgtMV0udHlwZT8iKCI6IiIpK25bbi5sZW5ndGgtMV0udmFsdWUrKDEhPW5bbi5sZW5ndGgtMV0udHlwZT8iKSI6IiIpK2lbb10uc2hvdyx0eXBlOjd9OjEwPT09aVtvXS50eXBlPyhlPW4ucG9wKCksdD1uLnBvcCgpLCJQIj09PWlbb10uc2hvd3x8IkMiPT09aVtvXS5zaG93P24ucHVzaCh7dmFsdWU6IjxzdXA+Iit0LnZhbHVlKyI8L3N1cD4iK2lbb10uc2hvdysiPHN1Yj4iK2UudmFsdWUrIjwvc3ViPiIsdHlwZToxMH0pOm4ucHVzaCh7dmFsdWU6KDEhPXQudHlwZT8iKCI6IiIpK3QudmFsdWUrKDEhPXQudHlwZT8iKSI6IiIpKyI8c3VwPiIrZS52YWx1ZSsiPC9zdXA+Iix0eXBlOjF9KSk6Mj09PWlbb10udHlwZXx8OT09PWlbb10udHlwZT8oZT1uLnBvcCgpLHQ9bi5wb3AoKSxuLnB1c2goe3ZhbHVlOigxIT10LnR5cGU/IigiOiIiKSt0LnZhbHVlKygxIT10LnR5cGU/IikiOiIiKStpW29dLnNob3crKDEhPWUudHlwZT8iKCI6IiIpK2UudmFsdWUrKDEhPWUudHlwZT8iKSI6IiIpLHR5cGU6aVtvXS50eXBlfSkpOjEyPT09aVtvXS50eXBlJiYoZT1uLnBvcCgpLHQ9bi5wb3AoKSxyPW4ucG9wKCksbi5wdXNoKHt2YWx1ZTppW29dLnNob3crIigiK3IudmFsdWUrIiwiK3QudmFsdWUrIiwiK2UudmFsdWUrIikiLHR5cGU6MTJ9KSk7cmV0dXJuIG5bMF0udmFsdWV9LGUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDk1KTtuLnByb3RvdHlwZS5wb3N0Zml4RXZhbD1mdW5jdGlvbihlKXsidXNlIHN0cmljdCI7KGU9ZXx8e30pLlBJPU1hdGguUEksZS5FPU1hdGguRTtmb3IodmFyIHQscixpLG89W10sYT10aGlzLnZhbHVlLHM9InVuZGVmaW5lZCIhPT10eXBlb2YgZS5uLHU9MDt1PGEubGVuZ3RoO3UrKykxPT09YVt1XS50eXBlP28ucHVzaCh7dmFsdWU6YVt1XS52YWx1ZSx0eXBlOjF9KTozPT09YVt1XS50eXBlP28ucHVzaCh7dmFsdWU6ZVthW3VdLnZhbHVlXSx0eXBlOjF9KTowPT09YVt1XS50eXBlPyJ1bmRlZmluZWQiPT09dHlwZW9mIG9bby5sZW5ndGgtMV0udHlwZT9vW28ubGVuZ3RoLTFdLnZhbHVlLnB1c2goYVt1XSk6b1tvLmxlbmd0aC0xXS52YWx1ZT1hW3VdLnZhbHVlKG9bby5sZW5ndGgtMV0udmFsdWUpOjc9PT1hW3VdLnR5cGU/InVuZGVmaW5lZCI9PT10eXBlb2Ygb1tvLmxlbmd0aC0xXS50eXBlP29bby5sZW5ndGgtMV0udmFsdWUucHVzaChhW3VdKTpvW28ubGVuZ3RoLTFdLnZhbHVlPWFbdV0udmFsdWUob1tvLmxlbmd0aC0xXS52YWx1ZSk6OD09PWFbdV0udHlwZT8odD1vLnBvcCgpLHI9by5wb3AoKSxvLnB1c2goe3R5cGU6MSx2YWx1ZTphW3VdLnZhbHVlKHIudmFsdWUsdC52YWx1ZSl9KSk6MTA9PT1hW3VdLnR5cGU/KHQ9by5wb3AoKSwidW5kZWZpbmVkIj09PXR5cGVvZihyPW8ucG9wKCkpLnR5cGU/KHIudmFsdWU9ci5jb25jYXQodCksci52YWx1ZS5wdXNoKGFbdV0pLG8ucHVzaChyKSk6InVuZGVmaW5lZCI9PT10eXBlb2YgdC50eXBlPyh0LnVuc2hpZnQociksdC5wdXNoKGFbdV0pLG8ucHVzaCh0KSk6by5wdXNoKHt0eXBlOjEsdmFsdWU6YVt1XS52YWx1ZShyLnZhbHVlLHQudmFsdWUpfSkpOjI9PT1hW3VdLnR5cGV8fDk9PT1hW3VdLnR5cGU/KHQ9by5wb3AoKSwidW5kZWZpbmVkIj09PXR5cGVvZihyPW8ucG9wKCkpLnR5cGU/KGNvbnNvbGUubG9nKHIpLChyPXIuY29uY2F0KHQpKS5wdXNoKGFbdV0pLG8ucHVzaChyKSk6InVuZGVmaW5lZCI9PT10eXBlb2YgdC50eXBlPyh0LnVuc2hpZnQociksdC5wdXNoKGFbdV0pLG8ucHVzaCh0KSk6by5wdXNoKHt0eXBlOjEsdmFsdWU6YVt1XS52YWx1ZShyLnZhbHVlLHQudmFsdWUpfSkpOjEyPT09YVt1XS50eXBlPygidW5kZWZpbmVkIiE9PXR5cGVvZih0PW8ucG9wKCkpLnR5cGUmJih0PVt0XSkscj1vLnBvcCgpLGk9by5wb3AoKSxvLnB1c2goe3R5cGU6MSx2YWx1ZTphW3VdLnZhbHVlKGkudmFsdWUsci52YWx1ZSxuZXcgbih0KSl9KSk6MTM9PT1hW3VdLnR5cGUmJihzP28ucHVzaCh7dmFsdWU6ZVthW3VdLnZhbHVlXSx0eXBlOjN9KTpvLnB1c2goW2FbdV1dKSk7aWYoby5sZW5ndGg+MSl0aHJvdyBuZXcgbi5leGNlcHRpb24oIlVuY2F1Z2h0IFN5bnRheCBlcnJvciIpO3JldHVybiBvWzBdLnZhbHVlPjFlMTU/IkluZmluaXR5IjpwYXJzZUZsb2F0KG9bMF0udmFsdWUudG9GaXhlZCgxNSkpfSxuLmV2YWw9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIHQ/dGhpcy5sZXgoZSkudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwoKToidW5kZWZpbmVkIj09PXR5cGVvZiByPyJ1bmRlZmluZWQiIT09dHlwZW9mIHQubGVuZ3RoP3RoaXMubGV4KGUsdCkudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwoKTp0aGlzLmxleChlKS50b1Bvc3RmaXgoKS5wb3N0Zml4RXZhbCh0KTp0aGlzLmxleChlLHQpLnRvUG9zdGZpeCgpLnBvc3RmaXhFdmFsKHIpfSxlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA5Nik7bi5wcm90b3R5cGUudG9Qb3N0Zml4PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Zvcih2YXIgZSx0LHIsaSxvLGE9W10scz1be3ZhbHVlOiIoIix0eXBlOjQscHJlOjB9XSx1PXRoaXMudmFsdWUsYz0xO2M8dS5sZW5ndGg7YysrKWlmKDE9PT11W2NdLnR5cGV8fDM9PT11W2NdLnR5cGV8fDEzPT09dVtjXS50eXBlKTE9PT11W2NdLnR5cGUmJih1W2NdLnZhbHVlPU51bWJlcih1W2NdLnZhbHVlKSksYS5wdXNoKHVbY10pO2Vsc2UgaWYoND09PXVbY10udHlwZSlzLnB1c2godVtjXSk7ZWxzZSBpZig1PT09dVtjXS50eXBlKWZvcig7NCE9PSh0PXMucG9wKCkpLnR5cGU7KWEucHVzaCh0KTtlbHNlIGlmKDExPT09dVtjXS50eXBlKXtmb3IoOzQhPT0odD1zLnBvcCgpKS50eXBlOylhLnB1c2godCk7cy5wdXNoKHQpfWVsc2V7aT0oZT11W2NdKS5wcmUscj0obz1zW3MubGVuZ3RoLTFdKS5wcmU7dmFyIGY9Ik1hdGgucG93Ij09by52YWx1ZSYmIk1hdGgucG93Ij09ZS52YWx1ZTtpZihpPnIpcy5wdXNoKGUpO2Vsc2V7Zm9yKDtyPj1pJiYhZnx8ZiYmaTxyOyl0PXMucG9wKCksbz1zW3MubGVuZ3RoLTFdLGEucHVzaCh0KSxyPW8ucHJlLGY9Ik1hdGgucG93Ij09ZS52YWx1ZSYmIk1hdGgucG93Ij09by52YWx1ZTtzLnB1c2goZSl9fXJldHVybiBuZXcgbihhKX0sZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwOTcpO2Z1bmN0aW9uIG8oZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdKz10O3JldHVybiBlfXZhciBhPVsic2luIiwiY29zIiwidGFuIiwicGkiLCIoIiwiKSIsIlAiLCJDIiwiYXNpbiIsImFjb3MiLCJhdGFuIiwiNyIsIjgiLCI5IiwiaW50IiwiY29zaCIsImFjb3NoIiwibG4iLCJeIiwicm9vdCIsIjQiLCI1IiwiNiIsIi8iLCIhIiwidGFuaCIsImF0YW5oIiwiTW9kIiwiMSIsIjIiLCIzIiwiKiIsInNpbmgiLCJhc2luaCIsImUiLCJsb2ciLCIwIiwiLiIsIisiLCItIiwiLCIsIlNpZ21hIiwibiIsIlBpIiwicG93Il0scz1bInNpbiIsImNvcyIsInRhbiIsIiZwaTsiLCIoIiwiKSIsIlAiLCJDIiwiYXNpbiIsImFjb3MiLCJhdGFuIiwiNyIsIjgiLCI5IiwiSW50IiwiY29zaCIsImFjb3NoIiwiIGxuIiwiXiIsInJvb3QiLCI0IiwiNSIsIjYiLCImZGl2aWRlOyIsIiEiLCJ0YW5oIiwiYXRhbmgiLCIgTW9kICIsIjEiLCIyIiwiMyIsIiZ0aW1lczsiLCJzaW5oIiwiYXNpbmgiLCJlIiwiIGxvZyIsIjAiLCIuIiwiKyIsIi0iLCIsIiwiJlNpZ21hOyIsIm4iLCImUGk7IiwicG93Il0sdT1bbi5tYXRoLnNpbixuLm1hdGguY29zLG4ubWF0aC50YW4sIlBJIiwiKCIsIikiLG4ubWF0aC5QLG4ubWF0aC5DLG4ubWF0aC5hc2luLG4ubWF0aC5hY29zLG4ubWF0aC5hdGFuLCI3IiwiOCIsIjkiLE1hdGguZmxvb3Isbi5tYXRoLmNvc2gsbi5tYXRoLmFjb3NoLE1hdGgubG9nLE1hdGgucG93LE1hdGguc3FydCwiNCIsIjUiLCI2IixuLm1hdGguZGl2LG4ubWF0aC5mYWN0LG4ubWF0aC50YW5oLG4ubWF0aC5hdGFuaCxuLm1hdGgubW9kLCIxIiwiMiIsIjMiLG4ubWF0aC5tdWwsbi5tYXRoLnNpbmgsbi5tYXRoLmFzaW5oLCJFIixuLm1hdGgubG9nLCIwIiwiLiIsbi5tYXRoLmFkZCxuLm1hdGguc3ViLCIsIixuLm1hdGguc2lnbWEsIm4iLG4ubWF0aC5QaSxNYXRoLnBvd10sYz17MDoxMSwxOjAsMjozLDM6MCw0OjAsNTowLDY6MCw3OjExLDg6MTEsOToxLDEwOjEwLDExOjAsMTI6MTEsMTM6MH0sZj1bMCwwLDAsMyw0LDUsMTAsMTAsMCwwLDAsMSwxLDEsMCwwLDAsMCwxMCwwLDEsMSwxLDIsNywwLDAsMiwxLDEsMSwyLDAsMCwzLDAsMSw2LDksOSwxMSwxMiwxMywxMiw4XSxsPXswOiEwLDE6ITAsMzohMCw0OiEwLDY6ITAsODohMCw5OiEwLDEyOiEwLDEzOiEwfSxoPXswOiEwLDE6ITAsMjohMCwzOiEwLDQ6ITAsNTohMCw2OiEwLDc6ITAsODohMCw5OiEwLDEwOiEwLDExOiEwLDEyOiEwLDEzOiEwfSxwPXswOiEwLDM6ITAsNDohMCw4OiEwLDEyOiEwLDEzOiEwfSxkPXt9LGc9ezA6ITAsMTohMCwzOiEwLDQ6ITAsNjohMCw4OiEwLDEyOiEwLDEzOiEwfSx2PXsxOiEwfSxtPVtbXSxbIjEiLCIyIiwiMyIsIjciLCI4IiwiOSIsIjQiLCI1IiwiNiIsIisiLCItIiwiKiIsIi8iLCIoIiwiKSIsIl4iLCIhIiwiUCIsIkMiLCJlIiwiMCIsIi4iLCIsIiwibiJdLFsicGkiLCJsbiIsIlBpIl0sWyJzaW4iLCJjb3MiLCJ0YW4iLCJEZWwiLCJpbnQiLCJNb2QiLCJsb2ciLCJwb3ciXSxbImFzaW4iLCJhY29zIiwiYXRhbiIsImNvc2giLCJyb290IiwidGFuaCIsInNpbmgiXSxbImFjb3NoIiwiYXRhbmgiLCJhc2luaCIsIlNpZ21hIl1dO2Z1bmN0aW9uIGIoZSx0LHIsbil7Zm9yKHZhciBpPTA7aTxuO2krKylpZihlW3IraV0hPT10W2ldKXJldHVybiExO3JldHVybiEwfW4uYWRkVG9rZW49ZnVuY3Rpb24oZSl7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7eD1lW2ldLnRva2VuLmxlbmd0aDt2YXIgdD0tMTtpZih4PG0ubGVuZ3RoKWZvcih5PTA7eTxtW3hdLmxlbmd0aDt5KyspaWYoZVtpXS50b2tlbj09PW1beF1beV0pe3Q9YS5pbmRleE9mKG1beF1beV0pO2JyZWFrfS0xPT09dD8oYS5wdXNoKGVbaV0udG9rZW4pLGYucHVzaChlW2ldLnR5cGUpLG0ubGVuZ3RoPD1lW2ldLnRva2VuLmxlbmd0aCYmKG1bZVtpXS50b2tlbi5sZW5ndGhdPVtdKSxtW2VbaV0udG9rZW4ubGVuZ3RoXS5wdXNoKGVbaV0udG9rZW4pLHUucHVzaChlW2ldLnZhbHVlKSxzLnB1c2goZVtpXS5zaG93KSk6KGFbdF09ZVtpXS50b2tlbixmW3RdPWVbaV0udHlwZSx1W3RdPWVbaV0udmFsdWUsc1t0XT1lW2ldLnNob3cpfX0sbi5sZXg9ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIHIsaSx5LF8sUz1be3R5cGU6NCx2YWx1ZToiKCIsc2hvdzoiKCIscHJlOjB9XSxFPVtdLHc9ZSxUPTAsQT1sLEM9MCx4PWQsST0iIjsidW5kZWZpbmVkIiE9PXR5cGVvZiB0JiZuLmFkZFRva2VuKHQpO3ZhciBrPXt9O2ZvcihpPTA7aTx3Lmxlbmd0aDtpKyspaWYoIiAiIT13W2ldKXtyPSIiO2U6Zm9yKHk9dy5sZW5ndGgtaT5tLmxlbmd0aC0yP20ubGVuZ3RoLTE6dy5sZW5ndGgtaTt5PjA7eS0tKWZvcihfPTA7XzxtW3ldLmxlbmd0aDtfKyspaWYoYih3LG1beV1bX10saSx5KSl7cj1tW3ldW19dO2JyZWFrIGV9aWYoaSs9ci5sZW5ndGgtMSwiIj09PXIpdGhyb3cgbmV3IG4uZXhjZXB0aW9uKCJDYW4ndCB1bmRlcnN0YW5kIGFmdGVyICIrdy5zbGljZShpKSk7dmFyIE89YS5pbmRleE9mKHIpLE49cixQPWZbT10sUj11W09dLEI9Y1tQXSxNPXNbT10sTD1TW1MubGVuZ3RoLTFdO2ZvcihEPUUubGVuZ3RoO0QtLTspaWYoMD09PUVbRF0mJi0xIT09WzAsMiwzLDUsOSwxMSwxMiwxM10uaW5kZXhPZihQKSl7aWYoITAhPT1BW1BdKXRocm93IG5ldyBuLmV4Y2VwdGlvbihyKyIgaXMgbm90IGFsbG93ZWQgYWZ0ZXIgIitJKTtTLnB1c2goe3ZhbHVlOiIpIix0eXBlOjUscHJlOjAsc2hvdzoiKSJ9KSxBPWgseD1nLG8oRSwtMSkucG9wKCl9aWYoITAhPT1BW1BdKXRocm93IG5ldyBuLmV4Y2VwdGlvbihyKyIgaXMgbm90IGFsbG93ZWQgYWZ0ZXIgIitJKTtpZighMD09PXhbUF0mJihQPTIsUj1uLm1hdGgubXVsLE09IiZ0aW1lczsiLEI9MyxpLT1yLmxlbmd0aCksaz17dmFsdWU6Uix0eXBlOlAscHJlOkIsc2hvdzpNfSwwPT09UClBPWwseD1kLG8oRSwyKS5wdXNoKDIpLFMucHVzaChrKSxTLnB1c2goe3ZhbHVlOiIoIix0eXBlOjQscHJlOjAsc2hvdzoiKCJ9KTtlbHNlIGlmKDE9PT1QKTE9PT1MLnR5cGU/KEwudmFsdWUrPVIsbyhFLDEpKTpTLnB1c2goayksQT1oLHg9cDtlbHNlIGlmKDI9PT1QKUE9bCx4PWQsbyhFLDIpLFMucHVzaChrKTtlbHNlIGlmKDM9PT1QKVMucHVzaChrKSxBPWgseD1nO2Vsc2UgaWYoND09PVApVCs9RS5sZW5ndGgsRT1bXSxDKyssQT1sLHg9ZCxTLnB1c2goayk7ZWxzZSBpZig1PT09UCl7aWYoIUMpdGhyb3cgbmV3IG4uZXhjZXB0aW9uKCJDbG9zaW5nIHBhcmVudGhlc2lzIGFyZSBtb3JlIHRoYW4gb3BlbmluZyBvbmUsIHdhaXQgV2hhdCEhISIpO2Zvcig7VC0tOylTLnB1c2goe3ZhbHVlOiIpIix0eXBlOjUscHJlOjAsc2hvdzoiKSJ9KTtUPTAsQy0tLEE9aCx4PWcsUy5wdXNoKGspfWVsc2UgaWYoNj09PVApe2lmKEwuaGFzRGVjKXRocm93IG5ldyBuLmV4Y2VwdGlvbigiVHdvIGRlY2ltYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBvbmUgbnVtYmVyIik7MSE9PUwudHlwZSYmKEw9e3ZhbHVlOjAsdHlwZToxLHByZTowfSxTLnB1c2goTCksbyhFLC0xKSksQT12LG8oRSwxKSx4PWQsTC52YWx1ZSs9UixMLmhhc0RlYz0hMH1lbHNlIDc9PT1QJiYoQT1oLHg9ZyxvKEUsMSksUy5wdXNoKGspKTs4PT09UD8oQT1sLHg9ZCxvKEUsNCkucHVzaCg0KSxTLnB1c2goayksUy5wdXNoKHt2YWx1ZToiKCIsdHlwZTo0LHByZTowLHNob3c6IigifSkpOjk9PT1QPyg5PT09TC50eXBlP0wudmFsdWU9PT1uLm1hdGguYWRkPyhMLnZhbHVlPVIsTC5zaG93PU0sbyhFLDEpKTpMLnZhbHVlPT09bi5tYXRoLnN1YiYmIi0iPT09TSYmKEwudmFsdWU9bi5tYXRoLmFkZCxMLnNob3c9IisiLG8oRSwxKSk6NSE9PUwudHlwZSYmNyE9PUwudHlwZSYmMSE9PUwudHlwZSYmMyE9PUwudHlwZSYmMTMhPT1MLnR5cGU/Ii0iPT09TiYmKEE9bCx4PWQsbyhFLDIpLnB1c2goMiksUy5wdXNoKHt2YWx1ZTpuLm1hdGguY2hhbmdlU2lnbix0eXBlOjAscHJlOjIxLHNob3c6Ii0ifSksUy5wdXNoKHt2YWx1ZToiKCIsdHlwZTo0LHByZTowLHNob3c6IigifSkpOihTLnB1c2goayksbyhFLDIpKSxBPWwseD1kKToxMD09PVA/KEE9bCx4PWQsbyhFLDIpLFMucHVzaChrKSk6MTE9PT1QPyhBPWwseD1kLFMucHVzaChrKSk6MTI9PT1QPyhBPWwseD1kLG8oRSw2KS5wdXNoKDYpLFMucHVzaChrKSxTLnB1c2goe3ZhbHVlOiIoIix0eXBlOjQscHJlOjB9KSk6MTM9PT1QJiYoQT1oLHg9ZyxTLnB1c2goaykpLG8oRSwtMSksST1yfWZvcih2YXIgRD1FLmxlbmd0aDtELS07KTA9PT1FW0RdJiYoUy5wdXNoKHt2YWx1ZToiKSIsc2hvdzoiKSIsdHlwZTo1LHByZTozfSksbyhFLC0xKS5wb3AoKSk7aWYoITAhPT1BWzVdKXRocm93IG5ldyBuLmV4Y2VwdGlvbigiY29tcGxldGUgdGhlIGV4cHJlc3Npb24iKTtmb3IoO0MtLTspUy5wdXNoKHt2YWx1ZToiKSIsc2hvdzoiKSIsdHlwZTo1LHByZTozfSk7cmV0dXJuIFMucHVzaCh7dHlwZTo1LHZhbHVlOiIpIixzaG93OiIpIixwcmU6MH0pLG5ldyBuKFMpfSxlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXt2YXIgcj1mdW5jdGlvbihlKXt0aGlzLnZhbHVlPWV9O3IubWF0aD17aXNEZWdyZWU6ITAsYWNvczpmdW5jdGlvbihlKXtyZXR1cm4gci5tYXRoLmlzRGVncmVlPzE4MC9NYXRoLlBJKk1hdGguYWNvcyhlKTpNYXRoLmFjb3MoZSl9LGFkZDpmdW5jdGlvbihlLHQpe3JldHVybiBlK3R9LGFzaW46ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZT8xODAvTWF0aC5QSSpNYXRoLmFzaW4oZSk6TWF0aC5hc2luKGUpfSxhdGFuOmZ1bmN0aW9uKGUpe3JldHVybiByLm1hdGguaXNEZWdyZWU/MTgwL01hdGguUEkqTWF0aC5hdGFuKGUpOk1hdGguYXRhbihlKX0sYWNvc2g6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUrTWF0aC5zcXJ0KGUqZS0xKSl9LGFzaW5oOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlK01hdGguc3FydChlKmUrMSkpfSxhdGFuaDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coKDErZSkvKDEtZSkpfSxDOmZ1bmN0aW9uKGUsdCl7dmFyIG49MSxpPWUtdCxvPXQ7bzxpJiYobz1pLGk9dCk7Zm9yKHZhciBhPW8rMTthPD1lO2ErKyluKj1hO3JldHVybiBuL3IubWF0aC5mYWN0KGkpfSxjaGFuZ2VTaWduOmZ1bmN0aW9uKGUpe3JldHVybi1lfSxjb3M6ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZSYmKGU9ci5tYXRoLnRvUmFkaWFuKGUpKSxNYXRoLmNvcyhlKX0sY29zaDpmdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5wb3coTWF0aC5FLGUpK01hdGgucG93KE1hdGguRSwtMSplKSkvMn0sZGl2OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUvdH0sZmFjdDpmdW5jdGlvbihlKXtpZihlJTEhPT0wKXJldHVybiJOQU4iO2Zvcih2YXIgdD0xLHI9MjtyPD1lO3IrKyl0Kj1yO3JldHVybiB0fSxpbnZlcnNlOmZ1bmN0aW9uKGUpe3JldHVybiAxL2V9LGxvZzpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvTWF0aC5sb2coMTApfSxtb2Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSV0fSxtdWw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSp0fSxQOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTEsbj1NYXRoLmZsb29yKGUpLU1hdGguZmxvb3IodCkrMTtuPD1NYXRoLmZsb29yKGUpO24rKylyKj1uO3JldHVybiByfSxQaTpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTEsaT1lO2k8PXQ7aSsrKW4qPU51bWJlcihyLnBvc3RmaXhFdmFsKHtuOml9KSk7cmV0dXJuIG59LHBvdzEweDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTtlLS07KXQqPTEwO3JldHVybiB0fSxzaWdtYTpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTAsaT1lO2k8PXQ7aSsrKW4rPU51bWJlcihyLnBvc3RmaXhFdmFsKHtuOml9KSk7cmV0dXJuIG59LHNpbjpmdW5jdGlvbihlKXtyZXR1cm4gci5tYXRoLmlzRGVncmVlJiYoZT1yLm1hdGgudG9SYWRpYW4oZSkpLE1hdGguc2luKGUpfSxzaW5oOmZ1bmN0aW9uKGUpe3JldHVybihNYXRoLnBvdyhNYXRoLkUsZSktTWF0aC5wb3coTWF0aC5FLC0xKmUpKS8yfSxzdWI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSx0YW46ZnVuY3Rpb24oZSl7cmV0dXJuIHIubWF0aC5pc0RlZ3JlZSYmKGU9ci5tYXRoLnRvUmFkaWFuKGUpKSxNYXRoLnRhbihlKX0sdGFuaDpmdW5jdGlvbihlKXtyZXR1cm4gci5zaW5oYShlKS9yLmNvc2hhKGUpfSx0b1JhZGlhbjpmdW5jdGlvbihlKXtyZXR1cm4gZSpNYXRoLlBJLzE4MH19LHIuZXhjZXB0aW9uPWZ1bmN0aW9uKGUpe3RoaXMubWVzc2FnZT1lfSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbih0KXsoZnVuY3Rpb24oKXt2YXIgcixuLGksbyxhLHM7InVuZGVmaW5lZCIhPT10eXBlb2YgcGVyZm9ybWFuY2UmJm51bGwhPT1wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX06InVuZGVmaW5lZCIhPT10eXBlb2YgdCYmbnVsbCE9PXQmJnQuaHJ0aW1lPyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4ocigpLWEpLzFlNn0sbj10LmhydGltZSxvPShyPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIDFlOSooZT1uKCkpWzBdK2VbMV19KSgpLHM9MWU5KnQudXB0aW1lKCksYT1vLXMpOkRhdGUubm93PyhlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKS1pfSxpPURhdGUubm93KCkpOihlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKS1pfSxpPShuZXcgRGF0ZSkuZ2V0VGltZSgpKX0pLmNhbGwodGhpcyl9KS5jYWxsKHRoaXMscig0NikpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODApKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTIpLGk9cig0OTQpLG89cig0OTYpLGE9cigxNTIpLHM9cigyOTgpLHU9cigyOTMpLGM9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGY9cj9vOmksbD1lWzBdLmxlbmd0aCxoPWUubGVuZ3RoLHA9aCxkPUFycmF5KGgpLHk9MS8wLGc9W107cC0tOyl7dmFyIHY9ZVtwXTtwJiZ0JiYodj1hKHYscyh0KSkpLHk9Yyh2Lmxlbmd0aCx5KSxkW3BdPSFyJiYodHx8bD49MTIwJiZ2Lmxlbmd0aD49MTIwKT9uZXcgbihwJiZ2KTp2b2lkIDB9dj1lWzBdO3ZhciBtPS0xLGI9ZFswXTtlOmZvcig7KyttPGwmJmcubGVuZ3RoPHk7KXt2YXIgXz12W21dLFM9dD90KF8pOl87aWYoXz1yfHwwIT09Xz9fOjAsIShiP3UoYixTKTpmKGcsUyxyKSkpe2ZvcihwPWg7LS1wOyl7dmFyIEU9ZFtwXTtpZighKEU/dShFLFMpOmYoZVtwXSxTLHIpKSljb250aW51ZSBlfWImJmIucHVzaChTKSxnLnB1c2goXyl9fXJldHVybiBnfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTEwMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUpP2U6W119fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTcpLGk9cig3NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpJiZuKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXTtyZXR1cm4gbihlLGZ1bmN0aW9uKGUsbixpKXt0KGUsbixpKSYmci5wdXNoKGUpfSkscn19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7IWZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgciBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXt2YXIgbj1PYmplY3QuZGVmaW5lUHJvcGVydHkmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I/T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpOnt9O24uZ2V0fHxuLnNldD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4pOnRbcl09ZVtyXX10LmRlZmF1bHQ9ZX0ocigwKSk7dmFyIG49cyhyKDExMDUpKSxpPXMocigxMTA4KSksbz1zKHIoMSkpLGE9cyhyKDQ5NykpO3IoNDk5KTtmdW5jdGlvbiBzKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiB1KCl7cmV0dXJuKHU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgYz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZ0JiZ0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4oMCxuLmRlZmF1bHQpKGUsdCl9KX0sZj1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZ0JiZ0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4oMCxpLmRlZmF1bHQpKGUsdCl9KX0sbD1mdW5jdGlvbihlKXt2YXIgdCxyO2Z1bmN0aW9uIG4oKXtmb3IodmFyIHQscj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3JldHVybih0PWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobikpfHx0aGlzKS5vbkVudGVyPWZ1bmN0aW9uKGUscil7dmFyIG49dC5nZXRDbGFzc05hbWVzKHI/ImFwcGVhciI6ImVudGVyIikuY2xhc3NOYW1lO3QucmVtb3ZlQ2xhc3NlcyhlLCJleGl0IiksYyhlLG4pLHQucHJvcHMub25FbnRlciYmdC5wcm9wcy5vbkVudGVyKGUscil9LHQub25FbnRlcmluZz1mdW5jdGlvbihlLHIpe3ZhciBuPXQuZ2V0Q2xhc3NOYW1lcyhyPyJhcHBlYXIiOiJlbnRlciIpLmFjdGl2ZUNsYXNzTmFtZTt0LnJlZmxvd0FuZEFkZENsYXNzKGUsbiksdC5wcm9wcy5vbkVudGVyaW5nJiZ0LnByb3BzLm9uRW50ZXJpbmcoZSxyKX0sdC5vbkVudGVyZWQ9ZnVuY3Rpb24oZSxyKXt2YXIgbj10LmdldENsYXNzTmFtZXMoImFwcGVhciIpLmRvbmVDbGFzc05hbWUsaT10LmdldENsYXNzTmFtZXMoImVudGVyIikuZG9uZUNsYXNzTmFtZSxvPXI/bisiICIraTppO3QucmVtb3ZlQ2xhc3NlcyhlLHI/ImFwcGVhciI6ImVudGVyIiksYyhlLG8pLHQucHJvcHMub25FbnRlcmVkJiZ0LnByb3BzLm9uRW50ZXJlZChlLHIpfSx0Lm9uRXhpdD1mdW5jdGlvbihlKXt2YXIgcj10LmdldENsYXNzTmFtZXMoImV4aXQiKS5jbGFzc05hbWU7dC5yZW1vdmVDbGFzc2VzKGUsImFwcGVhciIpLHQucmVtb3ZlQ2xhc3NlcyhlLCJlbnRlciIpLGMoZSxyKSx0LnByb3BzLm9uRXhpdCYmdC5wcm9wcy5vbkV4aXQoZSl9LHQub25FeGl0aW5nPWZ1bmN0aW9uKGUpe3ZhciByPXQuZ2V0Q2xhc3NOYW1lcygiZXhpdCIpLmFjdGl2ZUNsYXNzTmFtZTt0LnJlZmxvd0FuZEFkZENsYXNzKGUsciksdC5wcm9wcy5vbkV4aXRpbmcmJnQucHJvcHMub25FeGl0aW5nKGUpfSx0Lm9uRXhpdGVkPWZ1bmN0aW9uKGUpe3ZhciByPXQuZ2V0Q2xhc3NOYW1lcygiZXhpdCIpLmRvbmVDbGFzc05hbWU7dC5yZW1vdmVDbGFzc2VzKGUsImV4aXQiKSxjKGUsciksdC5wcm9wcy5vbkV4aXRlZCYmdC5wcm9wcy5vbkV4aXRlZChlKX0sdC5nZXRDbGFzc05hbWVzPWZ1bmN0aW9uKGUpe3ZhciByPXQucHJvcHMuY2xhc3NOYW1lcyxuPSJzdHJpbmciPT09dHlwZW9mIHIsaT1uPyhuJiZyP3IrIi0iOiIiKStlOnJbZV07cmV0dXJue2NsYXNzTmFtZTppLGFjdGl2ZUNsYXNzTmFtZTpuP2krIi1hY3RpdmUiOnJbZSsiQWN0aXZlIl0sZG9uZUNsYXNzTmFtZTpuP2krIi1kb25lIjpyW2UrIkRvbmUiXX19LHR9cj1lLCh0PW4pLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHIucHJvdG90eXBlKSx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQuX19wcm90b19fPXI7dmFyIGk9bi5wcm90b3R5cGU7cmV0dXJuIGkucmVtb3ZlQ2xhc3Nlcz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuZ2V0Q2xhc3NOYW1lcyh0KSxuPXIuY2xhc3NOYW1lLGk9ci5hY3RpdmVDbGFzc05hbWUsbz1yLmRvbmVDbGFzc05hbWU7biYmZihlLG4pLGkmJmYoZSxpKSxvJiZmKGUsbyl9LGkucmVmbG93QW5kQWRkQ2xhc3M9ZnVuY3Rpb24oZSx0KXt0JiYoZSYmZS5zY3JvbGxUb3AsYyhlLHQpKX0saS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT11KHt9LHRoaXMucHJvcHMpO3JldHVybiBkZWxldGUgZS5jbGFzc05hbWVzLG8uZGVmYXVsdC5jcmVhdGVFbGVtZW50KGEuZGVmYXVsdCx1KHt9LGUse29uRW50ZXI6dGhpcy5vbkVudGVyLG9uRW50ZXJlZDp0aGlzLm9uRW50ZXJlZCxvbkVudGVyaW5nOnRoaXMub25FbnRlcmluZyxvbkV4aXQ6dGhpcy5vbkV4aXQsb25FeGl0aW5nOnRoaXMub25FeGl0aW5nLG9uRXhpdGVkOnRoaXMub25FeGl0ZWR9KSl9LG59KG8uZGVmYXVsdC5Db21wb25lbnQpO2wuZGVmYXVsdFByb3BzPXtjbGFzc05hbWVzOiIifSxsLnByb3BUeXBlcz17fTt2YXIgaD1sO3QuZGVmYXVsdD1oLGUuZXhwb3J0cz10LmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxMTA2KTt0Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PWZ1bmN0aW9uKGUsdCl7ZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QuYWRkKHQpOigwLGkuZGVmYXVsdCkoZSx0KXx8KCJzdHJpbmciPT09dHlwZW9mIGUuY2xhc3NOYW1lP2UuY2xhc3NOYW1lPWUuY2xhc3NOYW1lKyIgIit0OmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZS5iYXNlVmFsfHwiIikrIiAiK3QpKX07dmFyIGk9bihyKDExMDcpKTtlLmV4cG9ydHM9dC5kZWZhdWx0fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbGFzc0xpc3Q/ISF0JiZlLmNsYXNzTGlzdC5jb250YWlucyh0KTotMSE9PSgiICIrKGUuY2xhc3NOYW1lLmJhc2VWYWx8fGUuY2xhc3NOYW1lKSsiICIpLmluZGV4T2YoIiAiK3QrIiAiKX0sZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUucmVwbGFjZShuZXcgUmVnRXhwKCIoXnxcXHMpIit0KyIoPzpcXHN8JCkiLCJnIiksIiQxIikucmVwbGFjZSgvXHMrL2csIiAiKS5yZXBsYWNlKC9eXHMqfFxzKiQvZywiIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QucmVtb3ZlKHQpOiJzdHJpbmciPT09dHlwZW9mIGUuY2xhc3NOYW1lP2UuY2xhc3NOYW1lPW4oZS5jbGFzc05hbWUsdCk6ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZS5iYXNlVmFsfHwiIix0KSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9dm9pZCAwO2EocigwKSk7dmFyIG49YShyKDEpKSxpPXIoMjAwKSxvPWEocig1MDApKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgcz1mdW5jdGlvbihlKXt2YXIgdCxyO2Z1bmN0aW9uIGEoKXtmb3IodmFyIHQscj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3JldHVybih0PWUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQobikpfHx0aGlzKS5oYW5kbGVFbnRlcj1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FbnRlciIsMCxyKX0sdC5oYW5kbGVFbnRlcmluZz1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FbnRlcmluZyIsMCxyKX0sdC5oYW5kbGVFbnRlcmVkPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIHQuaGFuZGxlTGlmZWN5Y2xlKCJvbkVudGVyZWQiLDAscil9LHQuaGFuZGxlRXhpdD1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiB0LmhhbmRsZUxpZmVjeWNsZSgib25FeGl0IiwxLHIpfSx0LmhhbmRsZUV4aXRpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5oYW5kbGVMaWZlY3ljbGUoIm9uRXhpdGluZyIsMSxyKX0sdC5oYW5kbGVFeGl0ZWQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5oYW5kbGVMaWZlY3ljbGUoIm9uRXhpdGVkIiwxLHIpfSx0fXI9ZSwodD1hKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyLnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0Ll9fcHJvdG9fXz1yO3ZhciBzPWEucHJvdG90eXBlO3JldHVybiBzLmhhbmRsZUxpZmVjeWNsZT1mdW5jdGlvbihlLHQscil7dmFyIG8sYT10aGlzLnByb3BzLmNoaWxkcmVuLHM9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkoYSlbdF07cy5wcm9wc1tlXSYmKG89cy5wcm9wcylbZV0uYXBwbHkobyxyKSx0aGlzLnByb3BzW2VdJiZ0aGlzLnByb3BzW2VdKCgwLGkuZmluZERPTU5vZGUpKHRoaXMpKX0scy5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ=" }, { "key": "2.7c767379.chunk.js_67", "type": "binary", "value": "base64:PWUuY2hpbGRyZW4scj1lLmluLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsWyJjaGlsZHJlbiIsImluIl0pLGE9bi5kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkodCkscz1hWzBdLHU9YVsxXTtyZXR1cm4gZGVsZXRlIGkub25FbnRlcixkZWxldGUgaS5vbkVudGVyaW5nLGRlbGV0ZSBpLm9uRW50ZXJlZCxkZWxldGUgaS5vbkV4aXQsZGVsZXRlIGkub25FeGl0aW5nLGRlbGV0ZSBpLm9uRXhpdGVkLG4uZGVmYXVsdC5jcmVhdGVFbGVtZW50KG8uZGVmYXVsdCxpLHI/bi5kZWZhdWx0LmNsb25lRWxlbWVudChzLHtrZXk6ImZpcnN0IixvbkVudGVyOnRoaXMuaGFuZGxlRW50ZXIsb25FbnRlcmluZzp0aGlzLmhhbmRsZUVudGVyaW5nLG9uRW50ZXJlZDp0aGlzLmhhbmRsZUVudGVyZWR9KTpuLmRlZmF1bHQuY2xvbmVFbGVtZW50KHUse2tleToic2Vjb25kIixvbkVudGVyOnRoaXMuaGFuZGxlRXhpdCxvbkVudGVyaW5nOnRoaXMuaGFuZGxlRXhpdGluZyxvbkVudGVyZWQ6dGhpcy5oYW5kbGVFeGl0ZWR9KSl9LGF9KG4uZGVmYXVsdC5Db21wb25lbnQpO3MucHJvcFR5cGVzPXt9O3ZhciB1PXM7dC5kZWZhdWx0PXUsZS5leHBvcnRzPXQuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdC5nZXRDaGlsZE1hcHBpbmc9aSx0Lm1lcmdlQ2hpbGRNYXBwaW5ncz1vLHQuZ2V0SW5pdGlhbENoaWxkTWFwcGluZz1mdW5jdGlvbihlLHQpe3JldHVybiBpKGUuY2hpbGRyZW4sZnVuY3Rpb24ocil7cmV0dXJuKDAsbi5jbG9uZUVsZW1lbnQpKHIse29uRXhpdGVkOnQuYmluZChudWxsLHIpLGluOiEwLGFwcGVhcjphKHIsImFwcGVhciIsZSksZW50ZXI6YShyLCJlbnRlciIsZSksZXhpdDphKHIsImV4aXQiLGUpfSl9KX0sdC5nZXROZXh0Q2hpbGRNYXBwaW5nPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1pKGUuY2hpbGRyZW4pLHU9byh0LHMpO3JldHVybiBPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPXVbaV07aWYoKDAsbi5pc1ZhbGlkRWxlbWVudCkobykpe3ZhciBjPWkgaW4gdCxmPWkgaW4gcyxsPXRbaV0saD0oMCxuLmlzVmFsaWRFbGVtZW50KShsKSYmIWwucHJvcHMuaW47IWZ8fGMmJiFoP2Z8fCFjfHxoP2YmJmMmJigwLG4uaXNWYWxpZEVsZW1lbnQpKGwpJiYodVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7b25FeGl0ZWQ6ci5iaW5kKG51bGwsbyksaW46bC5wcm9wcy5pbixleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KSk6dVtpXT0oMCxuLmNsb25lRWxlbWVudCkobyx7aW46ITF9KTp1W2ldPSgwLG4uY2xvbmVFbGVtZW50KShvLHtvbkV4aXRlZDpyLmJpbmQobnVsbCxvKSxpbjohMCxleGl0OmEobywiZXhpdCIsZSksZW50ZXI6YShvLCJlbnRlciIsZSl9KX19KSx1fTt2YXIgbj1yKDEpO2Z1bmN0aW9uIGkoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBlJiZuLkNoaWxkcmVuLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSkuZm9yRWFjaChmdW5jdGlvbihlKXtyW2Uua2V5XT1mdW5jdGlvbihlKXtyZXR1cm4gdCYmKDAsbi5pc1ZhbGlkRWxlbWVudCkoZSk/dChlKTplfShlKX0pLHJ9ZnVuY3Rpb24gbyhlLHQpe2Z1bmN0aW9uIHIocil7cmV0dXJuIHIgaW4gdD90W3JdOmVbcl19ZT1lfHx7fSx0PXR8fHt9O3ZhciBuLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxvPVtdO2Zvcih2YXIgYSBpbiBlKWEgaW4gdD9vLmxlbmd0aCYmKGlbYV09byxvPVtdKTpvLnB1c2goYSk7dmFyIHM9e307Zm9yKHZhciB1IGluIHQpe2lmKGlbdV0pZm9yKG49MDtuPGlbdV0ubGVuZ3RoO24rKyl7dmFyIGM9aVt1XVtuXTtzW2lbdV1bbl1dPXIoYyl9c1t1XT1yKHUpfWZvcihuPTA7bjxvLmxlbmd0aDtuKyspc1tvW25dXT1yKG9bbl0pO3JldHVybiBzfWZ1bmN0aW9uIGEoZSx0LHIpe3JldHVybiBudWxsIT1yW3RdP3JbdF06ZS5wcm9wc1t0XX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDc1KSxpPXIoMTE3KSxvPXIoMTk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcz1PYmplY3QodCk7aWYoIWkodCkpe3ZhciB1PW4ociwzKTt0PW8odCkscj1mdW5jdGlvbihlKXtyZXR1cm4gdShzW2VdLGUscyl9fXZhciBjPWUodCxyLGEpO3JldHVybiBjPi0xP3NbdT90W2NdOmNdOnZvaWQgMH19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0OTUpLGk9cig3NSksbz1yKDExMTMpLGE9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1udWxsPT1lPzA6ZS5sZW5ndGg7aWYoIXMpcmV0dXJuLTE7dmFyIHU9bnVsbD09cj8wOm8ocik7cmV0dXJuIHU8MCYmKHU9YShzK3UsMCkpLG4oZSxpKHQsMyksdSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig1MDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpLHI9dCUxO3JldHVybiB0PT09dD9yP3Qtcjp0OjB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMTE1KSxpPXIoMTk5KSxvPXIoNTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXtyZXR1cm4gYSYmIm51bWJlciIhPXR5cGVvZiBhJiZpKHQscixhKSYmKHI9YT12b2lkIDApLHQ9byh0KSx2b2lkIDA9PT1yPyhyPXQsdD0wKTpyPW8ociksYT12b2lkIDA9PT1hP3Q8cj8xOi0xOm8oYSksbih0LHIsYSxlKX19fSxmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguY2VpbCxuPU1hdGgubWF4O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSxvKXtmb3IodmFyIGE9LTEscz1uKHIoKHQtZSkvKGl8fDEpKSwwKSx1PUFycmF5KHMpO3MtLTspdVtvP3M6KythXT1lLGUrPWk7cmV0dXJuIHV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigzNSksaT1yKDExMTcpLG89cig1MDIpLGE9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLHM9TWF0aC5tYXgsdT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBjLGYsbCxoLHAsZCx5PTAsZz0hMSx2PSExLG09ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhKTtmdW5jdGlvbiBiKHQpe3ZhciByPWMsbj1mO3JldHVybiBjPWY9dm9pZCAwLHk9dCxoPWUuYXBwbHkobixyKX1mdW5jdGlvbiBfKGUpe3ZhciByPWUtZDtyZXR1cm4gdm9pZCAwPT09ZHx8cj49dHx8cjwwfHx2JiZlLXk+PWx9ZnVuY3Rpb24gUygpe3ZhciBlPWkoKTtpZihfKGUpKXJldHVybiBFKGUpO3A9c2V0VGltZW91dChTLGZ1bmN0aW9uKGUpe3ZhciByPXQtKGUtZCk7cmV0dXJuIHY/dShyLGwtKGUteSkpOnJ9KGUpKX1mdW5jdGlvbiBFKGUpe3JldHVybiBwPXZvaWQgMCxtJiZjP2IoZSk6KGM9Zj12b2lkIDAsaCl9ZnVuY3Rpb24gdygpe3ZhciBlPWkoKSxyPV8oZSk7aWYoYz1hcmd1bWVudHMsZj10aGlzLGQ9ZSxyKXtpZih2b2lkIDA9PT1wKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4geT1lLHA9c2V0VGltZW91dChTLHQpLGc/YihlKTpofShkKTtpZih2KXJldHVybiBjbGVhclRpbWVvdXQocCkscD1zZXRUaW1lb3V0KFMsdCksYihkKX1yZXR1cm4gdm9pZCAwPT09cCYmKHA9c2V0VGltZW91dChTLHQpKSxofXJldHVybiB0PW8odCl8fDAsbihyKSYmKGc9ISFyLmxlYWRpbmcsbD0odj0ibWF4V2FpdCJpbiByKT9zKG8oci5tYXhXYWl0KXx8MCx0KTpsLG09InRyYWlsaW5nImluIHI/ISFyLnRyYWlsaW5nOm0pLHcuY2FuY2VsPWZ1bmN0aW9uKCl7dm9pZCAwIT09cCYmY2xlYXJUaW1lb3V0KHApLHk9MCxjPWQ9Zj1wPXZvaWQgMH0sdy5mbHVzaD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1wP2g6RShpKCkpfSx3fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3JldHVybiBuLkRhdGUubm93KCl9fSwsZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYhMD09PWVbIkBAZnVuY3Rpb25hbC9wbGFjZWhvbGRlciJdfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uIHQocil7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RofHxuKHIpP3Q6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXIucih0KTt2YXIgbz1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0pLGE9byghMSkscz1vKCEwKSx1PXsiQEBmdW5jdGlvbmFsL3BsYWNlaG9sZGVyIjohMH07ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8pe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQ7Y2FzZSAxOnJldHVybiBuKHIpP3Q6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQpfSk7ZGVmYXVsdDpyZXR1cm4gbihyKSYmbihvKT90Om4ocik/aShmdW5jdGlvbih0KXtyZXR1cm4gZSh0LG8pfSk6bihvKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHIsdCl9KTplKHIsbyl9fX12YXIgZj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKStOdW1iZXIodCl9KTtmdW5jdGlvbiBsKGUsdCl7dmFyIHI7dD10fHxbXTt2YXIgbj0oZT1lfHxbXSkubGVuZ3RoLGk9dC5sZW5ndGgsbz1bXTtmb3Iocj0wO3I8bjspb1tvLmxlbmd0aF09ZVtyXSxyKz0xO2ZvcihyPTA7cjxpOylvW28ubGVuZ3RoXT10W3JdLHIrPTE7cmV0dXJuIG99ZnVuY3Rpb24gaChlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGkpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDc6cmV0dXJuIGZ1bmN0aW9uKGUscixuLGksbyxhLHMpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA4OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDEwOnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyxmKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKX19ZnVuY3Rpb24gcChlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPVtdLG89MCxhPWUscz0wO3M8dC5sZW5ndGh8fG88YXJndW1lbnRzLmxlbmd0aDspe3ZhciB1O3M8dC5sZW5ndGgmJighbih0W3NdKXx8bz49YXJndW1lbnRzLmxlbmd0aCk/dT10W3NdOih1PWFyZ3VtZW50c1tvXSxvKz0xKSxpW3NdPXUsbih1KXx8KGEtPTEpLHMrPTF9cmV0dXJuIGE8PTA/ci5hcHBseSh0aGlzLGkpOmgoYSxwKGUsaSxyKSl9fXZhciBkPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMT09PWU/aSh0KTpoKGUscChlLFtdLHQpKX0pLHk9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxmdW5jdGlvbigpe3ZhciB0PTAscj1hcmd1bWVudHNbMF0sbj1hcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXSxpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gaVswXT1mdW5jdGlvbigpe3ZhciBlPXIuYXBwbHkodGhpcyxsKGFyZ3VtZW50cyxbdCxuXSkpO3JldHVybiB0Kz0xLGV9LGUuYXBwbHkodGhpcyxpKX0pfSk7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZnVuY3Rpb24gdChyLG8sYSl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6cmV0dXJuIG4ocik/dDpjKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk7Y2FzZSAyOnJldHVybiBuKHIpJiZuKG8pP3Q6bihyKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLG8sdCl9KTtkZWZhdWx0OnJldHVybiBuKHIpJiZuKG8pJiZuKGEpP3Q6bihyKSYmbihvKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyLGEpfSk6bihyKSYmbihhKT9jKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxvLHIpfSk6bihvKSYmbihhKT9jKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUocix0LG4pfSk6bihyKT9pKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsbyxhKX0pOm4obyk/aShmdW5jdGlvbih0KXtyZXR1cm4gZShyLHQsYSl9KTpuKGEpP2koZnVuY3Rpb24odCl7cmV0dXJuIGUocixvLHQpfSk6ZShyLG8sYSl9fX12YXIgdj1nKGZ1bmN0aW9uKGUsdCxyKXtpZih0Pj1yLmxlbmd0aHx8dDwtci5sZW5ndGgpcmV0dXJuIHI7dmFyIG49KHQ8MD9yLmxlbmd0aDowKSt0LGk9bChyKTtyZXR1cm4gaVtuXT1lKHJbbl0pLGl9KSxtPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlLmxlbmd0aD49MCYmIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX07ZnVuY3Rpb24gYihlKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGVbIkBAdHJhbnNkdWNlci9zdGVwIl19ZnVuY3Rpb24gXyhlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIoKTt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaT1uLnBvcCgpO2lmKCFtKGkpKXtmb3IodmFyIG89MDtvPGUubGVuZ3RoOyl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBpW2Vbb11dKXJldHVybiBpW2Vbb11dLmFwcGx5KGksbik7bys9MX1pZihiKGkpKXJldHVybiB0LmFwcGx5KG51bGwsbikoaSl9cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBTKGUpe3JldHVybiBlJiZlWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP2U6eyJAQHRyYW5zZHVjZXIvdmFsdWUiOmUsIkBAdHJhbnNkdWNlci9yZWR1Y2VkIjohMH19dmFyIEU9e2luaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL2luaXQiXSgpfSxyZXN1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX19LHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lLHRoaXMuYWxsPSEwfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hbGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpfHwodGhpcy5hbGw9ITEsZT1TKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSwhMSkpKSxlfSxlfSgpLFQ9YyhfKFsiYWxsIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgdyhlLHQpfSksZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoOyl7aWYoIWUodFtyXSkpcmV0dXJuITE7cis9MX1yZXR1cm4hMH0pKSxBPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD5lP3Q6ZX0pO2Z1bmN0aW9uIEMoZSx0KXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLGk9QXJyYXkobik7cjxuOylpW3JdPWUodFtyXSkscis9MTtyZXR1cm4gaX1mdW5jdGlvbiB4KGUpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBJPWkoZnVuY3Rpb24oZSl7cmV0dXJuISFtKGUpfHwhIWUmJigib2JqZWN0Ij09PXR5cGVvZiBlJiYoIXgoZSkmJigxPT09ZS5ub2RlVHlwZT8hIWUubGVuZ3RoOjA9PT1lLmxlbmd0aHx8ZS5sZW5ndGg+MCYmKGUuaGFzT3duUHJvcGVydHkoMCkmJmUuaGFzT3duUHJvcGVydHkoZS5sZW5ndGgtMSkpKSkpfSksaz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5mPWV9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJpbml0IG5vdCBpbXBsZW1lbnRlZCBvbiBYV3JhcCIpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYoZSx0KX0sZX0oKTtmdW5jdGlvbiBPKGUpe3JldHVybiBuZXcgayhlKX12YXIgTj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9KX0pO2Z1bmN0aW9uIFAoZSx0LHIpe2Zvcih2YXIgbj1yLm5leHQoKTshbi5kb25lOyl7aWYoKHQ9ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LG4udmFsdWUpKSYmdFsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7dD10WyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31uPXIubmV4dCgpfXJldHVybiBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odCl9ZnVuY3Rpb24gUihlLHQscixuKXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHJbbl0oTihlWyJAQHRyYW5zZHVjZXIvc3RlcCJdLGUpLHQpKX12YXIgQj0idW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2w/U3ltYm9sLml0ZXJhdG9yOiJAQGl0ZXJhdG9yIjtmdW5jdGlvbiBNKGUsdCxyKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUmJihlPU8oZSkpLEkocikpcmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKCh0PWVbIkBAdHJhbnNkdWNlci9zdGVwIl0odCxyW25dKSkmJnRbIkBAdHJhbnNkdWNlci9yZWR1Y2VkIl0pe3Q9dFsiQEB0cmFuc2R1Y2VyL3ZhbHVlIl07YnJlYWt9bis9MX1yZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfShlLHQscik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByWyJmYW50YXN5LWxhbmQvcmVkdWNlIl0pcmV0dXJuIFIoZSx0LHIsImZhbnRhc3ktbGFuZC9yZWR1Y2UiKTtpZihudWxsIT1yW0JdKXJldHVybiBQKGUsdCxyW0JdKCkpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygci5uZXh0KXJldHVybiBQKGUsdCxyKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHIucmVkdWNlKXJldHVybiBSKGUsdCxyLCJyZWR1Y2UiKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2U6IGxpc3QgbXVzdCBiZSBhcnJheSBvciBpdGVyYWJsZSIpfXZhciBMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZih0KSl9LGV9KCksRD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBMKGUsdCl9KTtmdW5jdGlvbiBqKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfXZhciBVPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRj1mdW5jdGlvbigpe3JldHVybiJbb2JqZWN0IEFyZ3VtZW50c10iPT09VS5jYWxsKGFyZ3VtZW50cyk/ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJndW1lbnRzXSI9PT1VLmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBqKCJjYWxsZWUiLGUpfX0sVj0he3RvU3RyaW5nOm51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCJ0b1N0cmluZyIpLHE9WyJjb25zdHJ1Y3RvciIsInZhbHVlT2YiLCJpc1Byb3RvdHlwZU9mIiwidG9TdHJpbmciLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImhhc093blByb3BlcnR5IiwidG9Mb2NhbGVTdHJpbmciXSxLPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5wcm9wZXJ0eUlzRW51bWVyYWJsZSgibGVuZ3RoIil9KCksej1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7KXtpZihlW3JdPT09dClyZXR1cm4hMDtyKz0xfXJldHVybiExfSxHPWkoImZ1bmN0aW9uIiE9PXR5cGVvZiBPYmplY3Qua2V5c3x8Sz9mdW5jdGlvbihlKXtpZihPYmplY3QoZSkhPT1lKXJldHVybltdO3ZhciB0LHIsbj1bXSxpPUsmJkYoZSk7Zm9yKHQgaW4gZSkhaih0LGUpfHxpJiYibGVuZ3RoIj09PXR8fChuW24ubGVuZ3RoXT10KTtpZihWKWZvcihyPXEubGVuZ3RoLTE7cj49MDspaih0PXFbcl0sZSkmJiF6KG4sdCkmJihuW24ubGVuZ3RoXT10KSxyLT0xO3JldHVybiBufTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KGUpIT09ZT9bXTpPYmplY3Qua2V5cyhlKX0pLEg9YyhfKFsiZmFudGFzeS1sYW5kL21hcCIsIm1hcCJdLEQsZnVuY3Rpb24oZSx0KXtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgRnVuY3Rpb25dIjpyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KTtjYXNlIltvYmplY3QgT2JqZWN0XSI6cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0pLHJ9LHt9LEcodCkpO2RlZmF1bHQ6cmV0dXJuIEMoZSx0KX19KSksVz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQsbj0wO248ZS5sZW5ndGg7KXtpZihudWxsPT1yKXJldHVybjtyPXJbZVtuXV0sbis9MX1yZXR1cm4gcn0pLFk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBXKFtlXSx0KX0pLFg9YyhmdW5jdGlvbihlLHQpe3JldHVybiBIKFkoZSksdCl9KSxRPWcoTSksJD1pKGZ1bmN0aW9uKGUpe3JldHVybiBkKFEoQSwwLFgoImxlbmd0aCIsZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj1lLmxlbmd0aDt0PHI7KXtpZighZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITE7dCs9MX1yZXR1cm4hMH0pfSksWj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJnR9KSxKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmFueT0hMX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYW55fHwoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITEpKSx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KSYmKHRoaXMuYW55PSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsITApKSksZX0sZX0oKSxlZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBKKGUsdCl9KSx0ZT1jKF8oWyJhbnkiXSxlZSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7KXtpZihlKHRbcl0pKXJldHVybiEwO3IrPTF9cmV0dXJuITF9KSkscmU9aShmdW5jdGlvbihlKXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLGUpKSxmdW5jdGlvbigpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOyl7aWYoZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuITA7dCs9MX1yZXR1cm4hMX0pfSksbmU9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdFsiZmFudGFzeS1sYW5kL2FwIl0/dFsiZmFudGFzeS1sYW5kL2FwIl0oZSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmFwP2UuYXAodCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlP2Z1bmN0aW9uKHIpe3JldHVybiBlKHIpKHQocikpfTpNKGZ1bmN0aW9uKGUscil7cmV0dXJuIGwoZSxIKHIsdCkpfSxbXSxlKX0pO2Z1bmN0aW9uIGllKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aC0oZS0xKSxpPW5ldyBBcnJheShuPj0wP246MCk7cjxuOylpW3JdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQscixyK2UpLHIrPTE7cmV0dXJuIGl9dmFyIG9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLnBvcz0wLHRoaXMuZnVsbD0hMSx0aGlzLmFjYz1uZXcgQXJyYXkoZSl9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFjYz1udWxsLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5zdG9yZSh0KSx0aGlzLmZ1bGw/dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMuZ2V0Q29weSgpKTplfSxlLnByb3RvdHlwZS5zdG9yZT1mdW5jdGlvbihlKXt0aGlzLmFjY1t0aGlzLnBvc109ZSx0aGlzLnBvcys9MSx0aGlzLnBvcz09PXRoaXMuYWNjLmxlbmd0aCYmKHRoaXMucG9zPTAsdGhpcy5mdWxsPSEwKX0sZS5wcm90b3R5cGUuZ2V0Q29weT1mdW5jdGlvbigpe3JldHVybiBsKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYWNjLHRoaXMucG9zKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFjYywwLHRoaXMucG9zKSl9LGV9KCksYWU9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG9lKGUsdCl9KSxpZSkpLHNlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbCh0LFtlXSl9KSx1ZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuYXBwbHkodGhpcyx0KX0pLGNlPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPVtdLGk9MDtpPHI7KW5baV09ZVt0W2ldXSxpKz0xO3JldHVybiBufSksZmU9aShmdW5jdGlvbiBlKHQpe3JldHVybiB0PUgoZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplKHQpfSx0KSxkKFEoQSwwLFgoImxlbmd0aCIsY2UodCkpKSxmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gSChmdW5jdGlvbih0KXtyZXR1cm4gdWUodCxlKX0sdCl9KX0pLGxlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0pLGhlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pLHBlPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9O2Zvcih2YXIgaSBpbiByKW5baV09cltpXTtyZXR1cm4gbltlXT10LG59KSxkZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4gZTw8MD09PWV9LHllPWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9KSxnZT1nKGZ1bmN0aW9uIGUodCxyLG4pe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gcjt2YXIgaT10WzBdO2lmKHQubGVuZ3RoPjEpe3ZhciBvPSF5ZShuKSYmaihpLG4pP25baV06ZGUodFsxXSk/W106e307cj1lKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMSkscixvKX1pZihkZShpKSYmbShuKSl7dmFyIGE9W10uY29uY2F0KG4pO3JldHVybiBhW2ldPXIsYX1yZXR1cm4gcGUoaSxyLG4pfSksdmU9YyhmdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbCh0aGlzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhKX07Y2FzZSA3OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1KXtyZXR1cm4gdC5jYWxsKHRoaXMsZSxyLG4saSxvLGEscyx1KX07Y2FzZSA5OnJldHVybiBmdW5jdGlvbihlLHIsbixpLG8sYSxzLHUsYyl7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSxvLGEscyx1LGMsZil7cmV0dXJuIHQuY2FsbCh0aGlzLGUscixuLGksbyxhLHMsdSxjLGYpfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gbkFyeSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpfX0pLG1lPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHZlKDIsZSl9KTtmdW5jdGlvbiBiZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBfZT1jKGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZChlLHQpO3JldHVybiBkKGUsZnVuY3Rpb24oKXtyZXR1cm4gTShuZSxIKHIsYXJndW1lbnRzWzBdKSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSl9KSxTZT1pKGZ1bmN0aW9uKGUpe3JldHVybiBfZShlLmxlbmd0aCxlKX0pLEVlPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cykmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShaKShlLHQpfSksd2U9aShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmxlbmd0aCxlKX0pLFRlPXdlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pO2Z1bmN0aW9uIEFlKGUpe3JldHVybiBmdW5jdGlvbiB0KHIpe2Zvcih2YXIgbixpLG8sYT1bXSxzPTAsdT1yLmxlbmd0aDtzPHU7KXtpZihJKHJbc10pKWZvcihvPTAsaT0obj1lP3QocltzXSk6cltzXSkubGVuZ3RoO288aTspYVthLmxlbmd0aF09bltvXSxvKz0xO2Vsc2UgYVthLmxlbmd0aF09cltzXTtzKz0xfXJldHVybiBhfX12YXIgQ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbih0KXtyZXR1cm4gZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHQpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKHQscil7dmFyIG49ZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXSh0LHIpO3JldHVybiBuWyJAQHRyYW5zZHVjZXIvcmVkdWNlZCJdP3siQEB0cmFuc2R1Y2VyL3ZhbHVlIjpuLCJAQHRyYW5zZHVjZXIvcmVkdWNlZCI6ITB9Om59fX0oZSk7cmV0dXJueyJAQHRyYW5zZHVjZXIvaW5pdCI6RS5pbml0LCJAQHRyYW5zZHVjZXIvcmVzdWx0IjpmdW5jdGlvbihlKXtyZXR1cm4gdFsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUscil7cmV0dXJuIEkocik/TSh0LGUscik6TSh0LGUsW3JdKX19fSx4ZT1jKF8oWyJmYW50YXN5LWxhbmQvY2hhaW4iLCJjaGFpbiJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gSChlLENlKHQpKX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0P2Z1bmN0aW9uKHIpe3JldHVybiBlKHQocikpKHIpfTpBZSghMSkoSChlLHQpKX0pKSxJZT1nKGZ1bmN0aW9uKGUsdCxyKXtpZihlPnQpdGhyb3cgbmV3IEVycm9yKCJtaW4gbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG1heCBpbiBjbGFtcChtaW4sIG1heCwgdmFsdWUpIik7cmV0dXJuIHI8ZT9lOnI+dD90OnJ9KTtmdW5jdGlvbiBrZShlKXtyZXR1cm4gbmV3IFJlZ0V4cChlLnNvdXJjZSwoZS5nbG9iYWw/ImciOiIiKSsoZS5pZ25vcmVDYXNlPyJpIjoiIikrKGUubXVsdGlsaW5lPyJtIjoiIikrKGUuc3RpY2t5PyJ5IjoiIikrKGUudW5pY29kZT8idSI6IiIpKX12YXIgT2U9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWU/Ik51bGwiOnZvaWQgMD09PWU/IlVuZGVmaW5lZCI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfSk7ZnVuY3Rpb24gTmUoZSx0LHIsbil7dmFyIGk9ZnVuY3Rpb24oaSl7Zm9yKHZhciBvPXQubGVuZ3RoLGE9MDthPG87KXtpZihlPT09dFthXSlyZXR1cm4gclthXTthKz0xfWZvcih2YXIgcyBpbiB0W2ErMV09ZSxyW2ErMV09aSxlKWlbc109bj9OZShlW3NdLHQsciwhMCk6ZVtzXTtyZXR1cm4gaX07c3dpdGNoKE9lKGUpKXtjYXNlIk9iamVjdCI6cmV0dXJuIGkoe30pO2Nhc2UiQXJyYXkiOnJldHVybiBpKFtdKTtjYXNlIkRhdGUiOnJldHVybiBuZXcgRGF0ZShlLnZhbHVlT2YoKSk7Y2FzZSJSZWdFeHAiOnJldHVybiBrZShlKTtkZWZhdWx0OnJldHVybiBlfX12YXIgUGU9aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmNsb25lP2UuY2xvbmUoKTpOZShlLFtdLFtdLCEwKX0pLFJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyKT8tMTplKHIsdCk/MTowfX0pLEJlPWkoZnVuY3Rpb24oZSl7cmV0dXJuIWV9KSxNZT1TZShCZSk7ZnVuY3Rpb24gTGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBEZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIHQoKTt2YXIgbj1hcmd1bWVudHNbci0xXTtyZXR1cm4gbShuKXx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBuW2VdP3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOm5bZV0uYXBwbHkobixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCxyLTEpKX19dmFyIGplPWcoRGUoInNsaWNlIixmdW5jdGlvbihlLHQscil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsZSx0KX0pKSxVZT1pKERlKCJ0YWlsIixqZSgxLDEvMCkpKTtmdW5jdGlvbiBGZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gaChhcmd1bWVudHNbMF0ubGVuZ3RoLFEoTGUsYXJndW1lbnRzWzBdLFVlKGFyZ3VtZW50cykpKX12YXIgVmU9aShmdW5jdGlvbihlKXtyZXR1cm4geChlKT9lLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwwKS5yZXZlcnNlKCl9KTtmdW5jdGlvbiBxZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTtyZXR1cm4gRmUuYXBwbHkodGhpcyxWZShhcmd1bWVudHMpKX1mdW5jdGlvbiBLZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiY29tcG9zZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PWUucG9wKCk7cmV0dXJuIHFlKHFlLmFwcGx5KHRoaXMsSCh4ZSxlKSksdCl9ZnVuY3Rpb24gemUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiBlLmFwcGx5KHIsYXJndW1lbnRzKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwocixlKX0pfX1mdW5jdGlvbiBHZSgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZVAgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIGgoYXJndW1lbnRzWzBdLmxlbmd0aCxRKHplLGFyZ3VtZW50c1swXSxVZShhcmd1bWVudHMpKSl9ZnVuY3Rpb24gSGUoKXtpZigwPT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImNvbXBvc2VQIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBHZS5hcHBseSh0aGlzLFZlKGFyZ3VtZW50cykpfWZ1bmN0aW9uIFdlKGUpe2Zvcih2YXIgdCxyPVtdOyEodD1lLm5leHQoKSkuZG9uZTspci5wdXNoKHQudmFsdWUpO3JldHVybiByfWZ1bmN0aW9uIFllKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoO248aTspe2lmKGUodCxyW25dKSlyZXR1cm4hMDtuKz0xfXJldHVybiExfXZhciBYZT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwxL2U9PT0xL3Q6ZSE9PWUmJnQhPT10fSk7ZnVuY3Rpb24gUWUoZSx0LHIsbil7dmFyIGk9V2UoZSk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiAkZShlLHQsci5zbGljZSgpLG4uc2xpY2UoKSl9cmV0dXJuIVllKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIVllKG8sdCxlKX0sV2UodCksaSl9ZnVuY3Rpb24gJGUoZSx0LHIsbil7aWYoWGUoZSx0KSlyZXR1cm4hMDt2YXIgaT1PZShlKTtpZihpIT09T2UodCkpcmV0dXJuITE7aWYobnVsbD09ZXx8bnVsbD09dClyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0pcmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBlWyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJmVbImZhbnRhc3ktbGFuZC9lcXVhbHMiXSh0KSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0WyJmYW50YXN5LWxhbmQvZXF1YWxzIl0mJnRbImZhbnRhc3ktbGFuZC9lcXVhbHMiXShlKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuZXF1YWxzfHwiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZS5lcXVhbHMmJmUuZXF1YWxzKHQpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHQuZXF1YWxzJiZ0LmVxdWFscyhlKTtzd2l0Y2goaSl7Y2FzZSJBcmd1bWVudHMiOmNhc2UiQXJyYXkiOmNhc2UiT2JqZWN0IjppZigiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3ImJiJQcm9taXNlIj09PWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhlKS5tYXRjaCgvXmZ1bmN0aW9uIChcdyopLyk7cmV0dXJuIG51bGw9PXQ/IiI6dFsxXX0oZS5jb25zdHJ1Y3RvcikpcmV0dXJuIGU9PT10O2JyZWFrO2Nhc2UiQm9vbGVhbiI6Y2FzZSJOdW1iZXIiOmNhc2UiU3RyaW5nIjppZih0eXBlb2YgZSE9PXR5cGVvZiB0fHwhWGUoZS52YWx1ZU9mKCksdC52YWx1ZU9mKCkpKXJldHVybiExO2JyZWFrO2Nhc2UiRGF0ZSI6aWYoIVhlKGUudmFsdWVPZigpLHQudmFsdWVPZigpKSlyZXR1cm4hMTticmVhaztjYXNlIkVycm9yIjpyZXR1cm4gZS5uYW1lPT09dC5uYW1lJiZlLm1lc3NhZ2U9PT10Lm1lc3NhZ2U7Y2FzZSJSZWdFeHAiOmlmKGUuc291cmNlIT09dC5zb3VyY2V8fGUuZ2xvYmFsIT09dC5nbG9iYWx8fGUuaWdub3JlQ2FzZSE9PXQuaWdub3JlQ2FzZXx8ZS5tdWx0aWxpbmUhPT10Lm11bHRpbGluZXx8ZS5zdGlja3khPT10LnN0aWNreXx8ZS51bmljb2RlIT09dC51bmljb2RlKXJldHVybiExfWZvcih2YXIgbz1yLmxlbmd0aC0xO28+PTA7KXtpZihyW29dPT09ZSlyZXR1cm4gbltvXT09PXQ7by09MX1zd2l0Y2goaSl7Y2FzZSJNYXAiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUuZW50cmllcygpLHQuZW50cmllcygpLHIuY29uY2F0KFtlXSksbi5jb25jYXQoW3RdKSk7Y2FzZSJTZXQiOnJldHVybiBlLnNpemU9PT10LnNpemUmJlFlKGUudmFsdWVzKCksdC52YWx1ZXMoKSxyLmNvbmNhdChbZV0pLG4uY29uY2F0KFt0XSkpO2Nhc2UiQXJndW1lbnRzIjpjYXNlIkFycmF5IjpjYXNlIk9iamVjdCI6Y2FzZSJCb29sZWFuIjpjYXNlIk51bWJlciI6Y2FzZSJTdHJpbmciOmNhc2UiRGF0ZSI6Y2FzZSJFcnJvciI6Y2FzZSJSZWdFeHAiOmNhc2UiSW50OEFycmF5IjpjYXNlIlVpbnQ4QXJyYXkiOmNhc2UiVWludDhDbGFtcGVkQXJyYXkiOmNhc2UiSW50MTZBcnJheSI6Y2FzZSJVaW50MTZBcnJheSI6Y2FzZSJJbnQzMkFycmF5IjpjYXNlIlVpbnQzMkFycmF5IjpjYXNlIkZsb2F0MzJBcnJheSI6Y2FzZSJGbG9hdDY0QXJyYXkiOmNhc2UiQXJyYXlCdWZmZXIiOmJyZWFrO2RlZmF1bHQ6cmV0dXJuITF9dmFyIGE9RyhlKTtpZihhLmxlbmd0aCE9PUcodCkubGVuZ3RoKXJldHVybiExO3ZhciBzPXIuY29uY2F0KFtlXSksdT1uLmNvbmNhdChbdF0pO2ZvcihvPWEubGVuZ3RoLTE7bz49MDspe3ZhciBjPWFbb107aWYoIWooYyx0KXx8ISRlKHRbY10sZVtjXSxzLHUpKXJldHVybiExO28tPTF9cmV0dXJuITB9dmFyIFplPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gJGUoZSx0LFtdLFtdKX0pO2Z1bmN0aW9uIEplKGUsdCxyKXt2YXIgbixpO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS5pbmRleE9mKXN3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOmlmKDA9PT10KXtmb3Iobj0xL3Q7cjxlLmxlbmd0aDspe2lmKDA9PT0oaT1lW3JdKSYmMS9pPT09bilyZXR1cm4gcjtyKz0xfXJldHVybi0xfWlmKHQhPT10KXtmb3IoO3I8ZS5sZW5ndGg7KXtpZigibnVtYmVyIj09PXR5cGVvZihpPWVbcl0pJiZpIT09aSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfXJldHVybiBlLmluZGV4T2YodCxyKTtjYXNlInN0cmluZyI6Y2FzZSJib29sZWFuIjpjYXNlImZ1bmN0aW9uIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuIGUuaW5kZXhPZih0LHIpO2Nhc2Uib2JqZWN0IjppZihudWxsPT09dClyZXR1cm4gZS5pbmRleE9mKHQscil9Zm9yKDtyPGUubGVuZ3RoOyl7aWYoWmUoZVtyXSx0KSlyZXR1cm4gcjtyKz0xfXJldHVybi0xfWZ1bmN0aW9uIGV0KGUsdCl7cmV0dXJuIEplKHQsZSwwKT49MH1mdW5jdGlvbiB0dChlKXtyZXR1cm4nIicrZS5yZXBsYWNlKC9cXC9nLCJcXFxcIikucmVwbGFjZSgvW1xiXS9nLCJcXGIiKS5yZXBsYWNlKC9cZi9nLCJcXGYiKS5yZXBsYWNlKC9cbi9nLCJcXG4iKS5yZXBsYWNlKC9cci9nLCJcXHIiKS5yZXBsYWNlKC9cdC9nLCJcXHQiKS5yZXBsYWNlKC9cdi9nLCJcXHYiKS5yZXBsYWNlKC9cMC9nLCJcXDAiKS5yZXBsYWNlKC8iL2csJ1xcIicpKyciJ312YXIgcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU8MTA/IjAiOiIiKStlfSxudD0iZnVuY3Rpb24iPT09dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3J0KGUuZ2V0VVRDTW9udGgoKSsxKSsiLSIrcnQoZS5nZXRVVENEYXRlKCkpKyJUIitydChlLmdldFVUQ0hvdXJzKCkpKyI6IitydChlLmdldFVUQ01pbnV0ZXMoKSkrIjoiK3J0KGUuZ2V0VVRDU2Vjb25kcygpKSsiLiIrKGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkvMWUzKS50b0ZpeGVkKDMpLnNsaWNlKDIsNSkrIloifTtmdW5jdGlvbiBpdChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG90KGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aCxpPVtdO3I8bjspZSh0W3JdKSYmKGlbaS5sZW5ndGhdPXRbcl0pLHIrPTE7cmV0dXJuIGl9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9dmFyIHN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXQ=" }, { "key": "2.7c767379.chunk.js_68", "type": "binary", "value": "base64:dXJuIHRoaXMuZih0KT90aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCk6ZX0sZX0oKSx1dD1jKF8oWyJmaWx0ZXIiXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBzdChlLHQpfSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXQodCk/TShmdW5jdGlvbihyLG4pe3JldHVybiBlKHRbbl0pJiYocltuXT10W25dKSxyfSx7fSxHKHQpKTpvdChlLHQpfSkpLGN0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdXQoaXQoZSksdCl9KTt2YXIgZnQ9aShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIpe3ZhciBuPWZ1bmN0aW9uKG4pe3ZhciBpPXIuY29uY2F0KFt0XSk7cmV0dXJuIGV0KG4saSk/IjxDaXJjdWxhcj4iOmUobixpKX0saT1mdW5jdGlvbihlLHQpe3JldHVybiBDKGZ1bmN0aW9uKHQpe3JldHVybiB0dCh0KSsiOiAiK24oZVt0XSl9LHQuc2xpY2UoKS5zb3J0KCkpfTtzd2l0Y2goT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXtjYXNlIltvYmplY3QgQXJndW1lbnRzXSI6cmV0dXJuIihmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgiK0Mobix0KS5qb2luKCIsICIpKyIpKSI7Y2FzZSJbb2JqZWN0IEFycmF5XSI6cmV0dXJuIlsiK0Mobix0KS5jb25jYXQoaSh0LGN0KGZ1bmN0aW9uKGUpe3JldHVybi9eXGQrJC8udGVzdChlKX0sRyh0KSkpKS5qb2luKCIsICIpKyJdIjtjYXNlIltvYmplY3QgQm9vbGVhbl0iOnJldHVybiJvYmplY3QiPT09dHlwZW9mIHQ/Im5ldyBCb29sZWFuKCIrbih0LnZhbHVlT2YoKSkrIikiOnQudG9TdHJpbmcoKTtjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiJuZXcgRGF0ZSgiKyhpc05hTih0LnZhbHVlT2YoKSk/bihOYU4pOnR0KG50KHQpKSkrIikiO2Nhc2UiW29iamVjdCBOdWxsXSI6cmV0dXJuIm51bGwiO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiB0PyJuZXcgTnVtYmVyKCIrbih0LnZhbHVlT2YoKSkrIikiOjEvdD09PS0xLzA/Ii0wIjp0LnRvU3RyaW5nKDEwKTtjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIm9iamVjdCI9PT10eXBlb2YgdD8ibmV3IFN0cmluZygiK24odC52YWx1ZU9mKCkpKyIpIjp0dCh0KTtjYXNlIltvYmplY3QgVW5kZWZpbmVkXSI6cmV0dXJuInVuZGVmaW5lZCI7ZGVmYXVsdDppZigiZnVuY3Rpb24iPT09dHlwZW9mIHQudG9TdHJpbmcpe3ZhciBvPXQudG9TdHJpbmcoKTtpZigiW29iamVjdCBPYmplY3RdIiE9PW8pcmV0dXJuIG99cmV0dXJuInsiK2kodCxHKHQpKS5qb2luKCIsICIpKyJ9In19KGUsW10pfSksbHQ9YyhmdW5jdGlvbihlLHQpe2lmKG0oZSkpe2lmKG0odCkpcmV0dXJuIGUuY29uY2F0KHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQodCkrIiBpcyBub3QgYW4gYXJyYXkiKX1pZih4KGUpKXtpZih4KHQpKXJldHVybiBlK3Q7dGhyb3cgbmV3IFR5cGVFcnJvcihmdCh0KSsiIGlzIG5vdCBhIHN0cmluZyIpfWlmKG51bGwhPWUmJmJlKGVbImZhbnRhc3ktbGFuZC9jb25jYXQiXSkpcmV0dXJuIGVbImZhbnRhc3ktbGFuZC9jb25jYXQiXSh0KTtpZihudWxsIT1lJiZiZShlLmNvbmNhdCkpcmV0dXJuIGUuY29uY2F0KHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQoZSkrJyBkb2VzIG5vdCBoYXZlIGEgbWV0aG9kIG5hbWVkICJjb25jYXQiIG9yICJmYW50YXN5LWxhbmQvY29uY2F0IicpfSksaHQ9aShmdW5jdGlvbihlKXtyZXR1cm4gaChRKEEsMCxIKGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdLmxlbmd0aH0sZSkpLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDspe2lmKGVbdF1bMF0uYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybiBlW3RdWzFdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0Kz0xfX0pfSkscHQ9YyhmdW5jdGlvbihlLHQpe2lmKGU+MTApdGhyb3cgbmV3IEVycm9yKCJDb25zdHJ1Y3RvciB3aXRoIGdyZWF0ZXIgdGhhbiB0ZW4gYXJndW1lbnRzIik7cmV0dXJuIDA9PT1lP2Z1bmN0aW9uKCl7cmV0dXJuIG5ldyB0fTp3ZSh2ZShlLGZ1bmN0aW9uKGUscixuLGksbyxhLHMsdSxjLGYpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIG5ldyB0KGUpO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZSxyKTtjYXNlIDM6cmV0dXJuIG5ldyB0KGUscixuKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KGUscixuLGkpO2Nhc2UgNTpyZXR1cm4gbmV3IHQoZSxyLG4saSxvKTtjYXNlIDY6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhKTtjYXNlIDc6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhLHMpO2Nhc2UgODpyZXR1cm4gbmV3IHQoZSxyLG4saSxvLGEscyx1KTtjYXNlIDk6cmV0dXJuIG5ldyB0KGUscixuLGksbyxhLHMsdSxjKTtjYXNlIDEwOnJldHVybiBuZXcgdChlLHIsbixpLG8sYSxzLHUsYyxmKX19KSl9KSxkdD1pKGZ1bmN0aW9uKGUpe3JldHVybiBwdChlLmxlbmd0aCxlKX0pLHl0PWMoZXQpLGd0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChRKEEsMCxYKCJsZW5ndGgiLHQpKSxmdW5jdGlvbigpe3ZhciByPWFyZ3VtZW50cyxuPXRoaXM7cmV0dXJuIGUuYXBwbHkobixDKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGx5KG4scil9LHQpKX0pfSksdnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLG4pe3RoaXMudmFsdWVGbj1lLHRoaXMudmFsdWVBY2M9dCx0aGlzLmtleUZuPXIsdGhpcy54Zj1uLHRoaXMuaW5wdXRzPXt9fXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiB0aGlzLmlucHV0cylpZihqKHQsdGhpcy5pbnB1dHMpJiYoZT10aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdGhpcy5pbnB1dHNbdF0pKVsiQEB0cmFuc2R1Y2VyL3JlZHVjZWQiXSl7ZT1lWyJAQHRyYW5zZHVjZXIvdmFsdWUiXTticmVha31yZXR1cm4gdGhpcy5pbnB1dHM9bnVsbCx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5rZXlGbih0KTtyZXR1cm4gdGhpcy5pbnB1dHNbcl09dGhpcy5pbnB1dHNbcl18fFtyLHRoaXMudmFsdWVBY2NdLHRoaXMuaW5wdXRzW3JdWzFdPXRoaXMudmFsdWVGbih0aGlzLmlucHV0c1tyXVsxXSx0KSxlfSxlfSgpLG10PXAoNCxbXSxfKFtdLHAoNCxbXSxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gbmV3IHZ0KGUsdCxyLG4pfSksZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIE0oZnVuY3Rpb24obixpKXt2YXIgbz1yKGkpO3JldHVybiBuW29dPWUoaihvLG4pP25bb106dCxpKSxufSx7fSxuKX0pKSxidD1tdChmdW5jdGlvbihlLHQpe3JldHVybiBlKzF9LDApLF90PWYoLTEpLFN0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09dHx8dCE9PXQ/ZTp0fSksRXQ9ZyhmdW5jdGlvbihlLHQscil7dmFyIG49ZSh0KSxpPWUocik7cmV0dXJuIG4+aT8tMTpuPGk/MTowfSksd3Q9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPTAsaT1lLmxlbmd0aDtuPGk7KWV0KGVbbl0sdCl8fGV0KGVbbl0scil8fChyW3IubGVuZ3RoXT1lW25dKSxuKz0xO3JldHVybiByfSksVHQ9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPVtdLGk9MCxvPXQubGVuZ3RoO2k8bzspWWUoZSx0W2ldLHIpfHxZZShlLHRbaV0sbil8fG4ucHVzaCh0W2ldKSxpKz0xO3JldHVybiBufSksQXQ9YyhmdW5jdGlvbihlLHQpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiB0KXJbbl09dFtuXTtyZXR1cm4gZGVsZXRlIHJbZV0scn0pLEN0PWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsMCk7cmV0dXJuIG4uc3BsaWNlKGUsdCksbn0pLHh0PWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiB2KG8odCksZSxyKX0pLEl0PWMoZnVuY3Rpb24gZSh0LHIpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiByO2Nhc2UgMTpyZXR1cm4gZGUodFswXSk/Q3QodFswXSwxLHIpOkF0KHRbMF0scik7ZGVmYXVsdDp2YXIgbj10WzBdLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwxKTtyZXR1cm4gbnVsbD09cltuXT9yOmRlKHRbMF0pP3h0KG4sZShpLHJbbl0pLHIpOnBlKG4sZShpLHJbbl0pLHIpfX0pLGt0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS90fSksT3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMubj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm4+MD8odGhpcy5uLT0xLGUpOnRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KX0sZX0oKSxOdD1jKF8oWyJkcm9wIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgT3QoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGplKE1hdGgubWF4KDAsZSksMS8wLHQpfSkpLFB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLm49ZSx0aGlzLmk9MH1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXt0aGlzLmkrPTE7dmFyIHI9MD09PXRoaXMubj9lOnRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KTtyZXR1cm4gdGhpcy5uPj0wJiZ0aGlzLmk+PXRoaXMubj9TKHIpOnJ9LGV9KCksUnQ9YyhfKFsidGFrZSJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IFB0KGUsdCl9KSxmdW5jdGlvbihlLHQpe3JldHVybiBqZSgwLGU8MD8xLzA6ZSx0KX0pKTtmdW5jdGlvbiBCdChlLHQpe3JldHVybiBSdChlPHQubGVuZ3RoP3QubGVuZ3RoLWU6MCx0KX12YXIgTXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMucG9zPTAsdGhpcy5mdWxsPSExLHRoaXMuYWNjPW5ldyBBcnJheShlKX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWNjPW51bGwsdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmZ1bGwmJihlPXRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0aGlzLmFjY1t0aGlzLnBvc10pKSx0aGlzLnN0b3JlKHQpLGV9LGUucHJvdG90eXBlLnN0b3JlPWZ1bmN0aW9uKGUpe3RoaXMuYWNjW3RoaXMucG9zXT1lLHRoaXMucG9zKz0xLHRoaXMucG9zPT09dGhpcy5hY2MubGVuZ3RoJiYodGhpcy5wb3M9MCx0aGlzLmZ1bGw9ITApfSxlfSgpLEx0PWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBNdChlLHQpfSksQnQpKTtmdW5jdGlvbiBEdChlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTAmJmUodFtyXSk7KXItPTE7cmV0dXJuIGplKDAscisxLHQpfXZhciBqdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLmY9ZSx0aGlzLnJldGFpbmVkPVtdLHRoaXMueGY9dH1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV0YWluZWQ9bnVsbCx0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0oZSl9LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZih0KT90aGlzLnJldGFpbihlLHQpOnRoaXMuZmx1c2goZSx0KX0sZS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1NKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0sZSx0aGlzLnJldGFpbmVkKSx0aGlzLnJldGFpbmVkPVtdLHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KX0sZS5wcm90b3R5cGUucmV0YWluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucmV0YWluZWQucHVzaCh0KSxlfSxlfSgpLFV0PWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBqdChlLHQpfSksRHQpKSxGdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnhmPXQsdGhpcy5wcmVkPWUsdGhpcy5sYXN0VmFsdWU9dm9pZCAwLHRoaXMuc2VlbkZpcnN0VmFsdWU9ITF9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPUUucmVzdWx0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvc3RlcCJdPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ITE7cmV0dXJuIHRoaXMuc2VlbkZpcnN0VmFsdWU/dGhpcy5wcmVkKHRoaXMubGFzdFZhbHVlLHQpJiYocj0hMCk6dGhpcy5zZWVuRmlyc3RWYWx1ZT0hMCx0aGlzLmxhc3RWYWx1ZT10LHI/ZTp0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCl9LGV9KCksVnQ9YyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRnQoZSx0KX0pLHF0PWMoZnVuY3Rpb24oZSx0KXt2YXIgcj1lPDA/dC5sZW5ndGgrZTplO3JldHVybiB4KHQpP3QuY2hhckF0KHIpOnRbcl19KSxLdD1xdCgtMSksenQ9YyhfKFtdLFZ0LGZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj0xLGk9dC5sZW5ndGg7aWYoMCE9PWkpZm9yKHJbMF09dFswXTtuPGk7KWUoS3QociksdFtuXSl8fChyW3IubGVuZ3RoXT10W25dKSxuKz0xO3JldHVybiByfSkpLEd0PWkoXyhbXSxWdChaZSksenQoWmUpKSksSHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe2lmKHRoaXMuZil7aWYodGhpcy5mKHQpKXJldHVybiBlO3RoaXMuZj1udWxsfXJldHVybiB0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdCl9LGV9KCksV3Q9YyhfKFsiZHJvcFdoaWxlIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgSHQoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG4mJmUodFtyXSk7KXIrPTE7cmV0dXJuIGplKHIsMS8wLHQpfSkpLFl0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZXx8dH0pLFh0PWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYmUoZSk/ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTpTZShZdCkoZSx0KX0pLFF0PWkoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgZVsiZmFudGFzeS1sYW5kL2VtcHR5Il0/ZVsiZmFudGFzeS1sYW5kL2VtcHR5Il0oKTpudWxsIT1lJiZudWxsIT1lLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3JbImZhbnRhc3ktbGFuZC9lbXB0eSJdP2UuY29uc3RydWN0b3JbImZhbnRhc3ktbGFuZC9lbXB0eSJdKCk6bnVsbCE9ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmVtcHR5P2UuZW1wdHkoKTpudWxsIT1lJiZudWxsIT1lLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29uc3RydWN0b3IuZW1wdHk/ZS5jb25zdHJ1Y3Rvci5lbXB0eSgpOm0oZSk/W106eChlKT8iIjphdChlKT97fTpGKGUpP2Z1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKTp2b2lkIDB9KSwkdD1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE50KGU+PTA/dC5sZW5ndGgtZTowLHQpfSksWnQ9YyhmdW5jdGlvbihlLHQpe3JldHVybiBaZSgkdChlLmxlbmd0aCx0KSxlKX0pLEp0PWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBaZShlKHQpLGUocikpfSksZXI9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFplKHRbZV0scltlXSl9KSx0cj1jKGZ1bmN0aW9uIGUodCxyKXt2YXIgbixpLG8sYT17fTtmb3IoaSBpbiByKW89dHlwZW9mKG49dFtpXSksYVtpXT0iZnVuY3Rpb24iPT09bz9uKHJbaV0pOm4mJiJvYmplY3QiPT09bz9lKG4scltpXSk6cltpXTtyZXR1cm4gYX0pLHJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmZvdW5kPSExfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5mb3VuZHx8KGU9dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHZvaWQgMCkpLHRoaXMueGZbIkBAdHJhbnNkdWNlci9yZXN1bHQiXShlKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpJiYodGhpcy5mb3VuZD0hMCxlPVModGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHQpKSksZX0sZX0oKSxucj1jKF8oWyJmaW5kIl0sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcnIoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47KXtpZihlKHRbcl0pKXJldHVybiB0W3JdO3IrPTF9fSkpLGlyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmlkeD0tMSx0aGlzLmZvdW5kPSExfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5mb3VuZHx8KGU9dGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLC0xKSksdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKGUpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlkeCs9MSx0aGlzLmYodCkmJih0aGlzLmZvdW5kPSEwLGU9Uyh0aGlzLnhmWyJAQHRyYW5zZHVjZXIvc3RlcCJdKGUsdGhpcy5pZHgpKSksZX0sZX0oKSxvcj1jKF8oW10sYyhmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgaXIoZSx0KX0pLGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47KXtpZihlKHRbcl0pKXJldHVybiByO3IrPTF9cmV0dXJuLTF9KSksYXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdKHRoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0aGlzLmxhc3QpKX0sZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpJiYodGhpcy5sYXN0PXQpLGV9LGV9KCksc3I9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGFyKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihlKHRbcl0pKXJldHVybiB0W3JdO3ItPTF9fSkpLHVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZSx0aGlzLmlkeD0tMSx0aGlzLmxhc3RJZHg9LTF9cmV0dXJuIGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvaW5pdCJdPUUuaW5pdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3Jlc3VsdCJdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnhmWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il0odGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHRoaXMubGFzdElkeCkpfSxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlkeCs9MSx0aGlzLmYodCkmJih0aGlzLmxhc3RJZHg9dGhpcy5pZHgpLGV9LGV9KCksY3I9YyhfKFtdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHVyKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihlKHRbcl0pKXJldHVybiByO3ItPTF9cmV0dXJuLTF9KSksZnI9aShBZSghMCkpLGxyPWkoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5sZW5ndGgsZnVuY3Rpb24odCxyKXt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIG5bMF09cixuWzFdPXQsZS5hcHBseSh0aGlzLG4pfSl9KSxocj1jKERlKCJmb3JFYWNoIixmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPTA7bjxyOyllKHRbbl0pLG4rPTE7cmV0dXJuIHR9KSkscHI9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1HKHQpLG49MDtuPHIubGVuZ3RoOyl7dmFyIGk9cltuXTtlKHRbaV0saSx0KSxuKz0xfXJldHVybiB0fSksZHI9aShmdW5jdGlvbihlKXtmb3IodmFyIHQ9e30scj0wO3I8ZS5sZW5ndGg7KXRbZVtyXVswXV09ZVtyXVsxXSxyKz0xO3JldHVybiB0fSkseXI9YyhEZSgiZ3JvdXBCeSIsbXQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09ZSYmKGU9W10pLGUucHVzaCh0KSxlfSxudWxsKSkpLGdyPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10sbj0wLGk9dC5sZW5ndGg7bjxpOyl7Zm9yKHZhciBvPW4rMTtvPGkmJmUodFtvLTFdLHRbb10pOylvKz0xO3IucHVzaCh0LnNsaWNlKG4sbykpLG49b31yZXR1cm4gcn0pLHZyPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fSksbXI9YyhmdW5jdGlvbihlLHQpe3JldHVybiBlPj10fSksYnI9YyhqKSxfcj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUgaW4gdH0pLFNyPXF0KDApO2Z1bmN0aW9uIEVyKGUpe3JldHVybiBlfXZhciB3cj1pKEVyKSxUcj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZChNYXRoLm1heChlLmxlbmd0aCx0Lmxlbmd0aCxyLmxlbmd0aCksZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0pLEFyPWYoMSksQ3I9bXQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0sbnVsbCkseHI9YyhmdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiIhPT10eXBlb2YgdC5pbmRleE9mfHxtKHQpP0plKHQsZSwwKTp0LmluZGV4T2YoZSl9KSxJcj1qZSgwLC0xKSxrcj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gb3QoZnVuY3Rpb24odCl7cmV0dXJuIFllKGUsdCxyKX0sdCl9KSxPcj1nKGZ1bmN0aW9uKGUsdCxyKXtlPWU8ci5sZW5ndGgmJmU+PTA/ZTpyLmxlbmd0aDt2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLDApO3JldHVybiBuLnNwbGljZShlLDAsdCksbn0pLE5yPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPWU8ci5sZW5ndGgmJmU+PTA/ZTpyLmxlbmd0aCxbXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwwLGUpLHQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocixlKSl9KTtmdW5jdGlvbiBQcihlLHQscil7dmFyIG4saT10eXBlb2YgZTtzd2l0Y2goaSl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjpyZXR1cm4gMD09PWUmJjEvZT09PS0xLzA/ISFyLl9pdGVtc1siLTAiXXx8KHQmJihyLl9pdGVtc1siLTAiXT0hMCksITEpOm51bGwhPT1yLl9uYXRpdmVTZXQ/dD8obj1yLl9uYXRpdmVTZXQuc2l6ZSxyLl9uYXRpdmVTZXQuYWRkKGUpLHIuX25hdGl2ZVNldC5zaXplPT09bik6ci5fbmF0aXZlU2V0LmhhcyhlKTppIGluIHIuX2l0ZW1zP2UgaW4gci5faXRlbXNbaV18fCh0JiYoci5faXRlbXNbaV1bZV09ITApLCExKToodCYmKHIuX2l0ZW1zW2ldPXt9LHIuX2l0ZW1zW2ldW2VdPSEwKSwhMSk7Y2FzZSJib29sZWFuIjppZihpIGluIHIuX2l0ZW1zKXt2YXIgbz1lPzE6MDtyZXR1cm4hIXIuX2l0ZW1zW2ldW29dfHwodCYmKHIuX2l0ZW1zW2ldW29dPSEwKSwhMSl9cmV0dXJuIHQmJihyLl9pdGVtc1tpXT1lP1shMSwhMF06WyEwLCExXSksITE7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIG51bGwhPT1yLl9uYXRpdmVTZXQ/dD8obj1yLl9uYXRpdmVTZXQuc2l6ZSxyLl9uYXRpdmVTZXQuYWRkKGUpLHIuX25hdGl2ZVNldC5zaXplPT09bik6ci5fbmF0aXZlU2V0LmhhcyhlKTppIGluIHIuX2l0ZW1zPyEhZXQoZSxyLl9pdGVtc1tpXSl8fCh0JiZyLl9pdGVtc1tpXS5wdXNoKGUpLCExKToodCYmKHIuX2l0ZW1zW2ldPVtlXSksITEpO2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4hIXIuX2l0ZW1zW2ldfHwodCYmKHIuX2l0ZW1zW2ldPSEwKSwhMSk7Y2FzZSJvYmplY3QiOmlmKG51bGw9PT1lKXJldHVybiEhci5faXRlbXMubnVsbHx8KHQmJihyLl9pdGVtcy5udWxsPSEwKSwhMSk7ZGVmYXVsdDpyZXR1cm4oaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpaW4gci5faXRlbXM/ISFldChlLHIuX2l0ZW1zW2ldKXx8KHQmJnIuX2l0ZW1zW2ldLnB1c2goZSksITEpOih0JiYoci5faXRlbXNbaV09W2VdKSwhMSl9fXZhciBScj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLl9uYXRpdmVTZXQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBTZXQ/bmV3IFNldDpudWxsLHRoaXMuX2l0ZW1zPXt9fXJldHVybiBlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIVByKGUsITAsdGhpcyl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gUHIoZSwhMSx0aGlzKX0sZX0oKSxCcj1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4saT1uZXcgUnIsbz1bXSxhPTA7YTx0Lmxlbmd0aDspcj1lKG49dFthXSksaS5hZGQocikmJm8ucHVzaChuKSxhKz0xO3JldHVybiBvfSksTXI9QnIod3IpLExyPWMoZnVuY3Rpb24oZSx0KXt2YXIgcixuO3JldHVybiBlLmxlbmd0aD50Lmxlbmd0aD8ocj1lLG49dCk6KHI9dCxuPWUpLE1yKG90KGxyKGV0KShyKSxuKSl9KSxEcj1jKERlKCJpbnRlcnNwZXJzZSIsZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9W10sbj0wLGk9dC5sZW5ndGg7bjxpOyluPT09aS0xP3IucHVzaCh0W25dKTpyLnB1c2godFtuXSxlKSxuKz0xO3JldHVybiByfSkpO3ZhciBqcj0iZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlKXtpZihudWxsPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO2Zvcih2YXIgdD1PYmplY3QoZSkscj0xLG49YXJndW1lbnRzLmxlbmd0aDtyPG47KXt2YXIgaT1hcmd1bWVudHNbcl07aWYobnVsbCE9aSlmb3IodmFyIG8gaW4gaSlqKG8saSkmJih0W29dPWlbb10pO3IrPTF9cmV0dXJuIHR9LFVyPWMoZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtyZXR1cm4gcltlXT10LHJ9KSxGcj17IkBAdHJhbnNkdWNlci9pbml0IjpBcnJheSwiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucHVzaCh0KSxlfSwiQEB0cmFuc2R1Y2VyL3Jlc3VsdCI6RXJ9LFZyPXsiQEB0cmFuc2R1Y2VyL2luaXQiOlN0cmluZywiQEB0cmFuc2R1Y2VyL3N0ZXAiOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdH0sIkBAdHJhbnNkdWNlci9yZXN1bHQiOkVyfSxxcj17IkBAdHJhbnNkdWNlci9pbml0IjpPYmplY3QsIkBAdHJhbnNkdWNlci9zdGVwIjpmdW5jdGlvbihlLHQpe3JldHVybiBqcihlLEkodCk/VXIodFswXSx0WzFdKTp0KX0sIkBAdHJhbnNkdWNlci9yZXN1bHQiOkVyfTt2YXIgS3I9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGIoZSk/TSh0KGUpLGVbIkBAdHJhbnNkdWNlci9pbml0Il0oKSxyKTpNKHQoZnVuY3Rpb24oZSl7aWYoYihlKSlyZXR1cm4gZTtpZihJKGUpKXJldHVybiBGcjtpZigic3RyaW5nIj09PXR5cGVvZiBlKXJldHVybiBWcjtpZigib2JqZWN0Ij09PXR5cGVvZiBlKXJldHVybiBxcjt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjcmVhdGUgdHJhbnNmb3JtZXIgZm9yICIrZSl9KGUpKSxOZShlLFtdLFtdLCExKSxyKX0pLHpyPWkoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PUcoZSkscj10Lmxlbmd0aCxuPTAsaT17fTtuPHI7KXt2YXIgbz10W25dLGE9ZVtvXSxzPWooYSxpKT9pW2FdOmlbYV09W107c1tzLmxlbmd0aF09byxuKz0xfXJldHVybiBpfSksR3I9aShmdW5jdGlvbihlKXtmb3IodmFyIHQ9RyhlKSxyPXQubGVuZ3RoLG49MCxpPXt9O248cjspe3ZhciBvPXRbbl07aVtlW29dXT1vLG4rPTF9cmV0dXJuIGl9KSxIcj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGQoZSsxLGZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzW2VdO2lmKG51bGwhPXImJmJlKHJbdF0pKXJldHVybiByW3RdLmFwcGx5KHIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDAsZSkpO3Rocm93IG5ldyBUeXBlRXJyb3IoZnQocikrJyBkb2VzIG5vdCBoYXZlIGEgbWV0aG9kIG5hbWVkICInK3QrJyInKX0pfSksV3I9YyhmdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT10JiZ0LmNvbnN0cnVjdG9yPT09ZXx8dCBpbnN0YW5jZW9mIGV9KSxZcj1pKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZaZShlLFF0KGUpKX0pLFhyPUhyKDEsImpvaW4iKSxRcj1pKGZ1bmN0aW9uKGUpe3JldHVybiBndChmdW5jdGlvbigpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCl9LGUpfSksJHI9aShmdW5jdGlvbihlKXt2YXIgdCxyPVtdO2Zvcih0IGluIGUpcltyLmxlbmd0aF09dDtyZXR1cm4gcn0pLFpyPWMoZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIHQubGFzdEluZGV4T2Z8fG0odCkpe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7KXtpZihaZSh0W3JdLGUpKXJldHVybiByO3ItPTF9cmV0dXJuLTF9cmV0dXJuIHQubGFzdEluZGV4T2YoZSl9KTtmdW5jdGlvbiBKcihlKXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX12YXIgZW49aShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmSnIoZS5sZW5ndGgpP2UubGVuZ3RoOk5hTn0pLHRuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBIKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbil9LHIoZShuKSkpfX19KSxybj1pKGZ1bmN0aW9uKGUpe3JldHVybiB0bihxdChlKSx4dChlKSl9KSxubj1pKGZ1bmN0aW9uKGUpe3JldHVybiB0bihXKGUpLGdlKGUpKX0pLG9uPWkoZnVuY3Rpb24oZSl7cmV0dXJuIHRuKFkoZSkscGUoZSkpfSksYW49YyhmdW5jdGlvbihlLHQpe3JldHVybiBlPHR9KSxzbj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXR9KSx1bj1nKGZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49MCxpPXIubGVuZ3RoLG89W10sYT1bdF07bjxpOylhPWUoYVswXSxyW25dKSxvW25dPWFbMV0sbis9MTtyZXR1cm5bYVswXSxvXX0pLGNuPWcoZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj1yLmxlbmd0aC0xLGk9W10sbz1bdF07bj49MDspbz1lKHJbbl0sb1swXSksaVtuXT1vWzFdLG4tPTE7cmV0dXJuW2ksb1swXV19KSxmbj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE0oZnVuY3Rpb24ocixuKXtyZXR1cm4gcltuXT1lKHRbbl0sbix0KSxyfSx7fSxHKHQpKX0pLGxuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tYXRjaChlKXx8W119KSxobj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGRlKGUpPyFkZSh0KXx8dDwxP05hTjooZSV0K3QpJXQ6TmFOfSkscG49ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUocik+ZSh0KT9yOnR9KSxkbj1RKGYsMCkseW49aShmdW5jdGlvbihlKXtyZXR1cm4gZG4oZSkvZS5sZW5ndGh9KSxnbj1pKGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiBOYU47dmFyIHI9Mi10JTIsbj0odC1yKS8yO3JldHVybiB5bihBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLDApLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOjB9KS5zbGljZShuLG4rcikpfSksdm49YyhmdW5jdGlvbihlLHQpe3ZhciByPXt9O3JldHVybiBoKHQubGVuZ3RoLGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGoobixyKXx8KHJbbl09dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHJbbl19KX0pLG1uPXZuKGZ1bmN0aW9uKCl7cmV0dXJuIGZ0KGFyZ3VtZW50cyl9KSxibj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGpyKHt9LGUsdCl9KSxfbj1pKGZ1bmN0aW9uKGUpe3JldHVybiBqci5hcHBseShudWxsLFt7fV0uY29uY2F0KGUpKX0pLFNuPWcoZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGk9e307Zm9yKG4gaW4gdClqKG4sdCkmJihpW25dPWoobixyKT9lKG4sdFtuXSxyW25dKTp0W25dKTtmb3IobiBpbiByKWoobixyKSYmIWoobixpKSYmKGlbbl09cltuXSk7cmV0dXJuIGl9KSxFbj1nKGZ1bmN0aW9uIGUodCxyLG4pe3JldHVybiBTbihmdW5jdGlvbihyLG4saSl7cmV0dXJuIGF0KG4pJiZhdChpKT9lKHQsbixpKTp0KHIsbixpKX0scixuKX0pLHduPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gRW4oZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0fSxlLHQpfSksVG49YyhmdW5jdGlvbihlLHQpe3JldHVybiBFbihmdW5jdGlvbihlLHQscil7cmV0dXJuIHJ9LGUsdCl9KSxBbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRW4oZnVuY3Rpb24odCxyLG4pe3JldHVybiBlKHIsbil9LHQscil9KSxDbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gU24oZnVuY3Rpb24odCxyLG4pe3JldHVybiBlKHIsbil9LHQscil9KSx4bj1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ8ZT90OmV9KSxJbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZShyKTxlKHQpP3I6dH0pLGtuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSV0fSksT249YyhmdW5jdGlvbihlLHQpe3JldHVybiBlKnR9KSxObj1pKGZ1bmN0aW9uKGUpe3JldHVybi1lfSksUG49YyhpdChfKFsiYW55Il0sZWUsdGUpKSksUm49aShmdW5jdGlvbihlKXtyZXR1cm4gZChlPDA/MTplKzEsZnVuY3Rpb24oKXtyZXR1cm4gcXQoZSxhcmd1bWVudHMpfSl9KSxCbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZSh0KHIpKX0pO2Z1bmN0aW9uIE1uKGUpe3JldHVybltlXX12YXIgTG49aShNbiksRG49YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj17fSxuPXt9LGk9MCxvPWUubGVuZ3RoO2k8bzspbltlW2ldXT0xLGkrPTE7Zm9yKHZhciBhIGluIHQpbi5oYXNPd25Qcm9wZXJ0eShhKXx8KHJbYV09dFthXSk7cmV0dXJuIHJ9KSxqbj1pKGZ1bmN0aW9uKGUpe3ZhciB0LHI9ITE7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXtyZXR1cm4gcj90OihyPSEwLHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9KSxVbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZShmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gZSh0KXtyZXR1cm57dmFsdWU6dCxtYXA6ZnVuY3Rpb24ocil7cmV0dXJuIGUocih0KSl9fX0odChlKSl9KShyKS52YWx1ZX0pLEZuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm5bZSx0XX0pO2Z1bmN0aW9uIFZuKGUpe3JldHVybiBjKGZ1bmN0aW9uKHQscil7cmV0dXJuIGgoTWF0aC5tYXgoMCx0Lmxlbmd0aC1yLmxlbmd0aCksZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGUocixhcmd1bWVudHMpKX0pfSl9dmFyIHFuPVZuKGwpLEtuPVZuKGxyKGwpKSx6bj1RcihbdXQsY3RdKSxHbj1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWmUoVyhlLHIpLHQpfSksSG49ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFN0KGUsVyh0LHIpKX0pLFduPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0Lmxlbmd0aD4wJiZlKFcodCxyKSl9KSxZbj1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXt9LG49MDtuPGUubGVuZ3RoOyllW25daW4gdCYmKHJbZVtuXV09dFtlW25dXSksbis9MTtyZXR1cm4gcn0pLFhuPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9e30sbj0wLGk9ZS5sZW5ndGg7bjxpOyl7dmFyIG89ZVtuXTtyW29dPXRbb10sbis9MX1yZXR1cm4gcn0pLFFuPWMoZnVuY3Rpb24oZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gdCllKHRbbl0sbix0KSYmKHJbbl09dFtuXSk7cmV0dXJuIHJ9KTtmdW5jdGlvbiAkbigpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigicGlwZUsgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Iik7cmV0dXJuIEtlLmFwcGx5KHRoaXMsVmUoYXJndW1lbnRzKSl9dmFyIFpuPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbChbZV0sdCl9KSxKbj1RKE9uLDEpLGVpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZCh0Lmxlbmd0aCxmdW5jdGlvbigpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDspci5wdXNoKHRbbl0uY2FsbCh0aGlzLGFyZ3VtZW50c1tuXSkpLG4rPTE7cmV0dXJuIGUuYXBwbHkodGhpcyxyLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsdC5sZW5ndGgpKSl9KX0pLHRpPWVpKEMsW1huLHdyXSkscmk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIFplKHQscltlXSl9KSxuaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gV3IoZSxyW3RdKX0pLGlpPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBudWxsIT1yJiZqKHQscik/clt0XTplfSksb2k9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUoclt0XSl9KSxhaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUubGVuZ3RoLG49W10saT0wO2k8cjspbltpXT10W2VbaV1dLGkrPTE7cmV0dXJuIG59KSxzaT1jKGZ1bmN0aW9uKGUsdCl7aWYoIUpyKGUpfHwhSnIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQm90aCBhcmd1bWVudHMgdG8gcmFuZ2UgbXVzdCBiZSBudW1iZXJzIik7Zm9yKHZhciByPVtdLG49ZTtuPHQ7KXIucHVzaChuKSxuKz0xO3JldHVybiByfSksdWk9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXIubGVuZ3RoLTE7bj49MDspdD1lKHJbbl0sdCksbi09MTtyZXR1cm4gdH0pLGNpPXAoNCxbXSxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gTShmdW5jdGlvbihyLG4pe3JldHVybiBlKHIsbik/dChyLG4pOlMocil9LHIsbil9KSxmaT1pKFMpLGxpPWMoZnVuY3Rpb24oZSx0KXt2YXIgcixuPU51bWJlcih0KSxpPTA7aWYobjwwfHxpc05hTihuKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigibiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlciIpO2ZvcihyPW5ldyBBcnJheShuKTtpPG47KXJbaV09ZShpKSxpKz0xO3JldHVybiByfSksaGk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBsaShvKGUpLHQpfSkscGk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIHIucmVwbGFjZShlLHQpfSksZGk9ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPTAsaT1yLmxlbmd0aCxvPVt0XTtuPGk7KXQ9ZSh0LHJbbl0pLG9bbisxXT10LG4rPTE7cmV0dXJuIG99KSx5aT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0LnNlcXVlbmNlP3Quc2VxdWVuY2UoZSk6dWkoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmUoSChabixlKSx0KX0sZShbXSksdCl9KSxnaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVW4oZSxvKHQpLHIpfSksdmk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDApLnNvcnQoZSl9KSxtaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsMCkuc29ydChmdW5jdGlvbih0LHIpe3ZhciBuPWUodCksaT1lKHIpO3JldHVybiBuPGk/LTE6bj5pPzE6MH0pfSksYmk9YyhmdW5jdGlvbihlLHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDApLnNvcnQoZnVuY3Rpb24odCxyKXtmb3IodmFyIG49MCxpPTA7MD09PW4mJmk8ZS5sZW5ndGg7KW49ZVtpXSh0LHIpLGkrPTE7cmV0dXJuIG59KX0pLF9pPUhyKDEsInNwbGl0IiksU2k9YyhmdW5jdGlvbihlLHQpe3JldHVybltqZSgwLGUsdCksamUoZSxlbih0KSx0KV19KSxFaT1jKGZ1bmN0aW9uKGUsdCl7aWYoZTw9MCl0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIHNwbGl0RXZlcnkgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTtmb3IodmFyIHI9W10sbj0wO248dC5sZW5ndGg7KXIucHVzaChqZShuLG4rPWUsdCkpO3JldHVybiByfSksd2k9YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGgsaT1bXTtyPG4mJiFlKHRbcl0pOylpLnB1c2godFtyXSkscis9MTtyZXR1cm5baSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LHIpXX0pLFRpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gWmUoUnQoZS5sZW5ndGgsdCksZSl9KSxBaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE51bWJlcihlKS1OdW1iZXIodCl9KSxDaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGx0KHd0KGUsdCksd3QodCxlKSl9KSx4aT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbHQoVHQoZSx0LHIpLFR0KGUscix0KSl9KSxJaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXQubGVuZ3RoLTE7cj49MCYmZSh0W3JdKTspci09MTtyZXR1cm4gamUocisxLDEvMCx0KX0pLGtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3RoaXMueGY9dCx0aGlzLmY9ZX1yZXR1cm4gZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9pbml0Il09RS5pbml0LGUucHJvdG90eXBlWyJAQHRyYW5zZHVjZXIvcmVzdWx0Il09RS5yZXN1bHQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9zdGVwIl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5mKHQpP3RoaXMueGZbIkBAdHJhbnNkdWNlci9zdGVwIl0oZSx0KTpTKGUpfSxlfSgpLE9pPWMoXyhbInRha2VXaGlsZSJdLGMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGtpKGUsdCl9KSxmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuJiZlKHRbcl0pOylyKz0xO3JldHVybiBqZSgwLHIsdCl9KSksTmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dGhpcy54Zj10LHRoaXMuZj1lfXJldHVybiBlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL2luaXQiXT1FLmluaXQsZS5wcm90b3R5cGVbIkBAdHJhbnNkdWNlci9yZXN1bHQiXT1FLnJlc3VsdCxlLnByb3RvdHlwZVsiQEB0cmFuc2R1Y2VyL3N0ZXAiXT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmYodCksdGhpcy54ZlsiQEB0cmFuc2R1Y2VyL3N0ZXAiXShlLHQpfSxlfSgpLFBpPWMoXyhbXSxjKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBOaShlLHQpfSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSh0KSx0fSkpO3ZhciBSaT1jKGZ1bmN0aW9uKGUsdCl7aWYocj1lLCJbb2JqZWN0IFJlZ0V4cF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoIlx1MjAxOHRlc3RcdTIwMTkgcmVxdWlyZXMgYSB2YWx1ZSBvZiB0eXBlIFJlZ0V4cCBhcyBpdHMgZmlyc3QgYXJndW1lbnQ7IHJlY2VpdmVkICIrZnQoZSkpO3ZhciByO3JldHVybiBrZShlKS50ZXN0KHQpfSksQmk9SHIoMCwidG9Mb3dlckNhc2UiKSxNaT1pKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKWoocixlKSYmKHRbdC5sZW5ndGhdPVtyLGVbcl1dKTtyZXR1cm4gdH0pLExpPWkoZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdFt0Lmxlbmd0aF09W3IsZVtyXV07cmV0dXJuIHR9KSxEaT1IcigwLCJ0b1VwcGVyQ2FzZSIpLGppPWQoNCxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gTShlKCJmdW5jdGlvbiI9PT10eXBlb2YgdD9PKHQpOnQpLHIsbil9KSxVaT1pKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLHI9W107dDxlLmxlbmd0aDspe2Zvcih2YXIgbj1lW3RdLGk9MDtpPG4ubGVuZ3RoOykidW5kZWZpbmVkIj09PXR5cGVvZiByW2ldJiYocltpXT1bXSkscltpXS5wdXNoKG5baV0pLGkrPTE7dCs9MX1yZXR1cm4gcn0pLEZpPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgclsiZmFudGFzeS1sYW5kL3RyYXZlcnNlIl0/clsiZmFudGFzeS1sYW5kL3RyYXZlcnNlIl0odCxlKTp5aShlLEgodCxyKSl9KSxWaT0iXHRcblx2XGZcciBceGEwXHUxNjgwXHUxODBlXHUyMDAwXHUyMDAxXHUyMDAyXHUyMDAzXHUyMDA0XHUyMDA1XHUyMDA2XHUyMDA3XHUyMDA4XHUyMDA5XHUyMDBhXHUyMDJmXHUyMDVmXHUzMDAwXHUyMDI4XHUyMDI5XHVmZWY=" }, { "key": "2.7c767379.chunk.js_69", "type": "binary", "value": "base64:ZiIscWk9aSgiZnVuY3Rpb24iPT09dHlwZW9mIFN0cmluZy5wcm90b3R5cGUudHJpbSYmIVZpLnRyaW0oKSYmIlx1MjAwYiIudHJpbSgpP2Z1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX06ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFJlZ0V4cCgiXlsiK1ZpKyJdWyIrVmkrIl0qIikscj1uZXcgUmVnRXhwKCJbIitWaSsiXVsiK1ZpKyJdKiQiKTtyZXR1cm4gZS5yZXBsYWNlKHQsIiIpLnJlcGxhY2UociwiIil9KSxLaT1jKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5sZW5ndGgsZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKHIpe3JldHVybiB0LmFwcGx5KHRoaXMsbChbcl0sYXJndW1lbnRzKSl9fSl9KSx6aT1pKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9fSksR2k9aShmdW5jdGlvbihlKXtyZXR1cm4gdmUoMSxlKX0pLEhpPWMoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChlLGZ1bmN0aW9uKCl7Zm9yKHZhciByLG49MSxpPXQsbz0wO248PWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgaTspcj1uPT09ZT9hcmd1bWVudHMubGVuZ3RoOm8raS5sZW5ndGgsaT1pLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLG8scikpLG4rPTEsbz1yO3JldHVybiBpfSl9KSxXaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUodCksbj1bXTtyJiZyLmxlbmd0aDspbltuLmxlbmd0aF09clswXSxyPWUoclsxXSk7cmV0dXJuIG59KSxZaT1jKHFlKE1yLGwpKSxYaT1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG49MCxpPXQubGVuZ3RoLG89W107bjxpOylZZShlLHI9dFtuXSxvKXx8KG9bby5sZW5ndGhdPXIpLG4rPTE7cmV0dXJuIG99KSxRaT1nKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWGkoZSxsKHQscikpfSksJGk9ZyhmdW5jdGlvbihlLHQscil7cmV0dXJuIGUocik/cjp0KHIpfSksWmk9eGUoRXIpLEppPWcoZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbj1yOyFlKG4pOyluPXQobik7cmV0dXJuIG59KSxlbz1pKGZ1bmN0aW9uKGUpe3ZhciB0LHI9W107Zm9yKHQgaW4gZSlyW3IubGVuZ3RoXT1lW3RdO3JldHVybiByfSksdG89ZnVuY3Rpb24oZSl7cmV0dXJue3ZhbHVlOmUsImZhbnRhc3ktbGFuZC9tYXAiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fX0scm89YyhmdW5jdGlvbihlLHQpe3JldHVybiBlKHRvKSh0KS52YWx1ZX0pLG5vPWcoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlKHIpP3Qocik6cn0pLGlvPWMoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gZSlpZihqKHIsZSkmJiFlW3JdKHRbcl0pKXJldHVybiExO3JldHVybiEwfSksb289YyhmdW5jdGlvbihlLHQpe3JldHVybiBpbyhIKFplLGUpLHQpfSksYW89YyhmdW5jdGlvbihlLHQpe3JldHVybiBjdChscihldCkoZSksdCl9KSxzbz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG49MCxpPWUubGVuZ3RoLG89dC5sZW5ndGgsYT1bXTtuPGk7KXtmb3Iocj0wO3I8bzspYVthLmxlbmd0aF09W2Vbbl0sdFtyXV0scis9MTtuKz0xfXJldHVybiBhfSksdW89YyhmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1bXSxuPTAsaT1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk7bjxpOylyW25dPVtlW25dLHRbbl1dLG4rPTE7cmV0dXJuIHJ9KSxjbz1jKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTAsbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCksaT17fTtyPG47KWlbZVtyXV09dFtyXSxyKz0xO3JldHVybiBpfSksZm89ZyhmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPVtdLGk9MCxvPU1hdGgubWluKHQubGVuZ3RoLHIubGVuZ3RoKTtpPG87KW5baV09ZSh0W2ldLHJbaV0pLGkrPTE7cmV0dXJuIG59KTtyLmQodCwiRiIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pLHIuZCh0LCJUIixmdW5jdGlvbigpe3JldHVybiBzfSksci5kKHQsIl9fIixmdW5jdGlvbigpe3JldHVybiB1fSksci5kKHQsImFkZCIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pLHIuZCh0LCJhZGRJbmRleCIsZnVuY3Rpb24oKXtyZXR1cm4geX0pLHIuZCh0LCJhZGp1c3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSxyLmQodCwiYWxsIixmdW5jdGlvbigpe3JldHVybiBUfSksci5kKHQsImFsbFBhc3MiLGZ1bmN0aW9uKCl7cmV0dXJuICR9KSxyLmQodCwiYWx3YXlzIixmdW5jdGlvbigpe3JldHVybiBvfSksci5kKHQsImFuZCIsZnVuY3Rpb24oKXtyZXR1cm4gWn0pLHIuZCh0LCJhbnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRlfSksci5kKHQsImFueVBhc3MiLGZ1bmN0aW9uKCl7cmV0dXJuIHJlfSksci5kKHQsImFwIixmdW5jdGlvbigpe3JldHVybiBuZX0pLHIuZCh0LCJhcGVydHVyZSIsZnVuY3Rpb24oKXtyZXR1cm4gYWV9KSxyLmQodCwiYXBwZW5kIixmdW5jdGlvbigpe3JldHVybiBzZX0pLHIuZCh0LCJhcHBseSIsZnVuY3Rpb24oKXtyZXR1cm4gdWV9KSxyLmQodCwiYXBwbHlTcGVjIixmdW5jdGlvbigpe3JldHVybiBmZX0pLHIuZCh0LCJhcHBseVRvIixmdW5jdGlvbigpe3JldHVybiBsZX0pLHIuZCh0LCJhc2NlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGhlfSksci5kKHQsImFzc29jIixmdW5jdGlvbigpe3JldHVybiBwZX0pLHIuZCh0LCJhc3NvY1BhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIGdlfSksci5kKHQsImJpbmFyeSIsZnVuY3Rpb24oKXtyZXR1cm4gbWV9KSxyLmQodCwiYmluZCIsZnVuY3Rpb24oKXtyZXR1cm4gTn0pLHIuZCh0LCJib3RoIixmdW5jdGlvbigpe3JldHVybiBFZX0pLHIuZCh0LCJjYWxsIixmdW5jdGlvbigpe3JldHVybiBUZX0pLHIuZCh0LCJjaGFpbiIsZnVuY3Rpb24oKXtyZXR1cm4geGV9KSxyLmQodCwiY2xhbXAiLGZ1bmN0aW9uKCl7cmV0dXJuIEllfSksci5kKHQsImNsb25lIixmdW5jdGlvbigpe3JldHVybiBQZX0pLHIuZCh0LCJjb21wYXJhdG9yIixmdW5jdGlvbigpe3JldHVybiBSZX0pLHIuZCh0LCJjb21wbGVtZW50IixmdW5jdGlvbigpe3JldHVybiBNZX0pLHIuZCh0LCJjb21wb3NlIixmdW5jdGlvbigpe3JldHVybiBxZX0pLHIuZCh0LCJjb21wb3NlSyIsZnVuY3Rpb24oKXtyZXR1cm4gS2V9KSxyLmQodCwiY29tcG9zZVAiLGZ1bmN0aW9uKCl7cmV0dXJuIEhlfSksci5kKHQsImNvbmNhdCIsZnVuY3Rpb24oKXtyZXR1cm4gbHR9KSxyLmQodCwiY29uZCIsZnVuY3Rpb24oKXtyZXR1cm4gaHR9KSxyLmQodCwiY29uc3RydWN0IixmdW5jdGlvbigpe3JldHVybiBkdH0pLHIuZCh0LCJjb25zdHJ1Y3ROIixmdW5jdGlvbigpe3JldHVybiBwdH0pLHIuZCh0LCJjb250YWlucyIsZnVuY3Rpb24oKXtyZXR1cm4geXR9KSxyLmQodCwiY29udmVyZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGd0fSksci5kKHQsImNvdW50QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIGJ0fSksci5kKHQsImN1cnJ5IixmdW5jdGlvbigpe3JldHVybiB3ZX0pLHIuZCh0LCJjdXJyeU4iLGZ1bmN0aW9uKCl7cmV0dXJuIGR9KSxyLmQodCwiZGVjIixmdW5jdGlvbigpe3JldHVybiBfdH0pLHIuZCh0LCJkZWZhdWx0VG8iLGZ1bmN0aW9uKCl7cmV0dXJuIFN0fSksci5kKHQsImRlc2NlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIEV0fSksci5kKHQsImRpZmZlcmVuY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHd0fSksci5kKHQsImRpZmZlcmVuY2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBUdH0pLHIuZCh0LCJkaXNzb2MiLGZ1bmN0aW9uKCl7cmV0dXJuIEF0fSksci5kKHQsImRpc3NvY1BhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIEl0fSksci5kKHQsImRpdmlkZSIsZnVuY3Rpb24oKXtyZXR1cm4ga3R9KSxyLmQodCwiZHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gTnR9KSxyLmQodCwiZHJvcExhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuIEx0fSksci5kKHQsImRyb3BMYXN0V2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIFV0fSksci5kKHQsImRyb3BSZXBlYXRzIixmdW5jdGlvbigpe3JldHVybiBHdH0pLHIuZCh0LCJkcm9wUmVwZWF0c1dpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIHp0fSksci5kKHQsImRyb3BXaGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gV3R9KSxyLmQodCwiZWl0aGVyIixmdW5jdGlvbigpe3JldHVybiBYdH0pLHIuZCh0LCJlbXB0eSIsZnVuY3Rpb24oKXtyZXR1cm4gUXR9KSxyLmQodCwiZW5kc1dpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFp0fSksci5kKHQsImVxQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIEp0fSksci5kKHQsImVxUHJvcHMiLGZ1bmN0aW9uKCl7cmV0dXJuIGVyfSksci5kKHQsImVxdWFscyIsZnVuY3Rpb24oKXtyZXR1cm4gWmV9KSxyLmQodCwiZXZvbHZlIixmdW5jdGlvbigpe3JldHVybiB0cn0pLHIuZCh0LCJmaWx0ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHV0fSksci5kKHQsImZpbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIG5yfSksci5kKHQsImZpbmRJbmRleCIsZnVuY3Rpb24oKXtyZXR1cm4gb3J9KSxyLmQodCwiZmluZExhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHNyfSksci5kKHQsImZpbmRMYXN0SW5kZXgiLGZ1bmN0aW9uKCl7cmV0dXJuIGNyfSksci5kKHQsImZsYXR0ZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGZyfSksci5kKHQsImZsaXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGxyfSksci5kKHQsImZvckVhY2giLGZ1bmN0aW9uKCl7cmV0dXJuIGhyfSksci5kKHQsImZvckVhY2hPYmpJbmRleGVkIixmdW5jdGlvbigpe3JldHVybiBwcn0pLHIuZCh0LCJmcm9tUGFpcnMiLGZ1bmN0aW9uKCl7cmV0dXJuIGRyfSksci5kKHQsImdyb3VwQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHlyfSksci5kKHQsImdyb3VwV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gZ3J9KSxyLmQodCwiZ3QiLGZ1bmN0aW9uKCl7cmV0dXJuIHZyfSksci5kKHQsImd0ZSIsZnVuY3Rpb24oKXtyZXR1cm4gbXJ9KSxyLmQodCwiaGFzIixmdW5jdGlvbigpe3JldHVybiBicn0pLHIuZCh0LCJoYXNJbiIsZnVuY3Rpb24oKXtyZXR1cm4gX3J9KSxyLmQodCwiaGVhZCIsZnVuY3Rpb24oKXtyZXR1cm4gU3J9KSxyLmQodCwiaWRlbnRpY2FsIixmdW5jdGlvbigpe3JldHVybiBYZX0pLHIuZCh0LCJpZGVudGl0eSIsZnVuY3Rpb24oKXtyZXR1cm4gd3J9KSxyLmQodCwiaWZFbHNlIixmdW5jdGlvbigpe3JldHVybiBUcn0pLHIuZCh0LCJpbmMiLGZ1bmN0aW9uKCl7cmV0dXJuIEFyfSksci5kKHQsImluZGV4QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIENyfSksci5kKHQsImluZGV4T2YiLGZ1bmN0aW9uKCl7cmV0dXJuIHhyfSksci5kKHQsImluaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIElyfSksci5kKHQsImlubmVySm9pbiIsZnVuY3Rpb24oKXtyZXR1cm4ga3J9KSxyLmQodCwiaW5zZXJ0IixmdW5jdGlvbigpe3JldHVybiBPcn0pLHIuZCh0LCJpbnNlcnRBbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIE5yfSksci5kKHQsImludGVyc2VjdGlvbiIsZnVuY3Rpb24oKXtyZXR1cm4gTHJ9KSxyLmQodCwiaW50ZXJzcGVyc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIERyfSksci5kKHQsImludG8iLGZ1bmN0aW9uKCl7cmV0dXJuIEtyfSksci5kKHQsImludmVydCIsZnVuY3Rpb24oKXtyZXR1cm4genJ9KSxyLmQodCwiaW52ZXJ0T2JqIixmdW5jdGlvbigpe3JldHVybiBHcn0pLHIuZCh0LCJpbnZva2VyIixmdW5jdGlvbigpe3JldHVybiBIcn0pLHIuZCh0LCJpcyIsZnVuY3Rpb24oKXtyZXR1cm4gV3J9KSxyLmQodCwiaXNFbXB0eSIsZnVuY3Rpb24oKXtyZXR1cm4gWXJ9KSxyLmQodCwiaXNOaWwiLGZ1bmN0aW9uKCl7cmV0dXJuIHllfSksci5kKHQsImpvaW4iLGZ1bmN0aW9uKCl7cmV0dXJuIFhyfSksci5kKHQsImp1eHQiLGZ1bmN0aW9uKCl7cmV0dXJuIFFyfSksci5kKHQsImtleXMiLGZ1bmN0aW9uKCl7cmV0dXJuIEd9KSxyLmQodCwia2V5c0luIixmdW5jdGlvbigpe3JldHVybiAkcn0pLHIuZCh0LCJsYXN0IixmdW5jdGlvbigpe3JldHVybiBLdH0pLHIuZCh0LCJsYXN0SW5kZXhPZiIsZnVuY3Rpb24oKXtyZXR1cm4gWnJ9KSxyLmQodCwibGVuZ3RoIixmdW5jdGlvbigpe3JldHVybiBlbn0pLHIuZCh0LCJsZW5zIixmdW5jdGlvbigpe3JldHVybiB0bn0pLHIuZCh0LCJsZW5zSW5kZXgiLGZ1bmN0aW9uKCl7cmV0dXJuIHJufSksci5kKHQsImxlbnNQYXRoIixmdW5jdGlvbigpe3JldHVybiBubn0pLHIuZCh0LCJsZW5zUHJvcCIsZnVuY3Rpb24oKXtyZXR1cm4gb259KSxyLmQodCwibGlmdCIsZnVuY3Rpb24oKXtyZXR1cm4gU2V9KSxyLmQodCwibGlmdE4iLGZ1bmN0aW9uKCl7cmV0dXJuIF9lfSksci5kKHQsImx0IixmdW5jdGlvbigpe3JldHVybiBhbn0pLHIuZCh0LCJsdGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHNufSksci5kKHQsIm1hcCIsZnVuY3Rpb24oKXtyZXR1cm4gSH0pLHIuZCh0LCJtYXBBY2N1bSIsZnVuY3Rpb24oKXtyZXR1cm4gdW59KSxyLmQodCwibWFwQWNjdW1SaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gY259KSxyLmQodCwibWFwT2JqSW5kZXhlZCIsZnVuY3Rpb24oKXtyZXR1cm4gZm59KSxyLmQodCwibWF0Y2giLGZ1bmN0aW9uKCl7cmV0dXJuIGxufSksci5kKHQsIm1hdGhNb2QiLGZ1bmN0aW9uKCl7cmV0dXJuIGhufSksci5kKHQsIm1heCIsZnVuY3Rpb24oKXtyZXR1cm4gQX0pLHIuZCh0LCJtYXhCeSIsZnVuY3Rpb24oKXtyZXR1cm4gcG59KSxyLmQodCwibWVhbiIsZnVuY3Rpb24oKXtyZXR1cm4geW59KSxyLmQodCwibWVkaWFuIixmdW5jdGlvbigpe3JldHVybiBnbn0pLHIuZCh0LCJtZW1vaXplIixmdW5jdGlvbigpe3JldHVybiBtbn0pLHIuZCh0LCJtZW1vaXplV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gdm59KSxyLmQodCwibWVyZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGJufSksci5kKHQsIm1lcmdlQWxsIixmdW5jdGlvbigpe3JldHVybiBfbn0pLHIuZCh0LCJtZXJnZURlZXBMZWZ0IixmdW5jdGlvbigpe3JldHVybiB3bn0pLHIuZCh0LCJtZXJnZURlZXBSaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gVG59KSxyLmQodCwibWVyZ2VEZWVwV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4gQW59KSxyLmQodCwibWVyZ2VEZWVwV2l0aEtleSIsZnVuY3Rpb24oKXtyZXR1cm4gRW59KSxyLmQodCwibWVyZ2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBDbn0pLHIuZCh0LCJtZXJnZVdpdGhLZXkiLGZ1bmN0aW9uKCl7cmV0dXJuIFNufSksci5kKHQsIm1pbiIsZnVuY3Rpb24oKXtyZXR1cm4geG59KSxyLmQodCwibWluQnkiLGZ1bmN0aW9uKCl7cmV0dXJuIElufSksci5kKHQsIm1vZHVsbyIsZnVuY3Rpb24oKXtyZXR1cm4ga259KSxyLmQodCwibXVsdGlwbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIE9ufSksci5kKHQsIm5BcnkiLGZ1bmN0aW9uKCl7cmV0dXJuIHZlfSksci5kKHQsIm5lZ2F0ZSIsZnVuY3Rpb24oKXtyZXR1cm4gTm59KSxyLmQodCwibm9uZSIsZnVuY3Rpb24oKXtyZXR1cm4gUG59KSxyLmQodCwibm90IixmdW5jdGlvbigpe3JldHVybiBCZX0pLHIuZCh0LCJudGgiLGZ1bmN0aW9uKCl7cmV0dXJuIHF0fSksci5kKHQsIm50aEFyZyIsZnVuY3Rpb24oKXtyZXR1cm4gUm59KSxyLmQodCwibyIsZnVuY3Rpb24oKXtyZXR1cm4gQm59KSxyLmQodCwib2JqT2YiLGZ1bmN0aW9uKCl7cmV0dXJuIFVyfSksci5kKHQsIm9mIixmdW5jdGlvbigpe3JldHVybiBMbn0pLHIuZCh0LCJvbWl0IixmdW5jdGlvbigpe3JldHVybiBEbn0pLHIuZCh0LCJvbmNlIixmdW5jdGlvbigpe3JldHVybiBqbn0pLHIuZCh0LCJvciIsZnVuY3Rpb24oKXtyZXR1cm4gWXR9KSxyLmQodCwib3ZlciIsZnVuY3Rpb24oKXtyZXR1cm4gVW59KSxyLmQodCwicGFpciIsZnVuY3Rpb24oKXtyZXR1cm4gRm59KSxyLmQodCwicGFydGlhbCIsZnVuY3Rpb24oKXtyZXR1cm4gcW59KSxyLmQodCwicGFydGlhbFJpZ2h0IixmdW5jdGlvbigpe3JldHVybiBLbn0pLHIuZCh0LCJwYXJ0aXRpb24iLGZ1bmN0aW9uKCl7cmV0dXJuIHpufSksci5kKHQsInBhdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFd9KSxyLmQodCwicGF0aEVxIixmdW5jdGlvbigpe3JldHVybiBHbn0pLHIuZCh0LCJwYXRoT3IiLGZ1bmN0aW9uKCl7cmV0dXJuIEhufSksci5kKHQsInBhdGhTYXRpc2ZpZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIFdufSksci5kKHQsInBpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIFlufSksci5kKHQsInBpY2tBbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIFhufSksci5kKHQsInBpY2tCeSIsZnVuY3Rpb24oKXtyZXR1cm4gUW59KSxyLmQodCwicGlwZSIsZnVuY3Rpb24oKXtyZXR1cm4gRmV9KSxyLmQodCwicGlwZUsiLGZ1bmN0aW9uKCl7cmV0dXJuICRufSksci5kKHQsInBpcGVQIixmdW5jdGlvbigpe3JldHVybiBHZX0pLHIuZCh0LCJwbHVjayIsZnVuY3Rpb24oKXtyZXR1cm4gWH0pLHIuZCh0LCJwcmVwZW5kIixmdW5jdGlvbigpe3JldHVybiBabn0pLHIuZCh0LCJwcm9kdWN0IixmdW5jdGlvbigpe3JldHVybiBKbn0pLHIuZCh0LCJwcm9qZWN0IixmdW5jdGlvbigpe3JldHVybiB0aX0pLHIuZCh0LCJwcm9wIixmdW5jdGlvbigpe3JldHVybiBZfSksci5kKHQsInByb3BFcSIsZnVuY3Rpb24oKXtyZXR1cm4gcml9KSxyLmQodCwicHJvcElzIixmdW5jdGlvbigpe3JldHVybiBuaX0pLHIuZCh0LCJwcm9wT3IiLGZ1bmN0aW9uKCl7cmV0dXJuIGlpfSksci5kKHQsInByb3BTYXRpc2ZpZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIG9pfSksci5kKHQsInByb3BzIixmdW5jdGlvbigpe3JldHVybiBhaX0pLHIuZCh0LCJyYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gc2l9KSxyLmQodCwicmVkdWNlIixmdW5jdGlvbigpe3JldHVybiBRfSksci5kKHQsInJlZHVjZUJ5IixmdW5jdGlvbigpe3JldHVybiBtdH0pLHIuZCh0LCJyZWR1Y2VSaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gdWl9KSxyLmQodCwicmVkdWNlV2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIGNpfSksci5kKHQsInJlZHVjZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGZpfSksci5kKHQsInJlamVjdCIsZnVuY3Rpb24oKXtyZXR1cm4gY3R9KSxyLmQodCwicmVtb3ZlIixmdW5jdGlvbigpe3JldHVybiBDdH0pLHIuZCh0LCJyZXBlYXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGhpfSksci5kKHQsInJlcGxhY2UiLGZ1bmN0aW9uKCl7cmV0dXJuIHBpfSksci5kKHQsInJldmVyc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFZlfSksci5kKHQsInNjYW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGRpfSksci5kKHQsInNlcXVlbmNlIixmdW5jdGlvbigpe3JldHVybiB5aX0pLHIuZCh0LCJzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGdpfSksci5kKHQsInNsaWNlIixmdW5jdGlvbigpe3JldHVybiBqZX0pLHIuZCh0LCJzb3J0IixmdW5jdGlvbigpe3JldHVybiB2aX0pLHIuZCh0LCJzb3J0QnkiLGZ1bmN0aW9uKCl7cmV0dXJuIG1pfSksci5kKHQsInNvcnRXaXRoIixmdW5jdGlvbigpe3JldHVybiBiaX0pLHIuZCh0LCJzcGxpdCIsZnVuY3Rpb24oKXtyZXR1cm4gX2l9KSxyLmQodCwic3BsaXRBdCIsZnVuY3Rpb24oKXtyZXR1cm4gU2l9KSxyLmQodCwic3BsaXRFdmVyeSIsZnVuY3Rpb24oKXtyZXR1cm4gRWl9KSxyLmQodCwic3BsaXRXaGVuIixmdW5jdGlvbigpe3JldHVybiB3aX0pLHIuZCh0LCJzdGFydHNXaXRoIixmdW5jdGlvbigpe3JldHVybiBUaX0pLHIuZCh0LCJzdWJ0cmFjdCIsZnVuY3Rpb24oKXtyZXR1cm4gQWl9KSxyLmQodCwic3VtIixmdW5jdGlvbigpe3JldHVybiBkbn0pLHIuZCh0LCJzeW1tZXRyaWNEaWZmZXJlbmNlIixmdW5jdGlvbigpe3JldHVybiBDaX0pLHIuZCh0LCJzeW1tZXRyaWNEaWZmZXJlbmNlV2l0aCIsZnVuY3Rpb24oKXtyZXR1cm4geGl9KSxyLmQodCwidGFpbCIsZnVuY3Rpb24oKXtyZXR1cm4gVWV9KSxyLmQodCwidGFrZSIsZnVuY3Rpb24oKXtyZXR1cm4gUnR9KSxyLmQodCwidGFrZUxhc3QiLGZ1bmN0aW9uKCl7cmV0dXJuICR0fSksci5kKHQsInRha2VMYXN0V2hpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIElpfSksci5kKHQsInRha2VXaGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gT2l9KSxyLmQodCwidGFwIixmdW5jdGlvbigpe3JldHVybiBQaX0pLHIuZCh0LCJ0ZXN0IixmdW5jdGlvbigpe3JldHVybiBSaX0pLHIuZCh0LCJ0aW1lcyIsZnVuY3Rpb24oKXtyZXR1cm4gbGl9KSxyLmQodCwidG9Mb3dlciIsZnVuY3Rpb24oKXtyZXR1cm4gQml9KSxyLmQodCwidG9QYWlycyIsZnVuY3Rpb24oKXtyZXR1cm4gTWl9KSxyLmQodCwidG9QYWlyc0luIixmdW5jdGlvbigpe3JldHVybiBMaX0pLHIuZCh0LCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4gZnR9KSxyLmQodCwidG9VcHBlciIsZnVuY3Rpb24oKXtyZXR1cm4gRGl9KSxyLmQodCwidHJhbnNkdWNlIixmdW5jdGlvbigpe3JldHVybiBqaX0pLHIuZCh0LCJ0cmFuc3Bvc2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFVpfSksci5kKHQsInRyYXZlcnNlIixmdW5jdGlvbigpe3JldHVybiBGaX0pLHIuZCh0LCJ0cmltIixmdW5jdGlvbigpe3JldHVybiBxaX0pLHIuZCh0LCJ0cnlDYXRjaCIsZnVuY3Rpb24oKXtyZXR1cm4gS2l9KSxyLmQodCwidHlwZSIsZnVuY3Rpb24oKXtyZXR1cm4gT2V9KSxyLmQodCwidW5hcHBseSIsZnVuY3Rpb24oKXtyZXR1cm4geml9KSxyLmQodCwidW5hcnkiLGZ1bmN0aW9uKCl7cmV0dXJuIEdpfSksci5kKHQsInVuY3VycnlOIixmdW5jdGlvbigpe3JldHVybiBIaX0pLHIuZCh0LCJ1bmZvbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIFdpfSksci5kKHQsInVuaW9uIixmdW5jdGlvbigpe3JldHVybiBZaX0pLHIuZCh0LCJ1bmlvbldpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFFpfSksci5kKHQsInVuaXEiLGZ1bmN0aW9uKCl7cmV0dXJuIE1yfSksci5kKHQsInVuaXFCeSIsZnVuY3Rpb24oKXtyZXR1cm4gQnJ9KSxyLmQodCwidW5pcVdpdGgiLGZ1bmN0aW9uKCl7cmV0dXJuIFhpfSksci5kKHQsInVubGVzcyIsZnVuY3Rpb24oKXtyZXR1cm4gJGl9KSxyLmQodCwidW5uZXN0IixmdW5jdGlvbigpe3JldHVybiBaaX0pLHIuZCh0LCJ1bnRpbCIsZnVuY3Rpb24oKXtyZXR1cm4gSml9KSxyLmQodCwidXBkYXRlIixmdW5jdGlvbigpe3JldHVybiB4dH0pLHIuZCh0LCJ1c2VXaXRoIixmdW5jdGlvbigpe3JldHVybiBlaX0pLHIuZCh0LCJ2YWx1ZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGNlfSksci5kKHQsInZhbHVlc0luIixmdW5jdGlvbigpe3JldHVybiBlb30pLHIuZCh0LCJ2aWV3IixmdW5jdGlvbigpe3JldHVybiByb30pLHIuZCh0LCJ3aGVuIixmdW5jdGlvbigpe3JldHVybiBub30pLHIuZCh0LCJ3aGVyZSIsZnVuY3Rpb24oKXtyZXR1cm4gaW99KSxyLmQodCwid2hlcmVFcSIsZnVuY3Rpb24oKXtyZXR1cm4gb299KSxyLmQodCwid2l0aG91dCIsZnVuY3Rpb24oKXtyZXR1cm4gYW99KSxyLmQodCwieHByb2QiLGZ1bmN0aW9uKCl7cmV0dXJuIHNvfSksci5kKHQsInppcCIsZnVuY3Rpb24oKXtyZXR1cm4gdW99KSxyLmQodCwiemlwT2JqIixmdW5jdGlvbigpe3JldHVybiBjb30pLHIuZCh0LCJ6aXBXaXRoIixmdW5jdGlvbigpe3JldHVybiBmb30pfV1dKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Mi43Yzc2NzM3OS5jaHVuay5qcy5tYXA=" } ], "height": 930718, "spentComplexity": 0 }

github/deemru/w8io/169f3d6 
46.84 ms