IyBCb29zdC5GbHl3ZWlnaHQgdGVzdHMgSmFtZmlsZQojCiMgQ29weXJpZ2h0IDIwMDYtMjAwOCBKb2Fxde1uIE0gTPNwZXogTXXxb3ouCiMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgojIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKIyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCiMKIyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9mbHl3ZWlnaHQgZm9yIGxpYnJhcnkgaG9tZSBwYWdlLgoKcHJvamVjdAogICAgOiByZXF1aXJlbWVudHMKICAgICAgPG9zPkxJTlVYOjx0aHJlYWRpbmc+bXVsdGkKICAgIDsKCnRlc3Qtc3VpdGUgImZseXdlaWdodCIgOgogICAgWyBydW4gdGVzdF9hc3NvY19jb250X2ZhY3RvcnkuY3BwIHRlc3RfYXNzb2NfY29udF9mYWN0X21haW4uY3BwIF0KICAgIFsgcnVuIHRlc3RfYmFzaWMuY3BwICAgICAgICAgICAgICB0ZXN0X2Jhc2ljX21haW4uY3BwICAgICAgICAgICBdCiAgICBbIHJ1biB0ZXN0X2N1c3RvbV9mYWN0b3J5LmNwcCAgICAgdGVzdF9jdXN0b21fZmFjdG9yeV9tYWluLmNwcCAgXQogICAgWyBydW4gdGVzdF9pbml0LmNwcCAgICAgICAgICAgICAgIHRlc3RfaW5pdF9tYWluLmNwcCAgICAgICAgICAgIF0KICAgIFsgcnVuIHRlc3RfaW50ZXJtb2RfaG9sZGVyLmNwcCAgICB0ZXN0X2ludGVybW9kX2hvbGRlcl9tYWluLmNwcAogICAgICAgICAgaW50ZXJtb2RfaG9sZGVyX2RsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIDogIyBjb21tYW5kIGxpbmUKICAgICAgICA6ICMgaW5wdXQgZmlsZXMKICAgICAgICA6ICMgcmVxdWlyZW1lbnRzCiAgICAgICAgICA8dGhyZWFkaW5nPm11bHRpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgWyBydW4gdGVzdF9tdWx0aWN0b3IuY3BwICAgICAgICAgIHRlc3RfbXVsdGljdG9yX21haW4uY3BwICAgICAgIF0KICAgIFsgcnVuIHRlc3Rfbm9fbG9ja2luZy5jcHAgICAgICAgICB0ZXN0X25vX2xvY2tpbmdfbWFpbi5jcHAgICAgICBdCiAgICBbIHJ1biB0ZXN0X25vX3RyYWNraW5nLmNwcCAgICAgICAgdGVzdF9ub190cmFja2luZ19tYWluLmNwcCAgICAgXQogICAgWyBydW4gdGVzdF9zZXRfZmFjdG9yeS5jcHAgICAgICAgIHRlc3Rfc2V0X2ZhY3RvcnlfbWFpbi5jcHAgICAgIF0KICAgIDsKCmxpYiBpbnRlcm1vZF9ob2xkZXJfZGxsIDogaW50ZXJtb2RfaG9sZGVyX2RsbC5jcHAgOiAKICAgIDxsaW5rPnNoYXJlZAogICAgPGRlZmluZT5CT09TVF9GTFlXRUlHSFRfVEVTVF9JTlRFUk1PRF9IT0xERVJfRExMX1NPVVJDRT0xIDsK