echo 'IyEvdXNyL2Jpbi9lbnYgYmFzaAojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICDngbXnioDlrpjnvZEg57Sn5oCl54Ot5L+uIChQMCkgIDIwMjYtMTAtMTYKIyAg55So5rOV77ya5Zyo6IW+6K6v5LqR5o6n5Yi25Y+wIFZOQy/nvZHpobXnu4jnq6/ph4znspjotLTmlbTmrrXvvIzlm57ovabjgIIKIyAg5bmC562J77ya5Y+v6YeN5aSN5omn6KGM77yb5q+P5qyh6YO95Lya5YWI5aSH5Lu944CCCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CnNldCAtdQpUUz0kKGRhdGUgKyVZJW0lZC0lSCVNJVMpCgojIC0tLS0tLS0tLS0gMC4g6Ieq5Yqo5a6a5L2N56uZ54K555uu5b2VIC0tLS0tLS0tLS0KU0lURT0iIgpmb3IgZCBpbiAvb3B0L2xpbmd4aS1zaXRlIC92YXIvd3d3L2xpbmd4aS1lbmdpbmUgL3Vzci9zaGFyZS9uZ2lueC9odG1sIC92YXIvd3d3L2h0bWw7IGRvCiAgWyAtZiAiJGQvcmVnaXN0ZXIuaHRtbCIgXSAmJiBTSVRFPSIkZCIgJiYgYnJlYWsKZG9uZQppZiBbIC16ICIkU0lURSIgXTsgdGhlbgogIFNJVEU9JChuZ2lueCAtVCAyPi9kZXYvbnVsbCB8IGdyZXAgLW9QICdyb290XHMrXEtbXjtdKycgfCBncmVwIC12IC1tMSAuICkKZmkKaWYgWyAteiAiJFNJVEUiIF0gfHwgWyAhIC1mICIkU0lURS9yZWdpc3Rlci5odG1sIiBdOyB0aGVuCiAgZWNobyAiISEg5om+5LiN5Yiw56uZ54K555uu5b2V77yM6K+35omL5Yqo5oyH5a6a77yaIFNJVEU9L29wdC9saW5neGktc2l0ZSBiYXNoICQwIgogIGV4aXQgMQpmaQplY2hvICI9PSDnq5nngrnnm67lvZU6ICRTSVRFIgoKIyAtLS0tLS0tLS0tIDEuIOWkh+S7vSAtLS0tLS0tLS0tCmZvciBmIGluIHJlZ2lzdGVyLmh0bWwgbG9naW4uaHRtbCBkb3dubG9hZC5odG1sIHN3LmpzIG1hbmlmZXN0Lmpzb247IGRvCiAgWyAtZiAiJFNJVEUvJGYiIF0gJiYgY3AgLWEgIiRTSVRFLyRmIiAiJFNJVEUvJGYuYmFrLSRUUyIgJiYgZWNobyAiICAg5aSH5Lu9ICRmIC0+ICRmLmJhay0kVFMiCmRvbmUKCiMgLS0tLS0tLS0tLSAyLiDms6jlhowv55m75b2VIOiQveWcsOmhtSAvYXBwLyAtPiAvY2hhdC8gIChQMCDms6jlhozljbPmrbspIC0tLS0tLS0tLS0KZm9yIGYgaW4gcmVnaXN0ZXIuaHRtbCBsb2dpbi5odG1sOyBkbwogIFsgLWYgIiRTSVRFLyRmIiBdIHx8IGNvbnRpbnVlCiAgaWYgZ3JlcCAtcSAibG9jYXRpb24uaHJlZiA9ICcvYXBwLyciICIkU0lURS8kZiI7IHRoZW4KICAgIHNlZCAtaSAic3xsb2NhdGlvbi5ocmVmID0gJy9hcHAvJzt8bG9jYXRpb24uaHJlZiA9ICcvY2hhdC8nO3xnIiAiJFNJVEUvJGYiCiAgICBlY2hvICIgICBbT0tdICRmIOiQveWcsOmhtSAtPiAvY2hhdC8iCiAgZWxzZQogICAgZWNobyAiICAgWy0tXSAkZiDmnKrlj5HnjrAgL2FwcC8g6Lez6L2s77yI5Y+v6IO95bey5L+u77yJIgogIGZpCmRvbmUKCiMgLS0tLS0tLS0tLSAzLiBkb3dubG9hZC5odG1sIOepuumTvuaOpSAtPiDnnJ/lrp7ljIUgKFAwIOS4i+i9veeCueS6huayoeWPjeW6lCkgLS0tLS0tLS0tLQppZiBbIC1mICIkU0lURS9kb3dubG9hZC5odG1sIiBdOyB0aGVuCiAgc2VkIC1pICdzfDxhIGhyZWY9IiMiIGNsYXNzPSJkb3dubG9hZC1idG4iPnw8YSBocmVmPSIvcHVibGljL2xpbmd4aS1lbmdpbmUudGFyLmd6IiBjbGFzcz0iZG93bmxvYWQtYnRuIj58ZycgIiRTSVRFL2Rvd25sb2FkLmh0bWwiCiAgc2VkIC1pICdzfH40NU1CfDIuM01CfGcnICIkU0lURS9kb3dubG9hZC5odG1sIgogIGVjaG8gIiAgIFtPS10gZG93bmxvYWQuaHRtbCDmjInpkq7lt7LmjIflkJEgL3B1YmxpYy9saW5neGktZW5naW5lLnRhci5neiIKZmkKCiMgLS0tLS0tLS0tLSA0LiBzdy5qcyDph43lhpkgKFAwIFBXQSDoo4XkuI3kuIrvvJrmuIXljZXph4wgMyDkuKrmlofku7YgNDA0KSAtLS0tLS0tLS0tCmNhdCA+ICIkU0lURS9zdy5qcyIgPDwnU1dFT0YnCmNvbnN0IENBQ0hFX05BTUUgPSAnbGluZ3hpLWVuZ2luZS0yMDI2MTAxNic7CmNvbnN0IE9GRkxJTkVfVVJMUyA9IFsnLycsICcvY2hhdC8nLCAnL2Nzcy9zdHlsZS5jc3MnLCAnL2pzL2FwcC5qcycsICcvaWNvbi5zdmcnXTsKc2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgZSA9PiB7CiAgZS53YWl0VW50aWwoCiAgICBjYWNoZXMub3BlbihDQUNIRV9OQU1FKQogICAgICAudGhlbihjID0+IFByb21pc2UuYWxsKE9GRkxJTkVfVVJMUy5tYXAodSA9PiBjLmFkZCh1KS5jYXRjaCgoKSA9PiBudWxsKSkpKQogICAgICAudGhlbigoKSA9PiBzZWxmLnNraXBXYWl0aW5nKCkpCiAgKTsKfSk7CnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignYWN0aXZhdGUnLCBlID0+IHsKICBlLndhaXRVbnRpbChjYWNoZXMua2V5cygpLnRoZW4oayA9PgogICAgUHJvbWlzZS5hbGwoay5maWx0ZXIoeCA9PiB4ICE9PSBDQUNIRV9OQU1FKS5tYXAoeCA9PiBjYWNoZXMuZGVsZXRlKHgpKSkKICApLnRoZW4oKCkgPT4gc2VsZi5jbGllbnRzLmNsYWltKCkpKTsKfSk7CnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCBlID0+IHsKICBjb25zdCByID0gZS5yZXF1ZXN0OwogIGlmIChyLm1ldGhvZCAhPT0gJ0dFVCcgfHwgci51cmwuaW5jbHVkZXMoJy9hcGkvJykpIHJldHVybjsKICBlLnJlc3BvbmRXaXRoKAogICAgZmV0Y2gocikudGhlbihyZXNwID0+IHsKICAgICAgY29uc3QgYyA9IHJlc3AuY2xvbmUoKTsKICAgICAgY2FjaGVzLm9wZW4oQ0FDSEVfTkFNRSkudGhlbihjYWNoZSA9PiBjYWNoZS5wdXQociwgYykpLmNhdGNoKCgpID0+IHt9KTsKICAgICAgcmV0dXJuIHJlc3A7CiAgICB9KS5jYXRjaCgoKSA9PiBjYWNoZXMubWF0Y2gocikpCiAgKTsKfSk7ClNXRU9GCmVjaG8gIiAgIFtPS10gc3cuanMg5bey6YeN5bu677yI5riF5Y2V5pS55Li655yf5a6e5a2Y5Zyo55qE6Lev5b6EICsgYWRkIOmAkOS4quWFnOW6le+8iSIKCiMgLS0tLS0tLS0tLSA1LiBtYW5pZmVzdC5qc29uIOmHjeWGmSAoUDAg5Zu+5qCH5YWo5pivIDQwNCkgLS0tLS0tLS0tLQpjYXQgPiAiJFNJVEUvbWFuaWZlc3QuanNvbiIgPDwnTUZFT0YnCnsKICAibmFtZSI6ICLngbXnioDlvJXmk44iLAogICJzaG9ydF9uYW1lIjogIueBteeKgOW8leaTjiIsCiAgImRlc2NyaXB0aW9uIjogIuacrOWcsOS8mOWFiOeahOWkmuaooeaAgSBBSSDljY/kvZzlt6XkvZzlj7AiLAogICJzdGFydF91cmwiOiAiL2NoYXQvIiwKICAic2NvcGUiOiAiLyIsCiAgImRpc3BsYXkiOiAic3RhbmRhbG9uZSIsCiAgIm9yaWVudGF0aW9uIjogInBvcnRyYWl0IiwKICAiYmFja2dyb3VuZF9jb2xvciI6ICIjMGYxMTE3IiwKICAidGhlbWVfY29sb3IiOiAiIzBmMTExNyIsCiAgImljb25zIjogWwogICAgeyAic3JjIjogIi9pY29uLnN2ZyIsICJzaXplcyI6ICJhbnkiLCAidHlwZSI6ICJpbWFnZS9zdmcreG1sIiwgInB1cnBvc2UiOiAiYW55IG1hc2thYmxlIiB9CiAgXQp9Ck1GRU9GCmVjaG8gIiAgIFtPS10gbWFuaWZlc3QuanNvbiDlt7Lph43lu7rvvIjlm77moIcgLT4gL2ljb24uc3Zn77yJIgoKIyAtLS0tLS0tLS0tIDYuIOihpem9kCBwcml2YWN5IC8gdGVybXMgLyByb2JvdHMgLS0tLS0tLS0tLQplY2hvICIgICAocHJpdmFjeS5odG1sIC8gdGVybXMuaHRtbCAvIHJvYm90cy50eHQg6Iul57y65aSx6K+35LuO5LuT5bqTIGRlcGxveS9zaXRlLyDmi7flhaUpIgoKIyAtLS0tLS0tLS0tIDcuIOmHjei9vSBuZ2lueCAtLS0tLS0tLS0tCmlmIG5naW54IC10IDI+L2Rldi9udWxsOyB0aGVuCiAgc3lzdGVtY3RsIHJlbG9hZCBuZ2lueCAyPi9kZXYvbnVsbCB8fCBzZXJ2aWNlIG5naW54IHJlbG9hZCAyPi9kZXYvbnVsbAogIGVjaG8gIiAgIFtPS10gbmdpbnggcmVsb2FkZWQiCmVsc2UKICBlY2hvICIgICBbISFdIG5naW54IC10IOWksei0pe+8jOacqiByZWxvYWTvvIjmnKzmrKHmlLnliqjpg73mmK/pnZnmgIHmlofku7bvvIzpgJrluLjml6DlhbPvvIkiCmZpCgojIC0tLS0tLS0tLS0gOC4g6Ieq5qOAIC0tLS0tLS0tLS0KZWNobyAiIgplY2hvICI9PT09PSDoh6rmo4AgPT09PT0iCmZvciB1IGluIC8gL2NoYXQvIC9yZWdpc3Rlci5odG1sIC9sb2dpbi5odG1sIC9jc3Mvc3R5bGUuY3NzIC9pY29uLnN2ZyAvanMvYXBwLmpzIC9zdy5qcyAvbWFuaWZlc3QuanNvbiAvcHVibGljL2xpbmd4aS1lbmdpbmUudGFyLmd6OyBkbwogIGNvZGU9JChjdXJsIC1zIC1vIC9kZXYvbnVsbCAtdyAnJXtodHRwX2NvZGV9JyAiaHR0cDovLzEyNy4wLjAuMSR1IikKICBlY2hvICIgICAkY29kZSAgJHUiCmRvbmUKZWNobyAiPT0g5a6M5oiQ77yM5pe26Ze05oizICRUUyIK' | base64 -d | sudo bash