import base64
data = "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+U2lnbiBVcCAtIEdldEZvdW5kTG9jYWw8L3RpdGxlPgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcz9yZW5kZXI9e3sgY29uZmlnLmdldCgnUkVDQVBUQ0hBX1NJVEVfS0VZJywgJycpIH19Ij48L3NjcmlwdD4KICAgIDxzdHlsZT4KICAgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgICAgaHRtbCwgYm9keSB7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IH0KICAgICAgICBib2R5IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzFlM2E4YSAwJSwgIzBmMTcyYSAxMDAlKTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKICAgICAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgfQogICAgICAgIC5zaWdudXAtd3JhcHBlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDIwcHggNjBweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAzNnB4IDMycHg7CiAgICAgICAgfQogICAgICAgIC5sb2dvIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyNnB4OwogICAgICAgICAgICBmb250LXdlaWdodDogOTAwOwogICAgICAgICAgICBjb2xvcjogIzFlM2E4YTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC5sb2dvIHNwYW4geyBjb2xvcjogIzBkOTQ4ODsgfQogICAgICAgIGgxIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogOTAwOwogICAgICAgICAgICBjb2xvcjogIzBmMTcyYTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC5zdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgY29sb3I6ICM0NzU1Njk7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjJweDsKICAgICAgICB9CiAgICAgICAgLyogRmxhc2ggbWVzc2FnZXMgKi8KICAgICAgICAuZmxhc2gtbWVzc2FnZXMgeyBtYXJnaW4tYm90dG9tOiAxNHB4OyB9CiAgICAgICAgLmZsYXNoIHsKICAgICAgICAgICAgcGFkZGluZzogOXB4IDEzcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgfQogICAgICAgIC5mbGFzaC1zdWNjZXNzIHsgYmFja2dyb3VuZDogI2YwZmRmNDsgY29sb3I6ICMxNjY1MzQ7IGJvcmRlcjogMXB4IHNvbGlkICNiYmY3ZDA7IH0KICAgICAgICAuZmxhc2gtZXJyb3IgICB7IGJhY2tncm91bmQ6ICNmZWYyZjI7IGNvbG9yOiAjOTkxYjFiOyBib3JkZXI6IDFweCBzb2xpZCAjZmVjYWNhOyB9CiAgICAgICAgLmZsYXNoLXdhcm5pbmcgeyBiYWNrZ3JvdW5kOiAjZmZmYmViOyBjb2xvcjogIzkyNDAwZTsgYm9yZGVyOiAxcHggc29saWQgI2ZkZTY4YTsgfQogICAgICAgIC5mbGFzaC1pbmZvICAgIHsgYmFja2dyb3VuZDogI2VmZjZmZjsgY29sb3I6ICMxZTQwYWY7IGJvcmRlcjogMXB4IHNvbGlkICNiZmRiZmU7IH0KICAgICAgICAvKiBGb3JtICovCiAgICAgICAgLmZvcm0tZ3JvdXAgeyBtYXJnaW4tYm90dG9tOiAxM3B4OyB9CiAgICAgICAgLmZvcm0tcm93IHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgfQogICAgICAgIGxhYmVsIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6ICMwZjE3MmE7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgICAgIH0KICAgICAgICBpbnB1dFt0eXBlPSJ0ZXh0Il0sIGlucHV0W3R5cGU9ImVtYWlsIl0sCiAgICAgICAgaW5wdXRbdHlwZT0icGFzc3dvcmQiXSwgaW5wdXRbdHlwZT0idGVsIl0gewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgcGFkZGluZzogOXB4IDExcHg7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNlMmU4ZjA7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYzsKICAgICAgICAgICAgY29sb3I6ICMwZjE3MmE7CiAgICAgICAgfQogICAgICAgIGlucHV0OmZvY3VzIHsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMGQ5NDg4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTMsIDE0OCwgMTM2LCAwLjEpOwogICAgICAgIH0KICAgICAgICAuaGludCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICAgICAgY29sb3I6ICM5NGEzYjg7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDNweDsKICAgICAgICB9CiAgICAgICAgYnV0dG9uIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDExcHggMTZweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAxNHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWUzYThhIDAlLCAjMGYxNzJhIDEwMCUpOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgzMCwgNTgsIDEzOCwgMC4zKTsKICAgICAgICB9CiAgICAgICAgYnV0dG9uOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoMzAsIDU4LCAxMzgsIDAuNCk7CiAgICAgICAgfQogICAgICAgIGJ1dHRvbjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNzsgY3Vyc29yOiBub3QtYWxsb3dlZDsgdHJhbnNmb3JtOiBub25lOyB9CiAgICAgICAgLmxvZ2luLWxpbmsgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxNHB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAxNHB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZThmMDsKICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgICBjb2xvcjogIzMzNDE1NTsKICAgICAgICB9CiAgICAgICAgLmxvZ2luLWxpbmsgYSB7IGNvbG9yOiAjMWUzYThhOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KICAgICAgICAubG9naW4tbGluayBhOmhvdmVyIHsgY29sb3I6ICMwZDk0ODg7IH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJzaWdudXAtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0ibG9nbyI+R2V0Rm91bmQ8c3Bhbj5Mb2NhbDwvc3Bhbj48L2Rpdj4KICAgICAgICA8aDE+Q3JlYXRlIEFjY291bnQ8L2gxPgogICAgICAgIDxwIGNsYXNzPSJzdWJ0aXRsZSI+U3RhcnQgZ3Jvd2luZyB5b3VyIGxvY2FsIGJ1c2luZXNzIG9ubGluZTwvcD4KCiAgICAgICAgeyUgd2l0aCBtZXNzYWdlcyA9IGdldF9mbGFzaGVkX21lc3NhZ2VzKHdpdGhfY2F0ZWdvcmllcz10cnVlKSAlfQogICAgICAgICAgeyUgaWYgbWVzc2FnZXMgJX0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxhc2gtbWVzc2FnZXMiPgogICAgICAgICAgICAgIHslIGZvciBjYXRlZ29yeSwgbWVzc2FnZSBpbiBtZXNzYWdlcyAlfQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxhc2ggZmxhc2gte3sgY2F0ZWdvcnkgfX0iPnt7IG1lc3NhZ2UgfX08L2Rpdj4KICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgIHslIGVuZHdpdGggJX0KCiAgICAgICAgPGZvcm0gaWQ9InNpZ251cC1mb3JtIiBtZXRob2Q9IlBPU1QiIG5vdmFsaWRhdGU+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNzcmZfdG9rZW4iIHZhbHVlPSJ7eyBjc3JmX3Rva2VuKCkgfX0iPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icmVjYXB0Y2hhX3Rva2VuIiBuYW1lPSJyZWNhcHRjaGFfdG9rZW4iIHZhbHVlPSIiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1yb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0idXNlcm5hbWUiPlVzZXJuYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InVzZXJuYW1lIiBuYW1lPSJ1c2VybmFtZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9ImpvaG5kb2UiIHJlcXVpcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aD0iMyIgbWF4bGVuZ3RoPSIyMCI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InBob25lIj5QaG9uZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRlbCIgaWQ9InBob25lIiBuYW1lPSJwaG9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Iig0MDQpIDEyMy00NTY3IiByZXF1aXJlZD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iZW1haWwiPkVtYWlsPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgaWQ9ImVtYWlsIiBuYW1lPSJlbWFpbCIKICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0ieW91QGV4YW1wbGUuY29tIiByZXF1aXJlZD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLXJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJwYXNzd29yZCI+UGFzc3dvcmQ8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgaWQ9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IuKAouKAouKAouKAouKAouKAouKAouKAoiIgcmVxdWlyZWQgbWlubGVuZ3RoPSI4Ij4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iY29uZmlybV9wYXNzd29yZCI+Q29uZmlybTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBpZD0iY29uZmlybV9wYXNzd29yZCIgbmFtZT0iY29uZmlybV9wYXNzd29yZCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IuKAouKAouKAouKAouKAouKAouKAouKAoiIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwIGNsYXNzPSJoaW50Ij5Vc2VybmFtZTogM+KAkzIwIGNoYXJhY3RlcnMsIGxldHRlcnMgYW5kIG51bWJlcnMgb25seS4gUGFzc3dvcmQ6IDgrIGNoYXJhY3RlcnMuPC9wPgoKICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJzaWdudXAtYnRuIj5TaWduIFVwPC9idXR0b24+CiAgICAgICAgPC9mb3JtPgoKICAgICAgICA8ZGl2IGNsYXNzPSJsb2dpbi1saW5rIj4KICAgICAgICAgICAgQWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/IDxhIGhyZWY9Int7IHVybF9mb3IoJ2F1dGgubG9naW4nKSB9fSI+TG9nIGluPC9hPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPHNjcmlwdD4KICAgICAgICBjb25zdCBTSVRFX0tFWSA9ICd7eyBjb25maWcuZ2V0KCJSRUNBUFRDSEFfU0lURV9LRVkiLCAiIikgfX0nOwogICAgICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2lnbnVwLWZvcm0nKTsKICAgICAgICBjb25zdCBidG4gID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NpZ251cC1idG4nKTsKCiAgICAgICAgZm9ybS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgYnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgYnRuLnRleHRDb250ZW50ID0gJ0NyZWF0aW5nIGFjY291bnQuLi4nOwoKICAgICAgICAgICAgZ3JlY2FwdGNoYS5yZWFkeShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGdyZWNhcHRjaGEuZXhlY3V0ZShTSVRFX0tFWSwgeyBhY3Rpb246ICdzaWdudXAnIH0pLnRoZW4oZnVuY3Rpb24odG9rZW4pIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjYXB0Y2hhX3Rva2VuJykudmFsdWUgPSB0b2tlbjsKICAgICAgICAgICAgICAgICAgICBmb3JtLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZm9ybS5zdWJtaXQoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K"
with open('templates/auth/signup.html', 'wb') as f:
    f.write(base64.b64decode(data))
print('Done - signup.html updated')
