/* Generated by Nim Compiler v0.16.0 */
/*   (c) 2017 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
#undef linux
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ;
typedef struct Baselexer_B6cGbTPhMsqMovc9cOcIHRw Baselexer_B6cGbTPhMsqMovc9cOcIHRw;
typedef struct TNimObject TNimObject;
typedef struct Streamobj_RShkcoDOPnoCVhtpN1hDPQ Streamobj_RShkcoDOPnoCVhtpN1hDPQ;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct TY_ArNCLAPkQjwz7DrguhEHNA TY_ArNCLAPkQjwz7DrguhEHNA;
typedef struct Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw;
typedef struct Valueerror_Gi06FkNeykJn7mrqRZYrkA Valueerror_Gi06FkNeykJn7mrqRZYrkA;
typedef struct Exception Exception;
typedef struct Cell_1zcF9cV8XIAtbN8h5HRUB8g Cell_1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct Cellseq_Axo1XVm9aaQueTOldv8le5w Cellseq_Axo1XVm9aaQueTOldv8le5w;
typedef struct Gcheap_1TRH1TZMaVZTnLNcIHuNFQ Gcheap_1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct Gcstack_7fytPA5bBsob6See21YMRA Gcstack_7fytPA5bBsob6See21YMRA;
typedef struct Memregion_x81NhDv59b8ercDZ9bi85jyg Memregion_x81NhDv59b8ercDZ9bi85jyg;
typedef struct Smallchunk_tXn60W2f8h3jgAYdEmy5NQ Smallchunk_tXn60W2f8h3jgAYdEmy5NQ;
typedef struct Llchunk_XsENErzHIZV9bhvyJx56wGw Llchunk_XsENErzHIZV9bhvyJx56wGw;
typedef struct Bigchunk_Rv9c70Uhp2TytkX7eH78qEg Bigchunk_Rv9c70Uhp2TytkX7eH78qEg;
typedef struct Intset_EZObFrE3NC9bIb3YMkY9crZA Intset_EZObFrE3NC9bIb3YMkY9crZA;
typedef struct Trunk_W0r8S0Y3UGke6T9bIUWnnuw Trunk_W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct Avlnode_IaqjtwKhxLEpvDS9bct9blEw Avlnode_IaqjtwKhxLEpvDS9bct9blEw;
typedef struct Gcstat_0RwLoVBHZPfUAcLczmfQAg Gcstat_0RwLoVBHZPfUAcLczmfQAg;
typedef struct Cellset_jG87P0AI9aZtss9ccTYBIISQ Cellset_jG87P0AI9aZtss9ccTYBIISQ;
typedef struct Pagedesc_fublkgIY4LG3mT51LU2WHg Pagedesc_fublkgIY4LG3mT51LU2WHg;
typedef struct Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q;
typedef struct Orderedtable_AF39bJ7XDr6gpANuGpxkHrw Orderedtable_AF39bJ7XDr6gpANuGpxkHrw;
typedef struct TY_MlAD6nAPq9bHKla9cWiIZP0g TY_MlAD6nAPq9bHKla9cWiIZP0g;
typedef struct TY_oLpBKXzW3hF9aCVMo5EymfQ TY_oLpBKXzW3hF9aCVMo5EymfQ;
typedef struct TY_awOivLjlO76sGdHY7nQUjQ TY_awOivLjlO76sGdHY7nQUjQ;
typedef struct TY_jq7X5k7hWG0tdTZTDkiyGQ TY_jq7X5k7hWG0tdTZTDkiyGQ;
typedef struct Basechunk_Sdq7WpT6qAH858F5ZEdG3w Basechunk_Sdq7WpT6qAH858F5ZEdG3w;
typedef struct Freecell_u6M5LHprqzkn9axr04yg9bGQ Freecell_u6M5LHprqzkn9axr04yg9bGQ;
typedef NU8 Tnimkind_jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ_Set;
typedef N_NIMCALL_PTR(void, TY_ojoeKfW4VYIm36I9cpDTQIg) (void* p0, NI op0);
typedef N_NIMCALL_PTR(void*, TY_WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p0);
struct  TNimType  {
NI size;
Tnimkind_jIBKr1ejBgsfM33Kxw4j7A kind;
Tnimtypeflag_v8QUszD1sWlSIWZz7mC4bQ_Set flags;
TNimType* base;
TNimNode* node;
void* finalizer;
TY_ojoeKfW4VYIm36I9cpDTQIg marker;
TY_WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 Tnimnodekind_unfNsxrcATrufDZmpBq4HQ;
struct  TNimNode  {
Tnimnodekind_unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct  TNimObject  {
TNimType* m_type;
};
typedef NU8 TY_nmiMWKVIe46vacnhAFrQvw_Set[32];
struct  Baselexer_B6cGbTPhMsqMovc9cOcIHRw  {
  TNimObject Sup;
NI bufpos;
NCSTRING buf;
NI buflen;
Streamobj_RShkcoDOPnoCVhtpN1hDPQ* input;
NI linenumber;
NI sentinel;
NI linestart;
TY_nmiMWKVIe46vacnhAFrQvw_Set refillchars;
};
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NU8 Tokkind_vfEI6XZ7Xkb5BV9c6202vjA;
typedef NU8 Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ;
typedef NU8 Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ;
struct  Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ  {
  Baselexer_B6cGbTPhMsqMovc9cOcIHRw Sup;
NimStringDesc* a;
Tokkind_vfEI6XZ7Xkb5BV9c6202vjA tok;
Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ kind;
Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ err;
TY_ArNCLAPkQjwz7DrguhEHNA* state;
NimStringDesc* filename;
};
typedef NU8 Parserstate_UzfeQnJimUtC9bt1BjDzcdQ;
struct  Exception  {
  TNimObject Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
NimStringDesc* trace;
};
struct  Valueerror_Gi06FkNeykJn7mrqRZYrkA  {
  Exception Sup;
};
struct  Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw  {
  Valueerror_Gi06FkNeykJn7mrqRZYrkA Sup;
};
typedef NimStringDesc* TY_sMpvt1sOxOJ3LFGulnbeMQ[4];
struct  Cell_1zcF9cV8XIAtbN8h5HRUB8g  {
NI refcount;
TNimType* typ;
};
struct  Cellseq_Axo1XVm9aaQueTOldv8le5w  {
NI len;
NI cap;
Cell_1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* TY_SiRwrEKZdLgxqz9a9aoVBglg[512];
typedef Trunk_W0r8S0Y3UGke6T9bIUWnnuw* TY_lh2A89ahMmYg9bCmpVaplLbA[256];
struct  Intset_EZObFrE3NC9bIb3YMkY9crZA  {
TY_lh2A89ahMmYg9bCmpVaplLbA data;
};
struct  Memregion_x81NhDv59b8ercDZ9bi85jyg  {
NI minlargeobj;
NI maxlargeobj;
TY_SiRwrEKZdLgxqz9a9aoVBglg freesmallchunks;
Llchunk_XsENErzHIZV9bhvyJx56wGw* llmem;
NI currmem;
NI maxmem;
NI freemem;
NI lastsize;
Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* freechunkslist;
Intset_EZObFrE3NC9bIb3YMkY9crZA chunkstarts;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* root;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* deleted;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* last;
Avlnode_IaqjtwKhxLEpvDS9bct9blEw* freeavlnodes;
NIM_BOOL locked;
NIM_BOOL blockchunksizeincrease;
NI nextchunksize;
};
struct  Gcstat_0RwLoVBHZPfUAcLczmfQAg  {
NI stackscans;
NI cyclecollections;
NI maxthreshold;
NI maxstacksize;
NI maxstackcells;
NI cycletablesize;
NI64 maxpause;
};
struct  Cellset_jG87P0AI9aZtss9ccTYBIISQ  {
NI counter;
NI max;
Pagedesc_fublkgIY4LG3mT51LU2WHg* head;
Pagedesc_fublkgIY4LG3mT51LU2WHg** data;
};
struct  Gcheap_1TRH1TZMaVZTnLNcIHuNFQ  {
Gcstack_7fytPA5bBsob6See21YMRA* stack;
void* stackbottom;
NI cyclethreshold;
Cellseq_Axo1XVm9aaQueTOldv8le5w zct;
Cellseq_Axo1XVm9aaQueTOldv8le5w decstack;
Cellseq_Axo1XVm9aaQueTOldv8le5w tempstack;
NI recgclock;
Memregion_x81NhDv59b8ercDZ9bi85jyg region;
Gcstat_0RwLoVBHZPfUAcLczmfQAg stat;
Cellset_jG87P0AI9aZtss9ccTYBIISQ marked;
Cellseq_Axo1XVm9aaQueTOldv8le5w additionalroots;
};
typedef NU8 Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg;
struct  Orderedtable_AF39bJ7XDr6gpANuGpxkHrw  {
TY_MlAD6nAPq9bHKla9cWiIZP0g* data;
NI counter;
NI first;
NI last;
};
struct  Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q  {
Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg kind;
union{
struct {NimStringDesc* str;
} S1;
struct {NI64 num;
} S2;
struct {NF fnum;
} S3;
struct {NIM_BOOL bval;
} S4;
struct {Orderedtable_AF39bJ7XDr6gpANuGpxkHrw fields;
} S6;
struct {TY_oLpBKXzW3hF9aCVMo5EymfQ* elems;
} S7;
} kindU;
};
struct TY_awOivLjlO76sGdHY7nQUjQ {
NI Field0;
NI Field1;
NimStringDesc* Field2;
Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* Field3;
};
struct TY_jq7X5k7hWG0tdTZTDkiyGQ {
NimStringDesc* Field0;
Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* Field1;
};
typedef N_NIMCALL_PTR(void, TY_cnkJEp9bna8U6yi9aVW9cAJ0Q) (Streamobj_RShkcoDOPnoCVhtpN1hDPQ* s0);
typedef N_NIMCALL_PTR(NIM_BOOL, TY_KjFcmLOhf4VQvVcyLJWXZw) (Streamobj_RShkcoDOPnoCVhtpN1hDPQ* s0);
typedef N_NIMCALL_PTR(void, TY_jlOYFw9cHausuCbPoWx2iiA) (Streamobj_RShkcoDOPnoCVhtpN1hDPQ* s0, NI pos0);
typedef N_NIMCALL_PTR(NI, TY_Xzm85qBLb9cf9cu8VOfAr8PQ) (Streamobj_RShkcoDOPnoCVhtpN1hDPQ* s0);
typedef N_NIMCALL_PTR(NI, TY_tjaJtoUzLe1BMUbItlcGhQ) (Streamobj_RShkcoDOPnoCVhtpN1hDPQ* s0, void* buffer0, NI buflen0);
typedef N_NIMCALL_PTR(void, TY_b9bsIuILxTLVZHPvJBW187A) (Streamobj_RShkcoDOPnoCVhtpN1hDPQ* s0, void* buffer0, NI buflen0);
struct  Streamobj_RShkcoDOPnoCVhtpN1hDPQ  {
  TNimObject Sup;
TY_cnkJEp9bna8U6yi9aVW9cAJ0Q closeimpl;
TY_KjFcmLOhf4VQvVcyLJWXZw atendimpl;
TY_jlOYFw9cHausuCbPoWx2iiA setpositionimpl;
TY_Xzm85qBLb9cf9cu8VOfAr8PQ getpositionimpl;
TY_tjaJtoUzLe1BMUbItlcGhQ readdataimpl;
TY_tjaJtoUzLe1BMUbItlcGhQ peekdataimpl;
TY_b9bsIuILxTLVZHPvJBW187A writedataimpl;
TY_cnkJEp9bna8U6yi9aVW9cAJ0Q flushimpl;
};
struct  Gcstack_7fytPA5bBsob6See21YMRA  {
Gcstack_7fytPA5bBsob6See21YMRA* prev;
Gcstack_7fytPA5bBsob6See21YMRA* next;
void* starts;
void* pos;
NI maxstacksize;
};
struct  Basechunk_Sdq7WpT6qAH858F5ZEdG3w  {
NI prevsize;
NI size;
NIM_BOOL used;
};
struct  Smallchunk_tXn60W2f8h3jgAYdEmy5NQ  {
  Basechunk_Sdq7WpT6qAH858F5ZEdG3w Sup;
Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* next;
Smallchunk_tXn60W2f8h3jgAYdEmy5NQ* prev;
Freecell_u6M5LHprqzkn9axr04yg9bGQ* freelist;
NI free;
NI acc;
NF data;
};
struct  Llchunk_XsENErzHIZV9bhvyJx56wGw  {
NI size;
NI acc;
Llchunk_XsENErzHIZV9bhvyJx56wGw* next;
};
struct  Bigchunk_Rv9c70Uhp2TytkX7eH78qEg  {
  Basechunk_Sdq7WpT6qAH858F5ZEdG3w Sup;
Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* next;
Bigchunk_Rv9c70Uhp2TytkX7eH78qEg* prev;
NI align;
NF data;
};
typedef NI TY_9agrCtWKhCnWWMJpKKugJag[16];
struct  Trunk_W0r8S0Y3UGke6T9bIUWnnuw  {
Trunk_W0r8S0Y3UGke6T9bIUWnnuw* next;
NI key;
TY_9agrCtWKhCnWWMJpKKugJag bits;
};
typedef Avlnode_IaqjtwKhxLEpvDS9bct9blEw* TY_0aOLqZchNi8nWtMTi8ND8w[2];
struct  Avlnode_IaqjtwKhxLEpvDS9bct9blEw  {
TY_0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperbound;
NI level;
};
struct  Pagedesc_fublkgIY4LG3mT51LU2WHg  {
Pagedesc_fublkgIY4LG3mT51LU2WHg* next;
NI key;
TY_9agrCtWKhCnWWMJpKKugJag bits;
};
struct  Freecell_u6M5LHprqzkn9axr04yg9bGQ  {
Freecell_u6M5LHprqzkn9axr04yg9bGQ* next;
NI zerofield;
};
struct TY_ArNCLAPkQjwz7DrguhEHNA {
  TGenericSeq Sup;
  Parserstate_UzfeQnJimUtC9bt1BjDzcdQ data[SEQ_DECL_SIZE];
};
struct TY_oLpBKXzW3hF9aCVMo5EymfQ {
  TGenericSeq Sup;
  Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* data[SEQ_DECL_SIZE];
};
struct TY_MlAD6nAPq9bHKla9cWiIZP0g {
  TGenericSeq Sup;
  TY_awOivLjlO76sGdHY7nQUjQ data[SEQ_DECL_SIZE];
};
static N_NIMCALL(void, Marker_TY_ArNCLAPkQjwz7DrguhEHNA)(void* p, NI op);
N_NIMCALL(void, open_xmgaYJZNnO6QcDtac9bs3Vg)(Baselexer_B6cGbTPhMsqMovc9cOcIHRw* L0, Streamobj_RShkcoDOPnoCVhtpN1hDPQ* input0, NI buflen0, TY_nmiMWKVIe46vacnhAFrQvw_Set refillchars0);
N_NIMCALL(void, unsureAsgnRef)(void** dest0, void* src0);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src0);
N_NIMCALL(void, genericSeqAssign)(void* dest0, void* src_qi9cfsBnd42r9a9cpCLO10jow, TNimType* mt0);
N_NIMCALL(Tokkind_vfEI6XZ7Xkb5BV9c6202vjA, gettok_bhdBvXONA2D049cZWsITG7A)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0);
N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s0, NI newlen0);
N_NIMCALL(void, skip_3S9b9cVNhGg79bsA5hP4JMAbA_2)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0);
N_NIMCALL(NI, handlecr_IwUEvMBOLRY9cqyar6XKEaw)(Baselexer_B6cGbTPhMsqMovc9cOcIHRw* L0, NI pos0);
N_NIMCALL(NI, handlelf_IwUEvMBOLRY9cqyar6XKEaw_3)(Baselexer_B6cGbTPhMsqMovc9cOcIHRw* L0, NI pos0);
N_NIMCALL(void, parsenumber_JYjE8i409cEC8b5C0sqMO7A)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0);
N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s0, NIM_CHAR c0);
static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0);
static N_INLINE(void, copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest0, void* source0, NI size0);
N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest0, NI addlen0);
N_NIMCALL(NIM_BOOL, contains_m1TSS3QwQPclQATuiRuVZg)(NimStringDesc* s0, TY_nmiMWKVIe46vacnhAFrQvw_Set chars0);
N_NIMCALL(Tokkind_vfEI6XZ7Xkb5BV9c6202vjA, parsestring_bhdBvXONA2D049cZWsITG7A_2)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0);
N_NIMCALL(NI, parseescapedutf16_e6kX9atmDSRFKBvyA9bJj1Ew)(NCSTRING buf0, NI* pos0);
N_NIMCALL(NIM_BOOL, handlehexchar_B9aB9bYdlH7mQEQhG7ESFXbg)(NIM_CHAR c0, NI* x0);
static N_INLINE(void, appendChar)(NimStringDesc* dest0, NIM_CHAR c0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI space0);
static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0);
static N_INLINE(NIM_BOOL, equalmem_DCrUjdaMvFDHaR1hs7sQGwropes)(void* a0, void* b0, NI size0);
N_NIMCALL(NimStringDesc*, nuctoUTF8)(NI32 c0);
N_NIMCALL(void, parsename_JYjE8i409cEC8b5C0sqMO7A_2)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0);
N_NIMCALL(TGenericSeq*, incrSeqV2)(TGenericSeq* seq0, NI elemsize0);
static N_INLINE(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ, pop_VO9bSHcr4zrlIDTyWGxsSgwjson)(TY_ArNCLAPkQjwz7DrguhEHNA** s0);
N_NIMCALL(TGenericSeq*, setLengthSeq)(TGenericSeq* seq0, NI elemsize0, NI newlen0);
N_NIMCALL(void, next_3S9b9cVNhGg79bsA5hP4JMAbA)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0);
N_NIMCALL(void, nimGCvisit)(void* d0, NI op0);
static N_NIMCALL(void, Marker_TY_TOl9bBVGahlQmjZBc3UGISg)(void* p, NI op);
N_NIMCALL(void*, newObj)(TNimType* typ0, NI size0);
N_NIMCALL(NimStringDesc*, errormsgexpected_JX5zi2U38bL44QMaeRJjvQ)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0, NimStringDesc* e0);
N_NIMCALL(NimStringDesc*, nsuFormatOpenArray)(NimStringDesc* formatstr0, NimStringDesc** a0, NI a0Len0);
static N_INLINE(NI, getline_P0hkpPjGtCF4FNZ6q9atEnAjson)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0);
N_NIMCALL(NimStringDesc*, nimIntToStr)(NI x0);
static N_INLINE(NI, getcolumn_P0hkpPjGtCF4FNZ6q9atEnA_2json)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0);
N_NIMCALL(NI, getcolnumber_9cj186ckGjLqyndkoW7bBdg)(Baselexer_B6cGbTPhMsqMovc9cOcIHRw* L0, NI pos0);
static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0);
static N_INLINE(Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr0);
static N_INLINE(void, rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_NOINLINE(void, addzct_fCDI7oO1NNVXXURtxSzsRw)(Cellseq_Axo1XVm9aaQueTOldv8le5w* s0, Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0);
N_NIMCALL(void, raiseException)(Exception* e0, NCSTRING ename0);
N_NIMCALL(NimStringDesc*, rawNewString)(NI cap0);
N_NIMCALL(void, escapejson_xxovtptDIL7ctJosN3ocbA)(NimStringDesc* s0, NimStringDesc** result0);
static N_NIMCALL(void, Marker_TY_oLpBKXzW3hF9aCVMo5EymfQ)(void* p, NI op);
static N_NIMCALL(void, Marker_TY_zfzzuQ8txrdZAYK0WGWpHg)(void* p, NI op);
static N_INLINE(void, nimGCunrefNoCycle)(void* p0);
N_NIMCALL(void*, newSeqRC1)(TNimType* typ0, NI len0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_fL0tq3d6JfMw9bvY7G6spBQ)(TY_oLpBKXzW3hF9aCVMo5EymfQ* x0, TY_oLpBKXzW3hF9aCVMo5EymfQ* y0);
static N_INLINE(NI, len_a0ORwcHIaewozuGDsc9b3TAjson)(Orderedtable_AF39bJ7XDr6gpANuGpxkHrw t0);
static N_INLINE(NIM_BOOL, isfilled_IxXD1UAPoEehVDW9cv9cRaewtables)(NI hcode0);
N_NIMCALL(NIM_BOOL, haskey_6zZzy9aTG3euSh9bJ9bh9aFOqA)(Orderedtable_AF39bJ7XDr6gpANuGpxkHrw t0, NimStringDesc* key0);
N_NIMCALL(NIM_BOOL, HEX3DHEX3D_Ujpjfumo30l2ielPaquw0Q)(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* a0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* b0);
N_NIMCALL(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q**, HEX5BHEX5D_9bcSZUFhwESDEYXhkxOm8Hg)(Orderedtable_AF39bJ7XDr6gpANuGpxkHrw* t0, NimStringDesc* key0);
N_NIMCALL(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*, newjarray_phgxr9cKlc0dmrJpCth52pw)(void);
N_NIMCALL(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*, newjobject_phgxr9cKlc0dmrJpCth52pw_2)(void);
N_NIMCALL(void, initorderedtable_PHRF9cHqhXGiWC9cIiRW9bTWw)(NI initialsize0, Orderedtable_AF39bJ7XDr6gpANuGpxkHrw* Result);
N_NIMCALL(void, HEX5BHEX5DHEX3D_9bwm9c9bGAcoIGLjRndWCPT3Q)(Orderedtable_AF39bJ7XDr6gpANuGpxkHrw* t0, NimStringDesc* key0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* val0);
N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src0);
N_NIMCALL(NI, len_1r8KCEmq7uHhZ2GR9c7tsOA)(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* n0);
N_NIMCALL(void, tougly_5SA9aXRryVJvgoCag29cRzQw)(NimStringDesc** result0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* node0);
N_NIMCALL(void, add_IbYQ9cTcoQ89aIwM2IEYGMng)(NimStringDesc** result0, NI64 x0);
N_NIMCALL(void, add_A9bDQDKw5SEqD3OvtOnC1bg)(NimStringDesc** result0, NF x0);
N_NIMCALL(void, topretty_MHqQ3FKhfxfdLtBgX2QXeQ)(NimStringDesc** result0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* node0, NI indent0, NIM_BOOL ml0, NIM_BOOL lstarr0, NI currindent0);
N_NIMCALL(void, nl_gOaZJtTQtJqBSCIPT8VfqQ)(NimStringDesc** s0, NIM_BOOL ml0);
N_NIMCALL(void, indent_1Ijhfzd9bSYvew1BrGtRO2g)(NimStringDesc** s0, NI i0);
N_NIMCALL(NimStringDesc*, nsuRepeatChar)(NIM_CHAR c0, NI count0);
N_NIMCALL(NI, newindent_jGyhG9amGoXLPyJmHLbefOQ)(NI curr0, NI indent0, NIM_BOOL ml0);
extern TNimType NTI_B6cGbTPhMsqMovc9cOcIHRw;
TNimType NTI_TAl5cv6tbH9avL9cKfMc0hkQ;
extern TNimType NTI_77mFvmsOLKik79ci2hXkHEg;
TNimType NTI_vfEI6XZ7Xkb5BV9c6202vjA;
TNimType NTI_NdAkGi88owzfBOSBDfW49cQ;
TNimType NTI_rhaSH4AjHj9bXRijCvdqRhQ;
TNimType NTI_UzfeQnJimUtC9bt1BjDzcdQ;
TNimType NTI_ArNCLAPkQjwz7DrguhEHNA;
extern TNimType NTI_Gi06FkNeykJn7mrqRZYrkA;
TNimType NTI_4avqtqpbmyD9bxH9bUmO9b0yw;
TNimType NTI_TOl9bBVGahlQmjZBc3UGISg;
extern Gcheap_1TRH1TZMaVZTnLNcIHuNFQ gch_IcYaEuuWivYAS86vFMTS3Q;
TNimType NTI_df9bshXB7C9cTiWPIOtX3j1Q;
TNimType NTI_RUngo7nCHe6O8aBGIcrhtg;
extern TNimType NTI_Aav8dQoMlCFnZRxA0IhTHQ;
extern TNimType NTI_w9bl9a1ul9ctRJWiMl9cNnIMvg;
extern TNimType NTI_VaVACK0bpYmqIQ0mKcHfQQ;
extern TNimType NTI_AF39bJ7XDr6gpANuGpxkHrw;
TNimType NTI_oLpBKXzW3hF9aCVMo5EymfQ;
TNimType NTI_zfzzuQ8txrdZAYK0WGWpHg;
static NIM_CONST TY_nmiMWKVIe46vacnhAFrQvw_Set T_9b9bytt1stv9cZ8uqII7HFgew_15 = {
0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
NIM_CONST struct {
  TGenericSeq Sup;
  Parserstate_UzfeQnJimUtC9bt1BjDzcdQ data[1];
} T_9b9bytt1stv9cZ8uqII7HFgew_17 = {{1, 1}, {((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 1)}};
NIM_CONST TY_ArNCLAPkQjwz7DrguhEHNA* T_9b9bytt1stv9cZ8uqII7HFgew_16 = ((TY_ArNCLAPkQjwz7DrguhEHNA*)&T_9b9bytt1stv9cZ8uqII7HFgew_17);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_18, "", 0);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_19, "0.", 2);
static NIM_CONST TY_nmiMWKVIe46vacnhAFrQvw_Set T_9b9bytt1stv9cZ8uqII7HFgew_20 = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
;
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_21, "\\u", 2);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_22, "null", 4);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_23, "true", 4);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_24, "false", 5);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_25, "$1($2, $3) Error: $4", 20);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_26, " expected", 9);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_27, "\"", 1);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_28, "\\\"", 2);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_29, "\\\\", 2);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_30, "\\u0000", 6);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_31, "0123456789ABCDEF", 16);
TNimNode* NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[8];
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_35, "[", 1);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_36, ",", 1);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_37, "]", 1);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_38, "{", 1);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_39, ":", 1);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_40, "}", 1);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_41, "\015\012", 2);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_42, ", ", 2);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_43, ": ", 2);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_44, "{}", 2);
STRING_LITERAL(T_9b9bytt1stv9cZ8uqII7HFgew_45, "[]", 2);
static N_NIMCALL(void, Marker_TY_ArNCLAPkQjwz7DrguhEHNA)(void* p, NI op) {
	TY_ArNCLAPkQjwz7DrguhEHNA* a;
	NI LOC1;
	a = (TY_ArNCLAPkQjwz7DrguhEHNA*)p;
	LOC1 = (NI)0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	}
}

N_NIMCALL(void, open_USrSbIzr5aC08n4vhuXaWA)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0, Streamobj_RShkcoDOPnoCVhtpN1hDPQ* input0, NimStringDesc* filename0) {
	Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC1;
	LOC1 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
	LOC1 = &my0->Sup;
	open_xmgaYJZNnO6QcDtac9bs3Vg(LOC1, input0, ((NI) 8192), T_9b9bytt1stv9cZ8uqII7HFgew_15);
	unsureAsgnRef((void**) (&(*my0).filename), copyString(filename0));
	genericSeqAssign((&(*my0).state), T_9b9bytt1stv9cZ8uqII7HFgew_16, (&NTI_ArNCLAPkQjwz7DrguhEHNA));
	(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
	unsureAsgnRef((void**) (&(*my0).a), copyString(((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_18)));
}

N_NIMCALL(void, skip_3S9b9cVNhGg79bsA5hP4JMAbA_2)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0) {
	NI pos0;
	NCSTRING buf0;
	pos0 = (*my0).Sup.bufpos;
	buf0 = (*my0).Sup.buf;
	{
		while (1) {
			switch (((NU8)(buf0[pos0]))) {
			case 47:
			{
				{
					if (!((NU8)(buf0[(NI)(pos0 + ((NI) 1))]) == (NU8)(47))) goto LA6;
					pos0 += ((NI) 2);
					{
						while (1) {
							switch (((NU8)(buf0[pos0]))) {
							case 0:
							{
								goto LA8;
							}
							break;
							case 13:
							{
								Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC12;
								LOC12 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
								LOC12 = &my0->Sup;
								pos0 = handlecr_IwUEvMBOLRY9cqyar6XKEaw(LOC12, pos0);
								buf0 = (*my0).Sup.buf;
								goto LA8;
							}
							break;
							case 10:
							{
								Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC14;
								LOC14 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
								LOC14 = &my0->Sup;
								pos0 = handlelf_IwUEvMBOLRY9cqyar6XKEaw_3(LOC14, pos0);
								buf0 = (*my0).Sup.buf;
								goto LA8;
							}
							break;
							default:
							{
								pos0 += ((NI) 1);
							}
							break;
							}
						}
					} LA8: ;
				}
				goto LA4;
				LA6: ;
				{
					if (!((NU8)(buf0[(NI)(pos0 + ((NI) 1))]) == (NU8)(42))) goto LA17;
					pos0 += ((NI) 2);
					{
						while (1) {
							switch (((NU8)(buf0[pos0]))) {
							case 0:
							{
								(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 8);
								goto LA19;
							}
							break;
							case 13:
							{
								Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC23;
								LOC23 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
								LOC23 = &my0->Sup;
								pos0 = handlecr_IwUEvMBOLRY9cqyar6XKEaw(LOC23, pos0);
								buf0 = (*my0).Sup.buf;
							}
							break;
							case 10:
							{
								Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC25;
								LOC25 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
								LOC25 = &my0->Sup;
								pos0 = handlelf_IwUEvMBOLRY9cqyar6XKEaw_3(LOC25, pos0);
								buf0 = (*my0).Sup.buf;
							}
							break;
							case 42:
							{
								pos0 += ((NI) 1);
								{
									if (!((NU8)(buf0[pos0]) == (NU8)(47))) goto LA29;
									pos0 += ((NI) 1);
									goto LA19;
								}
								LA29: ;
							}
							break;
							default:
							{
								pos0 += ((NI) 1);
							}
							break;
							}
						}
					} LA19: ;
				}
				goto LA4;
				LA17: ;
				{
					goto LA1;
				}
				LA4: ;
			}
			break;
			case 32:
			case 9:
			{
				pos0 += ((NI) 1);
			}
			break;
			case 13:
			{
				Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC35;
				LOC35 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
				LOC35 = &my0->Sup;
				pos0 = handlecr_IwUEvMBOLRY9cqyar6XKEaw(LOC35, pos0);
				buf0 = (*my0).Sup.buf;
			}
			break;
			case 10:
			{
				Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC37;
				LOC37 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
				LOC37 = &my0->Sup;
				pos0 = handlelf_IwUEvMBOLRY9cqyar6XKEaw_3(LOC37, pos0);
				buf0 = (*my0).Sup.buf;
			}
			break;
			default:
			{
				goto LA1;
			}
			break;
			}
		}
	} LA1: ;
	(*my0).Sup.bufpos = pos0;
}

static N_INLINE(void, copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem)(void* dest0, void* source0, NI size0) {
	void* LOC1;
	LOC1 = (void*)0;
	LOC1 = memcpy(dest0, source0, ((size_t) (size0)));
}

static N_INLINE(void, appendString)(NimStringDesc* dest0, NimStringDesc* src0) {
	copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem(((void*) ((&(*dest0).data[((*dest0).Sup.len)- 0]))), ((void*) ((*src0).data)), ((NI) ((NI)((*src0).Sup.len + ((NI) 1)))));
	(*dest0).Sup.len += (*src0).Sup.len;
}

N_NIMCALL(void, parsenumber_JYjE8i409cEC8b5C0sqMO7A)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0) {
	NI pos0;
	NCSTRING buf0;
	pos0 = (*my0).Sup.bufpos;
	buf0 = (*my0).Sup.buf;
	{
		if (!((NU8)(buf0[pos0]) == (NU8)(45))) goto LA3;
		(*my0).a = addChar((*my0).a, 45);
		pos0 += ((NI) 1);
	}
	LA3: ;
	{
		if (!((NU8)(buf0[pos0]) == (NU8)(46))) goto LA7;
		(*my0).a = resizeString((*my0).a, 2);
appendString((*my0).a, ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_19));
		pos0 += ((NI) 1);
	}
	goto LA5;
	LA7: ;
	{
		{
			while (1) {
				if (!(((NU8)(buf0[pos0])) >= ((NU8)(48)) && ((NU8)(buf0[pos0])) <= ((NU8)(57)))) goto LA11;
				(*my0).a = addChar((*my0).a, buf0[pos0]);
				pos0 += ((NI) 1);
			} LA11: ;
		}
		{
			if (!((NU8)(buf0[pos0]) == (NU8)(46))) goto LA14;
			(*my0).a = addChar((*my0).a, 46);
			pos0 += ((NI) 1);
		}
		LA14: ;
	}
	LA5: ;
	{
		while (1) {
			if (!(((NU8)(buf0[pos0])) >= ((NU8)(48)) && ((NU8)(buf0[pos0])) <= ((NU8)(57)))) goto LA17;
			(*my0).a = addChar((*my0).a, buf0[pos0]);
			pos0 += ((NI) 1);
		} LA17: ;
	}
	{
		if (!(((NU8)(buf0[pos0])) == ((NU8)(69)) || ((NU8)(buf0[pos0])) == ((NU8)(101)))) goto LA20;
		(*my0).a = addChar((*my0).a, buf0[pos0]);
		pos0 += ((NI) 1);
		{
			if (!(((NU8)(buf0[pos0])) == ((NU8)(43)) || ((NU8)(buf0[pos0])) == ((NU8)(45)))) goto LA24;
			(*my0).a = addChar((*my0).a, buf0[pos0]);
			pos0 += ((NI) 1);
		}
		LA24: ;
		{
			while (1) {
				if (!(((NU8)(buf0[pos0])) >= ((NU8)(48)) && ((NU8)(buf0[pos0])) <= ((NU8)(57)))) goto LA27;
				(*my0).a = addChar((*my0).a, buf0[pos0]);
				pos0 += ((NI) 1);
			} LA27: ;
		}
	}
	LA20: ;
	(*my0).Sup.bufpos = pos0;
}

N_NIMCALL(NIM_BOOL, handlehexchar_B9aB9bYdlH7mQEQhG7ESFXbg)(NIM_CHAR c0, NI* x0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = NIM_TRUE;
	switch (((NU8)(c0))) {
	case 48 ... 57:
	{
		(*x0) = (NI)((NI)((NU32)((*x0)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) (((NU8)(c0)))) - ((NI) 48)))));
	}
	break;
	case 97 ... 102:
	{
		(*x0) = (NI)((NI)((NU32)((*x0)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)(c0)))) - ((NI) 97)))) + ((NI) 10)))));
	}
	break;
	case 65 ... 70:
	{
		(*x0) = (NI)((NI)((NU32)((*x0)) << (NU32)(((NI) 4))) | ((NI) ((NI)(((NI) ((NI)(((NI) (((NU8)(c0)))) - ((NI) 65)))) + ((NI) 10)))));
	}
	break;
	default:
	{
		result0 = NIM_FALSE;
	}
	break;
	}
	return result0;
}

N_NIMCALL(NI, parseescapedutf16_e6kX9atmDSRFKBvyA9bJj1Ew)(NCSTRING buf0, NI* pos0) {
	NI result0;
{	result0 = (NI)0;
	result0 = ((NI) 0);
	{
		NI HEX5F_azqg9bTpBvrihRW6HQM1Byg;
		NI res_tQXBgON6L7FBaEpV7yc6ag;
		HEX5F_azqg9bTpBvrihRW6HQM1Byg = (NI)0;
		res_tQXBgON6L7FBaEpV7yc6ag = ((NI) 0);
		{
			while (1) {
				if (!(res_tQXBgON6L7FBaEpV7yc6ag <= ((NI) 3))) goto LA3;
				HEX5F_azqg9bTpBvrihRW6HQM1Byg = res_tQXBgON6L7FBaEpV7yc6ag;
				{
					NIM_BOOL LOC6;
					LOC6 = (NIM_BOOL)0;
					LOC6 = handlehexchar_B9aB9bYdlH7mQEQhG7ESFXbg(buf0[(*pos0)], (&result0));
					if (!LOC6) goto LA7;
					(*pos0) += ((NI) 1);
				}
				goto LA4;
				LA7: ;
				{
					result0 = ((NI) -1);
					goto BeforeRet;
				}
				LA4: ;
				res_tQXBgON6L7FBaEpV7yc6ag += ((NI) 1);
			} LA3: ;
		}
	}
	}BeforeRet: ;
	return result0;
}

static N_INLINE(void, appendChar)(NimStringDesc* dest0, NIM_CHAR c0) {
	(*dest0).data[((*dest0).Sup.len)- 0] = c0;
	(*dest0).data[((NI)((*dest0).Sup.len + ((NI) 1)))- 0] = 0;
	(*dest0).Sup.len += ((NI) 1);
}

static N_INLINE(NIM_BOOL, equalmem_DCrUjdaMvFDHaR1hs7sQGwropes)(void* a0, void* b0, NI size0) {
	NIM_BOOL result0;
	int LOC1;
	result0 = (NIM_BOOL)0;
	LOC1 = (int)0;
	LOC1 = memcmp(a0, b0, ((size_t) (size0)));
	result0 = (LOC1 == ((NI32) 0));
	return result0;
}

static N_INLINE(NIM_BOOL, eqStrings)(NimStringDesc* a0, NimStringDesc* b0) {
	NIM_BOOL result0;
	NIM_BOOL LOC11;
{	result0 = (NIM_BOOL)0;
	{
		if (!(a0 == b0)) goto LA3;
		result0 = NIM_TRUE;
		goto BeforeRet;
	}
	LA3: ;
	{
		NIM_BOOL LOC7;
		LOC7 = (NIM_BOOL)0;
		LOC7 = (a0 == NIM_NIL);
		if (LOC7) goto LA8;
		LOC7 = (b0 == NIM_NIL);
		LA8: ;
		if (!LOC7) goto LA9;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	LA9: ;
	LOC11 = (NIM_BOOL)0;
	LOC11 = ((*a0).Sup.len == (*b0).Sup.len);
	if (!(LOC11)) goto LA12;
	LOC11 = equalmem_DCrUjdaMvFDHaR1hs7sQGwropes(((void*) ((*a0).data)), ((void*) ((*b0).data)), ((NI) ((*a0).Sup.len)));
	LA12: ;
	result0 = LOC11;
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(Tokkind_vfEI6XZ7Xkb5BV9c6202vjA, parsestring_bhdBvXONA2D049cZWsITG7A_2)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0) {
	Tokkind_vfEI6XZ7Xkb5BV9c6202vjA result0;
	NI pos0;
	NCSTRING buf0;
	result0 = (Tokkind_vfEI6XZ7Xkb5BV9c6202vjA)0;
	result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 2);
	pos0 = (NI)((*my0).Sup.bufpos + ((NI) 1));
	buf0 = (*my0).Sup.buf;
	{
		while (1) {
			switch (((NU8)(buf0[pos0]))) {
			case 0:
			{
				(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 7);
				result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 0);
				goto LA1;
			}
			break;
			case 34:
			{
				pos0 += ((NI) 1);
				goto LA1;
			}
			break;
			case 92:
			{
				switch (((NU8)(buf0[(NI)(pos0 + ((NI) 1))]))) {
				case 92:
				case 34:
				case 39:
				case 47:
				{
					(*my0).a = addChar((*my0).a, buf0[(NI)(pos0 + ((NI) 1))]);
					pos0 += ((NI) 2);
				}
				break;
				case 98:
				{
					(*my0).a = addChar((*my0).a, 8);
					pos0 += ((NI) 2);
				}
				break;
				case 102:
				{
					(*my0).a = addChar((*my0).a, 12);
					pos0 += ((NI) 2);
				}
				break;
				case 110:
				{
					(*my0).a = addChar((*my0).a, 10);
					pos0 += ((NI) 2);
				}
				break;
				case 114:
				{
					(*my0).a = addChar((*my0).a, 13);
					pos0 += ((NI) 2);
				}
				break;
				case 116:
				{
					(*my0).a = addChar((*my0).a, 9);
					pos0 += ((NI) 2);
				}
				break;
				case 117:
				{
					NI r0;
					NimStringDesc* LOC33;
					pos0 += ((NI) 2);
					r0 = parseescapedutf16_e6kX9atmDSRFKBvyA9bJj1Ew(buf0, (&pos0));
					{
						if (!(r0 < ((NI) 0))) goto LA15;
						(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 1);
						goto LA1;
					}
					LA15: ;
					{
						NI s0;
						if (!((NI)(r0 & ((NI) 64512)) == ((NI) 55296))) goto LA19;
						{
							NimStringDesc* LOC23;
							LOC23 = (NimStringDesc*)0;
							LOC23 = rawNewString(2);
appendChar(LOC23, buf0[pos0]);
appendChar(LOC23, buf0[(NI)(pos0 + ((NI) 1))]);
							if (!!(eqStrings(LOC23, ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_21)))) goto LA24;
							(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 1);
							goto LA1;
						}
						LA24: ;
						pos0 += ((NI) 2);
						s0 = parseescapedutf16_e6kX9atmDSRFKBvyA9bJj1Ew(buf0, (&pos0));
						{
							NIM_BOOL LOC28;
							LOC28 = (NIM_BOOL)0;
							LOC28 = ((NI)(s0 & ((NI) 64512)) == ((NI) 56320));
							if (!(LOC28)) goto LA29;
							LOC28 = (((NI) 0) < s0);
							LA29: ;
							if (!LOC28) goto LA30;
							r0 = (NI)(((NI) 65536) + (NI)((NI)((NU32)((NI)(r0 - ((NI) 55296))) << (NU32)(((NI) 10))) | (NI)(s0 - ((NI) 56320))));
						}
						goto LA26;
						LA30: ;
						{
							(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 1);
							goto LA1;
						}
						LA26: ;
					}
					LA19: ;
					LOC33 = (NimStringDesc*)0;
					LOC33 = nuctoUTF8(((NI32) (r0)));
					(*my0).a = resizeString((*my0).a, LOC33->Sup.len + 0);
appendString((*my0).a, LOC33);
				}
				break;
				default:
				{
					(*my0).a = addChar((*my0).a, buf0[pos0]);
					pos0 += ((NI) 1);
				}
				break;
				}
			}
			break;
			case 13:
			{
				Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC36;
				LOC36 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
				LOC36 = &my0->Sup;
				pos0 = handlecr_IwUEvMBOLRY9cqyar6XKEaw(LOC36, pos0);
				buf0 = (*my0).Sup.buf;
				(*my0).a = addChar((*my0).a, 13);
			}
			break;
			case 10:
			{
				Baselexer_B6cGbTPhMsqMovc9cOcIHRw* LOC38;
				LOC38 = (Baselexer_B6cGbTPhMsqMovc9cOcIHRw*)0;
				LOC38 = &my0->Sup;
				pos0 = handlelf_IwUEvMBOLRY9cqyar6XKEaw_3(LOC38, pos0);
				buf0 = (*my0).Sup.buf;
				(*my0).a = addChar((*my0).a, 10);
			}
			break;
			default:
			{
				(*my0).a = addChar((*my0).a, buf0[pos0]);
				pos0 += ((NI) 1);
			}
			break;
			}
		}
	} LA1: ;
	(*my0).Sup.bufpos = pos0;
	return result0;
}

N_NIMCALL(void, parsename_JYjE8i409cEC8b5C0sqMO7A_2)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0) {
	NI pos0;
	NCSTRING buf0;
	pos0 = (*my0).Sup.bufpos;
	buf0 = (*my0).Sup.buf;
	{
		if (!(((NU8)(buf0[pos0])) >= ((NU8)(97)) && ((NU8)(buf0[pos0])) <= ((NU8)(122)) || ((NU8)(buf0[pos0])) >= ((NU8)(65)) && ((NU8)(buf0[pos0])) <= ((NU8)(90)) || ((NU8)(buf0[pos0])) == ((NU8)(95)))) goto LA3;
		{
			while (1) {
				if (!(((NU8)(buf0[pos0])) >= ((NU8)(97)) && ((NU8)(buf0[pos0])) <= ((NU8)(122)) || ((NU8)(buf0[pos0])) >= ((NU8)(65)) && ((NU8)(buf0[pos0])) <= ((NU8)(90)) || ((NU8)(buf0[pos0])) >= ((NU8)(48)) && ((NU8)(buf0[pos0])) <= ((NU8)(57)) || ((NU8)(buf0[pos0])) == ((NU8)(95)))) goto LA6;
				(*my0).a = addChar((*my0).a, buf0[pos0]);
				pos0 += ((NI) 1);
			} LA6: ;
		}
	}
	LA3: ;
	(*my0).Sup.bufpos = pos0;
}

N_NIMCALL(Tokkind_vfEI6XZ7Xkb5BV9c6202vjA, gettok_bhdBvXONA2D049cZWsITG7A)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0) {
	Tokkind_vfEI6XZ7Xkb5BV9c6202vjA result0;
	result0 = (Tokkind_vfEI6XZ7Xkb5BV9c6202vjA)0;
	(*my0).a = setLengthStr((*my0).a, ((NI) 0));
	skip_3S9b9cVNhGg79bsA5hP4JMAbA_2(my0);
	switch (((NU8)((*my0).Sup.buf[(*my0).Sup.bufpos]))) {
	case 45:
	case 46:
	case 48 ... 57:
	{
		parsenumber_JYjE8i409cEC8b5C0sqMO7A(my0);
		{
			NIM_BOOL LOC4;
			LOC4 = (NIM_BOOL)0;
			LOC4 = contains_m1TSS3QwQPclQATuiRuVZg((*my0).a, T_9b9bytt1stv9cZ8uqII7HFgew_20);
			if (!LOC4) goto LA5;
			result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 4);
		}
		goto LA2;
		LA5: ;
		{
			result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 3);
		}
		LA2: ;
	}
	break;
	case 34:
	{
		result0 = parsestring_bhdBvXONA2D049cZWsITG7A_2(my0);
	}
	break;
	case 91:
	{
		(*my0).Sup.bufpos += ((NI) 1);
		result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 10);
	}
	break;
	case 123:
	{
		(*my0).Sup.bufpos += ((NI) 1);
		result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 8);
	}
	break;
	case 93:
	{
		(*my0).Sup.bufpos += ((NI) 1);
		result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 11);
	}
	break;
	case 125:
	{
		(*my0).Sup.bufpos += ((NI) 1);
		result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 9);
	}
	break;
	case 44:
	{
		(*my0).Sup.bufpos += ((NI) 1);
		result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 13);
	}
	break;
	case 58:
	{
		(*my0).Sup.bufpos += ((NI) 1);
		result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 12);
	}
	break;
	case 0:
	{
		result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 1);
	}
	break;
	case 97 ... 122:
	case 65 ... 90:
	case 95:
	{
		parsename_JYjE8i409cEC8b5C0sqMO7A_2(my0);
		if (eqStrings((*my0).a, ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_22))) goto LA17;
		if (eqStrings((*my0).a, ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_23))) goto LA18;
		if (eqStrings((*my0).a, ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_24))) goto LA19;
		goto LA20;
		LA17: ;
		{
			result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 7);
		}
		goto LA21;
		LA18: ;
		{
			result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 5);
		}
		goto LA21;
		LA19: ;
		{
			result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 6);
		}
		goto LA21;
		LA20: ;
		{
			result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 0);
		}
		LA21: ;
	}
	break;
	default:
	{
		(*my0).Sup.bufpos += ((NI) 1);
		result0 = ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 0);
	}
	break;
	}
	(*my0).tok = result0;
	return result0;
}

static N_INLINE(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ, pop_VO9bSHcr4zrlIDTyWGxsSgwjson)(TY_ArNCLAPkQjwz7DrguhEHNA** s0) {
	Parserstate_UzfeQnJimUtC9bt1BjDzcdQ result0;
	NI L0;
	result0 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
	L0 = (NI)(((*s0) ? (*s0)->Sup.len : 0) - ((NI) 1));
	result0 = (*s0)->data[L0];
	(*s0) = (TY_ArNCLAPkQjwz7DrguhEHNA*) setLengthSeq(&((*s0))->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ), ((NI) (L0)));
	return result0;
}

N_NIMCALL(void, next_3S9b9cVNhGg79bsA5hP4JMAbA)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0) {
	Tokkind_vfEI6XZ7Xkb5BV9c6202vjA tk0;
	NI i0;
	tk0 = gettok_bhdBvXONA2D049cZWsITG7A(my0);
	i0 = (NI)(((*my0).state ? (*my0).state->Sup.len : 0) - ((NI) 1));
	switch ((*my0).state->data[i0]) {
	case ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 0):
	{
		{
			if (!(tk0 == ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 1))) goto LA4;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 1);
		}
		goto LA2;
		LA4: ;
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
			(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 9);
		}
		LA2: ;
	}
	break;
	case ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 1):
	{
		switch (tk0) {
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 2):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 3):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 4):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 5):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 6):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 7):
		{
			(*my0).state->data[i0] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 0);
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) (tk0));
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 10):
		{
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 3);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 10);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 8):
		{
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 2);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 8);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 1):
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 1);
		}
		break;
		default:
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
			(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 9);
		}
		break;
		}
	}
	break;
	case ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 2):
	{
		switch (tk0) {
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 2):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 3):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 4):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 5):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 6):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 7):
		{
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 6);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) (tk0));
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 10):
		{
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 6);
			++(*my0).state->Sup.len;
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 3);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 10);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 8):
		{
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 6);
			++(*my0).state->Sup.len;
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 2);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 8);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 9):
		{
			Parserstate_UzfeQnJimUtC9bt1BjDzcdQ LOC18;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 9);
			LOC18 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
			LOC18 = pop_VO9bSHcr4zrlIDTyWGxsSgwjson((&(*my0).state));
		}
		break;
		default:
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
			(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 6);
		}
		break;
		}
	}
	break;
	case ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 3):
	{
		switch (tk0) {
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 2):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 3):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 4):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 5):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 6):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 7):
		{
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 4);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) (tk0));
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 10):
		{
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 4);
			++(*my0).state->Sup.len;
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 3);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 10);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 8):
		{
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 4);
			++(*my0).state->Sup.len;
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 2);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 8);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 11):
		{
			Parserstate_UzfeQnJimUtC9bt1BjDzcdQ LOC25;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 11);
			LOC25 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
			LOC25 = pop_VO9bSHcr4zrlIDTyWGxsSgwjson((&(*my0).state));
		}
		break;
		default:
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
			(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 5);
		}
		break;
		}
	}
	break;
	case ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 4):
	{
		switch (tk0) {
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 13):
		{
			Parserstate_UzfeQnJimUtC9bt1BjDzcdQ LOC29;
			LOC29 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
			LOC29 = pop_VO9bSHcr4zrlIDTyWGxsSgwjson((&(*my0).state));
			next_3S9b9cVNhGg79bsA5hP4JMAbA(my0);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 11):
		{
			Parserstate_UzfeQnJimUtC9bt1BjDzcdQ LOC31;
			Parserstate_UzfeQnJimUtC9bt1BjDzcdQ LOC32;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 11);
			LOC31 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
			LOC31 = pop_VO9bSHcr4zrlIDTyWGxsSgwjson((&(*my0).state));
			LOC32 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
			LOC32 = pop_VO9bSHcr4zrlIDTyWGxsSgwjson((&(*my0).state));
		}
		break;
		default:
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
			(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 5);
		}
		break;
		}
	}
	break;
	case ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 5):
	{
		switch (tk0) {
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 13):
		{
			Parserstate_UzfeQnJimUtC9bt1BjDzcdQ LOC36;
			LOC36 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
			LOC36 = pop_VO9bSHcr4zrlIDTyWGxsSgwjson((&(*my0).state));
			next_3S9b9cVNhGg79bsA5hP4JMAbA(my0);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 9):
		{
			Parserstate_UzfeQnJimUtC9bt1BjDzcdQ LOC38;
			Parserstate_UzfeQnJimUtC9bt1BjDzcdQ LOC39;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 9);
			LOC38 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
			LOC38 = pop_VO9bSHcr4zrlIDTyWGxsSgwjson((&(*my0).state));
			LOC39 = (Parserstate_UzfeQnJimUtC9bt1BjDzcdQ)0;
			LOC39 = pop_VO9bSHcr4zrlIDTyWGxsSgwjson((&(*my0).state));
		}
		break;
		default:
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
			(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 6);
		}
		break;
		}
	}
	break;
	case ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 6):
	{
		switch (tk0) {
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 12):
		{
			(*my0).state->data[i0] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 7);
			next_3S9b9cVNhGg79bsA5hP4JMAbA(my0);
		}
		break;
		default:
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
			(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 3);
		}
		break;
		}
	}
	break;
	case ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 7):
	{
		switch (tk0) {
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 2):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 3):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 4):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 5):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 6):
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 7):
		{
			(*my0).state->data[i0] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 5);
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) (tk0));
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 10):
		{
			(*my0).state->data[i0] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 5);
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 3);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 10);
		}
		break;
		case ((Tokkind_vfEI6XZ7Xkb5BV9c6202vjA) 8):
		{
			(*my0).state->data[i0] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 5);
			(*my0).state = (TY_ArNCLAPkQjwz7DrguhEHNA*) incrSeqV2(&((*my0).state)->Sup, sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ));
			(*my0).state->data[(*my0).state->Sup.len] = ((Parserstate_UzfeQnJimUtC9bt1BjDzcdQ) 2);
			++(*my0).state->Sup.len;
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 8);
		}
		break;
		default:
		{
			(*my0).kind = ((Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ) 0);
			(*my0).err = ((Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ) 10);
		}
		break;
		}
	}
	break;
	}
}
static N_NIMCALL(void, Marker_TY_TOl9bBVGahlQmjZBc3UGISg)(void* p, NI op) {
	Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw* a;
	a = (Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw*)p;
	nimGCvisit((void*)(*a).Sup.Sup.parent, op);
	nimGCvisit((void*)(*a).Sup.Sup.message, op);
	nimGCvisit((void*)(*a).Sup.Sup.trace, op);
}

static N_INLINE(NI, getline_P0hkpPjGtCF4FNZ6q9atEnAjson)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0) {
	NI result0;
	result0 = (NI)0;
	result0 = (*my0).Sup.linenumber;
	return result0;
}

static N_INLINE(NI, getcolumn_P0hkpPjGtCF4FNZ6q9atEnA_2json)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0) {
	NI result0;
	result0 = (NI)0;
	result0 = getcolnumber_9cj186ckGjLqyndkoW7bBdg((&(*my0).Sup), (*my0).Sup.bufpos);
	return result0;
}

N_NIMCALL(NimStringDesc*, errormsgexpected_JX5zi2U38bL44QMaeRJjvQ)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* my0, NimStringDesc* e0) {
	NimStringDesc* result0;
	TY_sMpvt1sOxOJ3LFGulnbeMQ LOC1;
	NI LOC2;
	NI LOC3;
	NimStringDesc* LOC4;
	result0 = (NimStringDesc*)0;
	memset((void*)LOC1, 0, sizeof(LOC1));
	LOC1[0] = copyString((*my0).filename);
	LOC2 = (NI)0;
	LOC2 = getline_P0hkpPjGtCF4FNZ6q9atEnAjson(my0);
	LOC1[1] = nimIntToStr(LOC2);
	LOC3 = (NI)0;
	LOC3 = getcolumn_P0hkpPjGtCF4FNZ6q9atEnA_2json(my0);
	LOC1[2] = nimIntToStr(LOC3);
	LOC4 = (NimStringDesc*)0;
	LOC4 = rawNewString(e0->Sup.len + 9);
appendString(LOC4, e0);
appendString(LOC4, ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_26));
	LOC1[3] = LOC4;
	result0 = nsuFormatOpenArray(((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_25), LOC1, 4);
	return result0;
}

static N_INLINE(Cell_1zcF9cV8XIAtbN8h5HRUB8g*, usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem)(void* usr0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* result0;
	result0 = (Cell_1zcF9cV8XIAtbN8h5HRUB8g*)0;
	result0 = ((Cell_1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU32)(((NI) (usr0))) - (NU32)(((NI)sizeof(Cell_1zcF9cV8XIAtbN8h5HRUB8g))))));
	return result0;
}

static N_INLINE(void, rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system)(Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0) {
	addzct_fCDI7oO1NNVXXURtxSzsRw((&gch_IcYaEuuWivYAS86vFMTS3Q.zct), c0);
}

static N_INLINE(void, asgnRefNoCycle)(void** dest0, void* src0) {
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
		if (!!((src0 == NIM_NIL))) goto LA3;
		c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(src0);
		(*c0).refcount += ((NI) 8);
	}
	LA3: ;
	{
		Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
		if (!!(((*dest0) == NIM_NIL))) goto LA7;
		c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem((*dest0));
		{
			(*c0).refcount -= ((NI) 8);
			if (!((NU32)((*c0).refcount) < (NU32)(((NI) 8)))) goto LA11;
			rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system(c0);
		}
		LA11: ;
	}
	LA7: ;
	(*dest0) = src0;
}

N_NOINLINE(void, raiseparseerr_4afCLEB5DzcwYAdDumDqYQ)(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ* p0, NimStringDesc* msg0) {
	Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw* e_9c379ctWEtw9ai3iID5f9cjQmg;
	e_9c379ctWEtw9ai3iID5f9cjQmg = (Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw*)0;
	e_9c379ctWEtw9ai3iID5f9cjQmg = (Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw*) newObj((&NTI_TOl9bBVGahlQmjZBc3UGISg), sizeof(Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw));
	(*e_9c379ctWEtw9ai3iID5f9cjQmg).Sup.Sup.Sup.m_type = (&NTI_4avqtqpbmyD9bxH9bUmO9b0yw);
	asgnRefNoCycle((void**) (&(*e_9c379ctWEtw9ai3iID5f9cjQmg).Sup.Sup.message), errormsgexpected_JX5zi2U38bL44QMaeRJjvQ(p0, msg0));
	raiseException((Exception*)e_9c379ctWEtw9ai3iID5f9cjQmg, "JsonParsingError");
}

N_NIMCALL(void, escapejson_xxovtptDIL7ctJosN3ocbA)(NimStringDesc* s0, NimStringDesc** result0) {
	(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_27));
	{
		NI32 x_mVNrmtnwn1H6j9acDwXv03w;
		NI i_hZ2MLhguyDisOi0Ievi5oQ;
		NI32 result_IKfN6D1XyC573YEmGublkg;
		x_mVNrmtnwn1H6j9acDwXv03w = (NI32)0;
		i_hZ2MLhguyDisOi0Ievi5oQ = ((NI) 0);
		result_IKfN6D1XyC573YEmGublkg = (NI32)0;
		{
			while (1) {
				NI r0;
				if (!(i_hZ2MLhguyDisOi0Ievi5oQ < (s0 ? s0->Sup.len : 0))) goto LA3;
				{
					if (!((NU32)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ]))))) <= (NU32)(((NI) 127)))) goto LA6;
					result_IKfN6D1XyC573YEmGublkg = ((NI32) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ]))));
					i_hZ2MLhguyDisOi0Ievi5oQ += ((NI) 1);
				}
				goto LA4;
				LA6: ;
				{
					if (!((NI)((NU32)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ]))))) >> (NU32)(((NI) 5))) == ((NI) 6))) goto LA9;
					result_IKfN6D1XyC573YEmGublkg = ((NI32) ((NI)((NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ])))) & ((NI) 31))))) << (NU32)(((NI) 6))) | ((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 1))])))) & ((NI) 63)))))));
					i_hZ2MLhguyDisOi0Ievi5oQ += ((NI) 2);
				}
				goto LA4;
				LA9: ;
				{
					if (!((NI)((NU32)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ]))))) >> (NU32)(((NI) 4))) == ((NI) 14))) goto LA12;
					result_IKfN6D1XyC573YEmGublkg = ((NI32) ((NI)((NI)((NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ])))) & ((NI) 15))))) << (NU32)(((NI) 12))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 1))])))) & ((NI) 63))))) << (NU32)(((NI) 6)))) | ((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 2))])))) & ((NI) 63)))))));
					i_hZ2MLhguyDisOi0Ievi5oQ += ((NI) 3);
				}
				goto LA4;
				LA12: ;
				{
					if (!((NI)((NU32)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ]))))) >> (NU32)(((NI) 3))) == ((NI) 30))) goto LA15;
					result_IKfN6D1XyC573YEmGublkg = ((NI32) ((NI)((NI)((NI)((NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ])))) & ((NI) 7))))) << (NU32)(((NI) 18))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 1))])))) & ((NI) 63))))) << (NU32)(((NI) 12)))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 2))])))) & ((NI) 63))))) << (NU32)(((NI) 6)))) | ((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 3))])))) & ((NI) 63)))))));
					i_hZ2MLhguyDisOi0Ievi5oQ += ((NI) 4);
				}
				goto LA4;
				LA15: ;
				{
					if (!((NI)((NU32)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ]))))) >> (NU32)(((NI) 2))) == ((NI) 62))) goto LA18;
					result_IKfN6D1XyC573YEmGublkg = ((NI32) ((NI)((NI)((NI)((NI)((NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ])))) & ((NI) 3))))) << (NU32)(((NI) 24))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 1))])))) & ((NI) 63))))) << (NU32)(((NI) 18)))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 2))])))) & ((NI) 63))))) << (NU32)(((NI) 12)))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 3))])))) & ((NI) 63))))) << (NU32)(((NI) 6)))) | ((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 4))])))) & ((NI) 63)))))));
					i_hZ2MLhguyDisOi0Ievi5oQ += ((NI) 5);
				}
				goto LA4;
				LA18: ;
				{
					if (!((NI)((NU32)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ]))))) >> (NU32)(((NI) 1))) == ((NI) 126))) goto LA21;
					result_IKfN6D1XyC573YEmGublkg = ((NI32) ((NI)((NI)((NI)((NI)((NI)((NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ])))) & ((NI) 1))))) << (NU32)(((NI) 30))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 1))])))) & ((NI) 63))))) << (NU32)(((NI) 24)))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 2))])))) & ((NI) 63))))) << (NU32)(((NI) 18)))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 3))])))) & ((NI) 63))))) << (NU32)(((NI) 12)))) | (NI)((NU32)(((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 4))])))) & ((NI) 63))))) << (NU32)(((NI) 6)))) | ((NI) ((NI)(((NI) (((NU8)(s0->data[(NI)(i_hZ2MLhguyDisOi0Ievi5oQ + ((NI) 5))])))) & ((NI) 63)))))));
					i_hZ2MLhguyDisOi0Ievi5oQ += ((NI) 6);
				}
				goto LA4;
				LA21: ;
				{
					result_IKfN6D1XyC573YEmGublkg = ((NI32) (((NU8)(s0->data[i_hZ2MLhguyDisOi0Ievi5oQ]))));
					i_hZ2MLhguyDisOi0Ievi5oQ += ((NI) 1);
				}
				LA4: ;
				x_mVNrmtnwn1H6j9acDwXv03w = result_IKfN6D1XyC573YEmGublkg;
				r0 = ((NI) (x_mVNrmtnwn1H6j9acDwXv03w));
				{
					NIM_BOOL LOC26;
					NIM_CHAR c0;
					LOC26 = (NIM_BOOL)0;
					LOC26 = (((NI) 32) <= r0);
					if (!(LOC26)) goto LA27;
					LOC26 = (r0 <= ((NI) 127));
					LA27: ;
					if (!LOC26) goto LA28;
					c0 = ((NIM_CHAR) (((NI) (r0))));
					switch (((NU8)(c0))) {
					case 34:
					{
						(*result0) = resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_28));
					}
					break;
					case 92:
					{
						(*result0) = resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_29));
					}
					break;
					default:
					{
						(*result0) = addChar((*result0), c0);
					}
					break;
					}
				}
				goto LA24;
				LA28: ;
				{
					NI start0;
					(*result0) = resizeString((*result0), 6);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_30));
					start0 = (NI)(((*result0) ? (*result0)->Sup.len : 0) - ((NI) 4));
					{
						NI j_dONqB3IuaQjYJbqYVMYypA;
						NI res_UsiepN9cABSrGRA8xEp1cXA;
						j_dONqB3IuaQjYJbqYVMYypA = (NI)0;
						res_UsiepN9cABSrGRA8xEp1cXA = ((NI) 3);
						{
							while (1) {
								if (!(((NI) 0) <= res_UsiepN9cABSrGRA8xEp1cXA)) goto LA36;
								j_dONqB3IuaQjYJbqYVMYypA = res_UsiepN9cABSrGRA8xEp1cXA;
								(*result0)->data[(NI)(j_dONqB3IuaQjYJbqYVMYypA + start0)] = ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_31)->data[(NI)(r0 & ((NI) 15))];
								r0 = (NI)((NU32)(r0) >> (NU32)(((NI) 4)));
								res_UsiepN9cABSrGRA8xEp1cXA -= ((NI) 1);
							} LA36: ;
						}
					}
				}
				LA24: ;
			} LA3: ;
		}
	}
	(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_27));
}

N_NIMCALL(NimStringDesc*, escapejson_ajHNbHGhsNVy1pVSYP9cEyA)(NimStringDesc* s0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = rawNewString(((NI) ((NI)((s0 ? s0->Sup.len : 0) + (NI)((NU32)((s0 ? s0->Sup.len : 0)) >> (NU32)(((NI) 3)))))));
	escapejson_xxovtptDIL7ctJosN3ocbA(s0, (&result0));
	return result0;
}
static N_NIMCALL(void, Marker_TY_oLpBKXzW3hF9aCVMo5EymfQ)(void* p, NI op) {
	TY_oLpBKXzW3hF9aCVMo5EymfQ* a;
	NI LOC1;
	a = (TY_oLpBKXzW3hF9aCVMo5EymfQ*)p;
	LOC1 = (NI)0;
	for (LOC1 = 0; LOC1 < a->Sup.len; LOC1++) {
	nimGCvisit((void*)a->data[LOC1], op);
	}
}
static N_NIMCALL(void, Marker_TY_zfzzuQ8txrdZAYK0WGWpHg)(void* p, NI op) {
	Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* a;
	a = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)p;
	switch ((*a).kind) {
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 4):
	nimGCvisit((void*)(*a).kindU.S1.str, op);
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 2):
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 3):
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 1):
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 0):
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 5):
	nimGCvisit((void*)(*a).kindU.S6.fields.data, op);
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 6):
	nimGCvisit((void*)(*a).kindU.S7.elems, op);
	break;
	} 
}

static N_INLINE(void, nimGCunrefNoCycle)(void* p0) {
	Cell_1zcF9cV8XIAtbN8h5HRUB8g* c0;
	c0 = usrtocell_yB9aH5WIlwd0xkYrcdPeXrQsystem(p0);
	{
		(*c0).refcount -= ((NI) 8);
		if (!((NU32)((*c0).refcount) < (NU32)(((NI) 8)))) goto LA3;
		rtladdzct_MV4BBk6J1qu70IbBxwEn4w_2system(c0);
	}
	LA3: ;
}

N_NIMCALL(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*, newjarray_phgxr9cKlc0dmrJpCth52pw)(void) {
	Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* result0;
	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*) newObj((&NTI_zfzzuQ8txrdZAYK0WGWpHg), sizeof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q));
	(*result0).kind = ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 6);
	if ((*result0).kindU.S7.elems) nimGCunrefNoCycle((*result0).kindU.S7.elems);
	(*result0).kindU.S7.elems = (TY_oLpBKXzW3hF9aCVMo5EymfQ*) newSeqRC1((&NTI_oLpBKXzW3hF9aCVMo5EymfQ), 0);
	return result0;
}

static N_INLINE(NI, len_a0ORwcHIaewozuGDsc9b3TAjson)(Orderedtable_AF39bJ7XDr6gpANuGpxkHrw t0) {
	NI result0;
	result0 = (NI)0;
	result0 = t0.counter;
	return result0;
}

static N_INLINE(NIM_BOOL, isfilled_IxXD1UAPoEehVDW9cv9cRaewtables)(NI hcode0) {
	NIM_BOOL result0;
	result0 = (NIM_BOOL)0;
	result0 = !((hcode0 == ((NI) 0)));
	return result0;
}

N_NIMCALL(NIM_BOOL, HEX3DHEX3D_Ujpjfumo30l2ielPaquw0Q)(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* a0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* b0) {
	NIM_BOOL result0;
{	result0 = (NIM_BOOL)0;
	{
		if (!(a0 == 0)) goto LA3;
		{
			if (!(b0 == 0)) goto LA7;
			result0 = NIM_TRUE;
			goto BeforeRet;
		}
		LA7: ;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		NIM_BOOL LOC10;
		LOC10 = (NIM_BOOL)0;
		LOC10 = (b0 == 0);
		if (LOC10) goto LA11;
		LOC10 = !(((*a0).kind == (*b0).kind));
		LA11: ;
		if (!LOC10) goto LA12;
		result0 = NIM_FALSE;
		goto BeforeRet;
	}
	goto LA1;
	LA12: ;
	{
		switch ((*a0).kind) {
		case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 4):
		{
			result0 = eqStrings((*a0).kindU.S1.str, (*b0).kindU.S1.str);
		}
		break;
		case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 2):
		{
			result0 = ((*a0).kindU.S2.num == (*b0).kindU.S2.num);
		}
		break;
		case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 3):
		{
			result0 = ((*a0).kindU.S3.fnum == (*b0).kindU.S3.fnum);
		}
		break;
		case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 1):
		{
			result0 = ((*a0).kindU.S4.bval == (*b0).kindU.S4.bval);
		}
		break;
		case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 0):
		{
			result0 = NIM_TRUE;
		}
		break;
		case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 6):
		{
			result0 = HEX3DHEX3D_fL0tq3d6JfMw9bvY7G6spBQ((*a0).kindU.S7.elems, (*b0).kindU.S7.elems);
		}
		break;
		case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 5):
		{
			{
				NI LOC24;
				NI LOC25;
				LOC24 = (NI)0;
				LOC24 = len_a0ORwcHIaewozuGDsc9b3TAjson((*a0).kindU.S6.fields);
				LOC25 = (NI)0;
				LOC25 = len_a0ORwcHIaewozuGDsc9b3TAjson((*b0).kindU.S6.fields);
				if (!!((LOC24 == LOC25))) goto LA26;
				result0 = NIM_FALSE;
				goto BeforeRet;
			}
			LA26: ;
			{
				NimStringDesc* key_Rm3CP9argdODPJflwESwyLg;
				Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* val_9b8O9cJ8e9cKgwy2FJ9cIL5HAQ;
				Orderedtable_AF39bJ7XDr6gpANuGpxkHrw HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w;
				NI h_9c7guvTTFtLOQHE7ycdT9aTA;
				key_Rm3CP9argdODPJflwESwyLg = (NimStringDesc*)0;
				val_9b8O9cJ8e9cKgwy2FJ9cIL5HAQ = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
				memset((void*)(&HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w), 0, sizeof(HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w));
				HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.data = (*a0).kindU.S6.fields.data;
				HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.counter = (*a0).kindU.S6.fields.counter;
				HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.first = (*a0).kindU.S6.fields.first;
				HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.last = (*a0).kindU.S6.fields.last;
				h_9c7guvTTFtLOQHE7ycdT9aTA = HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.first;
				{
					while (1) {
						NI nxt_lV6DJ9cKxCEfnfHiwIlFDug;
						if (!(((NI) 0) <= h_9c7guvTTFtLOQHE7ycdT9aTA)) goto LA30;
						nxt_lV6DJ9cKxCEfnfHiwIlFDug = HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.data->data[h_9c7guvTTFtLOQHE7ycdT9aTA].Field1;
						{
							NIM_BOOL LOC33;
							LOC33 = (NIM_BOOL)0;
							LOC33 = isfilled_IxXD1UAPoEehVDW9cv9cRaewtables(HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.data->data[h_9c7guvTTFtLOQHE7ycdT9aTA].Field0);
							if (!LOC33) goto LA34;
							key_Rm3CP9argdODPJflwESwyLg = HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.data->data[h_9c7guvTTFtLOQHE7ycdT9aTA].Field2;
							val_9b8O9cJ8e9cKgwy2FJ9cIL5HAQ = HEX3Atmp_MbP5MwgRUbOdz449aGTCc2w.data->data[h_9c7guvTTFtLOQHE7ycdT9aTA].Field3;
							{
								NIM_BOOL LOC38;
								LOC38 = (NIM_BOOL)0;
								LOC38 = haskey_6zZzy9aTG3euSh9bJ9bh9aFOqA((*b0).kindU.S6.fields, key_Rm3CP9argdODPJflwESwyLg);
								if (!!(LOC38)) goto LA39;
								result0 = NIM_FALSE;
								goto BeforeRet;
							}
							LA39: ;
							{
								Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q** LOC43;
								NIM_BOOL LOC44;
								LOC43 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q**)0;
								LOC43 = HEX5BHEX5D_9bcSZUFhwESDEYXhkxOm8Hg((&(*b0).kindU.S6.fields), key_Rm3CP9argdODPJflwESwyLg);
								LOC44 = (NIM_BOOL)0;
								LOC44 = HEX3DHEX3D_Ujpjfumo30l2ielPaquw0Q((*LOC43), val_9b8O9cJ8e9cKgwy2FJ9cIL5HAQ);
								if (!!(LOC44)) goto LA45;
								result0 = NIM_FALSE;
								goto BeforeRet;
							}
							LA45: ;
						}
						LA34: ;
						h_9c7guvTTFtLOQHE7ycdT9aTA = nxt_lV6DJ9cKxCEfnfHiwIlFDug;
					} LA30: ;
				}
			}
			result0 = NIM_TRUE;
		}
		break;
		}
	}
	LA1: ;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, add_NE4BWkXVxUMFtDmmA5ZcHw)(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* father0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* child0) {
	(*father0).kindU.S7.elems = (TY_oLpBKXzW3hF9aCVMo5EymfQ*) incrSeqV2(&((*father0).kindU.S7.elems)->Sup, sizeof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*));
	asgnRefNoCycle((void**) (&(*father0).kindU.S7.elems->data[(*father0).kindU.S7.elems->Sup.len]), child0);
	++(*father0).kindU.S7.elems->Sup.len;
}

N_NIMCALL(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*, newjobject_phgxr9cKlc0dmrJpCth52pw_2)(void) {
	Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* result0;
	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*) newObj((&NTI_zfzzuQ8txrdZAYK0WGWpHg), sizeof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q));
	(*result0).kind = ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 5);
	initorderedtable_PHRF9cHqhXGiWC9cIiRW9bTWw(((NI) 4), (&(*result0).kindU.S6.fields));
	return result0;
}

N_NIMCALL(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*, HEX25_9bR9b9aepApwIZEZZtX9cb7RFA)(TY_jq7X5k7hWG0tdTZTDkiyGQ* keyvals0, NI keyvals0Len0) {
	Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* result0;
{	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
	{
		if (!(keyvals0Len0 == ((NI) 0))) goto LA3;
		result0 = newjarray_phgxr9cKlc0dmrJpCth52pw();
		goto BeforeRet;
	}
	LA3: ;
	result0 = newjobject_phgxr9cKlc0dmrJpCth52pw_2();
	{
		NimStringDesc* key_PgNoS6TiKmpO9blMi7lmxsg;
		Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* val_VN1eZZjdrIg3jFtlLZbYDA;
		NI i_fnRWdx2hG0tEFAXGf78JtA;
		key_PgNoS6TiKmpO9blMi7lmxsg = (NimStringDesc*)0;
		val_VN1eZZjdrIg3jFtlLZbYDA = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
		i_fnRWdx2hG0tEFAXGf78JtA = ((NI) 0);
		{
			while (1) {
				if (!(i_fnRWdx2hG0tEFAXGf78JtA < keyvals0Len0)) goto LA7;
				key_PgNoS6TiKmpO9blMi7lmxsg = keyvals0[i_fnRWdx2hG0tEFAXGf78JtA].Field0;
				val_VN1eZZjdrIg3jFtlLZbYDA = keyvals0[i_fnRWdx2hG0tEFAXGf78JtA].Field1;
				HEX5BHEX5DHEX3D_9bwm9c9bGAcoIGLjRndWCPT3Q((&(*result0).kindU.S6.fields), key_PgNoS6TiKmpO9blMi7lmxsg, val_VN1eZZjdrIg3jFtlLZbYDA);
				i_fnRWdx2hG0tEFAXGf78JtA += ((NI) 1);
			} LA7: ;
		}
	}
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*, HEX25_8iXO9aRAijCPe58pujCBbuQ)(NimStringDesc* s0) {
	Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* result0;
	NimStringDesc* LOC5;
{	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*) newObj((&NTI_zfzzuQ8txrdZAYK0WGWpHg), sizeof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q));
	{
		if (!(s0 == 0)) goto LA3;
		goto BeforeRet;
	}
	LA3: ;
	(*result0).kind = ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 4);
	LOC5 = (NimStringDesc*)0;
	LOC5 = (*result0).kindU.S1.str; (*result0).kindU.S1.str = copyStringRC1(s0);
	if (LOC5) nimGCunrefNoCycle(LOC5);
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*, HEX25_z0g83xvrx4R10lOvgItZ9aQ)(NI64 n0) {
	Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* result0;
	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
	result0 = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*) newObj((&NTI_zfzzuQ8txrdZAYK0WGWpHg), sizeof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q));
	(*result0).kind = ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 2);
	(*result0).kindU.S2.num = n0;
	return result0;
}

N_NIMCALL(NI, len_1r8KCEmq7uHhZ2GR9c7tsOA)(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* n0) {
	NI result0;
	result0 = (NI)0;
	switch ((*n0).kind) {
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 6):
	{
		result0 = ((*n0).kindU.S7.elems ? (*n0).kindU.S7.elems->Sup.len : 0);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 5):
	{
		result0 = len_a0ORwcHIaewozuGDsc9b3TAjson((*n0).kindU.S6.fields);
	}
	break;
	default:
	{
	}
	break;
	}
	return result0;
}

N_NIMCALL(void, tougly_5SA9aXRryVJvgoCag29cRzQw)(NimStringDesc** result0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* node0) {
	NIM_BOOL comma0;
	comma0 = NIM_FALSE;
	switch ((*node0).kind) {
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 6):
	{
		(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_35));
		{
			Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* child_lZQq9bWV1PDZf9bZEY5uDjmQ;
			TY_oLpBKXzW3hF9aCVMo5EymfQ* HEX3Atmp_QFpx4RVfSMOkpDItbchZow;
			NI i_cG5KbDWEe9bQ59cx8MPL55pA;
			NI L_Di63IQ9bYF8WA2SDtcxbNxQ;
			child_lZQq9bWV1PDZf9bZEY5uDjmQ = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
			HEX3Atmp_QFpx4RVfSMOkpDItbchZow = (TY_oLpBKXzW3hF9aCVMo5EymfQ*)0;
			HEX3Atmp_QFpx4RVfSMOkpDItbchZow = (*node0).kindU.S7.elems;
			i_cG5KbDWEe9bQ59cx8MPL55pA = ((NI) 0);
			L_Di63IQ9bYF8WA2SDtcxbNxQ = (HEX3Atmp_QFpx4RVfSMOkpDItbchZow ? HEX3Atmp_QFpx4RVfSMOkpDItbchZow->Sup.len : 0);
			{
				while (1) {
					if (!(i_cG5KbDWEe9bQ59cx8MPL55pA < L_Di63IQ9bYF8WA2SDtcxbNxQ)) goto LA4;
					child_lZQq9bWV1PDZf9bZEY5uDjmQ = HEX3Atmp_QFpx4RVfSMOkpDItbchZow->data[i_cG5KbDWEe9bQ59cx8MPL55pA];
					{
						if (!comma0) goto LA7;
						(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_36));
					}
					goto LA5;
					LA7: ;
					{
						comma0 = NIM_TRUE;
					}
					LA5: ;
					tougly_5SA9aXRryVJvgoCag29cRzQw(result0, child_lZQq9bWV1PDZf9bZEY5uDjmQ);
					i_cG5KbDWEe9bQ59cx8MPL55pA += ((NI) 1);
				} LA4: ;
			}
		}
		(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_37));
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 5):
	{
		(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_38));
		{
			NimStringDesc* key_v3qZwszkOF9b06ful7fJK7w;
			Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* value_uiWHy5JgyC3AAlFXtIxi2w;
			Orderedtable_AF39bJ7XDr6gpANuGpxkHrw HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2;
			NI h_MgDOIfNz4hBWqcChhq4ALw;
			key_v3qZwszkOF9b06ful7fJK7w = (NimStringDesc*)0;
			value_uiWHy5JgyC3AAlFXtIxi2w = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
			memset((void*)(&HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2), 0, sizeof(HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2));
			HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.data = (*node0).kindU.S6.fields.data;
			HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.counter = (*node0).kindU.S6.fields.counter;
			HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.first = (*node0).kindU.S6.fields.first;
			HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.last = (*node0).kindU.S6.fields.last;
			h_MgDOIfNz4hBWqcChhq4ALw = HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.first;
			{
				while (1) {
					NI nxt_i9aGVCRQXir5KKa40r8FkKw;
					if (!(((NI) 0) <= h_MgDOIfNz4hBWqcChhq4ALw)) goto LA13;
					nxt_i9aGVCRQXir5KKa40r8FkKw = HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.data->data[h_MgDOIfNz4hBWqcChhq4ALw].Field1;
					{
						NIM_BOOL LOC16;
						LOC16 = (NIM_BOOL)0;
						LOC16 = isfilled_IxXD1UAPoEehVDW9cv9cRaewtables(HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.data->data[h_MgDOIfNz4hBWqcChhq4ALw].Field0);
						if (!LOC16) goto LA17;
						key_v3qZwszkOF9b06ful7fJK7w = HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.data->data[h_MgDOIfNz4hBWqcChhq4ALw].Field2;
						value_uiWHy5JgyC3AAlFXtIxi2w = HEX3Atmp_QFpx4RVfSMOkpDItbchZow_2.data->data[h_MgDOIfNz4hBWqcChhq4ALw].Field3;
						{
							if (!comma0) goto LA21;
							(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_36));
						}
						goto LA19;
						LA21: ;
						{
							comma0 = NIM_TRUE;
						}
						LA19: ;
						escapejson_xxovtptDIL7ctJosN3ocbA(key_v3qZwszkOF9b06ful7fJK7w, result0);
						(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_39));
						tougly_5SA9aXRryVJvgoCag29cRzQw(result0, value_uiWHy5JgyC3AAlFXtIxi2w);
					}
					LA17: ;
					h_MgDOIfNz4hBWqcChhq4ALw = nxt_i9aGVCRQXir5KKa40r8FkKw;
				} LA13: ;
			}
		}
		(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_40));
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 4):
	{
		escapejson_xxovtptDIL7ctJosN3ocbA((*node0).kindU.S1.str, result0);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 2):
	{
		add_IbYQ9cTcoQ89aIwM2IEYGMng(result0, (*node0).kindU.S2.num);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 3):
	{
		add_A9bDQDKw5SEqD3OvtOnC1bg(result0, (*node0).kindU.S3.fnum);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 1):
	{
		NimStringDesc* LOC28;
		LOC28 = (NimStringDesc*)0;
		{
			if (!(*node0).kindU.S4.bval) goto LA31;
			LOC28 = copyString(((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_23));
		}
		goto LA29;
		LA31: ;
		{
			LOC28 = copyString(((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_24));
		}
		LA29: ;
		(*result0) = resizeString((*result0), LOC28->Sup.len + 0);
appendString((*result0), LOC28);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 0):
	{
		(*result0) = resizeString((*result0), 4);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_22));
	}
	break;
	}
}

N_NIMCALL(NimStringDesc*, HEX24_f9cKpuwjrLNwYtym1kuFzjQ)(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* node0) {
	NimStringDesc* result0;
	NI LOC1;
	result0 = (NimStringDesc*)0;
	LOC1 = (NI)0;
	LOC1 = len_1r8KCEmq7uHhZ2GR9c7tsOA(node0);
	result0 = rawNewString(((NI) ((NI)((NU32)(LOC1) << (NU32)(((NI) 1))))));
	tougly_5SA9aXRryVJvgoCag29cRzQw((&result0), node0);
	return result0;
}

N_NIMCALL(void, nl_gOaZJtTQtJqBSCIPT8VfqQ)(NimStringDesc** s0, NIM_BOOL ml0) {
	{
		if (!ml0) goto LA3;
		(*s0) = resizeString((*s0), 2);
appendString((*s0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_41));
	}
	LA3: ;
}

N_NIMCALL(void, indent_1Ijhfzd9bSYvew1BrGtRO2g)(NimStringDesc** s0, NI i0) {
	NimStringDesc* LOC1;
	LOC1 = (NimStringDesc*)0;
	LOC1 = nsuRepeatChar(32, ((NI) (i0)));
	(*s0) = resizeString((*s0), LOC1->Sup.len + 0);
appendString((*s0), LOC1);
}

N_NIMCALL(NI, newindent_jGyhG9amGoXLPyJmHLbefOQ)(NI curr0, NI indent0, NIM_BOOL ml0) {
	NI result0;
{	result0 = (NI)0;
	{
		if (!ml0) goto LA3;
		result0 = (NI)(curr0 + indent0);
		goto BeforeRet;
	}
	goto LA1;
	LA3: ;
	{
		result0 = indent0;
		goto BeforeRet;
	}
	LA1: ;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, topretty_MHqQ3FKhfxfdLtBgX2QXeQ)(NimStringDesc** result0, Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* node0, NI indent0, NIM_BOOL ml0, NIM_BOOL lstarr0, NI currindent0) {
	switch ((*node0).kind) {
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 5):
	{
		{
			NIM_BOOL LOC4;
			LOC4 = (NIM_BOOL)0;
			LOC4 = !((currindent0 == ((NI) 0)));
			if (!(LOC4)) goto LA5;
			LOC4 = !(lstarr0);
			LA5: ;
			if (!LOC4) goto LA6;
			nl_gOaZJtTQtJqBSCIPT8VfqQ(result0, ml0);
		}
		LA6: ;
		indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
		{
			NI LOC10;
			NI i0;
			LOC10 = (NI)0;
			LOC10 = len_a0ORwcHIaewozuGDsc9b3TAjson((*node0).kindU.S6.fields);
			if (!(((NI) 0) < LOC10)) goto LA11;
			(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_38));
			nl_gOaZJtTQtJqBSCIPT8VfqQ(result0, ml0);
			i0 = ((NI) 0);
			{
				NimStringDesc* key_CRavhInYWXWBJOntr6Qf1A;
				Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* val_9bqQIl9cdBvohhCsfU2iR1PA;
				Orderedtable_AF39bJ7XDr6gpANuGpxkHrw HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw;
				NI h_CocvanxkBFK6lFTE6JMtKQ;
				key_CRavhInYWXWBJOntr6Qf1A = (NimStringDesc*)0;
				val_9bqQIl9cdBvohhCsfU2iR1PA = (Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*)0;
				memset((void*)(&HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw), 0, sizeof(HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw));
				HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.data = (*node0).kindU.S6.fields.data;
				HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.counter = (*node0).kindU.S6.fields.counter;
				HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.first = (*node0).kindU.S6.fields.first;
				HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.last = (*node0).kindU.S6.fields.last;
				h_CocvanxkBFK6lFTE6JMtKQ = HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.first;
				{
					while (1) {
						NI nxt_Pt49c89afSZoAOlYmYvTfA7w;
						if (!(((NI) 0) <= h_CocvanxkBFK6lFTE6JMtKQ)) goto LA15;
						nxt_Pt49c89afSZoAOlYmYvTfA7w = HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.data->data[h_CocvanxkBFK6lFTE6JMtKQ].Field1;
						{
							NIM_BOOL LOC18;
							NI LOC25;
							NI LOC26;
							LOC18 = (NIM_BOOL)0;
							LOC18 = isfilled_IxXD1UAPoEehVDW9cv9cRaewtables(HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.data->data[h_CocvanxkBFK6lFTE6JMtKQ].Field0);
							if (!LOC18) goto LA19;
							key_CRavhInYWXWBJOntr6Qf1A = HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.data->data[h_CocvanxkBFK6lFTE6JMtKQ].Field2;
							val_9bqQIl9cdBvohhCsfU2iR1PA = HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw.data->data[h_CocvanxkBFK6lFTE6JMtKQ].Field3;
							{
								if (!(((NI) 0) < i0)) goto LA23;
								(*result0) = resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_42));
								nl_gOaZJtTQtJqBSCIPT8VfqQ(result0, ml0);
							}
							LA23: ;
							i0 += ((NI) 1);
							LOC25 = (NI)0;
							LOC25 = newindent_jGyhG9amGoXLPyJmHLbefOQ(currindent0, indent0, ml0);
							indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, LOC25);
							escapejson_xxovtptDIL7ctJosN3ocbA(key_CRavhInYWXWBJOntr6Qf1A, result0);
							(*result0) = resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_43));
							LOC26 = (NI)0;
							LOC26 = newindent_jGyhG9amGoXLPyJmHLbefOQ(currindent0, indent0, ml0);
							topretty_MHqQ3FKhfxfdLtBgX2QXeQ(result0, val_9bqQIl9cdBvohhCsfU2iR1PA, indent0, ml0, NIM_FALSE, LOC26);
						}
						LA19: ;
						h_CocvanxkBFK6lFTE6JMtKQ = nxt_Pt49c89afSZoAOlYmYvTfA7w;
					} LA15: ;
				}
			}
			nl_gOaZJtTQtJqBSCIPT8VfqQ(result0, ml0);
			indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
			(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_40));
		}
		goto LA8;
		LA11: ;
		{
			(*result0) = resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_44));
		}
		LA8: ;
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 4):
	{
		{
			if (!lstarr0) goto LA31;
			indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
		}
		LA31: ;
		escapejson_xxovtptDIL7ctJosN3ocbA((*node0).kindU.S1.str, result0);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 2):
	{
		{
			if (!lstarr0) goto LA36;
			indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
		}
		LA36: ;
		add_IbYQ9cTcoQ89aIwM2IEYGMng(result0, (*node0).kindU.S2.num);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 3):
	{
		{
			if (!lstarr0) goto LA41;
			indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
		}
		LA41: ;
		add_A9bDQDKw5SEqD3OvtOnC1bg(result0, (*node0).kindU.S3.fnum);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 1):
	{
		NimStringDesc* LOC48;
		{
			if (!lstarr0) goto LA46;
			indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
		}
		LA46: ;
		LOC48 = (NimStringDesc*)0;
		{
			if (!(*node0).kindU.S4.bval) goto LA51;
			LOC48 = copyString(((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_23));
		}
		goto LA49;
		LA51: ;
		{
			LOC48 = copyString(((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_24));
		}
		LA49: ;
		(*result0) = resizeString((*result0), LOC48->Sup.len + 0);
appendString((*result0), LOC48);
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 6):
	{
		{
			if (!lstarr0) goto LA57;
			indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
		}
		LA57: ;
		{
			if (!!((((*node0).kindU.S7.elems ? (*node0).kindU.S7.elems->Sup.len : 0) == ((NI) 0)))) goto LA61;
			(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_35));
			nl_gOaZJtTQtJqBSCIPT8VfqQ(result0, ml0);
			{
				NI i_veScBps9cZyQ9ax3F9cGSzJ9aA;
				NI HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw_2;
				NI res_YDOC1Yb2SUznR4Zn9bzBM9aQ;
				i_veScBps9cZyQ9ax3F9cGSzJ9aA = (NI)0;
				HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw_2 = (NI)0;
				HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw_2 = (NI)(((*node0).kindU.S7.elems ? (*node0).kindU.S7.elems->Sup.len : 0) - ((NI) 1));
				res_YDOC1Yb2SUznR4Zn9bzBM9aQ = ((NI) 0);
				{
					while (1) {
						NI LOC70;
						if (!(res_YDOC1Yb2SUznR4Zn9bzBM9aQ <= HEX3Atmp_VuDedENBHbgpdjEXfRP0Zw_2)) goto LA65;
						i_veScBps9cZyQ9ax3F9cGSzJ9aA = res_YDOC1Yb2SUznR4Zn9bzBM9aQ;
						{
							if (!(((NI) 0) < i_veScBps9cZyQ9ax3F9cGSzJ9aA)) goto LA68;
							(*result0) = resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_42));
							nl_gOaZJtTQtJqBSCIPT8VfqQ(result0, ml0);
						}
						LA68: ;
						LOC70 = (NI)0;
						LOC70 = newindent_jGyhG9amGoXLPyJmHLbefOQ(currindent0, indent0, ml0);
						topretty_MHqQ3FKhfxfdLtBgX2QXeQ(result0, (*node0).kindU.S7.elems->data[i_veScBps9cZyQ9ax3F9cGSzJ9aA], indent0, ml0, NIM_TRUE, LOC70);
						res_YDOC1Yb2SUznR4Zn9bzBM9aQ += ((NI) 1);
					} LA65: ;
				}
			}
			nl_gOaZJtTQtJqBSCIPT8VfqQ(result0, ml0);
			indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
			(*result0) = resizeString((*result0), 1);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_37));
		}
		goto LA59;
		LA61: ;
		{
			(*result0) = resizeString((*result0), 2);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_45));
		}
		LA59: ;
	}
	break;
	case ((Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg) 0):
	{
		{
			if (!lstarr0) goto LA75;
			indent_1Ijhfzd9bSYvew1BrGtRO2g(result0, currindent0);
		}
		LA75: ;
		(*result0) = resizeString((*result0), 4);
appendString((*result0), ((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_22));
	}
	break;
	}
}

N_NIMCALL(NimStringDesc*, pretty_jL9c59bDERe59bOWSHweWzoBQ)(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q* node0, NI indent0) {
	NimStringDesc* result0;
	result0 = (NimStringDesc*)0;
	result0 = copyString(((NimStringDesc*) &T_9b9bytt1stv9cZ8uqII7HFgew_18));
	topretty_MHqQ3FKhfxfdLtBgX2QXeQ((&result0), node0, indent0, NIM_TRUE, NIM_FALSE, ((NI) 0));
	return result0;
}
NIM_EXTERNC N_NOINLINE(void, stdlib_jsonInit000)(void) {
}

NIM_EXTERNC N_NOINLINE(void, stdlib_jsonDatInit000)(void) {
static TNimNode* T_9b9bytt1stv9cZ8uqII7HFgew_2[6];
static TNimNode* T_9b9bytt1stv9cZ8uqII7HFgew_3[14];
NI T_9b9bytt1stv9cZ8uqII7HFgew_5;
static char* NIM_CONST T_9b9bytt1stv9cZ8uqII7HFgew_4[14] = {
"tkError", 
"tkEof", 
"tkString", 
"tkInt", 
"tkFloat", 
"tkTrue", 
"tkFalse", 
"tkNull", 
"tkCurlyLe", 
"tkCurlyRi", 
"tkBracketLe", 
"tkBracketRi", 
"tkColon", 
"tkComma"};
static TNimNode* T_9b9bytt1stv9cZ8uqII7HFgew_6[12];
NI T_9b9bytt1stv9cZ8uqII7HFgew_8;
static char* NIM_CONST T_9b9bytt1stv9cZ8uqII7HFgew_7[12] = {
"jsonError", 
"jsonEof", 
"jsonString", 
"jsonInt", 
"jsonFloat", 
"jsonTrue", 
"jsonFalse", 
"jsonNull", 
"jsonObjectStart", 
"jsonObjectEnd", 
"jsonArrayStart", 
"jsonArrayEnd"};
static TNimNode* T_9b9bytt1stv9cZ8uqII7HFgew_9[11];
NI T_9b9bytt1stv9cZ8uqII7HFgew_11;
static char* NIM_CONST T_9b9bytt1stv9cZ8uqII7HFgew_10[11] = {
"errNone", 
"errInvalidToken", 
"errStringExpected", 
"errColonExpected", 
"errCommaExpected", 
"errBracketRiExpected", 
"errCurlyRiExpected", 
"errQuoteExpected", 
"errEOC_Expected", 
"errEofExpected", 
"errExprExpected"};
static TNimNode* T_9b9bytt1stv9cZ8uqII7HFgew_12[8];
NI T_9b9bytt1stv9cZ8uqII7HFgew_14;
static char* NIM_CONST T_9b9bytt1stv9cZ8uqII7HFgew_13[8] = {
"stateEof", 
"stateStart", 
"stateObject", 
"stateArray", 
"stateExpectArrayComma", 
"stateExpectObjectComma", 
"stateExpectColon", 
"stateExpectValue"};
static TNimNode* T_9b9bytt1stv9cZ8uqII7HFgew_32[7];
NI T_9b9bytt1stv9cZ8uqII7HFgew_34;
static char* NIM_CONST T_9b9bytt1stv9cZ8uqII7HFgew_33[7] = {
"JNull", 
"JBool", 
"JInt", 
"JFloat", 
"JString", 
"JObject", 
"JArray"};
static TNimNode T_9b9bytt1stv9cZ8uqII7HFgew_0[73];
NTI_TAl5cv6tbH9avL9cKfMc0hkQ.size = sizeof(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ);
NTI_TAl5cv6tbH9avL9cKfMc0hkQ.kind = 17;
NTI_TAl5cv6tbH9avL9cKfMc0hkQ.base = (&NTI_B6cGbTPhMsqMovc9cOcIHRw);
T_9b9bytt1stv9cZ8uqII7HFgew_2[0] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[1];
T_9b9bytt1stv9cZ8uqII7HFgew_0[1].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[1].offset = offsetof(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ, a);
T_9b9bytt1stv9cZ8uqII7HFgew_0[1].typ = (&NTI_77mFvmsOLKik79ci2hXkHEg);
T_9b9bytt1stv9cZ8uqII7HFgew_0[1].name = "a";
T_9b9bytt1stv9cZ8uqII7HFgew_2[1] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[2];
NTI_vfEI6XZ7Xkb5BV9c6202vjA.size = sizeof(Tokkind_vfEI6XZ7Xkb5BV9c6202vjA);
NTI_vfEI6XZ7Xkb5BV9c6202vjA.kind = 14;
NTI_vfEI6XZ7Xkb5BV9c6202vjA.base = 0;
NTI_vfEI6XZ7Xkb5BV9c6202vjA.flags = 3;
for (T_9b9bytt1stv9cZ8uqII7HFgew_5 = 0; T_9b9bytt1stv9cZ8uqII7HFgew_5 < 14; T_9b9bytt1stv9cZ8uqII7HFgew_5++) {
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_5+3].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_5+3].offset = T_9b9bytt1stv9cZ8uqII7HFgew_5;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_5+3].name = T_9b9bytt1stv9cZ8uqII7HFgew_4[T_9b9bytt1stv9cZ8uqII7HFgew_5];
T_9b9bytt1stv9cZ8uqII7HFgew_3[T_9b9bytt1stv9cZ8uqII7HFgew_5] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_5+3];
}
T_9b9bytt1stv9cZ8uqII7HFgew_0[17].len = 14; T_9b9bytt1stv9cZ8uqII7HFgew_0[17].kind = 2; T_9b9bytt1stv9cZ8uqII7HFgew_0[17].sons = &T_9b9bytt1stv9cZ8uqII7HFgew_3[0];
NTI_vfEI6XZ7Xkb5BV9c6202vjA.node = &T_9b9bytt1stv9cZ8uqII7HFgew_0[17];
T_9b9bytt1stv9cZ8uqII7HFgew_0[2].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[2].offset = offsetof(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ, tok);
T_9b9bytt1stv9cZ8uqII7HFgew_0[2].typ = (&NTI_vfEI6XZ7Xkb5BV9c6202vjA);
T_9b9bytt1stv9cZ8uqII7HFgew_0[2].name = "tok";
T_9b9bytt1stv9cZ8uqII7HFgew_2[2] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[18];
NTI_NdAkGi88owzfBOSBDfW49cQ.size = sizeof(Jsoneventkind_NdAkGi88owzfBOSBDfW49cQ);
NTI_NdAkGi88owzfBOSBDfW49cQ.kind = 14;
NTI_NdAkGi88owzfBOSBDfW49cQ.base = 0;
NTI_NdAkGi88owzfBOSBDfW49cQ.flags = 3;
for (T_9b9bytt1stv9cZ8uqII7HFgew_8 = 0; T_9b9bytt1stv9cZ8uqII7HFgew_8 < 12; T_9b9bytt1stv9cZ8uqII7HFgew_8++) {
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_8+19].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_8+19].offset = T_9b9bytt1stv9cZ8uqII7HFgew_8;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_8+19].name = T_9b9bytt1stv9cZ8uqII7HFgew_7[T_9b9bytt1stv9cZ8uqII7HFgew_8];
T_9b9bytt1stv9cZ8uqII7HFgew_6[T_9b9bytt1stv9cZ8uqII7HFgew_8] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_8+19];
}
T_9b9bytt1stv9cZ8uqII7HFgew_0[31].len = 12; T_9b9bytt1stv9cZ8uqII7HFgew_0[31].kind = 2; T_9b9bytt1stv9cZ8uqII7HFgew_0[31].sons = &T_9b9bytt1stv9cZ8uqII7HFgew_6[0];
NTI_NdAkGi88owzfBOSBDfW49cQ.node = &T_9b9bytt1stv9cZ8uqII7HFgew_0[31];
T_9b9bytt1stv9cZ8uqII7HFgew_0[18].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[18].offset = offsetof(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ, kind);
T_9b9bytt1stv9cZ8uqII7HFgew_0[18].typ = (&NTI_NdAkGi88owzfBOSBDfW49cQ);
T_9b9bytt1stv9cZ8uqII7HFgew_0[18].name = "kind";
T_9b9bytt1stv9cZ8uqII7HFgew_2[3] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[32];
NTI_rhaSH4AjHj9bXRijCvdqRhQ.size = sizeof(Jsonerror_rhaSH4AjHj9bXRijCvdqRhQ);
NTI_rhaSH4AjHj9bXRijCvdqRhQ.kind = 14;
NTI_rhaSH4AjHj9bXRijCvdqRhQ.base = 0;
NTI_rhaSH4AjHj9bXRijCvdqRhQ.flags = 3;
for (T_9b9bytt1stv9cZ8uqII7HFgew_11 = 0; T_9b9bytt1stv9cZ8uqII7HFgew_11 < 11; T_9b9bytt1stv9cZ8uqII7HFgew_11++) {
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_11+33].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_11+33].offset = T_9b9bytt1stv9cZ8uqII7HFgew_11;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_11+33].name = T_9b9bytt1stv9cZ8uqII7HFgew_10[T_9b9bytt1stv9cZ8uqII7HFgew_11];
T_9b9bytt1stv9cZ8uqII7HFgew_9[T_9b9bytt1stv9cZ8uqII7HFgew_11] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_11+33];
}
T_9b9bytt1stv9cZ8uqII7HFgew_0[44].len = 11; T_9b9bytt1stv9cZ8uqII7HFgew_0[44].kind = 2; T_9b9bytt1stv9cZ8uqII7HFgew_0[44].sons = &T_9b9bytt1stv9cZ8uqII7HFgew_9[0];
NTI_rhaSH4AjHj9bXRijCvdqRhQ.node = &T_9b9bytt1stv9cZ8uqII7HFgew_0[44];
T_9b9bytt1stv9cZ8uqII7HFgew_0[32].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[32].offset = offsetof(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ, err);
T_9b9bytt1stv9cZ8uqII7HFgew_0[32].typ = (&NTI_rhaSH4AjHj9bXRijCvdqRhQ);
T_9b9bytt1stv9cZ8uqII7HFgew_0[32].name = "err";
T_9b9bytt1stv9cZ8uqII7HFgew_2[4] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[45];
NTI_UzfeQnJimUtC9bt1BjDzcdQ.size = sizeof(Parserstate_UzfeQnJimUtC9bt1BjDzcdQ);
NTI_UzfeQnJimUtC9bt1BjDzcdQ.kind = 14;
NTI_UzfeQnJimUtC9bt1BjDzcdQ.base = 0;
NTI_UzfeQnJimUtC9bt1BjDzcdQ.flags = 3;
for (T_9b9bytt1stv9cZ8uqII7HFgew_14 = 0; T_9b9bytt1stv9cZ8uqII7HFgew_14 < 8; T_9b9bytt1stv9cZ8uqII7HFgew_14++) {
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_14+46].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_14+46].offset = T_9b9bytt1stv9cZ8uqII7HFgew_14;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_14+46].name = T_9b9bytt1stv9cZ8uqII7HFgew_13[T_9b9bytt1stv9cZ8uqII7HFgew_14];
T_9b9bytt1stv9cZ8uqII7HFgew_12[T_9b9bytt1stv9cZ8uqII7HFgew_14] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_14+46];
}
T_9b9bytt1stv9cZ8uqII7HFgew_0[54].len = 8; T_9b9bytt1stv9cZ8uqII7HFgew_0[54].kind = 2; T_9b9bytt1stv9cZ8uqII7HFgew_0[54].sons = &T_9b9bytt1stv9cZ8uqII7HFgew_12[0];
NTI_UzfeQnJimUtC9bt1BjDzcdQ.node = &T_9b9bytt1stv9cZ8uqII7HFgew_0[54];
NTI_ArNCLAPkQjwz7DrguhEHNA.size = sizeof(TY_ArNCLAPkQjwz7DrguhEHNA*);
NTI_ArNCLAPkQjwz7DrguhEHNA.kind = 24;
NTI_ArNCLAPkQjwz7DrguhEHNA.base = (&NTI_UzfeQnJimUtC9bt1BjDzcdQ);
NTI_ArNCLAPkQjwz7DrguhEHNA.flags = 2;
NTI_ArNCLAPkQjwz7DrguhEHNA.marker = Marker_TY_ArNCLAPkQjwz7DrguhEHNA;
T_9b9bytt1stv9cZ8uqII7HFgew_0[45].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[45].offset = offsetof(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ, state);
T_9b9bytt1stv9cZ8uqII7HFgew_0[45].typ = (&NTI_ArNCLAPkQjwz7DrguhEHNA);
T_9b9bytt1stv9cZ8uqII7HFgew_0[45].name = "state";
T_9b9bytt1stv9cZ8uqII7HFgew_2[5] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[55];
T_9b9bytt1stv9cZ8uqII7HFgew_0[55].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[55].offset = offsetof(Jsonparser_TAl5cv6tbH9avL9cKfMc0hkQ, filename);
T_9b9bytt1stv9cZ8uqII7HFgew_0[55].typ = (&NTI_77mFvmsOLKik79ci2hXkHEg);
T_9b9bytt1stv9cZ8uqII7HFgew_0[55].name = "filename";
T_9b9bytt1stv9cZ8uqII7HFgew_0[0].len = 6; T_9b9bytt1stv9cZ8uqII7HFgew_0[0].kind = 2; T_9b9bytt1stv9cZ8uqII7HFgew_0[0].sons = &T_9b9bytt1stv9cZ8uqII7HFgew_2[0];
NTI_TAl5cv6tbH9avL9cKfMc0hkQ.node = &T_9b9bytt1stv9cZ8uqII7HFgew_0[0];
NTI_4avqtqpbmyD9bxH9bUmO9b0yw.size = sizeof(Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw);
NTI_4avqtqpbmyD9bxH9bUmO9b0yw.kind = 17;
NTI_4avqtqpbmyD9bxH9bUmO9b0yw.base = (&NTI_Gi06FkNeykJn7mrqRZYrkA);
T_9b9bytt1stv9cZ8uqII7HFgew_0[56].len = 0; T_9b9bytt1stv9cZ8uqII7HFgew_0[56].kind = 2;
NTI_4avqtqpbmyD9bxH9bUmO9b0yw.node = &T_9b9bytt1stv9cZ8uqII7HFgew_0[56];
NTI_TOl9bBVGahlQmjZBc3UGISg.size = sizeof(Jsonparsingerror_4avqtqpbmyD9bxH9bUmO9b0yw*);
NTI_TOl9bBVGahlQmjZBc3UGISg.kind = 22;
NTI_TOl9bBVGahlQmjZBc3UGISg.base = (&NTI_4avqtqpbmyD9bxH9bUmO9b0yw);
NTI_TOl9bBVGahlQmjZBc3UGISg.marker = Marker_TY_TOl9bBVGahlQmjZBc3UGISg;
NTI_df9bshXB7C9cTiWPIOtX3j1Q.size = sizeof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q);
NTI_df9bshXB7C9cTiWPIOtX3j1Q.kind = 18;
NTI_df9bshXB7C9cTiWPIOtX3j1Q.base = 0;
NTI_df9bshXB7C9cTiWPIOtX3j1Q.flags = 2;
NTI_RUngo7nCHe6O8aBGIcrhtg.size = sizeof(Jsonnodekind_RUngo7nCHe6O8aBGIcrhtg);
NTI_RUngo7nCHe6O8aBGIcrhtg.kind = 14;
NTI_RUngo7nCHe6O8aBGIcrhtg.base = 0;
NTI_RUngo7nCHe6O8aBGIcrhtg.flags = 3;
for (T_9b9bytt1stv9cZ8uqII7HFgew_34 = 0; T_9b9bytt1stv9cZ8uqII7HFgew_34 < 7; T_9b9bytt1stv9cZ8uqII7HFgew_34++) {
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_34+58].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_34+58].offset = T_9b9bytt1stv9cZ8uqII7HFgew_34;
T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_34+58].name = T_9b9bytt1stv9cZ8uqII7HFgew_33[T_9b9bytt1stv9cZ8uqII7HFgew_34];
T_9b9bytt1stv9cZ8uqII7HFgew_32[T_9b9bytt1stv9cZ8uqII7HFgew_34] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[T_9b9bytt1stv9cZ8uqII7HFgew_34+58];
}
T_9b9bytt1stv9cZ8uqII7HFgew_0[65].len = 7; T_9b9bytt1stv9cZ8uqII7HFgew_0[65].kind = 2; T_9b9bytt1stv9cZ8uqII7HFgew_0[65].sons = &T_9b9bytt1stv9cZ8uqII7HFgew_32[0];
NTI_RUngo7nCHe6O8aBGIcrhtg.node = &T_9b9bytt1stv9cZ8uqII7HFgew_0[65];
T_9b9bytt1stv9cZ8uqII7HFgew_0[57].kind = 3;
T_9b9bytt1stv9cZ8uqII7HFgew_0[57].offset = offsetof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q, kind);
T_9b9bytt1stv9cZ8uqII7HFgew_0[57].typ = (&NTI_RUngo7nCHe6O8aBGIcrhtg);
T_9b9bytt1stv9cZ8uqII7HFgew_0[57].name = "kind";
T_9b9bytt1stv9cZ8uqII7HFgew_0[57].sons = &NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[0];
T_9b9bytt1stv9cZ8uqII7HFgew_0[57].len = 7;
T_9b9bytt1stv9cZ8uqII7HFgew_0[66].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[66].offset = offsetof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q, kindU.S1.str);
T_9b9bytt1stv9cZ8uqII7HFgew_0[66].typ = (&NTI_77mFvmsOLKik79ci2hXkHEg);
T_9b9bytt1stv9cZ8uqII7HFgew_0[66].name = "str";
NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[4] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[66];
T_9b9bytt1stv9cZ8uqII7HFgew_0[67].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[67].offset = offsetof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q, kindU.S2.num);
T_9b9bytt1stv9cZ8uqII7HFgew_0[67].typ = (&NTI_Aav8dQoMlCFnZRxA0IhTHQ);
T_9b9bytt1stv9cZ8uqII7HFgew_0[67].name = "num";
NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[2] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[67];
T_9b9bytt1stv9cZ8uqII7HFgew_0[68].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[68].offset = offsetof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q, kindU.S3.fnum);
T_9b9bytt1stv9cZ8uqII7HFgew_0[68].typ = (&NTI_w9bl9a1ul9ctRJWiMl9cNnIMvg);
T_9b9bytt1stv9cZ8uqII7HFgew_0[68].name = "fnum";
NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[3] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[68];
T_9b9bytt1stv9cZ8uqII7HFgew_0[69].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[69].offset = offsetof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q, kindU.S4.bval);
T_9b9bytt1stv9cZ8uqII7HFgew_0[69].typ = (&NTI_VaVACK0bpYmqIQ0mKcHfQQ);
T_9b9bytt1stv9cZ8uqII7HFgew_0[69].name = "bval";
NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[1] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[69];
T_9b9bytt1stv9cZ8uqII7HFgew_0[70].len = 0; T_9b9bytt1stv9cZ8uqII7HFgew_0[70].kind = 2;
NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[0] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[70];
T_9b9bytt1stv9cZ8uqII7HFgew_0[71].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[71].offset = offsetof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q, kindU.S6.fields);
T_9b9bytt1stv9cZ8uqII7HFgew_0[71].typ = (&NTI_AF39bJ7XDr6gpANuGpxkHrw);
T_9b9bytt1stv9cZ8uqII7HFgew_0[71].name = "fields";
NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[5] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[71];
NTI_oLpBKXzW3hF9aCVMo5EymfQ.size = sizeof(TY_oLpBKXzW3hF9aCVMo5EymfQ*);
NTI_oLpBKXzW3hF9aCVMo5EymfQ.kind = 24;
NTI_oLpBKXzW3hF9aCVMo5EymfQ.base = (&NTI_zfzzuQ8txrdZAYK0WGWpHg);
NTI_oLpBKXzW3hF9aCVMo5EymfQ.flags = 2;
NTI_oLpBKXzW3hF9aCVMo5EymfQ.marker = Marker_TY_oLpBKXzW3hF9aCVMo5EymfQ;
T_9b9bytt1stv9cZ8uqII7HFgew_0[72].kind = 1;
T_9b9bytt1stv9cZ8uqII7HFgew_0[72].offset = offsetof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q, kindU.S7.elems);
T_9b9bytt1stv9cZ8uqII7HFgew_0[72].typ = (&NTI_oLpBKXzW3hF9aCVMo5EymfQ);
T_9b9bytt1stv9cZ8uqII7HFgew_0[72].name = "elems";
NimDT__df9bshXB7C9cTiWPIOtX3j1Q_kind[6] = &T_9b9bytt1stv9cZ8uqII7HFgew_0[72];
NTI_df9bshXB7C9cTiWPIOtX3j1Q.node = &T_9b9bytt1stv9cZ8uqII7HFgew_0[57];
NTI_zfzzuQ8txrdZAYK0WGWpHg.size = sizeof(Jsonnodeobj_df9bshXB7C9cTiWPIOtX3j1Q*);
NTI_zfzzuQ8txrdZAYK0WGWpHg.kind = 22;
NTI_zfzzuQ8txrdZAYK0WGWpHg.base = (&NTI_df9bshXB7C9cTiWPIOtX3j1Q);
NTI_zfzzuQ8txrdZAYK0WGWpHg.flags = 2;
NTI_zfzzuQ8txrdZAYK0WGWpHg.marker = Marker_TY_zfzzuQ8txrdZAYK0WGWpHg;
}

