LyoKICogUlBDIGRlZmluaXRpb25zCiAqCiAqIENvcHlyaWdodCAyMDAxLTIwMDIgT3ZlIEvldmVuLCBUcmFuc0dhbWluZyBUZWNobm9sb2dpZXMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI2lmbmRlZiBfX1dJTkVfUlBDX0RFRlNfSAojZGVmaW5lIF9fV0lORV9SUENfREVGU19ICgovKiBpbmZvIGZyb20gaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL21zai8wMzk4L2Rjb210ZXh0Zmlncy5odG0gKi8KCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBjaGFyIHJwY192ZXI7CiAgdW5zaWduZWQgY2hhciBwdHlwZTsKICB1bnNpZ25lZCBjaGFyIGZsYWdzMTsKICB1bnNpZ25lZCBjaGFyIGZsYWdzMjsKICB1bnNpZ25lZCBjaGFyIGRyZXBbM107CiAgdW5zaWduZWQgY2hhciBzZXJpYWxfaGk7CiAgR1VJRCBvYmplY3Q7CiAgR1VJRCBpZl9pZDsKICBHVUlEIGFjdF9pZDsKICB1bnNpZ25lZCBsb25nIHNlcnZlcl9ib290OwogIHVuc2lnbmVkIGxvbmcgaWZfdmVyczsKICB1bnNpZ25lZCBsb25nIHNlcW51bTsKICB1bnNpZ25lZCBzaG9ydCBvcG51bTsKICB1bnNpZ25lZCBzaG9ydCBpaGludDsKICB1bnNpZ25lZCBzaG9ydCBhaGludDsKICB1bnNpZ25lZCBzaG9ydCBsZW47CiAgdW5zaWduZWQgc2hvcnQgZnJhZ251bTsKICB1bnNpZ25lZCBjaGFyIGF1dGhfcHJvdG87CiAgdW5zaWduZWQgY2hhciBzZXJpYWxfbG87Cn0gUnBjUGt0SGRyOwoKI2RlZmluZSBQS1RfUkVRVUVTVCAgICAgICAgICAgICAwCiNkZWZpbmUgUEtUX1BJTkcgICAgICAgICAgICAgICAgMQojZGVmaW5lIFBLVF9SRVNQT05TRSAgICAgICAgICAgIDIKI2RlZmluZSBQS1RfRkFVTFQgICAgICAgICAgICAgICAzCiNkZWZpbmUgUEtUX1dPUktJTkcgICAgICAgICAgICAgNAojZGVmaW5lIFBLVF9OT0NBTEwgICAgICAgICAgICAgIDUKI2RlZmluZSBQS1RfUkVKRUNUICAgICAgICAgICAgICA2CiNkZWZpbmUgUEtUX0FDSyAgICAgICAgICAgICAgICAgNwojZGVmaW5lIFBLVF9DTF9DQU5DRUwgICAgICAgICAgIDgKI2RlZmluZSBQS1RfRkFDSyAgICAgICAgICAgICAgICA5CiNkZWZpbmUgUEtUX0NBTkNFTF9BQ0sgICAgICAgICAxMAojZGVmaW5lIFBLVF9CSU5EICAgICAgICAgICAgICAgMTEKI2RlZmluZSBQS1RfQklORF9BQ0sgICAgICAgICAgIDEyCiNkZWZpbmUgUEtUX0JJTkRfTkFLICAgICAgICAgICAxMwojZGVmaW5lIFBLVF9BTFRFUl9DT05URVhUICAgICAgMTQKI2RlZmluZSBQS1RfQUxURVJfQ09OVEVYVF9SRVNQIDE1CiNkZWZpbmUgUEtUX1NIVVRET1dOICAgICAgICAgICAxNwojZGVmaW5lIFBLVF9DT19DQU5DRUwgICAgICAgICAgMTgKI2RlZmluZSBQS1RfT1JQSEFORUQgICAgICAgICAgIDE5CgojZGVmaW5lIE5DQURHX0lQX1VEUCAgIDB4MDgKI2RlZmluZSBOQ0FDTl9JUF9UQ1AgICAweDA3CiNkZWZpbmUgTkNBREdfSVBYICAgICAgMHgwRQojZGVmaW5lIE5DQUNOX1NQWCAgICAgIDB4MEMKI2RlZmluZSBOQ0FDTl9OQl9OQiAgICAweDEyCiNkZWZpbmUgTkNBQ05fTkJfSVBYICAgMHgwRAojZGVmaW5lIE5DQUNOX0RORVRfTlNQIDB4MDQKI2RlZmluZSBOQ0FDTl9IVFRQICAgICAweDFGCgovKiBGcmVlRENFOiBUV1JfQ19GTFJfUFJPVF9JRF9JUCAqLwojZGVmaW5lIFRXUl9JUCAweDA5CgojZW5kaWYgIC8qIF9fV0lORV9SUENfREVGU19IICovCg==