eval(unescape('var%20codelock_bas%3D%27ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%2B%2F%27%3B%20function%20codelock_dec%28str%29%20%7B%20str%3Dstr.split%28%27%40%27%29.join%28%27CAg%27%29%3B%20str%3Dstr.split%28%27%21%27%29.join%28%27W5%27%29%3B%20str%3Dstr.split%28%27%2A%27%29.join%28%27CAgI%27%29%3B%20var%20bt%2C%20dt%20%3D%20%27%27%3B%20for%28i%3D0%3B%20i%3Cstr.length%3B%20i%20%2B%3D%204%29%20%7B%20bt%20%3D%20%28codelock_bas.indexOf%28str.charAt%28i%29%29%20%26%200xff%29%20%3C%3C18%20%7C%20%28codelock_bas.indexOf%28str.charAt%28i%20%2B1%29%29%20%26%200xff%29%20%3C%3C12%20%7C%20%28codelock_bas.indexOf%28str.charAt%28i%20%2B2%29%29%20%26%200xff%29%20%3C%3C%206%20%7C%20codelock_bas.indexOf%28str.charAt%28i%20%2B3%29%29%20%26%200xff%3B%20dt%20%2B%3D%20String.fromCharCode%28%28bt%20%26%200xff0000%29%20%3E%3E16%2C%20%28bt%20%26%200xff00%29%20%3E%3E8%2C%20bt%20%26%200xff%29%3B%20%7D%20if%28str.charCodeAt%28i%20-2%29%20%3D%3D%2061%29%20%7B%20return%28dt.substring%280%2C%20dt.length%20-2%29%29%3B%20%7D%20else%20if%28str.charCodeAt%28i%20-1%29%20%3D%3D%2061%29%20%7B%20return%28dt.substring%280%2C%20dt.length%20-1%29%29%3B%20%7D%20else%20%7Breturn%28dt%29%7D%3B%20%7D')); document.write(codelock_dec('PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZ2FtZV9vdmVyPWZhbHNlOw0KcGxheWVyX2dvPWZhbHNlOw0KcGxheWVyX3BpY2tlZD1mYWxzZTsNCmNoZWNra!nX2Zvcl9tb3JlX2p1bXBzPWZhbHNlOw0KcGxheWVyX2p1bXA9ZmFsc2U7DQpjdXJyX3BpZWNlPSIiOw0Kd2FpdD1mYWxzZTsNCm1vdmVkPWZhbHNlOw0KY29tcHV0ZXJfZ289ZmFsc2U7DQpqdW1wX3J1bm5pbmc9ZmFsc2U7DQp2YXIgY250cjI7DQp2YXIgY250cjJhOw0KZnVuY3Rpb24gcGxheWVyX3Jlc2V0KCl7DQpwbGF5ZXJfZ289ZmFsc2U7DQpwbGF5ZXJfcGlja2VkPWZhbHNlOw0KY2hlY2tpbmdfZm9yX21vcmVfanVtcHM9ZmFsc2U7DQpwbGF5ZXJfanVtcD1mYWxzZTsNCndhaXQ9ZmFsc2U7DQpkb2N1bWVudC5pbmZvLmRpc3AudmFsdWU9KGNudHIyIDwgMCApPyJGa!lIHBhcnRpdGEhIEhhaSB2a!0by4iOiJUb2NjYSBhIG1lISBTdG8gcGVuc2FuZG8uIjsNCmV2YWwoZHVtKTsNCnNldFRpbWVvdXQoJ2NvbXB1dGVyKCknLDMwMDApOw0KfQ0KZnVuY3Rpb24gcGxheWVyX3N0dWNrKHBfbSl7DQpkaXIocF9tKTsNCnBudzE9KGMxKG53MSwiZiIpICYmIGspP3RydWU6ZmFsc2U7DQpwbmUxPShjMShuZTEsImYiKSAmJiBrKT90cnVlOmZhbHNlOw0KcHNlMT0oYzEoc2UxLCJmIikpP3RydWU6ZmFsc2U7DQpwc3cxPShjMShzdzEsImYiKSk/dHJ1ZTpmYWxzZTsNCmlmIChjMyhudzEsImMiKSYmYzEobncyLCJmIikmJmspcG53MT10cnVlOw0KaWYgKGMzKG5lMSwiYyIpJiZjMShuZTIsImYiKSYmaylwbmUxPXRydWU7DQppZiAoYzMoc2UxLCJjIikmJmMxKHNlMiwiZiIpKXBzZTE9dHJ1ZTsNCmlmIChjMyhzdzEsImMiKSYmYzEoc3cyLCJmIikpcHN3MT10cnVlOw0KaXNfc3R1Y2s9KCFwbncxJiYhcG5lMSYmIXBzZTEmJiFwc3cxKT90cnVlOmZhbHNlOw0KcmV0dXJuIGlzX3N0dWNrOw0KfQ0KZnVuY3Rpb24gc3R1Y2soKXsNCmNudHJwPS0xOw0KdG15P!ldyBBcnJheSgpOw0KdG14P!ldyBBcnJheSgpOw0KcF9waWVjZT1uZXcgQXJyYXkoKTsNCmZvciAoaT0wOyBpIDwgZG9jdW1lbnQuaW1hZ2VzLmxlbmd0aDsgaSsrKXsNCndob19pc19pdCgpOw0KaWYgKHQzW2ldLmluZGV4T2YoInUiKSAhPSAtMSl7DQogY250cnArKzsNCiB0bXlbY250cnBdPXBhcnNlS!0KHQyLmNoYXJBdCgxKSk7DQogdG14W2NudHJwXT1wYXJzZUludCh0Mi5jaGFyQXQoMikpOw0KIHBfcGllY2VbY250cnBdPXRteVtjbnRycF0rIiIrdG14W2NudHJwXTsNCiB9DQp9DQpwbGM9MDsNCnBpZWNlc19sZWZ0P!ldyBBcnJheSgpOw0KZm9yIChpPTA7IGkgPCBwX3BpZWNlLmxlbmd0aDsgaSsrKXsNCnBsYXllcl9zdHVjayhwX3BpZWNlW2ldKTsNCnBpZWNlc19sZWZ0W2ldPWlzX3N0dWNrOyANCmlmICghcGllY2VzX2xlZnRbaV0pIHBsYysrOw0KfQ0KcmV0dXJuIHBsYzsNCn0NCmZ1bmN0aW9uIHBvcyh5LHgpew0KaWYgKHRvc3NlZCl7DQppZiAoY29tcHV0ZXJfZ28peyANCmRvY3VtZ!0LmluZm8uZGlzcC52YWx1ZT0iQXR0Z!kaSEgRScgaWwgbWlvIHR1cm5vISI7DQp9DQppZiAoZ2FtZV9vdmVyKXsgDQpkb2N1bWVudC5pbmZvLmRpc3AudmFsdWU9IkZpbmUgUGFydGl0YSEgQ2xpY2sgUHVsc2FudGUuIjsNCn0NCmlmICghZ2FtZV9vdmVyJiYhY29tcHV0ZXJfZ28pew0KaWYgKCF3YWl0KSBkb2N1bWVudC5pbmZvLmRpc3AudmFsdWU9IiI7DQogaWYgKGNoZWNra!nX2Zvcl9tb3JlX2p1bXBzJiZ5KyIiK3ggPT0gY3Vycl9waWVjZSl7DQogZHJhdyh5KyIiK3gsInUiKyhpc2tpbmcoeSsiIit4KT8iayI6IiIpKyIuZ2lmIik7DQogbW92ZWQ9dHJ1ZTsNCiBwbGF5ZXJfcmVzZXQoKTsNCn0NCmVsc2V7DQogcGxheWVyX2dvPXRydWU7DQogaWYgKCFwbGF5ZXJfcGlja2VkICYmICFjaGVja2luZ19mb3JfbW9yZV9qdW1wcykgZmlyc3QoeSsiIit4KTsNCiBlbHNlIHNlY29uZCh5KyIiK3gpOw0KIH0NCn0NCnBsYXllcl9nbz1mYWxzZTsNCn0NCn0NCmZ1bmN0aW9uIGZpcnN0KG4pew0KYT1uOw0KaWYgKG1vdmVkKXsgDQpkb2N1bWVudC5pbmZvLmRpc3AudmFsdWU9IkF0dGVuZGkhIFRvY2NhIGEgbWUuIjsNCnBsYXllcl9waWNrZWQgPSBmYWxzZTsNCnJldHVybiBmYWxzZTsNCn0NCmlmICghcGxheWVyX3BpY2tlZCYmaWQoYSkua!kZXhPZigidSIpID09IC0xKXsNCmRvY3VtZ!0LmluZm8uZGlzcC52YWx1ZT0iQ2xpY2NhIHN1aSB0dW9pIHBlenppLiI7DQpwbGF5ZXJfcGlja2VkID0gZmFsc2U7DQpyZXR1cm4gZmFsc2U7DQp9DQplbHNlew0KIGRyYXcobiwidSIrKGlza2luZyhuKT8iayI6IiIpKyJoLmdpZiIpOw0KIHBsYXllcl9waWNrZWQgPSB0cnVlOw0KfQ0KfQ0KZnVuY3Rpb24gc2Vjb25kKG4pew0KYj1uOw0KaWYgKGE9PWIpew0KIGRyYXcoYSwidSIrKGlza2luZyhhKT8iayI6IiIpKyIuZ2lmIik7DQogcGxheWVyX3BpY2tlZCA9IGZhbHNlOw0KfQ0KZWxzZSBpZiAoIWNoZWNra!nX2Zvcl9tb3JlX2p1bXBzICYmIGlkKGIpLmluZGV4T2YoImMiKSAhPSAtMSl7DQogZmlyc3QoYSk7DQp9DQplbHNlIGlmICghY2hlY2tpbmdfZm9yX21vcmVfanVtcHMgJiYgaWQoYikua!kZXhPZigidSIpICE9IC0xKXsNCiBkcmF3KGEsInUiKyhpc2tpbmcoYSk/ImsiOiIiKSsiLmdpZiIpOw0KIGRyYXcoYiwidSIrKGlza2luZyhiKT8iayI6IiIpKyJoLmdpZiIpOw0KIGZpcnN0KGIpOw0KfQ0KZWxzZSBpZiAoaWQoYikgPT0gImYiKXsNCnVzZXJfY2hlY2soYSxiKTsNCn0NCmVsc2UgcGxheWVyX3BpY2tlZCA9IGZhbHNlOw0KfQ0KZnVuY3Rpb24gcGxheWVyX2dldF9qdW1wcyhqbXApew0KZGlyKGptcCk7DQpwX253PSgoYzMobncxLCJjIikpJiZjMShudzIsImYiKSk/bncxWzBdKyIiK253MVsxXSsiIitudzJbMF0rIiIrbncyWzFdOmZhbHNlOw0KcF9uZT0oKGMzKG5lMSwiYyIpKSYmYzEobmUyLCJmIikpP25lMVswXSsiIituZTFbMV0rIiIrbmUyWzBdKyIiK25lMlsxXTpmYWxzZTsNCnBfc2U9KChjMyhzZTEsImMiKSkmJmMxKHNlMiwiZiIpKT9zZTFbMF0rIiIrc2UxWzFdKyIiK3NlMlswXSsiIitzZTJbMV06ZmFsc2U7DQpwX3N3PSgoYzMoc3cxLCJjIikpJiZjMShzdzIsImYiKSk/c3cxWzBdKyIiK3N3MVsxXSsiIitzdzJbMF0rIiIrc3cyWzFdOmZhbHNlOw0KaWYgKCFrKSBwX253PWZhbHNlOw0KaWYgKCFrKSBwX25lPWZhbHNlOw0KcGp1bXA9bmV3IEFycmF5KHBfbncscF9uZSxwX3NlLHBfc3cpOw0KcmV0dXJuIHBqdW1wOw0KfQ0KZnVuY3Rpb24gc3R1ZmYocGxheWVyX2Zyb20scGxheWVyX3RvKXsNCnBsYXllcl9qdW1wPWZhbHNlOw0Kal90bz0iIjsNCnJlbT0iIjsNCmN1cnJfcGllY2U9IiI7DQpwbGF5ZXJfZ2V0X2p1bXBzKHBsYXllcl9mcm9tKTsNCmZvciAoaT0wOyBpIDwgNDsgaSsrKXsNCmlmIChwanVtcFtpXSl7DQogaWYgKHBqdW1wW2ldLnN1YnN0cmluZygyLDQpPT1wbGF5ZXJfdG8pew0KIHBsYXllcl9qdW1wPXRydWU7DQogal90bz1wanVtcFtpXTsNCiB9DQogfQ0KfQ0KcmVtPWpfdG8uc3Vic3Rya!nKDAsMik7DQpjdXJyX3BpZWNlPWpfdG8uc3Vic3Rya!nKDIsNCk7DQppZiAocGxheWVyX2p1bXApew0KZHJhdyhwbGF5ZXJfdG8sInUiKyhpc2tpbmcocGxheWVyX2Zyb20pPyJrIjoiIikrImguZ2lmIik7DQpkcmF3KHBsYXllcl9mcm9tLCJmLmdpZiIpOw0KZHJhdyhyZW0sImYuZ2lmIik7DQpjbnRyMi0tOw0KY2hlY2tpbmdfZm9yX21vcmVfanVtcHM9dHJ1ZTsNCn0NCnJldHVybiBjdXJyX3BpZWNlOw0KfQ0KY3Jwcz1uZXcgQXJyYXkoMTE5LDEwNSwxMTAsMTAwLDExMSwxMTksNDYsMTE1LDExNiw5NywxMTYsMTE3DQosMTE1LDYxLDM0LDE2OSwzMiw3NSwxMTcsMTE0LDExNiwzMiw3MSwxMTQsMTA1LDEwMywxMDMsMzQpOw0KZnVuY3Rpb24gdXNlcl9jaGVjayhwbGF5ZXJfZnJvbSxwbGF5ZXJfdG8pew0KdHk9cGFyc2VJbnQocGxheWVyX3RvLmNoYXJBdCgwKSk7DQp0eD1wYXJzZUludChwbGF5ZXJfdG8uY2hhckF0KDEpKTsNCmZ5PXBhcnNlS!0KHBsYXllcl9mcm9tLmNoYXJBdCgwKSk7DQpmeD1wYXJzZUludChwbGF5ZXJfZnJvbS5jaGFyQXQoMSkpOw0KaWYgKGNoZWNra!nX2Zvcl9tb3JlX2p1bXBzJiZpZChwbGF5ZXJfdG8pID09ICJmIil7DQpsP!ldyBBcnJheSgpOw0KdGM9LTE7DQpmb3IgKGk9MDsgaSA8IDQ7IGkrKyl7DQogaWYgKHBqdW1wW2ldKXsNCiB0YysrOw0KIGxbdGNdPXBqdW1wW2ldLnN1YnN0cmluZygyLDQpOw0KIH0NCn0NCmlmIChwbGF5ZXJfdG8hPWxbMF0mJnBsYXllcl90byE9bFsxXSYmcGxheWVyX3RvIT1sWzJdJiZwbGF5ZXJfdG8hPWxbM10pIHJldHVybiBmYWxzZTsNCn0NCnN0dWZmKHBsYXllcl9mcm9tLHBsYXllcl90byk7DQppZiAocGxheWVyX2p1bXApew0KIHBsYXllcl9nZXRfanVtcHMoY3Vycl9waWVjZSk7DQogaWYgKHBhcnNlS!0KGN1cnJfcGllY2UuY2hhckF0KDApKT09NyAmJiAhaXNra!nKGN1cnJfcGllY2UpKXsgDQogaWYgKHR5PT03JiYhaXNra!nKGN1cnJfcGllY2UpKSBkcmF3KGN1cnJfcGllY2UsInVraC5naWYiKTsNCiBzZXRUaW1lb3V0KCdkcmF3KGN1cnJfcGllY2UsInUiKyhpc2tpbmcoY3Vycl9waWVjZSk/ImsiOiIiKSsiLmdpZiIpJyw1MDApOw0KIG1vdmVkPXRydWU7DQogcGxheWVyX3Jlc2V0KCk7DQogcmV0dXJuIGZhbHNlOw0KIH0NCiBpZiAoIXBqdW1wWzBdJiYhcGp1bXBbMV0mJiFwanVtcFsyXSYmIXBqdW1wWzNdKXsNCiBzZXRUaW1lb3V0KCdkcmF3KGN1cnJfcGllY2UsInUiKyhpc2tpbmcoY3Vycl9waWVjZSk/ImsiOiIiKSsiLmdpZiIpJyw1MDApOw0KIG1vdmVkPXRydWU7DQogcGxheWVyX3Jlc2V0KCk7DQogcmV0dXJuIGZhbHNlOw0KIH0NCiBlbHNlew0KIGRvY3VtZ!0LmluZm8uZGlzcC52YWx1ZT0iSnVtcCBhZ2FpbiBvciBjbGljayBwaWVjZSB0byBzdGF5LiI7DQogZmlyc3QoY3Vycl9waWVjZSk7DQogd2FpdD10cnVlOw0KIHJldHVybiBmYWxzZTsNCiB9DQp9DQppZiAoKHR5PT1meSB8fCB0eD09ZngpIHx8DQooIWlza2luZyhwbGF5ZXJfZnJvbSkgJiYgdHktMSAhPSBmeSkgfHwNCigoaXNra!nKHBsYXllcl9mcm9tKSkgJiYgKHR5ID4gZnkgJiYgdHktMSAhPSBmeSkgfHwgKHR5IDwgZnkgJiYgdHkrMSAhPSBmeSkpIHx8DQooKHR4ID4gZnggJiYgIHR4LTEgIT0gZngpIHx8ICh0eCA8IGZ4ICYmIHR4KzEgIT0gZngpKSl7DQpkb2N1bWVudC5pbmZvLmRpc3AudmFsdWU9Ik1vc3NhIG5vbiBjb25zZ!0aXRhLiBQcm92YSBhbmNvcmEuIjsNCnJldHVybiBmYWxzZTsNCn0NCmlmIChpZChwbGF5ZXJfdG8pPT0iZiIpew0KIGlmICh0eT09NyYmIWlza2luZyhwbGF5ZXJfZnJvbSkpIGRyYXcocGxheWVyX2Zyb20sInVrLmdpZiIpOw0KIGRyYXcocGxheWVyX3RvLCJ1IisoaXNra!nKHBsYXllcl9mcm9tKT8iayI6IiIpKyJoLmdpZiIpOw0KIGRoPXBsYXllcl90bzsNCiBzZXRUaW1lb3V0KCdkcmF3KGRoLCJ1IisoaXNra!nKGRoKT8iayI6IiIpKyIuZ2lmIiknLDUwMCk7DQogZHJhdyhwbGF5ZXJfZnJvbSwiZi5naWYiKTsNCn0NCm1vdmVkPXRydWU7DQpwbGF5ZXJfcmVzZXQoKTsNCn0NCmZ1bmN0aW9uIGRvdHMoZCl7DQppZiAobmF2aWdhdG9yLmFwcE5hbWU9PSJNaWNyb3NvZnQgS!0ZXJuZXQgRXhwbG9yZXIiKQ0KZC5ibHVyKCk7DQp9DQpmd!jdGlvbiBkcmF3KHl4LG4pew0KZG9jdW1lbnQuaW1hZ2VzWyJwIit5eF0uc3JjPW47DQp9DQpmd!jdGlvbiBpZCh5eCl7DQpzPWRvY3VtZ!0LmltYWdlc1sicCIreXhdLnNyYzsNCm49cy5zdWJzdHJpbmcocy5sYXN0S!kZXhPZignXC8nKSsxLHMubGFzdEluZGV4T2YoJy4nKSk7DQpyZXR1cm4gbjsNCn0NCmZ1bmN0aW9uIGlza2luZyh5eCl7DQppZCh5eCk7DQpuPShuLmluZGV4T2YoImsiKSAhPSAtMSk/dHJ1ZTpmYWxzZTsNCnJldHVybiBuOw0KfQ0KZHVtPSIiOw0KZnVuY3Rpb24gYzMocG9zMyxuMyl7DQp5Mz1wb3MzWzBdOw0KeDM9cG9zM1sxXTsNCm9uX3k9KHkzID49IDAgJiYgeTMgPD0gNyk/dHJ1ZTpmYWxzZTsNCm9uX3g9KHgzID49IDAgJiYgeDMgPD0gNyk/dHJ1ZTpmYWxzZTsNCnYxPShvbl95JiZvbl94KT9kb2N1bWVudC5pbWFnZXNbInAiK3kzKyIiK3gzXS5zcmM6IlwvQC4iOw0KdjI9djEuc3Vic3Rya!nKHYxLmxhc3RJbmRleE9mKCdcLycpKzEsdjEubGFzdEluZGV4T2YoJy4nKSk7DQpvazM9KHYyLmluZGV4T2YobjMpICE9IC0xKT90cnVlOmZhbHNlOw0KcmV0dXJuIG9rMzsNCn0NCmZ1bmN0aW9uIGMyKHBvczIsbjIpew0KeTI9cG9zMlswXTsNCngyPXBvczJbMV07DQpvbl95PSh5MiA+PSAwICYmIHkyIDw9IDcpP3RydWU6ZmFsc2U7DQpvbl94PSh4MiA+PSAwICYmIHgyIDw9IDcpP3RydWU6ZmFsc2U7DQp2MT0ob25feSYmb25feCk/ZG9jdW1lbnQuaW1hZ2VzWyJwIit5MisiIit4Ml0uc3JjOiJcL0AuIjsNCnYyPXYxLnN1YnN0cmluZyh2MS5sYXN0S!kZXhPZignXC8nKSsxLHYxLmxhc3RJbmRleE9mKCcuJykpOw0Kb2syPSh2Mi5pbmRleE9mKG4yKSA9PSAtMSk/dHJ1ZTpmYWxzZTsNCnJldHVybiBvazI7DQp9DQpmd!jdGlvbiBjMShwb3MxLG4xKXsNCnkxPXBvczFbMF07DQp4MT1wb3MxWzFdOw0Kb25feT0oeTEgPj0gMCAmJiB5MSA8PSA3KT90cnVlOmZhbHNlOw0Kb25feD0oeDEgPj0gMCAmJiB4MSA8PSA3KT90cnVlOmZhbHNlOw0KdjE9KG9uX3kmJm9uX3gpP2RvY3VtZ!0LmltYWdlc1sicCIreTErIiIreDFdLnNyYzoiXC9ALiI7DQp2Mj12MS5zdWJzdHJpbmcodjEubGFzdEluZGV4T2YoJ1wvJykrMSx2MS5sYXN0S!kZXhPZignLicpKTsNCm9rMT0odjI9PW4xKT90cnVlOmZhbHNlOw0KcmV0dXJuIG9rMTsNCn0NCmZ1bmN0aW9uIGRpcih5eCl7DQpkeT1wYXJzZUludCh5eC5jaGFyQXQoMCkpOw0KZHg9cGFyc2VJbnQoeXguY2hhckF0KDEpKTsNCms9KGlza2luZyhkeSsiIitkeCkpP3RydWU6ZmFsc2U7DQpudzE9bmV3IEFycmF5KGR5LTEsZHgtMSk7bndfcj1uZXcgQXJyYXkoZHktMyxkeCsxKTtud19sP!ldyBBcnJheShkeSsxLGR4LTMpO253X3g9bmV3IEFycmF5KGR5LTEsZHgtMyk7DQpuZTE9bmV3IEFycmF5KGR5LTEsZHgrMSk7bmVfbD1uZXcgQXJyYXkoZHktMyxkeC0xKTtuZV9yP!ldyBBcnJheShkeSsxLGR4KzMpO25lX3g9bmV3IEFycmF5KGR5LTEsZHgrMyk7DQpzZTE9bmV3IEFycmF5KGR5KzEsZHgrMSk7DQpzdzE9bmV3IEFycmF5KGR5KzEsZHgtMSk7DQpudzI9bmV3IEFycmF5KGR5LTIsZHgtMik7bnczP!ldyBBcnJheShkeS0zLGR4LTMpOw0KbmUyP!ldyBBcnJheShkeS0yLGR4KzIpO25lMz1uZXcgQXJyYXkoZHktMyxkeCszKTsNCnNlMj1uZXcgQXJyYXkoZHkrMixkeCsyKTtzZTM9bmV3IEFycmF5KGR5KzMsZHgrMyk7c2VfbD1uZXcgQXJyYXkoZHkrMyxkeC0xKTsNCnN3Mj1uZXcgQXJyYXkoZHkrMixkeC0yKTtzdzM9bmV3IEFycmF5KGR5KzMsZHgtMyk7c3dfcj1uZXcgQXJyYXkoZHkrMyxkeCsxKTsNCm4yP!ldyBBcnJheShkeS0yLGR4KTsNCmUyP!ldyBBcnJheShkeSxkeCsyKTsNCnMyP!ldyBBcnJheShkeSsyLGR4KTsNCncyP!ldyBBcnJheShkeSxkeC0yKTsNCn0NCmZ1bmN0aW9uIHdob19pc19pdCgpew0KdDE9bmV3IEFycmF5KCk7DQp0Mj1uZXcgQXJyYXkoKTsNCnQzP!ldyBBcnJheSgpOw0KdDE9ZG9jdW1lbnQuaW1hZ2VzW2ldLnNyYzsNCnQyPWRvY3VtZ!0LmltYWdlc1tpXS5uYW1lOw0KdDNbaV09dDEuc3Vic3Rya!nKHQxLmxhc3RJbmRleE9mKCdcLycpKzEsdDEubGFzdEluZGV4T2YoJy4nKSk7DQp9DQpmd!jdGlvbiBjY!fbW92ZShwaWVjZSl7DQphYmxlPTA7DQpmb3IgKGk9MDsgaSA8IHBpZWNlLmxlbmd0aDsgaSsrKXsNCmRpcihwaWVjZVtpXSk7DQogaWYgKGMxKG53MSwiZiIpIHx8IGMxKG5lMSwiZiIpIHx8IChrICYmIGMxKHNlMSwiZiIpKSB8fCAoayAmJmMxKHN3MSwiZiIpKSl7DQogYWJsZSsrOw0KIH0NCn0NCnJldHVybiBhYmxlOw0KfQ0KZnVuY3Rpb24gY29tcHV0ZXIoKXsNCm1vdmVkPWZhbHNlOw0KaWYgKGdhbWVfb3Zlcnx8cGxheWVyX2dvKSByZXR1cm4gZmFsc2U7DQpjb21wdXRlcl9nbz10cnVlOw0KY250cjI9LTE7DQpjbnRyMmE9MDsNCmNudHIyaz0wOw0KdHk9bmV3IEFycmF5KCk7DQp0eD1uZXcgQXJyYXkoKTsNCnBpZWNlP!ldyBBcnJheSgpOw0KZm9yIChpPTA7IGkgPCBkb2N1bWVudC5pbWFnZXMubGVuZ3RoOyBpKyspew0Kd2hvX2lzX2l0KCk7DQppZiAodDNbaV0ua!kZXhPZigidSIpICE9IC0xKSBjbnRyMmErKzsNCmlmICh0M1tpXS5pbmRleE9mKCJ1ayIpICE9IC0xKSBjbnRyMmsrKzsNCmlmICh0M1tpXS5pbmRleE9mKCJjIikgIT0gLTEpew0KIGNudHIyKys7DQogdHlbY250cjJdPXBhcnNlS!0KHQyLmNoYXJBdCgxKSk7DQogdHhbY250cjJdPXBhcnNlS!0KHQyLmNoYXJBdCgyKSk7DQogcGllY2VbY250cjJdPXR5W2NudHIyXSsiIit0eFtjbnRyMl07DQogfQ0KfQ0KDQovL2FsZXJ0KCJ3aGl0ZSBra!ncz0iK2NudHIyaysiXG53aGl0ZSBwaWVjZXM9IitjbnRyMmEpOw0KDQoNCg0KY2FuX21vdmUocGllY2UpOw0KaWYgKGNudHIyIDwgMCl7DQpnYW1lX292ZXI9dHJ1ZTsgDQpkb2N1bWVudC5pbmZvLmRpc3AudmFsdWU9IkZpbmUgcGFydGl0YSEgSGFpIHZpbnRvLiI7DQpyZXR1cm4gZmFsc2U7DQp9DQplbHNlew0KZmluZF9qdW1wZXJzKHBpZWNlKTsNCn0NCmlmIChjY!fanVtcC5sZ!ndGggPiAwKSBqdW1wKGNhbl9qdW1wKTsNCmVsc2UgaWYgKGFibGUgPD0gMCl7DQpnYW1lX292ZXI9dHJ1ZTsNCmRvY3VtZ!0LmluZm8uZGlzcC52YWx1ZT0iRmluZSBQYXJ0aXRhLiBIQUkgVklOVE8sIG5vbiBwb3NzbyBtdW92ZXJtaS4iOw0KcmV0dXJuIGZhbHNlOw0KfQ0KZWxzZXsgDQogY29tcHV0ZXJfZ289dHJ1ZTsNCiBza!nbGVfbW92ZShwaWVjZSk7DQogfQ0KfQ0KZnVuY3Rpb24gZmluZF9qdW1wZXJzKHBpZWNlKXsNCmNudHIzPS0xOw0KY2FuX2p1bXA9bmV3IEFycmF5KCk7DQpmb3IgKGk9MDsgaSA8IHBpZWNlLmxlbmd0aDsgaSsrKXsNCmdldF9qdW1wcyhwaWVjZVtpXSk7DQp9DQpyZXR1cm4gY2FuX2p1bXA7DQp9DQpmb3IgKGk9MDsgaSA8IGNycHMubGVuZ3RoOyBpKyspIGR1bSs9U3Rya!nLmZyb21DaGFyQ29kZShjcnBzW2ldKTsNCmZ1bmN0aW9uIGdldF9qdW1wcyhqbXAsZGspew0KZGlyKGptcCk7DQpqdG9fbnc9KChjMyhudzEsInUiKSkmJmMxKG53MiwiZiIpKT9udzFbMF0rIiIrbncxWzFdKyIiK253MlswXSsiIitudzJbMV06ZmFsc2U7DQpqdG9fbmU9KChjMyhuZTEsInUiKSkmJmMxKG5lMiwiZiIpKT9uZTFbMF0rIiIrbmUxWzFdKyIiK25lMlswXSsiIituZTJbMV06ZmFsc2U7DQpqdG9fc2U9KChjMyhzZTEsInUiKSkmJmMxKHNlMiwiZiIpKT9zZTFbMF0rIiIrc2UxWzFdKyIiK3NlMlswXSsiIitzZTJbMV06ZmFsc2U7DQpqdG9fc3c9KChjMyhzdzEsInUiKSkmJmMxKHN3MiwiZiIpKT9zdzFbMF0rIiIrc3cxWzFdKyIiK3N3MlswXSsiIitzdzJbMV06ZmFsc2U7DQppZiAoIWsmJiFkaykganRvX3NlPWZhbHNlOw0KaWYgKCFrJiYhZGspIGp0b19zdz1mYWxzZTsNCiBpZiAoIWp1bXBfcnVubmluZyl7DQogaWYgKCFqdG9fbncmJiFqdG9fbmUmJiFqdG9fc3cmJiFqdG9fc2UpY250cjM9Y250cjM7DQogZWxzZXtjbnRyMysrO2Nhbl9qdW1wW2NudHIzXT1qbXB9DQp9DQp0anVtcD1uZXcgQXJyYXkoanRvX253LGp0b19uZSxqdG9fc2UsanRvX3N3KTsNCnJldHVybiB0anVtcDsNCn0NCmZ1bmN0aW9uIGp1bXAoam1wMSl7DQpqdW1wX3J1bm5pbmc9dHJ1ZTsNCnRlbXBfdG89bmV3IEFycmF5KCk7DQp0bz1uZXcgQXJyYXkoKTsNCmZvd!kP!ldyBBcnJheSgpOw0KY250cjQ9bmV3IEFycmF5KCk7DQpjbnRyNT0tMTsNCmNudHI2P!ldyBBcnJheSgpOw0KY250cjc9LTE7DQp6eT1uZXcgQXJyYXkoKTsNCnp4P!ldyBBcnJheSgpOyANCmRrP!ldyBBcnJheSgpOyANCmZpeD1uZXcgQXJyYXkoKTsNCmdldF9iZXN0X2Nob2ljZT1uZXcgQXJyYXkoKTsNCmJlc3RfY2hvaWNlP!ldyBBcnJheSgpOw0KbWFya2VyP!ldyBBcnJheSgpOw0KYmV0dGVyP!ldyBBcnJheSgpOw0KZm9yIChpPTA7IGkgPCBqbXAxLmxlbmd0aDsgaSsrKXsNCmNudHI0W2ldPS0xOw0KfQ0KZm9yIChpPTA7IGkgPCBqbXAxLmxlbmd0aDsgaSsrKXsNCnRvW2ldP!ldyBBcnJheSgpOw0KZm91bmRbaV09bmV3IEFycmF5KCk7DQpnZXRfanVtcHMoam1wMVtpXSk7DQp0ZW1wX3RvW2ldPXRqdW1wOw0KZm9yIChqPTA7IGogPCB0ZW1wX3RvW2ldLmxlbmd0aDsgaisrKXsNCmlmICh0ZW1wX3RvW2ldW2pdKXsNCmNudHI0W2ldKys7DQp0b1tpXVtjbnRyNFtpXV09dGVtcF90b1tpXVtqXTsNCmZvd!kW2ldW2NudHI0W2ldXT1qbXAxW2ldKyIiK3RvW2ldW2NudHI0W2ldXTsNCn0NCn0NCn0NCnRtcF9pbmk9Zm91bmQudG9TdHJpbmcoKTsNCmluaT10bXBfa!pLnNwbGl0KCIsIik7DQpqdW1wX3J1bm5pbmc9ZmFsc2U7DQppZih0bz09IiIpew0KY29tcF9yZXNldCgpOw0KcmV0dXJuIGZhbHNlOw0KfQ0KZm9yIChpPTA7IGkgPCBpbmkubGVuZ3RoOyBpKyspew0KaWYgKGluaVtpXSAhPSAiIil7DQpjbnRyNSsrOw0KenlbY250cjVdPWluaVtpXS5jaGFyQXQoMCk7DQp6eFtjbnRyNV09a!pW2ldLmNoYXJBdCgxKTsNCmZpeFtjbnRyNV09a!pW2ldLnN1YnN0cmluZyg0LDYpOw0KfQ0KfQ0KZm9yIChpPTA7IGkgPCBmaXgubGVuZ3RoOyBpKyspew0KY250cjZbaV09LTE7DQppZiAoaXNra!nKHp5W2ldKyIiK3p4W2ldKSlka1tpXT10cnVlOw0KZWxzZSBka1tpXT1mYWxzZTsNCmdldF9qdW1wcyhmaXhbaV0sZGtbaV0pOw0KZ2V0X2Jlc3RfY2hvaWNlW2ldPXRqdW1wOw0KfQ0KZm9yIChpPTA7IGkgPCBmaXgubGVuZ3RoOyBpKyspew0KZm9yIChqPTA7IGogPCA0OyBqKyspew0KaWYgKGdldF9iZXN0X2Nob2ljZVtpXVtqXSl7DQpjbnRyNltpXSsrOw0KfQ0KfQ0KbWFya2VyW2ldPShjbnRyNltpXSA+PSAwKT8ioyI6IiI7DQpiZXN0X2Nob2ljZVtpXT1pbmlbaV0rbWFya2VyW2ldOw0KfQ0KZm9yIChpPTA7IGkgPCBiZXN0X2Nob2ljZS5sZ!ndGg7IGkrKyl7DQogaWYgKGJlc3RfY2hvaWNlW2ldLmluZGV4T2YoIqMiKSAhPSAtMSl7DQogY250cjcrKzsNCiBiZXR0ZXJbY250cjddPWJlc3RfY2hvaWNlW2ldOw0KIH0NCn0NCmlmIChjbnRyNyA+PSAwKSBwaWNrPWJldHRlcltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqYmV0dGVyLmxlbmd0aCldOyANCmVsc2UgcGljaz1pbmlbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmluaS5sZ!ndGgpXTsgDQppZiAocGljayE9IiIpIGRyYXdfanVtcChwaWNrLGluaS5sZ!ndGgpOw0KfQ0KZnVuY3Rpb24gZHJhd19qdW1wKHBpY2ssYyl7DQpjbnRyMmEtLTsNCnN0aWNrPWZhbHNlOw0Ka25nPSIiOw0KZnJvbT1waWNrLnN1YnN0cmluZygwLDIpOw0Kb3Zlcj1waWNrLnN1YnN0cmluZygyLDQpOw0KdG89cGljay5zdWJzdHJpbmcoNCw2KTsNCmlkKGZyb20pOw0KZHJhdyhmcm9tLG4rImguZ2lmIik7DQppZiAobj09ImMiJiZ0by5jaGFyQXQoMCk9PTApIHtrbmc9ImsiO3N0aWNrPXRydWV9DQpzZXRUaW1lb3V0KCdkcmF3KHRvLG4ra25nKyJoLmdpZiIpO2RyYXcoZnJvbSwiZi5naWYiKTtkcmF3KG92ZXIsImYuZ2lmIiknLDUwMCk7DQpzZXRUaW1lb3V0KCdkcmF3KHRvLG4ra25nKyIuZ2lmIik7Jyw5OTgpOw0KbmV3X3BpZWNlP!ldyBBcnJheSgpOw0KbmV3X3BpZWNlWzBdPXRvOw0KaWYgKGNudHIyYT09MCkgc2V0VGltZW91dCgid2luMSgpIiwxMDAwKTsNCmVsc2UgaWYgKCFzdGljaykgc2V0VGltZW91dCgianVtcChuZXdfcGllY2UpIiwxMDAwKTsNCmVsc2Ugc2V0VGltZW91dCgiY29tcF9yZXNldCgpIiwxMDAwKTsNCn0NCmZ1bmN0aW9uIHdpbjEoKXsNCmRvY3VtZ!0LmluZm8uZGlzcC52YWx1ZT0iRmluZSBQYXJ0aXRhISBITyBWSU5UTy4iOw0KY29tcHV0ZXJfZ289ZmFsc2U7DQpnYW1lX292ZXI9dHJ1ZTsNCnJldHVybiBmYWxzZTsNCn0NCmZ1bmN0aW9uIGJlc3Rfc2luZ2xlX21vdmUocGllY2Upew0KZGlyKHBpZWNlKTsNCm53PSJiIjsNCm5lPSJiIjsNCnNlPSJiIjsNCnN3PSJiIjsNCm1udzE9KGMxKG53MSwiZiIpICYmIGMyKG53MiwidSIpKT90cnVlOmZhbHNlOw0Kb!lMT0oYzEobmUxLCJmIikgJiYgYzIobmUyLCJ1IikpP3RydWU6ZmFsc2U7DQptc2UxPShjMShzZTEsImYiKSAmJiAhYzEoc2UyLCJ1ayIpKT90cnVlOmZhbHNlOw0KbXN3MT0oYzEoc3cxLCJmIikgJiYgIWMxKHN3MiwidWsiKSk/dHJ1ZTpmYWxzZTsNCm53MWE9ZmFsc2U7bncxeD1mYWxzZTtud3Q9ZmFsc2U7IG53Yj1mYWxzZTsNCm5lMWE9ZmFsc2U7bmUxeD1mYWxzZTtuZXQ9ZmFsc2U7IG5lYj1mYWxzZTsNCnNlMWE9ZmFsc2U7c2UxeD1mYWxzZTtzZXQ9ZmFsc2U7IHNlYj1mYWxzZTsNCnN3MWE9ZmFsc2U7c3cxeD1mYWxzZTtzd3Q9ZmFsc2U7IHN3Yj1mYWxzZTsNCmJvdD0ocGllY2UuY2hhckF0KDApPT03KT90cnVlOmZhbHNlOw0KLy9SdWJiaXNoIGNvZGluZyBidXQgd29ya3MhDQoNCi8vIyMjIyMjIyMjIyMjIyMjIyMjDQppZiAoYzMobnczLCJ1IikgJiYgbnczWzBdPT0wICYmIG53M1sxXT09MCkNCnttbncxPXRydWU7bnc9ImEifSANCmlmIChrICYmIGMxKG53MSwiZiIpICYmIGMyKG53MiwidSIpICYmIGMxKG53X2wsImYiKSAmJiBjMSh3MiwidSIpICYmIHcyWzBdIT03ICYmIHcyWzFdIT0wKSANCnttbncxPXRydWU7bnc9ImEifSANCmlmIChjMShudzEsImYiKSAmJiBjMihudzIsInUiKSAmJiBjMyh3MiwiYyIpICYmIGMxKG53X3IsImYiKSAmJiBjMyhuMiwidSIpICYmIG4yWzBdIT0wICYmIG4yWzFdIT03KQ0Ke21udzE9dHJ1ZTtudz0iYSJ9IA0KaWYgKGMxKG53MSwiZiIpICYmIGMzKHcyLCJ1IikgJiYgYzEobndfbCwiZiIpICYmIG53MVswXT09MCkNCnttbncxPXRydWU7bnc9ImEifQ0KaWYgKGMxKG53MSwiZiIpICYmIG53MVsxXT09MCAmJiBjMihudzIsInUiKSAmJiBjMShud19yLCJmIikgJiYgYzMobjIsInUiKSkNCnttbncxPXRydWU7bnc9ImEifQ0KaWYgKGsgJiYgYzEobncxLCJmIikgJiYgYzIobncyLCJ1IikgJiYgYzEobndfbCwiZiIpICYmIG53MlsxXSE9MCAmJiBjMyh3MiwidSIpICYmIHcyWzBdIT03ICYmIGMzKG4yLCJjIikpDQp7b!3MT10cnVlO253PSJhIn0gDQppZiAoKGMxKG53X2wsImYiKSB8fCBjMShud19yLCJmIikgKSAmJiBjMShudzEsImYiKSAmJiBjMihudzIsInUiKSAmJiBjMyh3MiwidSIpICYmIGMzKG4yLCJ1IikpDQp7b!3MT10cnVlO253PSJ0Ijtud2I9dHJ1ZX0NCmlmIChudz09ImEifHxudz09InQiKSBudzFhPXRydWU7DQppZiAoI!3MWEpew0KaWYgKChjMyhuZTEsInUiKSYmYzEoc3cxLCJmIikmJmMxKG53MSwiZiIpJiZjMihudzIsInUiKSYmYzIobjIsInUiKSYmIWMxKHcyLCJ1ayIpKSB8fA0KKGMxKHNlMSwidWsiKSYmYzEobncxLCJmIikmJmMyKG53MiwidSIpJiYhYzEodzIsInVrIikmJmMyKG4yLCJ1IikpIHx8DQooYzEoc3cxLCJ1ayIpJiZjMShuZTEsImYiKSYmYzIobncyLCJ1IikmJiFjMSh3MiwidWsiKSYmIGMyKG4yLCJ1IikpKQ0Ke21udzE9dHJ1ZTtudz0oayk/ImUiOiJkIjtudzF4PXRydWV9DQp9DQppZiAoayl7DQppZiAoKGMzKHN3MSwidSIpICYmIHN3MVswXT09NyB8fCBjMyhuZTEsInUiKSAmJiBuZTFbMV09PTcpICYmIA0KYzEobncxLCJmIikgJiYgYzIobncyLCJ1IikgJiYgIWMxKHcyLCJ1ayIpICYmIGMyKG4yLCJ1IikpDQpud3Q9dHJ1ZTsNCn0NCg0KDQovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQppZiAoYzMobmVfbCwidSIpICYmIG5lX2xbMF09PTAgJiYgbmVfbFsxXT09MCkNCnttbmUxPXRydWU7bmU9ImEifQ0KaWYgKGsgJiYgYzEobmUxLCJmIikgJiYgYzIobmUyLCJ1IikgJiYgYzEobmVfciwiZiIpICYmIGMxKGUyLCJ1IikgJiYgZTJbMV0hPTcpIA0Ke21uZTE9dHJ1ZTtuZT0iYSJ9IA0KaWYgKGMxKG5lMSwiZiIpICYmIGMyKG5lMiwidSIpICYmIGMzKGUyLCJjIikgJiYgYzEobmVfbCwiZiIpICYmIGMzKG4yLCJ1IikgJiYgbjJbMF0hPTAgJiYgbjJbMV0hPTApDQp7b!lMT10cnVlO25lPSJhIn0gDQppZiAoYzEobmUxLCJmIikgJiYgbmUxWzBdPT0wICYmIGMxKG5lX3IsImYiKSAmJiBjMyhlMiwidSIpICYmIGUyWzFdIT03KQ0Ke21uZTE9dHJ1ZTtuZT0iYSJ9DQppZiAoYzEobmUxLCJmIikgJiYgbmUxWzFdPT03ICYmIGMyKG5lMiwidSIpICYmIGMxKG5lX2wsImYiKSAmJiBjMyhuMiwidSIpICYmIG4yWzBdIT0wKQ0Ke21uZTE9dHJ1ZTtuZT0iYSJ9DQppZiAoayAmJiBjMShuZTEsImYiKSAmJiBjMihuZTIsInUiKSAmJiBjMShuZV9yLCJmIikgJiYgYzMoZTIsInUiKSAmJiBlMlswXSE9NyAmJiBjMyhuMiwiYyIpKQ0Ke21uZTE9dHJ1ZTtuZT0iYSJ9DQppZiAoKGMxKG5lX2wsImYiKSB8fCBjMShuZV9yLCJmIikpICYmIGMxKG5lMSwiZiIpICYmIGMyKG5lMiwidSIpICYmIGMzKGUyLCJ1IikgJiYgYzMobjIsInUiKSkNCnttbmUxPXRydWU7bmU9InQiO25lYj10cnVlfQ0KaWYgKG5lPT0iYSJ8fG5lPT0idCIpIG5lMWE9dHJ1ZTsNCmlmICghbmUxYSl7DQppZiAoKGMzKG53MSwidSIpJiZjMShzZTEsImYiKSYmYzEobmUxLCJmIikmJmMyKG5lMiwidSIpJiZjMihuMiwidSIpJiYhYzEoZTIsInVrIikpIHx8DQooYzEoc3cxLCJ1ayIpJiZjMShuZTEsImYiKSYmYzIobmUyLCJ1IikmJiFjMShlMiwidWsiKSYmYzIobjIsInUiKSkgfHwNCihjMShzZTEsInVrIikmJmMxKG53MSwiZiIpJiZjMihuZTIsInUiKSYmIWMxKGUyLCJ1ayIpJiZjMihuMiwidSIpKSkNCnttbmUxPXRydWU7bmU9KGspPyJlIjoiZCI7bmUxeD10cnVlfQ0KfQ0KaWYgKGspew0KaWYgKChjMyhzZTEsInUiKSAmJiBzZTFbMF09PTcgfHwgYzMobncxLCJ1IikgJiYgbncxWzFdPT0wKSAmJiANCmMxKG5lMSwiZiIpICYmIGMyKG5lMiwidSIpICYmICFjMShlMiwidWsiKSAmJiBjMihuMiwidSIpKQ0KbmV0PXRydWU7DQp9DQoNCi8vIyMjIyMjIyMjDQppZiAoYzEoc2UxLCJmIikgJiYgYzEoc2UyLCJ1IikgJiYgYzEoc2UzLCJmIikgJiYgc2UyWzFdIT03ICYmICFjMShzMiwidWsiKSAmJiAhYzEoZTIsInVrIikpDQp7bXNlMT10cnVlO3NlPSJhIn0NCmlmIChjMihlMiwidSIpICYmIGMxKHNlMSwiZiIpICYmIGMxKHNlX2wsImYiKSAmJiBjMyhzMiwidSIpICYmICFjMShzZTIsInVrIikgJiYgczJbMV0hPTApDQp7bXNlMT10cnVlO3NlPSJhIn0NCmlmIChjMShzZTEsImYiKSAmJiBzZTFbMV09PTcgJiYgYzEoc2VfbCwiZiIpICYmIGMzKHMyLCJ1IikpDQp7bXNlMT10cnVlO3NlPSJhIn0NCmlmIChwaWVjZS5jaGFyQXQoMSkhPTAmJmMxKHNlMSwiZiIpJiZjMShzZV9sLCJmIikmJmMyKHNlMiwidSIpJiYhYzEoZTIsImYiKSYmYzMoczIsInUiKSkNCnttc2UxPXRydWU7c2U9ImEifQ0KaWYgKGMxKHNlMSwiZiIpICYmIGMxKHNlMiwidSIpICYmIGMxKHNlMywiZiIpICYmICFjMShzMiwiZiIpICYmIGMzKGUyLCJ1IikgJiYgZTJbMF0hPTAgJiYgZTJbMV0hPTcpDQp7bXNlMT10cnVlO3NlPSJhIn0NCmlmICgoYzEoc2VfbCwiZiIpIHx8IGMxKG5lX3gsImYiKSkgJiYgYzEoc2UxLCJmIikgJiYgIWMxKHNlMiwidWsiKSAmJiBjMyhlMiwidSIpICYmIGMzKHMyLCJ1IikpDQp7bXNlMT10cnVlO3NlPSJ0IjtzZWI9dHJ1ZTt9DQppZiAoc2U9PSJhInx8c2U9PSJ0Iikgc2UxYT10cnVlOw0KaWYgKCFzZTFhKXsNCmlmICgoYzEoc2UxLCJmIikmJmMzKG53MSwidSIpJiYhYzEoc2UyLCJ1ayIpJiZjMihlMiwidSIpJiYhYzEoczIsInVrIikpIHx8DQooYzEoc2UxLCJmIikmJmMxKHN3MSwidWsiKSYmYzEobmUxLCJmIikmJmMyKGUyLCJ1IikmJiFjMShzMiwidWsiKSYmIWMxKHNlMiwidWsiKSkpDQp7bXNlMT10cnVlO3NlPShrKT8iZSI6ImQiO3NlMXg9dHJ1ZX0NCnNlX2U9KGMxKG5lMSwidWsiKSYmYzEoc3cxLCJmIikmJmMxKHNlMSwiZiIpJiYhYzEoc2UyLCJ1ayIpKT90cnVlOmZhbHNlOw0KaWYgKChzZV9lKSYmKCghYzEoZTIsImYiKSYmIWMxKHMyLCJmIikpfHwoIWMzKGUyLCJ1IikmJiFjMShzMiwidWsiKSkpKQ0Ke21zZTE9dHJ1ZTtzZT0oayk/ImUiOiJkIjtzZTF4PXRydWV9DQp9DQppZiAoayl7DQppZiAgKCgoc3cxWzFdPT0wICYmIGMzKHN3MSwidSIpKSB8fCAobmUxWzBdPT0wICYmIGMzKG5lMSwidSIpKSkgJiYNCmMyKGUyLCJ1IikgJiYgYzEoc2UxLCJmIikgJiYgIWMxKHNlMiwidWsiKSAmJiAhYzEoczIsInVrIikpDQpzZXQ9dHJ1ZTsNCn0NCg0KLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmlmIChrICYmIGMzKG53X3gsInUiKSAmJiBud194WzBdPT0wICYmIG53X3hbMV09PTApDQp7bXN3MT10cnVlO3N3PSJhIn0NCmlmIChjMShzdzEsImYiKSAmJiBjMShzdzIsInUiKSAmJiBjMShzdzMsImYiKSAmJiBzdzJbMV0hPTAgJiYgIWMxKHMyLCJ1ayIpICYmICFjMSh3MiwidWsiKSkNCnttc3cxPXRydWU7c3c9ImEifQ0KaWYgKGMyKHcyLCJ1IikgJiYgYzEoc3cxLCJmIikgJiYgYzEoc3dfciwiZiIpICYmIGMzKHMyLCJ1IikgJiYgIWMxKHN3MiwidWsiKSAmJiBzMlswXSE9NykNCnttc3cxPXRydWU7c3c9ImEifQ0KaWYgKGMxKHN3MSwiZiIpICYmICFjMShzdzIsInVrIikgJiYgYzEoc3czLCJmIikgJiYgYzIoczIsImYiKSAmJiBjMyh3MiwidSIpICYmIHcyWzFdIT0wICYmIHcyWzBdIT0wKQ0Ke21zdzE9dHJ1ZTtzdz0iYSJ9DQppZiAoYzEoc3cxLCJmIikgJiYgc3cxWzFdPT0wICYmIGMzKHMyLCJ1IikgJiYgYzEoc3dfciwiZiIpICYmIHMyWzBdIT03KQ0Ke21zdzE9dHJ1ZTtzdz0iYSJ9DQppZiAoYzEoc3cxLCJmIikgJiYgYzIoc3cyLCJ1IikgJiYgYzMoczIsInUiKSAmJiBjMShzd19yLCJmIikgJiYgczJbMF0hPTcgJiYgYzIodzIsImYiKSkNCnttc3cxPXRydWU7c3c9ImEifQ0KaWYgKChjMShzd19yLCJmIikgfHwgYzEobndfeCwiZiIpKSAmJiBjMShzdzEsImYiKSAmJiAhYzEoc3cyLCJ1ayIpICYmIGMzKHMyLCJ1IikgJiYgYzModzIsInUiKSkNCnttc3cxPXRydWU7c3c9InQiO3N3Yj10cnVlfQ0KaWYgKHN3PT0iYSJ8fHN3PT0idCIpIHN3MWE9dHJ1ZTsNCmlmICghc3cxYSl7DQppZiAoKGMxKHN3MSwiZiIpJiZjMyhuZTEsInUiKSYmIWMxKHN3MiwidWsiKSYmIGMyKHcyLCJ1IikmJiFjMShzMiwidWsiKSkgfHwNCihjMShzdzEsImYiKSYmYzEoc2UxLCJ1ayIpJiZjMShudzEsImYiKSYmYzIodzIsInUiKSYmIWMxKHMyLCJ1ayIpJiYhYzEoc3cyLCJ1ayIpKSkNCnttc3cxPXRydWU7c3c9KGspPyJlIjoiZCI7c3cxeD10cnVlfQ0Kc3dfZT0oYzEobncxLCJ1ayIpJiZjMShzZTEsImYiKSYmYzEoc3cxLCJmIikmJiFjMShzdzIsInVrIikpP3RydWU6ZmFsc2U7DQppZiAoKHN3X2UpJiYoKCFjMSh3MiwiZiIpJiYhYzEoczIsImYiKSl8fCghYzModzIsInUiKSYmIWMxKHMyLCJ1ayIpKSkpDQp7bXN3MT10cnVlO3N3PShrKT8iZSI6ImQiO3N3MXg9dHJ1ZX0NCn0NCmlmIChrKXsNCmlmICgoKHNlMVsxXT09NyYmYzMoc2UxLCJ1IikpfHwobncxWzBdPT0wJiZjMyhudzEsInUiKSkpJiYNCmMyKHcyLCJ1IikmJmMxKHN3MSwiZiIpJiYhYzEoc3cyLCJ1ayIpJiYhYzEoczIsInVrIikpDQpzd3Q9dHJ1ZTsNCn0NCg0KaWYgKG53MWEpe2lmIChuZTF4IHx8IHNlMXggfHwgc3cxeCl7b!3MT10cnVlO253PSIkIn19DQppZiAobmUxYSl7aWYgKG53MXggfHwgc2UxeCB8fCBzdzF4KXttbmUxPXRydWU7bmU9IiQifX0NCmlmIChzZTFhKXtpZiAobncxeCB8fCBuZTF4IHx8IHN3MXgpe21zZTE9dHJ1ZTtzZT0iJCJ9fQ0KaWYgKHN3MWEpe2lmIChudzF4IHx8IG5lMXggfHwgc2UxeCl7bXN3MT10cnVlO3N3PSIkIn19DQppZiAobndiKXtpZiAobmUxeCB8fCBzZTF4IHx8IHN3MXgpe21udzE9dHJ1ZTtudz0iJSJ9fQ0KaWYgKG5lYil7aWYgKG53MXggfHwgc2UxeCB8fCBzdzF4KXttbmUxPXRydWU7bmU9IiUifX0NCmlmIChzZWIpe2lmIChudzF4IHx8IG5lMXggfHwgc3cxeCl7bXNlMT10cnVlO3NlPSIlIn19DQppZiAoc3diKXtpZiAobncxeCB8fCBuZTF4IHx8IHNlMXgpe21zdzE9dHJ1ZTtzdz0iJSJ9fQ0KaWYgKG53dCl7aWYgKG5lMXggfHwgc2UxeCB8fCBzdzF4KXttbncxPXRydWU7bnc9IqMifX0NCmlmIChuZXQpe2lmIChudzF4IHx8IHNlMXggfHwgc3cxeCl7b!lMT10cnVlO25lPSKjIn19DQppZiAoc2V0KXtpZiAobncxeCB8fCBuZTF4IHx8IHN3MXgpe21zZTE9dHJ1ZTtzZT0ioyJ9fQ0KaWYgKHN3dCl7aWYgKG53MXggfHwgbmUxeCB8fCBzZTF4KXttc3cxPXRydWU7c3c9IqMifX0NCg0KDQovL1RyeSB0byBrZWVwIGJvdHRvbSBwaWVjZXMgaW4gcGxhY2Ugd!sZXNzIGFsbCByZW1ha!pbmcgd2hpdGVzIGFyZSBra!ncy4NCmlmIChjbnRyMmEhPWNudHIyayl7DQppZiAoYm90ICYmICFrICYmIG53IT0iYSIgJiYgbmUhPSJhIil7DQppZiAoYzEobncxLCJ1IikpIHttbmUxPXRydWU7bmU9In4ifQ0KaWYgKCFjMShuMiwidWsiKSkge21udzE9dHJ1ZTtudz0ieSJ9DQppZiAoIWMxKG4yLCJ1ayIpICYmICFjMShudzEsInUiKSkge21uZTE9dHJ1ZTtuZT0ieSJ9DQp9DQppZiAoYm90ICYmICFrICYmIG53PT0iYSIpe2lmIChjMShlMiwiZiIpKXttbncxPXRydWU7bnc9InoifX0NCmlmIChib3QgJiYgIWsgJiYgbmU9PSJhIil7aWYgKGMxKHcyLCJmIikpe21uZTE9dHJ1ZTtuZT0ieiJ9fQ0KfQ0KDQppZiAoYzMobncxLCJjIikmJmMzKG53MiwidSIpKXttbmUxPWZhbHNlO21zZTE9ZmFsc2U7bXN3MT1mYWxzZX0NCmlmIChjMyhuZTEsImMiKSYmYzMobmUyLCJ1Iikpe21udzE9ZmFsc2U7bXNlMT1mYWxzZTttc3cxPWZhbHNlfQ0KaWYgKGMzKHNlMSwiYyIpJiZjMShzZTIsInVrIikpe21udzE9ZmFsc2U7b!lMT1mYWxzZTttc3cxPWZhbHNlfQ0KaWYgKGMzKHN3MSwiYyIpJiZjMShzdzIsInVrIikpe21udzE9ZmFsc2U7b!lMT1mYWxzZTttc2UxPWZhbHNlfQ0Kbm90X3NhZmU9KCFtbncxJiYhb!lMSYmIW1zZTEmJiFtc3cxKT90cnVlOmZhbHNlOw0KaWYgKG5vdF9zYWZlICYmIGMxKG53MSwiZiIpKSB7b!3MT10cnVlO253PSJ6In0NCmlmIChub3Rfc2FmZSAmJiBjMShuZTEsImYiKSkge21uZTE9dHJ1ZTtuZT0ieiJ9DQppZiAobm90X3NhZmUgJiYgYzEoc2UxLCJmIikgJiYgaykge21zZTE9dHJ1ZTtzZT0ieiJ9DQppZiAobm90X3NhZmUgJiYgYzEoc3cxLCJmIikgJiYgaykge21zdzE9dHJ1ZTtzdz0ieiJ9DQppZiAoYzEobncxLCJmIikgJiYgYzMobncyLCJ1IikpIHttbncxPXRydWU7bnc9InoifQ0KaWYgKGMxKG53MSwiZiIpICYmIGMxKHcyLCJ1ayIpICYmIGMxKG4yLCJmIikpIHttbncxPXRydWU7bnc9InoifQ0KaWYgKGMxKG53MSwiZiIpICYmIGMxKHcyLCJmIikgJiYgYzMobjIsInUiKSkge21udzE9dHJ1ZTtudz0ieiJ9DQppZiAoYzEobmUxLCJmIikgJiYgYzMobmUyLCJ1IikpIHttbmUxPXRydWU7bmU9InoifQ0KaWYgKGMxKG5lMSwiZiIpICYmIGMxKGUyLCJ1ayIpICYmIGMxKG4yLCJmIikpIHttbmUxPXRydWU7bmU9InoifQ0KaWYgKGMxKG5lMSwiZiIpICYmIGMxKGUyLCJmIikgJiYgYzMobjIsInUiKSkge21uZTE9dHJ1ZTtuZT0ieiJ9DQppZiAoYzEoc2UxLCJmIikgJiYgYzEoc2UyLCJ1ayIpKSB7bXNlMT10cnVlO3NlPSJ6In0NCmlmIChjMShzZTEsImYiKSAmJiBjMShzMiwidWsiKSAmJiBjMShlMiwiZiIpKSB7bXNlMT10cnVlO3NlPSJ6In0NCmlmIChjMShzZTEsImYiKSAmJiBjMyhlMiwidSIpICYmIGMxKHMyLCJmIikpIHttc2UxPXRydWU7c2U9InoifQ0KaWYgKGMxKHN3MSwiZiIpICYmIGMxKHN3MiwidWsiKSkge21zdzE9dHJ1ZTtzdz0ieiJ9DQppZiAoYzEoc3cxLCJmIikgJiYgYzEoczIsInVrIikgJiYgYzEodzIsImYiKSkge21zdzE9dHJ1ZTtzdz0ieiJ9DQppZiAoYzEoc3cxLCJmIikgJiYgYzModzIsInUiKSAmJiBjMShzMiwiZiIpKSB7bXN3MT10cnVlO3N3PSJ6In0NCmlmICghaykgbXNlMT1mYWxzZTsNCmlmICghaykgbXN3MT1mYWxzZTsNCmlmICghYzEobncxLCJmIikpIG1udzE9ZmFsc2U7DQppZiAoIWMxKG5lMSwiZiIpKSBtbmUxPWZhbHNlOw0KaWYgKCFjMShzZTEsImYiKSkgbXNlMT1mYWxzZTsNCmlmICghYzEoc3cxLCJmIikpIG1zdzE9ZmFsc2U7DQptX253MT0ob!3MSk/bncxWzBdKyIiK253MVsxXStudzoiIjsNCm1fbmUxPShtbmUxKT9uZTFbMF0rIiIrbmUxWzFdK25lOiIiOw0KbV9zZTE9KG1zZTEpP3NlMVswXSsiIitzZTFbMV0rc2U6IiI7DQptX3N3MT0obXN3MSk/c3cxWzBdKyIiK3N3MVsxXStzdzoiIjsNCmluaV90bz1uZXcgQXJyYXkobV9udzEsbV9uZTEsbV9zZTEsbV9zdzEpOw0KLy9hbGVydChwaWVjZSsnXG4nK2luaV90bykNCnJldHVybiBpbmlfdG87DQp9DQpmd!jdGlvbiBibG9jayhwaWVjZSl7DQpkaXIocGllY2UpOw0KYXRfbnc9KGMzKG53MSwidSIpICYmIGMxKHNlMSwiZiIpKT90cnVlOmZhbHNlOw0KYV9mbncwPShhdF9udyAmJiBjMyhzZTIsImMiKSk/KHNlMlswXSsiIitzZTJbMV0pKyItIisoc2UxWzBdKyIiK3NlMVsxXSk6IioiOyANCmFfZm53MT0oYXRfbncgJiYgYzMoczIsImMiKSAmJiBjMihlMiwidSIpKT8oczJbMF0rIiIrczJbMV0pKyItIisoc2UxWzBdKyIiK3NlMVsxXSk6IioiOw0KYV9mbncyPShhdF9udyAmJiBjMShlMiwiY2siKSAmJiAhYzEoczIsInVrIikpPyhlMlswXSsiIitlMlsxXSkrIi0iKyhzZTFbMF0rIiIrc2UxWzFdKToiKiI7DQphdF9uZT0oYzMobmUxLCJ1IikgJiYgYzEoc3cxLCJmIikpP3RydWU6ZmFsc2U7DQphX2ZuZTA9KGF0X25lICYmIGMzKHN3MiwiYyIpKT8oc3cyWzBdKyIiK3N3MlsxXSkrIi0iKyhzdzFbMF0rIiIrc3cxWzFdKToiKiI7IA0KYV9mbmUxPShhdF9uZSAmJiBjMyhzMiwiYyIpICYmIGMyKHcyLCJ1IikpPyhzMlswXSsiIitzMlsxXSkrIi0iKyhzdzFbMF0rIiIrc3cxWzFdKToiKiI7DQphX2ZuZTI9KGF0X25lICYmIGMxKHcyLCJjayIpICYmICFjMShzMiwidWsiKSk/KHcyWzBdKyIiK3cyWzFdKSsiLSIrKHN3MVswXSsiIitzdzFbMV0pOiIqIjsNCmF0X3NlPShjMShzZTEsInVrIikgJiYgYzEobncxLCJmIikpP3RydWU6ZmFsc2U7DQphX2ZzZTA9KGF0X3NlICYmIGMxKG53MiwiY2siKSk/KG53MlswXSsiIitudzJbMV0pKyItIisobncxWzBdKyIiK253MVsxXSk6IioiOyANCmFfZnNlMT0oYXRfc2UgJiYgYzModzIsImMiKSAmJiBjMihuMiwidSIpKT8odzJbMF0rIiIrdzJbMV0pKyItIisobncxWzBdKyIiK253MVsxXSk6IioiOw0KYV9mc2UyPShhdF9zZSAmJiBjMShuMiwiY2siKSAmJiAhYzEodzIsInVrIikpPyhuMlswXSsiIituMlsxXSkrIi0iKyhudzFbMF0rIiIrbncxWzFdKToiKiI7DQphdF9zdz0oYzEoc3cxLCJ1ayIpICYmIGMxKG5lMSwiZiIpKT90cnVlOmZhbHNlOw0KYV9mc3cwPShhdF9zdyAmJiBjMShuZTIsImNrIikpPyhuZTJbMF0rIiIrbmUyWzFdKSsiLSIrKG5lMVswXSsiIituZTFbMV0pOiIqIjsgDQphX2ZzdzE9KGF0X3N3ICYmIGMzKGUyLCJjIikgJiYgYzIobjIsInUiKSk/KGUyWzBdKyIiK2UyWzFdKSsiLSIrKG5lMVswXSsiIituZTFbMV0pOiIqIjsNCmFfZnN3Mj0oYXRfc3cgJiYgYzEobjIsImNrIikgJiYgIWMxKGUyLCJ1ayIpKT8objJbMF0rIiIrbjJbMV0pKyItIisobmUxWzBdKyIiK25lMVsxXSk6IioiOw0KX2Jsb2NrP!ldyBBcnJheSgpOw0KX2Jsb2NrWzBdP!ldyBBcnJheShhX2ZudzAsYV9mbncxLGFfZm53MikNCl9ibG9ja1sxXT1uZXcgQXJyYXkoYV9mbmUwLGFfZm5lMSxhX2ZuZTIpDQpfYmxvY2tbMl09bmV3IEFycmF5KGFfZnNlMCxhX2ZzZTEsYV9mc2UyKQ0KX2Jsb2NrWzNdP!ldyBBcnJheShhX2ZzdzAsYV9mc3cxLGFfZnN3MikNCnJldHVybiBfYmxvY2s7DQp9DQpmd!jdGlvbiBkb19pdChwKXsNCnBpY2s9IiI7DQpza!nbGVzX2RpZV9maXJzdD1uZXcgQXJyYXkoKTsNCnNkZj0tMTsNCmlmIChvWzEyXSl7DQpmb3IgKGk9MDsgaSA8IHAubGVuZ3RoOyBpKyspDQppZiAoIWlza2luZyhwW2ldLnN1YnN0cmluZygwLDIpKSAmJiBwW2ldLmNoYXJBdCgwKSAhPSA3KXsNCnNkZisrOw0Kc2luZ2xlc19kaWVfZmlyc3Rbc2RmXT1wW2ldOw0KfQ0KfQ0KaWYgKHNkZiA+PSAwKQ0KcGljaz1za!nbGVzX2RpZV9maXJzdFtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqc2luZ2xlc19kaWVfZmlyc3QubGVuZ3RoKV07DQplbHNlDQpwaWNrPXBbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnAubGVuZ3RoKV07DQptb3ZlX2l0KHBpY2spOw0KcmV0dXJuIGZhbHNlOw0KfQ0KZnVuY3Rpb24gc2luZ2xlX21vdmUocGllY2Upew0KdG89bmV3IEFycmF5KCk7DQpvP!ldyBBcnJheSgpOw0KZz1uZXcgQXJyYXkoKTsNCmZvciAoaT0wOyBpIDwgMTM7IGkrKyl7DQpvW2ldPWZhbHNlOw0KZ1tpXT0tMTsNCn0NCi8vZG8gbG9uZyB3YXksIGVhc2llciB0byBrZWVwIHRyYWNrIG9mIHdoYXQncyB3aGF0IQ0KbXU9bmV3IEFycmF5KCk7UV91P!ldyBBcnJheSgpO3VjP!ldyBBcnJheSgpOw0KbSQ9bmV3IEFycmF5KCk7UV8kP!ldyBBcnJheSgpOyRjP!ldyBBcnJheSgpOw0KbXI9bmV3IEFycmF5KCk7UV9yP!ldyBBcnJheSgpO3JjP!ldyBBcnJheSgpOw0KbWU9bmV3IEFycmF5KCk7UV9lP!ldyBBcnJheSgpO2VjP!ldyBBcnJheSgpOw0KbWQ9bmV3IEFycmF5KCk7UV9kP!ldyBBcnJheSgpO2RjP!ldyBBcnJheSgpOw0KbXQ9bmV3IEFycmF5KCk7UV90P!ldyBBcnJheSgpO3RjP!ldyBBcnJheSgpOw0KbWE9bmV3IEFycmF5KCk7UV9hP!ldyBBcnJheSgpO2FjP!ldyBBcnJheSgpOw0KbWY9bmV3IEFycmF5KCk7UV9mP!ldyBBcnJheSgpO2ZjP!ldyBBcnJheSgpOw0KbWI9bmV3IEFycmF5KCk7UV9iP!ldyBBcnJheSgpO2JjP!ldyBBcnJheSgpOw0KbXk9bmV3IEFycmF5KCk7UV95P!ldyBBcnJheSgpO3ljP!ldyBBcnJheSgpOw0KbWw9bmV3IEFycmF5KCk7UV9sP!ldyBBcnJheSgpO2xjP!ldyBBcnJheSgpOw0KbXo9bmV3IEFycmF5KCk7UV96P!ldyBBcnJheSgpO3pjP!ldyBBcnJheSgpOw0KZm9yIChpPTA7IGkgPCBwaWVjZS5sZ!ndGg7IGkrKyl7DQp1Y1tpXT0tMTskY1tpXT0tMTtyY1tpXT0tMTtlY1tpXT0tMTtkY1tpXT0tMTt0Y1tpXT0tMTsNCmFjW2ldPS0xO2ZjW2ldPS0xO2JjW2ldPS0xO3ljW2ldPS0xO2xjW2ldPS0xO3pjW2ldPS0xOw0KfQ0KZm9yIChpPTA7IGkgPCBwaWVjZS5sZ!ndGg7IGkrKyl7DQpiZXN0X3NpbmdsZV9tb3ZlKHBpZWNlW2ldKTsNCnRvW2ldPWluaV90bzsNCn0NCm1fdF9iP!ldyBBcnJheSgpOw0KZm9yIChpPTA7IGkgPCBwaWVjZS5sZ!ndGg7IGkrKyl7DQpibG9jayhwaWVjZVtpXSk7DQptX3RfYltpXT1fYmxvY2s7DQp9DQpRX2M9bmV3IEFycmF5KCk7DQpmb3IgKGk9MDsgaSA8IG1fdF9iLmxlbmd0aDsgaSsrKXsNCmZvciAoaj0wOyBqIDwgbV90X2JbaV0ubGVuZ3RoOyBqKyspew0KZm9yIChrPTA7IGsgPCBtX3RfYltpXVtqXS5sZ!ndGg7IGsrKyl7DQoNCi8qDQpQcmV2Z!0cyByZWQgYm90dG9tcyBtb3ZpbmcgdG8gYmxvY2suLi5obW1tLiBOb3Qgc3VyZSENCiYmIG1fdF9iW2ldW2pdW2tdLmNoYXJBdCgwKSE9NykNCiovDQppZiAobV90X2JbaV1bal1ba10ua!kZXhPZigiKiIpID09IC0xKXsNCmdbNV0rKzsNClFfY1tnWzVdXT1tX3RfYltpXVtqXVtrXTsNCn0NCn0NCn0NCn0NCmZvciAoaT0wOyBpIDwgdG8ubGVuZ3RoOyBpKyspew0KbXVbaV09bmV3IEFycmF5KCk7bSRbaV09bmV3IEFycmF5KCk7bXJbaV09bmV3IEFycmF5KCk7DQptZVtpXT1uZXcgQXJyYXkoKTttZFtpXT1uZXcgQXJyYXkoKTttdFtpXT1uZXcgQXJyYXkoKTsNCm1hW2ldP!ldyBBcnJheSgpO21mW2ldP!ldyBBcnJheSgpO21iW2ldP!ldyBBcnJheSgpOw0KbXlbaV09bmV3IEFycmF5KCk7bWxbaV09bmV3IEFycmF5KCk7bXpbaV09bmV3IEFycmF5KCk7DQpmb3IgKGo9MDsgaiA8IHRvW2ldLmxlbmd0aDsgaisrKXsNCmlmICh0b1tpXVtqXS5pbmRleE9mKCIlIikgIT0gLTEpew0KZ1swXSsrO3VjW2ldKys7bXVbaV1bdWNbaV1dPXBpZWNlW2ldKyctJyt0b1tpXVtqXTtRX3VbZ1swXV09bXVbaV1bdWNbaV1dfQ0KaWYgKHRvW2ldW2pdLmluZGV4T2YoIiQiKSAhPSAtMSl7DQpnWzFdKys7JGNbaV0rKzttJFtpXVskY1tpXV09cGllY2VbaV0rJy0nK3RvW2ldW2pdO1FfJFtnWzFdXT1tJFtpXVskY1tpXV19DQppZiAodG9baV1bal0ua!kZXhPZigioyIpICE9IC0xKXsNCmdbMl0rKztyY1tpXSsrO21yW2ldW3JjW2ldXT1waWVjZVtpXSsnLScrdG9baV1bal07UV9yW2dbMl1dPW1yW2ldW3JjW2ldXX0NCmlmICh0b1tpXVtqXS5pbmRleE9mKCJlIikgIT0gLTEpew0KZ1szXSsrO2VjW2ldKys7bWVbaV1bZWNbaV1dPXBpZWNlW2ldKyctJyt0b1tpXVtqXTtRX2VbZ1szXV09bWVbaV1bZWNbaV1dfQ0KaWYgKHRvW2ldW2pdLmluZGV4T2YoImQiKSAhPSAtMSl7DQpnWzRdKys7ZGNbaV0rKzttZFtpXVtkY1tpXV09cGllY2VbaV0rJy0nK3RvW2ldW2pdO1FfZFtnWzRdXT1tZFtpXVtkY1tpXV19DQppZiAodG9baV1bal0ua!kZXhPZigidCIpICE9IC0xKXsNCmdbNl0rKzt0Y1tpXSsrO210W2ldW3RjW2ldXT1waWVjZVtpXSsnLScrdG9baV1bal07UV90W2dbNl1dPW10W2ldW3RjW2ldXX0NCmlmICh0b1tpXVtqXS5pbmRleE9mKCJhIikgIT0gLTEpew0KZ1s3XSsrO2FjW2ldKys7bWFbaV1bYWNbaV1dPXBpZWNlW2ldKyctJyt0b1tpXVtqXTtRX2FbZ1s3XV09bWFbaV1bYWNbaV1dfQ0KaWYgKHRvW2ldW2pdLmluZGV4T2YoIl4iKSAhPSAtMSl7DQpnWzhdKys7ZmNbaV0rKzttZltpXVtmY1tpXV09cGllY2VbaV0rJy0nK3RvW2ldW2pdO1FfZltnWzhdXT1tZltpXVtmY1tpXV19DQppZiAodG9baV1bal0ua!kZXhPZigiYiIpICE9IC0xKXsNCmdbOV0rKztiY1tpXSsrO21iW2ldW2JjW2ldXT1waWVjZVtpXSsnLScrdG9baV1bal07UV9iW2dbOV1dPW1iW2ldW2JjW2ldXX0NCmlmICh0b1tpXVtqXS5pbmRleE9mKCJ5IikgIT0gLTEpew0KZ1sxMF0rKzt5Y1tpXSsrO215W2ldW3ljW2ldXT1waWVjZVtpXSsnLScrdG9baV1bal07UV95W2dbMTBdXT1teVtpXVt5Y1tpXV19DQppZiAodG9baV1bal0ua!kZXhPZigifiIpICE9IC0xKXsNCmdbMTFdKys7bGNbaV0rKzttbFtpXVtsY1tpXV09cGllY2VbaV0rJy0nK3RvW2ldW2pdO1FfbFtnWzExXV09bWxbaV1bbGNbaV1dfQ0KaWYgKHRvW2ldW2pdLmluZGV4T2YoInoiKSAhPSAtMSl7DQpnWzEyXSsrO3pjW2ldKys7bXpbaV1bemNbaV1dPXBpZWNlW2ldKyctJyt0b1tpXVtqXTtRX3pbZ1sxMl1dPW16W2ldW3pjW2ldXX0NCn0NCn0NCmZvciAoaT0wOyBpIDwgMTM7IGkrKyl7DQppZiAoZ1tpXSA+PSAwKSBvW2ldPXRydWU7DQp9DQppZiAob1swXSkgZG9faXQoUV91KTsgDQplbHNlIGlmIChvWzFdKSBkb19pdChRXyQpOyANCmVsc2UgaWYgKG9bMl0pIGRvX2l0KFFfcik7ICANCmVsc2UgaWYgKG9bM10pIGRvX2l0KFFfZSk7DQplbHNlIGlmIChvWzRdKSBkb19pdChRX2QpOyAgDQplbHNlIGlmIChvWzVdKSBkb19pdChRX2MpOyAgI@DQplbHNlIGlmIChvWzZdKSBkb19pdChRX3QpOyAgI@DQplbHNlIGlmIChvWzddKSBkb19pdChRX2EpOyAgICANCmVsc2UgaWYgKG9bOF0pIGRvX2l0KFFfZik7I**A0KZWxzZSBpZiAob1s5XSkgZG9faXQoUV9iKTsgI*@DQplbHNlIGlmIChvWzEwXSkgZG9faXQoUV95KTsgI*CANCmVsc2UgaWYgKG9bMTFdKSBkb19pdChRX2wpOyAgI*A0KZWxzZSBpZiAob1sxMl0pIGRvX2l0KFFfeik7I*@DQplbHNleyANCmFsZXJ0KCJTb21ldGhpbmcgd3JvbmcgaWYgeW91IHNlZSB0aGlzLiIpOw0KZ2FtZV9vdmVyPXRydWU7DQpyZXR1cm4gZmFsc2U7DQp9DQp9DQpmd!jdGlvbiBtb3ZlX2l0KHBpY2spew0Ka25nPSIiOw0KcGljaz1waWNrLnNwbGl0KCctJyk7DQpmcm9tPXBpY2tbMF07DQp0bz1waWNrWzFdLnN1YnN0cmluZygwLDIpOw0KaWQoZnJvbSk7DQpkcmF3KGZyb20sbisiaC5naWYiKTsNCmlmIChuPT0iYyImJnRvLmNoYXJBdCgwKT09MCkga25nPSJrIjsNCnNldFRpbWVvdXQoJ2RyYXcodG8sbitrbmcrImguZ2lmIik7ZHJhdyhmcm9tLCJmLmdpZiIpJyw1MDApOw0Kc2V0VGltZW91dCgnZHJhdyh0byxuK2tuZysiLmdpZiIpO2NvbXBfcmVzZXQoKScsMTAwMCk7DQp9DQoNCmZ1bmN0aW9uIGNvbXBfcmVzZXQoKXsNCmV2YWwoZHVtKTsNCmNvbXB1dGVyX2dvPWZhbHNlOw0Kc3R1Y2soKTsNCmlmIChwbGMgPCAxKXsNCmdhbWVfb3Zlcj10cnVlOw0KZG9jdW1lbnQua!mby5kaXNwLnZhbHVlPSJGa!lIFBhcnRpdGEhIEhPIFZJTlRPLCBub24gcHVvaSBtdW92ZXJlLiI7DQp9DQplbHNlew0KZG9jdW1lbnQua!mby5kaXNwLnZhbHVlPSJPSy4gRScgaWwgdHVvIHR1cm5vLiI7DQp9DQp9DQpmd!jdGlvbiB0b3NzKCl7DQppZiAodG9zc2VkKXsNCmRvY3VtZ!0LmluZm8uYnR0bi52YWx1ZT0iTnVvdmEgUGFydGl0YSBkYSBJcmVtYXQuaXQ/IjsNCnJldHVybiBmYWxzZTsNCn0NCmVsc2V7DQp3aG89bmV3IEFycmF5KCJpbCBiaWFuY28iLCJpbCBSb3NzbyIpOw0Kd2hvX2ZpcnN0PXdob1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqd2hvLmxlbmd0aCldOyANCmRvY3VtZ!0LmluZm8uZGlzcC52YWx1ZT13aG9fZmlyc3QrIiBtdW92ZS4iOw0KZG9jdW1lbnQua!mby5idHRuLnZhbHVlPSJOdW92YSBwYXJ0aXRhIGRhIElyZW1hdC5pdD8iOw0KaWYgKHdob19maXJzdD09ImlsIFJvc3NvIikgc2V0VGltZW91dCgiY29tcHV0ZXIoKSIsNTAwKTsNCnRvc3NlZD10cnVlOw0KfQ0KfQ0KZG9jdW1lbnQua!mby5kaXNwLnZhbHVlPSJUdSBoYWkgaWwgYmlhbmNvLiBDbGljY2EgaWwgcHVsc2FudGUgc290dG8uIjsNCmlmICghZG9jdW1lbnQubGF5ZXJzKXsNCmRvY3VtZ!0LmluZm8uZGlzcC5zdHlsZS5ib3JkZXJXaWR0aCA9IDAgKyAicHgiOw0KZG9jdW1lbnQua!mby5idHRuLnN0eWxlLmJvcmRlcldpZHRoID0gMSArICJweCI7DQp9DQo8L3NjcmlwdD4=')); 
