LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQogKgogKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogKiBwcm9qZWN0LgogKgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAogKiBNQSAwMjExMS0xMzA3IFVTQQogKi8KCi8qCiAqIHg4NiByZWFsbW9kZSBhc3NlbWJseSBpbXBsZW1lbnRhdGlvbiBvZiBhIFBDSSBCSU9TCiAqIGZvciBwbGF0Zm9ybXMgdGhhdCB1c2Ugb25lIFBDSSBob3NlIGFuZCBjb25maWd1cmF0aW9uCiAqIGFjY2VzcyB0eXBlIDEuIChUaGUgY29tbW9uIGNhc2UgZm9yIGxvdy1lbmQgUEMncykKICovCgojaW5jbHVkZSAiYmlvcy5oIgoKI2RlZmluZSBQQ0lfQklPU19ERUJVRwoKLnNlY3Rpb24gLmJpb3MsICJheCIKLmNvZGUxNgouZ2xvYmwgcmVhbG1vZGVfcGNpX2Jpb3NfY2FsbF9lbnRyeQouaGlkZGVuIHJlYWxtb2RlX3BjaV9iaW9zX2NhbGxfZW50cnkKLnR5cGUgcmVhbG1vZGVfcGNpX2Jpb3NfY2FsbF9lbnRyeSwgQGZ1bmN0aW9uCnJlYWxtb2RlX3BjaV9iaW9zX2NhbGxfZW50cnk6CglNQUtFX0JJT1NfU1RBQ0sKCWNhbGwgcmVhbG1vZGVfcGNpX2Jpb3MKCVJFU1RPUkVfQ0FMTEVSU19TVEFDSwoJcmV0CgoKLmdsb2JsIHJlYWxtb2RlX3BjaV9iaW9zCnJlYWxtb2RlX3BjaV9iaW9zOgpncwltb3Z3CU9GRlNfQVgoJWJwKSwgJWF4CgljbXBiCSQxLCAlYWwKCWplCXBjaV9iaW9zX3ByZXNlbnQKCWNtcGIJJDIsICVhbAoJamUJcGNpX2Jpb3NfZmluZF9kZXZpY2UKCWNtcGIJJDMsICVhbAoJamUJcGNpX2Jpb3NfZmluZF9jbGFzcwoJY21wYgkkNiwgJWFsCglqZQlwY2lfYmlvc19nZW5lcmF0ZV9zcGVjaWFsX2N5Y2xlCgljbXBiCSQ4LCAlYWwKCWplCXBjaV9iaW9zX3JlYWRfY2ZnX2J5dGUKCWNtcGIJJDksICVhbAoJamUJcGNpX2Jpb3NfcmVhZF9jZmdfd29yZAoJY21wYgkkMTAsICVhbAoJamUJcGNpX2Jpb3NfcmVhZF9jZmdfZHdvcmQKCWNtcGIJJDExLCAlYWwKCWplCXBjaV9iaW9zX3dyaXRlX2NmZ19ieXRlCgljbXBiCSQxMiwgJWFsCglqZQlwY2lfYmlvc193cml0ZV9jZmdfd29yZAoJY21wYgkkMTMsICVhbAoJamUJcGNpX2Jpb3Nfd3JpdGVfY2ZnX2R3b3JkCgljbXBiCSQxNCwgJWFsCglqZQlwY2lfYmlvc19nZXRfaXJxX3JvdXRpbmcKCWNtcGIJJDE1LCAlYWwKCWplCXBjaV9iaW9zX3NldF9pcnEKCWptcAl1bmtub3duX2Z1bmN0aW9uCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpwY2lfYmlvc19wcmVzZW50OgojaWZkZWYgUENJX0JJT1NfREVCVUcKY3MJaW5jbAludW1fcGNpX2Jpb3NfcHJlc2VudAojZW5kaWYKCW1vdmwJJDB4MjA0OTQzNTAsICVlYXgKZ3MJbW92bAklZWF4LCBPRkZTX0VEWCglYnApCgltb3ZiCSQweDAxLCAlYWwKZ3MJbW92YgklYWwsIE9GRlNfQUwoJWJwKQkvKiBXZSBzdXBwb3J0IGNmZyB0eXBlIDEgKi8KCW1vdncJJDB4MDIxMCwgJWF4ICAgICAgICAgICAgLyogdmVyc2lvbiAyLjEwICovCmdzCW1vdncJJWF4LCBPRkZTX0JYKCVicCkKY3MJbW92YglwY2lfbGFzdF9idXMsICVhbCAgICAgICAvKiBsYXN0IGJ1cyBudW1iZXIgKi8KZ3MJbW92YgklYWwsIE9GRlNfQ0woJWJwKQoJam1wCWNsZWFyX2NhcnJ5CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBkZXZpY2UgMC0zMSwgZnVuY3Rpb24gMC03ICovCnBjaV9iaW9zX2ZpbmRfZGV2aWNlOgojaWZkZWYgUENJX0JJT1NfREVCVUcKY3MJaW5jbAludW1fcGNpX2Jpb3NfZmluZF9kZXZpY2UKI2VuZGlmCmdzCW1vdncJT0ZGU19DWCglYnApLCAlZGkKCXNobGwJJDE2LCAlZWRpCmdzCW1vdncJT0ZGU19EWCglYnApLCAlZGkgICAgICAgLyogZWRpIG5vdyBob2xkcyBkZXZpY2UgaW4gdXBwZXIgMTYKCQkJCQkgKiBiaXRzIGFuZCB2ZW5kb3IgaW4gbG93ZXIgMTYgYml0cyAqLwpncwltb3Z3CU9GRlNfU0koJWJwKSwgJXNpCgl4b3J3CSVieCwgJWJ4ICAgICAgICAgICAgICAgIC8qIHN0YXJ0IGF0IGJ1cyAwIGRldiAwIGZ1bmN0aW9uIDAgKi8KcGZkX2xvb3A6Cgl4b3J3CSVheCwgJWF4CQkvKiBkd29yZCAwIGlzIHZlbmRvci9kZXZpY2UgKi8KCWNhbGwJX19wY2lfYmlvc19zZWxlY3RfcmVnaXN0ZXIKCW1vdncJJDB4Y2ZjLCAlZHgKCWlubAklZHgsICVlYXgKCWNtcGwJJWVkaSwgJWVheAkJLyogb3VyIGRldmljZSA/ICovCglqZQlwZmRfZm91bmRfb25lCnBmZF9uZXh0X2RldjoKCS8qIGNoZWNrIGZvciBtdWx0aSBmdW5jdGlvbiBkZXZpY2VzICovCgltb3Z3CSVieCwgJWF4CglhbmR3CSQzLCAlYXgKCWpueglwZmRfZnVuY3Rpb25fbm90X3plcm8KCW1vdncJJDB4MDAwYywgJWF4CgljYWxsCV9fcGNpX2Jpb3Nfc2VsZWN0X3JlZ2lzdGVyCgltb3Z3CSQweGNmZSwgJWR4CglpbmIJJWR4LCAlYWwKCWFuZGIJJDB4ODAsICVhbAoJanoJcGZkX25vdF9tdWx0aV9mdW5jdGlvbgpwZmRfZnVuY3Rpb25fbm90X3plcm86CglpbmN3CSVieAkJCS8qIG5leHQgZnVuY3Rpb24sIG92ZXJmbG93cyBpbiB0bwoJCQkJCSAqIGRldmljZSBudW1iZXIsIHRoZW4gYnVzIG51bWJlciAqLwoJam1wCXBmZF9jaGVja19idXMKCnBmZF9ub3RfbXVsdGlfZnVuY3Rpb246CglhbmR3CSQweGZmZjgsICVieCAgICAgICAgICAgIC8qIHJlbW92ZSBmdW5jdGlvbiBiaXRzICovCglhZGR3CSQweDAwMDgsICVieCAgICAgICAgICAgIC8qIG5leHQgZGV2aWNlLCBvdmVyZmxvd3MgaW4gdG8gYnVzIG51bWJlciAqLwpwZmRfY2hlY2tfYnVzOgpjcwltb3ZiCXBjaV9sYXN0X2J1cywgJWFoCgljbXBiCSVhaCwgJWJoCglqYQlwZmRfbm90X2ZvdW5kCglqbXAJcGZkX2xvb3AKcGZkX2ZvdW5kX29uZToKCWRlY3cJJXNpCglqcwlwZmRfZG9uZQoJam1wCXBmZF9uZXh0X2RldgoKcGZkX2RvbmU6CmdzCW1vdncJJWJ4LCBPRkZTX0JYKCVicCkKCWptcAljbGVhcl9jYXJyeQoKcGZkX25vdF9mb3VuZDoKCW1vdmIJJDB4ODYsICVhaCAgICAgICAgICAgICAgLyogZGV2aWNlIG5vdCBmb3VuZCAqLwoJam1wCXNldF9jYXJyeQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcGNpX2Jpb3NfZmluZF9jbGFzczoKI2lmZGVmIFBDSV9CSU9TX0RFQlVHCmNzCWluY2wJbnVtX3BjaV9iaW9zX2ZpbmRfY2xhc3MKI2VuZGlmCmdzCW1vdmwJT0ZGU19FQ1goJWJwKSwgJWVkaQoJYW5kbAkkMHgwMGZmZmZmZiwgJWVkaSAgICAgICAvKiBlZGkgbm93IGhvbGRzIGNsYXNzLWNvZGUgaW4gbG93ZXIgMjQgYml0cyAqLwpncwltb3Z3CU9GRlNfU0koJWJwKSwgJXNpCgl4b3J3CSVieCwgJWJ4ICAgICAgICAgICAgICAgIC8qIHN0YXJ0IGF0IGJ1cyAwIGRldiAwIGZ1bmN0aW9uIDAgKi8KcGZjX2xvb3A6Cgltb3Z3CSQ4LCAlYXgJCQkvKiBkd29yZCA4IGlzIGNsYXNzLWNvZGUgaGlnaCAyNGJpdHMgKi8KCWNhbGwJX19wY2lfYmlvc19zZWxlY3RfcmVnaXN0ZXIKCW1vdncJJDB4Y2ZjLCAlZHgKCWlubAklZHgsICVlYXgKCXNocmwJJDgsICVlYXgKCWFuZGwJJDB4MDBmZmZmZmYsICVlYXgKCWNtcGwJJWVkaSwgJWVheAkJLyogb3VyIGRldmljZSA/ICovCglqZQlwZmNfZm91bmRfb25lCnBmY19uZXh0X2RldjoKCS8qIGNoZWNrIGZvciBtdWx0aSBmdW5jdGlvbiBkZXZpY2VzICovCglhbmR3CSQzLCAlYngKCWpueglwZmNfZnVuY3Rpb25fbm90X3plcm8KCW1vdncJJDB4MDAwYywgJWF4CgljYWxsCV9fcGNpX2Jpb3Nfc2VsZWN0X3JlZ2lzdGVyCgltb3Z3CSQweGNmZSwgJWR4CglpbmIJJWR4LCAlYWwKCWFuZGIJJDB4ODAsICVhbAoJanoJcGZjX25vdF9tdWx0aV9mdW5jdGlvbgpwZmNfZnVuY3Rpb25fbm90X3plcm86CglpbmN3CSVieAkJCS8qIG5leHQgZnVuY3Rpb24sIG92ZXJmbG93cyBpbiB0bwoJCQkJCSAqIGRldmljZSBudW1iZXIsIHRoZW4gYnVzIG51bWJlciAqLwoJam1wCXBmY19jaGVja19idXMKCnBmY19ub3RfbXVsdGlfZnVuY3Rpb246CglhbmR3CSQweGZmZjgsICVieCAgICAgICAgICAgIC8qIHJlbW92ZSBmdW5jdGlvbiBiaXRzICovCglhZGR3CSQweDAwMDgsICVieCAgICAgICAgICAgIC8qIG5leHQgZGV2aWNlLCBvdmVyZmxvd3MgaW4gdG8gYnVzIG51bWJlciAqLwpwZmNfY2hlY2tfYnVzOgpjcwltb3ZiCXBjaV9sYXN0X2J1cywgJWFoCgljbXBiCSVhaCwgJWJoCglqYQlwZmNfbm90X2ZvdW5kCglqbXAJcGZjX2xvb3AKcGZjX2ZvdW5kX29uZToKCWRlY3cJJXNpCglqcwlwZmNfZG9uZQoJam1wCXBmY19uZXh0X2RldgoKcGZjX2RvbmU6CmdzCW1vdncJJWJ4LCBPRkZTX0JYKCVicCkKCWptcAljbGVhcl9jYXJyeQoKcGZjX25vdF9mb3VuZDoKCW1vdmIJJDB4ODYsICVhaCAgICAgICAgICAgICAgLyogZGV2aWNlIG5vdCBmb3VuZCAqLwoJam1wCXNldF9jYXJyeQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcGNpX2Jpb3NfZ2VuZXJhdGVfc3BlY2lhbF9jeWNsZToKI2lmZGVmIFBDSV9CSU9TX0RFQlVHCmNzCWluY2wJbnVtX3BjaV9iaW9zX2dlbmVyYXRlX3NwZWNpYWxfY3ljbGUKI2VuZGlmCgltb3ZiCSQweDgxLCAlYWggICAgICAgICAgICAgIC8qIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgKi8KCWptcAlzZXRfY2FycnkKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnBjaV9iaW9zX3JlYWRfY2ZnX2J5dGU6CiNpZmRlZiBQQ0lfQklPU19ERUJVRwpjcwlpbmNsCW51bV9wY2lfYmlvc19yZWFkX2NmZ19ieXRlCiNlbmRpZgoJY2FsbAlwY2lfYmlvc19zZWxlY3RfcmVnaXN0ZXIKZ3MJbW92dwlPRkZTX0RJKCVicCksICVkeAoJYW5kdwkkMywgJWR4CglhZGR3CSQweGNmYywgJWR4CglpbmIJJWR4LCAlYWwKZ3MJbW92YgklYWwsIE9GRlNfQ0woJWJwKQoJam1wCWNsZWFyX2NhcnJ5CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpwY2lfYmlvc19yZWFkX2NmZ193b3JkOgojaWZkZWYgUENJX0JJT1NfREVCVUcKY3MJaW5jbAludW1fcGNpX2Jpb3NfcmVhZF9jZmdfd29yZAojZW5kaWYKCWNhbGwJcGNpX2Jpb3Nfc2VsZWN0X3JlZ2lzdGVyCmdzCW1vdncJT0ZGU19ESSglYnApLCAlZHgKCWFuZHcJJDIsICVkeAoJYWRkdwkkMHhjZmMsICVkeAoJaW53CSVkeCwgJWF4CmdzCW1vdncJJWF4LCBPRkZTX0NYKCVicCkKCWptcAljbGVhcl9jYXJyeQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnBjaV9iaW9zX3JlYWRfY2ZnX2R3b3JkOgojaWZkZWYgUENJX0JJT1NfREVCVUcKY3MJaW5jbAludW1fcGNpX2Jpb3NfcmVhZF9jZmdfZHdvcmQKI2VuZGlmCgljYWxsCXBjaV9iaW9zX3NlbGVjdF9yZWdpc3RlcgoJbW92dwkkMHhjZmMsICVkeAoJaW5sCSVkeCwgJWVheApncwltb3ZsCSVlYXgsIE9GRlNfRUNYKCVicCkKCWptcAljbGVhcl9jYXJyeQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcGNpX2Jpb3Nfd3JpdGVfY2ZnX2J5dGU6CiNpZmRlZiBQQ0lfQklPU19ERUJVRwpjcwlpbmNsCW51bV9wY2lfYmlvc193cml0ZV9jZmdfYnl0ZQojZW5kaWYKCWNhbGwJcGNpX2Jpb3Nfc2VsZWN0X3JlZ2lzdGVyCmdzCW1vdncJT0ZGU19ESSglYnApLCAlZHgKZ3MJbW92YglPRkZTX0NMKCVicCksICVhbAoJYW5kdwkkMywgJWR4CglhZGR3CSQweGNmYywgJWR4CglvdXRiCSVhbCwgJWR4CglqbXAJY2xlYXJfY2FycnkKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnBjaV9iaW9zX3dyaXRlX2NmZ193b3JkOgojaWZkZWYgUENJX0JJT1NfREVCVUcKY3MJaW5jbAludW1fcGNpX2Jpb3Nfd3JpdGVfY2ZnX3dvcmQKI2VuZGlmCgljYWxsCXBjaV9iaW9zX3NlbGVjdF9yZWdpc3Rlcgpncwltb3Z3CU9GRlNfREkoJWJwKSwgJWR4CmdzCW1vdncJT0ZGU19DWCglYnApLCAlYXgKCWFuZHcJJDIsICVkeAoJYWRkdwkkMHhjZmMsICVkeAoJb3V0dwklYXgsICVkeAoJam1wCWNsZWFyX2NhcnJ5CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpwY2lfYmlvc193cml0ZV9jZmdfZHdvcmQ6CiNpZmRlZiBQQ0lfQklPU19ERUJVRwpjcwlpbmNsCW51bV9wY2lfYmlvc193cml0ZV9jZmdfZHdvcmQKI2VuZGlmCgljYWxsCXBjaV9iaW9zX3NlbGVjdF9yZWdpc3Rlcgpncwltb3ZsCU9GRlNfRUNYKCVicCksICVlYXgKCW1vdncJJDB4Y2ZjLCAlZHgKCW91dGwJJWVheCwgJWR4CglqbXAJY2xlYXJfY2FycnkKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnBjaV9iaW9zX2dldF9pcnFfcm91dGluZzoKI2lmZGVmIFBDSV9CSU9TX0RFQlVHCmNzCWluY2wJbnVtX3BjaV9iaW9zX2dldF9pcnFfcm91dGluZwojZW5kaWYKCW1vdmIJJDB4ODEsICVhaCAgICAgICAgICAgICAgLyogZnVuY3Rpb24gbm90IHN1cHBvcnRlZCAqLwoJam1wCXNldF9jYXJyeQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcGNpX2Jpb3Nfc2V0X2lycToKI2lmZGVmIFBDSV9CSU9TX0RFQlVHCmNzCWluY2wJbnVtX3BjaV9iaW9zX3NldF9pcnEKI2VuZGlmCgltb3ZiCSQweDgxLCAlYWggICAgICAgICAgICAgIC8qIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgKi8KCWptcAlzZXRfY2FycnkKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnVua25vd25fZnVuY3Rpb246CiNpZmRlZiBQQ0lfQklPU19ERUJVRwpjcwlpbmNsCW51bV9wY2lfYmlvc191bmtub3duX2Z1bmN0aW9uCiNlbmRpZgoJbW92YgkkMHg4MSwgJWFoICAgICAgICAgICAgICAvKiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkICovCglqbXAJc2V0X2NhcnJ5CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgpwY2lfYmlvc19zZWxlY3RfcmVnaXN0ZXI6CmdzCW1vdncJT0ZGU19CWCglYnApLCAlYngKZ3MJbW92dwlPRkZTX0RJKCVicCksICVheAovKiBkZXN0cm95cyBlYXgsIGR4ICovCl9fcGNpX2Jpb3Nfc2VsZWN0X3JlZ2lzdGVyOiAgICAgICAgICAgICAgIC8qIEJYIGhvbGRzIGRldmljZSBpZCwgQVggaG9sZHMgcmVnaXN0ZXIgaW5kZXggKi8KCXB1c2hsCSVlYngKCWFuZGwJJDB4ZmMsICVlYXgKCWFuZGwJJDB4ZmZmZiwgJWVieAoJc2hsbAkkOCwgJWVieAoJb3JsCSVlYngsICVlYXgKCW9ybAkkMHg4MDAwMDAwMCwgJWVheAoJbW92dwkkMHhjZjgsICVkeAoJb3V0bAklZWF4LCAlZHgKCXBvcGwJJWVieAoJcmV0CgoKY2xlYXJfY2Fycnk6CmdzCW1vdncJT0ZGU19GTEFHUyglYnApLCAlYXgKCWFuZHcJJDB4ZmZmZSwgJWF4CQkJLyogY2xlYXIgY2FycnkgLS0gZnVuY3Rpb24gc3VjY2VlZGVkICovCmdzCW1vdncJJWF4LCBPRkZTX0ZMQUdTKCVicCkKCXhvcncJJWF4LCAlYXgKZ3MJbW92YgklYWgsIE9GRlNfQUgoJWJwKQoJcmV0CgpzZXRfY2Fycnk6CmdzCW1vdmIJJWFoLCBPRkZTX0FIKCVicCkKZ3MJbW92dwlPRkZTX0ZMQUdTKCVicCksICVheAoJb3J3CSQxLCAlYXgJCQkJLyogcmV0dXJuIGNhcnJ5IC0tIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgKi8KZ3MJbW92dwklYXgsIE9GRlNfRkxBR1MoJWJwKQoJbW92dwkkLTEsICVheAoJcmV0CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgouZ2xvYmwgcGNpX2xhc3RfYnVzCnBjaV9sYXN0X2J1czoKCS5ieXRlCTAKCiNpZmRlZiBQQ0lfQklPU19ERUJVRwouZ2xvYmwgbnVtX3BjaV9iaW9zX3ByZXNlbnQKbnVtX3BjaV9iaW9zX3ByZXNlbnQ6CgkubG9uZwkwCgouZ2xvYmwgbnVtX3BjaV9iaW9zX2ZpbmRfZGV2aWNlCm51bV9wY2lfYmlvc19maW5kX2RldmljZToKCS5sb25nCTAKCi5nbG9ibCBudW1fcGNpX2Jpb3NfZmluZF9jbGFzcwpudW1fcGNpX2Jpb3NfZmluZF9jbGFzczoKCS5sb25nCTAKCi5nbG9ibCBudW1fcGNpX2Jpb3NfZ2VuZXJhdGVfc3BlY2lhbF9jeWNsZQpudW1fcGNpX2Jpb3NfZ2VuZXJhdGVfc3BlY2lhbF9jeWNsZToKCS5sb25nIDAKCi5nbG9ibCBudW1fcGNpX2Jpb3NfcmVhZF9jZmdfYnl0ZQpudW1fcGNpX2Jpb3NfcmVhZF9jZmdfYnl0ZToKCS5sb25nCTAKCi5nbG9ibCBudW1fcGNpX2Jpb3NfcmVhZF9jZmdfd29yZApudW1fcGNpX2Jpb3NfcmVhZF9jZmdfd29yZDoKCS5sb25nCTAKCi5nbG9ibCBudW1fcGNpX2Jpb3NfcmVhZF9jZmdfZHdvcmQKbnVtX3BjaV9iaW9zX3JlYWRfY2ZnX2R3b3JkOgoJLmxvbmcJMAoKLmdsb2JsIG51bV9wY2lfYmlvc193cml0ZV9jZmdfYnl0ZQpudW1fcGNpX2Jpb3Nfd3JpdGVfY2ZnX2J5dGU6CgkubG9uZwkwCgouZ2xvYmwgbnVtX3BjaV9iaW9zX3dyaXRlX2NmZ193b3JkCm51bV9wY2lfYmlvc193cml0ZV9jZmdfd29yZDoKCS5sb25nCTAKCi5nbG9ibCBudW1fcGNpX2Jpb3Nfd3JpdGVfY2ZnX2R3b3JkCm51bV9wY2lfYmlvc193cml0ZV9jZmdfZHdvcmQ6CgkubG9uZwkwCgouZ2xvYmwgbnVtX3BjaV9iaW9zX2dldF9pcnFfcm91dGluZwpudW1fcGNpX2Jpb3NfZ2V0X2lycV9yb3V0aW5nOgoJLmxvbmcJMAoKLmdsb2JsIG51bV9wY2lfYmlvc19zZXRfaXJxCm51bV9wY2lfYmlvc19zZXRfaXJxOgoJLmxvbmcJMAoKLmdsb2JsIG51bV9wY2lfYmlvc191bmtub3duX2Z1bmN0aW9uCm51bV9wY2lfYmlvc191bmtub3duX2Z1bmN0aW9uOgoJLmxvbmcJMAojZW5kaWYK