#include <iostream>
#include <sstream>
#include <string>
#include <vector>
//#include <fstream>
using namespace std;
struct tagattribute {
string name;
string value;
};
struct tagline {
string tag;
vector<tagattribute> attributes;
};
int main() {
vector<tagline> information;
string line;
//ifstream readFile("file.txt");
istream &readFile = cin;
while (getline(readFile, line)) {
istringstream in(line);
tagline t;
tagattribute attr;
in >> ws;
char ch = in.get();
if (ch != '<')
continue;
if (!(in >> t.tag))
continue;
do
{
in >> ws;
ch = in.peek();
if (ch == '>')
{
in.ignore();
break;
}
if (getline(in, attr.name, '=') &&
in.ignore() &&
getline(in, attr.value, '"'))
{
t.attributes.push_back(attr);
}
else
break;
}
while (true);
information.push_back(t);
}
vector<tagline>::iterator it = information.begin();
for(; it != information.end(); ++it) {
cout << "Tag: " << it->tag << "\n";
vector<tagattribute>::iterator it2 = it->attributes.begin();
for(; it2 != it->attributes.end(); ++it2) {
cout << "name: " << it2->name << "\n"
<< "value: " << it2->value << "\n";
}
cout << "\n";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KLy8jaW5jbHVkZSA8ZnN0cmVhbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgdGFnYXR0cmlidXRlIHsKICAgIHN0cmluZyBuYW1lOwogICAgc3RyaW5nIHZhbHVlOwp9OwoKc3RydWN0IHRhZ2xpbmUgewogICAgc3RyaW5nIHRhZzsKICAgIHZlY3Rvcjx0YWdhdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7Cn07CgppbnQgbWFpbigpIHsKICAgIHZlY3Rvcjx0YWdsaW5lPiBpbmZvcm1hdGlvbjsKICAgIHN0cmluZyBsaW5lOwoKICAgIC8vaWZzdHJlYW0gcmVhZEZpbGUoImZpbGUudHh0Iik7CiAgICBpc3RyZWFtICZyZWFkRmlsZSA9IGNpbjsKICAgIAogICAgd2hpbGUgKGdldGxpbmUocmVhZEZpbGUsIGxpbmUpKSB7CiAgICAgICAgaXN0cmluZ3N0cmVhbSBpbihsaW5lKTsKCiAgICAgICAgdGFnbGluZSB0OwogICAgICAgIHRhZ2F0dHJpYnV0ZSBhdHRyOwoKICAgICAgICBpbiA+PiB3czsKICAgICAgICAKICAgICAgICBjaGFyIGNoID0gaW4uZ2V0KCk7CiAgICAgICAgaWYgKGNoICE9ICc8JykKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgIGlmICghKGluID4+IHQudGFnKSkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgIGRvCiAgICAgICAgewogICAgICAgICAgICBpbiA+PiB3czsKCiAgICAgICAgICAgIGNoID0gaW4ucGVlaygpOwogICAgICAgICAgICBpZiAoY2ggPT0gJz4nKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbi5pZ25vcmUoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZ2V0bGluZShpbiwgYXR0ci5uYW1lLCAnPScpICYmCiAgICAgICAgICAgICAgICBpbi5pZ25vcmUoKSAmJgogICAgICAgICAgICAgICAgZ2V0bGluZShpbiwgYXR0ci52YWx1ZSwgJyInKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdC5hdHRyaWJ1dGVzLnB1c2hfYmFjayhhdHRyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKHRydWUpOwoKICAgICAgICBpbmZvcm1hdGlvbi5wdXNoX2JhY2sodCk7CiAgICB9CgogICAgdmVjdG9yPHRhZ2xpbmU+OjppdGVyYXRvciBpdCA9IGluZm9ybWF0aW9uLmJlZ2luKCk7CiAgICBmb3IoOyBpdCAhPSBpbmZvcm1hdGlvbi5lbmQoKTsgKytpdCkgewogICAgICAgIGNvdXQgPDwgIlRhZzogIiA8PCBpdC0+dGFnIDw8ICJcbiI7CgogICAgICAgIHZlY3Rvcjx0YWdhdHRyaWJ1dGU+OjppdGVyYXRvciBpdDIgPSBpdC0+YXR0cmlidXRlcy5iZWdpbigpOwogICAgICAgIGZvcig7IGl0MiAhPSBpdC0+YXR0cmlidXRlcy5lbmQoKTsgKytpdDIpIHsKICAgICAgICAgICAgY291dCA8PCAibmFtZTogIiA8PCBpdDItPm5hbWUgPDwgIlxuIgogICAgICAgICAgICA8PCAidmFsdWU6ICIgPDwgaXQyLT52YWx1ZSA8PCAiXG4iOwogICAgICAgIH0KCiAgICAgICAgY291dCA8PCAiXG4iOwogICAgfQoKICAgIHJldHVybiAwOwp9