LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBJY2VsYW5kaWMKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2Rld2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19JQ0VMQU5ESUMsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMmZceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDFceDAwMDBceDAwMDBceDQwMDBceDAwMDNceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzU0IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM1NCIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA4NzEiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MGYiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDc5IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMiIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MGYiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIwIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJJU0wiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAibeFuLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICL+cmkuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIm1p8C4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiZmltLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJm9nMuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgImxhdS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAic3VuLiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJJU0wiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW4uIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiZmViLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJhcHIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWHtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiavpuLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImr6bC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLhZ/ouIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic2VwLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJva3QuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIm7zdi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiZGVzLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJJY2VsYW5kIgogIExPQ0FMRV9TQ1VSUkVOQ1kgImtyLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAibeFudWRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTIgIv5yafBqdWRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTMgIm1p8HZpa3VkYWd1ciIKICBMT0NBTEVfU0RBWU5BTUU0ICJmaW1tdHVkYWd1ciIKICBMT0NBTEVfU0RBWU5BTUU1ICJm9nN0dWRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTYgImxhdWdhcmRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTcgInN1bm51ZGFndXIiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiSWNlbGFuZCIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJJY2VsYW5kaWMgS3JvbmEiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiSWNlbGFuZGljIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIklTSyIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiSVMiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiaXMiCiAgTE9DQUxFX1NMQU5HVUFHRSAiSWNlbGFuZGljIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkLiBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgImphbvphciIKICBMT0NBTEVfU01PTlRITkFNRTIgImZlYnL6YXIiCiAgTE9DQUxFX1NNT05USE5BTUUzICJtYXJzIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiYXBy7WwiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJtYe0iCiAgTE9DQUxFX1NNT05USE5BTUU2ICJq+m7tIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiavps7SIKICBMT0NBTEVfU01PTlRITkFNRTggIuFn+nN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VwdGVtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIm9rdPNiZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibvN2ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGVzZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAizXNsYW5kIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIkty825hIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIu1zbGVuc2thIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQuTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLiIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5Igp9Cg==