#include <iostream>
#include <fstream>
#include <string>
#include <locale>
#include <map>
std::string trim(std::string str) {
while (!str.empty() && std::isspace(str[str.size()-1])) {
str.resize(str.size()-1);
}
while (!str.empty() && std::isspace(str[0])) {
str.erase(str.begin());
}
return str;
}
int main() {
typedef std::map<std::string, std::string> keyvalue_t;
typedef std::map<std::string, keyvalue_t> data_t;
data_t data;
//std::ifstream input("file.ini");
std::istream& input = std::cin; // use above line for real code
std::string line, section;
while (std::getline(input, line)) {
line = trim(line);
if (line.empty()) {
continue;
}
if (line[0] == '[') {
section = line.substr(1, line.size()-2);
continue;
}
size_t eqpos = line.find('=');
if (eqpos == std::string::npos) {
data[section][line];
continue;
}
std::string key = trim(line.substr(0, eqpos)), value = trim(line.substr(eqpos+1));
data[section][key] = value;
}
for (data_t::const_iterator section = data.begin() ; section != data.end() ; ++section) {
std::cout << '[' << section->first << "]\n";
for (keyvalue_t::const_iterator key = section->second.begin() ; key != section->second.end() ; ++key) {
std::cout << key->first << '=' << key->second << '\n';
}
std::cout << '\n';
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGxvY2FsZT4KI2luY2x1ZGUgPG1hcD4KCnN0ZDo6c3RyaW5nIHRyaW0oc3RkOjpzdHJpbmcgc3RyKSB7CiAgICB3aGlsZSAoIXN0ci5lbXB0eSgpICYmIHN0ZDo6aXNzcGFjZShzdHJbc3RyLnNpemUoKS0xXSkpIHsKICAgICAgICBzdHIucmVzaXplKHN0ci5zaXplKCktMSk7CiAgICB9CiAgICB3aGlsZSAoIXN0ci5lbXB0eSgpICYmIHN0ZDo6aXNzcGFjZShzdHJbMF0pKSB7CiAgICAgICAgc3RyLmVyYXNlKHN0ci5iZWdpbigpKTsKICAgIH0KICAgIHJldHVybiBzdHI7Cn0KCmludCBtYWluKCkgewogICAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IGtleXZhbHVlX3Q7CiAgICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBrZXl2YWx1ZV90PiBkYXRhX3Q7CiAgICBkYXRhX3QgZGF0YTsKCiAgICAvL3N0ZDo6aWZzdHJlYW0gaW5wdXQoImZpbGUuaW5pIik7CiAgICBzdGQ6OmlzdHJlYW0mIGlucHV0ID0gc3RkOjpjaW47IC8vIHVzZSBhYm92ZSBsaW5lIGZvciByZWFsIGNvZGUKICAgIAogICAgc3RkOjpzdHJpbmcgbGluZSwgc2VjdGlvbjsKICAgIHdoaWxlIChzdGQ6OmdldGxpbmUoaW5wdXQsIGxpbmUpKSB7CiAgICAgICAgbGluZSA9IHRyaW0obGluZSk7CiAgICAgICAgaWYgKGxpbmUuZW1wdHkoKSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGxpbmVbMF0gPT0gJ1snKSB7CiAgICAgICAgICAgIHNlY3Rpb24gPSBsaW5lLnN1YnN0cigxLCBsaW5lLnNpemUoKS0yKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHNpemVfdCBlcXBvcyA9IGxpbmUuZmluZCgnPScpOwogICAgICAgIGlmIChlcXBvcyA9PSBzdGQ6OnN0cmluZzo6bnBvcykgewogICAgICAgICAgICBkYXRhW3NlY3Rpb25dW2xpbmVdOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgc3RkOjpzdHJpbmcga2V5ID0gdHJpbShsaW5lLnN1YnN0cigwLCBlcXBvcykpLCB2YWx1ZSA9IHRyaW0obGluZS5zdWJzdHIoZXFwb3MrMSkpOwogICAgICAgIGRhdGFbc2VjdGlvbl1ba2V5XSA9IHZhbHVlOwogICAgfQogICAgCiAgICBmb3IgKGRhdGFfdDo6Y29uc3RfaXRlcmF0b3Igc2VjdGlvbiA9IGRhdGEuYmVnaW4oKSA7IHNlY3Rpb24gIT0gZGF0YS5lbmQoKSA7ICsrc2VjdGlvbikgewogICAgICAgIHN0ZDo6Y291dCA8PCAnWycgPDwgc2VjdGlvbi0+Zmlyc3QgPDwgIl1cbiI7CiAgICAgICAgZm9yIChrZXl2YWx1ZV90Ojpjb25zdF9pdGVyYXRvciBrZXkgPSBzZWN0aW9uLT5zZWNvbmQuYmVnaW4oKSA7IGtleSAhPSBzZWN0aW9uLT5zZWNvbmQuZW5kKCkgOyArK2tleSkgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwga2V5LT5maXJzdCA8PCAnPScgPDwga2V5LT5zZWNvbmQgPDwgJ1xuJzsKICAgICAgICB9CiAgICAgICAgc3RkOjpjb3V0IDw8ICdcbic7CiAgICB9Cn0K
W1NldHRpbmdzXQpUcmVlcG9zICA9ICAzNjExLjU1Nzg2MSAyNDczLjgyNDIxOSA4Ljk4NjI3NwpUcmVlU2VlZCA9NjU0CiAKW0FuaW1hdGlvbnNdCklkbGU9IGlkbGUKUnVubmluZz1ydW4KU3ByaW50aW5nPXJ1bgpGYWxsaW5nPWZhbGwKSnVtcGluZz1mYWxsClN3aW1taW5nPWZhbGwKRmxvYXRpbmc9aWRsZQpGbHlpbmc9aWRsZQogCiBbQXZhdGFyXQpDYW1lcmFEaXN0YW5jZT0xMS4wMApBbmdsZT03Ni4wMDAwMDAgMC4wMDAwMDAgNzMuMTk5ODkwCiBQb3NpdGlvbj03ODA2LjQxNzk2OSA0MDUzLjM4MDYxNSAtMC4yMTc1MDYKRmx5aW5nPTAKTW91c2VTZW5zaXRpdml0eT0xLjAwCkludmVydFk9MQogCltTaGFkZXJzXQpTaGFkZXJOb3JtYWw9c3RhbmRhcmQuY2cKU2hhZGVyVHJlZXM9dHJlZXMuY2c=
[Settings]
Treepos = 3611.557861 2473.824219 8.986277
TreeSeed =654
[Animations]
Idle= idle
Running=run
Sprinting=run
Falling=fall
Jumping=fall
Swimming=fall
Floating=idle
Flying=idle
[Avatar]
CameraDistance=11.00
Angle=76.000000 0.000000 73.199890
Position=7806.417969 4053.380615 -0.217506
Flying=0
MouseSensitivity=1.00
InvertY=1
[Shaders]
ShaderNormal=standard.cg
ShaderTrees=trees.cg