- #include <iostream> 
- #include <iomanip> 
- #include <vector> 
- #include <string> 
- #include <sstream> 
- #include <algorithm> 
- #include <iterator> 
-   
- using namespace std; 
-   
- istream& get_cell(istream& is, string& s) 
- { 
-   char c; 
-   is >> c; // skips ws 
-   is.unget(); 
-   
-   if (c == '\'') 
-     return is >> quoted(s, '\'', '\\'); 
-   else 
-     return getline(is, s, ','), is.unget(); 
- } 
-   
- vector<string> get(const string& s) 
- { 
-   istringstream iss{ s }; 
-   string cell; 
-   vector<string> r; 
-   while (get_cell(iss, cell)) 
-   { 
-     r.push_back(cell); 
-     char comma; 
-     iss >> comma; 
-     if (comma != ',') 
-       break; 
-   } 
-   
-   char c;  
-   if (iss >> c) 
-     throw "ill formed"; 
-   
-   return r; 
- } 
-   
- int main() 
- { 
-   string s = "1, 10, 'abc', 'test, 1'"; 
-   try 
-   { 
-     auto v = get(s); 
-     copy (v.begin(), v.end(), ostream_iterator<string>(cout,"\n")); 
-    } 
-   catch (const char* e) 
-   { 
-     cout << e; 
-   } 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpdGVyYXRvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgppc3RyZWFtJiBnZXRfY2VsbChpc3RyZWFtJiBpcywgc3RyaW5nJiBzKQp7CiAgY2hhciBjOwogIGlzID4+IGM7IC8vIHNraXBzIHdzCiAgaXMudW5nZXQoKTsKCiAgaWYgKGMgPT0gJ1wnJykKICAgIHJldHVybiBpcyA+PiBxdW90ZWQocywgJ1wnJywgJ1xcJyk7CiAgZWxzZQogICAgcmV0dXJuIGdldGxpbmUoaXMsIHMsICcsJyksIGlzLnVuZ2V0KCk7Cn0KCnZlY3RvcjxzdHJpbmc+IGdldChjb25zdCBzdHJpbmcmIHMpCnsKICBpc3RyaW5nc3RyZWFtIGlzc3sgcyB9OwogIHN0cmluZyBjZWxsOwogIHZlY3RvcjxzdHJpbmc+IHI7CiAgd2hpbGUgKGdldF9jZWxsKGlzcywgY2VsbCkpCiAgewogICAgci5wdXNoX2JhY2soY2VsbCk7CiAgICBjaGFyIGNvbW1hOwogICAgaXNzID4+IGNvbW1hOwogICAgaWYgKGNvbW1hICE9ICcsJykKICAgICAgYnJlYWs7CiAgfQoKICBjaGFyIGM7IAogIGlmIChpc3MgPj4gYykKICAgIHRocm93ICJpbGwgZm9ybWVkIjsKCiAgcmV0dXJuIHI7Cn0KCmludCBtYWluKCkKewogIHN0cmluZyBzID0gIjEsIDEwLCAnYWJjJywgJ3Rlc3QsIDEnIjsKICB0cnkKICB7CiAgICBhdXRvIHYgPSBnZXQocyk7CiAgICBjb3B5ICh2LmJlZ2luKCksIHYuZW5kKCksIG9zdHJlYW1faXRlcmF0b3I8c3RyaW5nPihjb3V0LCJcbiIpKTsKICAgfQogIGNhdGNoIChjb25zdCBjaGFyKiBlKQogIHsKICAgIGNvdXQgPDwgZTsKICB9Cn0=