LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCIDxkYW5pZWxAb21pY3Jvbi5zZT4uCiAqCiAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAqIHByb2plY3QuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAqIE1BIDAyMTExLTEzMDcgVVNBCiAqLwoKI2lmbmRlZiBfQVNNX0lDX1NDNTIwX0hfCiNkZWZpbmUgX0FTTV9JQ19TQzUyMF9IXyAxCgojaWZuZGVmIF9fQVNTRU1CTFlfXwoKdm9pZCBpbml0X3NjNTIwKHZvaWQpOwp1bnNpZ25lZCBsb25nIGluaXRfc2M1MjBfZHJhbSh2b2lkKTsKCi8qIE1lbW9yeSBtYXBwZWQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKi8KdHlwZWRlZiBzdHJ1Y3Qgc2M1MjBfbW1jciB7Cgl1MTYgcmV2aWQ7CS8qIEVsYW5TQzUyMCBtaWNyb2NvbnRyb2xsZXIgcmV2aXNpb24gaWQgKi8KCXU4ICBjcHVjdGw7CS8qIGFtNXg4NiBDUFUgY29udHJvbCAgKi8KCgl1OCAgcGFkXzB4MDAzWzB4MGRdOwoKCXU4ICBkcmNjdGw7CQkvKiBTRFJBTSBjb250cm9sICovCgl1OCAgcGFkXzB4MDExWzB4MDFdOwoJdTggIGRyY3RtY3RsOwkJLyogU0RSQU0gdGltaW5nIGNvbnRyb2wgKi8KCXU4ICBwYWRfMHgwMTNbMHgwMV07Cgl1MTYgZHJjY2ZnOwkJLyogU0RSQU0gYmFuayBjb25maWd1cmF0aW9uKi8KCXU4ICBwYWRfMHgwMTZbMHgwMl07Cgl1MzIgZHJjYmVuZGFkcjsJCS8qIFNEUkFNIGJhbmsgMC0zIGVuZGluZyBhZGRyZXNzKi8KCXU4ICBwYWRfMHgwMWNbMHgwNF07Cgl1OCAgZWNjY3RsOwkJLyogRUNDIGNvbnRyb2wgKi8KCXU4ICBlY2NzdGE7CQkvKiBFQ0Mgc3RhdHVzICovCgl1OCAgZWNjY2ticG9zOwkJLyogRUNDIGNoZWNrIGJpdCBwb3NpdGlvbiAqLwoJdTggIGVjY2NrdGVzdDsJCS8qIEVDQyBDaGVjayBDb2RlIFRlc3QgKi8KCXUzMiBlY2NzYmFkZDsJCS8qIEVDQyBzaW5nbGUtYml0IGVycm9yIGFkZHJlc3MgKi8KCXUzMiBlY2NtYmFkZDsJCS8qIEVDQyBtdWx0aS1iaXQgZXJyb3IgYWRkcmVzcyAqLwoKCXU4ICBwYWRfMHgwMmNbMHgxNF07CgoJdTggIGRiY3RsOwkJLyogU0RSQU0gYnVmZmVyIGNvbnRyb2wgKi8KCgl1OCAgcGFkXzB4MDQxWzB4MGZdOwoKCXUxNiBib290Y3NjdGw7CQkvKiAvQk9PVENTIGNvbnRyb2wgKi8KCXU4ICBwYWRfMHgwNTJbMHgwMl07Cgl1MTYgcm9tY3MxY3RsOwkJLyogL1JPTUNTMSBjb250cm9sICovCgl1MTYgcm9tY3MyY3RsOwkJLyogL1JPTUNTMiBjb250cm9sICovCgoJdTggIHBhZF8weDA1OFsweDA4XTsKCgl1MTYgaGJjdGw7CQkvKiBob3N0IGJyaWRnZSBjb250cm9sICovCgl1MTYgaGJ0Z3RpcnFjdGw7CS8qIGhvc3QgYnJpZGdlIHRhcmdldCBpbnRlcnJ1cHQgY29udHJvbCAqLwoJdTE2IGhidGd0aXJxc3RhOwkvKiBob3N0IGJyaWRnZSB0YXJnZXQgaW50ZXJydXB0IHN0YXR1cyAqLwoJdTE2IGhibXN0aXJxY3RsOwkvKiBob3N0IGJyaWRnZSB0YXJnZXQgaW50ZXJydXB0IGNvbnRyb2wgKi8KCXUxNiBoYm1zdGlycXN0YTsJLyogaG9zdCBicmlkZ2UgbWFzdGVyIGludGVycnVwdCBzdGF0dXMgKi8KCXU4ICBwYWRfMHgwNmFbMHgwMl07Cgl1MzIgbXN0aW50YWRkOwkJLyogaG9zdCBicmlkZ2UgbWFzdGVyIGludGVycnVwdCBhZGRyZXNzICovCgoJdTggIHN5c2FyYmN0bDsJCS8qIHN5c3RlbSBhcmJpdGVyIGNvbnRyb2wgKi8KCXU4ICBwY2lhcmJzdGE7CQkvKiBQQ0kgYnVzIGFyYml0ZXIgc3RhdHVzICovCgl1MTYgc3lzYXJibWVuYjsJCS8qIHN5c3RlbSBhcmJpdGVyIG1hc3RlciBlbmFibGUgKi8KCXUzMiBhcmJwcmljdGw7CQkvKiBhcmJpdGVyIHByaW9yaXR5IGNvbnRyb2wgKi8KCgl1OCAgcGFkXzB4MDc4WzB4MDhdOwoKCXU4ICBhZGRkZWNjdGw7CQkvKiBhZGRyZXNzIGRlY29kZSBjb250cm9sICovCgl1OCAgcGFkXzB4MDgxWzB4MDFdOwoJdTE2IHdwdnN0YTsJCS8qIHdyaXRlLXByb3RlY3QgdmlvbGF0aW9uIHN0YXR1cyAqLwoJdTggIHBhZF8weDA4NFsweDA0XTsKCXUzMiBwYXJbMTZdOwkJLyogcHJvZ3JhbW1hYmxlIGFkZHJlc3MgcmVnaW9ucyAqLwoKCXU4ICBwYWRfMHgwYzhbMHgwYjM4XTsKCgl1OCAgZ3BlY2hvOwkJLyogR1AgZWNobyBtb2RlICovCgl1OCAgZ3Bjc2R3OwkJLyogR1AgY2hpcCBzZWxlY3QgZGF0YSB3aWR0aCAqLwoJdTE2IGdwY3NxdWFsOwkJLyogR1AgY2hpcCBzZWxlY3QgcXVhbGlmaWNhdGlvbiAqLwoJdTggIHBhZF8weGMwNFsweDRdOwoJdTggIGdwY3NydDsJCS8qIEdQIGNoaXAgc2VsZWN0IHJlY292ZXJ5IHRpbWUgKi8KCXU4ICBncGNzcHc7CQkvKiBHUCBjaGlwIHNlbGVjdCBwdWxzZSB3aWR0aCAqLwoJdTggIGdwY3NvZmY7CQkvKiBHUCBjaGlwIHNlbGVjdCBvZmZzZXQgKi8KCXU4ICBncHJkdzsJCS8qIEdQIHJlYWQgcHVsc2Ugd2lkdGggKi8KCXU4ICBncHJkb2ZmOwkJLyogR1AgcmVhZCBvZmZzZXQgKi8KCXU4ICBncHdydzsJCS8qIEdQIHdyaXRlIHB1bHNlIHdpZHRoICovCgl1OCAgZ3B3cm9mZjsJCS8qIEdQIHdyaXRlIG9mZnNldCAqLwoJdTggIGdwYWxldzsJCS8qIEdQIGFsZSBwdWxzZSB3aWR0aCAqLwoJdTggIGdwYWxlb2ZmOwkJLyogR1AgYWxlIG9mZnNldCAqLwoKCXU4ICBwYWRfMHhjMTFbMHgwZl07CgoJdTE2IHBpb3BmczE1XzA7CQkvKiBQSU8xNS1QSU8wIHBpbiBmdW5jdGlvbiBzZWxlY3QgKi8KCXUxNiBwaW9wZnMzMV8xNjsJLyogUElPMzEtUElPMTYgcGluIGZ1bmN0aW9uIHNlbGVjdCAqLwoJdTggIGNzcGZzOwkJLyogY2hpcCBzZWxlY3QgcGluIGZ1bmN0aW9uIHNlbGVjdCAqLwoJdTggIHBhZF8weGMyNVsweDAxXTsKCXU4ICBjbGtzZWw7CQkvKiBjbG9jayBzZWxlY3QgKi8KCXU4ICBwYWRfMHhjMjdbMHgwMV07Cgl1MTYgZHNjdGw7CQkvKiBkcml2ZSBzdHJlbmd0aCBjb250cm9sICovCgl1MTYgcGlvZGlyMTVfMDsJCS8qIFBJTzE1LVBJTzAgZGlyZWN0aW9uICovCgl1MTYgcGlvZGlyMzFfMTY7CS8qIFBJTzMxLVBJTzE2IGRpcmVjdGlvbiAqLwoJdTggIHBhZF8weGMyZVsweDAyXTsKCXUxNiBwaW9kYXRhMTVfMAk7CS8qIFBJTzE1LVBJTzAgZGF0YSAqLwoJdTE2IHBpb2RhdGEzMV8xNjsJLyogUElPMzEtUElPMTYgZGF0YSAqLwoJdTE2IHBpb3NldDE1XzA7CQkvKiBQSU8xNS1QSU8wIHNldCAqLwoJdTE2IHBpb3NldDMxXzE2OwkvKiBQSU8zMS1QSU8xNiBzZXQgKi8KCXUxNiBwaW9jbHIxNV8wOwkJLyogUElPMTUtUElPMCBjbGVhciAqLwoJdTE2IHBpb2NscjMxXzE2OwkvKiBQSU8zMS1QSU8xNiBjbGVhciAqLwoKCXU4ICBwYWRfMHhjM2NbMHgyNF07CgoJdTE2IHN3dG1ybWlsbGk7CQkvKiBzb2Z0d2FyZSB0aW1lciBtaWxsaXNlY29uZCBjb3VudCAqLwoJdTE2IHN3dG1ybWljcm87CQkvKiBzb2Z0d2FyZSB0aW1lciBtaWNyb3NlY29uZCBjb3VudCAqLwoJdTggIHN3dG1yY2ZnOwkJLyogc29mdHdhcmUgdGltZXIgY29uZmlndXJhdGlvbiAqLwoKCXU4ICBwYWRfMHhjNjVbMHgwYl07CgoJdTggIGdwdG1yc3RhOwkJLyogR1AgdGltZXJzIHN0YXR1cyByZWdpc3RlciAqLwoJdTggIHBhZF8weGM3MTsKCXUxNiBncHRtcjBjdGw7CQkvKiBHUCB0aW1lciAwIG1vZGUvY29udHJvbCAqLwoJdTE2IGdwdG1yMGNudDsJCS8qIEdQIHRpbWVyIDAgY291bnQgKi8KCXUxNiBncHRtcjBtYXhjbXBhOwkvKiBHUCB0aW1lciAwIG1heGNvdW50IGNvbXBhcmUgQSAqLwoJdTE2IGdwdG1yMG1heGNtcGI7CS8qIEdQIHRpbWVyIDAgbWF4Y291bnQgY29tcGFyZSBCICovCgl1MTYgZ3B0bXIxY3RsOwkJLyogR1AgdGltZXIgMSBtb2RlL2NvbnRyb2wgKi8KCXUxNiBncHRtcjFjbnQ7CQkvKiBHUCB0aW1lciAxIGNvdW50ICovCgl1MTYgZ3B0bXIxbWF4Y21wYTsJLyogR1AgdGltZXIgMSBtYXhjb3VudCBjb21wYXJlIEEgKi8KCXUxNiBncHRtcjFtYXhjbXBiOwkvKiBHUCB0aW1lciAxIG1heGNvdW50IGNvbXBhcmUgQiovCgl1MTYgZ3B0bXIyY3RsOwkJLyogR1AgdGltZXIgMiBtb2RlL2NvbnRyb2wgKi8KCXUxNiBncHRtcjJjbnQ7CQkvKiBHUCB0aW1lciAyIGNvdW50ICovCgl1OCAgcGFkXzB4Yzg2WzB4MDhdOwoJdTE2IGdwdG1yMm1heGNtcGE7CS8qIEdQIHRpbWVyIDIgbWF4Y291bnQgY29tcGFyZSBBICovCgoJdTggIHBhZF8weGM5MFsweDIwXTsKCgl1MTYgd2R0bXJjdGw7CQkvKiB3YXRjaGRvZyB0aW1lciBjb250cm9sICovCgl1MTYgd2R0bXJjbnRsOwkJLyogd2F0Y2hkb2cgdGltZXIgY291bnQgbG93ICovCgl1MTYgd2R0bXJjbnRoOwkJLyogd2F0Y2hkb2cgdGltZXIgY291bnQgaGlnaCAqLwoKCXU4ICBwYWRfMHhjYjZbMHgwYV07CgoJdTggIHVhcnQxY3RsOwkJLyogVUFSVCAxIGdlbmVyYWwgY29udHJvbCAqLwoJdTggIHVhcnQxc3RhOwkJLyogVUFSVCAxIGdlbmVyYWwgc3RhdHVzICovCgl1OCAgdWFydDFmY3JzaGFkOwkvKiBVQVJUIDEgRklGTyBjb250cm9sIHNoYWRvdyAqLwoJdTggIHBhZF8weGNjM1sweDAxXTsKCXU4ICB1YXJ0MmN0bDsJCS8qIFVBUlQgMiBnZW5lcmFsIGNvbnRyb2wgKi8KCXU4ICB1YXJ0MnN0YTsJCS8qIFVBUlQgMiBnZW5lcmFsIHN0YXR1cyAqLwoJdTggIHVhcnQyZmNyc2hhZDsJLyogVUFSVCAyIEZJRk8gY29udHJvbCBzaGFkb3cgKi8KCgl1OCAgcGFkXzB4Y2M3WzB4MDldOwoKCXU4ICBzc2ljdGw7CQkvKiBTU0kgY29udHJvbCAqLwoJdTggIHNzaXhtaXQ7CQkvKiBTU0kgdHJhbnNtaXQgKi8KCXU4ICBzc2ljbWQ7CQkvKiBTU0kgY29tbWFuZCAqLwoJdTggIHNzaXN0YTsJCS8qIFNTSSBzdGF0dXMgKi8KCXU4ICBzc2lyY3Y7CQkvKiBTU0kgcmVjZWl2ZSAqLwoKCXU4ICBwYWRfMHhjZDVbMHgyYl07CgoJdTggIHBpY2ljcjsJCS8qIGludGVycnVwdCBjb250cm9sICovCgl1OCAgcGFkXzB4ZDAxWzB4MDFdOwoJdTggIHBpY19tb2RlWzNdOwkvKiBQSUMgaW50ZXJydXB0IG1vZGUgKi8KCXU4ICBwYWRfMHhkMDVbMHgwM107Cgl1MTYgc3dpbnQxNl8xOwkJLyogc29mdHdhcmUgaW50ZXJydXB0IDE2LTEgY29udHJvbCAqLwoJdTggIHN3aW50MjJfMTc7CQkvKiBzb2Z0d2FyZSBpbnRlcnJ1cHQgMjItMTcvTk1JIGNvbnRyb2wgKi8KCXU4ICBwYWRfMHhkMGJbMHgwNV07Cgl1MTYgaW50cGlucG9sOwkJLyogaW50ZXJydXB0IHBpbiBwb2xhcml0eSAqLwoJdTggIHBhZF8weGQxMlsweDAyXTsKCXUxNiBwY2lob3N0bWFwOwkJLyogUENJIGhvc3QgYnJpZGdlIGludGVycnVwdCBtYXBwaW5nICovCgl1OCAgcGFkXzB4ZDE2WzB4MDJdOwoJdTE2IGVjY21hcDsJCS8qIEVDQyBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIGdwX3Rtcl9pbnRfbWFwWzNdOwkvKiBHUCB0aW1lciBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIHBhZF8weGQxZFsweDAzXTsKCXU4ICBwaXRfaW50X21hcFszXTsJLyogUElUIGludGVycnVwdCBtYXBwaW5nICovCgl1OCAgcGFkXzB4ZDIzWzB4MDVdOwoJdTggIHVhcnRfaW50X21hcFsyXTsJLyogVUFSVCBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIHBhZF8weGQyYVsweDA2XTsKCXU4ICBwY2lfaW50X21hcFs0XTsJLyogUENJIGludGVycnVwdCBtYXBwaW5nIChBIHRocm91Z2ggRCkqLwoJdTggIHBhZF8weGQzNFsweDBjXTsKCXU4ICBkbWFiY2ludG1hcDsJLyogRE1BIGJ1ZmZlciBjaGFpbmluZyBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIHNzaW1hcDsJCS8qIFNTSSBpbnRlcnJ1cHQgbWFwcGluZyByZWdpc3RlciAqLwoJdTggIHdkdG1hcDsJCS8qIHdhdGNoZG9nIHRpbWVyIGludGVycnVwdCBtYXBwaW5nICovCgl1OCAgcnRjbWFwOwkJLyogUlRDIGludGVycnVwdCBtYXBwaW5nIHJlZ2lzdGVyICovCgl1OCAgd3B2bWFwOwkJLyogd3JpdGUtcHJvdGVjdCBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIGljZW1hcDsJCS8qIEFNRGVidWcgSlRBRyBSeC9UeCBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIGZlcnJtYXA7CQkvKiBmbG9hdGluZyBwb2ludCBlcnJvciBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIHBhZF8weGQ0N1sweDA5XTsKCXU4ICBncF9pbnRfbWFwWzExXTsJLyogR1AgSVJRIGludGVycnVwdCBtYXBwaW5nICovCgoJdTggIHBhZF8weGQ1YlsweDE1XTsKCgl1OCAgc3lzaW5mbzsJCS8qIHN5c3RlbSBib2FyZCBpbmZvcm1hdGlvbiAqLwoJdTggIHBhZF8weGQ3MVsweDAxXTsKCXU4ICByZXNjZmc7CQkvKiByZXNldCBjb25maWd1cmF0aW9uICovCgl1OCAgcGFkXzB4ZDczWzB4MDFdOwoJdTggIHJlc3N0YTsJCS8qIHJlc2V0IHN0YXR1cyAqLwoKCXU4ICBwYWRfMHhkNzVbMHgwYl07CgoJdTggIGdwZG1hY3RsOwkJLyogR1AtRE1BIENvbnRyb2wgKi8KCXU4ICBncGRtYW1taW87CQkvKiBHUC1ETUEgbWVtb3J5LW1hcHBlZCBJL08gKi8KCXUxNiBncGRtYWV4dGNobWFwYTsJLyogR1AtRE1BIHJlc291cmNlIGNoYW5uZWwgbWFwIGEgKi8KCXUxNiBncGRtYWV4dGNobWFwYjsJLyogR1AtRE1BIHJlc291cmNlIGNoYW5uZWwgbWFwIGIgKi8KCXU4ICBncF9kbWFfZXh0X3BnXzA7CS8qIEdQLURNQSBjaGFubmVsIGV4dGVuZGVkIHBhZ2UgMCAqLwoJdTggIGdwX2RtYV9leHRfcGdfMTsJLyogR1AtRE1BIGNoYW5uZWwgZXh0ZW5kZWQgcGFnZSAwICovCgl1OCAgZ3BfZG1hX2V4dF9wZ18yOwkvKiBHUC1ETUEgY2hhbm5lbCBleHRlbmRlZCBwYWdlIDAgKi8KCXU4ICBncF9kbWFfZXh0X3BnXzM7CS8qIEdQLURNQSBjaGFubmVsIGV4dGVuZGVkIHBhZ2UgMCAqLwoJdTggIGdwX2RtYV9leHRfcGdfNTsJLyogR1AtRE1BIGNoYW5uZWwgZXh0ZW5kZWQgcGFnZSAwICovCgl1OCAgZ3BfZG1hX2V4dF9wZ182OwkvKiBHUC1ETUEgY2hhbm5lbCBleHRlbmRlZCBwYWdlIDAgKi8KCXU4ICBncF9kbWFfZXh0X3BnXzc7CS8qIEdQLURNQSBjaGFubmVsIGV4dGVuZGVkIHBhZ2UgMCAqLwoJdTggIHBhZF8weGQ4ZFsweDAzXTsKCXU4ICBncGRtYWV4dHRjMzsJLyogR1AtRE1BIGNoYW5uZWwgMyBleHRlbmRlciB0cmFuc2ZlciBjb3VudCAqLwoJdTggIGdwZG1hZXh0dGM1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IGV4dGVuZGVyIHRyYW5zZmVyIGNvdW50ICovCgl1OCAgZ3BkbWFleHR0YzY7CS8qIEdQLURNQSBjaGFubmVsIDYgZXh0ZW5kZXIgdHJhbnNmZXIgY291bnQgKi8KCXU4ICBncGRtYWV4dHRjNzsJLyogR1AtRE1BIGNoYW5uZWwgNyBleHRlbmRlciB0cmFuc2ZlciBjb3VudCAqLwoJdTggIHBhZF8weGQ5NFsweDRdOwoJdTggIGdwZG1hYmNjdGw7CQkvKiBidWZmZXIgY2hhaW5pbmcgY29udHJvbCAqLwoJdTggIGdwZG1hYmNzdGE7CQkvKiBidWZmZXIgY2hhaW5pbmcgc3RhdHVzICovCgl1OCAgZ3BkbWFic2ludGVuYjsJLyogYnVmZmVyIGNoYWluaW5nIGludGVycnVwdCBlbmFibGUgKi8KCXU4ICBncGRtYWJjdmFsOwkJLyogYnVmZmVyIGNoYWluaW5nIHZhbGlkICovCgl1OCAgcGFkXzB4ZDljWzB4MDRdOwoJdTE2IGdwZG1hbnh0YWRkbDM7CS8qIEdQLURNQSBjaGFubmVsIDMgbmV4dCBhZGRyZXNzIGxvdyAqLwoJdTE2IGdwZG1hbnh0YWRkaDM7CS8qIEdQLURNQSBjaGFubmVsIDMgbmV4dCBhZGRyZXNzIGhpZ2ggKi8KCXUxNiBncGRtYW54dGFkZGw1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IG5leHQgYWRkcmVzcyBsb3cgKi8KCXUxNiBncGRtYW54dGFkZGg1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IG5leHQgYWRkcmVzcyBoaWdoICovCgl1MTYgZ3BkbWFueHRhZGRsNjsJLyogR1AtRE1BIGNoYW5uZWwgNiBuZXh0IGFkZHJlc3MgbG93ICovCgl1MTYgZ3BkbWFueHRhZGRoNjsJLyogR1AtRE1BIGNoYW5uZWwgNiBuZXh0IGFkZHJlc3MgaGlnaCAqLwoJdTE2IGdwZG1hbnh0YWRkbDc7CS8qIEdQLURNQSBjaGFubmVsIDcgbmV4dCBhZGRyZXNzIGxvdyAqLwoJdTE2IGdwZG1hbnh0YWRkaDc7CS8qIEdQLURNQSBjaGFubmVsIDcgbmV4dCBhZGRyZXNzIGhpZ2ggKi8KCXUxNiBncGRtYW54dHRjbDM7CS8qIEdQLURNQSBjaGFubmVsIDMgbmV4dCB0cmFuc2ZlciBjb3VudCBsb3cgKi8KCXUxNiBncGRtYW54dHRjaDM7CS8qIEdQLURNQSBjaGFubmVsIDMgbmV4dCB0cmFuc2ZlciBjb3VudCBoaWdoICovCgl1MTYgZ3BkbWFueHR0Y2w1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IG5leHQgdHJhbnNmZXIgY291bnQgbG93ICovCgl1MTYgZ3BkbWFueHR0Y2g1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IG5leHQgdHJhbnNmZXIgY291bnQgaGlnaCAqLwoJdTE2IGdwZG1hbnh0dGNsNjsJLyogR1AtRE1BIGNoYW5uZWwgNiBuZXh0IHRyYW5zZmVyIGNvdW50IGxvdyAqLwoJdTE2IGdwZG1hbnh0dGNoNjsJLyogR1AtRE1BIGNoYW5uZWwgNiBuZXh0IHRyYW5zZmVyIGNvdW50IGhpZ2ggKi8KCXUxNiBncGRtYW54dHRjbDc7CS8qIEdQLURNQSBjaGFubmVsIDcgbmV4dCB0cmFuc2ZlciBjb3VudCBsb3cgKi8KCXUxNiBncGRtYW54dHRjaDc7CS8qIEdQLURNQSBjaGFubmVsIDcgbmV4dCB0cmFuc2ZlciBjb3VudCBoaWdoICovCgoJdTggIHBhZF8weGRjMFsweDAyNDBdOwp9IHNjNTIwX21tY3JfdDsKCmV4dGVybiB2b2xhdGlsZSBzYzUyMF9tbWNyX3QgKnNjNTIwX21tY3I7CgojZW5kaWYKCi8qIE1NQ1IgT2Zmc2V0cyAocmVxdWlyZWQgZm9yIGFzc2VtYmxlciBjb2RlICovCiNkZWZpbmUgU0M1MjBfREJDVEwJCTB4MDA0MAkvKiBTRFJBTSBCdWZmZXIgQ29udHJvbCBSZWdpc3RlciAqLwojZGVmaW5lIFNDNTIwX1BBUjE0CQkweDAwYzAJLyogUHJvZ3JhbW1hYmxlIEFkZHJlc3MgUmVnaW9uIDE0IFJlZ2lzdGVyICovCiNkZWZpbmUgU0M1MjBfUEFSMTUJCTB4MDBjNAkvKiBQcm9ncmFtbWFibGUgQWRkcmVzcyBSZWdpb24gMTUgUmVnaXN0ZXIgKi8KI2RlZmluZSBTQzUyMF9TV1RNUk1JTExJCTB4MGM2MCAgLyogU29mdHdhcmUgVGltZXIgTWlsbGlzZWNvbmQgQ291bnQgKi8KI2RlZmluZSBTQzUyMF9TV1RNUk1JQ1JPCTB4MGM2MiAgLyogU29mdHdhcmUgVGltZXIgTWljcm9zZWNvbmQgQ291bnQgKi8KCi8qIE1NQ1IgUmVnaXN0ZXIgYml0cyAobm90IGFsbCBvZiB0aGVtIDopICkgKi8KCi8qIFNTSSBTdHVmZiAqLwojZGVmaW5lIENUTF9DTEtfU0VMXzQJCTB4MDAJLyogTm9taW5hbCBCaXQgUmF0ZSA9IDggTUh6ICAgICovCiNkZWZpbmUgQ1RMX0NMS19TRUxfOAkJMHgxMAkvKiBOb21pbmFsIEJpdCBSYXRlID0gNCBNSHogICAgKi8KI2RlZmluZSBDVExfQ0xLX1NFTF8xNgkJMHgyMAkvKiBOb21pbmFsIEJpdCBSYXRlID0gMiBNSHogICAgKi8KI2RlZmluZSBDVExfQ0xLX1NFTF8zMgkJMHgzMAkvKiBOb21pbmFsIEJpdCBSYXRlID0gMSBNSHogICAgKi8KI2RlZmluZSBDVExfQ0xLX1NFTF82NAkJMHg0MAkvKiBOb21pbmFsIEJpdCBSYXRlID0gNTEyIEtIeiAgKi8KI2RlZmluZSBDVExfQ0xLX1NFTF8xMjgJCTB4NTAJLyogTm9taW5hbCBCaXQgUmF0ZSA9IDI1NiBLSHogICovCiNkZWZpbmUgQ1RMX0NMS19TRUxfMjU2CQkweDYwCS8qIE5vbWluYWwgQml0IFJhdGUgPSAxMjggS0h6ICAqLwojZGVmaW5lIENUTF9DTEtfU0VMXzUxMgkJMHg3MAkvKiBOb21pbmFsIEJpdCBSYXRlID0gNjQgS0h6ICAgKi8KCiNkZWZpbmUgVENfSU5UX0VOQgkJMHgwOAkvKiBUcmFuc2FjdGlvbiBDb21wbGV0ZSBJbnRlcnJ1cHQgRW5hYmxlICovCiNkZWZpbmUgUEhTX0lOVl9FTkIJCTB4MDQJLyogU1NJIEludmVydGVkIFBoYXNlIE1vZGUgRW5hYmxlICovCiNkZWZpbmUgQ0xLX0lOVl9FTkIJCTB4MDIJLyogU1NJIEludmVydGVkIENsb2NrIE1vZGUgRW5hYmxlICovCiNkZWZpbmUgTVNCRl9FTkIJCTB4MDEJLyogU1NJIE1vc3QgU2lnbmlmaWNhbnQgQml0IEZpcnN0IE1vZGUgRW5hYmxlICovCgojZGVmaW5lIFNTSUNNRF9DTURfU0VMX1hNSVRSQ1YJMHgwMwkvKiBTaW11bHRhbmVvdXMgVHJhbnNtaXQgLyBSZWNlaXZlIFRyYW5zYWN0aW9uICovCiNkZWZpbmUgU1NJQ01EX0NNRF9TRUxfUkNWCTB4MDIJLyogUmVjZWl2ZSBUcmFuc2FjdGlvbiAqLwojZGVmaW5lIFNTSUNNRF9DTURfU0VMX1hNSVQJMHgwMQkvKiBUcmFuc21pdCBUcmFuc2FjdGlvbiAqLwojZGVmaW5lIFNTSVNUQV9CU1kJCTB4MDIJLyogU1NJIEJ1c3kgKi8KI2RlZmluZSBTU0lTVEFfVENfSU5UCQkweDAxCS8qIFNTSSBUcmFuc2FjdGlvbiBDb21wbGV0ZSBJbnRlcnJ1cHQgKi8KCi8qIEJJVFMgZm9yIFNDNTIwX0FERERFQ0NUTDogKi8KI2RlZmluZSBXUFZfSU5UX0VOQgkJMHg4MAkvKiBXcml0ZS1Qcm90ZWN0IFZpb2xhdGlvbiBJbnRlcnJ1cHQgRW5hYmxlICovCiNkZWZpbmUgSU9fSE9MRV9ERVNUX1BDSQkweDEwCS8qIEkvTyBIb2xlIEFjY2VzcyBEZXN0aW5hdGlvbiAqLwojZGVmaW5lIFJUQ19ESVMJCQkweDA0CS8qIFJUQyBEaXNhYmxlICovCiNkZWZpbmUgVUFSVDJfRElTCQkweDAyCS8qIFVBUlQyIERpc2FibGUgKi8KI2RlZmluZSBVQVJUMV9ESVMJCTB4MDEJLyogVUFSVDEgRGlzYWJsZSAqLwoKLyogYnVzIG1hcHBpbmcgY29uc3RhbnRzICh1c2VkIGZvciBQQ0kgY29yZSBpbml0aWFsaXphdGlvbikgKi8JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkgLyogYnVzIG1hcHBpbmcgY29uc3RhbnRzICovCiNkZWZpbmUgU0M1MjBfUkVHX0FERFIJCTB4MDAwMDBjZjgKI2RlZmluZSBTQzUyMF9SRUdfREFUQQkJMHgwMDAwMGNmYwoKI2RlZmluZSBTQzUyMF9JU0FfTUVNX1BIWVMJMHgwMDAwMDAwMAojZGVmaW5lIFNDNTIwX0lTQV9NRU1fQlVTCTB4MDAwMDAwMDAKI2RlZmluZSBTQzUyMF9JU0FfTUVNX1NJWkUJMHgwMTAwMDAwMAoKI2RlZmluZSBTQzUyMF9JU0FfSU9fUEhZUwkweDAwMDAwMDAwCiNkZWZpbmUgU0M1MjBfSVNBX0lPX0JVUwkweDAwMDAwMDAwCiNkZWZpbmUgU0M1MjBfSVNBX0lPX1NJWkUJMHgwMDAwMTAwMAoKLyogUENJIEkvTyBzcGFjZSBmcm9tIDB4MTAwMCB0byAweGRmZmYKICogKG1ha2UgMHhlMDAwLTB4ZmRmZiBhdmFpbGFibGUgZm9yIHN0dWZmIGxpa2UgUENDYXJkIGJvb3QpICovCiNkZWZpbmUgU0M1MjBfUENJX0lPX1BIWVMJMHgwMDAwMTAwMAojZGVmaW5lIFNDNTIwX1BDSV9JT19CVVMJMHgwMDAwMTAwMAojZGVmaW5lIFNDNTIwX1BDSV9JT19TSVpFCTB4MDAwMGQwMDAKCi8qIHN5c3RlbSBtZW1vcnkgZnJvbSAweDAwMDAwMDAwIHRvIDB4MGZmZmZmZmYgKi8KI2RlZmluZQlTQzUyMF9QQ0lfTUVNT1JZX1BIWVMJMHgwMDAwMDAwMAojZGVmaW5lCVNDNTIwX1BDSV9NRU1PUllfQlVTCTB4MDAwMDAwMDAKI2RlZmluZSBTQzUyMF9QQ0lfTUVNT1JZX1NJWkUJMHgxMDAwMDAwMAoKLyogUENJIGJ1cyBtZW1vcnkgZnJvbSAweDEwMDAwMDAwIHRvIDB4MjZmZmZmZmYKICogKG1ha2UgMHgyNzAwMDAwMCAtIDB4MjdmZmZmZmYgYXZhaWxhYmxlIGZvciBzdHVmZiBsaWtlIFBDQ2FyZCBib290KSAqLwojZGVmaW5lIFNDNTIwX1BDSV9NRU1fUEhZUwkweDEwMDAwMDAwCiNkZWZpbmUgU0M1MjBfUENJX01FTV9CVVMJMHgxMDAwMDAwMAojZGVmaW5lIFNDNTIwX1BDSV9NRU1fU0laRQkweDE3MDAwMDAwCgovKiAweDI4MDAwMDAwIC0gMHgzZmZmZmZmZiBpcyB1c2VkIGJ5IHRoZSBmbGFzaCBiYW5rcyAqLwoKLyogMHg0MDAwMDAwMCAtIDB4ZmZmZmZmZmYgaXMgbm90IGFkcmVzc2FibGUgYnkgdGhlIFNDNTIwICovCgovKiBwcmlvcml0eSBudW1iZXJzIHVzZWQgZm9yIGludGVycnVwdCBjaGFubmVsIG1hcHBpbmdzICovCiNkZWZpbmUgU0M1MjBfSVJRX0RJU0FCTEVEIDAKI2RlZmluZSBTQzUyMF9JUlEwICAxCiNkZWZpbmUgU0M1MjBfSVJRMSAgMgojZGVmaW5lIFNDNTIwX0lSUTIgIDQgIC8qIHNhbWUgYXMgSVJROSAqLwojZGVmaW5lIFNDNTIwX0lSUTMgIDExCiNkZWZpbmUgU0M1MjBfSVJRNCAgMTIKI2RlZmluZSBTQzUyMF9JUlE1ICAxMwojZGVmaW5lIFNDNTIwX0lSUTYgIDIxCiNkZWZpbmUgU0M1MjBfSVJRNyAgMjIKI2RlZmluZSBTQzUyMF9JUlE4ICAzCiNkZWZpbmUgU0M1MjBfSVJROSAgNAojZGVmaW5lIFNDNTIwX0lSUTEwIDUKI2RlZmluZSBTQzUyMF9JUlExMSA2CiNkZWZpbmUgU0M1MjBfSVJRMTIgNwojZGVmaW5lIFNDNTIwX0lSUTEzIDgKI2RlZmluZSBTQzUyMF9JUlExNCA5CiNkZWZpbmUgU0M1MjBfSVJRMTUgMTAKCiNlbmRpZgo=