diff --git a/python/start.sh b/python/start.sh index 5b20a5d..34fd1c2 100644 --- a/python/start.sh +++ b/python/start.sh @@ -12,6 +12,6 @@ export SERVER_PORT="${SERVER_PORT:-${PORT:-7860}}" # Hy2 端口,自动获取 export REALITY_PORT=${REALITY_PORT:-'50000'} # vless-reality 端口,支持多端口玩具可填写 export TUIC_PORT=${TUIC_PORT:-'60000'} # tuic5 端口,支持多端口玩具可填写 -echo "IyBTZWxlY3QgVHVubmVsIG1vZGUKYXJnb19jb25maWd1cmUoKSB7CiAgaWYgW1sgLXogJEFSR09fQVVUSCB8fCAteiAkQVJHT19ET01BSU4gXV07IHRoZW4KICAgIGVjaG8gLWUgIlxlWzE7MzJtQVJHT19ET01BSU4gb3IgQVJHT19BVVRIIHZhcmlhYmxlIGlzIGVtcHR5LCB1c2UgcXVpY2sgdHVubmVsc1xlWzBtIgogICAgcmV0dXJuCiAgZmkKCiAgaWYgW1sgJEFSR09fQVVUSCA9fiBUdW5uZWxTZWNyZXQgXV07IHRoZW4KICAgIGVjaG8gJEFSR09fQVVUSCA+IHR1bm5lbC5qc29uCiAgICBjYXQgPiB0dW5uZWwueW1sIDw8IEVPRgp0dW5uZWw6ICQoY3V0IC1kXCIgLWYxMiA8PDwgIiRBUkdPX0FVVEgiKQpjcmVkZW50aWFscy1maWxlOiB0dW5uZWwuanNvbgpwcm90b2NvbDogaHR0cDIKCmluZ3Jlc3M6CiAgLSBob3N0bmFtZTogJEFSR09fRE9NQUlOCiAgICBzZXJ2aWNlOiBodHRwOi8vbG9jYWxob3N0OiRBUkdPX1BPUlQKICAgIG9yaWdpblJlcXVlc3Q6CiAgICAgIG5vVExTVmVyaWZ5OiB0cnVlCiAgLSBzZXJ2aWNlOiBodHRwX3N0YXR1czo0MDQKRU9GCiAgZWxzZQogICAgZWNobyAtZSAiXGVbMTszMm1BUkdPX0FVVEggbWlzbWF0Y2ggVHVubmVsU2VjcmV0LHVzZSB0b2tlbiBjb25uZWN0IHRvIHR1bm5lbFxlWzBtIgogIGZpCn0KYXJnb19jb25maWd1cmUKd2FpdAoKIyBEb3dubG9hZCBEZXBlbmRlbmN5IEZpbGVzCkFSQ0g9JCh1bmFtZSAtbSkgJiYgRE9XTkxPQURfRElSPSIuIiAmJiBta2RpciAtcCAiJERPV05MT0FEX0RJUiIgJiYgRklMRV9JTkZPPSgpCmlmIFsgIiRBUkNIIiA9PSAiYXJtIiBdIHx8IFsgIiRBUkNIIiA9PSAiYXJtNjQiIF0gfHwgWyAiJEFSQ0giID09ICJhYXJjaDY0IiBdOyB0aGVuCiAgICBGSUxFX0lORk89KCJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9hcm02NC9zYiB3ZWIiICJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9hcm02NC9ib3QxMyBib3QiICJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9BUk0vc3dpdGggbnBtIikKZWxpZiBbICIkQVJDSCIgPT0gImFtZDY0IiBdIHx8IFsgIiRBUkNIIiA9PSAieDg2XzY0IiBdIHx8IFsgIiRBUkNIIiA9PSAieDg2IiBdOyB0aGVuCiAgICBGSUxFX0lORk89KCJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9hbWQ2NC9zYiB3ZWIiICJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9hbWQ2NC9ib3QxMyBib3QiICJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9mcmVlYnNkL3N3aXRoIG5wbSIpCmVsc2UKICAgIGVjaG8gIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZTogJEFSQ0giCiAgICBleGl0IDEKZmkKZm9yIGVudHJ5IGluICIke0ZJTEVfSU5GT1tAXX0iOyBkbwogICAgVVJMPSQoZWNobyAiJGVudHJ5IiB8IGN1dCAtZCAnICcgLWYgMSkKICAgIE5FV19GSUxFTkFNRT0kKGVjaG8gIiRlbnRyeSIgfCBjdXQgLWQgJyAnIC1mIDIpCiAgICBGSUxFTkFNRT0iJERPV05MT0FEX0RJUi8kTkVXX0ZJTEVOQU1FIgogICAgaWYgWyAtZSAiJEZJTEVOQU1FIiBdOyB0aGVuCiAgICAgICAgZWNobyAtZSAiXGVbMTszMm0kRklMRU5BTUUgYWxyZWFkeSBleGlzdHMsU2tpcHBpbmcgZG93bmxvYWRcZVswbSIKICAgIGVsc2UKICAgICAgICBjdXJsIC1MIC1zUyAtbyAiJEZJTEVOQU1FIiAiJFVSTCIKICAgICAgICBlY2hvIC1lICJcZVsxOzMybURvd25sb2FkaW5nICRGSUxFTkFNRVxlWzBtIgogICAgZmkKICAgIGNobW9kICt4ICRGSUxFTkFNRQpkb25lCndhaXQKCiMgR2VuZXJhdGluZyBDb25maWd1cmF0aW9uIEZpbGVzCmdlbmVyYXRlX2NvbmZpZygpIHsKCiAgICBvdXRwdXQ9JCgvaG9tZS9jb250YWluZXIvd2ViIGdlbmVyYXRlIHJlYWxpdHkta2V5cGFpcikKICAgIHByaXZhdGVfa2V5PSQoZWNobyAiJHtvdXRwdXR9IiB8IGdyZXAgLW9QICdQcml2YXRlS2V5OlxzKlxLLionKQogICAgcHVibGljX2tleT0kKGVjaG8gIiR7b3V0cHV0fSIgfCBncmVwIC1vUCAnUHVibGljS2V5OlxzKlxLLionKQoKICAgIG9wZW5zc2wgZWNwYXJhbSAtZ2Vua2V5IC1uYW1lIHByaW1lMjU2djEgLW91dCAicHJpdmF0ZS5rZXkiCiAgICBvcGVuc3NsIHJlcSAtbmV3IC14NTA5IC1kYXlzIDM2NTAgLWtleSAicHJpdmF0ZS5rZXkiIC1vdXQgImNlcnQucGVtIiAtc3ViaiAiL0NOPWJpbmcuY29tIgoKICBjYXQgPiBjb25maWcuanNvbiA8PCBFT0YKewogICJsb2ciOiB7CiAgICAib3V0cHV0IjogInNiLmxvZyIsCiAgICAibGV2ZWwiOiAiaW5mbyIsCiAgICAidGltZXN0YW1wIjogdHJ1ZQogIH0sCiAgImRucyI6IHsKICAgICJzZXJ2ZXJzIjogWwogICAgICB7CiAgICAgICAgImFkZHJlc3MiOiAiOC44LjguOCIsCiAgICAgICAgImFkZHJlc3NfcmVzb2x2ZXIiOiAibG9jYWwiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAidGFnIjogImxvY2FsIiwKICAgICAgICAiYWRkcmVzcyI6ICJsb2NhbCIKICAgICAgfQogICAgXQogIH0sCiAgICAiaW5ib3VuZHMiOiBbCiAgICB7CiAgICAgICAidGFnIjogImh5c3RlcmlhLWluIiwKICAgICAgICJ0eXBlIjogImh5c3RlcmlhMiIsCiAgICAgICAibGlzdGVuIjogIjo6IiwKICAgICAgICJsaXN0ZW5fcG9ydCI6ICR7U0VSVkVSX1BPUlR9LAogICAgICAgInVzZXJzIjogWwogICAgICAgICB7CiAgICAgICAgICAgICAicGFzc3dvcmQiOiAiJHtVVUlEfSIKICAgICAgICAgfQogICAgIF0sCiAgICAgIm1hc3F1ZXJhZGUiOiAiaHR0cHM6Ly9iaW5nLmNvbSIsCiAgICAgInRscyI6IHsKICAgICAgICAgImVuYWJsZWQiOiB0cnVlLAogICAgICAgICAiYWxwbiI6IFsKICAgICAgICAgICAgICJoMyIKICAgICAgICAgXSwKICAgICAgICAgImNlcnRpZmljYXRlX3BhdGgiOiAiY2VydC5wZW0iLAogICAgICAgICAia2V5X3BhdGgiOiAicHJpdmF0ZS5rZXkiCiAgICAgICAgfQogICAgfSwKCiAgICB7CiAgICAgInRhZyI6ICJ2bGVzcy1pbiIsCiAgICAgInR5cGUiOiAidmxlc3MiLAogICAgICJsaXN0ZW4iOiAiOjoiLAogICAgICJsaXN0ZW5fcG9ydCI6ICR7UkVBTElUWV9QT1JUfSwKICAgICAidXNlcnMiOiBbCiAgICAgICAgIHsKICAgICAgICAgICAgICJ1dWlkIjogIiR7VVVJRH0iLAogICAgICAgICAgICAgImZsb3ciOiAieHRscy1ycHJ4LXZpc2lvbiIKICAgICAgICAgfQogICAgIF0sCiAgICAgInRscyI6IHsKICAgICAgICAgImVuYWJsZWQiOiB0cnVlLAogICAgICAgICAic2VydmVyX25hbWUiOiAid3d3LnlhaG9vLmNvbSIsCiAgICAgICAgICJyZWFsaXR5IjogewogICAgICAgICAgICAgImVuYWJsZWQiOiB0cnVlLAogICAgICAgICAgICAgImhhbmRzaGFrZSI6IHsKICAgICAgICAgICAgICAgICAic2VydmVyIjogInd3dy55YWhvby5jb20iLAogICAgICAgICAgICAgICAgICJzZXJ2ZXJfcG9ydCI6IDQ0MwogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJwcml2YXRlX2tleSI6ICIke3ByaXZhdGVfa2V5fSIsCiAgICAgICAgICAgICAic2hvcnRfaWQiOiBbCiAgICAgICAgICAgICAgICAgIiIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0sCgogICAgewogICAgICAidGFnIjogInZtZXNzLXdzLWluIiwKICAgICAgInR5cGUiOiAidm1lc3MiLAogICAgICAibGlzdGVuIjogIjo6IiwKICAgICAgImxpc3Rlbl9wb3J0IjogJHtBUkdPX1BPUlR9LAogICAgICAidXNlcnMiOiBbCiAgICAgIHsKICAgICAgICAidXVpZCI6ICIke1VVSUR9IgogICAgICB9CiAgICBdLAogICAgInRyYW5zcG9ydCI6IHsKICAgICAgInR5cGUiOiAid3MiLAogICAgICAicGF0aCI6ICIvdm1lc3MiLAogICAgICAiZWFybHlfZGF0YV9oZWFkZXJfbmFtZSI6ICJTZWMtV2ViU29ja2V0LVByb3RvY29sIgogICAgICB9CiAgICB9LAoKICAgIHsKICAgICAgInRhZyI6ICJ0dWljPWluIiwKICAgICAgInR5cGUiOiAidHVpYyIsCiAgICAgICJsaXN0ZW4iOiAiOjoiLAogICAgICAibGlzdGVuX3BvcnQiOiAke1RVSUNfUE9SVH0sCiAgICAgICJ1c2VycyI6IFsKICAgICAgICB7CiAgICAgICAgICAidXVpZCI6ICIke1VVSUR9IgogICAgICAgIH0KICAgICAgXSwKICAgICAgImNvbmdlc3Rpb25fY29udHJvbCI6ICJiYnIiLAogICAgICAidGxzIjogewogICAgICAgICJlbmFibGVkIjogdHJ1ZSwKICAgICAgICAiYWxwbiI6IFsKICAgICAgICAgICJoMyIKICAgICAgICBdLAogICAgICAgICJjZXJ0aWZpY2F0ZV9wYXRoIjogImNlcnQucGVtIiwKICAgICAgICAia2V5X3BhdGgiOiAicHJpdmF0ZS5rZXkiCiAgICAgIH0KICAgIH0KCiBdLAogICJvdXRib3VuZHMiOiBbCiAgICB7CiAgICAgICJ0YWciOiAiZGlyZWN0IiwKICAgICAgInR5cGUiOiAiZGlyZWN0IgogICAgfSwKICAgIHsKICAgICAgInRhZyI6ICJibG9jayIsCiAgICAgICJ0eXBlIjogImJsb2NrIgogICAgfQogIF0KfQpFT0YKfQpnZW5lcmF0ZV9jb25maWcKd2FpdAoKIyBydW5uaW5nIGZpbGVzCnJ1bigpIHsKICBpZiBbIC1lIG5wbSBdOyB0aGVuCiAgICB0bHNQb3J0cz0oIjQ0MyIgIjg0NDMiICIyMDk2IiAiMjA4NyIgIjIwODMiICIyMDUzIikKICAgIGlmIFtbICIke3Rsc1BvcnRzWypdfSIgPX4gIiR7TkVaSEFfUE9SVH0iIF1dOyB0aGVuCiAgICAgIE5FWkhBX1RMUz0iLS10bHMiCiAgICBlbHNlCiAgICAgIE5FWkhBX1RMUz0iIgogICAgZmkKICAgIGlmIFsgLW4gIiRORVpIQV9TRVJWRVIiIF0gJiYgWyAtbiAiJE5FWkhBX1BPUlQiIF0gJiYgWyAtbiAiJE5FWkhBX0tFWSIgXTsgdGhlbgogICAgICAgIG5vaHVwIC4vbnBtIC1zICR7TkVaSEFfU0VSVkVSfToke05FWkhBX1BPUlR9IC1wICR7TkVaSEFfS0VZfSAke05FWkhBX1RMU30gPi9kZXYvbnVsbCAyPiYxICYKCSAgICBzbGVlcCAyCiAgICAgICAgZWNobyAtZSAiXGVbMTszMm1ucG0gaXMgcnVubmluZ1xlWzBtIgogICAgZWxzZQogICAgICAgIGVjaG8gLWUgIlxlWzE7MzVtTkVaSEEgdmFyaWFibGUgaXMgZW1wdHksc2tpcGluZyBydW5pbmdcZVswbSIKICAgIGZpCiAgZmkKCiAgaWYgWyAtZSB3ZWIgXTsgdGhlbgogICAgbm9odXAgLi93ZWIgcnVuIC1jIGNvbmZpZy5qc29uID4vZGV2L251bGwgMj4mMSAmCiAgICBzbGVlcCAyCiAgICBlY2hvIC1lICJcZVsxOzMybXdlYiBpcyBydW5uaW5nXGVbMG0iCiAgZmkKCiAgaWYgWyAtZSBib3QgXTsgdGhlbgogICAgaWYgW1sgJEFSR09fQVVUSCA9fiBeW0EtWjAtOWEtej1dezEyMCwyNTB9JCBdXTsgdGhlbgogICAgICBhcmdzPSJ0dW5uZWwgLS1lZGdlLWlwLXZlcnNpb24gYXV0byAtLW5vLWF1dG91cGRhdGUgLS1wcm90b2NvbCBodHRwMiBydW4gLS10b2tlbiAke0FSR09fQVVUSH0iCiAgICBlbGlmIFtbICRBUkdPX0FVVEggPX4gVHVubmVsU2VjcmV0IF1dOyB0aGVuCiAgICAgIGFyZ3M9InR1bm5lbCAtLWVkZ2UtaXAtdmVyc2lvbiBhdXRvIC0tY29uZmlnIHR1bm5lbC55bWwgcnVuIgogICAgZWxzZQogICAgICBhcmdzPSJ0dW5uZWwgLS1lZGdlLWlwLXZlcnNpb24gYXV0byAtLW5vLWF1dG91cGRhdGUgLS1wcm90b2NvbCBodHRwMiAtLWxvZ2ZpbGUgYm9vdC5sb2cgLS1sb2dsZXZlbCBpbmZvIC0tdXJsIGh0dHA6Ly9sb2NhbGhvc3Q6JEFSR09fUE9SVCIKICAgIGZpCiAgICBub2h1cCAuL2JvdCAkYXJncyA+L2Rldi9udWxsIDI+JjEgJgogICAgc2xlZXAgMgogICAgZWNobyAtZSAiXGVbMTszMm1ib3QgaXMgcnVubmluZ1xlWzBtIgogIGZpCgp9CnJ1bgpzbGVlcCAzCgpnZXRfYXJnb2RvbWFpbigpIHsKICBpZiBbWyAtbiAkQVJHT19BVVRIIF1dOyB0aGVuCiAgICBlY2hvICIkQVJHT19ET01BSU4iCiAgZWxzZQogICAgZ3JlcCAtb0UgJ2h0dHBzOi8vW1s6YWxudW06XStcLi1dK1wudHJ5Y2xvdWRmbGFyZVwuY29tJyBib290LmxvZyB8IHNlZCAnc0BodHRwczovL0BAJwogIGZpCn0KYXJnb2RvbWFpbj0kKGdldF9hcmdvZG9tYWluKQplY2hvIC1lICJcZVsxOzMybUFyZ29Eb21haW46XGVbMTszNW0ke2FyZ29kb21haW59XGVbMG0iCnNsZWVwIDEKIyBnZXQgaXAKSVA9JChjdXJsIC1zIGlwdjQuaXAuc2IpCnNsZWVwIDEKIyBnZXQgaXBpbmZvCklTUD0kKGN1cmwgLXMgaHR0cHM6Ly9zcGVlZC5jbG91ZGZsYXJlLmNvbS9tZXRhIHwgYXdrIC1GXCIgJ3twcmludCAkMjYiLSIkMTh9JyB8IHNlZCAtZSAncy8gL18vZycpIApzbGVlcCAxClZNRVNTPSJ7IFwidlwiOiBcIjJcIiwgXCJwc1wiOiBcIiR7SVNQfVwiLCBcImFkZFwiOiBcIiR7Q0ZJUH1cIiwgXCJwb3J0XCI6IFwiJHtDRlBPUlR9XCIsIFwiaWRcIjogXCIke1VVSUR9XCIsIFwiYWlkXCI6IFwiMFwiLCBcInNjeVwiOiBcIm5vbmVcIiwgXCJuZXRcIjogXCJ3c1wiLCBcInR5cGVcIjogXCJub25lXCIsIFwiaG9zdFwiOiBcIiR7YXJnb2RvbWFpbn1cIiwgXCJwYXRoXCI6IFwiL3ZtZXNzP2VkPTIwNDhcIiwgXCJ0bHNcIjogXCJ0bHNcIiwgXCJzbmlcIjogXCIke2FyZ29kb21haW59XCIsIFwiYWxwblwiOiBcIlwiLCBcImZwXCI6IFwicmFuZG9taXplZFwifSIKCmNhdCA+IGxpc3QudHh0IDw8RU9GCnZtZXNzOi8vJChlY2hvICIkVk1FU1MiIHwgYmFzZTY0IC13MCkKCmh5c3RlcmlhMjovLyR7VVVJRH1AJHtJUH06JHtTRVJWRVJfUE9SVH0vP3NuaT13d3cuYmluZy5jb20mYWxwbj1oMyZpbnNlY3VyZT0xIyR7SVNQfQoKdHVpYzovLyR7VVVJRH06QCR7SVB9OiR7VFVJQ19QT1JUfT9zbmk9d3d3LmJpbmcuY29tJmFscG49aDMmY29uZ2VzdGlvbl9jb250cm9sPWJiciMke0lTUH0KCnZsZXNzOi8vJHtVVUlEfUAke0lQfToke1JFQUxJVFlfUE9SVH0/ZW5jcnlwdGlvbj1ub25lJmZsb3c9eHRscy1ycHJ4LXZpc2lvbiZzZWN1cml0eT1yZWFsaXR5JnNuaT13d3cueWFob28uY29tJmZwPWNocm9tZSZwYms9JHtwdWJsaWNfa2V5fSZ0eXBlPXRjcCZoZWFkZXJUeXBlPW5vbmUjJHtJU1B9CkVPRgpiYXNlNjQgLXcwIGxpc3QudHh0ID4gc3ViLnR4dApjYXQgc3ViLnR4dAplY2hvIC1lICJcblxlWzE7MzJtc3ViLnR4dCBzYXZlZCBzdWNjZXNzZnVsbHlcZVswbSIKZWNobyAtZSAiXG5cZVsxOzMybVJ1bm5pbmcgZG9kZSFcZVswbSIKZWNobyAiIgpzbGVlcCAxMCAKY2xlYXIKcm0gLXJmIHdlYiBib3QgbnBtIGJvb3QubG9nIGNvbmZpZy5qc29uIHNiLmxvZyBsaXN0LnR4dCBjb3JlCg==" | base64 -d | bash +echo "IyBTZWxlY3QgVHVubmVsIG1vZGUKYXJnb19jb25maWd1cmUoKSB7CiAgaWYgW1sgLXogJEFSR09fQVVUSCB8fCAteiAkQVJHT19ET01BSU4gXV07IHRoZW4KICAgIGVjaG8gLWUgIlxlWzE7MzJtQVJHT19ET01BSU4gb3IgQVJHT19BVVRIIHZhcmlhYmxlIGlzIGVtcHR5LCB1c2UgcXVpY2sgdHVubmVsc1xlWzBtIgogICAgcmV0dXJuCiAgZmkKCiAgaWYgW1sgJEFSR09fQVVUSCA9fiBUdW5uZWxTZWNyZXQgXV07IHRoZW4KICAgIGVjaG8gJEFSR09fQVVUSCA+IHR1bm5lbC5qc29uCiAgICBjYXQgPiB0dW5uZWwueW1sIDw8IEVPRgp0dW5uZWw6ICQoY3V0IC1kXCIgLWYxMiA8PDwgIiRBUkdPX0FVVEgiKQpjcmVkZW50aWFscy1maWxlOiB0dW5uZWwuanNvbgpwcm90b2NvbDogaHR0cDIKCmluZ3Jlc3M6CiAgLSBob3N0bmFtZTogJEFSR09fRE9NQUlOCiAgICBzZXJ2aWNlOiBodHRwOi8vbG9jYWxob3N0OiRBUkdPX1BPUlQKICAgIG9yaWdpblJlcXVlc3Q6CiAgICAgIG5vVExTVmVyaWZ5OiB0cnVlCiAgLSBzZXJ2aWNlOiBodHRwX3N0YXR1czo0MDQKRU9GCiAgZWxzZQogICAgZWNobyAtZSAiXGVbMTszMm1BUkdPX0FVVEggbWlzbWF0Y2ggVHVubmVsU2VjcmV0LHVzZSB0b2tlbiBjb25uZWN0IHRvIHR1bm5lbFxlWzBtIgogIGZpCn0KYXJnb19jb25maWd1cmUKd2FpdAoKIyBEb3dubG9hZCBEZXBlbmRlbmN5IEZpbGVzCkFSQ0g9JCh1bmFtZSAtbSkgJiYgRE9XTkxPQURfRElSPSIuIiAmJiBta2RpciAtcCAiJERPV05MT0FEX0RJUiIgJiYgRklMRV9JTkZPPSgpCmlmIFsgIiRBUkNIIiA9PSAiYXJtIiBdIHx8IFsgIiRBUkNIIiA9PSAiYXJtNjQiIF0gfHwgWyAiJEFSQ0giID09ICJhYXJjaDY0IiBdOyB0aGVuCiAgICBGSUxFX0lORk89KCJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9hcm02NC9zYiB3ZWIiICJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9hcm02NC9ib3QxMyBib3QiICJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9BUk0vc3dpdGggbnBtIikKZWxpZiBbICIkQVJDSCIgPT0gImFtZDY0IiBdIHx8IFsgIiRBUkNIIiA9PSAieDg2XzY0IiBdIHx8IFsgIiRBUkNIIiA9PSAieDg2IiBdOyB0aGVuCiAgICBGSUxFX0lORk89KCJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9hbWQ2NC9zYiB3ZWIiICJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9hbWQ2NC9ib3QxMyBib3QiICJodHRwczovL2dpdGh1Yi5jb20vZW9vY2UvdGVzdC9yZWxlYXNlcy9kb3dubG9hZC9idWxpZC9zd2l0aCBucG0iKQplbHNlCiAgICBlY2hvICJVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmU6ICRBUkNIIgogICAgZXhpdCAxCmZpCmZvciBlbnRyeSBpbiAiJHtGSUxFX0lORk9bQF19IjsgZG8KICAgIFVSTD0kKGVjaG8gIiRlbnRyeSIgfCBjdXQgLWQgJyAnIC1mIDEpCiAgICBORVdfRklMRU5BTUU9JChlY2hvICIkZW50cnkiIHwgY3V0IC1kICcgJyAtZiAyKQogICAgRklMRU5BTUU9IiRET1dOTE9BRF9ESVIvJE5FV19GSUxFTkFNRSIKICAgIGlmIFsgLWUgIiRGSUxFTkFNRSIgXTsgdGhlbgogICAgICAgIGVjaG8gLWUgIlxlWzE7MzJtJEZJTEVOQU1FIGFscmVhZHkgZXhpc3RzLFNraXBwaW5nIGRvd25sb2FkXGVbMG0iCiAgICBlbHNlCiAgICAgICAgY3VybCAtTCAtc1MgLW8gIiRGSUxFTkFNRSIgIiRVUkwiCiAgICAgICAgZWNobyAtZSAiXGVbMTszMm1Eb3dubG9hZGluZyAkRklMRU5BTUVcZVswbSIKICAgIGZpCiAgICBjaG1vZCAreCAkRklMRU5BTUUKZG9uZQp3YWl0CgojIEdlbmVyYXRpbmcgQ29uZmlndXJhdGlvbiBGaWxlcwpnZW5lcmF0ZV9jb25maWcoKSB7CgogICAgb3V0cHV0PSQoL2hvbWUvY29udGFpbmVyL3dlYiBnZW5lcmF0ZSByZWFsaXR5LWtleXBhaXIpCiAgICBwcml2YXRlX2tleT0kKGVjaG8gIiR7b3V0cHV0fSIgfCBncmVwIC1vUCAnUHJpdmF0ZUtleTpccypcSy4qJykKICAgIHB1YmxpY19rZXk9JChlY2hvICIke291dHB1dH0iIHwgZ3JlcCAtb1AgJ1B1YmxpY0tleTpccypcSy4qJykKCiAgICBvcGVuc3NsIGVjcGFyYW0gLWdlbmtleSAtbmFtZSBwcmltZTI1NnYxIC1vdXQgInByaXZhdGUua2V5IgogICAgb3BlbnNzbCByZXEgLW5ldyAteDUwOSAtZGF5cyAzNjUwIC1rZXkgInByaXZhdGUua2V5IiAtb3V0ICJjZXJ0LnBlbSIgLXN1YmogIi9DTj1iaW5nLmNvbSIKCiAgY2F0ID4gY29uZmlnLmpzb24gPDwgRU9GCnsKICAibG9nIjogewogICAgIm91dHB1dCI6ICJzYi5sb2ciLAogICAgImxldmVsIjogImluZm8iLAogICAgInRpbWVzdGFtcCI6IHRydWUKICB9LAogICJkbnMiOiB7CiAgICAic2VydmVycyI6IFsKICAgICAgewogICAgICAgICJhZGRyZXNzIjogIjguOC44LjgiLAogICAgICAgICJhZGRyZXNzX3Jlc29sdmVyIjogImxvY2FsIgogICAgICB9LAogICAgICB7CiAgICAgICAgInRhZyI6ICJsb2NhbCIsCiAgICAgICAgImFkZHJlc3MiOiAibG9jYWwiCiAgICAgIH0KICAgIF0KICB9LAogICAgImluYm91bmRzIjogWwogICAgewogICAgICAgInRhZyI6ICJoeXN0ZXJpYS1pbiIsCiAgICAgICAidHlwZSI6ICJoeXN0ZXJpYTIiLAogICAgICAgImxpc3RlbiI6ICI6OiIsCiAgICAgICAibGlzdGVuX3BvcnQiOiAke1NFUlZFUl9QT1JUfSwKICAgICAgICJ1c2VycyI6IFsKICAgICAgICAgewogICAgICAgICAgICAgInBhc3N3b3JkIjogIiR7VVVJRH0iCiAgICAgICAgIH0KICAgICBdLAogICAgICJtYXNxdWVyYWRlIjogImh0dHBzOi8vYmluZy5jb20iLAogICAgICJ0bHMiOiB7CiAgICAgICAgICJlbmFibGVkIjogdHJ1ZSwKICAgICAgICAgImFscG4iOiBbCiAgICAgICAgICAgICAiaDMiCiAgICAgICAgIF0sCiAgICAgICAgICJjZXJ0aWZpY2F0ZV9wYXRoIjogImNlcnQucGVtIiwKICAgICAgICAgImtleV9wYXRoIjogInByaXZhdGUua2V5IgogICAgICAgIH0KICAgIH0sCgogICAgewogICAgICJ0YWciOiAidmxlc3MtaW4iLAogICAgICJ0eXBlIjogInZsZXNzIiwKICAgICAibGlzdGVuIjogIjo6IiwKICAgICAibGlzdGVuX3BvcnQiOiAke1JFQUxJVFlfUE9SVH0sCiAgICAgInVzZXJzIjogWwogICAgICAgICB7CiAgICAgICAgICAgICAidXVpZCI6ICIke1VVSUR9IiwKICAgICAgICAgICAgICJmbG93IjogInh0bHMtcnByeC12aXNpb24iCiAgICAgICAgIH0KICAgICBdLAogICAgICJ0bHMiOiB7CiAgICAgICAgICJlbmFibGVkIjogdHJ1ZSwKICAgICAgICAgInNlcnZlcl9uYW1lIjogInd3dy55YWhvby5jb20iLAogICAgICAgICAicmVhbGl0eSI6IHsKICAgICAgICAgICAgICJlbmFibGVkIjogdHJ1ZSwKICAgICAgICAgICAgICJoYW5kc2hha2UiOiB7CiAgICAgICAgICAgICAgICAgInNlcnZlciI6ICJ3d3cueWFob28uY29tIiwKICAgICAgICAgICAgICAgICAic2VydmVyX3BvcnQiOiA0NDMKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAicHJpdmF0ZV9rZXkiOiAiJHtwcml2YXRlX2tleX0iLAogICAgICAgICAgICAgInNob3J0X2lkIjogWwogICAgICAgICAgICAgICAgICIiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LAoKICAgIHsKICAgICAgInRhZyI6ICJ2bWVzcy13cy1pbiIsCiAgICAgICJ0eXBlIjogInZtZXNzIiwKICAgICAgImxpc3RlbiI6ICI6OiIsCiAgICAgICJsaXN0ZW5fcG9ydCI6ICR7QVJHT19QT1JUfSwKICAgICAgInVzZXJzIjogWwogICAgICB7CiAgICAgICAgInV1aWQiOiAiJHtVVUlEfSIKICAgICAgfQogICAgXSwKICAgICJ0cmFuc3BvcnQiOiB7CiAgICAgICJ0eXBlIjogIndzIiwKICAgICAgInBhdGgiOiAiL3ZtZXNzIiwKICAgICAgImVhcmx5X2RhdGFfaGVhZGVyX25hbWUiOiAiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIKICAgICAgfQogICAgfSwKCiAgICB7CiAgICAgICJ0YWciOiAidHVpYz1pbiIsCiAgICAgICJ0eXBlIjogInR1aWMiLAogICAgICAibGlzdGVuIjogIjo6IiwKICAgICAgImxpc3Rlbl9wb3J0IjogJHtUVUlDX1BPUlR9LAogICAgICAidXNlcnMiOiBbCiAgICAgICAgewogICAgICAgICAgInV1aWQiOiAiJHtVVUlEfSIKICAgICAgICB9CiAgICAgIF0sCiAgICAgICJjb25nZXN0aW9uX2NvbnRyb2wiOiAiYmJyIiwKICAgICAgInRscyI6IHsKICAgICAgICAiZW5hYmxlZCI6IHRydWUsCiAgICAgICAgImFscG4iOiBbCiAgICAgICAgICAiaDMiCiAgICAgICAgXSwKICAgICAgICAiY2VydGlmaWNhdGVfcGF0aCI6ICJjZXJ0LnBlbSIsCiAgICAgICAgImtleV9wYXRoIjogInByaXZhdGUua2V5IgogICAgICB9CiAgICB9CgogXSwKICAib3V0Ym91bmRzIjogWwogICAgewogICAgICAidGFnIjogImRpcmVjdCIsCiAgICAgICJ0eXBlIjogImRpcmVjdCIKICAgIH0sCiAgICB7CiAgICAgICJ0YWciOiAiYmxvY2siLAogICAgICAidHlwZSI6ICJibG9jayIKICAgIH0KICBdCn0KRU9GCn0KZ2VuZXJhdGVfY29uZmlnCndhaXQKCiMgcnVubmluZyBmaWxlcwpydW4oKSB7CiAgaWYgWyAtZSBucG0gXTsgdGhlbgogICAgdGxzUG9ydHM9KCI0NDMiICI4NDQzIiAiMjA5NiIgIjIwODciICIyMDgzIiAiMjA1MyIpCiAgICBpZiBbWyAiJHt0bHNQb3J0c1sqXX0iID1+ICIke05FWkhBX1BPUlR9IiBdXTsgdGhlbgogICAgICBORVpIQV9UTFM9Ii0tdGxzIgogICAgZWxzZQogICAgICBORVpIQV9UTFM9IiIKICAgIGZpCiAgICBpZiBbIC1uICIkTkVaSEFfU0VSVkVSIiBdICYmIFsgLW4gIiRORVpIQV9QT1JUIiBdICYmIFsgLW4gIiRORVpIQV9LRVkiIF07IHRoZW4KICAgICAgICBub2h1cCAuL25wbSAtcyAke05FWkhBX1NFUlZFUn06JHtORVpIQV9QT1JUfSAtcCAke05FWkhBX0tFWX0gJHtORVpIQV9UTFN9ID4vZGV2L251bGwgMj4mMSAmCgkgICAgc2xlZXAgMgogICAgICAgIGVjaG8gLWUgIlxlWzE7MzJtbnBtIGlzIHJ1bm5pbmdcZVswbSIKICAgIGVsc2UKICAgICAgICBlY2hvIC1lICJcZVsxOzM1bU5FWkhBIHZhcmlhYmxlIGlzIGVtcHR5LHNraXBpbmcgcnVuaW5nXGVbMG0iCiAgICBmaQogIGZpCgogIGlmIFsgLWUgd2ViIF07IHRoZW4KICAgIG5vaHVwIC4vd2ViIHJ1biAtYyBjb25maWcuanNvbiA+L2Rldi9udWxsIDI+JjEgJgogICAgc2xlZXAgMgogICAgZWNobyAtZSAiXGVbMTszMm13ZWIgaXMgcnVubmluZ1xlWzBtIgogIGZpCgogIGlmIFsgLWUgYm90IF07IHRoZW4KICAgIGlmIFtbICRBUkdPX0FVVEggPX4gXltBLVowLTlhLXo9XXsxMjAsMjUwfSQgXV07IHRoZW4KICAgICAgYXJncz0idHVubmVsIC0tZWRnZS1pcC12ZXJzaW9uIGF1dG8gLS1uby1hdXRvdXBkYXRlIC0tcHJvdG9jb2wgaHR0cDIgcnVuIC0tdG9rZW4gJHtBUkdPX0FVVEh9IgogICAgZWxpZiBbWyAkQVJHT19BVVRIID1+IFR1bm5lbFNlY3JldCBdXTsgdGhlbgogICAgICBhcmdzPSJ0dW5uZWwgLS1lZGdlLWlwLXZlcnNpb24gYXV0byAtLWNvbmZpZyB0dW5uZWwueW1sIHJ1biIKICAgIGVsc2UKICAgICAgYXJncz0idHVubmVsIC0tZWRnZS1pcC12ZXJzaW9uIGF1dG8gLS1uby1hdXRvdXBkYXRlIC0tcHJvdG9jb2wgaHR0cDIgLS1sb2dmaWxlIGJvb3QubG9nIC0tbG9nbGV2ZWwgaW5mbyAtLXVybCBodHRwOi8vbG9jYWxob3N0OiRBUkdPX1BPUlQiCiAgICBmaQogICAgbm9odXAgLi9ib3QgJGFyZ3MgPi9kZXYvbnVsbCAyPiYxICYKICAgIHNsZWVwIDIKICAgIGVjaG8gLWUgIlxlWzE7MzJtYm90IGlzIHJ1bm5pbmdcZVswbSIKICBmaQoKfQpydW4Kc2xlZXAgMwoKZ2V0X2FyZ29kb21haW4oKSB7CiAgaWYgW1sgLW4gJEFSR09fQVVUSCBdXTsgdGhlbgogICAgZWNobyAiJEFSR09fRE9NQUlOIgogIGVsc2UKICAgIGdyZXAgLW9FICdodHRwczovL1tbOmFsbnVtOl0rXC4tXStcLnRyeWNsb3VkZmxhcmVcLmNvbScgYm9vdC5sb2cgfCBzZWQgJ3NAaHR0cHM6Ly9AQCcKICBmaQp9CmFyZ29kb21haW49JChnZXRfYXJnb2RvbWFpbikKZWNobyAtZSAiXGVbMTszMm1BcmdvRG9tYWluOlxlWzE7MzVtJHthcmdvZG9tYWlufVxlWzBtIgpzbGVlcCAxCiMgZ2V0IGlwCklQPSQoY3VybCAtcyBpcHY0LmlwLnNiKQpzbGVlcCAxCiMgZ2V0IGlwaW5mbwpJU1A9JChjdXJsIC1zIGh0dHBzOi8vc3BlZWQuY2xvdWRmbGFyZS5jb20vbWV0YSB8IGF3ayAtRlwiICd7cHJpbnQgJDI2Ii0iJDE4fScgfCBzZWQgLWUgJ3MvIC9fL2cnKSAKc2xlZXAgMQpWTUVTUz0ieyBcInZcIjogXCIyXCIsIFwicHNcIjogXCIke0lTUH1cIiwgXCJhZGRcIjogXCIke0NGSVB9XCIsIFwicG9ydFwiOiBcIiR7Q0ZQT1JUfVwiLCBcImlkXCI6IFwiJHtVVUlEfVwiLCBcImFpZFwiOiBcIjBcIiwgXCJzY3lcIjogXCJub25lXCIsIFwibmV0XCI6IFwid3NcIiwgXCJ0eXBlXCI6IFwibm9uZVwiLCBcImhvc3RcIjogXCIke2FyZ29kb21haW59XCIsIFwicGF0aFwiOiBcIi92bWVzcz9lZD0yMDQ4XCIsIFwidGxzXCI6IFwidGxzXCIsIFwic25pXCI6IFwiJHthcmdvZG9tYWlufVwiLCBcImFscG5cIjogXCJcIiwgXCJmcFwiOiBcInJhbmRvbWl6ZWRcIn0iCgpjYXQgPiBsaXN0LnR4dCA8PEVPRgp2bWVzczovLyQoZWNobyAiJFZNRVNTIiB8IGJhc2U2NCAtdzApCgpoeXN0ZXJpYTI6Ly8ke1VVSUR9QCR7SVB9OiR7U0VSVkVSX1BPUlR9Lz9zbmk9d3d3LmJpbmcuY29tJmFscG49aDMmaW5zZWN1cmU9MSMke0lTUH0KCnR1aWM6Ly8ke1VVSUR9OkAke0lQfToke1RVSUNfUE9SVH0/c25pPXd3dy5iaW5nLmNvbSZhbHBuPWgzJmNvbmdlc3Rpb25fY29udHJvbD1iYnIjJHtJU1B9Cgp2bGVzczovLyR7VVVJRH1AJHtJUH06JHtSRUFMSVRZX1BPUlR9P2VuY3J5cHRpb249bm9uZSZmbG93PXh0bHMtcnByeC12aXNpb24mc2VjdXJpdHk9cmVhbGl0eSZzbmk9d3d3LnlhaG9vLmNvbSZmcD1jaHJvbWUmcGJrPSR7cHVibGljX2tleX0mdHlwZT10Y3AmaGVhZGVyVHlwZT1ub25lIyR7SVNQfQpFT0YKYmFzZTY0IC13MCBsaXN0LnR4dCA+IHN1Yi50eHQKY2F0IHN1Yi50eHQKZWNobyAtZSAiXG5cZVsxOzMybXN1Yi50eHQgc2F2ZWQgc3VjY2Vzc2Z1bGx5XGVbMG0iCmVjaG8gLWUgIlxuXGVbMTszMm1SdW5uaW5nIGRvZGUhXGVbMG0iCmVjaG8gIiIKc2xlZXAgMTAgCmNsZWFyCnJtIC1yZiB3ZWIgYm90IG5wbSBib290LmxvZyBjb25maWcuanNvbiBzYi5sb2cgbGlzdC50eHQgY29yZQ==" | base64 -d | bash -# tail -f /dev/null \ No newline at end of file +# tail -f /dev/null