#include <iostream>
#include <queue>
using namespace std;
#define CLASS(x) class x {
#define METHODS public:
#define END_CLASS };
typedef void (*ArenaMgr_MsgEventMapFunc)();
typedef int QObject;
typedef QObject QEvent;
typedef QObject QHsm;
typedef QObject Geometry;
typedef std::queue<QEvent> EventQueue;
CLASS(arenamanager)
int machineSum;
int regularSig;
int eventTypeSum;
ArenaMgr_MsgEventMapFunc s_mapFunc;
EventQueue queue;
bool stateMachinesAreIniti;
METHODS
void arenamgrInit(void);
void smRegistry(int id, QHsm * stateMachine);
void dispatchAsyn(int id, QEvent *event);
bool dispatch(int id, QEvent *event);
void forwardDispatchAsyn(QEvent *event);
void forwardDispatch(QEvent *event);
void setMachineSum(int sum);
void setRegularSig(int sig);
void setEventTypeSum(int sum);
void setMsgEventMap(ArenaMgr_MsgEventMapFunc mapFunc);
void statEng_createArena(int sm_id, int arena_id, char const* arena_name, Geometry const* geom);
void statEng_enableArena(int sm_id, bool enabled);
void postForwardDispatchAsyn(QEvent *event);
void setIsAbrFullMode(bool isAbrFullMode);
void statEng_initStateMachines(void);
END_CLASS
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIENMQVNTKHgpIGNsYXNzIHggewojZGVmaW5lIE1FVEhPRFMgcHVibGljOgojZGVmaW5lIEVORF9DTEFTUyB9OwoKdHlwZWRlZiB2b2lkICgqQXJlbmFNZ3JfTXNnRXZlbnRNYXBGdW5jKSgpOwoKdHlwZWRlZiBpbnQgUU9iamVjdDsKdHlwZWRlZiBRT2JqZWN0IFFFdmVudDsKdHlwZWRlZiBRT2JqZWN0IFFIc207CnR5cGVkZWYgUU9iamVjdCBHZW9tZXRyeTsKCnR5cGVkZWYgc3RkOjpxdWV1ZTxRRXZlbnQ+IEV2ZW50UXVldWU7CgpDTEFTUyhhcmVuYW1hbmFnZXIpCiAgICBpbnQgbWFjaGluZVN1bTsKICAgIGludCByZWd1bGFyU2lnOwogICAgaW50IGV2ZW50VHlwZVN1bTsKICAgIEFyZW5hTWdyX01zZ0V2ZW50TWFwRnVuYyBzX21hcEZ1bmM7CiAgICBFdmVudFF1ZXVlIHF1ZXVlOwogICAgYm9vbCBzdGF0ZU1hY2hpbmVzQXJlSW5pdGk7Ck1FVEhPRFMKCXZvaWQgYXJlbmFtZ3JJbml0KHZvaWQpOwogICAJdm9pZCBzbVJlZ2lzdHJ5KGludCBpZCwgUUhzbSAqIHN0YXRlTWFjaGluZSk7Cgl2b2lkIGRpc3BhdGNoQXN5bihpbnQgaWQsIFFFdmVudCAqZXZlbnQpOwogIAlib29sIGRpc3BhdGNoKGludCBpZCwgUUV2ZW50ICpldmVudCk7Cgl2b2lkIGZvcndhcmREaXNwYXRjaEFzeW4oUUV2ZW50ICpldmVudCk7CiAgICB2b2lkIGZvcndhcmREaXNwYXRjaChRRXZlbnQgKmV2ZW50KTsKCXZvaWQgc2V0TWFjaGluZVN1bShpbnQgc3VtKTsKCXZvaWQgc2V0UmVndWxhclNpZyhpbnQgc2lnKTsKICAgIHZvaWQgc2V0RXZlbnRUeXBlU3VtKGludCBzdW0pOwogICAgdm9pZCBzZXRNc2dFdmVudE1hcChBcmVuYU1ncl9Nc2dFdmVudE1hcEZ1bmMgbWFwRnVuYyk7CiAgICB2b2lkIHN0YXRFbmdfY3JlYXRlQXJlbmEoaW50IHNtX2lkLCBpbnQgYXJlbmFfaWQsICBjaGFyIGNvbnN0KiBhcmVuYV9uYW1lLCAgR2VvbWV0cnkgY29uc3QqICBnZW9tKTsKICAgIHZvaWQgc3RhdEVuZ19lbmFibGVBcmVuYShpbnQgc21faWQsIGJvb2wgZW5hYmxlZCk7CiAgICB2b2lkIHBvc3RGb3J3YXJkRGlzcGF0Y2hBc3luKFFFdmVudCAqZXZlbnQpOwogICAgdm9pZCBzZXRJc0FickZ1bGxNb2RlKGJvb2wgaXNBYnJGdWxsTW9kZSk7CiAgICB2b2lkIHN0YXRFbmdfaW5pdFN0YXRlTWFjaGluZXModm9pZCk7CkVORF9DTEFTUwoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==