/* 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
{
{
for (int i = 0; i < 100000; i++) {
Set<Object> set = new LinkedHashSet<>();
long items
= Math.
round(Math.
random() * 10);
for (int j = 0; j < items; j++) {
set.
add(Double.
toHexString(Math.
random() * 1232330)); }
byte[] source = toBytes(set);
Object obj
= toObject
(source
); byte[] result = toBytes(obj);
for (int j = 0; j < source.length; j++) {
if (source[j] != result[j]) {
}
}
}
}
try {
out.writeObject(obj);
out.flush();
return bos.toByteArray();
} finally {
try {
bos.close();
// ignore close exception
}
}
}
try {
return in.readObject();
} finally {
try {
if (in != null) {
in.close();
}
// ignore close exception
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKCiAgICAgICAgICAgIFNldDxPYmplY3Q+IHNldCA9IG5ldyBMaW5rZWRIYXNoU2V0PD4oKTsKCiAgICAgICAgICAgIGxvbmcgaXRlbXMgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMCk7CgogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGl0ZW1zOyBqKyspIHsKICAgICAgICAgICAgICAgIHNldC5hZGQoRG91YmxlLnRvSGV4U3RyaW5nKE1hdGgucmFuZG9tKCkgKiAxMjMyMzMwKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJ5dGVbXSBzb3VyY2UgPSB0b0J5dGVzKHNldCk7CiAgICAgICAgICAgIE9iamVjdCBvYmogPSB0b09iamVjdChzb3VyY2UpOwogICAgICAgICAgICBieXRlW10gcmVzdWx0ID0gdG9CeXRlcyhvYmopOwoKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzb3VyY2UubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGlmIChzb3VyY2Vbal0gIT0gcmVzdWx0W2pdKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ0hPIFpBIEhPT0lOWUE/Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPSyEiKTsKCX0KCQoJc3RhdGljIGJ5dGVbXSB0b0J5dGVzKE9iamVjdCBvYmopIHRocm93cyBFeGNlcHRpb24gewogICAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBib3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgT2JqZWN0T3V0cHV0IG91dCA9IG5ldyBPYmplY3RPdXRwdXRTdHJlYW0oYm9zKTsKICAgICAgICAgICAgb3V0LndyaXRlT2JqZWN0KG9iaik7CiAgICAgICAgICAgIG91dC5mbHVzaCgpOwogICAgICAgICAgICByZXR1cm4gYm9zLnRvQnl0ZUFycmF5KCk7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGJvcy5jbG9zZSgpOwogICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgICAgLy8gaWdub3JlIGNsb3NlIGV4Y2VwdGlvbgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBPYmplY3QgdG9PYmplY3QoYnl0ZVtdIGJ5dGVzKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgICAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBiaXMgPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpOwogICAgICAgIE9iamVjdElucHV0IGluID0gbnVsbDsKICAgICAgICB0cnkgewogICAgICAgICAgICBpbiA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShiaXMpOwogICAgICAgICAgICByZXR1cm4gaW4ucmVhZE9iamVjdCgpOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBpZiAoaW4gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGluLmNsb3NlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgY2xvc2UgZXhjZXB0aW9uCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=