{"version":3,"sources":["../src/axios.ts","../src/utils.ts","../src/data-model.ts","../src/hooks.ts","../src/index.ts"],"names":["_a","merge"],"mappings":";;;;;;;;;AAOO,IAAM,KAAA,GAAQ;AAErB,IAAM,KAAA,GAAQ,SAAS,MAAA,EAAO;AA4CvB,SAAS,QAAA,CAAS,KAAA,GAAQ,EAAA,EAAI,GAAA,EAAuB;AAC1D,EAAA,MAAM,EAAE,SAAA,GAAY,KAAA,EAAM,GAAI,OAAO,EAAC;AACtC,EAAA,MAAM,KAAK,KAAA,IAAS,EAAA;AACpB,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAM,EAAE,WAAA,EAAY,GAAI,GAAA,IAAO,EAAC;AAChC,IAAA,MAAM,SAAA,GAAY,KAAA;AAAA,MAChB;AAAA,QACE,OAAA,EAAS;AAAA,OACX;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAA,EAAO,EAAA,EAAI,SAAS,CAAA;AAAA,EAClC;AACA,EAAA,YAAA,CAAa,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC9B,EAAA,kBAAA,CAAmB,EAAE,CAAA;AACvB;AAOO,SAAS,SAAS,GAAA,EAA+B;AACtD,EAAA,MAAM,EAAE,SAAA,GAAY,KAAA,EAAM,GAAI,OAAO,EAAC;AACtC,EAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,IAAK,EAAA;AAC9B,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,KAAA,GAAQ,YAAA,CAAa,QAAQ,KAAK,CAAA;AAClC,EAAA,OAAO,KAAA;AACT;AAEO,IAAM,OAAO,EAAE,SAAA,EAAW,CAAC,KAAA,EAAO,QAAQ,CAAA;AAO1C,SAAS,SAAS,SAAA,EAA+C;AACtE,EAAA,IAAA,CAAK,YAAY,CAAC,GAAG,IAAA,CAAK,SAAA,EAAW,GAAG,SAAS,CAAA;AACjD,EAAA,OAAO,IAAA,CAAK,SAAA;AACd;AAQO,SAAS,YAAA,CACd,EAAA,EAGA,KAAA,EACA,GAAA,EACA;AAhHF,EAAA,IAAAA,GAAAA;AAiHE,EAAA,CAAAA,MAAA,IAAA,CAAK,SAAA,KAAL,gBAAAA,GAAAA,CAAgB,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC/B,IAAA,GAAA,CAAI,aAAa,OAAA,CAAQ,GAAA;AAAA,MACvB,EAAA;AAAA,MACA,YAAY,KAAA,EAAO,EAAE,WAAW,wBAAA,EAA0B,GAAG,KAAK;AAAA,KACpE;AAAA,EACF,CAAA,CAAA;AACF;AAQO,SAAS,aAAA,CACd,EAAA,EACA,KAAA,EACA,GAAA,EACA;AAnIF,EAAA,IAAAA,GAAAA;AAoIE,EAAA,CAAAA,MAAA,IAAA,CAAK,SAAA,KAAL,gBAAAA,GAAAA,CAAgB,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC/B,IAAA,GAAA,CAAI,aAAa,QAAA,CAAS,GAAA;AAAA,MACxB,EAAA;AAAA,MACA,YAAY,KAAA,EAAO,EAAE,WAAW,wBAAA,EAA0B,GAAG,KAAK;AAAA,KACpE;AAAA,EACF,CAAA,CAAA;AACF;AAQO,SAAS,WAAA,CAAY,OAAsC,GAAA,EAA0B;AAC1F,EAAA,MAAM,EAAE,YAAA,EAAc,SAAA,EAAU,GAAI,OAAO,EAAC;AAC5C,EAAA,MAAM,IAAA,GAAO,OAAO,KAAA,KAAU,UAAA;AAC9B,EAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,CAAC,KAAA,KAAe;AACrB,IAAA,OAAA,CAAQ,KAAA,CAAM,WAAW,KAAK,CAAA;AAC9B,IAAA,OAAO,OAAO,KAAA,CAAM,KAAK,CAAA,GAAI,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,EACnD,CAAA;AACF;AAOO,SAAS,aAAA,CAAc,KAAa,GAAA,EAAU;AAnKrD,EAAA,IAAAA,GAAAA;AAoKE,EAAA,CAAAA,MAAA,IAAA,CAAK,SAAA,KAAL,gBAAAA,GAAAA,CAAgB,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC/B,IAAC,GAAA,CAAI,QAAA,CAAiB,GAAG,CAAA,GAAI,GAAA;AAAA,EAC/B,CAAA,CAAA;AACF;AAOO,SAAS,YAAA,CAAa,KAAa,GAAA,EAAU;AA9KpD,EAAA,IAAAA,GAAAA;AA+KE,EAAA,CAAAA,MAAA,IAAA,CAAK,SAAA,KAAL,gBAAAA,GAAAA,CAAgB,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC/B,IAAC,GAAA,CAAI,QAAA,CAAS,OAAA,CAAgB,GAAG,CAAA,GAAI,GAAA;AAAA,EACvC,CAAA,CAAA;AACF;AAMO,SAAS,YAAA,CAAa,UAAU,CAAA,EAAG;AACxC,EAAA,aAAA,CAAc,WAAW,OAAO,CAAA;AAClC;AAMO,SAAS,mBAAmB,KAAA,EAAe;AAChD,EAAA,YAAA,CAAa,iBAAiB,KAAK,CAAA;AACrC;AAMO,SAAS,aAAa,GAAA,EAAa;AACxC,EAAA,aAAA,CAAc,WAAW,GAAG,CAAA;AAC9B;AAMO,SAAS,oBAAA,GAAuB;AACrC,EAAA,OAAO,QAAA,CAAS,YAAY,MAAA,EAAO;AACrC;AAOO,SAAS,SAAS,GAAA,EAAK;AAC5B,EAAA,OAAO,QAAA,CAAS,SAAS,GAAG,CAAA;AAC9B;AA3NA,IAAA,EAAA;AAAA,CA8NA,EAAA,GAAA,IAAA,CAAK,SAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC/B,EAAA,GAAA,CAAI,aAAa,QAAA,CAAS,GAAA;AAAA,IACxB,OAAO,QAAA,KAA+B;AAhO1C,MAAA,IAAAA,GAAAA,EAAA,EAAA,EAAA,EAAA;AAkOM,MAAA,IAAA,CAAIA,GAAAA,GAAA,QAAA,CAAS,MAAA,KAAT,IAAA,GAAA,MAAA,GAAAA,IAAiB,KAAA,EAAO;AAE1B,QAAA,CAAA,EAAA,GAAA,QAAA,CAAS,MAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiB,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAA;AAC/B,QAAA,MAAM,GAAA,GAAM,OAAA,CAAO,EAAA,GAAA,QAAA,CAAS,MAAA,KAAT,mBAAiB,KAAA,CAAM,OAAA,CAAA;AAC1C,QAAA,OAAO,GAAA;AAAA,MACT;AACA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA,IACA,OAAO,KAAA,KAAU;AAEf,MAAA,IAAA,CAAI,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,KAAA,MAAS,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,KAAA,CAAM,OAAA,CAAA,EAAS;AAExC,QAAA,MAAM,GAAA,GAAM,OAAO,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,KAAA,CAAM,OAAA,CAAA;AAChC,QAAA,OAAO,GAAA;AAAA,MACT;AAGA,MAAA,IAAI,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA,EAAG;AAC5B,QAAA,OAAA,CAAQ,IAAA,CAAK,yCAAgB,KAAK,CAAA;AAClC,QAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,GACF;AACF,CAAA,CAAA;AAIA,IAAO,aAAA,GAAQ;;;AC5Pf,IAAM,WAAA,GAAc,0BAAA;AAEpB,IAAM,WAAA,GAAc,sFAAA;AASb,IAAM,MAAA,GAAoB;AAAA,EAC/B,aAAA,EAAe,WAAA;AAAA,EACf,aAAA,EAAe;AACjB,CAAA;AAMO,SAAS,gBAAgB,EAAA,EAAS;AACvC,EAAA,IAAI,EAAA,EAAI;AACN,IAAA,MAAA,CAAO,KAAA,GAAQ,EAAA;AAAA,EACjB;AACF;AAMO,SAAS,iBAAiB,GAAA,EAAa;AAC5C,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,MAAA,CAAO,aAAA,GAAgB,GAAA;AAAA,EACzB;AACF;AAMO,SAAS,iBAAiB,GAAA,EAAa;AAC5C,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,MAAA,CAAO,aAAA,GAAgB,GAAA;AAAA,EACzB;AACF;AAMO,SAAS,YAAA,GAAwB;AACtC,EAAA,IAAI,OAAO,cAAc,WAAA,EAAa;AACpC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,SAAA,CAAU,WAAW,KAAA,EAAO;AAC9B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,UAAA,GAAa,SAAA;AACnB,EAAA,MAAM,UAAA,GACJ,UAAA,CAAW,UAAA,IAAc,UAAA,CAAW,iBAAiB,UAAA,CAAW,gBAAA;AAClE,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,SAAA,GAAA,CACJ,yCAAY,IAAA,MAAS,MAAA,IAAU,WAAW,QAAA,KAAa,CAAA,IAAK,WAAW,aAAA,KAAkB,IAAA;AAC3F,EAAA,OAAO,CAAC,SAAA;AACV;AAOO,SAAS,cAAc,IAAA,EAAqC;AA1EnE,EAAA,IAAAA,GAAAA;AA2EE,EAAA,IAAI,gBAAgB,QAAA,EAAU;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,EAAA,CAAAA,GAAAA,GAAA,OAAO,IAAA,CAAK,IAAI,MAAhB,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAmB,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAClC,IAAA,QAAA,CAAS,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,EAC7B,CAAA,CAAA;AACA,EAAA,OAAO,QAAA;AACT;AAOO,SAAS,cAAc,QAAA,EAA+C;AAC3E,EAAA,IAAI,EAAE,oBAAoB,QAAA,CAAA,EAAW;AACnC,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,MAAM,WAAgC,EAAC;AACvC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,QAAA,CAAS,SAAQ,EAAG;AAC7C,IAAA,QAAA,CAAS,GAAG,CAAA,GAAI,KAAA;AAAA,EAClB;AACA,EAAA,OAAO,QAAA;AACT;;;ACmEA,IAAM,YAAN,MAAkD;AAAA,EAyFhD,YAAY,MAAA,EAA6B;AAvFzC;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAGA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,KAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAGA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,mBAAA,CAAA;AAGA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,sBAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,sBAAA,CAAA;AAGA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAGA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,gBAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AAEA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,yBAAA,CAAA;AAGE,IAAA,MAAM;AAAA,MACJ,GAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,iBAAA;AAAA;AAAA,MAEA,cAAA;AAAA;AAAA,MAEA;AAAA,KACF,GAAI,MAAA;AAGJ,IAAA,IAAA,CAAK,cAAA,GAAiB,CAAC,CAAC,cAAA;AAExB,IAAA,IAAA,CAAK,UAAA,GAAa,CAAC,CAAC,UAAA;AAEpB,IAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AAGtB,IAAA,IAAA,CAAK,GAAA,GAAM,OAAO,EAAC;AAEnB,IAAA,IAAA,CAAK,KAAA,GAAQ,SAAS,EAAC;AAGvB,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAElB,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAElB,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAEnB,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAEhB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAEhB,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAA,CAAK,iBAAA,GAAoB,iBAAA;AAEzB,IAAA,MAAM;AAAA,MACJ,aAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,KACF,GAAI,UAAU,EAAC;AAGf,IAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AAErB,IAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AAErB,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAEnB,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAEnB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,IAAA,CAAK,oBAAA,GAAuB,oBAAA;AAE5B,IAAA,IAAA,CAAK,oBAAA,GAAuB,oBAAA;AAG5B,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,EAAA;AAAA,MACP,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF,GAAI,UAAU,EAAC;AAGf,IAAA,IAAA,CAAK,KAAA,GAAQ,EAAA,IAAM,MAAA,CAAO,KAAA,IAAS,KAAA;AAEnC,IAAA,IAAA,CAAK,SAAA,GAAY,aAAa,EAAC;AAG/B,IAAA,IAAA,CAAK,gBAAA,GAAmB,gBAAA;AAExB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,IAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AAEvB,IAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AAEvB,IAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AAEtB,IAAA,IAAA,CAAK,eAAA,GAAkB,eAAA;AAEvB,IAAA,IAAA,CAAK,uBAAA,GAA0B,uBAAA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,SAAA,CACE,KACA,MAAA,GAAqB,IACrB,GAAA,GAAkB,IAAA,CAAK,KACvB,GAAA,EACQ;AACR,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,GAAA,IAAA,IAAA,GAAA,GAAA,GAAO,EAAC;AACzB,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,MAAM,MAAA,GAAS,CAAA,EAAG,IAAA,IAAA,IAAA,GAAA,IAAA,GAAQ,EAAE,CAAA,mCAAA,CAAA;AAC5B,MAAA,OAAA,CAAQ,MAAM,CAAA,MAAA,EAAS,MAAM,0EAA6B,GAAA,EAAK,MAAA,EAAQ,KAAK,GAAG,CAAA;AAC/E,MAAA,MAAM,IAAI,MAAM,MAAM,CAAA;AAAA,IACxB;AACA,IAAA,IAAI,MAAA,GAAS,GAAA;AACb,IAAA,MAAM,MAAA,GAASC,KAAAA,CAAM,EAAC,EAAG,QAAQ,GAAG,CAAA;AACpC,IAAA,IAAA,CAAK,MAAA,EAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC3B,MAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,IAAK,CAAC,SAAS,KAAK,CAAA,IAAK,SAAA,CAAU,KAAK,CAAA,EAAG;AAC5D,QAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,IAAI,MAAA,CAAO,CAAA,CAAA,EAAI,GAAG,CAAA,GAAA,EAAM,GAAG,CAAA,KAAA,CAAO,CAAA,EAAG,KAAK,CAAA;AAAA,MACpE;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO,MAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,IAAI,CAAA,GAAiB,IAAI,GAAA,GAAkB,IAAI,SAAA,EAAuC;AAC1F,IAAA,IAAI,QAAQA,KAAAA,CAAM,EAAC,EAAG,IAAA,CAAK,OAAO,CAAC,CAAA;AACnC,IAAA,KAAA,GAAQ,MAAA,CAAO,OAAO,CAAC,GAAA,KAAQ,CAAC,KAAA,CAAM,GAAG,CAAA,IAAK,GAAA,KAAQ,EAAE,CAAA;AAExD,IAAA,IAAI,KAAK,SAAA,EAAW;AAClB,MAAA,KAAA,GAAQ,MAAM,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AAAA,IACpC;AAEA,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,OAAO,GAAA,EAAK,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AACtE,MAAA,IAAA,CAAK,KAAA,CACF,IAAI,MAAA,EAAQ;AAAA,QACX,GAAG,IAAA,CAAK,SAAA;AAAA,QACR,GAAG,IAAA,CAAK,YAAA;AAAA,QACR,GAAG,SAAA;AAAA,QACH,MAAA,EAAQ;AAAA,OACT,CAAA,CACA,IAAA,CAAK,CAAC,QAAA,KAA2B;AAChC,QAAA,IAAA,CAAK,SAAA;AAAA,UACH,QAAA;AAAA,UACA,CAAC,GAAA,KAAoB;AACnB,YAAA,IAAI,KAAK,MAAA,EAAQ;AACf,cAAA,GAAA,GAAM,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,YACvB;AACA,YAAA,IAAI,KAAK,SAAA,EAAW;AAClB,cAAA,GAAA,GAAM,IAAA,CAAK,UAAU,GAAG,CAAA;AAAA,YAC1B;AACA,YAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,UACb,CAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAC,EACA,KAAA,CAAM,CAAC,QAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,MAAM,CAAC,CAAA;AAAA,IAClD,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,QACJ,CAAA,GAAiB,IACjB,GAAA,GAAkB,IAClB,SAAA,EAC2B;AAle/B,IAAA,IAAAD,GAAAA;AAmeI,IAAA,IAAI,QAAQC,KAAAA,CAAM,EAAC,EAAG,IAAA,CAAK,OAAO,CAAC,CAAA;AACnC,IAAA,KAAA,GAAQ,MAAA,CAAO,OAAO,CAAC,GAAA,KAAQ,CAAC,KAAA,CAAM,GAAG,CAAA,IAAK,GAAA,KAAQ,EAAE,CAAA;AAExD,IAAA,IAAI,KAAK,aAAA,EAAe;AACtB,MAAA,KAAA,GAAQ,MAAM,IAAA,CAAK,aAAA,CAAc,KAAK,CAAA;AAAA,IACxC;AAEA,IAAA,IAAI,UAAA,GAAsC,IAAA;AAC1C,IAAA,IAAI,KAAK,WAAA,EAAa;AACpB,MAAA,UAAA,GAAa,MAAM,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AAAA,IAC3C,CAAA,MAAO;AACL,MAAA,MAAM,MAAA,GAAS,IAAI,OAAA,CAA0B,CAAC,SAAS,MAAA,KAAW;AAChE,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,UAAA,EAAY,GAAG,GAAA,EAAK,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA;AAC1E,QAAA,IAAA,CAAK,KAAA,CACF,IAAI,MAAA,EAAQ;AAAA,UACX,GAAG,IAAA,CAAK,SAAA;AAAA,UACR,GAAG,IAAA,CAAK,gBAAA;AAAA,UACR,GAAG,SAAA;AAAA,UACH,MAAA,EAAQ;AAAA,SACT,CAAA,CACA,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,UAAA,IAAA,CAAK,SAAA;AAAA,YACH,QAAA;AAAA,YACA,CAAC,GAAA,KAA0B;AAEzB,cAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,YACb,CAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAC,EACA,KAAA,CAAM,CAAC,QAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,MAAM,CAAC,CAAA;AAAA,MAClD,CAAC,CAAA;AACD,MAAA,UAAA,GAAa,MAAM,MAAA;AAAA,IACrB;AACA,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,UAAA,CAAW,IAAA,GAAA,CAAOD,GAAAA,GAAA,UAAA,CAAW,IAAA,KAAX,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAiB,GAAA,CAAI,CAAC,MAAA,KAAW,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,CAAA;AAAA,IAC3E;AACA,IAAA,IAAI,KAAK,aAAA,EAAe;AACtB,MAAA,UAAA,GAAa,IAAA,CAAK,cAAc,UAAU,CAAA;AAAA,IAC5C;AAEA,IAAA,OAAO,UAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAA,CAAO,MAAA,EAAiC,GAAA,EAAkB,SAAA,EAAuC;AAC/F,IAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAvhBlD,MAAA,IAAAA,GAAAA;AAwhBM,MAAA,MAAM,GAAA,GAAmB;AAAA,QACvB,GAAG,IAAA,CAAK,SAAA;AAAA,QACR,GAAG,IAAA,CAAK,eAAA;AAAA,QACR,GAAG;AAAA,OACL;AACA,MAAA,IAAI,OAAA,GAAU,SAAA,CAAU,aAAA,CAAc,MAAM,CAAC,CAAA;AAC7C,MAAA,IAAI,KAAK,YAAA,EAAc;AACrB,QAAA,OAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,MAAM,CAAA;AAAA,MACnD;AACA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,SAAA,EAAW,SAAS,GAAA,EAAK,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA;AAC9E,MAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,QAAA,GAAA,CAAI,OAAA,GAAU,EAAE,GAAA,CAAIA,GAAAA,GAAA,GAAA,CAAI,OAAA,KAAJ,IAAA,GAAAA,GAAAA,GAAe,EAAC,EAAI,cAAA,EAAgB,qBAAA,EAAsB;AAC9E,QAAA,OAAA,GAAU,cAAc,OAAO,CAAA;AAAA,MACjC;AACA,MAAA,IAAA,CAAK,KAAA,CACF,KAAK,MAAA,EAAQ,OAAA,EAAS,GAAG,CAAA,CACzB,IAAA,CAAK,CAAC,QAAA,KAA2B;AAChC,QAAA,IAAA,CAAK,SAAA;AAAA,UACH,QAAA;AAAA,UACA,CAAC,GAAA,KAAQ;AACP,YAAA,IAAI,KAAK,YAAA,EAAc;AACrB,cAAA,GAAA,GAAM,IAAA,CAAK,aAAa,GAAG,CAAA;AAAA,YAC7B;AACA,YAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,UACb,CAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAC,EACA,KAAA,CAAM,CAAC,QAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,MAAM,CAAC,CAAA;AAAA,IAClD,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAA,CAAO,MAAA,EAAiC,GAAA,EAAkB,SAAA,EAAuC;AAC/F,IAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AAhkBlD,MAAA,IAAAA,GAAAA;AAikBM,MAAA,MAAM,GAAA,GAAmB,EAAE,GAAG,IAAA,CAAK,WAAW,GAAG,IAAA,CAAK,eAAA,EAAiB,GAAG,SAAA,EAAU;AACpF,MAAA,IAAI,OAAA,GAAU,SAAA,CAAU,aAAA,CAAc,MAAM,CAAC,CAAA;AAC7C,MAAA,IAAI,KAAK,YAAA,EAAc;AACrB,QAAA,OAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,MAAM,CAAA;AAAA,MACnD;AACA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,SAAA,EAAW,SAAS,GAAA,EAAK,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA;AAC9E,MAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,QAAA,GAAA,CAAI,OAAA,GAAU,EAAE,GAAA,CAAIA,GAAAA,GAAA,GAAA,CAAI,OAAA,KAAJ,IAAA,GAAAA,GAAAA,GAAe,EAAC,EAAI,cAAA,EAAgB,qBAAA,EAAsB;AAC9E,QAAA,OAAA,GAAU,cAAc,OAAO,CAAA;AAAA,MACjC;AACA,MAAA,IAAA,CAAK,KAAA,CACF,IAAI,MAAA,EAAQ,OAAA,EAAS,GAAG,CAAA,CACxB,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,QAAA,IAAA,CAAK,SAAA;AAAA,UACH,QAAA;AAAA,UACA,CAAC,GAAA,KAAQ;AACP,YAAA,IAAI,KAAK,YAAA,EAAc;AACrB,cAAA,GAAA,GAAM,IAAA,CAAK,aAAa,GAAG,CAAA;AAAA,YAC7B;AACA,YAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,UACb,CAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAC,EACA,KAAA,CAAM,CAAC,QAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,MAAM,CAAC,CAAA;AAAA,IAClD,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,KAAA,CAAM,MAAA,EAAiC,GAAA,EAAkB,SAAA,EAAuC;AAC9F,IAAA,OAAO,IAAI,OAAA,CAAQ,OAAO,OAAA,EAAS,MAAA,KAAW;AArmBlD,MAAA,IAAAA,GAAAA;AAsmBM,MAAA,MAAM,GAAA,GAAmB,EAAE,GAAG,IAAA,CAAK,WAAW,GAAG,IAAA,CAAK,cAAA,EAAgB,GAAG,SAAA,EAAU;AACnF,MAAA,IAAI,OAAA,GAAU,SAAA,CAAU,aAAA,CAAc,MAAM,CAAC,CAAA;AAC7C,MAAA,IAAI,KAAK,WAAA,EAAa;AACpB,QAAA,OAAA,GAAU,MAAM,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,MAAM,CAAA;AAAA,MAClD;AACA,MAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAA,EAAU,SAAS,GAAA,EAAK,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA;AAC5E,MAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,QAAA,GAAA,CAAI,OAAA,GAAU,EAAE,GAAA,CAAIA,GAAAA,GAAA,GAAA,CAAI,OAAA,KAAJ,IAAA,GAAAA,GAAAA,GAAe,EAAC,EAAI,cAAA,EAAgB,qBAAA,EAAsB;AAC9E,QAAA,OAAA,GAAU,cAAc,OAAO,CAAA;AAAA,MACjC;AACA,MAAA,IAAA,CAAK,KAAA,CACF,MAAM,MAAA,EAAQ,OAAA,EAAS,GAAG,CAAA,CAC1B,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,QAAA,IAAA,CAAK,SAAA;AAAA,UACH,QAAA;AAAA,UACA,CAAC,GAAA,KAAQ;AACP,YAAA,IAAI,KAAK,WAAA,EAAa;AACpB,cAAA,GAAA,GAAM,IAAA,CAAK,YAAY,GAAG,CAAA;AAAA,YAC5B;AACA,YAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,UACb,CAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAC,EACA,KAAA,CAAM,CAAC,QAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,MAAM,CAAC,CAAA;AAAA,IAClD,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,MAAA,CAAO,MAAA,EAAuB,GAAA,EAAgC;AAClE,IAAA,IAAI,OAAA,GAAU,SAAA,CAAU,MAAM,CAAA,IAAK,EAAC;AACpC,IAAA,IAAI,KAAK,YAAA,EAAc;AACrB,MAAA,OAAA,GAAU,MAAM,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AAAA,IAC3C;AACA,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,MAAA,MAAM,SAAS,IAAA,CAAK,SAAA;AAAA,QAClB,IAAA,CAAK,SAAA;AAAA,QACL,MAAA,CAAO,OAAO,SAAA,CAAU,OAAO,GAAG,OAAA,CAAQ,MAAA,EAAQ,QAAQ,IAAI,CAAA;AAAA,QAC9D,GAAA;AAAA,QACA,EAAE,MAAM,QAAA;AAAS,OACnB;AACA,MAAA,IAAA,CAAK,MACF,MAAA,CAAO,MAAA,EAAQ,EAAE,GAAG,KAAK,SAAA,EAAW,GAAG,IAAA,CAAK,eAAA,EAAiB,GAAG,OAAA,EAAS,CAAA,CACzE,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,QAAA,IAAA,CAAK,SAAA;AAAA,UACH,QAAA;AAAA,UACA,CAAC,GAAA,KAAQ;AACP,YAAA,IAAI,KAAK,YAAA,EAAc;AACrB,cAAA,GAAA,GAAM,IAAA,CAAK,aAAa,GAAG,CAAA;AAAA,YAC7B;AACA,YAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,UACb,CAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAC,EACA,KAAA,CAAM,CAAC,QAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,MAAM,CAAC,CAAA;AAAA,IAClD,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,cAAA,CAAe,MAAA,EAAuB,GAAA,EAAgC;AAC1E,IAAA,IAAI,OAAA,GAAU,SAAA,CAAU,MAAM,CAAA,IAAK,EAAC;AACpC,IAAA,IAAI,KAAK,oBAAA,EAAsB;AAC7B,MAAA,OAAA,GAAU,MAAM,IAAA,CAAK,oBAAA,CAAqB,OAAO,CAAA;AAAA,IACnD;AACA,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,MAAA,MAAM,SAAS,IAAA,CAAK,SAAA;AAAA,QAClB,IAAA,CAAK,iBAAA;AAAA,QACL,MAAA,CAAO,OAAO,SAAA,CAAU,OAAO,GAAG,OAAA,CAAQ,MAAA,EAAQ,QAAQ,IAAI,CAAA;AAAA,QAC9D,GAAA;AAAA,QACA,EAAE,MAAM,gBAAA;AAAiB,OAC3B;AACA,MAAA,IAAA,CAAK,MACF,MAAA,CAAO,MAAA,EAAQ,EAAE,GAAG,KAAK,SAAA,EAAW,GAAG,IAAA,CAAK,uBAAA,EAAyB,GAAG,OAAA,EAAS,CAAA,CACjF,IAAA,CAAK,CAAC,QAAA,KAAa;AAClB,QAAA,IAAA,CAAK,SAAA;AAAA,UACH,QAAA;AAAA,UACA,CAAC,GAAA,KAAsB;AACrB,YAAA,IAAI,KAAK,oBAAA,EAAsB;AAC7B,cAAA,GAAA,GAAM,IAAA,CAAK,qBAAqB,GAAG,CAAA;AAAA,YACrC;AACA,YAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,UACb,CAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAC,EACA,KAAA,CAAM,CAAC,QAAQ,IAAA,CAAK,YAAA,CAAa,GAAA,EAAK,MAAM,CAAC,CAAA;AAAA,IAClD,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAA,CAAU,QAAA,EAAwB,OAAA,EAA6B,MAAA,EAAiC;AAptBlG,IAAA,IAAAA,GAAAA;AAqtBI,IAAA,IAAI,QAAA,CAAS,QAAQ,CAAA,EAAG;AACtB,MAAA,OAAA,CAAQ,IAAA,CAAK,yBAAyB,QAAQ,CAAA;AAC9C,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAChB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,MAAA,OAAA,CAAA,CAAQA,GAAAA,GAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,IAAA,KAAV,IAAA,GAAAA,MAAkB,QAAQ,CAAA;AAClC,MAAA;AAAA,IACF;AACA,IAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,MAAA,MAAA,CAAO,IAAI,KAAA,CAAM,qBAAqB,CAAa,CAAA;AACnD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA;AACJ,IAAA,IAAA,GAAO,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,cAAA,CAAe,QAAQ,CAAA,GAAI,QAAA;AAE7D,IAAA,MAAM,eAAA,GAAkB,CAAC,GAAA,KAAkC;AACzD,MAAA,OAAO,GAAA,IAAO,QAAA,IAAY,GAAA,IAAO,SAAA,IAAa,OAAO,SAAA,IAAa,GAAA;AAAA,IACpE,CAAA;AAEA,IAAA,IAAI,eAAA,CAAgB,IAAI,CAAA,EAAG;AACzB,MAAA,IAAA,GAAO,IAAA,CAAK,IAAA;AAAA,IACd;AAEA,IAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,IAAA;AACvB,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA;AACvC,IAAA,IAAI,QAAQ,GAAA,EAAK;AACf,MAAA,MAAM,KAAA,GAAQ,sBAAQ,EAAC;AACvB,MAAA,IAAI,QAAA,CAAS,KAAK,CAAA,EAAG;AACnB,QAAA,IAAI,MAAM,OAAA,CAAQ,KAAA,CAAM,OAAO,CAAA,IAAK,MAAM,UAAA,EAAY;AACpD,UAAA,KAAA,CAAM,OAAO,KAAA,CAAM,OAAA;AACnB,UAAA,KAAA,CAAM,aAAa,EAAE,OAAA,EAAS,MAAM,UAAA,EAAY,KAAA,EAAO,MAAM,KAAA,EAAM;AAAA,QACrE;AAEA,QAAA,KAAA,CAAM,IAAA,GAAO,OAAA;AACb,QAAA,KAAA,CAAM,QAAA,GAAW,OAAA;AAAA,MACnB;AACA,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA,MAAO;AACL,MAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA;AAC/B,MAAA,KAAA,CAAM,IAAA,GAAO,IAAA;AACb,MAAA,KAAA,CAAM,QAAA,GAAW,QAAA;AACjB,MAAA,KAAA,CAAM,IAAA,GAAO,OAAA;AACb,MAAA,KAAA,CAAM,QAAA,GAAW,OAAA;AACjB,MAAA,MAAA,CAAO,KAAK,CAAA;AAAA,IACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAA,CAAa,GAAA,GAAW,EAAC,EAAG,MAAA,EAAiC;AA9wB/D,IAAA,IAAAA,GAAAA;AA+wBI,IAAA,IAAI,QAAA,CAAS,GAAG,CAAA,EAAG;AACjB,MAAA,OAAA,CAAQ,IAAA,CAAK,yBAAyB,GAAG,CAAA;AACzC,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAK,UAAA,EAAY;AACnB,MAAA,MAAA,CAAO,GAAG,CAAA;AACV,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,MAAA,MAAA,CAAA,CAAOA,GAAAA,GAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,IAAA,KAAL,IAAA,GAAAA,MAAa,GAAG,CAAA;AACvB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAA,CAAW,2BAAK,QAAA,KAAY,GAAA;AAClC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,UAAU,IAAA,CAAK,SAAA,CAAU,UAAU,EAAE,aAAA,EAAe,MAAM,CAAA;AAChE,MAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA;AAC/B,MAAA,KAAA,CAAM,OAAO,QAAA,CAAS,MAAA;AACtB,MAAA,KAAA,CAAM,QAAA,GAAW,QAAA;AACjB,MAAA,IAAI,OAAA,EAAS;AAEX,QAAA,KAAA,CAAM,QAAA,GAAW,OAAA;AACjB,QAAA,KAAA,CAAM,IAAA,GAAO,OAAA;AAAA,MACf;AACA,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA,IACrB;AACA,IAAA,OAAO,OAAO,GAAA,IAAA,IAAA,GAAA,GAAA,GAAO,EAAE,IAAA,EAAM,MAAA,CAAO,eAAe,CAAA;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAA,CACE,UACA,GAAA,GAAwB;AAAA;AAAA,IAEtB,aAAA,EAAe;AAAA,GACjB,EACQ;AACR,IAAA,MAAM,EAAE,aAAA,EAAc,GAAI,GAAA,IAAO,EAAC;AAClC,IAAA,IAAI,OAAA,GACD,QAAA,CAAS,IAAA,KAAS,QAAA,CAAS,KAAK,OAAA,IAAW,QAAA,CAAS,IAAA,CAAK,GAAA,CAAA,IAC1D,SAAS,GAAA,IACT,QAAA,CAAS,OAAA,IACT,IAAA,CAAK,iBAAiB,QAAQ,CAAA;AAEhC,IAAA,IAAI,CAAC,WAAW,aAAA,EAAe;AAC7B,MAAA,OAAA,GAAU,QAAA,CAAS,UAAA;AAAA,IACrB;AAEA,IAAA,OAAO,WAAW,MAAA,CAAO,aAAA;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,QAAA,EAA0B;AACzC,IAAA,MAAM,EAAE,eAAc,GAAI,MAAA;AAC1B,IAAA,IAAI,aAAa,aAAA,EAAe;AAC9B,MAAA,OAAO,aAAA;AAAA,IACT;AACA,IAAA,OAAO,YAAA,KAAiB,EAAA,GAAK,aAAA;AAAA,EAC/B;AACF,CAAA;AAaA,IAAO,kBAAA,GAAQ;ACr0BR,IAAM,eAAe,SAC1B,UAAA,GAAkC,EAAC,EACnC,GAAA,GAA8B,EAAC,EAC/B;AACA,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAqB,IAAI,kBAAA,CAAU,UAAU,CAAC,CAAA;AAC5D,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,MAAM,EAAE,YAAA,EAAc,WAAA,EAAY,GAAI,OAAO,EAAC;AAC9C,IAAA,IAAI,YAAA,EAAc;AAChB,MAAAC,KAAAA,CAAM,KAAA,CAAM,OAAA,EAAS,YAAY,CAAA;AAAA,IACnC;AACA,IAAA,IAAI,WAAA,EAAa;AACf,MAAAA,KAAAA,CAAM,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,WAAW,CAAA;AAAA,IACxC;AACA,IAAA,OAAO,KAAA,CAAM,OAAA;AAAA,EACf,CAAA,EAAG,GAAA,CAAI,aAAA,IAAiB,EAAE,CAAA;AAC5B;;;AC/BA,IAAO,aAAA,GAAQ","file":"index.mjs","sourcesContent":["import type { AxiosResponse, InternalAxiosRequestConfig } from \"axios\";\nimport axiosDef from \"axios\";\nimport Cookies from \"js-cookie\";\nimport { merge } from \"lodash-es\";\n\nimport type { CacheItem } from \"./RequestCache\";\n\nexport const TOKEN = \"token\";\n\nconst axios = axiosDef.create();\n\nexport interface AxiosRequestConfigWithCache extends InternalAxiosRequestConfig {\n  cache?: CacheItem;\n}\n\n// 使用交叉类型扩展 AxiosResponse\nexport type AxiosResponseCus = AxiosResponse & {\n  config: AxiosRequestConfigWithCache;\n};\n\n/**\n * setToken 选项接口\n */\nexport interface SetTokenOptions {\n  /** 是否同时设置 cookie */\n  hasCookie?: boolean;\n  /** cookie 属性配置 */\n  cookieAttrs?: Cookies.CookieAttributes;\n}\n\n/**\n * getToken 选项接口\n */\nexport interface GetTokenOptions {\n  /** 是否从 cookie 获取 */\n  hasCookie?: boolean;\n}\n\n/**\n * 处理错误回调函数的选项接口\n */\nexport interface HandleErrCbOptions {\n  /** 直接替换回调函数 */\n  replaceErrCb?: boolean;\n  /** 日志前缀 */\n  logPrefix?: string;\n}\n\n/**\n * 设置 token\n * @param token token 值\n * @param opt 选项\n */\nexport function setToken(token = \"\", opt?: SetTokenOptions) {\n  const { hasCookie = false } = opt || {};\n  const _t = token || \"\";\n  if (hasCookie) {\n    const { cookieAttrs } = opt || {};\n    const cookieOpt = merge(\n      {\n        expires: 365,\n      },\n      cookieAttrs,\n    );\n    Cookies.set(TOKEN, _t, cookieOpt);\n  }\n  localStorage.setItem(TOKEN, _t);\n  setAxAuthorization(_t);\n}\n\n/**\n * 获取 token\n * @param opt 选项\n * @returns token 值\n */\nexport function getToken(opt?: GetTokenOptions): string {\n  const { hasCookie = false } = opt || {};\n  let token = \"\";\n  if (hasCookie) {\n    token = Cookies.get(TOKEN) || \"\";\n    if (token) {\n      return token;\n    }\n  }\n  token = localStorage.getItem(TOKEN);\n  return token;\n}\n\nexport const temp = { axiosList: [axios, axiosDef] };\n\n/**\n * 设置 axios 列表，用于批量设置 axios 相关配置\n * @param axiosList axios 实例列表\n * @returns 更新后的 axios 实例列表\n */\nexport function setAxios(axiosList: (typeof axios | typeof axiosDef)[]) {\n  temp.axiosList = [...temp.axiosList, ...axiosList];\n  return temp.axiosList;\n}\n\n/**\n * axios 请求拦截器\n * @param cb 成功回调\n * @param errCb 错误回调\n * @param opt 选项\n */\nexport function setAxRequest(\n  cb: (\n    config: InternalAxiosRequestConfig,\n  ) => InternalAxiosRequestConfig | Promise<InternalAxiosRequestConfig>,\n  errCb?: (error: any) => Promise<any>,\n  opt?: HandleErrCbOptions,\n) {\n  temp.axiosList?.forEach((_ax) => {\n    _ax.interceptors.request.use(\n      cb,\n      handleErrCb(errCb, { logPrefix: \"Error axios response: \", ...opt }),\n    );\n  });\n}\n\n/**\n * 响应拦截器\n * @param cb 成功回调\n * @param errCb 错误回调\n * @param opt 选项\n */\nexport function setAxResponse(\n  cb: (response: AxiosResponse) => AxiosResponse | Promise<AxiosResponse>,\n  errCb?: (error) => Promise<any>,\n  opt?: HandleErrCbOptions,\n) {\n  temp.axiosList?.forEach((_ax) => {\n    _ax.interceptors.response.use(\n      cb,\n      handleErrCb(errCb, { logPrefix: \"Error axios response: \", ...opt }),\n    );\n  });\n}\n\n/**\n * 处理错误回调函数\n * @param errCb 错误回调\n * @param opt 选项\n * @returns 处理后的错误回调\n */\nexport function handleErrCb(errCb?: (error: any) => Promise<any>, opt?: HandleErrCbOptions) {\n  const { replaceErrCb, logPrefix } = opt || {};\n  const isFn = typeof errCb === \"function\";\n  if (replaceErrCb && isFn) {\n    return errCb;\n  }\n  return (error: any) => {\n    console.error(logPrefix, error);\n    return isFn ? errCb(error) : Promise.reject(error);\n  };\n}\n\n/**\n * 设置 axios.defaults\n * @param key 配置键\n * @param val 配置值\n */\nexport function setAxDefaults(key: string, val: any) {\n  temp.axiosList?.forEach((_ax) => {\n    (_ax.defaults as any)[key] = val;\n  });\n}\n\n/**\n * 设置 headers\n * @param key header 键\n * @param val header 值\n */\nexport function setAxHeaders(key: string, val: any) {\n  temp.axiosList?.forEach((_ax) => {\n    (_ax.defaults.headers as any)[key] = val;\n  });\n}\n\n/**\n * 设置 timeout\n * @param timeout 超时时间\n */\nexport function setAxTimeout(timeout = 0) {\n  setAxDefaults(\"timeout\", timeout);\n}\n\n/**\n * 设置 Authorization token\n * @param token token 值\n */\nexport function setAxAuthorization(token: string) {\n  setAxHeaders(\"Authorization\", token);\n}\n\n/**\n * 设置 baseUrl\n * @param url 基础 URL\n */\nexport function setAxBaseUrl(url: string) {\n  setAxDefaults(\"baseURL\", url);\n}\n\n/**\n * 获取 axios.CancelToken.source，用于取消请求\n * @returns CancelToken source\n */\nexport function getCancelTokenSource() {\n  return axiosDef.CancelToken.source();\n}\n\n/**\n * 检查是否是 cancel 的结果\n * @param res\n * @returns\n */\nexport function isCancel(res) {\n  return axiosDef.isCancel(res);\n}\n\n// 接口缓存处理\ntemp.axiosList?.forEach((_ax) => {\n  _ax.interceptors.response.use(\n    async (response: AxiosResponseCus) => {\n      // 存在缓存时，取缓存数据\n      if (response.config?.cache) {\n        // 有结果时结束 promise\n        response.config?.cache.resolve(response);\n        const res = await (response.config?.cache.promise as Promise<AxiosResponse>);\n        return res;\n      }\n      return response;\n    },\n    async (error) => {\n      // 取缓存数据\n      if (error?.cache && error?.cache.promise) {\n        // 有结果时结束 promise\n        const res = await (error?.cache.promise as Promise<AxiosResponse>);\n        return res;\n      }\n\n      // 接口取消\n      if (axiosDef.isCancel(error)) {\n        console.info(\"axios 请求已取消:\", error);\n        return Promise.reject(error);\n      }\n    },\n  );\n});\n\nexport { axios, axiosDef };\n\nexport default axios;\n","/** 默认错误提示文案 */\nconst DEFAULT_MSG = \"未知错误\";\n/** 网络异常提示文案 */\nconst NETWORK_MSG = \"网络异常，请检查网络是否开启\";\n\n/** 暂存相关变量 */\nexport interface TempStore {\n  defaultErrMsg: string;\n  networkErrMsg: string;\n  axios?: any;\n}\n\nexport const _$Temp: TempStore = {\n  defaultErrMsg: DEFAULT_MSG,\n  networkErrMsg: NETWORK_MSG,\n};\n\n/**\n * 设置默认的 axios\n * @param ax axios 实例\n */\nexport function setDefaultAxios(ax: any) {\n  if (ax) {\n    _$Temp.axios = ax;\n  }\n}\n\n/**\n * 设置默认的错误提示文案\n * @param msg 错误提示文案\n */\nexport function setDefaultErrMsg(msg: string) {\n  if (msg) {\n    _$Temp.defaultErrMsg = msg;\n  }\n}\n\n/**\n * 设置默认的网络异常提示文案\n * @param msg 网络异常提示文案\n */\nexport function setNetworkErrMsg(msg: string) {\n  if (msg) {\n    _$Temp.networkErrMsg = msg;\n  }\n}\n\n/**\n * 检测网络状态\n * @returns 网络是否可用\n */\nexport function checkNetwork(): boolean {\n  if (typeof navigator === \"undefined\") {\n    return true;\n  }\n  if (navigator.onLine === false) {\n    return false;\n  }\n  const _navigator = navigator as any;\n  const connection =\n    _navigator.connection || _navigator.mozConnection || _navigator.webkitConnection;\n  if (!connection) {\n    return true;\n  }\n  const noNetwork =\n    connection?.type === \"none\" || connection.downlink === 0 || connection.effectiveType === null;\n  return !noNetwork;\n}\n\n/**\n * 对象转 FormData 格式\n * @param data 对象数据\n * @returns FormData 对象\n */\nexport function objToFormData(data: Record<string, any>): FormData {\n  if (data instanceof FormData) {\n    return data;\n  }\n  const formData = new FormData();\n  Object.keys(data)?.forEach((key) => {\n    formData.set(key, data[key]);\n  });\n  return formData;\n}\n\n/**\n * FormData 转对象\n * @param formData FormData 对象\n * @returns 普通对象\n */\nexport function formDataToObj(formData: FormData | any): Record<string, any> {\n  if (!(formData instanceof FormData)) {\n    return formData;\n  }\n  const tempData: Record<string, any> = {};\n  for (const [key, value] of formData.entries()) {\n    tempData[key] = value;\n  }\n  return tempData;\n}\n","import {\n  merge,\n  each,\n  isString,\n  isNumber,\n  isBoolean,\n  pickBy,\n  isNil,\n  cloneDeep,\n  isObject,\n} from \"lodash-es\";\n\nimport { axios, isCancel } from \"./axios\";\n\nimport {\n  objToFormData,\n  formDataToObj,\n  _$Temp,\n  setDefaultAxios,\n  setDefaultErrMsg,\n  setNetworkErrMsg,\n  checkNetwork,\n} from \"./utils\";\n\nimport type {\n  JSONObject,\n  QueryParams,\n  RequestData,\n  ResponseData,\n  ResData,\n  AxiosConfig,\n  MapFunction,\n  RequestMapFunction,\n  GetListResult,\n  GetListFunc,\n  HandleResponseFunc,\n  ApiError,\n} from \"./type\";\n\n/**\n * DataModel 构造函数参数接口\n */\nexport interface DataModelOptions<R = any> {\n  /** 请求 url 替换的额外参数 */\n  ctx?: Record<string, any>;\n  /** GET 请求的参数 */\n  query?: QueryParams;\n\n  /** POST 接口地址 */\n  createApi?: string;\n  /** POST 接口提交前的数据处理回调 */\n  createMap?: MapFunction;\n  /** GET 详情 接口地址 */\n  getApi?: string;\n  /** GET 详情 接口返回后的数据处理回调 */\n  getMap?: MapFunction;\n  /** GET 列表 接口地址 */\n  getListApi?: string;\n  /** GET 列表 接口返回后的数据处理回调 */\n  getListMap?: MapFunction;\n  /** GET 列表 接口回调，用于自定义列表请求接口 */\n  getListFunc?: GetListFunc<R>;\n  /** PUT 接口地址 */\n  updateApi?: string;\n  /** PUT 接口提交前的数据处理回调 */\n  updateMap?: MapFunction;\n  /** PATCH 接口地址 */\n  patchApi?: string;\n  /** PATCH 接口提交前的数据处理回调 */\n  patchMap?: MapFunction;\n  /** DELETE 接口地址 */\n  deleteApi?: string;\n  /** DELETE 批量删除 接口地址 */\n  multipleDeleteApi?: string;\n\n  /** GET 列表 接口请求前数据处理回调 */\n  getListReqMap?: RequestMapFunction<QueryParams>;\n  /** GET 列表 接口请求结果数据处理回调 */\n  getListResMap?: MapFunction;\n  /** GET 详情 接口请求前数据处理回调 */\n  getReqMap?: RequestMapFunction<QueryParams>;\n  /** GET 详情 接口请求结果数据处理回调 */\n  getResMap?: MapFunction;\n  /** POST 接口请求前数据处理回调 */\n  createReqMap?: RequestMapFunction<RequestData>;\n  /** POST 接口请求结果数据处理回调 */\n  createResMap?: MapFunction;\n  /** PUT 接口请求前数据处理回调 */\n  updateReqMap?: RequestMapFunction<RequestData>;\n  /** PUT 接口请求结果数据处理回调 */\n  updateResMap?: MapFunction;\n  /** PATCH 接口请求前数据处理回调 */\n  patchReqMap?: RequestMapFunction<RequestData>;\n  /** PATCH 接口请求结果数据处理回调 */\n  patchResMap?: MapFunction;\n  /** DELETE 接口请求前数据处理回调 */\n  deleteReqMap?: RequestMapFunction<JSONObject>;\n  /** DELETE 接口请求结果数据处理回调 */\n  deleteResMap?: MapFunction;\n  /** DELETE 批量删除 接口请求前数据处理回调 */\n  multipleDeleteReqMap?: RequestMapFunction<JSONObject>;\n  /** DELETE 批量删除 接口请求结果数据处理回调 */\n  multipleDeleteResMap?: MapFunction;\n\n  /** 统一 response 回调，用于处理定制 response 格式 */\n  handleResponse?: HandleResponseFunc;\n\n  /** 请求的 axios 实例 */\n  axios?: typeof axios;\n  /** axios 配置 */\n  axiosConf?: AxiosConfig;\n\n  /** GET 列表接口 axios 配置 */\n  getListAxiosConf?: AxiosConfig;\n  /** GET 详情接口 axios 配置 */\n  getAxiosConf?: AxiosConfig;\n  /** POST 接口 axios 配置 */\n  createAxiosConf?: AxiosConfig;\n  /** PUT 接口 axios 配置 */\n  updateAxiosConf?: AxiosConfig;\n  /** PATCH 接口 axios 配置 */\n  patchAxiosConf?: AxiosConfig;\n  /** DELETE 接口 axios 配置 */\n  deleteAxiosConf?: AxiosConfig;\n  /** DELETE 批量删除接口 axios 配置 */\n  multipleDeleteAxiosConf?: AxiosConfig;\n\n  /** 是否返回完整的接口数据（response.data） */\n  isResponseData?: boolean;\n  /** 是否直接返回 response */\n  isResponse?: boolean;\n}\n\n/**\n * 删除请求配置接口\n */\nexport interface DeleteConfig {\n  /** axios delete url 参数 */\n  params?: JSONObject;\n  /** axios delete data 参数 */\n  data?: JSONObject;\n  /** 其他 axios delete 配置 */\n  [key: string]: any;\n}\n\n/**\n * 获取 API 地址的选项接口\n */\nexport interface GetApiUrlOptions {\n  /** 请求来源标识 */\n  from?: string;\n  [key: string]: any;\n}\n\n/**\n * 错误处理选项接口\n */\nexport interface HandleMsgOptions {\n  /** 是否使用 response.statusText 作为兜底 msg */\n  useStatusText?: boolean;\n}\n\n/**\n * DataModel 类\n * 用于封装常用的 CRUD 请求方法\n */\nclass DataModel<T = any, R = Record<string, any>> {\n  /** 是否返回完整的接口数据（response.data） */\n  isResponseData: boolean;\n  /** 是否直接返回 response */\n  isResponse: boolean;\n  /** 统一 response 回调，用于处理定制 response 格式 */\n  handleResponse?: HandleResponseFunc;\n\n  /** 请求 url 替换的额外参数 */\n  ctx: Record<string, any>;\n  /** GET 请求的参数 */\n  query: QueryParams;\n\n  /** POST 接口地址 */\n  createApi?: string;\n  /** POST 接口提交前的数据处理回调 */\n  createMap?: MapFunction;\n  /** GET 详情 接口地址 */\n  getApi?: string;\n  /** GET 详情 接口返回后的数据处理回调 */\n  getMap?: MapFunction;\n  /** GET 列表 接口地址 */\n  getListApi?: string;\n  /** GET 列表 接口返回后的数据处理回调 */\n  getListMap?: MapFunction;\n  /** GET 列表 接口回调，用于自定义列表请求接口 */\n  getListFunc?: GetListFunc<T>;\n  /** PUT 接口地址 */\n  updateApi?: string;\n  /** PUT 接口提交前的数据处理回调 */\n  updateMap?: MapFunction;\n  /** PATCH 接口地址 */\n  patchApi?: string;\n  /** PATCH 接口提交前的数据处理回调 */\n  patchMap?: MapFunction;\n  /** DELETE 接口地址 */\n  deleteApi?: string;\n  /** DELETE 批量删除 接口地址 */\n  multipleDeleteApi?: string;\n\n  /** GET 列表 接口请求前数据处理回调 */\n  getListReqMap?: RequestMapFunction<QueryParams>;\n  /** GET 列表 接口请求结果数据处理回调 */\n  getListResMap?: MapFunction;\n  /** GET 详情 接口请求前数据处理回调 */\n  getReqMap?: RequestMapFunction<QueryParams>;\n  /** GET 详情 接口请求结果数据处理回调 */\n  getResMap?: MapFunction;\n  /** POST 接口请求前数据处理回调 */\n  createReqMap?: RequestMapFunction<RequestData>;\n  /** POST 接口请求结果数据处理回调 */\n  createResMap?: MapFunction;\n  /** PUT 接口请求前数据处理回调 */\n  updateReqMap?: RequestMapFunction<RequestData>;\n  /** PUT 接口请求结果数据处理回调 */\n  updateResMap?: MapFunction;\n  /** PATCH 接口请求前数据处理回调 */\n  patchReqMap?: RequestMapFunction<RequestData>;\n  /** PATCH 接口请求结果数据处理回调 */\n  patchResMap?: MapFunction;\n  /** DELETE 接口请求前数据处理回调 */\n  deleteReqMap?: RequestMapFunction<JSONObject>;\n  /** DELETE 接口请求结果数据处理回调 */\n  deleteResMap?: MapFunction;\n  /** DELETE 批量删除 接口请求前数据处理回调 */\n  multipleDeleteReqMap?: RequestMapFunction<JSONObject>;\n  /** DELETE 批量删除 接口请求结果数据处理回调 */\n  multipleDeleteResMap?: MapFunction;\n\n  /** 请求的 axios 实例 */\n  axios: typeof axios;\n  /** axios 配置 */\n  axiosConf: AxiosConfig;\n\n  /** GET 列表接口 axios 配置 */\n  getListAxiosConf?: AxiosConfig;\n  /** GET 详情接口 axios 配置 */\n  getAxiosConf?: AxiosConfig;\n  /** POST 接口 axios 配置 */\n  createAxiosConf?: AxiosConfig;\n  /** PUT 接口 axios 配置 */\n  updateAxiosConf?: AxiosConfig;\n  /** PATCH 接口 axios 配置 */\n  patchAxiosConf?: AxiosConfig;\n  /** DELETE 接口 axios 配置 */\n  deleteAxiosConf?: AxiosConfig;\n  /** DELETE 批量删除接口 axios 配置 */\n  multipleDeleteAxiosConf?: AxiosConfig;\n\n  constructor(params: DataModelOptions<T>) {\n    const {\n      ctx,\n      query,\n      createApi,\n      createMap,\n      getApi,\n      getMap,\n      getListApi,\n      getListMap,\n      handleResponse,\n      getListFunc,\n      updateApi,\n      updateMap,\n      patchApi,\n      patchMap,\n      deleteApi,\n      multipleDeleteApi,\n      // 是否返回完整的接口数据（response.data）\n      isResponseData,\n      // 是否直接返回 response\n      isResponse,\n    } = params;\n\n    /** 是否返回完整的接口数据（response.data） */\n    this.isResponseData = !!isResponseData;\n    /** 是否直接返回 response */\n    this.isResponse = !!isResponse;\n    /** 统一 response 回调，用于处理定制 response 格式 */\n    this.handleResponse = handleResponse;\n\n    /** 请求 url 替换的额外参数 */\n    this.ctx = ctx || {};\n    /** GET 请求的参数 */\n    this.query = query || {};\n\n    /** POST 接口地址 */\n    this.createApi = createApi;\n    /** POST 接口提交前的数据处理回调 */\n    this.createMap = createMap;\n    /** GET 详情 接口地址 */\n    this.getApi = getApi;\n    /** GET 详情 接口返回后的数据处理回调 */\n    this.getMap = getMap;\n    /** GET 列表 接口地址 */\n    this.getListApi = getListApi;\n    /** GET 列表 接口返回后的数据处理回调 */\n    this.getListMap = getListMap;\n    /** GET 列表 接口回调，用于自定义列表请求接口。query => ({list: [], pagination: { total: 0 }}) 优先级高于 getListApi */\n    this.getListFunc = getListFunc;\n    /** PUT 接口地址 */\n    this.updateApi = updateApi;\n    /** PUT 接口提交前的数据处理回调 */\n    this.updateMap = updateMap;\n    /** PATCH 接口地址 */\n    this.patchApi = patchApi;\n    /** PATCH 接口提交前的数据处理回调 */\n    this.patchMap = patchMap;\n    /** DELETE 接口地址 */\n    this.deleteApi = deleteApi;\n    /** DELETE 批量删除 接口地址 */\n    this.multipleDeleteApi = multipleDeleteApi;\n\n    const {\n      getListReqMap,\n      getListResMap,\n      getReqMap,\n      getResMap,\n      createReqMap,\n      createResMap,\n      updateReqMap,\n      updateResMap,\n      patchReqMap,\n      patchResMap,\n      deleteReqMap,\n      deleteResMap,\n      multipleDeleteReqMap,\n      multipleDeleteResMap,\n    } = params || {};\n\n    /** GET 列表 接口请求前数据处理回调 */\n    this.getListReqMap = getListReqMap;\n    /** GET 列表 接口请求结果数据处理回调 */\n    this.getListResMap = getListResMap;\n    /** GET 详情 接口请求前数据处理回调 */\n    this.getReqMap = getReqMap;\n    /** GET 详情 接口请求结果数据处理回调 */\n    this.getResMap = getResMap;\n    /** POST 接口请求前数据处理回调 */\n    this.createReqMap = createReqMap;\n    /** POST 接口请求结果数据处理回调 */\n    this.createResMap = createResMap;\n    /** PUT 接口请求前数据处理回调 */\n    this.updateReqMap = updateReqMap;\n    /** PUT 接口请求结果数据处理回调 */\n    this.updateResMap = updateResMap;\n    /** PATCH 接口请求前数据处理回调 */\n    this.patchReqMap = patchReqMap;\n    /** PATCH 接口请求结果数据处理回调 */\n    this.patchResMap = patchResMap;\n    /** DELETE 接口请求前数据处理回调 */\n    this.deleteReqMap = deleteReqMap;\n    /** DELETE 接口请求结果数据处理回调 */\n    this.deleteResMap = deleteResMap;\n    /** DELETE 批量删除 接口请求前数据处理回调 */\n    this.multipleDeleteReqMap = multipleDeleteReqMap;\n    /** DELETE 批量删除 接口请求结果数据处理回调 */\n    this.multipleDeleteResMap = multipleDeleteResMap;\n\n    // axios 相关配置\n    const {\n      axios: as,\n      axiosConf,\n      getListAxiosConf,\n      getAxiosConf,\n      createAxiosConf,\n      updateAxiosConf,\n      patchAxiosConf,\n      deleteAxiosConf,\n      multipleDeleteAxiosConf,\n    } = params || {};\n\n    /** 请求的 axios 实例 */\n    this.axios = as || _$Temp.axios || axios;\n    /** axios 配置 */\n    this.axiosConf = axiosConf || {};\n\n    /** GET 列表接口 axios 配置 */\n    this.getListAxiosConf = getListAxiosConf;\n    /** GET 详情接口 axios 配置 */\n    this.getAxiosConf = getAxiosConf;\n    /** POST 接口 axios 配置 */\n    this.createAxiosConf = createAxiosConf;\n    /** PUT 接口 axios 配置 */\n    this.updateAxiosConf = updateAxiosConf;\n    /** PATCH 接口 axios 配置 */\n    this.patchAxiosConf = patchAxiosConf;\n    /** DELETE 接口 axios 配置 */\n    this.deleteAxiosConf = deleteAxiosConf;\n    /** DELETE 批量删除接口 axios 配置 */\n    this.multipleDeleteAxiosConf = multipleDeleteAxiosConf;\n  }\n\n  /**\n   * 获取请求 url 地址\n   * @param api 接口地址 https://a.com/test/:oId/:uId\n   * @param record 替换参数 { uId: 81 }\n   * @param ctx url 替换的额外参数\n   * @param opt 选项\n   * @returns 处理后的 api 地址\n   */\n  getApiUrl(\n    api: string | undefined,\n    record: JSONObject = {},\n    ctx: JSONObject = this.ctx,\n    opt?: GetApiUrlOptions,\n  ): string {\n    const { from } = opt ?? {};\n    if (!api) {\n      const errMsg = `${from ?? \"\"} api 不能为空。`;\n      console.error(`Error ${errMsg} 具体入参：api、record、ctx、opt：`, api, record, ctx, opt);\n      throw new Error(errMsg);\n    }\n    let apiUrl = api;\n    const params = merge({}, record, ctx);\n    each(params, (value, key) => {\n      if (!isString(value) || !isNumber(value) || isBoolean(value)) {\n        apiUrl = apiUrl.replace(new RegExp(`:${key}$|:${key}(?=/)`), value);\n      }\n    });\n    return apiUrl;\n  }\n\n  /**\n   * GET 详情请求\n   * @param q query 参数\n   * @param ctx url 替换的额外参数\n   * @param axiosConf axios 配置\n   * @returns Promise<any>\n   */\n  async get(q: QueryParams = {}, ctx: JSONObject = {}, axiosConf?: AxiosConfig): Promise<any> {\n    let query = merge({}, this.query, q);\n    query = pickBy(query, (val) => !isNil(val) && val !== \"\");\n\n    if (this.getReqMap) {\n      query = await this.getReqMap(query);\n    }\n\n    return new Promise((resolve, reject) => {\n      const apiUrl = this.getApiUrl(this.getApi, query, ctx, { from: \"get\" });\n      this.axios\n        .get(apiUrl, {\n          ...this.axiosConf,\n          ...this.getAxiosConf,\n          ...axiosConf,\n          params: query,\n        })\n        .then((response: ResponseData) => {\n          this.handleRes(\n            response,\n            (res: ResData<R>) => {\n              if (this.getMap) {\n                res = this.getMap(res);\n              }\n              if (this.getResMap) {\n                res = this.getResMap(res);\n              }\n              resolve(res);\n            },\n            reject,\n          );\n        })\n        .catch((err) => this.errorHandler(err, reject));\n    });\n  }\n\n  /**\n   * GET 列表请求\n   * @param q query 参数\n   * @param ctx url 替换的额外参数\n   * @param axiosConf axios 配置\n   * @returns Promise<GetListResult<T>>\n   */\n  async getList(\n    q: QueryParams = {},\n    ctx: JSONObject = {},\n    axiosConf?: AxiosConfig,\n  ): Promise<GetListResult<T>> {\n    let query = merge({}, this.query, q);\n    query = pickBy(query, (val) => !isNil(val) && val !== \"\");\n\n    if (this.getListReqMap) {\n      query = await this.getListReqMap(query);\n    }\n\n    let resultList: GetListResult<T> | null = null;\n    if (this.getListFunc) {\n      resultList = await this.getListFunc(query);\n    } else {\n      const getPro = new Promise<GetListResult<T>>((resolve, reject) => {\n        const apiUrl = this.getApiUrl(this.getListApi, q, ctx, { from: \"getList\" });\n        this.axios\n          .get(apiUrl, {\n            ...this.axiosConf,\n            ...this.getListAxiosConf,\n            ...axiosConf,\n            params: query,\n          })\n          .then((response) => {\n            this.handleRes(\n              response,\n              (res: GetListResult<T>) => {\n                // data: { list: [], pagination: { current: 0, total: 1 } }\n                resolve(res);\n              },\n              reject,\n            );\n          })\n          .catch((err) => this.errorHandler(err, reject));\n      });\n      resultList = await getPro;\n    }\n    if (this.getListMap) {\n      resultList.list = resultList.list?.map((record) => this.getListMap(record));\n    }\n    if (this.getListResMap) {\n      resultList = this.getListResMap(resultList);\n    }\n\n    return resultList;\n  }\n\n  /**\n   * POST 请求\n   * @param params 参数\n   * @param ctx url 替换的额外参数\n   * @param axiosConf axios 配置\n   * @returns Promise<any>\n   */\n  create(params?: RequestData | FormData, ctx?: JSONObject, axiosConf?: AxiosConfig): Promise<any> {\n    return new Promise(async (resolve, reject) => {\n      const opt: AxiosConfig = {\n        ...this.axiosConf,\n        ...this.createAxiosConf,\n        ...axiosConf,\n      };\n      let _params = cloneDeep(formDataToObj(params));\n      if (this.createReqMap) {\n        _params = await this.createReqMap(_params, params);\n      }\n      const apiUrl = this.getApiUrl(this.createApi, _params, ctx, { from: \"create\" });\n      if (params instanceof FormData) {\n        opt.headers = { ...(opt.headers ?? {}), \"Content-Type\": \"multipart/form-data\" };\n        _params = objToFormData(_params);\n      }\n      this.axios\n        .post(apiUrl, _params, opt)\n        .then((response: ResponseData) => {\n          this.handleRes(\n            response,\n            (res) => {\n              if (this.createResMap) {\n                res = this.createResMap(res);\n              }\n              resolve(res);\n            },\n            reject,\n          );\n        })\n        .catch((err) => this.errorHandler(err, reject));\n    });\n  }\n\n  /**\n   * PUT 请求\n   * @param params 参数\n   * @param ctx url 替换的额外参数\n   * @param axiosConf axios 配置\n   * @returns Promise<any>\n   */\n  update(params?: RequestData | FormData, ctx?: JSONObject, axiosConf?: AxiosConfig): Promise<any> {\n    return new Promise(async (resolve, reject) => {\n      const opt: AxiosConfig = { ...this.axiosConf, ...this.updateAxiosConf, ...axiosConf };\n      let _params = cloneDeep(formDataToObj(params));\n      if (this.updateReqMap) {\n        _params = await this.updateReqMap(_params, params);\n      }\n      const apiUrl = this.getApiUrl(this.updateApi, _params, ctx, { from: \"update\" });\n      if (params instanceof FormData) {\n        opt.headers = { ...(opt.headers ?? {}), \"Content-Type\": \"multipart/form-data\" };\n        _params = objToFormData(_params);\n      }\n      this.axios\n        .put(apiUrl, _params, opt)\n        .then((response) => {\n          this.handleRes(\n            response,\n            (res) => {\n              if (this.updateResMap) {\n                res = this.updateResMap(res);\n              }\n              resolve(res);\n            },\n            reject,\n          );\n        })\n        .catch((err) => this.errorHandler(err, reject));\n    });\n  }\n\n  /**\n   * PATCH 请求\n   * @param params 参数\n   * @param ctx url 替换的额外参数\n   * @param axiosConf axios 配置\n   * @returns Promise<any>\n   */\n  patch(params?: RequestData | FormData, ctx?: JSONObject, axiosConf?: AxiosConfig): Promise<any> {\n    return new Promise(async (resolve, reject) => {\n      const opt: AxiosConfig = { ...this.axiosConf, ...this.patchAxiosConf, ...axiosConf };\n      let _params = cloneDeep(formDataToObj(params));\n      if (this.patchReqMap) {\n        _params = await this.patchReqMap(_params, params);\n      }\n      const apiUrl = this.getApiUrl(this.patchApi, _params, ctx, { from: \"patch\" });\n      if (params instanceof FormData) {\n        opt.headers = { ...(opt.headers ?? {}), \"Content-Type\": \"multipart/form-data\" };\n        _params = objToFormData(_params);\n      }\n      this.axios\n        .patch(apiUrl, _params, opt)\n        .then((response) => {\n          this.handleRes(\n            response,\n            (res) => {\n              if (this.patchResMap) {\n                res = this.patchResMap(res);\n              }\n              resolve(res);\n            },\n            reject,\n          );\n        })\n        .catch((err) => this.errorHandler(err, reject));\n    });\n  }\n\n  /**\n   * 删除接口\n   * @param config axios.delete config 参数\n   * @param config.params axios.delete url 参数\n   * @param config.data axios.delete data 参数\n   * @param ctx url 替换的额外参数\n   * @returns Promise<any>\n   */\n  async delete(config?: DeleteConfig, ctx?: JSONObject): Promise<any> {\n    let _config = cloneDeep(config) || {};\n    if (this.deleteReqMap) {\n      _config = await this.deleteReqMap(_config);\n    }\n    return new Promise((resolve, reject) => {\n      const apiUrl = this.getApiUrl(\n        this.deleteApi,\n        Object.assign(cloneDeep(_config), _config.params, _config.data),\n        ctx,\n        { from: \"delete\" },\n      );\n      this.axios\n        .delete(apiUrl, { ...this.axiosConf, ...this.deleteAxiosConf, ..._config })\n        .then((response) => {\n          this.handleRes(\n            response,\n            (res) => {\n              if (this.deleteResMap) {\n                res = this.deleteResMap(res);\n              }\n              resolve(res);\n            },\n            reject,\n          );\n        })\n        .catch((err) => this.errorHandler(err, reject));\n    });\n  }\n\n  /**\n   * 批量删除接口\n   * @param config axios.delete config 参数\n   * @param config.params axios.delete url 参数\n   * @param config.data axios.delete data 参数\n   * @param ctx url 替换的额外参数\n   * @returns Promise<any>\n   */\n  async multipleDelete(config?: DeleteConfig, ctx?: JSONObject): Promise<any> {\n    let _config = cloneDeep(config) || {};\n    if (this.multipleDeleteReqMap) {\n      _config = await this.multipleDeleteReqMap(_config);\n    }\n    return new Promise((resolve, reject) => {\n      const apiUrl = this.getApiUrl(\n        this.multipleDeleteApi,\n        Object.assign(cloneDeep(_config), _config.params, _config.data),\n        ctx,\n        { from: \"multipleDelete\" },\n      );\n      this.axios\n        .delete(apiUrl, { ...this.axiosConf, ...this.multipleDeleteAxiosConf, ..._config })\n        .then((response) => {\n          this.handleRes(\n            response,\n            (res: ResponseData) => {\n              if (this.multipleDeleteResMap) {\n                res = this.multipleDeleteResMap(res);\n              }\n              resolve(res);\n            },\n            reject,\n          );\n        })\n        .catch((err) => this.errorHandler(err, reject));\n    });\n  }\n\n  /**\n   * 处理响应结果\n   * @param response axios 响应对象\n   * @param resolve 成功回调\n   * @param reject 失败回调\n   */\n  handleRes(response: ResponseData, resolve: (res: any) => void, reject: (err: ApiError) => void) {\n    if (isCancel(response)) {\n      console.info(\"errorHandler isCancel\", response);\n      return;\n    }\n    if (this.isResponse) {\n      resolve(response);\n      return;\n    }\n    if (this.isResponseData) {\n      resolve(response?.data ?? response);\n      return;\n    }\n    if (typeof response !== \"object\") {\n      reject(new Error(\"response not object\") as ApiError);\n      return;\n    }\n\n    let _res: ResponseData | ResData;\n    _res = this.handleResponse ? this.handleResponse(response) : response;\n\n    const isAxiosResponse = (obj: any): obj is ResponseData => {\n      return obj && \"status\" in obj && \"headers\" in obj && \"request\" in obj;\n    };\n\n    if (isAxiosResponse(_res)) {\n      _res = _res.data;\n    }\n\n    const { code, data } = _res as ResData;\n    const message = this.handleMsg(response);\n    if (code == 200) {\n      const _data = data ?? {};\n      if (isObject(_data)) {\n        if (Array.isArray(_data.content) && _data.pageNumber) {\n          _data.list = _data.content;\n          _data.pagination = { current: _data.pageNumber, total: _data.total };\n        }\n        // 前缀 _ 避免与 data 里已有的 message 冲突\n        _data._msg = message;\n        _data._message = message;\n      }\n      resolve(_data);\n    } else {\n      const error = new Error(message) as ApiError;\n      error.code = code;\n      error.response = response;\n      error._msg = message;\n      error._message = message;\n      reject(error);\n    }\n  }\n\n  /**\n   * 错误处理器\n   * @param err 错误对象\n   * @param reject Promise reject 回调\n   */\n  errorHandler(err: any = {}, reject: (err: ApiError) => void) {\n    if (isCancel(err)) {\n      console.info(\"errorHandler isCancel\", err);\n      return;\n    }\n    if (this.isResponse) {\n      reject(err);\n      return;\n    }\n    if (this.isResponseData) {\n      reject(err?.data ?? err);\n      return;\n    }\n    const response = err?.response || err;\n    if (response) {\n      const message = this.handleMsg(response, { useStatusText: true });\n      const error = new Error(message) as ApiError;\n      error.code = response.status;\n      error.response = response;\n      if (message) {\n        // 前缀 _ 避免与 data 里已有的 message 冲突\n        error._message = message;\n        error._msg = message;\n      }\n      return reject(error);\n    }\n    return reject(err ?? { _msg: _$Temp.networkErrMsg });\n  }\n\n  /**\n   * 处理错误消息\n   * @param response 响应对象\n   * @param opt 选项\n   * @returns 错误消息\n   */\n  handleMsg(\n    response: any,\n    opt: HandleMsgOptions = {\n      // 是否使用 response.statusText 作为兜底 msg\n      useStatusText: false,\n    },\n  ): string {\n    const { useStatusText } = opt || {};\n    let message =\n      (response.data && (response.data.message || response.data.msg)) ||\n      response.msg ||\n      response.message ||\n      this.getNetworkErrMsg(response);\n\n    if (!message && useStatusText) {\n      message = response.statusText;\n    }\n\n    return message || _$Temp.defaultErrMsg;\n  }\n\n  /**\n   * 获取网络错误消息\n   * @param httpCode HTTP 状态码\n   * @returns 错误消息\n   */\n  getNetworkErrMsg(httpCode: string): string {\n    const { networkErrMsg } = _$Temp;\n    if (httpCode === \"ERR_NETWORK\") {\n      return networkErrMsg;\n    }\n    return checkNetwork() ? \"\" : networkErrMsg;\n  }\n}\n\nexport {\n  axios,\n  checkNetwork,\n  DataModel,\n  formDataToObj,\n  objToFormData,\n  setDefaultAxios,\n  setDefaultErrMsg,\n  setNetworkErrMsg,\n};\n\nexport default DataModel;\n","import { useMemo, useRef } from \"react\";\nimport { merge } from \"lodash-es\";\nimport type { DataModelOptions } from \"./data-model\";\nimport DataModel from \"./data-model\";\n\n/**\n * useDataModel 选项接口\n */\nexport interface UseDataModelOptions<T = any> {\n  /** 动态数据监听的目标 */\n  effectTargets?: any[];\n  /** 动态的 params 数据，包含了 query */\n  effectParams?: Partial<DataModelOptions<T>>;\n  /** 动态的 query 数据 */\n  effectQuery?: DataModelOptions<T>[\"query\"];\n}\n\n/**\n * 解决 hooks 重复实例化导致 query 丢失的问题\n * @param {Object} initParams 初始参数\n * @param {Object} opt\n * @param {Object} opt.effectTargets 动态数据监听的目标\n * @param {Object} opt.effectParams 动态的 params 数据，包含了 query\n * @param {Object} opt.effectQuery 动态的 query 数据\n * @returns DataModel 实例\n */\nexport const useDataModel = function <T = any>(\n  initParams: DataModelOptions<T> = {},\n  opt: UseDataModelOptions<T> = {},\n) {\n  const model = useRef<DataModel<T>>(new DataModel(initParams));\n  return useMemo(() => {\n    const { effectParams, effectQuery } = opt || {};\n    if (effectParams) {\n      merge(model.current, effectParams);\n    }\n    if (effectQuery) {\n      merge(model.current.query, effectQuery);\n    }\n    return model.current;\n  }, opt.effectTargets || []);\n};\n","import axios from \"./axios\";\nimport DataModel from \"./data-model\";\n\nexport * from \"./axios\";\nexport * from \"./data-model\";\nexport * from \"./hooks\";\nexport * from \"./type\";\n\nexport { axios, DataModel };\n\nexport default DataModel;\n"]}