Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMTAgSGFydG11dCBLYWlzZXIKICAgIENvcHlyaWdodCAoYykgMjAwMS0yMDEwIEpvZWwgZGUgR3V6bWFuCgogICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwogICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KI2lmICFkZWZpbmVkKEJPT1NUX1NQSVJJVF9JU084ODU5XzFfQVBSSUxfMjZfMjAwNl8xMTA2UE0pCiNkZWZpbmUgQk9PU1RfU1BJUklUX0lTTzg4NTlfMV9BUFJJTF8yNl8yMDA2XzExMDZQTQoKI2lmIGRlZmluZWQoX01TQ19WRVIpCiNwcmFnbWEgb25jZQojZW5kaWYKCiNpbmNsdWRlIDxjbGltaXRzPgojaW5jbHVkZSA8Ym9vc3QvYXNzZXJ0LmhwcD4KI2luY2x1ZGUgPGJvb3N0L2NzdGRpbnQuaHBwPgoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLyBjb25zdGFudHMgdXNlZCB0byBjbGFzc2lmeSB0aGUgc2luZ2xlIGNoYXJhY3RlcnMKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwojZGVmaW5lIEJPT1NUX0NDX0RJR0lUICAgIDB4MDAwMQojZGVmaW5lIEJPT1NUX0NDX1hESUdJVCAgIDB4MDAwMgojZGVmaW5lIEJPT1NUX0NDX0FMUEhBICAgIDB4MDAwNAojZGVmaW5lIEJPT1NUX0NDX0NUUkwgICAgIDB4MDAwOAojZGVmaW5lIEJPT1NUX0NDX0xPV0VSICAgIDB4MDAxMAojZGVmaW5lIEJPT1NUX0NDX1VQUEVSICAgIDB4MDAyMAojZGVmaW5lIEJPT1NUX0NDX1NQQUNFICAgIDB4MDA0MAojZGVmaW5lIEJPT1NUX0NDX1BVTkNUICAgIDB4MDA4MAoKbmFtZXNwYWNlIGJvb3N0IHsgbmFtZXNwYWNlIHNwaXJpdCB7IG5hbWVzcGFjZSBjaGFyX2VuY29kaW5nCnsKICAgIC8vIFRoZSBkZXRlY3Rpb24gb2YgaXNncmFwaCgpLCBpc3ByaW50KCkgYW5kIGlzYmxhbmsoKSBpcyBkb25lIHByb2dyYW1tYXRpY2FsbHkKICAgIC8vIHRvIGtlZXAgdGhlIGNoYXJhY3RlciB0eXBlIHRhYmxlIHNtYWxsLiBBZGRpdGlvbmFsbHksIHRoZXNlIGZ1bmN0aW9ucyBhcmUKICAgIC8vIHJhdGhlciBzZWxkb20gdXNlZCBhbmQgdGhlIHByb2dyYW1tYXRpYyBkZXRlY3Rpb24gaXMgdmVyeSBzaW1wbGUuCgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAvLyBJU08gODg1OS0xIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiB0YWJsZQogICAgLy8KICAgIC8vIHRoZSBjb21tZW50cyBpbnRlbnRpb25hbGx5IGNvbnRhaW4gbm9uLWFzY2lpIGNoYXJhY3RlcnMKICAgIC8vIGJvb3N0aW5zcGVjdDpub2FzY2lpCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgaXNvODg1OV8xX2NoYXJfdHlwZXNbXSA9CiAgICB7CiAgICAgICAgLyogTlVMICAgMCAgIDAgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIFNPSCAgIDEgICAxICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBTVFggICAyICAgMiAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogRVRYICAgMyAgIDMgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIEVPVCAgIDQgICA0ICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBFTlEgICA1ICAgNSAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogQUNLICAgNiAgIDYgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIEJFTCAgIDcgICA3ICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBCUyAgICA4ICAgOCAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogSFQgICAgOSAgIDkgKi8gICBCT09TVF9DQ19DVFJMfEJPT1NUX0NDX1NQQUNFLAogICAgICAgIC8qIE5MICAgMTAgICBhICovICAgQk9PU1RfQ0NfQ1RSTHxCT09TVF9DQ19TUEFDRSwKICAgICAgICAvKiBWVCAgIDExICAgYiAqLyAgIEJPT1NUX0NDX0NUUkx8Qk9PU1RfQ0NfU1BBQ0UsCiAgICAgICAgLyogTlAgICAxMiAgIGMgKi8gICBCT09TVF9DQ19DVFJMfEJPT1NUX0NDX1NQQUNFLAogICAgICAgIC8qIENSICAgMTMgICBkICovICAgQk9PU1RfQ0NfQ1RSTHxCT09TVF9DQ19TUEFDRSwKICAgICAgICAvKiBTTyAgIDE0ICAgZSAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogU0kgICAxNSAgIGYgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIERMRSAgMTYgIDEwICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBEQzEgIDE3ICAxMSAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogREMyICAxOCAgMTIgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIERDMyAgMTkgIDEzICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBEQzQgIDIwICAxNCAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogTkFLICAyMSAgMTUgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIFNZTiAgMjIgIDE2ICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBFVEIgIDIzICAxNyAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogQ0FOICAyNCAgMTggKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIEVNICAgMjUgIDE5ICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBTVUIgIDI2ICAxYSAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogRVNDICAyNyAgMWIgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIEZTICAgMjggIDFjICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBHUyAgIDI5ICAxZCAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogUlMgICAzMCAgMWUgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIFVTICAgMzEgIDFmICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiBTUCAgIDMyICAyMCAqLyAgIEJPT1NUX0NDX1NQQUNFLAogICAgICAgIC8qICAhICAgMzMgIDIxICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogICIgICAzNCAgMjIgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgIyAgIDM1ICAyMyAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICAkICAgMzYgIDI0ICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogICUgICAzNyAgMjUgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgJiAgIDM4ICAyNiAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICAnICAgMzkgIDI3ICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogICggICA0MCAgMjggKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgKSAgIDQxICAyOSAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICAqICAgNDIgIDJhICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogICsgICA0MyAgMmIgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgLCAgIDQ0ICAyYyAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICAtICAgNDUgIDJkICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIC4gICA0NiAgMmUgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgLyAgIDQ3ICAyZiAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICAwICAgNDggIDMwICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICAxICAgNDkgIDMxICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICAyICAgNTAgIDMyICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICAzICAgNTEgIDMzICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICA0ICAgNTIgIDM0ICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICA1ICAgNTMgIDM1ICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICA2ICAgNTQgIDM2ICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICA3ICAgNTUgIDM3ICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICA4ICAgNTYgIDM4ICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICA5ICAgNTcgIDM5ICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfWERJR0lULAogICAgICAgIC8qICA6ICAgNTggIDNhICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIDsgICA1OSAgM2IgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgPCAgIDYwICAzYyAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICA9ICAgNjEgIDNkICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogID4gICA2MiAgM2UgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgPyAgIDYzICAzZiAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICBAICAgNjQgIDQwICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIEEgICA2NSAgNDEgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19YRElHSVR8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIEIgICA2NiAgNDIgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19YRElHSVR8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIEMgICA2NyAgNDMgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19YRElHSVR8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIEQgICA2OCAgNDQgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19YRElHSVR8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIEUgICA2OSAgNDUgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19YRElHSVR8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIEYgICA3MCAgNDYgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19YRElHSVR8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIEcgICA3MSAgNDcgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgSCAgIDcyICA0OCAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICBJICAgNzMgIDQ5ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIEogICA3NCAgNGEgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgSyAgIDc1ICA0YiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICBMICAgNzYgIDRjICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIE0gICA3NyAgNGQgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgTiAgIDc4ICA0ZSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICBPICAgNzkgIDRmICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIFAgICA4MCAgNTAgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgUSAgIDgxICA1MSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICBSICAgODIgIDUyICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIFMgICA4MyAgNTMgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgVCAgIDg0ICA1NCAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICBVICAgODUgIDU1ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIFYgICA4NiAgNTYgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgVyAgIDg3ICA1NyAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICBYICAgODggIDU4ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIFkgICA4OSAgNTkgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgWiAgIDkwICA1YSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICBbICAgOTEgIDViICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIFwgICA5MiAgNWMgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgXSAgIDkzICA1ZCAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICBeICAgOTQgIDVlICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIF8gICA5NSAgNWYgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgYCAgIDk2ICA2MCAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICBhICAgOTcgIDYxICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfWERJR0lUfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBiICAgOTggIDYyICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfWERJR0lUfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBjICAgOTkgIDYzICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfWERJR0lUfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBkICAxMDAgIDY0ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfWERJR0lUfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBlICAxMDEgIDY1ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfWERJR0lUfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBmICAxMDIgIDY2ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfWERJR0lUfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBnICAxMDMgIDY3ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIGggIDEwNCAgNjggKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAgaSAgMTA1ICA2OSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBqICAxMDYgIDZhICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIGsgIDEwNyAgNmIgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAgbCAgMTA4ICA2YyAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBtICAxMDkgIDZkICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIG4gIDExMCAgNmUgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAgbyAgMTExICA2ZiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBwICAxMTIgIDcwICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIHEgIDExMyAgNzEgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAgciAgMTE0ICA3MiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICBzICAxMTUgIDczICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIHQgIDExNiAgNzQgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAgdSAgMTE3ICA3NSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICB2ICAxMTggIDc2ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIHcgIDExOSAgNzcgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAgeCAgMTIwICA3OCAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICB5ICAxMjEgIDc5ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIHogIDEyMiAgN2EgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAgeyAgMTIzICA3YiAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICB8ICAxMjQgIDdjICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIH0gIDEyNSAgN2QgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgfiAgMTI2ICA3ZSAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qIERFTCAxMjcgIDdmICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTI4ICA4MCAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDEyOSAgODEgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxMzAgIDgyICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTMxICA4MyAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDEzMiAgODQgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxMzMgIDg1ICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTM0ICA4NiAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDEzNSAgODcgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxMzYgIDg4ICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTM3ICA4OSAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDEzOCAgOGEgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxMzkgIDhiICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTQwICA4YyAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDE0MSAgOGQgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxNDIgIDhlICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTQzICA4ZiAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDE0NCAgOTAgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxNDUgIDkxICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTQ2ICA5MiAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDE0NyAgOTMgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxNDggIDk0ICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTQ5ICA5NSAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDE1MCAgOTYgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxNTEgIDk3ICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTUyICA5OCAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDE1MyAgOTkgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxNTQgIDlhICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTU1ICA5YiAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDE1NiAgOWMgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qIC0tICAxNTcgIDlkICovICAgQk9PU1RfQ0NfQ1RSTCwKICAgICAgICAvKiAtLSAgMTU4ICA5ZSAqLyAgIEJPT1NUX0NDX0NUUkwsCiAgICAgICAgLyogLS0gIDE1OSAgOWYgKi8gICBCT09TVF9DQ19DVFJMLAogICAgICAgIC8qICAgICAxNjAgIGEwICovICAgQk9PU1RfQ0NfU1BBQ0UsCiAgICAgICAgLyogIKEgIDE2MSAgYTEgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgoiAgMTYyICBhMiAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICCjICAxNjMgIGEzICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIKQgIDE2NCAgYTQgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgpSAgMTY1ICBhNSAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICCmICAxNjYgIGE2ICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIKcgIDE2NyAgYTcgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgqCAgMTY4ICBhOCAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICCpICAxNjkgIGE5ICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIKogIDE3MCAgYWEgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgqyAgMTcxICBhYiAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICCsICAxNzIgIGFjICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIK0gIDE3MyAgYWQgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgriAgMTc0ICBhZSAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICCvICAxNzUgIGFmICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogILAgIDE3NiAgYjAgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgsSAgMTc3ICBiMSAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICCyICAxNzggIGIyICovICAgQk9PU1RfQ0NfRElHSVR8Qk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogILMgIDE3OSAgYjMgKi8gICBCT09TVF9DQ19ESUdJVHxCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgtCAgMTgwICBiNCAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICC1ICAxODEgIGI1ICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogILYgIDE4MiAgYjYgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgtyAgMTgzICBiNyAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICC4ICAxODQgIGI4ICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogILkgIDE4NSAgYjkgKi8gICBCT09TVF9DQ19ESUdJVHxCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAguiAgMTg2ICBiYSAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICC7ICAxODcgIGJiICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogILwgIDE4OCAgYmMgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgvSAgMTg5ICBiZCAqLyAgIEJPT1NUX0NDX1BVTkNULAogICAgICAgIC8qICC+ICAxOTAgIGJlICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIL8gIDE5MSAgYmYgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAgwCAgMTkyICBjMCAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDBICAxOTMgIGMxICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIMIgIDE5NCAgYzIgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgwyAgMTk1ICBjMyAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDEICAxOTYgIGM0ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIMUgIDE5NyAgYzUgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgxiAgMTk4ICBjNiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDHICAxOTkgIGM3ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIMggIDIwMCAgYzggKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgySAgMjAxICBjOSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDKICAyMDIgIGNhICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIMsgIDIwMyAgY2IgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgzCAgMjA0ICBjYyAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDNICAyMDUgIGNkICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIM4gIDIwNiAgY2UgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAgzyAgMjA3ICBjZiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDQICAyMDggIGQwICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogINEgIDIwOSAgZDEgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAg0iAgMjEwICBkMiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDTICAyMTEgIGQzICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogINQgIDIxMiAgZDQgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAg1SAgMjEzICBkNSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDWICAyMTQgIGQ2ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogINcgIDIxNSAgZDcgKi8gICBCT09TVF9DQ19QVU5DVCwKICAgICAgICAvKiAg2CAgMjE2ICBkOCAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDZICAyMTcgIGQ5ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogINogIDIxOCAgZGEgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAg2yAgMjE5ICBkYiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDcICAyMjAgIGRjICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfVVBQRVIsCiAgICAgICAgLyogIN0gIDIyMSAgZGQgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19VUFBFUiwKICAgICAgICAvKiAg3iAgMjIyICBkZSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX1VQUEVSLAogICAgICAgIC8qICDfICAyMjMgIGRmICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIOAgIDIyNCAgZTAgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg4SAgMjI1ICBlMSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICDiICAyMjYgIGUyICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIOMgIDIyNyAgZTMgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg5CAgMjI4ICBlNCAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICDlICAyMjkgIGU1ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIOYgIDIzMCAgZTYgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg5yAgMjMxICBlNyAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICDoICAyMzIgIGU4ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIOkgIDIzMyAgZTkgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg6iAgMjM0ICBlYSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICDrICAyMzUgIGViICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIOwgIDIzNiAgZWMgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg7SAgMjM3ICBlZCAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICDuICAyMzggIGVlICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIO8gIDIzOSAgZWYgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg8CAgMjQwICBmMCAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICDxICAyNDEgIGYxICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIPIgIDI0MiAgZjIgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg8yAgMjQzICBmMyAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICD0ICAyNDQgIGY0ICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIPUgIDI0NSAgZjUgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg9iAgMjQ2ICBmNiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICD3ICAyNDcgIGY3ICovICAgQk9PU1RfQ0NfUFVOQ1QsCiAgICAgICAgLyogIPggIDI0OCAgZjggKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg+SAgMjQ5ICBmOSAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICD6ICAyNTAgIGZhICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIPsgIDI1MSAgZmIgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg/CAgMjUyICBmYyAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgICAgIC8qICD9ICAyNTMgIGZkICovICAgQk9PU1RfQ0NfQUxQSEF8Qk9PU1RfQ0NfTE9XRVIsCiAgICAgICAgLyogIP4gIDI1NCAgZmUgKi8gICBCT09TVF9DQ19BTFBIQXxCT09TVF9DQ19MT1dFUiwKICAgICAgICAvKiAg/yAgMjU1ICBmZiAqLyAgIEJPT1NUX0NDX0FMUEhBfEJPT1NUX0NDX0xPV0VSLAogICAgfTsKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIC8vIElTTyA4ODU5LTEgY2hhcmFjdGVyIGNvbnZlcnNpb24gdGFibGUKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgY29uc3QgdW5zaWduZWQgY2hhciBpc284ODU5XzFfY2hhcl9jb252ZXJzaW9uW10gPQogICAgewogICAgICAgIC8qIE5VTCAgIDAgICAwICovICAgJ1wwJywKICAgICAgICAvKiBTT0ggICAxICAgMSAqLyAgICdcMCcsCiAgICAgICAgLyogU1RYICAgMiAgIDIgKi8gICAnXDAnLAogICAgICAgIC8qIEVUWCAgIDMgICAzICovICAgJ1wwJywKICAgICAgICAvKiBFT1QgICA0ICAgNCAqLyAgICdcMCcsCiAgICAgICAgLyogRU5RICAgNSAgIDUgKi8gICAnXDAnLAogICAgICAgIC8qIEFDSyAgIDYgICA2ICovICAgJ1wwJywKICAgICAgICAvKiBCRUwgICA3ICAgNyAqLyAgICdcMCcsCiAgICAgICAgLyogQlMgICAgOCAgIDggKi8gICAnXDAnLAogICAgICAgIC8qIEhUICAgIDkgICA5ICovICAgJ1wwJywKICAgICAgICAvKiBOTCAgIDEwICAgYSAqLyAgICdcMCcsCiAgICAgICAgLyogVlQgICAxMSAgIGIgKi8gICAnXDAnLAogICAgICAgIC8qIE5QICAgMTIgICBjICovICAgJ1wwJywKICAgICAgICAvKiBDUiAgIDEzICAgZCAqLyAgICdcMCcsCiAgICAgICAgLyogU08gICAxNCAgIGUgKi8gICAnXDAnLAogICAgICAgIC8qIFNJICAgMTUgICBmICovICAgJ1wwJywKICAgICAgICAvKiBETEUgIDE2ICAxMCAqLyAgICdcMCcsCiAgICAgICAgLyogREMxICAxNyAgMTEgKi8gICAnXDAnLAogICAgICAgIC8qIERDMiAgMTggIDEyICovICAgJ1wwJywKICAgICAgICAvKiBEQzMgIDE5ICAxMyAqLyAgICdcMCcsCiAgICAgICAgLyogREM0ICAyMCAgMTQgKi8gICAnXDAnLAogICAgICAgIC8qIE5BSyAgMjEgIDE1ICovICAgJ1wwJywKICAgICAgICAvKiBTWU4gIDIyICAxNiAqLyAgICdcMCcsCiAgICAgICAgLyogRVRCICAyMyAgMTcgKi8gICAnXDAnLAogICAgICAgIC8qIENBTiAgMjQgIDE4ICovICAgJ1wwJywKICAgICAgICAvKiBFTSAgIDI1ICAxOSAqLyAgICdcMCcsCiAgICAgICAgLyogU1VCICAyNiAgMWEgKi8gICAnXDAnLAogICAgICAgIC8qIEVTQyAgMjcgIDFiICovICAgJ1wwJywKICAgICAgICAvKiBGUyAgIDI4ICAxYyAqLyAgICdcMCcsCiAgICAgICAgLyogR1MgICAyOSAgMWQgKi8gICAnXDAnLAogICAgICAgIC8qIFJTICAgMzAgIDFlICovICAgJ1wwJywKICAgICAgICAvKiBVUyAgIDMxICAxZiAqLyAgICdcMCcsCiAgICAgICAgLyogU1AgICAzMiAgMjAgKi8gICAnXDAnLAogICAgICAgIC8qICAhICAgMzMgIDIxICovICAgJ1wwJywKICAgICAgICAvKiAgIiAgIDM0ICAyMiAqLyAgICdcMCcsCiAgICAgICAgLyogICMgICAzNSAgMjMgKi8gICAnXDAnLAogICAgICAgIC8qICAkICAgMzYgIDI0ICovICAgJ1wwJywKICAgICAgICAvKiAgJSAgIDM3ICAyNSAqLyAgICdcMCcsCiAgICAgICAgLyogICYgICAzOCAgMjYgKi8gICAnXDAnLAogICAgICAgIC8qICAnICAgMzkgIDI3ICovICAgJ1wwJywKICAgICAgICAvKiAgKCAgIDQwICAyOCAqLyAgICdcMCcsCiAgICAgICAgLyogICkgICA0MSAgMjkgKi8gICAnXDAnLAogICAgICAgIC8qICAqICAgNDIgIDJhICovICAgJ1wwJywKICAgICAgICAvKiAgKyAgIDQzICAyYiAqLyAgICdcMCcsCiAgICAgICAgLyogICwgICA0NCAgMmMgKi8gICAnXDAnLAogICAgICAgIC8qICAtICAgNDUgIDJkICovICAgJ1wwJywKICAgICAgICAvKiAgLiAgIDQ2ICAyZSAqLyAgICdcMCcsCiAgICAgICAgLyogIC8gICA0NyAgMmYgKi8gICAnXDAnLAogICAgICAgIC8qICAwICAgNDggIDMwICovICAgJ1wwJywKICAgICAgICAvKiAgMSAgIDQ5ICAzMSAqLyAgICdcMCcsCiAgICAgICAgLyogIDIgICA1MCAgMzIgKi8gICAnXDAnLAogICAgICAgIC8qICAzICAgNTEgIDMzICovICAgJ1wwJywKICAgICAgICAvKiAgNCAgIDUyICAzNCAqLyAgICdcMCcsCiAgICAgICAgLyogIDUgICA1MyAgMzUgKi8gICAnXDAnLAogICAgICAgIC8qICA2ICAgNTQgIDM2ICovICAgJ1wwJywKICAgICAgICAvKiAgNyAgIDU1ICAzNyAqLyAgICdcMCcsCiAgICAgICAgLyogIDggICA1NiAgMzggKi8gICAnXDAnLAogICAgICAgIC8qICA5ICAgNTcgIDM5ICovICAgJ1wwJywKICAgICAgICAvKiAgOiAgIDU4ICAzYSAqLyAgICdcMCcsCiAgICAgICAgLyogIDsgICA1OSAgM2IgKi8gICAnXDAnLAogICAgICAgIC8qICA8ICAgNjAgIDNjICovICAgJ1wwJywKICAgICAgICAvKiAgPSAgIDYxICAzZCAqLyAgICdcMCcsCiAgICAgICAgLyogID4gICA2MiAgM2UgKi8gICAnXDAnLAogICAgICAgIC8qICA/ICAgNjMgIDNmICovICAgJ1wwJywKICAgICAgICAvKiAgQCAgIDY0ICA0MCAqLyAgICdcMCcsCiAgICAgICAgLyogIEEgICA2NSAgNDEgKi8gICAnYScsCiAgICAgICAgLyogIEIgICA2NiAgNDIgKi8gICAnYicsCiAgICAgICAgLyogIEMgICA2NyAgNDMgKi8gICAnYycsCiAgICAgICAgLyogIEQgICA2OCAgNDQgKi8gICAnZCcsCiAgICAgICAgLyogIEUgICA2OSAgNDUgKi8gICAnZScsCiAgICAgICAgLyogIEYgICA3MCAgNDYgKi8gICAnZicsCiAgICAgICAgLyogIEcgICA3MSAgNDcgKi8gICAnZycsCiAgICAgICAgLyogIEggICA3MiAgNDggKi8gICAnaCcsCiAgICAgICAgLyogIEkgICA3MyAgNDkgKi8gICAnaScsCiAgICAgICAgLyogIEogICA3NCAgNGEgKi8gICAnaicsCiAgICAgICAgLyogIEsgICA3NSAgNGIgKi8gICAnaycsCiAgICAgICAgLyogIEwgICA3NiAgNGMgKi8gICAnbCcsCiAgICAgICAgLyogIE0gICA3NyAgNGQgKi8gICAnbScsCiAgICAgICAgLyogIE4gICA3OCAgNGUgKi8gICAnbicsCiAgICAgICAgLyogIE8gICA3OSAgNGYgKi8gICAnbycsCiAgICAgICAgLyogIFAgICA4MCAgNTAgKi8gICAncCcsCiAgICAgICAgLyogIFEgICA4MSAgNTEgKi8gICAncScsCiAgICAgICAgLyogIFIgICA4MiAgNTIgKi8gICAncicsCiAgICAgICAgLyogIFMgICA4MyAgNTMgKi8gICAncycsCiAgICAgICAgLyogIFQgICA4NCAgNTQgKi8gICAndCcsCiAgICAgICAgLyogIFUgICA4NSAgNTUgKi8gICAndScsCiAgICAgICAgLyogIFYgICA4NiAgNTYgKi8gICAndicsCiAgICAgICAgLyogIFcgICA4NyAgNTcgKi8gICAndycsCiAgICAgICAgLyogIFggICA4OCAgNTggKi8gICAneCcsCiAgICAgICAgLyogIFkgICA4OSAgNTkgKi8gICAneScsCiAgICAgICAgLyogIFogICA5MCAgNWEgKi8gICAneicsCiAgICAgICAgLyogIFsgICA5MSAgNWIgKi8gICAnXDAnLAogICAgICAgIC8qICBcICAgOTIgIDVjICovICAgJ1wwJywKICAgICAgICAvKiAgXSAgIDkzICA1ZCAqLyAgICdcMCcsCiAgICAgICAgLyogIF4gICA5NCAgNWUgKi8gICAnXDAnLAogICAgICAgIC8qICBfICAgOTUgIDVmICovICAgJ1wwJywKICAgICAgICAvKiAgYCAgIDk2ICA2MCAqLyAgICdcMCcsCiAgICAgICAgLyogIGEgICA5NyAgNjEgKi8gICAnQScsCiAgICAgICAgLyogIGIgICA5OCAgNjIgKi8gICAnQicsCiAgICAgICAgLyogIGMgICA5OSAgNjMgKi8gICAnQycsCiAgICAgICAgLyogIGQgIDEwMCAgNjQgKi8gICAnRCcsCiAgICAgICAgLyogIGUgIDEwMSAgNjUgKi8gICAnRScsCiAgICAgICAgLyogIGYgIDEwMiAgNjYgKi8gICAnRicsCiAgICAgICAgLyogIGcgIDEwMyAgNjcgKi8gICAnRycsCiAgICAgICAgLyogIGggIDEwNCAgNjggKi8gICAnSCcsCiAgICAgICAgLyogIGkgIDEwNSAgNjkgKi8gICAnSScsCiAgICAgICAgLyogIGogIDEwNiAgNmEgKi8gICAnSicsCiAgICAgICAgLyogIGsgIDEwNyAgNmIgKi8gICAnSycsCiAgICAgICAgLyogIGwgIDEwOCAgNmMgKi8gICAnTCcsCiAgICAgICAgLyogIG0gIDEwOSAgNmQgKi8gICAnTScsCiAgICAgICAgLyogIG4gIDExMCAgNmUgKi8gICAnTicsCiAgICAgICAgLyogIG8gIDExMSAgNmYgKi8gICAnTycsCiAgICAgICAgLyogIHAgIDExMiAgNzAgKi8gICAnUCcsCiAgICAgICAgLyogIHEgIDExMyAgNzEgKi8gICAnUScsCiAgICAgICAgLyogIHIgIDExNCAgNzIgKi8gICAnUicsCiAgICAgICAgLyogIHMgIDExNSAgNzMgKi8gICAnUycsCiAgICAgICAgLyogIHQgIDExNiAgNzQgKi8gICAnVCcsCiAgICAgICAgLyogIHUgIDExNyAgNzUgKi8gICAnVScsCiAgICAgICAgLyogIHYgIDExOCAgNzYgKi8gICAnVicsCiAgICAgICAgLyogIHcgIDExOSAgNzcgKi8gICAnVycsCiAgICAgICAgLyogIHggIDEyMCAgNzggKi8gICAnWCcsCiAgICAgICAgLyogIHkgIDEyMSAgNzkgKi8gICAnWScsCiAgICAgICAgLyogIHogIDEyMiAgN2EgKi8gICAnWicsCiAgICAgICAgLyogIHsgIDEyMyAgN2IgKi8gICAnXDAnLAogICAgICAgIC8qICB8ICAxMjQgIDdjICovICAgJ1wwJywKICAgICAgICAvKiAgfSAgMTI1ICA3ZCAqLyAgICdcMCcsCiAgICAgICAgLyogIH4gIDEyNiAgN2UgKi8gICAnXDAnLAogICAgICAgIC8qIERFTCAxMjcgIDdmICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTI4ICA4MCAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDEyOSAgODEgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxMzAgIDgyICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTMxICA4MyAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDEzMiAgODQgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxMzMgIDg1ICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTM0ICA4NiAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDEzNSAgODcgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxMzYgIDg4ICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTM3ICA4OSAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDEzOCAgOGEgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxMzkgIDhiICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTQwICA4YyAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDE0MSAgOGQgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxNDIgIDhlICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTQzICA4ZiAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDE0NCAgOTAgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxNDUgIDkxICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTQ2ICA5MiAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDE0NyAgOTMgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxNDggIDk0ICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTQ5ICA5NSAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDE1MCAgOTYgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxNTEgIDk3ICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTUyICA5OCAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDE1MyAgOTkgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxNTQgIDlhICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTU1ICA5YiAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDE1NiAgOWMgKi8gICAnXDAnLAogICAgICAgIC8qIC0tICAxNTcgIDlkICovICAgJ1wwJywKICAgICAgICAvKiAtLSAgMTU4ICA5ZSAqLyAgICdcMCcsCiAgICAgICAgLyogLS0gIDE1OSAgOWYgKi8gICAnXDAnLAogICAgICAgIC8qICAgICAxNjAgIGEwICovICAgJ1wwJywKICAgICAgICAvKiAgoSAgMTYxICBhMSAqLyAgICdcMCcsCiAgICAgICAgLyogIKIgIDE2MiAgYTIgKi8gICAnXDAnLAogICAgICAgIC8qICCjICAxNjMgIGEzICovICAgJ1wwJywKICAgICAgICAvKiAgpCAgMTY0ICBhNCAqLyAgICdcMCcsCiAgICAgICAgLyogIKUgIDE2NSAgYTUgKi8gICAnXDAnLAogICAgICAgIC8qICCmICAxNjYgIGE2ICovICAgJ1wwJywKICAgICAgICAvKiAgpyAgMTY3ICBhNyAqLyAgICdcMCcsCiAgICAgICAgLyogIKggIDE2OCAgYTggKi8gICAnXDAnLAogICAgICAgIC8qICCpICAxNjkgIGE5ICovICAgJ1wwJywKICAgICAgICAvKiAgqiAgMTcwICBhYSAqLyAgICdcMCcsCiAgICAgICAgLyogIKsgIDE3MSAgYWIgKi8gICAnXDAnLAogICAgICAgIC8qICCsICAxNzIgIGFjICovICAgJ1wwJywKICAgICAgICAvKiAgrSAgMTczICBhZCAqLyAgICdcMCcsCiAgICAgICAgLyogIK4gIDE3NCAgYWUgKi8gICAnXDAnLAogICAgICAgIC8qICCvICAxNzUgIGFmICovICAgJ1wwJywKICAgICAgICAvKiAgsCAgMTc2ICBiMCAqLyAgICdcMCcsCiAgICAgICAgLyogILEgIDE3NyAgYjEgKi8gICAnXDAnLAogICAgICAgIC8qICCyICAxNzggIGIyICovICAgJ1wwJywKICAgICAgICAvKiAgsyAgMTc5ICBiMyAqLyAgICdcMCcsCiAgICAgICAgLyogILQgIDE4MCAgYjQgKi8gICAnXDAnLAogICAgICAgIC8qICC1ICAxODEgIGI1ICovICAgJ1wwJywKICAgICAgICAvKiAgtiAgMTgyICBiNiAqLyAgICdcMCcsCiAgICAgICAgLyogILcgIDE4MyAgYjcgKi8gICAnXDAnLAogICAgICAgIC8qICC4ICAxODQgIGI4ICovICAgJ1wwJywKICAgICAgICAvKiAguSAgMTg1ICBiOSAqLyAgICdcMCcsCiAgICAgICAgLyogILogIDE4NiAgYmEgKi8gICAnXDAnLAogICAgICAgIC8qICC7ICAxODcgIGJiICovICAgJ1wwJywKICAgICAgICAvKiAgvCAgMTg4ICBiYyAqLyAgICdcMCcsCiAgICAgICAgLyogIL0gIDE4OSAgYmQgKi8gICAnXDAnLAogICAgICAgIC8qICC+ICAxOTAgIGJlICovICAgJ1wwJywKICAgICAgICAvKiAgvyAgMTkxICBiZiAqLyAgICdcMCcsCiAgICAgICAgLyogIOAgIDE5MiAgYzAgKi8gICAweGUwLAogICAgICAgIC8qICDhICAxOTMgIGMxICovICAgMHhlMSwKICAgICAgICAvKiAg4iAgMTk0ICBjMiAqLyAgIDB4ZTIsCiAgICAgICAgLyogIOMgIDE5NSAgYzMgKi8gICAweGUzLAogICAgICAgIC8qICDkICAxOTYgIGM0ICovICAgMHhlNCwKICAgICAgICAvKiAg5SAgMTk3ICBjNSAqLyAgIDB4ZTUsCiAgICAgICAgLyogIOYgIDE5OCAgYzYgKi8gICAweGU2LAogICAgICAgIC8qICDnICAxOTkgIGM3ICovICAgMHhlNywKICAgICAgICAvKiAg6CAgMjAwICBjOCAqLyAgIDB4ZTgsCiAgICAgICAgLyogIOkgIDIwMSAgYzkgKi8gICAweGU5LAogICAgICAgIC8qICDqICAyMDIgIGNhICovICAgMHhlYSwKICAgICAgICAvKiAg6yAgMjAzICBjYiAqLyAgIDB4ZWIsCiAgICAgICAgLyogIOwgIDIwNCAgY2MgKi8gICAweGVjLAogICAgICAgIC8qICDtICAyMDUgIGNkICovICAgMHhlZCwKICAgICAgICAvKiAg7iAgMjA2ICBjZSAqLyAgIDB4ZWUsCiAgICAgICAgLyogIO8gIDIwNyAgY2YgKi8gICAweGVmLAogICAgICAgIC8qICDwICAyMDggIGQwICovICAgMHhmMCwKICAgICAgICAvKiAg8SAgMjA5ICBkMSAqLyAgIDB4ZjEsCiAgICAgICAgLyogIPIgIDIxMCAgZDIgKi8gICAweGYyLAogICAgICAgIC8qICDzICAyMTEgIGQzICovICAgMHhmMywKICAgICAgICAvKiAg9CAgMjEyICBkNCAqLyAgIDB4ZjQsCiAgICAgICAgLyogIPUgIDIxMyAgZDUgKi8gICAweGY1LAogICAgICAgIC8qICD2ICAyMTQgIGQ2ICovICAgMHhmNiwKICAgICAgICAvKiAg1yAgMjE1ICBkNyAqLyAgICdcMCcsCiAgICAgICAgLyogIPggIDIxNiAgZDggKi8gICAweGY4LAogICAgICAgIC8qICD5ICAyMTcgIGQ5ICovICAgMHhmOSwKICAgICAgICAvKiAg+iAgMjE4ICBkYSAqLyAgIDB4ZmEsCiAgICAgICAgLyogIPsgIDIxOSAgZGIgKi8gICAweGZiLAogICAgICAgIC8qICD8ICAyMjAgIGRjICovICAgMHhmYywKICAgICAgICAvKiAg/SAgMjIxICBkZCAqLyAgIDB4ZmQsCiAgICAgICAgLyogIP4gIDIyMiAgZGUgKi8gICAweGZlLAogICAgICAgIC8qICDfICAyMjMgIGRmICovICAgJ1wwJywKICAgICAgICAvKiAgwCAgMjI0ICBlMCAqLyAgIDB4YzAsCiAgICAgICAgLyogIMEgIDIyNSAgZTEgKi8gICAweGMxLAogICAgICAgIC8qICDCICAyMjYgIGUyICovICAgMHhjMiwKICAgICAgICAvKiAgwyAgMjI3ICBlMyAqLyAgIDB4YzMsCiAgICAgICAgLyogIMQgIDIyOCAgZTQgKi8gICAweGM0LAogICAgICAgIC8qICDFICAyMjkgIGU1ICovICAgMHhjNSwKICAgICAgICAvKiAgxiAgMjMwICBlNiAqLyAgIDB4YzYsCiAgICAgICAgLyogIMcgIDIzMSAgZTcgKi8gICAweGM3LAogICAgICAgIC8qICDIICAyMzIgIGU4ICovICAgMHhjOCwKICAgICAgICAvKiAgySAgMjMzICBlOSAqLyAgIDB4YzksCiAgICAgICAgLyogIMogIDIzNCAgZWEgKi8gICAweGNhLAogICAgICAgIC8qICDLICAyMzUgIGViICovICAgMHhjYiwKICAgICAgICAvKiAgzCAgMjM2ICBlYyAqLyAgIDB4Y2MsCiAgICAgICAgLyogIM0gIDIzNyAgZWQgKi8gICAweGNkLAogICAgICAgIC8qICDOICAyMzggIGVlICovICAgMHhjZSwKICAgICAgICAvKiAgzyAgMjM5ICBlZiAqLyAgIDB4Y2YsCiAgICAgICAgLyogINAgIDI0MCAgZjAgKi8gICAweGQwLAogICAgICAgIC8qICDRICAyNDEgIGYxICovICAgMHhkMSwKICAgICAgICAvKiAg0iAgMjQyICBmMiAqLyAgIDB4ZDIsCiAgICAgICAgLyogINMgIDI0MyAgZjMgKi8gICAweGQzLAogICAgICAgIC8qICDUICAyNDQgIGY0ICovICAgMHhkNCwKICAgICAgICAvKiAg1SAgMjQ1ICBmNSAqLyAgIDB4ZDUsCiAgICAgICAgLyogINYgIDI0NiAgZjYgKi8gICAweGQ2LAogICAgICAgIC8qICD3ICAyNDcgIGY3ICovICAgJ1wwJywKICAgICAgICAvKiAg2CAgMjQ4ICBmOCAqLyAgIDB4ZDgsCiAgICAgICAgLyogINkgIDI0OSAgZjkgKi8gICAweGQ5LAogICAgICAgIC8qICDaICAyNTAgIGZhICovICAgMHhkYSwKICAgICAgICAvKiAg2yAgMjUxICBmYiAqLyAgIDB4ZGIsCiAgICAgICAgLyogINwgIDI1MiAgZmMgKi8gICAweGRjLAogICAgICAgIC8qICDdICAyNTMgIGZkICovICAgMHhkZCwKICAgICAgICAvKiAg3iAgMjU0ICBmZSAqLyAgIDB4ZGUsCiAgICAgICAgLyogIP8gIDI1NSAgZmYgKi8gICAnXDAnLAogICAgfTsKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIC8vICBUZXN0IGNoYXJhY3RlcnMgZm9yIHNwZWNpZmllZCBjb25kaXRpb25zICh1c2luZyBpc284ODU5LTEpCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIHN0cnVjdCBpc284ODU5XzEKICAgIHsKICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgY2hhcl90eXBlOwoKICAgICAgICBzdGF0aWMgYm9vbAogICAgICAgIGlzYXNjaWlfKGludCBjaCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAwID09IChjaCAmIH4weDdmKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBib29sCiAgICAgICAgaXNjaGFyKGludCBjaCkKICAgICAgICB7CiAgICAgICAgICAgIC8vIGlzbzg4NTkuMSB1c2VzIGFsbCA4IGJpdHMKICAgICAgICAgICAgLy8gd2UgaGF2ZSB0byB3YXRjaCBvdXQgZm9yIHNpZ24gZXh0ZW5zaW9ucwogICAgICAgICAgICByZXR1cm4gKDAgPT0gKGNoICYgfjB4ZmYpIHx8IH4wID09IChjaCB8IDB4ZmYpKSA/IHRydWUgOiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbnQKICAgICAgICBpc2FsbnVtKGludCBjaCkKICAgICAgICB7CiAgICAgICAgICAgIEJPT1NUX0FTU0VSVCgwID09IChjaCAmIH5VQ0hBUl9NQVgpKTsKICAgICAgICAgICAgcmV0dXJuIChpc284ODU5XzFfY2hhcl90eXBlc1tjaF0gJiBCT09TVF9DQ19BTFBIQSkKICAgICAgICAgICAgICAgIHx8IChpc284ODU5XzFfY2hhcl90eXBlc1tjaF0gJiBCT09TVF9DQ19ESUdJVCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgaW50CiAgICAgICAgaXNhbHBoYShpbnQgY2gpCiAgICAgICAgewogICAgICAgICAgICBCT09TVF9BU1NFUlQoMCA9PSAoY2ggJiB+VUNIQVJfTUFYKSk7CiAgICAgICAgICAgIHJldHVybiAoaXNvODg1OV8xX2NoYXJfdHlwZXNbY2hdICYgQk9PU1RfQ0NfQUxQSEEpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGludAogICAgICAgIGlzZGlnaXQoaW50IGNoKQogICAgICAgIHsKICAgICAgICAgICAgQk9PU1RfQVNTRVJUKDAgPT0gKGNoICYgflVDSEFSX01BWCkpOwogICAgICAgICAgICByZXR1cm4gKGlzbzg4NTlfMV9jaGFyX3R5cGVzW2NoXSAmIEJPT1NUX0NDX0RJR0lUKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbnQKICAgICAgICBpc3hkaWdpdChpbnQgY2gpCiAgICAgICAgewogICAgICAgICAgICBCT09TVF9BU1NFUlQoMCA9PSAoY2ggJiB+VUNIQVJfTUFYKSk7CiAgICAgICAgICAgIHJldHVybiAoaXNvODg1OV8xX2NoYXJfdHlwZXNbY2hdICYgQk9PU1RfQ0NfWERJR0lUKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbnQKICAgICAgICBpc2NudHJsKGludCBjaCkKICAgICAgICB7CiAgICAgICAgICAgIEJPT1NUX0FTU0VSVCgwID09IChjaCAmIH5VQ0hBUl9NQVgpKTsKICAgICAgICAgICAgcmV0dXJuIChpc284ODU5XzFfY2hhcl90eXBlc1tjaF0gJiBCT09TVF9DQ19DVFJMKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbnQKICAgICAgICBpc2dyYXBoKGludCBjaCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAoJ1x4MjEnIDw9IGNoICYmIGNoIDw9ICdceDdlJykgfHwgKCdceGExJyA8PSBjaCAmJiBjaCA8PSAnXHhmZicpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGludAogICAgICAgIGlzbG93ZXIoaW50IGNoKQogICAgICAgIHsKICAgICAgICAgICAgQk9PU1RfQVNTRVJUKDAgPT0gKGNoICYgflVDSEFSX01BWCkpOwogICAgICAgICAgICByZXR1cm4gKGlzbzg4NTlfMV9jaGFyX3R5cGVzW2NoXSAmIEJPT1NUX0NDX0xPV0VSKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbnQKICAgICAgICBpc3ByaW50KGludCBjaCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAoJ1x4MjAnIDw9IGNoICYmIGNoIDw9ICdceDdlJykgfHwgKCdceGEwJyA8PSBjaCAmJiBjaCA8PSAnXHhmZicpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGludAogICAgICAgIGlzcHVuY3QoaW50IGNoKQogICAgICAgIHsKICAgICAgICAgICAgQk9PU1RfQVNTRVJUKDAgPT0gKGNoICYgflVDSEFSX01BWCkpOwogICAgICAgICAgICByZXR1cm4gKGlzbzg4NTlfMV9jaGFyX3R5cGVzW2NoXSAmIEJPT1NUX0NDX1BVTkNUKTsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbnQKICAgICAgICBpc3NwYWNlKGludCBjaCkKICAgICAgICB7CiAgICAgICAgICAgIEJPT1NUX0FTU0VSVCgwID09IChjaCAmIH5VQ0hBUl9NQVgpKTsKICAgICAgICAgICAgcmV0dXJuIChpc284ODU5XzFfY2hhcl90eXBlc1tjaF0gJiBCT09TVF9DQ19TUEFDRSk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgaW50CiAgICAgICAgaXNibGFuayBCT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoaW50IGNoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICgnXHgwOScgPT0gY2ggfHwgJ1x4MjAnID09IGNoIHx8ICdceGEwJyA9PSBjaCk7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgaW50CiAgICAgICAgaXN1cHBlcihpbnQgY2gpCiAgICAgICAgewogICAgICAgICAgICBCT09TVF9BU1NFUlQoMCA9PSAoY2ggJiB+VUNIQVJfTUFYKSk7CiAgICAgICAgICAgIHJldHVybiAoaXNvODg1OV8xX2NoYXJfdHlwZXNbY2hdICYgQk9PU1RfQ0NfVVBQRVIpOwogICAgICAgIH0KCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgIC8vICBTaW1wbGUgY2hhcmFjdGVyIGNvbnZlcnNpb25zCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICAgICAgc3RhdGljIGludAogICAgICAgIHRvbG93ZXIoaW50IGNoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGlzdXBwZXIoY2gpICYmICdcMCcgIT0gaXNvODg1OV8xX2NoYXJfY29udmVyc2lvbltjaF0gPwogICAgICAgICAgICAgICAgaXNvODg1OV8xX2NoYXJfY29udmVyc2lvbltjaF0gOiBjaDsKICAgICAgICB9CgogICAgICAgIHN0YXRpYyBpbnQKICAgICAgICB0b3VwcGVyKGludCBjaCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBpc2xvd2VyKGNoKSAmJiAnXDAnICE9IGlzbzg4NTlfMV9jaGFyX2NvbnZlcnNpb25bY2hdID8KICAgICAgICAgICAgICAgIGlzbzg4NTlfMV9jaGFyX2NvbnZlcnNpb25bY2hdIDogY2g7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgOjpib29zdDo6dWludDMyX3QKICAgICAgICB0b3VjczQoaW50IGNoKQogICAgICAgIHsKICAgICAgICAgICAgLy8gVGhlIGZpcnN0IDI1NiBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYW5kIHRoZSBVQ1MgYXJlCiAgICAgICAgICAgIC8vIGlkZW50aWNhbCB0byB0aG9zZSBpbiBJU08vSUVDLTg4NTktMS4KICAgICAgICAgICAgcmV0dXJuIGNoOwogICAgICAgIH0KICAgIH07Cgp9fX0KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gdW5kZWZpbmUgbWFjcm9zCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KI3VuZGVmIEJPT1NUX0NDX0RJR0lUCiN1bmRlZiBCT09TVF9DQ19YRElHSVQKI3VuZGVmIEJPT1NUX0NDX0FMUEhBCiN1bmRlZiBCT09TVF9DQ19DVFJMCiN1bmRlZiBCT09TVF9DQ19MT1dFUgojdW5kZWYgQk9PU1RfQ0NfVVBQRVIKI3VuZGVmIEJPT1NUX0NDX1BVTkNUCiN1bmRlZiBCT09TVF9DQ19TUEFDRQoKI2VuZGlmCgo=