LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgSGVicmV3IChJc3JhZWwpCiAqCiAqIENvcHlyaWdodCAxOTk4IE1hcmNlbCBCYXVyCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCIwNDBkIikKLyogTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIiIpICovCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJIZWJyZXcgKElzcmFlbCkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSwiaGViIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFTEFOR05BTUUsIvLh+On6IikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiOTcyIikKTE9DVkFMKExPQ0FMRV9TQ09VTlRSWSwiSXNyYWVsIikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiSXNyYWVsIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUsIklTUiIpCkxPQ1ZBTChMT0NBTEVfU05BVElWRUNUUllOQU1FLCLp+fjg7CIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSwiMDQwRCIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRDT1VOVFJZLCI5NzIiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UsIjg2MiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsIjEyNTUiKQpMT0NWQUwoTE9DQUxFX1NMSVNULCIsIikKTE9DVkFMKExPQ0FMRV9JTUVBU1VSRSwiMCIpCkxPQ1ZBTChMT0NBTEVfU0RFQ0lNQUwsIi4iKQpMT0NWQUwoTE9DQUxFX1NUSE9VU0FORCwiLCIpCkxPQ1ZBTChMT0NBTEVfU0dST1VQSU5HLCAiMzswIikKTE9DVkFMKExPQ0FMRV9JRElHSVRTLCIyIikKLyogTE9DVkFMKExPQ0FMRV9JTFpFUk8sIjEiKSAqLwpMT0NWQUwoTE9DQUxFX0lORUdOVU1CRVIsIjEiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMsIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwibmlzIikKTE9DVkFMKExPQ0FMRV9TSU5UTFNZTUJPTCwiSUxTIikKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwiLiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQLCIsIikKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcsIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjIiKQovKiBMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUykgKi8KTE9DVkFMKExPQ0FMRV9JQ1VSUkVOQ1ksIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdDVVJSLCIyIikKTE9DVkFMKExPQ0FMRV9TREFURSwiLyIpCkxPQ1ZBTChMT0NBTEVfU1RJTUUsIjoiKQpMT0NWQUwoTE9DQUxFX1NTSE9SVERBVEUsImRkL01NL3l5eXkiKQpMT0NWQUwoTE9DQUxFX1NMT05HREFURSwiZGRkZCwgZC4gTU1NTSB5eXl5IikKTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCwgIkhIOm1tOnNzIHR0IikKTE9DVkFMKExPQ0FMRV9JREFURSwiMSIpCkxPQ1ZBTChMT0NBTEVfSUxEQVRFLCIxIikKTE9DVkFMKExPQ0FMRV9JVElNRSwiMSIpCi8qIExPQ1ZBTChMT0NBTEVfSVRJTUVNQVJLUE9TTikgKi8KLyogTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSkgKi8KTE9DVkFMKExPQ0FMRV9JVExaRVJPLCIxIikKLyogTE9DVkFMKExPQ0FMRV9JREFZTFpFUk8pICovCi8qIExPQ1ZBTChMT0NBTEVfSU1PTkxaRVJPKSAqLwovKiBMT0NWQUwoTE9DQUxFX1MxMTU5LCAiIikgKi8KLyogTE9DVkFMKExPQ0FMRV9TMjM1OSwgIiIpICovCkxPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSwgIjEiKQovKiBGb3IgSGVicmV3IGx1bmFyIGNhbGVuZGFyIExPQ1ZBTChMT0NBTEVfSUNBTEVOREFSVFlQRSwgIjgiKSAqLwovKiBMT0NWQUwoTE9DQUxFX0lPUFRJT05BTENBTEVOREFSKSAqLwpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSywgIjciKQovKiBMT0NWQUwoTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIpICovCgpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwgIvnw6SIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUyLCAi+ezp+ekiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMywgIvjh6fLpIikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTQsICLn7un56SIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU1LCAi+en56SIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCAi+eH6IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTcsICL44Pnl7yIpCgpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSwi4SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCLiIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTMsIuMiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCwi5CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCLlIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWREFZTkFNRTYsIvkiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZEQVlOQU1FNywi4CIpCgpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxLCLp8OXg+CIpIApMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCL04fjl4PgiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCLu+PUiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU0LCLg9Pjp7CIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIu7g6SIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTYsIunl8OkiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU3LCLp5ezpIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOCwi4OXi5fHoIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FOSwi8fTo7uH4IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsIuDl9+jl4fgiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMSwi8OXh7uH4IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsIuP27uH4IikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsIiIpCgpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxLCLp8OUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyLCL04SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMsIu749SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQsIuD0+CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIu7g6SIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYsIunl8CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcsIunl7CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsIuDl4iIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTksIvH0IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsIuDl9yIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExLCLw5eEiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiwi4/YiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMywiIikKCi8qIExPQ1ZBTChMT0NBTEVfU1BPU0lUSVZFU0lHTiwgIiIpICovCkxPQ1ZBTChMT0NBTEVfU05FR0FUSVZFU0lHTiwgIi0iKQovKiBMT0NWQUwoTE9DQUxFX0lQT1NTSUdOUE9TTiwgIiIpICovCkxPQ1ZBTChMT0NBTEVfSU5FR1NJR05QT1NOLCAiMSIpIApMT0NWQUwoTE9DQUxFX0lQT1NTWU1QUkVDRURFUywgIjEiKQpMT0NWQUwoTE9DQUxFX0lQT1NTRVBCWVNQQUNFLCAiMCIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NZTVBSRUNFREVTLCAiMSIpCkxPQ1ZBTChMT0NBTEVfSU5FR1NFUEJZU1BBQ0UsICIwIikKLyogTE9DVkFMKExPQ0FMRV9GT05UU0lHTkFUVVJFLCAiIikgKi8KCkxPQ1ZBTChMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCJoZSIpCkxPQ1ZBTChMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwiSEUiKQoKLyogZ3JlZ29yaWFuc2sga2FsZW5kZXIgKi8K