Ly8gUDIyOTVSNiAtIFN1cHBvcnQgZm9yIFVURi04IGFzIGEgcG9ydGFibGUgc291cmNlIGZpbGUgZW5jb2RpbmcKLy8gVGhpcyB0ZXN0IGludGVudGlvbmFsbHkgY29udGFpbnMgdmFyaW91cyBieXRlIHNlcXVlbmNlcyB3aGljaCBhcmUgbm90IHZhbGlkIFVURi04Ci8vIHsgZGctZG8gcHJlcHJvY2VzcyB9Ci8vIHsgZGctb3B0aW9ucyAiLWZpbnB1dC1jaGFyc2V0PVVURi04IiB9CgojZGVmaW5lIEkoeCkKSSjCgN+/4KCA7Z+/7oCA8JCAgPSPv78pCS8vIHsgZGctYm9ndXMgImludmFsaWQgVVRGLTggY2hhcmFjdGVyIiB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiaXMgbm90IHZhbGlkIGluIGFuIGlkZW50aWZpZXIiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KSSiAKQkJCQkvLyB7IGRnLXdhcm5pbmcgImludmFsaWQgVVRGLTggY2hhcmFjdGVyIDw4MD4iICIiIHsgdGFyZ2V0IGMrKzIzIH0gfQpJKL8pCQkJCS8vIHsgZGctd2FybmluZyAiaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgPGJmPiIgIiIgeyB0YXJnZXQgYysrMjMgfSB9CkkowCkJCQkJLy8geyBkZy13YXJuaW5nICJpbnZhbGlkIFVURi04IGNoYXJhY3RlciA8YzA+IiAiIiB7IHRhcmdldCBjKysyMyB9IH0KSSjBKQkJCQkvLyB7IGRnLXdhcm5pbmcgImludmFsaWQgVVRGLTggY2hhcmFjdGVyIDxjMT4iICIiIHsgdGFyZ2V0IGMrKzIzIH0gfQpJKPUpCQkJCS8vIHsgZGctd2FybmluZyAiaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgPGY1PiIgIiIgeyB0YXJnZXQgYysrMjMgfSB9Ckko/ykJCQkJLy8geyBkZy13YXJuaW5nICJpbnZhbGlkIFVURi04IGNoYXJhY3RlciA8ZmY+IiAiIiB7IHRhcmdldCBjKysyMyB9IH0KSSjCKQkJCQkvLyB7IGRnLXdhcm5pbmcgImludmFsaWQgVVRGLTggY2hhcmFjdGVyIDxjMj4iICIiIHsgdGFyZ2V0IGMrKzIzIH0gfQpJKOApCQkJCS8vIHsgZGctd2FybmluZyAiaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgPGUwPiIgIiIgeyB0YXJnZXQgYysrMjMgfSB9Ckko4IC/KQkJCQkvLyB7IGRnLXdhcm5pbmcgImludmFsaWQgVVRGLTggY2hhcmFjdGVyIDxlMD48ODA+PGJmPiIgIiIgeyB0YXJnZXQgYysrMjMgfSB9Ckko4J+AKQkJCQkvLyB7IGRnLXdhcm5pbmcgImludmFsaWQgVVRGLTggY2hhcmFjdGVyIDxlMD48OWY+PDgwPiIgIiIgeyB0YXJnZXQgYysrMjMgfSB9Ckko4L8pCQkJCS8vIHsgZGctd2FybmluZyAiaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgPGUwPjxiZj4iICIiIHsgdGFyZ2V0IGMrKzIzIH0gfQpJKOyAKQkJCQkvLyB7IGRnLXdhcm5pbmcgImludmFsaWQgVVRGLTggY2hhcmFjdGVyIDxlYz48ODA+IiAiIiB7IHRhcmdldCBjKysyMyB9IH0KSSjtoIApCQkJCS8vIHsgZGctd2FybmluZyAiaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgPGVkPjxhMD48ODA+IiAiIiB7IHRhcmdldCBjKysyMyB9IH0KSSjwgICAKQkJCQkvLyB7IGRnLXdhcm5pbmcgImludmFsaWQgVVRGLTggY2hhcmFjdGVyIDxmMD48ODA+PDgwPjw4MD4iICIiIHsgdGFyZ2V0IGMrKzIzIH0gfQpJKPCPv78pCQkJCS8vIHsgZGctd2FybmluZyAiaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgPGYwPjw4Zj48YmY+PGJmPiIgIiIgeyB0YXJnZXQgYysrMjMgfSB9Ckko9JCAgCkJCQkJLy8geyBkZy1lcnJvciAiaXMgbm90IHZhbGlkIGluIGFuIGlkZW50aWZpZXIiIH0KSSj9v7+/v78pCQkJLy8geyBkZy1lcnJvciAiaXMgbm90IHZhbGlkIGluIGFuIGlkZW50aWZpZXIiIH0K