/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
boolean inQuoted = false;
List<String> parts = new ArrayList<String>();
String s
= "\"start \\\"title\\\" end\", 10, 20, \"text\""; StringBuilder current = new StringBuilder();
for( int i=0; i<s.length(); i++ ){
char c = s.charAt(i);
char cPrev = ( i == 0 ? (char)0 : s.charAt(i-1));
if( c == '"' && cPrev != '\\' ){
inQuoted = !inQuoted;
}
if( c == ',' && !inQuoted ){
if( current.length() > 0 ){
parts.add(current.toString());
current = new StringBuilder();
}
}
else {
int length = current.length();
if( length > 1 && c == '"' && current.charAt(length-1) == '\\' ){
current.deleteCharAt(length-1);
}
current.append(c);
}
}
if( current.length() > 0 ){
parts.add(current.toString());
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJIGJvb2xlYW4gaW5RdW90ZWQgPSBmYWxzZTsKCiAgICAgICAgTGlzdDxTdHJpbmc+IHBhcnRzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CiAgICAgICAgU3RyaW5nIHMgPSAiXCJzdGFydCBcXFwidGl0bGVcXFwiIGVuZFwiLCAxMCwgMjAsIFwidGV4dFwiIjsKICAgICAgICBTdHJpbmdCdWlsZGVyIGN1cnJlbnQgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwogICAgICAgIGZvciggaW50IGk9MDsgaTxzLmxlbmd0aCgpOyBpKysgKXsKICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSk7CiAgICAgICAgICAgIGNoYXIgY1ByZXYgPSAoIGkgPT0gMCA/IChjaGFyKTAgOiBzLmNoYXJBdChpLTEpKTsKCiAgICAgICAgICAgIGlmKCBjID09ICciJyAmJiBjUHJldiAhPSAnXFwnICl7CiAgICAgICAgICAgICAgICBpblF1b3RlZCA9ICFpblF1b3RlZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoIGMgPT0gJywnICYmICFpblF1b3RlZCApewogICAgICAgICAgICAgICAgaWYoIGN1cnJlbnQubGVuZ3RoKCkgPiAwICl7CiAgICAgICAgICAgICAgICAgICAgcGFydHMuYWRkKGN1cnJlbnQudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIAlpbnQgbGVuZ3RoID0gY3VycmVudC5sZW5ndGgoKTsKICAgICAgICAgICAgCWlmKCBsZW5ndGggPiAxICYmIGMgPT0gJyInICYmIGN1cnJlbnQuY2hhckF0KGxlbmd0aC0xKSA9PSAnXFwnICl7CiAgICAgICAgICAgIAkJY3VycmVudC5kZWxldGVDaGFyQXQobGVuZ3RoLTEpOwogICAgICAgICAgICAJfQogICAgICAgICAgICAgICAgY3VycmVudC5hcHBlbmQoYyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoIGN1cnJlbnQubGVuZ3RoKCkgPiAwICl7CiAgICAgICAgICAgIHBhcnRzLmFkZChjdXJyZW50LnRvU3RyaW5nKCkpOwogICAgICAgIH0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcnRzKTsKCX0KfQ==