I2lmbmRlZiBIQ0ZERUZDX0gKI2RlZmluZSBIQ0ZERUZDX0ggMQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKICogRklMRSAgIDogSENGREVGLkgKICoKICogREFURSAgIDogJERhdGU6IDIwMDQvMDgvMDUgMTE6NDc6MTAgJCAgICRSZXZpc2lvbjogMS44ICQKICogT3JpZ2luYWw6IDIwMDQvMDUvMjggMTQ6MDU6MzUgICAgUmV2aXNpb246IDEuNTkgICAgICBUYWc6IGhjZjdfdDIwMDQwNjAyXzAxCiAqIE9yaWdpbmFsOiAyMDA0LzA1LzEzIDE1OjMxOjQ1ICAgIFJldmlzaW9uOiAxLjUzICAgICAgVGFnOiBoY2Y3X3Q3XzIwMDQwNTEzXzAxCiAqIE9yaWdpbmFsOiAyMDA0LzA0LzE1IDA5OjI0OjQyICAgIFJldmlzaW9uOiAxLjQ0ICAgICAgVGFnOiBoY2Y3X3Q3XzIwMDQwNDE1XzAxCiAqIE9yaWdpbmFsOiAyMDA0LzA0LzEzIDE0OjIyOjQ1ICAgIFJldmlzaW9uOiAxLjQzICAgICAgVGFnOiB0N18yMDA0MDQxM18wMQogKiBPcmlnaW5hbDogMjAwNC8wNC8wMSAxNTozMjo1NSAgICBSZXZpc2lvbjogMS40MCAgICAgIFRhZzogdDdfMjAwNDA0MDFfMDEKICogT3JpZ2luYWw6IDIwMDQvMDMvMTAgMTU6Mzk6MjggICAgUmV2aXNpb246IDEuMzYgICAgICBUYWc6IHQyMDA0MDMxMF8wMQogKiBPcmlnaW5hbDogMjAwNC8wMy8wMyAxNDoxMDoxMiAgICBSZXZpc2lvbjogMS4zNCAgICAgIFRhZzogdDIwMDQwMzA0XzAxCiAqIE9yaWdpbmFsOiAyMDA0LzAzLzAyIDA5OjI3OjEyICAgIFJldmlzaW9uOiAxLjMyICAgICAgVGFnOiB0MjAwNDAzMDJfMDMKICogT3JpZ2luYWw6IDIwMDQvMDIvMjQgMTM6MDA6MjkgICAgUmV2aXNpb246IDEuMjkgICAgICBUYWc6IHQyMDA0MDIyNF8wMQogKiBPcmlnaW5hbDogMjAwNC8wMi8xOCAxNzoxMzo1NyAgICBSZXZpc2lvbjogMS4yNiAgICAgIFRhZzogdDIwMDQwMjE5XzAxCiAqCiAqIEFVVEhPUiA6IE5pY28gVmFsc3RlcgogKgogKiBTUEVDSUZJQ0FUSU9OOiAuLi4uLi4uLi4uLgogKgogKiBERVNDICAgOiBEZWZpbml0aW9ucyBhbmQgUHJvdG90eXBlcyBmb3IgSENGIG9ubHkKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCiAqCiAqIFNPRlRXQVJFIExJQ0VOU0UKICoKICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCiAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKICogc29mdHdhcmUgaW5kaWNhdGVzIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIElmIHlvdSBkbwogKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCiAqCiAqIENPUFlSSUdIVCCpIDE5OTQgLSAxOTk1ICAgYnkgQVQmVC4gICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAogKiBDT1BZUklHSFQgqSAxOTk2IC0gMjAwMCBieSBMdWNlbnQgVGVjaG5vbG9naWVzLiAgIEFsbCBSaWdodHMgUmVzZXJ2ZWQKICogQ09QWVJJR0hUIKkgMjAwMSAtIDIwMDQgICBieSBBZ2VyZSBTeXN0ZW1zIEluYy4gICBBbGwgUmlnaHRzIFJlc2VydmVkCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIG9yIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICoKICogLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCiAqICAgIGRpc3RyaWJ1dGlvbi4KICoKICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAqCiAqIC4gTmVpdGhlciB0aGUgbmFtZSBvZiBBZ2VyZSBTeXN0ZW1zIEluYy4gbm9yIHRoZSBuYW1lcyBvZiB0aGUgY29udHJpYnV0b3JzCiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQogKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoKICogRGlzY2xhaW1lcgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywKICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgogKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCiAqIFVTRSwgTU9ESUZJQ0FUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSElTIFNPRlRXQVJFIElTIFNPTEVMWSBBVCBUSEUgVVNFUlMgT1dOCiAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwogKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCiAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCiAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICiAqIERBTUFHRS4KICoKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgUCBSIEUgRiBJIFggRSBTICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLy9JRkJfICAgICAgSW50ZXJmYWNlIEJsb2NrCi8vSENNRF8gICAgIEhlcm1lcyBDb21tYW5kCi8vSEZTXyAgICAgIEhlcm1lcyAoVHJhbnNtaXQvUmVjZWl2ZSkgRnJhbWUgU3RydWN0dXJlCi8vSFJFR18gICAgIEhlcm1lcyBSZWdpc3RlcgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEdFTkVSQUwgRVFVQVRFUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCiNkZWZpbmUgSENGX01BR0lDICAgICAgICAgICAgICAgMHg3RDM3ICAvLyAifTciIEhhbmRsZSB2YWxpZGF0aW9uCgojZGVmaW5lIFBMVUdfREFUQV9PRkZTRVQgICAgICAgIDB4MDAwMDA4MDAgIC8vbmVlZGVkIGJ5IHNvbWUgdGVzdCB0b29sIG9uIHRvcCBvZiBILUlJIE5ESVMgZHJpdmVyCgojZGVmaW5lIElOSV9USUNLX0lOSSAgICAgICAgICAgIDB4MDAwNDAwMDBMCgojZGVmaW5lIElPX0lOICAgICAgICAgICAgICAgICAgIDAgICAgICAgLy9oY2Zpb19pbl9zdHJpbmcKI2RlZmluZSBJT19PVVQgICAgICAgICAgICAgICAgICAxICAgICAgIC8vaGNmaW9fb3V0X3N0cmluZwoKLy9ET19BU1NFUlQsIGNyZWF0ZSBhbiBhcnRpZmljaWFsIEZBTFNFIHRvIGZvcmNlIGFuIEFTU0VSVCB3aXRob3V0IHRoZSBuYXN0eSBjb21waWxlciB3YXJuaW5nCiNkZWZpbmUgRE9fQVNTRVJUICAgICAgICAgICAgICAgKCBhc3NlcnRfaWZicC0+SUZCX01hZ2ljICE9IEhDRl9NQUdJQyAmJiBhc3NlcnRfaWZicC0+SUZCX01hZ2ljID09IEhDRl9NQUdJQyApCiNkZWZpbmUgTlRfQVNTRVJUICAgICAgICAgICAgICAgMHgwMDAwICAgICAgLy8sIE5FVkVSX1RFU1RFRAojZGVmaW5lIE5FVkVSX1RFU1RFRCAgICAgICAgICAgIE1FUkdFXzIoIDB4RUZGRSwgMHhGRUVGICkKI2RlZmluZSBTRV9BU1NFUlQgICAgICAgICAgICAgICAweDVFRkYgICAgICAvKiBTaWRlIEVmZmVjdCwgSENGQVNTRVJUIGludm9rYXRpb24gd2hpY2ggYXJlIG9ubHkgY2FsbGVkIGZvciB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaWRlIGVmZmVjdCBhbmQgd2hpY2ggc2hvdWxkIG5ldmVyIHRyaWdnZXIgKi8KI2RlZmluZSBESEZfRklMRV9OQU1FX09GRlNFVCAgICAxMDAwMCAgICAgICAvL3RvIGRpc3Rpbmd1aXNoIERIRiBmcm9tIEhDRiBhc3NlcnRzIGJ5IG1lYW5zIG9mIGxpbmUgbnVtYmVyCiNkZWZpbmUgTU1EX0ZJTEVfTkFNRV9PRkZTRVQgICAgMjAwMDAgICAgICAgLy90byBkaXN0aW5ndWlzaCBNTUQgZnJvbSBIQ0YgYXNzZXJ0cyBieSBtZWFucyBvZiBsaW5lIG51bWJlcgoKLy8gdHJhY2UgY29kZXMgdXNlZCB0bwovLyAxOiBwcm9maWxlIGV4ZWN1dGlvbiB0aW1lcyB2aWEgSENGX1RSQUNFIGFuZCBIQ0ZfVFJBQ0VfVkFMVUUKLy8gMjogaGllcmFyY2hpY2FsIGZsb3cgaW5mb3JtYXRpb24gdmlhIEhDRkxPR0VOVFJZIC8gSENGTE9HRVhJVAoKLy8jZGVmaW5lIEhDRl9UUkFDRV9DT05ORUNUICAgICB1c2VsZXNzCi8vI2RlZmluZSBIQ0ZfVFJBQ0VfRElTQ09OTkVDVCAgdXNlbGVzcwojZGVmaW5lIEhDRl9UUkFDRV9BQ1RJT04gICAgICAgIDB4MDAwMCAgLy8gMHgwMDAxCiNkZWZpbmUgSENGX1RSQUNFX0NOVEwgICAgICAgICAgMHgwMDAxICAvLyAweDAwMDIKI2RlZmluZSBIQ0ZfVFJBQ0VfRE1BX1JYX0dFVCAgICAweDAwMDIgIC8vIDB4MDAwNAojZGVmaW5lIEhDRl9UUkFDRV9ETUFfUlhfUFVUICAgIDB4MDAwMyAgLy8gMHgwMDA4CiNkZWZpbmUgSENGX1RSQUNFX0RNQV9UWF9HRVQgICAgMHgwMDA0ICAvLyAweDAwMTAKI2RlZmluZSBIQ0ZfVFJBQ0VfRE1BX1RYX1BVVCAgICAweDAwMDUgIC8vIDB4MDAyMAojZGVmaW5lIEhDRl9UUkFDRV9HRVRfSU5GTyAgICAgIDB4MDAwNiAgLy8gMHgwMDQwCiNkZWZpbmUgSENGX1RSQUNFX1BVVF9JTkZPICAgICAgMHgwMDA3ICAvLyAweDAwODAKI2RlZmluZSBIQ0ZfVFJBQ0VfUkNWX01TRyAgICAgICAweDAwMDggIC8vIDB4MDEwMAojZGVmaW5lIEhDRl9UUkFDRV9TRU5EX01TRyAgICAgIDB4MDAwOSAgLy8gMHgwMjAwCiNkZWZpbmUgSENGX1RSQUNFX1NFUlZJQ0VfTklDICAgMHgwMDBBICAvLyAweDA0MDAKLy8gI2RlZmluZSBIQ0ZfVFJBQ0VfICAgICAgICAgICAweDAwMEMgIC8vIDB4MTAwMAovLyAjZGVmaW5lIEhDRl9UUkFDRV8gICAgICAgICAgIDB4MDAwRCAgLy8gMHgyMDAwCi8vICNkZWZpbmUgSENGX1RSQUNFXyAgICAgICAgICAgMHgwMDBFICAvLyAweDQwMDAKLy8gI2RlZmluZSBIQ0ZfVFJBQ0VfICAgICAgICAgICAweDAwMEYgIC8vIDB4ODAwMAovLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSENGX1RSQUNFXy4uLiBjb2RlcyBiZWxvdyAweDAwMTAgYXJlIGFzc2VydGVkIG9uIHJlLWVudHJ5CiNkZWZpbmUgSENGX1RSQUNFX0FDVElPTl9LTFVER0UgMHgwMDEwICAvKiBvbmNlIHlvdSBzdGFydCBpbnRyb2R1Y2luZyBrbHVkZ2VzIHRoZXJlIGlzIG5vIGVuZCB0byBpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhpcyBpcyBhbiBlc2NhcGUgdG8gZG8gbm90IGFzc2VydCBvbiByZS1lbnRyYW5jeSBwcm9ibGVtIGNhdXNlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYnkgSENGX0FDVF9JTlRfRk9SQ0VfT04gdXNlZCB0byBnZXQgTWljcm9zb2Z0cyBORElTIGRyaXZlcnMgZ29pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwojZGVmaW5lIEhDRl9UUkFDRV9TVFJJTyAgICAgICAgIDB4MDAyMAojZGVmaW5lIEhDRl9UUkFDRV9BTExPQyAgICAgICAgIDBYMDAyMQojZGVmaW5lIEhDRl9UUkFDRV9ETCAgICAgICAgICAgIDBYMDAyMwojZGVmaW5lIEhDRl9UUkFDRV9JU1JfSU5GTyAgICAgIDBYMDAyNAojZGVmaW5lIEhDRl9UUkFDRV9DQUxJQlJBVEUgICAgIDB4MDAyNgoKI2RlZmluZSBIQ0ZfVFJBQ0VfQ01EX0NQTCAgICAgICAweDAwNDAKI2RlZmluZSBIQ0ZfVFJBQ0VfQ01EX0VYRSAgICAgICAweDAwNDEKI2RlZmluZSBIQ0ZfVFJBQ0VfR0VUX0ZJRCAgICAgICAweDAwNDIKI2RlZmluZSBIQ0ZfVFJBQ0VfR0VUX0ZSQUcgICAgICAweDAwNDMKI2RlZmluZSBIQ0ZfVFJBQ0VfSU5JVCAgICAgICAgICAweDAwNDQKI2RlZmluZSBIQ0ZfVFJBQ0VfUFVUX0ZSQUcgICAgICAweDAwNDUKI2RlZmluZSBIQ0ZfVFJBQ0VfU0VUVVBfQkFQICAgICAweDAwNDYKCiNkZWZpbmUgSENGX1RSQUNFX0VYSVQgICAgICAgICAgMHg4MDAwICAvLyBLZWlsIEMgd2FybnMgImxvbmcgY29uc3RhbnQgdHJ1bmNhdGVkIHRvIGludCIKCi8vI2RlZmluZSBCQVBfMCAgICAgICAgICAgICAgICAgSFJFR19EQVRBXzAgICAgIC8vVXNlZCBieSBETUEgY29udHJvbGxlciB0byBhY2Nlc3MgTklDIFJBTQojZGVmaW5lIEJBUF8xICAgICAgICAgICAgICAgICAgIEhSRUdfREFUQV8xICAgICAvL1VzZWQgYnkgSENGIHRvIGFjY2VzcyBOSUMgUkFNCgoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqIEhlcm1lcyBSZWNlaXZlL1RyYW5zbWl0IEZyYW1lIFN0cnVjdHVyZXMKLy9IRlNfU1RBVAovL3NlZSBNTUQuSCBmb3IgSEZTX1NUQVRfRVJSCiNkZWZpbmUgICAgIEhGU19TVEFUX01TR19UWVBFICAgMHhFMDAwICAvL0hlcm1lcyByZXBvcnRlZCBNZXNzYWdlIFR5cGUKI2RlZmluZSAgICAgSEZTX1NUQVRfTUlDX0tFWV9JRCAweDE4MDAgIC8vTUlDIGtleSB1c2VkIChpZiBhbnkpCiNkZWZpbmUgICAgIEhGU19TVEFUXzEwNDIgICAgICAgMHgyMDAwICAvL1JGQzEwNDIgRW5jb2RlZAojZGVmaW5lICAgICBIRlNfU1RBVF9UVU5ORUwgICAgIDB4NDAwMCAgLy9CcmlkZ2UtVHVubmVsIEVuY29kZWQKI2RlZmluZSAgICAgSEZTX1NUQVRfV01QX01TRyAgICAweDYwMDAgIC8vV2F2ZUxBTi1JSSBNYW5hZ2VtZW50IFByb3RvY29sIEZyYW1lCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfV1BBCiNkZWZpbmUgICAgIEhGU19TVEFUX01JQyAgICAgICAgMHgwMDEwICAvL0ZyYW1lIGNvbnRhaW5zIE1JQyAgLy87PyByZS1pbnN0YXRlIHdoZW4gRi9XIHJlYWR5CiNlbmRpZgoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqIEhlcm1lcyBSZWdpc3RlciBPZmZzZXRzIGFuZCBDb21tYW5kIGJpdHMKI2RlZmluZSBIUkVHX0lPX1JBTkdFICAgICAgICAgICAweDgwICAgICAgICAvL0kvTyBSYW5nZSB1c2VkIGJ5IEhlcm1lcwoKCi8vKioqKioqKioqKioqKioqKioqKioqKioqKiBDb21tYW5kL1N0YXR1cwojZGVmaW5lIEhSRUdfQ01EICAgICAgICAgICAgICAgIDB4MDAgICAgICAgIC8vCiNkZWZpbmUgICAgIEhDTURfQ01EX0NPREUgICAgICAgICAgIDB4M0YKI2RlZmluZSBIUkVHX1BBUkFNXzAgICAgICAgICAgICAweDAyICAgICAgICAvLwojZGVmaW5lIEhSRUdfUEFSQU1fMSAgICAgICAgICAgIDB4MDQgICAgICAgIC8vCiNkZWZpbmUgSFJFR19QQVJBTV8yICAgICAgICAgICAgMHgwNiAgICAgICAgLy8KI2RlZmluZSBIUkVHX1NUQVQgICAgICAgICAgICAgICAweDA4ICAgICAgICAvLwojZGVmaW5lICAgICBIUkVHX1NUQVRfQ01EX0NPREUgICAgICAweDAwM0YgIC8vCiNkZWZpbmUgICAgIEhSRUdfU1RBVF9ESUFHX0VSUiAgICAgIDB4MDEwMAojZGVmaW5lICAgICBIUkVHX1NUQVRfSU5RVUlSRV9FUlIgICAweDA1MDAKI2RlZmluZSAgICAgSFJFR19TVEFUX0NNRF9SRVNVTFQgICAgMHg3RjAwICAvLwojZGVmaW5lIEhSRUdfUkVTUF8wICAgICAgICAgICAgIDB4MEEgICAgICAgIC8vCiNkZWZpbmUgSFJFR19SRVNQXzEgICAgICAgICAgICAgMHgwQyAgICAgICAgLy8KI2RlZmluZSBIUkVHX1JFU1BfMiAgICAgICAgICAgICAweDBFICAgICAgICAvLwoKCi8vKioqKioqKioqKioqKioqKioqKioqKioqKiBGSUQgTWFuYWdlbWVudAojZGVmaW5lIEhSRUdfSU5GT19GSUQgICAgICAgICAgIDB4MTAgICAgICAgIC8vCiNkZWZpbmUgSFJFR19SWF9GSUQgICAgICAgICAgICAgMHgyMCAgICAgICAgLy8KI2RlZmluZSBIUkVHX0FMTE9DX0ZJRCAgICAgICAgICAweDIyICAgICAgICAvLwojZGVmaW5lIEhSRUdfVFhfQ09NUExfRklEICAgICAgIDB4MjQgICAgICAgIC8vCgoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqIEJBUAovLzIwMDMxMDMwIEhXaSBJbnNlcnRlZCB0aGlzIGFnYWluIGJlY2F1c2UgdGhlIGRvbmdsZSBjb2RlIHVzZXMgdGhpcyAoR1BJRi5DKQovLyNkZWZpbmUgSFJFR19TRUxFQ1RfMCAgICAgICAgIDB4MTggICAgICAgIC8vCi8vI2RlZmluZSBIUkVHX09GRlNFVF8wICAgICAgICAgMHgxQyAgICAgICAgLy8KLy8jZGVmaW5lIEhSRUdfREFUQV8wICAgICAgICAgICAweDM2ICAgICAgICAvLwoKLy8jZGVmaW5lICAgSFJFR19PRkZTRVRfQlVTWSAgICAgICAgMHg4MDAwICAvLyB1c2UgSENNRF9CVVNZCiNkZWZpbmUgICAgIEhSRUdfT0ZGU0VUX0VSUiAgICAgICAgIDB4NDAwMCAgLy8KLy9yc3J2ZCAjZGVmaW5lICAgICBIUkVHX09GRlNFVF9EQVRBX09GRlNFVCAweDBGRkYgIC8vCgojZGVmaW5lIEhSRUdfU0VMRUNUXzEgICAgICAgICAgIDB4MUEgICAgICAgIC8vCiNkZWZpbmUgSFJFR19PRkZTRVRfMSAgICAgICAgICAgMHgxRSAgICAgICAgLy8KI2RlZmluZSBIUkVHX0RBVEFfMSAgICAgICAgICAgICAweDM4ICAgICAgICAvLwoKCi8vKioqKioqKioqKioqKioqKioqKioqKioqKiBFdmVudAojZGVmaW5lIEhSRUdfRVZfU1RBVCAgICAgICAgICAgIDB4MzAgICAgICAgIC8vCiNkZWZpbmUgSFJFR19JTlRfRU4gICAgICAgICAgICAgMHgzMiAgICAgICAgLy8KI2RlZmluZSBIUkVHX0VWX0FDSyAgICAgICAgICAgICAweDM0ICAgICAgICAvLwoKI2RlZmluZSAgICBIUkVHX0VWX1RJQ0sgICAgICAgICAgICAgMHg4MDAwICAvL0F1eGlsaWFyeSBUaW1lciBUaWNrCi8vI2RlZmluZSAgSFJFR19FVl9SRVMgICAgICAgICAgICAgIDB4NDAwMCAgLy9ILUkgb25seTogSC9XIGVycm9yIChXYWl0IFRpbWUtb3V0KQojZGVmaW5lICAgIEhSRUdfRVZfSU5GT19EUk9QICAgICAgICAweDIwMDAgIC8vV01BQyBkaWQgbm90IGhhdmUgc3VmZmljaWVudCBSQU0gdG8gYnVpbGQgVW5zb2xsaWNpdGVkIEZyYW1lCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfSElJNQojZGVmaW5lICAgIEhSRUdfRVZfQUNLX1JFR19SRUFEWSAgICAweDAwMDAKI2Vsc2UKI2RlZmluZSAgICBIUkVHX0VWX0FDS19SRUdfUkVBRFkgICAgMHgxMDAwICAvL1dvcmthcm91bmQgS2x1ZGdlIGJpdCBmb3IgSC1JSSAobm90IEgtSUkuNSkKI2VuZGlmIC8vIEhDRl9UWVBFX0hJSTUKI2lmIChIQ0ZfU0xFRVApICYgKCBIQ0ZfQ0RTIHwgSENGX0REUyApCiNkZWZpbmUgICAgSFJFR19FVl9TTEVFUF9SRVEgICAgICAgIDB4MDgwMAojZWxzZQojZGVmaW5lICAgIEhSRUdfRVZfU0xFRVBfUkVRICAgICAgICAweDAwMDAKI2VuZGlmIC8vIEhDRl9DRFMgLyBIQ0ZfRERTCiNpZiBIQ0ZfRE1BCi8vI2RlZmluZSAgICBIUkVHX0VWX0xQRVNDICAgICAgICAgIDB4MDQwMCAvLyBmaXJtd2FyZSBzZXRzIHRoaXMgYml0IGFuZCBjbGVhcnMgaXQsIG5vdCBmb3IgaG9zdCB1c2FnZS4KI2RlZmluZSAgICBIUkVHX0VWX1JETUFEICAgICAgICAgICAgMHgwMjAwIC8vIHJ4IGZyYW1lIGluIGhvc3QgbWVtb3J5CiNkZWZpbmUgICAgSFJFR19FVl9URE1BRCAgICAgICAgICAgIDB4MDEwMCAvLyB0eCBmcmFtZSBpbiBob3N0IG1lbW9yeSBwcm9jZXNzZWQKLy8jZGVmaW5lICAgIEhSRUdfRVZfUlhETUEgICAgICAgICAgMHgwMDQwIC8vIGZpcm13YXJlIGtpY2tzIG9mZiBETUEgZW5naW5lIChiaXQgaXMgbm90IGZvciBob3N0IHVzYWdlKQovLyNkZWZpbmUgICAgSFJFR19FVl9UWERNQSAgICAgICAgICAweDAwMjAgLy8gZmlybXdhcmUga2lja3Mgb2ZmIERNQSBlbmdpbmUgKGJpdCBpcyBub3QgZm9yIGhvc3QgdXNhZ2UpCiNkZWZpbmUgICAgSFJFR19FVl9GV19ETUEgICAgICAgICAgIDB4MDQ2MCAvLyBmaXJtd2FyZSAvIERNQSBlbmdpbmUgSS9GIChiaXRzIGFyZSBub3QgZm9yIGhvc3QgdXNhZ2UpCiNlbHNlCiNkZWZpbmUgICAgSFJFR19FVl9GV19ETUEgICAgICAgICAgIDB4MDAwMAojZW5kaWYgLy8gSENGX0RNQQojZGVmaW5lICAgIEhSRUdfRVZfSU5GTyAgICAgICAgICAgICAweDAwODAgIC8vIEFzeW5jaHJvbm91cyBJbmZvcm1hdGlvbiBGcmFtZQojZGVmaW5lICAgIEhSRUdfRVZfQ01EICAgICAgICAgICAgICAweDAwMTAgIC8vIENvbW1hbmQgY29tcGxldGVkLCBTdGF0dXMgYW5kIFJlc3BvbnNlIGF2YWlsYWJsZQojZGVmaW5lICAgIEhSRUdfRVZfQUxMT0MgICAgICAgICAgICAweDAwMDggIC8vIEFzeW5jaHJvbm91cyBwYXJ0IG9mIEFsbG9jYXRpb24vUmVjbGFpbSBjb21wbGV0ZWQKI2RlZmluZSAgICBIUkVHX0VWX1RYX0VYQyAgICAgICAgICAgMHgwMDA0ICAvLyBBc3luY2hyb25vdXMgVHJhbnNtaXNzaW9uIHVuc3VjY2Vzc2Z1bCBjb21wbGV0ZWQKI2RlZmluZSAgICBIUkVHX0VWX1RYICAgICAgICAgICAgICAgMHgwMDAyICAvLyBBc3luY2hyb25vdXMgVHJhbnNtaXNzaW9uIHN1Y2Nlc3NmdWwgY29tcGxldGVkCiNkZWZpbmUgICAgSFJFR19FVl9SWCAgICAgICAgICAgICAgIDB4MDAwMSAgLy8gQXN5bmNocm9ub3VzIFJlY2VpdmUgRnJhbWUKCiNkZWZpbmUgICAgSFJFR19FVl9UWF9FWFQgICAgICAgICAgICggKEhDRl9FWFQpICYgKEhDRl9FWFRfSU5UX1RYX0VYIHwgSENGX0VYVF9JTlRfVElDSyApICkKLyogSFJFR19FVl9UWF9FWFQgOj0gMHgwMDAwIG9yIEhSRUdfRVZfVFhfRVhDIGFuZC9vciBIUkVHX0VWX1RJQ0sKICogY291bGQgYmUgZXh0ZW5kZWQgd2l0aCBIUkVHX0VWX1RYICovCiNpZiBIQ0ZfRVhUX0lOVF9UWF9FWCAhPSBIUkVHX0VWX1RYX0VYQwplcnI6IHRoZXNlIHZhbHVlcyBzaG91bGQgbWF0Y2g7CiNlbmRpZiAvLyBIQ0ZfRVhUX0lOVF9UWF9FWCAvIEhSRUdfRVZfVFhfRVhDCgojaWYgSENGX0VYVF9JTlRfVElDSyAhPSBIUkVHX0VWX1RJQ0sKZXJyOiB0aGVzZSB2YWx1ZXMgc2hvdWxkIG1hdGNoOwojZW5kaWYgLy8gSENGX0VYVF9JTlRfVElDSyAvIEhSRUdfRVZfVElDSwoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqIEhvc3QgU29mdHdhcmUKI2RlZmluZSBIUkVHX1NXXzAgICAgICAgICAgICAgICAweDI4ICAgICAgICAvLwojZGVmaW5lIEhSRUdfU1dfMSAgICAgICAgICAgICAgIDB4MkEgICAgICAgIC8vCiNkZWZpbmUgSFJFR19TV18yICAgICAgICAgICAgICAgMHgyQyAgICAgICAgLy8KLy9yc3J2ZCAjZGVmaW5lIEhSRUdfU1dfMyAgICAgICAweDJFICAgICAgICAvLwovLyoqKioqKioqKioqKioqKioqKioqKioqKiogQ29udHJvbCBhbmQgQXV4aWxpYXJ5IFBvcnQKCiNkZWZpbmUgSFJFR19JTyAgICAgICAgICAgICAgICAgMHgxMgojZGVmaW5lICAgICBIUkVHX0lPX1NSRVNFVCAgICAgICAgICAweDAwMDEKI2RlZmluZSAgICAgSFJFR19JT19XQUtFVVBfQVNZTkMgICAgMHgwMDAyCiNkZWZpbmUgICAgIEhSRUdfSU9fV09LRU5fVVAgICAgICAgIDB4MDAwNAojZGVmaW5lIEhSRUdfQ05UTCAgICAgICAgICAgICAgIDB4MTQgICAgICAgIC8vCi8vI2RlZmluZSAgICAgICBIUkVHX0NOVExfV0FLRVVQX1NZTkMgICAweDAwMDEKI2RlZmluZSAgICAgSFJFR19DTlRMX0FVWF9FTkFfU1RBVCAgMHhDMDAwCiNkZWZpbmUgICAgIEhSRUdfQ05UTF9BVVhfRElTX1NUQVQgIDB4MDAwMAojZGVmaW5lICAgICBIUkVHX0NOVExfQVVYX0VOQV9DTlRMICAweDgwMDAKI2RlZmluZSAgICAgSFJFR19DTlRMX0FVWF9ESVNfQ05UTCAgMHg0MDAwCiNkZWZpbmUgICAgIEhSRUdfQ05UTF9BVVhfRFNEICAgICAgIDB4MjAwMAojZGVmaW5lICAgICBIUkVHX0NOVExfQVVYX0VOQSAgICAgICAoSFJFR19DTlRMX0FVWF9FTkFfQ05UTCB8IEhSRUdfQ05UTF9BVVhfRElTX0NOVEwgKQojZGVmaW5lIEhSRUdfU1BBUkUgICAgICAgICAgICAgIDB4MTYgICAgICAgIC8vCiNkZWZpbmUgSFJFR19BVVhfUEFHRSAgICAgICAgICAgMHgzQSAgICAgICAgLy8KI2RlZmluZSBIUkVHX0FVWF9PRkZTRVQgICAgICAgICAweDNDICAgICAgICAvLwojZGVmaW5lIEhSRUdfQVVYX0RBVEEgICAgICAgICAgIDB4M0UgICAgICAgIC8vCgojaWYgSENGX0RNQQovLyoqKioqKioqKioqKioqKioqKioqKioqKiogRE1BIChidXMgbWFzdGVyaW5nKQovLyBCZSBjYXJlZnVsIHRvIHVzZSB0aGVzZSByZWdpc3RlcnMgb25seSBhdCBhIGdlbnVpbmUgMzIgYml0cyBOSUMKLy8gT24gMTYgYml0cyBOSUNzLCB0aGVzZSBhZGRyZXNzZXMgYXJlIG1hcHBlZCBpbnRvIHRoZSByYW5nZSAweDAwIHRocm91Z2ggMHgzRiB3aXRoIGFsbCBjb25zZXF1ZW5jZXMKLy8gdGhlcmVvZiwgZS5nLiAgSFJFR19ETUFfQ1RSTCByZWdpc3RlciBtYXBzIHRvIEhSRUdfQ01ELgojZGVmaW5lIEhSRUdfRE1BX0NUUkwgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MAojZGVmaW5lIEhSRUdfVFhETUFfUFRSMzIgICAgICAgICAgICAgICAgICAgIDB4MDA0NAojZGVmaW5lIEhSRUdfVFhETUFfUFJJT19QVFIzMiAgICAgICAgICAgICAgIDB4MDA0OAojZGVmaW5lIEhSRUdfVFhETUFfSElQUklPX1BUUjMyICAgICAgICAgICAgIDB4MDA0QwojZGVmaW5lIEhSRUdfUlhETUFfUFRSMzIgICAgICAgICAgICAgICAgICAgIDB4MDA1MAojZGVmaW5lIEhSRUdfQ0FSRERFVEVDVF8xICAgICAgICAgICAgICAgICAgIDB4MDA3QyAvLyBjb250YWlucyA3RDM3CiNkZWZpbmUgSFJFR19DQVJEREVURUNUXzIgICAgICAgICAgICAgICAgICAgMHgwMDdFIC8vIGNvbnRhaW5zIDdERTcKI2RlZmluZSBIUkVHX0ZSRUVUSU1FUiAgICAgICAgICAgICAgICAgICAgICAweDAwNTgKI2RlZmluZSBIUkVHX0RNQV9SWF9DTlQgICAgICAgICAgICAgICAgICAgICAweDAwMjYKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogRGVmaW5lcyBmb3IgdGhlIGJpdHMgaW4gdGhlIERtYUNvbnRyb2wgcmVnaXN0ZXIgKEA0MGgpCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWEhXRU4gICAgICAgICAgICAgICAgMHg4MDAwMDAwMCAvLyBoaWdoIHdvcmQgZW5hYmxlIGJpdAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhSRVNFVCAgICAgICAgICAgICAgIDB4NDAwMDAwMDAgLy8gdHggZG1hIGluaXQgYml0CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWEJBUDEgICAgICAgICAgICAgICAgQklUMjkKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX1NUQUxMRUQgICAgICAgICAgICBCSVQyOAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhBVVRPQUNLX0RNQURPTkUgICAgIEJJVDI3IC8vIG5vIGhvc3QgaW52b2x2ZW1lbnQgcmVxLiBmb3IgVERNQURPTkUgZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYQVVUT0FDS19JTkZPICAgICAgICBCSVQyNiAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIGFsbG9jIGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWEFVVE9BQ0tfRE1BRU4gICAgICAgMHgwMjAwMDAwMCAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIFR4RE1BZW4gZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYQVVUT0FDS19SWCAgICAgICAgICAweDAxMDAwMDAwIC8vIG5vIGhvc3QgaW52b2x2ZW1lbnQgcmVxLiBmb3IgdHggZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX0JVU1kgICAgICAgICAgICAgICBCSVQyMyAvLyByZWFkIG9ubHkgYml0Ci8vI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX1JCVUZDT05UX1BMQUlOICAgICAgIDAgICAgIC8vIGJpdHMgMjEuLjIwCi8vI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX01PREVfUExBSU5fRE1BICAgICAgIDAgICAgIC8vIG1vZGUgMAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhfTU9ERV9TSU5HTEVfUEFDS0VUIDB4MDAwMTAwMDAgLy8gbW9kZSAxCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWF9NT0RFX01VTFRJX1BBQ0tFVCAgMHgwMDAyMDAwMCAvLyBtb2RlIDIKLy8jZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhfTU9ERV9ESVNBQkxFICAgICAoMHgwMDAyMDAwMHwweDAwMDEwMDAwKSAvLyBkaXNhYmxlIHR4IGRtYSBlbmdpbmUKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYSFdFTiAgICAgICAgICAgICAgICAweDgwMDAgLy8gbG93IHdvcmQgZW5hYmxlIGJpdAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhSRVNFVCAgICAgICAgICAgICAgIDB4NDAwMCAvLyByeCBkbWEgaW5pdCBiaXQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYQkFQMSAgICAgICAgICAgICAgICBCSVQxMwojZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhBVVRPQUNLX0RNQURPTkUgICAgIEJJVDExIC8vIG5vIGhvc3QgaW52b2x2ZW1lbnQgcmVxLiBmb3IgUnhETUFET05FIGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWEFVVE9BQ0tfRE1BRU4gICAgICAgMHgwMDAwMDQwMCAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIFJ4RE1BZW4gZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYQVVUT0FDS19ETUFBTExPQyAgICAweDAwMDAwMjAwICAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIGluZm8gZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYQVVUT0FDS19UWCAgICAgICAgICAweDAwMDAwMTAwICAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIHJ4IGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9CVVNZICAgICAgICAgICAgICAgQklUNyAgLy8gcmVhZCBvbmx5IGJpdAovLyNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9UQlVGQ09OVF9QTEFJTiAgICAgICAwICAgICAvLyBiaXRzIDYuLjUKLy8jZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhfTU9ERV9QTEFJTl9ETUEgICAgICAgMCAgICAgLy8gbW9kZSAwCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9NT0RFX1NJTkdMRV9QQUNLRVQgQklUMCAvLyBtb2RlIDEKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYX01PREVfTVVMVElfUEFDS0VUICAweDAwMDAwMDAyIC8vIG1vZGUgMgovLyNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9NT0RFX0RJU0FCTEUgICAgICgweDAwMDAwMDAxfDB4MDAwMDAwMDIpIC8vIGRpc2FibGUgdHggZG1hIGVuZ2luZQoKLy9jb25maWd1cmF0aW9uIERXT1JEIHRvIGNvbmZpZ3VyZSBETUEgZm9yIG1vZGUyIG9wZXJhdGlvbiwgdXNpbmcgQkFQMCBhcyB0aGUgRE1BIEJBUC4KI2RlZmluZSBETUFfQ1RSTFNUQVRfR08gKEhSRUdfRE1BX0NUUkxfUlhIV0VOIHwgSFJFR19ETUFfQ1RSTF9SWF9NT0RFX01VTFRJX1BBQ0tFVCB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgIEhSRUdfRE1BX0NUUkxfUlhBVVRPQUNLX0RNQUVOIHwgSFJFR19ETUFfQ1RSTF9SWEFVVE9BQ0tfUlggfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkVHX0RNQV9DVFJMX1RYSFdFTiB8IC8qOz9IUkVHX0RNQV9DVFJMX1RYX1RCVUZDT05UX1BMQUlOIHwqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkVHX0RNQV9DVFJMX1RYX01PREVfTVVMVElfUEFDS0VUIHwgSFJFR19ETUFfQ1RSTF9UWEFVVE9BQ0tfRE1BRU4gfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkVHX0RNQV9DVFJMX1RYQVVUT0FDS19ETUFBTExPQykKCi8vY29uZmlndXJhdGlvbiBEV09SRCB0byByZXNldCBib3RoIHRoZSBUeCBhbmQgUnggRE1BIGVuZ2luZXMKI2RlZmluZSBETUFfQ1RSTFNUQVRfUkVTRVQgKEhSRUdfRE1BX0NUUkxfUlhIV0VOIHwgSFJFR19ETUFfQ1RSTF9SWFJFU0VUIHwgSFJFR19ETUFfQ1RSTF9UWEhXRU4gfCBIUkVHX0RNQV9DVFJMX1RYUkVTRVQpCgovLyNkZWZpbmUgREVTQ19ETUFfT1dORUQgICAgICAgICAgICAweDgwMDAwMDAwICAgICAgICAgICAgICAgICAgLy8gQklUMzEKI2RlZmluZSBERVNDX0RNQV9PV05FRCAgICAgICAgICAweDgwMDAgICAgICAgICAgICAgICAgICAgICAgLy8gQklUMzEKI2RlZmluZSBERVNDX1NPUCAgICAgICAgICAgICAgICAweDgwMDAgICAgICAgICAgICAgICAgICAgICAgLy8gQklUMTUKI2RlZmluZSBERVNDX0VPUCAgICAgICAgICAgICAgICAweDQwMDAgICAgICAgICAgICAgICAgICAgICAgLy8gQklUMTQKCiNkZWZpbmUgRE1BX1JYICAgICAgICAgICAgICAwCiNkZWZpbmUgRE1BX1RYICAgICAgICAgICAgICAxCgovLyAjZGVmaW5lIElGQl9SeEZpcnN0RGVzYyAgICAgIElGQl9GaXJzdERlc2NbRE1BX1JYXQovLyAjZGVmaW5lIElGQl9UeEZpcnN0RGVzYyAgICAgIElGQl9GaXJzdERlc2NbRE1BX1RYXQovLyAjZGVmaW5lIElGQl9SeExhc3REZXNjICAgICAgIElGQl9MYXN0RGVzY1tETUFfUlhdCi8vICNkZWZpbmUgSUZCX1R4TGFzdERlc2MgICAgICAgSUZCX0xhc3REZXNjW0RNQV9UWF0KCiNlbmRpZiAvLyBIQ0ZfRE1BCi8vCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBFUVVBVEVTICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLy8gSGVybWVzIENvbW1hbmQgQ29kZXMgYW5kIFF1YWxpZmllciBiaXRzCiNkZWZpbmUgICAgIEhDTURfQlVTWSAgICAgICAgICAgMHg4MDAwICAvLyBCdXN5IGJpdCwgYXBwbGljYWJsZSBmb3IgYWxsIGNvbW1hbmRzCiNkZWZpbmUgSENNRF9JTkkgICAgICAgICAgICAgICAgMHgwMDAwICAvLwojZGVmaW5lIEhDTURfRU5BQkxFICAgICAgICAgICAgIEhDRl9DTlRMX0VOQUJMRSAgICAgLy8gMHgwMDAxCiNkZWZpbmUgSENNRF9ESVNBQkxFICAgICAgICAgICAgSENGX0NOVExfRElTQUJMRSAgICAvLyAweDAwMDIKI2RlZmluZSBIQ01EX0NPTk5FQ1QgICAgICAgICAgICBIQ0ZfQ05UTF9DT05ORUNUICAgIC8vIDB4MDAwMwojZGVmaW5lIEhDTURfRVhFQ1VURSAgICAgICAgICAgIDB4MDAwNCAgLy8KI2RlZmluZSBIQ01EX0RJU0NPTk5FQ1QgICAgICAgICBIQ0ZfQ05UTF9ESVNDT05ORUNUIC8vIDB4MDAwNQojZGVmaW5lIEhDTURfU0xFRVAgICAgICAgICAgICAgIDB4MDAwNiAgLy8KI2RlZmluZSBIQ01EX0NPTlRJTlVFICAgICAgICAgICBIQ0ZfQ05UTF9DT05USU5VRSAgIC8vIDB4MDAwNwojZGVmaW5lICAgICBIQ01EX1JFVFJZICAgICAgICAgIDB4MDEwMCAgLy8gUmV0cnkgYml0CiNkZWZpbmUgSENNRF9BTExPQyAgICAgICAgICAgICAgMHgwMDBBICAvLwojZGVmaW5lIEhDTURfVFggICAgICAgICAgICAgICAgIDB4MDAwQiAgLy8KI2RlZmluZSAgICAgSENNRF9SRUNMICAgICAgICAgICAweDAxMDAgIC8vIFJlY2xhaW0gYml0LCBhcHBsaWNhYmxlIGZvciBUeCBhbmQgSW5xdWlyZQojZGVmaW5lIEhDTURfSU5RVUlSRSAgICAgICAgICAgIDB4MDAxMSAgLy8KI2RlZmluZSBIQ01EX0FDQ0VTUyAgICAgICAgICAgICAweDAwMjEgIC8vCiNkZWZpbmUgICAgIEhDTURfQUNDRVNTX1dSSVRFICAgMHgwMTAwICAvLyBXcml0ZSBiaXQKI2RlZmluZSBIQ01EX1BST0dSQU0gICAgICAgICAgICAweDAwMjIgIC8vCiNkZWZpbmUgSENNRF9SRUFEX01JRiAgICAgICAgICAgMHgwMDMwCiNkZWZpbmUgSENNRF9XUklURV9NSUYgICAgICAgICAgMHgwMDMxCiNkZWZpbmUgSENNRF9USEVTRVVTICAgICAgICAgICAgMHgwMDM4CiNkZWZpbmUgICAgIEhDTURfU1RBUlRQUkVBTUJMRSAgMHgwRTAwICAvLyBTdGFydCBjb250aW51b3VzIHByZWFtYmxlIFR4CiNkZWZpbmUgICAgIEhDTURfU1RPUCAgICAgICAgICAgMHgwRjAwICAvLyBTdG9wIFRoZXNldXMgdGVzdCBtb2RlCgoKLy9Db25maWd1cmF0aW9uIE1hbmFnZW1lbnQKLy8KCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX0JPVFRPTSAxICAgLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfVE9QICAgIDEgICAvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBQcmltYXJ5IEZpcm13YXJlIC0gZHJpdmVyIEkvRgoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfQk9UVE9NIDEgICAvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBIL1cgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV80X1RPUCAgICAxICAgLy8gRGVmYXVsdCBUb3AgICAgQ29tcGF0aWJpbGl0eSBmb3IgSC9XIC0gZHJpdmVyIEkvRgoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfQk9UVE9NIDEgICAvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBIL1cgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X1RPUCAgICAxICAgLy8gRGVmYXVsdCBUb3AgICAgQ29tcGF0aWJpbGl0eSBmb3IgSC9XIC0gZHJpdmVyIEkvRgoKI2lmIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9XUEEKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzFfQk9UVE9NIDE2ICAvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzFfVE9QICAgIDE2ICAvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2Vsc2UgIC8vOz8gaXMgdGhpcyBSRUFMTFkgTy5LLgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMV9CT1RUT00gMSAgIC8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMV9UT1AgICAgMSAgIC8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZW5kaWYgLy8gSENGX1RZUEVfV1BBCgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9CT1RUT00gMiAgIC8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9UT1AgICAgMiAgIC8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzNfQk9UVE9NIDEgICAvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzNfVE9QICAgIDEgICAvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl80X0JPVFRPTSAxICAgLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl80X1RPUCAgICAxICAgLy8gRGVmYXVsdCBUb3AgICAgQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCgojaWYgKEhDRl9UWVBFKSAmIEhDRl9UWVBFX0hJSTUKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfQk9UVE9NIDYgICAvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9UT1AgICAgNiAgIC8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbHNlIC8vIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9ISUk1CiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX0JPVFRPTSAxICAgLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgU3RhdGlvbiBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfVE9QICAgIDIgICAvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZW5kaWYgLy8gKEhDRl9UWVBFKSAmIEhDRl9UWVBFX0hJSTUKCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8zX0JPVFRPTSAxICAgLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgU3RhdGlvbiBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzNfVE9QICAgIDEgICAvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzRfQk9UVE9NIDEgICAvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfNF9UT1AgICAgMSAgIC8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX1BSSV8xX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfUFJJXzFfQk9UVE9NCmVycjogUFJJXzEgbm90IHN1cHBvcnRlZCBmb3IgSC1JOyAgIC8vIENvbXBhdGliaWxpdHkgZm9yIFByaW1hcnkgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1BSSV8xX1RPUCAvIEhDRl9DRkdfUFJJXzFfQk9UVE9NCgojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX1BSSV8yX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfUFJJXzJfQk9UVE9NCmVycjogUFJJXzIgbm90IHN1cHBvcnRlZCBmb3IgSC1JOyAgIC8vIENvbXBhdGliaWxpdHkgZm9yIFByaW1hcnkgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1BSSV8yX1RPUCAvIEhDRl9DRkdfUFJJXzJfQk9UVE9NCgojaWZkZWYgSENGX0NGR19QUklfM19UT1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2lmIEhDRl9DRkdfUFJJXzNfVE9QID09IDAgfHwJCQkJCQlcCglDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfQk9UVE9NIDw9IEhDRl9DRkdfUFJJXzNfVE9QICYmIEhDRl9DRkdfUFJJXzNfVE9QIDw9IENGR19EUlZfQUNUX1JBTkdFU19QUklfM19UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19QUklfM19UT1AKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfVE9QICAgIEhDRl9DRkdfUFJJXzNfVE9QCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfUFJJXzNfVE9QCgojaWZkZWYgSENGX0NGR19QUklfM19CT1RUT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2lmIENGR19EUlZfQUNUX1JBTkdFU19QUklfM19CT1RUT00gPD0gSENGX0NGR19QUklfM19CT1RUT00gJiYgSENGX0NGR19QUklfM19CT1RUT00gPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX0JPVFRPTQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19QUklfM19CT1RUT00gSENGX0NGR19QUklfM19CT1RUT00KI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19QUklfM19CT1RUT00KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX0hTSV8wX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfSFNJXzBfQk9UVE9NCmVycjogSFNJXzAgbm90IHN1cHBvcnRlZCBmb3IgSC1JOyAgIC8vIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzBfVE9QIC8gSENGX0NGR19IU0lfMF9CT1RUT00KCiNpZiBkZWZpbmVkIEhDRl9DRkdfSFNJXzFfVE9QIHx8IGRlZmluZWQgSENGX0NGR19IU0lfMV9CT1RUT00KZXJyOiBIU0lfMSBub3Qgc3VwcG9ydGVkIGZvciBILUk7ICAgLy8gQ29tcGF0aWJpbGl0eSBmb3IgSFNJIEkvRgojZW5kaWYgLy8gSENGX0NGR19IU0lfMV9UT1AgLyBIQ0ZfQ0ZHX0hTSV8xX0JPVFRPTQoKI2lmIGRlZmluZWQgSENGX0NGR19IU0lfMl9UT1AgfHwgZGVmaW5lZCBIQ0ZfQ0ZHX0hTSV8yX0JPVFRPTQplcnI6IEhTSV8yIG5vdCBzdXBwb3J0ZWQgZm9yIEgtSTsgICAvLyBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0hTSV8yX1RPUCAvIEhDRl9DRkdfSFNJXzJfQk9UVE9NCgojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX0hTSV8zX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfSFNJXzNfQk9UVE9NCmVycjogSFNJXzMgbm90IHN1cHBvcnRlZCBmb3IgSC1JOyAgIC8vIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzNfVE9QIC8gSENGX0NGR19IU0lfM19CT1RUT00KCiNpZmRlZiBIQ0ZfQ0ZHX0hTSV80X1RPUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvcCBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNpZiBIQ0ZfQ0ZHX0hTSV80X1RPUCA9PSAwIHx8CQkJCQkJXAoJQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV80X0JPVFRPTSA8PSBDRl9DRkdfSFNJXzRfVE9QICYmIEhDRl9DRkdfSFNJXzRfVE9QIDw9IENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9UT1AKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfVE9QICAgIEhDRl9DRkdfSFNJXzRfVE9QCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzRfVE9QCgojaWZkZWYgSENGX0NGR19IU0lfNF9CT1RUT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBIU0kgSS9GCiNpZiBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfQk9UVE9NIDw9IEhDRl9DRkdfSFNJXzRfQk9UVE9NICYmIEhDRl9DRkdfSFNJXzRfQk9UVE9NIDw9IENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9CT1RUT00KI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfQk9UVE9NIEhDRl9DRkdfSFNJXzRfQk9UVE9NCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzRfQk9UVE9NCgojaWZkZWYgSENGX0NGR19IU0lfNV9UT1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3AgQ29tcGF0aWJpbGl0eSBmb3IgSFNJIEkvRgojaWYgSENGX0NGR19IU0lfNV9UT1AgPT0gMCB8fAkJCQkJCVwKCUNGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9CT1RUT00gPD0gQ0ZfQ0ZHX0hTSV81X1RPUCAmJiBIQ0ZfQ0ZHX0hTSV81X1RPUCA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfVE9QCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X1RPUCAgICBIQ0ZfQ0ZHX0hTSV81X1RPUAojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0hTSV81X1RPUAoKI2lmZGVmIEhDRl9DRkdfSFNJXzVfQk9UVE9NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgSFNJIEkvRgojaWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X0JPVFRPTSA8PSBIQ0ZfQ0ZHX0hTSV81X0JPVFRPTSAmJiBIQ0ZfQ0ZHX0hTSV81X0JPVFRPTSA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfQk9UVE9NCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X0JPVFRPTSBIQ0ZfQ0ZHX0hTSV81X0JPVFRPTQojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0hTSV81X0JPVFRPTQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX0FQRl8xX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfQVBGXzFfQk9UVE9NCmVycjogQVBGXzEgbm90IHN1cHBvcnRlZCBmb3IgSC1JOyAgIC8vIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZW5kaWYgLy8gSENGX0NGR19BUEZfMV9UT1AgLyBIQ0ZfQ0ZHX0FQRl8xX0JPVFRPTQoKI2lmZGVmIEhDRl9DRkdfQVBGXzJfVE9QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojaWYgSENGX0NGR19BUEZfMl9UT1AgPT0gMCB8fAkJCQkJCVwKCUNGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9CT1RUT00gPD0gSENGX0NGR19BUEZfMl9UT1AgJiYgSENGX0NGR19BUEZfMl9UT1AgPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX1RPUAojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9UT1AgICAgSENGX0NGR19BUEZfMl9UT1AKI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19BUEZfVE9QCgojaWZkZWYgSENGX0NGR19BUEZfMl9CT1RUT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNpZiBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzJfQk9UVE9NIDw9IEhDRl9DRkdfQVBGXzJfQk9UVE9NICYmIEhDRl9DRkdfQVBGXzJfQk9UVE9NIDw9IENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMl9CT1RUT00KI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzJfQk9UVE9NIEhDRl9DRkdfQVBGXzJfQk9UVE9NCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfQVBGX0JPVFRPTQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI2lmIGRlZmluZWQgSENGX0NGR19TVEFfMV9UT1AgfHwgZGVmaW5lZCBIQ0ZfQ0ZHX1NUQV8xX0JPVFRPTQplcnI6IFNUQV8xIG5vdCBzdXBwb3J0ZWQgZm9yIEgtSTsgICAvLyBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZW5kaWYgLy8gSENGX0NGR19TVEFfMV9UT1AgLyBIQ0ZfQ0ZHX1NUQV8xX0JPVFRPTQoKI2lmZGVmIEhDRl9DRkdfU1RBXzJfVE9QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9wIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNpZiBIQ0ZfQ0ZHX1NUQV8yX1RPUCA9PSAwIHx8CQkJCQkJXAoJQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX0JPVFRPTSA8PSBIQ0ZfQ0ZHX1NUQV8yX1RPUCAmJiBIQ0ZfQ0ZHX1NUQV8yX1RPUCA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfVE9QCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX1RPUCAgICBIQ0ZfQ0ZHX1NUQV8yX1RPUAojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1NUQV9UT1AKCiNpZmRlZiBIQ0ZfQ0ZHX1NUQV8yX0JPVFRPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojaWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX0JPVFRPTSA8PSBIQ0ZfQ0ZHX1NUQV8yX0JPVFRPTSAmJiBIQ0ZfQ0ZHX1NUQV8yX0JPVFRPTSA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfQk9UVE9NCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX0JPVFRPTSBIQ0ZfQ0ZHX1NUQV8yX0JPVFRPTQojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1NUQV9CT1RUT00KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIE1BQ1JPUyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmZGVmIEhDRl9TTEVFUAojZGVmaW5lIE1TRl9XQUlUKHgpIGRvIHsJCQkJCQlcCgkJUFJPVF9DTlRfSU5JOwkJCQkJCVwKCQlIQ0ZfV0FJVF9XSElMRSgoSVBXKEhSRUdfSU8pICYgSFJFR19JT19XT0tFTl9VUCkgPT0gMCk7IFwKCQlIQ0ZBU1NFUlQoIHByb3RfY250LCBJUFcoIEhSRUdfSU8gKSApOwkJCVwKCX0gd2hpbGUgKDApCiNlbHNlCiNkZWZpbmUgTVNGX1dBSVQoeCkgZG8geyB9IHdoaWxlICgwKQojZW5kaWYgLy8gSENGX1NMRUVQCgojZGVmaW5lIExPRih4KSAgICAgICAgICAoc2l6ZW9mKHgpL3NpemVvZihoY2ZfMTYpLTEpCgovL3Jlc29sdmUgcHJvYmxlbXMgb24gZm9yIHNvbWUgMTYgYml0cyBjb21waWxlcnMgdG8gY3JlYXRlIDMyIGJpdCB2YWx1ZXMKI2RlZmluZSBNRVJHRV8yKCBodywgbHcgKSAgICggKCAoKGhjZl8zMikoaHcpKSA8PCAxNiApIHwgKChoY2ZfMTYpKGx3KSkgKQoKI2lmICEgZGVmaW5lZCBIQ0ZfU1RBVElDCiNkZWZpbmUgICAgICAgSENGX1NUQVRJQyAgICBzdGF0aWMKI2VuZGlmIC8vICAgICBIQ0ZfU1RBVElDCgojaWYgKCAoSENGX1RZUEUpICYgSENGX1RZUEVfSElJNSApID09IDAKI2RlZmluZSBEQVdBX0FDSyggbWFzaykgZG8gewkJCQkJCVwKCQlPUFcoIEhSRUdfRVZfQUNLLCBtYXNrIHwgSFJFR19FVl9BQ0tfUkVHX1JFQURZICk7CVwKCQlPUFcoIEhSRUdfRVZfQUNLLCAobWFzayAmIH5IUkVHX0VWX0FMTE9DKSB8IEhSRUdfRVZfQUNLX1JFR19SRUFEWSApOyBcCgl9IHdoaWxlICgwKQojZGVmaW5lIERBV0FfWkVST19GSUQocmVnKSBPUFcoIHJlZywgMCApCiNlbHNlCiNkZWZpbmUgREFXQV9BQ0soIG1hc2spICAgT1BXKCBIUkVHX0VWX0FDSywgbWFzayApCiNkZWZpbmUgREFXQV9aRVJPX0ZJRChyZWcpIGRvIHsgfSB3aGlsZSAoMCkKI2VuZGlmIC8vIEhDRl9UWVBFX0hJSTUKCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfV1BBCiNkZWZpbmUgQ0FMQ19SWF9NSUMoIHAsIGxlbiApIGNhbGNfbWljX3J4X2ZyYWcoIGlmYnAsIHAsIGxlbiApCiNkZWZpbmUgQ0FMQ19UWF9NSUMoIHAsIGxlbiApIGNhbGNfbWljX3R4X2ZyYWcoIGlmYnAsIHAsIGxlbiApCiNlbHNlCiNkZWZpbmUgQ0FMQ19SWF9NSUMoIHAsIGxlbiApCiNkZWZpbmUgQ0FMQ19UWF9NSUMoIHAsIGxlbiApCiNkZWZpbmUgTUlDX1JYX1JUTiggbWljLCBkdyApCiNkZWZpbmUgTUlDX1RYX1JUTiggbWljLCBkdyApCiNlbmRpZiAvLyBIQ0ZfVFlQRV9XUEEKCiNpZiBIQ0ZfVEFMTElFUyAmIEhDRl9UQUxMSUVTX0hDRiAgICAgICAvL0hDRiB0YWxseSBzdXBwb3J0CiNkZWZpbmUgSUZfVEFMTFkoeCkgZG8geyB4OyB9IHdoaWxlICgwKQojZWxzZQojZGVmaW5lIElGX1RBTExZKHgpIGRvIHsgfSB3aGlsZSAoMCkKI2VuZGlmIC8vIEhDRl9UQUxMSUVTX0hDRgoKCiNpZiBIQ0ZfRE1BCiNkZWZpbmUgSUZfRE1BKHgpICAgICAgICAgICBkbyB7IHg7IH0gd2hpbGUoMCkKI2RlZmluZSBJRl9OT1RfRE1BKHgpICAgICAgIGRvIHsgfSB3aGlsZSgwKQojZGVmaW5lIElGX1VTRV9ETUEoeCkgICAgICAgaWYgKCAgIGlmYnAtPklGQl9DbnRsT3B0ICYgVVNFX0RNQSAgKSB7IHg7IH0KI2RlZmluZSBJRl9OT1RfVVNFX0RNQSh4KSAgIGlmICggIShpZmJwLT5JRkJfQ250bE9wdCAmIFVTRV9ETUEpICkgeyB4OyB9CiNlbHNlCiNkZWZpbmUgSUZfRE1BKHgpICAgICAgICAgICBkbyB7IH0gd2hpbGUoMCkKI2RlZmluZSBJRl9OT1RfRE1BKHgpICAgICAgIGRvIHsgeDsgfSB3aGlsZSgwKQojZGVmaW5lIElGX1VTRV9ETUEoeCkgICAgICAgZG8geyB9IHdoaWxlKDApCiNkZWZpbmUgSUZfTk9UX1VTRV9ETUEoeCkgICBkbyB7IHg7IH0gd2hpbGUoMCkKI2VuZGlmIC8vIEhDRl9ETUEKCgojZGVmaW5lIElQVyh4KSAoKGhjZl8xNilJTl9QT1JUX1dPUkQoIGlmYnAtPklGQl9JT0Jhc2UgKyAoeCkgKSApCiNkZWZpbmUgT1BXKHgsIHkpIE9VVF9QT1JUX1dPUkQoIGlmYnAtPklGQl9JT0Jhc2UgKyAoeCksIHkgKQovKiBtYWtlIHN1cmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIEhDRl9XQUlUX1dISUxFIGlzIHN1Y2ggdGhhdCB0aGVyZSBtYXkgYmUgbXVsdGlwbGUgSENGX1dBSVRfV0hJTEUgY2FsbHMKICogaW4gYSByb3cgYW5kIHRoYXQgd2hlbiBvbmUgZmFpbHMgYWxsIHN1YnNlcXVlbnQgZmFpbCBpbW1lZGlhdGVseSB3aXRob3V0IHJlaW5pdGlhbGl6YXRpb24gb2YgcHJvdF9jbnQKICovCiNpZiBIQ0ZfUFJPVF9USU1FID09IDAKI2RlZmluZSBQUk9UX0NOVF9JTkkgICAgZG8geyB9IHdoaWxlKDApCiNkZWZpbmUgSUZfUFJPVF9USU1FKHgpIGRvIHsgfSB3aGlsZSgwKQojaWYgZGVmaW5lZCBIQ0ZfWUlFTEQKI2RlZmluZSBIQ0ZfV0FJVF9XSElMRSggeCApIGRvIHsgfSB3aGlsZSggKHgpICYmIChIQ0ZfWUlFTEQpICkKI2Vsc2UKI2RlZmluZSBIQ0ZfV0FJVF9XSElMRSggeCApIGRvIHsgfSB3aGlsZSAoIHggKQojZW5kaWYgLy8gSENGX1lJRUxECiNlbHNlCiNkZWZpbmUgUFJPVF9DTlRfSU5JICAgIGhjZl8zMiBwcm90X2NudCA9IGlmYnAtPklGQl9UaWNrSW5pCiNkZWZpbmUgSUZfUFJPVF9USU1FKHgpIGRvIHsgeDsgfSB3aGlsZSgwKQojaWYgZGVmaW5lZCBIQ0ZfWUlFTEQKI2RlZmluZSBIQ0ZfV0FJVF9XSElMRSggeCApIHdoaWxlICggcHJvdF9jbnQgJiYgKHgpICYmIChIQ0ZfWUlFTEQpICkgcHJvdF9jbnQtLTsKI2Vsc2UKI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiNkZWZpbmUgSENGX1dBSVRfV0hJTEUoIHggKSB3aGlsZSAoIHByb3RfY250ICYmICh4KSApIHsgdWRlbGF5KDIpOyBwcm90X2NudC0tOyB9CiNlbmRpZiAvLyBIQ0ZfWUlFTEQKI2VuZGlmIC8vIEhDRl9QUk9UX1RJTUUKCiNpZiBkZWZpbmVkIEhDRl9FWF9JTlQKLy8jaWYgSENGX0VYX0lOVCAmIH4oIEhDRl9FWF9JTlRfVFhfRVggfCBIQ0ZfRVhfSU5UX1RYX09LIHwgSENGX0VYX0lOVF9USUNLICkKOz8gb3V0IGRhdGVkIGNoZWNraW5nCmVycjogeW91IHVzZWQgYW4gaW52YWxpZCBiaXRtYXNrOwovLyAjZW5kaWYgLy8gSENGX0VYX0lOVCB2YWxpZGF0aW9uCi8vICNlbHNlCi8vICNkZWZpbmUgSENGX0VYX0lOVCAweDAwMAojZW5kaWYgLy8gSENGX0VYX0lOVAoKI2lmIDAgLy9nZXQgY29tcGlsZXIgZ29pbmcKI2lmIEhDRl9FWF9JTlRfVElDSyAhPSBIUkVHX0VWX1RJQ0sKOz8gb3V0IGRhdGVkIGNoZWNraW5nCmVycjogc29tZW9uZSByZWRlZmluZWQgdGhlc2UgbWFjcm9zIHdoaWxlIHRoZSBpbXBsZW1lbmF0aW9uIGFzc3VtZXMgdGhleSBhcmUgZXF1YWw7CiNlbmRpZgojaWYgSENGX0VYX0lOVF9UWF9PSyAhPSBIRlNfVFhfQ05UTF9UWF9PSyB8fCBIRlNfVFhfQ05UTF9UWF9PSyAhPSBIUkVHX0VWX1RYX09LCjs/IG91dCBkYXRlZCBjaGVja2luZwplcnI6IHNvbWVvbmUgcmVkZWZpbmVkIHRoZXNlIG1hY3JvcyB3aGlsZSB0aGUgaW1wbGVtZW5hdGlvbiBhc3N1bWVzIHRoZXkgYXJlIGVxdWFsOwojZW5kaWYKI2lmIEhDRl9FWF9JTlRfVFhfRVggIT0gSEZTX1RYX0NOVExfVFhfRVggfHwgSEZTX1RYX0NOVExfVFhfRVggIT0gSFJFR19FVl9UWF9FWAo7PyBvdXQgZGF0ZWQgY2hlY2tpbmcKZXJyOiBzb21lb25lIHJlZGVmaW5lZCB0aGVzZSBtYWNyb3Mgd2hpbGUgdGhlIGltcGxlbWVuYXRpb24gYXNzdW1lcyB0aGV5IGFyZSBlcXVhbDsKI2VuZGlmCiNlbmRpZiAvLyAwIGdldCBjb21waWxlciBnb2luZwoKCi8qIFRoZSBhc3NlcnQgaW4gSENGTE9HRU5UUlkgY2hlY2tzIGFnYWluc3QgcmUtZW50cmFuY3kuIFJlLWVudHJhbmN5IGNvdWxkIGJlIGNhdXNlZCBieSBNU0YgbG9naWMgYXQKICogdGFzay1sZXZlbCBjYWxsaW5nIGhjZl9mdW5jdGlvbnMgd2l0aG91dCBzaGllbGRpbmcgd2l0aCBIQ0ZfQUNUX09OL19PRkYuIFdoZW4gYW4gaW50ZXJydXB0IG9jY3VycywKICogdGhlIElTUiBjb3VsZCAoZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGNhdXNlIHJlLWVudGVyaW5nIG9mIHRoZSBpbnRlcnJ1cHRlZCBIQ0Ytcm91dGluZS4KICoKICogVGhlICIoaWZicC0+SUZCX0Fzc2VydFdoZXJlID0gd2hlcmUpIiB0ZXN0IGluIEhDRkxPR0VOVFJZIHNlcnZpY2VzIEFMU08gYXMgYSBzdGF0ZW1lbnQgdG8gZ2V0IGFyb3VuZDoKICogI3ByYWdtYSB3YXJuaW5nOiBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50CiAqIG9uIHRoZSBpZi1zdGF0ZW1lbnQKICovCiNpZiBIQ0ZfQVNTRVJUCiNkZWZpbmUgSENGQVNTRVJUKHgscSkgZG8geyBpZiAoISh4KSkge21kZF9hc3NlcnQoaWZicCwgX19MSU5FX18sIHEgKTt9IH0gd2hpbGUoMCkKI2RlZmluZSBNTURBU1NFUlQoeCxxKSB7aWYgKCEoeCkpIHttZGRfYXNzZXJ0KCBhc3NlcnRfaWZicCwgX19MSU5FX18gKyBGSUxFX05BTUVfT0ZGU0VULCBxICk7fX0KCiNkZWZpbmUgSENGTE9HRU5UUlkoIHdoZXJlLCB3aGF0ICkgZG8gewkJCQkJXAoJCWlmICggKGlmYnAtPklGQl9Bc3NlcnRXaGVyZSA9IHdoZXJlKSA8PSAxNSApIHsJCVwKCQkJSENGQVNTRVJUKCAoaWZicC0+SUZCX0Fzc2VydFRyYWNlICYgMTw8KCh3aGVyZSkmMHhGKSkgPT0gMCwgaWZicC0+SUZCX0Fzc2VydFRyYWNlICk7IFwKCQkJaWZicC0+SUZCX0Fzc2VydFRyYWNlIHw9IDE8PCgod2hlcmUpJjB4Rik7CVwKCQl9CQkJCQkJCVwKCQlIQ0ZUUkFDRShpZmJwLCB3aGVyZSApOwkJCQkJXAoJCUhDRlRSQUNFVkFMVUUoaWZicCwgd2hhdCApOwkJCQlcCgl9IHdoaWxlICgwKQoKI2RlZmluZSBIQ0ZMT0dFWElUKCB3aGVyZSApIGRvIHsJCQkJCVwKCQlpZiAoIChpZmJwLT5JRkJfQXNzZXJ0V2hlcmUgPSB3aGVyZSkgPD0gMTUgKSB7CQlcCgkJCWlmYnAtPklGQl9Bc3NlcnRUcmFjZSAmPSB+KDE8PCgod2hlcmUpJjB4RikpOwlcCgkJfQkJCQkJCQlcCgkJSENGVFJBQ0UoaWZicCwgKHdoZXJlKXxIQ0ZfVFJBQ0VfRVhJVCApOwkJXAoJfSB3aGlsZSAoMCkKCiNlbHNlIC8vIEhDRl9BU1NFUlQKI2RlZmluZSBIQ0ZBU1NFUlQoIHgsIHEgKSBkbyB7IH0gd2hpbGUoMCkKI2RlZmluZSBNTURBU1NFUlQoIHgsIHEgKQojZGVmaW5lIEhDRkxPR0VOVFJZKCB3aGVyZSwgd2hhdCApIGRvIHsgfSB3aGlsZSgwKQojZGVmaW5lIEhDRkxPR0VYSVQoIHdoZXJlICkgICAgICAgIGRvIHsgfSB3aGlsZSgwKQojZW5kaWYgLy8gSENGX0FTU0VSVAoKI2lmIEhDRl9JTlRfT04KLyogOz8gSENGQVNTRVJUX0lOVAogKiAjaWYgKEhDRl9TTEVFUCkgJiBIQ0ZfRERTCiAqICNkZWZpbmUgSENGQVNTRVJUX0lOVCBIQ0ZBU1NFUlQoIGlmYnAtPklGQl9JbnRPZmZDbnQgIT0gMHhGRkZGICYmIGlmYnAtPklGQl9JbnRPZmZDbnQgIT0gMHhGRkZFLCBcCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmYnAtPklGQl9JbnRPZmZDbnQgKQogKiAjZWxzZQogKi8KI2RlZmluZSBIQ0ZBU1NFUlRfSU5UIEhDRkFTU0VSVCggaWZicC0+SUZCX0ludE9mZkNudCAhPSAweEZGRkYsIGlmYnAtPklGQl9JbnRPZmZDbnQgKQovLyAjZW5kaWYgLy8gSENGX0REUwojZWxzZQojZGVmaW5lIEhDRkFTU0VSVF9JTlQKI2VuZGlmIC8vIEhDRl9JTlRfT04KCgojaWYgZGVmaW5lZCBIQ0ZfVFJBQ0UKI2RlZmluZSBIQ0ZUUkFDRShpZmJwLCB3aGVyZSApICAgICBkbyB7T1BXKCBIUkVHX1NXXzEsIHdoZXJlICk7fSB3aGlsZSgwKQovLyNkZWZpbmUgSENGVFJBQ0UoaWZicCwgd2hlcmUgKSAgICAgICB7SENGQVNTRVJUKCBET19BU1NFUlQsIHdoZXJlICk7fQojZGVmaW5lIEhDRlRSQUNFVkFMVUUoaWZicCwgd2hhdCApIGRvIHtPUFcoIEhSRUdfU1dfMiwgd2hhdCAgKTt9IHdoaWxlICgwKQovLyNkZWZpbmUgSENGVFJBQ0VWQUxVRShpZmJwLCB3aGF0ICkge0hDRkFTU0VSVCggRE9fQVNTRVJULCB3aGF0ICApO30KI2Vsc2UKI2RlZmluZSBIQ0ZUUkFDRShpZmJwLCB3aGVyZSApICAgICBkbyB7IH0gd2hpbGUoMCkKI2RlZmluZSBIQ0ZUUkFDRVZBTFVFKGlmYnAsIHdoYXQgKSBkbyB7IH0gd2hpbGUoMCkKI2VuZGlmIC8vIEhDRl9UUkFDRQoKCiNpZiBIQ0ZfQklHX0VORElBTgojZGVmaW5lIEJFX1BBUih4KSAgICAgICAgICAgICAgICx4CiNlbHNlCiNkZWZpbmUgQkVfUEFSKHgpCiNlbmRpZiAvLyBIQ0ZfQklHX0VORElBTgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBFTkQgT0YgTUFDUk9TICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIFBST1RPVFlQRVMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWYgSENGX0FTU0VSVApleHRlcm4gSUZCUCBCQVNFRCBhc3NlcnRfaWZicDsgICAgICAgICAgLy90byBtYWtlIGFzc2VydHMgZWFzaWx5IHdvcmsgdW5kZXIgTU1EIGFuZCBESEYKRVhURVJOX0Mgdm9pZCAgICAgICAgbWRkX2Fzc2VydCAgICAgICAgIChJRkJQIGlmYnAsIHVuc2lnbmVkIGludCBsaW5lX251bWJlciwgaGNmXzMyIHEgKTsKI2VuZGlmIC8vSENGX0FTU0VSVAoKI2lmICEgKCAoSENGX0lPKSAmIEhDRl9JT18zMkJJVFMgKSAgICAgICAgICAgICAgLy8gZGVmaW5lZCAxNiBiaXRzIG9ubHkKI3VuZGVmIE9VVF9QT1JUX1NUUklOR18zMgojdW5kZWYgSU5fUE9SVF9TVFJJTkdfMzIKI2VuZGlmIC8vIEhDRl9JTwojZW5kaWYgIC8vSENGREVGQ19ICgo=