ZGlmZiAtLWdpdCBhL2RvY3MveG1sL25naW54L2NoYW5nZXMueG1sIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKaW5kZXggOTEyYmVhMi4uYjZjOWQzZSAxMDA2NDQKLS0tIGEvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKKysrIGIvZG9jcy94bWwvbmdpbngvY2hhbmdlcy54bWwKQEAgLTksNiArOSw0NiBAQAogPHRpdGxlIGxhbmc9ImVuIj5uZ2lueCBjaGFuZ2Vsb2c8L3RpdGxlPgogCiAKKzxjaGFuZ2VzIHZlcj0iMC4yLjQiIGRhdGU9IjAzLjEwLjIwMDUiPgorCis8Y2hhbmdlIHR5cGU9ImZlYXR1cmUiPgorPHBhcmEgbGFuZz0icnUiPgorzc/E1czYIG5neF9odHRwX3NzaV9tb2R1bGUg0M/ExMXS1snXwcXUINfZ0sHWxc7J0QorIiR2YXI9dGV4dCIsICIkdmFyIT10ZXh0IiwgIiR2YXI9L3RleHQvIiDJICIkdmFyIT0vdGV4dC8iCivXIMvPzcHOxMUgaWYuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgbmd4X2h0dHBfc3NpX21vZHVsZSBzdXBwb3J0cworIiR2YXI9dGV4dCIsICIkdmFyIT10ZXh0IiwgIiR2YXI9L3RleHQvIiwgYW5kICIkdmFyIT0vdGV4dC8iIGV4cHJlc3Npb25zCitpbiB0aGUgImlmIiBjb21tYW5kLgorPC9wYXJhPgorPC9jaGFuZ2U+CisKKzxjaGFuZ2UgdHlwZT0iYnVnZml4Ij4KKzxwYXJhIGxhbmc9InJ1Ij4KK8/bycLLySDQ0skg0NLPy9PJ0s/Xwc7JySBsb2NhdGlvbiDCxdog08zc28Eg1yDLz87DxTsKK8/bycLLwSDQz9HXyczB09gg1yAwLjEuNDQuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+CitpbiBwcm94eWluZyBsb2NhdGlvbiB3aXRob3V0IHRyYWlsaW5nIHNsYXNoOworYnVnIGFwcGVhcmVkIGluIDAuMS40NC4KKzwvcGFyYT4KKzwvY2hhbmdlPgorCis8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+Cis8cGFyYSBsYW5nPSJydSI+CivQ0skgydPQz8zY2s/Xwc7JySDNxdTPxMEgcnRzaWcgzc/HINDSz8naz8rUySBzZWdtZW50YXRpb24gZmF1bHQ7CivP28nCy8Eg0M/R18nMwdPYINcgMC4yLjAuCis8L3BhcmE+Cis8cGFyYSBsYW5nPSJlbiI+Cit0aGUgc2VnbWVudGF0aW9uIGZhdWx0IG1heSBvY2N1cnJlZCBpZiB0aGUgInJ0c2lnIiBtZXRob2Qgd2FzIHVzZWQ7CitidWcgYXBwZWFyZWQgaW4gMC4yLjAuCis8L3BhcmE+Cis8L2NoYW5nZT4KKworPC9jaGFuZ2VzPgorCisKIDxjaGFuZ2VzIHZlcj0iMC4yLjMiIGRhdGU9IjMwLjA5LjIwMDUiPgogCiA8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+CkBAIC0yOSw3ICs2OSw3IEBACiAKIDxjaGFuZ2UgdHlwZT0iZmVhdHVyZSI+CiA8cGFyYSBsYW5nPSJydSI+Ci3Lz83BzsTBIGNvbmZpZyBlcnJtc2cg1yDNz8TVzMUgbmd4X2h0dHBfc3NpX21vZHVsZS4KK8vPzcHOxMEgY29uZmlnIGVycm1zZyDXIM3PxNXMxSBuZ3hfaHR0cF9zc3NpX21vZHVsZS4KIDwvcGFyYT4KIDxwYXJhIGxhbmc9ImVuIj4KIHRoZSAiY29uZmlnIGVycm1zZyIgY29tbWFuZCBvZiB0aGUgbmd4X2h0dHBfc3NpX21vZHVsZS4KQEAgLTc4LDcgKzExOCw3IEBACiA8Y2hhbmdlIHR5cGU9ImJ1Z2ZpeCI+CiA8cGFyYSBsYW5nPSJydSI+CiDF08zJIFNTTCBoYW5kc2hha2Ug2sHXxdLbwczT0SDTIM/bycLLz8osINTPINzUzyDNz8fMzyDQ0snXxdPUySDUwcvWxQot1yDawcvS2dTJwCDE0tXHz8fPINPPxcTJzsXOydEuCivLINrBy9LZ1MnAIMTS1cfPx88g08/FxMnOxc7J0S4KIPPQwdPJws8gUm9iIE11ZWxsZXIuCiA8L3BhcmE+CiA8cGFyYSBsYW5nPSJlbiI+CmRpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5oIGIvc3JjL2NvcmUvbmdpbnguaAppbmRleCA4YzM3MDM3Li41NjdhMTg4IDEwMDY0NAotLS0gYS9zcmMvY29yZS9uZ2lueC5oCisrKyBiL3NyYy9jb3JlL25naW54LmgKQEAgLTgsNyArOCw3IEBACiAjZGVmaW5lIF9OR0lOWF9IX0lOQ0xVREVEXwogCiAKLSNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjIuMyIKKyNkZWZpbmUgTkdJTlhfVkVSICAgICAgICAgICJuZ2lueC8wLjIuNCIKIAogI2RlZmluZSBOR0lOWF9WQVIgICAgICAgICAgIk5HSU5YIgogI2RlZmluZSBOR1hfT0xEUElEX0VYVCAgICAgIi5vbGRiaW4iCmRpZmYgLS1naXQgYS9zcmMvZXZlbnQvbW9kdWxlcy9uZ3hfcnRzaWdfbW9kdWxlLmMgYi9zcmMvZXZlbnQvbW9kdWxlcy9uZ3hfcnRzaWdfbW9kdWxlLmMKaW5kZXggOTJlMzNhMC4uOWM1ZGY1ZCAxMDA2NDQKLS0tIGEvc3JjL2V2ZW50L21vZHVsZXMvbmd4X3J0c2lnX21vZHVsZS5jCisrKyBiL3NyYy9ldmVudC9tb2R1bGVzL25neF9ydHNpZ19tb2R1bGUuYwpAQCAtNDI4LDEwICs0MjgsMTYgQEAKICAgICAgICAgICAgIHJldHVybiBOR1hfT0s7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBUT0RPOiBvbGRfY3ljbGVzICovCi0KICAgICAgICAgYyA9IG5neF9jeWNsZS0+ZmlsZXNbc2kuc2lfZmRdOwogCisgICAgICAgIGlmIChjID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIHRoZSBzdGFsZSBldmVudCAqLworCisgICAgICAgICAgICBuZ3hfYWNjZXB0X211dGV4X3VubG9jaygpOworCisgICAgICAgICAgICByZXR1cm4gTkdYX09LOworICAgICAgICB9CisKICAgICAgICAgaW5zdGFuY2UgPSBzaWdubyAtIHJ0c2NmLT5zaWdubzsKIAogICAgICAgICByZXYgPSBjLT5yZWFkOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYyBiL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfcHJveHlfbW9kdWxlLmMKaW5kZXggYTdmZDc0MS4uZmQ0MTAxNyAxMDA2NDQKLS0tIGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9wcm94eV9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3Byb3h5X21vZHVsZS5jCkBAIC00MzAsNyArNDMwLDcgQEAKIAogICAgIGVzY2FwZSA9IDA7CiAKLSAgICBsb2NfbGVuID0gci0+dmFsaWRfbG9jYXRpb24gPyB1LT5jb25mLT5sb2NhdGlvbi0+bGVuIC0gMSA6IDA7CisgICAgbG9jX2xlbiA9IHItPnZhbGlkX2xvY2F0aW9uID8gdS0+Y29uZi0+bG9jYXRpb24tPmxlbiA6IDA7CiAKICAgICBpZiAocGxjZi0+dXBzdHJlYW0ucGFzc191bnBhcnNlZF91cmkgJiYgci0+dmFsaWRfdW5wYXJzZWRfdXJpKSB7CiAgICAgICAgIGxlbiArPSByLT51bnBhcnNlZF91cmkubGVuOwpAQCAtNTE0LDEyICs1MTQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci0+bWV0aG9kX25hbWUubGVuICsgMSk7CiAgICAgfQogCi0gICAgYi0+bGFzdCA9IG5neF9jcHltZW0oYi0+bGFzdCwgdS0+Y29uZi0+dXJpLmRhdGEsIHUtPmNvbmYtPnVyaS5sZW4gLSAxKTsKLQogICAgIGlmIChwbGNmLT51cHN0cmVhbS5wYXNzX3VucGFyc2VkX3VyaSAmJiByLT52YWxpZF91bnBhcnNlZF91cmkpIHsKICAgICAgICAgYi0+bGFzdCA9IG5neF9jcHltZW0oYi0+bGFzdCwgci0+dW5wYXJzZWRfdXJpLmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHItPnVucGFyc2VkX3VyaS5sZW4pOwogICAgIH0gZWxzZSB7CisgICAgICAgIGItPmxhc3QgPSBuZ3hfY3B5bWVtKGItPmxhc3QsIHUtPmNvbmYtPnVyaS5kYXRhLCB1LT5jb25mLT51cmkubGVuKTsKKwogICAgICAgICBpZiAoZXNjYXBlKSB7CiAgICAgICAgICAgICBuZ3hfZXNjYXBlX3VyaShiLT5sYXN0LCByLT51cmkuZGF0YSArIGxvY19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLT51cmkubGVuIC0gbG9jX2xlbiwgTkdYX0VTQ0FQRV9VUkkpOwpkaWZmIC0tZ2l0IGEvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZS5jIGIvc3JjL2h0dHAvbW9kdWxlcy9uZ3hfaHR0cF9zc2lfZmlsdGVyX21vZHVsZS5jCmluZGV4IGYzZWIwOTMuLjg4NWQyOTggMTAwNjQ0Ci0tLSBhL3NyYy9odHRwL21vZHVsZXMvbmd4X2h0dHBfc3NpX2ZpbHRlcl9tb2R1bGUuYworKysgYi9zcmMvaHR0cC9tb2R1bGVzL25neF9odHRwX3NzaV9maWx0ZXJfbW9kdWxlLmMKQEAgLTE2MDMsOSArMTYwMywxNiBAQAogbmd4X2h0dHBfc3NpX2lmKG5neF9odHRwX3JlcXVlc3RfdCAqciwgbmd4X2h0dHBfc3NpX2N0eF90ICpjdHgsCiAgICAgbmd4X3N0cl90ICoqcGFyYW1zKQogewotICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAgICpleHByLCB2YXI7Ci0gICAgbmd4X3VpbnRfdCAgICAgICAgICAgICAgICAgIGk7CisgICAgdV9jaGFyICAgICAgICAgICAgICAgICAgICAgKnAsICpsYXN0OworICAgIG5neF9zdHJfdCAgICAgICAgICAgICAgICAgICpleHByLCB2YXIsIGxlZnQsIHJpZ2h0OworICAgIG5neF9pbnRfdCAgICAgICAgICAgICAgICAgICByYzsKKyAgICBuZ3hfdWludF90ICAgICAgICAgICAgICAgICAgbmVnYXRpdmUsIG5vcmVnZXg7CiAgICAgbmd4X2h0dHBfdmFyaWFibGVfdmFsdWVfdCAgKnZ2OworI2lmIChOR1hfUENSRSkKKyAgICBuZ3hfc3RyX3QgICAgICAgICAgICAgICAgICAgZXJyOworICAgIG5neF9yZWdleF90ICAgICAgICAgICAgICAgICpyZWdleDsKKyAgICB1X2NoYXIgICAgICAgICAgICAgICAgICAgICAgZXJyc3RyW05HWF9NQVhfQ09ORl9FUlJTVFJdOworI2VuZGlmCiAKICAgICBleHByID0gcGFyYW1zW05HWF9IVFRQX1NTSV9JRl9FWFBSXTsKIApAQCAtMTYxNSwxMSArMTYyMiwyNiBAQAogICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0VSUk9SOwogICAgIH0KIAotICAgIHZhci5sZW4gPSBleHByLT5sZW4gLSAxOwogICAgIHZhci5kYXRhID0gZXhwci0+ZGF0YSArIDE7CisgICAgbGFzdCA9IGV4cHItPmRhdGEgKyBleHByLT5sZW47CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgdmFyLmxlbjsgaSsrKSB7Ci0gICAgICAgIHZhci5kYXRhW2ldID0gbmd4X3RvbG93ZXIodmFyLmRhdGFbaV0pOworICAgIGZvciAocCA9IHZhci5kYXRhOyBwIDwgbGFzdDsgcCsrKSB7CisgICAgICAgIGlmICgqcCA+PSAnQScgJiYgKnAgPD0gJ1onKSB7CisgICAgICAgICAgICAqcCB8PSAweDIwOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKCpwID49ICdhJyAmJiAqcCA8PSAneicpIHx8ICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKSB8fCAqcCA9PSAnXycpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdmFyLmxlbiA9IHAgLSB2YXIuZGF0YTsKKworICAgIHdoaWxlIChwIDwgbGFzdCAmJiAqcCA9PSAnICcpIHsKKyAgICAgICAgcCsrOwogICAgIH0KIAogICAgIHZ2ID0gbmd4X2h0dHBfZ2V0X3ZhcmlhYmxlKHIsICZ2YXIpOwpAQCAtMTYyOCw3ICsxNjUwLDEwMCBAQAogICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0VSUk9SOwogICAgIH0KIAotICAgIGlmICh2diAhPSBOR1hfSFRUUF9WQVJfTk9UX0ZPVU5EICYmIHZ2LT50ZXh0LmxlbiAhPSAwKSB7CisgICAgaWYgKHAgPT0gbGFzdCkgeworICAgICAgICBpZiAodnYgIT0gTkdYX0hUVFBfVkFSX05PVF9GT1VORCAmJiB2di0+dGV4dC5sZW4gIT0gMCkgeworICAgICAgICAgICAgY3R4LT5vdXRwdXQgPSAxOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjdHgtPm91dHB1dCA9IDA7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gTkdYX09LOworICAgIH0KKworICAgIGlmIChwIDwgbGFzdCAmJiAqcCA9PSAnPScpIHsKKyAgICAgICAgbmVnYXRpdmUgPSAwOworICAgICAgICBwKys7CisKKyAgICB9IGVsc2UgaWYgKHAgKyAxIDwgbGFzdCAmJiAqcCA9PSAnIScgJiYgKihwICsgMSkgPT0gJz0nKSB7CisgICAgICAgIG5lZ2F0aXZlID0gMTsKKyAgICAgICAgcCArPSAyOworCisgICAgfSBlbHNlIHsKKyAgICAgICAgZ290byBpbnZhbGlkX2V4cHJlc3Npb247CisgICAgfQorCisgICAgd2hpbGUgKHAgPCBsYXN0ICYmICpwID09ICcgJykgeworICAgICAgICBwKys7CisgICAgfQorCisgICAgaWYgKHAgPCBsYXN0ICYmICpwID09ICcvJykgeworICAgICAgICBpZiAoKihsYXN0IC0gMSkgIT0gJy8nKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfZXhwcmVzc2lvbjsKKyAgICAgICAgfQorCisgICAgICAgIG5vcmVnZXggPSAwOworICAgICAgICBsYXN0LS07CisJcCsrOworCisgICAgfSBlbHNlIHsKKyAgICAgICAgbm9yZWdleCA9IDE7CisgICAgfQorCisgICAgcmlnaHQubGVuID0gbGFzdCAtIHA7CisgICAgcmlnaHQuZGF0YSA9IHA7CisKKyAgICBpZiAodnYgPT0gTkdYX0hUVFBfVkFSX05PVF9GT1VORCkgeworICAgICAgICBsZWZ0LmxlbiA9IDA7CisgICAgICAgIGxlZnQuZGF0YSA9ICh1X2NoYXIgKikgIiI7CisKKyAgICB9IGVsc2UgeworICAgICAgICBsZWZ0ID0gdnYtPnRleHQ7CisgICAgfQorCisgICAgbmd4X2xvZ19kZWJ1ZzIoTkdYX0xPR19ERUJVR19IVFRQLCByLT5jb25uZWN0aW9uLT5sb2csIDAsCisgICAgICAgICAgICAgICAgICAgImxlZnQ6IFwiJVZcIiByaWdodDogXCIlVlwiIiwgJmxlZnQsICZyaWdodCk7CisKKyAgICBpZiAobm9yZWdleCkgeworICAgICAgICBpZiAobGVmdC5sZW4gIT0gcmlnaHQubGVuKSB7CisgICAgICAgICAgICByYyA9IC0xOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYyA9IG5neF9zdHJuY21wKGxlZnQuZGF0YSwgcmlnaHQuZGF0YSwgcmlnaHQubGVuKTsKKyAgICAgICAgfQorCisgICAgfSBlbHNlIHsKKyNpZiAoTkdYX1BDUkUpCisgICAgICAgIGVyci5sZW4gPSBOR1hfTUFYX0NPTkZfRVJSU1RSOworICAgICAgICBlcnIuZGF0YSA9IGVycnN0cjsKKworICAgICAgICByaWdodC5kYXRhW3JpZ2h0Lmxlbl0gPSAnXDAnOworCisgICAgICAgIHJlZ2V4ID0gbmd4X3JlZ2V4X2NvbXBpbGUoJnJpZ2h0LCAwLCByLT5wb29sLCAmZXJyKTsKKworICAgICAgICBpZiAocmVnZXggPT0gTlVMTCkgeworICAgICAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0VSUiwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLCAiJXMiLCBlcnIuZGF0YSk7CisgICAgICAgICAgICByZXR1cm4gTkdYX0hUVFBfU1NJX0VSUk9SOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBuZ3hfcmVnZXhfZXhlYyhyZWdleCwgJmxlZnQsIE5VTEwsIDApOworCisgICAgICAgIGlmIChyYyAhPSBOR1hfUkVHRVhfTk9fTUFUQ0hFRCAmJiByYyA8IDApIHsKKyAgICAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19BTEVSVCwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hfcmVnZXhfZXhlY19uICIgZmFpbGVkOiAlZCBvbiBcIiVWXCIgdXNpbmcgXCIlVlwiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmMsICZsZWZ0LCAmcmlnaHQpOworICAgICAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1NTSV9FUlJPUjsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0FMRVJULCByLT5jb25uZWN0aW9uLT5sb2csIDAsCisgICAgICAgICAgICAgICAgICAgICAgInRoZSB1c2luZyBvZiB0aGUgcmVnZXggXCIlVlwiIGluIFNTSSAiCisgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIFBDUkUgbGlicmFyeSIsICZyaWdodCk7CisKKyAgICAgICAgcmV0dXJuIE5HWF9IVFRQX1NTSV9FUlJPUjsKKyNlbmRpZgorICAgIH0KKworICAgIGlmICgocmMgPT0gMCAmJiAhbmVnYXRpdmUpIHx8IChyYyAhPSAwICYmIG5lZ2F0aXZlKSkgewogICAgICAgICBjdHgtPm91dHB1dCA9IDE7CiAKICAgICB9IGVsc2UgewpAQCAtMTYzNiw2ICsxNzUxLDEzIEBACiAgICAgfQogCiAgICAgcmV0dXJuIE5HWF9PSzsKKworaW52YWxpZF9leHByZXNzaW9uOgorCisgICAgbmd4X2xvZ19lcnJvcihOR1hfTE9HX0VSUiwgci0+Y29ubmVjdGlvbi0+bG9nLCAwLAorICAgICAgICAgICAgICAgICAgImludmFsaWQgZXhwcmVzc2lvbiBpbiBcIiVWXCIiLCBleHByKTsKKworICAgIHJldHVybiBOR1hfSFRUUF9TU0lfRVJST1I7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL29zL3VuaXgvbmd4X2F0b21pYy5oIGIvc3JjL29zL3VuaXgvbmd4X2F0b21pYy5oCmluZGV4IDk3MTA4NTUuLmIzZDMwMDMgMTAwNjQ0Ci0tLSBhL3NyYy9vcy91bml4L25neF9hdG9taWMuaAorKysgYi9zcmMvb3MvdW5peC9uZ3hfYXRvbWljLmgKQEAgLTMwOCw4ICszMDgsOSBAQAogICogdGhpcyBicmFuY2ggaXMgdW5saWtlbHkgdG8gYmUgdGFrZW4uCiAgKgogICogdGhlICI9JnIiIG1lYW5zIHRoYXQgbm8gaW5wdXQgcmVnaXN0ZXJzIGNhbiBiZSB1c2VkLgotICogdGhlICI9JmIiIG1lYW5zIHRoYXQgdGhlIGJhc2UgcmVnaXN0ZXJzIGNhbiBiZSB1c2VkIG9ubHksIGkuZS4gYW55IHJlZ2lzdGVyCi0gKiBleGNlcHQgcjAuICB0aGUgcjAgcmVnaXN0ZXIgY2FuIG5vdCBiZSB1c2VkIGluICJhZGRpICByMCwgcjAsIDEiLgorICogdGhlICI9JmIiIG1lYW5zIHRoYXQgdGhlIGJhc2UgcmVnaXN0ZXJzIGNhbiBiZSB1c2VkIG9ubHksIGkuZS4KKyAqIGFueSByZWdpc3RlciBleGNlcHQgcjAuICB0aGUgcjAgcmVnaXN0ZXIgYWx3YXlzIGhhcyBhIHplcm8gdmFsdWUgYW5kCisgKiBjb3VsZCBub3QgYmUgdXNlZCBpbiAiYWRkaSAgcjAsIHIwLCAxIi4KICAqIHRoZSAiMWIiIG1lYW5zIHRoZSBuZWFyZXN0IGJhY2t3YXJkIGxhYmVsICIxIiBhbmQgdGhlICIxZiIgbWVhbnMKICAqIHRoZSBuZWFyZXN0IGZvcndhcmQgbGFiZWwgIjEiLgogICovCg==