//currently not needed
//template<typename T> struct alignment_trick { char c; T member; };
//#define ALIGNOF(type) offsetof (alignment_trick<type>, member)
#ifdef _WIN32
#include <windows.h>
#define sleep_ms(x) Sleep(x)
#else
#include <unistd.h>
#include <stdint.h> //for uintptr_t
#define ALIGNOF(x) __alignof__(x)
#define sleep_ms(x) usleep(x*1000)
#endif
#ifdef _MSC_VER
#define ALIGNOF(x) __alignof(x)
#define strtok_r(x, y, z) strtok_s(x, y, z)
#define strtof(x, y) (float)strtod(x, y)
#define strtoll(x, y, z) _strtoi64(x, y, z)
#define strtoull(x, y, z) _strtoui64(x, y, z)
#endif
#ifdef __MINGW32__
#define strtok_r(s,d,p) strtok(s,d)
#endif
#define PADDING(x, y) ((ALIGNOF(y) - ((uintptr_t)(x) & (ALIGNOF(y) - 1))) & (ALIGNOF(y) - 1))
Ly9jdXJyZW50bHkgbm90IG5lZWRlZAovL3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBhbGlnbm1lbnRfdHJpY2sgeyBjaGFyIGM7IFQgbWVtYmVyOyB9OwovLyNkZWZpbmUgQUxJR05PRih0eXBlKSBvZmZzZXRvZiAoYWxpZ25tZW50X3RyaWNrPHR5cGU+LCBtZW1iZXIpCgojaWZkZWYgX1dJTjMyCiAgICAjaW5jbHVkZSA8d2luZG93cy5oPgoJI2RlZmluZSBzbGVlcF9tcyh4KSBTbGVlcCh4KQojZWxzZQoJI2luY2x1ZGUgPHVuaXN0ZC5oPgoJI2luY2x1ZGUgPHN0ZGludC5oPiAvL2ZvciB1aW50cHRyX3QKCQoJI2RlZmluZSBBTElHTk9GKHgpIF9fYWxpZ25vZl9fKHgpCgkjZGVmaW5lIHNsZWVwX21zKHgpIHVzbGVlcCh4KjEwMDApCiNlbmRpZgoKI2lmZGVmIF9NU0NfVkVSCgkjZGVmaW5lIEFMSUdOT0YoeCkgX19hbGlnbm9mKHgpCgkjZGVmaW5lIHN0cnRva19yKHgsIHksIHopIHN0cnRva19zKHgsIHksIHopCgkjZGVmaW5lIHN0cnRvZih4LCB5KSAoZmxvYXQpc3RydG9kKHgsIHkpCgkjZGVmaW5lIHN0cnRvbGwoeCwgeSwgeikgX3N0cnRvaTY0KHgsIHksIHopCgkjZGVmaW5lIHN0cnRvdWxsKHgsIHksIHopIF9zdHJ0b3VpNjQoeCwgeSwgeikKI2VuZGlmCgojaWZkZWYgX19NSU5HVzMyX18KCSNkZWZpbmUgc3RydG9rX3IocyxkLHApIHN0cnRvayhzLGQpCiNlbmRpZgoKI2RlZmluZSBQQURESU5HKHgsIHkpICgoQUxJR05PRih5KSAtICgodWludHB0cl90KSh4KSAmIChBTElHTk9GKHkpIC0gMSkpKSAmIChBTElHTk9GKHkpIC0gMSkp