LyoKICogKEMpIENvcHlyaWdodCAyMDA4CiAqIEdyYWVtZSBSdXNzLCBncmFlbWUucnVzc0BnbWFpbC5jb20uCiAqCiAqIChDKSBDb3B5cmlnaHQgMjAwMgogKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCiAqCiAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgZGVyaXZlZCBmcm9tIHRoZSBMaW51eCBrZXJuZWwgc291cmNlCiAqICBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTIgIExpbnVzIFRvcnZhbGRzCiAqCiAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAqIHByb2plY3QuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAqIE1BIDAyMTExLTEzMDcgVVNBCiAqLwoKI2luY2x1ZGUgPGNvbW1vbi5oPgojaW5jbHVkZSA8YXNtL2ludGVycnVwdC5oPgoKI2RlZmluZSBERUNMQVJFX0lOVEVSUlVQVCh4KSBcCgkiLmdsb2JsIGlycV8iI3giXG4iIFwKCSIuaGlkZGVuIGlycV8iI3giXG4iIFwKCSIudHlwZSBpcnFfIiN4IiwgQGZ1bmN0aW9uXG4iIFwKCSJpcnFfIiN4IjpcbiIgXAoJInB1c2hsICQiI3giXG4iIFwKCSJqbXAgaXJxX2NvbW1vbl9lbnRyeVxuIgoKLyoKICogVm9sYXRpbGUgaXNuJ3QgZW5vdWdoIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20gcmVvcmRlcmluZyB0aGUKICogcmVhZC93cml0ZSBmdW5jdGlvbnMgZm9yIHRoZSBjb250cm9sIHJlZ2lzdGVycyBhbmQgbWVzc2luZyBldmVyeXRoaW5nIHVwLgogKiBBIG1lbW9yeSBjbG9iYmVyIHdvdWxkIHNvbHZlIHRoZSBwcm9ibGVtLCBidXQgd291bGQgcHJldmVudCByZW9yZGVyaW5nIG9mCiAqIGFsbCBsb2FkcyBzdG9yZXMgYXJvdW5kIGl0LCB3aGljaCBjYW4gaHVydCBwZXJmb3JtYW5jZS4gU29sdXRpb24gaXMgdG8KICogdXNlIGEgdmFyaWFibGUgYW5kIG1pbWljIHJlYWRzIGFuZCB3cml0ZXMgdG8gaXQgdG8gZW5mb3JjZSBzZXJpYWxpemF0aW9uCiAqLwpzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2ZvcmNlX29yZGVyOwoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJlYWRfY3IwKHZvaWQpCnsKCXVuc2lnbmVkIGxvbmcgdmFsOwoJYXNtIHZvbGF0aWxlKCJtb3YgJSVjcjAsJTBcblx0IiA6ICI9ciIgKHZhbCksICI9bSIgKF9fZm9yY2Vfb3JkZXIpKTsKCXJldHVybiB2YWw7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX2NyMih2b2lkKQp7Cgl1bnNpZ25lZCBsb25nIHZhbDsKCWFzbSB2b2xhdGlsZSgibW92ICUlY3IyLCUwXG5cdCIgOiAiPXIiICh2YWwpLCAiPW0iIChfX2ZvcmNlX29yZGVyKSk7CglyZXR1cm4gdmFsOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmVhZF9jcjModm9pZCkKewoJdW5zaWduZWQgbG9uZyB2YWw7Cglhc20gdm9sYXRpbGUoIm1vdiAlJWNyMywlMFxuXHQiIDogIj1yIiAodmFsKSwgIj1tIiAoX19mb3JjZV9vcmRlcikpOwoJcmV0dXJuIHZhbDsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJlYWRfY3I0KHZvaWQpCnsKCXVuc2lnbmVkIGxvbmcgdmFsOwoJYXNtIHZvbGF0aWxlKCJtb3YgJSVjcjQsJTBcblx0IiA6ICI9ciIgKHZhbCksICI9bSIgKF9fZm9yY2Vfb3JkZXIpKTsKCXJldHVybiB2YWw7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRfZGVidWdyZWcoaW50IHJlZ25vKQp7Cgl1bnNpZ25lZCBsb25nIHZhbCA9IDA7CS8qIERhbW4geW91LCBnY2MhICovCgoJc3dpdGNoIChyZWdubykgewoJY2FzZSAwOgoJCWFzbSgibW92ICUlZGIwLCAlMCIgOiI9ciIgKHZhbCkpOwoJCWJyZWFrOwoJY2FzZSAxOgoJCWFzbSgibW92ICUlZGIxLCAlMCIgOiI9ciIgKHZhbCkpOwoJCWJyZWFrOwoJY2FzZSAyOgoJCWFzbSgibW92ICUlZGIyLCAlMCIgOiI9ciIgKHZhbCkpOwoJCWJyZWFrOwoJY2FzZSAzOgoJCWFzbSgibW92ICUlZGIzLCAlMCIgOiI9ciIgKHZhbCkpOwoJCWJyZWFrOwoJY2FzZSA2OgoJCWFzbSgibW92ICUlZGI2LCAlMCIgOiI9ciIgKHZhbCkpOwoJCWJyZWFrOwoJY2FzZSA3OgoJCWFzbSgibW92ICUlZGI3LCAlMCIgOiI9ciIgKHZhbCkpOwoJCWJyZWFrOwoJZGVmYXVsdDoKCQl2YWwgPSAwOwoJfQoJcmV0dXJuIHZhbDsKfQoKdm9pZCBkdW1wX3JlZ3Moc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCnsKCXVuc2lnbmVkIGxvbmcgY3IwID0gMEwsIGNyMiA9IDBMLCBjcjMgPSAwTCwgY3I0ID0gMEw7Cgl1bnNpZ25lZCBsb25nIGQwLCBkMSwgZDIsIGQzLCBkNiwgZDc7CgoJcHJpbnRmKCJFSVA6ICUwNHg6WzwlMDhseD5dIEVGTEFHUzogJTA4bHhcbiIsCgkJCSh1MTYpcmVncy0+eGNzLCByZWdzLT5laXAsIHJlZ3MtPmVmbGFncyk7CgoJcHJpbnRmKCJFQVg6ICUwOGx4IEVCWDogJTA4bHggRUNYOiAlMDhseCBFRFg6ICUwOGx4XG4iLAoJCXJlZ3MtPmVheCwgcmVncy0+ZWJ4LCByZWdzLT5lY3gsIHJlZ3MtPmVkeCk7CglwcmludGYoIkVTSTogJTA4bHggRURJOiAlMDhseCBFQlA6ICUwOGx4IEVTUDogJTA4bHhcbiIsCgkJcmVncy0+ZXNpLCByZWdzLT5lZGksIHJlZ3MtPmVicCwgcmVncy0+ZXNwKTsKCXByaW50ZigiIERTOiAlMDR4IEVTOiAlMDR4IEZTOiAlMDR4IEdTOiAlMDR4IFNTOiAlMDR4XG4iLAoJICAgICAgICh1MTYpcmVncy0+eGRzLCAodTE2KXJlZ3MtPnhlcywgKHUxNilyZWdzLT54ZnMsICh1MTYpcmVncy0+eGdzLCAodTE2KXJlZ3MtPnhzcyk7CgoJY3IwID0gcmVhZF9jcjAoKTsKCWNyMiA9IHJlYWRfY3IyKCk7CgljcjMgPSByZWFkX2NyMygpOwoJY3I0ID0gcmVhZF9jcjQoKTsKCglwcmludGYoIkNSMDogJTA4bHggQ1IyOiAlMDhseCBDUjM6ICUwOGx4IENSNDogJTA4bHhcbiIsCgkJCWNyMCwgY3IyLCBjcjMsIGNyNCk7CgoJZDAgPSBnZXRfZGVidWdyZWcoMCk7CglkMSA9IGdldF9kZWJ1Z3JlZygxKTsKCWQyID0gZ2V0X2RlYnVncmVnKDIpOwoJZDMgPSBnZXRfZGVidWdyZWcoMyk7CgoJcHJpbnRmKCJEUjA6ICUwOGx4IERSMTogJTA4bHggRFIyOiAlMDhseCBEUjM6ICUwOGx4XG4iLAoJCQlkMCwgZDEsIGQyLCBkMyk7CgoJZDYgPSBnZXRfZGVidWdyZWcoNik7CglkNyA9IGdldF9kZWJ1Z3JlZyg3KTsKCXByaW50ZigiRFI2OiAlMDhseCBEUjc6ICUwOGx4XG4iLAoJCQlkNiwgZDcpOwp9CgpzdHJ1Y3QgaWR0X2VudHJ5IHsKCXUxNgliYXNlX2xvdzsKCXUxNglzZWxlY3RvcjsKCXU4CXJlczsKCXU4CWFjY2VzczsKCXUxNgliYXNlX2hpZ2g7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKc3RydWN0IGRlc2NfcHRyIHsKCXVuc2lnbmVkIHNob3J0IHNpemU7Cgl1bnNpZ25lZCBsb25nIGFkZHJlc3M7Cgl1bnNpZ25lZCBzaG9ydCBzZWdtZW50Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGlkdF9lbnRyeSBpZHRbMjU2XTsKCnN0cnVjdCBkZXNjX3B0ciBpZHRfcHRyOwoKc3RhdGljIGlubGluZSB2b2lkIGxvYWRfaWR0KGNvbnN0IHN0cnVjdCBkZXNjX3B0ciAqZHRyKQp7Cglhc20gdm9sYXRpbGUoImNzIGxpZHQgJTAiOjoibSIgKCpkdHIpKTsKfQoKdm9pZCBzZXRfdmVjdG9yKHU4IGludG51bSwgdm9pZCAqcm91dGluZSkKewoJaWR0W2ludG51bV0uYmFzZV9oaWdoID0gKHUxNikoKHUzMikocm91dGluZSkgPj4gMTYpOwoJaWR0W2ludG51bV0uYmFzZV9sb3cgPSAodTE2KSgodTMyKShyb3V0aW5lKSAmIDB4ZmZmZik7Cn0KCnZvaWQgaXJxXzAodm9pZCk7CnZvaWQgaXJxXzEodm9pZCk7CgppbnQgY3B1X2luaXRfaW50ZXJydXB0cyh2b2lkKQp7CglpbnQgaTsKCglpbnQgaXJxX2VudHJ5X3NpemUgPSBpcnFfMSAtIGlycV8wOwoJdm9pZCAqaXJxX2VudHJ5ID0gKHZvaWQgKilpcnFfMDsKCgkvKiBKdXN0IGluIGNhc2UuLi4gKi8KCWRpc2FibGVfaW50ZXJydXB0cygpOwoKCS8qIFNldHVwIHRoZSBJRFQgKi8KCWZvciAoaT0wO2k8MjU2O2krKykgewoJCWlkdFtpXS5hY2Nlc3MgPSAweDhlOwoJCWlkdFtpXS5yZXMgPSAwOwoJCWlkdFtpXS5zZWxlY3RvciA9IDB4MTA7CgkJc2V0X3ZlY3RvcihpLCBpcnFfZW50cnkpOwoJCWlycV9lbnRyeSArPSBpcnFfZW50cnlfc2l6ZTsKCX0KCglpZHRfcHRyLnNpemUgPSAyNTYgKiA4OwoJaWR0X3B0ci5hZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpIGlkdDsKCWlkdF9wdHIuc2VnbWVudCA9IDB4MTg7CgoJbG9hZF9pZHQoJmlkdF9wdHIpOwoKCS8qIEl0IGlzIG5vdyBzYWZlIHRvIGVuYWJsZSBpbnRlcnJ1cHRzICovCgllbmFibGVfaW50ZXJydXB0cygpOwoKCXJldHVybiAwOwp9Cgp2b2lkIF9fZG9faXJxKGludCBpcnEpCnsKCXByaW50ZigiVW5oYW5kbGVkIElSUSA6ICVkXG4iLCBpcnEpOwp9CnZvaWQgZG9faXJxKGludCBpcnEpIF9fYXR0cmlidXRlX18oKHdlYWssIGFsaWFzKCJfX2RvX2lycSIpKSk7Cgp2b2lkIGVuYWJsZV9pbnRlcnJ1cHRzKHZvaWQpCnsKCWFzbSgic3RpXG4iKTsKfQoKaW50IGRpc2FibGVfaW50ZXJydXB0cyh2b2lkKQp7Cglsb25nIGZsYWdzOwoKCWFzbSB2b2xhdGlsZSAoInB1c2hmbCA7IHBvcGwgJTAgOyBjbGlcbiIgOiAiPWciIChmbGFncykgOiApOwoKCXJldHVybiAoZmxhZ3MmMHgyMDApOyAvKiBJRSBmbGFncyBpcyBiaXQgOSAqLwp9CgovKiBJUlEgTG93LUxldmVsIFNlcnZpY2UgUm91dGluZSAqLwpfX2lzcl9fIGlycV9sbHNyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CgkvKgoJICogRm9yIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGVhY2ggZXhjZXB0aW9uLCByZWZlciB0bzoKCSAqIEludGVsriA2NCBhbmQgSUEtMzIgQXJjaGl0ZWN0dXJlcyBTb2Z0d2FyZSBEZXZlbG9wZXIncyBNYW51YWwKCSAqIFZvbHVtZSAxOiBCYXNpYyBBcmNoaXRlY3R1cmUKCSAqIE9yZGVyIE51bWJlcjogMjUzNjY1LTAyOVVTLCBOb3ZlbWJlciAyMDA4CgkgKiBUYWJsZSA2LTEuIEV4Y2VwdGlvbnMgYW5kIEludGVycnVwdHMKCSAqLwoJc3dpdGNoIChyZWdzLT5vcmlnX2VheCkgewoJY2FzZSAweDAwOgoJCXByaW50ZigiRGl2aWRlIEVycm9yIChEaXZpc2lvbiBieSB6ZXJvKVxuIik7CgkJZHVtcF9yZWdzKHJlZ3MpOwoJCXdoaWxlKDEpOwoJCWJyZWFrOwoJY2FzZSAweDAxOgoJCXByaW50ZigiRGVidWcgSW50ZXJydXB0IChTaW5nbGUgc3RlcClcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQlicmVhazsKCWNhc2UgMHgwMjoKCQlwcmludGYoIk5NSSBJbnRlcnJ1cHRcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQlicmVhazsKCWNhc2UgMHgwMzoKCQlwcmludGYoIkJyZWFrcG9pbnRcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQlicmVhazsKCWNhc2UgMHgwNDoKCQlwcmludGYoIk92ZXJmbG93XG4iKTsKCQlkdW1wX3JlZ3MocmVncyk7CgkJd2hpbGUoMSk7CgkJYnJlYWs7CgljYXNlIDB4MDU6CgkJcHJpbnRmKCJCT1VORCBSYW5nZSBFeGNlZWRlZFxuIik7CgkJZHVtcF9yZWdzKHJlZ3MpOwoJCXdoaWxlKDEpOwoJCWJyZWFrOwoJY2FzZSAweDA2OgoJCXByaW50ZigiSW52YWxpZCBPcGNvZGUgKFVuRGVmaW5lZCBPcGNvZGUpXG4iKTsKCQlkdW1wX3JlZ3MocmVncyk7CgkJd2hpbGUoMSk7CgkJYnJlYWs7CgljYXNlIDB4MDc6CgkJcHJpbnRmKCJEZXZpY2UgTm90IEF2YWlsYWJsZSAoTm8gTWF0aCBDb3Byb2Nlc3NvcilcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQl3aGlsZSgxKTsKCQlicmVhazsKCWNhc2UgMHgwODoKCQlwcmludGYoIkRvdWJsZSBmYXVsdFxuIik7CgkJZHVtcF9yZWdzKHJlZ3MpOwoJCXdoaWxlKDEpOwoJCWJyZWFrOwoJY2FzZSAweDA5OgoJCXByaW50ZigiQ28tcHJvY2Vzc29yIHNlZ21lbnQgb3ZlcnJ1blxuIik7CgkJZHVtcF9yZWdzKHJlZ3MpOwoJCXdoaWxlKDEpOwoJCWJyZWFrOwoJY2FzZSAweDBhOgoJCXByaW50ZigiSW52YWxpZCBUU1NcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQlicmVhazsKCWNhc2UgMHgwYjoKCQlwcmludGYoIlNlZ21lbnQgTm90IFByZXNlbnRcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQl3aGlsZSgxKTsKCQlicmVhazsKCWNhc2UgMHgwYzoKCQlwcmludGYoIlN0YWNrIFNlZ21lbnQgRmF1bHRcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQl3aGlsZSgxKTsKCQlicmVhazsKCWNhc2UgMHgwZDoKCQlwcmludGYoIkdlbmVyYWwgUHJvdGVjdGlvblxuIik7CgkJZHVtcF9yZWdzKHJlZ3MpOwoJCWJyZWFrOwoJY2FzZSAweDBlOgoJCXByaW50ZigiUGFnZSBmYXVsdFxuIik7CgkJZHVtcF9yZWdzKHJlZ3MpOwoJCXdoaWxlKDEpOwoJCWJyZWFrOwoJY2FzZSAweDBmOgoJCXByaW50ZigiRmxvYXRpbmctUG9pbnQgRXJyb3IgKE1hdGggRmF1bHQpXG4iKTsKCQlkdW1wX3JlZ3MocmVncyk7CgkJYnJlYWs7CgljYXNlIDB4MTA6CgkJcHJpbnRmKCJBbGlnbm1lbnQgY2hlY2tcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQlicmVhazsKCWNhc2UgMHgxMToKCQlwcmludGYoIk1hY2hpbmUgQ2hlY2tcbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQlicmVhazsKCWNhc2UgMHgxMjoKCQlwcmludGYoIlNJTUQgRmxvYXRpbmctUG9pbnQgRXhjZXB0aW9uXG4iKTsKCQlkdW1wX3JlZ3MocmVncyk7CgkJYnJlYWs7CgljYXNlIDB4MTM6CgljYXNlIDB4MTQ6CgljYXNlIDB4MTU6CgljYXNlIDB4MTY6CgljYXNlIDB4MTc6CgljYXNlIDB4MTg6CgljYXNlIDB4MTk6CgljYXNlIDB4MWE6CgljYXNlIDB4MWI6CgljYXNlIDB4MWM6CgljYXNlIDB4MWQ6CgljYXNlIDB4MWU6CgljYXNlIDB4MWY6CgkJcHJpbnRmKCJSZXNlcnZlZCBFeGNlcHRpb25cbiIpOwoJCWR1bXBfcmVncyhyZWdzKTsKCQlicmVhazsKCglkZWZhdWx0OgoJCS8qIEhhcmR3YXJlIG9yIFVzZXIgSVJRICovCgkJZG9faXJxKHJlZ3MtPm9yaWdfZWF4KTsKCX0KfQoKLyoKICogT0sgLSBUaGlzIGxvb2tzIHJlYWxseSBob3JyaWJsZSwgYnV0IGl0IHNlcnZlcyBhIHB1cnBvc2UgLSBJdCBoZWxwcyBjcmVhdGUKICogZnVsbHkgcmVsb2NhdGFibGUgY29kZS4KICogIC0gVGhlIGNhbGwgdG8gaXJxX2xsc3Igd2lsbCBiZSBhIHJlbGF0aXZlIGp1bXAKICogIC0gVGhlIElSUSBlbnRyaWVzIHdpbGwgYmUgZ3VhcmFudGVlZCB0byBiZSBpbiBvcmRlcgogKiAgSW50ZXJydXB0IGVudHJpZXMgYXJlIG5vdyB2ZXJ5IHNtYWxsIChhIHB1c2ggYW5kIGEganVtcCkgYnV0IHRoZXkgYXJlCiAqICBub3cgc2xvd2VyIChhbGwgcmVnaXN0ZXJzIHB1c2hlZCBvbiBzdGFjayB3aGljaCBwcm92aWRlcyBjb21wbGV0ZQogKiAgY3Jhc2ggZHVtcHMgaW4gdGhlIGxvdyBsZXZlbCBoYW5kbGVycwogKi8KYXNtKCIuZ2xvYmwgaXJxX2NvbW1vbl9lbnRyeVxuIiBcCgkiLmhpZGRlbiBpcnFfY29tbW9uX2VudHJ5XG4iIFwKCSIudHlwZSBpcnFfY29tbW9uX2VudHJ5LCBAZnVuY3Rpb25cbiIgXAoJImlycV9jb21tb25fZW50cnk6XG4iIFwKCSJjbGRcbiIgXAoJInB1c2hsICVnc1xuIiBcCgkicHVzaGwgJWZzXG4iIFwKCSJwdXNobCAlZXNcbiIgXAoJInB1c2hsICVkc1xuIiBcCgkicHVzaGwgJWVheFxuIiBcCgkicHVzaGwgJWVicFxuIiBcCgkicHVzaGwgJWVkaVxuIiBcCgkicHVzaGwgJWVzaVxuIiBcCgkicHVzaGwgJWVkeFxuIiBcCgkicHVzaGwgJWVjeFxuIiBcCgkicHVzaGwgJWVieFxuIiBcCgkibW92ICAgJWVzcCwgJWVheFxuIiBcCgkicHVzaGwgJWVicFxuIiBcCgkibW92bCAlZXNwLCVlYnBcbiIgXAoJInB1c2hsICVlYXhcbiIgXAoJImNhbGwgaXJxX2xsc3JcbiIgXAoJInBvcGwgJWVheFxuIiBcCgkibGVhdmVcbiJcCgkicG9wbCAlZWJ4XG4iIFwKCSJwb3BsICVlY3hcbiIgXAoJInBvcGwgJWVkeFxuIiBcCgkicG9wbCAlZXNpXG4iIFwKCSJwb3BsICVlZGlcbiIgXAoJInBvcGwgJWVicFxuIiBcCgkicG9wbCAlZWF4XG4iIFwKCSJwb3BsICVkc1xuIiBcCgkicG9wbCAlZXNcbiIgXAoJInBvcGwgJWZzXG4iIFwKCSJwb3BsICVnc1xuIiBcCgkiYWRkICAkNCwgJWVzcFxuIiBcCgkiaXJldFxuIiBcCglERUNMQVJFX0lOVEVSUlVQVCgwKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyKSBcCglERUNMQVJFX0lOVEVSUlVQVCgzKSBcCglERUNMQVJFX0lOVEVSUlVQVCg0KSBcCglERUNMQVJFX0lOVEVSUlVQVCg1KSBcCglERUNMQVJFX0lOVEVSUlVQVCg2KSBcCglERUNMQVJFX0lOVEVSUlVQVCg3KSBcCglERUNMQVJFX0lOVEVSUlVQVCg4KSBcCglERUNMQVJFX0lOVEVSUlVQVCg5KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTEpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEyKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTQpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE1KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTcpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE4KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxOSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIxKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDI0KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyNSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjYpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDI3KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyOCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjkpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDMwKSBcCglERUNMQVJFX0lOVEVSUlVQVCgzMSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMzIpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDMzKSBcCglERUNMQVJFX0lOVEVSUlVQVCgzNCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMzUpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDM2KSBcCglERUNMQVJFX0lOVEVSUlVQVCgzNykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMzgpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDM5KSBcCglERUNMQVJFX0lOVEVSUlVQVCg0MCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoNDEpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDQyKSBcCglERUNMQVJFX0lOVEVSUlVQVCg0MykgXAoJREVDTEFSRV9JTlRFUlJVUFQoNDQpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDQ1KSBcCglERUNMQVJFX0lOVEVSUlVQVCg0NikgXAoJREVDTEFSRV9JTlRFUlJVUFQoNDcpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDQ4KSBcCglERUNMQVJFX0lOVEVSUlVQVCg0OSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoNTApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDUxKSBcCglERUNMQVJFX0lOVEVSUlVQVCg1MikgXAoJREVDTEFSRV9JTlRFUlJVUFQoNTMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDU0KSBcCglERUNMQVJFX0lOVEVSUlVQVCg1NSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoNTYpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDU3KSBcCglERUNMQVJFX0lOVEVSUlVQVCg1OCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoNTkpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDYwKSBcCglERUNMQVJFX0lOVEVSUlVQVCg2MSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoNjIpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDYzKSBcCglERUNMQVJFX0lOVEVSUlVQVCg2NCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoNjUpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDY2KSBcCglERUNMQVJFX0lOVEVSUlVQVCg2NykgXAoJREVDTEFSRV9JTlRFUlJVUFQoNjgpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDY5KSBcCglERUNMQVJFX0lOVEVSUlVQVCg3MCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoNzEpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDcyKSBcCglERUNMQVJFX0lOVEVSUlVQVCg3MykgXAoJREVDTEFSRV9JTlRFUlJVUFQoNzQpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDc1KSBcCglERUNMQVJFX0lOVEVSUlVQVCg3NikgXAoJREVDTEFSRV9JTlRFUlJVUFQoNzcpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDc4KSBcCglERUNMQVJFX0lOVEVSUlVQVCg3OSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoODApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDgxKSBcCglERUNMQVJFX0lOVEVSUlVQVCg4MikgXAoJREVDTEFSRV9JTlRFUlJVUFQoODMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDg0KSBcCglERUNMQVJFX0lOVEVSUlVQVCg4NSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoODYpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDg3KSBcCglERUNMQVJFX0lOVEVSUlVQVCg4OCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoODkpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDkwKSBcCglERUNMQVJFX0lOVEVSUlVQVCg5MSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoOTIpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDkzKSBcCglERUNMQVJFX0lOVEVSUlVQVCg5NCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoOTUpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDk3KSBcCglERUNMQVJFX0lOVEVSUlVQVCg5NikgXAoJREVDTEFSRV9JTlRFUlJVUFQoOTgpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDk5KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMDApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEwMSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTAyKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMDMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEwNCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTA1KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMDYpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEwNykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTA4KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMDkpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDExMCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTExKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMTIpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDExMykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTE0KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMTUpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDExNikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTE3KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMTgpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDExOSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTIwKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMjEpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEyMikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTIzKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMjQpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEyNSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTI2KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMjcpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEyOCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTI5KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMzApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEzMSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTMyKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMzMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEzNCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTM1KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMzYpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDEzNykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTM4KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxMzkpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE0MCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTQxKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNDIpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE0MykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTQ0KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNDUpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE0NikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTQ3KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNDgpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE0OSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTUwKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNTEpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE1MikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTUzKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNTQpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE1NSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTU2KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNTcpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE1OCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTU5KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNjApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE2MSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTYyKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNjMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE2NCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTY1KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNjYpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE2NykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTY4KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNjkpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE3MCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTcxKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNzIpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE3MykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTc0KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNzUpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE3NikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTc3KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxNzgpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE3OSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTgwKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxODEpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE4MikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTgzKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxODQpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE4NSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTg2KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxODcpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE4OCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTg5KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxOTApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE5MSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTkyKSBcCglERUNMQVJFX0lOVEVSUlVQVCgxOTMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE5NCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTk1KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxOTYpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDE5NykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMTk4KSBcCglERUNMQVJFX0lOVEVSUlVQVCgxOTkpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIwMCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjAxKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMDIpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIwMykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjA0KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMDUpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIwNikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjA3KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMDgpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIwOSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjEwKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMTEpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIxMikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjEzKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMTQpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIxNSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjE2KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMTcpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIxOCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjE5KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMjApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIyMSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjIyKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMjMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIyNCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjI1KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMjYpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIyNykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjI4KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMjkpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIzMCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjMxKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMzIpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIzMykgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjM0KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMzUpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIzNikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjM3KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyMzgpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDIzOSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjQwKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyNDEpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDI0MikgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjQzKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyNDQpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDI0NSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjQ2KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyNDcpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDI0OCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjQ5KSBcCglERUNMQVJFX0lOVEVSUlVQVCgyNTApIFwKCURFQ0xBUkVfSU5URVJSVVBUKDI1MSkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjUyKSBcCglERUNMQVJFX0lOVEVSUlVQVCgyNTMpIFwKCURFQ0xBUkVfSU5URVJSVVBUKDI1NCkgXAoJREVDTEFSRV9JTlRFUlJVUFQoMjU1KSk7Cg==