Ci8vICAgdmltOnR3PTExMDp0cz00OgojaWZuZGVmIEhDRkRFRkNfSAojZGVmaW5lIEhDRkRFRkNfSCAxCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqCiogRklMRQkgOiBIQ0ZERUYuSAoqCiogREFURSAgIDogJERhdGU6IDIwMDQvMDgvMDUgMTE6NDc6MTAgJCAgICRSZXZpc2lvbjogMS44ICQKKiBPcmlnaW5hbDogMjAwNC8wNS8yOCAxNDowNTozNSAgICBSZXZpc2lvbjogMS41OSAgICAgIFRhZzogaGNmN190MjAwNDA2MDJfMDEKKiBPcmlnaW5hbDogMjAwNC8wNS8xMyAxNTozMTo0NSAgICBSZXZpc2lvbjogMS41MyAgICAgIFRhZzogaGNmN190N18yMDA0MDUxM18wMQoqIE9yaWdpbmFsOiAyMDA0LzA0LzE1IDA5OjI0OjQyICAgIFJldmlzaW9uOiAxLjQ0ICAgICAgVGFnOiBoY2Y3X3Q3XzIwMDQwNDE1XzAxCiogT3JpZ2luYWw6IDIwMDQvMDQvMTMgMTQ6MjI6NDUgICAgUmV2aXNpb246IDEuNDMgICAgICBUYWc6IHQ3XzIwMDQwNDEzXzAxCiogT3JpZ2luYWw6IDIwMDQvMDQvMDEgMTU6MzI6NTUgICAgUmV2aXNpb246IDEuNDAgICAgICBUYWc6IHQ3XzIwMDQwNDAxXzAxCiogT3JpZ2luYWw6IDIwMDQvMDMvMTAgMTU6Mzk6MjggICAgUmV2aXNpb246IDEuMzYgICAgICBUYWc6IHQyMDA0MDMxMF8wMQoqIE9yaWdpbmFsOiAyMDA0LzAzLzAzIDE0OjEwOjEyICAgIFJldmlzaW9uOiAxLjM0ICAgICAgVGFnOiB0MjAwNDAzMDRfMDEKKiBPcmlnaW5hbDogMjAwNC8wMy8wMiAwOToyNzoxMiAgICBSZXZpc2lvbjogMS4zMiAgICAgIFRhZzogdDIwMDQwMzAyXzAzCiogT3JpZ2luYWw6IDIwMDQvMDIvMjQgMTM6MDA6MjkgICAgUmV2aXNpb246IDEuMjkgICAgICBUYWc6IHQyMDA0MDIyNF8wMQoqIE9yaWdpbmFsOiAyMDA0LzAyLzE4IDE3OjEzOjU3ICAgIFJldmlzaW9uOiAxLjI2ICAgICAgVGFnOiB0MjAwNDAyMTlfMDEKKgoqIEFVVEhPUiA6IE5pY28gVmFsc3RlcgoqCiogU1BFQ0lGSUNBVElPTjogLi4uLi4uLi4uLi4KKgoqIERFU0MgICA6IERlZmluaXRpb25zIGFuZCBQcm90b3R5cGVzIGZvciBIQ0Ygb25seQoqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioKKgoqIFNPRlRXQVJFIExJQ0VOU0UKKgoqIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zLAoqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCiogbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMsIGRvIG5vdCB1c2UgdGhlIHNvZnR3YXJlLgoqCiogQ09QWVJJR0hUIKkgMTk5NCAtIDE5OTUJYnkgQVQmVC4JCQkJQWxsIFJpZ2h0cyBSZXNlcnZlZAoqIENPUFlSSUdIVCCpIDE5OTYgLSAyMDAwIGJ5IEx1Y2VudCBUZWNobm9sb2dpZXMuCUFsbCBSaWdodHMgUmVzZXJ2ZWQKKiBDT1BZUklHSFQgqSAyMDAxIC0gMjAwNAlieSBBZ2VyZSBTeXN0ZW1zIEluYy4JQWxsIFJpZ2h0cyBSZXNlcnZlZAoqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCioKKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAoqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKgoqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCiogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKiAgICB3ZWxsIGFzIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKiAgICBkaXN0cmlidXRpb24uCioKKiAuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCioKKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycwoqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQoqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoqCiogRGlzY2xhaW1lcgoqCiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCiogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgoqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBBTlkKKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgoqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwoqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIENPTlRSQUNULCBTVFJJQ1QKKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAoqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICiogREFNQUdFLgoqCioKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBQIFIgRSBGIEkgWCBFIFMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovL0lGQl8JCUludGVyZmFjZSBCbG9jawovL0hDTURfCQlIZXJtZXMgQ29tbWFuZAovL0hGU18JCUhlcm1lcyAoVHJhbnNtaXQvUmVjZWl2ZSkgRnJhbWUgU3RydWN0dXJlCi8vSFJFR18JCUhlcm1lcyBSZWdpc3RlcgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWYgMCAvLwojZGVmaW5lIEJJVDAgIDB4MDAwMQojZGVmaW5lIEJJVDEgIDB4MDAwMgojZGVmaW5lIEJJVDIgIDB4MDAwNAojZGVmaW5lIEJJVDMgIDB4MDAwOAojZGVmaW5lIEJJVDQgIDB4MDAxMAojZGVmaW5lIEJJVDUgIDB4MDAyMAojZGVmaW5lIEJJVDYgIDB4MDA0MAojZGVmaW5lIEJJVDcgIDB4MDA4MAojZGVmaW5lIEJJVDggIDB4MDEwMAojZGVmaW5lIEJJVDkgIDB4MDIwMAojZGVmaW5lIEJJVDEwIDB4MDQwMAojZGVmaW5lIEJJVDExIDB4MDgwMAojZGVmaW5lIEJJVDEyIDB4MTAwMAojZGVmaW5lIEJJVDEzIDB4MjAwMAojZGVmaW5lIEJJVDE0IDB4NDAwMAojZGVmaW5lIEJJVDE1IDB4ODAwMAojZGVmaW5lIEJJVDE2IDB4MDAwMTAwMDAKI2RlZmluZSBCSVQxNyAweDAwMDIwMDAwCiNkZWZpbmUgQklUMTggMHgwMDA0MDAwMAojZGVmaW5lIEJJVDE5IDB4MDAwODAwMDAKI2RlZmluZSBCSVQyMCAweDAwMTAwMDAwCiNkZWZpbmUgQklUMjEgMHgwMDIwMDAwMAojZGVmaW5lIEJJVDIyIDB4MDA0MDAwMDAKI2RlZmluZSBCSVQyMyAweDAwODAwMDAwCiNkZWZpbmUgQklUMjQgMHgwMTAwMDAwMAojZGVmaW5lIEJJVDI1IDB4MDIwMDAwMDAKI2RlZmluZSBCSVQyNiAweDA0MDAwMDAwCiNkZWZpbmUgQklUMjcgMHgwODAwMDAwMAojZGVmaW5lIEJJVDI4IDB4MTAwMDAwMDAKI2RlZmluZSBCSVQyOSAweDIwMDAwMDAwCiNkZWZpbmUgQklUMzAgMHg0MDAwMDAwMAojZGVmaW5lIEJJVDMxIDB4ODAwMDAwMDAKI2VuZGlmIC8vIDAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogR0VORVJBTCBFUVVBVEVTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKI2RlZmluZSBIQ0ZfTUFHSUMJCQkJMHg3RDM3CS8vICJ9NyIgSGFuZGxlIHZhbGlkYXRpb24KCiNkZWZpbmUJUExVR19EQVRBX09GRlNFVCAgICAgICAgMHgwMDAwMDgwMAkvL25lZWRlZCBieSBzb21lIHRlc3QgdG9vbCBvbiB0b3Agb2YgSC1JSSBORElTIGRyaXZlcgoKI2RlZmluZSBJTklfVElDS19JTkkJCQkweDAwMDQwMDAwTAoKI2RlZmluZSBJT19JTgkJCQkJMAkJLy9oY2Zpb19pbl9zdHJpbmcKI2RlZmluZSBJT19PVVQJCQkJCTEJCS8vaGNmaW9fb3V0X3N0cmluZwoKLy9ET19BU1NFUlQsIGNyZWF0ZSBhbiBhcnRpZmljaWFsIEZBTFNFIHRvIGZvcmNlIGFuIEFTU0VSVCB3aXRob3V0IHRoZSBuYXN0eSBjb21waWxlciB3YXJuaW5nCiNkZWZpbmUgRE9fQVNTRVJUCQkJCSggYXNzZXJ0X2lmYnAtPklGQl9NYWdpYyAhPSBIQ0ZfTUFHSUMgJiYgYXNzZXJ0X2lmYnAtPklGQl9NYWdpYyA9PSBIQ0ZfTUFHSUMgKQojZGVmaW5lIE5UX0FTU0VSVAkJCQkweDAwMDAJCS8vLCBORVZFUl9URVNURUQKI2RlZmluZSBORVZFUl9URVNURUQJCQlNRVJHRV8yKCAweEVGRkUsIDB4RkVFRiApCiNkZWZpbmUgU0VfQVNTRVJUCQkJCTB4NUVGRgkJLyogU2lkZSBFZmZlY3QsIEhDRkFTU0VSVCBpbnZva2F0aW9uIHdoaWNoIGFyZSBvbmx5IGNhbGxlZCBmb3IgdGhlCgkJCQkJCQkJCQkJICogc2lkZSBlZmZlY3QgYW5kIHdoaWNoIHNob3VsZCBuZXZlciB0cmlnZ2VyICovCiNkZWZpbmUgREhGX0ZJTEVfTkFNRV9PRkZTRVQJMTAwMDAJCS8vdG8gZGlzdGluZ3Vpc2ggREhGIGZyb20gSENGIGFzc2VydHMgYnkgbWVhbnMgb2YgbGluZSBudW1iZXIKI2RlZmluZSBNTURfRklMRV9OQU1FX09GRlNFVAkyMDAwMAkJLy90byBkaXN0aW5ndWlzaCBNTUQgZnJvbSBIQ0YgYXNzZXJ0cyBieSBtZWFucyBvZiBsaW5lIG51bWJlcgoKLy8gdHJhY2UgY29kZXMgdXNlZCB0bwovLyAxOiBwcm9maWxlIGV4ZWN1dGlvbiB0aW1lcyB2aWEgSENGX1RSQUNFIGFuZCBIQ0ZfVFJBQ0VfVkFMVUUKLy8gMjogaGllcmFyY2hpY2FsIGZsb3cgaW5mb3JtYXRpb24gdmlhIEhDRkxPR0VOVFJZIC8gSENGTE9HRVhJVAoKLy8jZGVmaW5lIEhDRl9UUkFDRV9DT05ORUNUCQl1c2VsZXNzCi8vI2RlZmluZSBIQ0ZfVFJBQ0VfRElTQ09OTkVDVAl1c2VsZXNzCiNkZWZpbmUgSENGX1RSQUNFX0FDVElPTgkJMHgwMDAwICAvLyAweDAwMDEKI2RlZmluZSBIQ0ZfVFJBQ0VfQ05UTAkJCTB4MDAwMSAgLy8gMHgwMDAyCiNkZWZpbmUgSENGX1RSQUNFX0RNQV9SWF9HRVQJMHgwMDAyICAvLyAweDAwMDQKI2RlZmluZSBIQ0ZfVFJBQ0VfRE1BX1JYX1BVVAkweDAwMDMgIC8vIDB4MDAwOAojZGVmaW5lIEhDRl9UUkFDRV9ETUFfVFhfR0VUCTB4MDAwNCAgLy8gMHgwMDEwCiNkZWZpbmUgSENGX1RSQUNFX0RNQV9UWF9QVVQJMHgwMDA1ICAvLyAweDAwMjAKI2RlZmluZSBIQ0ZfVFJBQ0VfR0VUX0lORk8JCTB4MDAwNiAgLy8gMHgwMDQwCiNkZWZpbmUgSENGX1RSQUNFX1BVVF9JTkZPCQkweDAwMDcgIC8vIDB4MDA4MAojZGVmaW5lIEhDRl9UUkFDRV9SQ1ZfTVNHCQkweDAwMDggIC8vIDB4MDEwMAojZGVmaW5lIEhDRl9UUkFDRV9TRU5EX01TRwkJMHgwMDA5ICAvLyAweDAyMDAKI2RlZmluZSBIQ0ZfVFJBQ0VfU0VSVklDRV9OSUMJMHgwMDBBICAvLyAweDA0MDAKLy8gI2RlZmluZSBIQ0ZfVFJBQ0VfICAgICAgICAgICAweDAwMEMgIC8vIDB4MTAwMAovLyAjZGVmaW5lIEhDRl9UUkFDRV8gICAgICAgICAgIDB4MDAwRCAgLy8gMHgyMDAwCi8vICNkZWZpbmUgSENGX1RSQUNFXyAgICAgICAgICAgMHgwMDBFICAvLyAweDQwMDAKLy8gI2RlZmluZSBIQ0ZfVFJBQ0VfICAgICAgICAgICAweDAwMEYgIC8vIDB4ODAwMAovLwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIQ0ZfVFJBQ0VfLi4uIGNvZGVzIGJlbG93IDB4MDAxMCBhcmUgYXNzZXJ0ZWQgb24gcmUtZW50cnkKI2RlZmluZSBIQ0ZfVFJBQ0VfQUNUSU9OX0tMVURHRQkweDAwMTAgIC8qIG9uY2UgeW91IHN0YXJ0IGludHJvZHVjaW5nIGtsdWRnZXMgdGhlcmUgaXMgbm8gZW5kIHRvIGl0CgkJCQkJCQkJCQkgKiB0aGlzIGlzIGFuIGVzY2FwZSB0byBkbyBub3QgYXNzZXJ0IG9uIHJlLWVudHJhbmN5IHByb2JsZW0gY2F1c2VkCgkJCQkJCQkJCQkgKiBieSBIQ0ZfQUNUX0lOVF9GT1JDRV9PTiB1c2VkIHRvIGdldCBNaWNyb3NvZnRzIE5ESVMgZHJpdmVycyBnb2luZwoJCQkJCQkJCQkJICovCiNkZWZpbmUgSENGX1RSQUNFX1NUUklPCQkJMHgwMDIwCiNkZWZpbmUgSENGX1RSQUNFX0FMTE9DCQkJMFgwMDIxCiNkZWZpbmUgSENGX1RSQUNFX0RMCQkJMFgwMDIzCiNkZWZpbmUgSENGX1RSQUNFX0lTUl9JTkZPCQkwWDAwMjQKI2RlZmluZSBIQ0ZfVFJBQ0VfQ0FMSUJSQVRFCQkweDAwMjYKCiNkZWZpbmUgSENGX1RSQUNFX0NNRF9DUEwgCQkweDAwNDAKI2RlZmluZSBIQ0ZfVFJBQ0VfQ01EX0VYRQkJMHgwMDQxCiNkZWZpbmUgSENGX1RSQUNFX0dFVF9GSUQJCTB4MDA0MgojZGVmaW5lIEhDRl9UUkFDRV9HRVRfRlJBRwkJMHgwMDQzCiNkZWZpbmUgSENGX1RSQUNFX0lOSVQJCQkweDAwNDQKI2RlZmluZSBIQ0ZfVFJBQ0VfUFVUX0ZSQUcJCTB4MDA0NQojZGVmaW5lIEhDRl9UUkFDRV9TRVRVUF9CQVAJCTB4MDA0NgoKI2RlZmluZQlIQ0ZfVFJBQ0VfRVhJVCAJCQkweDgwMDAJLy8gS2VpbCBDIHdhcm5zICJsb25nIGNvbnN0YW50IHRydW5jYXRlZCB0byBpbnQiCgovLyNkZWZpbmUgQkFQXzAJCQkJCUhSRUdfREFUQV8wCQkvL1VzZWQgYnkgRE1BIGNvbnRyb2xsZXIgdG8gYWNjZXNzIE5JQyBSQU0KI2RlZmluZSBCQVBfMQkJCQkJSFJFR19EQVRBXzEJCS8vVXNlZCBieSBIQ0YgdG8gYWNjZXNzIE5JQyBSQU0KCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogSGVybWVzIFJlY2VpdmUvVHJhbnNtaXQgRnJhbWUgU3RydWN0dXJlcwovL0hGU19TVEFUCi8vc2VlIE1NRC5IIGZvciBIRlNfU1RBVF9FUlIKI2RlZmluZSAJSEZTX1NUQVRfTVNHX1RZUEUJMHhFMDAwCS8vSGVybWVzIHJlcG9ydGVkIE1lc3NhZ2UgVHlwZQojZGVmaW5lIAlIRlNfU1RBVF9NSUNfS0VZX0lECTB4MTgwMAkvL01JQyBrZXkgdXNlZCAoaWYgYW55KQojZGVmaW5lIAlIRlNfU1RBVF8xMDQyCQkweDIwMDAJLy9SRkMxMDQyIEVuY29kZWQKI2RlZmluZSAJSEZTX1NUQVRfVFVOTkVMCQkweDQwMDAJLy9CcmlkZ2UtVHVubmVsIEVuY29kZWQKI2RlZmluZSAJSEZTX1NUQVRfV01QX01TRwkweDYwMDAJLy9XYXZlTEFOLUlJIE1hbmFnZW1lbnQgUHJvdG9jb2wgRnJhbWUKI2lmIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9XUEEKI2RlZmluZSAJSEZTX1NUQVRfTUlDCQkweDAwMTAJLy9GcmFtZSBjb250YWlucyBNSUMgIC8vOz8gcmUtaW5zdGF0ZSB3aGVuIEYvVyByZWFkeQojZW5kaWYKCi8vKioqKioqKioqKioqKioqKioqKioqKioqKiBIZXJtZXMgUmVnaXN0ZXIgT2Zmc2V0cyBhbmQgQ29tbWFuZCBiaXRzCiNkZWZpbmUgSFJFR19JT19SQU5HRQkJCTB4ODAJCS8vSS9PIFJhbmdlIHVzZWQgYnkgSGVybWVzCgoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqIENvbW1hbmQvU3RhdHVzCiNkZWZpbmUgSFJFR19DTUQJCQkJMHgwMAkJLy8KI2RlZmluZSAJSENNRF9DTURfQ09ERQkJCTB4M0YKI2RlZmluZSBIUkVHX1BBUkFNXzAJCQkweDAyCQkvLwojZGVmaW5lIEhSRUdfUEFSQU1fMQkJCTB4MDQJCS8vCiNkZWZpbmUgSFJFR19QQVJBTV8yCQkJMHgwNgkJLy8KI2RlZmluZSBIUkVHX1NUQVQJCQkJMHgwOAkJLy8KI2RlZmluZSAJSFJFR19TVEFUX0NNRF9DT0RFCQkweDAwM0YJLy8KI2RlZmluZQkJSFJFR19TVEFUX0RJQUdfRVJSCQkweDAxMDAKI2RlZmluZQkJSFJFR19TVEFUX0lOUVVJUkVfRVJSCTB4MDUwMAojZGVmaW5lIAlIUkVHX1NUQVRfQ01EX1JFU1VMVAkweDdGMDAJLy8KI2RlZmluZSBIUkVHX1JFU1BfMAkJCQkweDBBCQkvLwojZGVmaW5lIEhSRUdfUkVTUF8xCQkJCTB4MEMJCS8vCiNkZWZpbmUgSFJFR19SRVNQXzIJCQkJMHgwRQkJLy8KCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogRklEIE1hbmFnZW1lbnQKI2RlZmluZSBIUkVHX0lORk9fRklECQkJMHgxMAkJLy8KI2RlZmluZSBIUkVHX1JYX0ZJRAkJCQkweDIwCQkvLwojZGVmaW5lIEhSRUdfQUxMT0NfRklEICAJCTB4MjIJCS8vCiNkZWZpbmUgSFJFR19UWF9DT01QTF9GSUQgIAkJMHgyNAkJLy8KCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogQkFQCi8vMjAwMzEwMzAgSFdpIEluc2VydGVkIHRoaXMgYWdhaW4gYmVjYXVzZSB0aGUgZG9uZ2xlIGNvZGUgdXNlcyB0aGlzIChHUElGLkMpCi8vI2RlZmluZSBIUkVHX1NFTEVDVF8wCQkJMHgxOAkJLy8KLy8jZGVmaW5lIEhSRUdfT0ZGU0VUXzAJCQkweDFDCQkvLwovLyNkZWZpbmUgSFJFR19EQVRBXzAJCQkweDM2CQkvLwoKLy8jZGVmaW5lIAlIUkVHX09GRlNFVF9CVVNZCQkweDgwMDAJLy8gdXNlIEhDTURfQlVTWQojZGVmaW5lIAlIUkVHX09GRlNFVF9FUlIJCQkweDQwMDAJLy8KLy9yc3J2ZCAjZGVmaW5lIAlIUkVHX09GRlNFVF9EQVRBX09GRlNFVAkweDBGRkYJLy8KCiNkZWZpbmUgSFJFR19TRUxFQ1RfMQkJCTB4MUEJCS8vCiNkZWZpbmUgSFJFR19PRkZTRVRfMQkJCTB4MUUJCS8vCiNkZWZpbmUgSFJFR19EQVRBXzEJCQkJMHgzOAkJLy8KCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogRXZlbnQKI2RlZmluZSBIUkVHX0VWX1NUQVQJCQkweDMwCQkvLwojZGVmaW5lIEhSRUdfSU5UX0VOCQkJCTB4MzIJCS8vCiNkZWZpbmUgSFJFR19FVl9BQ0sJCQkJMHgzNAkJLy8KCiNkZWZpbmUgICAgSFJFR19FVl9USUNLCQkJCTB4ODAwMAkvL0F1eGlsaWFyeSBUaW1lciBUaWNrCi8vI2RlZmluZSAgSFJFR19FVl9SRVMJCQkJMHg0MDAwCS8vSC1JIG9ubHk6IEgvVyBlcnJvciAoV2FpdCBUaW1lLW91dCkKI2RlZmluZSAgICBIUkVHX0VWX0lORk9fRFJPUAkJMHgyMDAwCS8vV01BQyBkaWQgbm90IGhhdmUgc3VmZmljaWVudCBSQU0gdG8gYnVpbGQgVW5zb2xsaWNpdGVkIEZyYW1lCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfSElJNQojZGVmaW5lICAgIEhSRUdfRVZfQUNLX1JFR19SRUFEWQkweDAwMDAKI2Vsc2UKI2RlZmluZSAgICBIUkVHX0VWX0FDS19SRUdfUkVBRFkJMHgxMDAwCS8vV29ya2Fyb3VuZCBLbHVkZ2UgYml0IGZvciBILUlJIChub3QgSC1JSS41KQojZW5kaWYgLy8gSENGX1RZUEVfSElJNQojaWYgKEhDRl9TTEVFUCkgJiAoIEhDRl9DRFMgfCBIQ0ZfRERTICkKI2RlZmluZSAgICBIUkVHX0VWX1NMRUVQX1JFUQkJMHgwODAwCiNlbHNlCiNkZWZpbmUgICAgSFJFR19FVl9TTEVFUF9SRVEJCTB4MDAwMAojZW5kaWYgLy8gSENGX0NEUyAvIEhDRl9ERFMKI2lmIEhDRl9ETUEKLy8jZGVmaW5lICAgIEhSRUdfRVZfTFBFU0MJCQkweDA0MDAgLy8gZmlybXdhcmUgc2V0cyB0aGlzIGJpdCBhbmQgY2xlYXJzIGl0LCBub3QgZm9yIGhvc3QgdXNhZ2UuCiNkZWZpbmUgICAgSFJFR19FVl9SRE1BRAkJCTB4MDIwMCAvLyByeCBmcmFtZSBpbiBob3N0IG1lbW9yeQojZGVmaW5lICAgIEhSRUdfRVZfVERNQUQJCQkweDAxMDAgLy8gdHggZnJhbWUgaW4gaG9zdCBtZW1vcnkgcHJvY2Vzc2VkCi8vI2RlZmluZSAgICBIUkVHX0VWX1JYRE1BCQkJMHgwMDQwIC8vIGZpcm13YXJlIGtpY2tzIG9mZiBETUEgZW5naW5lIChiaXQgaXMgbm90IGZvciBob3N0IHVzYWdlKQovLyNkZWZpbmUgICAgSFJFR19FVl9UWERNQQkJCTB4MDAyMCAvLyBmaXJtd2FyZSBraWNrcyBvZmYgRE1BIGVuZ2luZSAoYml0IGlzIG5vdCBmb3IgaG9zdCB1c2FnZSkKI2RlZmluZSAgICBIUkVHX0VWX0ZXX0RNQQkJCTB4MDQ2MCAvLyBmaXJtd2FyZSAvIERNQSBlbmdpbmUgSS9GIChiaXRzIGFyZSBub3QgZm9yIGhvc3QgdXNhZ2UpCiNlbHNlCiNkZWZpbmUgICAgSFJFR19FVl9GV19ETUEJCQkweDAwMDAKI2VuZGlmIC8vIEhDRl9ETUEKI2RlZmluZSAgICBIUkVHX0VWX0lORk8JCQkJMHgwMDgwCS8vIEFzeW5jaHJvbm91cyBJbmZvcm1hdGlvbiBGcmFtZQojZGVmaW5lICAgIEhSRUdfRVZfQ01ECQkJCTB4MDAxMAkvLyBDb21tYW5kIGNvbXBsZXRlZCwgU3RhdHVzIGFuZCBSZXNwb25zZSBhdmFpbGFibGUKI2RlZmluZSAgICBIUkVHX0VWX0FMTE9DCQkJMHgwMDA4CS8vIEFzeW5jaHJvbm91cyBwYXJ0IG9mIEFsbG9jYXRpb24vUmVjbGFpbSBjb21wbGV0ZWQKI2RlZmluZSAgICBIUkVHX0VWX1RYX0VYQwkJCTB4MDAwNAkvLyBBc3luY2hyb25vdXMgVHJhbnNtaXNzaW9uIHVuc3VjY2Vzc2Z1bCBjb21wbGV0ZWQKI2RlZmluZSAgICBIUkVHX0VWX1RYCQkJCTB4MDAwMgkvLyBBc3luY2hyb25vdXMgVHJhbnNtaXNzaW9uIHN1Y2Nlc3NmdWwgY29tcGxldGVkCiNkZWZpbmUgICAgSFJFR19FVl9SWAkJCQkweDAwMDEJLy8gQXN5bmNocm9ub3VzIFJlY2VpdmUgRnJhbWUKCiNkZWZpbmUgICAgSFJFR19FVl9UWF9FWFQgCQkJKCAoSENGX0VYVCkgJiAoSENGX0VYVF9JTlRfVFhfRVggfCBIQ0ZfRVhUX0lOVF9USUNLICkgKQoJCQkJCQkJCQkvKiBIUkVHX0VWX1RYX0VYVCA6PSAweDAwMDAgb3IgSFJFR19FVl9UWF9FWEMgYW5kL29yIEhSRUdfRVZfVElDSwoJCQkJCQkJCQkgKiBjb3VsZCBiZSBleHRlbmRlZCB3aXRoIEhSRUdfRVZfVFggKi8KI2lmIEhDRl9FWFRfSU5UX1RYX0VYICE9IEhSRUdfRVZfVFhfRVhDCmVycjogdGhlc2UgdmFsdWVzIHNob3VsZCBtYXRjaDsKI2VuZGlmIC8vIEhDRl9FWFRfSU5UX1RYX0VYIC8gSFJFR19FVl9UWF9FWEMKCiNpZiBIQ0ZfRVhUX0lOVF9USUNLICE9IEhSRUdfRVZfVElDSwplcnI6IHRoZXNlIHZhbHVlcyBzaG91bGQgbWF0Y2g7CiNlbmRpZiAvLyBIQ0ZfRVhUX0lOVF9USUNLIC8gSFJFR19FVl9USUNLCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogSG9zdCBTb2Z0d2FyZQojZGVmaW5lIEhSRUdfU1dfMAkJCQkweDI4CQkvLwojZGVmaW5lIEhSRUdfU1dfMQkJCQkweDJBCQkvLwojZGVmaW5lIEhSRUdfU1dfMgkJCQkweDJDCQkvLwovL3JzcnZkICNkZWZpbmUgSFJFR19TV18zCQkweDJFCQkvLwovLyoqKioqKioqKioqKioqKioqKioqKioqKiogQ29udHJvbCBhbmQgQXV4aWxpYXJ5IFBvcnQKCiNkZWZpbmUgSFJFR19JTwkJCQkJMHgxMgojZGVmaW5lCQlIUkVHX0lPX1NSRVNFVAkJCTB4MDAwMQojZGVmaW5lCQlIUkVHX0lPX1dBS0VVUF9BU1lOQwkweDAwMDIKI2RlZmluZQkJSFJFR19JT19XT0tFTl9VUAkJMHgwMDA0CiNkZWZpbmUgSFJFR19DTlRMCQkJCTB4MTQJCS8vCi8vI2RlZmluZQkJSFJFR19DTlRMX1dBS0VVUF9TWU5DCTB4MDAwMQojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0VOQV9TVEFUCTB4QzAwMAojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0RJU19TVEFUCTB4MDAwMAojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0VOQV9DTlRMCTB4ODAwMAojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0RJU19DTlRMCTB4NDAwMAojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0RTRAkJMHgyMDAwCiNkZWZpbmUJCUhSRUdfQ05UTF9BVVhfRU5BCQkoSFJFR19DTlRMX0FVWF9FTkFfQ05UTCB8IEhSRUdfQ05UTF9BVVhfRElTX0NOVEwgKQojZGVmaW5lIEhSRUdfU1BBUkUJCQkJMHgxNgkJLy8KI2RlZmluZSBIUkVHX0FVWF9QQUdFCQkJMHgzQQkJLy8KI2RlZmluZSBIUkVHX0FVWF9PRkZTRVQJCQkweDNDCQkvLwojZGVmaW5lIEhSRUdfQVVYX0RBVEEJCQkweDNFCQkvLwoKI2lmIEhDRl9ETUEKLy8qKioqKioqKioqKioqKioqKioqKioqKioqIERNQSAoYnVzIG1hc3RlcmluZykKCS8vIEJlIGNhcmVmdWxsIHRvIHVzZSB0aGVzZSByZWdpc3RlcnMgb25seSBhdCBhIGdlbnVpbmUgMzIgYml0cyBOSUMKCS8vIE9uIDE2IGJpdHMgTklDcywgdGhlc2UgYWRkcmVzc2VzIGFyZSBtYXBwZWQgaW50byB0aGUgcmFuZ2UgMHgwMCB0aHJvdWdoIDB4M0Ygd2l0aCBhbGwgY29uc2VxdWVuY2VzCgkvLyB0aGVyZW9mLCBlLmcuICBIUkVHX0RNQV9DVFJMIHJlZ2lzdGVyIG1hcHMgdG8gSFJFR19DTUQuCiNkZWZpbmUgSFJFR19ETUFfQ1RSTAkJCQkJCTB4MDA0MAojZGVmaW5lIEhSRUdfVFhETUFfUFRSMzIJCQkJCTB4MDA0NAojZGVmaW5lIEhSRUdfVFhETUFfUFJJT19QVFIzMgkJCQkweDAwNDgKI2RlZmluZSBIUkVHX1RYRE1BX0hJUFJJT19QVFIzMgkJCQkweDAwNEMKI2RlZmluZSBIUkVHX1JYRE1BX1BUUjMyCQkJCQkweDAwNTAKI2RlZmluZSBIUkVHX0NBUkRERVRFQ1RfMQkJCQkJMHgwMDdDIC8vIGNvbnRhaW5zIDdEMzcKI2RlZmluZSBIUkVHX0NBUkRERVRFQ1RfMgkJCQkJMHgwMDdFIC8vIGNvbnRhaW5zIDdERTcKI2RlZmluZSBIUkVHX0ZSRUVUSU1FUgkJCQkJCTB4MDA1OAojZGVmaW5lIEhSRUdfRE1BX1JYX0NOVAkJCQkJCTB4MDAyNgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIERlZmluZXMgZm9yIHRoZSBiaXRzIGluIHRoZSBEbWFDb250cm9sIHJlZ2lzdGVyIChANDBoKQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWEhXRU4JCQkJMHg4MDAwMDAwMCAvLyBoaWdoIHdvcmQgZW5hYmxlIGJpdAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhSRVNFVAkJCQkweDQwMDAwMDAwIC8vIHR4IGRtYSBpbml0IGJpdAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhCQVAxCQkJCUJJVDI5CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWF9TVEFMTEVECQkJQklUMjgKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYQVVUT0FDS19ETUFET05FCQlCSVQyNyAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIFRETUFET05FIGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWEFVVE9BQ0tfSU5GTwkJQklUMjYgLy8gbm8gaG9zdCBpbnZvbHZlbWVudCByZXEuIGZvciBhbGxvYyBldmVudAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhBVVRPQUNLX0RNQUVOCQkweDAyMDAwMDAwIC8vIG5vIGhvc3QgaW52b2x2ZW1lbnQgcmVxLiBmb3IgVHhETUFlbiBldmVudAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhBVVRPQUNLX1JYCQkJMHgwMTAwMDAwMCAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIHR4IGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWF9CVVNZCQkJCUJJVDIzIC8vIHJlYWQgb25seSBiaXQKLy8jZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhfUkJVRkNPTlRfUExBSU4JCTAJICAvLyBiaXRzIDIxLi4yMAovLyNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWF9NT0RFX1BMQUlOX0RNQQkJMAkgIC8vIG1vZGUgMAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhfTU9ERV9TSU5HTEVfUEFDS0VUCTB4MDAwMTAwMDAgLy8gbW9kZSAxCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWF9NT0RFX01VTFRJX1BBQ0tFVAkweDAwMDIwMDAwIC8vIG1vZGUgMgovLyNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWF9NT0RFX0RJU0FCTEUJCSgweDAwMDIwMDAwfDB4MDAwMTAwMDApIC8vIGRpc2FibGUgdHggZG1hIGVuZ2luZQojZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhIV0VOCQkJCTB4ODAwMCAvLyBsb3cgd29yZCBlbmFibGUgYml0CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWFJFU0VUCQkJCTB4NDAwMCAvLyByeCBkbWEgaW5pdCBiaXQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYQkFQMQkJCQlCSVQxMwojZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhBVVRPQUNLX0RNQURPTkUJCUJJVDExIC8vIG5vIGhvc3QgaW52b2x2ZW1lbnQgcmVxLiBmb3IgUnhETUFET05FIGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWEFVVE9BQ0tfRE1BRU4JCTB4MDAwMDA0MDAgLy8gbm8gaG9zdCBpbnZvbHZlbWVudCByZXEuIGZvciBSeERNQWVuIGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWEFVVE9BQ0tfRE1BQUxMT0MJMHgwMDAwMDIwMCAgLy8gbm8gaG9zdCBpbnZvbHZlbWVudCByZXEuIGZvciBpbmZvIGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWEFVVE9BQ0tfVFgJCQkweDAwMDAwMTAwICAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIHJ4IGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9CVVNZCQkJCUJJVDcgIC8vIHJlYWQgb25seSBiaXQKLy8jZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhfVEJVRkNPTlRfUExBSU4JCTAJICAvLyBiaXRzIDYuLjUKLy8jZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhfTU9ERV9QTEFJTl9ETUEJCTAJICAvLyBtb2RlIDAKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYX01PREVfU0lOR0xFX1BBQ0tFVAlCSVQwIC8vIG1vZGUgMQojZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhfTU9ERV9NVUxUSV9QQUNLRVQJMHgwMDAwMDAwMiAvLyBtb2RlIDIKLy8jZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhfTU9ERV9ESVNBQkxFCQkoMHgwMDAwMDAwMXwweDAwMDAwMDAyKSAvLyBkaXNhYmxlIHR4IGRtYSBlbmdpbmUKCi8vY29uZmlndXJhdGlvbiBEV09SRCB0byBjb25maWd1cmUgRE1BIGZvciBtb2RlMiBvcGVyYXRpb24sIHVzaW5nIEJBUDAgYXMgdGhlIERNQSBCQVAuCiNkZWZpbmUgRE1BX0NUUkxTVEFUX0dPIChIUkVHX0RNQV9DVFJMX1JYSFdFTiB8IEhSRUdfRE1BX0NUUkxfUlhfTU9ERV9NVUxUSV9QQUNLRVQgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkVHX0RNQV9DVFJMX1JYQVVUT0FDS19ETUFFTiB8IEhSRUdfRE1BX0NUUkxfUlhBVVRPQUNLX1JYIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgSFJFR19ETUFfQ1RSTF9UWEhXRU4gfCAvKjs/SFJFR19ETUFfQ1RSTF9UWF9UQlVGQ09OVF9QTEFJTiB8Ki8gXAogICAgICAgICAgICAgICAgICAgICAgICAgSFJFR19ETUFfQ1RSTF9UWF9NT0RFX01VTFRJX1BBQ0tFVCB8IEhSRUdfRE1BX0NUUkxfVFhBVVRPQUNLX0RNQUVOIHxcCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkVHX0RNQV9DVFJMX1RYQVVUT0FDS19ETUFBTExPQykKCi8vY29uZmlndXJhdGlvbiBEV09SRCB0byByZXNldCBib3RoIHRoZSBUeCBhbmQgUnggRE1BIGVuZ2luZXMKI2RlZmluZSBETUFfQ1RSTFNUQVRfUkVTRVQgKEhSRUdfRE1BX0NUUkxfUlhIV0VOIHwgSFJFR19ETUFfQ1RSTF9SWFJFU0VUIHwgSFJFR19ETUFfQ1RSTF9UWEhXRU4gfCBIUkVHX0RNQV9DVFJMX1RYUkVTRVQpCgovLyNkZWZpbmUgREVTQ19ETUFfT1dORUQgICAgIAkJMHg4MDAwMDAwMCAJCQkJCS8vIEJJVDMxCiNkZWZpbmUgREVTQ19ETUFfT1dORUQgICAgIAkJMHg4MDAwCSAJCQkJCS8vIEJJVDMxCiNkZWZpbmUgREVTQ19TT1AgICAJCQkgCTB4ODAwMCAJCQkJCQkvLyBCSVQxNQojZGVmaW5lIERFU0NfRU9QICAgCQkJIAkweDQwMDAgCQkJCQkJLy8gQklUMTQKCiNkZWZpbmUgRE1BX1JYCQkJCTAKI2RlZmluZSBETUFfVFgJCQkJMQoKLy8gI2RlZmluZSBJRkJfUnhGaXJzdERlc2MJCUlGQl9GaXJzdERlc2NbRE1BX1JYXQovLyAjZGVmaW5lIElGQl9UeEZpcnN0RGVzYwkJSUZCX0ZpcnN0RGVzY1tETUFfVFhdCi8vICNkZWZpbmUgSUZCX1J4TGFzdERlc2MJCUlGQl9MYXN0RGVzY1tETUFfUlhdCi8vICNkZWZpbmUgSUZCX1R4TGFzdERlc2MJCUlGQl9MYXN0RGVzY1tETUFfVFhdCgojZW5kaWYgLy8gSENGX0RNQQovLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgRVFVQVRFUyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCi8vIEhlcm1lcyBDb21tYW5kIENvZGVzIGFuZCBRdWFsaWZpZXIgYml0cwojZGVmaW5lIAlIQ01EX0JVU1kJCQkweDgwMDAJLy8gQnVzeSBiaXQsIGFwcGxpY2FibGUgZm9yIGFsbCBjb21tYW5kcwojZGVmaW5lIEhDTURfSU5JCQkJCTB4MDAwMAkvLwojZGVmaW5lIEhDTURfRU5BQkxFCQkJCUhDRl9DTlRMX0VOQUJMRQkJLy8gMHgwMDAxCiNkZWZpbmUgSENNRF9ESVNBQkxFCQkJSENGX0NOVExfRElTQUJMRQkvLyAweDAwMDIKI2RlZmluZSBIQ01EX0NPTk5FQ1QJCQlIQ0ZfQ05UTF9DT05ORUNUCS8vIDB4MDAwMwojZGVmaW5lIEhDTURfRVhFQ1VURQkJCTB4MDAwNAkvLwojZGVmaW5lIEhDTURfRElTQ09OTkVDVAkJCUhDRl9DTlRMX0RJU0NPTk5FQ1QJLy8gMHgwMDA1CiNkZWZpbmUgSENNRF9TTEVFUAkJCQkweDAwMDYJLy8KI2RlZmluZSBIQ01EX0NPTlRJTlVFCQkJSENGX0NOVExfQ09OVElOVUUJLy8gMHgwMDA3CiNkZWZpbmUgCUhDTURfUkVUUlkJCQkweDAxMDAJLy8gUmV0cnkgYml0CiNkZWZpbmUgSENNRF9BTExPQwkJCQkweDAwMEEJLy8KI2RlZmluZSBIQ01EX1RYCQkJCQkweDAwMEIJLy8KI2RlZmluZSAJSENNRF9SRUNMCQkJMHgwMTAwCS8vIFJlY2xhaW0gYml0LCBhcHBsaWNhYmxlIGZvciBUeCBhbmQgSW5xdWlyZQojZGVmaW5lIEhDTURfSU5RVUlSRQkJCTB4MDAxMQkvLwojZGVmaW5lIEhDTURfQUNDRVNTCQkJCTB4MDAyMQkvLwojZGVmaW5lIAlIQ01EX0FDQ0VTU19XUklURQkweDAxMDAJLy8gV3JpdGUgYml0CiNkZWZpbmUgSENNRF9QUk9HUkFNCQkJMHgwMDIyCS8vCiNkZWZpbmUgSENNRF9SRUFEX01JRgkJCTB4MDAzMAojZGVmaW5lIEhDTURfV1JJVEVfTUlGCQkJMHgwMDMxCiNkZWZpbmUgSENNRF9USEVTRVVTCQkJMHgwMDM4CiNkZWZpbmUgCUhDTURfU1RBUlRQUkVBTUJMRSAgMHgwRTAwCS8vIFN0YXJ0IGNvbnRpbnVvdXMgcHJlYW1ibGUgVHgKI2RlZmluZSAJSENNRF9TVE9QCQkJMHgwRjAwCS8vIFN0b3AgVGhlc2V1cyB0ZXN0IG1vZGUKCgovL0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudAovLwoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfQk9UVE9NCTEJLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfVE9QCTEJLy8gRGVmYXVsdCBUb3AgICAgQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV80X0JPVFRPTQkxCS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEgvVyAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfVE9QCTEJLy8gRGVmYXVsdCBUb3AgICAgQ29tcGF0aWJpbGl0eSBmb3IgSC9XIC0gZHJpdmVyIEkvRgoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfQk9UVE9NCTEJLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgSC9XIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9UT1AJMQkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBIL1cgLSBkcml2ZXIgSS9GCgojaWYgKEhDRl9UWVBFKSAmIEhDRl9UWVBFX1dQQQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMV9CT1RUT00JMTYJLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8xX1RPUCAgICAxNgkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2Vsc2UgIC8vOz8gaXMgdGhpcyBSRUFMTFkgTy5LLgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMV9CT1RUT00JMQkvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzFfVE9QICAgIDEJLy8gRGVmYXVsdCBUb3AgICAgQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbmRpZiAvLyBIQ0ZfVFlQRV9XUEEKCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX0JPVFRPTQkyCS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9UT1AgICAgMgkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8zX0JPVFRPTQkxCS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfM19UT1AgICAgMQkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl80X0JPVFRPTQkxCS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfNF9UT1AgICAgMQkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfSElJNQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9CT1RUT00JNgkvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9UT1AgICAgNgkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZWxzZSAvLyAoSENGX1RZUEUpICYgSENGX1RZUEVfSElJNQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9CT1RUT00JMQkvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9UT1AgICAgMgkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZW5kaWYgLy8gKEhDRl9UWVBFKSAmIEhDRl9UWVBFX0hJSTUKCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8zX0JPVFRPTQkxCS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8zX1RPUCAgICAxCS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfNF9CT1RUT00JMQkvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfNF9UT1AgICAgMQkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI2lmIGRlZmluZWQgSENGX0NGR19QUklfMV9UT1AgfHwgZGVmaW5lZCBIQ0ZfQ0ZHX1BSSV8xX0JPVFRPTQplcnI6IFBSSV8xIG5vdCBzdXBwb3J0ZWQgZm9yIEgtSTsJLy8gQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2VuZGlmIC8vIEhDRl9DRkdfUFJJXzFfVE9QIC8gSENGX0NGR19QUklfMV9CT1RUT00KCiNpZiBkZWZpbmVkIEhDRl9DRkdfUFJJXzJfVE9QIHx8IGRlZmluZWQgSENGX0NGR19QUklfMl9CT1RUT00KZXJyOiBQUklfMiBub3Qgc3VwcG9ydGVkIGZvciBILUk7CS8vIENvbXBhdGliaWxpdHkgZm9yIFByaW1hcnkgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1BSSV8yX1RPUCAvIEhDRl9DRkdfUFJJXzJfQk9UVE9NCgojaWZkZWYgSENGX0NGR19QUklfM19UT1AJCQkJCQkJCQkvLyBUb3AgQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2lmIEhDRl9DRkdfUFJJXzNfVE9QID09IDAgfHwgXAoJQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX0JPVFRPTSA8PSBIQ0ZfQ0ZHX1BSSV8zX1RPUCAmJiBIQ0ZfQ0ZHX1BSSV8zX1RPUCA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfVE9QCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX1RPUAlIQ0ZfQ0ZHX1BSSV8zX1RPUAojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1BSSV8zX1RPUAoKI2lmZGVmIEhDRl9DRkdfUFJJXzNfQk9UVE9NICAgICAgICAgICAgICAgICAgICAgICAJCQkvLyBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2lmIENGR19EUlZfQUNUX1JBTkdFU19QUklfM19CT1RUT00gPD0gSENGX0NGR19QUklfM19CT1RUT00gJiYgSENGX0NGR19QUklfM19CT1RUT00gPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX0JPVFRPTQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19QUklfM19CT1RUT00JSENGX0NGR19QUklfM19CT1RUT00KI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19QUklfM19CT1RUT00KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX0hTSV8wX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfSFNJXzBfQk9UVE9NCmVycjogSFNJXzAgbm90IHN1cHBvcnRlZCBmb3IgSC1JOwkvLyBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0hTSV8wX1RPUCAvIEhDRl9DRkdfSFNJXzBfQk9UVE9NCgojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX0hTSV8xX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfSFNJXzFfQk9UVE9NCmVycjogSFNJXzEgbm90IHN1cHBvcnRlZCBmb3IgSC1JOwkvLyBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0hTSV8xX1RPUCAvIEhDRl9DRkdfSFNJXzFfQk9UVE9NCgojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX0hTSV8yX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfSFNJXzJfQk9UVE9NCmVycjogSFNJXzIgbm90IHN1cHBvcnRlZCBmb3IgSC1JOwkvLyBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0hTSV8yX1RPUCAvIEhDRl9DRkdfSFNJXzJfQk9UVE9NCgojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX0hTSV8zX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfSFNJXzNfQk9UVE9NCmVycjogSFNJXzMgbm90IHN1cHBvcnRlZCBmb3IgSC1JOwkvLyBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0hTSV8zX1RPUCAvIEhDRl9DRkdfSFNJXzNfQk9UVE9NCgojaWZkZWYgSENGX0NGR19IU0lfNF9UT1AgCQkJCQkJCQkJLy8gVG9wIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2lmIEhDRl9DRkdfSFNJXzRfVE9QID09IDAgfHwgXAoJQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV80X0JPVFRPTSA8PSBDRl9DRkdfSFNJXzRfVE9QICYmIEhDRl9DRkdfSFNJXzRfVE9QIDw9IENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9UT1AKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfVE9QCUhDRl9DRkdfSFNJXzRfVE9QCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzRfVE9QCgojaWZkZWYgSENGX0NGR19IU0lfNF9CT1RUT00JCQkJCQkJCS8vIEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNpZiBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfQk9UVE9NIDw9IEhDRl9DRkdfSFNJXzRfQk9UVE9NICYmIEhDRl9DRkdfSFNJXzRfQk9UVE9NIDw9IENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9CT1RUT00KI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfQk9UVE9NCUhDRl9DRkdfSFNJXzRfQk9UVE9NCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzRfQk9UVE9NCgojaWZkZWYgSENGX0NGR19IU0lfNV9UT1AgCQkJCQkJCQkJLy8gVG9wIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2lmIEhDRl9DRkdfSFNJXzVfVE9QID09IDAgfHwgXAoJQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X0JPVFRPTSA8PSBDRl9DRkdfSFNJXzVfVE9QICYmIEhDRl9DRkdfSFNJXzVfVE9QIDw9IENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9UT1AKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfVE9QCUhDRl9DRkdfSFNJXzVfVE9QCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzVfVE9QCgojaWZkZWYgSENGX0NGR19IU0lfNV9CT1RUT00JCQkJCQkJCS8vIEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNpZiBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfQk9UVE9NIDw9IEhDRl9DRkdfSFNJXzVfQk9UVE9NICYmIEhDRl9DRkdfSFNJXzVfQk9UVE9NIDw9IENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9CT1RUT00KI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfQk9UVE9NCUhDRl9DRkdfSFNJXzVfQk9UVE9NCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzVfQk9UVE9NCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNpZiBkZWZpbmVkIEhDRl9DRkdfQVBGXzFfVE9QIHx8IGRlZmluZWQgSENGX0NGR19BUEZfMV9CT1RUT00KZXJyOiBBUEZfMSBub3Qgc3VwcG9ydGVkIGZvciBILUk7CS8vIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZW5kaWYgLy8gSENGX0NGR19BUEZfMV9UT1AgLyBIQ0ZfQ0ZHX0FQRl8xX0JPVFRPTQoKI2lmZGVmIEhDRl9DRkdfQVBGXzJfVE9QICAgICAgICAgICAgICAgICAgCQkJCQkvLyBUb3AgQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNpZiBIQ0ZfQ0ZHX0FQRl8yX1RPUCA9PSAwIHx8IFwKCUNGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9CT1RUT00gPD0gSENGX0NGR19BUEZfMl9UT1AgJiYgSENGX0NGR19BUEZfMl9UT1AgPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX1RPUAojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9UT1AJSENGX0NGR19BUEZfMl9UT1AKI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19BUEZfVE9QCgojaWZkZWYgSENGX0NGR19BUEZfMl9CT1RUT00gICAgICAgICAgICAgICAgICAgICAgIAkJCS8vIEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2lmIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9CT1RUT00gPD0gSENGX0NGR19BUEZfMl9CT1RUT00gJiYgSENGX0NGR19BUEZfMl9CT1RUT00gPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX0JPVFRPTQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9CT1RUT00JSENGX0NGR19BUEZfMl9CT1RUT00KI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19BUEZfQk9UVE9NCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX1NUQV8xX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfU1RBXzFfQk9UVE9NCmVycjogU1RBXzEgbm90IHN1cHBvcnRlZCBmb3IgSC1JOwkvLyBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZW5kaWYgLy8gSENGX0NGR19TVEFfMV9UT1AgLyBIQ0ZfQ0ZHX1NUQV8xX0JPVFRPTQoKI2lmZGVmIEhDRl9DRkdfU1RBXzJfVE9QICAgICAgICAgICAgICAgICAgCQkJCQkvLyBUb3AgQ29tcGF0aWJpbGl0eSBmb3IgU3RhdGlvbiBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2lmIEhDRl9DRkdfU1RBXzJfVE9QID09IDAgfHwgXAoJQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX0JPVFRPTSA8PSBIQ0ZfQ0ZHX1NUQV8yX1RPUCAmJiBIQ0ZfQ0ZHX1NUQV8yX1RPUCA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfVE9QCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX1RPUAlIQ0ZfQ0ZHX1NUQV8yX1RPUAojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1NUQV9UT1AKCiNpZmRlZiBIQ0ZfQ0ZHX1NUQV8yX0JPVFRPTSAgICAgICAgICAgICAgICAgICAgICAgCQkJLy8gQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNpZiBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfQk9UVE9NIDw9IEhDRl9DRkdfU1RBXzJfQk9UVE9NICYmIEhDRl9DRkdfU1RBXzJfQk9UVE9NIDw9IENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9CT1RUT00KI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfQk9UVE9NCUhDRl9DRkdfU1RBXzJfQk9UVE9NCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfU1RBX0JPVFRPTQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgTUFDUk9TICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBtaW4gYW5kIG1heCBtYWNyb3MgKi8KI2lmICEgZGVmaW5lZCBtYXgKI2RlZmluZSBtYXgoYSxiKSAgCQkoKChhKSA+IChiKSkgPyAoYSkgOiAoYikpCiNlbmRpZgojaWYgISBkZWZpbmVkIG1pbgojZGVmaW5lIG1pbihhLGIpICAJCSgoKGEpIDwgKGIpKSA/IChhKSA6IChiKSkKI2VuZGlmCgojaWZkZWYgSENGX1NMRUVQCiNpZiBkZWZpbmVkIE1TRl9XQUlUCmVycjogTVNGIHNob3VsZCBubyBsb25nZXIgc3VwcGx5IHRoaXMgbWFjcm87CiNlbHNlCiNkZWZpbmUgTVNGX1dBSVQoeCkgCQkJCQkJCQkJCQkJCQkJCQkJCVwKCXsgUFJPVF9DTlRfSU5JCQkJCQkJCQkJCQkJCQlcCgkJSENGX1dBSVRfV0hJTEUoICggSVBXKCBIUkVHX0lPICkgJiBIUkVHX0lPX1dPS0VOX1VQICkgPT0gMCApOwkJCQkJCVwKCQlIQ0ZBU1NFUlQoIHByb3RfY250LCBJUFcoIEhSRUdfSU8gKSApCQkJCQkJCVwKCX0KI2VuZGlmIC8vIE1TRl9XQUlUCiNlbHNlCiNkZWZpbmUgTVNGX1dBSVQoeCkJLypOT1AqLwojZW5kaWYgLy8gSENGX1NMRUVQCgojZGVmaW5lIExPRih4KSAJCQkoc2l6ZW9mKHgpL3NpemVvZihoY2ZfMTYpLTEpCgojZGVmaW5lIE1VTF9CWV8yKCB4ICkJKCAoeCkgPDwgMSApCQkJCQkJLy91c2VkIHRvIG11bHRpcGx5IGJ5IDIKI2RlZmluZSBESVZfQllfMiggeCApCSggKHgpID4+IDEgKQkJCQkJCS8vdXNlZCB0byBkaXZpZGUgYnkgMgoKLy9yZXNvbHZlIHByb2JsZW1zIG9uIGZvciBzb21lIDE2IGJpdHMgY29tcGlsZXJzIHRvIGNyZWF0ZSAzMiBiaXQgdmFsdWVzCiNkZWZpbmUgTUVSR0VfMiggaHcsIGx3ICkJKCAoICgoaGNmXzMyKShodykpIDw8IDE2ICkgfCAoKGhjZl8xNikobHcpKSApCgojaWYgISBkZWZpbmVkIEhDRl9TVEFUSUMKI2RlZmluZQkJICBIQ0ZfU1RBVElDCXN0YXRpYwojZW5kaWYgLy8JICBIQ0ZfU1RBVElDCgojaWYgKCAoSENGX1RZUEUpICYgSENGX1RZUEVfSElJNSApID09IDAKI2RlZmluZSBEQVdBX0FDSyggbWFzaykgewkJCQkJCQkJCQkJCQlcCglPUFcoIEhSRUdfRVZfQUNLLCBtYXNrIHwgSFJFR19FVl9BQ0tfUkVHX1JFQURZICk7CQkJCQkJXAoJT1BXKCBIUkVHX0VWX0FDSywgKG1hc2sgJiB+SFJFR19FVl9BTExPQykgfCBIUkVHX0VWX0FDS19SRUdfUkVBRFkgKTsgCX0KI2RlZmluZSBEQVdBX1pFUk9fRklEKHJlZykgT1BXKCByZWcsIDAgKTsKI2Vsc2UKI2RlZmluZSBEQVdBX0FDSyggbWFzaykgICBPUFcoIEhSRUdfRVZfQUNLLCBtYXNrICk7CiNkZWZpbmUgREFXQV9aRVJPX0ZJRChyZWcpCiNlbmRpZiAvLyBIQ0ZfVFlQRV9ISUk1CgojaWYgKEhDRl9UWVBFKSAmIEhDRl9UWVBFX1dQQQojZGVmaW5lCUNBTENfUlhfTUlDKCBwLCBsZW4gKSBjYWxjX21pY19yeF9mcmFnKCBpZmJwLCBwLCBsZW4gKQojZGVmaW5lCUNBTENfVFhfTUlDKCBwLCBsZW4gKSBjYWxjX21pY190eF9mcmFnKCBpZmJwLCBwLCBsZW4gKQojZGVmaW5lIElGX1NTTih4KSAgeAojZGVmaW5lIElGX05PVF9TU04oeCkKI2Vsc2UKI2RlZmluZQlDQUxDX1JYX01JQyggcCwgbGVuICkKI2RlZmluZQlDQUxDX1RYX01JQyggcCwgbGVuICkKI2RlZmluZSBNSUNfUlhfUlROKCBtaWMsIGR3ICkKI2RlZmluZSBNSUNfVFhfUlROKCBtaWMsIGR3ICkKI2RlZmluZSBJRl9TU04oeCkKI2RlZmluZSBJRl9OT1RfU1NOKHgpIHgKI2VuZGlmIC8vIEhDRl9UWVBFX1dQQQoKI2lmIEhDRl9UQUxMSUVTICYgSENGX1RBTExJRVNfSENGCQkvL0hDRiB0YWxseSBzdXBwb3J0CiNkZWZpbmUgSUZfVEFMTFkoeCkgIHgKI2Vsc2UKI2RlZmluZSBJRl9UQUxMWSh4KQojZW5kaWYgLy8gSENGX1RBTExJRVNfSENGCgoKI2lmIEhDRl9ETUEKI2RlZmluZSBJRl9ETUEoeCkJCQl4CiNkZWZpbmUgSUZfTk9UX0RNQSh4KQojZGVmaW5lIElGX1VTRV9ETUEoeCkgCQlpZiAoICAgaWZicC0+SUZCX0NudGxPcHQgJiBVU0VfRE1BICApIHgKI2RlZmluZSBJRl9OT1RfVVNFX0RNQSh4KQlpZiAoICEoaWZicC0+SUZCX0NudGxPcHQgJiBVU0VfRE1BKSApIHgKI2Vsc2UKI2RlZmluZSBJRl9ETUEoeCkKI2RlZmluZSBJRl9OT1RfRE1BKHgpCQl4CiNkZWZpbmUgSUZfVVNFX0RNQSh4KQojZGVmaW5lIElGX05PVF9VU0VfRE1BKHgpIAl4CiNlbmRpZiAvLyBIQ0ZfRE1BCgoKI2RlZmluZSBJUFcoeCkgKChoY2ZfMTYpSU5fUE9SVF9XT1JEKCBpZmJwLT5JRkJfSU9CYXNlICsgKHgpICkgKQojZGVmaW5lIE9QVyh4LCB5KSBPVVRfUE9SVF9XT1JEKCBpZmJwLT5JRkJfSU9CYXNlICsgKHgpLCB5ICkKCS8qIG1ha2Ugc3VyZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgSENGX1dBSVRfV0hJTEUgaXMgc3VjaCB0aGF0IHRoZXJlIG1heSBiZSBtdWx0aXBsZSBIQ0ZfV0FJVF9XSElMRSBjYWxscwoJICogaW4gYSByb3cgYW5kIHRoYXQgd2hlbiBvbmUgZmFpbHMgYWxsIHN1YnNlcXVlbnQgZmFpbCBpbW1lZGlhdGVseSB3aXRob3V0IHJlaW5pdGlhbGl6YXRpb24gb2YgcHJvdF9jbnQKCSAqLwojaWYgSENGX1BST1RfVElNRSA9PSAwCiNkZWZpbmUgUFJPVF9DTlRfSU5JCiNkZWZpbmUgSUZfUFJPVF9USU1FKHgpCiNpZiBkZWZpbmVkIEhDRl9ZSUVMRAojZGVmaW5lIEhDRl9XQUlUX1dISUxFKCB4ICkgd2hpbGUgKCAoeCkgJiYgKEhDRl9ZSUVMRCkgKSAvKk5PUCovOwojZWxzZQojZGVmaW5lIEhDRl9XQUlUX1dISUxFKCB4ICkgd2hpbGUgKCB4ICkgLypOT1AqLzsKI2VuZGlmIC8vIEhDRl9ZSUVMRAojZWxzZQojZGVmaW5lIFBST1RfQ05UX0lOSSAJaGNmXzMyIHByb3RfY250ID0gaWZicC0+SUZCX1RpY2tJbmk7CiNkZWZpbmUgSUZfUFJPVF9USU1FKHgpCXgKI2lmIGRlZmluZWQgSENGX1lJRUxECiNkZWZpbmUgSENGX1dBSVRfV0hJTEUoIHggKSB3aGlsZSAoIHByb3RfY250ICYmICh4KSAmJiAoSENGX1lJRUxEKSApIHByb3RfY250LS07CiNlbHNlCiNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgojZGVmaW5lIEhDRl9XQUlUX1dISUxFKCB4ICkgd2hpbGUgKCBwcm90X2NudCAmJiAoeCkgKSB7IHVkZWxheSgyKTsgcHJvdF9jbnQtLTsgfQojZW5kaWYgLy8gSENGX1lJRUxECiNlbmRpZiAvLyBIQ0ZfUFJPVF9USU1FCgojaWYgZGVmaW5lZCBIQ0ZfRVhfSU5UCi8vI2lmIEhDRl9FWF9JTlQgJiB+KCBIQ0ZfRVhfSU5UX1RYX0VYIHwgSENGX0VYX0lOVF9UWF9PSyB8IEhDRl9FWF9JTlRfVElDSyApCjs/IG91dCBkYXRlZCBjaGVja2luZwplcnI6IHlvdSB1c2VkIGFuIGludmFsaWQgYml0bWFzazsKLy8gI2VuZGlmIC8vIEhDRl9FWF9JTlQgdmFsaWRhdGlvbgovLyAjZWxzZQovLyAjZGVmaW5lIEhDRl9FWF9JTlQgMHgwMDAKI2VuZGlmIC8vIEhDRl9FWF9JTlQKCiNpZiAwIC8vZ2V0IGNvbXBpbGVyIGdvaW5nCiNpZiBIQ0ZfRVhfSU5UX1RJQ0sJIT0gSFJFR19FVl9USUNLCjs/IG91dCBkYXRlZCBjaGVja2luZwplcnI6IHNvbWVvbmUgcmVkZWZpbmVkIHRoZXNlIG1hY3JvcyB3aGlsZSB0aGUgaW1wbGVtZW5hdGlvbiBhc3N1bWVzIHRoZXkgYXJlIGVxdWFsOwojZW5kaWYKI2lmIEhDRl9FWF9JTlRfVFhfT0sgIT0gSEZTX1RYX0NOVExfVFhfT0sgfHwgSEZTX1RYX0NOVExfVFhfT0sgIT0gSFJFR19FVl9UWF9PSwo7PyBvdXQgZGF0ZWQgY2hlY2tpbmcKZXJyOiBzb21lb25lIHJlZGVmaW5lZCB0aGVzZSBtYWNyb3Mgd2hpbGUgdGhlIGltcGxlbWVuYXRpb24gYXNzdW1lcyB0aGV5IGFyZSBlcXVhbDsKI2VuZGlmCiNpZiBIQ0ZfRVhfSU5UX1RYX0VYICE9IEhGU19UWF9DTlRMX1RYX0VYIHx8IEhGU19UWF9DTlRMX1RYX0VYICE9IEhSRUdfRVZfVFhfRVgKOz8gb3V0IGRhdGVkIGNoZWNraW5nCmVycjogc29tZW9uZSByZWRlZmluZWQgdGhlc2UgbWFjcm9zIHdoaWxlIHRoZSBpbXBsZW1lbmF0aW9uIGFzc3VtZXMgdGhleSBhcmUgZXF1YWw7CiNlbmRpZgojZW5kaWYgLy8gMCBnZXQgY29tcGlsZXIgZ29pbmcKCgovKiBUaGUgYXNzZXJ0IGluIEhDRkxPR0VOVFJZIGNoZWNrcyBhZ2FpbnN0IHJlLWVudHJhbmN5LiBSZS1lbnRyYW5jeSBjb3VsZCBiZSBjYXVzZWQgYnkgTVNGIGxvZ2ljIGF0CiAqIHRhc2stbGV2ZWwgY2FsbGluZyBoY2ZfZnVuY3Rpb25zIHdpdGhvdXQgc2hpZWxkaW5nIHdpdGggSENGX0FDVF9PTi9fT0ZGLiBXaGVuIGFuIGludGVycnVwdCBvY2N1cnMsCiAqIHRoZSBJU1IgY291bGQgKGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBjYXVzZSByZS1lbnRlcmluZyBvZiB0aGUgaW50ZXJydXB0ZWQgSENGLXJvdXRpbmUuCiAqCiAqIFRoZSAiKGlmYnAtPklGQl9Bc3NlcnRXaGVyZSA9IHdoZXJlKSIgdGVzdCBpbiBIQ0ZMT0dFTlRSWSBzZXJ2aWNlcyBBTFNPIGFzIGEgc3RhdGVtZW50IHRvIGdldCBhcm91bmQ6CiAqICNwcmFnbWEgd2FybmluZzogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAogKiBvbiB0aGUgaWYtc3RhdGVtZW50CiAqLwojaWYgSENGX0FTU0VSVAojZGVmaW5lIEhDRkFTU0VSVCh4LHEpIHtpZiAoISh4KSkge21kZF9hc3NlcnQoICAgICAgICBpZmJwLCBfX0xJTkVfXyAgICAgICAgICAgICAgICAgICAsIHEgKTt9fQojZGVmaW5lIE1NREFTU0VSVCh4LHEpIHtpZiAoISh4KSkge21kZF9hc3NlcnQoIGFzc2VydF9pZmJwLCBfX0xJTkVfXyArIEZJTEVfTkFNRV9PRkZTRVQsIHEgKTt9fQoKI2RlZmluZSBIQ0ZMT0dFTlRSWSggd2hlcmUsIHdoYXQgKSAJCQkJCQkJCQkJCQkJCVwKe2lmICggKGlmYnAtPklGQl9Bc3NlcnRXaGVyZSA9IHdoZXJlKSA8PSAxNSApIHsJCQkJCQkJCQkJCVwKCUhDRl9FTlRSWSggaWZicCApOyAJCQkJCQkJCQkJCQkJCQkJCVwKCUhDRkFTU0VSVCggKGlmYnAtPklGQl9Bc3NlcnRUcmFjZSAmIDE8PCgod2hlcmUpJjB4RikpID09IDAsIGlmYnAtPklGQl9Bc3NlcnRUcmFjZSApOwkJXAoJaWZicC0+SUZCX0Fzc2VydFRyYWNlIHw9IDE8PCgod2hlcmUpJjB4Rik7CQkJCQkJCQkJCQkJXAoJfQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwKSENGVFJBQ0UoaWZicCwgd2hlcmUgKQkJCQkJCQkJCQkJCQkJCQkJXApIQ0ZUUkFDRVZBTFVFKGlmYnAsIHdoYXQgKQkJCQkJCQkJCQkJCQkJCQlcCn0KCiNkZWZpbmUgSENGTE9HRVhJVCggd2hlcmUgKSAJCQkJCQkJCQkJCQkJCQlcCntpZiAoIChpZmJwLT5JRkJfQXNzZXJ0V2hlcmUgPSB3aGVyZSkgPD0gMTUgKSB7CQkJCQkJCQkJCQlcCiAgCUhDRl9FWElUKCBpZmJwICk7IAkJCQkJCQkJCQkJCQkJCQkJXAoJaWZicC0+SUZCX0Fzc2VydFRyYWNlICY9IH4oMTw8KCh3aGVyZSkmMHhGKSk7CQkJCQkJCQkJCQkJXAoJfQkJCQkJCSAJCQkJCQkJCQkJCQkJCQlcCkhDRlRSQUNFKGlmYnAsICh3aGVyZSl8SENGX1RSQUNFX0VYSVQgKQkJCQkJCQkJCQkJCQlcCn0KCiNlbHNlIC8vIEhDRl9BU1NFUlQKI2RlZmluZSBIQ0ZBU1NFUlQoIHgsIHEgKQojZGVmaW5lIE1NREFTU0VSVCggeCwgcSApCiNkZWZpbmUgSENGTE9HRU5UUlkoIHdoZXJlLCB3aGF0ICkgCSAgCXtIQ0ZfRU5UUlkoIGlmYnAgKTt9CiNkZWZpbmUgSENGTE9HRVhJVCggd2hlcmUgKSAJCSAgCXtIQ0ZfRVhJVCggaWZicCApO30KI2VuZGlmIC8vIEhDRl9BU1NFUlQKCiNpZiBIQ0ZfSU5UX09OCi8qIDs/IEhDRkFTU0VSVF9JTlQKICogI2lmIChIQ0ZfU0xFRVApICYgSENGX0REUwogKiAjZGVmaW5lIEhDRkFTU0VSVF9JTlQgSENGQVNTRVJUKCBpZmJwLT5JRkJfSW50T2ZmQ250ICE9IDB4RkZGRiAmJiBpZmJwLT5JRkJfSW50T2ZmQ250ICE9IDB4RkZGRSwgXAogKiAJCQkJCQkJCSBpZmJwLT5JRkJfSW50T2ZmQ250ICkKICogI2Vsc2UKICovCiNkZWZpbmUgSENGQVNTRVJUX0lOVCBIQ0ZBU1NFUlQoIGlmYnAtPklGQl9JbnRPZmZDbnQgIT0gMHhGRkZGLCBpZmJwLT5JRkJfSW50T2ZmQ250ICkKLy8gI2VuZGlmIC8vIEhDRl9ERFMKI2Vsc2UKI2RlZmluZSBIQ0ZBU1NFUlRfSU5UCiNlbmRpZiAvLyBIQ0ZfSU5UX09OCgoKI2lmIGRlZmluZWQgSENGX1RSQUNFCiNkZWZpbmUgSENGVFJBQ0UoaWZicCwgd2hlcmUgKQkgICB7T1BXKCBIUkVHX1NXXzEsIHdoZXJlICk7fQovLyNkZWZpbmUgSENGVFJBQ0UoaWZicCwgd2hlcmUgKQkgICB7SENGQVNTRVJUKCBET19BU1NFUlQsIHdoZXJlICk7fQojZGVmaW5lIEhDRlRSQUNFVkFMVUUoaWZicCwgd2hhdCApIHtPUFcoIEhSRUdfU1dfMiwgd2hhdCAgKTt9Ci8vI2RlZmluZSBIQ0ZUUkFDRVZBTFVFKGlmYnAsIHdoYXQgKSB7SENGQVNTRVJUKCBET19BU1NFUlQsIHdoYXQgICk7fQojZWxzZQojZGVmaW5lIEhDRlRSQUNFKGlmYnAsIHdoZXJlICkKI2RlZmluZSBIQ0ZUUkFDRVZBTFVFKGlmYnAsIHdoYXQgKQojZW5kaWYgLy8gSENGX1RSQUNFCgoKI2lmIEhDRl9CSUdfRU5ESUFOCiNkZWZpbmUgQkVfUEFSKHgpCQkJCSx4CiNlbHNlCiNkZWZpbmUgQkVfUEFSKHgpCiNlbmRpZiAvLyBIQ0ZfQklHX0VORElBTgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBFTkQgT0YgTUFDUk9TICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIFBST1RPVFlQRVMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWYgSENGX0FTU0VSVApleHRlcm4gSUZCUCBCQVNFRCBhc3NlcnRfaWZicDsJCQkvL3RvIG1ha2UgYXNzZXJ0cyBlYXNpbHkgd29yayB1bmRlciBNTUQgYW5kIERIRgpFWFRFUk5fQyB2b2lkCQkgbWRkX2Fzc2VydAkJCShJRkJQIGlmYnAsIHVuc2lnbmVkIGludCBsaW5lX251bWJlciwgaGNmXzMyIHEgKTsKI2VuZGlmIC8vSENGX0FTU0VSVAoKI2lmICEgKCAoSENGX0lPKSAmIEhDRl9JT18zMkJJVFMgKQkJCQkvLyBkZWZpbmVkIDE2IGJpdHMgb25seQojdW5kZWYgT1VUX1BPUlRfU1RSSU5HXzMyCiN1bmRlZiBJTl9QT1JUX1NUUklOR18zMgojZW5kaWYgLy8gSENGX0lPCiNlbmRpZgkvL0hDRkRFRkNfSAoK