LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgQ3JvYXRpYQogKgkoQ3JvYXRpYW4gc3RyaW5ncyBpbiBjcDEyNTApCiAqCiAqIENvcHlyaWdodCAxOTk4IE1hcmNlbCBCYXVyCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCIwNDFhIikKLyogTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIiIpICovCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJDcm9hdGlhbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCJocnYiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwiaHJ2YXRza2kiKQovKiBMT0NWQUwoTE9DQUxFX0lDT1VOVFJZLCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCIiKSAqLwpMT0NWQUwoTE9DQUxFX1NFTkdDT1VOVFJZLCJDcm9hdGlhIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsIkhSViIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCJIcnZhdHNrYSIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiMDQxYSIpCi8qIExPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UpICovCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsIjEyNTAiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UsIjEwMDgyIikKLyogTE9DVkFMKExPQ0FMRV9TTElTVCwiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TREVDSU1BTCwiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfU0dST1VQSU5HKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lESUdJVFMsIjIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lMWkVSTywiMSIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR05VTUJFUikgKi8KTE9DVkFMKExPQ0FMRV9TTkFUSVZFRElHSVRTLCIwMTIzNDU2Nzg5IikKTE9DVkFMKExPQ0FMRV9TQ1VSUkVOQ1ksIktuIikKTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCwiSFJLIikKLyogTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwiLCIpICovCi8qIExPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQLCIuIikgKi8KTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcsIjM7MCIpCi8qIExPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjMiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCI4IikgKi8KLyogTE9DVkFMKExPQ0FMRV9TREFURSwiLiIpICovCi8qIExPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkL01NLXl5eXkiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkLCBkLiBNTU1NIHl5eXkiKSAqLwovKiBMT0NWQUwoTE9DQUxFX1NUSU1FRk9STUFUKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lEQVRFLCIxIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTERBVEUpICovCkxPQ1ZBTChMT0NBTEVfSVRJTUUsIjEiKQovKiBMT0NWQUwoTE9DQUxFX0lUSU1FTUFSS1BPU04pICovCi8qIExPQ1ZBTChMT0NBTEVfSUNFTlRVUlkpICovCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSURBWUxaRVJPKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lNT05MWkVSTykgKi8KLyogTE9DVkFMKExPQ0FMRV9TMTE1OSwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfUzIzNTksICIiKSAqLwpMT0NWQUwoTE9DQUxFX0lDQUxFTkRBUlRZUEUsICIxIikKLyogTE9DVkFMKExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUikgKi8KLyogTE9DVkFMKExPQ0FMRV9JRklSU1REQVlPRldFRUspICovCi8qIExPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUikgKi8KCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUxLCJwb25lZGplbGphayIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCJ1dG9yYWsiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywic3JpamVkYSIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU0LCLoZXR2cnRhayIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCJwZXRhayIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCJzdWJvdGEiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywibmVkamVsamEiKQoKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTEsInBvbiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCJ1dG8iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMywic3JpIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTQsIuhldCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCJwZXQiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiwic3ViIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTcsIm5lZCIpCgpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCJzaWpl6GFuaiIpIApMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCJ2ZWxqYehhIikgCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTMsIm9cMjM2dWphayIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsInRyYXZhbmoiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCJzdmliYW5qIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNiwibGlwYW5qIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywic3JwYW5qIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwia29sb3ZveiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTksInJ1amFuIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsImxpc3RvcGFkIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTEsInN0dWRlbmkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwicHJvc2luYWMiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEsInNpaiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsInZlbCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIm9cMjM2dSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsInRyYSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsInN2aSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsImxpcCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsInNycCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsImtvbCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksInJ1aiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwLCJsaXMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSwic3R1IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsInBybyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzLCIiKQoKLyogTE9DVkFMKExPQ0FMRV9TUE9TSVRJVkVTSUdOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TTkVHQVRJVkVTSUdOLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04sICIiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lORUdTSUdOUE9TTiwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSVBPU1NZTVBSRUNFREVTLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTLCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9JTkVHU0VQQllTUEFDRSwgIiIpICovCi8qIExPQ1ZBTChMT0NBTEVfRk9OVFNJR05BVFVSRSwgIiIpICovCkxPQ1ZBTChMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCJociIpCkxPQ1ZBTChMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwiSFIiKQoKLyogR3JlZ29yaWphbnNraSBrYWxlbmRhciAqLwo=