LyoKICoJT0xFMk5MUyBsaWJyYXJ5CiAqICAgICAgSmFwYW5lc2UKICoJSmFwYW5lc2Ugc3RyaW5ncyBpbiBjb2RlcGFnZSA5MzIoU2hpZnQtSklTKQogKgltb2RpZmllZCBieSBIaWRlbm9yaSBUYWtlc2hpbWEoaGlkZW5vcmlAYTIuY3RrdHYubmUuanApCiAqCiAqIENvcHlyaWdodCAxOTk4IE1hcmNlbCBCYXVyCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxPQ1ZBTChMT0NBTEVfSUxBTkdVQUdFLCIwNDExIikKTE9DVkFMKExPQ0FMRV9TTEFOR1VBR0UsIpP6lnuM6iIpCkxPQ1ZBTChMT0NBTEVfU0VOR0xBTkdVQUdFLCJKYXBhbmVzZSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkxBTkdOQU1FLCJqcG4iKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSwik/qWe4zqIikKTE9DVkFMKExPQ0FMRV9JQ09VTlRSWSwiODEiKQpMT0NWQUwoTE9DQUxFX1NDT1VOVFJZLCKT+pZ7IikKTE9DVkFMKExPQ0FMRV9TRU5HQ09VTlRSWSwiSmFwYW4iKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSwiSlBOIikKTE9DVkFMKExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUsIpP6lnsiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UsIjA0MTEiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09VTlRSWSwiODEiKQpMT0NWQUwoTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UsIjkzMiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UsIjkzMiIpCkxPQ1ZBTChMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSwgIjEwMDAxIikKTE9DVkFMKExPQ0FMRV9TTElTVCwiLCIpCkxPQ1ZBTChMT0NBTEVfSU1FQVNVUkUsIjAiKQpMT0NWQUwoTE9DQUxFX1NERUNJTUFMLCIuIikKTE9DVkFMKExPQ0FMRV9TVEhPVVNBTkQsIiwiKQpMT0NWQUwoTE9DQUxFX1NHUk9VUElORywiMzswIikKTE9DVkFMKExPQ0FMRV9JRElHSVRTLCIyIikKTE9DVkFMKExPQ0FMRV9JTFpFUk8sIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdOVU1CRVIsIjEiKQpMT0NWQUwoTE9DQUxFX1NOQVRJVkVESUdJVFMsIjAxMjM0NTY3ODkiKQpMT0NWQUwoTE9DQUxFX1NDVVJSRU5DWSwiiX4iKQpMT0NWQUwoTE9DQUxFX1NJTlRMU1lNQk9MLCAiSlBZIikKTE9DVkFMKExPQ0FMRV9TTU9OREVDSU1BTFNFUCwiLiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRIT1VTQU5EU0VQLCIsIikKTE9DVkFMKExPQ0FMRV9TTU9OR1JPVVBJTkcsIjM7MCIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJESUdJVFMsIjAiKQpMT0NWQUwoTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUywiMiIpCkxPQ1ZBTChMT0NBTEVfSUNVUlJFTkNZLCIzIikKTE9DVkFMKExPQ0FMRV9JTkVHQ1VSUiwiOCIpCkxPQ1ZBTChMT0NBTEVfU0RBVEUsIi0iKQpMT0NWQUwoTE9DQUxFX1NUSU1FLCI6IikKTE9DVkFMKExPQ0FMRV9TU0hPUlREQVRFLCJ5eS1NTS1kZCIpCkxPQ1ZBTChMT0NBTEVfU0xPTkdEQVRFLCJ5eXl5LU1NLWRkIikKTE9DVkFMKExPQ0FMRV9TVElNRUZPUk1BVCwiSEg6bW06c3MiKQpMT0NWQUwoTE9DQUxFX0lEQVRFLCIyIikKTE9DVkFMKExPQ0FMRV9JTERBVEUsIjIiKQpMT0NWQUwoTE9DQUxFX0lUSU1FLCIxIikKTE9DVkFMKExPQ0FMRV9JVElNRU1BUktQT1NOLCIwIikgLyogSXMgdGhpcyBjb3JyZWN0PyhJIGhhdmUgbm8gZG9jdW1lbnRzLikgKi8KTE9DVkFMKExPQ0FMRV9JQ0VOVFVSWSwiMCIpCkxPQ1ZBTChMT0NBTEVfSVRMWkVSTywiMCIpCkxPQ1ZBTChMT0NBTEVfSURBWUxaRVJPLCIwIikKTE9DVkFMKExPQ0FMRV9JTU9OTFpFUk8sIjAiKQpMT0NWQUwoTE9DQUxFX1MxMTU5LCAijN+RTyIpCkxPQ1ZBTChMT0NBTEVfUzIzNTksICKM34zjIikKTE9DVkFMKExPQ0FMRV9JQ0FMRU5EQVJUWVBFLCAiMiIpCkxPQ1ZBTChMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIsIjIiKQpMT0NWQUwoTE9DQUxFX0lGSVJTVERBWU9GV0VFSywiNiIpCkxPQ1ZBTChMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiwiMCIpCgpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FMSwijI6XapP6IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTIsIonOl2qT+iIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUUzLCKQhZdqk/oiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNCwiltiXapP6IikKTE9DVkFMKExPQ0FMRV9TREFZTkFNRTUsIovgl2qT+iIpCkxPQ1ZBTChMT0NBTEVfU0RBWU5BTUU2LCKTeZdqk/oiKQpMT0NWQUwoTE9DQUxFX1NEQVlOQU1FNywik/qXapP6IikKCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUxLCKMjiIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUyLCKJziIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUUzLCKQhSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU0LCKW2CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU1LCKL4CIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU2LCKTeSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVkRBWU5BTUU3LCKT+iIpCgojaWYgMAovKiBjbGFzc2ljYWwgZm9ybWF0Oi0pICovCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTEsIpZyjI4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUyLCKUQIyOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMywilu2QtiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTQsIolLjI4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU1LCKOSIyOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNiwikIWWs4yOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywilbaMjiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsIpd0jI4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCKSt4yOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsIpBflrOMjiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCKRmoyOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTIsIo50kZYiKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMywiIikKI2Vsc2UKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMSwiglCMjiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTIsIoJRjI4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUzLCKCUoyOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNCwiglOMjiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTUsIoJUjI4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU2LCKCVYyOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FNywiglaMjiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTgsIoJXjI4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUU5LCKCWIyOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTAsIoJQgk+MjiIpCkxPQ1ZBTChMT0NBTEVfU01PTlRITkFNRTExLCKCUIJQjI4iKQpMT0NWQUwoTE9DQUxFX1NNT05USE5BTUUxMiwiglCCUYyOIikKTE9DVkFMKExPQ0FMRV9TTU9OVEhOQU1FMTMsIiIpCiNlbmRpZgoKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSwiMSIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIsIjIiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzLCIzIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCwiNCIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUsIjUiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2LCI2IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNywiNyIpCkxPQ1ZBTChMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTgsIjgiKQpMT0NWQUwoTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5LCI5IikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAsIjEwIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEsIjExIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIsIjEyIikKTE9DVkFMKExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMsIiIpCgpMT0NWQUwoTE9DQUxFX1NQT1NJVElWRVNJR04sICIiKQpMT0NWQUwoTE9DQUxFX1NORUdBVElWRVNJR04sICItIikKTE9DVkFMKExPQ0FMRV9JUE9TU0lHTlBPU04sICIxIikKTE9DVkFMKExPQ0FMRV9JTkVHU0lHTlBPU04sICIxIikKTE9DVkFMKExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMsICIwIikKTE9DVkFMKExPQ0FMRV9JUE9TU0VQQllTUEFDRSwgIjEiKQpMT0NWQUwoTE9DQUxFX0lORUdTWU1QUkVDRURFUywgIjAiKQpMT0NWQUwoTE9DQUxFX0lORUdTRVBCWVNQQUNFLCAiMSIpCi8qIExPQ1ZBTChMT0NBTEVfRk9OVFNJR05BVFVSRSwgIiIpICovCkxPQ1ZBTChMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCJqYSIpCkxPQ1ZBTChMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwiSlAiKQoK