var workerSrc = "InVzZSBzdHJpY3QiOwovKiEgcGFrbyAyLjEuMCBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL3Bha28gQGxpY2Vuc2UgKE1JVCBBTkQgWmxpYikgKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT90KGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLHQpOnQoKGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikucGFrbz17fSl9KHRoaXMsKGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1mdW5jdGlvbihlLHQsaSxuKXtmb3IodmFyIGE9NjU1MzUmZXwwLHI9ZT4+PjE2JjY1NTM1fDAsbz0wOzAhPT1pOyl7aS09bz1pPjJlMz8yZTM6aTtkb3tyPXIrKGE9YSt0W24rK118MCl8MH13aGlsZSgtLW8pO2ElPTY1NTIxLHIlPTY1NTIxfXJldHVybiBhfHI8PDE2fDB9LGk9bmV3IFVpbnQzMkFycmF5KGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9W10saT0wO2k8MjU2O2krKyl7ZT1pO2Zvcih2YXIgbj0wO248ODtuKyspZT0xJmU/Mzk4ODI5MjM4NF5lPj4+MTplPj4+MTt0W2ldPWV9cmV0dXJuIHR9KCkpLG49ZnVuY3Rpb24oZSx0LG4sYSl7dmFyIHI9aSxvPWErbjtlXj0tMTtmb3IodmFyIHM9YTtzPG87cysrKWU9ZT4+PjheclsyNTUmKGVedFtzXSldO3JldHVybi0xXmV9LGE9MTYyMDkscj1mdW5jdGlvbihlLHQpe3ZhciBpLG4scixvLHMsbCxmLGQsaCxjLHUsdyxiLG0sayxfLHYsZyxwLHkseCxFLFIsQSxaPWUuc3RhdGU7aT1lLm5leHRfaW4sUj1lLmlucHV0LG49aSsoZS5hdmFpbF9pbi01KSxyPWUubmV4dF9vdXQsQT1lLm91dHB1dCxvPXItKHQtZS5hdmFpbF9vdXQpLHM9cisoZS5hdmFpbF9vdXQtMjU3KSxsPVouZG1heCxmPVoud3NpemUsZD1aLndoYXZlLGg9Wi53bmV4dCxjPVoud2luZG93LHU9Wi5ob2xkLHc9Wi5iaXRzLGI9Wi5sZW5jb2RlLG09Wi5kaXN0Y29kZSxrPSgxPDxaLmxlbmJpdHMpLTEsXz0oMTw8Wi5kaXN0Yml0cyktMTtlOmRve3c8MTUmJih1Kz1SW2krK108PHcsdys9OCx1Kz1SW2krK108PHcsdys9OCksdj1iW3Uma107dDpmb3IoOzspe2lmKHU+Pj49Zz12Pj4+MjQsdy09ZywwPT09KGc9dj4+PjE2JjI1NSkpQVtyKytdPTY1NTM1JnY7ZWxzZXtpZighKDE2JmcpKXtpZigwPT0oNjQmZykpe3Y9YlsoNjU1MzUmdikrKHUmKDE8PGcpLTEpXTtjb250aW51ZSB0fWlmKDMyJmcpe1oubW9kZT0xNjE5MTticmVhayBlfWUubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLFoubW9kZT1hO2JyZWFrIGV9cD02NTUzNSZ2LChnJj0xNSkmJih3PGcmJih1Kz1SW2krK108PHcsdys9OCkscCs9dSYoMTw8ZyktMSx1Pj4+PWcsdy09ZyksdzwxNSYmKHUrPVJbaSsrXTw8dyx3Kz04LHUrPVJbaSsrXTw8dyx3Kz04KSx2PW1bdSZfXTtpOmZvcig7Oyl7aWYodT4+Pj1nPXY+Pj4yNCx3LT1nLCEoMTYmKGc9dj4+PjE2JjI1NSkpKXtpZigwPT0oNjQmZykpe3Y9bVsoNjU1MzUmdikrKHUmKDE8PGcpLTEpXTtjb250aW51ZSBpfWUubXNnPSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLFoubW9kZT1hO2JyZWFrIGV9aWYoeT02NTUzNSZ2LHc8KGcmPTE1KSYmKHUrPVJbaSsrXTw8dywodys9OCk8ZyYmKHUrPVJbaSsrXTw8dyx3Kz04KSksKHkrPXUmKDE8PGcpLTEpPmwpe2UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsWi5tb2RlPWE7YnJlYWsgZX1pZih1Pj4+PWcsdy09Zyx5PihnPXItbykpe2lmKChnPXktZyk+ZCYmWi5zYW5lKXtlLm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLFoubW9kZT1hO2JyZWFrIGV9aWYoeD0wLEU9YywwPT09aCl7aWYoeCs9Zi1nLGc8cCl7cC09Zztkb3tBW3IrK109Y1t4KytdfXdoaWxlKC0tZyk7eD1yLXksRT1BfX1lbHNlIGlmKGg8Zyl7aWYoeCs9ZitoLWcsKGctPWgpPHApe3AtPWc7ZG97QVtyKytdPWNbeCsrXX13aGlsZSgtLWcpO2lmKHg9MCxoPHApe3AtPWc9aDtkb3tBW3IrK109Y1t4KytdfXdoaWxlKC0tZyk7eD1yLXksRT1BfX19ZWxzZSBpZih4Kz1oLWcsZzxwKXtwLT1nO2Rve0FbcisrXT1jW3grK119d2hpbGUoLS1nKTt4PXIteSxFPUF9Zm9yKDtwPjI7KUFbcisrXT1FW3grK10sQVtyKytdPUVbeCsrXSxBW3IrK109RVt4KytdLHAtPTM7cCYmKEFbcisrXT1FW3grK10scD4xJiYoQVtyKytdPUVbeCsrXSkpfWVsc2V7eD1yLXk7ZG97QVtyKytdPUFbeCsrXSxBW3IrK109QVt4KytdLEFbcisrXT1BW3grK10scC09M313aGlsZShwPjIpO3AmJihBW3IrK109QVt4KytdLHA+MSYmKEFbcisrXT1BW3grK10pKX1icmVha319YnJlYWt9fXdoaWxlKGk8biYmcjxzKTtpLT1wPXc+PjMsdSY9KDE8PCh3LT1wPDwzKSktMSxlLm5leHRfaW49aSxlLm5leHRfb3V0PXIsZS5hdmFpbF9pbj1pPG4/bi1pKzU6NS0oaS1uKSxlLmF2YWlsX291dD1yPHM/cy1yKzI1NzoyNTctKHItcyksWi5ob2xkPXUsWi5iaXRzPXd9LG89MTUscz1uZXcgVWludDE2QXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMCwwXSksbD1uZXcgVWludDhBcnJheShbMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTcsMTcsMTcsMTcsMTgsMTgsMTgsMTgsMTksMTksMTksMTksMjAsMjAsMjAsMjAsMjEsMjEsMjEsMjEsMTYsNzIsNzhdKSxmPW5ldyBVaW50MTZBcnJheShbMSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEzLDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1LDI0NTc3LDAsMF0pLGQ9bmV3IFVpbnQ4QXJyYXkoWzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0LDY0XSksaD1mdW5jdGlvbihlLHQsaSxuLGEscixoLGMpe3ZhciB1LHcsYixtLGssXyx2LGcscCx5PWMuYml0cyx4PTAsRT0wLFI9MCxBPTAsWj0wLFM9MCxUPTAsTz0wLFU
if(soSupported) {
theWorkerObj = new Worker(URL.createObjectURL(new Blob([base64js.toByteArray(workerSrc).buffer], { type: "text/javascript" })));
}else {
theWorkerObj = new Worker("data:text/javascript;base64," + workerSrc);