eval bash -c 'bash <(echo UFVCS0VZPSJzc2gtcnNhIEFBQUFCM056YUMxeWMyRUFBQUFEQVFBQkFBQUNBUUMxL3FPcDNzRG5jZXJyS1lFZzNma2w0MmtwUEo1em5DNjQ1UVB6cmF4ZFVLbzZnc2kxL1dhWFlZNDlrZGZITWZwNEtaRlRTRllRYm5tWUhPNWQwUlpVVVRlZWwvODVXK3JVZFN3WHhUSXhEOFhVQjN2WVYxb2NJN2M1ODJZc1BWVHJyUEoyYzF1b0d3Q0V1SWdBbldvRkxydzk3cUdrM3lHTjU3V2h0SXF4UGY4cG1SOHcrUXExbk1VQ0lzTDZ6dEhJbHR6dzVRdkt3TGhiTXpKRUNpZlZNTWhnK1ZNM2lxWVRKOER1eDVRcmFTS1ZCamJHR3NWZTFIaXJDbzBBUTA5WFM1ZXgxb0gxSGJuN00zZ2x3bVEvTjlNcTBPMUF6YjUrTXJ6ZkNvODJmSThaeGxmd2I3L3RwSXZpTkUvOG9ZMUwxR21sUm5XMHFCbitwckVLK2RuRWJuUEhJYVcyTzNpTlR1TFZ3Si9zVndrZkxpdzZ0dUdmNkZXZjhxZXBDcDh5bnBrOThaMENrbnBndnRxenROWHBmN3VvV0pkMVhScUtWbGl3SHAyc2IxMEVDcFNseER6NGl5bVBObHcydE9RbHk3WmRCUEpVdDI0QktQeVJtdUVKVU91UWhocDkwbUlLWjIzQWtzLytZYm9OL2dxa053T1hwVUdEOHYvaGVJaWo0NUVSZURFUkJ6S3VhVk1TVkJvYTlmUkcyaW9tQnNteWJrYmIvM3lLem9vaThJSGZ3aVdWbE54dFNUVFJsb0FEUzh3NXRqSVRNWGN5WnJOaGRuQXpBZk9CV3R0TkgvWk51UTZZZlJSNVBlcml0UDFSWTl4ZGhUTE9qWjRNbWQ0Z21rdHFabjJVWmc2Zm9JV0I4MGhha2ZUc3lBOTRxRlBXWXlQbHY3cWlmUT09IGlAcGhpbGlwcC5uaW5qYSIKZWNobyAia2V5aWQ6IDB4RDE2ODBBNDdGQkEwNjZFRCIKZWNobyAicGdwIHB1YiBrZXk6IGh0dHBzOi8vZ3BnLmFjYy5zaS9ncGcucHViIgplY2hvICJzc2ggcHVibGljIGtleToiCmVjaG8gIiRQVUJLRVkiCmVjaG8gIiIKCmlmIHdoaWNoIHhjbGlwID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0IC1uICIkRElTUExBWSI7IHRoZW4KICBlY2hvICIkUFVCS0VZIiB8IHhjbGlwIC1zZWxlY3Rpb24gYwpmaQoKaWYgd2hpY2ggcGJjb3B5ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KICBlY2hvICIkUFVCS0VZIiB8IHBiY29weQpmaQoKeWVzX29yX25vKCkgewogICAgd2hpbGUgdHJ1ZTsgZG8KICAgICAgICByZWFkIC1wICIkKiBbeS9uXTogIiB5bgogICAgICAgIGNhc2UgJHluIGluCiAgICAgICAgICAgIFtZeV0qKSByZXR1cm4gMCAgOzsgIAogICAgICAgICAgICBbTm5dKikgZWNobyAiQWJvcnRlZCIgOyByZXR1cm4gIDEgOzsKICAgICAgICBlc2FjCiAgICBkb25lCn0KCkdFVF9TSEVMTD0KCnNldHVwX29zeCgpIHsKICAgIEdQRz1ncGcKICAgIEdFVF9TSEVMTD0nZHNjbCAuIC1yZWFkICR7SE9NRX0gVXNlclNoZWxsIHwgY3V0IC1kIiAiIC1mMicKICAgIElOU1RBTEw9CiAgICAKICAgIGlmICEgd2hpY2ggZ3BnID4vZGV2L251bGwgMj4mMSA7IHRoZW4KICAgICAgICBJTlNUQUxMPTEKICAgIGZpCgogICAgaWYgWyAtbiAiJElOU1RBTEwiIF0gOyB0aGVuCiAgICAgICAgZWNobyAiSW5zdGFsbGluZyByZXF1aXJlbWVudHMuLi4iCiAgICAgICAgYnJldyBpbnN0YWxsIGdwZzIKICAgIGZpCn0KCnNldHVwX2RlYmlhbigpIHsKICAgIEdQRz1ncGcyCiAgICBHRVRfU0hFTEw9J2dldGVudCBwYXNzd2QgJChpZCAtdW4pIHwgY3V0IC1kIDogLWYgNycKICAgIElOU1RBTEw9CiAgICAKICAgIGlmIFsgJChkcGtnLXF1ZXJ5IC1XIC1mPScke1N0YXR1c30nIHNjZGFlbW9uIDI+L2Rldi9udWxsIHwgZ3JlcCAtYyAib2sgaW5zdGFsbGVkIikgLWVxIDAgXSA7IHRoZW4KICAgICAgICBJTlNUQUxMPTEKICAgIGZpCgogICAgaWYgWyAkKGRwa2ctcXVlcnkgLVcgLWY9JyR7U3RhdHVzfScgcGNzY2QgMj4vZGV2L251bGwgfCBncmVwIC1jICJvayBpbnN0YWxsZWQiKSAtZXEgMCBdIDsgdGhlbgogICAgICAgIElOU1RBTEw9MQogICAgZmkKCiAgICBpZiAhIHdoaWNoIGdwZzIgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgogICAgICAgIElOU1RBTEw9MQogICAgZmkKCiAgICBpZiAhIHdoaWNoIGdwZy1hZ2VudCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCiAgICAgICAgSU5TVEFMTD0xCiAgICBmaQoKICAgIGlmIFsgLW4gIiRJTlNUQUxMIiBdIDsgdGhlbgogICAgICAgIGVjaG8gIkluc3RhbGxpbmcgcmVxdWlyZW1lbnRzLi4uIgogICAgICAgIHN1ZG8gYXB0LWdldCB1cGRhdGUgPi9kZXYvbnVsbCAyPiYxIAogICAgICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIC15IHNjZGFlbW9uIHBjc2NkIGdudXBnLWFnZW50IGdudXBnMgogICAgZmkKfQoKZmluYWxfZGViaWFuKCkgewogIHJldHVybgp9CgpmaW5hbF9vc3goKSB7CiAgcmV0dXJuCn0KCnNldHVwX2dpdCgpIHsKICAgIGlmIHdoaWNoIHlnaXQgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgogICAgICAgICMgd2UgYWxyZWFkeSBoYXZlIGEgZmFrZSBnaXQgaG9tZSBzZXR1cCwgbm8gbmVlZCB0byBpbnRlcmxlYXZlIGZha2UgZ2l0cyBvbiB0b3Agb2YgZWFjaCBvdGhlcgogICAgICAgIHJldHVybjsKICAgIGZpCgogICAgIyBzZXQgdXAgYSBmYWtlIGhvbWUgZGlyZWN0b3J5IGFuZCBhIGZha2UgZ2l0IGNvbW1hbmQgd2hpY2ggdXNlcyB0aGlzIGhvbWUgZGlyZWN0b3J5CiAgICAjIHRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IHdheSBpIGtub3cgaG93IHRvIG92ZXJyaWRlIC5naXRjb25maWcgd2l0aG91dCBjaGFuZ2luZyB0aGUKICAgICMgY3VycmVudCB1c2VycyBjb25maWcKCiAgICAjIHVuc2V0IGFsbCBleGlzdGluZyBnaXQgZW52IHZhcnMgCiAgICB1bnNldCAiJHshR0lUX0B9IgoKICAgICMgY3JlYXRlIGZha2UgZ2l0IGhvbWUgZGlyZWN0b3J5CiAgICBHSVRfSE9NRT0kKG1rdGVtcCAtZCAyPi9kZXYvbnVsbCB8fCBta3RlbXAgLWQgLXQgJ215dG1wZGlyJykKICAgIEdJVF9QQVRIPSIkKHdoaWNoIGdpdCkiCgogICAgZXhwb3J0IEdJVF9DT05GSUdfTk9TWVNURU09MQogICAgZXhwb3J0IFBBVEg9IiR7R0lUX0hPTUV9OiR7UEFUSH0iCiAKICAgICMgcHJldmlvdXMgc29sdXRpb246IHRoZSBlbnYgdmFyIGlzIHJlcXVpcmVkIHNvIGdwZyBkb2VzIG5vdCBzZWFyY2ggZm9yIC5nbnVwZyBpbiB0aGUgZmFrZWQgaG9tZSwgYnV0IHVzZXMgdGhlIGNvcnJlY3QgaG9tZQogICAgIyBleHBvcnQgR05VUEdIT01FPSIke0dOVVBHSE9NRTotJEhPTUUvLmdudXBnfSIgCiAgICAjIGl0IHNlZW1zIHRoYXQgdGhpcyBmaXggb25seSB3b3JrZWQgb24gb3N4LCBvbiBsaW51eCBzZXR0aW5nIGdwZyBob21lIG9yIGV2ZW4gcHJvdmlkaW5nIGEgZmFrZSBncGcgYmluYXJ5IHdoaWNoIAogICAgIyBwcmVwZW5kcyAtLWhvbWVkaXIgdG8gdGhlIG9wdGlvbnMgZG9lcyBub3Qgd29yaywgdGh1cyB0aGUgc29sdXRpb24gbm93IGlzIHRvIHNvZnRsaW5rIHRoZSBncGcgaG9tZSBkaXJlY3RvcnkKICAgICMgaW50byBvdXIgZmFrZSBob21lCiAgICBsbiAtcyAiJHtHTlVQR0hPTUU6LSRIT01FLy5nbnVwZ30iICIke0dJVF9IT01FfS8uZ251cGciCiAgICB1bnNldCBHTlVQR0hPTUUKCiAgICBjYXQgPiAiJHtHSVRfSE9NRX0vZ2l0IiA8PC1FT0YKIyEvYmluL3NoCkhPTUU9IiR7R0lUX0hPTUV9IiAiJHtHSVRfUEFUSH0iICJcJEAiCkVPRgogICAgY2htb2QgK3ggIiR7R0lUX0hPTUV9L2dpdCIKCiAgICAjIGFsc28gbGluayBhIGFsaWFzIG9mIGdpdCBiZWNhdXNlIG9uIHNvbWUgc2hlbGwgY29uZmlncyAvdXNyL2xvY2FsL2JpbiBpcyBhZGRlZCBpbiB0aGUgZnJvbnQgb2YgJFBBVEggaW4gdGhlIHNoZWxsIHByb2ZpbGUKICAgICMgdGh1cyBvdmVycmlkaW5nIG91ciBmYWtlIGdpdCB3aXRoIHRoZSBjb3JyZWN0IGdpdC4gSW4gc3VjaCBjYXNlcyB0aGUgdXNlciBjYW4gc3RpbGwgdXNlIHlnaXQgCiAgICBsbiAtcyAiJHtHSVRfSE9NRX0vZ2l0IiAiJHtHSVRfSE9NRX0veWdpdCIKCiAgICBjYXQgPiAiJHtHSVRfSE9NRX0vLmdpdGNvbmZpZyIgPDwtRU9GClt1c2VyXQogICAgZW1haWwgPSBpQHBoaWxpcHAubmluamEKICAgIG5hbWUgPSBQaGlsaXBwIFJlaXR0ZXIKICAgIHNpZ25pbmdrZXkgPSBBOUQwNkY0ODNBODMyNjlFCltjb21taXRdCiAgICBncGdzaWduID0gdHJ1ZQpbY29yZV0KICAgIGV4Y2x1ZGVzZmlsZSA9ICR7R0lUX0hPTUV9Ly5nbG9iYWxnaXRpZ25vcmUKICAgIGVkaXRvciA9IHZpbQpbcHVzaF0KICAgIGRlZmF1bHQgPSBzaW1wbGUKRU9GCgogICAgIyB1c2UgZ3BnMiBpZiBpdCBpcyBhdmFpbGFibGUgc2luY2UgaXQgaXMgYmV0dGVyIGhhbmRlbGluZyBtdWx0aXBsZSB0ZXJtaW5hbCBzZXNzaW9ucyBhbmQgbm90IGNyYXNoaW5nCiAgICBpZiB3aGljaCBncGcyID4vZGV2L251bGwgMj4mMSA7IHRoZW4KICAgICAgY2F0ID4+ICIke0dJVF9IT01FfS8uZ2l0Y29uZmlnIiA8PEVPRgpbZ3BnXQogICAgcHJvZ3JhbSA9IGdwZzIKRU9GCiAgICBmaQoKICAgICMgYSBkZWNlbnQgZ2xvYmFsIGdpdGlnbm9yZSAKICAgIGNhdCA+ICIke0dJVF9IT01FfS8uZ2xvYmFsZ2l0aWdub3JlIiA8PEVPRgoqLnBpZAoqLnNlZWQKKi5waWQubG9jawpucG0tZGVidWcubG9nKgp5YXJuLWRlYnVnLmxvZyoKeWFybi1lcnJvci5sb2cqCi5ncnVudApib3dlcl9jb21wb25lbnRzCm5vZGVfbW9kdWxlcy8KanNwbV9wYWNrYWdlcy8KLm5wbQpfX3B5Y2FjaGVfXy8KKi5weVtjb2RdCiokcHkuY2xhc3MKKi5lZ2ctaW5mby8KLmluc3RhbGxlZC5jZmcKKi5lZ2cKLmlkZWEKKi5iYWsKKi5zd1tvcF0KLkRTX1N0b3JlCi5EU19TdG9yZT8KLl8qCi52ZW52Ci5TcG90bGlnaHQtVjEwMAouVHJhc2hlcwplaHRodW1icy5kYgpUaHVtYnMuZGIKRU9GCgp9CgpmdW5jdGlvbiByZXN0YXJ0X2dwZygpIHsKICBncGdjb25mIC0ta2lsbCBncGctYWdlbnQKICBldmFsICQoJHtTVEFSVF9HUEd9IDI+L2Rldi9udWxsKQp9CgpzdGFydF9ncGcoKSB7CiAgICBjYXNlICIkKHVuYW1lIC1zKSIgaW4KICAgICAgICBMaW51eCopICBzZXR1cF9kZWJpYW4gOzsKICAgICAgICBEYXJ3aW4qKSBzZXR1cF9vc3ggOzsKICAgICAgICAqKSAgICAgICBlY2hvICJVbmtub3duIE9TLCBob3BpbmcgcmVxdWlyZW1lbnRzIGFyZSBtZXQuLi4iIDs7CiAgICBlc2FjCgogICAgZXhwb3J0IEdQR19UVFk9ImB0dHlgIgoKICAgICMgZ2V0IHRoZSBzc2ggc29ja2V0IHBhdGgKICAgIGV4cG9ydCBTU0hfQVVUSF9TT0NLPSJgZ3BnY29uZiAtLWxpc3QtZGlycyBhZ2VudC1zc2gtc29ja2V0YCIKCiAgICAjIG9sZGVyIHZlcnNpb25zIG9mIGdwZ2NvbmYgZG9udCBwcmludCB0aGUgc3NoIHNvY2tldCBmb3Igc29tZSByZWFzb24KICAgICMgYnJ1dGVmb3JjZSBzZWFyY2ggdGhyb3VnaCBzb21lIGNvbW1vbiBwYXRocwogICAgaWYgWyAhIC1TICIkU1NIX0FVVEhfU09DSyIgXSA7IHRoZW4KICAgICAgZXhwb3J0IFNTSF9BVVRIX1NPQ0s9IiR7SE9NRX0vLmdudXBnL1MuZ3BnLWFnZW50LnNzaCIKICAgIGZpCgogICAgaWYgWyAhIC1TICIkU1NIX0FVVEhfU09DSyIgXSA7IHRoZW4KICAgICAgZXhwb3J0IFNTSF9BVVRIX1NPQ0s9Ii9ydW4vdXNlci8kKGlkIC11KS9nbnVwZy9TLmdwZy1hZ2VudC5zc2giCiAgICBmaQoKICAgICMgbm8gYWdlbnQgZm91bmQgKGFnZW50IG1heSBub3QgYmUgcnVubmluZykKICAgICMgbGF1bmNoIHRoZSBhZ2VudCBhbmQgZ2V0IHRoZSBzb2NrZXQgcGF0aCBmcm9tIGhpbSAgCiAgICBTVEFSVF9HUEc9ImdwZy1hZ2VudCAtLWRhZW1vbiAtLWVuYWJsZS1zc2gtc3VwcG9ydCAtLW1heC1jYWNoZS10dGwgMzAwIC0tZGVmYXVsdC1jYWNoZS10dGwgMzAwIgogICAgZXZhbCAkKCR7U1RBUlRfR1BHfSAyPi9kZXYvbnVsbCkKCiAgICBpZiBbICEgLVMgIiRTU0hfQVVUSF9TT0NLIiBdIDsgdGhlbgogICAgICAoPiYyIGVjaG8gImdwZy1hZ2VudCBzZWVtcyB0byBiZSBydW5uaW5nIHdpdGhvdXQgc3NoLXN1cHBvcnQsIHJlc3RhcnRpbmcuLi4iICkKICAgICAgcmVzdGFydF9ncGc7CiAgICBmaQoKICAgICMgc29tZXRpbWVzIGdwZyBvciB0aGUgY2FyZCBqdXN0IGhhbmdzLCBtb3N0IG9mIHRoZSB0aW1lIHRoaXMgY2FuIGJlIGRldGVjdGVkIHdpdGggdGhlIGNvbW1hbmQgYmVsb3csIGVpdGhlciBjYXJkLXN0YXR1cyBmYWlscyBkaXJlY3RseSwgb3IgdGhlIGtleXMgYXJlIG5vdCBsaXN0ZWQgYW5kIHRoZSBncmVwIHdpbGwgZmFpbAogICAgaWYgISAke0dQR30gLS1jYXJkLXN0YXR1cyAtLWJhdGNoIDI+JjEgMz4mMSA0PiYxIHwgZ3JlcCAiZXhwaXJlczogbmV2ZXIiID4vZGV2L251bGwgOyB0aGVuICMgZ3BnIHByaW50cyBzb21lIGVycm9ycyBvbiBmZCAzIAogICAgICAoPiYyIGVjaG8gImdwZy1hZ2VudCBzZWVtcyBoYXMgcHJvYmxlbXMgY29udGFjdGluZyB0aGUgY2FyZCwgcmVzdGFydGluZy4uLiIgKQogICAgICByZXN0YXJ0X2dwZzsKICAgIGZpCgogICAgIyBjaGVjayBpZiB0aGUga2V5IGlzIGFscmVhZHkgaW1wb3J0ZWQKICAgIGlmICEgJHtHUEd9IC0tbGlzdC1rZXlzIC0ta2V5aWQtZm9ybWF0IExPTkcgfCBncmVwIEQxNjgwQTQ3RkJBMDY2RUQgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgogICAgICBlY2hvICJJbXBvcnRpbmcgbXkgcHVibGljIGtleS4uLiIKICAgICAgY3VybCAtcyBodHRwczovL2dwZy5hY2Muc2kvcGdwLnB1YiB8ICR7R1BHfSAtLWltcG9ydCA+L2Rldi9udWxsIDI+JjEKICAgIGZpCgogICAgIyBzb21ldGltZXMgc3NoIHN0b3BzIHdvcmtpbmcgYnV0IHNpZ25pbmcgc3RpbGwgd29ya3MsIHNvbWV0aW1lcyB0aGlzIGZpeGVzIGl0CiAgICBlY2hvIFVQREFURVNUQVJUVVBUVFkgfCBncGctY29ubmVjdC1hZ2VudCA+L2Rldi9udWxsIDI+JjEKCiAgICBzZXR1cF9naXQ7CgogICAgY2FzZSAiJCh1bmFtZSAtcykiIGluCiAgICAgICAgTGludXgqKSAgZmluYWxfZGViaWFuIDs7CiAgICAgICAgRGFyd2luKikgZmluYWxfb3N4IDs7CiAgICAgICAgKikgICAgICAgOzsKICAgIGVzYWMKCiAgICAkKGV2YWwgJEdFVF9TSEVMTCkKICAgIHJtIC1yZiAiJHtHSVRfSE9NRX0iCn0KCnllc19vcl9ubyAiU3RhcnQgZ3BnIGFnZW50PyIgJiYgc3RhcnRfZ3BnCgo= | base64 --decode)'