LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBJcmlzaCBHYWVsaWMKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2Rld2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19HQUVMSUMsIFNVQkxBTkdfR0FFTElDCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDFmZlx4MDAzZlx4ODAwMFx4ZmZmZiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjAiCiAgTE9DQUxFX0lDT1VOVFJZICIzNTMiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjAiCiAgTE9DQUxFX0lEQVRFICIwIgogIExPQ0FMRV9JREFZTFpFUk8gIjAiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUyIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI0MzciCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzUzIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI4NSIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQzYyIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICI2IgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIwIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQzYyIKICBMT0NBTEVfSUxEQVRFICIwIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIxIgogIExPQ0FMRV9JTU9OTFpFUk8gIjAiCiAgTE9DQUxFX0lORUdDVVJSICIwIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIwIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIwIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiQU0iCiAgTE9DQUxFX1MyMzU5ICJQTSIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJJUkwiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiTHVhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIk3haSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJD6WEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiROlhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgIkFvaSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJTYXQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiRG9tIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIkdBRSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIkVhbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIkZlYSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIk3hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIkFpYiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIkJlYSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIk1laSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIkn6aSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIkz6biIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIk1G8yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJERvMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiU2FtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIk5vbCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJJcmVsYW5kIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIoAiCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIkTpIEx1YWluIgogIExPQ0FMRV9TREFZTkFNRTIgIkTpIE3haXJ0IgogIExPQ0FMRV9TREFZTkFNRTMgIkTpIEPpYWRhb2luIgogIExPQ0FMRV9TREFZTkFNRTQgIkTpYXJkYW9pbiIKICBMT0NBTEVfU0RBWU5BTUU1ICJE6SBoQW9pbmUiCiAgTE9DQUxFX1NEQVlOQU1FNiAiROkgU2F0aGFpcm4iCiAgTE9DQUxFX1NEQVlOQU1FNyAiRGUgRG9taG5haWdoIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIklyZWxhbmQiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiRXVybyIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJJcmlzaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJFVVIiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIklFIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImdhIgogIExPQ0FMRV9TTEFOR1VBR0UgIkdhZWlsZ2UgKMlpcmUpIgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJkZGRkLCBNTU1NIGRkLCB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJFYW7haXIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJGZWFiaHJhIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAiTeFydGEiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJBaWJyZeFuIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAiTe0gbmEgQmVhbHRhaW5lIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiTWVpdGhlYW1oIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiSfppbCIKICBMT0NBTEVfU01PTlRITkFNRTggIkz6bmFzYSIKICBMT0NBTEVfU01PTlRITkFNRTkgIk1l4W4gRvNtaGFpciIKICBMT0NBTEVfU01PTlRITkFNRTEwICJEZWlyZWFkaCBG821oYWlyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIk3tIG5hIFNhbWhuYSIKICBMT0NBTEVfU01PTlRITkFNRTEyICJN7SBuYSBOb2xsYWciCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiyWlyZSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJFdXJvIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIkdhZWlsZ2UiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZC9NL3l5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoOm1tOnNzIHR0IgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCn0K