LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQ29weXJpZ2h0IChDKSBNYXJ2ZWxsIEludGVybmF0aW9uYWwgTHRkLiBhbmQgaXRzIGFmZmlsaWF0ZXMKClRoaXMgc29mdHdhcmUgZmlsZSAodGhlICJGaWxlIikgaXMgb3duZWQgYW5kIGRpc3RyaWJ1dGVkIGJ5IE1hcnZlbGwgCkludGVybmF0aW9uYWwgTHRkLiBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMgKCJNYXJ2ZWxsIikgdW5kZXIgdGhlIGZvbGxvd2luZwphbHRlcm5hdGl2ZSBsaWNlbnNpbmcgdGVybXMuICBPbmNlIHlvdSBoYXZlIG1hZGUgYW4gZWxlY3Rpb24gdG8gZGlzdHJpYnV0ZSB0aGUKRmlsZSB1bmRlciBvbmUgb2YgdGhlIGZvbGxvd2luZyBsaWNlbnNlIGFsdGVybmF0aXZlcywgcGxlYXNlIChpKSBkZWxldGUgdGhpcwppbnRyb2R1Y3Rvcnkgc3RhdGVtZW50IHJlZ2FyZGluZyBsaWNlbnNlIGFsdGVybmF0aXZlcywgKGlpKSBkZWxldGUgdGhlIHR3bwpsaWNlbnNlIGFsdGVybmF0aXZlcyB0aGF0IHlvdSBoYXZlIG5vdCBlbGVjdGVkIHRvIHVzZSBhbmQgKGlpaSkgcHJlc2VydmUgdGhlCk1hcnZlbGwgY29weXJpZ2h0IG5vdGljZSBhYm92ZS4KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCk1hcnZlbGwgQ29tbWVyY2lhbCBMaWNlbnNlIE9wdGlvbgoKSWYgeW91IHJlY2VpdmVkIHRoaXMgRmlsZSBmcm9tIE1hcnZlbGwgYW5kIHlvdSBoYXZlIGVudGVyZWQgaW50byBhIGNvbW1lcmNpYWwKbGljZW5zZSBhZ3JlZW1lbnQgKGEgIkNvbW1lcmNpYWwgTGljZW5zZSIpIHdpdGggTWFydmVsbCwgdGhlIEZpbGUgaXMgbGljZW5zZWQKdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgYXBwbGljYWJsZSBDb21tZXJjaWFsIExpY2Vuc2UuCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpNYXJ2ZWxsIEdQTCBMaWNlbnNlIE9wdGlvbgoKSWYgeW91IHJlY2VpdmVkIHRoaXMgRmlsZSBmcm9tIE1hcnZlbGwsIHlvdSBtYXkgb3B0IHRvIHVzZSwgcmVkaXN0cmlidXRlIGFuZC9vciAKbW9kaWZ5IHRoaXMgRmlsZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHZW5lcmFsIApQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIsIEp1bmUgMTk5MSAodGhlICJHUEwgTGljZW5zZSIpLCBhIGNvcHkgb2Ygd2hpY2ggaXMgCmF2YWlsYWJsZSBhbG9uZyB3aXRoIHRoZSBGaWxlIGluIHRoZSBsaWNlbnNlLnR4dCBmaWxlIG9yIGJ5IHdyaXRpbmcgdG8gdGhlIEZyZWUgClNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgb3IgCm9uIHRoZSB3b3JsZHdpZGUgd2ViIGF0IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwudHh0LiAKClRIRSBGSUxFIElTIERJU1RSSUJVVEVEIEFTLUlTLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBBTkQgVEhFIElNUExJRUQgCldBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBFWFBSRVNTTFkgCkRJU0NMQUlNRUQuICBUaGUgR1BMIExpY2Vuc2UgcHJvdmlkZXMgYWRkaXRpb25hbCBkZXRhaWxzIGFib3V0IHRoaXMgd2FycmFudHkgCmRpc2NsYWltZXIuCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCk1hcnZlbGwgQlNEIExpY2Vuc2UgT3B0aW9uCgpJZiB5b3UgcmVjZWl2ZWQgdGhpcyBGaWxlIGZyb20gTWFydmVsbCwgeW91IG1heSBvcHQgdG8gdXNlLCByZWRpc3RyaWJ1dGUgYW5kL29yIAptb2RpZnkgdGhpcyBGaWxlIHVuZGVyIHRoZSBmb2xsb3dpbmcgbGljZW5zaW5nIHRlcm1zLiAKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgCmFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiAgICAqICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAoJICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAoKICAgICogICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKCiAgICAqICAgTmVpdGhlciB0aGUgbmFtZSBvZiBNYXJ2ZWxsIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgCiAgICAgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCAKICAgICAgICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAogICAgClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgCkFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIApXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIApESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIApBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgCihJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCkxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiAKQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIApTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZuZGVmIF9fSU5DUENJUkVHU0gKI2RlZmluZSBfX0lOQ1BDSVJFR1NICgojaW5jbHVkZSAibXZTeXNQY2lDb25maWcuaCIKCi8qIGRlZmluZXMgKi8KI2RlZmluZSBNQVhfUENJX0RFVklDRVMJCQkJMzIKI2RlZmluZSBNQVhfUENJX0ZVTkNTICAgICAgICAgICAJCTgKI2RlZmluZSBNQVhfUENJX0JVU1NFUyAgICAgICAgICAJCTEyOAoKLyoqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFBDSSBjb250cm9sIHJlZ2lzdGVycyAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogbWFlbiA6IHNob3VsZCBhZGQgbmV3IHJlZ2lzdGVycyAqLwojZGVmaW5lIFBDSV9DTURfUkVHKHBjaUlmKQkJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MGMwMCAgKyAoKHBjaUlmKSAqIDB4ODApKQojZGVmaW5lIFBDSV9NT0RFX1JFRyhwY2lJZikJCQkoTVZfUENJX0lGX1JFR1NfQkFTRShwY2lJZikgKyAweDBkMDAgICsgKChwY2lJZikgKiAweDgwKSkKI2RlZmluZSBQQ0lfUkVUUllfUkVHKHBjaUlmKQkJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MGMwNCAgKyAoKHBjaUlmKSAqIDB4ODApKQojZGVmaW5lIFBDSV9ESVNDQVJEX1RJTUVSX1JFRyhwY2lJZikJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MGQwNCAgKyAoKHBjaUlmKSAqIDB4ODApKQojZGVmaW5lIFBDSV9BUkJJVEVSX0NUUkxfUkVHKHBjaUlmKQkJKE1WX1BDSV9JRl9SRUdTX0JBU0UocGNpSWYpICsgMHgxZDAwICsgKChwY2lJZikgKiAweDgwKSkKI2RlZmluZSBQQ0lfUDJQX0NPTkZJR19SRUcocGNpSWYpCQkoTVZfUENJX0lGX1JFR1NfQkFTRShwY2lJZikgKyAweDFkMTQgKyAoKHBjaUlmKSAqIDB4ODApKQojZGVmaW5lIFBDSV9BQ0NFU1NfQ1RSTF9CQVNFTF9SRUcocGNpSWYsIHRhcmdldFdpbikgXAoJCQkJCQkoTVZfUENJX0lGX1JFR1NfQkFTRShwY2lJZikgKyAweDFlMDAgKyAoKHBjaUlmKSAqIDB4ODApICsgKCh0YXJnZXRXaW4pICogMHgxMCkpCiNkZWZpbmUgUENJX0FDQ0VTU19DVFJMX0JBU0VIX1JFRyhwY2lJZiwgdGFyZ2V0V2luKSBcCgkJCQkJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MWUwNCArICgocGNpSWYpICogMHg4MCkgKyAoKHRhcmdldFdpbikgKiAweDEwKSkKI2RlZmluZSBQQ0lfQUNDRVNTX0NUUkxfU0laRV9SRUcocGNpSWYsIHRhcmdldFdpbikgXAoJCQkJCQkoTVZfUENJX0lGX1JFR1NfQkFTRShwY2lJZikgKyAweDFlMDggKyAoKHBjaUlmKSAqIDB4ODApICsgKCh0YXJnZXRXaW4pICogMHgxMCkpCgkJCQkJCQkKI2RlZmluZSBQQ0lfRExMX0NUUkxfUkVHKHBjaUlmKQkgICAJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MWQyMCAgKyAoKHBjaUlmKSAqIDB4ODApKQoKLyogUENJIERsbCBDb250cm9sIChQREMpKi8KI2RlZmluZSBQRENfRExMX0VOCQkJCUJJVDAKCi8qIFBDSSBDb21tYW5kIFJlZ2lzdGVyIChQQ1IpICovCiNkZWZpbmUgUENSX01BU1RFUl9CWVRFX1NXQVBfRU4JCQlCSVQwCiNkZWZpbmUgUENSX01BU1RFUl9XUl9DT01CSU5FX0VOCQlCSVQ0CiNkZWZpbmUgUENSX01BU1RFUl9SRF9DT01CSU5FX0VOCQlCSVQ1CiNkZWZpbmUgUENSX01BU1RFUl9XUl9UUklHX1dIT0xFCQlCSVQ2CiNkZWZpbmUgUENSX01BU1RFUl9SRF9UUklHX1dIT0xFICAgIAkJQklUNwojZGVmaW5lIFBDUl9NQVNURVJfTUVNX1JEX0xJTkVfRU4gICAJCUJJVDgKI2RlZmluZSBQQ1JfTUFTVEVSX01FTV9SRF9NVUxUX0VOICAgCQlCSVQ5CiNkZWZpbmUgUENSX01BU1RFUl9XT1JEX1NXQVBfRU4gICAgIAkJQklUMTAKI2RlZmluZSBQQ1JfU0xBVkVfV09SRF9TV0FQX0VOICAgICAgCQlCSVQxMQojZGVmaW5lIFBDUl9OU19BQ0NPUkRJTkdfUkNWX1RSQU5TICAJCUJJVDE0CiNkZWZpbmUgUENSX01BU1RFUl9QQ0lYX1JFUTY0Tl9FTiAgIAkJQklUMTUKI2RlZmluZSBQQ1JfU0xBVkVfQllURV9TV0FQX0VOICAgICAgCQlCSVQxNgojZGVmaW5lIFBDUl9NQVNURVJfREFDX0VOICAgICAgICAgICAJCUJJVDE3CiNkZWZpbmUgUENSX01BU1RFUl9NNjRfQUxMSUdOICAgICAgIAkJQklUMTgKI2RlZmluZSBQQ1JfRVJST1JTX1BST1BBR0FUSU9OX0VOICAgCQlCSVQxOQojZGVmaW5lIFBDUl9TTEFWRV9TV0FQX0VOQUJMRSAgICAgICAJCUJJVDIwCiNkZWZpbmUgUENSX01BU1RFUl9TV0FQX0VOQUJMRSAgICAgIAkJQklUMjEKI2RlZmluZSBQQ1JfTUFTVEVSX0lOVF9TV0FQX0VOICAgICAgCQlCSVQyMgojZGVmaW5lIFBDUl9MT09QX0JBQ0tfRU5BQkxFICAgICAgICAJCUJJVDIzCiNkZWZpbmUgUENSX1NMQVZFX0lOVFJFR19TV0FQX09GRlMgIAkJMjQKI2RlZmluZSBQQ1JfU0xBVkVfSU5UUkVHX1NXQVBfTUFTSyAgCQkweDMKI2RlZmluZSBQQ1JfU0xBVkVfSU5UUkVHX0JZVEVfU1dBUCAJCShNVl9CWVRFX1NXQVAgPDwgUENSX1NMQVZFX0lOVF9SRUdfU1dBUF9NQVNLKQojZGVmaW5lIFBDUl9TTEFWRV9JTlRSRUdfTk9fU1dBUAkJKE1WX05PX1NXQVAgICA8PCBQQ1JfU0xBVkVfSU5UX1JFR19TV0FQX01BU0spCiNkZWZpbmUgUENSX1NMQVZFX0lOVFJFR19CWVRFX1dPUkQJCShNVl9CWVRFX1dPUkRfU1dBUCA8PCBQQ1JfU0xBVkVfSU5UX1JFR19TV0FQX01BU0spCiNkZWZpbmUgUENSX1NMQVZFX0lOVFJFR19XT1JEX1NXQVAJCShNVl9XT1JEX1NXQVAgPDwgUENSX1NMQVZFX0lOVF9SRUdfU1dBUF9NQVNLKQojZGVmaW5lIFBDUl9SRVNFVF9SRUFTU0VSVElPTl9FTiAgICAJCUJJVDI2CiNkZWZpbmUgUENSX1BDSV9UT19DUFVfUkVHX09SREVSX0VOIAkJQklUMjgKI2RlZmluZSBQQ1JfQ1BVX1RPX1BDSV9PUkRFUl9FTiAgICAgCQlCSVQyOQojZGVmaW5lIFBDUl9QQ0lfVE9fQ1BVX09SREVSX0VOICAgICAJCUJJVDMwCgovKiBQQ0kgTW9kZSBSZWdpc3RlciAoUE1SKSAqLwojZGVmaW5lIFBNUl9QQ0lfSURfT0ZGUyAJCQkwICAvKiBQQ0kgSW50ZXJmYWNlIElEICovCiNkZWZpbmUgUE1SX1BDSV9JRF9NQVNLIAkJCSgweDEgPDwgUE1SX1BDSV9JRF9PRkZTKQojZGVmaW5lIFBNUl9QQ0lfSURfUENJKHBjaU51bSkgCQkJKChwY2lOdW0pIDw8IFBDSV9NT0RFX1BDSUlEX09GRlMpCgojZGVmaW5lIFBNUl9QQ0lfNjRfT0ZGUwkJCQkyIC8qIDY0LWJpdCBQQ0kgSW50ZXJmYWNlICovCiNkZWZpbmUgUE1SX1BDSV82NF9NQVNLCQkJCSgweDEgPDwgUE1SX1BDSV82NF9PRkZTKQojZGVmaW5lIFBNUl9QQ0lfNjRfNjRCSVQJCQkoMHgxIDw8IFBNUl9QQ0lfNjRfT0ZGUykKI2RlZmluZSBQTVJfUENJXzY0XzMyQklUCQkJKDB4MCA8PCBQTVJfUENJXzY0X09GRlMpCgojZGVmaW5lIFBNUl9QQ0lfTU9ERV9PRkZTCQkJNCAvKiBQQ0kgaW50ZXJmYWNlIG1vZGUgb2Ygb3BlcmF0aW9uICovCiNkZWZpbmUgUE1SX1BDSV9NT0RFX01BU0sJCQkoMHgzIDw8IFBNUl9QQ0lfTU9ERV9PRkZTKQojZGVmaW5lIFBNUl9QQ0lfTU9ERV9DT05WCQkJKDB4MCA8PCBQTVJfUENJX01PREVfT0ZGUykKI2RlZmluZSBQTVJfUENJX01PREVfUENJWF82Nk1IWgkJCSgweDEgPDwgUE1SX1BDSV9NT0RFX09GRlMpCiNkZWZpbmUgUE1SX1BDSV9NT0RFX1BDSVhfMTAwTUhaCQkoMHgyIDw8IFBNUl9QQ0lfTU9ERV9PRkZTKQojZGVmaW5lIFBNUl9QQ0lfTU9ERV9QQ0lYXzEzM01IWgkJKDB4MyA8PCBQTVJfUENJX01PREVfT0ZGUykKCiNkZWZpbmUgUE1SX0VYUF9ST01fU1VQUE9SVAkJCUJJVDggLyogRXhwYW5zaW9uIFJPTSBBY3RpdmUgKi8KCiNkZWZpbmUgUE1SX1BDSV9SRVNFVF9PRkZTCQkJMzEgLyogUENJIEludGVyZmFjZSBSZXNldCBJbmRpY2F0aW9uICovCiNkZWZpbmUgUE1SX1BDSV9SRVNFVF9NQVNLCQkJKDB4MSA8PCBQTVJfUENJX1JFU0VUX09GRlMpCiNkZWZpbmUgUE1SX1BDSV9SRVNFVF9QQ0lYUlNUCQkJKDB4MCA8PCBQTVJfUENJX1JFU0VUX09GRlMpCgoKLyogUENJIFJldHJ5IFJlZ2lzdGVyIChQUlIpICovCiNkZWZpbmUgUFJSX1JFVFJZX0NOVFJfT0ZGUwkJCTE2IC8qIFJldHJ5IENvdW50ZXIgKi8KI2RlZmluZSBQUlJfUkVUUllfQ05UUl9NQVgJCQkweGZmCiNkZWZpbmUgUFJSX1JFVFJZX0NOVFJfTUFTSwkJCShQUlJfUkVUUllfQ05UUl9NQVggPDwgUFJSX1JFVFJZX0NOVFJfT0ZGUykKCgovKiBQQ0kgRGlzY2FyZCBUaW1lciBSZWdpc3RlciAoUERUUikgKi8KI2RlZmluZSBQRFRSX1RJTUVSX09GRlMJCQkJMCAvKiBUaW1lciAqLwojZGVmaW5lIFBEVFJfVElNRVJfTUFYCQkJCTB4ZmZmZgojZGVmaW5lIFBEVFJfVElNRVJfTUlOCQkJCTB4N0YKI2RlZmluZSBQRFRSX1RJTUVSX01BU0sJCQkJKFBEVFJfVElNRVJfTUFYIDw8IFBEVFJfVElNRVJfT0ZGUykKCgovKiBQQ0kgQXJiaXRlciBDb250cm9sIFJlZ2lzdGVyIChQQUNSKSAqLwojZGVmaW5lIFBBQ1JfQlJPS0VOX0RFVEVDVF9FTgkJCUJJVDEgLyogQnJva2VuIERldGVjdGlvbiBFbmFibGUgKi8KCiNkZWZpbmUgUEFDUl9CUk9LRU5fVkFMX09GRlMJCQkzIC8qIEJyb2tlbiBWYWx1ZSAqLwojZGVmaW5lIFBBQ1JfQlJPS0VOX1ZBTF9NQVNLCQkJKDB4ZiA8PCBQQUNSX0JST0tFTl9WQUxfT0ZGUykKI2RlZmluZSBQQUNSX0JST0tFTl9WQUxfQ09OVl9NSU4JCTB4MgojZGVmaW5lIFBBQ1JfQlJPS0VOX1ZBTF9QQ0lYX01JTgkJMHg2CgojZGVmaW5lIFBBQ1JfUEFSS19ESVNfT0ZGUwkJCTE0IC8qIFBhcmtpbmcgRGlzYWJsZSAqLwojZGVmaW5lIFBBQ1JfUEFSS19ESVNfTUFYX0FHRU5UCQkJMHgzZgojZGVmaW5lIFBBQ1JfUEFSS19ESVNfTUFTSwkJCShQQUNSX1BBUktfRElTX01BWF9BR0VOVDw8UEFDUl9QQVJLX0RJU19PRkZTKQojZGVmaW5lIFBBQ1JfUEFSS19ESVMoYWdlbnQpCQkJKCgxIDw8IChhZ2VudCkpIDw8IFBBQ1JfUEFSS19ESVNfT0ZGUykKCiNkZWZpbmUgUEFDUl9BUkJfRU5BQkxFCQkJCUJJVDMxIC8qIEVuYWJsZSBJbnRlcm5hbCBBcmJpdGVyICovCgoKLyogUENJIFAyUCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIChQUENSKSAqLwojZGVmaW5lIFBQQ1JfMk5EX0JVU19MX09GRlMJCQkwCS8qIDJuZCBQQ0kgSW50ZXJmYWNlIEJ1cyBSYW5nZSBMb3dlciAqLwojZGVmaW5lIFBQQ1JfMk5EX0JVU19MX01BU0sJCQkoMHhmZiA8PCBQUENSXzJORF9CVVNfTF9PRkZTKQoKI2RlZmluZSBQUENSXzJORF9CVVNfSF9PRkZTCQkJOAkvKiAybmQgUENJIEludGVyZmFjZSBCdXMgUmFuZ2UgVXBwZXIgKi8KI2RlZmluZSBQUENSXzJORF9CVVNfSF9NQVNLCQkJKDB4ZmYgPDwgUFBDUl8yTkRfQlVTX0hfT0ZGUykKCiNkZWZpbmUgUFBDUl9CVVNfTlVNX09GRlMJCQkxNiAgLyogVGhlIFBDSSBpbnRlcmZhY2UncyBCdXMgbnVtYmVyICovCiNkZWZpbmUgUFBDUl9CVVNfTlVNX01BU0sJCQkoMHhmZiA8PCBQUENSX0JVU19OVU1fT0ZGUykKCiNkZWZpbmUgUFBDUl9ERVZfTlVNX09GRlMJCQkyNCAgLyogVGhlIFBDSSBpbnRlcmZhY2WScyBEZXZpY2UgbnVtYmVyICovCiNkZWZpbmUgUFBDUl9ERVZfTlVNX01BU0sJCQkoMHhmZiA8PCBQUENSX0RFVl9OVU1fT0ZGUykKCgovKiBQQ0kgQWNjZXNzIENvbnRyb2wgQmFzZSBMb3cgUmVnaXN0ZXIgKFBBQ0JMUikgKi8KI2RlZmluZSBQQUNCTFJfRU4JCQkJQklUMCAvKiBBY2Nlc3MgY29udHJvbCB3aW5kb3cgZW5hYmxlICovCiNkZWZpbmUgUEFDQkxSX1NOT09QCQkJCUJJVDIgLyogSS9PIENhY2hlIENvaGVybmN5ICovCiNkZWZpbmUgUEFDQkxSX1NOT09QX09GRlMJCQkyCiNkZWZpbmUgUEFDQkxSX0FDQ1BST1QJCQkJQklUNCAvKiBBY2Nlc3MgUHJvdGVjdCAqLwojZGVmaW5lIFBBQ0JMUl9XUlBST1QJCQkJQklUNSAvKiBXcml0ZSBQcm90ZWN0ICovCgojZGVmaW5lIFBBQ0JMUl9QQ0lTV0FQX09GRlMJCQk2IC8qIFBDSSBzbGF2ZSBEYXRhIFN3YXAgQ29udHJvbCAqLwojZGVmaW5lIFBBQ0JMUl9QQ0lTV0FQX01BU0sJCQkoMHgzIDw8IFBBQ0JMUl9QQ0lTV0FQX09GRlMpCiNkZWZpbmUgUEFDQkxSX1BDSVNXQVBfQllURQkJCSgweDAgPDwgUEFDQkxSX1BDSVNXQVBfT0ZGUykKI2RlZmluZSBQQUNCTFJfUENJU1dBUF9OT19TV0FQCQkJKDB4MSA8PCBQQUNCTFJfUENJU1dBUF9PRkZTKQojZGVmaW5lIFBBQ0JMUl9QQ0lTV0FQX0JZVEVfV09SRAkJKDB4MiA8PCBQQUNCTFJfUENJU1dBUF9PRkZTKQojZGVmaW5lIFBBQ0JMUl9QQ0lTV0FQX1dPUkQJCQkoMHgzIDw8IFBBQ0JMUl9QQ0lTV0FQX09GRlMpCgojZGVmaW5lIFBBQ0JMUl9SRE1CVVJTVF9PRkZTCQkJOCAvKiBSZWFkIE1heCBCdXJzdCAqLwojZGVmaW5lIFBBQ0JMUl9SRE1CVVJTVF9NQVNLCQkJKDB4MyA8PCBQQUNCTFJfUkRNQlVSU1RfT0ZGUykKI2RlZmluZSBQQUNCTFJfUkRNQlVSU1RfMzJCWVRFCQkJKDB4MCA8PCBQQUNCTFJfUkRNQlVSU1RfT0ZGUykKI2RlZmluZSBQQUNCTFJfUkRNQlVSU1RfNjRCWVRFCQkJKDB4MSA8PCBQQUNCTFJfUkRNQlVSU1RfT0ZGUykKI2RlZmluZSBQQUNCTFJfUkRNQlVSU1RfMTI4QllURQkJCSgweDIgPDwgUEFDQkxSX1JETUJVUlNUX09GRlMpCgojZGVmaW5lIFBBQ0JMUl9SRFNJWkVfT0ZGUwkJCTEwIC8qIFR5cGljYWwgUENJIHJlYWQgdHJhbnNhY3Rpb24gU2l6ZS4gKi8KI2RlZmluZSBQQUNCTFJfUkRTSVpFX01BU0sJCQkoMHgzIDw8IFBBQ0JMUl9SRFNJWkVfT0ZGUykKI2RlZmluZSBQQUNCTFJfUkRTSVpFXzMyQllURQkJCSgweDAgPDwgUEFDQkxSX1JEU0laRV9PRkZTKQojZGVmaW5lIFBBQ0JMUl9SRFNJWkVfNjRCWVRFCQkJKDB4MSA8PCBQQUNCTFJfUkRTSVpFX09GRlMpCiNkZWZpbmUgUEFDQkxSX1JEU0laRV8xMjhCWVRFCQkJKDB4MiA8PCBQQUNCTFJfUkRTSVpFX09GRlMpCiNkZWZpbmUgUEFDQkxSX1JEU0laRV8yNTZCWVRFCQkJKDB4MyA8PCBQQUNCTFJfUkRTSVpFX09GRlMpCgojZGVmaW5lIFBBQ0JMUl9CQVNFX0xfT0ZGUwkJCTEyIC8qIENvcnJlc3BvbmRzIHRvIGFkZHJlc3MgYml0cyBbMzE6MTJdICovCiNkZWZpbmUgUEFDQkxSX0JBU0VfTF9NQVNLCQkJKDB4ZmZmZmYgPDwgUEFDQkxSX0JBU0VfTF9PRkZTKQojZGVmaW5lIFBBQ0JMUl9CQVNFX0xfQUxJR05NRU5UCQkJKDEgPDwgUEFDQkxSX0JBU0VfTF9PRkZTKQojZGVmaW5lIFBBQ0JMUl9CQVNFX0FMSUdOX1VQKGJhc2UpCQkoKGJhc2UrUEFDQkxSX0JBU0VfTF9BTElHTk1FTlQpJlBBQ0JMUl9CQVNFX0xfTUFTSykKI2RlZmluZSBQQUNCTFJfQkFTRV9BTElHTl9ET1dOKGJhc2UpICAJCShiYXNlICYgUEFDQkxSX0JBU0VfTF9NQVNLKQoKLyogUENJIEFjY2VzcyBDb250cm9sIEJhc2UgSGlnaCBSZWdpc3RlciAoUEFDQkhSKSAqLwojZGVmaW5lIFBBQ0JIUl9CQVNFX0hfT0ZGUwkJCTAgLyogQ29ycmVzcG9uZHMgdG8gYWRkcmVzcyBiaXRzIFs2MzozMl0gKi8KI2RlZmluZSBQQUNCSFJfQ1RSTF9CQVNFX0hfTUFTSwkJCSgweGZmZmZmZmZmIDw8IFBBQ0JIUl9CQVNFX0hfT0ZGUykKCi8qIFBDSSBBY2Nlc3MgQ29udHJvbCBTaXplIFJlZ2lzdGVyIChQQUNTUikgKi8KI2RlZmluZSBQQUNTUl9XUk1CVVJTVF9PRkZTCQkJOCAvKiBXcml0ZSBNYXggQnVyc3QgKi8KI2RlZmluZSBQQUNTUl9XUk1CVVJTVF9NQVNLCQkJKDB4MyA8PCBQQUNTUl9XUk1CVVJTVF9PRkZTKQojZGVmaW5lIFBBQ1NSX1dSTUJVUlNUXzMyQllURQkJCSgweDAgPDwgUEFDU1JfV1JNQlVSU1RfT0ZGUykKI2RlZmluZSBQQUNTUl9XUk1CVVJTVF82NEJZVEUJCQkoMHgxIDw8IFBBQ1NSX1dSTUJVUlNUX09GRlMpCiNkZWZpbmUgUEFDU1JfV1JNQlVSU1RfMTI4QllURQkJCSgweDIgPDwgUEFDU1JfV1JNQlVSU1RfT0ZGUykKCiNkZWZpbmUgUEFDU1JfUENJX09SREVSSU5HCQkJQklUMTEgLyogUENJIE9yZGVyaW5nIHJlcXVpcmVkICovCgojZGVmaW5lIFBBQ1NSX1NJWkVfT0ZGUwkJCQkxMiAvKiBQQ0kgYWNjZXNzIHdpbmRvdyBzaXplICovCiNkZWZpbmUgUEFDU1JfU0laRV9NQVNLCQkJCSgweGZmZmZmIDw8IFBBQ1NSX1NJWkVfT0ZGUykKI2RlZmluZSBQQUNTUl9TSVpFX0FMSUdOTUVOVAkJCSgxIDw8IFBBQ1NSX1NJWkVfT0ZGUykKI2RlZmluZSBQQUNTUl9TSVpFX0FMSUdOX1VQKHNpemUpCQkoKHNpemUrUEFDU1JfU0laRV9BTElHTk1FTlQpJlBBQ1NSX1NJWkVfTUFTSykKI2RlZmluZSBQQUNTUl9TSVpFX0FMSUdOX0RPV04oc2l6ZSkgCQkoc2l6ZSAmIFBBQ1NSX1NJWkVfTUFTSykKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBQQ0kgQ29uZmlndXJhdGlvbiBBY2Nlc3MgUmVnaXN0ZXJzICAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2RlZmluZSBQQ0lfQ09ORklHX0FERFJfUkVHKHBjaUlmKQkJKE1WX1BDSV9JRl9SRUdTX0JBU0UocGNpSWYpICsgMHgwQzc4IC0gKChwY2lJZikgKiAweDgwKSApCiNkZWZpbmUgUENJX0NPTkZJR19EQVRBX1JFRyhwY2lJZikJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MEM3QyAtICgocGNpSWYpICogMHg4MCkgKQojZGVmaW5lIFBDSV9JTlRfQUNLX1JFRyhwY2lJZikJCQkoTVZfUENJX0lGX1JFR1NfQkFTRShwY2lJZikgKyAweDBDMzQgKyAoKHBjaUlmKSAqIDB4ODApICkKCi8qIFBDSSBDb25maWd1cmF0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgKFBDQVIpICovCiNkZWZpbmUgUENBUl9SRUdfTlVNX09GRlMJCQkyCiNkZWZpbmUgUENBUl9SRUdfTlVNX01BU0sJCQkoMHgzRiA8PCBQQ0FSX1JFR19OVU1fT0ZGUykKI2RlZmluZSBQQ0FSX0ZVTkNfTlVNX09GRlMJCQk4CiNkZWZpbmUgUENBUl9GVU5DX05VTV9NQVNLCQkJKDB4NyA8PCBQQ0FSX0ZVTkNfTlVNX09GRlMpCiNkZWZpbmUgUENBUl9ERVZJQ0VfTlVNX09GRlMJCQkxMQojZGVmaW5lIFBDQVJfREVWSUNFX05VTV9NQVNLCQkJKDB4MUYgPDwgUENBUl9ERVZJQ0VfTlVNX09GRlMpCiNkZWZpbmUgUENBUl9CVVNfTlVNX09GRlMJCQkxNgojZGVmaW5lIFBDQVJfQlVTX05VTV9NQVNLCQkJKDB4RkYgPDwgUENBUl9CVVNfTlVNX09GRlMpCiNkZWZpbmUgUENBUl9DT05GSUdfRU4JCQkJQklUMzEKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFBDSSBDb25maWd1cmF0aW9uLCBGdW5jdGlvbiAwLCBSZWdpc3RlcnMgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojZGVmaW5lIFBDSV9ERVZJQ0VfQU5EX1ZFTkRPUl9JRAkJMHgwMDAKI2RlZmluZSBQQ0lfU1RBVFVTX0FORF9DT01NQU5ECQkJMHgwMDQKI2RlZmluZSBQQ0lfQ0xBU1NfQ09ERV9BTkRfUkVWSVNJT05fSUQJCTB4MDA4CiNkZWZpbmUgUENJX0JJU1RfSERSX1RZUEVfTEFUX1RNUl9DQUNIRV9MSU5FCTB4MDBDCi8qICNkZWZpbmUgUENJX01FTU9SWV9CQVJfQkFTRV9BRERSKGJhck51bSkJKDB4MDEwICsgKChiYXJOdW0pIDw8IDIpKSAqLwojZGVmaW5lIFBDSV9TQ1MwX0JBU0VfQUREUl9MT1cJCQkweDAxMAojZGVmaW5lIFBDSV9TQ1MwX0JBU0VfQUREUl9ISUdICQkJMHgwMTQKI2RlZmluZSBQQ0lfU0NTMV9CQVNFX0FERFJfTE9XCQkgIAkweDAxOAojZGVmaW5lIFBDSV9TQ1MxX0JBU0VfQUREUl9ISUdICQkJMHgwMUMKI2RlZmluZSBQQ0lfSU5URVJfUkVHX01FTV9NQVBQRURfQkFTRV9BRERSX0wgCTB4MDIwCiNkZWZpbmUgUENJX0lOVEVSX1JFR19NRU1fTUFQUEVEX0JBU0VfQUREUl9ICTB4MDI0CiNkZWZpbmUgUENJX1NVQlNZU19JRF9BTkRfU1VCU1lTX1ZFTkRPUl9JRAkweDAyQwojZGVmaW5lIFBDSV9FWFBBTlNJT05fUk9NX0JBU0VfQUREUl9SRUcJCTB4MDMwCiNkZWZpbmUgUENJX0NBUEFCSUxUWV9MSVNUX1BPSU5URVIJCTB4MDM0CiNkZWZpbmUgUENJX0lOVEVSUlVQVF9QSU5fQU5EX0xJTkUJCTB4MDNDCgovKiBjYXBhYmlsaXR5IGxpc3QgKi8KI2RlZmluZSBQQ0lfUE9XRVJfTU5HX0NBUEFCSUxJVFkJCTB4MDQwCiNkZWZpbmUgUENJX1BPV0VSX01OR19TVEFUVVNfQ09OVFJPTAkJMHgwNDQKI2RlZmluZSBQQ0lfVlBEX0FERFJFU1NfUkVHCSAgICAgICAgICAgICAgICAweDA0OAojZGVmaW5lIFBDSV9WUERfREFUQV9SRUcJICAgICAgICAgICAgICAgIDB4MDRjCiNkZWZpbmUgUENJX01TSV9NRVNTQUdFX0NPTlRST0wJCQkweDA1MAojZGVmaW5lIFBDSV9NU0lfTUVTU0FHRV9BRERSCQkgICAgICAgIDB4MDU0CiNkZWZpbmUgUENJX01TSV9NRVNTQUdFX1VQUEVSX0FERFIJCTB4MDU4CiNkZWZpbmUgUENJX01TSV9NRVNTQUdFX0RBVEEJCSAgICAgICAgMHgwNWMKI2RlZmluZSBQQ0lYX0NPTU1BTkQJCSAgICAgICAgICAgICAgICAweDA2MAojZGVmaW5lIFBDSVhfU1RBVFVTCQkgICAgICAgICAgICAgICAgMHgwNjQKI2RlZmluZSBQQ0lfQ09NUEFDVF9QQ0lfSE9UX1NXQVAJCTB4MDY4CgovKiBQQ0kgRGV2aWNlIGFuZCBWZW5kb3IgSUQgUmVnaXN0ZXIgKFBEVklSKSAqLwojZGVmaW5lIFBEVklSX1ZFTl9JRF9PRkZTCQkJMCAvKiBWZW5kb3IgSUQgKi8KI2RlZmluZSBQRFZJUl9WRU5fSURfTUFTSwkJCSgweGZmZmYgPDwgUERWSVJfVkVOX0lEX09GRlMpCgojZGVmaW5lIFBEVklSX0RFVl9JRF9PRkZTCQkJMTYgLyogRGV2aWNlIElEICovCiNkZWZpbmUgUERWSVJfREVWX0lEX01BU0sgIAkJCSgweGZmZmYgPDwgUERWSVJfREVWX0lEX09GRlMpCgovKiBQQ0kgU3RhdHVzIGFuZCBDb21tYW5kIFJlZ2lzdGVyIChQU0NSKSAqLwojZGVmaW5lIFBTQ1JfSU9fRU4JCQkJQklUMCAJLyogSU8gRW5hYmxlIAkJCQkqLwojZGVmaW5lIFBTQ1JfTUVNX0VOCQkJCUJJVDEJLyogTWVtb3J5IEVuYWJsZSAJCQkqLwojZGVmaW5lIFBTQ1JfTUFTVEVSX0VOCQkJCUJJVDIJLyogTWFzdGVyIEVuYWJsZSAJCQkqLwojZGVmaW5lIFBTQ1JfU1BFQ0lBTF9FTgkJCQlCSVQzCS8qIFNwZWNpYWwgQ3ljbGUgRW5hYmxlIAkJKi8KI2RlZmluZSBQU0NSX01FTV9XUklfSU5WCQkJQklUNAkvKiBNZW1vcnkgV3JpdGUgYW5kIEludmFsaWRhdGUgRW5hYmxlCSovCiNkZWZpbmUgUFNDUl9WR0EJCQkJQklUNQkvKiBWR0EgUGFsZXR0ZSBTbm9vcHMgCQkJKi8KI2RlZmluZSBQU0NSX1BFUlJfRU4JCQkJQklUNgkvKiBQYXJpdHkgRXJyb3JzIFJlc3BvbmQgRW5hYmxlIAkqLwojZGVmaW5lIFBTQ1JfQUREUl9TVEVQICAgCQkJQklUNyAgICAvKiBBZGRyZXNzIFN0ZXBwaW5nIEVuYWJsZSAoV2FpdCBDeWNsZSBFbikqLwojZGVmaW5lIFBTQ1JfU0VSUl9FTgkJCQlCSVQ4CS8qIEFiaWxpdHkgdG8gYXNzZXJ0IFNFUlIjIGxpbmUJCSovCiNkZWZpbmUgUFNDUl9GQVNUX0JUQl9FTgkJCUJJVDkJLyogZ2VuZXJhdGUgZmFzdCBiYWNrLXRvLWJhY2sgdHJhbnNhY3Rpb25zKi8KI2RlZmluZSBQU0NSX0NBUF9MSVNUCQkJCUJJVDIwCS8qIENhcGFiaWxpdHkgTGlzdCBTdXBwb3J0IAkJKi8KI2RlZmluZSBQU0NSXzY2TUhaX0VOCQkJCUJJVDIxICAgLyogNjYgTUh6IENhcGFibGUgCQkJKi8KI2RlZmluZSBQU0NSX1VERl9FTgkJCQlCSVQyMiAgIC8qIFVzZXIgZGVmaW5hYmxlIGZlYXR1cmVzIAkJKi8KI2RlZmluZSBQU0NSX1RBUl9GQVNUX0JCIAkJCUJJVDIzICAgLyogZmFzdCBiYWNrLXRvLWJhY2sgdHJhbnNhY3Rpb25zIGNhcGFibGUgKi8KI2RlZmluZSBQU0NSX0RBVEFfUEVSUgkJCQlCSVQyNCAgIC8qIERhdGEgUGFyaXR5IHJlcG9ydGVkIAkJKi8KCiNkZWZpbmUgUFNDUl9ERVZTRUxfVElNX09GRlMgCQkJMjUgIC8qIERFVlNFTCB0aW1pbmcgKi8KI2RlZmluZSBQU0NSX0RFVlNFTF9USU1fTUFTSyAJCQkoMHgzIDw8IFBTQ1JfREVWU0VMX1RJTV9PRkZTKQojZGVmaW5lIFBTQ1JfREVWU0VMX1RJTV9GQVNUCQkJKDB4MCA8PCBQU0NSX0RFVlNFTF9USU1fT0ZGUykKI2RlZmluZSBQU0NSX0RFVlNFTF9USU1fTUVEIAkJCSgweDEgPDwgUFNDUl9ERVZTRUxfVElNX09GRlMpCiNkZWZpbmUgUFNDUl9ERVZTRUxfVElNX1NMT1cgCQkJKDB4MiA8PCBQU0NSX0RFVlNFTF9USU1fT0ZGUykKCiNkZWZpbmUgUFNDUl9TTEFWRV9UQUJPUlQJCQlCSVQyNwkvKiBTaWduYWxsZWQgVGFyZ2V0IEFib3J0IAkqLwojZGVmaW5lIFBTQ1JfTUFTVEVSX1RBQk9SVAkJCUJJVDI4CS8qIFJlY2lldmVkIFRhcmdldCBBYm9ydCAJKi8KI2RlZmluZSBQU0NSX01BQk9SVAkJCQlCSVQyOQkvKiBSZWNpZXZlZCBNYXN0ZXIgQWJvcnQgCSovCiNkZWZpbmUgUFNDUl9TWVNFUlIJCQkJQklUMzAJLyogU2lnbmFsbGVkIHN5c3RlbSBlcnJvciAJKi8KI2RlZmluZSBQU0NSX0RFVF9QQVJFUlIJCQkJQklUMzEJLyogRGV0ZWN0IFBhcml0eSBFcnJvciAJCSovCgovKiAJUENJIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgb2Zmc2V0PTB4MDggZmllbGRzIChQQ0lfQ0xBU1NfQ09ERV9BTkRfUkVWSVNJT05fSUQpKFBDQ1JJKSAqLwojZGVmaW5lIFBDQ1JJUl9SRVZJRF9PRkZTCQkJMCAvKiBSZXZpc2lvbiBJRCAqLwojZGVmaW5lIFBDQ1JJUl9SRVZJRF9NQVNLCQkJKDB4ZmYgPDwgUENDUklSX1JFVklEX09GRlMpCiNkZWZpbmUgUENDUklSX0ZVTExfQ0xBU1NfT0ZGUwkJCTggLyogRnVsbCBDbGFzcyBDb2RlICovCiNkZWZpbmUgUENDUklSX0ZVTExfQ0xBU1NfTUFTSwkJCSgweGZmZmZmZiA8PCBQQ0NSSVJfRlVMTF9DTEFTU19PRkZTKQojZGVmaW5lIFBDQ1JJUl9QUk9HSUZfT0ZGUwkJCTggLyogUHJvZyAuSS9GKi8KI2RlZmluZSBQQ0NSSVJfUFJPR0lGX01BU0sJCQkoMHhmZiA8PCBQQ0NSSVJfUFJPR0lGX09GRlMpCiNkZWZpbmUgUENDUklSX1NVQl9DTEFTU19PRkZTCQkJMTYgLyogU3ViIENsYXNzKi8KI2RlZmluZSBQQ0NSSVJfU1VCX0NMQVNTX01BU0sJCQkoMHhmZiA8PCBQQ0NSSVJfU1VCX0NMQVNTX09GRlMpCiNkZWZpbmUgUENDUklSX0JBU0VfQ0xBU1NfT0ZGUwkJCTI0IC8qIEJhc2UgQ2xhc3MqLwojZGVmaW5lIFBDQ1JJUl9CQVNFX0NMQVNTX01BU0sJCQkoMHhmZiA8PCBQQ0NSSVJfQkFTRV9DTEFTU19PRkZTKQoKLyogCVBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIG9mZnNldD0weDBDIGZpZWxkcyAKCShQQ0lfQklTVF9IRUFERVJfVFlQRV9MQVRFTkNZX1RJTUVSX0NBQ0hFX0xJTkUpKFBCSFRMVENMKSAJCQkJKi8KI2RlZmluZSBQQkhUTFRDTFJfQ0FDSEVMSU5FX09GRlMJCTAgLyogU3BlY2lmaWVzIHRoZSBjYWNoZSBsaW5lIHNpemUgKi8KI2RlZmluZSBQQkhUTFRDTFJfQ0FDSEVMSU5FX01BU0sJCSgweGZmIDw8IFBCSFRMVENMUl9DQUNIRUxJTkVfT0ZGUykKI2RlZmluZSBQQkhUTFRDTFJfTEFUVElNRVJfT0ZGUwkJCTggLyogbGF0ZW5jeSB0aW1lciAqLwojZGVmaW5lIFBCSFRMVENMUl9MQVRUSU1FUl9NQVNLCQkJKDB4ZmYgPDwgUEJIVExUQ0xSX0xBVFRJTUVSX09GRlMpCiNkZWZpbmUgUEJIVExUQ0xSX0hFQURUWVBFX0ZVTExfT0ZGUwkJMTYgLyogRnVsbCBIZWFkZXIgVHlwZSAqLwojZGVmaW5lIFBCSFRMVENMUl9IRUFEVFlQRV9GVUxMX01BU0sJCSgweGZmIDw8IFBCSFRMVENMUl9IRUFEVFlQRV9GVUxMX09GRlMpCiNkZWZpbmUgUEJIVExUQ0xSX01VTFRJX0ZVTkMJCQlCSVQyMyAvKiBNdWx0aS9TaW5nbGUgZnVuY3Rpb24gKi8KI2RlZmluZSBQQkhUTFRDTFJfSEVBREVSX09GRlMJCQkxNiAvKiBIZWFkZXIgdHlwZSAqLwojZGVmaW5lIFBCSFRMVENMUl9IRUFERVJfTUFTSwkJCSgweDdmIDw8IFBCSFRMVENMUl9IRUFERVJfT0ZGUykKI2RlZmluZSBQQkhUTFRDTFJfSEVBREVSX1NUQU5EQVJECQkoMHgwIDw8IFBCSFRMVENMUl9IRUFERVJfT0ZGUykKI2RlZmluZSBQQkhUTFRDTFJfSEVBREVSX1BDSTJQQ0lfQlJJREdFCQkoMHgxIDw8IFBCSFRMVENMUl9IRUFERVJfT0ZGUykKI2RlZmluZSBQQkhUTFRDTFJfQklTVENPTVBfT0ZGUwkJCTI0IC8qIEJJU1QgQ29tcGxldGlvbiBDb2RlICovCiNkZWZpbmUgUEJIVExUQ0xSX0JJU1RDT01QX01BU0sJCQkoMHhmIDw8IFBCSFRMVENMUl9CSVNUQ09NUF9PRkZTKQojZGVmaW5lIFBCSFRMVENMUl9CSVNUQUNUCQkJQklUMzAgLyogQklTVCBBY3RpdmF0ZSBiaXQgKi8KI2RlZmluZSBQQkhUTFRDTFJfQklTVENBUAkJCUJJVDMxIC8qIEJJU1QgQ2FwYWJsZSBCaXQgKi8KCgovKiBQQ0kgQmFyIEJhc2UgTG93IFJlZ2lzdGVyIChQQkJMUikgKi8KI2RlZmluZSBQQkJMUl9JT1NQQUNFCQkJCUJJVDAgLyogTWVtb3J5IFNwYWNlIEluZGljYXRvciAqLwojZGVmaW5lIFBCQkxSX1RZUEVfT0ZGUwkJCQkxICAvKiBCQVIgVHlwZS9Jbml0IFZhbC4gKi8gCiNkZWZpbmUgUEJCTFJfVFlQRV9NQVNLCQkJCSgweDMgPDwgUEJCTFJfVFlQRV9PRkZTKQojZGVmaW5lIFBCQkxSX1RZUEVfMzJCSVRfQUREUgkJCSgweDAgPDwgUEJCTFJfVFlQRV9PRkZTKQojZGVmaW5lIFBCQkxSX1RZUEVfNjRCSVRfQUREUgkJCSgweDIgPDwgUEJCTFJfVFlQRV9PRkZTKQojZGVmaW5lIFBCQkxSX1BSRUZFVENIX0VOCQkJQklUMyAvKiBQcmVmZXRjaCBFbmFibGUgKi8KI2RlZmluZSBQQkJMUl9NRU1fQkFTRV9PRkZTCQkJNCAvKiBNZW1vcnkgQmFyIEJhc2UgYWRkcmVzcy4gQ29ycmVzcG9uZHMgdG8gYWRkcmVzcyBiaXRzIFszMTo0XSAqLwojZGVmaW5lIFBCQkxSX01FTV9CQVNFX01BU0sJCQkoMHhmZmZmZmZmIDw8IFBCQkxSX01FTV9CQVNFX09GRlMpCiNkZWZpbmUgUEJCTFJfSU9fQkFTRV9PRkZTCQkJMiAvKiBJTyBCYXIgQmFzZSBhZGRyZXNzLiBDb3JyZXNwb25kcyB0byBhZGRyZXNzIGJpdHMgWzMxOjJdICovCiNkZWZpbmUgUEJCTFJfSU9fQkFTRV9NQVNLCQkJKDB4M2ZmZmZmZmYgPDwgUEJCTFJfSU9fQkFTRV9PRkZTKQojZGVmaW5lIFBCQkxSX0JBU0VfT0ZGUwkJCQkxMiAvKiBCYXNlIGFkZHJlc3MuIEFkZHJlc3MgYml0cyBbMzE6MTJdICovCiNkZWZpbmUgUEJCTFJfQkFTRV9NQVNLCQkJCSgweGZmZmZmIDw8IFBCQkxSX0JBU0VfT0ZGUykKI2RlZmluZSBQQkJMUl9CQVNFX0FMSUdOTUVUCQkJKDEgPDwgUEJCTFJfQkFTRV9PRkZTKQoKCi8qIFBDSSBCYXIgQmFzZSBIaWdoIEZlZ2lzdGVyIChQQkJIUikgKi8KI2RlZmluZSBQQkJIUl9CQVNFX09GRlMJCQkJMCAvKiBCYXNlIGFkZHJlc3MuIEFkZHJlc3MgYml0cyBbMzE6MTJdICovCiNkZWZpbmUgUEJCSFJfQkFTRV9NQVNLCQkJCSgweGZmZmZmZmZmIDw8IFBCQkhSX0JBU0VfT0ZGUykKCi8qIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIG9mZnNldD0weDJDIGZpZWxkcyAoUENJX1NVQlNZU1RFTV9JRF9BTkRfU1VCU1lTVEVNX1ZFTkRPUl9JRCkoUFNJU1ZJKSAqLwojZGVmaW5lIFBTSVNWSVJfVkVOSURfT0ZGUwkJCTAgLyogU3Vic3lzdGVtIE1hbnVmYWN0dXJlciBWZW5kb3IgSUQgTnVtYmVyICovCiNkZWZpbmUgUFNJU1ZJUl9WRU5JRF9NQVNLCQkJKDB4ZmZmZiA8PCBQU0lTVklSX1ZFTklEX09GRlMpCiNkZWZpbmUgUFNJU1ZJUl9ERVZJRF9PRkZTCQkJMTYgLyogU3Vic3lzdGVtIERldmljZSBJRCBOdW1iZXIgKi8KI2RlZmluZSBQU0lTVklSX0RFVklEX01BU0sJCQkoMHhmZmZmIDw8IFBTSVNWSVJfREVWSURfT0ZGUykKCi8qIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIG9mZnNldD0weDMwIGZpZWxkcyAoUENJX0VYUEFOU0lPTl9ST01fQkFTRV9BRERSX1JFRykoUEVSQkEpICovCiNkZWZpbmUgUEVSQkFSX0VYUFJPTUVOCQkJCUJJVDAgLyogRXhwYW5zaW9uIFJPTSBFbmFibGUgKi8KI2RlZmluZSBQRVJCQVJfQkFTRV9PRkZTCQkJMTIgLyogRXhwYW5zaW9uIFJPTSBCYXNlIEFkZHJlc3MgKi8KI2RlZmluZSBQRVJCQVJfQkFTRV9NQVNLCQkJKDB4ZmZmZmYgPDwgUEVSQkFSX0JBU0VfT0ZGUykgCQoKLyogUENJIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgb2Zmc2V0PTB4MzQgZmllbGRzIChQQ0lfQ0FQQUJJTFRZX0xJU1RfUE9JTlRFUikoUENMUCkgKi8KI2RlZmluZSBQQ0xQUl9DQVBQVFJfT0ZGUwkJCTAgLyogQ2FwYWJpbGl0eSBMaXN0IFBvaW50ZXIgKi8KI2RlZmluZSBQQ0xQUl9DQVBQVFJfTUFTSwkJCSgweGZmIDw8IFBDTFBSX0NBUFBUUl9PRkZTKQoKLyogUENJIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgb2Zmc2V0PTB4M0MgZmllbGRzIChQQ0lfSU5URVJSVVBUX1BJTl9BTkRfTElORSkoUElQTCkgKi8KI2RlZmluZSBQSVBMUl9JTlRMSU5FX09GRlMJCQkwIC8qIEludGVycnVwdCBsaW5lIChJUlEpICovCiNkZWZpbmUgUElQTFJfSU5UTElORV9NQVNLCQkJKDB4ZmYgPDwgUElQTFJfSU5UTElORV9PRkZTKQojZGVmaW5lIFBJUExSX0lOVFBJTl9PRkZTCQkJOCAvKiBpbnRlcnJ1cHQgcGluIChBLEIsQyxEKSAqLwojZGVmaW5lIFBJUExSX0lOVFBJTl9NQVNLCQkJKDB4ZmYgPDwgUElQTFJfSU5UUElOX09GRlMpCiNkZWZpbmUgUElQTFJfTUlOR1JBTlRfT0ZGUwkJCTE2IC8qIE1pbmltdW0gR3JhbnQgb24gMjUwIG5hbm8gc2Vjb25kcyB1bml0cyAqLwojZGVmaW5lIFBJUExSX01JTkdSQU5UX01BU0sJCQkoMHhmZiA8PCBQSVBMUl9NSU5HUkFOVF9PRkZTKQojZGVmaW5lIFBJUExSX01BWExBVEVOX09GRlMJCQkyNCAvKiBNYXhpbXVtIGxhdGVuY3kgb24gMjUwIG5hbm8gc2Vjb25kcyB1bml0cyAqLwojZGVmaW5lIFBJUExSX01BWExBVEVOX01BU0sJCQkoMHhmZiA8PCBQSVBMUl9NQVhMQVRFTl9PRkZTKQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIFBDSSBDb25maWd1cmF0aW9uLCBGdW5jdGlvbiAxLCBSZWdpc3RlcnMgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgUENJX1NDUzJfQkFTRV9BRERSX0xPVwkJCTB4MTAKI2RlZmluZSBQQ0lfU0NTMl9CQVNFX0FERFJfSElHSAkJCTB4MTQKI2RlZmluZSBQQ0lfU0NTM19CQVNFX0FERFJfTE9XCQkgCTB4MTgKI2RlZmluZSBQQ0lfU0NTM19CQVNFX0FERFJfSElHSAkJCTB4MWMKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qICBQQ0kgQ29uZmlndXJhdGlvbiwgRnVuY3Rpb24gMiwgUmVnaXN0ZXJzICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIFBDSV9ERVZDUzBfQkFTRV9BRERSX0xPVwkJMHgxMAojZGVmaW5lIFBDSV9ERVZDUzBfQkFTRV9BRERSX0hJR0gJCTB4MTQKI2RlZmluZSBQQ0lfREVWQ1MxX0JBU0VfQUREUl9MT1cJCTB4MTgKI2RlZmluZSBQQ0lfREVWQ1MxX0JBU0VfQUREUl9ISUdICQkweDFjCiNkZWZpbmUgUENJX0RFVkNTMl9CQVNFX0FERFJfTE9XCQkweDIwCiNkZWZpbmUgUENJX0RFVkNTMl9CQVNFX0FERFJfSElHSAkJMHgyNAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiAgUENJIENvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uIDMsIFJlZ2lzdGVycyAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBQQ0lfQk9PVENTX0JBU0VfQUREUl9MT1cJCTB4MTgKI2RlZmluZSBQQ0lfQk9PVENTX0JBU0VfQUREUl9ISUdICQkweDFjCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qICBQQ0kgQ29uZmlndXJhdGlvbiwgRnVuY3Rpb24gNCwgUmVnaXN0ZXJzICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIFBDSV9QMlBfTUVNMF9CQVNFX0FERFJfTE9XCSAgIAkweDEwCiNkZWZpbmUgUENJX1AyUF9NRU0wX0JBU0VfQUREUl9ISUdICQkweDE0CiNkZWZpbmUgUENJX1AyUF9JT19CQVNFX0FERFIJICAgICAgICAgICAgICAgCTB4MjAKI2RlZmluZSBQQ0lfSU5URVJfUkVHU19JT19NQVBQRURfQkFTRV9BRERSCTB4MjQKCi8qIFBDSVhfU1RBVFVTICByZWdpc3RlciBmaWVsZHMgKFBYUykgKi8KI2RlZmluZSBQWFNfRk5fT0ZGUwkJCQkwIC8qIERlc2NyaXB0aW9uIE51bWJlciAqLwojZGVmaW5lIFBYU19GTl9NQVNLCQkJCSgweDcgPDwgUFhTX0ZOX09GRlMpCiNkZWZpbmUgUFhTX0ROX09GRlMJCQkJMyAvKiBEZXZpY2UgTnVtYmVyICovCiNkZWZpbmUgUFhTX0ROX01BU0sJCQkJKDB4MWYgPDwgUFhTX0ROX09GRlMpCiNkZWZpbmUgUFhTX0JOX09GRlMJCQkJOCAvKiBCdXMgTnVtYmVyICovCiNkZWZpbmUgUFhTX0JOX01BU0sJCQkJKDB4ZmYgPDwgUFhTX0JOX09GRlMpCgovKiBQQ0kgRXJyb3IgUmVwb3J0IFJlZ2lzdGVyIE1hcCAqLwojZGVmaW5lIFBDSV9TRVJSTl9NQVNLX1JFRyhwY2lJZikJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MGMyOCArIChwY2lJZiAqIDB4ODApKQojZGVmaW5lIFBDSV9DQVVTRV9SRUcocGNpSWYpCQkJKE1WX1BDSV9JRl9SRUdTX0JBU0UocGNpSWYpICsgMHgxZDU4ICsgKHBjaUlmICogMHg4MCkpCiNkZWZpbmUgUENJX01BU0tfUkVHKHBjaUlmKQkJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MWQ1QyArIChwY2lJZiAqIDB4ODApKQojZGVmaW5lIFBDSV9FUlJPUl9BRERSX0xPV19SRUcocGNpSWYpCQkoTVZfUENJX0lGX1JFR1NfQkFTRShwY2lJZikgKyAweDFkNDAgKyAocGNpSWYgKiAweDgwKSkKI2RlZmluZSBQQ0lfRVJST1JfQUREUl9ISUdIX1JFRyhwY2lJZikJCShNVl9QQ0lfSUZfUkVHU19CQVNFKHBjaUlmKSArIDB4MWQ0NCArIChwY2lJZiAqIDB4ODApKQojZGVmaW5lIFBDSV9FUlJPUl9BVFRSSUJVVEVfUkVHKHBjaUlmKQkJKE1WX1BDSV9JRl9SRUdTX0JBU0UocGNpSWYpICsgMHgxZDQ4ICsgKHBjaUlmICogMHg4MCkpCiNkZWZpbmUgUENJX0VSUk9SX0NPTU1BTkRfUkVHKHBjaUlmKQkJKE1WX1BDSV9JRl9SRUdTX0JBU0UocGNpSWYpICsgMHgxZDUwICsgKHBjaUlmICogMHg4MCkpCgovKiBQQ0kgSW50ZXJydXB0IENhdXNlIFJlZ2lzdGVyIChQSUNSKSAqLwojZGVmaW5lIFBJQ1JfRVJSX1NFTF9PRkZTICAgICAgICAgICAJCTI3CiNkZWZpbmUgUElDUl9FUlJfU0VMX01BU0sgICAgICAgICAgIAkJKDB4MWYgPDwgUElDUl9FUlJfU0VMX09GRlMpCgovKiBQQ0kgRXJyb3IgQ29tbWFuZCBSZWdpc3RlciAoUEVDUikgKi8KI2RlZmluZSBQRUNSX0VSUl9DTURfT0ZGUwkJCTAKI2RlZmluZSBQRUNSX0VSUl9DTURfTUFTSwkJCSgweGYgPDwgUEVDUl9FUlJfQ01EX09GRlMpCiNkZWZpbmUgUEVDUl9EQUMJCQkJQklUNAoKLyogZGVmYXVsdHMgKi8KLyogU2V0IGJpdHMgbWVhbnMgdmFsdWUgaXMgYWJvdXQgdG8gY2hhbmdlIGFjY29yZGluZyB0byBuZXcgdmFsdWUgKi8KI2RlZmluZSBQQ0lfQ09NTUFORF9ERUZBVUxUX01BU0sgICAgICAgICAgICAgICAgMHhmZmZmZGZmMQojZGVmaW5lIFBDSV9DT01NQU5EX0RFRkFVTFQJCQkoUENSX01BU1RFUl9XUl9UUklHX1dIT0xFIHwgUENSX01BU1RFUl9SRF9UUklHX1dIT0xFIHwgXAoJCQkJCQkgUENSX01BU1RFUl9NRU1fUkRfTElORV9FTiB8IFBDUl9NQVNURVJfTUVNX1JEX01VTFRfRU4gfCBcCgkJCQkJCSBQQ1JfTlNfQUNDT1JESU5HX1JDVl9UUkFOUyB8IFBDUl9NQVNURVJfUENJWF9SRVE2NE5fRU4gfCBcCgkJCQkJCSBQQ1JfTUFTVEVSX0RBQ19FTiB8IFBDUl9NQVNURVJfTTY0X0FMTElHTiB8IFwKCQkJCQkJIFBDUl9FUlJPUlNfUFJPUEFHQVRJT05fRU4pIAogICAgICAgICAgICAgICAgIAojZGVmaW5lIFBDSV9BUkJJVEVSX0NUUkxfREVGQVVMVF9NQVNLICAgCTB4ODAxZmMwN2EKI2RlZmluZSBQQ0lfQVJCSVRFUl9DVFJMX0RFRkFVTFQgCQkoUEFDUl9CUk9LRU5fVkFMX1BDSVhfTUlOIDw8IFBBQ1JfQlJPS0VOX1ZBTF9PRkZTKQoKI2VuZGlmIC8qICNpZm5kZWYgX19JTkNQQ0lSRUdTSCAqLwoK