LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCIDxkYW5pZWxAb21pY3Jvbi5zZT4uCiAqCiAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAqIHByb2plY3QuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAqIE1BIDAyMTExLTEzMDcgVVNBCiAqLwoKI2lmbmRlZiBfQVNNX0lDX1NDNTIwX0hfCiNkZWZpbmUgX0FTTV9JQ19TQzUyMF9IXyAxCgojaWZuZGVmIF9fQVNTRU1CTFlfXwoKdm9pZCBpbml0X3NjNTIwKHZvaWQpOwp1bnNpZ25lZCBsb25nIGluaXRfc2M1MjBfZHJhbSh2b2lkKTsKdm9pZCBzYzUyMF91ZGVsYXkodW5zaWduZWQgbG9uZyB1c2VjKTsKCi8qIE1lbW9yeSBtYXBwZWQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgKi8KdHlwZWRlZiBzdHJ1Y3Qgc2M1MjBfbW1jciB7Cgl1MTYgcmV2aWQ7CS8qIEVsYW5TQzUyMCBtaWNyb2NvbnRyb2xsZXIgcmV2aXNpb24gaWQgKi8KCXU4ICBjcHVjdGw7CS8qIGFtNXg4NiBDUFUgY29udHJvbCAgKi8KCgl1OCAgcGFkXzB4MDAzWzB4MGRdOwoKCXU4ICBkcmNjdGw7CQkvKiBTRFJBTSBjb250cm9sICovCgl1OCAgcGFkXzB4MDExWzB4MDFdOwoJdTggIGRyY3RtY3RsOwkJLyogU0RSQU0gdGltaW5nIGNvbnRyb2wgKi8KCXU4ICBwYWRfMHgwMTNbMHgwMV07Cgl1MTYgZHJjY2ZnOwkJLyogU0RSQU0gYmFuayBjb25maWd1cmF0aW9uKi8KCXU4ICBwYWRfMHgwMTZbMHgwMl07Cgl1MzIgZHJjYmVuZGFkcjsJCS8qIFNEUkFNIGJhbmsgMC0zIGVuZGluZyBhZGRyZXNzKi8KCXU4ICBwYWRfMHgwMWNbMHgwNF07Cgl1OCAgZWNjY3RsOwkJLyogRUNDIGNvbnRyb2wgKi8KCXU4ICBlY2NzdGE7CQkvKiBFQ0Mgc3RhdHVzICovCgl1OCAgZWNjY2ticG9zOwkJLyogRUNDIGNoZWNrIGJpdCBwb3NpdGlvbiAqLwoJdTggIGVjY2NrdGVzdDsJCS8qIEVDQyBDaGVjayBDb2RlIFRlc3QgKi8KCXUzMiBlY2NzYmFkZDsJCS8qIEVDQyBzaW5nbGUtYml0IGVycm9yIGFkZHJlc3MgKi8KCXUzMiBlY2NtYmFkZDsJCS8qIEVDQyBtdWx0aS1iaXQgZXJyb3IgYWRkcmVzcyAqLwoKCXU4ICBwYWRfMHgwMmNbMHgxNF07CgoJdTggIGRiY3RsOwkJLyogU0RSQU0gYnVmZmVyIGNvbnRyb2wgKi8KCgl1OCAgcGFkXzB4MDQxWzB4MGZdOwoKCXUxNiBib290Y3NjdGw7CQkvKiAvQk9PVENTIGNvbnRyb2wgKi8KCXU4ICBwYWRfMHgwNTJbMHgwMl07Cgl1MTYgcm9tY3MxY3RsOwkJLyogL1JPTUNTMSBjb250cm9sICovCgl1MTYgcm9tY3MyY3RsOwkJLyogL1JPTUNTMiBjb250cm9sICovCgoJdTggIHBhZF8weDA1OFsweDA4XTsKCgl1MTYgaGJjdGw7CQkvKiBob3N0IGJyaWRnZSBjb250cm9sICovCgl1MTYgaGJ0Z3RpcnFjdGw7CS8qIGhvc3QgYnJpZGdlIHRhcmdldCBpbnRlcnJ1cHQgY29udHJvbCAqLwoJdTE2IGhidGd0aXJxc3RhOwkvKiBob3N0IGJyaWRnZSB0YXJnZXQgaW50ZXJydXB0IHN0YXR1cyAqLwoJdTE2IGhibXN0aXJxY3RsOwkvKiBob3N0IGJyaWRnZSB0YXJnZXQgaW50ZXJydXB0IGNvbnRyb2wgKi8KCXUxNiBoYm1zdGlycXN0YTsJLyogaG9zdCBicmlkZ2UgbWFzdGVyIGludGVycnVwdCBzdGF0dXMgKi8KCXU4ICBwYWRfMHgwNmFbMHgwMl07Cgl1MzIgbXN0aW50YWRkOwkJLyogaG9zdCBicmlkZ2UgbWFzdGVyIGludGVycnVwdCBhZGRyZXNzICovCgoJdTggIHN5c2FyYmN0bDsJCS8qIHN5c3RlbSBhcmJpdGVyIGNvbnRyb2wgKi8KCXU4ICBwY2lhcmJzdGE7CQkvKiBQQ0kgYnVzIGFyYml0ZXIgc3RhdHVzICovCgl1MTYgc3lzYXJibWVuYjsJCS8qIHN5c3RlbSBhcmJpdGVyIG1hc3RlciBlbmFibGUgKi8KCXUzMiBhcmJwcmljdGw7CQkvKiBhcmJpdGVyIHByaW9yaXR5IGNvbnRyb2wgKi8KCgl1OCAgcGFkXzB4MDc4WzB4MDhdOwoKCXU4ICBhZGRkZWNjdGw7CQkvKiBhZGRyZXNzIGRlY29kZSBjb250cm9sICovCgl1OCAgcGFkXzB4MDgxWzB4MDFdOwoJdTE2IHdwdnN0YTsJCS8qIHdyaXRlLXByb3RlY3QgdmlvbGF0aW9uIHN0YXR1cyAqLwoJdTggIHBhZF8weDA4NFsweDA0XTsKCXUzMiBwYXJbMTZdOwkJLyogcHJvZ3JhbW1hYmxlIGFkZHJlc3MgcmVnaW9ucyAqLwoKCXU4ICBwYWRfMHgwYzhbMHgwYjM4XTsKCgl1OCAgZ3BlY2hvOwkJLyogR1AgZWNobyBtb2RlICovCgl1OCAgZ3Bjc2R3OwkJLyogR1AgY2hpcCBzZWxlY3QgZGF0YSB3aWR0aCAqLwoJdTE2IGdwY3NxdWFsOwkJLyogR1AgY2hpcCBzZWxlY3QgcXVhbGlmaWNhdGlvbiAqLwoJdTggIHBhZF8weGMwNFsweDRdOwoJdTggIGdwY3NydDsJCS8qIEdQIGNoaXAgc2VsZWN0IHJlY292ZXJ5IHRpbWUgKi8KCXU4ICBncGNzcHc7CQkvKiBHUCBjaGlwIHNlbGVjdCBwdWxzZSB3aWR0aCAqLwoJdTggIGdwY3NvZmY7CQkvKiBHUCBjaGlwIHNlbGVjdCBvZmZzZXQgKi8KCXU4ICBncHJkdzsJCS8qIEdQIHJlYWQgcHVsc2Ugd2lkdGggKi8KCXU4ICBncHJkb2ZmOwkJLyogR1AgcmVhZCBvZmZzZXQgKi8KCXU4ICBncHdydzsJCS8qIEdQIHdyaXRlIHB1bHNlIHdpZHRoICovCgl1OCAgZ3B3cm9mZjsJCS8qIEdQIHdyaXRlIG9mZnNldCAqLwoJdTggIGdwYWxldzsJCS8qIEdQIGFsZSBwdWxzZSB3aWR0aCAqLwoJdTggIGdwYWxlb2ZmOwkJLyogR1AgYWxlIG9mZnNldCAqLwoKCXU4ICBwYWRfMHhjMTFbMHgwZl07CgoJdTE2IHBpb3BmczE1XzA7CQkvKiBQSU8xNS1QSU8wIHBpbiBmdW5jdGlvbiBzZWxlY3QgKi8KCXUxNiBwaW9wZnMzMV8xNjsJLyogUElPMzEtUElPMTYgcGluIGZ1bmN0aW9uIHNlbGVjdCAqLwoJdTggIGNzcGZzOwkJLyogY2hpcCBzZWxlY3QgcGluIGZ1bmN0aW9uIHNlbGVjdCAqLwoJdTggIHBhZF8weGMyNVsweDAxXTsKCXU4ICBjbGtzZWw7CQkvKiBjbG9jayBzZWxlY3QgKi8KCXU4ICBwYWRfMHhjMjdbMHgwMV07Cgl1MTYgZHNjdGw7CQkvKiBkcml2ZSBzdHJlbmd0aCBjb250cm9sICovCgl1MTYgcGlvZGlyMTVfMDsJCS8qIFBJTzE1LVBJTzAgZGlyZWN0aW9uICovCgl1MTYgcGlvZGlyMzFfMTY7CS8qIFBJTzMxLVBJTzE2IGRpcmVjdGlvbiAqLwoJdTggIHBhZF8weGMyZVsweDAyXTsKCXUxNiBwaW9kYXRhMTVfMAk7CS8qIFBJTzE1LVBJTzAgZGF0YSAqLwoJdTE2IHBpb2RhdGEzMV8xNjsJLyogUElPMzEtUElPMTYgZGF0YSAqLwoJdTE2IHBpb3NldDE1XzA7CQkvKiBQSU8xNS1QSU8wIHNldCAqLwoJdTE2IHBpb3NldDMxXzE2OwkvKiBQSU8zMS1QSU8xNiBzZXQgKi8KCXUxNiBwaW9jbHIxNV8wOwkJLyogUElPMTUtUElPMCBjbGVhciAqLwoJdTE2IHBpb2NscjMxXzE2OwkvKiBQSU8zMS1QSU8xNiBjbGVhciAqLwoKCXU4ICBwYWRfMHhjM2NbMHgyNF07CgoJdTE2IHN3dG1ybWlsbGk7CQkvKiBzb2Z0d2FyZSB0aW1lciBtaWxsaXNlY29uZCBjb3VudCAqLwoJdTE2IHN3dG1ybWljcm87CQkvKiBzb2Z0d2FyZSB0aW1lciBtaWNyb3NlY29uZCBjb3VudCAqLwoJdTggIHN3dG1yY2ZnOwkJLyogc29mdHdhcmUgdGltZXIgY29uZmlndXJhdGlvbiAqLwoKCXU4ICBwYWRfMHhjNjVbMHgwYl07CgoJdTggIGdwdG1yc3RhOwkJLyogR1AgdGltZXJzIHN0YXR1cyByZWdpc3RlciAqLwoJdTggIHBhZF8weGM3MTsKCXUxNiBncHRtcjBjdGw7CQkvKiBHUCB0aW1lciAwIG1vZGUvY29udHJvbCAqLwoJdTE2IGdwdG1yMGNudDsJCS8qIEdQIHRpbWVyIDAgY291bnQgKi8KCXUxNiBncHRtcjBtYXhjbXBhOwkvKiBHUCB0aW1lciAwIG1heGNvdW50IGNvbXBhcmUgQSAqLwoJdTE2IGdwdG1yMG1heGNtcGI7CS8qIEdQIHRpbWVyIDAgbWF4Y291bnQgY29tcGFyZSBCICovCgl1MTYgZ3B0bXIxY3RsOwkJLyogR1AgdGltZXIgMSBtb2RlL2NvbnRyb2wgKi8KCXUxNiBncHRtcjFjbnQ7CQkvKiBHUCB0aW1lciAxIGNvdW50ICovCgl1MTYgZ3B0bXIxbWF4Y21wYTsJLyogR1AgdGltZXIgMSBtYXhjb3VudCBjb21wYXJlIEEgKi8KCXUxNiBncHRtcjFtYXhjbXBiOwkvKiBHUCB0aW1lciAxIG1heGNvdW50IGNvbXBhcmUgQiovCgl1MTYgZ3B0bXIyY3RsOwkJLyogR1AgdGltZXIgMiBtb2RlL2NvbnRyb2wgKi8KCXUxNiBncHRtcjJjbnQ7CQkvKiBHUCB0aW1lciAyIGNvdW50ICovCgl1OCAgcGFkXzB4Yzg2WzB4MDhdOwoJdTE2IGdwdG1yMm1heGNtcGE7CS8qIEdQIHRpbWVyIDIgbWF4Y291bnQgY29tcGFyZSBBICovCgoJdTggIHBhZF8weGM5MFsweDIwXTsKCgl1MTYgd2R0bXJjdGw7CQkvKiB3YXRjaGRvZyB0aW1lciBjb250cm9sICovCgl1MTYgd2R0bXJjbnRsOwkJLyogd2F0Y2hkb2cgdGltZXIgY291bnQgbG93ICovCgl1MTYgd2R0bXJjbnRoOwkJLyogd2F0Y2hkb2cgdGltZXIgY291bnQgaGlnaCAqLwoKCXU4ICBwYWRfMHhjYjZbMHgwYV07CgoJdTggIHVhcnQxY3RsOwkJLyogVUFSVCAxIGdlbmVyYWwgY29udHJvbCAqLwoJdTggIHVhcnQxc3RhOwkJLyogVUFSVCAxIGdlbmVyYWwgc3RhdHVzICovCgl1OCAgdWFydDFmY3JzaGFkOwkvKiBVQVJUIDEgRklGTyBjb250cm9sIHNoYWRvdyAqLwoJdTggIHBhZF8weGNjM1sweDAxXTsKCXU4ICB1YXJ0MmN0bDsJCS8qIFVBUlQgMiBnZW5lcmFsIGNvbnRyb2wgKi8KCXU4ICB1YXJ0MnN0YTsJCS8qIFVBUlQgMiBnZW5lcmFsIHN0YXR1cyAqLwoJdTggIHVhcnQyZmNyc2hhZDsJLyogVUFSVCAyIEZJRk8gY29udHJvbCBzaGFkb3cgKi8KCgl1OCAgcGFkXzB4Y2M3WzB4MDldOwoKCXU4ICBzc2ljdGw7CQkvKiBTU0kgY29udHJvbCAqLwoJdTggIHNzaXhtaXQ7CQkvKiBTU0kgdHJhbnNtaXQgKi8KCXU4ICBzc2ljbWQ7CQkvKiBTU0kgY29tbWFuZCAqLwoJdTggIHNzaXN0YTsJCS8qIFNTSSBzdGF0dXMgKi8KCXU4ICBzc2lyY3Y7CQkvKiBTU0kgcmVjZWl2ZSAqLwoKCXU4ICBwYWRfMHhjZDVbMHgyYl07CgoJdTggIHBpY2ljcjsJCS8qIGludGVycnVwdCBjb250cm9sICovCgl1OCAgcGFkXzB4ZDAxWzB4MDFdOwoJdTggIHBpY19tb2RlWzNdOwkvKiBQSUMgaW50ZXJydXB0IG1vZGUgKi8KCXU4ICBwYWRfMHhkMDVbMHgwM107Cgl1MTYgc3dpbnQxNl8xOwkJLyogc29mdHdhcmUgaW50ZXJydXB0IDE2LTEgY29udHJvbCAqLwoJdTggIHN3aW50MjJfMTc7CQkvKiBzb2Z0d2FyZSBpbnRlcnJ1cHQgMjItMTcvTk1JIGNvbnRyb2wgKi8KCXU4ICBwYWRfMHhkMGJbMHgwNV07Cgl1MTYgaW50cGlucG9sOwkJLyogaW50ZXJydXB0IHBpbiBwb2xhcml0eSAqLwoJdTggIHBhZF8weGQxMlsweDAyXTsKCXUxNiBwY2lob3N0bWFwOwkJLyogUENJIGhvc3QgYnJpZGdlIGludGVycnVwdCBtYXBwaW5nICovCgl1OCAgcGFkXzB4ZDE2WzB4MDJdOwoJdTE2IGVjY21hcDsJCS8qIEVDQyBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIGdwX3Rtcl9pbnRfbWFwWzNdOwkvKiBHUCB0aW1lciBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIHBhZF8weGQxZFsweDAzXTsKCXU4ICBwaXRfaW50X21hcFszXTsJLyogUElUIGludGVycnVwdCBtYXBwaW5nICovCgl1OCAgcGFkXzB4ZDIzWzB4MDVdOwoJdTggIHVhcnRfaW50X21hcFsyXTsJLyogVUFSVCBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIHBhZF8weGQyYVsweDA2XTsKCXU4ICBwY2lfaW50X21hcFs0XTsJLyogUENJIGludGVycnVwdCBtYXBwaW5nIChBIHRocm91Z2ggRCkqLwoJdTggIHBhZF8weGQzNFsweDBjXTsKCXU4ICBkbWFiY2ludG1hcDsJLyogRE1BIGJ1ZmZlciBjaGFpbmluZyBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIHNzaW1hcDsJCS8qIFNTSSBpbnRlcnJ1cHQgbWFwcGluZyByZWdpc3RlciAqLwoJdTggIHdkdG1hcDsJCS8qIHdhdGNoZG9nIHRpbWVyIGludGVycnVwdCBtYXBwaW5nICovCgl1OCAgcnRjbWFwOwkJLyogUlRDIGludGVycnVwdCBtYXBwaW5nIHJlZ2lzdGVyICovCgl1OCAgd3B2bWFwOwkJLyogd3JpdGUtcHJvdGVjdCBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIGljZW1hcDsJCS8qIEFNRGVidWcgSlRBRyBSeC9UeCBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIGZlcnJtYXA7CQkvKiBmbG9hdGluZyBwb2ludCBlcnJvciBpbnRlcnJ1cHQgbWFwcGluZyAqLwoJdTggIHBhZF8weGQ0N1sweDA5XTsKCXU4ICBncF9pbnRfbWFwWzExXTsJLyogR1AgSVJRIGludGVycnVwdCBtYXBwaW5nICovCgoJdTggIHBhZF8weGQ1YlsweDE1XTsKCgl1OCAgc3lzaW5mbzsJCS8qIHN5c3RlbSBib2FyZCBpbmZvcm1hdGlvbiAqLwoJdTggIHBhZF8weGQ3MVsweDAxXTsKCXU4ICByZXNjZmc7CQkvKiByZXNldCBjb25maWd1cmF0aW9uICovCgl1OCAgcGFkXzB4ZDczWzB4MDFdOwoJdTggIHJlc3N0YTsJCS8qIHJlc2V0IHN0YXR1cyAqLwoKCXU4ICBwYWRfMHhkNzVbMHgwYl07CgoJdTggIGdwZG1hY3RsOwkJLyogR1AtRE1BIENvbnRyb2wgKi8KCXU4ICBncGRtYW1taW87CQkvKiBHUC1ETUEgbWVtb3J5LW1hcHBlZCBJL08gKi8KCXUxNiBncGRtYWV4dGNobWFwYTsJLyogR1AtRE1BIHJlc291cmNlIGNoYW5uZWwgbWFwIGEgKi8KCXUxNiBncGRtYWV4dGNobWFwYjsJLyogR1AtRE1BIHJlc291cmNlIGNoYW5uZWwgbWFwIGIgKi8KCXU4ICBncF9kbWFfZXh0X3BnXzA7CS8qIEdQLURNQSBjaGFubmVsIGV4dGVuZGVkIHBhZ2UgMCAqLwoJdTggIGdwX2RtYV9leHRfcGdfMTsJLyogR1AtRE1BIGNoYW5uZWwgZXh0ZW5kZWQgcGFnZSAwICovCgl1OCAgZ3BfZG1hX2V4dF9wZ18yOwkvKiBHUC1ETUEgY2hhbm5lbCBleHRlbmRlZCBwYWdlIDAgKi8KCXU4ICBncF9kbWFfZXh0X3BnXzM7CS8qIEdQLURNQSBjaGFubmVsIGV4dGVuZGVkIHBhZ2UgMCAqLwoJdTggIGdwX2RtYV9leHRfcGdfNTsJLyogR1AtRE1BIGNoYW5uZWwgZXh0ZW5kZWQgcGFnZSAwICovCgl1OCAgZ3BfZG1hX2V4dF9wZ182OwkvKiBHUC1ETUEgY2hhbm5lbCBleHRlbmRlZCBwYWdlIDAgKi8KCXU4ICBncF9kbWFfZXh0X3BnXzc7CS8qIEdQLURNQSBjaGFubmVsIGV4dGVuZGVkIHBhZ2UgMCAqLwoJdTggIHBhZF8weGQ4ZFsweDAzXTsKCXU4ICBncGRtYWV4dHRjMzsJLyogR1AtRE1BIGNoYW5uZWwgMyBleHRlbmRlciB0cmFuc2ZlciBjb3VudCAqLwoJdTggIGdwZG1hZXh0dGM1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IGV4dGVuZGVyIHRyYW5zZmVyIGNvdW50ICovCgl1OCAgZ3BkbWFleHR0YzY7CS8qIEdQLURNQSBjaGFubmVsIDYgZXh0ZW5kZXIgdHJhbnNmZXIgY291bnQgKi8KCXU4ICBncGRtYWV4dHRjNzsJLyogR1AtRE1BIGNoYW5uZWwgNyBleHRlbmRlciB0cmFuc2ZlciBjb3VudCAqLwoJdTggIHBhZF8weGQ5NFsweDRdOwoJdTggIGdwZG1hYmNjdGw7CQkvKiBidWZmZXIgY2hhaW5pbmcgY29udHJvbCAqLwoJdTggIGdwZG1hYmNzdGE7CQkvKiBidWZmZXIgY2hhaW5pbmcgc3RhdHVzICovCgl1OCAgZ3BkbWFic2ludGVuYjsJLyogYnVmZmVyIGNoYWluaW5nIGludGVycnVwdCBlbmFibGUgKi8KCXU4ICBncGRtYWJjdmFsOwkJLyogYnVmZmVyIGNoYWluaW5nIHZhbGlkICovCgl1OCAgcGFkXzB4ZDljWzB4MDRdOwoJdTE2IGdwZG1hbnh0YWRkbDM7CS8qIEdQLURNQSBjaGFubmVsIDMgbmV4dCBhZGRyZXNzIGxvdyAqLwoJdTE2IGdwZG1hbnh0YWRkaDM7CS8qIEdQLURNQSBjaGFubmVsIDMgbmV4dCBhZGRyZXNzIGhpZ2ggKi8KCXUxNiBncGRtYW54dGFkZGw1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IG5leHQgYWRkcmVzcyBsb3cgKi8KCXUxNiBncGRtYW54dGFkZGg1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IG5leHQgYWRkcmVzcyBoaWdoICovCgl1MTYgZ3BkbWFueHRhZGRsNjsJLyogR1AtRE1BIGNoYW5uZWwgNiBuZXh0IGFkZHJlc3MgbG93ICovCgl1MTYgZ3BkbWFueHRhZGRoNjsJLyogR1AtRE1BIGNoYW5uZWwgNiBuZXh0IGFkZHJlc3MgaGlnaCAqLwoJdTE2IGdwZG1hbnh0YWRkbDc7CS8qIEdQLURNQSBjaGFubmVsIDcgbmV4dCBhZGRyZXNzIGxvdyAqLwoJdTE2IGdwZG1hbnh0YWRkaDc7CS8qIEdQLURNQSBjaGFubmVsIDcgbmV4dCBhZGRyZXNzIGhpZ2ggKi8KCXUxNiBncGRtYW54dHRjbDM7CS8qIEdQLURNQSBjaGFubmVsIDMgbmV4dCB0cmFuc2ZlciBjb3VudCBsb3cgKi8KCXUxNiBncGRtYW54dHRjaDM7CS8qIEdQLURNQSBjaGFubmVsIDMgbmV4dCB0cmFuc2ZlciBjb3VudCBoaWdoICovCgl1MTYgZ3BkbWFueHR0Y2w1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IG5leHQgdHJhbnNmZXIgY291bnQgbG93ICovCgl1MTYgZ3BkbWFueHR0Y2g1OwkvKiBHUC1ETUEgY2hhbm5lbCA1IG5leHQgdHJhbnNmZXIgY291bnQgaGlnaCAqLwoJdTE2IGdwZG1hbnh0dGNsNjsJLyogR1AtRE1BIGNoYW5uZWwgNiBuZXh0IHRyYW5zZmVyIGNvdW50IGxvdyAqLwoJdTE2IGdwZG1hbnh0dGNoNjsJLyogR1AtRE1BIGNoYW5uZWwgNiBuZXh0IHRyYW5zZmVyIGNvdW50IGhpZ2ggKi8KCXUxNiBncGRtYW54dHRjbDc7CS8qIEdQLURNQSBjaGFubmVsIDcgbmV4dCB0cmFuc2ZlciBjb3VudCBsb3cgKi8KCXUxNiBncGRtYW54dHRjaDc7CS8qIEdQLURNQSBjaGFubmVsIDcgbmV4dCB0cmFuc2ZlciBjb3VudCBoaWdoICovCgoJdTggIHBhZF8weGRjMFsweDAyNDBdOwp9IHNjNTIwX21tY3JfdDsKCmV4dGVybiBzYzUyMF9tbWNyX3QgKnNjNTIwX21tY3I7CgojZW5kaWYKCi8qIE1lbW9yeSBNYXBwZWQgQ29udHJvbCBSZWdpc3RlcnMgKE1NQ1IpIEJhc2UgQWRkcmVzcyAqLwojZGVmaW5lIFNDNTIwX01NQ1JfQkFTRQkJMHhmZmZlZjAwMAoKLyogTU1DUiBBZGRyZXNzZXMgKHJlcXVpcmVkIGZvciBhc3NlbWJsZXIgY29kZSkgKi8KI2RlZmluZSBTQzUyMF9EUkNDVEwJCShTQzUyMF9NTUNSX0JBU0UgKyAweDAxMCkKI2RlZmluZSBTQzUyMF9EUkNUTUNUTAkJKFNDNTIwX01NQ1JfQkFTRSArIDB4MDEyKQojZGVmaW5lIFNDNTIwX0RSQ0NGRwkJKFNDNTIwX01NQ1JfQkFTRSArIDB4MDE0KQojZGVmaW5lIFNDNTIwX0RSQ0JFTkRBRFIJKFNDNTIwX01NQ1JfQkFTRSArIDB4MDE4KQojZGVmaW5lIFNDNTIwX0VDQ0NUTAkJKFNDNTIwX01NQ1JfQkFTRSArIDB4MDIwKQojZGVmaW5lIFNDNTIwX0RCQ1RMCQkoU0M1MjBfTU1DUl9CQVNFICsgMHgwNDApCiNkZWZpbmUgU0M1MjBfRUNDSU5UCQkoU0M1MjBfTU1DUl9CQVNFICsgMHhkMTgpCgojZGVmaW5lIFNDNTIwX1BBUjAJCShTQzUyMF9NTUNSX0JBU0UgKyAweDA4OCkKI2RlZmluZSBTQzUyMF9QQVIxCQkoU0M1MjBfUEFSMCArICgweDA0ICogMSkpCiNkZWZpbmUgU0M1MjBfUEFSMgkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDIpKQojZGVmaW5lIFNDNTIwX1BBUjMJCShTQzUyMF9QQVIwICsgKDB4MDQgKiAzKSkKI2RlZmluZSBTQzUyMF9QQVI0CQkoU0M1MjBfUEFSMCArICgweDA0ICogNCkpCiNkZWZpbmUgU0M1MjBfUEFSNQkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDUpKQojZGVmaW5lIFNDNTIwX1BBUjYJCShTQzUyMF9QQVIwICsgKDB4MDQgKiA2KSkKI2RlZmluZSBTQzUyMF9QQVI3CQkoU0M1MjBfUEFSMCArICgweDA0ICogNykpCiNkZWZpbmUgU0M1MjBfUEFSOAkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDgpKQojZGVmaW5lIFNDNTIwX1BBUjkJCShTQzUyMF9QQVIwICsgKDB4MDQgKiA5KSkKI2RlZmluZSBTQzUyMF9QQVIxMAkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDEwKSkKI2RlZmluZSBTQzUyMF9QQVIxMQkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDExKSkKI2RlZmluZSBTQzUyMF9QQVIxMgkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDEyKSkKI2RlZmluZSBTQzUyMF9QQVIxMwkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDEzKSkKI2RlZmluZSBTQzUyMF9QQVIxNAkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDE0KSkKI2RlZmluZSBTQzUyMF9QQVIxNQkJKFNDNTIwX1BBUjAgKyAoMHgwNCAqIDE1KSkKCi8qCiAqIFBBUnMgZm9yIG1heGltdW0gYWxsb3dhYmxlIDI1Nk1CIG9mIFNEUkFNIEAgMHgwMDAwMDAwMAogKiBUd28gUEFScyBhcmUgcmVxdWlyZWQgZHVlIHRvIG1heGltdW0gUEFSIHNpemUgb2YgMTI4TUIKICogVGhlc2UgYXJlIHVzZWQgaW4gdGhlIFNEUkFNIHNpemluZyBjb2RlIHRvIGRpc2FibGUgY2FjaGluZwogKgogKiAxMTEgMCAwIDAgMSAxMTExMTExMTExMSAwMDAwMDAwMDAwMDAwMCB9LSAweGUzZmZjMDAwCiAqIDExMSAwIDAgMCAxIDExMTExMTExMTExIDAwMTAwMDAwMDAwMDAwIH0tIDB4ZTNmZmM4MDAKICogXCAvIHwgfCB8IHwgXC0tLS0rLS0tLS8gXC0tLS0tKy0tLS0tLS8KICogIHwgIHwgfCB8IHwgICAgICB8ICAgICAgICAgICAgKy0tLS0tLS0tLS0gU3RhcnQgYXQgMHgwMDAwMDAwMAogKiAgfCAgfCB8IHwgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4MDAwMDAwCiAqICB8ICB8IHwgfCB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDEyOE1CIFJlZ2lvbiBTaXplCiAqICB8ICB8IHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoMjA0NyArIDEpICogNjRrQikKICogIHwgIHwgfCB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gNjRrQiBQYWdlIFNpemUKICogIHwgIHwgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV3JpdGVzIEVuYWJsZWQKICogIHwgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FjaGluZyBFbmFibGVkCiAqICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4ZWN1dGlvbiBFbmFibGVkCiAqICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNEUkFNCiAqLwojZGVmaW5lIFNDNTIwX1NEUkFNMV9QQVIJMHhlM2ZmYzAwMAojZGVmaW5lIFNDNTIwX1NEUkFNMl9QQVIJMHhlM2ZmYzgwMAoKI2RlZmluZSBTQzUyMF9QQVJfV1JJVEVfRElTCTB4MDQwMDAwMDAKI2RlZmluZSBTQzUyMF9QQVJfQ0FDSEVfRElTCTB4MDgwMDAwMDAKI2RlZmluZSBTQzUyMF9QQVJfRVhFQ19ESVMJMHgxMDAwMDAwMAoKLyoKICogUHJvZ3JhbW1hYmxlIEFkZHJlc3MgUmVnaW9ucyB0byBjb3ZlciAyNTZNQiBTRFJBTSAoTWF4aW11bSBzdXBwb3J0ZWQpCiAqIHJlcXVpcmVkIGZvciBEUkFNIHNpemluZyBjb2RlCiAqLwoKLyogTU1DUiBSZWdpc3RlciBiaXRzIChub3QgYWxsIG9mIHRoZW0gOikgKSAqLwoKLyogU1NJIFN0dWZmICovCiNkZWZpbmUgQ1RMX0NMS19TRUxfNAkJMHgwMAkvKiBOb21pbmFsIEJpdCBSYXRlID0gOCBNSHogICAgKi8KI2RlZmluZSBDVExfQ0xLX1NFTF84CQkweDEwCS8qIE5vbWluYWwgQml0IFJhdGUgPSA0IE1IeiAgICAqLwojZGVmaW5lIENUTF9DTEtfU0VMXzE2CQkweDIwCS8qIE5vbWluYWwgQml0IFJhdGUgPSAyIE1IeiAgICAqLwojZGVmaW5lIENUTF9DTEtfU0VMXzMyCQkweDMwCS8qIE5vbWluYWwgQml0IFJhdGUgPSAxIE1IeiAgICAqLwojZGVmaW5lIENUTF9DTEtfU0VMXzY0CQkweDQwCS8qIE5vbWluYWwgQml0IFJhdGUgPSA1MTIgS0h6ICAqLwojZGVmaW5lIENUTF9DTEtfU0VMXzEyOAkJMHg1MAkvKiBOb21pbmFsIEJpdCBSYXRlID0gMjU2IEtIeiAgKi8KI2RlZmluZSBDVExfQ0xLX1NFTF8yNTYJCTB4NjAJLyogTm9taW5hbCBCaXQgUmF0ZSA9IDEyOCBLSHogICovCiNkZWZpbmUgQ1RMX0NMS19TRUxfNTEyCQkweDcwCS8qIE5vbWluYWwgQml0IFJhdGUgPSA2NCBLSHogICAqLwoKI2RlZmluZSBUQ19JTlRfRU5CCQkweDA4CS8qIFRyYW5zYWN0aW9uIENvbXBsZXRlIEludGVycnVwdCBFbmFibGUgKi8KI2RlZmluZSBQSFNfSU5WX0VOQgkJMHgwNAkvKiBTU0kgSW52ZXJ0ZWQgUGhhc2UgTW9kZSBFbmFibGUgKi8KI2RlZmluZSBDTEtfSU5WX0VOQgkJMHgwMgkvKiBTU0kgSW52ZXJ0ZWQgQ2xvY2sgTW9kZSBFbmFibGUgKi8KI2RlZmluZSBNU0JGX0VOQgkJMHgwMQkvKiBTU0kgTW9zdCBTaWduaWZpY2FudCBCaXQgRmlyc3QgTW9kZSBFbmFibGUgKi8KCiNkZWZpbmUgU1NJQ01EX0NNRF9TRUxfWE1JVFJDVgkweDAzCS8qIFNpbXVsdGFuZW91cyBUcmFuc21pdCAvIFJlY2VpdmUgVHJhbnNhY3Rpb24gKi8KI2RlZmluZSBTU0lDTURfQ01EX1NFTF9SQ1YJMHgwMgkvKiBSZWNlaXZlIFRyYW5zYWN0aW9uICovCiNkZWZpbmUgU1NJQ01EX0NNRF9TRUxfWE1JVAkweDAxCS8qIFRyYW5zbWl0IFRyYW5zYWN0aW9uICovCiNkZWZpbmUgU1NJU1RBX0JTWQkJMHgwMgkvKiBTU0kgQnVzeSAqLwojZGVmaW5lIFNTSVNUQV9UQ19JTlQJCTB4MDEJLyogU1NJIFRyYW5zYWN0aW9uIENvbXBsZXRlIEludGVycnVwdCAqLwoKLyogQklUUyBmb3IgU0M1MjBfQUREREVDQ1RMOiAqLwojZGVmaW5lIFdQVl9JTlRfRU5CCQkweDgwCS8qIFdyaXRlLVByb3RlY3QgVmlvbGF0aW9uIEludGVycnVwdCBFbmFibGUgKi8KI2RlZmluZSBJT19IT0xFX0RFU1RfUENJCTB4MTAJLyogSS9PIEhvbGUgQWNjZXNzIERlc3RpbmF0aW9uICovCiNkZWZpbmUgUlRDX0RJUwkJCTB4MDQJLyogUlRDIERpc2FibGUgKi8KI2RlZmluZSBVQVJUMl9ESVMJCTB4MDIJLyogVUFSVDIgRGlzYWJsZSAqLwojZGVmaW5lIFVBUlQxX0RJUwkJMHgwMQkvKiBVQVJUMSBEaXNhYmxlICovCgovKgogKiBEZWZpbmVzIHVzZWQgZm9yIFNEUkFNIFNpemluZyAobnVtYmVyIG9mIGNvbHVtbnMgYW5kIHJvd3MpCiAqIFJlZmVyIHRvIHNlY3Rpb24gMTAuNi40IC0gU0RSQU0gU2l6aW5nIEFsZ29yaXRobSBpbiB0aGUKICogRWxhbiBTQzUyMCBNaWNyb2NvbnRyb2xsZXIgVXNlcidzIE1hbnVhbCAoT3JkZXIgIzIyMDA0QikKICovCiNkZWZpbmUgQ0FDSEVMSU5FU1oJCTB4MDAwMDAwMTAKCiNkZWZpbmUgQ09MMTFfQURSCQkweDBlMDAxZTAwCiNkZWZpbmUgQ09MMTBfQURSCQkweDBlMDAwZTAwCiNkZWZpbmUgQ09MMDlfQURSCQkweDBlMDAwNjAwCiNkZWZpbmUgQ09MMDhfQURSCQkweDBlMDAwMjAwCiNkZWZpbmUgQ09MMTFfREFUQQkJMHgwYjBiMGIwYgojZGVmaW5lIENPTDEwX0RBVEEJCTB4MGEwYTBhMGEKI2RlZmluZSBDT0wwOV9EQVRBCQkweDA5MDkwOTA5CiNkZWZpbmUgQ09MMDhfREFUQQkJMHgwODA4MDgwOAoKI2RlZmluZSBST1cxNF9BRFIJCTB4MGYwMDAwMDAKI2RlZmluZSBST1cxM19BRFIJCTB4MDcwMDAwMDAKI2RlZmluZSBST1cxMl9BRFIJCTB4MDMwMDAwMDAKI2RlZmluZSBST1cxMV9BRFIJCTB4MDEwMDAwMDAKI2RlZmluZSBST1cxMF9BRFIJCTB4MDAwMDAwMDAKI2RlZmluZSBST1cxNF9EQVRBCQkweDNmM2YzZjNmCiNkZWZpbmUgUk9XMTNfREFUQQkJMHgxZjFmMWYxZgojZGVmaW5lIFJPVzEyX0RBVEEJCTB4MGYwZjBmMGYKI2RlZmluZSBST1cxMV9EQVRBCQkweDA3MDcwNzA3CiNkZWZpbmUgUk9XMTBfREFUQQkJMHhhYWFhYWFhYQoKLyogMHgyODAwMDAwMCAtIDB4M2ZmZmZmZmYgaXMgdXNlZCBieSB0aGUgZmxhc2ggYmFua3MgKi8KCi8qIDB4NDAwMDAwMDAgLSAweGZmZmZmZmZmIGlzIG5vdCBhZHJlc3NhYmxlIGJ5IHRoZSBTQzUyMCAqLwoKLyogcHJpb3JpdHkgbnVtYmVycyB1c2VkIGZvciBpbnRlcnJ1cHQgY2hhbm5lbCBtYXBwaW5ncyAqLwojZGVmaW5lIFNDNTIwX0lSUV9ESVNBQkxFRCAwCiNkZWZpbmUgU0M1MjBfSVJRMCAgMQojZGVmaW5lIFNDNTIwX0lSUTEgIDIKI2RlZmluZSBTQzUyMF9JUlEyICA0ICAvKiBzYW1lIGFzIElSUTkgKi8KI2RlZmluZSBTQzUyMF9JUlEzICAxMQojZGVmaW5lIFNDNTIwX0lSUTQgIDEyCiNkZWZpbmUgU0M1MjBfSVJRNSAgMTMKI2RlZmluZSBTQzUyMF9JUlE2ICAyMQojZGVmaW5lIFNDNTIwX0lSUTcgIDIyCiNkZWZpbmUgU0M1MjBfSVJROCAgMwojZGVmaW5lIFNDNTIwX0lSUTkgIDQKI2RlZmluZSBTQzUyMF9JUlExMCA1CiNkZWZpbmUgU0M1MjBfSVJRMTEgNgojZGVmaW5lIFNDNTIwX0lSUTEyIDcKI2RlZmluZSBTQzUyMF9JUlExMyA4CiNkZWZpbmUgU0M1MjBfSVJRMTQgOQojZGVmaW5lIFNDNTIwX0lSUTE1IDEwCgojZW5kaWYK