{"version":3,"mappings":";;;;;;;;;;;;;gFAcA,IAAIA,IACH,SAAUA,EAAS,EAGf,SAAUC,EAAS,CAChB,IAAIC,EAAO,OAAO,YAAe,SAAW,WACxC,OAAOC,IAAW,SAAWA,GACzB,OAAO,MAAS,SAAW,KACvB,OAAO,MAAS,SAAW,KACvBC,EAAgB,EAC5BC,EAAWC,EAAaN,CAAO,EAC/B,OAAOE,EAAK,QAAY,MACxBG,EAAWC,EAAaJ,EAAK,QAASG,CAAQ,GAElDJ,EAAQI,EAAUH,CAAI,EAClB,OAAOA,EAAK,QAAY,MACxBA,EAAK,QAAUF,GAEnB,SAASM,EAAaC,EAAQC,EAAU,CACpC,OAAO,SAAUC,EAAKC,EAAO,CACzB,OAAO,eAAeH,EAAQE,EAAK,CAAE,aAAc,GAAM,SAAU,GAAM,MAAOC,CAAK,CAAE,EACnFF,GACAA,EAASC,EAAKC,CAAK,CAC1B,CACb,CACQ,SAASC,GAAe,CACpB,GAAI,CACA,OAAO,SAAS,cAAc,EAAG,CACjD,MACsB,EACtB,CACQ,SAASC,GAAmB,CACxB,GAAI,CACA,SAAgB,MAAM,iCAAiC,CACvE,MACsB,EACtB,CACQ,SAASR,GAAiB,CACtB,OAAOO,EAAc,GAAIC,EAAkB,CACvD,CACA,GAAO,SAAUP,EAAUH,EAAM,CACzB,IAAIW,EAAS,OAAO,UAAU,eAE1BC,EAAiB,OAAO,QAAW,WACnCC,EAAoBD,GAAkB,OAAO,OAAO,YAAgB,IAAc,OAAO,YAAc,gBACvGE,EAAiBF,GAAkB,OAAO,OAAO,SAAa,IAAc,OAAO,SAAW,aAC9FG,EAAiB,OAAO,OAAO,QAAW,WAC1CC,EAAgB,CAAE,UAAW,CAAE,aAAc,MAC7CC,EAAY,CAACF,GAAkB,CAACC,EAChCE,EAAU,CAEV,OAAQH,EACF,UAAY,CAAE,OAAOI,GAAe,OAAO,OAAO,IAAI,CAAC,CAAE,EACzDH,EACI,UAAY,CAAE,OAAOG,GAAe,CAAE,UAAW,IAAM,EAAE,EACzD,UAAY,CAAE,OAAOA,GAAe,CAAE,EAAI,EACpD,IAAKF,EACC,SAAUG,EAAKb,EAAK,CAAE,OAAOI,EAAO,KAAKS,EAAKb,CAAG,CAAE,EACnD,SAAUa,EAAKb,EAAK,CAAE,OAAOA,KAAOa,CAAM,EAChD,IAAKH,EACC,SAAUG,EAAKb,EAAK,CAAE,OAAOI,EAAO,KAAKS,EAAKb,CAAG,EAAIa,EAAIb,CAAG,EAAI,MAAU,EAC1E,SAAUa,EAAKb,EAAK,CAAE,OAAOa,EAAIb,CAAG,CAAI,CACjD,EAEGc,EAAoB,OAAO,eAAe,QAAQ,EAClDC,EAAO,OAAO,KAAQ,YAAc,OAAO,IAAI,UAAU,SAAY,WAAa,IAAMC,EAAmB,EAC3GC,EAAO,OAAO,KAAQ,YAAc,OAAO,IAAI,UAAU,SAAY,WAAa,IAAMC,GAAmB,EAC3GC,EAAW,OAAO,SAAY,WAAa,QAAUC,GAAuB,EAC5EC,EAAiBhB,EAAiB,OAAO,IAAI,4BAA4B,EAAI,OAC7EiB,EAAmBC,GAA6B,EAChDC,EAAmBC,GAAuBH,CAAgB,EAwC9D,SAASI,EAASC,EAAY7B,EAAQ8B,EAAaC,EAAY,CAC3D,GAAKC,EAAYF,CAAW,EAYvB,CACD,GAAI,CAACG,GAAQJ,CAAU,EACnB,MAAM,IAAI,UACd,GAAI,CAACK,GAAclC,CAAM,EACrB,MAAM,IAAI,UACd,OAAOmC,EAAoBN,EAAY7B,CAAM,CAC7D,KAlB2C,CAC3B,GAAI,CAACiC,GAAQJ,CAAU,EACnB,MAAM,IAAI,UACd,GAAI,CAACO,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,GAAI,CAACoC,GAASL,CAAU,GAAK,CAACC,EAAYD,CAAU,GAAK,CAACM,GAAON,CAAU,EACvE,MAAM,IAAI,UACd,OAAIM,GAAON,CAAU,IACjBA,EAAa,QACjBD,EAAcQ,EAAcR,CAAW,EAChCS,EAAiBV,EAAY7B,EAAQ8B,EAAaC,CAAU,CACnF,CAQA,CACQjC,EAAS,WAAY8B,CAAQ,EA2C7B,SAASY,EAASC,EAAaC,EAAe,CAC1C,SAASC,EAAU3C,EAAQ8B,GAAa,CACpC,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,GAAI,CAACgC,EAAYF,EAAW,GAAK,CAACc,GAAcd,EAAW,EACvD,MAAM,IAAI,UACde,GAA0BJ,EAAaC,EAAe1C,EAAQ8B,EAAW,CACzF,CACY,OAAOa,CACnB,CACQ7C,EAAS,WAAY0C,CAAQ,EAwC7B,SAASM,EAAeL,EAAaC,EAAe1C,EAAQ8B,EAAa,CACrE,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,OAAKgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GACpCe,GAA0BJ,EAAaC,EAAe1C,EAAQ8B,CAAW,CAC5F,CACQhC,EAAS,iBAAkBgD,CAAc,EAmCzC,SAASC,EAAYN,EAAazC,EAAQ8B,EAAa,CACnD,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,OAAKgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GACpCkB,GAAoBP,EAAazC,EAAQ8B,CAAW,CACvE,CACQhC,EAAS,cAAeiD,CAAW,EAmCnC,SAASE,EAAeR,EAAazC,EAAQ8B,EAAa,CACtD,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,OAAKgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GACpCoB,GAAuBT,EAAazC,EAAQ8B,CAAW,CAC1E,CACQhC,EAAS,iBAAkBmD,CAAc,EAmCzC,SAASE,EAAYV,EAAazC,EAAQ8B,EAAa,CACnD,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,OAAKgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GACpCsB,GAAoBX,EAAazC,EAAQ8B,CAAW,CACvE,CACQhC,EAAS,cAAeqD,CAAW,EAmCnC,SAASE,EAAeZ,EAAazC,EAAQ8B,EAAa,CACtD,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,OAAKgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GACpCwB,GAAuBb,EAAazC,EAAQ8B,CAAW,CAC1E,CACQhC,EAAS,iBAAkBuD,CAAc,EAkCzC,SAASE,EAAgBvD,EAAQ8B,EAAa,CAC1C,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,OAAKgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GACpC0B,GAAqBxD,EAAQ8B,CAAW,CAC3D,CACQhC,EAAS,kBAAmByD,CAAe,EAkC3C,SAASE,EAAmBzD,EAAQ8B,EAAa,CAC7C,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACd,OAAKgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GACpC4B,GAAwB1D,EAAQ8B,CAAW,CAC9D,CACQhC,EAAS,qBAAsB2D,CAAkB,EAmCjD,SAASE,EAAelB,EAAazC,EAAQ8B,EAAa,CACtD,GAAI,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UAGd,GAFKgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GACvC,CAACM,GAASpC,CAAM,EAChB,MAAM,IAAI,UACTgC,EAAYF,CAAW,IACxBA,EAAcQ,EAAcR,CAAW,GAC3C,IAAI8B,EAAWC,EAAoB7D,EAAQ8B,EAAwB,EAAK,EACxE,OAAIE,EAAY4B,CAAQ,EACb,GACJA,EAAS,uBAAuBnB,EAAazC,EAAQ8B,CAAW,CACnF,CACQhC,EAAS,iBAAkB6D,CAAc,EACzC,SAASxB,EAAoBN,EAAY7B,EAAQ,CAC7C,QAAS8D,EAAIjC,EAAW,OAAS,EAAGiC,GAAK,EAAG,EAAEA,EAAG,CAC7C,IAAInB,EAAYd,EAAWiC,CAAC,EACxBC,GAAYpB,EAAU3C,CAAM,EAChC,GAAI,CAACgC,EAAY+B,EAAS,GAAK,CAAC1B,GAAO0B,EAAS,EAAG,CAC/C,GAAI,CAAC7B,GAAc6B,EAAS,EACxB,MAAM,IAAI,UACd/D,EAAS+D,EAC7B,CACA,CACY,OAAO/D,CACnB,CACQ,SAASuC,EAAiBV,EAAY7B,EAAQ8B,EAAakC,EAAY,CACnE,QAASF,GAAIjC,EAAW,OAAS,EAAGiC,IAAK,EAAG,EAAEA,GAAG,CAC7C,IAAInB,GAAYd,EAAWiC,EAAC,EACxBC,GAAYpB,GAAU3C,EAAQ8B,EAAakC,CAAU,EACzD,GAAI,CAAChC,EAAY+B,EAAS,GAAK,CAAC1B,GAAO0B,EAAS,EAAG,CAC/C,GAAI,CAAC3B,GAAS2B,EAAS,EACnB,MAAM,IAAI,UACdC,EAAaD,EACjC,CACA,CACY,OAAOC,CACnB,CAGQ,SAAShB,GAAoBiB,EAAaC,EAAGC,EAAG,CAC5C,IAAI7D,EAAS4C,GAAuBe,EAAaC,EAAGC,CAAC,EACrD,GAAI7D,EACA,MAAO,GACX,IAAI8D,GAASC,EAAuBH,CAAC,EACrC,OAAK7B,GAAO+B,EAAM,EAEX,GADIpB,GAAoBiB,EAAaG,GAAQD,CAAC,CAEjE,CAGQ,SAASjB,GAAuBe,EAAaC,EAAGC,EAAG,CAC/C,IAAIP,EAAWC,EAAoBK,EAAGC,EAAc,EAAK,EACzD,OAAInC,EAAY4B,CAAQ,EACb,GACJU,EAAUV,EAAS,uBAAuBK,EAAaC,EAAGC,CAAC,CAAC,CAC/E,CAGQ,SAASf,GAAoBa,EAAaC,EAAGC,EAAG,CAC5C,IAAI7D,EAAS4C,GAAuBe,EAAaC,EAAGC,CAAC,EACrD,GAAI7D,EACA,OAAOgD,GAAuBW,EAAaC,EAAGC,CAAC,EACnD,IAAIC,GAASC,EAAuBH,CAAC,EACrC,GAAI,CAAC7B,GAAO+B,EAAM,EACd,OAAOhB,GAAoBa,EAAaG,GAAQD,CAAC,CAEjE,CAGQ,SAASb,GAAuBW,EAAaC,EAAGC,EAAG,CAC/C,IAAIP,EAAWC,EAAoBK,EAAGC,EAAc,EAAK,EACzD,GAAI,CAAAnC,EAAY4B,CAAQ,EAExB,OAAOA,EAAS,uBAAuBK,EAAaC,EAAGC,CAAC,CACpE,CAGQ,SAAStB,GAA0BoB,EAAaM,EAAeL,EAAGC,EAAG,CACjE,IAAIP,GAAWC,EAAoBK,EAAGC,EAAc,EAAI,EACxDP,GAAS,0BAA0BK,EAAaM,EAAeL,EAAGC,CAAC,CAC/E,CAGQ,SAASX,GAAqBU,EAAG,EAAG,CAChC,IAAIM,EAAUd,GAAwBQ,EAAG,CAAC,EACtCE,EAASC,EAAuBH,CAAC,EACrC,GAAIE,IAAW,KACX,OAAOI,EACX,IAAIC,GAAajB,GAAqBY,EAAQ,CAAC,EAC/C,GAAIK,GAAW,QAAU,EACrB,OAAOD,EACX,GAAIA,EAAQ,QAAU,EAClB,OAAOC,GAGX,QAFIC,GAAM,IAAIvD,EACVwD,GAAO,CAAE,EACJC,GAAK,EAAGC,EAAYL,EAASI,GAAKC,EAAU,OAAQD,KAAM,CAC/D,IAAI1E,GAAM2E,EAAUD,EAAE,EAClBE,GAASJ,GAAI,IAAIxE,EAAG,EACnB4E,KACDJ,GAAI,IAAIxE,EAAG,EACXyE,GAAK,KAAKzE,EAAG,EAEjC,CACY,QAAS6E,GAAK,EAAGC,GAAeP,GAAYM,GAAKC,GAAa,OAAQD,KAAM,CACxE,IAAI7E,GAAM8E,GAAaD,EAAE,EACrBD,GAASJ,GAAI,IAAIxE,EAAG,EACnB4E,KACDJ,GAAI,IAAIxE,EAAG,EACXyE,GAAK,KAAKzE,EAAG,EAEjC,CACY,OAAOyE,EACnB,CAGQ,SAASjB,GAAwBQ,EAAG,EAAG,CACnC,IAAIN,EAAWC,EAAoBK,EAAG,EAAc,EAAK,EACzD,OAAKN,EAGEA,EAAS,wBAAwBM,EAAG,CAAC,EAFjC,CAAE,CAGzB,CAGQ,SAASe,GAAKC,EAAG,CACb,GAAIA,IAAM,KACN,MAAO,GACX,OAAQ,OAAOA,EAAC,CACZ,IAAK,YAAa,MAAO,GACzB,IAAK,UAAW,MAAO,GACvB,IAAK,SAAU,MAAO,GACtB,IAAK,SAAU,MAAO,GACtB,IAAK,SAAU,MAAO,GACtB,IAAK,SAAU,OAAOA,IAAM,KAAO,EAAe,EAClD,QAAS,MAAO,EAChC,CACA,CAGQ,SAASlD,EAAYkD,EAAG,CACpB,OAAOA,IAAM,MACzB,CAGQ,SAAS7C,GAAO6C,EAAG,CACf,OAAOA,IAAM,IACzB,CAGQ,SAASC,GAASD,EAAG,CACjB,OAAO,OAAOA,GAAM,QAChC,CAGQ,SAAS9C,GAAS8C,EAAG,CACjB,OAAO,OAAOA,GAAM,SAAWA,IAAM,KAAO,OAAOA,GAAM,UACrE,CAKQ,SAASE,GAAYC,EAAOC,EAAe,CACvC,OAAQL,GAAKI,CAAK,EAAC,CACf,IAAK,GAAmB,OAAOA,EAC/B,IAAK,GAAc,OAAOA,EAC1B,IAAK,GAAiB,OAAOA,EAC7B,IAAK,GAAgB,OAAOA,EAC5B,IAAK,GAAgB,OAAOA,EAC5B,IAAK,GAAgB,OAAOA,CAC5C,CACY,IAAIE,EAA0C,SAC1CC,EAAeC,GAAUJ,EAAO7E,CAAiB,EACrD,GAAIgF,IAAiB,OAAW,CAC5B,IAAIE,GAASF,EAAa,KAAKH,EAAOE,CAAI,EAC1C,GAAInD,GAASsD,EAAM,EACf,MAAM,IAAI,UACd,OAAOA,EACvB,CACY,OAAOC,EAAoBN,CAA2C,CAClF,CAGQ,SAASM,EAAoBzB,EAAGqB,EAAM,CACX,IAAAK,EAAAF,EAAA,CACnB,IAAIG,GAAa3B,EAAE,SACnB,GAAI4B,GAAWD,EAAU,EAAG,CACxB,IAAIH,EAASG,GAAW,KAAK3B,CAAC,EAC9B,GAAI,CAAC9B,GAASsD,CAAM,EAChB,OAAOA,CAC/B,CACgB,IAAIE,EAAU1B,EAAE,QAChB,GAAI4B,GAAWF,CAAO,EAAG,CACrB,IAAIF,EAASE,EAAQ,KAAK1B,CAAC,EAC3B,GAAI,CAAC9B,GAASsD,CAAM,EAChB,OAAOA,CAC/B,CACA,CAeY,MAAM,IAAI,SACtB,CAGQ,SAASpB,EAAUyB,EAAU,CACzB,MAAO,CAAC,CAACA,CACrB,CAGQ,SAASC,EAASD,EAAU,CACxB,MAAO,GAAKA,CACxB,CAGQ,SAASzD,EAAcyD,EAAU,CAC7B,IAAI7F,EAAMkF,GAAYW,CAAW,EACjC,OAAIZ,GAASjF,CAAG,EACLA,EACJ8F,EAAS9F,CAAG,CAC/B,CAKQ,SAAS+B,GAAQ8D,EAAU,CACvB,OAAO,MAAM,QACP,MAAM,QAAQA,CAAQ,EACtBA,aAAoB,OAChBA,aAAoB,MACpB,OAAO,UAAU,SAAS,KAAKA,CAAQ,IAAM,gBACnE,CAGQ,SAASD,GAAWC,EAAU,CAE1B,OAAO,OAAOA,GAAa,UACvC,CAGQ,SAAS7D,GAAc6D,EAAU,CAE7B,OAAO,OAAOA,GAAa,UACvC,CAGQ,SAASnD,GAAcmD,EAAU,CAC7B,OAAQd,GAAKc,CAAQ,EAAC,CAClB,IAAK,GAAgB,MAAO,GAC5B,IAAK,GAAgB,MAAO,GAC5B,QAAS,MAAO,EAChC,CACA,CACQ,SAASE,EAAcf,EAAGgB,EAAG,CACzB,OAAOhB,IAAMgB,GAAKhB,IAAMA,GAAKgB,IAAMA,CAC/C,CAKQ,SAAST,GAAUU,EAAG,EAAG,CACrB,IAAIC,EAAOD,EAAE,CAAC,EACd,GAA0BC,GAAS,KAEnC,IAAI,CAACN,GAAWM,CAAI,EAChB,MAAM,IAAI,UACd,OAAOA,EACnB,CAGQ,SAASC,GAAYC,EAAK,CACtB,IAAIC,EAASd,GAAUa,EAAK7F,CAAc,EAC1C,GAAI,CAACqF,GAAWS,CAAM,EAClB,MAAM,IAAI,UACd,IAAIC,EAAWD,EAAO,KAAKD,CAAG,EAC9B,GAAI,CAAClE,GAASoE,CAAQ,EAClB,MAAM,IAAI,UACd,OAAOA,CACnB,CAGQ,SAASC,GAAcC,EAAY,CAC/B,OAAOA,EAAW,KAC9B,CAGQ,SAASC,GAAaH,EAAU,CAC5B,IAAId,EAASc,EAAS,KAAM,EAC5B,OAAOd,EAAO,KAAO,GAAQA,CACzC,CAGQ,SAASkB,EAAcJ,EAAU,CAC7B,IAAIK,EAAIL,EAAS,OACbK,GACAA,EAAE,KAAKL,CAAQ,CAC/B,CAKQ,SAASnC,EAAuBH,EAAG,CAC/B,IAAI4C,EAAQ,OAAO,eAAe5C,CAAC,EAUnC,GATI,OAAOA,GAAM,YAAcA,IAAMlD,GASjC8F,IAAU9F,EACV,OAAO8F,EAEX,IAAIC,EAAY7C,EAAE,UACd8C,EAAiBD,GAAa,OAAO,eAAeA,CAAS,EACjE,GAAIC,GAAkB,MAAQA,IAAmB,OAAO,UACpD,OAAOF,EAEX,IAAIG,GAAcD,EAAe,YAIjC,OAHI,OAAOC,IAAgB,YAGvBA,KAAgB/C,EACT4C,EAEJG,EACnB,CAOQ,SAASC,GAAyB,CAC9B,IAAIC,EACA,CAACnF,EAAYT,CAAc,GAC3B,OAAO5B,EAAK,QAAY,KACxB,EAAE4B,KAAkB5B,EAAK,UACzB,OAAOA,EAAK,QAAQ,gBAAmB,aAEvCwH,EAAWC,GAAuBzH,EAAK,OAAO,GAElD,IAAI0H,EACAC,EACAC,EACAC,GAAoB,IAAInG,EACxBoG,GAAW,CACX,iBAAkBC,GAClB,YAAaC,EACb,YAAaC,EAChB,EACD,OAAOH,GACP,SAASC,GAAiB9D,GAAU,CAChC,GAAI,CAAC,OAAO,aAAa6D,EAAQ,EAC7B,MAAM,IAAI,MAAM,2CAA2C,EAE/D,OAAQ,GAAI,CACR,KAAKN,IAAavD,GAAU,MAC5B,KAAK5B,EAAYqF,CAAK,EAClBA,EAAQzD,GACR,MACJ,KAAKyD,IAAUzD,GAAU,MACzB,KAAK5B,EAAYsF,CAAM,EACnBA,EAAS1D,GACT,MACJ,KAAK0D,IAAW1D,GAAU,MAC1B,QACQ2D,IAAS,SACTA,EAAO,IAAIpG,GACfoG,EAAK,IAAI3D,EAAQ,EACjB,KACxB,CACA,CACY,SAASiE,GAAmB3D,GAAGC,GAAG,CAC9B,GAAI,CAACnC,EAAYqF,CAAK,EAAG,CACrB,GAAIA,EAAM,cAAcnD,GAAGC,EAAC,EACxB,OAAOkD,EACX,GAAI,CAACrF,EAAYsF,CAAM,EAAG,CACtB,GAAIA,EAAO,cAAcpD,GAAGC,EAAC,EACzB,OAAOkD,EACX,GAAI,CAACrF,EAAYuF,CAAI,EAEjB,QADIf,GAAWH,GAAYkB,CAAI,IAClB,CACT,IAAIO,GAAOnB,GAAaH,EAAQ,EAChC,GAAI,CAACsB,GACD,OAEJ,IAAIlE,GAAW6C,GAAcqB,EAAI,EACjC,GAAIlE,GAAS,cAAcM,GAAGC,EAAC,EAC3B,OAAAyC,EAAcJ,EAAQ,EACf5C,EAE3C,CAEA,CACA,CACgB,GAAI,CAAC5B,EAAYmF,CAAQ,GAAKA,EAAS,cAAcjD,GAAGC,EAAC,EACrD,OAAOgD,CAG3B,CACY,SAASQ,EAAYzD,GAAGC,GAAG,CACvB,IAAI4D,GAAcP,GAAkB,IAAItD,EAAC,EACrCN,GAIJ,OAHK5B,EAAY+F,EAAW,IACxBnE,GAAWmE,GAAY,IAAI5D,EAAC,GAE3BnC,EAAY4B,EAAQ,IAGzBA,GAAWiE,GAAmB3D,GAAGC,EAAC,EAC7BnC,EAAY4B,EAAQ,IACjB5B,EAAY+F,EAAW,IACvBA,GAAc,IAAI9G,EAClBuG,GAAkB,IAAItD,GAAG6D,EAAW,GAExCA,GAAY,IAAI5D,GAAGP,EAAQ,IAExBA,EACvB,CACY,SAASoE,GAAYpE,GAAU,CAC3B,GAAI5B,EAAY4B,EAAQ,EACpB,MAAM,IAAI,UACd,OAAOyD,IAAUzD,IAAY0D,IAAW1D,IAAY,CAAC5B,EAAYuF,CAAI,GAAKA,EAAK,IAAI3D,EAAQ,CAC3G,CACY,SAASgE,GAAY1D,GAAGC,GAAGP,GAAU,CACjC,GAAI,CAACoE,GAAYpE,EAAQ,EACrB,MAAM,IAAI,MAAM,mCAAmC,EAEvD,IAAIqE,GAAmBN,EAAYzD,GAAGC,EAAC,EACvC,GAAI8D,KAAqBrE,GAAU,CAC/B,GAAI,CAAC5B,EAAYiG,EAAgB,EAC7B,MAAO,GAEX,IAAIF,GAAcP,GAAkB,IAAItD,EAAC,EACrClC,EAAY+F,EAAW,IACvBA,GAAc,IAAI9G,EAClBuG,GAAkB,IAAItD,GAAG6D,EAAW,GAExCA,GAAY,IAAI5D,GAAGP,EAAQ,CAC/C,CACgB,MAAO,EACvB,CACA,CAIQ,SAASnC,IAA8B,CACnC,IAAID,EACJ,MAAI,CAACQ,EAAYT,CAAc,GAAKa,GAASzC,EAAK,OAAO,GAAK,OAAO,aAAaA,EAAK,OAAO,IAC1F6B,EAAmB7B,EAAK,QAAQ4B,CAAc,GAE9CS,EAAYR,CAAgB,IAC5BA,EAAmB0F,EAAwB,GAE3C,CAAClF,EAAYT,CAAc,GAAKa,GAASzC,EAAK,OAAO,GAAK,OAAO,aAAaA,EAAK,OAAO,GAC1F,OAAO,eAAeA,EAAK,QAAS4B,EAAgB,CAChD,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAOC,CAC3B,CAAiB,EAEEA,CACnB,CACQ,SAASG,GAAuB8F,EAAU,CAGtC,IAAIjF,EAAW,IAAInB,EACfuC,EAAW,CACX,cAAe,SAAUM,GAAGC,GAAG,CAC3B,IAAI+D,GAAiB1F,EAAS,IAAI0B,EAAC,EACnC,OAAIlC,EAAYkG,EAAc,EACnB,GACJA,GAAe,IAAI/D,EAAC,CAC9B,EACD,0BAA2BtB,GAC3B,uBAAwBK,GACxB,uBAAwBI,GACxB,wBAAyBI,GACzB,uBAAwByE,CAC3B,EACD,OAAA3G,EAAiB,iBAAiBoC,CAAQ,EACnCA,EACP,SAASwE,EAAuBlE,GAAGC,GAAGkE,GAAQ,CAC1C,IAAIH,GAAiB1F,EAAS,IAAI0B,EAAC,EAC/BoE,GAAwB,GAC5B,GAAItG,EAAYkG,EAAc,EAAG,CAC7B,GAAI,CAACG,GACD,OACJH,GAAiB,IAAIjH,EACrBuB,EAAS,IAAI0B,GAAGgE,EAAc,EAC9BI,GAAwB,EAC5C,CACgB,IAAIC,GAAcL,GAAe,IAAI/D,EAAC,EACtC,GAAInC,EAAYuG,EAAW,EAAG,CAC1B,GAAI,CAACF,GACD,OAGJ,GAFAE,GAAc,IAAItH,EAClBiH,GAAe,IAAI/D,GAAGoE,EAAW,EAC7B,CAACd,EAAS,YAAYvD,GAAGC,GAAGP,CAAQ,EACpC,MAAAsE,GAAe,OAAO/D,EAAC,EACnBmE,IACA9F,EAAS,OAAO0B,EAAC,EAEf,IAAI,MAAM,4BAA4B,CAEpE,CACgB,OAAOqE,EACvB,CAGY,SAASrF,GAAuBe,GAAaC,GAAGC,GAAG,CAC/C,IAAIoE,GAAcH,EAAuBlE,GAAGC,GAAc,EAAK,EAC/D,OAAInC,EAAYuG,EAAW,EAChB,GACJjE,EAAUiE,GAAY,IAAItE,EAAW,CAAC,CAC7D,CAGY,SAASX,GAAuBW,GAAaC,GAAGC,GAAG,CAC/C,IAAIoE,GAAcH,EAAuBlE,GAAGC,GAAc,EAAK,EAC/D,GAAI,CAAAnC,EAAYuG,EAAW,EAE3B,OAAOA,GAAY,IAAItE,EAAW,CAClD,CAGY,SAASpB,GAA0BoB,GAAaM,GAAeL,GAAGC,GAAG,CACjE,IAAIoE,GAAcH,EAAuBlE,GAAGC,GAAc,EAAI,EAC9DoE,GAAY,IAAItE,GAAaM,EAAa,CAC1D,CAGY,SAASb,GAAwBQ,GAAGC,GAAG,CACnC,IAAIQ,GAAO,CAAE,EACT4D,GAAcH,EAAuBlE,GAAGC,GAAc,EAAK,EAC/D,GAAInC,EAAYuG,EAAW,EACvB,OAAO5D,GAIX,QAHI6D,GAAUD,GAAY,KAAM,EAC5B/B,GAAWH,GAAYmC,EAAO,EAC9BC,GAAI,IACK,CACT,IAAIX,GAAOnB,GAAaH,EAAQ,EAChC,GAAI,CAACsB,GACD,OAAAnD,GAAK,OAAS8D,GACP9D,GAEX,IAAI+D,GAAYjC,GAAcqB,EAAI,EAClC,GAAI,CACAnD,GAAK8D,EAAC,EAAIC,EAClC,OAC2BC,GAAG,CACN,GAAI,CACA/B,EAAcJ,EAAQ,CAClD,QACgC,CACJ,MAAMmC,EAClC,CACA,CACoBF,IACpB,CACA,CACY,SAASN,EAAuBlE,GAAaC,GAAGC,GAAG,CAC/C,IAAIoE,GAAcH,EAAuBlE,GAAGC,GAAc,EAAK,EAG/D,GAFInC,EAAYuG,EAAW,GAEvB,CAACA,GAAY,OAAOtE,EAAW,EAC/B,MAAO,GACX,GAAIsE,GAAY,OAAS,EAAG,CACxB,IAAIL,GAAiB1F,EAAS,IAAI0B,EAAC,EAC9BlC,EAAYkG,EAAc,IAC3BA,GAAe,OAAO/D,EAAC,EACnB+D,GAAe,OAAS,GACxB1F,EAAS,OAAO0F,EAAc,EAG1D,CACgB,MAAO,EACvB,CACA,CACQ,SAASd,GAAuBwB,EAAS,CACrC,IAAI9F,EAAiB8F,EAAQ,eAAgB3F,EAAiB2F,EAAQ,eAAgBvF,EAAiBuF,EAAQ,eAAgBnF,GAAqBmF,EAAQ,mBAAoBjF,GAAiBiF,EAAQ,eACrMC,GAAgB,IAAIxH,EACpBuC,GAAW,CACX,cAAe,SAAUM,EAAGC,GAAG,CAC3B,IAAI2E,GAAsBD,GAAc,IAAI3E,CAAC,EAC7C,MAAI,CAAClC,EAAY8G,EAAmB,GAAKA,GAAoB,IAAI3E,EAAC,EACvD,GAEPV,GAAmBS,EAAGC,EAAC,EAAE,QACrBnC,EAAY8G,EAAmB,IAC/BA,GAAsB,IAAI3H,EAC1B0H,GAAc,IAAI3E,EAAG4E,EAAmB,GAE5CA,GAAoB,IAAI3E,EAAC,EAClB,IAEJ,EACV,EACD,0BAA2BrB,EAC3B,uBAAwBG,EACxB,uBAAwBI,EACxB,wBAAyBI,GACzB,uBAAwBE,EAC3B,EACD,OAAOC,EACnB,CAKQ,SAASC,EAAoBK,EAAG,EAAGmE,EAAQ,CACvC,IAAIU,EAAqBvH,EAAiB,YAAY0C,EAAG,CAAC,EAC1D,GAAI,CAAClC,EAAY+G,CAAkB,EAC/B,OAAOA,EAEX,GAAIV,EAAQ,CACR,GAAI7G,EAAiB,YAAY0C,EAAG,EAAGxC,CAAgB,EACnD,OAAOA,EAEX,MAAM,IAAI,MAAM,gBAAgB,CAChD,CAEA,CAEQ,SAASR,GAAoB,CACzB,IAAI8H,EAAgB,CAAE,EAClBC,EAAgB,CAAE,EAClBC,EAA6B,UAAY,CACzC,SAASA,GAAYvE,EAAMwE,GAAQC,GAAU,CACzC,KAAK,OAAS,EACd,KAAK,MAAQzE,EACb,KAAK,QAAUwE,GACf,KAAK,UAAYC,EACrC,CACgB,OAAAF,GAAY,UAAU,YAAY,EAAI,UAAY,CAAE,OAAO,IAAO,EAClEA,GAAY,UAAUzI,CAAc,EAAI,UAAY,CAAE,OAAO,IAAO,EACpEyI,GAAY,UAAU,KAAO,UAAY,CACrC,IAAIG,EAAQ,KAAK,OACjB,GAAIA,GAAS,GAAKA,EAAQ,KAAK,MAAM,OAAQ,CACzC,IAAI3D,GAAS,KAAK,UAAU,KAAK,MAAM2D,CAAK,EAAG,KAAK,QAAQA,CAAK,CAAC,EAClE,OAAIA,EAAQ,GAAK,KAAK,MAAM,QACxB,KAAK,OAAS,GACd,KAAK,MAAQJ,EACb,KAAK,QAAUA,GAGf,KAAK,SAEF,CAAE,MAAOvD,GAAQ,KAAM,EAAO,CAC7D,CACoB,MAAO,CAAE,MAAO,OAAW,KAAM,EAAM,CAC1C,EACDwD,GAAY,UAAU,MAAQ,SAAUI,EAAO,CAC3C,MAAI,KAAK,QAAU,IACf,KAAK,OAAS,GACd,KAAK,MAAQL,EACb,KAAK,QAAUA,GAEbK,CACT,EACDJ,GAAY,UAAU,OAAS,SAAU/I,EAAO,CAC5C,OAAI,KAAK,QAAU,IACf,KAAK,OAAS,GACd,KAAK,MAAQ8I,EACb,KAAK,QAAUA,GAEZ,CAAE,MAAO9I,EAAO,KAAM,EAAM,CACtC,EACM+I,EACvB,IACgBK,EAAqB,UAAY,CACjC,SAASA,IAAM,CACX,KAAK,MAAQ,CAAE,EACf,KAAK,QAAU,CAAE,EACjB,KAAK,UAAYP,EACjB,KAAK,YAAc,EACvC,CACgB,cAAO,eAAeO,GAAI,UAAW,OAAQ,CACzC,IAAK,UAAY,CAAE,OAAO,KAAK,MAAM,MAAS,EAC9C,WAAY,GACZ,aAAc,EAClC,CAAiB,EACDA,GAAI,UAAU,IAAM,SAAUrJ,EAAK,CAAE,OAAO,KAAK,MAAMA,EAAgB,EAAK,GAAK,CAAI,EACrFqJ,GAAI,UAAU,IAAM,SAAUrJ,EAAK,CAC/B,IAAImJ,GAAQ,KAAK,MAAMnJ,EAAgB,EAAK,EAC5C,OAAOmJ,IAAS,EAAI,KAAK,QAAQA,EAAK,EAAI,MAC7C,EACDE,GAAI,UAAU,IAAM,SAAUrJ,EAAKC,GAAO,CACtC,IAAIkJ,GAAQ,KAAK,MAAMnJ,EAAgB,EAAI,EAC3C,YAAK,QAAQmJ,EAAK,EAAIlJ,GACf,IACV,EACDoJ,GAAI,UAAU,OAAS,SAAUrJ,EAAK,CAClC,IAAImJ,GAAQ,KAAK,MAAMnJ,EAAgB,EAAK,EAC5C,GAAImJ,IAAS,EAAG,CAEZ,QADIG,GAAO,KAAK,MAAM,OACb1F,GAAIuF,GAAQ,EAAGvF,GAAI0F,GAAM1F,KAC9B,KAAK,MAAMA,GAAI,CAAC,EAAI,KAAK,MAAMA,EAAC,EAChC,KAAK,QAAQA,GAAI,CAAC,EAAI,KAAK,QAAQA,EAAC,EAExC,YAAK,MAAM,SACX,KAAK,QAAQ,SACTmC,EAAc/F,EAAK,KAAK,SAAS,IACjC,KAAK,UAAY8I,EACjB,KAAK,YAAc,IAEhB,EAC/B,CACoB,MAAO,EACV,EACDO,GAAI,UAAU,MAAQ,UAAY,CAC9B,KAAK,MAAM,OAAS,EACpB,KAAK,QAAQ,OAAS,EACtB,KAAK,UAAYP,EACjB,KAAK,YAAc,EACtB,EACDO,GAAI,UAAU,KAAO,UAAY,CAAE,OAAO,IAAIL,EAAY,KAAK,MAAO,KAAK,QAASO,EAAM,CAAI,EAC9FF,GAAI,UAAU,OAAS,UAAY,CAAE,OAAO,IAAIL,EAAY,KAAK,MAAO,KAAK,QAASQ,EAAQ,CAAI,EAClGH,GAAI,UAAU,QAAU,UAAY,CAAE,OAAO,IAAIL,EAAY,KAAK,MAAO,KAAK,QAASS,EAAQ,CAAI,EACnGJ,GAAI,UAAU,YAAY,EAAI,UAAY,CAAE,OAAO,KAAK,QAAO,CAAK,EACpEA,GAAI,UAAU9I,CAAc,EAAI,UAAY,CAAE,OAAO,KAAK,QAAO,CAAK,EACtE8I,GAAI,UAAU,MAAQ,SAAUrJ,EAAK0J,GAAQ,CACzC,GAAI,CAAC3D,EAAc,KAAK,UAAW/F,CAAG,EAAG,CACrC,KAAK,YAAc,GACnB,QAAS4D,GAAI,EAAGA,GAAI,KAAK,MAAM,OAAQA,KACnC,GAAImC,EAAc,KAAK,MAAMnC,EAAC,EAAG5D,CAAG,EAAG,CACnC,KAAK,YAAc4D,GACnB,KAChC,CAEA,CACoB,OAAI,KAAK,YAAc,GAAK8F,KACxB,KAAK,YAAc,KAAK,MAAM,OAC9B,KAAK,MAAM,KAAK1J,CAAG,EACnB,KAAK,QAAQ,KAAK,MAAS,GAExB,KAAK,WACf,EACMqJ,EACvB,IACY,OAAOA,EACP,SAASE,GAAOvJ,GAAK2J,EAAG,CACpB,OAAO3J,EACvB,CACY,SAASwJ,GAASG,GAAG1J,EAAO,CACxB,OAAOA,CACvB,CACY,SAASwJ,GAASzJ,GAAKC,EAAO,CAC1B,MAAO,CAACD,GAAKC,CAAK,CAClC,CACA,CAEQ,SAASiB,IAAoB,CACzB,IAAI0I,EAAqB,UAAY,CACjC,SAASA,GAAM,CACX,KAAK,KAAO,IAAI7I,CACpC,CACgB,cAAO,eAAe6I,EAAI,UAAW,OAAQ,CACzC,IAAK,UAAY,CAAE,OAAO,KAAK,KAAK,IAAO,EAC3C,WAAY,GACZ,aAAc,EAClC,CAAiB,EACDA,EAAI,UAAU,IAAM,SAAU3J,EAAO,CAAE,OAAO,KAAK,KAAK,IAAIA,CAAK,CAAI,EACrE2J,EAAI,UAAU,IAAM,SAAU3J,EAAO,CAAE,OAAO,KAAK,KAAK,IAAIA,EAAOA,CAAK,EAAG,IAAO,EAClF2J,EAAI,UAAU,OAAS,SAAU3J,EAAO,CAAE,OAAO,KAAK,KAAK,OAAOA,CAAK,CAAI,EAC3E2J,EAAI,UAAU,MAAQ,UAAY,CAAE,KAAK,KAAK,MAAK,CAAK,EACxDA,EAAI,UAAU,KAAO,UAAY,CAAE,OAAO,KAAK,KAAK,KAAI,CAAK,EAC7DA,EAAI,UAAU,OAAS,UAAY,CAAE,OAAO,KAAK,KAAK,KAAI,CAAK,EAC/DA,EAAI,UAAU,QAAU,UAAY,CAAE,OAAO,KAAK,KAAK,QAAO,CAAK,EACnEA,EAAI,UAAU,YAAY,EAAI,UAAY,CAAE,OAAO,KAAK,KAAI,CAAK,EACjEA,EAAI,UAAUrJ,CAAc,EAAI,UAAY,CAAE,OAAO,KAAK,KAAI,CAAK,EAC5DqJ,CACvB,IACY,OAAOA,CACnB,CAEQ,SAASxI,IAAwB,CAC7B,IAAIyI,EAAY,GACZpF,EAAO9D,EAAQ,OAAQ,EACvBmJ,EAAUC,EAAiB,EAC/B,OAAsB,UAAY,CAC9B,SAASC,GAAU,CACf,KAAK,KAAOD,EAAiB,CACjD,CACgB,OAAAC,EAAQ,UAAU,IAAM,SAAUlK,GAAQ,CACtC,IAAImK,GAAQC,GAAwBpK,GAAmB,EAAK,EAC5D,OAAOmK,KAAU,OAAYtJ,EAAQ,IAAIsJ,GAAO,KAAK,IAAI,EAAI,EAChE,EACDD,EAAQ,UAAU,IAAM,SAAUlK,GAAQ,CACtC,IAAImK,GAAQC,GAAwBpK,GAAmB,EAAK,EAC5D,OAAOmK,KAAU,OAAYtJ,EAAQ,IAAIsJ,GAAO,KAAK,IAAI,EAAI,MAChE,EACDD,EAAQ,UAAU,IAAM,SAAUlK,GAAQG,GAAO,CAC7C,IAAIgK,GAAQC,GAAwBpK,GAAmB,EAAI,EAC3D,OAAAmK,GAAM,KAAK,IAAI,EAAIhK,GACZ,IACV,EACD+J,EAAQ,UAAU,OAAS,SAAUlK,GAAQ,CACzC,IAAImK,GAAQC,GAAwBpK,GAAmB,EAAK,EAC5D,OAAOmK,KAAU,OAAY,OAAOA,GAAM,KAAK,IAAI,EAAI,EAC1D,EACDD,EAAQ,UAAU,MAAQ,UAAY,CAElC,KAAK,KAAOD,EAAiB,CAChC,EACMC,CACvB,EAAe,EACH,SAASD,GAAkB,CACvB,IAAI/J,EACJ,GACIA,EAAM,cAAgBmK,GAAY,QAC/BxJ,EAAQ,IAAI8D,EAAMzE,CAAG,GAC5B,OAAAyE,EAAKzE,CAAG,EAAI,GACLA,CACvB,CACY,SAASkK,GAAwBpK,EAAQsK,GAAQ,CAC7C,GAAI,CAAChK,EAAO,KAAKN,EAAQgK,CAAO,EAAG,CAC/B,GAAI,CAACM,GACD,OACJ,OAAO,eAAetK,EAAQgK,EAAS,CAAE,MAAOnJ,EAAQ,OAAM,EAAI,CACtF,CACgB,OAAOb,EAAOgK,CAAO,CACrC,CACY,SAASO,GAAgBC,EAAQhB,GAAM,CACnC,QAAS1F,GAAI,EAAGA,GAAI0F,GAAM,EAAE1F,GACxB0G,EAAO1G,EAAC,EAAI,KAAK,OAAQ,EAAG,IAAO,EACvC,OAAO0G,CACvB,CACY,SAASC,GAAejB,EAAM,CAC1B,GAAI,OAAO,YAAe,WAAY,CAClC,IAAIkB,GAAQ,IAAI,WAAWlB,CAAI,EAC/B,OAAI,OAAO,OAAW,IAClB,OAAO,gBAAgBkB,EAAK,EAEvB,OAAO,SAAa,IACzB,SAAS,gBAAgBA,EAAK,EAG9BH,GAAgBG,GAAOlB,CAAI,EAExBkB,EAC3B,CACgB,OAAOH,GAAgB,IAAI,MAAMf,CAAI,EAAGA,CAAI,CAC5D,CACY,SAASa,IAAa,CAClB,IAAIM,EAAOF,GAAeV,CAAS,EAEnCY,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,GAC3BA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,IAAO,IAE3B,QADIjF,GAAS,GACJkF,GAAS,EAAGA,GAASb,EAAW,EAAEa,GAAQ,CAC/C,IAAIC,GAAOF,EAAKC,EAAM,GAClBA,KAAW,GAAKA,KAAW,GAAKA,KAAW,KAC3ClF,IAAU,KACVmF,GAAO,KACPnF,IAAU,KACdA,IAAUmF,GAAK,SAAS,EAAE,EAAE,YAAa,CAC7D,CACgB,OAAOnF,EACvB,CACA,CAEQ,SAAS5E,GAAewF,EAAK,CACzB,OAAAA,EAAI,GAAK,OACT,OAAOA,EAAI,GACJA,CACnB,CACA,CAAK,CACL,GAAG7G,KAAYA,GAAU,GAAG,ECt4C5B;AAAA;AAAA;AAAA;AAAA,IAQA,MAAMqL,GAAY,OAAO,SAAa,IAQtC,SAASC,GAAiBC,EAAW,CACjC,OAAQ,OAAOA,GAAc,UACzB,gBAAiBA,GACjB,UAAWA,GACX,cAAeA,CACvB,CACA,SAASC,GAAW3E,EAAK,CACrB,OAAQA,EAAI,YACRA,EAAI,OAAO,WAAW,IAAM,UAG3BA,EAAI,SAAWyE,GAAiBzE,EAAI,OAAO,CACpD,CACA,MAAM4E,GAAS,OAAO,OACtB,SAASC,GAAcC,EAAIC,EAAQ,CAC/B,MAAMC,EAAY,CAAC,EACnB,UAAWpL,KAAOmL,EAAQ,CAChB,MAAAlL,EAAQkL,EAAOnL,CAAG,EACdoL,EAAApL,CAAG,EAAIqL,GAAQpL,CAAK,EACxBA,EAAM,IAAIiL,CAAE,EACZA,EAAGjL,CAAK,EAEX,OAAAmL,CACX,CACA,MAAME,GAAO,IAAM,CAAE,EAKfD,GAAU,MAAM,QA2BhBE,GAAU,KACVC,GAAe,KACfC,GAAW,MACXC,GAAW,KACXC,GAAQ,MACRC,GAAU,MAeVC,GAAsB,OACtBC,GAAuB,OACvBC,GAAe,OACfC,GAAkB,OAClBC,GAAoB,OACpBC,GAAc,OACdC,GAAqB,OACrBC,GAAe,OASrB,SAASC,GAAaC,EAAM,CACxB,OAAO,UAAU,GAAKA,CAAI,EACrB,QAAQJ,GAAa,GAAG,EACxB,QAAQL,GAAqB,GAAG,EAChC,QAAQC,GAAsB,GAAG,CAC1C,CAOA,SAASS,GAAWD,EAAM,CACtB,OAAOD,GAAaC,CAAI,EACnB,QAAQL,GAAmB,GAAG,EAC9B,QAAQE,GAAoB,GAAG,EAC/B,QAAQJ,GAAc,GAAG,CAClC,CAQA,SAASS,GAAiBF,EAAM,CAC5B,OAAQD,GAAaC,CAAI,EAEpB,QAAQV,GAAS,KAAK,EACtB,QAAQQ,GAAc,GAAG,EACzB,QAAQb,GAAS,KAAK,EACtB,QAAQC,GAAc,KAAK,EAC3B,QAAQQ,GAAiB,GAAG,EAC5B,QAAQC,GAAmB,GAAG,EAC9B,QAAQE,GAAoB,GAAG,EAC/B,QAAQJ,GAAc,GAAG,CAClC,CAMA,SAASU,GAAeH,EAAM,CAC1B,OAAOE,GAAiBF,CAAI,EAAE,QAAQZ,GAAU,KAAK,CACzD,CAOA,SAASgB,GAAWJ,EAAM,CACf,OAAAD,GAAaC,CAAI,EAAE,QAAQf,GAAS,KAAK,EAAE,QAAQI,GAAO,KAAK,CAC1E,CAUA,SAASgB,GAAYL,EAAM,CAChB,OAAAA,GAAQ,KAAO,GAAKI,GAAWJ,CAAI,EAAE,QAAQb,GAAU,KAAK,CACvE,CAQA,SAASmB,GAAON,EAAM,CACd,IACO,0BAAmB,GAAKA,CAAI,OAE3B,EAGZ,MAAO,GAAKA,CAChB,CAEA,MAAMO,GAAoB,MACpBC,GAAuBC,GAASA,EAAK,QAAQF,GAAmB,EAAE,EAUxE,SAASG,GAASC,EAAYC,EAAUC,EAAkB,IAAK,CAC3D,IAAIJ,EAAMK,EAAQ,GAAIC,EAAe,GAAIC,EAAO,GAG1C,MAAAC,EAAUL,EAAS,QAAQ,GAAG,EAChC,IAAAM,EAAYN,EAAS,QAAQ,GAAG,EAEhC,OAAAK,EAAUC,GAAaD,GAAW,IACtBC,EAAA,IAEZA,EAAY,KACLN,IAAS,MAAM,EAAGM,CAAS,EACnBN,IAAS,MAAMM,EAAY,EAAGD,EAAU,GAAKA,EAAUL,EAAS,MAAM,EACrFE,EAAQH,EAAWI,CAAY,GAE/BE,EAAU,KACVR,EAAOA,GAAQG,EAAS,MAAM,EAAGK,CAAO,EAExCD,EAAOJ,EAAS,MAAMK,EAASL,EAAS,MAAM,GAGlDH,EAAOU,GAAoBV,GAAsBG,EAAUC,CAAe,EAEnE,CACH,SAAUJ,GAAQM,GAAgB,KAAOA,EAAeC,EACxD,KAAAP,EACA,MAAAK,EACA,KAAMR,GAAOU,CAAI,CACrB,CACJ,CAOA,SAASI,GAAaC,EAAgBT,EAAU,CAC5C,MAAME,EAAQF,EAAS,MAAQS,EAAeT,EAAS,KAAK,EAAI,GAChE,OAAOA,EAAS,MAAQE,GAAS,KAAOA,GAASF,EAAS,MAAQ,GACtE,CAOA,SAASU,GAAUC,EAAUC,EAAM,CAE3B,OAACA,GAAQ,CAACD,EAAS,YAAc,aAAWC,EAAK,aAAa,EACvDD,EACJA,EAAS,MAAMC,EAAK,MAAM,GAAK,GAC1C,CAUA,SAASC,GAAoBJ,EAAgBK,EAAGC,EAAG,CACzC,MAAAC,EAAaF,EAAE,QAAQ,OAAS,EAChCG,EAAaF,EAAE,QAAQ,OAAS,EACtC,OAAQC,EAAa,IACjBA,IAAeC,GACfC,GAAkBJ,EAAE,QAAQE,CAAU,EAAGD,EAAE,QAAQE,CAAU,CAAC,GAC9DE,GAA0BL,EAAE,OAAQC,EAAE,MAAM,GAC5CN,EAAeK,EAAE,KAAK,IAAML,EAAeM,EAAE,KAAK,GAClDD,EAAE,OAASC,EAAE,IACrB,CAQA,SAASG,GAAkBJ,EAAGC,EAAG,CAI7B,OAAQD,EAAE,SAAWA,MAAQC,EAAE,SAAWA,EAC9C,CACA,SAASI,GAA0BL,EAAGC,EAAG,CACjC,UAAO,KAAKD,CAAC,EAAE,SAAW,OAAO,KAAKC,CAAC,EAAE,OAClC,SACX,UAAWjO,KAAOgO,EACd,GAAI,CAACM,GAA+BN,EAAEhO,CAAG,EAAGiO,EAAEjO,CAAG,CAAC,EACvC,SAER,QACX,CACA,SAASsO,GAA+BN,EAAGC,EAAG,CAC1C,OAAO5C,GAAQ2C,CAAC,EACVO,GAAkBP,EAAGC,CAAC,EACtB5C,GAAQ4C,CAAC,EACLM,GAAkBN,EAAGD,CAAC,EACtBA,IAAMC,CACpB,CAQA,SAASM,GAAkBP,EAAGC,EAAG,CACtB,OAAA5C,GAAQ4C,CAAC,EACVD,EAAE,SAAWC,EAAE,QAAUD,EAAE,MAAM,CAAC/N,EAAO2D,IAAM3D,IAAUgO,EAAErK,CAAC,CAAC,EAC7DoK,EAAE,SAAW,GAAKA,EAAE,CAAC,IAAMC,CACrC,CAOA,SAASR,GAAoBe,EAAIC,EAAM,CAC/B,GAAAD,EAAG,WAAW,GAAG,EACV,OAAAA,EAKX,GAAI,CAACA,EACM,OAAAC,EACL,MAAAC,EAAeD,EAAK,MAAM,GAAG,EAC7BE,EAAaH,EAAG,MAAM,GAAG,EACzBI,EAAgBD,EAAWA,EAAW,OAAS,CAAC,GAGlDC,IAAkB,MAAQA,IAAkB,MAC5CD,EAAW,KAAK,EAAE,EAElB,IAAAE,EAAWH,EAAa,OAAS,EACjCI,EACAC,EACJ,IAAKD,EAAa,EAAGA,EAAaH,EAAW,OAAQG,IAGjD,GAFAC,EAAUJ,EAAWG,CAAU,EAE3BC,IAAY,IAGhB,GAAIA,IAAY,KAERF,EAAW,GACXA,QAKJ,OAER,OAAQH,EAAa,MAAM,EAAGG,CAAQ,EAAE,KAAK,GAAG,EAC5C,IACAF,EAAW,MAAMG,CAAU,EAAE,KAAK,GAAG,CAC7C,CAgBA,MAAME,GAA4B,CAC9B,KAAM,IAEN,KAAM,OACN,OAAQ,CAAC,EACT,MAAO,CAAC,EACR,KAAM,GACN,SAAU,IACV,QAAS,CAAC,EACV,KAAM,CAAC,EACP,eAAgB,MACpB,EAEA,IAAIC,IACH,SAAUA,EAAgB,CACvBA,EAAe,IAAS,MACxBA,EAAe,KAAU,MAC7B,GAAGA,KAAmBA,GAAiB,GAAG,EAC1C,IAAIC,IACH,SAAUA,EAAqB,CAC5BA,EAAoB,KAAU,OAC9BA,EAAoB,QAAa,UACjCA,EAAoB,QAAa,EACrC,GAAGA,KAAwBA,GAAsB,GAAG,EAIpD,MAAMC,GAAQ,GAQd,SAASC,GAActB,EAAM,CACzB,GAAI,CAACA,EACD,GAAIlD,GAAW,CAEL,MAAAyE,EAAS,SAAS,cAAc,MAAM,EAC5CvB,EAAQuB,GAAUA,EAAO,aAAa,MAAM,GAAM,IAE3CvB,IAAK,QAAQ,kBAAmB,EAAE,OAGlCA,EAAA,IAMf,OAAIA,EAAK,CAAC,IAAM,KAAOA,EAAK,CAAC,IAAM,MAC/BA,EAAO,IAAMA,GAGVhB,GAAoBgB,CAAI,CACnC,CAEA,MAAMwB,GAAiB,UACvB,SAASC,GAAWzB,EAAMZ,EAAU,CAChC,OAAOY,EAAK,QAAQwB,GAAgB,GAAG,EAAIpC,CAC/C,CAEA,SAASsC,GAAmBC,EAAI/E,EAAQ,CAC9B,MAAAgF,EAAU,SAAS,gBAAgB,sBAAsB,EACzDC,EAASF,EAAG,sBAAsB,EACjC,OACH,SAAU/E,EAAO,SACjB,KAAMiF,EAAO,KAAOD,EAAQ,MAAQhF,EAAO,MAAQ,GACnD,IAAKiF,EAAO,IAAMD,EAAQ,KAAOhF,EAAO,KAAO,EACnD,CACJ,CACA,MAAMkF,GAAwB,KAAO,CACjC,KAAM,OAAO,QACb,IAAK,OAAO,OAChB,GACA,SAASC,GAAiBhB,EAAU,CAC5B,IAAAiB,EACJ,GAAI,OAAQjB,EAAU,CAClB,MAAMkB,EAAalB,EAAS,GACtBmB,EAAe,OAAOD,GAAe,UAAYA,EAAW,WAAW,GAAG,EAuC1EN,EAAK,OAAOM,GAAe,SAC3BC,EACI,SAAS,eAAeD,EAAW,MAAM,CAAC,CAAC,EAC3C,SAAS,cAAcA,CAAU,EACrCA,EACN,GAAI,CAACN,EAGD,OAEcK,EAAAN,GAAmBC,EAAIZ,CAAQ,OAG/BiB,EAAAjB,EAElB,mBAAoB,SAAS,gBAAgB,MAC7C,OAAO,SAASiB,CAAe,EAE/B,OAAO,SAASA,EAAgB,MAAQ,KAAOA,EAAgB,KAAO,OAAO,QAASA,EAAgB,KAAO,KAAOA,EAAgB,IAAM,OAAO,OAAO,CAEhK,CACA,SAASG,GAAalD,EAAMmD,EAAO,CAE/B,OADiB,QAAQ,MAAQ,QAAQ,MAAM,SAAWA,EAAQ,IAChDnD,CACtB,CACA,MAAMoD,OAAsB,IAC5B,SAASC,GAAmBpQ,EAAKqQ,EAAgB,CAC7BF,GAAA,IAAInQ,EAAKqQ,CAAc,CAC3C,CACA,SAASC,GAAuBtQ,EAAK,CAC3B,MAAAuQ,EAASJ,GAAgB,IAAInQ,CAAG,EAEtC,OAAAmQ,GAAgB,OAAOnQ,CAAG,EACnBuQ,CACX,CAiBA,IAAIC,GAAqB,IAAM,SAAS,SAAW,KAAO,SAAS,KAMnE,SAASC,GAAsB3C,EAAMZ,EAAU,CAC3C,KAAM,CAAE,SAAAW,EAAU,OAAA6C,EAAQ,KAAApD,CAASJ,IAE7BK,EAAUO,EAAK,QAAQ,GAAG,EAChC,GAAIP,EAAU,GAAI,CACd,IAAIoD,EAAWrD,EAAK,SAASQ,EAAK,MAAMP,CAAO,CAAC,EAC1CO,EAAK,MAAMP,CAAO,EAAE,OACpB,EACFqD,EAAetD,EAAK,MAAMqD,CAAQ,EAElC,OAAAC,EAAa,CAAC,IAAM,MACpBA,EAAe,IAAMA,GAClBhD,GAAUgD,EAAc,EAAE,EAGrC,OADahD,GAAUC,EAAUC,CAAI,EACvB4C,EAASpD,CAC3B,CACA,SAASuD,GAAoB/C,EAAMgD,EAAc3D,EAAiB4D,EAAS,CACvE,IAAIC,EAAY,CAAC,EACbC,EAAY,CAAC,EAGbC,EAAa,KACjB,MAAMC,EAAkB,CAAC,CAAE,MAAAC,KAAa,CAC9B,MAAA5C,EAAKiC,GAAsB3C,EAAM,QAAQ,EACzCW,EAAOtB,EAAgB,MACvBkE,EAAYP,EAAa,MAC/B,IAAIZ,EAAQ,EACZ,GAAIkB,EAAO,CAIH,GAHJjE,EAAgB,MAAQqB,EACxBsC,EAAa,MAAQM,EAEjBF,GAAcA,IAAezC,EAAM,CACtByC,EAAA,KACb,OAEJhB,EAAQmB,EAAYD,EAAM,SAAWC,EAAU,SAAW,OAG1DN,EAAQvC,CAAE,EAOdwC,EAAU,QAAoBM,GAAA,CACjBA,EAAAnE,EAAgB,MAAOsB,EAAM,CAClC,MAAAyB,EACA,KAAMjB,GAAe,IACrB,UAAWiB,EACLA,EAAQ,EACJhB,GAAoB,QACpBA,GAAoB,KACxBA,GAAoB,QAC7B,EACJ,CACL,EACA,SAASqC,GAAiB,CACtBL,EAAa/D,EAAgB,MAEjC,SAASqE,EAAOC,EAAU,CAEtBT,EAAU,KAAKS,CAAQ,EACvB,MAAMC,EAAW,IAAM,CACb,MAAAvI,EAAQ6H,EAAU,QAAQS,CAAQ,EACpCtI,EAAQ,IACE6H,EAAA,OAAO7H,EAAO,CAAC,CACjC,EACA,OAAA8H,EAAU,KAAKS,CAAQ,EAChBA,CAAA,CAEX,SAASC,GAAuB,CACtB,MAAE,QAAAC,GAAY,OACfA,EAAQ,OAEbA,EAAQ,aAAa5G,GAAO,GAAI4G,EAAQ,MAAO,CAAE,OAAQhC,IAAyB,GAAG,EAAE,EAE3F,SAASiC,GAAU,CACf,UAAWH,KAAYT,EACVS,EAAA,EACbT,EAAY,CAAC,EACN,2BAAoB,WAAYE,CAAe,EAC/C,2BAAoB,eAAgBQ,CAAoB,EAG5D,+BAAiB,WAAYR,CAAe,EAG5C,wBAAiB,eAAgBQ,EAAsB,CAC1D,QAAS,GACZ,EACM,CACH,eAAAJ,EACA,OAAAC,EACA,QAAAK,CACJ,CACJ,CAIA,SAASC,GAAWC,EAAMC,EAASC,EAASC,EAAW,GAAOC,EAAgB,GAAO,CAC1E,OACH,KAAAJ,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,SAAU,OAAO,QAAQ,OACzB,OAAQC,EAAgBvC,KAA0B,IACtD,CACJ,CACA,SAASwC,GAA0BtE,EAAM,CACrC,KAAM,CAAE,QAAA8D,EAAS,SAAA1E,CAAa,SAExBC,EAAkB,CACpB,MAAOsD,GAAsB3C,EAAMZ,CAAQ,CAC/C,EACM4D,EAAe,CAAE,MAAOc,EAAQ,KAAM,EAEvCd,EAAa,OACduB,EAAelF,EAAgB,MAAO,CAClC,KAAM,KACN,QAASA,EAAgB,MACzB,QAAS,KAET,SAAUyE,EAAQ,OAAS,EAC3B,SAAU,GAGV,OAAQ,MACT,EAAI,EAEF,SAAAS,EAAe7D,EAAI4C,EAAOL,EAAS,CAUlC,MAAAuB,EAAYxE,EAAK,QAAQ,GAAG,EAC5ByE,EAAMD,EAAY,IACjBpF,EAAS,MAAQ,SAAS,cAAc,MAAM,EAC3CY,EACAA,EAAK,MAAMwE,CAAS,GAAK9D,EAC7BgC,GAAA,EAAuB1C,EAAOU,EAChC,IAGAoD,EAAQb,EAAU,eAAiB,WAAW,EAAEK,EAAO,GAAImB,CAAG,EAC9DzB,EAAa,MAAQM,QAElBoB,EAAK,CAKJ,QAAQ,MAAMA,CAAG,EAGrBtF,EAAS6D,EAAU,UAAY,QAAQ,EAAEwB,CAAG,EAChD,CAEK,SAAAxB,EAAQvC,EAAI/D,EAAM,CACvB,MAAM2G,EAAQpG,GAAO,CAAC,EAAG4G,EAAQ,MAAOE,GAAWhB,EAAa,MAAM,KAEtEtC,EAAIsC,EAAa,MAAM,QAAS,IAAOrG,EAAM,CAAE,SAAUqG,EAAa,MAAM,SAAU,EACvEuB,EAAA7D,EAAI4C,EAAO,EAAI,EAC9BjE,EAAgB,MAAQqB,CAAA,CAEnB,SAAAiE,EAAKjE,EAAI/D,EAAM,CAGpB,MAAMiI,EAAe1H,GAAO,CAAC,EAI7B8F,EAAa,MAAOc,EAAQ,MAAO,CAC/B,QAASpD,EACT,OAAQoB,GAAsB,EACjC,EAMcyC,EAAAK,EAAa,QAASA,EAAc,EAAI,EACvD,MAAMtB,EAAQpG,GAAO,GAAI8G,GAAW3E,EAAgB,MAAOqB,EAAI,IAAI,EAAG,CAAE,SAAUkE,EAAa,SAAW,GAAKjI,CAAI,EACpG4H,EAAA7D,EAAI4C,EAAO,EAAK,EAC/BjE,EAAgB,MAAQqB,CAAA,CAErB,OACH,SAAUrB,EACV,MAAO2D,EACP,KAAA2B,EACA,QAAA1B,CACJ,CACJ,CAMA,SAAS4B,GAAiB7E,EAAM,CAC5BA,EAAOsB,GAActB,CAAI,EACnB,MAAA8E,EAAoBR,GAA0BtE,CAAI,EAClD+E,EAAmBhC,GAAoB/C,EAAM8E,EAAkB,MAAOA,EAAkB,SAAUA,EAAkB,OAAO,EACxH,SAAAE,EAAG5C,EAAO6C,EAAmB,GAAM,CACnCA,GACDF,EAAiB,eAAe,EACpC,QAAQ,GAAG3C,CAAK,EAEpB,MAAM8C,EAAgBhI,GAAO,CAEzB,SAAU,GACV,KAAA8C,EACA,GAAAgF,EACA,WAAYvD,GAAW,KAAK,KAAMzB,CAAI,GACvC8E,EAAmBC,CAAgB,EAC/B,6BAAeG,EAAe,WAAY,CAC7C,WAAY,GACZ,IAAK,IAAMJ,EAAkB,SAAS,MACzC,EACM,sBAAeI,EAAe,QAAS,CAC1C,WAAY,GACZ,IAAK,IAAMJ,EAAkB,MAAM,MACtC,EACMI,CACX,CASA,SAASC,GAAoBnF,EAAO,GAAI,CACpC,IAAIkD,EAAY,CAAC,EACbkC,EAAQ,CAAC/D,EAAK,EACdN,EAAW,EACff,EAAOsB,GAActB,CAAI,EACzB,SAASqF,EAAYjG,EAAU,CAC3B2B,IACIA,IAAaqE,EAAM,QAEnBA,EAAM,OAAOrE,CAAQ,EAEzBqE,EAAM,KAAKhG,CAAQ,EAEvB,SAAS6F,EAAiBvE,EAAIC,EAAM,CAAE,UAAA2E,EAAW,MAAAlD,GAAS,CACtD,MAAMmD,EAAO,CACT,UAAAD,EACA,MAAAlD,EACA,KAAMjB,GAAe,GACzB,EACA,UAAWwC,KAAYT,EACVS,EAAAjD,EAAIC,EAAM4E,CAAI,CAC3B,CAEJ,MAAML,EAAgB,CAElB,SAAU7D,GAEV,MAAO,CAAC,EACR,KAAArB,EACA,WAAYyB,GAAW,KAAK,KAAMzB,CAAI,EACtC,QAAQU,EAAI,CAEF0E,EAAA,OAAOrE,IAAY,CAAC,EAC1BsE,EAAY3E,CAAE,CAClB,EACA,KAAKA,EAAI/D,EAAM,CACX0I,EAAY3E,CAAE,CAClB,EACA,OAAOiD,EAAU,CACb,OAAAT,EAAU,KAAKS,CAAQ,EAChB,IAAM,CACH,MAAAtI,EAAQ6H,EAAU,QAAQS,CAAQ,EACpCtI,EAAQ,IACE6H,EAAA,OAAO7H,EAAO,CAAC,CACjC,CACJ,EACA,SAAU,CACN6H,EAAY,CAAC,EACbkC,EAAQ,CAAC/D,EAAK,EACHN,EAAA,CACf,EACA,GAAGqB,EAAOoD,EAAgB,GAAM,CAC5B,MAAM7E,EAAO,KAAK,SACZ2E,EAINlD,EAAQ,EAAIhB,GAAoB,KAAOA,GAAoB,QAChDL,EAAA,KAAK,IAAI,EAAG,KAAK,IAAIA,EAAWqB,EAAOgD,EAAM,OAAS,CAAC,CAAC,EAC/DI,GACiBP,EAAA,KAAK,SAAUtE,EAAM,CAClC,UAAA2E,EACA,MAAAlD,CAAA,CACH,CACL,CAER,EACO,6BAAe8C,EAAe,WAAY,CAC7C,WAAY,GACZ,IAAK,IAAME,EAAMrE,CAAQ,EAC5B,EACMmE,CACX,CA0BA,SAASO,GAAqBzF,EAAM,CAIhC,OAAAA,EAAO,SAAS,KAAOA,GAAQ,SAAS,SAAW,SAAS,OAAS,GAEhEA,EAAK,SAAS,GAAG,IACVA,GAAA,KAIL6E,GAAiB7E,CAAI,CAChC,CAEA,SAAS0F,GAAgBC,EAAO,CAC5B,OAAO,OAAOA,GAAU,UAAaA,GAAS,OAAOA,GAAU,QACnE,CACA,SAASC,GAAYC,EAAM,CACvB,OAAO,OAAOA,GAAS,UAAY,OAAOA,GAAS,QACvD,CAEA,MAAMC,GAA0B,OAAwE,EAAE,EAK1G,IAAIC,IACH,SAAUA,EAAuB,CAK9BA,EAAsBA,EAAsB,QAAa,CAAC,EAAI,UAK9DA,EAAsBA,EAAsB,UAAe,CAAC,EAAI,YAKhEA,EAAsBA,EAAsB,WAAgB,EAAE,EAAI,YACtE,GAAGA,KAA0BA,GAAwB,GAAG,EA2BxD,SAASC,GAAkBC,EAAM5I,EAAQ,CAS1B,OAAAH,GAAO,IAAI,MAAS,CACvB,KAAA+I,EACA,CAACH,EAAuB,EAAG,IAC5BzI,CAAM,CAEjB,CACA,SAAS6I,GAAoB5K,EAAO2K,EAAM,CAC9B,OAAA3K,aAAiB,OACrBwK,MAA2BxK,IAC1B2K,GAAQ,MAAQ,CAAC,EAAE3K,EAAM,KAAO2K,GACzC,CAgBA,MAAME,GAAqB,SACrBC,GAA2B,CAC7B,UAAW,GACX,OAAQ,GACR,MAAO,GACP,IAAK,EACT,EAEMC,GAAiB,sBAQvB,SAASC,GAAeC,EAAUC,EAAc,CAC5C,MAAMC,EAAUvJ,GAAO,GAAIkJ,GAA0BI,CAAY,EAE3DE,EAAQ,CAAC,EAEX,IAAAC,EAAUF,EAAQ,MAAQ,IAAM,GAEpC,MAAM9P,EAAO,CAAC,EACd,UAAWsK,KAAWsF,EAAU,CAE5B,MAAMK,EAAgB3F,EAAQ,OAAS,GAAK,CAAC,EAAuB,EAEhEwF,EAAQ,QAAU,CAACxF,EAAQ,SAChB0F,GAAA,KACf,QAASE,EAAa,EAAGA,EAAa5F,EAAQ,OAAQ4F,IAAc,CAC1D,MAAAC,EAAQ7F,EAAQ4F,CAAU,EAEhC,IAAIE,EAAkB,IACjBN,EAAQ,UAAY,IAA0C,GAC/D,GAAAK,EAAM,OAAS,EAEVD,IACUF,GAAA,KACfA,GAAWG,EAAM,MAAM,QAAQT,GAAgB,MAAM,EAClCU,GAAA,WAEdD,EAAM,OAAS,EAAyB,CAC7C,KAAM,CAAE,MAAA3U,EAAO,WAAA6U,EAAY,SAAAC,EAAU,OAAAC,CAAW,EAAAJ,EAChDnQ,EAAK,KAAK,CACN,KAAMxE,EACN,WAAA6U,EACA,SAAAC,CAAA,CACH,EACKE,QAAKD,GAAkBf,GAE7B,GAAIgB,IAAOhB,GAAoB,CACRY,GAAA,GAEf,IACI,WAAO,IAAII,CAAE,GAAG,QAEjBzC,EAAK,CACF,UAAI,MAAM,oCAAoCvS,CAAK,MAAMgV,CAAE,MAC7DzC,EAAI,OAAO,EACnB,CAGA,IAAA0C,EAAaJ,EAAa,OAAOG,CAAE,WAAWA,CAAE,OAAS,IAAIA,CAAE,IAE9DN,IACDO,EAGIH,GAAYhG,EAAQ,OAAS,EACvB,OAAOmG,CAAU,IACjB,IAAMA,GAChBH,IACcG,GAAA,KACPT,GAAAS,EACQL,GAAA,GACfE,IACmBF,GAAA,IACnBC,IACmBD,GAAA,KACnBI,IAAO,OACYJ,GAAA,KAE3BH,EAAc,KAAKG,CAAe,EAItCL,EAAM,KAAKE,CAAa,EAGxB,GAAAH,EAAQ,QAAUA,EAAQ,IAAK,CACzB,MAAA3Q,EAAI4Q,EAAM,OAAS,EACzBA,EAAM5Q,CAAC,EAAE4Q,EAAM5Q,CAAC,EAAE,OAAS,CAAC,GAAK,kBAGhC2Q,EAAQ,SACEE,GAAA,MACXF,EAAQ,IACGE,GAAA,IAENF,EAAQ,QAAU,CAACE,EAAQ,SAAS,GAAG,IACjCA,GAAA,WACf,MAAMQ,EAAK,IAAI,OAAOR,EAASF,EAAQ,UAAY,GAAK,GAAG,EAC3D,SAASY,EAAMpI,EAAM,CACX,MAAAqI,EAAQrI,EAAK,MAAMkI,CAAE,EACrB9J,EAAS,CAAC,EAChB,GAAI,CAACiK,EACM,YACX,QAASxR,EAAI,EAAGA,EAAIwR,EAAM,OAAQxR,IAAK,CAC7B,MAAA3D,EAAQmV,EAAMxR,CAAC,GAAK,GACpB5D,EAAMyE,EAAKb,EAAI,CAAC,EACfuH,EAAAnL,EAAI,IAAI,EAAIC,GAASD,EAAI,WAAaC,EAAM,MAAM,GAAG,EAAIA,CAAA,CAE7D,OAAAkL,CAAA,CAEX,SAASkK,EAAUlK,EAAQ,CACvB,IAAI4B,EAAO,GAEPuI,EAAuB,GAC3B,UAAWvG,KAAWsF,EAAU,EACxB,CAACiB,GAAwB,CAACvI,EAAK,SAAS,GAAG,KACnCA,GAAA,KACWuI,EAAA,GACvB,UAAWV,KAAS7F,EACZ,GAAA6F,EAAM,OAAS,EACf7H,GAAQ6H,EAAM,cAETA,EAAM,OAAS,EAAyB,CAC7C,KAAM,CAAE,MAAA3U,EAAO,WAAA6U,EAAY,SAAAC,CAAa,EAAAH,EAClCW,EAAQtV,KAASkL,EAASA,EAAOlL,CAAK,EAAI,GAChD,GAAIoL,GAAQkK,CAAK,GAAK,CAACT,EACnB,MAAM,IAAI,MAAM,mBAAmB7U,CAAK,2DAA2D,EAEvG,MAAMqM,EAAOjB,GAAQkK,CAAK,EACpBA,EAAM,KAAK,GAAG,EACdA,EACN,GAAI,CAACjJ,EACD,GAAIyI,EAEIhG,EAAQ,OAAS,IAEbhC,EAAK,SAAS,GAAG,EACVA,IAAK,MAAM,EAAG,EAAE,EAGAuI,EAAA,QAI/B,OAAM,IAAI,MAAM,2BAA2BrV,CAAK,GAAG,EAEnD8M,GAAAT,CAAA,CAEhB,CAGJ,OAAOS,GAAQ,IAEZ,OACH,GAAAkI,EACA,MAAAT,EACA,KAAA/P,EACA,MAAA0Q,EACA,UAAAE,CACJ,CACJ,CAUA,SAASG,GAAkBxH,EAAGC,EAAG,CAC7B,IAAIrK,EAAI,EACR,KAAOA,EAAIoK,EAAE,QAAUpK,EAAIqK,EAAE,QAAQ,CACjC,MAAMwH,EAAOxH,EAAErK,CAAC,EAAIoK,EAAEpK,CAAC,EAEnB,GAAA6R,EACO,OAAAA,EACX7R,GAAA,CAIA,OAAAoK,EAAE,OAASC,EAAE,OACND,EAAE,SAAW,GAAKA,EAAE,CAAC,IAAM,GAC5B,GACA,EAEDA,EAAE,OAASC,EAAE,OACXA,EAAE,SAAW,GAAKA,EAAE,CAAC,IAAM,GAC5B,EACA,GAEH,CACX,CAQA,SAASyH,GAAuB1H,EAAGC,EAAG,CAClC,IAAIrK,EAAI,EACR,MAAM+R,EAAS3H,EAAE,MACX4H,EAAS3H,EAAE,MACjB,KAAOrK,EAAI+R,EAAO,QAAU/R,EAAIgS,EAAO,QAAQ,CAC3C,MAAMC,EAAOL,GAAkBG,EAAO/R,CAAC,EAAGgS,EAAOhS,CAAC,CAAC,EAE/C,GAAAiS,EACO,OAAAA,EACXjS,GAAA,CAEJ,GAAI,KAAK,IAAIgS,EAAO,OAASD,EAAO,MAAM,IAAM,EAAG,CAC/C,GAAIG,GAAoBH,CAAM,EACnB,SACX,GAAIG,GAAoBF,CAAM,EACnB,SAGR,OAAAA,EAAO,OAASD,EAAO,MAOlC,CAOA,SAASG,GAAoBtB,EAAO,CAChC,MAAMuB,EAAOvB,EAAMA,EAAM,OAAS,CAAC,EACnC,OAAOA,EAAM,OAAS,GAAKuB,EAAKA,EAAK,OAAS,CAAC,EAAI,CACvD,CAEA,MAAMC,GAAa,CACf,KAAM,EACN,MAAO,EACX,EACMC,GAAiB,eAIvB,SAASC,GAAanJ,EAAM,CACxB,GAAI,CAACA,EACM,OAAC,EAAE,EACd,GAAIA,IAAS,IACF,OAAC,CAACiJ,EAAU,CAAC,EACxB,GAAI,CAACjJ,EAAK,WAAW,GAAG,EACd,UAAI,MAEJ,iBAAiBA,CAAI,GAAG,EAGlC,SAASoJ,EAAMC,EAAS,CACd,UAAI,MAAM,QAAQhF,CAAK,MAAM9G,CAAM,MAAM8L,CAAO,EAAE,EAE5D,IAAIhF,EAAQ,EACRiF,EAAgBjF,EACpB,MAAMkF,EAAS,CAAC,EAGZ,IAAAvH,EACJ,SAASwH,GAAkB,CACnBxH,GACAuH,EAAO,KAAKvH,CAAO,EACvBA,EAAU,CAAC,EAGf,IAAInL,EAAI,EAEJ4S,EAEAlM,EAAS,GAETmM,EAAW,GACf,SAASC,GAAgB,CAChBpM,IAED8G,IAAU,EACVrC,EAAQ,KAAK,CACT,KAAM,EACN,MAAOzE,CAAA,CACV,EAEI8G,IAAU,GACfA,IAAU,GACVA,IAAU,GACNrC,EAAQ,OAAS,IAAMyH,IAAS,KAAOA,IAAS,MAC1CL,EAAA,uBAAuB7L,CAAM,8CAA8C,EACrFyE,EAAQ,KAAK,CACT,KAAM,EACN,MAAOzE,EACP,OAAQmM,EACR,WAAYD,IAAS,KAAOA,IAAS,IACrC,SAAUA,IAAS,KAAOA,IAAS,IACtC,GAGDL,EAAM,iCAAiC,EAElC7L,EAAA,IAEb,SAASqM,GAAkB,CACbrM,GAAAkM,CAAA,CAEP,KAAA5S,EAAImJ,EAAK,QAAQ,CAEhB,GADJyJ,EAAOzJ,EAAKnJ,GAAG,EACX4S,IAAS,MAAQpF,IAAU,EAAoC,CAC/CiF,EAAAjF,EACRA,EAAA,EACR,SAEJ,OAAQA,EAAO,CACX,IAAK,GACGoF,IAAS,KACLlM,GACcoM,EAAA,EAEFH,EAAA,GAEXC,IAAS,KACAE,EAAA,EACNtF,EAAA,GAGQuF,EAAA,EAEpB,MACJ,IAAK,GACeA,EAAA,EACRvF,EAAAiF,EACR,MACJ,IAAK,GACGG,IAAS,IACDpF,EAAA,EAEH6E,GAAe,KAAKO,CAAI,EACbG,EAAA,GAGFD,EAAA,EACNtF,EAAA,EAEJoF,IAAS,KAAOA,IAAS,KAAOA,IAAS,KACzC5S,KAER,MACJ,IAAK,GAMG4S,IAAS,IAELC,EAASA,EAAS,OAAS,CAAC,GAAK,KACjCA,EAAWA,EAAS,MAAM,EAAG,EAAE,EAAID,EAE3BpF,EAAA,EAGAqF,GAAAD,EAEhB,MACJ,IAAK,GAEaE,EAAA,EACNtF,EAAA,EAEJoF,IAAS,KAAOA,IAAS,KAAOA,IAAS,KACzC5S,IACO6S,EAAA,GACX,MACJ,QACIN,EAAM,eAAe,EACrB,MACR,CAEJ,OAAI/E,IAAU,GACJ+E,EAAA,uCAAuC7L,CAAM,GAAG,EAC5CoM,EAAA,EACEH,EAAA,EAETD,CACX,CAEA,SAASM,GAAyBC,EAAQ3S,EAAQqQ,EAAS,CACvD,MAAMuC,EAAS1C,GAAe8B,GAAaW,EAAO,IAAI,EAAGtC,CAAO,EAU1DwC,EAAU/L,GAAO8L,EAAQ,CAC3B,OAAAD,EACA,OAAA3S,EAEA,SAAU,CAAC,EACX,MAAO,EAAC,CACX,EACD,OAAIA,GAII,CAAC6S,EAAQ,OAAO,SAAY,CAAC7S,EAAO,OAAO,SACpCA,EAAA,SAAS,KAAK6S,CAAO,EAE7BA,CACX,CASA,SAASC,GAAoBC,EAAQC,EAAe,CAEhD,MAAMC,EAAW,CAAC,EACZC,MAAiB,IACPF,EAAAG,GAAa,CAAE,OAAQ,GAAO,IAAK,GAAM,UAAW,EAAM,EAAGH,CAAa,EAC1F,SAASI,EAAiB3D,EAAM,CACrB,OAAAyD,EAAW,IAAIzD,CAAI,EAErB,SAAA4D,EAASV,EAAQ3S,EAAQsT,EAAgB,CAE9C,MAAMC,EAAY,CAACD,EACbE,EAAuBC,GAAqBd,CAAM,EAKnCa,EAAA,QAAUF,GAAkBA,EAAe,OAC1D,MAAAjD,EAAU8C,GAAaH,EAAeL,CAAM,EAE5Ce,EAAoB,CAACF,CAAoB,EAC/C,GAAI,UAAWb,EAAQ,CACb,MAAAgB,EAAU,OAAOhB,EAAO,OAAU,SAAW,CAACA,EAAO,KAAK,EAAIA,EAAO,MAC3E,UAAWiB,KAASD,EACED,EAAA,KAGlBD,GAAqB3M,GAAO,CAAC,EAAG0M,EAAsB,CAGlD,WAAYF,EACNA,EAAe,OAAO,WACtBE,EAAqB,WAC3B,KAAMI,EAEN,QAASN,EACHA,EAAe,OACfE,CAAA,CAGT,CAAC,CAAC,CACP,CAEA,IAAAX,EACAgB,EACJ,UAAWC,KAAoBJ,EAAmB,CACxC,MAAE,KAAA7K,GAASiL,EAIjB,GAAI9T,GAAU6I,EAAK,CAAC,IAAM,IAAK,CACrB,MAAAkL,EAAa/T,EAAO,OAAO,KAC3BgU,EAAkBD,EAAWA,EAAW,OAAS,CAAC,IAAM,IAAM,GAAK,IACzED,EAAiB,KACb9T,EAAO,OAAO,MAAQ6I,GAAQmL,EAAkBnL,EAAA,CAqCxD,GA9BUgK,EAAAH,GAAyBoB,EAAkB9T,EAAQqQ,CAAO,EAKhEiD,EACeA,EAAA,MAAM,KAAKT,CAAO,GAOjCgB,EAAkBA,GAAmBhB,EACjCgB,IAAoBhB,GACJgB,EAAA,MAAM,KAAKhB,CAAO,EAGlCU,GAAaZ,EAAO,MAAQ,CAACsB,GAAcpB,CAAO,GAIlDqB,EAAYvB,EAAO,IAAI,GAK3BwB,GAAYtB,CAAO,GACnBuB,EAAcvB,CAAO,EAErBW,EAAqB,SAAU,CAC/B,MAAMa,EAAWb,EAAqB,SACtC,QAAS9T,EAAI,EAAGA,EAAI2U,EAAS,OAAQ3U,IACxB2T,EAAAgB,EAAS3U,CAAC,EAAGmT,EAASS,GAAkBA,EAAe,SAAS5T,CAAC,CAAC,CAC/E,CAIJ4T,EAAiBA,GAAkBT,CAAA,CAMvC,OAAOgB,EACD,IAAM,CAEJK,EAAYL,CAAe,GAE7BzM,EAAA,CAEV,SAAS8M,EAAYI,EAAY,CACzB,GAAA9E,GAAY8E,CAAU,EAAG,CACnB,MAAAzB,EAAUK,EAAW,IAAIoB,CAAU,EACrCzB,IACAK,EAAW,OAAOoB,CAAU,EAC5BrB,EAAS,OAAOA,EAAS,QAAQJ,CAAO,EAAG,CAAC,EACpCA,EAAA,SAAS,QAAQqB,CAAW,EAC5BrB,EAAA,MAAM,QAAQqB,CAAW,EACrC,KAEC,CACK,MAAAjP,EAAQgO,EAAS,QAAQqB,CAAU,EACrCrP,EAAQ,KACCgO,EAAA,OAAOhO,EAAO,CAAC,EACpBqP,EAAW,OAAO,MACPpB,EAAA,OAAOoB,EAAW,OAAO,IAAI,EACjCA,EAAA,SAAS,QAAQJ,CAAW,EAC5BI,EAAA,MAAM,QAAQJ,CAAW,EACxC,CACJ,CAEJ,SAASK,GAAY,CACV,OAAAtB,CAAA,CAEX,SAASmB,EAAcvB,EAAS,CACtB,MAAA5N,EAAQuP,GAAmB3B,EAASI,CAAQ,EACzCA,EAAA,OAAOhO,EAAO,EAAG4N,CAAO,EAE7BA,EAAQ,OAAO,MAAQ,CAACoB,GAAcpB,CAAO,GAC7CK,EAAW,IAAIL,EAAQ,OAAO,KAAMA,CAAO,EAE1C,SAAA4B,EAAQzL,EAAUC,EAAiB,CACpC,IAAA4J,EACA5L,EAAS,CAAC,EACV4B,EACA4G,EACA,YAAUzG,GAAYA,EAAS,KAAM,CAErC,GADU6J,EAAAK,EAAW,IAAIlK,EAAS,IAAI,EAClC,CAAC6J,EACD,MAAMjD,GAAkB,EAAsC,CAC1D,SAAA5G,CAAA,CACH,EAQLyG,EAAOoD,EAAQ,OAAO,KACb5L,EAAAH,GAET4N,GAAmBzL,EAAgB,OAGnC4J,EAAQ,KACH,OAAYxO,GAAA,CAACA,EAAE,QAAQ,EACvB,OAAOwO,EAAQ,OAASA,EAAQ,OAAO,KAAK,OAAYxO,KAAE,QAAQ,EAAI,CAAE,GACxE,IAASA,KAAE,IAAI,CAAC,EAGrB2E,EAAS,QACL0L,GAAmB1L,EAAS,OAAQ6J,EAAQ,KAAK,IAAIxO,GAAKA,EAAE,IAAI,CAAC,CAAC,EAE/DwE,EAAAgK,EAAQ,UAAU5L,CAAM,UAE1B+B,EAAS,MAAQ,KAGtBH,EAAOG,EAAS,KAIhB6J,EAAUI,EAAS,KAAK0B,GAAKA,EAAE,GAAG,KAAK9L,CAAI,CAAC,EAExCgK,IAES5L,EAAA4L,EAAQ,MAAMhK,CAAI,EAC3B4G,EAAOoD,EAAQ,OAAO,UAIzB,CAKD,GAHAA,EAAU5J,EAAgB,KACpBiK,EAAW,IAAIjK,EAAgB,IAAI,EACnCgK,EAAS,QAAU0B,EAAE,GAAG,KAAK1L,EAAgB,IAAI,CAAC,EACpD,CAAC4J,EACD,MAAMjD,GAAkB,EAAsC,CAC1D,SAAA5G,EACA,gBAAAC,CAAA,CACH,EACLwG,EAAOoD,EAAQ,OAAO,KAGtB5L,EAASH,GAAO,CAAC,EAAGmC,EAAgB,OAAQD,EAAS,MAAM,EACpDH,EAAAgK,EAAQ,UAAU5L,CAAM,EAEnC,MAAM2N,EAAU,CAAC,EACjB,IAAIC,EAAgBhC,EACpB,KAAOgC,GAEKD,EAAA,QAAQC,EAAc,MAAM,EACpCA,EAAgBA,EAAc,OAE3B,OACH,KAAApF,EACA,KAAA5G,EACA,OAAA5B,EACA,QAAA2N,EACA,KAAME,GAAgBF,CAAO,CACjC,EAGJ7B,EAAO,QAAQxD,GAAS8D,EAAS9D,CAAK,CAAC,EACvC,SAASwF,GAAc,CACnB9B,EAAS,OAAS,EAClBC,EAAW,MAAM,EAEd,OACH,SAAAG,EACA,QAAAoB,EACA,YAAAP,EACA,YAAAa,EACA,UAAAR,EACA,iBAAAnB,CACJ,CACJ,CACA,SAASsB,GAAmBzN,EAAQ1G,EAAM,CACtC,MAAM2G,EAAY,CAAC,EACnB,UAAWpL,KAAOyE,EACVzE,KAAOmL,IACGC,EAAApL,CAAG,EAAImL,EAAOnL,CAAG,GAE5B,OAAAoL,CACX,CAOA,SAASuM,GAAqBd,EAAQ,CAClC,MAAMqC,EAAa,CACf,KAAMrC,EAAO,KACb,SAAUA,EAAO,SACjB,KAAMA,EAAO,KACb,KAAMA,EAAO,MAAQ,CAAC,EACtB,QAASA,EAAO,QAChB,YAAaA,EAAO,YACpB,MAAOsC,GAAqBtC,CAAM,EAClC,SAAUA,EAAO,UAAY,CAAC,EAC9B,UAAW,CAAC,EACZ,gBAAiB,IACjB,iBAAkB,IAClB,eAAgB,CAAC,EAGjB,WAAY,eAAgBA,EACtBA,EAAO,YAAc,KACrBA,EAAO,WAAa,CAAE,QAASA,EAAO,SAAU,CAC1D,EAIO,6BAAeqC,EAAY,OAAQ,CACtC,MAAO,EAAC,CACX,EACMA,CACX,CAMA,SAASC,GAAqBtC,EAAQ,CAClC,MAAMuC,EAAc,CAAC,EAEfC,EAAQxC,EAAO,OAAS,GAC9B,GAAI,cAAeA,EACfuC,EAAY,QAAUC,MAKtB,WAAW1F,KAAQkD,EAAO,WACtBuC,EAAYzF,CAAI,EAAI,OAAO0F,GAAU,SAAWA,EAAM1F,CAAI,EAAI0F,EAE/D,OAAAD,CACX,CAKA,SAASjB,GAActB,EAAQ,CAC3B,KAAOA,GAAQ,CACX,GAAIA,EAAO,OAAO,QACP,SACXA,EAASA,EAAO,OAEb,QACX,CAMA,SAASmC,GAAgBF,EAAS,CACvB,OAAAA,EAAQ,OAAO,CAACQ,EAAMzC,IAAW7L,GAAOsO,EAAMzC,EAAO,IAAI,EAAG,EAAE,CACzE,CACA,SAASQ,GAAakC,EAAUC,EAAgB,CAC5C,MAAMjF,EAAU,CAAC,EACjB,UAAWvU,KAAOuZ,EACNhF,EAAAvU,CAAG,EAAIA,KAAOwZ,EAAiBA,EAAexZ,CAAG,EAAIuZ,EAASvZ,CAAG,EAEtE,OAAAuU,CACX,CA0DA,SAASmE,GAAmB3B,EAASI,EAAU,CAE3C,IAAIsC,EAAQ,EACRC,EAAQvC,EAAS,OACrB,KAAOsC,IAAUC,GAAO,CACd,MAAAC,EAAOF,EAAQC,GAAU,EACbhE,GAAuBqB,EAASI,EAASwC,CAAG,CAAC,EAC/C,EACJD,EAAAC,EAGRF,EAAQE,EAAM,CAClB,CAGE,MAAAC,EAAoBC,GAAqB9C,CAAO,EACtD,OAAI6C,IACAF,EAAQvC,EAAS,YAAYyC,EAAmBF,EAAQ,CAAC,GAMtDA,CACX,CACA,SAASG,GAAqB9C,EAAS,CACnC,IAAI+C,EAAW/C,EACP,KAAA+C,EAAWA,EAAS,QACxB,GAAIzB,GAAYyB,CAAQ,GACpBpE,GAAuBqB,EAAS+C,CAAQ,IAAM,EACvC,OAAAA,CAInB,CAQA,SAASzB,GAAY,CAAE,OAAAxB,GAAU,CAC7B,MAAO,CAAC,EAAEA,EAAO,MACZA,EAAO,YAAc,OAAO,KAAKA,EAAO,UAAU,EAAE,QACrDA,EAAO,SACf,CAWA,SAAS5J,GAAWyD,EAAQ,CACxB,MAAMtD,EAAQ,CAAC,EAGX,GAAAsD,IAAW,IAAMA,IAAW,IACrB,OAAAtD,EAEL,MAAA2M,GADerJ,EAAO,CAAC,IAAM,IACEA,EAAO,MAAM,CAAC,EAAIA,GAAQ,MAAM,GAAG,EACxE,QAAS9M,EAAI,EAAGA,EAAImW,EAAa,OAAQ,EAAEnW,EAAG,CAE1C,MAAMoW,EAAcD,EAAanW,CAAC,EAAE,QAAQgI,GAAS,GAAG,EAElDqO,EAAQD,EAAY,QAAQ,GAAG,EAC/Bha,EAAM4M,GAAOqN,EAAQ,EAAID,EAAcA,EAAY,MAAM,EAAGC,CAAK,CAAC,EAClEha,EAAQga,EAAQ,EAAI,KAAOrN,GAAOoN,EAAY,MAAMC,EAAQ,CAAC,CAAC,EACpE,GAAIja,KAAOoN,EAAO,CAEV,IAAA8M,EAAe9M,EAAMpN,CAAG,EACvBqL,GAAQ6O,CAAY,IACrBA,EAAe9M,EAAMpN,CAAG,EAAI,CAACka,CAAY,GAE7CA,EAAa,KAAKja,CAAK,OAGvBmN,EAAMpN,CAAG,EAAIC,CACjB,CAEG,OAAAmN,CACX,CAUA,SAASO,GAAeP,EAAO,CAC3B,IAAIsD,EAAS,GACb,QAAS1Q,KAAOoN,EAAO,CACb,MAAAnN,EAAQmN,EAAMpN,CAAG,EAEvB,GADAA,EAAMyM,GAAezM,CAAG,EACpBC,GAAS,KAAM,CAEXA,IAAU,SACCyQ,MAAO,OAAS,IAAM,IAAM1Q,GAE3C,UAGWqL,GAAQpL,CAAK,EACtBA,EAAM,IAASka,MAAK3N,GAAiB2N,CAAC,CAAC,EACvC,CAACla,GAASuM,GAAiBvM,CAAK,CAAC,GAChC,QAAQA,GAAS,CAGhBA,IAAU,SAECyQ,MAAO,OAAS,IAAM,IAAM1Q,EACnCC,GAAS,OACTyQ,GAAU,IAAMzQ,GACxB,CACH,EAEE,OAAAyQ,CACX,CASA,SAAS0J,GAAehN,EAAO,CAC3B,MAAMiN,EAAkB,CAAC,EACzB,UAAWra,KAAOoN,EAAO,CACf,MAAAnN,EAAQmN,EAAMpN,CAAG,EACnBC,IAAU,SACVoa,EAAgBra,CAAG,EAAIqL,GAAQpL,CAAK,EAC9BA,EAAM,IAAIka,GAAMA,GAAK,KAAO,KAAO,GAAKA,CAAE,EAC1Cla,GAAS,KACLA,EACA,GAAKA,EACnB,CAEG,OAAAoa,CACX,CASA,MAAMC,GAAkB,OAAkF,EAAE,EAOtGC,GAAe,OAAuE,EAAE,EAOxFC,GAAY,OAA4D,EAAE,EAO1EC,GAAmB,OAAoE,EAAE,EAOzFC,GAAwB,OAA0E,EAAE,EAK1G,SAASC,IAAe,CACpB,IAAIC,EAAW,CAAC,EAChB,SAASC,EAAIC,EAAS,CAClB,OAAAF,EAAS,KAAKE,CAAO,EACd,IAAM,CACH,MAAAlX,EAAIgX,EAAS,QAAQE,CAAO,EAC9BlX,EAAI,IACKgX,EAAA,OAAOhX,EAAG,CAAC,CAC5B,EAEJ,SAASmX,GAAQ,CACbH,EAAW,CAAC,EAET,OACH,IAAAC,EACA,KAAM,IAAMD,EAAS,MAAM,EAC3B,MAAAG,CACJ,CACJ,CAEA,SAASC,GAAcnE,EAAQlD,EAAMsH,EAAO,CACxC,MAAMC,EAAiB,IAAM,CAClBrE,EAAAlD,CAAI,EAAE,OAAOsH,CAAK,CAC7B,EACAE,GAAYD,CAAc,EAC1BE,GAAcF,CAAc,EAC5BG,GAAY,IAAM,CACPxE,EAAAlD,CAAI,EAAE,IAAIsH,CAAK,EACzB,EACMpE,EAAAlD,CAAI,EAAE,IAAIsH,CAAK,CAC1B,CAQA,SAASK,GAAmBC,EAAY,CAKpC,MAAMC,EAAeC,GAAOnB,GAE5B,EAAC,EAAG,MACCkB,GAKSR,GAAAQ,EAAc,cAAeD,CAAU,CACzD,CAQA,SAASG,GAAoBC,EAAa,CAKtC,MAAMH,EAAeC,GAAOnB,GAE5B,EAAC,EAAG,MACCkB,GAKSR,GAAAQ,EAAc,eAAgBG,CAAW,CAC3D,CACA,SAASC,GAAiBX,EAAOzM,EAAIC,EAAMoI,EAAQlD,EAAMkI,EAAuB3Q,OAAM,CAElF,MAAM4Q,EAAqBjF,IAEtBA,EAAO,eAAelD,CAAI,EAAIkD,EAAO,eAAelD,CAAI,GAAK,IAClE,MAAO,IAAM,IAAI,QAAQ,CAACgF,EAASoD,IAAW,CACpC,MAAAnU,EAAQoU,GAAU,CAChBA,IAAU,GACVD,EAAOjI,GAAkB,EAAuC,CAC5D,KAAArF,EACA,GAAAD,CAAA,CACH,CAAC,EAEGwN,aAAiB,MACtBD,EAAOC,CAAK,EAEPxI,GAAgBwI,CAAK,EAC1BD,EAAOjI,GAAkB,EAA8C,CACnE,KAAMtF,EACN,GAAIwN,CAAA,CACP,CAAC,GAGEF,GAEAjF,EAAO,eAAelD,CAAI,IAAMmI,GAChC,OAAOE,GAAU,YACjBF,EAAmB,KAAKE,CAAK,EAEzBrD,EAAA,EAEhB,EAEMsD,EAAcJ,EAAe,IAAMZ,EAAM,KAAKpE,GAAUA,EAAO,UAAUlD,CAAI,EAAGnF,EAAIC,EAAsF7G,CAAI,CAAC,EACjL,IAAAsU,EAAY,QAAQ,QAAQD,CAAW,EACvChB,EAAM,OAAS,IACHiB,IAAU,KAAKtU,CAAI,GAsBnCsU,EAAU,MAAM1J,GAAOuJ,EAAOvJ,CAAG,CAAC,EACrC,CACL,CAYA,SAAS2J,GAAwBrD,EAASsD,EAAW5N,EAAIC,EAAMoN,EAAiB3Q,GAAMA,IAAM,CACxF,MAAMmR,EAAS,CAAC,EAChB,UAAWxF,KAAUiC,EAKN,UAAAnF,KAAQkD,EAAO,WAAY,CAC9B,IAAAyF,EAAezF,EAAO,WAAWlD,CAAI,EAiCzC,GAAI,EAAAyI,IAAc,oBAAsB,CAACvF,EAAO,UAAUlD,CAAI,GAE1D,GAAA9I,GAAiByR,CAAY,EAAG,CAG1B,MAAArB,GADUqB,EAAa,WAAaA,GACpBF,CAAS,EAE3BnB,GAAAoB,EAAO,KAAKT,GAAiBX,EAAOzM,EAAIC,EAAMoI,EAAQlD,EAAMkI,CAAc,CAAC,MAE9E,CAED,IAAIU,EAAmBD,EAAa,EAKpCD,EAAO,KAAK,IAAME,EAAiB,KAAiBC,GAAA,CAChD,GAAI,CAACA,EACD,MAAM,IAAI,MAAM,+BAA+B7I,CAAI,SAASkD,EAAO,IAAI,GAAG,EAC9E,MAAM4F,EAAoB1R,GAAWyR,CAAQ,EACvCA,EAAS,QACTA,EAEC3F,EAAA,KAAKlD,CAAI,EAAI6I,EAGb3F,EAAA,WAAWlD,CAAI,EAAI8I,EAGpB,MAAAxB,GADUwB,EAAkB,WAAaA,GACzBL,CAAS,EACvB,OAAAnB,GACJW,GAAiBX,EAAOzM,EAAIC,EAAMoI,EAAQlD,EAAMkI,CAAc,EAAE,EACvE,CAAC,EACN,CAGD,OAAAQ,CACX,CAMA,SAASK,GAAkBjJ,EAAO,CAC9B,OAAOA,EAAM,QAAQ,MAAMoD,GAAUA,EAAO,QAAQ,EAC9C,QAAQ,OAAO,IAAI,MAAM,qCAAqC,CAAC,EAC/D,QAAQ,IAAIpD,EAAM,QAAQ,IAAIoD,GAAUA,EAAO,YAC7C,QAAQ,IAAI,OAAO,KAAKA,EAAO,UAAU,EAAE,OAAO,CAAC8F,EAAUhJ,IAAS,CAC5D,MAAA2I,EAAezF,EAAO,WAAWlD,CAAI,EAC3C,OAAI,OAAO2I,GAAiB,YACxB,EAAE,gBAAiBA,IACnBK,EAAS,KAAKL,EAAe,OAAiBE,GAAA,CAC1C,GAAI,CAACA,EACM,eAAQ,OAAO,IAAI,MAAM,+BAA+B7I,CAAI,SAASkD,EAAO,IAAI,yDAAyD,CAAC,EACrJ,MAAM4F,EAAoB1R,GAAWyR,CAAQ,EACvCA,EAAS,QACTA,EAEC3F,EAAA,KAAKlD,CAAI,EAAI6I,EAGb3F,EAAA,WAAWlD,CAAI,EAAI8I,CAC1B,CACH,CAAC,EAECE,CACX,EAAG,CAAE,EAAC,CAAC,CAAC,EAAE,KAAK,IAAMlJ,CAAK,CACtC,CASA,SAASmJ,GAAQvD,EAAO,CACd,MAAAwD,EAASpB,GAAOjB,EAAS,EACzBsC,EAAerB,GAAOhB,EAAgB,EAGtChH,EAAQsJ,EAAS,IAAM,CACnB,MAAAvO,EAAKwO,EAAM3D,EAAM,EAAE,EAalB,OAAAwD,EAAO,QAAQrO,CAAE,EAC3B,EACKyO,EAAoBF,EAAS,IAAM,CAC/B,MAAE,QAAAjE,GAAYrF,EAAM,MACpB,CAAE,OAAAyJ,GAAWpE,EACbqE,EAAerE,EAAQoE,EAAS,CAAC,EACjCE,EAAiBN,EAAa,QAChC,IAACK,GAAgB,CAACC,EAAe,OAC1B,SACX,MAAMjU,EAAQiU,EAAe,UAAUhP,GAAkB,KAAK,KAAM+O,CAAY,CAAC,EACjF,GAAIhU,EAAQ,GACD,OAAAA,EAEX,MAAMkU,EAAmBC,GAAgBxE,EAAQoE,EAAS,CAAC,CAAC,EAC5D,OAEAA,EAAS,GAILI,GAAgBH,CAAY,IAAME,GAElCD,EAAeA,EAAe,OAAS,CAAC,EAAE,OAASC,EACjDD,EAAe,UAAUhP,GAAkB,KAAK,KAAM0K,EAAQoE,EAAS,CAAC,CAAC,CAAC,EAC1E/T,CAAA,CACT,EACKoU,EAAWR,EAAS,IAAME,EAAkB,MAAQ,IACtDO,GAAeV,EAAa,OAAQrJ,EAAM,MAAM,MAAM,CAAC,EACrDgK,EAAgBV,EAAS,IAAME,EAAkB,MAAQ,IAC3DA,EAAkB,QAAUH,EAAa,QAAQ,OAAS,GAC1DzO,GAA0ByO,EAAa,OAAQrJ,EAAM,MAAM,MAAM,CAAC,EAC7D,SAAAiK,EAASjV,EAAI,GAAI,CAClB,GAAAkV,GAAWlV,CAAC,EAAG,CACf,MAAMmV,EAAIf,EAAOG,EAAM3D,EAAM,OAAO,EAAI,UAAY,MAAM,EAAE2D,EAAM3D,EAAM,EAAE,GAExE,MAAM/N,EAAI,EACZ,OAAI+N,EAAM,gBACN,OAAO,SAAa,KACpB,wBAAyB,UAChB,6BAAoB,IAAMuE,CAAC,EAEjCA,CAAA,CAEX,OAAO,QAAQ,QAAQ,EA6BpB,OACH,MAAAnK,EACA,KAAMsJ,EAAS,IAAMtJ,EAAM,MAAM,IAAI,EACrC,SAAA8J,EACA,cAAAE,EACA,SAAAC,CACJ,CACJ,CACA,SAASG,GAAkBC,EAAQ,CAC/B,OAAOA,EAAO,SAAW,EAAIA,EAAO,CAAC,EAAIA,CAC7C,CACA,MAAMC,GAA+CC,GAAA,CACjD,KAAM,aACN,aAAc,CAAE,KAAM,CAAE,EACxB,MAAO,CACH,GAAI,CACA,KAAM,CAAC,OAAQ,MAAM,EACrB,SAAU,EACd,EACA,QAAS,QACT,YAAa,OAEb,iBAAkB,OAClB,OAAQ,QACR,iBAAkB,CACd,KAAM,OACN,QAAS,OAEjB,EACA,QAAApB,GACA,MAAMvD,EAAO,CAAE,MAAA4E,GAAS,CACpB,MAAMC,EAAOC,GAASvB,GAAQvD,CAAK,CAAC,EAC9B,CAAE,QAAA9E,CAAA,EAAYkH,GAAOjB,EAAS,EAC9B4D,EAAUrB,EAAS,KAAO,CAC5B,CAACsB,GAAahF,EAAM,YAAa9E,EAAQ,gBAAiB,oBAAoB,CAAC,EAAG2J,EAAK,SAMvF,CAACG,GAAahF,EAAM,iBAAkB9E,EAAQ,qBAAsB,0BAA0B,CAAC,EAAG2J,EAAK,eACzG,EACF,MAAO,IAAM,CACT,MAAM3F,EAAW0F,EAAM,SAAWJ,GAAkBI,EAAM,QAAQC,CAAI,CAAC,EACvE,OAAO7E,EAAM,OACPd,EACA+F,GAAE,IAAK,CACL,eAAgBJ,EAAK,cACf7E,EAAM,iBACN,KACN,KAAM6E,EAAK,KAGX,QAASA,EAAK,SACd,MAAOE,EAAQ,OAChB7F,CAAQ,CACnB,EAER,CAAC,EAMKgG,GAAaR,GACnB,SAASJ,GAAW,EAAG,CAEnB,GAAI,IAAE,SAAW,EAAE,QAAU,EAAE,SAAW,EAAE,WAGxC,GAAE,kBAGF,IAAE,SAAW,QAAa,EAAE,SAAW,GAI3C,IAAI,EAAE,eAAiB,EAAE,cAAc,aAAc,CAEjD,MAAM7d,EAAS,EAAE,cAAc,aAAa,QAAQ,EAChD,iBAAc,KAAKA,CAAM,EACzB,OAGR,OAAI,EAAE,gBACF,EAAE,eAAe,EACd,GACX,CACA,SAAS0d,GAAegB,EAAOC,EAAO,CAClC,UAAWze,KAAOye,EAAO,CACf,MAAAC,EAAaD,EAAMze,CAAG,EACtB2e,EAAaH,EAAMxe,CAAG,EACxB,UAAO0e,GAAe,UACtB,GAAIA,IAAeC,EACR,iBAGP,CAACtT,GAAQsT,CAAU,GACnBA,EAAW,SAAWD,EAAW,QACjCA,EAAW,KAAK,CAACze,EAAO2D,IAAM3D,IAAU0e,EAAW/a,CAAC,CAAC,EAC9C,QACf,CAEG,QACX,CAKA,SAAS0Z,GAAgBzG,EAAQ,CAC7B,OAAOA,EAAUA,EAAO,QAAUA,EAAO,QAAQ,KAAOA,EAAO,KAAQ,EAC3E,CAOA,MAAMwH,GAAe,CAACO,EAAWC,EAAaC,IAAiBF,GAEzDC,GAEIC,EAEJC,GAA+Cf,GAAA,CACjD,KAAM,aAEN,aAAc,GACd,MAAO,CACH,KAAM,CACF,KAAM,OACN,QAAS,SACb,EACA,MAAO,MACX,EAGA,aAAc,CAAE,KAAM,CAAE,EACxB,MAAM3E,EAAO,CAAE,MAAA2F,EAAO,MAAAf,GAAS,CAErB,MAAAgB,EAAgBxD,GAAOf,EAAqB,EAC5CwE,EAAiBnC,EAAS,IAAM1D,EAAM,OAAS4F,EAAc,KAAK,EAClEE,EAAgB1D,GAAOlB,GAAc,CAAC,EAGtC6E,EAAQrC,EAAS,IAAM,CACrB,IAAAsC,EAAerC,EAAMmC,CAAa,EAChC,MAAE,QAAArG,GAAYoG,EAAe,MAC/B,IAAAI,EACJ,MAAQA,EAAexG,EAAQuG,CAAY,IACvC,CAACC,EAAa,YACdD,IAEG,OAAAA,CAAA,CACV,EACKE,EAAkBxC,EAAS,IAAMmC,EAAe,MAAM,QAAQE,EAAM,KAAK,CAAC,EAChFI,GAAQjF,GAAcwC,EAAS,IAAMqC,EAAM,MAAQ,CAAC,CAAC,EACrDI,GAAQlF,GAAiBiF,CAAe,EACxCC,GAAQ9E,GAAuBwE,CAAc,EAC7C,MAAMO,EAAUC,EAAI,EAGpB,OAAAC,GAAM,IAAM,CAACF,EAAQ,MAAOF,EAAgB,MAAOlG,EAAM,IAAI,EAAG,CAAC,CAACuG,EAAUpR,EAAImF,CAAI,EAAG,CAACkM,EAAapR,EAAMqR,CAAO,IAAM,CAEhHtR,IAGGA,EAAA,UAAUmF,CAAI,EAAIiM,EAOjBnR,GAAQA,IAASD,GAAMoR,GAAYA,IAAaC,IAC3CrR,EAAG,YAAY,OAChBA,EAAG,YAAcC,EAAK,aAErBD,EAAG,aAAa,OACjBA,EAAG,aAAeC,EAAK,gBAK/BmR,GACApR,IAGC,CAACC,GAAQ,CAACL,GAAkBI,EAAIC,CAAI,GAAK,CAACoR,KAC1CrR,EAAG,eAAemF,CAAI,GAAK,IAAI,QAAQlC,GAAYA,EAASmO,CAAQ,CAAC,CAC1E,EACD,CAAE,MAAO,OAAQ,EACb,IAAM,CACT,MAAMnM,EAAQyL,EAAe,MAGvBa,EAAc1G,EAAM,KACpBiG,EAAeC,EAAgB,MAC/BS,EAAgBV,GAAgBA,EAAa,WAAWS,CAAW,EACzE,GAAI,CAACC,EACD,OAAOC,GAAchC,EAAM,QAAS,CAAE,UAAW+B,EAAe,MAAAvM,EAAO,EAGrE,MAAAyM,EAAmBZ,EAAa,MAAMS,CAAW,EACjDI,EAAaD,EACbA,IAAqB,GACjBzM,EAAM,OACN,OAAOyM,GAAqB,WACxBA,EAAiBzM,CAAK,EACtByM,EACR,KAOApV,EAAYwT,GAAE0B,EAAehV,GAAO,CAAC,EAAGmV,EAAYnB,EAAO,CAC7D,iBAP8BoB,GAAA,CAE1BA,EAAM,UAAU,cACHd,EAAA,UAAUS,CAAW,EAAI,KAE9C,EAGI,IAAKN,CAAA,CACR,CAAC,EAmBF,OAGAQ,GAAchC,EAAM,QAAS,CAAE,UAAWnT,EAAW,MAAA2I,CAAA,CAAO,GACxD3I,CACR,EAER,CAAC,EACD,SAASmV,GAAcI,EAAM5V,EAAM,CAC/B,GAAI,CAAC4V,EACM,YACL,MAAAC,EAAcD,EAAK5V,CAAI,EAC7B,OAAO6V,EAAY,SAAW,EAAIA,EAAY,CAAC,EAAIA,CACvD,CAMA,MAAMC,GAAaxB,GAmenB,SAASyB,GAAajM,EAAS,CAC3B,MAAMwC,EAAUC,GAAoBzC,EAAQ,OAAQA,CAAO,EACrDkM,EAAelM,EAAQ,YAActH,GACrCyT,EAAmBnM,EAAQ,gBAAkB5G,GAC7CqF,EAAgBuB,EAAQ,QAIxBoM,EAAehG,GAAa,EAC5BiG,EAAsBjG,GAAa,EACnCkG,EAAclG,GAAa,EAC3BmC,EAAegE,GAAW9R,EAAyB,EACzD,IAAI+R,EAAkB/R,GAElBpE,IAAa2J,EAAQ,gBAAkB,sBAAuB,UAC9D,QAAQ,kBAAoB,UAEhC,MAAMyM,EAAkB/V,GAAc,KAAK,KAAMgW,GAAc,GAAKA,CAAU,EACxEC,EAAejW,GAAc,KAAK,KAAM0B,EAAW,EACnDwU,EAENlW,GAAc,KAAK,KAAM2B,EAAM,EACtB,SAAA2K,EAAS6J,EAAe3N,EAAO,CAChC,IAAAvP,EACA2S,EACA,OAAAnD,GAAY0N,CAAa,GAChBld,EAAA6S,EAAQ,iBAAiBqK,CAAa,EAItCvK,EAAApD,GAGAoD,EAAAuK,EAENrK,EAAQ,SAASF,EAAQ3S,CAAM,EAE1C,SAASkU,EAAYzE,EAAM,CACjB,MAAA0N,EAAgBtK,EAAQ,iBAAiBpD,CAAI,EAC/C0N,GACAtK,EAAQ,YAAYsK,CAAa,CAIrC,CAEJ,SAAS5I,GAAY,CACjB,OAAO1B,EAAQ,YAAY,IAAIuK,GAAgBA,EAAa,MAAM,EAEtE,SAASC,EAAS5N,EAAM,CACpB,MAAO,CAAC,CAACoD,EAAQ,iBAAiBpD,CAAI,EAEjC,SAAAgF,EAAQ6I,EAAarU,EAAiB,CAKvC,GADJA,EAAkBnC,GAAO,GAAImC,GAAmB2P,EAAa,KAAK,EAC9D,OAAO0E,GAAgB,SAAU,CACjC,MAAMC,GAAqBzU,GAASyT,EAAce,EAAarU,EAAgB,IAAI,EAC7EmS,EAAevI,EAAQ,QAAQ,CAAE,KAAM0K,GAAmB,MAAQtU,CAAe,EACjFuU,GAAO1O,EAAc,WAAWyO,GAAmB,QAAQ,EAS1D,OAAAzW,GAAOyW,GAAoBnC,EAAc,CAC5C,OAAQ6B,EAAa7B,EAAa,MAAM,EACxC,KAAM1S,GAAO6U,GAAmB,IAAI,EACpC,eAAgB,OAChB,KAAAC,EAAA,CACH,EAMD,IAAAC,EAEA,GAAAH,EAAY,MAAQ,KAQFG,EAAA3W,GAAO,CAAC,EAAGwW,EAAa,CACtC,KAAMxU,GAASyT,EAAce,EAAY,KAAMrU,EAAgB,IAAI,EAAE,KACxE,MAEA,CAED,MAAMyU,GAAe5W,GAAO,GAAIwW,EAAY,MAAM,EAClD,UAAWxhB,KAAO4hB,GACVA,GAAa5hB,CAAG,GAAK,MACrB,OAAO4hB,GAAa5hB,CAAG,EAIb2hB,EAAA3W,GAAO,CAAC,EAAGwW,EAAa,CACtC,OAAQN,EAAaU,EAAY,EACpC,EAGezU,EAAA,OAAS+T,EAAa/T,EAAgB,MAAM,EAEhE,MAAMmS,EAAevI,EAAQ,QAAQ4K,EAAiBxU,CAAe,EAC/DG,GAAOkU,EAAY,MAAQ,GAMjClC,EAAa,OAAS0B,EAAgBG,EAAa7B,EAAa,MAAM,CAAC,EACvE,MAAMuC,GAAWnU,GAAagT,EAAkB1V,GAAO,GAAIwW,EAAa,CACpE,KAAMjV,GAAWe,EAAI,EACrB,KAAMgS,EAAa,KACtB,CAAC,EACIoC,GAAO1O,EAAc,WAAW6O,EAAQ,EAS9C,OAAO7W,GAAO,CACV,SAAA6W,GAGA,KAAAvU,GACA,MAMAoT,IAAqB/S,GACfyM,GAAeoH,EAAY,KAAK,EAC/BA,EAAY,OAAS,IAC7BlC,EAAc,CACb,eAAgB,OAChB,KAAAoC,EAAA,CACH,EAEL,SAASI,EAAiBtT,EAAI,CAC1B,OAAO,OAAOA,GAAO,SACfxB,GAASyT,EAAcjS,EAAIsO,EAAa,MAAM,IAAI,EAClD9R,GAAO,GAAIwD,CAAE,EAEd,SAAAuT,EAAwBvT,EAAIC,EAAM,CACvC,GAAIsS,IAAoBvS,EACpB,OAAOsF,GAAkB,EAAyC,CAC9D,KAAArF,EACA,GAAAD,CAAA,CACH,CACL,CAEJ,SAASiE,EAAKjE,EAAI,CACd,OAAOwT,EAAiBxT,CAAE,EAE9B,SAASuC,EAAQvC,EAAI,CACV,OAAAiE,EAAKzH,GAAO8W,EAAiBtT,CAAE,EAAG,CAAE,QAAS,EAAK,CAAC,CAAC,EAE/D,SAASyT,EAAqBzT,EAAI,CAC9B,MAAM0T,EAAc1T,EAAG,QAAQA,EAAG,QAAQ,OAAS,CAAC,EAChD,GAAA0T,GAAeA,EAAY,SAAU,CAC/B,MAAE,SAAAC,GAAaD,EACrB,IAAIE,EAAoB,OAAOD,GAAa,WAAaA,EAAS3T,CAAE,EAAI2T,EACpE,cAAOC,GAAsB,WAEzBA,IAAkB,SAAS,GAAG,GAAKA,EAAkB,SAAS,GAAG,EAC1DA,EAAoBN,EAAiBM,CAAiB,EAErD,CAAE,KAAMA,CAAkB,EAGtCA,EAAkB,OAAS,CAAC,GAQzBpX,GAAO,CACV,MAAOwD,EAAG,MACV,KAAMA,EAAG,KAET,OAAQ4T,EAAkB,MAAQ,KAAO,GAAK5T,EAAG,QAClD4T,CAAiB,EACxB,CAEK,SAAAJ,EAAiBxT,EAAI6T,EAAgB,CACpC,MAAAC,EAAkBvB,EAAkBpI,EAAQnK,CAAE,EAC9CC,EAAOqO,EAAa,MACpBrS,GAAO+D,EAAG,MACV+T,GAAQ/T,EAAG,MAEXuC,GAAUvC,EAAG,UAAY,GACzBgU,GAAiBP,EAAqBK,CAAc,EACtD,GAAAE,GACO,OAAAR,EAAiBhX,GAAO8W,EAAiBU,EAAc,EAAG,CAC7D,MAAO,OAAOA,IAAmB,SAC3BxX,GAAO,CAAI,EAAAP,GAAM+X,GAAe,KAAK,EACrC/X,GACN,MAAA8X,GACA,QAAAxR,EAAA,CACH,EAEDsR,GAAkBC,CAAc,EAEpC,MAAMG,EAAaH,EACnBG,EAAW,eAAiBJ,EACxB,IAAAK,GACJ,MAAI,CAACH,IAASxU,GAAoB2S,EAAkBjS,EAAM6T,CAAc,IACpEI,GAAU5O,GAAkB,GAA2C,CAAE,GAAI2O,EAAY,KAAAhU,EAAM,EAE/FkU,GAAalU,EAAMA,EAGnB,GAGA,EAAK,IAEDiU,GAAU,QAAQ,QAAQA,EAAO,EAAIhF,EAAS+E,EAAYhU,CAAI,GACjE,MAAOrF,IAAU4K,GAAoB5K,EAAK,EAEvC4K,GAAoB5K,GAAO,GACrBA,GACAwZ,GAAYxZ,EAAK,EAEvByZ,GAAazZ,GAAOqZ,EAAYhU,CAAI,CAAC,EACxC,KAAMiU,IAAY,CACnB,GAAIA,IACI,GAAA1O,GAAoB0O,GAAS,GActB,OAAAV,EAEPhX,GAAO,CAEH,QAAA+F,EAAA,EACD+Q,EAAiBY,GAAQ,EAAE,EAAG,CAC7B,MAAO,OAAOA,GAAQ,IAAO,SACvB1X,GAAO,GAAIP,GAAMiY,GAAQ,GAAG,KAAK,EACjCjY,GACN,MAAA8X,EAAA,CACH,EAEDF,GAAkBI,CAAU,OAKhCC,GAAUI,EAAmBL,EAAYhU,EAAM,GAAMsC,GAAStG,EAAI,EAErD,OAAAsY,EAAAN,EAAYhU,EAAMiU,EAAO,EACnCA,EAAA,CACV,EAOI,SAAAM,EAAiCxU,EAAIC,EAAM,CAC1C,MAAArF,EAAQ2Y,EAAwBvT,EAAIC,CAAI,EAC9C,OAAOrF,EAAQ,QAAQ,OAAOA,CAAK,EAAI,QAAQ,QAAQ,EAE3D,SAASyS,EAAe3Q,EAAI,CACxB,MAAM+X,EAAMC,GAAc,OAAO,EAAE,KAAO,QAEnC,OAAAD,GAAO,OAAOA,EAAI,gBAAmB,WACtCA,EAAI,eAAe/X,CAAE,EACrBA,EAAG,EAGJ,SAAAwS,EAASlP,EAAIC,EAAM,CACpB,IAAA4N,EACJ,KAAM,CAAC8G,EAAgBC,GAAiBC,EAAe,EAAIC,GAAuB9U,EAAIC,CAAI,EAE1F4N,EAASF,GAAwBgH,EAAe,QAAW,qBAAoB3U,EAAIC,CAAI,EAEvF,UAAWoI,MAAUsM,EACVtM,GAAA,YAAY,QAAiBoE,GAAA,CAChCoB,EAAO,KAAKT,GAAiBX,EAAOzM,EAAIC,CAAI,CAAC,EAChD,EAEL,MAAM8U,GAA0BP,EAAiC,KAAK,KAAMxU,EAAIC,CAAI,EACpF,OAAA4N,EAAO,KAAKkH,EAAuB,EAE3BC,GAAcnH,CAAM,EACvB,KAAK,IAAM,CAEZA,EAAS,CAAC,EACC,UAAApB,MAAS0F,EAAa,OAC7BtE,EAAO,KAAKT,GAAiBX,GAAOzM,EAAIC,CAAI,CAAC,EAEjD,OAAA4N,EAAO,KAAKkH,EAAuB,EAC5BC,GAAcnH,CAAM,EAC9B,EACI,KAAK,IAAM,CAEZA,EAASF,GAAwBiH,GAAiB,oBAAqB5U,EAAIC,CAAI,EAC/E,UAAWoI,MAAUuM,GACVvM,GAAA,aAAa,QAAiBoE,GAAA,CACjCoB,EAAO,KAAKT,GAAiBX,EAAOzM,EAAIC,CAAI,CAAC,EAChD,EAEL,OAAA4N,EAAO,KAAKkH,EAAuB,EAE5BC,GAAcnH,CAAM,EAC9B,EACI,KAAK,IAAM,CAEZA,EAAS,CAAC,EACV,UAAWxF,MAAUwM,GAEjB,GAAIxM,GAAO,YACH,GAAAxL,GAAQwL,GAAO,WAAW,EAC1B,UAAW4M,KAAe5M,GAAO,YAC7BwF,EAAO,KAAKT,GAAiB6H,EAAajV,EAAIC,CAAI,CAAC,OAGvD4N,EAAO,KAAKT,GAAiB/E,GAAO,YAAarI,EAAIC,CAAI,CAAC,EAItE,OAAA4N,EAAO,KAAKkH,EAAuB,EAE5BC,GAAcnH,CAAM,EAC9B,EACI,KAAK,KAGN7N,EAAG,QAAQ,QAAQqI,IAAWA,GAAO,eAAiB,EAAG,EAEzDwF,EAASF,GAAwBkH,GAAiB,mBAAoB7U,EAAIC,EAAMoN,CAAc,EAC9FQ,EAAO,KAAKkH,EAAuB,EAE5BC,GAAcnH,CAAM,EAC9B,EACI,KAAK,IAAM,CAEZA,EAAS,CAAC,EACC,UAAApB,MAAS2F,EAAoB,OACpCvE,EAAO,KAAKT,GAAiBX,GAAOzM,EAAIC,CAAI,CAAC,EAEjD,OAAA4N,EAAO,KAAKkH,EAAuB,EAC5BC,GAAcnH,CAAM,EAC9B,EAEI,MAAa7J,IAAAwB,GAAoBxB,GAAK,CACrC,EAAAA,GACA,QAAQ,OAAOA,EAAG,CAAC,EAEpB,SAAAuQ,EAAiBvU,EAAIC,EAAMiU,EAAS,CAIpC7B,EAAA,OACA,QAAiB5F,GAAAY,EAAe,IAAMZ,EAAMzM,EAAIC,EAAMiU,CAAO,CAAC,CAAC,EAOxE,SAASI,EAAmBL,EAAYhU,EAAMiV,EAAQ3S,EAAStG,GAAM,CAE3D,MAAArB,GAAQ2Y,EAAwBU,EAAYhU,CAAI,EAClD,GAAArF,GACO,OAAAA,GAEX,MAAMua,GAAoBlV,IAASO,GAC7BoC,GAASxG,GAAiB,QAAQ,MAAb,GAGvB8Y,IAGI3S,GAAW4S,GACG3Q,EAAA,QAAQyP,EAAW,SAAUzX,GAAO,CAC9C,OAAQ2Y,IAAqBvS,IAASA,GAAM,MAChD,EAAG3G,EAAI,CAAC,EAEMuI,EAAA,KAAKyP,EAAW,SAAUhY,EAAI,GAGpDqS,EAAa,MAAQ2F,EACRE,GAAAF,EAAYhU,EAAMiV,EAAQC,EAAiB,EAC5Cf,GAAA,EAEZ,IAAAgB,EAEJ,SAASC,IAAiB,CAElBD,IAEJA,EAAwB5Q,EAAc,OAAO,CAACxE,EAAIsV,EAAOzQ,IAAS,CAC9D,GAAI,CAACwJ,GAAO,UACR,OAEE,MAAA4F,EAAa9J,EAAQnK,CAAE,EAIvBgU,GAAiBP,EAAqBQ,CAAU,EACtD,GAAID,GAAgB,CAChBR,EAAiBhX,GAAOwX,GAAgB,CAAE,QAAS,GAAM,MAAO,EAAM,GAAGC,CAAU,EAAE,MAAMnX,EAAI,EAC/F,OAEcyV,EAAA0B,EAClB,MAAMhU,GAAOqO,EAAa,MAEtBlS,IACAwF,GAAmBH,GAAaxB,GAAK,SAAU4E,EAAK,KAAK,EAAGzD,IAAuB,EAEvF8N,EAAS+E,EAAYhU,EAAI,EACpB,MAAOrF,IACJ4K,GAAoB5K,GAAO,EAAwC,EAC5DA,GAEP4K,GAAoB5K,GAAO,IAU3B4Y,EAAiBhX,GAAO8W,EAAiB1Y,GAAM,EAAE,EAAG,CAChD,MAAO,GACV,EAAGqZ,CAAA,EAGC,KAAgBC,IAAA,CAIb1O,GAAoB0O,GAAS,EAC7B,GACA,CAACrP,EAAK,OACNA,EAAK,OAASpE,GAAe,KACf+D,EAAA,GAAG,GAAI,EAAK,CAC9B,CACH,EACI,MAAM1H,EAAI,EAER,QAAQ,OAAO,IAGtB+H,EAAK,OACLL,EAAc,GAAG,CAACK,EAAK,MAAO,EAAK,EAGhCwP,GAAazZ,GAAOqZ,EAAYhU,EAAI,EAC9C,EACI,KAAMiU,IAAY,CACnBA,GACIA,IACII,EAEAL,EAAYhU,GAAM,EAAK,EAE3BiU,KACIrP,EAAK,OAGL,CAACW,GAAoB0O,GAAS,GAC9B1P,EAAc,GAAG,CAACK,EAAK,MAAO,EAAK,EAE9BA,EAAK,OAASpE,GAAe,KAClC+E,GAAoB0O,GAAS,EAAwC,GAGvD1P,EAAA,GAAG,GAAI,EAAK,GAGjB+P,EAAAN,EAAYhU,GAAMiU,EAAO,EAC7C,EAEI,MAAMpX,EAAI,EAClB,GAGL,IAAIyY,GAAgBpJ,GAAa,EAC7BqJ,GAAiBrJ,GAAa,EAC9BsJ,GASK,SAAApB,GAAazZ,EAAOoF,EAAIC,EAAM,CACnCmU,GAAYxZ,CAAK,EACX,MAAA8a,EAAOF,GAAe,KAAK,EACjC,OAAIE,EAAK,OACLA,EAAK,QAAmBpJ,OAAQ1R,EAAOoF,EAAIC,CAAI,CAAC,EAMhD,QAAQ,MAAMrF,CAAK,EAGhB,QAAQ,OAAOA,CAAK,EAE/B,SAAS+a,IAAU,CACX,OAAAF,IAASnH,EAAa,QAAU9N,GACzB,QAAQ,QAAQ,EACpB,IAAI,QAAQ,CAAC2J,EAASoD,IAAW,CACpCgI,GAAc,IAAI,CAACpL,EAASoD,CAAM,CAAC,EACtC,EAEL,SAAS6G,GAAYpQ,EAAK,CACtB,OAAKyR,KAEDA,GAAQ,CAACzR,EACMqR,GAAA,EACfE,GACK,KAAK,EACL,QAAQ,CAAC,CAACpL,EAASoD,CAAM,IAAOvJ,EAAMuJ,EAAOvJ,CAAG,EAAImG,GAAU,EACnEoL,GAAc,MAAM,GAEjBvR,CAAA,CAGX,SAASmQ,GAAanU,EAAIC,EAAMiV,EAAQC,EAAmB,CACjD,MAAE,eAAAS,IAAmB7P,EACvB,IAAC3J,IAAa,CAACwZ,GACf,OAAO,QAAQ,QAAQ,EAC3B,MAAM/T,GAAkB,CAACqT,GAAUpT,GAAuBL,GAAazB,EAAG,SAAU,CAAC,CAAC,IAChFmV,GAAqB,CAACD,IACpB,QAAQ,OACR,QAAQ,MAAM,QAClB,KACG,OAAAW,GAAA,EACF,KAAK,IAAMD,GAAe5V,EAAIC,EAAM4B,EAAc,CAAC,EACnD,SAAiBxB,IAAYgB,GAAiBhB,EAAQ,CAAC,EACvD,UAAagU,GAAarQ,GAAKhE,EAAIC,CAAI,CAAC,EAEjD,MAAMqE,EAAM5C,GAAU8C,EAAc,GAAG9C,CAAK,EACxC,IAAAoU,GACE,MAAApB,OAAoB,IACpBrG,GAAS,CACX,aAAAC,EACA,UAAW,GACX,SAAAvF,EACA,YAAAa,EACA,YAAarB,EAAQ,YACrB,SAAAwK,EACA,UAAA9I,EACA,QAAAE,EACA,QAAApE,EACA,KAAA9B,EACA,QAAA1B,EACA,GAAA+B,EACA,KAAM,IAAMA,EAAG,EAAE,EACjB,QAAS,IAAMA,EAAG,CAAC,EACnB,WAAY6N,EAAa,IACzB,cAAeC,EAAoB,IACnC,UAAWC,EAAY,IACvB,QAASmD,GAAe,IACxB,QAAAG,GACA,QAAQlB,EAAK,CACT,MAAMpG,EAAS,KACXoG,EAAA,UAAU,aAAc1E,EAAU,EAClC0E,EAAA,UAAU,aAAc1C,EAAU,EAClC0C,EAAA,OAAO,iBAAiB,QAAUpG,EACtC,OAAO,eAAeoG,EAAI,OAAO,iBAAkB,SAAU,CACzD,WAAY,GACZ,IAAK,IAAMjG,EAAMF,CAAY,EAChC,EAIGlS,IAGA,CAAC0Z,IACDxH,EAAa,QAAU9N,KAEbsV,GAAA,GACV7R,EAAKO,EAAc,QAAQ,EAAE,MAAaR,IAAA,CAEoB,CAC7D,GAEL,MAAM+R,EAAgB,CAAC,EACvB,UAAWvkB,MAAOgP,GACP,sBAAeuV,EAAevkB,GAAK,CACtC,IAAK,IAAM8c,EAAa,MAAM9c,EAAG,EACjC,WAAY,GACf,EAEDijB,EAAA,QAAQzI,GAAWqC,CAAM,EAC7BoG,EAAI,QAAQxI,GAAkB+J,GAAgBD,CAAa,CAAC,EACxDtB,EAAA,QAAQvI,GAAuBoC,CAAY,EAC/C,MAAM2H,EAAaxB,EAAI,QACvBC,GAAc,IAAID,CAAG,EACrBA,EAAI,QAAU,UAAY,CACtBC,GAAc,OAAOD,CAAG,EAEpBC,GAAc,KAAO,IAEHnC,EAAA/R,GAClB4U,GAAyBA,EAAsB,EACvBA,EAAA,KACxB9G,EAAa,MAAQ9N,GACXsV,GAAA,GACFL,GAAA,IAEDQ,EAAA,CACf,CAIA,CAER,EAEA,SAASjB,GAAcnH,EAAQ,CAC3B,OAAOA,EAAO,OAAO,CAACqI,EAASzJ,IAAUyJ,EAAQ,KAAK,IAAM7I,EAAeZ,CAAK,CAAC,EAAG,QAAQ,SAAS,EAElG,OAAA4B,EACX,CACA,SAASyG,GAAuB9U,EAAIC,EAAM,CACtC,MAAM0U,EAAiB,CAAC,EAClBC,EAAkB,CAAC,EACnBC,EAAkB,CAAC,EACnBsB,EAAM,KAAK,IAAIlW,EAAK,QAAQ,OAAQD,EAAG,QAAQ,MAAM,EAC3D,QAAS5K,EAAI,EAAGA,EAAI+gB,EAAK/gB,IAAK,CACpB,MAAAghB,EAAanW,EAAK,QAAQ7K,CAAC,EAC7BghB,IACIpW,EAAG,QAAQ,QAAeJ,GAAkByI,EAAQ+N,CAAU,CAAC,EAC/DxB,EAAgB,KAAKwB,CAAU,EAE/BzB,EAAe,KAAKyB,CAAU,GAEhC,MAAAC,EAAWrW,EAAG,QAAQ5K,CAAC,EACzBihB,IAEKpW,EAAK,QAAQ,QAAeL,GAAkByI,EAAQgO,CAAQ,CAAC,GAChExB,EAAgB,KAAKwB,CAAQ,EAErC,CAEG,OAAC1B,EAAgBC,EAAiBC,CAAe,CAC5D,CAMA,SAASyB,IAAY,CACjB,OAAOrJ,GAAOjB,EAAS,CAC3B,CAKA,SAASuK,GAASC,EAAO,CACrB,OAAOvJ,GAAOhB,EAAgB,CAClC,8hBClsHA;AAAA;AAAA;AAAA;AAAA,GAYA,IAAIwK,GAQJ,MAAMC,GAAkBC,GAAWF,GAAcE,EAK3CC,GAAsG,OAAO,EAEnH,SAASC,GAETC,EAAG,CACC,OAAQA,GACJ,OAAOA,GAAM,UACb,OAAO,UAAU,SAAS,KAAKA,CAAC,IAAM,mBACtC,OAAOA,EAAE,QAAW,UAC5B,CAMA,IAAIC,IACH,SAAUA,EAAc,CAQrBA,EAAa,OAAY,SAMzBA,EAAa,YAAiB,eAM9BA,EAAa,cAAmB,gBAEpC,GAAGA,KAAiBA,GAAe,GAAG,EAu4BtC,SAASC,IAAc,CACb,MAAAC,EAAQC,GAAY,EAAI,EAGxBtU,EAAQqU,EAAM,IAAI,IAAM/F,EAAI,CAAE,EAAC,EACrC,IAAIiG,EAAK,CAAC,EAENC,EAAgB,CAAC,EACrB,MAAMT,EAAQU,GAAQ,CAClB,QAAQ5C,EAAK,CAGTiC,GAAeC,CAAK,EACpBA,EAAM,GAAKlC,EACPA,EAAA,QAAQmC,GAAaD,CAAK,EAC1BlC,EAAA,OAAO,iBAAiB,OAASkC,EAKrCS,EAAc,QAASE,GAAWH,EAAG,KAAKG,CAAM,CAAC,EACjDF,EAAgB,CAAC,CACrB,EACA,IAAIE,EAAQ,CACJ,OAAC,KAAK,GAINH,EAAG,KAAKG,CAAM,EAHdF,EAAc,KAAKE,CAAM,EAKtB,IACX,EACA,GAAAH,EAGA,GAAI,KACJ,GAAIF,EACJ,OAAQ,IACR,MAAArU,CAAA,CACH,EAMM,OAAA+T,CACX,CA4GA,MAAM7Z,GAAO,IAAM,CAAE,EACrB,SAASya,GAAgBC,EAAevU,EAAUwU,EAAUC,EAAY5a,GAAM,CAC1E0a,EAAc,KAAKvU,CAAQ,EAC3B,MAAM0U,EAAqB,IAAM,CACvB,MAAAC,EAAMJ,EAAc,QAAQvU,CAAQ,EACtC2U,EAAM,KACQJ,EAAA,OAAOI,EAAK,CAAC,EACjBF,EAAA,EAElB,EACI,OAACD,GAAYI,MACbC,GAAeH,CAAkB,EAE9BA,CACX,CACA,SAASI,GAAqBP,KAAkBQ,EAAM,CAClDR,EAAc,MAAM,EAAE,QAASvU,GAAa,CACxCA,EAAS,GAAG+U,CAAI,EACnB,CACL,CAEA,MAAMC,GAA0Bvb,GAAOA,EAAG,EAKpCwb,GAAgB,OAAO,EAKvBC,GAAc,OAAO,EAC3B,SAASC,GAAqB9mB,EAAQ+mB,EAAc,CAE5C/mB,aAAkB,KAAO+mB,aAAwB,IACpCA,EAAA,QAAQ,CAAC5mB,EAAOD,IAAQF,EAAO,IAAIE,EAAKC,CAAK,CAAC,EAEtDH,aAAkB,KAAO+mB,aAAwB,KAEzCA,EAAA,QAAQ/mB,EAAO,IAAKA,CAAM,EAG3C,UAAWE,KAAO6mB,EAAc,CACxB,IAACA,EAAa,eAAe7mB,CAAG,EAChC,SACE,MAAA8mB,EAAWD,EAAa7mB,CAAG,EAC3B+mB,EAAcjnB,EAAOE,CAAG,EAC1BqlB,GAAc0B,CAAW,GACzB1B,GAAcyB,CAAQ,GACtBhnB,EAAO,eAAeE,CAAG,GACzB,CAACgnB,GAAMF,CAAQ,GACf,CAACG,GAAWH,CAAQ,EAIpBhnB,EAAOE,CAAG,EAAI4mB,GAAqBG,EAAaD,CAAQ,EAIxDhnB,EAAOE,CAAG,EAAI8mB,CAClB,CAEG,OAAAhnB,CACX,CACA,MAAMonB,GAE2B,OAAO,EAiBxC,SAASC,GAAc/gB,EAAK,CACxB,MAAO,CAACif,GAAcjf,CAAG,GAAK,CAACA,EAAI,eAAe8gB,EAAiB,CACvE,CACA,KAAM,CAAElc,SAAW,SACnB,SAASoc,GAAW9B,EAAG,CACnB,MAAO,CAAC,EAAE0B,GAAM1B,CAAC,GAAKA,EAAE,OAC5B,CACA,SAAS+B,GAAmBC,EAAI/S,EAAS4Q,EAAOoC,EAAK,CACjD,KAAM,CAAE,MAAAnW,EAAO,QAAAoW,EAAS,QAAAC,CAAY,EAAAlT,EAC9BmT,EAAevC,EAAM,MAAM,MAAMmC,CAAE,EACrC,IAAAK,EACJ,SAASC,GAAQ,CACRF,IAEDvC,EAAM,MAAM,MAAMmC,CAAE,EAAIlW,EAAQA,EAAA,EAAU,CAAC,GAG/C,MAAMyW,EAGAC,GAAO3C,EAAM,MAAM,MAAMmC,CAAE,CAAC,EAClC,OAAOtc,GAAO6c,EAAYL,EAAS,OAAO,KAAKC,GAAW,EAAE,EAAE,OAAO,CAACM,EAAiBpU,KAInFoU,EAAgBpU,CAAI,EAAIkS,GAAQ9I,EAAS,IAAM,CAC3CmI,GAAeC,CAAK,EAEpB,MAAMwC,EAAQxC,EAAM,GAAG,IAAImC,CAAE,EAK7B,OAAOG,EAAQ9T,CAAI,EAAE,KAAKgU,EAAOA,CAAK,EACzC,CAAC,EACKI,GACR,CAAE,EAAC,EAEV,OAAAJ,EAAQK,GAAiBV,EAAIM,EAAOrT,EAAS4Q,EAAOoC,EAAK,EAAI,EACtDI,CACX,CACA,SAASK,GAAiBC,EAAKL,EAAOrT,EAAU,GAAI4Q,EAAOoC,EAAKW,EAAgB,CACxE,IAAAzC,EACJ,MAAM0C,EAAmBnd,GAAO,CAAE,QAAS,CAAC,GAAKuJ,CAAO,EAMlD6T,EAAoB,CAAE,KAAM,EAAK,EAsBnC,IAAAC,EACAC,EACAtC,EAAgB,CAAC,EACjBuC,EAAsB,CAAC,EACvBC,EACJ,MAAMd,EAAevC,EAAM,MAAM,MAAM8C,CAAG,EAGtC,CAACC,GAAkB,CAACR,IAEpBvC,EAAM,MAAM,MAAM8C,CAAG,EAAI,CAAC,GAEbvI,EAAI,CAAE,GAGnB,IAAA+I,EACJ,SAASC,EAAOC,EAAuB,CAC/B,IAAAC,EACJP,EAAcC,EAAkB,GAM5B,OAAOK,GAA0B,YACjCA,EAAsBxD,EAAM,MAAM,MAAM8C,CAAG,CAAC,EACrBW,EAAA,CACnB,KAAMrD,GAAa,cACnB,QAAS0C,EACT,OAAQO,CACZ,IAGA5B,GAAqBzB,EAAM,MAAM,MAAM8C,CAAG,EAAGU,CAAqB,EAC3CC,EAAA,CACnB,KAAMrD,GAAa,YACnB,QAASoD,EACT,QAASV,EACT,OAAQO,CACZ,GAEE,MAAAK,EAAgBJ,EAAiB,OAAO,EACrCpE,GAAA,EAAE,KAAK,IAAM,CACdoE,IAAmBI,IACLR,EAAA,GAClB,CACH,EACiBC,EAAA,GAElB/B,GAAqBP,EAAe4C,EAAsBzD,EAAM,MAAM,MAAM8C,CAAG,CAAC,EAE9E,MAAAa,EAASZ,EACT,UAAkB,CACV,MAAE,MAAA9W,GAAUmD,EACZwU,EAAW3X,EAAQA,EAAM,EAAI,CAAC,EAE/B,YAAQ4X,GAAW,CAEpBhe,GAAOge,EAAQD,CAAQ,EAC1B,CACL,EAMUzd,GACd,SAAS2d,GAAW,CAChBxD,EAAM,KAAK,EACXO,EAAgB,CAAC,EACjBuC,EAAsB,CAAC,EACjBpD,EAAA,GAAG,OAAO8C,CAAG,EAOvB,MAAMiB,EAAS,CAAChe,EAAIyI,EAAO,KAAO,CAC9B,GAAI+S,MAAiBxb,EACjB,OAAAA,EAAGyb,EAAW,EAAIhT,EACXzI,EAEX,MAAMie,EAAgB,UAAY,CAC9BjE,GAAeC,CAAK,EACd,MAAAqB,EAAO,MAAM,KAAK,SAAS,EAC3B4C,EAAoB,CAAC,EACrBC,EAAsB,CAAC,EAC7B,SAASC,GAAM7X,GAAU,CACrB2X,EAAkB,KAAK3X,EAAQ,EAEnC,SAAS8X,GAAQ9X,GAAU,CACvB4X,EAAoB,KAAK5X,EAAQ,EAGrC8U,GAAqBgC,EAAqB,CACtC,KAAA/B,EACA,KAAM2C,EAAcxC,EAAW,EAC/B,MAAAgB,EACA,MAAA2B,GACA,QAAAC,EAAA,CACH,EACG,IAAAC,GACA,IACMA,GAAAte,EAAG,MAAM,MAAQ,KAAK,MAAQ+c,EAAM,KAAON,EAAOnB,CAAI,QAGzDpd,GAAO,CACV,MAAAmd,GAAqB8C,EAAqBjgB,EAAK,EACzCA,EAAA,CAEV,OAAIogB,cAAe,QACRA,GACF,KAAMvpB,KACPsmB,GAAqB6C,EAAmBnpB,EAAK,EACtCA,GACV,EACI,MAAOmJ,KACRmd,GAAqB8C,EAAqBjgB,EAAK,EACxC,QAAQ,OAAOA,EAAK,EAC9B,GAGLmd,GAAqB6C,EAAmBI,EAAG,EACpCA,GACX,EACA,OAAAL,EAAczC,EAAa,EAAI,GAC/ByC,EAAcxC,EAAW,EAAIhT,EAGtBwV,CACX,EAOMM,EAAe,CACjB,GAAItE,EAEJ,IAAA8C,EACA,UAAWlC,GAAgB,KAAK,KAAMwC,CAAmB,EACzD,OAAAG,EACA,OAAAI,EACA,WAAWrX,EAAU8C,EAAU,GAAI,CACzB,MAAA4R,EAAqBJ,GAAgBC,EAAevU,EAAU8C,EAAQ,SAAU,IAAMmV,GAAa,EACnGA,EAAcjE,EAAM,IAAI,IAAM9F,GAAM,IAAMwF,EAAM,MAAM,MAAM8C,CAAG,EAAI7W,GAAU,EAC3EmD,EAAQ,QAAU,OAAS+T,EAAkBD,IACpC5W,EAAA,CACL,QAASwW,EACT,KAAM1C,GAAa,OACnB,OAAQiD,GACTpX,CAAK,GAEbpG,GAAO,GAAIod,EAAmB7T,CAAO,CAAC,CAAC,EACnC,OAAA4R,CACX,EACA,SAAA8C,CACJ,EACMtB,EAAQxJ,GAQRsL,CAAY,EAGZtE,EAAA,GAAG,IAAI8C,EAAKN,CAAK,EAGvB,MAAMgC,GAFkBxE,EAAM,IAAMA,EAAM,GAAG,gBAAmBsB,IAE9B,IAAMtB,EAAM,GAAG,IAAI,KAAOM,EAAQC,GAAe,OAAI,IAAMkC,EAAM,CAAE,OAAAsB,EAAQ,CAAC,CAAC,CAAC,EAEhH,UAAWlpB,KAAO2pB,EAAY,CACpB,MAAAC,EAAOD,EAAW3pB,CAAG,EACtB,GAAAgnB,GAAM4C,CAAI,GAAK,CAACxC,GAAWwC,CAAI,GAAM3C,GAAW2C,CAAI,EAO3C1B,IAEFR,GAAgBP,GAAcyC,CAAI,IAC9B5C,GAAM4C,CAAI,EACLA,EAAA,MAAQlC,EAAa1nB,CAAG,EAKR4mB,GAAAgD,EAAMlC,EAAa1nB,CAAG,CAAC,GAIpDmlB,EAAM,MAAM,MAAM8C,CAAG,EAAEjoB,CAAG,EAAI4pB,WAQ7B,OAAOA,GAAS,WAAY,CACjC,MAAMC,EAAsEX,EAAOU,EAAM5pB,CAAG,EAI5F2pB,EAAW3pB,CAAG,EAAI6pB,EAOD1B,EAAA,QAAQnoB,CAAG,EAAI4pB,CAAA,CAgBpC,CAIJ5e,UAAO2c,EAAOgC,CAAU,EAGjB3e,GAAA8e,GAAMnC,CAAK,EAAGgC,CAAU,EAIxB,sBAAehC,EAAO,SAAU,CACnC,IAAK,IAAyExC,EAAM,MAAM,MAAM8C,CAAG,EACnG,IAAM7W,GAAU,CAKZsX,EAAQM,GAAW,CAEfhe,GAAOge,EAAQ5X,CAAK,EACvB,EACL,CACH,EA8FK+T,EAAA,GAAG,QAAS4E,GAAa,CAavB/e,GAAO2c,EAAOlC,EAAM,IAAI,IAAMsE,EAAS,CACnC,MAAApC,EACA,IAAKxC,EAAM,GACX,MAAAA,EACA,QAASgD,CACZ,EAAC,CAAC,CACP,CACH,EAWGT,GACAQ,GACA3T,EAAQ,SACAA,EAAA,QAAQoT,EAAM,OAAQD,CAAY,EAEhCW,EAAA,GACIC,EAAA,GACXX,CACX,CAEA,2BACA,SAASqC,GAET1C,EAAIM,EAAOqC,EAAc,CACjB,IAAA1V,EACE,MAAA2V,EAAe,OAAOtC,GAAU,WAEtCrT,EAAU2V,EAAeD,EAAerC,EAC/B,SAAAuC,EAAShF,EAAOoC,EAAK,CAC1B,MAAM6C,EAAaC,GAAoB,EACvC,OAAAlF,EAGuFA,IAC9EiF,EAAa3O,GAAO2J,GAAa,IAAI,EAAI,MAC9CD,GACAD,GAAeC,CAAK,EAMhBA,EAAAF,GACHE,EAAM,GAAG,IAAImC,CAAE,IAEZ4C,EACiBlC,GAAAV,EAAIM,EAAOrT,EAAS4Q,CAAK,EAGvBkC,GAAAC,EAAI/S,EAAS4Q,CAAK,GAQ/BA,EAAM,GAAG,IAAImC,CAAE,CAwBtB,CAEX,OAAA6C,EAAS,IAAM7C,EACR6C,CACX,CAgKA,SAASG,GAAY3C,EAAO,CAClB,MAAA4C,EAAWT,GAAMnC,CAAK,EACtB6C,EAAO,CAAC,EACd,UAAWxqB,KAAOuqB,EAAU,CAClB,MAAAtqB,EAAQsqB,EAASvqB,CAAG,EAGtBC,EAAM,OAENuqB,EAAKxqB,CAAG,EAEJ+c,EAAS,CACL,IAAK,IAAM4K,EAAM3nB,CAAG,EACpB,IAAIC,EAAO,CACP0nB,EAAM3nB,CAAG,EAAIC,CAAA,CACjB,CACH,GAEA+mB,GAAM/mB,CAAK,GAAKgnB,GAAWhnB,CAAK,KAErCuqB,EAAKxqB,CAAG,EAEJyqB,GAAM9C,EAAO3nB,CAAG,EACxB,CAEG,OAAAwqB,CACX,CC73D6K,MAAME,GAAE,OAAO,IAAI,6CAA6C,eAAC,IAAAC,IAAUD,MAATE,GAAA,KAAO,CAAQ,YAAYniB,EAAE,CAArBoiB,EAAA,KAACH,IAAGI,GAAA,KAAAC,IAAkBC,GAAA,KAAKD,GAAGtiB,GAAE,KAAKiiB,EAAC,EAAE,EAAE,CAAC,OAAO,GAAGjiB,EAAE,CAAC,OAAgB,OAAOA,GAAjB,UAA2BA,IAAP,MAAeA,EAAEiiB,EAAC,IAAR,EAAS,CAAC,QAAQ,CAAC,OAAOO,GAAA,KAAKF,IAAL,UAAS,CAAC,EAA5HA,GAAA,YAAZH,ICA/O,SAASF,GAAEA,EAAEjiB,EAAE,CAAC,OAAO,QAAQ,YAAYA,EAAEiiB,CAAC,CAAC,CAAC,SAASjiB,GAAE,EAAEyiB,EAAEld,EAAEmd,EAAE,CAAC,MAAMxkB,EAAEwkB,EAAET,GAAE,EAAEQ,CAAC,GAAGld,CAAC,EAAE,QAAQ,eAAekd,EAAEvkB,EAAE,CAAC,CAAC,CCA0C,MAAMqH,GAAE,QAAQod,GAAE,OAAOxnB,GAAE,YAAY0hB,GAAE,WAAW+F,GAAE,SAASF,GAAE,eAAeG,GAAE,iBAAiBC,GAAE,cAAoB1S,GAAE,CAACwS,GAAEF,GAAEC,GAAExnB,GAAEoK,GAAEsX,EAAC,EAAEkG,GAAE,OAAO,IAAI,sCAAsC,YAAE,IAAAC,GAAA,MAAM9kB,WAAUikB,GAAA,MAAOY,MAAPZ,GAAK,CAAU,YAAYF,EAAEjiB,EAAEyiB,EAAE,CAAC,MAAMziB,EAAEyiB,CAAC,EAArCL,EAAA,KAACW,IAAGX,EAAA,aAAmC,KAAKW,EAAC,EAAE,GAAG,KAAK,KAAKd,CAAC,CAAC,OAAO,GAAGA,EAAE,CAAC,OAAgB,OAAOA,GAAjB,UAA2BA,IAAP,MAAeA,EAAEc,EAAC,IAAR,EAAS,CAAC,OAAO,cAAcd,EAAEjiB,EAAE,CAAC,OAAO9B,GAAE,GAAG+jB,CAAC,GAAGA,EAAE,OAAOjiB,CAAC,CAAC,EAAC,IAAIijB,GAAE9N,GAAE,SAASU,GAAEoM,EAAEjiB,EAAE,CAAC,MAAM,EAAE,GAAG,QAAQiiB,EAAE,EAAEA,EAAEjiB,EAAE,OAAO,EAAEiiB,EAAYjiB,EAAEiiB,CAAC,IAAZ,QAAe,EAAE,KAAKA,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI/jB,GAAE+kB,GAAE,0BAA0B,8CAA8ChB,EAAE,IAAI,6BAA6B,EAAE,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,mHAA4M,CAAC,CAAC,SAAS1kB,GAAE0kB,EAAE,CAAC,MAAM,CAAC,KAAK9M,GAAE,gBAAgB,KAAK,OAAO,SAAS,GAAG,KAAK,IAAI,IAAI,WAAW,OAAO,MAAM8M,CAAC,CAAC,CAAC,SAASvQ,GAAEuQ,EAAE,CAAC,MAAMjiB,EAAEiiB,EAAE,KAAMA,GAAGA,EAAE,MAAMW,EAAG,EAAC,EAAEX,EAAE,KAAMA,GAAGA,EAAE,MAAMS,EAAC,EAAG,GAAYT,EAAE,KAAMA,GAAGA,EAAE,MAAM9mB,EAAC,IAA7B,OAAgC,OAAO,SAAS8mB,EAAEjiB,EAAE,CAAC,GAAYA,IAAT,QAAqBiiB,IAAT,OAAW,MAAM,IAAI/jB,GAAE+kB,GAAE,0BAA0B,gEAAgE,EAAE,MAAM,CAAC,KAAK9N,GAAE,SAAS,CAAC,EAAEnV,EAAE,CAAC,EAAE,GAAY,IAAT,QAAqBA,IAAT,OAAW,MAAM,IAAI9B,GAAE+kB,GAAE,0BAA0B,uDAAuD,EAAE,MAAMJ,EAAEZ,EAAE,KAAMA,GAAGA,EAAE,MAAM1c,EAAG,EAACud,EAAEb,EAAE,KAAMA,GAAGA,EAAE,MAAMpF,EAAC,EAAGkG,EAAEd,EAAE,KAAMA,GAAGA,EAAE,MAAMU,IAAI,MAAM,CAAC,KAAc3iB,IAAT,OAAWmV,GAAE,kBAAkBA,GAAE,gBAAgB,KAAK0N,GAAA,YAAAA,EAAG,MAAM,SAAkBC,IAAT,OAAW,KAAK,IAAI,IAAIb,EAAE,OAAQA,GAAG7R,GAAE,MAAOpQ,GAAGiiB,EAAE,MAAMjiB,CAAG,GAAG,IAAKiiB,GAAG,CAACA,EAAE,IAAIA,EAAE,KAAK,EAAG,EAAE,WAAWc,GAAA,YAAAA,EAAG,MAAM,MAAe/iB,IAAT,OAAW,iBAAG,MAAMA,EAAE,KAAK,CAAC,CAAC,SAASkjB,GAAEjB,EAAEjiB,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO0R,GAAE,CAAC,CAAC,OAAO+Q,EAAE,CAAC,MAAMvkB,GAAE,cAAcukB,EAAEQ,GAAE,yBAAyB,EAAE,IAAI/kB,GAAE+kB,GAAE,0BAA0B,4EAA4EhB,EAAE,IAAI,wCAAwCjiB,EAAE,SAAQ,CAAE,IAAI,CAAC,MAAMyiB,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,SAAS3iB,GAAE,EAAE,CAAC,MAAM2iB,EAAER,GAAE,EAAE,mBAAmB,EAAE1c,EAAE0c,GAAE,EAAE,kBAAkB,EAAE,EAAE,GAAG,GAAY1c,IAAT,OAAW,SAAS,CAAC0c,EAAEQ,CAAC,IAAI,OAAO,QAAQld,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS0c,CAAC,EAAE,EAAE,CAAC,EAAEiB,GAAE,EAAE,EAAET,CAAC,CAAC,CAAC,GAAYA,IAAT,QAAW,QAAQR,EAAE,EAAEA,EAAEQ,EAAE,OAAO,EAAER,EAAE,GAAY,EAAEA,CAAC,IAAZ,OAAc,CAAC,MAAMjiB,EAAEyiB,EAAER,CAAC,EAAE,EAAEA,CAAC,EAAE1kB,GAAEyC,CAAC,CAAC,EAAC,OAAO6V,GAAE,EAAE,CAAC,EAAE,CAAC,CAAC,SAASsN,GAAElB,EAAEjiB,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO0R,GAAE,CAAC,CAAC,OAAO+Q,EAAE,CAAC,MAAMvkB,GAAE,cAAcukB,EAAEQ,GAAE,yBAAyB,EAAE,IAAI/kB,GAAE+kB,GAAE,0BAA0B,4EAA4EhB,EAAE,IAAI,kBAAkBjiB,EAAE,SAAU,KAAI,CAAC,MAAMyiB,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,SAASW,GAAE,EAAE,CAAC,MAAMX,EAAER,GAAE,EAAE,wBAAwB,EAAE1c,EAAE,IAAI,IAAI,GAAYkd,IAAT,OAAW,UAAUR,KAAK,QAAQ,QAAQQ,CAAC,EAAE,CAAC,MAAME,EAAEF,EAAER,CAAC,EAAE1c,EAAE,IAAI0c,EAAEkB,GAAE,EAAElB,EAAEU,CAAC,CAAC,CAAC,CAAC,OAAOpd,CAAC,CAAC,SAAS8d,GAAE,EAAE,CAAC,MAAMZ,EAAER,GAAE,EAAEY,EAAC,EAAEtd,EAAE0c,GAAE,EAAEa,EAAC,EAAE,MAAM,CAAC,qBAAqBhjB,GAAE,CAAC,EAAE,UAAU,CAAC,wBAAwB2iB,GAAA,YAAAA,EAAG,MAAM,qBAAqBld,GAAA,YAAAA,EAAG,KAAK,EAAE,WAAW6d,GAAE,CAAC,CAAC,CAAC,CAAC,SAASE,GAAErB,EAAEjiB,EAAE,CAAC,MAAM,EAAEA,EAAE,uBAAuBiiB,CAAC,EAAE1c,EAAE,GAAG,SAAS,CAACvF,EAAE2iB,CAAC,IAAI,OAAO,QAAQ,EAAE,qBAAqB,EAAE,CAAC,MAAMF,EAAE,SAASziB,CAAC,EAAEuF,EAAEkd,CAAC,EAAES,GAAEjB,EAAEQ,EAAEE,CAAC,CAAC,CAAC,GAAY,EAAE,4BAAX,QAAqC,QAAQV,EAAE,EAAEA,EAAE,EAAE,0BAA0B,OAAO,EAAEA,EAAE,GAAY1c,EAAE0c,CAAC,IAAZ,OAAc,CAAC,MAAMjiB,EAAE,EAAE,0BAA0BiiB,CAAC,EAAE1c,EAAE0c,CAAC,EAAE1kB,GAAEyC,CAAC,CAAC,EAAC,OAAO6V,GAAEoM,EAAE1c,CAAC,EAAEA,CAAC,CAAC,SAASge,GAAEtB,EAAEjiB,EAAE,CAAC,MAAM,EAAEA,EAAE,sBAAsBiiB,CAAC,EAAE1c,EAAE,IAAI,IAAI,UAAUvF,KAAK,QAAQ,QAAQ,CAAC,EAAE,CAAC,MAAM2iB,EAAE,EAAE3iB,CAAC,EAAEuF,EAAE,IAAIvF,EAAEmjB,GAAElB,EAAEjiB,EAAE2iB,CAAC,CAAC,CAAC,CAAC,OAAOpd,CAAC,CAAC,SAASie,GAAE,EAAEf,EAAE,CAAC,MAAMld,EAAE0c,GAAE,EAAEY,EAAC,EAAE,EAAEZ,GAAE,EAAEa,EAAC,EAAE,MAAM,CAAC,qBAAqBQ,GAAE,EAAEb,CAAC,EAAE,UAAU,CAAC,wBAAwBld,GAAA,YAAAA,EAAG,MAAM,qBAAqB,iBAAG,KAAK,EAAE,WAAWge,GAAE,EAAEd,CAAC,CAAC,CAAC,CAAC,SAASjd,GAAEyc,EAAE,CAAC,MAAMjiB,EAAE,OAAO,eAAeiiB,EAAE,SAAS,EAAmB,OAAfjiB,GAAA,YAAAA,EAAG,WAAoB,CAAC,SAASzE,GAAE0mB,EAAE,CAAC,OAAOA,EAAE,OAAO9M,GAAE,UAAU,CAAC,CAAC,IAAIha,GAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM6E,EAAE,CAACyjB,GAAE,CAAC,CAAC,EAAW,EAAE,OAAX,QAAiBzjB,EAAE,KAAK,CAAC,IAAIuF,GAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,UAAUvF,EAAE,KAAK,CAAC,IAAI6c,GAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC4F,EAAEld,CAAC,IAAI,EAAE,KAAKvF,EAAE,KAAK,CAAC,IAAIyiB,EAAE,MAAMld,CAAC,CAAC,EAAE,OAAS,EAAE,aAAX,QAAuBvF,EAAE,KAAK,CAAC,IAAI2iB,GAAE,MAAM,EAAE,UAAU,CAAC,EAAS3iB,CAAC,EAAEiiB,CAAC,CAAC,CAAC,SAASwB,GAAExB,EAAE,CAAC,IAAIjiB,EAAE,OAAOiiB,EAAE,KAAI,CAAE,KAAK9M,GAAE,kBAAkBnV,EAAE,CAAC,IAAI0iB,GAAE,MAAMT,EAAE,KAAK,EAAE,MAAM,KAAK9M,GAAE,gBAAgBnV,EAAE,CAAC,IAAI4iB,GAAE,MAAMX,EAAE,KAAK,CAAC,CAAC,OAAOjiB,CAAC,EAAE,SAASiiB,EAAE,CAACA,EAAEA,EAAE,2BAA2B,CAAC,EAAE,6BAA6BA,EAAEA,EAAE,0BAA0B,CAAC,EAAE,4BAA4BA,EAAEA,EAAE,SAAS,CAAC,EAAE,WAAWA,EAAEA,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAEgB,KAAIA,GAAE,CAAE,EAAC,EAAE,SAAShB,EAAE,CAACA,EAAEA,EAAE,kBAAkB,CAAC,EAAE,oBAAoBA,EAAEA,EAAE,gBAAgB,CAAC,EAAE,kBAAkBA,EAAEA,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE9M,KAAIA,GAAE,CAAE,EAAC,YAAE,IAAAuO,IAAAtnB,GAAA,KAAO,CAAI,YAAY,EAAE,CAAjBimB,GAAA,KAAAsB,IAAkBpB,GAAA,KAAKoB,GAAG,EAAC,CAAC,WAAW,EAAE,CAAC,OAAOnB,GAAA,KAAKmB,IAAG,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,OAAOnB,GAAA,KAAKmB,IAAG,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,OAAOnB,GAAA,KAAKmB,IAAG,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAOnB,GAAA,KAAKmB,MAAK,CAAC,CAAC,OAAO,CAAC,OAAOnB,GAAA,KAAKmB,GAAE,CAAC,EAAzMA,GAAA,YAARvnB,IAAkN,MAAMwnB,GAAE,sDAA6B,IAAAC,IAAAznB,GAAA,KAAO,CAAmB,YAAYqmB,EAAEld,EAAE,EAAE,CAApC8c,GAAA,KAAAC,IAAGD,GAAA,KAAAyB,IAAGzB,GAAA,KAAAjmB,IAAGimB,GAAA,KAAA0B,IAAG1B,GAAA,KAAApmB,IAAGomB,GAAA,KAAA2B,IAAsBzB,GAAA,KAAKuB,GAAG,UAAU,CAAC,MAAMrB,EAAER,GAAE,OAAO2B,EAAC,GAAG,EAAE,OAAOnB,IAAI,OAAO,iBAAiBziB,GAAE,OAAO4jB,GAAEnB,EAAG,IAAI,OAAO,gBAAgB,EAAGziB,GAAE,OAAO4jB,GAAEnB,EAAGR,GAAGA,EAAE,CAAC,EAAGQ,CAAC,EAAG,GAACF,GAAA,KAAKnmB,GAAGqmB,GAAEF,GAAA,KAAKwB,GAAG,QAAOxB,GAAA,KAAKD,GAAG/c,GAAEgd,GAAA,KAAKtmB,GAAG,IAAIM,GAAY,OAAOkmB,GAAjB,SAAmBA,EAAEA,EAAE,SAAQ,EAAG,MAAM,EAAE,EAAE,CAAC,GAAEF,GAAA,KAAKyB,GAAG,EAAC,CAAC,IAAI,IAAI,CAAC,OAAOxB,GAAA,KAAKsB,GAAE,CAAC,IAAI,YAAY,CAAC,OAAOtB,GAAA,KAAKpmB,GAAE,CAAC,IAAI,UAAU,CAAC,OAAgBomB,GAAA,KAAKuB,MAAd,QAAmBxB,GAAA,KAAKwB,GAAGxoB,GAAEinB,GAAA,KAAKF,GAAE,GAAGE,GAAA,KAAKuB,GAAE,CAAC,IAAI,MAAM,CAAC,OAAOvB,GAAA,KAAKvmB,GAAE,CAAC,IAAI,MAAM,CAAC,OAAOumB,GAAA,KAAKwB,GAAE,CAAC,IAAI,mBAAmB,CAAC,OAAOvB,GAAE,GAAGD,GAAA,KAAKF,IAAG,KAAK,EAAEE,GAAA,KAAKF,IAAG,MAAM,OAAQ,EAACE,GAAA,KAAKF,IAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAGE,GAAA,KAAKF,IAAG,KAAK,SAAS,EAAE,IAAK,CAAC,CAAC,EAAEtiB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAMA,CAAC,EAAE,CAAE,CAAC,aAAa,CAAC,OAAgBwiB,GAAA,KAAKF,IAAG,OAAjB,OAAsB,KAAK,CAAC,IAAI/c,GAAE,MAAMid,GAAA,KAAKF,IAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,KAAK,SAAS,KAAMtiB,GAAGA,EAAE,MAAM,CAAC,CAAE,CAAC,SAAS,CAAC,OAAOwiB,GAAA,KAAKF,IAAG,OAAOnN,GAAE,iBAAiB,CAAC,SAAS,CAAC,OAAgBqN,GAAA,KAAKF,IAAG,OAAjB,MAAqB,CAAC,YAAY,CAAC,OAAOE,GAAA,KAAKF,IAAG,QAAQ,CAAC,UAAU,CAAC,OAAOE,GAAA,KAAKF,IAAG,KAAK,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC,OAAO,KAAK,QAAS,GAAEE,GAAA,KAAKF,IAAG,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAOE,GAAA,KAAKF,IAAG,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAOtiB,GAAG,KAAK,SAAS,KAAMyiB,GAAGA,EAAE,MAAM,GAAGA,EAAE,QAAQziB,CAAG,EAAC,EAAllCsiB,GAAA,YAAGwB,GAAA,YAAG1nB,GAAA,YAAG2nB,GAAA,YAAG9nB,GAAA,YAAG+nB,GAAA,YAAvB5nB,IAA2lC,MAAM8E,GAAE+gB,GAAG,SAAS,EAAEjiB,EAAE,CAAC,OAAO,SAASyiB,EAAE,CAAC,MAAMld,EAAE,EAAEkd,CAAC,EAAE,IAAIE,EAAEnd,GAAEid,CAAC,EAAE,KAAcE,IAAT,QAAYA,IAAI,QAAQ,CAAC,MAAMV,EAAEjiB,EAAE2iB,CAAC,EAAE,SAAS,CAAC3iB,EAAEyiB,CAAC,IAAIR,EAAE1c,EAAE,WAAW,IAAIvF,CAAC,GAAGuF,EAAE,WAAW,IAAIvF,EAAEyiB,CAAC,EAAEE,EAAEnd,GAAEmd,CAAC,CAAC,CAAC,MAAMxnB,EAAE,GAAG,UAAU8mB,KAAK1c,EAAE,qBAAqB,GAAG0c,EAAE,OAAO9M,GAAE,UAAU,CAAC,MAAMnV,EAAEiiB,EAAE,YAAY,GAAG9mB,EAAE,KAAK,IAAI8oB,GAAEjkB,EAAEiiB,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAACA,EAAEjiB,CAAC,IAAIuF,EAAE,WAAW,GAAGvF,EAAE,OAAOmV,GAAE,UAAU,CAAC,MAAMsN,EAAEziB,EAAE,YAAYiiB,EAAE9mB,EAAE,KAAK,IAAI8oB,GAAExB,EAAEziB,EAAE,eAAe,CAAC,CAAC,CAAC,OAAO7E,CAAC,CAAC,EAAW8mB,IAAT,OAAWoB,GAAErjB,GAAGwjB,GAAExjB,EAAEiiB,CAAC,EAAWA,IAAT,OAAWmB,GAAEpjB,GAAGujB,GAAEvjB,EAAEiiB,CAAC,CAAC,ECA75LU,GAAE,QAAiB9F,GAAE,YAAYtX,GAAE,WAAWmd,GAAE,SAASI,GAAE,eAAeD,GAAE,mBAAmBhN,GAAE,yBAAyBkN,GAAE,uBAAuBE,GAAE,oBAAoB1lB,GAAE,iBAAiB4X,GAAE,cAAqRzD,GAAE,CAAC,QAAQ,UAAU,UAAU,YAAY,UAAU,WAAW,EAAElM,GAAE,CAAC,cAAc,gBAAgB,YAAY,cAAc,aAAa,eAAe,QAAQ,UAAU,SAAS,WAAW,SAAS,WAAW,QAAQ,UAAU,SAAS,UAAU,EAAE4d,GAAE,CAAC,cAAc,gBAAgB,oBAAoB,sBAAsB,SAAS,UAAU,EAAE,IAAIhT,GAAE,EAAE,SAASqT,IAAG,CAAC,OAAOrT,IAAG,CAAC,IAAA8T,GAAA,MAAMC,EAAC,CAAkJ,YAAY,EAAE,EAAE,CAAjK/B,EAAA,WAAGA,EAAA,iBAASA,EAAA,kBAAUA,EAAA,0BAAkBA,EAAA,2BAAmBA,EAAA,cAAMA,EAAA,qBAAaA,EAAA,cAAMA,EAAA,aAAKA,EAAA,gBAAQA,EAAA,iBAASA,EAAA,mBAAWA,EAAA,qBAAaA,EAAA,uBAAgC,KAAK,GAAGqB,GAAC,EAAG,KAAK,UAAU,GAAG,KAAK,kBAAkB,EAAE,KAAK,MAAM,EAAE,KAAK,KAAKje,GAAE,QAAQ,KAAK,WAAWyc,GAAG,GAAG,KAAK,mBAAmB,KAAK,KAAK,MAAM,KAAK,KAAK,QAAQ,KAAK,KAAK,SAAS,KAAK,KAAK,aAAa,KAAK,KAAK,eAAe,KAAK,KAAK,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAIkC,GAAE,KAAK,kBAAkB,KAAK,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQzS,GAAE,WAAW,KAAK,UAAU,EAAE,mBAAmB,KAAK,mBAAmB,EAAE,aAAa,KAAK,aAAa,EAAE,MAAM,KAAK,MAAM,EAAE,KAAK,KAAK,KAAK,EAAE,QAAQ,KAAK,QAAQ,EAAE,SAAS,KAAK,SAAS,EAAE,WAAW,KAAK,WAAW,EAAE,aAAa,KAAK,aAAa,EAAE,eAAe,KAAK,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAC,MAAMyR,GAAE,uDAAuDc,GAAE,gBAAgBT,GAAE,gBAAgBF,GAAE,+CAA+CM,GAAE,oDAAoDrnB,GAAE,uIAAuI6nB,GAAE,CAACnC,EAAEQ,IAAI,mCAAmCR,CAAC,KAAKQ,CAAC,GAAG,IAAA4B,GAAA,KAAO,CAAC,uBAAuB,EAAE,CAAC,MAAM,CAAC,0BAA0B,QAAQ,YAAYpB,GAAE,CAAC,GAAG,CAAE,EAAC,sBAAsB,QAAQ,YAAYJ,GAAE,CAAC,GAAG,CAAE,EAAC,CAAC,sBAAsB,EAAE,CAAC,OAAO,QAAQ,YAAYhN,GAAE,CAAC,GAAG,EAAE,CAAC,EAAC,IAAIwN,GAAE,SAASiB,GAAErC,EAAE,CAAC,OAAOA,aAAa,YAAiDA,EAAE,UAAvC,kCAA8C,EAAE,SAASA,EAAE,CAACA,EAAEA,EAAE,0BAA0B,CAAC,EAAE,4BAA4BA,EAAEA,EAAE,oBAAoB,CAAC,EAAE,sBAAsBA,EAAEA,EAAE,wBAAwB,CAAC,EAAE,yBAAyB,GAAEoB,KAAIA,GAAE,GAAG,EAAE,SAAS7nB,GAAEymB,EAAE,CAAC,OAAkB,OAAOA,GAAnB,WAAqBA,EAAE,KAAe,OAAOA,GAAjB,SAAmBA,EAAE,SAAQ,EAAGA,CAAC,CAAC,SAASniB,GAAEmiB,EAAEQ,EAAEziB,EAAE,CAAC,IAAI7E,EAAE,GAAG,MAAMwnB,EAAE3iB,EAAEiiB,EAAEQ,CAAC,EAAE,OAAWE,EAAE,SAAN,IAAexnB,EAAE;AAAA,sBAAyBwnB,EAAE,QAASV,GAAG,CAAC,IAAIQ,EAAE,SAAgBR,EAAE,qBAAT,OAA8BQ,EAAES,GAAEjB,EAAE,kBAAkB,GAAG9mB,EAAE,GAAGA,CAAC;AAAA,GAAMsnB,CAAC,GAAGR,EAAE,WAAW,WAAW9mB,EAAE,GAAGA,CAAC,MAAM8mB,EAAE,WAAW,QAAQ,GAAG,CAAG,GAAE9mB,CAAC,CAAC,SAASopB,GAAEtC,EAAEQ,EAAE,CAAC,OAAcR,EAAE,gBAAT,OAAyBA,EAAE,cAAc,oBAAoBQ,GAAG8B,GAAEtC,EAAE,cAAcQ,CAAC,EAAE,CAAC,SAAS+B,GAAEvC,EAAE,CAACA,EAAE,cAAc,QAASQ,GAAG,CAAC,GAAG8B,GAAEtC,EAAEQ,EAAE,iBAAiB,EAAE,CAAC,MAAMR,EAAE,SAASA,EAAE,CAA8H,OAArH,SAASA,EAAEQ,EAAEziB,EAAE,GAAG,CAAC,MAAM7E,EAAEK,GAAEinB,EAAE,iBAAiB,EAAE,OAAOziB,EAAE,KAAK7E,CAAC,EAASsnB,EAAE,gBAAT,KAAuBR,EAAEQ,EAAE,cAAcziB,CAAC,EAAEA,CAAC,EAAEiiB,CAAC,EAAW,UAAU,KAAK,OAAU,CAAC,EAAEQ,CAAC,EAAE,MAAM,IAAI,MAAM,8BAA8BR,CAAC,EAAE,CAAC,CAACuC,GAAE/B,CAAC,CAAC,CAAG,EAAC,SAASS,GAAEjB,EAAE,CAAC,GAASA,EAAE,MAAR,MAAmBA,EAAE,OAAP,GAAY,OAAOA,EAAE,KAAK,CAAC,MAAMQ,EAAER,EAAE,SAAQ,EAAGjiB,EAAEyiB,EAAE,MAAM,uBAAuB,EAAE,OAAcziB,IAAP,KAAS,uBAAuByiB,CAAC,GAAGziB,EAAE,CAAC,CAAC,CAAC,CAAC,SAASzE,GAAE0mB,EAAE,CAAC,MAAM,WAAWA,EAAE,IAAI,UAAU,cAAcA,EAAE,MAAM,SAAU,KAAI,CAAC,MAAMwC,EAAC,CAAkC,YAAY,EAAE,CAA/CrC,EAAA,WAAGA,EAAA,kBAAUA,EAAA,aAAKA,EAAA,uBAA8B,KAAK,GAAGqB,KAAI,KAAK,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,IAAAiB,GAAA,KAAO,CAAW,YAAY,EAAE,EAAE,CAA1BtC,EAAA,YAAIA,EAAA,cAAuB,KAAK,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,MAAMO,GAAE,UAAU,OAAO,KAAK,KAAK,EAAE,UAAU,IAAI,iBAAiB,KAAK,IAAI,SAAQ,CAAE,YAAY,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,KAAC,KAAO,CAA2B,YAAY,EAAE,EAAE,CAA1CP,EAAA,sBAAcA,EAAA,oBAA6B,KAAK,cAAc,EAAE,KAAK,YAAY,CAAC,CAAC,EAAC,SAASuC,GAAElC,EAAEziB,EAAE,CAAC,MAAM7E,EAAE,SAAS8mB,EAAE,CAAC,MAAMQ,EAAE,OAAO,eAAeR,EAAE,SAAS,EAAmB,OAAfQ,GAAA,YAAAA,EAAG,WAAoB,EAAEziB,CAAC,EAAE,GAAY7E,IAAT,QAAYA,IAAI,OAAO,MAAO,GAAE,MAAM,EAAE8mB,GAAEQ,CAAC,EAAEtnB,CAAC,EAAEynB,EAAE,EAAE,IAAKX,GAAGA,EAAE,SAAS,OAAQA,GAAGA,EAAE,MAAMpF,GAAK,EAACtX,EAAE,GAAG,OAAO,MAAM,GAAGqd,CAAC,EAAE,OAAOF,EAAE,EAAE,OAAOnd,EAAE,OAAOmd,EAAE,EAAEA,EAAEiC,GAAElC,EAAEtnB,CAAC,CAAC,KAAAypB,GAAC,MAAMC,EAAC,CAA6F,YAAY,EAAE,EAAE7kB,EAAE7E,EAAEwnB,EAAE,CAAlHP,EAAA,WAAGA,EAAA,0BAAkBA,EAAA,sBAAcA,EAAA,sBAAcA,EAAA,iBAASA,EAAA,sBAAcA,EAAA,eAAOA,EAAA,qBAAoC,KAAK,GAAGqB,GAAC,EAAG,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,cAAczjB,EAAE,KAAK,OAAO2iB,EAAE,KAAK,cAAc,GAAG,KAAK,SAAS,MAAM,QAAQxnB,CAAC,EAAEA,EAAE,CAACA,CAAC,EAAE,KAAK,aAAoB6E,IAAP,KAAS,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAEA,EAAE,CAAC,MAAM7E,EAAE,IAAI0pB,GAAE,EAAE,KAAK,cAAc,KAAK,EAAE7kB,CAAC,EAAE,OAAO,KAAK,cAAc,KAAK7E,CAAC,EAAEA,CAAC,CAAC,EAAC,SAAS2pB,GAAE7C,EAAE,CAAC,OAAOA,EAAE,kBAAkB,CAAC,SAAS8C,GAAE9C,EAAEQ,EAAEziB,EAAE7E,EAAEwnB,EAAE,CAAC,IAAIC,EAAEoC,GAAEhlB,EAAE,UAAU2iB,EAAE,iBAAiB,EAAE9F,EAAE,CAAE,EAAC,OAAO+F,EAAE,SAASS,GAAE,qBAA0BrjB,EAAE,UAAU,QAAQ,qBAAzB,IAAyD,OAAO2iB,EAAE,mBAArB,YAAwCV,EAAE,uBAAuBU,EAAE,iBAAiB,EAAE,4BAA4B3iB,EAAE,UAAU,KAAK2iB,EAAE,iBAAiB,EAAE,SAASC,EAAEoC,GAAEhlB,EAAE,UAAU2iB,EAAE,iBAAiB,GAAG9F,EAAE4F,EAAEG,EAAEA,EAAE,OAAQX,GAAG,CAAC,MAAMQ,EAAE,IAAIoC,GAAE5C,EAAE,kBAAkBjiB,EAAE7E,EAAE8mB,EAAEU,CAAC,EAAE,OAAOV,EAAE,WAAWQ,CAAC,CAAC,GAAI,SAASR,EAAEQ,EAAEziB,EAAE7E,EAAEwnB,EAAE,CAAC,OAAOF,EAAE,OAAM,CAAE,KAAKY,GAAE,oBAAoB,GAAGloB,EAAE,WAAY,EAAC,OAAOsnB,EAAE,CAAC,MAAMA,EAAEjnB,GAAEymB,CAAC,EAAE,IAAIW,EAAEgB,GAAE,MAAMhB,GAAG,SAASX,EAAEQ,EAAE,CAAC,GAAGA,EAAE,SAAU,GAAEA,EAAE,UAAU,CAAC,IAAIziB,EAAE,GAAG,MAAM7E,EAAEsnB,EAAE,YAAa,EAACE,EAAEF,EAAE,gBAAgB,OAActnB,IAAP,OAAW6E,GAAGzE,GAAEJ,CAAC,EAAE;AAAA,GAAawnB,IAAP,MAAUA,EAAE,QAASV,GAAG,CAACjiB,GAAGzE,GAAE0mB,CAAC,EAAE;AAAA,CAAI,CAAC,EAAG,IAAIA,CAAC;AAAA,GAAMA,CAAC,MAAMjiB,CAAC,EAAE,CAAC,MAAM,IAAIiiB,CAAC,EAAE,EAAEQ,EAAEtnB,CAAC,EAAEynB,GAAG9iB,GAAE6iB,EAAEF,EAAEuC,EAAC,EAAShlB,IAAP,OAAW4iB,GAAG;AAAA,kCAAwCpnB,GAAEwE,EAAE,iBAAiB,CAAC,KAAK,IAAI,MAAM4iB,CAAC,CAAC,CAAC,KAAKS,GAAE,wBAAwB,OAAOZ,EAAE,KAAKY,GAAE,0BAA0B,QAAQ,GAAGloB,EAAE,QAAO,EAAG,OAAOsnB,EAAE,CAAC,MAAMA,EAAEjnB,GAAEymB,CAAC,EAAE,IAAIjiB,EAAE,GAAGsjB,EAAC,IAAIb,CAAC,GAAG,MAAMziB,GAAGF,GAAE6iB,EAAEF,EAAEuC,EAAC,EAAE,IAAI,MAAMhlB,CAAC,CAAC,CAAC,CAAC,EAAE2iB,EAAE,kBAAkB9F,EAAE1hB,EAAEwnB,EAAE3iB,EAAE,SAAS,EAAE6c,CAAC,CAAC,SAASoI,GAAEhD,EAAEQ,EAAE,CAAC,MAAMziB,EAAEyiB,EAAE,cAAcK,GAAEJ,GAAEvnB,EAAE,CAAC,IAAIqC,GAAEwC,EAAEiiB,CAAC,CAAC,EAAE,OAAgBQ,EAAE,YAAX,QAAsBtnB,EAAE,KAAK,IAAIqC,GAAEilB,EAAE,UAAU,IAAIA,EAAE,UAAU,KAAK,CAAC,EAAOA,EAAE,aAAP,IAAmBtnB,EAAE,KAAK,IAAIqC,GAAE+H,GAAE,EAAE,CAAC,EAAEpK,CAAC,CAAC,SAAS+pB,GAAEzC,EAAEziB,EAAE7E,EAAE,EAAEynB,EAAE/F,EAAE,CAAC,IAAI,EAAE6F,EAAE,GAAUE,IAAP,KAAS,CAAC,EAAEmC,GAAEtC,EAAEziB,EAAE,EAAE,KAAK6c,CAAC,EAAE6F,EAAE,IAAImC,GAAE1pB,EAAE,EAAE,KAAK,EAAE0hB,CAAC,EAAE,MAAMoF,EAAE,IAAIkD,GAAE,EAAEzC,CAAC,EAAE,EAAE,QAAQT,CAAC,CAAC,MAAM,EAAE8C,GAAEtC,EAAEziB,EAAE,EAAE4iB,EAAE/F,CAAC,EAAE6F,EAAEE,EAAE,gBAAgB/F,EAAE,kBAAkB,EAAEA,CAAC,EAAE,EAAE,QAAS7c,GAAG,CAAC,IAAI7E,EAAE,KAAK,GAAG0hB,EAAE,QAAS,EAAC1hB,EAAEunB,EAAE,gBAAgB1iB,EAAE,kBAAkBA,EAAE6c,CAAC,MAAM,CAAC,GAAU7c,EAAE,QAAT,KAAe,OAAO7E,EAAEunB,CAAC,CAAC,GAAG1iB,EAAE,OAAOwF,GAAE,UAAiBxF,EAAE,qBAAT,KAA4B,CAAC,MAAM4iB,EAAE,SAASH,EAAEziB,EAAE,CAAC,OAAOiiB,GAAEQ,CAAC,EAAEziB,CAAC,CAAC,EAAEyiB,EAAEziB,EAAE,kBAAkB,EAAE,GAAQ,EAAE,UAAU,QAAQ,sBAAzB,GAA6C,CAAC,MAAMiiB,EAAE0C,GAAElC,EAAEziB,EAAE,kBAAkB,EAAE,GAAG4iB,EAAE,OAAOX,EAAE,CAAC,MAAMA,EAAE,4DAA4DiB,GAAEljB,EAAE,kBAAkB,CAAC,0EAA0E,MAAM,IAAI,MAAMiiB,CAAC,CAAC,CAAC,CAACW,EAAE,QAASX,GAAG,CAACiD,GAAEzC,EAAE,GAAGR,EAAE,kBAAkB,EAAE9mB,EAAE8mB,CAAC,CAAC,CAAG,EAAC,CAAC,CAAE,CAAC,SAAS+C,GAAE/C,EAAEQ,EAAE,CAAC,IAAIziB,EAAE,CAAE,EAAC,MAAM7E,EAAE2pB,GAAE7C,CAAC,EAAE,OAAO9mB,EAAE,OAAOsnB,CAAC,EAAEziB,EAAE7E,EAAE,IAAIsnB,CAAC,EAASR,EAAE,SAAT,OAAkBjiB,EAAEglB,GAAE/C,EAAE,OAAOQ,CAAC,GAAGziB,CAAC,CAAC,SAASolB,GAAEnD,EAAEU,EAAEC,EAAE/F,EAAEtX,EAAEmd,EAAE,GAAG,CAAC,MAAMI,EAAE,IAAI2B,GAAE9B,CAAC,EAAEE,EAAE,SAASZ,EAAEU,EAAEC,EAAE,CAAC,MAAM/F,EAAEoI,GAAEtC,EAAEC,CAAC,EAAErd,EAAEkd,GAAE5F,CAAC,EAAE,GAAGtX,EAAE,OAAOvF,GAAE,UAAU,MAAM,IAAI,MAAM,0CAA0C,EAAE,OAAO,IAAI7E,GAAE,GAAGoK,EAAE0c,CAAC,CAAC,EAAEW,EAAE/F,EAAEtX,CAAC,EAAE,GAAG,CAAC,OAAO2f,GAAEjD,EAAES,EAAE7F,EAAEiG,EAAE,KAAKD,CAAC,EAAEC,CAAC,OAAOb,EAAE,CAAC,MAAMqC,GAAErC,CAAC,GAAGuC,GAAE1B,EAAE,KAAK,WAAW,EAAEb,CAAC,CAAC,CAAC,SAASoD,GAAEpD,EAAE,CAAC,OAAiB,OAAOA,GAAjB,UAA2BA,IAAP,MAAsB,OAAOA,GAAnB,aAAmC,OAAOA,EAAE,MAArB,UAAyB,CAAC,SAASqD,GAAErD,EAAE,CAAC,MAAM,CAAC,CAACoD,GAAEpD,CAAC,GAAG,MAAM,QAAQA,CAAC,GAAGA,EAAE,KAAKoD,EAAC,CAAC,CAAC,MAAME,GAAE,CAACtD,EAAEQ,EAAEziB,IAAI,CAACiiB,EAAE,IAAIQ,EAAE,EAAE,GAAGR,EAAE,IAAIQ,EAAE,GAAGziB,CAAC,CAAC,EAAEwlB,GAAG,CAACvD,EAAEQ,IAAI,CAACR,EAAE,MAAMQ,EAAER,EAAE,UAAU,GAAGoD,GAAE5C,CAAC,GAAGgD,GAAGxD,EAAEQ,CAAC,CAAC,EAAEgD,GAAG,MAAMxD,EAAEQ,IAAI,CAAC,GAAG,CAAC,MAAMziB,EAAE,MAAMyiB,EAAER,EAAE,MAAMjiB,CAAC,OAAO,EAAE,CAAC,MAAMiiB,EAAE,MAAM,KAAKA,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,IAAIyD,IAAI,SAASzD,EAAE,CAACA,EAAE,aAAa,iBAAiBA,EAAE,QAAQ,YAAYA,EAAE,SAAS,YAAY,GAAEyD,KAAKA,GAAG,GAAG,EAAoE,SAASC,GAAG1D,EAAEQ,EAAEziB,EAAE,CAAC,IAAI7E,EAAE,GAAGsnB,EAAE,OAAO,EAAE,CAAC,MAAME,EAAE,SAASV,EAAEQ,EAAE,CAAC,OAAOR,EAAE,OAAQ,CAACA,EAAEjiB,IAAI,CAAC,MAAM7E,EAAEsnB,EAAEziB,CAAC,EAAE,OAAOA,EAAE,OAAO,OAAOojB,GAAE,oBAAoBnB,EAAE,sBAAsB,KAAK9mB,CAAC,GAAG8mB,EAAE,iBAAiB,KAAKjiB,CAAC,EAAEiiB,EAAE,mBAAmB,KAAK9mB,CAAC,GAAG8mB,EAAE,UAAUA,EAAE,QAAQqD,GAAEnqB,CAAC,GAAG8mB,CAAC,EAAG,CAAC,sBAAsB,GAAG,QAAQ,GAAG,mBAAmB,GAAG,iBAAiB,CAAE,EAAC,CAAC,EAAEQ,EAAEziB,CAAC,EAAE4iB,EAAE,CAAC,GAAGD,EAAE,OAAOV,CAAC,EAAE9mB,EAAEwnB,EAAE,QAAQ,eAAeV,EAAE,CAAC,MAAMQ,EAAE,MAAMmD,GAAG3D,EAAE,qBAAqB,EAAEjiB,EAAE,MAAM4lB,GAAG3D,EAAE,kBAAkB,EAAE,OAAO4D,GAAG,CAAC,GAAG5D,EAAE,sBAAsBQ,EAAE,mBAAmBziB,CAAC,CAAC,CAAC,EAAE4iB,CAAC,EAAEiD,GAAGjD,CAAC,CAAC,MAAMznB,EAAE,IAAI8mB,EAAE,OAAO9mB,CAAC,CAAC,SAAS0qB,GAAG5D,EAAE,CAAC,MAAMQ,EAAE,IAAIR,EAAE,OAAO,GAAGA,EAAE,qBAAqB,EAAE,OAAOA,EAAE,iBAAiB,QAAS,CAACjiB,EAAE7E,IAAI,CAAC,MAAMwnB,EAAE3iB,EAAE,OAAO,WAAW4iB,EAAEX,EAAE,mBAAmB9mB,CAAC,EAAE6E,EAAE,OAAO,WAAY,GAAW4iB,IAAT,SAAaH,EAAEE,CAAC,EAAEC,EAAE,GAAIH,CAAC,CAAC,eAAemD,GAAG3D,EAAE,CAAC,MAAMQ,EAAE,CAAE,EAAC,UAAUziB,KAAKiiB,EAAE,MAAM,QAAQjiB,CAAC,EAAEyiB,EAAE,KAAK,QAAQ,IAAIziB,CAAC,CAAC,EAAEyiB,EAAE,KAAKziB,CAAC,EAAE,OAAO,QAAQ,IAAIyiB,CAAC,CAAC,CAAC,SAASqD,GAAG7D,EAAEQ,EAAE,CAAC,MAAMziB,EAAE,SAASiiB,EAAEQ,EAAE,OAAC,GAAG,QAAQ,YAAYllB,GAAE0kB,CAAC,EAAE,CAAC,MAAMU,EAAE,QAAQ,YAAYplB,GAAE0kB,CAAC,EAAE,GAAG,CAAC,OAAO7lB,EAAAqmB,EAAEE,EAAE,SAAJ,YAAAvmB,EAAA,KAAAqmB,EAAc,OAAOA,EAAE,CAAC,GAAGA,aAAa,MAAM,MAAM,IAAI,OAAOziB,EAAEiiB,EAAE,KAAK9mB,EAAEsnB,EAAE,QAAQ,iCAAiCziB,CAAC,KAAK7E,CAAC,GAAE,CAAE,CAAC,CAAC,IAAI6E,EAAE7E,CAAC,EAAE8mB,EAAEQ,CAAC,EAAE,OAAO4C,GAAErlB,CAAC,EAAEA,EAAE,KAAM,IAAIyiB,CAAG,EAACA,CAAC,CAAC,SAASsD,GAAG9D,EAAEQ,EAAE,CAACR,EAAE,QAAQvQ,GAAE,WAAW,SAASuQ,EAAEQ,EAAE,CAAC,MAAMziB,EAAE,mCAAmCiiB,EAAE,QAAQvQ,GAAE,QAAQ,UAAU,WAAW,UAAU,GAAe,OAAOuQ,EAAE,gBAArB,WAAoC,MAAM,IAAI,MAAMmC,GAAE3B,EAAE,KAAKziB,CAAC,CAAC,EAAE,GAAG,QAAQ,YAAYmV,GAAEsN,CAAC,EAAE,MAAM,IAAI,MAAM,8BAA8BA,EAAE,IAAI,KAAKziB,CAAC,EAAE,CAAC,EAAEiiB,EAAEQ,CAAC,CAAC,CAAC,MAAMuD,GAAG/D,GAAGQ,GAAG,CAACA,EAAE,cAAc,kBAAkBA,CAAC,EAAE,MAAMziB,EAAEyiB,EAAE,SAAStnB,EAAEsnB,EAAE,cAAcE,EAAEF,EAAE,QAAQA,EAAE,OAAO,UAAUG,EAAE,EAAEH,EAAE,eAAeA,EAAE,cAAc,QAAQA,EAAE,QAAQA,EAAE,cAAc,OAAO,aAAaA,EAAE,OAAO,iBAAiB,GAAG,GAAGE,GAAGC,EAAE,OAAOznB,EAAE,IAAKsnB,GAAGuD,GAAG/D,CAAC,EAAEQ,CAAC,GAAI,CAAC,GAAGA,EAAE,OAAO,WAAY,GAAMziB,EAAE,SAAN,EAAa,OAAO,MAAM7E,EAAE6E,EAAE,CAAC,EAAE,OAAOimB,GAAGhE,EAAEQ,EAAEtnB,CAAC,CAAC,CAAC,EAAE+qB,GAAG,CAACjE,EAAEQ,IAAI,CAAC,MAAMziB,GAAGiiB,GAAG,CAAC,OAAOA,EAAE,KAAM,MAAKzc,GAAE,QAAQ,MAAM,CAAC,QAAQyc,EAAE,QAAQ,YAAYyD,GAAG,OAAO,EAAE,KAAKlgB,GAAE,SAAS,MAAM,CAAC,QAAQyc,EAAE,SAAS,YAAYyD,GAAG,QAAQ,EAAE,KAAKlgB,GAAE,aAAa,MAAM,CAAC,QAAQyc,EAAE,aAAa,YAAYyD,GAAG,YAAY,EAAE,QAAQ,MAAM,IAAI,MAAM,2BAA2BzD,EAAE,IAAI,EAAE,CAAC,CAAC,GAAGA,CAAC,EAAE,OAAO,CAACA,EAAEQ,IAAI,CAAC,GAAG,CAAC,OAAOR,EAAC,CAAE,OAAOA,EAAE,CAAC,MAAGqC,GAAErC,CAAC,EAAQQ,EAAG,EAAOR,CAAC,CAAC,GAAI,IAAIjiB,EAAE,QAAQ,KAAKiiB,CAAC,EAAEQ,CAAC,EAAI,IAAI,CAAC,OAAO,IAAI,OAAOR,EAAEjiB,EAAE,YAAY7E,EAAEsnB,EAAE,eAAe,kBAAkB,SAAU,EAAC,+DAA+DR,CAAC,oEAAoE9mB,CAAC,KAAM,EAAC,IAAI8mB,EAAE9mB,CAAC,CAAC,CAAE,EAAEgrB,GAAG,CAAClE,EAAEQ,EAAEziB,IAAI,CAAC,IAAI7E,EAAE,MAAMwnB,EAAEF,EAAE,cAAc,QAAQR,GAAG,CAAC,IAAIQ,EAAE,KAAK,OAAOR,EAAE,KAAI,CAAE,KAAKzc,GAAE,cAAc,KAAKA,GAAE,SAASid,EAAER,EAAE,MAAM,MAAM,KAAKzc,GAAE,YAAY,KAAKA,GAAE,SAASid,EAAER,EAAE,mBAAmB,MAAM,KAAKzc,GAAE,aAAaid,EAAER,EAAE,aAAa,MAAM,KAAKzc,GAAE,SAASid,EAAER,EAAE,SAAS,MAAM,KAAKzc,GAAE,QAAQid,EAAER,EAAE,OAAO,CAAC,GAAUQ,IAAP,KAAS,CAAC,MAAMA,EAAEjnB,GAAEymB,EAAE,iBAAiB,EAAE,MAAM,IAAI,MAAM,yBAAyBQ,CAAC,EAAE,CAAC,CAAC,GAAGziB,CAAC,EAAEA,EAAE,KAAM,MAAKwF,GAAE,cAAc,KAAKA,GAAE,SAASrK,EAAE6E,EAAE,MAAM,MAAM,KAAKwF,GAAE,YAAYrK,EAAE6E,EAAE,mBAAmB,MAAM,KAAKwF,GAAE,SAASrK,EAAE,SAAS8mB,EAAEQ,EAAEziB,EAAE7E,EAAE,CAAC4qB,GAAG9D,EAAEQ,CAAC,EAAE,MAAME,EAAEgD,GAAGlD,EAAEziB,EAAE7E,CAAC,EAAE,OAAOkqB,GAAE1C,CAAC,EAAEA,EAAE,KAAMV,GAAG6D,GAAGrD,EAAER,CAAC,CAAG,EAAC6D,GAAGrD,EAAEE,CAAC,CAAC,EAAE3iB,EAAEA,EAAE,mBAAmB2iB,EAAEqD,GAAG/D,CAAC,CAAC,EAAE,MAAM,QAAQ9mB,EAAE+qB,GAAGlmB,EAAEyiB,EAAE,aAAa,CAAC,CAAC,OAAOtnB,CAAC,EAAEirB,GAAG,CAACnE,EAAEQ,EAAEziB,IAAI,CAAC,IAAI7E,GAAG,CAAC8mB,EAAEQ,IAAIA,EAAE,QAAQ/Q,GAAE,WAAW+Q,EAAE,UAAUA,EAAE,MAAMA,EAAE,QAAQ/Q,GAAE,SAASuQ,EAAE,IAAIQ,EAAE,EAAE,EAAER,EAAE,IAAIQ,EAAE,EAAE,EAAE,MAAMR,EAAEQ,CAAC,EAAE,OAActnB,IAAP,OAAWA,EAAE6E,KAAK,CAACiiB,EAAEQ,EAAEziB,IAAI,CAACyiB,EAAE,QAAQ/Q,GAAE,WAAW8T,GAAG/C,EAAEziB,CAAC,EAAEyiB,EAAE,QAAQ/Q,GAAE,SAAS6T,GAAEtD,EAAEQ,EAAEziB,CAAC,CAAC,GAAGiiB,EAAEQ,EAAEtnB,CAAC,GAAGA,CAAC,EAAE8qB,GAAG,CAAChE,EAAEQ,EAAEziB,IAAIomB,GAAGnE,EAAEjiB,EAAG,IAAI,CAAC,IAAI7E,EAAEgrB,GAAGlE,EAAEQ,EAAEziB,CAAC,EAAE,OAAO7E,EAAEkqB,GAAElqB,CAAC,EAAEA,EAAE,KAAM8mB,GAAGoE,GAAG5D,EAAEziB,EAAEiiB,CAAC,CAAC,EAAGoE,GAAG5D,EAAEziB,EAAE7E,CAAC,EAAEA,CAAC,CAAG,EAAC,SAASkrB,GAAGpE,EAAEQ,EAAEziB,EAAE,CAAC,IAAI7E,EAAEmrB,GAAGrE,EAAE,cAAcQ,EAAEziB,CAAC,EAAE,MAAM2iB,EAAE4D,GAAGtE,EAAE,cAAc,SAAS,EAAE,IAAIW,EAAE/F,EAAE8F,EAAE,KAAI,EAAG,EAAE,CAACC,EAAE/F,EAAE,MAAM,MAAM4F,EAAER,EAAE,cAAcjiB,EAAEiiB,EAAE,kBAAkB1c,EAAEihB,GAAG5D,EAAE5iB,CAAC,EAAE7E,EAAEkqB,GAAElqB,CAAC,EAAEwoB,GAAGpe,EAAEkd,EAAEtnB,CAAC,EAAEsrB,GAAGlhB,EAAEkd,EAAEtnB,CAAC,EAAE0hB,EAAE8F,EAAE,KAAM,QAAY9F,EAAE,OAAP,IAAa,CAACiI,GAAElC,CAAC,EAAE,OAAOX,EAAE,iBAAiB,GAAG,OAAO9mB,CAAC,CAAC,MAAMmrB,GAAG,CAACrE,EAAEQ,EAAEziB,IAAI,CAAC,IAAI7E,EAAE,OAAOA,EAAc,OAAOsnB,EAAE,cAArB,WAAkCA,EAAE,aAAaR,EAAEjiB,CAAC,EAAEA,EAAE7E,CAAC,EAAEsrB,GAAG,CAACxE,EAAEQ,EAAEziB,IAAI,CAAC,IAAI7E,EAAE8mB,EAAE,KAAM,EAAC,KAAU9mB,EAAE,OAAP,IAAa,CAAC,GAAGkqB,GAAErlB,EAAE7E,EAAE,MAAMsnB,EAAEziB,CAAC,CAAC,EAAE,OAAO2jB,GAAG1B,EAAEQ,EAAEziB,CAAC,EAAE7E,EAAE8mB,EAAE,KAAI,CAAE,CAAC,OAAOjiB,CAAC,EAAE2jB,GAAG,MAAM1B,EAAEQ,EAAEziB,IAAI,CAAC,IAAI7E,EAAE,MAAM6E,EAAE2iB,EAAEV,EAAE,KAAI,EAAG,KAAUU,EAAE,OAAP,IAAaxnB,EAAE,MAAMwnB,EAAE,MAAMF,EAAEtnB,CAAC,EAAEwnB,EAAEV,EAAE,KAAI,EAAG,OAAO9mB,CAAC,EAAEqrB,GAAG,CAACvE,EAAEQ,IAAI,CAAC,MAAMziB,EAAEiiB,EAAE,aAAa,OAAOjiB,EAAE,OAAOyiB,CAAC,EAAEziB,EAAE,IAAIyiB,CAAC,EAAE,OAAM,EAAG,CAAE,EAAC,OAAM,CAAE,EAAE8D,GAAGtE,GAAG,CAAC,MAAMQ,EAAE,CAACR,CAAC,EAAE,IAAIjiB,EAAEiiB,EAAE,OAAO,KAAYjiB,IAAP,MAAUyiB,EAAE,KAAKziB,CAAC,EAAEA,EAAEA,EAAE,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,MAAMiiB,EAAEQ,EAAE,IAAK,EAAC,OAAgBR,IAAT,OAAW,CAAC,KAAK,GAAG,MAAMA,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,EAAQyE,GAAG,CAACzE,EAAEQ,IAAI,CAAC,MAAMziB,EAAEiiB,EAAE,cAAc,OAAcjiB,IAAP,OAAW,CAAC,CAACyiB,EAAEziB,CAAC,GAAG0mB,GAAG1mB,EAAEyiB,CAAC,EAAE,EAAEkE,GAAG1E,GAAGQ,GAAG,CAAC,MAAMziB,EAAEA,GAAUA,IAAP,MAAiBA,EAAE,SAAT,MAAiBA,EAAE,OAAO,WAAWiiB,CAAC,EAAEQ,CAAC,EAAE,OAAOziB,EAAE,SAAS,IAAIxC,GAAEykB,EAAEQ,CAAC,EAAEziB,CAAC,EAAE4mB,GAAGD,GAAGhE,EAAC,EAAEkE,GAAG5E,GAAGQ,GAAG,CAAC,IAAIziB,EAAE,KAAK,GAAUyiB,IAAP,KAAS,CAAC,GAAGziB,EAAEyiB,EAAE,SAAS,CAAC,EAAY,OAAOR,GAAjB,SAAmB,OAAOjiB,EAAE,oBAAoBiiB,EAAE,CAAC,MAAMjiB,EAAEyiB,EAAE,SAAS,CAAC,EAAE,mBAAmB,OAAOR,IAAIjiB,CAAC,CAAC,CAAC,MAAM,EAAE,SAAE,KAAQ,CAAU,YAAY,EAAE,CAAvBoiB,EAAA,iBAAwB,KAAK,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,EAAE,IAAI0E,GAAG,KAAK,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAWF,GAAG,CAAC,EAAE,IAAIE,GAAG,KAAK,QAAQ,CAAC,CAAC,qBAAqB,CAAC,OAAO,KAAK,SAAS,WAAW,GAAc,IAAP,KAAe,GAAiB,EAAE,SAAT,MAAiB,CAAC,EAAE,OAAO,QAAO,GAAI,CAAC,EAAE,OAAO,WAAY,IAAIA,GAAG,KAAK,QAAQ,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,WAAWH,GAAG,CAAC,EAAE,CAAC,EAAE,IAAIG,GAAG,KAAK,QAAQ,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,GAAU,IAAP,MAAUD,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,IAAIC,GAAG,KAAK,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,GAAU,IAAP,MAAUF,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,IAAIE,GAAG,KAAK,QAAQ,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW9mB,GAAUA,IAAP,MAAU2mB,GAAG,CAAC,EAAE,CAAC,EAAE3mB,EAAE,aAAa,EAAE,IAAI8mB,GAAG,KAAK,QAAQ,CAAC,CAAC,kBAAkB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,GAAU,IAAP,MAAUJ,GAAG,EAAEG,GAAG,CAAC,CAAC,EAAE,IAAIC,GAAG,KAAK,QAAQ,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,GAAU,IAAP,MAAU,CAACJ,GAAG,EAAEG,GAAG,CAAC,CAAC,EAAE,IAAIC,GAAG,KAAK,QAAQ,CAAC,CAAC,qBAAqB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,GAAU,IAAP,MAAUJ,GAAG,EAAEE,GAAG,CAAC,CAAC,EAAE,IAAIE,GAAG,KAAK,QAAQ,CAAC,CAAC,oBAAoB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,GAAU,IAAP,MAAU,CAACJ,GAAG,EAAEE,GAAG,CAAC,CAAC,EAAE,IAAIE,GAAG,KAAK,QAAQ,CAAC,CAAC,sBAAsB,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW9mB,GAAUA,IAAP,MAAU0mB,GAAG1mB,EAAE2mB,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAIG,GAAG,KAAK,QAAQ,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW9mB,GAAUA,IAAP,MAAU,CAAC0mB,GAAG1mB,EAAE2mB,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAIG,GAAG,KAAK,QAAQ,CAAC,CAAC,uBAAuB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,GAAU,IAAP,MAAUJ,GAAG,EAAE,CAAC,EAAE,IAAII,GAAG,KAAK,QAAQ,CAAC,CAAC,sBAAsB,EAAE,CAAC,OAAO,KAAK,SAAS,WAAW,GAAU,IAAP,MAAU,CAACJ,GAAG,EAAE,CAAC,EAAE,IAAII,GAAG,KAAK,QAAQ,CAAC,CAAC,EAACC,GAAA,KAAQ,CAAU,YAAY,EAAE,CAAvB3E,EAAA,iBAAwB,KAAK,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC,OAAO,KAAK,SAAS,aAAa,EAAE,IAAI4E,GAAG,KAAK,QAAQ,CAAC,CAAC,eAAe,EAAE,CAAC,OAAO,KAAK,SAAS,eAAe,EAAE,IAAIA,GAAG,KAAK,QAAQ,CAAC,CAAC,KAAC,KAAQ,CAA8C,YAAY,EAAE,CAA3D5E,EAAA,2BAAmBA,EAAA,yBAAiBA,EAAA,iBAAwB,KAAK,SAAS,EAAE,KAAK,mBAAmB,IAAI4E,GAAG,KAAK,QAAQ,EAAE,KAAK,iBAAiB,IAAIF,GAAG,KAAK,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,mBAAmB,KAAK,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,KAAK,mBAAmB,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,KAAK,mBAAmB,oBAAqB,EAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,KAAK,mBAAmB,iBAAiB,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,KAAK,mBAAmB,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,KAAK,mBAAmB,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,KAAK,mBAAmB,iBAAiB,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,OAAO,KAAK,mBAAmB,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,KAAK,mBAAmB,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,OAAO,KAAK,mBAAmB,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,EAAE,EAAE,CAAC,OAAO,KAAK,mBAAmB,sBAAsB,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,OAAO,KAAK,mBAAmB,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC,OAAO,KAAK,mBAAmB,qBAAqB,EAAE,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,OAAO,KAAK,mBAAmB,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,OAAO,KAAK,mBAAmB,sBAAsB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,OAAO,KAAK,iBAAiB,aAAa,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,OAAO,KAAK,iBAAiB,eAAe,CAAC,CAAC,CAAC,EAACG,GAAA,KAAQ,CAAU,YAAY,EAAE,CAAvB7E,EAAA,iBAAwB,KAAK,SAAS,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,SAAS,MAAM1Q,GAAE,QAAQ,IAAIwV,GAAG,KAAK,QAAQ,CAAC,CAAC,kBAAkB,CAAC,OAAO,KAAK,SAAS,MAAMxV,GAAE,UAAU,IAAIwV,GAAG,KAAK,QAAQ,CAAC,CAAC,kBAAkB,CAAC,OAAO,KAAK,SAAS,MAAMxV,GAAE,UAAU,IAAIwV,GAAG,KAAK,QAAQ,CAAC,CAAC,EAACC,GAAA,KAAQ,CAA+D,YAAY,EAAE,CAA5E/E,EAAA,yBAAiBA,EAAA,2BAAmBA,EAAA,yBAAiBA,EAAA,iBAAwB,KAAK,SAAS,EAAE,KAAK,mBAAmB,IAAI4E,GAAG,KAAK,QAAQ,EAAE,KAAK,iBAAiB,IAAIF,GAAG,KAAK,QAAQ,EAAE,KAAK,iBAAiB,IAAIM,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,KAAK,iBAAiB,eAAc,CAAE,CAAC,kBAAkB,CAAC,OAAO,KAAK,iBAAiB,iBAAgB,CAAE,CAAC,kBAAkB,CAAC,OAAO,KAAK,iBAAiB,kBAAkB,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,mBAAmB,KAAK,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,KAAK,mBAAmB,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,KAAK,mBAAmB,oBAAmB,CAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,KAAK,mBAAmB,iBAAiB,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,KAAK,mBAAmB,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,KAAK,mBAAmB,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,KAAK,mBAAmB,iBAAiB,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,OAAO,KAAK,mBAAmB,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,KAAK,mBAAmB,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,OAAO,KAAK,mBAAmB,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,EAAE,EAAE,CAAC,OAAO,KAAK,mBAAmB,sBAAsB,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,OAAO,KAAK,mBAAmB,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC,OAAO,KAAK,mBAAmB,qBAAqB,EAAE,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,OAAO,KAAK,mBAAmB,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,OAAO,KAAK,mBAAmB,sBAAsB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,OAAO,KAAK,iBAAiB,aAAa,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,OAAO,KAAK,iBAAiB,eAAe,CAAC,CAAC,CAAC,EAACC,GAAA,KAAQ,CAAU,YAAY,EAAE,CAAvBjF,EAAA,iBAAwB,KAAK,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,KAAK,SAAS,KAAK5c,GAAE,SAAS,KAAK,SAAS,mBAAmB,EAAE,IAAI8hB,GAAG,KAAK,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAe,OAAO,KAAK,SAAS,mBAAjC,WAAmD,MAAM,IAAI,MAAM,0FAA0F,EAAE,MAAM,EAAE,KAAK,SAAS,kBAAkB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,OAAO,KAAK,SAAS,KAAK9hB,GAAE,cAAc,KAAK,SAAS,MAAM,EAAE,KAAK,SAAS,aAAa,KAAK,KAAK,SAAS,mBAAmB,KAAK,KAAK,SAAS,MAAMkM,GAAE,UAAU,IAAIwV,GAAG,KAAK,QAAQ,CAAC,CAAC,eAAe,EAAE,CAAC,OAAO,KAAK,SAAS,KAAK1hB,GAAE,aAAa,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,aAAa,EAAE,KAAK,SAAS,mBAAmB,KAAK,IAAI8hB,GAAG,KAAK,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,KAAK,SAAS,KAAK9hB,GAAE,YAAY,KAAK,SAAS,mBAAmB,EAAE,KAAK,SAAS,MAAMkM,GAAE,UAAU,IAAIwV,GAAG,KAAK,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,KAAK,SAAS,KAAK1hB,GAAE,QAAQ,KAAK,SAAS,QAAQ,EAAE,KAAK,SAAS,MAAMkM,GAAE,UAAU,IAAIwV,GAAG,KAAK,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,GAAe,OAAO,GAAnB,WAAqB,MAAM,IAAI,MAAM,wDAAwD,EAAE,MAAM,EAAE,KAAK,gBAAgB,CAAC,EAAE,OAAO,KAAK,SAAS,KAAK1hB,GAAE,SAAS,KAAK,SAAS,MAAMkM,GAAE,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,KAAK,SAAS,KAAKlM,GAAE,QAAQ,KAAK,SAAS,QAAQ,GAAG,IAAI,EAAE,UAAU,IAAI,CAAC,EAAE,KAAK,SAAS,MAAMkM,GAAE,UAAU,IAAIwV,GAAG,KAAK,QAAQ,CAAC,CAAC,mBAAmB,EAAE,CAAC,OAAO,KAAK,SAAS,KAAK1hB,GAAE,QAAQ,KAAK,SAAS,QAAQ,GAAGxF,GAAG,EAAE,UAAU,SAAS,EAAEA,CAAC,EAAE,IAAIknB,GAAG,KAAK,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,KAAK,SAAS,KAAK1hB,GAAE,SAAS,KAAK,SAAS,SAAS,EAAE,KAAK,SAAS,MAAMkM,GAAE,UAAU,IAAIwV,GAAG,KAAK,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,SAAS,KAAK1hB,GAAE,aAAa,OAAO,eAAe,KAAK,SAAS,QAAQ,CAAC,aAAa,GAAG,WAAW,GAAG,IAAI,IAAI,KAAK,IAAIyc,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,aAAa,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC,MAAS,CAAC,OAAO,EAAE,UAAU,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,mBAAmB,IAAI,CAAC,EAAC,MAAMsF,EAAE,CAAR,cAASnF,EAAA,iBAASA,EAAA,oBAAYA,EAAA,sBAAcA,EAAA,mBAAWA,EAAA,8BAAsB,OAAO,GAAG,EAAE,EAAEpiB,EAAE7E,EAAEwnB,EAAE,CAAC,MAAMC,EAAE,IAAI2E,GAAG,OAAO3E,EAAE,SAAS,EAAEA,EAAE,WAAW,EAAEA,EAAE,cAAcznB,EAAEynB,EAAE,YAAY5iB,EAAE4iB,EAAE,sBAAsBD,EAAEC,CAAC,CAAC,QAAC,MAAM4E,EAAE,CAAM,aAAa,CAAlBpF,EAAA,aAAmB,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,EAAQ,GAAN,KAAQ,MAAM,IAAI,MAAM6B,EAAC,EAAE,MAAMjkB,EAAE,KAAK,KAAK,IAAI,CAAC,EAAWA,IAAT,OAAWA,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,EAAE,GAAY,IAAT,OAAW,OAAO,EAAE,MAAM,IAAI,MAAMwjB,EAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,gBAAgB,CAAC,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,MAAM,IAAI,MAAMA,EAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,KAAK,SAAU,CAAC,EAAExjB,IAAI,CAAC,MAAM7E,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,GAAYA,IAAT,OAAW,CAAC,MAAM8mB,EAAEjiB,EAAE,OAAQiiB,GAAG,CAAC9mB,EAAE,KAAMsnB,GAAGR,IAAIQ,CAAG,GAAG,KAAK,UAAU,EAAER,CAAC,CAAC,CAAC,EAAG,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAS,CAACjiB,EAAE7E,IAAI,CAAC,MAAMwnB,EAAE,CAAE,EAAC,UAAUxnB,KAAK6E,EAAG,EAAE7E,CAAC,EAAE,EAAE,KAAKA,CAAC,EAAEwnB,EAAE,KAAKxnB,CAAC,EAAE,KAAK,UAAUA,EAAEwnB,CAAC,CAAC,GAAI,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,KAAK,gBAAgB,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI6E,GAAG,OAAO,KAAK,KAAK,QAAS,CAAC,EAAExnB,IAAI,CAAC,EAAE,QAASyiB,GAAG,CAAC,IAAI,EAAE,EAAE,IAAIziB,EAAY,OAAO,EAAEyiB,IAAnB,UAA8B,IAAP,MAAU,UAAU,GAAe,OAAO,EAAE,OAArB,WAA2BA,EAAE,MAAK,EAAGA,CAAC,CAAC,CAAC,CAAE,CAAG,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,KAAK,QAAS,CAAC,EAAEziB,IAAI,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAG,EAAC,gBAAgB,EAAE,CAAC,GAAS,GAAN,KAAQ,MAAM,IAAI,MAAMikB,EAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,MAAMwD,EAAE,CAAR,cAASrF,EAAA,YAAK,IAAI,KAAI,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,EAAE,OAAgB,IAAT,OAAW,KAAK,uBAAwB,GAAE,KAAK,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC,gBAAgB,EAAE,EAAEpiB,EAAE,CAAC,KAAK,6BAA6B,CAAC,EAAE,gBAAgB,IAAI,EAAEA,CAAC,CAAC,CAAC,cAAc,EAAE,EAAEA,EAAE,CAAC,KAAK,6BAA6B,CAAC,EAAE,cAAc,IAAI,EAAEA,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAIynB,GAAG,OAAO,KAAK,KAAK,QAAS,CAAC,EAAEznB,IAAI,CAAC,EAAE,KAAK,IAAIA,EAAE,CAAC,cAAc,EAAE,cAAc,MAAO,EAAC,gBAAgB,EAAE,gBAAgB,MAAK,CAAE,CAAC,CAAC,GAAI,CAAC,CAAC,6BAA6B,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,EAAE,OAAgB,IAAT,SAAa,EAAE,KAAK,yBAAyB,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,cAAc,IAAIwnB,GAAG,gBAAgB,IAAIA,EAAE,CAAC,CAAC,KAAC,MAAME,EAAE,CAAgI,YAAY,EAAE,CAA7ItF,EAAA,WAAGA,EAAA,eAAOA,EAAA,gBAAQA,EAAA,oBAAYA,EAAA,2BAAmBA,EAAA,qBAAaA,EAAA,uBAAeA,EAAA,mBAAWA,EAAA,wBAAgBA,EAAA,+BAAsC,MAAM,EAAE,GAAG,CAAE,EAAC,GAAa,OAAO,GAAjB,SAAmB,MAAM,IAAI,MAAM,8EAA8E,EAAE,GAAY,EAAE,eAAX,OAAwB,EAAE,aAAa1Q,GAAE,kBAAkB,EAAE,eAAeA,GAAE,WAAW,EAAE,eAAeA,GAAE,WAAW,EAAE,eAAeA,GAAE,QAAQ,MAAM,IAAI,MAAM,wFAAwF,EAAE,GAAY,EAAE,qBAAX,OAA8B,EAAE,mBAAmB,WAAsB,OAAO,EAAE,oBAApB,UAAuC,MAAM,IAAI,MAAM,kEAAkE,EAAE,GAAY,EAAE,sBAAX,OAA+B,EAAE,oBAAoB,WAAsB,OAAO,EAAE,qBAApB,UAAwC,MAAM,IAAI,MAAM,6DAA6D,EAAE,KAAK,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,aAAa,EAAE,aAAa,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,GAAG+R,GAAG,EAAC,KAAK,mBAAmB,IAAI+D,GAAG,KAAK,WAAW,GAAG,KAAK,YAAY,KAAK,KAAK,aAAa,IAAIA,GAAG,KAAK,eAAe,IAAIA,GAAG,KAAK,OAAO,KAAK,KAAK,gBAAgB,IAAIjE,GAAE,KAAK,uBAAuB,IAAIkE,EAAE,CAAC,OAAO,MAAM,EAAE,KAAKznB,EAAE,CAAC,MAAM7E,EAAE,IAAIusB,GAAG/E,EAAE,CAAC,EAAE,EAAE,GAAG3iB,CAAC,EAAE,IAAKiiB,GAAG6C,GAAE7C,CAAC,GAAIW,EAAEkC,GAAE3pB,CAAC,EAAE,OAAOwnB,EAAE,QAASV,GAAG,CAAC,IAAIQ,EAAEA,EAAEG,EAAEX,EAAE,SAAU,CAACA,EAAEjiB,IAAI,CAACA,EAAE,QAASiiB,GAAG,CAACQ,EAAE,IAAIR,EAAE,kBAAkBA,EAAE,MAAO,EAAC,CAAG,EAAG,IAAI9mB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,oCAAoC,UAAU6E,KAAK,EAAE,CAAC,MAAMiiB,EAAE,EAAEjiB,EAAE,EAAE,EAAEA,EAAE,SAASiiB,EAAE,aAAaA,EAAE,eAAeA,EAAE,gBAAgBA,EAAE,eAAeA,EAAE,oBAAoBA,EAAE,qBAAqBA,EAAE,sBAAsB,CAAC,CAAC,CAAC,MAAM,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,kCAAmC,EAAC,UAAUjiB,KAAK,EAAE,CAAC,MAAMiiB,EAAE,EAAEjiB,EAAE,EAAE,EAAE,MAAMA,EAAE,SAASiiB,EAAE,aAAaA,EAAE,eAAeA,EAAE,gBAAgBA,EAAE,eAAeA,EAAE,oBAAoBA,EAAE,qBAAqBA,EAAE,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,QAASA,GAAG,CAAC,MAAMQ,EAAE,KAAK,sBAAsBR,EAAE,EAAE,EAAE,KAAK,sBAAsBQ,CAAC,EAAE,KAAK,sBAAsBR,EAAE,EAAE,CAAC,EAAG,CAAC,MAAM,eAAe,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,MAAMA,EAAE,KAAK,sBAAsB,EAAE,EAAE,EAAE,MAAM,KAAK,2BAA2BA,CAAC,EAAE,KAAK,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,OAAO,MAAM,KAAK,YAAY,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,mBAAmB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,mBAAmB,IAAI,CAAC,EAAE,KAAK,sBAAsB,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,GAAG,KAAK,mBAAmB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,mBAAmB,IAAI,CAAC,EAAE,MAAM,KAAK,2BAA2B,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,mBAAmB,SAAU,CAAC,EAAE,IAAI,CAAC,KAAK,sBAAsB,CAAC,CAAC,CAAC,EAAG,KAAK,mBAAmB,IAAIuF,EAAE,CAAC,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,KAAK,mBAAmB,SAAU,CAAC,EAAExnB,IAAI,CAAC,EAAE,KAAK,KAAK,2BAA2BA,CAAC,CAAC,CAAC,CAAG,EAAC,MAAM,QAAQ,IAAI,CAAC,EAAE,KAAK,mBAAmB,IAAIwnB,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,KAAK,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,mBAAmB,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,KAAK,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,OAAO,KAAK,mBAAmB,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,OAAO,KAAK,cAAc,EAAE7E,GAAE,CAAC,CAAC,CAAC,cAAc,EAAEA,EAAEC,EAAE,CAAC,IAAI,EAAE,GAAG,GAAG,KAAK,mBAAmB,OAAO,CAAC,EAAE,CAAC,MAAMrd,EAAE,KAAK,mBAAmB,IAAI,CAAC,EAAEmd,EAAE,SAAST,EAAEU,EAAEC,EAAE,CAAC,MAAM/F,EAAEoI,GAAEtC,EAAEC,CAAC,EAAErd,EAAEkd,GAAE5F,CAAC,EAAE,GAAGtX,EAAE,OAAOvF,GAAE,UAAU,MAAM,IAAI,MAAM,0CAA0C,EAAE,MAAM0iB,EAAE,IAAIvnB,GAAE,GAAGoK,EAAE,UAAU,EAAEud,EAAE,IAAI2B,GAAExC,CAAC,EAAE,OAAO,IAAI4C,GAAElC,EAAEG,EAAE,KAAK,GAAGJ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,IAAIC,EAAE,MAAMC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,EAAErd,EAAE,KAAM0c,GAAGA,EAAE,WAAWS,CAAC,EAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,KAAK,OAAO,cAAc,EAAEC,EAAEC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK2E,GAAG,GAAG,KAAK,mBAAmB,MAAO,EAAC,KAAK,YAAY,KAAK,aAAa,MAAO,EAAC,KAAK,eAAe,QAAQ,KAAK,uBAAuB,MAAK,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,WAAW,MAAM,GAAY,IAAT,OAAW,MAAM,IAAI,MAAM,mCAAmC,EAAE,KAAK,mBAAmB,EAAE,SAAS,KAAK,aAAa,EAAE,YAAY,KAAK,eAAe,EAAE,cAAc,KAAK,YAAY,EAAE,WAAW,KAAK,uBAAuB,EAAE,qBAAqB,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,IAAIG,GAAG,GAAG,KAAK,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,KAAK,YAAY,KAAK,YAAY,KAAK,gBAAiB,EAAC,KAAK,YAAY,EAAE,OAAQ,CAACzF,EAAEQ,IAAIA,EAAER,CAAC,EAAG,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC,KAAK,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,EAAE,OAAO,KAAK,oBAAoB,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,EAAEjiB,EAAE,CAAC,MAAM7E,EAAE,KAAK,eAAe,EAAE,GAAG,GAAG,EAAE6E,CAAC,EAAE,OAAO,KAAK,oBAAoB7E,CAAC,CAAC,CAAC,MAAM,eAAe,EAAE,EAAE6E,EAAE,CAAC,MAAM7E,EAAE,KAAK,eAAe,EAAE,GAAG,GAAG,EAAE6E,CAAC,EAAE,OAAO,KAAK,KAAK7E,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,KAAK,UAAU,EAAEwnB,GAAE,CAAC,CAAC,CAAC,MAAM,cAAc,EAAE,EAAE,CAAC,OAAO,KAAK,eAAe,EAAEA,GAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM3iB,EAAE,KAAK,YAAY,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK,oBAAoBA,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,EAAE,CAAC,MAAMA,EAAE,KAAK,YAAY,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK,QAAQA,CAAC,CAAC,CAAC,aAAa,EAAE,EAAEA,EAAE,CAAC,MAAM7E,EAAE,KAAK,eAAe,EAAE,GAAG,GAAG,EAAE6E,CAAC,EAAE,OAAO,KAAK,oBAAoB7E,CAAC,CAAC,CAAC,MAAM,kBAAkB,EAAE,EAAE6E,EAAE,CAAC,MAAM7E,EAAE,KAAK,eAAe,EAAE,GAAG,GAAG,EAAE6E,CAAC,EAAE,OAAO,KAAK,QAAQ7E,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,KAAK,aAAa,EAAEwnB,GAAE,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,EAAE,CAAC,OAAO,KAAK,kBAAkB,EAAEA,GAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,QAAQ,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,EAAE,SAAS,MAAM3iB,EAAE,KAAK,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,OAAO,CAAC,EAAEA,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,EAAE,OAAO,KAAK,oBAAoB,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,EAAEA,EAAE,CAAC,MAAM7E,EAAE,KAAK,eAAe,EAAE,GAAG,GAAG,EAAE6E,CAAC,EAAE,OAAO,KAAK,oBAAoB7E,CAAC,CAAC,CAAC,MAAM,kBAAkB,EAAE,EAAE6E,EAAE,CAAC,MAAM7E,EAAE,KAAK,eAAe,EAAE,GAAG,GAAG,EAAE6E,CAAC,EAAE,OAAO,KAAK,KAAK7E,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,KAAK,aAAa,EAAEwnB,GAAE,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,EAAE,CAAC,OAAO,KAAK,kBAAkB,EAAEA,GAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,MAAM3iB,EAAE,KAAK,YAAY,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK,oBAAoBA,CAAC,CAAC,CAAC,MAAM,eAAe,EAAE,EAAE,CAAC,MAAMA,EAAE,KAAK,YAAY,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK,QAAQA,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAEA,EAAE,CAAC,MAAM7E,EAAE,KAAK,eAAe,EAAE,GAAG,GAAG,EAAE6E,CAAC,EAAE,OAAO,KAAK,oBAAoB7E,CAAC,CAAC,CAAC,MAAM,qBAAqB,EAAE,EAAE6E,EAAE,CAAC,MAAM7E,EAAE,KAAK,eAAe,EAAE,GAAG,GAAG,EAAE6E,CAAC,EAAE,OAAO,KAAK,QAAQ7E,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,OAAO,KAAK,gBAAgB,EAAEwnB,GAAE,CAAC,CAAC,CAAC,MAAM,oBAAoB,EAAE,EAAE,CAAC,OAAO,KAAK,qBAAqB,EAAEA,GAAE,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,OAAC,GAAY,IAAT,QAAY,QAAQ,YAAYxN,GAAE,CAAC,EAAE,CAAC,MAAMnV,EAAE,QAAQ,YAAYmV,GAAE,CAAC,EAAE,OAAO/Y,EAAA,EAAE4D,EAAE,SAAJ,YAAA5D,EAAA,OAAc,CAAC,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,KAAK,uBAAuB,OAAO,CAAC,EAAE,KAAK,aAAa,mBAAmB,EAAE,aAAa,EAAE,KAAK,eAAe,mBAAmB,EAAE,eAAe,CAAC,CAAC,sBAAsB,EAAE,CAAC,OAAO,KAAK,mBAAmB,kBAAmB,GAAG,EAAE,WAAW,EAAG,CAAC,YAAY,EAAE,EAAE,CAAC,MAAM4D,EAAQ,GAAN,KAAQ,OAAO,OAAO,eAAe,CAAC,EAAE,YAAY,GAAG,CAAC,GAAG,KAAK,eAAe,OAAO,EAAE,iBAAiB,EAAE,CAAC,MAAM,EAAE,KAAK,qBAAqB,EAAE,KAAK,eAAe,IAAI,EAAE,iBAAiB,EAAE,OAAM,CAAE,EAAE,GAAGqlB,GAAE,CAAC,EAAE,OAAO,KAAK,yBAAyB,EAAE,KAAM,SAAS,KAAK,6DAA6D,EAAE,EAAErlB,CAAC,CAAC,EAAG,EAAE,iBAAiB,CAAC,CAAC,MAAM7E,EAAE,KAAK,wDAAwD,EAAE,EAAE6E,CAAC,EAAE,GAAGqlB,GAAElqB,CAAC,EAAE,OAAO,KAAK,yBAAyBA,EAAE,EAAE,iBAAiB,CAAC,OAAOsnB,EAAE,CAAC,GAAGA,aAAa,MAAM,MAAM,IAAI,MAAM2B,GAAE5oB,GAAE,EAAE,iBAAiB,EAAEinB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,yBAAyB,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAOR,EAAE,CAAC,GAAGA,aAAa,MAAM,MAAM,IAAI,MAAMmC,GAAE5oB,GAAE,CAAC,EAAEymB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC,IAAIjiB,EAAE,EAAE,KAAI,EAAG,KAAiB,OAAOA,EAAE,OAArB,YAA4B,CAAC,MAAM7E,EAAE6E,EAAE,MAAM,CAAC,EAAE,GAAGqlB,GAAElqB,CAAC,EAAE,OAAOA,EAAE,KAAM,SAAS,KAAK,0BAA0B,EAAE,CAAC,GAAI6E,EAAE,EAAE,KAAM,EAAC,CAAC,MAAM,0BAA0B,EAAE,EAAE,CAAC,IAAIA,EAAE,EAAE,KAAI,EAAG,KAAiB,OAAOA,EAAE,OAArB,YAA4B,MAAMA,EAAE,MAAM,CAAC,EAAEA,EAAE,EAAE,KAAM,EAAC,mCAAmC,CAAC,MAAM,EAAEiiB,GAAGQ,GAAG,CAAC,MAAMziB,EAAE,KAAK,cAAcyiB,CAAC,EAAE,OAAOziB,EAAE,SAASiiB,EAAE,KAAK,MAAMjiB,CAAC,CAAC,EAAE,EAAE,IAAIiiB,GAAG,CAAC,KAAK,OAAOA,CAAC,CAAC,EAAEjiB,EAAE,IAAI,MAAMiiB,GAAG,KAAK,YAAYA,CAAC,EAAE9mB,EAAE,IAAI8mB,GAAG,KAAK,QAAQA,CAAC,EAAEU,EAAEF,GAAG,CAAC,MAAMziB,EAAE,EAAEyiB,CAAC,EAAE,OAAOR,IAAI,KAAK,OAAOA,CAAC,EAAEjiB,EAAEiiB,CAAC,EAAE,EAAEW,EAAEX,GAAG,CAACQ,EAAEziB,IAAI,CAAC,KAAK,uBAAuB,cAAciiB,EAAEQ,EAAEziB,CAAC,EAAE,KAAK,aAAayiB,EAAEziB,CAAC,CAAC,EAAE6c,EAAEoF,GAAG,CAACQ,EAAEziB,IAAI,CAAC,KAAK,uBAAuB,gBAAgBiiB,EAAEQ,EAAEziB,CAAC,EAAE,KAAK,eAAeyiB,EAAEziB,CAAC,CAAC,EAAE,OAAOuF,IAAI,CAAC,aAAa,EAAEA,CAAC,EAAE,gBAAgBpK,EAAG,EAAC,qBAAqBynB,EAAErd,CAAC,EAAE,uBAAuBsX,EAAEtX,CAAC,EAAE,eAAeod,EAAEpd,CAAC,EAAE,oBAAoBvF,IAAI,eAAe,EAAC,CAAE,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,KAAK,mBAAmB,IAAI,EAAE,kBAAkB,CAAC,EAAE,IAAI2nB,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,KAAK,QAAQ,cAAcjW,GAAE,UAAU,OAAO,IAAIyS,GAAE,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,OAAO,QAAQ,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmBlC,GAAGA,EAAE,WAAWmB,GAAE,QAAQ,EAAE,GAAG,KAAK,YAAY,CAAC,MAAMnB,EAAE,KAAK,YAAY,CAAC,EAAE,GAASA,GAAN,KAAQ,MAAM,IAAI,MAAM,4DAA4D,EAAE,OAAOA,CAAC,CAAC,OAAO,KAAK,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,CAAC,EAAE,GAAGqD,GAAE,CAAC,EAAE,MAAM,IAAI,MAAM,mCAAmC,SAASrD,EAAE,CAAC,OAAkB,OAAOA,GAAnB,WAAqB,mBAAmBA,EAAE,MAAM,aAAa,IAAc,OAAOA,GAAjB,SAAmBA,EAAE,SAAQ,EAAG,IAAIA,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,6DAA6D,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,EAAEjiB,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAC,WAAG,2BAA0B,cAAc,GAAG,WAAWA,EAAE,kBAAkB,CAAC,CAAC,CAAC,eAAe,EAAE,EAAEA,EAAE7E,EAAEwnB,EAAE,CAAC,MAAM,CAAC,iBAAiB,GAAG,cAAc,EAAE,WAAW3iB,EAAE,IAAI7E,EAAE,kBAAkB,EAAE,MAAMwnB,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,OAAgB,EAAE,MAAX,SAAiB,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE,KAAK,GAAQ,EAAE,aAAP,KAAoB,EAAE,WAAW,IAAI,CAAC,CAAC,iBAAiB,CAAC,OAAO,GAAG,CAAC,IAAI,EAAEyC,GAAE,KAAK,gBAAgB,KAAK,EAAE,WAAW,EAAE,kBAAkB,KAAK,6BAA6B,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAE,EAAE,mBAAmB,CAAC,EAAU,SAASnD,EAAE,CAAC,OAAO+D,GAAG/D,EAAE,KAAK,YAAY,YAAY,EAAEA,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC,uBAAuB,EAAE,CAAC,GAAG,EAAE,UAAU,OAAOoD,GAAE,EAAE,KAAK,EAAE,EAAE,MAAM,KAAM,GAAG,KAAK,YAAY,EAAE,CAAC,CAAG,EAAC,KAAK,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC,sBAAsB,EAAE,CAAC,UAAU,KAAK,EAAG,GAAGA,GAAE,KAAK,uBAAuB,CAAC,CAAC,EAAE,MAAM,IAAI,MAAM,+FAA+F,CAAE,CAAC,MAAM,2BAA2B,EAAE,CAAC,MAAM,QAAQ,IAAI,EAAE,IAAK,MAAMpD,GAAG,KAAK,uBAAuBA,CAAC,CAAC,CAAE,CAAC,CAAC,wDAAwD,EAAE,EAAEjiB,EAAE,CAAC,OAAO,KAAK,OAAO,KAAK,YAAY,KAAK,KAAK,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,kCAAkC,EAAE,EAAEA,CAAC,CAAC,CAAC,MAAM,6DAA6D,EAAE,EAAEA,EAAE,CAAC,KAAK,OAAO,MAAM,KAAK,YAAY,KAAK,KAAK,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,KAAK,uCAAuC,EAAE,EAAEA,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAAC,GAAG,CAAC,KAAK,mBAAmB,OAAO,CAAC,CAAC,MAAS,CAAC,MAAM,IAAI,MAAM,uCAAuCxE,GAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,EAAE,EAAEwE,EAAE,CAAC,GAAe,OAAO,EAAE,gBAArB,WAAoC,CAAC,MAAM7E,EAAE,EAAE,eAAe,CAAC,EAAE,GAAGkqB,GAAElqB,CAAC,EAAE,OAAOA,EAAE,KAAM,IAAI,KAAK,YAAY6E,EAAE,CAAC,CAAG,EAAC,OAAO,KAAK,YAAYA,EAAE,CAAC,CAAC,CAAC,MAAM,uCAAuC,EAAE,EAAEA,EAAE,CAAa,OAAO,EAAE,gBAArB,YAAqC,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,KAAK,YAAYA,EAAE,CAAC,CAAC,CAAC,EAAmI,SAAS4nB,GAAG3F,EAAEQ,EAAEziB,EAAE7E,EAAE,EAAE,SAAS8mB,EAAE,CAAC,GAAYA,IAAT,OAAW,MAAM,IAAI,MAAM1lB,EAAC,CAAC,GAAEkmB,CAAC,EAAEoF,GAAGhF,GAAEZ,EAAEjiB,EAAE,SAAU,EAAC7E,CAAC,CAAC,CAAC,SAAS2sB,GAAG7F,EAAE,CAAC,IAAIQ,EAAE,CAAE,EAAC,GAAG,MAAM,QAAQR,CAAC,EAAE,CAACQ,EAAER,EAAE,MAAMjiB,EAAE,SAASiiB,EAAE,CAAC,MAAMQ,EAAE,IAAI,IAAI,UAAUziB,KAAKiiB,EAAE,CAAC,GAAGQ,EAAE,IAAIziB,CAAC,EAAE,OAAOA,EAAEyiB,EAAE,IAAIziB,CAAC,CAAC,CAAC,EAAEyiB,EAAE,IAAKR,GAAGA,EAAE,GAAK,GAAE,GAAYjiB,IAAT,OAAW,MAAM,IAAI,MAAM,GAAGmjB,EAAC,IAAInjB,EAAE,SAAU,GAAE,CAAC,MAAMyiB,EAAE,CAACR,CAAC,EAAE,OAAOQ,CAAC,CAAC,SAASoF,GAAG5F,EAAEQ,EAAEziB,EAAE7E,EAAE,CAAC,MAAMwnB,EAAEmF,GAAG3sB,CAAC,EAAE,IAAIynB,EAAE,GAAG,QAAQ,eAAeX,EAAEQ,CAAC,IAAIG,EAAE,QAAQ,YAAYX,EAAEQ,CAAC,GAAG,IAAI5F,EAAE+F,EAAE5iB,CAAC,EAAE,GAAY6c,IAAT,OAAWA,EAAE,OAAQ,WAAUoF,KAAKpF,EAAE,GAAG8F,EAAE,KAAMF,GAAGA,EAAE,MAAMR,EAAE,GAAK,EAAC,MAAM,IAAI,MAAM,GAAGkB,EAAC,IAAIlB,EAAE,IAAI,UAAU,EAAE,EAAEpF,EAAE,KAAK,GAAG8F,CAAC,EAAEC,EAAE5iB,CAAC,EAAE6c,EAAE,QAAQ,eAAeoF,EAAEW,EAAEH,CAAC,CAAC,CAAC,SAASsF,GAAG9F,EAAE,CAAC,MAAM,CAACQ,EAAEziB,EAAE7E,IAAI,CAAW,OAAOA,GAAjB,SAAmBysB,GAAGnF,EAAEziB,EAAE7E,EAAE8mB,CAAC,EAAE,SAASA,EAAEQ,EAAEziB,EAAE,CAAC,GAAYiiB,EAAE,YAAX,OAAqB,MAAM,IAAI,MAAM1lB,EAAC,EAAEsrB,GAAGhS,GAAEoM,EAAE,YAAYQ,EAAEziB,CAAC,CAAC,EAAEyiB,EAAEziB,EAAEiiB,CAAC,CAAC,CAAC,CAAqM,SAAS+F,IAAI,CAAC,OAAO,SAAS/F,EAAE,CAAC,GAAG,QAAQ,eAAec,GAAEd,CAAC,EAAE,MAAM,IAAI,MAAM,oDAAoD,EAAE,MAAMQ,EAAE,QAAQ,YAAYQ,GAAEhB,CAAC,GAAG,GAAG,OAAO,QAAQ,eAAec,GAAEN,EAAER,CAAC,EAAEA,CAAC,CAAC,CAA6E,SAASgG,GAAGhG,EAAE,CAAC,OAAOQ,GAAG,CAACziB,EAAE7E,EAAEwnB,IAAI,CAAC,GAAYF,IAAT,OAAW,CAAC,MAAMR,EAAc,OAAOjiB,GAAnB,WAAqBA,EAAE,KAAKA,EAAE,YAAY,KAAK,MAAM,IAAI,MAAM,gEAAgEiiB,CAAC,qGAAqG,CAAC,CAAC8F,GAAG,IAAIvqB,GAAEykB,EAAEQ,CAAC,CAAC,EAAEziB,EAAE7E,EAAEwnB,CAAC,CAAC,CAAC,CAAM,MAACuF,GAAGD,GAAGvF,EAAC,ECElyjC,SAASyF,GAAK1lB,EAAI2lB,EAAS,CACxC,OAAO,UAAgB,CACrB,OAAO3lB,EAAG,MAAM2lB,EAAS,SAAS,CACnC,CACH,CCAA,KAAM,UAACC,EAAQ,EAAI,OAAO,UACpB,CAAC,eAAAC,EAAc,EAAI,OAEnBC,IAAUC,GAASC,GAAS,CAC9B,MAAMC,EAAML,GAAS,KAAKI,CAAK,EAC/B,OAAOD,EAAME,CAAG,IAAMF,EAAME,CAAG,EAAIA,EAAI,MAAM,EAAG,EAAE,EAAE,YAAW,EACnE,GAAG,OAAO,OAAO,IAAI,CAAC,EAEhBC,GAAcrd,IAClBA,EAAOA,EAAK,YAAa,EACjBmd,GAAUF,GAAOE,CAAK,IAAMnd,GAGhCsd,GAAatd,GAAQmd,GAAS,OAAOA,IAAUnd,EAS/C,CAAC1I,UAAO,EAAI,MASZimB,GAAcD,GAAW,WAAW,EAS1C,SAASE,GAASC,EAAK,CACrB,OAAOA,IAAQ,MAAQ,CAACF,GAAYE,CAAG,GAAKA,EAAI,cAAgB,MAAQ,CAACF,GAAYE,EAAI,WAAW,GAC/FC,GAAWD,EAAI,YAAY,QAAQ,GAAKA,EAAI,YAAY,SAASA,CAAG,CAC3E,CASA,MAAME,GAAgBN,GAAW,aAAa,EAU9C,SAASO,GAAkBH,EAAK,CAC9B,IAAIhsB,EACJ,OAAK,OAAO,YAAgB,KAAiB,YAAY,OACvDA,EAAS,YAAY,OAAOgsB,CAAG,EAE/BhsB,EAAUgsB,GAASA,EAAI,QAAYE,GAAcF,EAAI,MAAM,EAEtDhsB,CACT,CASA,MAAMosB,GAAWP,GAAW,QAAQ,EAQ9BI,GAAaJ,GAAW,UAAU,EASlCQ,GAAWR,GAAW,QAAQ,EAS9BS,GAAYZ,GAAUA,IAAU,MAAQ,OAAOA,GAAU,SAQzDa,GAAYb,GAASA,IAAU,IAAQA,IAAU,GASjD7L,GAAiBmM,GAAQ,CAC7B,GAAIR,GAAOQ,CAAG,IAAM,SAClB,MAAO,GAGT,MAAM3qB,EAAYkqB,GAAeS,CAAG,EACpC,OAAQ3qB,IAAc,MAAQA,IAAc,OAAO,WAAa,OAAO,eAAeA,CAAS,IAAM,OAAS,EAAE,OAAO,eAAe2qB,IAAQ,EAAE,OAAO,YAAYA,EACrK,EASMQ,GAASZ,GAAW,MAAM,EAS1Ba,GAASb,GAAW,MAAM,EAS1Bc,GAASd,GAAW,MAAM,EAS1Be,GAAaf,GAAW,UAAU,EASlCgB,GAAYZ,GAAQM,GAASN,CAAG,GAAKC,GAAWD,EAAI,IAAI,EASxDa,GAAcnB,GAAU,CAC5B,IAAIoB,EACJ,OAAOpB,IACJ,OAAO,UAAa,YAAcA,aAAiB,UAClDO,GAAWP,EAAM,MAAM,KACpBoB,EAAOtB,GAAOE,CAAK,KAAO,YAE1BoB,IAAS,UAAYb,GAAWP,EAAM,QAAQ,GAAKA,EAAM,SAAQ,IAAO,qBAIjF,EASMqB,GAAoBnB,GAAW,iBAAiB,EAEhD,CAACoB,GAAkBC,GAAWC,GAAYC,EAAS,EAAI,CAAC,iBAAkB,UAAW,WAAY,SAAS,EAAE,IAAIvB,EAAU,EAS1HwB,GAAQzB,GAAQA,EAAI,KACxBA,EAAI,KAAI,EAAKA,EAAI,QAAQ,qCAAsC,EAAE,EAiBnE,SAAS0B,GAAQzsB,EAAK8E,EAAI,CAAC,WAAA4nB,EAAa,EAAK,EAAI,GAAI,CAEnD,GAAI1sB,IAAQ,MAAQ,OAAOA,EAAQ,IACjC,OAGF,IAAIxC,EACA4nB,EAQJ,GALI,OAAOplB,GAAQ,WAEjBA,EAAM,CAACA,CAAG,GAGRiF,GAAQjF,CAAG,EAEb,IAAKxC,EAAI,EAAG4nB,EAAIplB,EAAI,OAAQxC,EAAI4nB,EAAG5nB,IACjCsH,EAAG,KAAK,KAAM9E,EAAIxC,CAAC,EAAGA,EAAGwC,CAAG,MAEzB,CAEL,MAAM3B,EAAOquB,EAAa,OAAO,oBAAoB1sB,CAAG,EAAI,OAAO,KAAKA,CAAG,EACrEue,EAAMlgB,EAAK,OACjB,IAAIzE,EAEJ,IAAK4D,EAAI,EAAGA,EAAI+gB,EAAK/gB,IACnB5D,EAAMyE,EAAKb,CAAC,EACZsH,EAAG,KAAK,KAAM9E,EAAIpG,CAAG,EAAGA,EAAKoG,CAAG,CAEtC,CACA,CAEA,SAAS2sB,GAAQ3sB,EAAKpG,EAAK,CACzBA,EAAMA,EAAI,YAAa,EACvB,MAAMyE,EAAO,OAAO,KAAK2B,CAAG,EAC5B,IAAIxC,EAAIa,EAAK,OACTuuB,EACJ,KAAOpvB,KAAM,GAEX,GADAovB,EAAOvuB,EAAKb,CAAC,EACT5D,IAAQgzB,EAAK,cACf,OAAOA,EAGX,OAAO,IACT,CAEA,MAAMC,GAEA,OAAO,WAAe,IAAoB,WACvC,OAAO,KAAS,IAAc,KAAQ,OAAO,OAAW,IAAc,OAAS,OAGlFC,GAAoBC,GAAY,CAAC7B,GAAY6B,CAAO,GAAKA,IAAYF,GAoB3E,SAASG,IAAmC,CAC1C,KAAM,CAAC,SAAAC,CAAQ,EAAIH,GAAiB,IAAI,GAAK,MAAQ,CAAE,EACjD1tB,EAAS,CAAE,EACX8tB,EAAc,CAAC9B,EAAKxxB,IAAQ,CAChC,MAAMuzB,EAAYF,GAAYN,GAAQvtB,EAAQxF,CAAG,GAAKA,EAClDqlB,GAAc7f,EAAO+tB,CAAS,CAAC,GAAKlO,GAAcmM,CAAG,EACvDhsB,EAAO+tB,CAAS,EAAIH,GAAM5tB,EAAO+tB,CAAS,EAAG/B,CAAG,EACvCnM,GAAcmM,CAAG,EAC1BhsB,EAAO+tB,CAAS,EAAIH,GAAM,GAAI5B,CAAG,EACxBnmB,GAAQmmB,CAAG,EACpBhsB,EAAO+tB,CAAS,EAAI/B,EAAI,MAAO,EAE/BhsB,EAAO+tB,CAAS,EAAI/B,CAE1B,EAEE,QAAS5tB,EAAI,EAAG4nB,EAAI,UAAU,OAAQ5nB,EAAI4nB,EAAG5nB,IAC3C,UAAUA,CAAC,GAAKivB,GAAQ,UAAUjvB,CAAC,EAAG0vB,CAAW,EAEnD,OAAO9tB,CACT,CAYA,MAAMguB,GAAS,CAACxlB,EAAGC,EAAG4iB,EAAS,CAAC,WAAAiC,CAAU,EAAG,MAC3CD,GAAQ5kB,EAAG,CAACujB,EAAKxxB,IAAQ,CACnB6wB,GAAWY,GAAWD,CAAG,EAC3BxjB,EAAEhO,CAAG,EAAI4wB,GAAKY,EAAKX,CAAO,EAE1B7iB,EAAEhO,CAAG,EAAIwxB,CAEf,EAAK,CAAC,WAAAsB,CAAU,CAAC,EACR9kB,GAUHylB,GAAYC,IACZA,EAAQ,WAAW,CAAC,IAAM,QAC5BA,EAAUA,EAAQ,MAAM,CAAC,GAEpBA,GAYHC,GAAW,CAAC5sB,EAAa6sB,EAAkBva,EAAOwa,IAAgB,CACtE9sB,EAAY,UAAY,OAAO,OAAO6sB,EAAiB,UAAWC,CAAW,EAC7E9sB,EAAY,UAAU,YAAcA,EACpC,OAAO,eAAeA,EAAa,QAAS,CAC1C,MAAO6sB,EAAiB,SAC5B,CAAG,EACDva,GAAS,OAAO,OAAOtS,EAAY,UAAWsS,CAAK,CACrD,EAWMya,GAAe,CAACC,EAAWC,EAASC,EAAQC,IAAe,CAC/D,IAAI7a,EACA,EACAuQ,EACJ,MAAMuK,EAAS,CAAE,EAIjB,GAFAH,EAAUA,GAAW,CAAE,EAEnBD,GAAa,KAAM,OAAOC,EAE9B,EAAG,CAGD,IAFA3a,EAAQ,OAAO,oBAAoB0a,CAAS,EAC5C,EAAI1a,EAAM,OACH,KAAM,GACXuQ,EAAOvQ,EAAM,CAAC,GACT,CAAC6a,GAAcA,EAAWtK,EAAMmK,EAAWC,CAAO,IAAM,CAACG,EAAOvK,CAAI,IACvEoK,EAAQpK,CAAI,EAAImK,EAAUnK,CAAI,EAC9BuK,EAAOvK,CAAI,EAAI,IAGnBmK,EAAYE,IAAW,IAASlD,GAAegD,CAAS,CAC5D,OAAWA,IAAc,CAACE,GAAUA,EAAOF,EAAWC,CAAO,IAAMD,IAAc,OAAO,WAEtF,OAAOC,CACT,EAWMI,GAAW,CAACjD,EAAK9jB,EAAcwB,IAAa,CAChDsiB,EAAM,OAAOA,CAAG,GACZtiB,IAAa,QAAaA,EAAWsiB,EAAI,UAC3CtiB,EAAWsiB,EAAI,QAEjBtiB,GAAYxB,EAAa,OACzB,MAAMgnB,EAAYlD,EAAI,QAAQ9jB,EAAcwB,CAAQ,EACpD,OAAOwlB,IAAc,IAAMA,IAAcxlB,CAC3C,EAUMylB,GAAWpD,GAAU,CACzB,GAAI,CAACA,EAAO,OAAO,KACnB,GAAI7lB,GAAQ6lB,CAAK,EAAG,OAAOA,EAC3B,IAAIttB,EAAIstB,EAAM,OACd,GAAI,CAACW,GAASjuB,CAAC,EAAG,OAAO,KACzB,MAAM2wB,EAAM,IAAI,MAAM3wB,CAAC,EACvB,KAAOA,KAAM,GACX2wB,EAAI3wB,CAAC,EAAIstB,EAAMttB,CAAC,EAElB,OAAO2wB,CACT,EAWMC,IAAgBC,GAEbvD,GACEuD,GAAcvD,aAAiBuD,GAEvC,OAAO,WAAe,KAAe1D,GAAe,UAAU,CAAC,EAU5D2D,GAAe,CAACtuB,EAAK8E,IAAO,CAGhC,MAAM5E,GAFYF,GAAOA,EAAI,OAAO,QAAQ,GAEjB,KAAKA,CAAG,EAEnC,IAAIZ,EAEJ,MAAQA,EAASc,EAAS,KAAI,IAAO,CAACd,EAAO,MAAM,CACjD,MAAMmvB,EAAOnvB,EAAO,MACpB0F,EAAG,KAAK9E,EAAKuuB,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CACjC,CACA,EAUMC,GAAW,CAACC,EAAQ1D,IAAQ,CAChC,IAAI2D,EACJ,MAAMP,EAAM,CAAE,EAEd,MAAQO,EAAUD,EAAO,KAAK1D,CAAG,KAAO,MACtCoD,EAAI,KAAKO,CAAO,EAGlB,OAAOP,CACT,EAGMQ,GAAa3D,GAAW,iBAAiB,EAEzC4D,GAAc7D,GACXA,EAAI,cAAc,QAAQ,wBAC/B,SAAkBtY,EAAGoc,EAAIC,EAAI,CAC3B,OAAOD,EAAG,YAAW,EAAKC,CAChC,CACG,EAIGC,IAAkB,CAAC,CAAC,eAAAA,CAAc,IAAM,CAAC/uB,EAAKwjB,IAASuL,EAAe,KAAK/uB,EAAKwjB,CAAI,GAAG,OAAO,SAAS,EASvGwL,GAAWhE,GAAW,QAAQ,EAE9BiE,GAAoB,CAACjvB,EAAKkvB,IAAY,CAC1C,MAAMzB,EAAc,OAAO,0BAA0BztB,CAAG,EAClDmvB,EAAqB,CAAE,EAE7B1C,GAAQgB,EAAa,CAAC/vB,EAAY6P,IAAS,CACzC,IAAI6V,GACCA,EAAM8L,EAAQxxB,EAAY6P,EAAMvN,CAAG,KAAO,KAC7CmvB,EAAmB5hB,CAAI,EAAI6V,GAAO1lB,EAExC,CAAG,EAED,OAAO,iBAAiBsC,EAAKmvB,CAAkB,CACjD,EAOMC,GAAiBpvB,GAAQ,CAC7BivB,GAAkBjvB,EAAK,CAACtC,EAAY6P,IAAS,CAE3C,GAAI8d,GAAWrrB,CAAG,GAAK,CAAC,YAAa,SAAU,QAAQ,EAAE,QAAQuN,CAAI,IAAM,GACzE,MAAO,GAGT,MAAM1T,EAAQmG,EAAIuN,CAAI,EAEtB,GAAK8d,GAAWxxB,CAAK,EAIrB,IAFA6D,EAAW,WAAa,GAEpB,aAAcA,EAAY,CAC5BA,EAAW,SAAW,GACtB,MACN,CAESA,EAAW,MACdA,EAAW,IAAM,IAAM,CACrB,MAAM,MAAM,qCAAwC6P,EAAO,GAAI,CAChE,GAEP,CAAG,CACH,EAEM8hB,GAAc,CAACC,EAAeC,IAAc,CAChD,MAAMvvB,EAAM,CAAE,EAERwvB,EAAUrB,GAAQ,CACtBA,EAAI,QAAQt0B,GAAS,CACnBmG,EAAInG,CAAK,EAAI,EACnB,CAAK,CACL,EAEEoL,UAAQqqB,CAAa,EAAIE,EAAOF,CAAa,EAAIE,EAAO,OAAOF,CAAa,EAAE,MAAMC,CAAS,CAAC,EAEvFvvB,CACT,EAEMkF,GAAO,IAAM,GAEbuqB,GAAiB,CAAC51B,EAAO61B,IACtB71B,GAAS,MAAQ,OAAO,SAASA,EAAQ,CAACA,CAAK,EAAIA,EAAQ61B,EAUpE,SAASC,GAAoB7E,EAAO,CAClC,MAAO,CAAC,EAAEA,GAASO,GAAWP,EAAM,MAAM,GAAKA,EAAM,OAAO,WAAW,IAAM,YAAcA,EAAM,OAAO,QAAQ,EAClH,CAEA,MAAM8E,GAAgB5vB,GAAQ,CAC5B,MAAM6vB,EAAQ,IAAI,MAAM,EAAE,EAEpBC,EAAQ,CAACC,EAAQvyB,IAAM,CAE3B,GAAIkuB,GAASqE,CAAM,EAAG,CACpB,GAAIF,EAAM,QAAQE,CAAM,GAAK,EAC3B,OAGF,GAAG,EAAE,WAAYA,GAAS,CACxBF,EAAMryB,CAAC,EAAIuyB,EACX,MAAMr2B,EAASuL,GAAQ8qB,CAAM,EAAI,CAAE,EAAG,CAAE,EAExC,OAAAtD,GAAQsD,EAAQ,CAACl2B,EAAOD,IAAQ,CAC9B,MAAMo2B,EAAeF,EAAMj2B,EAAO2D,EAAI,CAAC,EACvC,CAAC0tB,GAAY8E,CAAY,IAAMt2B,EAAOE,CAAG,EAAIo2B,EACvD,CAAS,EAEDH,EAAMryB,CAAC,EAAI,OAEJ9D,CACf,CACA,CAEI,OAAOq2B,CACX,EAEE,OAAOD,EAAM9vB,EAAK,CAAC,CACrB,EAEMiwB,GAAYjF,GAAW,eAAe,EAEtCkF,GAAcpF,GAClBA,IAAUY,GAASZ,CAAK,GAAKO,GAAWP,CAAK,IAAMO,GAAWP,EAAM,IAAI,GAAKO,GAAWP,EAAM,KAAK,EAK/FqF,IAAiB,CAACC,EAAuBC,IACzCD,EACK,aAGFC,GAAwB,CAAC7hB,EAAO8hB,KACrCzD,GAAQ,iBAAiB,UAAW,CAAC,CAAC,OAAAkD,EAAQ,KAAA1rB,CAAI,IAAM,CAClD0rB,IAAWlD,IAAWxoB,IAASmK,GACjC8hB,EAAU,QAAUA,EAAU,QAAS,CAE1C,EAAE,EAAK,EAEAC,GAAO,CACbD,EAAU,KAAKC,CAAE,EACjB1D,GAAQ,YAAYre,EAAO,GAAG,CACpC,IACK,SAAS,KAAK,QAAQ,GAAI,CAAE,GAAK+hB,GAAO,WAAWA,CAAE,GAExD,OAAO,cAAiB,WACxBlF,GAAWwB,GAAQ,WAAW,CAChC,EAEM2D,GAAO,OAAO,eAAmB,IACrC,eAAe,KAAK3D,EAAO,EAAM,OAAO,QAAY,KAAe,QAAQ,UAAYsD,GAI1EM,EAAA,CACf,QAAExrB,GACA,cAAAqmB,GACF,SAAEH,GACA,WAAAc,GACA,kBAAAV,GACF,SAAEC,GACF,SAAEC,GACF,UAAEE,GACF,SAAED,GACF,cAAEzM,GACA,iBAAAmN,GACA,UAAAC,GACA,WAAAC,GACA,UAAAC,GACF,YAAErB,GACF,OAAEU,GACA,OAAAC,GACA,OAAAC,GACF,SAAEkD,GACF,WAAE3D,GACA,SAAAW,GACA,kBAAAG,GACF,aAAEiC,GACA,WAAArC,GACA,QAAAU,GACF,MAAEO,GACF,OAAEI,GACA,KAAAZ,GACA,SAAAa,GACA,SAAAE,GACA,aAAAG,GACA,OAAA9C,GACA,WAAAI,GACA,SAAAgD,GACF,QAAEE,GACA,aAAAI,GACA,SAAAE,GACA,WAAAG,GACF,eAAEI,GACA,WAAYA,GACZ,kBAAAE,GACA,cAAAG,GACA,YAAAC,GACA,YAAAT,GACF,KAAE1pB,GACA,eAAAuqB,GACF,QAAE9C,GACA,OAAQE,GACR,iBAAAC,GACA,oBAAA6C,GACA,aAAAC,GACA,UAAAK,GACA,WAAAC,GACA,aAAcC,GACd,KAAAK,EACF,ECltBA,SAASE,GAAW1gB,EAAS2gB,EAAMC,EAAQC,EAASC,EAAU,CAC5D,MAAM,KAAK,IAAI,EAEX,MAAM,kBACR,MAAM,kBAAkB,KAAM,KAAK,WAAW,EAE9C,KAAK,MAAS,IAAI,MAAO,EAAE,MAG7B,KAAK,QAAU9gB,EACf,KAAK,KAAO,aACZ2gB,IAAS,KAAK,KAAOA,GACrBC,IAAW,KAAK,OAASA,GACzBC,IAAY,KAAK,QAAUA,GACvBC,IACF,KAAK,SAAWA,EAChB,KAAK,OAASA,EAAS,OAASA,EAAS,OAAS,KAEtD,CAEAC,EAAM,SAASL,GAAY,MAAO,CAChC,OAAQ,UAAkB,CACxB,MAAO,CAEL,QAAS,KAAK,QACd,KAAM,KAAK,KAEX,YAAa,KAAK,YAClB,OAAQ,KAAK,OAEb,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,MAAO,KAAK,MAEZ,OAAQK,EAAM,aAAa,KAAK,MAAM,EACtC,KAAM,KAAK,KACX,OAAQ,KAAK,MACd,CACL,CACA,CAAC,EAED,MAAMtwB,GAAYiwB,GAAW,UACvBjD,GAAc,CAAE,EAEtB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,iBAEF,EAAE,QAAQkD,GAAQ,CAChBlD,GAAYkD,CAAI,EAAI,CAAC,MAAOA,CAAI,CAClC,CAAC,EAED,OAAO,iBAAiBD,GAAYjD,EAAW,EAC/C,OAAO,eAAehtB,GAAW,eAAgB,CAAC,MAAO,EAAI,CAAC,EAG9DiwB,GAAW,KAAO,CAAC1tB,EAAO2tB,EAAMC,EAAQC,EAASC,EAAUE,IAAgB,CACzE,MAAMC,EAAa,OAAO,OAAOxwB,EAAS,EAE1CswB,SAAM,aAAa/tB,EAAOiuB,EAAY,SAAgBjxB,EAAK,CACzD,OAAOA,IAAQ,MAAM,SACtB,EAAEwjB,GACMA,IAAS,cACjB,EAEDkN,GAAW,KAAKO,EAAYjuB,EAAM,QAAS2tB,EAAMC,EAAQC,EAASC,CAAQ,EAE1EG,EAAW,MAAQjuB,EAEnBiuB,EAAW,KAAOjuB,EAAM,KAExBguB,GAAe,OAAO,OAAOC,EAAYD,CAAW,EAE7CC,CACT,ECnGA,MAAAC,GAAe,KCaf,SAASC,GAAYrG,EAAO,CAC1B,OAAOiG,EAAM,cAAcjG,CAAK,GAAKiG,EAAM,QAAQjG,CAAK,CAC1D,CASA,SAASsG,GAAex3B,EAAK,CAC3B,OAAOm3B,EAAM,SAASn3B,EAAK,IAAI,EAAIA,EAAI,MAAM,EAAG,EAAE,EAAIA,CACxD,CAWA,SAASy3B,GAAU1qB,EAAM/M,EAAK03B,EAAM,CAClC,OAAK3qB,EACEA,EAAK,OAAO/M,CAAG,EAAE,IAAI,SAAc4U,EAAO,EAAG,CAElD,OAAAA,EAAQ4iB,GAAe5iB,CAAK,EACrB,CAAC8iB,GAAQ,EAAI,IAAM9iB,EAAQ,IAAMA,CACzC,GAAE,KAAK8iB,EAAO,IAAM,EAAE,EALL13B,CAMpB,CASA,SAAS23B,GAAYpD,EAAK,CACxB,OAAO4C,EAAM,QAAQ5C,CAAG,GAAK,CAACA,EAAI,KAAKgD,EAAW,CACpD,CAEA,MAAMK,GAAaT,EAAM,aAAaA,EAAO,CAAE,EAAE,KAAM,SAAgBvN,EAAM,CAC3E,MAAO,WAAW,KAAKA,CAAI,CAC7B,CAAC,EAyBD,SAASiO,GAAWzxB,EAAK0xB,EAAUvjB,EAAS,CAC1C,GAAI,CAAC4iB,EAAM,SAAS/wB,CAAG,EACrB,MAAM,IAAI,UAAU,0BAA0B,EAIhD0xB,EAAWA,GAAY,IAAyB,SAGhDvjB,EAAU4iB,EAAM,aAAa5iB,EAAS,CACpC,WAAY,GACZ,KAAM,GACN,QAAS,EACV,EAAE,GAAO,SAAiBwjB,EAAQ5B,EAAQ,CAEzC,MAAO,CAACgB,EAAM,YAAYhB,EAAO4B,CAAM,CAAC,CAC5C,CAAG,EAED,MAAMC,EAAazjB,EAAQ,WAErB0jB,EAAU1jB,EAAQ,SAAW2jB,EAC7BR,EAAOnjB,EAAQ,KACf4jB,EAAU5jB,EAAQ,QAElB6jB,GADQ7jB,EAAQ,MAAQ,OAAO,KAAS,KAAe,OACpC4iB,EAAM,oBAAoBW,CAAQ,EAE3D,GAAI,CAACX,EAAM,WAAWc,CAAO,EAC3B,MAAM,IAAI,UAAU,4BAA4B,EAGlD,SAASI,EAAap4B,EAAO,CAC3B,GAAIA,IAAU,KAAM,MAAO,GAE3B,GAAIk3B,EAAM,OAAOl3B,CAAK,EACpB,OAAOA,EAAM,YAAa,EAG5B,GAAI,CAACm4B,GAAWjB,EAAM,OAAOl3B,CAAK,EAChC,MAAM,IAAI62B,GAAW,8CAA8C,EAGrE,OAAIK,EAAM,cAAcl3B,CAAK,GAAKk3B,EAAM,aAAal3B,CAAK,EACjDm4B,GAAW,OAAO,MAAS,WAAa,IAAI,KAAK,CAACn4B,CAAK,CAAC,EAAI,OAAO,KAAKA,CAAK,EAG/EA,CACX,CAYE,SAASi4B,EAAej4B,EAAOD,EAAK+M,EAAM,CACxC,IAAIwnB,EAAMt0B,EAEV,GAAIA,GAAS,CAAC8M,GAAQ,OAAO9M,GAAU,UACrC,GAAIk3B,EAAM,SAASn3B,EAAK,IAAI,EAE1BA,EAAMg4B,EAAah4B,EAAMA,EAAI,MAAM,EAAG,EAAE,EAExCC,EAAQ,KAAK,UAAUA,CAAK,UAE3Bk3B,EAAM,QAAQl3B,CAAK,GAAK03B,GAAY13B,CAAK,IACxCk3B,EAAM,WAAWl3B,CAAK,GAAKk3B,EAAM,SAASn3B,EAAK,IAAI,KAAOu0B,EAAM4C,EAAM,QAAQl3B,CAAK,GAGrF,OAAAD,EAAMw3B,GAAex3B,CAAG,EAExBu0B,EAAI,QAAQ,SAAc9kB,EAAItG,EAAO,CACnC,EAAEguB,EAAM,YAAY1nB,CAAE,GAAKA,IAAO,OAASqoB,EAAS,OAElDK,IAAY,GAAOV,GAAU,CAACz3B,CAAG,EAAGmJ,EAAOuuB,CAAI,EAAKS,IAAY,KAAOn4B,EAAMA,EAAM,KACnFq4B,EAAa5oB,CAAE,CAChB,CACX,CAAS,EACM,GAIX,OAAI8nB,GAAYt3B,CAAK,EACZ,IAGT63B,EAAS,OAAOL,GAAU1qB,EAAM/M,EAAK03B,CAAI,EAAGW,EAAap4B,CAAK,CAAC,EAExD,GACX,CAEE,MAAMg2B,EAAQ,CAAE,EAEVqC,EAAiB,OAAO,OAAOV,GAAY,CAC/C,eAAAM,EACA,aAAAG,EACA,YAAAd,EACJ,CAAG,EAED,SAASgB,EAAMt4B,EAAO8M,EAAM,CAC1B,GAAIoqB,GAAM,YAAYl3B,CAAK,EAE3B,IAAIg2B,EAAM,QAAQh2B,CAAK,IAAM,GAC3B,MAAM,MAAM,kCAAoC8M,EAAK,KAAK,GAAG,CAAC,EAGhEkpB,EAAM,KAAKh2B,CAAK,EAEhBk3B,EAAM,QAAQl3B,EAAO,SAAcwP,EAAIzP,EAAK,EAC3B,EAAEm3B,EAAM,YAAY1nB,CAAE,GAAKA,IAAO,OAASwoB,EAAQ,KAChEH,EAAUroB,EAAI0nB,EAAM,SAASn3B,CAAG,EAAIA,EAAI,KAAI,EAAKA,EAAK+M,EAAMurB,CAC7D,KAEc,IACbC,EAAM9oB,EAAI1C,EAAOA,EAAK,OAAO/M,CAAG,EAAI,CAACA,CAAG,CAAC,CAEjD,CAAK,EAEDi2B,EAAM,IAAK,EACf,CAEE,GAAI,CAACkB,EAAM,SAAS/wB,CAAG,EACrB,MAAM,IAAI,UAAU,wBAAwB,EAG9C,OAAAmyB,EAAMnyB,CAAG,EAEF0xB,CACT,CC5MA,SAASU,GAAOrH,EAAK,CACnB,MAAMsH,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,IACR,EACD,OAAO,mBAAmBtH,CAAG,EAAE,QAAQ,mBAAoB,SAAkB/b,EAAO,CAClF,OAAOqjB,EAAQrjB,CAAK,CACxB,CAAG,CACH,CAUA,SAASsjB,GAAqBvtB,EAAQoJ,EAAS,CAC7C,KAAK,OAAS,CAAE,EAEhBpJ,GAAU0sB,GAAW1sB,EAAQ,KAAMoJ,CAAO,CAC5C,CAEA,MAAM1N,GAAY6xB,GAAqB,UAEvC7xB,GAAU,OAAS,SAAgB8M,EAAM1T,EAAO,CAC9C,KAAK,OAAO,KAAK,CAAC0T,EAAM1T,CAAK,CAAC,CAChC,EAEA4G,GAAU,SAAW,SAAkB8xB,EAAS,CAC9C,MAAMC,EAAUD,EAAU,SAAS14B,EAAO,CACxC,OAAO04B,EAAQ,KAAK,KAAM14B,EAAOu4B,EAAM,CAC3C,EAAMA,GAEJ,OAAO,KAAK,OAAO,IAAI,SAAc7D,EAAM,CACzC,OAAOiE,EAAQjE,EAAK,CAAC,CAAC,EAAI,IAAMiE,EAAQjE,EAAK,CAAC,CAAC,CACnD,EAAK,EAAE,EAAE,KAAK,GAAG,CACjB,EC1CA,SAAS6D,GAAOhH,EAAK,CACnB,OAAO,mBAAmBA,CAAG,EAC3B,QAAQ,QAAS,GAAG,EACpB,QAAQ,OAAQ,GAAG,EACnB,QAAQ,QAAS,GAAG,EACpB,QAAQ,OAAQ,GAAG,EACnB,QAAQ,QAAS,GAAG,EACpB,QAAQ,QAAS,GAAG,CACxB,CAWe,SAASqH,GAAStmB,EAAKpH,EAAQoJ,EAAS,CAErD,GAAI,CAACpJ,EACH,OAAOoH,EAGT,MAAMqmB,EAAUrkB,GAAWA,EAAQ,QAAUikB,GAEzCrB,EAAM,WAAW5iB,CAAO,IAC1BA,EAAU,CACR,UAAWA,CACZ,GAGH,MAAMukB,EAAcvkB,GAAWA,EAAQ,UAEvC,IAAIwkB,EAUJ,GARID,EACFC,EAAmBD,EAAY3tB,EAAQoJ,CAAO,EAE9CwkB,EAAmB5B,EAAM,kBAAkBhsB,CAAM,EAC/CA,EAAO,SAAU,EACjB,IAAIutB,GAAqBvtB,EAAQoJ,CAAO,EAAE,SAASqkB,CAAO,EAG1DG,EAAkB,CACpB,MAAMC,EAAgBzmB,EAAI,QAAQ,GAAG,EAEjCymB,IAAkB,KACpBzmB,EAAMA,EAAI,MAAM,EAAGymB,CAAa,GAElCzmB,IAAQA,EAAI,QAAQ,GAAG,IAAM,GAAK,IAAM,KAAOwmB,CACnD,CAEE,OAAOxmB,CACT,CChEA,MAAM0mB,EAAmB,CACvB,aAAc,CACZ,KAAK,SAAW,CAAE,CACtB,CAUE,IAAIC,EAAWC,EAAU5kB,EAAS,CAChC,YAAK,SAAS,KAAK,CACjB,UAAA2kB,EACA,SAAAC,EACA,YAAa5kB,EAAUA,EAAQ,YAAc,GAC7C,QAASA,EAAUA,EAAQ,QAAU,IAC3C,CAAK,EACM,KAAK,SAAS,OAAS,CAClC,CASE,MAAM+S,EAAI,CACJ,KAAK,SAASA,CAAE,IAClB,KAAK,SAASA,CAAE,EAAI,KAE1B,CAOE,OAAQ,CACF,KAAK,WACP,KAAK,SAAW,CAAE,EAExB,CAYE,QAAQpc,EAAI,CACVisB,EAAM,QAAQ,KAAK,SAAU,SAAwB7Y,EAAG,CAClDA,IAAM,MACRpT,EAAGoT,CAAC,CAEZ,CAAK,CACL,CACA,CClEA,MAAe8a,GAAA,CACb,kBAAmB,GACnB,kBAAmB,GACnB,oBAAqB,EACvB,ECHAC,GAAe,OAAO,gBAAoB,IAAc,gBAAkBX,GCD1EY,GAAe,OAAO,SAAa,IAAc,SAAW,KCA5DC,GAAe,OAAO,KAAS,IAAc,KAAO,KCErCC,GAAA,CACb,UAAW,GACX,QAAS,CACX,gBAAIC,GACJ,SAAIC,GACAC,OACD,EACD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,MAAM,CAC5D,ECZMC,GAAgB,OAAO,OAAW,KAAe,OAAO,SAAa,IAErEC,GAAa,OAAO,WAAc,UAAY,WAAa,OAmB3DC,GAAwBF,KAC3B,CAACC,IAAc,CAAC,cAAe,eAAgB,IAAI,EAAE,QAAQA,GAAW,OAAO,EAAI,GAWhFE,GAEF,OAAO,kBAAsB,KAE7B,gBAAgB,mBAChB,OAAO,KAAK,eAAkB,WAI5BC,GAASJ,IAAiB,OAAO,SAAS,MAAQ,oNCvCzCK,GAAA,CACb,GAAG9C,GACH,GAAG8C,EACL,ECAe,SAASC,GAAiBzvB,EAAM8J,EAAS,CACtD,OAAOsjB,GAAWptB,EAAM,IAAIwvB,GAAS,QAAQ,gBAAmB,OAAO,OAAO,CAC5E,QAAS,SAASh6B,EAAOD,EAAK+M,EAAMotB,EAAS,CAC3C,OAAIF,GAAS,QAAU9C,EAAM,SAASl3B,CAAK,GACzC,KAAK,OAAOD,EAAKC,EAAM,SAAS,QAAQ,CAAC,EAClC,IAGFk6B,EAAQ,eAAe,MAAM,KAAM,SAAS,CACzD,CACG,EAAE5lB,CAAO,CAAC,CACb,CCNA,SAAS6lB,GAAczmB,EAAM,CAK3B,OAAOwjB,EAAM,SAAS,gBAAiBxjB,CAAI,EAAE,IAAIyB,GACxCA,EAAM,CAAC,IAAM,KAAO,GAAKA,EAAM,CAAC,GAAKA,EAAM,CAAC,CACpD,CACH,CASA,SAASilB,GAAc9F,EAAK,CAC1B,MAAMnuB,EAAM,CAAE,EACR3B,EAAO,OAAO,KAAK8vB,CAAG,EAC5B,IAAI3wB,EACJ,MAAM+gB,EAAMlgB,EAAK,OACjB,IAAIzE,EACJ,IAAK4D,EAAI,EAAGA,EAAI+gB,EAAK/gB,IACnB5D,EAAMyE,EAAKb,CAAC,EACZwC,EAAIpG,CAAG,EAAIu0B,EAAIv0B,CAAG,EAEpB,OAAOoG,CACT,CASA,SAASk0B,GAAexC,EAAU,CAChC,SAASyC,EAAUxtB,EAAM9M,EAAOH,EAAQqJ,EAAO,CAC7C,IAAIwK,EAAO5G,EAAK5D,GAAO,EAEvB,GAAIwK,IAAS,YAAa,MAAO,GAEjC,MAAM6mB,EAAe,OAAO,SAAS,CAAC7mB,CAAI,EACpC8mB,EAAStxB,GAAS4D,EAAK,OAG7B,OAFA4G,EAAO,CAACA,GAAQwjB,EAAM,QAAQr3B,CAAM,EAAIA,EAAO,OAAS6T,EAEpD8mB,GACEtD,EAAM,WAAWr3B,EAAQ6T,CAAI,EAC/B7T,EAAO6T,CAAI,EAAI,CAAC7T,EAAO6T,CAAI,EAAG1T,CAAK,EAEnCH,EAAO6T,CAAI,EAAI1T,EAGV,CAACu6B,KAGN,CAAC16B,EAAO6T,CAAI,GAAK,CAACwjB,EAAM,SAASr3B,EAAO6T,CAAI,CAAC,KAC/C7T,EAAO6T,CAAI,EAAI,CAAE,GAGJ4mB,EAAUxtB,EAAM9M,EAAOH,EAAO6T,CAAI,EAAGxK,CAAK,GAE3CguB,EAAM,QAAQr3B,EAAO6T,CAAI,CAAC,IACtC7T,EAAO6T,CAAI,EAAI0mB,GAAcv6B,EAAO6T,CAAI,CAAC,GAGpC,CAAC6mB,EACZ,CAEE,GAAIrD,EAAM,WAAWW,CAAQ,GAAKX,EAAM,WAAWW,EAAS,OAAO,EAAG,CACpE,MAAM1xB,EAAM,CAAE,EAEd+wB,SAAM,aAAaW,EAAU,CAACnkB,EAAM1T,IAAU,CAC5Cs6B,EAAUH,GAAczmB,CAAI,EAAG1T,EAAOmG,EAAK,CAAC,CAClD,CAAK,EAEMA,CACX,CAEE,OAAO,IACT,CCxEA,SAASs0B,GAAgBC,EAAU7jB,EAAQ6hB,EAAS,CAClD,GAAIxB,EAAM,SAASwD,CAAQ,EACzB,GAAI,CACF,OAAC7jB,GAAU,KAAK,OAAO6jB,CAAQ,EACxBxD,EAAM,KAAKwD,CAAQ,CAC3B,OAAQlyB,EAAG,CACV,GAAIA,EAAE,OAAS,cACb,MAAMA,CAEd,CAGE,SAAmB,KAAK,WAAWkyB,CAAQ,CAC7C,CAEA,MAAMphB,GAAW,CAEf,aAAc6f,GAEd,QAAS,CAAC,MAAO,OAAQ,OAAO,EAEhC,iBAAkB,CAAC,SAA0B3uB,EAAMmwB,EAAS,CAC1D,MAAMC,EAAcD,EAAQ,eAAc,GAAM,GAC1CE,EAAqBD,EAAY,QAAQ,kBAAkB,EAAI,GAC/DE,EAAkB5D,EAAM,SAAS1sB,CAAI,EAQ3C,GANIswB,GAAmB5D,EAAM,WAAW1sB,CAAI,IAC1CA,EAAO,IAAI,SAASA,CAAI,GAGP0sB,EAAM,WAAW1sB,CAAI,EAGtC,OAAOqwB,EAAqB,KAAK,UAAUR,GAAe7vB,CAAI,CAAC,EAAIA,EAGrE,GAAI0sB,EAAM,cAAc1sB,CAAI,GAC1B0sB,EAAM,SAAS1sB,CAAI,GACnB0sB,EAAM,SAAS1sB,CAAI,GACnB0sB,EAAM,OAAO1sB,CAAI,GACjB0sB,EAAM,OAAO1sB,CAAI,GACjB0sB,EAAM,iBAAiB1sB,CAAI,EAE3B,OAAOA,EAET,GAAI0sB,EAAM,kBAAkB1sB,CAAI,EAC9B,OAAOA,EAAK,OAEd,GAAI0sB,EAAM,kBAAkB1sB,CAAI,EAC9B,OAAAmwB,EAAQ,eAAe,kDAAmD,EAAK,EACxEnwB,EAAK,SAAU,EAGxB,IAAI0nB,EAEJ,GAAI4I,EAAiB,CACnB,GAAIF,EAAY,QAAQ,mCAAmC,EAAI,GAC7D,OAAOX,GAAiBzvB,EAAM,KAAK,cAAc,EAAE,SAAU,EAG/D,IAAK0nB,EAAagF,EAAM,WAAW1sB,CAAI,IAAMowB,EAAY,QAAQ,qBAAqB,EAAI,GAAI,CAC5F,MAAMG,EAAY,KAAK,KAAO,KAAK,IAAI,SAEvC,OAAOnD,GACL1F,EAAa,CAAC,UAAW1nB,CAAI,EAAIA,EACjCuwB,GAAa,IAAIA,EACjB,KAAK,cACN,CACT,CACA,CAEI,OAAID,GAAmBD,GACrBF,EAAQ,eAAe,mBAAoB,EAAK,EACzCF,GAAgBjwB,CAAI,GAGtBA,CACX,CAAG,EAED,kBAAmB,CAAC,SAA2BA,EAAM,CACnD,MAAMwwB,EAAe,KAAK,cAAgB1hB,GAAS,aAC7C2hB,EAAoBD,GAAgBA,EAAa,kBACjDE,EAAgB,KAAK,eAAiB,OAE5C,GAAIhE,EAAM,WAAW1sB,CAAI,GAAK0sB,EAAM,iBAAiB1sB,CAAI,EACvD,OAAOA,EAGT,GAAIA,GAAQ0sB,EAAM,SAAS1sB,CAAI,IAAOywB,GAAqB,CAAC,KAAK,cAAiBC,GAAgB,CAEhG,MAAMC,EAAoB,EADAH,GAAgBA,EAAa,oBACPE,EAEhD,GAAI,CACF,OAAO,KAAK,MAAM1wB,CAAI,CACvB,OAAQhC,EAAG,CACV,GAAI2yB,EACF,MAAI3yB,EAAE,OAAS,cACPquB,GAAW,KAAKruB,EAAGquB,GAAW,iBAAkB,KAAM,KAAM,KAAK,QAAQ,EAE3EruB,CAEhB,CACA,CAEI,OAAOgC,CACX,CAAG,EAMD,QAAS,EAET,eAAgB,aAChB,eAAgB,eAEhB,iBAAkB,GAClB,cAAe,GAEf,IAAK,CACH,SAAUwvB,GAAS,QAAQ,SAC3B,KAAMA,GAAS,QAAQ,IACxB,EAED,eAAgB,SAAwBoB,EAAQ,CAC9C,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAED,QAAS,CACP,OAAQ,CACN,OAAU,oCACV,eAAgB,MACtB,CACA,CACA,EAEAlE,EAAM,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,OAAO,EAAI9wB,GAAW,CAC3EkT,GAAS,QAAQlT,CAAM,EAAI,CAAE,CAC/B,CAAC,ECxJD,MAAMi1B,GAAoBnE,EAAM,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,YAC5B,CAAC,EAgBDoE,GAAeC,GAAc,CAC3B,MAAMC,EAAS,CAAE,EACjB,IAAIz7B,EACAwxB,EACA5tB,EAEJ,OAAA43B,GAAcA,EAAW,MAAM;AAAA,CAAI,EAAE,QAAQ,SAAgBE,EAAM,CACjE93B,EAAI83B,EAAK,QAAQ,GAAG,EACpB17B,EAAM07B,EAAK,UAAU,EAAG93B,CAAC,EAAE,KAAM,EAAC,YAAa,EAC/C4tB,EAAMkK,EAAK,UAAU93B,EAAI,CAAC,EAAE,KAAM,EAE9B,GAAC5D,GAAQy7B,EAAOz7B,CAAG,GAAKs7B,GAAkBt7B,CAAG,KAI7CA,IAAQ,aACNy7B,EAAOz7B,CAAG,EACZy7B,EAAOz7B,CAAG,EAAE,KAAKwxB,CAAG,EAEpBiK,EAAOz7B,CAAG,EAAI,CAACwxB,CAAG,EAGpBiK,EAAOz7B,CAAG,EAAIy7B,EAAOz7B,CAAG,EAAIy7B,EAAOz7B,CAAG,EAAI,KAAOwxB,EAAMA,EAE7D,CAAG,EAEMiK,CACT,ECjDME,GAAa,OAAO,WAAW,EAErC,SAASC,GAAgBC,EAAQ,CAC/B,OAAOA,GAAU,OAAOA,CAAM,EAAE,KAAI,EAAG,YAAa,CACtD,CAEA,SAASC,GAAe77B,EAAO,CAC7B,OAAIA,IAAU,IAASA,GAAS,KACvBA,EAGFk3B,EAAM,QAAQl3B,CAAK,EAAIA,EAAM,IAAI67B,EAAc,EAAI,OAAO77B,CAAK,CACxE,CAEA,SAAS87B,GAAY5K,EAAK,CACxB,MAAM7a,EAAS,OAAO,OAAO,IAAI,EAC3B0lB,EAAW,mCACjB,IAAI5mB,EAEJ,KAAQA,EAAQ4mB,EAAS,KAAK7K,CAAG,GAC/B7a,EAAOlB,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAG5B,OAAOkB,CACT,CAEA,MAAM2lB,GAAqB9K,GAAQ,iCAAiC,KAAKA,EAAI,MAAM,EAEnF,SAAS+K,GAAiB/I,EAASlzB,EAAO47B,EAAQ5H,EAAQkI,EAAoB,CAC5E,GAAIhF,EAAM,WAAWlD,CAAM,EACzB,OAAOA,EAAO,KAAK,KAAMh0B,EAAO47B,CAAM,EAOxC,GAJIM,IACFl8B,EAAQ47B,GAGN,EAAC1E,EAAM,SAASl3B,CAAK,EAEzB,IAAIk3B,EAAM,SAASlD,CAAM,EACvB,OAAOh0B,EAAM,QAAQg0B,CAAM,IAAM,GAGnC,GAAIkD,EAAM,SAASlD,CAAM,EACvB,OAAOA,EAAO,KAAKh0B,CAAK,EAE5B,CAEA,SAASm8B,GAAaP,EAAQ,CAC5B,OAAOA,EAAO,KAAI,EACf,YAAW,EAAG,QAAQ,kBAAmB,CAAChQ,EAAGrV,EAAM2a,IAC3C3a,EAAK,YAAW,EAAK2a,CAC7B,CACL,CAEA,SAASkL,GAAej2B,EAAKy1B,EAAQ,CACnC,MAAMS,EAAenF,EAAM,YAAY,IAAM0E,CAAM,EAEnD,CAAC,MAAO,MAAO,KAAK,EAAE,QAAQU,GAAc,CAC1C,OAAO,eAAen2B,EAAKm2B,EAAaD,EAAc,CACpD,MAAO,SAASE,EAAMC,EAAMC,EAAM,CAChC,OAAO,KAAKH,CAAU,EAAE,KAAK,KAAMV,EAAQW,EAAMC,EAAMC,CAAI,CAC5D,EACD,aAAc,EACpB,CAAK,CACL,CAAG,CACH,CAEA,IAAAC,GAAA,KAAmB,CACjB,YAAY/B,EAAS,CACnBA,GAAW,KAAK,IAAIA,CAAO,CAC/B,CAEE,IAAIiB,EAAQe,EAAgBC,EAAS,CACnC,MAAMC,EAAO,KAEb,SAASC,EAAUC,EAAQC,EAASC,EAAU,CAC5C,MAAMC,EAAUvB,GAAgBqB,CAAO,EAEvC,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,wCAAwC,EAG1D,MAAMn9B,EAAMm3B,EAAM,QAAQ2F,EAAMK,CAAO,GAEpC,CAACn9B,GAAO88B,EAAK98B,CAAG,IAAM,QAAak9B,IAAa,IAASA,IAAa,QAAaJ,EAAK98B,CAAG,IAAM,MAClG88B,EAAK98B,GAAOi9B,CAAO,EAAInB,GAAekB,CAAM,EAEpD,CAEI,MAAMI,EAAa,CAACxC,EAASsC,IAC3B/F,EAAM,QAAQyD,EAAS,CAACoC,EAAQC,IAAYF,EAAUC,EAAQC,EAASC,CAAQ,CAAC,EAElF,GAAI/F,EAAM,cAAc0E,CAAM,GAAKA,aAAkB,KAAK,YACxDuB,EAAWvB,EAAQe,CAAc,UACzBzF,EAAM,SAAS0E,CAAM,IAAMA,EAASA,EAAO,SAAW,CAACI,GAAkBJ,CAAM,EACvFuB,EAAW7B,GAAaM,CAAM,EAAGe,CAAc,UACtCzF,EAAM,UAAU0E,CAAM,EAC/B,SAAW,CAAC77B,EAAKC,CAAK,IAAK47B,EAAO,QAAO,EACvCkB,EAAU98B,EAAOD,EAAK68B,CAAO,OAG/BhB,GAAU,MAAQkB,EAAUH,EAAgBf,EAAQgB,CAAO,EAG7D,OAAO,IACX,CAEE,IAAIhB,EAAQ/kB,EAAQ,CAGlB,GAFA+kB,EAASD,GAAgBC,CAAM,EAE3BA,EAAQ,CACV,MAAM77B,EAAMm3B,EAAM,QAAQ,KAAM0E,CAAM,EAEtC,GAAI77B,EAAK,CACP,MAAMC,EAAQ,KAAKD,CAAG,EAEtB,GAAI,CAAC8W,EACH,OAAO7W,EAGT,GAAI6W,IAAW,GACb,OAAOilB,GAAY97B,CAAK,EAG1B,GAAIk3B,EAAM,WAAWrgB,CAAM,EACzB,OAAOA,EAAO,KAAK,KAAM7W,EAAOD,CAAG,EAGrC,GAAIm3B,EAAM,SAASrgB,CAAM,EACvB,OAAOA,EAAO,KAAK7W,CAAK,EAG1B,MAAM,IAAI,UAAU,wCAAwC,CACpE,CACA,CACA,CAEE,IAAI47B,EAAQ9kB,EAAS,CAGnB,GAFA8kB,EAASD,GAAgBC,CAAM,EAE3BA,EAAQ,CACV,MAAM77B,EAAMm3B,EAAM,QAAQ,KAAM0E,CAAM,EAEtC,MAAO,CAAC,EAAE77B,GAAO,KAAKA,CAAG,IAAM,SAAc,CAAC+W,GAAWmlB,GAAiB,KAAM,KAAKl8B,CAAG,EAAGA,EAAK+W,CAAO,GAC7G,CAEI,MAAO,EACX,CAEE,OAAO8kB,EAAQ9kB,EAAS,CACtB,MAAM+lB,EAAO,KACb,IAAIO,EAAU,GAEd,SAASC,EAAaL,EAAS,CAG7B,GAFAA,EAAUrB,GAAgBqB,CAAO,EAE7BA,EAAS,CACX,MAAMj9B,EAAMm3B,EAAM,QAAQ2F,EAAMG,CAAO,EAEnCj9B,IAAQ,CAAC+W,GAAWmlB,GAAiBY,EAAMA,EAAK98B,CAAG,EAAGA,EAAK+W,CAAO,KACpE,OAAO+lB,EAAK98B,CAAG,EAEfq9B,EAAU,GAEpB,CACA,CAEI,OAAIlG,EAAM,QAAQ0E,CAAM,EACtBA,EAAO,QAAQyB,CAAY,EAE3BA,EAAazB,CAAM,EAGdwB,CACX,CAEE,MAAMtmB,EAAS,CACb,MAAMtS,EAAO,OAAO,KAAK,IAAI,EAC7B,IAAIb,EAAIa,EAAK,OACT44B,EAAU,GAEd,KAAOz5B,KAAK,CACV,MAAM5D,EAAMyE,EAAKb,CAAC,GACf,CAACmT,GAAWmlB,GAAiB,KAAM,KAAKl8B,CAAG,EAAGA,EAAK+W,EAAS,EAAI,KACjE,OAAO,KAAK/W,CAAG,EACfq9B,EAAU,GAElB,CAEI,OAAOA,CACX,CAEE,UAAUE,EAAQ,CAChB,MAAMT,EAAO,KACPlC,EAAU,CAAE,EAElBzD,SAAM,QAAQ,KAAM,CAACl3B,EAAO47B,IAAW,CACrC,MAAM77B,EAAMm3B,EAAM,QAAQyD,EAASiB,CAAM,EAEzC,GAAI77B,EAAK,CACP88B,EAAK98B,CAAG,EAAI87B,GAAe77B,CAAK,EAChC,OAAO68B,EAAKjB,CAAM,EAClB,MACR,CAEM,MAAM3iB,EAAaqkB,EAASnB,GAAaP,CAAM,EAAI,OAAOA,CAAM,EAAE,KAAM,EAEpE3iB,IAAe2iB,GACjB,OAAOiB,EAAKjB,CAAM,EAGpBiB,EAAK5jB,CAAU,EAAI4iB,GAAe77B,CAAK,EAEvC26B,EAAQ1hB,CAAU,EAAI,EAC5B,CAAK,EAEM,IACX,CAEE,UAAUskB,EAAS,CACjB,OAAO,KAAK,YAAY,OAAO,KAAM,GAAGA,CAAO,CACnD,CAEE,OAAOC,EAAW,CAChB,MAAMr3B,EAAM,OAAO,OAAO,IAAI,EAE9B+wB,SAAM,QAAQ,KAAM,CAACl3B,EAAO47B,IAAW,CACrC57B,GAAS,MAAQA,IAAU,KAAUmG,EAAIy1B,CAAM,EAAI4B,GAAatG,EAAM,QAAQl3B,CAAK,EAAIA,EAAM,KAAK,IAAI,EAAIA,EAChH,CAAK,EAEMmG,CACX,CAEE,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,OAAO,QAAQ,KAAK,OAAM,CAAE,EAAE,OAAO,QAAQ,EAAG,CAC3D,CAEE,UAAW,CACT,OAAO,OAAO,QAAQ,KAAK,OAAQ,GAAE,IAAI,CAAC,CAACy1B,EAAQ57B,CAAK,IAAM47B,EAAS,KAAO57B,CAAK,EAAE,KAAK;AAAA,CAAI,CAClG,CAEE,IAAK,OAAO,WAAW,GAAI,CACzB,MAAO,cACX,CAEE,OAAO,KAAKixB,EAAO,CACjB,OAAOA,aAAiB,KAAOA,EAAQ,IAAI,KAAKA,CAAK,CACzD,CAEE,OAAO,OAAO/pB,KAAUq2B,EAAS,CAC/B,MAAMzgB,EAAW,IAAI,KAAK5V,CAAK,EAE/B,OAAAq2B,EAAQ,QAAS19B,GAAWid,EAAS,IAAIjd,CAAM,CAAC,EAEzCid,CACX,CAEE,OAAO,SAAS8e,EAAQ,CAKtB,MAAM6B,GAJY,KAAK/B,EAAU,EAAK,KAAKA,EAAU,EAAI,CACvD,UAAW,EACjB,GAEgC,UACtB90B,EAAY,KAAK,UAEvB,SAAS82B,EAAeV,EAAS,CAC/B,MAAME,EAAUvB,GAAgBqB,CAAO,EAElCS,EAAUP,CAAO,IACpBd,GAAex1B,EAAWo2B,CAAO,EACjCS,EAAUP,CAAO,EAAI,GAE7B,CAEIhG,SAAM,QAAQ0E,CAAM,EAAIA,EAAO,QAAQ8B,CAAc,EAAIA,EAAe9B,CAAM,EAEvE,IACX,CACA,EAEA+B,GAAa,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,eAAe,CAAC,EAGpHzG,EAAM,kBAAkByG,GAAa,UAAW,CAAC,CAAC,MAAA39B,CAAK,EAAGD,IAAQ,CAChE,IAAI69B,EAAS79B,EAAI,CAAC,EAAE,YAAW,EAAKA,EAAI,MAAM,CAAC,EAC/C,MAAO,CACL,IAAK,IAAMC,EACX,IAAI69B,EAAa,CACf,KAAKD,CAAM,EAAIC,CACrB,CACA,CACA,CAAC,EAED3G,EAAM,cAAcyG,EAAY,EC7RjB,SAASG,GAAcC,EAAK9G,EAAU,CACnD,MAAMF,EAAS,MAAQzd,GACjB4Z,EAAU+D,GAAYF,EACtB4D,EAAUgD,GAAa,KAAKzK,EAAQ,OAAO,EACjD,IAAI1oB,EAAO0oB,EAAQ,KAEnBgE,SAAM,QAAQ6G,EAAK,SAAmB9yB,EAAI,CACxCT,EAAOS,EAAG,KAAK8rB,EAAQvsB,EAAMmwB,EAAQ,UAAS,EAAI1D,EAAWA,EAAS,OAAS,MAAS,CAC5F,CAAG,EAED0D,EAAQ,UAAW,EAEZnwB,CACT,CCzBe,SAASwzB,GAASh+B,EAAO,CACtC,MAAO,CAAC,EAAEA,GAASA,EAAM,WAC3B,CCUA,SAASi+B,GAAc9nB,EAAS4gB,EAAQC,EAAS,CAE/CH,GAAW,KAAK,KAAM1gB,GAAkB,WAAsB0gB,GAAW,aAAcE,EAAQC,CAAO,EACtG,KAAK,KAAO,eACd,CAEAE,EAAM,SAAS+G,GAAepH,GAAY,CACxC,WAAY,EACd,CAAC,ECTc,SAASqH,GAAOxlB,EAASoD,EAAQmb,EAAU,CACxD,MAAMkH,EAAiBlH,EAAS,OAAO,eACnC,CAACA,EAAS,QAAU,CAACkH,GAAkBA,EAAelH,EAAS,MAAM,EACvEve,EAAQue,CAAQ,EAEhBnb,EAAO,IAAI+a,GACT,mCAAqCI,EAAS,OAC9C,CAACJ,GAAW,gBAAiBA,GAAW,gBAAgB,EAAE,KAAK,MAAMI,EAAS,OAAS,GAAG,EAAI,CAAC,EAC/FA,EAAS,OACTA,EAAS,QACTA,CACN,CAAK,CAEL,CCxBe,SAASmH,GAAc9rB,EAAK,CACzC,MAAM6C,EAAQ,4BAA4B,KAAK7C,CAAG,EAClD,OAAO6C,GAASA,EAAM,CAAC,GAAK,EAC9B,CCGA,SAASkpB,GAAYC,EAAcC,EAAK,CACtCD,EAAeA,GAAgB,GAC/B,MAAME,EAAQ,IAAI,MAAMF,CAAY,EAC9BG,EAAa,IAAI,MAAMH,CAAY,EACzC,IAAII,EAAO,EACPC,EAAO,EACPC,EAEJ,OAAAL,EAAMA,IAAQ,OAAYA,EAAM,IAEzB,SAAcM,EAAa,CAChC,MAAMC,EAAM,KAAK,IAAK,EAEhBC,EAAYN,EAAWE,CAAI,EAE5BC,IACHA,EAAgBE,GAGlBN,EAAME,CAAI,EAAIG,EACdJ,EAAWC,CAAI,EAAII,EAEnB,IAAIn7B,EAAIg7B,EACJK,EAAa,EAEjB,KAAOr7B,IAAM+6B,GACXM,GAAcR,EAAM76B,GAAG,EACvBA,EAAIA,EAAI26B,EASV,GANAI,GAAQA,EAAO,GAAKJ,EAEhBI,IAASC,IACXA,GAAQA,EAAO,GAAKL,GAGlBQ,EAAMF,EAAgBL,EACxB,OAGF,MAAMU,EAASF,GAAaD,EAAMC,EAElC,OAAOE,EAAS,KAAK,MAAMD,EAAa,IAAOC,CAAM,EAAI,MAC1D,CACH,CC9CA,SAASC,GAASj0B,EAAIk0B,EAAM,CAC1B,IAAIC,EAAY,EACZC,EAAY,IAAOF,EACnBG,EACAC,EAEJ,MAAMC,EAAS,CAACjZ,EAAMuY,EAAM,KAAK,IAAG,IAAO,CACzCM,EAAYN,EACZQ,EAAW,KACPC,IACF,aAAaA,CAAK,EAClBA,EAAQ,MAEVt0B,EAAG,MAAM,KAAMsb,CAAI,CACvB,EAoBE,MAAO,CAlBW,IAAIA,IAAS,CAC7B,MAAMuY,EAAM,KAAK,IAAK,EAChBG,EAASH,EAAMM,EAChBH,GAAUI,EACbG,EAAOjZ,EAAMuY,CAAG,GAEhBQ,EAAW/Y,EACNgZ,IACHA,EAAQ,WAAW,IAAM,CACvBA,EAAQ,KACRC,EAAOF,CAAQ,CACzB,EAAWD,EAAYJ,CAAM,GAG7B,EAEgB,IAAMK,GAAYE,EAAOF,CAAQ,CAEvB,CAC1B,CCrCO,MAAMG,GAAuB,CAACpuB,EAAUquB,EAAkBP,EAAO,IAAM,CAC5E,IAAIQ,EAAgB,EACpB,MAAMC,EAAevB,GAAY,GAAI,GAAG,EAExC,OAAOa,GAAS12B,GAAK,CACnB,MAAMq3B,EAASr3B,EAAE,OACXs3B,EAAQt3B,EAAE,iBAAmBA,EAAE,MAAQ,OACvCu3B,EAAgBF,EAASF,EACzBK,EAAOJ,EAAaG,CAAa,EACjCE,EAAUJ,GAAUC,EAE1BH,EAAgBE,EAEhB,MAAMr1B,EAAO,CACX,OAAAq1B,EACA,MAAAC,EACA,SAAUA,EAASD,EAASC,EAAS,OACrC,MAAOC,EACP,KAAMC,GAAc,OACpB,UAAWA,GAAQF,GAASG,GAAWH,EAAQD,GAAUG,EAAO,OAChE,MAAOx3B,EACP,iBAAkBs3B,GAAS,KAC3B,CAACJ,EAAmB,WAAa,QAAQ,EAAG,EAC7C,EAEDruB,EAAS7G,CAAI,CACd,EAAE20B,CAAI,CACT,EAEae,GAAyB,CAACJ,EAAOK,IAAc,CAC1D,MAAMC,EAAmBN,GAAS,KAElC,MAAO,CAAED,GAAWM,EAAU,CAAC,EAAE,CAC/B,iBAAAC,EACA,MAAAN,EACA,OAAAD,CACJ,CAAG,EAAGM,EAAU,CAAC,CAAC,CAClB,EAEaE,GAAkBp1B,GAAO,IAAIsb,IAAS2Q,EAAM,KAAK,IAAMjsB,EAAG,GAAGsb,CAAI,CAAC,ECzC/E+Z,GAAetG,GAAS,uBAAyB,CAACD,EAAQwG,IAAYjuB,IACpEA,EAAM,IAAI,IAAIA,EAAK0nB,GAAS,MAAM,EAGhCD,EAAO,WAAaznB,EAAI,UACxBynB,EAAO,OAASznB,EAAI,OACnBiuB,GAAUxG,EAAO,OAASznB,EAAI,QAGjC,IAAI,IAAI0nB,GAAS,MAAM,EACvBA,GAAS,WAAa,kBAAkB,KAAKA,GAAS,UAAU,SAAS,CAC3E,EAAI,IAAM,GCVKwG,GAAAxG,GAAS,sBAGtB,CACE,MAAMtmB,EAAM1T,EAAOygC,EAAS3zB,EAAM4zB,EAAQC,EAAQ,CAChD,MAAMC,EAAS,CAACltB,EAAO,IAAM,mBAAmB1T,CAAK,CAAC,EAEtDk3B,EAAM,SAASuJ,CAAO,GAAKG,EAAO,KAAK,WAAa,IAAI,KAAKH,CAAO,EAAE,YAAW,CAAE,EAEnFvJ,EAAM,SAASpqB,CAAI,GAAK8zB,EAAO,KAAK,QAAU9zB,CAAI,EAElDoqB,EAAM,SAASwJ,CAAM,GAAKE,EAAO,KAAK,UAAYF,CAAM,EAExDC,IAAW,IAAQC,EAAO,KAAK,QAAQ,EAEvC,SAAS,OAASA,EAAO,KAAK,IAAI,CACnC,EAED,KAAKltB,EAAM,CACT,MAAMyB,EAAQ,SAAS,OAAO,MAAM,IAAI,OAAO,aAAezB,EAAO,WAAW,CAAC,EACjF,OAAQyB,EAAQ,mBAAmBA,EAAM,CAAC,CAAC,EAAI,IAChD,EAED,OAAOzB,EAAM,CACX,KAAK,MAAMA,EAAM,GAAI,KAAK,IAAK,EAAG,KAAQ,CAChD,CACA,EAKE,CACE,OAAQ,CAAE,EACV,MAAO,CACL,OAAO,IACR,EACD,QAAS,EACV,EC/BY,SAASmtB,GAAcvuB,EAAK,CAIzC,MAAO,8BAA8B,KAAKA,CAAG,CAC/C,CCJe,SAASwuB,GAAYC,EAASC,EAAa,CACxD,OAAOA,EACHD,EAAQ,QAAQ,SAAU,EAAE,EAAI,IAAMC,EAAY,QAAQ,OAAQ,EAAE,EACpED,CACN,CCCe,SAASE,GAAcF,EAASG,EAAcC,EAAmB,CAC9E,IAAIC,EAAgB,CAACP,GAAcK,CAAY,EAC/C,OAAIH,IAAYK,GAAiBD,GAAqB,IAC7CL,GAAYC,EAASG,CAAY,EAEnCA,CACT,CChBA,MAAMG,GAAmBpQ,GAAUA,aAAiB0M,GAAe,CAAE,GAAG1M,CAAK,EAAKA,EAWnE,SAASqQ,GAAYC,EAASC,EAAS,CAEpDA,EAAUA,GAAW,CAAE,EACvB,MAAMzK,EAAS,CAAE,EAEjB,SAAS0K,EAAe5hC,EAAQq2B,EAAQvM,EAAMyJ,EAAU,CACtD,OAAI8D,EAAM,cAAcr3B,CAAM,GAAKq3B,EAAM,cAAchB,CAAM,EACpDgB,EAAM,MAAM,KAAK,CAAC,SAAA9D,CAAQ,EAAGvzB,EAAQq2B,CAAM,EACzCgB,EAAM,cAAchB,CAAM,EAC5BgB,EAAM,MAAM,CAAE,EAAEhB,CAAM,EACpBgB,EAAM,QAAQhB,CAAM,EACtBA,EAAO,MAAO,EAEhBA,CACX,CAGE,SAASwL,EAAoB3zB,EAAGC,EAAG2b,EAAOyJ,EAAU,CAClD,GAAK8D,EAAM,YAAYlpB,CAAC,GAEjB,GAAI,CAACkpB,EAAM,YAAYnpB,CAAC,EAC7B,OAAO0zB,EAAe,OAAW1zB,EAAG4b,EAAOyJ,CAAQ,MAFnD,QAAOqO,EAAe1zB,EAAGC,EAAG2b,EAAOyJ,CAAQ,CAIjD,CAGE,SAASuO,EAAiB5zB,EAAGC,EAAG,CAC9B,GAAI,CAACkpB,EAAM,YAAYlpB,CAAC,EACtB,OAAOyzB,EAAe,OAAWzzB,CAAC,CAExC,CAGE,SAAS4zB,EAAiB7zB,EAAGC,EAAG,CAC9B,GAAKkpB,EAAM,YAAYlpB,CAAC,GAEjB,GAAI,CAACkpB,EAAM,YAAYnpB,CAAC,EAC7B,OAAO0zB,EAAe,OAAW1zB,CAAC,MAFlC,QAAO0zB,EAAe,OAAWzzB,CAAC,CAIxC,CAGE,SAAS6zB,EAAgB9zB,EAAGC,EAAG2b,EAAM,CACnC,GAAIA,KAAQ6X,EACV,OAAOC,EAAe1zB,EAAGC,CAAC,EACrB,GAAI2b,KAAQ4X,EACjB,OAAOE,EAAe,OAAW1zB,CAAC,CAExC,CAEE,MAAM+zB,EAAW,CACf,IAAKH,EACL,OAAQA,EACR,KAAMA,EACN,QAASC,EACT,iBAAkBA,EAClB,kBAAmBA,EACnB,iBAAkBA,EAClB,QAASA,EACT,eAAgBA,EAChB,gBAAiBA,EACjB,cAAeA,EACf,QAASA,EACT,aAAcA,EACd,eAAgBA,EAChB,eAAgBA,EAChB,iBAAkBA,EAClB,mBAAoBA,EACpB,WAAYA,EACZ,iBAAkBA,EAClB,cAAeA,EACf,eAAgBA,EAChB,UAAWA,EACX,UAAWA,EACX,WAAYA,EACZ,YAAaA,EACb,WAAYA,EACZ,iBAAkBA,EAClB,eAAgBC,EAChB,QAAS,CAAC9zB,EAAGC,EAAI2b,IAAS+X,EAAoBL,GAAgBtzB,CAAC,EAAGszB,GAAgBrzB,CAAC,EAAE2b,EAAM,EAAI,CAChG,EAEDuN,SAAM,QAAQ,OAAO,KAAK,OAAO,OAAO,GAAIqK,EAASC,CAAO,CAAC,EAAG,SAA4B7X,EAAM,CAChG,MAAMwJ,EAAQ2O,EAASnY,CAAI,GAAK+X,EAC1BK,EAAc5O,EAAMoO,EAAQ5X,CAAI,EAAG6X,EAAQ7X,CAAI,EAAGA,CAAI,EAC3DuN,EAAM,YAAY6K,CAAW,GAAK5O,IAAU0O,IAAqB9K,EAAOpN,CAAI,EAAIoY,EACrF,CAAG,EAEMhL,CACT,CChGA,MAAeiL,GAACjL,GAAW,CACzB,MAAMkL,EAAYX,GAAY,CAAE,EAAEvK,CAAM,EAExC,GAAI,CAAC,KAAAvsB,EAAM,cAAA03B,EAAe,eAAAC,EAAgB,eAAAC,EAAgB,QAAAzH,EAAS,KAAA0H,CAAI,EAAIJ,EAE3EA,EAAU,QAAUtH,EAAUgD,GAAa,KAAKhD,CAAO,EAEvDsH,EAAU,IAAMrJ,GAASqI,GAAcgB,EAAU,QAASA,EAAU,IAAKA,EAAU,iBAAiB,EAAGlL,EAAO,OAAQA,EAAO,gBAAgB,EAGzIsL,GACF1H,EAAQ,IAAI,gBAAiB,SAC3B,MAAM0H,EAAK,UAAY,IAAM,KAAOA,EAAK,SAAW,SAAS,mBAAmBA,EAAK,QAAQ,CAAC,EAAI,GAAG,CACtG,EAGH,IAAIzH,EAEJ,GAAI1D,EAAM,WAAW1sB,CAAI,GACvB,GAAIwvB,GAAS,uBAAyBA,GAAS,+BAC7CW,EAAQ,eAAe,MAAS,WACtBC,EAAcD,EAAQ,eAAc,KAAQ,GAAO,CAE7D,KAAM,CAAC7mB,EAAM,GAAGuC,CAAM,EAAIukB,EAAcA,EAAY,MAAM,GAAG,EAAE,IAAIjmB,GAASA,EAAM,KAAI,CAAE,EAAE,OAAO,OAAO,EAAI,CAAE,EAC9GgmB,EAAQ,eAAe,CAAC7mB,GAAQ,sBAAuB,GAAGuC,CAAM,EAAE,KAAK,IAAI,CAAC,CAClF,EAOE,GAAI2jB,GAAS,wBACXkI,GAAiBhL,EAAM,WAAWgL,CAAa,IAAMA,EAAgBA,EAAcD,CAAS,GAExFC,GAAkBA,IAAkB,IAAS5B,GAAgB2B,EAAU,GAAG,GAAI,CAEhF,MAAMK,EAAYH,GAAkBC,GAAkB5B,GAAQ,KAAK4B,CAAc,EAE7EE,GACF3H,EAAQ,IAAIwH,EAAgBG,CAAS,CAE7C,CAGE,OAAOL,CACT,EC5CMM,GAAwB,OAAO,eAAmB,IAExDC,GAAeD,IAAyB,SAAUxL,EAAQ,CACxD,OAAO,IAAI,QAAQ,SAA4Bre,EAASoD,EAAQ,CAC9D,MAAM2mB,EAAUT,GAAcjL,CAAM,EACpC,IAAI2L,EAAcD,EAAQ,KAC1B,MAAME,EAAiBhF,GAAa,KAAK8E,EAAQ,OAAO,EAAE,UAAW,EACrE,GAAI,CAAC,aAAAG,EAAc,iBAAAC,EAAkB,mBAAAC,CAAkB,EAAIL,EACvDM,EACAC,EAAiBC,EACjBC,EAAaC,EAEjB,SAASC,GAAO,CACdF,GAAeA,EAAW,EAC1BC,GAAiBA,EAAa,EAE9BV,EAAQ,aAAeA,EAAQ,YAAY,YAAYM,CAAU,EAEjEN,EAAQ,QAAUA,EAAQ,OAAO,oBAAoB,QAASM,CAAU,CAC9E,CAEI,IAAI/L,EAAU,IAAI,eAElBA,EAAQ,KAAKyL,EAAQ,OAAO,YAAW,EAAIA,EAAQ,IAAK,EAAI,EAG5DzL,EAAQ,QAAUyL,EAAQ,QAE1B,SAASY,GAAY,CACnB,GAAI,CAACrM,EACH,OAGF,MAAMsM,EAAkB3F,GAAa,KACnC,0BAA2B3G,GAAWA,EAAQ,sBAAqB,CACpE,EAGKC,EAAW,CACf,KAHmB,CAAC2L,GAAgBA,IAAiB,QAAUA,IAAiB,OAChF5L,EAAQ,aAAeA,EAAQ,SAG/B,OAAQA,EAAQ,OAChB,WAAYA,EAAQ,WACpB,QAASsM,EACT,OAAAvM,EACA,QAAAC,CACD,EAEDkH,GAAO,SAAkBl+B,EAAO,CAC9B0Y,EAAQ1Y,CAAK,EACbojC,EAAM,CACd,EAAS,SAAiB7wB,EAAK,CACvBuJ,EAAOvJ,CAAG,EACV6wB,EAAM,CACP,EAAEnM,CAAQ,EAGXD,EAAU,IAChB,CAEQ,cAAeA,EAEjBA,EAAQ,UAAYqM,EAGpBrM,EAAQ,mBAAqB,UAAsB,CAC7C,CAACA,GAAWA,EAAQ,aAAe,GAQnCA,EAAQ,SAAW,GAAK,EAAEA,EAAQ,aAAeA,EAAQ,YAAY,QAAQ,OAAO,IAAM,IAK9F,WAAWqM,CAAS,CACrB,EAIHrM,EAAQ,QAAU,UAAuB,CAClCA,IAILlb,EAAO,IAAI+a,GAAW,kBAAmBA,GAAW,aAAcE,EAAQC,CAAO,CAAC,EAGlFA,EAAU,KACX,EAGDA,EAAQ,QAAU,UAAuB,CAGvClb,EAAO,IAAI+a,GAAW,gBAAiBA,GAAW,YAAaE,EAAQC,CAAO,CAAC,EAG/EA,EAAU,IACX,EAGDA,EAAQ,UAAY,UAAyB,CAC3C,IAAIuM,EAAsBd,EAAQ,QAAU,cAAgBA,EAAQ,QAAU,cAAgB,mBAC9F,MAAMzH,EAAeyH,EAAQ,cAAgBtJ,GACzCsJ,EAAQ,sBACVc,EAAsBd,EAAQ,qBAEhC3mB,EAAO,IAAI+a,GACT0M,EACAvI,EAAa,oBAAsBnE,GAAW,UAAYA,GAAW,aACrEE,EACAC,CAAO,CAAC,EAGVA,EAAU,IACX,EAGD0L,IAAgB,QAAaC,EAAe,eAAe,IAAI,EAG3D,qBAAsB3L,GACxBE,EAAM,QAAQyL,EAAe,OAAQ,EAAE,SAA0BpR,EAAKxxB,EAAK,CACzEi3B,EAAQ,iBAAiBj3B,EAAKwxB,CAAG,CACzC,CAAO,EAIE2F,EAAM,YAAYuL,EAAQ,eAAe,IAC5CzL,EAAQ,gBAAkB,CAAC,CAACyL,EAAQ,iBAIlCG,GAAgBA,IAAiB,SACnC5L,EAAQ,aAAeyL,EAAQ,cAI7BK,IACD,CAACG,EAAmBE,CAAa,EAAI1D,GAAqBqD,EAAoB,EAAI,EACnF9L,EAAQ,iBAAiB,WAAYiM,CAAiB,GAIpDJ,GAAoB7L,EAAQ,SAC7B,CAACgM,EAAiBE,CAAW,EAAIzD,GAAqBoD,CAAgB,EAEvE7L,EAAQ,OAAO,iBAAiB,WAAYgM,CAAe,EAE3DhM,EAAQ,OAAO,iBAAiB,UAAWkM,CAAW,IAGpDT,EAAQ,aAAeA,EAAQ,UAGjCM,EAAaS,GAAU,CAChBxM,IAGLlb,EAAO,CAAC0nB,GAAUA,EAAO,KAAO,IAAIvF,GAAc,KAAMlH,EAAQC,CAAO,EAAIwM,CAAM,EACjFxM,EAAQ,MAAO,EACfA,EAAU,KACX,EAEDyL,EAAQ,aAAeA,EAAQ,YAAY,UAAUM,CAAU,EAC3DN,EAAQ,SACVA,EAAQ,OAAO,QAAUM,EAAY,EAAGN,EAAQ,OAAO,iBAAiB,QAASM,CAAU,IAI/F,MAAMU,EAAWrF,GAAcqE,EAAQ,GAAG,EAE1C,GAAIgB,GAAYzJ,GAAS,UAAU,QAAQyJ,CAAQ,IAAM,GAAI,CAC3D3nB,EAAO,IAAI+a,GAAW,wBAA0B4M,EAAW,IAAK5M,GAAW,gBAAiBE,CAAM,CAAC,EACnG,MACN,CAIIC,EAAQ,KAAK0L,GAAe,IAAI,CACpC,CAAG,CACH,EChMMgB,GAAiB,CAACC,EAASC,IAAY,CAC3C,KAAM,CAAC,OAAA3mB,CAAM,EAAK0mB,EAAUA,EAAUA,EAAQ,OAAO,OAAO,EAAI,GAEhE,GAAIC,GAAW3mB,EAAQ,CACrB,IAAI4mB,EAAa,IAAI,gBAEjBC,EAEJ,MAAMC,EAAU,SAAUC,EAAQ,CAChC,GAAI,CAACF,EAAS,CACZA,EAAU,GACVG,EAAa,EACb,MAAM1xB,EAAMyxB,aAAkB,MAAQA,EAAS,KAAK,OACpDH,EAAW,MAAMtxB,aAAeskB,GAAatkB,EAAM,IAAI0rB,GAAc1rB,aAAe,MAAQA,EAAI,QAAUA,CAAG,CAAC,CACtH,CACA,EAEI,IAAIgtB,EAAQqE,GAAW,WAAW,IAAM,CACtCrE,EAAQ,KACRwE,EAAQ,IAAIlN,GAAW,WAAW+M,CAAO,kBAAmB/M,GAAW,SAAS,CAAC,CACvF,EAAO+M,CAAO,EAEV,MAAMK,EAAc,IAAM,CACpBN,IACFpE,GAAS,aAAaA,CAAK,EAC3BA,EAAQ,KACRoE,EAAQ,QAAQO,GAAU,CACxBA,EAAO,YAAcA,EAAO,YAAYH,CAAO,EAAIG,EAAO,oBAAoB,QAASH,CAAO,CACxG,CAAS,EACDJ,EAAU,KAElB,EAEIA,EAAQ,QAASO,GAAWA,EAAO,iBAAiB,QAASH,CAAO,CAAC,EAErE,KAAM,CAAC,OAAAG,CAAM,EAAIL,EAEjB,OAAAK,EAAO,YAAc,IAAMhN,EAAM,KAAK+M,CAAW,EAE1CC,CACX,CACA,EC5CaC,GAAc,UAAWC,EAAOC,EAAW,CACtD,IAAI3f,EAAM0f,EAAM,WAEhB,GAAkB1f,EAAM2f,EAAW,CACjC,MAAMD,EACN,MACJ,CAEE,IAAIE,EAAM,EACNC,EAEJ,KAAOD,EAAM5f,GACX6f,EAAMD,EAAMD,EACZ,MAAMD,EAAM,MAAME,EAAKC,CAAG,EAC1BD,EAAMC,CAEV,EAEaC,GAAY,gBAAiBC,EAAUJ,EAAW,CAC7D,gBAAiBD,KAASM,GAAWD,CAAQ,EAC3C,MAAON,GAAYC,EAAOC,CAAS,CAEvC,EAEMK,GAAa,gBAAiBC,EAAQ,CAC1C,GAAIA,EAAO,OAAO,aAAa,EAAG,CAChC,MAAOA,EACP,MACJ,CAEE,MAAMC,EAASD,EAAO,UAAW,EACjC,GAAI,CACF,OAAS,CACP,KAAM,CAAC,KAAAvB,EAAM,MAAApjC,CAAK,EAAI,MAAM4kC,EAAO,KAAM,EACzC,GAAIxB,EACF,MAEF,MAAMpjC,CACZ,CACA,QAAY,CACR,MAAM4kC,EAAO,OAAQ,CACzB,CACA,EAEaC,GAAc,CAACF,EAAQN,EAAWS,EAAYC,IAAa,CACtE,MAAM1+B,EAAWm+B,GAAUG,EAAQN,CAAS,EAE5C,IAAI7F,EAAQ,EACR4E,EACA4B,EAAax8B,GAAM,CAChB46B,IACHA,EAAO,GACP2B,GAAYA,EAASv8B,CAAC,EAE5B,EAEE,OAAO,IAAI,eAAe,CACxB,MAAM,KAAKq7B,EAAY,CACrB,GAAI,CACF,KAAM,CAAC,KAAAT,EAAM,MAAApjC,CAAK,EAAI,MAAMqG,EAAS,KAAM,EAE3C,GAAI+8B,EAAM,CACT4B,EAAW,EACVnB,EAAW,MAAO,EAClB,MACV,CAEQ,IAAInf,EAAM1kB,EAAM,WAChB,GAAI8kC,EAAY,CACd,IAAIG,EAAczG,GAAS9Z,EAC3BogB,EAAWG,CAAW,CAChC,CACQpB,EAAW,QAAQ,IAAI,WAAW7jC,CAAK,CAAC,CACzC,OAAQuS,EAAK,CACZ,MAAAyyB,EAAUzyB,CAAG,EACPA,CACd,CACK,EACD,OAAOyxB,EAAQ,CACb,OAAAgB,EAAUhB,CAAM,EACT39B,EAAS,OAAQ,CAC9B,CACA,EAAK,CACD,cAAe,CAChB,EACH,EC5EM6+B,GAAmB,OAAO,OAAU,YAAc,OAAO,SAAY,YAAc,OAAO,UAAa,WACvGC,GAA4BD,IAAoB,OAAO,gBAAmB,WAG1EE,GAAaF,KAAqB,OAAO,aAAgB,YACzDxM,GAAaxH,GAAQwH,EAAQ,OAAOxH,CAAG,GAAG,IAAI,WAAa,EAC7D,MAAOA,GAAQ,IAAI,WAAW,MAAM,IAAI,SAASA,CAAG,EAAE,YAAa,IAGjEmU,GAAO,CAACp6B,KAAOsb,IAAS,CAC5B,GAAI,CACF,MAAO,CAAC,CAACtb,EAAG,GAAGsb,CAAI,CACpB,MAAW,CACV,MAAO,EACX,CACA,EAEM+e,GAAwBH,IAA6BE,GAAK,IAAM,CACpE,IAAIE,EAAiB,GAErB,MAAMC,EAAiB,IAAI,QAAQxL,GAAS,OAAQ,CAClD,KAAM,IAAI,eACV,OAAQ,OACR,IAAI,QAAS,CACX,OAAAuL,EAAiB,GACV,MACR,CACL,CAAG,EAAE,QAAQ,IAAI,cAAc,EAE7B,OAAOA,GAAkB,CAACC,CAC5B,CAAC,EAEKC,GAAqB,GAAK,KAE1BC,GAAyBP,IAC7BE,GAAK,IAAMnO,EAAM,iBAAiB,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,EAGpDyO,GAAY,CAChB,OAAQD,KAA4BE,GAAQA,EAAI,KAClD,EAEAV,KAAuBU,GAAQ,CAC7B,CAAC,OAAQ,cAAe,OAAQ,WAAY,QAAQ,EAAE,QAAQ9xB,GAAQ,CACpE,CAAC6xB,GAAU7xB,CAAI,IAAM6xB,GAAU7xB,CAAI,EAAIojB,EAAM,WAAW0O,EAAI9xB,CAAI,CAAC,EAAK8xB,GAAQA,EAAI9xB,CAAI,EAAG,EACvF,CAACpK,EAAGqtB,IAAW,CACb,MAAM,IAAIF,GAAW,kBAAkB/iB,CAAI,qBAAsB+iB,GAAW,gBAAiBE,CAAM,CACpG,EACP,CAAG,CACH,GAAG,IAAI,QAAQ,EAEf,MAAM8O,GAAgB,MAAOC,GAAS,CACpC,GAAIA,GAAQ,KACV,MAAO,GAGT,GAAG5O,EAAM,OAAO4O,CAAI,EAClB,OAAOA,EAAK,KAGd,GAAG5O,EAAM,oBAAoB4O,CAAI,EAK/B,OAAQ,MAJS,IAAI,QAAQ9L,GAAS,OAAQ,CAC5C,OAAQ,OACR,KAAA8L,CACN,CAAK,EACsB,YAAW,GAAI,WAGxC,GAAG5O,EAAM,kBAAkB4O,CAAI,GAAK5O,EAAM,cAAc4O,CAAI,EAC1D,OAAOA,EAAK,WAOd,GAJG5O,EAAM,kBAAkB4O,CAAI,IAC7BA,EAAOA,EAAO,IAGb5O,EAAM,SAAS4O,CAAI,EACpB,OAAQ,MAAMV,GAAWU,CAAI,GAAG,UAEpC,EAEMC,GAAoB,MAAOpL,EAASmL,IAAS,CACjD,MAAM7oB,EAASia,EAAM,eAAeyD,EAAQ,iBAAgB,CAAE,EAE9D,OAAO1d,GAAiB4oB,GAAcC,CAAI,CAC5C,EAEAE,GAAed,KAAqB,MAAOnO,GAAW,CACpD,GAAI,CACF,IAAAzkB,EACA,OAAAlM,EACA,KAAAoE,EACA,OAAA05B,EACA,YAAA+B,EACA,QAAArC,EACA,mBAAAd,EACA,iBAAAD,EACA,aAAAD,EACA,QAAAjI,EACA,gBAAAuL,EAAkB,cAClB,aAAAC,CACJ,EAAMnE,GAAcjL,CAAM,EAExB6L,EAAeA,GAAgBA,EAAe,IAAI,YAAa,EAAG,OAElE,IAAIwD,EAAiB1C,GAAe,CAACQ,EAAQ+B,GAAeA,EAAY,eAAe,EAAGrC,CAAO,EAE7F5M,EAEJ,MAAMiN,EAAcmC,GAAkBA,EAAe,cAAgB,IAAM,CACvEA,EAAe,YAAa,CAClC,GAEE,IAAIC,EAEJ,GAAI,CACF,GACExD,GAAoByC,IAAyBl/B,IAAW,OAASA,IAAW,SAC3EigC,EAAuB,MAAMN,GAAkBpL,EAASnwB,CAAI,KAAO,EACpE,CACA,IAAI87B,EAAW,IAAI,QAAQh0B,EAAK,CAC9B,OAAQ,OACR,KAAM9H,EACN,OAAQ,MAChB,CAAO,EAEG+7B,EAMJ,GAJIrP,EAAM,WAAW1sB,CAAI,IAAM+7B,EAAoBD,EAAS,QAAQ,IAAI,cAAc,IACpF3L,EAAQ,eAAe4L,CAAiB,EAGtCD,EAAS,KAAM,CACjB,KAAM,CAACxB,EAAY0B,CAAK,EAAItG,GAC1BmG,EACA5G,GAAqBY,GAAewC,CAAgB,CAAC,CACtD,EAEDr4B,EAAOq6B,GAAYyB,EAAS,KAAMb,GAAoBX,EAAY0B,CAAK,CAC/E,CACA,CAEStP,EAAM,SAASgP,CAAe,IACjCA,EAAkBA,EAAkB,UAAY,QAKlD,MAAMO,EAAyB,gBAAiB,QAAQ,UACxDzP,EAAU,IAAI,QAAQ1kB,EAAK,CACzB,GAAG6zB,EACH,OAAQC,EACR,OAAQhgC,EAAO,YAAa,EAC5B,QAASu0B,EAAQ,UAAW,EAAC,OAAQ,EACrC,KAAMnwB,EACN,OAAQ,OACR,YAAai8B,EAAyBP,EAAkB,MAC9D,CAAK,EAED,IAAIjP,EAAW,MAAM,MAAMD,CAAO,EAElC,MAAM0P,EAAmBhB,KAA2B9C,IAAiB,UAAYA,IAAiB,YAElG,GAAI8C,KAA2B5C,GAAuB4D,GAAoBzC,GAAe,CACvF,MAAM3vB,EAAU,CAAE,EAElB,CAAC,SAAU,aAAc,SAAS,EAAE,QAAQqV,GAAQ,CAClDrV,EAAQqV,CAAI,EAAIsN,EAAStN,CAAI,CACrC,CAAO,EAED,MAAMgd,EAAwBzP,EAAM,eAAeD,EAAS,QAAQ,IAAI,gBAAgB,CAAC,EAEnF,CAAC6N,EAAY0B,CAAK,EAAI1D,GAAsB5C,GAChDyG,EACAlH,GAAqBY,GAAeyC,CAAkB,EAAG,EAAI,CACrE,GAAW,CAAE,EAEP7L,EAAW,IAAI,SACb4N,GAAY5N,EAAS,KAAMwO,GAAoBX,EAAY,IAAM,CAC/D0B,GAASA,EAAO,EAChBvC,GAAeA,EAAa,CACtC,CAAS,EACD3vB,CACD,CACP,CAEIsuB,EAAeA,GAAgB,OAE/B,IAAIgE,EAAe,MAAMjB,GAAUzO,EAAM,QAAQyO,GAAW/C,CAAY,GAAK,MAAM,EAAE3L,EAAUF,CAAM,EAErG,OAAC2P,GAAoBzC,GAAeA,EAAa,EAE1C,MAAM,IAAI,QAAQ,CAACvrB,EAASoD,IAAW,CAC5CoiB,GAAOxlB,EAASoD,EAAQ,CACtB,KAAM8qB,EACN,QAASjJ,GAAa,KAAK1G,EAAS,OAAO,EAC3C,OAAQA,EAAS,OACjB,WAAYA,EAAS,WACrB,OAAAF,EACA,QAAAC,CACD,EACF,EACF,OAAQzkB,EAAK,CAGZ,MAFA0xB,GAAeA,EAAa,EAExB1xB,GAAOA,EAAI,OAAS,aAAe,SAAS,KAAKA,EAAI,OAAO,EACxD,OAAO,OACX,IAAIskB,GAAW,gBAAiBA,GAAW,YAAaE,EAAQC,CAAO,EACvE,CACE,MAAOzkB,EAAI,OAASA,CAC9B,CACA,EAGUskB,GAAW,KAAKtkB,EAAKA,GAAOA,EAAI,KAAMwkB,EAAQC,CAAO,CAC/D,CACA,GC5NM6P,GAAgB,CACpB,KAAMxP,GACN,IAAKmL,GACL,MAAOwD,EACT,EAEA9O,EAAM,QAAQ2P,GAAe,CAAC57B,EAAIjL,IAAU,CAC1C,GAAIiL,EAAI,CACN,GAAI,CACF,OAAO,eAAeA,EAAI,OAAQ,CAAC,MAAAjL,CAAK,CAAC,CAC1C,MAAW,CAEhB,CACI,OAAO,eAAeiL,EAAI,cAAe,CAAC,MAAAjL,CAAK,CAAC,CACpD,CACA,CAAC,EAED,MAAM8mC,GAAgB9C,GAAW,KAAKA,CAAM,GAEtC+C,GAAoBC,GAAY9P,EAAM,WAAW8P,CAAO,GAAKA,IAAY,MAAQA,IAAY,GAEpFC,GAAA,CACb,WAAaA,GAAa,CACxBA,EAAW/P,EAAM,QAAQ+P,CAAQ,EAAIA,EAAW,CAACA,CAAQ,EAEzD,KAAM,CAAC,OAAAhqB,CAAM,EAAIgqB,EACjB,IAAIC,EACAF,EAEJ,MAAMG,EAAkB,CAAE,EAE1B,QAAS,EAAI,EAAG,EAAIlqB,EAAQ,IAAK,CAC/BiqB,EAAgBD,EAAS,CAAC,EAC1B,IAAI5f,EAIJ,GAFA2f,EAAUE,EAEN,CAACH,GAAiBG,CAAa,IACjCF,EAAUH,IAAexf,EAAK,OAAO6f,CAAa,GAAG,aAAa,EAE9DF,IAAY,QACd,MAAM,IAAInQ,GAAW,oBAAoBxP,CAAE,GAAG,EAIlD,GAAI2f,EACF,MAGFG,EAAgB9f,GAAM,IAAM,CAAC,EAAI2f,CACvC,CAEI,GAAI,CAACA,EAAS,CAEZ,MAAMI,EAAU,OAAO,QAAQD,CAAe,EAC3C,IAAI,CAAC,CAAC9f,EAAIlW,CAAK,IAAM,WAAWkW,CAAE,KAChClW,IAAU,GAAQ,sCAAwC,gCAC5D,EAEH,IAAIia,EAAInO,EACLmqB,EAAQ,OAAS,EAAI;AAAA,EAAcA,EAAQ,IAAIN,EAAY,EAAE,KAAK;AAAA,CAAI,EAAI,IAAMA,GAAaM,EAAQ,CAAC,CAAC,EACxG,0BAEF,MAAM,IAAIvQ,GACR,wDAA0DzL,EAC1D,iBACD,CACP,CAEI,OAAO4b,CACR,EACD,SAAUH,EACZ,EC9DA,SAASQ,GAA6BtQ,EAAQ,CAK5C,GAJIA,EAAO,aACTA,EAAO,YAAY,iBAAkB,EAGnCA,EAAO,QAAUA,EAAO,OAAO,QACjC,MAAM,IAAIkH,GAAc,KAAMlH,CAAM,CAExC,CASe,SAASuQ,GAAgBvQ,EAAQ,CAC9C,OAAAsQ,GAA6BtQ,CAAM,EAEnCA,EAAO,QAAU4G,GAAa,KAAK5G,EAAO,OAAO,EAGjDA,EAAO,KAAO+G,GAAc,KAC1B/G,EACAA,EAAO,gBACR,EAEG,CAAC,OAAQ,MAAO,OAAO,EAAE,QAAQA,EAAO,MAAM,IAAM,IACtDA,EAAO,QAAQ,eAAe,oCAAqC,EAAK,EAG1DkQ,GAAS,WAAWlQ,EAAO,SAAWzd,GAAS,OAAO,EAEvDyd,CAAM,EAAE,KAAK,SAA6BE,EAAU,CACjE,OAAAoQ,GAA6BtQ,CAAM,EAGnCE,EAAS,KAAO6G,GAAc,KAC5B/G,EACAA,EAAO,kBACPE,CACD,EAEDA,EAAS,QAAU0G,GAAa,KAAK1G,EAAS,OAAO,EAE9CA,CACX,EAAK,SAA4B+M,EAAQ,CACrC,OAAKhG,GAASgG,CAAM,IAClBqD,GAA6BtQ,CAAM,EAG/BiN,GAAUA,EAAO,WACnBA,EAAO,SAAS,KAAOlG,GAAc,KACnC/G,EACAA,EAAO,kBACPiN,EAAO,QACR,EACDA,EAAO,SAAS,QAAUrG,GAAa,KAAKqG,EAAO,SAAS,OAAO,IAIhE,QAAQ,OAAOA,CAAM,CAChC,CAAG,CACH,CChFO,MAAMuD,GAAU,QCKjBC,GAAa,CAAE,EAGrB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,QAAQ,EAAE,QAAQ,CAAC1zB,EAAMnQ,IAAM,CACnF6jC,GAAW1zB,CAAI,EAAI,SAAmBmd,EAAO,CAC3C,OAAO,OAAOA,IAAUnd,GAAQ,KAAOnQ,EAAI,EAAI,KAAO,KAAOmQ,CAC9D,CACH,CAAC,EAED,MAAM2zB,GAAqB,CAAE,EAW7BD,GAAW,aAAe,SAAsBE,EAAWC,EAASxxB,EAAS,CAC3E,SAASyxB,EAAcC,EAAKC,EAAM,CAChC,MAAO,WAAaP,GAAU,0BAA6BM,EAAM,IAAOC,GAAQ3xB,EAAU,KAAOA,EAAU,GAC/G,CAGE,MAAO,CAACnW,EAAO6nC,EAAKE,IAAS,CAC3B,GAAIL,IAAc,GAChB,MAAM,IAAI7Q,GACR+Q,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,GAAG,EAC1E9Q,GAAW,cACZ,EAGH,OAAI8Q,GAAW,CAACF,GAAmBI,CAAG,IACpCJ,GAAmBI,CAAG,EAAI,GAE1B,QAAQ,KACND,EACEC,EACA,+BAAiCF,EAAU,yCACrD,CACO,GAGID,EAAYA,EAAU1nC,EAAO6nC,EAAKE,CAAI,EAAI,EAClD,CACH,EAEAP,GAAW,SAAW,SAAkBQ,EAAiB,CACvD,MAAO,CAAChoC,EAAO6nC,KAEb,QAAQ,KAAK,GAAGA,CAAG,+BAA+BG,CAAe,EAAE,EAC5D,GAEX,EAYA,SAASC,GAAc3zB,EAAS4zB,EAAQC,EAAc,CACpD,GAAI,OAAO7zB,GAAY,SACrB,MAAM,IAAIuiB,GAAW,4BAA6BA,GAAW,oBAAoB,EAEnF,MAAMryB,EAAO,OAAO,KAAK8P,CAAO,EAChC,IAAI3Q,EAAIa,EAAK,OACb,KAAOb,KAAM,GAAG,CACd,MAAMkkC,EAAMrjC,EAAKb,CAAC,EACZ+jC,EAAYQ,EAAOL,CAAG,EAC5B,GAAIH,EAAW,CACb,MAAM1nC,EAAQsU,EAAQuzB,CAAG,EACnBtiC,EAASvF,IAAU,QAAa0nC,EAAU1nC,EAAO6nC,EAAKvzB,CAAO,EACnE,GAAI/O,IAAW,GACb,MAAM,IAAIsxB,GAAW,UAAYgR,EAAM,YAActiC,EAAQsxB,GAAW,oBAAoB,EAE9F,QACN,CACI,GAAIsR,IAAiB,GACnB,MAAM,IAAItR,GAAW,kBAAoBgR,EAAKhR,GAAW,cAAc,CAE7E,CACA,CAEA,MAAe6Q,GAAA,CACb,cAAAO,GACAT,aACF,ECvFMA,GAAaE,GAAU,WAS7B,IAAAU,GAAA,KAAY,CACV,YAAYC,EAAgB,CAC1B,KAAK,SAAWA,EAChB,KAAK,aAAe,CAClB,QAAS,IAAIrP,GACb,SAAU,IAAIA,EACf,CACL,CAUE,MAAM,QAAQsP,EAAavR,EAAQ,CACjC,GAAI,CACF,OAAO,MAAM,KAAK,SAASuR,EAAavR,CAAM,CAC/C,OAAQxkB,EAAK,CACZ,GAAIA,aAAe,MAAO,CACxB,IAAIg2B,EAAQ,CAAE,EAEd,MAAM,kBAAoB,MAAM,kBAAkBA,CAAK,EAAKA,EAAQ,IAAI,MAGxE,MAAMvS,EAAQuS,EAAM,MAAQA,EAAM,MAAM,QAAQ,QAAS,EAAE,EAAI,GAC/D,GAAI,CACGh2B,EAAI,MAGEyjB,GAAS,CAAC,OAAOzjB,EAAI,KAAK,EAAE,SAASyjB,EAAM,QAAQ,YAAa,EAAE,CAAC,IAC5EzjB,EAAI,OAAS;AAAA,EAAOyjB,GAHpBzjB,EAAI,MAAQyjB,CAKf,MAAW,CAEpB,CACA,CAEM,MAAMzjB,CACZ,CACA,CAEE,SAAS+1B,EAAavR,EAAQ,CAGxB,OAAOuR,GAAgB,UACzBvR,EAASA,GAAU,CAAE,EACrBA,EAAO,IAAMuR,GAEbvR,EAASuR,GAAe,CAAE,EAG5BvR,EAASuK,GAAY,KAAK,SAAUvK,CAAM,EAE1C,KAAM,CAAC,aAAAiE,EAAc,iBAAAwN,EAAkB,QAAA7N,CAAO,EAAI5D,EAE9CiE,IAAiB,QACnB0M,GAAU,cAAc1M,EAAc,CACpC,kBAAmBwM,GAAW,aAAaA,GAAW,OAAO,EAC7D,kBAAmBA,GAAW,aAAaA,GAAW,OAAO,EAC7D,oBAAqBA,GAAW,aAAaA,GAAW,OAAO,CAChE,EAAE,EAAK,EAGNgB,GAAoB,OAClBtR,EAAM,WAAWsR,CAAgB,EACnCzR,EAAO,iBAAmB,CACxB,UAAWyR,CACrB,EAEQd,GAAU,cAAcc,EAAkB,CACxC,OAAQhB,GAAW,SACnB,UAAWA,GAAW,QACvB,EAAE,EAAI,GAKPzQ,EAAO,oBAAsB,SAEtB,KAAK,SAAS,oBAAsB,OAC7CA,EAAO,kBAAoB,KAAK,SAAS,kBAEzCA,EAAO,kBAAoB,IAG7B2Q,GAAU,cAAc3Q,EAAQ,CAC9B,QAASyQ,GAAW,SAAS,SAAS,EACtC,cAAeA,GAAW,SAAS,eAAe,CACnD,EAAE,EAAI,EAGPzQ,EAAO,QAAUA,EAAO,QAAU,KAAK,SAAS,QAAU,OAAO,YAAa,EAG9E,IAAI0R,EAAiB9N,GAAWzD,EAAM,MACpCyD,EAAQ,OACRA,EAAQ5D,EAAO,MAAM,CACtB,EAED4D,GAAWzD,EAAM,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,QAAQ,EACzD9wB,GAAW,CACV,OAAOu0B,EAAQv0B,CAAM,CAC7B,CACK,EAED2wB,EAAO,QAAU4G,GAAa,OAAO8K,EAAgB9N,CAAO,EAG5D,MAAM+N,EAA0B,CAAE,EAClC,IAAIC,EAAiC,GACrC,KAAK,aAAa,QAAQ,QAAQ,SAAoCC,EAAa,CAC7E,OAAOA,EAAY,SAAY,YAAcA,EAAY,QAAQ7R,CAAM,IAAM,KAIjF4R,EAAiCA,GAAkCC,EAAY,YAE/EF,EAAwB,QAAQE,EAAY,UAAWA,EAAY,QAAQ,EACjF,CAAK,EAED,MAAMC,EAA2B,CAAE,EACnC,KAAK,aAAa,SAAS,QAAQ,SAAkCD,EAAa,CAChFC,EAAyB,KAAKD,EAAY,UAAWA,EAAY,QAAQ,CAC/E,CAAK,EAED,IAAInkB,EACA9gB,EAAI,EACJ+gB,EAEJ,GAAI,CAACikB,EAAgC,CACnC,MAAMG,EAAQ,CAACxB,GAAgB,KAAK,IAAI,EAAG,MAAS,EAOpD,IANAwB,EAAM,QAAQ,MAAMA,EAAOJ,CAAuB,EAClDI,EAAM,KAAK,MAAMA,EAAOD,CAAwB,EAChDnkB,EAAMokB,EAAM,OAEZrkB,EAAU,QAAQ,QAAQsS,CAAM,EAEzBpzB,EAAI+gB,GACTD,EAAUA,EAAQ,KAAKqkB,EAAMnlC,GAAG,EAAGmlC,EAAMnlC,GAAG,CAAC,EAG/C,OAAO8gB,CACb,CAEIC,EAAMgkB,EAAwB,OAE9B,IAAIzG,EAAYlL,EAIhB,IAFApzB,EAAI,EAEGA,EAAI+gB,GAAK,CACd,MAAMqkB,EAAcL,EAAwB/kC,GAAG,EACzCqlC,EAAaN,EAAwB/kC,GAAG,EAC9C,GAAI,CACFs+B,EAAY8G,EAAY9G,CAAS,CAClC,OAAQ94B,EAAO,CACd6/B,EAAW,KAAK,KAAM7/B,CAAK,EAC3B,KACR,CACA,CAEI,GAAI,CACFsb,EAAU6iB,GAAgB,KAAK,KAAMrF,CAAS,CAC/C,OAAQ94B,EAAO,CACd,OAAO,QAAQ,OAAOA,CAAK,CACjC,CAKI,IAHAxF,EAAI,EACJ+gB,EAAMmkB,EAAyB,OAExBllC,EAAI+gB,GACTD,EAAUA,EAAQ,KAAKokB,EAAyBllC,GAAG,EAAGklC,EAAyBllC,GAAG,CAAC,EAGrF,OAAO8gB,CACX,CAEE,OAAOsS,EAAQ,CACbA,EAASuK,GAAY,KAAK,SAAUvK,CAAM,EAC1C,MAAMnV,EAAWqf,GAAclK,EAAO,QAASA,EAAO,IAAKA,EAAO,iBAAiB,EACnF,OAAO6B,GAAShX,EAAUmV,EAAO,OAAQA,EAAO,gBAAgB,CACpE,CACA,EAGAG,EAAM,QAAQ,CAAC,SAAU,MAAO,OAAQ,SAAS,EAAG,SAA6B9wB,EAAQ,CAEvF6iC,GAAM,UAAU7iC,CAAM,EAAI,SAASkM,EAAKykB,EAAQ,CAC9C,OAAO,KAAK,QAAQuK,GAAYvK,GAAU,GAAI,CAC5C,OAAA3wB,EACA,IAAAkM,EACA,MAAOykB,GAAU,IAAI,IAC3B,CAAK,CAAC,CACH,CACH,CAAC,EAEDG,EAAM,QAAQ,CAAC,OAAQ,MAAO,OAAO,EAAG,SAA+B9wB,EAAQ,CAG7E,SAAS8iC,EAAmBC,EAAQ,CAClC,OAAO,SAAoB72B,EAAK9H,EAAMusB,EAAQ,CAC5C,OAAO,KAAK,QAAQuK,GAAYvK,GAAU,GAAI,CAC5C,OAAA3wB,EACA,QAAS+iC,EAAS,CAChB,eAAgB,qBAC1B,EAAY,CAAE,EACN,IAAA72B,EACA,KAAA9H,CACR,CAAO,CAAC,CACH,CACL,CAEEy+B,GAAM,UAAU7iC,CAAM,EAAI8iC,EAAoB,EAE9CD,GAAM,UAAU7iC,EAAS,MAAM,EAAI8iC,EAAmB,EAAI,CAC5D,CAAC,ECpOD,IAAAE,GAAA,MAAMC,EAAY,CAChB,YAAYC,EAAU,CACpB,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,8BAA8B,EAGpD,IAAIC,EAEJ,KAAK,QAAU,IAAI,QAAQ,SAAyB7wB,EAAS,CAC3D6wB,EAAiB7wB,CACvB,CAAK,EAED,MAAM/D,EAAQ,KAGd,KAAK,QAAQ,KAAK6uB,GAAU,CAC1B,GAAI,CAAC7uB,EAAM,WAAY,OAEvB,IAAI,EAAIA,EAAM,WAAW,OAEzB,KAAO,KAAM,GACXA,EAAM,WAAW,CAAC,EAAE6uB,CAAM,EAE5B7uB,EAAM,WAAa,IACzB,CAAK,EAGD,KAAK,QAAQ,KAAO60B,GAAe,CACjC,IAAIC,EAEJ,MAAMhlB,EAAU,IAAI,QAAQ/L,GAAW,CACrC/D,EAAM,UAAU+D,CAAO,EACvB+wB,EAAW/wB,CACnB,CAAO,EAAE,KAAK8wB,CAAW,EAEnB,OAAA/kB,EAAQ,OAAS,UAAkB,CACjC9P,EAAM,YAAY80B,CAAQ,CAC3B,EAEMhlB,CACR,EAED6kB,EAAS,SAAgBnzB,EAAS4gB,EAAQC,EAAS,CAC7CriB,EAAM,SAKVA,EAAM,OAAS,IAAIspB,GAAc9nB,EAAS4gB,EAAQC,CAAO,EACzDuS,EAAe50B,EAAM,MAAM,EACjC,CAAK,CACL,CAKE,kBAAmB,CACjB,GAAI,KAAK,OACP,MAAM,KAAK,MAEjB,CAME,UAAUtD,EAAU,CAClB,GAAI,KAAK,OAAQ,CACfA,EAAS,KAAK,MAAM,EACpB,MACN,CAEQ,KAAK,WACP,KAAK,WAAW,KAAKA,CAAQ,EAE7B,KAAK,WAAa,CAACA,CAAQ,CAEjC,CAME,YAAYA,EAAU,CACpB,GAAI,CAAC,KAAK,WACR,OAEF,MAAMnI,EAAQ,KAAK,WAAW,QAAQmI,CAAQ,EAC1CnI,IAAU,IACZ,KAAK,WAAW,OAAOA,EAAO,CAAC,CAErC,CAEE,eAAgB,CACd,MAAM26B,EAAa,IAAI,gBAEjB6F,EAASn3B,GAAQ,CACrBsxB,EAAW,MAAMtxB,CAAG,CACrB,EAED,YAAK,UAAUm3B,CAAK,EAEpB7F,EAAW,OAAO,YAAc,IAAM,KAAK,YAAY6F,CAAK,EAErD7F,EAAW,MACtB,CAME,OAAO,QAAS,CACd,IAAIL,EAIJ,MAAO,CACL,MAJY,IAAI6F,GAAY,SAAkBne,EAAG,CACjDsY,EAAStY,CACf,CAAK,EAGC,OAAAsY,CACD,CACL,CACA,EC7Ge,SAASmG,GAAOn4B,EAAU,CACvC,OAAO,SAAc8iB,EAAK,CACxB,OAAO9iB,EAAS,MAAM,KAAM8iB,CAAG,CAChC,CACH,CChBe,SAASsV,GAAaC,EAAS,CAC5C,OAAO3S,EAAM,SAAS2S,CAAO,GAAMA,EAAQ,eAAiB,EAC9D,CCbA,MAAMC,GAAiB,CACrB,SAAU,IACV,mBAAoB,IACpB,WAAY,IACZ,WAAY,IACZ,GAAI,IACJ,QAAS,IACT,SAAU,IACV,4BAA6B,IAC7B,UAAW,IACX,aAAc,IACd,eAAgB,IAChB,YAAa,IACb,gBAAiB,IACjB,OAAQ,IACR,gBAAiB,IACjB,iBAAkB,IAClB,MAAO,IACP,SAAU,IACV,YAAa,IACb,SAAU,IACV,OAAQ,IACR,kBAAmB,IACnB,kBAAmB,IACnB,WAAY,IACZ,aAAc,IACd,gBAAiB,IACjB,UAAW,IACX,SAAU,IACV,iBAAkB,IAClB,cAAe,IACf,4BAA6B,IAC7B,eAAgB,IAChB,SAAU,IACV,KAAM,IACN,eAAgB,IAChB,mBAAoB,IACpB,gBAAiB,IACjB,WAAY,IACZ,qBAAsB,IACtB,oBAAqB,IACrB,kBAAmB,IACnB,UAAW,IACX,mBAAoB,IACpB,oBAAqB,IACrB,OAAQ,IACR,iBAAkB,IAClB,SAAU,IACV,gBAAiB,IACjB,qBAAsB,IACtB,gBAAiB,IACjB,4BAA6B,IAC7B,2BAA4B,IAC5B,oBAAqB,IACrB,eAAgB,IAChB,WAAY,IACZ,mBAAoB,IACpB,eAAgB,IAChB,wBAAyB,IACzB,sBAAuB,IACvB,oBAAqB,IACrB,aAAc,IACd,YAAa,IACb,8BAA+B,GACjC,EAEA,OAAO,QAAQA,EAAc,EAAE,QAAQ,CAAC,CAAC/pC,EAAKC,CAAK,IAAM,CACvD8pC,GAAe9pC,CAAK,EAAID,CAC1B,CAAC,ECzCD,SAASgqC,GAAeC,EAAe,CACrC,MAAM9W,EAAU,IAAI+V,GAAMe,CAAa,EACjCrqB,EAAWgR,GAAKsY,GAAM,UAAU,QAAS/V,CAAO,EAGtDgE,SAAM,OAAOvX,EAAUspB,GAAM,UAAW/V,EAAS,CAAC,WAAY,EAAI,CAAC,EAGnEgE,EAAM,OAAOvX,EAAUuT,EAAS,KAAM,CAAC,WAAY,EAAI,CAAC,EAGxDvT,EAAS,OAAS,SAAgB0oB,EAAgB,CAChD,OAAO0B,GAAezI,GAAY0I,EAAe3B,CAAc,CAAC,CACjE,EAEM1oB,CACT,CAGK,MAACsqB,GAAQF,GAAezwB,EAAQ,EAGrC2wB,GAAM,MAAQhB,GAGdgB,GAAM,cAAgBhM,GACtBgM,GAAM,YAAcZ,GACpBY,GAAM,SAAWjM,GACjBiM,GAAM,QAAU1C,GAChB0C,GAAM,WAAarS,GAGnBqS,GAAM,WAAapT,GAGnBoT,GAAM,OAASA,GAAM,cAGrBA,GAAM,IAAM,SAAavtB,EAAU,CACjC,OAAO,QAAQ,IAAIA,CAAQ,CAC7B,EAEAutB,GAAM,OAASN,GAGfM,GAAM,aAAeL,GAGrBK,GAAM,YAAc3I,GAEpB2I,GAAM,aAAetM,GAErBsM,GAAM,WAAahZ,GAASoJ,GAAenD,EAAM,WAAWjG,CAAK,EAAI,IAAI,SAASA,CAAK,EAAIA,CAAK,EAEhGgZ,GAAM,WAAahD,GAAS,WAE5BgD,GAAM,eAAiBH,GAEvBG,GAAM,QAAUA,GChFX,KAAC,CACJ,MAAAhB,GACA,WAAApS,GACA,cAAAoH,GACA,SAAAD,GACA,YAAAqL,GACF,QAAE9B,GACA,IAAA2C,GACA,OAAAC,GACA,aAAAP,GACA,OAAAD,GACA,WAAA/R,GACA,aAAA+F,GACA,eAAAmM,GACA,WAAAM,GACA,WAAAC,GACA,YAAA/I,EACF,EAAI2I,GCtBJ;AAAA;AAAA;AAAA;AAAA,IASA,MAAMK,GAAY,OAAO,OAAW,IAkC9BC,GAAa,CAAC72B,EAAM82B,EAAY,KAAWA,EAA2B,OAAO,IAAI92B,CAAI,EAA9B,OAAOA,CAAI,EAClE+2B,GAAyB,CAACC,EAAQ3qC,EAAKm2B,IAAWyU,GAAsB,CAAE,EAAGD,EAAQ,EAAG3qC,EAAK,EAAGm2B,EAAQ,EACxGyU,GAAyBC,GAAS,KAAK,UAAUA,CAAI,EACtD,QAAQ,UAAW,SAAS,EAC5B,QAAQ,UAAW,SAAS,EAC5B,QAAQ,UAAW,SAAS,EAC3BhZ,GAAYL,GAAQ,OAAOA,GAAQ,UAAY,SAASA,CAAG,EAC3DQ,GAAUR,GAAQsZ,GAAatZ,CAAG,IAAM,gBACxC4D,GAAY5D,GAAQsZ,GAAatZ,CAAG,IAAM,kBAC1CuZ,GAAiBvZ,GAAQnM,GAAcmM,CAAG,GAAK,OAAO,KAAKA,CAAG,EAAE,SAAW,EAC3ExmB,GAAS,OAAO,OAChBggC,GAAU,OAAO,OACjB5gC,GAAS,CAAChE,EAAM,OAAS4kC,GAAQ5kC,CAAG,EAC1C,IAAI6kC,GACJ,MAAMC,GAAgB,IAEVD,KACHA,GACG,OAAO,WAAe,IAChB,WACA,OAAO,KAAS,IACZ,KACA,OAAO,OAAW,IACd,OACA,OAAO,OAAW,IACd,OACA7gC,MAE9B,SAAS+gC,GAAWC,EAAS,CACzB,OAAOA,EACF,QAAQ,KAAM,MAAM,EACpB,QAAQ,KAAM,MAAM,EACpB,QAAQ,KAAM,QAAQ,EACtB,QAAQ,KAAM,QAAQ,CAC/B,CACA,MAAMjW,GAAiB,OAAO,UAAU,eACxC,SAAS/0B,GAAOgG,EAAKpG,EAAK,CACf,OAAAm1B,GAAe,KAAK/uB,EAAKpG,CAAG,CACvC,CASA,MAAMqL,GAAU,MAAM,QAChBomB,GAAcD,GAAQ,OAAOA,GAAQ,WACrCI,GAAYJ,GAAQ,OAAOA,GAAQ,SACnCO,GAAaP,GAAQ,OAAOA,GAAQ,UAGpCM,GAAYN,GAAQA,IAAQ,MAAQ,OAAOA,GAAQ,SAEnD6Z,GAAa7Z,GACRM,GAASN,CAAG,GAAKC,GAAWD,EAAI,IAAI,GAAKC,GAAWD,EAAI,KAAK,EAElE8Z,GAAiB,OAAO,UAAU,SAClCR,GAAgB7qC,GAAUqrC,GAAe,KAAKrrC,CAAK,EACnDolB,GAAiBmM,GAAQ,CACvB,IAACM,GAASN,CAAG,EACN,SACL,MAAA5qB,EAAQ,OAAO,eAAe4qB,CAAG,EAChC,OAAA5qB,IAAU,MAAQA,EAAM,cAAgB,MACnD,EAEM2kC,GAAmB/Z,GACdA,GAAO,KACR,GACAnmB,GAAQmmB,CAAG,GAAMnM,GAAcmM,CAAG,GAAKA,EAAI,WAAa8Z,GACpD,KAAK,UAAU9Z,EAAK,KAAM,CAAC,EAC3B,OAAOA,CAAG,EAExB,SAASga,GAAKC,EAAOC,EAAY,GAAI,CACjC,OAAOD,EAAM,OAAO,CAACta,EAAKwa,EAAMxiC,IAAWA,IAAU,EAAIgoB,EAAMwa,EAAOxa,EAAMua,EAAYC,EAAO,EAAE,CACrG,CAkCA,SAASC,GAAY7U,EAAM,CACvB,IAAI/kB,EAAU+kB,EACd,MAAO,IAAM,EAAE/kB,CACnB,CAEA,SAAS65B,GAAKC,EAAKt5B,EAAK,CAChB,OAAO,QAAY,MACX,aAAK,aAAes5B,CAAG,EAE3Bt5B,GACQ,aAAKA,EAAI,KAAK,EAGlC,CAkDA,MAAMu5B,GAAwBva,GAAQ,CAACM,GAASN,CAAG,GAAKnmB,GAAQmmB,CAAG,EAEnE,SAASwa,GAASC,EAAKC,EAAK,CAExB,GAAIH,GAAqBE,CAAG,GAAKF,GAAqBG,CAAG,EAC/C,UAAI,MAAM,eAAe,EAEnC,MAAMjW,EAAQ,CAAC,CAAE,IAAAgW,EAAK,IAAAC,EAAK,EAC3B,KAAOjW,EAAM,QAAQ,CACjB,KAAM,CAAE,IAAAgW,EAAK,IAAAC,CAAI,EAAIjW,EAAM,IAAI,EAE/B,OAAO,KAAKgW,CAAG,EAAE,QAAejsC,GAAA,CACxBA,IAAQ,cAKR8xB,GAASma,EAAIjsC,CAAG,CAAC,GAAK,CAAC8xB,GAASoa,EAAIlsC,CAAG,CAAC,IACxCksC,EAAIlsC,CAAG,EAAI,MAAM,QAAQisC,EAAIjsC,CAAG,CAAC,EAAI,CAAC,EAAIoK,GAAO,GAEjD2hC,GAAqBG,EAAIlsC,CAAG,CAAC,GAAK+rC,GAAqBE,EAAIjsC,CAAG,CAAC,EAI/DksC,EAAIlsC,CAAG,EAAIisC,EAAIjsC,CAAG,EAIZi2B,EAAA,KAAK,CAAE,IAAKgW,EAAIjsC,CAAG,EAAG,IAAKksC,EAAIlsC,CAAG,EAAG,EAC/C,CACH,EAET,CCxPA;AAAA;AAAA;AAAA;AAAA,IASA,SAASmsC,GAAezQ,EAAM0Q,EAAQ1hC,EAAQ,CAC1C,MAAO,CAAE,KAAAgxB,EAAM,OAAA0Q,EAAQ,OAAA1hC,CAAQ,CACnC,CACA,SAAS2hC,GAAeC,EAAO9H,EAAKrO,EAAQ,CAKxC,MAJY,CAAE,MAAAmW,EAAO,IAAA9H,CAAK,CAK9B,CAMA,MAAM+H,GAAU,sBAEhB,SAAShP,GAAOnnB,KAAYoQ,EAAM,CAC9B,OAAIA,EAAK,SAAW,GAAKsL,GAAStL,EAAK,CAAC,CAAC,IACrCA,EAAOA,EAAK,CAAC,IAEb,CAACA,GAAQ,CAACA,EAAK,kBACfA,EAAO,CAAE,GAENpQ,EAAQ,QAAQm2B,GAAS,CAACn3B,EAAOo3B,IAC7BhmB,EAAK,eAAegmB,CAAU,EAAIhmB,EAAKgmB,CAAU,EAAI,EAC/D,CACL,CACA,MAAMxhC,GAAS,OAAO,OAChB4mB,GAAYJ,GAAQ,OAAOA,GAAQ,SAEnCM,GAAYN,GAAQA,IAAQ,MAAQ,OAAOA,GAAQ,SACzD,SAASga,GAAKC,EAAOC,EAAY,GAAI,CACjC,OAAOD,EAAM,OAAO,CAACta,EAAKwa,EAAMxiC,IAAWA,IAAU,EAAIgoB,EAAMwa,EAAOxa,EAAMua,EAAYC,EAAO,EAAE,CACrG,CAEA,MAAMc,GAAmB,CACrB,kBAAmB,EACnB,iBAAkB,CACtB,EAEMC,GAAe,CACjB,CAACD,GAAiB,iBAAiB,EAAG,4BAC1C,EACA,SAASE,GAAkB5V,EAAM6V,KAAQpmB,EAAM,CAC3C,MAAMslB,EAAMvO,GAAOmP,GAAa3V,CAAI,EAAS,GAAIvQ,GAAQ,EAAG,EACtDpQ,EAAU,CAAE,QAAS,OAAO01B,CAAG,EAAG,KAAA/U,CAAM,EAC9C,OAAI6V,IACAx2B,EAAQ,SAAWw2B,GAEhBx2B,CACX,CAEA,MAAMy2B,GAAoB,CAEtB,eAAgB,EAChB,6BAA8B,EAC9B,yCAA0C,EAC1C,wBAAyB,EACzB,gCAAiC,EACjC,yBAA0B,EAC1B,2BAA4B,EAC5B,kBAAmB,EACnB,2BAA4B,EAC5B,sBAAuB,GAEvB,6BAA8B,GAC9B,iCAAkC,GAClC,4BAA6B,GAC7B,4BAA6B,GAE7B,4BAA6B,GAE7B,6BAA8B,GAI9B,iBAAkB,EACtB,EAEMC,GAAgB,CAElB,CAACD,GAAkB,cAAc,EAAG,wBACpC,CAACA,GAAkB,4BAA4B,EAAG,sCAClD,CAACA,GAAkB,wCAAwC,EAAG,2CAC9D,CAACA,GAAkB,uBAAuB,EAAG,iCAC7C,CAACA,GAAkB,+BAA+B,EAAG,uCACrD,CAACA,GAAkB,wBAAwB,EAAG,2BAC9C,CAACA,GAAkB,0BAA0B,EAAG,6BAChD,CAACA,GAAkB,iBAAiB,EAAG,oBACvC,CAACA,GAAkB,0BAA0B,EAAG,+BAChD,CAACA,GAAkB,qBAAqB,EAAG,wBAE3C,CAACA,GAAkB,4BAA4B,EAAG,4BAClD,CAACA,GAAkB,gCAAgC,EAAG,mCACtD,CAACA,GAAkB,2BAA2B,EAAG,8BACjD,CAACA,GAAkB,2BAA2B,EAAG,8CAEjD,CAACA,GAAkB,2BAA2B,EAAG,qCAEjD,CAACA,GAAkB,4BAA4B,EAAG,qCACtD,EACA,SAASE,GAAmBhW,EAAM6V,EAAKr4B,EAAU,GAAI,CACjD,KAAM,CAAE,OAAAosB,EAAQ,SAAAqM,EAAU,KAAAxmB,CAAM,EAAGjS,EAC7Bu3B,EAAMvO,IAAQyP,GAAYF,IAAe/V,CAAI,GAAK,GAAI,GAAIvQ,GAAQ,EAAG,EAErEpd,EAAQ,IAAI,YAAY,OAAO0iC,CAAG,CAAC,EACzC,OAAA1iC,EAAM,KAAO2tB,EACT6V,IACAxjC,EAAM,SAAWwjC,GAErBxjC,EAAM,OAASu3B,EACRv3B,CACX,CAEA,SAAS6jC,GAAe7jC,EAAO,CAC3B,MAAMA,CACV,CAMA,MAAM8jC,GAAU,IACVC,GAAU,KACVC,GAAU;AAAA,EACVC,GAAU,SACVC,GAAU,SAChB,SAASC,GAAcpc,EAAK,CACxB,MAAMqc,EAAOrc,EACb,IAAIsc,EAAS,EACTC,EAAQ,EACRC,EAAU,EACVC,EAAc,EAClB,MAAMC,EAAU1kC,GAAUqkC,EAAKrkC,CAAK,IAAMgkC,IAAWK,EAAKrkC,EAAQ,CAAC,IAAMikC,GACnEU,EAAQ3kC,GAAUqkC,EAAKrkC,CAAK,IAAMikC,GAClCW,EAAQ5kC,GAAUqkC,EAAKrkC,CAAK,IAAMmkC,GAClCU,EAAQ7kC,GAAUqkC,EAAKrkC,CAAK,IAAMkkC,GAClCY,EAAa9kC,GAAU0kC,EAAO1kC,CAAK,GAAK2kC,EAAK3kC,CAAK,GAAK4kC,EAAK5kC,CAAK,GAAK6kC,EAAK7kC,CAAK,EAChFA,EAAQ,IAAMskC,EACd/R,EAAO,IAAMgS,EACbtB,EAAS,IAAMuB,EACfO,EAAa,IAAMN,EACnBO,EAAUzjC,GAAWmjC,EAAOnjC,CAAM,GAAKqjC,EAAKrjC,CAAM,GAAKsjC,EAAKtjC,CAAM,EAAI0iC,GAAUI,EAAK9iC,CAAM,EAC3F0jC,EAAc,IAAMD,EAAOV,CAAM,EACjCY,EAAc,IAAMF,EAAOV,EAASG,CAAW,EACrD,SAAShmC,GAAO,CACZ,OAAAgmC,EAAc,EACVK,EAAUR,CAAM,IAChBC,IACAC,EAAU,GAEVE,EAAOJ,CAAM,GACbA,IAEJA,IACAE,IACOH,EAAKC,CAAM,CAC1B,CACI,SAASa,GAAO,CACZ,OAAIT,EAAOJ,EAASG,CAAW,GAC3BA,IAEJA,IACOJ,EAAKC,EAASG,CAAW,CACxC,CACI,SAAS7yB,GAAQ,CACb0yB,EAAS,EACTC,EAAQ,EACRC,EAAU,EACVC,EAAc,CACtB,CACI,SAASW,EAAU7jC,EAAS,EAAG,CAC3BkjC,EAAcljC,CACtB,CACI,SAAS8jC,GAAa,CAClB,MAAM1uC,EAAS2tC,EAASG,EAExB,KAAO9tC,IAAW2tC,GACd7lC,EAAM,EAEVgmC,EAAc,CACtB,CACI,MAAO,CACH,MAAAzkC,EACA,KAAAuyB,EACA,OAAA0Q,EACA,WAAA8B,EACA,OAAAC,EACA,YAAAC,EACA,YAAAC,EACA,KAAAzmC,EACA,KAAA0mC,EACA,MAAAvzB,EACA,UAAAwzB,EACA,WAAAC,CACH,CACL,CAEA,MAAMC,GAAM,OACNC,GAAM,IACNC,GAAoB,IACpBC,GAAiB,YACvB,SAASC,GAAgB1Y,EAAQ5hB,EAAU,GAAI,CAC3C,MAAMrH,EAAWqH,EAAQ,WAAa,GAChCu6B,EAAQvB,GAAcpX,CAAM,EAC5B4Y,EAAgB,IAAMD,EAAM,MAAO,EACnCE,EAAkB,IAAM7C,GAAe2C,EAAM,KAAI,EAAIA,EAAM,OAAQ,EAAEA,EAAM,OAAO,EAClFG,EAAWD,EAAiB,EAC5BE,EAAcH,EAAe,EAC7BI,EAAW,CACb,YAAa,GACb,OAAQD,EACR,SAAUD,EACV,OAAQA,EACR,SAAU,GACV,WAAYC,EACZ,aAAcD,EACd,WAAYA,EACZ,UAAW,EACX,SAAU,GACV,KAAM,EACT,EACK9b,EAAU,IAAMgc,EAChB,CAAE,QAAA5lB,CAAO,EAAKhV,EACpB,SAAS66B,EAAUrY,EAAMwN,EAAK75B,KAAW8b,GAAM,CAC3C,MAAM6oB,GAAMlc,EAAS,EAGrB,GAFAoR,EAAI,QAAU75B,EACd65B,EAAI,QAAU75B,EACV6e,EAAS,CACT,MAAMqjB,GAAM1/B,EAAWm/B,GAAegD,GAAI,SAAU9K,CAAG,EAAI,KACrD/xB,EAAMu6B,GAAmBhW,EAAM6V,GAAK,CACtC,OAAQgC,GACR,KAAApoB,EAChB,CAAa,EACD+C,EAAQ/W,CAAG,CACvB,CACA,CACI,SAAS88B,EAASnc,EAASpf,EAAM9T,EAAO,CACpCkzB,EAAQ,OAAS6b,EAAiB,EAClC7b,EAAQ,YAAcpf,EACtB,MAAMa,GAAQ,CAAE,KAAAb,CAAM,EACtB,OAAI7G,IACA0H,GAAM,IAAMy3B,GAAelZ,EAAQ,SAAUA,EAAQ,MAAM,GAE3DlzB,GAAS,OACT2U,GAAM,MAAQ3U,GAEX2U,EACf,CACI,MAAM26B,EAAepc,GAAYmc,EAASnc,EAAS,EAAwB,EAC3E,SAASqc,EAAIC,EAAMC,EAAI,CACnB,OAAID,EAAK,YAAa,IAAKC,GACvBD,EAAK,KAAM,EACJC,IAGPN,EAAUvC,GAAkB,eAAgBmC,EAAe,EAAI,EAAGU,CAAE,EAC7D,GAEnB,CACI,SAASC,EAAWF,EAAM,CACtB,IAAIG,EAAM,GACV,KAAOH,EAAK,gBAAkBvC,IAAWuC,EAAK,YAAa,IAAKrC,IAC5DwC,GAAOH,EAAK,YAAa,EACzBA,EAAK,KAAM,EAEf,OAAOG,CACf,CACI,SAASC,EAAWJ,EAAM,CACtB,MAAMG,EAAMD,EAAWF,CAAI,EAC3B,OAAAA,EAAK,WAAY,EACVG,CACf,CACI,SAASE,EAAkBJ,EAAI,CAC3B,GAAIA,IAAOjB,GACP,MAAO,GAEX,MAAMsB,EAAKL,EAAG,WAAW,CAAC,EAC1B,OAASK,GAAM,IAAMA,GAAM,KACtBA,GAAM,IAAMA,GAAM,IACnBA,IAAO,EAEnB,CACI,SAASC,EAAcN,EAAI,CACvB,GAAIA,IAAOjB,GACP,MAAO,GAEX,MAAMsB,EAAKL,EAAG,WAAW,CAAC,EAC1B,OAAOK,GAAM,IAAMA,GAAM,EACjC,CACI,SAASE,EAAuBR,EAAMtc,EAAS,CAC3C,KAAM,CAAE,YAAA+c,CAAW,EAAK/c,EACxB,GAAI+c,IAAgB,EAChB,MAAO,GAEXP,EAAWF,CAAI,EACf,MAAMjmB,GAAMsmB,EAAkBL,EAAK,YAAW,CAAE,EAChD,OAAAA,EAAK,UAAW,EACTjmB,EACf,CACI,SAAS2mB,EAAsBV,EAAMtc,EAAS,CAC1C,KAAM,CAAE,YAAA+c,CAAW,EAAK/c,EACxB,GAAI+c,IAAgB,EAChB,MAAO,GAEXP,EAAWF,CAAI,EACf,MAAMC,GAAKD,EAAK,gBAAkB,IAAMA,EAAK,KAAI,EAAKA,EAAK,YAAa,EAClEjmB,GAAMwmB,EAAcN,EAAE,EAC5B,OAAAD,EAAK,UAAW,EACTjmB,EACf,CACI,SAAS4mB,EAAeX,EAAMtc,EAAS,CACnC,KAAM,CAAE,YAAA+c,CAAW,EAAK/c,EACxB,GAAI+c,IAAgB,EAChB,MAAO,GAEXP,EAAWF,CAAI,EACf,MAAMjmB,GAAMimB,EAAK,YAAW,IAAOd,GACnC,OAAAc,EAAK,UAAW,EACTjmB,EACf,CACI,SAAS6mB,EAAiBZ,EAAMtc,EAAS,CACrC,KAAM,CAAE,YAAA+c,CAAW,EAAK/c,EACxB,GAAI+c,IAAgB,EAChB,MAAO,GAEXP,EAAWF,CAAI,EACf,MAAMjmB,GAAMimB,EAAK,YAAW,IAAO,IACnC,OAAAA,EAAK,UAAW,EACTjmB,EACf,CACI,SAAS8mB,EAAsBb,EAAMtc,EAAS,CAC1C,KAAM,CAAE,YAAA+c,CAAW,EAAK/c,EACxB,GAAI+c,IAAgB,EAChB,MAAO,GAEXP,EAAWF,CAAI,EACf,MAAMjmB,GAAMsmB,EAAkBL,EAAK,YAAW,CAAE,EAChD,OAAAA,EAAK,UAAW,EACTjmB,EACf,CACI,SAAS+mB,EAAuBd,EAAMtc,EAAS,CAC3C,KAAM,CAAE,YAAA+c,CAAW,EAAK/c,EACxB,GAAI,EAAE+c,IAAgB,GAClBA,IAAgB,IAChB,MAAO,GAEXP,EAAWF,CAAI,EACf,MAAMjmB,GAAMimB,EAAK,YAAW,IAAO,IACnC,OAAAA,EAAK,UAAW,EACTjmB,EACf,CACI,SAASgnB,EAAmBf,EAAMtc,EAAS,CACvC,KAAM,CAAE,YAAA+c,CAAW,EAAK/c,EACxB,GAAI+c,IAAgB,GAChB,MAAO,GAEX,MAAMhlC,GAAK,IAAM,CACb,MAAMwkC,GAAKD,EAAK,YAAa,EAC7B,OAAIC,KAAO,IACAI,EAAkBL,EAAK,MAAM,EAE/BC,KAAO,KACZA,KAAO,KACPA,KAAO,KACPA,KAAO,KACPA,KAAO,KACPA,KAAOxC,IACP,CAACwC,GACM,GAEFA,KAAOtC,IACZqC,EAAK,KAAM,EACJvkC,GAAI,GAIJulC,EAAYhB,EAAM,EAAK,CAErC,EACKjmB,GAAMte,GAAI,EAChB,OAAAukC,EAAK,UAAW,EACTjmB,EACf,CACI,SAASknB,EAAcjB,EAAM,CACzBE,EAAWF,CAAI,EACf,MAAMjmB,EAAMimB,EAAK,YAAW,IAAO,IACnC,OAAAA,EAAK,UAAW,EACTjmB,CACf,CACI,SAASmnB,EAAkBlB,EAAM,CAC7B,MAAMmB,EAASjB,EAAWF,CAAI,EACxBjmB,EAAMimB,EAAK,YAAW,IAAO,KAC/BA,EAAK,KAAI,IAAO,IACpB,OAAAA,EAAK,UAAW,EACT,CACH,SAAUjmB,EACV,SAAUonB,EAAO,OAAS,CAC7B,CACT,CACI,SAASH,EAAYhB,EAAM10B,EAAQ,GAAM,CACrC,MAAM7P,EAAK,CAAC2lC,GAAW,GAAOC,GAAO,GAAIC,EAAe,KAAU,CAC9D,MAAMrB,EAAKD,EAAK,YAAa,EAC7B,OAAIC,IAAO,IACAoB,KAAS,IAA8B,GAAQD,GAEjDnB,IAAO,KAAoC,CAACA,EAC1CoB,KAAS,IAA8B,GAAOD,GAEhDnB,IAAO,KACZD,EAAK,KAAM,EACJvkC,EAAG2lC,GAAU,IAA6B,EAAI,GAEhDnB,IAAO,IACLoB,KAAS,KAA+BC,EACzC,GACA,EAAED,KAAS5D,IAAW4D,KAAS1D,IAEhCsC,IAAOxC,IACZuC,EAAK,KAAM,EACJvkC,EAAG,GAAMgiC,GAAS6D,CAAY,GAEhCrB,IAAOtC,IACZqC,EAAK,KAAM,EACJvkC,EAAG,GAAMkiC,GAAS2D,CAAY,GAG9B,EAEd,EACKvnB,GAAMte,EAAI,EAChB,OAAA6P,GAAS00B,EAAK,UAAW,EAClBjmB,EACf,CACI,SAASwnB,EAASvB,EAAMvkC,EAAI,CACxB,MAAMwkC,EAAKD,EAAK,YAAa,EAC7B,OAAIC,IAAOjB,GACAA,GAEPvjC,EAAGwkC,CAAE,GACLD,EAAK,KAAM,EACJC,GAEJ,IACf,CACI,SAASuB,GAAavB,EAAI,CACtB,MAAMK,EAAKL,EAAG,WAAW,CAAC,EAC1B,OAASK,GAAM,IAAMA,GAAM,KACtBA,GAAM,IAAMA,GAAM,IAClBA,GAAM,IAAMA,GAAM,IACnBA,IAAO,IACPA,IAAO,EAEnB,CACI,SAASmB,GAAmBzB,EAAM,CAC9B,OAAOuB,EAASvB,EAAMwB,EAAY,CAC1C,CACI,SAASE,GAAkBzB,EAAI,CAC3B,MAAMK,EAAKL,EAAG,WAAW,CAAC,EAC1B,OAASK,GAAM,IAAMA,GAAM,KACtBA,GAAM,IAAMA,GAAM,IAClBA,GAAM,IAAMA,GAAM,IACnBA,IAAO,IACPA,IAAO,IACPA,IAAO,EAEnB,CACI,SAASqB,GAAwB3B,EAAM,CACnC,OAAOuB,EAASvB,EAAM0B,EAAiB,CAC/C,CACI,SAASE,GAAQ3B,EAAI,CACjB,MAAMK,EAAKL,EAAG,WAAW,CAAC,EAC1B,OAAOK,GAAM,IAAMA,GAAM,EACjC,CACI,SAASuB,GAAU7B,EAAM,CACrB,OAAOuB,EAASvB,EAAM4B,EAAO,CACrC,CACI,SAASE,GAAW7B,EAAI,CACpB,MAAMK,EAAKL,EAAG,WAAW,CAAC,EAC1B,OAASK,GAAM,IAAMA,GAAM,IACtBA,GAAM,IAAMA,GAAM,IAClBA,GAAM,IAAMA,GAAM,GAC/B,CACI,SAASyB,GAAa/B,EAAM,CACxB,OAAOuB,EAASvB,EAAM8B,EAAU,CACxC,CACI,SAASE,EAAUhC,EAAM,CACrB,IAAIC,EAAK,GACLgC,EAAM,GACV,KAAQhC,EAAK4B,GAAU7B,CAAI,GACvBiC,GAAOhC,EAEX,OAAOgC,CACf,CACI,SAASC,GAAWlC,EAAM,CACtBI,EAAWJ,CAAI,EACf,MAAMC,EAAKD,EAAK,YAAa,EAC7B,OAAIC,IAAO,KACPN,EAAUvC,GAAkB,eAAgBmC,EAAe,EAAI,EAAGU,CAAE,EAExED,EAAK,KAAM,EACJ,GACf,CACI,SAASmC,GAASnC,EAAM,CACpB,IAAIG,EAAM,GAEV,OAAa,CACT,MAAMF,EAAKD,EAAK,YAAa,EAC7B,GAAIC,IAAO,KACPA,IAAO,KACPA,IAAO,KACPA,IAAO,KACP,CAACA,EACD,MAEC,GAAIA,IAAO,IACZ,GAAIe,EAAYhB,CAAI,EAChBG,GAAOF,EACPD,EAAK,KAAM,MAGX,eAGCC,IAAOxC,IAAWwC,IAAOtC,GAC9B,GAAIqD,EAAYhB,CAAI,EAChBG,GAAOF,EACPD,EAAK,KAAM,MAEV,IAAIiB,EAAcjB,CAAI,EACvB,MAGAG,GAAOF,EACPD,EAAK,KAAM,OAIfG,GAAOF,EACPD,EAAK,KAAM,CAE3B,CACQ,OAAOG,CACf,CACI,SAASiC,GAAoBpC,EAAM,CAC/BI,EAAWJ,CAAI,EACf,IAAIC,EAAK,GACL/7B,EAAO,GACX,KAAQ+7B,EAAK0B,GAAwB3B,CAAI,GACrC97B,GAAQ+7B,EAEZ,OAAID,EAAK,YAAa,IAAKhB,IACvBW,EAAUvC,GAAkB,2BAA4BmC,EAAe,EAAI,CAAC,EAEzEr7B,CACf,CACI,SAASm+B,GAAmBrC,EAAM,CAC9BI,EAAWJ,CAAI,EACf,IAAIxvC,EAAQ,GACZ,OAAIwvC,EAAK,YAAa,IAAK,KACvBA,EAAK,KAAM,EACXxvC,GAAS,IAAIwxC,EAAUhC,CAAI,CAAC,IAG5BxvC,GAASwxC,EAAUhC,CAAI,EAEvBA,EAAK,YAAa,IAAKhB,IACvBW,EAAUvC,GAAkB,2BAA4BmC,EAAe,EAAI,CAAC,EAEzE/uC,CACf,CACI,SAAS8xC,EAAUrC,EAAI,CACnB,OAAOA,IAAOf,IAAqBe,IAAOtC,EAClD,CACI,SAAS4E,EAAYvC,EAAM,CACvBI,EAAWJ,CAAI,EAEfD,EAAIC,EAAM,GAAI,EACd,IAAIC,EAAK,GACLuC,EAAU,GACd,KAAQvC,EAAKsB,EAASvB,EAAMsC,CAAS,GAC7BrC,IAAO,KACPuC,GAAWC,EAAmBzC,CAAI,EAGlCwC,GAAWvC,EAGnB,MAAM19B,GAAUy9B,EAAK,YAAa,EAClC,OAAIz9B,KAAYo7B,IAAWp7B,KAAYy8B,IACnCW,EAAUvC,GAAkB,yCAA0CmC,EAAe,EAAI,CAAC,EAEtFh9B,KAAYo7B,KACZqC,EAAK,KAAM,EAEXD,EAAIC,EAAM,GAAI,GAEXwC,IAGXzC,EAAIC,EAAM,GAAI,EACPwC,EACf,CACI,SAASC,EAAmBzC,EAAM,CAC9B,MAAMC,EAAKD,EAAK,YAAa,EAC7B,OAAQC,EAAE,CACN,IAAK,KACL,IAAK,IACD,OAAAD,EAAK,KAAM,EACJ,KAAKC,CAAE,GAClB,IAAK,IACD,OAAOyC,EAA0B1C,EAAMC,EAAI,CAAC,EAChD,IAAK,IACD,OAAOyC,EAA0B1C,EAAMC,EAAI,CAAC,EAChD,QACI,OAAAN,EAAUvC,GAAkB,wBAAyBmC,EAAe,EAAI,EAAGU,CAAE,EACtE,EACvB,CACA,CACI,SAASyC,EAA0B1C,EAAM2C,EAASC,EAAQ,CACtD7C,EAAIC,EAAM2C,CAAO,EACjB,IAAIE,GAAW,GACf,QAAS1uC,GAAI,EAAGA,GAAIyuC,EAAQzuC,KAAK,CAC7B,MAAM8rC,GAAK8B,GAAa/B,CAAI,EAC5B,GAAI,CAACC,GAAI,CACLN,EAAUvC,GAAkB,gCAAiCmC,EAAiB,EAAE,EAAG,KAAKoD,CAAO,GAAGE,EAAQ,GAAG7C,EAAK,YAAW,CAAE,EAAE,EACjI,KAChB,CACY6C,IAAY5C,EACxB,CACQ,MAAO,KAAK0C,CAAO,GAAGE,EAAQ,EACtC,CACI,SAASC,GAAoB7C,EAAI,CAC7B,OAAQA,IAAO,KACXA,IAAO,KACPA,IAAOxC,IACPwC,IAAOtC,EACnB,CACI,SAASoF,GAAsB/C,EAAM,CACjCI,EAAWJ,CAAI,EACf,IAAIC,EAAK,GACL+C,EAAc,GAClB,KAAQ/C,EAAKsB,EAASvB,EAAM8C,EAAmB,GAC3CE,GAAe/C,EAEnB,OAAO+C,CACf,CACI,SAASC,GAAmBjD,EAAM,CAC9B,IAAIC,EAAK,GACL/7B,EAAO,GACX,KAAQ+7B,EAAKwB,GAAmBzB,CAAI,GAChC97B,GAAQ+7B,EAEZ,OAAO/7B,CACf,CACI,SAASg/B,GAAgBlD,EAAM,CAC3B,MAAMvkC,EAAM0kC,GAAQ,CAChB,MAAMF,GAAKD,EAAK,YAAa,EAC7B,OAAIC,KAAO,KACPA,KAAO,KACPA,KAAO,KACPA,KAAO,KACPA,KAAO,KACPA,KAAO,KACP,CAACA,IAGIA,KAAOxC,GAFL0C,GAMPA,GAAOF,GACPD,EAAK,KAAM,EACJvkC,EAAG0kC,CAAG,EAOpB,EACD,OAAO1kC,EAAG,EAAE,CACpB,CACI,SAAS0nC,EAAWnD,EAAM,CACtBI,EAAWJ,CAAI,EACf,MAAMoD,EAASrD,EAAIC,EAAM,GAA0B,EACnD,OAAAI,EAAWJ,CAAI,EACRoD,CACf,CAEI,SAASC,GAAuBrD,EAAMtc,EAAS,CAC3C,IAAIve,EAAQ,KAEZ,OADW66B,EAAK,YAAa,EACnB,CACN,IAAK,IACD,OAAItc,EAAQ,WAAa,GACrBic,EAAUvC,GAAkB,2BAA4BmC,EAAe,EAAI,CAAC,EAEhFS,EAAK,KAAM,EACX76B,EAAQ06B,EAASnc,EAAS,EAA8B,GAA+B,EACvF0c,EAAWJ,CAAI,EACftc,EAAQ,YACDve,EACX,IAAK,IACD,OAAIue,EAAQ,UAAY,GACpBA,EAAQ,cAAgB,GACxBic,EAAUvC,GAAkB,kBAAmBmC,EAAe,EAAI,CAAC,EAEvES,EAAK,KAAM,EACX76B,EAAQ06B,EAASnc,EAAS,EAA+B,GAAgC,EACzFA,EAAQ,YACRA,EAAQ,UAAY,GAAK0c,EAAWJ,CAAI,EACpCtc,EAAQ,UAAYA,EAAQ,YAAc,IAC1CA,EAAQ,SAAW,IAEhBve,EACX,IAAK,IACD,OAAIue,EAAQ,UAAY,GACpBic,EAAUvC,GAAkB,2BAA4BmC,EAAe,EAAI,CAAC,EAEhFp6B,EAAQm+B,GAAkBtD,EAAMtc,CAAO,GAAKoc,EAAYpc,CAAO,EAC/DA,EAAQ,UAAY,EACbve,EACX,QAAS,CACL,IAAIo+B,GAAuB,GACvBC,GAAsB,GACtBC,EAAe,GACnB,GAAIxC,EAAcjB,CAAI,EAClB,OAAItc,EAAQ,UAAY,GACpBic,EAAUvC,GAAkB,2BAA4BmC,EAAe,EAAI,CAAC,EAEhFp6B,EAAQ06B,EAASnc,EAAS,EAAyByf,EAAWnD,CAAI,CAAC,EAEnEtc,EAAQ,UAAY,EACpBA,EAAQ,SAAW,GACZve,EAEX,GAAIue,EAAQ,UAAY,IACnBA,EAAQ,cAAgB,GACrBA,EAAQ,cAAgB,GACxBA,EAAQ,cAAgB,GAC5B,OAAAic,EAAUvC,GAAkB,2BAA4BmC,EAAe,EAAI,CAAC,EAC5E7b,EAAQ,UAAY,EACbggB,GAAU1D,EAAMtc,CAAO,EAElC,GAAK6f,GAAuB/C,EAAuBR,EAAMtc,CAAO,EAC5D,OAAAve,EAAQ06B,EAASnc,EAAS,EAA0B0e,GAAoBpC,CAAI,CAAC,EAC7EI,EAAWJ,CAAI,EACR76B,EAEX,GAAKq+B,GAAsB9C,EAAsBV,EAAMtc,CAAO,EAC1D,OAAAve,EAAQ06B,EAASnc,EAAS,EAAyB2e,GAAmBrC,CAAI,CAAC,EAC3EI,EAAWJ,CAAI,EACR76B,EAEX,GAAKs+B,EAAe9C,EAAeX,EAAMtc,CAAO,EAC5C,OAAAve,EAAQ06B,EAASnc,EAAS,EAA4B6e,EAAYvC,CAAI,CAAC,EACvEI,EAAWJ,CAAI,EACR76B,EAEX,GAAI,CAACo+B,IAAwB,CAACC,IAAuB,CAACC,EAElD,OAAAt+B,EAAQ06B,EAASnc,EAAS,GAAkCqf,GAAsB/C,CAAI,CAAC,EACvFL,EAAUvC,GAAkB,6BAA8BmC,EAAiB,EAAE,EAAGp6B,EAAM,KAAK,EAC3Fi7B,EAAWJ,CAAI,EACR76B,EAEX,KAChB,CACA,CACQ,OAAOA,CACf,CAEI,SAASm+B,GAAkBtD,EAAMtc,EAAS,CACtC,KAAM,CAAE,YAAA+c,CAAW,EAAK/c,EACxB,IAAIve,GAAQ,KACZ,MAAM86B,GAAKD,EAAK,YAAa,EAQ7B,QAPKS,IAAgB,GACjBA,IAAgB,GAChBA,IAAgB,IAChBA,IAAgB,MACfR,KAAOtC,IAAWsC,KAAOxC,KAC1BkC,EAAUvC,GAAkB,sBAAuBmC,EAAe,EAAI,CAAC,EAEnEU,GAAE,CACN,IAAK,IACD,OAAAD,EAAK,KAAM,EACX76B,GAAQ06B,EAASnc,EAAS,EAAgC,GAAiC,EAC3FA,EAAQ,SAAW,GACZve,GACX,IAAK,IACD,OAAAi7B,EAAWJ,CAAI,EACfA,EAAK,KAAM,EACJH,EAASnc,EAAS,EAA8B,GAA+B,EAC1F,IAAK,IACD,OAAA0c,EAAWJ,CAAI,EACfA,EAAK,KAAM,EACJH,EAASnc,EAAS,GAAqC,GAAqC,EACvG,QACI,OAAIud,EAAcjB,CAAI,GAClB76B,GAAQ06B,EAASnc,EAAS,EAAyByf,EAAWnD,CAAI,CAAC,EAEnEtc,EAAQ,UAAY,EACpBA,EAAQ,SAAW,GACZve,IAEPy7B,EAAiBZ,EAAMtc,CAAO,GAC9Bod,EAAuBd,EAAMtc,CAAO,GACpC0c,EAAWJ,CAAI,EACRsD,GAAkBtD,EAAMtc,CAAO,GAEtCmd,EAAsBb,EAAMtc,CAAO,GACnC0c,EAAWJ,CAAI,EACRH,EAASnc,EAAS,GAAoCuf,GAAmBjD,CAAI,CAAC,GAErFe,EAAmBf,EAAMtc,CAAO,GAChC0c,EAAWJ,CAAI,EACXC,KAAO,IAEAoD,GAAuBrD,EAAMtc,CAAO,GAAKve,GAGzC06B,EAASnc,EAAS,GAA+Bwf,GAAgBlD,CAAI,CAAC,IAGjFS,IAAgB,GAChBd,EAAUvC,GAAkB,sBAAuBmC,EAAe,EAAI,CAAC,EAE3E7b,EAAQ,UAAY,EACpBA,EAAQ,SAAW,GACZggB,GAAU1D,EAAMtc,CAAO,EAC9C,CACA,CAEI,SAASggB,GAAU1D,EAAMtc,EAAS,CAC9B,IAAIve,EAAQ,CAAE,KAAM,EAAyB,EAC7C,GAAIue,EAAQ,UAAY,EACpB,OAAO2f,GAAuBrD,EAAMtc,CAAO,GAAKoc,EAAYpc,CAAO,EAEvE,GAAIA,EAAQ,SACR,OAAO4f,GAAkBtD,EAAMtc,CAAO,GAAKoc,EAAYpc,CAAO,EAGlE,OADWsc,EAAK,YAAa,EACnB,CACN,IAAK,IACD,OAAOqD,GAAuBrD,EAAMtc,CAAO,GAAKoc,EAAYpc,CAAO,EACvE,IAAK,IACD,OAAAic,EAAUvC,GAAkB,yBAA0BmC,EAAe,EAAI,CAAC,EAC1ES,EAAK,KAAM,EACJH,EAASnc,EAAS,EAA+B,GAAgC,EAC5F,IAAK,IACD,OAAO4f,GAAkBtD,EAAMtc,CAAO,GAAKoc,EAAYpc,CAAO,EAClE,QAAS,CACL,GAAIud,EAAcjB,CAAI,EAClB,OAAA76B,EAAQ06B,EAASnc,EAAS,EAAyByf,EAAWnD,CAAI,CAAC,EAEnEtc,EAAQ,UAAY,EACpBA,EAAQ,SAAW,GACZve,EAEX,KAAM,CAAE,SAAAw+B,GAAU,SAAAvC,IAAaF,EAAkBlB,CAAI,EACrD,GAAI2D,GACA,OAAOvC,GACDvB,EAASnc,EAAS,EAAyBye,GAASnC,CAAI,CAAC,EACzDH,EAASnc,EAAS,EAA2Bwe,GAAWlC,CAAI,CAAC,EAEvE,GAAIgB,EAAYhB,CAAI,EAChB,OAAOH,EAASnc,EAAS,EAAyBye,GAASnC,CAAI,CAAC,EAEpE,KAChB,CACA,CACQ,OAAO76B,CACf,CACI,SAASy+B,IAAY,CACjB,KAAM,CAAE,YAAAnD,EAAa,OAAAxlC,EAAQ,SAAA4oC,EAAU,OAAAC,EAAQ,EAAGpE,EAOlD,OANAA,EAAS,SAAWe,EACpBf,EAAS,WAAazkC,EACtBykC,EAAS,aAAemE,EACxBnE,EAAS,WAAaoE,GACtBpE,EAAS,OAASJ,EAAe,EACjCI,EAAS,SAAWH,EAAiB,EACjCF,EAAM,YAAa,IAAKL,GACjBa,EAASH,EAAU,EAAwB,EAE/CgE,GAAUrE,EAAOK,CAAQ,CACxC,CACI,MAAO,CACH,UAAAkE,GACA,cAAAtE,EACA,gBAAAC,EACA,QAAA7b,CACH,CACL,CAEA,MAAMqgB,GAAiB,SAEjBC,GAAgB,wDACtB,SAASC,GAAmBt+B,EAAOu+B,EAAYC,EAAY,CACvD,OAAQx+B,EAAK,CACT,IAAK,OACD,MAAO,KAEX,IAAK,MAED,MAAO,IACX,QAAS,CACL,MAAMy+B,EAAY,SAASF,GAAcC,EAAY,EAAE,EACvD,OAAIC,GAAa,OAAUA,GAAa,MAC7B,OAAO,cAAcA,CAAS,EAIlC,GACnB,CACA,CACA,CACA,SAASC,GAAav/B,EAAU,GAAI,CAChC,MAAMrH,EAAWqH,EAAQ,WAAa,GAChC,CAAE,QAAAgV,EAAS,OAAAwqB,CAAM,EAAKx/B,EAC5B,SAAS66B,EAAU4E,EAAUjd,EAAMuV,EAAO5hC,KAAW8b,EAAM,CACvD,MAAMge,EAAMwP,EAAS,gBAAiB,EAGtC,GAFAxP,EAAI,QAAU95B,EACd85B,EAAI,QAAU95B,EACV6e,EAAS,CACT,MAAMqjB,EAAM1/B,EAAWm/B,GAAeC,EAAO9H,CAAG,EAAI,KAC9ChyB,EAAMu6B,GAAmBhW,EAAM6V,EAAK,CACtC,OAAQ4G,GACR,KAAAhtB,CAChB,CAAa,EACD+C,EAAQ/W,CAAG,CACvB,CACA,CACI,SAASyhC,EAASD,EAAUjd,EAAMuV,EAAO5hC,KAAW8b,EAAM,CACtD,MAAMge,EAAMwP,EAAS,gBAAiB,EAGtC,GAFAxP,EAAI,QAAU95B,EACd85B,EAAI,QAAU95B,EACVqpC,EAAQ,CACR,MAAMnH,EAAM1/B,EAAWm/B,GAAeC,EAAO9H,CAAG,EAAI,KACpDuP,EAAOpH,GAAkB5V,EAAM6V,EAAKpmB,CAAI,CAAC,CACrD,CACA,CACI,SAAS0tB,EAAUngC,EAAMrJ,EAAQkiC,EAAK,CAClC,MAAMuH,EAAO,CAAE,KAAApgC,CAAM,EACrB,OAAI7G,IACAinC,EAAK,MAAQzpC,EACbypC,EAAK,IAAMzpC,EACXypC,EAAK,IAAM,CAAE,MAAOvH,EAAK,IAAKA,CAAK,GAEhCuH,CACf,CACI,SAASC,EAAQD,EAAMzpC,EAAQ65B,EAAKxwB,EAAM,CAIlC7G,IACAinC,EAAK,IAAMzpC,EACPypC,EAAK,MACLA,EAAK,IAAI,IAAM5P,GAG/B,CACI,SAAS8P,EAAUC,EAAWr0C,EAAO,CACjC,MAAMkzB,EAAUmhB,EAAU,QAAS,EAC7BH,EAAOD,EAAU,EAAwB/gB,EAAQ,OAAQA,EAAQ,QAAQ,EAC/E,OAAAghB,EAAK,MAAQl0C,EACbm0C,EAAQD,EAAMG,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EAC7DH,CACf,CACI,SAASI,EAAUD,EAAWnrC,EAAO,CACjC,MAAMgqB,EAAUmhB,EAAU,QAAS,EAC7B,CAAE,WAAY5pC,EAAQ,aAAckiC,CAAG,EAAKzZ,EAC5CghB,EAAOD,EAAU,EAAwBxpC,EAAQkiC,CAAG,EAC1D,OAAAuH,EAAK,MAAQ,SAAShrC,EAAO,EAAE,EAC/BmrC,EAAU,UAAS,EACnBF,EAAQD,EAAMG,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EAC7DH,CACf,CACI,SAASK,EAAWF,EAAWt0C,EAAKy0C,EAAQ,CACxC,MAAMthB,EAAUmhB,EAAU,QAAS,EAC7B,CAAE,WAAY5pC,EAAQ,aAAckiC,CAAG,EAAKzZ,EAC5CghB,EAAOD,EAAU,EAAyBxpC,EAAQkiC,CAAG,EAC3D,OAAAuH,EAAK,IAAMn0C,EACPy0C,IAAW,KACXN,EAAK,OAAS,IAElBG,EAAU,UAAS,EACnBF,EAAQD,EAAMG,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EAC7DH,CACf,CACI,SAASO,EAAaJ,EAAWr0C,EAAO,CACpC,MAAMkzB,EAAUmhB,EAAU,QAAS,EAC7B,CAAE,WAAY5pC,EAAQ,aAAckiC,CAAG,EAAKzZ,EAC5CghB,EAAOD,EAAU,EAA2BxpC,EAAQkiC,CAAG,EAC7D,OAAAuH,EAAK,MAAQl0C,EAAM,QAAQwzC,GAAeC,EAAkB,EAC5DY,EAAU,UAAS,EACnBF,EAAQD,EAAMG,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EAC7DH,CACf,CACI,SAASQ,EAAoBL,EAAW,CACpC,MAAM1/B,EAAQ0/B,EAAU,UAAW,EAC7BnhB,EAAUmhB,EAAU,QAAS,EAC7B,CAAE,WAAY5pC,EAAQ,aAAckiC,CAAG,EAAKzZ,EAC5CghB,EAAOD,EAAU,EAAkCxpC,EAAQkiC,CAAG,EACpE,OAAIh4B,EAAM,OAAS,IAEfw6B,EAAUkF,EAAWzH,GAAkB,iCAAkC1Z,EAAQ,aAAc,CAAC,EAChGghB,EAAK,MAAQ,GACbC,EAAQD,EAAMzpC,EAAQkiC,CAAG,EAClB,CACH,iBAAkBh4B,EAClB,KAAAu/B,CACH,IAGDv/B,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHu/B,EAAK,MAAQv/B,EAAM,OAAS,GAC5Bw/B,EAAQD,EAAMG,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EAC7D,CACH,KAAAH,CACH,EACT,CACI,SAASU,EAAeP,EAAWr0C,EAAO,CACtC,MAAMkzB,EAAUmhB,EAAU,QAAS,EAC7BH,EAAOD,EAAU,EAA6B/gB,EAAQ,OAAQA,EAAQ,QAAQ,EACpF,OAAAghB,EAAK,MAAQl0C,EACbm0C,EAAQD,EAAMG,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EAC7DH,CACf,CACI,SAASW,EAAYR,EAAW,CAC5B,MAAMnhB,EAAUmhB,EAAU,QAAS,EAC7BS,EAAab,EAAU,EAA0B/gB,EAAQ,OAAQA,EAAQ,QAAQ,EACvF,IAAIve,EAAQ0/B,EAAU,UAAW,EACjC,GAAI1/B,EAAM,OAAS,EAA8B,CAC7C,MAAM6mB,EAASkZ,EAAoBL,CAAS,EAC5CS,EAAW,SAAWtZ,EAAO,KAC7B7mB,EAAQ6mB,EAAO,kBAAoB6Y,EAAU,UAAW,CACpE,CAUQ,OARI1/B,EAAM,OAAS,IACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHA,EAAQ0/B,EAAU,UAAW,EAEzB1/B,EAAM,OAAS,IACfA,EAAQ0/B,EAAU,UAAW,GAEzB1/B,EAAM,KAAI,CACd,IAAK,IACGA,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHmgC,EAAW,IAAMF,EAAeP,EAAW1/B,EAAM,OAAS,EAAE,EAC5D,MACJ,IAAK,GACGA,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHmgC,EAAW,IAAMP,EAAWF,EAAW1/B,EAAM,OAAS,EAAE,EACxD,MACJ,IAAK,GACGA,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHmgC,EAAW,IAAMR,EAAUD,EAAW1/B,EAAM,OAAS,EAAE,EACvD,MACJ,IAAK,GACGA,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHmgC,EAAW,IAAML,EAAaJ,EAAW1/B,EAAM,OAAS,EAAE,EAC1D,MACJ,QAAS,CAELw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,CAAC,EAC3F,MAAM6hB,EAAcV,EAAU,QAAS,EACjCW,EAAqBf,EAAU,EAA6Bc,EAAY,OAAQA,EAAY,QAAQ,EAC1G,OAAAC,EAAmB,MAAQ,GAC3Bb,EAAQa,EAAoBD,EAAY,OAAQA,EAAY,QAAQ,EACpED,EAAW,IAAME,EACjBb,EAAQW,EAAYC,EAAY,OAAQA,EAAY,QAAQ,EACrD,CACH,iBAAkBpgC,EAClB,KAAMmgC,CACT,CACjB,CACA,CACQ,OAAAX,EAAQW,EAAYT,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EACnE,CACH,KAAMS,CACT,CACT,CACI,SAASG,EAAaZ,EAAW,CAC7B,MAAMnhB,EAAUmhB,EAAU,QAAS,EAC7Ba,EAAchiB,EAAQ,cAAgB,EACtCmhB,EAAU,cAAa,EACvBnhB,EAAQ,OACRmgB,EAAWngB,EAAQ,cAAgB,EACnCA,EAAQ,OACRA,EAAQ,SACRghB,EAAOD,EAAU,EAA2BiB,EAAa7B,CAAQ,EACvEa,EAAK,MAAQ,CAAE,EACf,IAAId,EAAY,KACZoB,EAAS,KACb,EAAG,CACC,MAAM7/B,EAAQy+B,GAAaiB,EAAU,UAAW,EAEhD,OADAjB,EAAY,KACJz+B,EAAM,KAAI,CACd,IAAK,GACGA,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHu/B,EAAK,MAAM,KAAKE,EAAUC,EAAW1/B,EAAM,OAAS,EAAE,CAAC,EACvD,MACJ,IAAK,GACGA,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHu/B,EAAK,MAAM,KAAKI,EAAUD,EAAW1/B,EAAM,OAAS,EAAE,CAAC,EACvD,MACJ,IAAK,GACD6/B,EAAS,GACT,MACJ,IAAK,GACG7/B,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHu/B,EAAK,MAAM,KAAKK,EAAWF,EAAW1/B,EAAM,OAAS,GAAI,CAAC,CAAC6/B,CAAM,CAAC,EAC9DA,IACAR,EAASK,EAAW7H,GAAiB,kBAAmBtZ,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EACvG6/B,EAAS,MAEb,MACJ,IAAK,GACG7/B,EAAM,OAAS,MACfw6B,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGyhB,GAAgBhgC,CAAK,CAAC,EAEvHu/B,EAAK,MAAM,KAAKO,EAAaJ,EAAW1/B,EAAM,OAAS,EAAE,CAAC,EAC1D,MACJ,IAAK,GAAgC,CACjC,MAAM6mB,EAASqZ,EAAYR,CAAS,EACpCH,EAAK,MAAM,KAAK1Y,EAAO,IAAI,EAC3B4X,EAAY5X,EAAO,kBAAoB,KACvC,KACpB,CACA,CACA,OAAiBtI,EAAQ,cAAgB,IAC7BA,EAAQ,cAAgB,GAE5B,MAAMiiB,EAAYjiB,EAAQ,cAAgB,EACpCA,EAAQ,WACRmhB,EAAU,cAAe,EACzBf,EAASpgB,EAAQ,cAAgB,EACjCA,EAAQ,WACRmhB,EAAU,gBAAiB,EACjC,OAAAF,EAAQD,EAAMiB,EAAW7B,CAAM,EACxBY,CACf,CACI,SAASkB,EAAYf,EAAW5pC,EAAQkiC,EAAK0I,EAAS,CAClD,MAAMniB,EAAUmhB,EAAU,QAAS,EACnC,IAAIiB,EAAkBD,EAAQ,MAAM,SAAW,EAC/C,MAAMnB,EAAOD,EAAU,EAA0BxpC,EAAQkiC,CAAG,EAC5DuH,EAAK,MAAQ,CAAE,EACfA,EAAK,MAAM,KAAKmB,CAAO,EACvB,EAAG,CACC,MAAMxJ,EAAMoJ,EAAaZ,CAAS,EAC7BiB,IACDA,EAAkBzJ,EAAI,MAAM,SAAW,GAE3CqI,EAAK,MAAM,KAAKrI,CAAG,CAC/B,OAAiB3Y,EAAQ,cAAgB,IACjC,OAAIoiB,GACAnG,EAAUkF,EAAWzH,GAAkB,6BAA8BD,EAAK,CAAC,EAE/EwH,EAAQD,EAAMG,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EAC7DH,CACf,CACI,SAASqB,EAAclB,EAAW,CAC9B,MAAMnhB,EAAUmhB,EAAU,QAAS,EAC7B,CAAE,OAAA5pC,EAAQ,SAAA4oC,CAAQ,EAAKngB,EACvBmiB,EAAUJ,EAAaZ,CAAS,EACtC,OAAInhB,EAAQ,cAAgB,GACjBmiB,EAGAD,EAAYf,EAAW5pC,EAAQ4oC,EAAUgC,CAAO,CAEnE,CACI,SAASngC,EAAMghB,EAAQ,CACnB,MAAMme,EAAYzF,GAAgB1Y,EAAQnrB,GAAO,GAAIuJ,CAAO,CAAC,EACvD4e,EAAUmhB,EAAU,QAAS,EAC7BH,EAAOD,EAAU,EAA4B/gB,EAAQ,OAAQA,EAAQ,QAAQ,EACnF,OAAIjmB,GAAYinC,EAAK,MACjBA,EAAK,IAAI,OAAShe,GAEtBge,EAAK,KAAOqB,EAAclB,CAAS,EAC/B//B,EAAQ,aACR4/B,EAAK,SAAW5/B,EAAQ,WAAW4hB,CAAM,GAGzChD,EAAQ,cAAgB,IACxBic,EAAUkF,EAAWzH,GAAkB,4BAA6B1Z,EAAQ,aAAc,EAAGgD,EAAOhD,EAAQ,MAAM,GAAK,EAAE,EAE7HihB,EAAQD,EAAMG,EAAU,cAAa,EAAIA,EAAU,iBAAiB,EAC7DH,CACf,CACI,MAAO,CAAE,MAAAh/B,CAAO,CACpB,CACA,SAASy/B,GAAgBhgC,EAAO,CAC5B,GAAIA,EAAM,OAAS,GACf,MAAO,MAEX,MAAMjB,GAAQiB,EAAM,OAAS,IAAI,QAAQ,UAAW,KAAK,EACzD,OAAOjB,EAAK,OAAS,GAAKA,EAAK,MAAM,EAAG,CAAC,EAAI,IAAMA,CACvD,CAEA,SAAS8hC,GAAkBC,EAAKnhC,EAAU,CAAE,EAC1C,CACE,MAAM46B,EAAW,CACb,IAAAuG,EACA,QAAS,IAAI,GAChB,EAMD,MAAO,CAAE,QALO,IAAMvG,EAKJ,OAJFx7B,IACZw7B,EAAS,QAAQ,IAAIx7B,CAAI,EAClBA,EAEe,CAC9B,CACA,SAASgiC,GAAcC,EAAOC,EAAa,CACvC,QAASjyC,EAAI,EAAGA,EAAIgyC,EAAM,OAAQhyC,IAC9BkyC,GAAaF,EAAMhyC,CAAC,EAAGiyC,CAAW,CAE1C,CACA,SAASC,GAAa3B,EAAM0B,EAAa,CAErC,OAAQ1B,EAAK,KAAI,CACb,IAAK,GACDwB,GAAcxB,EAAK,MAAO0B,CAAW,EACrCA,EAAY,OAAO,QAAoC,EACvD,MACJ,IAAK,GACDF,GAAcxB,EAAK,MAAO0B,CAAW,EACrC,MACJ,IAAK,GAA0B,CAE3BC,GADe3B,EACK,IAAK0B,CAAW,EACpCA,EAAY,OAAO,QAAoC,EACvDA,EAAY,OAAO,MAAgC,EACnD,KACZ,CACQ,IAAK,GACDA,EAAY,OAAO,aAA8C,EACjEA,EAAY,OAAO,MAAgC,EACnD,MACJ,IAAK,GACDA,EAAY,OAAO,aAA8C,EACjEA,EAAY,OAAO,OAAkC,EACrD,KACZ,CAEA,CAEA,SAASE,GAAUL,EAAKnhC,EAAU,CAAE,EAClC,CACE,MAAMshC,EAAcJ,GAAkBC,CAAG,EACzCG,EAAY,OAAO,WAA0C,EAE7DH,EAAI,MAAQI,GAAaJ,EAAI,KAAMG,CAAW,EAE9C,MAAM1iB,EAAU0iB,EAAY,QAAS,EACrCH,EAAI,QAAU,MAAM,KAAKviB,EAAQ,OAAO,CAC5C,CAEA,SAAS6iB,GAASN,EAAK,CACnB,MAAM3P,EAAO2P,EAAI,KACjB,OAAI3P,EAAK,OAAS,EACdkQ,GAAoBlQ,CAAI,EAGxBA,EAAK,MAAM,QAAQ5a,GAAK8qB,GAAoB9qB,CAAC,CAAC,EAE3CuqB,CACX,CACA,SAASO,GAAoB7/B,EAAS,CAClC,GAAIA,EAAQ,MAAM,SAAW,EAAG,CAC5B,MAAMu1B,EAAOv1B,EAAQ,MAAM,CAAC,GACxBu1B,EAAK,OAAS,GAA0BA,EAAK,OAAS,KACtDv1B,EAAQ,OAASu1B,EAAK,MACtB,OAAOA,EAAK,MAExB,KACS,CACD,MAAM1iC,EAAS,CAAE,EACjB,QAASrF,EAAI,EAAGA,EAAIwS,EAAQ,MAAM,OAAQxS,IAAK,CAC3C,MAAM+nC,EAAOv1B,EAAQ,MAAMxS,CAAC,EAI5B,GAHI,EAAE+nC,EAAK,OAAS,GAA0BA,EAAK,OAAS,IAGxDA,EAAK,OAAS,KACd,MAEJ1iC,EAAO,KAAK0iC,EAAK,KAAK,CAClC,CACQ,GAAI1iC,EAAO,SAAWmN,EAAQ,MAAM,OAAQ,CACxCA,EAAQ,OAASo1B,GAAKviC,CAAM,EAC5B,QAASrF,EAAI,EAAGA,EAAIwS,EAAQ,MAAM,OAAQxS,IAAK,CAC3C,MAAM+nC,EAAOv1B,EAAQ,MAAMxS,CAAC,GACxB+nC,EAAK,OAAS,GAA0BA,EAAK,OAAS,IACtD,OAAOA,EAAK,KAEhC,CACA,CACA,CACA,CAEA,MAAMuK,GAAiB,WAEvB,SAASC,GAAOhC,EAAM,CAElB,OADAA,EAAK,EAAIA,EAAK,KACNA,EAAK,KAAI,CACb,IAAK,GAA4B,CAC7B,MAAMiC,EAAWjC,EACjBgC,GAAOC,EAAS,IAAI,EACpBA,EAAS,EAAIA,EAAS,KACtB,OAAOA,EAAS,KAChB,KACZ,CACQ,IAAK,GAA0B,CAC3B,MAAMvD,EAASsB,EACTkC,EAAQxD,EAAO,MACrB,QAASjvC,EAAI,EAAGA,EAAIyyC,EAAM,OAAQzyC,IAC9BuyC,GAAOE,EAAMzyC,CAAC,CAAC,EAEnBivC,EAAO,EAAIwD,EACX,OAAOxD,EAAO,MACd,KACZ,CACQ,IAAK,GAA2B,CAC5B,MAAMz8B,EAAU+9B,EACV1I,EAAQr1B,EAAQ,MACtB,QAASxS,EAAI,EAAGA,EAAI6nC,EAAM,OAAQ7nC,IAC9BuyC,GAAO1K,EAAM7nC,CAAC,CAAC,EAEnBwS,EAAQ,EAAIq1B,EACZ,OAAOr1B,EAAQ,MACXA,EAAQ,SACRA,EAAQ,EAAIA,EAAQ,OACpB,OAAOA,EAAQ,QAEnB,KACZ,CACQ,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GAA6B,CAC9B,MAAMkgC,EAAYnC,EACdmC,EAAU,QACVA,EAAU,EAAIA,EAAU,MACxB,OAAOA,EAAU,OAErB,KACZ,CACQ,IAAK,GAA0B,CAC3B,MAAMC,EAASpC,EACfgC,GAAOI,EAAO,GAAG,EACjBA,EAAO,EAAIA,EAAO,IAClB,OAAOA,EAAO,IACVA,EAAO,WACPJ,GAAOI,EAAO,QAAQ,EACtBA,EAAO,EAAIA,EAAO,SAClB,OAAOA,EAAO,UAElB,KACZ,CACQ,IAAK,GAAwB,CACzB,MAAMryB,EAAOiwB,EACbjwB,EAAK,EAAIA,EAAK,MACd,OAAOA,EAAK,MACZ,KACZ,CACQ,IAAK,GAAyB,CAC1B,MAAMsyB,EAAQrC,EACdqC,EAAM,EAAIA,EAAM,IAChB,OAAOA,EAAM,IACb,KACZ,CACQ,QAEQ,MAAMzJ,GAAmBF,GAAkB,6BAA8B,KAAM,CAC3E,OAAQqJ,GACR,KAAM,CAAC/B,EAAK,IAAI,CACpC,CAAiB,CAEjB,CACI,OAAOA,EAAK,IAChB,CAKA,MAAMsC,GAAe,SACrB,SAASC,GAAoBhB,EAAKnhC,EAAS,CACvC,KAAM,CAAE,UAAAoiC,EAAW,SAAAC,EAAU,cAAAC,EAAe,WAAYC,CAAW,EAAKviC,EAClErH,EAAWqH,EAAQ,WAAa,GAChC46B,EAAW,CACb,SAAAyH,EACA,KAAM,GACN,OAAQ,EACR,KAAM,EACN,OAAQ,EACR,IAAK,OACL,cAAAC,EACA,WAAYC,EACZ,YAAa,CAChB,EACG5pC,GAAYwoC,EAAI,MAChBvG,EAAS,OAASuG,EAAI,IAAI,QAE9B,MAAMviB,EAAU,IAAMgc,EACtB,SAAS18B,EAAKskB,EAAMod,EAAM,CACtBhF,EAAS,MAAQpY,CACzB,CACI,SAASggB,EAAS7rB,EAAG8rB,EAAgB,GAAM,CACvC,MAAMC,EAAiBD,EAAgBH,EAAgB,GACvDpkC,EAAKqkC,EAAcG,EAAiB,KAAK,OAAO/rB,CAAC,EAAI+rB,CAAc,CAC3E,CACI,SAASC,EAAOC,EAAc,GAAM,CAChC,MAAMC,EAAQ,EAAEjI,EAAS,YACzBgI,GAAeJ,EAASK,CAAK,CACrC,CACI,SAASC,EAASF,EAAc,GAAM,CAClC,MAAMC,EAAQ,EAAEjI,EAAS,YACzBgI,GAAeJ,EAASK,CAAK,CACrC,CACI,SAASE,GAAU,CACfP,EAAS5H,EAAS,WAAW,CACrC,CAGI,MAAO,CACH,QAAAhc,EACA,KAAA1gB,EACA,OAAAykC,EACA,SAAAG,EACA,QAAAC,EACA,OARYt3C,GAAQ,IAAIA,CAAG,GAS3B,WARe,IAAMmvC,EAAS,UASjC,CACL,CACA,SAASoI,GAAmBC,EAAWrD,EAAM,CACzC,KAAM,CAAE,OAAAsD,CAAM,EAAKD,EACnBA,EAAU,KAAK,GAAGC,EAAO,QAAQ,CAA4B,GAAG,EAChEC,GAAaF,EAAWrD,EAAK,GAAG,EAC5BA,EAAK,UACLqD,EAAU,KAAK,IAAI,EACnBE,GAAaF,EAAWrD,EAAK,QAAQ,EACrCqD,EAAU,KAAK,SAAS,GAGxBA,EAAU,KAAK,oBAAoB,EAEvCA,EAAU,KAAK,GAAG,CACtB,CACA,SAASG,GAAoBH,EAAWrD,EAAM,CAC1C,KAAM,CAAE,OAAAsD,EAAQ,WAAAG,CAAU,EAAKJ,EAC/BA,EAAU,KAAK,GAAGC,EAAO,WAAW,CAA+B,IAAI,EACvED,EAAU,OAAOI,GAAY,EAC7B,MAAM16B,EAASi3B,EAAK,MAAM,OAC1B,QAAS,EAAI,EAAG,EAAIj3B,IAChBw6B,GAAaF,EAAWrD,EAAK,MAAM,CAAC,CAAC,EACjC,IAAMj3B,EAAS,GAFK,IAKxBs6B,EAAU,KAAK,IAAI,EAEvBA,EAAU,SAASI,GAAY,EAC/BJ,EAAU,KAAK,IAAI,CACvB,CACA,SAASK,GAAmBL,EAAWrD,EAAM,CACzC,KAAM,CAAE,OAAAsD,EAAQ,WAAAG,CAAU,EAAKJ,EAC/B,GAAIrD,EAAK,MAAM,OAAS,EAAG,CACvBqD,EAAU,KAAK,GAAGC,EAAO,QAAQ,CAA4B,IAAI,EACjED,EAAU,OAAOI,GAAY,EAC7B,MAAM16B,EAASi3B,EAAK,MAAM,OAC1B,QAAS,EAAI,EAAG,EAAIj3B,IAChBw6B,GAAaF,EAAWrD,EAAK,MAAM,CAAC,CAAC,EACjC,IAAMj3B,EAAS,GAFK,IAKxBs6B,EAAU,KAAK,IAAI,EAEvBA,EAAU,SAASI,GAAY,EAC/BJ,EAAU,KAAK,IAAI,CAC3B,CACA,CACA,SAASM,GAAiBN,EAAWrD,EAAM,CACnCA,EAAK,KACLuD,GAAaF,EAAWrD,EAAK,IAAI,EAGjCqD,EAAU,KAAK,MAAM,CAE7B,CACA,SAASE,GAAaF,EAAWrD,EAAM,CACnC,KAAM,CAAE,OAAAsD,CAAM,EAAKD,EACnB,OAAQrD,EAAK,KAAI,CACb,IAAK,GACD2D,GAAiBN,EAAWrD,CAAI,EAChC,MACJ,IAAK,GACD0D,GAAmBL,EAAWrD,CAAI,EAClC,MACJ,IAAK,GACDwD,GAAoBH,EAAWrD,CAAI,EACnC,MACJ,IAAK,GACDoD,GAAmBC,EAAWrD,CAAI,EAClC,MACJ,IAAK,GACDqD,EAAU,KAAK,KAAK,UAAUrD,EAAK,KAAK,EAAGA,CAAI,EAC/C,MACJ,IAAK,GACDqD,EAAU,KAAK,KAAK,UAAUrD,EAAK,KAAK,EAAGA,CAAI,EAC/C,MACJ,IAAK,GACDqD,EAAU,KAAK,GAAGC,EAAO,aAAa,CAAiC,IAAIA,EAAO,MAAgC,KAAItD,EAAK,KAAK,KAAMA,CAAI,EAC1I,MACJ,IAAK,GACDqD,EAAU,KAAK,GAAGC,EAAO,aAA8C,KAAIA,EAAO,OAAkC,KAAI,KAAK,UAAUtD,EAAK,GAAG,CAAC,KAAMA,CAAI,EAC1J,MACJ,IAAK,GACDqD,EAAU,KAAK,KAAK,UAAUrD,EAAK,KAAK,EAAGA,CAAI,EAC/C,MACJ,IAAK,GACDqD,EAAU,KAAK,KAAK,UAAUrD,EAAK,KAAK,EAAGA,CAAI,EAC/C,MACJ,QAEQ,MAAMpH,GAAmBF,GAAkB,4BAA6B,KAAM,CAC1E,OAAQ4J,GACR,KAAM,CAACtC,EAAK,IAAI,CACpC,CAAiB,CAEjB,CACA,CAEA,MAAM4D,GAAW,CAACrC,EAAKnhC,EAAU,CAAE,IAC9B,CACD,MAAMyjC,EAAOpmB,GAASrd,EAAQ,IAAI,EAAIA,EAAQ,KAAO,SAC/CqiC,EAAWhlB,GAASrd,EAAQ,QAAQ,EACpCA,EAAQ,SACR,eACAoiC,EAAY,CAAC,CAACpiC,EAAQ,UAEtBsiC,EAAgBtiC,EAAQ,eAAiB,KACzCA,EAAQ,cACRyjC,IAAS,QACL,IACA;AAAA,EACJJ,EAAarjC,EAAQ,WAAaA,EAAQ,WAAayjC,IAAS,QAChE7d,EAAUub,EAAI,SAAW,CAAE,EAC3B8B,EAAYd,GAAoBhB,EAAK,CACvC,KAAAsC,EACA,SAAApB,EACA,UAAAD,EACA,cAAAE,EACA,WAAAe,CACR,CAAK,EACDJ,EAAU,KAAKQ,IAAS,SAAW,2BAA6B,YAAY,EAC5ER,EAAU,OAAOI,CAAU,EACvBzd,EAAQ,OAAS,IACjBqd,EAAU,KAAK,WAAWhM,GAAKrR,EAAQ,IAAI9O,GAAK,GAAGA,CAAC,MAAMA,CAAC,EAAE,EAAG,IAAI,CAAC,UAAU,EAC/EmsB,EAAU,QAAS,GAEvBA,EAAU,KAAK,SAAS,EACxBE,GAAaF,EAAW9B,CAAG,EAC3B8B,EAAU,SAASI,CAAU,EAC7BJ,EAAU,KAAK,GAAG,EAClB,OAAO9B,EAAI,QACX,KAAM,CAAE,KAAA3e,EAAM,IAAAl2B,GAAQ22C,EAAU,QAAS,EACzC,MAAO,CACH,IAAA9B,EACA,KAAA3e,EACA,IAAKl2B,EAAMA,EAAI,OAAQ,EAAG,MAC7B,CACL,EAEA,SAASo3C,GAAY9hB,EAAQ5hB,EAAU,GAAI,CACvC,MAAM2jC,EAAkBltC,GAAO,CAAE,EAAEuJ,CAAO,EACpC4jC,EAAM,CAAC,CAACD,EAAgB,IACxBE,EAAe,CAAC,CAACF,EAAgB,OACjCG,EAAiBH,EAAgB,UAAY,KAAO,GAAOA,EAAgB,SAG3ExC,EADS5B,GAAaoE,CAAe,EACxB,MAAM/hB,CAAM,EAC/B,OAAKgiB,GAQDE,GAAkBrC,GAASN,CAAG,EAE9B0C,GAAgBjC,GAAOT,CAAG,EAEnB,CAAE,IAAAA,EAAK,KAAM,EAAI,IAVxBK,GAAUL,EAAKwC,CAAe,EAEvBH,GAASrC,EAAKwC,CAAe,EAU5C,CCtlDA;AAAA;AAAA;AAAA;AAAA,IAaA,SAASI,IAAmB,CACpB,OAAO,2BAA8B,YACrCpN,GAAA,EAAgB,0BAA4B,GAQpD,CAEA,MAAMqN,GAAoB,CAAC,EAC3BA,GAAiB,CAA0B,EAAI,CAC1C,EAAoC,CAAC,CAA0B,EAC/D,EAAgC,CAAC,EAAyB,CAAsB,EAChF,IAAuC,CAAC,CAA0B,EAClE,EAAsC,CAAC,EAC5C,EACAA,GAAiB,CAAsB,EAAI,CACtC,EAAoC,CAAC,CAAsB,EAC3D,IAA8B,CAAC,CAA2B,EAC1D,IAAuC,CAAC,CAA0B,EAClE,EAAsC,CAAC,EAC5C,EACAA,GAAiB,CAA2B,EAAI,CAC3C,EAAoC,CAAC,CAA2B,EAChE,EAAgC,CAAC,EAAyB,CAAsB,EAChF,EAA+B,CAAC,EAAyB,EAC9D,EACAA,GAAiB,CAAuB,EAAI,CACvC,EAAgC,CAAC,EAAyB,CAAsB,EAChF,EAA+B,CAAC,EAAyB,CAAsB,EAC/E,EAAoC,CAAC,EAAwB,CAAoB,EACjF,IAA8B,CAAC,EAA6B,CAAoB,EAChF,IAAuC,CAAC,EAA4B,CAAoB,EACxF,EAAsC,CAAC,EAA2B,EACvE,EACAA,GAAiB,CAA0B,EAAI,CAC1C,IAAuC,CAAC,EAAgC,CAAsB,EAC9F,IAAwC,CAAC,EAAgC,CAAsB,EAC/F,IAAuC,CACpC,EACA,CACJ,EACC,IAAwC,CAAC,EAAwB,CAA6B,EAC9F,EAAsC,EACtC,EAA+B,CAAC,EAA4B,EACjE,EACAA,GAAiB,CAA8B,EAAI,CAC9C,IAAuC,CAAC,EAA4B,CAAsB,EAC1F,EAAsC,EACtC,EAA+B,CAAC,EAAgC,EACrE,EACAA,GAAiB,CAA8B,EAAI,CAC9C,IAAwC,CAAC,EAA4B,CAAsB,EAC3F,EAAsC,EACtC,EAA+B,CAAC,EAAgC,EACrE,EAIA,MAAMC,GAAiB,kDACvB,SAASzG,GAAU0G,EAAK,CACb,OAAAD,GAAe,KAAKC,CAAG,CAClC,CAIA,SAASC,GAAYvnB,EAAK,CAChB,MAAAnjB,EAAImjB,EAAI,WAAW,CAAC,EACpBljB,EAAIkjB,EAAI,WAAWA,EAAI,OAAS,CAAC,EAChC,OAAAnjB,IAAMC,IAAMD,IAAM,IAAQA,IAAM,IAAQmjB,EAAI,MAAM,EAAG,EAAE,EAAIA,CACtE,CAIA,SAASwnB,GAAgBjJ,EAAI,CACrB,GAAoBA,GAAO,KACpB,UAGX,OADaA,EAAG,WAAW,CAAC,EACd,CACV,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACM,OAAAA,EACX,IAAK,IACL,IAAK,IACL,IAAK,IACM,UACX,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,OACL,IAAK,MACL,IAAK,MACM,UAER,SACX,CAMA,SAASkJ,GAAc7rC,EAAM,CACnB,MAAA8rC,EAAU9rC,EAAK,KAAK,EAEtB,OAAAA,EAAK,OAAO,CAAC,IAAM,KAAO,MAAM,SAASA,CAAI,CAAC,EACvC,GAEJglC,GAAU8G,CAAO,EAClBH,GAAYG,CAAO,EACnB,IAAmCA,CAC7C,CAIA,SAAS1jC,GAAMpI,EAAM,CACjB,MAAMtI,EAAO,CAAC,EACd,IAAI0E,EAAQ,GACR6uC,EAAO,EACPc,EAAe,EACf3tB,EACAnrB,EACA+4C,EACAhlC,EACAilC,EACA9vB,EACA+vB,EACJ,MAAMzxB,EAAU,CAAC,EACjBA,EAAQ,GAA0B,IAAM,CAChCxnB,IAAQ,OACFA,EAAA+4C,EAGC/4C,GAAA+4C,CAEf,EACAvxB,EAAQ,GAAwB,IAAM,CAC9BxnB,IAAQ,SACRyE,EAAK,KAAKzE,CAAG,EACPA,EAAA,OAEd,EACAwnB,EAAQ,GAAsC,IAAM,CAChDA,EAAQ,GAAwB,EAChCsxB,GACJ,EACAtxB,EAAQ,GAAiC,IAAM,CAC3C,GAAIsxB,EAAe,EACfA,IACOd,EAAA,EACPxwB,EAAQ,GAAwB,MAE/B,CAMD,GALesxB,EAAA,EACX94C,IAAQ,SAGZA,EAAM44C,GAAc54C,CAAG,EACnBA,IAAQ,IACD,SAGPwnB,EAAQ,GAAsB,CAClC,CAER,EACA,SAAS0xB,GAAqB,CACpB,MAAAC,EAAWpsC,EAAK5D,EAAQ,CAAC,EAC/B,GAAK6uC,IAAS,GACVmB,IAAa,KACZnB,IAAS,GACNmB,IAAa,IACjB,OAAAhwC,IACA4vC,EAAU,KAAOI,EACjB3xB,EAAQ,GAAwB,EACzB,EACX,CAEJ,KAAOwwB,IAAS,MAGR,GAFJ7uC,IACAgiB,EAAIpe,EAAK5D,CAAK,EACV,EAAAgiB,IAAM,MAAQ+tB,KAWd,IARJnlC,EAAO4kC,GAAgBxtB,CAAC,EACxB8tB,EAAUV,GAAiBP,CAAI,EAClBgB,EAAAC,EAAQllC,CAAI,GAAKklC,EAAQ,GAAiC,EAEnED,IAAe,IAGnBhB,EAAOgB,EAAW,CAAC,EACfA,EAAW,CAAC,IAAM,SACT9vB,EAAA1B,EAAQwxB,EAAW,CAAC,CAAC,EAC1B9vB,IACU6vB,EAAA5tB,EACNjC,MAAa,MACb,OAKZ,GAAI8uB,IAAS,EACF,OAAAvzC,EAGnB,CAEA,MAAMwsB,OAAY,IAclB,SAASmoB,GAAoBhzC,EAAK2G,EAAM,CACpC,OAAO+kB,GAAS1rB,CAAG,EAAIA,EAAI2G,CAAI,EAAI,IACvC,CAcA,SAASssC,GAAejzC,EAAK2G,EAAM,CAE3B,IAAC+kB,GAAS1rB,CAAG,EACN,YAGP,IAAAkzC,EAAMroB,GAAM,IAAIlkB,CAAI,EAQxB,GAPKusC,IACDA,EAAMnkC,GAAMpI,CAAI,EACZusC,GACMroB,GAAA,IAAIlkB,EAAMusC,CAAG,GAIvB,CAACA,EACM,YAGX,MAAM30B,EAAM20B,EAAI,OAChB,IAAIvjC,EAAO3P,EACP,EAAI,EACR,KAAO,EAAIue,GAAK,CACZ,MAAM6M,EAAMzb,EAAKujC,EAAI,CAAC,CAAC,EAInB,GAHA9nB,IAAQ,QAGRC,GAAW1b,CAAI,EACR,YAEJA,EAAAyb,EACP,IAEG,OAAAzb,CACX,CAEA,MAAMwjC,GAAoBpoB,GAAQA,EAC5BqoB,GAAmBnK,GAAQ,GAC3BoK,GAA4B,OAC5BC,GAAqBzwC,GAAWA,EAAO,SAAW,EAAI,GAAKuiC,GAAKviC,CAAM,EACtE0wC,GAAsBpO,GAC5B,SAASqO,GAAcC,EAAQC,EAAe,CAE1C,OADSD,EAAA,KAAK,IAAIA,CAAM,EACpBC,IAAkB,EAEXD,EACDA,EAAS,EACL,EACA,EACJ,EAEHA,EAAS,KAAK,IAAIA,EAAQ,CAAC,EAAI,CAC1C,CACA,SAASE,GAAexlC,EAAS,CAE7B,MAAMpL,EAAQ0oB,GAAStd,EAAQ,WAAW,EACpCA,EAAQ,YACR,GAEN,OAAOA,EAAQ,QAAUsd,GAAStd,EAAQ,MAAM,KAAK,GAAKsd,GAAStd,EAAQ,MAAM,CAAC,GAC5Esd,GAAStd,EAAQ,MAAM,KAAK,EACxBA,EAAQ,MAAM,MACdsd,GAAStd,EAAQ,MAAM,CAAC,EACpBA,EAAQ,MAAM,EACdpL,EACRA,CACV,CACA,SAAS6wC,GAAeC,EAAa5gC,EAAO,CACnCA,EAAM,QACPA,EAAM,MAAQ4gC,GAEb5gC,EAAM,IACPA,EAAM,EAAI4gC,EAElB,CACA,SAASC,GAAqB3lC,EAAU,GAAI,CACxC,MAAMo2B,EAASp2B,EAAQ,OACjB0lC,EAAcF,GAAexlC,CAAO,EACpC4lC,EAAaroB,GAASvd,EAAQ,WAAW,GAC3Cqd,GAAS+Y,CAAM,GACflZ,GAAWld,EAAQ,YAAYo2B,CAAM,CAAC,EACpCp2B,EAAQ,YAAYo2B,CAAM,EAC1BiP,GACAQ,EAAgBtoB,GAASvd,EAAQ,WAAW,GAC9Cqd,GAAS+Y,CAAM,GACflZ,GAAWld,EAAQ,YAAYo2B,CAAM,CAAC,EACpCiP,GACA,OACA/G,EAAU7F,GACLA,EAASmN,EAAWF,EAAajN,EAAS,OAAQoN,CAAa,CAAC,EAErEC,EAAQ9lC,EAAQ,MAAQ,CAAC,EACzB2P,EAAQ/a,GAAUkxC,EAAMlxC,CAAK,EAE7BmxC,EAAS/lC,EAAQ,OAASnK,GAAO,EACvCynB,GAAStd,EAAQ,WAAW,GAAKylC,GAAeC,EAAaK,CAAM,EACnE,MAAM9D,EAASx2C,GAAQs6C,EAAOt6C,CAAG,EACjC,SAASoW,EAAQpW,EAAK,CAElB,MAAM8rC,EAAMra,GAAWld,EAAQ,QAAQ,EACjCA,EAAQ,SAASvU,CAAG,EACpB8xB,GAASvd,EAAQ,QAAQ,EACrBA,EAAQ,SAASvU,CAAG,EACpB,GACH,OAAC8rC,IACFv3B,EAAQ,OACJA,EAAQ,OAAO,QAAQvU,CAAG,EAC1Bw5C,GACJ,CAEJ,MAAAe,EAAa5mC,GAASY,EAAQ,UAC9BA,EAAQ,UAAUZ,CAAI,EACtB4lC,GACAiB,EAAYn1B,GAAc9Q,EAAQ,SAAS,GAAKkd,GAAWld,EAAQ,UAAU,SAAS,EACtFA,EAAQ,UAAU,UAClBmlC,GACAe,EAAcp1B,GAAc9Q,EAAQ,SAAS,GAC/Ckd,GAAWld,EAAQ,UAAU,WAAW,EACtCA,EAAQ,UAAU,YAClBolC,GACA5lC,EAAOsR,GAAc9Q,EAAQ,SAAS,GAAKqd,GAASrd,EAAQ,UAAU,IAAI,EAC1EA,EAAQ,UAAU,KAClBklC,GA8BApK,EAAM,CACP,KAAkCnrB,EAClC,MAAoCsyB,EACpC,OAAsC3D,EACtC,OAjCU,CAAC7yC,KAAQwmB,IAAS,CACvB,MAACgW,EAAMC,CAAI,EAAIjW,EACrB,IAAIzS,EAAO,OACP2mC,EAAW,GACXl0B,EAAK,SAAW,EACZsL,GAAS0K,CAAI,GACbke,EAAWle,EAAK,UAAYke,EAC5B3mC,EAAOyoB,EAAK,MAAQzoB,GAEf6d,GAAS4K,CAAI,IAClBke,EAAWle,GAAQke,GAGlBl0B,EAAK,SAAW,IACjBoL,GAAS4K,CAAI,IACbke,EAAWle,GAAQke,GAEnB9oB,GAAS6K,CAAI,IACb1oB,EAAO0oB,GAAQ1oB,IAGvB,MAAMyV,EAAMpT,EAAQpW,CAAG,EAAEqvC,CAAG,EACtBvD,EAEN/3B,IAAS,SAAW1I,GAAQme,CAAG,GAAKkxB,EAC9BlxB,EAAI,CAAC,EACLA,EACN,OAAOkxB,EAAWH,EAAUG,CAAQ,EAAE5O,EAAK/3B,CAAI,EAAI+3B,CACvD,EAMK,QAAwC11B,EACxC,KAAkCrC,EAClC,YAAgD0mC,EAChD,UAA4CD,EAC5C,OAAsCxvC,GAAOZ,KAAUiwC,EAAOC,CAAM,CACzE,EACO,OAAAjL,CACX,CAEA,IAAIsL,GAAW,KACf,SAASC,GAAgBC,EAAM,CAChBF,GAAAE,CACf,CAIA,SAASC,GAAiBC,EAAMnT,EAAStuB,EAAM,CAGvCqhC,OAAS,KAAK,YAAiD,CAC3D,UAAW,KAAK,IAAI,EACpB,KAAAI,EACA,QAAAnT,EACA,KAAAtuB,CAAA,CACH,CACT,CACA,MAAM0hC,GAAmCC,GAAmB,oBAAiE,EAC7H,SAASA,GAAmBJ,EAAM,CAC9B,OAAQK,GAAaP,IAAYA,GAAS,KAAKE,EAAMK,CAAQ,CACjE,CAEA,MAAMC,GAAS1O,GAAiB,iBAC1B2O,GAAQxP,GAAYuP,EAAM,EAC1BE,GAAgB,CAClB,cAAeF,GACf,sBAAuBC,GAAM,EAC7B,qBAAsBA,GAAM,EAC5B,0BAA2BA,GAAM,EACjC,mBAAoBA,GAAM,EAC1B,wBAAyBA,GAAM,EAC/B,qCAAsCA,GAAM,EAC5C,iBAAkBA,GAAM,CAC5B,EAeMrkB,GAAO8V,GAAkB,iBACzByO,GAAM1P,GAAY7U,EAAI,EACtBwkB,GAAiB,CACnB,iBAAkBxkB,GAClB,sBAAuBukB,GAAI,EAC3B,0BAA2BA,GAAI,EAC/B,+BAAgCA,GAAI,EACpC,iCAAkCA,GAAI,EACtC,kCAAmCA,GAAI,EACvC,wBAAyBA,GAAI,EAC7B,iBAAkBA,GAAI,CAC1B,EACA,SAASE,GAAgBzkB,EAAM,CACpB,OAAAgW,GAAmBhW,EAAM,KAA8E,MAAS,CAC3H,CAcA,SAAS0kB,GAAUtoB,EAAS5e,EAAS,CAC1B,OAAAA,EAAQ,QAAU,KACnBmnC,GAAcnnC,EAAQ,MAAM,EAC5BmnC,GAAcvoB,EAAQ,MAAM,CACtC,CACA,IAAIwoB,GAEJ,SAASD,GAAc/Q,EAAQ,CACvB,GAAA/Y,GAAS+Y,CAAM,EACR,OAAAA,EAGH,GAAAlZ,GAAWkZ,CAAM,EAAG,CAChB,GAAAA,EAAO,cAAgBgR,IAAkB,KAClC,OAAAA,GAEF,GAAAhR,EAAO,YAAY,OAAS,WAAY,CAC7C,MAAMhyB,EAAUgyB,EAAO,EACnB,GAAAU,GAAU1yB,CAAO,EACX,MAAA6iC,GAAgBD,GAAe,gCAAgC,EAEzE,OAAQI,GAAiBhjC,CAAA,KAGnB,OAAA6iC,GAAgBD,GAAe,iCAAiC,CAC1E,KAGM,OAAAC,GAAgBD,GAAe,uBAAuB,CAGxE,CAiBA,SAASK,GAAmBvM,EAAKpoC,EAAUqlC,EACzC,CAES,OAAC,GAAG,IAAI,IAAI,CACXA,EACA,GAAIjhC,GAAQpE,CAAQ,EACdA,EACA6qB,GAAS7qB,CAAQ,EACb,OAAO,KAAKA,CAAQ,EACpB2qB,GAAS3qB,CAAQ,EACb,CAACA,CAAQ,EACT,CAACqlC,CAAK,EACvB,CAAC,CACV,CAiBA,SAASuP,GAAwBxM,EAAKpoC,EAAUqlC,EAAO,CACnD,MAAMwP,EAAclqB,GAAS0a,CAAK,EAAIA,EAAQyP,GACxC5oB,EAAUkc,EACXlc,EAAQ,qBACDA,EAAA,uBAAyB,KAErC,IAAI4V,EAAQ5V,EAAQ,mBAAmB,IAAI2oB,CAAW,EACtD,GAAI,CAAC/S,EAAO,CACRA,EAAQ,CAAC,EAEL,IAAAiT,EAAQ,CAAC1P,CAAK,EAEX,KAAAjhC,GAAQ2wC,CAAK,GACRA,EAAAC,GAAmBlT,EAAOiT,EAAO/0C,CAAQ,EAIrD,MAAMsS,EAAWlO,GAAQpE,CAAQ,GAAK,CAACoe,GAAcpe,CAAQ,EACvDA,EACAA,EAAS,QACLA,EAAS,QACT,KAEV+0C,EAAQpqB,GAASrY,CAAQ,EAAI,CAACA,CAAQ,EAAIA,EACtClO,GAAQ2wC,CAAK,GACMC,GAAAlT,EAAOiT,EAAO,EAAK,EAElC7oB,EAAA,mBAAmB,IAAI2oB,EAAa/S,CAAK,EAE9C,OAAAA,CACX,CACA,SAASkT,GAAmBlT,EAAOiT,EAAOE,EAAQ,CAC9C,IAAIC,EAAS,GACJ,QAAAv4C,EAAI,EAAGA,EAAIo4C,EAAM,QAAUjqB,GAAUoqB,CAAM,EAAGv4C,IAAK,CAClD,MAAA+mC,EAASqR,EAAMp4C,CAAC,EAClBguB,GAAS+Y,CAAM,IACfwR,EAASC,GAAoBrT,EAAOiT,EAAMp4C,CAAC,EAAGs4C,CAAM,EACxD,CAEG,OAAAC,CACX,CACA,SAASC,GAAoBrT,EAAO4B,EAAQuR,EAAQ,CAC5C,IAAAC,EACE,MAAA7lC,EAASq0B,EAAO,MAAM,GAAG,EAC5B,GACO,MAAA7qC,EAASwW,EAAO,KAAK,GAAG,EACrB6lC,EAAAE,GAAkBtT,EAAOjpC,EAAQo8C,CAAM,EACzC5lC,EAAA,OAAO,GAAI,CAAC,QACdA,EAAO,QAAU6lC,IAAW,IAC9B,OAAAA,CACX,CACA,SAASE,GAAkBtT,EAAOjpC,EAAQo8C,EAAQ,CAC9C,IAAIC,EAAS,GACb,GAAI,CAACpT,EAAM,SAASjpC,CAAM,IACbq8C,EAAA,GACLr8C,GAAQ,CACRq8C,EAASr8C,EAAOA,EAAO,OAAS,CAAC,IAAM,IACvC,MAAM6qC,EAAS7qC,EAAO,QAAQ,KAAM,EAAE,EACtCipC,EAAM,KAAK4B,CAAM,GACZt/B,GAAQ6wC,CAAM,GAAK72B,GAAc62B,CAAM,IACxCA,EAAOvR,CAAM,IAGbwR,EAASD,EAAOvR,CAAM,EAC1B,CAGD,OAAAwR,CACX,CAOA,MAAM3U,GAAU,SACV8U,GAAe,GACfP,GAAiB,QACjBQ,GAAwB,GACxBC,GAAcrrB,GAAQ,GAAGA,EAAI,OAAO,CAAC,EAAE,kBAAmB,IAAGA,EAAI,OAAO,CAAC,CAAC,GAChF,SAASsrB,IAA4B,CAC1B,OACH,MAAO,CAACjrB,EAAKzd,IAEFA,IAAS,QAAU6d,GAASJ,CAAG,EAChCA,EAAI,cACJzd,IAAS,SAAW+d,GAASN,CAAG,GAAK,gBAAiBA,EAClDA,EAAI,SAAS,cACbA,EAEd,MAAO,CAACA,EAAKzd,IAEFA,IAAS,QAAU6d,GAASJ,CAAG,EAChCA,EAAI,cACJzd,IAAS,SAAW+d,GAASN,CAAG,GAAK,gBAAiBA,EAClDA,EAAI,SAAS,cACbA,EAEd,WAAY,CAACA,EAAKzd,IAENA,IAAS,QAAU6d,GAASJ,CAAG,EACjCgrB,GAAWhrB,CAAG,EACdzd,IAAS,SAAW+d,GAASN,CAAG,GAAK,gBAAiBA,EAClDgrB,GAAWhrB,EAAI,QAAQ,EACvBA,CAElB,CACJ,CACA,IAAIkrB,GACJ,SAASC,GAAwBC,EAAU,CAC3BF,GAAAE,CAChB,CACA,IAAIC,GAQJ,SAASC,GAAwBC,EAAU,CAC3BF,GAAAE,CAChB,CACA,IAAIC,GAQJ,SAASC,GAAyBC,EAAY,CAC5BF,GAAAE,CAClB,CAEA,IAAIC,GAAmB,KAEvB,MAAMC,GAAqB9jC,GAAS,CACd6jC,GAAA7jC,CACtB,EAEM+jC,GAAoB,IAAMF,GAChC,IAAIG,GAAmB,KACvB,MAAMC,GAAsBpqB,GAAY,CACjBmqB,GAAAnqB,CACvB,EACMqqB,GAAqB,IAAMF,GAEjC,IAAIG,GAAO,EACX,SAASC,GAAkBnpC,EAAU,GAAI,CAErC,MAAMw/B,EAAStiB,GAAWld,EAAQ,MAAM,EAAIA,EAAQ,OAASs3B,GACvDjE,EAAUhW,GAASrd,EAAQ,OAAO,EAAIA,EAAQ,QAAUizB,GACxDmD,EAAS/Y,GAASrd,EAAQ,MAAM,GAAKkd,GAAWld,EAAQ,MAAM,EAC9DA,EAAQ,OACRwnC,GACA4B,EAAUlsB,GAAWkZ,CAAM,EAAIoR,GAAiBpR,EAChDiT,EAAiBvyC,GAAQkJ,EAAQ,cAAc,GACjD8Q,GAAc9Q,EAAQ,cAAc,GACpCqd,GAASrd,EAAQ,cAAc,GAC/BA,EAAQ,iBAAmB,GACzBA,EAAQ,eACRopC,EACA3Q,EAAW3nB,GAAc9Q,EAAQ,QAAQ,EACzCA,EAAQ,SACRspC,GAAgBF,CAAO,EACvBG,EAAkBz4B,GAAc9Q,EAAQ,eAAe,EACnDA,EAAQ,gBACRspC,GAAgBF,CAAO,EAE3BI,EAAgB14B,GAAc9Q,EAAQ,aAAa,EAC/CA,EAAQ,cACRspC,GAAgBF,CAAO,EAE3BK,EAAYhzC,GAAOZ,GAAA,EAAUmK,EAAQ,UAAWkoC,IAA2B,EAC3EwB,EAAc1pC,EAAQ,aAAenK,GAAO,EAC5C8zC,EAAUzsB,GAAWld,EAAQ,OAAO,EAAIA,EAAQ,QAAU,KAC1D4pC,EAAcpsB,GAAUxd,EAAQ,WAAW,GAAK6gB,GAAS7gB,EAAQ,WAAW,EAC5EA,EAAQ,YACR,GACA6pC,EAAersB,GAAUxd,EAAQ,YAAY,GAAK6gB,GAAS7gB,EAAQ,YAAY,EAC/EA,EAAQ,aACR,GACA8pC,EAAiB,CAAC,CAAC9pC,EAAQ,eAC3B+pC,EAAc,CAAC,CAAC/pC,EAAQ,YACxBgqC,EAAkB9sB,GAAWld,EAAQ,eAAe,EACpDA,EAAQ,gBACR,KACAiqC,EAAYn5B,GAAc9Q,EAAQ,SAAS,EAAIA,EAAQ,UAAY,KACnEkqC,EAAkB1sB,GAAUxd,EAAQ,eAAe,EACnDA,EAAQ,gBACR,GACAmqC,EAAkB,CAAC,CAACnqC,EAAQ,gBAC5BoqC,EAAkBltB,GAAWld,EAAQ,eAAe,EACpDA,EAAQ,gBACRmoC,GAOAkC,EAAkBntB,GAAWld,EAAQ,eAAe,EACpDA,EAAQ,gBACRsoC,IAAazD,GACbyF,EAAmBptB,GAAWld,EAAQ,gBAAgB,EACtDA,EAAQ,iBACRyoC,IAAepB,GACfkD,EAAkBhtB,GAASvd,EAAQ,eAAe,EAClDA,EAAQ,gBACR,OAEAwqC,EAAkBxqC,EAClByqC,EAAuBltB,GAASitB,EAAgB,oBAAoB,EAChEA,EAAgB,yBACZ,IAERE,EAAqBntB,GAASitB,EAAgB,kBAAkB,EAC5DA,EAAgB,uBACZ,IAERG,EAASptB,GAASitB,EAAgB,MAAM,EAAIA,EAAgB,OAAS,CAAC,EAC5EtB,KACA,MAAMtqB,EAAU,CACZ,QAAAyU,EACA,IAAK6V,GACL,OAAA9S,EACA,eAAAiT,EACA,SAAA5Q,EACA,UAAAgR,EACA,YAAAC,EACA,QAAAC,EACA,YAAAC,EACA,aAAAC,EACA,eAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,OAAA/K,EACA,OAAAmL,CACJ,EAEI,OAAA/rB,EAAQ,gBAAkB2qB,EAC1B3qB,EAAQ,cAAgB4qB,EACxB5qB,EAAQ,qBAAuB6rB,EAC/B7rB,EAAQ,mBAAqB8rB,EAUc,2BAC1BnE,GAAA3nB,EAASyU,EAASsX,CAAM,EAEtC/rB,CACX,CACA,MAAM0qB,GAAmBlT,IAAY,CAAE,CAACA,CAAM,EAAGvgC,GAAS,IAU1D,SAAS+0C,GAAchsB,EAASnzB,EAAK2qC,EAAQwT,EAAapqC,EAAM,CACtD,MAAE,QAAAmqC,EAAS,OAAAnK,CAAA,EAAW5gB,EAa5B,GAAI+qB,IAAY,KAAM,CAClB,MAAM10B,EAAM00B,EAAQ/qB,EAASwX,EAAQ3qC,EAAK+T,CAAI,EACvC,OAAA6d,GAASpI,CAAG,EAAIA,EAAMxpB,CAAA,KAMtB,QAAAA,CAEf,CAEA,SAASo/C,GAAqB/P,EAAK1E,EAAQ1jC,EAAU,CACjD,MAAMksB,EAAUkc,EACRlc,EAAA,uBAAyB,IAC7Bkc,EAAA,iBAAiBA,EAAKpoC,EAAU0jC,CAAM,CAC9C,CAEA,SAAS0U,GAAmB1U,EAAQ2U,EAAe,CAC/C,OAAI3U,IAAW2U,EACJ,GACJ3U,EAAO,MAAM,GAAG,EAAE,CAAC,IAAM2U,EAAc,MAAM,GAAG,EAAE,CAAC,CAC9D,CAEA,SAASC,GAAmBC,EAAcC,EAAS,CACzC,MAAAt2C,EAAQs2C,EAAQ,QAAQD,CAAY,EAC1C,GAAIr2C,IAAU,GACH,SAEX,QAASvF,EAAIuF,EAAQ,EAAGvF,EAAI67C,EAAQ,OAAQ77C,IACxC,GAAIy7C,GAAmBG,EAAcC,EAAQ77C,CAAC,CAAC,EACpC,SAGR,QACX,CAGA,SAAS25B,GAAOmY,EAAK,CAEV,OADMrG,GAAQqQ,GAAYrQ,EAAKqG,CAAG,CAE7C,CACA,SAASgK,GAAYrQ,EAAKqG,EAAK,CACrB,MAAA3P,EAAO4Z,GAAYjK,CAAG,EAC5B,GAAI3P,GAAQ,KACF,MAAA6Z,GAAwB,CAA0B,EAG5D,GADaC,GAAY9Z,CAAI,IAChB,EAA0B,CAE7B,MAAAsQ,EAAQyJ,GADC/Z,CACkB,EACjC,OAAOsJ,EAAI,OAAOgH,EAAM,OAAO,CAACrJ,EAAU7hB,IAAM,CAC5C,GAAG6hB,EACH+S,GAAmB1Q,EAAKlkB,CAAC,CAC7B,EAAG,CAAE,EAAC,MAGC,QAAA40B,GAAmB1Q,EAAKtJ,CAAI,CAE3C,CACA,MAAMia,GAAa,CAAC,IAAK,MAAM,EAC/B,SAASL,GAAYxL,EAAM,CAChB,OAAA8L,GAAa9L,EAAM6L,EAAU,CACxC,CACA,MAAME,GAAc,CAAC,IAAK,OAAO,EACjC,SAASJ,GAAa3L,EAAM,CACxB,OAAO8L,GAAa9L,EAAM+L,GAAa,EAAE,CAC7C,CACA,SAASH,GAAmB1Q,EAAK8E,EAAM,CAC7B,MAAAgM,EAAUC,GAAcjM,CAAI,EAClC,GAAIgM,GAAW,KACJ,OAAA9Q,EAAI,OAAS,OACd8Q,EACA9Q,EAAI,UAAU,CAAC8Q,CAAO,CAAC,EAE5B,CACD,MAAMnT,EAAWqT,GAAalM,CAAI,EAAE,OAAO,CAACmM,EAAKn1B,IAAM,CAAC,GAAGm1B,EAAKC,GAAkBlR,EAAKlkB,CAAC,CAAC,EAAG,EAAE,EACvF,OAAAkkB,EAAI,UAAUrC,CAAQ,EAErC,CACA,MAAMwT,GAAe,CAAC,IAAK,QAAQ,EACnC,SAASJ,GAAcjM,EAAM,CAClB,OAAA8L,GAAa9L,EAAMqM,EAAY,CAC1C,CACA,MAAMC,GAAc,CAAC,IAAK,OAAO,EACjC,SAASJ,GAAalM,EAAM,CACxB,OAAO8L,GAAa9L,EAAMsM,GAAa,EAAE,CAC7C,CACA,SAASF,GAAkBlR,EAAK8E,EAAM,CAC5B,MAAApgC,EAAO8rC,GAAY1L,CAAI,EAC7B,OAAQpgC,EAAM,CACV,IAAK,GACM,OAAA2sC,GAAavM,EAAMpgC,CAAI,EAElC,IAAK,GACM,OAAA2sC,GAAavM,EAAMpgC,CAAI,EAElC,IAAK,GAAyB,CAC1B,MAAMyiC,EAAQrC,EACd,GAAI/zC,GAAOo2C,EAAO,GAAG,GAAKA,EAAM,EAC5B,OAAOnH,EAAI,YAAYA,EAAI,MAAMmH,EAAM,CAAC,CAAC,EAE7C,GAAIp2C,GAAOo2C,EAAO,KAAK,GAAKA,EAAM,IAC9B,OAAOnH,EAAI,YAAYA,EAAI,MAAMmH,EAAM,GAAG,CAAC,EAE/C,MAAMoJ,GAAwB7rC,CAAI,EAEtC,IAAK,GAAwB,CACzB,MAAMmQ,EAAOiwB,EACb,GAAI/zC,GAAO8jB,EAAM,GAAG,GAAK2N,GAAS3N,EAAK,CAAC,EACpC,OAAOmrB,EAAI,YAAYA,EAAI,KAAKnrB,EAAK,CAAC,CAAC,EAE3C,GAAI9jB,GAAO8jB,EAAM,OAAO,GAAK2N,GAAS3N,EAAK,KAAK,EAC5C,OAAOmrB,EAAI,YAAYA,EAAI,KAAKnrB,EAAK,KAAK,CAAC,EAE/C,MAAM07B,GAAwB7rC,CAAI,EAEtC,IAAK,GAA0B,CAC3B,MAAMwiC,EAASpC,EACTuG,EAAWiG,GAAsBpK,CAAM,EACvCv2C,EAAM4gD,GAAiBrK,CAAM,EACnC,OAAOlH,EAAI,OAAOkR,GAAkBlR,EAAKrvC,CAAG,EAAG06C,EAAW6F,GAAkBlR,EAAKqL,CAAQ,EAAI,OAAWrL,EAAI,IAAI,EAEpH,IAAK,GACM,OAAAqR,GAAavM,EAAMpgC,CAAI,EAElC,IAAK,GACM,OAAA2sC,GAAavM,EAAMpgC,CAAI,EAElC,QACI,MAAM,IAAI,MAAM,0CAA0CA,CAAI,EAAE,EAE5E,CACA,MAAM8sC,GAAa,CAAC,IAAK,MAAM,EAC/B,SAAShB,GAAY1L,EAAM,CAChB,OAAA8L,GAAa9L,EAAM0M,EAAU,CACxC,CACA,MAAMC,GAAc,CAAC,IAAK,OAAO,EACjC,SAASJ,GAAavM,EAAMpgC,EAAM,CACxB,MAAAyI,EAAWyjC,GAAa9L,EAAM2M,EAAW,EAC/C,GAAItkC,EACO,OAAAA,EAGP,MAAMojC,GAAwB7rC,CAAI,CAE1C,CACA,MAAMgtC,GAAiB,CAAC,IAAK,UAAU,EACvC,SAASJ,GAAsBxM,EAAM,CAC1B,OAAA8L,GAAa9L,EAAM4M,EAAc,CAC5C,CACA,MAAMC,GAAY,CAAC,IAAK,KAAK,EAC7B,SAASJ,GAAiBzM,EAAM,CACtB,MAAA33B,EAAWyjC,GAAa9L,EAAM6M,EAAS,EAC7C,GAAIxkC,EACO,OAAAA,EAGD,MAAAojC,GAAwB,CAAwB,CAE9D,CACA,SAASK,GAAa9L,EAAM96B,EAAOyc,EAAc,CAC7C,QAASlyB,EAAI,EAAGA,EAAIyV,EAAM,OAAQzV,IAAK,CAC7B,MAAAgmB,EAAOvQ,EAAMzV,CAAC,EAEpB,GAAIxD,GAAO+zC,EAAMvqB,CAAI,GAAKuqB,EAAKvqB,CAAI,GAAK,KAEpC,OAAOuqB,EAAKvqB,CAAI,CACpB,CAEG,OAAAkM,CACX,CACA,SAAS8pB,GAAwB7rC,EAAM,CACnC,OAAO,IAAI,MAAM,wBAAwBA,CAAI,EAAE,CACnD,CAQA,MAAMktC,GAAqB7qC,GAAYA,EACvC,IAAI8qC,GAAe92C,GAAO,EAY1B,SAAS+2C,GAAa3vB,EAAK,CACvB,OAAQM,GAASN,CAAG,GAChBquB,GAAYruB,CAAG,IAAM,IACpBpxB,GAAOoxB,EAAK,GAAG,GAAKpxB,GAAOoxB,EAAK,MAAM,EAC/C,CACA,SAASymB,GAAY7hC,EAAS7B,EAAU,GAAI,CAExC,IAAI6sC,EAAc,GACZ,MAAA73B,EAAUhV,EAAQ,SAAW04B,GAC3B,OAAA14B,EAAA,QAAW/B,GAAQ,CACT4uC,EAAA,GACd73B,EAAQ/W,CAAG,CACf,EAEO,CAAE,GAAG6uC,GAAcjrC,EAAS7B,CAAO,EAAG,YAAA6sC,CAAY,CAC7D,CAiCA,SAASE,GAAQlrC,EAAS+c,EAAS,CAM3B,GAAAvB,GAASxb,CAAO,EAAG,CAEK2b,GAAUoB,EAAQ,eAAe,GACnDA,EAAQ,gBAKR,MAAAouB,GADapuB,EAAQ,YAAc8tB,IACb7qC,CAAO,EAC7BorC,EAASN,GAAaK,CAAQ,EACpC,GAAIC,EACO,OAAAA,EAGX,KAAM,CAAE,IAAA9L,EAAK,YAAA0L,GAAgBnJ,GAAY7hC,EAAS,CAC9C,GAAG+c,EACH,SAAW,GACX,IAAK,GACR,EAEK2Y,EAAMvO,GAAOmY,CAAG,EAEtB,OAAQ0L,EAEFtV,EADCoV,GAAaK,CAAQ,EAAIzV,CAC1B,KAEL,CAMD,MAAMyV,EAAWnrC,EAAQ,SACzB,GAAImrC,EAAU,CACJ,MAAAC,EAASN,GAAaK,CAAQ,EACpC,OAAIC,IAIIN,GAAaK,CAAQ,EACzBhkB,GAAOnnB,CAAO,OAGlB,QAAOmnB,GAAOnnB,CAAO,CACzB,CAER,CAEA,MAAMqrC,GAAwB,IAAM,GAC9BC,GAAqBlwB,GAAQC,GAAWD,CAAG,EAEjD,SAASmwB,GAAUxuB,KAAY3M,EAAM,CACjC,KAAM,CAAE,eAAA63B,EAAgB,gBAAAE,EAAiB,YAAAD,EAAa,gBAAAK,EAAiB,eAAAf,EAAgB,SAAA5Q,GAAa7Z,EAC9F,CAACnzB,EAAKuU,CAAO,EAAIqtC,GAAmB,GAAGp7B,CAAI,EAC3C23B,EAAcpsB,GAAUxd,EAAQ,WAAW,EAC3CA,EAAQ,YACR4e,EAAQ,YACRirB,EAAersB,GAAUxd,EAAQ,YAAY,EAC7CA,EAAQ,aACR4e,EAAQ,aACRurB,EAAkB3sB,GAAUxd,EAAQ,eAAe,EACnDA,EAAQ,gBACR4e,EAAQ,gBACR0uB,EAAkB,CAAC,CAACttC,EAAQ,gBAE5ButC,EAAkBlwB,GAASrd,EAAQ,OAAO,GAAKwd,GAAUxd,EAAQ,OAAO,EACvEwd,GAAUxd,EAAQ,OAAO,EAEpBoqC,EAA8B3+C,EAAZ,IAAMA,EAD1BuU,EAAQ,QAEZ8pC,EACMM,EAA8B3+C,EAAZ,IAAMA,EAC1B,GACJ+hD,EAAmB1D,GAAkByD,IAAoB,GACzDnX,EAAS8Q,GAAUtoB,EAAS5e,CAAO,EAEzCmqC,GAAmBsD,GAAaztC,CAAO,EAGvC,GAAI,CAAC0tC,EAAazC,EAAcppC,CAAO,EAAKyrC,EAEtC,CACE7hD,EACA2qC,EACAqC,EAASrC,CAAM,GAAKvgC,GAAO,CAC/B,EALE83C,GAAqB/uB,EAASnzB,EAAK2qC,EAAQiT,EAAgBQ,EAAcD,CAAW,EAWtF5gB,EAAS0kB,EAETE,EAAeniD,EAWnB,GAVI,CAAC6hD,GACD,EAAEjwB,GAAS2L,CAAM,GACb4jB,GAAa5jB,CAAM,GACnBmkB,GAAkBnkB,CAAM,IACxBwkB,IACAxkB,EAASukB,EACMvkB,KAInB,CAACskB,IACA,EAAEjwB,GAAS2L,CAAM,GACd4jB,GAAa5jB,CAAM,GACnBmkB,GAAkBnkB,CAAM,IACxB,CAAC3L,GAAS4tB,CAAY,GAC1B,OAAOlB,EAAchC,GAAet8C,EAWxC,IAAIoiD,EAAW,GACf,MAAM74B,EAAU,IAAM,CACP64B,EAAA,EACf,EAEMtW,EAAO4V,GAAkBnkB,CAAM,EAE/BA,EADA8kB,GAAqBlvB,EAASnzB,EAAKw/C,EAAcjiB,EAAQ4kB,EAAc54B,CAAO,EAGpF,GAAI64B,EACO7kB,SAGX,MAAM+kB,EAAaC,GAAyBpvB,EAASqsB,EAAcppC,EAAS7B,CAAO,EAC7EiuC,EAAatI,GAAqBoI,CAAU,EAC5CG,EAAWC,GAAgBvvB,EAAS2Y,EAAK0W,CAAU,EAEnDh5B,EAAM+0B,EACNA,EAAgBkE,EAAUziD,CAAG,EAC7ByiD,EAEN,GAA+C,0BAA2B,CAEtE,MAAMvH,EAAW,CACb,UAAW,KAAK,IAAI,EACpB,IAAKtpB,GAAS5xB,CAAG,EACXA,EACA0hD,GAAkBnkB,CAAM,EACpBA,EAAO,IACP,GACV,OAAQiiB,IAAiBkC,GAAkBnkB,CAAM,EAC3CA,EAAO,OACP,IACN,OAAQ3L,GAAS2L,CAAM,EACjBA,EACAmkB,GAAkBnkB,CAAM,EACpBA,EAAO,OACP,GACV,QAAS/T,CACb,EACS0xB,EAAA,KAAOlwC,GAAO,CAAC,EAAGmoB,EAAQ,OAAQkqB,GAAuB,KAAE,EACpErC,GAAkBE,CAAQ,EAEvB,OAAA1xB,CACX,CACA,SAASw4B,GAAaztC,EAAS,CACvBlJ,GAAQkJ,EAAQ,IAAI,EACZA,EAAA,KAAOA,EAAQ,KAAK,IAAIo3B,GAAQ/Z,GAAS+Z,CAAI,EAAIR,GAAWQ,CAAI,EAAIA,CAAI,EAE3E7Z,GAASvd,EAAQ,KAAK,GAC3B,OAAO,KAAKA,EAAQ,KAAK,EAAE,QAAevU,GAAA,CAClC4xB,GAASrd,EAAQ,MAAMvU,CAAG,CAAC,IAC3BuU,EAAQ,MAAMvU,CAAG,EAAImrC,GAAW52B,EAAQ,MAAMvU,CAAG,CAAC,EACtD,CACH,CAET,CACA,SAASkiD,GAAqB/uB,EAASnzB,EAAK2qC,EAAQiT,EAAgBQ,EAAcD,EAAa,CAC3F,KAAM,CAAE,SAAAnR,EAAU,OAAA+G,EAAQ,gBAAiB2M,EAAc,iBAAA7B,GAAqB1rB,EACxEssB,EAAUZ,EAAiB1rB,EAASyqB,EAAgBjT,CAAM,EAChE,IAAIv0B,EAAUhM,GAAO,EACjBo1C,EACAjiB,EAAS,KAGb,MAAMxpB,EAAO,YACb,QAASnQ,EAAI,EAAGA,EAAI67C,EAAQ,SACTD,EAAKC,EAAQ77C,CAAC,EAwBzBwS,EAAA42B,EAASwS,CAAY,GAAKp1C,GAAO,GAWhCmzB,EAASmjB,EAAatqC,EAASpW,CAAG,KAAO,OAE1Cu9B,EAASnnB,EAAQpW,CAAG,GAoBpB4xB,KAAS2L,CAAM,GAAK4jB,GAAa5jB,CAAM,GAAKmkB,GAAkBnkB,CAAM,IA1DxC35B,IA6DhC,GAAI,CAAC27C,GAAmBC,EAAcC,CAAO,EAAG,CAC5C,MAAMkD,EAAaxD,GAAchsB,EACjCnzB,EAAKw/C,EAAcrB,EAAapqC,CAAI,EAChC4uC,IAAe3iD,IACfu9B,EAASolB,EACb,CAID,OAACplB,EAAQiiB,EAAcppC,CAAO,CACzC,CACA,SAASisC,GAAqBlvB,EAASnzB,EAAKw/C,EAAcjiB,EAAQ4kB,EAAc54B,EAAS,CAC/E,MAAE,gBAAAo1B,EAAiB,gBAAAF,CAAA,EAAoBtrB,EACzC,GAAAuuB,GAAkBnkB,CAAM,EAAG,CAC3B,MAAMuO,EAAMvO,EACZuO,SAAI,OAASA,EAAI,QAAU0T,EAC3B1T,EAAI,IAAMA,EAAI,KAAO9rC,EACd8rC,CAAA,CAEX,GAAI6S,GAAmB,KAAM,CACzB,MAAM7S,EAAO,IAAMvO,EACnBuO,SAAI,OAAS0T,EACb1T,EAAI,IAAM9rC,EACH8rC,CAAA,CAYL,MAAAA,EAAM6S,EAAgBphB,EAAQqlB,GAAkBzvB,EAASqsB,EAAc2C,EAAc5kB,EAAQkhB,EAAiBl1B,CAAO,CAAC,EAkB5H,OAAAuiB,EAAI,OAAS0T,EACb1T,EAAI,IAAM9rC,EACV8rC,EAAI,OAASvO,EACNuO,CACX,CACA,SAAS4W,GAAgBvvB,EAAS2Y,EAAK+W,EAAQ,CA6BpC,OAlBU/W,EAAI+W,CAAM,CAmB/B,CAEA,SAASjB,MAAsBp7B,EAAM,CACjC,KAAM,CAACgW,EAAMC,EAAMC,CAAI,EAAIlW,EACrBjS,EAAUnK,GAAO,EACvB,GAAI,CAACwnB,GAAS4K,CAAI,GACd,CAAC3K,GAAS2K,CAAI,GACd,CAACklB,GAAkBllB,CAAI,GACvB,CAAC2kB,GAAa3kB,CAAI,EACZ,MAAAgf,GAAgBD,GAAe,gBAAgB,EAGnD,MAAAv7C,EAAM6xB,GAAS2K,CAAI,EACnB,OAAOA,CAAI,GACXklB,GAAkBllB,CAAI,EAClBA,GAEN,OAAA3K,GAAS4K,CAAI,EACbloB,EAAQ,OAASkoB,EAEZ7K,GAAS6K,CAAI,EAClBloB,EAAQ,QAAUkoB,EAEbpX,GAAcoX,CAAI,GAAK,CAACsO,GAActO,CAAI,EAC/CloB,EAAQ,MAAQkoB,EAEXpxB,GAAQoxB,CAAI,IACjBloB,EAAQ,KAAOkoB,GAEf5K,GAAS6K,CAAI,EACbnoB,EAAQ,OAASmoB,EAEZ9K,GAAS8K,CAAI,EAClBnoB,EAAQ,QAAUmoB,EAEbrX,GAAcqX,CAAI,GACvB1xB,GAAOuJ,EAASmoB,CAAI,EAEjB,CAAC18B,EAAKuU,CAAO,CACxB,CACA,SAASquC,GAAkBzvB,EAASwX,EAAQ3qC,EAAKm2B,EAAQsoB,EAAiBl1B,EAAS,CACxE,OACH,OAAAohB,EACA,IAAA3qC,EACA,gBAAAy+C,EACA,QAAUjsC,GAAQ,CACd,MAAA+W,GAAWA,EAAQ/W,CAAG,EAoBZA,CAEd,EACA,WAAa2jB,GAAWuU,GAAuBC,EAAQ3qC,EAAKm2B,CAAM,CACtE,CACJ,CAWA,SAASosB,GAAyBpvB,EAASwX,EAAQv0B,EAAS7B,EAAS,CAC3D,MAAE,UAAAypC,EAAW,YAAAC,EAAa,gBAAiByC,EAAc,eAAA9C,EAAgB,aAAAQ,EAAc,YAAAD,EAAa,gBAAAW,CAAA,EAAoB3rB,EA0BxHmvB,EAAa,CACf,OAAA3X,EACA,UAAAqT,EACA,YAAAC,EACA,SA7BoBj+C,GAAQ,CACxB,IAAAwxB,EAAMkvB,EAAatqC,EAASpW,CAAG,EAE/B,GAAAwxB,GAAO,MAAQstB,EAAiB,CAC1B,MAAK1oC,GAAO,EAAI8rC,GAAqBpD,EAAiB9+C,EAAK2qC,EAAQiT,EAAgBQ,EAAcD,CAAW,EAC5GuC,IAAatqC,EAASpW,CAAG,EAEnC,GAAI4xB,GAASJ,CAAG,GAAK2vB,GAAa3vB,CAAG,EAAG,CACpC,IAAI4wB,EAAW,GAIf,MAAMtW,EAAMuW,GAAqBlvB,EAASnzB,EAAK2qC,EAAQnZ,EAAKxxB,EAH5C,IAAM,CACPoiD,EAAA,EACf,CACwE,EACjE,OAACA,EAEFX,GADA3V,CACA,KACV,QACS4V,GAAkBlwB,CAAG,EACnBA,EAIAiwB,EAEf,CAMA,EACA,OAAItuB,EAAQ,YACRmvB,EAAW,UAAYnvB,EAAQ,WAE/B5e,EAAQ,OACR+tC,EAAW,KAAO/tC,EAAQ,MAE1BA,EAAQ,QACR+tC,EAAW,MAAQ/tC,EAAQ,OAE3Bsd,GAAStd,EAAQ,MAAM,IACvB+tC,EAAW,YAAc/tC,EAAQ,QAE9B+tC,CACX,CASA,SAASQ,GAAS3vB,KAAY3M,EAAM,CAChC,KAAM,CAAE,gBAAAs3B,EAAiB,YAAAQ,EAAa,eAAAV,EAAgB,OAAA7J,EAAQ,iBAAA8K,GAAqB1rB,EAC7E,CAAE,qBAAA6rB,GAAyB7rB,EAK3B,CAACnzB,EAAKC,EAAOsU,EAASwuC,CAAS,EAAIC,GAAkB,GAAGx8B,CAAI,EAC5D23B,EAAcpsB,GAAUxd,EAAQ,WAAW,EAC3CA,EAAQ,YACR4e,EAAQ,YACOpB,GAAUxd,EAAQ,YAAY,EAC7CA,EAAQ,aACR4e,EAAQ,aACR,MAAA8vB,EAAO,CAAC,CAAC1uC,EAAQ,KACjBo2B,EAAS8Q,GAAUtoB,EAAS5e,CAAO,EACnCkrC,EAAUZ,EAAiB1rB,EACjCyqB,EAAgBjT,CAAM,EACtB,GAAI,CAAC/Y,GAAS5xB,CAAG,GAAKA,IAAQ,GAC1B,OAAO,IAAI,KAAK,eAAe2qC,EAAQoY,CAAS,EAAE,OAAO9iD,CAAK,EAGlE,IAAIijD,EAAiB,CAAC,EAClB1D,EACAjiB,EAAS,KAGb,MAAMxpB,EAAO,kBACb,QAASnQ,EAAI,EAAGA,EAAI67C,EAAQ,SACTD,EAAKC,EAAQ77C,CAAC,EAuBzBs/C,EAAApF,EAAgB0B,CAAY,GAAK,CAAC,EACtCjiB,EAAS2lB,EAAeljD,CAAG,EACvBqlB,IAAckY,CAAM,GA1BQ35B,IA4BhCu7C,GAAchsB,EAASnzB,EAAKw/C,EAAcrB,EAAapqC,CAAI,EAI/D,GAAI,CAACsR,GAAckY,CAAM,GAAK,CAAC3L,GAAS4tB,CAAY,EAChD,OAAOlB,EAAchC,GAAet8C,EAExC,IAAIsnB,EAAK,GAAGk4B,CAAY,KAAKx/C,CAAG,GAC3B+qC,GAAcgY,CAAS,IACxBz7B,EAAK,GAAGA,CAAE,KAAK,KAAK,UAAUy7B,CAAS,CAAC,IAExC,IAAAI,EAAYnE,EAAqB,IAAI13B,CAAE,EAC3C,OAAK67B,IACWA,EAAA,IAAI,KAAK,eAAe3D,EAAcx0C,GAAO,CAAC,EAAGuyB,EAAQwlB,CAAS,CAAC,EAC1D/D,EAAA,IAAI13B,EAAI67B,CAAS,GAElCF,EAAiCE,EAAU,cAAcljD,CAAK,EAAvDkjD,EAAU,OAAOljD,CAAK,CACzC,CAEA,MAAMmjD,GAA+B,CACjC,gBACA,UACA,MACA,OACA,QACA,MACA,OACA,SACA,SACA,eACA,gBACA,SACA,WACA,YACA,YACA,WACA,YACA,kBACA,YACA,wBACJ,EAEA,SAASJ,MAAqBx8B,EAAM,CAChC,KAAM,CAACgW,EAAMC,EAAMC,EAAM2mB,CAAI,EAAI78B,EAC3BjS,EAAUnK,GAAO,EACvB,IAAI24C,EAAY34C,GAAO,EACnBnK,EACA,GAAA2xB,GAAS4K,CAAI,EAAG,CAGV,MAAA1H,EAAU0H,EAAK,MAAM,gCAAgC,EAC3D,GAAI,CAAC1H,EACK,MAAA0mB,GAAgBD,GAAe,yBAAyB,EAIlE,MAAM+H,EAAWxuB,EAAQ,CAAC,EACpBA,EAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,EAC5B,GAAGA,EAAQ,CAAC,EAAE,MAAM,GAAGA,EAAQ,CAAC,EAAE,MAAM,GACxC,GAAGA,EAAQ,CAAC,EAAE,MAAM,IAAIA,EAAQ,CAAC,EAAE,KAAM,IAC7CA,EAAQ,CAAC,EAAE,KAAK,EACd70B,EAAA,IAAI,KAAKqjD,CAAQ,EACrB,IAEArjD,EAAM,YAAY,OAEZ,CACA,MAAAu7C,GAAgBD,GAAe,yBAAyB,EAClE,SAEKvpB,GAAOwK,CAAI,EAAG,CACnB,GAAI,MAAMA,EAAK,QAAQ,CAAC,EACd,MAAAgf,GAAgBD,GAAe,qBAAqB,EAEtDt7C,EAAAu8B,CAAA,SAEH3K,GAAS2K,CAAI,EACVv8B,EAAAu8B,MAGF,OAAAgf,GAAgBD,GAAe,gBAAgB,EAErD,OAAA3pB,GAAS6K,CAAI,EACbloB,EAAQ,IAAMkoB,EAETpX,GAAcoX,CAAI,GACvB,OAAO,KAAKA,CAAI,EAAE,QAAez8B,GAAA,CACzBojD,GAA6B,SAASpjD,CAAG,EAC/B+iD,EAAA/iD,CAAG,EAAIy8B,EAAKz8B,CAAG,EAGjBuU,EAAAvU,CAAG,EAAIy8B,EAAKz8B,CAAG,CAC3B,CACH,EAED4xB,GAAS8K,CAAI,EACbnoB,EAAQ,OAASmoB,EAEZrX,GAAcqX,CAAI,IACXqmB,EAAArmB,GAEZrX,GAAcg+B,CAAI,IACNN,EAAAM,GAET,CAAC9uC,EAAQ,KAAO,GAAItU,EAAOsU,EAASwuC,CAAS,CACxD,CAEA,SAASQ,GAAoBlU,EAAK1E,EAAQpN,EAAQ,CAC9C,MAAMpK,EAAUkc,EAChB,UAAWrvC,KAAOu9B,EAAQ,CACtB,MAAMjW,EAAK,GAAGqjB,CAAM,KAAK3qC,CAAG,GACvBmzB,EAAQ,qBAAqB,IAAI7L,CAAE,GAGhC6L,EAAA,qBAAqB,OAAO7L,CAAE,EAE9C,CAGA,SAASk8B,GAAOrwB,KAAY3M,EAAM,CAC9B,KAAM,CAAE,cAAAu3B,EAAe,YAAAO,EAAa,eAAAV,EAAgB,OAAA7J,EAAQ,iBAAA8K,GAAqB1rB,EAC3E,CAAE,mBAAA8rB,GAAuB9rB,EAKzB,CAACnzB,EAAKC,EAAOsU,EAASwuC,CAAS,EAAIU,GAAgB,GAAGj9B,CAAI,EAC1D23B,EAAcpsB,GAAUxd,EAAQ,WAAW,EAC3CA,EAAQ,YACR4e,EAAQ,YACOpB,GAAUxd,EAAQ,YAAY,EAC7CA,EAAQ,aACR4e,EAAQ,aACR,MAAA8vB,EAAO,CAAC,CAAC1uC,EAAQ,KACjBo2B,EAAS8Q,GAAUtoB,EAAS5e,CAAO,EACnCkrC,EAAUZ,EAAiB1rB,EACjCyqB,EAAgBjT,CAAM,EACtB,GAAI,CAAC/Y,GAAS5xB,CAAG,GAAKA,IAAQ,GAC1B,OAAO,IAAI,KAAK,aAAa2qC,EAAQoY,CAAS,EAAE,OAAO9iD,CAAK,EAGhE,IAAIyjD,EAAe,CAAC,EAChBlE,EACAjiB,EAAS,KAGb,MAAMxpB,EAAO,gBACb,QAASnQ,EAAI,EAAGA,EAAI67C,EAAQ,SACTD,EAAKC,EAAQ77C,CAAC,EAuBzB8/C,EAAA3F,EAAcyB,CAAY,GAAK,CAAC,EACpCjiB,EAASmmB,EAAa1jD,CAAG,EACrBqlB,IAAckY,CAAM,GA1BQ35B,IA4BhCu7C,GAAchsB,EAASnzB,EAAKw/C,EAAcrB,EAAapqC,CAAI,EAI/D,GAAI,CAACsR,GAAckY,CAAM,GAAK,CAAC3L,GAAS4tB,CAAY,EAChD,OAAOlB,EAAchC,GAAet8C,EAExC,IAAIsnB,EAAK,GAAGk4B,CAAY,KAAKx/C,CAAG,GAC3B+qC,GAAcgY,CAAS,IACxBz7B,EAAK,GAAGA,CAAE,KAAK,KAAK,UAAUy7B,CAAS,CAAC,IAExC,IAAAI,EAAYlE,EAAmB,IAAI33B,CAAE,EACzC,OAAK67B,IACWA,EAAA,IAAI,KAAK,aAAa3D,EAAcx0C,GAAO,CAAC,EAAGuyB,EAAQwlB,CAAS,CAAC,EAC1D9D,EAAA,IAAI33B,EAAI67B,CAAS,GAEhCF,EAAiCE,EAAU,cAAcljD,CAAK,EAAvDkjD,EAAU,OAAOljD,CAAK,CACzC,CAEA,MAAM0jD,GAA6B,CAC/B,gBACA,QACA,WACA,kBACA,eACA,cACA,uBACA,wBACA,wBACA,2BACA,2BACA,iBACA,WACA,cACA,OACA,cACA,eACA,mBACA,oBACA,qBACJ,EAEA,SAASF,MAAmBj9B,EAAM,CAC9B,KAAM,CAACgW,EAAMC,EAAMC,EAAM2mB,CAAI,EAAI78B,EAC3BjS,EAAUnK,GAAO,EACvB,IAAI24C,EAAY34C,GAAO,EACnB,IAACynB,GAAS2K,CAAI,EACR,MAAAgf,GAAgBD,GAAe,gBAAgB,EAEzD,MAAMt7C,EAAQu8B,EACV,OAAA5K,GAAS6K,CAAI,EACbloB,EAAQ,IAAMkoB,EAETpX,GAAcoX,CAAI,GACvB,OAAO,KAAKA,CAAI,EAAE,QAAez8B,GAAA,CACzB2jD,GAA2B,SAAS3jD,CAAG,EAC7B+iD,EAAA/iD,CAAG,EAAIy8B,EAAKz8B,CAAG,EAGjBuU,EAAAvU,CAAG,EAAIy8B,EAAKz8B,CAAG,CAC3B,CACH,EAED4xB,GAAS8K,CAAI,EACbnoB,EAAQ,OAASmoB,EAEZrX,GAAcqX,CAAI,IACXqmB,EAAArmB,GAEZrX,GAAcg+B,CAAI,IACNN,EAAAM,GAET,CAAC9uC,EAAQ,KAAO,GAAItU,EAAOsU,EAASwuC,CAAS,CACxD,CAEA,SAASa,GAAkBvU,EAAK1E,EAAQpN,EAAQ,CAC5C,MAAMpK,EAAUkc,EAChB,UAAWrvC,KAAOu9B,EAAQ,CACtB,MAAMjW,EAAK,GAAGqjB,CAAM,KAAK3qC,CAAG,GACvBmzB,EAAQ,mBAAmB,IAAI7L,CAAE,GAG9B6L,EAAA,mBAAmB,OAAO7L,CAAE,EAE5C,CAGqBgxB,GAAA,ECj3DrB;AAAA;AAAA;AAAA;AAAA,IAkBA,MAAM9Q,GAAU,SAKhB,SAAS8Q,IAAmB,CAapB,OAAO,2BAA8B,YACrCpN,GAAA,EAAgB,0BAA4B,GAEpD,CAEA,MAAMiQ,GAASE,GAAc,iBACvBD,GAAQxP,GAAYuP,EAAM,EAGJC,GAAM,EACLA,GAAM,EACGA,GAAM,EACRA,GAAM,EACJA,GAAM,EAChBA,GAAM,EACVA,GAAM,EACKA,GAAM,EACQA,GAAM,EAkBvD,MAAMrkB,GAAOwkB,GAAe,iBACtBD,GAAM1P,GAAY7U,EAAI,EACtB8sB,GAAiB,CAEnB,uBAAwB9sB,GAExB,iBAAkBukB,GAAI,EAEtB,uBAAwBA,GAAI,EAC5B,cAAeA,GAAI,EACnB,6BAA8BA,GAAI,EAElC,eAAgBA,GAAI,EACpB,cAAeA,GAAI,EAEnB,iCAAkCA,GAAI,EACtC,2BAA4BA,GAAI,EAEhC,iBAAkBA,GAAI,EAEtB,+BAAgCA,GAAI,EAEpC,0BAA2BA,GAAI,EAE/B,6CAA8CA,GAAI,EAElD,oCAAqCA,GAAI,EAEzC,iBAAkBA,GAAI,CAC1B,EACA,SAASwI,GAAgB/sB,KAASvQ,EAAM,CAC7B,OAAAumB,GAAmBhW,EAAM,KAAoF,MAAS,CACjI,CAkBA,MAAMgtB,MACoB,kBAAkB,EACtCC,MAAgD,iBAAiB,EACjEC,MAA8C,eAAe,EAG7DC,GAAuB1Z,GAAW,kBAAkB,EAEpD2Z,MACoB,oBAAoB,EACxCC,MAA0C,WAAW,EAO3D,SAASC,GAAej+C,EAAK,CAErB,IAAC0rB,GAAS1rB,CAAG,EACN,OAAAA,EAEX,UAAWpG,KAAOoG,EAEd,GAAKhG,GAAOgG,EAAKpG,CAAG,EAIpB,GAAI,CAACA,EAAI,SAAS,GAAG,EAEb8xB,GAAS1rB,EAAIpG,CAAG,CAAC,GACFqkD,GAAAj+C,EAAIpG,CAAG,CAAC,MAI1B,CAEK,MAAAskD,EAAUtkD,EAAI,MAAM,GAAG,EACvBq0B,EAAYiwB,EAAQ,OAAS,EACnC,IAAIC,EAAan+C,EACbo+C,EAAiB,GACrB,QAAS5gD,EAAI,EAAGA,EAAIywB,EAAWzwB,IAAK,CAIhC,GAHM0gD,EAAQ1gD,CAAC,IAAK2gD,IAChBA,EAAWD,EAAQ1gD,CAAC,CAAC,EAAIwG,GAAO,GAEhC,CAAC0nB,GAASyyB,EAAWD,EAAQ1gD,CAAC,CAAC,CAAC,EAAG,CAKlB4gD,EAAA,GACjB,MAESD,IAAWD,EAAQ1gD,CAAC,CAAC,EAGjC4gD,IACDD,EAAWD,EAAQjwB,CAAS,CAAC,EAAIjuB,EAAIpG,CAAG,EACxC,OAAOoG,EAAIpG,CAAG,GAGd8xB,GAASyyB,EAAWD,EAAQjwB,CAAS,CAAC,CAAC,GACvCgwB,GAAeE,EAAWD,EAAQjwB,CAAS,CAAC,CAAC,CACjD,CAGD,OAAAjuB,CACX,CACA,SAASq+C,GAAkB9Z,EAAQp2B,EAAS,CACxC,KAAM,CAAE,SAAAy4B,EAAU,OAAA0X,EAAQ,gBAAA9F,EAAiB,SAAA+F,CAAa,EAAApwC,EAElDiV,EAAOnE,GAAc2nB,CAAQ,EAC7BA,EACA3hC,GAAQq5C,CAAM,EACVt6C,GAAA,EACA,CAAE,CAACugC,CAAM,EAAGvgC,IAAS,EAoB3B,GAlBAiB,GAAQq5C,CAAM,GACdA,EAAO,QAAkBE,GAAA,CACjB,cAAYA,GAAU,aAAcA,EAAQ,CAC5C,KAAM,CAAE,OAAAja,EAAQ,SAAAyL,CAAa,EAAAwO,EACzBja,GACAnhB,EAAImhB,CAAM,EAAInhB,EAAImhB,CAAM,GAAKvgC,GAAO,EAC3B4hC,GAAAoK,EAAU5sB,EAAImhB,CAAM,CAAC,GAG9BqB,GAASoK,EAAU5sB,CAAG,CAC1B,MAGAoI,GAASgzB,CAAM,GAAK5Y,GAAS,KAAK,MAAM4Y,CAAM,EAAGp7B,CAAG,CACxD,CACH,EAGDo1B,GAAmB,MAAQ+F,EAC3B,UAAW3kD,KAAOwpB,EACVppB,GAAOopB,EAAKxpB,CAAG,GACAqkD,GAAA76B,EAAIxpB,CAAG,CAAC,EAI5B,OAAAwpB,CACX,CAEA,SAASq7B,GAAoBjlC,EAAU,CACnC,OAAOA,EAAS,IACpB,CACA,SAASklC,GAAoBC,EAAIxwC,EAASywC,EACxC,CACE,IAAIhY,EAAWlb,GAASvd,EAAQ,QAAQ,EAClCA,EAAQ,SACRnK,GAAO,EACT,iBAAkB46C,IACPhY,EAAAyX,GAAkBM,EAAG,OAAO,MAAO,CAC1C,SAAA/X,EACA,OAAQgY,EAAiB,aAC5B,GAGC,MAAAvF,EAAU,OAAO,KAAKzS,CAAQ,EAChCyS,EAAQ,QACRA,EAAQ,QAAkB9U,GAAA,CACtBoa,EAAG,mBAAmBpa,EAAQqC,EAASrC,CAAM,CAAC,EACjD,EAEL,CAEQ,GAAA7Y,GAASvd,EAAQ,eAAe,EAAG,CACnC,MAAMkrC,EAAU,OAAO,KAAKlrC,EAAQ,eAAe,EAC/CkrC,EAAQ,QACRA,EAAQ,QAAkB9U,GAAA,CACtBoa,EAAG,oBAAoBpa,EAAQp2B,EAAQ,gBAAgBo2B,CAAM,CAAC,EACjE,CACL,CAGA,GAAA7Y,GAASvd,EAAQ,aAAa,EAAG,CACjC,MAAMkrC,EAAU,OAAO,KAAKlrC,EAAQ,aAAa,EAC7CkrC,EAAQ,QACRA,EAAQ,QAAkB9U,GAAA,CACtBoa,EAAG,kBAAkBpa,EAAQp2B,EAAQ,cAAco2B,CAAM,CAAC,EAC7D,CACL,CACJ,CAER,CACA,SAASsa,GAAejlD,EAAK,CACzB,OAAOklD,EAAYC,GAAM,KAAMnlD,EAAK,CAAC,CAEzC,CAKA,MAAMolD,GAAgB,mBAChBC,GAAoB,IAAM,CAAC,EAC3BC,GAAoB,IAAM,GAChC,IAAIC,GAAa,EACjB,SAASC,GAAyBtH,EAAS,CACvC,MAAQ,CAAC7O,EAAK1E,EAAQ3qC,EAAK+T,IAChBmqC,EAAQvT,EAAQ3qC,EAAKylD,GAAmB,GAAK,OAAW1xC,CAAI,CAE3E,CAGA,MAAM2xC,GAAc,IAAM,CACtB,MAAM9lC,EAAW6lC,GAAmB,EACpC,IAAInsC,EAAO,KACX,OAAOsG,IAAatG,EAAOurC,GAAoBjlC,CAAQ,EAAEwlC,EAAa,GAChE,CAAE,CAACA,EAAa,EAAG9rC,CACnB,MACV,EAOA,SAASqsC,GAAepxC,EAAU,CAAC,EAAGqxC,EAAe,CAC3C,MAAE,OAAAC,EAAQ,mBAAAC,CAAA,EAAuBvxC,EACjCwxC,EAAYF,IAAW,OACvBlB,EAAWpwC,EAAQ,SACnByxC,EAAOzb,GAAY7qB,EAAMoB,GACzBmlC,EAA2B,CAAC,CAAC1xC,EAAQ,yBAM3C,IAAI2xC,EAAiBn0B,GAAUxd,EAAQ,aAAa,EAC9CA,EAAQ,cACR,GACN,MAAMopC,EAAUqI,EAEhBH,GAAUK,EACJL,EAAO,OAAO,MACdj0B,GAASrd,EAAQ,MAAM,EACnBA,EAAQ,OACRwnC,EAAc,EAClBoK,EAAkBH,EAExBH,GAAUK,EACJL,EAAO,eAAe,MACtBj0B,GAASrd,EAAQ,cAAc,GAC7BlJ,GAAQkJ,EAAQ,cAAc,GAC9B8Q,GAAc9Q,EAAQ,cAAc,GACpCA,EAAQ,iBAAmB,GACzBA,EAAQ,eACRopC,EAAQ,KAAK,EACjByI,EAAYJ,EAAKvB,GAAkB9G,EAAQ,MAAOppC,CAAO,CAAC,EAE1D8xC,EAAmBL,EAAK3gC,GAAc9Q,EAAQ,eAAe,EACzDA,EAAQ,gBACR,CAAE,CAACopC,EAAQ,KAAK,EAAG,GAAI,EAG3B2I,EAAiBN,EAAK3gC,GAAc9Q,EAAQ,aAAa,EACrDA,EAAQ,cACR,CAAE,CAACopC,EAAQ,KAAK,EAAG,GAAI,EAIjC,IAAI4I,EAAeV,EACbA,EAAO,YACP9zB,GAAUxd,EAAQ,WAAW,GAAK6gB,GAAS7gB,EAAQ,WAAW,EAC1DA,EAAQ,YACR,GAENiyC,EAAgBX,EACdA,EAAO,aACP9zB,GAAUxd,EAAQ,YAAY,GAAK6gB,GAAS7gB,EAAQ,YAAY,EAC5DA,EAAQ,aACR,GAENkyC,EAAgBZ,EACdA,EAAO,aACP9zB,GAAUxd,EAAQ,YAAY,EAC1BA,EAAQ,aACR,GAENmyC,EAAkB,CAAC,CAACnyC,EAAQ,eAE5BoyC,EAAWl1B,GAAWld,EAAQ,OAAO,EAAIA,EAAQ,QAAU,KAC3DqyC,EAAkBn1B,GAAWld,EAAQ,OAAO,EAC1CixC,GAAyBjxC,EAAQ,OAAO,EACxC,KAEFsyC,EAAmBp1B,GAAWld,EAAQ,eAAe,EACnDA,EAAQ,gBACR,KAEFuyC,EAAmBjB,EACjBA,EAAO,gBACP9zB,GAAUxd,EAAQ,eAAe,EAC7BA,EAAQ,gBACR,GACNwyC,EAAmB,CAAC,CAACxyC,EAAQ,gBAG3B,MAAAyyC,EAAanB,EACbA,EAAO,UACPxgC,GAAc9Q,EAAQ,SAAS,EAC3BA,EAAQ,UACR,CAAC,EAEX,IAAI0yC,EAAe1yC,EAAQ,aAAgBsxC,GAAUA,EAAO,YAGxD1W,EAyCJA,GAxCuB,IAAM,CACzB4W,GAAaxI,GAAmB,IAAI,EACpC,MAAM+E,EAAa,CACf,QAAS9a,GACT,OAAQmW,EAAQ,MAChB,eAAgBwI,EAAgB,MAChC,SAAUC,EAAU,MACpB,UAAWY,EACX,YAAaC,EACb,QAASL,IAAoB,KAAO,OAAYA,EAChD,YAAaL,EACb,aAAcC,EACd,eAAgBE,EAChB,YAAa,GACb,gBAAiBG,IAAqB,KAAO,OAAYA,EACzD,gBAAiBC,EACjB,gBAAiBC,EACjB,gBAAiBxyC,EAAQ,gBACzB,gBAAiBA,EAAQ,gBACzB,OAAQ,CAAE,UAAW,KAAM,CAC/B,EAEI+tC,EAAW,gBAAkB+D,EAAiB,MAC9C/D,EAAW,cAAgBgE,EAAe,MAC1ChE,EAAW,qBAAuBj9B,GAAc8pB,CAAQ,EAClDA,EAAS,qBACT,OACNmT,EAAW,mBAAqBj9B,GAAc8pB,CAAQ,EAChDA,EAAS,mBACT,OAOJ,MAAAE,EAAMqO,GAAkB4E,CAAU,EACxC,OAAAyD,GAAaxI,GAAmBlO,CAAG,EAC5BA,CACX,GAC0B,EAC1B+P,GAAqBjQ,EAAUwO,EAAQ,MAAOwI,EAAgB,KAAK,EAEnE,SAASe,GAAwB,CACtB,OACCvJ,EAAQ,MACRwI,EAAgB,MAChBC,EAAU,MACVC,EAAiB,MACjBC,EAAe,KACnB,EAIR,MAAM3b,EAAS5tB,EAAS,CACpB,IAAK,IAAM4gC,EAAQ,MACnB,IAAYnsB,GAAA,CACRmsB,EAAQ,MAAQnsB,EAChB2d,EAAS,OAASwO,EAAQ,MAC9B,CACH,EAEKC,EAAiB7gC,EAAS,CAC5B,IAAK,IAAMopC,EAAgB,MAC3B,IAAY30B,GAAA,CACR20B,EAAgB,MAAQ30B,EACxB2d,EAAS,eAAiBgX,EAAgB,MACrB/G,GAAAjQ,EAAUwO,EAAQ,MAAOnsB,CAAG,EACrD,CACH,EAEKwb,GAAWjwB,EAAS,IAAMqpC,EAAU,KAAK,EAEzCtI,GAAiC/gC,EAAS,IAAMspC,EAAiB,KAAK,EAEtEtI,GAA+BhhC,EAAS,IAAMupC,EAAe,KAAK,EAExE,SAASa,IAA4B,CAC1B,OAAA11B,GAAWo1B,CAAgB,EAAIA,EAAmB,KAG7D,SAASO,GAA0BtsC,EAAS,CACrB+rC,EAAA/rC,EACnBq0B,EAAS,gBAAkBr0B,CAAA,CAG/B,SAASusC,IAAoB,CAClB,OAAAV,CAAA,CAGX,SAASW,GAAkBxsC,EAAS,CAC5BA,IAAY,OACZ8rC,EAAkBpB,GAAyB1qC,CAAO,GAE3C6rC,EAAA7rC,EACXq0B,EAAS,QAAUyX,CAAA,CAMvB,MAAMW,GAAe,CAACr8C,EAAIs8C,EAAgBC,GAAUC,GAAiBC,GAAcC,IAAqB,CAC9EV,EAAA,EAElB,IAAA19B,EACA,IAC+C,0BAG1Cu8B,IACQ5W,EAAA,gBAAkB0W,EACrBrI,GAAA,EACA,QAEVh0B,EAAMte,EAAGikC,CAAQ,SAErB,CACmD,0BAG1C4W,IACD5W,EAAS,gBAAkB,OAC/B,CAEJ,GAAKsY,KAAa,oBACd51B,GAASrI,CAAG,GACZA,IAAQ8yB,IACPmL,KAAa,oBAAsB,CAACj+B,EACvC,CACE,KAAM,CAACxpB,EAAKy8B,CAAI,EAAI+qB,EAAe,EA0BnC,OAAO3B,GAAUY,EACXiB,GAAgB7B,CAAM,EACtB8B,GAAa3nD,CAAG,MAC1B,IACS4nD,EAAiBp+B,CAAG,EAClB,OAAAA,EAID,MAAAs6B,GAAgBD,GAAe,sBAAsB,EAEnE,EAEA,SAASn5B,KAAKlE,EAAM,CAChB,OAAO+gC,GAAap0B,GAAW,QAAQ,MAAMwuB,GAAW,KAAM,CAACxuB,EAAS,GAAG3M,CAAI,CAAC,EAAG,IAAMo7B,GAAmB,GAAGp7B,CAAI,EAAG,YAAa/mB,GAAQ,QAAQ,MAAMA,EAAK,EAAGA,EAAM,CAAC,GAAG+mB,CAAI,CAAC,EAAUxmB,KAAYwxB,GAAAI,GAASJ,CAAG,CAAC,EAGvN,SAASpD,MAAM5H,EAAM,CACjB,KAAM,CAACgW,EAAMC,GAAMC,EAAI,EAAIlW,EAC3B,GAAIkW,IAAQ,CAAC5K,GAAS4K,EAAI,EAChB,MAAAonB,GAAgBD,GAAe,gBAAgB,EAEzD,OAAOn5B,EAAM8R,EAAMC,GAAMzxB,GAAO,CAAE,gBAAiB,EAAQ,EAAA0xB,IAAQ,EAAE,CAAE,EAG3E,SAASnR,MAAK/E,EAAM,CAChB,OAAO+gC,GAAap0B,GAAW,QAAQ,MAAM2vB,GAAU,KAAM,CAAC3vB,EAAS,GAAG3M,CAAI,CAAC,EAAG,IAAMw8B,GAAkB,GAAGx8B,CAAI,EAAG,kBAAmB/mB,GAAQ,QAAQ,MAAMA,EAAK,EAAGA,EAAM,CAAC,GAAG+mB,CAAI,CAAC,EAAG,IAAM+1B,GAA8B/qB,GAAAI,GAASJ,CAAG,CAAC,EAG5O,SAAStG,MAAK1E,EAAM,CAChB,OAAO+gC,GAAap0B,GAAW,QAAQ,MAAMqwB,GAAQ,KAAM,CAACrwB,EAAS,GAAG3M,CAAI,CAAC,EAAG,IAAMi9B,GAAgB,GAAGj9B,CAAI,EAAG,gBAAiB/mB,GAAQ,QAAQ,MAAMA,EAAK,EAAGA,EAAM,CAAC,GAAG+mB,CAAI,CAAC,EAAG,IAAM+1B,GAA8B/qB,GAAAI,GAASJ,CAAG,CAAC,EAGtO,SAASgpB,GAAUvxC,EAAQ,CACvB,OAAOA,EAAO,IAAIuoB,GAAOI,GAASJ,CAAG,GAAKK,GAASL,CAAG,GAAKO,GAAUP,CAAG,EAClEyzB,GAAe,OAAOzzB,CAAG,CAAC,EAC1BA,CAAG,EAGb,MAAMgtB,EAAY,CACd,UAAAhE,GACA,YAHiBhpB,GAAQA,EAIzB,KAAM,OACV,EAEA,SAASq2B,KAAkBrhC,EAAM,CACtB,OAAA+gC,GAAwBp0B,GAAA,CACvB,IAAA3J,GACJ,MAAM2lB,GAAWhc,EACb,IACAgc,GAAS,UAAYqP,EACfh1B,GAAA,QAAQ,MAAMm4B,GAAW,KAAM,CAACxS,GAAU,GAAG3oB,CAAI,CAAC,SAE5D,CACI2oB,GAAS,UAAY,KAElB,OAAA3lB,EACX,EAAG,IAAMo4B,GAAmB,GAAGp7B,CAAI,EAAG,YAE9B/mB,KAAKskD,EAAoB,EAAE,GAAGv9B,CAAI,EAAUxmB,GAAA,CAACilD,GAAejlD,CAAG,CAAC,EAAGwxB,GAAOnmB,GAAQmmB,CAAG,CAAC,EAGlG,SAASs2B,KAAethC,EAAM,CACnB,OAAA+gC,GAAap0B,GAAW,QAAQ,MAAMqwB,GAAQ,KAAM,CAACrwB,EAAS,GAAG3M,CAAI,CAAC,EAAG,IAAMi9B,GAAgB,GAAGj9B,CAAI,EAAG,gBAExG/mB,KAAKwkD,EAAiB,EAAE,GAAGz9B,CAAI,EAAG6+B,GAA0B7zB,GAAAI,GAASJ,CAAG,GAAKnmB,GAAQmmB,CAAG,CAAC,EAGrG,SAASu2B,MAAiBvhC,EAAM,CACrB,OAAA+gC,GAAap0B,GAAW,QAAQ,MAAM2vB,GAAU,KAAM,CAAC3vB,EAAS,GAAG3M,CAAI,CAAC,EAAG,IAAMw8B,GAAkB,GAAGx8B,CAAI,EAAG,kBAE5G/mB,KAAKukD,EAAmB,EAAE,GAAGx9B,CAAI,EAAG6+B,GAA0B7zB,GAAAI,GAASJ,CAAG,GAAKnmB,GAAQmmB,CAAG,CAAC,EAEvG,SAASw2B,GAAeC,EAAO,CACZhB,EAAAgB,EACf9Y,EAAS,YAAc8X,CAAA,CAGlB,SAAAiB,GAAGloD,EAAK2qC,EAAQ,CACrB,OAAO4c,GAAa,IAAM,CACtB,GAAI,CAACvnD,EACM,SAEX,MAAMw/C,GAAe5tB,GAAS+Y,CAAM,EAAIA,EAASgT,EAAQ,MACnDvnC,GAAU+xC,GAAiB3I,EAAY,EACvChjC,GAAW2yB,EAAS,gBAAgB/4B,GAASpW,CAAG,EAC/C,OAACimD,EAIFzpC,IAAY,KAHZ2kC,GAAa3kC,EAAQ,GACnBklC,GAAkBllC,EAAQ,GAC1BoV,GAASpV,EAAQ,GAE1B,IAAM,CAACxc,CAAG,EAAG,mBAA4BP,IACjC,QAAQ,MAAMA,GAAK,GAAIA,GAAM,CAACO,EAAK2qC,CAAM,CAAC,EAClD2a,GAA0B9zB,IAAAO,GAAUP,EAAG,CAAC,EAE/C,SAAS42B,GAAgBpoD,EAAK,CAC1B,IAAIgtC,EAAW,KACf,MAAMyS,GAAU5D,GAAwB1M,EAAUgX,EAAgB,MAAOxI,EAAQ,KAAK,EACtF,QAAS/5C,GAAI,EAAGA,GAAI67C,GAAQ,OAAQ77C,KAAK,CACrC,MAAMykD,GAAuBjC,EAAU,MAAM3G,GAAQ77C,EAAC,CAAC,GAAK,CAAC,EACvD0kD,EAAenZ,EAAS,gBAAgBkZ,GAAsBroD,CAAG,EACvE,GAAIsoD,GAAgB,KAAM,CACtBtb,EAAWsb,EACX,MACJ,CAEGtb,QAAA,CAGX,SAASub,EAAGvoD,EAAK,CACPgtC,QAAWob,GAAgBpoD,CAAG,EAE7BgtC,WAED6Y,EACIA,EAAO,GAAG7lD,CAAG,GAAK,GAClB,CAAC,GAGf,SAASmoD,GAAiBxd,EAAQ,CAC9B,OAAQyb,EAAU,MAAMzb,CAAM,GAAK,CAAC,EAG/B,SAAA6d,GAAiB7d,EAAQv0B,EAAS,CACvC,GAAIuuC,EAAU,CACV,MAAM8D,GAAW,CAAE,CAAC9d,CAAM,EAAGv0B,CAAQ,EACrC,UAAWpW,MAAOyoD,GACVroD,GAAOqoD,GAAUzoD,EAAG,GACLqkD,GAAAoE,GAASzoD,EAAG,CAAC,EAGpCoW,EAAUqyC,GAAS9d,CAAM,EAEnByb,EAAA,MAAMzb,CAAM,EAAIv0B,EAC1B+4B,EAAS,SAAWiX,EAAU,MAGzB,SAAAsC,GAAmB/d,EAAQv0B,EAAS,CACzCgwC,EAAU,MAAMzb,CAAM,EAAIyb,EAAU,MAAMzb,CAAM,GAAK,CAAC,EACtD,MAAM8d,GAAW,CAAE,CAAC9d,CAAM,EAAGv0B,CAAQ,EACrC,GAAIuuC,EACA,UAAW3kD,MAAOyoD,GACVroD,GAAOqoD,GAAUzoD,EAAG,GACLqkD,GAAAoE,GAASzoD,EAAG,CAAC,EAIxCoW,EAAUqyC,GAAS9d,CAAM,EACzBqB,GAAS51B,EAASgwC,EAAU,MAAMzb,CAAM,CAAC,EACzCwE,EAAS,SAAWiX,EAAU,MAGlC,SAASuC,GAAkBhe,EAAQ,CAC/B,OAAO0b,EAAiB,MAAM1b,CAAM,GAAK,CAAC,EAGrC,SAAAie,EAAkBje,EAAQpN,EAAQ,CACtB8oB,EAAA,MAAM1b,CAAM,EAAIpN,EACjC4R,EAAS,gBAAkBkX,EAAiB,MACxB9C,GAAApU,EAAUxE,EAAQpN,CAAM,EAGvC,SAAAsrB,EAAoBle,EAAQpN,EAAQ,CACxB8oB,EAAA,MAAM1b,CAAM,EAAI3/B,GAAOq7C,EAAiB,MAAM1b,CAAM,GAAK,CAAC,EAAGpN,CAAM,EACpF4R,EAAS,gBAAkBkX,EAAiB,MACxB9C,GAAApU,EAAUxE,EAAQpN,CAAM,EAGhD,SAASurB,EAAgBne,EAAQ,CAC7B,OAAO2b,EAAe,MAAM3b,CAAM,GAAK,CAAC,EAGnC,SAAAoe,GAAgBpe,EAAQpN,EAAQ,CACtB+oB,EAAA,MAAM3b,CAAM,EAAIpN,EAC/B4R,EAAS,cAAgBmX,EAAe,MACtB1C,GAAAzU,EAAUxE,EAAQpN,CAAM,EAGrC,SAAAyrB,GAAkBre,EAAQpN,EAAQ,CACxB+oB,EAAA,MAAM3b,CAAM,EAAI3/B,GAAOs7C,EAAe,MAAM3b,CAAM,GAAK,CAAC,EAAGpN,CAAM,EAChF4R,EAAS,cAAgBmX,EAAe,MACtB1C,GAAAzU,EAAUxE,EAAQpN,CAAM,EAG9CgoB,KAEIM,GAAUtb,KACJ5qB,GAAAkmC,EAAO,OAASr0B,GAAQ,CACtB00B,IACAvI,EAAQ,MAAQnsB,EAChB2d,EAAS,OAAS3d,EAClB4tB,GAAqBjQ,EAAUwO,EAAQ,MAAOwI,EAAgB,KAAK,EACvE,CACH,EACKxmC,GAAAkmC,EAAO,eAAiBr0B,GAAQ,CAC9B00B,IACAC,EAAgB,MAAQ30B,EACxB2d,EAAS,eAAiB3d,EAC1B4tB,GAAqBjQ,EAAUwO,EAAQ,MAAOwI,EAAgB,KAAK,EACvE,CACH,GAGL,MAAM8C,GAAW,CACb,GAAI1D,GACJ,OAAA5a,EACA,eAAAiT,EACA,IAAI,eAAgB,CACT,OAAAsI,CACX,EACA,IAAI,cAAc10B,EAAK,CACF00B,EAAA10B,EACbA,GAAOq0B,IACClI,EAAA,MAAQkI,EAAO,OAAO,MACdM,EAAA,MAAQN,EAAO,eAAe,MAC9CzG,GAAqBjQ,EAAUwO,EAAQ,MAAOwI,EAAgB,KAAK,EAE3E,EACA,IAAI,kBAAmB,CACnB,OAAO,OAAO,KAAKC,EAAU,KAAK,EAAE,KAAK,CAC7C,EACA,SAAApZ,GACA,IAAI,WAAY,CACL,OAAAga,CACX,EACA,IAAI,aAAc,CACd,OAAOC,GAAgB,CAAC,CAC5B,EACA,IAAI,UAAW,CACJ,OAAAlB,CACX,EACA,IAAI,aAAc,CACP,OAAAQ,CACX,EACA,IAAI,YAAY/0B,EAAK,CACF+0B,EAAA/0B,EACf2d,EAAS,YAAcoX,CAC3B,EACA,IAAI,cAAe,CACR,OAAAC,CACX,EACA,IAAI,aAAah1B,EAAK,CACFg1B,EAAAh1B,EAChB2d,EAAS,aAAeqX,CAC5B,EACA,IAAI,cAAe,CACR,OAAAC,CACX,EACA,IAAI,aAAaj1B,EAAK,CACFi1B,EAAAj1B,CACpB,EACA,IAAI,gBAAiB,CACV,OAAAk1B,CACX,EACA,IAAI,eAAel1B,EAAK,CACFk1B,EAAAl1B,EAClB2d,EAAS,eAAiBuX,CAC9B,EACA,IAAI,iBAAkB,CACX,OAAAI,CACX,EACA,IAAI,gBAAgBt1B,EAAK,CACFs1B,EAAAt1B,EACnB2d,EAAS,gBAAkB3d,CAC/B,EACA,IAAI,iBAAkB,CACX,OAAAu1B,CACX,EACA,IAAI,gBAAgBv1B,EAAK,CACFu1B,EAAAv1B,EACnB2d,EAAS,gBAAkB3d,CAC/B,EACA,EAAA9G,EACA,iBAAAy9B,GACA,iBAAAK,GACA,mBAAAE,GACA,0BAAAvB,GACA,0BAAAC,GACA,kBAAAC,GACA,kBAAAC,GACA,CAACpD,EAAoB,EAAG8D,EAC5B,EAEI,OAAAiB,GAAS,gBAAkBnL,GAC3BmL,GAAS,cAAgBlL,GACzBkL,GAAS,GAAK76B,GACd66B,GAAS,GAAKf,GACde,GAAS,GAAKV,EACdU,GAAS,EAAI19B,GACb09B,GAAS,EAAI/9B,GACb+9B,GAAS,kBAAoBN,GAC7BM,GAAS,kBAAoBL,EAC7BK,GAAS,oBAAsBJ,EAC/BI,GAAS,gBAAkBH,EAC3BG,GAAS,gBAAkBF,GAC3BE,GAAS,kBAAoBD,GAC7BC,GAAS9E,EAAsB,EAAI2B,EACnCmD,GAASlF,EAAoB,EAAI8D,EACjCoB,GAASjF,EAAmB,EAAI+D,GAChCkB,GAAShF,EAAiB,EAAI6D,EAW3BmB,EACX,CAsXA,MAAMC,GAAkB,CACpB,IAAK,CACD,KAAM,CAAC,OAAQ,MAAM,CACzB,EACA,OAAQ,CACJ,KAAM,MACV,EACA,MAAO,CACH,KAAM,OAEN,UAAY13B,GAAiCA,IAAQ,UAAYA,IAAQ,SACzE,QAAS,QACb,EACA,KAAM,CACF,KAAM,OAEd,EAEA,SAAS23B,GAET,CAAE,MAAAlrC,CAAM,EACRxZ,EAAM,CACF,OAAIA,EAAK,SAAW,GAAKA,EAAK,CAAC,IAAM,WAErBwZ,EAAM,QAAUA,EAAM,UAAY,CAAC,GAEpC,OAAO,CAACoC,EAAMrO,IACd,CACH,GAAGqO,EAEH,GAAIrO,EAAQ,OAASo3C,GAAWp3C,EAAQ,SAAW,CAACA,CAAO,CAE/D,EACD,EAAE,EAIEvN,EAAK,OAAO,CAAC4kD,EAAKrpD,IAAQ,CACvB,MAAAqgB,EAAOpC,EAAMje,CAAG,EACtB,OAAIqgB,IACIgpC,EAAArpD,CAAG,EAAIqgB,EAAK,GAEbgpC,CACX,EAAGj/C,IAAQ,CAEnB,CAEA,SAASk/C,GAAmBC,EAAK,CACtB,OAAAH,EACX,CAEA,MAAMI,GAAgDxrC,GAAA,CAElD,KAAM,SACN,MAAOhT,GAAO,CACV,QAAS,CACL,KAAM,OACN,SAAU,EACd,EACA,OAAQ,CACJ,KAAM,CAAC,OAAQ,MAAM,EAErB,UAAYwmB,GAAQK,GAASL,CAAG,GAAK,CAAC,MAAMA,CAAG,IAEpD03B,EAAe,EAGlB,MAAM7vC,EAAO8Z,EAAS,CACZ,MAAE,MAAAlV,EAAO,MAAAe,CAAA,EAAUmU,EAEnB4nB,EAAO1hC,EAAM,MACfowC,GAAQ,CACJ,SAAUpwC,EAAM,MAChB,eAAgB,GACnB,EACL,MAAO,IAAM,CACH,MAAA5U,EAAO,OAAO,KAAKwZ,CAAK,EAAE,OAAOje,GAAOA,IAAQ,GAAG,EACnDuU,EAAUnK,GAAO,EACnBiP,EAAM,SACN9E,EAAQ,OAAS8E,EAAM,QAEvBA,EAAM,SAAW,SACT9E,EAAA,OAASqd,GAASvY,EAAM,MAAM,EAAI,CAACA,EAAM,OAASA,EAAM,QAE9D,MAAAgwC,EAAMF,GAAkBh2B,EAAS1uB,CAAI,EAErC8T,EAAWwiC,EAAKgJ,EAAoB,EAAE1qC,EAAM,QAASgwC,EAAK90C,CAAO,EACjEm1C,EAAgB1+C,GAAOZ,GAAO,EAAG4U,CAAK,EACtCuqC,EAAM33B,GAASvY,EAAM,GAAG,GAAKyY,GAASzY,EAAM,GAAG,EAC/CA,EAAM,IACNiwC,GAAmB,EAClB,OAAAhrC,GAAEirC,EAAKG,EAAenxC,CAAQ,CACzC,EAER,CAAC,EAsDKoxC,GAAcH,GAGpB,SAASI,GAAQ9pD,EAAQ,CACrB,OAAOuL,GAAQvL,CAAM,GAAK,CAAC8xB,GAAS9xB,EAAO,CAAC,CAAC,CACjD,CACA,SAAS+pD,GAAgBxwC,EAAO8Z,EAAS22B,EAAUC,EAAe,CACxD,MAAE,MAAA9rC,EAAO,MAAAe,CAAA,EAAUmU,EACzB,MAAO,IAAM,CACH,MAAA5e,EAAU,CAAE,KAAM,EAAK,EAC7B,IAAIwuC,EAAY34C,GAAO,EACnBiP,EAAM,SACN9E,EAAQ,OAAS8E,EAAM,QAEvBuY,GAASvY,EAAM,MAAM,EACrB9E,EAAQ,IAAM8E,EAAM,OAEfyY,GAASzY,EAAM,MAAM,IAEtBuY,GAASvY,EAAM,OAAO,GAAG,IAEjB9E,EAAA,IAAM8E,EAAM,OAAO,KAGnB0pC,EAAA,OAAO,KAAK1pC,EAAM,MAAM,EAAE,OAAO,CAAC9E,EAASqV,IAC5CkgC,EAAS,SAASlgC,CAAI,EACvB5e,GAAOZ,KAAUmK,EAAS,CAAE,CAACqV,CAAI,EAAGvQ,EAAM,OAAOuQ,CAAI,EAAG,EACxDrV,EACPnK,IAAQ,GAET,MAAA4/C,EAAQD,EAAkB1wC,EAAM,MAAO9E,EAASwuC,CAAU,EAC5D,IAAAxqC,EAAW,CAAChE,EAAQ,GAAG,EACvBlJ,GAAQ2+C,CAAK,EACbzxC,EAAWyxC,EAAM,IAAI,CAAC/G,EAAM95C,IAAU,CAC5B,MAAAkX,EAAOpC,EAAMglC,EAAK,IAAI,EACtB9O,EAAO9zB,EACPA,EAAK,CAAE,CAAC4iC,EAAK,IAAI,EAAGA,EAAK,MAAO,MAAA95C,EAAO,MAAA6gD,CAAM,CAAC,EAC9C,CAAC/G,EAAK,KAAK,EACb,OAAA2G,GAAQzV,CAAI,IACZA,EAAK,CAAC,EAAE,IAAM,GAAG8O,EAAK,IAAI,IAAI95C,CAAK,IAEhCgrC,CAAA,CACV,EAEIviB,GAASo4B,CAAK,IACnBzxC,EAAW,CAACyxC,CAAK,GAErB,MAAMN,EAAgB1+C,GAAOZ,GAAO,EAAG4U,CAAK,EACtCuqC,EAAM33B,GAASvY,EAAM,GAAG,GAAKyY,GAASzY,EAAM,GAAG,EAC/CA,EAAM,IACNiwC,GAAmB,EAClB,OAAAhrC,GAAEirC,EAAKG,EAAenxC,CAAQ,CACzC,CACJ,CAEA,MAAM0xC,GAAiDjsC,GAAA,CAEnD,KAAM,SACN,MAAOhT,GAAO,CACV,MAAO,CACH,KAAM,OACN,SAAU,EACd,EACA,OAAQ,CACJ,KAAM,CAAC,OAAQ,MAAM,IAE1Bk+C,EAAe,EAGlB,MAAM7vC,EAAO8Z,EAAS,CACZ,MAAA4nB,EAAO1hC,EAAM,MACfowC,GAAQ,CACJ,SAAUpwC,EAAM,MAChB,eAAgB,GACnB,EACL,OAAOwwC,GAAgBxwC,EAAO8Z,EAASwwB,GAA4B,IAAIn9B,IAEvEu0B,EAAKkJ,EAAiB,EAAE,GAAGz9B,CAAI,CAAC,EAExC,CAAC,EAsBK0jC,GAAeD,GAGfE,GAAoDnsC,GAAA,CAEtD,KAAM,SACN,MAAOhT,GAAO,CACV,MAAO,CACH,KAAM,CAAC,OAAQ,IAAI,EACnB,SAAU,EACd,EACA,OAAQ,CACJ,KAAM,CAAC,OAAQ,MAAM,IAE1Bk+C,EAAe,EAGlB,MAAM7vC,EAAO8Z,EAAS,CACZ,MAAA4nB,EAAO1hC,EAAM,MACfowC,GAAQ,CACJ,SAAUpwC,EAAM,MAChB,eAAgB,GACnB,EACL,OAAOwwC,GAAgBxwC,EAAO8Z,EAASiwB,GAA8B,IAAI58B,IAEzEu0B,EAAKiJ,EAAmB,EAAE,GAAGx9B,CAAI,CAAC,EAE1C,CAAC,EAkBK4jC,GAAiBD,GAGvB,SAASE,GAActP,EAAMn7B,EAAU,CACnC,MAAM0qC,EAAevP,EACjB,GAAAA,EAAK,OAAS,cACd,OAAQuP,EAAa,cAAc1qC,CAAQ,GAAKm7B,EAAK,OAEpD,CACK,MAAAwP,EAAUD,EAAa,cAAc1qC,CAAQ,EACnD,OAAO2qC,GAAW,KACZA,EAAQ,WACRxP,EAAK,OAAO,WAE1B,CACA,SAASyP,GAAYzP,EAAM,CACjB,MAAA0P,EAAYC,GAAY,CAC1B,KAAM,CAAE,SAAA9qC,EAAU,UAAAo+B,EAAW,MAAA/9C,CAAU,EAAAyqD,EAEvC,GAAI,CAAC9qC,GAAY,CAACA,EAAS,EACjB,MAAAkkC,GAAgBD,GAAe,gBAAgB,EAEzD,MAAMoF,EAAWoB,GAActP,EAAMn7B,EAAS,CAAC,EAIzC+qC,EAAcC,GAAW3qD,CAAK,EAC7B,OACH,QAAQ,MAAMgpD,EAAS,EAAGA,EAAU,CAAC,GAAG4B,GAAWF,CAAW,CAAC,CAAC,EAChE1B,CACJ,CACJ,EAoCO,OACH,QApCa,CAACx5C,EAAIi7C,IAAY,CAC9B,KAAM,CAACI,EAAa7B,CAAQ,EAAIwB,EAASC,CAAO,EAC5CngB,IAAawQ,EAAK,SAAWkO,IAE7Bx5C,EAAG,cAAgBkQ,GAAMspC,EAAS,OAAQ,IAAM,CACpCyB,EAAA,UAAYA,EAAQ,SAAS,aAAa,EACrD,GAELj7C,EAAG,WAAaw5C,EAChBx5C,EAAG,YAAcq7C,CACrB,EA2BI,UA1BgBr7C,GAAO,CACnB86B,IAAa96B,EAAG,gBAChBA,EAAG,cAAc,EACjBA,EAAG,cAAgB,OACnB,OAAOA,EAAG,eAEVA,EAAG,aACHA,EAAG,WAAa,OAChB,OAAOA,EAAG,WAElB,EAiBI,aAhBW,CAACA,EAAI,CAAE,MAAAxP,KAAY,CAC9B,GAAIwP,EAAG,WAAY,CACf,MAAMw5C,EAAWx5C,EAAG,WACdk7C,EAAcC,GAAW3qD,CAAK,EACpCwP,EAAG,YAAc,QAAQ,MAAMw5C,EAAS,EAAGA,EAAU,CACjD,GAAG4B,GAAWF,CAAW,EAC5B,EAET,EASI,YARiBD,GAAY,CAC7B,KAAM,CAACI,CAAW,EAAIL,EAASC,CAAO,EACtC,MAAO,CAAE,YAAAI,CAAY,CACzB,CAMA,CACJ,CACA,SAASF,GAAW3qD,EAAO,CACnB,GAAA2xB,GAAS3xB,CAAK,EACP,OAAE,KAAMA,CAAM,EACzB,GACSolB,GAAcplB,CAAK,EAAG,CACvB,KAAE,SAAUA,GACN,MAAA6jD,GAAgBD,GAAe,eAAgB,MAAM,EAExD,OAAA5jD,CAAA,KAGD,OAAA6jD,GAAgBD,GAAe,aAAa,CAE1D,CACA,SAASgH,GAAW5qD,EAAO,CACvB,KAAM,CAAE,KAAA8M,EAAM,OAAA49B,EAAQ,KAAAnkB,EAAM,OAAAqzB,EAAQ,OAAAhH,GAAW5yC,EACzCsU,EAAU,CAAC,EACXiiC,EAAQhwB,GAAQ,CAAC,EACnB,OAAAoL,GAAS+Y,CAAM,IACfp2B,EAAQ,OAASo2B,GAEjB9Y,GAASgoB,CAAM,IACftlC,EAAQ,OAASslC,GAEjBhoB,GAASghB,CAAM,IACft+B,EAAQ,OAASs+B,GAEd,CAAC9lC,EAAMypC,EAAOjiC,CAAO,CAChC,CAEA,SAASw2C,GAAM9nC,EAAK83B,KAASxmC,EAAS,CAC5B,MAAAy2C,EAAgB3lC,GAAc9Q,EAAQ,CAAC,CAAC,EACxCA,EAAQ,CAAC,EACT,CAAC,EACD02C,EAAuB,CAAC,CAACD,EAAc,sBACvBj5B,GAAUi5B,EAAc,aAAa,EACrDA,EAAc,cACd,MAOF,CAAEC,EAA0C,OAAnBtB,GAAY,KAAe,OAAO,EAAE,QAAgBh2C,GAAAsP,EAAI,UAAUtP,EAAMg2C,EAAW,CAAC,EAC5G,CAAAO,GAAa,KAAM,OAAO,EAAE,WAAgBjnC,EAAI,UAAUtP,EAAMu2C,EAAY,CAAC,EAC7E,CAAAE,GAAe,KAAM,OAAO,EAAE,WAAgBnnC,EAAI,UAAUtP,EAAMy2C,EAAc,CAAC,GAIlFnnC,EAAI,UAAU,IAAKunC,GAAYzP,CAAI,CAAC,CAE5C,CAkiBA,MAAMmQ,MACoB,iBAAiB,EAE3C,SAASC,GAAW52C,EAAU,CAAC,EAAGqxC,EAAe,CAM7C,MAAMwF,EAAoBr5B,GAAUxd,EAAQ,eAAe,EACrDA,EAAQ,gBACR,GAEA82C,EAEI,GACJC,MAAkB,IAClB,CAACC,EAAaC,CAAQ,EAAIC,GAAal3C,CAAqB,EAC5Dm3C,EAAwBlhB,GAAkE,EAAE,EAMlG,SAASmhB,EAAc7gD,EAAW,CACvB,OAAAwgD,EAAY,IAAIxgD,CAAS,GAAK,KAEhC,SAAA8gD,EAAc9gD,EAAW8U,EAAU,CAC5B0rC,EAAA,IAAIxgD,EAAW8U,CAAQ,EAEvC,SAASisC,EAAiB/gD,EAAW,CACjCwgD,EAAY,OAAOxgD,CAAS,EAEhC,CACI,MAAMiwC,EAAO,CAET,IAAI,MAAO,CACP,MAEM,aACV,EAEA,IAAI,kBAAmB,CACZ,OAAAsQ,CACX,EAEA,MAAM,QAAQpoC,KAAQ1O,EAAS,CAS3B,GAHA0O,EAAI,oBAAsByoC,EACtBzoC,EAAA,QAAQA,EAAI,oBAAqB83B,CAAI,EAErC11B,GAAc9Q,EAAQ,CAAC,CAAC,EAAG,CACrB,MAAAyzB,EAAOzzB,EAAQ,CAAC,EACtBwmC,EAAK,iBACD/S,EAAK,iBACT+S,EAAK,gBACD/S,EAAK,gBAGb,IAAI8jB,EAAuB,KACNV,IACMU,EAAAC,GAAmB9oC,EAAK83B,EAAK,MAAM,GAIpDgQ,GAAA9nC,EAAK83B,EAAM,GAAGxmC,CAAO,EAO/B,MAAMkQ,EAAaxB,EAAI,QACvBA,EAAI,QAAU,IAAM,CAChB6oC,GAAwBA,EAAqB,EAC7C/Q,EAAK,QAAQ,EACFt2B,EAAA,CACf,CAmBJ,EAEA,IAAI,QAAS,CACF,OAAA+mC,CACX,EACA,SAAU,CACND,EAAY,KAAK,CACrB,EAEA,YAAAD,EAEA,cAAAK,EAEA,cAAAC,EAEA,iBAAAC,CACJ,EACO,OAAA9Q,CAAA,CAEf,CAEA,SAAS0O,GAAQl1C,EAAU,GAAI,CAC3B,MAAMqL,EAAW6lC,GAAmB,EACpC,GAAI7lC,GAAY,KACN,MAAAkkC,GAAgBD,GAAe,sBAAsB,EAE3D,IAACjkC,EAAS,MACVA,EAAS,WAAW,KAAO,MAC3B,CAACA,EAAS,WAAW,IAAI,oBACnB,MAAAkkC,GAAgBD,GAAe,aAAa,EAEhD,MAAA9I,EAAOiR,GAAgBpsC,CAAQ,EAC/BmlC,EAAKkH,GAAkBlR,CAAI,EAC3BiK,EAAmBH,GAAoBjlC,CAAQ,EAC/C6F,EAAQymC,GAAS33C,EAASywC,CAAgB,EAUhD,GAAIv/B,IAAU,SACU,OAAAq/B,GAAAC,EAAIxwC,EAASywC,CAAgB,EAC1CD,EAEX,GAAIt/B,IAAU,SAAU,CAEpB,IAAIwjC,EAAWkD,GAAYpR,EAAMn7B,EAAUrL,EAAQ,cAAc,EACjE,OAAI00C,GAAY,OAIZA,EAAWlE,GAERkE,CAAA,CAEX,MAAMqB,EAAevP,EACjB,IAAAkO,EAAWqB,EAAa,cAAc1qC,CAAQ,EAClD,GAAIqpC,GAAY,KAAM,CAClB,MAAMmD,EAAkBphD,GAAO,CAAC,EAAGuJ,CAAO,EACtC,WAAYywC,IACZoH,EAAgB,OAASpH,EAAiB,QAE1CD,IACAqH,EAAgB,OAASrH,GAE7BkE,EAAWtD,GAAeyG,CAAe,EACrC9B,EAAa,mBACbrB,EAAS7E,EAAa,EAClBkG,EAAa,iBAAiBrB,CAAQ,GAE/BoD,GAAA/B,EAAc1qC,EAAUqpC,CAAQ,EAClCqB,EAAA,cAAc1qC,EAAUqpC,CAAQ,EAE1C,OAAAA,CACX,CA0BA,SAASwC,GAAal3C,EAAS+3C,EAAY1G,EACzC,CACE,MAAMngC,EAAQC,GAAY,EAC1B,CACI,MAAMtf,EAEAqf,EAAM,IAAI,IAAMkgC,GAAepxC,CAAO,CAAC,EAC7C,GAAInO,GAAO,KACD,MAAA09C,GAAgBD,GAAe,gBAAgB,EAElD,OAACp+B,EAAOrf,CAAG,EAE1B,CACA,SAAS4lD,GAAgBpsC,EAAU,CAC/B,CACU,MAAAm7B,EAAOt/B,GAAQmE,EAAS,KAExBsrC,GADAtrC,EAAS,WAAW,IAAI,mBACR,EAEtB,GAAI,CAACm7B,EACD,MAAM+I,GAAiBlkC,EAAS,KAE1BikC,GAAe,2BADfA,GAAe,gBAC0B,EAE5C,OAAA9I,CAAA,CAEf,CAEA,SAASmR,GAAS33C,EAASywC,EAAkB,CAElC,OAAAja,GAAcx2B,CAAO,EACrB,WAAYywC,EACT,QACA,SACHzwC,EAAQ,SAELA,EAAQ,SADR,OAEd,CACA,SAAS03C,GAAkBlR,EAAM,CAE7B,OAAOA,EAAK,OAAS,cACXA,EAAK,OACLA,EAAK,OAAO,UAE1B,CACA,SAASoR,GAAYpR,EAAMj7C,EAAQysD,EAAe,GAAO,CACrD,IAAItD,EAAW,KACf,MAAMxpD,EAAOK,EAAO,KAChB,IAAAkS,EAAUw6C,GAA2B1sD,EAAQysD,CAAY,EAC7D,KAAOv6C,GAAW,MAAM,CACpB,MAAMs4C,EAAevP,EAsBrB,GArBIA,EAAK,OAAS,gBACHkO,EAAAqB,EAAa,cAAct4C,CAAO,GAiB7Ci3C,GAAY,MAGZxpD,IAASuS,EACT,MAEJA,EAAUA,EAAQ,OAEf,OAAAi3C,CACX,CACA,SAASuD,GAA2B1sD,EAAQysD,EAAe,GAAO,CAC9D,OAAIzsD,GAAU,KACH,KAICysD,GAEFzsD,EAAO,MAAM,KAAOA,EAAO,MAEzC,CACA,SAASusD,GAAetR,EAAMj7C,EAAQmpD,EAAU,CAGxCwD,GAAU,IAAM,GAYb3sD,CAAM,EACTqb,GAAY,IAAM,CAEd,MAAMuxC,EAAYzD,EAUlBlO,EAAK,iBAAiBj7C,CAAM,EAEtB,MAAA6sD,EAAUD,EAAUtI,EAAa,EACnCuI,IACQA,EAAA,EACR,OAAOD,EAAUtI,EAAa,IAEnCtkD,CAAM,CAEjB,CAyWA,MAAM8sD,GAAoB,CACtB,SACA,iBACA,kBACJ,EACMC,GAAsB,CAAC,IAAK,KAAM,IAAK,IAAK,KAAM,IAAI,EAE5D,SAASd,GAAmB9oC,EAAKgmC,EAAU,CACjC,MAAAlO,EAAc,cAAO,IAAI,EAC/B,OAAA6R,GAAkB,QAAgBhjC,GAAA,CAC9B,MAAMme,EAAO,OAAO,yBAAyBkhB,EAAUr/B,CAAI,EAC3D,GAAI,CAACme,EACK,MAAA+b,GAAgBD,GAAe,gBAAgB,EAEzD,MAAMiJ,EAAO9lC,GAAM+gB,EAAK,KAAK,EACvB,CACE,KAAM,CACF,OAAOA,EAAK,MAAM,KACtB,EAEA,IAAIvW,EAAK,CACLuW,EAAK,MAAM,MAAQvW,CAAA,CACvB,EAEF,CACE,KAAM,CACK,OAAAuW,EAAK,KAAOA,EAAK,IAAI,EAEpC,EACG,sBAAegT,EAAMnxB,EAAMkjC,CAAI,EACzC,EACG7pC,EAAA,OAAO,iBAAiB,MAAQ83B,EACpC8R,GAAoB,QAAkBxmD,GAAA,CAClC,MAAM0hC,EAAO,OAAO,yBAAyBkhB,EAAU5iD,CAAM,EAC7D,GAAI,CAAC0hC,GAAQ,CAACA,EAAK,MACT,MAAA+b,GAAgBD,GAAe,gBAAgB,EAEzD,OAAO,eAAe5gC,EAAI,OAAO,iBAAkB,IAAI5c,CAAM,GAAI0hC,CAAI,EACxE,EACe,IAAM,CAEX,OAAA9kB,EAAI,OAAO,iBAAiB,MACnC4pC,GAAoB,QAAkBxmD,GAAA,CAElC,OAAO4c,EAAI,OAAO,iBAAiB,IAAI5c,CAAM,EAAE,EAClD,CACL,CAEJ,CAGqBiyC,GAAA,EAIjBqE,GAAwB2E,EAAO,EAGnCxE,GAAwB4D,EAAY,EAEpCzD,GAAyBpB,EAAuB,EAEhD,GAA+C,0BAA2B,CACtE,MAAM/7C,EAASorC,GAAc,EAC7BprC,EAAO,YAAc,GACrB86C,GAAgB96C,EAAO,gCAAgC,CAC3D,CC14FA,IAAIitD,GAAa,OAAO,QAAU,UAAY,QAAU,OAAO,SAAW,QAAU,OCEhFC,GAAW,OAAO,MAAQ,UAAY,MAAQ,KAAK,SAAW,QAAU,KAGxEvtD,GAAOstD,IAAcC,IAAY,SAAS,aAAa,EAAG,ECH1DC,GAASxtD,GAAK,OCAdytD,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAO7BC,GAAuBD,GAAY,SAGnCE,GAAiBH,GAASA,GAAO,YAAc,OASnD,SAASI,GAAUptD,EAAO,CACxB,IAAIqtD,EAAQn4B,GAAe,KAAKl1B,EAAOmtD,EAAc,EACjD7D,EAAMtpD,EAAMmtD,EAAc,EAE9B,GAAI,CACFntD,EAAMmtD,EAAc,EAAI,OACxB,IAAIG,EAAW,EAChB,MAAW,EAEZ,IAAI/nD,EAAS2nD,GAAqB,KAAKltD,CAAK,EAC5C,OAAIstD,IACED,EACFrtD,EAAMmtD,EAAc,EAAI7D,EAExB,OAAOtpD,EAAMmtD,EAAc,GAGxB5nD,CACT,CC1CA,IAAI0nD,GAAc,OAAO,UAOrBC,GAAuBD,GAAY,SASvC,SAAS5hB,GAAerrC,EAAO,CAC7B,OAAOktD,GAAqB,KAAKltD,CAAK,CACxC,CCdA,IAAIutD,GAAU,gBACVC,GAAe,qBAGfL,GAAiBH,GAASA,GAAO,YAAc,OASnD,SAASS,GAAWztD,EAAO,CACzB,OAAIA,GAAS,KACJA,IAAU,OAAYwtD,GAAeD,GAEtCJ,IAAkBA,MAAkB,OAAOntD,CAAK,EACpDotD,GAAUptD,CAAK,EACfqrC,GAAerrC,CAAK,CAC1B,CCDA,SAAS0tD,GAAa1tD,EAAO,CAC3B,OAAOA,GAAS,MAAQ,OAAOA,GAAS,QAC1C,CCtBA,IAAI2tD,GAAY,kBAmBhB,SAASC,GAAS5tD,EAAO,CACvB,OAAO,OAAOA,GAAS,UACpB0tD,GAAa1tD,CAAK,GAAKytD,GAAWztD,CAAK,GAAK2tD,EACjD,CCjBA,SAASE,GAAStjD,EAAOujD,EAAU,CAKjC,QAJI5kD,EAAQ,GACR+T,EAAS1S,GAAS,KAAO,EAAIA,EAAM,OACnChF,EAAS,MAAM0X,CAAM,EAElB,EAAE/T,EAAQ+T,GACf1X,EAAO2D,CAAK,EAAI4kD,EAASvjD,EAAMrB,CAAK,EAAGA,EAAOqB,CAAK,EAErD,OAAOhF,CACT,CCKG,IAAC6F,GAAU,MAAM,QCjBhB2iD,GAAW,IAGXC,GAAchB,GAASA,GAAO,UAAY,OAC1CiB,GAAiBD,GAAcA,GAAY,SAAW,OAU1D,SAASE,GAAaluD,EAAO,CAE3B,GAAI,OAAOA,GAAS,SAClB,OAAOA,EAET,GAAIoL,GAAQpL,CAAK,EAEf,OAAO6tD,GAAS7tD,EAAOkuD,EAAY,EAAI,GAEzC,GAAIN,GAAS5tD,CAAK,EAChB,OAAOiuD,GAAiBA,GAAe,KAAKjuD,CAAK,EAAI,GAEvD,IAAIuF,EAAUvF,EAAQ,GACtB,OAAQuF,GAAU,KAAQ,EAAIvF,GAAU,CAAC+tD,GAAY,KAAOxoD,CAC9D,CCTA,SAASssB,GAAS7xB,EAAO,CACvB,IAAI8T,EAAO,OAAO9T,EAClB,OAAOA,GAAS,OAAS8T,GAAQ,UAAYA,GAAQ,WACvD,CCZA,SAASq6C,GAASnuD,EAAO,CACvB,OAAOA,CACT,CCdA,IAAIouD,GAAW,yBACXC,GAAU,oBACVC,GAAS,6BACTC,GAAW,iBAmBf,SAAS/8B,GAAWxxB,EAAO,CACzB,GAAI,CAAC6xB,GAAS7xB,CAAK,EACjB,MAAO,GAIT,IAAIspD,EAAMmE,GAAWztD,CAAK,EAC1B,OAAOspD,GAAO+E,IAAW/E,GAAOgF,IAAUhF,GAAO8E,IAAY9E,GAAOiF,EACtE,CC/BA,IAAIC,GAAahvD,GAAK,oBAAoB,ECAtCivD,GAAc,UAAW,CAC3B,IAAIC,EAAM,SAAS,KAAKF,IAAcA,GAAW,MAAQA,GAAW,KAAK,UAAY,EAAE,EACvF,OAAOE,EAAO,iBAAmBA,EAAO,EAC1C,IASA,SAASC,GAAS1oD,EAAM,CACtB,MAAO,CAAC,CAACwoD,IAAeA,MAAcxoD,CACxC,CChBA,IAAI2oD,GAAY,SAAS,UAGrBC,GAAeD,GAAU,SAS7B,SAASE,GAAS7oD,EAAM,CACtB,GAAIA,GAAQ,KAAM,CAChB,GAAI,CACF,OAAO4oD,GAAa,KAAK5oD,CAAI,CAC9B,MAAW,EACZ,GAAI,CACF,OAAQA,EAAO,EAChB,MAAW,EAChB,CACE,MAAO,EACT,CCdA,IAAI8oD,GAAe,sBAGfC,GAAe,8BAGfJ,GAAY,SAAS,UACrB3B,GAAc,OAAO,UAGrB4B,GAAeD,GAAU,SAGzB15B,GAAiB+3B,GAAY,eAG7BgC,GAAa,OAAO,IACtBJ,GAAa,KAAK35B,EAAc,EAAE,QAAQ65B,GAAc,MAAM,EAC7D,QAAQ,yDAA0D,OAAO,EAAI,GAChF,EAUA,SAASG,GAAalvD,EAAO,CAC3B,GAAI,CAAC6xB,GAAS7xB,CAAK,GAAK2uD,GAAS3uD,CAAK,EACpC,MAAO,GAET,IAAIwU,EAAUgd,GAAWxxB,CAAK,EAAIivD,GAAaD,GAC/C,OAAOx6C,EAAQ,KAAKs6C,GAAS9uD,CAAK,CAAC,CACrC,CCpCA,SAASuJ,GAAS4lD,EAAQpvD,EAAK,CAC7B,OAAOovD,GAAU,KAAO,OAAYA,EAAOpvD,CAAG,CAChD,CCCA,SAASqvD,GAAUD,EAAQpvD,EAAK,CAC9B,IAAIC,EAAQuJ,GAAS4lD,EAAQpvD,CAAG,EAChC,OAAOmvD,GAAalvD,CAAK,EAAIA,EAAQ,MACvC,CCVA,IAAI+J,GAAUqlD,GAAU5vD,GAAM,SAAS,ECDnC6vD,GAAe,OAAO,OAUtBC,GAAc,UAAW,CAC3B,SAASH,GAAS,EAClB,OAAO,SAASxoD,EAAO,CACrB,GAAI,CAACkrB,GAASlrB,CAAK,EACjB,MAAO,CAAE,EAEX,GAAI0oD,GACF,OAAOA,GAAa1oD,CAAK,EAE3BwoD,EAAO,UAAYxoD,EACnB,IAAIpB,EAAS,IAAI4pD,EACjB,OAAAA,EAAO,UAAY,OACZ5pD,CACR,CACH,ICjBA,SAASulD,GAAM7kD,EAAM2qB,EAASrK,EAAM,CAClC,OAAQA,EAAK,OAAM,CACjB,IAAK,GAAG,OAAOtgB,EAAK,KAAK2qB,CAAO,EAChC,IAAK,GAAG,OAAO3qB,EAAK,KAAK2qB,EAASrK,EAAK,CAAC,CAAC,EACzC,IAAK,GAAG,OAAOtgB,EAAK,KAAK2qB,EAASrK,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,EAClD,IAAK,GAAG,OAAOtgB,EAAK,KAAK2qB,EAASrK,EAAK,CAAC,EAAGA,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAC/D,CACE,OAAOtgB,EAAK,MAAM2qB,EAASrK,CAAI,CACjC,CCNA,SAASlb,IAAO,CAEhB,CCNA,SAASkkD,GAAUr5B,EAAQ3rB,EAAO,CAChC,IAAIrB,EAAQ,GACR+T,EAASiZ,EAAO,OAGpB,IADA3rB,IAAUA,EAAQ,MAAM0S,CAAM,GACvB,EAAE/T,EAAQ+T,GACf1S,EAAMrB,CAAK,EAAIgtB,EAAOhtB,CAAK,EAE7B,OAAOqB,CACT,CChBA,IAAIilD,GAAY,IACZC,GAAW,GAGXC,GAAY,KAAK,IAWrB,SAASC,GAAS1pD,EAAM,CACtB,IAAI2pD,EAAQ,EACRC,EAAa,EAEjB,OAAO,UAAW,CAChB,IAAIC,EAAQJ,GAAW,EACnBK,EAAYN,IAAYK,EAAQD,GAGpC,GADAA,EAAaC,EACTC,EAAY,GACd,GAAI,EAAEH,GAASJ,GACb,OAAO,UAAU,CAAC,OAGpBI,EAAQ,EAEV,OAAO3pD,EAAK,MAAM,OAAW,SAAS,CACvC,CACH,CCfA,SAAS+pD,GAAShwD,EAAO,CACvB,OAAO,UAAW,CAChB,OAAOA,CACR,CACH,CCrBA,IAAIiwD,GAAkB,UAAW,CAC/B,GAAI,CACF,IAAIhqD,EAAOmpD,GAAU,OAAQ,gBAAgB,EAC7C,OAAAnpD,EAAK,GAAI,GAAI,EAAE,EACRA,CACR,MAAW,EACd,ICIIiqD,GAAmBD,GAA4B,SAAShqD,EAAMkqD,EAAQ,CACxE,OAAOF,GAAehqD,EAAM,WAAY,CACtC,aAAgB,GAChB,WAAc,GACd,MAAS+pD,GAASG,CAAM,EACxB,SAAY,EAChB,CAAG,CACH,EAPwChC,GCDpCiC,GAAcT,GAASO,EAAe,ECF1C,SAASG,GAAU9lD,EAAOujD,EAAU,CAIlC,QAHI5kD,EAAQ,GACR+T,EAAS1S,GAAS,KAAO,EAAIA,EAAM,OAEhC,EAAErB,EAAQ+T,GACX6wC,EAASvjD,EAAMrB,CAAK,EAAGA,EAAOqB,CAAK,IAAM,IAA7C,CAIF,OAAOA,CACT,CCRA,SAAS+lD,GAAc/lD,EAAOgmD,EAAWC,EAAWC,EAAW,CAI7D,QAHIxzC,EAAS1S,EAAM,OACfrB,EAAQsnD,EAA6B,GAEX,EAAEtnD,EAAQ+T,GACtC,GAAIszC,EAAUhmD,EAAMrB,CAAK,EAAGA,EAAOqB,CAAK,EACtC,OAAOrB,EAGX,MAAO,EACT,CCdA,SAASwnD,GAAU1wD,EAAO,CACxB,OAAOA,IAAUA,CACnB,CCCA,SAAS2wD,GAAcpmD,EAAOvK,EAAOwwD,EAAW,CAI9C,QAHItnD,EAAQsnD,EAAY,EACpBvzC,EAAS1S,EAAM,OAEZ,EAAErB,EAAQ+T,GACf,GAAI1S,EAAMrB,CAAK,IAAMlJ,EACnB,OAAOkJ,EAGX,MAAO,EACT,CCPA,SAAS0nD,GAAYrmD,EAAOvK,EAAOwwD,EAAW,CAC5C,OAAOxwD,IAAUA,EACb2wD,GAAcpmD,EAAOvK,EAAOwwD,CAAS,EACrCF,GAAc/lD,EAAOmmD,GAAWF,CAAS,CAC/C,CCNA,SAASK,GAActmD,EAAOvK,EAAO,CACnC,IAAIid,EAAS1S,GAAS,KAAO,EAAIA,EAAM,OACvC,MAAO,CAAC,CAAC0S,GAAU2zC,GAAYrmD,EAAOvK,EAAO,CAAC,EAAI,EACpD,CCbA,IAAI8wD,GAAmB,iBAGnBC,GAAW,mBAUf,SAASC,GAAQhxD,EAAOid,EAAQ,CAC9B,IAAInJ,EAAO,OAAO9T,EAClB,OAAAid,EAASA,GAAiB6zC,GAEnB,CAAC,CAAC7zC,IACNnJ,GAAQ,UACNA,GAAQ,UAAYi9C,GAAS,KAAK/wD,CAAK,IACrCA,EAAQ,IAAMA,EAAQ,GAAK,GAAKA,EAAQid,CACjD,CCXA,SAASg0C,GAAgB9B,EAAQpvD,EAAKC,EAAO,CACvCD,GAAO,aAAekwD,GACxBA,GAAed,EAAQpvD,EAAK,CAC1B,aAAgB,GAChB,WAAc,GACd,MAASC,EACT,SAAY,EAClB,CAAK,EAEDmvD,EAAOpvD,CAAG,EAAIC,CAElB,CCUA,SAASkxD,GAAGlxD,EAAOmxD,EAAO,CACxB,OAAOnxD,IAAUmxD,GAAUnxD,IAAUA,GAASmxD,IAAUA,CAC1D,CC9BA,IAAIlE,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAYjC,SAAS55B,GAAY87B,EAAQpvD,EAAKC,EAAO,CACvC,IAAIoxD,EAAWjC,EAAOpvD,CAAG,GACrB,EAAEm1B,GAAe,KAAKi6B,EAAQpvD,CAAG,GAAKmxD,GAAGE,EAAUpxD,CAAK,IACvDA,IAAU,QAAa,EAAED,KAAOovD,KACnC8B,GAAgB9B,EAAQpvD,EAAKC,CAAK,CAEtC,CCZA,SAASqxD,GAAWn7B,EAAQ9c,EAAO+1C,EAAQmC,EAAY,CACrD,IAAIC,EAAQ,CAACpC,EACbA,IAAWA,EAAS,IAKpB,QAHIjmD,EAAQ,GACR+T,EAAS7D,EAAM,OAEZ,EAAElQ,EAAQ+T,GAAQ,CACvB,IAAIld,EAAMqZ,EAAMlQ,CAAK,EAEjBsoD,EAEA,OAEAA,IAAa,SACfA,EAAWt7B,EAAOn2B,CAAG,GAEnBwxD,EACFN,GAAgB9B,EAAQpvD,EAAKyxD,CAAQ,EAErCn+B,GAAY87B,EAAQpvD,EAAKyxD,CAAQ,CAEvC,CACE,OAAOrC,CACT,CClCA,IAAIsC,GAAY,KAAK,IAWrB,SAASC,GAASzrD,EAAMomC,EAAOyJ,EAAW,CACxC,OAAAzJ,EAAQolB,GAAUplB,IAAU,OAAapmC,EAAK,OAAS,EAAKomC,EAAO,CAAC,EAC7D,UAAW,CAMhB,QALI9lB,EAAO,UACPrd,EAAQ,GACR+T,EAASw0C,GAAUlrC,EAAK,OAAS8lB,EAAO,CAAC,EACzC9hC,EAAQ,MAAM0S,CAAM,EAEjB,EAAE/T,EAAQ+T,GACf1S,EAAMrB,CAAK,EAAIqd,EAAK8lB,EAAQnjC,CAAK,EAEnCA,EAAQ,GAER,QADIyoD,EAAY,MAAMtlB,EAAQ,CAAC,EACxB,EAAEnjC,EAAQmjC,GACfslB,EAAUzoD,CAAK,EAAIqd,EAAKrd,CAAK,EAE/B,OAAAyoD,EAAUtlB,CAAK,EAAIyJ,EAAUvrC,CAAK,EAC3BugD,GAAM7kD,EAAM,KAAM0rD,CAAS,CACnC,CACH,CCrBA,SAASC,GAAS3rD,EAAMomC,EAAO,CAC7B,OAAO+jB,GAAYsB,GAASzrD,EAAMomC,EAAO8hB,EAAQ,EAAGloD,EAAO,EAAE,CAC/D,CCbA,IAAI6qD,GAAmB,iBA4BvB,SAASe,GAAS7xD,EAAO,CACvB,OAAO,OAAOA,GAAS,UACrBA,EAAQ,IAAMA,EAAQ,GAAK,GAAKA,GAAS8wD,EAC7C,CCJA,SAASgB,GAAY9xD,EAAO,CAC1B,OAAOA,GAAS,MAAQ6xD,GAAS7xD,EAAM,MAAM,GAAK,CAACwxB,GAAWxxB,CAAK,CACrE,CCfA,SAAS+xD,GAAe/xD,EAAOkJ,EAAOimD,EAAQ,CAC5C,GAAI,CAACt9B,GAASs9B,CAAM,EAClB,MAAO,GAET,IAAIr7C,EAAO,OAAO5K,EAClB,OAAI4K,GAAQ,SACHg+C,GAAY3C,CAAM,GAAK6B,GAAQ9nD,EAAOimD,EAAO,MAAM,EACnDr7C,GAAQ,UAAY5K,KAASimD,GAE7B+B,GAAG/B,EAAOjmD,CAAK,EAAGlJ,CAAK,EAEzB,EACT,CCjBA,SAASgyD,GAAeC,EAAU,CAChC,OAAOL,GAAS,SAASzC,EAAQ+C,EAAS,CACxC,IAAIhpD,EAAQ,GACR+T,EAASi1C,EAAQ,OACjBZ,EAAar0C,EAAS,EAAIi1C,EAAQj1C,EAAS,CAAC,EAAI,OAChDjC,EAAQiC,EAAS,EAAIi1C,EAAQ,CAAC,EAAI,OAWtC,IATAZ,EAAcW,EAAS,OAAS,GAAK,OAAOX,GAAc,YACrDr0C,IAAUq0C,GACX,OAEAt2C,GAAS+2C,GAAeG,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAGl3C,CAAK,IACvDs2C,EAAar0C,EAAS,EAAI,OAAYq0C,EACtCr0C,EAAS,GAEXkyC,EAAS,OAAOA,CAAM,EACf,EAAEjmD,EAAQ+T,GAAQ,CACvB,IAAIiZ,EAASg8B,EAAQhpD,CAAK,EACtBgtB,GACF+7B,EAAS9C,EAAQj5B,EAAQhtB,EAAOooD,CAAU,CAElD,CACI,OAAOnC,CACX,CAAG,CACH,CCjCA,IAAIlC,GAAc,OAAO,UASzB,SAASkF,GAAYnyD,EAAO,CAC1B,IAAIoyD,EAAOpyD,GAASA,EAAM,YACtB2G,EAAS,OAAOyrD,GAAQ,YAAcA,EAAK,WAAcnF,GAE7D,OAAOjtD,IAAU2G,CACnB,CCNA,SAAS0rD,GAAUpnC,EAAG6iC,EAAU,CAI9B,QAHI5kD,EAAQ,GACR3D,EAAS,MAAM0lB,CAAC,EAEb,EAAE/hB,EAAQ+hB,GACf1lB,EAAO2D,CAAK,EAAI4kD,EAAS5kD,CAAK,EAEhC,OAAO3D,CACT,CCbA,IAAI+sD,GAAU,qBASd,SAASC,GAAgBvyD,EAAO,CAC9B,OAAO0tD,GAAa1tD,CAAK,GAAKytD,GAAWztD,CAAK,GAAKsyD,EACrD,CCXA,IAAIrF,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAG7BuF,GAAuBvF,GAAY,qBAoBnCwF,GAAcF,GAAgB,UAAW,CAAE,OAAO,SAAU,GAAI,EAAIA,GAAkB,SAASvyD,EAAO,CACxG,OAAO0tD,GAAa1tD,CAAK,GAAKk1B,GAAe,KAAKl1B,EAAO,QAAQ,GAC/D,CAACwyD,GAAqB,KAAKxyD,EAAO,QAAQ,CAC9C,ECpBA,SAAS0yD,IAAY,CACnB,MAAO,EACT,CCXA,IAAIC,GAAc,OAAO,SAAW,UAAY,SAAW,CAAC,QAAQ,UAAY,QAG5EC,GAAaD,IAAe,OAAO,QAAU,UAAY,QAAU,CAAC,OAAO,UAAY,OAGvFE,GAAgBD,IAAcA,GAAW,UAAYD,GAGrDG,GAASD,GAAgBrzD,GAAK,OAAS,OAGvCuzD,GAAiBD,GAASA,GAAO,SAAW,OAmB5CxhC,GAAWyhC,IAAkBL,GC9B7BJ,GAAU,qBACVU,GAAW,iBACXC,GAAU,mBACVC,GAAU,gBACVC,GAAW,iBACX9E,GAAU,oBACV+E,GAAS,eACTC,GAAY,kBACZC,GAAY,kBACZC,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZC,GAAa,mBAEbC,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAGZC,GAAiB,CAAE,EACvBA,GAAeT,EAAU,EAAIS,GAAeR,EAAU,EACtDQ,GAAeP,EAAO,EAAIO,GAAeN,EAAQ,EACjDM,GAAeL,EAAQ,EAAIK,GAAeJ,EAAQ,EAClDI,GAAeH,EAAe,EAAIG,GAAeF,EAAS,EAC1DE,GAAeD,EAAS,EAAI,GAC5BC,GAAehC,EAAO,EAAIgC,GAAetB,EAAQ,EACjDsB,GAAeX,EAAc,EAAIW,GAAerB,EAAO,EACvDqB,GAAeV,EAAW,EAAIU,GAAepB,EAAO,EACpDoB,GAAenB,EAAQ,EAAImB,GAAejG,EAAO,EACjDiG,GAAelB,EAAM,EAAIkB,GAAejB,EAAS,EACjDiB,GAAehB,EAAS,EAAIgB,GAAef,EAAS,EACpDe,GAAed,EAAM,EAAIc,GAAeb,EAAS,EACjDa,GAAeZ,EAAU,EAAI,GAS7B,SAASa,GAAiBv0D,EAAO,CAC/B,OAAO0tD,GAAa1tD,CAAK,GACvB6xD,GAAS7xD,EAAM,MAAM,GAAK,CAAC,CAACs0D,GAAe7G,GAAWztD,CAAK,CAAC,CAChE,CClDA,SAASw0D,GAAUvuD,EAAM,CACvB,OAAO,SAASjG,EAAO,CACrB,OAAOiG,EAAKjG,CAAK,CAClB,CACH,CCRA,IAAI2yD,GAAc,OAAO,SAAW,UAAY,SAAW,CAAC,QAAQ,UAAY,QAG5EC,GAAaD,IAAe,OAAO,QAAU,UAAY,QAAU,CAAC,OAAO,UAAY,OAGvFE,GAAgBD,IAAcA,GAAW,UAAYD,GAGrD8B,GAAc5B,IAAiB/F,GAAW,QAG1C4H,GAAY,UAAW,CACzB,GAAI,CAEF,IAAIC,EAAQ/B,IAAcA,GAAW,SAAWA,GAAW,QAAQ,MAAM,EAAE,MAE3E,OAAI+B,GAKGF,IAAeA,GAAY,SAAWA,GAAY,QAAQ,MAAM,CACxE,MAAW,EACd,ICtBIG,GAAmBF,IAAYA,GAAS,aAmBxCngC,GAAeqgC,GAAmBJ,GAAUI,EAAgB,EAAIL,GChBhEtH,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAUjC,SAAS4H,GAAc70D,EAAO80D,EAAW,CACvC,IAAIC,EAAQ3pD,GAAQpL,CAAK,EACrBg1D,EAAQ,CAACD,GAAStC,GAAYzyD,CAAK,EACnCi1D,EAAS,CAACF,GAAS,CAACC,GAAS1jC,GAAStxB,CAAK,EAC3Ck1D,EAAS,CAACH,GAAS,CAACC,GAAS,CAACC,GAAU1gC,GAAav0B,CAAK,EAC1Dm1D,EAAcJ,GAASC,GAASC,GAAUC,EAC1C3vD,EAAS4vD,EAAc9C,GAAUryD,EAAM,OAAQ,MAAM,EAAI,CAAE,EAC3Did,EAAS1X,EAAO,OAEpB,QAASxF,KAAOC,GACT80D,GAAa5/B,GAAe,KAAKl1B,EAAOD,CAAG,IAC5C,EAAEo1D,IAECp1D,GAAO,UAENk1D,IAAWl1D,GAAO,UAAYA,GAAO,WAErCm1D,IAAWn1D,GAAO,UAAYA,GAAO,cAAgBA,GAAO,eAE7DixD,GAAQjxD,EAAKkd,CAAM,KAExB1X,EAAO,KAAKxF,CAAG,EAGnB,OAAOwF,CACT,CCtCA,SAAS6vD,GAAQnvD,EAAM6vC,EAAW,CAChC,OAAO,SAASsT,EAAK,CACnB,OAAOnjD,EAAK6vC,EAAUsT,CAAG,CAAC,CAC3B,CACH,CCTA,IAAIiM,GAAaD,GAAQ,OAAO,KAAM,MAAM,ECCxCnI,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eASjC,SAASqI,GAASnG,EAAQ,CACxB,GAAI,CAACgD,GAAYhD,CAAM,EACrB,OAAOkG,GAAWlG,CAAM,EAE1B,IAAI5pD,EAAS,CAAE,EACf,QAASxF,KAAO,OAAOovD,CAAM,EACvBj6B,GAAe,KAAKi6B,EAAQpvD,CAAG,GAAKA,GAAO,eAC7CwF,EAAO,KAAKxF,CAAG,EAGnB,OAAOwF,CACT,CCKA,SAASf,GAAK2qD,EAAQ,CACpB,OAAO2C,GAAY3C,CAAM,EAAI0F,GAAc1F,CAAM,EAAImG,GAASnG,CAAM,CACtE,CCzBA,SAASoG,GAAapG,EAAQ,CAC5B,IAAI5pD,EAAS,CAAE,EACf,GAAI4pD,GAAU,KACZ,QAASpvD,KAAO,OAAOovD,CAAM,EAC3B5pD,EAAO,KAAKxF,CAAG,EAGnB,OAAOwF,CACT,CCZA,IAAI0nD,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eASjC,SAASuI,GAAWrG,EAAQ,CAC1B,GAAI,CAACt9B,GAASs9B,CAAM,EAClB,OAAOoG,GAAapG,CAAM,EAE5B,IAAIsG,EAAUtD,GAAYhD,CAAM,EAC5B5pD,EAAS,CAAE,EAEf,QAASxF,KAAOovD,EACRpvD,GAAO,gBAAkB01D,GAAW,CAACvgC,GAAe,KAAKi6B,EAAQpvD,CAAG,IACxEwF,EAAO,KAAKxF,CAAG,EAGnB,OAAOwF,CACT,CCHA,SAASmwD,GAAOvG,EAAQ,CACtB,OAAO2C,GAAY3C,CAAM,EAAI0F,GAAc1F,EAAQ,EAAI,EAAIqG,GAAWrG,CAAM,CAC9E,CCzBA,IAAIwG,GAAe,mDACfC,GAAgB,QAUpB,SAASC,GAAM71D,EAAOmvD,EAAQ,CAC5B,GAAI/jD,GAAQpL,CAAK,EACf,MAAO,GAET,IAAI8T,EAAO,OAAO9T,EAClB,OAAI8T,GAAQ,UAAYA,GAAQ,UAAYA,GAAQ,WAChD9T,GAAS,MAAQ4tD,GAAS5tD,CAAK,EAC1B,GAEF41D,GAAc,KAAK51D,CAAK,GAAK,CAAC21D,GAAa,KAAK31D,CAAK,GACzDmvD,GAAU,MAAQnvD,KAAS,OAAOmvD,CAAM,CAC7C,CCvBA,IAAI2G,GAAe1G,GAAU,OAAQ,QAAQ,ECM7C,SAAS2G,IAAY,CACnB,KAAK,SAAWD,GAAeA,GAAa,IAAI,EAAI,CAAE,EACtD,KAAK,KAAO,CACd,CCFA,SAASE,GAAWj2D,EAAK,CACvB,IAAIwF,EAAS,KAAK,IAAIxF,CAAG,GAAK,OAAO,KAAK,SAASA,CAAG,EACtD,YAAK,MAAQwF,EAAS,EAAI,EACnBA,CACT,CCXA,IAAI0wD,GAAiB,4BAGjBhJ,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAWjC,SAASiJ,GAAQn2D,EAAK,CACpB,IAAIyK,EAAO,KAAK,SAChB,GAAIsrD,GAAc,CAChB,IAAIvwD,EAASiF,EAAKzK,CAAG,EACrB,OAAOwF,IAAW0wD,GAAiB,OAAY1wD,CACnD,CACE,OAAO2vB,GAAe,KAAK1qB,EAAMzK,CAAG,EAAIyK,EAAKzK,CAAG,EAAI,MACtD,CCxBA,IAAIktD,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAWjC,SAASkJ,GAAQp2D,EAAK,CACpB,IAAIyK,EAAO,KAAK,SAChB,OAAOsrD,GAAgBtrD,EAAKzK,CAAG,IAAM,OAAam1B,GAAe,KAAK1qB,EAAMzK,CAAG,CACjF,CCjBA,IAAIk2D,GAAiB,4BAYrB,SAASG,GAAQr2D,EAAKC,EAAO,CAC3B,IAAIwK,EAAO,KAAK,SAChB,YAAK,MAAQ,KAAK,IAAIzK,CAAG,EAAI,EAAI,EACjCyK,EAAKzK,CAAG,EAAK+1D,IAAgB91D,IAAU,OAAai2D,GAAiBj2D,EAC9D,IACT,CCPA,SAASq2D,GAAKC,EAAS,CACrB,IAAIptD,EAAQ,GACR+T,EAASq5C,GAAW,KAAO,EAAIA,EAAQ,OAG3C,IADA,KAAK,MAAO,EACL,EAAEptD,EAAQ+T,GAAQ,CACvB,IAAIs5C,EAAQD,EAAQptD,CAAK,EACzB,KAAK,IAAIqtD,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAC/B,CACA,CAGAF,GAAK,UAAU,MAAQN,GACvBM,GAAK,UAAU,OAAYL,GAC3BK,GAAK,UAAU,IAAMH,GACrBG,GAAK,UAAU,IAAMF,GACrBE,GAAK,UAAU,IAAMD,GCtBrB,SAASI,IAAiB,CACxB,KAAK,SAAW,CAAE,EAClB,KAAK,KAAO,CACd,CCAA,SAASC,GAAalsD,EAAOxK,EAAK,CAEhC,QADIkd,EAAS1S,EAAM,OACZ0S,KACL,GAAIi0C,GAAG3mD,EAAM0S,CAAM,EAAE,CAAC,EAAGld,CAAG,EAC1B,OAAOkd,EAGX,MAAO,EACT,CCfA,IAAIy5C,GAAa,MAAM,UAGnBC,GAASD,GAAW,OAWxB,SAASE,GAAgB72D,EAAK,CAC5B,IAAIyK,EAAO,KAAK,SACZtB,EAAQutD,GAAajsD,EAAMzK,CAAG,EAElC,GAAImJ,EAAQ,EACV,MAAO,GAET,IAAIkrB,EAAY5pB,EAAK,OAAS,EAC9B,OAAItB,GAASkrB,EACX5pB,EAAK,IAAK,EAEVmsD,GAAO,KAAKnsD,EAAMtB,EAAO,CAAC,EAE5B,EAAE,KAAK,KACA,EACT,CCrBA,SAAS2tD,GAAa92D,EAAK,CACzB,IAAIyK,EAAO,KAAK,SACZtB,EAAQutD,GAAajsD,EAAMzK,CAAG,EAElC,OAAOmJ,EAAQ,EAAI,OAAYsB,EAAKtB,CAAK,EAAE,CAAC,CAC9C,CCLA,SAAS4tD,GAAa/2D,EAAK,CACzB,OAAO02D,GAAa,KAAK,SAAU12D,CAAG,EAAI,EAC5C,CCDA,SAASg3D,GAAah3D,EAAKC,EAAO,CAChC,IAAIwK,EAAO,KAAK,SACZtB,EAAQutD,GAAajsD,EAAMzK,CAAG,EAElC,OAAImJ,EAAQ,GACV,EAAE,KAAK,KACPsB,EAAK,KAAK,CAACzK,EAAKC,CAAK,CAAC,GAEtBwK,EAAKtB,CAAK,EAAE,CAAC,EAAIlJ,EAEZ,IACT,CCVA,SAASg3D,GAAUV,EAAS,CAC1B,IAAIptD,EAAQ,GACR+T,EAASq5C,GAAW,KAAO,EAAIA,EAAQ,OAG3C,IADA,KAAK,MAAO,EACL,EAAEptD,EAAQ+T,GAAQ,CACvB,IAAIs5C,EAAQD,EAAQptD,CAAK,EACzB,KAAK,IAAIqtD,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAC/B,CACA,CAGAS,GAAU,UAAU,MAAQR,GAC5BQ,GAAU,UAAU,OAAYJ,GAChCI,GAAU,UAAU,IAAMH,GAC1BG,GAAU,UAAU,IAAMF,GAC1BE,GAAU,UAAU,IAAMD,GCzB1B,IAAI3tD,GAAMgmD,GAAU5vD,GAAM,KAAK,ECO/B,SAASy3D,IAAgB,CACvB,KAAK,KAAO,EACZ,KAAK,SAAW,CACd,KAAQ,IAAIZ,GACZ,IAAO,IAAKjtD,IAAO4tD,IACnB,OAAU,IAAIX,EACf,CACH,CCXA,SAASa,GAAUl3D,EAAO,CACxB,IAAI8T,EAAO,OAAO9T,EAClB,OAAQ8T,GAAQ,UAAYA,GAAQ,UAAYA,GAAQ,UAAYA,GAAQ,UACvE9T,IAAU,YACVA,IAAU,IACjB,CCFA,SAASm3D,GAAWv2D,EAAKb,EAAK,CAC5B,IAAIyK,EAAO5J,EAAI,SACf,OAAOs2D,GAAUn3D,CAAG,EAChByK,EAAK,OAAOzK,GAAO,SAAW,SAAW,MAAM,EAC/CyK,EAAK,GACX,CCJA,SAAS4sD,GAAer3D,EAAK,CAC3B,IAAIwF,EAAS4xD,GAAW,KAAMp3D,CAAG,EAAE,OAAUA,CAAG,EAChD,YAAK,MAAQwF,EAAS,EAAI,EACnBA,CACT,CCJA,SAAS8xD,GAAYt3D,EAAK,CACxB,OAAOo3D,GAAW,KAAMp3D,CAAG,EAAE,IAAIA,CAAG,CACtC,CCFA,SAASu3D,GAAYv3D,EAAK,CACxB,OAAOo3D,GAAW,KAAMp3D,CAAG,EAAE,IAAIA,CAAG,CACtC,CCDA,SAASw3D,GAAYx3D,EAAKC,EAAO,CAC/B,IAAIwK,EAAO2sD,GAAW,KAAMp3D,CAAG,EAC3BsJ,EAAOmB,EAAK,KAEhB,OAAAA,EAAK,IAAIzK,EAAKC,CAAK,EACnB,KAAK,MAAQwK,EAAK,MAAQnB,EAAO,EAAI,EAC9B,IACT,CCNA,SAASmuD,GAASlB,EAAS,CACzB,IAAIptD,EAAQ,GACR+T,EAASq5C,GAAW,KAAO,EAAIA,EAAQ,OAG3C,IADA,KAAK,MAAO,EACL,EAAEptD,EAAQ+T,GAAQ,CACvB,IAAIs5C,EAAQD,EAAQptD,CAAK,EACzB,KAAK,IAAIqtD,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CAC/B,CACA,CAGAiB,GAAS,UAAU,MAAQP,GAC3BO,GAAS,UAAU,OAAYJ,GAC/BI,GAAS,UAAU,IAAMH,GACzBG,GAAS,UAAU,IAAMF,GACzBE,GAAS,UAAU,IAAMD,GC1BzB,IAAIE,GAAkB,sBA8CtB,SAASC,GAAQzxD,EAAM62C,EAAU,CAC/B,GAAI,OAAO72C,GAAQ,YAAe62C,GAAY,MAAQ,OAAOA,GAAY,WACvE,MAAM,IAAI,UAAU2a,EAAe,EAErC,IAAIE,EAAW,UAAW,CACxB,IAAIpxC,EAAO,UACPxmB,EAAM+8C,EAAWA,EAAS,MAAM,KAAMv2B,CAAI,EAAIA,EAAK,CAAC,EACpDyK,EAAQ2mC,EAAS,MAErB,GAAI3mC,EAAM,IAAIjxB,CAAG,EACf,OAAOixB,EAAM,IAAIjxB,CAAG,EAEtB,IAAIwF,EAASU,EAAK,MAAM,KAAMsgB,CAAI,EAClC,OAAAoxC,EAAS,MAAQ3mC,EAAM,IAAIjxB,EAAKwF,CAAM,GAAKyrB,EACpCzrB,CACR,EACD,OAAAoyD,EAAS,MAAQ,IAAKD,GAAQ,OAASF,IAChCG,CACT,CAGAD,GAAQ,MAAQF,GCnEhB,IAAII,GAAmB,IAUvB,SAASC,GAAc5xD,EAAM,CAC3B,IAAIV,EAASmyD,GAAQzxD,EAAM,SAASlG,EAAK,CACvC,OAAIixB,EAAM,OAAS4mC,IACjB5mC,EAAM,MAAO,EAERjxB,CACX,CAAG,EAEGixB,EAAQzrB,EAAO,MACnB,OAAOA,CACT,CCpBA,IAAIuyD,GAAa,mGAGbC,GAAe,WASfC,GAAeH,GAAc,SAAS1H,EAAQ,CAChD,IAAI5qD,EAAS,CAAE,EACf,OAAI4qD,EAAO,WAAW,CAAC,IAAM,IAC3B5qD,EAAO,KAAK,EAAE,EAEhB4qD,EAAO,QAAQ2H,GAAY,SAAS3iD,EAAOouC,EAAQ0U,EAAOC,EAAW,CACnE3yD,EAAO,KAAK0yD,EAAQC,EAAU,QAAQH,GAAc,IAAI,EAAKxU,GAAUpuC,CAAM,CACjF,CAAG,EACM5P,CACT,CAAC,ECDD,SAASsrB,GAAS7wB,EAAO,CACvB,OAAOA,GAAS,KAAO,GAAKkuD,GAAaluD,CAAK,CAChD,CCZA,SAASm4D,GAASn4D,EAAOmvD,EAAQ,CAC/B,OAAI/jD,GAAQpL,CAAK,EACRA,EAEF61D,GAAM71D,EAAOmvD,CAAM,EAAI,CAACnvD,CAAK,EAAIg4D,GAAannC,GAAS7wB,CAAK,CAAC,CACtE,CCfA,IAAI+tD,GAAW,IASf,SAASqK,GAAMp4D,EAAO,CACpB,GAAI,OAAOA,GAAS,UAAY4tD,GAAS5tD,CAAK,EAC5C,OAAOA,EAET,IAAIuF,EAAUvF,EAAQ,GACtB,OAAQuF,GAAU,KAAQ,EAAIvF,GAAU,CAAC+tD,GAAY,KAAOxoD,CAC9D,CCPA,SAAS8yD,GAAQlJ,EAAQriD,EAAM,CAC7BA,EAAOqrD,GAASrrD,EAAMqiD,CAAM,EAK5B,QAHIjmD,EAAQ,EACR+T,EAASnQ,EAAK,OAEXqiD,GAAU,MAAQjmD,EAAQ+T,GAC/BkyC,EAASA,EAAOiJ,GAAMtrD,EAAK5D,GAAO,CAAC,CAAC,EAEtC,OAAQA,GAASA,GAAS+T,EAAUkyC,EAAS,MAC/C,CCbA,SAASmJ,GAAU/tD,EAAOvB,EAAQ,CAKhC,QAJIE,EAAQ,GACR+T,EAASjU,EAAO,OAChByB,EAASF,EAAM,OAEZ,EAAErB,EAAQ+T,GACf1S,EAAME,EAASvB,CAAK,EAAIF,EAAOE,CAAK,EAEtC,OAAOqB,CACT,CCZA,IAAIguD,GAAmBvL,GAASA,GAAO,mBAAqB,OAS5D,SAASwL,GAAcx4D,EAAO,CAC5B,OAAOoL,GAAQpL,CAAK,GAAKyyD,GAAYzyD,CAAK,GACxC,CAAC,EAAEu4D,IAAoBv4D,GAASA,EAAMu4D,EAAgB,EAC1D,CCHA,SAASE,GAAYluD,EAAO4U,EAAOoxC,EAAWmI,EAAUnzD,EAAQ,CAC9D,IAAI2D,EAAQ,GACR+T,EAAS1S,EAAM,OAKnB,IAHAgmD,IAAcA,EAAYiI,IAC1BjzD,IAAWA,EAAS,IAEb,EAAE2D,EAAQ+T,GAAQ,CACvB,IAAIjd,EAAQuK,EAAMrB,CAAK,EACNqnD,EAAUvwD,CAAK,EAK5Bs4D,GAAU/yD,EAAQvF,CAAK,EAGzBuF,EAAOA,EAAO,MAAM,EAAIvF,CAE9B,CACE,OAAOuF,CACT,CCnBA,SAASozD,GAAQpuD,EAAO,CACtB,IAAI0S,EAAS1S,GAAS,KAAO,EAAIA,EAAM,OACvC,OAAO0S,EAASw7C,GAAYluD,CAAQ,EAAI,CAAE,CAC5C,CCRA,SAASquD,GAAS3yD,EAAM,CACtB,OAAOmqD,GAAYsB,GAASzrD,EAAM,OAAW0yD,EAAO,EAAG1yD,EAAO,EAAE,CAClE,CCVA,IAAI4yD,GAAezD,GAAQ,OAAO,eAAgB,MAAM,ECEpD9B,GAAY,kBAGZ1E,GAAY,SAAS,UACrB3B,GAAc,OAAO,UAGrB4B,GAAeD,GAAU,SAGzB15B,GAAiB+3B,GAAY,eAG7B6L,GAAmBjK,GAAa,KAAK,MAAM,EA8B/C,SAASzpC,GAAcplB,EAAO,CAC5B,GAAI,CAAC0tD,GAAa1tD,CAAK,GAAKytD,GAAWztD,CAAK,GAAKszD,GAC/C,MAAO,GAET,IAAI3sD,EAAQkyD,GAAa74D,CAAK,EAC9B,GAAI2G,IAAU,KACZ,MAAO,GAET,IAAIyrD,EAAOl9B,GAAe,KAAKvuB,EAAO,aAAa,GAAKA,EAAM,YAC9D,OAAO,OAAOyrD,GAAQ,YAAcA,aAAgBA,GAClDvD,GAAa,KAAKuD,CAAI,GAAK0G,EAC/B,CClDA,SAASC,GAAUxuD,EAAO8hC,EAAO9H,EAAK,CACpC,IAAIr7B,EAAQ,GACR+T,EAAS1S,EAAM,OAEf8hC,EAAQ,IACVA,EAAQ,CAACA,EAAQpvB,EAAS,EAAKA,EAASovB,GAE1C9H,EAAMA,EAAMtnB,EAASA,EAASsnB,EAC1BA,EAAM,IACRA,GAAOtnB,GAETA,EAASovB,EAAQ9H,EAAM,EAAMA,EAAM8H,IAAW,EAC9CA,KAAW,EAGX,QADI9mC,EAAS,MAAM0X,CAAM,EAClB,EAAE/T,EAAQ+T,GACf1X,EAAO2D,CAAK,EAAIqB,EAAMrB,EAAQmjC,CAAK,EAErC,OAAO9mC,CACT,CCjBA,SAASyzD,GAAUzuD,EAAO8hC,EAAO9H,EAAK,CACpC,IAAItnB,EAAS1S,EAAM,OACnB,OAAAg6B,EAAMA,IAAQ,OAAYtnB,EAASsnB,EAC3B,CAAC8H,GAAS9H,GAAOtnB,EAAU1S,EAAQwuD,GAAUxuD,EAAO8hC,EAAO9H,CAAG,CACxE,CCdA,IAAI00B,GAAgB,kBAChBC,GAAoB,kBACpBC,GAAwB,kBACxBC,GAAsB,kBACtBC,GAAeH,GAAoBC,GAAwBC,GAC3DE,GAAa,iBAGbC,GAAQ,UAGRC,GAAe,OAAO,IAAMD,GAAQN,GAAiBI,GAAeC,GAAa,GAAG,EASxF,SAASG,GAAWtJ,EAAQ,CAC1B,OAAOqJ,GAAa,KAAKrJ,CAAM,CACjC,CChBA,SAASuJ,GAAavJ,EAAQ,CAC5B,OAAOA,EAAO,MAAM,EAAE,CACxB,CCRA,IAAI8I,GAAgB,kBAChBC,GAAoB,kBACpBC,GAAwB,kBACxBC,GAAsB,kBACtBC,GAAeH,GAAoBC,GAAwBC,GAC3DE,GAAa,iBAGbK,GAAW,IAAMV,GAAgB,IACjCW,GAAU,IAAMP,GAAe,IAC/BQ,GAAS,2BACTC,GAAa,MAAQF,GAAU,IAAMC,GAAS,IAC9CE,GAAc,KAAOd,GAAgB,IACrCe,GAAa,kCACbC,GAAa,qCACbV,GAAQ,UAGRW,GAAWJ,GAAa,IACxBK,GAAW,IAAMb,GAAa,KAC9Bc,GAAY,MAAQb,GAAQ,MAAQ,CAACQ,GAAaC,GAAYC,EAAU,EAAE,KAAK,GAAG,EAAI,IAAME,GAAWD,GAAW,KAClHG,GAAQF,GAAWD,GAAWE,GAC9BE,GAAW,MAAQ,CAACP,GAAcH,GAAU,IAAKA,GAASI,GAAYC,GAAYN,EAAQ,EAAE,KAAK,GAAG,EAAI,IAGxGY,GAAY,OAAOV,GAAS,MAAQA,GAAS,KAAOS,GAAWD,GAAO,GAAG,EAS7E,SAASG,GAAerK,EAAQ,CAC9B,OAAOA,EAAO,MAAMoK,EAAS,GAAK,CAAE,CACtC,CC1BA,SAASE,GAActK,EAAQ,CAC7B,OAAOsJ,GAAWtJ,CAAM,EACpBqK,GAAerK,CAAM,EACrBuJ,GAAavJ,CAAM,CACzB,CCHA,SAASuK,GAAgBp+B,EAAY,CACnC,OAAO,SAAS6zB,EAAQ,CACtBA,EAASt/B,GAASs/B,CAAM,EAExB,IAAIwK,EAAalB,GAAWtJ,CAAM,EAC9BsK,GAActK,CAAM,EACpB,OAEAyK,EAAMD,EACNA,EAAW,CAAC,EACZxK,EAAO,OAAO,CAAC,EAEf0K,EAAWF,EACX3B,GAAU2B,EAAY,CAAC,EAAE,KAAK,EAAE,EAChCxK,EAAO,MAAM,CAAC,EAElB,OAAOyK,EAAIt+B,CAAU,EAAC,EAAKu+B,CAC5B,CACH,CCXA,IAAIC,GAAaJ,GAAgB,aAAa,ECD9C,SAASne,GAAW4T,EAAQ,CAC1B,OAAO2K,GAAWjqC,GAASs/B,CAAM,EAAE,YAAW,CAAE,CAClD,CCRA,SAAS4K,GAAYxwD,EAAOujD,EAAUkN,EAAaC,EAAW,CAO5D,QANI/xD,EAAQ,GACR+T,EAAS1S,GAAS,KAAO,EAAIA,EAAM,OAKhC,EAAErB,EAAQ+T,GACf+9C,EAAclN,EAASkN,EAAazwD,EAAMrB,CAAK,EAAGA,EAAOqB,CAAK,EAEhE,OAAOywD,CACT,CChBA,SAASE,GAAe/L,EAAQ,CAC9B,OAAO,SAASpvD,EAAK,CACnB,OAAOovD,GAAU,KAAO,OAAYA,EAAOpvD,CAAG,CAC/C,CACH,CCRA,IAAIo7D,GAAkB,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,GAC5B,EAUIC,GAAeF,GAAeC,EAAe,EChE7CE,GAAU,8CAGVnC,GAAoB,kBACpBC,GAAwB,kBACxBC,GAAsB,kBACtBC,GAAeH,GAAoBC,GAAwBC,GAG3DQ,GAAU,IAAMP,GAAe,IAM/BiC,GAAc,OAAO1B,GAAS,GAAG,EAoBrC,SAAS2B,GAAOpL,EAAQ,CACtB,OAAAA,EAASt/B,GAASs/B,CAAM,EACjBA,GAAUA,EAAO,QAAQkL,GAASD,EAAY,EAAE,QAAQE,GAAa,EAAE,CAChF,CCzCA,IAAIE,GAAc,4CASlB,SAASC,GAAWtL,EAAQ,CAC1B,OAAOA,EAAO,MAAMqL,EAAW,GAAK,CAAE,CACxC,CCXA,IAAIE,GAAmB,qEASvB,SAASC,GAAexL,EAAQ,CAC9B,OAAOuL,GAAiB,KAAKvL,CAAM,CACrC,CCXA,IAAI8I,GAAgB,kBAChBC,GAAoB,kBACpBC,GAAwB,kBACxBC,GAAsB,kBACtBC,GAAeH,GAAoBC,GAAwBC,GAC3DwC,GAAiB,kBACjBC,GAAe,4BACfC,GAAgB,uBAChBC,GAAiB,+CACjBC,GAAqB,kBACrBC,GAAe,+JACfC,GAAe,4BACf5C,GAAa,iBACb6C,GAAeL,GAAgBC,GAAiBC,GAAqBC,GAGrEG,GAAS,OACTC,GAAU,IAAMF,GAAe,IAC/BvC,GAAU,IAAMP,GAAe,IAC/BiD,GAAW,OACXC,GAAY,IAAMX,GAAiB,IACnCY,GAAU,IAAMX,GAAe,IAC/BY,GAAS,KAAOxD,GAAgBkD,GAAeG,GAAWV,GAAiBC,GAAeK,GAAe,IACzGrC,GAAS,2BACTC,GAAa,MAAQF,GAAU,IAAMC,GAAS,IAC9CE,GAAc,KAAOd,GAAgB,IACrCe,GAAa,kCACbC,GAAa,qCACbyC,GAAU,IAAMR,GAAe,IAC/B3C,GAAQ,UAGRoD,GAAc,MAAQH,GAAU,IAAMC,GAAS,IAC/CG,GAAc,MAAQF,GAAU,IAAMD,GAAS,IAC/CI,GAAkB,MAAQT,GAAS,yBACnCU,GAAkB,MAAQV,GAAS,yBACnClC,GAAWJ,GAAa,IACxBK,GAAW,IAAMb,GAAa,KAC9Bc,GAAY,MAAQb,GAAQ,MAAQ,CAACQ,GAAaC,GAAYC,EAAU,EAAE,KAAK,GAAG,EAAI,IAAME,GAAWD,GAAW,KAClH6C,GAAa,mDACbC,GAAa,mDACb3C,GAAQF,GAAWD,GAAWE,GAC9B6C,GAAU,MAAQ,CAACV,GAAWvC,GAAYC,EAAU,EAAE,KAAK,GAAG,EAAI,IAAMI,GAGxE6C,GAAgB,OAAO,CACzBR,GAAU,IAAMF,GAAU,IAAMK,GAAkB,MAAQ,CAACR,GAASK,GAAS,GAAG,EAAE,KAAK,GAAG,EAAI,IAC9FE,GAAc,IAAME,GAAkB,MAAQ,CAACT,GAASK,GAAUC,GAAa,GAAG,EAAE,KAAK,GAAG,EAAI,IAChGD,GAAU,IAAMC,GAAc,IAAME,GACpCH,GAAU,IAAMI,GAChBE,GACAD,GACAT,GACAW,EACF,EAAE,KAAK,GAAG,EAAG,GAAG,EAShB,SAASE,GAAahN,EAAQ,CAC5B,OAAOA,EAAO,MAAM+M,EAAa,GAAK,CAAE,CAC1C,CC1CA,SAASE,GAAMjN,EAAQ37C,EAASwG,EAAO,CAIrC,OAHAm1C,EAASt/B,GAASs/B,CAAM,EACxB37C,EAA8BA,EAE1BA,IAAY,OACPmnD,GAAexL,CAAM,EAAIgN,GAAahN,CAAM,EAAIsL,GAAWtL,CAAM,EAEnEA,EAAO,MAAM37C,CAAO,GAAK,CAAE,CACpC,CC3BA,IAAI4nD,GAAS,OAGTiB,GAAS,OAAOjB,GAAQ,GAAG,EAS/B,SAASkB,GAAiB9rD,EAAU,CAClC,OAAO,SAAS2+C,EAAQ,CACtB,OAAO4K,GAAYqC,GAAM7B,GAAOpL,CAAM,EAAE,QAAQkN,GAAQ,EAAE,CAAC,EAAG7rD,EAAU,EAAE,CAC3E,CACH,CCEG,IAAC+rD,GAAYD,GAAiB,SAAS/3D,EAAQi4D,EAAMt0D,EAAO,CAC7D,OAAAs0D,EAAOA,EAAK,YAAa,EAClBj4D,GAAU2D,EAAQqzC,GAAWihB,CAAI,EAAIA,EAC9C,CAAC,ECjBD,SAASC,IAAa,CACpB,KAAK,SAAW,IAAIzG,GACpB,KAAK,KAAO,CACd,CCHA,SAAS0G,GAAY39D,EAAK,CACxB,IAAIyK,EAAO,KAAK,SACZjF,EAASiF,EAAK,OAAUzK,CAAG,EAE/B,YAAK,KAAOyK,EAAK,KACVjF,CACT,CCNA,SAASo4D,GAAS59D,EAAK,CACrB,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CCFA,SAAS69D,GAAS79D,EAAK,CACrB,OAAO,KAAK,SAAS,IAAIA,CAAG,CAC9B,CCNA,IAAI89D,GAAmB,IAYvB,SAASC,GAAS/9D,EAAKC,EAAO,CAC5B,IAAIwK,EAAO,KAAK,SAChB,GAAIA,aAAgBwsD,GAAW,CAC7B,IAAI+G,EAAQvzD,EAAK,SACjB,GAAI,CAACpB,IAAQ20D,EAAM,OAASF,GAAmB,EAC7C,OAAAE,EAAM,KAAK,CAACh+D,EAAKC,CAAK,CAAC,EACvB,KAAK,KAAO,EAAEwK,EAAK,KACZ,KAETA,EAAO,KAAK,SAAW,IAAIgtD,GAASuG,CAAK,CAC7C,CACE,OAAAvzD,EAAK,IAAIzK,EAAKC,CAAK,EACnB,KAAK,KAAOwK,EAAK,KACV,IACT,CCjBA,SAASwzD,GAAM1H,EAAS,CACtB,IAAI9rD,EAAO,KAAK,SAAW,IAAIwsD,GAAUV,CAAO,EAChD,KAAK,KAAO9rD,EAAK,IACnB,CAGAwzD,GAAM,UAAU,MAAQP,GACxBO,GAAM,UAAU,OAAYN,GAC5BM,GAAM,UAAU,IAAML,GACtBK,GAAM,UAAU,IAAMJ,GACtBI,GAAM,UAAU,IAAMF,GCZtB,SAASG,GAAW9O,EAAQj5B,EAAQ,CAClC,OAAOi5B,GAAUkC,GAAWn7B,EAAQ1xB,GAAK0xB,CAAM,EAAGi5B,CAAM,CAC1D,CCFA,SAAS+O,GAAa/O,EAAQj5B,EAAQ,CACpC,OAAOi5B,GAAUkC,GAAWn7B,EAAQw/B,GAAOx/B,CAAM,EAAGi5B,CAAM,CAC5D,CCXA,IAAIwD,GAAc,OAAO,SAAW,UAAY,SAAW,CAAC,QAAQ,UAAY,QAG5EC,GAAaD,IAAe,OAAO,QAAU,UAAY,QAAU,CAAC,OAAO,UAAY,OAGvFE,GAAgBD,IAAcA,GAAW,UAAYD,GAGrDG,GAASD,GAAgBrzD,GAAK,OAAS,OACvC2+D,GAAcrL,GAASA,GAAO,YAAc,OAUhD,SAASsL,GAAY/zD,EAAQg0D,EAAQ,CACnC,GAAIA,EACF,OAAOh0D,EAAO,MAAO,EAEvB,IAAI4S,EAAS5S,EAAO,OAChB9E,EAAS44D,GAAcA,GAAYlhD,CAAM,EAAI,IAAI5S,EAAO,YAAY4S,CAAM,EAE9E,OAAA5S,EAAO,KAAK9E,CAAM,EACXA,CACT,CCvBA,SAAS+4D,GAAY/zD,EAAOgmD,EAAW,CAMrC,QALIrnD,EAAQ,GACR+T,EAAS1S,GAAS,KAAO,EAAIA,EAAM,OACnCg0D,EAAW,EACXh5D,EAAS,CAAE,EAER,EAAE2D,EAAQ+T,GAAQ,CACvB,IAAIjd,EAAQuK,EAAMrB,CAAK,EACnBqnD,EAAUvwD,EAAOkJ,EAAOqB,CAAK,IAC/BhF,EAAOg5D,GAAU,EAAIv+D,EAE3B,CACE,OAAOuF,CACT,CCJA,SAASi5D,IAAY,CACnB,MAAO,CAAE,CACX,CChBA,IAAIvR,GAAc,OAAO,UAGrBuF,GAAuBvF,GAAY,qBAGnCwR,GAAmB,OAAO,sBAS1BC,GAAcD,GAA+B,SAAStP,EAAQ,CAChE,OAAIA,GAAU,KACL,CAAE,GAEXA,EAAS,OAAOA,CAAM,EACfmP,GAAYG,GAAiBtP,CAAM,EAAG,SAAS1D,EAAQ,CAC5D,OAAO+G,GAAqB,KAAKrD,EAAQ1D,CAAM,CACnD,CAAG,EACH,EARqC+S,GCRrC,SAASG,GAAYzoC,EAAQi5B,EAAQ,CACnC,OAAOkC,GAAWn7B,EAAQwoC,GAAWxoC,CAAM,EAAGi5B,CAAM,CACtD,CCPA,IAAIsP,GAAmB,OAAO,sBAS1BG,GAAgBH,GAA+B,SAAStP,EAAQ,CAElE,QADI5pD,EAAS,CAAE,EACR4pD,GACLmJ,GAAU/yD,EAAQm5D,GAAWvP,CAAM,CAAC,EACpCA,EAAS0J,GAAa1J,CAAM,EAE9B,OAAO5pD,CACT,EAPuCi5D,GCJvC,SAASK,GAAc3oC,EAAQi5B,EAAQ,CACrC,OAAOkC,GAAWn7B,EAAQ0oC,GAAa1oC,CAAM,EAAGi5B,CAAM,CACxD,CCCA,SAAS2P,GAAe3P,EAAQ4P,EAAUC,EAAa,CACrD,IAAIz5D,EAASw5D,EAAS5P,CAAM,EAC5B,OAAO/jD,GAAQ+jD,CAAM,EAAI5pD,EAAS+yD,GAAU/yD,EAAQy5D,EAAY7P,CAAM,CAAC,CACzE,CCNA,SAAS8P,GAAW9P,EAAQ,CAC1B,OAAO2P,GAAe3P,EAAQ3qD,GAAMk6D,EAAU,CAChD,CCDA,SAASQ,GAAa/P,EAAQ,CAC5B,OAAO2P,GAAe3P,EAAQuG,GAAQkJ,EAAY,CACpD,CCVA,IAAIO,GAAW/P,GAAU5vD,GAAM,UAAU,ECArC4/D,GAAUhQ,GAAU5vD,GAAM,SAAS,ECAnCmK,GAAMylD,GAAU5vD,GAAM,KAAK,ECK3B4zD,GAAS,eACTE,GAAY,kBACZ+L,GAAa,mBACb7L,GAAS,eACTE,GAAa,mBAEbE,GAAc,oBAGd0L,GAAqBxQ,GAASqQ,EAAQ,EACtCI,GAAgBzQ,GAAS1lD,EAAG,EAC5Bo2D,GAAoB1Q,GAASsQ,EAAO,EACpCK,GAAgB3Q,GAASnlD,EAAG,EAC5B+1D,GAAoB5Q,GAAS/kD,EAAO,EASpC41D,GAASlS,IAGR0R,IAAYQ,GAAO,IAAIR,GAAS,IAAI,YAAY,CAAC,CAAC,CAAC,GAAKvL,IACxDxqD,IAAOu2D,GAAO,IAAIv2D,EAAG,GAAKgqD,IAC1BgM,IAAWO,GAAOP,GAAQ,QAAS,IAAKC,IACxC11D,IAAOg2D,GAAO,IAAIh2D,EAAG,GAAK6pD,IAC1BzpD,IAAW41D,GAAO,IAAI51D,EAAO,GAAK2pD,MACrCiM,GAAS,SAAS3/D,EAAO,CACvB,IAAIuF,EAASkoD,GAAWztD,CAAK,EACzBoyD,EAAO7sD,GAAU+tD,GAAYtzD,EAAM,YAAc,OACjD4/D,EAAaxN,EAAOtD,GAASsD,CAAI,EAAI,GAEzC,GAAIwN,EACF,OAAQA,EAAU,CAChB,KAAKN,GAAoB,OAAO1L,GAChC,KAAK2L,GAAe,OAAOnM,GAC3B,KAAKoM,GAAmB,OAAOH,GAC/B,KAAKI,GAAe,OAAOjM,GAC3B,KAAKkM,GAAmB,OAAOhM,EACvC,CAEI,OAAOnuD,CACR,GCrDH,IAAI0nD,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eASjC,SAAS4S,GAAet1D,EAAO,CAC7B,IAAI0S,EAAS1S,EAAM,OACfhF,EAAS,IAAIgF,EAAM,YAAY0S,CAAM,EAGzC,OAAIA,GAAU,OAAO1S,EAAM,CAAC,GAAK,UAAY2qB,GAAe,KAAK3qB,EAAO,OAAO,IAC7EhF,EAAO,MAAQgF,EAAM,MACrBhF,EAAO,MAAQgF,EAAM,OAEhBhF,CACT,CCpBA,IAAIu6D,GAAatgE,GAAK,WCMtB,SAASugE,GAAiBC,EAAa,CACrC,IAAIz6D,EAAS,IAAIy6D,EAAY,YAAYA,EAAY,UAAU,EAC/D,WAAIF,GAAWv6D,CAAM,EAAE,IAAI,IAAIu6D,GAAWE,CAAW,CAAC,EAC/Cz6D,CACT,CCHA,SAAS06D,GAAcC,EAAU7B,EAAQ,CACvC,IAAIh0D,EAASg0D,EAAS0B,GAAiBG,EAAS,MAAM,EAAIA,EAAS,OACnE,OAAO,IAAIA,EAAS,YAAY71D,EAAQ61D,EAAS,WAAYA,EAAS,UAAU,CAClF,CCZA,IAAIC,GAAU,OASd,SAASC,GAAYrrD,EAAQ,CAC3B,IAAIxP,EAAS,IAAIwP,EAAO,YAAYA,EAAO,OAAQorD,GAAQ,KAAKprD,CAAM,CAAC,EACvE,OAAAxP,EAAO,UAAYwP,EAAO,UACnBxP,CACT,CCXA,IAAIyoD,GAAchB,GAASA,GAAO,UAAY,OAC1CqT,GAAgBrS,GAAcA,GAAY,QAAU,OASxD,SAASsS,GAAY7U,EAAQ,CAC3B,OAAO4U,GAAgB,OAAOA,GAAc,KAAK5U,CAAM,CAAC,EAAI,CAAE,CAChE,CCLA,SAAS8U,GAAgBC,EAAYnC,EAAQ,CAC3C,IAAIh0D,EAASg0D,EAAS0B,GAAiBS,EAAW,MAAM,EAAIA,EAAW,OACvE,OAAO,IAAIA,EAAW,YAAYn2D,EAAQm2D,EAAW,WAAYA,EAAW,MAAM,CACpF,CCNA,IAAIvN,GAAU,mBACVC,GAAU,gBACVE,GAAS,eACTC,GAAY,kBACZE,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZ9F,GAAY,kBAEZgG,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAchB,SAASoM,GAAetR,EAAQ7F,EAAK+U,EAAQ,CAC3C,IAAIjM,EAAOjD,EAAO,YAClB,OAAQ7F,EAAG,CACT,KAAKqK,GACH,OAAOoM,GAAiB5Q,CAAM,EAEhC,KAAK8D,GACL,KAAKC,GACH,OAAO,IAAId,EAAK,CAACjD,CAAM,EAEzB,KAAKyE,GACH,OAAOqM,GAAc9Q,EAAQkP,CAAM,EAErC,KAAKxK,GAAY,KAAKC,GACtB,KAAKC,GAAS,KAAKC,GAAU,KAAKC,GAClC,KAAKC,GAAU,KAAKC,GAAiB,KAAKC,GAAW,KAAKC,GACxD,OAAOkM,GAAgBpR,EAAQkP,CAAM,EAEvC,KAAKjL,GACH,OAAO,IAAIhB,EAEb,KAAKiB,GACL,KAAKI,GACH,OAAO,IAAIrB,EAAKjD,CAAM,EAExB,KAAKoE,GACH,OAAO6M,GAAYjR,CAAM,EAE3B,KAAKqE,GACH,OAAO,IAAIpB,EAEb,KAAKzE,GACH,OAAO2S,GAAYnR,CAAM,CAC/B,CACA,CC/DA,SAASuR,GAAgBvR,EAAQ,CAC/B,OAAQ,OAAOA,EAAO,aAAe,YAAc,CAACgD,GAAYhD,CAAM,EAClEG,GAAWuJ,GAAa1J,CAAM,CAAC,EAC/B,CAAE,CACR,CCXA,IAAIiE,GAAS,eASb,SAASuN,GAAU3gE,EAAO,CACxB,OAAO0tD,GAAa1tD,CAAK,GAAK2/D,GAAO3/D,CAAK,GAAKozD,EACjD,CCVA,IAAIwN,GAAYlM,IAAYA,GAAS,MAmBjCmM,GAAQD,GAAYpM,GAAUoM,EAAS,EAAID,GCpB3CnN,GAAS,eASb,SAASsN,GAAU9gE,EAAO,CACxB,OAAO0tD,GAAa1tD,CAAK,GAAK2/D,GAAO3/D,CAAK,GAAKwzD,EACjD,CCVA,IAAIuN,GAAYrM,IAAYA,GAAS,MAmBjCsM,GAAQD,GAAYvM,GAAUuM,EAAS,EAAID,GCA3CG,GAAkB,EAClBC,GAAkB,EAClBC,GAAqB,EAGrB7O,GAAU,qBACVU,GAAW,iBACXC,GAAU,mBACVC,GAAU,gBACVC,GAAW,iBACX9E,GAAU,oBACVC,GAAS,6BACT8E,GAAS,eACTC,GAAY,kBACZC,GAAY,kBACZC,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZ9F,GAAY,kBACZ+F,GAAa,mBAEbC,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAGZ+M,GAAgB,CAAE,EACtBA,GAAc9O,EAAO,EAAI8O,GAAcpO,EAAQ,EAC/CoO,GAAczN,EAAc,EAAIyN,GAAcxN,EAAW,EACzDwN,GAAcnO,EAAO,EAAImO,GAAclO,EAAO,EAC9CkO,GAAcvN,EAAU,EAAIuN,GAActN,EAAU,EACpDsN,GAAcrN,EAAO,EAAIqN,GAAcpN,EAAQ,EAC/CoN,GAAcnN,EAAQ,EAAImN,GAAchO,EAAM,EAC9CgO,GAAc/N,EAAS,EAAI+N,GAAc9N,EAAS,EAClD8N,GAAc7N,EAAS,EAAI6N,GAAc5N,EAAM,EAC/C4N,GAAc3N,EAAS,EAAI2N,GAAczT,EAAS,EAClDyT,GAAclN,EAAQ,EAAIkN,GAAcjN,EAAe,EACvDiN,GAAchN,EAAS,EAAIgN,GAAc/M,EAAS,EAAI,GACtD+M,GAAcjO,EAAQ,EAAIiO,GAAc/S,EAAO,EAC/C+S,GAAc1N,EAAU,EAAI,GAkB5B,SAAS2N,GAAUrhE,EAAOshE,EAAShQ,EAAYvxD,EAAKovD,EAAQn5B,EAAO,CACjE,IAAIzwB,EACA84D,EAASiD,EAAUL,GACnBM,EAASD,EAAUJ,GACnBM,EAASF,EAAUH,GAKvB,GAHI7P,IACF/rD,EAAS4pD,EAASmC,EAAWtxD,EAAOD,EAAKovD,EAAQn5B,CAAK,EAAIs7B,EAAWtxD,CAAK,GAExEuF,IAAW,OACb,OAAOA,EAET,GAAI,CAACssB,GAAS7xB,CAAK,EACjB,OAAOA,EAET,IAAI+0D,EAAQ3pD,GAAQpL,CAAK,EACzB,GAAI+0D,GAEF,GADAxvD,EAASs6D,GAAe7/D,CAAK,EACzB,CAACq+D,EACH,OAAO9O,GAAUvvD,EAAOuF,CAAM,MAE3B,CACL,IAAI+jD,EAAMqW,GAAO3/D,CAAK,EAClByhE,EAASnY,GAAO+E,IAAW/E,GAAOgF,GAEtC,GAAIh9B,GAAStxB,CAAK,EAChB,OAAOo+D,GAAYp+D,EAAOq+D,CAAM,EAElC,GAAI/U,GAAOgK,IAAahK,GAAOgJ,IAAYmP,GAAU,CAACtS,GAEpD,GADA5pD,EAAUg8D,GAAUE,EAAU,GAAKf,GAAgB1gE,CAAK,EACpD,CAACq+D,EACH,OAAOkD,EACH1C,GAAc7+D,EAAOk+D,GAAa34D,EAAQvF,CAAK,CAAC,EAChD2+D,GAAY3+D,EAAOi+D,GAAW14D,EAAQvF,CAAK,CAAC,MAE7C,CACL,GAAI,CAACohE,GAAc9X,CAAG,EACpB,OAAO6F,EAASnvD,EAAQ,CAAE,EAE5BuF,EAASk7D,GAAezgE,EAAOspD,EAAK+U,CAAM,CAChD,CACA,CAEEroC,IAAUA,EAAQ,IAAIgoC,IACtB,IAAI0D,EAAU1rC,EAAM,IAAIh2B,CAAK,EAC7B,GAAI0hE,EACF,OAAOA,EAET1rC,EAAM,IAAIh2B,EAAOuF,CAAM,EAEnBy7D,GAAMhhE,CAAK,EACbA,EAAM,QAAQ,SAAS2hE,EAAU,CAC/Bp8D,EAAO,IAAI87D,GAAUM,EAAUL,EAAShQ,EAAYqQ,EAAU3hE,EAAOg2B,CAAK,CAAC,CACjF,CAAK,EACQ6qC,GAAM7gE,CAAK,GACpBA,EAAM,QAAQ,SAAS2hE,EAAU5hE,EAAK,CACpCwF,EAAO,IAAIxF,EAAKshE,GAAUM,EAAUL,EAAShQ,EAAYvxD,EAAKC,EAAOg2B,CAAK,CAAC,CACjF,CAAK,EAGH,IAAI+oC,EAAWyC,EACVD,EAASrC,GAAeD,GACxBsC,EAAS7L,GAASlxD,GAEnB4U,EAAQ27C,EAAQ,OAAYgK,EAAS/+D,CAAK,EAC9C,OAAAqwD,GAAUj3C,GAASpZ,EAAO,SAAS2hE,EAAU5hE,EAAK,CAC5CqZ,IACFrZ,EAAM4hE,EACNA,EAAW3hE,EAAMD,CAAG,GAGtBszB,GAAY9tB,EAAQxF,EAAKshE,GAAUM,EAAUL,EAAShQ,EAAYvxD,EAAKC,EAAOg2B,CAAK,CAAC,CACxF,CAAG,EACMzwB,CACT,CClKA,IAAI0wD,GAAiB,4BAYrB,SAAS2L,GAAY5hE,EAAO,CAC1B,YAAK,SAAS,IAAIA,EAAOi2D,EAAc,EAChC,IACT,CCPA,SAAS4L,GAAY7hE,EAAO,CAC1B,OAAO,KAAK,SAAS,IAAIA,CAAK,CAChC,CCCA,SAAS8hE,GAAS94D,EAAQ,CACxB,IAAIE,EAAQ,GACR+T,EAASjU,GAAU,KAAO,EAAIA,EAAO,OAGzC,IADA,KAAK,SAAW,IAAIwuD,GACb,EAAEtuD,EAAQ+T,GACf,KAAK,IAAIjU,EAAOE,CAAK,CAAC,CAE1B,CAGA44D,GAAS,UAAU,IAAMA,GAAS,UAAU,KAAOF,GACnDE,GAAS,UAAU,IAAMD,GCdzB,SAASE,GAAUx3D,EAAOgmD,EAAW,CAInC,QAHIrnD,EAAQ,GACR+T,EAAS1S,GAAS,KAAO,EAAIA,EAAM,OAEhC,EAAErB,EAAQ+T,GACf,GAAIszC,EAAUhmD,EAAMrB,CAAK,EAAGA,EAAOqB,CAAK,EACtC,MAAO,GAGX,MAAO,EACT,CCZA,SAASy3D,GAAShxC,EAAOjxB,EAAK,CAC5B,OAAOixB,EAAM,IAAIjxB,CAAG,CACtB,CCLA,IAAIkiE,GAAuB,EACvBC,GAAyB,EAe7B,SAASC,GAAY53D,EAAO4mD,EAAOmQ,EAAShQ,EAAY8Q,EAAWpsC,EAAO,CACxE,IAAIqsC,EAAYf,EAAUW,GACtBK,EAAY/3D,EAAM,OAClBg4D,EAAYpR,EAAM,OAEtB,GAAImR,GAAaC,GAAa,EAAEF,GAAaE,EAAYD,GACvD,MAAO,GAGT,IAAIE,EAAaxsC,EAAM,IAAIzrB,CAAK,EAC5Bk4D,EAAazsC,EAAM,IAAIm7B,CAAK,EAChC,GAAIqR,GAAcC,EAChB,OAAOD,GAAcrR,GAASsR,GAAcl4D,EAE9C,IAAIrB,EAAQ,GACR3D,EAAS,GACTm9D,EAAQpB,EAAUY,GAA0B,IAAIJ,GAAW,OAM/D,IAJA9rC,EAAM,IAAIzrB,EAAO4mD,CAAK,EACtBn7B,EAAM,IAAIm7B,EAAO5mD,CAAK,EAGf,EAAErB,EAAQo5D,GAAW,CAC1B,IAAIK,EAAWp4D,EAAMrB,CAAK,EACtB05D,EAAWzR,EAAMjoD,CAAK,EAE1B,GAAIooD,EACF,IAAIuR,EAAWR,EACX/Q,EAAWsR,EAAUD,EAAUz5D,EAAOioD,EAAO5mD,EAAOyrB,CAAK,EACzDs7B,EAAWqR,EAAUC,EAAU15D,EAAOqB,EAAO4mD,EAAOn7B,CAAK,EAE/D,GAAI6sC,IAAa,OAAW,CAC1B,GAAIA,EACF,SAEFt9D,EAAS,GACT,KACN,CAEI,GAAIm9D,GACF,GAAI,CAACX,GAAU5Q,EAAO,SAASyR,EAAUE,EAAU,CAC7C,GAAI,CAACd,GAASU,EAAMI,CAAQ,IACvBH,IAAaC,GAAYR,EAAUO,EAAUC,EAAUtB,EAAShQ,EAAYt7B,CAAK,GACpF,OAAO0sC,EAAK,KAAKI,CAAQ,CAEvC,CAAW,EAAG,CACNv9D,EAAS,GACT,KACR,UACe,EACLo9D,IAAaC,GACXR,EAAUO,EAAUC,EAAUtB,EAAShQ,EAAYt7B,CAAK,GACzD,CACLzwB,EAAS,GACT,KACN,CACA,CACE,OAAAywB,EAAM,OAAUzrB,CAAK,EACrByrB,EAAM,OAAUm7B,CAAK,EACd5rD,CACT,CC1EA,SAASw9D,GAAWniE,EAAK,CACvB,IAAIsI,EAAQ,GACR3D,EAAS,MAAM3E,EAAI,IAAI,EAE3B,OAAAA,EAAI,QAAQ,SAASZ,EAAOD,EAAK,CAC/BwF,EAAO,EAAE2D,CAAK,EAAI,CAACnJ,EAAKC,CAAK,CACjC,CAAG,EACMuF,CACT,CCRA,SAASy9D,GAAWz+D,EAAK,CACvB,IAAI2E,EAAQ,GACR3D,EAAS,MAAMhB,EAAI,IAAI,EAE3B,OAAAA,EAAI,QAAQ,SAASvE,EAAO,CAC1BuF,EAAO,EAAE2D,CAAK,EAAIlJ,CACtB,CAAG,EACMuF,CACT,CCPA,IAAI08D,GAAuB,EACvBC,GAAyB,EAGzBjP,GAAU,mBACVC,GAAU,gBACVC,GAAW,iBACXC,GAAS,eACTC,GAAY,kBACZE,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZ9F,GAAY,kBAEZgG,GAAiB,uBACjBC,GAAc,oBAGd5F,GAAchB,GAASA,GAAO,UAAY,OAC1CqT,GAAgBrS,GAAcA,GAAY,QAAU,OAmBxD,SAASiV,GAAW9T,EAAQgC,EAAO7H,EAAKgY,EAAShQ,EAAY8Q,EAAWpsC,EAAO,CAC7E,OAAQszB,EAAG,CACT,KAAKsK,GACH,GAAKzE,EAAO,YAAcgC,EAAM,YAC3BhC,EAAO,YAAcgC,EAAM,WAC9B,MAAO,GAEThC,EAASA,EAAO,OAChBgC,EAAQA,EAAM,OAEhB,KAAKwC,GACH,MAAK,EAAAxE,EAAO,YAAcgC,EAAM,YAC5B,CAACiR,EAAU,IAAItC,GAAW3Q,CAAM,EAAG,IAAI2Q,GAAW3O,CAAK,CAAC,GAK9D,KAAK8B,GACL,KAAKC,GACL,KAAKG,GAGH,OAAOnC,GAAG,CAAC/B,EAAQ,CAACgC,CAAK,EAE3B,KAAKgC,GACH,OAAOhE,EAAO,MAAQgC,EAAM,MAAQhC,EAAO,SAAWgC,EAAM,QAE9D,KAAKoC,GACL,KAAKE,GAIH,OAAOtE,GAAWgC,EAAQ,GAE5B,KAAKiC,GACH,IAAI8P,EAAUH,GAEhB,KAAKvP,GACH,IAAI6O,EAAYf,EAAUW,GAG1B,GAFAiB,IAAYA,EAAUF,IAElB7T,EAAO,MAAQgC,EAAM,MAAQ,CAACkR,EAChC,MAAO,GAGT,IAAIX,EAAU1rC,EAAM,IAAIm5B,CAAM,EAC9B,GAAIuS,EACF,OAAOA,GAAWvQ,EAEpBmQ,GAAWY,GAGXlsC,EAAM,IAAIm5B,EAAQgC,CAAK,EACvB,IAAI5rD,EAAS48D,GAAYe,EAAQ/T,CAAM,EAAG+T,EAAQ/R,CAAK,EAAGmQ,EAAShQ,EAAY8Q,EAAWpsC,CAAK,EAC/F,OAAAA,EAAM,OAAUm5B,CAAM,EACf5pD,EAET,KAAKooD,GACH,GAAI0S,GACF,OAAOA,GAAc,KAAKlR,CAAM,GAAKkR,GAAc,KAAKlP,CAAK,CAErE,CACE,MAAO,EACT,CC1GA,IAAI8Q,GAAuB,EAGvBhV,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAejC,SAASkW,GAAahU,EAAQgC,EAAOmQ,EAAShQ,EAAY8Q,EAAWpsC,EAAO,CAC1E,IAAIqsC,EAAYf,EAAUW,GACtBmB,EAAWnE,GAAW9P,CAAM,EAC5BkU,EAAYD,EAAS,OACrBE,EAAWrE,GAAW9N,CAAK,EAC3BoR,EAAYe,EAAS,OAEzB,GAAID,GAAad,GAAa,CAACF,EAC7B,MAAO,GAGT,QADIn5D,EAAQm6D,EACLn6D,KAAS,CACd,IAAInJ,EAAMqjE,EAASl6D,CAAK,EACxB,GAAI,EAAEm5D,EAAYtiE,KAAOoxD,EAAQj8B,GAAe,KAAKi8B,EAAOpxD,CAAG,GAC7D,MAAO,EAEb,CAEE,IAAIwjE,EAAavtC,EAAM,IAAIm5B,CAAM,EAC7BsT,EAAazsC,EAAM,IAAIm7B,CAAK,EAChC,GAAIoS,GAAcd,EAChB,OAAOc,GAAcpS,GAASsR,GAActT,EAE9C,IAAI5pD,EAAS,GACbywB,EAAM,IAAIm5B,EAAQgC,CAAK,EACvBn7B,EAAM,IAAIm7B,EAAOhC,CAAM,EAGvB,QADIqU,EAAWnB,EACR,EAAEn5D,EAAQm6D,GAAW,CAC1BtjE,EAAMqjE,EAASl6D,CAAK,EACpB,IAAIkoD,EAAWjC,EAAOpvD,CAAG,EACrB6iE,EAAWzR,EAAMpxD,CAAG,EAExB,GAAIuxD,EACF,IAAIuR,EAAWR,EACX/Q,EAAWsR,EAAUxR,EAAUrxD,EAAKoxD,EAAOhC,EAAQn5B,CAAK,EACxDs7B,EAAWF,EAAUwR,EAAU7iE,EAAKovD,EAAQgC,EAAOn7B,CAAK,EAG9D,GAAI,EAAE6sC,IAAa,OACVzR,IAAawR,GAAYR,EAAUhR,EAAUwR,EAAUtB,EAAShQ,EAAYt7B,CAAK,EAClF6sC,GACD,CACLt9D,EAAS,GACT,KACN,CACIi+D,IAAaA,EAAWzjE,GAAO,cACnC,CACE,GAAIwF,GAAU,CAACi+D,EAAU,CACvB,IAAIC,EAAUtU,EAAO,YACjBuU,EAAUvS,EAAM,YAGhBsS,GAAWC,GACV,gBAAiBvU,GAAU,gBAAiBgC,GAC7C,EAAE,OAAOsS,GAAW,YAAcA,aAAmBA,GACnD,OAAOC,GAAW,YAAcA,aAAmBA,KACvDn+D,EAAS,GAEf,CACE,OAAAywB,EAAM,OAAUm5B,CAAM,EACtBn5B,EAAM,OAAUm7B,CAAK,EACd5rD,CACT,CC7EA,IAAI08D,GAAuB,EAGvB3P,GAAU,qBACVU,GAAW,iBACXM,GAAY,kBAGZrG,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAgBjC,SAAS0W,GAAgBxU,EAAQgC,EAAOmQ,EAAShQ,EAAY8Q,EAAWpsC,EAAO,CAC7E,IAAI4tC,EAAWx4D,GAAQ+jD,CAAM,EACzB0U,EAAWz4D,GAAQ+lD,CAAK,EACxB2S,EAASF,EAAW5Q,GAAW2M,GAAOxQ,CAAM,EAC5C4U,EAASF,EAAW7Q,GAAW2M,GAAOxO,CAAK,EAE/C2S,EAASA,GAAUxR,GAAUgB,GAAYwQ,EACzCC,EAASA,GAAUzR,GAAUgB,GAAYyQ,EAEzC,IAAIC,EAAWF,GAAUxQ,GACrB2Q,EAAWF,GAAUzQ,GACrB4Q,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa5yC,GAAS69B,CAAM,EAAG,CACjC,GAAI,CAAC79B,GAAS6/B,CAAK,EACjB,MAAO,GAETyS,EAAW,GACXI,EAAW,EACf,CACE,GAAIE,GAAa,CAACF,EAChB,OAAAhuC,IAAUA,EAAQ,IAAIgoC,IACd4F,GAAYrvC,GAAa46B,CAAM,EACnCgT,GAAYhT,EAAQgC,EAAOmQ,EAAShQ,EAAY8Q,EAAWpsC,CAAK,EAChEitC,GAAW9T,EAAQgC,EAAO2S,EAAQxC,EAAShQ,EAAY8Q,EAAWpsC,CAAK,EAE7E,GAAI,EAAEsrC,EAAUW,IAAuB,CACrC,IAAIkC,EAAeH,GAAY9uC,GAAe,KAAKi6B,EAAQ,aAAa,EACpEiV,EAAeH,GAAY/uC,GAAe,KAAKi8B,EAAO,aAAa,EAEvE,GAAIgT,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAehV,EAAO,MAAO,EAAGA,EAC/CmV,EAAeF,EAAejT,EAAM,MAAO,EAAGA,EAElD,OAAAn7B,IAAUA,EAAQ,IAAIgoC,IACfoE,EAAUiC,EAAcC,EAAchD,EAAShQ,EAAYt7B,CAAK,CAC7E,CACA,CACE,OAAKkuC,GAGLluC,IAAUA,EAAQ,IAAIgoC,IACfmF,GAAahU,EAAQgC,EAAOmQ,EAAShQ,EAAY8Q,EAAWpsC,CAAK,GAH/D,EAIX,CC/DA,SAASuuC,GAAYvkE,EAAOmxD,EAAOmQ,EAAShQ,EAAYt7B,EAAO,CAC7D,OAAIh2B,IAAUmxD,EACL,GAELnxD,GAAS,MAAQmxD,GAAS,MAAS,CAACzD,GAAa1tD,CAAK,GAAK,CAAC0tD,GAAayD,CAAK,EACzEnxD,IAAUA,GAASmxD,IAAUA,EAE/BwS,GAAgB3jE,EAAOmxD,EAAOmQ,EAAShQ,EAAYiT,GAAavuC,CAAK,CAC9E,CClBA,SAASwuC,GAAazkE,EAAK,CACzB,OAAO,SAASovD,EAAQ,CACtB,OAAOA,GAAU,KAAO,OAAYA,EAAOpvD,CAAG,CAC/C,CACH,CCFA,SAAS0kE,GAAiB33D,EAAM,CAC9B,OAAO,SAASqiD,EAAQ,CACtB,OAAOkJ,GAAQlJ,EAAQriD,CAAI,CAC5B,CACH,CCcA,SAAS43D,GAAS53D,EAAM,CACtB,OAAO+oD,GAAM/oD,CAAI,EAAI03D,GAAapM,GAAMtrD,CAAI,CAAC,EAAI23D,GAAiB33D,CAAI,CACxE,CChBA,SAAS63D,GAAa3kE,EAAO,CAc3B,OAAO0kE,GAAS1kE,CAAK,CACvB,CCrBA,SAAS4kE,GAAcnU,EAAW,CAChC,OAAO,SAAStB,EAAQrB,EAAUiR,EAAU,CAM1C,QALI71D,EAAQ,GACRu7B,EAAW,OAAO0qB,CAAM,EACxB/1C,EAAQ2lD,EAAS5P,CAAM,EACvBlyC,EAAS7D,EAAM,OAEZ6D,KAAU,CACf,IAAIld,EAAMqZ,EAA2B,EAAElQ,CAAK,EAC5C,GAAI4kD,EAASrpB,EAAS1kC,CAAG,EAAGA,EAAK0kC,CAAQ,IAAM,GAC7C,KAER,CACI,OAAO0qB,CACR,CACH,CCTA,IAAI0V,GAAUD,GAAe,ECD7B,SAASE,GAAiB3V,EAAQpvD,EAAKC,EAAO,EACvCA,IAAU,QAAa,CAACkxD,GAAG/B,EAAOpvD,CAAG,EAAGC,CAAK,GAC7CA,IAAU,QAAa,EAAED,KAAOovD,KACnC8B,GAAgB9B,EAAQpvD,EAAKC,CAAK,CAEtC,CCWA,SAAS+kE,GAAkB/kE,EAAO,CAChC,OAAO0tD,GAAa1tD,CAAK,GAAK8xD,GAAY9xD,CAAK,CACjD,CCtBA,SAASglE,GAAQ7V,EAAQpvD,EAAK,CAC5B,GAAI,EAAAA,IAAQ,eAAiB,OAAOovD,EAAOpvD,CAAG,GAAM,aAIhDA,GAAO,YAIX,OAAOovD,EAAOpvD,CAAG,CACnB,CCSA,SAASklE,GAAcjlE,EAAO,CAC5B,OAAOqxD,GAAWrxD,EAAO01D,GAAO11D,CAAK,CAAC,CACxC,CCEA,SAASklE,GAAc/V,EAAQj5B,EAAQn2B,EAAKolE,EAAUC,EAAW9T,EAAYt7B,EAAO,CAClF,IAAIo7B,EAAW4T,GAAQ7V,EAAQpvD,CAAG,EAC9BslE,EAAWL,GAAQ9uC,EAAQn2B,CAAG,EAC9B2hE,EAAU1rC,EAAM,IAAIqvC,CAAQ,EAEhC,GAAI3D,EAAS,CACXoD,GAAiB3V,EAAQpvD,EAAK2hE,CAAO,EACrC,MACJ,CACE,IAAIlQ,EAAWF,EACXA,EAAWF,EAAUiU,EAAWtlE,EAAM,GAAKovD,EAAQj5B,EAAQF,CAAK,EAChE,OAEAsvC,EAAW9T,IAAa,OAE5B,GAAI8T,EAAU,CACZ,IAAIvQ,EAAQ3pD,GAAQi6D,CAAQ,EACxBpQ,EAAS,CAACF,GAASzjC,GAAS+zC,CAAQ,EACpCE,EAAU,CAACxQ,GAAS,CAACE,GAAU1gC,GAAa8wC,CAAQ,EAExD7T,EAAW6T,EACPtQ,GAASE,GAAUsQ,EACjBn6D,GAAQgmD,CAAQ,EAClBI,EAAWJ,EAEJ2T,GAAkB3T,CAAQ,EACjCI,EAAWjC,GAAU6B,CAAQ,EAEtB6D,GACPqQ,EAAW,GACX9T,EAAW4M,GAAYiH,EAAU,EAAI,GAE9BE,GACPD,EAAW,GACX9T,EAAW+O,GAAgB8E,EAAU,EAAI,GAGzC7T,EAAW,CAAE,EAGRpsC,GAAcigD,CAAQ,GAAK5S,GAAY4S,CAAQ,GACtD7T,EAAWJ,EACPqB,GAAYrB,CAAQ,EACtBI,EAAWyT,GAAc7T,CAAQ,GAE1B,CAACv/B,GAASu/B,CAAQ,GAAK5/B,GAAW4/B,CAAQ,KACjDI,EAAWkP,GAAgB2E,CAAQ,IAIrCC,EAAW,EAEjB,CACMA,IAEFtvC,EAAM,IAAIqvC,EAAU7T,CAAQ,EAC5B4T,EAAU5T,EAAU6T,EAAUF,EAAU7T,EAAYt7B,CAAK,EACzDA,EAAM,OAAUqvC,CAAQ,GAE1BP,GAAiB3V,EAAQpvD,EAAKyxD,CAAQ,CACxC,CCxEA,SAASgU,GAAUrW,EAAQj5B,EAAQivC,EAAU7T,EAAYt7B,EAAO,CAC1Dm5B,IAAWj5B,GAGf2uC,GAAQ3uC,EAAQ,SAASmvC,EAAUtlE,EAAK,CAEtC,GADAi2B,IAAUA,EAAQ,IAAIgoC,IAClBnsC,GAASwzC,CAAQ,EACnBH,GAAc/V,EAAQj5B,EAAQn2B,EAAKolE,EAAUK,GAAWlU,EAAYt7B,CAAK,MAEtE,CACH,IAAIw7B,EAAWF,EACXA,EAAW0T,GAAQ7V,EAAQpvD,CAAG,EAAGslE,EAAWtlE,EAAM,GAAKovD,EAAQj5B,EAAQF,CAAK,EAC5E,OAEAw7B,IAAa,SACfA,EAAW6T,GAEbP,GAAiB3V,EAAQpvD,EAAKyxD,CAAQ,CAC5C,CACG,EAAEkE,EAAM,CACX,CCLG,IAAC+P,GAAYzT,GAAe,SAAS7C,EAAQj5B,EAAQivC,EAAU7T,EAAY,CAC5EkU,GAAUrW,EAAQj5B,EAAQivC,EAAU7T,CAAU,CAChD,CAAC,ECtBD,SAASx7C,GAAKvL,EAAO,CACnB,IAAI0S,EAAS1S,GAAS,KAAO,EAAIA,EAAM,OACvC,OAAO0S,EAAS1S,EAAM0S,EAAS,CAAC,EAAI,MACtC,CCNA,SAAShZ,GAAOkrD,EAAQriD,EAAM,CAC5B,OAAOA,EAAK,OAAS,EAAIqiD,EAASkJ,GAAQlJ,EAAQ4J,GAAUjsD,EAAM,EAAG,EAAE,CAAC,CAC1E,CCHA,IAAIsmD,GAAS,eACTI,GAAS,eAGTvG,GAAc,OAAO,UAGrB/3B,GAAiB+3B,GAAY,eAmCjC,SAASyY,GAAQ1lE,EAAO,CACtB,GAAIA,GAAS,KACX,MAAO,GAET,GAAI8xD,GAAY9xD,CAAK,IAChBoL,GAAQpL,CAAK,GAAK,OAAOA,GAAS,UAAY,OAAOA,EAAM,QAAU,YACpEsxB,GAAStxB,CAAK,GAAKu0B,GAAav0B,CAAK,GAAKyyD,GAAYzyD,CAAK,GAC/D,MAAO,CAACA,EAAM,OAEhB,IAAIspD,EAAMqW,GAAO3/D,CAAK,EACtB,GAAIspD,GAAO8J,IAAU9J,GAAOkK,GAC1B,MAAO,CAACxzD,EAAM,KAEhB,GAAImyD,GAAYnyD,CAAK,EACnB,MAAO,CAACs1D,GAASt1D,CAAK,EAAE,OAE1B,QAASD,KAAOC,EACd,GAAIk1B,GAAe,KAAKl1B,EAAOD,CAAG,EAChC,MAAO,GAGX,MAAO,EACT,CC5CA,SAAS4lE,GAAQ3lE,EAAOmxD,EAAO,CAC7B,OAAOoT,GAAYvkE,EAAOmxD,CAAK,CACjC,CC7BA,IAAIyU,GAAiBpmE,GAAK,SA4B1B,SAASqmE,GAAS7lE,EAAO,CACvB,OAAO,OAAOA,GAAS,UAAY4lE,GAAe5lE,CAAK,CACzD,CC7BA,IAAIqzD,GAAY,kBA4BhB,SAASzhC,GAAS5xB,EAAO,CACvB,OAAO,OAAOA,GAAS,UACpB0tD,GAAa1tD,CAAK,GAAKytD,GAAWztD,CAAK,GAAKqzD,EACjD,CClBA,SAASyS,GAAO9lE,EAAO,CACrB,OAAOA,IAAU,IACnB,CCFA,SAASqxB,GAAYrxB,EAAO,CAC1B,OAAOA,IAAU,MACnB,CCIG,IAAC+lE,GAAYzI,GAAiB,SAAS/3D,EAAQi4D,EAAMt0D,EAAO,CAC7D,OAAO3D,GAAU2D,EAAQ,IAAM,IAAMs0D,EAAK,YAAa,CACzD,CAAC,ECSGrqC,GAAQ6+B,GAAe,SAAS7C,EAAQj5B,EAAQivC,EAAU,CAC5DK,GAAUrW,EAAQj5B,EAAQivC,CAAQ,CACpC,CAAC,ECvBD,SAASa,GAAU7W,EAAQriD,EAAM,CAC/B,OAAAA,EAAOqrD,GAASrrD,EAAMqiD,CAAM,EAC5BA,EAASlrD,GAAOkrD,EAAQriD,CAAI,EACrBqiD,GAAU,MAAQ,OAAOA,EAAOiJ,GAAMtiD,GAAKhJ,CAAI,CAAC,CAAC,CAC1D,CCNA,SAASm5D,GAAgBjmE,EAAO,CAC9B,OAAOolB,GAAcplB,CAAK,EAAI,OAAYA,CAC5C,CCHA,IAAIihE,GAAkB,EAClBC,GAAkB,EAClBC,GAAqB,EAsBrB+E,GAAOtN,GAAS,SAASzJ,EAAQgX,EAAO,CAC1C,IAAI5gE,EAAS,CAAE,EACf,GAAI4pD,GAAU,KACZ,OAAO5pD,EAET,IAAI84D,EAAS,GACb8H,EAAQtY,GAASsY,EAAO,SAASr5D,EAAM,CACrC,OAAAA,EAAOqrD,GAASrrD,EAAMqiD,CAAM,EAC5BkP,IAAWA,EAASvxD,EAAK,OAAS,GAC3BA,CACX,CAAG,EACDukD,GAAWlC,EAAQ+P,GAAa/P,CAAM,EAAG5pD,CAAM,EAC3C84D,IACF94D,EAAS87D,GAAU97D,EAAQ07D,GAAkBC,GAAkBC,GAAoB8E,EAAe,GAGpG,QADIhpD,EAASkpD,EAAM,OACZlpD,KACL+oD,GAAUzgE,EAAQ4gE,EAAMlpD,CAAM,CAAC,EAEjC,OAAO1X,CACT,CAAC,ECjDGwoD,GAAW,IASXqY,GAAcz8D,IAAQ,EAAIq5D,GAAW,IAAIr5D,GAAI,CAAE,GAAE,CAAC,CAAC,EAAE,CAAC,GAAMokD,GAAmB,SAAS/kD,EAAQ,CAClG,OAAO,IAAIW,GAAIX,CAAM,CACvB,EAF4EqC,GCNxEwyD,GAAmB,IAWvB,SAASwI,GAAS97D,EAAOujD,EAAUwY,EAAY,CAC7C,IAAIp9D,EAAQ,GACRq9D,EAAW1V,GACX5zC,EAAS1S,EAAM,OACf+6D,EAAW,GACX//D,EAAS,CAAE,EACXm9D,EAAOn9D,EAMN,GAAI0X,GAAU4gD,GAAkB,CACnC,IAAIt5D,EAAMupD,EAAW,KAAOsY,GAAU77D,CAAK,EAC3C,GAAIhG,EACF,OAAOy+D,GAAWz+D,CAAG,EAEvB+gE,EAAW,GACXiB,EAAWvE,GACXU,EAAO,IAAIZ,EACf,MAEIY,EAAO5U,EAAW,GAAKvoD,EAEzBgZ,EACA,KAAO,EAAErV,EAAQ+T,GAAQ,CACvB,IAAIjd,EAAQuK,EAAMrB,CAAK,EACnB4T,EAAWgxC,EAAWA,EAAS9tD,CAAK,EAAIA,EAG5C,GADAA,EAAuBA,IAAU,EAAKA,EAAQ,EAC1CslE,GAAYxoD,IAAaA,EAAU,CAErC,QADI0pD,EAAY9D,EAAK,OACd8D,KACL,GAAI9D,EAAK8D,CAAS,IAAM1pD,EACtB,SAASyB,EAGTuvC,GACF4U,EAAK,KAAK5lD,CAAQ,EAEpBvX,EAAO,KAAKvF,CAAK,CACvB,MACcumE,EAAS7D,EAAM5lD,EAAUwpD,CAAU,IACvC5D,IAASn9D,GACXm9D,EAAK,KAAK5lD,CAAQ,EAEpBvX,EAAO,KAAKvF,CAAK,EAEvB,CACE,OAAOuF,CACT,CC3CA,SAASkhE,GAAOl8D,EAAOujD,EAAU,CAC/B,OAAQvjD,GAASA,EAAM,OAAU87D,GAAS97D,EAAOo6D,GAAa7W,CAAW,CAAC,EAAI,CAAE,CAClF,CC5BA,MAAe4Y,GAAA,CACX,KAAM,CACF,MAAO,MACX,EACA,WAAY,CACR,MAAO,cACP,GAAI,KACJ,GAAI,KACJ,OAAQ,SACR,KAAM,MACV,EACA,QAAS,CACL,MAAO,mBACX,EACA,YAAa,CACT,MAAO,uBACP,MAAO,SACP,OAAQ,eACR,SAAU,iDACd,EACA,kBAAmB,CACf,sBAAuB,0DACvB,gBAAiB,6CACjB,cAAe,wCACf,wCAAyC,0FACzC,uCAAwC,qFAEhD,EC3BeC,GAAA,CACX,KAAM,CACF,MAAO,MACX,EACA,WAAY,CACR,MAAO,WACP,GAAI,KACJ,GAAI,KACJ,OAAQ,SACR,KAAM,SACV,EACA,QAAS,CACL,MAAO,wBACX,EACA,YAAa,CACT,MAAO,gBACP,MAAO,SACP,OAAQ,yBACR,SAAU,yEACd,EACA,kBAAmB,CACf,sBAAuB,6DACvB,gBAAiB,6CACjB,cAAe,iCACf,wCAAyC,kEACzC,uCAAwC,uEAEhD,ECKO,SAASC,GAAOhhE,EAAU,CAC/B,MAAMihE,EAAS,OAAO,UAAU,SAAS,KAAKjhE,CAAQ,EAGtD,OACEA,aAAoB,MACnB,OAAOA,GAAa,UAAYihE,IAAW,gBAGrC,IAAIjhE,EAAS,YAAY,CAACA,CAAQ,EAEzC,OAAOA,GAAa,UACpBihE,IAAW,mBACX,OAAOjhE,GAAa,UACpBihE,IAAW,kBAGJ,IAAI,KAAKjhE,CAAQ,EAGjB,IAAI,KAAK,GAAG,CAEvB,CCxBO,SAASkhE,GAAcC,EAAM/mE,EAAO,CACzC,OAAI+mE,aAAgB,KACX,IAAIA,EAAK,YAAY/mE,CAAK,EAE1B,IAAI,KAAKA,CAAK,CAEzB,CCbO,SAASgnE,GAAQD,EAAME,EAAQ,CACpC,MAAMC,EAAQN,GAAOG,CAAI,EACzB,OAAI,MAAME,CAAM,EAAUH,GAAcC,EAAM,GAAG,GAC5CE,GAILC,EAAM,QAAQA,EAAM,QAAO,EAAKD,CAAM,EAC/BC,EACT,CCTO,SAASC,GAAgBJ,EAAME,EAAQ,CAC5C,MAAM7nC,EAAY,CAACwnC,GAAOG,CAAI,EAC9B,OAAOD,GAAcC,EAAM3nC,EAAY6nC,CAAM,CAC/C,CCkDO,MAAMG,GAAqB,OAOrBC,GAAoB,MAOpBC,GAAuB,IAOvBC,GAAqB,KAOrBC,GAAuB,IA4BvBC,GAAgB,GA4BhBC,GAAgB,KChK7B,IAAIC,GAAiB,CAAE,EAEhB,SAASC,IAAoB,CAClC,OAAOD,EACT,CC6BO,SAASE,GAAYd,EAAMzyD,EAAS,aACzC,MAAMqzD,EAAiBC,GAAmB,EACpCE,GACJxzD,GAAA,YAAAA,EAAS,iBACTqW,GAAA/lB,EAAA0P,GAAA,YAAAA,EAAS,SAAT,YAAA1P,EAAiB,UAAjB,YAAA+lB,EAA0B,eAC1Bg9C,EAAe,gBACfI,GAAAC,EAAAL,EAAe,SAAf,YAAAK,EAAuB,UAAvB,YAAAD,EAAgC,eAChC,EAEIb,EAAQN,GAAOG,CAAI,EACnBkB,EAAMf,EAAM,OAAQ,EACpB1xD,GAAQyyD,EAAMH,EAAe,EAAI,GAAKG,EAAMH,EAElD,OAAAZ,EAAM,QAAQA,EAAM,QAAO,EAAK1xD,CAAI,EACpC0xD,EAAM,SAAS,EAAG,EAAG,EAAG,CAAC,EAClBA,CACT,CCzBO,SAASgB,GAAenB,EAAM,CACnC,OAAOc,GAAYd,EAAM,CAAE,aAAc,CAAC,CAAE,CAC9C,CCAO,SAASoB,GAAepB,EAAM,CACnC,MAAMG,EAAQN,GAAOG,CAAI,EACnBqB,EAAOlB,EAAM,YAAa,EAE1BmB,EAA4BvB,GAAcC,EAAM,CAAC,EACvDsB,EAA0B,YAAYD,EAAO,EAAG,EAAG,CAAC,EACpDC,EAA0B,SAAS,EAAG,EAAG,EAAG,CAAC,EAC7C,MAAMC,EAAkBJ,GAAeG,CAAyB,EAE1DE,EAA4BzB,GAAcC,EAAM,CAAC,EACvDwB,EAA0B,YAAYH,EAAM,EAAG,CAAC,EAChDG,EAA0B,SAAS,EAAG,EAAG,EAAG,CAAC,EAC7C,MAAMC,EAAkBN,GAAeK,CAAyB,EAEhE,OAAIrB,EAAM,QAAO,GAAMoB,EAAgB,QAAO,EACrCF,EAAO,EACLlB,EAAM,QAAS,GAAIsB,EAAgB,QAAO,EAC5CJ,EAEAA,EAAO,CAElB,CCzBO,SAASK,GAAW1B,EAAM,CAC/B,MAAMG,EAAQN,GAAOG,CAAI,EACzB,OAAAG,EAAM,SAAS,EAAG,EAAG,EAAG,CAAC,EAClBA,CACT,CCbO,SAASwB,GAAgC3B,EAAM,CACpD,MAAMG,EAAQN,GAAOG,CAAI,EACnB4B,EAAU,IAAI,KAClB,KAAK,IACHzB,EAAM,YAAa,EACnBA,EAAM,SAAU,EAChBA,EAAM,QAAS,EACfA,EAAM,SAAU,EAChBA,EAAM,WAAY,EAClBA,EAAM,WAAY,EAClBA,EAAM,gBAAiB,CACxB,CACF,EACD,OAAAyB,EAAQ,eAAezB,EAAM,aAAa,EACnC,CAACH,EAAO,CAAC4B,CAClB,CCQO,SAASC,GAAyBC,EAAUC,EAAW,CAC5D,MAAMC,EAAiBN,GAAWI,CAAQ,EACpCG,EAAkBP,GAAWK,CAAS,EAEtCG,EACJ,CAACF,EAAiBL,GAAgCK,CAAc,EAC5DG,EACJ,CAACF,EAAkBN,GAAgCM,CAAe,EAKpE,OAAO,KAAK,OAAOC,EAAgBC,GAAkB7B,EAAiB,CACxE,CCtBO,SAAS8B,GAAmBpC,EAAM,CACvC,MAAMqB,EAAOD,GAAepB,CAAI,EAC1BqC,EAAkBtC,GAAcC,EAAM,CAAC,EAC7C,OAAAqC,EAAgB,YAAYhB,EAAM,EAAG,CAAC,EACtCgB,EAAgB,SAAS,EAAG,EAAG,EAAG,CAAC,EAC5BlB,GAAekB,CAAe,CACvC,CCVO,SAASC,GAAWtC,EAAME,EAAQ,CACvC,OAAOE,GAAgBJ,EAAME,EAASK,EAAoB,CAC5D,CCOO,SAASgC,GAAUT,EAAUC,EAAW,CAC7C,MAAMS,EAAqBd,GAAWI,CAAQ,EACxCW,EAAsBf,GAAWK,CAAS,EAEhD,MAAO,CAACS,GAAuB,CAACC,CAClC,CCLO,SAASz3C,GAAO/xB,EAAO,CAC5B,OACEA,aAAiB,MAChB,OAAOA,GAAU,UAChB,OAAO,UAAU,SAAS,KAAKA,CAAK,IAAM,eAEhD,CCFO,SAASypE,GAAQ1C,EAAM,CAC5B,GAAI,CAACh1C,GAAOg1C,CAAI,GAAK,OAAOA,GAAS,SACnC,MAAO,GAET,MAAMG,EAAQN,GAAOG,CAAI,EACzB,MAAO,CAAC,MAAM,OAAOG,CAAK,CAAC,CAC7B,CC1CO,SAASwC,GAAkBtjE,EAAQ,CACxC,OAAQm9C,GAAW,CAEjB,MAAMh+C,GADQa,EAAS,KAAKA,CAAM,EAAI,KAAK,OACtBm9C,CAAM,EAE3B,OAAOh+C,IAAW,EAAI,EAAIA,CAC3B,CACH,CCmBO,SAASokE,GAAyBd,EAAUC,EAAW,CAC5D,MAAO,CAAClC,GAAOiC,CAAQ,EAAI,CAACjC,GAAOkC,CAAS,CAC9C,CCIO,SAASc,GAAoBf,EAAUC,EAAWx0D,EAAS,CAChE,MAAMkB,EAAOm0D,GAAyBd,EAAUC,CAAS,EAAI,IAC7D,OAAOY,GAAkBp1D,GAAA,YAAAA,EAAS,cAAc,EAAEkB,CAAI,CACxD,CCbO,SAASq0D,GAAc9C,EAAM,CAClC,MAAMG,EAAQN,GAAOG,CAAI,EACzB,OAAAG,EAAM,WAAW,EAAG,CAAC,EACdA,CACT,CCHO,SAAS4C,GAAY/C,EAAM,CAChC,MAAMgD,EAAYnD,GAAOG,CAAI,EACvBG,EAAQJ,GAAcC,EAAM,CAAC,EACnC,OAAAG,EAAM,YAAY6C,EAAU,YAAW,EAAI,EAAG,CAAC,EAC/C7C,EAAM,SAAS,EAAG,EAAG,EAAG,CAAC,EAClBA,CACT,CC7BA,MAAM8C,GAAuB,CAC3B,iBAAkB,CAChB,IAAK,qBACL,MAAO,6BACR,EAED,SAAU,CACR,IAAK,WACL,MAAO,mBACR,EAED,YAAa,gBAEb,iBAAkB,CAChB,IAAK,qBACL,MAAO,6BACR,EAED,SAAU,CACR,IAAK,WACL,MAAO,mBACR,EAED,YAAa,CACX,IAAK,eACL,MAAO,uBACR,EAED,OAAQ,CACN,IAAK,SACL,MAAO,iBACR,EAED,MAAO,CACL,IAAK,QACL,MAAO,gBACR,EAED,YAAa,CACX,IAAK,eACL,MAAO,uBACR,EAED,OAAQ,CACN,IAAK,SACL,MAAO,iBACR,EAED,aAAc,CACZ,IAAK,gBACL,MAAO,wBACR,EAED,QAAS,CACP,IAAK,UACL,MAAO,kBACR,EAED,YAAa,CACX,IAAK,eACL,MAAO,uBACR,EAED,OAAQ,CACN,IAAK,SACL,MAAO,iBACR,EAED,WAAY,CACV,IAAK,cACL,MAAO,sBACR,EAED,aAAc,CACZ,IAAK,gBACL,MAAO,wBACR,CACH,EAEaC,GAAiB,CAACt1D,EAAOi7C,EAAOt7C,IAAY,CACvD,IAAI/O,EAEJ,MAAM2kE,EAAaF,GAAqBr1D,CAAK,EAS7C,OARI,OAAOu1D,GAAe,SACxB3kE,EAAS2kE,EACAta,IAAU,EACnBrqD,EAAS2kE,EAAW,IAEpB3kE,EAAS2kE,EAAW,MAAM,QAAQ,YAAata,EAAM,UAAU,EAG7Dt7C,GAAA,MAAAA,EAAS,UACPA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,MAAQ/O,EAERA,EAAS,OAIbA,CACT,ECpGO,SAAS4kE,GAAkB5jD,EAAM,CACtC,MAAO,CAACjS,EAAU,KAAO,CAEvB,MAAM81D,EAAQ91D,EAAQ,MAAQ,OAAOA,EAAQ,KAAK,EAAIiS,EAAK,aAE3D,OADeA,EAAK,QAAQ6jD,CAAK,GAAK7jD,EAAK,QAAQA,EAAK,YAAY,CAErE,CACH,CCLA,MAAM8jD,GAAc,CAClB,KAAM,mBACN,KAAM,aACN,OAAQ,WACR,MAAO,YACT,EAEMC,GAAc,CAClB,KAAM,iBACN,KAAM,cACN,OAAQ,YACR,MAAO,QACT,EAEMC,GAAkB,CACtB,KAAM,yBACN,KAAM,yBACN,OAAQ,qBACR,MAAO,oBACT,EAEaC,GAAa,CACxB,KAAML,GAAkB,CACtB,QAASE,GACT,aAAc,MAClB,CAAG,EAED,KAAMF,GAAkB,CACtB,QAASG,GACT,aAAc,MAClB,CAAG,EAED,SAAUH,GAAkB,CAC1B,QAASI,GACT,aAAc,MAClB,CAAG,CACH,ECtCME,GAAuB,CAC3B,SAAU,qBACV,UAAW,mBACX,MAAO,eACP,SAAU,kBACV,SAAU,cACV,MAAO,GACT,EAEaC,GAAiB,CAAC/1D,EAAOuyD,EAAOyD,EAAWC,IACtDH,GAAqB91D,CAAK,EC+BrB,SAASk2D,GAAgBtkD,EAAM,CACpC,MAAO,CAACvmB,EAAOsU,IAAY,CACzB,MAAM4e,EAAU5e,GAAA,MAAAA,EAAS,QAAU,OAAOA,EAAQ,OAAO,EAAI,aAE7D,IAAIw2D,EACJ,GAAI53C,IAAY,cAAgB3M,EAAK,iBAAkB,CACrD,MAAMwkD,EAAexkD,EAAK,wBAA0BA,EAAK,aACnD6jD,EAAQ91D,GAAA,MAAAA,EAAS,MAAQ,OAAOA,EAAQ,KAAK,EAAIy2D,EAEvDD,EACEvkD,EAAK,iBAAiB6jD,CAAK,GAAK7jD,EAAK,iBAAiBwkD,CAAY,CAC1E,KAAW,CACL,MAAMA,EAAexkD,EAAK,aACpB6jD,EAAQ91D,GAAA,MAAAA,EAAS,MAAQ,OAAOA,EAAQ,KAAK,EAAIiS,EAAK,aAE5DukD,EAAcvkD,EAAK,OAAO6jD,CAAK,GAAK7jD,EAAK,OAAOwkD,CAAY,CAClE,CACI,MAAM7hE,EAAQqd,EAAK,iBAAmBA,EAAK,iBAAiBvmB,CAAK,EAAIA,EAGrE,OAAO8qE,EAAY5hE,CAAK,CACzB,CACH,CC7DA,MAAM8hE,GAAY,CAChB,OAAQ,CAAC,IAAK,GAAG,EACjB,YAAa,CAAC,KAAM,IAAI,EACxB,KAAM,CAAC,gBAAiB,aAAa,CACvC,EAEMC,GAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,cAAe,cAAe,cAAe,aAAa,CACnE,EAMMC,GAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACD,EAED,KAAM,CACJ,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,UACD,CACH,EAEMC,GAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAChD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAC7D,KAAM,CACJ,SACA,SACA,UACA,YACA,WACA,SACA,UACD,CACH,EAEMC,GAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,KACV,KAAM,IACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,OACR,EACD,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,OACR,EACD,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,OACR,CACH,EAEMC,GAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,KACV,KAAM,IACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,UACR,EACD,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,UACR,EACD,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,OACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,UACR,CACH,EAEMC,GAAgB,CAACC,EAAaX,IAAa,CAC/C,MAAMrnB,EAAS,OAAOgoB,CAAW,EAS3BC,EAASjoB,EAAS,IACxB,GAAIioB,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,GAAE,CACjB,IAAK,GACH,OAAOjoB,EAAS,KAClB,IAAK,GACH,OAAOA,EAAS,KAClB,IAAK,GACH,OAAOA,EAAS,IACxB,CAEE,OAAOA,EAAS,IAClB,EAEakoB,GAAW,CACxB,cAAEH,GAEA,IAAKT,GAAgB,CACnB,OAAQG,GACR,aAAc,MAClB,CAAG,EAED,QAASH,GAAgB,CACvB,OAAQI,GACR,aAAc,OACd,iBAAmBS,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOb,GAAgB,CACrB,OAAQK,GACR,aAAc,MAClB,CAAG,EAED,IAAKL,GAAgB,CACnB,OAAQM,GACR,aAAc,MAClB,CAAG,EAED,UAAWN,GAAgB,CACzB,OAAQO,GACR,aAAc,OACd,iBAAkBC,GAClB,uBAAwB,MAC5B,CAAG,CACH,EC1LO,SAASM,GAAaplD,EAAM,CACjC,MAAO,CAAC4pC,EAAQ77C,EAAU,KAAO,CAC/B,MAAM81D,EAAQ91D,EAAQ,MAEhBs3D,EACHxB,GAAS7jD,EAAK,cAAc6jD,CAAK,GAClC7jD,EAAK,cAAcA,EAAK,iBAAiB,EACrCslD,EAAc1b,EAAO,MAAMyb,CAAY,EAE7C,GAAI,CAACC,EACH,OAAO,KAET,MAAMC,EAAgBD,EAAY,CAAC,EAE7BE,EACH3B,GAAS7jD,EAAK,cAAc6jD,CAAK,GAClC7jD,EAAK,cAAcA,EAAK,iBAAiB,EAErCxmB,EAAM,MAAM,QAAQgsE,CAAa,EACnCC,GAAUD,EAAgBv3D,GAAYA,EAAQ,KAAKs3D,CAAa,CAAC,EAEjEh5C,GAAQi5C,EAAgBv3D,GAAYA,EAAQ,KAAKs3D,CAAa,CAAC,EAEnE,IAAI9rE,EAEJA,EAAQumB,EAAK,cAAgBA,EAAK,cAAcxmB,CAAG,EAAIA,EACvDC,EAAQsU,EAAQ,cAEZA,EAAQ,cAActU,CAAK,EAC3BA,EAEJ,MAAMoH,EAAO+oD,EAAO,MAAM2b,EAAc,MAAM,EAE9C,MAAO,CAAE,MAAA9rE,EAAO,KAAAoH,CAAM,CACvB,CACH,CAEA,SAAS0rB,GAAQq8B,EAAQoB,EAAW,CAClC,UAAWxwD,KAAOovD,EAChB,GACE,OAAO,UAAU,eAAe,KAAKA,EAAQpvD,CAAG,GAChDwwD,EAAUpB,EAAOpvD,CAAG,CAAC,EAErB,OAAOA,CAIb,CAEA,SAASisE,GAAUzhE,EAAOgmD,EAAW,CACnC,QAASxwD,EAAM,EAAGA,EAAMwK,EAAM,OAAQxK,IACpC,GAAIwwD,EAAUhmD,EAAMxK,CAAG,CAAC,EACtB,OAAOA,CAIb,CCxDO,SAASksE,GAAoB1lD,EAAM,CACxC,MAAO,CAAC4pC,EAAQ77C,EAAU,KAAO,CAC/B,MAAMu3D,EAAc1b,EAAO,MAAM5pC,EAAK,YAAY,EAClD,GAAI,CAACslD,EAAa,OAAO,KACzB,MAAMC,EAAgBD,EAAY,CAAC,EAE7BK,EAAc/b,EAAO,MAAM5pC,EAAK,YAAY,EAClD,GAAI,CAAC2lD,EAAa,OAAO,KACzB,IAAIlsE,EAAQumB,EAAK,cACbA,EAAK,cAAc2lD,EAAY,CAAC,CAAC,EACjCA,EAAY,CAAC,EAGjBlsE,EAAQsU,EAAQ,cAAgBA,EAAQ,cAActU,CAAK,EAAIA,EAE/D,MAAMoH,EAAO+oD,EAAO,MAAM2b,EAAc,MAAM,EAE9C,MAAO,CAAE,MAAA9rE,EAAO,KAAAoH,CAAM,CACvB,CACH,CChBA,MAAM+kE,GAA4B,wBAC5BC,GAA4B,OAE5BC,GAAmB,CACvB,OAAQ,UACR,YAAa,6DACb,KAAM,4DACR,EACMC,GAAmB,CACvB,IAAK,CAAC,MAAO,SAAS,CACxB,EAEMC,GAAuB,CAC3B,OAAQ,WACR,YAAa,YACb,KAAM,gCACR,EACMC,GAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,GAAqB,CACzB,OAAQ,eACR,YAAa,sDACb,KAAM,2FACR,EACMC,GAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACD,EAED,IAAK,CACH,OACA,MACA,QACA,OACA,QACA,QACA,QACA,OACA,MACA,MACA,MACA,KACD,CACH,EAEMC,GAAmB,CACvB,OAAQ,YACR,MAAO,2BACP,YAAa,kCACb,KAAM,8DACR,EACMC,GAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EACxD,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAM,CAC3D,EAEMC,GAAyB,CAC7B,OAAQ,6DACR,IAAK,gFACP,EACMC,GAAyB,CAC7B,IAAK,CACH,GAAI,MACJ,GAAI,MACJ,SAAU,OACV,KAAM,OACN,QAAS,WACT,UAAW,aACX,QAAS,WACT,MAAO,QACR,CACH,EAEa33D,GAAQ,CACnB,cAAe82D,GAAoB,CACjC,aAAcE,GACd,aAAcC,GACd,cAAgBpsE,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAK2rE,GAAa,CAChB,cAAeU,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACvB,CAAG,EAED,QAASX,GAAa,CACpB,cAAeY,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,MACnB,cAAgBtjE,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOyiE,GAAa,CAClB,cAAec,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACvB,CAAG,EAED,IAAKf,GAAa,CAChB,cAAegB,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACvB,CAAG,EAED,UAAWjB,GAAa,CACtB,cAAekB,GACf,kBAAmB,MACnB,cAAeC,GACf,kBAAmB,KACvB,CAAG,CACH,ECrHaC,GAAO,CAClB,KAAM,QACN,eAAgB9C,GAChB,WAAYO,GACZ,eAAgBE,GAChB,SAAUe,GACV,MAAOt2D,GACP,QAAS,CACP,aAAc,EACd,sBAAuB,CACxB,CACH,ECFO,SAAS63D,GAAajG,EAAM,CACjC,MAAMG,EAAQN,GAAOG,CAAI,EAGzB,OAFa6B,GAAyB1B,EAAO4C,GAAY5C,CAAK,CAAC,EACtC,CAE3B,CCFO,SAAS+F,GAAWlG,EAAM,CAC/B,MAAMG,EAAQN,GAAOG,CAAI,EACnBvxD,EAAO,CAAC0yD,GAAehB,CAAK,EAAI,CAACiC,GAAmBjC,CAAK,EAK/D,OAAO,KAAK,MAAM1xD,EAAO4xD,EAAkB,EAAI,CACjD,CCWO,SAAS8F,GAAYnG,EAAMzyD,EAAS,aACzC,MAAM4yD,EAAQN,GAAOG,CAAI,EACnBqB,EAAOlB,EAAM,YAAa,EAE1BS,EAAiBC,GAAmB,EACpCuF,GACJ74D,GAAA,YAAAA,EAAS,0BACTqW,GAAA/lB,EAAA0P,GAAA,YAAAA,EAAS,SAAT,YAAA1P,EAAiB,UAAjB,YAAA+lB,EAA0B,wBAC1Bg9C,EAAe,yBACfI,GAAAC,EAAAL,EAAe,SAAf,YAAAK,EAAuB,UAAvB,YAAAD,EAAgC,wBAChC,EAEIqF,EAAsBtG,GAAcC,EAAM,CAAC,EACjDqG,EAAoB,YAAYhF,EAAO,EAAG,EAAG+E,CAAqB,EAClEC,EAAoB,SAAS,EAAG,EAAG,EAAG,CAAC,EACvC,MAAM9E,EAAkBT,GAAYuF,EAAqB94D,CAAO,EAE1D+4D,EAAsBvG,GAAcC,EAAM,CAAC,EACjDsG,EAAoB,YAAYjF,EAAM,EAAG+E,CAAqB,EAC9DE,EAAoB,SAAS,EAAG,EAAG,EAAG,CAAC,EACvC,MAAM7E,EAAkBX,GAAYwF,EAAqB/4D,CAAO,EAEhE,OAAI4yD,EAAM,QAAO,GAAMoB,EAAgB,QAAO,EACrCF,EAAO,EACLlB,EAAM,QAAS,GAAIsB,EAAgB,QAAO,EAC5CJ,EAEAA,EAAO,CAElB,CC7BO,SAASkF,GAAgBvG,EAAMzyD,EAAS,aAC7C,MAAMqzD,EAAiBC,GAAmB,EACpCuF,GACJ74D,GAAA,YAAAA,EAAS,0BACTqW,GAAA/lB,EAAA0P,GAAA,YAAAA,EAAS,SAAT,YAAA1P,EAAiB,UAAjB,YAAA+lB,EAA0B,wBAC1Bg9C,EAAe,yBACfI,GAAAC,EAAAL,EAAe,SAAf,YAAAK,EAAuB,UAAvB,YAAAD,EAAgC,wBAChC,EAEIK,EAAO8E,GAAYnG,EAAMzyD,CAAO,EAChCi5D,EAAYzG,GAAcC,EAAM,CAAC,EACvC,OAAAwG,EAAU,YAAYnF,EAAM,EAAG+E,CAAqB,EACpDI,EAAU,SAAS,EAAG,EAAG,EAAG,CAAC,EACf1F,GAAY0F,EAAWj5D,CAAO,CAE9C,CCdO,SAASk5D,GAAQzG,EAAMzyD,EAAS,CACrC,MAAM4yD,EAAQN,GAAOG,CAAI,EACnBvxD,EAAO,CAACqyD,GAAYX,EAAO5yD,CAAO,EAAI,CAACg5D,GAAgBpG,EAAO5yD,CAAO,EAK3E,OAAO,KAAK,MAAMkB,EAAO4xD,EAAkB,EAAI,CACjD,CCtDO,SAASqG,GAAgBlqB,EAAQmqB,EAAc,CACpD,MAAMC,EAAOpqB,EAAS,EAAI,IAAM,GAC1BqqB,EAAS,KAAK,IAAIrqB,CAAM,EAAE,WAAW,SAASmqB,EAAc,GAAG,EACrE,OAAOC,EAAOC,CAChB,CCWO,MAAMC,GAAkB,CAE7B,EAAE9G,EAAMpyD,EAAO,CAUb,MAAMm5D,EAAa/G,EAAK,YAAa,EAE/BqB,EAAO0F,EAAa,EAAIA,EAAa,EAAIA,EAC/C,OAAOL,GAAgB94D,IAAU,KAAOyzD,EAAO,IAAMA,EAAMzzD,EAAM,MAAM,CACxE,EAGD,EAAEoyD,EAAMpyD,EAAO,CACb,MAAMo5D,EAAQhH,EAAK,SAAU,EAC7B,OAAOpyD,IAAU,IAAM,OAAOo5D,EAAQ,CAAC,EAAIN,GAAgBM,EAAQ,EAAG,CAAC,CACxE,EAGD,EAAEhH,EAAMpyD,EAAO,CACb,OAAO84D,GAAgB1G,EAAK,QAAO,EAAIpyD,EAAM,MAAM,CACpD,EAGD,EAAEoyD,EAAMpyD,EAAO,CACb,MAAMq5D,EAAqBjH,EAAK,SAAQ,EAAK,IAAM,EAAI,KAAO,KAE9D,OAAQpyD,EAAK,CACX,IAAK,IACL,IAAK,KACH,OAAOq5D,EAAmB,YAAa,EACzC,IAAK,MACH,OAAOA,EACT,IAAK,QACH,OAAOA,EAAmB,CAAC,EAC7B,IAAK,OACL,QACE,OAAOA,IAAuB,KAAO,OAAS,MACtD,CACG,EAGD,EAAEjH,EAAMpyD,EAAO,CACb,OAAO84D,GAAgB1G,EAAK,SAAQ,EAAK,IAAM,GAAIpyD,EAAM,MAAM,CAChE,EAGD,EAAEoyD,EAAMpyD,EAAO,CACb,OAAO84D,GAAgB1G,EAAK,SAAQ,EAAIpyD,EAAM,MAAM,CACrD,EAGD,EAAEoyD,EAAMpyD,EAAO,CACb,OAAO84D,GAAgB1G,EAAK,WAAU,EAAIpyD,EAAM,MAAM,CACvD,EAGD,EAAEoyD,EAAMpyD,EAAO,CACb,OAAO84D,GAAgB1G,EAAK,WAAU,EAAIpyD,EAAM,MAAM,CACvD,EAGD,EAAEoyD,EAAMpyD,EAAO,CACb,MAAMs5D,EAAiBt5D,EAAM,OACvBu5D,EAAenH,EAAK,gBAAiB,EACrCoH,EAAoB,KAAK,MAC7BD,EAAe,KAAK,IAAI,GAAID,EAAiB,CAAC,CAC/C,EACD,OAAOR,GAAgBU,EAAmBx5D,EAAM,MAAM,CACvD,CACH,ECnFMy5D,GAAgB,CACpB,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,OACT,EAgDaC,GAAa,CAExB,EAAG,SAAUtH,EAAMpyD,EAAO82D,EAAU,CAClC,MAAM6C,EAAMvH,EAAK,YAAa,EAAG,EAAI,EAAI,EACzC,OAAQpyD,EAAK,CAEX,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO82D,EAAS,IAAI6C,EAAK,CAAE,MAAO,aAAa,CAAE,EAEnD,IAAK,QACH,OAAO7C,EAAS,IAAI6C,EAAK,CAAE,MAAO,QAAQ,CAAE,EAE9C,IAAK,OACL,QACE,OAAO7C,EAAS,IAAI6C,EAAK,CAAE,MAAO,MAAM,CAAE,CAClD,CACG,EAGD,EAAG,SAAUvH,EAAMpyD,EAAO82D,EAAU,CAElC,GAAI92D,IAAU,KAAM,CAClB,MAAMm5D,EAAa/G,EAAK,YAAa,EAE/BqB,EAAO0F,EAAa,EAAIA,EAAa,EAAIA,EAC/C,OAAOrC,EAAS,cAAcrD,EAAM,CAAE,KAAM,MAAM,CAAE,CAC1D,CAEI,OAAOyF,GAAgB,EAAE9G,EAAMpyD,CAAK,CACrC,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAUn3D,EAAS,CAC3C,MAAMi6D,EAAiBrB,GAAYnG,EAAMzyD,CAAO,EAE1Ck6D,EAAWD,EAAiB,EAAIA,EAAiB,EAAIA,EAG3D,GAAI55D,IAAU,KAAM,CAClB,MAAM85D,EAAeD,EAAW,IAChC,OAAOf,GAAgBgB,EAAc,CAAC,CAC5C,CAGI,OAAI95D,IAAU,KACL82D,EAAS,cAAc+C,EAAU,CAAE,KAAM,MAAM,CAAE,EAInDf,GAAgBe,EAAU75D,EAAM,MAAM,CAC9C,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO,CACxB,MAAM+5D,EAAcvG,GAAepB,CAAI,EAGvC,OAAO0G,GAAgBiB,EAAa/5D,EAAM,MAAM,CACjD,EAWD,EAAG,SAAUoyD,EAAMpyD,EAAO,CACxB,MAAMyzD,EAAOrB,EAAK,YAAa,EAC/B,OAAO0G,GAAgBrF,EAAMzzD,EAAM,MAAM,CAC1C,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMC,EAAU,KAAK,MAAM3E,EAAK,SAAU,EAAG,GAAK,CAAC,EACnD,OAAQpyD,EAAK,CAEX,IAAK,IACH,OAAO,OAAO+2D,CAAO,EAEvB,IAAK,KACH,OAAO+B,GAAgB/B,EAAS,CAAC,EAEnC,IAAK,KACH,OAAOD,EAAS,cAAcC,EAAS,CAAE,KAAM,SAAS,CAAE,EAE5D,IAAK,MACH,OAAOD,EAAS,QAAQC,EAAS,CAC/B,MAAO,cACP,QAAS,YACnB,CAAS,EAEH,IAAK,QACH,OAAOD,EAAS,QAAQC,EAAS,CAC/B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OAAOD,EAAS,QAAQC,EAAS,CAC/B,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAU3E,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMC,EAAU,KAAK,MAAM3E,EAAK,SAAU,EAAG,GAAK,CAAC,EACnD,OAAQpyD,EAAK,CAEX,IAAK,IACH,OAAO,OAAO+2D,CAAO,EAEvB,IAAK,KACH,OAAO+B,GAAgB/B,EAAS,CAAC,EAEnC,IAAK,KACH,OAAOD,EAAS,cAAcC,EAAS,CAAE,KAAM,SAAS,CAAE,EAE5D,IAAK,MACH,OAAOD,EAAS,QAAQC,EAAS,CAC/B,MAAO,cACP,QAAS,YACnB,CAAS,EAEH,IAAK,QACH,OAAOD,EAAS,QAAQC,EAAS,CAC/B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OAAOD,EAAS,QAAQC,EAAS,CAC/B,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAU3E,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMsC,EAAQhH,EAAK,SAAU,EAC7B,OAAQpyD,EAAK,CACX,IAAK,IACL,IAAK,KACH,OAAOk5D,GAAgB,EAAE9G,EAAMpyD,CAAK,EAEtC,IAAK,KACH,OAAO82D,EAAS,cAAcsC,EAAQ,EAAG,CAAE,KAAM,QAAS,EAE5D,IAAK,MACH,OAAOtC,EAAS,MAAMsC,EAAO,CAC3B,MAAO,cACP,QAAS,YACnB,CAAS,EAEH,IAAK,QACH,OAAOtC,EAAS,MAAMsC,EAAO,CAC3B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OAAOtC,EAAS,MAAMsC,EAAO,CAAE,MAAO,OAAQ,QAAS,aAAc,CAC7E,CACG,EAGD,EAAG,SAAUhH,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMsC,EAAQhH,EAAK,SAAU,EAC7B,OAAQpyD,EAAK,CAEX,IAAK,IACH,OAAO,OAAOo5D,EAAQ,CAAC,EAEzB,IAAK,KACH,OAAON,GAAgBM,EAAQ,EAAG,CAAC,EAErC,IAAK,KACH,OAAOtC,EAAS,cAAcsC,EAAQ,EAAG,CAAE,KAAM,QAAS,EAE5D,IAAK,MACH,OAAOtC,EAAS,MAAMsC,EAAO,CAC3B,MAAO,cACP,QAAS,YACnB,CAAS,EAEH,IAAK,QACH,OAAOtC,EAAS,MAAMsC,EAAO,CAC3B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OAAOtC,EAAS,MAAMsC,EAAO,CAAE,MAAO,OAAQ,QAAS,aAAc,CAC7E,CACG,EAGD,EAAG,SAAUhH,EAAMpyD,EAAO82D,EAAUn3D,EAAS,CAC3C,MAAMq6D,EAAOnB,GAAQzG,EAAMzyD,CAAO,EAElC,OAAIK,IAAU,KACL82D,EAAS,cAAckD,EAAM,CAAE,KAAM,MAAM,CAAE,EAG/ClB,GAAgBkB,EAAMh6D,EAAM,MAAM,CAC1C,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMmD,EAAU3B,GAAWlG,CAAI,EAE/B,OAAIpyD,IAAU,KACL82D,EAAS,cAAcmD,EAAS,CAAE,KAAM,MAAM,CAAE,EAGlDnB,GAAgBmB,EAASj6D,EAAM,MAAM,CAC7C,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,OAAI92D,IAAU,KACL82D,EAAS,cAAc1E,EAAK,QAAO,EAAI,CAAE,KAAM,OAAQ,EAGzD8G,GAAgB,EAAE9G,EAAMpyD,CAAK,CACrC,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMoD,EAAY7B,GAAajG,CAAI,EAEnC,OAAIpyD,IAAU,KACL82D,EAAS,cAAcoD,EAAW,CAAE,KAAM,WAAW,CAAE,EAGzDpB,GAAgBoB,EAAWl6D,EAAM,MAAM,CAC/C,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMqD,EAAY/H,EAAK,OAAQ,EAC/B,OAAQpyD,EAAK,CAEX,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO82D,EAAS,IAAIqD,EAAW,CAC7B,MAAO,cACP,QAAS,YACnB,CAAS,EAEH,IAAK,QACH,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,SACH,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,QACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAU/H,EAAMpyD,EAAO82D,EAAUn3D,EAAS,CAC3C,MAAMw6D,EAAY/H,EAAK,OAAQ,EACzBgI,GAAkBD,EAAYx6D,EAAQ,aAAe,GAAK,GAAK,EACrE,OAAQK,EAAK,CAEX,IAAK,IACH,OAAO,OAAOo6D,CAAc,EAE9B,IAAK,KACH,OAAOtB,GAAgBsB,EAAgB,CAAC,EAE1C,IAAK,KACH,OAAOtD,EAAS,cAAcsD,EAAgB,CAAE,KAAM,KAAK,CAAE,EAC/D,IAAK,MACH,OAAOtD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,cACP,QAAS,YACnB,CAAS,EAEH,IAAK,QACH,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,SACH,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,QACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAU/H,EAAMpyD,EAAO82D,EAAUn3D,EAAS,CAC3C,MAAMw6D,EAAY/H,EAAK,OAAQ,EACzBgI,GAAkBD,EAAYx6D,EAAQ,aAAe,GAAK,GAAK,EACrE,OAAQK,EAAK,CAEX,IAAK,IACH,OAAO,OAAOo6D,CAAc,EAE9B,IAAK,KACH,OAAOtB,GAAgBsB,EAAgBp6D,EAAM,MAAM,EAErD,IAAK,KACH,OAAO82D,EAAS,cAAcsD,EAAgB,CAAE,KAAM,KAAK,CAAE,EAC/D,IAAK,MACH,OAAOtD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,cACP,QAAS,YACnB,CAAS,EAEH,IAAK,QACH,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,SACH,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,QACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAU/H,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMqD,EAAY/H,EAAK,OAAQ,EACzBiI,EAAeF,IAAc,EAAI,EAAIA,EAC3C,OAAQn6D,EAAK,CAEX,IAAK,IACH,OAAO,OAAOq6D,CAAY,EAE5B,IAAK,KACH,OAAOvB,GAAgBuB,EAAcr6D,EAAM,MAAM,EAEnD,IAAK,KACH,OAAO82D,EAAS,cAAcuD,EAAc,CAAE,KAAM,KAAK,CAAE,EAE7D,IAAK,MACH,OAAOvD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,cACP,QAAS,YACnB,CAAS,EAEH,IAAK,QACH,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,SACH,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,QACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OAAOrD,EAAS,IAAIqD,EAAW,CAC7B,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAU/H,EAAMpyD,EAAO82D,EAAU,CAElC,MAAMuC,EADQjH,EAAK,SAAU,EACM,IAAM,EAAI,KAAO,KAEpD,OAAQpyD,EAAK,CACX,IAAK,IACL,IAAK,KACH,OAAO82D,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,cACP,QAAS,YACnB,CAAS,EACH,IAAK,MACH,OAAOvC,EACJ,UAAUuC,EAAoB,CAC7B,MAAO,cACP,QAAS,YACV,GACA,YAAa,EAClB,IAAK,QACH,OAAOvC,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,SACP,QAAS,YACnB,CAAS,EACH,IAAK,OACL,QACE,OAAOvC,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAUjH,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMwD,EAAQlI,EAAK,SAAU,EAC7B,IAAIiH,EASJ,OARIiB,IAAU,GACZjB,EAAqBI,GAAc,KAC1Ba,IAAU,EACnBjB,EAAqBI,GAAc,SAEnCJ,EAAqBiB,EAAQ,IAAM,EAAI,KAAO,KAGxCt6D,EAAK,CACX,IAAK,IACL,IAAK,KACH,OAAO82D,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,cACP,QAAS,YACnB,CAAS,EACH,IAAK,MACH,OAAOvC,EACJ,UAAUuC,EAAoB,CAC7B,MAAO,cACP,QAAS,YACV,GACA,YAAa,EAClB,IAAK,QACH,OAAOvC,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,SACP,QAAS,YACnB,CAAS,EACH,IAAK,OACL,QACE,OAAOvC,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAUjH,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMwD,EAAQlI,EAAK,SAAU,EAC7B,IAAIiH,EAWJ,OAVIiB,GAAS,GACXjB,EAAqBI,GAAc,QAC1Ba,GAAS,GAClBjB,EAAqBI,GAAc,UAC1Ba,GAAS,EAClBjB,EAAqBI,GAAc,QAEnCJ,EAAqBI,GAAc,MAG7Bz5D,EAAK,CACX,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO82D,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,cACP,QAAS,YACnB,CAAS,EACH,IAAK,QACH,OAAOvC,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,SACP,QAAS,YACnB,CAAS,EACH,IAAK,OACL,QACE,OAAOvC,EAAS,UAAUuC,EAAoB,CAC5C,MAAO,OACP,QAAS,YACnB,CAAS,CACT,CACG,EAGD,EAAG,SAAUjH,EAAMpyD,EAAO82D,EAAU,CAClC,GAAI92D,IAAU,KAAM,CAClB,IAAIs6D,EAAQlI,EAAK,SAAQ,EAAK,GAC9B,OAAIkI,IAAU,IAAGA,EAAQ,IAClBxD,EAAS,cAAcwD,EAAO,CAAE,KAAM,MAAM,CAAE,CAC3D,CAEI,OAAOpB,GAAgB,EAAE9G,EAAMpyD,CAAK,CACrC,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,OAAI92D,IAAU,KACL82D,EAAS,cAAc1E,EAAK,SAAQ,EAAI,CAAE,KAAM,OAAQ,EAG1D8G,GAAgB,EAAE9G,EAAMpyD,CAAK,CACrC,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,MAAMwD,EAAQlI,EAAK,SAAQ,EAAK,GAEhC,OAAIpyD,IAAU,KACL82D,EAAS,cAAcwD,EAAO,CAAE,KAAM,MAAM,CAAE,EAGhDxB,GAAgBwB,EAAOt6D,EAAM,MAAM,CAC3C,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,IAAIwD,EAAQlI,EAAK,SAAU,EAG3B,OAFIkI,IAAU,IAAGA,EAAQ,IAErBt6D,IAAU,KACL82D,EAAS,cAAcwD,EAAO,CAAE,KAAM,MAAM,CAAE,EAGhDxB,GAAgBwB,EAAOt6D,EAAM,MAAM,CAC3C,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,OAAI92D,IAAU,KACL82D,EAAS,cAAc1E,EAAK,WAAU,EAAI,CAAE,KAAM,SAAU,EAG9D8G,GAAgB,EAAE9G,EAAMpyD,CAAK,CACrC,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO82D,EAAU,CAClC,OAAI92D,IAAU,KACL82D,EAAS,cAAc1E,EAAK,WAAU,EAAI,CAAE,KAAM,SAAU,EAG9D8G,GAAgB,EAAE9G,EAAMpyD,CAAK,CACrC,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAO,CACxB,OAAOk5D,GAAgB,EAAE9G,EAAMpyD,CAAK,CACrC,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAOu6D,EAAW,CACnC,MAAMC,EAAiBpI,EAAK,kBAAmB,EAE/C,GAAIoI,IAAmB,EACrB,MAAO,IAGT,OAAQx6D,EAAK,CAEX,IAAK,IACH,OAAOy6D,GAAkCD,CAAc,EAKzD,IAAK,OACL,IAAK,KACH,OAAOE,GAAeF,CAAc,EAKtC,IAAK,QACL,IAAK,MACL,QACE,OAAOE,GAAeF,EAAgB,GAAG,CACjD,CACG,EAGD,EAAG,SAAUpI,EAAMpyD,EAAOu6D,EAAW,CACnC,MAAMC,EAAiBpI,EAAK,kBAAmB,EAE/C,OAAQpyD,EAAK,CAEX,IAAK,IACH,OAAOy6D,GAAkCD,CAAc,EAKzD,IAAK,OACL,IAAK,KACH,OAAOE,GAAeF,CAAc,EAKtC,IAAK,QACL,IAAK,MACL,QACE,OAAOE,GAAeF,EAAgB,GAAG,CACjD,CACG,EAGD,EAAG,SAAUpI,EAAMpyD,EAAOu6D,EAAW,CACnC,MAAMC,EAAiBpI,EAAK,kBAAmB,EAE/C,OAAQpyD,EAAK,CAEX,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQ26D,GAAoBH,EAAgB,GAAG,EAExD,IAAK,OACL,QACE,MAAO,MAAQE,GAAeF,EAAgB,GAAG,CACzD,CACG,EAGD,EAAG,SAAUpI,EAAMpyD,EAAOu6D,EAAW,CACnC,MAAMC,EAAiBpI,EAAK,kBAAmB,EAE/C,OAAQpyD,EAAK,CAEX,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQ26D,GAAoBH,EAAgB,GAAG,EAExD,IAAK,OACL,QACE,MAAO,MAAQE,GAAeF,EAAgB,GAAG,CACzD,CACG,EAGD,EAAG,SAAUpI,EAAMpyD,EAAOu6D,EAAW,CACnC,MAAM9vC,EAAY,KAAK,MAAM2nC,EAAK,QAAS,EAAG,GAAI,EAClD,OAAO0G,GAAgBruC,EAAWzqB,EAAM,MAAM,CAC/C,EAGD,EAAG,SAAUoyD,EAAMpyD,EAAOu6D,EAAW,CACnC,MAAM9vC,EAAY2nC,EAAK,QAAS,EAChC,OAAO0G,GAAgBruC,EAAWzqB,EAAM,MAAM,CAC/C,CACH,EAEA,SAAS26D,GAAoB7kE,EAAQirB,EAAY,GAAI,CACnD,MAAMi4C,EAAOljE,EAAS,EAAI,IAAM,IAC1B8kE,EAAY,KAAK,IAAI9kE,CAAM,EAC3BwkE,EAAQ,KAAK,MAAMM,EAAY,EAAE,EACjCC,EAAUD,EAAY,GAC5B,OAAIC,IAAY,EACP7B,EAAO,OAAOsB,CAAK,EAErBtB,EAAO,OAAOsB,CAAK,EAAIv5C,EAAY+3C,GAAgB+B,EAAS,CAAC,CACtE,CAEA,SAASJ,GAAkC3kE,EAAQirB,EAAW,CAC5D,OAAIjrB,EAAS,KAAO,GACLA,EAAS,EAAI,IAAM,KAClBgjE,GAAgB,KAAK,IAAIhjE,CAAM,EAAI,GAAI,CAAC,EAEjD4kE,GAAe5kE,EAAQirB,CAAS,CACzC,CAEA,SAAS25C,GAAe5kE,EAAQirB,EAAY,GAAI,CAC9C,MAAMi4C,EAAOljE,EAAS,EAAI,IAAM,IAC1B8kE,EAAY,KAAK,IAAI9kE,CAAM,EAC3BwkE,EAAQxB,GAAgB,KAAK,MAAM8B,EAAY,EAAE,EAAG,CAAC,EACrDC,EAAU/B,GAAgB8B,EAAY,GAAI,CAAC,EACjD,OAAO5B,EAAOsB,EAAQv5C,EAAY85C,CACpC,CCvwBA,MAAMC,GAAoB,CAACj7D,EAASg2D,IAAe,CACjD,OAAQh2D,EAAO,CACb,IAAK,IACH,OAAOg2D,EAAW,KAAK,CAAE,MAAO,OAAO,CAAE,EAC3C,IAAK,KACH,OAAOA,EAAW,KAAK,CAAE,MAAO,QAAQ,CAAE,EAC5C,IAAK,MACH,OAAOA,EAAW,KAAK,CAAE,MAAO,MAAM,CAAE,EAC1C,IAAK,OACL,QACE,OAAOA,EAAW,KAAK,CAAE,MAAO,MAAM,CAAE,CAC9C,CACA,EAEMkF,GAAoB,CAACl7D,EAASg2D,IAAe,CACjD,OAAQh2D,EAAO,CACb,IAAK,IACH,OAAOg2D,EAAW,KAAK,CAAE,MAAO,OAAO,CAAE,EAC3C,IAAK,KACH,OAAOA,EAAW,KAAK,CAAE,MAAO,QAAQ,CAAE,EAC5C,IAAK,MACH,OAAOA,EAAW,KAAK,CAAE,MAAO,MAAM,CAAE,EAC1C,IAAK,OACL,QACE,OAAOA,EAAW,KAAK,CAAE,MAAO,MAAM,CAAE,CAC9C,CACA,EAEMmF,GAAwB,CAACn7D,EAASg2D,IAAe,CACrD,MAAMqB,EAAcr3D,EAAQ,MAAM,WAAW,GAAK,CAAE,EAC9Co7D,EAAc/D,EAAY,CAAC,EAC3BgE,EAAchE,EAAY,CAAC,EAEjC,GAAI,CAACgE,EACH,OAAOJ,GAAkBj7D,EAASg2D,CAAU,EAG9C,IAAIsF,EAEJ,OAAQF,EAAW,CACjB,IAAK,IACHE,EAAiBtF,EAAW,SAAS,CAAE,MAAO,OAAO,CAAE,EACvD,MACF,IAAK,KACHsF,EAAiBtF,EAAW,SAAS,CAAE,MAAO,QAAQ,CAAE,EACxD,MACF,IAAK,MACHsF,EAAiBtF,EAAW,SAAS,CAAE,MAAO,MAAM,CAAE,EACtD,MACF,IAAK,OACL,QACEsF,EAAiBtF,EAAW,SAAS,CAAE,MAAO,MAAM,CAAE,EACtD,KACN,CAEE,OAAOsF,EACJ,QAAQ,WAAYL,GAAkBG,EAAapF,CAAU,CAAC,EAC9D,QAAQ,WAAYkF,GAAkBG,EAAarF,CAAU,CAAC,CACnE,EAEauF,GAAiB,CAC5B,EAAGL,GACH,EAAGC,EACL,EC/DMK,GAAmB,OACnBC,GAAkB,OAElBC,GAAc,CAAC,IAAK,KAAM,KAAM,MAAM,EAErC,SAASC,GAA0Bx7D,EAAO,CAC/C,OAAOq7D,GAAiB,KAAKr7D,CAAK,CACpC,CAEO,SAASy7D,GAAyBz7D,EAAO,CAC9C,OAAOs7D,GAAgB,KAAKt7D,CAAK,CACnC,CAEO,SAAS07D,GAA0B17D,EAAO2oB,EAAQp4B,EAAO,CAC9D,MAAMsjD,EAAWryC,GAAQxB,EAAO2oB,EAAQp4B,CAAK,EAE7C,GADA,QAAQ,KAAKsjD,CAAQ,EACjB0nB,GAAY,SAASv7D,CAAK,EAAG,MAAM,IAAI,WAAW6zC,CAAQ,CAChE,CAEA,SAASryC,GAAQxB,EAAO2oB,EAAQp4B,EAAO,CACrC,MAAMorE,EAAU37D,EAAM,CAAC,IAAM,IAAM,QAAU,oBAC7C,MAAO,SAASA,EAAM,YAAa,oBAAmBA,CAAK,YAAY2oB,CAAM,sBAAsBgzC,CAAO,mBAAmBprE,CAAK,iFACpI,CCKA,MAAMqrE,GACJ,wDAIIC,GAA6B,oCAE7BC,GAAsB,eACtBC,GAAoB,MACpBC,GAAgC,WAsS/B,SAASrzC,GAAOypC,EAAM6J,EAAWt8D,EAAS,qBAC/C,MAAMqzD,EAAiBC,GAAmB,EACpCl9B,GAASp2B,GAAA,YAAAA,EAAS,SAAUqzD,EAAe,QAAUkJ,GAErD1D,GACJ74D,GAAA,YAAAA,EAAS,0BACTqW,GAAA/lB,EAAA0P,GAAA,YAAAA,EAAS,SAAT,YAAA1P,EAAiB,UAAjB,YAAA+lB,EAA0B,wBAC1Bg9C,EAAe,yBACfI,GAAAC,EAAAL,EAAe,SAAf,YAAAK,EAAuB,UAAvB,YAAAD,EAAgC,wBAChC,EAEID,GACJxzD,GAAA,YAAAA,EAAS,iBACTw8D,GAAAhmD,EAAAxW,GAAA,YAAAA,EAAS,SAAT,YAAAwW,EAAiB,UAAjB,YAAAgmD,EAA0B,eAC1BnJ,EAAe,gBACfoJ,GAAAC,EAAArJ,EAAe,SAAf,YAAAqJ,EAAuB,UAAvB,YAAAD,EAAgC,eAChC,EAEIE,EAAerK,GAAOG,CAAI,EAEhC,GAAI,CAAC0C,GAAQwH,CAAY,EACvB,MAAM,IAAI,WAAW,oBAAoB,EAG3C,IAAIlnB,EAAQ6mB,EACT,MAAMJ,EAA0B,EAChC,IAAKU,GAAc,CAClB,MAAMC,EAAiBD,EAAU,CAAC,EAClC,GAAIC,IAAmB,KAAOA,IAAmB,IAAK,CACpD,MAAMC,EAAgBrB,GAAeoB,CAAc,EACnD,OAAOC,EAAcF,EAAWxmC,EAAO,UAAU,CACzD,CACM,OAAOwmC,CACR,GACA,KAAK,EAAE,EACP,MAAMX,EAAsB,EAC5B,IAAKW,GAAc,CAElB,GAAIA,IAAc,KAChB,MAAO,CAAE,QAAS,GAAO,MAAO,GAAK,EAGvC,MAAMC,EAAiBD,EAAU,CAAC,EAClC,GAAIC,IAAmB,IACrB,MAAO,CAAE,QAAS,GAAO,MAAOE,GAAmBH,CAAS,CAAG,EAGjE,GAAI7C,GAAW8C,CAAc,EAC3B,MAAO,CAAE,QAAS,GAAM,MAAOD,CAAW,EAG5C,GAAIC,EAAe,MAAMR,EAA6B,EACpD,MAAM,IAAI,WACR,iEACEQ,EACA,GACH,EAGH,MAAO,CAAE,QAAS,GAAO,MAAOD,CAAW,CACjD,CAAK,EAGCxmC,EAAO,SAAS,eAClBqf,EAAQrf,EAAO,SAAS,aAAaumC,EAAclnB,CAAK,GAG1D,MAAMunB,EAAmB,CACvB,sBAAAnE,EACA,aAAArF,EACA,OAAAp9B,CACD,EAED,OAAOqf,EACJ,IAAK/G,GAAS,CACb,GAAI,CAACA,EAAK,QAAS,OAAOA,EAAK,MAE/B,MAAMruC,EAAQquC,EAAK,OAGhB,EAAC1uC,GAAA,MAAAA,EAAS,8BACT87D,GAAyBz7D,CAAK,GAC/B,EAACL,GAAA,MAAAA,EAAS,+BACT67D,GAA0Bx7D,CAAK,IAEjC07D,GAA0B17D,EAAOi8D,EAAW,OAAO7J,CAAI,CAAC,EAG1D,MAAM7jB,EAAYmrB,GAAW15D,EAAM,CAAC,CAAC,EACrC,OAAOuuC,EAAU+tB,EAAct8D,EAAO+1B,EAAO,SAAU4mC,CAAgB,CACxE,GACA,KAAK,EAAE,CACZ,CAEA,SAASD,GAAmBnsE,EAAO,CACjC,MAAM2T,EAAU3T,EAAM,MAAMurE,EAAmB,EAE/C,OAAK53D,EAIEA,EAAQ,CAAC,EAAE,QAAQ63D,GAAmB,GAAG,EAHvCxrE,CAIX,CClYO,SAASwlE,GAAe3D,EAAMwK,EAAUj9D,EAAS,aACtD,MAAM4yD,EAAQN,GAAOG,CAAI,EACnB4D,EAAY/D,GAAO2K,CAAQ,EAE3B5J,EAAiBC,GAAmB,EACpCl9B,GAASp2B,GAAA,YAAAA,EAAS,SAAUqzD,EAAe,QAAUkJ,GACrD/I,GACJxzD,GAAA,YAAAA,EAAS,iBACTqW,GAAA/lB,EAAA0P,GAAA,YAAAA,EAAS,SAAT,YAAA1P,EAAiB,UAAjB,YAAA+lB,EAA0B,eAC1Bg9C,EAAe,gBACfI,GAAAC,EAAAL,EAAe,SAAf,YAAAK,EAAuB,UAAvB,YAAAD,EAAgC,eAChC,EAEIvyD,EAAOozD,GAAyB1B,EAAOyD,CAAS,EAEtD,GAAI,MAAMn1D,CAAI,EACZ,MAAM,IAAI,WAAW,oBAAoB,EAG3C,IAAIb,EACAa,EAAO,GACTb,EAAQ,QACCa,EAAO,GAChBb,EAAQ,WACCa,EAAO,EAChBb,EAAQ,YACCa,EAAO,EAChBb,EAAQ,QACCa,EAAO,EAChBb,EAAQ,WACCa,EAAO,EAChBb,EAAQ,WAERA,EAAQ,QAGV,MAAMi8D,EAAYlmC,EAAO,eAAe/1B,EAAOuyD,EAAOyD,EAAW,CAC/D,OAAAjgC,EACA,aAAAo9B,CACJ,CAAG,EACD,OAAOxqC,GAAO4pC,EAAO0J,EAAW,CAAE,OAAAlmC,EAAQ,aAAAo9B,CAAY,CAAE,CAC1D,CCjEO,SAAS0J,GAAezK,EAAM,CACnC,MAAMG,EAAQN,GAAOG,CAAI,EACnBqB,EAAOlB,EAAM,YAAa,EAC1BuK,EAAavK,EAAM,SAAU,EAC7BwK,EAAiB5K,GAAcC,EAAM,CAAC,EAC5C,OAAA2K,EAAe,YAAYtJ,EAAMqJ,EAAa,EAAG,CAAC,EAClDC,EAAe,SAAS,EAAG,EAAG,EAAG,CAAC,EAC3BA,EAAe,QAAS,CACjC,CCJO,SAAS9J,IAAoB,CAClC,OAAO,OAAO,OAAO,CAAE,EAAE+J,GAAyB,CAAE,CACtD,CCJO,SAASC,GAAU7K,EAAM,CAE9B,IAAIkB,EADUrB,GAAOG,CAAI,EACT,OAAQ,EAExB,OAAIkB,IAAQ,IACVA,EAAM,GAGDA,CACT,CCyEO,SAAS4J,GAAW9K,EAAM+K,EAAgBC,EAAe,CAC9D,IAAIC,EAEJ,OAAIC,GAAgBH,CAAc,EAChCE,EAAgBF,EAEhBC,EAAgBD,EAGX,IAAI,KAAK,eAAeC,GAAA,YAAAA,EAAe,OAAQC,CAAa,EAAE,OACnEpL,GAAOG,CAAI,CACZ,CACH,CAEA,SAASkL,GAAgBlqC,EAAM,CAC7B,OAAOA,IAAS,QAAa,EAAE,WAAYA,EAC7C,CCpGO,SAASmqC,GAAQnL,EAAMoL,EAAe,CAC3C,MAAMjL,EAAQN,GAAOG,CAAI,EACnBqL,EAAiBxL,GAAOuL,CAAa,EAC3C,OAAOjL,EAAM,UAAYkL,EAAe,QAAS,CACnD,CCJO,SAASC,GAAStL,EAAMoL,EAAe,CAC5C,MAAMjL,EAAQN,GAAOG,CAAI,EACnBqL,EAAiBxL,GAAOuL,CAAa,EAC3C,MAAO,CAACjL,EAAQ,CAACkL,CACnB,CCDO,SAASzM,GAAQ2M,EAAUC,EAAW,CAC3C,MAAMC,EAAY5L,GAAO0L,CAAQ,EAC3BG,EAAa7L,GAAO2L,CAAS,EACnC,MAAO,CAACC,GAAc,CAACC,CACzB,CCCO,SAASC,GAAUC,EAAU7rE,EAAa,CAC/C,MAAMigE,EACJjgE,aAAuB,KACnBggE,GAAchgE,EAAa,CAAC,EAC5B,IAAIA,EAAY,CAAC,EACvB,OAAAigE,EAAK,YACH4L,EAAS,YAAa,EACtBA,EAAS,SAAU,EACnBA,EAAS,QAAS,CACnB,EACD5L,EAAK,SACH4L,EAAS,SAAU,EACnBA,EAAS,WAAY,EACrBA,EAAS,WAAY,EACrBA,EAAS,gBAAiB,CAC3B,EACM5L,CACT,CC5CA,MAAM6L,GAAyB,GAExB,MAAMC,EAAO,CAAb,cACLjoD,EAAA,mBAAc,GAEd,SAASkoD,EAAUlI,EAAU,CAC3B,MAAO,EACX,CACA,CAEO,MAAMmI,WAAoBF,EAAO,CACtC,YACE7yE,EAEAgzE,EAEAC,EAEAC,EACAC,EACA,CACA,MAAO,EACP,KAAK,MAAQnzE,EACb,KAAK,cAAgBgzE,EACrB,KAAK,SAAWC,EAChB,KAAK,SAAWC,EACZC,IACF,KAAK,YAAcA,EAEzB,CAEE,SAASpM,EAAMzyD,EAAS,CACtB,OAAO,KAAK,cAAcyyD,EAAM,KAAK,MAAOzyD,CAAO,CACvD,CAEE,IAAIyyD,EAAMqM,EAAO9+D,EAAS,CACxB,OAAO,KAAK,SAASyyD,EAAMqM,EAAO,KAAK,MAAO9+D,CAAO,CACzD,CACA,CAEO,MAAM++D,WAAmCR,EAAO,CAAhD,kCACLjoD,EAAA,gBAAWgoD,IACXhoD,EAAA,mBAAc,IACd,IAAIm8C,EAAMqM,EAAO,CACf,OAAIA,EAAM,eAAuBrM,EAC1BD,GAAcC,EAAM2L,GAAU3L,EAAM,IAAI,CAAC,CACpD,CACA,CChDO,MAAMuM,EAAO,CAClB,IAAIC,EAAY5+D,EAAOQ,EAAOb,EAAS,CACrC,MAAM/O,EAAS,KAAK,MAAMguE,EAAY5+D,EAAOQ,EAAOb,CAAO,EAC3D,OAAK/O,EAIE,CACL,OAAQ,IAAIwtE,GACVxtE,EAAO,MACP,KAAK,SACL,KAAK,IACL,KAAK,SACL,KAAK,WACN,EACD,KAAMA,EAAO,IACd,EAZQ,IAab,CAEE,SAASutE,EAAU/1C,EAAQ6tC,EAAU,CACnC,MAAO,EACX,CACA,CCtBO,MAAM4I,WAAkBF,EAAO,CAA/B,kCACL1oD,EAAA,gBAAW,KAkCXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,GAAG,GAhCxC,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CAEX,IAAK,IACL,IAAK,KACL,IAAK,MACH,OACEQ,EAAM,IAAIo+D,EAAY,CAAE,MAAO,aAAa,CAAE,GAC9Cp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAU,GAI7C,IAAK,QACH,OAAOp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAQ,CAAE,EAElD,IAAK,OACL,QACE,OACEp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,MAAM,CAAE,GACvCp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,aAAa,CAAE,GAC9Cp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAU,EAEnD,CACA,CAEE,IAAIxM,EAAMqM,EAAOpzE,EAAO,CACtB,OAAAozE,EAAM,IAAMpzE,EACZ+mE,EAAK,YAAY/mE,EAAO,EAAG,CAAC,EAC5B+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAGA,CCtCO,MAAM0M,GAAkB,CAC7B,MAAO,iBACP,KAAM,qBACN,UAAW,kCACX,KAAM,qBACN,QAAS,qBACT,QAAS,qBACT,QAAS,iBACT,QAAS,iBACT,OAAQ,YACR,OAAQ,YAER,YAAa,MACb,UAAW,WACX,YAAa,WACb,WAAY,WAEZ,gBAAiB,SACjB,kBAAmB,QACnB,gBAAiB,aACjB,kBAAmB,aACnB,iBAAkB,YACpB,EAEaC,GAAmB,CAC9B,qBAAsB,2BACtB,MAAO,0BACP,qBAAsB,oCACtB,SAAU,2BACV,wBAAyB,qCAC3B,ECvBO,SAASC,GAASC,EAAeC,EAAO,CAC7C,OAAKD,GAIE,CACL,MAAOC,EAAMD,EAAc,KAAK,EAChC,KAAMA,EAAc,IACrB,CACH,CAEO,SAASE,GAAoBt/D,EAAS++D,EAAY,CACvD,MAAM1H,EAAc0H,EAAW,MAAM/+D,CAAO,EAE5C,OAAKq3D,EAIE,CACL,MAAO,SAASA,EAAY,CAAC,EAAG,EAAE,EAClC,KAAM0H,EAAW,MAAM1H,EAAY,CAAC,EAAE,MAAM,CAC7C,EANQ,IAOX,CAEO,SAASkI,GAAqBv/D,EAAS++D,EAAY,CACxD,MAAM1H,EAAc0H,EAAW,MAAM/+D,CAAO,EAE5C,GAAI,CAACq3D,EACH,OAAO,KAIT,GAAIA,EAAY,CAAC,IAAM,IACrB,MAAO,CACL,MAAO,EACP,KAAM0H,EAAW,MAAM,CAAC,CACzB,EAGH,MAAM5F,EAAO9B,EAAY,CAAC,IAAM,IAAM,EAAI,GACpCoD,EAAQpD,EAAY,CAAC,EAAI,SAASA,EAAY,CAAC,EAAG,EAAE,EAAI,EACxD2D,EAAU3D,EAAY,CAAC,EAAI,SAASA,EAAY,CAAC,EAAG,EAAE,EAAI,EAC1DmI,EAAUnI,EAAY,CAAC,EAAI,SAASA,EAAY,CAAC,EAAG,EAAE,EAAI,EAEhE,MAAO,CACL,MACE8B,GACCsB,EAAQ1H,GACPiI,EAAUlI,GACV0M,EAAUxM,IACd,KAAM+L,EAAW,MAAM1H,EAAY,CAAC,EAAE,MAAM,CAC7C,CACH,CAEO,SAASoI,GAAqBV,EAAY,CAC/C,OAAOO,GAAoBL,GAAgB,gBAAiBF,CAAU,CACxE,CAEO,SAASW,GAAajpD,EAAGsoD,EAAY,CAC1C,OAAQtoD,EAAC,CACP,IAAK,GACH,OAAO6oD,GAAoBL,GAAgB,YAAaF,CAAU,EACpE,IAAK,GACH,OAAOO,GAAoBL,GAAgB,UAAWF,CAAU,EAClE,IAAK,GACH,OAAOO,GAAoBL,GAAgB,YAAaF,CAAU,EACpE,IAAK,GACH,OAAOO,GAAoBL,GAAgB,WAAYF,CAAU,EACnE,QACE,OAAOO,GAAoB,IAAI,OAAO,UAAY7oD,EAAI,GAAG,EAAGsoD,CAAU,CAC5E,CACA,CAEO,SAASY,GAAmBlpD,EAAGsoD,EAAY,CAChD,OAAQtoD,EAAC,CACP,IAAK,GACH,OAAO6oD,GAAoBL,GAAgB,kBAAmBF,CAAU,EAC1E,IAAK,GACH,OAAOO,GAAoBL,GAAgB,gBAAiBF,CAAU,EACxE,IAAK,GACH,OAAOO,GAAoBL,GAAgB,kBAAmBF,CAAU,EAC1E,IAAK,GACH,OAAOO,GAAoBL,GAAgB,iBAAkBF,CAAU,EACzE,QACE,OAAOO,GAAoB,IAAI,OAAO,YAAc7oD,EAAI,GAAG,EAAGsoD,CAAU,CAC9E,CACA,CAEO,SAASa,GAAqBC,EAAW,CAC9C,OAAQA,EAAS,CACf,IAAK,UACH,MAAO,GACT,IAAK,UACH,MAAO,IACT,IAAK,KACL,IAAK,OACL,IAAK,YACH,MAAO,IACT,IAAK,KACL,IAAK,WACL,IAAK,QACL,QACE,MAAO,EACb,CACA,CAEO,SAASC,GAAsB7F,EAAc8F,EAAa,CAC/D,MAAMC,EAAcD,EAAc,EAK5BE,EAAiBD,EAAcD,EAAc,EAAIA,EAEvD,IAAIhvE,EACJ,GAAIkvE,GAAkB,GACpBlvE,EAASkpE,GAAgB,QACpB,CACL,MAAMiG,EAAWD,EAAiB,GAC5BE,EAAkB,KAAK,MAAMD,EAAW,GAAG,EAAI,IAC/CE,EAAoBnG,GAAgBiG,EAAW,IACrDnvE,EAASkpE,EAAekG,GAAmBC,EAAoB,IAAM,EACzE,CAEE,OAAOJ,EAAcjvE,EAAS,EAAIA,CACpC,CAEO,SAASsvE,GAAgBzM,EAAM,CACpC,OAAOA,EAAO,MAAQ,GAAMA,EAAO,IAAM,GAAKA,EAAO,MAAQ,CAC/D,CC7HO,MAAM0M,WAAmBxB,EAAO,CAAhC,kCACL1oD,EAAA,gBAAW,KACXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,GAEtE,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,MAAM4/D,EAAiB3M,IAAU,CAC/B,KAAAA,EACA,eAAgBzzD,IAAU,IAChC,GAEI,OAAQA,EAAK,CACX,IAAK,IACH,OAAOg/D,GAASO,GAAa,EAAGX,CAAU,EAAGwB,CAAa,EAC5D,IAAK,KACH,OAAOpB,GACLx+D,EAAM,cAAco+D,EAAY,CAC9B,KAAM,MAClB,CAAW,EACDwB,CACD,EACH,QACE,OAAOpB,GAASO,GAAav/D,EAAM,OAAQ4+D,CAAU,EAAGwB,CAAa,CAC7E,CACA,CAEE,SAAS7N,EAAOlnE,EAAO,CACrB,OAAOA,EAAM,gBAAkBA,EAAM,KAAO,CAChD,CAEE,IAAI+mE,EAAMqM,EAAOpzE,EAAO,CACtB,MAAMu0E,EAAcxN,EAAK,YAAa,EAEtC,GAAI/mE,EAAM,eAAgB,CACxB,MAAMg1E,EAAyBV,GAC7Bt0E,EAAM,KACNu0E,CACD,EACD,OAAAxN,EAAK,YAAYiO,EAAwB,EAAG,CAAC,EAC7CjO,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACb,CAEI,MAAMqB,EACJ,EAAE,QAASgL,IAAUA,EAAM,MAAQ,EAAIpzE,EAAM,KAAO,EAAIA,EAAM,KAChE,OAAA+mE,EAAK,YAAYqB,EAAM,EAAG,CAAC,EAC3BrB,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CACA,CCrDO,MAAMkO,WAA4B3B,EAAO,CAAzC,kCACL1oD,EAAA,gBAAW,KAmDXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GA/DD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,MAAM4/D,EAAiB3M,IAAU,CAC/B,KAAAA,EACA,eAAgBzzD,IAAU,IAChC,GAEI,OAAQA,EAAK,CACX,IAAK,IACH,OAAOg/D,GAASO,GAAa,EAAGX,CAAU,EAAGwB,CAAa,EAC5D,IAAK,KACH,OAAOpB,GACLx+D,EAAM,cAAco+D,EAAY,CAC9B,KAAM,MAClB,CAAW,EACDwB,CACD,EACH,QACE,OAAOpB,GAASO,GAAav/D,EAAM,OAAQ4+D,CAAU,EAAGwB,CAAa,CAC7E,CACA,CAEE,SAAS7N,EAAOlnE,EAAO,CACrB,OAAOA,EAAM,gBAAkBA,EAAM,KAAO,CAChD,CAEE,IAAI+mE,EAAMqM,EAAOpzE,EAAOsU,EAAS,CAC/B,MAAMigE,EAAcrH,GAAYnG,EAAMzyD,CAAO,EAE7C,GAAItU,EAAM,eAAgB,CACxB,MAAMg1E,EAAyBV,GAC7Bt0E,EAAM,KACNu0E,CACD,EACD,OAAAxN,EAAK,YACHiO,EACA,EACA1gE,EAAQ,qBACT,EACDyyD,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBc,GAAYd,EAAMzyD,CAAO,CACtC,CAEI,MAAM8zD,EACJ,EAAE,QAASgL,IAAUA,EAAM,MAAQ,EAAIpzE,EAAM,KAAO,EAAIA,EAAM,KAChE,OAAA+mE,EAAK,YAAYqB,EAAM,EAAG9zD,EAAQ,qBAAqB,EACvDyyD,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBc,GAAYd,EAAMzyD,CAAO,CACpC,CAiBA,CCnEO,MAAM4gE,WAA0B5B,EAAO,CAAvC,kCACL1oD,EAAA,gBAAW,KAiBXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GA/BD,MAAM2oD,EAAY5+D,EAAO,CACvB,OACSw/D,GADLx/D,IAAU,IACc,EAGFA,EAAM,OAHD4+D,CAAU,CAI7C,CAEE,IAAIxM,EAAMoO,EAAQn1E,EAAO,CACvB,MAAMo1E,EAAkBtO,GAAcC,EAAM,CAAC,EAC7C,OAAAqO,EAAgB,YAAYp1E,EAAO,EAAG,CAAC,EACvCo1E,EAAgB,SAAS,EAAG,EAAG,EAAG,CAAC,EAC5BlN,GAAekN,CAAe,CACzC,CAmBA,CCtCO,MAAMC,WAA2B/B,EAAO,CAAxC,kCACL1oD,EAAA,gBAAW,KAgBXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,GAd3E,MAAM2oD,EAAY5+D,EAAO,CACvB,OACSw/D,GADLx/D,IAAU,IACc,EAGFA,EAAM,OAHD4+D,CAAU,CAI7C,CAEE,IAAIxM,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,YAAY/mE,EAAO,EAAG,CAAC,EAC5B+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAGA,CClBO,MAAMuO,WAAsBhC,EAAO,CAAnC,kCACL1oD,EAAA,gBAAW,KA4DXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GAzED,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CAEX,IAAK,IACL,IAAK,KACH,OAAOu/D,GAAav/D,EAAM,OAAQ4+D,CAAU,EAE9C,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,SAAS,CAAE,EAE5D,IAAK,MACH,OACEp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,SACP,QAAS,YACV,GAIL,IAAK,QACH,OAAOp+D,EAAM,QAAQo+D,EAAY,CAC/B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OACEp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,OACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,SACP,QAAS,YACV,EAEX,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,CAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,UAAU/mE,EAAQ,GAAK,EAAG,CAAC,EAChC+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAkBA,CC7EO,MAAMwO,WAAgCjC,EAAO,CAA7C,kCACL1oD,EAAA,gBAAW,KA4DXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GAzED,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CAEX,IAAK,IACL,IAAK,KACH,OAAOu/D,GAAav/D,EAAM,OAAQ4+D,CAAU,EAE9C,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,SAAS,CAAE,EAE5D,IAAK,MACH,OACEp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,SACP,QAAS,YACV,GAIL,IAAK,QACH,OAAOp+D,EAAM,QAAQo+D,EAAY,CAC/B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OACEp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,OACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,QAAQo+D,EAAY,CACxB,MAAO,SACP,QAAS,YACV,EAEX,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,CAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,UAAU/mE,EAAQ,GAAK,EAAG,CAAC,EAChC+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAkBA,CC5EO,MAAMyO,WAAoBlC,EAAO,CAAjC,kCACL1oD,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GAEDA,EAAA,gBAAW,KAEX,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,MAAM4/D,EAAiB/0E,GAAUA,EAAQ,EAEzC,OAAQ2U,EAAK,CAEX,IAAK,IACH,OAAOg/D,GACLG,GAAoBL,GAAgB,MAAOF,CAAU,EACrDwB,CACD,EAEH,IAAK,KACH,OAAOpB,GAASO,GAAa,EAAGX,CAAU,EAAGwB,CAAa,EAE5D,IAAK,KACH,OAAOpB,GACLx+D,EAAM,cAAco+D,EAAY,CAC9B,KAAM,OAClB,CAAW,EACDwB,CACD,EAEH,IAAK,MACH,OACE5/D,EAAM,MAAMo+D,EAAY,CACtB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,MAAMo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,GAItE,IAAK,QACH,OAAOp+D,EAAM,MAAMo+D,EAAY,CAC7B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OACEp+D,EAAM,MAAMo+D,EAAY,CAAE,MAAO,OAAQ,QAAS,aAAc,GAChEp+D,EAAM,MAAMo+D,EAAY,CACtB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,MAAMo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,EAE5E,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,SAAS/mE,EAAO,CAAC,EACtB+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CACA,CC/EO,MAAM0O,WAA8BnC,EAAO,CAA3C,kCACL1oD,EAAA,gBAAW,KA+DXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GA3ED,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,MAAM4/D,EAAiB/0E,GAAUA,EAAQ,EAEzC,OAAQ2U,EAAK,CAEX,IAAK,IACH,OAAOg/D,GACLG,GAAoBL,GAAgB,MAAOF,CAAU,EACrDwB,CACD,EAEH,IAAK,KACH,OAAOpB,GAASO,GAAa,EAAGX,CAAU,EAAGwB,CAAa,EAE5D,IAAK,KACH,OAAOpB,GACLx+D,EAAM,cAAco+D,EAAY,CAC9B,KAAM,OAClB,CAAW,EACDwB,CACD,EAEH,IAAK,MACH,OACE5/D,EAAM,MAAMo+D,EAAY,CACtB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,MAAMo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,GAItE,IAAK,QACH,OAAOp+D,EAAM,MAAMo+D,EAAY,CAC7B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,OACL,QACE,OACEp+D,EAAM,MAAMo+D,EAAY,CAAE,MAAO,OAAQ,QAAS,aAAc,GAChEp+D,EAAM,MAAMo+D,EAAY,CACtB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,MAAMo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,EAE5E,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,SAAS/mE,EAAO,CAAC,EACtB+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAiBA,CCvCO,SAAS2O,GAAQ3O,EAAM4H,EAAMr6D,EAAS,CAC3C,MAAM4yD,EAAQN,GAAOG,CAAI,EACnBvxD,EAAOg4D,GAAQtG,EAAO5yD,CAAO,EAAIq6D,EACvC,OAAAzH,EAAM,QAAQA,EAAM,QAAO,EAAK1xD,EAAO,CAAC,EACjC0xD,CACT,CC1CO,MAAMyO,WAAwBrC,EAAO,CAArC,kCACL1oD,EAAA,gBAAW,KAqBXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GAjCD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,KAAMF,CAAU,EAC7D,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,MAAM,CAAE,EACzD,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAOsU,EAAS,CAChC,OAAOuzD,GAAY6N,GAAQ3O,EAAM/mE,EAAOsU,CAAO,EAAGA,CAAO,CAC7D,CAiBA,CCnBO,SAASshE,GAAW7O,EAAM4H,EAAM,CACrC,MAAMzH,EAAQN,GAAOG,CAAI,EACnBvxD,EAAOy3D,GAAW/F,CAAK,EAAIyH,EACjC,OAAAzH,EAAM,QAAQA,EAAM,QAAO,EAAK1xD,EAAO,CAAC,EACjC0xD,CACT,CCvBO,MAAM2O,WAAsBvC,EAAO,CAAnC,kCACL1oD,EAAA,gBAAW,KAqBXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GAlCD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,KAAMF,CAAU,EAC7D,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,MAAM,CAAE,EACzD,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAOkoE,GAAe0N,GAAW7O,EAAM/mE,CAAK,CAAC,CACjD,CAkBA,CCrCA,MAAM81E,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAC/DC,GAA0B,CAC9B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAC9C,EAGO,MAAMC,WAAmB1C,EAAO,CAAhC,kCACL1oD,EAAA,gBAAW,IACXA,EAAA,mBAAc,GA8BdA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GAzCD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,KAAMF,CAAU,EAC7D,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,MAAM,CAAE,EACzD,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASxM,EAAM/mE,EAAO,CACpB,MAAMooE,EAAOrB,EAAK,YAAa,EACzBkP,EAAapB,GAAgBzM,CAAI,EACjC2F,EAAQhH,EAAK,SAAU,EAC7B,OAAIkP,EACKj2E,GAAS,GAAKA,GAAS+1E,GAAwBhI,CAAK,EAEpD/tE,GAAS,GAAKA,GAAS81E,GAAc/H,CAAK,CAEvD,CAEE,IAAIhH,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,QAAQ/mE,CAAK,EAClB+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAgBA,CCpDO,MAAMmP,WAAwB5C,EAAO,CAArC,kCACL1oD,EAAA,gBAAW,IAEXA,EAAA,mBAAc,GA8BdA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GA5CD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACL,IAAK,KACH,OAAOm/D,GAAoBL,GAAgB,UAAWF,CAAU,EAClE,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,MAAM,CAAE,EACzD,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASxM,EAAM/mE,EAAO,CACpB,MAAMooE,EAAOrB,EAAK,YAAa,EAE/B,OADmB8N,GAAgBzM,CAAI,EAE9BpoE,GAAS,GAAKA,GAAS,IAEvBA,GAAS,GAAKA,GAAS,GAEpC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,SAAS,EAAG/mE,CAAK,EACtB+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAmBA,CCxBO,SAASoP,GAAOpP,EAAMkB,EAAK3zD,EAAS,aACzC,MAAMqzD,EAAiBC,GAAmB,EACpCE,GACJxzD,GAAA,YAAAA,EAAS,iBACTqW,GAAA/lB,EAAA0P,GAAA,YAAAA,EAAS,SAAT,YAAA1P,EAAiB,UAAjB,YAAA+lB,EAA0B,eAC1Bg9C,EAAe,gBACfI,GAAAC,EAAAL,EAAe,SAAf,YAAAK,EAAuB,UAAvB,YAAAD,EAAgC,eAChC,EAEIb,EAAQN,GAAOG,CAAI,EACnBqP,EAAalP,EAAM,OAAQ,EAG3BmP,GADYpO,EAAM,EACM,GAAK,EAE7Bh4D,EAAQ,EAAI63D,EACZtyD,EACJyyD,EAAM,GAAKA,EAAM,EACbA,GAAQmO,EAAanmE,GAAS,GAC5BomE,EAAWpmE,GAAS,GAAOmmE,EAAanmE,GAAS,EACzD,OAAO+2D,GAAQE,EAAO1xD,CAAI,CAC5B,CCnDO,MAAM8gE,WAAkBhD,EAAO,CAA/B,kCACL1oD,EAAA,gBAAW,IAuDXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,GArDlD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CAEX,IAAK,IACL,IAAK,KACL,IAAK,MACH,OACEQ,EAAM,IAAIo+D,EAAY,CACpB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,GAIpE,IAAK,QACH,OAAOp+D,EAAM,IAAIo+D,EAAY,CAC3B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,SACH,OACEp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,GAIpE,IAAK,OACL,QACE,OACEp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,OAAQ,QAAS,aAAc,GAC9Dp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,EAE1E,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,CAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAOsU,EAAS,CAChC,OAAAyyD,EAAOoP,GAAOpP,EAAM/mE,EAAOsU,CAAO,EAClCyyD,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAGA,CCxDO,MAAMwP,WAAuBjD,EAAO,CAApC,kCACL1oD,EAAA,gBAAW,IAsEXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GArFD,MAAM2oD,EAAY5+D,EAAOQ,EAAOb,EAAS,CACvC,MAAMygE,EAAiB/0E,GAAU,CAE/B,MAAMw2E,EAAgB,KAAK,OAAOx2E,EAAQ,GAAK,CAAC,EAAI,EACpD,OAASA,EAAQsU,EAAQ,aAAe,GAAK,EAAKkiE,CACnD,EAED,OAAQ7hE,EAAK,CAEX,IAAK,IACL,IAAK,KACH,OAAOg/D,GAASO,GAAav/D,EAAM,OAAQ4+D,CAAU,EAAGwB,CAAa,EAEvE,IAAK,KACH,OAAOpB,GACLx+D,EAAM,cAAco+D,EAAY,CAC9B,KAAM,KAClB,CAAW,EACDwB,CACD,EAEH,IAAK,MACH,OACE5/D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,GAIpE,IAAK,QACH,OAAOp+D,EAAM,IAAIo+D,EAAY,CAC3B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,SACH,OACEp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,GAIpE,IAAK,OACL,QACE,OACEp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,OAAQ,QAAS,aAAc,GAC9Dp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,EAE1E,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,CAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAOsU,EAAS,CAChC,OAAAyyD,EAAOoP,GAAOpP,EAAM/mE,EAAOsU,CAAO,EAClCyyD,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAmBA,CCxFO,MAAM0P,WAAiCnD,EAAO,CAA9C,kCACL1oD,EAAA,gBAAW,IAuEXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GArFD,MAAM2oD,EAAY5+D,EAAOQ,EAAOb,EAAS,CACvC,MAAMygE,EAAiB/0E,GAAU,CAE/B,MAAMw2E,EAAgB,KAAK,OAAOx2E,EAAQ,GAAK,CAAC,EAAI,EACpD,OAASA,EAAQsU,EAAQ,aAAe,GAAK,EAAKkiE,CACnD,EAED,OAAQ7hE,EAAK,CAEX,IAAK,IACL,IAAK,KACH,OAAOg/D,GAASO,GAAav/D,EAAM,OAAQ4+D,CAAU,EAAGwB,CAAa,EAEvE,IAAK,KACH,OAAOpB,GACLx+D,EAAM,cAAco+D,EAAY,CAC9B,KAAM,KAClB,CAAW,EACDwB,CACD,EAEH,IAAK,MACH,OACE5/D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,GAIpE,IAAK,QACH,OAAOp+D,EAAM,IAAIo+D,EAAY,CAC3B,MAAO,SACP,QAAS,YACnB,CAAS,EAEH,IAAK,SACH,OACEp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,GAIpE,IAAK,OACL,QACE,OACEp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,OAAQ,QAAS,aAAc,GAC9Dp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,QAAS,QAAS,aAAc,GAC/Dp+D,EAAM,IAAIo+D,EAAY,CAAE,MAAO,SAAU,QAAS,YAAc,EAE1E,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,CAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAOsU,EAAS,CAChC,OAAAyyD,EAAOoP,GAAOpP,EAAM/mE,EAAOsU,CAAO,EAClCyyD,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAmBA,CCpEO,SAAS2P,GAAU3P,EAAMkB,EAAK,CACnC,MAAMf,EAAQN,GAAOG,CAAI,EACnBqP,EAAaxE,GAAU1K,CAAK,EAC5B1xD,EAAOyyD,EAAMmO,EACnB,OAAOpP,GAAQE,EAAO1xD,CAAI,CAC5B,CC1BO,MAAMmhE,WAAqBrD,EAAO,CAAlC,kCACL1oD,EAAA,gBAAW,IA4FXA,EAAA,0BAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACD,GA1GD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,MAAM4/D,EAAiB/0E,GACjBA,IAAU,EACL,EAEFA,EAGT,OAAQ2U,EAAK,CAEX,IAAK,IACL,IAAK,KACH,OAAOu/D,GAAav/D,EAAM,OAAQ4+D,CAAU,EAE9C,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,KAAK,CAAE,EAExD,IAAK,MACH,OAAOI,GACLx+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,cACP,QAAS,YACrB,CAAW,GACCp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,QACP,QAAS,YACvB,CAAa,GACDp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,SACP,QAAS,YACvB,CAAa,EACHwB,CACD,EAEH,IAAK,QACH,OAAOpB,GACLx+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,SACP,QAAS,YACrB,CAAW,EACDwB,CACD,EAEH,IAAK,SACH,OAAOpB,GACLx+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,QACP,QAAS,YACrB,CAAW,GACCp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,SACP,QAAS,YACvB,CAAa,EACHwB,CACD,EAEH,IAAK,OACL,QACE,OAAOpB,GACLx+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,OACP,QAAS,YACrB,CAAW,GACCp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,cACP,QAAS,YACvB,CAAa,GACDp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,QACP,QAAS,YACvB,CAAa,GACDp+D,EAAM,IAAIo+D,EAAY,CACpB,MAAO,SACP,QAAS,YACvB,CAAa,EACHwB,CACD,CACT,CACA,CAEE,SAAS7N,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,CAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAO2P,GAAU3P,EAAM/mE,CAAK,EAC5B+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EACjBA,CACX,CAmBA,CChHO,MAAM6P,WAAmBtD,EAAO,CAAhC,kCACL1oD,EAAA,gBAAW,IA+CXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,GA7ClD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACL,IAAK,KACL,IAAK,MACH,OACEQ,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,SACP,QAAS,YACV,GAGL,IAAK,QACH,OAAOp+D,EAAM,UAAUo+D,EAAY,CACjC,MAAO,SACP,QAAS,YACnB,CAAS,EACH,IAAK,OACL,QACE,OACEp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,OACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,SACP,QAAS,YACV,EAEX,CACA,CAEE,IAAIxM,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,SAASqN,GAAqBp0E,CAAK,EAAG,EAAG,EAAG,CAAC,EAC3C+mE,CACX,CAGA,CCjDO,MAAM8P,WAA2BvD,EAAO,CAAxC,kCACL1oD,EAAA,gBAAW,IA+CXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,GA7ClD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACL,IAAK,KACL,IAAK,MACH,OACEQ,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,SACP,QAAS,YACV,GAGL,IAAK,QACH,OAAOp+D,EAAM,UAAUo+D,EAAY,CACjC,MAAO,SACP,QAAS,YACnB,CAAS,EACH,IAAK,OACL,QACE,OACEp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,OACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,SACP,QAAS,YACV,EAEX,CACA,CAEE,IAAIxM,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,SAASqN,GAAqBp0E,CAAK,EAAG,EAAG,EAAG,CAAC,EAC3C+mE,CACX,CAGA,CChDO,MAAM+P,WAAwBxD,EAAO,CAArC,kCACL1oD,EAAA,gBAAW,IA+CXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,GAAG,GA7CxC,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACL,IAAK,KACL,IAAK,MACH,OACEQ,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,SACP,QAAS,YACV,GAGL,IAAK,QACH,OAAOp+D,EAAM,UAAUo+D,EAAY,CACjC,MAAO,SACP,QAAS,YACnB,CAAS,EACH,IAAK,OACL,QACE,OACEp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,OACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,cACP,QAAS,YACrB,CAAW,GACDp+D,EAAM,UAAUo+D,EAAY,CAC1B,MAAO,SACP,QAAS,YACV,EAEX,CACA,CAEE,IAAIxM,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,SAASqN,GAAqBp0E,CAAK,EAAG,EAAG,EAAG,CAAC,EAC3C+mE,CACX,CAGA,CCjDO,MAAMgQ,WAAwBzD,EAAO,CAArC,kCACL1oD,EAAA,gBAAW,IA6BXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,GA3B7C,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,QAASF,CAAU,EAChE,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,MAAM,CAAE,EACzD,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,MAAMg3E,EAAOjQ,EAAK,SAAQ,GAAM,GAChC,OAAIiQ,GAAQh3E,EAAQ,GAClB+mE,EAAK,SAAS/mE,EAAQ,GAAI,EAAG,EAAG,CAAC,EACxB,CAACg3E,GAAQh3E,IAAU,GAC5B+mE,EAAK,SAAS,EAAG,EAAG,EAAG,CAAC,EAExBA,EAAK,SAAS/mE,EAAO,EAAG,EAAG,CAAC,EAEvB+mE,CACX,CAGA,CC/BO,MAAMkQ,WAAwB3D,EAAO,CAArC,kCACL1oD,EAAA,gBAAW,IAsBXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,GApBvD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,QAASF,CAAU,EAChE,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,MAAM,CAAE,EACzD,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,SAAS/mE,EAAO,EAAG,EAAG,CAAC,EACrB+mE,CACX,CAGA,CCxBO,MAAMmQ,WAAwB5D,EAAO,CAArC,kCACL1oD,EAAA,gBAAW,IA2BXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,GAzB7C,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,QAASF,CAAU,EAChE,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,MAAM,CAAE,EACzD,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CAEvB,OADa+mE,EAAK,SAAQ,GAAM,IACpB/mE,EAAQ,GAClB+mE,EAAK,SAAS/mE,EAAQ,GAAI,EAAG,EAAG,CAAC,EAEjC+mE,EAAK,SAAS/mE,EAAO,EAAG,EAAG,CAAC,EAEvB+mE,CACX,CAGA,CC7BO,MAAMoQ,WAAwB7D,EAAO,CAArC,kCACL1oD,EAAA,gBAAW,IAuBXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,GArBvD,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,QAASF,CAAU,EAChE,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,MAAM,CAAE,EACzD,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,MAAMivE,EAAQjvE,GAAS,GAAKA,EAAQ,GAAKA,EACzC,OAAA+mE,EAAK,SAASkI,EAAO,EAAG,EAAG,CAAC,EACrBlI,CACX,CAGA,CCzBO,MAAMqQ,WAAqB9D,EAAO,CAAlC,kCACL1oD,EAAA,gBAAW,IAsBXA,EAAA,0BAAqB,CAAC,IAAK,GAAG,GApB9B,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,OAAQF,CAAU,EAC/D,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,QAAQ,CAAE,EAC3D,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,WAAW/mE,EAAO,EAAG,CAAC,EACpB+mE,CACX,CAGA,CCxBO,MAAMsQ,WAAqB/D,EAAO,CAAlC,kCACL1oD,EAAA,gBAAW,IAsBXA,EAAA,0BAAqB,CAAC,IAAK,GAAG,GApB9B,MAAM2oD,EAAY5+D,EAAOQ,EAAO,CAC9B,OAAQR,EAAK,CACX,IAAK,IACH,OAAOm/D,GAAoBL,GAAgB,OAAQF,CAAU,EAC/D,IAAK,KACH,OAAOp+D,EAAM,cAAco+D,EAAY,CAAE,KAAM,QAAQ,CAAE,EAC3D,QACE,OAAOW,GAAav/D,EAAM,OAAQ4+D,CAAU,CACpD,CACA,CAEE,SAASrM,EAAOlnE,EAAO,CACrB,OAAOA,GAAS,GAAKA,GAAS,EAClC,CAEE,IAAI+mE,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,WAAW/mE,EAAO,CAAC,EACjB+mE,CACX,CAGA,CCzBO,MAAMuQ,WAA+BhE,EAAO,CAA5C,kCACL1oD,EAAA,gBAAW,IAaXA,EAAA,0BAAqB,CAAC,IAAK,GAAG,GAX9B,MAAM2oD,EAAY5+D,EAAO,CACvB,MAAMogE,EAAiB/0E,GACrB,KAAK,MAAMA,EAAQ,KAAK,IAAI,GAAI,CAAC2U,EAAM,OAAS,CAAC,CAAC,EACpD,OAAOg/D,GAASO,GAAav/D,EAAM,OAAQ4+D,CAAU,EAAGwB,CAAa,CACzE,CAEE,IAAIhO,EAAMoO,EAAQn1E,EAAO,CACvB,OAAA+mE,EAAK,gBAAgB/mE,CAAK,EACnB+mE,CACX,CAGA,CCXO,MAAMwQ,WAA+BjE,EAAO,CAA5C,kCACL1oD,EAAA,gBAAW,IAmCXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,GAAG,GAjCnC,MAAM2oD,EAAY5+D,EAAO,CACvB,OAAQA,EAAK,CACX,IAAK,IACH,OAAOo/D,GACLL,GAAiB,qBACjBH,CACD,EACH,IAAK,KACH,OAAOQ,GAAqBL,GAAiB,MAAOH,CAAU,EAChE,IAAK,OACH,OAAOQ,GACLL,GAAiB,qBACjBH,CACD,EACH,IAAK,QACH,OAAOQ,GACLL,GAAiB,wBACjBH,CACD,EACH,IAAK,MACL,QACE,OAAOQ,GAAqBL,GAAiB,SAAUH,CAAU,CACzE,CACA,CAEE,IAAIxM,EAAMqM,EAAOpzE,EAAO,CACtB,OAAIozE,EAAM,eAAuBrM,EAC1BD,GACLC,EACAA,EAAK,QAAS,EAAG2B,GAAgC3B,CAAI,EAAI/mE,CAC1D,CACL,CAGA,CCrCO,MAAMw3E,WAA0BlE,EAAO,CAAvC,kCACL1oD,EAAA,gBAAW,IAmCXA,EAAA,0BAAqB,CAAC,IAAK,IAAK,GAAG,GAjCnC,MAAM2oD,EAAY5+D,EAAO,CACvB,OAAQA,EAAK,CACX,IAAK,IACH,OAAOo/D,GACLL,GAAiB,qBACjBH,CACD,EACH,IAAK,KACH,OAAOQ,GAAqBL,GAAiB,MAAOH,CAAU,EAChE,IAAK,OACH,OAAOQ,GACLL,GAAiB,qBACjBH,CACD,EACH,IAAK,QACH,OAAOQ,GACLL,GAAiB,wBACjBH,CACD,EACH,IAAK,MACL,QACE,OAAOQ,GAAqBL,GAAiB,SAAUH,CAAU,CACzE,CACA,CAEE,IAAIxM,EAAMqM,EAAOpzE,EAAO,CACtB,OAAIozE,EAAM,eAAuBrM,EAC1BD,GACLC,EACAA,EAAK,QAAS,EAAG2B,GAAgC3B,CAAI,EAAI/mE,CAC1D,CACL,CAGA,CCxCO,MAAMy3E,WAA+BnE,EAAO,CAA5C,kCACL1oD,EAAA,gBAAW,IAUXA,EAAA,0BAAqB,KARrB,MAAM2oD,EAAY,CAChB,OAAOU,GAAqBV,CAAU,CAC1C,CAEE,IAAIxM,EAAMoO,EAAQn1E,EAAO,CACvB,MAAO,CAAC8mE,GAAcC,EAAM/mE,EAAQ,GAAI,EAAG,CAAE,eAAgB,GAAM,CACvE,CAGA,CCZO,MAAM03E,WAAoCpE,EAAO,CAAjD,kCACL1oD,EAAA,gBAAW,IAUXA,EAAA,0BAAqB,KARrB,MAAM2oD,EAAY,CAChB,OAAOU,GAAqBV,CAAU,CAC1C,CAEE,IAAIxM,EAAMoO,EAAQn1E,EAAO,CACvB,MAAO,CAAC8mE,GAAcC,EAAM/mE,CAAK,EAAG,CAAE,eAAgB,GAAM,CAChE,CAGA,CC4DO,MAAM23E,GAAU,CACrB,EAAG,IAAInE,GACP,EAAG,IAAIsB,GACP,EAAG,IAAIG,GACP,EAAG,IAAIC,GACP,EAAG,IAAIG,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIE,GACP,EAAG,IAAIE,GACP,EAAG,IAAIG,GACP,EAAG,IAAIE,GACP,EAAG,IAAII,GACP,EAAG,IAAIC,GACP,EAAG,IAAIE,GACP,EAAG,IAAIE,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIE,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,GACP,EAAG,IAAIC,EACT,EC5EMnH,GACJ,wDAIIC,GAA6B,oCAE7BC,GAAsB,eACtBC,GAAoB,MAEpBkH,GAAsB,KACtBjH,GAAgC,WA2S/B,SAASz7D,GAAM2iE,EAASjH,EAAWkH,EAAexjE,EAAS,aAChE,MAAMqzD,EAAiBC,GAAmB,EACpCl9B,EAA4Bi9B,EAAe,QAAUkJ,GAErD1D,EAGJxF,EAAe,yBACfh9C,GAAA/lB,EAAA+iE,EAAe,SAAf,YAAA/iE,EAAuB,UAAvB,YAAA+lB,EAAgC,wBAChC,EAEIm9C,EAGJH,EAAe,gBACfI,GAAAC,EAAAL,EAAe,SAAf,YAAAK,EAAuB,UAAvB,YAAAD,EAAgC,eAChC,EAEF,GAAI6I,IAAc,GAChB,OAAIiH,IAAY,GACPjR,GAAOkR,CAAa,EAEpBhR,GAAcgR,EAAe,GAAG,EAI3C,MAAMC,EAAe,CACnB,sBAAA5K,EACA,aAAArF,EACA,OAAAp9B,CACD,EAGKstC,EAAU,CAAC,IAAI3E,EAA4B,EAE3Ch9D,EAASu6D,EACZ,MAAMJ,EAA0B,EAChC,IAAKU,GAAc,CAClB,MAAMC,EAAiBD,EAAU,CAAC,EAClC,GAAIC,KAAkBpB,GAAgB,CACpC,MAAMqB,EAAgBrB,GAAeoB,CAAc,EACnD,OAAOC,EAAcF,EAAWxmC,EAAO,UAAU,CACzD,CACM,OAAOwmC,CACR,GACA,KAAK,EAAE,EACP,MAAMX,EAAsB,EAEzB0H,EAAa,CAAE,EAErB,QAAStjE,KAAS0B,EAAQ,CAGtB+5D,GAAyBz7D,CAAK,GAE9B07D,GAA0B17D,EAAOi8D,EAAWiH,CAAO,EAInD1H,GAA0Bx7D,CAAK,GAE/B07D,GAA0B17D,EAAOi8D,EAAWiH,CAAO,EAGrD,MAAM1G,EAAiBx8D,EAAM,CAAC,EACxBkC,EAAS8gE,GAAQxG,CAAc,EACrC,GAAIt6D,EAAQ,CACV,KAAM,CAAE,mBAAAqhE,CAAkB,EAAKrhE,EAC/B,GAAI,MAAM,QAAQqhE,CAAkB,EAAG,CACrC,MAAMC,EAAoBF,EAAW,KAClCG,GACCF,EAAmB,SAASE,EAAU,KAAK,GAC3CA,EAAU,QAAUjH,CACvB,EACD,GAAIgH,EACF,MAAM,IAAI,WACR,uCAAuCA,EAAkB,SAAS,YAAYxjE,CAAK,qBACpF,CAEX,SAAiBkC,EAAO,qBAAuB,KAAOohE,EAAW,OAAS,EAClE,MAAM,IAAI,WACR,uCAAuCtjE,CAAK,yCAC7C,EAGHsjE,EAAW,KAAK,CAAE,MAAO9G,EAAgB,UAAWx8D,EAAO,EAE3D,MAAMu3D,EAAcr1D,EAAO,IACzBghE,EACAljE,EACA+1B,EAAO,MACPqtC,CACD,EAED,GAAI,CAAC7L,EACH,OAAOpF,GAAcgR,EAAe,GAAG,EAGzCE,EAAQ,KAAK9L,EAAY,MAAM,EAE/B2L,EAAU3L,EAAY,IAC5B,KAAW,CACL,GAAIiF,EAAe,MAAMR,EAA6B,EACpD,MAAM,IAAI,WACR,iEACEQ,EACA,GACH,EAWH,GAPIx8D,IAAU,KACZA,EAAQ,IACCw8D,IAAmB,MAC5Bx8D,EAAQ08D,GAAmB18D,CAAK,GAI9BkjE,EAAQ,QAAQljE,CAAK,IAAM,EAC7BkjE,EAAUA,EAAQ,MAAMljE,EAAM,MAAM,MAEpC,QAAOmyD,GAAcgR,EAAe,GAAG,CAE/C,CACA,CAGE,GAAID,EAAQ,OAAS,GAAKD,GAAoB,KAAKC,CAAO,EACxD,OAAO/Q,GAAcgR,EAAe,GAAG,EAGzC,MAAMO,EAAwBL,EAC3B,IAAKM,GAAWA,EAAO,QAAQ,EAC/B,KAAK,CAACvqE,EAAG,IAAM,EAAIA,CAAC,EACpB,OAAO,CAACmlE,EAAUhqE,EAAOqB,IAAUA,EAAM,QAAQ2oE,CAAQ,IAAMhqE,CAAK,EACpE,IAAKgqE,GACJ8E,EACG,OAAQM,GAAWA,EAAO,WAAapF,CAAQ,EAC/C,KAAK,CAACnlE,EAAGC,IAAMA,EAAE,YAAcD,EAAE,WAAW,CACrD,EACK,IAAKwqE,GAAgBA,EAAY,CAAC,CAAC,EAEtC,IAAIxR,EAAOH,GAAOkR,CAAa,EAE/B,GAAI,MAAM/Q,EAAK,QAAO,CAAE,EACtB,OAAOD,GAAcgR,EAAe,GAAG,EAGzC,MAAM1E,EAAQ,CAAE,EAChB,UAAWkF,KAAUD,EAAuB,CAC1C,GAAI,CAACC,EAAO,SAASvR,EAAMgR,CAAY,EACrC,OAAOjR,GAAcgR,EAAe,GAAG,EAGzC,MAAMvyE,EAAS+yE,EAAO,IAAIvR,EAAMqM,EAAO2E,CAAY,EAE/C,MAAM,QAAQxyE,CAAM,GACtBwhE,EAAOxhE,EAAO,CAAC,EACf,OAAO,OAAO6tE,EAAO7tE,EAAO,CAAC,CAAC,GAG9BwhE,EAAOxhE,CAEb,CAEE,OAAOuhE,GAAcgR,EAAe/Q,CAAI,CAC1C,CAEA,SAASsK,GAAmBnsE,EAAO,CACjC,OAAOA,EAAM,MAAMurE,EAAmB,EAAE,CAAC,EAAE,QAAQC,GAAmB,GAAG,CAC3E,CCxeO,SAAS8H,GAAehJ,EAAS,CACtC,MAAMP,EAAQO,EAAU/H,GACxB,OAAO,KAAK,MAAMwH,CAAK,CACzB,CCWO,SAASwJ,GAAS7yE,EAAU0O,EAAS,CAE1C,MAAMokE,EAAcC,GAAgB/yE,CAAQ,EAE5C,IAAImhE,EACJ,GAAI2R,EAAY,KAAM,CACpB,MAAME,EAAkBC,GAAUH,EAAY,KAAM,CAAgB,EACpE3R,EAAO+R,GAAUF,EAAgB,eAAgBA,EAAgB,IAAI,CACzE,CAEE,GAAI,CAAC7R,GAAQ,MAAMA,EAAK,QAAS,GAC/B,OAAO,IAAI,KAAK,GAAG,EAGrB,MAAM3nC,EAAY2nC,EAAK,QAAS,EAChC,IAAIgS,EAAO,EACPtuE,EAEJ,GAAIiuE,EAAY,OACdK,EAAOC,GAAUN,EAAY,IAAI,EAC7B,MAAMK,CAAI,GACZ,OAAO,IAAI,KAAK,GAAG,EAIvB,GAAIL,EAAY,UAEd,GADAjuE,EAASwuE,GAAcP,EAAY,QAAQ,EACvC,MAAMjuE,CAAM,EACd,OAAO,IAAI,KAAK,GAAG,MAEhB,CACL,MAAMyuE,EAAY,IAAI,KAAK95C,EAAY25C,CAAI,EAMrCxzE,EAAS,IAAI,KAAK,CAAC,EACzB,OAAAA,EAAO,YACL2zE,EAAU,eAAgB,EAC1BA,EAAU,YAAa,EACvBA,EAAU,WAAY,CACvB,EACD3zE,EAAO,SACL2zE,EAAU,YAAa,EACvBA,EAAU,cAAe,EACzBA,EAAU,cAAe,EACzBA,EAAU,mBAAoB,CAC/B,EACM3zE,CACX,CAEE,OAAO,IAAI,KAAK65B,EAAY25C,EAAOtuE,CAAM,CAC3C,CAEA,MAAM0uE,GAAW,CACf,kBAAmB,OACnB,kBAAmB,QACnB,SAAU,YACZ,EAEMC,GACJ,gEACIC,GACJ,4EACIC,GAAgB,gCAEtB,SAASX,GAAgBpF,EAAY,CACnC,MAAMmF,EAAc,CAAE,EAChBnuE,EAAQgpE,EAAW,MAAM4F,GAAS,iBAAiB,EACzD,IAAII,EAIJ,GAAIhvE,EAAM,OAAS,EACjB,OAAOmuE,EAiBT,GAdI,IAAI,KAAKnuE,EAAM,CAAC,CAAC,EACnBgvE,EAAahvE,EAAM,CAAC,GAEpBmuE,EAAY,KAAOnuE,EAAM,CAAC,EAC1BgvE,EAAahvE,EAAM,CAAC,EAChB4uE,GAAS,kBAAkB,KAAKT,EAAY,IAAI,IAClDA,EAAY,KAAOnF,EAAW,MAAM4F,GAAS,iBAAiB,EAAE,CAAC,EACjEI,EAAahG,EAAW,OACtBmF,EAAY,KAAK,OACjBnF,EAAW,MACZ,IAIDgG,EAAY,CACd,MAAM5kE,EAAQwkE,GAAS,SAAS,KAAKI,CAAU,EAC3C5kE,GACF+jE,EAAY,KAAOa,EAAW,QAAQ5kE,EAAM,CAAC,EAAG,EAAE,EAClD+jE,EAAY,SAAW/jE,EAAM,CAAC,GAE9B+jE,EAAY,KAAOa,CAEzB,CAEE,OAAOb,CACT,CAEA,SAASG,GAAUtF,EAAYiG,EAAkB,CAC/C,MAAMC,EAAQ,IAAI,OAChB,wBACG,EAAID,GACL,uBACC,EAAIA,GACL,MACH,EAEKE,EAAWnG,EAAW,MAAMkG,CAAK,EAEvC,GAAI,CAACC,EAAU,MAAO,CAAE,KAAM,IAAK,eAAgB,EAAI,EAEvD,MAAMtR,EAAOsR,EAAS,CAAC,EAAI,SAASA,EAAS,CAAC,CAAC,EAAI,KAC7CC,EAAUD,EAAS,CAAC,EAAI,SAASA,EAAS,CAAC,CAAC,EAAI,KAGtD,MAAO,CACL,KAAMC,IAAY,KAAOvR,EAAOuR,EAAU,IAC1C,eAAgBpG,EAAW,OAAOmG,EAAS,CAAC,GAAKA,EAAS,CAAC,GAAG,MAAM,CACrE,CACH,CAEA,SAASZ,GAAUvF,EAAYnL,EAAM,CAEnC,GAAIA,IAAS,KAAM,OAAO,IAAI,KAAK,GAAG,EAEtC,MAAMsR,EAAWnG,EAAW,MAAM6F,EAAS,EAE3C,GAAI,CAACM,EAAU,OAAO,IAAI,KAAK,GAAG,EAElC,MAAME,EAAa,CAAC,CAACF,EAAS,CAAC,EACzB7K,EAAYgL,GAAcH,EAAS,CAAC,CAAC,EACrC3L,EAAQ8L,GAAcH,EAAS,CAAC,CAAC,EAAI,EACrCzR,EAAM4R,GAAcH,EAAS,CAAC,CAAC,EAC/B/K,EAAOkL,GAAcH,EAAS,CAAC,CAAC,EAChC5K,EAAY+K,GAAcH,EAAS,CAAC,CAAC,EAAI,EAE/C,GAAIE,EACF,OAAKE,GAAiB1R,EAAMuG,EAAMG,CAAS,EAGpCiL,GAAiB3R,EAAMuG,EAAMG,CAAS,EAFpC,IAAI,KAAK,GAAG,EAGhB,CACL,MAAM/H,EAAO,IAAI,KAAK,CAAC,EACvB,MACE,CAACiT,GAAa5R,EAAM2F,EAAO9F,CAAG,GAC9B,CAACgS,GAAsB7R,EAAMyG,CAAS,EAE/B,IAAI,KAAK,GAAG,GAErB9H,EAAK,eAAeqB,EAAM2F,EAAO,KAAK,IAAIc,EAAW5G,CAAG,CAAC,EAClDlB,EACX,CACA,CAEA,SAAS8S,GAAc75E,EAAO,CAC5B,OAAOA,EAAQ,SAASA,CAAK,EAAI,CACnC,CAEA,SAASg5E,GAAUO,EAAY,CAC7B,MAAMG,EAAWH,EAAW,MAAMF,EAAS,EAC3C,GAAI,CAACK,EAAU,MAAO,KAEtB,MAAMzK,EAAQiL,GAAcR,EAAS,CAAC,CAAC,EACjClK,EAAU0K,GAAcR,EAAS,CAAC,CAAC,EACnC1F,EAAUkG,GAAcR,EAAS,CAAC,CAAC,EAEzC,OAAKS,GAAalL,EAAOO,EAASwE,CAAO,EAKvC/E,EAAQ1H,GAAqBiI,EAAUlI,GAAuB0M,EAAU,IAJjE,GAMX,CAEA,SAASkG,GAAcl6E,EAAO,CAC5B,OAAQA,GAAS,WAAWA,EAAM,QAAQ,IAAK,GAAG,CAAC,GAAM,CAC3D,CAEA,SAASi5E,GAAcmB,EAAgB,CACrC,GAAIA,IAAmB,IAAK,MAAO,GAEnC,MAAMV,EAAWU,EAAe,MAAMd,EAAa,EACnD,GAAI,CAACI,EAAU,MAAO,GAEtB,MAAM/L,EAAO+L,EAAS,CAAC,IAAM,IAAM,GAAK,EAClCzK,EAAQ,SAASyK,EAAS,CAAC,CAAC,EAC5BlK,EAAWkK,EAAS,CAAC,GAAK,SAASA,EAAS,CAAC,CAAC,GAAM,EAE1D,OAAKW,GAAiBpL,EAAOO,CAAO,EAI7B7B,GAAQsB,EAAQ1H,GAAqBiI,EAAUlI,IAH7C,GAIX,CAEA,SAASyS,GAAiBrL,EAAaC,EAAM1G,EAAK,CAChD,MAAMlB,EAAO,IAAI,KAAK,CAAC,EACvBA,EAAK,eAAe2H,EAAa,EAAG,CAAC,EACrC,MAAM4L,EAAqBvT,EAAK,UAAS,GAAM,EACzCvxD,GAAQm5D,EAAO,GAAK,EAAI1G,EAAM,EAAIqS,EACxC,OAAAvT,EAAK,WAAWA,EAAK,WAAU,EAAKvxD,CAAI,EACjCuxD,CACT,CAKA,MAAMwT,GAAe,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAEtE,SAAS1F,GAAgBzM,EAAM,CAC7B,OAAOA,EAAO,MAAQ,GAAMA,EAAO,IAAM,GAAKA,EAAO,MAAQ,CAC/D,CAEA,SAAS4R,GAAa5R,EAAM2F,EAAOhH,EAAM,CACvC,OACEgH,GAAS,GACTA,GAAS,IACThH,GAAQ,GACRA,IAASwT,GAAaxM,CAAK,IAAM8G,GAAgBzM,CAAI,EAAI,GAAK,IAElE,CAEA,SAAS6R,GAAsB7R,EAAMyG,EAAW,CAC9C,OAAOA,GAAa,GAAKA,IAAcgG,GAAgBzM,CAAI,EAAI,IAAM,IACvE,CAEA,SAAS0R,GAAiBU,EAAO7L,EAAM1G,EAAK,CAC1C,OAAO0G,GAAQ,GAAKA,GAAQ,IAAM1G,GAAO,GAAKA,GAAO,CACvD,CAEA,SAASkS,GAAalL,EAAOO,EAASwE,EAAS,CAC7C,OAAI/E,IAAU,GACLO,IAAY,GAAKwE,IAAY,EAIpCA,GAAW,GACXA,EAAU,IACVxE,GAAW,GACXA,EAAU,IACVP,GAAS,GACTA,EAAQ,EAEZ,CAEA,SAASoL,GAAiBI,EAAQjL,EAAS,CACzC,OAAOA,GAAW,GAAKA,GAAW,EACpC,CC7QO,SAASkL,GAAe1G,EAAS,CACtC,MAAM/E,EAAQ+E,EAAUtM,GACxB,OAAO,KAAK,MAAMuH,CAAK,CACzB,CCHO,SAAS0L,GAAS5T,EAAMgH,EAAO,CACpC,MAAM7G,EAAQN,GAAOG,CAAI,EACnBqB,EAAOlB,EAAM,YAAa,EAC1Be,EAAMf,EAAM,QAAS,EAErB0T,EAAuB9T,GAAcC,EAAM,CAAC,EAClD6T,EAAqB,YAAYxS,EAAM2F,EAAO,EAAE,EAChD6M,EAAqB,SAAS,EAAG,EAAG,EAAG,CAAC,EACxC,MAAMC,EAAcrJ,GAAeoJ,CAAoB,EAGvD,OAAA1T,EAAM,SAAS6G,EAAO,KAAK,IAAI9F,EAAK4S,CAAW,CAAC,EACzC3T,CACT,CCAO,SAAS3iE,GAAIwiE,EAAM/9D,EAAQ,CAChC,IAAIk+D,EAAQN,GAAOG,CAAI,EAGvB,OAAI,MAAM,CAACG,CAAK,EACPJ,GAAcC,EAAM,GAAG,GAG5B/9D,EAAO,MAAQ,MACjBk+D,EAAM,YAAYl+D,EAAO,IAAI,EAG3BA,EAAO,OAAS,OAClBk+D,EAAQyT,GAASzT,EAAOl+D,EAAO,KAAK,GAGlCA,EAAO,MAAQ,MACjBk+D,EAAM,QAAQl+D,EAAO,IAAI,EAGvBA,EAAO,OAAS,MAClBk+D,EAAM,SAASl+D,EAAO,KAAK,EAGzBA,EAAO,SAAW,MACpBk+D,EAAM,WAAWl+D,EAAO,OAAO,EAG7BA,EAAO,SAAW,MACpBk+D,EAAM,WAAWl+D,EAAO,OAAO,EAG7BA,EAAO,cAAgB,MACzBk+D,EAAM,gBAAgBl+D,EAAO,YAAY,EAGpCk+D,EACT,CC1EO,MAAM4T,WAAoB,KAAM,CAGnC,YAAYpnE,EAAcyC,EAAiB,CACvC,MAAMA,CAAO,EAHD,sBAIZ,KAAK,KAAOzC,CAAA,CAEpB,CCJA,SAASqnE,GAAgBC,EAAiB,CACtC,eAAeC,GAAuC,CAC9C,IAAAC,EAAkB,IAAI,gBACpB,MAAAt3C,EAAU,WAAW,IAAM,CAC7Bs3C,EAAgB,MAAM,EACtB,QAAQ,IAAI,sBAAsB,GACnC,GAAI,EAEH,IACM,MAAAjkD,EAAW,MAAMgT,GAAM,IAAmB+wC,EAAU,2BACtD,CAAE,OAAQE,EAAgB,OAAQ,QAAS,GAAK,CAAC,EACrD,oBAAat3C,CAAO,EAEb3M,EAAS,WACXzuB,EAAG,CACR,mBAAao7B,CAAO,EAEdp7B,aAAay1B,IACf,QAAQ,IAAIz1B,CAAC,EAEXA,CAAA,CACV,CAGG,OACH,aAAAyyE,CACJ,CACJ,CCxBA,SAASE,GAAiBl9D,EAAe,CACtB,eAAAm9D,EAAgBC,EAAiB/mE,EAAqD,CAC7F,IAEO,OADU,MAAM21B,GAAM,IAAchsB,EAAOo9D,EAAS,CAAE,OAAQ/mE,GAAA,YAAAA,EAAS,OAAQ,GACtE,MAAQ,CAAC,QACpB9L,EAAG,CACJ,OAAEA,aAAay1B,IACf,QAAQ,IAAIz1B,CAAC,EAEV,CAAC,EACZ,CAGG,OACH,gBAAA4yE,CACJ,CACJ,CClBO,SAASE,GAAkBliE,EAA+F,CACvH,MAAAmiE,EAAkBC,GAAmBpiE,CAAK,EAC1CqiE,EAAU3+D,EAAS,aACpB,SAAA6N,GAAA/lB,EAAAwU,EAAM,YAAN,YAAAxU,EAAiB,UAAjB,YAAA+lB,EAA2B4wD,EAAgB,SAAU,CAAC,GAClD,OAAa3iE,GAAAQ,EAAM,WAAaR,EAAE,uBAAyBA,EAAE,qBAAsB,EACnF,IAAU7T,GAAA,cACP,GAAGA,EACH,YAAYH,EAAAG,EAAE,aAAF,YAAAH,EAAc,OAAO+Y,GAAMvE,EAAM,WAAauE,EAAE,uBAAyBA,EAAE,sBAAsB,EAC/G,EACV,EACM+9D,EAAY5+D,EAAS,aAAM,OAAA6N,GAAA/lB,EAAAwU,EAAM,YAAN,YAAAxU,EAAiB,YAAjB,YAAA+lB,EAA6B4wD,EAAgB,OAAM,EAC9EI,EAAa7+D,EAAS,aAAM,OAAA6N,GAAA/lB,EAAAwU,EAAM,YAAN,YAAAxU,EAAiB,aAAjB,YAAA+lB,EAA8B4wD,EAAgB,OAAM,EAChFK,EAAa9+D,EAAS,aAAM,OAAA6N,GAAA/lB,EAAAwU,EAAM,YAAN,YAAAxU,EAAiB,aAAjB,YAAA+lB,EAA8B4wD,EAAgB,OAAM,EAChFM,EAAgB/+D,EAAS,aAAM,OAAA6N,GAAA/lB,EAAAwU,EAAM,YAAN,YAAAxU,EAAiB,gBAAjB,YAAA+lB,EAAiC4wD,EAAgB,OAAM,EAErF,OACH,QAAAE,EACA,UAAAC,EACA,WAAAC,EACA,WAAAC,EACA,cAAAC,CACJ,CACJ,CAEO,SAASC,GAAqB1iE,EAA0E,CACrG,MAAA2iE,EAAkBj/D,EAAS,IAAM,gBAAA6N,GAAA/lB,EAAAwU,EAAM,cAAN,YAAAxU,EAAmB,cAAnB,YAAA+lB,EAAiC6wD,GAAmBpiE,CAAK,EAAE,OAAO,KAAI,EAGtG,OACH,gBAHoB0D,EAAS,aAAM,OAAA6N,GAAA/lB,EAAAwU,EAAM,cAAN,YAAAxU,EAAmB,cAAnB,YAAA+lB,EAAiC6wD,GAAmBpiE,CAAK,EAAE,OAAM,EAIpG,gBAAA2iE,CACJ,CACJ,CAEA,SAASP,GAAmBpiE,EAAsC,CAC9D,OAAO0D,EAAS,KAAM1D,GAAA,YAAAA,EAAO,kBAAmB,IAAI,CACxD,CCpCO,SAAS4iE,GAAejV,EAAMkV,EAAU,CAC3C,MAAMC,EAAMxzB,GAAkBuzB,CAAQ,EACtC,MAAO,kBAAmBC,EAAMC,GAAYD,EAAKnV,CAAI,EAAIqV,GAAYF,EAAKnV,CAAI,CAClF,CACA,MAAMsV,GAAY,CACd,KAAM,EACN,MAAO,EACP,IAAK,EACL,KAAM,EACN,OAAQ,EACR,OAAQ,CACZ,EACA,SAASF,GAAYD,EAAKnV,EAAM,CAC5B,GAAI,CACA,MAAMuV,EAAYJ,EAAI,cAAcnV,CAAI,EAClCwV,EAAS,CAAE,EACjB,QAAS54E,EAAI,EAAGA,EAAI24E,EAAU,OAAQ34E,IAAK,CACvC,MAAM2gC,EAAM+3C,GAAUC,EAAU34E,CAAC,EAAE,IAAI,EACnC2gC,IAAQ,SACRi4C,EAAOj4C,CAAG,EAAI,SAASg4C,EAAU34E,CAAC,EAAE,MAAO,EAAE,EAE7D,CACQ,OAAO44E,CACf,OACWpzE,EAAO,CACV,GAAIA,aAAiB,WACjB,MAAO,CAAC,GAAG,EAEf,MAAMA,CACd,CACA,CACA,SAASizE,GAAYF,EAAKnV,EAAM,CAC5B,MAAMuV,EAAYJ,EAAI,OAAOnV,CAAI,EAE3BvrC,EAAS,0CAA0C,KAAK8gD,CAAS,EAGvE,MAAO,CACH,SAAS9gD,EAAO,CAAC,EAAG,EAAE,EACtB,SAASA,EAAO,CAAC,EAAG,EAAE,EACtB,SAASA,EAAO,CAAC,EAAG,EAAE,EACtB,SAASA,EAAO,CAAC,EAAG,EAAE,EACtB,SAASA,EAAO,CAAC,EAAG,EAAE,EACtB,SAASA,EAAO,CAAC,EAAG,EAAE,CACzB,CACL,CAIA,MAAMghD,GAAW,CAAE,EAEbC,GAAoB,IAAI,KAAK,eAAe,QAAS,CACvD,UAAW,MACX,SAAU,mBACV,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,SACZ,CAAC,EAAE,OAAO,IAAI,KAAK,0BAA0B,CAAC,EACxCC,GAAqBD,KAAsB,wBAC7CA,KAAsB,iCAC1B,SAAS/zB,GAAkBuzB,EAAU,CACjC,OAAKO,GAASP,CAAQ,IAClBO,GAASP,CAAQ,EAAIS,GACf,IAAI,KAAK,eAAe,QAAS,CAC/B,UAAW,MACX,SAAUT,EACV,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,SACX,GACC,IAAI,KAAK,eAAe,QAAS,CAC/B,OAAQ,GACR,SAAUA,EACV,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,SACxB,CAAa,GAEFO,GAASP,CAAQ,CAC5B,CCrFO,SAASU,GAAWC,EAAU7O,EAAO9F,EAAK4U,EAAMC,EAAQ31E,EAAQ41E,EAAa,CAChF,MAAMpU,EAAU,IAAI,KAAK,CAAC,EAC1B,OAAAA,EAAQ,eAAeiU,EAAU7O,EAAO9F,CAAG,EAC3CU,EAAQ,YAAYkU,EAAMC,EAAQ31E,EAAQ41E,CAAW,EAC9CpU,CACX,CCVA,MAAMqU,GAAuB,KACvBC,GAAyB,IACzB9D,GAAW,CACb,SAAU,aACV,UAAW,QACX,WAAY,gBACZ,aAAc,0BAClB,EAEO,SAAS+D,GAAgB9C,EAAgBrT,EAAMoW,EAAW,CAE7D,GAAI,CAAC/C,EACD,MAAO,GAGX,IAAIzlE,EAAQwkE,GAAS,UAAU,KAAKiB,CAAc,EAClD,GAAIzlE,EACA,MAAO,GAEX,IAAIs6D,EACAmO,EAGJ,GADAzoE,EAAQwkE,GAAS,WAAW,KAAKiB,CAAc,EAC3CzlE,EAEA,OADAs6D,EAAQ,SAASt6D,EAAM,CAAC,EAAG,EAAE,EACxB0lE,GAAiBpL,CAAK,EAGpB,EAAEA,EAAQ+N,IAFN,IAMf,GADAroE,EAAQwkE,GAAS,aAAa,KAAKiB,CAAc,EAC7CzlE,EAAO,CACPs6D,EAAQ,SAASt6D,EAAM,CAAC,EAAG,EAAE,EAC7B,MAAM66D,EAAU,SAAS76D,EAAM,CAAC,EAAG,EAAE,EACrC,OAAK0lE,GAAiBpL,EAAOO,CAAO,GAGpC4N,EAAiB,KAAK,IAAInO,CAAK,EAAI+N,GAAuBxN,EAAUyN,GAC7DtoE,EAAM,CAAC,IAAM,IAAM,CAACyoE,EAAiBA,GAHjC,GAInB,CAEI,GAAIC,GAA0BjD,CAAc,EAAG,CAC3CrT,EAAO,IAAI,KAAKA,GAAQ,KAAK,IAAG,CAAE,EAClC,MAAM4B,EAAUwU,EAAYpW,EAAOuW,GAAUvW,CAAI,EAC3Ct8D,EAAS8yE,GAAW5U,EAASyR,CAAc,EAEjD,MAAO,EADa+C,EAAY1yE,EAAS+yE,GAAUzW,EAAMt8D,EAAQ2vE,CAAc,EAEvF,CACI,MAAO,IACX,CACA,SAASkD,GAAUvW,EAAM,CACrB,OAAO4V,GAAW5V,EAAK,YAAa,EAAEA,EAAK,SAAU,EAAEA,EAAK,QAAS,EAAEA,EAAK,SAAU,EAAEA,EAAK,WAAY,EAAEA,EAAK,WAAY,EAAEA,EAAK,iBAAiB,CACxJ,CACA,SAASwW,GAAWxW,EAAMqT,EAAgB,CACtC,MAAM/jE,EAAS2lE,GAAejV,EAAMqT,CAAc,EAE5CqD,EAAQd,GAAWtmE,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAI,EAAGA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAI,GAAIA,EAAO,CAAC,EAAGA,EAAO,CAAC,EAAG,CAAC,EAAE,QAAS,EAChH,IAAIqnE,EAAO3W,EAAK,QAAS,EACzB,MAAM4W,EAAOD,EAAO,IACpB,OAAAA,GAAQC,GAAQ,EAAIA,EAAO,IAAOA,EAC3BF,EAAQC,CACnB,CACA,SAASF,GAAUzW,EAAMt8D,EAAQ2vE,EAAgB,CAG7C,IAAIwD,EAFY7W,EAAK,QAAS,EAELt8D,EAEzB,MAAMozE,EAAKN,GAAW,IAAI,KAAKK,CAAQ,EAAGxD,CAAc,EAExD,GAAI3vE,IAAWozE,EACX,OAAOpzE,EAGXmzE,GAAYC,EAAKpzE,EAEjB,MAAMqzE,EAAKP,GAAW,IAAI,KAAKK,CAAQ,EAAGxD,CAAc,EACxD,OAAIyD,IAAOC,EACAD,EAGJ,KAAK,IAAIA,EAAIC,CAAE,CAC1B,CACA,SAASzD,GAAiBpL,EAAOO,EAAS,CACtC,MAAO,KAAOP,GAASA,GAAS,KAAOO,GAAW,MAAS,GAAKA,GAAWA,GAAW,GAC1F,CACA,MAAMuO,GAAyB,CAAE,EACjC,SAASV,GAA0BW,EAAgB,CAC/C,GAAID,GAAuBC,CAAc,EACrC,MAAO,GACX,GAAI,CACA,WAAI,KAAK,eAAe,OAAW,CAAE,SAAUA,CAAc,CAAE,EAC/DD,GAAuBC,CAAc,EAAI,GAClC,EACf,MACkB,CACV,MAAO,EACf,CACA,CCzFO,SAAStV,GAAgC3B,EAAM,CAClD,MAAM4B,EAAU,IAAI,KAAK,KAAK,IAAI5B,EAAK,cAAeA,EAAK,SAAQ,EAAIA,EAAK,QAAS,EAAEA,EAAK,WAAYA,EAAK,WAAU,EAAIA,EAAK,WAAY,EAAEA,EAAK,gBAAiB,EAAC,EACrK,OAAA4B,EAAQ,eAAe5B,EAAK,aAAa,EAClC,CAACA,EAAO,CAAC4B,CACpB,CCdO,MAAMsV,GAAY,0ECEnBjB,GAAuB,KACvBC,GAAyB,IACzBiB,GAA4B,EAC5B/E,GAAW,CACb,gBAAiB,wBACjB,YAAa,mBACb,UAAW,IAEX,GAAI,YACJ,IAAK,CACD,gBACA,gBACA,eACH,EACD,KAAM,WACN,MAAO,CACH,eACA,eACA,cACH,EAED,GAAI,aACJ,IAAK,cACL,KAAM,uBACN,IAAK,eACL,KAAM,wBACN,GAAI,sBACJ,KAAM,+BACN,OAAQ,wCAER,SAAU8E,EACd,EA2CO,SAASrX,GAAOhhE,EAAU0O,EAAU,GAAI,CAC3C,GAAI,UAAU,OAAS,EACnB,MAAM,IAAI,UAAU,iCAAmC,UAAU,OAAS,UAAU,EAExF,GAAI1O,IAAa,KACb,OAAO,IAAI,KAAK,GAAG,EAEvB,MAAM4zE,EAAmBllE,EAAQ,kBAAoB,KAAO4pE,GAA4B,OAAO5pE,EAAQ,gBAAgB,EACvH,GAAIklE,IAAqB,GAAKA,IAAqB,GAAKA,IAAqB,EACzE,MAAM,IAAI,WAAW,oCAAoC,EAG7D,GAAI5zE,aAAoB,MACnB,OAAOA,GAAa,UAAY,OAAO,UAAU,SAAS,KAAKA,CAAQ,IAAM,gBAE9E,OAAO,IAAI,KAAKA,EAAS,SAAS,EAEjC,GAAI,OAAOA,GAAa,UACzB,OAAO,UAAU,SAAS,KAAKA,CAAQ,IAAM,kBAC7C,OAAO,IAAI,KAAKA,CAAQ,EAEvB,GAAM,OAAO,UAAU,SAAS,KAAKA,CAAQ,IAAM,kBACpD,OAAO,IAAI,KAAK,GAAG,EAEvB,MAAM8yE,EAAcC,GAAgB/yE,CAAQ,EACtC,CAAE,KAAAwiE,EAAM,eAAA+V,CAAgB,EAAGtF,GAAUH,EAAY,KAAMc,CAAgB,EACvEzS,EAAO+R,GAAUqF,EAAgB/V,CAAI,EAC3C,GAAIrB,IAAS,MAAQ,MAAMA,EAAK,QAAS,GACrC,OAAO,IAAI,KAAK,GAAG,EAEvB,GAAIA,EAAM,CACN,MAAM3nC,EAAY2nC,EAAK,QAAS,EAChC,IAAIgS,EAAO,EACPtuE,EACJ,GAAIiuE,EAAY,OACZK,EAAOC,GAAUN,EAAY,IAAI,EAC7BK,IAAS,MAAQ,MAAMA,CAAI,GAC3B,OAAO,IAAI,KAAK,GAAG,EAG3B,GAAIL,EAAY,UAAYpkE,EAAQ,UAEhC,GADA7J,EAASyyE,GAAgBxE,EAAY,UAAYpkE,EAAQ,SAAU,IAAI,KAAK8qB,EAAY25C,CAAI,CAAC,EACzF,MAAMtuE,CAAM,EACZ,OAAO,IAAI,KAAK,GAAG,OAKvBA,EAASi+D,GAAgC,IAAI,KAAKtpC,EAAY25C,CAAI,CAAC,EACnEtuE,EAASi+D,GAAgC,IAAI,KAAKtpC,EAAY25C,EAAOtuE,CAAM,CAAC,EAEhF,OAAO,IAAI,KAAK20B,EAAY25C,EAAOtuE,CAAM,CACjD,KAEQ,QAAO,IAAI,KAAK,GAAG,CAE3B,CACA,SAASkuE,GAAgBpF,EAAY,CACjC,MAAMmF,EAAc,CAAE,EACtB,IAAI3uB,EAAQovB,GAAS,gBAAgB,KAAK5F,CAAU,EAChDgG,EAgBJ,GAfKxvB,GAYD2uB,EAAY,KAAO3uB,EAAM,CAAC,EAC1BwvB,EAAaxvB,EAAM,CAAC,IAZpBA,EAAQovB,GAAS,YAAY,KAAK5F,CAAU,EACxCxpB,GACA2uB,EAAY,KAAO3uB,EAAM,CAAC,EAC1BwvB,EAAaxvB,EAAM,CAAC,IAGpB2uB,EAAY,KAAO,KACnBa,EAAahG,IAOjBgG,EAAY,CACZ,MAAM5kE,EAAQwkE,GAAS,SAAS,KAAKI,CAAU,EAC3C5kE,GACA+jE,EAAY,KAAOa,EAAW,QAAQ5kE,EAAM,CAAC,EAAG,EAAE,EAClD+jE,EAAY,SAAW/jE,EAAM,CAAC,EAAE,KAAM,GAGtC+jE,EAAY,KAAOa,CAE/B,CACI,OAAOb,CACX,CACA,SAASG,GAAUtF,EAAYiG,EAAkB,CAC7C,GAAIjG,EAAY,CACZ,MAAM6K,EAAajF,GAAS,IAAIK,CAAgB,EAC1C6E,EAAelF,GAAS,MAAMK,CAAgB,EAEpD,IAAI7kE,EAAQwkE,GAAS,KAAK,KAAK5F,CAAU,GAAK8K,EAAa,KAAK9K,CAAU,EAC1E,GAAI5+D,EAAO,CACP,MAAM2pE,EAAa3pE,EAAM,CAAC,EAC1B,MAAO,CACH,KAAM,SAAS2pE,EAAY,EAAE,EAC7B,eAAgB/K,EAAW,MAAM+K,EAAW,MAAM,CACrD,CACb,CAGQ,GADA3pE,EAAQwkE,GAAS,GAAG,KAAK5F,CAAU,GAAK6K,EAAW,KAAK7K,CAAU,EAC9D5+D,EAAO,CACP,MAAM4pE,EAAgB5pE,EAAM,CAAC,EAC7B,MAAO,CACH,KAAM,SAAS4pE,EAAe,EAAE,EAAI,IACpC,eAAgBhL,EAAW,MAAMgL,EAAc,MAAM,CACxD,CACb,CACA,CAEI,MAAO,CACH,KAAM,IACT,CACL,CACA,SAASzF,GAAUvF,EAAYnL,EAAM,CAEjC,GAAIA,IAAS,KACT,OAAO,KAEX,IAAIrB,EACAgH,EACAY,EAEJ,GAAI,CAAC4E,GAAc,CAACA,EAAW,OAC3B,OAAAxM,EAAO,IAAI,KAAK,CAAC,EACjBA,EAAK,eAAeqB,CAAI,EACjBrB,EAGX,IAAIpyD,EAAQwkE,GAAS,GAAG,KAAK5F,CAAU,EACvC,GAAI5+D,EAGA,OAFAoyD,EAAO,IAAI,KAAK,CAAC,EACjBgH,EAAQ,SAASp5D,EAAM,CAAC,EAAG,EAAE,EAAI,EAC5BqlE,GAAa5R,EAAM2F,CAAK,GAG7BhH,EAAK,eAAeqB,EAAM2F,CAAK,EACxBhH,GAHI,IAAI,KAAK,GAAG,EAO3B,GADApyD,EAAQwkE,GAAS,IAAI,KAAK5F,CAAU,EAChC5+D,EAAO,CACPoyD,EAAO,IAAI,KAAK,CAAC,EACjB,MAAM8H,EAAY,SAASl6D,EAAM,CAAC,EAAG,EAAE,EACvC,OAAKslE,GAAsB7R,EAAMyG,CAAS,GAG1C9H,EAAK,eAAeqB,EAAM,EAAGyG,CAAS,EAC/B9H,GAHI,IAAI,KAAK,GAAG,CAI/B,CAGI,GADApyD,EAAQwkE,GAAS,KAAK,KAAK5F,CAAU,EACjC5+D,EAAO,CACPoyD,EAAO,IAAI,KAAK,CAAC,EACjBgH,EAAQ,SAASp5D,EAAM,CAAC,EAAG,EAAE,EAAI,EACjC,MAAMszD,EAAM,SAAStzD,EAAM,CAAC,EAAG,EAAE,EACjC,OAAKqlE,GAAa5R,EAAM2F,EAAO9F,CAAG,GAGlClB,EAAK,eAAeqB,EAAM2F,EAAO9F,CAAG,EAC7BlB,GAHI,IAAI,KAAK,GAAG,CAI/B,CAGI,GADApyD,EAAQwkE,GAAS,IAAI,KAAK5F,CAAU,EAChC5+D,EAEA,OADAg6D,EAAO,SAASh6D,EAAM,CAAC,EAAG,EAAE,EAAI,EAC3BmlE,GAAiBnL,CAAI,EAGnBoL,GAAiB3R,EAAMuG,CAAI,EAFvB,IAAI,KAAK,GAAG,EAM3B,GADAh6D,EAAQwkE,GAAS,KAAK,KAAK5F,CAAU,EACjC5+D,EAAO,CACPg6D,EAAO,SAASh6D,EAAM,CAAC,EAAG,EAAE,EAAI,EAChC,MAAMm6D,EAAY,SAASn6D,EAAM,CAAC,EAAG,EAAE,EAAI,EAC3C,OAAKmlE,GAAiBnL,EAAMG,CAAS,EAG9BiL,GAAiB3R,EAAMuG,EAAMG,CAAS,EAFlC,IAAI,KAAK,GAAG,CAG/B,CAEI,OAAO,IACX,CACA,SAASkK,GAAUO,EAAY,CAC3B,IAAItK,EACAO,EAEA76D,EAAQwkE,GAAS,GAAG,KAAKI,CAAU,EACvC,GAAI5kE,EAEA,OADAs6D,EAAQ,WAAWt6D,EAAM,CAAC,EAAE,QAAQ,IAAK,GAAG,CAAC,EACxCwlE,GAAalL,CAAK,EAGfA,EAAQ,GAAM+N,GAFX,IAMf,GADAroE,EAAQwkE,GAAS,KAAK,KAAKI,CAAU,EACjC5kE,EAGA,OAFAs6D,EAAQ,SAASt6D,EAAM,CAAC,EAAG,EAAE,EAC7B66D,EAAU,WAAW76D,EAAM,CAAC,EAAE,QAAQ,IAAK,GAAG,CAAC,EAC1CwlE,GAAalL,EAAOO,CAAO,EAGxBP,EAAQ,GAAM+N,GAAuBxN,EAAUyN,GAF5C,IAMf,GADAtoE,EAAQwkE,GAAS,OAAO,KAAKI,CAAU,EACnC5kE,EAAO,CACPs6D,EAAQ,SAASt6D,EAAM,CAAC,EAAG,EAAE,EAC7B66D,EAAU,SAAS76D,EAAM,CAAC,EAAG,EAAE,EAC/B,MAAMq/D,EAAU,WAAWr/D,EAAM,CAAC,EAAE,QAAQ,IAAK,GAAG,CAAC,EACrD,OAAKwlE,GAAalL,EAAOO,EAASwE,CAAO,EAGjC/E,EAAQ,GAAM+N,GAAuBxN,EAAUyN,GAAyBjJ,EAAU,IAF/E,GAGnB,CAEI,OAAO,IACX,CACA,SAAS+F,GAAiBrL,EAAaC,EAAM1G,EAAK,CAC9C0G,EAAOA,GAAQ,EACf1G,EAAMA,GAAO,EACb,MAAMlB,EAAO,IAAI,KAAK,CAAC,EACvBA,EAAK,eAAe2H,EAAa,EAAG,CAAC,EACrC,MAAM4L,EAAqBvT,EAAK,UAAS,GAAM,EACzCvxD,EAAOm5D,EAAO,EAAI1G,EAAM,EAAIqS,EAClC,OAAAvT,EAAK,WAAWA,EAAK,WAAU,EAAKvxD,CAAI,EACjCuxD,CACX,CAEA,MAAM+O,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAC/DC,GAA0B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAC/E,SAASlB,GAAgBzM,EAAM,CAC3B,OAAOA,EAAO,MAAQ,GAAMA,EAAO,IAAM,GAAKA,EAAO,MAAQ,CACjE,CACA,SAAS4R,GAAa5R,EAAM2F,EAAOhH,EAAM,CACrC,GAAIgH,EAAQ,GAAKA,EAAQ,GACrB,MAAO,GAEX,GAAIhH,GAAQ,KAAM,CACd,GAAIA,EAAO,EACP,MAAO,GAEX,MAAMkP,EAAapB,GAAgBzM,CAAI,EAIvC,GAHI6N,GAAclP,EAAOgP,GAAwBhI,CAAK,GAGlD,CAACkI,GAAclP,EAAO+O,GAAc/H,CAAK,EACzC,MAAO,EAEnB,CACI,MAAO,EACX,CACA,SAASkM,GAAsB7R,EAAMyG,EAAW,CAC5C,GAAIA,EAAY,EACZ,MAAO,GAEX,MAAMoH,EAAapB,GAAgBzM,CAAI,EAIvC,MAHI,EAAA6N,GAAcpH,EAAY,KAG1B,CAACoH,GAAcpH,EAAY,IAInC,CACA,SAASiL,GAAiBnL,EAAM1G,EAAK,CAIjC,MAHI,EAAA0G,EAAO,GAAKA,EAAO,IAGnB1G,GAAO,OAASA,EAAM,GAAKA,EAAM,GAIzC,CACA,SAASkS,GAAalL,EAAOO,EAASwE,EAAS,CAO3C,MANI,EAAA/E,EAAQ,GAAKA,GAAS,IAGtBO,GAAW,OAASA,EAAU,GAAKA,GAAW,KAG9CwE,GAAW,OAASA,EAAU,GAAKA,GAAW,IAItD,CCpVO,SAASwK,GAAYzX,EAAMkV,EAAU3nE,EAAS,CACjDyyD,EAAOH,GAAOG,EAAMzyD,CAAO,EAC3B,MAAMmqE,EAAqBvB,GAAgBjB,EAAUlV,EAAM,EAAI,EACzDz7C,EAAI,IAAI,KAAKy7C,EAAK,QAAO,EAAK0X,CAAkB,EAChDC,EAAa,IAAI,KAAK,CAAC,EAC7B,OAAAA,EAAW,YAAYpzD,EAAE,eAAgB,EAAEA,EAAE,YAAa,EAAEA,EAAE,YAAY,EAC1EozD,EAAW,SAASpzD,EAAE,YAAa,EAAEA,EAAE,cAAe,EAAEA,EAAE,cAAa,EAAIA,EAAE,mBAAkB,CAAE,EAC1FozD,CACX,CCPO,SAASC,GAAc5X,EAAMkV,EAAU3nE,EAAS,CACnD,GAAI,OAAOyyD,GAAS,UAAY,CAACA,EAAK,MAAMkX,EAAS,EACjD,OAAOrX,GAAOG,EAAM,CAAE,GAAGzyD,EAAS,SAAA2nE,CAAQ,CAAE,EAEhDlV,EAAOH,GAAOG,EAAMzyD,CAAO,EAC3B,MAAMsqE,EAAMjC,GAAW5V,EAAK,YAAW,EAAIA,EAAK,SAAU,EAAEA,EAAK,UAAWA,EAAK,WAAYA,EAAK,WAAU,EAAIA,EAAK,WAAY,EAAEA,EAAK,iBAAiB,EAAE,QAAS,EAC9J0X,EAAqBvB,GAAgBjB,EAAU,IAAI,KAAK2C,CAAG,CAAC,EAClE,OAAO,IAAI,KAAKA,EAAMH,CAAkB,CAC5C,CChCA,MAAM5N,GAAgB,KAChBgO,GAAkB,cASjB,SAASlZ,GACZmZ,EACAC,EACAC,EAAiF,SACnF,CACE,GAAI,CAACF,GAAQ,CAACC,EAAc,SAE5B,IAAIE,EAAa,CAAC,EAClB,OAAQD,EAAM,CACV,IAAK,OACYC,EAAA,CACT,MAAO,EACP,KAAM,EACN,MAAO,EACP,QAAS,EACT,QAAS,EACT,aAAc,CAClB,EACA,MACJ,IAAK,QACYA,EAAA,CACT,KAAM,EACN,MAAO,EACP,QAAS,EACT,QAAS,EACT,aAAc,CAClB,EACA,MACJ,IAAK,OACYA,EAAA,CACT,MAAO,EACP,QAAS,EACT,QAAS,EACT,aAAc,CAClB,EACA,MACJ,IAAK,OACYA,EAAA,CACT,QAAS,EACT,QAAS,EACT,aAAc,CAClB,EACA,MACJ,IAAK,SACYA,EAAA,CACT,QAAS,EACT,aAAc,CAClB,EACA,MACJ,IAAK,SACYA,EAAA,CACT,aAAc,CAClB,EACA,MAGD,OAAAC,GAAS36E,GAAIu6E,EAAMG,CAAU,EAAG16E,GAAIw6E,EAAOE,CAAU,CAAC,CACjE,CAQgB,SAAAE,GAAYxW,EAAwBsT,EAAW4C,GAAiB,CACrE,OAAAL,GAAY7V,EAASsT,CAAQ,CACxC,CAQgB,SAAAqB,GAAU8B,EAA0BnD,EAAW4C,GAAiB,CACrE,OAAAF,GAAcS,EAAWnD,CAAQ,CAC5C,CAEO,SAASoD,GAAmBtY,EAAqBr8B,EAASmmC,GAAeoL,EAAW4C,GAAiB,CACpG,OAAC9X,EAEE,IAAI,KAAK,eAAer8B,EAAQ,CACnC,SAAAuxC,EACA,KAAM,UACN,OAAQ,UACR,UAAW,KACd,GAAE,OAAO,IAAI,KAAKlV,CAAI,CAAC,EAPN,EAQtB,CAwBgB,SAAAuY,GAAiBtL,EAAiBuL,EAA0C,CACpF,UAAOvL,GAAY,SAAiB,SAExC,IAAIxE,EAAU,KAAK,KAAKwE,EAAU,EAAE,EAIhC,OAHAxE,IAAY,EAAaA,EAAA,EACpBA,EAAU,GAAKA,EAAU,IAAaA,EAAA,GAE3CA,EAAU,GAAW,GAAGA,CAAO,IAAI+P,EAAM,OAAU,GACnD/P,GAAW,GAAW,KAAK+P,EAAM,KAAQ,GAEtC,GAAG,KAAK,MAAM/P,EAAU,EAAE,CAAC,IAAI+P,EAAM,KAAQ,IAAI/P,EAAU,KAAK,MAAMA,EAAU,EAAE,EAAI,EAAE,IAAI+P,EAAM,OAAU,EACvH,CCxFA,SAASC,GAAkBv0E,EAAI,CAC7B,OAAImb,GAAe,GACjBC,GAAepb,CAAE,EACV,IAEF,EACT,CAyIA,SAASw0E,GAAUvlE,EAAG,CACpB,OAAO6C,EAAM7C,CAAC,GAAK,IACrB,CAgGA,MAAMwlE,GAAW,OAAO,OAAW,KAAe,OAAO,SAAa,IACrD,OAAO,kBAAsB,KAAe,sBAAsB,kBACnF,MAAMC,GAASpuD,GAAQ,OAAOA,EAAQ,IAChCquD,GAAcruD,GAAQA,GAAO,KAK7BV,GAAW,OAAO,UAAU,SAC5BgB,GAAYN,GAAQV,GAAS,KAAKU,CAAG,IAAM,kBAI3ClmB,GAAO,IAAM,CACnB,EAaA,SAASmf,MAASjE,EAAM,CACtB,GAAIA,EAAK,SAAW,EAClB,OAAOs5D,GAAQ,GAAGt5D,CAAI,EACxB,MAAM4E,EAAI5E,EAAK,CAAC,EAChB,OAAO,OAAO4E,GAAM,WAAa20D,GAASC,GAAU,KAAO,CAAE,IAAK50D,EAAG,IAAK9f,EAAM,EAAC,CAAC,EAAIoU,EAAI0L,CAAC,CAC7F,CAmCA,SAAS60D,GAAoBhsD,EAAQ/oB,EAAI,CACvC,SAASg1E,KAAW15D,EAAM,CACxB,OAAO,IAAI,QAAQ,CAAC7N,EAASoD,IAAW,CACtC,QAAQ,QAAQkY,EAAO,IAAM/oB,EAAG,MAAM,KAAMsb,CAAI,EAAG,CAAE,GAAAtb,EAAI,QAAS,KAAM,KAAAsb,CAAI,CAAE,CAAC,EAAE,KAAK7N,CAAO,EAAE,MAAMoD,CAAM,CACjH,CAAK,CACL,CACE,OAAOmkE,CACT,CACA,MAAMC,GAAgB1gD,GACbA,EAAQ,EAEjB,SAAS2gD,GAAeC,EAAI9rE,EAAU,GAAI,CACxC,IAAIirB,EACA8gD,EACAC,EAAej1E,GACnB,MAAMk1E,EAAiBC,GAAW,CAChC,aAAaA,CAAM,EACnBF,EAAc,EACdA,EAAej1E,EAChB,EACD,IAAIo1E,EAgCJ,OA/BgBjhD,GAAW,CACzB,MAAMkhD,EAAWC,GAAUP,CAAE,EACvBQ,EAAcD,GAAUrsE,EAAQ,OAAO,EAG7C,OAFIirB,GACFghD,EAAchhD,CAAK,EACjBmhD,GAAY,GAAKE,IAAgB,QAAUA,GAAe,GACxDP,IACFE,EAAcF,CAAQ,EACtBA,EAAW,MAEN,QAAQ,QAAQ7gD,GAAQ,GAE1B,IAAI,QAAQ,CAAC9mB,EAASoD,IAAW,CACtCwkE,EAAehsE,EAAQ,eAAiBwH,EAASpD,EACjD+nE,EAAcjhD,EACVohD,GAAe,CAACP,IAClBA,EAAW,WAAW,IAAM,CACtB9gD,GACFghD,EAAchhD,CAAK,EACrB8gD,EAAW,KACX3nE,EAAQ+nE,EAAW,CAAE,CACtB,EAAEG,CAAW,GAEhBrhD,EAAQ,WAAW,IAAM,CACnB8gD,GACFE,EAAcF,CAAQ,EACxBA,EAAW,KACX3nE,EAAQ8mB,EAAM,CAAE,CACjB,EAAEkhD,CAAQ,CACjB,CAAK,CACF,CAEH,CACA,SAASG,MAAkBt6D,EAAM,CAC/B,IAAIu6D,EAAW,EACXvhD,EACAwhD,EAAY,GACZT,EAAej1E,GACf21E,EACAZ,EACAvlB,EACAomB,EACAC,EACA,CAACn6D,GAAMR,EAAK,CAAC,CAAC,GAAK,OAAOA,EAAK,CAAC,GAAM,SACvC,CAAE,MAAO65D,EAAI,SAAAvlB,EAAW,GAAM,QAAAomB,EAAU,GAAM,eAAAC,EAAiB,IAAU36D,EAAK,CAAC,EAEhF,CAAC65D,EAAIvlB,EAAW,GAAMomB,EAAU,GAAMC,EAAiB,EAAK,EAAI36D,EAClE,MAAM46D,EAAQ,IAAM,CACd5hD,IACF,aAAaA,CAAK,EAClBA,EAAQ,OACR+gD,EAAc,EACdA,EAAej1E,GAElB,EA+BD,OA9BgB+1E,GAAY,CAC1B,MAAMV,EAAWC,GAAUP,CAAE,EACvBiB,EAAU,KAAK,IAAG,EAAKP,EACvBthD,EAAS,IACNwhD,EAAYI,EAAS,EAG9B,OADAD,EAAO,EACHT,GAAY,GACdI,EAAW,KAAK,IAAK,EACdthD,EAAQ,IAEb6hD,EAAUX,IAAaO,GAAW,CAACF,IACrCD,EAAW,KAAK,IAAK,EACrBthD,EAAQ,GACCq7B,IACTmmB,EAAY,IAAI,QAAQ,CAACtoE,EAASoD,IAAW,CAC3CwkE,EAAeY,EAAiBplE,EAASpD,EACzC6mB,EAAQ,WAAW,IAAM,CACvBuhD,EAAW,KAAK,IAAK,EACrBC,EAAY,GACZroE,EAAQ8mB,EAAM,CAAE,EAChB2hD,EAAO,CACR,EAAE,KAAK,IAAI,EAAGT,EAAWW,CAAO,CAAC,CAC1C,CAAO,GAEC,CAACJ,GAAW,CAAC1hD,IACfA,EAAQ,WAAW,IAAMwhD,EAAY,GAAML,CAAQ,GACrDK,EAAY,GACLC,EACR,CAEH,CACA,SAASM,GAAeC,EAAerB,GAAc5rE,EAAU,GAAI,CACjE,KAAM,CACJ,aAAAmT,EAAe,QACnB,EAAMnT,EACEgJ,EAAWkN,GAAM/C,IAAiB,QAAQ,EAChD,SAAS+5D,GAAQ,CACflkE,EAAS,MAAQ,EACrB,CACE,SAASmkE,GAAS,CAChBnkE,EAAS,MAAQ,EACrB,CACE,MAAMokE,EAAc,IAAIn7D,IAAS,CAC3BjJ,EAAS,OACXikE,EAAa,GAAGh7D,CAAI,CACvB,EACD,MAAO,CAAE,SAAUu5D,GAASxiE,CAAQ,EAAG,MAAAkkE,EAAO,OAAAC,EAAQ,YAAAC,CAAa,CACrE,CAiEA,SAASrtD,GAAQr0B,EAAO,CACtB,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC9C,CAgBA,SAAS2hF,GAAmB9hF,EAAQ,CAClC,OAAiB2lD,GAAoB,CACvC,CA8BA,SAASo8B,GAAc32E,EAAIm1E,EAAK,IAAKvlB,EAAW,GAAOomB,EAAU,GAAMC,EAAiB,GAAO,CAC7F,OAAOlB,GACLa,GAAeT,EAAIvlB,EAAUomB,EAASC,CAAc,EACpDj2E,CACD,CACH,CAEA,SAAS42E,GAAa7hF,EAAO8hF,EAAQ,IAAKjnB,EAAW,GAAMomB,EAAU,GAAM,CACzE,GAAIa,GAAS,EACX,OAAO9hF,EACT,MAAMmgC,EAAY1gB,EAAIzf,EAAM,KAAK,EAC3B+hF,EAAUH,GAAc,IAAM,CAClCzhD,EAAU,MAAQngC,EAAM,KAC5B,EAAK8hF,EAAOjnB,EAAUomB,CAAO,EAC3B,OAAAvhE,GAAM1f,EAAO,IAAM+hF,GAAS,EACrB5hD,CACT,CAiEA,SAAS6hD,GAAgB9rD,EAAQQ,EAAIpiB,EAAU,GAAI,CACjD,KAAM,CACJ,YAAAotE,EAAcxB,GACd,GAAG+B,CACP,EAAM3tE,EACJ,OAAOoL,GACLwW,EACA8pD,GACE0B,EACAhrD,CACD,EACDurD,CACD,CACH,CAEA,SAASC,GAAchsD,EAAQQ,EAAIpiB,EAAU,GAAI,CAC/C,KAAM,CACJ,YAAa0f,EACb,aAAAvM,EAAe,SACf,GAAGw6D,CACP,EAAM3tE,EACE,CAAE,YAAAotE,EAAa,MAAAF,EAAO,OAAAC,EAAQ,SAAAnkE,CAAU,EAAGgkE,GAAettD,EAAQ,CAAE,aAAAvM,EAAc,EASxF,MAAO,CAAE,KARIu6D,GACX9rD,EACAQ,EACA,CACE,GAAGurD,EACH,YAAAP,CACN,CACG,EACc,MAAAF,EAAO,OAAAC,EAAQ,SAAAnkE,CAAU,CAC1C,CAEA,SAAS6kE,GAAQrD,EAAMC,KAAU,CAACzqE,CAAO,EAAG,CAC1C,KAAM,CACJ,MAAAkyB,EAAQ,OACR,KAAA47C,EAAO,GACP,UAAAC,EAAY,GACZ,UAAAlvE,EAAY,OACZ,UAAA2iC,EAAY,EACb,EAAGxhC,GAAW,CAAE,EACXguE,EAAW,CAAE,EACbC,EAAe,QAASzsC,GAAaA,EAAU,MAAS57B,GAAMA,GAC9DsoE,EAAe,QAAS1sC,GAAaA,EAAU,MAAS57B,GAAMA,GACpE,OAAI/G,IAAc,QAAUA,IAAc,QACxCmvE,EAAS,KAAKJ,GACZpD,EACCttB,GAAa,CACZ8wB,EAAS,QAAS12D,GAAMA,EAAE,MAAK,CAAE,EACjCmzD,EAAM,MAAQwD,EAAa/wB,CAAQ,EACnC8wB,EAAS,QAAS12D,GAAMA,EAAE,OAAM,CAAE,CACnC,EACD,CAAE,MAAA4a,EAAO,KAAA47C,EAAM,UAAAC,CAAS,CAC9B,CAAK,GAEClvE,IAAc,QAAUA,IAAc,QACxCmvE,EAAS,KAAKJ,GACZnD,EACCvtB,GAAa,CACZ8wB,EAAS,QAAS12D,GAAMA,EAAE,MAAK,CAAE,EACjCkzD,EAAK,MAAQ0D,EAAahxB,CAAQ,EAClC8wB,EAAS,QAAS12D,GAAMA,EAAE,OAAM,CAAE,CACnC,EACD,CAAE,MAAA4a,EAAO,KAAA47C,EAAM,UAAAC,CAAS,CAC9B,CAAK,EAEU,IAAM,CACjBC,EAAS,QAAS12D,GAAMA,EAAE,KAAI,CAAE,CACjC,CAEH,CAEA,SAAS62D,GAASvsD,EAAQqH,EAASjpB,EAAU,GAAI,CAC/C,KAAM,CACJ,MAAAkyB,EAAQ,OACR,KAAA47C,EAAO,GACP,UAAAC,EAAY,EAChB,EAAM/tE,EACEouE,EAAeruD,GAAQkJ,CAAO,EACpC,OAAO7d,GACLwW,EACCs7B,GAAakxB,EAAa,QAAS7iF,GAAWA,EAAO,MAAQ2xD,CAAQ,EACtE,CAAE,MAAAhrB,EAAO,KAAA47C,EAAM,UAAAC,CAAS,CACzB,CACH,CAoDA,SAASM,GAAa13E,EAAI23E,EAAO,GAAM/iF,EAAQ,CAC5B8hF,GAAoB,EAEnCn1B,GAAUvhD,EAAIpL,CAAM,EACb+iF,EACP33E,EAAI,EAEJmZ,GAASnZ,CAAE,CACf,CAqlBA,SAAS43E,GAAe3sD,EAAQQ,EAAIpiB,EAAU,GAAI,CAChD,KAAM,CACJ,SAAAwuE,EAAW,EACX,QAAAC,EAAU,OACV,GAAGd,CACP,EAAM3tE,EACJ,OAAO0tE,GACL9rD,EACAQ,EACA,CACE,GAAGurD,EACH,YAAa9B,GAAe2C,EAAU,CAAE,QAAAC,CAAS,EACvD,CACG,CACH,CAoFA,SAASC,GAAe9sD,EAAQQ,EAAIpiB,EAAS,CAC3C,OAAOoL,GACLwW,EACAQ,EACA,CACE,GAAGpiB,EACH,UAAW,EACjB,CACG,CACH,CCx0CA,MAAM2uE,GAAgBvD,GAAW,OAAS,OAK1C,SAASwD,GAAaC,EAAO,CACvB,IAAAv+E,EACE,MAAAw+E,EAAQC,GAAQF,CAAK,EAC3B,OAAQv+E,EAAKw+E,GAAS,KAAO,OAASA,EAAM,MAAQ,KAAOx+E,EAAKw+E,CAClE,CAEA,SAASE,MAAoB/8D,EAAM,CACjC,MAAMg9D,EAAW,CAAC,EACZC,EAAU,IAAM,CACpBD,EAAS,QAASt4E,GAAOA,EAAA,CAAI,EAC7Bs4E,EAAS,OAAS,CACpB,EACME,EAAW,CAACj0E,EAAIk0E,EAAOryE,EAAUiD,KAClC9E,EAAA,iBAAiBk0E,EAAOryE,EAAUiD,CAAO,EACrC,IAAM9E,EAAG,oBAAoBk0E,EAAOryE,EAAUiD,CAAO,GAExDqvE,EAAoB7mE,EAAS,IAAM,CACvC,MAAMuoB,EAAOhR,GAAQgvD,GAAQ98D,EAAK,CAAC,CAAC,CAAC,EAAE,OAAQ/d,GAAMA,GAAK,IAAI,EACvD,OAAA68B,EAAK,MAAO78B,GAAM,OAAOA,GAAM,QAAQ,EAAI68B,EAAO,OAC1D,EACKu+C,EAAYZ,GAChB,IAAM,CACJ,IAAIp+E,EAAI+lB,EACD,QACJA,GAAM/lB,EAAK++E,EAAkB,QAAU,KAAO,OAAS/+E,EAAG,IAAK4D,GAAM06E,GAAa16E,CAAC,CAAC,IAAM,KAAOmiB,EAAK,CAACs4D,EAAa,EAAE,OAAQz6E,GAAMA,GAAK,IAAI,EAC9I6rB,GAAQgvD,GAAQM,EAAkB,MAAQp9D,EAAK,CAAC,EAAIA,EAAK,CAAC,CAAC,CAAC,EAC5D8N,GAAQtX,EAAM4mE,EAAkB,MAAQp9D,EAAK,CAAC,EAAIA,EAAK,CAAC,CAAC,CAAC,EAE1D88D,GAAQM,EAAkB,MAAQp9D,EAAK,CAAC,EAAIA,EAAK,CAAC,CAAC,CACrD,CACF,EACA,CAAC,CAACs9D,EAAaC,EAAYC,EAAeC,CAAW,IAAM,CAEzD,GADQR,EAAA,EACJ,EAAEK,GAAe,MAAgBA,EAAY,SAAW,EAAEC,GAAc,MAAgBA,EAAW,SAAW,EAAEC,GAAiB,MAAgBA,EAAc,QACjK,OACF,MAAME,EAAepyD,GAASmyD,CAAW,EAAI,CAAE,GAAGA,GAAgBA,EACzDT,EAAA,KACP,GAAGM,EAAY,QACZr0E,GAAOs0E,EAAW,QAChBJ,GAAUK,EAAc,IAAK1yE,GAAaoyE,EAASj0E,EAAIk0E,EAAOryE,EAAU4yE,CAAY,CAAC,EACxF,CAEJ,CACF,EACA,CAAE,MAAO,MAAO,CAClB,EACMC,EAAO,IAAM,CACPN,EAAA,EACFJ,EAAA,CACV,EACA,OAAAhE,GAAkBgE,CAAO,EAClBU,CACT,CA8FA,SAASC,IAAa,CACd,MAAAC,EAAYvjE,GAAW,EAAK,EAC5BlB,EAAW6lC,GAAmB,EACpC,OAAI7lC,GACF6sC,GAAU,IAAM,CACd43B,EAAU,MAAQ,IACjBzkE,CAAQ,EAENykE,CACT,CAEA,SAASC,GAAa7yE,EAAU,CAC9B,MAAM4yE,EAAYD,GAAW,EAC7B,OAAOrnE,EAAS,KACJsnE,EAAA,MACH,EAAQ5yE,IAChB,CACH,CAEA,SAAS8yE,GAAoBzkF,EAAQ2R,EAAU8C,EAAU,GAAI,CAC3D,KAAM,CAAE,OAAAiwE,EAAStB,GAAe,GAAGuB,CAAoB,EAAAlwE,EACnD,IAAAmwE,EACJ,MAAMC,EAAcL,GAAa,IAAME,GAAU,qBAAsBA,CAAM,EACvEf,EAAU,IAAM,CAChBiB,IACFA,EAAS,WAAW,EACTA,EAAA,OAEf,EACMlnD,EAAUzgB,EAAS,IAAM,CACvB,MAAA9c,EAAQqjF,GAAQxjF,CAAM,EACtB2rC,EAAQnX,GAAQr0B,CAAK,EAAE,IAAIkjF,EAAY,EAAE,OAAOtD,EAAU,EACzD,WAAI,IAAIp0C,CAAK,EACrB,EACKo4C,EAAYlkE,GAChB,IAAM6d,EAAQ,MACbonD,GAAa,CACJnB,EAAA,EACJkB,EAAY,OAASC,EAAS,OACrBF,EAAA,IAAI,iBAAiBjzE,CAAQ,EACxCmzE,EAAS,QAASn1E,GAAOi1E,EAAS,QAAQj1E,EAAIg1E,CAAe,CAAC,EAElE,EACA,CAAE,UAAW,GAAM,MAAO,MAAO,CACnC,EACMI,EAAc,IACXH,GAAY,KAAO,OAASA,EAAS,YAAY,EAEpDP,EAAO,IAAM,CACPN,EAAA,EACFJ,EAAA,CACV,EACA,OAAAhE,GAAkB0E,CAAI,EACf,CACL,YAAAQ,EACA,KAAAR,EACA,YAAAU,CACF,CACF,CAi1CA,SAASC,GAAY3uD,EAAQ,CAC3B,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAM,CAAC,CAC1C,CAuCA,MAAMlD,GAAU,OAAO,WAAe,IAAc,WAAa,OAAO,OAAW,IAAc,OAAS,OAAO,OAAW,IAAc,OAAS,OAAO,KAAS,IAAc,KAAO,CAAC,EACnL8xD,GAAY,0BACZnqE,GAAuCoqE,GAAA,EAC7C,SAASA,IAAc,CACrB,OAAMD,MAAa9xD,KACjBA,GAAQ8xD,EAAS,EAAI9xD,GAAQ8xD,EAAS,GAAK,CAAC,GACvC9xD,GAAQ8xD,EAAS,CAC1B,CACA,SAASE,GAAcjlF,EAAKiH,EAAU,CAC7B,OAAA2T,GAAS5a,CAAG,GAAKiH,CAC1B,CASA,SAASi+E,GAAoBC,EAAS,CACpC,OAAOA,GAAW,KAAO,MAAQA,aAAmB,IAAM,MAAQA,aAAmB,IAAM,MAAQA,aAAmB,KAAO,OAAS,OAAOA,GAAY,UAAY,UAAY,OAAOA,GAAY,SAAW,SAAW,OAAOA,GAAY,SAAW,SAAY,OAAO,MAAMA,CAAO,EAAe,MAAX,QAC9R,CAEA,MAAMC,GAAqB,CACzB,QAAS,CACP,KAAOjrE,GAAMA,IAAM,OACnB,MAAQA,GAAM,OAAOA,CAAC,CACxB,EACA,OAAQ,CACN,KAAOA,GAAM,KAAK,MAAMA,CAAC,EACzB,MAAQA,GAAM,KAAK,UAAUA,CAAC,CAChC,EACA,OAAQ,CACN,KAAOA,GAAM,OAAO,WAAWA,CAAC,EAChC,MAAQA,GAAM,OAAOA,CAAC,CACxB,EACA,IAAK,CACH,KAAOA,GAAMA,EACb,MAAQA,GAAM,OAAOA,CAAC,CACxB,EACA,OAAQ,CACN,KAAOA,GAAMA,EACb,MAAQA,GAAM,OAAOA,CAAC,CACxB,EACA,IAAK,CACH,KAAOA,GAAM,IAAI,IAAI,KAAK,MAAMA,CAAC,CAAC,EAClC,MAAQA,GAAM,KAAK,UAAU,MAAM,KAAKA,EAAE,SAAS,CAAC,CACtD,EACA,IAAK,CACH,KAAOA,GAAM,IAAI,IAAI,KAAK,MAAMA,CAAC,CAAC,EAClC,MAAQA,GAAM,KAAK,UAAU,MAAM,KAAKA,CAAC,CAAC,CAC5C,EACA,KAAM,CACJ,KAAOA,GAAM,IAAI,KAAKA,CAAC,EACvB,MAAQA,GAAMA,EAAE,YAAY,EAEhC,EACMkrE,GAAyB,iBAC/B,SAASC,GAAWtlF,EAAKuZ,EAAUgsE,EAAShxE,EAAU,GAAI,CACpD,IAAA1P,EACE,MACJ,MAAA4hC,EAAQ,MACR,KAAA47C,EAAO,GACP,uBAAAmD,EAAyB,GACzB,cAAAC,EAAgB,GAChB,cAAAC,EAAgB,GAChB,QAAAC,EACA,OAAAnB,EAAStB,GACT,YAAAvB,EACA,QAAAp4D,EAAW9gB,GAAM,CACf,QAAQ,MAAMA,CAAC,CACjB,EACA,cAAAm9E,CAAA,EACErxE,EACE9J,GAAQk7E,EAAU7kE,GAAapB,GAAK,OAAOnG,GAAa,WAAaA,EAAS,EAAIA,CAAQ,EAC1FssE,EAAc9oE,EAAS,IAAMumE,GAAQtjF,CAAG,CAAC,EAC/C,GAAI,CAACulF,EACC,IACQA,EAAAN,GAAc,oBAAqB,IAAM,CAC7C,IAAAa,EACJ,OAAQA,EAAM5C,KAAkB,KAAO,OAAS4C,EAAI,aACrD,EAAE,QACIr9E,EAAG,CACV8gB,EAAQ9gB,CAAC,EAGb,GAAI,CAAC88E,EACI,OAAA96E,EACH,MAAA06E,EAAU7B,GAAQ/pE,CAAQ,EAC1BxF,EAAOmxE,GAAoBC,CAAO,EAClCY,GAAclhF,EAAK0P,EAAQ,aAAe,KAAO1P,EAAKugF,GAAmBrxE,CAAI,EAC7E,CAAE,MAAOiyE,EAAY,OAAQC,CAAgB,EAAAC,GACjDz7E,EACA,IAAM07E,EAAM17E,EAAK,KAAK,EACtB,CAAE,MAAAg8B,EAAO,KAAA47C,EAAM,YAAAV,CAAY,CAC7B,EACAhiE,GAAMkmE,EAAa,IAAMO,EAAA,EAAU,CAAE,MAAA3/C,EAAO,EACxC+9C,GAAUgB,GACZ5C,GAAa,IAAM,CACb2C,aAAmB,QACrBhC,GAAiBiB,EAAQ,UAAW4B,EAAQ,CAAE,QAAS,GAAM,EAE5C5B,KAAQa,GAAwBgB,CAAqB,EACpET,GACKQ,EAAA,EACV,EAEER,GACIQ,EAAA,EACA,SAAAE,EAAmBC,EAAU90B,EAAU,CAC9C,GAAI+yB,EAAQ,CACV,MAAM16C,EAAU,CACd,IAAK+7C,EAAY,MACjB,SAAAU,EACA,SAAA90B,EACA,YAAa8zB,CACf,EACAf,EAAO,cAAce,aAAmB,QAAU,IAAI,aAAa,UAAWz7C,CAAO,EAAI,IAAI,YAAYu7C,GAAwB,CAC/H,OAAQv7C,CAAA,CACT,CAAC,EACJ,CAEF,SAASq8C,EAAMhsE,EAAG,CACZ,IACF,MAAMosE,EAAWhB,EAAQ,QAAQM,EAAY,KAAK,EAClD,GAAI1rE,GAAK,KACPmsE,EAAmBC,EAAU,IAAI,EACzBhB,EAAA,WAAWM,EAAY,KAAK,MAC/B,CACC,MAAAW,EAAaT,EAAW,MAAM5rE,CAAC,EACjCosE,IAAaC,IACPjB,EAAA,QAAQM,EAAY,MAAOW,CAAU,EAC7CF,EAAmBC,EAAUC,CAAU,EACzC,QAEK/9E,EAAG,CACV8gB,EAAQ9gB,CAAC,EACX,CAEF,SAASg+E,EAAK9C,EAAO,CACnB,MAAMhpD,EAAWgpD,EAAQA,EAAM,SAAW4B,EAAQ,QAAQM,EAAY,KAAK,EAC3E,GAAIlrD,GAAY,KACd,OAAI8qD,GAAiBN,GAAW,MAC9BI,EAAQ,QAAQM,EAAY,MAAOE,EAAW,MAAMZ,CAAO,CAAC,EACvDA,EACT,GAAW,CAACxB,GAAS+B,EAAe,CAC5B,MAAAzlF,EAAQ8lF,EAAW,KAAKprD,CAAQ,EACtC,OAAI,OAAO+qD,GAAkB,WACpBA,EAAczlF,EAAOklF,CAAO,EAC5BpxE,IAAS,UAAY,CAAC,MAAM,QAAQ9T,CAAK,EACzC,CAAE,GAAGklF,EAAS,GAAGllF,CAAM,EACzBA,CAAA,KACT,QAAW,OAAO06B,GAAa,SACtBA,EAEAorD,EAAW,KAAKprD,CAAQ,CACjC,CAEF,SAASyrD,EAAOzC,EAAO,CACjB,KAAAA,GAASA,EAAM,cAAgB4B,GAE/B,IAAA5B,GAASA,EAAM,KAAO,KAAM,CAC9Bl5E,EAAK,MAAQ06E,EACb,OAEE,KAAAxB,GAASA,EAAM,MAAQkC,EAAY,OAE5B,CAAAG,EAAA,EACP,KACGrC,GAAS,KAAO,OAASA,EAAM,YAAcoC,EAAW,MAAMt7E,EAAK,KAAK,IACtEA,EAAA,MAAQg8E,EAAK9C,CAAK,SAClBl7E,EAAG,CACV8gB,EAAQ9gB,CAAC,SACT,CACIk7E,EACFt/D,GAAS4hE,CAAW,EAERA,EAAA,IAChB,CAEF,SAASI,EAAsB1C,EAAO,CACpCyC,EAAOzC,EAAM,MAAM,EAEd,OAAAl5E,CACT,CAw4BA,SAASi8E,GAAkB5mF,EAAQ2R,EAAU8C,EAAU,GAAI,CACzD,KAAM,CAAE,OAAAiwE,EAAStB,GAAe,GAAGyD,CAAoB,EAAApyE,EACnD,IAAAmwE,EACJ,MAAMC,EAAcL,GAAa,IAAME,GAAU,mBAAoBA,CAAM,EACrEf,EAAU,IAAM,CAChBiB,IACFA,EAAS,WAAW,EACTA,EAAA,OAEf,EACMlnD,EAAUzgB,EAAS,IAAM,CACvB,MAAA6pE,EAAWtD,GAAQxjF,CAAM,EAC/B,OAAO,MAAM,QAAQ8mF,CAAQ,EAAIA,EAAS,IAAKn3E,GAAO0zE,GAAa1zE,CAAE,CAAC,EAAI,CAAC0zE,GAAayD,CAAQ,CAAC,EAClG,EACK/C,EAAYlkE,GAChB6d,EACCqpD,GAAQ,CAEH,GADIpD,EAAA,EACJkB,EAAY,OAASH,EAAQ,CACpBE,EAAA,IAAI,eAAejzE,CAAQ,EACtC,UAAWq1E,KAAOD,EACZC,GACOpC,EAAA,QAAQoC,EAAKH,CAAe,CACzC,CAEJ,EACA,CAAE,UAAW,GAAM,MAAO,MAAO,CACnC,EACMxC,EAAO,IAAM,CACTV,EAAA,EACEI,EAAA,CACZ,EACA,OAAApE,GAAkB0E,CAAI,EACf,CACL,YAAAQ,EACA,KAAAR,CACF,CACF,CAEA,SAAS4C,GAAmBjnF,EAAQyU,EAAU,GAAI,CAC1C,MACJ,MAAAwG,EAAQ,GACR,aAAAisE,EAAe,GACf,aAAAC,EAAe,GACf,UAAA3E,EAAY,GACZ,aAAA4E,EAAe,QACb3yE,EACE4yE,EAASrmE,GAAW,CAAC,EACrBsmE,EAAStmE,GAAW,CAAC,EACrBi+D,EAAOj+D,GAAW,CAAC,EACnBk+D,EAAQl+D,GAAW,CAAC,EACpBumE,EAAMvmE,GAAW,CAAC,EAClBupD,EAAQvpD,GAAW,CAAC,EACpB9b,EAAI8b,GAAW,CAAC,EAChB9a,EAAI8a,GAAW,CAAC,EACtB,SAASwmE,GAAc,CACf,MAAA73E,EAAK0zE,GAAarjF,CAAM,EAC9B,GAAI,CAAC2P,EAAI,CACHsL,IACFosE,EAAO,MAAQ,EACfC,EAAO,MAAQ,EACfrI,EAAK,MAAQ,EACbC,EAAM,MAAQ,EACdqI,EAAI,MAAQ,EACZhd,EAAM,MAAQ,EACdrlE,EAAE,MAAQ,EACVgB,EAAE,MAAQ,GAEZ,OAEI,MAAAuhF,EAAO93E,EAAG,sBAAsB,EACtC03E,EAAO,MAAQI,EAAK,OACpBH,EAAO,MAAQG,EAAK,OACpBxI,EAAK,MAAQwI,EAAK,KAClBvI,EAAM,MAAQuI,EAAK,MACnBF,EAAI,MAAQE,EAAK,IACjBld,EAAM,MAAQkd,EAAK,MACnBviF,EAAE,MAAQuiF,EAAK,EACfvhF,EAAE,MAAQuhF,EAAK,EAEjB,SAASnB,GAAS,CACZc,IAAiB,OACPI,EAAA,EACLJ,IAAiB,cACF,0BAAMI,GAAa,EAE7C,OAAAZ,GAAkB5mF,EAAQsmF,CAAM,EAC1BzmE,GAAA,IAAMwjE,GAAarjF,CAAM,EAAI0nF,GAAQ,CAACA,GAAOpB,GAAQ,EAC3D7B,GAAoBzkF,EAAQsmF,EAAQ,CAClC,gBAAiB,CAAC,QAAS,OAAO,EACnC,EACGa,GACF1D,GAAiB,SAAU6C,EAAQ,CAAE,QAAS,GAAM,QAAS,GAAM,EACjEY,GACFzD,GAAiB,SAAU6C,EAAQ,CAAE,QAAS,GAAM,EACtDxD,GAAa,IAAM,CACbN,GACK8D,EAAA,EACV,EACM,CACL,OAAAe,EACA,OAAAC,EACA,KAAArI,EACA,MAAAC,EACA,IAAAqI,EACA,MAAAhd,EACA,EAAArlE,EACA,EAAAgB,EACA,OAAAogF,CACF,CACF,CA8DA,SAASqB,GAAe3nF,EAAQ4nF,EAAc,CAAE,MAAO,EAAG,OAAQ,CAAE,EAAGnzE,EAAU,GAAI,CACnF,KAAM,CAAE,OAAAiwE,EAAStB,GAAe,IAAAyE,EAAM,eAAkBpzE,EAClDqzE,EAAQ7qE,EAAS,IAAM,CAC3B,IAAIlY,EAAI+lB,EACR,OAAQA,GAAM/lB,EAAKs+E,GAAarjF,CAAM,IAAM,KAAO,OAAS+E,EAAG,eAAiB,KAAO,OAAS+lB,EAAG,SAAS,KAAK,EAClH,EACKy/C,EAAQvpD,GAAW4mE,EAAY,KAAK,EACpCP,EAASrmE,GAAW4mE,EAAY,MAAM,EACtC,CAAE,KAAMG,CAAA,EAAUnB,GACtB5mF,EACA,CAAC,CAAC02D,CAAK,IAAM,CACL,MAAAsxB,EAAUH,IAAQ,aAAenxB,EAAM,cAAgBmxB,IAAQ,cAAgBnxB,EAAM,eAAiBA,EAAM,0BAC9GguB,MAAUoD,EAAM,MAAO,CACnB,MAAAG,EAAQ5E,GAAarjF,CAAM,EACjC,GAAIioF,EAAO,CACH,MAAAR,EAAOQ,EAAM,sBAAsB,EACzC1d,EAAM,MAAQkd,EAAK,MACnBJ,EAAO,MAAQI,EAAK,OACtB,SAEIO,EAAS,CACL,MAAAE,EAAgB1zD,GAAQwzD,CAAO,EAC/Bzd,EAAA,MAAQ2d,EAAc,OAAO,CAACC,EAAK,CAAE,WAAAC,KAAiBD,EAAMC,EAAY,CAAC,EACxEf,EAAA,MAAQa,EAAc,OAAO,CAACC,EAAK,CAAE,UAAAE,KAAgBF,EAAME,EAAW,CAAC,OAExE9d,EAAA,MAAQ7T,EAAM,YAAY,MACzB2wB,EAAA,MAAQ3wB,EAAM,YAAY,MAGvC,EACAjiD,CACF,EACAquE,GAAa,IAAM,CACX,MAAA4E,EAAMrE,GAAarjF,CAAM,EAC3B0nF,IACFnd,EAAM,MAAQ,gBAAiBmd,EAAMA,EAAI,YAAcE,EAAY,MACnEP,EAAO,MAAQ,iBAAkBK,EAAMA,EAAI,aAAeE,EAAY,OACxE,CACD,EACD,MAAMU,EAAQzoE,GACZ,IAAMwjE,GAAarjF,CAAM,EACxB0nF,GAAQ,CACDnd,EAAA,MAAQmd,EAAME,EAAY,MAAQ,EACjCP,EAAA,MAAQK,EAAME,EAAY,OAAS,EAE9C,EACA,SAASvD,GAAO,CACR0D,EAAA,EACAO,EAAA,EAED,OACL,MAAA/d,EACA,OAAA8c,EACA,KAAAhD,CACF,CACF,CA64FA,SAASkE,GAAkBroF,EAAKsoF,EAAc/zE,EAAU,GAAI,CAC1D,KAAM,CAAE,OAAAiwE,EAAStB,EAAkB,EAAA3uE,EAC5B,OAAA+wE,GAAWtlF,EAAKsoF,EAAc9D,GAAU,KAAO,OAASA,EAAO,eAAgBjwE,CAAO,CAC/F,CAyoCA,SAASg0E,GAAUlvE,EAAOrZ,EAAKwoF,EAAMj0E,EAAU,GAAI,CACjD,IAAI1P,EAAI+lB,EAAIq9C,EACN,MACJ,MAAAwgB,EAAQ,GACR,QAAAC,EAAU,GACV,UAAAC,EACA,KAAAtG,EAAO,GACP,aAAAvsD,EACA,WAAA8yD,CAAA,EACEr0E,EACEs0E,EAAKpjC,GAAmB,EACxBqjC,EAAQN,IAASK,GAAM,KAAO,OAASA,EAAG,SAAWhkF,EAAKgkF,GAAM,KAAO,OAASA,EAAG,QAAU,KAAO,OAAShkF,EAAG,KAAKgkF,CAAE,MAAQ5gB,GAAMr9C,EAAKi+D,GAAM,KAAO,OAASA,EAAG,QAAU,KAAO,OAASj+D,EAAG,QAAU,KAAO,OAASq9C,EAAG,KAAK4gB,GAAM,KAAO,OAASA,EAAG,KAAK,GACtQ,IAAIlF,EAAQgF,EACP3oF,IACGA,EAAA,cAER2jF,EAAQA,GAAS,UAAU3jF,EAAI,SAAU,IACzC,MAAM+oF,EAAWv3D,GAASi3D,EAAc,OAAOA,GAAU,WAAaA,EAAMj3D,CAAG,EAAIszD,GAAYtzD,CAAG,EAAhEA,EAC5BhoB,EAAW,IAAMo2E,GAAMvmE,EAAMrZ,CAAG,CAAC,EAAI+oF,EAAQ1vE,EAAMrZ,CAAG,CAAC,EAAI81B,EAC3DkzD,EAAe/oF,GAAU,CACzB2oF,EACEA,EAAW3oF,CAAK,GAClB6oF,EAAMnF,EAAO1jF,CAAK,EAEpB6oF,EAAMnF,EAAO1jF,CAAK,CAEtB,EACA,GAAIyoF,EAAS,CACX,MAAMJ,EAAe9+E,EAAS,EACxBy/E,EAAQvpE,EAAI4oE,CAAY,EAC9B,IAAIY,EAAa,GACjB,OAAAvpE,GACE,IAAMtG,EAAMrZ,CAAG,EACdma,GAAM,CACA+uE,IACUA,EAAA,GACPD,EAAA,MAAQF,EAAQ5uE,CAAC,EACdkK,GAAA,IAAM6kE,EAAa,EAAK,EACnC,CAEJ,EACAvpE,GACEspE,EACC9uE,GAAM,CACD,CAAC+uE,IAAe/uE,IAAMd,EAAMrZ,CAAG,GAAKqiF,IACtC2G,EAAY7uE,CAAC,CACjB,EACA,CAAE,KAAAkoE,CAAK,CACT,EACO4G,CAAA,KAEP,QAAOlsE,EAAS,CACd,KAAM,CACJ,OAAOvT,EAAS,CAClB,EACA,IAAIvJ,EAAO,CACT+oF,EAAY/oF,CAAK,EACnB,CACD,CAEL,2GCzjOA,MAAMoZ,EAAQ8vE,EACRC,EAAQb,GAAUlvE,EAAO,YAAY,EACrCmiE,EAAkBz+D,EAAS,IAAM,cAAAlY,EAAAwU,EAAM,qBAAN,YAAAxU,EAA0B,KAAKG,GAAKA,EAAE,OAASqU,EAAM,YAAW,EACjGgwE,EAAmBtsE,EAAS,WAAO,SAAAlY,EAAAwU,EAAM,qBAAN,YAAAxU,EAA0B,SAAU,GAAK,EAAC,EAC7EykF,EAAkBvsE,EAAS,WAAO,SAAAlY,EAAAwU,EAAM,qBAAN,YAAAxU,EAA0B,SAAU,IAAM,EAAC,EAC7E0kF,EAAkBxsE,EAAS,WAC7B,OAAAusE,GAAmB9N,EAAgB,OAAQ32E,EAAAwU,EAAM,qBAAN,YAAAxU,EAA0B,KAAKG,GAAKA,EAAE,MAAQqU,EAAM,YAAcmiE,GAAA,YAAAA,EAAiB,MAClI,+nDC7BA,MAAMniE,EAAQ8vE,EACRK,EAAeC,GAAmBN,EAAC,kBAAkB,EAErD,CAAE,UAAAxN,EAAW,WAAAC,GAAeL,GAAkBliE,CAAK,EACnD,CAAE,gBAAA2iE,CAAA,EAAoBD,GAAqB1iE,CAAK,EAEhDqwE,EAAW3sE,EAAS,IAAM,CAAC1D,EAAM,YAAcsiE,EAAU,KAAK,EAC9DgO,EAAY5sE,EAAS,IAAM1D,EAAM,YAAcuiE,EAAW,KAAK,EAE/DrpE,EAAMwK,EAAS,IAAM,CACnB,GAAA4sE,EAAU,MAAO,OAAO3N,EAAgB,MAC5C,GAAI0N,EAAS,MAAc,OAAA/N,EAAU,MAAO,IAErC,CACV,EAEKiO,EAAQ7sE,EAAS,IAAM,SACrB,GAAA1D,EAAM,YAAcuiE,EAAW,MAC/B,OAAO/2E,EAAAwU,EAAM,cAAN,MAAAxU,EAAmB,UAAYwU,EAAM,YAAY,WAAYuR,EAAAvR,EAAM,cAAN,YAAAuR,EAAmB,YAE3F,GAAI,CAACvR,EAAM,YAAcsiE,EAAU,MAAO,OAAOA,EAAU,MAAM,WAE1D,CACV,EAEKkO,EAAY9sE,EAAS,KAChB,CACH,KAAM2sE,EAAS,MAAQn3E,EAAI,MAAQ,OACnC,OAAQo3E,EAAU,OAASH,EAAa,QAAU,GAClD,QAASG,EAAU,MAAQ,IAAOH,EAAa,MAAQ,GAAM,OAC7D,MAAO,CAAE,cAAenwE,EAAM,YAAc,WAAY,6BAA8BA,EAAM,WAAY,CAC5G,EACH,2dChEcywE,GAAA,mrGCkCT,MAAAC,EAAiBxB,GADTY,EAC0B,kBAAkB,6zBCM1D,MAAM9vE,EAAQ8vE,EAERa,EAAiBjtE,EAAS,aAAM,OAAA6N,GAAA/lB,EAAAwU,EAAM,YAAN,YAAAxU,EAAiB,KAAUG,KAAE,KAAOqU,EAAM,oBAA1C,YAAAuR,EAA6D,WAAU,sjCCd7G,MAAMvR,EAAQ8vE,EACR,CAAE,WAAAvN,CAAA,EAAeL,GAAkBliE,CAAK,EAExC9G,EAAMwK,EAAS,IAAM,CACvB,GAAI1D,EAAM,YAAcuiE,EAAW,MAAO,OAAOA,EAAW,MAAM,IAE3D,CACV,EAEKgO,EAAQ7sE,EAAS,IAAM,OAAS,QAAAlY,EAAA+2E,EAAW,QAAX,YAAA/2E,EAAkB,cAAe,GAAI,81BCuE3E,MAAMwU,EAAQ8vE,EACRc,EAAWvqE,EAAI,EACf,CAAE,cAAAo8D,EAAe,QAAAJ,GAAYH,GAAkBliE,CAAK,EACpD,CAAE,SAAA6wE,CAAS,EAAIC,GAAc,EACjBptE,EAAS,aAAM,OAAA6N,GAAA/lB,EAAAi3E,EAAc,QAAd,YAAAj3E,EAAqB,aAArB,YAAA+lB,EAAiC,KAAU5lB,KAAE,cAAgBklF,EAAS,MAAQ,SAAW,YAAW,EAC/H,MAAAE,EAAmB7B,GAAUlvE,EAAO,iBAAiB,EACrDgxE,EAAattE,EAAS,IAAO1D,EAAM,WAAa,+BAAiC,MAAU,EAEjG,OAAAsG,GACI,IAAMtG,EAAM,WACHpZ,GAAA,CACI,yBAAgB,UAAU,OAAO,iBAAiB,EAEtDA,IACDgqF,EAAS,MAAQ,OACrB,CAER,k/ECtFA,MAAM5wE,EAAQ8vE,EAER,CAAE,gBAAAnN,EAAiB,gBAAAsO,GAAoBvO,GAAqB1iE,CAAK,0rBClCvE,SAASkxE,IAAiB,CAChB,MAAE,QAAAC,CAAQ,EAAIC,GAAW,EACzBP,EAAWntE,EAAS,IAAM,CAACytE,EAAQ,KAAK,EAExCE,EAAahrE,EAAI,EAAK,EACtBirE,EAAcjrE,EAAI,EAElBC,GAAAuqE,EAAU,IAAMU,GAAW,EAEjC,SAASA,GAAY,CACjBF,EAAW,MAAQ,GACnBC,EAAY,MAAQ,OAGjB,OACH,WAAAD,EACA,YAAAC,EACA,UAAAC,CACJ,CACJ,uICgBA,MAAMvxE,EAAQ8vE,EACRX,EAAOqC,EAEPC,EAAa/tE,EAAS,IAAOrM,EAAO,OAAS2I,EAAM,WAAa,YAAc,aAAc,EAC5Fk9C,EAAU72C,EAAc,EAAE,EAC1BqrE,EAAYrrE,EAAI,EAAK,EACrBhP,EAASgP,EAAI,EAAE,EACfsrE,EAAStrE,EAAwB,EACjC+rB,EAAQ1uB,EAAS,IAAMw5C,EAAQ,KAAK,EAEpC00B,EAAgB7P,GAAiB/hE,EAAM,gBAAgB,EAEzD,IAAA8hE,EACJ,eAAe+P,EAAgB5P,EAAiB,CAG5C,GAFAH,GAAA,MAAAA,EAAiB,QAEb,EAACG,EAED,IACAyP,EAAU,MAAQ,GAClB5P,EAAkB,IAAI,gBACd5kB,EAAA,MAAQ,MAAM00B,EAAc,gBAAgB3P,EAAS,CAAE,OAAQH,GAAA,YAAAA,EAAiB,OAAQ,QAC3F1yE,EAAG,CACR,QAAQ,MAAMA,CAAC,SACjB,CACEsiF,EAAU,MAAQ,GACtB,CAGJprE,GAAMjP,EAAiBzQ,GAAA,CAEfA,IAAU+qF,EAAO,OAErBE,EAAgBjrF,CAAK,EACxB,EAED,SAASkrF,EAASlrF,EAAe,OACxBA,IACL,OAAO,SAAS,OAAO4E,EAAAwU,EAAM,aAAN,YAAAxU,EAAkB,MAAO5E,EAAA,CAGpD,SAASmhF,GAAQ,CACb1wE,EAAO,MAAQ,GACfs6E,EAAO,MAAQ,OACfz0B,EAAQ,MAAQ,CAAC,EACjBiyB,EAAK,oBAAqB,MAAS,o6BC6CvC,MAAMnvE,EAAQ8vE,EAKR,CAAE,EAAAz+D,CAAE,EAAI0gE,GAAU,EAClB,CAAE,WAAAvP,EAAY,cAAAC,EAAe,QAAAJ,CAAQ,EAAIH,GAAkBliE,CAAK,EAChE,CAAE,SAAA6wE,EAAU,OAAA/C,EAAQ,YAAAkE,CAAA,EAAgBlB,GAAc,EAClD,CAAE,WAAAO,EAAY,YAAAC,EAAa,UAAAC,CAAA,EAAcL,GAAe,EAC5CxtE,EAAS,aAAM,OAAA6N,GAAA/lB,EAAAi3E,EAAc,QAAd,YAAAj3E,EAAqB,aAArB,YAAA+lB,EAAiC,KAAU5lB,KAAE,cAAgBklF,EAAS,MAAQ,SAAW,YAAW,EAE/H,MAAAoB,EAAe5rE,EAAI,EAAK,EACxB0qE,EAAmB7B,GAAUlvE,EAAO,iBAAiB,6tGC5I3D,SAAS8wE,IAAgB,CACrB,KAAM,CAAE,QAAAK,EAAS,GAAIa,CAAA,EAAgBZ,GAAW,EAC1CP,EAAWntE,EAAS,IAAM,CAACytE,EAAQ,KAAK,EACxCrD,EAASpqE,EAAS,IAAOmtE,EAAS,MAAQ,GAAK,EAAG,EAEjD,OACH,YAAAmB,EACA,SAAAnB,EACA,OAAA/C,CACJ,CACJ,gICGA,MAAM9tE,EAAQ8vE,EACRkB,EAAattE,EAAS,IAAM,CAC9B,CAAE,2BAA4B1D,EAAM,SAAU,EAC9C,CAAE,0BAA2BkyE,EAAY,KAAM,EAC/CC,EAAU,MACb,EACKC,EAAiB,kBAEjBC,EAAa3uE,EAAS,IAAM,CAC1B,IAAA2N,EAAIrR,EAAM,OAAS,GACnB,IAACA,EAAM,WAAaqR,EAAE,OAAS,EAAG,MAAO,CAACA,CAAC,EAEzC,MAAAoK,EAAUpK,EAAE,MAAM+gE,CAAc,EACtC,OAAK32D,EAEE,MAAM,KAAKA,CAAO,EAAE,OAAiB,CAACmzD,EAAK0D,KAC9C1D,EAAI,KAAK0D,CAAI,EAEN1D,GACR,EAAE,EANgB,CAACv9D,CAAC,CAMlB,CACR,EAIK6gE,EAAcxuE,EAAS,IAAM2uE,EAAW,MAAM,OAAS,GAAKA,EAAW,MAAM,CAAC,EAAE,OAAS,GAAKA,EAAW,MAAM,CAAC,EAAE,OAAS,CAAC,EAE5HF,EAAYzuE,EAAS,IAAM,CAEzB,MAAC1D,EAAM,YAAcA,EAAM,OAAS,IAAI,QAAU,GAGlD,OAAAkyE,EAAY,MAAc,yBAGzBlyE,EAAM,OAAS,IAAI,QAAU,EAAU,yBAGvCA,EAAM,OAAS,IAAI,QAAU,GAAKqyE,EAAW,MAAM,CAAC,EAAE,SAAW,EAAU,yBAGzE,wBACV,klBCrCD,MAAMryE,EAAQ8vE,EACR7/E,EAAOyT,EAAS,IAAO1D,EAAM,KAAO,OAAOA,EAAM,IAAI,EAAI,EAAG,EAC5DuyE,EAAW7uE,EAAS,IAAM,iBAAI,OAAOlY,EAAAwU,EAAM,QAAN,YAAAxU,EAAa,SAAU,GAAK,IAAM,GAAG,KAAI,EAC9EgnF,EAAgB9uE,EAAS,KAAO,CAClC,MAAO,GAAGzT,EAAK,KAAK,KACpB,OAAQ,GAAGA,EAAK,KAAK,KACrB,WAAY,GAAGA,EAAK,KAAK,KACzB,cAAesiF,EAAS,OAC1B,saCJF,MAAMvyE,EAAQ8vE,EACRkB,EAAattE,EAAS,IAAM,CAAC,MAAM1D,EAAM,KAAK,EAAE,CAAC,EACjDyyE,EAAQ/uE,EAAS,IAAM,OAAO1D,EAAM,IAAI,EAAI,EAAE,8hBCmC7C,SAAS0yE,GAAsB1yE,EAAgC,CAC5D,MAAE,SAAA4gB,CAAS,EAAIwwD,GAAW,EAC1BuB,EAAiBjvE,EAAS,IAAMkd,EAAS,MAAM,KAAOA,EAAS,MAAM,OAAO,EAC5EgyD,EAAQlvE,EAAS,IAAMkd,EAAS,MAAM,GAAG,EAEzCowD,EAAattE,EAAS,KAAO,CAC/B,4BAA6B1D,EAAM,SACnC,CAAC,4BAA4BA,EAAM,OAAO,EAAE,EAAGA,EAAM,QACrD,CAAC,4BAA4BA,EAAM,OAAO,EAAE,EAAGA,EAAM,SACvD,EAEF,SAAS6yE,EAAgB/mF,EAAqC,CAC1D,MAAMgnF,EAAUpvE,EAAqC,IAAM,cAAAlY,EAAAM,EAAM,QAAN,YAAAN,EAAa,cAAc,YAA6B,EAE7GunF,EAAmBnsF,GAAkB,cAAA4E,EAAAsnF,EAAQ,QAAR,YAAAtnF,EAAe,UAAU,IAAI5E,IAClEosF,EAAoBpsF,GAAkB,cAAA4E,EAAAsnF,EAAQ,QAAR,YAAAtnF,EAAe,UAAU,OAAO5E,IAGtEqsF,EAAU3sE,GACZ,IAAMtG,EAAM,WACZ,CAACpZ,EAAOsmF,IACJliE,GAAS,IAAM,CACPkiE,GACA8F,EAAiB9F,CAAQ,EAGzBtmF,GACAmsF,EAAgBnsF,CAAK,CAE5B,EACT,EAGMssF,EAAoBC,GAAoC,CAC1D,UAAWC,KAAYD,EAAe,CAClC,GAAIC,EAAS,OAAS,cAAgBA,EAAS,gBAAkB,QAC7D,OAGJ,MAAM3sF,EAAS2sF,EAAS,OACpBpzE,EAAM,YAAc,CAACvZ,EAAO,UAAU,SAASuZ,EAAM,UAAU,GAC/D+yE,EAAgB/yE,EAAM,UAAU,CACpC,CAER,EACMqrE,EAAW,IAAI,iBAAiB6H,CAAgB,EAGtD5sE,GAAMwsE,EAAkBlsF,GAAA,CAChBA,GACAykF,EAAS,QAAQzkF,EAAO,CAAE,WAAY,GAAM,EAExCoZ,EAAM,YACN+yE,EAAgB/yE,EAAM,UAAU,IAG1BizE,GAAA,MAAAA,IACV5H,EAAS,WAAW,EACxB,CACH,EAGE,OACH,eAAAsH,EACA,MAAAC,EACA,WAAA5B,EACA,gBAAA6B,CACJ,CACJ,CClIA,IAAItgE,GAAI,OAAO,eACXgB,GAAI,CAAC1B,EAAGG,EAAGX,IAAMW,KAAKH,EAAIU,GAAEV,EAAGG,EAAG,CAAE,WAAY,GAAI,aAAc,GAAI,SAAU,GAAI,MAAOX,EAAG,EAAIQ,EAAEG,CAAC,EAAIX,EACzGzc,GAAI,CAACid,EAAGG,EAAGX,IAAMkC,GAAE1B,EAAG,OAAOG,GAAK,SAAWA,EAAI,GAAKA,EAAGX,CAAC,EAC9D,MAAMqB,GAAI,CACR,IAAK,CAAE,QAAS,OAAS,EACzB,IAAK,CAAE,QAAS,UAAY,EAC5B,IAAK,CAAE,QAAS,aAAa,CAC/B,EAAGc,GAAI,CAAC3B,EAAGG,EAAGX,IAAMQ,EAAE,WAAWG,EAAG,EAAE,EAAE,QAAQX,EAAG,GAAG,EAAE,QAAQ,KAAM,GAAG,EAAE,QAAQ,UAAW,EAAE,EAAG2B,GAAI,CAACnB,EAAGG,EAAGX,IAAM,CAClH,IAAIjiB,EACJ,OAAO,IAAI,KAAK,eAAeA,EAAIiiB,EAAE,SAAW,KAAO,OAASjiB,EAAE,SAAW,KAAM,CACjF,sBAAuByiB,EACvB,sBAAuBG,EACvB,aAAc,OAClB,CAAG,CACH,EAAGpnB,GAAI,CAACinB,EAAGG,EAAI,GAAIX,IAAM,CACvB,IAAIwB,EAAGlmB,EAAG0lB,EAAGH,EACb,MAAM9iB,IAAMyjB,EAAIxB,EAAE,SAAW,KAAO,OAASwB,EAAE,YAAc,IAAMhB,EAAE,WAAW,GAAG,EAAI,IAAM,GAAIld,IAAMhI,EAAI0kB,EAAE,SAAW,KAAO,OAAS1kB,EAAE,WAAa,EACvJ,IAAIolB,EAAIiB,GAAE,EAAGre,EAAG0c,CAAC,EACjB,MAAMpM,EAAI8M,EAAE,cAAc,OAAO,EAAGE,IAAMI,EAAIpN,EAAE,KAAMgH,GAAMA,EAAE,OAAS,OAAO,IAAM,KAAO,OAASoG,EAAE,QAAU,IAAK,IAAMH,EAAIjN,EAAE,KAAMgH,GAAMA,EAAE,OAAS,SAAS,IAAM,KAAO,OAASiG,EAAE,QAAU,IAAK3nB,EAAIipB,GAAE3B,EAAGI,EAAG,CAAC,EACrN,GAAI,OAAO,MAAM,WAAW1nB,CAAC,CAAC,EAAG,OAAO6E,EACxC,MAAM,EAAI7E,EAAE,MAAM,GAAG,EACrB,GAAI,EAAE,CAAC,GAAK,MAAQ,EAAE,CAAC,EAAE,QAAU,EAAG,CACpC,MAAM0hB,EAAI,EAAE,CAAC,EAAE,QAAUtX,EAAI,EAAE,CAAC,EAAE,OAASA,EAC3Cod,EAAIiB,GAAE/G,EAAGtX,EAAG0c,CAAC,CACjB,CACE,IAAIc,EAAIJ,EAAE,OAAO,WAAWxnB,CAAC,CAAC,EAC9B,OAAOynB,EAAIrd,EAAI,GAAKpK,EAAE,SAAS,GAAG,GAAK,CAACA,EAAE,MAAM,EAAG,EAAE,EAAE,SAAS,GAAG,IAAM4nB,GAAK,GAAKA,EAAIqB,GAAErB,EAAGF,EAAG,CAAC,EAAG7iB,EAAI+iB,CACzG,EACA,IAAAkhE,GAAA,KAAQ,CACN,YAAYrhE,EAAI,GAAI,CAClBpd,GAAE,KAAM,OAAQ,EAAE,EAClBA,GAAE,KAAM,OAAwB,IAAI,GAAK,EACzC,MAAMyc,EAAI,CAAE,GAAGW,CAAG,EAClB,GAAIX,EAAE,QAAU,KAAM,CACpBA,EAAE,OAASA,EAAE,cAAgB,CAAE,GAAGA,EAAE,MAAM,EAAK,CAAE,GAAGqB,GAAG,GAAGrB,EAAE,MAAQ,EACpE,UAAWjiB,KAAK,OAAO,OAAOiiB,EAAE,MAAM,EACpC,OAAOjiB,EAAE,SAAW,WAAaA,EAAE,QAAU,IAAI,OAAOA,EAAE,OAAO,EACpE,MACCiiB,EAAE,OAASqB,GACb,MAAM,QAAQrB,EAAE,IAAI,IAAMA,EAAE,KAAK,OAAS,EAAIA,EAAE,KAAO,CAAC,GAAGA,EAAE,IAAI,EAAE,KAAK,CAACjiB,EAAGuF,IAAMvF,EAAE,OAASuF,EAAE,MAAM,EAAI0c,EAAE,KAAOA,EAAE,KAAK,CAAC,GAAK,IAAKA,EAAE,OAAS,KAAOA,EAAE,KAAO,MAAO,KAAK,KAAOA,CACtL,CACE,OAAOW,EAAG,CACR,OAAO,KAAK,QAAQ,OAAOA,CAAC,EAAG,KAAK,SAAS,OAAOA,CAAC,CAAC,CAAC,CAC3D,CACE,SAASA,EAAG,CACV,OAAO,KAAK,QAAQ,OAAOA,CAAC,EAAG,KAAK,SAAS,OAAOA,CAAC,CAAC,EAAG,EAAE,CAC/D,CACE,SAAU,CACR,OAAO,KAAK,KAAK,QAAU,EAC/B,CACE,YAAa,CACX,OAAO,KAAK,KAAK,WAAa,EAClC,CACE,UAAUA,EAAG,CACX,MAAMX,EAAI,KAAK,SAAS,OAAOW,CAAC,CAAC,EACjC,GAAI,KAAK,KAAK,MAAQ,MAAQX,GAAK,KAAM,MAAO,GAChD,MAAMjiB,EAAI,KAAK,QAAQ,OAAO4iB,CAAC,EAAGX,CAAC,EAAE,OACrC,OAAO,OAAO,KAAK,KAAK,MAAQ,SAAWjiB,GAAK,KAAK,KAAK,KAAK,OAASA,GAAKiiB,EAAE,MACnF,CACE,SAASW,EAAG,CACV,MAAMX,EAAI,KAAK,KAAK,KACpB,GAAIA,GAAK,KACP,OAAO,KACT,GAAI,OAAOA,GAAK,SACd,OAAOA,EACT,GAAI,OAAOA,GAAK,WACd,OAAOA,EAAEW,CAAC,EACZ,MAAM5iB,EAAI,KAAK,QAAQ4iB,EAAGX,EAAE,MAAM,EAAE,EAAE,IAAG,GAAM,GAAI,EAAE,EACrD,OAAOA,EAAE,KAAM1c,GAAM,KAAK,QAAQqd,EAAGrd,EAAG,EAAE,EAAE,QAAUvF,EAAE,MAAM,GAAK,EACvE,CACE,WAAW4iB,EAAG,CACZ,MAAMX,EAAI,GAAIjiB,EAAI,CAAE,EACpB,OAAO4iB,EAAE,MAAM,EAAE,EAAE,QAAQ,CAACrd,EAAGod,IAAM,CACnCpd,IAAM,KAAOqd,EAAED,EAAI,CAAC,IAAM,IAAM3iB,EAAE,KAAK2iB,EAAI3iB,EAAE,MAAM,EAAIiiB,EAAE,KAAK1c,CAAC,CACrE,CAAK,EAAG,CAAE,KAAM0c,EAAE,KAAK,EAAE,EAAG,QAASjiB,CAAG,CACxC,CACE,QAAQ4iB,EAAGX,EAAGjiB,EAAI,GAAI,CACpB,GAAI,KAAK,KAAK,QAAU,KAAM,OAAOxE,GAAEonB,EAAG5iB,EAAG,KAAK,IAAI,EACtD,GAAIiiB,GAAK,KAAM,OAAOW,EACtB,MAAMrd,EAAI,KAAKqd,CAAC,OAAOX,CAAC,MAAMjiB,EAAI,EAAI,CAAC,GACvC,GAAI,KAAK,KAAK,IAAIuF,CAAC,EAAG,OAAO,KAAK,KAAK,IAAIA,CAAC,EAC5C,KAAM,CAAE,KAAMod,EAAG,QAAS9M,CAAC,EAAK,KAAK,WAAWoM,CAAC,EAAGY,EAAI,CAAE,EAAE3kB,EAAI,KAAK,KAAK,QAAU,KAAO,KAAK,KAAK,OAAS,GAAI/C,EAAI,KAAK,aAAe,GAAK,EAAGga,EAAI,KAAK,WAAU,EAAK,UAAY,OAAQ4N,EAAI,KAAK,WAAU,EAAK,EAAIJ,EAAE,OAAS,EAAGc,EAAI,KAAK,WAAU,EAAK,IAAM5G,EAAI,IAAM6F,EAAI,GAAK,IAAM7F,EAAI8F,EAAE,QAAUD,EAAIE,EAAE,OAAQrlB,EAAKuC,GAAM,CAAC,KAAK,WAAY,GAAIA,GAAKijB,GAAK,KAAK,WAAU,GAAMjjB,GAAKijB,EAClY,IAAIE,EAAGH,EAAI,GAAIjG,EAAI,KAAK,WAAU,EAAK8F,EAAE,OAAS,EAAI,EAAGD,EAAI,KAAK,aAAeE,EAAE,OAAS,EAAI,EAAGW,EAAI,GACvG,KAAOE,EAAC,GAAM,CACZ,MAAM3jB,EAAI6iB,EAAE,OAAO9F,CAAC,EAAGzM,EAAIlS,EAAE4B,CAAC,EAAGujB,GAAKjT,GAAK,KAAO,OAASA,EAAE,YAAc,KAAOA,EAAE,UAAUwS,EAAE,OAAOF,CAAC,CAAC,EAAIE,EAAE,OAAOF,CAAC,EACvH,GAAI,CAAC7M,EAAE,SAASgH,CAAC,GAAKzM,GAAK,MAAQiT,EAAE,MAAMjT,EAAE,OAAO,GAAK,MAAQyS,EAAE1N,CAAC,EAAEkO,CAAC,EAAGjT,EAAE,UAAY0S,IAAM,GAAKA,EAAIjG,EAAIA,IAAMkG,GAAKlG,IAAMiG,IAAMjG,EAAIiG,EAAI3nB,GAAI4nB,IAAMD,IAAMjG,GAAK1hB,IAAMiV,EAAE,WAAamT,EAAI,GAAI1G,GAAK1hB,GAAI0hB,GAAK1hB,GAAKiV,EAAE,SAAWmT,IAAM1G,GAAK1hB,EAAGunB,GAAKvnB,EAAGooB,EAAI,IAAMF,IAAMJ,EAAIA,EAAI,OAAS7S,EAAE,WAAayM,GAAK1hB,EAAGunB,GAAKvnB,GAAIunB,GAAKvnB,IAAM6E,GAAK,CAAC,KAAK,QAAS,GAAI6iB,EAAE1N,CAAC,EAAErV,CAAC,EAAGujB,IAAMvjB,GAAK,CAAC,KAAK,QAAS,EAAG4iB,GAAKvnB,EAAI8nB,EAAInjB,EAAG,KAAK,QAAO,IAAO+c,GAAK1hB,IAAK,KAAK,QAAS,EACrb,KAAOoC,EAAEsf,CAAC,IAAM3e,EAAEykB,EAAE,OAAO9F,CAAC,CAAC,GAAK,MAAQhH,EAAE,SAASgH,CAAC,IAAM,CAC1D,GAAI7c,GACF,GAAI6iB,EAAE1N,CAAC,EAAEwN,EAAE,OAAO9F,CAAC,CAAC,EAAG+F,EAAE,OAAOF,CAAC,IAAMC,EAAE,OAAO9F,CAAC,EAAG,CAClDA,GAAK1hB,EAAGunB,GAAKvnB,EACb,QACd,OACiBwnB,EAAE,OAAO9F,CAAC,IAAM+F,EAAE,OAAOF,CAAC,IAAMA,GAAKvnB,GAC5C0hB,GAAK1hB,CACf,CACA,CACI,OAAO,KAAK,KAAK,IAAIoK,EAAGsd,EAAE,KAAK,EAAE,CAAC,EAAG,KAAK,KAAK,IAAItd,CAAC,CACxD,CACA,EACA,MAAM6d,GAAKX,GAAM,KAAK,MAAMA,EAAE,WAAW,IAAK,GAAG,CAAC,EAAGwB,GAAI,CAACxB,EAAGG,EAAI,KAAO,CACtE,MAAMX,EAAI,CAAE,GAAGW,CAAG,EAClBH,EAAE,QAAQ,OAAS,MAAQA,EAAE,QAAQ,QAAU,KAAOR,EAAE,KAAO1lB,GAAEkmB,EAAE,QAAQ,KAAK,GAAIA,EAAE,QAAQ,YAAc,OAASR,EAAE,MAAQvQ,GAAE+Q,EAAE,QAAQ,UAAU,GAAIA,EAAE,QAAQ,eAAiB,OAASR,EAAE,SAAWvQ,GAAE+Q,EAAE,QAAQ,aAAa,GAAIA,EAAE,QAAQ,oBAAsB,OAASR,EAAE,cAAgBvQ,GAAE+Q,EAAE,QAAQ,kBAAkB,GAAIA,EAAE,QAAQ,aAAe,OAASR,EAAE,OAASkD,GAAE1C,EAAE,QAAQ,WAAW,GACxY,MAAMziB,EAAI,CAAE,EACZ,OAAOyiB,EAAE,QAAQ,mBAAqB,OAASziB,EAAE,OAASyiB,EAAE,QAAQ,mBAAoBA,EAAE,QAAQ,qBAAuB,OAASziB,EAAE,SAAW,SAASyiB,EAAE,QAAQ,mBAAmB,GAAIA,EAAE,QAAQ,qBAAuB,OAASziB,EAAE,SAAW0R,GAAE+Q,EAAE,QAAQ,mBAAmB,IAAKA,EAAE,QAAQ,aAAe,MAAQ,OAAO,OAAOziB,CAAC,EAAE,OAAS,KAAOiiB,EAAE,OAASjiB,GAAIiiB,CACvW,EAAGvQ,GAAK+Q,GAAMA,IAAM,GAAK,CAAC,CAAC,KAAK,MAAMA,CAAC,EAAI,GAAIlmB,GAAKkmB,GAAMA,EAAE,WAAW,GAAG,GAAKA,EAAE,SAAS,GAAG,EAAIW,GAAEX,CAAC,EAAIA,EAAG0C,GAAK1C,GAAM,CACpH,GAAIA,EAAE,WAAW,GAAG,GAAKA,EAAE,SAAS,GAAG,EACrC,OAAOW,GAAEX,CAAC,EACZ,MAAMG,EAAI,CAAE,EACZ,OAAOH,EAAE,MAAM,GAAG,EAAE,QAASR,GAAM,CACjC,MAAMjiB,EAAIiiB,EAAE,MAAM,GAAG,EACrBW,EAAE5iB,EAAE,CAAC,CAAC,EAAI,CACR,QAAS,IAAI,OAAOA,EAAE,CAAC,CAAC,EACxB,SAAUA,EAAE,CAAC,IAAM,WACnB,SAAUA,EAAE,CAAC,IAAM,WACnB,SAAUA,EAAE,CAAC,IAAM,UACpB,CACF,GAAG4iB,CACN,EACA,IAAAshE,GAAA,KAAQ,CACN,YAAYthE,EAAGX,EAAI,GAAI,CACrBzc,GAAE,KAAM,QAAyB,IAAI,GAAK,EAC1CA,GAAE,KAAM,sBAAsB,EAC9BA,GAAE,KAAM,UAAYod,GAAM,CACxB,GAAIA,aAAa,aAAeA,EAAE,OAAS,SAAW,CAACA,EAAE,WAAa,CAACA,EAAE,QACvE,OACF,MAAMX,EAAIW,EAAE,OAAQ5iB,EAAI,KAAK,MAAM,IAAIiiB,CAAC,EAAG,EAAI,cAAeW,GAAKA,EAAE,UAAU,WAAW,QAAQ,EAAGD,EAAI3iB,EAAE,QAAS,EAAE6V,EAAI,GAAK8M,GAAK3iB,EAAE,SAASiiB,EAAE,KAAK,IAAM,GAAK,GAAKA,EAAE,MACxK,KAAK,UAAUA,EAAG,EAAG,IAAM,KAAK,SAASA,EAAGpM,CAAC,CAAC,CACpD,CAAK,EACD,KAAK,QAAUoM,EAAG,KAAK,qBAAuB,IAAI,gBAAmB,KAAK,KAAK,KAAK,UAAUW,CAAC,CAAC,CACpG,CACE,OAAOA,EAAI,GAAI,CACb,KAAK,QAAU,CAAE,GAAGA,CAAC,EAAI,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,KAAM,EAAC,CACpE,CACE,YAAYA,EAAG,CACbA,EAAE,QAAU,IAAMA,EAAE,QAAU,KAAK,aAAaA,CAAC,EAAE,QAAU,KAAK,SAASA,EAAGA,EAAE,KAAK,CACzF,CACE,SAAU,CACR,KAAK,qBAAqB,MAAK,EAAI,KAAK,MAAM,MAAO,CACzD,CACE,KAAKA,EAAG,CACN,MAAMX,EAAI,KAAK,WAAW,KAAK,OAAO,EACtC,UAAWjiB,KAAK4iB,EAAG,CACjB,GAAI,CAAC,KAAK,MAAM,IAAI5iB,CAAC,EAAG,CACtB,KAAM,CAAE,OAAQ2iB,CAAG,EAAG,KAAK,qBAC3B3iB,EAAE,iBAAiB,QAAS,KAAK,QAAS,CAAE,QAAS,GAAI,OAAQ2iB,EAAG,CAC5E,CACM,MAAMpd,EAAI,IAAIif,GAAEP,GAAEjkB,EAAGiiB,CAAC,CAAC,EACvB,KAAK,MAAM,IAAIjiB,EAAGuF,CAAC,EAAG,eAAe,IAAM,KAAK,YAAYvF,CAAC,CAAC,EAAGA,EAAE,iBAAmB,MAAQuF,EAAE,QAAO,GAAM,QAAQ,KAAK,6CAA8CvF,EAAE,IAAI,CACpL,CACA,CACE,UAAU4iB,EAAG,CACX,OAAO,OAAOA,GAAK,SAAW,MAAM,KAAK,SAAS,iBAAiBA,CAAC,CAAC,EAAI,WAAYA,EAAI,MAAM,KAAKA,CAAC,EAAI,CAACA,CAAC,CAC/G,CACE,WAAWA,EAAG,CACZ,KAAM,CAAE,QAASX,EAAG,WAAYjiB,EAAG,YAAauF,EAAG,GAAGod,CAAC,EAAKC,EAC5D,OAAOD,CACX,CACE,UAAUC,EAAGX,EAAGjiB,EAAG,CACjB,MAAMuF,EAAIqd,EAAE,eAAgBD,EAAIC,EAAE,MAClC,GAAI5iB,EAAC,EAAIuF,IAAM,MAAQA,IAAMod,EAAE,QAAU,CAACV,EAAG,OAC7C,MAAMpM,EAAI+M,EAAE,MAAOC,EAAIF,EAAE,MAAM,EAAGpd,CAAC,EAAGrH,EAAI2X,EAAE,MAAM,EAAGtQ,CAAC,EAAGpK,EAAI,KAAK,aAAaynB,EAAGC,CAAC,EAAE,SAAU1N,EAAI,KAAK,aAAayN,EAAG1kB,CAAC,EAAE,SAC3H,IAAI6kB,EAAIxd,EACRsd,IAAM3kB,IAAM6kB,GAAKd,EAAIpM,EAAE,OAAS8M,EAAE,OAASxnB,EAAE,OAASga,EAAE,QAASyN,EAAE,kBAAkBG,EAAGA,CAAC,CAC7F,CACE,SAASH,EAAGX,EAAG,CACb,MAAMjiB,EAAI,KAAK,aAAa4iB,EAAGX,CAAC,EAChCW,EAAE,MAAQ5iB,EAAE,OAAQ,KAAK,QAAQ,SAAW,OAAS,MAAM,QAAQ,KAAK,QAAQ,OAAO,EAAI,KAAK,QAAQ,QAAQ,QAASuF,GAAMA,EAAEvF,CAAC,CAAC,EAAI,KAAK,QAAQ,QAAQA,CAAC,GAAI4iB,EAAE,cAAc,IAAI,YAAY,QAAS,CAAE,OAAQ5iB,CAAG,EAAC,EAAG4iB,EAAE,cAAc,IAAI,YAAY,QAAS,CAAE,OAAQ5iB,EAAE,MAAM,CAAE,CAAC,CAC7R,CACE,aAAa4iB,EAAGX,EAAG,CACjB,MAAMjiB,EAAI,KAAK,MAAM,IAAI4iB,CAAC,EAC1B,IAAIrd,EAAI0c,GAAKW,EAAE,MACf,KAAK,QAAQ,YAAc,OAASrd,EAAI,KAAK,QAAQ,WAAWA,CAAC,GACjE,IAAIod,EAAI3iB,EAAE,OAAOuF,CAAC,EAClB,OAAO,KAAK,QAAQ,aAAe,OAASod,EAAI,KAAK,QAAQ,YAAYA,CAAC,GAAI,CAC5E,OAAQA,EACR,SAAU3iB,EAAE,SAASuF,CAAC,EACtB,UAAWvF,EAAE,UAAUuF,CAAC,CACzB,CACL,CACA,EClLA,MAAMwd,GAAoB,IAAI,QAAWL,GAAI,CAAC,EAAGE,IAAM,CACrD,GAAI,EAAE,KAAO,MAAQ,EAAE,UAAY,KAAM,OACzC,MAAMrd,EAAI,UAAW,EAAE,SAAS,EAAE,KAClC,EAAE,OAAO,EAAE,SAAW,EAAE,SAAS,EAAE,GAAG,EAAIqd,EAAIrd,GAAK,QAAQ,KAAK,+CAAgD,EAAE,GAAG,CACvH,EAAGzF,GAAI,CAAC,EAAG8iB,IAAM,CACf,IAAIC,EACJ,MAAMtd,EAAI,aAAa,iBAAmB,EAAI,EAAE,cAAc,OAAO,EACrE,GAAIA,GAAK,OAASA,GAAK,KAAO,OAASA,EAAE,QAAU,OAAQ,OAC3D,IAAI0c,EAAI,CAAE,EACV,GAAIW,EAAE,OAAS,OAASX,EAAI,OAAOW,EAAE,OAAS,SAAW,CAAE,KAAMA,EAAE,KAAK,EAAK,CAAE,GAAGA,EAAE,KAAK,GAAKA,EAAE,KAAO,KAAM,CAC3G,MAAM/F,EAAK8F,GAAM,CACf,MAAMxN,EAAIyN,EAAE,UAAU,SAAWD,EAAE,SAAWC,EAAE,UAAU,UAAYD,EAAE,UAAYA,EAAE,OACtFD,GAAEE,EAAGzN,CAAC,CACP,EACD8M,EAAE,QAAUA,EAAE,SAAW,KAAOpF,EAAI,MAAM,QAAQoF,EAAE,OAAO,EAAI,CAAC,GAAGA,EAAE,QAASpF,CAAC,EAAI,CAACoF,EAAE,QAASpF,CAAC,CACpG,CACEkG,GAAE,IAAIxd,CAAC,GAAKsd,EAAIE,GAAE,IAAIxd,CAAC,IAAM,MAAQsd,EAAE,OAAOZ,CAAC,EAAIc,GAAE,IAAIxd,EAAG,IAAIkd,GAAEld,EAAG0c,CAAC,CAAC,CACzE,6eC8DA,MAAMrR,EAAQ8vE,EACRyD,EAAanD,iBAAwE,EACrFoD,EAAkBntE,EAAIktE,EAAW,KAAK,EACtCE,EAAUrD,GAAqBN,EAAA,SAAS,EACxC4D,EAAahwE,EAAS,IAAO1D,EAAM,SAAW,OAAS,SAAW,OAAQ,EAC1E2zE,EAAcjwE,EAA2B,KAAO,CAElD,KAAM1D,EAAM,SAAW,QAAU2yE,EAAe,MAAQ,QAAU,WAClE,OAAQ,CACJ,EAAG,CACC,QAAS,SACb,EACA,EAAG,CACC,QAAS,QACT,OAAQ,EACZ,EACA,EAAG,CACC,QAAS,MACT,SAAU,EACd,EACA,EAAG,CACC,QAAS,QACT,SAAU,EACd,EACA,EAAG,CACC,QAAS,QACT,UAAYnxB,GAAgBA,EAAI,YAAY,EAEpD,EACA,MAAO,GACP,YAAc56D,IAENoZ,EAAM,SAAW,QAAU,CAAC2yE,EAAe,QAEvC/rF,EAAM,CAAC,IAAM,KAAOA,EAAM,CAAC,EAAI,MACvBA,IAAM,MAAM,EAAG,CAAC,EAAI,IAAMA,EAAM,MAAM,CAAC,GAInDA,EAAQA,EAAM,MAAM,EAAGA,EAAM,QAAQ,GAAG,EAAI,CAAC,EAAIA,EAAM,MAAMA,EAAM,QAAQ,GAAG,EAAI,CAAC,EAAE,WAAW,IAAK,EAAE,GAGpGA,EACX,EACF,EACI,CAAE,eAAA+rF,EAAgB,MAAAC,EAAO,WAAYgB,EAAgB,gBAAAf,CAAgB,EAAIH,GAAsB1yE,CAAK,EACpGgxE,EAAattE,EAAS,KAAO,CAC/B,GAAGkwE,EAAe,MAClB,2BAA4BH,EAAQ,OACtC,EACII,EAAYnwE,EAAS,CACvB,KAAM,CACF,OAAOwgB,GAAOsvD,EAAgB,MAAOb,EAAe,MAAQ,QAAUe,EAAW,KAAK,CAC1F,EACA,IAAI9sF,EAAO,CAED,MAAAktF,EAAah4E,GAAMlV,EAAO+rF,EAAe,MAAQ,QAAUe,EAAW,MAAOF,EAAgB,KAAK,EACpGnjB,GAAQyjB,CAAU,GAAKC,EAAqBD,CAAU,EACtCN,EAAA,MAAQroF,GAAIqoF,EAAgB,MAAO,CAC/C,MAAOM,EAAW,SAAS,EAC3B,QAASA,EAAW,WAAW,EAC/B,QAAS,EACT,aAAc,EACjB,EAGDE,EAAW,MAAQH,EAAU,KACjC,CACJ,CACH,EACKI,EAAQvwE,EAAS,IAAMwgB,GAAOsvD,EAAgB,MAAOE,EAAW,KAAK,CAAC,EACtEQ,EAAW7tE,EAAqC,EAChD2tE,EAAavsE,GAAWosE,EAAU,KAAK,EAG7CxK,GAASkK,EAAYC,CAAe,EAEpCnK,GAASwK,EAAWG,CAAU,EAExB,MAAAG,EAAYzwE,EAAS,IAAM1D,EAAM,KAAOlE,GAAMkE,EAAM,IAAK,QAASuzE,EAAW,KAAK,CAAC,EACnFa,EAAY1wE,EAAS,IAAM1D,EAAM,KAAOlE,GAAMkE,EAAM,IAAK,QAASuzE,EAAW,KAAK,CAAC,EACnFc,EAAc3wE,EAChB,IACI,CAAC,EACGywE,EAAU,OACV9jB,GAAQ8jB,EAAU,KAAK,IACtB5nB,GAAQgnB,EAAW,MAAOY,EAAU,KAAK,GAAKlb,GAASsa,EAAW,MAAOY,EAAU,KAAK,GAErG,EACMG,EAAc5wE,EAChB,IACI,CAAC,EACG0wE,EAAU,OACV/jB,GAAQ+jB,EAAU,KAAK,IACtB7nB,GAAQgnB,EAAW,MAAOa,EAAU,KAAK,GAAKtb,GAAQya,EAAW,MAAOa,EAAU,KAAK,GAEpG,EAGA,SAASL,EAAqBntF,EAAa,CAMvC,MAJI,EAAAutF,EAAU,OACN9jB,GAAQ8jB,EAAU,KAAK,GAAKlb,GAASryE,EAAOutF,EAAU,KAAK,GAG/DC,EAAU,OACN/jB,GAAQ+jB,EAAU,KAAK,GAAKtb,GAAQlyE,EAAOwtF,EAAU,KAAK,EAG3D,CAGX,SAASG,EAAWx6E,EAAoC,CACpD,MAAMy6E,EAAc,IAAI,KAAKjB,EAAW,KAAK,EACvCkB,EAAOz0E,EAAM,cAEb00E,GADiBF,EAAY,WAAW,EACXC,EAE7BE,GACF56E,IAAc,WACR,EAAE26E,IAAaD,GACfA,EAAOC,GAEXE,GAAU3kB,GAAWukB,EAAaG,EAAU,EAC5CE,GAAc1pF,GAAIypF,GAAS,CAAE,QAAS,EAAG,aAAc,EAAG,EAE5DvkB,GAAQwkB,EAAW,GAAKd,EAAqBc,EAAW,IACxDtB,EAAW,MAAQsB,GACvB,CAGJ,SAASC,GAAe,CACpBP,EAAW,UAAU,EAGzB,SAASQ,GAAe,CACpBR,EAAW,UAAU,EAGzB,SAASS,GAAU,CAEfhB,EAAW,MAAQH,EAAU,MAIjC,SAASoB,GAAS,CACTrC,EAAM,OAGX5nE,GAAS,IAAOuoE,EAAW,MAAQC,EAAgB,KAAM,EAK7D,SAAS0B,GAAW,CAEhBrB,EAAU,MAAQG,EAAW,MAGzB,CAAApB,EAAM,OAGV5nE,GAAS,IAAOuoE,EAAW,MAAQC,EAAgB,KAAM,EAG7D,OAAAX,EAAgBnvE,EAAS,WAAM,OAAAlY,EAAA0oF,EAAS,QAAT,YAAA1oF,EAAgB,IAAG,CAAC,unDClKnD,MAAMwU,EAAQ8vE,EACRyD,EAAanD,iBAAwE,EACrFqD,EAAUrD,GAAqBN,EAAA,SAAS,EACxC,CAAE,eAAA6C,EAAgB,WAAYiB,EAAgB,gBAAAf,CAAgB,EAAIH,GAAsB1yE,CAAK,EAC7FgxE,EAAattE,EAAS,KAAO,CAC/B,GAAGkwE,EAAe,MAClB,2BAA4BH,EAAQ,OACtC,EACI0B,EAAezxE,EAAS,CAC1B,KAAM,CACK,OAAA+vE,EAAQ,OAAS2B,EAAoB,KAChD,EACA,IAAIxuF,EAAO,CACP6sF,EAAQ,MAAQ7sF,CAAA,CACpB,CACH,EAEKyuF,EAAY3xE,EAAS,CACvB,KAAM,CACK,OAAA2rD,GAAWkkB,EAAW,KAAK,CACtC,EACA,IAAI3sF,EAAO,CACI2sF,EAAA,MAAQpoF,GAAIooF,EAAW,MAAO,CACrC,KAAM3sF,EAAM,YAAY,EACxB,MAAOA,EAAM,SAAS,EACtB,KAAMA,EAAM,QAAQ,EACvB,EACL,CACH,EACKotF,EAAatwE,EAAS,CACxB,KAAM,CACF,OAAOwgB,GAAOmxD,EAAU,MAAOr1E,EAAM,MAAM,CAC/C,EACA,IAAIpZ,EAAO,CACP,MAAMktF,EAAah4E,GAAMlV,EAAOoZ,EAAM,OAAQq1E,EAAU,KAAK,EACzDhlB,GAAQyjB,CAAU,IAClBuB,EAAU,MAAQvB,EACtB,CACJ,CACH,EACKwB,EAAgBjvE,EAAI2tE,EAAW,KAAK,EAEpCuB,EAAUlvE,EAAgC,EAC1CmvE,EAAc9xE,EAAS,IAAM,cAAAlY,EAAA+pF,EAAQ,QAAR,YAAA/pF,EAAe,YAAW,EACvD,CAAE,MAAOiqF,CAAA,EAAerH,GAAeoH,EAAa,OAAW,CAAE,IAAK,aAAc,EACpFE,EAAgBhyE,EAAS,IAAM,KAAK,IAAI,IAAK+xE,EAAW,MAAOz1E,EAAM,aAAa,CAAC,EAEnFo1E,EAAsB/uE,EAAI,EAAK,EAC/B,CAAE,iBAAAsvE,GAAqBC,GAAalyE,EAAS,IAAM1D,EAAM,KAAK,CAAC,EAG/D61E,EAAmBnyE,EAAS,IAAMwgB,GAAOmxD,EAAU,MAAO,YAAY,CAAC,EAG7E,SAAStB,EAAqBntF,EAAa,CAEvC,GAAIoZ,EAAM,IAAK,CACX,MAAMm0E,EAAYr4E,GAAMkE,EAAM,IAAK,aAAcpZ,CAAK,EACtD,GAAIypE,GAAQ8jB,CAAS,GAAKlb,GAASryE,EAAOutF,CAAS,EAAU,SAGjE,GAAIn0E,EAAM,IAAK,CACX,MAAMo0E,EAAYt4E,GAAMkE,EAAM,IAAK,aAAcpZ,CAAK,EACtD,GAAIypE,GAAQ+jB,CAAS,GAAKtb,GAAQlyE,EAAOwtF,CAAS,EAAU,SAGzD,SAGX,SAAS0B,GAAmB,CAClB,MAAAhC,EAAah4E,GAAMw5E,EAAc,MAAO3C,EAAe,MAAQ,aAAe3yE,EAAM,OAAQq1E,EAAU,KAAK,EAE7GhlB,GAAQyjB,CAAU,GAAKC,EAAqBD,CAAU,EACtDuB,EAAU,MAAQvB,EAGlBwB,EAAc,MAAQtB,EAAW,KACrC,CAGJ,SAAS+B,GAAiB,CAClBpD,EAAe,QAEnByC,EAAoB,MAAQ,IAGhC,SAASY,GAAiB,CACtBZ,EAAoB,MAAQ,GAI1B,OAAA9uE,GAAA+uE,EAAW,IAAMrqE,GAAS,IAAOsqE,EAAc,MAAQtB,EAAW,KAAM,CAAC,EAE/EnB,EAAgB2C,CAAW,4pDC1F3B,MAAMx1E,EAAQ8vE,EACRyD,EAAanD,GAA2BN,EAAA,YAA2C,EACnFmG,EAAWvyE,EAAS,IAAO1D,EAAM,SAAWqwD,GAAQrwD,EAAM,OAAO,EAAIkkB,GAAOlkB,EAAM,QAAS,YAAY,EAAI,MAAU,EACrHk2E,EAAWxyE,EAAS,IAAO1D,EAAM,SAAWqwD,GAAQrwD,EAAM,OAAO,EAAIkkB,GAAOlkB,EAAM,QAAS,YAAY,EAAI,MAAU,EACrHm2E,EAAWzyE,EAAS,IACtB1D,EAAM,SAAWqwD,GAAQrwD,EAAM,OAAO,GAAKkwD,GAAUlwD,EAAM,QAASuzE,EAAW,KAAK,EAAIrvD,GAAOlkB,EAAM,QAAS,OAAO,EAAI,MAC7H,EACMo2E,EAAW1yE,EAAS,IACtB1D,EAAM,SAAWqwD,GAAQrwD,EAAM,OAAO,GAAKkwD,GAAUlwD,EAAM,QAASuzE,EAAW,KAAK,EAAIrvD,GAAOlkB,EAAM,QAAS,OAAO,EAAI,MAC7H,EACM,CAAE,OAAQ6wE,CAAS,EAAIO,GAAW,EAElCiF,EAAe3yE,EAAS,KAAO,CACjC,WAAY,CAER,QAAS1D,EAAM,OACnB,EACA,MAAO,CACH,QAAS,GACb,EACF,EACIs2E,EAAgBjwE,EAAI,EAAK,EACzBkwE,EAAgBlwE,EAAI,EAAK,EACzBjgB,EAAOigB,EAAkB,EACzBmwE,EAAc9yE,EAAS,WAAM,QAAAlY,EAAApF,EAAK,QAAL,YAAAoF,EAAY,MAAO,KAAI,EACpD,CAAE,MAAOirF,GAAqBrI,GAAeoI,CAAW,EACxDE,EAAkBrwE,EAAuB,EACzC,CAAE,MAAOswE,CAAqB,EAAIvI,IAAe5iF,EAAAkrF,EAAgB,QAAhB,YAAAlrF,EAAuB,IAAK,OAAW,CAAE,IAAK,aAAc,EAC7GkqF,EAAgBhyE,EAAS,IAAOmtE,EAAS,MAAQ4F,EAAiB,MAAQ,KAAK,IAAI,IAAKE,EAAqB,KAAK,CAAE,EAEpHtB,EAAY3xE,EAAS,CACvB,KAAM,CACK,OAAA2rD,GAAWkkB,EAAW,KAAK,CACtC,EACA,IAAI3sF,EAAO,CACI2sF,EAAA,MAAQpoF,GAAIooF,EAAW,MAAO,CACrC,KAAM3sF,EAAM,YAAY,EACxB,MAAOA,EAAM,SAAS,EACtB,KAAMA,EAAM,QAAQ,EACvB,EACL,CACH,EAEKitF,EAAYnwE,EAAS,CACvB,KAAM,CACF,OAAO6vE,EAAW,KACtB,EACA,IAAI3sF,EAAO,CACD,MAAAktF,EAAatmB,GAAO5mE,CAAK,EAC3BypE,GAAQyjB,CAAU,IACPP,EAAA,MAAQpoF,GAAIooF,EAAW,MAAO,CACrC,MAAOO,EAAW,SAAS,EAC3B,QAASA,EAAW,WAAW,EAC/B,QAAS,EACT,aAAc,EACjB,EACL,CACJ,CACH,0yCCrGD,MAAM9zE,EAAQ8vE,EACR8G,EAAiBxG,iBAA0B,EAC3CjB,EAAOqC,EAEP,CAAE,EAAAngE,EAAG,GAAAw9B,CAAG,EAAIuB,GAAQ,EACpBymC,EAASxwE,EAAI,EAAK,EAClB,CAAE,OAAAywE,CAAO,EAAI1F,GAAW,EAExB2F,EAAoBrzE,EAAS,IAAM,CAACkzE,GAAmBA,EAAe,OAAS,CAAC52E,EAAM,gBAAgB,SAAS42E,EAAe,MAAM,IAAI,CAAE,EAC1II,EAAetzE,EAAS,IACtBkzE,GAAA,MAAAA,EAAgB,OAAS52E,EAAM,gBAAgB,SAAS42E,EAAe,MAAM,IAAI,EAE1E/nC,EAAG+nC,EAAe,MAAM,OAAO,EAAIvlE,EAAEulE,EAAe,MAAM,OAAO,EAAIA,EAAe,MAAM,QAG9FvlE,EAAE,gCAAiC,oEAAoE,CACjH,EAED4lE,GAAuB99E,IAEnBg2E,EAAK,gBAAiBh2E,CAAG,EAClB,CAAC6G,EAAM,gBACjB,EAEDozC,GAAU,IAAM,CACN9sC,GAAAswE,EAAgB,CAAChwF,EAAOsmF,IAAa,CACnCtmF,IAAU,MAAQA,IAAUsmF,IAC5B,QAAQ,MAAMtmF,CAAK,EACnBiwF,EAAO,MAAQ,GACnB,CACH,EACJ,EAED,SAASK,GAAU,CACf/H,EAAK,QAAQ,EAIjB,OAAA7oE,GAAMuwE,EAAiBjwF,GAAA,CACdA,GAED,WAAW,IAAM,CACbgwF,EAAe,MAAQ,KACvBzH,EAAK,cAAc,GACpB,GAAG,CAEV,CACH,8+BC5DD,MAAMxpE,EAAQwxE,GAAS,EACjBC,EAAaC,GAAO,YAAY1xE,CAAK,EACrCqrE,EAAattE,EAAS,KAAO,CAAE,qBAAsB,CAAC,CAACiC,EAAM,OAAQ,giBChCrEirD,GAAuB,CAC3B,iBAAkB,CAChB,IAAK,wBACL,MAAO,+BACR,EAED,SAAU,CACR,IAAK,aACL,MAAO,oBACR,EAED,YAAa,kBAEb,iBAAkB,CAChB,IAAK,wBACL,MAAO,+BACR,EAED,SAAU,CACR,IAAK,aACL,MAAO,oBACR,EAED,YAAa,CACX,IAAK,kBACL,MAAO,yBACR,EAED,OAAQ,CACN,IAAK,UACL,MAAO,iBACR,EAED,MAAO,CACL,IAAK,SACL,MAAO,iBACR,EAED,YAAa,CACX,IAAK,iBACL,MAAO,wBACR,EAED,OAAQ,CACN,IAAK,SACL,MAAO,gBACR,EAED,aAAc,CACZ,IAAK,mBACL,MAAO,2BACR,EAED,QAAS,CACP,IAAK,WACL,MAAO,mBACR,EAED,YAAa,CACX,IAAK,iBACL,MAAO,sBACR,EAED,OAAQ,CACN,IAAK,SACL,MAAO,cACR,EAED,WAAY,CACV,IAAK,cACL,MAAO,mBACR,EAED,aAAc,CACZ,IAAK,gBACL,MAAO,qBACR,CACH,EAEaC,GAAiB,CAACt1D,EAAOi7C,EAAOt7C,IAAY,CACvD,IAAI/O,EAEJ,MAAM2kE,EAAaF,GAAqBr1D,CAAK,EAS7C,OARI,OAAOu1D,GAAe,SACxB3kE,EAAS2kE,EACAta,IAAU,EACnBrqD,EAAS2kE,EAAW,IAEpB3kE,EAAS2kE,EAAW,MAAM,QAAQ,YAAa,OAAOta,CAAK,CAAC,EAG1Dt7C,GAAA,MAAAA,EAAS,UACPA,EAAQ,YAAcA,EAAQ,WAAa,EACtC,MAAQ/O,EAERA,EAAS,SAIbA,CACT,EClGM8kE,GAAc,CAClB,KAAM,iBACN,KAAM,YACN,OAAQ,WACR,MAAO,SACT,EAEMC,GAAc,CAClB,KAAM,sBACN,KAAM,aACN,OAAQ,WACR,MAAO,OACT,EAEMC,GAAkB,CACtB,KAAM,0BACN,KAAM,0BACN,OAAQ,oBACR,MAAO,mBACT,EAEaC,GAAa,CACxB,KAAML,GAAkB,CACtB,QAASE,GACT,aAAc,MAClB,CAAG,EAED,KAAMF,GAAkB,CACtB,QAASG,GACT,aAAc,MAClB,CAAG,EAED,SAAUH,GAAkB,CAC1B,QAASI,GACT,aAAc,MAClB,CAAG,CACH,ECtCME,GAAuB,CAC3B,SAAU,yBACV,UAAW,gBACX,MAAO,gBACP,SAAU,mBACV,SAAU,eACV,MAAO,GACT,EAEaC,GAAiB,CAAC/1D,EAAOuyD,EAAOyD,EAAWC,IACtDH,GAAqB91D,CAAK,ECRtBq2D,GAAY,CAChB,OAAQ,CAAC,QAAS,OAAO,EACzB,YAAa,CAAC,QAAS,OAAO,EAC9B,KAAM,CAAC,cAAe,eAAe,CACvC,EAEMC,GAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAC3B,YAAa,CAAC,KAAM,KAAM,KAAM,IAAI,EACpC,KAAM,CAAC,aAAc,aAAc,aAAc,YAAY,CAC/D,EAEMC,GAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnE,YAAa,CACX,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,MACD,EAED,KAAM,CACJ,SACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,UACD,CACH,EAEMC,GAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAC1C,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAChD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAK,EAC7D,KAAM,CACJ,SACA,SACA,UACA,SACA,UACA,SACA,QACD,CACH,EAEMC,GAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,UACV,KAAM,SACN,QAAS,WACT,UAAW,aACX,QAAS,aACT,MAAO,WACR,EACD,YAAa,CACX,GAAI,OACJ,GAAI,OACJ,SAAU,UACV,KAAM,SACN,QAAS,WACT,UAAW,aACX,QAAS,aACT,MAAO,WACR,EACD,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,UACV,KAAM,SACN,QAAS,cACT,UAAW,mBACX,QAAS,aACT,MAAO,WACR,CACH,EAEME,GAAgB,CAACC,EAAaX,IACnB,OAAOW,CAAW,EACjB,IAGLE,GAAW,CACtB,cAAAH,GAEA,IAAKT,GAAgB,CACnB,OAAQG,GACR,aAAc,MAClB,CAAG,EAED,QAASH,GAAgB,CACvB,OAAQI,GACR,aAAc,OACd,iBAAmBS,GAAYA,EAAU,CAC7C,CAAG,EAED,MAAOb,GAAgB,CACrB,OAAQK,GACR,aAAc,MAClB,CAAG,EAED,IAAKL,GAAgB,CACnB,OAAQM,GACR,aAAc,MAClB,CAAG,EAED,UAAWN,GAAgB,CACzB,OAAQO,GACR,aAAc,MAClB,CAAG,CACH,EC7HMe,GAA4B,aAC5BC,GAA4B,OAE5BC,GAAmB,CACvB,OAAQ,4CACR,YAAa,4CACb,KAAM,mDACR,EACMC,GAAmB,CACvB,IAAK,CAAC,MAAO,KAAK,CACpB,EAEMC,GAAuB,CAC3B,OAAQ,WACR,YAAa,YACb,KAAM,uBACR,EACMC,GAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,IAAI,CAC9B,EAEMC,GAAqB,CACzB,OAAQ,eACR,YAAa,+DACb,KAAM,wFACR,EACMC,GAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACD,EAED,IAAK,CACH,OACA,MACA,QACA,OACA,QACA,QACA,QACA,QACA,MACA,MACA,MACA,KACD,CACH,EAEMC,GAAmB,CACvB,OAAQ,aACR,MAAO,2BACP,YAAa,kCACb,KAAM,wDACR,EACMC,GAAmB,CACvB,IAAK,CAAC,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,KAAK,CACzD,EAEMC,GAAyB,CAC7B,OACE,uEACF,IAAK,gFACP,EACMC,GAAyB,CAC7B,IAAK,CACH,GAAI,oBACJ,GAAI,oBACJ,SAAU,SACV,KAAM,SACN,QAAS,UACT,UAAW,eACX,QAAS,SACT,MAAO,OACR,CACH,EAEa33D,GAAQ,CACnB,cAAe82D,GAAoB,CACjC,aAAcE,GACd,aAAcC,GACd,cAAgBpsE,GAAU,SAASA,EAAO,EAAE,CAChD,CAAG,EAED,IAAK2rE,GAAa,CAChB,cAAeU,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACvB,CAAG,EAED,QAASX,GAAa,CACpB,cAAeY,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,MACnB,cAAgBtjE,GAAUA,EAAQ,CACtC,CAAG,EAED,MAAOyiE,GAAa,CAClB,cAAec,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACvB,CAAG,EAED,IAAKf,GAAa,CAChB,cAAegB,GACf,kBAAmB,OACnB,cAAeC,GACf,kBAAmB,KACvB,CAAG,EAED,UAAWjB,GAAa,CACtB,cAAekB,GACf,kBAAmB,MACnB,cAAeC,GACf,kBAAmB,KACvB,CAAG,CACH,ECpHa4jB,GAAK,CAChB,KAAM,KACN,eAAgBzmB,GAChB,WAAYO,GACZ,eAAgBE,GAChB,SAAUe,GACV,MAAOt2D,GACP,QAAS,CACP,aAAc,EACd,sBAAuB,CACxB,CACH,6+BCzBMw7E,GAAK,CAAC,EAAGtrE,IAAM,CACnB,UAAWoF,KAAK,OAAO,KAAKpF,CAAC,EAC3B,EAAE,GAAGoF,EAAGpF,EAAEoF,CAAC,CAAC,CAChB,EAAGmmE,GAAM,GAAM,CACb,UAAWvrE,KAAK,OAAO,KAAK,CAAC,EAAG,CAC9B,MAAMoF,EAAI,EAAEpF,CAAC,EACboF,GAAKniB,GAAEmiB,EAAE,MAAM,GAAKA,EAAE,OAAQ,CAClC,CACA,EAAGomE,GAAM,GAAM,CAAC,GAAK,OAAO,EAAE,QAAU,WAAa,EAAI,EAAE,OAAO,CAAC,EAAE,YAAW,EAAK,EAAE,MAAM,CAAC,EAAGvoF,GAAK,GAAM,OAAO,GAAK,WAAYmlB,GAAI,CAAC,EAAGpI,EAAGoF,IAAM,CACnJ,UAAWQ,KAAKR,EAAG,CACjB,MAAMW,EAAI,MAAQylE,GAAG5lE,CAAC,EACtB,EAAEG,CAAC,EAAI0lE,GACL,IAAMrmE,EAAEQ,CAAC,EACT,CAACE,EAAGI,IAAM,CACR,EAAEH,CAAC,EAAED,EAAGI,CAAC,CACjB,CACA,EAAQlG,EAAE+F,CAAC,GAAK0lE,GACV,IAAMrmE,EAAEQ,CAAC,EACRE,GAAM,CACL9F,EAAE+F,CAAC,EAAED,CAAC,CACd,CACK,CACL,CACA,EAAGzkB,GAAI,CAAC,EAAG2e,EAAGoF,EAAI,KAAO,CACvB,MAAMQ,EAAI,CAAE,GAAGR,CAAG,EAClB,UAAWW,KAAK,EAAG,CACjB,MAAMD,EAAI9F,EAAE+F,CAAC,EAAGG,EAAI,EAAEH,CAAC,EACvBD,IAAMA,GAAKA,EAAE,SAAW,IAAMI,IAAM,SAAWN,EAAEG,CAAC,EAAIG,GAC1D,CACE,OAAON,CACT,EAAGwB,GAAK,GAAM,CACZ,MAAMpH,EAAI,GAAIoF,EAAI,CAAE,EACpB,UAAWQ,KAAK,EACd,GAAIA,EAAE,WAAW,IAAI,GAAK,CAACA,EAAE,WAAW,UAAU,GAAKA,IAAM,UAAW,CACtE,MAAMG,EAAIH,EAAE,MAAM,CAAC,EAAE,kBAAmB,EACxC5F,EAAE+F,CAAC,EAAI,EAAEH,CAAC,CACX,MACCR,EAAEQ,CAAC,EAAI,EAAEA,CAAC,EACd,MAAO,CAAE,UAAW5F,EAAG,MAAOoF,CAAG,CACnC,EAAGsmE,GAAK,MAAO,GAAM,CACnB,MAAM1rE,EAAI,MAAM,QAAQ,IAAI,CAC1B2rE,GAAA,YAA+C,mBAAAC,EAAA,UAChDD,GAAA,IAAC,uCACDA,GAAA,IAAC,QAA+C,mBAAAE,EAAA,SACnD,CAAG,EACD,OAAO,EAAE,QAAQ,UAAU,YAAa,EAAE,QAAQ,aAAa,CAC7D,cAAe7rE,EAAE,CAAC,EAAE,QACpB,QAASA,EAAE,CAAC,EAAE,QACd,UAAWA,EAAE,CAAC,EAAE,OACpB,CAAG,CACH,EAAGqI,GAAK,GAAM,CACZ,MAAMrI,EAAI6F,EACR,IAAID,IAAM,QAAQ,KAAK,UAAU,CAAC,0CAA0C,CAChF,EAAKR,EAAI,IAAIQ,IAAM5F,EAAE,MAAM,GAAG4F,CAAC,EAC7B,OAAOR,EAAE,QAAUpF,EAAG4G,GAAE,EAAGxB,CAAC,EAAGA,CACjC,EAAGzkB,GAAI,CAAC,EAAGqf,IAAM,EAAE,QAAQ,MAAQA,EAAGrX,GAAI,OAAO,MAAQ,UAAY,KAAK,OAAS,MAAQ,MAAQ,OAAO,QAAU,UAAY,OAAO,SAAW,QAAU,QAAU,WAAY4K,GAAK,GAAM,CAC3L,MAAMyM,EAAIthB,GAAE,CAAC,EACb,GAAIshB,IAAM,OACR,MAAM,IAAI,MACR,qBAAqB,EAAE,WAAW,0BACnC,EACH,OAAOA,CACT,EAAG8rE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,iBAAkBnjF,GAClB,aAAc4K,GACd,kBAAmB+3E,GACnB,gBAAiBC,GACjB,sBAAuBC,GACvB,WAAYvoF,GACZ,YAAamlB,GACb,sBAAuB/mB,GACvB,sBAAuBgnB,GACvB,YAAajB,GACb,iBAAkBskE,GAClB,qBAAsB/qF,EACxB,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAAGqY,GAAI,OAChD,kBACF,EAAGwN,GAAI,OAAO,UAAU,EAAGulE,GAAK,OAAO,aAAa,EAAG9jE,GAAI,OACzD,iBACF,EAAG+jE,GAAK,OACN,sBACF,EAAGC,GAAK,OACN,kBACF,EAAGC,GAAK,OAAO,eAAe,EAAGC,GAAK,OAAO,SAAS,EAAGC,GAAK,OAAO,WAAW,EAAGC,GAAK,OAAO,aAAa,EAAGC,GAAK,OAAO,aAAa,EAAGC,GAAK,OAAO,eAAe,EAAGC,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAChP,UAAW,KACX,kBAAmBhmE,GACnB,mBAAoB4lE,GACpB,qBAAsBC,GACtB,0BAA2BJ,GAC3B,yBAA0BhkE,GAC1B,8BAA+B+jE,GAC/B,qBAAsBD,GACtB,iBAAkBI,GAClB,uBAAwBD,GACxB,qBAAsBI,GACtB,uBAAwBC,GACxB,0BAA2BvzE,EAC7B,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAGsP,GAAI,CAChD,QAAS,CACP,KAAM,OACN,QAAS,KAAO,IAChB,OAAQ,EACZ,CACA,EAAGC,GAAK,IAAO,CAAE,QAAS,EAAE,QAAS,QAAS,EAAI,GAAGmB,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC5H,UAAW,KACX,eAAgBpB,GAChB,eAAgBC,EAClB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAG5B,GAAI,CAChD,GAAG2B,GACH,KAAM,CACJ,KAAM,MACP,EACD,YAAa,CACX,KAAM,MACP,EACD,KAAM,CACJ,KAAM,OACN,OAAQ,EACT,EACD,UAAW,CACT,KAAM,OACN,OAAQ,EACT,EACD,QAAS,CACP,KAAM,QACN,OAAQ,GACR,QAAS,EACb,CACA,EAAGZ,GAAI,CAAC,EAAG1H,EAAGoF,IAAM,CAClB,MAAMQ,EAAIrS,GAAEiT,EAAC,EAAGT,EAAIxS,GAAEw4E,EAAE,EAAG,CAAE,QAASjmE,EAAG,QAASI,CAAG,EAAGqC,GAAE,CAAC,EAAG7f,EAAIrH,GAChE,EACAslB,GACAb,CACJ,EAAKxnB,EAAI,IAAMsnB,EAAE,CAAE,cAAe5F,EAAE,MAAO,EAAGgG,EAAI,IAAMD,EAAE,CAAE,cAAe/F,EAAE,KAAK,CAAE,EAAGiG,EAAI,CACvF,GAAGC,EACH,eAAexlB,EAAG,CAChBslB,EAAG,EAAEhG,EAAE,MAAM,QAAQ,YAActf,EAAG,EAAE,SAAWpC,EAAG,CACvD,EACD,SAAU,CACR0nB,IAAK,EAAE,SAAW1nB,EAAG,CACtB,EACD,cAAe,CACb0nB,IAAK,EAAE,SAAW1nB,EAAG,CACtB,EACD,WAAWoC,EAAG,CACZsf,EAAE,QAAUtf,EAAIpC,EAAG,EAAG0nB,EAAC,EACxB,EACD,UAAUtlB,EAAG,CACX,GAAI,CAACsf,EAAE,OAAS,CAAC/c,GAAE+c,EAAE,MAAM,SAAS,EAAG,CACrC,QAAQ,KACN,mEACD,EACD,MACR,CACMA,EAAE,MAAM,UAAUtf,CAAC,CACpB,EACD,YAAYA,EAAG,CACb,GAAI,CAACsf,EAAE,OAAS,CAAC/c,GAAE+c,EAAE,MAAM,WAAW,EAAG,CACvC,QAAQ,KACN,uEACD,EACD,MACR,CACMA,EAAE,MAAM,YAAYtf,CAAC,CACtB,EACD,eAAgB,CACdsf,EAAE,QAAU/c,GAAE+c,EAAE,MAAM,YAAY,GAAKA,EAAE,MAAM,aAAY,EAAI/c,GAAE+c,EAAE,MAAM,aAAa,GAAKA,EAAE,MAAM,gBACpG,EACD,aAAc,CACZA,EAAE,QAAU/c,GAAE+c,EAAE,MAAM,UAAU,GAAKA,EAAE,MAAM,WAAU,EAAI/c,GAAE+c,EAAE,MAAM,WAAW,GAAKA,EAAE,MAAM,cAC9F,EACD,kBAAkBtf,EAAG,CACnB0kB,EAAE,KAAK,iBAAkB1kB,CAAC,CAChC,CACG,EACD,OAAOkmB,GAAEwlE,GAAInmE,EAAE,SAAS,EAAGW,GAAEylE,GAAIpmE,EAAE,WAAW,EAAGW,GAAE0lE,GAAIrmE,EAAE,WAAW,EAAGW,GAAE2lE,GAAItmE,EAAE,aAAa,EAAGwmE,GAAG,IAAM,CACtGxmE,EAAE,YAAa,EAAEA,EAAE,cAAa,EAAID,EAAG,CACxC,GAAG,CAAE,QAAStd,EAAG,QAASud,CAAG,CAChC,EAAG6B,GAAI,CAAC,EAAG9H,IAAM,CACf,GAAI,GAAKA,EAAE,QACT,OAAOkI,GAAE,MAAO,CAAE,MAAO,CAAE,QAAS,OAAU,EAAElI,EAAE,SAAS,CAC/D,EAAG4J,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,WAAYjD,GACZ,OAAQmB,GACR,WAAYJ,EACd,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAGglE,GAAK,CACjD,GAAG/lE,GACH,YAAa,CACX,KAAM,QACN,QAAS,MACV,EACD,oBAAqB,CACnB,KAAM,QACN,QAAS,MACb,CACA,EAAGgmE,GAAK,CAAC,EAAG3sE,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG2B,GACjC,EACA1H,EACAoF,CACD,EACD,MAAO,CAAE,QAAS/jB,GAChB,EACAqrF,GACA9mE,CACJ,EAAK,QAASG,CAAG,CACjB,EAAGqD,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,sBAAuBsjE,GACvB,sBAAuBC,EACzB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAGC,GAAK,CACjD,GAAGF,GACH,OAAQ,CACN,KAAM,QACN,QAAS,MACV,EACD,MAAO,CACL,KAAM,MACP,EACD,OAAQ,CACN,KAAM,MACP,EACD,QAAS,CACP,KAAM,MACP,EACD,QAAS,CACP,KAAM,MACP,EACD,SAAU,CACR,KAAM,MACP,EACD,UAAW,CACT,KAAM,MACP,EACD,WAAY,CACV,KAAM,MACP,EACD,KAAM,CACJ,KAAM,QACN,QAAS,MACV,EACD,UAAW,CACT,KAAM,MACP,EACD,YAAa,CACX,KAAM,MACP,EACD,SAAU,CACR,KAAM,MACP,EACD,UAAW,CACT,KAAM,MACV,CACA,EAAGjnE,GAAK,CAAC,EAAGzF,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG4mE,GAAG,EAAG3sE,EAAGoF,CAAC,EAAGU,EAAIzkB,GAClD,EACAurF,GACAhnE,CACD,EAAEM,EAAI3S,GAAEw4E,EAAE,EAAGrjF,EAAI,CAChB,GAAGqd,EACH,UAAUznB,EAAG,CACX0hB,EAAE,MAAM,SAAS,CAAE,OAAQ1hB,CAAC,CAAE,CAC/B,EACD,SAASA,EAAG,CACV0hB,EAAE,MAAM,SAAS,CAAE,MAAO1hB,CAAC,CAAE,CAC9B,EACD,UAAUA,EAAG,CACX0hB,EAAE,MAAM,SAAS,CAAE,OAAQ1hB,CAAC,CAAE,CAC/B,EACD,WAAWA,EAAG,CACZ0hB,EAAE,MAAM,SAAS,CAAE,QAAS1hB,CAAC,CAAE,CAChC,EACD,WAAWA,EAAG,CACZ0hB,EAAE,MAAM,SAAS,CAAE,QAAS1hB,CAAC,CAAE,CAChC,EACD,YAAYA,EAAG,CACb0hB,EAAE,MAAM,SAAS,CAAE,SAAU1hB,CAAC,CAAE,CACjC,EACD,aAAaA,EAAG,CACd0hB,EAAE,MAAM,SAAS,CAAE,UAAW1hB,CAAC,CAAE,CAClC,EACD,cAAcA,EAAG,CACf0hB,EAAE,MAAM,SAAS,CAAE,WAAY1hB,CAAC,CAAE,CACnC,EACD,QAAQA,EAAG,CACT0hB,EAAE,MAAM,SAAS,CAAE,KAAM1hB,CAAC,CAAE,CAC7B,EACD,aAAaA,EAAG,CACd0hB,EAAE,MAAM,SAAS,CAAE,UAAW1hB,CAAC,CAAE,CAClC,EACD,eAAeA,EAAG,CAChB0hB,EAAE,MAAM,SAAS,CAAE,YAAa1hB,CAAC,CAAE,CACpC,EACD,YAAYA,EAAG,CACb0hB,EAAE,MAAM,SAAS,CAAE,SAAU1hB,CAAC,CAAE,CACjC,EACD,aAAaA,EAAG,CACd0hB,EAAE,MAAM,SAAS,CAAE,UAAW1hB,CAAC,CAAE,CACvC,CACG,EACD,OAAOipB,GAAE,IAAM,CACbrB,EAAE,CAAE,cAAelG,EAAE,KAAK,CAAE,CAC7B,GAAG,CAAE,QAAS8F,EAAG,QAASpd,CAAG,CAChC,EAAG2iB,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,UAAWuhE,GACX,UAAWnnE,EACb,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAG9V,GAAK,CACjD,GAAGi9E,GAIH,OAAQ,CACN,KAAM,MACP,EACD,OAAQ,CACN,KAAM,CAAC,OAAQ,KAAK,EACpB,SAAU,GACV,OAAQ,EACZ,CACA,EAAGC,GAAK,CAAC,EAAG7sE,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAGN,GACjC,EACAzF,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACAsO,GACAiW,CACD,EAAEM,EAAI,CACL,GAAGH,EACH,UAAUrd,EAAG,CACXsX,EAAE,MAAM,UAAUtX,CAAC,CACpB,EACD,UAAUA,EAAG,CACXsX,EAAE,MAAM,UAAUtX,CAAC,CACzB,CACG,EACD,MAAO,CAAE,QAASod,EAAG,QAASI,CAAG,CACnC,EAAGoD,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,kBAAmB3Z,GACnB,kBAAmBk9E,EACrB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAGC,GAAK,CACjD,GAAGn9E,GAIH,OAAQ,CACN,KAAM,MACV,CACA,EAAGo9E,GAAK,CAAC,EAAG/sE,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG8mE,GAAG,EAAG7sE,EAAGoF,CAAC,EAAGU,EAAIzkB,GAClD,EACAyrF,GACAlnE,CACD,EAAEM,EAAI,CACL,GAAGH,CACJ,EACD,MAAO,CAAE,QAASD,EAAG,QAASI,CAAG,CACnC,EAAGgF,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,YAAa4hE,GACb,YAAaC,EACf,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAAGC,GAAK1lE,GAAE,CACnD,KAAM,UACN,MAAOwlE,GACP,MAAM,EAAG9sE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,EAAG,QAASxd,CAAC,EAAKqkF,GAAG,EAAG3nE,EAAGpF,CAAC,EACrF,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,OAAQ/F,CAAG,EAAGynB,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC3EvmE,EAAE,MAAQiB,GAAE/nB,EAAE,EAAE,OAAQ4nB,CAAC,CAAC,EAC1B,KAAM,CAAE,UAAWF,CAAC,EAAKoB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGY,CAAC,EAAGoC,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGpd,EACH,cAAe0c,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAGmlE,GAAK3lE,GAAE,CACT,KAAM,gBACN,MAAO3X,GACP,MAAM,EAAGqQ,EAAG,CACV,MAAMoF,EAAIS,EAAC,EAAID,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,EAAG,QAASxd,CAAC,EAAKmkF,GACzE,EACAznE,EACApF,CACD,EACD,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,aAAc/F,CAAG,EAAGynB,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MACjFvmE,EAAE,MAAQiB,GACR/nB,EAAE,EAAE,OAAQ4nB,CAAC,CACd,EACD,KAAM,CAAE,UAAWF,CAAC,EAAKoB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGY,CAAC,EAAGoC,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGpd,EACH,cAAe0c,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAGH,GAAI,CACN,GAAGW,GACH,SAAU,CACR,KAAM,MACV,CACA,EAAGN,GAAI,CAAC,EAAGhI,IAAM,CACf,KAAM,CAAE,QAASoF,EAAG,QAASQ,CAAG,EAAG2C,GAAE,CAAC,EAAGxC,EAAI1kB,GAC3C,EACAsmB,GACAvC,CACD,EAAEU,EAAI,CACL,GAAGF,EACH,YAAYM,EAAG,CACblG,EAAE,OAASA,EAAE,MAAM,YAAYkG,CAAC,CACtC,CACG,EACD,OAAOumE,GAAG,IAAM,CACdzsE,EAAE,OAASA,EAAE,MAAM,OAAQ,CAC5B,GAAG,CAAE,QAAS+F,EAAG,QAASD,CAAG,CAChC,EAAGonE,GAAM,GAAM,EAAE,QAAUhlE,GAAE,MAAO,CAAE,IAAK,MAAQ,EAAE,EAAE,SAAS,EAAI,KAAM8B,GAAqB,OAAO,OAAuB,OAAO,eAAe,CACjJ,UAAW,KACX,aAAcrC,GACd,eAAgBulE,GAChB,aAAcllE,EAChB,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAAGmlE,GAAK7lE,GAAE,CACnD,KAAM,WACN,MAAO,CACL,GAAGK,GACH,wBAAyB,CACvB,KAAM,QACN,OAAQ,GACR,QAAS,EACV,EACD,yBAA0B,CACxB,KAAM,QACN,OAAQ,GACR,QAAS,EACf,CACG,EACD,MAAM,EAAG3H,EAAG,CACV,MAAMoF,EAAIS,EAAG,EAAED,EAAIC,EAAG,EAAEE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAE0U,EAAC,EAAG,CAAE,QAAS/B,EAAG,QAASxd,GAAMsf,GAAE,EAAG5C,CAAC,EAC/E,OAAO/gB,GAAE,SAAY,CACnB,KAAM,CAAE,QAAS/F,EAAG,SAAU0nB,CAAC,EAAKD,EAAIpd,GAAE,EAAI,MAAKgjF,GAAA,IAAC,OAAO,SAA8B,MAAG1lE,EAAI3nB,EAAE,OAAO,CACvG,OAAQ,CACN,OAAOsnB,EAAE,KACnB,CACA,CAAO,EACDR,EAAE,MAAQiB,GAAE,IAAIJ,EAAEC,CAAC,CAAC,EAAGkC,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAAGU,EAAE,CAAE,cAAeV,EAAE,MAAO,EAAG,EAAE,yBAA2BQ,EAAE,OAASI,EAAE,wBAAwBJ,EAAE,KAAK,EAAG,EAAE,0BAA4BA,EAAE,OAASI,EAAE,yBAAyBJ,EAAE,KAAK,EAAGQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnQ,GAAG,CAAE,KAAMQ,EAAG,cAAeR,CAAG,CAClC,EACD,QAAS,CACP,OAAO8nE,GAAG,KAAK,MAAM,CACzB,CACA,CAAC,EAAGE,GAAK,CACP,GAAGzlE,GACH,OAAQ,CACN,KAAM,MACV,CACA,EAAG0lE,GAAK,CAAC,EAAGrtE,IAAM,CAChB,KAAM,CAAE,QAASoF,EAAG,QAASQ,CAAG,EAAGoC,GACjC,EACAhI,CACD,EAAE+F,EAAI1kB,GACL,EACA+rF,GACAhoE,CACD,EAAEU,EAAI,CACL,GAAGF,EACH,UAAUM,EAAG,CACXlG,EAAE,MAAM,UAAUkG,CAAC,CACzB,CACG,EACD,MAAO,CAAE,QAASH,EAAG,QAASD,CAAG,CACnC,EAAGgB,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,wBAAyBsmE,GACzB,wBAAyBC,EAC3B,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAAGviE,GAAKxD,GAAE,CACnD,KAAM,sBACN,MAAO8lE,GACP,MAAM,EAAGptE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIlnB,GAAEsa,EAAC,EAAG+M,EAAIxS,GAAE0U,EAAC,EAAG,CAAE,QAASnC,EAAG,QAASI,CAAC,EAAKmnE,GAAG,EAAGjoE,CAAC,EACvE,OAAO/gB,GAAE,SAAY,CACnB,KAAM,CAAE,QAASqE,CAAG,EAAGkd,EAAIjd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC5EvmE,EAAE,MAAQiB,GACR3d,EAAE,YAAYod,CAAC,CACvB,EAASsC,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGW,EAAE,CAAE,cAAeX,EAAE,MAAO,EAAGgB,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CAC1F,CAAK,EAAG,CAAE,cAAeA,CAAG,CACzB,EACD,QAAS,CACP,OAAO,IACX,CACA,CAAC,EAAGkoE,GAAK,CACP,GAAG3lE,GACH,UAAW,CACT,KAAM,QACN,QAAS,MACV,EACD,WAAY,CACV,KAAM,QACN,QAAS,MACV,EACD,eAAgB,CACd,KAAM,QACN,QAAS,MACV,EACD,WAAY,CACV,KAAM,QACN,QAAS,MACV,EACD,aAAc,CACZ,KAAM,QACV,CACA,EAAG4lE,GAAK,CAAC,EAAGvtE,IAAM,CAChB,KAAM,CAAE,QAASoF,CAAC,EAAK4C,GAAE,EAAGhI,CAAC,EAC7B,MAAO,CAAE,QAAS3e,GAChB,EACAisF,GACAloE,CACD,EAAE,QAAS,CACV,SAAS,EAAG,CACV,EAAE,YAAc,OAASpF,EAAE,MAAM,aAAa,EAAE,cAAe,EAAE,IAAI,EAAI,EAAE,YAAc,WAAaA,EAAE,MAAM,WAAW,EAAE,cAAe,EAAE,IAAI,CACjJ,EACD,YAAY,EAAG,CACbA,EAAE,MAAM,YAAY,EAAE,aAAa,CACzC,CACA,CAAK,CACL,EAAGgL,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,mBAAoBsiE,GACpB,mBAAoBC,EACtB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQjmE,GAAE,CACnD,KAAM,iBACN,MAAOgmE,GACP,MAAM,EAAGttE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIlnB,GAAEsa,EAAC,EAAG+M,EAAIxS,GAAEy4E,EAAE,EAAG,CAAE,QAASlmE,EAAG,QAASI,CAAC,EAAKqnE,GAAG,EAAGnoE,CAAC,EACxE,OAAO/gB,GAAE,SAAY,CACnB,KAAM,CAAE,QAASqE,CAAG,EAAGkd,EAAIjd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC5EvmE,EAAE,MAAQiB,GACR3d,EAAE,OAAO,OAAQ,OAAQod,CAAC,CAClC,EAASsC,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGW,EAAE,CACrB,GAAG,EACH,GAAGG,EACH,cAAed,EAAE,KACzB,CAAO,EAAGgB,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CAC1C,CAAK,EAAG,CAAE,cAAeA,CAAG,CACzB,EACD,QAAS,CACP,OAAO,IACX,CACA,CAAC,EAAG,MAAAooE,GAAK,CACP,GAAG7lE,GACH,SAAU,CACR,KAAM,MACP,EACD,OAAQ,CACN,KAAM,QACN,QAAS,MACV,EACD,SAAU,CACR,KAAM,QACN,QAAS,MACV,EACD,eAAgB,CACd,KAAM,QACN,QAAS,MACb,CACA,EAAG8lE,GAAK,CAAC,EAAGztE,IAAM,CAChB,KAAM,CAAE,QAASoF,EAAG,QAASQ,CAAG,EAAGoC,GACjC,EACAhI,CACD,EACD,MAAO,CAAE,QAAS3e,GAChB,EACAmsF,GACApoE,CACJ,EAAK,QAASQ,CAAG,CACjB,EAAG8nE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,kBAAmBF,GACnB,kBAAmBC,EACrB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQnmE,GAAE,CACnD,KAAM,gBACN,MAAOkmE,GACP,MAAM,EAAGxtE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIlnB,GAAEsa,EAAC,EAAG+M,EAAIxS,GAAE0U,EAAC,EAAG,CAAE,QAASnC,EAAG,QAASI,CAAC,EAAKunE,GAAG,EAAGroE,CAAC,EACvE,OAAO/gB,GAAE,SAAY,CACnB,KAAM,CAAE,QAASqE,CAAG,EAAGkd,EAAIjd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC5EvmE,EAAE,MAAQiB,GAAE3d,EAAE,MAAMod,CAAC,CAAC,EAAGsC,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGW,EAAE,CAAE,cAAeX,EAAE,KAAO,GAAGgB,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CAChH,CAAK,EAAG,CAAE,cAAeA,CAAG,CACzB,EACD,QAAS,CACP,OAAO,IACX,CACA,CAAC,EAAG,MAAAuoE,GAAK,CACP,GAAGhmE,GACH,WAAY,CACV,KAAM,MACP,EACD,YAAa,CACX,KAAM,MACP,EACD,YAAa,CACX,KAAM,MACP,EACD,aAAc,CACZ,KAAM,MACV,CACA,EAAGimE,GAAK,CAAC,EAAG5tE,IAAM,CAChB,KAAM,CAAE,QAASoF,EAAG,QAASQ,CAAG,EAAGoC,GACjC,EACAhI,CACD,EACD,MAAO,CAAE,QAAS3e,GAChB,EACAssF,GACAvoE,CACJ,EAAK,QAASQ,CAAG,CACjB,EAAG6E,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,iBAAkBkjE,GAClB,iBAAkBC,EACpB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQtmE,GAAE,CACnD,KAAM,eACN,MAAOqmE,GACP,MAAM,EAAG3tE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIlnB,GAAEsa,EAAC,EAAG+M,EAAIxS,GAAE0U,EAAC,EAAG,CAAE,QAASnC,EAAG,QAASI,CAAC,EAAK0nE,GAAG,EAAGxoE,CAAC,EACvE,OAAO/gB,GAAE,SAAY,CACnB,KAAM,CAAE,QAASqE,CAAG,EAAGkd,EAAIjd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC5EvmE,EAAE,MAAQiB,GAAE3d,EAAE,KAAKod,CAAC,CAAC,EAAGsC,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGW,EAAE,CAAE,cAAeX,EAAE,KAAO,GAAGgB,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CAC/G,CAAK,EAAG,CAAE,cAAeA,CAAG,CACzB,EACD,QAAS,CACP,OAAO,IACX,CACA,CAAC,EAAG,MAAAw9B,GAAK,CACP,GAAGj8B,EACL,EAAGknE,GAAK,CAAC,EAAG7tE,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG2B,GACjC,EACA1H,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACAuhD,GACAh9B,CACD,EAAEM,EAAI,CACL,GAAGH,EACH,SAASrd,EAAG,CACVsX,EAAE,MAAM,SAAStX,EAAE,aAAa,CACjC,EACD,YAAYA,EAAG,CACbsX,EAAE,MAAM,YAAYtX,EAAE,aAAa,CACzC,CACG,EACD,OAAOke,GAAEJ,GAAGN,EAAE,QAAQ,EAAGU,GAAEmlE,GAAI7lE,EAAE,WAAW,EAAG,CAAE,QAASJ,EAAG,QAASI,CAAG,CAC3E,EAAG+D,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,gBAAiB24B,GACjB,gBAAiBirC,EACnB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAGC,GAAK,CACjD,GAAGlrC,EACL,EAAG/5B,GAAK,CAAC,EAAG7I,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG8nE,GACjC,EACA7tE,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACAysF,GACAloE,CACD,EAAEM,EAAI,CACL,GAAGH,CACJ,EACD,MAAO,CAAE,QAASD,EAAG,QAASI,CAAG,CACnC,EAAG0E,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,kBAAmBkjE,GACnB,kBAAmBjlE,EACrB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQvB,GAAE,CACnD,MAAOwmE,GACP,MAAM,EAAG9tE,EAAG,CACV,MAAMoF,EAAIS,EAAC,EAAID,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,EAAG,QAASxd,CAAC,EAAKmgB,GACzE,EACAzD,EACApF,CACD,EACD,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,aAAc/F,CAAG,EAAGynB,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MACjFvmE,EAAE,MAAQiB,GACR/nB,EAAE,OAAQoK,CAAC,CACZ,EACD,KAAM,CAAE,UAAWsd,CAAC,EAAKoB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGY,CAAC,EAAGoC,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGI,EACH,cAAed,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAG,MAAAimE,GAAK,CACP,GAAGnrC,GACH,QAAS,CACP,KAAM,CAAC,OAAQ,KAAK,EACpB,OAAQ,EACT,EACD,aAAc,CACZ,KAAM,SACN,OAAQ,EACZ,CACA,EAAGj6B,GAAK,CAAC,EAAG3I,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG8nE,GACjC,EACA7tE,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACA0sF,GACAnoE,CACD,EACD,OAAO,UAAU,eAAe,KAAK,EAAG,cAAc,IAAME,EAAE,MAAQ,EAAE,cACxE,MAAMI,EAAI,CACR,GAAGH,EACH,WAAWrd,EAAG,CACZsX,EAAE,MAAM,YAAa,EAAEA,EAAE,MAAM,QAAQtX,CAAC,CACzC,EACD,gBAAgBA,EAAG,CACjBsX,EAAE,MAAM,SAAStX,CAAC,CACnB,EACD,gBAAiB,CACf,OAAOsX,EAAE,MAAM,UAAW,CAC3B,EACD,WAAY,CACV,OAAOA,EAAE,MAAM,UAAW,CAChC,CACG,EACD,MAAO,CAAE,QAAS8F,EAAG,QAASI,CAAG,CACnC,EAAG2E,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,aAAckjE,GACd,aAAcplE,EAChB,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAAGqlE,GAAK1mE,GAAE,CACnD,MAAOymE,GACP,MAAM,EAAG/tE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,EAAG,QAASxd,CAAC,EAAKigB,GAAG,EAAGvD,EAAGpF,CAAC,EACrF,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,QAAS/F,CAAG,EAAGynB,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC5EvmE,EAAE,MAAQiB,GAAE/nB,EAAE,EAAE,QAASoK,CAAC,CAAC,EAC3B,KAAM,CAAE,UAAWsd,CAAC,EAAKoB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGY,CAAC,EAAGoC,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGI,EACH,cAAed,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAGmmE,GAAK,CACP,GAAGtnE,GACH,QAAS,CACP,KAAM,MACP,EACD,OAAQ,CACN,KAAM,MACP,EACD,SAAU,CACR,KAAM,CAAC,OAAQ,MAAO,MAAM,CAC7B,EACD,OAAQ,CACN,KAAM,QACN,QAAS,MACV,EACD,QAAS,CACP,KAAM,MACP,EACD,QAAS,CACP,KAAM,MACP,EACD,UAAW,CACT,KAAM,MACV,CACA,EAAGunE,GAAK,CAAC,EAAGluE,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG2B,GACjC,EACA1H,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACA4sF,GACAroE,CACD,EAAEM,EAAI,CACL,GAAGH,EACH,kBAAmB,CACjB,IAAIrd,GACHA,EAAIsX,EAAE,QAAU,MAAQtX,EAAE,OAAQ,CACzC,CACG,EACD,OAAO+jF,GAAG,IAAM,CACdzsE,EAAE,MAAM,IAAK,CACd,GAAG,CAAE,QAAS8F,EAAG,QAASI,CAAG,CAChC,EAAG6C,GAAK,CAAC,EAAG/I,EAAGoF,EAAGQ,IAAM,EAAE,OAAO,CAC/B,WAAWG,EAAG,CACZ,KAAK,eAAiB,GAAI,KAAK,GAAG,aAAc,KAAK,WAAW,EAAGX,EAAE,WAAW,KAAMW,CAAC,CACxF,EACD,WAAWA,EAAG,CACZ,MAAMD,EAAI,KAAK,iBAAiBC,CAAC,EACjC,KAAK,eAAeD,CAAC,EAAI9F,EAAE,OAAO,KAAK,EACvC,MAAMkG,EAAIgC,GAAE,CAAE,MAAOtC,EAAG,MAAO,CAAC,QAAQ,CAAG,EAAE,CAAE,OAAQG,CAAC,CAAE,EAC1D,OAAO+D,GAAG5D,EAAG,KAAK,eAAeJ,CAAC,CAAC,EAAG,KAAK,eAAeA,CAAC,CAC5D,EACD,YAAYC,EAAG,CACb,MAAMD,EAAI,KAAK,iBAAiBC,EAAE,MAAM,EACxC,KAAK,eAAeD,CAAC,IAAM,KAAK,eAAeA,CAAC,EAAE,UAAY,GAAI,KAAK,eAAeA,CAAC,EAAI,OAC/F,CACA,CAAC,EAAG+D,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC3E,UAAW,KACX,mBAAoBd,GACpB,eAAgBklE,GAChB,eAAgBC,EAClB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQ5mE,GAAE,CACnD,MAAO,CACL,GAAG2mE,GACH,YAAa,CACX,KAAM,SACN,SAAU,EAChB,CACG,EACD,MAAM,EAAGjuE,EAAG,CACV,MAAMoF,EAAIS,EAAC,EAAID,EAAIC,EAAE,IAAI,EAAGE,EAAIF,EAAE,EAAE,EAAGC,EAAIpnB,GAAEsa,EAAC,EAAGkN,EAAI3S,GAAEiT,EAAC,EAAG,CAAE,QAAS9d,EAAG,QAASpK,CAAG,EAAG4vF,GAAG,EAAG9oE,EAAGpF,CAAC,EAClG,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,UAAW2hB,EAAG,QAASC,EAAG,KAAMvlB,GAAMolB,EAAInd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAAGplE,EAAIwC,GACxG/C,EACAC,EACAvlB,EACA,EAAE,WACH,EACD0kB,EAAE,MAAQiB,GAAE,IAAIE,EAAE7d,CAAC,CAAC,EACpB,KAAM,CAAE,UAAWmM,CAAC,EAAKuS,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGvQ,CAAC,EAAGuT,GAAE9pB,EAAG8mB,EAAE,MAAO,CAAC,EAAGc,EAAE,CACjC,GAAG,EACH,GAAG5nB,EACH,cAAe8mB,EAAE,KAClB,GAAGW,EAAE,MAAQ,GAAIK,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACxD,CAAK,EAAG,CAAE,KAAMQ,EAAG,MAAOG,EAAG,cAAeX,CAAG,CAC5C,EACD,QAAS,CACP,OAAO,KAAK,MAAQ8C,GAAE,MAAO,CAAE,MAAO,CAAE,QAAS,MAAM,EAAI,IAAK,MAAM,CAAE,EAAI,IAChF,CACA,CAAC,EAAG,MAAAimE,GAAK,CACP,QAAS,CACP,KAAM,MACP,EACD,cAAe,CACb,KAAM,MACP,EACD,SAAU,CACR,KAAM,CAAC,OAAQ,KAAK,CACrB,EACD,WAAY,CACV,KAAM,CAAC,OAAQ,KAAK,CACrB,EACD,YAAa,CACX,KAAM,CAAC,OAAQ,KAAK,CACrB,EACD,cAAe,CACb,KAAM,CAAC,OAAQ,KAAK,CACrB,EACD,UAAW,CACT,KAAM,MACP,EACD,gBAAiB,CACf,KAAM,MACP,EACD,WAAY,CACV,KAAM,CAAC,OAAQ,KAAK,CACrB,EACD,aAAc,CACZ,KAAM,CAAC,OAAQ,KAAK,CACrB,EACD,MAAO,CACL,KAAM,CAAC,OAAQ,KAAK,CACrB,EACD,UAAW,CACT,KAAM,MACV,CACA,EAAGhkE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,UAAWgkE,EACb,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAAGC,GAAK9mE,GAAE,CACnD,KAAM,QACN,MAAO,CACL,GAAG6mE,GACH,GAAG7lE,EACJ,EACD,MAAM,EAAGtI,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIlnB,GAAEsa,EAAC,EAAG+M,EAAIxS,GAAE04E,EAAE,EAAGnmE,EAAIvS,GAAE24E,EAAE,EAAGhmE,EAAI3S,GAAE44E,EAAE,EACvD,IAAIzjF,EAAGpK,EAAG0nB,EAAGC,EAAGvlB,EAChB,MAAM6lB,EAAI,CAACE,EAAG9nB,EAAG8oB,IAAM,CACrB,MAAMnB,EAAIG,GAAKA,EAAE,UACjB,GAAI,CAAC9nB,EAAG,CACN8oB,GAAK/mB,GAAKqlB,KAAOD,EAAEQ,CAAC,EACpB,MACR,CACM,KAAM,CAAE,UAAWI,CAAC,EAAKU,GAAEpH,EAAE,KAAK,EAClCtf,GAAKpC,EAAEoC,EAAGgmB,CAAC,EACX,KAAM,CAAE,QAAS2nE,CAAI,EAAG9lE,GAAE,CAAC,EAAGX,EAAIvmB,GAChC,EACA8sF,GACAE,CACD,EACD/nE,IAAMsB,EAAE,KAAOtB,GAAI5lB,EAAIknB,EAAE,KAAO5B,EAAE4B,CAAC,EAAI3B,EAAE2B,CAAC,EAAGlf,EAAEhI,EAAGgmB,CAAC,EAAGR,EAAExlB,CAAC,CAC1D,EAAEmU,EAAI,IAAM,CACXuR,GAAE,IAAMG,EAAEnB,EAAE,MAAO,GAAI,EAAE,CAAC,CAC3B,EAAE+C,EAAI,IAAM,CACX/B,GAAE,IAAMG,EAAEnB,EAAE,MAAO,GAAI,EAAE,CAAC,CAC3B,EAAEsD,EAAI,CACL,WAAY7T,EACZ,iBAAkBA,EAClB,YAAaA,EACb,cAAeA,EACf,eAAgBA,EAChB,iBAAkBA,EAClB,aAAcA,EACd,mBAAoBA,EACpB,gBAAiBA,EACjB,SAAUA,EACV,aAAcA,EACd,QAASA,CACV,EACD,OAAOxQ,GAAE,SAAY,CACnB,KAAM,CACJ,SAAUoiB,EACV,QAAS9nB,EACT,KAAM8oB,CACP,EAAG7B,EAAIjd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MACzDjjF,EAAI+d,EAAE,GAAInoB,EAAImoB,EAAE,IAAKT,EAAIrnB,EAAGsnB,EAAIwB,EAAGW,GAAEM,EAAG,GAAI,CAAC,EAAG,IAAI,iBAAiBP,CAAC,EAAE,QAAQ/C,EAAE,MAAO,CACvF,WAAY,GACZ,UAAW,GACX,cAAe,GACf,QAAS,EACV,GAAGvQ,EAAG,CACb,CAAK,EAAG,CAAE,KAAMuQ,CAAG,CAChB,EACD,QAAS,CACP,MAAM,EAAI,KAAK,OAAO,QAAU,KAAK,OAAO,QAAS,EAAG,OACxD,OAAO8C,GAAE,MAAO,CAAE,IAAK,MAAM,EAAI,CAAC,CACtC,CACA,CAAC,EAAGomE,GAAK,CACP,GAAG3nE,GACH,QAAS,CACP,KAAM,MACP,EACD,IAAK,CACH,KAAM,MACP,EACD,YAAa,CACX,KAAM,QACN,QAAS,MACV,EACD,YAAa,CACX,KAAM,QACN,QAAS,MACV,EACD,gBAAiB,CACf,KAAM,MACP,EACD,OAAQ,CACN,KAAM,MACP,EACD,UAAW,CACT,KAAM,MACP,EACD,IAAK,CACH,KAAM,OACN,SAAU,GACV,OAAQ,EACT,EACD,OAAQ,CACN,KAAM,CAAC,MAAO,MAAM,EACpB,SAAU,GACV,OAAQ,EACZ,CACA,EAAGiC,GAAK,CAAC,EAAG5I,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG2B,GACjC,EACA1H,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACAitF,GACA1oE,CACD,EAAEM,EAAI,CACL,GAAGH,EAKH,WAAWrd,EAAG,CACZ,OAAOsX,EAAE,MAAM,WAAWtX,CAAC,CAC5B,EAKD,OAAOA,EAAG,CACR,OAAOsX,EAAE,MAAM,OAAOtX,CAAC,CACxB,EAKD,UAAUA,EAAG,CACX,OAAOsX,EAAE,MAAM,UAAUtX,CAAC,CAC3B,EAKD,WAAY,CACV,OAAOsX,EAAE,MAAM,UAAW,CAC3B,EAKD,YAAa,CACX,OAAOA,EAAE,MAAM,WAAY,CAC5B,EAID,cAAe,CACb,OAAOA,EAAE,MAAM,aAAc,CAC9B,EAID,aAAc,CACZ,OAAOA,EAAE,MAAM,YAAa,CAC7B,EAKD,UAAUtX,EAAG,CACX,OAAOsX,EAAE,MAAM,UAAUtX,CAAC,CAChC,CACG,EACD,MAAO,CAAE,QAASod,EAAG,QAASI,CAAG,CACnC,EAAG6D,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,kBAAmBukE,GACnB,kBAAmB1lE,EACrB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQtB,GAAE,CACnD,KAAM,gBACN,MAAOgnE,GACP,MAAM,EAAGtuE,EAAG,CACV,MAAMoF,EAAIS,EAAC,EAAID,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,EAAG,QAASxd,CAAC,EAAKkgB,GACzE,EACAxD,EACApF,CACD,EACD,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,aAAc/F,CAAG,EAAGynB,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MACjFvmE,EAAE,MAAQiB,GACR/nB,EAAE,EAAE,IAAK,EAAE,OAAQ4nB,CAAC,CACrB,EACD,KAAM,CAAE,UAAWF,CAAC,EAAKoB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGY,CAAC,EAAGoC,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGpd,EACH,cAAe0c,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAE,MAACymE,GAAKjnE,GAAE,CACT,MAAOs7B,GACP,MAAM,EAAG5iC,EAAG,CACV,MAAMoF,EAAIS,EAAG,EAAED,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,CAAG,EAAG2nE,GAAG,EAAGzoE,EAAGpF,CAAC,EACzE,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,WAAYqE,CAAG,EAAGqd,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC/EvmE,EAAE,MAAQiB,GACR3d,EAAE,OAAQ,EAAE,OAAO,CACpB,EACD,KAAM,CAAE,UAAWpK,CAAC,EAAK8oB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAG9mB,CAAC,EAAG8pB,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGI,EACH,cAAed,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EACD,SAASgB,GAAG,EAAG9I,EAAGoF,EAAG,CACnB,IAAIQ,EAAGG,EAAGD,EACV9F,IAAM,SAAWA,EAAI,IAAKoF,IAAM,SAAWA,EAAI,IAC/C,IAAIc,GAAKN,EAAIR,EAAE,cAAgB,MAAQQ,EAAGld,GAAKqd,EAAIX,EAAE,WAAa,MAAQW,EAAGznB,EAAI8mB,EAAE,QAASY,EAAI,KAAK,MAAOC,EAAI,CAAE,EAClH,SAASvlB,GAAI,CACX,GAAIpC,IAAM,OAAQ,CAChB,IAAIuW,EAAI,KAAK,IAAG,EAAKmR,EACrB,GAAInR,EAAImL,GAAK1hB,EACX,OAAOA,EAAIuW,CACnB,CACI,OAAOmL,CACX,CACE,IAAIuG,EAAI,UAAW,CACjB,IAAI1R,EAAI,GAAG,MAAM,KAAK,SAAS,EAAGsT,EAAI,KACtC,OAAO,IAAI,QAAQ,SAASO,EAAGjC,EAAG,CAChC,IAAI9nB,EAAIunB,GAAKJ,IAAM,OACnB,GAAIA,IAAM,QAAU,aAAaA,CAAC,EAAGA,EAAI,WAAW,UAAW,CAC7D,GAAIA,EAAI,OAAQE,EAAI,KAAK,IAAG,EAAI,CAACE,EAAG,CAClC,IAAII,EAAI,EAAE,MAAM6B,EAAGtT,CAAC,EACpBnM,GAAKA,EAAE4d,CAAC,EAAGL,EAAE,QAAQ,SAASS,EAAG,CAC/B,SAAWA,EAAE,SAASJ,CAAC,CACnC,CAAW,EAAGL,EAAI,CAAE,CACpB,CACA,EAASvlB,EAAC,CAAE,EAAG/B,EAAG,CACV,IAAI8oB,EAAI,EAAE,MAAMU,EAAGtT,CAAC,EACpB,OAAOnM,GAAKA,EAAE+e,CAAC,EAAGiB,EAAEjB,CAAC,CAC7B,CACMxB,EAAE,KAAK,CAAE,QAASyC,EAAG,OAAQjC,EAAG,CACtC,CAAK,CACF,EACD,OAAOF,EAAE,OAAS,SAAS1R,EAAG,CAC5BiR,IAAM,QAAU,aAAaA,CAAC,EAAGG,EAAE,QAAQ,SAASkC,EAAG,CACrD,SAAWA,EAAE,QAAQtT,CAAC,CAC5B,CAAK,EAAGoR,EAAI,CAAE,CACd,EAAKM,CACL,CACK,MAACioE,GAAK,CACT,GAAGlmE,GAIH,OAAQ,CACN,KAAM,CAAC,OAAQ,KAAK,CACrB,EAID,OAAQ,CACN,KAAM,CAAC,MAAO,MAAM,CACrB,EAID,UAAW,CACT,KAAM,CAAC,MAAO,MAAM,CACrB,EAID,KAAM,CACJ,KAAM,MACP,EAID,QAAS,CACP,KAAM,MACP,EAID,QAAS,CACP,KAAM,MACP,EAID,mBAAoB,CAClB,KAAM,CAAC,OAAQ,KAAK,CACrB,EAID,eAAgB,CACd,KAAM,MACP,EAID,QAAS,CACP,KAAM,MACP,EAID,cAAe,CACb,KAAM,QACN,QAAS,MACV,EAOD,IAAK,CACH,KAAM,CAAC,OAAQ,MAAM,CACtB,EACD,mBAAoB,CAClB,KAAM,MACP,EACD,QAAS,CACP,KAAM,QACN,QAAS,MACV,EACD,oBAAqB,CACnB,KAAM,MACP,EACD,gBAAiB,CACf,KAAM,MACP,EACD,cAAe,CACb,KAAM,MACP,EACD,cAAe,CACb,KAAM,QACN,QAAS,MACV,EACD,uBAAwB,CACtB,KAAM,MACP,EACD,cAAe,CACb,KAAM,QACN,QAAS,MACV,EACD,oBAAqB,CACnB,KAAM,QACN,QAAS,MACV,EACD,qBAAsB,CACpB,KAAM,QACN,QAAS,MACV,EACD,iBAAkB,CAChB,KAAM,QACN,QAAS,GACT,OAAQ,EACZ,CACA,EAAGmmE,GAAKnnE,GAAE,CACR,aAAc,GACd,MAAO,CAAC,QAAS,cAAe,gBAAiB,eAAe,EAChE,MAAOknE,GACP,MAAM,EAAGxuE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAI+D,GAAG,CACpB,MAAO,GACP,YAAa,CAAE,EACf,gBAAiB,EACvB,CAAK,EAAG,CAAE,QAAS5D,CAAC,EAAKwC,GAAE,CAAC,EAAGzC,EAAIzkB,GAC7B,EACAmtF,GACAzoE,CACN,EAAO,CAAE,UAAWG,EAAG,MAAOxd,CAAG,EAAG0e,GAAEpH,EAAE,KAAK,EAAG1hB,EAAI+pB,GAAE7B,EAAC,EAAGR,EAAIqC,GAAE0jE,EAAE,EAAG9lE,EAAIoC,GAAEJ,EAAC,EAAGvnB,EAAI2nB,GAC7E2jE,EACD,EACDplE,GAAE5N,GAAG,EAAE,gBAAgB,EACvB,MAAMuN,EAAImoE,EAAG,IAAM,CACjB,MAAM/vF,EAAI,CAAE,EACZ,OAAO,EAAE,uBAAyBA,EAAE,QAAU,IAAKA,CACzD,CAAK,EAAGkW,EAAI65E,EAAG,IAAM,CACf,MAAM/vF,EAAI4nB,EAAE,MACZ,OAAO,EAAE,UAAY5nB,EAAE,QAAU,EAAE,SAAU,EAAE,iBAAmBA,EAAE,eAAiB,EAAE,gBAAiB,EAAE,qBAAuBA,EAAE,mBAAqB,EAAE,oBAAqBA,CAChL,GAAGwpB,EAAI,CACN,QAASW,GAAInqB,GAAM,CACjBinB,EAAE,aAAe5F,EAAE,KAAK,cAAe4F,EAAE,WAAW,QAAO,CAAE,EAAG5F,EAAE,KAAK,gBAAiB4F,EAAE,WAAW,UAAW,GAAG5F,EAAE,KAAK,gBAAiB4F,EAAE,WAAW,UAAW,GAC3K,CAAO,EACD,WAAWjnB,EAAG,CACZ,MAAM8oB,EAAI7B,EAAE,gBAAgB,KAAMU,GAAMA,EAAE,OAAS3nB,EAAE,IAAI,EACzD8oB,GAAKA,EAAE,kBAAkB,EAAE,CAC5B,EACD,cAAc9oB,EAAG,CACf,MAAM8oB,EAAI7B,EAAE,gBAAgB,KAAMU,GAAMA,EAAE,OAAS3nB,EAAE,IAAI,EACzD8oB,GAAKA,EAAE,kBAAkB,EAAE,CACnC,CACK,EACDpjB,GAAE,SAAY,CACZ,EAAE,mBAAqBsE,GAAE,EAAIA,GAAE,GAAK,MAAMgjF,GAAA,WAAO,SAAS,OAC1D,KAAM,CAAE,IAAKhtF,EAAG,IAAK8oB,EAAG,KAAMnB,EAAG,aAAcI,EAAG,OAAQ2nE,EAAI,MAAOzmE,CAAG,EAAG,EAAE,iBAAmBjf,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MACjJ,GAAI,CACF7lE,EAAE,gBAAkB,MAAMA,EAAE,eAAgB,CAC7C,OAAQxN,EAAG,CACV,QAAQ,MACN,yEAAyEA,EAAE,OAAO,EACnF,CACT,CACM,MAAMozE,GAAGplE,CAAC,EACV,MAAMkD,EAAK,OAAO1D,EAAE,KAAO,SAAW2B,EAAE3B,EAAE,GAAG,EAAIA,EAAE,IACnDA,EAAE,IAAM0D,GAAM/B,EAAE,SAChB,MAAMe,EAAI,CACR,SAASlQ,EAAG,CACVA,EAAE,YAAc,SAAWsN,EAAE,eAAiB,OAASA,EAAE,YAAY,KAAKtN,CAAC,EAAIsN,EAAE,gBAAgB,KAC9F6C,GAAMb,EAAEa,EAAE,aAAa,IAAMb,EAAEtP,EAAE,aAAa,CAC3D,IAAgBsN,EAAE,aAAa,SAAStN,CAAC,EAAGsN,EAAE,gBAAgB,KAAKtN,CAAC,IAAKA,EAAE,UAAY,IAAMsN,EAAE,WAAW,SAAStN,EAAE,aAAa,CACzH,EACD,YAAYA,EAAG,CACbA,EAAE,YAAc,SAAWsN,EAAE,eAAiB,OAASA,EAAE,YAAcA,EAAE,YAAY,OAClFmB,GAAMA,EAAE,OAASzO,EAAE,IACrB,GAAIsN,EAAE,aAAa,YAAYtN,EAAE,aAAa,EAAGsN,EAAE,gBAAkBA,EAAE,gBAAgB,OACrFmB,GAAMa,EAAEb,EAAE,aAAa,IAAMa,EAAEtP,EAAE,aAAa,CAC3D,IAAesN,EAAE,WAAW,YAAYtN,EAAE,aAAa,CAC9C,EACD,qBAAqBA,EAAG,CACtBsN,EAAE,aAAetN,EAAGsN,EAAE,YAAY,QAASmB,GAAM,CAC/CnB,EAAE,aAAa,SAASmB,CAAC,CAC1B,GAAGnB,EAAE,YAAc,GAAIK,EAAE3N,CAAC,CAC5B,EACD,gBAAgBA,EAAG,CACjBsN,EAAE,WAAW,WAAWtN,EAAE,aAAa,CACxC,EACD,QAAQA,EAAG,CACT,MAAMyO,EAAInB,EAAE,WAAW,QAAS,EAChCtN,IAAMyO,GAAKnB,EAAE,WAAW,QAAQtN,EAAGiO,EAAE,KAAK,CAC3C,EACD,OAAOjO,EAAG,CACR,MAAMyO,EAAInB,EAAE,WAAW,UAAW,EAClCA,EAAE,WAAW,QAAQ,IAAMtN,EAAGsN,EAAE,WAAW,UAAUmB,EAAG,CACtD,QAAS,GACT,QAAS,CAAC,EAAG,CAAC,CAC1B,CAAW,CACF,EACD,UAAUzO,EAAG,CACXsN,EAAE,WAAW,UAAUtN,EAAGzD,EAAE,KAAK,CAClC,EACD,UAAUyD,EAAG,CACX,GAAI,CAACA,EACH,OACF,MAAMyO,EAAIL,EAAEpO,CAAC,EACRyO,EAAE,QAAS,GAEhB,EAAEnB,EAAE,eAAiBA,EAAE,WAAW,UAAS,GAAI,OAAOmB,EAAG,CAAC,IAAMnB,EAAE,cAAgBmB,EAAGnB,EAAE,WAAW,UAAUmB,CAAC,EAC9G,EACD,UAAUzO,EAAG,CACX,GAAIA,GAAK,KACP,OACF,MAAMyO,EAAIsnE,EAAG/1E,CAAC,EAAGmQ,EAAI7C,EAAE,eAAiBA,EAAE,WAAW,UAAW,GAC/D6C,EAAE,MAAQ1B,EAAE,KAAO0B,EAAE,MAAQ1B,EAAE,OAASnB,EAAE,cAAgBmB,EAAGnB,EAAE,WAAW,MAAMmB,EAAGR,EAAE,KAAK,EACrG,CACO,EACD5lB,GAAErC,EAAGkqB,EAAE,QAAQ,EAAG7nB,GAAEqlB,EAAGwC,EAAE,WAAW,EAAG7nB,GAAEslB,EAAGuC,EAAE,eAAe,EAAG7nB,GAAED,EAAG8nB,EAAE,oBAAoB,EAAG5C,EAAE,WAAaS,GAAE1nB,EAAEymB,EAAE,MAAOU,CAAC,CAAC,EAAGsC,GAAEI,EAAG5C,EAAE,WAAY,CAAC,EAAG0lE,GAAG1lE,EAAE,WAAYuC,CAAC,EAAGmjE,GAAG1lE,EAAE,WAAYM,CAAC,EAAGN,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAAS4F,EAAE,UAAU,CAAC,CACzP,CAAK,EAAG2B,GAAE,IAAM,CACVgkE,GAAGpjE,CAAC,EAAGvC,EAAE,aAAeA,EAAE,WAAW,MAAOA,EAAE,WAAW,OAAM,EACrE,CAAK,EACD,MAAM8C,EAAIgmE,EAAG,IAAM9oE,EAAE,UAAU,EAAGa,EAAIioE,EAAG,IAAM9oE,EAAE,KAAK,EACtD,MAAO,CAAE,KAAMR,EAAG,MAAOqB,EAAG,cAAeiC,EAAG,MAAOhgB,CAAG,CACzD,EACD,OAAO,CAAE,MAAO,GAAK,CACnB,OAAO,EAAE,QAAU,EAAE,MAAQ,IAAK,EAAE,MAAM,QAAU,EAAE,MAAM,MAAQ,QAAS,EAAE,MAAM,SAAW,EAAE,MAAM,OAAS,QAASwf,GACxH,MACA,CACE,GAAG,EACH,IAAK,MACN,EACD,KAAK,OAAS,KAAK,OAAO,QAAU,KAAK,OAAO,UAAY,EAC7D,CACL,CACA,CAAC,EAAGiD,GAAK,CAAC,kBAAmB,cAAc,EAAGwjE,GAAK,CAAC,WAAY,QAAQ,EAAGC,GAAK,CAC9E,GAAGjoE,GACH,UAAW,CACT,KAAM,QACN,QAAS,MACV,EACD,KAAM,CACJ,KAAM,CAAC,MAAM,CACd,EACD,aAAc,CACZ,KAAM,MACP,EACD,OAAQ,CACN,KAAM,CAAC,OAAQ,KAAK,EACpB,OAAQ,GACR,SAAU,EACd,CACA,EAAGqC,GAAK,CAAC,EAAGhJ,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG2B,GACjC,EACA1H,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACAutF,GACAhpE,CACD,EAAEM,EAAI,CACL,GAAGH,EACH,aAAard,EAAG,CACdsX,EAAE,MAAM,WAAatX,EAAIsX,EAAE,MAAM,SAAS,OAAQ,EAAGA,EAAE,MAAM,SAAS,QAAO,EAC9E,EACD,WAAWtX,EAAG,CACZ0c,EAAE,KAAK,gBAAiB1c,EAAE,MAAM,EAAG0c,EAAE,KAAK,iBAAkB1c,EAAE,MAAM,CACrE,EACD,UAAUA,EAAG,CACX,GAAIA,GAAK,MAAQsX,EAAE,MAAO,CACxB,MAAM1hB,EAAI0hB,EAAE,MAAM,UAAW,GAC5B,CAAC1hB,GAAK,CAACA,EAAE,OAAOoK,CAAC,IAAMsX,EAAE,MAAM,UAAUtX,CAAC,CACnD,CACA,CACG,EACD,MAAO,CAAE,QAASod,EAAG,QAASI,CAAG,CACnC,EAAG+C,GAAK,CAAC,EAAGjJ,IAAM,CAChB,MAAMoF,EAAIpF,EAAE,MAAM,SAAWA,EAAE,MAAM,QAAS,EAC9C,OAAOoF,GAAKA,EAAE,QAAUA,EAAE,KAAKmF,EAAE,CACnC,EACA,SAASA,GAAG,EAAG,CACb,MAAO,EAAEY,GAAG,SAAS,EAAE,KAAK,SAAQ,CAAE,GAAKwjE,GAAG,SAAS,EAAE,KAAK,IAAI,EACpE,CACK,MAACE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC7E,UAAW,KACX,YAAaD,GACb,YAAa5lE,GACb,gBAAiBC,EACnB,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC,EAAG6lE,GAAKxnE,GAAE,CACnD,KAAM,UACN,MAAOsnE,GACP,MAAM,EAAG5uE,EAAG,CACV,MAAMoF,EAAIS,EAAC,EAAID,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAC3CI,GACEqlE,GACA,IAAM,CACJ,IAAIjmE,EACJ,MAAO,CAAC,GAAGA,EAAIZ,EAAE,QAAU,MAAQY,EAAE,aAC7C,CACA,EAAOY,GAAEslE,GAAKlmE,GAAM,CACd,IAAItlB,EAAG6lB,EACP,MAAMN,EAAIhjB,IAAGvC,EAAI0kB,EAAE,QAAU,KAAO,OAAS1kB,EAAE,UAAU,KAAO6lB,EAAInB,EAAE,QAAU,KAAO,OAASmB,EAAE,cAClGN,IAAMA,EAAE,UAAYD,EACrB,GAAGY,GACFulE,GACCnmE,GAAM,CACL,IAAIC,EACJ,QAASA,EAAIb,EAAE,QAAU,KAAO,OAASa,EAAE,UAAYb,EAAE,MAAM,QAAQY,CAAC,CAChF,CACK,EACD,KAAM,CAAE,QAASE,EAAG,QAASxd,CAAC,EAAKsgB,GAAG,EAAG5D,EAAGpF,CAAC,EAAG1hB,EAAI,CAClD,YAAawqB,GAAGpgB,EAAE,UAAU,CAC7B,EACD,OAAOrE,GAAE,SAAY,CACnB,KAAM,CAAE,OAAQ2hB,EAAG,QAASC,CAAC,EAAKF,EAAIpd,GAAE,EAAI,MAAKgjF,GAAA,IAAC,OAAO,SAA8B,MACvF1iE,GAAG/C,EAAGlG,CAAC,IAAMkG,EAAE,KAAOD,EAAE,CAAE,UAAW,EAAI,IAAIb,EAAE,MAAQiB,GAAEL,EAAE,EAAE,OAAQE,CAAC,CAAC,EACvE,KAAM,CAAE,UAAWxlB,CAAC,EAAK0mB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAG1kB,CAAC,EAAG0kB,EAAE,MAAM,GAAG,OAAQ9mB,EAAE,WAAW,EAAG8pB,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAAGU,EAAE,CACpE,GAAG,EACH,GAAGpd,EACH,cAAe0c,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACxD,CAAK,EAAGmC,GAAE,IAAMgkE,GAAGjtF,CAAC,CAAC,EAAG,CAAE,MAAOsnB,EAAG,cAAeR,CAAG,CACnD,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAGinE,GAAK,CACP,GAAGnC,GACH,aAAc,CACZ,KAAM,MACP,EACD,OAAQ,CACN,KAAM,QACN,QAAS,MACV,EACD,QAAS,CACP,KAAM,MACN,SAAU,GACV,OAAQ,EACZ,CACA,EAAGoC,GAAK,CAAC,EAAGhvE,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAGN,GACjC,EACAzF,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACA0tF,GACAnpE,CACD,EAAEM,EAAI,CACL,GAAGH,EACH,gBAAgBrd,EAAG,CACjBsX,EAAE,MAAM,SAAS,CAAE,aAActX,CAAC,CAAE,CACrC,EACD,UAAUA,EAAG,CACXsX,EAAE,MAAM,SAAS,CAAE,OAAQtX,CAAC,CAAE,CAC/B,EACD,UAAUA,EAAG,CACXsX,EAAE,MAAM,UAAUtX,CAAC,CACzB,CACG,EACD,MAAO,CAAE,QAASod,EAAG,QAASI,CAAG,CACnC,EAAG+oE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,cAAeF,GACf,cAAeC,EACjB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAGtvF,GAAI,CAChD,GAAGqvF,EACL,EAAGG,GAAK,CAAC,EAAGlvE,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAGipE,GACjC,EACAhvE,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACA3B,GACAkmB,CACD,EAAEM,EAAI,CACL,GAAGH,EACH,UAAUrd,EAAG,CACX,OAAOsX,EAAE,MAAM,UAAUtX,CAAC,CAChC,CACG,EACD,MAAO,CAAE,QAASod,EAAG,QAASI,CAAG,CACnC,EAAGkF,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,aAAc1rB,GACd,aAAcwvF,EAChB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQ5nE,GAAE,CACnD,KAAM,WACN,MAAO5nB,GACP,MAAM,EAAGsgB,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,EAAG,QAASxd,CAAC,EAAKwmF,GAAG,EAAG9pE,EAAGpF,CAAC,EACrF,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,QAAS/F,CAAG,EAAGynB,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC5EvmE,EAAE,MAAQiB,GAAE/nB,EAAE,EAAE,QAAS4nB,CAAC,CAAC,EAC3B,KAAM,CAAE,UAAWF,CAAC,EAAKoB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGY,CAAC,EAAGoC,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGpd,EACH,cAAe0c,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAQR,GAAE,CACT,KAAM,YACN,MAAOynE,GACP,MAAM,EAAG/uE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,EAAG,QAASxd,CAAC,EAAKsmF,GAAG,EAAG5pE,EAAGpF,CAAC,EACrF,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,SAAU/F,CAAG,EAAGynB,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC7EvmE,EAAE,MAAQiB,GACR/nB,EAAE,EAAE,QAAS4nB,CAAC,CACf,EACD,KAAM,CAAE,UAAWF,CAAC,EAAKoB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGY,CAAC,EAAGoC,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGpd,EACH,cAAe0c,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAG,MAAAqnE,GAAK,CACP,GAAG7mE,GACH,QAAS,CACP,KAAM,OACN,QAAS,IACb,CACA,EAAG8mE,GAAK,CAAC,EAAGpvE,IAAM,CAChB,KAAM,CAAE,QAASoF,EAAG,QAASQ,CAAC,EAAK2C,GAAE,CAAC,EAAGxC,EAAI,CAC3C,GAAGH,EACH,WAAWE,EAAG,CACZ9F,EAAE,OAAS8F,IAAM,MAAQA,IAAM,QAAU9F,EAAE,MAAM,WAAW8F,CAAC,CACnE,CACG,EACD,MAAO,CAAE,QAASV,EAAG,QAASW,CAAG,CACnC,EAAGspE,GAAM,GAAM,EAAE,QAAUnnE,GAAE,MAAO,CAAE,IAAK,MAAQ,EAAE,EAAE,SAAS,EAAI,KAAMmC,GAAqB,OAAO,OAAuB,OAAO,eAAe,CACjJ,UAAW,KACX,YAAa8kE,GACb,OAAQE,GACR,YAAaD,EACf,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAG7lE,GAAK,CACjD,GAAG4lE,GACH,OAAQ,CACN,KAAM,CAAC,OAAQ,KAAK,EACpB,QAAS,IAAM,EACnB,CACA,EAAGG,GAAK,CAAC,EAAGtvE,IAAM,CAChB,KAAM,CAAE,QAASoF,EAAG,QAASQ,CAAC,EAAKwpE,GAAG,EAAGpvE,CAAC,EAC1C,MAAO,CAAE,QAASoF,EAAG,QAASQ,CAAG,CACnC,EAAGqF,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,WAAY1B,GACZ,WAAY+lE,EACd,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQhoE,GAAE,CACnD,KAAM,SACN,MAAOiC,GACP,MAAM,EAAGvJ,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIC,EAAE,IAAI,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAE64E,EAAE,EAAGlmE,EAAI3S,GAAE+4E,EAAE,EAAG,CAAE,QAAS5jF,EAAG,QAASpK,CAAG,EAAGgxF,GAAG,EAAGlqE,CAAC,EAChG,OAAO/gB,GAAE,SAAY,CACnB,KAAM,CAAE,MAAO2hB,CAAG,EAAGD,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC1EvmE,EAAE,MAAQiB,GAAEL,EAAEtd,CAAC,CAAC,EAAG,EAAE,SAAW,QAAU0c,EAAE,MAAM,UAAU,EAAE,MAAM,EAAGgD,GAAE9pB,EAAG8mB,EAAE,MAAO,CAAC,EACtF,KAAM,CAAE,UAAWa,CAAC,EAAKmB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGa,CAAC,EAAGb,EAAE,MAAM,WAAW,EAAE,SAAWQ,EAAE,OAAS,EAAE,EAAGE,EAAEV,EAAE,KAAK,EAAGgB,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACjH,CAAK,EAAGmC,GAAE,IAAM,CACVrB,EAAG,CACJ,GAAG,CAAE,KAAMN,EAAG,cAAeR,CAAG,CAClC,EACD,QAAS,CACP,OAAOiqE,GAAG,KAAK,MAAM,CACzB,CACA,CAAC,EAAG,MAAAE,GAAK,CACP,GAAG7vF,GACH,QAAS,CACP,GAAGA,GAAE,QACL,SAAU,EACX,EACD,OAAQ,CACN,KAAM,OACN,OAAQ,EACZ,CACA,EAAG2pB,GAAK,CAAC,EAAGrJ,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAGmpE,GACjC,EACAlvE,EACAoF,CACD,EAAEU,EAAIzkB,GACL,EACAkuF,GACA3pE,CACD,EAAEM,EAAI,CACL,GAAGH,EACH,UAAUrd,EAAG,CACXsX,EAAE,MAAM,UAAUtX,CAAC,CACpB,EACD,WAAWA,EAAG,CACZsX,EAAE,MAAM,UAAUtX,CAAC,CACzB,CACG,EACD,MAAO,CAAE,QAASod,EAAG,QAASI,CAAG,CACnC,EAAGspE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,eAAgBD,GAChB,eAAgBlmE,EAClB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQ/B,GAAE,CACnD,KAAM,aACN,MAAOioE,GACP,MAAM,EAAGvvE,EAAG,CACV,MAAMoF,EAAIS,IAAKD,EAAIC,EAAE,EAAE,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAEiT,EAAC,EAAG,CAAE,QAASN,EAAG,QAASxd,CAAC,EAAK2gB,GAAG,EAAGjE,EAAGpF,CAAC,EACrF,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,UAAW/F,EAAG,aAAc0nB,CAAC,EAAKD,EAAIpd,GAAE,EAAI,aAAM,OAAO,SAA8B,MAAGsd,EAAI,EAAE,OAASD,EAAE,EAAE,MAAM,EAAIA,EAAE,EAAE,SAAW,EAAE,EAChJZ,EAAE,MAAQiB,GAAE/nB,EAAE2nB,EAAGC,CAAC,CAAC,EACnB,KAAM,CAAE,UAAWxlB,CAAC,EAAK0mB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAG1kB,CAAC,EAAG0nB,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAAGU,EAAE,CACjC,GAAG,EACH,GAAGpd,EACH,cAAe0c,EAAE,KAClB,GAAGQ,EAAE,MAAQ,GAAIQ,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CACnD,GAAG,CAAE,MAAOQ,EAAG,cAAeR,CAAG,CACnC,EACD,QAAS,CACP,OAAO0C,GAAE,KAAK,MAAO,KAAK,MAAM,CACpC,CACA,CAAC,EAAG,MAAA2nE,GAAK,CACP,GAAGxB,GACH,IAAK,CACH,KAAM,QACN,QAAS,MACV,EACD,WAAY,CACV,KAAM,CAAC,OAAQ,KAAK,EACpB,UAAY,GAAM,OAAO,GAAK,SAAW,GAAK,MAAM,QAAQ,CAAC,EAAI,EAAE,MAAOjuE,GAAM,OAAOA,GAAK,QAAQ,EAAI,EACzG,EACD,aAAc,CACZ,KAAM,QACN,QAAS,MACV,EACD,IAAK,CACH,KAAM,OACN,SAAU,GACV,OAAQ,EACZ,CACA,EAAG0vE,GAAK,CAAC,EAAG1vE,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAGmoE,GAAG,EAAGluE,EAAGoF,CAAC,EAAGU,EAAIzkB,GAClD,EACAouF,GACA7pE,CACD,EAAEM,EAAI,CACL,GAAGH,CACJ,EACD,MAAO,CAAE,QAASD,EAAG,QAASI,CAAG,CACnC,EAAGyE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,eAAgB+kE,GAChB,eAAgBD,EAClB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQnoE,GAAE,CACnD,MAAOmoE,GACP,MAAM,EAAGzvE,EAAG,CACV,MAAMoF,EAAIS,EAAC,EAAID,EAAIlnB,GAAEsa,EAAC,EAAG+M,EAAIxS,GAAEiT,EAAC,EAAG,CAAE,QAASV,EAAG,QAASI,CAAG,EAAGwpE,GAAG,EAAGtqE,EAAGpF,CAAC,EAC1E,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,UAAWqE,CAAG,EAAGkd,EAAIjd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC9EvmE,EAAE,MAAQiB,GAAE3d,EAAE,EAAE,IAAKod,CAAC,CAAC,EACvB,KAAM,CAAE,UAAWxnB,CAAC,EAAK8oB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAG9mB,CAAC,EAAG8pB,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGW,EAAE,CACjC,GAAG,EACH,GAAGG,EACH,cAAed,EAAE,KACzB,CAAO,EAAGgB,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CAC1C,CAAK,EAAG,CAAE,cAAeA,CAAG,CACzB,EACD,QAAS,CACP,OAAO,IACX,CACA,CAAC,EAAG,MAAA8D,GAAK,CACP,GAAGimE,EACL,EAAGhmE,GAAK,CAAC,EAAGnJ,IAAM,CAChB,KAAM,CAAE,QAASoF,EAAG,QAASQ,CAAG,EAAGwpE,GAAG,EAAGpvE,CAAC,EAAG+F,EAAIxS,GAAEg5E,EAAE,EACrD,OAAOhlE,GAAE,IAAM,CACbxB,EAAG,CACJ,GAAG,CAAE,QAASX,EAAG,QAASQ,CAAG,CAChC,EAAG+pE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,aAAcxmE,GACd,aAAcD,EAChB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQ5B,GAAE,CACnD,KAAM,WACN,MAAO4B,GACP,MAAM,EAAGlJ,EAAG,CACV,MAAMoF,EAAIS,EAAG,EAAED,EAAIC,EAAE,IAAI,EAAGE,EAAIrnB,GAAEsa,EAAC,EAAG8M,EAAIvS,GAAE84E,EAAE,EAAG,CAAE,QAASnmE,EAAG,QAASxd,GAAMygB,GAAG,EAAG/D,CAAC,EACrF,OAAO/gB,GAAE,SAAY,CACnB,KAAM,CAAE,QAAS/F,CAAG,EAAGynB,EAAIpd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC5EvmE,EAAE,MAAQiB,GAAE/nB,EAAE4nB,CAAC,CAAC,EAAGkC,GAAE1f,EAAG0c,EAAE,MAAO,CAAC,EAClC,KAAM,CAAE,UAAWY,CAAC,EAAKoB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAGY,CAAC,EAAGZ,EAAE,MAAM,WAAW,EAAE,SAAWQ,EAAE,OAAS,EAAE,EAAGE,EAAEV,EAAE,KAAK,EAAGgB,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CAC5G,GAAG,CAAE,KAAMQ,EAAG,cAAeR,CAAG,CAClC,EACD,QAAS,CACP,OAAOiqE,GAAG,KAAK,MAAM,CACzB,CACA,CAAC,EAAG,MAAAO,GAAK,CACP,GAAGH,GACH,OAAQ,CACN,KAAM,OACN,SAAU,EACX,EACD,OAAQ,CACN,KAAM,MACP,EACD,OAAQ,CACN,KAAM,MACP,EACD,YAAa,CACX,KAAM,QACN,QAAS,MACV,EACD,QAAS,CACP,KAAM,MACP,EACD,IAAK,CACH,KAAM,MACP,EACD,UAAW,CACT,KAAM,QACN,QAAS,MACb,CACA,EAAGhmE,GAAK,CAAC,EAAGzJ,EAAGoF,IAAM,CACnB,KAAM,CAAE,QAASQ,EAAG,QAASG,CAAG,EAAG2pE,GAAG,EAAG1vE,EAAGoF,CAAC,EAC7C,MAAO,CACL,QAAS/jB,GACP,EACAuuF,GACAhqE,CACD,EACD,QAAS,CACP,GAAGG,CACT,CACG,CACH,EAAG8pE,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC1E,UAAW,KACX,kBAAmBpmE,GACnB,kBAAmBmmE,EACrB,EAAG,OAAO,YAAa,CAAE,MAAO,SAAU,CAAC,EAAQtoE,GAAE,CACnD,MAAOsoE,GACP,MAAM,EAAG5vE,EAAG,CACV,MAAMoF,EAAIS,EAAG,EAAED,EAAIlnB,GAAEsa,EAAC,EAAG+M,EAAIxS,GAAEiT,EAAC,EAAG,CAAE,QAASV,EAAG,QAASI,CAAC,EAAKuD,GAC9D,EACArE,EACApF,CACD,EACD,OAAO3b,GAAE,SAAY,CACnB,KAAM,CAAE,UAAWqE,CAAG,EAAGkd,EAAIjd,GAAE,EAAI,MAAMgjF,GAAA,WAAO,SAA8B,MAC9EvmE,EAAE,MAAQiB,GACR3d,EAAE,IAAI,EAAE,IAAKod,CAAC,CACf,EACD,KAAM,CAAE,UAAWxnB,CAAC,EAAK8oB,GAAEpH,EAAE,KAAK,EAClCoF,EAAE,MAAM,GAAG9mB,CAAC,EAAG8pB,GAAElC,EAAGd,EAAE,MAAO,CAAC,EAAGW,EAAE,CACjC,GAAG,EACH,GAAGG,EACH,cAAed,EAAE,KACzB,CAAO,EAAGgB,GAAE,IAAMpG,EAAE,KAAK,QAASoF,EAAE,KAAK,CAAC,CAC1C,CAAK,EAAG,CAAE,cAAeA,CAAG,CACzB,EACD,QAAS,CACP,OAAO,IACX,CACA,CAAC,EAAG,MAAA5X,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC3E,UAAW,KACX,OAAQ0d,GACR,aAAc5B,GACd,UAAWI,GACX,QAASM,GACT,mBAAoBlD,GACpB,cAAekE,GACf,aAAc0iE,GACd,YAAajjE,GACb,aAAcG,GACd,QAASC,GACT,UAAWhB,GACX,KAAMM,GACN,aAAcJ,GACd,iBAAkBX,GAClB,MAAOQ,GACP,WAAYK,GACZ,OAAQ4kE,GACR,KAAMxjE,GACN,QAASD,GACT,SAAU6jE,GACV,OAAQ5kE,GACR,MAAOY,GACP,UAAWukE,GACX,UAAW7kE,GACX,QAASglE,GACT,aAAcE,EAChB,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,CAAC;;;;;gBC9yD1C,SAAS31F,EAAS,CAElB,IAAIkuB,EAMHA,EAAI0nE,GACJC,EAAiB,QAAA71F,EAAQkuB,CAAC,CAQ3B,GAAE,SAASA,EAAG,CACfA,EAAE,IAAI,aAAa,CACf,iBAAkB,EACtB,CAAC,EAEDA,EAAE,IAAI,YAAcA,EAAE,QAAQ,OAAO,CACjC,YAAaA,EAAE,QAAQ,UAAY,gBAAkBA,EAAE,QAAQ,QAAU,cAAgB,aAEzF,QAAS,CACL,SAAU,qBACb,EAED,WAAY,SAAU7sB,EAAK,CACvB6sB,EAAE,QAAQ,UAAU,WAAW,KAAK,KAAM7sB,CAAG,EAE7C,KAAK,OAAS,CAAE,EAChB,KAAK,SAAW,GAEhB,IAAIy0F,EAAY,KAAK,WAAa5nE,EAAE,QAAQ,OAAO,MAAOA,EAAE,IAAI,YAAY,SAAU7sB,EAAI,UAAU,EACpGy0F,EAAU,MAAM,OAAS,IACzBA,EAAU,MAAM,SAAW,WAEvBz0F,EAAI,QAAQ,mBACZy0F,EAAU,MAAM,MAAQz0F,EAAI,QAAQ,iBAAmB,MAG3D,KAAK,aAAc,EAEnB6sB,EAAE,SACG,GAAG4nE,EAAW,QAAS5nE,EAAE,SAAS,IAAI,EACtC,GAAG4nE,EAAW,YAAa5nE,EAAE,SAAS,IAAI,EAC1C,GAAG4nE,EAAW,WAAY5nE,EAAE,SAAS,IAAI,EACzC,GAAG4nE,EAAW,cAAe5nE,EAAE,SAAS,IAAI,CACpD,EAED,SAAU,UAAY,CAClB,IAAI4nE,EAAY,KAAK,KAAK,aAAc,EAExC5nE,EAAE,SACG,GAAG4nE,EAAW,aAAc,KAAK,MAAO,IAAI,EAC5C,GAAG,SAAU,UAAW,KAAK,WAAY,IAAI,EAE9C5nE,EAAE,QAAQ,OACVA,EAAE,SAAS,GAAG,SAAU,KAAK,YAAa,KAAK,MAAO,IAAI,EAG9D,KAAK,KAAK,GAAG,CACT,YAAa,KAAK,MAClB,UAAW,KAAK,MAChB,UAAW,KAAK,MAChB,UAAW,KAAK,KACnB,EAAE,IAAI,CACV,EAED,YAAa,UAAY,CACrB,IAAI4nE,EAAY,KAAK,KAAK,aAAc,EAExC5nE,EAAE,SACG,IAAI4nE,EAAW,aAAc,KAAK,MAAO,IAAI,EAC7C,IAAI,SAAU,UAAW,KAAK,WAAY,IAAI,EAE/C5nE,EAAE,QAAQ,OACVA,EAAE,SAAS,IAAI,SAAU,KAAK,YAAa,KAAK,MAAO,IAAI,EAG/D,KAAK,KAAK,IAAI,CACV,YAAa,KAAK,MAClB,UAAW,KAAK,MAChB,UAAW,KAAK,MAChB,UAAW,KAAK,KACnB,EAAE,IAAI,CACV,EAED,OAAQ,SAAU6nE,EAAO9qF,EAAM,CACvB8qF,aAAiB7nE,EAAE,SACnB6nE,EAAQ,KAAK,KAAK,uBAAuBA,CAAK,GAElD,KAAK,aAAaA,EAAO9qF,CAAI,CAChC,EAED,KAAM,UAAY,CACd,KAAK,MAAO,CACf,EAED,QAAS,SAAU8J,EAAS,CACxB,OAAO,KAAK,WAAWA,CAAO,CACjC,EAED,WAAY,SAAUA,EAASpL,EAAO,CAClCA,EAAQA,IAAU,OAAYA,EAAO,KAAK,OAAO,OAEjD,IAAIwiC,EAAO,KAAK,YAAY,KAAK,WAAYp3B,EAASpL,CAAK,EAE3D,YAAK,OAAO,KAAKwiC,CAAI,EAErB,KAAK,aAAe,GAEpB,KAAK,KAAK,KAAK,sBAAuB,CAClC,YAAa,KACb,GAAIA,EAAK,GACT,MAAOxiC,CACnB,CAAS,EAEMwiC,EAAK,EACf,EAED,WAAY,SAAUA,EAAM,CACxB,IAAI2pD,EAAY,KAAK,WAMrB,OAJK,MAAM3pD,CAAI,IACXA,EAAO2pD,EAAU,SAAS3pD,CAAI,GAG9BA,GACA,KAAK,YAAYje,EAAE,KAAK,MAAMie,CAAI,CAAC,EAEnC,KAAK,aAAe,GAEpB,KAAK,KAAK,KAAK,yBAA0B,CACrC,YAAa,KACb,GAAIA,CACpB,CAAa,EAEMA,GAGJ,IACV,EAED,eAAgB,UAAY,CAIxB,QAHIF,EAAQ,KAAK,WAAW,SACxBE,EAEGF,EAAM,QACTE,EAAOF,EAAM,CAAC,EACd,KAAK,YAAY/d,EAAE,KAAK,MAAMie,CAAI,CAAC,EAEvC,OAAOF,CACV,EAED,aAAc,UAAY,CACtB,IAAIE,EAAM/nC,EAAG,EAEb,IAAKA,EAAI,EAAG,EAAI,KAAK,OAAO,OAAQA,EAAI,EAAGA,IACvC+nC,EAAO,KAAK,OAAO/nC,CAAC,EACpB+nC,EAAK,GAAG,MAAM,QAAU,MAE/B,EAED,aAAc,UAAY,CACtB,IAAIA,EAAM/nC,EAAG,EAEb,IAAKA,EAAI,EAAG,EAAI,KAAK,OAAO,OAAQA,EAAI,EAAGA,IACvC+nC,EAAO,KAAK,OAAO/nC,CAAC,EACpB+nC,EAAK,GAAG,MAAM,QAAU,EAE/B,EAED,YAAa,SAAUA,EAAM6pD,EAAU,CACnC,IAAIF,EAAY,KAAK,WACrBG,EAAU/nE,EAAE,IAAI,YAAY,SAAW,QAElC,MAAMie,CAAI,IACXA,EAAO2pD,EAAU,SAAS3pD,CAAI,GAG9BA,GAAQje,EAAE,QAAQ,SAASie,EAAM8pD,CAAO,IACpCD,GACA9nE,EAAE,QAAQ,SAASie,EAAM8pD,EAAU,WAAW,EAC9C,KAAK,KAAK,KAAK,0BAA2B,CACtC,YAAa,KACb,GAAI9pD,CACxB,CAAiB,IAEDje,EAAE,QAAQ,YAAYie,EAAM8pD,EAAU,WAAW,EACjD,KAAK,KAAK,KAAK,yBAA0B,CACrC,YAAa,KACb,GAAI9pD,CACxB,CAAiB,GAGZ,EAED,UAAW,UAAY,CACnB,OAAO,KAAK,QACf,EAED,aAAc,UAAY,CACtB,IAAI+pD,EAAc,KAAK,KAAK,QAAQ,iBAEhC9xF,EAAG,EAEP,IAAKA,EAAI,EAAG,EAAI8xF,EAAY,OAAQ9xF,EAAI,EAAGA,IACvC,KAAK,OAAO,KAAK,KAAK,YAAY,KAAK,WAAY8xF,EAAY9xF,CAAC,CAAC,CAAC,CAEzE,EAED,YAAa,SAAU0xF,EAAW/gF,EAASpL,EAAO,CAC9C,GAAIoL,EAAQ,WAAaA,IAAY,IACjC,OAAO,KAAK,iBAAiB+gF,EAAWnsF,CAAK,EAGjD,IAAIssF,EAAU/nE,EAAE,IAAI,YAAY,SAAW,QACvCioE,EAAMphF,EAAQ,SAAYkhF,EAAU,IAAMA,EAAU,YAAeA,EACnEhmF,EAAK,KAAK,iBAAiB,IAAKkmF,EAAKL,EAAWnsF,CAAK,EACrDsI,EAAW,KAAK,oBAAoBhC,EAAI8E,EAAQ,SAAUA,EAAQ,QAASA,EAAQ,YAAY,EAC/FqhF,EAAO,KAAK,SAASrhF,CAAO,EAC5BshF,EAAU,KAAK,YAAYthF,CAAO,EAClCuhF,EAAO,GAEX,OAAIF,EACAE,EAAO,eAAiBpoE,EAAE,IAAI,YAAY,SAAW,eAAiBkoE,EAAO,MACtEC,IACPC,EAAO,gBAAkBpoE,EAAE,IAAI,YAAY,SAAW,SAAWmoE,EAAU,aAG/EpmF,EAAG,UAAYqmF,EAAOvhF,EAAQ,KAC9B9E,EAAG,KAAO,IAEVie,EAAE,SACG,GAAGje,EAAI,YAAa,KAAK,iBAAkB,IAAI,EAC/C,GAAGA,EAAI,WAAY,KAAK,gBAAiB,IAAI,EAC7C,GAAGA,EAAI,YAAaie,EAAE,SAAS,eAAe,EAC9C,GAAGje,EAAI,QAASgC,CAAQ,EAEzBic,EAAE,QAAQ,OACVA,EAAE,SAAS,GAAGje,EAAI,KAAK,YAAaie,EAAE,SAAS,eAAe,EAI7DA,EAAE,QAAQ,SACXA,EAAE,SAAS,GAAGje,EAAI,QAAS,KAAK,gBAAiB,IAAI,EAGlD,CACH,GAAIie,EAAE,KAAK,MAAMje,CAAE,EACnB,GAAIA,EACJ,SAAUgC,CACb,CACJ,EAED,YAAa,SAAU6V,EAAI,CACvB,IAAIqkB,EACAl8B,EACA7L,EAAG4nB,EAAG/Z,EAEV,IAAK7N,EAAI,EAAG4nB,EAAI,KAAK,OAAO,OAAQ5nB,EAAI4nB,EAAG5nB,IAGvC,GAFA+nC,EAAO,KAAK,OAAO/nC,CAAC,EAEhB+nC,EAAK,KAAOrkB,EACZ,OAAA7X,EAAKk8B,EAAK,GACVl6B,EAAWk6B,EAAK,SAEZl6B,IACAic,EAAE,SACG,IAAIje,EAAI,YAAa,KAAK,iBAAkB,IAAI,EAChD,IAAIA,EAAI,YAAa,KAAK,gBAAiB,IAAI,EAC/C,IAAIA,EAAI,YAAaie,EAAE,SAAS,eAAe,EAC/C,IAAIje,EAAI,QAASgC,CAAQ,EAE1Bic,EAAE,QAAQ,OACVA,EAAE,SAAS,IAAIje,EAAI,KAAK,YAAaie,EAAE,SAAS,eAAe,EAG9DA,EAAE,QAAQ,SACXA,EAAE,SAAS,GAAGje,EAAI,QAAS,KAAK,gBAAiB,IAAI,GAI7D,KAAK,WAAW,YAAYA,CAAE,EAC9B,KAAK,OAAO,OAAO7L,EAAG,CAAC,EAEhB+nC,EAGf,OAAO,IACV,EAED,iBAAkB,SAAU2pD,EAAWnsF,EAAO,CAC1C,IAAIsG,EAAK,KAAK,iBAAiB,MAAOie,EAAE,IAAI,YAAY,SAAW,aAAc4nE,EAAWnsF,CAAK,EAEjG,MAAO,CACH,GAAIukB,EAAE,KAAK,MAAMje,CAAE,EACnB,GAAIA,CACP,CACJ,EAED,oBAAqB,SAAUA,EAAIvJ,EAAMitB,EAAS4iE,EAAc,CAC5D,IAAIzE,EAAK,KACLzwF,EAAM,KAAK,KACXm1F,EAActoE,EAAE,IAAI,YAAY,SAAW,iBAC3CqoE,EAAgBA,IAAiB,OAAaA,EAAe,GAEjE,OAAO,SAAUttF,EAAG,CACZilB,EAAE,QAAQ,SAASje,EAAIumF,CAAW,IAIlCD,GACAzE,EAAG,MAAO,EAGVprF,GACAA,EAAK,KAAKitB,GAAWtyB,EAAKywF,EAAG,aAAa,EAG9CA,EAAG,KAAK,KAAK,qBAAsB,CAC/B,YAAaA,EACb,GAAI7hF,CACpB,CAAa,EACJ,CACJ,EAED,iBAAkB,SAAUwmF,EAASC,EAAWZ,EAAWnsF,EAAO,CAC9D,IAAIgtF,EACA1mF,EAAK,SAAS,cAAcwmF,CAAO,EAEvC,OAAAxmF,EAAG,UAAYymF,EAEX/sF,IAAU,SACVgtF,EAAQb,EAAU,SAASnsF,CAAK,GAGhCgtF,EACAb,EAAU,aAAa7lF,EAAI0mF,CAAK,EAEhCb,EAAU,YAAY7lF,CAAE,EAGrBA,CACV,EAED,MAAO,SAAUhH,EAAG,CAChB,KAAK,aAAaA,EAAE,eAAgBA,CAAC,CACxC,EAED,aAAc,SAAUsmB,EAAItkB,EAAM,CAC9B,GAAI,KAAK,OAAO,OAAQ,CACpB,IAAI5J,EAAM,KAAK,KACfu1F,EAAav1F,EAAI,2BAA2BkuB,CAAE,EAC9CsnE,EAASx1F,EAAI,mBAAmBu1F,CAAU,EAC1CzS,EAAQj2D,EAAE,OAAOjjB,GAAQ,GAAI,CAAC,YAAa,IAAI,CAAC,EAEhD,KAAK,cAAgB,CACjB,OAAQ4rF,EACR,WAAYD,EACZ,eAAgBrnE,CACnB,EAEGtkB,GAAQA,EAAK,gBACb,KAAK,cAAc,cAAgBA,EAAK,eAG5C,KAAK,aAAaskB,CAAE,EAEf,KAAK,WACN,KAAK,WAAW,MAAM,QAAU,QAChC,KAAK,SAAW,IAGpB,KAAK,KAAK,KAAK,mBAAoB40D,CAAK,EAE/C,EAED,MAAO,UAAY,CACX,KAAK,WACL,KAAK,SAAW,GAChB,KAAK,WAAW,MAAM,QAAU,OAChC,KAAK,KAAK,KAAK,mBAAoB,CAAC,YAAa,IAAI,CAAC,EAE7D,EAED,SAAU,SAAUpvE,EAAS,CACzB,OAAOmZ,EAAE,QAAQ,QAAUnZ,EAAQ,YAAcA,EAAQ,IAC5D,EAED,YAAa,SAAUA,EAAS,CAC5B,OAAOmZ,EAAE,QAAQ,QAAUnZ,EAAQ,eAAiBA,EAAQ,OAC/D,EAED,aAAc,SAAUwa,EAAI,CACxB,IAAIunE,EAAU,KAAK,KAAK,QAAS,EAC7BhB,EAAY,KAAK,WACjBiB,EAAgB,KAAK,gBAAgBjB,CAAS,EAC9CkB,EAEA,KAAK,KAAK,QAAQ,oBAClBA,EAAS9oE,EAAE,MAAM,KAAK,KAAK,QAAQ,iBAAiB,EACpDqB,EAAKA,EAAG,IAAIynE,CAAM,GAGtBlB,EAAU,aAAevmE,EAErBA,EAAG,EAAIwnE,EAAc,EAAID,EAAQ,GACjChB,EAAU,MAAM,KAAO,OACvBA,EAAU,MAAM,MAAQ,KAAK,IAAI,KAAK,IAAIgB,EAAQ,EAAIvnE,EAAG,EAAG,CAAC,EAAGunE,EAAQ,EAAIC,EAAc,EAAI,CAAC,EAAI,OAEnGjB,EAAU,MAAM,KAAO,KAAK,IAAIvmE,EAAG,EAAG,CAAC,EAAI,KAC3CumE,EAAU,MAAM,MAAQ,QAGxBvmE,EAAG,EAAIwnE,EAAc,EAAID,EAAQ,GACjChB,EAAU,MAAM,IAAM,OACtBA,EAAU,MAAM,OAAS,KAAK,IAAI,KAAK,IAAIgB,EAAQ,EAAIvnE,EAAG,EAAG,CAAC,EAAGunE,EAAQ,EAAIC,EAAc,EAAI,CAAC,EAAI,OAEpGjB,EAAU,MAAM,IAAM,KAAK,IAAIvmE,EAAG,EAAG,CAAC,EAAI,KAC1CumE,EAAU,MAAM,OAAS,OAEhC,EAED,gBAAiB,SAAU7lF,EAAI,CAC3B,IAAInG,EAAO,KAAK,MACZmtF,EAAiBhnF,EAAG,MAAM,QAE9B,OAAI,CAACnG,GAAQ,KAAK,gBACdA,EAAO,CAAE,EAETmG,EAAG,MAAM,KAAO,YAChBA,EAAG,MAAM,MAAQ,OACjBA,EAAG,MAAM,QAAU,QAEnBnG,EAAK,EAAImG,EAAG,YACZnG,EAAK,EAAImG,EAAG,aAEZA,EAAG,MAAM,KAAO,OAChBA,EAAG,MAAM,QAAUgnF,EAEnB,KAAK,aAAe,IAGjBntF,CACV,EAED,WAAY,SAAUb,EAAG,CACrB,IAAIzI,EAAMyI,EAAE,QAGRzI,IAAQ,IACR,KAAK,MAAO,CAEnB,EAED,iBAAkB,SAAUyI,EAAG,CAC3BilB,EAAE,QAAQ,SAASjlB,EAAE,QAAUA,EAAE,WAAY,MAAM,CACtD,EAED,gBAAiB,SAAUA,EAAG,CAC1BilB,EAAE,QAAQ,YAAYjlB,EAAE,QAAUA,EAAE,WAAY,MAAM,EAE9D,CAAC,EAEDilB,EAAE,IAAI,YAAY,aAAc,cAAeA,EAAE,IAAI,WAAW,EAChEA,EAAE,MAAM,YAAc,CAClB,gBAAiB,SAAUnZ,EAAS,CAChC,OAAAmZ,EAAE,WAAW,KAAMnZ,CAAO,EAC1B,KAAK,iBAAkB,EAEhB,IACV,EAED,kBAAmB,UAAW,CAC1B,YAAK,IAAI,cAAe,KAAK,iBAAkB,IAAI,EAE5C,IACV,EAED,mBAAoB,SAAUo3B,EAAM,CAC5B,KAAK,QAAQ,iBAAiB,KAAKA,CAAI,CAC9C,EAED,+BAAgC,SAAUxiC,EAAO,CAE7C,QADIsiC,EAAQ,CAAE,EACL7nC,EAAI,EAAGA,EAAI,KAAK,QAAQ,iBAAiB,OAAQA,IAClD,KAAK,QAAQ,iBAAiBA,CAAC,EAAE,OAASuF,GAC1CsiC,EAAM,KAAK7nC,CAAC,EAIpB,QADI8yF,EAAOjrD,EAAM,IAAK,EACfirD,IAAS,QACZ,KAAK,QAAQ,iBAAiB,OAAOA,EAAK,CAAC,EAC3CA,EAAOjrD,EAAM,IAAK,CAEzB,EAED,uBAAwB,SAAUE,EAAM,CACpC,KAAK,+BAA+BA,EAAK,KAAK,EAC9C,KAAK,mBAAmBA,CAAI,CAC/B,EAED,iBAAkB,UAAY,CAC1B,KAAK,OAAS,CAAE,EAEhB,KAAK,GAAG,cAAe,KAAK,iBAAkB,IAAI,CACrD,EAED,iBAAkB,SAAUljC,EAAG,CAC3B,IAAIitF,EACAjrF,EAAMskB,EAAInrB,EAAG4nB,EAEjB,GAAI,KAAK,KAAK,YAAa,CASvB,IARA/gB,EAAOijB,EAAE,OAAO,CAAC,cAAe,IAAI,EAAGjlB,CAAC,EAExCsmB,EAAK,KAAK,KAAK,2BAA2BtmB,EAAE,aAAa,EAEpD,KAAK,QAAQ,yBACd,KAAK,KAAK,YAAY,aAAc,EAGnC7E,EAAI,EAAG4nB,EAAI,KAAK,QAAQ,iBAAiB,OAAQ5nB,EAAI4nB,EAAG5nB,IACzD8xF,EAAc,KAAK,QAAQ,iBAAiB9xF,CAAC,EAC7C,KAAK,OAAO,KAAK,KAAK,KAAK,YAAY,WAAW8xF,EAAaA,EAAY,KAAK,CAAC,EAGrF,KAAK,KAAK,KAAK,mBAAoB,KAAK,iBAAkB,IAAI,EAE9D,KAAK,KAAK,YAAY,OAAO3mE,EAAItkB,CAAI,EAE5C,EAED,iBAAkB,UAAY,CAC1B,IAAI7G,EAAG4nB,EAEP,IAAK5nB,EAAI,EAAG4nB,EAAI,KAAK,OAAO,OAAQ5nB,EAAI4nB,EAAG5nB,IACvC,KAAK,KAAK,YAAY,WAAW,KAAK,OAAOA,CAAC,CAAC,EAEnD,KAAK,OAAO,OAAS,EAEhB,KAAK,QAAQ,yBACd,KAAK,KAAK,YAAY,aAAc,EAG/C,EAED,IAAI+yF,EAAU,CAACjpE,EAAE,OAAQA,EAAE,IAAI,EAC3Bk6C,EAAiB,CACb,YAAa,GACb,iBAAkB,CAAE,EACpB,wBAAyB,EAC5B,EACD+tB,EAAK,EAAGnqE,EAEZ,IAAK,EAAI,EAAGA,EAAImrE,EAAQ,OAAQ,EAAInrE,EAAG,IACnCmqE,EAAMgB,EAAQ,CAAC,EAIVhB,EAAI,UAAU,QAGfA,EAAI,aAAa/tB,CAAc,EAF/B+tB,EAAI,UAAU,QAAU/tB,EAK5B+tB,EAAI,YAAY,UAAY,CACpB,KAAK,QAAQ,aACb,KAAK,iBAAkB,CAEnC,CAAK,EAEDA,EAAI,QAAQjoE,EAAE,MAAM,WAAW,EAEnC,OAAOA,EAAE,IAAI,WACb,CAAC,QC1hBD,MAAMkpE,GAAQ,OAAO,OAAO,EACtBC,GAAQ,OAAO,OAAO,EAErB,MAAMC,EAAO,CAChB,YAAYC,EAAOxgC,EAAS,CACpB,OAAOwgC,GAAU,WAEjBxgC,EAAUwgC,EACVA,EAAQ,GAGZ,KAAK,KAAO,EACZ,KAAK,MAAQA,EACb,KAAK,OAAS,KAAK,OAAS,OAC5B,KAAK,QAAU,IAAI,IAEfxgC,IACA,KAAK,OAAOA,CAAO,EACfwgC,EAAQ,IACR,KAAK,MAAQ,KAAK,MAGlC,CAEI,iBAAiBvgC,EAAO,CAChBA,IAAU,KAAK,SAQfA,EAAMogC,EAAK,IACPpgC,IAAU,KAAK,SACf,KAAK,OAASA,EAAMogC,EAAK,GAE7BpgC,EAAMogC,EAAK,EAAEC,EAAK,EAAIrgC,EAAMqgC,EAAK,GAEjCrgC,EAAMqgC,EAAK,IACXrgC,EAAMqgC,EAAK,EAAED,EAAK,EAAIpgC,EAAMogC,EAAK,GAErCpgC,EAAMogC,EAAK,EAAI,OACfpgC,EAAMqgC,EAAK,EAAI,KAAK,OAChB,KAAK,SACL,KAAK,OAAOD,EAAK,EAAIpgC,GAEzB,KAAK,OAASA,EACtB,CAEI,OAAOD,EAAS,CACZ,IAAIC,EACAugC,EAAQ,KAAK,OAAS,OAAO,UACjC,KAAK,QAAQ,MAAO,EACpB,IAAInC,EAAKr+B,EAAQ,OAAO,QAAQ,EAAG,EACnC,QAASygC,EAAMpC,EAAG,OAAQ,CAACoC,EAAI,KAAMA,EAAMpC,EAAG,OAAQ,CAClD,IAAInsF,EAAI,IAAIwuF,GAAMD,EAAI,MAAM,CAAC,EAAGA,EAAI,MAAM,CAAC,CAAC,EAS5C,GARA,KAAK,QAAQ,IAAIvuF,EAAE,IAAKA,CAAC,EACpB+tD,GAGDA,EAAMogC,EAAK,EAAInuF,EACfA,EAAEouF,EAAK,EAAIrgC,GAHX,KAAK,OAAS/tD,EAKlB+tD,EAAQ/tD,EACJsuF,KAAW,EACX,MAAM,IAAI,MAAM,UAAU,CAE1C,CACQ,KAAK,OAASvgC,EACd,KAAK,KAAO,KAAK,QAAQ,IACjC,CAEI,IAAIx2D,EAAK,CAEL,IAAIw2D,EAAQ,KAAK,QAAQ,IAAIx2D,CAAG,EAChC,GAAKw2D,EAEL,YAAK,iBAAiBA,CAAK,EACpBA,EAAM,KACrB,CAEI,IAAIx2D,EAAKC,EAAO,CACZ,IAAIu2D,EAAQ,KAAK,QAAQ,IAAIx2D,CAAG,EAEhC,OAAIw2D,GAEAA,EAAM,MAAQv2D,EACd,KAAK,iBAAiBu2D,CAAK,EACpB,OAIX,KAAK,QAAQ,IAAIx2D,EAAMw2D,EAAQ,IAAIygC,GAAMj3F,EAAKC,CAAK,CAAG,EAElD,KAAK,QAEL,KAAK,OAAO22F,EAAK,EAAIpgC,EACrBA,EAAMqgC,EAAK,EAAI,KAAK,QAGpB,KAAK,OAASrgC,EAIlB,KAAK,OAASA,EACd,EAAE,KAAK,KACH,KAAK,KAAO,KAAK,OAEjB,KAAK,MAAO,EAGT,KACf,CAEI,OAAQ,CAEJ,IAAIA,EAAQ,KAAK,OACjB,GAAIA,EACA,OAAI,KAAK,OAAOogC,EAAK,GAEjB,KAAK,OAAS,KAAK,OAAOA,EAAK,EAC/B,KAAK,OAAOC,EAAK,EAAI,SAGrB,KAAK,OAAS,OACd,KAAK,OAAS,QAIlBrgC,EAAMogC,EAAK,EAAIpgC,EAAMqgC,EAAK,EAAI,OAC9B,KAAK,QAAQ,OAAOrgC,EAAM,GAAG,EAC7B,EAAE,KAAK,KACA,CAACA,EAAM,IAAKA,EAAM,KAAK,CAE1C,CAMI,KAAKx2D,EAAK,CACN,IAAIyI,EAAI,KAAK,QAAQ,IAAIzI,CAAG,EAC5B,OAAOyI,EAAIA,EAAE,MAAQ,MAC7B,CAEI,IAAIzI,EAAK,CACL,OAAO,KAAK,QAAQ,IAAIA,CAAG,CACnC,CAEI,OAAOA,EAAK,CACR,IAAIw2D,EAAQ,KAAK,QAAQ,IAAIx2D,CAAG,EAChC,GAAKw2D,EACL,YAAK,QAAQ,OAAOA,EAAM,GAAG,EACzBA,EAAMogC,EAAK,GAAKpgC,EAAMqgC,EAAK,GAE3BrgC,EAAMqgC,EAAK,EAAED,EAAK,EAAIpgC,EAAMogC,EAAK,EACjCpgC,EAAMogC,EAAK,EAAEC,EAAK,EAAIrgC,EAAMqgC,EAAK,GAC1BrgC,EAAMogC,EAAK,GAElBpgC,EAAMogC,EAAK,EAAEC,EAAK,EAAI,OAEtB,KAAK,OAASrgC,EAAMogC,EAAK,GAClBpgC,EAAMqgC,EAAK,GAElBrgC,EAAMqgC,EAAK,EAAED,EAAK,EAAI,OAEtB,KAAK,OAASpgC,EAAMqgC,EAAK,GAGzB,KAAK,OAAS,KAAK,OAAS,OAGhC,KAAK,OACErgC,EAAM,KACrB,CAEI,OAAQ,CAEJ,KAAK,OAAS,KAAK,OAAS,OAC5B,KAAK,KAAO,EACZ,KAAK,QAAQ,MAAO,CAC5B,CAEI,MAAO,CACH,OAAO,IAAI0gC,GAAY,KAAK,MAAM,CAC1C,CAEI,QAAS,CACL,OAAO,IAAIC,GAAc,KAAK,MAAM,CAC5C,CAEI,SAAU,CACN,OAAO,IACf,CAEI,CAAC,OAAO,QAAQ,GAAI,CAChB,OAAO,IAAIC,GAAc,KAAK,MAAM,CAC5C,CAEI,QAAQC,EAAKC,EAAS,CACd,OAAOA,GAAY,WACnBA,EAAU,MAEd,IAAI9gC,EAAQ,KAAK,OACjB,KAAOA,GACH6gC,EAAI,KAAKC,EAAS9gC,EAAM,MAAOA,EAAM,IAAK,IAAI,EAC9CA,EAAQA,EAAMogC,EAAK,CAE/B,CAGI,QAAS,CAIL,QAHIvrE,EAAI,IAAI,MAAM,KAAK,IAAI,EACvBznB,EAAI,EACJ4yD,EAAQ,KAAK,OACVA,GACHnrC,EAAEznB,GAAG,EAAI,CAAE,IAAK4yD,EAAM,IAAK,MAAOA,EAAM,KAAO,EAC/CA,EAAQA,EAAMogC,EAAK,EAEvB,OAAOvrE,CACf,CAGI,UAAW,CAGP,QAFIA,EAAI,GACJmrC,EAAQ,KAAK,OACVA,GACHnrC,GAAK,OAAOmrC,EAAM,GAAG,EAAI,IAAMA,EAAM,MACrCA,EAAQA,EAAMogC,EAAK,EACfpgC,IACAnrC,GAAK,OAGb,OAAOA,CACf,CACA,CAEA,SAAS4rE,GAAMj3F,EAAKC,EAAO,CACvB,KAAK,IAAMD,EACX,KAAK,MAAQC,EACb,KAAK22F,EAAK,EAAI,OACd,KAAKC,EAAK,EAAI,MAClB,CAEA,SAASO,GAAcG,EAAa,CAChC,KAAK,MAAQA,CACjB,CACAH,GAAc,UAAU,OAAO,QAAQ,EAAI,UAAY,CACnD,OAAO,IACX,EACAA,GAAc,UAAU,KAAO,UAAY,CACvC,IAAII,EAAM,KAAK,MACf,OAAIA,GACA,KAAK,MAAQA,EAAIZ,EAAK,EACf,CAAE,KAAM,GAAO,MAAO,CAACY,EAAI,IAAKA,EAAI,KAAK,CAAG,GAE5C,CAAE,KAAM,GAAM,MAAO,MAAW,CAE/C,EAEA,SAASN,GAAYK,EAAa,CAC9B,KAAK,MAAQA,CACjB,CACAL,GAAY,UAAU,OAAO,QAAQ,EAAI,UAAY,CACjD,OAAO,IACX,EACAA,GAAY,UAAU,KAAO,UAAY,CACrC,IAAIM,EAAM,KAAK,MACf,OAAIA,GACA,KAAK,MAAQA,EAAIZ,EAAK,EACf,CAAE,KAAM,GAAO,MAAOY,EAAI,GAAK,GAE/B,CAAE,KAAM,GAAM,MAAO,MAAW,CAE/C,EAEA,SAASL,GAAcI,EAAa,CAChC,KAAK,MAAQA,CACjB,CACAJ,GAAc,UAAU,OAAO,QAAQ,EAAI,UAAY,CACnD,OAAO,IACX,EACAA,GAAc,UAAU,KAAO,UAAY,CACvC,IAAIK,EAAM,KAAK,MACf,OAAIA,GACA,KAAK,MAAQA,EAAIZ,EAAK,EACf,CAAE,KAAM,GAAO,MAAOY,EAAI,KAAO,GAEjC,CAAE,KAAM,GAAM,MAAO,MAAW,CAE/C,ECnUA,SAASC,GAAWhmF,EAAU0hB,EAAS,CACnC,IAAIukE,EAAe,EACfC,EAAa,KAEjBA,EAAa,YAAY,UAAY,CACjC,GAAID,GAAgB,GAChB,oBAAcC,CAAU,EAClB,IAAI,MAAM,0CAA0C,EAExD,OAAO,QAAY,OAAO,OAAO,MAAU,OAAO,OAAO,KAAK,MAChE,cAAcA,CAAU,EACxBlmF,EAAS,KAAK0hB,CAAO,GAEzB,EAAEukE,CACL,EAAE,GAAG,CACV,CAIA,EAAE,UAAU,aAAe,EAAE,UAAU,OAAO,CAC1C,QAAS,CACL,QAAS,GAGT,KAAM,UACN,cAAe,EAClB,EAED,WAAY,SAAUnjF,EAAS,CAC3B,EAAE,UAAU,UAAU,WAAW,KAAK,KAAMA,CAAO,EAGnD,KAAK,eAAiB,GACtB,KAAK,KAAO,IAAIuiF,GAAO,GAAG,EAE1B,KAAK,eAAiB,KAAK,QAAQ,OAAS,SAAW,EAAI,EAE3D,KAAK,qBAAuB,KAAK,gBAAgB,KAAK,IAAI,CAC7D,EAED,MAAO,SAAUj2F,EAAK,CAClB,EAAE,UAAU,UAAU,MAAM,KAAK,KAAMA,CAAG,EAC1C,KAAK,qBAAsB,EAKvB,KAAK,gBACLA,EAAI,gBAAgB,WAAW,YAAY,KAAK,cAAc,EAE9D,KAAK,uBACLA,EAAI,gBAAgB,YAAY,YAAY,KAAK,qBAAqB,EAG1E42F,GAAW,IAAM,CACR,KAAK,OAGV,KAAK,YAAa,EAGlB,OAAO,KAAK,MAAM,gBAAgB,KAAK,QAAS,OAAQ,IAAM,CACrD,KAAK,OAGV,KAAK,iBAAkB,EACvB,KAAK,eAAiB,GACtC,CAAa,EACb,CAAS,CACJ,EAED,SAAU,SAAU52F,EAAK,CACrB,EAAE,UAAU,UAAU,SAAS,KAAK,KAAMA,CAAG,EAC7C,KAAK,UAAU,WAAY,EAC3BA,EAAI,WAAW,YAAY,KAAK,gBAAgB,EAC5C,KAAK,gBACL,EAAE,QAAQ,OAAO,KAAK,cAAc,EAEpC,KAAK,uBACL,EAAE,QAAQ,OAAO,KAAK,qBAAqB,EAE3C,KAAK,SACL,OAAO,KAAK,MAAM,eAAe,KAAK,QAAS,MAAM,CAE5D,EAOD,eAAgB,SAAU+2F,EAAiBrjF,EAAS,CAChD,OAAK,KAAK,aAAY,KAAK,WAAa,CAAE,GAC1C,KAAK,UAAU,IAAM,CACjB,IAAIsjF,EAAc,OAAO,KAAKD,CAAe,EACzCE,EAAc,IAAID,EAAYtjF,CAAO,EACzCujF,EAAY,OAAO,KAAK,OAAO,EAC/B,KAAK,WAAWF,CAAe,EAAIE,CAC/C,CAAS,EACM,IACV,EAID,kBAAmB,SAAUF,EAAiB,CAC1C,YAAK,UAAU,IAAM,CACjB,IAAIE,EAAc,KAAK,YAAc,KAAK,WAAWF,CAAe,EAChEE,IACAA,EAAY,OAAO,IAAI,EACvB,OAAO,KAAK,WAAWF,CAAe,EAEtD,CAAS,EACM,IACV,EAED,qBAAsB,UAAY,CACzB,KAAK,mBACN,KAAK,iBAAmB,EAAE,QAAQ,OAAO,MAAO,gDAAgD,EAChG,KAAK,iBAAiB,GAAK,oBAAsB,EAAE,KAAK,MAAM,KAAK,gBAAgB,EACnF,KAAK,iBAAiB,MAAM,cAAgB,OAC5C,KAAK,iBAAiB,MAAM,WAAa,SAEzC,EAAE,SAAS,IAAI,KAAK,gBAAgB,GAExC,KAAK,KAAK,aAAY,EAAG,YAAY,KAAK,gBAAgB,EAE1D,KAAK,WAAW,KAAK,QAAQ,OAAO,EACpC,MAAMG,EAAQ,KAAK,iBAAiB,MAChC,KAAK,KAAK,QAAQ,SAAW,GAE7BA,EAAM,MAAQ,OACdA,EAAM,OAAS,SAEfA,EAAM,MAAQ,OACdA,EAAM,OAAS,QAEnBA,EAAM,OAAS,GAEf,KAAK,gBAAgB,KAAK,gBAAgB,CAC7C,EAED,YAAa,UAAY,CACrB,GAAI,MAAK,QAIT,KAAIC,EAAgB,CAChB,OAAQ,CAAE,IAAK,EAAG,IAAK,CAAG,EAC1B,KAAM,EACN,KAAM,EACN,iBAAkB,GAClB,kBAAmB,GACnB,UAAW,GACX,uBAAwB,GACxB,YAAa,GACb,UAAW,KAAK,QAAQ,KACxB,OAAQ,KAAK,QAAQ,QAAU,CAAE,EACjC,gBAAiB,aACpB,EAEG,KAAK,QAAQ,QACbA,EAAc,MAAQ,KAAK,QAAQ,MACnCA,EAAc,OAAS,QAG3B,IAAIn3F,EAAM,IAAI,OAAO,KAAK,IAAI,KAAK,iBAAkBm3F,CAAa,EAElE,KAAK,QAAUn3F,EAEf,KAAK,QAAS,EAId,KAAK,KAAK,UAAW,CAAE,UAAWA,CAAG,CAAE,EAEvC,KAAK,cAAe,EACpB,KAAK,KAAK,iBAAkB,KAAK,iBAAiB,EACrD,EAED,gBAAiB,SAAyBszC,EAAM,CACvC,KAAK,YAAW,KAAK,UAAY,IAAI,iBAAiB,KAAK,aAAa,KAAK,IAAI,CAAC,GAGvF,KAAK,UAAU,QAAQA,EAAM,CAAE,UAAW,GAAM,QAAS,GAAM,EAI/D,MAAM,UAAU,QAAQ,KAAKA,EAAK,iBAAiB,KAAK,EAAG,KAAK,oBAAoB,CACvF,EAED,cAAe,UAAY,CACvB,MAAM7sB,EAAK,YAAY,IAAM,CACzB,MAAM2wE,EAAgB,KAAK,QAAQ,KAAK,cACxC,GAAI,CAACA,EACD,OAEJ,cAAc3wE,CAAE,EAChB,IAAI4wE,EAEJ,OAAO,KAAKD,CAAa,EAAE,QAAQ,SAAUj4F,EAAK,CAC9C,MAAMyP,EAAKwoF,EAAcj4F,CAAG,EACxByP,EAAG,KACCA,EAAG,IAAI,CAAC,YAAa,OACrByoF,EAAYzoF,EAGpC,CAAa,EAGD,KAAK,KAAK,iBAAkB,CAAE,UAAAyoF,CAAS,CAAE,CAC5C,EAAE,EAAE,CACR,EAED,kBAAmB,SAAUC,EAAI,CAC7B,GAAI,CAAC,KAAK,KACN,OAGJ,MAAM5zD,EAAM,OAAO,KAAK,gBAClB6zD,EAAO,KAAK,sBAAwBD,EAAG,UAAU,IAAI5zD,EAAI,YAAY,EAC3E,EAAE,QAAQ,SAAS6zD,EAAK,6CAA6C,EACrE,EAAE,SAAS,wBAAwBA,CAAG,EACtCA,EAAI,MAAM,OAAS,OACnB,KAAK,KAAK,gBAAgB,YAAY,YAAYA,CAAG,EAErD,KAAK,eAAiBD,EAAG,UAAU,IAAI5zD,EAAI,WAAW,EACtD,KAAK,eAAe,MAAM,cAAgB,OAC1C,KAAK,KAAK,gBAAgB,WAAW,YAAY,KAAK,cAAc,CACvE,EAED,aAAc,SAAsB8zD,EAAW,CAC3C,QAASz0F,EAAI,EAAGA,EAAIy0F,EAAU,OAAQ,EAAEz0F,EAEpC,QADI6oF,EAAW4L,EAAUz0F,CAAC,EACjB+nB,EAAI,EAAGA,EAAI8gE,EAAS,WAAW,OAAQ,EAAE9gE,EAAG,CACjD,IAAIwoB,EAAOs4C,EAAS,WAAW9gE,CAAC,EAE5BwoB,aAAgB,iBAChB,KAAK,gBAAgBA,CAAI,EAClBA,aAAgB,aACvB,MAAM,UAAU,QAAQ,KAAKA,EAAK,iBAAiB,KAAK,EAAG,KAAK,oBAAoB,CAExG,CAEK,EAKD,YAAa,8CAGb,WAAY,4CAEZ,gBAAiB,SAAyBmkD,EAAS,CAC/C,IAAIC,EACAnjF,EAAQkjF,EAAQ,IAAI,MAAM,KAAK,WAAW,EAC1CE,EAAW,EAyBf,GAvBIpjF,GACAmjF,EAAS,CACL,EAAGnjF,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,CACb,EACG,KAAK,eAAiB,IACtBkjF,EAAQ,MAAM,OAAS,EACvBE,EAAW,KAGfpjF,EAAQkjF,EAAQ,IAAI,MAAM,KAAK,UAAU,EACrCljF,IACAmjF,EAAS,CACL,EAAGnjF,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,EACV,EAAGA,EAAM,CAAC,CACb,GAGLojF,EAAW,GAGXD,EAAQ,CACR,IAAIE,EAAU,KAAK,iBAAiBF,CAAM,EAC1CD,EAAQ,MAAM,SAAW,WAEzB,IAAIt4F,EAAMy4F,EAAU,IAAMD,EAE1B,KAAK,KAAK,IAAIx4F,EAAKs4F,CAAO,EAEtBt4F,KAAO,KAAK,gBAAkB,KAAK,eAAeA,CAAG,IAErD,KAAK,eAAeA,CAAG,EAAE,QAAQyR,GAAYA,EAAS6mF,CAAO,CAAC,EAC9D,OAAO,KAAK,eAAet4F,CAAG,EAE9C,CACK,EAED,WAAY,SAAUu4F,EAAQl1D,EAAM,CAChC,MAAMrjC,EAAM,KAAK,iBAAiBu4F,CAAM,EACpCG,EAAgB,EAAE,QAAQ,OAAO,KAAK,EAE1CA,EAAc,MAAM,UAAY,OAChCA,EAAc,QAAQ,QAAU,KAAK,eACrCr1D,EAAOA,EAAK,KAAK,KAAM,KAAMq1D,CAAa,EAE1C,QAAS90F,EAAI,EAAGA,EAAI,KAAK,eAAgB,EAAEA,EAAG,CAC1C,MAAM+0F,EAAO34F,EAAM,IAAM4D,EACrB00F,EAAU,KAAK,KAAK,IAAIK,CAAI,EAC5BL,GACAI,EAAc,YAAY,KAAK,OAAOJ,CAAO,CAAC,EAC9C,EAAEI,EAAc,QAAQ,UAExB,KAAK,eAAeC,CAAI,EAAI,KAAK,eAAeA,CAAI,GAAK,CAAE,EAC3D,KAAK,eAAeA,CAAI,EAAE,MACtB,SAAUxtE,EAAY,CAClB,OAAO,SAAUmtE,EAAS,CACtBntE,EAAE,YAAY,KAAK,OAAOmtE,CAAO,CAAC,EAClC,EAAEntE,EAAE,QAAQ,QACP,SAASA,EAAE,QAAQ,OAAO,GAC3BkY,EAAM,CAEtC,GAA0B,KAAK,IAAI,CACnC,GAAsB,KAAK,IAAI,EAAEq1D,CAAa,CAC7B,EAEjB,CAEQ,OAAK,SAASA,EAAc,QAAQ,OAAO,GACvC,EAAE,KAAK,iBAAiBr1D,CAAI,EAEzBq1D,CACV,EAED,OAAQ,SAAUJ,EAAS,CACvB,MAAMM,EAAgBN,EAAQ,UAAU,EAAI,EAC5C,OAAAM,EAAc,MAAM,WAAa,UAC1BA,CACV,EAED,iBAAkB,UAAY,CAG1B,MAAMC,EAAY,KAAK,KAAK,QAAS,EACjCC,EAAgB,KAAK,QAAQ,QAAS,EAEtC,CAACD,GAAa,CAACC,IAGfA,IAAkBD,GAClBC,EAAgB,KAAK,QAAQ,gBAI7B,KAAK,kBAAkBA,CAAa,CAE3C,EAED,kBAAmB,SAAUD,EAAW,CAChCA,IAAc,KAAK,QAAQ,gBAC3B,KAAK,QAAQ,cAAgBA,EAC7B,KAAK,WAAY,EAExB,EAED,QAAS,SAAUE,EAAQ,CAGvB,GAAI,KAAK,QAAS,CACdA,EAASA,GAAU,KAAK,KAAK,UAAW,EACxC,MAAMC,EAAU,IAAI,OAAO,KAAK,OAAOD,EAAO,IAAKA,EAAO,GAAG,EACzDE,EAAO,KAAK,MAAM,KAAK,KAAK,QAAO,CAAE,EACrCC,EAAa,KAAK,QAAQ,QAAS,EAEvC,KAAK,QAAQ,UAAUF,CAAO,EAG1BC,IAASC,IACT,KAAK,QAAQ,QAAQD,CAAI,EAErB,KAAK,gBAAgB,KAAK,iBAAkB,EAGhE,CAEQ,EAAE,UAAU,UAAU,QAAQ,KAAK,KAAMF,CAAM,CAClD,EAKD,UAAW,SAAUtnF,EAAU0hB,EAAS,CACpC,OAAI,KAAK,QACL1hB,EAAS,KAAK0hB,GAAW,KAAM,CAAE,OAAQ,KAAM,EAE/C,KAAK,GAAG,UAAW1hB,EAAU0hB,CAAO,EAEjC,IACf,CACA,CAAC,EAID,EAAE,UAAU,aAAe,SAAU5e,EAAS,CAC1C,OAAO,IAAI,EAAE,UAAU,aAAaA,CAAO,CAC/C,EClZA,SAAS4kF,GAAUtoE,EAASuoE,EAAYn1F,EAAGuzC,EAAW,CAClD,SAAS6hD,EAAMp5F,EAAO,CAAE,OAAOA,aAAiBgE,EAAIhE,EAAQ,IAAIgE,EAAE,SAAU0U,EAAS,CAAEA,EAAQ1Y,CAAK,CAAE,CAAE,CAAI,CAC5G,OAAO,IAAKgE,IAAMA,EAAI,UAAU,SAAU0U,EAASoD,EAAQ,CACvD,SAASmd,EAAUj5B,EAAO,CAAE,GAAI,CAAE6tF,EAAKt2C,EAAU,KAAKv3C,CAAK,CAAC,CAAE,OAAUwI,EAAG,CAAEsT,EAAOtT,CAAC,EAAM,CAC3F,SAAS0wB,EAASl5B,EAAO,CAAE,GAAI,CAAE6tF,EAAKt2C,EAAU,MAASv3C,CAAK,CAAC,CAAI,OAAQwI,EAAG,CAAEsT,EAAOtT,CAAC,EAAM,CAC9F,SAASqlF,EAAKtoF,EAAQ,CAAEA,EAAO,KAAOmT,EAAQnT,EAAO,KAAK,EAAI6zF,EAAM7zF,EAAO,KAAK,EAAE,KAAK0zB,EAAWC,CAAQ,CAAI,CAC9G20D,GAAMt2C,EAAYA,EAAU,MAAM3mB,EAAuB,CAAE,IAAG,KAAI,CAAE,CAC5E,CAAK,CACL,CAOA,SAASyoE,GAAyBt0F,EAAG,CACpC,OAAOA,GAAKA,EAAE,YAAc,OAAO,UAAU,eAAe,KAAKA,EAAG,SAAS,EAAIA,EAAE,QAAaA,CACjG,CAMA,IAAIu0F,GAAgB,SAASC,EAAMxrF,EAAGC,EAAG,CACvC,GAAID,IAAMC,EAAG,MAAO,GAEpB,GAAID,GAAKC,GAAK,OAAOD,GAAK,UAAY,OAAOC,GAAK,SAAU,CAC1D,GAAID,EAAE,cAAgBC,EAAE,YAAa,MAAO,GAE5C,IAAIiP,EAAQtZ,EAAGa,EACf,GAAI,MAAM,QAAQuJ,CAAC,EAAG,CAEpB,GADAkP,EAASlP,EAAE,OACPkP,GAAUjP,EAAE,OAAQ,MAAO,GAC/B,IAAKrK,EAAIsZ,EAAQtZ,MAAQ,GACvB,GAAI,CAAC41F,EAAMxrF,EAAEpK,CAAC,EAAGqK,EAAErK,CAAC,CAAC,EAAG,MAAO,GACjC,MAAO,EACb,CAII,GAAIoK,EAAE,cAAgB,OAAQ,OAAOA,EAAE,SAAWC,EAAE,QAAUD,EAAE,QAAUC,EAAE,MAC5E,GAAID,EAAE,UAAY,OAAO,UAAU,QAAS,OAAOA,EAAE,QAAO,IAAOC,EAAE,QAAS,EAC9E,GAAID,EAAE,WAAa,OAAO,UAAU,SAAU,OAAOA,EAAE,SAAQ,IAAOC,EAAE,SAAU,EAIlF,GAFAxJ,EAAO,OAAO,KAAKuJ,CAAC,EACpBkP,EAASzY,EAAK,OACVyY,IAAW,OAAO,KAAKjP,CAAC,EAAE,OAAQ,MAAO,GAE7C,IAAKrK,EAAIsZ,EAAQtZ,MAAQ,GACvB,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKqK,EAAGxJ,EAAKb,CAAC,CAAC,EAAG,MAAO,GAEhE,IAAKA,EAAIsZ,EAAQtZ,MAAQ,GAAI,CAC3B,IAAI5D,EAAMyE,EAAKb,CAAC,EAEhB,GAAI,CAAC41F,EAAMxrF,EAAEhO,CAAG,EAAGiO,EAAEjO,CAAG,CAAC,EAAG,MAAO,EACzC,CAEI,MAAO,EACX,CAGE,OAAOgO,IAAIA,GAAKC,IAAIA,CACtB,EAEI23D,GAAuB0zB,GAAwBC,EAAa,EAiBhE,MAAME,GAAa,uBAInB,IAAIC,IACH,SAAUA,EAAc,CACrBA,EAAaA,EAAa,YAAiB,CAAC,EAAI,cAChDA,EAAaA,EAAa,QAAa,CAAC,EAAI,UAC5CA,EAAaA,EAAa,QAAa,CAAC,EAAI,UAC5CA,EAAaA,EAAa,QAAa,CAAC,EAAI,SAChD,GAAGA,KAAiBA,GAAe,GAAG,EAoBtC,MAAMC,EAAO,CAUT,YAAY,CAAE,OAAAC,EAAQ,mBAAAC,EAAoB,QAAAC,EAAS,OAAAC,EAAQ,GAAAzyE,EAAKmyE,GAAY,SAAAO,EAAU,UAAAC,EAAY,GAAI,OAAAC,EAAQ,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,EAAU,EAAG,IAAA9nF,EAAM,0CAA2C,QAAAq1B,GAAY,CAkBnM,GAjBA,KAAK,UAAY,CAAE,EACnB,KAAK,KAAO,GACZ,KAAK,QAAU,GACf,KAAK,OAAS,CAAE,EAChB,KAAK,OAASgyD,EACd,KAAK,mBAAqBC,EAC1B,KAAK,QAAUC,EACf,KAAK,OAASC,EACd,KAAK,GAAKzyE,GAAMmyE,GAChB,KAAK,SAAWO,EAChB,KAAK,UAAYC,EACjB,KAAK,OAASC,EACd,KAAK,MAAQC,EACb,KAAK,OAASC,EACd,KAAK,QAAUC,EACf,KAAK,IAAM9nF,EACX,KAAK,QAAUq1B,EACX+xD,GAAO,SAAU,CACjB,GAAI,CAAC/zB,GAAQ,KAAK,QAAS+zB,GAAO,SAAS,OAAO,EAC9C,MAAM,IAAI,MAAM,2DAA2D,KAAK,UAAU,KAAK,OAAO,CAAC,QAAQ,KAAK,UAAUA,GAAO,SAAS,OAAO,CAAC,EAAE,EAE5J,OAAOA,GAAO,QAC1B,CACQA,GAAO,SAAW,IAC1B,CACI,IAAI,SAAU,CACV,MAAO,CACH,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,GAAI,KAAK,GACT,UAAW,KAAK,UAChB,SAAU,KAAK,SACf,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,IAAK,KAAK,IACV,mBAAoB,KAAK,kBAC5B,CACT,CACI,IAAI,QAAS,CACT,OAAI,KAAK,OAAO,OACLD,GAAa,QAEpB,KAAK,KACEA,GAAa,QAEpB,KAAK,QACEA,GAAa,QAEjBA,GAAa,WAC5B,CACI,IAAI,QAAS,CACT,OAAO,KAAK,MAAQ,CAAC,KAAK,SAAW,KAAK,OAAO,QAAU,KAAK,QAAU,CAClF,CAOI,WAAY,CACR,IAAInnF,EAAM,KAAK,IACf,OAAAA,GAAO,+CACH,KAAK,SACLA,GAAO,QAAQ,KAAK,MAAM,IAE1B,KAAK,UACLA,GAAO,YAAY,KAAK,OAAO,IAE/B,KAAK,SACLA,GAAO,WAAW,KAAK,MAAM,IAE7B,KAAK,UAAU,OAAS,IACxBA,GAAO,cAAc,KAAK,UAAU,KAAK,GAAG,CAAC,IAE7C,KAAK,WACLA,GAAO,aAAa,KAAK,QAAQ,IAEjC,KAAK,SACLA,GAAO,WAAW,KAAK,MAAM,IAE7B,KAAK,UACLA,GAAO,MAAM,KAAK,OAAO,IAEzB,KAAK,SACLA,GAAO,YAAY,KAAK,OAAO,KAAK,GAAG,CAAC,IAExC,KAAK,qBACLA,GAAO,yBAAyB,KAAK,kBAAkB,IAEpDA,CACf,CACI,cAAe,CACX,MAAM+nF,EAAS,SAAS,eAAe,KAAK,EAAE,EAC1CA,GACAA,EAAO,OAAQ,CAE3B,CAKI,MAAO,CACH,OAAO,KAAK,YAAa,CACjC,CAOI,aAAc,CACV,OAAO,IAAI,QAAQ,CAAC3hF,EAASoD,IAAW,CACpC,KAAK,aAAcvJ,GAAQ,CAClBA,EAIDuJ,EAAOvJ,EAAI,KAAK,EAHhBmG,EAAQ,OAAO,MAAM,CAKzC,CAAa,CACb,CAAS,CACT,CACI,cAAchF,EAAM,CAChB,YAAK,QAAS,EACP,OAAO,KAAK,cAAcA,CAAI,CAC7C,CAKI,aAAazI,EAAI,CACb,KAAK,UAAU,KAAKA,CAAE,EACtB,KAAK,QAAS,CACtB,CAII,WAAY,CACR,IAAIrG,EAAI+lB,EACR,GAAI,SAAS,eAAe,KAAK,EAAE,EAAG,CAElC,KAAK,SAAU,EACf,MACZ,CACQ,MAAMzf,EAAS,CACX,IAAK,KAAK,OACV,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,UAAW,KAAK,UAAU,QAAU,KAAK,UACzC,EAAG,KAAK,QACR,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,OAAQ,KAAK,OACb,mBAAoB,KAAK,kBAC5B,EAED,OAAO,KAAKA,CAAM,EAAE,QAEnBnL,GAAQ,CAACmL,EAAOnL,CAAG,GAAK,OAAOmL,EAAOnL,CAAG,CAAC,EACpC,GAAA4qB,GAAM/lB,EAAK,QAAW,KAA4B,OAAS,OAAO,UAAY,MAAQA,IAAO,OAAS,OAASA,EAAG,QAAU,MAAQ+lB,IAAO,SAAkBA,EAAG,gBAIjKc,GAAM,CAEJ,IAAIpN,EAAGtQ,EAAGzF,EAAGqV,EAAI,iCAAkC,EAAI,SAAU4N,EAAI,gBAAiBwB,EAAI,SAAUnU,EAAI,SAAU5K,EAAI,OAEtHA,EAAIA,EAAE,CAAC,IAAMA,EAAE,CAAC,EAAI,IAEpB,MAAMsd,EAAItd,EAAE,OAASA,EAAE,KAAO,CAAE,GAAGmd,EAAI,IAAI,IAAO3iB,EAAI,IAAI,gBAAmB6iB,EAAI,IAEjFhN,IAAMA,EAAI,IAAI,QAAQ,CAAC3X,EAAGukB,IAAMiuE,GAAU,KAAM,OAAQ,OAAQ,WAAa,CACzE,IAAIt0F,EACJ,MAAOmJ,EAAI6K,EAAE,cAAc,QAAQ,EACnC7K,EAAE,GAAK,KAAK,GACZvF,EAAE,IAAI,YAAa,CAAC,GAAG2iB,CAAC,EAAI,EAAE,EAE9B,IAAK7iB,KAAKmjB,EACNjjB,EAAE,IAAIF,EAAE,QAAQ,SAAWmiB,GAAM,IAAMA,EAAE,CAAC,EAAE,YAAW,CAAE,EAAGgB,EAAEnjB,CAAC,CAAC,EACpEE,EAAE,IAAI,WAAY,EAAI,SAAWukB,CAAC,EAClChf,EAAE,IAAM,KAAK,IAAM,IAAMvF,EACzB8iB,EAAEyB,CAAC,EAAIrmB,EACPqH,EAAE,QAAU,IAAOsQ,EAAI4M,EAAE,MAAMtN,EAAI,kBAAkB,CAAC,EAEtD5P,EAAE,MAAQ,KAAK,SAAWnJ,EAAKgU,EAAE,cAAc,eAAe,KAAO,MAAQhU,IAAO,OAAS,OAASA,EAAG,QAAU,GACnHgU,EAAE,KAAK,OAAO7K,CAAC,CAClB,EAAC,GAEFud,EAAEC,CAAC,EAAI,QAAQ,KAAK5N,EAAI,8BAA+B8N,CAAC,EAAKH,EAAEC,CAAC,EAAI,CAAC7kB,KAAMukB,IAAME,EAAE,IAAIzkB,CAAC,GAAK2kB,EAAG,EAAC,KAAK,IAAMC,EAAEC,CAAC,EAAE7kB,EAAG,GAAGukB,CAAC,CAAC,CAC5H,GAAE/f,CAAM,EAMb,MAAMovF,EAAkB,KAAK,UAAU,IAAKC,GAAY,KAAK,cAAcA,CAAO,CAAC,EAE9ED,EAAgB,QACjBA,EAAgB,KAAK,KAAK,cAAc,MAAM,CAAC,EAEnD,QAAQ,IAAIA,CAAe,EAAE,KAAK,IAAM,KAAK,WAAanxF,GAAU,CAChE,MAAMu6E,EAAQ,IAAI,WAAW,QAAS,CAAE,MAAAv6E,CAAO,GAC/C,KAAK,kBAAkBu6E,CAAK,CACxC,CAAS,CACT,CAII,OAAQ,CACJ,KAAK,aAAc,EACnB,KAAK,KAAO,GACZ,KAAK,QAAU,GACf,KAAK,OAAS,CAAE,EAChB,KAAK,aAAe,IAC5B,CACI,uBAAwB,CAChB,KAAK,QACL,KAAK,MAAO,CAExB,CACI,kBAAkBl7E,EAAG,CAEjB,GADA,KAAK,OAAO,KAAKA,CAAC,EACd,KAAK,OAAO,QAAU,KAAK,QAAS,CACpC,MAAMs5E,EAAQ,KAAK,OAAO,OAAS,KAAK,IAAI,EAAG,KAAK,OAAO,MAAM,EACjE,QAAQ,MAAM,kDAAkDA,CAAK,MAAM,EAC3E,WAAW,IAAM,CACb,KAAK,aAAc,EACnB,KAAK,UAAW,CACnB,EAAEA,CAAK,CACpB,MAEY,KAAK,aAAet5E,EACpB,KAAK,SAAU,CAE3B,CACI,UAAW,CACP,KAAK,KAAO,GACZ,KAAK,QAAU,GACf,KAAK,UAAU,QAASkuB,GAAO,CAC3BA,EAAG,KAAK,YAAY,CAChC,CAAS,EACD,KAAK,UAAY,CAAE,CAC3B,CACI,SAAU,CAEN,GADA,KAAK,sBAAuB,EACxB,MAAK,QAIT,GAAI,KAAK,KACL,KAAK,SAAU,MAEd,CAED,GAAI,OAAO,QAAU,OAAO,OAAO,MAAQ,OAAO,OAAO,KAAK,QAAS,CACnE,QAAQ,KAAK,uJACgF,EAC7F,KAAK,SAAU,EACf,MAChB,CACY,KAAK,QAAU,GACf,KAAK,UAAW,CAC5B,CACA,CACA,CCjZK,MAACjL,GAAI,CACR,QAAS,CACP,KAAM,OACN,QAAS,KAAO,IAChB,OAAQ,EACT,EACD,KAAM,CACJ,KAAM,MACP,EACD,YAAa,CACX,KAAM,MACP,EACD,KAAM,CACJ,KAAM,OACN,OAAQ,EACT,EACD,QAAS,CACP,KAAM,QACN,OAAQ,GACR,QAAS,EACV,EACD,QAAS,CACP,KAAM,MACP,EACD,OAAQ,CACN,KAAM,MACP,EACD,SAAU,CACR,KAAM,CAAC,OAAQ,MAAO,MAAM,CAC7B,EACD,OAAQ,CACN,KAAM,QACN,QAAS,MACV,EACD,QAAS,CACP,KAAM,MACP,EACD,QAAS,CACP,KAAM,MACP,EACD,UAAW,CACT,KAAM,MACP,EAKD,cAAe,CACb,KAAM,MACP,EAID,KAAM,CACJ,KAAM,MACP,EAKD,MAAO,MACT,EAAGkB,GAAI,CAACtH,EAAG7c,EAAG4iB,IAAM,CAClB,KAAM,CAAE,QAASC,EAAG,QAASZ,GAAMiB,GAAE,UAAU,eAAerG,EAAG7c,EAAG4iB,CAAC,EAAGG,EAAI5nB,GAAE,sBAAsB0hB,EAAGoG,GAAGJ,CAAC,EAC3G,SAASJ,GAAI,CACXziB,EAAE,QAAUA,EAAE,MAAM,KAAK,MAAK,EAAIA,EAAE,MAAM,SAC9C,CACE,MAAO,CACL,QAAS+iB,EACT,QAAS,CACP,GAAGd,EACH,QAAQU,EAAG,CACT,IAAIpd,EACJ,GAAGA,EAAIvF,EAAE,QAAU,MAAQuF,EAAE,UAAYvF,EAAE,MAAM,QAAQ,aAAc,IAAK2iB,IAAM3iB,EAAE,MAAM,QAAQ,aAAa2iB,CAAC,EAAGF,IAC3H,CACA,CACG,CACH,EAAGc,GAAI/d,GAAE,CACP,KAAM,gBACN,MAAOyd,GACP,MAAMpG,EAAG7c,EAAG,CACV,KAAM,CAAE,MAAO4iB,EAAG,KAAMC,GAAM7iB,EAAGiiB,EAAI9M,EAAG,EAAE4N,EAAI5N,EAAE,IAAI,EAAGsN,EAAItN,EAAE,EAAE,EAAGwN,EAAIxnB,GAAE,aAAagoB,GAAE,iBAAiB,EACxG,GAAI,CAACR,EACH,MAAM,IAAI,MAAM,wCAAwC,EAC1D,KAAM,CAAE,QAASpd,EAAG,QAASud,CAAG,EAAGqB,GAAEtH,EAAGoF,EAAGjiB,CAAC,EAC5C,SAASoQ,GAAI,CACX,GAAI,CAAC6R,EAAE,MACL,MAAM,IAAI,MAAM,yCAAyC,EAC3DU,EAAE,CAAE,GAAG9F,EAAG,GAAGiG,EAAG,cAAeb,EAAE,MAAO,EAAGQ,EAAE,MAAQ,GAAIlnB,GAAE,IAAMsnB,EAAE,QAASZ,EAAE,KAAK,CAAC,CAC1F,CACI,OAAO/jB,GAAE,IAAM,CACb,IAAIX,EAAGmlB,EACPT,EAAE,MAAQoB,GAAExN,GAAE,UAAU,aAAatQ,CAAC,CAAC,EACvC,KAAM,CAAE,UAAWmM,CAAC,EAAKvW,GAAE,YAAYynB,CAAC,EACxC,IAAKrlB,EAAI0kB,EAAE,QAAU,MAAQ1kB,EAAE,GAAGmU,CAAC,EAAGvW,GAAE,YAAY2nB,EAAGb,EAAE,MAAOpF,CAAC,GAAI6F,EAAI,OAAO,SAAW,MAAQA,EAAE,KACnGtS,EAAG,MACA,CACH,QAAQ,MAAM,kDAAkD,EAChE,MAAM6U,EAAIpI,EAAE,eAAiB,CAAE,OAAQ,EAAI,EAC3C,IAAI8H,GAAEM,CAAC,EAAE,cAAc,MAAM,EAAE,KAAK,IAAM7U,GAAG,CACrD,CACA,CAAK,EAAG,CACF,KAAM2S,EACN,MAAON,EACP,QAAS,OACV,CACF,EACD,QAAS,CACP,OAAO,KAAK,MAAQW,GAAE,MAAO,CAAE,MAAO,CAAE,QAAS,MAAM,EAAI,IAAK,MAAM,CAAE,EAAI,IAChF,CACA,CAAC,kBCjHD,OAAO,eAAemL,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EACtCA,GAAA,eAAG,OAIzBA,GAAA,eAAyB,CACrB,QAAS,GACT,MAAO,GACP,gBAAiB,GACjB,WAAY,GACZ,MAAO,GACP,cAAe,EACnB,mBCPC,SAAS8F,EAAM,CAGZ,IAAI29D,EAAyB,UAAW,CAEhC,GAAI,CACA,GAAI39D,EAAK,iBAAoB,IAAIA,EAAK,gBAAgB,SAAS,EAAG,IAAI,KAAK,IAAM,MAC7E,OAAOA,EAAK,eAEnB,MAAW,EACZ,OAAO,IACnB,EAAY,EACJ49D,EAA6BD,GAA0B,IAAIA,EAAsB,CAAC,EAAG,CAAC,CAAC,EAAG,SAAQ,IAAO,MAEzGE,EAAyBF,GAA0B,IAAIA,EAAsB,OAAO,EAAE,IAAI,GAAG,IAAM,IACnGG,EAAgBH,GAAyB,SAAUA,EAAsB,UACzEI,EAAsB,sBAEtBC,EAA6BL,EAAyB,UAAW,CAC7D,IAAIM,EAAgB,IAAIN,EACxB,OAAAM,EAAc,OAAO,IAAK,IAAI,EACvBA,EAAc,SAAQ,IAAO,QACvC,IAAM,GACPl0F,EAAYm0F,EAAwB,UACpCt2D,EAAW,CAAC,EAAE5H,EAAK,QAAUA,EAAK,OAAO,UAE7C,GAAI29D,GAAyBC,GAA8BC,GAA0BG,GAA8BF,EAC/G,OAUJ,SAASI,EAAwBtqF,EAAQ,CACrCA,EAASA,GAAU,IAGfA,aAAkB,iBAAmBA,aAAkBsqF,KACvDtqF,EAASA,EAAO,SAAU,GAE9B,KAAMmqF,CAAmB,EAAII,EAAYvqF,CAAM,CACvD,CASI7J,EAAU,OAAS,SAAS8M,EAAM1T,EAAO,CACrCi7F,EAAS,KAAML,CAAmB,EAAGlnF,EAAM1T,CAAK,CACnD,EAQD4G,EAAU,OAAY,SAAS8M,EAAM,CACjC,OAAO,KAAMknF,CAAmB,EAAGlnF,CAAI,CAC1C,EAQD9M,EAAU,IAAM,SAAS8M,EAAM,CAC3B,IAAIwnF,EAAO,KAAMN,CAAmB,EACpC,OAAO,KAAK,IAAIlnF,CAAI,EAAIwnF,EAAKxnF,CAAI,EAAE,CAAC,EAAI,IAC3C,EAQD9M,EAAU,OAAS,SAAS8M,EAAM,CAC9B,IAAIwnF,EAAO,KAAMN,CAAmB,EACpC,OAAO,KAAK,IAAIlnF,CAAI,EAAIwnF,EAAMxnF,CAAI,EAAE,MAAM,CAAC,EAAI,CAAE,CACpD,EAQD9M,EAAU,IAAM,SAAS8M,EAAM,CAC3B,OAAOwhB,EAAe,KAAM0lE,CAAmB,EAAGlnF,CAAI,CACzD,EAUD9M,EAAU,IAAM,SAAa8M,EAAM1T,EAAO,CACtC,KAAM46F,CAAmB,EAAElnF,CAAI,EAAI,CAAC,GAAK1T,CAAK,CACjD,EAOD4G,EAAU,SAAW,UAAW,CAC5B,IAAIs0F,EAAO,KAAKN,CAAmB,EAAGztF,EAAQ,GAAIxJ,EAAG5D,EAAK2T,EAAM1T,EAChE,IAAKD,KAAOm7F,EAER,IADAxnF,EAAO6kB,EAAOx4B,CAAG,EACZ4D,EAAI,EAAG3D,EAAQk7F,EAAKn7F,CAAG,EAAG4D,EAAI3D,EAAM,OAAQ2D,IAC7CwJ,EAAM,KAAKuG,EAAO,IAAM6kB,EAAOv4B,EAAM2D,CAAC,CAAC,CAAC,EAGhD,OAAOwJ,EAAM,KAAK,GAAG,CACxB,EAGD,IAAIguF,EAAWt+D,EAAK,OAAS29D,IAA0B,CAACE,GAA0B,CAACG,GAA8B,CAACJ,GAA8B,CAACE,GAC7IS,EACAD,GAEAC,EAAY,IAAI,MAAMZ,EAAuB,CACzC,UAAW,SAAU36F,EAAQ0mB,EAAM,CAC/B,OAAO,IAAI1mB,EAAQ,IAAIk7F,EAAwBx0E,EAAK,CAAC,CAAC,EAAE,UAAY,CACpF,CACS,GAED60E,EAAU,SAAW,SAAS,UAAU,SAAS,KAAKL,CAAuB,GAE7EK,EAAYL,EAMhB,OAAO,eAAel+D,EAAM,kBAAmB,CAC3C,MAAOu+D,CACf,CAAK,EAED,IAAIC,EAAWx+D,EAAK,gBAAgB,UAEpCw+D,EAAS,SAAW,GAGhB,CAACF,GAAYt+D,EAAK,SAClBw+D,EAASx+D,EAAK,OAAO,WAAW,EAAI,mBAQlC,YAAaw+D,IACfA,EAAS,QAAU,SAAS7pF,EAAUof,EAAS,CAC3C,IAAIsqE,EAAOF,EAAY,KAAK,SAAQ,CAAE,EACtC,OAAO,oBAAoBE,CAAI,EAAE,QAAQ,SAASxnF,EAAM,CACpDwnF,EAAKxnF,CAAI,EAAE,QAAQ,SAAS1T,EAAO,CAC/BwR,EAAS,KAAKof,EAAS5wB,EAAO0T,EAAM,IAAI,CAC3C,EAAE,IAAI,CACV,EAAE,IAAI,CACV,GAMC,SAAU2nF,IACZA,EAAS,KAAO,UAAW,CACvB,IAAIH,EAAOF,EAAY,KAAK,SAAQ,CAAE,EAAGx2F,EAAO,CAAE,EAAE8D,EAAG3E,EAAG+nB,EAC1D,IAAKpjB,KAAK4yF,EACN12F,EAAK,KAAK8D,CAAC,EAIf,IAFA9D,EAAK,KAAM,EAENb,EAAI,EAAGA,EAAIa,EAAK,OAAQb,IACzB,KAAK,OAAUa,EAAKb,CAAC,CAAC,EAE1B,IAAKA,EAAI,EAAGA,EAAIa,EAAK,OAAQb,IAAK,CAC9B,IAAI5D,EAAMyE,EAAKb,CAAC,EAAGqF,EAASkyF,EAAKn7F,CAAG,EACpC,IAAK2rB,EAAI,EAAGA,EAAI1iB,EAAO,OAAQ0iB,IAC3B,KAAK,OAAO3rB,EAAKiJ,EAAO0iB,CAAC,CAAC,CAE9C,CACS,GASC,SAAU2vE,IACZA,EAAS,KAAO,UAAW,CACvB,IAAI7vD,EAAQ,CAAE,EACd,YAAK,QAAQ,SAASE,EAAMh4B,EAAM,CAC9B83B,EAAM,KAAK93B,CAAI,CAC/B,CAAa,EACM4nF,EAAa9vD,CAAK,CAC5B,GASC,WAAY6vD,IACdA,EAAS,OAAS,UAAW,CACzB,IAAI7vD,EAAQ,CAAE,EACd,YAAK,QAAQ,SAASE,EAAM,CACxBF,EAAM,KAAKE,CAAI,CAC/B,CAAa,EACM4vD,EAAa9vD,CAAK,CAC5B,GASC,YAAa6vD,IACfA,EAAS,QAAU,UAAW,CAC1B,IAAI7vD,EAAQ,CAAE,EACd,YAAK,QAAQ,SAASE,EAAMh4B,EAAM,CAC9B83B,EAAM,KAAK,CAAC93B,EAAMg4B,CAAI,CAAC,CACvC,CAAa,EACM4vD,EAAa9vD,CAAK,CAC5B,GAGD/G,IACA42D,EAASx+D,EAAK,OAAO,QAAQ,EAAIw+D,EAASx+D,EAAK,OAAO,QAAQ,GAAKw+D,EAAS,SAG1E,SAAUA,GACZ,OAAO,eAAeA,EAAU,OAAQ,CACpC,IAAK,UAAY,CACb,IAAIH,EAAOF,EAAY,KAAK,SAAU,GACtC,GAAIK,IAAa,KACb,MAAM,IAAI,UAAU,oDAAoD,EAE5E,OAAO,OAAO,KAAKH,CAAI,EAAE,OAAO,SAAUrqD,EAAM0qD,EAAK,CACjD,OAAO1qD,EAAOqqD,EAAKK,CAAG,EAAE,MAC3B,EAAE,CAAC,CACpB,CACA,CAAS,EAGL,SAAShjE,EAAOrH,EAAK,CACjB,IAAIpgB,EAAU,CACV,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,IACV,EACD,OAAO,mBAAmBogB,CAAG,EAAE,QAAQ,qBAAsB,SAAS/b,EAAO,CACzE,OAAOrE,EAAQqE,CAAK,CAChC,CAAS,CACT,CAEI,SAASxI,EAAOukB,EAAK,CACjB,OAAOA,EACF,QAAQ,QAAS,KAAK,EACtB,QAAQ,oBAAqB,SAAS/b,EAAO,CAC1C,OAAO,mBAAmBA,CAAK,CAC/C,CAAa,CACb,CAEI,SAASmmF,EAAahnE,EAAK,CACvB,IAAIjuB,EAAW,CACX,KAAM,UAAW,CACb,IAAIrG,EAAQs0B,EAAI,MAAO,EACvB,MAAO,CAAC,KAAMt0B,IAAU,OAAW,MAAOA,CAAK,CAC/D,CACS,EAED,OAAIykC,IACAp+B,EAASw2B,EAAK,OAAO,QAAQ,EAAI,UAAW,CACxC,OAAOx2B,CACV,GAGEA,CACf,CAEI,SAAS20F,EAAYvqF,EAAQ,CACzB,IAAIyqF,EAAO,CAAE,EAEb,GAAI,OAAOzqF,GAAW,SAElB,GAAIrF,EAAQqF,CAAM,EACd,QAAS9M,EAAI,EAAGA,EAAI8M,EAAO,OAAQ9M,IAAK,CACpC,IAAI+nC,EAAOj7B,EAAO9M,CAAC,EACnB,GAAIyH,EAAQsgC,CAAI,GAAKA,EAAK,SAAW,EACjCuvD,EAASC,EAAMxvD,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,MAE/B,OAAM,IAAI,UAAU,6FAA6F,CAEzI,KAGgB,SAAS3rC,KAAO0Q,EACRA,EAAO,eAAe1Q,CAAG,GACzBk7F,EAASC,EAAMn7F,EAAK0Q,EAAO1Q,CAAG,CAAC,MAKxC,CAEC0Q,EAAO,QAAQ,GAAG,IAAM,IACxBA,EAASA,EAAO,MAAM,CAAC,GAI3B,QADIstD,EAAQttD,EAAO,MAAM,GAAG,EACnBib,EAAI,EAAGA,EAAIqyC,EAAM,OAAQryC,IAAK,CACnC,IAAI1rB,EAAQ+9D,EAAOryC,CAAC,EAChBxiB,EAAQlJ,EAAM,QAAQ,GAAG,EAEzB,GAAKkJ,EACL+xF,EAASC,EAAMvuF,EAAO3M,EAAM,MAAM,EAAGkJ,CAAK,CAAC,EAAGyD,EAAO3M,EAAM,MAAMkJ,EAAQ,CAAC,CAAC,CAAC,EAGxElJ,GACAi7F,EAASC,EAAMvuF,EAAO3M,CAAK,EAAG,EAAE,CAGxD,CACA,CAEQ,OAAOk7F,CACf,CAEI,SAASD,EAASC,EAAMxnF,EAAM1T,EAAO,CACjC,IAAIuxB,EAAM,OAAOvxB,GAAU,SAAWA,EAClCA,GAAU,MAA+B,OAAOA,EAAM,UAAa,WAAaA,EAAM,SAAQ,EAAK,KAAK,UAAUA,CAAK,EAIvHk1B,EAAegmE,EAAMxnF,CAAI,EACzBwnF,EAAKxnF,CAAI,EAAE,KAAK6d,CAAG,EAEnB2pE,EAAKxnF,CAAI,EAAI,CAAC6d,CAAG,CAE7B,CAEI,SAASnmB,EAAQmmB,EAAK,CAClB,MAAO,CAAC,CAACA,GAA4B,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAvD,gBACxB,CAEI,SAAS2D,EAAe/uB,EAAKwjB,EAAM,CAC/B,OAAO,OAAO,UAAU,eAAe,KAAKxjB,EAAKwjB,CAAI,CAC7D,CAEA,GAAG,OAAOlqB,GAAW,IAAcA,GAAU,OAAO,OAAW,IAAc,OAAS+7F,EAAK,EC3X3F,IAAIC,GAAYD,IAAQA,GAAK,UAAa,UAAY,CAClDC,UAAW,OAAO,QAAU,SAAShxE,EAAG,CACpC,QAASW,EAAGznB,EAAI,EAAGsnB,EAAI,UAAU,OAAQtnB,EAAIsnB,EAAGtnB,IAAK,CACjDynB,EAAI,UAAUznB,CAAC,EACf,QAASga,KAAKyN,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGzN,CAAC,IAC1D8M,EAAE9M,CAAC,EAAIyN,EAAEzN,CAAC,EAC1B,CACQ,OAAO8M,CACV,EACMgxE,GAAS,MAAM,KAAM,SAAS,CACzC,EACA,OAAO,eAAevkE,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,GAAA,UAAoBA,GAAA,WAAqB,OAQzC,SAASwkE,GAAWr0E,EAAI0P,EAAQ,CAC5B,IAAInyB,EAAI+lB,EAAIq9C,EACRjxC,IAAW,SAAUA,EAAS,IAClC,IAAI4kE,EAAM,SACNtB,EAASsB,EAAI,cAAc,QAAQ,EAMvC,GALA,OAAO,WAAa/2F,EAAK,OAAO,aAAe,MAAQA,IAAO,OAASA,EAAK,CAAE,GAC7E+lB,EAAK,OAAO,aAAe,MAAQA,IAAO,QAAkBA,EAAG,KAAK,CACjE,MAAO,SACP,YAAa,IAAI,KAAM,EAAC,QAAS,CACzC,CAAK,EACG,EAACtD,EAGL,CAAAgzE,EAAO,MAAQ,CAACtjE,EAAO,MAEvBsjE,EAAO,MAAQ,GAAQtjE,EAAO,OAASA,EAAO,eAC1CA,EAAO,QACPsjE,EAAO,MAAQtjE,EAAO,OAE1B,IAAI6kE,EAAc,IAAI,gBAAgBH,GAAS,CAAE,GAAIp0E,CAAE,GAAM2gD,EAAKjxC,EAAO,eAAiB,MAAQixC,IAAO,OAASA,EAAK,GAAI,EAC3HqyB,EAAO,IAAM,2CAA6CuB,EAC1DD,EAAI,KAAK,YAAYtB,CAAM,EAC/B,CACkBnjE,GAAA,WAAGwkE,GAMrB,SAASG,IAAY,CACjB,OAAO,MAAM,KAAK,SAAS,qBAAqB,QAAQ,CAAC,EAAE,KAAK,SAAUxB,EAAQ,CAC9E,OAAOA,EAAO,IAAI,SAAS,6BAA6B,CAChE,CAAK,CACL,CACAnjE,GAAA,UAAoB2kE,GCtDpB,IAAIJ,GAAYD,IAAQA,GAAK,UAAa,UAAY,CAClDC,UAAW,OAAO,QAAU,SAAShxE,EAAG,CACpC,QAASW,EAAGznB,EAAI,EAAGsnB,EAAI,UAAU,OAAQtnB,EAAIsnB,EAAGtnB,IAAK,CACjDynB,EAAI,UAAUznB,CAAC,EACf,QAASga,KAAKyN,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGzN,CAAC,IAC1D8M,EAAE9M,CAAC,EAAIyN,EAAEzN,CAAC,EAC1B,CACQ,OAAO8M,CACV,EACMgxE,GAAS,MAAM,KAAM,SAAS,CACzC,EACIK,GAAUN,IAAQA,GAAK,QAAW,SAAUpwE,EAAG5iB,EAAG,CAClD,IAAIiiB,EAAI,CAAE,EACV,QAAS9M,KAAKyN,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGzN,CAAC,GAAKnV,EAAE,QAAQmV,CAAC,EAAI,IAC9E8M,EAAE9M,CAAC,EAAIyN,EAAEzN,CAAC,GACd,GAAIyN,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WACrD,QAASznB,EAAI,EAAGga,EAAI,OAAO,sBAAsByN,CAAC,EAAGznB,EAAIga,EAAE,OAAQha,IAC3D6E,EAAE,QAAQmV,EAAEha,CAAC,CAAC,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKynB,EAAGzN,EAAEha,CAAC,CAAC,IACzE8mB,EAAE9M,EAAEha,CAAC,CAAC,EAAIynB,EAAEzN,EAAEha,CAAC,CAAC,GAE5B,OAAO8mB,CACX,EACA,OAAO,eAAe5E,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,IAAIk2E,GAAW5G,GACX6G,GAAUC,GAIVC,GAA8B,UAAY,CAO1C,SAASA,EAAa70E,EAAI/S,EAAS,CAC3BA,IAAY,SAAUA,EAAUynF,GAAS,gBAC7C,KAAK,GAAK10E,EACV,KAAK,QAAU/S,EAQf,KAAK,mBAAqB,UAAY,CAAE,OAAO,OAAO,OAAW,GAAc,CACvF,CAMI,OAAA4nF,EAAa,UAAU,QAAU,UAAY,CACzC,IAAIt3F,EACJ,OAAQA,EAAK,KAAK,QAAQ,WAAa,MAAQA,IAAO,OAASA,EAAK,EACvE,EAYDs3F,EAAa,UAAU,OAAS,SAAUC,EAAS,CAC/C,IAAIC,EAAQ,KACRD,IAAY,SAAUA,EAAU,IACpC,KAAK,QAAQ,QAAUA,EACnB,KAAK,mBAAoB,GAAIA,GAAW,CAACH,GAAQ,aAAe,KAAK,QAAQ,aACzE,MAAM,QAAQ,KAAK,EAAE,EACrB,KAAK,GAAG,QAAQ,SAAU30E,EAAI,CACtB,OAAOA,GAAO,SACd20E,GAAQ,WAAW30E,EAAI,CACnB,MAAO+0E,EAAM,QAAQ,MACrB,cAAeA,EAAM,QAAQ,cAC7B,YAAaA,EAAM,QAAQ,WACvD,CAAyB,EAGDJ,GAAQ,WAAW30E,EAAG,GAAI,CACtB,MAAO+0E,EAAM,QAAQ,MACrB,cAAeA,EAAM,QAAQ,cAC7B,YAAa/0E,EAAG,WAC5C,CAAyB,CAEzB,CAAiB,EAGD20E,GAAQ,WAAW,KAAK,GAAI,CACxB,MAAO,KAAK,QAAQ,MACpB,cAAe,KAAK,QAAQ,cAC5B,YAAa,KAAK,QAAQ,WAC9C,CAAiB,EAGZ,EAMDE,EAAa,UAAU,aAAe,UAAY,CAC9C,IAAIt3F,EACJ,OAAQA,EAAK,KAAK,QAAQ,SAAW,MAAQA,IAAO,OAASA,EAAK,EACrE,EAMDs3F,EAAa,UAAU,MAAQ,SAAUG,EAAQ,CAC7C,KAAK,QAAQ,MAAQA,CACxB,EAODH,EAAa,UAAU,UAAY,UAAY,CAC3C,IAAIt3F,EACJ,OAAI,KAAK,mBAAkB,GAAM,KAAK,QAAQ,QAClC,OAAO,WAAaA,EAAK,OAAO,aAAe,MAAQA,IAAO,OAASA,EAAK,CAAE,EAEnF,EACV,EAaDs3F,EAAa,UAAU,UAAY,SAAUI,EAAYxvF,EAAMyvF,EAAqB,CAChF,IAAI33F,EAKJ,GAJI23F,IAAwB,SAAUA,EAAsB,IACxD,KAAK,QAAQ,OACb,QAAQ,IAAI,kCAAmC,CAAE,WAAYD,EAAY,KAAMxvF,EAAM,EAErF,KAAK,mBAAkB,GAAM,KAAK,QAAQ,QAAS,CACnD,IAAI0vF,EAAa,OAAO,WAAa53F,EAAK,OAAO,aAAe,MAAQA,IAAO,OAASA,EAAK,GAC7F43F,EAAU,KAAKf,GAASA,GAAS,GAAIc,CAAmB,EAAG,CAAE,MAAO,eAAgB,eAAgBzvF,EAAM,oBAAqBwvF,CAAY,EAAC,CACxJ,CACK,EAiBDJ,EAAa,UAAU,WAAa,SAAUt3F,EAAI,CAC9C,IAAI+lB,EACA/lB,IAAO,SAAUA,EAAK,IAC1B,IAAI8+E,EAAQ9+E,EAAG,MAAOojE,EAAKpjE,EAAG,SAAU63F,EAAWz0B,IAAO,OAAS,KAAOA,EAAID,EAAKnjE,EAAG,OAAQqkB,EAAS8+C,IAAO,OAAS,KAAOA,EAAIj9C,EAAKlmB,EAAG,MAAOyoF,EAAQviE,IAAO,OAAS,KAAOA,EAAIgmD,EAAKlsE,EAAG,MAAO5E,EAAQ8wE,IAAO,OAAS,KAAOA,EAAIE,EAAKpsE,EAAG,eAAgB83F,EAAiB1rB,IAAO,OAAS,GAAQA,EAAI5pE,EAAO00F,GAAOl3F,EAAI,CAAC,QAAS,WAAY,SAAU,QAAS,QAAS,gBAAgB,CAAC,EAQhY,GAPI,KAAK,QAAQ,OACb,QAAQ,IAAI,8BAA+B62F,GAAS,CAAE,MAAO/X,EACzD,SAAU+Y,EACV,OAAQxzE,EACR,MAAOokE,EACP,MAAOrtF,GAASoH,CAAI,CAAC,EAEzB,KAAK,mBAAkB,GAAM,KAAK,QAAQ,QAAS,CACnD,IAAIo1F,EAAa,OAAO,WAAa7xE,EAAK,OAAO,aAAe,MAAQA,IAAO,OAASA,EAAK,GAC7F6xE,EAAU,KAAKf,GAAS,CAAE,MAAO/X,GAA6C,cAAe,OAAQ+Y,EAAU,OAAQxzE,EAAQ,oBAAqBokE,EAAO,MAAOrtF,EAAO,mBAAoB08F,CAAgB,EAAEt1F,CAAI,CAAC,CAChO,CACK,EACM80F,CACX,IACAr2E,GAAA,QAAkBq2E,mBC3LlB,IAAIT,GAAYD,IAAQA,GAAK,UAAa,UAAY,CAClDC,UAAW,OAAO,QAAU,SAAShxE,EAAG,CACpC,QAASW,EAAGznB,EAAI,EAAGsnB,EAAI,UAAU,OAAQtnB,EAAIsnB,EAAGtnB,IAAK,CACjDynB,EAAI,UAAUznB,CAAC,EACf,QAASga,KAAKyN,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGzN,CAAC,IAC1D8M,EAAE9M,CAAC,EAAIyN,EAAEzN,CAAC,EAC1B,CACQ,OAAO8M,CACV,EACMgxE,GAAS,MAAM,KAAM,SAAS,CACzC,EACIvC,GAAasC,IAAQA,GAAK,WAAc,SAAU5qE,EAASuoE,EAAYn1F,EAAGuzC,EAAW,CACrF,SAAS6hD,EAAMp5F,EAAO,CAAE,OAAOA,aAAiBgE,EAAIhE,EAAQ,IAAIgE,EAAE,SAAU0U,EAAS,CAAEA,EAAQ1Y,CAAK,CAAI,EAAE,CAC1G,OAAO,IAAKgE,IAAMA,EAAI,UAAU,SAAU0U,EAASoD,EAAQ,CACvD,SAASmd,EAAUj5B,EAAO,CAAE,GAAI,CAAE6tF,EAAKt2C,EAAU,KAAKv3C,CAAK,CAAC,CAAI,OAAQwI,EAAG,CAAEsT,EAAOtT,CAAC,CAAI,EACzF,SAAS0wB,EAASl5B,EAAO,CAAE,GAAI,CAAE6tF,EAAKt2C,EAAU,MAASv3C,CAAK,CAAC,CAAI,OAAQwI,EAAG,CAAEsT,EAAOtT,CAAC,CAAI,EAC5F,SAASqlF,EAAKtoF,EAAQ,CAAEA,EAAO,KAAOmT,EAAQnT,EAAO,KAAK,EAAI6zF,EAAM7zF,EAAO,KAAK,EAAE,KAAK0zB,EAAWC,CAAQ,CAAE,CAC5G20D,GAAMt2C,EAAYA,EAAU,MAAM3mB,EAASuoE,GAAc,EAAE,GAAG,MAAM,CAC5E,CAAK,CACL,EACIwD,GAAenB,IAAQA,GAAK,aAAgB,SAAU5qE,EAASkV,EAAM,CACrE,IAAIp8B,EAAI,CAAE,MAAO,EAAG,KAAM,UAAW,CAAE,GAAI+gB,EAAE,CAAC,EAAI,EAAG,MAAMA,EAAE,CAAC,EAAG,OAAOA,EAAE,CAAC,CAAE,EAAI,KAAM,GAAI,IAAK,CAAE,GAAI/jB,EAAGX,EAAG0kB,EAAGgB,EAC/G,OAAOA,EAAI,CAAE,KAAMmxE,EAAK,CAAC,EAAG,MAASA,EAAK,CAAC,EAAG,OAAUA,EAAK,CAAC,CAAG,EAAE,OAAO,QAAW,aAAenxE,EAAE,OAAO,QAAQ,EAAI,UAAW,CAAE,OAAO,IAAK,GAAKA,EACvJ,SAASmxE,EAAK3xE,EAAG,CAAE,OAAO,SAAU/Q,EAAG,CAAE,OAAO2zE,EAAK,CAAC5iE,EAAG/Q,CAAC,CAAC,CAAE,CAAG,CAChE,SAAS2zE,EAAKgP,EAAI,CACd,GAAIn2F,EAAG,MAAM,IAAI,UAAU,iCAAiC,EAC5D,KAAOgD,GAAG,GAAI,CACV,GAAIhD,EAAI,EAAGX,IAAM0kB,EAAIoyE,EAAG,CAAC,EAAI,EAAI92F,EAAE,OAAY82F,EAAG,CAAC,EAAI92F,EAAE,SAAc0kB,EAAI1kB,EAAE,SAAc0kB,EAAE,KAAK1kB,CAAC,EAAG,GAAKA,EAAE,OAAS,EAAE0kB,EAAIA,EAAE,KAAK1kB,EAAG82F,EAAG,CAAC,CAAC,GAAG,KAAM,OAAOpyE,EAE3J,OADI1kB,EAAI,EAAG0kB,IAAGoyE,EAAK,CAACA,EAAG,CAAC,EAAI,EAAGpyE,EAAE,KAAK,GAC9BoyE,EAAG,CAAC,EAAC,CACT,IAAK,GAAG,IAAK,GAAGpyE,EAAIoyE,EAAI,MACxB,IAAK,GAAG,OAAAnzF,EAAE,QAAgB,CAAE,MAAOmzF,EAAG,CAAC,EAAG,KAAM,EAAO,EACvD,IAAK,GAAGnzF,EAAE,QAAS3D,EAAI82F,EAAG,CAAC,EAAGA,EAAK,CAAC,CAAC,EAAG,SACxC,IAAK,GAAGA,EAAKnzF,EAAE,IAAI,MAAOA,EAAE,KAAK,IAAG,EAAI,SACxC,QACI,GAAM+gB,EAAI/gB,EAAE,KAAM,EAAA+gB,EAAIA,EAAE,OAAS,GAAKA,EAAEA,EAAE,OAAS,CAAC,KAAOoyE,EAAG,CAAC,IAAM,GAAKA,EAAG,CAAC,IAAM,GAAI,CAAEnzF,EAAI,EAAG,QAAS,CAC1G,GAAImzF,EAAG,CAAC,IAAM,IAAM,CAACpyE,GAAMoyE,EAAG,CAAC,EAAIpyE,EAAE,CAAC,GAAKoyE,EAAG,CAAC,EAAIpyE,EAAE,CAAC,GAAK,CAAE/gB,EAAE,MAAQmzF,EAAG,CAAC,EAAG,KAAM,CACpF,GAAIA,EAAG,CAAC,IAAM,GAAKnzF,EAAE,MAAQ+gB,EAAE,CAAC,EAAG,CAAE/gB,EAAE,MAAQ+gB,EAAE,CAAC,EAAGA,EAAIoyE,EAAI,KAAM,CACnE,GAAIpyE,GAAK/gB,EAAE,MAAQ+gB,EAAE,CAAC,EAAG,CAAE/gB,EAAE,MAAQ+gB,EAAE,CAAC,EAAG/gB,EAAE,IAAI,KAAKmzF,CAAE,EAAG,KAAM,CAC7DpyE,EAAE,CAAC,GAAG/gB,EAAE,IAAI,IAAK,EACrBA,EAAE,KAAK,IAAG,EAAI,QAClC,CACYmzF,EAAK/2D,EAAK,KAAKlV,EAASlnB,CAAC,CAC5B,OAAQlB,EAAG,CAAEq0F,EAAK,CAAC,EAAGr0F,CAAC,EAAGzC,EAAI,CAAI,SAAWW,EAAI+jB,EAAI,CAAE,CACxD,GAAIoyE,EAAG,CAAC,EAAI,EAAG,MAAMA,EAAG,CAAC,EAAG,MAAO,CAAE,MAAOA,EAAG,CAAC,EAAIA,EAAG,CAAC,EAAI,OAAQ,KAAM,EAAM,CACxF,CACA,EACIC,GAAYtB,IAAQA,GAAK,UAAa,SAASn2E,EAAG,CAClD,IAAI+F,EAAI,OAAO,QAAW,YAAc,OAAO,SAAUxS,EAAIwS,GAAK/F,EAAE+F,CAAC,EAAGznB,EAAI,EAC5E,GAAIiV,EAAG,OAAOA,EAAE,KAAKyM,CAAC,EACtB,GAAIA,GAAK,OAAOA,EAAE,QAAW,SAAU,MAAO,CAC1C,KAAM,UAAY,CACd,OAAIA,GAAK1hB,GAAK0hB,EAAE,SAAQA,EAAI,QACrB,CAAE,MAAOA,GAAKA,EAAE1hB,GAAG,EAAG,KAAM,CAAC0hB,CAAG,CACnD,CACK,EACD,MAAM,IAAI,UAAU+F,EAAI,0BAA4B,iCAAiC,CACzF,EACA,OAAO,eAAe2xE,GAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,IAAAC,GAAAD,GAAA,OAAiBE,GAAAF,GAAA,UAAoB,OACjCG,GAAQ/H,GACR4G,GAAWE,GACXkB,GAAWC,GACXpB,GAAUqB,GACVC,GACAC,GAAiB,kBAQrB,SAASC,GAAcn2E,EAAI,CACvB,GAAI,OAAOA,GAAO,UAAY,CAACk2E,GAAe,KAAKl2E,CAAE,EACjD,MAAM,IAAI,MAAM,WAAaA,EAAK,gBAAgB,CAE1D,CAOA,SAASo2E,GAAQz6E,EAAK1O,EAAS,CAC3B,IAAIopF,EAAK94F,EAET,GADI0P,IAAY,SAAUA,EAAU,CAAE,GAAI,KACtC,MAAM,QAAQA,EAAQ,EAAE,EACxB,GAAI,CACA,QAASqW,EAAKmyE,GAASxoF,EAAQ,EAAE,EAAG0zD,EAAKr9C,EAAG,KAAM,EAAE,CAACq9C,EAAG,KAAMA,EAAKr9C,EAAG,OAAQ,CAC1E,IAAIgzE,EAAa31B,EAAG,MAEhBw1B,GADA,OAAOG,GAAe,SACRA,EAGAA,EAAW,EAHD,CAK5C,CACA,OACeC,EAAO,CAAEF,EAAM,CAAE,MAAOE,CAAK,CAAG,QAC/B,CACJ,GAAI,CACI51B,GAAM,CAACA,EAAG,OAASpjE,EAAK+lB,EAAG,SAAS/lB,EAAG,KAAK+lB,CAAE,CAClE,QACoB,CAAE,GAAI+yE,EAAK,MAAMA,EAAI,KAAM,CAC/C,MAGQF,GAAclpF,EAAQ,EAAE,EAG5BA,EAAUmnF,GAASA,GAAS,GAAIM,GAAS,cAAc,EAAGznF,CAAO,EAEjEgpF,GAAY,IAAIH,GAAS,QAAQ7oF,EAAQ,GAAIA,CAAO,EACpD0O,EAAI,OAAO,iBAAiB,KAAOs6E,GAE/BhpF,EAAQ,WACHupF,GAAmB76E,EAAK1O,EAAQ,UAAWA,EAAQ,aAAcA,EAAQ,eAAe,EAG7FgpF,GAAU,QAAQ,SAAWA,GAAU,QAAQ,aAC3C,MAAM,QAAQhpF,EAAQ,EAAE,EACxBA,EAAQ,GAAG,QAAQ,SAAU+S,EAAI,CAC7B,GAAI,OAAOA,GAAO,SACd20E,GAAQ,WAAW30E,EAAI/S,CAAO,MAE7B,CACD,IAAIwpF,EAAUrC,GAAS,CAAE,EAAEnnF,CAAO,EAC9B+S,EAAG,aAAe,OAClBy2E,EAAQ,YAAcrC,GAASA,GAAS,GAAIqC,EAAQ,WAAW,EAAGz2E,EAAG,WAAW,GAEpF20E,GAAQ,WAAW30E,EAAG,GAAIy2E,CAAO,CACrD,CACA,CAAa,EAGD9B,GAAQ,WAAW1nF,EAAQ,GAAIA,CAAO,GAG9C0O,EAAI,QAAQ,MAAO1O,CAAO,CAC9B,CASA,SAASupF,GAAmB76E,EAAK+6E,EAAWC,EAAcC,EAAiB,CACvE,OAAID,IAAiB,SAAUA,EAAe,IACvC9E,GAAU,KAAM,OAAQ,OAAQ,UAAY,CAC3C,IAAAgF,EACJ,OAAOvB,GAAY,KAAM,SAAUhyE,EAAI,CACnC,OAAQA,EAAG,MAAK,CACZ,IAAK,GACD,OAAAA,EAAG,KAAK,KAAK,CAAC,EAAG,EAAK,EAAC,CAAC,EACjB,CAAC,EAAa,QAAQ,QAAS,EAAC,KAAK,UAAY,CAAE,OAAOwzE,EAAsB,CAAE,CAAC,EAC9F,IAAK,GACD,OAAAD,EAAkBvzE,EAAG,KAAM,EACpB,CAAC,EAAa,CAAC,EAC1B,IAAK,GACI,OAAAA,EAAG,KAAM,EACd,QAAQ,KAAK,0FAA0F,EAChG,CAAC,CAAa,EACzB,IAAK,GAED,OAAAqzE,EAAeA,EAAa,IAAI,SAAUI,EAAM,CAAE,OAAOA,EAAK,YAAa,EAAG,EAC9EL,EAAU,UAAU,SAAUxvF,EAAIC,EAAMiU,EAAS,CAC7C,IAAI7d,EAAI+lB,EAAIq9C,EAAID,EAAIj9C,EAEpB,GAAI,SAAOvc,EAAG,MAAS,UAAYyvF,EAAa,QAAQzvF,EAAG,KAAK,aAAa,IAAM,IAInF,KAAImF,EAAOnF,EAAG,MAAQ,OAAOA,EAAG,KAAK,KAAQ,UAAcA,EAAG,KAAK,IAAMA,EAAG,KAAK,IAAMA,EAAG,KACtF2vF,EAAgB,oBAAoBz7E,EAASy7E,EAAgB,sBAAsB,OAAO,EACtFZ,IAAc,MAAwCA,GAAU,gBAChE,QAAQ,IAAI,cAAgB5pF,EAAO,yCAAyC,EAG3EwqF,EAAgB,oBAAoBz7E,EAASy7E,EAAgB,sBAAsB,SAAS,GAC7FZ,IAAc,MAAwCA,GAAU,gBAChE,QAAQ,IAAI,cAAgB5pF,EAAO,2CAA2C,EAGtF,IAAI6oF,GAAuB5xE,GAAM/lB,EAAK2J,EAAG,QAAU,MAAQ3J,IAAO,OAAS,OAASA,EAAG,0BAA4B,MAAQ+lB,IAAO,OAASA,EAAK,CAAE,EAC9IqwD,GAAWlwD,GAAMi9C,GAAMC,EAAK+1B,EAAU,WAAa,MAAQ/1B,IAAO,OAAS,OAASA,EAAG,WAAa,MAAQD,IAAO,OAAS,OAASA,EAAG,QAAU,MAAQj9C,IAAO,OAASA,EAAK,GAC/KuzE,EAAUrjB,EACTqjB,EAAQ,SAAS,GAAG,IACrBA,GAAW,KAEfA,GAAW9vF,EAAG,SAAS,WAAW,GAAG,EAAIA,EAAG,SAAS,OAAO,CAAC,EAAIA,EAAG,SAChE0vF,EACKf,GAAM,SAAS,UAAY,CAC5BI,IAAc,MAAwCA,GAAU,UAAU5pF,EAAM2qF,EAAS9B,CAAmB,CAC5I,CAA6B,EAGDe,IAAc,MAAwCA,GAAU,UAAU5pF,EAAM2qF,EAAS9B,CAAmB,EAExI,CAAqB,EACM,CAAC,CAAa,CACzC,CACA,CAAS,CACT,CAAK,CACL,CAOA,SAAS+B,GAAUhqF,EAAS,CACxB,MAAO,CAAE,QAAS,SAAU0O,EAAK,CAAE,OAAOy6E,GAAQz6E,EAAK1O,CAAO,EAAM,CACxE,CACiB,IAAA2oF,GAAAF,GAAA,UAAGuB,GAChBC,GAAW,CAAE,QAASd,EAAS,EACpBV,GAAA,QAAGwB,GAMlB,SAASC,IAAS,CACd,OAAOlB,EACX,CACAN,GAAAD,GAAA,OAAiByB,yDC5NjB,MAAMC,EAAWh/E,EAAY,EAE7B,OAAA+sC,GAAU,IAAM,CACEkyC,GAAa,EAEjB,aAEVD,EAAS,MAAQ,oBAEV,wBAAiB,UAAgBj2F,GAAA,CAChCA,EAAE,MAAQA,EAAE,KAAK,SAAW,oBAAsBA,EAAE,KAAK,YAGzD,OAAO,SAAS,OAAO,CAC3B,CACH,GACJ,6GCrBM,MAAMm2F,EAAe,CACxB,sBAAsBC,EAAiBC,EAAuC,CAC1E,OAAO,IAAI,QAAc,CAACnmF,EAASoD,IAAW,CAC1CmuB,GACK,KAAK,sCAAuC,CAAE,MAAA20D,EAAO,eAAAC,CAAe,CAAoC,EACxG,KAAK,IAAMnmF,EAAA,CAAS,EACpB,MAAMoD,CAAM,EACpB,EAGL,wBAAwB8iF,EAAiB9nE,EAAc+nE,EAA0C,CAC7F,OAAO,IAAI,QAAiB,CAACnmF,EAASoD,IAAW,CAC7CmuB,GACK,KAAuC,mDAAoD,CACxF,MAAA20D,EACA,KAAA9nE,EACA,eAAA+nE,CACkC,GACrC,KAAK5nE,GAAYve,EAAQue,EAAS,KAAK,UAAY,EAAK,CAAC,EACzD,MAAMnb,CAAM,EACpB,EAET,CChBA,MAAMgjF,GAAuB,CACzB,WAAY,GACZ,KAAM,GACN,iBAAkB,GAClB,uBAAwB,GACxB,iBAAkB,EACtB,EACMC,GAA8B,CAAE,UAAW,GAAI,SAAU,GAAI,MAAO,GAAI,YAAa,GAAI,cAAe,EAAM,EAC9GC,GAAyB,CAAC,EAE1BN,GAAe30E,GAAY,YAAa,IAAM,CAC1C,MAAAk1E,EAAiB,IAAIN,GAErBxtF,EAAQ+M,GAAS,CACnB,KAAM4gF,GACN,OAAQE,GACR,QAASD,EAAA,CACZ,EAEKjU,EAAYrrE,EAAI,EAAK,EACrBy/E,EAAez/E,EAAI,EAAK,EACxB0/E,EAAc1/E,EAAI,EAAK,EACvB2/E,EAAatiF,EAAS,IAAM3L,EAAM,KAAK,UAAU,EACjDkuF,EAAyBviF,EAAS,IAAM3L,EAAM,KAAK,sBAAsB,EACzEmuF,EAAaxiF,EAAS,IAAM3L,EAAM,OAAO,EAE/C,SAASouF,EAAS7rF,EAAc,CAC5B,OAAOvC,EAAM,OAAO,QAAUpM,EAAE,MAAQ2O,CAAI,EAAG,MAGnD,eAAe8rF,GAAiB,CAC5B,KAAM,CAAE,KAAAh1F,EAAM,OAAA4wB,CAAA,EAAW,MAAM6O,GAAM,IAAa,YAAa,CAC3D,QAAS,CACL,SAAU,GACd,EACA,eAAgB,SAAU7O,EAAQ,CAC9B,OAAQA,GAAU,KAAOA,EAAS,KAAQA,GAAU,IACxD,CACH,EAEGA,GAAU,MAIdjqB,EAAM,OAAS3G,EACf2G,EAAM,KAAO,CACT,WAAY,GACZ,KAAMouF,EAAS,MAAM,EACrB,iBAAkB,GAClB,uBAAwB,GACxB,iBAAkB,EACtB,EAEMpuF,EAAA,QAAQ,YAAcA,EAAM,KAAK,MAG3C,eAAesuF,EAAYC,EAA4C,CAC/D,IAACvuF,EAAM,KAAK,WAAY,OAE5B,KAAM,CAAE,KAAA3G,EAAM,OAAA4wB,CAAA,EAAW,MAAM6O,GAAM,IAA2B,mBAAoB,CAChF,QAAS,CACL,SAAU,GACd,EACA,eAAgB,SAAU7O,EAAQ,CAC9B,OAAQA,GAAU,KAAOA,EAAS,KAAQA,GAAU,IACxD,CACH,EAEGA,GAAU,MAIdjqB,EAAM,QAAQ,cAAgB,GACxBA,EAAA,QAAQ,UAAY3G,EAAK,UACzB2G,EAAA,QAAQ,SAAW3G,EAAK,SACxB2G,EAAA,QAAQ,MAAQ3G,EAAK,MAC3B2G,EAAM,QAAQ,YAAc,GAAG3G,EAAK,SAAS,IAAIA,EAAK,QAAQ,GAE1Dk1F,IACAvuF,EAAM,QAAQ,YAAcuuF,GAChC,CAGJ,eAAeC,GAAW,CAClB,IAACxuF,EAAM,KAAK,WAAY,OAE5B,KAAM,CAAE,KAAA3G,EAAM,OAAA4wB,CAAA,EAAW,MAAM6O,GAAM,IAAwB,wBAAyB,CAClF,QAAS,CACL,SAAU,GACd,EACA,eAAgB,SAAU7O,EAAQ,CAC9B,OAAQA,GAAU,KAAOA,EAAS,KAAQA,GAAU,IACxD,CACH,EAEGA,GAAU,MAERjqB,EAAA,KAAK,iBAAmB3G,EAAK,eAC7B2G,EAAA,KAAK,uBAAyB3G,EAAK,qBACnC2G,EAAA,KAAK,MAAQ3G,EAAK,MAClB2G,EAAA,KAAK,iBAAmB3G,EAAK,kBAGxB,eAAAo1F,EAA4BhB,EAAiDC,EAAyB,SAGjH,GAFAK,EAAa,MAAQ,GAEjB,CAACL,EACK,UAAI/jB,GAAY,eAAgB,kDAAkD,EAGxF,IAQA,GALI,CAAC8jB,GAASQ,EAAW,QACrBR,EAAQztF,EAAM,KAAK,OAInB,EAACytF,GAAA,MAAAA,EAAO,cAAe,CAACA,EAAM,OACxB,UAAI9jB,GAAY,eAAgB,0CAA0C,EAGpFgQ,EAAU,MAAQ,GAEZ,MAAAmU,EAAe,sBAAsBL,EAAOC,CAAc,QAC3Dr2F,EAAG,CAGJ,GAFJ,QAAQ,MAAMA,CAAC,EAEXohC,GAAaphC,CAAC,EACV,OAAA5D,EAAA4D,EAAE,WAAF,YAAA5D,EAAY,UAAW,IACjB,IAAIk2E,GAAY,eAAgB,4CAA4C,EAGhF,IAAIA,GACN,iBACAnwD,EAAAniB,EAAE,WAAF,YAAAmiB,EAAY,OAAQ,oEACxB,CACJ,QACF,CACEmgE,EAAU,MAAQ,GAClBoU,EAAa,MAAQ,GACzB,CAGW,eAAAW,EACX/oE,EACA8nE,EACAC,EACgB,SAGhB,GAFAM,EAAY,MAAQ,GAEhB,CAACN,EACK,UAAI/jB,GAAY,eAAgB,kDAAkD,EAGxF,IAQA,GALI,CAAC8jB,GAASQ,EAAW,QACrBR,EAAQztF,EAAM,KAAK,OAInB,EAACytF,GAAA,MAAAA,EAAO,cAAe,CAACA,EAAM,QAAU,CAAC9nE,EACnC,UAAIgkD,GAAY,eAAgB,0CAA0C,EAGpFgQ,EAAU,MAAQ,GAClB,MAAMvlF,EAAS,MAAM05F,EAAe,wBAAwBL,EAAO9nE,EAAM+nE,CAAc,EAEvF,OAAIO,EAAW,QACXjuF,EAAM,KAAK,uBAAyB5L,GAGjCA,QACFiD,EAAG,CAGJ,GAFJ,QAAQ,MAAMA,CAAC,EAEXohC,GAAaphC,CAAC,EACV,OAAA5D,EAAA4D,EAAE,WAAF,YAAA5D,EAAY,UAAW,IACjB,IAAIk2E,GAAY,eAAgB,4CAA4C,EAGhF,IAAIA,GACN,iBACAnwD,EAAAniB,EAAE,WAAF,YAAAmiB,EAAY,OAAQ,mEACxB,EAGG,gBACT,CACEmgE,EAAU,MAAQ,GAClBqU,EAAY,MAAQ,GACxB,CAGG,OACH,GAAGt3E,GAAO1W,CAAK,EACf,UAAA25E,EACA,aAAAoU,EACA,YAAAC,EACA,WAAAC,EACA,WAAAE,EACA,uBAAAD,EACA,eAAAG,EACA,YAAAC,EACA,SAAAE,EACA,4BAAAC,EACA,2BAAAC,CACJ,CACJ,CAAC,ECxNDx9F,GAAe,CAAC,QAAU,EAAE,sBAAwB,CAAC,EAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,EAAI,CAAC,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,KAAK,KAAK,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,GAAK,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,KAAK,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAAC,IAAI,EAAE,IAAM,CAA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","names":["Reflect","factory","root","global","sloppyModeThis","exporter","makeExporter","target","previous","key","value","functionThis","indirectEvalThis","hasOwn","supportsSymbol","toPrimitiveSymbol","iteratorSymbol","supportsCreate","supportsProto","downLevel","HashMap","MakeDictionary","map","functionPrototype","_Map","CreateMapPolyfill","_Set","CreateSetPolyfill","_WeakMap","CreateWeakMapPolyfill","registrySymbol","metadataRegistry","GetOrCreateMetadataRegistry","metadataProvider","CreateMetadataProvider","decorate","decorators","propertyKey","attributes","IsUndefined","IsArray","IsConstructor","DecorateConstructor","IsObject","IsNull","ToPropertyKey","DecorateProperty","metadata","metadataKey","metadataValue","decorator","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","provider","GetMetadataProvider","i","decorated","descriptor","MetadataKey","O","P","parent","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","ownKeys","parentKeys","set","keys","_i","ownKeys_1","hasKey","_a","parentKeys_1","Type","x","IsSymbol","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","result","OrdinaryToPrimitive","valueOf","toString_1","IsCallable","argument","ToString","SameValueZero","y","V","func","GetIterator","obj","method","iterator","IteratorValue","iterResult","IteratorStep","IteratorClose","f","proto","prototype","prototypeProto","constructor","CreateMetadataRegistry","fallback","CreateFallbackProvider","first","second","rest","targetProviderMap","registry","registerProvider","getProvider","setProvider","getProviderNoCache","next","providerMap","hasProvider","existingProvider","targetMetadata","OrdinaryDeleteMetadata","GetOrCreateMetadataMap","Create","createdTargetMetadata","metadataMap","keysObj","k","nextValue","e","reflect","metadataOwner","metadataPropertySet","registeredProvider","cacheSentinel","arraySentinel","MapIterator","values","selector","index","error","Map","size","getKey","getValue","getEntry","insert","_","Set","UUID_SIZE","rootKey","CreateUniqueKey","WeakMap","table","GetOrCreateWeakMapTable","CreateUUID","create","FillRandomBytes","buffer","GenRandomBytes","array","data","offset","byte","isBrowser","isRouteComponent","component","isESModule","assign","applyToParams","fn","params","newParams","isArray","noop","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","text","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","TRAILING_SLASH_RE","removeTrailingSlash","path","parseURL","parseQuery","location","currentLocation","query","searchString","hash","hashPos","searchPos","resolveRelativePath","stringifyURL","stringifyQuery","stripBase","pathname","base","isSameRouteLocation","a","b","aLastIndex","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","isSameRouteLocationParamsValue","isEquivalentArray","to","from","fromSegments","toSegments","lastToSegment","position","toPosition","segment","START_LOCATION_NORMALIZED","NavigationType","NavigationDirection","START","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","el","docRect","elRect","computeScrollPosition","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getScrollKey","delta","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","createBaseLocation","createCurrentLocation","search","slicePos","pathFromHash","useHistoryListeners","historyState","replace","listeners","teardowns","pauseState","popStateHandler","state","fromState","listener","pauseListeners","listen","callback","teardown","beforeUnloadListener","history","destroy","buildState","back","current","forward","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","url","err","push","currentState","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","createMemoryHistory","queue","setLocation","direction","info","shouldTrigger","createWebHashHistory","isRouteLocation","route","isRouteName","name","NavigationFailureSymbol","NavigationFailureType","createRouterError","type","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","REGEX_CHARS_RE","tokensToParser","segments","extraOptions","options","score","pattern","segmentScores","tokenIndex","token","subSegmentScore","repeatable","optional","regexp","re","subPattern","parse","match","stringify","avoidDuplicatedSlash","param","compareScoreArray","diff","comparePathParserScore","aScore","bScore","comp","isLastScoreNegative","last","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","message","previousState","tokens","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","createRouterMatcher","routes","globalOptions","matchers","matcherMap","mergeOptions","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","normalizedRecords","aliases","alias","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","isMatchable","insertMatcher","children","matcherRef","getRoutes","findInsertionIndex","resolve","paramsFromLocation","m","matched","parentMatcher","mergeMetaFields","clearRoutes","normalized","normalizeRecordProps","propsObject","props","meta","defaults","partialOptions","lower","upper","mid","insertionAncestor","getInsertionAncestor","ancestor","searchParams","searchParam","eqPos","currentValue","v","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","handlers","add","handler","reset","registerGuard","guard","removeFromList","onUnmounted","onDeactivated","onActivated","onBeforeRouteLeave","leaveGuard","activeRecord","inject","onBeforeRouteUpdate","updateGuard","guardToPromiseFn","runWithContext","enterCallbackArray","reject","valid","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","componentPromise","resolved","resolvedComponent","loadRouteLocation","promises","useLink","router","currentRoute","computed","unref","activeRecordIndex","length","routeMatched","currentMatched","parentRecordPath","getOriginalPath","isActive","includesParams","isExactActive","navigate","guardEvent","p","preferSingleVNode","vnodes","RouterLinkImpl","defineComponent","slots","link","reactive","elClass","getLinkClass","h","RouterLink","outer","inner","innerValue","outerValue","propClass","globalClass","defaultClass","RouterViewImpl","attrs","injectedRoute","routeToDisplay","injectedDepth","depth","initialDepth","matchedRoute","matchedRouteRef","provide","viewRef","ref","watch","instance","oldInstance","oldName","currentName","ViewComponent","normalizeSlot","routePropsOption","routeProps","vnode","slot","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","shallowRef","pendingLocation","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","href","matcherLocation","targetParams","fullPath","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","redirect","newTargetLocation","redirectedFrom","targetLocation","force","shouldRedirect","toLocation","failure","handleScroll","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","app","installedApps","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","canceledNavigationCheck","runGuardQueue","beforeEnter","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","readyHandlers","errorListeners","ready","list","isReady","scrollBehavior","nextTick","started","reactiveRoute","shallowReactive","unmountApp","promise","len","recordFrom","recordTo","useRouter","useRoute","_name","activePinia","setActivePinia","pinia","piniaSymbol","isPlainObject","o","MutationType","createPinia","scope","effectScope","_p","toBeInstalled","markRaw","plugin","addSubscription","subscriptions","detached","onCleanup","removeSubscription","idx","getCurrentScope","onScopeDispose","triggerSubscriptions","args","fallbackRunWithContext","ACTION_MARKER","ACTION_NAME","mergeReactiveObjects","patchToApply","subPatch","targetValue","isRef","isReactive","skipHydrateSymbol","shouldHydrate","isComputed","createOptionsStore","id","hot","actions","getters","initialState","store","setup","localState","toRefs","computedGetters","createSetupStore","$id","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","actionSubscriptions","debuggerEvents","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","$reset","newState","$state","$dispose","action","wrappedAction","afterCallbackList","onErrorCallbackList","after","onError","ret","partialStore","stopWatcher","setupStore","prop","actionValue","toRaw","extender","defineStore","setupOptions","isSetupStore","useStore","hasContext","hasInjectionContext","storeToRefs","rawStore","refs","toRef","t","r$2","_b","__publicField","__privateAdd","_e","__privateSet","__privateGet","n","c","r","s","u","d","l","f$1","g","j","I","w","M","N","E","D","A","x$3","_t","C","T$3","_n","_r","_o","T","S$2","S","R","E$1","B","q","F","$","V$2","G","K$1","K","H","U","z","L","Y","W","J","Q","X","Z","tt","nt","et","rt","ot","st","at","ct","dt","gt","ut","ht","lt","yt","pt","bt","vt","ft","wt","mt","At","St","Tt","Tt$1","It","Nt$1","Dt","Ct$1","Nt","xt$1","Ct","Rt","Et","Mt","Bt","xt","qt","jt","Ft","Ot","Gt","Ut","Lt","bind","thisArg","toString","getPrototypeOf","kindOf","cache","thing","str","kindOfTest","typeOfTest","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","isString","isNumber","isObject","isBoolean","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","allOwnKeys","findKey","_key","_global","isContextDefined","context","merge","caseless","assignValue","targetKey","extend","stripBOM","content","inherits","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","freezeMethods","toObjectSet","arrayOrString","delimiter","define","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","callbacks","cb","asap","utils$2","AxiosError","code","config","request","response","utils","customProps","axiosError","httpAdapter","isVisitable","removeBrackets","renderKey","dots","isFlatArray","predicates","toFormData","formData","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","exposedHelpers","build","encode","charMap","AxiosURLSearchParams","encoder","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","URLSearchParams","FormData","Blob","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders$1","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","deleted","deleteHeader","format","targets","asStrings","accessors","defineAccessor","AxiosHeaders","mapped","headerValue","transformData","fns","isCancel","CanceledError","settle","validateStatus","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","xsrfValue","isXHRAdapterSupported","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","onloadend","responseHeaders","timeoutErrorMessage","cancel","protocol","composeSignals","signals","timeout","controller","aborted","onabort","reason","unsubscribe","signal","streamChunk","chunk","chunkSize","pos","end","readBytes","iterable","readStream","stream","reader","trackStream","onProgress","onFinish","_onFinish","loadedBytes","isFetchSupported","isReadableStreamSupported","encodeText","test","supportsRequestStream","duplexAccessed","hasContentType","DEFAULT_CHUNK_SIZE","supportsResponseStream","resolvers","res","getBodyLength","body","resolveBodyLength","fetchAdapter","cancelToken","withCredentials","fetchOptions","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","knownAdapters","renderReason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","correctSpelling","assertOptions","schema","allowUnknown","Axios$1","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","Axios","generateHTTPMethod","isForm","CancelToken$1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","spread","isAxiosError","payload","HttpStatusCode","createInstance","defaultConfig","axios","all","Cancel","formToJSON","getAdapter","inBrowser","makeSymbol","shareable","generateFormatCacheKey","locale","friendlyJSONstringify","json","toTypeString","isEmptyObject","_create","_globalThis","getGlobalThis","escapeHtml","rawText","isPromise","objectToString","toDisplayString","join","items","separator","item","incrementer","warn","msg","isNotObjectOrIsArray","deepCopy","src","des","createPosition","column","createLocation","start","RE_ARGS","identifier","CompileWarnCodes","warnMessages","createCompileWarn","loc","CompileErrorCodes","errorMessages","createCompileError","messages","defaultOnError","CHAR_SP","CHAR_CR","CHAR_LF","CHAR_LS","CHAR_PS","createScanner","_buf","_index","_line","_column","_peekOffset","isCRLF","isLF","isPS","isLS","isLineEnd","peekOffset","charAt","currentChar","currentPeek","peek","resetPeek","skipToPeek","EOF","DOT","LITERAL_DELIMITER","ERROR_DOMAIN$3","createTokenizer","_scnr","currentOffset","currentPosition","_initLoc","_initOffset","_context","emitError","ctx","getToken","getEndToken","eat","scnr","ch","peekSpaces","buf","skipSpaces","isIdentifierStart","cc","isNumberStart","isNamedIdentifierStart","currentType","isListIdentifierStart","isLiteralStart","isLinkedDotStart","isLinkedModifierStart","isLinkedDelimiterStart","isLinkedReferStart","isTextStart","isPluralStart","detectModuloStart","spaces","hasSpace","prev","detectModulo","takeChar","isIdentifier","takeIdentifierChar","isNamedIdentifier","takeNamedIdentifierChar","isDigit","takeDigit","isHexDigit","takeHexDigit","getDigits","num","readModulo","readText","readNamedIdentifier","readListIdentifier","isLiteral","readLiteral","literal","readEscapeSequence","readUnicodeEscapeSequence","unicode","digits","sequence","isInvalidIdentifier","readInvalidIdentifier","identifiers","readLinkedModifier","readLinkedRefer","readPlural","plural","readTokenInPlaceholder","readTokenInLinked","validNamedIdentifier","validListIdentifier","validLiteral","readToken","isModulo","nextToken","startLoc","endLoc","ERROR_DOMAIN$2","KNOWN_ESCAPES","fromEscapeSequence","codePoint4","codePoint6","codePoint","createParser","onWarn","tokenzer","emitWarn","startNode","node","endNode","parseText","tokenizer","parseList","parseNamed","modulo","parseLiteral","parseLinkedModifier","getTokenCaption","parseLinkedKey","parseLinked","linkedNode","nextContext","emptyLinkedKeyNode","parseMessage","startOffset","endOffset","parsePlural","msgNode","hasEmptyMessage","parseResource","createTransformer","ast","traverseNodes","nodes","transformer","traverseNode","transform","optimize","optimizeMessageNode","ERROR_DOMAIN$1","minify","resource","cases","valueNode","linked","named","ERROR_DOMAIN","createCodeGenerator","sourceMap","filename","breakLineCode","_needIndent","_newline","withBreakLine","_breakLineCode","indent","withNewLine","level","deindent","newline","generateLinkedNode","generator","helper","generateNode","generateMessageNode","needIndent","generatePluralNode","generateResource","generate","mode","baseCompile","assignedOptions","jit","enalbeMinify","enambeOptimize","initFeatureFlags","pathStateMachine","literalValueRE","exp","stripQuotes","getPathCharType","formatSubPath","trimmed","subPathDepth","newChar","transition","typeMap","maybeUnescapeQuote","nextChar","resolveWithKeyValue","resolveValue$1","hit","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_MESSAGE_DATA_TYPE","DEFAULT_NORMALIZE","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","getPluralIndex","normalizeNamed","pluralIndex","createMessageContext","pluralRule","orgPluralRule","_list","_named","_modifier","normalize","interpolate","modifier","devtools","setDevToolsHook","hook","initI18nDevTools","i18n","translateDevTools","createDevToolsHook","payloads","code$1","inc$1","CoreWarnCodes","inc","CoreErrorCodes","createCoreError","getLocale","resolveLocale","_resolveLocale","fallbackWithSimple","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","block","appendBlockToChain","blocks","follow","appendLocaleToChain","appendItemToChain","NOT_REOSLVED","MISSING_RESOLVE_VALUE","capitalize","getDefaultLinkedModifiers","_compiler","registerMessageCompiler","compiler","_resolver","registerMessageResolver","resolver","_fallbacker","registerLocaleFallbacker","fallbacker","_additionalMeta","setAdditionalMeta","getAdditionalMeta","_fallbackContext","setFallbackContext","getFallbackContext","_cid","createCoreContext","_locale","fallbackLocale","createResources","datetimeFormats","numberFormats","modifiers","pluralRules","missing","missingWarn","fallbackWarn","fallbackFormat","unresolving","postTranslation","processor","warnHtmlMessage","escapeParameter","messageCompiler","messageResolver","localeFallbacker","fallbackContext","internalOptions","__datetimeFormatters","__numberFormatters","__meta","handleMissing","updateFallbackLocale","isAlmostSameLocale","compareLocale","isImplicitFallback","targetLocale","locales","formatParts","resolveBody","createUnhandleNodeError","resolveType","resolveCases","formatMessageParts","PROPS_BODY","resolveProps","PROPS_CASES","static_","resolveStatic","resolveItems","acm","formatMessagePart","PROPS_STATIC","PROPS_ITEMS","resolveValue","resolveLinkedModifier","resolveLinkedKey","PROPS_TYPE","PROPS_VALUE","PROPS_MODIFIER","PROPS_KEY","defaultOnCacheKey","compileCache","isMessageAST","detectError","baseCompile$1","compile","cacheKey","cached","NOOP_MESSAGE_FUNCTION","isMessageFunction","translate","parseTranslateArgs","resolvedMessage","defaultMsgOrKey","enableDefaultMsg","escapeParams","formatScope","resolveMessageFormat","cacheBaseKey","occurred","compileMessageFormat","ctxOptions","getMessageContextOptions","msgContext","messaged","evaluateMessage","missingRet","getCompileContext","msgCtx","datetime","overrides","parseDateTimeArgs","part","datetimeFormat","formatter","DATETIME_FORMAT_OPTIONS_KEYS","arg4","dateTime","clearDateTimeFormat","number","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","I18nErrorCodes","createI18nError","TranslateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOptionSymbol","DisposeSymbol","handleFlatJson","subKeys","currentObj","hasStringValue","getLocaleMessages","__i18n","flatJson","custom","getComponentOptions","adjustI18nResources","gl","componentOptions","createTextNode","createVNode","Text","DEVTOOLS_META","NOOP_RETURN_ARRAY","NOOP_RETURN_FALSE","composerID","defineCoreMissingHandler","getCurrentInstance","getMetaInfo","createComposer","VueI18nLegacy","__root","__injectWithOption","_isGlobal","_ref","translateExistCompatible","_inheritLocale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_pluralRules","trackReactivityValues","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","translateVNode","numberParts","datetimeParts","setPluralRules","rules","te","getLocaleMessage","resolveMessages","targetLocaleMessages","messageValue","tm","setLocaleMessage","_message","mergeLocaleMessage","getDateTimeFormat","setDateTimeFormat","mergeDateTimeFormat","getNumberFormat","setNumberFormat","mergeNumberFormat","composer","baseFormatProps","getInterpolateArg","Fragment","arg","getFragmentableTag","tag","TranslationImpl","useI18n","assignedAttrs","Translation","isVNode","renderFormatter","slotKeys","partFormatter","parts","NumberFormatImpl","NumberFormat","DatetimeFormatImpl","DatetimeFormat","getComposer$2","i18nInternal","vueI18n","vTDirective","_process","binding","parsedValue","parseValue","makeParams","textContent","apply","pluginOptions","useI18nComponentName","I18nInjectionKey","createI18n","__globalInjection","__allowComposition","__instances","globalScope","__global","createGlobal","symbol","__getInstance","__setInstance","__deleteInstance","globalReleaseHandler","injectGlobalFields","getI18nInstance","getGlobalComposer","getScope","getComposer","composerOptions","setupLifeCycle","legacyMode","useComponent","getParentComponentInstance","onMounted","_composer","dispose","globalExportProps","globalExportMethods","wrap","freeGlobal","freeSelf","Symbol","objectProto","nativeObjectToString","symToStringTag","getRawTag","isOwn","unmasked","nullTag","undefinedTag","baseGetTag","isObjectLike","symbolTag","isSymbol","arrayMap","iteratee","INFINITY","symbolProto","symbolToString","baseToString","identity","asyncTag","funcTag","genTag","proxyTag","coreJsData","maskSrcKey","uid","isMasked","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","object","getNative","objectCreate","baseCreate","copyArray","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","count","lastCalled","stamp","remaining","constant","defineProperty","baseSetToString","string","setToString","arrayEach","baseFindIndex","predicate","fromIndex","fromRight","baseIsNaN","strictIndexOf","baseIndexOf","arrayIncludes","MAX_SAFE_INTEGER","reIsUint","isIndex","baseAssignValue","eq","other","objValue","copyObject","customizer","isNew","newValue","nativeMax","overRest","otherArgs","baseRest","isLength","isArrayLike","isIterateeCall","createAssigner","assigner","sources","isPrototype","Ctor","baseTimes","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","nativeKeys","baseKeys","nativeKeysIn","baseKeysIn","isProto","keysIn","reIsDeepProp","reIsPlainProp","isKey","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","Hash","entries","entry","listCacheClear","assocIndexOf","arrayProto","splice","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","FUNC_ERROR_TEXT","memoize","memoized","MAX_MEMOIZE_SIZE","memoizeCapped","rePropName","reEscapeChar","stringToPath","quote","subString","castPath","toKey","baseGet","arrayPush","spreadableSymbol","isFlattenable","baseFlatten","isStrict","flatten","flatRest","getPrototype","objectCtorString","baseSlice","castSlice","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","hasUnicode","asciiToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","unicodeToArray","stringToArray","createCaseFirst","strSymbols","chr","trailing","upperFirst","arrayReduce","accumulator","initAccum","basePropertyOf","deburredLetters","deburrLetter","reLatin","reComboMark","deburr","reAsciiWord","asciiWords","reHasUnicodeWord","hasUnicodeWord","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsApos","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","words","reApos","createCompounder","camelCase","word","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","baseAssign","baseAssignIn","allocUnsafe","cloneBuffer","isDeep","arrayFilter","resIndex","stubArray","nativeGetSymbols","getSymbols","copySymbols","getSymbolsIn","copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","getAllKeysIn","DataView","Promise","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","initCloneArray","Uint8Array","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","reFlags","cloneRegExp","symbolValueOf","cloneSymbol","cloneTypedArray","typedArray","initCloneByTag","initCloneObject","baseIsMap","nodeIsMap","isMap","baseIsSet","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","cloneableTags","baseClone","bitmask","isFlat","isFull","isFunc","stacked","subValue","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","equalByTag","convert","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","baseProperty","basePropertyDeep","property","baseIteratee","createBaseFor","baseFor","assignMergeValue","isArrayLikeObject","safeGet","toPlainObject","baseMergeDeep","srcIndex","mergeFunc","srcValue","isCommon","isTyped","baseMerge","mergeWith","isEmpty","isEqual","nativeIsFinite","isFinite","isNull","kebabCase","baseUnset","customOmitClone","omit","paths","createSet","baseUniq","comparator","includes","seenIndex","uniqBy","_en","_no","toDate","argStr","constructFrom","date","addDays","amount","_date","addMilliseconds","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","minutesInHour","secondsInHour","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","_d","_c","day","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfDay","getTimezoneOffsetInMilliseconds","utcDate","differenceInCalendarDays","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfISOWeekYear","fourthOfJanuary","addMinutes","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isValid","getRoundingMethod","differenceInMilliseconds","differenceInSeconds","startOfMinute","startOfYear","cleanDate","formatDistanceLocale","formatDistance","tokenValue","buildFormatLongFn","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","rem100","localize","quarter","buildMatchFn","matchPattern","matchResult","matchedString","parsePatterns","findIndex","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","sign","output","lightFormatters","signedYear","month","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","defaultLocale","_f","_h","_g","originalDate","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","baseDate","getDaysInMonth","monthIndex","lastDayOfMonth","getInternalDefaultOptions","getISODay","intlFormat","formatOrLocale","localeOptions","formatOptions","isFormatOptions","isAfter","dateToCompare","_dateToCompare","isBefore","leftDate","rightDate","_dateLeft","_dateRight","transpose","fromDate","TIMEZONE_UNIT_PRIORITY","Setter","_utcDate","ValueSetter","validateValue","setValue","priority","subPriority","flags","DateToSystemTimezoneSetter","Parser","dateString","EraParser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","dayPeriod","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","isLeapYearIndex","YearParser","valueCallback","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","setWeek","LocalWeekParser","setISOWeek","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setDay","currentDay","dayIndex","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","setISODay","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","notWhitespaceRegExp","dateStr","referenceDate","subFnOptions","setters","usedTokens","incompatibleTokens","incompatibleToken","usedToken","uniquePrioritySetters","setter","setterArray","minutesToHours","parseISO","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","time","parseTime","parseTimezone","dirtyDate","patterns","dateRegex","timeRegex","timezoneRegex","timeString","additionalDigits","regex","captures","century","isWeekDate","parseDateUnit","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","validateTimezone","fourthOfJanuaryDay","daysInMonths","_year","_hours","secondsToHours","setMonth","dateWithDesiredMonth","daysInMonth","CustomError","useMenuProvider","baseUrl","getMenuItems","abortController","useSearchService","getAutocomplete","keyword","useSiteNavigation","currentLanguage","getCurrentLanguage","topMenu","loginLink","logoutLink","searchPage","contactUsPage","useProfileNavigation","profilePageLink","tzTokenizeDate","timeZone","dtf","partsOffset","hackyOffset","typeToPos","formatted","filled","dtfCache","testDateFormatted","hourCycleSupported","newDateUTC","fullYear","hour","minute","millisecond","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","tzParseTimezone","isUtcDate","absoluteOffset","isValidTimezoneIANAString","toUtcDate","calcOffset","fixOffset","asUTC","asTS","over","utcGuess","o2","o3","validIANATimezoneCache","timeZoneString","tzPattern","DEFAULT_ADDITIONAL_DIGITS","restDateString","patternYYY","patternYYYYY","yearString","centuryString","toZonedTime","offsetMilliseconds","resultDate","fromZonedTime","utc","defaultTimeZone","left","right","unit","setOptions","_isEqual","toLocalDate","localDate","toLocaleTimeString","humanizeDuration","units","tryOnScopeDispose","isDefined","isClient","isDef","notNullish","toRef$1","readonly","customRef","createFilterWrapper","wrapper","bypassFilter","debounceFilter","ms","maxTimer","lastRejector","_clearTimeout","timer2","lastInvoker","duration","toValue$1","maxDuration","throttleFilter","lastExec","isLeading","lastValue","leading","rejectOnCancel","clear","_invoke","elapsed","pausableFilter","extendFilter","pause","resume","eventFilter","getLifeCycleTarget","useThrottleFn","refThrottled","delay","updater","watchWithFilter","watchOptions","watchPausable","syncRef","deep","immediate","watchers","transformLTR","transformRTL","syncRefs","targetsArray","tryOnMounted","sync","watchDebounced","debounce","maxWait","watchImmediate","defaultWindow","unrefElement","elRef","plain","toValue","useEventListener","cleanups","cleanup","register","event","firstParamTargets","stopWatch","raw_targets","raw_events","raw_listeners","raw_options","optionsClone","stop","useMounted","isMounted","useSupported","useMutationObserver","window","mutationOptions","observer","isSupported","targets2","takeRecords","cloneFnJSON","globalKey","getHandlers","getSSRHandler","guessSerializerType","rawInit","StorageSerializers","customStorageEventName","useStorage","storage","listenToStorageChanges","writeDefaults","mergeDefaults","shallow","initOnMounted","keyComputed","_a2","serializer","pauseWatch","resumeWatch","pausableWatch","write","update","updateFromCustomEvent","dispatchWriteEvent","oldValue","serialized","read","useResizeObserver","observerOptions","_targets","els","_el","useElementBounding","windowResize","windowScroll","updateTiming","height","bottom","top","recalculate","rect","ele","useElementSize","initialSize","box","isSVG","stop1","boxSize","$elem","formatBoxSize","acc","inlineSize","blockSize","stop2","useSessionStorage","initialValue","useVModel","emit","clone","passive","eventName","shouldEmit","vm","_emit","cloneFn","triggerEmit","proxy","isUpdating","__props","model","hasManyLanguages","hasTwoLanguages","anotherLanguage","selectedMenu","_useModel","canLogIn","canLogOut","title","vBtnProps","logo","activeMenuItem","childMenuItems","expanded","isMobile","useSiteHeader","_currentLanguage","cssClasses","profilePageInfo","useSiteTopMenu","mdAndUp","useDisplay","mobileMenu","desktopMenu","resetMenu","__emit","appendIcon","isLoading","select","searchService","querySelections","onSelect","useLocale","compactMenu","expandSearch","isMultiline","sizeClass","breakableRegex","titleParts","curr","fontSize","elementStyles","scale","useBaseInputComponent","isMobileDevice","isIOS","watchInputClass","fieldEl","applyInputClass","removeInputClass","watcher","mutationCallback","mutationsList","mutation","F$1","V$1","modelValue","localModelValue","focused","timeFormat","maskOptions","baseCssClasses","timeValue","parsedDate","isWithinAllowedRange","inputValue","label","inputRef","parsedMin","parsedMax","minDisabled","maxDisabled","adjustTime","currentDate","step","remainder","adjustment","newTime","clampedTime","decreaseTime","increaseTime","onFocus","onBlur","onChange","innerFocused","datePickerIsVisible","dateValue","rawInputValue","menuRef","activatorEl","inputWidth","calendarWidth","textColorClasses","useTextColor","mobileInputValue","updateInputValue","showDatePicker","hideDatePicker","_minDate","_maxDate","_minTime","_maxTime","defaultProps","dateIsFocused","timeIsFocused","rootElement","rootElementWidth","datePickerInput","datePickerInputWidth","lastKnownError","dialog","mobile","showRefreshButton","errorMessage","onErrorCaptured","refresh","useAttrs","fieldProps","VField","nb","ce","ye","Je","He","qe","__vitePreload","markerIcon2x$1","markerShadow$1","Kt","ee","me","ve","be","fe","ge","Le","he","Oe","Qt","pe","Se","Ke","ne","je","Pe","Qe","Xt","Yt","Xe","Vt","Ce","Ye","Te","Ve","Me","xe","Pt","Be","Re","se","we","Ie","no","ae","Ae","de","so","ue","Ge","lo","We","io","oe","zt","ze","$t","uo","le","Ne","kt","$e","ke","Ue","De","it","Fe","Zt","ie","Ze","Ht","Ee","Wt","require$$0","module","container","point","disabled","itemCls","itemOptions","cls","icon","iconCls","html","hideOnSelect","disabledCls","tagName","className","refEl","layerPoint","latlng","mapSize","containerSize","anchor","initialDisplay","elem","classes","NEWER","OLDER","LRUMap","limit","itv","Entry","KeyIterator","ValueIterator","EntryIterator","fun","thisObj","oldestEntry","ent","waitForAPI","checkCounter","intervalId","googleLayerName","Constructor","googleLayer","style","mutantOptions","layoutManager","positions","ev","ctr","mutations","imgNode","coords","sublayer","tileKey","tileContainer","key2","clonedImgNode","zoomLevel","gMapZoomLevel","center","_center","zoom","mutantZoom","__awaiter","_arguments","adopt","getDefaultExportFromCjs","fastDeepEqual","equal","DEFAULT_ID","LoaderStatus","Loader","apiKey","authReferrerPolicy","channel","client","language","libraries","mapIds","nonce","region","retries","script","libraryPromises","library","nativeURLSearchParams","isSupportObjectConstructor","decodesPlusesCorrectly","isSupportSize","__URLSearchParams__","encodesAmpersandsCorrectly","ampersandTest","URLSearchParamsPolyfill","parseToDict","appendTo","dict","useProxy","propValue","USPProto","makeIterator","cur","this","__assign","loadScript","doc","queryString","hasScript","__rest","config_1","utils_1","require$$1","VueGtmPlugin","enabled","_this","enable","screenName","additionalEventData","dataLayer","category","noninteraction","__generator","verb","op","__values","dist","useGtm_1","createGtm_1","vue_1","plugin_1","require$$2","require$$3","gtmPlugin","GTM_ID_PATTERN","assertIsGtmId","install","e_1","idOrObject","e_1_1","initVueRouterGuard","newConf","vueRouter","ignoredViews","trackOnNextTick","vueRouterModule","require$$4","view","fullUrl","createGtm","_default","useGtm","loginSrc","useUserStore","ProfileService","phone","recaptchaToken","initialUser","initialProfile","initialClaims","profileService","isRequesting","isVerifying","isLoggedIn","isPhoneNumberConfirmed","getProfile","getClaim","loadUserSilent","loadProfile","profilePage","loadUser","requestForPhoneVerification","checkPhoneVerificationCode","withMetadataArgument","compare","pa","pb","na","objectConstructor","_typeof","_classCallCheck","_defineProperties","_createClass","protoProps","staticProps","V3","V4","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","validateMetadata","setVersion","countryCode","country","callingCode","countryCodes","NumberingPlan","_type","globalMetadataObject","formats","Format","_type2","getType","FIRST_GROUP_ONLY_PREFIX_PATTERN","typeOf","getCountryCallingCode","isSupportedCountry","checkNumberLength","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","actual_length","minimum_length","isPossiblePhoneNumber","isPossibleNumber","matchesEntirely","regular_expression","_createForOfIteratorHelperLoose","allowArrayLike","_unsupportedIterableToArray","minLen","_arrayLikeToArray","arr2","NON_FIXED_LINE_PHONE_TYPES","getNumberType","isNumberTypeEqualTo","_iterator","_step","isValidNumber","getPossibleCountriesForNumber","_metadata","possibleCountries","couldNationalNumberBelongToCountry","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS","CAPTURING_DIGIT_PATTERN","stripIddPrefix","countryMetadata","IDDPrefixPattern","matchedGroups","extractNationalNumberFromPossiblyIncompleteNumber","prefixPattern","prefixMatch","carrierCode","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","nationalPrefix","possiblePositionOfTheFirstCapturedGroup","possibleNationalPrefix","extractNationalNumber","_extractNationalNumbe","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","nationalNumberBefore","nationalNumberAfter","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","countryCallingCode","possibleShorterNumber","possibleShorterNationalNumber","_extractNationalNumbe2","extractCountryCallingCode","isNumberWithIddPrefix","numberWithoutIDD","_extractCountryCallin","shorterNumber","_countryCallingCode","applyInternationalSeparatorStyle","formattedNumber","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalFormat","withNationalPrefix","SINGLE_IDD_PREFIX_REG_EXP","getIddPrefix","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","maxLength","createExtensionPattern","purpose","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","isViablePhoneNumberStart","formatRFC3966","ext","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","DEFAULT_OPTIONS","extension","formatNumber","formatNationalNumber","addExtension","formatIDD","formatAs","chooseFormatForNumber","availableFormats","nationalNnumber","lastLeadingDigitsPattern","formatExtension","fromCountry","fromCountryCallingCode","iddPrefix","PhoneNumber","countryOrCountryCallingCode","e164Number","E164_NUMBER_REGEXP","_getCountryAndCountry","getCountryAndCountryCallingCode","phoneNumber","_format","isCountryCode","metadataJson","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","call","_assertThisInitialized","_wrapNativeSuper","Class","_cache","_isNativeFunction","Wrapper","_construct","Parent","ParseError","_Error","_super","EXTN_PATTERN","extractExtension","numberWithoutExtension","DIGITS","parseDigit","character","parseIncompletePhoneNumber","parsePhoneNumberCharacter","prevParsedCharacters","emitEvent","getCountryByNationalNumber","nationalPhoneNumber","countries","getCountryByCallingCode","defaultCountry","PLUS_SIGN","RFC3966_VISUAL_SEPARATOR_","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","ALPHANUM_","RFC3966_DOMAINLABEL_","VALID_ALPHA_","RFC3966_TOPLABEL_","RFC3966_DOMAINNAME_","RFC3966_DOMAINNAME_PATTERN_","RFC3966_PREFIX_","RFC3966_PHONE_CONTEXT_","RFC3966_ISDN_SUBADDRESS_","extractPhoneContext","numberToExtractFrom","indexOfPhoneContext","phoneContextStart","phoneContextEnd","isPhoneContextValid","phoneContext","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","numberToParse","extractFormattedPhoneNumber","phoneNumberString","indexOfRfc3966Prefix","indexOfNationalNumber","indexOfIsdn","MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","_parseInput","parseInput","formattedPhoneNumber","_parsePhoneNumber","parsePhoneNumber","countryCallingCodeSource","_extractFormattedPhoneNumber","extract","throwOnError","startsAt","v2","withExtensionStripped","defaultCallingCode","exactCountry","parsePhoneNumberWithError","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_s","normalizeArguments","_Array$prototype$slic","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","_normalizeArguments","parsePhoneNumber_","_isValidNumber","ReCaptchaInstance_1","ReCaptchaInstance","siteKey","recaptchaID","recaptcha","ReCaptchaLoader_1","ELoadingState","ReCaptchaLoader","loader","widgetID","useRecaptchaNet","useEnterprise","renderParameters","customUrl","scriptElement","scriptBase","parametersQuery","parameters","parameterKeys","parameterKey","grecaptcha","isEnterprise","augmentedParameters","exports","VueReCaptchaInjectKey","globalConfig","VueReCaptcha","isLoaded","recaptchaLoaded","initializeReCaptcha","useReCaptcha","loadReCaptcha","earthRadius","factors","feature","geom","properties","feat","coordinates","lineString","featureCollection","features","fc","radiansToLength","radians","factor","lengthToRadians","distance","radiansToDegrees","degreesToRadians","degrees","getCoord","coord","getCoords","geojson","bearing","calculateFinalBearing","coordinates1","coordinates2","lon1","lon2","lat1","lat2","bear","destination","longitude1","latitude1","bearingRad","latitude2","longitude2","lng","lat","dLat","dLon","coordEach","excludeWrapCoord","geometry","stopG","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","featureEach","featureReduce","previousValue","currentFeature","geomEach","featureProperties","featureBBox","featureId","flattenEach","bbox","coordinate","TinyQueue","defaultCompare","halfLength","best","checkWhichEventIsLeft","e1","e2","checkWhichSegmentHasRightEndpointFirst","seg1","seg2","Event$1","ringId","eventId","eventToCheck","fillEventQueue","eventQueue","processFeature","featureOrGeometry","ii","currentP","nextP","iii","Event","Segment","testSegmentIntersect","x1","y1","x2","y2","x3","y3","x4","y4","denom","numeA","numeB","uA","uB","runCheck","ignoreSelfIntersections","intersectionPoints","outQueue","otherSeg","intersection","sweeplineIntersections","lib","lineIntersect","line1","line2","removeDuplicates","intersections","results","unique","quickselect","quickselectStep","sd","newLeft","newRight","swap","tmp","RBush","maxEntries","intersects","toBBox","nodesToSearch","child","childBBox","contains","tmpNode","createNode","equalsFn","goingUp","findItem","calcBBox","N2","N1","multiSelect","right2","right3","minArea","minEnlargement","targetNode","area","bboxArea","enlargement","enlargedArea","isNode","insertPath","splitIndex","newNode","minOverlap","bbox1","distBBox","bbox2","overlap","intersectionArea","compareMinX","compareNodeMinX","compareMinY","compareNodeMinY","xMargin","yMargin","leftBBox","rightBBox","margin","bboxMargin","siblings","destNode","minX","minY","maxX","maxY","geojsonRbush","tree","rbush","turfBBox","load","equals","lineSegment","lineSegmentFeature","createSegments","previousCoords","currentCoords","coords1","coords2","west","south","east","north","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","nearestPointOnLine","lines","closestPt","_featureIndex","sectionLength","heightDistance","perpendicularPt1","perpendicularPt2","intersect","lineIntersects","intersectPt","square","horizontalDistance","verticalDistance","verticalMidpoint","horizontalMidpoint","truncate","precision","mutate","truncateCoords","lineSplit","splitter","lineType","splitterType","truncatedSplitter","splitLineWithPoint","splitLineWithPoints","closestLine","findClosestFeature","startPoint","endPoint","pointsEquals","closestSegment","lastCoords","splitterCoords","closestFeature","closestDistance","pt1","pt2","midpoint","point1","point2","heading","light","colors","dark","v1","markerIcon2x","markerIcon","markerShadow","createAddUniqueNumber","generateUniqueNumber","createCache","lastNumberWeakMap","collection","nextNumber","TWO_TO_THE_POWER_OF_TWENTY_NINE","TWO_TO_THE_POWER_OF_THIRTY","createGenerateUniqueNumber","lastNumber","LAST_NUMBER_WEAK_MAP","addUniqueNumber","isMessagePort","sender","PORT_MAP","extendBrokerImplementation","partialBrokerImplementation","port1","port2","portId","port","ONGOING_REQUESTS","createOrGetOngoingRequests","ongoingRequests","createBroker","brokerImplementation","fullBrokerImplementation","transferables","notify","functions","encoderIds","encoderInstanceIds","messagePorts","encoderId","encoderInstanceId","timeslice","arrayBuffers","mimeType","sampleRate","worker","blob","mediaEncoderHost","loadWorker","deregister","instantiate","createBlobEventFactory","nativeBlobEventConstructor","blobEventInit","createDecodeWebMChunk","readElementContent","readElementType","elementType","channelCount","contents","currentElementType","lengthAndType","contentAndLength","createEventTargetConstructor","createEventTarget","wrapEventListener","nativeEventTarget","wrappedEventListener","createEventTargetFactory","createInvalidModificationError","createInvalidStateError","createMediaRecorderConstructor","createNativeMediaRecorder","createNotSupportedError","createWebAudioMediaRecorder","createWebmPcmMediaRecorder","encoderRegexes","eventTargetConstructor","nativeMediaRecorderConstructor","internalMediaRecorder","boundListener","createNativeBlobEventConstructor","createNativeMediaRecorderConstructor","createNativeMediaRecorderFactory","mediaRecorderOptions","bufferedBlobEventListeners","dataAvailableListeners","nativeMediaRecorder","stopListeners","isTrusted","addEventListener","patchedEventListener","bufferedBlobEvents","isSliced","dataAvailableListener","blobEvent","removeEventListener","errorListener","stopListener","createReadElementContent","readVariableSizeInteger","lengthAndValue","numberOfSamples","elementOffset","createReadElementType","createReadVariableSizeInteger","readVariableSizeIntegerLength","firstDataByteOffset","observable","patch","rethrow","toObserver","createOn","wrapSubscribeFunction","createWrapSubscribeFunction","emptyFunction","isNextFunction","innerSubscribe","subscribe","on","createAddRecorderAudioWorkletModule","blobConstructor","urlConstructor","worklet","addAudioWorkletModule","createListener","ongoingRequest","createPostMessageFactory","createRecorderAudioWorkletNodeFactory","createPostMessage","validateState","audioWorkletNodeConstructor","audioWorkletNode","postMessage","encoderPort","expectedStates","expectedState","addRecorderAudioWorkletModule","createRecorderAudioWorkletNode","createExtendedExponentialRampToValueAutomationEvent","endTime","insertTime","createExtendedLinearRampToValueAutomationEvent","createSetValueAutomationEvent","startTime","createSetValueCurveAutomationEvent","getTargetValueAtTime","valueAtStartTime","timeConstant","isExponentialRampToValueAutomationEvent","automationEvent","isLinearRampToValueAutomationEvent","isAnyRampToValueAutomationEvent","isSetValueAutomationEvent","isSetValueCurveAutomationEvent","getValueOfAutomationEventAtIndexAtTime","automationEvents","getEndTimeAndValueOfPreviousAutomationEvent","currentAutomationEvent","nextAutomationEvent","isCancelAndHoldAutomationEvent","isCancelScheduledValuesAutomationEvent","getEventTime","getExponentialRampValueAtTime","getLinearRampValueAtTime","interpolateValue","theoreticIndex","lowerIndex","upperIndex","getValueCurveValueAtTime","isSetTargetAutomationEvent","AutomationEventList","eventTime","removedAutomationEvent","lastAutomationEvent","startValue","truncatedAutomationEvent","ratio","fraction","previousAutomationEvent","persistentAutomationEvent","remainingAutomationEvents","firstRemainingAutomationEvent","indexOfNextEvent","indexOfCurrentEvent","createCancelAndHoldAutomationEvent","cancelTime","createCancelScheduledValuesAutomationEvent","createExponentialRampToValueAutomationEvent","createLinearRampToValueAutomationEvent","createSetTargetAutomationEvent","createAbortError","createAddActiveInputConnectionToAudioNode","insertElementInSet","activeInputs","eventListener","ignoreDuplicates","activeInputConnection","createAddAudioNodeConnections","audioNodeConnectionsStore","audioNode","audioNodeRenderer","nativeAudioNode","createAddAudioParamConnections","audioParamConnectionsStore","audioParam","audioParamRenderer","ACTIVE_AUDIO_NODE_STORE","AUDIO_NODE_CONNECTIONS_STORE","AUDIO_NODE_STORE","AUDIO_PARAM_CONNECTIONS_STORE","AUDIO_PARAM_STORE","CONTEXT_STORE","EVENT_LISTENERS","CYCLE_COUNTERS","NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS","NODE_TO_PROCESSOR_MAPS","isConstructible","constructible","IMPORT_STATEMENT_REGEX","splitImportStatements","importStatements","sourceWithoutImportStatements","unresolvedUrl","importStatementWithResolvedUrl","verifyParameterDescriptors","parameterDescriptors","verifyProcessorCtor","processorCtor","createAddAudioWorkletModule","cacheTestResult","evaluateSource","exposeCurrentFrameAndCurrentTime","fetchSource","getNativeContext","getOrCreateBackupOfflineAudioContext","isNativeOfflineAudioContext","nativeAudioWorkletNodeConstructor","resolvedRequests","testAudioWorkletProcessorPostMessageSupport","moduleURL","resolvedRequestsOfContext","ongoingRequestsOfContext","promiseOfOngoingRequest","nativeContext","absoluteUrl","wrappedSource","evaluateAudioWorkletGlobalScope","nodeNameToProcessorConstructorMap","isSupportingPostMessage","currentIndex","backupOfflineAudioContext","nativeContextOrBackupOfflineAudioContext","updatedResolvedRequestsOfContext","updatedOngoingRequestsOfContext","getValueForKey","pickElementFromSet","matchingElements","matchingElement","deletePassiveInputConnectionToAudioNode","passiveInputs","passiveInputConnections","matchingConnection","passiveInputConnection","getEventListenersOfAudioNode","setInternalStateToActive","isAudioWorkletNode","setInternalStateToPassive","setInternalStateToPassiveWhenNecessary","connections","createAddConnectionToAudioNode","addActiveInputConnectionToAudioNode","addPassiveInputConnectionToAudioNode","connectNativeAudioNodeToNativeAudioNode","deleteActiveInputConnectionToAudioNode","disconnectNativeAudioNodeFromNativeAudioNode","getAudioNodeConnections","getAudioNodeTailTime","getNativeAudioNode","isActiveAudioNode","isPartOfACycle","isPassiveAudioNode","tailTimeTimeoutIds","isOffline","outputs","eventListeners","nativeDestinationAudioNode","nativeSourceAudioNode","partialConnection","tailTime","tailTimeTimeoutId","outputConnection","createAddPassiveInputConnectionToAudioNode","createAddSilentConnection","createNativeGainNode","nativeAudioScheduledSourceNode","nativeGainNode","disconnect","createAddUnrenderedAudioWorkletNode","getUnrenderedAudioWorkletNodes","isOwnedByContext","testAudioBufferCopyChannelMethodsOutOfBoundsSupport","nativeAudioBuffer","createIndexSizeError","wrapAudioBufferGetChannelDataMethod","audioBuffer","getChannelData","createAudioBufferConstructor","audioBufferStore","nativeAudioBufferConstructor","nativeOfflineAudioContextConstructor","testNativeAudioBufferConstructorSupport","wrapAudioBufferCopyChannelMethods","wrapAudioBufferCopyChannelMethodsOutOfBounds","nativeOfflineAudioContext","AudioBuffer","numberOfChannels","MOST_NEGATIVE_SINGLE_FLOAT","MOST_POSITIVE_SINGLE_FLOAT","createAudioBufferSourceNodeConstructor","audioNodeConstructor","createAudioBufferSourceNodeRenderer","createAudioParam","createNativeAudioBufferSourceNode","mergedOptions","nativeAudioBufferSourceNode","audioBufferSourceNodeRenderer","wrappedListener","nativeOnEnded","when","resetInternalStateToPassive","createAudioBufferSourceNodeRendererFactory","connectAudioParam","renderAutomation","renderInputsOfAudioNode","renderedNativeAudioBufferSourceNodes","createAudioBufferSourceNode","nativeAudioBufferSourceNodeIsOwnedByContext","renderedNativeAudioBufferSourceNode","isAudioBufferSourceNode","isBiquadFilterNode","isConstantSourceNode","isGainNode","isOscillatorNode","isStereoPannerNode","getAudioParamConnections","deactivateActiveAudioNodeInputConnections","trace","audioParams","audioParamConnections","deactivateAudioGraph","isValidLatencyHint","latencyHint","createAudioDestinationNodeConstructor","createAudioDestinationNodeRenderer","createNativeAudioDestinationNode","nativeAudioDestinationNode","audioDestinationNodeRenderer","renderedNativeAudioDestinationNodes","createAudioDestinationNode","renderedNativeAudioDestinationNode","createAudioListenerFactory","createNativeChannelMergerNode","createNativeConstantSourceNode","createNativeScriptProcessorNode","getFirstSample","overwriteAccessors","nativeListener","createFakeAudioParams","channelMergerNode","isScriptProcessorNodeCreated","lastOrientation","lastPosition","createScriptProcessorNode","scriptProcessorNode","inputBuffer","orientation","positon","createSetOrientation","createSetPosition","createFakeAudioParam","constantSourceNode","get","cancelAndHoldAtTime","cancelScheduledValues","exponentialRampToValueAtTime","linearRampToValueAtTime","setTargetAtTime","setValueAtTime","setValueCurveAtTime","forwardX","forwardY","forwardZ","positionX","positionY","positionZ","upX","upY","upZ","isAudioNode","audioNodeOrAudioParam","isAudioNodeOutputConnection","element","lmnt","addActiveInputConnectionToAudioParam","addPassiveInputConnectionToAudioParam","isNativeAudioNodeFaker","nativeAudioNodeOrNativeAudioNodeFaker","fakeNativeDestinationAudioNode","deleteActiveInputConnection","activeInputConnections","deleteActiveInputConnectionToAudioParam","deleteEventListenerOfAudioNode","deletePassiveInputConnectionToAudioParam","getNativeAudioParam","testAudioNodeDisconnectMethodSupport","nativeAudioContext","analyzer","ones","channelData","chnnlDt","sample","visitEachAudioNodeOnce","cycles","counts","cycle","isNativeAudioNode","nativeAudioNodeOrAudioParam","wrapAudioNodeDisconnectMethod","connect","returnValue","connectionsToDestination","connection","destinationOrOutput","filteredConnections","addConnectionToAudioParamOfAudioContext","nativeAudioParam","deleteInputConnectionOfAudioNode","deleteInputConnectionOfAudioParam","deleteInputsOfAudioNode","deleteInputsOfAudioParam","deleteAnyConnection","audioNodeConnectionsOfSource","destinations","deleteConnectionAtOutput","deleteConnectionToDestination","createAudioNodeConstructor","addAudioNodeConnections","addConnectionToAudioNode","createIncrementCycleCounter","createInvalidAccessError","decrementCycleCounter","detectCycles","isNativeAudioContext","isNativeAudioParam","isPassive","createAudioParamFactory","addAudioParamConnections","audioParamAudioNodeStore","audioParamStore","createAudioParamRenderer","nativeAudioContextConstructor","setValueAtTimeUntilPossible","isAudioParamOfOfflineAudioContext","maxValue","minValue","automationEventList","previousLastEvent","currentLastEvent","currentTime","convertedValues","firstSample","lastSample","numberOfInterpolatedValues","interpolatedValues","timeOfLastSample","ReadOnlyMap","createAudioWorkletNodeConstructor","addUnrenderedAudioWorkletNode","createAudioWorkletNodeRenderer","createNativeAudioWorkletNode","getBackupOfflineAudioContext","sanitizeAudioWorkletNodeOptions","setActiveAudioWorkletNodeInputs","testAudioWorkletNodeOptionsClonability","processorConstructor","nativeAudioWorkletNode","audioWorkletNodeRenderer","nm","nativeOnProcessorError","copyFromChannel","channelNumber","bufferOffset","slicedInput","copyToChannel","createNestedArrays","arrays","getAudioWorkletProcessor","nodeToProcessorMap","processBuffer","renderedBuffer","outputChannelCount","numberOfInputChannels","numberOfOutputChannels","sum","processedBuffer","audioNodeConnections","audioWorkletProcessor","inputs","prmtrs","potentiallyEmptyInputs","activeSourceFlag","outputChannelSplitterNodeOutput","createAudioWorkletNodeRendererFactory","connectMultipleOutputs","createNativeChannelSplitterNode","deleteUnrenderedAudioWorkletNode","disconnectMultipleOutputs","renderNativeOfflineAudioContext","renderedNativeAudioNodes","processedBufferPromise","createAudioNode","nativeOutputNodes","nativeAudioWorkletNodeIsOwnedByContext","outputChannelSplitterNode","outputChannelMergerNodes","outputGainNode","numberOfParameters","partialOfflineAudioContext","gainNodes","inputChannelSplitterNodes","constantSourceNodes","inputChannelMergerNode","gainNode","audioBufferSourceNode","outputChannelMergerNode","renderedNativeAudioWorkletNodeOrGainNode","createCacheTestResult","ongoingTests","testResults","tester","cachedTestResult","ongoingTest","synchronousTestResult","finalTestResult","createConnectAudioParam","renderInputsOfAudioParam","createConnectMultipleOutputs","outputAudioNodes","outputAudioNode","createConvertNumberToUnsignedLong","unit32Array","createDecrementCycleCounter","cycleCounters","cycleCounter","nativeDestinationAudioParam","createDeleteActiveInputConnectionToAudioNode","createDeleteUnrenderedAudioWorkletNode","isDelayNode","createDetectCycles","nextLink","mergedCycles","nestedCycles","getOutputAudioNodeAtIndex","createDisconnectMultipleOutputs","createEvaluateSource","originalOnErrorHandler","removeErrorEventListenerAndRevokeUrl","lineno","colno","_nativeEventTarget","createExposeCurrentFrameAndCurrentTime","createFetchSource","createGetActiveAudioWorkletNodeInputs","activeAudioWorkletNodeInputsStore","createGetAudioNodeRenderer","createGetAudioNodeTailTime","audioNodeTailTimeStore","createGetAudioParamRenderer","createGetBackupOfflineAudioContext","backupOfflineAudioContextStore","createGetNativeContext","contextStore","createGetOrCreateBackupOfflineAudioContext","createGetUnrenderedAudioWorkletNodes","unrenderedAudioWorkletNodeStore","unrenderedAudioWorkletNodes","createIncrementCycleCounterFactory","createIsNativeAudioContext","anything","createIsNativeAudioNode","createIsNativeAudioParam","createIsNativeOfflineAudioContext","createIsSecureContext","createMediaStreamAudioSourceNodeConstructor","createNativeMediaStreamAudioSourceNode","nativeMediaStreamAudioSourceNode","createMinimalAudioContextConstructor","createUnknownError","minimalBaseAudioContextConstructor","revokeState","createMinimalBaseAudioContextConstructor","audioDestinationNodeConstructor","createAudioListener","_nativeContext","nativeOnStateChange","testPromiseSupport","uint32Array","createMonitorConnections","whenConnected","whenDisconnected","wasDisconnected","wasConnected","isDisconnected","assignNativeAudioNodeOption","assignNativeAudioNodeOptions","createNativeAudioBufferConstructor","assignNativeAudioNodeAudioParamValue","wrapAudioBufferSourceNodeStartMethodConsecutiveCalls","isScheduled","wrapAudioScheduledSourceNodeStartMethodNegativeParameters","wrapAudioScheduledSourceNodeStopMethodNegativeParameters","createNativeAudioBufferSourceNodeFactory","addSilentConnection","testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport","testAudioBufferSourceNodeStartMethodOffsetClampingSupport","testAudioBufferSourceNodeStopMethodNullifiedBufferSupport","testAudioScheduledSourceNodeStartMethodNegativeParametersSupport","testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport","testAudioScheduledSourceNodeStopMethodNegativeParametersSupport","wrapAudioBufferSourceNodeStartMethodOffsetClampling","wrapAudioBufferSourceNodeStopMethodNullifiedBuffer","wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls","createNativeAudioContextConstructor","createNativeAudioDestinationNodeFactory","isNodeOfNativeOfflineAudioContext","createNativeAudioWorkletNodeConstructor","testClonabilityOfAudioWorkletNodeOptions","audioWorkletNodeOptions","createNativeAudioWorkletNodeFactory","createNativeAudioWorkletNodeFaker","monitorConnections","baseLatency","patchedEventListeners","onprocessorerror","unpatchedEventListener","computeBufferSize","cloneAudioWorkletNodeOptions","createAudioWorkletProcessorPromise","clonedAudioWorkletNodeOptions","createAudioWorkletProcessor","audioWorkletProcessorPromise","createNativeAudioWorkletNodeFakerFactory","getActiveAudioWorkletNodeInputs","messageChannel","bufferSize","parameterMap","channelInterpretation","nativeAudioWorkletNodeFaker","onmessage","dWrkltPrcssr","disconnectOutputsGraph","activeInputIndexes","outputBuffer","isConnected","disconnectFakeGraph","connectFakeGraph","createNativeChannelMergerNodeFactory","wrapChannelMergerNode","nativeChannelMergerNode","wrapChannelSplitterNode","channelSplitterNode","nativeChannelSplitterNode","createNativeConstantSourceNodeFactory","createNativeConstantSourceNodeFaker","nativeConstantSourceNode","interceptConnections","original","createNativeConstantSourceNodeFakerFactory","audioNodeOptions","nativeConstantSourceNodeFaker","mediaStream","audioStreamTracks","filteredAudioStreamTracks","createNativeOfflineAudioContextConstructor","createRenderAutomation","getAudioParamRenderer","createRenderInputsOfAudioNode","getAudioNodeRenderer","renderedNativeAudioNode","allRenderingPromises","renderingPromises","createRenderInputsOfAudioParam","createRenderNativeOfflineAudioContext","testOfflineAudioContextCurrentTimeSupport","isOfflineAudioContextCurrentTimeSupported","createSetActiveAudioWorkletNodeInputs","createTestAudioBufferConstructorSupport","createTestAudioWorkletProcessorPostMessageSupport","offlineAudioContext","isEmittingMessageEvents","isEmittingProcessorErrorEvents","oscillator","createTestOfflineAudioContextCurrentTimeSupport","createWindow","createWrapAudioBufferCopyChannelMethods","convertNumberToUnsignedLong","channelNumberAsNumber","bufferOffsetAsNumber","audioBufferLength","destinationLength","sourceLength","createWrapAudioBufferCopyChannelMethodsOutOfBounds","createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer","nullifiedBuffer","createWrapChannelMergerNode","createGetter","createSetter","wrapAudioBufferSourceNodeStartMethodOffsetClamping","clampedOffset","disconnectGainNode","isStopped","audioBufferConstructor","audioBufferSourceNodeConstructor","isSecureContext","mediaStreamAudioSourceNodeConstructor","minimalAudioContextConstructor","ERROR_MESSAGE","createPromisedAudioNodesEncoderInstanceIdAndPort","audioContext","AudioWorkletNode","AudioBufferSourceNode","mediaStreamAudioSourceNode","MediaStreamAudioSourceNode","recorderAudioWorkletNode","createWebAudioMediaRecorderFactory","createBlobEvent","eventTarget","MinimalAudioContext","bufferedArrayBuffers","promisedAudioWorkletModule","abortRecording","promisedAudioNodesAndEncoderInstanceId","promisedPartialRecording","isAudioContextRunning","dispatchDataAvailableEvent","requestNextPartialRecording","suspend","audioTracks","tracks","currentTracks","track","MultiBufferDataView","buffers","byteOffset","byteLength","availableBytes","dataViews","effectiveByteLength","truncatedBuffers","consumedByteLength","truncatedByteOffset","byteLengthOfDataView","littleEndian","byteOffsetOfDataView","byteOffsetOfNextDataView","createWebmPcmMediaRecorderFactory","decodeWebMChunk","stopRecording","audioTrack","isRecording","pendingInvocations","promisedDataViewElementTypeEncoderInstanceIdAndPort","promisedArrayBuffer","currentDataView","remainingDataView","mediaRecorderConstructor","ports","drgstr","encoderRegex","rgstr","recordingId","typedArrays","extendableMediaRecorderWavEncoder"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725],"sources":["../../ClientApp/node_modules/reflect-metadata/Reflect.js","../../ClientApp/node_modules/vue-router/dist/vue-router.mjs","../../ClientApp/node_modules/pinia/dist/pinia.mjs","../../ClientApp/node_modules/@inversifyjs/common/lib/esm/index.js","../../ClientApp/node_modules/@inversifyjs/reflect-metadata-utils/lib/esm/index.js","../../ClientApp/node_modules/@inversifyjs/core/lib/esm/index.js","../../ClientApp/node_modules/inversify/lib/esm/index.js","../../ClientApp/node_modules/axios/lib/helpers/bind.js","../../ClientApp/node_modules/axios/lib/utils.js","../../ClientApp/node_modules/axios/lib/core/AxiosError.js","../../ClientApp/node_modules/axios/lib/helpers/null.js","../../ClientApp/node_modules/axios/lib/helpers/toFormData.js","../../ClientApp/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../ClientApp/node_modules/axios/lib/helpers/buildURL.js","../../ClientApp/node_modules/axios/lib/core/InterceptorManager.js","../../ClientApp/node_modules/axios/lib/defaults/transitional.js","../../ClientApp/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../ClientApp/node_modules/axios/lib/platform/browser/classes/FormData.js","../../ClientApp/node_modules/axios/lib/platform/browser/classes/Blob.js","../../ClientApp/node_modules/axios/lib/platform/browser/index.js","../../ClientApp/node_modules/axios/lib/platform/common/utils.js","../../ClientApp/node_modules/axios/lib/platform/index.js","../../ClientApp/node_modules/axios/lib/helpers/toURLEncodedForm.js","../../ClientApp/node_modules/axios/lib/helpers/formDataToJSON.js","../../ClientApp/node_modules/axios/lib/defaults/index.js","../../ClientApp/node_modules/axios/lib/helpers/parseHeaders.js","../../ClientApp/node_modules/axios/lib/core/AxiosHeaders.js","../../ClientApp/node_modules/axios/lib/core/transformData.js","../../ClientApp/node_modules/axios/lib/cancel/isCancel.js","../../ClientApp/node_modules/axios/lib/cancel/CanceledError.js","../../ClientApp/node_modules/axios/lib/core/settle.js","../../ClientApp/node_modules/axios/lib/helpers/parseProtocol.js","../../ClientApp/node_modules/axios/lib/helpers/speedometer.js","../../ClientApp/node_modules/axios/lib/helpers/throttle.js","../../ClientApp/node_modules/axios/lib/helpers/progressEventReducer.js","../../ClientApp/node_modules/axios/lib/helpers/isURLSameOrigin.js","../../ClientApp/node_modules/axios/lib/helpers/cookies.js","../../ClientApp/node_modules/axios/lib/helpers/isAbsoluteURL.js","../../ClientApp/node_modules/axios/lib/helpers/combineURLs.js","../../ClientApp/node_modules/axios/lib/core/buildFullPath.js","../../ClientApp/node_modules/axios/lib/core/mergeConfig.js","../../ClientApp/node_modules/axios/lib/helpers/resolveConfig.js","../../ClientApp/node_modules/axios/lib/adapters/xhr.js","../../ClientApp/node_modules/axios/lib/helpers/composeSignals.js","../../ClientApp/node_modules/axios/lib/helpers/trackStream.js","../../ClientApp/node_modules/axios/lib/adapters/fetch.js","../../ClientApp/node_modules/axios/lib/adapters/adapters.js","../../ClientApp/node_modules/axios/lib/core/dispatchRequest.js","../../ClientApp/node_modules/axios/lib/env/data.js","../../ClientApp/node_modules/axios/lib/helpers/validator.js","../../ClientApp/node_modules/axios/lib/core/Axios.js","../../ClientApp/node_modules/axios/lib/cancel/CancelToken.js","../../ClientApp/node_modules/axios/lib/helpers/spread.js","../../ClientApp/node_modules/axios/lib/helpers/isAxiosError.js","../../ClientApp/node_modules/axios/lib/helpers/HttpStatusCode.js","../../ClientApp/node_modules/axios/lib/axios.js","../../ClientApp/node_modules/axios/index.js","../../ClientApp/node_modules/@intlify/shared/dist/shared.mjs","../../ClientApp/node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js","../../ClientApp/node_modules/@intlify/core-base/dist/core-base.mjs","../../ClientApp/node_modules/vue-i18n/dist/vue-i18n.runtime.mjs","../../ClientApp/node_modules/lodash-es/_freeGlobal.js","../../ClientApp/node_modules/lodash-es/_root.js","../../ClientApp/node_modules/lodash-es/_Symbol.js","../../ClientApp/node_modules/lodash-es/_getRawTag.js","../../ClientApp/node_modules/lodash-es/_objectToString.js","../../ClientApp/node_modules/lodash-es/_baseGetTag.js","../../ClientApp/node_modules/lodash-es/isObjectLike.js","../../ClientApp/node_modules/lodash-es/isSymbol.js","../../ClientApp/node_modules/lodash-es/_arrayMap.js","../../ClientApp/node_modules/lodash-es/isArray.js","../../ClientApp/node_modules/lodash-es/_baseToString.js","../../ClientApp/node_modules/lodash-es/isObject.js","../../ClientApp/node_modules/lodash-es/identity.js","../../ClientApp/node_modules/lodash-es/isFunction.js","../../ClientApp/node_modules/lodash-es/_coreJsData.js","../../ClientApp/node_modules/lodash-es/_isMasked.js","../../ClientApp/node_modules/lodash-es/_toSource.js","../../ClientApp/node_modules/lodash-es/_baseIsNative.js","../../ClientApp/node_modules/lodash-es/_getValue.js","../../ClientApp/node_modules/lodash-es/_getNative.js","../../ClientApp/node_modules/lodash-es/_WeakMap.js","../../ClientApp/node_modules/lodash-es/_baseCreate.js","../../ClientApp/node_modules/lodash-es/_apply.js","../../ClientApp/node_modules/lodash-es/noop.js","../../ClientApp/node_modules/lodash-es/_copyArray.js","../../ClientApp/node_modules/lodash-es/_shortOut.js","../../ClientApp/node_modules/lodash-es/constant.js","../../ClientApp/node_modules/lodash-es/_defineProperty.js","../../ClientApp/node_modules/lodash-es/_baseSetToString.js","../../ClientApp/node_modules/lodash-es/_setToString.js","../../ClientApp/node_modules/lodash-es/_arrayEach.js","../../ClientApp/node_modules/lodash-es/_baseFindIndex.js","../../ClientApp/node_modules/lodash-es/_baseIsNaN.js","../../ClientApp/node_modules/lodash-es/_strictIndexOf.js","../../ClientApp/node_modules/lodash-es/_baseIndexOf.js","../../ClientApp/node_modules/lodash-es/_arrayIncludes.js","../../ClientApp/node_modules/lodash-es/_isIndex.js","../../ClientApp/node_modules/lodash-es/_baseAssignValue.js","../../ClientApp/node_modules/lodash-es/eq.js","../../ClientApp/node_modules/lodash-es/_assignValue.js","../../ClientApp/node_modules/lodash-es/_copyObject.js","../../ClientApp/node_modules/lodash-es/_overRest.js","../../ClientApp/node_modules/lodash-es/_baseRest.js","../../ClientApp/node_modules/lodash-es/isLength.js","../../ClientApp/node_modules/lodash-es/isArrayLike.js","../../ClientApp/node_modules/lodash-es/_isIterateeCall.js","../../ClientApp/node_modules/lodash-es/_createAssigner.js","../../ClientApp/node_modules/lodash-es/_isPrototype.js","../../ClientApp/node_modules/lodash-es/_baseTimes.js","../../ClientApp/node_modules/lodash-es/_baseIsArguments.js","../../ClientApp/node_modules/lodash-es/isArguments.js","../../ClientApp/node_modules/lodash-es/stubFalse.js","../../ClientApp/node_modules/lodash-es/isBuffer.js","../../ClientApp/node_modules/lodash-es/_baseIsTypedArray.js","../../ClientApp/node_modules/lodash-es/_baseUnary.js","../../ClientApp/node_modules/lodash-es/_nodeUtil.js","../../ClientApp/node_modules/lodash-es/isTypedArray.js","../../ClientApp/node_modules/lodash-es/_arrayLikeKeys.js","../../ClientApp/node_modules/lodash-es/_overArg.js","../../ClientApp/node_modules/lodash-es/_nativeKeys.js","../../ClientApp/node_modules/lodash-es/_baseKeys.js","../../ClientApp/node_modules/lodash-es/keys.js","../../ClientApp/node_modules/lodash-es/_nativeKeysIn.js","../../ClientApp/node_modules/lodash-es/_baseKeysIn.js","../../ClientApp/node_modules/lodash-es/keysIn.js","../../ClientApp/node_modules/lodash-es/_isKey.js","../../ClientApp/node_modules/lodash-es/_nativeCreate.js","../../ClientApp/node_modules/lodash-es/_hashClear.js","../../ClientApp/node_modules/lodash-es/_hashDelete.js","../../ClientApp/node_modules/lodash-es/_hashGet.js","../../ClientApp/node_modules/lodash-es/_hashHas.js","../../ClientApp/node_modules/lodash-es/_hashSet.js","../../ClientApp/node_modules/lodash-es/_Hash.js","../../ClientApp/node_modules/lodash-es/_listCacheClear.js","../../ClientApp/node_modules/lodash-es/_assocIndexOf.js","../../ClientApp/node_modules/lodash-es/_listCacheDelete.js","../../ClientApp/node_modules/lodash-es/_listCacheGet.js","../../ClientApp/node_modules/lodash-es/_listCacheHas.js","../../ClientApp/node_modules/lodash-es/_listCacheSet.js","../../ClientApp/node_modules/lodash-es/_ListCache.js","../../ClientApp/node_modules/lodash-es/_Map.js","../../ClientApp/node_modules/lodash-es/_mapCacheClear.js","../../ClientApp/node_modules/lodash-es/_isKeyable.js","../../ClientApp/node_modules/lodash-es/_getMapData.js","../../ClientApp/node_modules/lodash-es/_mapCacheDelete.js","../../ClientApp/node_modules/lodash-es/_mapCacheGet.js","../../ClientApp/node_modules/lodash-es/_mapCacheHas.js","../../ClientApp/node_modules/lodash-es/_mapCacheSet.js","../../ClientApp/node_modules/lodash-es/_MapCache.js","../../ClientApp/node_modules/lodash-es/memoize.js","../../ClientApp/node_modules/lodash-es/_memoizeCapped.js","../../ClientApp/node_modules/lodash-es/_stringToPath.js","../../ClientApp/node_modules/lodash-es/toString.js","../../ClientApp/node_modules/lodash-es/_castPath.js","../../ClientApp/node_modules/lodash-es/_toKey.js","../../ClientApp/node_modules/lodash-es/_baseGet.js","../../ClientApp/node_modules/lodash-es/_arrayPush.js","../../ClientApp/node_modules/lodash-es/_isFlattenable.js","../../ClientApp/node_modules/lodash-es/_baseFlatten.js","../../ClientApp/node_modules/lodash-es/flatten.js","../../ClientApp/node_modules/lodash-es/_flatRest.js","../../ClientApp/node_modules/lodash-es/_getPrototype.js","../../ClientApp/node_modules/lodash-es/isPlainObject.js","../../ClientApp/node_modules/lodash-es/_baseSlice.js","../../ClientApp/node_modules/lodash-es/_castSlice.js","../../ClientApp/node_modules/lodash-es/_hasUnicode.js","../../ClientApp/node_modules/lodash-es/_asciiToArray.js","../../ClientApp/node_modules/lodash-es/_unicodeToArray.js","../../ClientApp/node_modules/lodash-es/_stringToArray.js","../../ClientApp/node_modules/lodash-es/_createCaseFirst.js","../../ClientApp/node_modules/lodash-es/upperFirst.js","../../ClientApp/node_modules/lodash-es/capitalize.js","../../ClientApp/node_modules/lodash-es/_arrayReduce.js","../../ClientApp/node_modules/lodash-es/_basePropertyOf.js","../../ClientApp/node_modules/lodash-es/_deburrLetter.js","../../ClientApp/node_modules/lodash-es/deburr.js","../../ClientApp/node_modules/lodash-es/_asciiWords.js","../../ClientApp/node_modules/lodash-es/_hasUnicodeWord.js","../../ClientApp/node_modules/lodash-es/_unicodeWords.js","../../ClientApp/node_modules/lodash-es/words.js","../../ClientApp/node_modules/lodash-es/_createCompounder.js","../../ClientApp/node_modules/lodash-es/camelCase.js","../../ClientApp/node_modules/lodash-es/_stackClear.js","../../ClientApp/node_modules/lodash-es/_stackDelete.js","../../ClientApp/node_modules/lodash-es/_stackGet.js","../../ClientApp/node_modules/lodash-es/_stackHas.js","../../ClientApp/node_modules/lodash-es/_stackSet.js","../../ClientApp/node_modules/lodash-es/_Stack.js","../../ClientApp/node_modules/lodash-es/_baseAssign.js","../../ClientApp/node_modules/lodash-es/_baseAssignIn.js","../../ClientApp/node_modules/lodash-es/_cloneBuffer.js","../../ClientApp/node_modules/lodash-es/_arrayFilter.js","../../ClientApp/node_modules/lodash-es/stubArray.js","../../ClientApp/node_modules/lodash-es/_getSymbols.js","../../ClientApp/node_modules/lodash-es/_copySymbols.js","../../ClientApp/node_modules/lodash-es/_getSymbolsIn.js","../../ClientApp/node_modules/lodash-es/_copySymbolsIn.js","../../ClientApp/node_modules/lodash-es/_baseGetAllKeys.js","../../ClientApp/node_modules/lodash-es/_getAllKeys.js","../../ClientApp/node_modules/lodash-es/_getAllKeysIn.js","../../ClientApp/node_modules/lodash-es/_DataView.js","../../ClientApp/node_modules/lodash-es/_Promise.js","../../ClientApp/node_modules/lodash-es/_Set.js","../../ClientApp/node_modules/lodash-es/_getTag.js","../../ClientApp/node_modules/lodash-es/_initCloneArray.js","../../ClientApp/node_modules/lodash-es/_Uint8Array.js","../../ClientApp/node_modules/lodash-es/_cloneArrayBuffer.js","../../ClientApp/node_modules/lodash-es/_cloneDataView.js","../../ClientApp/node_modules/lodash-es/_cloneRegExp.js","../../ClientApp/node_modules/lodash-es/_cloneSymbol.js","../../ClientApp/node_modules/lodash-es/_cloneTypedArray.js","../../ClientApp/node_modules/lodash-es/_initCloneByTag.js","../../ClientApp/node_modules/lodash-es/_initCloneObject.js","../../ClientApp/node_modules/lodash-es/_baseIsMap.js","../../ClientApp/node_modules/lodash-es/isMap.js","../../ClientApp/node_modules/lodash-es/_baseIsSet.js","../../ClientApp/node_modules/lodash-es/isSet.js","../../ClientApp/node_modules/lodash-es/_baseClone.js","../../ClientApp/node_modules/lodash-es/_setCacheAdd.js","../../ClientApp/node_modules/lodash-es/_setCacheHas.js","../../ClientApp/node_modules/lodash-es/_SetCache.js","../../ClientApp/node_modules/lodash-es/_arraySome.js","../../ClientApp/node_modules/lodash-es/_cacheHas.js","../../ClientApp/node_modules/lodash-es/_equalArrays.js","../../ClientApp/node_modules/lodash-es/_mapToArray.js","../../ClientApp/node_modules/lodash-es/_setToArray.js","../../ClientApp/node_modules/lodash-es/_equalByTag.js","../../ClientApp/node_modules/lodash-es/_equalObjects.js","../../ClientApp/node_modules/lodash-es/_baseIsEqualDeep.js","../../ClientApp/node_modules/lodash-es/_baseIsEqual.js","../../ClientApp/node_modules/lodash-es/_baseProperty.js","../../ClientApp/node_modules/lodash-es/_basePropertyDeep.js","../../ClientApp/node_modules/lodash-es/property.js","../../ClientApp/node_modules/lodash-es/_baseIteratee.js","../../ClientApp/node_modules/lodash-es/_createBaseFor.js","../../ClientApp/node_modules/lodash-es/_baseFor.js","../../ClientApp/node_modules/lodash-es/_assignMergeValue.js","../../ClientApp/node_modules/lodash-es/isArrayLikeObject.js","../../ClientApp/node_modules/lodash-es/_safeGet.js","../../ClientApp/node_modules/lodash-es/toPlainObject.js","../../ClientApp/node_modules/lodash-es/_baseMergeDeep.js","../../ClientApp/node_modules/lodash-es/_baseMerge.js","../../ClientApp/node_modules/lodash-es/mergeWith.js","../../ClientApp/node_modules/lodash-es/last.js","../../ClientApp/node_modules/lodash-es/_parent.js","../../ClientApp/node_modules/lodash-es/isEmpty.js","../../ClientApp/node_modules/lodash-es/isEqual.js","../../ClientApp/node_modules/lodash-es/isFinite.js","../../ClientApp/node_modules/lodash-es/isNumber.js","../../ClientApp/node_modules/lodash-es/isNull.js","../../ClientApp/node_modules/lodash-es/isUndefined.js","../../ClientApp/node_modules/lodash-es/kebabCase.js","../../ClientApp/node_modules/lodash-es/merge.js","../../ClientApp/node_modules/lodash-es/_baseUnset.js","../../ClientApp/node_modules/lodash-es/_customOmitClone.js","../../ClientApp/node_modules/lodash-es/omit.js","../../ClientApp/node_modules/lodash-es/_createSet.js","../../ClientApp/node_modules/lodash-es/_baseUniq.js","../../ClientApp/node_modules/lodash-es/uniqBy.js","../../ClientApp/node_modules/@geta/kolumbus-frontend/locale/en.ts","../../ClientApp/node_modules/@geta/kolumbus-frontend/locale/no.ts","../../ClientApp/node_modules/date-fns/toDate.mjs","../../ClientApp/node_modules/date-fns/constructFrom.mjs","../../ClientApp/node_modules/date-fns/addDays.mjs","../../ClientApp/node_modules/date-fns/addMilliseconds.mjs","../../ClientApp/node_modules/date-fns/constants.mjs","../../ClientApp/node_modules/date-fns/_lib/defaultOptions.mjs","../../ClientApp/node_modules/date-fns/startOfWeek.mjs","../../ClientApp/node_modules/date-fns/startOfISOWeek.mjs","../../ClientApp/node_modules/date-fns/getISOWeekYear.mjs","../../ClientApp/node_modules/date-fns/startOfDay.mjs","../../ClientApp/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../../ClientApp/node_modules/date-fns/differenceInCalendarDays.mjs","../../ClientApp/node_modules/date-fns/startOfISOWeekYear.mjs","../../ClientApp/node_modules/date-fns/addMinutes.mjs","../../ClientApp/node_modules/date-fns/isSameDay.mjs","../../ClientApp/node_modules/date-fns/isDate.mjs","../../ClientApp/node_modules/date-fns/isValid.mjs","../../ClientApp/node_modules/date-fns/_lib/getRoundingMethod.mjs","../../ClientApp/node_modules/date-fns/differenceInMilliseconds.mjs","../../ClientApp/node_modules/date-fns/differenceInSeconds.mjs","../../ClientApp/node_modules/date-fns/startOfMinute.mjs","../../ClientApp/node_modules/date-fns/startOfYear.mjs","../../ClientApp/node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../../ClientApp/node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../../ClientApp/node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../../ClientApp/node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../../ClientApp/node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../../ClientApp/node_modules/date-fns/locale/en-US/_lib/localize.mjs","../../ClientApp/node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../../ClientApp/node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../../ClientApp/node_modules/date-fns/locale/en-US/_lib/match.mjs","../../ClientApp/node_modules/date-fns/locale/en-US.mjs","../../ClientApp/node_modules/date-fns/getDayOfYear.mjs","../../ClientApp/node_modules/date-fns/getISOWeek.mjs","../../ClientApp/node_modules/date-fns/getWeekYear.mjs","../../ClientApp/node_modules/date-fns/startOfWeekYear.mjs","../../ClientApp/node_modules/date-fns/getWeek.mjs","../../ClientApp/node_modules/date-fns/_lib/addLeadingZeros.mjs","../../ClientApp/node_modules/date-fns/_lib/format/lightFormatters.mjs","../../ClientApp/node_modules/date-fns/_lib/format/formatters.mjs","../../ClientApp/node_modules/date-fns/_lib/format/longFormatters.mjs","../../ClientApp/node_modules/date-fns/_lib/protectedTokens.mjs","../../ClientApp/node_modules/date-fns/format.mjs","../../ClientApp/node_modules/date-fns/formatRelative.mjs","../../ClientApp/node_modules/date-fns/getDaysInMonth.mjs","../../ClientApp/node_modules/date-fns/getDefaultOptions.mjs","../../ClientApp/node_modules/date-fns/getISODay.mjs","../../ClientApp/node_modules/date-fns/intlFormat.mjs","../../ClientApp/node_modules/date-fns/isAfter.mjs","../../ClientApp/node_modules/date-fns/isBefore.mjs","../../ClientApp/node_modules/date-fns/isEqual.mjs","../../ClientApp/node_modules/date-fns/transpose.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/Setter.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/Parser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/EraParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/constants.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/utils.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/YearParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/QuarterParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/MonthParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.mjs","../../ClientApp/node_modules/date-fns/setWeek.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.mjs","../../ClientApp/node_modules/date-fns/setISOWeek.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/DateParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.mjs","../../ClientApp/node_modules/date-fns/setDay.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/DayParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.mjs","../../ClientApp/node_modules/date-fns/setISODay.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/ISODayParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/AMPMParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/MinuteParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/SecondParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.mjs","../../ClientApp/node_modules/date-fns/parse/_lib/parsers.mjs","../../ClientApp/node_modules/date-fns/parse.mjs","../../ClientApp/node_modules/date-fns/minutesToHours.mjs","../../ClientApp/node_modules/date-fns/parseISO.mjs","../../ClientApp/node_modules/date-fns/secondsToHours.mjs","../../ClientApp/node_modules/date-fns/setMonth.mjs","../../ClientApp/node_modules/date-fns/set.mjs","../../ClientApp/node_modules/@geta/kolumbus-frontend/features/common/CustomError.ts","../../ClientApp/node_modules/@geta/kolumbus-frontend/composables/MenuProvider/MenuProvider.ts","../../ClientApp/node_modules/@geta/kolumbus-frontend/composables/SearchService/useSearchService.ts","../../ClientApp/node_modules/@geta/kolumbus-frontend/composables/useSiteNavigation.ts","../../ClientApp/node_modules/date-fns-tz/dist/esm/_lib/tzTokenizeDate/index.js","../../ClientApp/node_modules/date-fns-tz/dist/esm/_lib/newDateUTC/index.js","../../ClientApp/node_modules/date-fns-tz/dist/esm/_lib/tzParseTimezone/index.js","../../ClientApp/node_modules/date-fns-tz/dist/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../ClientApp/node_modules/date-fns-tz/dist/esm/_lib/tzPattern/index.js","../../ClientApp/node_modules/date-fns-tz/dist/esm/toDate/index.js","../../ClientApp/node_modules/date-fns-tz/dist/esm/toZonedTime/index.js","../../ClientApp/node_modules/date-fns-tz/dist/esm/fromZonedTime/index.js","../../ClientApp/node_modules/@geta/kolumbus-frontend/composables/DateHelpers/dateHelpers.ts","../../ClientApp/node_modules/@vueuse/shared/index.mjs","../../ClientApp/node_modules/@vueuse/core/index.mjs","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/LanguageSwitcher/LanguageSwitcher.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/MyProfileStatus/MyProfileStatus.vue","../../ClientApp/node_modules/@geta/kolumbus-assets/dist/logo.svg","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/SiteTopMenu/SiteTopMenu.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/SiteTopMenu/SiteTopMenuDropdown.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/LogoutLinkButton/LogoutLinkButton.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/SiteTopMenu/SiteTopMobileMenu.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/SiteTopMenu/SiteProfileMenuDropdown.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/SiteTopMenu/index.ts","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/SearchBar/SearchBar.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/SiteHeader/SiteHeader.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/SiteHeader/index.ts","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/RouteNumber/RouteNumber.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/PlatformLabel/PlatformLabel.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/QuaySignage/QuaySignage.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/BaseInputComponent.ts","../../ClientApp/node_modules/maska/dist/maska.mjs","../../ClientApp/node_modules/maska/dist/vue.mjs","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/TimePicker/TimePicker.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/DatePicker/DatePicker.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/DateTimePicker/DateTimePicker.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/ErrorBoundary/ErrorBoundary.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/components/KInput/KInput.vue","../../ClientApp/node_modules/date-fns/locale/nb/_lib/formatDistance.mjs","../../ClientApp/node_modules/date-fns/locale/nb/_lib/formatLong.mjs","../../ClientApp/node_modules/date-fns/locale/nb/_lib/formatRelative.mjs","../../ClientApp/node_modules/date-fns/locale/nb/_lib/localize.mjs","../../ClientApp/node_modules/date-fns/locale/nb/_lib/match.mjs","../../ClientApp/node_modules/date-fns/locale/nb.mjs","../../ClientApp/node_modules/@vue-leaflet/vue-leaflet/dist/vue-leaflet.es.js","../../ClientApp/node_modules/leaflet-contextmenu/dist/leaflet.contextmenu.js","../../ClientApp/src/features/map/components/Leaflet.GoogleMutant/lru_map.js","../../ClientApp/src/features/map/components/Leaflet.GoogleMutant/Leaflet.GoogleMutant.js","../../ClientApp/node_modules/@googlemaps/js-api-loader/dist/index.mjs","../../ClientApp/node_modules/@geta/vue-leaflet-googlemutant/dist/vue-leaflet-googlemutant.es.js","../../ClientApp/node_modules/vue-gtm/dist/config.js","../../ClientApp/node_modules/url-search-params-polyfill/index.js","../../ClientApp/node_modules/vue-gtm/dist/utils.js","../../ClientApp/node_modules/vue-gtm/dist/plugin.js","../../ClientApp/node_modules/vue-gtm/dist/index.js","../../ClientApp/node_modules/@geta/kolumbus-frontend/features/authentication/SilentLogin.vue","../../ClientApp/node_modules/@geta/kolumbus-frontend/features/profile/ProfileService.ts","../../ClientApp/node_modules/@geta/kolumbus-frontend/features/authentication/userStore.ts","../../ClientApp/node_modules/libphonenumber-js/metadata.min.json.js","../../ClientApp/node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","../../ClientApp/node_modules/libphonenumber-js/es6/tools/semver-compare.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/isObject.js","../../ClientApp/node_modules/libphonenumber-js/es6/metadata.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js","../../ClientApp/node_modules/libphonenumber-js/es6/isPossible.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/getNumberType.js","../../ClientApp/node_modules/libphonenumber-js/es6/isValid.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js","../../ClientApp/node_modules/libphonenumber-js/es6/constants.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/RFC3966.js","../../ClientApp/node_modules/libphonenumber-js/es6/format.js","../../ClientApp/node_modules/libphonenumber-js/es6/PhoneNumber.js","../../ClientApp/node_modules/libphonenumber-js/es6/ParseError.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/parseDigits.js","../../ClientApp/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js","../../ClientApp/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","../../ClientApp/node_modules/libphonenumber-js/es6/parse.js","../../ClientApp/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js","../../ClientApp/node_modules/libphonenumber-js/es6/normalizeArguments.js","../../ClientApp/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js","../../ClientApp/node_modules/libphonenumber-js/es6/parsePhoneNumber.js","../../ClientApp/node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js","../../ClientApp/node_modules/libphonenumber-js/es6/legacy/getNumberType.js","../../ClientApp/node_modules/libphonenumber-js/es6/legacy/isValidNumber.js","../../ClientApp/node_modules/libphonenumber-js/index.es6.exports/isValidNumber.js","../../ClientApp/node_modules/recaptcha-v3/dist/ReCaptchaInstance.js","../../ClientApp/node_modules/recaptcha-v3/dist/ReCaptchaLoader.js","../../ClientApp/node_modules/recaptcha-v3/dist/ReCaptcha.js","../../ClientApp/node_modules/vue-recaptcha-v3-esm/dist/ReCaptchaVuePlugin.js","../../ClientApp/node_modules/@turf/helpers/dist/esm/index.js","../../ClientApp/node_modules/@turf/invariant/dist/esm/index.js","../../ClientApp/node_modules/@turf/bearing/dist/esm/index.js","../../ClientApp/node_modules/@turf/destination/dist/esm/index.js","../../ClientApp/node_modules/@turf/distance/dist/esm/index.js","../../ClientApp/node_modules/@turf/meta/dist/esm/index.js","../../ClientApp/node_modules/@turf/bbox/dist/esm/index.js","../../ClientApp/node_modules/sweepline-intersections/dist/sweeplineIntersections.esm.js","../../ClientApp/node_modules/@turf/line-intersect/dist/esm/index.js","../../ClientApp/node_modules/quickselect/index.js","../../ClientApp/node_modules/rbush/index.js","../../ClientApp/node_modules/@turf/geojson-rbush/dist/esm/index.js","../../ClientApp/node_modules/@turf/line-segment/dist/esm/index.js","../../ClientApp/node_modules/@turf/nearest-point-on-line/dist/esm/index.js","../../ClientApp/node_modules/@turf/square/dist/esm/index.js","../../ClientApp/node_modules/@turf/truncate/dist/esm/index.js","../../ClientApp/node_modules/@turf/line-split/dist/esm/index.js","../../ClientApp/node_modules/@turf/midpoint/dist/esm/index.js","../../ClientApp/node_modules/@geta/kolumbus-frontend/blueprints/v1.ts","../../ClientApp/node_modules/leaflet/dist/images/marker-icon-2x.png","../../ClientApp/node_modules/leaflet/dist/images/marker-icon.png","../../ClientApp/node_modules/leaflet/dist/images/marker-shadow.png","../../ClientApp/node_modules/fast-unique-numbers/build/es2019/factories/add-unique-number.js","../../ClientApp/node_modules/fast-unique-numbers/build/es2019/factories/cache.js","../../ClientApp/node_modules/fast-unique-numbers/build/es2019/factories/generate-unique-number.js","../../ClientApp/node_modules/fast-unique-numbers/build/es2019/module.js","../../ClientApp/node_modules/broker-factory/build/es2019/guards/message-port.js","../../ClientApp/node_modules/broker-factory/build/es2019/helpers/port-map.js","../../ClientApp/node_modules/broker-factory/build/es2019/helpers/extend-broker-implementation.js","../../ClientApp/node_modules/broker-factory/build/es2019/module.js","../../ClientApp/node_modules/media-encoder-host-broker/build/es2019/module.js","../../ClientApp/node_modules/media-encoder-host/build/es2019/worker/worker.js","../../ClientApp/node_modules/media-encoder-host/build/es2019/module.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/blob-event-factory.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/decode-web-m-chunk.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/event-target-constructor.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/event-target-factory.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/invalid-modification-error.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/invalid-state-error.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/media-recorder-constructor.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/native-blob-event-constructor.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/native-media-recorder-constructor.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/native-media-recorder-factory.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/not-supported-error.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/read-element-content.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/read-element-type.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/read-variable-size-integer.js","../../ClientApp/node_modules/rxjs-interop/dist/esm/symbols.js","../../ClientApp/node_modules/rxjs-interop/dist/esm/patch.js","../../ClientApp/node_modules/rxjs-interop/dist/esm/to-observer.js","../../ClientApp/node_modules/subscribable-things/build/es2019/factories/on.js","../../ClientApp/node_modules/subscribable-things/build/es2019/factories/wrap-subscribe-function.js","../../ClientApp/node_modules/subscribable-things/build/es2019/module.js","../../ClientApp/node_modules/recorder-audio-worklet/build/es2019/factories/add-recorder-audio-worklet-module.js","../../ClientApp/node_modules/recorder-audio-worklet/build/es2019/factories/listener.js","../../ClientApp/node_modules/recorder-audio-worklet/build/es2019/factories/post-message-factory.js","../../ClientApp/node_modules/recorder-audio-worklet/build/es2019/factories/recorder-audio-worklet-node-factory.js","../../ClientApp/node_modules/recorder-audio-worklet/build/es2019/functions/validate-state.js","../../ClientApp/node_modules/recorder-audio-worklet/build/es2019/worklet/worklet.js","../../ClientApp/node_modules/recorder-audio-worklet/build/es2019/module.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-extended-exponential-ramp-to-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-extended-linear-ramp-to-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-set-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-set-value-curve-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/get-target-value-at-time.js","../../ClientApp/node_modules/automation-events/build/es2019/guards/exponential-ramp-to-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/guards/linear-ramp-to-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/guards/any-ramp-to-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/guards/set-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/guards/set-value-curve-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/get-value-of-automation-event-at-index-at-time.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/get-end-time-and-value-of-previous-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/guards/cancel-and-hold-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/guards/cancel-scheduled-values-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/get-event-time.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/get-exponential-ramp-value-at-time.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/get-linear-ramp-value-at-time.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/interpolate-value.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/get-value-curve-value-at-time.js","../../ClientApp/node_modules/automation-events/build/es2019/guards/set-target-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/classes/automation-event-list.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-cancel-and-hold-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-cancel-scheduled-values-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-exponential-ramp-to-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-linear-ramp-to-value-automation-event.js","../../ClientApp/node_modules/automation-events/build/es2019/functions/create-set-target-automation-event.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/abort-error.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/add-active-input-connection-to-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/add-audio-node-connections.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/add-audio-param-connections.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/globals.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/is-constructible.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/split-import-statements.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/add-audio-worklet-module.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/get-value-for-key.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/pick-element-from-set.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/delete-passive-input-connection-to-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/get-event-listeners-of-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-active.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/audio-worklet-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-passive.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-passive-when-necessary.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/add-connection-to-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/add-passive-input-connection-to-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/add-silent-connection.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/add-unrendered-audio-worklet-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/is-owned-by-context.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/index-size-error.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-get-channel-data-method.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/constants.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/is-active-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-source-node-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-source-node-renderer-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/audio-buffer-source-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/biquad-filter-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/constant-source-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/gain-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/oscillator-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/stereo-panner-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/get-audio-node-connections.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/get-audio-param-connections.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/deactivate-active-audio-node-input-connections.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/deactivate-audio-graph.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/is-valid-latency-hint.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-destination-node-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-destination-node-renderer-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-listener-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/audio-node-output-connection.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/insert-element-in-set.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/add-active-input-connection-to-audio-param.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/add-passive-input-connection-to-audio-param.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/native-audio-node-faker.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/connect-native-audio-node-to-native-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/delete-active-input-connection.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/delete-active-input-connection-to-audio-param.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/delete-event-listeners-of-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/delete-passive-input-connection-to-audio-param.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/disconnect-native-audio-node-from-native-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/get-native-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/get-native-audio-param.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/is-part-of-a-cycle.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/is-passive-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-node-disconnect-method-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/visit-each-audio-node-once.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/native-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-node-disconnect-method.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-node-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-param-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-param-renderer.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/read-only-map.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-worklet-node-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/copy-from-channel.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/copy-to-channel.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/create-nested-arrays.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/get-audio-worklet-processor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/audio-worklet-node-renderer-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/cache-test-result.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/connect-audio-param.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/connect-multiple-outputs.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/convert-number-to-unsigned-long.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/decrement-cycle-counter.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/delete-active-input-connection-to-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/delete-unrendered-audio-worklet-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/guards/delay-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/detect-cycles.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/disconnect-multiple-outputs.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/evaluate-source.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/event-target-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/expose-current-frame-and-current-time.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/fetch-source.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/get-active-audio-worklet-node-inputs.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/get-audio-node-renderer.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/get-audio-node-tail-time.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/get-audio-param-renderer.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/get-backup-offline-audio-context.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/invalid-state-error.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/get-native-context.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/get-or-create-backup-offline-audio-context.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/get-unrendered-audio-worklet-nodes.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/invalid-access-error.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/increment-cycle-counter-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-context.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-param.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/is-native-offline-audio-context.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/is-secure-context.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/media-stream-audio-source-node-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/minimal-audio-context-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/minimal-base-audio-context-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-promise-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/monitor-connections.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-option.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-options.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-audio-buffer-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-audio-param-value.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-audio-buffer-source-node-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-audio-context-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-audio-destination-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-clonability-of-audio-worklet-node-options.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/compute-buffer-size.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/clone-audio-worklet-node-options.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/create-audio-worklet-processor-promise.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/create-audio-worklet-processor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-faker-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-channel-merger-node-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-channel-splitter-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-channel-splitter-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-constant-source-node-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/intercept-connections.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-constant-source-node-faker-factory.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-gain-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-media-stream-audio-source-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-offline-audio-context-constructor.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/native-script-processor-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/not-supported-error.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/render-automation.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/render-inputs-of-audio-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/render-inputs-of-audio-param.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/render-native-offline-audio-context.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/set-active-audio-worklet-node-inputs.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/test-audio-buffer-constructor-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/test-audio-worklet-processor-post-message-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/test-offline-audio-context-current-time-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/unknown-error.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/window.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-copy-channel-methods.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/factories/wrap-channel-merger-node.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/get-first-sample.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/overwrite-accessors.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/sanitize-audio-worklet-node-options.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/set-value-at-time-until-possible.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-start-method-offset-clamping-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/test-audio-worklet-node-options-clonability.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-source-node-start-method-offset-clamping.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/helpers/wrap-event-listener.js","../../ClientApp/node_modules/standardized-audio-context/build/es2019/module.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/web-audio-media-recorder.js","../../ClientApp/node_modules/multi-buffer-data-view/build/es2019/classes/multi-buffer-data-view.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/webm-pcm-media-recorder.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/factories/window.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/functions/read-variable-size-integer-length.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/functions/wrap-event-listener.js","../../ClientApp/node_modules/extendable-media-recorder/build/es2019/module.js","../../ClientApp/node_modules/extendable-media-recorder-wav-encoder-broker/build/es2019/module.js","../../ClientApp/node_modules/extendable-media-recorder-wav-encoder/build/es2019/worker/worker.js","../../ClientApp/node_modules/extendable-media-recorder-wav-encoder/build/es2019/module.js"],"sourcesContent":["/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof globalThis === \"object\" ? globalThis :\n typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n sloppyModeThis();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect !== \"undefined\") {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter, root);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n function makeExporter(target, previous) {\n return function (key, value) {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n if (previous)\n previous(key, value);\n };\n }\n function functionThis() {\n try {\n return Function(\"return this;\")();\n }\n catch (_) { }\n }\n function indirectEvalThis() {\n try {\n return (void 0, eval)(\"(function() { return this; })()\");\n }\n catch (_) { }\n }\n function sloppyModeThis() {\n return functionThis() || indirectEvalThis();\n }\n })(function (exporter, root) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n var metadataRegistry = GetOrCreateMetadataRegistry();\n var metadataProvider = CreateMetadataProvider(metadataRegistry);\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return;\n return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ true);\n provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var provider = GetMetadataProvider(O, P, /*create*/ false);\n if (!provider) {\n return [];\n }\n return provider.OrdinaryOwnMetadataKeys(O, P);\n }\n // 6 ECMAScript Data Types and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n function SameValueZero(x, y) {\n return x === y || x !== x && y !== y;\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // Global metadata registry\n // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n /**\n * Creates a registry used to allow multiple `reflect-metadata` providers.\n */\n function CreateMetadataRegistry() {\n var fallback;\n if (!IsUndefined(registrySymbol) &&\n typeof root.Reflect !== \"undefined\" &&\n !(registrySymbol in root.Reflect) &&\n typeof root.Reflect.defineMetadata === \"function\") {\n // interoperate with older version of `reflect-metadata` that did not support a registry.\n fallback = CreateFallbackProvider(root.Reflect);\n }\n var first;\n var second;\n var rest;\n var targetProviderMap = new _WeakMap();\n var registry = {\n registerProvider: registerProvider,\n getProvider: getProvider,\n setProvider: setProvider,\n };\n return registry;\n function registerProvider(provider) {\n if (!Object.isExtensible(registry)) {\n throw new Error(\"Cannot add provider to a frozen registry.\");\n }\n switch (true) {\n case fallback === provider: break;\n case IsUndefined(first):\n first = provider;\n break;\n case first === provider: break;\n case IsUndefined(second):\n second = provider;\n break;\n case second === provider: break;\n default:\n if (rest === undefined)\n rest = new _Set();\n rest.add(provider);\n break;\n }\n }\n function getProviderNoCache(O, P) {\n if (!IsUndefined(first)) {\n if (first.isProviderFor(O, P))\n return first;\n if (!IsUndefined(second)) {\n if (second.isProviderFor(O, P))\n return first;\n if (!IsUndefined(rest)) {\n var iterator = GetIterator(rest);\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n return undefined;\n }\n var provider = IteratorValue(next);\n if (provider.isProviderFor(O, P)) {\n IteratorClose(iterator);\n return provider;\n }\n }\n }\n }\n }\n if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n return fallback;\n }\n return undefined;\n }\n function getProvider(O, P) {\n var providerMap = targetProviderMap.get(O);\n var provider;\n if (!IsUndefined(providerMap)) {\n provider = providerMap.get(P);\n }\n if (!IsUndefined(provider)) {\n return provider;\n }\n provider = getProviderNoCache(O, P);\n if (!IsUndefined(provider)) {\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return provider;\n }\n function hasProvider(provider) {\n if (IsUndefined(provider))\n throw new TypeError();\n return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n }\n function setProvider(O, P, provider) {\n if (!hasProvider(provider)) {\n throw new Error(\"Metadata provider not registered.\");\n }\n var existingProvider = getProvider(O, P);\n if (existingProvider !== provider) {\n if (!IsUndefined(existingProvider)) {\n return false;\n }\n var providerMap = targetProviderMap.get(O);\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return true;\n }\n }\n /**\n * Gets or creates the shared registry of metadata providers.\n */\n function GetOrCreateMetadataRegistry() {\n var metadataRegistry;\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n metadataRegistry = root.Reflect[registrySymbol];\n }\n if (IsUndefined(metadataRegistry)) {\n metadataRegistry = CreateMetadataRegistry();\n }\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n Object.defineProperty(root.Reflect, registrySymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: metadataRegistry\n });\n }\n return metadataRegistry;\n }\n function CreateMetadataProvider(registry) {\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var metadata = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var targetMetadata = metadata.get(O);\n if (IsUndefined(targetMetadata))\n return false;\n return targetMetadata.has(P);\n },\n OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n };\n metadataRegistry.registerProvider(provider);\n return provider;\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = metadata.get(O);\n var createdTargetMetadata = false;\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n metadata.set(O, targetMetadata);\n createdTargetMetadata = true;\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n if (!registry.setProvider(O, P, provider)) {\n targetMetadata.delete(P);\n if (createdTargetMetadata) {\n metadata.delete(O);\n }\n throw new Error(\"Wrong provider for target.\");\n }\n }\n return metadataMap;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(MetadataKey))\n return false;\n if (metadataMap.size === 0) {\n var targetMetadata = metadata.get(O);\n if (!IsUndefined(targetMetadata)) {\n targetMetadata.delete(P);\n if (targetMetadata.size === 0) {\n metadata.delete(targetMetadata);\n }\n }\n }\n return true;\n }\n }\n function CreateFallbackProvider(reflect) {\n var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n var metadataOwner = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var metadataPropertySet = metadataOwner.get(O);\n if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n return true;\n }\n if (getOwnMetadataKeys(O, P).length) {\n if (IsUndefined(metadataPropertySet)) {\n metadataPropertySet = new _Set();\n metadataOwner.set(O, metadataPropertySet);\n }\n metadataPropertySet.add(P);\n return true;\n }\n return false;\n },\n OrdinaryDefineOwnMetadata: defineMetadata,\n OrdinaryHasOwnMetadata: hasOwnMetadata,\n OrdinaryGetOwnMetadata: getOwnMetadata,\n OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n OrdinaryDeleteMetadata: deleteMetadata,\n };\n return provider;\n }\n /**\n * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n * then this module's metadata provider is assigned to the object.\n */\n function GetMetadataProvider(O, P, Create) {\n var registeredProvider = metadataRegistry.getProvider(O, P);\n if (!IsUndefined(registeredProvider)) {\n return registeredProvider;\n }\n if (Create) {\n if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n return metadataProvider;\n }\n throw new Error(\"Illegal state.\");\n }\n return undefined;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n var Map = /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (SameValueZero(key, this._cacheKey)) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (!SameValueZero(this._cacheKey, key)) {\n this._cacheIndex = -1;\n for (var i = 0; i < this._keys.length; i++) {\n if (SameValueZero(this._keys[i], key)) {\n this._cacheIndex = i;\n break;\n }\n }\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n return Map;\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n var Set = /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.keys(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n return Set;\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n var array = new Uint8Array(size);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(array);\n }\n else if (typeof msCrypto !== \"undefined\") {\n msCrypto.getRandomValues(array);\n }\n else {\n FillRandomBytes(array, size);\n }\n return array;\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","/*!\n * vue-router v4.5.0\n * (c) 2024 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, shallowReactive, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof document !== 'undefined';\n\n/**\n * Allows differentiating lazy components from functional components and vue-class-component\n * @internal\n *\n * @param component\n */\nfunction isRouteComponent(component) {\n return (typeof component === 'object' ||\n 'displayName' in component ||\n 'props' in component ||\n '__vccOpts' in component);\n}\nfunction isESModule(obj) {\n return (obj.__esModule ||\n obj[Symbol.toStringTag] === 'Module' ||\n // support CF with dynamic imports that do not\n // add the Module string tag\n (obj.default && isRouteComponent(obj.default)));\n}\nconst assign = Object.assign;\nfunction applyToParams(fn, params) {\n const newParams = {};\n for (const key in params) {\n const value = params[key];\n newParams[key] = isArray(value)\n ? value.map(fn)\n : fn(value);\n }\n return newParams;\n}\nconst noop = () => { };\n/**\n * Typesafe alternative to Array.isArray\n * https://github.com/microsoft/TypeScript/pull/48228\n */\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\n // avoid using ...args as it breaks in older Edge builds\n const args = Array.from(arguments).slice(1);\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\n}\n\n/**\n * Encoding Rules (␣ = Space)\n * - Path: ␣ \" < > # ? { }\n * - Query: ␣ \" < > # & =\n * - Hash: ␣ \" < > `\n *\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\n * defines some extra characters to be encoded. Most browsers do not encode them\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\n * plus `-._~`. This extra safety should be applied to query by patching the\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\n * encoded everywhere because some browsers like FF encode it when directly\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\n */\n// const EXTRA_RESERVED_RE = /[!'()*]/g\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\nconst HASH_RE = /#/g; // %23\nconst AMPERSAND_RE = /&/g; // %26\nconst SLASH_RE = /\\//g; // %2F\nconst EQUAL_RE = /=/g; // %3D\nconst IM_RE = /\\?/g; // %3F\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\n * seems to be less flexible than not doing so and I can't find out the legacy\n * systems requiring this for regular requests like text/html. In the standard,\n * the encoding of the plus character is only mentioned for\n * application/x-www-form-urlencoded\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\n * leave the plus character as is in queries. To be more flexible, we allow the\n * plus character on the query, but it can also be manually encoded by the user.\n *\n * Resources:\n * - https://url.spec.whatwg.org/#urlencoded-parsing\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\n */\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\nconst ENC_CARET_RE = /%5E/g; // ^\nconst ENC_BACKTICK_RE = /%60/g; // `\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\nconst ENC_PIPE_RE = /%7C/g; // |\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\nconst ENC_SPACE_RE = /%20/g; // }\n/**\n * Encode characters that need to be encoded on the path, search and hash\n * sections of the URL.\n *\n * @internal\n * @param text - string to encode\n * @returns encoded string\n */\nfunction commonEncode(text) {\n return encodeURI('' + text)\n .replace(ENC_PIPE_RE, '|')\n .replace(ENC_BRACKET_OPEN_RE, '[')\n .replace(ENC_BRACKET_CLOSE_RE, ']');\n}\n/**\n * Encode characters that need to be encoded on the hash section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeHash(text) {\n return commonEncode(text)\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^');\n}\n/**\n * Encode characters that need to be encoded query values on the query\n * section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeQueryValue(text) {\n return (commonEncode(text)\n // Encode the space as +, encode the + to differentiate it from the space\n .replace(PLUS_RE, '%2B')\n .replace(ENC_SPACE_RE, '+')\n .replace(HASH_RE, '%23')\n .replace(AMPERSAND_RE, '%26')\n .replace(ENC_BACKTICK_RE, '`')\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^'));\n}\n/**\n * Like `encodeQueryValue` but also encodes the `=` character.\n *\n * @param text - string to encode\n */\nfunction encodeQueryKey(text) {\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodePath(text) {\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL as a\n * param. This function encodes everything {@link encodePath} does plus the\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\n * string instead.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeParam(text) {\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n try {\n return decodeURIComponent('' + text);\n }\n catch (err) {\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\n }\n return '' + text;\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\n/**\n * Transforms a URI into a normalized history location\n *\n * @param parseQuery\n * @param location - URI to normalize\n * @param currentLocation - current absolute location. Allows resolving relative\n * paths. Must start with `/`. Defaults to `/`\n * @returns a normalized history location\n */\nfunction parseURL(parseQuery, location, currentLocation = '/') {\n let path, query = {}, searchString = '', hash = '';\n // Could use URL and URLSearchParams but IE 11 doesn't support it\n // TODO: move to new URL()\n const hashPos = location.indexOf('#');\n let searchPos = location.indexOf('?');\n // the hash appears before the search, so it's not part of the search string\n if (hashPos < searchPos && hashPos >= 0) {\n searchPos = -1;\n }\n if (searchPos > -1) {\n path = location.slice(0, searchPos);\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\n query = parseQuery(searchString);\n }\n if (hashPos > -1) {\n path = path || location.slice(0, hashPos);\n // keep the # character\n hash = location.slice(hashPos, location.length);\n }\n // no search and no query\n path = resolveRelativePath(path != null ? path : location, currentLocation);\n // empty path means a relative query or hash `?foo=f`, `#thing`\n return {\n fullPath: path + (searchString && '?') + searchString + hash,\n path,\n query,\n hash: decode(hash),\n };\n}\n/**\n * Stringifies a URL object\n *\n * @param stringifyQuery\n * @param location\n */\nfunction stringifyURL(stringifyQuery, location) {\n const query = location.query ? stringifyQuery(location.query) : '';\n return location.path + (query && '?') + query + (location.hash || '');\n}\n/**\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\n *\n * @param pathname - location.pathname\n * @param base - base to strip off\n */\nfunction stripBase(pathname, base) {\n // no base or base is not found at the beginning\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\n return pathname;\n return pathname.slice(base.length) || '/';\n}\n/**\n * Checks if two RouteLocation are equal. This means that both locations are\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\n * parameters and `hash` are the same\n *\n * @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it.\n * @param a - first {@link RouteLocation}\n * @param b - second {@link RouteLocation}\n */\nfunction isSameRouteLocation(stringifyQuery, a, b) {\n const aLastIndex = a.matched.length - 1;\n const bLastIndex = b.matched.length - 1;\n return (aLastIndex > -1 &&\n aLastIndex === bLastIndex &&\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\n isSameRouteLocationParams(a.params, b.params) &&\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\n a.hash === b.hash);\n}\n/**\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\n * considered equal to the `RouteRecord` they are aliasing.\n *\n * @param a - first {@link RouteRecord}\n * @param b - second {@link RouteRecord}\n */\nfunction isSameRouteRecord(a, b) {\n // since the original record has an undefined value for aliasOf\n // but all aliases point to the original record, this will always compare\n // the original record\n return (a.aliasOf || a) === (b.aliasOf || b);\n}\nfunction isSameRouteLocationParams(a, b) {\n if (Object.keys(a).length !== Object.keys(b).length)\n return false;\n for (const key in a) {\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\n return false;\n }\n return true;\n}\nfunction isSameRouteLocationParamsValue(a, b) {\n return isArray(a)\n ? isEquivalentArray(a, b)\n : isArray(b)\n ? isEquivalentArray(b, a)\n : a === b;\n}\n/**\n * Check if two arrays are the same or if an array with one single entry is the\n * same as another primitive value. Used to check query and parameters\n *\n * @param a - array of values\n * @param b - array of values or a single value\n */\nfunction isEquivalentArray(a, b) {\n return isArray(b)\n ? a.length === b.length && a.every((value, i) => value === b[i])\n : a.length === 1 && a[0] === b;\n}\n/**\n * Resolves a relative path that starts with `.`.\n *\n * @param to - path location we are resolving\n * @param from - currentLocation.path, should start with `/`\n */\nfunction resolveRelativePath(to, from) {\n if (to.startsWith('/'))\n return to;\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\n return to;\n }\n if (!to)\n return from;\n const fromSegments = from.split('/');\n const toSegments = to.split('/');\n const lastToSegment = toSegments[toSegments.length - 1];\n // make . and ./ the same (../ === .., ../../ === ../..)\n // this is the same behavior as new URL()\n if (lastToSegment === '..' || lastToSegment === '.') {\n toSegments.push('');\n }\n let position = fromSegments.length - 1;\n let toPosition;\n let segment;\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\n segment = toSegments[toPosition];\n // we stay on the same position\n if (segment === '.')\n continue;\n // go up in the from array\n if (segment === '..') {\n // we can't go below zero, but we still need to increment toPosition\n if (position > 1)\n position--;\n // continue\n }\n // we reached a non-relative path, we stop here\n else\n break;\n }\n return (fromSegments.slice(0, position).join('/') +\n '/' +\n toSegments.slice(toPosition).join('/'));\n}\n/**\n * Initial route location where the router is. Can be used in navigation guards\n * to differentiate the initial navigation.\n *\n * @example\n * ```js\n * import { START_LOCATION } from 'vue-router'\n *\n * router.beforeEach((to, from) => {\n * if (from === START_LOCATION) {\n * // initial navigation\n * }\n * })\n * ```\n */\nconst START_LOCATION_NORMALIZED = {\n path: '/',\n // TODO: could we use a symbol in the future?\n name: undefined,\n params: {},\n query: {},\n hash: '',\n fullPath: '/',\n matched: [],\n meta: {},\n redirectedFrom: undefined,\n};\n\nvar NavigationType;\n(function (NavigationType) {\n NavigationType[\"pop\"] = \"pop\";\n NavigationType[\"push\"] = \"push\";\n})(NavigationType || (NavigationType = {}));\nvar NavigationDirection;\n(function (NavigationDirection) {\n NavigationDirection[\"back\"] = \"back\";\n NavigationDirection[\"forward\"] = \"forward\";\n NavigationDirection[\"unknown\"] = \"\";\n})(NavigationDirection || (NavigationDirection = {}));\n/**\n * Starting location for Histories\n */\nconst START = '';\n// Generic utils\n/**\n * Normalizes a base by removing any trailing slash and reading the base tag if\n * present.\n *\n * @param base - base to normalize\n */\nfunction normalizeBase(base) {\n if (!base) {\n if (isBrowser) {\n // respect tag\n const baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\n }\n else {\n base = '/';\n }\n }\n // ensure leading slash when it was removed by the regex above avoid leading\n // slash with hash because the file could be read from the disk like file://\n // and the leading slash would cause problems\n if (base[0] !== '/' && base[0] !== '#')\n base = '/' + base;\n // remove the trailing slash so all other method can just do `base + fullPath`\n // to build an href\n return removeTrailingSlash(base);\n}\n// remove any character before the hash\nconst BEFORE_HASH_RE = /^[^#]+#/;\nfunction createHref(base, location) {\n return base.replace(BEFORE_HASH_RE, '#') + location;\n}\n\nfunction getElementPosition(el, offset) {\n const docRect = document.documentElement.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n return {\n behavior: offset.behavior,\n left: elRect.left - docRect.left - (offset.left || 0),\n top: elRect.top - docRect.top - (offset.top || 0),\n };\n}\nconst computeScrollPosition = () => ({\n left: window.scrollX,\n top: window.scrollY,\n});\nfunction scrollToPosition(position) {\n let scrollToOptions;\n if ('el' in position) {\n const positionEl = position.el;\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\n /**\n * `id`s can accept pretty much any characters, including CSS combinators\n * like `>` or `~`. It's still possible to retrieve elements using\n * `document.getElementById('~')` but it needs to be escaped when using\n * `document.querySelector('#\\\\~')` for it to be valid. The only\n * requirements for `id`s are them to be unique on the page and to not be\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\n * be properly escaped for it to work with `querySelector`. We could check\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\n * would make things inconsistent since they are valid characters for an\n * `id` but would need to be escaped when using `querySelector`, breaking\n * their usage and ending up in no selector returned. Selectors need to be\n * escaped:\n *\n * - `#1-thing` becomes `#\\31 -thing`\n * - `#with~symbols` becomes `#with\\\\~symbols`\n *\n * - More information about the topic can be found at\n * https://mathiasbynens.be/notes/html5-id-class.\n * - Practical example: https://mathiasbynens.be/demo/html5-id\n */\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\n try {\n const foundEl = document.querySelector(position.el);\n if (isIdSelector && foundEl) {\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\n // return to avoid other warnings\n return;\n }\n }\n catch (err) {\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\n // return to avoid other warnings\n return;\n }\n }\n }\n const el = typeof positionEl === 'string'\n ? isIdSelector\n ? document.getElementById(positionEl.slice(1))\n : document.querySelector(positionEl)\n : positionEl;\n if (!el) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\n return;\n }\n scrollToOptions = getElementPosition(el, position);\n }\n else {\n scrollToOptions = position;\n }\n if ('scrollBehavior' in document.documentElement.style)\n window.scrollTo(scrollToOptions);\n else {\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);\n }\n}\nfunction getScrollKey(path, delta) {\n const position = history.state ? history.state.position - delta : -1;\n return position + path;\n}\nconst scrollPositions = new Map();\nfunction saveScrollPosition(key, scrollPosition) {\n scrollPositions.set(key, scrollPosition);\n}\nfunction getSavedScrollPosition(key) {\n const scroll = scrollPositions.get(key);\n // consume it so it's not used again\n scrollPositions.delete(key);\n return scroll;\n}\n// TODO: RFC about how to save scroll position\n/**\n * ScrollBehavior instance used by the router to compute and restore the scroll\n * position when navigating.\n */\n// export interface ScrollHandler {\n// // returns a scroll position that can be saved in history\n// compute(): ScrollPositionEntry\n// // can take an extended ScrollPositionEntry\n// scroll(position: ScrollPosition): void\n// }\n// export const scrollHandler: ScrollHandler = {\n// compute: computeScroll,\n// scroll: scrollToPosition,\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\n/**\n * Creates a normalized history location from a window.location object\n * @param base - The base path\n * @param location - The window.location object\n */\nfunction createCurrentLocation(base, location) {\n const { pathname, search, hash } = location;\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\n const hashPos = base.indexOf('#');\n if (hashPos > -1) {\n let slicePos = hash.includes(base.slice(hashPos))\n ? base.slice(hashPos).length\n : 1;\n let pathFromHash = hash.slice(slicePos);\n // prepend the starting slash to hash so the url starts with /#\n if (pathFromHash[0] !== '/')\n pathFromHash = '/' + pathFromHash;\n return stripBase(pathFromHash, '');\n }\n const path = stripBase(pathname, base);\n return path + search + hash;\n}\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\n let listeners = [];\n let teardowns = [];\n // TODO: should it be a stack? a Dict. Check if the popstate listener\n // can trigger twice\n let pauseState = null;\n const popStateHandler = ({ state, }) => {\n const to = createCurrentLocation(base, location);\n const from = currentLocation.value;\n const fromState = historyState.value;\n let delta = 0;\n if (state) {\n currentLocation.value = to;\n historyState.value = state;\n // ignore the popstate and reset the pauseState\n if (pauseState && pauseState === from) {\n pauseState = null;\n return;\n }\n delta = fromState ? state.position - fromState.position : 0;\n }\n else {\n replace(to);\n }\n // Here we could also revert the navigation by calling history.go(-delta)\n // this listener will have to be adapted to not trigger again and to wait for the url\n // to be updated before triggering the listeners. Some kind of validation function would also\n // need to be passed to the listeners so the navigation can be accepted\n // call all listeners\n listeners.forEach(listener => {\n listener(currentLocation.value, from, {\n delta,\n type: NavigationType.pop,\n direction: delta\n ? delta > 0\n ? NavigationDirection.forward\n : NavigationDirection.back\n : NavigationDirection.unknown,\n });\n });\n };\n function pauseListeners() {\n pauseState = currentLocation.value;\n }\n function listen(callback) {\n // set up the listener and prepare teardown callbacks\n listeners.push(callback);\n const teardown = () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n teardowns.push(teardown);\n return teardown;\n }\n function beforeUnloadListener() {\n const { history } = window;\n if (!history.state)\n return;\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\n }\n function destroy() {\n for (const teardown of teardowns)\n teardown();\n teardowns = [];\n window.removeEventListener('popstate', popStateHandler);\n window.removeEventListener('beforeunload', beforeUnloadListener);\n }\n // set up the listeners and prepare teardown callbacks\n window.addEventListener('popstate', popStateHandler);\n // TODO: could we use 'pagehide' or 'visibilitychange' instead?\n // https://developer.chrome.com/blog/page-lifecycle-api/\n window.addEventListener('beforeunload', beforeUnloadListener, {\n passive: true,\n });\n return {\n pauseListeners,\n listen,\n destroy,\n };\n}\n/**\n * Creates a state object\n */\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\n return {\n back,\n current,\n forward,\n replaced,\n position: window.history.length,\n scroll: computeScroll ? computeScrollPosition() : null,\n };\n}\nfunction useHistoryStateNavigation(base) {\n const { history, location } = window;\n // private variables\n const currentLocation = {\n value: createCurrentLocation(base, location),\n };\n const historyState = { value: history.state };\n // build current history entry as this is a fresh navigation\n if (!historyState.value) {\n changeLocation(currentLocation.value, {\n back: null,\n current: currentLocation.value,\n forward: null,\n // the length is off by one, we need to decrease it\n position: history.length - 1,\n replaced: true,\n // don't add a scroll as the user may have an anchor, and we want\n // scrollBehavior to be triggered without a saved position\n scroll: null,\n }, true);\n }\n function changeLocation(to, state, replace) {\n /**\n * if a base tag is provided, and we are on a normal domain, we have to\n * respect the provided `base` attribute because pushState() will use it and\n * potentially erase anything before the `#` like at\n * https://github.com/vuejs/router/issues/685 where a base of\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\n * there is no host, the `` tag makes no sense and if there isn't a\n * base tag we can just use everything after the `#`.\n */\n const hashIndex = base.indexOf('#');\n const url = hashIndex > -1\n ? (location.host && document.querySelector('base')\n ? base\n : base.slice(hashIndex)) + to\n : createBaseLocation() + base + to;\n try {\n // BROWSER QUIRK\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\n historyState.value = state;\n }\n catch (err) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('Error with push/replace State', err);\n }\n else {\n console.error(err);\n }\n // Force the navigation, this also resets the call count\n location[replace ? 'replace' : 'assign'](url);\n }\n }\n function replace(to, data) {\n const state = assign({}, history.state, buildState(historyState.value.back, \n // keep back and forward entries but override current position\n to, historyState.value.forward, true), data, { position: historyState.value.position });\n changeLocation(to, state, true);\n currentLocation.value = to;\n }\n function push(to, data) {\n // Add to current entry the information of where we are going\n // as well as saving the current position\n const currentState = assign({}, \n // use current history state to gracefully handle a wrong call to\n // history.replaceState\n // https://github.com/vuejs/router/issues/366\n historyState.value, history.state, {\n forward: to,\n scroll: computeScrollPosition(),\n });\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\n `history.replaceState(history.state, '', url)\\n\\n` +\n `You can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state`);\n }\n changeLocation(currentState.current, currentState, true);\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\n changeLocation(to, state, false);\n currentLocation.value = to;\n }\n return {\n location: currentLocation,\n state: historyState,\n push,\n replace,\n };\n}\n/**\n * Creates an HTML5 history. Most common history for single page applications.\n *\n * @param base -\n */\nfunction createWebHistory(base) {\n base = normalizeBase(base);\n const historyNavigation = useHistoryStateNavigation(base);\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\n function go(delta, triggerListeners = true) {\n if (!triggerListeners)\n historyListeners.pauseListeners();\n history.go(delta);\n }\n const routerHistory = assign({\n // it's overridden right after\n location: '',\n base,\n go,\n createHref: createHref.bind(null, base),\n }, historyNavigation, historyListeners);\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => historyNavigation.location.value,\n });\n Object.defineProperty(routerHistory, 'state', {\n enumerable: true,\n get: () => historyNavigation.state.value,\n });\n return routerHistory;\n}\n\n/**\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\n *\n * @param base - Base applied to all urls, defaults to '/'\n * @returns a history object that can be passed to the router constructor\n */\nfunction createMemoryHistory(base = '') {\n let listeners = [];\n let queue = [START];\n let position = 0;\n base = normalizeBase(base);\n function setLocation(location) {\n position++;\n if (position !== queue.length) {\n // we are in the middle, we remove everything from here in the queue\n queue.splice(position);\n }\n queue.push(location);\n }\n function triggerListeners(to, from, { direction, delta }) {\n const info = {\n direction,\n delta,\n type: NavigationType.pop,\n };\n for (const callback of listeners) {\n callback(to, from, info);\n }\n }\n const routerHistory = {\n // rewritten by Object.defineProperty\n location: START,\n // TODO: should be kept in queue\n state: {},\n base,\n createHref: createHref.bind(null, base),\n replace(to) {\n // remove current entry and decrement position\n queue.splice(position--, 1);\n setLocation(to);\n },\n push(to, data) {\n setLocation(to);\n },\n listen(callback) {\n listeners.push(callback);\n return () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n },\n destroy() {\n listeners = [];\n queue = [START];\n position = 0;\n },\n go(delta, shouldTrigger = true) {\n const from = this.location;\n const direction = \n // we are considering delta === 0 going forward, but in abstract mode\n // using 0 for the delta doesn't make sense like it does in html5 where\n // it reloads the page\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\n if (shouldTrigger) {\n triggerListeners(this.location, from, {\n direction,\n delta,\n });\n }\n },\n };\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => queue[position],\n });\n return routerHistory;\n}\n\n/**\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\n * handle any URL is not possible.\n *\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `` tag\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\n * calls**, meaning that if you use a `` tag, it's `href` value **has to match this parameter** (ignoring anything\n * after the `#`).\n *\n * @example\n * ```js\n * // at https://example.com/folder\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\n * // you should avoid doing this because it changes the original url and breaks copying urls\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\n *\n * // at file:///usr/etc/folder/index.html\n * // for locations with no `host`, the base is ignored\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\n * ```\n */\nfunction createWebHashHistory(base) {\n // Make sure this implementation is fine in terms of encoding, specially for IE11\n // for `file://`, directly use the pathname and ignore the base\n // location.pathname contains an initial `/` even at the root: `https://example.com`\n base = location.host ? base || location.pathname + location.search : '';\n // allow the user to provide a `#` in the middle: `/base/#/app`\n if (!base.includes('#'))\n base += '#';\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\n }\n return createWebHistory(base);\n}\n\nfunction isRouteLocation(route) {\n return typeof route === 'string' || (route && typeof route === 'object');\n}\nfunction isRouteName(name) {\n return typeof name === 'string' || typeof name === 'symbol';\n}\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\n/**\n * Enumeration with all possible types for navigation failures. Can be passed to\n * {@link isNavigationFailure} to check for specific failures.\n */\nvar NavigationFailureType;\n(function (NavigationFailureType) {\n /**\n * An aborted navigation is a navigation that failed because a navigation\n * guard returned `false` or called `next(false)`\n */\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\n /**\n * A cancelled navigation is a navigation that failed because a more recent\n * navigation finished started (not necessarily finished).\n */\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\n /**\n * A duplicated navigation is a navigation that failed because it was\n * initiated while already being at the exact same location.\n */\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\n})(NavigationFailureType || (NavigationFailureType = {}));\n// DEV only debug messages\nconst ErrorTypeMessages = {\n [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\n : ''}`;\n },\n [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\n },\n [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\n },\n [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\n },\n [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\n },\n};\n/**\n * Creates a typed NavigationFailure object.\n * @internal\n * @param type - NavigationFailureType\n * @param params - { from, to }\n */\nfunction createRouterError(type, params) {\n // keep full error messages in cjs versions\n if ((process.env.NODE_ENV !== 'production') || !true) {\n return assign(new Error(ErrorTypeMessages[type](params)), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n else {\n return assign(new Error(), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n}\nfunction isNavigationFailure(error, type) {\n return (error instanceof Error &&\n NavigationFailureSymbol in error &&\n (type == null || !!(error.type & type)));\n}\nconst propertiesToLog = ['params', 'query', 'hash'];\nfunction stringifyRoute(to) {\n if (typeof to === 'string')\n return to;\n if (to.path != null)\n return to.path;\n const location = {};\n for (const key of propertiesToLog) {\n if (key in to)\n location[key] = to[key];\n }\n return JSON.stringify(location, null, 2);\n}\n\n// default pattern for a param: non-greedy everything but /\nconst BASE_PARAM_PATTERN = '[^/]+?';\nconst BASE_PATH_PARSER_OPTIONS = {\n sensitive: false,\n strict: false,\n start: true,\n end: true,\n};\n// Special Regex characters that must be escaped in static tokens\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\n/**\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\n *\n * @param segments - array of segments returned by tokenizePath\n * @param extraOptions - optional options for the regexp\n * @returns a PathParser\n */\nfunction tokensToParser(segments, extraOptions) {\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\n const score = [];\n // the regexp as a string\n let pattern = options.start ? '^' : '';\n // extracted keys\n const keys = [];\n for (const segment of segments) {\n // the root segment needs special treatment\n const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\n // allow trailing slash\n if (options.strict && !segment.length)\n pattern += '/';\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\n const token = segment[tokenIndex];\n // resets the score if we are inside a sub-segment /:a-other-:b\n let subSegmentScore = 40 /* PathScore.Segment */ +\n (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\n if (token.type === 0 /* TokenType.Static */) {\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n pattern += '/';\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\n subSegmentScore += 40 /* PathScore.Static */;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional, regexp } = token;\n keys.push({\n name: value,\n repeatable,\n optional,\n });\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\n // the user provided a custom regexp /:id(\\\\d+)\n if (re !== BASE_PARAM_PATTERN) {\n subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\n // make sure the regexp is valid before using it\n try {\n new RegExp(`(${re})`);\n }\n catch (err) {\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\n err.message);\n }\n }\n // when we repeat we must take care of the repeating leading slash\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n subPattern =\n // avoid an optional / if there are more segments e.g. /:p?-static\n // or /:p?-:p2\n optional && segment.length < 2\n ? `(?:/${subPattern})`\n : '/' + subPattern;\n if (optional)\n subPattern += '?';\n pattern += subPattern;\n subSegmentScore += 20 /* PathScore.Dynamic */;\n if (optional)\n subSegmentScore += -8 /* PathScore.BonusOptional */;\n if (repeatable)\n subSegmentScore += -20 /* PathScore.BonusRepeatable */;\n if (re === '.*')\n subSegmentScore += -50 /* PathScore.BonusWildcard */;\n }\n segmentScores.push(subSegmentScore);\n }\n // an empty array like /home/ -> [[{home}], []]\n // if (!segment.length) pattern += '/'\n score.push(segmentScores);\n }\n // only apply the strict bonus to the last score\n if (options.strict && options.end) {\n const i = score.length - 1;\n score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\n }\n // TODO: dev only warn double trailing slash\n if (!options.strict)\n pattern += '/?';\n if (options.end)\n pattern += '$';\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\n else if (options.strict && !pattern.endsWith('/'))\n pattern += '(?:/|$)';\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\n function parse(path) {\n const match = path.match(re);\n const params = {};\n if (!match)\n return null;\n for (let i = 1; i < match.length; i++) {\n const value = match[i] || '';\n const key = keys[i - 1];\n params[key.name] = value && key.repeatable ? value.split('/') : value;\n }\n return params;\n }\n function stringify(params) {\n let path = '';\n // for optional parameters to allow to be empty\n let avoidDuplicatedSlash = false;\n for (const segment of segments) {\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\n path += '/';\n avoidDuplicatedSlash = false;\n for (const token of segment) {\n if (token.type === 0 /* TokenType.Static */) {\n path += token.value;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional } = token;\n const param = value in params ? params[value] : '';\n if (isArray(param) && !repeatable) {\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\n }\n const text = isArray(param)\n ? param.join('/')\n : param;\n if (!text) {\n if (optional) {\n // if we have more than one optional param like /:a?-static we don't need to care about the optional param\n if (segment.length < 2) {\n // remove the last slash as we could be at the end\n if (path.endsWith('/'))\n path = path.slice(0, -1);\n // do not append a slash on the next iteration\n else\n avoidDuplicatedSlash = true;\n }\n }\n else\n throw new Error(`Missing required param \"${value}\"`);\n }\n path += text;\n }\n }\n }\n // avoid empty path when we have multiple optional params\n return path || '/';\n }\n return {\n re,\n score,\n keys,\n parse,\n stringify,\n };\n}\n/**\n * Compares an array of numbers as used in PathParser.score and returns a\n * number. This function can be used to `sort` an array\n *\n * @param a - first array of numbers\n * @param b - second array of numbers\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n * should be sorted first\n */\nfunction compareScoreArray(a, b) {\n let i = 0;\n while (i < a.length && i < b.length) {\n const diff = b[i] - a[i];\n // only keep going if diff === 0\n if (diff)\n return diff;\n i++;\n }\n // if the last subsegment was Static, the shorter segments should be sorted first\n // otherwise sort the longest segment first\n if (a.length < b.length) {\n return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? -1\n : 1;\n }\n else if (a.length > b.length) {\n return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? 1\n : -1;\n }\n return 0;\n}\n/**\n * Compare function that can be used with `sort` to sort an array of PathParser\n *\n * @param a - first PathParser\n * @param b - second PathParser\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n */\nfunction comparePathParserScore(a, b) {\n let i = 0;\n const aScore = a.score;\n const bScore = b.score;\n while (i < aScore.length && i < bScore.length) {\n const comp = compareScoreArray(aScore[i], bScore[i]);\n // do not return if both are equal\n if (comp)\n return comp;\n i++;\n }\n if (Math.abs(bScore.length - aScore.length) === 1) {\n if (isLastScoreNegative(aScore))\n return 1;\n if (isLastScoreNegative(bScore))\n return -1;\n }\n // if a and b share the same score entries but b has more, sort b first\n return bScore.length - aScore.length;\n // this is the ternary version\n // return aScore.length < bScore.length\n // ? 1\n // : aScore.length > bScore.length\n // ? -1\n // : 0\n}\n/**\n * This allows detecting splats at the end of a path: /home/:id(.*)*\n *\n * @param score - score to check\n * @returns true if the last entry is negative\n */\nfunction isLastScoreNegative(score) {\n const last = score[score.length - 1];\n return score.length > 0 && last[last.length - 1] < 0;\n}\n\nconst ROOT_TOKEN = {\n type: 0 /* TokenType.Static */,\n value: '',\n};\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\n// After some profiling, the cache seems to be unnecessary because tokenizePath\n// (the slowest part of adding a route) is very fast\n// const tokenCache = new Map()\nfunction tokenizePath(path) {\n if (!path)\n return [[]];\n if (path === '/')\n return [[ROOT_TOKEN]];\n if (!path.startsWith('/')) {\n throw new Error((process.env.NODE_ENV !== 'production')\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\n : `Invalid path \"${path}\"`);\n }\n // if (tokenCache.has(path)) return tokenCache.get(path)!\n function crash(message) {\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\n }\n let state = 0 /* TokenizerState.Static */;\n let previousState = state;\n const tokens = [];\n // the segment will always be valid because we get into the initial state\n // with the leading /\n let segment;\n function finalizeSegment() {\n if (segment)\n tokens.push(segment);\n segment = [];\n }\n // index on the path\n let i = 0;\n // char at index\n let char;\n // buffer of the value read\n let buffer = '';\n // custom regexp for a param\n let customRe = '';\n function consumeBuffer() {\n if (!buffer)\n return;\n if (state === 0 /* TokenizerState.Static */) {\n segment.push({\n type: 0 /* TokenType.Static */,\n value: buffer,\n });\n }\n else if (state === 1 /* TokenizerState.Param */ ||\n state === 2 /* TokenizerState.ParamRegExp */ ||\n state === 3 /* TokenizerState.ParamRegExpEnd */) {\n if (segment.length > 1 && (char === '*' || char === '+'))\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\n segment.push({\n type: 1 /* TokenType.Param */,\n value: buffer,\n regexp: customRe,\n repeatable: char === '*' || char === '+',\n optional: char === '*' || char === '?',\n });\n }\n else {\n crash('Invalid state to consume buffer');\n }\n buffer = '';\n }\n function addCharToBuffer() {\n buffer += char;\n }\n while (i < path.length) {\n char = path[i++];\n if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\n previousState = state;\n state = 4 /* TokenizerState.EscapeNext */;\n continue;\n }\n switch (state) {\n case 0 /* TokenizerState.Static */:\n if (char === '/') {\n if (buffer) {\n consumeBuffer();\n }\n finalizeSegment();\n }\n else if (char === ':') {\n consumeBuffer();\n state = 1 /* TokenizerState.Param */;\n }\n else {\n addCharToBuffer();\n }\n break;\n case 4 /* TokenizerState.EscapeNext */:\n addCharToBuffer();\n state = previousState;\n break;\n case 1 /* TokenizerState.Param */:\n if (char === '(') {\n state = 2 /* TokenizerState.ParamRegExp */;\n }\n else if (VALID_PARAM_RE.test(char)) {\n addCharToBuffer();\n }\n else {\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n }\n break;\n case 2 /* TokenizerState.ParamRegExp */:\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\n // it already works by escaping the closing )\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\n // is this really something people need since you can also write\n // /prefix_:p()_suffix\n if (char === ')') {\n // handle the escaped )\n if (customRe[customRe.length - 1] == '\\\\')\n customRe = customRe.slice(0, -1) + char;\n else\n state = 3 /* TokenizerState.ParamRegExpEnd */;\n }\n else {\n customRe += char;\n }\n break;\n case 3 /* TokenizerState.ParamRegExpEnd */:\n // same as finalizing a param\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n customRe = '';\n break;\n default:\n crash('Unknown state');\n break;\n }\n }\n if (state === 2 /* TokenizerState.ParamRegExp */)\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\n consumeBuffer();\n finalizeSegment();\n // tokenCache.set(path, tokens)\n return tokens;\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\n const parser = tokensToParser(tokenizePath(record.path), options);\n // warn against params with the same name\n if ((process.env.NODE_ENV !== 'production')) {\n const existingKeys = new Set();\n for (const key of parser.keys) {\n if (existingKeys.has(key.name))\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\n existingKeys.add(key.name);\n }\n }\n const matcher = assign(parser, {\n record,\n parent,\n // these needs to be populated by the parent\n children: [],\n alias: [],\n });\n if (parent) {\n // both are aliases or both are not aliases\n // we don't want to mix them because the order is used when\n // passing originalRecord in Matcher.addRoute\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\n parent.children.push(matcher);\n }\n return matcher;\n}\n\n/**\n * Creates a Router Matcher.\n *\n * @internal\n * @param routes - array of initial routes\n * @param globalOptions - global route options\n */\nfunction createRouterMatcher(routes, globalOptions) {\n // normalized ordered array of matchers\n const matchers = [];\n const matcherMap = new Map();\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\n function getRecordMatcher(name) {\n return matcherMap.get(name);\n }\n function addRoute(record, parent, originalRecord) {\n // used later on to remove by name\n const isRootAdd = !originalRecord;\n const mainNormalizedRecord = normalizeRouteRecord(record);\n if ((process.env.NODE_ENV !== 'production')) {\n checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\n }\n // we might be the child of an alias\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\n const options = mergeOptions(globalOptions, record);\n // generate an array of records to correctly handle aliases\n const normalizedRecords = [mainNormalizedRecord];\n if ('alias' in record) {\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\n for (const alias of aliases) {\n normalizedRecords.push(\n // we need to normalize again to ensure the `mods` property\n // being non enumerable\n normalizeRouteRecord(assign({}, mainNormalizedRecord, {\n // this allows us to hold a copy of the `components` option\n // so that async components cache is hold on the original record\n components: originalRecord\n ? originalRecord.record.components\n : mainNormalizedRecord.components,\n path: alias,\n // we might be the child of an alias\n aliasOf: originalRecord\n ? originalRecord.record\n : mainNormalizedRecord,\n // the aliases are always of the same kind as the original since they\n // are defined on the same record\n })));\n }\n }\n let matcher;\n let originalMatcher;\n for (const normalizedRecord of normalizedRecords) {\n const { path } = normalizedRecord;\n // Build up the path for nested routes if the child isn't an absolute\n // route. Only add the / delimiter if the child path isn't empty and if the\n // parent path doesn't have a trailing slash\n if (parent && path[0] !== '/') {\n const parentPath = parent.record.path;\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\n normalizedRecord.path =\n parent.record.path + (path && connectingSlash + path);\n }\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\n 'See more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.');\n }\n // create the object beforehand, so it can be passed to children\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\n checkMissingParamsInAbsolutePath(matcher, parent);\n // if we are an alias we must tell the original record that we exist,\n // so we can be removed\n if (originalRecord) {\n originalRecord.alias.push(matcher);\n if ((process.env.NODE_ENV !== 'production')) {\n checkSameParams(originalRecord, matcher);\n }\n }\n else {\n // otherwise, the first record is the original and others are aliases\n originalMatcher = originalMatcher || matcher;\n if (originalMatcher !== matcher)\n originalMatcher.alias.push(matcher);\n // remove the route if named and only for the top record (avoid in nested calls)\n // this works because the original record is the first one\n if (isRootAdd && record.name && !isAliasRecord(matcher)) {\n if ((process.env.NODE_ENV !== 'production')) {\n checkSameNameAsAncestor(record, parent);\n }\n removeRoute(record.name);\n }\n }\n // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\n // not be reached and pass through the catch all route\n if (isMatchable(matcher)) {\n insertMatcher(matcher);\n }\n if (mainNormalizedRecord.children) {\n const children = mainNormalizedRecord.children;\n for (let i = 0; i < children.length; i++) {\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\n }\n }\n // if there was no original record, then the first one was not an alias and all\n // other aliases (if any) need to reference this record when adding children\n originalRecord = originalRecord || matcher;\n // TODO: add normalized records for more flexibility\n // if (parent && isAliasRecord(originalRecord)) {\n // parent.children.push(originalRecord)\n // }\n }\n return originalMatcher\n ? () => {\n // since other matchers are aliases, they should be removed by the original matcher\n removeRoute(originalMatcher);\n }\n : noop;\n }\n function removeRoute(matcherRef) {\n if (isRouteName(matcherRef)) {\n const matcher = matcherMap.get(matcherRef);\n if (matcher) {\n matcherMap.delete(matcherRef);\n matchers.splice(matchers.indexOf(matcher), 1);\n matcher.children.forEach(removeRoute);\n matcher.alias.forEach(removeRoute);\n }\n }\n else {\n const index = matchers.indexOf(matcherRef);\n if (index > -1) {\n matchers.splice(index, 1);\n if (matcherRef.record.name)\n matcherMap.delete(matcherRef.record.name);\n matcherRef.children.forEach(removeRoute);\n matcherRef.alias.forEach(removeRoute);\n }\n }\n }\n function getRoutes() {\n return matchers;\n }\n function insertMatcher(matcher) {\n const index = findInsertionIndex(matcher, matchers);\n matchers.splice(index, 0, matcher);\n // only add the original record to the name map\n if (matcher.record.name && !isAliasRecord(matcher))\n matcherMap.set(matcher.record.name, matcher);\n }\n function resolve(location, currentLocation) {\n let matcher;\n let params = {};\n let path;\n let name;\n if ('name' in location && location.name) {\n matcher = matcherMap.get(location.name);\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n });\n // warn if the user is passing invalid params so they can debug it better when they get removed\n if ((process.env.NODE_ENV !== 'production')) {\n const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\n if (invalidParams.length) {\n warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\n }\n }\n name = matcher.record.name;\n params = assign(\n // paramsFromLocation is a new object\n paramsFromLocation(currentLocation.params, \n // only keep params that exist in the resolved location\n // only keep optional params coming from a parent record\n matcher.keys\n .filter(k => !k.optional)\n .concat(matcher.parent ? matcher.parent.keys.filter(k => k.optional) : [])\n .map(k => k.name)), \n // discard any existing params in the current location that do not exist here\n // #1497 this ensures better active/exact matching\n location.params &&\n paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\n // throws if cannot be stringified\n path = matcher.stringify(params);\n }\n else if (location.path != null) {\n // no need to resolve the path with the matcher as it was provided\n // this also allows the user to control the encoding\n path = location.path;\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`);\n }\n matcher = matchers.find(m => m.re.test(path));\n // matcher should have a value after the loop\n if (matcher) {\n // we know the matcher works because we tested the regexp\n params = matcher.parse(path);\n name = matcher.record.name;\n }\n // location is a relative path\n }\n else {\n // match by name or path of current route\n matcher = currentLocation.name\n ? matcherMap.get(currentLocation.name)\n : matchers.find(m => m.re.test(currentLocation.path));\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n currentLocation,\n });\n name = matcher.record.name;\n // since we are navigating to the same location, we don't need to pick the\n // params like when `name` is provided\n params = assign({}, currentLocation.params, location.params);\n path = matcher.stringify(params);\n }\n const matched = [];\n let parentMatcher = matcher;\n while (parentMatcher) {\n // reversed order so parents are at the beginning\n matched.unshift(parentMatcher.record);\n parentMatcher = parentMatcher.parent;\n }\n return {\n name,\n path,\n params,\n matched,\n meta: mergeMetaFields(matched),\n };\n }\n // add initial routes\n routes.forEach(route => addRoute(route));\n function clearRoutes() {\n matchers.length = 0;\n matcherMap.clear();\n }\n return {\n addRoute,\n resolve,\n removeRoute,\n clearRoutes,\n getRoutes,\n getRecordMatcher,\n };\n}\nfunction paramsFromLocation(params, keys) {\n const newParams = {};\n for (const key of keys) {\n if (key in params)\n newParams[key] = params[key];\n }\n return newParams;\n}\n/**\n * Normalizes a RouteRecordRaw. Creates a copy\n *\n * @param record\n * @returns the normalized version\n */\nfunction normalizeRouteRecord(record) {\n const normalized = {\n path: record.path,\n redirect: record.redirect,\n name: record.name,\n meta: record.meta || {},\n aliasOf: record.aliasOf,\n beforeEnter: record.beforeEnter,\n props: normalizeRecordProps(record),\n children: record.children || [],\n instances: {},\n leaveGuards: new Set(),\n updateGuards: new Set(),\n enterCallbacks: {},\n // must be declared afterwards\n // mods: {},\n components: 'components' in record\n ? record.components || null\n : record.component && { default: record.component },\n };\n // mods contain modules and shouldn't be copied,\n // logged or anything. It's just used for internal\n // advanced use cases like data loaders\n Object.defineProperty(normalized, 'mods', {\n value: {},\n });\n return normalized;\n}\n/**\n * Normalize the optional `props` in a record to always be an object similar to\n * components. Also accept a boolean for components.\n * @param record\n */\nfunction normalizeRecordProps(record) {\n const propsObject = {};\n // props does not exist on redirect records, but we can set false directly\n const props = record.props || false;\n if ('component' in record) {\n propsObject.default = props;\n }\n else {\n // NOTE: we could also allow a function to be applied to every component.\n // Would need user feedback for use cases\n for (const name in record.components)\n propsObject[name] = typeof props === 'object' ? props[name] : props;\n }\n return propsObject;\n}\n/**\n * Checks if a record or any of its parent is an alias\n * @param record\n */\nfunction isAliasRecord(record) {\n while (record) {\n if (record.record.aliasOf)\n return true;\n record = record.parent;\n }\n return false;\n}\n/**\n * Merge meta fields of an array of records\n *\n * @param matched - array of matched records\n */\nfunction mergeMetaFields(matched) {\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\n}\nfunction mergeOptions(defaults, partialOptions) {\n const options = {};\n for (const key in defaults) {\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\n }\n return options;\n}\nfunction isSameParam(a, b) {\n return (a.name === b.name &&\n a.optional === b.optional &&\n a.repeatable === b.repeatable);\n}\n/**\n * Check if a path and its alias have the same required params\n *\n * @param a - original record\n * @param b - alias record\n */\nfunction checkSameParams(a, b) {\n for (const key of a.keys) {\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n for (const key of b.keys) {\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n}\n/**\n * A route with a name and a child with an empty path without a name should warn when adding the route\n *\n * @param mainNormalizedRecord - RouteRecordNormalized\n * @param parent - RouteRecordMatcher\n */\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\n if (parent &&\n parent.record.name &&\n !mainNormalizedRecord.name &&\n !mainNormalizedRecord.path) {\n warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\n }\n}\nfunction checkSameNameAsAncestor(record, parent) {\n for (let ancestor = parent; ancestor; ancestor = ancestor.parent) {\n if (ancestor.record.name === record.name) {\n throw new Error(`A route named \"${String(record.name)}\" has been added as a ${parent === ancestor ? 'child' : 'descendant'} of a route with the same name. Route names must be unique and a nested route cannot use the same name as an ancestor.`);\n }\n }\n}\nfunction checkMissingParamsInAbsolutePath(record, parent) {\n for (const key of parent.keys) {\n if (!record.keys.find(isSameParam.bind(null, key)))\n return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\n }\n}\n/**\n * Performs a binary search to find the correct insertion index for a new matcher.\n *\n * Matchers are primarily sorted by their score. If scores are tied then we also consider parent/child relationships,\n * with descendants coming before ancestors. If there's still a tie, new routes are inserted after existing routes.\n *\n * @param matcher - new matcher to be inserted\n * @param matchers - existing matchers\n */\nfunction findInsertionIndex(matcher, matchers) {\n // First phase: binary search based on score\n let lower = 0;\n let upper = matchers.length;\n while (lower !== upper) {\n const mid = (lower + upper) >> 1;\n const sortOrder = comparePathParserScore(matcher, matchers[mid]);\n if (sortOrder < 0) {\n upper = mid;\n }\n else {\n lower = mid + 1;\n }\n }\n // Second phase: check for an ancestor with the same score\n const insertionAncestor = getInsertionAncestor(matcher);\n if (insertionAncestor) {\n upper = matchers.lastIndexOf(insertionAncestor, upper - 1);\n if ((process.env.NODE_ENV !== 'production') && upper < 0) {\n // This should never happen\n warn(`Finding ancestor route \"${insertionAncestor.record.path}\" failed for \"${matcher.record.path}\"`);\n }\n }\n return upper;\n}\nfunction getInsertionAncestor(matcher) {\n let ancestor = matcher;\n while ((ancestor = ancestor.parent)) {\n if (isMatchable(ancestor) &&\n comparePathParserScore(matcher, ancestor) === 0) {\n return ancestor;\n }\n }\n return;\n}\n/**\n * Checks if a matcher can be reachable. This means if it's possible to reach it as a route. For example, routes without\n * a component, or name, or redirect, are just used to group other routes.\n * @param matcher\n * @param matcher.record record of the matcher\n * @returns\n */\nfunction isMatchable({ record }) {\n return !!(record.name ||\n (record.components && Object.keys(record.components).length) ||\n record.redirect);\n}\n\n/**\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\n * version with the leading `?` and without Should work as URLSearchParams\n\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n const query = {};\n // avoid creating an object with an empty key and empty value\n // because of split('&')\n if (search === '' || search === '?')\n return query;\n const hasLeadingIM = search[0] === '?';\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n for (let i = 0; i < searchParams.length; ++i) {\n // pre decode the + into space\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n // allow the = character\n const eqPos = searchParam.indexOf('=');\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n if (key in query) {\n // an extra variable for ts types\n let currentValue = query[key];\n if (!isArray(currentValue)) {\n currentValue = query[key] = [currentValue];\n }\n currentValue.push(value);\n }\n else {\n query[key] = value;\n }\n }\n return query;\n}\n/**\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\n * doesn't prepend a `?`\n *\n * @internal\n *\n * @param query - query object to stringify\n * @returns string version of the query without the leading `?`\n */\nfunction stringifyQuery(query) {\n let search = '';\n for (let key in query) {\n const value = query[key];\n key = encodeQueryKey(key);\n if (value == null) {\n // only null adds the value\n if (value !== undefined) {\n search += (search.length ? '&' : '') + key;\n }\n continue;\n }\n // keep null values\n const values = isArray(value)\n ? value.map(v => v && encodeQueryValue(v))\n : [value && encodeQueryValue(value)];\n values.forEach(value => {\n // skip undefined values in arrays as if they were not present\n // smaller code than using filter\n if (value !== undefined) {\n // only append & with non-empty search\n search += (search.length ? '&' : '') + key;\n if (value != null)\n search += '=' + value;\n }\n });\n }\n return search;\n}\n/**\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\n * numbers into strings, removing keys with an undefined value and replacing\n * undefined with null in arrays\n *\n * @param query - query object to normalize\n * @returns a normalized query object\n */\nfunction normalizeQuery(query) {\n const normalizedQuery = {};\n for (const key in query) {\n const value = query[key];\n if (value !== undefined) {\n normalizedQuery[key] = isArray(value)\n ? value.map(v => (v == null ? null : '' + v))\n : value == null\n ? value\n : '' + value;\n }\n }\n return normalizedQuery;\n}\n\n/**\n * RouteRecord being rendered by the closest ancestor Router View. Used for\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\n * Location Matched\n *\n * @internal\n */\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\n/**\n * Allows overriding the router view depth to control which component in\n * `matched` is rendered. rvd stands for Router View Depth\n *\n * @internal\n */\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\n/**\n * Allows overriding the router instance returned by `useRouter` in tests. r\n * stands for router\n *\n * @internal\n */\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\n/**\n * Allows overriding the current route returned by `useRoute` in tests. rl\n * stands for route location\n *\n * @internal\n */\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\n/**\n * Allows overriding the current route used by router-view. Internally this is\n * used when the `route` prop is passed.\n *\n * @internal\n */\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\n */\nfunction useCallbacks() {\n let handlers = [];\n function add(handler) {\n handlers.push(handler);\n return () => {\n const i = handlers.indexOf(handler);\n if (i > -1)\n handlers.splice(i, 1);\n };\n }\n function reset() {\n handlers = [];\n }\n return {\n add,\n list: () => handlers.slice(),\n reset,\n };\n}\n\nfunction registerGuard(record, name, guard) {\n const removeFromList = () => {\n record[name].delete(guard);\n };\n onUnmounted(removeFromList);\n onDeactivated(removeFromList);\n onActivated(() => {\n record[name].add(guard);\n });\n record[name].add(guard);\n}\n/**\n * Add a navigation guard that triggers whenever the component for the current\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\n * used in any component. The guard is removed when the component is unmounted.\n *\n * @param leaveGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteLeave(leaveGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\n}\n/**\n * Add a navigation guard that triggers whenever the current location is about\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\n * component. The guard is removed when the component is unmounted.\n *\n * @param updateGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteUpdate(updateGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'updateGuards', updateGuard);\n}\nfunction guardToPromiseFn(guard, to, from, record, name, runWithContext = fn => fn()) {\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\n const enterCallbackArray = record &&\n // name is defined if record is because of the function overload\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\n return () => new Promise((resolve, reject) => {\n const next = (valid) => {\n if (valid === false) {\n reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\n from,\n to,\n }));\n }\n else if (valid instanceof Error) {\n reject(valid);\n }\n else if (isRouteLocation(valid)) {\n reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\n from: to,\n to: valid,\n }));\n }\n else {\n if (enterCallbackArray &&\n // since enterCallbackArray is truthy, both record and name also are\n record.enterCallbacks[name] === enterCallbackArray &&\n typeof valid === 'function') {\n enterCallbackArray.push(valid);\n }\n resolve();\n }\n };\n // wrapping with Promise.resolve allows it to work with both async and sync guards\n const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next));\n let guardCall = Promise.resolve(guardReturn);\n if (guard.length < 3)\n guardCall = guardCall.then(next);\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\n guardCall = guardCall.then(resolvedValue => {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n return Promise.reject(new Error('Invalid navigation guard'));\n }\n return resolvedValue;\n });\n }\n else if (guardReturn !== undefined) {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n reject(new Error('Invalid navigation guard'));\n return;\n }\n }\n }\n guardCall.catch(err => reject(err));\n });\n}\nfunction canOnlyBeCalledOnce(next, to, from) {\n let called = 0;\n return function () {\n if (called++ === 1)\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\n // @ts-expect-error: we put it in the original one because it's easier to check\n next._called = true;\n if (called === 1)\n next.apply(null, arguments);\n };\n}\nfunction extractComponentsGuards(matched, guardType, to, from, runWithContext = fn => fn()) {\n const guards = [];\n for (const record of matched) {\n if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\n warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\n ` or \"children\" property.`);\n }\n for (const name in record.components) {\n let rawComponent = record.components[name];\n if ((process.env.NODE_ENV !== 'production')) {\n if (!rawComponent ||\n (typeof rawComponent !== 'object' &&\n typeof rawComponent !== 'function')) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\n ` a valid component. Received \"${String(rawComponent)}\".`);\n // throw to ensure we stop here but warn to ensure the message isn't\n // missed by the user\n throw new Error('Invalid route component');\n }\n else if ('then' in rawComponent) {\n // warn if user wrote import('/component.vue') instead of () =>\n // import('./component.vue')\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\n `Promise instead of a function that returns a Promise. Did you ` +\n `write \"import('./MyPage.vue')\" instead of ` +\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\n `production if not fixed.`);\n const promise = rawComponent;\n rawComponent = () => promise;\n }\n else if (rawComponent.__asyncLoader &&\n // warn only once per component\n !rawComponent.__warnedDefineAsync) {\n rawComponent.__warnedDefineAsync = true;\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\n `using \"defineAsyncComponent()\". ` +\n `Write \"() => import('./MyPage.vue')\" instead of ` +\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\n }\n }\n // skip update and leave guards if the route component is not mounted\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\n continue;\n if (isRouteComponent(rawComponent)) {\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = rawComponent.__vccOpts || rawComponent;\n const guard = options[guardType];\n guard &&\n guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));\n }\n else {\n // start requesting the chunk already\n let componentPromise = rawComponent();\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\n componentPromise = Promise.resolve(componentPromise);\n }\n guards.push(() => componentPromise.then(resolved => {\n if (!resolved)\n throw new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`);\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = resolvedComponent.__vccOpts || resolvedComponent;\n const guard = options[guardType];\n return (guard &&\n guardToPromiseFn(guard, to, from, record, name, runWithContext)());\n }));\n }\n }\n }\n return guards;\n}\n/**\n * Ensures a route is loaded, so it can be passed as o prop to ``.\n *\n * @param route - resolved route to load\n */\nfunction loadRouteLocation(route) {\n return route.matched.every(record => record.redirect)\n ? Promise.reject(new Error('Cannot load a route that redirects.'))\n : Promise.all(route.matched.map(record => record.components &&\n Promise.all(Object.keys(record.components).reduce((promises, name) => {\n const rawComponent = record.components[name];\n if (typeof rawComponent === 'function' &&\n !('displayName' in rawComponent)) {\n promises.push(rawComponent().then(resolved => {\n if (!resolved)\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n return;\n }));\n }\n return promises;\n }, [])))).then(() => route);\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\n// `isExactActive` behavior should go through an RFC\n/**\n * Returns the internal behavior of a {@link RouterLink} without the rendering part.\n *\n * @param props - a `to` location and an optional `replace` flag\n */\nfunction useLink(props) {\n const router = inject(routerKey);\n const currentRoute = inject(routeLocationKey);\n let hasPrevious = false;\n let previousTo = null;\n const route = computed(() => {\n const to = unref(props.to);\n if ((process.env.NODE_ENV !== 'production') && (!hasPrevious || to !== previousTo)) {\n if (!isRouteLocation(to)) {\n if (hasPrevious) {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- previous to:`, previousTo, `\\n- props:`, props);\n }\n else {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- props:`, props);\n }\n }\n previousTo = to;\n hasPrevious = true;\n }\n return router.resolve(to);\n });\n const activeRecordIndex = computed(() => {\n const { matched } = route.value;\n const { length } = matched;\n const routeMatched = matched[length - 1];\n const currentMatched = currentRoute.matched;\n if (!routeMatched || !currentMatched.length)\n return -1;\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\n if (index > -1)\n return index;\n // possible parent record\n const parentRecordPath = getOriginalPath(matched[length - 2]);\n return (\n // we are dealing with nested routes\n length > 1 &&\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n getOriginalPath(routeMatched) === parentRecordPath &&\n // avoid comparing the child with its parent\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\n : index);\n });\n const isActive = computed(() => activeRecordIndex.value > -1 &&\n includesParams(currentRoute.params, route.value.params));\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\n isSameRouteLocationParams(currentRoute.params, route.value.params));\n function navigate(e = {}) {\n if (guardEvent(e)) {\n const p = router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\n // avoid uncaught errors are they are logged anyway\n ).catch(noop);\n if (props.viewTransition &&\n typeof document !== 'undefined' &&\n 'startViewTransition' in document) {\n document.startViewTransition(() => p);\n }\n return p;\n }\n return Promise.resolve();\n }\n // devtools only\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n const instance = getCurrentInstance();\n if (instance) {\n const linkContextDevtools = {\n route: route.value,\n isActive: isActive.value,\n isExactActive: isExactActive.value,\n error: null,\n };\n // @ts-expect-error: this is internal\n instance.__vrl_devtools = instance.__vrl_devtools || [];\n // @ts-expect-error: this is internal\n instance.__vrl_devtools.push(linkContextDevtools);\n watchEffect(() => {\n linkContextDevtools.route = route.value;\n linkContextDevtools.isActive = isActive.value;\n linkContextDevtools.isExactActive = isExactActive.value;\n linkContextDevtools.error = isRouteLocation(unref(props.to))\n ? null\n : 'Invalid \"to\" value';\n }, { flush: 'post' });\n }\n }\n /**\n * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\n */\n return {\n route,\n href: computed(() => route.value.href),\n isActive,\n isExactActive,\n navigate,\n };\n}\nfunction preferSingleVNode(vnodes) {\n return vnodes.length === 1 ? vnodes[0] : vnodes;\n}\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterLink',\n compatConfig: { MODE: 3 },\n props: {\n to: {\n type: [String, Object],\n required: true,\n },\n replace: Boolean,\n activeClass: String,\n // inactiveClass: String,\n exactActiveClass: String,\n custom: Boolean,\n ariaCurrentValue: {\n type: String,\n default: 'page',\n },\n },\n useLink,\n setup(props, { slots }) {\n const link = reactive(useLink(props));\n const { options } = inject(routerKey);\n const elClass = computed(() => ({\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\n // [getLinkClass(\n // props.inactiveClass,\n // options.linkInactiveClass,\n // 'router-link-inactive'\n // )]: !link.isExactActive,\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\n }));\n return () => {\n const children = slots.default && preferSingleVNode(slots.default(link));\n return props.custom\n ? children\n : h('a', {\n 'aria-current': link.isExactActive\n ? props.ariaCurrentValue\n : null,\n href: link.href,\n // this would override user added attrs but Vue will still add\n // the listener, so we end up triggering both\n onClick: link.navigate,\n class: elClass.value,\n }, children);\n };\n },\n});\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to render a link that triggers a navigation on click.\n */\nconst RouterLink = RouterLinkImpl;\nfunction guardEvent(e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n return;\n // don't redirect when preventDefault called\n if (e.defaultPrevented)\n return;\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0)\n return;\n // don't redirect if `target=\"_blank\"`\n // @ts-expect-error getAttribute does exist\n if (e.currentTarget && e.currentTarget.getAttribute) {\n // @ts-expect-error getAttribute exists\n const target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target))\n return;\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault)\n e.preventDefault();\n return true;\n}\nfunction includesParams(outer, inner) {\n for (const key in inner) {\n const innerValue = inner[key];\n const outerValue = outer[key];\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue)\n return false;\n }\n else {\n if (!isArray(outerValue) ||\n outerValue.length !== innerValue.length ||\n innerValue.some((value, i) => value !== outerValue[i]))\n return false;\n }\n }\n return true;\n}\n/**\n * Get the original path value of a record by following its aliasOf\n * @param record\n */\nfunction getOriginalPath(record) {\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\n}\n/**\n * Utility class to get the active class based on defaults.\n * @param propClass\n * @param globalClass\n * @param defaultClass\n */\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\n ? propClass\n : globalClass != null\n ? globalClass\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterView',\n // #674 we manually inherit them\n inheritAttrs: false,\n props: {\n name: {\n type: String,\n default: 'default',\n },\n route: Object,\n },\n // Better compat for @vue/compat users\n // https://github.com/vuejs/router/issues/1315\n compatConfig: { MODE: 3 },\n setup(props, { attrs, slots }) {\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\n const injectedRoute = inject(routerViewLocationKey);\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\n const injectedDepth = inject(viewDepthKey, 0);\n // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\n // that are used to reuse the `path` property\n const depth = computed(() => {\n let initialDepth = unref(injectedDepth);\n const { matched } = routeToDisplay.value;\n let matchedRoute;\n while ((matchedRoute = matched[initialDepth]) &&\n !matchedRoute.components) {\n initialDepth++;\n }\n return initialDepth;\n });\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\n provide(viewDepthKey, computed(() => depth.value + 1));\n provide(matchedRouteKey, matchedRouteRef);\n provide(routerViewLocationKey, routeToDisplay);\n const viewRef = ref();\n // watch at the same time the component instance, the route record we are\n // rendering, and the name\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\n // copy reused instances\n if (to) {\n // this will update the instance for new instances as well as reused\n // instances when navigating to a new route\n to.instances[name] = instance;\n // the component instance is reused for a different route or name, so\n // we copy any saved update or leave guards. With async setup, the\n // mounting component will mount before the matchedRoute changes,\n // making instance === oldInstance, so we check if guards have been\n // added before. This works because we remove guards when\n // unmounting/deactivating components\n if (from && from !== to && instance && instance === oldInstance) {\n if (!to.leaveGuards.size) {\n to.leaveGuards = from.leaveGuards;\n }\n if (!to.updateGuards.size) {\n to.updateGuards = from.updateGuards;\n }\n }\n }\n // trigger beforeRouteEnter next callbacks\n if (instance &&\n to &&\n // if there is no instance but to and from are the same this might be\n // the first visit\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\n }\n }, { flush: 'post' });\n return () => {\n const route = routeToDisplay.value;\n // we need the value at the time we render because when we unmount, we\n // navigated to a different location so the value is different\n const currentName = props.name;\n const matchedRoute = matchedRouteRef.value;\n const ViewComponent = matchedRoute && matchedRoute.components[currentName];\n if (!ViewComponent) {\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\n }\n // props from route configuration\n const routePropsOption = matchedRoute.props[currentName];\n const routeProps = routePropsOption\n ? routePropsOption === true\n ? route.params\n : typeof routePropsOption === 'function'\n ? routePropsOption(route)\n : routePropsOption\n : null;\n const onVnodeUnmounted = vnode => {\n // remove the instance reference to prevent leak\n if (vnode.component.isUnmounted) {\n matchedRoute.instances[currentName] = null;\n }\n };\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\n onVnodeUnmounted,\n ref: viewRef,\n }));\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n isBrowser &&\n component.ref) {\n // TODO: can display if it's an alias, its props\n const info = {\n depth: depth.value,\n name: matchedRoute.name,\n path: matchedRoute.path,\n meta: matchedRoute.meta,\n };\n const internalInstances = isArray(component.ref)\n ? component.ref.map(r => r.i)\n : [component.ref.i];\n internalInstances.forEach(instance => {\n // @ts-expect-error\n instance.__vrv_devtools = info;\n });\n }\n return (\n // pass the vnode to the slot as a prop.\n // h and both accept vnodes\n normalizeSlot(slots.default, { Component: component, route }) ||\n component);\n };\n },\n});\nfunction normalizeSlot(slot, data) {\n if (!slot)\n return null;\n const slotContent = slot(data);\n return slotContent.length === 1 ? slotContent[0] : slotContent;\n}\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to display the current route the user is at.\n */\nconst RouterView = RouterViewImpl;\n// warn against deprecated usage with & \n// due to functional component being no longer eager in Vue 3\nfunction warnDeprecatedUsage() {\n const instance = getCurrentInstance();\n const parentName = instance.parent && instance.parent.type.name;\n const parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type;\n if (parentName &&\n (parentName === 'KeepAlive' || parentName.includes('Transition')) &&\n typeof parentSubTreeType === 'object' &&\n parentSubTreeType.name === 'RouterView') {\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\n warn(` can no longer be used directly inside or .\\n` +\n `Use slot props instead:\\n\\n` +\n `\\n` +\n ` <${comp}>\\n` +\n ` \\n` +\n ` ${comp}>\\n` +\n ``);\n }\n}\n\n/**\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\n *\n * @param routeLocation - routeLocation to format\n * @param tooltip - optional tooltip\n * @returns a copy of the routeLocation\n */\nfunction formatRouteLocation(routeLocation, tooltip) {\n const copy = assign({}, routeLocation, {\n // remove variables that can contain vue instances\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\n });\n return {\n _custom: {\n type: null,\n readOnly: true,\n display: routeLocation.fullPath,\n tooltip,\n value: copy,\n },\n };\n}\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\n// to support multiple router instances\nlet routerId = 0;\nfunction addDevtools(app, router, matcher) {\n // Take over router.beforeEach and afterEach\n // make sure we are not registering the devtool twice\n if (router.__hasDevtools)\n return;\n router.__hasDevtools = true;\n // increment to support multiple router instances\n const id = routerId++;\n setupDevtoolsPlugin({\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\n label: 'Vue Router',\n packageName: 'vue-router',\n homepage: 'https://router.vuejs.org',\n logo: 'https://router.vuejs.org/logo.png',\n componentStateTypes: ['Routing'],\n app,\n }, api => {\n if (typeof api.now !== 'function') {\n console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n // display state added by the router\n api.on.inspectComponent((payload, ctx) => {\n if (payload.instanceData) {\n payload.instanceData.state.push({\n type: 'Routing',\n key: '$route',\n editable: false,\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\n });\n }\n });\n // mark router-link as active and display tags on router views\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\n if (componentInstance.__vrv_devtools) {\n const info = componentInstance.__vrv_devtools;\n node.tags.push({\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\n textColor: 0,\n tooltip: 'This component is rendered by <router-view>',\n backgroundColor: PINK_500,\n });\n }\n // if multiple useLink are used\n if (isArray(componentInstance.__vrl_devtools)) {\n componentInstance.__devtoolsApi = api;\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\n let label = devtoolsData.route.path;\n let backgroundColor = ORANGE_400;\n let tooltip = '';\n let textColor = 0;\n if (devtoolsData.error) {\n label = devtoolsData.error;\n backgroundColor = RED_100;\n textColor = RED_700;\n }\n else if (devtoolsData.isExactActive) {\n backgroundColor = LIME_500;\n tooltip = 'This is exactly active';\n }\n else if (devtoolsData.isActive) {\n backgroundColor = BLUE_600;\n tooltip = 'This link is active';\n }\n node.tags.push({\n label,\n textColor,\n tooltip,\n backgroundColor,\n });\n });\n }\n });\n watch(router.currentRoute, () => {\n // refresh active state\n refreshRoutesView();\n api.notifyComponentUpdate();\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n const navigationsLayerId = 'router:navigations:' + id;\n api.addTimelineLayer({\n id: navigationsLayerId,\n label: `Router${id ? ' ' + id : ''} Navigations`,\n color: 0x40a8c4,\n });\n // const errorsLayerId = 'router:errors'\n // api.addTimelineLayer({\n // id: errorsLayerId,\n // label: 'Router Errors',\n // color: 0xea5455,\n // })\n router.onError((error, to) => {\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'Error during Navigation',\n subtitle: to.fullPath,\n logType: 'error',\n time: api.now(),\n data: { error },\n groupId: to.meta.__navigationId,\n },\n });\n });\n // attached to `meta` and used to group events\n let navigationId = 0;\n router.beforeEach((to, from) => {\n const data = {\n guard: formatDisplay('beforeEach'),\n from: formatRouteLocation(from, 'Current Location during this navigation'),\n to: formatRouteLocation(to, 'Target location'),\n };\n // Used to group navigations together, hide from devtools\n Object.defineProperty(to.meta, '__navigationId', {\n value: navigationId++,\n });\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n time: api.now(),\n title: 'Start of navigation',\n subtitle: to.fullPath,\n data,\n groupId: to.meta.__navigationId,\n },\n });\n });\n router.afterEach((to, from, failure) => {\n const data = {\n guard: formatDisplay('afterEach'),\n };\n if (failure) {\n data.failure = {\n _custom: {\n type: Error,\n readOnly: true,\n display: failure ? failure.message : '',\n tooltip: 'Navigation Failure',\n value: failure,\n },\n };\n data.status = formatDisplay('❌');\n }\n else {\n data.status = formatDisplay('✅');\n }\n // we set here to have the right order\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\n data.to = formatRouteLocation(to, 'Target location');\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'End of navigation',\n subtitle: to.fullPath,\n time: api.now(),\n data,\n logType: failure ? 'warning' : 'default',\n groupId: to.meta.__navigationId,\n },\n });\n });\n /**\n * Inspector of Existing routes\n */\n const routerInspectorId = 'router-inspector:' + id;\n api.addInspector({\n id: routerInspectorId,\n label: 'Routes' + (id ? ' ' + id : ''),\n icon: 'book',\n treeFilterPlaceholder: 'Search routes',\n });\n function refreshRoutesView() {\n // the routes view isn't active\n if (!activeRoutesPayload)\n return;\n const payload = activeRoutesPayload;\n // children routes will appear as nested\n let routes = matcher.getRoutes().filter(route => !route.parent ||\n // these routes have a parent with no component which will not appear in the view\n // therefore we still need to include them\n !route.parent.record.components);\n // reset match state to false\n routes.forEach(resetMatchStateOnRouteRecord);\n // apply a match state if there is a payload\n if (payload.filter) {\n routes = routes.filter(route => \n // save matches state based on the payload\n isRouteMatching(route, payload.filter.toLowerCase()));\n }\n // mark active routes\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\n }\n let activeRoutesPayload;\n api.on.getInspectorTree(payload => {\n activeRoutesPayload = payload;\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n refreshRoutesView();\n }\n });\n /**\n * Display information about the currently selected route record\n */\n api.on.getInspectorState(payload => {\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n const routes = matcher.getRoutes();\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\n if (route) {\n payload.state = {\n options: formatRouteRecordMatcherForStateInspector(route),\n };\n }\n }\n });\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n}\nfunction modifierForKey(key) {\n if (key.optional) {\n return key.repeatable ? '*' : '?';\n }\n else {\n return key.repeatable ? '+' : '';\n }\n}\nfunction formatRouteRecordMatcherForStateInspector(route) {\n const { record } = route;\n const fields = [\n { editable: false, key: 'path', value: record.path },\n ];\n if (record.name != null) {\n fields.push({\n editable: false,\n key: 'name',\n value: record.name,\n });\n }\n fields.push({ editable: false, key: 'regexp', value: route.re });\n if (route.keys.length) {\n fields.push({\n editable: false,\n key: 'keys',\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.keys\n .map(key => `${key.name}${modifierForKey(key)}`)\n .join(' '),\n tooltip: 'Param keys',\n value: route.keys,\n },\n },\n });\n }\n if (record.redirect != null) {\n fields.push({\n editable: false,\n key: 'redirect',\n value: record.redirect,\n });\n }\n if (route.alias.length) {\n fields.push({\n editable: false,\n key: 'aliases',\n value: route.alias.map(alias => alias.record.path),\n });\n }\n if (Object.keys(route.record.meta).length) {\n fields.push({\n editable: false,\n key: 'meta',\n value: route.record.meta,\n });\n }\n fields.push({\n key: 'score',\n editable: false,\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.score.map(score => score.join(', ')).join(' | '),\n tooltip: 'Score used to sort routes',\n value: route.score,\n },\n },\n });\n return fields;\n}\n/**\n * Extracted from tailwind palette\n */\nconst PINK_500 = 0xec4899;\nconst BLUE_600 = 0x2563eb;\nconst LIME_500 = 0x84cc16;\nconst CYAN_400 = 0x22d3ee;\nconst ORANGE_400 = 0xfb923c;\n// const GRAY_100 = 0xf4f4f5\nconst DARK = 0x666666;\nconst RED_100 = 0xfee2e2;\nconst RED_700 = 0xb91c1c;\nfunction formatRouteRecordForInspector(route) {\n const tags = [];\n const { record } = route;\n if (record.name != null) {\n tags.push({\n label: String(record.name),\n textColor: 0,\n backgroundColor: CYAN_400,\n });\n }\n if (record.aliasOf) {\n tags.push({\n label: 'alias',\n textColor: 0,\n backgroundColor: ORANGE_400,\n });\n }\n if (route.__vd_match) {\n tags.push({\n label: 'matches',\n textColor: 0,\n backgroundColor: PINK_500,\n });\n }\n if (route.__vd_exactActive) {\n tags.push({\n label: 'exact',\n textColor: 0,\n backgroundColor: LIME_500,\n });\n }\n if (route.__vd_active) {\n tags.push({\n label: 'active',\n textColor: 0,\n backgroundColor: BLUE_600,\n });\n }\n if (record.redirect) {\n tags.push({\n label: typeof record.redirect === 'string'\n ? `redirect: ${record.redirect}`\n : 'redirects',\n textColor: 0xffffff,\n backgroundColor: DARK,\n });\n }\n // add an id to be able to select it. Using the `path` is not possible because\n // empty path children would collide with their parents\n let id = record.__vd_id;\n if (id == null) {\n id = String(routeRecordId++);\n record.__vd_id = id;\n }\n return {\n id,\n label: record.path,\n tags,\n children: route.children.map(formatRouteRecordForInspector),\n };\n}\n// incremental id for route records and inspector state\nlet routeRecordId = 0;\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\nfunction markRouteRecordActive(route, currentRoute) {\n // no route will be active if matched is empty\n // reset the matching state\n const isExactActive = currentRoute.matched.length &&\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\n route.__vd_exactActive = route.__vd_active = isExactActive;\n if (!isExactActive) {\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\n }\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\n}\nfunction resetMatchStateOnRouteRecord(route) {\n route.__vd_match = false;\n route.children.forEach(resetMatchStateOnRouteRecord);\n}\nfunction isRouteMatching(route, filter) {\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\n route.__vd_match = false;\n if (!found || found.length < 3) {\n return false;\n }\n // use a regexp without $ at the end to match nested routes better\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\n if (nonEndingRE.test(filter)) {\n // mark children as matches\n route.children.forEach(child => isRouteMatching(child, filter));\n // exception case: `/`\n if (route.record.path !== '/' || filter === '/') {\n route.__vd_match = route.re.test(filter);\n return true;\n }\n // hide the / route\n return false;\n }\n const path = route.record.path.toLowerCase();\n const decodedPath = decode(path);\n // also allow partial matching on the path\n if (!filter.startsWith('/') &&\n (decodedPath.includes(filter) || path.includes(filter)))\n return true;\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\n return true;\n if (route.record.name && String(route.record.name).includes(filter))\n return true;\n return route.children.some(child => isRouteMatching(child, filter));\n}\nfunction omit(obj, keys) {\n const ret = {};\n for (const key in obj) {\n if (!keys.includes(key)) {\n // @ts-expect-error\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n\n/**\n * Creates a Router instance that can be used by a Vue app.\n *\n * @param options - {@link RouterOptions}\n */\nfunction createRouter(options) {\n const matcher = createRouterMatcher(options.routes, options);\n const parseQuery$1 = options.parseQuery || parseQuery;\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\n const routerHistory = options.history;\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\n ' https://router.vuejs.org/api/interfaces/RouterOptions.html#history');\n const beforeGuards = useCallbacks();\n const beforeResolveGuards = useCallbacks();\n const afterGuards = useCallbacks();\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\n let pendingLocation = START_LOCATION_NORMALIZED;\n // leave the scrollRestoration if no scrollBehavior is provided\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\n const encodeParams = applyToParams.bind(null, encodeParam);\n const decodeParams = \n // @ts-expect-error: intentionally avoid the type check\n applyToParams.bind(null, decode);\n function addRoute(parentOrRoute, route) {\n let parent;\n let record;\n if (isRouteName(parentOrRoute)) {\n parent = matcher.getRecordMatcher(parentOrRoute);\n if ((process.env.NODE_ENV !== 'production') && !parent) {\n warn(`Parent route \"${String(parentOrRoute)}\" not found when adding child route`, route);\n }\n record = route;\n }\n else {\n record = parentOrRoute;\n }\n return matcher.addRoute(record, parent);\n }\n function removeRoute(name) {\n const recordMatcher = matcher.getRecordMatcher(name);\n if (recordMatcher) {\n matcher.removeRoute(recordMatcher);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\n }\n }\n function getRoutes() {\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\n }\n function hasRoute(name) {\n return !!matcher.getRecordMatcher(name);\n }\n function resolve(rawLocation, currentLocation) {\n // const resolve: Router['resolve'] = (rawLocation: RouteLocationRaw, currentLocation) => {\n // const objectLocation = routerLocationAsObject(rawLocation)\n // we create a copy to modify it later\n currentLocation = assign({}, currentLocation || currentRoute.value);\n if (typeof rawLocation === 'string') {\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\n const href = routerHistory.createHref(locationNormalized.fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//'))\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation}\"`);\n }\n }\n // locationNormalized is always a new object\n return assign(locationNormalized, matchedRoute, {\n params: decodeParams(matchedRoute.params),\n hash: decode(locationNormalized.hash),\n redirectedFrom: undefined,\n href,\n });\n }\n if ((process.env.NODE_ENV !== 'production') && !isRouteLocation(rawLocation)) {\n warn(`router.resolve() was passed an invalid location. This will fail in production.\\n- Location:`, rawLocation);\n return resolve({});\n }\n let matcherLocation;\n // path could be relative in object as well\n if (rawLocation.path != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n 'params' in rawLocation &&\n !('name' in rawLocation) &&\n // @ts-expect-error: the type is never\n Object.keys(rawLocation.params).length) {\n warn(`Path \"${rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\n }\n matcherLocation = assign({}, rawLocation, {\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\n });\n }\n else {\n // remove any nullish param\n const targetParams = assign({}, rawLocation.params);\n for (const key in targetParams) {\n if (targetParams[key] == null) {\n delete targetParams[key];\n }\n }\n // pass encoded values to the matcher, so it can produce encoded path and fullPath\n matcherLocation = assign({}, rawLocation, {\n params: encodeParams(targetParams),\n });\n // current location params are decoded, we need to encode them in case the\n // matcher merges the params\n currentLocation.params = encodeParams(currentLocation.params);\n }\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\n const hash = rawLocation.hash || '';\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\n }\n // the matcher might have merged current location params, so\n // we need to run the decoding again\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\n hash: encodeHash(hash),\n path: matchedRoute.path,\n }));\n const href = routerHistory.createHref(fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//')) {\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n }\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation.path != null ? rawLocation.path : rawLocation}\"`);\n }\n }\n return assign({\n fullPath,\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\n // hash\n hash,\n query: \n // if the user is using a custom query lib like qs, we might have\n // nested objects, so we keep the query as is, meaning it can contain\n // numbers at `$route.query`, but at the point, the user will have to\n // use their own type anyway.\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\n stringifyQuery$1 === stringifyQuery\n ? normalizeQuery(rawLocation.query)\n : (rawLocation.query || {}),\n }, matchedRoute, {\n redirectedFrom: undefined,\n href,\n });\n }\n function locationAsObject(to) {\n return typeof to === 'string'\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\n : assign({}, to);\n }\n function checkCanceledNavigation(to, from) {\n if (pendingLocation !== to) {\n return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\n from,\n to,\n });\n }\n }\n function push(to) {\n return pushWithRedirect(to);\n }\n function replace(to) {\n return push(assign(locationAsObject(to), { replace: true }));\n }\n function handleRedirectRecord(to) {\n const lastMatched = to.matched[to.matched.length - 1];\n if (lastMatched && lastMatched.redirect) {\n const { redirect } = lastMatched;\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\n if (typeof newTargetLocation === 'string') {\n newTargetLocation =\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\n ? (newTargetLocation = locationAsObject(newTargetLocation))\n : // force empty params\n { path: newTargetLocation };\n // @ts-expect-error: force empty params when a string is passed to let\n // the router parse them again\n newTargetLocation.params = {};\n }\n if ((process.env.NODE_ENV !== 'production') &&\n newTargetLocation.path == null &&\n !('name' in newTargetLocation)) {\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\n throw new Error('Invalid redirect');\n }\n return assign({\n query: to.query,\n hash: to.hash,\n // avoid transferring params if the redirect has a path\n params: newTargetLocation.path != null ? {} : to.params,\n }, newTargetLocation);\n }\n }\n function pushWithRedirect(to, redirectedFrom) {\n const targetLocation = (pendingLocation = resolve(to));\n const from = currentRoute.value;\n const data = to.state;\n const force = to.force;\n // to could be a string where `replace` is a function\n const replace = to.replace === true;\n const shouldRedirect = handleRedirectRecord(targetLocation);\n if (shouldRedirect)\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\n state: typeof shouldRedirect === 'object'\n ? assign({}, data, shouldRedirect.state)\n : data,\n force,\n replace,\n }), \n // keep original redirectedFrom if it exists\n redirectedFrom || targetLocation);\n // if it was a redirect we already called `pushWithRedirect` above\n const toLocation = targetLocation;\n toLocation.redirectedFrom = redirectedFrom;\n let failure;\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\n failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\n // trigger scroll to allow scrolling to the same anchor\n handleScroll(from, from, \n // this is a push, the only way for it to be triggered from a\n // history.listen is with a redirect, which makes it become a push\n true, \n // This cannot be the first navigation because the initial location\n // cannot be manually navigated to\n false);\n }\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\n .catch((error) => isNavigationFailure(error)\n ? // navigation redirects still mark the router as ready\n isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\n ? error\n : markAsReady(error) // also returns the error\n : // reject any unknown error\n triggerError(error, toLocation, from))\n .then((failure) => {\n if (failure) {\n if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n if ((process.env.NODE_ENV !== 'production') &&\n // we are redirecting to the same location we were already at\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\n // and we have done it a couple of times\n redirectedFrom &&\n // @ts-expect-error: added only in dev\n (redirectedFrom._count = redirectedFrom._count\n ? // @ts-expect-error\n redirectedFrom._count + 1\n : 1) > 30) {\n warn(`Detected a possibly infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow.\\n Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`);\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\n }\n return pushWithRedirect(\n // keep options\n assign({\n // preserve an existing replacement but allow the redirect to override it\n replace,\n }, locationAsObject(failure.to), {\n state: typeof failure.to === 'object'\n ? assign({}, data, failure.to.state)\n : data,\n force,\n }), \n // preserve the original redirectedFrom if any\n redirectedFrom || toLocation);\n }\n }\n else {\n // if we fail we don't finalize the navigation\n failure = finalizeNavigation(toLocation, from, true, replace, data);\n }\n triggerAfterEach(toLocation, from, failure);\n return failure;\n });\n }\n /**\n * Helper to reject and skip all navigation guards if a new navigation happened\n * @param to\n * @param from\n */\n function checkCanceledNavigationAndReject(to, from) {\n const error = checkCanceledNavigation(to, from);\n return error ? Promise.reject(error) : Promise.resolve();\n }\n function runWithContext(fn) {\n const app = installedApps.values().next().value;\n // support Vue < 3.3\n return app && typeof app.runWithContext === 'function'\n ? app.runWithContext(fn)\n : fn();\n }\n // TODO: refactor the whole before guards by internally using router.beforeEach\n function navigate(to, from) {\n let guards;\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\n // all components here have been resolved once because we are leaving\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\n // leavingRecords is already reversed\n for (const record of leavingRecords) {\n record.leaveGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeRouteLeave guards\n return (runGuardQueue(guards)\n .then(() => {\n // check global guards beforeEach\n guards = [];\n for (const guard of beforeGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n .then(() => {\n // check in components beforeRouteUpdate\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\n for (const record of updatingRecords) {\n record.updateGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check the route beforeEnter\n guards = [];\n for (const record of enteringRecords) {\n // do not trigger beforeEnter on reused views\n if (record.beforeEnter) {\n if (isArray(record.beforeEnter)) {\n for (const beforeEnter of record.beforeEnter)\n guards.push(guardToPromiseFn(beforeEnter, to, from));\n }\n else {\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\n }\n }\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise\n // clear existing enterCallbacks, these are added by extractComponentsGuards\n to.matched.forEach(record => (record.enterCallbacks = {}));\n // check in-component beforeRouteEnter\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from, runWithContext);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check global guards beforeResolve\n guards = [];\n for (const guard of beforeResolveGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n // catch any navigation canceled\n .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\n ? err\n : Promise.reject(err)));\n }\n function triggerAfterEach(to, from, failure) {\n // navigation is confirmed, call afterGuards\n // TODO: wrap with error handlers\n afterGuards\n .list()\n .forEach(guard => runWithContext(() => guard(to, from, failure)));\n }\n /**\n * - Cleans up any navigation guards\n * - Changes the url if necessary\n * - Calls the scrollBehavior\n */\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\n // a more recent navigation took place\n const error = checkCanceledNavigation(toLocation, from);\n if (error)\n return error;\n // only consider as push if it's not the first navigation\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\n const state = !isBrowser ? {} : history.state;\n // change URL only if the user did a push/replace and if it's not the initial navigation because\n // it's just reflecting the url\n if (isPush) {\n // on the initial navigation, we want to reuse the scroll position from\n // history state if it exists\n if (replace || isFirstNavigation)\n routerHistory.replace(toLocation.fullPath, assign({\n scroll: isFirstNavigation && state && state.scroll,\n }, data));\n else\n routerHistory.push(toLocation.fullPath, data);\n }\n // accept current navigation\n currentRoute.value = toLocation;\n handleScroll(toLocation, from, isPush, isFirstNavigation);\n markAsReady();\n }\n let removeHistoryListener;\n // attach listener to history to trigger navigations\n function setupListeners() {\n // avoid setting up listeners twice due to an invalid first navigation\n if (removeHistoryListener)\n return;\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\n if (!router.listening)\n return;\n // cannot be a redirect route because it was in history\n const toLocation = resolve(to);\n // due to dynamic routing, and to hash history with manual navigation\n // (manually changing the url or calling history.hash = '#/somewhere'),\n // there could be a redirect record in history\n const shouldRedirect = handleRedirectRecord(toLocation);\n if (shouldRedirect) {\n pushWithRedirect(assign(shouldRedirect, { replace: true, force: true }), toLocation).catch(noop);\n return;\n }\n pendingLocation = toLocation;\n const from = currentRoute.value;\n // TODO: should be moved to web history?\n if (isBrowser) {\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\n }\n navigate(toLocation, from)\n .catch((error) => {\n if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n return error;\n }\n if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\n // false) but this is bug prone as we have no way to wait the\n // navigation to be finished before calling pushWithRedirect. Using\n // a setTimeout of 16ms seems to work but there is no guarantee for\n // it to work on every browser. So instead we do not restore the\n // history entry and trigger a new navigation as requested by the\n // navigation guard.\n // the error is already handled by router.push we just want to avoid\n // logging the error\n pushWithRedirect(assign(locationAsObject(error.to), {\n force: true,\n }), toLocation\n // avoid an uncaught rejection, let push call triggerError\n )\n .then(failure => {\n // manual change in hash history #916 ending up in the URL not\n // changing, but it was changed by the manual url change, so we\n // need to manually change it ourselves\n if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\n 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\n !info.delta &&\n info.type === NavigationType.pop) {\n routerHistory.go(-1, false);\n }\n })\n .catch(noop);\n // avoid the then branch\n return Promise.reject();\n }\n // do not restore history on unknown direction\n if (info.delta) {\n routerHistory.go(-info.delta, false);\n }\n // unrecognized error, transfer to the global handler\n return triggerError(error, toLocation, from);\n })\n .then((failure) => {\n failure =\n failure ||\n finalizeNavigation(\n // after navigation, all matched components are resolved\n toLocation, from, false);\n // revert the navigation\n if (failure) {\n if (info.delta &&\n // a new navigation has been triggered, so we do not want to revert, that will change the current history\n // entry while a different route is displayed\n !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n routerHistory.go(-info.delta, false);\n }\n else if (info.type === NavigationType.pop &&\n isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\n // manual change in hash history #916\n // it's like a push but lacks the information of the direction\n routerHistory.go(-1, false);\n }\n }\n triggerAfterEach(toLocation, from, failure);\n })\n // avoid warnings in the console about uncaught rejections, they are logged by triggerErrors\n .catch(noop);\n });\n }\n // Initialization and Errors\n let readyHandlers = useCallbacks();\n let errorListeners = useCallbacks();\n let ready;\n /**\n * Trigger errorListeners added via onError and throws the error as well\n *\n * @param error - error to throw\n * @param to - location we were navigating to when the error happened\n * @param from - location we were navigating from when the error happened\n * @returns the error as a rejected promise\n */\n function triggerError(error, to, from) {\n markAsReady(error);\n const list = errorListeners.list();\n if (list.length) {\n list.forEach(handler => handler(error, to, from));\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('uncaught error during route navigation:');\n }\n console.error(error);\n }\n // reject the error no matter there were error listeners or not\n return Promise.reject(error);\n }\n function isReady() {\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\n return Promise.resolve();\n return new Promise((resolve, reject) => {\n readyHandlers.add([resolve, reject]);\n });\n }\n function markAsReady(err) {\n if (!ready) {\n // still not ready if an error happened\n ready = !err;\n setupListeners();\n readyHandlers\n .list()\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\n readyHandlers.reset();\n }\n return err;\n }\n // Scroll behavior\n function handleScroll(to, from, isPush, isFirstNavigation) {\n const { scrollBehavior } = options;\n if (!isBrowser || !scrollBehavior)\n return Promise.resolve();\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\n ((isFirstNavigation || !isPush) &&\n history.state &&\n history.state.scroll) ||\n null;\n return nextTick()\n .then(() => scrollBehavior(to, from, scrollPosition))\n .then(position => position && scrollToPosition(position))\n .catch(err => triggerError(err, to, from));\n }\n const go = (delta) => routerHistory.go(delta);\n let started;\n const installedApps = new Set();\n const router = {\n currentRoute,\n listening: true,\n addRoute,\n removeRoute,\n clearRoutes: matcher.clearRoutes,\n hasRoute,\n getRoutes,\n resolve,\n options,\n push,\n replace,\n go,\n back: () => go(-1),\n forward: () => go(1),\n beforeEach: beforeGuards.add,\n beforeResolve: beforeResolveGuards.add,\n afterEach: afterGuards.add,\n onError: errorListeners.add,\n isReady,\n install(app) {\n const router = this;\n app.component('RouterLink', RouterLink);\n app.component('RouterView', RouterView);\n app.config.globalProperties.$router = router;\n Object.defineProperty(app.config.globalProperties, '$route', {\n enumerable: true,\n get: () => unref(currentRoute),\n });\n // this initial navigation is only necessary on client, on server it doesn't\n // make sense because it will create an extra unnecessary navigation and could\n // lead to problems\n if (isBrowser &&\n // used for the initial navigation client side to avoid pushing\n // multiple times when the router is used in multiple apps\n !started &&\n currentRoute.value === START_LOCATION_NORMALIZED) {\n // see above\n started = true;\n push(routerHistory.location).catch(err => {\n if ((process.env.NODE_ENV !== 'production'))\n warn('Unexpected error when starting the router:', err);\n });\n }\n const reactiveRoute = {};\n for (const key in START_LOCATION_NORMALIZED) {\n Object.defineProperty(reactiveRoute, key, {\n get: () => currentRoute.value[key],\n enumerable: true,\n });\n }\n app.provide(routerKey, router);\n app.provide(routeLocationKey, shallowReactive(reactiveRoute));\n app.provide(routerViewLocationKey, currentRoute);\n const unmountApp = app.unmount;\n installedApps.add(app);\n app.unmount = function () {\n installedApps.delete(app);\n // the router is not attached to an app anymore\n if (installedApps.size < 1) {\n // invalidate the current navigation\n pendingLocation = START_LOCATION_NORMALIZED;\n removeHistoryListener && removeHistoryListener();\n removeHistoryListener = null;\n currentRoute.value = START_LOCATION_NORMALIZED;\n started = false;\n ready = false;\n }\n unmountApp();\n };\n // TODO: this probably needs to be updated so it can be used by vue-termui\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n addDevtools(app, router, matcher);\n }\n },\n };\n // TODO: type this as NavigationGuardReturn or similar instead of any\n function runGuardQueue(guards) {\n return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());\n }\n return router;\n}\nfunction extractChangingRecords(to, from) {\n const leavingRecords = [];\n const updatingRecords = [];\n const enteringRecords = [];\n const len = Math.max(from.matched.length, to.matched.length);\n for (let i = 0; i < len; i++) {\n const recordFrom = from.matched[i];\n if (recordFrom) {\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\n updatingRecords.push(recordFrom);\n else\n leavingRecords.push(recordFrom);\n }\n const recordTo = to.matched[i];\n if (recordTo) {\n // the type doesn't matter because we are comparing per reference\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\n enteringRecords.push(recordTo);\n }\n }\n }\n return [leavingRecords, updatingRecords, enteringRecords];\n}\n\n/**\n * Returns the router instance. Equivalent to using `$router` inside\n * templates.\n */\nfunction useRouter() {\n return inject(routerKey);\n}\n/**\n * Returns the current route location. Equivalent to using `$route` inside\n * templates.\n */\nfunction useRoute(_name) {\n return inject(routeLocationKey);\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","/*!\n * pinia v3.0.1\n * (c) 2025 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isRef, isReactive, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, nextTick, computed, toRefs } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n return (o &&\n typeof o === 'object' &&\n Object.prototype.toString.call(o) === '[object Object]' &&\n typeof o.toJSON !== 'function');\n}\n// type DeepReadonly = { readonly [P in keyof T]: DeepReadonly }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n /**\n * Direct mutation of the state:\n *\n * - `store.name = 'new name'`\n * - `store.$state.name = 'new name'`\n * - `store.list.push('new item')`\n */\n MutationType[\"direct\"] = \"direct\";\n /**\n * Mutated the state with `$patch` and an object\n *\n * - `store.$patch({ name: 'newName' })`\n */\n MutationType[\"patchObject\"] = \"patch object\";\n /**\n * Mutated the state with `$patch` and a function\n *\n * - `store.$patch(state => state.name = 'newName')`\n */\n MutationType[\"patchFunction\"] = \"patch function\";\n // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n ? window\n : typeof self === 'object' && self.self === self\n ? self\n : typeof global === 'object' && global.global === global\n ? global\n : typeof globalThis === 'object'\n ? globalThis\n : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (autoBom &&\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n }\n return blob;\n}\nfunction download(url, name, opts) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n saveAs(xhr.response, name, opts);\n };\n xhr.onerror = function () {\n console.error('could not download file');\n };\n xhr.send();\n}\nfunction corsEnabled(url) {\n const xhr = new XMLHttpRequest();\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false);\n try {\n xhr.send();\n }\n catch (e) { }\n return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'));\n }\n catch (e) {\n const evt = document.createEvent('MouseEvents');\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\n node.dispatchEvent(evt);\n }\n}\nconst _navigator = typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n /AppleWebKit/.test(_navigator.userAgent) &&\n !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n ? () => { } // noop\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n typeof HTMLAnchorElement !== 'undefined' &&\n 'download' in HTMLAnchorElement.prototype &&\n !isMacOSWebView\n ? downloadSaveAs\n : // Use msSaveOrOpenBlob as a second approach\n 'msSaveOrOpenBlob' in _navigator\n ? msSaveAs\n : // Fallback to using FileReader and a popup\n fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n const a = document.createElement('a');\n a.download = name;\n a.rel = 'noopener'; // tabnabbing\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob;\n if (a.origin !== location.origin) {\n if (corsEnabled(a.href)) {\n download(blob, name, opts);\n }\n else {\n a.target = '_blank';\n click(a);\n }\n }\n else {\n click(a);\n }\n }\n else {\n // Support blobs\n a.href = URL.createObjectURL(blob);\n setTimeout(function () {\n URL.revokeObjectURL(a.href);\n }, 4e4); // 40s\n setTimeout(function () {\n click(a);\n }, 0);\n }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts);\n }\n else {\n const a = document.createElement('a');\n a.href = blob;\n a.target = '_blank';\n setTimeout(function () {\n click(a);\n });\n }\n }\n else {\n // @ts-ignore: works on windows\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank');\n if (popup) {\n popup.document.title = popup.document.body.innerText = 'downloading...';\n }\n if (typeof blob === 'string')\n return download(blob, name, opts);\n const force = blob.type === 'application/octet-stream';\n const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n const reader = new FileReader();\n reader.onloadend = function () {\n let url = reader.result;\n if (typeof url !== 'string') {\n popup = null;\n throw new Error('Wrong reader.result type');\n }\n url = isChromeIOS\n ? url\n : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n if (popup) {\n popup.location.href = url;\n }\n else {\n location.assign(url);\n }\n popup = null; // reverse-tabnabbing #460\n };\n reader.readAsDataURL(blob);\n }\n else {\n const url = URL.createObjectURL(blob);\n if (popup)\n popup.location.assign(url);\n else\n location.href = url;\n popup = null; // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url);\n }, 4e4); // 40s\n }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n const piniaMessage = '🍍 ' + message;\n if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n // No longer available :(\n __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n }\n else if (type === 'error') {\n console.error(piniaMessage);\n }\n else if (type === 'warn') {\n console.warn(piniaMessage);\n }\n else {\n console.log(piniaMessage);\n }\n}\nfunction isPinia(o) {\n return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n if (!('clipboard' in navigator)) {\n toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n return true;\n }\n}\nfunction checkNotFocusedError(error) {\n if (error instanceof Error &&\n error.message.toLowerCase().includes('document is not focused')) {\n toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n return true;\n }\n return false;\n}\nasync function actionGlobalCopyState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n toastMessage('Global state copied to clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalPasteState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText()));\n toastMessage('Global state pasted from clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalSaveState(pinia) {\n try {\n saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n type: 'text/plain;charset=utf-8',\n }), 'pinia-state.json');\n }\n catch (error) {\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nlet fileInput;\nfunction getFileOpener() {\n if (!fileInput) {\n fileInput = document.createElement('input');\n fileInput.type = 'file';\n fileInput.accept = '.json';\n }\n function openFile() {\n return new Promise((resolve, reject) => {\n fileInput.onchange = async () => {\n const files = fileInput.files;\n if (!files)\n return resolve(null);\n const file = files.item(0);\n if (!file)\n return resolve(null);\n return resolve({ text: await file.text(), file });\n };\n // @ts-ignore: TODO: changed from 4.3 to 4.4\n fileInput.oncancel = () => resolve(null);\n fileInput.onerror = reject;\n fileInput.click();\n });\n }\n return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n try {\n const open = getFileOpener();\n const result = await open();\n if (!result)\n return;\n const { text, file } = result;\n loadStoresState(pinia, JSON.parse(text));\n toastMessage(`Global state imported from \"${file.name}\".`);\n }\n catch (error) {\n toastMessage(`Failed to import the state from JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nfunction loadStoresState(pinia, state) {\n for (const key in state) {\n const storeState = pinia.state.value[key];\n // store is already instantiated, patch it\n if (storeState) {\n Object.assign(storeState, state[key]);\n }\n else {\n // store is not instantiated, set the initial state\n pinia.state.value[key] = state[key];\n }\n }\n}\n\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n return isPinia(store)\n ? {\n id: PINIA_ROOT_ID,\n label: PINIA_ROOT_LABEL,\n }\n : {\n id: store.$id,\n label: store.$id,\n };\n}\nfunction formatStoreForInspectorState(store) {\n if (isPinia(store)) {\n const storeNames = Array.from(store._s.keys());\n const storeMap = store._s;\n const state = {\n state: storeNames.map((storeId) => ({\n editable: true,\n key: storeId,\n value: store.state.value[storeId],\n })),\n getters: storeNames\n .filter((id) => storeMap.get(id)._getters)\n .map((id) => {\n const store = storeMap.get(id);\n return {\n editable: false,\n key: id,\n value: store._getters.reduce((getters, key) => {\n getters[key] = store[key];\n return getters;\n }, {}),\n };\n }),\n };\n return state;\n }\n const state = {\n state: Object.keys(store.$state).map((key) => ({\n editable: true,\n key,\n value: store.$state[key],\n })),\n };\n // avoid adding empty getters\n if (store._getters && store._getters.length) {\n state.getters = store._getters.map((getterName) => ({\n editable: false,\n key: getterName,\n value: store[getterName],\n }));\n }\n if (store._customProperties.size) {\n state.customProperties = Array.from(store._customProperties).map((key) => ({\n editable: true,\n key,\n value: store[key],\n }));\n }\n return state;\n}\nfunction formatEventData(events) {\n if (!events)\n return {};\n if (Array.isArray(events)) {\n // TODO: handle add and delete for arrays and objects\n return events.reduce((data, event) => {\n data.keys.push(event.key);\n data.operations.push(event.type);\n data.oldValue[event.key] = event.oldValue;\n data.newValue[event.key] = event.newValue;\n return data;\n }, {\n oldValue: {},\n keys: [],\n operations: [],\n newValue: {},\n });\n }\n else {\n return {\n operation: formatDisplay(events.type),\n key: formatDisplay(events.key),\n oldValue: events.oldValue,\n newValue: events.newValue,\n };\n }\n}\nfunction formatMutationType(type) {\n switch (type) {\n case MutationType.direct:\n return 'mutation';\n case MutationType.patchFunction:\n return '$patch';\n case MutationType.patchObject:\n return '$patch';\n default:\n return 'unknown';\n }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => '🍍 ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n }, (api) => {\n if (typeof api.now !== 'function') {\n toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: `Pinia 🍍`,\n color: 0xe5df88,\n });\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Pinia 🍍',\n icon: 'storage',\n treeFilterPlaceholder: 'Search stores',\n actions: [\n {\n icon: 'content_copy',\n action: () => {\n actionGlobalCopyState(pinia);\n },\n tooltip: 'Serialize and copy the state',\n },\n {\n icon: 'content_paste',\n action: async () => {\n await actionGlobalPasteState(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Replace the state with the content of your clipboard',\n },\n {\n icon: 'save',\n action: () => {\n actionGlobalSaveState(pinia);\n },\n tooltip: 'Save the state as a JSON file',\n },\n {\n icon: 'folder_open',\n action: async () => {\n await actionGlobalOpenStateFile(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Import the state from a JSON file',\n },\n ],\n nodeActions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state (with \"$reset\")',\n action: (nodeId) => {\n const store = pinia._s.get(nodeId);\n if (!store) {\n toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n }\n else if (typeof store.$reset !== 'function') {\n toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n }\n else {\n store.$reset();\n toastMessage(`Store \"${nodeId}\" reset.`);\n }\n },\n },\n ],\n });\n api.on.inspectComponent((payload) => {\n const proxy = (payload.componentInstance &&\n payload.componentInstance.proxy);\n if (proxy && proxy._pStores) {\n const piniaStores = payload.componentInstance.proxy._pStores;\n Object.values(piniaStores).forEach((store) => {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'state',\n editable: true,\n value: store._isOptionsAPI\n ? {\n _custom: {\n value: toRaw(store.$state),\n actions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state of this store',\n action: () => store.$reset(),\n },\n ],\n },\n }\n : // NOTE: workaround to unwrap transferred refs\n Object.keys(store.$state).reduce((state, key) => {\n state[key] = store.$state[key];\n return state;\n }, {}),\n });\n if (store._getters && store._getters.length) {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'getters',\n editable: false,\n value: store._getters.reduce((getters, key) => {\n try {\n getters[key] = store[key];\n }\n catch (error) {\n // @ts-expect-error: we just want to show it in devtools\n getters[key] = error;\n }\n return getters;\n }, {}),\n });\n }\n });\n }\n });\n api.on.getInspectorTree((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n let stores = [pinia];\n stores = stores.concat(Array.from(pinia._s.values()));\n payload.rootNodes = (payload.filter\n ? stores.filter((store) => '$id' in store\n ? store.$id\n .toLowerCase()\n .includes(payload.filter.toLowerCase())\n : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n : stores).map(formatStoreForInspectorTree);\n }\n });\n // Expose pinia instance as $pinia to window\n globalThis.$pinia = pinia;\n api.on.getInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n // this could be the selected store restored for a different project\n // so it's better not to say anything here\n return;\n }\n if (inspectedStore) {\n // Expose selected store as $store to window\n if (payload.nodeId !== PINIA_ROOT_ID)\n globalThis.$store = toRaw(inspectedStore);\n payload.state = formatStoreForInspectorState(inspectedStore);\n }\n }\n });\n api.on.editInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (!isPinia(inspectedStore)) {\n // access only the state\n if (path.length !== 1 ||\n !inspectedStore._customProperties.has(path[0]) ||\n path[0] in inspectedStore.$state) {\n path.unshift('$state');\n }\n }\n else {\n // Root access, we can omit the `.value` because the devtools API does it for us\n path.unshift('state');\n }\n isTimelineActive = false;\n payload.set(inspectedStore, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n api.on.editComponentState((payload) => {\n if (payload.type.startsWith('🍍')) {\n const storeId = payload.type.replace(/^🍍\\s*/, '');\n const store = pinia._s.get(storeId);\n if (!store) {\n return toastMessage(`store \"${storeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (path[0] !== 'state') {\n return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n }\n // rewrite the first entry to be able to directly set the state as\n // well as any other path\n path[0] = '$state';\n isTimelineActive = false;\n payload.set(store, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n });\n}\nfunction addStoreToDevtools(app, store) {\n if (!componentStateTypes.includes(getStoreType(store.$id))) {\n componentStateTypes.push(getStoreType(store.$id));\n }\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n settings: {\n logStoreChanges: {\n label: 'Notify about new/deleted stores',\n type: 'boolean',\n defaultValue: true,\n },\n // useEmojis: {\n // label: 'Use emojis in messages ⚡️',\n // type: 'boolean',\n // defaultValue: true,\n // },\n },\n }, (api) => {\n // gracefully handle errors\n const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n store.$onAction(({ after, onError, name, args }) => {\n const groupId = runningActionId++;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛫 ' + name,\n subtitle: 'start',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n },\n groupId,\n },\n });\n after((result) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛬 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n result,\n },\n groupId,\n },\n });\n });\n onError((error) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n logType: 'error',\n title: '💥 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n error,\n },\n groupId,\n },\n });\n });\n }, true);\n store._customProperties.forEach((name) => {\n watch(() => unref(store[name]), (newValue, oldValue) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (isTimelineActive) {\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: 'Change',\n subtitle: name,\n data: {\n newValue,\n oldValue,\n },\n groupId: activeAction,\n },\n });\n }\n }, { deep: true });\n });\n store.$subscribe(({ events, type }, state) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (!isTimelineActive)\n return;\n // rootStore.state[store.id] = state\n const eventData = {\n time: now(),\n title: formatMutationType(type),\n data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n groupId: activeAction,\n };\n if (type === MutationType.patchFunction) {\n eventData.subtitle = '⤵️';\n }\n else if (type === MutationType.patchObject) {\n eventData.subtitle = '🧩';\n }\n else if (events && !Array.isArray(events)) {\n eventData.subtitle = events.type;\n }\n if (events) {\n eventData.data['rawEvent(s)'] = {\n _custom: {\n display: 'DebuggerEvent',\n type: 'object',\n tooltip: 'raw DebuggerEvent[]',\n value: events,\n },\n };\n }\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: eventData,\n });\n }, { detached: true, flush: 'sync' });\n const hotUpdate = store._hotUpdate;\n store._hotUpdate = markRaw((newStore) => {\n hotUpdate(newStore);\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🔥 ' + store.$id,\n subtitle: 'HMR update',\n data: {\n store: formatDisplay(store.$id),\n info: formatDisplay(`HMR update`),\n },\n },\n });\n // update the devtools too\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n });\n const { $dispose } = store;\n store.$dispose = () => {\n $dispose();\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n };\n // trigger an update so it can display new registered stores\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`\"${store.$id}\" store installed 🆕`);\n });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n // original actions of the store as they are given by pinia. We are going to override them\n const actions = actionNames.reduce((storeActions, actionName) => {\n // use toRaw to avoid tracking #541\n storeActions[actionName] = toRaw(store)[actionName];\n return storeActions;\n }, {});\n for (const actionName in actions) {\n store[actionName] = function () {\n // the running action id is incremented in a before action hook\n const _actionId = runningActionId;\n const trackedStore = wrapWithProxy\n ? new Proxy(store, {\n get(...args) {\n activeAction = _actionId;\n return Reflect.get(...args);\n },\n set(...args) {\n activeAction = _actionId;\n return Reflect.set(...args);\n },\n })\n : store;\n // For Setup Stores we need https://github.com/tc39/proposal-async-context\n activeAction = _actionId;\n const retValue = actions[actionName].apply(trackedStore, arguments);\n // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n activeAction = undefined;\n return retValue;\n };\n }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n // HMR module\n if (store.$id.startsWith('__hot:')) {\n return;\n }\n // detect option api vs setup api\n store._isOptionsAPI = !!options.state;\n // Do not overwrite actions mocked by @pinia/testing (#2298)\n if (!store._p._testing) {\n patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n // Upgrade the HMR to also update the new actions\n const originalHotUpdate = store._hotUpdate;\n toRaw(store)._hotUpdate = function (newStore) {\n originalHotUpdate.apply(this, arguments);\n patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n };\n }\n addStoreToDevtools(app, \n // FIXME: is there a way to allow the assignment from Store to StoreGeneric?\n store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n const scope = effectScope(true);\n // NOTE: here we could check the window object for a state and directly set it\n // if there is anything like it with Vue 3 SSR\n const state = scope.run(() => ref({}));\n let _p = [];\n // plugins added before calling app.use(pinia)\n let toBeInstalled = [];\n const pinia = markRaw({\n install(app) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n pinia._a = app;\n app.provide(piniaSymbol, pinia);\n app.config.globalProperties.$pinia = pinia;\n /* istanbul ignore else */\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n registerPiniaDevtools(app, pinia);\n }\n toBeInstalled.forEach((plugin) => _p.push(plugin));\n toBeInstalled = [];\n },\n use(plugin) {\n if (!this._a) {\n toBeInstalled.push(plugin);\n }\n else {\n _p.push(plugin);\n }\n return this;\n },\n _p,\n // it's actually undefined here\n // @ts-expect-error\n _a: null,\n _e: scope,\n _s: new Map(),\n state,\n });\n // pinia devtools rely on dev only features so they cannot be forced unless\n // the dev build of Vue is used. Avoid old browsers like IE11.\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT && typeof Proxy !== 'undefined') {\n pinia.use(devtoolsPlugin);\n }\n return pinia;\n}\n/**\n * Dispose a Pinia instance by stopping its effectScope and removing the state, plugins and stores. This is mostly\n * useful in tests, with both a testing pinia or a regular pinia and in applications that use multiple pinia instances.\n * Once disposed, the pinia instance cannot be used anymore.\n *\n * @param pinia - pinia instance\n */\nfunction disposePinia(pinia) {\n pinia._e.stop();\n pinia._s.clear();\n pinia._p.splice(0);\n pinia.state.value = {};\n // @ts-expect-error: non valid\n pinia._a = null;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in oldState) {\n const subPatch = oldState[key];\n // skip the whole sub tree\n if (!(key in newState)) {\n continue;\n }\n const targetValue = newState[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n newState[key] = patchObject(targetValue, subPatch);\n }\n else {\n // objects are either a bit more complex (e.g. refs) or primitives, so we\n // just set the whole thing\n newState[key] = subPatch;\n }\n }\n return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n // strip as much as possible from iife.prod\n if (!(process.env.NODE_ENV !== 'production')) {\n return () => { };\n }\n return (newModule) => {\n const pinia = hot.data.pinia || initialUseStore._pinia;\n if (!pinia) {\n // this store is still not used\n return;\n }\n // preserve the pinia instance across loads\n hot.data.pinia = pinia;\n // console.log('got data', newStore)\n for (const exportName in newModule) {\n const useStore = newModule[exportName];\n // console.log('checking for', exportName)\n if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n // console.log('Accepting update for', useStore.$id)\n const id = useStore.$id;\n if (id !== initialUseStore.$id) {\n console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n // return import.meta.hot.invalidate()\n return hot.invalidate();\n }\n const existingStore = pinia._s.get(id);\n if (!existingStore) {\n console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n return;\n }\n useStore(pinia, existingStore);\n }\n }\n };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n subscriptions.push(callback);\n const removeSubscription = () => {\n const idx = subscriptions.indexOf(callback);\n if (idx > -1) {\n subscriptions.splice(idx, 1);\n onCleanup();\n }\n };\n if (!detached && getCurrentScope()) {\n onScopeDispose(removeSubscription);\n }\n return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n subscriptions.slice().forEach((callback) => {\n callback(...args);\n });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\n/**\n * Marks a function as an action for `$onAction`\n * @internal\n */\nconst ACTION_MARKER = Symbol();\n/**\n * Action name symbol. Allows to add a name to an action after defining it\n * @internal\n */\nconst ACTION_NAME = Symbol();\nfunction mergeReactiveObjects(target, patchToApply) {\n // Handle Map instances\n if (target instanceof Map && patchToApply instanceof Map) {\n patchToApply.forEach((value, key) => target.set(key, value));\n }\n else if (target instanceof Set && patchToApply instanceof Set) {\n // Handle Set instances\n patchToApply.forEach(target.add, target);\n }\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in patchToApply) {\n if (!patchToApply.hasOwnProperty(key))\n continue;\n const subPatch = patchToApply[key];\n const targetValue = target[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n target.hasOwnProperty(key) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n target[key] = mergeReactiveObjects(targetValue, subPatch);\n }\n else {\n // @ts-expect-error: subPatch is a valid value\n target[key] = subPatch;\n }\n }\n return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n ? Symbol('pinia:skipHydration')\n : /* istanbul ignore next */ Symbol();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n return Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n return !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n const { state, actions, getters } = options;\n const initialState = pinia.state.value[id];\n let store;\n function setup() {\n if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n pinia.state.value[id] = state ? state() : {};\n }\n // avoid creating a state in pinia.state.value\n const localState = (process.env.NODE_ENV !== 'production') && hot\n ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n toRefs(ref(state ? state() : {}).value)\n : toRefs(pinia.state.value[id]);\n return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n if ((process.env.NODE_ENV !== 'production') && name in localState) {\n console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n }\n computedGetters[name] = markRaw(computed(() => {\n setActivePinia(pinia);\n // it was created just before\n const store = pinia._s.get(id);\n // allow cross using stores\n // @ts-expect-error\n // return getters![name].call(context, context)\n // TODO: avoid reading the getter while assigning with a global variable\n return getters[name].call(store, store);\n }));\n return computedGetters;\n }, {}));\n }\n store = createSetupStore(id, setup, options, pinia, hot, true);\n return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n let scope;\n const optionsForPlugin = assign({ actions: {} }, options);\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n throw new Error('Pinia destroyed');\n }\n // watcher options for $subscribe\n const $subscribeOptions = { deep: true };\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n $subscribeOptions.onTrigger = (event) => {\n /* istanbul ignore else */\n if (isListening) {\n debuggerEvents = event;\n // avoid triggering this while the store is being built and the state is being set in pinia\n }\n else if (isListening == false && !store._hotUpdating) {\n // let patch send all the events together later\n /* istanbul ignore else */\n if (Array.isArray(debuggerEvents)) {\n debuggerEvents.push(event);\n }\n else {\n console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n }\n }\n };\n }\n // internal state\n let isListening; // set to true at the end\n let isSyncListening; // set to true at the end\n let subscriptions = [];\n let actionSubscriptions = [];\n let debuggerEvents;\n const initialState = pinia.state.value[$id];\n // avoid setting the state for option stores if it is set\n // by the setup\n if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n pinia.state.value[$id] = {};\n }\n const hotState = ref({});\n // avoid triggering too many listeners\n // https://github.com/vuejs/pinia/issues/1129\n let activeListener;\n function $patch(partialStateOrMutator) {\n let subscriptionMutation;\n isListening = isSyncListening = false;\n // reset the debugger events since patches are sync\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n debuggerEvents = [];\n }\n if (typeof partialStateOrMutator === 'function') {\n partialStateOrMutator(pinia.state.value[$id]);\n subscriptionMutation = {\n type: MutationType.patchFunction,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n else {\n mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n subscriptionMutation = {\n type: MutationType.patchObject,\n payload: partialStateOrMutator,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n const myListenerId = (activeListener = Symbol());\n nextTick().then(() => {\n if (activeListener === myListenerId) {\n isListening = true;\n }\n });\n isSyncListening = true;\n // because we paused the watcher, we need to manually call the subscriptions\n triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n }\n const $reset = isOptionsStore\n ? function $reset() {\n const { state } = options;\n const newState = state ? state() : {};\n // we use a patch to group all changes into one single subscription\n this.$patch(($state) => {\n // @ts-expect-error: FIXME: shouldn't error?\n assign($state, newState);\n });\n }\n : /* istanbul ignore next */\n (process.env.NODE_ENV !== 'production')\n ? () => {\n throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n }\n : noop;\n function $dispose() {\n scope.stop();\n subscriptions = [];\n actionSubscriptions = [];\n pinia._s.delete($id);\n }\n /**\n * Helper that wraps function so it can be tracked with $onAction\n * @param fn - action to wrap\n * @param name - name of the action\n */\n const action = (fn, name = '') => {\n if (ACTION_MARKER in fn) {\n fn[ACTION_NAME] = name;\n return fn;\n }\n const wrappedAction = function () {\n setActivePinia(pinia);\n const args = Array.from(arguments);\n const afterCallbackList = [];\n const onErrorCallbackList = [];\n function after(callback) {\n afterCallbackList.push(callback);\n }\n function onError(callback) {\n onErrorCallbackList.push(callback);\n }\n // @ts-expect-error\n triggerSubscriptions(actionSubscriptions, {\n args,\n name: wrappedAction[ACTION_NAME],\n store,\n after,\n onError,\n });\n let ret;\n try {\n ret = fn.apply(this && this.$id === $id ? this : store, args);\n // handle sync errors\n }\n catch (error) {\n triggerSubscriptions(onErrorCallbackList, error);\n throw error;\n }\n if (ret instanceof Promise) {\n return ret\n .then((value) => {\n triggerSubscriptions(afterCallbackList, value);\n return value;\n })\n .catch((error) => {\n triggerSubscriptions(onErrorCallbackList, error);\n return Promise.reject(error);\n });\n }\n // trigger after callbacks\n triggerSubscriptions(afterCallbackList, ret);\n return ret;\n };\n wrappedAction[ACTION_MARKER] = true;\n wrappedAction[ACTION_NAME] = name; // will be set later\n // @ts-expect-error: we are intentionally limiting the returned type to just Fn\n // because all the added properties are internals that are exposed through `$onAction()` only\n return wrappedAction;\n };\n const _hmrPayload = /*#__PURE__*/ markRaw({\n actions: {},\n getters: {},\n state: [],\n hotState,\n });\n const partialStore = {\n _p: pinia,\n // _s: scope,\n $id,\n $onAction: addSubscription.bind(null, actionSubscriptions),\n $patch,\n $reset,\n $subscribe(callback, options = {}) {\n const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n if (options.flush === 'sync' ? isSyncListening : isListening) {\n callback({\n storeId: $id,\n type: MutationType.direct,\n events: debuggerEvents,\n }, state);\n }\n }, assign({}, $subscribeOptions, options)));\n return removeSubscription;\n },\n $dispose,\n };\n const store = reactive((process.env.NODE_ENV !== 'production') || ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT)\n ? assign({\n _hmrPayload,\n _customProperties: markRaw(new Set()), // devtools custom properties\n }, partialStore\n // must be added later\n // setupStore\n )\n : partialStore);\n // store the partial store now so the setup of stores can instantiate each other before they are finished without\n // creating infinite loops.\n pinia._s.set($id, store);\n const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n const setupStore = runWithContext(() => pinia._e.run(() => (scope = effectScope()).run(() => setup({ action }))));\n // overwrite existing actions to support $onAction\n for (const key in setupStore) {\n const prop = setupStore[key];\n if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n // mark it as a piece of state to be serialized\n if ((process.env.NODE_ENV !== 'production') && hot) {\n hotState.value[key] = toRef(setupStore, key);\n // createOptionStore directly sets the state in pinia.state.value so we\n // can just skip that\n }\n else if (!isOptionsStore) {\n // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n if (initialState && shouldHydrate(prop)) {\n if (isRef(prop)) {\n prop.value = initialState[key];\n }\n else {\n // probably a reactive object, lets recursively assign\n // @ts-expect-error: prop is unknown\n mergeReactiveObjects(prop, initialState[key]);\n }\n }\n // transfer the ref to the pinia state to keep everything in sync\n pinia.state.value[$id][key] = prop;\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.state.push(key);\n }\n // action\n }\n else if (typeof prop === 'function') {\n const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : action(prop, key);\n // this a hot module replacement store because the hotUpdate method needs\n // to do it with the right context\n // @ts-expect-error\n setupStore[key] = actionValue;\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.actions[key] = prop;\n }\n // list actions so they can be used in plugins\n // @ts-expect-error\n optionsForPlugin.actions[key] = prop;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n // add getters for devtools\n if (isComputed(prop)) {\n _hmrPayload.getters[key] = isOptionsStore\n ? // @ts-expect-error\n options.getters[key]\n : prop;\n if (IS_CLIENT) {\n const getters = setupStore._getters ||\n // @ts-expect-error: same\n (setupStore._getters = markRaw([]));\n getters.push(key);\n }\n }\n }\n }\n // add the state, getters, and action properties\n /* istanbul ignore if */\n assign(store, setupStore);\n // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n // Make `storeToRefs()` work with `reactive()` #799\n assign(toRaw(store), setupStore);\n // use this instead of a computed with setter to be able to create it anywhere\n // without linking the computed lifespan to wherever the store is first\n // created.\n Object.defineProperty(store, '$state', {\n get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n set: (state) => {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && hot) {\n throw new Error('cannot set hotState');\n }\n $patch(($state) => {\n // @ts-expect-error: FIXME: shouldn't error?\n assign($state, state);\n });\n },\n });\n // add the hotUpdate before plugins to allow them to override it\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n store._hotUpdate = markRaw((newStore) => {\n store._hotUpdating = true;\n newStore._hmrPayload.state.forEach((stateKey) => {\n if (stateKey in store.$state) {\n const newStateTarget = newStore.$state[stateKey];\n const oldStateSource = store.$state[stateKey];\n if (typeof newStateTarget === 'object' &&\n isPlainObject(newStateTarget) &&\n isPlainObject(oldStateSource)) {\n patchObject(newStateTarget, oldStateSource);\n }\n else {\n // transfer the ref\n newStore.$state[stateKey] = oldStateSource;\n }\n }\n // patch direct access properties to allow store.stateProperty to work as\n // store.$state.stateProperty\n // @ts-expect-error: any type\n store[stateKey] = toRef(newStore.$state, stateKey);\n });\n // remove deleted state properties\n Object.keys(store.$state).forEach((stateKey) => {\n if (!(stateKey in newStore.$state)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[stateKey];\n }\n });\n // avoid devtools logging this as a mutation\n isListening = false;\n isSyncListening = false;\n pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n isSyncListening = true;\n nextTick().then(() => {\n isListening = true;\n });\n for (const actionName in newStore._hmrPayload.actions) {\n const actionFn = newStore[actionName];\n // @ts-expect-error: actionName is a string\n store[actionName] =\n //\n action(actionFn, actionName);\n }\n // TODO: does this work in both setup and option store?\n for (const getterName in newStore._hmrPayload.getters) {\n const getter = newStore._hmrPayload.getters[getterName];\n const getterValue = isOptionsStore\n ? // special handling of options api\n computed(() => {\n setActivePinia(pinia);\n return getter.call(store, store);\n })\n : getter;\n // @ts-expect-error: getterName is a string\n store[getterName] =\n //\n getterValue;\n }\n // remove deleted getters\n Object.keys(store._hmrPayload.getters).forEach((key) => {\n if (!(key in newStore._hmrPayload.getters)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[key];\n }\n });\n // remove old actions\n Object.keys(store._hmrPayload.actions).forEach((key) => {\n if (!(key in newStore._hmrPayload.actions)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[key];\n }\n });\n // update the values used in devtools and to allow deleting new properties later on\n store._hmrPayload = newStore._hmrPayload;\n store._getters = newStore._getters;\n store._hotUpdating = false;\n });\n }\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n const nonEnumerable = {\n writable: true,\n configurable: true,\n // avoid warning on devtools trying to display this property\n enumerable: false,\n };\n ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n });\n }\n // apply all plugins\n pinia._p.forEach((extender) => {\n /* istanbul ignore else */\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n const extensions = scope.run(() => extender({\n store: store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n }));\n Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n assign(store, extensions);\n }\n else {\n assign(store, scope.run(() => extender({\n store: store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n })));\n }\n });\n if ((process.env.NODE_ENV !== 'production') &&\n store.$state &&\n typeof store.$state === 'object' &&\n typeof store.$state.constructor === 'function' &&\n !store.$state.constructor.toString().includes('[native code]')) {\n console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\n `\\tstate: () => new MyClass()\\n` +\n `Found in store \"${store.$id}\".`);\n }\n // only apply hydrate to option stores with an initial state in pinia\n if (initialState &&\n isOptionsStore &&\n options.hydrate) {\n options.hydrate(store.$state, initialState);\n }\n isListening = true;\n isSyncListening = true;\n return store;\n}\n// allows unused stores to be tree shaken\n/*! #__NO_SIDE_EFFECTS__ */\nfunction defineStore(\n// TODO: add proper types from above\nid, setup, setupOptions) {\n let options;\n const isSetupStore = typeof setup === 'function';\n // the option store setup will contain the actual options in this case\n options = isSetupStore ? setupOptions : setup;\n function useStore(pinia, hot) {\n const hasContext = hasInjectionContext();\n pinia =\n // in test mode, ignore the argument provided as we can always retrieve a\n // pinia instance with getActivePinia()\n ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n (hasContext ? inject(piniaSymbol, null) : null);\n if (pinia)\n setActivePinia(pinia);\n if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\\n` +\n `See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\\n` +\n `This will fail in production.`);\n }\n pinia = activePinia;\n if (!pinia._s.has(id)) {\n // creating the store registers it in `pinia._s`\n if (isSetupStore) {\n createSetupStore(id, setup, options, pinia);\n }\n else {\n createOptionsStore(id, options, pinia);\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n // @ts-expect-error: not the right inferred type\n useStore._pinia = pinia;\n }\n }\n const store = pinia._s.get(id);\n if ((process.env.NODE_ENV !== 'production') && hot) {\n const hotId = '__hot:' + id;\n const newStore = isSetupStore\n ? createSetupStore(hotId, setup, options, pinia, true)\n : createOptionsStore(hotId, assign({}, options), pinia, true);\n hot._hotUpdate(newStore);\n // cleanup the state properties and the store from the cache\n delete pinia.state.value[hotId];\n pinia._s.delete(hotId);\n }\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n const currentInstance = getCurrentInstance();\n // save stores in instances to access them devtools\n if (currentInstance &&\n currentInstance.proxy &&\n // avoid adding stores that are just built for hot module replacement\n !hot) {\n const vm = currentInstance.proxy;\n const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n cache[id] = store;\n }\n }\n // StoreGeneric cannot be casted towards Store\n return store;\n }\n useStore.$id = id;\n return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n * computed: {\n * // other computed properties\n * ...mapStores(useUserStore, useCartStore)\n * },\n *\n * created() {\n * this.userStore // store with id \"user\"\n * this.cartStore // store with id \"cart\"\n * }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n `Replace\\n` +\n `\\tmapStores([useAuthStore, useCartStore])\\n` +\n `with\\n` +\n `\\tmapStores(useAuthStore, useCartStore)\\n` +\n `This will fail in production if not fixed.`);\n stores = stores[0];\n }\n return stores.reduce((reduced, useStore) => {\n // @ts-expect-error: $id is added by defineStore\n reduced[useStore.$id + mapStoreSuffix] = function () {\n return useStore(this.$pinia);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = function () {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[key];\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function () {\n const store = useStore(this.$pinia);\n const storeKey = keysOrMapper[key];\n // for some reason TS is unable to infer the type of storeKey to be a\n // function\n return typeof storeKey === 'function'\n ? storeKey.call(this, store)\n : // @ts-expect-error: FIXME: should work?\n store[storeKey];\n };\n return reduced;\n }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[key](...args);\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[keysOrMapper[key]](...args);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[key];\n },\n set(value) {\n return (useStore(this.$pinia)[key] = value);\n },\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[keysOrMapper[key]];\n },\n set(value) {\n return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n },\n };\n return reduced;\n }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n const rawStore = toRaw(store);\n const refs = {};\n for (const key in rawStore) {\n const value = rawStore[key];\n // There is no native method to check for a computed\n // https://github.com/vuejs/core/pull/4165\n if (value.effect) {\n // @ts-expect-error: too hard to type correctly\n refs[key] =\n // ...\n computed({\n get: () => store[key],\n set(value) {\n store[key] = value;\n },\n });\n }\n else if (isRef(value) || isReactive(value)) {\n // @ts-expect-error: the key is state or getter\n refs[key] =\n // ---\n toRef(store, key);\n }\n }\n return refs;\n}\n\nexport { MutationType, acceptHMRUpdate, createPinia, defineStore, disposePinia, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, shouldHydrate, skipHydrate, storeToRefs };\n","function e(e){switch(typeof e){case\"string\":case\"symbol\":return e.toString();case\"function\":return e.name;default:throw new Error(`Unexpected ${typeof e} service id type`)}}const t=Symbol.for(\"@inversifyjs/common/islazyServiceIdentifier\");class r{[t];#e;constructor(e){this.#e=e,this[t]=!0}static is(e){return\"object\"==typeof e&&null!==e&&!0===e[t]}unwrap(){return this.#e()}}export{r as LazyServiceIdentifier,e as stringifyServiceIdentifier};\n//# sourceMappingURL=index.js.map\n","function t(t,e){return Reflect.getMetadata(e,t)}function e(e,n,a,c){const f=c(t(e,n)??a);Reflect.defineMetadata(n,f,e)}export{t as getReflectMetadata,e as updateReflectMetadata};\n//# sourceMappingURL=index.js.map\n","import{getReflectMetadata as t,updateReflectMetadata as e}from\"@inversifyjs/reflect-metadata-utils\";import{LazyServiceIdentifier as n}from\"@inversifyjs/common\";const a=\"named\",r=\"name\",i=\"unmanaged\",o=\"optional\",s=\"inject\",c=\"multi_inject\",u=\"post_construct\",d=\"pre_destroy\";const m=[s,c,r,i,a,o],l=Symbol.for(\"@inversifyjs/core/InversifyCoreError\");class f extends Error{[l];kind;constructor(t,e,n){super(e,n),this[l]=!0,this.kind=t}static is(t){return\"object\"==typeof t&&null!==t&&!0===t[l]}static isErrorOfKind(t,e){return f.is(t)&&t.kind===e}}var g,p;function h(t,e){const n=[];for(let t=0;t0)throw new f(g.missingInjectionDecorator,`Found unexpected missing metadata on type \"${t.name}\" at constructor indexes \"${n.join('\", \"')}\".\\n\\nAre you using @inject, @multiInject or @unmanaged decorators at those indexes?\\n\\nIf you're using typescript and want to rely on auto injection, set \"emitDecoratorMetadata\" compiler option to true`)}function y(t){return{kind:p.singleInjection,name:void 0,optional:!1,tags:new Map,targetName:void 0,value:t}}function v(t){const e=t.find((t=>t.key===s)),n=t.find((t=>t.key===c));if(void 0!==t.find((t=>t.key===i)))return function(t,e){if(void 0!==e||void 0!==t)throw new f(g.missingInjectionDecorator,\"Expected a single @inject, @multiInject or @unmanaged metadata\");return{kind:p.unmanaged}}(e,n);if(void 0===n&&void 0===e)throw new f(g.missingInjectionDecorator,\"Expected @inject, @multiInject or @unmanaged metadata\");const u=t.find((t=>t.key===a)),d=t.find((t=>t.key===o)),l=t.find((t=>t.key===r));return{kind:void 0===e?p.multipleInjection:p.singleInjection,name:u?.value,optional:void 0!==d,tags:new Map(t.filter((t=>m.every((e=>t.key!==e)))).map((t=>[t.key,t.value]))),targetName:l?.value,value:void 0===e?n?.value:e.value}}function j(t,e,n){try{return v(n)}catch(n){throw f.isErrorOfKind(n,g.missingInjectionDecorator)?new f(g.missingInjectionDecorator,`Expected a single @inject, @multiInject or @unmanaged decorator at type \"${t.name}\" at constructor arguments at index \"${e.toString()}\"`,{cause:n}):n}}function k(e){const n=t(e,\"design:paramtypes\"),a=t(e,\"inversify:tagged\"),r=[];if(void 0!==a)for(const[t,n]of Object.entries(a)){const a=parseInt(t);r[a]=j(e,a,n)}if(void 0!==n)for(let t=0;tNumber.MIN_SAFE_INTEGER)):e(Object,C,n,(t=>t+1)),n}(),this.#a=n,this.#r=void 0,this.#e=a,this.#i=new x(\"string\"==typeof n?n:n.toString().slice(7,-1)),this.#o=r}get id(){return this.#n}get identifier(){return this.#a}get metadata(){return void 0===this.#r&&(this.#r=O(this.#e)),this.#r}get name(){return this.#i}get type(){return this.#o}get serviceIdentifier(){return n.is(this.#e.value)?this.#e.value.unwrap():this.#e.value}getCustomTags(){return[...this.#e.tags.entries()].map((([t,e])=>({key:t,value:e})))}getNamedTag(){return void 0===this.#e.name?null:{key:a,value:this.#e.name}}hasTag(t){return this.metadata.some((e=>e.key===t))}isArray(){return this.#e.kind===p.multipleInjection}isNamed(){return void 0!==this.#e.name}isOptional(){return this.#e.optional}isTagged(){return this.#e.tags.size>0}matchesArray(t){return this.isArray()&&this.#e.value===t}matchesNamedTag(t){return this.#e.name===t}matchesTag(t){return e=>this.metadata.some((n=>n.key===t&&n.value===e))}}const _=t=>function(t,e){return function(n){const a=t(n);let r=b(n);for(;void 0!==r&&r!==Object;){const t=e(r);for(const[e,n]of t)a.properties.has(e)||a.properties.set(e,n);r=b(r)}const i=[];for(const t of a.constructorArguments)if(t.kind!==p.unmanaged){const e=t.targetName??\"\";i.push(new T(e,t,\"ConstructorArgument\"))}for(const[t,e]of a.properties)if(e.kind!==p.unmanaged){const n=e.targetName??t;i.push(new T(n,e,\"ClassProperty\"))}return i}}(void 0===t?M:e=>D(e,t),void 0===t?w:e=>E(e,t));export{p as ClassElementMetadataKind,T as LegacyTargetImpl,v as getClassElementMetadataFromLegacyMetadata,M as getClassMetadata,D as getClassMetadataFromMetadataReader,_ as getTargets};\n//# sourceMappingURL=index.js.map\n","import\"reflect-metadata\";export{LazyServiceIdentifier}from\"@inversifyjs/common\";import{getTargets as t,getClassElementMetadataFromLegacyMetadata as n,ClassElementMetadataKind as e,LegacyTargetImpl as i}from\"@inversifyjs/core\";const r=\"named\",s=\"name\",o=\"unmanaged\",a=\"optional\",c=\"inject\",d=\"multi_inject\",u=\"inversify:tagged\",h=\"inversify:tagged_props\",l=\"inversify:paramtypes\",g=\"design:paramtypes\",y=\"post_construct\",p=\"pre_destroy\";const f=[c,d,s,o,r,a];var _=Object.freeze({__proto__:null,DESIGN_PARAM_TYPES:g,INJECT_TAG:c,MULTI_INJECT_TAG:d,NAMED_TAG:r,NAME_TAG:s,NON_CUSTOM_TAG_KEYS:f,OPTIONAL_TAG:a,PARAM_TYPES:l,POST_CONSTRUCT:y,PRE_DESTROY:p,TAGGED:u,TAGGED_PROP:h,UNMANAGED_TAG:o});const v={Request:\"Request\",Singleton:\"Singleton\",Transient:\"Transient\"},b={ConstantValue:\"ConstantValue\",Constructor:\"Constructor\",DynamicValue:\"DynamicValue\",Factory:\"Factory\",Function:\"Function\",Instance:\"Instance\",Invalid:\"Invalid\",Provider:\"Provider\"},w={ClassProperty:\"ClassProperty\",ConstructorArgument:\"ConstructorArgument\",Variable:\"Variable\"};let m=0;function A(){return m++}class S{id;moduleId;activated;serviceIdentifier;implementationType;cache;dynamicValue;scope;type;factory;provider;constraint;onActivation;onDeactivation;constructor(t,n){this.id=A(),this.activated=!1,this.serviceIdentifier=t,this.scope=n,this.type=b.Invalid,this.constraint=t=>!0,this.implementationType=null,this.cache=null,this.factory=null,this.provider=null,this.onActivation=null,this.onDeactivation=null,this.dynamicValue=null}clone(){const t=new S(this.serviceIdentifier,this.scope);return t.activated=t.scope===v.Singleton&&this.activated,t.implementationType=this.implementationType,t.dynamicValue=this.dynamicValue,t.scope=this.scope,t.type=this.type,t.factory=this.factory,t.provider=this.provider,t.constraint=this.constraint,t.onActivation=this.onActivation,t.onDeactivation=this.onDeactivation,t.cache=this.cache,t}}const I=\"Metadata key was used more than once in a parameter:\",T=\"NULL argument\",D=\"Key Not Found\",N=\"Ambiguous match found for serviceIdentifier:\",C=\"No matching bindings found for serviceIdentifier:\",x=\"The @inject @multiInject @tagged and @named decorators must be applied to the parameters of a class constructor or a class property.\",R=(t,n)=>`onDeactivation() error in class ${t}: ${n}`;class E{getConstructorMetadata(t){return{compilerGeneratedMetadata:Reflect.getMetadata(g,t)??[],userGeneratedMetadata:Reflect.getMetadata(u,t)??{}}}getPropertiesMetadata(t){return Reflect.getMetadata(h,t)??{}}}var M;function B(t){return t instanceof RangeError||\"Maximum call stack size exceeded\"===t.message}!function(t){t[t.MultipleBindingsAvailable=2]=\"MultipleBindingsAvailable\",t[t.NoBindingsAvailable=0]=\"NoBindingsAvailable\",t[t.OnlyOneBindingAvailable=1]=\"OnlyOneBindingAvailable\"}(M||(M={}));function P(t){return\"function\"==typeof t?t.name:\"symbol\"==typeof t?t.toString():t}function k(t,n,e){let i=\"\";const r=e(t,n);return 0!==r.length&&(i=\"\\nRegistered bindings:\",r.forEach((t=>{let n=\"Object\";null!==t.implementationType&&(n=j(t.implementationType)),i=`${i}\\n ${n}`,t.constraint.metaData&&(i=`${i} - ${t.constraint.metaData}`)}))),i}function q(t,n){return null!==t.parentRequest&&(t.parentRequest.serviceIdentifier===n||q(t.parentRequest,n))}function F(t){t.childRequests.forEach((n=>{if(q(t,n.serviceIdentifier)){const t=function(t){const n=function t(n,e=[]){const i=P(n.serviceIdentifier);return e.push(i),null!==n.parentRequest?t(n.parentRequest,e):e}(t);return n.reverse().join(\" --\\x3e \")}(n);throw new Error(`Circular dependency found: ${t}`)}F(n)}))}function j(t){if(null!=t.name&&\"\"!==t.name)return t.name;{const n=t.toString(),e=n.match(/^function\\s*([^\\s(]+)/);return null===e?`Anonymous function: ${n}`:e[1]}}function O(t){return`{\"key\":\"${t.key.toString()}\",\"value\":\"${t.value.toString()}\"}`}class ${id;container;plan;currentRequest;constructor(t){this.id=A(),this.container=t}addPlan(t){this.plan=t}setCurrentRequest(t){this.currentRequest=t}}class V{key;value;constructor(t,n){this.key=t,this.value=n}toString(){return this.key===r?`named: ${String(this.value).toString()} `:`tagged: { key:${this.key.toString()}, value: ${String(this.value)} }`}}class W{parentContext;rootRequest;constructor(t,n){this.parentContext=t,this.rootRequest=n}}function G(n,e){const i=function(t){const n=Object.getPrototypeOf(t.prototype),e=n?.constructor;return e}(e);if(void 0===i||i===Object)return 0;const r=t(n)(i),s=r.map((t=>t.metadata.filter((t=>t.key===o)))),a=[].concat.apply([],s).length,c=r.length-a;return c>0?c:G(n,i)}class K{id;serviceIdentifier;parentContext;parentRequest;bindings;childRequests;target;requestScope;constructor(t,n,e,i,r){this.id=A(),this.serviceIdentifier=t,this.parentContext=n,this.parentRequest=e,this.target=r,this.childRequests=[],this.bindings=Array.isArray(i)?i:[i],this.requestScope=null===e?new Map:null}addChildRequest(t,n,e){const i=new K(t,this.parentContext,this,n,e);return this.childRequests.push(i),i}}function H(t){return t._bindingDictionary}function U(t,n,e,i,r){let s=z(e.container,r.serviceIdentifier),o=[];return s.length===M.NoBindingsAvailable&&!0===e.container.options.autoBindInjectable&&\"function\"==typeof r.serviceIdentifier&&t.getConstructorMetadata(r.serviceIdentifier).compilerGeneratedMetadata&&(e.container.bind(r.serviceIdentifier).toSelf(),s=z(e.container,r.serviceIdentifier)),o=n?s:s.filter((t=>{const n=new K(t.serviceIdentifier,e,i,t,r);return t.constraint(n)})),function(t,n,e,i,r){switch(n.length){case M.NoBindingsAvailable:if(i.isOptional())return n;{const n=P(t);let s=C;throw s+=function(t,n){if(n.isTagged()||n.isNamed()){let e=\"\";const i=n.getNamedTag(),r=n.getCustomTags();return null!==i&&(e+=O(i)+\"\\n\"),null!==r&&r.forEach((t=>{e+=O(t)+\"\\n\"})),` ${t}\\n ${t} - ${e}`}return` ${t}`}(n,i),s+=k(r,n,z),null!==e&&(s+=\"\\n\"+`Trying to resolve bindings for \"${P(e.serviceIdentifier)}\"`),new Error(s)}case M.OnlyOneBindingAvailable:return n;case M.MultipleBindingsAvailable:default:if(i.isArray())return n;{const n=P(t);let e=`${N} ${n}`;throw e+=k(r,n,z),new Error(e)}}}(r.serviceIdentifier,o,i,r,e.container),o}function L(t,n){const e=n.isMultiInject?d:c,i=[new V(e,t)];return void 0!==n.customTag&&i.push(new V(n.customTag.key,n.customTag.value)),!0===n.isOptional&&i.push(new V(a,!0)),i}function Y(n,e,i,r,s,o){let a,c;if(null===s){a=U(n,e,r,null,o),c=new K(i,r,null,a,o);const t=new W(r,c);r.addPlan(t)}else a=U(n,e,r,s,o),c=s.addChildRequest(o.serviceIdentifier,a,o);a.forEach((e=>{let i=null;if(o.isArray())i=c.addChildRequest(e.serviceIdentifier,e,o);else{if(null!==e.cache)return;i=c}if(e.type===b.Instance&&null!==e.implementationType){const s=function(n,e){return t(n)(e)}(n,e.implementationType);if(!0!==r.container.options.skipBaseClassChecks){const t=G(n,e.implementationType);if(s.length= than the number of constructor arguments of its base class.`;throw new Error(t)}}s.forEach((t=>{Y(n,!1,t.serviceIdentifier,r,i,t)}))}}))}function z(t,n){let e=[];const i=H(t);return i.hasKey(n)?e=i.get(n):null!==t.parent&&(e=z(t.parent,n)),e}function J(t,r,s,o,a,c=!1){const d=new $(r),u=function(t,r,s){const o=L(r,s),a=n(o);if(a.kind===e.unmanaged)throw new Error(\"Unexpected metadata when creating target\");return new i(\"\",a,t)}(s,o,a);try{return Y(t,c,o,d,null,u),d}catch(t){throw B(t)&&F(d.plan.rootRequest),t}}function Q(t){return(\"object\"==typeof t&&null!==t||\"function\"==typeof t)&&\"function\"==typeof t.then}function X(t){return!!Q(t)||Array.isArray(t)&&t.some(Q)}const Z=(t,n,e)=>{t.has(n.id)||t.set(n.id,e)},tt=(t,n)=>{t.cache=n,t.activated=!0,Q(n)&&nt(t,n)},nt=async(t,n)=>{try{const e=await n;t.cache=e}catch(n){throw t.cache=null,t.activated=!1,n}};var et;!function(t){t.DynamicValue=\"toDynamicValue\",t.Factory=\"toFactory\",t.Provider=\"toProvider\"}(et||(et={}));const it=t=>n=>(...e)=>{e.forEach((e=>{t.bind(e).toService(n)}))};function rt(t,n,e){let i;if(n.length>0){const r=function(t,n){return t.reduce(((t,e)=>{const i=n(e);return e.target.type===w.ConstructorArgument?t.constructorInjections.push(i):(t.propertyRequests.push(e),t.propertyInjections.push(i)),t.isAsync||(t.isAsync=X(i)),t}),{constructorInjections:[],isAsync:!1,propertyInjections:[],propertyRequests:[]})}(n,e),s={...r,constr:t};i=r.isAsync?async function(t){const n=await ot(t.constructorInjections),e=await ot(t.propertyInjections);return st({...t,constructorInjections:n,propertyInjections:e})}(s):st(s)}else i=new t;return i}function st(t){const n=new t.constr(...t.constructorInjections);return t.propertyRequests.forEach(((e,i)=>{const r=e.target.identifier,s=t.propertyInjections[i];e.target.isOptional()&&void 0===s||(n[r]=s)})),n}async function ot(t){const n=[];for(const e of t)Array.isArray(e)?n.push(Promise.all(e)):n.push(e);return Promise.all(n)}function at(t,n){const e=function(t,n){if(Reflect.hasMetadata(y,t)){const r=Reflect.getMetadata(y,t);try{return n[r.value]?.()}catch(n){if(n instanceof Error)throw new Error((e=t.name,i=n.message,`@postConstruct error in class ${e}: ${i}`))}}var e,i}(t,n);return Q(e)?e.then((()=>n)):n}function ct(t,n){t.scope!==v.Singleton&&function(t,n){const e=`Class cannot be instantiated in ${t.scope===v.Request?\"request\":\"transient\"} scope.`;if(\"function\"==typeof t.onDeactivation)throw new Error(R(n.name,e));if(Reflect.hasMetadata(p,n))throw new Error(`@preDestroy error in class ${n.name}: ${e}`)}(t,n)}const dt=t=>n=>{n.parentContext.setCurrentRequest(n);const e=n.bindings,i=n.childRequests,r=n.target&&n.target.isArray(),s=!(n.parentRequest&&n.parentRequest.target&&n.target&&n.parentRequest.target.matchesArray(n.target.serviceIdentifier));if(r&&s)return i.map((n=>dt(t)(n)));{if(n.target.isOptional()&&0===e.length)return;const i=e[0];return gt(t,n,i)}},ut=(t,n)=>{const e=(t=>{switch(t.type){case b.Factory:return{factory:t.factory,factoryType:et.Factory};case b.Provider:return{factory:t.provider,factoryType:et.Provider};case b.DynamicValue:return{factory:t.dynamicValue,factoryType:et.DynamicValue};default:throw new Error(`Unexpected factory type ${t.type}`)}})(t);return((t,n)=>{try{return t()}catch(t){if(B(t))throw n();throw t}})((()=>e.factory.bind(t)(n)),(()=>{return new Error((t=e.factoryType,i=n.currentRequest.serviceIdentifier.toString(),`It looks like there is a circular dependency in one of the '${t}' bindings. Please investigate bindings with service identifier '${i}'.`));var t,i}))},ht=(t,n,e)=>{let i;const r=n.childRequests;switch((t=>{let n=null;switch(t.type){case b.ConstantValue:case b.Function:n=t.cache;break;case b.Constructor:case b.Instance:n=t.implementationType;break;case b.DynamicValue:n=t.dynamicValue;break;case b.Provider:n=t.provider;break;case b.Factory:n=t.factory}if(null===n){const n=P(t.serviceIdentifier);throw new Error(`Invalid binding type: ${n}`)}})(e),e.type){case b.ConstantValue:case b.Function:i=e.cache;break;case b.Constructor:i=e.implementationType;break;case b.Instance:i=function(t,n,e,i){ct(t,n);const r=rt(n,e,i);return Q(r)?r.then((t=>at(n,t))):at(n,r)}(e,e.implementationType,r,dt(t));break;default:i=ut(e,n.parentContext)}return i},lt=(t,n,e)=>{let i=((t,n)=>n.scope===v.Singleton&&n.activated?n.cache:n.scope===v.Request&&t.has(n.id)?t.get(n.id):null)(t,n);return null!==i||(i=e(),((t,n,e)=>{n.scope===v.Singleton&&tt(n,e),n.scope===v.Request&&Z(t,n,e)})(t,n,i)),i},gt=(t,n,e)=>lt(t,e,(()=>{let i=ht(t,n,e);return i=Q(i)?i.then((t=>yt(n,e,t))):yt(n,e,i),i}));function yt(t,n,e){let i=pt(t.parentContext,n,e);const r=bt(t.parentContext.container);let s,o=r.next();do{s=o.value;const n=t.parentContext,e=t.serviceIdentifier,a=vt(s,e);i=Q(i)?_t(a,n,i):ft(a,n,i),o=r.next()}while(!0!==o.done&&!H(s).hasKey(t.serviceIdentifier));return i}const pt=(t,n,e)=>{let i;return i=\"function\"==typeof n.onActivation?n.onActivation(t,e):e,i},ft=(t,n,e)=>{let i=t.next();for(;!0!==i.done;){if(Q(e=i.value(n,e)))return _t(t,n,e);i=t.next()}return e},_t=async(t,n,e)=>{let i=await e,r=t.next();for(;!0!==r.done;)i=await r.value(n,i),r=t.next();return i},vt=(t,n)=>{const e=t._activations;return e.hasKey(n)?e.get(n).values():[].values()},bt=t=>{const n=[t];let e=t.parent;for(;null!==e;)n.push(e),e=e.parent;return{next:()=>{const t=n.pop();return void 0!==t?{done:!1,value:t}:{done:!0,value:void 0}}}};const wt=(t,n)=>{const e=t.parentRequest;return null!==e&&(!!n(e)||wt(e,n))},mt=t=>n=>{const e=e=>null!==e&&null!==e.target&&e.target.matchesTag(t)(n);return e.metaData=new V(t,n),e},At=mt(r),St=t=>n=>{let e=null;if(null!==n){if(e=n.bindings[0],\"string\"==typeof t)return e.serviceIdentifier===t;{const e=n.bindings[0].implementationType;return t===e}}return!1};class It{_binding;constructor(t){this._binding=t}when(t){return this._binding.constraint=t,new Tt(this._binding)}whenTargetNamed(t){return this._binding.constraint=At(t),new Tt(this._binding)}whenTargetIsDefault(){return this._binding.constraint=t=>{if(null===t)return!1;return null!==t.target&&!t.target.isNamed()&&!t.target.isTagged()},new Tt(this._binding)}whenTargetTagged(t,n){return this._binding.constraint=mt(t)(n),new Tt(this._binding)}whenInjectedInto(t){return this._binding.constraint=n=>null!==n&&St(t)(n.parentRequest),new Tt(this._binding)}whenParentNamed(t){return this._binding.constraint=n=>null!==n&&At(t)(n.parentRequest),new Tt(this._binding)}whenParentTagged(t,n){return this._binding.constraint=e=>null!==e&&mt(t)(n)(e.parentRequest),new Tt(this._binding)}whenAnyAncestorIs(t){return this._binding.constraint=n=>null!==n&&wt(n,St(t)),new Tt(this._binding)}whenNoAncestorIs(t){return this._binding.constraint=n=>null!==n&&!wt(n,St(t)),new Tt(this._binding)}whenAnyAncestorNamed(t){return this._binding.constraint=n=>null!==n&&wt(n,At(t)),new Tt(this._binding)}whenNoAncestorNamed(t){return this._binding.constraint=n=>null!==n&&!wt(n,At(t)),new Tt(this._binding)}whenAnyAncestorTagged(t,n){return this._binding.constraint=e=>null!==e&&wt(e,mt(t)(n)),new Tt(this._binding)}whenNoAncestorTagged(t,n){return this._binding.constraint=e=>null!==e&&!wt(e,mt(t)(n)),new Tt(this._binding)}whenAnyAncestorMatches(t){return this._binding.constraint=n=>null!==n&&wt(n,t),new Tt(this._binding)}whenNoAncestorMatches(t){return this._binding.constraint=n=>null!==n&&!wt(n,t),new Tt(this._binding)}}class Tt{_binding;constructor(t){this._binding=t}onActivation(t){return this._binding.onActivation=t,new It(this._binding)}onDeactivation(t){return this._binding.onDeactivation=t,new It(this._binding)}}class Dt{_bindingWhenSyntax;_bindingOnSyntax;_binding;constructor(t){this._binding=t,this._bindingWhenSyntax=new It(this._binding),this._bindingOnSyntax=new Tt(this._binding)}when(t){return this._bindingWhenSyntax.when(t)}whenTargetNamed(t){return this._bindingWhenSyntax.whenTargetNamed(t)}whenTargetIsDefault(){return this._bindingWhenSyntax.whenTargetIsDefault()}whenTargetTagged(t,n){return this._bindingWhenSyntax.whenTargetTagged(t,n)}whenInjectedInto(t){return this._bindingWhenSyntax.whenInjectedInto(t)}whenParentNamed(t){return this._bindingWhenSyntax.whenParentNamed(t)}whenParentTagged(t,n){return this._bindingWhenSyntax.whenParentTagged(t,n)}whenAnyAncestorIs(t){return this._bindingWhenSyntax.whenAnyAncestorIs(t)}whenNoAncestorIs(t){return this._bindingWhenSyntax.whenNoAncestorIs(t)}whenAnyAncestorNamed(t){return this._bindingWhenSyntax.whenAnyAncestorNamed(t)}whenAnyAncestorTagged(t,n){return this._bindingWhenSyntax.whenAnyAncestorTagged(t,n)}whenNoAncestorNamed(t){return this._bindingWhenSyntax.whenNoAncestorNamed(t)}whenNoAncestorTagged(t,n){return this._bindingWhenSyntax.whenNoAncestorTagged(t,n)}whenAnyAncestorMatches(t){return this._bindingWhenSyntax.whenAnyAncestorMatches(t)}whenNoAncestorMatches(t){return this._bindingWhenSyntax.whenNoAncestorMatches(t)}onActivation(t){return this._bindingOnSyntax.onActivation(t)}onDeactivation(t){return this._bindingOnSyntax.onDeactivation(t)}}class Nt{_binding;constructor(t){this._binding=t}inRequestScope(){return this._binding.scope=v.Request,new Dt(this._binding)}inSingletonScope(){return this._binding.scope=v.Singleton,new Dt(this._binding)}inTransientScope(){return this._binding.scope=v.Transient,new Dt(this._binding)}}class Ct{_bindingInSyntax;_bindingWhenSyntax;_bindingOnSyntax;_binding;constructor(t){this._binding=t,this._bindingWhenSyntax=new It(this._binding),this._bindingOnSyntax=new Tt(this._binding),this._bindingInSyntax=new Nt(t)}inRequestScope(){return this._bindingInSyntax.inRequestScope()}inSingletonScope(){return this._bindingInSyntax.inSingletonScope()}inTransientScope(){return this._bindingInSyntax.inTransientScope()}when(t){return this._bindingWhenSyntax.when(t)}whenTargetNamed(t){return this._bindingWhenSyntax.whenTargetNamed(t)}whenTargetIsDefault(){return this._bindingWhenSyntax.whenTargetIsDefault()}whenTargetTagged(t,n){return this._bindingWhenSyntax.whenTargetTagged(t,n)}whenInjectedInto(t){return this._bindingWhenSyntax.whenInjectedInto(t)}whenParentNamed(t){return this._bindingWhenSyntax.whenParentNamed(t)}whenParentTagged(t,n){return this._bindingWhenSyntax.whenParentTagged(t,n)}whenAnyAncestorIs(t){return this._bindingWhenSyntax.whenAnyAncestorIs(t)}whenNoAncestorIs(t){return this._bindingWhenSyntax.whenNoAncestorIs(t)}whenAnyAncestorNamed(t){return this._bindingWhenSyntax.whenAnyAncestorNamed(t)}whenAnyAncestorTagged(t,n){return this._bindingWhenSyntax.whenAnyAncestorTagged(t,n)}whenNoAncestorNamed(t){return this._bindingWhenSyntax.whenNoAncestorNamed(t)}whenNoAncestorTagged(t,n){return this._bindingWhenSyntax.whenNoAncestorTagged(t,n)}whenAnyAncestorMatches(t){return this._bindingWhenSyntax.whenAnyAncestorMatches(t)}whenNoAncestorMatches(t){return this._bindingWhenSyntax.whenNoAncestorMatches(t)}onActivation(t){return this._bindingOnSyntax.onActivation(t)}onDeactivation(t){return this._bindingOnSyntax.onDeactivation(t)}}class xt{_binding;constructor(t){this._binding=t}to(t){return this._binding.type=b.Instance,this._binding.implementationType=t,new Ct(this._binding)}toSelf(){if(\"function\"!=typeof this._binding.serviceIdentifier)throw new Error(\"The toSelf function can only be applied when a constructor is used as service identifier\");const t=this._binding.serviceIdentifier;return this.to(t)}toConstantValue(t){return this._binding.type=b.ConstantValue,this._binding.cache=t,this._binding.dynamicValue=null,this._binding.implementationType=null,this._binding.scope=v.Singleton,new Dt(this._binding)}toDynamicValue(t){return this._binding.type=b.DynamicValue,this._binding.cache=null,this._binding.dynamicValue=t,this._binding.implementationType=null,new Ct(this._binding)}toConstructor(t){return this._binding.type=b.Constructor,this._binding.implementationType=t,this._binding.scope=v.Singleton,new Dt(this._binding)}toFactory(t){return this._binding.type=b.Factory,this._binding.factory=t,this._binding.scope=v.Singleton,new Dt(this._binding)}toFunction(t){if(\"function\"!=typeof t)throw new Error(\"Value provided to function binding must be a function!\");const n=this.toConstantValue(t);return this._binding.type=b.Function,this._binding.scope=v.Singleton,n}toAutoFactory(t){return this._binding.type=b.Factory,this._binding.factory=n=>()=>n.container.get(t),this._binding.scope=v.Singleton,new Dt(this._binding)}toAutoNamedFactory(t){return this._binding.type=b.Factory,this._binding.factory=n=>e=>n.container.getNamed(t,e),new Dt(this._binding)}toProvider(t){return this._binding.type=b.Provider,this._binding.provider=t,this._binding.scope=v.Singleton,new Dt(this._binding)}toService(t){this._binding.type=b.DynamicValue,Object.defineProperty(this._binding,\"cache\",{configurable:!0,enumerable:!0,get:()=>null,set(t){}}),this._binding.dynamicValue=n=>{try{return n.container.get(t)}catch(e){return n.container.getAsync(t)}},this._binding.implementationType=null}}class Rt{bindings;activations;deactivations;middleware;moduleActivationStore;static of(t,n,e,i,r){const s=new Rt;return s.bindings=t,s.middleware=n,s.deactivations=i,s.activations=e,s.moduleActivationStore=r,s}}class Et{_map;constructor(){this._map=new Map}getMap(){return this._map}add(t,n){if(this._checkNonNulish(t),null==n)throw new Error(T);const e=this._map.get(t);void 0!==e?e.push(n):this._map.set(t,[n])}get(t){this._checkNonNulish(t);const n=this._map.get(t);if(void 0!==n)return n;throw new Error(D)}remove(t){if(this._checkNonNulish(t),!this._map.delete(t))throw new Error(D)}removeIntersection(t){this.traverse(((n,e)=>{const i=t.hasKey(n)?t.get(n):void 0;if(void 0!==i){const t=e.filter((t=>!i.some((n=>t===n))));this._setValue(n,t)}}))}removeByCondition(t){const n=[];return this._map.forEach(((e,i)=>{const r=[];for(const i of e){t(i)?n.push(i):r.push(i)}this._setValue(i,r)})),n}hasKey(t){return this._checkNonNulish(t),this._map.has(t)}clone(){const t=new Et;return this._map.forEach(((n,e)=>{n.forEach((n=>{var i;t.add(e,\"object\"==typeof(i=n)&&null!==i&&\"clone\"in i&&\"function\"==typeof i.clone?n.clone():n)}))})),t}traverse(t){this._map.forEach(((n,e)=>{t(e,n)}))}_checkNonNulish(t){if(null==t)throw new Error(T)}_setValue(t,n){n.length>0?this._map.set(t,n):this._map.delete(t)}}class Mt{_map=new Map;remove(t){const n=this._map.get(t);return void 0===n?this._getEmptyHandlersStore():(this._map.delete(t),n)}addDeactivation(t,n,e){this._getModuleActivationHandlers(t).onDeactivations.add(n,e)}addActivation(t,n,e){this._getModuleActivationHandlers(t).onActivations.add(n,e)}clone(){const t=new Mt;return this._map.forEach(((n,e)=>{t._map.set(e,{onActivations:n.onActivations.clone(),onDeactivations:n.onDeactivations.clone()})})),t}_getModuleActivationHandlers(t){let n=this._map.get(t);return void 0===n&&(n=this._getEmptyHandlersStore(),this._map.set(t,n)),n}_getEmptyHandlersStore(){return{onActivations:new Et,onDeactivations:new Et}}}class Bt{id;parent;options;_middleware;_bindingDictionary;_activations;_deactivations;_snapshots;_metadataReader;_moduleActivationStore;constructor(t){const n=t||{};if(\"object\"!=typeof n)throw new Error(\"Invalid Container constructor argument. Container options must be an object.\");if(void 0===n.defaultScope)n.defaultScope=v.Transient;else if(n.defaultScope!==v.Singleton&&n.defaultScope!==v.Transient&&n.defaultScope!==v.Request)throw new Error('Invalid Container option. Default scope must be a string (\"singleton\" or \"transient\").');if(void 0===n.autoBindInjectable)n.autoBindInjectable=!1;else if(\"boolean\"!=typeof n.autoBindInjectable)throw new Error(\"Invalid Container option. Auto bind injectable must be a boolean\");if(void 0===n.skipBaseClassChecks)n.skipBaseClassChecks=!1;else if(\"boolean\"!=typeof n.skipBaseClassChecks)throw new Error(\"Invalid Container option. Skip base check must be a boolean\");this.options={autoBindInjectable:n.autoBindInjectable,defaultScope:n.defaultScope,skipBaseClassChecks:n.skipBaseClassChecks},this.id=A(),this._bindingDictionary=new Et,this._snapshots=[],this._middleware=null,this._activations=new Et,this._deactivations=new Et,this.parent=null,this._metadataReader=new E,this._moduleActivationStore=new Mt}static merge(t,n,...e){const i=new Bt,r=[t,n,...e].map((t=>H(t))),s=H(i);return r.forEach((t=>{var n;n=s,t.traverse(((t,e)=>{e.forEach((t=>{n.add(t.serviceIdentifier,t.clone())}))}))})),i}load(...t){const n=this._getContainerModuleHelpersFactory();for(const e of t){const t=n(e.id);e.registry(t.bindFunction,t.unbindFunction,t.isboundFunction,t.rebindFunction,t.unbindAsyncFunction,t.onActivationFunction,t.onDeactivationFunction)}}async loadAsync(...t){const n=this._getContainerModuleHelpersFactory();for(const e of t){const t=n(e.id);await e.registry(t.bindFunction,t.unbindFunction,t.isboundFunction,t.rebindFunction,t.unbindAsyncFunction,t.onActivationFunction,t.onDeactivationFunction)}}unload(...t){t.forEach((t=>{const n=this._removeModuleBindings(t.id);this._deactivateSingletons(n),this._removeModuleHandlers(t.id)}))}async unloadAsync(...t){for(const n of t){const t=this._removeModuleBindings(n.id);await this._deactivateSingletonsAsync(t),this._removeModuleHandlers(n.id)}}bind(t){return this._bind(this._buildBinding(t))}rebind(t){return this.unbind(t),this.bind(t)}async rebindAsync(t){return await this.unbindAsync(t),this.bind(t)}unbind(t){if(this._bindingDictionary.hasKey(t)){const n=this._bindingDictionary.get(t);this._deactivateSingletons(n)}this._removeServiceFromDictionary(t)}async unbindAsync(t){if(this._bindingDictionary.hasKey(t)){const n=this._bindingDictionary.get(t);await this._deactivateSingletonsAsync(n)}this._removeServiceFromDictionary(t)}unbindAll(){this._bindingDictionary.traverse(((t,n)=>{this._deactivateSingletons(n)})),this._bindingDictionary=new Et}async unbindAllAsync(){const t=[];this._bindingDictionary.traverse(((n,e)=>{t.push(this._deactivateSingletonsAsync(e))})),await Promise.all(t),this._bindingDictionary=new Et}onActivation(t,n){this._activations.add(t,n)}onDeactivation(t,n){this._deactivations.add(t,n)}isBound(t){let n=this._bindingDictionary.hasKey(t);return!n&&this.parent&&(n=this.parent.isBound(t)),n}isCurrentBound(t){return this._bindingDictionary.hasKey(t)}isBoundNamed(t,n){return this.isBoundTagged(t,r,n)}isBoundTagged(t,r,s){let o=!1;if(this._bindingDictionary.hasKey(t)){const a=this._bindingDictionary.get(t),c=function(t,r,s){const o=L(r,s),a=n(o);if(a.kind===e.unmanaged)throw new Error(\"Unexpected metadata when creating target\");const c=new i(\"\",a,\"Variable\"),d=new $(t);return new K(r,d,null,[],c)}(this,t,{customTag:{key:r,value:s},isMultiInject:!1});o=a.some((t=>t.constraint(c)))}return!o&&this.parent&&(o=this.parent.isBoundTagged(t,r,s)),o}snapshot(){this._snapshots.push(Rt.of(this._bindingDictionary.clone(),this._middleware,this._activations.clone(),this._deactivations.clone(),this._moduleActivationStore.clone()))}restore(){const t=this._snapshots.pop();if(void 0===t)throw new Error(\"No snapshot available to restore.\");this._bindingDictionary=t.bindings,this._activations=t.activations,this._deactivations=t.deactivations,this._middleware=t.middleware,this._moduleActivationStore=t.moduleActivationStore}createChild(t){const n=new Bt(t||this.options);return n.parent=this,n}applyMiddleware(...t){const n=this._middleware?this._middleware:this._planAndResolve();this._middleware=t.reduce(((t,n)=>n(t)),n)}applyCustomMetadataReader(t){this._metadataReader=t}get(t){const n=this._getNotAllArgs(t,!1,!1);return this._getButThrowIfAsync(n)}async getAsync(t){const n=this._getNotAllArgs(t,!1,!1);return this._get(n)}getTagged(t,n,e){const i=this._getNotAllArgs(t,!1,!1,n,e);return this._getButThrowIfAsync(i)}async getTaggedAsync(t,n,e){const i=this._getNotAllArgs(t,!1,!1,n,e);return this._get(i)}getNamed(t,n){return this.getTagged(t,r,n)}async getNamedAsync(t,n){return this.getTaggedAsync(t,r,n)}getAll(t,n){const e=this._getAllArgs(t,n,!1);return this._getButThrowIfAsync(e)}async getAllAsync(t,n){const e=this._getAllArgs(t,n,!1);return this._getAll(e)}getAllTagged(t,n,e){const i=this._getNotAllArgs(t,!0,!1,n,e);return this._getButThrowIfAsync(i)}async getAllTaggedAsync(t,n,e){const i=this._getNotAllArgs(t,!0,!1,n,e);return this._getAll(i)}getAllNamed(t,n){return this.getAllTagged(t,r,n)}async getAllNamedAsync(t,n){return this.getAllTaggedAsync(t,r,n)}resolve(t){const n=this.isBound(t);n||this.bind(t).toSelf();const e=this.get(t);return n||this.unbind(t),e}tryGet(t){const n=this._getNotAllArgs(t,!1,!0);return this._getButThrowIfAsync(n)}async tryGetAsync(t){const n=this._getNotAllArgs(t,!1,!0);return this._get(n)}tryGetTagged(t,n,e){const i=this._getNotAllArgs(t,!1,!0,n,e);return this._getButThrowIfAsync(i)}async tryGetTaggedAsync(t,n,e){const i=this._getNotAllArgs(t,!1,!0,n,e);return this._get(i)}tryGetNamed(t,n){return this.tryGetTagged(t,r,n)}async tryGetNamedAsync(t,n){return this.tryGetTaggedAsync(t,r,n)}tryGetAll(t,n){const e=this._getAllArgs(t,n,!0);return this._getButThrowIfAsync(e)}async tryGetAllAsync(t,n){const e=this._getAllArgs(t,n,!0);return this._getAll(e)}tryGetAllTagged(t,n,e){const i=this._getNotAllArgs(t,!0,!0,n,e);return this._getButThrowIfAsync(i)}async tryGetAllTaggedAsync(t,n,e){const i=this._getNotAllArgs(t,!0,!0,n,e);return this._getAll(i)}tryGetAllNamed(t,n){return this.tryGetAllTagged(t,r,n)}async tryGetAllNamedAsync(t,n){return this.tryGetAllTaggedAsync(t,r,n)}_preDestroy(t,n){if(void 0!==t&&Reflect.hasMetadata(p,t)){const e=Reflect.getMetadata(p,t);return n[e.value]?.()}}_removeModuleHandlers(t){const n=this._moduleActivationStore.remove(t);this._activations.removeIntersection(n.onActivations),this._deactivations.removeIntersection(n.onDeactivations)}_removeModuleBindings(t){return this._bindingDictionary.removeByCondition((n=>n.moduleId===t))}_deactivate(t,n){const e=null==n?void 0:Object.getPrototypeOf(n).constructor;try{if(this._deactivations.hasKey(t.serviceIdentifier)){const i=this._deactivateContainer(n,this._deactivations.get(t.serviceIdentifier).values());if(Q(i))return this._handleDeactivationError(i.then((async()=>this._propagateContainerDeactivationThenBindingAndPreDestroyAsync(t,n,e))),t.serviceIdentifier)}const i=this._propagateContainerDeactivationThenBindingAndPreDestroy(t,n,e);if(Q(i))return this._handleDeactivationError(i,t.serviceIdentifier)}catch(n){if(n instanceof Error)throw new Error(R(P(t.serviceIdentifier),n.message))}}async _handleDeactivationError(t,n){try{await t}catch(t){if(t instanceof Error)throw new Error(R(P(n),t.message))}}_deactivateContainer(t,n){let e=n.next();for(;\"function\"==typeof e.value;){const i=e.value(t);if(Q(i))return i.then((async()=>this._deactivateContainerAsync(t,n)));e=n.next()}}async _deactivateContainerAsync(t,n){let e=n.next();for(;\"function\"==typeof e.value;)await e.value(t),e=n.next()}_getContainerModuleHelpersFactory(){const t=t=>n=>{const e=this._buildBinding(n);return e.moduleId=t,this._bind(e)},n=()=>t=>{this.unbind(t)},e=()=>async t=>this.unbindAsync(t),i=()=>t=>this.isBound(t),r=n=>{const e=t(n);return t=>(this.unbind(t),e(t))},s=t=>(n,e)=>{this._moduleActivationStore.addActivation(t,n,e),this.onActivation(n,e)},o=t=>(n,e)=>{this._moduleActivationStore.addDeactivation(t,n,e),this.onDeactivation(n,e)};return a=>({bindFunction:t(a),isboundFunction:i(),onActivationFunction:s(a),onDeactivationFunction:o(a),rebindFunction:r(a),unbindAsyncFunction:e(),unbindFunction:n()})}_bind(t){return this._bindingDictionary.add(t.serviceIdentifier,t),new xt(t)}_buildBinding(t){const n=this.options.defaultScope||v.Transient;return new S(t,n)}async _getAll(t){return Promise.all(this._get(t))}_get(t){const n={...t,contextInterceptor:t=>t,targetType:w.Variable};if(this._middleware){const t=this._middleware(n);if(null==t)throw new Error(\"Invalid return type in middleware. Middleware must return!\");return t}return this._planAndResolve()(n)}_getButThrowIfAsync(t){const n=this._get(t);if(X(n))throw new Error(`You are attempting to construct ${function(t){return\"function\"==typeof t?`[function/class ${t.name||\"\"}]`:\"symbol\"==typeof t?t.toString():`'${t}'`}(t.serviceIdentifier)} in a synchronous way but it has asynchronous dependencies.`);return n}_getAllArgs(t,n,e){return{avoidConstraints:!n?.enforceBindingConstraints,isMultiInject:!0,isOptional:e,serviceIdentifier:t}}_getNotAllArgs(t,n,e,i,r){return{avoidConstraints:!1,isMultiInject:n,isOptional:e,key:i,serviceIdentifier:t,value:r}}_getPlanMetadataFromNextArgs(t){const n={isMultiInject:t.isMultiInject};return void 0!==t.key&&(n.customTag={key:t.key,value:t.value}),!0===t.isOptional&&(n.isOptional=!0),n}_planAndResolve(){return t=>{let n=J(this._metadataReader,this,t.targetType,t.serviceIdentifier,this._getPlanMetadataFromNextArgs(t),t.avoidConstraints);n=t.contextInterceptor(n);const e=function(t){return dt(t.plan.rootRequest.requestScope)(t.plan.rootRequest)}(n);return e}}_deactivateIfSingleton(t){if(t.activated)return Q(t.cache)?t.cache.then((n=>this._deactivate(t,n))):this._deactivate(t,t.cache)}_deactivateSingletons(t){for(const n of t){if(Q(this._deactivateIfSingleton(n)))throw new Error(\"Attempting to unbind dependency with asynchronous destruction (@preDestroy or onDeactivation)\")}}async _deactivateSingletonsAsync(t){await Promise.all(t.map((async t=>this._deactivateIfSingleton(t))))}_propagateContainerDeactivationThenBindingAndPreDestroy(t,n,e){return this.parent?this._deactivate.bind(this.parent)(t,n):this._bindingDeactivationAndPreDestroy(t,n,e)}async _propagateContainerDeactivationThenBindingAndPreDestroyAsync(t,n,e){this.parent?await this._deactivate.bind(this.parent)(t,n):await this._bindingDeactivationAndPreDestroyAsync(t,n,e)}_removeServiceFromDictionary(t){try{this._bindingDictionary.remove(t)}catch(n){throw new Error(`Could not unbind serviceIdentifier: ${P(t)}`)}}_bindingDeactivationAndPreDestroy(t,n,e){if(\"function\"==typeof t.onDeactivation){const i=t.onDeactivation(n);if(Q(i))return i.then((()=>this._preDestroy(e,n)))}return this._preDestroy(e,n)}async _bindingDeactivationAndPreDestroyAsync(t,n,e){\"function\"==typeof t.onDeactivation&&await t.onDeactivation(n),await this._preDestroy(e,n)}}class Pt{id;registry;constructor(t){this.id=A(),this.registry=t}}class kt{id;registry;constructor(t){this.id=A(),this.registry=t}}function qt(t,n,e,i){!function(t){if(void 0!==t)throw new Error(x)}(n),jt(u,t,e.toString(),i)}function Ft(t){let n=[];if(Array.isArray(t)){n=t;const e=function(t){const n=new Set;for(const e of t){if(n.has(e))return e;n.add(e)}}(n.map((t=>t.key)));if(void 0!==e)throw new Error(`${I} ${e.toString()}`)}else n=[t];return n}function jt(t,n,e,i){const r=Ft(i);let s={};Reflect.hasOwnMetadata(t,n)&&(s=Reflect.getMetadata(t,n));let o=s[e];if(void 0===o)o=[];else for(const t of o)if(r.some((n=>n.key===t.key)))throw new Error(`${I} ${t.key.toString()}`);o.push(...r),s[e]=o,Reflect.defineMetadata(t,s,n)}function Ot(t){return(n,e,i)=>{\"number\"==typeof i?qt(n,e,i,t):function(t,n,e){if(void 0!==t.prototype)throw new Error(x);jt(h,t.constructor,n,e)}(n,e,t)}}function $t(t,n){Reflect.decorate(t,n)}function Vt(t,n){return function(e,i){n(e,i,t)}}function Wt(t,n,e){\"number\"==typeof e?$t([Vt(e,t)],n):\"string\"==typeof e?Reflect.decorate([t],n,e):$t([t],n)}function Gt(){return function(t){if(Reflect.hasOwnMetadata(l,t))throw new Error(\"Cannot apply @injectable decorator multiple times.\");const n=Reflect.getMetadata(g,t)||[];return Reflect.defineMetadata(l,n,t),t}}function Kt(t,n){return Ot(new V(t,n))}function Ht(t){return Ot(new V(r,t))}function Ut(t){return n=>(e,i,r)=>{if(void 0===n){const t=\"function\"==typeof e?e.name:e.constructor.name;throw new Error(`@inject called with undefined this could mean that the class ${t} has a circular dependency problem. You can use a LazyServiceIdentifer to overcome this limitation.`)}Ot(new V(t,n))(e,i,r)}}const Lt=Ut(c);function Yt(){return Ot(new V(a,!0))}function zt(){return function(t,n,e){qt(t,n,e,new V(o,!0))}}const Jt=Ut(d);function Qt(t){return function(n,e,i){qt(n,e,i,new V(s,t))}}function Xt(t,n){return()=>(e,i)=>{const r=new V(t,i);if(Reflect.hasOwnMetadata(t,e.constructor))throw new Error(n);Reflect.defineMetadata(t,r,e.constructor)}}const Zt=Xt(y,\"Cannot apply @postConstruct decorator multiple times in the same class\"),tn=Xt(p,\"Cannot apply @preDestroy decorator multiple times in the same class\"),nn=_;export{kt as AsyncContainerModule,v as BindingScopeEnum,b as BindingTypeEnum,Bt as Container,Pt as ContainerModule,nn as METADATA_KEY,E as MetadataReader,w as TargetTypeEnum,Ot as createTaggedDecorator,Wt as decorate,P as getServiceIdentifierAsString,A as id,Lt as inject,Gt as injectable,it as multiBindToService,Jt as multiInject,Ht as named,At as namedConstraint,Yt as optional,Zt as postConstruct,tn as preDestroy,Kt as tagged,mt as taggedConstraint,Qt as targetName,wt as traverseAncerstors,St as typeConstraint,zt as unmanaged};\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.8.4\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","/*!\n * shared v9.14.2\n * (c) 2024 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst inBrowser = typeof window !== 'undefined';\nlet mark;\nlet measure;\nif ((process.env.NODE_ENV !== 'production')) {\n const perf = inBrowser && window.performance;\n if (perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n // @ts-ignore browser compat\n perf.clearMeasures) {\n mark = (tag) => {\n perf.mark(tag);\n };\n measure = (name, startTag, endTag) => {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n };\n }\n}\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n if (args.length === 1 && isObject(args[0])) {\n args = args[0];\n }\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n return message.replace(RE_ARGS, (match, identifier) => {\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\n });\n}\nconst makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n .replace(/\\u0027/g, '\\\\u0027');\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\nconst assign = Object.assign;\nconst _create = Object.create;\nconst create = (obj = null) => _create(obj);\nlet _globalThis;\nconst getGlobalThis = () => {\n // prettier-ignore\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : create()));\n};\nfunction escapeHtml(rawText) {\n return rawText\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/* eslint-enable */\n/**\n * Useful Utilities By Evan you\n * Modified by kazuya kawaguchi\n * MIT License\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\n */\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isBoolean = (val) => typeof val === 'boolean';\nconst isSymbol = (val) => typeof val === 'symbol';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst isPlainObject = (val) => {\n if (!isObject(val))\n return false;\n const proto = Object.getPrototypeOf(val);\n return proto === null || proto.constructor === Object;\n};\n// for converting list and named values to displayed strings.\nconst toDisplayString = (val) => {\n return val == null\n ? ''\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\n ? JSON.stringify(val, null, 2)\n : String(val);\n};\nfunction join(items, separator = '') {\n return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\nconst RANGE = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n const lines = source.split(/\\r?\\n/);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\n const lineLength = lines[j].length;\n if (j === i) {\n // push underline\n const pad = start - (count - lineLength) + 1;\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + 1;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\nfunction incrementer(code) {\n let current = code;\n return () => ++current;\n}\n\nfunction warn(msg, err) {\n if (typeof console !== 'undefined') {\n console.warn(`[intlify] ` + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\nconst hasWarned = {};\nfunction warnOnce(msg) {\n if (!hasWarned[msg]) {\n hasWarned[msg] = true;\n warn(msg);\n }\n}\n\n/**\n * Event emitter, forked from the below:\n * - original repository url: https://github.com/developit/mitt\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\n * - author: Jason Miller (https://github.com/developit)\n * - license: MIT\n */\n/**\n * Create a event emitter\n *\n * @returns An event emitter\n */\nfunction createEmitter() {\n const events = new Map();\n const emitter = {\n events,\n on(event, handler) {\n const handlers = events.get(event);\n const added = handlers && handlers.push(handler);\n if (!added) {\n events.set(event, [handler]);\n }\n },\n off(event, handler) {\n const handlers = events.get(event);\n if (handlers) {\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n },\n emit(event, payload) {\n (events.get(event) || [])\n .slice()\n .map(handler => handler(payload));\n (events.get('*') || [])\n .slice()\n .map(handler => handler(event, payload));\n }\n };\n return emitter;\n}\n\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction deepCopy(src, des) {\n // src and des should both be objects, and none of them can be a array\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\n throw new Error('Invalid value');\n }\n const stack = [{ src, des }];\n while (stack.length) {\n const { src, des } = stack.pop();\n // using `Object.keys` which skips prototype properties\n Object.keys(src).forEach(key => {\n if (key === '__proto__') {\n return;\n }\n // if src[key] is an object/array, set des[key]\n // to empty object/array to prevent setting by reference\n if (isObject(src[key]) && !isObject(des[key])) {\n des[key] = Array.isArray(src[key]) ? [] : create();\n }\n if (isNotObjectOrIsArray(des[key]) || isNotObjectOrIsArray(src[key])) {\n // replace with src[key] when:\n // src[key] or des[key] is not an object, or\n // src[key] or des[key] is an array\n des[key] = src[key];\n }\n else {\n // src[key] and des[key] are both objects, merge them\n stack.push({ src: src[key], des: des[key] });\n }\n });\n }\n}\n\nexport { assign, create, createEmitter, deepCopy, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, incrementer, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, join, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn, warnOnce };\n","/*!\n * message-compiler v9.14.2\n * (c) 2024 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst LOCATION_STUB = {\n start: { line: 1, column: 1, offset: 0 },\n end: { line: 1, column: 1, offset: 0 }\n};\nfunction createPosition(line, column, offset) {\n return { line, column, offset };\n}\nfunction createLocation(start, end, source) {\n const loc = { start, end };\n if (source != null) {\n loc.source = source;\n }\n return loc;\n}\n\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n if (args.length === 1 && isObject(args[0])) {\n args = args[0];\n }\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n return message.replace(RE_ARGS, (match, identifier) => {\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\n });\n}\nconst assign = Object.assign;\nconst isString = (val) => typeof val === 'string';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\nfunction join(items, separator = '') {\n return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\n\nconst CompileWarnCodes = {\n USE_MODULO_SYNTAX: 1,\n __EXTEND_POINT__: 2\n};\n/** @internal */\nconst warnMessages = {\n [CompileWarnCodes.USE_MODULO_SYNTAX]: `Use modulo before '{{0}}'.`\n};\nfunction createCompileWarn(code, loc, ...args) {\n const msg = format(warnMessages[code] || '', ...(args || [])) ;\n const message = { message: String(msg), code };\n if (loc) {\n message.location = loc;\n }\n return message;\n}\n\nconst CompileErrorCodes = {\n // tokenizer error codes\n EXPECTED_TOKEN: 1,\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\n UNKNOWN_ESCAPE_SEQUENCE: 4,\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\n UNBALANCED_CLOSING_BRACE: 6,\n UNTERMINATED_CLOSING_BRACE: 7,\n EMPTY_PLACEHOLDER: 8,\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\n INVALID_LINKED_FORMAT: 10,\n // parser error codes\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\n // generator error codes\n UNHANDLED_CODEGEN_NODE_TYPE: 15,\n // minifier error codes\n UNHANDLED_MINIFIER_NODE_TYPE: 16,\n // Special value for higher-order compilers to pick up the last code\n // to avoid collision of error codes. This should always be kept as the last\n // item.\n __EXTEND_POINT__: 17\n};\n/** @internal */\nconst errorMessages = {\n // tokenizer error messages\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\n // parser error messages\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,\n // generator error messages\n [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,\n // minimizer error messages\n [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`\n};\nfunction createCompileError(code, loc, options = {}) {\n const { domain, messages, args } = options;\n const msg = format((messages || errorMessages)[code] || '', ...(args || []))\n ;\n const error = new SyntaxError(String(msg));\n error.code = code;\n if (loc) {\n error.location = loc;\n }\n error.domain = domain;\n return error;\n}\n/** @internal */\nfunction defaultOnError(error) {\n throw error;\n}\n\n// eslint-disable-next-line no-useless-escape\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nconst detectHtmlTag = (source) => RE_HTML_TAG.test(source);\n\nconst CHAR_SP = ' ';\nconst CHAR_CR = '\\r';\nconst CHAR_LF = '\\n';\nconst CHAR_LS = String.fromCharCode(0x2028);\nconst CHAR_PS = String.fromCharCode(0x2029);\nfunction createScanner(str) {\n const _buf = str;\n let _index = 0;\n let _line = 1;\n let _column = 1;\n let _peekOffset = 0;\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\n const isLF = (index) => _buf[index] === CHAR_LF;\n const isPS = (index) => _buf[index] === CHAR_PS;\n const isLS = (index) => _buf[index] === CHAR_LS;\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\n const index = () => _index;\n const line = () => _line;\n const column = () => _column;\n const peekOffset = () => _peekOffset;\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\n const currentChar = () => charAt(_index);\n const currentPeek = () => charAt(_index + _peekOffset);\n function next() {\n _peekOffset = 0;\n if (isLineEnd(_index)) {\n _line++;\n _column = 0;\n }\n if (isCRLF(_index)) {\n _index++;\n }\n _index++;\n _column++;\n return _buf[_index];\n }\n function peek() {\n if (isCRLF(_index + _peekOffset)) {\n _peekOffset++;\n }\n _peekOffset++;\n return _buf[_index + _peekOffset];\n }\n function reset() {\n _index = 0;\n _line = 1;\n _column = 1;\n _peekOffset = 0;\n }\n function resetPeek(offset = 0) {\n _peekOffset = offset;\n }\n function skipToPeek() {\n const target = _index + _peekOffset;\n // eslint-disable-next-line no-unmodified-loop-condition\n while (target !== _index) {\n next();\n }\n _peekOffset = 0;\n }\n return {\n index,\n line,\n column,\n peekOffset,\n charAt,\n currentChar,\n currentPeek,\n next,\n peek,\n reset,\n resetPeek,\n skipToPeek\n };\n}\n\nconst EOF = undefined;\nconst DOT = '.';\nconst LITERAL_DELIMITER = \"'\";\nconst ERROR_DOMAIN$3 = 'tokenizer';\nfunction createTokenizer(source, options = {}) {\n const location = options.location !== false;\n const _scnr = createScanner(source);\n const currentOffset = () => _scnr.index();\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\n const _initLoc = currentPosition();\n const _initOffset = currentOffset();\n const _context = {\n currentType: 14 /* TokenTypes.EOF */,\n offset: _initOffset,\n startLoc: _initLoc,\n endLoc: _initLoc,\n lastType: 14 /* TokenTypes.EOF */,\n lastOffset: _initOffset,\n lastStartLoc: _initLoc,\n lastEndLoc: _initLoc,\n braceNest: 0,\n inLinked: false,\n text: ''\n };\n const context = () => _context;\n const { onError } = options;\n function emitError(code, pos, offset, ...args) {\n const ctx = context();\n pos.column += offset;\n pos.offset += offset;\n if (onError) {\n const loc = location ? createLocation(ctx.startLoc, pos) : null;\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$3,\n args\n });\n onError(err);\n }\n }\n function getToken(context, type, value) {\n context.endLoc = currentPosition();\n context.currentType = type;\n const token = { type };\n if (location) {\n token.loc = createLocation(context.startLoc, context.endLoc);\n }\n if (value != null) {\n token.value = value;\n }\n return token;\n }\n const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */);\n function eat(scnr, ch) {\n if (scnr.currentChar() === ch) {\n scnr.next();\n return ch;\n }\n else {\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n return '';\n }\n }\n function peekSpaces(scnr) {\n let buf = '';\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\n buf += scnr.currentPeek();\n scnr.peek();\n }\n return buf;\n }\n function skipSpaces(scnr) {\n const buf = peekSpaces(scnr);\n scnr.skipToPeek();\n return buf;\n }\n function isIdentifierStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n cc === 95 // _\n );\n }\n function isNumberStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n function isNamedIdentifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isListIdentifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\n const ret = isNumberStart(ch);\n scnr.resetPeek();\n return ret;\n }\n function isLiteralStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDotStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 8 /* TokenTypes.LinkedAlias */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \".\" /* TokenChars.LinkedDot */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedModifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 9 /* TokenTypes.LinkedDot */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDelimiterStart(scnr, context) {\n const { currentType } = context;\n if (!(currentType === 8 /* TokenTypes.LinkedAlias */ ||\n currentType === 12 /* TokenTypes.LinkedModifier */)) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \":\" /* TokenChars.LinkedDelimiter */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedReferStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {\n return false;\n }\n const fn = () => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n return isIdentifierStart(scnr.peek());\n }\n else if (ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"%\" /* TokenChars.Modulo */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n ch === \":\" /* TokenChars.LinkedDelimiter */ ||\n ch === \".\" /* TokenChars.LinkedDot */ ||\n ch === CHAR_SP ||\n !ch) {\n return false;\n }\n else if (ch === CHAR_LF) {\n scnr.peek();\n return fn();\n }\n else {\n // other characters\n return isTextStart(scnr, false);\n }\n };\n const ret = fn();\n scnr.resetPeek();\n return ret;\n }\n function isPluralStart(scnr) {\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \"|\" /* TokenChars.Pipe */;\n scnr.resetPeek();\n return ret;\n }\n function detectModuloStart(scnr) {\n const spaces = peekSpaces(scnr);\n const ret = scnr.currentPeek() === \"%\" /* TokenChars.Modulo */ &&\n scnr.peek() === \"{\" /* TokenChars.BraceLeft */;\n scnr.resetPeek();\n return {\n isModulo: ret,\n hasSpace: spaces.length > 0\n };\n }\n function isTextStart(scnr, reset = true) {\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n return prev === \"%\" /* TokenChars.Modulo */ ? false : hasSpace;\n }\n else if (ch === \"@\" /* TokenChars.LinkedAlias */ || !ch) {\n return prev === \"%\" /* TokenChars.Modulo */ ? true : hasSpace;\n }\n else if (ch === \"%\" /* TokenChars.Modulo */) {\n scnr.peek();\n return fn(hasSpace, \"%\" /* TokenChars.Modulo */, true);\n }\n else if (ch === \"|\" /* TokenChars.Pipe */) {\n return prev === \"%\" /* TokenChars.Modulo */ || detectModulo\n ? true\n : !(prev === CHAR_SP || prev === CHAR_LF);\n }\n else if (ch === CHAR_SP) {\n scnr.peek();\n return fn(true, CHAR_SP, detectModulo);\n }\n else if (ch === CHAR_LF) {\n scnr.peek();\n return fn(true, CHAR_LF, detectModulo);\n }\n else {\n return true;\n }\n };\n const ret = fn();\n reset && scnr.resetPeek();\n return ret;\n }\n function takeChar(scnr, fn) {\n const ch = scnr.currentChar();\n if (ch === EOF) {\n return EOF;\n }\n if (fn(ch)) {\n scnr.next();\n return ch;\n }\n return null;\n }\n function isIdentifier(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n (cc >= 48 && cc <= 57) || // 0-9\n cc === 95 || // _\n cc === 36 // $\n );\n }\n function takeIdentifierChar(scnr) {\n return takeChar(scnr, isIdentifier);\n }\n function isNamedIdentifier(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n (cc >= 48 && cc <= 57) || // 0-9\n cc === 95 || // _\n cc === 36 || // $\n cc === 45 // -\n );\n }\n function takeNamedIdentifierChar(scnr) {\n return takeChar(scnr, isNamedIdentifier);\n }\n function isDigit(ch) {\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n function takeDigit(scnr) {\n return takeChar(scnr, isDigit);\n }\n function isHexDigit(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 48 && cc <= 57) || // 0-9\n (cc >= 65 && cc <= 70) || // A-F\n (cc >= 97 && cc <= 102)); // a-f\n }\n function takeHexDigit(scnr) {\n return takeChar(scnr, isHexDigit);\n }\n function getDigits(scnr) {\n let ch = '';\n let num = '';\n while ((ch = takeDigit(scnr))) {\n num += ch;\n }\n return num;\n }\n function readModulo(scnr) {\n skipSpaces(scnr);\n const ch = scnr.currentChar();\n if (ch !== \"%\" /* TokenChars.Modulo */) {\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n }\n scnr.next();\n return \"%\" /* TokenChars.Modulo */;\n }\n function readText(scnr) {\n let buf = '';\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n ch === \"}\" /* TokenChars.BraceRight */ ||\n ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n !ch) {\n break;\n }\n else if (ch === \"%\" /* TokenChars.Modulo */) {\n if (isTextStart(scnr)) {\n buf += ch;\n scnr.next();\n }\n else {\n break;\n }\n }\n else if (ch === CHAR_SP || ch === CHAR_LF) {\n if (isTextStart(scnr)) {\n buf += ch;\n scnr.next();\n }\n else if (isPluralStart(scnr)) {\n break;\n }\n else {\n buf += ch;\n scnr.next();\n }\n }\n else {\n buf += ch;\n scnr.next();\n }\n }\n return buf;\n }\n function readNamedIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let name = '';\n while ((ch = takeNamedIdentifierChar(scnr))) {\n name += ch;\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return name;\n }\n function readListIdentifier(scnr) {\n skipSpaces(scnr);\n let value = '';\n if (scnr.currentChar() === '-') {\n scnr.next();\n value += `-${getDigits(scnr)}`;\n }\n else {\n value += getDigits(scnr);\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return value;\n }\n function isLiteral(ch) {\n return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;\n }\n function readLiteral(scnr) {\n skipSpaces(scnr);\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n let ch = '';\n let literal = '';\n while ((ch = takeChar(scnr, isLiteral))) {\n if (ch === '\\\\') {\n literal += readEscapeSequence(scnr);\n }\n else {\n literal += ch;\n }\n }\n const current = scnr.currentChar();\n if (current === CHAR_LF || current === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\n // TODO: Is it correct really?\n if (current === CHAR_LF) {\n scnr.next();\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n }\n return literal;\n }\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n return literal;\n }\n function readEscapeSequence(scnr) {\n const ch = scnr.currentChar();\n switch (ch) {\n case '\\\\':\n case `\\'`: // eslint-disable-line no-useless-escape\n scnr.next();\n return `\\\\${ch}`;\n case 'u':\n return readUnicodeEscapeSequence(scnr, ch, 4);\n case 'U':\n return readUnicodeEscapeSequence(scnr, ch, 6);\n default:\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\n return '';\n }\n }\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\n eat(scnr, unicode);\n let sequence = '';\n for (let i = 0; i < digits; i++) {\n const ch = takeHexDigit(scnr);\n if (!ch) {\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\n break;\n }\n sequence += ch;\n }\n return `\\\\${unicode}${sequence}`;\n }\n function isInvalidIdentifier(ch) {\n return (ch !== \"{\" /* TokenChars.BraceLeft */ &&\n ch !== \"}\" /* TokenChars.BraceRight */ &&\n ch !== CHAR_SP &&\n ch !== CHAR_LF);\n }\n function readInvalidIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let identifiers = '';\n while ((ch = takeChar(scnr, isInvalidIdentifier))) {\n identifiers += ch;\n }\n return identifiers;\n }\n function readLinkedModifier(scnr) {\n let ch = '';\n let name = '';\n while ((ch = takeIdentifierChar(scnr))) {\n name += ch;\n }\n return name;\n }\n function readLinkedRefer(scnr) {\n const fn = (buf) => {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n ch === \"%\" /* TokenChars.Modulo */ ||\n ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n ch === \"(\" /* TokenChars.ParenLeft */ ||\n ch === \")\" /* TokenChars.ParenRight */ ||\n !ch) {\n return buf;\n }\n else if (ch === CHAR_SP) {\n return buf;\n }\n else if (ch === CHAR_LF || ch === DOT) {\n buf += ch;\n scnr.next();\n return fn(buf);\n }\n else {\n buf += ch;\n scnr.next();\n return fn(buf);\n }\n };\n return fn('');\n }\n function readPlural(scnr) {\n skipSpaces(scnr);\n const plural = eat(scnr, \"|\" /* TokenChars.Pipe */);\n skipSpaces(scnr);\n return plural;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInPlaceholder(scnr, context) {\n let token = null;\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* TokenChars.BraceLeft */:\n if (context.braceNest >= 1) {\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 2 /* TokenTypes.BraceLeft */, \"{\" /* TokenChars.BraceLeft */);\n skipSpaces(scnr);\n context.braceNest++;\n return token;\n case \"}\" /* TokenChars.BraceRight */:\n if (context.braceNest > 0 &&\n context.currentType === 2 /* TokenTypes.BraceLeft */) {\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n context.braceNest--;\n context.braceNest > 0 && skipSpaces(scnr);\n if (context.inLinked && context.braceNest === 0) {\n context.inLinked = false;\n }\n return token;\n case \"@\" /* TokenChars.LinkedAlias */:\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = readTokenInLinked(scnr, context) || getEndToken(context);\n context.braceNest = 0;\n return token;\n default: {\n let validNamedIdentifier = true;\n let validListIdentifier = true;\n let validLiteral = true;\n if (isPluralStart(scnr)) {\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (context.braceNest > 0 &&\n (context.currentType === 5 /* TokenTypes.Named */ ||\n context.currentType === 6 /* TokenTypes.List */ ||\n context.currentType === 7 /* TokenTypes.Literal */)) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n context.braceNest = 0;\n return readToken(scnr, context);\n }\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\n token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\n token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if ((validLiteral = isLiteralStart(scnr, context))) {\n token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\n token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\n skipSpaces(scnr);\n return token;\n }\n break;\n }\n }\n return token;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInLinked(scnr, context) {\n const { currentType } = context;\n let token = null;\n const ch = scnr.currentChar();\n if ((currentType === 8 /* TokenTypes.LinkedAlias */ ||\n currentType === 9 /* TokenTypes.LinkedDot */ ||\n currentType === 12 /* TokenTypes.LinkedModifier */ ||\n currentType === 10 /* TokenTypes.LinkedDelimiter */) &&\n (ch === CHAR_LF || ch === CHAR_SP)) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n switch (ch) {\n case \"@\" /* TokenChars.LinkedAlias */:\n scnr.next();\n token = getToken(context, 8 /* TokenTypes.LinkedAlias */, \"@\" /* TokenChars.LinkedAlias */);\n context.inLinked = true;\n return token;\n case \".\" /* TokenChars.LinkedDot */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 9 /* TokenTypes.LinkedDot */, \".\" /* TokenChars.LinkedDot */);\n case \":\" /* TokenChars.LinkedDelimiter */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, \":\" /* TokenChars.LinkedDelimiter */);\n default:\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (isLinkedDotStart(scnr, context) ||\n isLinkedDelimiterStart(scnr, context)) {\n skipSpaces(scnr);\n return readTokenInLinked(scnr, context);\n }\n if (isLinkedModifierStart(scnr, context)) {\n skipSpaces(scnr);\n return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));\n }\n if (isLinkedReferStart(scnr, context)) {\n skipSpaces(scnr);\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n // scan the placeholder\n return readTokenInPlaceholder(scnr, context) || token;\n }\n else {\n return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));\n }\n }\n if (currentType === 8 /* TokenTypes.LinkedAlias */) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n context.braceNest = 0;\n context.inLinked = false;\n return readToken(scnr, context);\n }\n }\n // TODO: We need refactoring of token parsing ...\n function readToken(scnr, context) {\n let token = { type: 14 /* TokenTypes.EOF */ };\n if (context.braceNest > 0) {\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n }\n if (context.inLinked) {\n return readTokenInLinked(scnr, context) || getEndToken(context);\n }\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* TokenChars.BraceLeft */:\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n case \"}\" /* TokenChars.BraceRight */:\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\n scnr.next();\n return getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n case \"@\" /* TokenChars.LinkedAlias */:\n return readTokenInLinked(scnr, context) || getEndToken(context);\n default: {\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n const { isModulo, hasSpace } = detectModuloStart(scnr);\n if (isModulo) {\n return hasSpace\n ? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))\n : getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));\n }\n if (isTextStart(scnr)) {\n return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));\n }\n break;\n }\n }\n return token;\n }\n function nextToken() {\n const { currentType, offset, startLoc, endLoc } = _context;\n _context.lastType = currentType;\n _context.lastOffset = offset;\n _context.lastStartLoc = startLoc;\n _context.lastEndLoc = endLoc;\n _context.offset = currentOffset();\n _context.startLoc = currentPosition();\n if (_scnr.currentChar() === EOF) {\n return getToken(_context, 14 /* TokenTypes.EOF */);\n }\n return readToken(_scnr, _context);\n }\n return {\n nextToken,\n currentOffset,\n currentPosition,\n context\n };\n}\n\nconst ERROR_DOMAIN$2 = 'parser';\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\n switch (match) {\n case `\\\\\\\\`:\n return `\\\\`;\n // eslint-disable-next-line no-useless-escape\n case `\\\\\\'`:\n // eslint-disable-next-line no-useless-escape\n return `\\'`;\n default: {\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\n return String.fromCodePoint(codePoint);\n }\n // invalid ...\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\n return '�';\n }\n }\n}\nfunction createParser(options = {}) {\n const location = options.location !== false;\n const { onError, onWarn } = options;\n function emitError(tokenzer, code, start, offset, ...args) {\n const end = tokenzer.currentPosition();\n end.offset += offset;\n end.column += offset;\n if (onError) {\n const loc = location ? createLocation(start, end) : null;\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$2,\n args\n });\n onError(err);\n }\n }\n function emitWarn(tokenzer, code, start, offset, ...args) {\n const end = tokenzer.currentPosition();\n end.offset += offset;\n end.column += offset;\n if (onWarn) {\n const loc = location ? createLocation(start, end) : null;\n onWarn(createCompileWarn(code, loc, args));\n }\n }\n function startNode(type, offset, loc) {\n const node = { type };\n if (location) {\n node.start = offset;\n node.end = offset;\n node.loc = { start: loc, end: loc };\n }\n return node;\n }\n function endNode(node, offset, pos, type) {\n if (type) {\n node.type = type;\n }\n if (location) {\n node.end = offset;\n if (node.loc) {\n node.loc.end = pos;\n }\n }\n }\n function parseText(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseList(tokenizer, index) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(5 /* NodeTypes.List */, offset, loc);\n node.index = parseInt(index, 10);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseNamed(tokenizer, key, modulo) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(4 /* NodeTypes.Named */, offset, loc);\n node.key = key;\n if (modulo === true) {\n node.modulo = true;\n }\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLiteral(tokenizer, value) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(9 /* NodeTypes.Literal */, offset, loc);\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinkedModifier(tokenizer) {\n const token = tokenizer.nextToken();\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\n const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);\n if (token.type !== 12 /* TokenTypes.LinkedModifier */) {\n // empty modifier\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\n node.value = '';\n endNode(node, offset, loc);\n return {\n nextConsumeToken: token,\n node\n };\n }\n // check token\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.value = token.value || '';\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node\n };\n }\n function parseLinkedKey(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinked(tokenizer) {\n const context = tokenizer.context();\n const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);\n let token = tokenizer.nextToken();\n if (token.type === 9 /* TokenTypes.LinkedDot */) {\n const parsed = parseLinkedModifier(tokenizer);\n linkedNode.modifier = parsed.node;\n token = parsed.nextConsumeToken || tokenizer.nextToken();\n }\n // asset check token\n if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n token = tokenizer.nextToken();\n // skip brace left\n if (token.type === 2 /* TokenTypes.BraceLeft */) {\n token = tokenizer.nextToken();\n }\n switch (token.type) {\n case 11 /* TokenTypes.LinkedKey */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\n break;\n case 5 /* TokenTypes.Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseNamed(tokenizer, token.value || '');\n break;\n case 6 /* TokenTypes.List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseList(tokenizer, token.value || '');\n break;\n case 7 /* TokenTypes.Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\n break;\n default: {\n // empty key\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\n const nextContext = tokenizer.context();\n const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);\n emptyLinkedKeyNode.value = '';\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\n linkedNode.key = emptyLinkedKeyNode;\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\n return {\n nextConsumeToken: token,\n node: linkedNode\n };\n }\n }\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node: linkedNode\n };\n }\n function parseMessage(tokenizer) {\n const context = tokenizer.context();\n const startOffset = context.currentType === 1 /* TokenTypes.Pipe */\n ? tokenizer.currentOffset()\n : context.offset;\n const startLoc = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.endLoc\n : context.startLoc;\n const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);\n node.items = [];\n let nextToken = null;\n let modulo = null;\n do {\n const token = nextToken || tokenizer.nextToken();\n nextToken = null;\n switch (token.type) {\n case 0 /* TokenTypes.Text */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseText(tokenizer, token.value || ''));\n break;\n case 6 /* TokenTypes.List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseList(tokenizer, token.value || ''));\n break;\n case 4 /* TokenTypes.Modulo */:\n modulo = true;\n break;\n case 5 /* TokenTypes.Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseNamed(tokenizer, token.value || '', !!modulo));\n if (modulo) {\n emitWarn(tokenizer, CompileWarnCodes.USE_MODULO_SYNTAX, context.lastStartLoc, 0, getTokenCaption(token));\n modulo = null;\n }\n break;\n case 7 /* TokenTypes.Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseLiteral(tokenizer, token.value || ''));\n break;\n case 8 /* TokenTypes.LinkedAlias */: {\n const parsed = parseLinked(tokenizer);\n node.items.push(parsed.node);\n nextToken = parsed.nextConsumeToken || null;\n break;\n }\n }\n } while (context.currentType !== 14 /* TokenTypes.EOF */ &&\n context.currentType !== 1 /* TokenTypes.Pipe */);\n // adjust message node loc\n const endOffset = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.lastOffset\n : tokenizer.currentOffset();\n const endLoc = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.lastEndLoc\n : tokenizer.currentPosition();\n endNode(node, endOffset, endLoc);\n return node;\n }\n function parsePlural(tokenizer, offset, loc, msgNode) {\n const context = tokenizer.context();\n let hasEmptyMessage = msgNode.items.length === 0;\n const node = startNode(1 /* NodeTypes.Plural */, offset, loc);\n node.cases = [];\n node.cases.push(msgNode);\n do {\n const msg = parseMessage(tokenizer);\n if (!hasEmptyMessage) {\n hasEmptyMessage = msg.items.length === 0;\n }\n node.cases.push(msg);\n } while (context.currentType !== 14 /* TokenTypes.EOF */);\n if (hasEmptyMessage) {\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseResource(tokenizer) {\n const context = tokenizer.context();\n const { offset, startLoc } = context;\n const msgNode = parseMessage(tokenizer);\n if (context.currentType === 14 /* TokenTypes.EOF */) {\n return msgNode;\n }\n else {\n return parsePlural(tokenizer, offset, startLoc, msgNode);\n }\n }\n function parse(source) {\n const tokenizer = createTokenizer(source, assign({}, options));\n const context = tokenizer.context();\n const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);\n if (location && node.loc) {\n node.loc.source = source;\n }\n node.body = parseResource(tokenizer);\n if (options.onCacheKey) {\n node.cacheKey = options.onCacheKey(source);\n }\n // assert whether achieved to EOF\n if (context.currentType !== 14 /* TokenTypes.EOF */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n return { parse };\n}\nfunction getTokenCaption(token) {\n if (token.type === 14 /* TokenTypes.EOF */) {\n return 'EOF';\n }\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\n) {\n const _context = {\n ast,\n helpers: new Set()\n };\n const context = () => _context;\n const helper = (name) => {\n _context.helpers.add(name);\n return name;\n };\n return { context, helper };\n}\nfunction traverseNodes(nodes, transformer) {\n for (let i = 0; i < nodes.length; i++) {\n traverseNode(nodes[i], transformer);\n }\n}\nfunction traverseNode(node, transformer) {\n // TODO: if we need pre-hook of transform, should be implemented to here\n switch (node.type) {\n case 1 /* NodeTypes.Plural */:\n traverseNodes(node.cases, transformer);\n transformer.helper(\"plural\" /* HelperNameMap.PLURAL */);\n break;\n case 2 /* NodeTypes.Message */:\n traverseNodes(node.items, transformer);\n break;\n case 6 /* NodeTypes.Linked */: {\n const linked = node;\n traverseNode(linked.key, transformer);\n transformer.helper(\"linked\" /* HelperNameMap.LINKED */);\n transformer.helper(\"type\" /* HelperNameMap.TYPE */);\n break;\n }\n case 5 /* NodeTypes.List */:\n transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n transformer.helper(\"list\" /* HelperNameMap.LIST */);\n break;\n case 4 /* NodeTypes.Named */:\n transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n transformer.helper(\"named\" /* HelperNameMap.NAMED */);\n break;\n }\n // TODO: if we need post-hook of transform, should be implemented to here\n}\n// transform AST\nfunction transform(ast, options = {} // eslint-disable-line\n) {\n const transformer = createTransformer(ast);\n transformer.helper(\"normalize\" /* HelperNameMap.NORMALIZE */);\n // traverse\n ast.body && traverseNode(ast.body, transformer);\n // set meta information\n const context = transformer.context();\n ast.helpers = Array.from(context.helpers);\n}\n\nfunction optimize(ast) {\n const body = ast.body;\n if (body.type === 2 /* NodeTypes.Message */) {\n optimizeMessageNode(body);\n }\n else {\n body.cases.forEach(c => optimizeMessageNode(c));\n }\n return ast;\n}\nfunction optimizeMessageNode(message) {\n if (message.items.length === 1) {\n const item = message.items[0];\n if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n message.static = item.value;\n delete item.value; // optimization for size\n }\n }\n else {\n const values = [];\n for (let i = 0; i < message.items.length; i++) {\n const item = message.items[i];\n if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {\n break;\n }\n if (item.value == null) {\n break;\n }\n values.push(item.value);\n }\n if (values.length === message.items.length) {\n message.static = join(values);\n for (let i = 0; i < message.items.length; i++) {\n const item = message.items[i];\n if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n delete item.value; // optimization for size\n }\n }\n }\n }\n}\n\nconst ERROR_DOMAIN$1 = 'minifier';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction minify(node) {\n node.t = node.type;\n switch (node.type) {\n case 0 /* NodeTypes.Resource */: {\n const resource = node;\n minify(resource.body);\n resource.b = resource.body;\n delete resource.body;\n break;\n }\n case 1 /* NodeTypes.Plural */: {\n const plural = node;\n const cases = plural.cases;\n for (let i = 0; i < cases.length; i++) {\n minify(cases[i]);\n }\n plural.c = cases;\n delete plural.cases;\n break;\n }\n case 2 /* NodeTypes.Message */: {\n const message = node;\n const items = message.items;\n for (let i = 0; i < items.length; i++) {\n minify(items[i]);\n }\n message.i = items;\n delete message.items;\n if (message.static) {\n message.s = message.static;\n delete message.static;\n }\n break;\n }\n case 3 /* NodeTypes.Text */:\n case 9 /* NodeTypes.Literal */:\n case 8 /* NodeTypes.LinkedModifier */:\n case 7 /* NodeTypes.LinkedKey */: {\n const valueNode = node;\n if (valueNode.value) {\n valueNode.v = valueNode.value;\n delete valueNode.value;\n }\n break;\n }\n case 6 /* NodeTypes.Linked */: {\n const linked = node;\n minify(linked.key);\n linked.k = linked.key;\n delete linked.key;\n if (linked.modifier) {\n minify(linked.modifier);\n linked.m = linked.modifier;\n delete linked.modifier;\n }\n break;\n }\n case 5 /* NodeTypes.List */: {\n const list = node;\n list.i = list.index;\n delete list.index;\n break;\n }\n case 4 /* NodeTypes.Named */: {\n const named = node;\n named.k = named.key;\n delete named.key;\n break;\n }\n default:\n {\n throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {\n domain: ERROR_DOMAIN$1,\n args: [node.type]\n });\n }\n }\n delete node.type;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nconst ERROR_DOMAIN = 'parser';\nfunction createCodeGenerator(ast, options) {\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\n const location = options.location !== false;\n const _context = {\n filename,\n code: '',\n column: 1,\n line: 1,\n offset: 0,\n map: undefined,\n breakLineCode,\n needIndent: _needIndent,\n indentLevel: 0\n };\n if (location && ast.loc) {\n _context.source = ast.loc.source;\n }\n const context = () => _context;\n function push(code, node) {\n _context.code += code;\n }\n function _newline(n, withBreakLine = true) {\n const _breakLineCode = withBreakLine ? breakLineCode : '';\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\n }\n function indent(withNewLine = true) {\n const level = ++_context.indentLevel;\n withNewLine && _newline(level);\n }\n function deindent(withNewLine = true) {\n const level = --_context.indentLevel;\n withNewLine && _newline(level);\n }\n function newline() {\n _newline(_context.indentLevel);\n }\n const helper = (key) => `_${key}`;\n const needIndent = () => _context.needIndent;\n return {\n context,\n push,\n indent,\n deindent,\n newline,\n helper,\n needIndent\n };\n}\nfunction generateLinkedNode(generator, node) {\n const { helper } = generator;\n generator.push(`${helper(\"linked\" /* HelperNameMap.LINKED */)}(`);\n generateNode(generator, node.key);\n if (node.modifier) {\n generator.push(`, `);\n generateNode(generator, node.modifier);\n generator.push(`, _type`);\n }\n else {\n generator.push(`, undefined, _type`);\n }\n generator.push(`)`);\n}\nfunction generateMessageNode(generator, node) {\n const { helper, needIndent } = generator;\n generator.push(`${helper(\"normalize\" /* HelperNameMap.NORMALIZE */)}([`);\n generator.indent(needIndent());\n const length = node.items.length;\n for (let i = 0; i < length; i++) {\n generateNode(generator, node.items[i]);\n if (i === length - 1) {\n break;\n }\n generator.push(', ');\n }\n generator.deindent(needIndent());\n generator.push('])');\n}\nfunction generatePluralNode(generator, node) {\n const { helper, needIndent } = generator;\n if (node.cases.length > 1) {\n generator.push(`${helper(\"plural\" /* HelperNameMap.PLURAL */)}([`);\n generator.indent(needIndent());\n const length = node.cases.length;\n for (let i = 0; i < length; i++) {\n generateNode(generator, node.cases[i]);\n if (i === length - 1) {\n break;\n }\n generator.push(', ');\n }\n generator.deindent(needIndent());\n generator.push(`])`);\n }\n}\nfunction generateResource(generator, node) {\n if (node.body) {\n generateNode(generator, node.body);\n }\n else {\n generator.push('null');\n }\n}\nfunction generateNode(generator, node) {\n const { helper } = generator;\n switch (node.type) {\n case 0 /* NodeTypes.Resource */:\n generateResource(generator, node);\n break;\n case 1 /* NodeTypes.Plural */:\n generatePluralNode(generator, node);\n break;\n case 2 /* NodeTypes.Message */:\n generateMessageNode(generator, node);\n break;\n case 6 /* NodeTypes.Linked */:\n generateLinkedNode(generator, node);\n break;\n case 8 /* NodeTypes.LinkedModifier */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 7 /* NodeTypes.LinkedKey */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 5 /* NodeTypes.List */:\n generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"list\" /* HelperNameMap.LIST */)}(${node.index}))`, node);\n break;\n case 4 /* NodeTypes.Named */:\n generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"named\" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);\n break;\n case 9 /* NodeTypes.Literal */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 3 /* NodeTypes.Text */:\n generator.push(JSON.stringify(node.value), node);\n break;\n default:\n {\n throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {\n domain: ERROR_DOMAIN,\n args: [node.type]\n });\n }\n }\n}\n// generate code from AST\nconst generate = (ast, options = {} // eslint-disable-line\n) => {\n const mode = isString(options.mode) ? options.mode : 'normal';\n const filename = isString(options.filename)\n ? options.filename\n : 'message.intl';\n const sourceMap = !!options.sourceMap;\n // prettier-ignore\n const breakLineCode = options.breakLineCode != null\n ? options.breakLineCode\n : mode === 'arrow'\n ? ';'\n : '\\n';\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\n const helpers = ast.helpers || [];\n const generator = createCodeGenerator(ast, {\n mode,\n filename,\n sourceMap,\n breakLineCode,\n needIndent\n });\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\n generator.indent(needIndent);\n if (helpers.length > 0) {\n generator.push(`const { ${join(helpers.map(s => `${s}: _${s}`), ', ')} } = ctx`);\n generator.newline();\n }\n generator.push(`return `);\n generateNode(generator, ast);\n generator.deindent(needIndent);\n generator.push(`}`);\n delete ast.helpers;\n const { code, map } = generator.context();\n return {\n ast,\n code,\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\n };\n};\n\nfunction baseCompile(source, options = {}) {\n const assignedOptions = assign({}, options);\n const jit = !!assignedOptions.jit;\n const enalbeMinify = !!assignedOptions.minify;\n const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;\n // parse source codes\n const parser = createParser(assignedOptions);\n const ast = parser.parse(source);\n if (!jit) {\n // transform ASTs\n transform(ast, assignedOptions);\n // generate javascript codes\n return generate(ast, assignedOptions);\n }\n else {\n // optimize ASTs\n enambeOptimize && optimize(ast);\n // minimize ASTs\n enalbeMinify && minify(ast);\n // In JIT mode, no ast transform, no code generation.\n return { ast, code: '' };\n }\n}\n\nexport { CompileErrorCodes, CompileWarnCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createCompileWarn, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages, warnMessages };\n","/*!\n * core-base v9.14.2\n * (c) 2024 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, isObject, isFunction, isString, create, isNumber, isPlainObject, assign, join, toDisplayString, isArray, incrementer, format as format$1, isPromise, isBoolean, warn, isRegExp, warnOnce, hasOwn, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate } from '@intlify/shared';\nimport { CompileWarnCodes, CompileErrorCodes, createCompileError, detectHtmlTag, defaultOnError, baseCompile as baseCompile$1 } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\n\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n }\n if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;\n }\n if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n }\n}\n\nconst pathStateMachine = [];\npathStateMachine[0 /* States.BEFORE_PATH */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [0 /* States.BEFORE_PATH */],\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[1 /* States.IN_PATH */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */],\n [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[2 /* States.BEFORE_IDENT */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [2 /* States.BEFORE_IDENT */],\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */]\n};\npathStateMachine[3 /* States.IN_IDENT */] = {\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */, 1 /* Actions.PUSH */],\n [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */, 1 /* Actions.PUSH */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */, 1 /* Actions.PUSH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */, 1 /* Actions.PUSH */]\n};\npathStateMachine[4 /* States.IN_SUB_PATH */] = {\n [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */],\n [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [\n 4 /* States.IN_SUB_PATH */,\n 2 /* Actions.INC_SUB_PATH_DEPTH */\n ],\n [\"]\" /* PathCharTypes.RIGHT_BRACKET */]: [1 /* States.IN_PATH */, 3 /* Actions.PUSH_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */]\n};\npathStateMachine[5 /* States.IN_SINGLE_QUOTE */] = {\n [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */]\n};\npathStateMachine[6 /* States.IN_DOUBLE_QUOTE */] = {\n [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */]\n};\n/**\n * Check if an expression is a literal value.\n */\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral(exp) {\n return literalValueRE.test(exp);\n}\n/**\n * Strip quotes from a string\n */\nfunction stripQuotes(str) {\n const a = str.charCodeAt(0);\n const b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n}\n/**\n * Determine the type of a character in a keypath.\n */\nfunction getPathCharType(ch) {\n if (ch === undefined || ch === null) {\n return \"o\" /* PathCharTypes.END_OF_FAIL */;\n }\n const code = ch.charCodeAt(0);\n switch (code) {\n case 0x5b: // [\n case 0x5d: // ]\n case 0x2e: // .\n case 0x22: // \"\n case 0x27: // '\n return ch;\n case 0x5f: // _\n case 0x24: // $\n case 0x2d: // -\n return \"i\" /* PathCharTypes.IDENT */;\n case 0x09: // Tab (HT)\n case 0x0a: // Newline (LF)\n case 0x0d: // Return (CR)\n case 0xa0: // No-break space (NBSP)\n case 0xfeff: // Byte Order Mark (BOM)\n case 0x2028: // Line Separator (LS)\n case 0x2029: // Paragraph Separator (PS)\n return \"w\" /* PathCharTypes.WORKSPACE */;\n }\n return \"i\" /* PathCharTypes.IDENT */;\n}\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\nfunction formatSubPath(path) {\n const trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\n return false;\n }\n return isLiteral(trimmed)\n ? stripQuotes(trimmed)\n : \"*\" /* PathCharTypes.ASTARISK */ + trimmed;\n}\n/**\n * Parse a string path into an array of segments\n */\nfunction parse(path) {\n const keys = [];\n let index = -1;\n let mode = 0 /* States.BEFORE_PATH */;\n let subPathDepth = 0;\n let c;\n let key; // eslint-disable-line\n let newChar;\n let type;\n let transition;\n let action;\n let typeMap;\n const actions = [];\n actions[0 /* Actions.APPEND */] = () => {\n if (key === undefined) {\n key = newChar;\n }\n else {\n key += newChar;\n }\n };\n actions[1 /* Actions.PUSH */] = () => {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n actions[2 /* Actions.INC_SUB_PATH_DEPTH */] = () => {\n actions[0 /* Actions.APPEND */]();\n subPathDepth++;\n };\n actions[3 /* Actions.PUSH_SUB_PATH */] = () => {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = 4 /* States.IN_SUB_PATH */;\n actions[0 /* Actions.APPEND */]();\n }\n else {\n subPathDepth = 0;\n if (key === undefined) {\n return false;\n }\n key = formatSubPath(key);\n if (key === false) {\n return false;\n }\n else {\n actions[1 /* Actions.PUSH */]();\n }\n }\n };\n function maybeUnescapeQuote() {\n const nextChar = path[index + 1];\n if ((mode === 5 /* States.IN_SINGLE_QUOTE */ &&\n nextChar === \"'\" /* PathCharTypes.SINGLE_QUOTE */) ||\n (mode === 6 /* States.IN_DOUBLE_QUOTE */ &&\n nextChar === \"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */)) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[0 /* Actions.APPEND */]();\n return true;\n }\n }\n while (mode !== null) {\n index++;\n c = path[index];\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue;\n }\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap[\"l\" /* PathCharTypes.ELSE */] || 8 /* States.ERROR */;\n // check parse error\n if (transition === 8 /* States.ERROR */) {\n return;\n }\n mode = transition[0];\n if (transition[1] !== undefined) {\n action = actions[transition[1]];\n if (action) {\n newChar = c;\n if (action() === false) {\n return;\n }\n }\n }\n // check parse finish\n if (mode === 7 /* States.AFTER_PATH */) {\n return keys;\n }\n }\n}\n// path token cache\nconst cache = new Map();\n/**\n * key-value message resolver\n *\n * @remarks\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveWithKeyValue(obj, path) {\n return isObject(obj) ? obj[path] : null;\n}\n/**\n * message resolver\n *\n * @remarks\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveValue$1(obj, path) {\n // check object\n if (!isObject(obj)) {\n return null;\n }\n // parse path\n let hit = cache.get(path);\n if (!hit) {\n hit = parse(path);\n if (hit) {\n cache.set(path, hit);\n }\n }\n // check hit\n if (!hit) {\n return null;\n }\n // resolve path value\n const len = hit.length;\n let last = obj;\n let i = 0;\n while (i < len) {\n const val = last[hit[i]];\n if (val === undefined) {\n return null;\n }\n if (isFunction(last)) {\n return null;\n }\n last = val;\n i++;\n }\n return last;\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : join(values);\nconst DEFAULT_INTERPOLATE = toDisplayString;\nfunction pluralDefault(choice, choicesLength) {\n choice = Math.abs(choice);\n if (choicesLength === 2) {\n // prettier-ignore\n return choice\n ? choice > 1\n ? 1\n : 0\n : 1;\n }\n return choice ? Math.min(choice, 2) : 0;\n}\nfunction getPluralIndex(options) {\n // prettier-ignore\n const index = isNumber(options.pluralIndex)\n ? options.pluralIndex\n : -1;\n // prettier-ignore\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\n ? isNumber(options.named.count)\n ? options.named.count\n : isNumber(options.named.n)\n ? options.named.n\n : index\n : index;\n}\nfunction normalizeNamed(pluralIndex, props) {\n if (!props.count) {\n props.count = pluralIndex;\n }\n if (!props.n) {\n props.n = pluralIndex;\n }\n}\nfunction createMessageContext(options = {}) {\n const locale = options.locale;\n const pluralIndex = getPluralIndex(options);\n const pluralRule = isObject(options.pluralRules) &&\n isString(locale) &&\n isFunction(options.pluralRules[locale])\n ? options.pluralRules[locale]\n : pluralDefault;\n const orgPluralRule = isObject(options.pluralRules) &&\n isString(locale) &&\n isFunction(options.pluralRules[locale])\n ? pluralDefault\n : undefined;\n const plural = (messages) => {\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\n };\n const _list = options.list || [];\n const list = (index) => _list[index];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _named = options.named || create();\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\n const named = (key) => _named[key];\n function message(key) {\n // prettier-ignore\n const msg = isFunction(options.messages)\n ? options.messages(key)\n : isObject(options.messages)\n ? options.messages[key]\n : false;\n return !msg\n ? options.parent\n ? options.parent.message(key) // resolve from parent messages\n : DEFAULT_MESSAGE\n : msg;\n }\n const _modifier = (name) => options.modifiers\n ? options.modifiers[name]\n : DEFAULT_MODIFIER;\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\n ? options.processor.normalize\n : DEFAULT_NORMALIZE;\n const interpolate = isPlainObject(options.processor) &&\n isFunction(options.processor.interpolate)\n ? options.processor.interpolate\n : DEFAULT_INTERPOLATE;\n const type = isPlainObject(options.processor) && isString(options.processor.type)\n ? options.processor.type\n : DEFAULT_MESSAGE_DATA_TYPE;\n const linked = (key, ...args) => {\n const [arg1, arg2] = args;\n let type = 'text';\n let modifier = '';\n if (args.length === 1) {\n if (isObject(arg1)) {\n modifier = arg1.modifier || modifier;\n type = arg1.type || type;\n }\n else if (isString(arg1)) {\n modifier = arg1 || modifier;\n }\n }\n else if (args.length === 2) {\n if (isString(arg1)) {\n modifier = arg1 || modifier;\n }\n if (isString(arg2)) {\n type = arg2 || type;\n }\n }\n const ret = message(key)(ctx);\n const msg = \n // The message in vnode resolved with linked are returned as an array by processor.nomalize\n type === 'vnode' && isArray(ret) && modifier\n ? ret[0]\n : ret;\n return modifier ? _modifier(modifier)(msg, type) : msg;\n };\n const ctx = {\n [\"list\" /* HelperNameMap.LIST */]: list,\n [\"named\" /* HelperNameMap.NAMED */]: named,\n [\"plural\" /* HelperNameMap.PLURAL */]: plural,\n [\"linked\" /* HelperNameMap.LINKED */]: linked,\n [\"message\" /* HelperNameMap.MESSAGE */]: message,\n [\"type\" /* HelperNameMap.TYPE */]: type,\n [\"interpolate\" /* HelperNameMap.INTERPOLATE */]: interpolate,\n [\"normalize\" /* HelperNameMap.NORMALIZE */]: normalize,\n [\"values\" /* HelperNameMap.VALUES */]: assign(create(), _list, _named)\n };\n return ctx;\n}\n\nlet devtools = null;\nfunction setDevToolsHook(hook) {\n devtools = hook;\n}\nfunction getDevToolsHook() {\n return devtools;\n}\nfunction initI18nDevTools(i18n, version, meta) {\n // TODO: queue if devtools is undefined\n devtools &&\n devtools.emit(\"i18n:init\" /* IntlifyDevToolsHooks.I18nInit */, {\n timestamp: Date.now(),\n i18n,\n version,\n meta\n });\n}\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(\"function:translate\" /* IntlifyDevToolsHooks.FunctionTranslate */);\nfunction createDevToolsHook(hook) {\n return (payloads) => devtools && devtools.emit(hook, payloads);\n}\n\nconst code$1 = CompileWarnCodes.__EXTEND_POINT__;\nconst inc$1 = incrementer(code$1);\nconst CoreWarnCodes = {\n NOT_FOUND_KEY: code$1, // 2\n FALLBACK_TO_TRANSLATE: inc$1(), // 3\n CANNOT_FORMAT_NUMBER: inc$1(), // 4\n FALLBACK_TO_NUMBER_FORMAT: inc$1(), // 5\n CANNOT_FORMAT_DATE: inc$1(), // 6\n FALLBACK_TO_DATE_FORMAT: inc$1(), // 7\n EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: inc$1(), // 8\n __EXTEND_POINT__: inc$1() // 9\n};\n/** @internal */\nconst warnMessages = {\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.`\n};\nfunction getWarnMessage(code, ...args) {\n return format$1(warnMessages[code], ...args);\n}\n\nconst code = CompileErrorCodes.__EXTEND_POINT__;\nconst inc = incrementer(code);\nconst CoreErrorCodes = {\n INVALID_ARGUMENT: code, // 17\n INVALID_DATE_ARGUMENT: inc(), // 18\n INVALID_ISO_DATE_ARGUMENT: inc(), // 19\n NOT_SUPPORT_NON_STRING_MESSAGE: inc(), // 20\n NOT_SUPPORT_LOCALE_PROMISE_VALUE: inc(), // 21\n NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: inc(), // 22\n NOT_SUPPORT_LOCALE_TYPE: inc(), // 23\n __EXTEND_POINT__: inc() // 24\n};\nfunction createCoreError(code) {\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\n}\n/** @internal */\nconst errorMessages = {\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\n 'Make sure your Date represents a valid date.',\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string',\n [CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: 'Not support non-string message',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE]: 'cannot support promise value',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]: 'cannot support async function',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE]: 'cannot support locale type'\n};\n\n/** @internal */\nfunction getLocale(context, options) {\n return options.locale != null\n ? resolveLocale(options.locale)\n : resolveLocale(context.locale);\n}\nlet _resolveLocale;\n/** @internal */\nfunction resolveLocale(locale) {\n if (isString(locale)) {\n return locale;\n }\n else {\n if (isFunction(locale)) {\n if (locale.resolvedOnce && _resolveLocale != null) {\n return _resolveLocale;\n }\n else if (locale.constructor.name === 'Function') {\n const resolve = locale();\n if (isPromise(resolve)) {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE);\n }\n return (_resolveLocale = resolve);\n }\n else {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION);\n }\n }\n else {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE);\n }\n }\n}\n/**\n * Fallback with simple implemenation\n *\n * @remarks\n * A fallback locale function implemented with a simple fallback algorithm.\n *\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\n) {\n // prettier-ignore\n return [...new Set([\n start,\n ...(isArray(fallback)\n ? fallback\n : isObject(fallback)\n ? Object.keys(fallback)\n : isString(fallback)\n ? [fallback]\n : [start])\n ])];\n}\n/**\n * Fallback with locale chain\n *\n * @remarks\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\n const context = ctx;\n if (!context.__localeChainCache) {\n context.__localeChainCache = new Map();\n }\n let chain = context.__localeChainCache.get(startLocale);\n if (!chain) {\n chain = [];\n // first block defined by start\n let block = [start];\n // while any intervening block found\n while (isArray(block)) {\n block = appendBlockToChain(chain, block, fallback);\n }\n // prettier-ignore\n // last block defined by default\n const defaults = isArray(fallback) || !isPlainObject(fallback)\n ? fallback\n : fallback['default']\n ? fallback['default']\n : null;\n // convert defaults to array\n block = isString(defaults) ? [defaults] : defaults;\n if (isArray(block)) {\n appendBlockToChain(chain, block, false);\n }\n context.__localeChainCache.set(startLocale, chain);\n }\n return chain;\n}\nfunction appendBlockToChain(chain, block, blocks) {\n let follow = true;\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\n const locale = block[i];\n if (isString(locale)) {\n follow = appendLocaleToChain(chain, block[i], blocks);\n }\n }\n return follow;\n}\nfunction appendLocaleToChain(chain, locale, blocks) {\n let follow;\n const tokens = locale.split('-');\n do {\n const target = tokens.join('-');\n follow = appendItemToChain(chain, target, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && follow === true);\n return follow;\n}\nfunction appendItemToChain(chain, target, blocks) {\n let follow = false;\n if (!chain.includes(target)) {\n follow = true;\n if (target) {\n follow = target[target.length - 1] !== '!';\n const locale = target.replace(/!/g, '');\n chain.push(locale);\n if ((isArray(blocks) || isPlainObject(blocks)) &&\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n follow = blocks[locale];\n }\n }\n }\n return follow;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Intlify core-base version\n * @internal\n */\nconst VERSION = '9.14.2';\nconst NOT_REOSLVED = -1;\nconst DEFAULT_LOCALE = 'en-US';\nconst MISSING_RESOLVE_VALUE = '';\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\nfunction getDefaultLinkedModifiers() {\n return {\n upper: (val, type) => {\n // prettier-ignore\n return type === 'text' && isString(val)\n ? val.toUpperCase()\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n ? val.children.toUpperCase()\n : val;\n },\n lower: (val, type) => {\n // prettier-ignore\n return type === 'text' && isString(val)\n ? val.toLowerCase()\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n ? val.children.toLowerCase()\n : val;\n },\n capitalize: (val, type) => {\n // prettier-ignore\n return (type === 'text' && isString(val)\n ? capitalize(val)\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n ? capitalize(val.children)\n : val);\n }\n };\n}\nlet _compiler;\nfunction registerMessageCompiler(compiler) {\n _compiler = compiler;\n}\nlet _resolver;\n/**\n * Register the message resolver\n *\n * @param resolver - A {@link MessageResolver} function\n *\n * @VueI18nGeneral\n */\nfunction registerMessageResolver(resolver) {\n _resolver = resolver;\n}\nlet _fallbacker;\n/**\n * Register the locale fallbacker\n *\n * @param fallbacker - A {@link LocaleFallbacker} function\n *\n * @VueI18nGeneral\n */\nfunction registerLocaleFallbacker(fallbacker) {\n _fallbacker = fallbacker;\n}\n// Additional Meta for Intlify DevTools\nlet _additionalMeta = null;\n/* #__NO_SIDE_EFFECTS__ */\nconst setAdditionalMeta = (meta) => {\n _additionalMeta = meta;\n};\n/* #__NO_SIDE_EFFECTS__ */\nconst getAdditionalMeta = () => _additionalMeta;\nlet _fallbackContext = null;\nconst setFallbackContext = (context) => {\n _fallbackContext = context;\n};\nconst getFallbackContext = () => _fallbackContext;\n// ID for CoreContext\nlet _cid = 0;\nfunction createCoreContext(options = {}) {\n // setup options\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\n const version = isString(options.version) ? options.version : VERSION;\n const locale = isString(options.locale) || isFunction(options.locale)\n ? options.locale\n : DEFAULT_LOCALE;\n const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale;\n const fallbackLocale = isArray(options.fallbackLocale) ||\n isPlainObject(options.fallbackLocale) ||\n isString(options.fallbackLocale) ||\n options.fallbackLocale === false\n ? options.fallbackLocale\n : _locale;\n const messages = isPlainObject(options.messages)\n ? options.messages\n : createResources(_locale);\n const datetimeFormats = isPlainObject(options.datetimeFormats)\n ? options.datetimeFormats\n : createResources(_locale)\n ;\n const numberFormats = isPlainObject(options.numberFormats)\n ? options.numberFormats\n : createResources(_locale)\n ;\n const modifiers = assign(create(), options.modifiers, getDefaultLinkedModifiers());\n const pluralRules = options.pluralRules || create();\n const missing = isFunction(options.missing) ? options.missing : null;\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n ? options.missingWarn\n : true;\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n ? options.fallbackWarn\n : true;\n const fallbackFormat = !!options.fallbackFormat;\n const unresolving = !!options.unresolving;\n const postTranslation = isFunction(options.postTranslation)\n ? options.postTranslation\n : null;\n const processor = isPlainObject(options.processor) ? options.processor : null;\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\n ? options.warnHtmlMessage\n : true;\n const escapeParameter = !!options.escapeParameter;\n const messageCompiler = isFunction(options.messageCompiler)\n ? options.messageCompiler\n : _compiler;\n if ((process.env.NODE_ENV !== 'production') &&\n !false &&\n !false &&\n isFunction(options.messageCompiler)) {\n warnOnce(getWarnMessage(CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));\n }\n const messageResolver = isFunction(options.messageResolver)\n ? options.messageResolver\n : _resolver || resolveWithKeyValue;\n const localeFallbacker = isFunction(options.localeFallbacker)\n ? options.localeFallbacker\n : _fallbacker || fallbackWithSimple;\n const fallbackContext = isObject(options.fallbackContext)\n ? options.fallbackContext\n : undefined;\n // setup internal options\n const internalOptions = options;\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\n ? internalOptions.__datetimeFormatters\n : new Map()\n ;\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\n ? internalOptions.__numberFormatters\n : new Map()\n ;\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\n _cid++;\n const context = {\n version,\n cid: _cid,\n locale,\n fallbackLocale,\n messages,\n modifiers,\n pluralRules,\n missing,\n missingWarn,\n fallbackWarn,\n fallbackFormat,\n unresolving,\n postTranslation,\n processor,\n warnHtmlMessage,\n escapeParameter,\n messageCompiler,\n messageResolver,\n localeFallbacker,\n fallbackContext,\n onWarn,\n __meta\n };\n {\n context.datetimeFormats = datetimeFormats;\n context.numberFormats = numberFormats;\n context.__datetimeFormatters = __datetimeFormatters;\n context.__numberFormatters = __numberFormatters;\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n context.__v_emitter =\n internalOptions.__v_emitter != null\n ? internalOptions.__v_emitter\n : undefined;\n }\n // NOTE: experimental !!\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n initI18nDevTools(context, version, __meta);\n }\n return context;\n}\nconst createResources = (locale) => ({ [locale]: create() });\n/** @internal */\nfunction isTranslateFallbackWarn(fallback, key) {\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\n}\n/** @internal */\nfunction isTranslateMissingWarn(missing, key) {\n return missing instanceof RegExp ? missing.test(key) : missing;\n}\n/** @internal */\nfunction handleMissing(context, key, locale, missingWarn, type) {\n const { missing, onWarn } = context;\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"missing\" /* VueDevToolsTimelineEvents.MISSING */, {\n locale,\n key,\n type,\n groupId: `${type}:${key}`\n });\n }\n }\n if (missing !== null) {\n const ret = missing(context, locale, key, type);\n return isString(ret) ? ret : key;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\n }\n return key;\n }\n}\n/** @internal */\nfunction updateFallbackLocale(ctx, locale, fallback) {\n const context = ctx;\n context.__localeChainCache = new Map();\n ctx.localeFallbacker(ctx, fallback, locale);\n}\n/** @internal */\nfunction isAlmostSameLocale(locale, compareLocale) {\n if (locale === compareLocale)\n return false;\n return locale.split('-')[0] === compareLocale.split('-')[0];\n}\n/** @internal */\nfunction isImplicitFallback(targetLocale, locales) {\n const index = locales.indexOf(targetLocale);\n if (index === -1) {\n return false;\n }\n for (let i = index + 1; i < locales.length; i++) {\n if (isAlmostSameLocale(targetLocale, locales[i])) {\n return true;\n }\n }\n return false;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nfunction format(ast) {\n const msg = (ctx) => formatParts(ctx, ast);\n return msg;\n}\nfunction formatParts(ctx, ast) {\n const body = resolveBody(ast);\n if (body == null) {\n throw createUnhandleNodeError(0 /* NodeTypes.Resource */);\n }\n const type = resolveType(body);\n if (type === 1 /* NodeTypes.Plural */) {\n const plural = body;\n const cases = resolveCases(plural);\n return ctx.plural(cases.reduce((messages, c) => [\n ...messages,\n formatMessageParts(ctx, c)\n ], []));\n }\n else {\n return formatMessageParts(ctx, body);\n }\n}\nconst PROPS_BODY = ['b', 'body'];\nfunction resolveBody(node) {\n return resolveProps(node, PROPS_BODY);\n}\nconst PROPS_CASES = ['c', 'cases'];\nfunction resolveCases(node) {\n return resolveProps(node, PROPS_CASES, []);\n}\nfunction formatMessageParts(ctx, node) {\n const static_ = resolveStatic(node);\n if (static_ != null) {\n return ctx.type === 'text'\n ? static_\n : ctx.normalize([static_]);\n }\n else {\n const messages = resolveItems(node).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []);\n return ctx.normalize(messages);\n }\n}\nconst PROPS_STATIC = ['s', 'static'];\nfunction resolveStatic(node) {\n return resolveProps(node, PROPS_STATIC);\n}\nconst PROPS_ITEMS = ['i', 'items'];\nfunction resolveItems(node) {\n return resolveProps(node, PROPS_ITEMS, []);\n}\nfunction formatMessagePart(ctx, node) {\n const type = resolveType(node);\n switch (type) {\n case 3 /* NodeTypes.Text */: {\n return resolveValue(node, type);\n }\n case 9 /* NodeTypes.Literal */: {\n return resolveValue(node, type);\n }\n case 4 /* NodeTypes.Named */: {\n const named = node;\n if (hasOwn(named, 'k') && named.k) {\n return ctx.interpolate(ctx.named(named.k));\n }\n if (hasOwn(named, 'key') && named.key) {\n return ctx.interpolate(ctx.named(named.key));\n }\n throw createUnhandleNodeError(type);\n }\n case 5 /* NodeTypes.List */: {\n const list = node;\n if (hasOwn(list, 'i') && isNumber(list.i)) {\n return ctx.interpolate(ctx.list(list.i));\n }\n if (hasOwn(list, 'index') && isNumber(list.index)) {\n return ctx.interpolate(ctx.list(list.index));\n }\n throw createUnhandleNodeError(type);\n }\n case 6 /* NodeTypes.Linked */: {\n const linked = node;\n const modifier = resolveLinkedModifier(linked);\n const key = resolveLinkedKey(linked);\n return ctx.linked(formatMessagePart(ctx, key), modifier ? formatMessagePart(ctx, modifier) : undefined, ctx.type);\n }\n case 7 /* NodeTypes.LinkedKey */: {\n return resolveValue(node, type);\n }\n case 8 /* NodeTypes.LinkedModifier */: {\n return resolveValue(node, type);\n }\n default:\n throw new Error(`unhandled node on format message part: ${type}`);\n }\n}\nconst PROPS_TYPE = ['t', 'type'];\nfunction resolveType(node) {\n return resolveProps(node, PROPS_TYPE);\n}\nconst PROPS_VALUE = ['v', 'value'];\nfunction resolveValue(node, type) {\n const resolved = resolveProps(node, PROPS_VALUE);\n if (resolved) {\n return resolved;\n }\n else {\n throw createUnhandleNodeError(type);\n }\n}\nconst PROPS_MODIFIER = ['m', 'modifier'];\nfunction resolveLinkedModifier(node) {\n return resolveProps(node, PROPS_MODIFIER);\n}\nconst PROPS_KEY = ['k', 'key'];\nfunction resolveLinkedKey(node) {\n const resolved = resolveProps(node, PROPS_KEY);\n if (resolved) {\n return resolved;\n }\n else {\n throw createUnhandleNodeError(6 /* NodeTypes.Linked */);\n }\n}\nfunction resolveProps(node, props, defaultValue) {\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (hasOwn(node, prop) && node[prop] != null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return node[prop];\n }\n }\n return defaultValue;\n}\nfunction createUnhandleNodeError(type) {\n return new Error(`unhandled node type: ${type}`);\n}\n\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\nfunction checkHtmlMessage(source, warnHtmlMessage) {\n if (warnHtmlMessage && detectHtmlTag(source)) {\n warn(format$1(WARN_MESSAGE, { source }));\n }\n}\nconst defaultOnCacheKey = (message) => message;\nlet compileCache = create();\nfunction onCompileWarn(_warn) {\n if (_warn.code === CompileWarnCodes.USE_MODULO_SYNTAX) {\n warn(`The use of named interpolation with modulo syntax is deprecated. ` +\n `It will be removed in v10.\\n` +\n `reference: https://vue-i18n.intlify.dev/guide/essentials/syntax#rails-i18n-format \\n` +\n `(message compiler warning message: ${_warn.message})`);\n }\n}\nfunction clearCompileCache() {\n compileCache = create();\n}\nfunction isMessageAST(val) {\n return (isObject(val) &&\n resolveType(val) === 0 &&\n (hasOwn(val, 'b') || hasOwn(val, 'body')));\n}\nfunction baseCompile(message, options = {}) {\n // error detecting on compile\n let detectError = false;\n const onError = options.onError || defaultOnError;\n options.onError = (err) => {\n detectError = true;\n onError(err);\n };\n // compile with mesasge-compiler\n return { ...baseCompile$1(message, options), detectError };\n}\n/* #__NO_SIDE_EFFECTS__ */\nconst compileToFunction = (message, context) => {\n if (!isString(message)) {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE);\n }\n // set onWarn\n if ((process.env.NODE_ENV !== 'production')) {\n context.onWarn = onCompileWarn;\n }\n {\n // check HTML message\n const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n ? context.warnHtmlMessage\n : true;\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n // check caches\n const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n const cacheKey = onCacheKey(message);\n const cached = compileCache[cacheKey];\n if (cached) {\n return cached;\n }\n // compile\n const { code, detectError } = baseCompile(message, context);\n // evaluate function\n const msg = new Function(`return ${code}`)();\n // if occurred compile error, don't cache\n return !detectError\n ? (compileCache[cacheKey] = msg)\n : msg;\n }\n};\nfunction compile(message, context) {\n // set onWarn\n if ((process.env.NODE_ENV !== 'production')) {\n context.onWarn = onCompileWarn;\n }\n if (((__INTLIFY_JIT_COMPILATION__ && !__INTLIFY_DROP_MESSAGE_COMPILER__)) &&\n isString(message)) {\n // check HTML message\n const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n ? context.warnHtmlMessage\n : true;\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n // check caches\n const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n const cacheKey = onCacheKey(message);\n const cached = compileCache[cacheKey];\n if (cached) {\n return cached;\n }\n // compile with JIT mode\n const { ast, detectError } = baseCompile(message, {\n ...context,\n location: (process.env.NODE_ENV !== 'production'),\n jit: true\n });\n // compose message function from AST\n const msg = format(ast);\n // if occurred compile error, don't cache\n return !detectError\n ? (compileCache[cacheKey] = msg)\n : msg;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && !isMessageAST(message)) {\n warn(`the message that is resolve with key '${context.key}' is not supported for jit compilation`);\n return (() => message);\n }\n // AST case (passed from bundler)\n const cacheKey = message.cacheKey;\n if (cacheKey) {\n const cached = compileCache[cacheKey];\n if (cached) {\n return cached;\n }\n // compose message function from message (AST)\n return (compileCache[cacheKey] =\n format(message));\n }\n else {\n return format(message);\n }\n }\n}\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\nconst isMessageFunction = (val) => isFunction(val);\n// implementation of `translate` function\nfunction translate(context, ...args) {\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\n const [key, options] = parseTranslateArgs(...args);\n const missingWarn = isBoolean(options.missingWarn)\n ? options.missingWarn\n : context.missingWarn;\n const fallbackWarn = isBoolean(options.fallbackWarn)\n ? options.fallbackWarn\n : context.fallbackWarn;\n const escapeParameter = isBoolean(options.escapeParameter)\n ? options.escapeParameter\n : context.escapeParameter;\n const resolvedMessage = !!options.resolvedMessage;\n // prettier-ignore\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\n ? !isBoolean(options.default)\n ? options.default\n : (!messageCompiler ? () => key : key)\n : fallbackFormat // default by `fallbackFormat` option\n ? (!messageCompiler ? () => key : key)\n : '';\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\n const locale = getLocale(context, options);\n // escape params\n escapeParameter && escapeParams(options);\n // resolve message format\n // eslint-disable-next-line prefer-const\n let [formatScope, targetLocale, message] = !resolvedMessage\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\n : [\n key,\n locale,\n messages[locale] || create()\n ];\n // NOTE:\n // Fix to work around `ssrTransfrom` bug in Vite.\n // https://github.com/vitejs/vite/issues/4306\n // To get around this, use temporary variables.\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\n let format = formatScope;\n // if you use default message, set it as message format!\n let cacheBaseKey = key;\n if (!resolvedMessage &&\n !(isString(format) ||\n isMessageAST(format) ||\n isMessageFunction(format))) {\n if (enableDefaultMsg) {\n format = defaultMsgOrKey;\n cacheBaseKey = format;\n }\n }\n // checking message format and target locale\n if (!resolvedMessage &&\n (!(isString(format) ||\n isMessageAST(format) ||\n isMessageFunction(format)) ||\n !isString(targetLocale))) {\n return unresolving ? NOT_REOSLVED : key;\n }\n // TODO: refactor\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\n warn(`The message format compilation is not supported in this build. ` +\n `Because message compiler isn't included. ` +\n `You need to pre-compilation all message format. ` +\n `So translate function return '${key}'.`);\n return key;\n }\n // setup compile error detecting\n let occurred = false;\n const onError = () => {\n occurred = true;\n };\n // compile message format\n const msg = !isMessageFunction(format)\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError)\n : format;\n // if occurred compile error, return the message format\n if (occurred) {\n return format;\n }\n // evaluate message with context\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\n const msgContext = createMessageContext(ctxOptions);\n const messaged = evaluateMessage(context, msg, msgContext);\n // if use post translation option, proceed it with handler\n const ret = postTranslation\n ? postTranslation(messaged, key)\n : messaged;\n // NOTE: experimental !!\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n // prettier-ignore\n const payloads = {\n timestamp: Date.now(),\n key: isString(key)\n ? key\n : isMessageFunction(format)\n ? format.key\n : '',\n locale: targetLocale || (isMessageFunction(format)\n ? format.locale\n : ''),\n format: isString(format)\n ? format\n : isMessageFunction(format)\n ? format.source\n : '',\n message: ret\n };\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\n translateDevTools(payloads);\n }\n return ret;\n}\nfunction escapeParams(options) {\n if (isArray(options.list)) {\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\n }\n else if (isObject(options.named)) {\n Object.keys(options.named).forEach(key => {\n if (isString(options.named[key])) {\n options.named[key] = escapeHtml(options.named[key]);\n }\n });\n }\n}\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\n let message = create();\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'translate';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ((process.env.NODE_ENV !== 'production') &&\n locale !== targetLocale &&\n !isAlmostSameLocale(locale, targetLocale) &&\n isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n message =\n messages[targetLocale] || create();\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-resolve-start';\n endTag = 'intlify-message-resolve-end';\n mark && mark(startTag);\n }\n if ((format = resolveValue(message, key)) === null) {\n // if null, resolve with object key path\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start && format) {\n emitter.emit(\"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */, {\n type: \"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */,\n key,\n message: format,\n time: end - start,\n groupId: `${type}:${key}`\n });\n }\n if (startTag && endTag && mark && measure) {\n mark(endTag);\n measure('intlify message resolve', startTag, endTag);\n }\n }\n if (isString(format) || isMessageAST(format) || isMessageFunction(format)) {\n break;\n }\n if (!isImplicitFallback(targetLocale, locales)) {\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n key, targetLocale, missingWarn, type);\n if (missingRet !== key) {\n format = missingRet;\n }\n }\n from = to;\n }\n return [format, targetLocale, message];\n}\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) {\n const { messageCompiler, warnHtmlMessage } = context;\n if (isMessageFunction(format)) {\n const msg = format;\n msg.locale = msg.locale || targetLocale;\n msg.key = msg.key || key;\n return msg;\n }\n if (messageCompiler == null) {\n const msg = (() => format);\n msg.locale = targetLocale;\n msg.key = key;\n return msg;\n }\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-compilation-start';\n endTag = 'intlify-message-compilation-end';\n mark && mark(startTag);\n }\n const msg = messageCompiler(format, getCompileContext(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, onError));\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start) {\n emitter.emit(\"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */, {\n type: \"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */,\n message: format,\n time: end - start,\n groupId: `${'translate'}:${key}`\n });\n }\n if (startTag && endTag && mark && measure) {\n mark(endTag);\n measure('intlify message compilation', startTag, endTag);\n }\n }\n msg.locale = targetLocale;\n msg.key = key;\n msg.source = format;\n return msg;\n}\nfunction evaluateMessage(context, msg, msgCtx) {\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-evaluation-start';\n endTag = 'intlify-message-evaluation-end';\n mark && mark(startTag);\n }\n const messaged = msg(msgCtx);\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start) {\n emitter.emit(\"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */, {\n type: \"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */,\n value: messaged,\n time: end - start,\n groupId: `${'translate'}:${msg.key}`\n });\n }\n if (startTag && endTag && mark && measure) {\n mark(endTag);\n measure('intlify message evaluation', startTag, endTag);\n }\n }\n return messaged;\n}\n/** @internal */\nfunction parseTranslateArgs(...args) {\n const [arg1, arg2, arg3] = args;\n const options = create();\n if (!isString(arg1) &&\n !isNumber(arg1) &&\n !isMessageFunction(arg1) &&\n !isMessageAST(arg1)) {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n // prettier-ignore\n const key = isNumber(arg1)\n ? String(arg1)\n : isMessageFunction(arg1)\n ? arg1\n : arg1;\n if (isNumber(arg2)) {\n options.plural = arg2;\n }\n else if (isString(arg2)) {\n options.default = arg2;\n }\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\n options.named = arg2;\n }\n else if (isArray(arg2)) {\n options.list = arg2;\n }\n if (isNumber(arg3)) {\n options.plural = arg3;\n }\n else if (isString(arg3)) {\n options.default = arg3;\n }\n else if (isPlainObject(arg3)) {\n assign(options, arg3);\n }\n return [key, options];\n}\nfunction getCompileContext(context, locale, key, source, warnHtmlMessage, onError) {\n return {\n locale,\n key,\n warnHtmlMessage,\n onError: (err) => {\n onError && onError(err);\n if ((process.env.NODE_ENV !== 'production')) {\n const _source = getSourceForCodeFrame(source);\n const message = `Message compilation error: ${err.message}`;\n const codeFrame = err.location &&\n _source &&\n generateCodeFrame(_source, err.location.start.offset, err.location.end.offset);\n const emitter = context.__v_emitter;\n if (emitter && _source) {\n emitter.emit(\"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */, {\n message: _source,\n error: err.message,\n start: err.location && err.location.start.offset,\n end: err.location && err.location.end.offset,\n groupId: `${'translate'}:${key}`\n });\n }\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\n }\n else {\n throw err;\n }\n },\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\n };\n}\nfunction getSourceForCodeFrame(source) {\n if (isString(source)) {\n return source;\n }\n else {\n if (source.loc && source.loc.source) {\n return source.loc.source;\n }\n }\n}\nfunction getMessageContextOptions(context, locale, message, options) {\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\n const resolveMessage = (key) => {\n let val = resolveValue(message, key);\n // fallback to root context\n if (val == null && fallbackContext) {\n const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\n val = resolveValue(message, key);\n }\n if (isString(val) || isMessageAST(val)) {\n let occurred = false;\n const onError = () => {\n occurred = true;\n };\n const msg = compileMessageFormat(context, key, locale, val, key, onError);\n return !occurred\n ? msg\n : NOOP_MESSAGE_FUNCTION;\n }\n else if (isMessageFunction(val)) {\n return val;\n }\n else {\n // TODO: should be implemented warning message\n return NOOP_MESSAGE_FUNCTION;\n }\n };\n const ctxOptions = {\n locale,\n modifiers,\n pluralRules,\n messages: resolveMessage\n };\n if (context.processor) {\n ctxOptions.processor = context.processor;\n }\n if (options.list) {\n ctxOptions.list = options.list;\n }\n if (options.named) {\n ctxOptions.named = options.named;\n }\n if (isNumber(options.plural)) {\n ctxOptions.pluralIndex = options.plural;\n }\n return ctxOptions;\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\nconst Availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n};\n\n// implementation of `datetime` function\nfunction datetime(context, ...args) {\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n const { __datetimeFormatters } = context;\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\n return MISSING_RESOLVE_VALUE;\n }\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\n const missingWarn = isBoolean(options.missingWarn)\n ? options.missingWarn\n : context.missingWarn;\n const fallbackWarn = isBoolean(options.fallbackWarn)\n ? options.fallbackWarn\n : context.fallbackWarn;\n const part = !!options.part;\n const locale = getLocale(context, options);\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n fallbackLocale, locale);\n if (!isString(key) || key === '') {\n return new Intl.DateTimeFormat(locale, overrides).format(value);\n }\n // resolve format\n let datetimeFormat = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'datetime format';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ((process.env.NODE_ENV !== 'production') &&\n locale !== targetLocale &&\n isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n datetimeFormat =\n datetimeFormats[targetLocale] || {};\n format = datetimeFormat[key];\n if (isPlainObject(format))\n break;\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n from = to;\n }\n // checking format and target locale\n if (!isPlainObject(format) || !isString(targetLocale)) {\n return unresolving ? NOT_REOSLVED : key;\n }\n let id = `${targetLocale}__${key}`;\n if (!isEmptyObject(overrides)) {\n id = `${id}__${JSON.stringify(overrides)}`;\n }\n let formatter = __datetimeFormatters.get(id);\n if (!formatter) {\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\n __datetimeFormatters.set(id, formatter);\n }\n return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\n 'localeMatcher',\n 'weekday',\n 'era',\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'timeZoneName',\n 'formatMatcher',\n 'hour12',\n 'timeZone',\n 'dateStyle',\n 'timeStyle',\n 'calendar',\n 'dayPeriod',\n 'numberingSystem',\n 'hourCycle',\n 'fractionalSecondDigits'\n];\n/** @internal */\nfunction parseDateTimeArgs(...args) {\n const [arg1, arg2, arg3, arg4] = args;\n const options = create();\n let overrides = create();\n let value;\n if (isString(arg1)) {\n // Only allow ISO strings - other date formats are often supported,\n // but may cause different results in different browsers.\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\n if (!matches) {\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n }\n // Some browsers can not parse the iso datetime separated by space,\n // this is a compromise solution by replace the 'T'/' ' with 'T'\n const dateTime = matches[3]\n ? matches[3].trim().startsWith('T')\n ? `${matches[1].trim()}${matches[3].trim()}`\n : `${matches[1].trim()}T${matches[3].trim()}`\n : matches[1].trim();\n value = new Date(dateTime);\n try {\n // This will fail if the date is not valid\n value.toISOString();\n }\n catch (e) {\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n }\n }\n else if (isDate(arg1)) {\n if (isNaN(arg1.getTime())) {\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\n }\n value = arg1;\n }\n else if (isNumber(arg1)) {\n value = arg1;\n }\n else {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n if (isString(arg2)) {\n options.key = arg2;\n }\n else if (isPlainObject(arg2)) {\n Object.keys(arg2).forEach(key => {\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\n overrides[key] = arg2[key];\n }\n else {\n options[key] = arg2[key];\n }\n });\n }\n if (isString(arg3)) {\n options.locale = arg3;\n }\n else if (isPlainObject(arg3)) {\n overrides = arg3;\n }\n if (isPlainObject(arg4)) {\n overrides = arg4;\n }\n return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearDateTimeFormat(ctx, locale, format) {\n const context = ctx;\n for (const key in format) {\n const id = `${locale}__${key}`;\n if (!context.__datetimeFormatters.has(id)) {\n continue;\n }\n context.__datetimeFormatters.delete(id);\n }\n}\n\n// implementation of `number` function\nfunction number(context, ...args) {\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n const { __numberFormatters } = context;\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\n return MISSING_RESOLVE_VALUE;\n }\n const [key, value, options, overrides] = parseNumberArgs(...args);\n const missingWarn = isBoolean(options.missingWarn)\n ? options.missingWarn\n : context.missingWarn;\n const fallbackWarn = isBoolean(options.fallbackWarn)\n ? options.fallbackWarn\n : context.fallbackWarn;\n const part = !!options.part;\n const locale = getLocale(context, options);\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n fallbackLocale, locale);\n if (!isString(key) || key === '') {\n return new Intl.NumberFormat(locale, overrides).format(value);\n }\n // resolve format\n let numberFormat = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'number format';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ((process.env.NODE_ENV !== 'production') &&\n locale !== targetLocale &&\n isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n numberFormat =\n numberFormats[targetLocale] || {};\n format = numberFormat[key];\n if (isPlainObject(format))\n break;\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n from = to;\n }\n // checking format and target locale\n if (!isPlainObject(format) || !isString(targetLocale)) {\n return unresolving ? NOT_REOSLVED : key;\n }\n let id = `${targetLocale}__${key}`;\n if (!isEmptyObject(overrides)) {\n id = `${id}__${JSON.stringify(overrides)}`;\n }\n let formatter = __numberFormatters.get(id);\n if (!formatter) {\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\n __numberFormatters.set(id, formatter);\n }\n return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\n 'localeMatcher',\n 'style',\n 'currency',\n 'currencyDisplay',\n 'currencySign',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits',\n 'compactDisplay',\n 'notation',\n 'signDisplay',\n 'unit',\n 'unitDisplay',\n 'roundingMode',\n 'roundingPriority',\n 'roundingIncrement',\n 'trailingZeroDisplay'\n];\n/** @internal */\nfunction parseNumberArgs(...args) {\n const [arg1, arg2, arg3, arg4] = args;\n const options = create();\n let overrides = create();\n if (!isNumber(arg1)) {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n const value = arg1;\n if (isString(arg2)) {\n options.key = arg2;\n }\n else if (isPlainObject(arg2)) {\n Object.keys(arg2).forEach(key => {\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\n overrides[key] = arg2[key];\n }\n else {\n options[key] = arg2[key];\n }\n });\n }\n if (isString(arg3)) {\n options.locale = arg3;\n }\n else if (isPlainObject(arg3)) {\n overrides = arg3;\n }\n if (isPlainObject(arg4)) {\n overrides = arg4;\n }\n return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearNumberFormat(ctx, locale, format) {\n const context = ctx;\n for (const key in format) {\n const id = `${locale}__${key}`;\n if (!context.__numberFormatters.has(id)) {\n continue;\n }\n context.__numberFormatters.delete(id);\n }\n}\n\n{\n initFeatureFlags();\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compile, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getLocale, getWarnMessage, handleMissing, initI18nDevTools, isAlmostSameLocale, isImplicitFallback, isMessageAST, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveLocale, resolveValue$1 as resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/*!\n * vue-i18n v9.14.2\n * (c) 2024 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, incrementer, format, makeSymbol, isPlainObject, isArray, create, deepCopy, isString, hasOwn, isObject, warn, warnOnce, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CoreErrorCodes, createCompileError, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, isMessageAST, isMessageFunction, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageCompiler, compile, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, computed, watch, getCurrentInstance, ref, shallowRef, Fragment, defineComponent, h, effectScope, inject, onMounted, onUnmounted, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * Vue I18n Version\n *\n * @remarks\n * Semver format. Same format as the package.json `version` field.\n *\n * @VueI18nGeneral\n */\nconst VERSION = '9.14.2';\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\n getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\n }\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\n getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\n }\n if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;\n }\n if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n }\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n }\n}\n\nconst code$1 = CoreWarnCodes.__EXTEND_POINT__;\nconst inc$1 = incrementer(code$1);\nconst I18nWarnCodes = {\n FALLBACK_TO_ROOT: code$1, // 9\n NOT_SUPPORTED_PRESERVE: inc$1(), // 10\n NOT_SUPPORTED_FORMATTER: inc$1(), // 11\n NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(), // 12\n NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(), // 13\n COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(), // 14\n NOT_FOUND_PARENT_SCOPE: inc$1(), // 15\n IGNORE_OBJ_FLATTEN: inc$1(), // 16\n NOTICE_DROP_ALLOW_COMPOSITION: inc$1(), // 17\n NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG: inc$1() // 18\n};\nconst warnMessages = {\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\n [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\n [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\n [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,\n [I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`,\n [I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION]: `'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze`,\n [I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG]: `'translateExistCompatible' option will be dropped in the next major version.`\n};\nfunction getWarnMessage(code, ...args) {\n return format(warnMessages[code], ...args);\n}\n\nconst code = CoreErrorCodes.__EXTEND_POINT__;\nconst inc = incrementer(code);\nconst I18nErrorCodes = {\n // composer module errors\n UNEXPECTED_RETURN_TYPE: code, // 24\n // legacy module errors\n INVALID_ARGUMENT: inc(), // 25\n // i18n module errors\n MUST_BE_CALL_SETUP_TOP: inc(), // 26\n NOT_INSTALLED: inc(), // 27\n NOT_AVAILABLE_IN_LEGACY_MODE: inc(), // 28\n // directive module errors\n REQUIRED_VALUE: inc(), // 29\n INVALID_VALUE: inc(), // 30\n // vue-devtools errors\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(), // 31\n NOT_INSTALLED_WITH_PROVIDE: inc(), // 32\n // unexpected error\n UNEXPECTED_ERROR: inc(), // 33\n // not compatible legacy vue-i18n constructor\n NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(), // 34\n // bridge support vue 2.x only\n BRIDGE_SUPPORT_VUE_2_ONLY: inc(), // 35\n // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\n MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(), // 36\n // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\n NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(), // 37\n // for enhancement\n __EXTEND_POINT__: inc() // 38\n};\nfunction createI18nError(code, ...args) {\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\n}\nconst errorMessages = {\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\n [I18nErrorCodes.NOT_INSTALLED]: 'Need to install with `app.use` function',\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\n [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\n [I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\n [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\n [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\n [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\n};\n\nconst TranslateVNodeSymbol = \n/* #__PURE__*/ makeSymbol('__translateVNode');\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\nmakeSymbol('__intlifyMeta');\nconst InejctWithOptionSymbol = \n/* #__PURE__*/ makeSymbol('__injectWithOption');\nconst DisposeSymbol = /* #__PURE__*/ makeSymbol('__dispose');\nconst __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Transform flat json in obj to normal json in obj\n */\nfunction handleFlatJson(obj) {\n // check obj\n if (!isObject(obj)) {\n return obj;\n }\n for (const key in obj) {\n // check key\n if (!hasOwn(obj, key)) {\n continue;\n }\n // handle for normal json\n if (!key.includes('.')) {\n // recursive process value if value is also a object\n if (isObject(obj[key])) {\n handleFlatJson(obj[key]);\n }\n }\n // handle for flat json, transform to normal json\n else {\n // go to the last object\n const subKeys = key.split('.');\n const lastIndex = subKeys.length - 1;\n let currentObj = obj;\n let hasStringValue = false;\n for (let i = 0; i < lastIndex; i++) {\n if (!(subKeys[i] in currentObj)) {\n currentObj[subKeys[i]] = create();\n }\n if (!isObject(currentObj[subKeys[i]])) {\n (process.env.NODE_ENV !== 'production') &&\n warn(getWarnMessage(I18nWarnCodes.IGNORE_OBJ_FLATTEN, {\n key: subKeys[i]\n }));\n hasStringValue = true;\n break;\n }\n currentObj = currentObj[subKeys[i]];\n }\n // update last object value, delete old property\n if (!hasStringValue) {\n currentObj[subKeys[lastIndex]] = obj[key];\n delete obj[key];\n }\n // recursive process value if value is also a object\n if (isObject(currentObj[subKeys[lastIndex]])) {\n handleFlatJson(currentObj[subKeys[lastIndex]]);\n }\n }\n }\n return obj;\n}\nfunction getLocaleMessages(locale, options) {\n const { messages, __i18n, messageResolver, flatJson } = options;\n // prettier-ignore\n const ret = (isPlainObject(messages)\n ? messages\n : isArray(__i18n)\n ? create()\n : { [locale]: create() });\n // merge locale messages of i18n custom block\n if (isArray(__i18n)) {\n __i18n.forEach(custom => {\n if ('locale' in custom && 'resource' in custom) {\n const { locale, resource } = custom;\n if (locale) {\n ret[locale] = ret[locale] || create();\n deepCopy(resource, ret[locale]);\n }\n else {\n deepCopy(resource, ret);\n }\n }\n else {\n isString(custom) && deepCopy(JSON.parse(custom), ret);\n }\n });\n }\n // handle messages for flat json\n if (messageResolver == null && flatJson) {\n for (const key in ret) {\n if (hasOwn(ret, key)) {\n handleFlatJson(ret[key]);\n }\n }\n }\n return ret;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getComponentOptions(instance) {\n return instance.type ;\n}\nfunction adjustI18nResources(gl, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n let messages = isObject(options.messages)\n ? options.messages\n : create();\n if ('__i18nGlobal' in componentOptions) {\n messages = getLocaleMessages(gl.locale.value, {\n messages,\n __i18n: componentOptions.__i18nGlobal\n });\n }\n // merge locale messages\n const locales = Object.keys(messages);\n if (locales.length) {\n locales.forEach(locale => {\n gl.mergeLocaleMessage(locale, messages[locale]);\n });\n }\n {\n // merge datetime formats\n if (isObject(options.datetimeFormats)) {\n const locales = Object.keys(options.datetimeFormats);\n if (locales.length) {\n locales.forEach(locale => {\n gl.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\n });\n }\n }\n // merge number formats\n if (isObject(options.numberFormats)) {\n const locales = Object.keys(options.numberFormats);\n if (locales.length) {\n locales.forEach(locale => {\n gl.mergeNumberFormat(locale, options.numberFormats[locale]);\n });\n }\n }\n }\n}\nfunction createTextNode(key) {\n return createVNode(Text, null, key, 0)\n ;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// extend VNode interface\nconst DEVTOOLS_META = '__INTLIFY_META__';\nconst NOOP_RETURN_ARRAY = () => [];\nconst NOOP_RETURN_FALSE = () => false;\nlet composerID = 0;\nfunction defineCoreMissingHandler(missing) {\n return ((ctx, locale, key, type) => {\n return missing(locale, key, getCurrentInstance() || undefined, type);\n });\n}\n// for Intlify DevTools\n/* #__NO_SIDE_EFFECTS__ */\nconst getMetaInfo = () => {\n const instance = getCurrentInstance();\n let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\n ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\n : null;\n};\n/**\n * Create composer interface factory\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction createComposer(options = {}, VueI18nLegacy) {\n const { __root, __injectWithOption } = options;\n const _isGlobal = __root === undefined;\n const flatJson = options.flatJson;\n const _ref = inBrowser ? ref : shallowRef;\n const translateExistCompatible = !!options.translateExistCompatible;\n if ((process.env.NODE_ENV !== 'production')) {\n if (translateExistCompatible && !false) {\n warnOnce(getWarnMessage(I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG));\n }\n }\n let _inheritLocale = isBoolean(options.inheritLocale)\n ? options.inheritLocale\n : true;\n const _locale = _ref(\n // prettier-ignore\n __root && _inheritLocale\n ? __root.locale.value\n : isString(options.locale)\n ? options.locale\n : DEFAULT_LOCALE);\n const _fallbackLocale = _ref(\n // prettier-ignore\n __root && _inheritLocale\n ? __root.fallbackLocale.value\n : isString(options.fallbackLocale) ||\n isArray(options.fallbackLocale) ||\n isPlainObject(options.fallbackLocale) ||\n options.fallbackLocale === false\n ? options.fallbackLocale\n : _locale.value);\n const _messages = _ref(getLocaleMessages(_locale.value, options));\n // prettier-ignore\n const _datetimeFormats = _ref(isPlainObject(options.datetimeFormats)\n ? options.datetimeFormats\n : { [_locale.value]: {} })\n ;\n // prettier-ignore\n const _numberFormats = _ref(isPlainObject(options.numberFormats)\n ? options.numberFormats\n : { [_locale.value]: {} })\n ;\n // warning suppress options\n // prettier-ignore\n let _missingWarn = __root\n ? __root.missingWarn\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n ? options.missingWarn\n : true;\n // prettier-ignore\n let _fallbackWarn = __root\n ? __root.fallbackWarn\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n ? options.fallbackWarn\n : true;\n // prettier-ignore\n let _fallbackRoot = __root\n ? __root.fallbackRoot\n : isBoolean(options.fallbackRoot)\n ? options.fallbackRoot\n : true;\n // configure fall back to root\n let _fallbackFormat = !!options.fallbackFormat;\n // runtime missing\n let _missing = isFunction(options.missing) ? options.missing : null;\n let _runtimeMissing = isFunction(options.missing)\n ? defineCoreMissingHandler(options.missing)\n : null;\n // postTranslation handler\n let _postTranslation = isFunction(options.postTranslation)\n ? options.postTranslation\n : null;\n // prettier-ignore\n let _warnHtmlMessage = __root\n ? __root.warnHtmlMessage\n : isBoolean(options.warnHtmlMessage)\n ? options.warnHtmlMessage\n : true;\n let _escapeParameter = !!options.escapeParameter;\n // custom linked modifiers\n // prettier-ignore\n const _modifiers = __root\n ? __root.modifiers\n : isPlainObject(options.modifiers)\n ? options.modifiers\n : {};\n // pluralRules\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\n // runtime context\n // eslint-disable-next-line prefer-const\n let _context;\n const getCoreContext = () => {\n _isGlobal && setFallbackContext(null);\n const ctxOptions = {\n version: VERSION,\n locale: _locale.value,\n fallbackLocale: _fallbackLocale.value,\n messages: _messages.value,\n modifiers: _modifiers,\n pluralRules: _pluralRules,\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\n missingWarn: _missingWarn,\n fallbackWarn: _fallbackWarn,\n fallbackFormat: _fallbackFormat,\n unresolving: true,\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\n warnHtmlMessage: _warnHtmlMessage,\n escapeParameter: _escapeParameter,\n messageResolver: options.messageResolver,\n messageCompiler: options.messageCompiler,\n __meta: { framework: 'vue' }\n };\n {\n ctxOptions.datetimeFormats = _datetimeFormats.value;\n ctxOptions.numberFormats = _numberFormats.value;\n ctxOptions.__datetimeFormatters = isPlainObject(_context)\n ? _context.__datetimeFormatters\n : undefined;\n ctxOptions.__numberFormatters = isPlainObject(_context)\n ? _context.__numberFormatters\n : undefined;\n }\n if ((process.env.NODE_ENV !== 'production')) {\n ctxOptions.__v_emitter = isPlainObject(_context)\n ? _context.__v_emitter\n : undefined;\n }\n const ctx = createCoreContext(ctxOptions);\n _isGlobal && setFallbackContext(ctx);\n return ctx;\n };\n _context = getCoreContext();\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n // track reactivity\n function trackReactivityValues() {\n return [\n _locale.value,\n _fallbackLocale.value,\n _messages.value,\n _datetimeFormats.value,\n _numberFormats.value\n ]\n ;\n }\n // locale\n const locale = computed({\n get: () => _locale.value,\n set: val => {\n _locale.value = val;\n _context.locale = _locale.value;\n }\n });\n // fallbackLocale\n const fallbackLocale = computed({\n get: () => _fallbackLocale.value,\n set: val => {\n _fallbackLocale.value = val;\n _context.fallbackLocale = _fallbackLocale.value;\n updateFallbackLocale(_context, _locale.value, val);\n }\n });\n // messages\n const messages = computed(() => _messages.value);\n // datetimeFormats\n const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\n // numberFormats\n const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\n // getPostTranslationHandler\n function getPostTranslationHandler() {\n return isFunction(_postTranslation) ? _postTranslation : null;\n }\n // setPostTranslationHandler\n function setPostTranslationHandler(handler) {\n _postTranslation = handler;\n _context.postTranslation = handler;\n }\n // getMissingHandler\n function getMissingHandler() {\n return _missing;\n }\n // setMissingHandler\n function setMissingHandler(handler) {\n if (handler !== null) {\n _runtimeMissing = defineCoreMissingHandler(handler);\n }\n _missing = handler;\n _context.missing = _runtimeMissing;\n }\n function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n return type !== 'translate' || !arg.resolvedMessage;\n }\n const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\n trackReactivityValues(); // track reactive dependency\n // NOTE: experimental !!\n let ret;\n try {\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n setAdditionalMeta(getMetaInfo());\n }\n if (!_isGlobal) {\n _context.fallbackContext = __root\n ? getFallbackContext()\n : undefined;\n }\n ret = fn(_context);\n }\n finally {\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n setAdditionalMeta(null);\n }\n if (!_isGlobal) {\n _context.fallbackContext = undefined;\n }\n }\n if ((warnType !== 'translate exists' && // for not `te` (e.g `t`)\n isNumber(ret) &&\n ret === NOT_REOSLVED) ||\n (warnType === 'translate exists' && !ret) // for `te`\n ) {\n const [key, arg2] = argumentParser();\n if ((process.env.NODE_ENV !== 'production') &&\n __root &&\n isString(key) &&\n isResolvedTranslateMessage(warnType, arg2)) {\n if (_fallbackRoot &&\n (isTranslateFallbackWarn(_fallbackWarn, key) ||\n isTranslateMissingWarn(_missingWarn, key))) {\n warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\n key,\n type: warnType\n }));\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n const { __v_emitter: emitter } = _context;\n if (emitter && _fallbackRoot) {\n emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n type: warnType,\n key,\n to: 'global',\n groupId: `${warnType}:${key}`\n });\n }\n }\n }\n return __root && _fallbackRoot\n ? fallbackSuccess(__root)\n : fallbackFail(key);\n }\n else if (successCondition(ret)) {\n return ret;\n }\n else {\n /* istanbul ignore next */\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\n }\n };\n // t\n function t(...args) {\n return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\n }\n // rt\n function rt(...args) {\n const [arg1, arg2, arg3] = args;\n if (arg3 && !isObject(arg3)) {\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n }\n return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\n }\n // d\n function d(...args) {\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n }\n // n\n function n(...args) {\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n }\n // for custom processor\n function normalize(values) {\n return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\n ? createTextNode(String(val))\n : val);\n }\n const interpolate = (val) => val;\n const processor = {\n normalize,\n interpolate,\n type: 'vnode'\n };\n // translateVNode, using for `i18n-t` component\n function translateVNode(...args) {\n return wrapWithDeps(context => {\n let ret;\n const _context = context;\n try {\n _context.processor = processor;\n ret = Reflect.apply(translate, null, [_context, ...args]);\n }\n finally {\n _context.processor = null;\n }\n return ret;\n }, () => parseTranslateArgs(...args), 'translate', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n root => root[TranslateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\n }\n // numberParts, using for `i18n-n` component\n function numberParts(...args) {\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n root => root[NumberPartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n }\n // datetimeParts, using for `i18n-d` component\n function datetimeParts(...args) {\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n root => root[DatetimePartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n }\n function setPluralRules(rules) {\n _pluralRules = rules;\n _context.pluralRules = _pluralRules;\n }\n // te\n function te(key, locale) {\n return wrapWithDeps(() => {\n if (!key) {\n return false;\n }\n const targetLocale = isString(locale) ? locale : _locale.value;\n const message = getLocaleMessage(targetLocale);\n const resolved = _context.messageResolver(message, key);\n return !translateExistCompatible\n ? isMessageAST(resolved) ||\n isMessageFunction(resolved) ||\n isString(resolved)\n : resolved != null;\n }, () => [key], 'translate exists', root => {\n return Reflect.apply(root.te, root, [key, locale]);\n }, NOOP_RETURN_FALSE, val => isBoolean(val));\n }\n function resolveMessages(key) {\n let messages = null;\n const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\n for (let i = 0; i < locales.length; i++) {\n const targetLocaleMessages = _messages.value[locales[i]] || {};\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\n if (messageValue != null) {\n messages = messageValue;\n break;\n }\n }\n return messages;\n }\n // tm\n function tm(key) {\n const messages = resolveMessages(key);\n // prettier-ignore\n return messages != null\n ? messages\n : __root\n ? __root.tm(key) || {}\n : {};\n }\n // getLocaleMessage\n function getLocaleMessage(locale) {\n return (_messages.value[locale] || {});\n }\n // setLocaleMessage\n function setLocaleMessage(locale, message) {\n if (flatJson) {\n const _message = { [locale]: message };\n for (const key in _message) {\n if (hasOwn(_message, key)) {\n handleFlatJson(_message[key]);\n }\n }\n message = _message[locale];\n }\n _messages.value[locale] = message;\n _context.messages = _messages.value;\n }\n // mergeLocaleMessage\n function mergeLocaleMessage(locale, message) {\n _messages.value[locale] = _messages.value[locale] || {};\n const _message = { [locale]: message };\n if (flatJson) {\n for (const key in _message) {\n if (hasOwn(_message, key)) {\n handleFlatJson(_message[key]);\n }\n }\n }\n message = _message[locale];\n deepCopy(message, _messages.value[locale]);\n _context.messages = _messages.value;\n }\n // getDateTimeFormat\n function getDateTimeFormat(locale) {\n return _datetimeFormats.value[locale] || {};\n }\n // setDateTimeFormat\n function setDateTimeFormat(locale, format) {\n _datetimeFormats.value[locale] = format;\n _context.datetimeFormats = _datetimeFormats.value;\n clearDateTimeFormat(_context, locale, format);\n }\n // mergeDateTimeFormat\n function mergeDateTimeFormat(locale, format) {\n _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\n _context.datetimeFormats = _datetimeFormats.value;\n clearDateTimeFormat(_context, locale, format);\n }\n // getNumberFormat\n function getNumberFormat(locale) {\n return _numberFormats.value[locale] || {};\n }\n // setNumberFormat\n function setNumberFormat(locale, format) {\n _numberFormats.value[locale] = format;\n _context.numberFormats = _numberFormats.value;\n clearNumberFormat(_context, locale, format);\n }\n // mergeNumberFormat\n function mergeNumberFormat(locale, format) {\n _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\n _context.numberFormats = _numberFormats.value;\n clearNumberFormat(_context, locale, format);\n }\n // for debug\n composerID++;\n // watch root locale & fallbackLocale\n if (__root && inBrowser) {\n watch(__root.locale, (val) => {\n if (_inheritLocale) {\n _locale.value = val;\n _context.locale = val;\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n }\n });\n watch(__root.fallbackLocale, (val) => {\n if (_inheritLocale) {\n _fallbackLocale.value = val;\n _context.fallbackLocale = val;\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n }\n });\n }\n // define basic composition API!\n const composer = {\n id: composerID,\n locale,\n fallbackLocale,\n get inheritLocale() {\n return _inheritLocale;\n },\n set inheritLocale(val) {\n _inheritLocale = val;\n if (val && __root) {\n _locale.value = __root.locale.value;\n _fallbackLocale.value = __root.fallbackLocale.value;\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n }\n },\n get availableLocales() {\n return Object.keys(_messages.value).sort();\n },\n messages,\n get modifiers() {\n return _modifiers;\n },\n get pluralRules() {\n return _pluralRules || {};\n },\n get isGlobal() {\n return _isGlobal;\n },\n get missingWarn() {\n return _missingWarn;\n },\n set missingWarn(val) {\n _missingWarn = val;\n _context.missingWarn = _missingWarn;\n },\n get fallbackWarn() {\n return _fallbackWarn;\n },\n set fallbackWarn(val) {\n _fallbackWarn = val;\n _context.fallbackWarn = _fallbackWarn;\n },\n get fallbackRoot() {\n return _fallbackRoot;\n },\n set fallbackRoot(val) {\n _fallbackRoot = val;\n },\n get fallbackFormat() {\n return _fallbackFormat;\n },\n set fallbackFormat(val) {\n _fallbackFormat = val;\n _context.fallbackFormat = _fallbackFormat;\n },\n get warnHtmlMessage() {\n return _warnHtmlMessage;\n },\n set warnHtmlMessage(val) {\n _warnHtmlMessage = val;\n _context.warnHtmlMessage = val;\n },\n get escapeParameter() {\n return _escapeParameter;\n },\n set escapeParameter(val) {\n _escapeParameter = val;\n _context.escapeParameter = val;\n },\n t,\n getLocaleMessage,\n setLocaleMessage,\n mergeLocaleMessage,\n getPostTranslationHandler,\n setPostTranslationHandler,\n getMissingHandler,\n setMissingHandler,\n [SetPluralRulesSymbol]: setPluralRules\n };\n {\n composer.datetimeFormats = datetimeFormats;\n composer.numberFormats = numberFormats;\n composer.rt = rt;\n composer.te = te;\n composer.tm = tm;\n composer.d = d;\n composer.n = n;\n composer.getDateTimeFormat = getDateTimeFormat;\n composer.setDateTimeFormat = setDateTimeFormat;\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\n composer.getNumberFormat = getNumberFormat;\n composer.setNumberFormat = setNumberFormat;\n composer.mergeNumberFormat = mergeNumberFormat;\n composer[InejctWithOptionSymbol] = __injectWithOption;\n composer[TranslateVNodeSymbol] = translateVNode;\n composer[DatetimePartsSymbol] = datetimeParts;\n composer[NumberPartsSymbol] = numberParts;\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n composer[EnableEmitter] = (emitter) => {\n _context.__v_emitter = emitter;\n };\n composer[DisableEmitter] = () => {\n _context.__v_emitter = undefined;\n };\n }\n return composer;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Convert to I18n Composer Options from VueI18n Options\n *\n * @internal\n */\nfunction convertComposerOptions(options) {\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\n const fallbackLocale = isString(options.fallbackLocale) ||\n isArray(options.fallbackLocale) ||\n isPlainObject(options.fallbackLocale) ||\n options.fallbackLocale === false\n ? options.fallbackLocale\n : locale;\n const missing = isFunction(options.missing) ? options.missing : undefined;\n const missingWarn = isBoolean(options.silentTranslationWarn) ||\n isRegExp(options.silentTranslationWarn)\n ? !options.silentTranslationWarn\n : true;\n const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\n isRegExp(options.silentFallbackWarn)\n ? !options.silentFallbackWarn\n : true;\n const fallbackRoot = isBoolean(options.fallbackRoot)\n ? options.fallbackRoot\n : true;\n const fallbackFormat = !!options.formatFallbackMessages;\n const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\n const pluralizationRules = options.pluralizationRules;\n const postTranslation = isFunction(options.postTranslation)\n ? options.postTranslation\n : undefined;\n const warnHtmlMessage = isString(options.warnHtmlInMessage)\n ? options.warnHtmlInMessage !== 'off'\n : true;\n const escapeParameter = !!options.escapeParameterHtml;\n const inheritLocale = isBoolean(options.sync) ? options.sync : true;\n if ((process.env.NODE_ENV !== 'production') && options.formatter) {\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n }\n if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n }\n let messages = options.messages;\n if (isPlainObject(options.sharedMessages)) {\n const sharedMessages = options.sharedMessages;\n const locales = Object.keys(sharedMessages);\n messages = locales.reduce((messages, locale) => {\n const message = messages[locale] || (messages[locale] = {});\n assign(message, sharedMessages[locale]);\n return messages;\n }, (messages || {}));\n }\n const { __i18n, __root, __injectWithOption } = options;\n const datetimeFormats = options.datetimeFormats;\n const numberFormats = options.numberFormats;\n const flatJson = options.flatJson;\n const translateExistCompatible = options\n .translateExistCompatible;\n return {\n locale,\n fallbackLocale,\n messages,\n flatJson,\n datetimeFormats,\n numberFormats,\n missing,\n missingWarn,\n fallbackWarn,\n fallbackRoot,\n fallbackFormat,\n modifiers,\n pluralRules: pluralizationRules,\n postTranslation,\n warnHtmlMessage,\n escapeParameter,\n messageResolver: options.messageResolver,\n inheritLocale,\n translateExistCompatible,\n __i18n,\n __root,\n __injectWithOption\n };\n}\n/**\n * create VueI18n interface factory\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction createVueI18n(options = {}, VueI18nLegacy) {\n {\n const composer = createComposer(convertComposerOptions(options));\n const { __extender } = options;\n // defines VueI18n\n const vueI18n = {\n // id\n id: composer.id,\n // locale\n get locale() {\n return composer.locale.value;\n },\n set locale(val) {\n composer.locale.value = val;\n },\n // fallbackLocale\n get fallbackLocale() {\n return composer.fallbackLocale.value;\n },\n set fallbackLocale(val) {\n composer.fallbackLocale.value = val;\n },\n // messages\n get messages() {\n return composer.messages.value;\n },\n // datetimeFormats\n get datetimeFormats() {\n return composer.datetimeFormats.value;\n },\n // numberFormats\n get numberFormats() {\n return composer.numberFormats.value;\n },\n // availableLocales\n get availableLocales() {\n return composer.availableLocales;\n },\n // formatter\n get formatter() {\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n // dummy\n return {\n interpolate() {\n return [];\n }\n };\n },\n set formatter(val) {\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n },\n // missing\n get missing() {\n return composer.getMissingHandler();\n },\n set missing(handler) {\n composer.setMissingHandler(handler);\n },\n // silentTranslationWarn\n get silentTranslationWarn() {\n return isBoolean(composer.missingWarn)\n ? !composer.missingWarn\n : composer.missingWarn;\n },\n set silentTranslationWarn(val) {\n composer.missingWarn = isBoolean(val) ? !val : val;\n },\n // silentFallbackWarn\n get silentFallbackWarn() {\n return isBoolean(composer.fallbackWarn)\n ? !composer.fallbackWarn\n : composer.fallbackWarn;\n },\n set silentFallbackWarn(val) {\n composer.fallbackWarn = isBoolean(val) ? !val : val;\n },\n // modifiers\n get modifiers() {\n return composer.modifiers;\n },\n // formatFallbackMessages\n get formatFallbackMessages() {\n return composer.fallbackFormat;\n },\n set formatFallbackMessages(val) {\n composer.fallbackFormat = val;\n },\n // postTranslation\n get postTranslation() {\n return composer.getPostTranslationHandler();\n },\n set postTranslation(handler) {\n composer.setPostTranslationHandler(handler);\n },\n // sync\n get sync() {\n return composer.inheritLocale;\n },\n set sync(val) {\n composer.inheritLocale = val;\n },\n // warnInHtmlMessage\n get warnHtmlInMessage() {\n return composer.warnHtmlMessage ? 'warn' : 'off';\n },\n set warnHtmlInMessage(val) {\n composer.warnHtmlMessage = val !== 'off';\n },\n // escapeParameterHtml\n get escapeParameterHtml() {\n return composer.escapeParameter;\n },\n set escapeParameterHtml(val) {\n composer.escapeParameter = val;\n },\n // preserveDirectiveContent\n get preserveDirectiveContent() {\n (process.env.NODE_ENV !== 'production') &&\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n return true;\n },\n set preserveDirectiveContent(val) {\n (process.env.NODE_ENV !== 'production') &&\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n },\n // pluralizationRules\n get pluralizationRules() {\n return composer.pluralRules || {};\n },\n // for internal\n __composer: composer,\n // t\n t(...args) {\n const [arg1, arg2, arg3] = args;\n const options = {};\n let list = null;\n let named = null;\n if (!isString(arg1)) {\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n }\n const key = arg1;\n if (isString(arg2)) {\n options.locale = arg2;\n }\n else if (isArray(arg2)) {\n list = arg2;\n }\n else if (isPlainObject(arg2)) {\n named = arg2;\n }\n if (isArray(arg3)) {\n list = arg3;\n }\n else if (isPlainObject(arg3)) {\n named = arg3;\n }\n // return composer.t(key, (list || named || {}) as any, options)\n return Reflect.apply(composer.t, composer, [\n key,\n (list || named || {}),\n options\n ]);\n },\n rt(...args) {\n return Reflect.apply(composer.rt, composer, [...args]);\n },\n // tc\n tc(...args) {\n const [arg1, arg2, arg3] = args;\n const options = { plural: 1 };\n let list = null;\n let named = null;\n if (!isString(arg1)) {\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n }\n const key = arg1;\n if (isString(arg2)) {\n options.locale = arg2;\n }\n else if (isNumber(arg2)) {\n options.plural = arg2;\n }\n else if (isArray(arg2)) {\n list = arg2;\n }\n else if (isPlainObject(arg2)) {\n named = arg2;\n }\n if (isString(arg3)) {\n options.locale = arg3;\n }\n else if (isArray(arg3)) {\n list = arg3;\n }\n else if (isPlainObject(arg3)) {\n named = arg3;\n }\n // return composer.t(key, (list || named || {}) as any, options)\n return Reflect.apply(composer.t, composer, [\n key,\n (list || named || {}),\n options\n ]);\n },\n // te\n te(key, locale) {\n return composer.te(key, locale);\n },\n // tm\n tm(key) {\n return composer.tm(key);\n },\n // getLocaleMessage\n getLocaleMessage(locale) {\n return composer.getLocaleMessage(locale);\n },\n // setLocaleMessage\n setLocaleMessage(locale, message) {\n composer.setLocaleMessage(locale, message);\n },\n // mergeLocaleMessage\n mergeLocaleMessage(locale, message) {\n composer.mergeLocaleMessage(locale, message);\n },\n // d\n d(...args) {\n return Reflect.apply(composer.d, composer, [...args]);\n },\n // getDateTimeFormat\n getDateTimeFormat(locale) {\n return composer.getDateTimeFormat(locale);\n },\n // setDateTimeFormat\n setDateTimeFormat(locale, format) {\n composer.setDateTimeFormat(locale, format);\n },\n // mergeDateTimeFormat\n mergeDateTimeFormat(locale, format) {\n composer.mergeDateTimeFormat(locale, format);\n },\n // n\n n(...args) {\n return Reflect.apply(composer.n, composer, [...args]);\n },\n // getNumberFormat\n getNumberFormat(locale) {\n return composer.getNumberFormat(locale);\n },\n // setNumberFormat\n setNumberFormat(locale, format) {\n composer.setNumberFormat(locale, format);\n },\n // mergeNumberFormat\n mergeNumberFormat(locale, format) {\n composer.mergeNumberFormat(locale, format);\n },\n // getChoiceIndex\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getChoiceIndex(choice, choicesLength) {\n (process.env.NODE_ENV !== 'production') &&\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\n return -1;\n }\n };\n vueI18n.__extender = __extender;\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n vueI18n.__enableEmitter = (emitter) => {\n const __composer = composer;\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\n };\n vueI18n.__disableEmitter = () => {\n const __composer = composer;\n __composer[DisableEmitter] && __composer[DisableEmitter]();\n };\n }\n return vueI18n;\n }\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\n tag: {\n type: [String, Object]\n },\n locale: {\n type: String\n },\n scope: {\n type: String,\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n validator: (val /* ComponentI18nScope */) => val === 'parent' || val === 'global',\n default: 'parent' /* ComponentI18nScope */\n },\n i18n: {\n type: Object\n }\n};\n\nfunction getInterpolateArg(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n{ slots }, // SetupContext,\nkeys) {\n if (keys.length === 1 && keys[0] === 'default') {\n // default slot with list\n const ret = slots.default ? slots.default() : [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return ret.reduce((slot, current) => {\n return [\n ...slot,\n // prettier-ignore\n ...(current.type === Fragment ? current.children : [current]\n )\n ];\n }, []);\n }\n else {\n // named slots\n return keys.reduce((arg, key) => {\n const slot = slots[key];\n if (slot) {\n arg[key] = slot();\n }\n return arg;\n }, create());\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getFragmentableTag(tag) {\n return Fragment ;\n}\n\nconst TranslationImpl = /*#__PURE__*/ defineComponent({\n /* eslint-disable */\n name: 'i18n-t',\n props: assign({\n keypath: {\n type: String,\n required: true\n },\n plural: {\n type: [Number, String],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n validator: (val) => isNumber(val) || !isNaN(val)\n }\n }, baseFormatProps),\n /* eslint-enable */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setup(props, context) {\n const { slots, attrs } = context;\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n const i18n = props.i18n ||\n useI18n({\n useScope: props.scope,\n __useComponent: true\n });\n return () => {\n const keys = Object.keys(slots).filter(key => key !== '_');\n const options = create();\n if (props.locale) {\n options.locale = props.locale;\n }\n if (props.plural !== undefined) {\n options.plural = isString(props.plural) ? +props.plural : props.plural;\n }\n const arg = getInterpolateArg(context, keys);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const children = i18n[TranslateVNodeSymbol](props.keypath, arg, options);\n const assignedAttrs = assign(create(), attrs);\n const tag = isString(props.tag) || isObject(props.tag)\n ? props.tag\n : getFragmentableTag();\n return h(tag, assignedAttrs, children);\n };\n }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Translation Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [TranslationProps](component#translationprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\n *\n * @example\n * ```html\n * \n * \n * \n * {{ $t('tos') }}\n * \n * \n * \n * ```\n * ```js\n * import { createApp } from 'vue'\n * import { createI18n } from 'vue-i18n'\n *\n * const messages = {\n * en: {\n * tos: 'Term of Service',\n * term: 'I accept xxx {0}.'\n * },\n * ja: {\n * tos: '利用規約',\n * term: '私は xxx の{0}に同意します。'\n * }\n * }\n *\n * const i18n = createI18n({\n * locale: 'en',\n * messages\n * })\n *\n * const app = createApp({\n * data: {\n * url: '/term'\n * }\n * }).use(i18n).mount('#app')\n * ```\n *\n * @VueI18nComponent\n */\nconst Translation = TranslationImpl;\nconst I18nT = Translation;\n\nfunction isVNode(target) {\n return isArray(target) && !isString(target[0]);\n}\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\n const { slots, attrs } = context;\n return () => {\n const options = { part: true };\n let overrides = create();\n if (props.locale) {\n options.locale = props.locale;\n }\n if (isString(props.format)) {\n options.key = props.format;\n }\n else if (isObject(props.format)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isString(props.format.key)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options.key = props.format.key;\n }\n // Filter out number format options only\n overrides = Object.keys(props.format).reduce((options, prop) => {\n return slotKeys.includes(prop)\n ? assign(create(), options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\n : options;\n }, create());\n }\n const parts = partFormatter(...[props.value, options, overrides]);\n let children = [options.key];\n if (isArray(parts)) {\n children = parts.map((part, index) => {\n const slot = slots[part.type];\n const node = slot\n ? slot({ [part.type]: part.value, index, parts })\n : [part.value];\n if (isVNode(node)) {\n node[0].key = `${part.type}-${index}`;\n }\n return node;\n });\n }\n else if (isString(parts)) {\n children = [parts];\n }\n const assignedAttrs = assign(create(), attrs);\n const tag = isString(props.tag) || isObject(props.tag)\n ? props.tag\n : getFragmentableTag();\n return h(tag, assignedAttrs, children);\n };\n}\n\nconst NumberFormatImpl = /*#__PURE__*/ defineComponent({\n /* eslint-disable */\n name: 'i18n-n',\n props: assign({\n value: {\n type: Number,\n required: true\n },\n format: {\n type: [String, Object]\n }\n }, baseFormatProps),\n /* eslint-enable */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setup(props, context) {\n const i18n = props.i18n ||\n useI18n({\n useScope: props.scope,\n __useComponent: true\n });\n return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n i18n[NumberPartsSymbol](...args));\n }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Number Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\n *\n * @VueI18nComponent\n */\nconst NumberFormat = NumberFormatImpl;\nconst I18nN = NumberFormat;\n\nconst DatetimeFormatImpl = /* #__PURE__*/ defineComponent({\n /* eslint-disable */\n name: 'i18n-d',\n props: assign({\n value: {\n type: [Number, Date],\n required: true\n },\n format: {\n type: [String, Object]\n }\n }, baseFormatProps),\n /* eslint-enable */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setup(props, context) {\n const i18n = props.i18n ||\n useI18n({\n useScope: props.scope,\n __useComponent: true\n });\n return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n i18n[DatetimePartsSymbol](...args));\n }\n});\n/**\n * Datetime Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\n *\n * @VueI18nComponent\n */\nconst DatetimeFormat = DatetimeFormatImpl;\nconst I18nD = DatetimeFormat;\n\nfunction getComposer$2(i18n, instance) {\n const i18nInternal = i18n;\n if (i18n.mode === 'composition') {\n return (i18nInternal.__getInstance(instance) || i18n.global);\n }\n else {\n const vueI18n = i18nInternal.__getInstance(instance);\n return vueI18n != null\n ? vueI18n.__composer\n : i18n.global.__composer;\n }\n}\nfunction vTDirective(i18n) {\n const _process = (binding) => {\n const { instance, modifiers, value } = binding;\n /* istanbul ignore if */\n if (!instance || !instance.$) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n const composer = getComposer$2(i18n, instance.$);\n if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\n }\n const parsedValue = parseValue(value);\n return [\n Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\n composer\n ];\n };\n const register = (el, binding) => {\n const [textContent, composer] = _process(binding);\n if (inBrowser && i18n.global === composer) {\n // global scope only\n el.__i18nWatcher = watch(composer.locale, () => {\n binding.instance && binding.instance.$forceUpdate();\n });\n }\n el.__composer = composer;\n el.textContent = textContent;\n };\n const unregister = (el) => {\n if (inBrowser && el.__i18nWatcher) {\n el.__i18nWatcher();\n el.__i18nWatcher = undefined;\n delete el.__i18nWatcher;\n }\n if (el.__composer) {\n el.__composer = undefined;\n delete el.__composer;\n }\n };\n const update = (el, { value }) => {\n if (el.__composer) {\n const composer = el.__composer;\n const parsedValue = parseValue(value);\n el.textContent = Reflect.apply(composer.t, composer, [\n ...makeParams(parsedValue)\n ]);\n }\n };\n const getSSRProps = (binding) => {\n const [textContent] = _process(binding);\n return { textContent };\n };\n return {\n created: register,\n unmounted: unregister,\n beforeUpdate: update,\n getSSRProps\n };\n}\nfunction parseValue(value) {\n if (isString(value)) {\n return { path: value };\n }\n else if (isPlainObject(value)) {\n if (!('path' in value)) {\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\n }\n return value;\n }\n else {\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\n }\n}\nfunction makeParams(value) {\n const { path, locale, args, choice, plural } = value;\n const options = {};\n const named = args || {};\n if (isString(locale)) {\n options.locale = locale;\n }\n if (isNumber(choice)) {\n options.plural = choice;\n }\n if (isNumber(plural)) {\n options.plural = plural;\n }\n return [path, named, options];\n}\n\nfunction apply(app, i18n, ...options) {\n const pluginOptions = isPlainObject(options[0])\n ? options[0]\n : {};\n const useI18nComponentName = !!pluginOptions.useI18nComponentName;\n const globalInstall = isBoolean(pluginOptions.globalInstall)\n ? pluginOptions.globalInstall\n : true;\n if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\n warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\n name: Translation.name\n }));\n }\n if (globalInstall) {\n [!useI18nComponentName ? Translation.name : 'i18n', 'I18nT'].forEach(name => app.component(name, Translation));\n [NumberFormat.name, 'I18nN'].forEach(name => app.component(name, NumberFormat));\n [DatetimeFormat.name, 'I18nD'].forEach(name => app.component(name, DatetimeFormat));\n }\n // install directive\n {\n app.directive('t', vTDirective(i18n));\n }\n}\n\nconst VueDevToolsLabels = {\n [\"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */]: 'Vue I18n devtools',\n [\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'I18n Resources',\n [\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]: 'Vue I18n'\n};\nconst VueDevToolsPlaceholders = {\n [\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'Search for scopes ...'\n};\nconst VueDevToolsTimelineColors = {\n [\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]: 0xffcd19\n};\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\nlet devtoolsApi;\nasync function enableDevTools(app, i18n) {\n return new Promise((resolve, reject) => {\n try {\n setupDevtoolsPlugin({\n id: \"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */,\n label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */],\n packageName: 'vue-i18n',\n homepage: 'https://vue-i18n.intlify.dev',\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\n app: app // eslint-disable-line @typescript-eslint/no-explicit-any\n }, api => {\n devtoolsApi = api;\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\n updateComponentTreeTags(componentInstance, treeNode, i18n);\n });\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\n if (componentInstance.vnode.el &&\n componentInstance.vnode.el.__VUE_I18N__ &&\n instanceData) {\n if (i18n.mode === 'legacy') {\n // ignore global scope on legacy mode\n if (componentInstance.vnode.el.__VUE_I18N__ !==\n i18n.global.__composer) {\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n }\n }\n else {\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n }\n }\n });\n api.addInspector({\n id: \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */,\n label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */],\n icon: 'language',\n treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]\n });\n api.on.getInspectorTree(payload => {\n if (payload.app === app &&\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n registerScope(payload, i18n);\n }\n });\n const roots = new Map();\n api.on.getInspectorState(async (payload) => {\n if (payload.app === app &&\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n api.unhighlightElement();\n inspectScope(payload, i18n);\n if (payload.nodeId === 'global') {\n if (!roots.has(payload.app)) {\n const [root] = await api.getComponentInstances(payload.app);\n roots.set(payload.app, root);\n }\n api.highlightElement(roots.get(payload.app));\n }\n else {\n const instance = getComponentInstance(payload.nodeId, i18n);\n instance && api.highlightElement(instance);\n }\n }\n });\n api.on.editInspectorState(payload => {\n if (payload.app === app &&\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n editScope(payload, i18n);\n }\n });\n api.addTimelineLayer({\n id: \"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */,\n label: VueDevToolsLabels[\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */],\n color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]\n });\n resolve(true);\n });\n }\n catch (e) {\n console.error(e);\n reject(false);\n }\n });\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getI18nScopeLable(instance) {\n return (instance.type.name ||\n instance.type.displayName ||\n instance.type.__file ||\n 'Anonymous');\n}\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\ntreeNode, i18n) {\n // prettier-ignore\n const global = i18n.mode === 'composition'\n ? i18n.global\n : i18n.global.__composer;\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\n // add custom tags local scope only\n if (instance.vnode.el.__VUE_I18N__ !== global) {\n const tag = {\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\n textColor: 0x000000,\n backgroundColor: 0xffcd19\n };\n treeNode.tags.push(tag);\n }\n }\n}\nfunction inspectComposer(instanceData, composer) {\n const type = VUE_I18N_COMPONENT_TYPES;\n instanceData.state.push({\n type,\n key: 'locale',\n editable: true,\n value: composer.locale.value\n });\n instanceData.state.push({\n type,\n key: 'availableLocales',\n editable: false,\n value: composer.availableLocales\n });\n instanceData.state.push({\n type,\n key: 'fallbackLocale',\n editable: true,\n value: composer.fallbackLocale.value\n });\n instanceData.state.push({\n type,\n key: 'inheritLocale',\n editable: true,\n value: composer.inheritLocale\n });\n instanceData.state.push({\n type,\n key: 'messages',\n editable: false,\n value: getLocaleMessageValue(composer.messages.value)\n });\n {\n instanceData.state.push({\n type,\n key: 'datetimeFormats',\n editable: false,\n value: composer.datetimeFormats.value\n });\n instanceData.state.push({\n type,\n key: 'numberFormats',\n editable: false,\n value: composer.numberFormats.value\n });\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLocaleMessageValue(messages) {\n const value = {};\n Object.keys(messages).forEach((key) => {\n const v = messages[key];\n if (isFunction(v) && 'source' in v) {\n value[key] = getMessageFunctionDetails(v);\n }\n else if (isMessageAST(v) && v.loc && v.loc.source) {\n value[key] = v.loc.source;\n }\n else if (isObject(v)) {\n value[key] = getLocaleMessageValue(v);\n }\n else {\n value[key] = v;\n }\n });\n return value;\n}\nconst ESC = {\n '<': '<',\n '>': '>',\n '\"': '"',\n '&': '&'\n};\nfunction escape(s) {\n return s.replace(/[<>\"&]/g, escapeChar);\n}\nfunction escapeChar(a) {\n return ESC[a] || a;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMessageFunctionDetails(func) {\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\n return {\n _custom: {\n type: 'function',\n display: `ƒ ${argString}`\n }\n };\n}\nfunction registerScope(payload, i18n) {\n payload.rootNodes.push({\n id: 'global',\n label: 'Global Scope'\n });\n // prettier-ignore\n const global = i18n.mode === 'composition'\n ? i18n.global\n : i18n.global.__composer;\n for (const [keyInstance, instance] of i18n.__instances) {\n // prettier-ignore\n const composer = i18n.mode === 'composition'\n ? instance\n : instance.__composer;\n if (global === composer) {\n continue;\n }\n payload.rootNodes.push({\n id: composer.id.toString(),\n label: `${getI18nScopeLable(keyInstance)} Scope`\n });\n }\n}\nfunction getComponentInstance(nodeId, i18n) {\n let instance = null;\n if (nodeId !== 'global') {\n for (const [component, composer] of i18n.__instances.entries()) {\n if (composer.id.toString() === nodeId) {\n instance = component;\n break;\n }\n }\n }\n return instance;\n}\nfunction getComposer$1(nodeId, i18n) {\n if (nodeId === 'global') {\n return i18n.mode === 'composition'\n ? i18n.global\n : i18n.global.__composer;\n }\n else {\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\n if (instance) {\n return i18n.mode === 'composition'\n ? instance\n : instance.__composer;\n }\n else {\n return null;\n }\n }\n}\nfunction inspectScope(payload, i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n const composer = getComposer$1(payload.nodeId, i18n);\n if (composer) {\n // TODO:\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n payload.state = makeScopeInspectState(composer);\n }\n return null;\n}\nfunction makeScopeInspectState(composer) {\n const state = {};\n const localeType = 'Locale related info';\n const localeStates = [\n {\n type: localeType,\n key: 'locale',\n editable: true,\n value: composer.locale.value\n },\n {\n type: localeType,\n key: 'fallbackLocale',\n editable: true,\n value: composer.fallbackLocale.value\n },\n {\n type: localeType,\n key: 'availableLocales',\n editable: false,\n value: composer.availableLocales\n },\n {\n type: localeType,\n key: 'inheritLocale',\n editable: true,\n value: composer.inheritLocale\n }\n ];\n state[localeType] = localeStates;\n const localeMessagesType = 'Locale messages info';\n const localeMessagesStates = [\n {\n type: localeMessagesType,\n key: 'messages',\n editable: false,\n value: getLocaleMessageValue(composer.messages.value)\n }\n ];\n state[localeMessagesType] = localeMessagesStates;\n {\n const datetimeFormatsType = 'Datetime formats info';\n const datetimeFormatsStates = [\n {\n type: datetimeFormatsType,\n key: 'datetimeFormats',\n editable: false,\n value: composer.datetimeFormats.value\n }\n ];\n state[datetimeFormatsType] = datetimeFormatsStates;\n const numberFormatsType = 'Datetime formats info';\n const numberFormatsStates = [\n {\n type: numberFormatsType,\n key: 'numberFormats',\n editable: false,\n value: composer.numberFormats.value\n }\n ];\n state[numberFormatsType] = numberFormatsStates;\n }\n return state;\n}\nfunction addTimelineEvent(event, payload) {\n if (devtoolsApi) {\n let groupId;\n if (payload && 'groupId' in payload) {\n groupId = payload.groupId;\n delete payload.groupId;\n }\n devtoolsApi.addTimelineEvent({\n layerId: \"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */,\n event: {\n title: event,\n groupId,\n time: Date.now(),\n meta: {},\n data: payload || {},\n logType: event === \"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */\n ? 'error'\n : event === \"fallback\" /* VueDevToolsTimelineEvents.FALBACK */ ||\n event === \"missing\" /* VueDevToolsTimelineEvents.MISSING */\n ? 'warning'\n : 'default'\n }\n });\n }\n}\nfunction editScope(payload, i18n) {\n const composer = getComposer$1(payload.nodeId, i18n);\n if (composer) {\n const [field] = payload.path;\n if (field === 'locale' && isString(payload.state.value)) {\n composer.locale.value = payload.state.value;\n }\n else if (field === 'fallbackLocale' &&\n (isString(payload.state.value) ||\n isArray(payload.state.value) ||\n isObject(payload.state.value))) {\n composer.fallbackLocale.value = payload.state.value;\n }\n else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\n composer.inheritLocale = payload.state.value;\n }\n }\n}\n\n/**\n * Supports compatibility for legacy vue-i18n APIs\n * This mixin is used when we use vue-i18n@v9.x or later\n */\nfunction defineMixin(vuei18n, composer, i18n) {\n return {\n beforeCreate() {\n const instance = getCurrentInstance();\n /* istanbul ignore if */\n if (!instance) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n const options = this.$options;\n if (options.i18n) {\n const optionsI18n = options.i18n;\n if (options.__i18n) {\n optionsI18n.__i18n = options.__i18n;\n }\n optionsI18n.__root = composer;\n if (this === this.$root) {\n // merge option and gttach global\n this.$i18n = mergeToGlobal(vuei18n, optionsI18n);\n }\n else {\n optionsI18n.__injectWithOption = true;\n optionsI18n.__extender = i18n.__vueI18nExtend;\n // atttach local VueI18n instance\n this.$i18n = createVueI18n(optionsI18n);\n // extend VueI18n instance\n const _vueI18n = this.$i18n;\n if (_vueI18n.__extender) {\n _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n }\n }\n }\n else if (options.__i18n) {\n if (this === this.$root) {\n // merge option and gttach global\n this.$i18n = mergeToGlobal(vuei18n, options);\n }\n else {\n // atttach local VueI18n instance\n this.$i18n = createVueI18n({\n __i18n: options.__i18n,\n __injectWithOption: true,\n __extender: i18n.__vueI18nExtend,\n __root: composer\n });\n // extend VueI18n instance\n const _vueI18n = this.$i18n;\n if (_vueI18n.__extender) {\n _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n }\n }\n }\n else {\n // attach global VueI18n instance\n this.$i18n = vuei18n;\n }\n if (options.__i18nGlobal) {\n adjustI18nResources(composer, options, options);\n }\n // defines vue-i18n legacy APIs\n this.$t = (...args) => this.$i18n.t(...args);\n this.$rt = (...args) => this.$i18n.rt(...args);\n this.$tc = (...args) => this.$i18n.tc(...args);\n this.$te = (key, locale) => this.$i18n.te(key, locale);\n this.$d = (...args) => this.$i18n.d(...args);\n this.$n = (...args) => this.$i18n.n(...args);\n this.$tm = (key) => this.$i18n.tm(key);\n i18n.__setInstance(instance, this.$i18n);\n },\n mounted() {\n /* istanbul ignore if */\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false &&\n this.$el &&\n this.$i18n) {\n const _vueI18n = this.$i18n;\n this.$el.__VUE_I18N__ = _vueI18n.__composer;\n const emitter = (this.__v_emitter =\n createEmitter());\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n emitter.on('*', addTimelineEvent);\n }\n },\n unmounted() {\n const instance = getCurrentInstance();\n /* istanbul ignore if */\n if (!instance) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n const _vueI18n = this.$i18n;\n /* istanbul ignore if */\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false &&\n this.$el &&\n this.$el.__VUE_I18N__) {\n if (this.__v_emitter) {\n this.__v_emitter.off('*', addTimelineEvent);\n delete this.__v_emitter;\n }\n if (this.$i18n) {\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\n delete this.$el.__VUE_I18N__;\n }\n }\n delete this.$t;\n delete this.$rt;\n delete this.$tc;\n delete this.$te;\n delete this.$d;\n delete this.$n;\n delete this.$tm;\n if (_vueI18n.__disposer) {\n _vueI18n.__disposer();\n delete _vueI18n.__disposer;\n delete _vueI18n.__extender;\n }\n i18n.__deleteInstance(instance);\n delete this.$i18n;\n }\n };\n}\nfunction mergeToGlobal(g, options) {\n g.locale = options.locale || g.locale;\n g.fallbackLocale = options.fallbackLocale || g.fallbackLocale;\n g.missing = options.missing || g.missing;\n g.silentTranslationWarn =\n options.silentTranslationWarn || g.silentFallbackWarn;\n g.silentFallbackWarn = options.silentFallbackWarn || g.silentFallbackWarn;\n g.formatFallbackMessages =\n options.formatFallbackMessages || g.formatFallbackMessages;\n g.postTranslation = options.postTranslation || g.postTranslation;\n g.warnHtmlInMessage = options.warnHtmlInMessage || g.warnHtmlInMessage;\n g.escapeParameterHtml = options.escapeParameterHtml || g.escapeParameterHtml;\n g.sync = options.sync || g.sync;\n g.__composer[SetPluralRulesSymbol](options.pluralizationRules || g.pluralizationRules);\n const messages = getLocaleMessages(g.locale, {\n messages: options.messages,\n __i18n: options.__i18n\n });\n Object.keys(messages).forEach(locale => g.mergeLocaleMessage(locale, messages[locale]));\n if (options.datetimeFormats) {\n Object.keys(options.datetimeFormats).forEach(locale => g.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\n }\n if (options.numberFormats) {\n Object.keys(options.numberFormats).forEach(locale => g.mergeNumberFormat(locale, options.numberFormats[locale]));\n }\n return g;\n}\n\n/**\n * Injection key for {@link useI18n}\n *\n * @remarks\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\n *\n * @VueI18nGeneral\n */\nconst I18nInjectionKey = \n/* #__PURE__*/ makeSymbol('global-vue-i18n');\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction createI18n(options = {}, VueI18nLegacy) {\n // prettier-ignore\n const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\n ? options.legacy\n : __VUE_I18N_LEGACY_API__;\n // prettier-ignore\n const __globalInjection = isBoolean(options.globalInjection)\n ? options.globalInjection\n : true;\n // prettier-ignore\n const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\n ? !!options.allowComposition\n : true;\n const __instances = new Map();\n const [globalScope, __global] = createGlobal(options, __legacyMode);\n const symbol = /* #__PURE__*/ makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\n if ((process.env.NODE_ENV !== 'production')) {\n if (__legacyMode && __allowComposition && !false) {\n warn(getWarnMessage(I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION));\n }\n }\n function __getInstance(component) {\n return __instances.get(component) || null;\n }\n function __setInstance(component, instance) {\n __instances.set(component, instance);\n }\n function __deleteInstance(component) {\n __instances.delete(component);\n }\n {\n const i18n = {\n // mode\n get mode() {\n return __VUE_I18N_LEGACY_API__ && __legacyMode\n ? 'legacy'\n : 'composition';\n },\n // allowComposition\n get allowComposition() {\n return __allowComposition;\n },\n // install plugin\n async install(app, ...options) {\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false) {\n app.__VUE_I18N__ = i18n;\n }\n // setup global provider\n app.__VUE_I18N_SYMBOL__ = symbol;\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\n // set composer & vuei18n extend hook options from plugin options\n if (isPlainObject(options[0])) {\n const opts = options[0];\n i18n.__composerExtend =\n opts.__composerExtend;\n i18n.__vueI18nExtend =\n opts.__vueI18nExtend;\n }\n // global method and properties injection for Composition API\n let globalReleaseHandler = null;\n if (!__legacyMode && __globalInjection) {\n globalReleaseHandler = injectGlobalFields(app, i18n.global);\n }\n // install built-in components and directive\n if (__VUE_I18N_FULL_INSTALL__) {\n apply(app, i18n, ...options);\n }\n // setup mixin for Legacy API\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\n app.mixin(defineMixin(__global, __global.__composer, i18n));\n }\n // release global scope\n const unmountApp = app.unmount;\n app.unmount = () => {\n globalReleaseHandler && globalReleaseHandler();\n i18n.dispose();\n unmountApp();\n };\n // setup vue-devtools plugin\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\n const ret = await enableDevTools(app, i18n);\n if (!ret) {\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\n }\n const emitter = createEmitter();\n if (__legacyMode) {\n const _vueI18n = __global;\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _composer = __global;\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n }\n emitter.on('*', addTimelineEvent);\n }\n },\n // global accessor\n get global() {\n return __global;\n },\n dispose() {\n globalScope.stop();\n },\n // @internal\n __instances,\n // @internal\n __getInstance,\n // @internal\n __setInstance,\n // @internal\n __deleteInstance\n };\n return i18n;\n }\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction useI18n(options = {}) {\n const instance = getCurrentInstance();\n if (instance == null) {\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\n }\n if (!instance.isCE &&\n instance.appContext.app != null &&\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\n throw createI18nError(I18nErrorCodes.NOT_INSTALLED);\n }\n const i18n = getI18nInstance(instance);\n const gl = getGlobalComposer(i18n);\n const componentOptions = getComponentOptions(instance);\n const scope = getScope(options, componentOptions);\n if (__VUE_I18N_LEGACY_API__) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (i18n.mode === 'legacy' && !options.__useComponent) {\n if (!i18n.allowComposition) {\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\n }\n return useI18nForLegacy(instance, scope, gl, options);\n }\n }\n if (scope === 'global') {\n adjustI18nResources(gl, options, componentOptions);\n return gl;\n }\n if (scope === 'parent') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let composer = getComposer(i18n, instance, options.__useComponent);\n if (composer == null) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\n }\n composer = gl;\n }\n return composer;\n }\n const i18nInternal = i18n;\n let composer = i18nInternal.__getInstance(instance);\n if (composer == null) {\n const composerOptions = assign({}, options);\n if ('__i18n' in componentOptions) {\n composerOptions.__i18n = componentOptions.__i18n;\n }\n if (gl) {\n composerOptions.__root = gl;\n }\n composer = createComposer(composerOptions);\n if (i18nInternal.__composerExtend) {\n composer[DisposeSymbol] =\n i18nInternal.__composerExtend(composer);\n }\n setupLifeCycle(i18nInternal, instance, composer);\n i18nInternal.__setInstance(instance, composer);\n }\n return composer;\n}\n/**\n * Cast to VueI18n legacy compatible type\n *\n * @remarks\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\n *\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\n *\n * @param i18n - An instance of {@link I18n}\n * @returns A i18n instance which is casted to {@link VueI18n} type\n *\n * @VueI18nTip\n * :new: provided by **vue-i18n-bridge only**\n *\n * @VueI18nGeneral\n */\n/* #__NO_SIDE_EFFECTS__ */\nconst castToVueI18n = (i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => {\n if (!(__VUE_I18N_BRIDGE__ in i18n)) {\n throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\n }\n return i18n;\n};\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n const scope = effectScope();\n {\n const obj = __VUE_I18N_LEGACY_API__ && legacyMode\n ? scope.run(() => createVueI18n(options))\n : scope.run(() => createComposer(options));\n if (obj == null) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n return [scope, obj];\n }\n}\nfunction getI18nInstance(instance) {\n {\n const i18n = inject(!instance.isCE\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\n : I18nInjectionKey);\n /* istanbul ignore if */\n if (!i18n) {\n throw createI18nError(!instance.isCE\n ? I18nErrorCodes.UNEXPECTED_ERROR\n : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE);\n }\n return i18n;\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getScope(options, componentOptions) {\n // prettier-ignore\n return isEmptyObject(options)\n ? ('__i18n' in componentOptions)\n ? 'local'\n : 'global'\n : !options.useScope\n ? 'local'\n : options.useScope;\n}\nfunction getGlobalComposer(i18n) {\n // prettier-ignore\n return i18n.mode === 'composition'\n ? i18n.global\n : i18n.global.__composer\n ;\n}\nfunction getComposer(i18n, target, useComponent = false) {\n let composer = null;\n const root = target.root;\n let current = getParentComponentInstance(target, useComponent);\n while (current != null) {\n const i18nInternal = i18n;\n if (i18n.mode === 'composition') {\n composer = i18nInternal.__getInstance(current);\n }\n else {\n if (__VUE_I18N_LEGACY_API__) {\n const vueI18n = i18nInternal.__getInstance(current);\n if (vueI18n != null) {\n composer = vueI18n\n .__composer;\n if (useComponent &&\n composer &&\n !composer[InejctWithOptionSymbol] // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n composer = null;\n }\n }\n }\n }\n if (composer != null) {\n break;\n }\n if (root === current) {\n break;\n }\n current = current.parent;\n }\n return composer;\n}\nfunction getParentComponentInstance(target, useComponent = false) {\n if (target == null) {\n return null;\n }\n {\n // if `useComponent: true` will be specified, we get lexical scope owner instance for use-case slots\n return !useComponent\n ? target.parent\n : target.vnode.ctx || target.parent; // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n}\nfunction setupLifeCycle(i18n, target, composer) {\n let emitter = null;\n {\n onMounted(() => {\n // inject composer instance to DOM for intlify-devtools\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false &&\n target.vnode.el) {\n target.vnode.el.__VUE_I18N__ = composer;\n emitter = createEmitter();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _composer = composer;\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n emitter.on('*', addTimelineEvent);\n }\n }, target);\n onUnmounted(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _composer = composer;\n // remove composer instance from DOM for intlify-devtools\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false &&\n target.vnode.el &&\n target.vnode.el.__VUE_I18N__) {\n emitter && emitter.off('*', addTimelineEvent);\n _composer[DisableEmitter] && _composer[DisableEmitter]();\n delete target.vnode.el.__VUE_I18N__;\n }\n i18n.__deleteInstance(target);\n // dispose extended resources\n const dispose = _composer[DisposeSymbol];\n if (dispose) {\n dispose();\n delete _composer[DisposeSymbol];\n }\n }, target);\n }\n}\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n const isLocalScope = scope === 'local';\n const _composer = shallowRef(null);\n if (isLocalScope &&\n instance.proxy &&\n !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\n throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\n }\n const _inheritLocale = isBoolean(options.inheritLocale)\n ? options.inheritLocale\n : !isString(options.locale);\n const _locale = ref(\n // prettier-ignore\n !isLocalScope || _inheritLocale\n ? root.locale.value\n : isString(options.locale)\n ? options.locale\n : DEFAULT_LOCALE);\n const _fallbackLocale = ref(\n // prettier-ignore\n !isLocalScope || _inheritLocale\n ? root.fallbackLocale.value\n : isString(options.fallbackLocale) ||\n isArray(options.fallbackLocale) ||\n isPlainObject(options.fallbackLocale) ||\n options.fallbackLocale === false\n ? options.fallbackLocale\n : _locale.value);\n const _messages = ref(getLocaleMessages(_locale.value, options));\n // prettier-ignore\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\n ? options.datetimeFormats\n : { [_locale.value]: {} });\n // prettier-ignore\n const _numberFormats = ref(isPlainObject(options.numberFormats)\n ? options.numberFormats\n : { [_locale.value]: {} });\n // prettier-ignore\n const _missingWarn = isLocalScope\n ? root.missingWarn\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n ? options.missingWarn\n : true;\n // prettier-ignore\n const _fallbackWarn = isLocalScope\n ? root.fallbackWarn\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n ? options.fallbackWarn\n : true;\n // prettier-ignore\n const _fallbackRoot = isLocalScope\n ? root.fallbackRoot\n : isBoolean(options.fallbackRoot)\n ? options.fallbackRoot\n : true;\n // configure fall back to root\n const _fallbackFormat = !!options.fallbackFormat;\n // runtime missing\n const _missing = isFunction(options.missing) ? options.missing : null;\n // postTranslation handler\n const _postTranslation = isFunction(options.postTranslation)\n ? options.postTranslation\n : null;\n // prettier-ignore\n const _warnHtmlMessage = isLocalScope\n ? root.warnHtmlMessage\n : isBoolean(options.warnHtmlMessage)\n ? options.warnHtmlMessage\n : true;\n const _escapeParameter = !!options.escapeParameter;\n // prettier-ignore\n const _modifiers = isLocalScope\n ? root.modifiers\n : isPlainObject(options.modifiers)\n ? options.modifiers\n : {};\n // pluralRules\n const _pluralRules = options.pluralRules || (isLocalScope && root.pluralRules);\n // track reactivity\n function trackReactivityValues() {\n return [\n _locale.value,\n _fallbackLocale.value,\n _messages.value,\n _datetimeFormats.value,\n _numberFormats.value\n ];\n }\n // locale\n const locale = computed({\n get: () => {\n return _composer.value ? _composer.value.locale.value : _locale.value;\n },\n set: val => {\n if (_composer.value) {\n _composer.value.locale.value = val;\n }\n _locale.value = val;\n }\n });\n // fallbackLocale\n const fallbackLocale = computed({\n get: () => {\n return _composer.value\n ? _composer.value.fallbackLocale.value\n : _fallbackLocale.value;\n },\n set: val => {\n if (_composer.value) {\n _composer.value.fallbackLocale.value = val;\n }\n _fallbackLocale.value = val;\n }\n });\n // messages\n const messages = computed(() => {\n if (_composer.value) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return _composer.value.messages.value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return _messages.value;\n }\n });\n const datetimeFormats = computed(() => _datetimeFormats.value);\n const numberFormats = computed(() => _numberFormats.value);\n function getPostTranslationHandler() {\n return _composer.value\n ? _composer.value.getPostTranslationHandler()\n : _postTranslation;\n }\n function setPostTranslationHandler(handler) {\n if (_composer.value) {\n _composer.value.setPostTranslationHandler(handler);\n }\n }\n function getMissingHandler() {\n return _composer.value ? _composer.value.getMissingHandler() : _missing;\n }\n function setMissingHandler(handler) {\n if (_composer.value) {\n _composer.value.setMissingHandler(handler);\n }\n }\n function warpWithDeps(fn) {\n trackReactivityValues();\n return fn();\n }\n function t(...args) {\n return _composer.value\n ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\n : warpWithDeps(() => '');\n }\n function rt(...args) {\n return _composer.value\n ? Reflect.apply(_composer.value.rt, null, [...args])\n : '';\n }\n function d(...args) {\n return _composer.value\n ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\n : warpWithDeps(() => '');\n }\n function n(...args) {\n return _composer.value\n ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\n : warpWithDeps(() => '');\n }\n function tm(key) {\n return _composer.value ? _composer.value.tm(key) : {};\n }\n function te(key, locale) {\n return _composer.value ? _composer.value.te(key, locale) : false;\n }\n function getLocaleMessage(locale) {\n return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\n }\n function setLocaleMessage(locale, message) {\n if (_composer.value) {\n _composer.value.setLocaleMessage(locale, message);\n _messages.value[locale] = message;\n }\n }\n function mergeLocaleMessage(locale, message) {\n if (_composer.value) {\n _composer.value.mergeLocaleMessage(locale, message);\n }\n }\n function getDateTimeFormat(locale) {\n return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\n }\n function setDateTimeFormat(locale, format) {\n if (_composer.value) {\n _composer.value.setDateTimeFormat(locale, format);\n _datetimeFormats.value[locale] = format;\n }\n }\n function mergeDateTimeFormat(locale, format) {\n if (_composer.value) {\n _composer.value.mergeDateTimeFormat(locale, format);\n }\n }\n function getNumberFormat(locale) {\n return _composer.value ? _composer.value.getNumberFormat(locale) : {};\n }\n function setNumberFormat(locale, format) {\n if (_composer.value) {\n _composer.value.setNumberFormat(locale, format);\n _numberFormats.value[locale] = format;\n }\n }\n function mergeNumberFormat(locale, format) {\n if (_composer.value) {\n _composer.value.mergeNumberFormat(locale, format);\n }\n }\n const wrapper = {\n get id() {\n return _composer.value ? _composer.value.id : -1;\n },\n locale,\n fallbackLocale,\n messages,\n datetimeFormats,\n numberFormats,\n get inheritLocale() {\n return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\n },\n set inheritLocale(val) {\n if (_composer.value) {\n _composer.value.inheritLocale = val;\n }\n },\n get availableLocales() {\n return _composer.value\n ? _composer.value.availableLocales\n : Object.keys(_messages.value);\n },\n get modifiers() {\n return (_composer.value ? _composer.value.modifiers : _modifiers);\n },\n get pluralRules() {\n return (_composer.value ? _composer.value.pluralRules : _pluralRules);\n },\n get isGlobal() {\n return _composer.value ? _composer.value.isGlobal : false;\n },\n get missingWarn() {\n return _composer.value ? _composer.value.missingWarn : _missingWarn;\n },\n set missingWarn(val) {\n if (_composer.value) {\n _composer.value.missingWarn = val;\n }\n },\n get fallbackWarn() {\n return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\n },\n set fallbackWarn(val) {\n if (_composer.value) {\n _composer.value.missingWarn = val;\n }\n },\n get fallbackRoot() {\n return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\n },\n set fallbackRoot(val) {\n if (_composer.value) {\n _composer.value.fallbackRoot = val;\n }\n },\n get fallbackFormat() {\n return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\n },\n set fallbackFormat(val) {\n if (_composer.value) {\n _composer.value.fallbackFormat = val;\n }\n },\n get warnHtmlMessage() {\n return _composer.value\n ? _composer.value.warnHtmlMessage\n : _warnHtmlMessage;\n },\n set warnHtmlMessage(val) {\n if (_composer.value) {\n _composer.value.warnHtmlMessage = val;\n }\n },\n get escapeParameter() {\n return _composer.value\n ? _composer.value.escapeParameter\n : _escapeParameter;\n },\n set escapeParameter(val) {\n if (_composer.value) {\n _composer.value.escapeParameter = val;\n }\n },\n t,\n getPostTranslationHandler,\n setPostTranslationHandler,\n getMissingHandler,\n setMissingHandler,\n rt,\n d,\n n,\n tm,\n te,\n getLocaleMessage,\n setLocaleMessage,\n mergeLocaleMessage,\n getDateTimeFormat,\n setDateTimeFormat,\n mergeDateTimeFormat,\n getNumberFormat,\n setNumberFormat,\n mergeNumberFormat\n };\n function sync(composer) {\n composer.locale.value = _locale.value;\n composer.fallbackLocale.value = _fallbackLocale.value;\n Object.keys(_messages.value).forEach(locale => {\n composer.mergeLocaleMessage(locale, _messages.value[locale]);\n });\n Object.keys(_datetimeFormats.value).forEach(locale => {\n composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\n });\n Object.keys(_numberFormats.value).forEach(locale => {\n composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\n });\n composer.escapeParameter = _escapeParameter;\n composer.fallbackFormat = _fallbackFormat;\n composer.fallbackRoot = _fallbackRoot;\n composer.fallbackWarn = _fallbackWarn;\n composer.missingWarn = _missingWarn;\n composer.warnHtmlMessage = _warnHtmlMessage;\n }\n onBeforeMount(() => {\n if (instance.proxy == null || instance.proxy.$i18n == null) {\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const composer = (_composer.value = instance.proxy.$i18n\n .__composer);\n if (scope === 'global') {\n _locale.value = composer.locale.value;\n _fallbackLocale.value = composer.fallbackLocale.value;\n _messages.value = composer.messages.value;\n _datetimeFormats.value = composer.datetimeFormats.value;\n _numberFormats.value = composer.numberFormats.value;\n }\n else if (isLocalScope) {\n sync(composer);\n }\n });\n return wrapper;\n}\nconst globalExportProps = [\n 'locale',\n 'fallbackLocale',\n 'availableLocales'\n];\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm', 'te']\n ;\nfunction injectGlobalFields(app, composer) {\n const i18n = Object.create(null);\n globalExportProps.forEach(prop => {\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\n if (!desc) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n const wrap = isRef(desc.value) // check computed props\n ? {\n get() {\n return desc.value.value;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(val) {\n desc.value.value = val;\n }\n }\n : {\n get() {\n return desc.get && desc.get();\n }\n };\n Object.defineProperty(i18n, prop, wrap);\n });\n app.config.globalProperties.$i18n = i18n;\n globalExportMethods.forEach(method => {\n const desc = Object.getOwnPropertyDescriptor(composer, method);\n if (!desc || !desc.value) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\n });\n const dispose = () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete app.config.globalProperties.$i18n;\n globalExportMethods.forEach(method => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete app.config.globalProperties[`$${method}`];\n });\n };\n return dispose;\n}\n\n{\n initFeatureFlags();\n}\n// register message compiler for jit compilation\nif (__INTLIFY_JIT_COMPILATION__) {\n registerMessageCompiler(compile);\n}\n// register message resolver at vue-i18n\nregisterMessageResolver(resolveValue);\n// register fallback locale at vue-i18n\nregisterLocaleFallbacker(fallbackWithLocaleChain);\n// NOTE: experimental !!\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n const target = getGlobalThis();\n target.__INTLIFY__ = true;\n setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\n}\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nD, I18nInjectionKey, I18nN, I18nT, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import toString from './toString.js';\nimport upperFirst from './upperFirst.js';\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nexport default capitalize;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nexport default arrayReduce;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default basePropertyOf;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nexport default deburrLetter;\n","import deburrLetter from './_deburrLetter.js';\nimport toString from './toString.js';\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nexport default deburr;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nexport default asciiWords;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nexport default hasUnicodeWord;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nexport default unicodeWords;\n","import asciiWords from './_asciiWords.js';\nimport hasUnicodeWord from './_hasUnicodeWord.js';\nimport toString from './toString.js';\nimport unicodeWords from './_unicodeWords.js';\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nexport default words;\n","import arrayReduce from './_arrayReduce.js';\nimport deburr from './deburr.js';\nimport words from './words.js';\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nexport default createCompounder;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nexport default mergeWith;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import root from './_root.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite;\n\n/**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\nfunction isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n}\n\nexport default isFinite;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nexport default isNumber;\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nexport default isNull;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nexport default isUndefined;\n","import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nexport default kebabCase;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n","import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nexport default omit;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n","export default {\n menu: {\n title: 'Menu'\n },\n timePicker: {\n title: 'Select time',\n am: 'AM',\n pm: 'PM',\n cancel: 'Cancel',\n save: 'Done'\n },\n minside: {\n title: 'Welcome back, {0}'\n },\n errorDialog: {\n title: 'Something went wrong',\n close: 'Cancel',\n reload: 'Refresh page',\n subtitle: 'Try to refresh the page or restart the browser.'\n },\n phoneVerification: {\n recaptchaTokenMissing: 'Recaptcha token missing. Reload the page and try again.',\n tooManyRequests: 'Too many requests. Please try again later.',\n missingParams: 'Missing parameters. Please try again.',\n requestForPhoneVerificationDefaultError: 'An error occurred while requesting for phone confirmation code. Please try again later.',\n checkPhoneVerificationCodeDefaultError: 'An error occurred while verifying phone confirmation code. Please try again later.',\n }\n};\n","export default {\n menu: {\n title: 'Meny'\n },\n timePicker: {\n title: 'Velg tid',\n am: 'AM',\n pm: 'PM',\n cancel: 'Avbryt',\n save: 'Bekreft'\n },\n minside: {\n title: 'Velkommen tilbake, {0}'\n },\n errorDialog: {\n title: 'Noe gikk galt',\n close: 'Avbryt',\n reload: 'Last inn siden på nytt',\n subtitle: 'Prøv å laste inn siden på nytt eller å lukke og åpne nettleseren igjen.'\n },\n phoneVerification: {\n recaptchaTokenMissing: 'Recaptcha token mangler. Last siden på nytt og prøv igjen.',\n tooManyRequests: 'For mange forespørsler. Prøv igjen senere.',\n missingParams: 'Mangler parametre. Prøv igjen.',\n requestForPhoneVerificationDefaultError: 'En feil oppsto ved henting av telefonnøkkel. Prøv igjen senere.',\n checkPhoneVerificationCodeDefaultError: 'En feil oppsto ved verifisering av telefonnøkkel. Prøv igjen senere.',\n }\n};\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount) {\n const timestamp = +toDate(date);\n return constructFrom(date, timestamp + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { addMilliseconds } from \"./addMilliseconds.mjs\";\nimport { millisecondsInMinute } from \"./constants.mjs\";\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport function addMinutes(date, amount) {\n return addMilliseconds(date, amount * millisecondsInMinute);\n}\n\n// Fallback for modularized imports:\nexport default addMinutes;\n","import { startOfDay } from \"./startOfDay.mjs\";\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(dateLeft, dateRight) {\n const dateLeftStartOfDay = startOfDay(dateLeft);\n const dateRightStartOfDay = startOfDay(dateRight);\n\n return +dateLeftStartOfDay === +dateRightStartOfDay;\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(dateLeft, dateRight) {\n return +toDate(dateLeft) - +toDate(dateRight);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.mjs\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.mjs\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(dateLeft, dateRight, options) {\n const diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport function startOfMinute(date) {\n const _date = toDate(date);\n _date.setSeconds(0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMinute;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { format } from \"./format.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link formatRelative} function options.\n */\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to format\n * @param baseDate - The date to compare with\n * @param options - An object with options\n *\n * @returns The date in words\n *\n * @throws `date` must not be Invalid Date\n * @throws `baseDate` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws `options.locale` must contain `formatRelative` property\n *\n * @example\n * // Represent the date of 6 days ago in words relative to the given base date. In this example, today is Wednesday\n * const result = formatRelative(subDays(new Date(), 6), new Date())\n * //=> \"last Thursday at 12:45 AM\"\n */\nexport function formatRelative(date, baseDate, options) {\n const _date = toDate(date);\n const _baseDate = toDate(baseDate);\n\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const diff = differenceInCalendarDays(_date, _baseDate);\n\n if (isNaN(diff)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let token;\n if (diff < -6) {\n token = \"other\";\n } else if (diff < -1) {\n token = \"lastWeek\";\n } else if (diff < 0) {\n token = \"yesterday\";\n } else if (diff < 1) {\n token = \"today\";\n } else if (diff < 2) {\n token = \"tomorrow\";\n } else if (diff < 7) {\n token = \"nextWeek\";\n } else {\n token = \"other\";\n }\n\n const formatStr = locale.formatRelative(token, _date, _baseDate, {\n locale,\n weekStartsOn,\n });\n return format(_date, formatStr, { locale, weekStartsOn });\n}\n\n// Fallback for modularized imports:\nexport default formatRelative;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date) {\n const _date = toDate(date);\n let day = _date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * The locale string (see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).\n */\n\n/**\n * The format options (see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options)\n */\n\n/**\n * The locale options.\n */\n\n/**\n * @name intlFormat\n * @category Common Helpers\n * @summary Format the date with Intl.DateTimeFormat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat).\n *\n * @description\n * Return the formatted date string in the given format.\n * The method uses [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) inside.\n * formatOptions are the same as [`Intl.DateTimeFormat` options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options)\n *\n * > ⚠️ Please note that before Node version 13.0.0, only the locale data for en-US is available by default.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to format\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n *\n * @example\n * // Represent 4 October 2019 in middle-endian format:\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456))\n * //=> 10/4/2019\n */\n\n/**\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to format\n * @param localeOptions - An object with locale\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n *\n * @example\n * // Represent 4 October 2019 in Korean.\n * // Convert the date with locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * locale: 'ko-KR',\n * })\n * //=> 2019. 10. 4.\n */\n\n/**\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to format\n * @param formatOptions - The format options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n *\n * @example\n * // Represent 4 October 2019.\n * // Convert the date with format's options.\n * const result = intlFormat.default(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * year: 'numeric',\n * month: 'numeric',\n * day: 'numeric',\n * hour: 'numeric',\n * })\n * //=> 10/4/2019, 12 PM\n */\n\n/**\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to format\n * @param formatOptions - The format options\n * @param localeOptions - An object with locale\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n *\n * @example\n * // Represent 4 October 2019 in German.\n * // Convert the date with format's options and locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * weekday: 'long',\n * year: 'numeric',\n * month: 'long',\n * day: 'numeric',\n * }, {\n * locale: 'de-DE',\n * })\n * //=> Freitag, 4. Oktober 2019\n */\n\nexport function intlFormat(date, formatOrLocale, localeOptions) {\n let formatOptions;\n\n if (isFormatOptions(formatOrLocale)) {\n formatOptions = formatOrLocale;\n } else {\n localeOptions = formatOrLocale;\n }\n\n return new Intl.DateTimeFormat(localeOptions?.locale, formatOptions).format(\n toDate(date),\n );\n}\n\nfunction isFormatOptions(opts) {\n return opts !== undefined && !(\"locale\" in opts);\n}\n\n// Fallback for modularized imports:\nexport default intlFormat;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return +_date < +_dateToCompare;\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport function isEqual(leftDate, rightDate) {\n const _dateLeft = toDate(leftDate);\n const _dateRight = toDate(rightDate);\n return +_dateLeft === +_dateRight;\n}\n\n// Fallback for modularized imports:\nexport default isEqual;\n","import { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam DateInputType - The input `Date` type derived from the passed argument.\n * @typeParam DateOutputType - The output `Date` type derived from the passed constructor.\n *\n * @param fromDate - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(fromDate, constructor) {\n const date =\n constructor instanceof Date\n ? constructFrom(constructor, 0)\n : new constructor(0);\n date.setFullYear(\n fromDate.getFullYear(),\n fromDate.getMonth(),\n fromDate.getDate(),\n );\n date.setHours(\n fromDate.getHours(),\n fromDate.getMinutes(),\n fromDate.getSeconds(),\n fromDate.getMilliseconds(),\n );\n return date;\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n","import { transpose } from \"../../transpose.mjs\";\nimport { constructFrom } from \"../../constructFrom.mjs\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n subPriority = 0;\n\n validate(_utcDate, _options) {\n return true;\n }\n}\n\nexport class ValueSetter extends Setter {\n constructor(\n value,\n\n validateValue,\n\n setValue,\n\n priority,\n subPriority,\n ) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\n\nexport class DateToSystemTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, Date));\n }\n}\n","import { ValueSetter } from \"./Setter.mjs\";\n\nexport class Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority,\n ),\n rest: result.rest,\n };\n }\n\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\n","import { Parser } from \"../Parser.mjs\";\n\nexport class EraParser extends Parser {\n priority = 140;\n\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return (\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return (\n match.era(dateString, { width: \"wide\" }) ||\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n }\n }\n\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n","export const numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n millisecondsInSecond,\n} from \"../../constants.mjs\";\nimport { numericPatterns } from \"./constants.mjs\";\n\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest,\n };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1),\n };\n }\n\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value:\n sign *\n (hours * millisecondsInHour +\n minutes * millisecondsInMinute +\n seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"yy\",\n });\n\n switch (token) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { getWeekYear } from \"../../../getWeekYear.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"YY\",\n });\n\n switch (token) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate,\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n\n incompatibleTokens = [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\nexport class ExtendedYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\n\nexport class QuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\n\nexport class StandAloneQuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class MonthParser extends Parser {\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class StandAloneMonthParser extends Parser {\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getWeek } from \"./getWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n const _date = toDate(date);\n const diff = getWeek(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n","import { setWeek } from \"../../../setWeek.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { getISOWeek } from \"./getISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week) {\n const _date = toDate(date);\n const diff = getISOWeek(_date) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n","import { setISOWeek } from \"../../../setISOWeek.mjs\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.mjs\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n priority = 90;\n subPriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.mjs\";\n\nexport class DayOfYearParser extends Parser {\n priority = 90;\n\n subpriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { addDays } from \"./addDays.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const currentDay = _date.getDay();\n\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n\n const delta = 7 - weekStartsOn;\n const diff =\n day < 0 || day > 6\n ? day - ((currentDay + delta) % 7)\n : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\n\n// Day of week\nexport class DayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"EEEE\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"e\":\n case \"ee\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"eee\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"eeee\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"c\":\n case \"cc\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"ccc\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return (\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // Tuesday\n case \"cccc\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\",\n ];\n}\n","import { addDays } from \"./addDays.mjs\";\nimport { getISODay } from \"./getISODay.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day) {\n const _date = toDate(date);\n const currentDay = getISODay(_date);\n const diff = day - currentDay;\n return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n","import { setISODay } from \"../../../setISODay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n\n switch (token) {\n // 2\n case \"i\":\n case \"ii\": // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue(\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // T\n case \"iiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tu\n case \"iiiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(\n match.day(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\nexport class AMPMParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\nexport class AMPMMidnightParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour1to12Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour0to23Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour0To11Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class Hour1To24Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class MinuteParser extends Parser {\n priority = 60;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\nexport class SecondParser extends Parser {\n priority = 50;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\nexport class FractionOfSecondParser extends Parser {\n priority = 30;\n\n parse(dateString, token) {\n const valueCallback = (value) =>\n Math.trunc(value * Math.pow(10, -token.length + 3));\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"XXXXX\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"xxxxx\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\n\nexport class TimestampSecondsParser extends Parser {\n priority = 40;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\n\nexport class TimestampMillisecondsParser extends Parser {\n priority = 20;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { EraParser } from \"./parsers/EraParser.mjs\";\nimport { YearParser } from \"./parsers/YearParser.mjs\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.mjs\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.mjs\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.mjs\";\nimport { QuarterParser } from \"./parsers/QuarterParser.mjs\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.mjs\";\nimport { MonthParser } from \"./parsers/MonthParser.mjs\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.mjs\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.mjs\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.mjs\";\nimport { DateParser } from \"./parsers/DateParser.mjs\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.mjs\";\nimport { DayParser } from \"./parsers/DayParser.mjs\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.mjs\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.mjs\";\nimport { ISODayParser } from \"./parsers/ISODayParser.mjs\";\nimport { AMPMParser } from \"./parsers/AMPMParser.mjs\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.mjs\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.mjs\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.mjs\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.mjs\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.mjs\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.mjs\";\nimport { MinuteParser } from \"./parsers/MinuteParser.mjs\";\nimport { SecondParser } from \"./parsers/SecondParser.mjs\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.mjs\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.mjs\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.mjs\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.mjs\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- It's ok, we want any here\nexport const parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser(),\n};\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getDefaultOptions } from \"./getDefaultOptions.mjs\";\nimport { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { parsers } from \"./parse/_lib/parsers.mjs\";\nimport { DateToSystemTimezoneSetter } from \"./parse/_lib/Setter.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n if (formatStr === \"\") {\n if (dateStr === \"\") {\n return toDate(referenceDate);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n const setters = [new DateToSystemTimezoneSetter()];\n\n const tokens = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp);\n\n const usedTokens = [];\n\n for (let token of tokens) {\n if (\n !options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n if (\n !options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n\n const firstCharacter = token[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) =>\n incompatibleTokens.includes(usedToken.token) ||\n usedToken.token === firstCharacter,\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n );\n }\n\n usedTokens.push({ token: firstCharacter, fullToken: token });\n\n const parseResult = parser.run(\n dateStr,\n token,\n locale.match,\n subFnOptions,\n );\n\n if (!parseResult) {\n return constructFrom(referenceDate, NaN);\n }\n\n setters.push(parseResult.setter);\n\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return constructFrom(referenceDate, NaN);\n }\n\n const uniquePrioritySetters = setters\n .map((setter) => setter.priority)\n .sort((a, b) => b - a)\n .filter((priority, index, array) => array.indexOf(priority) === index)\n .map((priority) =>\n setters\n .filter((setter) => setter.priority === priority)\n .sort((a, b) => b.subPriority - a.subPriority),\n )\n .map((setterArray) => setterArray[0]);\n\n let date = toDate(referenceDate);\n\n if (isNaN(date.getTime())) {\n return constructFrom(referenceDate, NaN);\n }\n\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return constructFrom(referenceDate, NaN);\n }\n\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n\n return constructFrom(referenceDate, date);\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n","import { minutesInHour } from \"./constants.mjs\";\n\n/**\n * @name minutesToHours\n * @category Conversion Helpers\n * @summary Convert minutes to hours.\n *\n * @description\n * Convert a number of minutes to a full number of hours.\n *\n * @param minutes - The number of minutes to be converted\n *\n * @returns The number of minutes converted in hours\n *\n * @example\n * // Convert 140 minutes to hours:\n * const result = minutesToHours(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = minutesToHours(179)\n * //=> 2\n */\nexport function minutesToHours(minutes) {\n const hours = minutes / minutesInHour;\n return Math.trunc(hours);\n}\n\n// Fallback for modularized imports:\nexport default minutesToHours;\n","import { millisecondsInHour, millisecondsInMinute } from \"./constants.mjs\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n const dirtyDate = new Date(timestamp + time);\n // JS parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n const result = new Date(0);\n result.setFullYear(\n dirtyDate.getUTCFullYear(),\n dirtyDate.getUTCMonth(),\n dirtyDate.getUTCDate(),\n );\n result.setHours(\n dirtyDate.getUTCHours(),\n dirtyDate.getUTCMinutes(),\n dirtyDate.getUTCSeconds(),\n dirtyDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import { secondsInHour } from \"./constants.mjs\";\n\n/**\n * @name secondsToHours\n * @category Conversion Helpers\n * @summary Convert seconds to hours.\n *\n * @description\n * Convert a number of seconds to a full number of hours.\n *\n * @param seconds - The number of seconds to be converted\n *\n * @returns The number of seconds converted in hours\n *\n * @example\n * // Convert 7200 seconds into hours\n * const result = secondsToHours(7200)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToHours(7199)\n * //=> 1\n */\nexport function secondsToHours(seconds) {\n const hours = seconds / secondsInHour;\n return Math.trunc(hours);\n}\n\n// Fallback for modularized imports:\nexport default secondsToHours;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getDaysInMonth } from \"./getDaysInMonth.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param month - The month index to set (0-11)\n *\n * @returns The new date with the month set\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport function setMonth(date, month) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const day = _date.getDate();\n\n const dateWithDesiredMonth = constructFrom(date, 0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n const daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n _date.setMonth(month, Math.min(day, daysInMonth));\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMonth;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { setMonth } from \"./setMonth.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param values - The date values to be set\n *\n * @returns The new date with options set\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\n\nexport function set(date, values) {\n let _date = toDate(date);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(+_date)) {\n return constructFrom(date, NaN);\n }\n\n if (values.year != null) {\n _date.setFullYear(values.year);\n }\n\n if (values.month != null) {\n _date = setMonth(_date, values.month);\n }\n\n if (values.date != null) {\n _date.setDate(values.date);\n }\n\n if (values.hours != null) {\n _date.setHours(values.hours);\n }\n\n if (values.minutes != null) {\n _date.setMinutes(values.minutes);\n }\n\n if (values.seconds != null) {\n _date.setSeconds(values.seconds);\n }\n\n if (values.milliseconds != null) {\n _date.setMilliseconds(values.milliseconds);\n }\n\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default set;\n","export class CustomError extends Error {\n isCustomError = true;\n\n constructor(name: string, message: string) {\n super(message);\n this.name = name;\n }\n}\n\nexport function isCustomError(error: any): error is CustomError {\n return error.isCustomError;\n}\n","import axios, { CanceledError } from 'axios';\nimport MenuStructure from './MenuStructure';\n\nfunction useMenuProvider(baseUrl: string) {\n async function getMenuItems(): Promise {\n let abortController = new AbortController();\n const timeout = setTimeout(() => {\n abortController.abort();\n console.log('getMenuItems aborted');\n }, 2000);\n\n try {\n const response = await axios.get(baseUrl + '/api/common/content/menu',\n { signal: abortController.signal, timeout: 2000 });\n clearTimeout(timeout);\n\n return response.data;\n } catch (e) {\n clearTimeout(timeout);\n\n if (!(e instanceof CanceledError)) {\n console.log(e);\n }\n throw e;\n }\n }\n\n return {\n getMenuItems\n };\n}\n\nexport default useMenuProvider;\n","import axios, { CanceledError } from 'axios';\n\ninterface GetAutocompleteOptions {\n signal?: AbortSignal;\n}\n\nfunction useSearchService(link?: string) {\n async function getAutocomplete(keyword: string, options?: GetAutocompleteOptions): Promise {\n try {\n const response = await axios.get(link + keyword, { signal: options?.signal });\n return response.data || [];\n } catch (e) {\n if (!(e instanceof CanceledError)) {\n console.log(e);\n }\n return [];\n }\n }\n\n return {\n getAutocomplete\n };\n}\n\nexport default useSearchService;\n","import { ProfileInfo } from '../models';\nimport MenuStructure from './MenuProvider/MenuStructure';\nimport { computed } from 'vue';\n\nexport function useSiteNavigation(props: Readonly<{ menuItems?: MenuStructure; currentLanguage?: string; isLoggedIn: boolean }>) {\n const currentLanguage = getCurrentLanguage(props);\n const topMenu = computed(() =>\n (props.menuItems?.topMenu?.[currentLanguage.value] || [])\n .filter(m => (props.isLoggedIn ? m.availableForAuthorized : m.availableForAnonymous))\n .map(x => ({\n ...x,\n childPages: x.childPages?.filter(p => (props.isLoggedIn ? p.availableForAuthorized : p.availableForAnonymous))\n }))\n );\n const loginLink = computed(() => props.menuItems?.loginLink?.[currentLanguage.value]);\n const logoutLink = computed(() => props.menuItems?.logoutLink?.[currentLanguage.value]);\n const searchPage = computed(() => props.menuItems?.searchLink?.[currentLanguage.value]);\n const contactUsPage = computed(() => props.menuItems?.contactUsLink?.[currentLanguage.value]);\n\n return {\n topMenu,\n loginLink,\n logoutLink,\n searchPage,\n contactUsPage\n };\n}\n\nexport function useProfileNavigation(props: Readonly<{ profileInfo?: ProfileInfo; currentLanguage?: string }>) {\n const profilePageLink = computed(() => props.profileInfo?.profilePage?.[getCurrentLanguage(props).value].link);\n const profilePageInfo = computed(() => props.profileInfo?.profilePage?.[getCurrentLanguage(props).value]);\n\n return {\n profilePageInfo,\n profilePageLink\n };\n}\n\nfunction getCurrentLanguage(props?: { currentLanguage?: string }) {\n return computed(() => props?.currentLanguage ?? 'no');\n}\n","/**\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\n * `date` as it will be rendered in the `timeZone`.\n */\nexport function tzTokenizeDate(date, timeZone) {\n const dtf = getDateTimeFormat(timeZone);\n return 'formatToParts' in dtf ? partsOffset(dtf, date) : hackyOffset(dtf, date);\n}\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5,\n};\nfunction partsOffset(dtf, date) {\n try {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const pos = typeToPos[formatted[i].type];\n if (pos !== undefined) {\n filled[pos] = parseInt(formatted[i].value, 10);\n }\n }\n return filled;\n }\n catch (error) {\n if (error instanceof RangeError) {\n return [NaN];\n }\n throw error;\n }\n}\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted);\n // const [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\n // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\n return [\n parseInt(parsed[3], 10),\n parseInt(parsed[1], 10),\n parseInt(parsed[2], 10),\n parseInt(parsed[4], 10),\n parseInt(parsed[5], 10),\n parseInt(parsed[6], 10),\n ];\n}\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\n// to get deterministic local date/time output according to the `en-US` locale which\n// can be used to extract local time parts as necessary.\nconst dtfCache = {};\n// New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\nconst testDateFormatted = new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: 'America/New_York',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n}).format(new Date('2014-06-25T04:00:00.123Z'));\nconst hourCycleSupported = testDateFormatted === '06/25/2014, 00:00:00' ||\n testDateFormatted === '06/25/2014 00:00:00';\nfunction getDateTimeFormat(timeZone) {\n if (!dtfCache[timeZone]) {\n dtfCache[timeZone] = hourCycleSupported\n ? new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n })\n : new Intl.DateTimeFormat('en-US', {\n hour12: false,\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n }\n return dtfCache[timeZone];\n}\n","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n const utcDate = new Date(0);\n utcDate.setUTCFullYear(fullYear, month, day);\n utcDate.setUTCHours(hour, minute, second, millisecond);\n return utcDate;\n}\n","import { tzTokenizeDate } from '../tzTokenizeDate/index.js';\nimport { newDateUTC } from '../newDateUTC/index.js';\nconst MILLISECONDS_IN_HOUR = 3600000;\nconst MILLISECONDS_IN_MINUTE = 60000;\nconst patterns = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/,\n};\n// Parse constious time zone offset formats to an offset in milliseconds\nexport function tzParseTimezone(timezoneString, date, isUtcDate) {\n // Empty string\n if (!timezoneString) {\n return 0;\n }\n // Z\n let token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0;\n }\n let hours;\n let absoluteOffset;\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[1], 10);\n if (!validateTimezone(hours)) {\n return NaN;\n }\n return -(hours * MILLISECONDS_IN_HOUR);\n }\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n const minutes = parseInt(token[3], 10);\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n // IANA time zone\n if (isValidTimezoneIANAString(timezoneString)) {\n date = new Date(date || Date.now());\n const utcDate = isUtcDate ? date : toUtcDate(date);\n const offset = calcOffset(utcDate, timezoneString);\n const fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString);\n return -fixedOffset;\n }\n return NaN;\n}\nfunction toUtcDate(date) {\n return newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\nfunction calcOffset(date, timezoneString) {\n const tokens = tzTokenizeDate(date, timezoneString);\n // ms dropped because it's not provided by tzTokenizeDate\n const asUTC = newDateUTC(tokens[0], tokens[1] - 1, tokens[2], tokens[3] % 24, tokens[4], tokens[5], 0).getTime();\n let asTS = date.getTime();\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return asUTC - asTS;\n}\nfunction fixOffset(date, offset, timezoneString) {\n const localTS = date.getTime();\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - offset;\n // Test whether the zone matches the offset for this ts\n const o2 = calcOffset(new Date(utcGuess), timezoneString);\n // If so, offset didn't change, and we're done\n if (offset === o2) {\n return offset;\n }\n // If not, change the ts by the difference in the offset\n utcGuess -= o2 - offset;\n // If that gives us the local time we want, we're done\n const o3 = calcOffset(new Date(utcGuess), timezoneString);\n if (o2 === o3) {\n return o2;\n }\n // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\n return Math.max(o2, o3);\n}\nfunction validateTimezone(hours, minutes) {\n return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59));\n}\nconst validIANATimezoneCache = {};\nfunction isValidTimezoneIANAString(timeZoneString) {\n if (validIANATimezoneCache[timeZoneString])\n return true;\n try {\n new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString });\n validIANATimezoneCache[timeZoneString] = true;\n return true;\n }\n catch (error) {\n return false;\n }\n}\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return +date - +utcDate;\n}\n","/** Regex to identify the presence of a time zone specifier in a date string */\nexport const tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/;\n","import { getTimezoneOffsetInMilliseconds } from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { tzParseTimezone } from '../_lib/tzParseTimezone/index.js';\nimport { tzPattern } from '../_lib/tzPattern/index.js';\nconst MILLISECONDS_IN_HOUR = 3600000;\nconst MILLISECONDS_IN_MINUTE = 60000;\nconst DEFAULT_ADDITIONAL_DIGITS = 2;\nconst patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/, // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/, // 2 additional digits\n ],\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n // time zone tokens (to identify the presence of a tz)\n timeZone: tzPattern,\n};\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param argument the value to convert\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {string} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n *\n * @returns the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function toDate(argument, options = {}) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present');\n }\n if (argument === null) {\n return new Date(NaN);\n }\n const additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n }\n else if (typeof argument === 'number' ||\n Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument);\n }\n else if (!(Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n const dateStrings = splitDateString(argument);\n const { year, restDateString } = parseYear(dateStrings.date, additionalDigits);\n const date = parseDate(restDateString, year);\n if (date === null || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (date) {\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (time === null || isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timeZone || options.timeZone) {\n offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time));\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n }\n else {\n // get offset accurate to hour in time zones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n return new Date(timestamp + time + offset);\n }\n else {\n return new Date(NaN);\n }\n}\nfunction splitDateString(dateString) {\n const dateStrings = {};\n let parts = patterns.dateTimePattern.exec(dateString);\n let timeString;\n if (!parts) {\n parts = patterns.datePattern.exec(dateString);\n if (parts) {\n dateStrings.date = parts[1];\n timeString = parts[2];\n }\n else {\n dateStrings.date = null;\n timeString = dateString;\n }\n }\n else {\n dateStrings.date = parts[1];\n timeString = parts[3];\n }\n if (timeString) {\n const token = patterns.timeZone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timeZone = token[1].trim();\n }\n else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n if (dateString) {\n const patternYYY = patterns.YYY[additionalDigits];\n const patternYYYYY = patterns.YYYYY[additionalDigits];\n // YYYY or ±YYYYY\n let token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n const yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length),\n };\n }\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n const centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length),\n };\n }\n }\n // Invalid ISO-formatted year\n return {\n year: null,\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null;\n }\n let date;\n let month;\n let week;\n // YYYY\n if (!dateString || !dateString.length) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date;\n }\n // YYYY-MM\n let token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n if (!validateDate(year, month)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month);\n return date;\n }\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n const dayOfYear = parseInt(token[1], 10);\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n }\n // yyyy-MM-dd or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n const day = parseInt(token[2], 10);\n if (!validateDate(year, month, day)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, day);\n return date;\n }\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n if (!validateWeekDate(week)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week);\n }\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n const dayOfWeek = parseInt(token[2], 10) - 1;\n if (!validateWeekDate(week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n }\n // Invalid ISO-formatted date\n return null;\n}\nfunction parseTime(timeString) {\n let hours;\n let minutes;\n // hh\n let token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n if (!validateTime(hours)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR;\n }\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n if (!validateTime(hours, minutes)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n }\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n const seconds = parseFloat(token[3].replace(',', '.'));\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n }\n // Invalid ISO-formatted time\n return null;\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n// Validation functions\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false;\n }\n if (date != null) {\n if (date < 1) {\n return false;\n }\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false;\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false;\n }\n }\n return true;\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false;\n }\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false;\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false;\n }\n return true;\n}\nfunction validateWeekDate(week, day) {\n if (week < 0 || week > 52) {\n return false;\n }\n if (day != null && (day < 0 || day > 6)) {\n return false;\n }\n return true;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours < 0 || hours >= 25) {\n return false;\n }\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false;\n }\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false;\n }\n return true;\n}\n","import { tzParseTimezone } from '../_lib/tzParseTimezone/index.js';\nimport { toDate } from '../toDate/index.js';\n/**\n * @name toZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param date the date with the relevant UTC time\n * @param timeZone the time zone to get local time for, can be an offset or IANA time zone\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n *\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = toZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport function toZonedTime(date, timeZone, options) {\n date = toDate(date, options);\n const offsetMilliseconds = tzParseTimezone(timeZone, date, true);\n const d = new Date(date.getTime() - offsetMilliseconds);\n const resultDate = new Date(0);\n resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate());\n resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds());\n return resultDate;\n}\n","import { toDate } from '../toDate/index.js';\nimport { tzPattern } from '../_lib/tzPattern/index.js';\nimport { tzParseTimezone } from '../_lib/tzParseTimezone/index.js';\nimport { newDateUTC } from '../_lib/newDateUTC/index.js';\n/**\n * @name fromZonedTime\n * @category Time Zone Helpers\n * @summary Get the UTC date/time from a date representing local time in a given time zone\n *\n * @description\n * Returns a date instance with the UTC time of the provided date of which the values\n * represented the local time in the time zone specified. In other words, if the input\n * date represented local time in time zone, the timestamp of the output date will\n * give the equivalent UTC of that local time regardless of the current system time zone.\n *\n * @param date the date with values representing the local time\n * @param timeZone the time zone of this local time, can be an offset or IANA time zone\n * @param options the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am in Los Angeles is 5pm UTC\n * const result = fromZonedTime(new Date(2014, 5, 25, 10, 0, 0), 'America/Los_Angeles')\n * //=> 2014-06-25T17:00:00.000Z\n */\nexport function fromZonedTime(date, timeZone, options) {\n if (typeof date === 'string' && !date.match(tzPattern)) {\n return toDate(date, { ...options, timeZone });\n }\n date = toDate(date, options);\n const utc = newDateUTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()).getTime();\n const offsetMilliseconds = tzParseTimezone(timeZone, new Date(utc));\n return new Date(utc + offsetMilliseconds);\n}\n","import { toZonedTime, fromZonedTime } from 'date-fns-tz';\nimport { set, isEqual as _isEqual } from 'date-fns';\n\nconst defaultLocale = 'no';\nconst defaultTimeZone = 'Europe/Oslo';\n\n/**\n *\n * @param left first Date to compare\n * @param right second Date to compare\n * @param unit\n * @returns\n */\nexport function isEqual(\n left: Date | number,\n right: Date | number,\n unit: 'year' | 'month' | 'date' | 'hour' | 'minute' | 'second' | 'millisecond' = 'second'\n) {\n if (!left || !right) return false;\n\n let setOptions = {};\n switch (unit) {\n case 'year':\n setOptions = {\n month: 1,\n date: 1,\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0\n };\n break;\n case 'month':\n setOptions = {\n date: 1,\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0\n };\n break;\n case 'date':\n setOptions = {\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0\n };\n break;\n case 'hour':\n setOptions = {\n minutes: 0,\n seconds: 0,\n milliseconds: 0\n };\n break;\n case 'minute':\n setOptions = {\n seconds: 0,\n milliseconds: 0\n };\n break;\n case 'second':\n setOptions = {\n milliseconds: 0\n };\n break;\n }\n\n return _isEqual(set(left, setOptions), set(right, setOptions));\n}\n\n/**\n * Converts Date object from UTC to given timezone.\n * @param utcDate UTC Date object or ISO Date string\n * @param timeZone IANA time zone name\n * @returns Date object representing local time in the given timezone\n */\nexport function toLocalDate(utcDate: Date | number, timeZone = defaultTimeZone) {\n return toZonedTime(utcDate, timeZone);\n}\n\n/**\n * Converts Date object from given timezone to UTC.\n * @param localDate Date object or ISO Date string\n * @param timeZone IANA time zone name\n * @returns Date object representing UTC time\n */\nexport function toUtcDate(localDate: Date | number, timeZone = defaultTimeZone) {\n return fromZonedTime(localDate, timeZone);\n}\n\nexport function toLocaleTimeString(date: Date | number, locale = defaultLocale, timeZone = defaultTimeZone) {\n if (!date) return '';\n\n return new Intl.DateTimeFormat(locale, {\n timeZone,\n hour: '2-digit',\n minute: '2-digit',\n hourCycle: 'h23'\n }).format(new Date(date));\n}\n\nexport function toLocaleLongDateString(date: Date | number, locale = defaultLocale, timeZone = defaultTimeZone) {\n if (!date) return '';\n\n return new Intl.DateTimeFormat(locale, {\n timeZone,\n weekday: 'long',\n day: 'numeric',\n month: 'long'\n }).format(new Date(date));\n}\n\nexport function toLocaleDateString(date: Date | number, locale = defaultLocale, timeZone = defaultTimeZone) {\n if (!date) return '';\n\n return new Intl.DateTimeFormat(locale, {\n timeZone,\n day: '2-digit',\n month: '2-digit',\n year: 'numeric'\n }).format(new Date(date));\n}\n\nexport function humanizeDuration(seconds: number, units: { [key: string]: string }): string {\n if (typeof seconds !== 'number') return '';\n\n let minutes = Math.ceil(seconds / 60);\n if (minutes === 0) minutes = 0;\n else if (minutes > 0 && minutes < 1) minutes = 1;\n\n if (minutes < 60) return `${minutes} ${units['minutes']}`;\n if (minutes == 60) return `1 ${units['hours']}`;\n\n return `${Math.floor(minutes / 60)} ${units['hours']} ${minutes - Math.floor(minutes / 60) * 60} ${units['minutes']}`;\n}\n\nexport function useDateHelpers() {\n return {\n isEqual,\n toLocalDate,\n toUtcDate,\n toLocaleTimeString,\n toLocaleDateString,\n toLocaleLongDateString,\n humanizeDuration\n };\n}\n","import { shallowRef, watchEffect, readonly, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, hasInjectionContext, inject, provide, ref, isRef, unref, toValue as toValue$1, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = shallowRef(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get(v);\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const clear = () => {\n fns.clear();\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (...args) => {\n return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n };\n return {\n on,\n off,\n trigger,\n clear\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null && !hasInjectionContext())\n throw new Error(\"injectLocal must be called in setup\");\n if (instance && localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n const defaultValue = options == null ? void 0 : options.defaultValue;\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key, defaultValue);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createRef(value, deep) {\n if (deep === true) {\n return ref(value);\n } else {\n return shallowRef(value);\n }\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!scope) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue$1;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue$1(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a, _b;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue$1(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue$1(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue$1(defaultValue);\n trigger();\n }, toValue$1(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n let lastInvoker;\n const filter = (invoke) => {\n const duration = toValue$1(ms);\n const maxDuration = toValue$1(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n lastInvoker = invoke;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(lastInvoker());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(...args) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n let ms;\n let trailing;\n let leading;\n let rejectOnCancel;\n if (!isRef(args[0]) && typeof args[0] === \"object\")\n ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n else\n [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue$1(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n const {\n initialState = \"active\"\n } = options;\n const isActive = toRef(initialState === \"active\");\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?\\d+\\.?\\d*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction pxValue(px) {\n return px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\nfunction toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction cacheStringFunction(fn) {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction getLifeCycleTarget(target) {\n return target || getCurrentInstance();\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n const [target, key, value] = args;\n target[key] = value;\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n initialState = \"active\",\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n const targetsArray = toArray(targets);\n return watch(\n source,\n (newValue) => targetsArray.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue$1(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nconst toValue = toValue$1;\nconst resolveUnref = toValue$1;\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeMount(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n const instance = getLifeCycleTarget();\n if (instance)\n onMounted(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue$1(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue$1(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue$1(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a, _b;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n const {\n symmetric = false\n } = (_b = args[3]) != null ? _b : {};\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n const diff1 = computed(() => toValue$1(list).filter((x) => toValue$1(values).findIndex((y) => compareFn(x, y)) === -1));\n if (symmetric) {\n const diff2 = computed(() => toValue$1(values).filter((x) => toValue$1(list).findIndex((y) => compareFn(x, y)) === -1));\n return computed(() => symmetric ? [...toValue$1(diff1), ...toValue$1(diff2)] : toValue$1(diff1));\n } else {\n return diff1;\n }\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue$1(list).every((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue$1(\n toValue$1(list).find((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue$1(list).findIndex((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue$1(\n !Array.prototype.findLast ? findLast(toValue$1(list), (element, index, array) => fn(toValue$1(element), index, array)) : toValue$1(list).findLast((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue$1(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue$1(value2);\n return computed(() => toValue$1(list).slice(formIndex).some((element, index, array) => comparator(\n toValue$1(element),\n toValue$1(value),\n index,\n toValue$1(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).join(toValue$1(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue$1(sum), toValue$1(value), index);\n return computed(() => {\n const resolved = toValue$1(list);\n return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue$1(args[0]()) : toValue$1(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue$1(list).some((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue$1(list).map((element) => toValue$1(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = shallowRef(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const stripTimeZone = (dateString) => {\n var _a2;\n return (_a2 = dateString.split(\" \")[1]) != null ? _a2 : \"\";\n };\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true),\n z: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"longOffset\" }))\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue$1(date)), toValue$1(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = shallowRef(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue$1(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n if (isActive.value)\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = shallowRef(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = shallowRef((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const isPending = shallowRef(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n if (immediateCallback)\n cb();\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue$1(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue$1(value);\n if (typeof method === \"function\")\n resolved = method(resolved);\n else if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue$1(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = shallowRef(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue$1(truthyValue);\n _value.value = _value.value === truthy ? toValue$1(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue$1(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = shallowRef(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue$1(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = shallowRef(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = shallowRef(0);\n const syncCounter = shallowRef(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue$1(item));\n return toValue$1(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n const stop = watch(\n source,\n (v, ov, onInvalidate) => {\n if (v) {\n if (options == null ? void 0 : options.once)\n nextTick(() => stop());\n cb(v, ov, onInvalidate);\n }\n },\n {\n ...options,\n once: false\n }\n );\n return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, isClient, toArray, watchImmediate, isObject, tryOnScopeDispose, isIOS, notNullish, tryOnMounted, objectOmit, promiseTimeout, until, injectLocal, provideLocal, pxValue, increaseWithUnit, objectEntries, createRef, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, useIntervalFn, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, bypassFilter, createFilterWrapper, toRefs, watchOnce, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, shallowRef, ref, watchEffect, computed, inject, defineComponent, h, TransitionGroup, shallowReactive, Fragment, toValue, unref, getCurrentInstance, onMounted, watch, customRef, onUpdated, readonly, reactive, hasInjectionContext, toRaw, nextTick, markRaw, getCurrentScope, isReadonly, onBeforeUpdate } from 'vue';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = shallowRef(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /*@__PURE__*/ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /*@__PURE__*/ defineComponent({\n inheritAttrs,\n props: options.props,\n setup(props, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, {\n ...options.props == null ? keysToCamelKebabCase(attrs) : props,\n $slots: slots\n });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /*@__PURE__*/ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options) => {\n el.addEventListener(event, listener, options);\n return () => el.removeEventListener(event, listener, options);\n };\n const firstParamTargets = computed(() => {\n const test = toArray(toValue(args[0])).filter((e) => e != null);\n return test.every((e) => typeof e !== \"string\") ? test : void 0;\n });\n const stopWatch = watchImmediate(\n () => {\n var _a, _b;\n return [\n (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),\n toArray(toValue(firstParamTargets.value ? args[1] : args[0])),\n toArray(unref(firstParamTargets.value ? args[2] : args[1])),\n // @ts-expect-error - TypeScript gets the correct types, but somehow still complains\n toValue(firstParamTargets.value ? args[3] : args[2])\n ];\n },\n ([raw_targets, raw_events, raw_listeners, raw_options]) => {\n cleanup();\n if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length))\n return;\n const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;\n cleanups.push(\n ...raw_targets.flatMap(\n (el) => raw_events.flatMap(\n (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))\n )\n )\n );\n },\n { flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(cleanup);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options;\n if (!window) {\n return controls ? { stop: noop, cancel: noop, trigger: noop } : noop;\n }\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n const listenerOptions = { passive: true };\n Array.from(window.document.body.children).forEach((el) => useEventListener(el, \"click\", noop, listenerOptions));\n useEventListener(window.document.documentElement, \"click\", noop, listenerOptions);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n function hasMultipleRoots(target2) {\n const vm = toValue(target2);\n return vm && vm.$.subTree.shapeFlag === 16;\n }\n function checkMultipleRoots(target2, event) {\n const vm = toValue(target2);\n const children = vm.$.subTree && vm.$.subTree.children;\n if (children == null || !Array.isArray(children))\n return false;\n return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n }\n const listener = (event) => {\n const el = unrefElement(target);\n if (event.target == null)\n return;\n if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n return;\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (\"detail\" in event && event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n }, { passive: true })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n if (controls) {\n return {\n stop,\n cancel: () => {\n shouldListen = false;\n },\n trigger: (event) => {\n shouldListen = true;\n listener(event);\n shouldListen = false;\n }\n };\n }\n return stop;\n}\n\nfunction useMounted() {\n const isMounted = shallowRef(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = toArray(value).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction onElementRemoval(target, callback, options = {}) {\n const {\n window = defaultWindow,\n document = window == null ? void 0 : window.document,\n flush = \"sync\"\n } = options;\n if (!window || !document)\n return noop;\n let stopFn;\n const cleanupAndUpdate = (fn) => {\n stopFn == null ? void 0 : stopFn();\n stopFn = fn;\n };\n const stopWatch = watchEffect(() => {\n const el = unrefElement(target);\n if (el) {\n const { stop } = useMutationObserver(\n document,\n (mutationsList) => {\n const targetRemoved = mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el));\n if (targetRemoved) {\n callback(mutationsList);\n }\n },\n {\n window,\n childList: true,\n subtree: true\n }\n );\n cleanupAndUpdate(stop);\n }\n }, { flush });\n const stopHandle = () => {\n stopWatch();\n cleanupAndUpdate();\n };\n tryOnScopeDispose(stopHandle);\n return stopHandle;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n callback(event);\n }\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true,\n triggerOnRemoval = false\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = shallowRef();\n const trigger = () => {\n activeElement.value = getDeepActiveElement();\n };\n if (window) {\n const listenerOptions = {\n capture: true,\n passive: true\n };\n useEventListener(\n window,\n \"blur\",\n (event) => {\n if (event.relatedTarget !== null)\n return;\n trigger();\n },\n listenerOptions\n );\n useEventListener(\n window,\n \"focus\",\n trigger,\n listenerOptions\n );\n }\n if (triggerOnRemoval) {\n onElementRemoval(activeElement, trigger, { document });\n }\n trigger();\n return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow,\n once = false\n } = options;\n const isActive = shallowRef(false);\n const intervalLimit = computed(() => {\n return fpsLimit ? 1e3 / toValue(fpsLimit) : null;\n });\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n if (!previousFrameTimestamp)\n previousFrameTimestamp = timestamp;\n const delta = timestamp - previousFrameTimestamp;\n if (intervalLimit.value && delta < intervalLimit.value) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n previousFrameTimestamp = timestamp;\n fn({ delta, timestamp });\n if (once) {\n isActive.value = false;\n rafId = null;\n return;\n }\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n previousFrameTimestamp = 0;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n if (!animate.value)\n update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n if (el) {\n update();\n } else {\n animate.value = void 0;\n }\n });\n watch(() => keyframes, (value) => {\n if (animate.value) {\n update();\n const targetEl = unrefElement(target);\n if (targetEl) {\n animate.value.effect = new KeyframeEffect(\n targetEl,\n toValue(value),\n animateOptions\n );\n }\n }\n }, { deep: true });\n tryOnMounted(() => update(true), false);\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n if (!animate.value)\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n const listenerOptions = { passive: true };\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause, listenerOptions);\n useEventListener(animate, \"finish\", () => {\n var _a;\n if (commitStyles)\n (_a = animate.value) == null ? void 0 : _a.commitStyles();\n }, listenerOptions);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = shallowRef(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n if (activeIndex.value === tasks.length - 1)\n onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = shallowRef(false);\n const isLoading = shallowRef(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate) {\n execute(delay);\n }\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = shallowRef(\"\");\n const promise = shallowRef();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => {\n base64.value = (options == null ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, \"\") : res;\n });\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n const charging = shallowRef(false);\n const chargingTime = shallowRef(0);\n const dischargingTime = shallowRef(0);\n const level = shallowRef(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef();\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = shallowRef();\n const isConnected = shallowRef(false);\n function reset() {\n isConnected.value = false;\n device.value = void 0;\n server.value = void 0;\n }\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n useEventListener(device, \"gattserverdisconnected\", reset, { passive: true });\n try {\n server.value = await device.value.gatt.connect();\n isConnected.value = server.value.connected;\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected: readonly(isConnected),\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nconst ssrWidthSymbol = Symbol(\"vueuse-ssr-width\");\nfunction useSSRWidth() {\n const ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null;\n return typeof ssrWidth === \"number\" ? ssrWidth : void 0;\n}\nfunction provideSSRWidth(width, app) {\n if (app !== void 0) {\n app.provide(ssrWidthSymbol, width);\n } else {\n provideLocal(ssrWidthSymbol, width);\n }\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow, ssrWidth = useSSRWidth() } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n const ssrSupport = shallowRef(typeof ssrWidth === \"number\");\n const mediaQuery = shallowRef();\n const matches = shallowRef(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n watchEffect(() => {\n if (ssrSupport.value) {\n ssrSupport.value = !isSupported.value;\n const queryStrings = toValue(query).split(\",\");\n matches.value = queryStrings.some((queryString) => {\n const not = queryString.includes(\"not all\");\n const minWidth = queryString.match(/\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n const maxWidth = queryString.match(/\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n let res = Boolean(minWidth || maxWidth);\n if (minWidth && res) {\n res = ssrWidth >= pxValue(minWidth[1]);\n }\n if (maxWidth && res) {\n res = ssrWidth <= pxValue(maxWidth[1]);\n }\n return not ? !res : res;\n });\n return;\n }\n if (!isSupported.value)\n return;\n mediaQuery.value = window.matchMedia(toValue(query));\n matches.value = mediaQuery.value.matches;\n });\n useEventListener(mediaQuery, \"change\", handler, { passive: true });\n return computed(() => matches.value);\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1264,\n xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 0,\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\nconst breakpointsElement = {\n xs: 0,\n sm: 768,\n md: 992,\n lg: 1200,\n xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[toValue(k)]);\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow, strategy = \"min-width\", ssrWidth = useSSRWidth() } = options;\n const ssrSupport = typeof ssrWidth === \"number\";\n const mounted = ssrSupport ? shallowRef(false) : { value: true };\n if (ssrSupport) {\n tryOnMounted(() => mounted.value = !!window);\n }\n function match(query, size) {\n if (!mounted.value && ssrSupport) {\n return query === \"min\" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);\n }\n if (!window)\n return false;\n return window.matchMedia(`(${query}-width: ${size})`).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const smallerOrEqual = (k) => {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n function current() {\n const points = Object.keys(breakpoints).map((k) => [k, shortcutMethods[k], pxValue(getValue(k))]).sort((a, b) => a[2] - b[2]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n return Object.assign(shortcutMethods, {\n greaterOrEqual,\n smallerOrEqual,\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n },\n between(a, b) {\n return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(\"min\", getValue(k, 0.1));\n },\n isGreaterOrEqual(k) {\n return match(\"min\", getValue(k));\n },\n isSmaller(k) {\n return match(\"max\", getValue(k, -0.1));\n },\n isSmallerOrEqual(k) {\n return match(\"max\", getValue(k));\n },\n isInBetween(a, b) {\n return match(\"min\", getValue(a)) && match(\"max\", getValue(b, -0.1));\n },\n current,\n active() {\n const bps = current();\n return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(strategy === \"min-width\" ? -1 : 0));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = shallowRef(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n const listenerOptions = {\n passive: true\n };\n useEventListener(channel, \"message\", (e) => {\n data.value = e.data;\n }, listenerOptions);\n useEventListener(channel, \"messageerror\", (e) => {\n error.value = e;\n }, listenerOptions);\n useEventListener(channel, \"close\", () => {\n isClosed.value = true;\n }, listenerOptions);\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref] of objectEntries(refs)) {\n watch(ref, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), listenerOptions);\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), listenerOptions);\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, options) {\n const { deepRefs = true, ...watchOptions } = options || {};\n const cachedValue = createRef(refValue.value, deepRefs);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n const permissionStatus = shallowRef();\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = shallowRef();\n const update = () => {\n var _a, _b;\n state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n };\n useEventListener(permissionStatus, \"change\", update, { passive: true });\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus.value) {\n try {\n permissionStatus.value = await navigator.permissions.query(desc);\n } catch (e) {\n permissionStatus.value = void 0;\n } finally {\n update();\n }\n }\n if (controls)\n return toRaw(permissionStatus.value);\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = shallowRef(\"\");\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n async function updateText() {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));\n if (!useLegacy) {\n try {\n text.value = await navigator.clipboard.readText();\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy) {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));\n if (!useLegacy) {\n try {\n await navigator.clipboard.writeText(value);\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy)\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n function isAllowed(status) {\n return status === \"granted\" || status === \"prompt\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const isModified = shallowRef(false);\n let _lastSync = false;\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n watch(cloned, () => {\n if (_lastSync) {\n _lastSync = false;\n return;\n }\n isModified.value = true;\n }, {\n deep: true,\n flush: \"sync\"\n });\n function sync() {\n _lastSync = true;\n isModified.value = false;\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, isModified, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n const keyComputed = computed(() => toValue(key));\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n watch(keyComputed, () => update(), { flush });\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update, { passive: true });\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key: keyComputed.value,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(keyComputed.value);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(keyComputed.value);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(keyComputed.value, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(keyComputed.value);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(keyComputed.value, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== keyComputed.value)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n return Object.assign(auto, { store, system, state });\n}\n\nfunction useConfirmDialog(revealed = shallowRef(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useCountdown(initialCountdown, options) {\n var _a, _b;\n const remaining = shallowRef(toValue(initialCountdown));\n const intervalController = useIntervalFn(() => {\n var _a2, _b2;\n const value = remaining.value - 1;\n remaining.value = value < 0 ? 0 : value;\n (_a2 = options == null ? void 0 : options.onTick) == null ? void 0 : _a2.call(options);\n if (remaining.value <= 0) {\n intervalController.pause();\n (_b2 = options == null ? void 0 : options.onComplete) == null ? void 0 : _b2.call(options);\n }\n }, (_a = options == null ? void 0 : options.interval) != null ? _a : 1e3, { immediate: (_b = options == null ? void 0 : options.immediate) != null ? _b : false });\n const reset = (countdown) => {\n var _a2;\n remaining.value = (_a2 = toValue(countdown)) != null ? _a2 : toValue(initialCountdown);\n };\n const stop = () => {\n intervalController.pause();\n reset();\n };\n const resume = () => {\n if (!intervalController.isActive.value) {\n if (remaining.value > 0) {\n intervalController.resume();\n }\n }\n };\n const start = (countdown) => {\n reset(countdown);\n intervalController.resume();\n };\n return {\n remaining,\n reset,\n stop,\n start,\n pause: intervalController.pause,\n resume,\n isActive: intervalController.isActive\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = shallowRef(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || variable.value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n [variable, elRef],\n ([val, el]) => {\n const raw_prop = toValue(prop);\n if ((el == null ? void 0 : el.style) && raw_prop) {\n if (val == null)\n el.style.removeProperty(raw_prop);\n else\n el.style.setProperty(raw_prop, val);\n }\n },\n { immediate: true }\n );\n return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev,\n go: set\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const system = computed(() => mode.system.value);\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions = false,\n eventFilter = bypassFilter\n } = options;\n const isSupported = useSupported(() => typeof DeviceMotionEvent !== \"undefined\");\n const requirePermissions = useSupported(() => isSupported.value && \"requestPermission\" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === \"function\");\n const permissionGranted = shallowRef(false);\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = shallowRef(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n function init() {\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n acceleration.value = {\n x: ((_a = event.acceleration) == null ? void 0 : _a.x) || null,\n y: ((_b = event.acceleration) == null ? void 0 : _b.y) || null,\n z: ((_c = event.acceleration) == null ? void 0 : _c.z) || null\n };\n accelerationIncludingGravity.value = {\n x: ((_d = event.accelerationIncludingGravity) == null ? void 0 : _d.x) || null,\n y: ((_e = event.accelerationIncludingGravity) == null ? void 0 : _e.y) || null,\n z: ((_f = event.accelerationIncludingGravity) == null ? void 0 : _f.z) || null\n };\n rotationRate.value = {\n alpha: ((_g = event.rotationRate) == null ? void 0 : _g.alpha) || null,\n beta: ((_h = event.rotationRate) == null ? void 0 : _h.beta) || null,\n gamma: ((_i = event.rotationRate) == null ? void 0 : _i.gamma) || null\n };\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion, { passive: true });\n }\n }\n const ensurePermissions = async () => {\n if (!requirePermissions.value)\n permissionGranted.value = true;\n if (permissionGranted.value)\n return;\n if (requirePermissions.value) {\n const requestPermission = DeviceMotionEvent.requestPermission;\n try {\n const response = await requestPermission();\n if (response === \"granted\") {\n permissionGranted.value = true;\n init();\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n if (isSupported.value) {\n if (requestPermissions && requirePermissions.value) {\n ensurePermissions().then(() => init());\n } else {\n init();\n }\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval,\n isSupported,\n requirePermissions,\n ensurePermissions,\n permissionGranted\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = shallowRef(false);\n const alpha = shallowRef(null);\n const beta = shallowRef(null);\n const gamma = shallowRef(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n }, { passive: true });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = shallowRef(1);\n const query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options);\n let stop = noop;\n if (window) {\n stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio);\n }\n return {\n pixelRatio: readonly(pixelRatio),\n stop\n };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = shallowRef(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n const deviceName = constraints.video ? \"camera\" : \"microphone\";\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(deviceName, { controls: true });\n await query();\n if (state.value !== \"granted\") {\n let granted = true;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (e) {\n stream = null;\n granted = false;\n }\n update();\n permissionGranted.value = granted;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update, { passive: true });\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n var _a2;\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => useEventListener(t, \"ended\", stop, { passive: true }));\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return shallowRef(\"visible\");\n const visibility = shallowRef(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n }, { passive: true });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target,\n buttons = [0]\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!toValue(buttons).includes(e.button))\n return;\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = () => {\n var _a2;\n return {\n capture: (_a2 = options.capture) != null ? _a2 : true,\n passive: !toValue(preventDefault)\n };\n };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n var _a, _b;\n const isOverDropZone = shallowRef(false);\n const files = shallowRef(null);\n let counter = 0;\n let isValid = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const multiple = (_a = _options.multiple) != null ? _a : true;\n const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n const getFiles = (event) => {\n var _a2, _b2;\n const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n return list.length === 0 ? null : multiple ? list : [list[0]];\n };\n const checkDataTypes = (types) => {\n const dataTypes = unref(_options.dataTypes);\n if (typeof dataTypes === \"function\")\n return dataTypes(types);\n if (!(dataTypes == null ? void 0 : dataTypes.length))\n return true;\n if (types.length === 0)\n return false;\n return types.every(\n (type) => dataTypes.some((allowedType) => type.includes(allowedType))\n );\n };\n const checkValidity = (items) => {\n const types = Array.from(items != null ? items : []).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = multiple || items.length <= 1;\n return dataTypesValid && multipleFilesValid;\n };\n const isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !(\"chrome\" in window);\n const handleDragEvent = (event, eventType) => {\n var _a2, _b2, _c, _d, _e, _f;\n const dataTransferItemList = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items;\n isValid = (_b2 = dataTransferItemList && checkValidity(dataTransferItemList)) != null ? _b2 : false;\n if (preventDefaultForUnhandled) {\n event.preventDefault();\n }\n if (!isSafari() && !isValid) {\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n const currentFiles = getFiles(event);\n switch (eventType) {\n case \"enter\":\n counter += 1;\n isOverDropZone.value = true;\n (_c = _options.onEnter) == null ? void 0 : _c.call(_options, null, event);\n break;\n case \"over\":\n (_d = _options.onOver) == null ? void 0 : _d.call(_options, null, event);\n break;\n case \"leave\":\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_e = _options.onLeave) == null ? void 0 : _e.call(_options, null, event);\n break;\n case \"drop\":\n counter = 0;\n isOverDropZone.value = false;\n if (isValid) {\n files.value = currentFiles;\n (_f = _options.onDrop) == null ? void 0 : _f.call(_options, currentFiles, event);\n }\n break;\n }\n };\n useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true,\n updateTiming = \"sync\"\n } = options;\n const height = shallowRef(0);\n const bottom = shallowRef(0);\n const left = shallowRef(0);\n const right = shallowRef(0);\n const top = shallowRef(0);\n const width = shallowRef(0);\n const x = shallowRef(0);\n const y = shallowRef(0);\n function recalculate() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n function update() {\n if (updateTiming === \"sync\")\n recalculate();\n else if (updateTiming === \"next-frame\")\n requestAnimationFrame(() => recalculate());\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n useMutationObserver(target, update, {\n attributeFilter: [\"style\", \"class\"]\n });\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = shallowRef(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n triggerOnRemoval = false,\n window = defaultWindow\n } = options;\n const isHovered = shallowRef(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n if (triggerOnRemoval) {\n onElementRemoval(\n computed(() => unrefElement(el)),\n () => toggle(false)\n );\n }\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = shallowRef(initialSize.width);\n const height = shallowRef(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = toArray(boxSize);\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return toArray(_target).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = shallowRef(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const {\n window = defaultWindow,\n scrollTarget,\n threshold = 0,\n rootMargin,\n once = false\n } = options;\n const elementIsVisible = shallowRef(false);\n const { stop } = useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n if (once) {\n watchOnce(elementIsVisible, () => {\n stop();\n });\n }\n },\n {\n root: scrollTarget,\n window,\n threshold,\n rootMargin: toValue(rootMargin)\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n const event = shallowRef(null);\n const data = shallowRef(null);\n const status = shallowRef(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const urlRef = toRef(url);\n const lastEventId = shallowRef(null);\n let explicitlyClosed = false;\n let retried = 0;\n const {\n withCredentials = false,\n immediate = true,\n autoConnect = true,\n autoReconnect\n } = options;\n const close = () => {\n if (isClient && eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n explicitlyClosed = true;\n }\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const es = new EventSource(urlRef.value, { withCredentials });\n status.value = \"CONNECTING\";\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n if (es.readyState === 2 && !explicitlyClosed && autoReconnect) {\n es.close();\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions$1(autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n lastEventId.value = e.lastEventId;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n }, { passive: true });\n }\n };\n const open = () => {\n if (!isClient)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n tryOnScopeDispose(close);\n return {\n eventSource,\n event,\n data,\n status,\n error,\n open,\n close,\n lastEventId\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = shallowRef(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n return reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries(headers.entries());\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n let callback;\n for (let i = callbacks.length - 1; i >= 0; i--) {\n if (callbacks[i] != null) {\n callback = callbacks[i];\n break;\n }\n }\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = shallowRef(false);\n const isFetching = shallowRef(false);\n const aborted = shallowRef(false);\n const statusCode = shallowRef(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2, _b;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n const payload = toValue(config.payload);\n if (payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const proto = Object.getPrototypeOf(payload);\n if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse.clone()[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse,\n context,\n execute\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return fetchResponse;\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value,\n context,\n execute\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n throw fetchError;\n return null;\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished: readonly(isFinished),\n isFetching: readonly(isFetching),\n statusCode,\n response,\n error,\n data,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch(reject);\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\")) {\n return `${start}/${end}`;\n }\n if (start.endsWith(\"/\") && end.startsWith(\"/\")) {\n return `${start.slice(0, -1)}${end}`;\n }\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction prepareInitialFiles(files) {\n if (!files)\n return null;\n if (files instanceof FileList)\n return files;\n const dt = new DataTransfer();\n for (const file of files) {\n dt.items.add(file);\n }\n return dt.files;\n}\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(prepareInitialFiles(options.initialFiles));\n const { on: onChange, trigger: changeTrigger } = createEventHook();\n const { on: onCancel, trigger: cancelTrigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n changeTrigger(files.value);\n };\n input.oncancel = () => {\n cancelTrigger();\n };\n }\n const reset = () => {\n files.value = null;\n if (input && input.value) {\n input.value = \"\";\n changeTrigger(null);\n }\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onCancel,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = shallowRef();\n const data = shallowRef();\n const file = shallowRef();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n await updateFile();\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false, preventScroll = false } = options;\n const innerFocused = shallowRef(false);\n const targetElement = computed(() => unrefElement(target));\n const listenerOptions = { passive: true };\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n }, listenerOptions);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false, listenerOptions);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll });\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nconst PSEUDO_CLASS_FOCUS_WITHIN = \":focus-within\";\nfunction useFocusWithin(target, options = {}) {\n const { window = defaultWindow } = options;\n const targetElement = computed(() => unrefElement(target));\n const _focused = shallowRef(false);\n const focused = computed(() => _focused.value);\n const activeElement = useActiveElement(options);\n if (!window || !activeElement.value) {\n return { focused };\n }\n const listenerOptions = { passive: true };\n useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions);\n useEventListener(targetElement, EVENT_FOCUS_OUT, () => {\n var _a, _b, _c;\n return _focused.value = (_c = (_b = (_a = targetElement.value) == null ? void 0 : _a.matches) == null ? void 0 : _b.call(_a, PSEUDO_CLASS_FOCUS_WITHIN)) != null ? _c : false;\n }, listenerOptions);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = shallowRef(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.documentElement;\n });\n const isFullscreen = shallowRef(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n const listenerOptions = { capture: false, passive: true };\n useEventListener(document, eventHandlers, handlerCallback, listenerOptions);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n id: gamepad.id,\n index: gamepad.index,\n connected: gamepad.connected,\n mapping: gamepad.mapping,\n timestamp: gamepad.timestamp,\n vibrationActuator: gamepad.vibrationActuator,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n const listenerOptions = { passive: true };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad), listenerOptions);\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad), listenerOptions);\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n onGamepadConnected(gamepad);\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = shallowRef(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = shallowRef(initialState);\n const lastActive = shallowRef(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n const listenerOptions = { passive: true };\n for (const event of events)\n useEventListener(window, event, onEvent, listenerOptions);\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n }, listenerOptions);\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options;\n img.src = src;\n if (srcset != null)\n img.srcset = srcset;\n if (sizes != null)\n img.sizes = sizes;\n if (clazz != null)\n img.className = clazz;\n if (loading != null)\n img.loading = loading;\n if (crossorigin != null)\n img.crossOrigin = crossorigin;\n if (referrerPolicy != null)\n img.referrerPolicy = referrerPolicy;\n if (width != null)\n img.width = width;\n if (height != null)\n img.height = height;\n if (decoding != null)\n img.decoding = decoding;\n if (fetchPriority != null)\n img.fetchPriority = fetchPriority;\n if (ismap != null)\n img.isMap = ismap;\n if (usemap != null)\n img.useMap = usemap;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = shallowRef(0);\n const internalY = shallowRef(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = shallowRef(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection, direction } = getComputedStyle(el);\n const directionMultipler = direction === \"rtl\" ? -1 : 1;\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0);\n const right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = shallowRef(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n }, { passive: true });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive });\n useEventListener(\"focus\", reset, { passive });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.map((key) => toValue(proxy[key])).every(Boolean));\n } else {\n refs[prop] = shallowRef(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n target = toRef(target);\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const listenerOptions = { passive: true };\n const currentTime = shallowRef(0);\n const duration = shallowRef(0);\n const seeking = shallowRef(false);\n const volume = shallowRef(1);\n const waiting = shallowRef(false);\n const ended = shallowRef(false);\n const playing = shallowRef(false);\n const rate = shallowRef(1);\n const stalled = shallowRef(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = shallowRef(-1);\n const isPictureInPicture = shallowRef(false);\n const muted = shallowRef(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const playbackErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.remove();\n });\n sources.forEach(({ src: src2, type, media }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.setAttribute(\"media\", media || \"\");\n useEventListener(source, \"error\", sourceErrorEvent.trigger, listenerOptions);\n el.appendChild(source);\n });\n el.load();\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n if (isPlaying) {\n el.play().catch((e) => {\n playbackErrorEvent.trigger(e);\n throw e;\n });\n } else {\n el.pause();\n }\n });\n useEventListener(\n target,\n \"timeupdate\",\n () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime),\n listenerOptions\n );\n useEventListener(\n target,\n \"durationchange\",\n () => duration.value = toValue(target).duration,\n listenerOptions\n );\n useEventListener(\n target,\n \"progress\",\n () => buffered.value = timeRangeToArray(toValue(target).buffered),\n listenerOptions\n );\n useEventListener(\n target,\n \"seeking\",\n () => seeking.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"seeked\",\n () => seeking.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n [\"waiting\", \"loadstart\"],\n () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"loadeddata\",\n () => waiting.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"playing\",\n () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"ratechange\",\n () => rate.value = toValue(target).playbackRate,\n listenerOptions\n );\n useEventListener(\n target,\n \"stalled\",\n () => stalled.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"ended\",\n () => ended.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"pause\",\n () => ignorePlayingUpdates(() => playing.value = false),\n listenerOptions\n );\n useEventListener(\n target,\n \"play\",\n () => ignorePlayingUpdates(() => playing.value = true),\n listenerOptions\n );\n useEventListener(\n target,\n \"enterpictureinpicture\",\n () => isPictureInPicture.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"leavepictureinpicture\",\n () => isPictureInPicture.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"volumechange\",\n () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n },\n listenerOptions\n );\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on,\n onPlaybackError: playbackErrorEvent.on\n };\n}\n\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\n return shallowReactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n let _prevScrollX = 0;\n let _prevScrollY = 0;\n const x = shallowRef(initialValue.x);\n const y = shallowRef(initialValue.y);\n const sourceType = shallowRef(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n if (window) {\n _prevScrollX = window.scrollX;\n _prevScrollY = window.scrollY;\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX - _prevScrollX;\n y.value = pos[1] + window.scrollY - _prevScrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, listenerOptions);\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = shallowRef(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = shallowRef(0);\n const elementY = shallowRef(0);\n const elementPositionX = shallowRef(0);\n const elementPositionY = shallowRef(0);\n const elementHeight = shallowRef(0);\n const elementWidth = shallowRef(0);\n const isOutside = shallowRef(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el || !(el instanceof Element))\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(\n document,\n \"mouseleave\",\n () => isOutside.value = true,\n { passive: true }\n );\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = shallowRef(initialValue);\n const sourceType = shallowRef(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => (event) => {\n var _a;\n pressed.value = true;\n sourceType.value = srcType;\n (_a = options.onPressed) == null ? void 0 : _a.call(options, event);\n };\n const onReleased = (event) => {\n var _a;\n pressed.value = false;\n sourceType.value = null;\n (_a = options.onReleased) == null ? void 0 : _a.call(options, event);\n };\n const target = computed(() => unrefElement(options.target) || window);\n const listenerOptions = { passive: true, capture };\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"mouseleave\", onReleased, listenerOptions);\n useEventListener(window, \"mouseup\", onReleased, listenerOptions);\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"drop\", onReleased, listenerOptions);\n useEventListener(window, \"dragend\", onReleased, listenerOptions);\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), listenerOptions);\n useEventListener(window, \"touchend\", onReleased, listenerOptions);\n useEventListener(window, \"touchcancel\", onReleased, listenerOptions);\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = shallowRef(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n }, { passive: true });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = shallowRef(true);\n const saveData = shallowRef(false);\n const offlineAt = shallowRef(void 0);\n const onlineAt = shallowRef(void 0);\n const downlink = shallowRef(void 0);\n const downlinkMax = shallowRef(void 0);\n const rtt = shallowRef(void 0);\n const effectiveType = shallowRef(void 0);\n const type = shallowRef(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n const listenerOptions = { passive: true };\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n }, listenerOptions);\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n }, listenerOptions);\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, listenerOptions);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline: readonly(isOnline),\n saveData: readonly(saveData),\n offlineAt: readonly(offlineAt),\n onlineAt: readonly(onlineAt),\n downlink: readonly(downlink),\n downlinkMax: readonly(downlinkMax),\n effectiveType: readonly(effectiveType),\n rtt: readonly(rtt),\n type: readonly(type)\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = shallowRef();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page)) {\n syncRef(page, currentPage, {\n direction: isReadonly(page) ? \"ltr\" : \"both\"\n });\n }\n if (isRef(pageSize)) {\n syncRef(pageSize, currentPageSize, {\n direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n });\n }\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = shallowRef(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"mouseout\", handler, listenerOptions);\n useEventListener(window.document, \"mouseleave\", handler, listenerOptions);\n useEventListener(window.document, \"mouseenter\", handler, listenerOptions);\n }\n return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = shallowRef(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n }, { passive: true });\n }\n const lockOrientation = (type) => {\n if (isSupported.value && typeof screenOrientation.lock === \"function\")\n return screenOrientation.lock(type);\n return Promise.reject(new Error(\"Not supported\"));\n };\n const unlockOrientation = () => {\n if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const screenOrientation = reactive(useScreenOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) {\n return \"deviceOrientation\";\n }\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.gamma / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.gamma / 90;\n break;\n case \"portrait-primary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-secondary\":\n value = orientation.beta / 90;\n break;\n default:\n value = -orientation.beta / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.beta / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-primary\":\n value = orientation.gamma / 90;\n break;\n case \"portrait-secondary\":\n value = -orientation.gamma / 90;\n break;\n default:\n value = orientation.gamma / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = shallowRef(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = shallowRef();\n const triggerElement = shallowRef();\n let targetElement;\n if (isSupported.value) {\n const listenerOptions = { passive: true };\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n }, listenerOptions);\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n }, listenerOptions);\n }\n async function lock(e) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock();\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n disableTextSelect = false\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const isPointerDown = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const listenerOptions = { passive: true };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, \"pointerup\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n }, listenerOptions)\n ];\n tryOnMounted(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n if (disableTextSelect) {\n (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n }\n });\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n }, { passive: true });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredReducedTransparency(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-transparency: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = shallowRef(\"\");\n const right = shallowRef(\"\");\n const bottom = shallowRef(\"\");\n const left = shallowRef(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update), { passive: true });\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = shallowRef(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n const listenerOptions = {\n passive: true\n };\n useEventListener(el, \"error\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"abort\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n }, listenerOptions);\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = shallowRef(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n maxAlternatives = 1,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = shallowRef(false);\n const isFinal = shallowRef(false);\n const result = shallowRef(\"\");\n const error = shallowRef(void 0);\n let recognition;\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const toggle = (value = !isListening.value) => {\n if (value) {\n start();\n } else {\n stop();\n }\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.maxAlternatives = maxAlternatives;\n recognition.onstart = () => {\n isListening.value = true;\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n isFinal.value = currentResult.isFinal;\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, (newValue, oldValue) => {\n if (newValue === oldValue)\n return;\n if (newValue)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = shallowRef(false);\n const status = shallowRef(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n if (utterance)\n synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(toValue(initialValue));\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)), { passive: true });\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = shallowRef(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = shallowRef(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n const listenerOptions = { passive, capture: !passive };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value))\n e.preventDefault();\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop,\n // TODO: Remove in the next major version\n isPassiveEventSupported: true\n };\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange, { passive: true });\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction tryRequestAnimationFrame(window = defaultWindow, fn) {\n if (window && typeof window.requestAnimationFrame === \"function\") {\n window.requestAnimationFrame(fn);\n } else {\n fn();\n }\n}\nfunction useTextareaAutosize(options = {}) {\n var _a, _b;\n const { window = defaultWindow } = options;\n const textarea = toRef(options == null ? void 0 : options.element);\n const input = toRef((_a = options == null ? void 0 : options.input) != null ? _a : \"\");\n const styleProp = (_b = options == null ? void 0 : options.styleProp) != null ? _b : \"height\";\n const textareaScrollHeight = shallowRef(1);\n const textareaOldWidth = shallowRef(0);\n function triggerResize() {\n var _a2;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style[styleProp] = \"1px\";\n textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n if (_styleTarget)\n _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style[styleProp] = height;\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n watch(textareaScrollHeight, () => {\n var _a2;\n return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n });\n useResizeObserver(textarea, ([{ contentRect }]) => {\n if (textareaOldWidth.value === contentRect.width)\n return;\n tryRequestAnimationFrame(window, () => {\n textareaOldWidth.value = contentRect.width;\n triggerResize();\n });\n });\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const { start } = useTimeoutFn(loop, interval, { immediate });\n const isActive = shallowRef(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n if (immediateCallback)\n fn();\n start();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (immediate && isClient)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = shallowRef(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b, _c;\n const {\n document = defaultDocument,\n restoreOnUnmount = (t) => t\n } = options;\n const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n const isReadonly = !!(newTitle && typeof newTitle === \"function\");\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (newValue, oldValue) => {\n if (newValue !== oldValue && document)\n document.title = format(newValue != null ? newValue : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n tryOnScopeDispose(() => {\n if (restoreOnUnmount) {\n const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n if (restoredTitle != null && document)\n document.title = restoredTitle;\n }\n });\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n writeMode = \"replace\",\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${window.location.search || \"\"}${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params, false);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n if (writeMode === \"replace\") {\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n } else {\n window.history.pushState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n }\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", onChanged, listenerOptions);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, listenerOptions);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const autoSwitch = shallowRef((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n key = \"modelValue\";\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = shallowRef(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, containerRef, calculateRange) {\n watch([size.width, size.height, list, containerRef], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n const requestedType = shallowRef(false);\n const sentinel = shallowRef(null);\n const documentVisibility = useDocumentVisibility({ document });\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n if (isSupported.value) {\n useEventListener(sentinel, \"release\", () => {\n var _a, _b;\n requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n }, { passive: true });\n whenever(\n () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n (type) => {\n requestedType.value = false;\n forceRequest(type);\n }\n );\n }\n async function forceRequest(type) {\n var _a;\n await ((_a = sentinel.value) == null ? void 0 : _a.release());\n sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n }\n async function request(type) {\n if (documentVisibility.value === \"visible\")\n await forceRequest(type);\n else\n requestedType.value = type;\n }\n async function release() {\n requestedType.value = false;\n const s = sentinel.value;\n sentinel.value = null;\n await (s == null ? void 0 : s.release());\n }\n return {\n sentinel,\n isSupported,\n isActive,\n request,\n forceRequest,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => {\n if (!window || !(\"Notification\" in window))\n return false;\n if (Notification.permission === \"granted\")\n return true;\n try {\n const notification2 = new Notification(\"\");\n notification2.onshow = () => {\n notification2.close();\n };\n } catch (e) {\n if (e.name === \"TypeError\")\n return false;\n }\n return true;\n });\n const permissionGranted = shallowRef(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoConnect = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = shallowRef(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let retryTimeout;\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetRetry = () => {\n if (retryTimeout != null) {\n clearTimeout(retryTimeout);\n retryTimeout = void 0;\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n resetRetry();\n if (!isClient && !isWorker || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n wsRef.value = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n retried = 0;\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n const checkRetires = typeof retries === \"function\" ? retries : () => typeof retries === \"number\" && (retries < 0 || retried < retries);\n if (checkRetires(retried)) {\n retried += 1;\n retryTimeout = setTimeout(_init, delay);\n } else {\n onFailed == null ? void 0 : onFailed();\n }\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE,\n responseMessage = message\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === toValue(responseMessage))\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(toValue(message), false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close(), { passive: true });\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction depsParser(deps, localDeps) {\n if (deps.length === 0 && localDeps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n const str = fn.toString();\n if (str.trim().startsWith(\"function\")) {\n return str;\n } else {\n const name = fn.name;\n return `const ${name} = ${str}`;\n }\n }).join(\";\");\n const importString = `importScripts(${depsString});`;\n return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n localDependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = shallowRef(\"PENDING\");\n const promise = ref({});\n const timeoutId = shallowRef();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n var _a;\n promise.value = {\n resolve,\n reject\n };\n (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return shallowRef(false);\n const focused = shallowRef(window.document.hasFocus());\n const listenerOptions = { passive: true };\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n }, listenerOptions);\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n }, listenerOptions);\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, ...rest } = options;\n return useScroll(window, rest);\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true,\n type = \"inner\"\n } = options;\n const width = shallowRef(initialWidth);\n const height = shallowRef(initialHeight);\n const update = () => {\n if (window) {\n if (type === \"outer\") {\n width.value = window.outerWidth;\n height.value = window.outerHeight;\n } else if (type === \"visual\" && window.visualViewport) {\n const { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport;\n width.value = Math.round(visualViewportWidth * scale);\n height.value = Math.round(visualViewportHeight * scale);\n } else if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n const listenerOptions = { passive: true };\n useEventListener(\"resize\", update, listenerOptions);\n if (window && type === \"visual\" && window.visualViewport) {\n useEventListener(window.visualViewport, \"resize\", update, listenerOptions);\n }\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","\n \n \n \n \n \n \n {{ anotherLanguage?.name }}\n \n\n \n \n \n \n \n \n \n \n {{ currentLanguage?.name }}\n \n \n\n \n \n {{ lang.name }}\n \n \n \n\n\n\n\n\n","\n \n \n \n \n \n \n {{ title }}\n \n\n\n\n\n\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='Layer_1'%20data-name='Layer%201'%20viewBox='0%200%202846.44%20501.38'%3e%3cdefs%3e%3cstyle%3e.cls-1{fill:%233cb454}.cls-2{fill:%23fff}%3c/style%3e%3c/defs%3e%3ctitle%3eKolumbus_liggende_negativ%3c/title%3e%3cpolygon%20points='0%20361.13%200%20501.38%20320.01%20324.07%20320.01%20181.75%20320.01%20181.75%200%20361.13'%20class='cls-1'/%3e%3cpolygon%20points='0%20139.25%20157.23%20227.98%20157.23%20227.98%200%20139.23%200%20139.25'%20class='cls-1'/%3e%3cpolygon%20points='0%200%200%20139.23%20157.23%20227.98%20283.69%20157.19%200%200'%20class='cls-1'/%3e%3cpath%20d='M598.1,242.37l-38.66,42.08V432.3H492.33v-398h67.11V202L713,34.26h78.48L644.73,194.61,805.65,432.3H724.91Z'%20class='cls-2'/%3e%3cpath%20d='M1074.79,297.53c0,84.73-51.75,142.16-135.34,142.16-83,0-134.77-57.43-134.77-142.16s51.75-142.16,134.77-142.16C1023,155.37,1074.79,212.81,1074.79,297.53Zm-66,0c0-51.17-21.6-92.68-69.37-92.68-46.63,0-68.81,41.51-68.81,92.68s22.18,92.69,68.81,92.69C987.22,390.22,1008.82,348.71,1008.82,297.53Z'%20class='cls-2'/%3e%3cpath%20d='M1122,34.26h64.83v398H1122Z'%20class='cls-2'/%3e%3cpath%20d='M1485.7,432.3h-61.41V391.93c-16.49,27.86-42.08,47.76-83.6,47.76-51.17,0-93.82-30.13-93.82-90.41V162.77h64.26V333.36c0,38.66,23.88,53.45,48.9,53.45,31.28,0,61.41-27.87,61.41-81.31V162.77h64.26Z'%20class='cls-2'/%3e%3cpath%20d='M1553,162.77h62v40.94c15.35-27.86,40.94-48.34,80.18-48.34,37.52,0,67.66,17.64,81.88,48.34,15.35-23.88,46-48.34,86.43-48.34,48.9,0,89.85,30.15,89.85,90.42V432.3h-64.83V261.71c0-38.67-21.61-53.45-44.92-53.45-30.14,0-58,27.86-58,81.31V432.3H1720.7V261.71c0-38.67-22.17-53.45-45.49-53.45-29.57,0-57.43,27.86-57.43,81.31V432.3H1553Z'%20class='cls-2'/%3e%3cpath%20d='M2288.1,297.53c0,87.58-52.32,142.16-121.69,142.16-46.06,0-72.78-22.75-87.57-47.19v39.8h-62v-398h64.82V197.45c15.92-22.74,44.36-42.08,84.73-42.08C2235.78,155.37,2288.1,210,2288.1,297.53Zm-207,13.08c0,56.3,39.81,77.91,71.65,77.91,42.65,0,69.38-38.67,69.38-91,0-51.74-26.73-91-69.38-91-31.84,0-71.65,21.61-71.65,77.9Z'%20class='cls-2'/%3e%3cpath%20d='M2568.54,432.3h-61.42V391.93c-16.49,27.86-42.08,47.76-83.59,47.76-51.17,0-93.82-30.13-93.82-90.41V162.77H2394V333.36c0,38.66,23.89,53.45,48.91,53.45,31.27,0,61.41-27.87,61.41-81.31V162.77h64.26Z'%20class='cls-2'/%3e%3cpath%20d='M2740.1,270.24c56.29,8,106.34,25.59,106.34,82.45,0,54-46.06,87-116,87-66.53,0-112-28.42-118.28-81.31l62.56-9.1c2.84,30.14,23.88,43.22,56.29,43.22,30.14,0,50.61-11.38,50.61-35.26,0-21-14.79-29.57-59.71-36.39-61.41-9.1-102.35-29.57-102.35-81.89,0-56.86,52.88-83.59,110.88-83.59,59.14,0,104.63,27.87,112,73.93l-62.56,13.07c-3.41-25.59-20.47-40.36-50.6-40.36-25,0-44.92,11.36-44.92,32.41C2684.38,258.3,2707.12,265.12,2740.1,270.24Z'%20class='cls-2'/%3e%3c/svg%3e\"","\n \n \n \n \n \n {{ item.displayName }}\n \n \n \n \n \n\n\n\n\n\n","\n \n \n \n \n \n \n \n \n \n {{ item.displayName }}\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n","\n \n \n \n \n \n \n {{ title }}\n \n\n\n\n\n\n","\n \n \n \n\n \n \n \n \n {{ item.displayName }}\n \n \n \n \n \n {{ child.displayName }}\n \n \n \n \n \n \n \n \n \n {{ item.displayName }}\n \n \n \n \n \n \n\n \n\n \n \n \n\n\n\n\n\n","\n \n \n \n \n \n \n {{ profilePageInfo?.displayName }}\n \n \n \n \n \n \n \n\n\n\n\n","import SiteTopMenu from './SiteTopMenu.vue';\nimport SiteTopMenuDropdown from './SiteTopMenuDropdown.vue';\nimport SiteTopMobileMenu from './SiteTopMobileMenu.vue';\nimport SiteProfileMenuDropdown from './SiteProfileMenuDropdown.vue';\nimport { computed, ref, watch } from 'vue';\nimport { useDisplay } from 'vuetify';\n\nfunction useSiteTopMenu() {\n const { mdAndUp } = useDisplay();\n const isMobile = computed(() => !mdAndUp.value);\n\n const mobileMenu = ref(false);\n const desktopMenu = ref();\n\n watch(isMobile, () => resetMenu());\n\n function resetMenu() {\n mobileMenu.value = false;\n desktopMenu.value = undefined;\n }\n\n return {\n mobileMenu,\n desktopMenu,\n resetMenu\n };\n}\n\nexport { SiteTopMenu, SiteTopMenuDropdown, SiteTopMobileMenu, SiteProfileMenuDropdown, useSiteTopMenu };\n","\n true\"\n hide-details\n hide-no-data\n return-object\n density=\"compact\"\n variant=\"solo\"\n persistent-placeholder\n class=\"search-bar\"\n >\n \n \n \n \n \n \n\n\n\n\n\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n {{ t('$vuetify.menu.title') }}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n (expandSearch = false)\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ searchPage.displayName }}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n","import { computed } from 'vue';\nimport { useDisplay } from 'vuetify';\nimport SiteHeader from './SiteHeader.vue';\n\nfunction useSiteHeader() {\n const { mdAndUp, md: compactMenu } = useDisplay();\n const isMobile = computed(() => !mdAndUp.value);\n const height = computed(() => (isMobile.value ? 50 : 72));\n\n return {\n compactMenu,\n isMobile,\n height\n };\n}\n\nexport { SiteHeader, useSiteHeader };\n","\n \n \n {{ t }}\n \n \n\n\n\n\n\n","\n \n \n \n \n \n {{ title }}\n \n \n \n \n\n\n\n\n\n","\n \n \n \n \n \n \n \n \n\n\n\n\n\n","import { computed, nextTick, Ref, watch } from 'vue';\nimport { type VTextField } from 'vuetify/components';\nimport { useDisplay } from 'vuetify';\n\nexport interface BaseInputComponentProps {\n /**\n * Label for the input field\n */\n label?: string | undefined;\n\n /**\n * Placeholder for the input field\n */\n placeholder?: string | undefined;\n\n /**\n * Whether the input field is loading\n */\n loading?: boolean;\n\n /**\n * Primary color for input fields\n */\n color?: string;\n\n /**\n * Base color for inactive states\n */\n baseColor?: string;\n\n /**\n * Whether the component is disabled\n */\n disabled?: boolean;\n\n /**\n * Density of the component\n */\n density?: NonNullable['$props']['density']>;\n\n /**\n * Variant of the input field\n */\n variant?: NonNullable['$props']['variant']>;\n\n /**\n * Rounded of the input field\n * @default 'md'\n */\n rounded?: NonNullable['$props']['rounded']>;\n\n /**\n * Class for the input field\n */\n inputClass?: string;\n\n /**\n * Whether to hide the details of the input field\n */\n hideDetails?: boolean;\n}\n\nexport function useBaseInputComponent(props: BaseInputComponentProps) {\n const { platform } = useDisplay();\n const isMobileDevice = computed(() => platform.value.ios || platform.value.android);\n const isIOS = computed(() => platform.value.ios);\n\n const cssClasses = computed(() => ({\n 'input-component--disabled': props.disabled,\n [`input-component--variant-${props.variant}`]: props.variant,\n [`input-component--density-${props.density}`]: props.density\n }));\n\n function watchInputClass(input: Ref) {\n const fieldEl = computed(() => input.value?.querySelector('.v-field') as HTMLDivElement);\n\n const applyInputClass = (value: string) => fieldEl.value?.classList.add(value);\n const removeInputClass = (value: string) => fieldEl.value?.classList.remove(value);\n\n // apply inputClass to the input field, and remove the old value when the inputClass changes\n const watcher = watch(\n () => props.inputClass,\n (value, oldValue) =>\n nextTick(() => {\n if (oldValue) {\n removeInputClass(oldValue);\n }\n\n if (value) {\n applyInputClass(value);\n }\n })\n );\n\n // this ensures that inputClass is retained when changes are made to the VField class attribute\n const mutationCallback = (mutationsList: MutationRecord[]) => {\n for (const mutation of mutationsList) {\n if (mutation.type !== 'attributes' || mutation.attributeName !== 'class') {\n return;\n }\n\n const target = mutation.target as HTMLElement;\n if (props.inputClass && !target.classList.contains(props.inputClass)) {\n applyInputClass(props.inputClass);\n }\n }\n };\n const observer = new MutationObserver(mutationCallback);\n\n // start observing the fieldEl when it is mounted\n watch(fieldEl, value => {\n if (value) {\n observer.observe(value, { attributes: true });\n\n if (props.inputClass) {\n applyInputClass(props.inputClass);\n }\n } else {\n watcher?.();\n observer.disconnect();\n }\n });\n }\n\n return {\n isMobileDevice,\n isIOS,\n cssClasses,\n watchInputClass\n };\n}\n","var I = Object.defineProperty;\nvar S = (n, s, t) => s in n ? I(n, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[s] = t;\nvar b = (n, s, t) => S(n, typeof s != \"symbol\" ? s + \"\" : s, t);\nconst N = {\n \"#\": { pattern: /[0-9]/ },\n \"@\": { pattern: /[a-zA-Z]/ },\n \"*\": { pattern: /[a-zA-Z0-9]/ }\n}, R = (n, s, t) => n.replaceAll(s, \"\").replace(t, \".\").replace(\"..\", \".\").replace(/[^.\\d]/g, \"\"), C = (n, s, t) => {\n var e;\n return new Intl.NumberFormat(((e = t.number) == null ? void 0 : e.locale) ?? \"en\", {\n minimumFractionDigits: n,\n maximumFractionDigits: s,\n roundingMode: \"trunc\"\n });\n}, P = (n, s = !0, t) => {\n var A, y, g, d;\n const e = ((A = t.number) == null ? void 0 : A.unsigned) !== !0 && n.startsWith(\"-\") ? \"-\" : \"\", a = ((y = t.number) == null ? void 0 : y.fraction) ?? 0;\n let r = C(0, a, t);\n const h = r.formatToParts(1000.12), u = ((g = h.find((o) => o.type === \"group\")) == null ? void 0 : g.value) ?? \" \", f = ((d = h.find((o) => o.type === \"decimal\")) == null ? void 0 : d.value) ?? \".\", i = R(n, u, f);\n if (Number.isNaN(parseFloat(i))) return e;\n const p = i.split(\".\");\n if (p[1] != null && p[1].length >= 1) {\n const o = p[1].length <= a ? p[1].length : a;\n r = C(o, a, t);\n }\n let l = r.format(parseFloat(i));\n return s ? a > 0 && i.endsWith(\".\") && !i.slice(0, -1).includes(\".\") && (l += f) : l = R(l, u, f), e + l;\n};\nclass F {\n constructor(s = {}) {\n b(this, \"opts\", {});\n b(this, \"memo\", /* @__PURE__ */ new Map());\n const t = { ...s };\n if (t.tokens != null) {\n t.tokens = t.tokensReplace ? { ...t.tokens } : { ...N, ...t.tokens };\n for (const e of Object.values(t.tokens))\n typeof e.pattern == \"string\" && (e.pattern = new RegExp(e.pattern));\n } else\n t.tokens = N;\n Array.isArray(t.mask) && (t.mask.length > 1 ? t.mask = [...t.mask].sort((e, a) => e.length - a.length) : t.mask = t.mask[0] ?? \"\"), t.mask === \"\" && (t.mask = null), this.opts = t;\n }\n masked(s) {\n return this.process(String(s), this.findMask(String(s)));\n }\n unmasked(s) {\n return this.process(String(s), this.findMask(String(s)), !1);\n }\n isEager() {\n return this.opts.eager === !0;\n }\n isReversed() {\n return this.opts.reversed === !0;\n }\n completed(s) {\n const t = this.findMask(String(s));\n if (this.opts.mask == null || t == null) return !1;\n const e = this.process(String(s), t).length;\n return typeof this.opts.mask == \"string\" ? e >= this.opts.mask.length : e >= t.length;\n }\n findMask(s) {\n const t = this.opts.mask;\n if (t == null)\n return null;\n if (typeof t == \"string\")\n return t;\n if (typeof t == \"function\")\n return t(s);\n const e = this.process(s, t.slice(-1).pop() ?? \"\", !1);\n return t.find((a) => this.process(s, a, !1).length >= e.length) ?? \"\";\n }\n escapeMask(s) {\n const t = [], e = [];\n return s.split(\"\").forEach((a, r) => {\n a === \"!\" && s[r - 1] !== \"!\" ? e.push(r - e.length) : t.push(a);\n }), { mask: t.join(\"\"), escaped: e };\n }\n process(s, t, e = !0) {\n if (this.opts.number != null) return P(s, e, this.opts);\n if (t == null) return s;\n const a = `v=${s},mr=${t},m=${e ? 1 : 0}`;\n if (this.memo.has(a)) return this.memo.get(a);\n const { mask: r, escaped: h } = this.escapeMask(t), u = [], f = this.opts.tokens != null ? this.opts.tokens : {}, i = this.isReversed() ? -1 : 1, p = this.isReversed() ? \"unshift\" : \"push\", l = this.isReversed() ? 0 : r.length - 1, A = this.isReversed() ? () => o > -1 && c > -1 : () => o < r.length && c < s.length, y = (k) => !this.isReversed() && k <= l || this.isReversed() && k >= l;\n let g, d = -1, o = this.isReversed() ? r.length - 1 : 0, c = this.isReversed() ? s.length - 1 : 0, E = !1;\n for (; A(); ) {\n const k = r.charAt(o), m = f[k], M = (m == null ? void 0 : m.transform) != null ? m.transform(s.charAt(c)) : s.charAt(c);\n if (!h.includes(o) && m != null ? (M.match(m.pattern) != null ? (u[p](M), m.repeated ? (d === -1 ? d = o : o === l && o !== d && (o = d - i), l === d && (o -= i)) : m.multiple && (E = !0, o -= i), o += i) : m.multiple ? E && (o += i, c -= i, E = !1) : M === g ? g = void 0 : m.optional && (o += i, c -= i), c += i) : (e && !this.isEager() && u[p](k), M === k && !this.isEager() ? c += i : g = k, this.isEager() || (o += i)), this.isEager())\n for (; y(o) && (f[r.charAt(o)] == null || h.includes(o)); ) {\n if (e) {\n if (u[p](r.charAt(o)), s.charAt(c) === r.charAt(o)) {\n o += i, c += i;\n continue;\n }\n } else r.charAt(o) === s.charAt(c) && (c += i);\n o += i;\n }\n }\n return this.memo.set(a, u.join(\"\")), this.memo.get(a);\n }\n}\nconst w = (n) => JSON.parse(n.replaceAll(\"'\", '\"')), T = (n, s = {}) => {\n const t = { ...s };\n n.dataset.maska != null && n.dataset.maska !== \"\" && (t.mask = x(n.dataset.maska)), n.dataset.maskaEager != null && (t.eager = v(n.dataset.maskaEager)), n.dataset.maskaReversed != null && (t.reversed = v(n.dataset.maskaReversed)), n.dataset.maskaTokensReplace != null && (t.tokensReplace = v(n.dataset.maskaTokensReplace)), n.dataset.maskaTokens != null && (t.tokens = W(n.dataset.maskaTokens));\n const e = {};\n return n.dataset.maskaNumberLocale != null && (e.locale = n.dataset.maskaNumberLocale), n.dataset.maskaNumberFraction != null && (e.fraction = parseInt(n.dataset.maskaNumberFraction)), n.dataset.maskaNumberUnsigned != null && (e.unsigned = v(n.dataset.maskaNumberUnsigned)), (n.dataset.maskaNumber != null || Object.values(e).length > 0) && (t.number = e), t;\n}, v = (n) => n !== \"\" ? !!JSON.parse(n) : !0, x = (n) => n.startsWith(\"[\") && n.endsWith(\"]\") ? w(n) : n, W = (n) => {\n if (n.startsWith(\"{\") && n.endsWith(\"}\"))\n return w(n);\n const s = {};\n return n.split(\"|\").forEach((t) => {\n const e = t.split(\":\");\n s[e[0]] = {\n pattern: new RegExp(e[1]),\n optional: e[2] === \"optional\",\n multiple: e[2] === \"multiple\",\n repeated: e[2] === \"repeated\"\n };\n }), s;\n};\nclass V {\n constructor(s, t = {}) {\n b(this, \"items\", /* @__PURE__ */ new Map());\n b(this, \"eventAbortController\");\n b(this, \"onInput\", (s) => {\n if (s instanceof CustomEvent && s.type === \"input\" && !s.isTrusted && !s.bubbles)\n return;\n const t = s.target, e = this.items.get(t), a = \"inputType\" in s && s.inputType.startsWith(\"delete\"), r = e.isEager(), h = a && r && e.unmasked(t.value) === \"\" ? \"\" : t.value;\n this.fixCursor(t, a, () => this.setValue(t, h));\n });\n this.options = t, this.eventAbortController = new AbortController(), this.init(this.getInputs(s));\n }\n update(s = {}) {\n this.options = { ...s }, this.init(Array.from(this.items.keys()));\n }\n updateValue(s) {\n s.value !== \"\" && s.value !== this.processInput(s).masked && this.setValue(s, s.value);\n }\n destroy() {\n this.eventAbortController.abort(), this.items.clear();\n }\n init(s) {\n const t = this.getOptions(this.options);\n for (const e of s) {\n if (!this.items.has(e)) {\n const { signal: r } = this.eventAbortController;\n e.addEventListener(\"input\", this.onInput, { capture: !0, signal: r });\n }\n const a = new F(T(e, t));\n this.items.set(e, a), queueMicrotask(() => this.updateValue(e)), e.selectionStart === null && a.isEager() && console.warn(\"Maska: input of `%s` type is not supported\", e.type);\n }\n }\n getInputs(s) {\n return typeof s == \"string\" ? Array.from(document.querySelectorAll(s)) : \"length\" in s ? Array.from(s) : [s];\n }\n getOptions(s) {\n const { onMaska: t, preProcess: e, postProcess: a, ...r } = s;\n return r;\n }\n fixCursor(s, t, e) {\n const a = s.selectionStart, r = s.value;\n if (e(), a === null || a === r.length && !t) return;\n const h = s.value, u = r.slice(0, a), f = h.slice(0, a), i = this.processInput(s, u).unmasked, p = this.processInput(s, f).unmasked;\n let l = a;\n u !== f && (l += t ? h.length - r.length : i.length - p.length), s.setSelectionRange(l, l);\n }\n setValue(s, t) {\n const e = this.processInput(s, t);\n s.value = e.masked, this.options.onMaska != null && (Array.isArray(this.options.onMaska) ? this.options.onMaska.forEach((a) => a(e)) : this.options.onMaska(e)), s.dispatchEvent(new CustomEvent(\"maska\", { detail: e })), s.dispatchEvent(new CustomEvent(\"input\", { detail: e.masked }));\n }\n processInput(s, t) {\n const e = this.items.get(s);\n let a = t ?? s.value;\n this.options.preProcess != null && (a = this.options.preProcess(a));\n let r = e.masked(a);\n return this.options.postProcess != null && (r = this.options.postProcess(r)), {\n masked: r,\n unmasked: e.unmasked(a),\n completed: e.completed(a)\n };\n }\n}\nexport {\n F as Mask,\n V as MaskInput,\n N as tokens\n};\n","import { MaskInput as n } from \"./maska.mjs\";\nconst l = /* @__PURE__ */ new WeakMap(), c = (e, s) => {\n if (e.arg == null || e.instance == null) return;\n const a = \"setup\" in e.instance.$.type;\n e.arg in e.instance ? e.instance[e.arg] = s : a && console.warn(\"Maska: please expose `%s` using defineExpose\", e.arg);\n}, k = (e, s) => {\n var u;\n const a = e instanceof HTMLInputElement ? e : e.querySelector(\"input\");\n if (a == null || (a == null ? void 0 : a.type) === \"file\") return;\n let t = {};\n if (s.value != null && (t = typeof s.value == \"string\" ? { mask: s.value } : { ...s.value }), s.arg != null) {\n const o = (r) => {\n const p = s.modifiers.unmasked ? r.unmasked : s.modifiers.completed ? r.completed : r.masked;\n c(s, p);\n };\n t.onMaska = t.onMaska == null ? o : Array.isArray(t.onMaska) ? [...t.onMaska, o] : [t.onMaska, o];\n }\n l.has(a) ? (u = l.get(a)) == null || u.update(t) : l.set(a, new n(a, t));\n};\nexport {\n k as vMaska\n};\n","\n \n \n \n \n \n \n \n \n \n \n \n \n {{ label }}\n \n \n \n \n \n \n\n\n\n\n\n","\n \n \n \n \n \n \n \n \n \n {{ inputValue }}\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","\n \n \n \n \n \n \n {{ t('$vuetify.errorDialog.title', 'System error') }}\n \n\n \n {{ errorMessage }}\n \n \n \n \n {{ t('$vuetify.errorDialog.close', 'Close') }}\n \n \n {{ t('$vuetify.errorDialog.reload', 'Reload') }}\n \n \n \n \n\n\n\n","\n \n \n \n \n \n \n \n \n\n \n {{ label }}\n \n \n \n \n\n\n\n\n\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"mindre enn ett sekund\",\n other: \"mindre enn {{count}} sekunder\",\n },\n\n xSeconds: {\n one: \"ett sekund\",\n other: \"{{count}} sekunder\",\n },\n\n halfAMinute: \"et halvt minutt\",\n\n lessThanXMinutes: {\n one: \"mindre enn ett minutt\",\n other: \"mindre enn {{count}} minutter\",\n },\n\n xMinutes: {\n one: \"ett minutt\",\n other: \"{{count}} minutter\",\n },\n\n aboutXHours: {\n one: \"omtrent en time\",\n other: \"omtrent {{count}} timer\",\n },\n\n xHours: {\n one: \"en time\",\n other: \"{{count}} timer\",\n },\n\n xDays: {\n one: \"en dag\",\n other: \"{{count}} dager\",\n },\n\n aboutXWeeks: {\n one: \"omtrent en uke\",\n other: \"omtrent {{count}} uker\",\n },\n\n xWeeks: {\n one: \"en uke\",\n other: \"{{count}} uker\",\n },\n\n aboutXMonths: {\n one: \"omtrent en måned\",\n other: \"omtrent {{count}} måneder\",\n },\n\n xMonths: {\n one: \"en måned\",\n other: \"{{count}} måneder\",\n },\n\n aboutXYears: {\n one: \"omtrent ett år\",\n other: \"omtrent {{count}} år\",\n },\n\n xYears: {\n one: \"ett år\",\n other: \"{{count}} år\",\n },\n\n overXYears: {\n one: \"over ett år\",\n other: \"over {{count}} år\",\n },\n\n almostXYears: {\n one: \"nesten ett år\",\n other: \"nesten {{count}} år\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", String(count));\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"om \" + result;\n } else {\n return result + \" siden\";\n }\n }\n\n return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE d. MMMM y\",\n long: \"d. MMMM y\",\n medium: \"d. MMM y\",\n short: \"dd.MM.y\",\n};\n\nconst timeFormats = {\n full: \"'kl'. HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'kl.' {{time}}\",\n long: \"{{date}} 'kl.' {{time}}\",\n medium: \"{{date}} {{time}}\",\n short: \"{{date}} {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'forrige' eeee 'kl.' p\",\n yesterday: \"'i går kl.' p\",\n today: \"'i dag kl.' p\",\n tomorrow: \"'i morgen kl.' p\",\n nextWeek: \"EEEE 'kl.' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"f.Kr.\", \"e.Kr.\"],\n abbreviated: [\"f.Kr.\", \"e.Kr.\"],\n wide: [\"før Kristus\", \"etter Kristus\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1. kvartal\", \"2. kvartal\", \"3. kvartal\", \"4. kvartal\"],\n};\n\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"jan.\",\n \"feb.\",\n \"mars\",\n \"apr.\",\n \"mai\",\n \"juni\",\n \"juli\",\n \"aug.\",\n \"sep.\",\n \"okt.\",\n \"nov.\",\n \"des.\",\n ],\n\n wide: [\n \"januar\",\n \"februar\",\n \"mars\",\n \"april\",\n \"mai\",\n \"juni\",\n \"juli\",\n \"august\",\n \"september\",\n \"oktober\",\n \"november\",\n \"desember\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"O\", \"T\", \"F\", \"L\"],\n short: [\"sø\", \"ma\", \"ti\", \"on\", \"to\", \"fr\", \"lø\"],\n abbreviated: [\"søn\", \"man\", \"tir\", \"ons\", \"tor\", \"fre\", \"lør\"],\n wide: [\n \"søndag\",\n \"mandag\",\n \"tirsdag\",\n \"onsdag\",\n \"torsdag\",\n \"fredag\",\n \"lørdag\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"midnatt\",\n noon: \"middag\",\n morning: \"på morg.\",\n afternoon: \"på etterm.\",\n evening: \"på kvelden\",\n night: \"på natten\",\n },\n abbreviated: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnatt\",\n noon: \"middag\",\n morning: \"på morg.\",\n afternoon: \"på etterm.\",\n evening: \"på kvelden\",\n night: \"på natten\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnatt\",\n noon: \"middag\",\n morning: \"på morgenen\",\n afternoon: \"på ettermiddagen\",\n evening: \"på kvelden\",\n night: \"på natten\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n return number + \".\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n abbreviated: /^(f\\.? ?Kr\\.?|fvt\\.?|e\\.? ?Kr\\.?|evt\\.?)/i,\n wide: /^(før Kristus|før vår tid|etter Kristus|vår tid)/i,\n};\nconst parseEraPatterns = {\n any: [/^f/i, /^e/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? kvartal/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\\.?/i,\n wide: /^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^mai/i,\n /^jun/i,\n /^jul/i,\n /^aug/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtofl]/i,\n short: /^(sø|ma|ti|on|to|fr|lø)/i,\n abbreviated: /^(søn|man|tir|ons|tor|fre|lør)/i,\n wide: /^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i,\n};\nconst parseDayPatterns = {\n any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow:\n /^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,\n any: /^([ap]\\.?\\s?m\\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a(\\.?\\s?m\\.?)?$/i,\n pm: /^p(\\.?\\s?m\\.?)?$/i,\n midnight: /^midn/i,\n noon: /^midd/i,\n morning: /morgen/i,\n afternoon: /ettermiddag/i,\n evening: /kveld/i,\n night: /natt/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./nb/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./nb/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./nb/_lib/formatRelative.mjs\";\nimport { localize } from \"./nb/_lib/localize.mjs\";\nimport { match } from \"./nb/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary Norwegian Bokmål locale.\n * @language Norwegian Bokmål\n * @iso-639-2 nob\n * @author Hans-Kristian Koren [@Hanse](https://github.com/Hanse)\n * @author Mikolaj Grzyb [@mikolajgrzyb](https://github.com/mikolajgrzyb)\n * @author Dag Stuan [@dagstuan](https://github.com/dagstuan)\n */\nexport const nb = {\n code: \"nb\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4,\n },\n};\n\n// Fallback for modularized imports:\nexport default nb;\n","import { watch as He, ref as c, provide as A, inject as O, onUnmounted as pe, h as U, onBeforeUnmount as R, defineComponent as S, onMounted as _, markRaw as j, nextTick as g, render as mt, reactive as vt, computed as oe } from \"vue\";\nconst ce = (e, o) => {\n for (const t of Object.keys(o))\n e.on(t, o[t]);\n}, ye = (e) => {\n for (const o of Object.keys(e)) {\n const t = e[o];\n t && k(t.cancel) && t.cancel();\n }\n}, Je = (e) => !e || typeof e.charAt != \"function\" ? e : e.charAt(0).toUpperCase() + e.slice(1), k = (e) => typeof e == \"function\", L = (e, o, t) => {\n for (const n in t) {\n const s = \"set\" + Je(n);\n e[s] ? He(\n () => t[n],\n (r, l) => {\n e[s](r, l);\n }\n ) : o[s] && He(\n () => t[n],\n (r) => {\n o[s](r);\n }\n );\n }\n}, f = (e, o, t = {}) => {\n const n = { ...t };\n for (const s in e) {\n const r = o[s], l = e[s];\n r && (r && r.custom === !0 || l !== void 0 && (n[s] = l));\n }\n return n;\n}, T = (e) => {\n const o = {}, t = {};\n for (const n in e)\n if (n.startsWith(\"on\") && !n.startsWith(\"onUpdate\") && n !== \"onReady\") {\n const s = n.slice(2).toLocaleLowerCase();\n o[s] = e[n];\n } else\n t[n] = e[n];\n return { listeners: o, attrs: t };\n}, qe = async (e) => {\n const o = await Promise.all([\n import(\"leaflet/dist/images/marker-icon-2x.png\"),\n import(\"leaflet/dist/images/marker-icon.png\"),\n import(\"leaflet/dist/images/marker-shadow.png\")\n ]);\n delete e.Default.prototype._getIconUrl, e.Default.mergeOptions({\n iconRetinaUrl: o[0].default,\n iconUrl: o[1].default,\n shadowUrl: o[2].default\n });\n}, Y = (e) => {\n const o = c(\n (...n) => console.warn(`Method ${e} has been invoked without being replaced`)\n ), t = (...n) => o.value(...n);\n return t.wrapped = o, A(e, t), t;\n}, V = (e, o) => e.wrapped.value = o, b = typeof self == \"object\" && self.self === self && self || typeof global == \"object\" && global.global === global && global || globalThis, m = (e) => {\n const o = O(e);\n if (o === void 0)\n throw new Error(\n `Attempt to inject ${e.description} before it was provided.`\n );\n return o;\n}, Kt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n WINDOW_OR_GLOBAL: b,\n assertInject: m,\n bindEventHandlers: ce,\n cancelDebounces: ye,\n capitalizeFirstLetter: Je,\n isFunction: k,\n propsBinder: L,\n propsToLeafletOptions: f,\n provideLeafletWrapper: Y,\n remapEvents: T,\n resetWebpackIcon: qe,\n updateLeafletWrapper: V\n}, Symbol.toStringTag, { value: \"Module\" })), h = Symbol(\n \"useGlobalLeaflet\"\n), M = Symbol(\"addLayer\"), ee = Symbol(\"removeLayer\"), H = Symbol(\n \"registerControl\"\n), me = Symbol(\n \"registerLayerControl\"\n), ve = Symbol(\n \"canSetParentHtml\"\n), be = Symbol(\"setParentHtml\"), fe = Symbol(\"setIcon\"), ge = Symbol(\"bindPopup\"), Le = Symbol(\"bindTooltip\"), he = Symbol(\"unbindPopup\"), Oe = Symbol(\"unbindTooltip\"), Qt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n AddLayerInjection: M,\n BindPopupInjection: ge,\n BindTooltipInjection: Le,\n CanSetParentHtmlInjection: ve,\n RegisterControlInjection: H,\n RegisterLayerControlInjection: me,\n RemoveLayerInjection: ee,\n SetIconInjection: fe,\n SetParentHtmlInjection: be,\n UnbindPopupInjection: he,\n UnbindTooltipInjection: Oe,\n UseGlobalLeafletInjection: h\n}, Symbol.toStringTag, { value: \"Module\" })), W = {\n options: {\n type: Object,\n default: () => ({}),\n custom: !0\n }\n}, J = (e) => ({ options: e.options, methods: {} }), bt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n componentProps: W,\n setupComponent: J\n}, Symbol.toStringTag, { value: \"Module\" })), D = {\n ...W,\n pane: {\n type: String\n },\n attribution: {\n type: String\n },\n name: {\n type: String,\n custom: !0\n },\n layerType: {\n type: String,\n custom: !0\n },\n visible: {\n type: Boolean,\n custom: !0,\n default: !0\n }\n}, q = (e, o, t) => {\n const n = m(M), s = m(ee), { options: r, methods: l } = J(e), a = f(\n e,\n D,\n r\n ), i = () => n({ leafletObject: o.value }), u = () => s({ leafletObject: o.value }), d = {\n ...l,\n setAttribution(y) {\n u(), o.value.options.attribution = y, e.visible && i();\n },\n setName() {\n u(), e.visible && i();\n },\n setLayerType() {\n u(), e.visible && i();\n },\n setVisible(y) {\n o.value && (y ? i() : u());\n },\n bindPopup(y) {\n if (!o.value || !k(o.value.bindPopup)) {\n console.warn(\n \"Attempt to bind popup before bindPopup method available on layer.\"\n );\n return;\n }\n o.value.bindPopup(y);\n },\n bindTooltip(y) {\n if (!o.value || !k(o.value.bindTooltip)) {\n console.warn(\n \"Attempt to bind tooltip before bindTooltip method available on layer.\"\n );\n return;\n }\n o.value.bindTooltip(y);\n },\n unbindTooltip() {\n o.value && (k(o.value.closeTooltip) && o.value.closeTooltip(), k(o.value.unbindTooltip) && o.value.unbindTooltip());\n },\n unbindPopup() {\n o.value && (k(o.value.closePopup) && o.value.closePopup(), k(o.value.unbindPopup) && o.value.unbindPopup());\n },\n updateVisibleProp(y) {\n t.emit(\"update:visible\", y);\n }\n };\n return A(ge, d.bindPopup), A(Le, d.bindTooltip), A(he, d.unbindPopup), A(Oe, d.unbindTooltip), pe(() => {\n d.unbindPopup(), d.unbindTooltip(), u();\n }), { options: a, methods: d };\n}, G = (e, o) => {\n if (e && o.default)\n return U(\"div\", { style: { display: \"none\" } }, o.default());\n}, ft = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n layerProps: D,\n render: G,\n setupLayer: q\n}, Symbol.toStringTag, { value: \"Module\" })), Se = {\n ...D,\n interactive: {\n type: Boolean,\n default: void 0\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: void 0\n }\n}, Ke = (e, o, t) => {\n const { options: n, methods: s } = q(\n e,\n o,\n t\n );\n return { options: f(\n e,\n Se,\n n\n ), methods: s };\n}, gt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n interactiveLayerProps: Se,\n setupInteractiveLayer: Ke\n}, Symbol.toStringTag, { value: \"Module\" })), ne = {\n ...Se,\n stroke: {\n type: Boolean,\n default: void 0\n },\n color: {\n type: String\n },\n weight: {\n type: Number\n },\n opacity: {\n type: Number\n },\n lineCap: {\n type: String\n },\n lineJoin: {\n type: String\n },\n dashArray: {\n type: String\n },\n dashOffset: {\n type: String\n },\n fill: {\n type: Boolean,\n default: void 0\n },\n fillColor: {\n type: String\n },\n fillOpacity: {\n type: Number\n },\n fillRule: {\n type: String\n },\n className: {\n type: String\n }\n}, _e = (e, o, t) => {\n const { options: n, methods: s } = Ke(e, o, t), r = f(\n e,\n ne,\n n\n ), l = m(ee), a = {\n ...s,\n setStroke(i) {\n o.value.setStyle({ stroke: i });\n },\n setColor(i) {\n o.value.setStyle({ color: i });\n },\n setWeight(i) {\n o.value.setStyle({ weight: i });\n },\n setOpacity(i) {\n o.value.setStyle({ opacity: i });\n },\n setLineCap(i) {\n o.value.setStyle({ lineCap: i });\n },\n setLineJoin(i) {\n o.value.setStyle({ lineJoin: i });\n },\n setDashArray(i) {\n o.value.setStyle({ dashArray: i });\n },\n setDashOffset(i) {\n o.value.setStyle({ dashOffset: i });\n },\n setFill(i) {\n o.value.setStyle({ fill: i });\n },\n setFillColor(i) {\n o.value.setStyle({ fillColor: i });\n },\n setFillOpacity(i) {\n o.value.setStyle({ fillOpacity: i });\n },\n setFillRule(i) {\n o.value.setStyle({ fillRule: i });\n },\n setClassName(i) {\n o.value.setStyle({ className: i });\n }\n };\n return R(() => {\n l({ leafletObject: o.value });\n }), { options: r, methods: a };\n}, Lt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n pathProps: ne,\n setupPath: _e\n}, Symbol.toStringTag, { value: \"Module\" })), re = {\n ...ne,\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n required: !0,\n custom: !0\n }\n}, je = (e, o, t) => {\n const { options: n, methods: s } = _e(\n e,\n o,\n t\n ), r = f(\n e,\n re,\n n\n ), l = {\n ...s,\n setRadius(a) {\n o.value.setRadius(a);\n },\n setLatLng(a) {\n o.value.setLatLng(a);\n }\n };\n return { options: r, methods: l };\n}, ht = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n circleMarkerProps: re,\n setupCircleMarker: je\n}, Symbol.toStringTag, { value: \"Module\" })), Pe = {\n ...re,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number\n }\n}, Qe = (e, o, t) => {\n const { options: n, methods: s } = je(e, o, t), r = f(\n e,\n Pe,\n n\n ), l = {\n ...s\n };\n return { options: r, methods: l };\n}, Ot = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n circleProps: Pe,\n setupCircle: Qe\n}, Symbol.toStringTag, { value: \"Module\" })), Xt = S({\n name: \"LCircle\",\n props: Pe,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { options: l, methods: a } = Qe(e, t, o);\n return _(async () => {\n const { circle: i } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(i(e.latLng, l));\n const { listeners: u } = T(o.attrs);\n t.value.on(u), L(a, t.value, e), r({\n ...e,\n ...a,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), Yt = S({\n name: \"LCircleMarker\",\n props: re,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { options: l, methods: a } = je(\n e,\n t,\n o\n );\n return _(async () => {\n const { circleMarker: i } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(\n i(e.latLng, l)\n );\n const { listeners: u } = T(o.attrs);\n t.value.on(u), L(a, t.value, e), r({\n ...e,\n ...a,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), F = {\n ...W,\n position: {\n type: String\n }\n}, K = (e, o) => {\n const { options: t, methods: n } = J(e), s = f(\n e,\n F,\n t\n ), r = {\n ...n,\n setPosition(l) {\n o.value && o.value.setPosition(l);\n }\n };\n return pe(() => {\n o.value && o.value.remove();\n }), { options: s, methods: r };\n}, Xe = (e) => e.default ? U(\"div\", { ref: \"root\" }, e.default()) : null, St = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n controlProps: F,\n renderLControl: Xe,\n setupControl: K\n}, Symbol.toStringTag, { value: \"Module\" })), Vt = S({\n name: \"LControl\",\n props: {\n ...F,\n disableClickPropagation: {\n type: Boolean,\n custom: !0,\n default: !0\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: !0,\n default: !1\n }\n },\n setup(e, o) {\n const t = c(), n = c(), s = O(h), r = m(H), { options: l, methods: a } = K(e, t);\n return _(async () => {\n const { Control: i, DomEvent: u } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\"), d = i.extend({\n onAdd() {\n return n.value;\n }\n });\n t.value = j(new d(l)), L(a, t.value, e), r({ leafletObject: t.value }), e.disableClickPropagation && n.value && u.disableClickPropagation(n.value), e.disableScrollPropagation && n.value && u.disableScrollPropagation(n.value), g(() => o.emit(\"ready\", t.value));\n }), { root: n, leafletObject: t };\n },\n render() {\n return Xe(this.$slots);\n }\n}), Ce = {\n ...F,\n prefix: {\n type: String\n }\n}, Ye = (e, o) => {\n const { options: t, methods: n } = K(\n e,\n o\n ), s = f(\n e,\n Ce,\n t\n ), r = {\n ...n,\n setPrefix(l) {\n o.value.setPrefix(l);\n }\n };\n return { options: s, methods: r };\n}, _t = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n controlAttributionProps: Ce,\n setupControlAttribution: Ye\n}, Symbol.toStringTag, { value: \"Module\" })), xt = S({\n name: \"LControlAttribution\",\n props: Ce,\n setup(e, o) {\n const t = c(), n = O(h), s = m(H), { options: r, methods: l } = Ye(e, t);\n return _(async () => {\n const { control: a } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(\n a.attribution(r)\n ), L(l, t.value, e), s({ leafletObject: t.value }), g(() => o.emit(\"ready\", t.value));\n }), { leafletObject: t };\n },\n render() {\n return null;\n }\n}), Te = {\n ...F,\n collapsed: {\n type: Boolean,\n default: void 0\n },\n autoZIndex: {\n type: Boolean,\n default: void 0\n },\n hideSingleBase: {\n type: Boolean,\n default: void 0\n },\n sortLayers: {\n type: Boolean,\n default: void 0\n },\n sortFunction: {\n type: Function\n }\n}, Ve = (e, o) => {\n const { options: t } = K(e, o);\n return { options: f(\n e,\n Te,\n t\n ), methods: {\n addLayer(r) {\n r.layerType === \"base\" ? o.value.addBaseLayer(r.leafletObject, r.name) : r.layerType === \"overlay\" && o.value.addOverlay(r.leafletObject, r.name);\n },\n removeLayer(r) {\n o.value.removeLayer(r.leafletObject);\n }\n } };\n}, jt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n controlLayersProps: Te,\n setupControlLayers: Ve\n}, Symbol.toStringTag, { value: \"Module\" })), Rt = S({\n name: \"LControlLayers\",\n props: Te,\n setup(e, o) {\n const t = c(), n = O(h), s = m(me), { options: r, methods: l } = Ve(e, t);\n return _(async () => {\n const { control: a } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(\n a.layers(void 0, void 0, r)\n ), L(l, t.value, e), s({\n ...e,\n ...l,\n leafletObject: t.value\n }), g(() => o.emit(\"ready\", t.value));\n }), { leafletObject: t };\n },\n render() {\n return null;\n }\n}), Me = {\n ...F,\n maxWidth: {\n type: Number\n },\n metric: {\n type: Boolean,\n default: void 0\n },\n imperial: {\n type: Boolean,\n default: void 0\n },\n updateWhenIdle: {\n type: Boolean,\n default: void 0\n }\n}, xe = (e, o) => {\n const { options: t, methods: n } = K(\n e,\n o\n );\n return { options: f(\n e,\n Me,\n t\n ), methods: n };\n}, Pt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n controlScaleProps: Me,\n setupControlScale: xe\n}, Symbol.toStringTag, { value: \"Module\" })), eo = S({\n name: \"LControlScale\",\n props: Me,\n setup(e, o) {\n const t = c(), n = O(h), s = m(H), { options: r, methods: l } = xe(e, t);\n return _(async () => {\n const { control: a } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(a.scale(r)), L(l, t.value, e), s({ leafletObject: t.value }), g(() => o.emit(\"ready\", t.value));\n }), { leafletObject: t };\n },\n render() {\n return null;\n }\n}), Be = {\n ...F,\n zoomInText: {\n type: String\n },\n zoomInTitle: {\n type: String\n },\n zoomOutText: {\n type: String\n },\n zoomOutTitle: {\n type: String\n }\n}, Re = (e, o) => {\n const { options: t, methods: n } = K(\n e,\n o\n );\n return { options: f(\n e,\n Be,\n t\n ), methods: n };\n}, Ct = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n controlZoomProps: Be,\n setupControlZoom: Re\n}, Symbol.toStringTag, { value: \"Module\" })), to = S({\n name: \"LControlZoom\",\n props: Be,\n setup(e, o) {\n const t = c(), n = O(h), s = m(H), { options: r, methods: l } = Re(e, t);\n return _(async () => {\n const { control: a } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(a.zoom(r)), L(l, t.value, e), s({ leafletObject: t.value }), g(() => o.emit(\"ready\", t.value));\n }), { leafletObject: t };\n },\n render() {\n return null;\n }\n}), te = {\n ...D\n}, se = (e, o, t) => {\n const { options: n, methods: s } = q(\n e,\n o,\n t\n ), r = f(\n e,\n te,\n n\n ), l = {\n ...s,\n addLayer(a) {\n o.value.addLayer(a.leafletObject);\n },\n removeLayer(a) {\n o.value.removeLayer(a.leafletObject);\n }\n };\n return A(M, l.addLayer), A(ee, l.removeLayer), { options: r, methods: l };\n}, Tt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n layerGroupProps: te,\n setupLayerGroup: se\n}, Symbol.toStringTag, { value: \"Module\" })), we = {\n ...te\n}, et = (e, o, t) => {\n const { options: n, methods: s } = se(\n e,\n o,\n t\n ), r = f(\n e,\n we,\n n\n ), l = {\n ...s\n };\n return { options: r, methods: l };\n}, Mt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n featureGroupProps: we,\n setupFeatureGroup: et\n}, Symbol.toStringTag, { value: \"Module\" })), oo = S({\n props: we,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { methods: l, options: a } = et(\n e,\n t,\n o\n );\n return _(async () => {\n const { featureGroup: i } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(\n i(void 0, a)\n );\n const { listeners: u } = T(o.attrs);\n t.value.on(u), L(l, t.value, e), r({\n ...e,\n ...l,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), Ie = {\n ...te,\n geojson: {\n type: [Object, Array],\n custom: !0\n },\n optionsStyle: {\n type: Function,\n custom: !0\n }\n}, tt = (e, o, t) => {\n const { options: n, methods: s } = se(\n e,\n o,\n t\n ), r = f(\n e,\n Ie,\n n\n );\n Object.prototype.hasOwnProperty.call(e, \"optionsStyle\") && (r.style = e.optionsStyle);\n const l = {\n ...s,\n setGeojson(a) {\n o.value.clearLayers(), o.value.addData(a);\n },\n setOptionsStyle(a) {\n o.value.setStyle(a);\n },\n getGeoJSONData() {\n return o.value.toGeoJSON();\n },\n getBounds() {\n return o.value.getBounds();\n }\n };\n return { options: r, methods: l };\n}, Bt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n geoJSONProps: Ie,\n setupGeoJSON: tt\n}, Symbol.toStringTag, { value: \"Module\" })), no = S({\n props: Ie,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { methods: l, options: a } = tt(e, t, o);\n return _(async () => {\n const { geoJSON: i } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(i(e.geojson, a));\n const { listeners: u } = T(o.attrs);\n t.value.on(u), L(l, t.value, e), r({\n ...e,\n ...l,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), ae = {\n ...D,\n opacity: {\n type: Number\n },\n zIndex: {\n type: Number\n },\n tileSize: {\n type: [Number, Array, Object]\n },\n noWrap: {\n type: Boolean,\n default: void 0\n },\n minZoom: {\n type: Number\n },\n maxZoom: {\n type: Number\n },\n className: {\n type: String\n }\n}, Ae = (e, o, t) => {\n const { options: n, methods: s } = q(\n e,\n o,\n t\n ), r = f(\n e,\n ae,\n n\n ), l = {\n ...s,\n setTileComponent() {\n var a;\n (a = o.value) == null || a.redraw();\n }\n };\n return pe(() => {\n o.value.off();\n }), { options: r, methods: l };\n}, ot = (e, o, t, n) => e.extend({\n initialize(s) {\n this.tileComponents = {}, this.on(\"tileunload\", this._unloadTile), t.setOptions(this, s);\n },\n createTile(s) {\n const r = this._tileCoordsToKey(s);\n this.tileComponents[r] = o.create(\"div\");\n const l = U({ setup: n, props: [\"coords\"] }, { coords: s });\n return mt(l, this.tileComponents[r]), this.tileComponents[r];\n },\n _unloadTile(s) {\n const r = this._tileCoordsToKey(s.coords);\n this.tileComponents[r] && (this.tileComponents[r].innerHTML = \"\", this.tileComponents[r] = void 0);\n }\n}), wt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n CreateVueGridLayer: ot,\n gridLayerProps: ae,\n setupGridLayer: Ae\n}, Symbol.toStringTag, { value: \"Module\" })), ro = S({\n props: {\n ...ae,\n childRender: {\n type: Function,\n required: !0\n }\n },\n setup(e, o) {\n const t = c(), n = c(null), s = c(!1), r = O(h), l = m(M), { options: a, methods: i } = Ae(e, t, o);\n return _(async () => {\n const { GridLayer: u, DomUtil: d, Util: y } = r ? b.L : await import(\"leaflet/dist/leaflet-src.esm\"), w = ot(\n u,\n d,\n y,\n e.childRender\n );\n t.value = j(new w(a));\n const { listeners: v } = T(o.attrs);\n t.value.on(v), L(i, t.value, e), l({\n ...e,\n ...i,\n leafletObject: t.value\n }), s.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { root: n, ready: s, leafletObject: t };\n },\n render() {\n return this.ready ? U(\"div\", { style: { display: \"none\" }, ref: \"root\" }) : null;\n }\n}), de = {\n iconUrl: {\n type: String\n },\n iconRetinaUrl: {\n type: String\n },\n iconSize: {\n type: [Object, Array]\n },\n iconAnchor: {\n type: [Object, Array]\n },\n popupAnchor: {\n type: [Object, Array]\n },\n tooltipAnchor: {\n type: [Object, Array]\n },\n shadowUrl: {\n type: String\n },\n shadowRetinaUrl: {\n type: String\n },\n shadowSize: {\n type: [Object, Array]\n },\n shadowAnchor: {\n type: [Object, Array]\n },\n bgPos: {\n type: [Object, Array]\n },\n className: {\n type: String\n }\n}, It = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n iconProps: de\n}, Symbol.toStringTag, { value: \"Module\" })), so = S({\n name: \"LIcon\",\n props: {\n ...de,\n ...W\n },\n setup(e, o) {\n const t = c(), n = O(h), s = m(ve), r = m(be), l = m(fe);\n let a, i, u, d, y;\n const w = (N, P, B) => {\n const I = N && N.innerHTML;\n if (!P) {\n B && y && s() && r(I);\n return;\n }\n const { listeners: E } = T(o.attrs);\n y && i(y, E);\n const { options: ue } = J(e), $ = f(\n e,\n de,\n ue\n );\n I && ($.html = I), y = $.html ? u($) : d($), a(y, E), l(y);\n }, v = () => {\n g(() => w(t.value, !0, !1));\n }, z = () => {\n g(() => w(t.value, !1, !0));\n }, Z = {\n setIconUrl: v,\n setIconRetinaUrl: v,\n setIconSize: v,\n setIconAnchor: v,\n setPopupAnchor: v,\n setTooltipAnchor: v,\n setShadowUrl: v,\n setShadowRetinaUrl: v,\n setShadowAnchor: v,\n setBgPos: v,\n setClassName: v,\n setHtml: v\n };\n return _(async () => {\n const {\n DomEvent: N,\n divIcon: P,\n icon: B\n } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n a = N.on, i = N.off, u = P, d = B, L(Z, {}, e), new MutationObserver(z).observe(t.value, {\n attributes: !0,\n childList: !0,\n characterData: !0,\n subtree: !0\n }), v();\n }), { root: t };\n },\n render() {\n const e = this.$slots.default ? this.$slots.default() : void 0;\n return U(\"div\", { ref: \"root\" }, e);\n }\n}), Ge = {\n ...D,\n opacity: {\n type: Number\n },\n alt: {\n type: String\n },\n interactive: {\n type: Boolean,\n default: void 0\n },\n crossOrigin: {\n type: Boolean,\n default: void 0\n },\n errorOverlayUrl: {\n type: String\n },\n zIndex: {\n type: Number\n },\n className: {\n type: String\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n },\n bounds: {\n type: [Array, Object],\n required: !0,\n custom: !0\n }\n}, nt = (e, o, t) => {\n const { options: n, methods: s } = q(\n e,\n o,\n t\n ), r = f(\n e,\n Ge,\n n\n ), l = {\n ...s,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(a) {\n return o.value.setOpacity(a);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(a) {\n return o.value.setUrl(a);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(a) {\n return o.value.setBounds(a);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return o.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return o.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return o.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return o.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(a) {\n return o.value.setZIndex(a);\n }\n };\n return { options: r, methods: l };\n}, At = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n imageOverlayProps: Ge,\n setupImageOverlay: nt\n}, Symbol.toStringTag, { value: \"Module\" })), ao = S({\n name: \"LImageOverlay\",\n props: Ge,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { options: l, methods: a } = nt(\n e,\n t,\n o\n );\n return _(async () => {\n const { imageOverlay: i } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(\n i(e.url, e.bounds, l)\n );\n const { listeners: u } = T(o.attrs);\n t.value.on(u), L(a, t.value, e), r({\n ...e,\n ...a,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), lo = S({\n props: te,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { methods: l } = se(e, t, o);\n return _(async () => {\n const { layerGroup: a } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(\n a(void 0, e.options)\n );\n const { listeners: i } = T(o.attrs);\n t.value.on(i), L(l, t.value, e), r({\n ...e,\n ...l,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n});\nfunction rt(e, o, t) {\n var n, s, r;\n o === void 0 && (o = 50), t === void 0 && (t = {});\n var l = (n = t.isImmediate) != null && n, a = (s = t.callback) != null && s, i = t.maxWait, u = Date.now(), d = [];\n function y() {\n if (i !== void 0) {\n var v = Date.now() - u;\n if (v + o >= i)\n return i - v;\n }\n return o;\n }\n var w = function() {\n var v = [].slice.call(arguments), z = this;\n return new Promise(function(Z, N) {\n var P = l && r === void 0;\n if (r !== void 0 && clearTimeout(r), r = setTimeout(function() {\n if (r = void 0, u = Date.now(), !l) {\n var I = e.apply(z, v);\n a && a(I), d.forEach(function(E) {\n return (0, E.resolve)(I);\n }), d = [];\n }\n }, y()), P) {\n var B = e.apply(z, v);\n return a && a(B), Z(B);\n }\n d.push({ resolve: Z, reject: N });\n });\n };\n return w.cancel = function(v) {\n r !== void 0 && clearTimeout(r), d.forEach(function(z) {\n return (0, z.reject)(v);\n }), d = [];\n }, w;\n}\nconst We = {\n ...W,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array]\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object]\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object]\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: [Object, Array]\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Object\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Object\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: void 0\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object]\n },\n maxBoundsViscosity: {\n type: Number\n },\n inertia: {\n type: Boolean,\n default: void 0\n },\n inertiaDeceleration: {\n type: Number\n },\n inertiaMaxSpeed: {\n type: Number\n },\n easeLinearity: {\n type: Number\n },\n zoomAnimation: {\n type: Boolean,\n default: void 0\n },\n zoomAnimationThreshold: {\n type: Number\n },\n fadeAnimation: {\n type: Boolean,\n default: void 0\n },\n markerZoomAnimation: {\n type: Boolean,\n default: void 0\n },\n noBlockingAnimations: {\n type: Boolean,\n default: void 0\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: !0,\n custom: !0\n }\n}, io = S({\n inheritAttrs: !1,\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: We,\n setup(e, o) {\n const t = c(), n = vt({\n ready: !1,\n layersToAdd: [],\n layersInControl: []\n }), { options: s } = J(e), r = f(\n e,\n We,\n s\n ), { listeners: l, attrs: a } = T(o.attrs), i = Y(M), u = Y(ee), d = Y(H), y = Y(\n me\n );\n A(h, e.useGlobalLeaflet);\n const w = oe(() => {\n const P = {};\n return e.noBlockingAnimations && (P.animate = !1), P;\n }), v = oe(() => {\n const P = w.value;\n return e.padding && (P.padding = e.padding), e.paddingTopLeft && (P.paddingTopLeft = e.paddingTopLeft), e.paddingBottomRight && (P.paddingBottomRight = e.paddingBottomRight), P;\n }), z = {\n moveend: rt((P) => {\n n.leafletRef && (o.emit(\"update:zoom\", n.leafletRef.getZoom()), o.emit(\"update:center\", n.leafletRef.getCenter()), o.emit(\"update:bounds\", n.leafletRef.getBounds()));\n }),\n overlayadd(P) {\n const B = n.layersInControl.find((I) => I.name === P.name);\n B && B.updateVisibleProp(!0);\n },\n overlayremove(P) {\n const B = n.layersInControl.find((I) => I.name === P.name);\n B && B.updateVisibleProp(!1);\n }\n };\n _(async () => {\n e.useGlobalLeaflet && (b.L = b.L || await import(\"leaflet\"));\n const { map: P, CRS: B, Icon: I, latLngBounds: E, latLng: ue, stamp: $ } = e.useGlobalLeaflet ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n try {\n r.beforeMapMount && await r.beforeMapMount();\n } catch (p) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${p.message}`\n );\n }\n await qe(I);\n const yt = typeof r.crs == \"string\" ? B[r.crs] : r.crs;\n r.crs = yt || B.EPSG3857;\n const Q = {\n addLayer(p) {\n p.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd.push(p) : n.layersInControl.find(\n (X) => $(X.leafletObject) === $(p.leafletObject)\n ) || (n.layerControl.addLayer(p), n.layersInControl.push(p))), p.visible !== !1 && n.leafletRef.addLayer(p.leafletObject);\n },\n removeLayer(p) {\n p.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd = n.layersToAdd.filter(\n (C) => C.name !== p.name\n ) : (n.layerControl.removeLayer(p.leafletObject), n.layersInControl = n.layersInControl.filter(\n (C) => $(C.leafletObject) !== $(p.leafletObject)\n ))), n.leafletRef.removeLayer(p.leafletObject);\n },\n registerLayerControl(p) {\n n.layerControl = p, n.layersToAdd.forEach((C) => {\n n.layerControl.addLayer(C);\n }), n.layersToAdd = [], d(p);\n },\n registerControl(p) {\n n.leafletRef.addControl(p.leafletObject);\n },\n setZoom(p) {\n const C = n.leafletRef.getZoom();\n p !== C && n.leafletRef.setZoom(p, w.value);\n },\n setCrs(p) {\n const C = n.leafletRef.getBounds();\n n.leafletRef.options.crs = p, n.leafletRef.fitBounds(C, {\n animate: !1,\n padding: [0, 0]\n });\n },\n fitBounds(p) {\n n.leafletRef.fitBounds(p, v.value);\n },\n setBounds(p) {\n if (!p)\n return;\n const C = E(p);\n if (!C.isValid())\n return;\n !(n.lastSetBounds || n.leafletRef.getBounds()).equals(C, 0) && (n.lastSetBounds = C, n.leafletRef.fitBounds(C));\n },\n setCenter(p) {\n if (p == null)\n return;\n const C = ue(p), X = n.lastSetCenter || n.leafletRef.getCenter();\n (X.lat !== C.lat || X.lng !== C.lng) && (n.lastSetCenter = C, n.leafletRef.panTo(C, w.value));\n }\n };\n V(i, Q.addLayer), V(u, Q.removeLayer), V(d, Q.registerControl), V(y, Q.registerLayerControl), n.leafletRef = j(P(t.value, r)), L(Q, n.leafletRef, e), ce(n.leafletRef, z), ce(n.leafletRef, l), n.ready = !0, g(() => o.emit(\"ready\", n.leafletRef));\n }), R(() => {\n ye(z), n.leafletRef && (n.leafletRef.off(), n.leafletRef.remove());\n });\n const Z = oe(() => n.leafletRef), N = oe(() => n.ready);\n return { root: t, ready: N, leafletObject: Z, attrs: a };\n },\n render({ attrs: e }) {\n return e.style || (e.style = {}), e.style.width || (e.style.width = \"100%\"), e.style.height || (e.style.height = \"100%\"), U(\n \"div\",\n {\n ...e,\n ref: \"root\"\n },\n this.ready && this.$slots.default ? this.$slots.default() : {}\n );\n }\n}), Gt = [\"Symbol(Comment)\", \"Symbol(Text)\"], zt = [\"LTooltip\", \"LPopup\"], ze = {\n ...D,\n draggable: {\n type: Boolean,\n default: void 0\n },\n icon: {\n type: [Object]\n },\n zIndexOffset: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n custom: !0,\n required: !0\n }\n}, st = (e, o, t) => {\n const { options: n, methods: s } = q(\n e,\n o,\n t\n ), r = f(\n e,\n ze,\n n\n ), l = {\n ...s,\n setDraggable(a) {\n o.value.dragging && (a ? o.value.dragging.enable() : o.value.dragging.disable());\n },\n latLngSync(a) {\n t.emit(\"update:latLng\", a.latlng), t.emit(\"update:lat-lng\", a.latlng);\n },\n setLatLng(a) {\n if (a != null && o.value) {\n const i = o.value.getLatLng();\n (!i || !i.equals(a)) && o.value.setLatLng(a);\n }\n }\n };\n return { options: r, methods: l };\n}, at = (e, o) => {\n const t = o.slots.default && o.slots.default();\n return t && t.length && t.some(Nt);\n};\nfunction Nt(e) {\n return !(Gt.includes(e.type.toString()) || zt.includes(e.type.name));\n}\nconst $t = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n markerProps: ze,\n setupMarker: st,\n shouldBlankIcon: at\n}, Symbol.toStringTag, { value: \"Module\" })), uo = S({\n name: \"LMarker\",\n props: ze,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M);\n A(\n ve,\n () => {\n var u;\n return !!((u = t.value) != null && u.getElement());\n }\n ), A(be, (u) => {\n var y, w;\n const d = k((y = t.value) == null ? void 0 : y.getElement) && ((w = t.value) == null ? void 0 : w.getElement());\n d && (d.innerHTML = u);\n }), A(\n fe,\n (u) => {\n var d;\n return ((d = t.value) == null ? void 0 : d.setIcon) && t.value.setIcon(u);\n }\n );\n const { options: l, methods: a } = st(e, t, o), i = {\n moveHandler: rt(a.latLngSync)\n };\n return _(async () => {\n const { marker: u, divIcon: d } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n at(l, o) && (l.icon = d({ className: \"\" })), t.value = j(u(e.latLng, l));\n const { listeners: y } = T(o.attrs);\n t.value.on(y), t.value.on(\"move\", i.moveHandler), L(a, t.value, e), r({\n ...e,\n ...a,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), R(() => ye(i)), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), le = {\n ...ne,\n smoothFactor: {\n type: Number\n },\n noClip: {\n type: Boolean,\n default: void 0\n },\n latLngs: {\n type: Array,\n required: !0,\n custom: !0\n }\n}, Ne = (e, o, t) => {\n const { options: n, methods: s } = _e(\n e,\n o,\n t\n ), r = f(\n e,\n le,\n n\n ), l = {\n ...s,\n setSmoothFactor(a) {\n o.value.setStyle({ smoothFactor: a });\n },\n setNoClip(a) {\n o.value.setStyle({ noClip: a });\n },\n addLatLng(a) {\n o.value.addLatLng(a);\n }\n };\n return { options: r, methods: l };\n}, kt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n polylineProps: le,\n setupPolyline: Ne\n}, Symbol.toStringTag, { value: \"Module\" })), x = {\n ...le\n}, $e = (e, o, t) => {\n const { options: n, methods: s } = Ne(\n e,\n o,\n t\n ), r = f(\n e,\n x,\n n\n ), l = {\n ...s,\n toGeoJSON(a) {\n return o.value.toGeoJSON(a);\n }\n };\n return { options: r, methods: l };\n}, Ut = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n polygonProps: x,\n setupPolygon: $e\n}, Symbol.toStringTag, { value: \"Module\" })), co = S({\n name: \"LPolygon\",\n props: x,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { options: l, methods: a } = $e(e, t, o);\n return _(async () => {\n const { polygon: i } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(i(e.latLngs, l));\n const { listeners: u } = T(o.attrs);\n t.value.on(u), L(a, t.value, e), r({\n ...e,\n ...a,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), po = S({\n name: \"LPolyline\",\n props: le,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { options: l, methods: a } = Ne(e, t, o);\n return _(async () => {\n const { polyline: i } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(\n i(e.latLngs, l)\n );\n const { listeners: u } = T(o.attrs);\n t.value.on(u), L(a, t.value, e), r({\n ...e,\n ...a,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), ke = {\n ...W,\n content: {\n type: String,\n default: null\n }\n}, Ue = (e, o) => {\n const { options: t, methods: n } = J(e), s = {\n ...n,\n setContent(r) {\n o.value && r !== null && r !== void 0 && o.value.setContent(r);\n }\n };\n return { options: t, methods: s };\n}, De = (e) => e.default ? U(\"div\", { ref: \"root\" }, e.default()) : null, Dt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n popperProps: ke,\n render: De,\n setupPopper: Ue\n}, Symbol.toStringTag, { value: \"Module\" })), lt = {\n ...ke,\n latLng: {\n type: [Object, Array],\n default: () => []\n }\n}, it = (e, o) => {\n const { options: t, methods: n } = Ue(e, o);\n return { options: t, methods: n };\n}, Ft = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n popupProps: lt,\n setupPopup: it\n}, Symbol.toStringTag, { value: \"Module\" })), yo = S({\n name: \"LPopup\",\n props: lt,\n setup(e, o) {\n const t = c(), n = c(null), s = O(h), r = m(ge), l = m(he), { options: a, methods: i } = it(e, t);\n return _(async () => {\n const { popup: u } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(u(a)), e.latLng !== void 0 && t.value.setLatLng(e.latLng), L(i, t.value, e);\n const { listeners: d } = T(o.attrs);\n t.value.on(d), t.value.setContent(e.content || n.value || \"\"), r(t.value), g(() => o.emit(\"ready\", t.value));\n }), R(() => {\n l();\n }), { root: n, leafletObject: t };\n },\n render() {\n return De(this.$slots);\n }\n}), Fe = {\n ...x,\n latLngs: {\n ...x.latLngs,\n required: !1\n },\n bounds: {\n type: Object,\n custom: !0\n }\n}, ut = (e, o, t) => {\n const { options: n, methods: s } = $e(\n e,\n o,\n t\n ), r = f(\n e,\n Fe,\n n\n ), l = {\n ...s,\n setBounds(a) {\n o.value.setBounds(a);\n },\n setLatLngs(a) {\n o.value.setBounds(a);\n }\n };\n return { options: r, methods: l };\n}, Zt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n rectangleProps: Fe,\n setupRectangle: ut\n}, Symbol.toStringTag, { value: \"Module\" })), mo = S({\n name: \"LRectangle\",\n props: Fe,\n setup(e, o) {\n const t = c(), n = c(!1), s = O(h), r = m(M), { options: l, methods: a } = ut(e, t, o);\n return _(async () => {\n const { rectangle: i, latLngBounds: u } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\"), d = e.bounds ? u(e.bounds) : u(e.latLngs || []);\n t.value = j(i(d, l));\n const { listeners: y } = T(o.attrs);\n t.value.on(y), L(a, t.value, e), r({\n ...e,\n ...a,\n leafletObject: t.value\n }), n.value = !0, g(() => o.emit(\"ready\", t.value));\n }), { ready: n, leafletObject: t };\n },\n render() {\n return G(this.ready, this.$slots);\n }\n}), ie = {\n ...ae,\n tms: {\n type: Boolean,\n default: void 0\n },\n subdomains: {\n type: [String, Array],\n validator: (e) => typeof e == \"string\" ? !0 : Array.isArray(e) ? e.every((o) => typeof o == \"string\") : !1\n },\n detectRetina: {\n type: Boolean,\n default: void 0\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n }\n}, Ze = (e, o, t) => {\n const { options: n, methods: s } = Ae(e, o, t), r = f(\n e,\n ie,\n n\n ), l = {\n ...s\n };\n return { options: r, methods: l };\n}, Et = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n setupTileLayer: Ze,\n tileLayerProps: ie\n}, Symbol.toStringTag, { value: \"Module\" })), vo = S({\n props: ie,\n setup(e, o) {\n const t = c(), n = O(h), s = m(M), { options: r, methods: l } = Ze(e, t, o);\n return _(async () => {\n const { tileLayer: a } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(a(e.url, r));\n const { listeners: i } = T(o.attrs);\n t.value.on(i), L(l, t.value, e), s({\n ...e,\n ...l,\n leafletObject: t.value\n }), g(() => o.emit(\"ready\", t.value));\n }), { leafletObject: t };\n },\n render() {\n return null;\n }\n}), ct = {\n ...ke\n}, dt = (e, o) => {\n const { options: t, methods: n } = Ue(e, o), s = m(Oe);\n return R(() => {\n s();\n }), { options: t, methods: n };\n}, Ht = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n setupTooltip: dt,\n tooltipProps: ct\n}, Symbol.toStringTag, { value: \"Module\" })), bo = S({\n name: \"LTooltip\",\n props: ct,\n setup(e, o) {\n const t = c(), n = c(null), s = O(h), r = m(Le), { options: l, methods: a } = dt(e, t);\n return _(async () => {\n const { tooltip: i } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(i(l)), L(a, t.value, e);\n const { listeners: u } = T(o.attrs);\n t.value.on(u), t.value.setContent(e.content || n.value || \"\"), r(t.value), g(() => o.emit(\"ready\", t.value));\n }), { root: n, leafletObject: t };\n },\n render() {\n return De(this.$slots);\n }\n}), Ee = {\n ...ie,\n layers: {\n type: String,\n required: !0\n },\n styles: {\n type: String\n },\n format: {\n type: String\n },\n transparent: {\n type: Boolean,\n default: void 0\n },\n version: {\n type: String\n },\n crs: {\n type: Object\n },\n uppercase: {\n type: Boolean,\n default: void 0\n }\n}, pt = (e, o, t) => {\n const { options: n, methods: s } = Ze(e, o, t);\n return {\n options: f(\n e,\n Ee,\n n\n ),\n methods: {\n ...s\n }\n };\n}, Wt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n setupWMSTileLayer: pt,\n wmsTileLayerProps: Ee\n}, Symbol.toStringTag, { value: \"Module\" })), fo = S({\n props: Ee,\n setup(e, o) {\n const t = c(), n = O(h), s = m(M), { options: r, methods: l } = pt(\n e,\n t,\n o\n );\n return _(async () => {\n const { tileLayer: a } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n t.value = j(\n a.wms(e.url, r)\n );\n const { listeners: i } = T(o.attrs);\n t.value.on(i), L(l, t.value, e), s({\n ...e,\n ...l,\n leafletObject: t.value\n }), g(() => o.emit(\"ready\", t.value));\n }), { leafletObject: t };\n },\n render() {\n return null;\n }\n}), go = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Circle: Ot,\n CircleMarker: ht,\n Component: bt,\n Control: St,\n ControlAttribution: _t,\n ControlLayers: jt,\n ControlScale: Pt,\n ControlZoom: Ct,\n FeatureGroup: Mt,\n GeoJSON: Bt,\n GridLayer: wt,\n Icon: It,\n ImageOverlay: At,\n InteractiveLayer: gt,\n Layer: ft,\n LayerGroup: Tt,\n Marker: $t,\n Path: Lt,\n Polygon: Ut,\n Polyline: kt,\n Popper: Dt,\n Popup: Ft,\n Rectangle: Zt,\n TileLayer: Et,\n Tooltip: Ht,\n WmsTileLayer: Wt\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n go as Functions,\n Qt as InjectionKeys,\n Xt as LCircle,\n Yt as LCircleMarker,\n Vt as LControl,\n xt as LControlAttribution,\n Rt as LControlLayers,\n eo as LControlScale,\n to as LControlZoom,\n oo as LFeatureGroup,\n no as LGeoJson,\n ro as LGridLayer,\n so as LIcon,\n ao as LImageOverlay,\n lo as LLayerGroup,\n io as LMap,\n uo as LMarker,\n co as LPolygon,\n po as LPolyline,\n yo as LPopup,\n mo as LRectangle,\n vo as LTileLayer,\n bo as LTooltip,\n fo as LWmsTileLayer,\n Kt as Utilities\n};\n","/*\n\tLeaflet.contextmenu, a context menu for Leaflet.\n\t(c) 2015, Adam Ratcliffe, GeoSmart Maps Limited\n\n\t@preserve\n*/\n\n(function(factory) {\n\t// Packaging/modules magic dance\n\tvar L;\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['leaflet'], factory);\n\t} else if (typeof module === 'object' && typeof module.exports === 'object') {\n\t\t// Node/CommonJS\n\t\tL = require('leaflet');\n\t\tmodule.exports = factory(L);\n\t} else {\n\t\t// Browser globals\n\t\tif (typeof window.L === 'undefined') {\n\t\t\tthrow new Error('Leaflet must be loaded first');\n\t\t}\n\t\tfactory(window.L);\n\t}\n})(function(L) {\nL.Map.mergeOptions({\n contextmenuItems: []\n});\n\nL.Map.ContextMenu = L.Handler.extend({\n _touchstart: L.Browser.msPointer ? 'MSPointerDown' : L.Browser.pointer ? 'pointerdown' : 'touchstart',\n \n statics: {\n BASE_CLS: 'leaflet-contextmenu'\n },\n \n initialize: function (map) {\n L.Handler.prototype.initialize.call(this, map);\n \n this._items = [];\n this._visible = false;\n\n var container = this._container = L.DomUtil.create('div', L.Map.ContextMenu.BASE_CLS, map._container);\n container.style.zIndex = 10000;\n container.style.position = 'absolute';\n\n if (map.options.contextmenuWidth) {\n container.style.width = map.options.contextmenuWidth + 'px';\n }\n\n this._createItems();\n\n L.DomEvent\n .on(container, 'click', L.DomEvent.stop)\n .on(container, 'mousedown', L.DomEvent.stop)\n .on(container, 'dblclick', L.DomEvent.stop)\n .on(container, 'contextmenu', L.DomEvent.stop);\n },\n\n addHooks: function () {\n var container = this._map.getContainer();\n\n L.DomEvent\n .on(container, 'mouseleave', this._hide, this)\n .on(document, 'keydown', this._onKeyDown, this);\n\n if (L.Browser.touch) {\n L.DomEvent.on(document, this._touchstart, this._hide, this);\n }\n\n this._map.on({\n contextmenu: this._show,\n mousedown: this._hide,\n movestart: this._hide,\n zoomstart: this._hide\n }, this);\n },\n\n removeHooks: function () {\n var container = this._map.getContainer();\n\n L.DomEvent\n .off(container, 'mouseleave', this._hide, this)\n .off(document, 'keydown', this._onKeyDown, this);\n\n if (L.Browser.touch) {\n L.DomEvent.off(document, this._touchstart, this._hide, this);\n }\n\n this._map.off({\n contextmenu: this._show,\n mousedown: this._hide,\n movestart: this._hide,\n zoomstart: this._hide\n }, this);\n },\n\n showAt: function (point, data) {\n if (point instanceof L.LatLng) {\n point = this._map.latLngToContainerPoint(point);\n }\n this._showAtPoint(point, data);\n },\n\n hide: function () {\n this._hide();\n },\n\n addItem: function (options) {\n return this.insertItem(options);\n },\n\n insertItem: function (options, index) {\n index = index !== undefined ? index: this._items.length;\n\n var item = this._createItem(this._container, options, index);\n\n this._items.push(item);\n\n this._sizeChanged = true;\n\n this._map.fire('contextmenu.additem', {\n contextmenu: this,\n el: item.el,\n index: index\n });\n\n return item.el;\n },\n\n removeItem: function (item) {\n var container = this._container;\n\n if (!isNaN(item)) {\n item = container.children[item];\n }\n\n if (item) {\n this._removeItem(L.Util.stamp(item));\n\n this._sizeChanged = true;\n\n this._map.fire('contextmenu.removeitem', {\n contextmenu: this,\n el: item\n });\n\n return item;\n }\n\n return null;\n },\n\n removeAllItems: function () {\n var items = this._container.children,\n item;\n\n while (items.length) {\n item = items[0];\n this._removeItem(L.Util.stamp(item));\n }\n return items;\n },\n\n hideAllItems: function () {\n var item, i, l;\n\n for (i = 0, l = this._items.length; i < l; i++) {\n item = this._items[i];\n item.el.style.display = 'none';\n }\n },\n\n showAllItems: function () {\n var item, i, l;\n\n for (i = 0, l = this._items.length; i < l; i++) {\n item = this._items[i];\n item.el.style.display = '';\n }\n },\n\n setDisabled: function (item, disabled) {\n var container = this._container,\n itemCls = L.Map.ContextMenu.BASE_CLS + '-item';\n\n if (!isNaN(item)) {\n item = container.children[item];\n }\n\n if (item && L.DomUtil.hasClass(item, itemCls)) {\n if (disabled) {\n L.DomUtil.addClass(item, itemCls + '-disabled');\n this._map.fire('contextmenu.disableitem', {\n contextmenu: this,\n el: item\n });\n } else {\n L.DomUtil.removeClass(item, itemCls + '-disabled');\n this._map.fire('contextmenu.enableitem', {\n contextmenu: this,\n el: item\n });\n }\n }\n },\n\n isVisible: function () {\n return this._visible;\n },\n\n _createItems: function () {\n var itemOptions = this._map.options.contextmenuItems,\n item,\n i, l;\n\n for (i = 0, l = itemOptions.length; i < l; i++) {\n this._items.push(this._createItem(this._container, itemOptions[i]));\n }\n },\n\n _createItem: function (container, options, index) {\n if (options.separator || options === '-') {\n return this._createSeparator(container, index);\n }\n\n var itemCls = L.Map.ContextMenu.BASE_CLS + '-item',\n cls = options.disabled ? (itemCls + ' ' + itemCls + '-disabled') : itemCls,\n el = this._insertElementAt('a', cls, container, index),\n callback = this._createEventHandler(el, options.callback, options.context, options.hideOnSelect),\n icon = this._getIcon(options),\n iconCls = this._getIconCls(options),\n html = '';\n\n if (icon) {\n html = '';\n } else if (iconCls) {\n html = '';\n }\n\n el.innerHTML = html + options.text;\n el.href = '#';\n\n L.DomEvent\n .on(el, 'mouseover', this._onItemMouseOver, this)\n .on(el, 'mouseout', this._onItemMouseOut, this)\n .on(el, 'mousedown', L.DomEvent.stopPropagation)\n .on(el, 'click', callback);\n\n if (L.Browser.touch) {\n L.DomEvent.on(el, this._touchstart, L.DomEvent.stopPropagation);\n }\n\n // Devices without a mouse fire \"mouseover\" on tap, but never “mouseout\"\n if (!L.Browser.pointer) {\n L.DomEvent.on(el, 'click', this._onItemMouseOut, this);\n }\n\n return {\n id: L.Util.stamp(el),\n el: el,\n callback: callback\n };\n },\n\n _removeItem: function (id) {\n var item,\n el,\n i, l, callback;\n\n for (i = 0, l = this._items.length; i < l; i++) {\n item = this._items[i];\n\n if (item.id === id) {\n el = item.el;\n callback = item.callback;\n\n if (callback) {\n L.DomEvent\n .off(el, 'mouseover', this._onItemMouseOver, this)\n .off(el, 'mouseover', this._onItemMouseOut, this)\n .off(el, 'mousedown', L.DomEvent.stopPropagation)\n .off(el, 'click', callback);\n\n if (L.Browser.touch) {\n L.DomEvent.off(el, this._touchstart, L.DomEvent.stopPropagation);\n }\n\n if (!L.Browser.pointer) {\n L.DomEvent.on(el, 'click', this._onItemMouseOut, this);\n }\n }\n\n this._container.removeChild(el);\n this._items.splice(i, 1);\n\n return item;\n }\n }\n return null;\n },\n\n _createSeparator: function (container, index) {\n var el = this._insertElementAt('div', L.Map.ContextMenu.BASE_CLS + '-separator', container, index);\n\n return {\n id: L.Util.stamp(el),\n el: el\n };\n },\n\n _createEventHandler: function (el, func, context, hideOnSelect) {\n var me = this,\n map = this._map,\n disabledCls = L.Map.ContextMenu.BASE_CLS + '-item-disabled',\n hideOnSelect = (hideOnSelect !== undefined) ? hideOnSelect : true;\n\n return function (e) {\n if (L.DomUtil.hasClass(el, disabledCls)) {\n return;\n }\n\n if (hideOnSelect) {\n me._hide();\n }\n\n if (func) {\n func.call(context || map, me._showLocation);\n }\n\n me._map.fire('contextmenu.select', {\n contextmenu: me,\n el: el\n });\n };\n },\n\n _insertElementAt: function (tagName, className, container, index) {\n var refEl,\n el = document.createElement(tagName);\n\n el.className = className;\n\n if (index !== undefined) {\n refEl = container.children[index];\n }\n\n if (refEl) {\n container.insertBefore(el, refEl);\n } else {\n container.appendChild(el);\n }\n\n return el;\n },\n\n _show: function (e) {\n this._showAtPoint(e.containerPoint, e);\n },\n\n _showAtPoint: function (pt, data) {\n if (this._items.length) {\n var map = this._map,\n layerPoint = map.containerPointToLayerPoint(pt),\n latlng = map.layerPointToLatLng(layerPoint),\n event = L.extend(data || {}, {contextmenu: this});\n\n this._showLocation = {\n latlng: latlng,\n layerPoint: layerPoint,\n containerPoint: pt\n };\n\n if (data && data.relatedTarget){\n this._showLocation.relatedTarget = data.relatedTarget;\n }\n\n this._setPosition(pt);\n\n if (!this._visible) {\n this._container.style.display = 'block';\n this._visible = true;\n }\n\n this._map.fire('contextmenu.show', event);\n }\n },\n\n _hide: function () {\n if (this._visible) {\n this._visible = false;\n this._container.style.display = 'none';\n this._map.fire('contextmenu.hide', {contextmenu: this});\n }\n },\n\n _getIcon: function (options) {\n return L.Browser.retina && options.retinaIcon || options.icon;\n },\n\n _getIconCls: function (options) {\n return L.Browser.retina && options.retinaIconCls || options.iconCls;\n },\n\n _setPosition: function (pt) {\n var mapSize = this._map.getSize(),\n container = this._container,\n containerSize = this._getElementSize(container),\n anchor;\n\n if (this._map.options.contextmenuAnchor) {\n anchor = L.point(this._map.options.contextmenuAnchor);\n pt = pt.add(anchor);\n }\n\n container._leaflet_pos = pt;\n\n if (pt.x + containerSize.x > mapSize.x) {\n container.style.left = 'auto';\n container.style.right = Math.min(Math.max(mapSize.x - pt.x, 0), mapSize.x - containerSize.x - 1) + 'px';\n } else {\n container.style.left = Math.max(pt.x, 0) + 'px';\n container.style.right = 'auto';\n }\n\n if (pt.y + containerSize.y > mapSize.y) {\n container.style.top = 'auto';\n container.style.bottom = Math.min(Math.max(mapSize.y - pt.y, 0), mapSize.y - containerSize.y - 1) + 'px';\n } else {\n container.style.top = Math.max(pt.y, 0) + 'px';\n container.style.bottom = 'auto';\n }\n },\n\n _getElementSize: function (el) {\n var size = this._size,\n initialDisplay = el.style.display;\n\n if (!size || this._sizeChanged) {\n size = {};\n\n el.style.left = '-999999px';\n el.style.right = 'auto';\n el.style.display = 'block';\n\n size.x = el.offsetWidth;\n size.y = el.offsetHeight;\n\n el.style.left = 'auto';\n el.style.display = initialDisplay;\n\n this._sizeChanged = false;\n }\n\n return size;\n },\n\n _onKeyDown: function (e) {\n var key = e.keyCode;\n\n // If ESC pressed and context menu is visible hide it\n if (key === 27) {\n this._hide();\n }\n },\n\n _onItemMouseOver: function (e) {\n L.DomUtil.addClass(e.target || e.srcElement, 'over');\n },\n\n _onItemMouseOut: function (e) {\n L.DomUtil.removeClass(e.target || e.srcElement, 'over');\n }\n});\n\nL.Map.addInitHook('addHandler', 'contextmenu', L.Map.ContextMenu);\nL.Mixin.ContextMenu = {\n bindContextMenu: function (options) {\n L.setOptions(this, options);\n this._initContextMenu();\n\n return this;\n },\n\n unbindContextMenu: function (){\n this.off('contextmenu', this._showContextMenu, this);\n\n return this;\n },\n\n addContextMenuItem: function (item) {\n this.options.contextmenuItems.push(item);\n },\n\n removeContextMenuItemWithIndex: function (index) {\n var items = [];\n for (var i = 0; i < this.options.contextmenuItems.length; i++) {\n if (this.options.contextmenuItems[i].index == index){\n items.push(i);\n }\n }\n var elem = items.pop();\n while (elem !== undefined) {\n this.options.contextmenuItems.splice(elem,1);\n elem = items.pop();\n }\n },\n\n replaceContextMenuItem: function (item) {\n this.removeContextMenuItemWithIndex(item.index);\n this.addContextMenuItem(item);\n },\n\n _initContextMenu: function () {\n this._items = [];\n\n this.on('contextmenu', this._showContextMenu, this);\n },\n\n _showContextMenu: function (e) {\n var itemOptions,\n data, pt, i, l;\n\n if (this._map.contextmenu) {\n data = L.extend({relatedTarget: this}, e);\n\n pt = this._map.mouseEventToContainerPoint(e.originalEvent);\n\n if (!this.options.contextmenuInheritItems) {\n this._map.contextmenu.hideAllItems();\n }\n\n for (i = 0, l = this.options.contextmenuItems.length; i < l; i++) {\n itemOptions = this.options.contextmenuItems[i];\n this._items.push(this._map.contextmenu.insertItem(itemOptions, itemOptions.index));\n }\n\n this._map.once('contextmenu.hide', this._hideContextMenu, this);\n\n this._map.contextmenu.showAt(pt, data);\n }\n },\n\n _hideContextMenu: function () {\n var i, l;\n\n for (i = 0, l = this._items.length; i < l; i++) {\n this._map.contextmenu.removeItem(this._items[i]);\n }\n this._items.length = 0;\n\n if (!this.options.contextmenuInheritItems) {\n this._map.contextmenu.showAllItems();\n }\n }\n};\n\nvar classes = [L.Marker, L.Path],\n defaultOptions = {\n contextmenu: false,\n contextmenuItems: [],\n contextmenuInheritItems: true\n },\n cls, i, l;\n\nfor (i = 0, l = classes.length; i < l; i++) {\n cls = classes[i];\n\n // L.Class should probably provide an empty options hash, as it does not test\n // for it here and add if needed\n if (!cls.prototype.options) {\n cls.prototype.options = defaultOptions;\n } else {\n cls.mergeOptions(defaultOptions);\n }\n\n cls.addInitHook(function () {\n if (this.options.contextmenu) {\n this._initContextMenu();\n }\n });\n\n cls.include(L.Mixin.ContextMenu);\n}\nreturn L.Map.ContextMenu;\n});\n","/* eslint-disable */\n// This implementation of LRUMap is a copy of https://github.com/rsms/js-lru/ ,\n// trivially adapted for ES6 exports.\n\n/*\nThe MIT License\n\nCopyright (c) 2010-2020 Rasmus Andersson \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\n/**\n * A doubly linked list-based Least Recently Used (LRU) cache. Will keep most\n * recently used items while discarding least recently used items when its limit\n * is reached.\n *\n * Licensed under MIT. Copyright (c) 2010 Rasmus Andersson \n * See README.md for details.\n *\n * Illustration of the design:\n *\n * entry entry entry entry\n * ______ ______ ______ ______\n * | head |.newer => | |.newer => | |.newer => | tail |\n * | A | | B | | C | | D |\n * |______| <= older.|______| <= older.|______| <= older.|______|\n *\n * removed <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- added\n */\n\nconst NEWER = Symbol('newer');\nconst OLDER = Symbol('older');\n\nexport class LRUMap {\n constructor(limit, entries) {\n if (typeof limit !== 'number') {\n // called as (entries)\n entries = limit;\n limit = 0;\n }\n\n this.size = 0;\n this.limit = limit;\n this.oldest = this.newest = undefined;\n this._keymap = new Map();\n\n if (entries) {\n this.assign(entries);\n if (limit < 1) {\n this.limit = this.size;\n }\n }\n }\n\n _markEntryAsUsed(entry) {\n if (entry === this.newest) {\n // Already the most recenlty used entry, so no need to update the list\n return;\n }\n // HEAD--------------TAIL\n // <.older .newer>\n // <--- add direction --\n // A B C E\n if (entry[NEWER]) {\n if (entry === this.oldest) {\n this.oldest = entry[NEWER];\n }\n entry[NEWER][OLDER] = entry[OLDER]; // C <-- E.\n }\n if (entry[OLDER]) {\n entry[OLDER][NEWER] = entry[NEWER]; // C. --> E\n }\n entry[NEWER] = undefined; // D --x\n entry[OLDER] = this.newest; // D. --> E\n if (this.newest) {\n this.newest[NEWER] = entry; // E. <-- D\n }\n this.newest = entry;\n }\n\n assign(entries) {\n let entry,\n limit = this.limit || Number.MAX_VALUE;\n this._keymap.clear();\n let it = entries[Symbol.iterator]();\n for (let itv = it.next(); !itv.done; itv = it.next()) {\n let e = new Entry(itv.value[0], itv.value[1]);\n this._keymap.set(e.key, e);\n if (!entry) {\n this.oldest = e;\n } else {\n entry[NEWER] = e;\n e[OLDER] = entry;\n }\n entry = e;\n if (limit-- == 0) {\n throw new Error('overflow');\n }\n }\n this.newest = entry;\n this.size = this._keymap.size;\n }\n\n get(key) {\n // First, find our cache entry\n var entry = this._keymap.get(key);\n if (!entry) return; // Not cached. Sorry.\n // As was found in the cache, register it as being requested recently\n this._markEntryAsUsed(entry);\n return entry.value;\n }\n\n set(key, value) {\n var entry = this._keymap.get(key);\n\n if (entry) {\n // update existing\n entry.value = value;\n this._markEntryAsUsed(entry);\n return this;\n }\n\n // new entry\n this._keymap.set(key, (entry = new Entry(key, value)));\n\n if (this.newest) {\n // link previous tail to the new tail (entry)\n this.newest[NEWER] = entry;\n entry[OLDER] = this.newest;\n } else {\n // we're first in -- yay\n this.oldest = entry;\n }\n\n // add new entry to the end of the linked list -- it's now the freshest entry.\n this.newest = entry;\n ++this.size;\n if (this.size > this.limit) {\n // we hit the limit -- remove the head\n this.shift();\n }\n\n return this;\n }\n\n shift() {\n // todo: handle special case when limit == 1\n var entry = this.oldest;\n if (entry) {\n if (this.oldest[NEWER]) {\n // advance the list\n this.oldest = this.oldest[NEWER];\n this.oldest[OLDER] = undefined;\n } else {\n // the cache is exhausted\n this.oldest = undefined;\n this.newest = undefined;\n }\n // Remove last strong reference to and remove links from the purged\n // entry being returned:\n entry[NEWER] = entry[OLDER] = undefined;\n this._keymap.delete(entry.key);\n --this.size;\n return [entry.key, entry.value];\n }\n }\n\n // -------------------------------------------------------------------------------------\n // Following code (until end of class definition) is optional and can be removed without\n // breaking the core functionality.\n\n find(key) {\n let e = this._keymap.get(key);\n return e ? e.value : undefined;\n }\n\n has(key) {\n return this._keymap.has(key);\n }\n\n delete(key) {\n var entry = this._keymap.get(key);\n if (!entry) return;\n this._keymap.delete(entry.key);\n if (entry[NEWER] && entry[OLDER]) {\n // relink the older entry with the newer entry\n entry[OLDER][NEWER] = entry[NEWER];\n entry[NEWER][OLDER] = entry[OLDER];\n } else if (entry[NEWER]) {\n // remove the link to us\n entry[NEWER][OLDER] = undefined;\n // link the newer entry to head\n this.oldest = entry[NEWER];\n } else if (entry[OLDER]) {\n // remove the link to us\n entry[OLDER][NEWER] = undefined;\n // link the newer entry to head\n this.newest = entry[OLDER];\n } else {\n // if(entry[OLDER] === undefined && entry.newer === undefined) {\n this.oldest = this.newest = undefined;\n }\n\n this.size--;\n return entry.value;\n }\n\n clear() {\n // Not clearing links should be safe, as we don't expose live links to user\n this.oldest = this.newest = undefined;\n this.size = 0;\n this._keymap.clear();\n }\n\n keys() {\n return new KeyIterator(this.oldest);\n }\n\n values() {\n return new ValueIterator(this.oldest);\n }\n\n entries() {\n return this;\n }\n\n [Symbol.iterator]() {\n return new EntryIterator(this.oldest);\n }\n\n forEach(fun, thisObj) {\n if (typeof thisObj !== 'object') {\n thisObj = this;\n }\n let entry = this.oldest;\n while (entry) {\n fun.call(thisObj, entry.value, entry.key, this);\n entry = entry[NEWER];\n }\n }\n\n /** Returns a JSON (array) representation */\n toJSON() {\n var s = new Array(this.size),\n i = 0,\n entry = this.oldest;\n while (entry) {\n s[i++] = { key: entry.key, value: entry.value };\n entry = entry[NEWER];\n }\n return s;\n }\n\n /** Returns a String representation */\n toString() {\n var s = '',\n entry = this.oldest;\n while (entry) {\n s += String(entry.key) + ':' + entry.value;\n entry = entry[NEWER];\n if (entry) {\n s += ' < ';\n }\n }\n return s;\n }\n}\n\nfunction Entry(key, value) {\n this.key = key;\n this.value = value;\n this[NEWER] = undefined;\n this[OLDER] = undefined;\n}\n\nfunction EntryIterator(oldestEntry) {\n this.entry = oldestEntry;\n}\nEntryIterator.prototype[Symbol.iterator] = function () {\n return this;\n};\nEntryIterator.prototype.next = function () {\n let ent = this.entry;\n if (ent) {\n this.entry = ent[NEWER];\n return { done: false, value: [ent.key, ent.value] };\n } else {\n return { done: true, value: undefined };\n }\n};\n\nfunction KeyIterator(oldestEntry) {\n this.entry = oldestEntry;\n}\nKeyIterator.prototype[Symbol.iterator] = function () {\n return this;\n};\nKeyIterator.prototype.next = function () {\n let ent = this.entry;\n if (ent) {\n this.entry = ent[NEWER];\n return { done: false, value: ent.key };\n } else {\n return { done: true, value: undefined };\n }\n};\n\nfunction ValueIterator(oldestEntry) {\n this.entry = oldestEntry;\n}\nValueIterator.prototype[Symbol.iterator] = function () {\n return this;\n};\nValueIterator.prototype.next = function () {\n let ent = this.entry;\n if (ent) {\n this.entry = ent[NEWER];\n return { done: false, value: ent.value };\n } else {\n return { done: true, value: undefined };\n }\n};\n","/* eslint-disable */\n// GoogleMutant by Iván Sánchez Ortega \n\n// Based on https://github.com/shramov/leaflet-plugins\n// GridLayer like https://avinmathew.com/leaflet-and-google-maps/ , but using MutationObserver instead of jQuery\n\n/*\n\"THE BEER-WARE LICENSE\":\n wrote this file. As long as you retain this notice you\ncan do whatever you want with this stuff. If we meet some day, and you think\nthis stuff is worth it, you can buy me a beer in return.\n*/\n\nimport { LRUMap } from './lru_map.js';\n\nfunction waitForAPI(callback, context) {\n let checkCounter = 0,\n intervalId = null;\n\n intervalId = setInterval(function () {\n if (checkCounter >= 20) {\n clearInterval(intervalId);\n throw new Error('window.google not found after 10 seconds');\n }\n if (!!window.google && !!window.google.maps && !!window.google.maps.Map) {\n clearInterval(intervalId);\n callback.call(context);\n }\n ++checkCounter;\n }, 500);\n}\n\n// 🍂class GridLayer.GoogleMutant\n// 🍂extends GridLayer\nL.GridLayer.GoogleMutant = L.GridLayer.extend({\n options: {\n maxZoom: 21, // can be 23, but ugly if more than maxNativeZoom\n // 🍂option type: String = 'roadmap'\n // Google's map type. Valid values are 'roadmap', 'satellite', 'terrain' or 'hybrid'.\n type: 'roadmap',\n maxNativeZoom: 21\n },\n\n initialize: function (options) {\n L.GridLayer.prototype.initialize.call(this, options);\n\n // Couple data structures indexed by tile key\n this._tileCallbacks = {}; // Callbacks for promises for tiles that are expected\n this._lru = new LRUMap(100); // Tile LRU cache\n\n this._imagesPerTile = this.options.type === 'hybrid' ? 2 : 1;\n\n this._boundOnMutatedImage = this._onMutatedImage.bind(this);\n },\n\n onAdd: function (map) {\n L.GridLayer.prototype.onAdd.call(this, map);\n this._initMutantContainer();\n\n // Attribution and logo nodes are not mutated a second time if the\n // mutant is removed and re-added to the map, hence they are\n // not cleaned up on layer removal, so they can be added here.\n if (this._logoContainer) {\n map._controlCorners.bottomleft.appendChild(this._logoContainer);\n }\n if (this._attributionContainer) {\n map._controlCorners.bottomright.appendChild(this._attributionContainer);\n }\n\n waitForAPI(() => {\n if (!this._map) {\n return;\n }\n this._initMutant();\n\n //handle layer being added to a map for which there are no Google tiles at the given zoom\n google.maps.event.addListenerOnce(this._mutant, 'idle', () => {\n if (!this._map) {\n return;\n }\n this._checkZoomLevels();\n this._mutantIsReady = true;\n });\n });\n },\n\n onRemove: function (map) {\n L.GridLayer.prototype.onRemove.call(this, map);\n this._observer.disconnect();\n map._container.removeChild(this._mutantContainer);\n if (this._logoContainer) {\n L.DomUtil.remove(this._logoContainer);\n }\n if (this._attributionContainer) {\n L.DomUtil.remove(this._attributionContainer);\n }\n if (this._mutant) {\n google.maps.event.clearListeners(this._mutant, 'idle');\n }\n },\n\n // 🍂method addGoogleLayer(name: String, options?: Object): this\n // Adds layer with the given name and options to the google Map instance.\n // `name`: one of the google maps API layers, with it's constructor available in `google.maps` object.\n // currently following values supported: 'TrafficLayer', 'TransitLayer', 'BicyclingLayer'.\n // `options`: see https://developers.google.com/maps/documentation/javascript/reference/map\n addGoogleLayer: function (googleLayerName, options) {\n if (!this._subLayers) this._subLayers = {};\n this.whenReady(() => {\n var Constructor = google.maps[googleLayerName];\n var googleLayer = new Constructor(options);\n googleLayer.setMap(this._mutant);\n this._subLayers[googleLayerName] = googleLayer;\n });\n return this;\n },\n\n // 🍂method removeGoogleLayer(name: String): this\n // Removes layer with the given name from the google Map instance.\n removeGoogleLayer: function (googleLayerName) {\n this.whenReady(() => {\n var googleLayer = this._subLayers && this._subLayers[googleLayerName];\n if (googleLayer) {\n googleLayer.setMap(null);\n delete this._subLayers[googleLayerName];\n }\n });\n return this;\n },\n\n _initMutantContainer: function () {\n if (!this._mutantContainer) {\n this._mutantContainer = L.DomUtil.create('div', 'leaflet-google-mutant leaflet-top leaflet-left');\n this._mutantContainer.id = '_MutantContainer_' + L.Util.stamp(this._mutantContainer);\n this._mutantContainer.style.pointerEvents = 'none';\n this._mutantContainer.style.visibility = 'hidden';\n\n L.DomEvent.off(this._mutantContainer);\n }\n this._map.getContainer().appendChild(this._mutantContainer);\n\n this.setOpacity(this.options.opacity);\n const style = this._mutantContainer.style;\n if (this._map.options.zoomSnap < 1) {\n // Fractional zoom needs a bigger mutant container in order to load more (smaller) tiles\n style.width = '180%';\n style.height = '180%';\n } else {\n style.width = '100%';\n style.height = '100%';\n }\n style.zIndex = -1;\n\n this._attachObserver(this._mutantContainer);\n },\n\n _initMutant: function () {\n if (this._mutant) {\n return;\n }\n\n var mutantOptions = {\n center: { lat: 0, lng: 0 },\n zoom: 0,\n tilt: 0,\n disableDefaultUI: true,\n keyboardShortcuts: false,\n draggable: false,\n disableDoubleClickZoom: true,\n scrollwheel: false,\n mapTypeId: this.options.type,\n styles: this.options.styles || [],\n backgroundColor: 'transparent'\n };\n\n if (this.options.mapId) {\n mutantOptions.mapId = this.options.mapId;\n mutantOptions.styles = undefined;\n }\n\n var map = new google.maps.Map(this._mutantContainer, mutantOptions);\n\n this._mutant = map;\n\n this._update();\n\n // 🍂event spawned\n // Fired when the mutant has been created.\n this.fire('spawned', { mapObject: map });\n\n this._waitControls();\n this.once('controls_ready', this._setupAttribution);\n },\n\n _attachObserver: function _attachObserver(node) {\n if (!this._observer) this._observer = new MutationObserver(this._onMutations.bind(this));\n\n // pass in the target node, as well as the observer options\n this._observer.observe(node, { childList: true, subtree: true });\n\n // if we are reusing an old _mutantContainer, we must manually detect\n // all existing tiles in it\n Array.prototype.forEach.call(node.querySelectorAll('img'), this._boundOnMutatedImage);\n },\n\n _waitControls: function () {\n const id = setInterval(() => {\n const layoutManager = this._mutant.__gm.layoutManager;\n if (!layoutManager) {\n return;\n }\n clearInterval(id);\n let positions;\n // iterate through obfuscated key names to find positions set (atm: layoutManager.o)\n Object.keys(layoutManager).forEach(function (key) {\n const el = layoutManager[key];\n if (el.get) {\n if (el.get(1) instanceof Node) {\n positions = el;\n }\n }\n });\n // 🍂event controls_ready\n // Fired when controls positions get available (passed in `positions` property).\n this.fire('controls_ready', { positions });\n }, 50);\n },\n\n _setupAttribution: function (ev) {\n if (!this._map) {\n return;\n }\n // https://developers.google.com/maps/documentation/javascript/reference/control#ControlPosition\n const pos = google.maps.ControlPosition;\n const ctr = (this._attributionContainer = ev.positions.get(pos.BOTTOM_RIGHT));\n L.DomUtil.addClass(ctr, 'leaflet-control leaflet-control-attribution');\n L.DomEvent.disableClickPropagation(ctr);\n ctr.style.height = '14px';\n this._map._controlCorners.bottomright.appendChild(ctr);\n\n this._logoContainer = ev.positions.get(pos.BOTTOM_LEFT);\n this._logoContainer.style.pointerEvents = 'auto';\n this._map._controlCorners.bottomleft.appendChild(this._logoContainer);\n },\n\n _onMutations: function _onMutations(mutations) {\n for (var i = 0; i < mutations.length; ++i) {\n var mutation = mutations[i];\n for (var j = 0; j < mutation.addedNodes.length; ++j) {\n var node = mutation.addedNodes[j];\n\n if (node instanceof HTMLImageElement) {\n this._onMutatedImage(node);\n } else if (node instanceof HTMLElement) {\n Array.prototype.forEach.call(node.querySelectorAll('img'), this._boundOnMutatedImage);\n }\n }\n }\n },\n\n // Only images which 'src' attrib match this will be considered for moving around.\n // Looks like some kind of string-based protobuf, maybe??\n // Only the roads (and terrain, and vector-based stuff) match this pattern\n _roadRegexp: /!1i(\\d+)!2i(\\d+)!3i(\\d+|VinaFnapurmBegrtn)!/,\n\n // On the other hand, raster imagery matches this other pattern\n _satRegexp: /x=(\\d+)&y=(\\d+)&z=(\\d+|VinaFnapurmBegrtn)/,\n\n _onMutatedImage: function _onMutatedImage(imgNode) {\n let coords;\n let match = imgNode.src.match(this._roadRegexp);\n let sublayer = 0;\n\n if (match) {\n coords = {\n z: match[1],\n x: match[2],\n y: match[3]\n };\n if (this._imagesPerTile > 1) {\n imgNode.style.zIndex = 1;\n sublayer = 1;\n }\n } else {\n match = imgNode.src.match(this._satRegexp);\n if (match) {\n coords = {\n x: match[1],\n y: match[2],\n z: match[3]\n };\n }\n // imgNode.style.zIndex = 0;\n sublayer = 0;\n }\n\n if (coords) {\n var tileKey = this._tileCoordsToKey(coords);\n imgNode.style.position = 'absolute';\n\n var key = tileKey + '/' + sublayer;\n // Cache img so it can also be used in subsequent tile requests\n this._lru.set(key, imgNode);\n\n if (key in this._tileCallbacks && this._tileCallbacks[key]) {\n // Use the tile for *all* pending callbacks. They'll be cloned anyway.\n this._tileCallbacks[key].forEach(callback => callback(imgNode));\n delete this._tileCallbacks[key];\n }\n }\n },\n\n createTile: function (coords, done) {\n const key = this._tileCoordsToKey(coords),\n tileContainer = L.DomUtil.create('div');\n\n tileContainer.style.textAlign = 'left';\n tileContainer.dataset.pending = this._imagesPerTile;\n done = done.bind(this, null, tileContainer);\n\n for (var i = 0; i < this._imagesPerTile; ++i) {\n const key2 = key + '/' + i,\n imgNode = this._lru.get(key2);\n if (imgNode) {\n tileContainer.appendChild(this._clone(imgNode));\n --tileContainer.dataset.pending;\n } else {\n this._tileCallbacks[key2] = this._tileCallbacks[key2] || [];\n this._tileCallbacks[key2].push(\n function (c /*, k2*/) {\n return function (imgNode) {\n c.appendChild(this._clone(imgNode));\n --c.dataset.pending;\n if (!parseInt(c.dataset.pending)) {\n done();\n }\n }.bind(this);\n }.bind(this)(tileContainer /*, key2*/)\n );\n }\n }\n\n if (!parseInt(tileContainer.dataset.pending)) {\n L.Util.requestAnimFrame(done);\n }\n return tileContainer;\n },\n\n _clone: function (imgNode) {\n const clonedImgNode = imgNode.cloneNode(true);\n clonedImgNode.style.visibility = 'visible';\n return clonedImgNode;\n },\n\n _checkZoomLevels: function () {\n //setting the zoom level on the Google map may result in a different zoom level than the one requested\n //(it won't go beyond the level for which they have data).\n const zoomLevel = this._map.getZoom(),\n gMapZoomLevel = this._mutant.getZoom();\n\n if (!zoomLevel || !gMapZoomLevel) return;\n\n if (\n gMapZoomLevel !== zoomLevel || //zoom levels are out of sync, Google doesn't have data\n gMapZoomLevel > this.options.maxNativeZoom\n ) {\n //at current location, Google does have data (contrary to maxNativeZoom)\n //Update maxNativeZoom\n this._setMaxNativeZoom(gMapZoomLevel);\n }\n },\n\n _setMaxNativeZoom: function (zoomLevel) {\n if (zoomLevel !== this.options.maxNativeZoom) {\n this.options.maxNativeZoom = zoomLevel;\n this._resetView();\n }\n },\n\n _update: function (center) {\n // zoom level check needs to happen before super's implementation (tile addition/creation)\n // otherwise tiles may be missed if maxNativeZoom is not yet correctly determined\n if (this._mutant) {\n center = center || this._map.getCenter();\n const _center = new google.maps.LatLng(center.lat, center.lng),\n zoom = Math.round(this._map.getZoom()),\n mutantZoom = this._mutant.getZoom();\n\n this._mutant.setCenter(_center);\n\n //ignore fractional zoom levels\n if (zoom !== mutantZoom) {\n this._mutant.setZoom(zoom);\n\n if (this._mutantIsReady) this._checkZoomLevels();\n //else zoom level check will be done later by 'idle' handler\n }\n }\n\n L.GridLayer.prototype._update.call(this, center);\n },\n\n // @method whenReady(fn: Function, context?: Object): this\n // Runs the given function `fn` when the mutant gets initialized, or immediately\n // if it's already initialized, optionally passing a function context.\n whenReady: function (callback, context) {\n if (this._mutant) {\n callback.call(context || this, { target: this });\n } else {\n this.on('spawned', callback, context);\n }\n return this;\n }\n});\n\n// 🍂factory gridLayer.googleMutant(options)\n// Returns a new `GridLayer.GoogleMutant` given its options\nL.gridLayer.googleMutant = function (options) {\n return new L.GridLayer.GoogleMutant(options);\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\nvar isEqual = /*@__PURE__*/getDefaultExportFromCjs(fastDeepEqual);\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n this.callbacks = [];\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n }\n return Loader.instance;\n }\n Loader.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n get status() {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n createUrl() {\n let url = this.url;\n url += `?callback=__googleMapsCallback&loading=async`;\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n if (this.client) {\n url += `&client=${this.client}`;\n }\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n if (this.language) {\n url += `&language=${this.language}`;\n }\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n if (this.version) {\n url += `&v=${this.version}`;\n }\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n return url;\n }\n deleteScript() {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n loadPromise() {\n return new Promise((resolve, reject) => {\n this.loadCallback((err) => {\n if (!err) {\n resolve(window.google);\n }\n else {\n reject(err.error);\n }\n });\n });\n }\n importLibrary(name) {\n this.execute();\n return google.maps.importLibrary(name);\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n loadCallback(fn) {\n this.callbacks.push(fn);\n this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n var _a, _b;\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n const params = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n // keep the URL minimal:\n Object.keys(params).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key) => !params[key] && delete params[key]);\n if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n // which also sets the base url, the id, and the nonce\n /* eslint-disable */\n ((g) => {\n // @ts-ignore\n let h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n // @ts-ignore\n b = b[c] || (b[c] = {});\n // @ts-ignore\n const d = b.maps || (b.maps = {}), r = new Set(), e = new URLSearchParams(), u = () => \n // @ts-ignore\n h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n yield (a = m.createElement(\"script\"));\n a.id = this.id;\n e.set(\"libraries\", [...r] + \"\");\n // @ts-ignore\n for (k in g)\n e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n e.set(\"callback\", c + \".maps.\" + q);\n a.src = this.url + `?` + e;\n d[q] = f;\n a.onerror = () => (h = n(Error(p + \" could not load.\")));\n // @ts-ignore\n a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n m.head.append(a);\n })));\n // @ts-ignore\n d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n })(params);\n /* eslint-enable */\n }\n // While most libraries populate the global namespace when loaded via bootstrap params,\n // this is not the case for \"marker\" when used with the inline bootstrap loader\n // (and maybe others in the future). So ensure there is an importLibrary for each:\n const libraryPromises = this.libraries.map((library) => this.importLibrary(library));\n // ensure at least one library, to kick off loading...\n if (!libraryPromises.length) {\n libraryPromises.push(this.importLibrary(\"core\"));\n }\n Promise.all(libraryPromises).then(() => this.callback(), (error) => {\n const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n this.loadErrorCallback(event);\n });\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n if (this.failed) {\n this.reset();\n }\n }\n loadErrorCallback(e) {\n this.errors.push(e);\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * Math.pow(2, this.errors.length);\n console.error(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n }\n else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n callback() {\n this.done = true;\n this.loading = false;\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n this.callbacks = [];\n }\n execute() {\n this.resetIfRetryingFailed();\n if (this.loading) {\n // do nothing but wait\n return;\n }\n if (this.done) {\n this.callback();\n }\n else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader. \" +\n \"This may result in undesirable behavior as options and script parameters may not match.\");\n this.callback();\n return;\n }\n this.loading = true;\n this.setScript();\n }\n }\n}\n\nexport { DEFAULT_ID, Loader, LoaderStatus };\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent as b, ref as p, onMounted as f, markRaw as M, h as w, nextTick as O } from \"vue\";\nimport h from \"leaflet\";\nimport \"leaflet.gridlayer.googlemutant\";\nimport { Loader as G } from \"@googlemaps/js-api-loader\";\nimport { Functions as j, Utilities as i, InjectionKeys as I } from \"@vue-leaflet/vue-leaflet\";\nconst g = {\n options: {\n type: Object,\n default: () => ({}),\n custom: !0\n },\n pane: {\n type: String\n },\n attribution: {\n type: String\n },\n name: {\n type: String,\n custom: !0\n },\n visible: {\n type: Boolean,\n custom: !0,\n default: !0\n },\n opacity: {\n type: Number\n },\n zIndex: {\n type: Number\n },\n tileSize: {\n type: [Number, Array, Object]\n },\n noWrap: {\n type: Boolean,\n default: void 0\n },\n minZoom: {\n type: Number\n },\n maxZoom: {\n type: Number\n },\n className: {\n type: String\n },\n /**\n * Options to pass to Google Maps library loader.\n * https://developers.google.com/maps/documentation/javascript/overview#js_api_loader_package\n */\n loaderOptions: {\n type: Object\n },\n /**\n * Google's map type. 'hybrid' is not really supported.\n */\n type: {\n type: String\n },\n /**\n * Google's cloud styling map ID.\n * https://developers.google.com/maps/documentation/cloud-customization/overview#creating_map_styles\n */\n mapId: String\n}, S = (o, e, s) => {\n const { options: u, methods: t } = j.GridLayer.setupGridLayer(o, e, s), l = i.propsToLeafletOptions(o, g, u);\n function n() {\n e.value && (e.value._lru.clear(), e.value.redraw());\n }\n return {\n options: l,\n methods: {\n ...t,\n setType(r) {\n var a;\n !((a = e.value) != null && a._mutant) || e.value._mutant.getMapTypeId() === r || (e.value._mutant.setMapTypeId(r), n());\n }\n }\n };\n}, E = b({\n name: \"LGoogleMutant\",\n props: g,\n setup(o, e) {\n const { attrs: s, emit: u } = e, t = p(), l = p(null), n = p(!1), r = i.assertInject(I.AddLayerInjection);\n if (!r)\n throw new Error(\"LGoogleMutant must be used inside LMap\");\n const { options: a, methods: d } = S(o, t, e);\n function m() {\n if (!t.value)\n throw new Error(\"Failed to initialize GoogleMutant layer\");\n r({ ...o, ...d, leafletObject: t.value }), n.value = !0, O(() => u(\"ready\", t.value));\n }\n return f(() => {\n var y, c;\n t.value = M(h.gridLayer.googleMutant(a));\n const { listeners: v } = i.remapEvents(s);\n if ((y = t.value) == null || y.on(v), i.propsBinder(d, t.value, o), (c = window.google) != null && c.maps)\n m();\n else {\n console.debug(\"Google Maps Library not found. Importing it now.\");\n const L = o.loaderOptions || { apiKey: \"\" };\n new G(L).importLibrary(\"maps\").then(() => m());\n }\n }), {\n root: l,\n ready: n,\n version: \"1.3.2\"\n };\n },\n render() {\n return this.ready ? w(\"div\", { style: { display: \"none\" }, ref: \"root\" }) : null;\n }\n});\nexport {\n E as default,\n g as leafletGoogleMutantLayerProps,\n S as setupLeafletGoogleMutantLayer\n};\n//# sourceMappingURL=vue-leaflet-googlemutant.es.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_CONFIG = void 0;\n/**\n * Default configuration for the plugin.\n */\nexports.DEFAULT_CONFIG = {\n enabled: true,\n debug: false,\n trackOnNextTick: false,\n loadScript: true,\n defer: false,\n compatibility: false,\n};\n","/**!\n * url-search-params-polyfill\n *\n * @author Jerry Bendy (https://github.com/jerrybendy)\n * @licence MIT\n */\n(function(self) {\n 'use strict';\n\n var nativeURLSearchParams = (function() {\n // #41 Fix issue in RN\n try {\n if (self.URLSearchParams && (new self.URLSearchParams('foo=bar')).get('foo') === 'bar') {\n return self.URLSearchParams;\n }\n } catch (e) {}\n return null;\n })(),\n isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',\n // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.\n decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),\n isSupportSize = nativeURLSearchParams && 'size' in nativeURLSearchParams.prototype,\n __URLSearchParams__ = \"__URLSearchParams__\",\n // Fix bug in Edge which cannot encode ' &' correctly\n encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {\n var ampersandTest = new nativeURLSearchParams();\n ampersandTest.append('s', ' &');\n return ampersandTest.toString() === 's=+%26';\n })() : true,\n prototype = URLSearchParamsPolyfill.prototype,\n iterable = !!(self.Symbol && self.Symbol.iterator);\n\n if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly && isSupportSize) {\n return;\n }\n\n\n /**\n * Make a URLSearchParams instance\n *\n * @param {object|string|URLSearchParams} search\n * @constructor\n */\n function URLSearchParamsPolyfill(search) {\n search = search || \"\";\n\n // support construct object with another URLSearchParams instance\n if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {\n search = search.toString();\n }\n this [__URLSearchParams__] = parseToDict(search);\n }\n\n\n /**\n * Appends a specified key/value pair as a new search parameter.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.append = function(name, value) {\n appendTo(this [__URLSearchParams__], name, value);\n };\n\n /**\n * Deletes the given search parameter, and its associated value,\n * from the list of all search parameters.\n *\n * @param {string} name\n */\n prototype['delete'] = function(name) {\n delete this [__URLSearchParams__] [name];\n };\n\n /**\n * Returns the first value associated to the given search parameter.\n *\n * @param {string} name\n * @returns {string|null}\n */\n prototype.get = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict[name][0] : null;\n };\n\n /**\n * Returns all the values association with a given search parameter.\n *\n * @param {string} name\n * @returns {Array}\n */\n prototype.getAll = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict [name].slice(0) : [];\n };\n\n /**\n * Returns a Boolean indicating if such a search parameter exists.\n *\n * @param {string} name\n * @returns {boolean}\n */\n prototype.has = function(name) {\n return hasOwnProperty(this [__URLSearchParams__], name);\n };\n\n /**\n * Sets the value associated to a given search parameter to\n * the given value. If there were several values, delete the\n * others.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.set = function set(name, value) {\n this [__URLSearchParams__][name] = ['' + value];\n };\n\n /**\n * Returns a string containg a query string suitable for use in a URL.\n *\n * @returns {string}\n */\n prototype.toString = function() {\n var dict = this[__URLSearchParams__], query = [], i, key, name, value;\n for (key in dict) {\n name = encode(key);\n for (i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n };\n\n // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.\n var useProxy = self.Proxy && nativeURLSearchParams && (!decodesPlusesCorrectly || !encodesAmpersandsCorrectly || !isSupportObjectConstructor || !isSupportSize);\n var propValue;\n if (useProxy) {\n // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0\n propValue = new Proxy(nativeURLSearchParams, {\n construct: function (target, args) {\n return new target((new URLSearchParamsPolyfill(args[0]).toString()));\n }\n })\n // Chrome <=60 .toString() on a function proxy got error \"Function.prototype.toString is not generic\"\n propValue.toString = Function.prototype.toString.bind(URLSearchParamsPolyfill);\n } else {\n propValue = URLSearchParamsPolyfill;\n }\n\n /*\n * Apply polyfill to global object and append other prototype into it\n */\n Object.defineProperty(self, 'URLSearchParams', {\n value: propValue\n });\n\n var USPProto = self.URLSearchParams.prototype;\n\n USPProto.polyfill = true;\n\n // Fix #54, `toString.call(new URLSearchParams)` will return correct value when Proxy not used\n if (!useProxy && self.Symbol) {\n USPProto[self.Symbol.toStringTag] = 'URLSearchParams';\n }\n\n /**\n *\n * @param {function} callback\n * @param {object} thisArg\n */\n if (!('forEach' in USPProto)) {\n USPProto.forEach = function(callback, thisArg) {\n var dict = parseToDict(this.toString());\n Object.getOwnPropertyNames(dict).forEach(function(name) {\n dict[name].forEach(function(value) {\n callback.call(thisArg, value, name, this);\n }, this);\n }, this);\n };\n }\n\n /**\n * Sort all name-value pairs\n */\n if (!('sort' in USPProto)) {\n USPProto.sort = function() {\n var dict = parseToDict(this.toString()), keys = [], k, i, j;\n for (k in dict) {\n keys.push(k);\n }\n keys.sort();\n\n for (i = 0; i < keys.length; i++) {\n this['delete'](keys[i]);\n }\n for (i = 0; i < keys.length; i++) {\n var key = keys[i], values = dict[key];\n for (j = 0; j < values.length; j++) {\n this.append(key, values[j]);\n }\n }\n };\n }\n\n /**\n * Returns an iterator allowing to go through all keys of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('keys' in USPProto)) {\n USPProto.keys = function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push(name);\n });\n return makeIterator(items);\n };\n }\n\n /**\n * Returns an iterator allowing to go through all values of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('values' in USPProto)) {\n USPProto.values = function() {\n var items = [];\n this.forEach(function(item) {\n items.push(item);\n });\n return makeIterator(items);\n };\n }\n\n /**\n * Returns an iterator allowing to go through all key/value\n * pairs contained in this object.\n *\n * @returns {function}\n */\n if (!('entries' in USPProto)) {\n USPProto.entries = function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push([name, item]);\n });\n return makeIterator(items);\n };\n }\n\n if (iterable) {\n USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;\n }\n\n if (!('size' in USPProto)) {\n Object.defineProperty(USPProto, 'size', {\n get: function () {\n var dict = parseToDict(this.toString())\n if (USPProto === this) {\n throw new TypeError('Illegal invocation at URLSearchParams.invokeGetter')\n }\n return Object.keys(dict).reduce(function (prev, cur) {\n return prev + dict[cur].length;\n }, 0);\n }\n });\n }\n\n function encode(str) {\n var replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function(match) {\n return replace[match];\n });\n }\n\n function decode(str) {\n return str\n .replace(/[ +]/g, '%20')\n .replace(/(%[a-f0-9]{2})+/ig, function(match) {\n return decodeURIComponent(match);\n });\n }\n\n function makeIterator(arr) {\n var iterator = {\n next: function() {\n var value = arr.shift();\n return {done: value === undefined, value: value};\n }\n };\n\n if (iterable) {\n iterator[self.Symbol.iterator] = function() {\n return iterator;\n };\n }\n\n return iterator;\n }\n\n function parseToDict(search) {\n var dict = {};\n\n if (typeof search === \"object\") {\n // if `search` is an array, treat it as a sequence\n if (isArray(search)) {\n for (var i = 0; i < search.length; i++) {\n var item = search[i];\n if (isArray(item) && item.length === 2) {\n appendTo(dict, item[0], item[1]);\n } else {\n throw new TypeError(\"Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements\");\n }\n }\n\n } else {\n for (var key in search) {\n if (search.hasOwnProperty(key)) {\n appendTo(dict, key, search[key]);\n }\n }\n }\n\n } else {\n // remove first '?'\n if (search.indexOf(\"?\") === 0) {\n search = search.slice(1);\n }\n\n var pairs = search.split(\"&\");\n for (var j = 0; j < pairs.length; j++) {\n var value = pairs [j],\n index = value.indexOf('=');\n\n if (-1 < index) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n\n } else {\n if (value) {\n appendTo(dict, decode(value), '');\n }\n }\n }\n }\n\n return dict;\n }\n\n function appendTo(dict, name, value) {\n var val = typeof value === 'string' ? value : (\n value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)\n );\n\n // #47 Prevent using `hasOwnProperty` as a property name\n if (hasOwnProperty(dict, name)) {\n dict[name].push(val);\n } else {\n dict[name] = [val];\n }\n }\n\n function isArray(val) {\n return !!val && '[object Array]' === Object.prototype.toString.call(val);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasScript = exports.loadScript = void 0;\nrequire(\"url-search-params-polyfill\");\n/**\n * Load GTM script tag.\n *\n * @param id GTM ID.\n * @param config The config object.\n */\nfunction loadScript(id, config) {\n var _a, _b, _c;\n if (config === void 0) { config = {}; }\n var doc = document;\n var script = doc.createElement(\"script\");\n window.dataLayer = (_a = window.dataLayer) !== null && _a !== void 0 ? _a : [];\n (_b = window.dataLayer) === null || _b === void 0 ? void 0 : _b.push({\n event: \"gtm.js\",\n \"gtm.start\": new Date().getTime(),\n });\n if (!id) {\n return;\n }\n script.async = !config.defer;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n script.defer = Boolean(config.defer || config.compatibility);\n if (config.nonce) {\n script.nonce = config.nonce;\n }\n var queryString = new URLSearchParams(__assign({ id: id }, ((_c = config.queryParams) !== null && _c !== void 0 ? _c : {})));\n script.src = \"https://www.googletagmanager.com/gtm.js?\" + queryString;\n doc.body.appendChild(script);\n}\nexports.loadScript = loadScript;\n/**\n * Check if GTM script is in the document.\n *\n * @returns `true` if in the `document` is a `script` with `src` containing `googletagmanager.com/gtm.js`, otherwise `false`.\n */\nfunction hasScript() {\n return Array.from(document.getElementsByTagName(\"script\")).some(function (script) {\n return script.src.includes(\"googletagmanager.com/gtm.js\");\n });\n}\nexports.hasScript = hasScript;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar config_1 = require(\"./config\");\nvar utils_1 = require(\"./utils\");\n/**\n * The Vue GTM Plugin main class.\n */\nvar VueGtmPlugin = /** @class */ (function () {\n /**\n * Constructs a new `VueGTMPlugin`.\n *\n * @param id A GTM Container ID.\n * @param options Options.\n */\n function VueGtmPlugin(id, options) {\n if (options === void 0) { options = config_1.DEFAULT_CONFIG; }\n this.id = id;\n this.options = options;\n /**\n * Whether the script is running in a browser or not.\n *\n * You can override this function if you need to.\n *\n * @returns `true` if the script runs in browser context.\n */\n this.isInBrowserContext = function () { return typeof window !== \"undefined\"; };\n }\n /**\n * Check if plugin is enabled.\n *\n * @returns `true` if the plugin is enabled, otherwise `false`.\n */\n VueGtmPlugin.prototype.enabled = function () {\n var _a;\n return (_a = this.options.enabled) !== null && _a !== void 0 ? _a : true;\n };\n /**\n * Enable or disable plugin.\n *\n * When enabling with this function, the script will be attached to the `document` if:\n *\n * - the script runs in browser context\n * - the `document` doesn't have the script already attached\n * - the `loadScript` option is set to `true`\n *\n * @param enabled `true` to enable, `false` to disable. Default: `true`.\n */\n VueGtmPlugin.prototype.enable = function (enabled) {\n var _this = this;\n if (enabled === void 0) { enabled = true; }\n this.options.enabled = enabled;\n if (this.isInBrowserContext() && enabled && !utils_1.hasScript() && this.options.loadScript) {\n if (Array.isArray(this.id)) {\n this.id.forEach(function (id) {\n if (typeof id === \"string\") {\n utils_1.loadScript(id, {\n defer: _this.options.defer,\n compatibility: _this.options.compatibility,\n queryParams: _this.options.queryParams,\n });\n }\n else {\n utils_1.loadScript(id.id, {\n defer: _this.options.defer,\n compatibility: _this.options.compatibility,\n queryParams: id.queryParams,\n });\n }\n });\n }\n else {\n utils_1.loadScript(this.id, {\n defer: this.options.defer,\n compatibility: this.options.compatibility,\n queryParams: this.options.queryParams,\n });\n }\n }\n };\n /**\n * Check if plugin is in debug mode.\n *\n * @returns `true` if the plugin is in debug mode, otherwise `false`.\n */\n VueGtmPlugin.prototype.debugEnabled = function () {\n var _a;\n return (_a = this.options.debug) !== null && _a !== void 0 ? _a : false;\n };\n /**\n * Enable or disable debug mode.\n *\n * @param enable `true` to enable, `false` to disable.\n */\n VueGtmPlugin.prototype.debug = function (enable) {\n this.options.debug = enable;\n };\n /**\n * Returns the `window.dataLayer` array if the script is running in browser context and the plugin is enabled,\n * otherwise `false`.\n *\n * @returns The `window.dataLayer` if script is running in browser context and plugin is enabled, otherwise `false`.\n */\n VueGtmPlugin.prototype.dataLayer = function () {\n var _a;\n if (this.isInBrowserContext() && this.options.enabled) {\n return (window.dataLayer = (_a = window.dataLayer) !== null && _a !== void 0 ? _a : []);\n }\n return false;\n };\n /**\n * Track a view event with `event: \"content-view\"`.\n *\n * The event will only be send if the script runs in browser context and the if plugin is enabled.\n *\n * If debug mode is enabled, a \"Dispatching TrackView\" is logged,\n * regardless of whether the plugin is enabled or the plugin is being executed in browser context.\n *\n * @param screenName Name of the screen passed as `\"content-view-name\"`.\n * @param path Path passed as `\"content-name\"`.\n * @param additionalEventData Additional data for the event object. `event`, `\"content-name\"` and `\"content-view-name\"` will always be overridden.\n */\n VueGtmPlugin.prototype.trackView = function (screenName, path, additionalEventData) {\n var _a;\n if (additionalEventData === void 0) { additionalEventData = {}; }\n if (this.options.debug) {\n console.log(\"[VueGtm]: Dispatching TrackView\", { screenName: screenName, path: path });\n }\n if (this.isInBrowserContext() && this.options.enabled) {\n var dataLayer = (window.dataLayer = (_a = window.dataLayer) !== null && _a !== void 0 ? _a : []);\n dataLayer.push(__assign(__assign({}, additionalEventData), { event: \"content-view\", \"content-name\": path, \"content-view-name\": screenName }));\n }\n };\n /**\n * Track an event.\n *\n * The event will only be send if the script runs in browser context and the if plugin is enabled.\n *\n * If debug mode is enabled, a \"Dispatching event\" is logged,\n * regardless of whether the plugin is enabled or the plugin is being executed in browser context.\n *\n * @param param0 Object that will be used for configuring the event object passed to GTM.\n * @param param0.event `event`, default to `\"interaction\"` when pushed to `window.dataLayer`.\n * @param param0.category Optional `category`, passed as `target`.\n * @param param0.action Optional `action`, passed as `action`.\n * @param param0.label Optional `label`, passed as `\"target-properties\"`.\n * @param param0.value Optional `value`, passed as `value`.\n * @param param0.noninteraction Optional `noninteraction`, passed as `\"interaction-type\"`.\n */\n VueGtmPlugin.prototype.trackEvent = function (_a) {\n var _b;\n if (_a === void 0) { _a = {}; }\n var event = _a.event, _c = _a.category, category = _c === void 0 ? null : _c, _d = _a.action, action = _d === void 0 ? null : _d, _e = _a.label, label = _e === void 0 ? null : _e, _f = _a.value, value = _f === void 0 ? null : _f, _g = _a.noninteraction, noninteraction = _g === void 0 ? false : _g, rest = __rest(_a, [\"event\", \"category\", \"action\", \"label\", \"value\", \"noninteraction\"]);\n if (this.options.debug) {\n console.log(\"[VueGtm]: Dispatching event\", __assign({ event: event,\n category: category,\n action: action,\n label: label,\n value: value }, rest));\n }\n if (this.isInBrowserContext() && this.options.enabled) {\n var dataLayer = (window.dataLayer = (_b = window.dataLayer) !== null && _b !== void 0 ? _b : []);\n dataLayer.push(__assign({ event: event !== null && event !== void 0 ? event : \"interaction\", target: category, action: action, \"target-properties\": label, value: value, \"interaction-type\": noninteraction }, rest));\n }\n };\n return VueGtmPlugin;\n}());\nexports.default = VueGtmPlugin;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useGtm = exports.createGtm = void 0;\nvar vue_1 = require(\"vue\");\nvar config_1 = require(\"./config\");\nvar plugin_1 = require(\"./plugin\");\nvar utils_1 = require(\"./utils\");\nvar gtmPlugin;\nvar GTM_ID_PATTERN = /^GTM-[0-9A-Z]+$/;\n/**\n * Assert that the given id is a valid GTM Container ID.\n *\n * Tested against pattern: `/^GTM-[0-9A-Z]+$/`.\n *\n * @param id A GTM Container ID.\n */\nfunction assertIsGtmId(id) {\n if (typeof id !== \"string\" || !GTM_ID_PATTERN.test(id)) {\n throw new Error(\"GTM-ID '\" + id + \"' is not valid\");\n }\n}\n/**\n * Installation procedure.\n *\n * @param app The Vue app instance.\n * @param options Configuration options.\n */\nfunction install(app, options) {\n var e_1, _a;\n if (options === void 0) { options = { id: \"\" }; }\n if (Array.isArray(options.id)) {\n try {\n for (var _b = __values(options.id), _c = _b.next(); !_c.done; _c = _b.next()) {\n var idOrObject = _c.value;\n if (typeof idOrObject === \"string\") {\n assertIsGtmId(idOrObject);\n }\n else {\n assertIsGtmId(idOrObject.id);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n assertIsGtmId(options.id);\n }\n // Apply default configuration\n options = __assign(__assign({}, config_1.DEFAULT_CONFIG), options);\n // Add to vue prototype and also from globals\n gtmPlugin = new plugin_1.default(options.id, options);\n app.config.globalProperties.$gtm = gtmPlugin;\n // Handle vue-router if defined\n if (options.vueRouter) {\n void initVueRouterGuard(app, options.vueRouter, options.ignoredViews, options.trackOnNextTick);\n }\n // Load GTM script when enabled\n if (gtmPlugin.options.enabled && gtmPlugin.options.loadScript) {\n if (Array.isArray(options.id)) {\n options.id.forEach(function (id) {\n if (typeof id === \"string\") {\n utils_1.loadScript(id, options);\n }\n else {\n var newConf = __assign({}, options);\n if (id.queryParams != null) {\n newConf.queryParams = __assign(__assign({}, newConf.queryParams), id.queryParams);\n }\n utils_1.loadScript(id.id, newConf);\n }\n });\n }\n else {\n utils_1.loadScript(options.id, options);\n }\n }\n app.provide(\"gtm\", options);\n}\n/**\n * Initialize the router guard.\n *\n * @param app The Vue app instance.\n * @param vueRouter The Vue router instance to attach the guard.\n * @param ignoredViews An array of route name that will be ignored.\n * @param trackOnNextTick Whether or not to call `trackView` in `Vue.nextTick`.\n */\nfunction initVueRouterGuard(app, vueRouter, ignoredViews, trackOnNextTick) {\n if (ignoredViews === void 0) { ignoredViews = []; }\n return __awaiter(this, void 0, void 0, function () {\n var vueRouterModule, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n return [4 /*yield*/, Promise.resolve().then(function () { return require(\"vue-router\"); })];\n case 1:\n vueRouterModule = _b.sent();\n return [3 /*break*/, 3];\n case 2:\n _a = _b.sent();\n console.warn(\"[VueGtm]: You tried to register 'vueRouter' for vue-gtm, but 'vue-router' was not found.\");\n return [2 /*return*/];\n case 3:\n // Flatten routes name\n ignoredViews = ignoredViews.map(function (view) { return view.toLowerCase(); });\n vueRouter.afterEach(function (to, from, failure) {\n var _a, _b, _c, _d, _e;\n // Ignore some routes\n if (typeof to.name !== \"string\" || ignoredViews.indexOf(to.name.toLowerCase()) !== -1) {\n return;\n }\n // Dispatch vue event using meta gtm value if defined otherwise fallback to route name\n var name = to.meta && typeof to.meta.gtm === \"string\" && !!to.meta.gtm ? to.meta.gtm : to.name;\n if (vueRouterModule.isNavigationFailure(failure, vueRouterModule.NavigationFailureType.aborted)) {\n if (gtmPlugin === null || gtmPlugin === void 0 ? void 0 : gtmPlugin.debugEnabled()) {\n console.log(\"[VueGtm]: '\" + name + \"' not tracked due to navigation aborted\");\n }\n }\n else if (vueRouterModule.isNavigationFailure(failure, vueRouterModule.NavigationFailureType.cancelled)) {\n if (gtmPlugin === null || gtmPlugin === void 0 ? void 0 : gtmPlugin.debugEnabled()) {\n console.log(\"[VueGtm]: '\" + name + \"' not tracked due to navigation cancelled\");\n }\n }\n var additionalEventData = (_b = (_a = to.meta) === null || _a === void 0 ? void 0 : _a.gtmAdditionalEventData) !== null && _b !== void 0 ? _b : {};\n var baseUrl = (_e = (_d = (_c = vueRouter.options) === null || _c === void 0 ? void 0 : _c.history) === null || _d === void 0 ? void 0 : _d.base) !== null && _e !== void 0 ? _e : \"\";\n var fullUrl = baseUrl;\n if (!fullUrl.endsWith(\"/\")) {\n fullUrl += \"/\";\n }\n fullUrl += to.fullPath.startsWith(\"/\") ? to.fullPath.substr(1) : to.fullPath;\n if (trackOnNextTick) {\n void vue_1.nextTick(function () {\n gtmPlugin === null || gtmPlugin === void 0 ? void 0 : gtmPlugin.trackView(name, fullUrl, additionalEventData);\n });\n }\n else {\n gtmPlugin === null || gtmPlugin === void 0 ? void 0 : gtmPlugin.trackView(name, fullUrl, additionalEventData);\n }\n });\n return [2 /*return*/];\n }\n });\n });\n}\n/**\n * Create the Vue GTM instance.\n *\n * @param options Options.\n * @returns The Vue GTM plugin instance.\n */\nfunction createGtm(options) {\n return { install: function (app) { return install(app, options); } };\n}\nexports.createGtm = createGtm;\nvar _default = { install: install };\nexports.default = _default;\n/**\n * Returns GTM plugin instance to be used via Composition API inside setup method.\n *\n * @returns The Vue GTM instance if the it was installed, otherwise `undefined`.\n */\nfunction useGtm() {\n return gtmPlugin;\n}\nexports.useGtm = useGtm;\n","\n \n\n\n\n","import { PhoneDto, SendPhoneConfirmationDto, VerifyPhoneConfirmationDto, VerifyPhoneConfirmationResultDto } from '.';\nimport axios from 'axios';\n\nexport class ProfileService {\n sendPhoneConfirmation(phone: PhoneDto, recaptchaToken: string): Promise {\n return new Promise((resolve, reject) => {\n axios\n .post('/api/bff/profile/phone-confirmation', { phone, recaptchaToken } satisfies SendPhoneConfirmationDto)\n .then(() => resolve())\n .catch(reject);\n });\n }\n\n verifyPhoneConfirmation(phone: PhoneDto, code: string, recaptchaToken: string): Promise {\n return new Promise((resolve, reject) => {\n axios\n .post('/api/bff/profile/phone-confirmation/verification', {\n phone,\n code,\n recaptchaToken\n } satisfies VerifyPhoneConfirmationDto)\n .then(response => resolve(response.data.verified || false))\n .catch(reject);\n });\n }\n}\n","import { computed, reactive, ref, toRefs } from 'vue';\nimport axios, { isAxiosError } from 'axios';\nimport { defineStore } from 'pinia';\nimport { Claim, GetUserResponseDto, UserDto } from '.';\nimport { ProfileService, GetProfileResponseDto } from '../profile';\nimport { ProfileInfo } from '../../models';\nimport { MenuPageLink } from '../../composables';\nimport { CustomError } from '../common';\n\nconst initialUser: UserDto = {\n isLoggedIn: false,\n name: '',\n isEmailConfirmed: false,\n isPhoneNumberConfirmed: false,\n twoFactorEnabled: false\n};\nconst initialProfile: ProfileInfo = { firstName: '', lastName: '', email: '', displayName: '', profileExists: false };\nconst initialClaims: Claim[] = [];\n\nconst useUserStore = defineStore('userStore', () => {\n const profileService = new ProfileService();\n\n const state = reactive({\n user: initialUser,\n claims: initialClaims,\n profile: initialProfile\n });\n\n const isLoading = ref(false);\n const isRequesting = ref(false);\n const isVerifying = ref(false);\n const isLoggedIn = computed(() => state.user.isLoggedIn);\n const isPhoneNumberConfirmed = computed(() => state.user.isPhoneNumberConfirmed);\n const getProfile = computed(() => state.profile);\n\n function getClaim(name: string) {\n return state.claims.find(x => x.type == name)!.value;\n }\n\n async function loadUserSilent() {\n const { data, status } = await axios.get('/bff/user', {\n headers: {\n 'X-CSRF': '1'\n },\n validateStatus: function (status) {\n return (status >= 200 && status < 300) || status == 401; // allow 401 - silent-login will handle it\n }\n });\n\n if (status != 200) {\n return;\n }\n\n state.claims = data;\n state.user = {\n isLoggedIn: true,\n name: getClaim('name'),\n isEmailConfirmed: false,\n isPhoneNumberConfirmed: false,\n twoFactorEnabled: false\n };\n\n state.profile.displayName = state.user.name;\n }\n\n async function loadProfile(profilePage?: Record) {\n if (!state.user.isLoggedIn) return;\n\n const { data, status } = await axios.get('/api/bff/profile', {\n headers: {\n 'X-CSRF': '1'\n },\n validateStatus: function (status) {\n return (status >= 200 && status < 300) || status == 404; // allow 404 - profile not created\n }\n });\n\n if (status != 200) {\n return;\n }\n\n state.profile.profileExists = true;\n state.profile.firstName = data.firstName;\n state.profile.lastName = data.lastName;\n state.profile.email = data.email;\n state.profile.displayName = `${data.firstName} ${data.lastName}`;\n\n if (profilePage) {\n state.profile.profilePage = profilePage;\n }\n }\n\n async function loadUser() {\n if (!state.user.isLoggedIn) return;\n\n const { data, status } = await axios.get('/api/bff/profile/user', {\n headers: {\n 'X-CSRF': '1'\n },\n validateStatus: function (status) {\n return (status >= 200 && status < 300) || status == 404; // allow 404 - profile not created\n }\n });\n\n if (status != 200) return;\n\n state.user.isEmailConfirmed = data.emailConfirmed;\n state.user.isPhoneNumberConfirmed = data.phoneNumberConfirmed;\n state.user.phone = data.phone;\n state.user.twoFactorEnabled = data.twoFactorEnabled;\n }\n\n async function requestForPhoneVerification(phone?: { countryCode: string; number: string }, recaptchaToken?: string) {\n isRequesting.value = true;\n\n if (!recaptchaToken) {\n throw new CustomError('ProfileError', '$vuetify.phoneVerification.recaptchaTokenMissing');\n }\n\n try {\n // if logged in, use user phone number\n // else use provided phone number\n if (!phone && isLoggedIn.value) {\n phone = state.user.phone;\n }\n\n // if phone number is missing, throw error\n if (!phone?.countryCode || !phone.number) {\n throw new CustomError('ProfileError', '$vuetify.phoneVerification.missingParams');\n }\n\n isLoading.value = true;\n\n await profileService.sendPhoneConfirmation(phone, recaptchaToken);\n } catch (e) {\n console.error(e);\n\n if (isAxiosError(e)) {\n if (e.response?.status === 429) {\n throw new CustomError('ProfileError', '$vuetify.phoneVerification.tooManyRequests');\n }\n\n throw new CustomError(\n 'ProfileError',\n e.response?.data || '$vuetify.phoneVerification.requestForPhoneVerificationDefaultError'\n );\n }\n } finally {\n isLoading.value = false;\n isRequesting.value = false;\n }\n }\n\n async function checkPhoneVerificationCode(\n code: string,\n phone?: { countryCode: string; number: string },\n recaptchaToken?: string\n ): Promise {\n isVerifying.value = true;\n\n if (!recaptchaToken) {\n throw new CustomError('ProfileError', '$vuetify.phoneVerification.recaptchaTokenMissing');\n }\n\n try {\n // if logged in, use user phone number\n // else use provided phone number\n if (!phone && isLoggedIn.value) {\n phone = state.user.phone;\n }\n\n // if phone number is missing, throw error\n if (!phone?.countryCode || !phone.number || !code) {\n throw new CustomError('ProfileError', '$vuetify.phoneVerification.missingParams');\n }\n\n isLoading.value = true;\n const result = await profileService.verifyPhoneConfirmation(phone, code, recaptchaToken);\n\n if (isLoggedIn.value) {\n state.user.isPhoneNumberConfirmed = result;\n }\n\n return result;\n } catch (e) {\n console.error(e);\n\n if (isAxiosError(e)) {\n if (e.response?.status === 429) {\n throw new CustomError('ProfileError', '$vuetify.phoneVerification.tooManyRequests');\n }\n\n throw new CustomError(\n 'ProfileError',\n e.response?.data || '$vuetify.phoneVerification.checkPhoneVerificationCodeDefaultError'\n );\n }\n\n return false;\n } finally {\n isLoading.value = false;\n isVerifying.value = false;\n }\n }\n\n return {\n ...toRefs(state),\n isLoading,\n isRequesting,\n isVerifying,\n isLoggedIn,\n getProfile,\n isPhoneNumberConfirmed,\n loadUserSilent,\n loadProfile,\n loadUser,\n requestForPhoneVerification,\n checkPhoneVerificationCode\n };\n});\n\nexport default useUserStore;\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d|3(?:(?:[0-3589]\\\\d|6[1-9]|7[0-35-9])\\\\d|4(?:[0-578]\\\\d|90)))\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|3\\\\d\\\\d)|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|2[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[02-4679]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"(?:01\\\\d|[24-689])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"0\"]]]],\"BL\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[235]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-46-9]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:2[125-9]|33|44|66|77|88)|6(?:22|33))[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"5\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\",\"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:46|60\\\\d\\\\d)\\\\d{6}|(?:1\\\\d|[39])\\\\d{9}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"46\"]],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6|90\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|91\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[56]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-389]|94[0-4])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|5[0-25-9]|7[02-8]|8[0-24-9]|9[0-37-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[03568]\",\"15(?:[0568]|31)\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{8})\",\"$1 $2\",[\"1\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{5})\",\"$1\",[\"20[2-59]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[68])0|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-35])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|50))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:[56]94\\\\d|7093)\\\\d{5}|(?:80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-8]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6|7[245]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"(?:[2-489]\\\\d|55)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]|43\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\",[6,7,8,9,10,11]],[\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],\"0\",0,\"(000[259]\\\\d{6})$|(?:(?:003768)0?)|0\",\"$1\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[0135-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:[245]\\\\d|33|77|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4[67]|[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(0-$1)\",1]],\"0\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-46-9]|3[3-9]|9)|8(?:0[89]|92)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:2(?:[0-25-79]\\\\d|3[1-578]|4[02-46-8]|8[0235-7])|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[014-9]|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[0167]\\\\d|2[0-467]|5[0-3]|8[0-5]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|452|678|86\",\"[12]|452|6788|86\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"(?:596\\\\d|7091)\\\\d{5}|(?:69|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]|8(?:0[6-9]|[36])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[0467]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"38\\\\d{6}|[78]\\\\d{9,13}|(?:20|9\\\\d)\\\\d{8}\",[8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[129]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[4-7]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|8|90\",\"50(?:[0367]|88)|8|90\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[589]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"[45]\\\\d{5}|(?:708|8\\\\d\\\\d)\\\\d{6}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[16]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],\"RE\":[\"262\",\"00\",\"709\\\\d{6}|(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-6]))\\\\d{4}\"],[\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"[6-9]\\\\d{6}|[1-6]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"(?:[2489]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-9]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"(?:2|90)4|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[0-35-9]|7[67]|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-359]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-4]|5[1-3]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[59]\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[689]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"[0-57-9]\\\\d{8}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"44[02-479]|[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[1245]|3[12])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"(?:[1-6]\\\\d|71)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[67]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|61[06])\",\"5(?:[0-59]|61[06]1)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:3052(?:0[0-8]|[1-9]\\\\d)|5056(?:[0-35-9]\\\\d|4[0-468]))\\\\d{4}|(?:2742|305[3-9]|472[247-9]|505[2-57-9]|983[2-47-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-47-9]|1[02-9]|2[0135-79]|3[0-24679]|4[167]|5[0-2]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[068]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,0,0,[\"305209\\\\d{4}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"0004\\\\d{2,9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",[6,7,8,9,10,11,12,13],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[49]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"00\",\"(?:20|33|[5-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-9]\"]]]],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11,12],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[357-9]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72|8\\\\d{4})\\\\d{4}|[89]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[47-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2|39\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7,10})\",\"$1 $2\",[\"3\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"7093\\\\d{5}|(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"269(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0)\\\\d{4}\"],[\"(?:639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\\\d{4}\"],[\"80\\\\d{7}\"],0,0,0,0,0,[\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|[579]\\\\d|63)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[579]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[235-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"],0,0,0,0,0,0,[\"2\\\\d{8}\",[9]]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"6\\\\d{9}|[0-36-9]\\\\d{8}\",[9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-37-9]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|51\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|50\\\\d{3})\\\\d{7}\",[7,8,9,10,12]],0,0,0,[\"348[57]\\\\d{7}\",[11]],0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\nexport default function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n}\n//# sourceMappingURL=semver-compare.js.map","var objectConstructor = {}.constructor;\nexport default function isObject(object) {\n return object !== undefined && object !== null && object.constructor === objectConstructor;\n}\n//# sourceMappingURL=isObject.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport compare from './tools/semver-compare.js';\nimport isObject from './helpers/isObject.js'; // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\nvar CALLING_CODE_REG_EXP = /^\\d+$/;\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata = /*#__PURE__*/function () {\n function Metadata(metadata) {\n _classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n // The test case could be found by searching for \"nonGeographical\".\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n // Supports just passing `callingCode` as the first argument.\n if (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\n callingCode = countryCode;\n countryCode = null;\n }\n\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n // In that metadata, there was no concept of \"non-geographic\" metadata\n // so metadata for `001` country code was stored along with other countries.\n // The test case can be found by searching for:\n // \"should work around `nonGeographic` metadata not existing\".\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n return this.selectNumberingPlan(callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\nexport { Metadata as default };\n\nvar NumberingPlan = /*#__PURE__*/function () {\n function NumberingPlan(metadata, globalMetadataObject) {\n _classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n } // Is always present.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n } // Is only present when a country supports multiple IDD prefixes.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n } // \"possible length\" data is always present in Google's metadata.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && getType(this.types(), _type2)) {\n return new Type(getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format = /*#__PURE__*/function () {\n function Format(format, metadata) {\n _classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()) // In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\n // when `national_prefix_formatting_rule` is not present.\n // So, `true` or `false` are returned explicitly here, so that\n // `0` number isn't returned.\n ? true : false;\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type = /*#__PURE__*/function () {\n function Type(type, metadata) {\n _classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nexport function validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to `country_calling_codes` in `1.0.18`.\n // For that reason, it's not used in this detection algorithm.\n // Instead, it detects by `countries: {}` property existence.\n\n\n if (!isObject(metadata) || !isObject(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar typeOf = function typeOf(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nexport function getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nexport function getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nexport function isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries.hasOwnProperty(country);\n}\n\nfunction setVersion(metadata) {\n var version = metadata.version;\n\n if (typeof version === 'number') {\n this.v1 = version === 1;\n this.v2 = version === 2;\n this.v3 = version === 3;\n this.v4 = version === 4;\n } else {\n if (!version) {\n this.v1 = true;\n } else if (compare(version, V3) === -1) {\n this.v2 = true;\n } else if (compare(version, V4) === -1) {\n this.v3 = true;\n } else {\n this.v4 = true;\n }\n }\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map","import mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, metadata) {\n return checkNumberLengthForType(nationalNumber, undefined, metadata);\n} // Checks whether a number is possible for the country based on its length.\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map","import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n } // Old metadata (< 1.0.18) had no \"possible length\" data.\n\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossible.js.map","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nexport default function matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n//# sourceMappingURL=matchesEntirely.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returns an empty object — `{}` —\n // that means that the phone number is malformed,\n // so it can't possibly be valid.\n\n if (!input.country && !input.countryCallingCode) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\n // For example, for \"US\" country.\n // Old metadata (< `1.0.18`) had a specific \"types\" data structure\n // that happened to be `undefined` for `MOBILE` in that case.\n // Newer metadata (>= `1.0.18`) has another data structure that is\n // not `undefined` for `MOBILE` in that case (it's just an empty array).\n // So this `if` is just for backwards compatibility with old metadata.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(NON_FIXED_LINE_PHONE_TYPES), _step; !(_step = _iterator()).done;) {\n var type = _step.value;\n\n if (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\n return type;\n }\n }\n}\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n}\n//# sourceMappingURL=getNumberType.js.map","import Metadata from './metadata.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport getNumberType from './helpers/getNumberType.js';\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nexport default function isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(nationalNumber, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=isValid.js.map","import Metadata from '../metadata.js';\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param {string} callingCode — Calling code.\r\n * @param {string} nationalNumber — National (significant) number.\r\n * @param {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\n\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\n var _metadata = new Metadata(metadata);\n\n var possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return [];\n }\n\n return possibleCountries.filter(function (country) {\n return couldNationalNumberBelongToCountry(nationalNumber, country, metadata);\n });\n}\n\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\n var _metadata = new Metadata(metadata);\n\n _metadata.selectNumberingPlan(country);\n\n if (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\n return true;\n }\n\n return false;\n}\n//# sourceMappingURL=getPossibleCountriesForNumber.js.map","// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nexport var MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nexport var MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map","import Metadata from '../metadata.js';\nimport { VALID_DIGITS } from '../constants.js';\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // If there're any digits after an IDD prefix,\n // then those digits are a country calling code.\n // Since no country code starts with a `0`,\n // the code below validates that the next digit (if present) is not `0`.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=stripIddPrefix.js.map","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\n if (number && metadata.numberingPlan.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\n // If a `national_prefix_for_parsing` has any \"capturing groups\"\n // then it means that the national (significant) number is equal to\n // those \"capturing groups\" transformed via `national_prefix_transform_rule`,\n // and nothing could be said about the actual national prefix:\n // what is it and was it even there.\n // If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\n // then everything it matches is a national prefix.\n // To determine whether `national_prefix_for_parsing` matched any\n // \"capturing groups\", the value of the result of calling `.exec()`\n // is looked at, and if it has non-undefined values where there're\n // \"capturing groups\" in the regular expression, then it means\n // that \"capturing groups\" have been matched.\n // It's not possible to tell whether there'll be any \"capturing gropus\"\n // before the matching process, because a `national_prefix_for_parsing`\n // could exhibit both behaviors.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n var hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount];\n\n if (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // If there's more than one captured group,\n // then carrier code is the second one.\n\n if (capturedGroupsCount > 1) {\n carrierCode = prefixMatch[1];\n }\n } // If there're no \"capturing groups\",\n // or if there're \"capturing groups\" but no\n // `national_prefix_transform_rule`,\n // then just strip the national prefix from the number,\n // and possibly a carrier code.\n // Seems like there could be more.\n else {\n // `prefixBeforeNationalNumber` is the whole substring matched by\n // the `national_prefix_for_parsing` regular expression.\n // There seem to be no guarantees that it's just a national prefix.\n // For example, if there's a carrier code, it's gonna be a\n // part of `prefixBeforeNationalNumber` too.\n var prefixBeforeNationalNumber = prefixMatch[0];\n nationalNumber = number.slice(prefixBeforeNationalNumber.length); // If there's at least one captured group,\n // then carrier code is the first one.\n\n if (hasCapturedGroups) {\n carrierCode = prefixMatch[1];\n }\n } // Tries to guess whether a national prefix was present in the input.\n // This is not something copy-pasted from Google's library:\n // they don't seem to have an equivalent for that.\n // So this isn't an \"officially approved\" way of doing something like that.\n // But since there seems no other existing method, this library uses it.\n\n\n var nationalPrefix;\n\n if (hasCapturedGroups) {\n var possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1]);\n var possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup); // Example: an Argentinian (AR) phone number `0111523456789`.\n // `prefixMatch[0]` is `01115`, and `$1` is `11`,\n // and the rest of the phone number is `23456789`.\n // The national number is transformed via `9$1` to `91123456789`.\n // National prefix `0` is detected being present at the start.\n // if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\n\n if (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\n nationalPrefix = metadata.numberingPlan.nationalPrefix();\n }\n } else {\n nationalPrefix = prefixMatch[0];\n }\n\n return {\n nationalNumber: nationalNumber,\n nationalPrefix: nationalPrefix,\n carrierCode: carrierCode\n };\n }\n }\n\n return {\n nationalNumber: number\n };\n}\n//# sourceMappingURL=extractNationalNumberFromPossiblyIncompleteNumber.js.map","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport checkNumberLength from './checkNumberLength.js';\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nexport default function extractNationalNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata),\n carrierCode = _extractNationalNumbe.carrierCode,\n nationalNumber = _extractNationalNumbe.nationalNumber;\n\n if (nationalNumber !== number) {\n if (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n } // Check the national (significant) number length after extracting national prefix and carrier code.\n // Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\n\n\n if (metadata.possibleLengths()) {\n // The number remaining after stripping the national prefix and carrier code\n // should be long enough to have a possible length for the country.\n // Otherwise, don't strip the national prefix and carrier code,\n // since the original number could be a valid number.\n // This check has been copy-pasted \"as is\" from Google's original library:\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n // It doesn't check for the \"possibility\" of the original `number`.\n // I guess it's fine not checking that one. It works as is anyway.\n if (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n} // In some countries, the same digit could be a national prefix\n// or a leading digit of a valid phone number.\n// For example, in Russia, national prefix is `8`,\n// and also `800 555 35 35` is a valid number\n// in which `8` is not a national prefix, but the first digit\n// of a national (significant) number.\n// Same's with Belarus:\n// `82004910060` is a valid national (significant) number,\n// but `2004910060` is not.\n// To support such cases (to prevent the code from always stripping\n// national prefix), a condition is imposed: a national prefix\n// is not extracted when the original number is \"viable\" and the\n// resultant number is not, a \"viable\" national number being the one\n// that matches `national_number_pattern`.\n\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\n // The equivalent in Google's code is:\n // https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\n if (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\n return false;\n } // This \"is possible\" national number (length) check has been commented out\n // because it's superceded by the (effectively) same check done in the\n // `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\n // In other words, why run the same check twice if it could only be run once.\n // // Check the national (significant) number length after extracting national prefix and carrier code.\n // // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\n // // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\n // if (metadata.possibleLengths()) {\n // \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\n // \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\n // \t\treturn false\n // \t}\n // }\n\n\n return true;\n}\n\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\n switch (checkNumberLength(nationalNumber, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n return false;\n\n default:\n return true;\n }\n}\n//# sourceMappingURL=extractNationalNumber.js.map","import Metadata from '../metadata.js';\nimport matchesEntirely from './matchesEntirely.js';\nimport extractNationalNumber from './extractNationalNumber.js';\nimport checkNumberLength from './checkNumberLength.js';\nimport getCountryCallingCode from '../getCountryCallingCode.js';\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _extractNationalNumbe = extractNationalNumber(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _extractNationalNumbe.nationalNumber;\n\n var _extractNationalNumbe2 = extractNationalNumber(number, metadata),\n nationalNumber = _extractNationalNumbe2.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLength(nationalNumber, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js.map","import stripIddPrefix from './stripIddPrefix.js';\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js';\nimport Metadata from '../metadata.js';\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js';\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nexport default function extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n }\n\n var isNumberWithIddPrefix; // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n isNumberWithIddPrefix = true;\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n shorterNumber = _extractCountryCallin.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n // No need to set it to `UNSPECIFIED`. It can be just `undefined`.\n // countryCallingCodeSource: 'UNSPECIFIED',\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(_countryCallingCode);\n return {\n countryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n} // The possible values for the returned `countryCallingCodeSource` are:\n//\n// Copy-pasted from:\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\n//\n// // The source from which the country_code is derived. This is not set in the\n// // general parsing method, but in the method that parses and keeps raw_input.\n// // New fields could be added upon request.\n// enum CountryCodeSource {\n// // Default value returned if this is not set, because the phone number was\n// // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\n// // return false if this is the case.\n// UNSPECIFIED = 0;\n//\n// // The country_code is derived based on a phone number with a leading \"+\",\n// // e.g. the French number \"+33 1 42 68 53 00\".\n// FROM_NUMBER_WITH_PLUS_SIGN = 1;\n//\n// // The country_code is derived based on a phone number with a leading IDD,\n// // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\n// FROM_NUMBER_WITH_IDD = 5;\n//\n// // The country_code is derived based on a phone number without a leading\n// // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\n// // supplied as France.\n// FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\n//\n// // The country_code is derived NOT based on the phone number itself, but\n// // from the defaultCountry parameter provided in the parsing function by the\n// // clients. This happens mostly for numbers written in the national format\n// // (without country code). For example, this would be set when parsing the\n// // French number \"01 42 68 53 00\", when defaultCountry is supplied as\n// // France.\n// FROM_DEFAULT_COUNTRY = 20;\n// }\n//# sourceMappingURL=extractCountryCallingCode.js.map","import { VALID_PUNCTUATION } from '../constants.js'; // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains ``s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'; // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\n\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map","import Metadata from '../metadata.js';\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nexport default function getIddPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (countryMetadata.defaultIDDPrefix()) {\n return countryMetadata.defaultIDDPrefix();\n }\n\n if (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n}\n//# sourceMappingURL=getIddPrefix.js.map","import { VALID_DIGITS } from '../../constants.js'; // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext=';\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\n\nvar getExtensionDigitsPattern = function getExtensionDigitsPattern(maxLength) {\n return \"([\".concat(VALID_DIGITS, \"]{1,\").concat(maxLength, \"})\");\n};\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\n\n\nexport default function createExtensionPattern(purpose) {\n // We cap the maximum length of an extension based on the ambiguity of the way\n // the extension is prefixed. As per ITU, the officially allowed length for\n // extensions is actually 40, but we don't support this since we haven't seen real\n // examples and this introduces many false interpretations as the extension labels\n // are not standardized.\n\n /** @type {string} */\n var extLimitAfterExplicitLabel = '20';\n /** @type {string} */\n\n var extLimitAfterLikelyLabel = '15';\n /** @type {string} */\n\n var extLimitAfterAmbiguousChar = '9';\n /** @type {string} */\n\n var extLimitWhenNotSure = '6';\n /** @type {string} */\n\n var possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\xA0\\\\t,]*\"; // Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\n\n /** @type {string} */\n\n var possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\";\n /** @type {string} */\n\n var optionalExtnSuffix = \"#?\"; // Here the extension is called out in more explicit way, i.e mentioning it obvious\n // patterns like \"ext.\".\n\n /** @type {string} */\n\n var explicitExtLabels = \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\"; // One-character symbols that can be used to indicate an extension, and less\n // commonly used or more ambiguous extension labels.\n\n /** @type {string} */\n\n var ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\"; // When extension is not separated clearly.\n\n /** @type {string} */\n\n var ambiguousSeparator = \"[- ]+\"; // This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\n // comma as extension label may have it.\n\n /** @type {string} */\n\n var possibleSeparatorsNumberExtLabelNoComma = \"[ \\xA0\\\\t]*\"; // \",,\" is commonly used for auto dialling the extension when connected. First\n // comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\n // not repeat it here. Semi-colon works in Iphone and Android also to pop up a\n // button with the extension number following.\n\n /** @type {string} */\n\n var autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\n /** @type {string} */\n\n var rfcExtn = RFC3966_EXTN_PREFIX + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\n /** @type {string} */\n\n var explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterExplicitLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix;\n /** @type {string} */\n\n var americanStyleExtnWithSuffix = ambiguousSeparator + getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\n /** @type {string} */\n\n var autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterLikelyLabel) + optionalExtnSuffix;\n /** @type {string} */\n\n var onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma + \"(?:,)+\" + possibleCharsAfterExtLabel + getExtensionDigitsPattern(extLimitAfterAmbiguousChar) + optionalExtnSuffix; // The first regular expression covers RFC 3966 format, where the extension is added\n // using \";ext=\". The second more generic where extension is mentioned with explicit\n // labels like \"ext:\". In both the above cases we allow more numbers in extension than\n // any other extension labels. The third one captures when single character extension\n // labels or less commonly used labels are used. In such cases we capture fewer\n // extension digits in order to reduce the chance of falsely interpreting two\n // numbers beside each other as a number + extension. The fourth one covers the\n // special case of American numbers where the extension is written with a hash\n // at the end, such as \"- 503#\". The fifth one is exclusively for extension\n // autodialling formats which are used when dialling and in this case we accept longer\n // extensions. The last one is more liberal on the number of commas that acts as\n // extension labels, so we have a strict cap on the number of digits in such extensions.\n\n return rfcExtn + \"|\" + explicitExtn + \"|\" + ambiguousExtn + \"|\" + americanStyleExtnWithSuffix + \"|\" + autoDiallingExtn + \"|\" + onlyCommasExtn;\n}\n//# sourceMappingURL=createExtensionPattern.js.map","import { MIN_LENGTH_FOR_NSN, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS } from '../constants.js';\nimport createExtensionPattern from './extension/createExtensionPattern.js'; // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nexport var VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // This regular expression isn't present in Google's `libphonenumber`\n// and is only used to determine whether the phone number being input\n// is too short for it to even consider it a \"valid\" number.\n// This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nvar VALID_PHONE_NUMBER_START_REG_EXP = new RegExp('^' + '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){1,2}' + '$', 'i');\nexport var VALID_PHONE_NUMBER_WITH_EXTENSION = VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + createExtensionPattern() + ')?'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER_WITH_EXTENSION + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nexport default function isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n} // This is just a way to differentiate between a really invalid phone\n// number like \"abcde\" and a valid phone number that a user has just\n// started inputting, like \"+1\" or \"1\": both these cases would be\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\n// library can provide a more detailed error message — whether it's\n// really \"not a number\", or is it just a start of a valid phone number.\n\nexport function isViablePhoneNumberStart(number) {\n return VALID_PHONE_NUMBER_START_REG_EXP.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport isViablePhoneNumber from './isViablePhoneNumber.js'; // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nexport function parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = _createForOfIteratorHelperLoose(text.split(';')), _step; !(_step = _iterator()).done;) {\n var part = _step.value;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nexport function formatRFC3966(_ref) {\n var number = _ref.number,\n ext = _ref.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js';\nimport Metadata, { getCountryCallingCode } from './metadata.js';\nimport getIddPrefix from './helpers/getIddPrefix.js';\nimport { formatRFC3966 } from './helpers/RFC3966.js';\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n }\n};\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\n\nexport default function formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n // For reference, here's Google's IDD formatter:\n // https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\n // Not saying that this IDD formatter replicates it 1:1, but it seems to work.\n // Who would even need to format phone numbers in IDD format anyway?\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var formattedNumber = formatIDD(nationalNumber, input.carrierCode, countryCallingCode, options.fromCountry, metadata);\n return addExtension(formattedNumber, input.ext, metadata, options.formatExtension);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n}\n\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, {\n useInternationalFormat: formatAs === 'INTERNATIONAL',\n withNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options && options.nationalPrefix === false ? false : true,\n carrierCode: carrierCode,\n metadata: metadata\n });\n}\n\nexport function chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = _createForOfIteratorHelperLoose(availableFormats), _step; !(_step = _iterator()).done;) {\n var format = _step.value;\n\n // Validate leading digits.\n // The test case for \"else path\" could be found by searching for\n // \"format.leadingDigitsPatterns().length === 0\".\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry, metadata) {\n var fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata); // When calling within the same country calling code.\n\n if (fromCountryCallingCode === countryCallingCode) {\n var formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata); // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n\n if (countryCallingCode === '1') {\n return countryCallingCode + ' ' + formattedNumber;\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formattedNumber;\n }\n\n var iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata);\n\n if (iddPrefix) {\n return \"\".concat(iddPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata));\n }\n}\n//# sourceMappingURL=format.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport Metadata, { validateMetadata } from './metadata.js';\nimport isPossibleNumber from './isPossible.js';\nimport isValidNumber from './isValid.js'; // import checkNumberLength from './helpers/checkNumberLength.js'\n\nimport getNumberType from './helpers/getNumberType.js';\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport isObject from './helpers/isObject.js';\nimport formatNumber from './format.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber = /*#__PURE__*/function () {\n /**\r\n * @param {string} countryOrCountryCallingCode\r\n * @param {string} nationalNumber\r\n * @param {object} metadata — Metadata JSON\r\n * @return {PhoneNumber}\r\n */\n function PhoneNumber(countryOrCountryCallingCode, nationalNumber, metadata) {\n _classCallCheck(this, PhoneNumber);\n\n // Validate `countryOrCountryCallingCode` argument.\n if (!countryOrCountryCallingCode) {\n throw new TypeError('First argument is required');\n }\n\n if (typeof countryOrCountryCallingCode !== 'string') {\n throw new TypeError('First argument must be a string');\n } // In case of public API use: `constructor(number, metadata)`.\n // Transform the arguments from `constructor(number, metadata)` to\n // `constructor(countryOrCountryCallingCode, nationalNumber, metadata)`.\n\n\n if (typeof countryOrCountryCallingCode === 'string') {\n if (countryOrCountryCallingCode[0] === '+' && !nationalNumber) {\n throw new TypeError('`metadata` argument not passed');\n }\n\n if (isObject(nationalNumber) && isObject(nationalNumber.countries)) {\n metadata = nationalNumber;\n var e164Number = countryOrCountryCallingCode;\n\n if (!E164_NUMBER_REGEXP.test(e164Number)) {\n throw new Error('Invalid `number` argument passed: must consist of a \"+\" followed by digits');\n }\n\n var _extractCountryCallin = extractCountryCallingCode(e164Number, undefined, undefined, metadata),\n _countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n\n nationalNumber = number;\n countryOrCountryCallingCode = _countryCallingCode;\n\n if (!nationalNumber) {\n throw new Error('Invalid `number` argument passed: too short');\n }\n }\n } // Validate `nationalNumber` argument.\n\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` argument is required');\n }\n\n if (typeof nationalNumber !== 'string') {\n throw new TypeError('`nationalNumber` argument must be a string');\n } // Validate `metadata` argument.\n\n\n validateMetadata(metadata); // Initialize properties.\n\n var _getCountryAndCountry = getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadata),\n country = _getCountryAndCountry.country,\n countryCallingCode = _getCountryAndCountry.countryCallingCode;\n\n this.country = country;\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber; // Exclude `metadata` property output from `PhoneNumber.toString()`\n // so that it doesn't clutter the console output of Node.js.\n // Previously, when Node.js did `console.log(new PhoneNumber(...))`,\n // it would output the whole internal structure of the `metadata` object.\n\n this.getMetadata = function () {\n return metadata;\n };\n }\n\n _createClass(PhoneNumber, [{\n key: \"setExt\",\n value: function setExt(ext) {\n this.ext = ext;\n }\n }, {\n key: \"getPossibleCountries\",\n value: function getPossibleCountries() {\n if (this.country) {\n return [this.country];\n }\n\n return getPossibleCountriesForNumber(this.countryCallingCode, this.nationalNumber, this.getMetadata());\n }\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n return isPossibleNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.getMetadata());\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\n // but later it was found out that it doesn't include the possible `TOO_SHORT` result\n // returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\n // so eventually I simply commented out this method from the `PhoneNumber` class\n // and just left the `validatePhoneNumberLength()` function, even though that one would require\n // and additional step to also validate the actual country / calling code of the phone number.\n // validateLength() {\n // \tconst metadata = new Metadata(this.getMetadata())\n // \tmetadata.selectNumberingPlan(this.countryCallingCode)\n // \tconst result = checkNumberLength(this.nationalNumber, metadata)\n // \tif (result !== 'IS_POSSIBLE') {\n // \t\treturn result\n // \t}\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return formatNumber(this, _format, options ? _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }) : {\n v2: true\n }, this.getMetadata());\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\nexport { PhoneNumber as default };\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\n var country;\n var countryCallingCode;\n var metadata = new Metadata(metadataJson); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n if (isCountryCode(countryOrCountryCallingCode)) {\n country = countryOrCountryCallingCode;\n metadata.selectNumberingPlan(country);\n countryCallingCode = metadata.countryCallingCode();\n } else {\n countryCallingCode = countryOrCountryCallingCode;\n /* istanbul ignore if */\n\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(countryCallingCode)) {\n country = '001';\n }\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode\n };\n}\n\nvar E164_NUMBER_REGEXP = /^\\+\\d+$/;\n//# sourceMappingURL=PhoneNumber.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n// https://stackoverflow.com/a/46971044/970769\n// \"Breaking changes in Typescript 2.1\"\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\nvar ParseError = /*#__PURE__*/function (_Error) {\n _inherits(ParseError, _Error);\n\n var _super = _createSuper(ParseError);\n\n function ParseError(code) {\n var _this;\n\n _classCallCheck(this, ParseError);\n\n _this = _super.call(this, code); // Set the prototype explicitly.\n // Any subclass of FooError will have to manually set the prototype as well.\n\n Object.setPrototypeOf(_assertThisInitialized(_this), ParseError.prototype);\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return _createClass(ParseError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nexport { ParseError as default };\n//# sourceMappingURL=ParseError.js.map","import createExtensionPattern from './createExtensionPattern.js'; // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nexport default function extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var numberWithoutExtension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i]) {\n return {\n number: numberWithoutExtension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extractExtension.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nexport function parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nexport default function parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { parseDigit } from './helpers/parseDigits.js';\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nexport default function parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = _createForOfIteratorHelperLoose(string.split('')), _step; !(_step = _iterator()).done;) {\n var character = _step.value;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {function?} emitEvent - An optional \"emit event\" function.\r\n * @return {string?} The parsed character.\r\n */\n\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, emitEvent) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (prevParsedCharacters) {\n // `emitEvent` argument was added to this `export`ed function on Dec 26th, 2023.\n // Any 3rd-party code that used to `import` and call this function before that\n // won't be passing any `emitEvent` argument.\n //\n // The addition of the `emitEvent` argument was to fix the slightly-weird behavior\n // of parsing an input string when the user inputs something like `\"2+7\"\n // https://github.com/catamphetamine/react-phone-number-input/issues/437\n //\n // If the parser encounters an unexpected `+` in a string being parsed\n // then it simply discards that out-of-place `+` and any following characters.\n //\n if (typeof emitEvent === 'function') {\n emitEvent('end');\n }\n\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport Metadata from '../metadata.js';\nimport getNumberType from './getNumberType.js';\nexport default function getCountryByNationalNumber(nationalPhoneNumber, _ref) {\n var countries = _ref.countries,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n // Re-create `metadata` because it will be selecting a `country`.\n metadata = new Metadata(metadata); // const matchingCountries = []\n\n for (var _iterator = _createForOfIteratorHelperLoose(countries), _step; !(_step = _iterator()).done;) {\n var country = _step.value;\n metadata.country(country); // \"Leading digits\" patterns are only defined for about 20% of all countries.\n // By definition, matching \"leading digits\" is a sufficient but not a necessary\n // condition for a phone number to belong to a country.\n // The point of \"leading digits\" check is that it's the fastest one to get a match.\n // https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\n // I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\n // because of the intended use of that feature.\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n // If both the `defaultCountry` and the \"main\" one match the phone number,\n // don't prefer the `defaultCountry` over the \"main\" one.\n // https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\n return country; // // If the `defaultCountry` is among the `matchingCountries` then return it.\n // if (defaultCountry) {\n // \tif (country === defaultCountry) {\n // \t\treturn country\n // \t}\n // \tmatchingCountries.push(country)\n // } else {\n // \treturn country\n // }\n }\n } // // Return the first (\"main\") one of the `matchingCountries`.\n // if (matchingCountries.length > 0) {\n // \treturn matchingCountries[0]\n // }\n\n}\n//# sourceMappingURL=getCountryByNationalNumber.js.map","import getCountryByNationalNumber from './getCountryByNationalNumber.js';\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\nexport default function getCountryByCallingCode(callingCode, _ref) {\n var nationalPhoneNumber = _ref.nationalNumber,\n defaultCountry = _ref.defaultCountry,\n metadata = _ref.metadata;\n\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n }\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return getCountryByNationalNumber(nationalPhoneNumber, {\n countries: possibleCountries,\n defaultCountry: defaultCountry,\n metadata: metadata.metadata\n });\n}\n//# sourceMappingURL=getCountryByCallingCode.js.map","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\n// Example: `\"tel:12133734253;phone-context=+1\"`.\n// This function parses the full phone number from the local number and the `phone-context`\n// when the `phone-context` contains a `+` sign.\nimport { VALID_DIGITS // PLUS_CHARS\n} from '../constants.js';\nexport var PLUS_SIGN = '+';\nvar RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?';\nvar RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')';\nvar RFC3966_GLOBAL_NUMBER_DIGITS_ = '^' + '\\\\' + PLUS_SIGN + RFC3966_PHONE_DIGIT_ + '*' + '[' + VALID_DIGITS + ']' + RFC3966_PHONE_DIGIT_ + '*' + '$';\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\n\nvar RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g'); // In this port of Google's library, we don't accept alpha characters in phone numbers.\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\n\nvar ALPHANUM_ = VALID_DIGITS;\nvar RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar VALID_ALPHA_ = 'a-zA-Z';\nvar RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*';\nvar RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$';\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\n\nvar RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g');\nexport var RFC3966_PREFIX_ = 'tel:';\nexport var RFC3966_PHONE_CONTEXT_ = ';phone-context=';\nexport var RFC3966_ISDN_SUBADDRESS_ = ';isub=';\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\n\nexport default function extractPhoneContext(numberToExtractFrom) {\n var indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_); // If no phone-context parameter is present\n\n if (indexOfPhoneContext < 0) {\n return null;\n }\n\n var phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length; // If phone-context parameter is empty\n\n if (phoneContextStart >= numberToExtractFrom.length) {\n return '';\n }\n\n var phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart); // If phone-context is not the last parameter\n\n if (phoneContextEnd >= 0) {\n return numberToExtractFrom.substring(phoneContextStart, phoneContextEnd);\n } else {\n return numberToExtractFrom.substring(phoneContextStart);\n }\n}\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\n\nexport function isPhoneContextValid(phoneContext) {\n if (phoneContext === null) {\n return true;\n }\n\n if (phoneContext.length === 0) {\n return false;\n } // Does phone-context value match pattern of global-number-digits or domainname.\n\n\n return RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) || RFC3966_DOMAINNAME_PATTERN_.test(phoneContext);\n}\n//# sourceMappingURL=extractPhoneContext.js.map","import extractPhoneContext, { isPhoneContextValid, PLUS_SIGN, RFC3966_PREFIX_, RFC3966_PHONE_CONTEXT_, RFC3966_ISDN_SUBADDRESS_ } from './extractPhoneContext.js';\nimport ParseError from '../ParseError.js';\n/**\r\n * @param {string} numberToParse\r\n * @param {string} nationalNumber\r\n * @return {}\r\n */\n\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, _ref) {\n var extractFormattedPhoneNumber = _ref.extractFormattedPhoneNumber;\n var phoneContext = extractPhoneContext(numberToParse);\n\n if (!isPhoneContextValid(phoneContext)) {\n throw new ParseError('NOT_A_NUMBER');\n }\n\n var phoneNumberString;\n\n if (phoneContext === null) {\n // Extract a possible number from the string passed in.\n // (this strips leading characters that could not be the start of a phone number)\n phoneNumberString = extractFormattedPhoneNumber(numberToParse) || '';\n } else {\n phoneNumberString = ''; // If the phone context contains a phone number prefix, we need to capture\n // it, whereas domains will be ignored.\n\n if (phoneContext.charAt(0) === PLUS_SIGN) {\n phoneNumberString += phoneContext;\n } // Now append everything between the \"tel:\" prefix and the phone-context.\n // This should include the national number, an optional extension or\n // isdn-subaddress component. Note we also handle the case when \"tel:\" is\n // missing, as we have seen in some of the phone number inputs.\n // In that case, we append everything from the beginning.\n\n\n var indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_);\n var indexOfNationalNumber; // RFC 3966 \"tel:\" prefix is preset at this stage because\n // `isPhoneContextValid()` requires it to be present.\n\n /* istanbul ignore else */\n\n if (indexOfRfc3966Prefix >= 0) {\n indexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length;\n } else {\n indexOfNationalNumber = 0;\n }\n\n var indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_);\n phoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext);\n } // Delete the isdn-subaddress and everything after it if it is present.\n // Note extension won't appear at the same time with isdn-subaddress\n // according to paragraph 5.3 of the RFC3966 spec.\n\n\n var indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_);\n\n if (indexOfIsdn > 0) {\n phoneNumberString = phoneNumberString.substring(0, indexOfIsdn);\n } // If both phone context and isdn-subaddress are absent but other\n // parameters are present, the parameters are left in nationalNumber.\n // This is because we are concerned about deleting content from a potential\n // number string when there is no strong evidence that the number is\n // actually written in RFC3966.\n\n\n if (phoneNumberString !== '') {\n return phoneNumberString;\n }\n}\n//# sourceMappingURL=extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js.map","// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\nimport { VALID_DIGITS, PLUS_CHARS, MIN_LENGTH_FOR_NSN, MAX_LENGTH_FOR_NSN } from './constants.js';\nimport ParseError from './ParseError.js';\nimport Metadata from './metadata.js';\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js';\nimport extractExtension from './helpers/extension/extractExtension.js';\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js';\nimport getCountryCallingCode from './getCountryCallingCode.js';\nimport { isPossibleNumber } from './isPossible.js'; // import { parseRFC3966 } from './helpers/RFC3966.js'\n\nimport PhoneNumber from './PhoneNumber.js';\nimport matchesEntirely from './helpers/matchesEntirely.js';\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js';\nimport extractNationalNumber from './helpers/extractNationalNumber.js';\nimport stripIddPrefix from './helpers/stripIddPrefix.js';\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js';\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'; // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$');\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // Examples:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param {string} input\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\n\nexport default function parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2, options.extract),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext,\n error = _parseInput.error; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n if (error === 'TOO_SHORT') {\n throw new ParseError('TOO_SHORT');\n }\n\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n countryCallingCodeSource = _parsePhoneNumber.countryCallingCodeSource,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n phoneNumber.__countryCallingCodeSource = countryCallingCodeSource;\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? result(country, nationalNumber, ext) : {};\n } // isInternational: countryCallingCode !== undefined\n\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction _extractFormattedPhoneNumber(text, extract, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n }\n\n if (extract === false) {\n return text;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2, extract) {\n // // Parse RFC 3966 phone number URI.\n // if (text && text.indexOf('tel:') === 0) {\n // \treturn parseRFC3966(text)\n // }\n // let number = extractFormattedPhoneNumber(text, extract, v2)\n var number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\n extractFormattedPhoneNumber: function extractFormattedPhoneNumber(text) {\n return _extractFormattedPhoneNumber(text, extract, v2);\n }\n }); // If the phone number is not viable, then abort.\n\n if (!number) {\n return {};\n }\n\n if (!isViablePhoneNumber(number)) {\n if (isViablePhoneNumberStart(number)) {\n return {\n error: 'TOO_SHORT'\n };\n }\n\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCodeSource = _extractCountryCallin.countryCallingCodeSource,\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.selectNumberingPlan(countryCallingCode);\n } // If `formattedPhoneNumber` is passed in \"national\" format\n // then `number` is defined and `countryCallingCode` is `undefined`.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCodeSource: countryCallingCodeSource,\n countryCallingCode: countryCallingCode\n };\n }\n\n var _extractNationalNumbe = extractNationalNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _extractNationalNumbe.nationalNumber,\n carrierCode = _extractNationalNumbe.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = getCountryByCallingCode(countryCallingCode, {\n nationalNumber: nationalNumber,\n defaultCountry: defaultCountry,\n metadata: metadata\n });\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n countryCallingCodeSource: countryCallingCodeSource,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n//# sourceMappingURL=parse.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parse from './parse.js';\nexport default function parsePhoneNumberWithError(text, options, metadata) {\n return parse(text, _objectSpread(_objectSpread({}, options), {}, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumberWithError_.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport isObject from './helpers/isObject.js'; // Extracts the following properties from function arguments:\n// * input `text`\n// * `options` object\n// * `metadata` JSON\n\nexport default function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = _objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n}\n//# sourceMappingURL=normalizeArguments.js.map","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js';\nimport ParseError from './ParseError.js';\nimport { isSupportedCountry } from './metadata.js';\nexport default function parsePhoneNumber(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = _objectSpread(_objectSpread({}, options), {}, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumberWithError(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map","import normalizeArguments from './normalizeArguments.js';\nimport parsePhoneNumber_ from './parsePhoneNumber_.js';\nexport default function parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumber_(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumber.js.map","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { default as _parsePhoneNumber } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumber() {\r\n\treturn withMetadataArgument(_parsePhoneNumber, arguments)\r\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport isViablePhoneNumber from '../helpers/isViablePhoneNumber.js';\nimport _getNumberType from '../helpers/getNumberType.js';\nimport isObject from '../helpers/isObject.js';\nimport parse from '../parse.js'; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function getNumberType() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata; // `parseNumber()` would return `{}` when no phone number could be parsed from the input.\n\n\n if (!input.phone) {\n return;\n }\n\n return _getNumberType(input, options, metadata);\n} // Sort out arguments\n\nexport function normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = _slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var input;\n var options = {};\n var metadata; // If the phone number is passed as a string.\n // `getNumberType('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n // If \"default country\" argument is being passed\n // then convert it to an `options` object.\n // `getNumberType('88005553535', 'RU', metadata)`.\n if (!isObject(arg_2)) {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n\n if (isViablePhoneNumber(arg_1)) {\n input = parse(arg_1, {\n defaultCountry: arg_2\n }, metadata);\n } else {\n input = {};\n }\n } // No \"resrict country\" argument is being passed.\n // International phone number is passed.\n // `getNumberType('+78005553535', metadata)`.\n else {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n\n if (isViablePhoneNumber(arg_1)) {\n input = parse(arg_1, undefined, metadata);\n } else {\n input = {};\n }\n }\n } // If the phone number is passed as a parsed phone number.\n // `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\n else if (isObject(arg_1)) {\n input = arg_1;\n\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.');\n\n return {\n input: input,\n options: options,\n metadata: metadata\n };\n}\n//# sourceMappingURL=getNumberType.js.map","import _isValidNumber from '../isValid.js';\nimport { normalizeArguments } from './getNumberType.js'; // Finds out national phone number type (fixed line, mobile, etc)\n\nexport default function isValidNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata; // `parseNumber()` would return `{}` when no phone number could be parsed from the input.\n\n\n if (!input.phone) {\n return false;\n }\n\n return _isValidNumber(input, options, metadata);\n}\n//# sourceMappingURL=isValidNumber.js.map","// Deprecated.\r\n\r\nimport withMetadataArgument from '../min/exports/withMetadataArgument.js'\r\n\r\nimport _isValidNumber from '../es6/legacy/isValidNumber.js'\r\n\r\nexport function isValidNumber() {\r\n\treturn withMetadataArgument(_isValidNumber, arguments)\r\n}\r\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReCaptchaInstance = void 0;\nvar ReCaptchaInstance = (function () {\n function ReCaptchaInstance(siteKey, recaptchaID, recaptcha) {\n this.siteKey = siteKey;\n this.recaptchaID = recaptchaID;\n this.recaptcha = recaptcha;\n this.styleContainer = null;\n }\n ReCaptchaInstance.prototype.execute = function (action) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.recaptcha.enterprise) return [3, 2];\n return [4, this.recaptcha.enterprise.execute(this.recaptchaID, { action: action })];\n case 1:\n _a = _b.sent();\n return [3, 4];\n case 2: return [4, this.recaptcha.execute(this.recaptchaID, { action: action })];\n case 3:\n _a = _b.sent();\n _b.label = 4;\n case 4: return [2, _a];\n }\n });\n });\n };\n ReCaptchaInstance.prototype.getSiteKey = function () {\n return this.siteKey;\n };\n ReCaptchaInstance.prototype.hideBadge = function () {\n if (this.styleContainer !== null) {\n return;\n }\n this.styleContainer = document.createElement(\"style\");\n this.styleContainer.innerHTML =\n \".grecaptcha-badge{visibility:hidden !important;}\";\n document.head.appendChild(this.styleContainer);\n };\n ReCaptchaInstance.prototype.showBadge = function () {\n if (this.styleContainer === null) {\n return;\n }\n document.head.removeChild(this.styleContainer);\n this.styleContainer = null;\n };\n return ReCaptchaInstance;\n}());\nexports.ReCaptchaInstance = ReCaptchaInstance;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInstance = exports.load = void 0;\nvar ReCaptchaInstance_1 = require(\"./ReCaptchaInstance\");\nvar ELoadingState;\n(function (ELoadingState) {\n ELoadingState[ELoadingState[\"NOT_LOADED\"] = 0] = \"NOT_LOADED\";\n ELoadingState[ELoadingState[\"LOADING\"] = 1] = \"LOADING\";\n ELoadingState[ELoadingState[\"LOADED\"] = 2] = \"LOADED\";\n})(ELoadingState || (ELoadingState = {}));\nvar ReCaptchaLoader = (function () {\n function ReCaptchaLoader() {\n }\n ReCaptchaLoader.load = function (siteKey, options) {\n if (options === void 0) { options = {}; }\n if (typeof document === \"undefined\") {\n return Promise.reject(new Error(\"This is a library for the browser!\"));\n }\n if (ReCaptchaLoader.getLoadingState() === ELoadingState.LOADED) {\n if (ReCaptchaLoader.instance.getSiteKey() === siteKey) {\n return Promise.resolve(ReCaptchaLoader.instance);\n }\n else {\n return Promise.reject(new Error(\"reCAPTCHA already loaded with different site key!\"));\n }\n }\n if (ReCaptchaLoader.getLoadingState() === ELoadingState.LOADING) {\n if (siteKey !== ReCaptchaLoader.instanceSiteKey) {\n return Promise.reject(new Error(\"reCAPTCHA already loaded with different site key!\"));\n }\n return new Promise(function (resolve, reject) {\n ReCaptchaLoader.successfulLoadingConsumers.push(function (instance) { return resolve(instance); });\n ReCaptchaLoader.errorLoadingRunnable.push(function (reason) {\n return reject(reason);\n });\n });\n }\n ReCaptchaLoader.instanceSiteKey = siteKey;\n ReCaptchaLoader.setLoadingState(ELoadingState.LOADING);\n var loader = new ReCaptchaLoader();\n return new Promise(function (resolve, reject) {\n loader\n .loadScript(siteKey, options.useRecaptchaNet || false, options.useEnterprise || false, options.renderParameters ? options.renderParameters : {}, options.customUrl)\n .then(function () {\n ReCaptchaLoader.setLoadingState(ELoadingState.LOADED);\n var widgetID = loader.doExplicitRender(grecaptcha, siteKey, options.explicitRenderParameters\n ? options.explicitRenderParameters\n : {}, options.useEnterprise || false);\n var instance = new ReCaptchaInstance_1.ReCaptchaInstance(siteKey, widgetID, grecaptcha);\n ReCaptchaLoader.successfulLoadingConsumers.forEach(function (v) {\n return v(instance);\n });\n ReCaptchaLoader.successfulLoadingConsumers = [];\n if (options.autoHideBadge) {\n instance.hideBadge();\n }\n ReCaptchaLoader.instance = instance;\n resolve(instance);\n })\n .catch(function (error) {\n ReCaptchaLoader.errorLoadingRunnable.forEach(function (v) { return v(error); });\n ReCaptchaLoader.errorLoadingRunnable = [];\n reject(error);\n });\n });\n };\n ReCaptchaLoader.getInstance = function () {\n return ReCaptchaLoader.instance;\n };\n ReCaptchaLoader.setLoadingState = function (state) {\n ReCaptchaLoader.loadingState = state;\n };\n ReCaptchaLoader.getLoadingState = function () {\n if (ReCaptchaLoader.loadingState === null) {\n return ELoadingState.NOT_LOADED;\n }\n else {\n return ReCaptchaLoader.loadingState;\n }\n };\n ReCaptchaLoader.prototype.loadScript = function (siteKey, useRecaptchaNet, useEnterprise, renderParameters, customUrl) {\n var _this = this;\n if (useRecaptchaNet === void 0) { useRecaptchaNet = false; }\n if (useEnterprise === void 0) { useEnterprise = false; }\n if (renderParameters === void 0) { renderParameters = {}; }\n if (customUrl === void 0) { customUrl = \"\"; }\n var scriptElement = document.createElement(\"script\");\n scriptElement.setAttribute(\"recaptcha-v3-script\", \"\");\n scriptElement.setAttribute(\"async\", \"\");\n scriptElement.setAttribute(\"defer\", \"\");\n var scriptBase = \"https://www.google.com/recaptcha/api.js\";\n if (useRecaptchaNet) {\n if (useEnterprise) {\n scriptBase = \"https://recaptcha.net/recaptcha/enterprise.js\";\n }\n else {\n scriptBase = \"https://recaptcha.net/recaptcha/api.js\";\n }\n }\n else if (useEnterprise) {\n scriptBase = \"https://www.google.com/recaptcha/enterprise.js\";\n }\n if (customUrl) {\n scriptBase = customUrl;\n }\n if (renderParameters.render) {\n renderParameters.render = undefined;\n }\n var parametersQuery = this.buildQueryString(renderParameters);\n scriptElement.src = scriptBase + \"?render=explicit\" + parametersQuery;\n return new Promise(function (resolve, reject) {\n scriptElement.addEventListener(\"load\", _this.waitForScriptToLoad(function () {\n resolve(scriptElement);\n }, useEnterprise), false);\n scriptElement.onerror = function (error) {\n ReCaptchaLoader.setLoadingState(ELoadingState.NOT_LOADED);\n reject(error);\n };\n document.head.appendChild(scriptElement);\n });\n };\n ReCaptchaLoader.prototype.buildQueryString = function (parameters) {\n var parameterKeys = Object.keys(parameters);\n if (parameterKeys.length < 1) {\n return \"\";\n }\n return (\"&\" +\n Object.keys(parameters)\n .filter(function (parameterKey) {\n return !!parameters[parameterKey];\n })\n .map(function (parameterKey) {\n return parameterKey + \"=\" + parameters[parameterKey];\n })\n .join(\"&\"));\n };\n ReCaptchaLoader.prototype.waitForScriptToLoad = function (callback, useEnterprise) {\n var _this = this;\n return function () {\n if (window.grecaptcha === undefined) {\n setTimeout(function () {\n _this.waitForScriptToLoad(callback, useEnterprise);\n }, ReCaptchaLoader.SCRIPT_LOAD_DELAY);\n }\n else {\n if (useEnterprise) {\n window.grecaptcha.enterprise.ready(function () {\n callback();\n });\n }\n else {\n window.grecaptcha.ready(function () {\n callback();\n });\n }\n }\n };\n };\n ReCaptchaLoader.prototype.doExplicitRender = function (grecaptcha, siteKey, parameters, isEnterprise) {\n var augmentedParameters = __assign({ sitekey: siteKey }, parameters);\n if (parameters.container) {\n if (isEnterprise) {\n return grecaptcha.enterprise.render(parameters.container, augmentedParameters);\n }\n else {\n return grecaptcha.render(parameters.container, augmentedParameters);\n }\n }\n else {\n if (isEnterprise) {\n return grecaptcha.enterprise.render(augmentedParameters);\n }\n else {\n return grecaptcha.render(augmentedParameters);\n }\n }\n };\n ReCaptchaLoader.loadingState = null;\n ReCaptchaLoader.instance = null;\n ReCaptchaLoader.instanceSiteKey = null;\n ReCaptchaLoader.successfulLoadingConsumers = [];\n ReCaptchaLoader.errorLoadingRunnable = [];\n ReCaptchaLoader.SCRIPT_LOAD_DELAY = 25;\n return ReCaptchaLoader;\n}());\nexports.load = ReCaptchaLoader.load;\nexports.getInstance = ReCaptchaLoader.getInstance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReCaptchaInstance = exports.getInstance = exports.load = void 0;\nvar ReCaptchaLoader_1 = require(\"./ReCaptchaLoader\");\nObject.defineProperty(exports, \"load\", { enumerable: true, get: function () { return ReCaptchaLoader_1.load; } });\nObject.defineProperty(exports, \"getInstance\", { enumerable: true, get: function () { return ReCaptchaLoader_1.getInstance; } });\nvar ReCaptchaInstance_1 = require(\"./ReCaptchaInstance\");\nObject.defineProperty(exports, \"ReCaptchaInstance\", { enumerable: true, get: function () { return ReCaptchaInstance_1.ReCaptchaInstance; } });\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { load as loadReCaptcha } from 'recaptcha-v3';\r\nimport { ref, inject } from 'vue';\r\nvar VueReCaptchaInjectKey = Symbol('VueReCaptchaInjectKey');\r\nvar globalConfig = {\r\n loadedWaiters: [],\r\n error: null\r\n};\r\nexport var VueReCaptcha = {\r\n install: function (app, options) {\r\n var isLoaded = ref(false);\r\n var instance = ref(undefined);\r\n app.config.globalProperties.$recaptchaLoaded = recaptchaLoaded(isLoaded);\r\n initializeReCaptcha(options).then(function (wrapper) {\r\n isLoaded.value = true;\r\n instance.value = wrapper;\r\n app.config.globalProperties.$recaptcha = recaptcha(instance);\r\n app.config.globalProperties.$recaptchaInstance = instance;\r\n globalConfig.loadedWaiters.forEach(function (v) { return v.resolve(true); });\r\n }).catch(function (error) {\r\n globalConfig.error = error;\r\n globalConfig.loadedWaiters.forEach(function (v) { return v.reject(error); });\r\n });\r\n app.provide(VueReCaptchaInjectKey, {\r\n instance: instance,\r\n isLoaded: isLoaded,\r\n executeRecaptcha: recaptcha(instance),\r\n recaptchaLoaded: recaptchaLoaded(isLoaded)\r\n });\r\n }\r\n};\r\nexport function useReCaptcha() {\r\n return inject(VueReCaptchaInjectKey);\r\n}\r\nfunction initializeReCaptcha(options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, loadReCaptcha(options.siteKey, options.loaderOptions)];\r\n case 1: return [2, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nfunction recaptchaLoaded(isLoaded) {\r\n return function () { return new Promise(function (resolve, reject) {\r\n if (globalConfig.error !== null) {\r\n return reject(globalConfig.error);\r\n }\r\n if (isLoaded.value) {\r\n return resolve(true);\r\n }\r\n globalConfig.loadedWaiters.push({ resolve: resolve, reject: reject });\r\n }); };\r\n}\r\nfunction recaptcha(instance) {\r\n var _this = this;\r\n return function (action) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4, ((_a = instance.value) === null || _a === void 0 ? void 0 : _a.execute(action))];\r\n case 1: return [2, _b.sent()];\r\n }\r\n });\r\n }); };\r\n}\r\n","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 0)\n return angle > 180 ? angle - 360 : angle;\n return angle < -180 ? angle + 360 : angle;\n}\nfunction radiansToDegrees(radians) {\n const degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { isNumber } from \"@turf/helpers\";\nfunction getCoord(coord) {\n if (!coord) {\n throw new Error(\"coord is required\");\n }\n if (!Array.isArray(coord)) {\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\n return [...coord.geometry.coordinates];\n }\n if (coord.type === \"Point\") {\n return [...coord.coordinates];\n }\n }\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\n return [...coord];\n }\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction getCoords(coords) {\n if (Array.isArray(coords)) {\n return coords;\n }\n if (coords.type === \"Feature\") {\n if (coords.geometry !== null) {\n return coords.geometry.coordinates;\n }\n } else {\n if (coords.coordinates) {\n return coords.coordinates;\n }\n }\n throw new Error(\n \"coords must be GeoJSON Feature, Geometry Object or an Array\"\n );\n}\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error(\"coordinates must only contain numbers\");\n}\nfunction geojsonType(value, type, name) {\n if (!type || !name) {\n throw new Error(\"type and name required\");\n }\n if (!value || value.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type\n );\n }\n}\nfunction featureOf(feature, type, name) {\n if (!feature) {\n throw new Error(\"No feature passed\");\n }\n if (!name) {\n throw new Error(\".featureOf() requires a name\");\n }\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n}\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) {\n throw new Error(\"No featureCollection passed\");\n }\n if (!name) {\n throw new Error(\".collectionOf() requires a name\");\n }\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n throw new Error(\n \"Invalid input to \" + name + \", FeatureCollection required\"\n );\n }\n for (const feature of featureCollection.features) {\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n throw new Error(\n \"Invalid input to \" + name + \", Feature with geometry required\"\n );\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error(\n \"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type\n );\n }\n }\n}\nfunction getGeom(geojson) {\n if (geojson.type === \"Feature\") {\n return geojson.geometry;\n }\n return geojson;\n}\nfunction getType(geojson, _name) {\n if (geojson.type === \"FeatureCollection\") {\n return \"FeatureCollection\";\n }\n if (geojson.type === \"GeometryCollection\") {\n return \"GeometryCollection\";\n }\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n return geojson.geometry.type;\n }\n return geojson.type;\n}\nexport {\n collectionOf,\n containsNumber,\n featureOf,\n geojsonType,\n getCoord,\n getCoords,\n getGeom,\n getType\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { degreesToRadians, radiansToDegrees } from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\nfunction bearing(start, end, options = {}) {\n if (options.final === true) {\n return calculateFinalBearing(start, end);\n }\n const coordinates1 = getCoord(start);\n const coordinates2 = getCoord(end);\n const lon1 = degreesToRadians(coordinates1[0]);\n const lon2 = degreesToRadians(coordinates2[0]);\n const lat1 = degreesToRadians(coordinates1[1]);\n const lat2 = degreesToRadians(coordinates2[1]);\n const a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n const b = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n return radiansToDegrees(Math.atan2(a, b));\n}\nfunction calculateFinalBearing(start, end) {\n let bear = bearing(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\nvar turf_bearing_default = bearing;\nexport {\n bearing,\n turf_bearing_default as default\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport {\n degreesToRadians,\n lengthToRadians,\n point,\n radiansToDegrees\n} from \"@turf/helpers\";\nimport { getCoord } from \"@turf/invariant\";\nfunction destination(origin, distance, bearing, options = {}) {\n const coordinates1 = getCoord(origin);\n const longitude1 = degreesToRadians(coordinates1[0]);\n const latitude1 = degreesToRadians(coordinates1[1]);\n const bearingRad = degreesToRadians(bearing);\n const radians = lengthToRadians(distance, options.units);\n const latitude2 = Math.asin(\n Math.sin(latitude1) * Math.cos(radians) + Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad)\n );\n const longitude2 = longitude1 + Math.atan2(\n Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1),\n Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2)\n );\n const lng = radiansToDegrees(longitude2);\n const lat = radiansToDegrees(latitude2);\n return point([lng, lat], options.properties);\n}\nvar turf_destination_default = destination;\nexport {\n turf_destination_default as default,\n destination\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { getCoord } from \"@turf/invariant\";\nimport { radiansToLength, degreesToRadians } from \"@turf/helpers\";\nfunction distance(from, to, options = {}) {\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degreesToRadians(coordinates2[1] - coordinates1[1]);\n var dLon = degreesToRadians(coordinates2[0] - coordinates1[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) + Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return radiansToLength(\n 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)),\n options.units\n );\n}\nvar turf_distance_default = distance;\nexport {\n turf_distance_default as default,\n distance\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null)\n return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null)\n continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\")\n multiFeatureIndex++;\n }\n if (geomType === \"LineString\")\n multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\")\n multiFeatureIndex++;\n if (geomType === \"Polygon\")\n geometryIndex++;\n }\n if (geomType === \"Polygon\")\n multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false)\n break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false)\n break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry)\n return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\")\n return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson)\n throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null)\n return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0)\n segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null)\n return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0)\n coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0)\n geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { coordEach } from \"@turf/meta\";\nfunction bbox(geojson, options = {}) {\n if (geojson.bbox != null && true !== options.recompute) {\n return geojson.bbox;\n }\n const result = [Infinity, Infinity, -Infinity, -Infinity];\n coordEach(geojson, (coord) => {\n if (result[0] > coord[0]) {\n result[0] = coord[0];\n }\n if (result[1] > coord[1]) {\n result[1] = coord[1];\n }\n if (result[2] < coord[0]) {\n result[2] = coord[0];\n }\n if (result[3] < coord[1]) {\n result[3] = coord[1];\n }\n });\n return result;\n}\nvar turf_bbox_default = bbox;\nexport {\n bbox,\n turf_bbox_default as default\n};\n//# sourceMappingURL=index.js.map","class TinyQueue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction checkWhichEventIsLeft (e1, e2) {\n if (e1.p.x > e2.p.x) return 1\n if (e1.p.x < e2.p.x) return -1\n\n if (e1.p.y !== e2.p.y) return e1.p.y > e2.p.y ? 1 : -1\n return 1\n}\n\nfunction checkWhichSegmentHasRightEndpointFirst (seg1, seg2) {\n if (seg1.rightSweepEvent.p.x > seg2.rightSweepEvent.p.x) return 1\n if (seg1.rightSweepEvent.p.x < seg2.rightSweepEvent.p.x) return -1\n\n if (seg1.rightSweepEvent.p.y !== seg2.rightSweepEvent.p.y) return seg1.rightSweepEvent.p.y < seg2.rightSweepEvent.p.y ? 1 : -1\n return 1\n}\n\nclass Event {\n\n constructor (p, featureId, ringId, eventId) {\n this.p = {\n x: p[0],\n y: p[1]\n };\n this.featureId = featureId;\n this.ringId = ringId;\n this.eventId = eventId;\n\n this.otherEvent = null;\n this.isLeftEndpoint = null;\n }\n\n isSamePoint (eventToCheck) {\n return this.p.x === eventToCheck.p.x && this.p.y === eventToCheck.p.y\n }\n}\n\nfunction fillEventQueue (geojson, eventQueue) {\n if (geojson.type === 'FeatureCollection') {\n const features = geojson.features;\n for (let i = 0; i < features.length; i++) {\n processFeature(features[i], eventQueue);\n }\n } else {\n processFeature(geojson, eventQueue);\n }\n}\n\nlet featureId = 0;\nlet ringId = 0;\nlet eventId = 0;\nfunction processFeature (featureOrGeometry, eventQueue) {\n const geom = featureOrGeometry.type === 'Feature' ? featureOrGeometry.geometry : featureOrGeometry;\n let coords = geom.coordinates;\n // standardise the input\n if (geom.type === 'Polygon' || geom.type === 'MultiLineString') coords = [coords];\n if (geom.type === 'LineString') coords = [[coords]];\n\n for (let i = 0; i < coords.length; i++) {\n for (let ii = 0; ii < coords[i].length; ii++) {\n let currentP = coords[i][ii][0];\n let nextP = null;\n ringId = ringId + 1;\n for (let iii = 0; iii < coords[i][ii].length - 1; iii++) {\n nextP = coords[i][ii][iii + 1];\n\n const e1 = new Event(currentP, featureId, ringId, eventId);\n const e2 = new Event(nextP, featureId, ringId, eventId + 1);\n\n e1.otherEvent = e2;\n e2.otherEvent = e1;\n\n if (checkWhichEventIsLeft(e1, e2) > 0) {\n e2.isLeftEndpoint = true;\n e1.isLeftEndpoint = false;\n } else {\n e1.isLeftEndpoint = true;\n e2.isLeftEndpoint = false;\n }\n eventQueue.push(e1);\n eventQueue.push(e2);\n\n currentP = nextP;\n eventId = eventId + 1;\n }\n }\n }\n featureId = featureId + 1;\n}\n\nclass Segment {\n\n constructor (event) {\n this.leftSweepEvent = event;\n this.rightSweepEvent = event.otherEvent;\n }\n}\n\nfunction testSegmentIntersect (seg1, seg2) {\n if (seg1 === null || seg2 === null) return false\n\n if (seg1.leftSweepEvent.ringId === seg2.leftSweepEvent.ringId &&\n (seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.rightSweepEvent.isSamePoint(seg2.rightSweepEvent) ||\n seg1.leftSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.leftSweepEvent.isSamePoint(seg2.rightSweepEvent))) return false\n\n const x1 = seg1.leftSweepEvent.p.x;\n const y1 = seg1.leftSweepEvent.p.y;\n const x2 = seg1.rightSweepEvent.p.x;\n const y2 = seg1.rightSweepEvent.p.y;\n const x3 = seg2.leftSweepEvent.p.x;\n const y3 = seg2.leftSweepEvent.p.y;\n const x4 = seg2.rightSweepEvent.p.x;\n const y4 = seg2.rightSweepEvent.p.y;\n\n const denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1));\n const numeA = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3));\n const numeB = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3));\n\n if (denom === 0) {\n if (numeA === 0 && numeB === 0) return false\n return false\n }\n\n const uA = numeA / denom;\n const uB = numeB / denom;\n\n if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n const x = x1 + (uA * (x2 - x1));\n const y = y1 + (uA * (y2 - y1));\n return [x, y]\n }\n return false\n}\n\n// import {debugEventAndSegments, debugRemovingSegment} from './debug'\n\nfunction runCheck (eventQueue, ignoreSelfIntersections) {\n ignoreSelfIntersections = ignoreSelfIntersections ? ignoreSelfIntersections : false;\n\n const intersectionPoints = [];\n const outQueue = new TinyQueue([], checkWhichSegmentHasRightEndpointFirst);\n\n while (eventQueue.length) {\n const event = eventQueue.pop();\n if (event.isLeftEndpoint) {\n // debugEventAndSegments(event.p, outQueue.data)\n const segment = new Segment(event);\n for (let i = 0; i < outQueue.data.length; i++) {\n const otherSeg = outQueue.data[i];\n if (ignoreSelfIntersections) {\n if (otherSeg.leftSweepEvent.featureId === event.featureId) continue\n }\n const intersection = testSegmentIntersect(segment, otherSeg);\n if (intersection !== false) intersectionPoints.push(intersection);\n }\n outQueue.push(segment);\n } else if (event.isLeftEndpoint === false) {\n outQueue.pop();\n // const seg = outQueue.pop()\n // debugRemovingSegment(event.p, seg)\n }\n }\n return intersectionPoints\n}\n\nfunction sweeplineIntersections (geojson, ignoreSelfIntersections) {\n const eventQueue = new TinyQueue([], checkWhichEventIsLeft);\n fillEventQueue(geojson, eventQueue);\n return runCheck(eventQueue, ignoreSelfIntersections)\n}\n\nexport default sweeplineIntersections;\n","// index.ts\nimport { feature, featureCollection, point } from \"@turf/helpers\";\n\n// lib/sweepline-intersections-export.ts\nimport lib from \"sweepline-intersections\";\nvar sweeplineIntersections = lib;\n\n// index.ts\nfunction lineIntersect(line1, line2, options = {}) {\n const { removeDuplicates = true, ignoreSelfIntersections = false } = options;\n let features = [];\n if (line1.type === \"FeatureCollection\")\n features = features.concat(line1.features);\n else if (line1.type === \"Feature\")\n features.push(line1);\n else if (line1.type === \"LineString\" || line1.type === \"Polygon\" || line1.type === \"MultiLineString\" || line1.type === \"MultiPolygon\") {\n features.push(feature(line1));\n }\n if (line2.type === \"FeatureCollection\")\n features = features.concat(line2.features);\n else if (line2.type === \"Feature\")\n features.push(line2);\n else if (line2.type === \"LineString\" || line2.type === \"Polygon\" || line2.type === \"MultiLineString\" || line2.type === \"MultiPolygon\") {\n features.push(feature(line2));\n }\n const intersections = sweeplineIntersections(\n featureCollection(features),\n ignoreSelfIntersections\n );\n let results = [];\n if (removeDuplicates) {\n const unique = {};\n intersections.forEach((intersection) => {\n const key = intersection.join(\",\");\n if (!unique[key]) {\n unique[key] = true;\n results.push(intersection);\n }\n });\n } else {\n results = intersections;\n }\n return featureCollection(results.map((r) => point(r)));\n}\nvar turf_line_intersect_default = lineIntersect;\nexport {\n turf_line_intersect_default as default,\n lineIntersect\n};\n//# sourceMappingURL=index.js.map","\nexport default function quickselect(arr, k, left, right, compare) {\n quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n while (right > left) {\n if (right - left > 600) {\n var n = right - left + 1;\n var m = k - left + 1;\n var z = Math.log(n);\n var s = 0.5 * Math.exp(2 * z / 3);\n var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselectStep(arr, k, newLeft, newRight, compare);\n }\n\n var t = arr[k];\n var i = left;\n var j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\nfunction swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n","import quickselect from 'quickselect';\n\nexport default class RBush {\n constructor(maxEntries = 9) {\n // max entries in a node is 9 by default; min node fill is 40% for best performance\n this._maxEntries = Math.max(4, maxEntries);\n this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n this.clear();\n }\n\n all() {\n return this._all(this.data, []);\n }\n\n search(bbox) {\n let node = this.data;\n const result = [];\n\n if (!intersects(bbox, node)) return result;\n\n const toBBox = this.toBBox;\n const nodesToSearch = [];\n\n while (node) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const childBBox = node.leaf ? toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf) result.push(child);\n else if (contains(bbox, childBBox)) this._all(child, result);\n else nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return result;\n }\n\n collides(bbox) {\n let node = this.data;\n\n if (!intersects(bbox, node)) return false;\n\n const nodesToSearch = [];\n while (node) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const childBBox = node.leaf ? this.toBBox(child) : child;\n\n if (intersects(bbox, childBBox)) {\n if (node.leaf || contains(bbox, childBBox)) return true;\n nodesToSearch.push(child);\n }\n }\n node = nodesToSearch.pop();\n }\n\n return false;\n }\n\n load(data) {\n if (!(data && data.length)) return this;\n\n if (data.length < this._minEntries) {\n for (let i = 0; i < data.length; i++) {\n this.insert(data[i]);\n }\n return this;\n }\n\n // recursively build the tree with the given data from scratch using OMT algorithm\n let node = this._build(data.slice(), 0, data.length - 1, 0);\n\n if (!this.data.children.length) {\n // save as is if tree is empty\n this.data = node;\n\n } else if (this.data.height === node.height) {\n // split root if trees have the same height\n this._splitRoot(this.data, node);\n\n } else {\n if (this.data.height < node.height) {\n // swap trees if inserted one is bigger\n const tmpNode = this.data;\n this.data = node;\n node = tmpNode;\n }\n\n // insert the small tree into the large tree at appropriate level\n this._insert(node, this.data.height - node.height - 1, true);\n }\n\n return this;\n }\n\n insert(item) {\n if (item) this._insert(item, this.data.height - 1);\n return this;\n }\n\n clear() {\n this.data = createNode([]);\n return this;\n }\n\n remove(item, equalsFn) {\n if (!item) return this;\n\n let node = this.data;\n const bbox = this.toBBox(item);\n const path = [];\n const indexes = [];\n let i, parent, goingUp;\n\n // depth-first iterative tree traversal\n while (node || path.length) {\n\n if (!node) { // go up\n node = path.pop();\n parent = path[path.length - 1];\n i = indexes.pop();\n goingUp = true;\n }\n\n if (node.leaf) { // check current node\n const index = findItem(item, node.children, equalsFn);\n\n if (index !== -1) {\n // item found, remove the item and condense tree upwards\n node.children.splice(index, 1);\n path.push(node);\n this._condense(path);\n return this;\n }\n }\n\n if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n path.push(node);\n indexes.push(i);\n i = 0;\n parent = node;\n node = node.children[0];\n\n } else if (parent) { // go right\n i++;\n node = parent.children[i];\n goingUp = false;\n\n } else node = null; // nothing found\n }\n\n return this;\n }\n\n toBBox(item) { return item; }\n\n compareMinX(a, b) { return a.minX - b.minX; }\n compareMinY(a, b) { return a.minY - b.minY; }\n\n toJSON() { return this.data; }\n\n fromJSON(data) {\n this.data = data;\n return this;\n }\n\n _all(node, result) {\n const nodesToSearch = [];\n while (node) {\n if (node.leaf) result.push(...node.children);\n else nodesToSearch.push(...node.children);\n\n node = nodesToSearch.pop();\n }\n return result;\n }\n\n _build(items, left, right, height) {\n\n const N = right - left + 1;\n let M = this._maxEntries;\n let node;\n\n if (N <= M) {\n // reached leaf level; return leaf\n node = createNode(items.slice(left, right + 1));\n calcBBox(node, this.toBBox);\n return node;\n }\n\n if (!height) {\n // target height of the bulk-loaded tree\n height = Math.ceil(Math.log(N) / Math.log(M));\n\n // target number of root entries to maximize storage utilization\n M = Math.ceil(N / Math.pow(M, height - 1));\n }\n\n node = createNode([]);\n node.leaf = false;\n node.height = height;\n\n // split the items into M mostly square tiles\n\n const N2 = Math.ceil(N / M);\n const N1 = N2 * Math.ceil(Math.sqrt(M));\n\n multiSelect(items, left, right, N1, this.compareMinX);\n\n for (let i = left; i <= right; i += N1) {\n\n const right2 = Math.min(i + N1 - 1, right);\n\n multiSelect(items, i, right2, N2, this.compareMinY);\n\n for (let j = i; j <= right2; j += N2) {\n\n const right3 = Math.min(j + N2 - 1, right2);\n\n // pack each entry recursively\n node.children.push(this._build(items, j, right3, height - 1));\n }\n }\n\n calcBBox(node, this.toBBox);\n\n return node;\n }\n\n _chooseSubtree(bbox, node, level, path) {\n while (true) {\n path.push(node);\n\n if (node.leaf || path.length - 1 === level) break;\n\n let minArea = Infinity;\n let minEnlargement = Infinity;\n let targetNode;\n\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const area = bboxArea(child);\n const enlargement = enlargedArea(bbox, child) - area;\n\n // choose entry with the least area enlargement\n if (enlargement < minEnlargement) {\n minEnlargement = enlargement;\n minArea = area < minArea ? area : minArea;\n targetNode = child;\n\n } else if (enlargement === minEnlargement) {\n // otherwise choose one with the smallest area\n if (area < minArea) {\n minArea = area;\n targetNode = child;\n }\n }\n }\n\n node = targetNode || node.children[0];\n }\n\n return node;\n }\n\n _insert(item, level, isNode) {\n const bbox = isNode ? item : this.toBBox(item);\n const insertPath = [];\n\n // find the best node for accommodating the item, saving all nodes along the path too\n const node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n // put the item into the node\n node.children.push(item);\n extend(node, bbox);\n\n // split on node overflow; propagate upwards if necessary\n while (level >= 0) {\n if (insertPath[level].children.length > this._maxEntries) {\n this._split(insertPath, level);\n level--;\n } else break;\n }\n\n // adjust bboxes along the insertion path\n this._adjustParentBBoxes(bbox, insertPath, level);\n }\n\n // split overflowed node into two\n _split(insertPath, level) {\n const node = insertPath[level];\n const M = node.children.length;\n const m = this._minEntries;\n\n this._chooseSplitAxis(node, m, M);\n\n const splitIndex = this._chooseSplitIndex(node, m, M);\n\n const newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n newNode.height = node.height;\n newNode.leaf = node.leaf;\n\n calcBBox(node, this.toBBox);\n calcBBox(newNode, this.toBBox);\n\n if (level) insertPath[level - 1].children.push(newNode);\n else this._splitRoot(node, newNode);\n }\n\n _splitRoot(node, newNode) {\n // split root node\n this.data = createNode([node, newNode]);\n this.data.height = node.height + 1;\n this.data.leaf = false;\n calcBBox(this.data, this.toBBox);\n }\n\n _chooseSplitIndex(node, m, M) {\n let index;\n let minOverlap = Infinity;\n let minArea = Infinity;\n\n for (let i = m; i <= M - m; i++) {\n const bbox1 = distBBox(node, 0, i, this.toBBox);\n const bbox2 = distBBox(node, i, M, this.toBBox);\n\n const overlap = intersectionArea(bbox1, bbox2);\n const area = bboxArea(bbox1) + bboxArea(bbox2);\n\n // choose distribution with minimum overlap\n if (overlap < minOverlap) {\n minOverlap = overlap;\n index = i;\n\n minArea = area < minArea ? area : minArea;\n\n } else if (overlap === minOverlap) {\n // otherwise choose distribution with minimum area\n if (area < minArea) {\n minArea = area;\n index = i;\n }\n }\n }\n\n return index || M - m;\n }\n\n // sorts node children by the best axis for split\n _chooseSplitAxis(node, m, M) {\n const compareMinX = node.leaf ? this.compareMinX : compareNodeMinX;\n const compareMinY = node.leaf ? this.compareMinY : compareNodeMinY;\n const xMargin = this._allDistMargin(node, m, M, compareMinX);\n const yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n // if total distributions margin value is minimal for x, sort by minX,\n // otherwise it's already sorted by minY\n if (xMargin < yMargin) node.children.sort(compareMinX);\n }\n\n // total margin of all possible split distributions where each node is at least m full\n _allDistMargin(node, m, M, compare) {\n node.children.sort(compare);\n\n const toBBox = this.toBBox;\n const leftBBox = distBBox(node, 0, m, toBBox);\n const rightBBox = distBBox(node, M - m, M, toBBox);\n let margin = bboxMargin(leftBBox) + bboxMargin(rightBBox);\n\n for (let i = m; i < M - m; i++) {\n const child = node.children[i];\n extend(leftBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(leftBBox);\n }\n\n for (let i = M - m - 1; i >= m; i--) {\n const child = node.children[i];\n extend(rightBBox, node.leaf ? toBBox(child) : child);\n margin += bboxMargin(rightBBox);\n }\n\n return margin;\n }\n\n _adjustParentBBoxes(bbox, path, level) {\n // adjust bboxes along the given tree path\n for (let i = level; i >= 0; i--) {\n extend(path[i], bbox);\n }\n }\n\n _condense(path) {\n // go through the path, removing empty nodes and updating bboxes\n for (let i = path.length - 1, siblings; i >= 0; i--) {\n if (path[i].children.length === 0) {\n if (i > 0) {\n siblings = path[i - 1].children;\n siblings.splice(siblings.indexOf(path[i]), 1);\n\n } else this.clear();\n\n } else calcBBox(path[i], this.toBBox);\n }\n }\n}\n\nfunction findItem(item, items, equalsFn) {\n if (!equalsFn) return items.indexOf(item);\n\n for (let i = 0; i < items.length; i++) {\n if (equalsFn(item, items[i])) return i;\n }\n return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n if (!destNode) destNode = createNode(null);\n destNode.minX = Infinity;\n destNode.minY = Infinity;\n destNode.maxX = -Infinity;\n destNode.maxY = -Infinity;\n\n for (let i = k; i < p; i++) {\n const child = node.children[i];\n extend(destNode, node.leaf ? toBBox(child) : child);\n }\n\n return destNode;\n}\n\nfunction extend(a, b) {\n a.minX = Math.min(a.minX, b.minX);\n a.minY = Math.min(a.minY, b.minY);\n a.maxX = Math.max(a.maxX, b.maxX);\n a.maxY = Math.max(a.maxY, b.maxY);\n return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n const minX = Math.max(a.minX, b.minX);\n const minY = Math.max(a.minY, b.minY);\n const maxX = Math.min(a.maxX, b.maxX);\n const maxY = Math.min(a.maxY, b.maxY);\n\n return Math.max(0, maxX - minX) *\n Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n return a.minX <= b.minX &&\n a.minY <= b.minY &&\n b.maxX <= a.maxX &&\n b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n return b.minX <= a.maxX &&\n b.minY <= a.maxY &&\n b.maxX >= a.minX &&\n b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n return {\n children,\n height: 1,\n leaf: true,\n minX: Infinity,\n minY: Infinity,\n maxX: -Infinity,\n maxY: -Infinity\n };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n const stack = [left, right];\n\n while (stack.length) {\n right = stack.pop();\n left = stack.pop();\n\n if (right - left <= n) continue;\n\n const mid = left + Math.ceil((right - left) / n / 2) * n;\n quickselect(arr, mid, left, right, compare);\n\n stack.push(left, mid, mid, right);\n }\n}\n","// index.js\nimport rbush from \"rbush\";\nimport { featureCollection } from \"@turf/helpers\";\nimport { featureEach } from \"@turf/meta\";\nimport { bbox as turfBBox } from \"@turf/bbox\";\nfunction geojsonRbush(maxEntries) {\n var tree = new rbush(maxEntries);\n tree.insert = function(feature) {\n if (feature.type !== \"Feature\")\n throw new Error(\"invalid feature\");\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n return rbush.prototype.insert.call(this, feature);\n };\n tree.load = function(features) {\n var load = [];\n if (Array.isArray(features)) {\n features.forEach(function(feature) {\n if (feature.type !== \"Feature\")\n throw new Error(\"invalid features\");\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n load.push(feature);\n });\n } else {\n featureEach(features, function(feature) {\n if (feature.type !== \"Feature\")\n throw new Error(\"invalid features\");\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n load.push(feature);\n });\n }\n return rbush.prototype.load.call(this, load);\n };\n tree.remove = function(feature, equals) {\n if (feature.type !== \"Feature\")\n throw new Error(\"invalid feature\");\n feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n return rbush.prototype.remove.call(this, feature, equals);\n };\n tree.clear = function() {\n return rbush.prototype.clear.call(this);\n };\n tree.search = function(geojson) {\n var features = rbush.prototype.search.call(this, this.toBBox(geojson));\n return featureCollection(features);\n };\n tree.collides = function(geojson) {\n return rbush.prototype.collides.call(this, this.toBBox(geojson));\n };\n tree.all = function() {\n var features = rbush.prototype.all.call(this);\n return featureCollection(features);\n };\n tree.toJSON = function() {\n return rbush.prototype.toJSON.call(this);\n };\n tree.fromJSON = function(json) {\n return rbush.prototype.fromJSON.call(this, json);\n };\n tree.toBBox = function(geojson) {\n var bbox;\n if (geojson.bbox)\n bbox = geojson.bbox;\n else if (Array.isArray(geojson) && geojson.length === 4)\n bbox = geojson;\n else if (Array.isArray(geojson) && geojson.length === 6)\n bbox = [geojson[0], geojson[1], geojson[3], geojson[4]];\n else if (geojson.type === \"Feature\")\n bbox = turfBBox(geojson);\n else if (geojson.type === \"FeatureCollection\")\n bbox = turfBBox(geojson);\n else\n throw new Error(\"invalid geojson\");\n return {\n minX: bbox[0],\n minY: bbox[1],\n maxX: bbox[2],\n maxY: bbox[3]\n };\n };\n return tree;\n}\nvar turf_geojson_rbush_default = geojsonRbush;\nexport {\n turf_geojson_rbush_default as default,\n geojsonRbush\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { featureCollection, lineString } from \"@turf/helpers\";\nimport { getCoords } from \"@turf/invariant\";\nimport { flattenEach } from \"@turf/meta\";\nfunction lineSegment(geojson) {\n if (!geojson) {\n throw new Error(\"geojson is required\");\n }\n const results = [];\n flattenEach(geojson, (feature) => {\n lineSegmentFeature(feature, results);\n });\n return featureCollection(results);\n}\nfunction lineSegmentFeature(geojson, results) {\n let coords = [];\n const geometry = geojson.geometry;\n if (geometry !== null) {\n switch (geometry.type) {\n case \"Polygon\":\n coords = getCoords(geometry);\n break;\n case \"LineString\":\n coords = [getCoords(geometry)];\n }\n coords.forEach((coord) => {\n const segments = createSegments(coord, geojson.properties);\n segments.forEach((segment) => {\n segment.id = results.length;\n results.push(segment);\n });\n });\n }\n}\nfunction createSegments(coords, properties) {\n const segments = [];\n coords.reduce((previousCoords, currentCoords) => {\n const segment = lineString([previousCoords, currentCoords], properties);\n segment.bbox = bbox(previousCoords, currentCoords);\n segments.push(segment);\n return currentCoords;\n });\n return segments;\n}\nfunction bbox(coords1, coords2) {\n const x1 = coords1[0];\n const y1 = coords1[1];\n const x2 = coords2[0];\n const y2 = coords2[1];\n const west = x1 < x2 ? x1 : x2;\n const south = y1 < y2 ? y1 : y2;\n const east = x1 > x2 ? x1 : x2;\n const north = y1 > y2 ? y1 : y2;\n return [west, south, east, north];\n}\nvar turf_line_segment_default = lineSegment;\nexport {\n turf_line_segment_default as default,\n lineSegment\n};\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// index.ts\nimport { bearing } from \"@turf/bearing\";\nimport { distance } from \"@turf/distance\";\nimport { destination } from \"@turf/destination\";\nimport { lineIntersect as lineIntersects } from \"@turf/line-intersect\";\nimport { flattenEach } from \"@turf/meta\";\nimport { point, lineString } from \"@turf/helpers\";\nimport { getCoords } from \"@turf/invariant\";\nfunction nearestPointOnLine(lines, pt, options = {}) {\n if (!lines || !pt) {\n throw new Error(\"lines and pt are required arguments\");\n }\n let closestPt = point([Infinity, Infinity], {\n dist: Infinity,\n index: -1,\n multiFeatureIndex: -1,\n location: -1\n });\n let length = 0;\n flattenEach(\n lines,\n function(line, _featureIndex, multiFeatureIndex) {\n const coords = getCoords(line);\n for (let i = 0; i < coords.length - 1; i++) {\n const start = point(coords[i]);\n start.properties.dist = distance(pt, start, options);\n const stop = point(coords[i + 1]);\n stop.properties.dist = distance(pt, stop, options);\n const sectionLength = distance(start, stop, options);\n const heightDistance = Math.max(\n start.properties.dist,\n stop.properties.dist\n );\n const direction = bearing(start, stop);\n const perpendicularPt1 = destination(\n pt,\n heightDistance,\n direction + 90,\n options\n );\n const perpendicularPt2 = destination(\n pt,\n heightDistance,\n direction - 90,\n options\n );\n const intersect = lineIntersects(\n lineString([\n perpendicularPt1.geometry.coordinates,\n perpendicularPt2.geometry.coordinates\n ]),\n lineString([start.geometry.coordinates, stop.geometry.coordinates])\n );\n let intersectPt;\n if (intersect.features.length > 0 && intersect.features[0]) {\n intersectPt = __spreadProps(__spreadValues({}, intersect.features[0]), {\n properties: {\n dist: distance(pt, intersect.features[0], options),\n multiFeatureIndex,\n location: length + distance(start, intersect.features[0], options)\n }\n });\n }\n if (start.properties.dist < closestPt.properties.dist) {\n closestPt = __spreadProps(__spreadValues({}, start), {\n properties: __spreadProps(__spreadValues({}, start.properties), {\n index: i,\n multiFeatureIndex,\n location: length\n })\n });\n }\n if (stop.properties.dist < closestPt.properties.dist) {\n closestPt = __spreadProps(__spreadValues({}, stop), {\n properties: __spreadProps(__spreadValues({}, stop.properties), {\n index: i + 1,\n multiFeatureIndex,\n location: length + sectionLength\n })\n });\n }\n if (intersectPt && intersectPt.properties.dist < closestPt.properties.dist) {\n closestPt = __spreadProps(__spreadValues({}, intersectPt), {\n properties: __spreadProps(__spreadValues({}, intersectPt.properties), { index: i })\n });\n }\n length += sectionLength;\n }\n }\n );\n return closestPt;\n}\nvar turf_nearest_point_on_line_default = nearestPointOnLine;\nexport {\n turf_nearest_point_on_line_default as default,\n nearestPointOnLine\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { distance } from \"@turf/distance\";\nfunction square(bbox) {\n var west = bbox[0];\n var south = bbox[1];\n var east = bbox[2];\n var north = bbox[3];\n var horizontalDistance = distance(bbox.slice(0, 2), [east, south]);\n var verticalDistance = distance(bbox.slice(0, 2), [west, north]);\n if (horizontalDistance >= verticalDistance) {\n var verticalMidpoint = (south + north) / 2;\n return [\n west,\n verticalMidpoint - (east - west) / 2,\n east,\n verticalMidpoint + (east - west) / 2\n ];\n } else {\n var horizontalMidpoint = (west + east) / 2;\n return [\n horizontalMidpoint - (north - south) / 2,\n south,\n horizontalMidpoint + (north - south) / 2,\n north\n ];\n }\n}\nvar turf_square_default = square;\nexport {\n turf_square_default as default,\n square\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { coordEach } from \"@turf/meta\";\nimport { isObject } from \"@turf/helpers\";\nfunction truncate(geojson, options) {\n options = options != null ? options : {};\n if (!isObject(options))\n throw new Error(\"options is invalid\");\n var precision = options.precision;\n var coordinates = options.coordinates;\n var mutate = options.mutate;\n precision = precision === void 0 || precision === null || isNaN(precision) ? 6 : precision;\n coordinates = coordinates === void 0 || coordinates === null || isNaN(coordinates) ? 3 : coordinates;\n if (!geojson)\n throw new Error(\" is required\");\n if (typeof precision !== \"number\")\n throw new Error(\" must be a number\");\n if (typeof coordinates !== \"number\")\n throw new Error(\" must be a number\");\n if (mutate === false || mutate === void 0)\n geojson = JSON.parse(JSON.stringify(geojson));\n var factor = Math.pow(10, precision);\n coordEach(geojson, function(coords) {\n truncateCoords(coords, factor, coordinates);\n });\n return geojson;\n}\nfunction truncateCoords(coords, factor, coordinates) {\n if (coords.length > coordinates)\n coords.splice(coordinates, coords.length);\n for (var i = 0; i < coords.length; i++) {\n coords[i] = Math.round(coords[i] * factor) / factor;\n }\n return coords;\n}\nvar turf_truncate_default = truncate;\nexport {\n turf_truncate_default as default,\n truncate\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { geojsonRbush as rbush } from \"@turf/geojson-rbush\";\nimport { square } from \"@turf/square\";\nimport { bbox } from \"@turf/bbox\";\nimport { truncate } from \"@turf/truncate\";\nimport { lineSegment } from \"@turf/line-segment\";\nimport { lineIntersect } from \"@turf/line-intersect\";\nimport { nearestPointOnLine } from \"@turf/nearest-point-on-line\";\nimport { getCoords, getCoord, getType } from \"@turf/invariant\";\nimport { featureEach, featureReduce, flattenEach } from \"@turf/meta\";\nimport { lineString, featureCollection } from \"@turf/helpers\";\nfunction lineSplit(line, splitter) {\n if (!line)\n throw new Error(\"line is required\");\n if (!splitter)\n throw new Error(\"splitter is required\");\n var lineType = getType(line);\n var splitterType = getType(splitter);\n if (lineType !== \"LineString\")\n throw new Error(\"line must be LineString\");\n if (splitterType === \"FeatureCollection\")\n throw new Error(\"splitter cannot be a FeatureCollection\");\n if (splitterType === \"GeometryCollection\")\n throw new Error(\"splitter cannot be a GeometryCollection\");\n var truncatedSplitter = truncate(splitter, { precision: 7 });\n switch (splitterType) {\n case \"Point\":\n return splitLineWithPoint(line, truncatedSplitter);\n case \"MultiPoint\":\n return splitLineWithPoints(line, truncatedSplitter);\n case \"LineString\":\n case \"MultiLineString\":\n case \"Polygon\":\n case \"MultiPolygon\":\n return splitLineWithPoints(\n line,\n lineIntersect(line, truncatedSplitter, {\n ignoreSelfIntersections: true\n })\n );\n }\n}\nfunction splitLineWithPoints(line, splitter) {\n var results = [];\n var tree = rbush();\n flattenEach(splitter, function(point) {\n results.forEach(function(feature, index) {\n feature.id = index;\n });\n if (!results.length) {\n results = splitLineWithPoint(line, point).features;\n results.forEach(function(feature) {\n if (!feature.bbox)\n feature.bbox = square(bbox(feature));\n });\n tree.load(featureCollection(results));\n } else {\n var search = tree.search(point);\n if (search.features.length) {\n var closestLine = findClosestFeature(point, search);\n results = results.filter(function(feature) {\n return feature.id !== closestLine.id;\n });\n tree.remove(closestLine);\n featureEach(splitLineWithPoint(closestLine, point), function(line2) {\n results.push(line2);\n tree.insert(line2);\n });\n }\n }\n });\n return featureCollection(results);\n}\nfunction splitLineWithPoint(line, splitter) {\n var results = [];\n var startPoint = getCoords(line)[0];\n var endPoint = getCoords(line)[line.geometry.coordinates.length - 1];\n if (pointsEquals(startPoint, getCoord(splitter)) || pointsEquals(endPoint, getCoord(splitter)))\n return featureCollection([line]);\n var tree = rbush();\n var segments = lineSegment(line);\n tree.load(segments);\n var search = tree.search(splitter);\n if (!search.features.length)\n return featureCollection([line]);\n var closestSegment = findClosestFeature(splitter, search);\n var initialValue = [startPoint];\n var lastCoords = featureReduce(\n segments,\n function(previous, current, index) {\n var currentCoords = getCoords(current)[1];\n var splitterCoords = getCoord(splitter);\n if (index === closestSegment.id) {\n previous.push(splitterCoords);\n results.push(lineString(previous));\n if (pointsEquals(splitterCoords, currentCoords))\n return [splitterCoords];\n return [splitterCoords, currentCoords];\n } else {\n previous.push(currentCoords);\n return previous;\n }\n },\n initialValue\n );\n if (lastCoords.length > 1) {\n results.push(lineString(lastCoords));\n }\n return featureCollection(results);\n}\nfunction findClosestFeature(point, lines) {\n if (!lines.features.length)\n throw new Error(\"lines must contain features\");\n if (lines.features.length === 1)\n return lines.features[0];\n var closestFeature;\n var closestDistance = Infinity;\n featureEach(lines, function(segment) {\n var pt = nearestPointOnLine(segment, point);\n var dist = pt.properties.dist;\n if (dist < closestDistance) {\n closestFeature = segment;\n closestDistance = dist;\n }\n });\n return closestFeature;\n}\nfunction pointsEquals(pt1, pt2) {\n return pt1[0] === pt2[0] && pt1[1] === pt2[1];\n}\nvar turf_line_split_default = lineSplit;\nexport {\n turf_line_split_default as default,\n lineSplit\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { bearing } from \"@turf/bearing\";\nimport { destination } from \"@turf/destination\";\nimport { distance } from \"@turf/distance\";\nfunction midpoint(point1, point2) {\n const dist = distance(point1, point2);\n const heading = bearing(point1, point2);\n const midpoint2 = destination(point1, dist / 2, heading);\n return midpoint2;\n}\nvar turf_midpoint_default = midpoint;\nexport {\n turf_midpoint_default as default,\n midpoint\n};\n//# sourceMappingURL=index.js.map","import type { Blueprint, ThemeDefinition } from 'vuetify';\nimport colors from '../styles/colors.module.scss';\n\nconst light: ThemeDefinition = {\n colors: {\n 'on-surface': colors.greyDarken5,\n primary: colors.greenDarken1,\n secondary: colors.greyDarken4,\n 'on-secondary': colors.onGreyDarken4,\n header: colors.greyDarken4,\n 'on-header': colors.onGreyDarken4,\n footer: colors.greyDarken4,\n 'on-footer': colors.onGreyDarken4\n }\n};\n\nconst dark: ThemeDefinition = {\n colors: {\n 'on-surface': colors.white,\n primary: colors.greenLighten1,\n secondary: colors.greyDarken4,\n 'on-secondary': colors.onGreyDarken4,\n header: colors.greyDarken4,\n 'on-header': colors.onGreyDarken4,\n footer: colors.greyDarken4,\n 'on-footer': colors.onGreyDarken4\n }\n};\n\nexport default {\n defaults: {\n VAppBar: {\n flat: true,\n\n VIcon: {\n size: 32\n }\n },\n ...Object.fromEntries(\n ['VAutocomplete', 'VCombobox', 'VFileInput', 'VSelect', 'VTextField', 'VTextarea'].map(component => [\n component,\n { variant: 'outlined' }\n ])\n )\n },\n display: {\n mobileBreakpoint: 'md',\n thresholds: {\n lg: 1140\n }\n },\n theme: {\n defaultTheme: 'light',\n themes: {\n light,\n dark\n }\n }\n} as Blueprint;\n\nexport { light, dark, colors };\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABSCAMAAAAhFXfZAAAC91BMVEVMaXEzeak2f7I4g7g3g7cua5gzeKg8hJo3grY4g7c3grU0gLI2frE0daAubJc2gbQwd6QzeKk2gLMtd5sxdKIua5g1frA2f7IydaM0e6w2fq41fK01eqo3grgubJgta5cxdKI1f7AydaQydaMxc6EubJgvbJkwcZ4ubZkwcJwubZgubJcydqUydKIxapgubJctbJcubZcubJcvbJYubJcvbZkubJctbJctbZcubJg2f7AubJcrbZcubJcubJcua5g3grY0fq8ubJcubJdEkdEwhsw6i88vhswuhcsuhMtBjMgthMsrg8srgss6is8qgcs8i9A9iMYtg8spgcoogMo7hcMngMonf8olfso4gr8kfck5iM8jfMk4iM8he8k1fro7itAgesk2hs8eecgzfLcofssdeMg0hc4cd8g2hcsxeLQbdsgZdcgxeLImfcszhM0vda4xgckzhM4xg84wf8Yxgs4udKsvfcQucqhUndROmdM1fK0wcZ8vb5w0eqpQm9MzeKhXoNVcpdYydKNWn9VZotVKltJFjsIwcJ1Rms9OlslLmtH///8+kc9epdYzd6dbo9VHkMM2f7FHmNBClM8ydqVcpNY9hro3gLM9hLczealQmcw3fa46f7A8gLMxc6I3eagyc6FIldJMl9JSnNRSntNNl9JPnNJFi75UnM9ZodVKksg8kM45jc09e6ZHltFBk883gbRBh7pDk9EwcaBzn784g7dKkcY2i81Om9M7j85Llc81is09g7Q4grY/j9A0eqxKmdFFltBEjcXf6fFImdBCiLxJl9FGlNFBi78yiMxVndEvbpo6js74+vx+psPP3+o/ks5HkcpGmNCjwdZCkNDM3ehYoNJEls+lxNkxh8xHks0+jdC1zd5Lg6r+/v/H2ufz9/o3jM3t8/edvdM/k89Th61OiLBSjbZklbaTt9BfptdjmL1AicBHj8hGk9FAgK1dkLNTjLRekrdClc/k7fM0icy0y9tgp9c4jc2NtM9Dlc8zicxeXZn3AAAAQ3RSTlMAHDdTb4yPA+LtnEQmC4L2EmHqB7XA0d0sr478x4/Yd5i1zOfyPkf1sLVq4Nh3FvjxopQ2/STNuFzUwFIwxKaejILpIBEV9wAABhVJREFUeF6s1NdyFEcY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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAQAAAACach9AAACMUlEQVR4Ae3ShY7jQBAE0Aoz/f9/HTMzhg1zrdKUrJbdx+Kd2nD8VNudfsL/Th///dyQN2TH6f3y/BGpC379rV+S+qqetBOxImNQXL8JCAr2V4iMQXHGNJxeCfZXhSRBcQMfvkOWUdtfzlLgAENmZDcmo2TVmt8OSM2eXxBp3DjHSMFutqS7SbmemzBiR+xpKCNUIRkdkkYxhAkyGoBvyQFEJEefwSmmvBfJuJ6aKqKWnAkvGZOaZXTUgFqYULWNSHUckZuR1HIIimUExutRxwzOLROIG4vKmCKQt364mIlhSyzAf1m9lHZHJZrlAOMMztRRiKimp/rpdJDc9Awry5xTZCte7FHtuS8wJgeYGrex28xNTd086Dik7vUMscQOa8y4DoGtCCSkAKlNwpgNtphjrC6MIHUkR6YWxxs6Sc5xqn222mmCRFzIt8lEdKx+ikCtg91qS2WpwVfBelJCiQJwvzixfI9cxZQWgiSJelKnwBElKYtDOb2MFbhmUigbReQBV0Cg4+qMXSxXSyGUn4UbF8l+7qdSGnTC0XLCmahIgUHLhLOhpVCtw4CzYXvLQWQbJNmxoCsOKAxSgBJno75avolkRw8iIAFcsdc02e9iyCd8tHwmeSSoKTowIgvscSGZUOA7PuCN5b2BX9mQM7S0wYhMNU74zgsPBj3HU7wguAfnxxjFQGBE6pwN+GjME9zHY7zGp8wVxMShYX9NXvEWD3HbwJf4giO4CFIQxXScH1/TM+04kkBiAAAAAElFTkSuQmCC\"","export const createAddUniqueNumber = (generateUniqueNumber) => {\n return (set) => {\n const number = generateUniqueNumber(set);\n set.add(number);\n return number;\n };\n};\n//# sourceMappingURL=add-unique-number.js.map","export const createCache = (lastNumberWeakMap) => {\n return (collection, nextNumber) => {\n lastNumberWeakMap.set(collection, nextNumber);\n return nextNumber;\n };\n};\n//# sourceMappingURL=cache.js.map","/*\n * The value of the constant Number.MAX_SAFE_INTEGER equals (2 ** 53 - 1) but it\n * is fairly new.\n */\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER === undefined ? 9007199254740991 : Number.MAX_SAFE_INTEGER;\nconst TWO_TO_THE_POWER_OF_TWENTY_NINE = 536870912;\nconst TWO_TO_THE_POWER_OF_THIRTY = TWO_TO_THE_POWER_OF_TWENTY_NINE * 2;\nexport const createGenerateUniqueNumber = (cache, lastNumberWeakMap) => {\n return (collection) => {\n const lastNumber = lastNumberWeakMap.get(collection);\n /*\n * Let's try the cheapest algorithm first. It might fail to produce a new\n * number, but it is so cheap that it is okay to take the risk. Just\n * increase the last number by one or reset it to 0 if we reached the upper\n * bound of SMIs (which stands for small integers). When the last number is\n * unknown it is assumed that the collection contains zero based consecutive\n * numbers.\n */\n let nextNumber = lastNumber === undefined ? collection.size : lastNumber < TWO_TO_THE_POWER_OF_THIRTY ? lastNumber + 1 : 0;\n if (!collection.has(nextNumber)) {\n return cache(collection, nextNumber);\n }\n /*\n * If there are less than half of 2 ** 30 numbers stored in the collection,\n * the chance to generate a new random number in the range from 0 to 2 ** 30\n * is at least 50%. It's benifitial to use only SMIs because they perform\n * much better in any environment based on V8.\n */\n if (collection.size < TWO_TO_THE_POWER_OF_TWENTY_NINE) {\n while (collection.has(nextNumber)) {\n nextNumber = Math.floor(Math.random() * TWO_TO_THE_POWER_OF_THIRTY);\n }\n return cache(collection, nextNumber);\n }\n // Quickly check if there is a theoretical chance to generate a new number.\n if (collection.size > MAX_SAFE_INTEGER) {\n throw new Error('Congratulations, you created a collection of unique numbers which uses all available integers!');\n }\n // Otherwise use the full scale of safely usable integers.\n while (collection.has(nextNumber)) {\n nextNumber = Math.floor(Math.random() * MAX_SAFE_INTEGER);\n }\n return cache(collection, nextNumber);\n };\n};\n//# sourceMappingURL=generate-unique-number.js.map","import { createAddUniqueNumber } from './factories/add-unique-number';\nimport { createCache } from './factories/cache';\nimport { createGenerateUniqueNumber } from './factories/generate-unique-number';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './types/index';\nconst LAST_NUMBER_WEAK_MAP = new WeakMap();\nconst cache = createCache(LAST_NUMBER_WEAK_MAP);\nconst generateUniqueNumber = createGenerateUniqueNumber(cache, LAST_NUMBER_WEAK_MAP);\nconst addUniqueNumber = createAddUniqueNumber(generateUniqueNumber);\nexport { addUniqueNumber, generateUniqueNumber };\n//# sourceMappingURL=module.js.map","export const isMessagePort = (sender) => {\n return typeof sender.start === 'function';\n};\n//# sourceMappingURL=message-port.js.map","export const PORT_MAP = new WeakMap();\n//# sourceMappingURL=port-map.js.map","import { PORT_MAP } from './port-map';\nexport const extendBrokerImplementation = (partialBrokerImplementation) => ({\n ...partialBrokerImplementation,\n connect: ({ call }) => {\n return async () => {\n const { port1, port2 } = new MessageChannel();\n const portId = await call('connect', { port: port1 }, [port1]);\n PORT_MAP.set(port2, portId);\n return port2;\n };\n },\n disconnect: ({ call }) => {\n return async (port) => {\n const portId = PORT_MAP.get(port);\n if (portId === undefined) {\n throw new Error('The given port is not connected.');\n }\n await call('disconnect', { portId });\n };\n },\n isSupported: ({ call }) => {\n return () => call('isSupported');\n }\n});\n//# sourceMappingURL=extend-broker-implementation.js.map","import { generateUniqueNumber } from 'fast-unique-numbers';\nimport { isMessagePort } from './guards/message-port';\nimport { extendBrokerImplementation } from './helpers/extend-broker-implementation';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nconst ONGOING_REQUESTS = new WeakMap();\nconst createOrGetOngoingRequests = (sender) => {\n if (ONGOING_REQUESTS.has(sender)) {\n // @todo TypeScript needs to be convinced that has() works as expected.\n return ONGOING_REQUESTS.get(sender);\n }\n const ongoingRequests = new Map();\n ONGOING_REQUESTS.set(sender, ongoingRequests);\n return ongoingRequests;\n};\nexport const createBroker = (brokerImplementation) => {\n const fullBrokerImplementation = extendBrokerImplementation(brokerImplementation);\n return (sender) => {\n const ongoingRequests = createOrGetOngoingRequests(sender);\n sender.addEventListener('message', (({ data: message }) => {\n const { id } = message;\n if (id !== null && ongoingRequests.has(id)) {\n const { reject, resolve } = ongoingRequests.get(id);\n ongoingRequests.delete(id);\n if (message.error === undefined) {\n resolve(message.result);\n }\n else {\n reject(new Error(message.error.message));\n }\n }\n }));\n if (isMessagePort(sender)) {\n sender.start();\n }\n const call = (method, params = null, transferables = []) => {\n return new Promise((resolve, reject) => {\n const id = generateUniqueNumber(ongoingRequests);\n ongoingRequests.set(id, { reject, resolve });\n if (params === null) {\n sender.postMessage({ id, method }, transferables);\n }\n else {\n sender.postMessage({ id, method, params }, transferables);\n }\n });\n };\n const notify = (method, params, transferables = []) => {\n sender.postMessage({ id: null, method, params }, transferables);\n };\n let functions = {};\n for (const [key, handler] of Object.entries(fullBrokerImplementation)) {\n functions = { ...functions, [key]: handler({ call, notify }) };\n }\n return { ...functions };\n };\n};\n//# sourceMappingURL=module.js.map","import { createBroker } from 'broker-factory';\nimport { addUniqueNumber } from 'fast-unique-numbers';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nconst encoderIds = new Set();\nconst encoderInstanceIds = new Set();\nconst messagePorts = new WeakMap();\nexport const wrap = createBroker({\n deregister: ({ call }) => {\n return async (port) => {\n const encoderId = messagePorts.get(port);\n if (encoderId === undefined) {\n throw new Error('There is no encoder registered with the given port.');\n }\n const result = await call('deregister', { encoderId });\n encoderIds.delete(encoderId);\n messagePorts.delete(port);\n return result;\n };\n },\n encode: ({ call }) => {\n return async (encoderInstanceId, timeslice) => {\n const arrayBuffers = await call('encode', { encoderInstanceId, timeslice });\n encoderInstanceIds.delete(encoderInstanceId);\n return arrayBuffers;\n };\n },\n instantiate: ({ call }) => {\n return async (mimeType, sampleRate) => {\n const encoderInstanceId = addUniqueNumber(encoderInstanceIds);\n const port = await call('instantiate', { encoderInstanceId, mimeType, sampleRate });\n return { encoderInstanceId, port };\n };\n },\n register: ({ call }) => {\n return async (port) => {\n if (messagePorts.has(port)) {\n throw new Error('');\n }\n const encoderId = addUniqueNumber(encoderIds);\n messagePorts.set(port, encoderId);\n try {\n return await call('register', { encoderId, port }, [port]);\n }\n catch (err) {\n encoderIds.delete(encoderId);\n messagePorts.delete(port);\n throw err;\n }\n };\n }\n});\nexport const load = (url) => {\n const worker = new Worker(url);\n return wrap(worker);\n};\n//# sourceMappingURL=module.js.map","// This is the minified and stringified code of the media-encoder-host-worker package.\nexport const worker = `(()=>{var e={455:function(e,t){!function(e){\"use strict\";var t=function(e){return function(t){var r=e(t);return t.add(r),r}},r=function(e){return function(t,r){return e.set(t,r),r}},n=void 0===Number.MAX_SAFE_INTEGER?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,s=2*o,a=function(e,t){return function(r){var a=t.get(r),c=void 0===a?r.size:an)throw new Error(\"Congratulations, you created a collection of unique numbers which uses all available integers!\");for(;r.has(c);)c=Math.floor(Math.random()*n);return e(r,c)}},c=new WeakMap,i=r(c),d=a(i,c),l=t(d);e.addUniqueNumber=l,e.generateUniqueNumber=d}(t)}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,r),s.exports}(()=>{\"use strict\";var e=r(455);const t=new WeakMap,n=new WeakMap,o=(r=>{const o=(s=r,{...s,connect:({call:e})=>async()=>{const{port1:r,port2:n}=new MessageChannel,o=await e(\"connect\",{port:r},[r]);return t.set(n,o),n},disconnect:({call:e})=>async r=>{const n=t.get(r);if(void 0===n)throw new Error(\"The given port is not connected.\");await e(\"disconnect\",{portId:n})},isSupported:({call:e})=>()=>e(\"isSupported\")});var s;return t=>{const r=(e=>{if(n.has(e))return n.get(e);const t=new Map;return n.set(e,t),t})(t);t.addEventListener(\"message\",(({data:e})=>{const{id:t}=e;if(null!==t&&r.has(t)){const{reject:n,resolve:o}=r.get(t);r.delete(t),void 0===e.error?o(e.result):n(new Error(e.error.message))}})),(e=>\"function\"==typeof e.start)(t)&&t.start();const s=(n,o=null,s=[])=>new Promise(((a,c)=>{const i=(0,e.generateUniqueNumber)(r);r.set(i,{reject:c,resolve:a}),null===o?t.postMessage({id:i,method:n},s):t.postMessage({id:i,method:n,params:o},s)})),a=(e,r,n=[])=>{t.postMessage({id:null,method:e,params:r},n)};let c={};for(const[e,t]of Object.entries(o))c={...c,[e]:t({call:s,notify:a})};return{...c}}})({characterize:({call:e})=>()=>e(\"characterize\"),encode:({call:e})=>(t,r)=>e(\"encode\",{recordingId:t,timeslice:r}),record:({call:e})=>async(t,r,n)=>{await e(\"record\",{recordingId:t,sampleRate:r,typedArrays:n},n.map((({buffer:e})=>e)))}}),s=-32603,a=-32602,c=-32601,i=(e,t)=>Object.assign(new Error(e),{status:t}),d=e=>i('The handler of the method called \"'.concat(e,'\" returned an unexpected result.'),s),l=(e,t)=>async({data:{id:r,method:n,params:o}})=>{const a=t[n];try{if(void 0===a)throw(e=>i('The requested method called \"'.concat(e,'\" is not supported.'),c))(n);const t=void 0===o?a():a(o);if(void 0===t)throw(e=>i('The handler of the method called \"'.concat(e,'\" returned no required result.'),s))(n);const l=t instanceof Promise?await t:t;if(null===r){if(void 0!==l.result)throw d(n)}else{if(void 0===l.result)throw d(n);const{result:t,transferables:o=[]}=l;e.postMessage({id:r,result:t},o)}}catch(t){const{message:n,status:o=-32603}=t;e.postMessage({error:{code:o,message:n},id:r})}},u=new Map,h=(t,r,n)=>({...r,connect:({port:n})=>{n.start();const o=t(n,r),s=(0,e.generateUniqueNumber)(u);return u.set(s,(()=>{o(),n.close(),u.delete(s)})),{result:s}},disconnect:({portId:e})=>{const t=u.get(e);if(void 0===t)throw(e=>i('The specified parameter called \"portId\" with the given value \"'.concat(e,'\" does not identify a port connected to this worker.'),a))(e);return t(),{result:null}},isSupported:async()=>{if(await new Promise((e=>{const t=new ArrayBuffer(0),{port1:r,port2:n}=new MessageChannel;r.onmessage=({data:t})=>e(null!==t),n.postMessage(t,[t])}))){const e=n();return{result:e instanceof Promise?await e:e}}return{result:!1}}}),w=(e,t,r=()=>!0)=>{const n=h(w,t,r),o=l(e,n);return e.addEventListener(\"message\",o),()=>e.removeEventListener(\"message\",o)},f=e=>{e.onmessage=null,e.close()},p=new Map,m=new Map,g=((e,t)=>r=>{const n=t.get(r);if(void 0===n)throw new Error(\"There was no encoder stored with the given id.\");e.delete(n),t.delete(r)})(p,m),v=new Map,y=(e=>t=>{const r=e.get(t);if(void 0===r)throw new Error(\"There was no instance of an encoder stored with the given id.\");return r})(v),M=((e,t)=>r=>{const n=t(r);return e.delete(r),n})(v,y),E=((e,t)=>r=>{const[n,o,s,a]=t(r);return s?new Promise((t=>{o.onmessage=({data:s})=>{0===s.length?(e(o),t(n.encode(r,null))):n.record(r,a,s)}})):n.encode(r,null)})(f,M),b=(e=>t=>{for(const[r,n]of Array.from(e.values()))if(r.test(t))return n;throw new Error(\"There is no encoder registered which could handle the given mimeType.\")})(p),T=((e,t,r)=>(n,o,s)=>{if(t.has(n))throw new Error('There is already an encoder instance registered with an id called \"'.concat(n,'\".'));const a=r(o),{port1:c,port2:i}=new MessageChannel,d=[a,c,!0,s];return t.set(n,d),c.onmessage=({data:t})=>{0===t.length?(e(c),d[2]=!1):a.record(n,s,t.map((e=>\"number\"==typeof e?new Float32Array(e):e)))},i})(f,v,b),I=((e,t,r)=>async(n,o)=>{const s=r(o),a=await s.characterize(),c=a.toString();if(e.has(c))throw new Error(\"There is already an encoder stored which handles exactly the same mime types.\");if(t.has(n))throw new Error('There is already an encoder registered with an id called \"'.concat(n,'\".'));return e.set(c,[a,s]),t.set(n,c),a})(p,m,o),A=(e=>(t,r)=>{const[n]=e(t);return n.encode(t,r)})(y);w(self,{deregister:async({encoderId:e})=>(g(e),{result:null}),encode:async({encoderInstanceId:e,timeslice:t})=>{const r=null===t?await E(e):await A(e,t);return{result:r,transferables:r}},instantiate:({encoderInstanceId:e,mimeType:t,sampleRate:r})=>{const n=T(e,t,r);return{result:n,transferables:[n]}},register:async({encoderId:e,port:t})=>({result:await I(e,t)})})})()})();`; // tslint:disable-line:max-line-length\n//# sourceMappingURL=worker.js.map","import { load as loadWorker } from 'media-encoder-host-broker';\nimport { worker } from './worker/worker';\nconst blob = new Blob([worker], { type: 'application/javascript; charset=utf-8' });\nconst url = URL.createObjectURL(blob);\nconst mediaEncoderHost = loadWorker(url);\nexport const connect = mediaEncoderHost.connect;\nexport const deregister = mediaEncoderHost.deregister;\nexport const disconnect = mediaEncoderHost.disconnect;\nexport const encode = mediaEncoderHost.encode;\nexport const instantiate = mediaEncoderHost.instantiate;\nexport const isSupported = mediaEncoderHost.isSupported;\nexport const register = mediaEncoderHost.register;\nURL.revokeObjectURL(url);\n//# sourceMappingURL=module.js.map","export const createBlobEventFactory = (nativeBlobEventConstructor) => {\n return (type, blobEventInit) => {\n if (nativeBlobEventConstructor === null) {\n throw new Error('A native BlobEvent could not be created.');\n }\n return new nativeBlobEventConstructor(type, blobEventInit);\n };\n};\n//# sourceMappingURL=blob-event-factory.js.map","export const createDecodeWebMChunk = (readElementContent, readElementType) => {\n return (dataView, elementType, channelCount) => {\n const contents = [];\n let currentElementType = elementType;\n let offset = 0;\n while (offset < dataView.byteLength) {\n if (currentElementType === null) {\n const lengthAndType = readElementType(dataView, offset);\n if (lengthAndType === null) {\n break;\n }\n const { length, type } = lengthAndType;\n currentElementType = type;\n offset += length;\n }\n else {\n const contentAndLength = readElementContent(dataView, offset, currentElementType, channelCount);\n if (contentAndLength === null) {\n break;\n }\n const { content, length } = contentAndLength;\n currentElementType = null;\n offset += length;\n if (content !== null) {\n contents.push(content);\n }\n }\n }\n return { contents, currentElementType, offset };\n };\n};\n//# sourceMappingURL=decode-web-m-chunk.js.map","export const createEventTargetConstructor = (createEventTarget, wrapEventListener) => {\n return class EventTarget {\n constructor(nativeEventTarget = null) {\n this._listeners = new WeakMap();\n this._nativeEventTarget = nativeEventTarget === null ? createEventTarget() : nativeEventTarget;\n }\n addEventListener(type, listener, options) {\n if (listener !== null) {\n let wrappedEventListener = this._listeners.get(listener);\n if (wrappedEventListener === undefined) {\n wrappedEventListener = wrapEventListener(this, listener);\n if (typeof listener === 'function') {\n this._listeners.set(listener, wrappedEventListener);\n }\n }\n this._nativeEventTarget.addEventListener(type, wrappedEventListener, options);\n }\n }\n dispatchEvent(event) {\n return this._nativeEventTarget.dispatchEvent(event);\n }\n removeEventListener(type, listener, options) {\n const wrappedEventListener = listener === null ? undefined : this._listeners.get(listener);\n this._nativeEventTarget.removeEventListener(type, wrappedEventListener === undefined ? null : wrappedEventListener, options);\n }\n };\n};\n//# sourceMappingURL=event-target-constructor.js.map","export const createEventTargetFactory = (window) => {\n return () => {\n if (window === null) {\n throw new Error('A native EventTarget could not be created.');\n }\n return window.document.createElement('p');\n };\n};\n//# sourceMappingURL=event-target-factory.js.map","export const createInvalidModificationError = (message = '') => {\n try {\n return new DOMException(message, 'InvalidModificationError');\n }\n catch (err) {\n // @todo Edge is the only browser that does not yet allow to construct a DOMException.\n err.code = 13;\n err.message = message;\n err.name = 'InvalidModificationError';\n return err;\n }\n};\n//# sourceMappingURL=invalid-modification-error.js.map","export const createInvalidStateError = () => {\n try {\n return new DOMException('', 'InvalidStateError');\n }\n catch (err) {\n // Bug #122: Edge is the only browser that does not yet allow to construct a DOMException.\n err.code = 11;\n err.name = 'InvalidStateError';\n return err;\n }\n};\n//# sourceMappingURL=invalid-state-error.js.map","export const createMediaRecorderConstructor = (createNativeMediaRecorder, createNotSupportedError, createWebAudioMediaRecorder, createWebmPcmMediaRecorder, encoderRegexes, eventTargetConstructor, nativeMediaRecorderConstructor) => {\n return class MediaRecorder extends eventTargetConstructor {\n constructor(stream, options = {}) {\n const { mimeType } = options;\n if (nativeMediaRecorderConstructor !== null &&\n // Bug #10: Safari does not yet implement the isTypeSupported() method.\n (mimeType === undefined ||\n (nativeMediaRecorderConstructor.isTypeSupported !== undefined &&\n nativeMediaRecorderConstructor.isTypeSupported(mimeType)))) {\n const internalMediaRecorder = createNativeMediaRecorder(nativeMediaRecorderConstructor, stream, options);\n super(internalMediaRecorder);\n this._internalMediaRecorder = internalMediaRecorder;\n }\n else if (mimeType !== undefined && encoderRegexes.some((regex) => regex.test(mimeType))) {\n super();\n // Bug #10: Safari does not yet implement the isTypeSupported() method.\n if (nativeMediaRecorderConstructor !== null &&\n nativeMediaRecorderConstructor.isTypeSupported !== undefined &&\n nativeMediaRecorderConstructor.isTypeSupported('audio/webm;codecs=pcm')) {\n this._internalMediaRecorder = createWebmPcmMediaRecorder(this, nativeMediaRecorderConstructor, stream, mimeType);\n }\n else {\n this._internalMediaRecorder = createWebAudioMediaRecorder(this, stream, mimeType);\n }\n }\n else {\n // This is creating a native MediaRecorder just to provoke it to throw an error.\n if (nativeMediaRecorderConstructor !== null) {\n createNativeMediaRecorder(nativeMediaRecorderConstructor, stream, options);\n }\n throw createNotSupportedError();\n }\n this._ondataavailable = null;\n this._onerror = null;\n this._onpause = null;\n this._onresume = null;\n this._onstart = null;\n this._onstop = null;\n }\n get mimeType() {\n return this._internalMediaRecorder.mimeType;\n }\n get ondataavailable() {\n return this._ondataavailable === null ? this._ondataavailable : this._ondataavailable[0];\n }\n set ondataavailable(value) {\n if (this._ondataavailable !== null) {\n this.removeEventListener('dataavailable', this._ondataavailable[1]);\n }\n if (typeof value === 'function') {\n const boundListener = value.bind(this);\n this.addEventListener('dataavailable', boundListener);\n this._ondataavailable = [value, boundListener];\n }\n else {\n this._ondataavailable = null;\n }\n }\n get onerror() {\n return this._onerror === null ? this._onerror : this._onerror[0];\n }\n set onerror(value) {\n if (this._onerror !== null) {\n this.removeEventListener('error', this._onerror[1]);\n }\n if (typeof value === 'function') {\n const boundListener = value.bind(this);\n this.addEventListener('error', boundListener);\n this._onerror = [value, boundListener];\n }\n else {\n this._onerror = null;\n }\n }\n get onpause() {\n return this._onpause === null ? this._onpause : this._onpause[0];\n }\n set onpause(value) {\n if (this._onpause !== null) {\n this.removeEventListener('pause', this._onpause[1]);\n }\n if (typeof value === 'function') {\n const boundListener = value.bind(this);\n this.addEventListener('pause', boundListener);\n this._onpause = [value, boundListener];\n }\n else {\n this._onpause = null;\n }\n }\n get onresume() {\n return this._onresume === null ? this._onresume : this._onresume[0];\n }\n set onresume(value) {\n if (this._onresume !== null) {\n this.removeEventListener('resume', this._onresume[1]);\n }\n if (typeof value === 'function') {\n const boundListener = value.bind(this);\n this.addEventListener('resume', boundListener);\n this._onresume = [value, boundListener];\n }\n else {\n this._onresume = null;\n }\n }\n get onstart() {\n return this._onstart === null ? this._onstart : this._onstart[0];\n }\n set onstart(value) {\n if (this._onstart !== null) {\n this.removeEventListener('start', this._onstart[1]);\n }\n if (typeof value === 'function') {\n const boundListener = value.bind(this);\n this.addEventListener('start', boundListener);\n this._onstart = [value, boundListener];\n }\n else {\n this._onstart = null;\n }\n }\n get onstop() {\n return this._onstop === null ? this._onstop : this._onstop[0];\n }\n set onstop(value) {\n if (this._onstop !== null) {\n this.removeEventListener('stop', this._onstop[1]);\n }\n if (typeof value === 'function') {\n const boundListener = value.bind(this);\n this.addEventListener('stop', boundListener);\n this._onstop = [value, boundListener];\n }\n else {\n this._onstop = null;\n }\n }\n get state() {\n return this._internalMediaRecorder.state;\n }\n pause() {\n return this._internalMediaRecorder.pause();\n }\n resume() {\n return this._internalMediaRecorder.resume();\n }\n start(timeslice) {\n return this._internalMediaRecorder.start(timeslice);\n }\n stop() {\n return this._internalMediaRecorder.stop();\n }\n static isTypeSupported(mimeType) {\n return ((nativeMediaRecorderConstructor !== null &&\n // Bug #10: Safari does not yet implement the isTypeSupported() method.\n nativeMediaRecorderConstructor.isTypeSupported !== undefined &&\n nativeMediaRecorderConstructor.isTypeSupported(mimeType)) ||\n encoderRegexes.some((regex) => regex.test(mimeType)));\n }\n };\n};\n//# sourceMappingURL=media-recorder-constructor.js.map","export const createNativeBlobEventConstructor = (window) => {\n if (window !== null && window.BlobEvent !== undefined) {\n return window.BlobEvent;\n }\n return null;\n};\n//# sourceMappingURL=native-blob-event-constructor.js.map","export const createNativeMediaRecorderConstructor = (window) => {\n if (window === null) {\n return null;\n }\n return window.MediaRecorder === undefined ? null : window.MediaRecorder;\n};\n//# sourceMappingURL=native-media-recorder-constructor.js.map","export const createNativeMediaRecorderFactory = (createNotSupportedError) => (nativeMediaRecorderConstructor, stream, mediaRecorderOptions) => {\n const bufferedBlobEventListeners = new Map();\n const dataAvailableListeners = new WeakMap();\n const errorListeners = new WeakMap();\n const flags = [];\n const nativeMediaRecorder = new nativeMediaRecorderConstructor(stream, mediaRecorderOptions);\n const stopListeners = new WeakMap();\n nativeMediaRecorder.addEventListener('stop', ({ isTrusted }) => {\n if (isTrusted) {\n setTimeout(() => flags.shift());\n }\n });\n nativeMediaRecorder.addEventListener = ((addEventListener) => {\n return (type, listener, options) => {\n let patchedEventListener = listener;\n if (typeof listener === 'function') {\n if (type === 'dataavailable') {\n const bufferedBlobEvents = [];\n // Bug #20: Firefox dispatches multiple dataavailable events while being inactive.\n patchedEventListener = (event) => {\n const [[isSliced, isActive] = [false, false]] = flags;\n if (isSliced && !isActive) {\n bufferedBlobEvents.push(event);\n }\n else {\n listener.call(nativeMediaRecorder, event);\n }\n };\n bufferedBlobEventListeners.set(listener, bufferedBlobEvents);\n dataAvailableListeners.set(listener, patchedEventListener);\n }\n else if (type === 'error') {\n // Bug #12 & #13: Firefox fires a regular event with an error property.\n patchedEventListener = (event) => {\n if (event instanceof ErrorEvent) {\n listener.call(nativeMediaRecorder, event);\n }\n else {\n listener.call(nativeMediaRecorder, new ErrorEvent('error', { error: event.error }));\n }\n };\n errorListeners.set(listener, patchedEventListener);\n }\n else if (type === 'stop') {\n // Bug #20: Firefox dispatches multiple dataavailable events while being inactive.\n patchedEventListener = (event) => {\n for (const [dataAvailableListener, bufferedBlobEvents] of bufferedBlobEventListeners.entries()) {\n if (bufferedBlobEvents.length > 0) {\n const [blobEvent] = bufferedBlobEvents;\n if (bufferedBlobEvents.length > 1) {\n Object.defineProperty(blobEvent, 'data', {\n value: new Blob(bufferedBlobEvents.map(({ data }) => data), { type: blobEvent.data.type })\n });\n }\n bufferedBlobEvents.length = 0;\n dataAvailableListener.call(nativeMediaRecorder, blobEvent);\n }\n }\n listener.call(nativeMediaRecorder, event);\n };\n stopListeners.set(listener, patchedEventListener);\n }\n }\n return addEventListener.call(nativeMediaRecorder, type, patchedEventListener, options);\n };\n })(nativeMediaRecorder.addEventListener);\n nativeMediaRecorder.removeEventListener = ((removeEventListener) => {\n return (type, listener, options) => {\n let patchedEventListener = listener;\n if (typeof listener === 'function') {\n if (type === 'dataavailable') {\n bufferedBlobEventListeners.delete(listener);\n const dataAvailableListener = dataAvailableListeners.get(listener);\n if (dataAvailableListener !== undefined) {\n patchedEventListener = dataAvailableListener;\n }\n }\n else if (type === 'error') {\n const errorListener = errorListeners.get(listener);\n if (errorListener !== undefined) {\n patchedEventListener = errorListener;\n }\n }\n else if (type === 'stop') {\n const stopListener = stopListeners.get(listener);\n if (stopListener !== undefined) {\n patchedEventListener = stopListener;\n }\n }\n }\n return removeEventListener.call(nativeMediaRecorder, type, patchedEventListener, options);\n };\n })(nativeMediaRecorder.removeEventListener);\n nativeMediaRecorder.start = ((start) => {\n return (timeslice) => {\n /*\n * Bug #6: Safari will emit a blob without any data when asked to encode a MediaStream with a video track into an audio\n * codec.\n */\n if (mediaRecorderOptions.mimeType !== undefined &&\n mediaRecorderOptions.mimeType.startsWith('audio/') &&\n stream.getVideoTracks().length > 0) {\n throw createNotSupportedError();\n }\n if (nativeMediaRecorder.state === 'inactive') {\n flags.push([timeslice !== undefined, true]);\n }\n return timeslice === undefined ? start.call(nativeMediaRecorder) : start.call(nativeMediaRecorder, timeslice);\n };\n })(nativeMediaRecorder.start);\n nativeMediaRecorder.stop = ((stop) => {\n return () => {\n if (nativeMediaRecorder.state !== 'inactive') {\n flags[0][1] = false;\n }\n stop.call(nativeMediaRecorder);\n };\n })(nativeMediaRecorder.stop);\n return nativeMediaRecorder;\n};\n//# sourceMappingURL=native-media-recorder-factory.js.map","export const createNotSupportedError = () => {\n try {\n return new DOMException('', 'NotSupportedError');\n }\n catch (err) {\n // @todo Edge is the only browser that does not yet allow to construct a DOMException.\n err.code = 9;\n err.name = 'NotSupportedError';\n return err;\n }\n};\n//# sourceMappingURL=not-supported-error.js.map","export const createReadElementContent = (readVariableSizeInteger) => {\n return (dataView, offset, type, channelCount = 2) => {\n const lengthAndValue = readVariableSizeInteger(dataView, offset);\n if (lengthAndValue === null) {\n return lengthAndValue;\n }\n const { length, value } = lengthAndValue;\n if (type === 'master') {\n return { content: null, length };\n }\n if (offset + length + value > dataView.byteLength) {\n return null;\n }\n if (type === 'binary') {\n const numberOfSamples = (value / Float32Array.BYTES_PER_ELEMENT - 1) / channelCount;\n const content = Array.from({ length: channelCount }, () => new Float32Array(numberOfSamples));\n for (let i = 0; i < numberOfSamples; i += 1) {\n const elementOffset = i * channelCount + 1;\n for (let j = 0; j < channelCount; j += 1) {\n content[j][i] = dataView.getFloat32(offset + length + (elementOffset + j) * Float32Array.BYTES_PER_ELEMENT, true);\n }\n }\n return { content, length: length + value };\n }\n return { content: null, length: length + value };\n };\n};\n//# sourceMappingURL=read-element-content.js.map","export const createReadElementType = (readVariableSizeInteger) => {\n return (dataView, offset) => {\n const lengthAndValue = readVariableSizeInteger(dataView, offset);\n if (lengthAndValue === null) {\n return lengthAndValue;\n }\n const { length, value } = lengthAndValue;\n if (value === 35) {\n return { length, type: 'binary' };\n }\n if (value === 46 ||\n value === 97 ||\n value === 88713574 ||\n value === 106212971 ||\n value === 139690087 ||\n value === 172351395 ||\n value === 256095861) {\n return { length, type: 'master' };\n }\n return { length, type: 'unknown' };\n };\n};\n//# sourceMappingURL=read-element-type.js.map","export const createReadVariableSizeInteger = (readVariableSizeIntegerLength) => {\n return (dataView, offset) => {\n const length = readVariableSizeIntegerLength(dataView, offset);\n if (length === null) {\n return length;\n }\n const firstDataByteOffset = offset + Math.floor((length - 1) / 8);\n if (firstDataByteOffset + length > dataView.byteLength) {\n return null;\n }\n const firstDataByte = dataView.getUint8(firstDataByteOffset);\n let value = firstDataByte & ((1 << (8 - (length % 8))) - 1); // tslint:disable-line:no-bitwise\n for (let i = 1; i < length; i += 1) {\n value = (value << 8) + dataView.getUint8(firstDataByteOffset + i); // tslint:disable-line:no-bitwise\n }\n return { length, value };\n };\n};\n//# sourceMappingURL=read-variable-size-integer.js.map","export const observable = Symbol.observable || \"@@observable\";\r\n//# sourceMappingURL=symbols.js.map","import { observable } from \"./symbols\";\r\nexport function patch(arg) {\r\n if (!Symbol.observable) {\r\n if (typeof arg === \"function\" &&\r\n arg.prototype &&\r\n arg.prototype[Symbol.observable]) {\r\n arg.prototype[observable] = arg.prototype[Symbol.observable];\r\n delete arg.prototype[Symbol.observable];\r\n }\r\n else {\r\n arg[observable] = arg[Symbol.observable];\r\n delete arg[Symbol.observable];\r\n }\r\n }\r\n return arg;\r\n}\r\n//# sourceMappingURL=patch.js.map","const noop = () => { };\r\nconst rethrow = (error) => {\r\n throw error;\r\n};\r\nexport function toObserver(observer) {\r\n if (observer) {\r\n if (observer.next && observer.error && observer.complete) {\r\n return observer;\r\n }\r\n return {\r\n complete: (observer.complete ?? noop).bind(observer),\r\n error: (observer.error ?? rethrow).bind(observer),\r\n next: (observer.next ?? noop).bind(observer),\r\n };\r\n }\r\n return {\r\n complete: noop,\r\n error: rethrow,\r\n next: noop,\r\n };\r\n}\r\n//# sourceMappingURL=to-observer.js.map","export const createOn = (wrapSubscribeFunction) => {\n return (target, type, options) => wrapSubscribeFunction((observer) => {\n const listener = (event) => observer.next(event);\n target.addEventListener(type, listener, options);\n return () => target.removeEventListener(type, listener, options);\n });\n};\n//# sourceMappingURL=on.js.map","export const createWrapSubscribeFunction = (patch, toObserver) => {\n const emptyFunction = () => { }; // tslint:disable-line:no-empty\n const isNextFunction = (args) => typeof args[0] === 'function';\n return (innerSubscribe) => {\n const subscribe = ((...args) => {\n const unsubscribe = innerSubscribe(isNextFunction(args) ? toObserver({ next: args[0] }) : toObserver(...args));\n if (unsubscribe !== undefined) {\n return unsubscribe;\n }\n return emptyFunction;\n });\n subscribe[Symbol.observable] = () => ({\n subscribe: (...args) => ({ unsubscribe: subscribe(...args) })\n });\n return patch(subscribe);\n };\n};\n//# sourceMappingURL=wrap-subscribe-function.js.map","import { patch, toObserver } from 'rxjs-interop';\nimport { createAnimationFrame } from './factories/animation-frame';\nimport { createAttribute } from './factories/attribute';\nimport { createGeolocation } from './factories/geolocation';\nimport { createIntersections } from './factories/intersections';\nimport { createMapSubscribableThing } from './factories/map-subscribable-thing';\nimport { createMediaDevices } from './factories/media-devices';\nimport { createMediaQueryMatch } from './factories/media-query-match';\nimport { createMetrics } from './factories/metrics';\nimport { createMidiInputs } from './factories/midi-inputs';\nimport { createMidiOutputs } from './factories/midi-outputs';\nimport { createMutations } from './factories/mutations';\nimport { createOn } from './factories/on';\nimport { createOnline } from './factories/online';\nimport { createPermissionState } from './factories/permission-state';\nimport { createPrependSubscribableThing } from './factories/prepend-subscribable-thing';\nimport { createReports } from './factories/reports';\nimport { createResizes } from './factories/resizes';\nimport { createUnhandledRejection } from './factories/unhandled-rejection';\nimport { createVideoFrame } from './factories/video-frame';\nimport { createWakeLock } from './factories/wake-lock';\nimport { createWindow } from './factories/window';\nimport { createWrapSubscribeFunction } from './factories/wrap-subscribe-function';\nimport { emitNotSupportedError } from './functions/emit-not-supported-error';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nconst window = createWindow();\nconst wrapSubscribeFunction = createWrapSubscribeFunction(patch, toObserver);\nexport const animationFrame = createAnimationFrame(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const mutations = createMutations(emitNotSupportedError, window, wrapSubscribeFunction);\nconst mapSubscribableThing = createMapSubscribableThing(wrapSubscribeFunction);\nconst prependSubscribableThing = createPrependSubscribableThing(wrapSubscribeFunction);\nexport const attribute = createAttribute(mapSubscribableThing, mutations, prependSubscribableThing);\nexport const geolocation = createGeolocation(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const intersections = createIntersections(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const mediaDevices = createMediaDevices(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const mediaQueryMatch = createMediaQueryMatch(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const metrics = createMetrics(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const midiInputs = createMidiInputs(wrapSubscribeFunction);\nexport const midiOutputs = createMidiOutputs(wrapSubscribeFunction);\nexport const on = createOn(wrapSubscribeFunction);\nexport const online = createOnline(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const permissionState = createPermissionState(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const reports = createReports(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const resizes = createResizes(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const unhandledRejection = createUnhandledRejection(emitNotSupportedError, window, wrapSubscribeFunction);\nexport const videoFrame = createVideoFrame(emitNotSupportedError, wrapSubscribeFunction);\nexport const wakeLock = createWakeLock(emitNotSupportedError, window, wrapSubscribeFunction);\n//# sourceMappingURL=module.js.map","export const createAddRecorderAudioWorkletModule = (blobConstructor, urlConstructor, worklet) => {\n return async (addAudioWorkletModule) => {\n const blob = new blobConstructor([worklet], { type: 'application/javascript; charset=utf-8' });\n const url = urlConstructor.createObjectURL(blob);\n try {\n await addAudioWorkletModule(url);\n }\n finally {\n urlConstructor.revokeObjectURL(url);\n }\n };\n};\n//# sourceMappingURL=add-recorder-audio-worklet-module.js.map","export const createListener = (ongoingRequests) => {\n return ({ data: message }) => {\n const { id } = message;\n if (id !== null) {\n const ongoingRequest = ongoingRequests.get(id);\n if (ongoingRequest !== undefined) {\n const { reject, resolve } = ongoingRequest;\n ongoingRequests.delete(id);\n if (message.error === undefined) {\n resolve(message.result);\n }\n else {\n reject(new Error(message.error.message));\n }\n }\n }\n };\n};\n//# sourceMappingURL=listener.js.map","export const createPostMessageFactory = (generateUniqueNumber) => {\n return (ongoingRequests, port) => {\n return (message, transferables = []) => {\n return new Promise((resolve, reject) => {\n const id = generateUniqueNumber(ongoingRequests);\n ongoingRequests.set(id, { reject, resolve });\n port.postMessage({ id, ...message }, transferables);\n });\n };\n };\n};\n//# sourceMappingURL=post-message-factory.js.map","export const createRecorderAudioWorkletNodeFactory = (createListener, createPostMessage, on, validateState) => {\n return (audioWorkletNodeConstructor, context, options = {}) => {\n const audioWorkletNode = new audioWorkletNodeConstructor(context, 'recorder-audio-worklet-processor', {\n ...options,\n channelCountMode: 'explicit',\n numberOfInputs: 1,\n numberOfOutputs: 0\n });\n const ongoingRequests = new Map();\n const postMessage = createPostMessage(ongoingRequests, audioWorkletNode.port);\n const unsubscribe = on(audioWorkletNode.port, 'message')(createListener(ongoingRequests));\n audioWorkletNode.port.start();\n let state = 'inactive';\n Object.defineProperties(audioWorkletNode, {\n pause: {\n get() {\n return async () => {\n validateState(['recording'], state);\n state = 'paused';\n return postMessage({\n method: 'pause'\n });\n };\n }\n },\n port: {\n get() {\n throw new Error(\"The port of a RecorderAudioWorkletNode can't be accessed.\");\n }\n },\n record: {\n get() {\n return async (encoderPort) => {\n validateState(['inactive'], state);\n state = 'recording';\n return postMessage({\n method: 'record',\n params: { encoderPort }\n }, [encoderPort]);\n };\n }\n },\n resume: {\n get() {\n return async () => {\n validateState(['paused'], state);\n state = 'recording';\n return postMessage({\n method: 'resume'\n });\n };\n }\n },\n stop: {\n get() {\n return async () => {\n validateState(['paused', 'recording'], state);\n state = 'stopped';\n try {\n await postMessage({ method: 'stop' });\n }\n finally {\n unsubscribe();\n }\n };\n }\n }\n });\n return audioWorkletNode;\n };\n};\n//# sourceMappingURL=recorder-audio-worklet-node-factory.js.map","export const validateState = (expectedStates, currentState) => {\n if (!expectedStates.includes(currentState)) {\n throw new Error(`Expected the state to be ${expectedStates\n .map((expectedState) => `\"${expectedState}\"`)\n .join(' or ')} but it was \"${currentState}\".`);\n }\n};\n//# sourceMappingURL=validate-state.js.map","// This is the minified and stringified code of the recorder-audio-worklet-processor package.\nexport const worklet = `(()=>{\"use strict\";class e extends AudioWorkletProcessor{constructor(){super(),this._encoderPort=null,this._numberOfChannels=0,this._state=\"inactive\",this.port.onmessage=({data:e})=>{\"pause\"===e.method?\"active\"===this._state||\"recording\"===this._state?(this._state=\"paused\",this._sendAcknowledgement(e.id)):this._sendUnexpectedStateError(e.id):\"record\"===e.method?\"inactive\"===this._state?(this._encoderPort=e.params.encoderPort,this._state=\"active\",this._sendAcknowledgement(e.id)):this._sendUnexpectedStateError(e.id):\"resume\"===e.method?\"paused\"===this._state?(this._state=\"active\",this._sendAcknowledgement(e.id)):this._sendUnexpectedStateError(e.id):\"stop\"===e.method?\"active\"!==this._state&&\"paused\"!==this._state&&\"recording\"!==this._state||null===this._encoderPort?this._sendUnexpectedStateError(e.id):(this._stop(this._encoderPort),this._sendAcknowledgement(e.id)):\"number\"==typeof e.id&&this.port.postMessage({error:{code:-32601,message:\"The requested method is not supported.\"},id:e.id})}}process([e]){if(\"inactive\"===this._state||\"paused\"===this._state)return!0;if(\"active\"===this._state){if(void 0===e)throw new Error(\"No channelData was received for the first input.\");if(0===e.length)return!0;this._state=\"recording\"}if(\"recording\"===this._state&&null!==this._encoderPort){if(void 0===e)throw new Error(\"No channelData was received for the first input.\");return 0===e.length?this._encoderPort.postMessage(Array.from({length:this._numberOfChannels},(()=>128))):(this._encoderPort.postMessage(e,e.map((({buffer:e})=>e))),this._numberOfChannels=e.length),!0}return!1}_sendAcknowledgement(e){this.port.postMessage({id:e,result:null})}_sendUnexpectedStateError(e){this.port.postMessage({error:{code:-32603,message:\"The internal state does not allow to process the given message.\"},id:e})}_stop(e){e.postMessage([]),e.close(),this._encoderPort=null,this._state=\"stopped\"}}e.parameterDescriptors=[],registerProcessor(\"recorder-audio-worklet-processor\",e)})();`; // tslint:disable-line:max-line-length\n//# sourceMappingURL=worklet.js.map","import { generateUniqueNumber } from 'fast-unique-numbers';\nimport { on } from 'subscribable-things';\nimport { isSupported } from 'worker-factory';\nimport { createAddRecorderAudioWorkletModule } from './factories/add-recorder-audio-worklet-module';\nimport { createListener } from './factories/listener';\nimport { createPostMessageFactory } from './factories/post-message-factory';\nimport { createRecorderAudioWorkletNodeFactory } from './factories/recorder-audio-worklet-node-factory';\nimport { validateState } from './functions/validate-state';\nimport { worklet } from './worklet/worklet';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nexport const addRecorderAudioWorkletModule = createAddRecorderAudioWorkletModule(Blob, URL, worklet);\nexport const createRecorderAudioWorkletNode = createRecorderAudioWorkletNodeFactory(createListener, createPostMessageFactory(generateUniqueNumber), on, validateState);\nexport { isSupported };\n//# sourceMappingURL=module.js.map","export const createExtendedExponentialRampToValueAutomationEvent = (value, endTime, insertTime) => {\n return { endTime, insertTime, type: 'exponentialRampToValue', value };\n};\n//# sourceMappingURL=create-extended-exponential-ramp-to-value-automation-event.js.map","export const createExtendedLinearRampToValueAutomationEvent = (value, endTime, insertTime) => {\n return { endTime, insertTime, type: 'linearRampToValue', value };\n};\n//# sourceMappingURL=create-extended-linear-ramp-to-value-automation-event.js.map","export const createSetValueAutomationEvent = (value, startTime) => {\n return { startTime, type: 'setValue', value };\n};\n//# sourceMappingURL=create-set-value-automation-event.js.map","export const createSetValueCurveAutomationEvent = (values, startTime, duration) => {\n return { duration, startTime, type: 'setValueCurve', values };\n};\n//# sourceMappingURL=create-set-value-curve-automation-event.js.map","export const getTargetValueAtTime = (time, valueAtStartTime, { startTime, target, timeConstant }) => {\n return target + (valueAtStartTime - target) * Math.exp((startTime - time) / timeConstant);\n};\n//# sourceMappingURL=get-target-value-at-time.js.map","export const isExponentialRampToValueAutomationEvent = (automationEvent) => {\n return automationEvent.type === 'exponentialRampToValue';\n};\n//# sourceMappingURL=exponential-ramp-to-value-automation-event.js.map","export const isLinearRampToValueAutomationEvent = (automationEvent) => {\n return automationEvent.type === 'linearRampToValue';\n};\n//# sourceMappingURL=linear-ramp-to-value-automation-event.js.map","import { isExponentialRampToValueAutomationEvent } from './exponential-ramp-to-value-automation-event';\nimport { isLinearRampToValueAutomationEvent } from './linear-ramp-to-value-automation-event';\nexport const isAnyRampToValueAutomationEvent = (automationEvent) => {\n return isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent);\n};\n//# sourceMappingURL=any-ramp-to-value-automation-event.js.map","export const isSetValueAutomationEvent = (automationEvent) => {\n return automationEvent.type === 'setValue';\n};\n//# sourceMappingURL=set-value-automation-event.js.map","export const isSetValueCurveAutomationEvent = (automationEvent) => {\n return automationEvent.type === 'setValueCurve';\n};\n//# sourceMappingURL=set-value-curve-automation-event.js.map","import { getTargetValueAtTime } from '../functions/get-target-value-at-time';\nimport { isAnyRampToValueAutomationEvent } from '../guards/any-ramp-to-value-automation-event';\nimport { isSetValueAutomationEvent } from '../guards/set-value-automation-event';\nimport { isSetValueCurveAutomationEvent } from '../guards/set-value-curve-automation-event';\nexport const getValueOfAutomationEventAtIndexAtTime = (automationEvents, index, time, defaultValue) => {\n const automationEvent = automationEvents[index];\n return automationEvent === undefined\n ? defaultValue\n : isAnyRampToValueAutomationEvent(automationEvent) || isSetValueAutomationEvent(automationEvent)\n ? automationEvent.value\n : isSetValueCurveAutomationEvent(automationEvent)\n ? automationEvent.values[automationEvent.values.length - 1]\n : getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, automationEvent.startTime, defaultValue), automationEvent);\n};\n//# sourceMappingURL=get-value-of-automation-event-at-index-at-time.js.map","import { getValueOfAutomationEventAtIndexAtTime } from '../functions/get-value-of-automation-event-at-index-at-time';\nimport { isAnyRampToValueAutomationEvent } from '../guards/any-ramp-to-value-automation-event';\nimport { isSetValueAutomationEvent } from '../guards/set-value-automation-event';\nimport { isSetValueCurveAutomationEvent } from '../guards/set-value-curve-automation-event';\nexport const getEndTimeAndValueOfPreviousAutomationEvent = (automationEvents, index, currentAutomationEvent, nextAutomationEvent, defaultValue) => {\n return currentAutomationEvent === undefined\n ? [nextAutomationEvent.insertTime, defaultValue]\n : isAnyRampToValueAutomationEvent(currentAutomationEvent)\n ? [currentAutomationEvent.endTime, currentAutomationEvent.value]\n : isSetValueAutomationEvent(currentAutomationEvent)\n ? [currentAutomationEvent.startTime, currentAutomationEvent.value]\n : isSetValueCurveAutomationEvent(currentAutomationEvent)\n ? [\n currentAutomationEvent.startTime + currentAutomationEvent.duration,\n currentAutomationEvent.values[currentAutomationEvent.values.length - 1]\n ]\n : [\n currentAutomationEvent.startTime,\n getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, currentAutomationEvent.startTime, defaultValue)\n ];\n};\n//# sourceMappingURL=get-end-time-and-value-of-previous-automation-event.js.map","export const isCancelAndHoldAutomationEvent = (automationEvent) => {\n return automationEvent.type === 'cancelAndHold';\n};\n//# sourceMappingURL=cancel-and-hold-automation-event.js.map","export const isCancelScheduledValuesAutomationEvent = (automationEvent) => {\n return automationEvent.type === 'cancelScheduledValues';\n};\n//# sourceMappingURL=cancel-scheduled-values-automation-event.js.map","import { isCancelAndHoldAutomationEvent } from '../guards/cancel-and-hold-automation-event';\nimport { isCancelScheduledValuesAutomationEvent } from '../guards/cancel-scheduled-values-automation-event';\nimport { isExponentialRampToValueAutomationEvent } from '../guards/exponential-ramp-to-value-automation-event';\nimport { isLinearRampToValueAutomationEvent } from '../guards/linear-ramp-to-value-automation-event';\nexport const getEventTime = (automationEvent) => {\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n return automationEvent.cancelTime;\n }\n if (isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent)) {\n return automationEvent.endTime;\n }\n return automationEvent.startTime;\n};\n//# sourceMappingURL=get-event-time.js.map","export const getExponentialRampValueAtTime = (time, startTime, valueAtStartTime, { endTime, value }) => {\n if (valueAtStartTime === value) {\n return value;\n }\n if ((0 < valueAtStartTime && 0 < value) || (valueAtStartTime < 0 && value < 0)) {\n return valueAtStartTime * (value / valueAtStartTime) ** ((time - startTime) / (endTime - startTime));\n }\n return 0;\n};\n//# sourceMappingURL=get-exponential-ramp-value-at-time.js.map","export const getLinearRampValueAtTime = (time, startTime, valueAtStartTime, { endTime, value }) => {\n return valueAtStartTime + ((time - startTime) / (endTime - startTime)) * (value - valueAtStartTime);\n};\n//# sourceMappingURL=get-linear-ramp-value-at-time.js.map","export const interpolateValue = (values, theoreticIndex) => {\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n if (lowerIndex === upperIndex) {\n return values[lowerIndex];\n }\n return (1 - (theoreticIndex - lowerIndex)) * values[lowerIndex] + (1 - (upperIndex - theoreticIndex)) * values[upperIndex];\n};\n//# sourceMappingURL=interpolate-value.js.map","import { interpolateValue } from './interpolate-value';\nexport const getValueCurveValueAtTime = (time, { duration, startTime, values }) => {\n const theoreticIndex = ((time - startTime) / duration) * (values.length - 1);\n return interpolateValue(values, theoreticIndex);\n};\n//# sourceMappingURL=get-value-curve-value-at-time.js.map","export const isSetTargetAutomationEvent = (automationEvent) => {\n return automationEvent.type === 'setTarget';\n};\n//# sourceMappingURL=set-target-automation-event.js.map","import { createExtendedExponentialRampToValueAutomationEvent } from '../functions/create-extended-exponential-ramp-to-value-automation-event';\nimport { createExtendedLinearRampToValueAutomationEvent } from '../functions/create-extended-linear-ramp-to-value-automation-event';\nimport { createSetValueAutomationEvent } from '../functions/create-set-value-automation-event';\nimport { createSetValueCurveAutomationEvent } from '../functions/create-set-value-curve-automation-event';\nimport { getEndTimeAndValueOfPreviousAutomationEvent } from '../functions/get-end-time-and-value-of-previous-automation-event';\nimport { getEventTime } from '../functions/get-event-time';\nimport { getExponentialRampValueAtTime } from '../functions/get-exponential-ramp-value-at-time';\nimport { getLinearRampValueAtTime } from '../functions/get-linear-ramp-value-at-time';\nimport { getTargetValueAtTime } from '../functions/get-target-value-at-time';\nimport { getValueCurveValueAtTime } from '../functions/get-value-curve-value-at-time';\nimport { getValueOfAutomationEventAtIndexAtTime } from '../functions/get-value-of-automation-event-at-index-at-time';\nimport { isAnyRampToValueAutomationEvent } from '../guards/any-ramp-to-value-automation-event';\nimport { isCancelAndHoldAutomationEvent } from '../guards/cancel-and-hold-automation-event';\nimport { isCancelScheduledValuesAutomationEvent } from '../guards/cancel-scheduled-values-automation-event';\nimport { isExponentialRampToValueAutomationEvent } from '../guards/exponential-ramp-to-value-automation-event';\nimport { isLinearRampToValueAutomationEvent } from '../guards/linear-ramp-to-value-automation-event';\nimport { isSetTargetAutomationEvent } from '../guards/set-target-automation-event';\nimport { isSetValueAutomationEvent } from '../guards/set-value-automation-event';\nimport { isSetValueCurveAutomationEvent } from '../guards/set-value-curve-automation-event';\nexport class AutomationEventList {\n constructor(defaultValue) {\n this._automationEvents = [];\n this._currenTime = 0;\n this._defaultValue = defaultValue;\n }\n [Symbol.iterator]() {\n return this._automationEvents[Symbol.iterator]();\n }\n add(automationEvent) {\n const eventTime = getEventTime(automationEvent);\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n const index = this._automationEvents.findIndex((currentAutomationEvent) => {\n if (isCancelScheduledValuesAutomationEvent(automationEvent) && isSetValueCurveAutomationEvent(currentAutomationEvent)) {\n return currentAutomationEvent.startTime + currentAutomationEvent.duration >= eventTime;\n }\n return getEventTime(currentAutomationEvent) >= eventTime;\n });\n const removedAutomationEvent = this._automationEvents[index];\n if (index !== -1) {\n this._automationEvents = this._automationEvents.slice(0, index);\n }\n if (isCancelAndHoldAutomationEvent(automationEvent)) {\n const lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1];\n if (removedAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(removedAutomationEvent)) {\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n throw new Error('The internal list is malformed.');\n }\n const startTime = lastAutomationEvent === undefined\n ? removedAutomationEvent.insertTime\n : isSetValueCurveAutomationEvent(lastAutomationEvent)\n ? lastAutomationEvent.startTime + lastAutomationEvent.duration\n : getEventTime(lastAutomationEvent);\n const startValue = lastAutomationEvent === undefined\n ? this._defaultValue\n : isSetValueCurveAutomationEvent(lastAutomationEvent)\n ? lastAutomationEvent.values[lastAutomationEvent.values.length - 1]\n : lastAutomationEvent.value;\n const value = isExponentialRampToValueAutomationEvent(removedAutomationEvent)\n ? getExponentialRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent)\n : getLinearRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent);\n const truncatedAutomationEvent = isExponentialRampToValueAutomationEvent(removedAutomationEvent)\n ? createExtendedExponentialRampToValueAutomationEvent(value, eventTime, this._currenTime)\n : createExtendedLinearRampToValueAutomationEvent(value, eventTime, this._currenTime);\n this._automationEvents.push(truncatedAutomationEvent);\n }\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n this._automationEvents.push(createSetValueAutomationEvent(this.getValue(eventTime), eventTime));\n }\n if (lastAutomationEvent !== undefined &&\n isSetValueCurveAutomationEvent(lastAutomationEvent) &&\n lastAutomationEvent.startTime + lastAutomationEvent.duration > eventTime) {\n const duration = eventTime - lastAutomationEvent.startTime;\n const ratio = (lastAutomationEvent.values.length - 1) / lastAutomationEvent.duration;\n const length = Math.max(2, 1 + Math.ceil(duration * ratio));\n const fraction = (duration / (length - 1)) * ratio;\n const values = lastAutomationEvent.values.slice(0, length);\n if (fraction < 1) {\n for (let i = 1; i < length; i += 1) {\n const factor = (fraction * i) % 1;\n values[i] = lastAutomationEvent.values[i - 1] * (1 - factor) + lastAutomationEvent.values[i] * factor;\n }\n }\n this._automationEvents[this._automationEvents.length - 1] = createSetValueCurveAutomationEvent(values, lastAutomationEvent.startTime, duration);\n }\n }\n }\n else {\n const index = this._automationEvents.findIndex((currentAutomationEvent) => getEventTime(currentAutomationEvent) > eventTime);\n const previousAutomationEvent = index === -1 ? this._automationEvents[this._automationEvents.length - 1] : this._automationEvents[index - 1];\n if (previousAutomationEvent !== undefined &&\n isSetValueCurveAutomationEvent(previousAutomationEvent) &&\n getEventTime(previousAutomationEvent) + previousAutomationEvent.duration > eventTime) {\n return false;\n }\n const persistentAutomationEvent = isExponentialRampToValueAutomationEvent(automationEvent)\n ? createExtendedExponentialRampToValueAutomationEvent(automationEvent.value, automationEvent.endTime, this._currenTime)\n : isLinearRampToValueAutomationEvent(automationEvent)\n ? createExtendedLinearRampToValueAutomationEvent(automationEvent.value, eventTime, this._currenTime)\n : automationEvent;\n if (index === -1) {\n this._automationEvents.push(persistentAutomationEvent);\n }\n else {\n if (isSetValueCurveAutomationEvent(automationEvent) &&\n eventTime + automationEvent.duration > getEventTime(this._automationEvents[index])) {\n return false;\n }\n this._automationEvents.splice(index, 0, persistentAutomationEvent);\n }\n }\n return true;\n }\n flush(time) {\n const index = this._automationEvents.findIndex((currentAutomationEvent) => getEventTime(currentAutomationEvent) > time);\n if (index > 1) {\n const remainingAutomationEvents = this._automationEvents.slice(index - 1);\n const firstRemainingAutomationEvent = remainingAutomationEvents[0];\n if (isSetTargetAutomationEvent(firstRemainingAutomationEvent)) {\n remainingAutomationEvents.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, firstRemainingAutomationEvent.startTime, this._defaultValue), firstRemainingAutomationEvent.startTime));\n }\n this._automationEvents = remainingAutomationEvents;\n }\n }\n getValue(time) {\n if (this._automationEvents.length === 0) {\n return this._defaultValue;\n }\n const indexOfNextEvent = this._automationEvents.findIndex((automationEvent) => getEventTime(automationEvent) > time);\n const nextAutomationEvent = this._automationEvents[indexOfNextEvent];\n const indexOfCurrentEvent = (indexOfNextEvent === -1 ? this._automationEvents.length : indexOfNextEvent) - 1;\n const currentAutomationEvent = this._automationEvents[indexOfCurrentEvent];\n if (currentAutomationEvent !== undefined &&\n isSetTargetAutomationEvent(currentAutomationEvent) &&\n (nextAutomationEvent === undefined ||\n !isAnyRampToValueAutomationEvent(nextAutomationEvent) ||\n nextAutomationEvent.insertTime > time)) {\n return getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(this._automationEvents, indexOfCurrentEvent - 1, currentAutomationEvent.startTime, this._defaultValue), currentAutomationEvent);\n }\n if (currentAutomationEvent !== undefined &&\n isSetValueAutomationEvent(currentAutomationEvent) &&\n (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n if (currentAutomationEvent !== undefined &&\n isSetValueCurveAutomationEvent(currentAutomationEvent) &&\n (nextAutomationEvent === undefined ||\n !isAnyRampToValueAutomationEvent(nextAutomationEvent) ||\n currentAutomationEvent.startTime + currentAutomationEvent.duration > time)) {\n if (time < currentAutomationEvent.startTime + currentAutomationEvent.duration) {\n return getValueCurveValueAtTime(time, currentAutomationEvent);\n }\n return currentAutomationEvent.values[currentAutomationEvent.values.length - 1];\n }\n if (currentAutomationEvent !== undefined &&\n isAnyRampToValueAutomationEvent(currentAutomationEvent) &&\n (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n if (nextAutomationEvent !== undefined && isExponentialRampToValueAutomationEvent(nextAutomationEvent)) {\n const [startTime, value] = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue);\n return getExponentialRampValueAtTime(time, startTime, value, nextAutomationEvent);\n }\n if (nextAutomationEvent !== undefined && isLinearRampToValueAutomationEvent(nextAutomationEvent)) {\n const [startTime, value] = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue);\n return getLinearRampValueAtTime(time, startTime, value, nextAutomationEvent);\n }\n return this._defaultValue;\n }\n}\n//# sourceMappingURL=automation-event-list.js.map","export const createCancelAndHoldAutomationEvent = (cancelTime) => {\n return { cancelTime, type: 'cancelAndHold' };\n};\n//# sourceMappingURL=create-cancel-and-hold-automation-event.js.map","export const createCancelScheduledValuesAutomationEvent = (cancelTime) => {\n return { cancelTime, type: 'cancelScheduledValues' };\n};\n//# sourceMappingURL=create-cancel-scheduled-values-automation-event.js.map","export const createExponentialRampToValueAutomationEvent = (value, endTime) => {\n return { endTime, type: 'exponentialRampToValue', value };\n};\n//# sourceMappingURL=create-exponential-ramp-to-value-automation-event.js.map","export const createLinearRampToValueAutomationEvent = (value, endTime) => {\n return { endTime, type: 'linearRampToValue', value };\n};\n//# sourceMappingURL=create-linear-ramp-to-value-automation-event.js.map","export const createSetTargetAutomationEvent = (target, startTime, timeConstant) => {\n return { startTime, target, timeConstant, type: 'setTarget' };\n};\n//# sourceMappingURL=create-set-target-automation-event.js.map","export const createAbortError = () => new DOMException('', 'AbortError');\n//# sourceMappingURL=abort-error.js.map","export const createAddActiveInputConnectionToAudioNode = (insertElementInSet) => {\n return (activeInputs, source, [output, input, eventListener], ignoreDuplicates) => {\n insertElementInSet(activeInputs[input], [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates);\n };\n};\n//# sourceMappingURL=add-active-input-connection-to-audio-node.js.map","export const createAddAudioNodeConnections = (audioNodeConnectionsStore) => {\n return (audioNode, audioNodeRenderer, nativeAudioNode) => {\n const activeInputs = [];\n for (let i = 0; i < nativeAudioNode.numberOfInputs; i += 1) {\n activeInputs.push(new Set());\n }\n audioNodeConnectionsStore.set(audioNode, {\n activeInputs,\n outputs: new Set(),\n passiveInputs: new WeakMap(),\n renderer: audioNodeRenderer\n });\n };\n};\n//# sourceMappingURL=add-audio-node-connections.js.map","export const createAddAudioParamConnections = (audioParamConnectionsStore) => {\n return (audioParam, audioParamRenderer) => {\n audioParamConnectionsStore.set(audioParam, { activeInputs: new Set(), passiveInputs: new WeakMap(), renderer: audioParamRenderer });\n };\n};\n//# sourceMappingURL=add-audio-param-connections.js.map","export const ACTIVE_AUDIO_NODE_STORE = new WeakSet();\nexport const AUDIO_NODE_CONNECTIONS_STORE = new WeakMap();\nexport const AUDIO_NODE_STORE = new WeakMap();\nexport const AUDIO_PARAM_CONNECTIONS_STORE = new WeakMap();\nexport const AUDIO_PARAM_STORE = new WeakMap();\nexport const CONTEXT_STORE = new WeakMap();\nexport const EVENT_LISTENERS = new WeakMap();\nexport const CYCLE_COUNTERS = new WeakMap();\n// This clunky name is borrowed from the spec. :-)\nexport const NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS = new WeakMap();\nexport const NODE_TO_PROCESSOR_MAPS = new WeakMap();\n//# sourceMappingURL=globals.js.map","const handler = {\n construct() {\n return handler;\n }\n};\nexport const isConstructible = (constructible) => {\n try {\n const proxy = new Proxy(constructible, handler);\n new proxy(); // tslint:disable-line:no-unused-expression\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=is-constructible.js.map","/*\n * This massive regex tries to cover all the following cases.\n *\n * import './path';\n * import defaultImport from './path';\n * import { namedImport } from './path';\n * import { namedImport as renamendImport } from './path';\n * import * as namespaceImport from './path';\n * import defaultImport, { namedImport } from './path';\n * import defaultImport, { namedImport as renamendImport } from './path';\n * import defaultImport, * as namespaceImport from './path';\n */\nconst IMPORT_STATEMENT_REGEX = /^import(?:(?:[\\s]+[\\w]+|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\{[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?(?:[\\s]*,[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?)*[\\s]*}|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\*[\\s]+as[\\s]+[\\w]+)[\\s]+from)?(?:[\\s]*)(\"([^\"\\\\]|\\\\.)+\"|'([^'\\\\]|\\\\.)+')(?:[\\s]*);?/; // tslint:disable-line:max-line-length\nexport const splitImportStatements = (source, url) => {\n const importStatements = [];\n let sourceWithoutImportStatements = source.replace(/^[\\s]+/, '');\n let result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n while (result !== null) {\n const unresolvedUrl = result[1].slice(1, -1);\n const importStatementWithResolvedUrl = result[0]\n .replace(/([\\s]+)?;?$/, '')\n .replace(unresolvedUrl, new URL(unresolvedUrl, url).toString());\n importStatements.push(importStatementWithResolvedUrl);\n sourceWithoutImportStatements = sourceWithoutImportStatements.slice(result[0].length).replace(/^[\\s]+/, '');\n result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n }\n return [importStatements.join(';'), sourceWithoutImportStatements];\n};\n//# sourceMappingURL=split-import-statements.js.map","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport { isConstructible } from '../helpers/is-constructible';\nimport { splitImportStatements } from '../helpers/split-import-statements';\nconst verifyParameterDescriptors = (parameterDescriptors) => {\n if (parameterDescriptors !== undefined && !Array.isArray(parameterDescriptors)) {\n throw new TypeError('The parameterDescriptors property of given value for processorCtor is not an array.');\n }\n};\nconst verifyProcessorCtor = (processorCtor) => {\n if (!isConstructible(processorCtor)) {\n throw new TypeError('The given value for processorCtor should be a constructor.');\n }\n if (processorCtor.prototype === null || typeof processorCtor.prototype !== 'object') {\n throw new TypeError('The given value for processorCtor should have a prototype.');\n }\n};\nexport const createAddAudioWorkletModule = (cacheTestResult, createNotSupportedError, evaluateSource, exposeCurrentFrameAndCurrentTime, fetchSource, getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, ongoingRequests, resolvedRequests, testAudioWorkletProcessorPostMessageSupport, window) => {\n let index = 0;\n return (context, moduleURL, options = { credentials: 'omit' }) => {\n const resolvedRequestsOfContext = resolvedRequests.get(context);\n if (resolvedRequestsOfContext !== undefined && resolvedRequestsOfContext.has(moduleURL)) {\n return Promise.resolve();\n }\n const ongoingRequestsOfContext = ongoingRequests.get(context);\n if (ongoingRequestsOfContext !== undefined) {\n const promiseOfOngoingRequest = ongoingRequestsOfContext.get(moduleURL);\n if (promiseOfOngoingRequest !== undefined) {\n return promiseOfOngoingRequest;\n }\n }\n const nativeContext = getNativeContext(context);\n // Bug #59: Safari does not implement the audioWorklet property.\n const promise = nativeContext.audioWorklet === undefined\n ? fetchSource(moduleURL)\n .then(([source, absoluteUrl]) => {\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n /*\n * This is the unminified version of the code used below:\n *\n * ```js\n * ${ importStatements };\n * ((a, b) => {\n * (a[b] = a[b] || [ ]).push(\n * (AudioWorkletProcessor, global, registerProcessor, sampleRate, self, window) => {\n * ${ sourceWithoutImportStatements }\n * }\n * );\n * })(window, '_AWGS');\n * ```\n */\n // tslint:disable-next-line:max-line-length\n const wrappedSource = `${importStatements};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${sourceWithoutImportStatements}\n})})(window,'_AWGS')`;\n // @todo Evaluating the given source code is a possible security problem.\n return evaluateSource(wrappedSource);\n })\n .then(() => {\n const evaluateAudioWorkletGlobalScope = window._AWGS.pop();\n if (evaluateAudioWorkletGlobalScope === undefined) {\n // Bug #182 Chrome and Edge do throw an instance of a SyntaxError instead of a DOMException.\n throw new SyntaxError();\n }\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => evaluateAudioWorkletGlobalScope(class AudioWorkletProcessor {\n }, undefined, (name, processorCtor) => {\n if (name.trim() === '') {\n throw createNotSupportedError();\n }\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n if (nodeNameToProcessorConstructorMap !== undefined) {\n if (nodeNameToProcessorConstructorMap.has(name)) {\n throw createNotSupportedError();\n }\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n nodeNameToProcessorConstructorMap.set(name, processorCtor);\n }\n else {\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(nativeContext, new Map([[name, processorCtor]]));\n }\n }, nativeContext.sampleRate, undefined, undefined));\n })\n : Promise.all([\n fetchSource(moduleURL),\n Promise.resolve(cacheTestResult(testAudioWorkletProcessorPostMessageSupport, testAudioWorkletProcessorPostMessageSupport))\n ]).then(([[source, absoluteUrl], isSupportingPostMessage]) => {\n const currentIndex = index + 1;\n index = currentIndex;\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n /*\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * This is the unminified version of the code used below.\n *\n * ```js\n * class extends AudioWorkletProcessor {\n *\n * __buffers = new WeakSet();\n *\n * constructor () {\n * super();\n *\n * this.port.postMessage = ((postMessage) => {\n * return (message, transferables) => {\n * const filteredTransferables = (transferables)\n * ? transferables.filter((transferable) => !this.__buffers.has(transferable))\n * : transferables;\n *\n * return postMessage.call(this.port, message, filteredTransferables);\n * };\n * })(this.port.postMessage);\n * }\n * }\n * ```\n */\n const patchedAudioWorkletProcessor = isSupportingPostMessage\n ? 'AudioWorkletProcessor'\n : 'class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}';\n /*\n * Bug #170: Chrome and Edge do call process() with an array with empty channelData for each input if no input is connected.\n *\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * Bug #190: Safari doesn't throw an error when loading an unparsable module.\n *\n * This is the unminified version of the code used below:\n *\n * ```js\n * `${ importStatements };\n * ((AudioWorkletProcessor, registerProcessor) => {${ sourceWithoutImportStatements }\n * })(\n * ${ patchedAudioWorkletProcessor },\n * (name, processorCtor) => registerProcessor(name, class extends processorCtor {\n *\n * __collectBuffers = (array) => {\n * array.forEach((element) => this.__buffers.add(element.buffer));\n * };\n *\n * process (inputs, outputs, parameters) {\n * inputs.forEach(this.__collectBuffers);\n * outputs.forEach(this.__collectBuffers);\n * this.__collectBuffers(Object.values(parameters));\n *\n * return super.process(\n * (inputs.map((input) => input.some((channelData) => channelData.length === 0)) ? [ ] : input),\n * outputs,\n * parameters\n * );\n * }\n *\n * })\n * );\n *\n * registerProcessor(`__sac${currentIndex}`, class extends AudioWorkletProcessor{\n *\n * process () {\n * return false;\n * }\n *\n * })`\n * ```\n */\n const memberDefinition = isSupportingPostMessage ? '' : '__c = (a) => a.forEach(e=>this.__b.add(e.buffer));';\n const bufferRegistration = isSupportingPostMessage\n ? ''\n : 'i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));';\n const wrappedSource = `${importStatements};((AudioWorkletProcessor,registerProcessor)=>{${sourceWithoutImportStatements}\n})(${patchedAudioWorkletProcessor},(n,p)=>registerProcessor(n,class extends p{${memberDefinition}process(i,o,p){${bufferRegistration}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${currentIndex}',class extends AudioWorkletProcessor{process(){return !1}})`;\n const blob = new Blob([wrappedSource], { type: 'application/javascript; charset=utf-8' });\n const url = URL.createObjectURL(blob);\n return nativeContext.audioWorklet\n .addModule(url, options)\n .then(() => {\n if (isNativeOfflineAudioContext(nativeContext)) {\n return nativeContext;\n }\n // Bug #186: Chrome and Edge do not allow to create an AudioWorkletNode on a closed AudioContext.\n const backupOfflineAudioContext = getOrCreateBackupOfflineAudioContext(nativeContext);\n return backupOfflineAudioContext.audioWorklet.addModule(url, options).then(() => backupOfflineAudioContext);\n })\n .then((nativeContextOrBackupOfflineAudioContext) => {\n if (nativeAudioWorkletNodeConstructor === null) {\n throw new SyntaxError();\n }\n try {\n // Bug #190: Safari doesn't throw an error when loading an unparsable module.\n new nativeAudioWorkletNodeConstructor(nativeContextOrBackupOfflineAudioContext, `__sac${currentIndex}`); // tslint:disable-line:no-unused-expression\n }\n catch {\n throw new SyntaxError();\n }\n })\n .finally(() => URL.revokeObjectURL(url));\n });\n if (ongoingRequestsOfContext === undefined) {\n ongoingRequests.set(context, new Map([[moduleURL, promise]]));\n }\n else {\n ongoingRequestsOfContext.set(moduleURL, promise);\n }\n promise\n .then(() => {\n const updatedResolvedRequestsOfContext = resolvedRequests.get(context);\n if (updatedResolvedRequestsOfContext === undefined) {\n resolvedRequests.set(context, new Set([moduleURL]));\n }\n else {\n updatedResolvedRequestsOfContext.add(moduleURL);\n }\n })\n .finally(() => {\n const updatedOngoingRequestsOfContext = ongoingRequests.get(context);\n if (updatedOngoingRequestsOfContext !== undefined) {\n updatedOngoingRequestsOfContext.delete(moduleURL);\n }\n });\n return promise;\n };\n};\n//# sourceMappingURL=add-audio-worklet-module.js.map","export const getValueForKey = (map, key) => {\n const value = map.get(key);\n if (value === undefined) {\n throw new Error('A value with the given key could not be found.');\n }\n return value;\n};\n//# sourceMappingURL=get-value-for-key.js.map","export const pickElementFromSet = (set, predicate) => {\n const matchingElements = Array.from(set).filter(predicate);\n if (matchingElements.length > 1) {\n throw Error('More than one element was found.');\n }\n if (matchingElements.length === 0) {\n throw Error('No element was found.');\n }\n const [matchingElement] = matchingElements;\n set.delete(matchingElement);\n return matchingElement;\n};\n//# sourceMappingURL=pick-element-from-set.js.map","import { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\nexport const deletePassiveInputConnectionToAudioNode = (passiveInputs, source, output, input) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input);\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n return matchingConnection;\n};\n//# sourceMappingURL=delete-passive-input-connection-to-audio-node.js.map","import { EVENT_LISTENERS } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getEventListenersOfAudioNode = (audioNode) => {\n return getValueForKey(EVENT_LISTENERS, audioNode);\n};\n//# sourceMappingURL=get-event-listeners-of-audio-node.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const setInternalStateToActive = (audioNode) => {\n if (ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is already stored.');\n }\n ACTIVE_AUDIO_NODE_STORE.add(audioNode);\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(true));\n};\n//# sourceMappingURL=set-internal-state-to-active.js.map","export const isAudioWorkletNode = (audioNode) => {\n return 'port' in audioNode;\n};\n//# sourceMappingURL=audio-worklet-node.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const setInternalStateToPassive = (audioNode) => {\n if (!ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is not stored.');\n }\n ACTIVE_AUDIO_NODE_STORE.delete(audioNode);\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(false));\n};\n//# sourceMappingURL=set-internal-state-to-passive.js.map","import { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\n// Set the internalState of the audioNode to 'passive' if it is not an AudioWorkletNode and if it has no 'active' input connections.\nexport const setInternalStateToPassiveWhenNecessary = (audioNode, activeInputs) => {\n if (!isAudioWorkletNode(audioNode) && activeInputs.every((connections) => connections.size === 0)) {\n setInternalStateToPassive(audioNode);\n }\n};\n//# sourceMappingURL=set-internal-state-to-passive-when-necessary.js.map","import { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nexport const createAddConnectionToAudioNode = (addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode) => {\n const tailTimeTimeoutIds = new WeakMap();\n return (source, destination, output, input, isOffline) => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n const eventListener = (isActive) => {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n const nativeSourceAudioNode = getNativeAudioNode(source);\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n addActiveInputConnectionToAudioNode(activeInputs, source, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n if (isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n }\n else {\n const partialConnection = deleteActiveInputConnectionToAudioNode(activeInputs, source, output, input);\n addPassiveInputConnectionToAudioNode(passiveInputs, input, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n const tailTime = getAudioNodeTailTime(destination);\n if (tailTime === 0) {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }\n else {\n const tailTimeTimeoutId = tailTimeTimeoutIds.get(destination);\n if (tailTimeTimeoutId !== undefined) {\n clearTimeout(tailTimeTimeoutId);\n }\n tailTimeTimeoutIds.set(destination, setTimeout(() => {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }, tailTime * 1000));\n }\n }\n };\n if (insertElementInSet(outputs, [destination, output, input], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output && outputConnection[2] === input, true)) {\n eventListeners.add(eventListener);\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioNode(activeInputs, source, [output, input, eventListener], true);\n }\n else {\n addPassiveInputConnectionToAudioNode(passiveInputs, input, [source, output, eventListener], true);\n }\n return true;\n }\n return false;\n };\n};\n//# sourceMappingURL=add-connection-to-audio-node.js.map","export const createAddPassiveInputConnectionToAudioNode = (insertElementInSet) => {\n return (passiveInputs, input, [source, output, eventListener], ignoreDuplicates) => {\n const passiveInputConnections = passiveInputs.get(source);\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, input, eventListener]]));\n }\n else {\n insertElementInSet(passiveInputConnections, [output, input, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input, ignoreDuplicates);\n }\n };\n};\n//# sourceMappingURL=add-passive-input-connection-to-audio-node.js.map","export const createAddSilentConnection = (createNativeGainNode) => {\n return (nativeContext, nativeAudioScheduledSourceNode) => {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeAudioScheduledSourceNode.connect(nativeGainNode).connect(nativeContext.destination);\n const disconnect = () => {\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnect);\n nativeAudioScheduledSourceNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnect);\n };\n};\n//# sourceMappingURL=add-silent-connection.js.map","export const createAddUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).add(audioWorkletNode);\n };\n};\n//# sourceMappingURL=add-unrendered-audio-worklet-node.js.map","export const isOwnedByContext = (nativeAudioNode, nativeContext) => {\n return nativeAudioNode.context === nativeContext;\n};\n//# sourceMappingURL=is-owned-by-context.js.map","export const testAudioBufferCopyChannelMethodsOutOfBoundsSupport = (nativeAudioBuffer) => {\n try {\n nativeAudioBuffer.copyToChannel(new Float32Array(1), 0, -1);\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-copy-channel-methods-out-of-bounds-support.js.map","export const createIndexSizeError = () => new DOMException('', 'IndexSizeError');\n//# sourceMappingURL=index-size-error.js.map","import { createIndexSizeError } from '../factories/index-size-error';\nexport const wrapAudioBufferGetChannelDataMethod = (audioBuffer) => {\n audioBuffer.getChannelData = ((getChannelData) => {\n return (channel) => {\n try {\n return getChannelData.call(audioBuffer, channel);\n }\n catch (err) {\n if (err.code === 12) {\n throw createIndexSizeError();\n }\n throw err;\n }\n };\n })(audioBuffer.getChannelData);\n};\n//# sourceMappingURL=wrap-audio-buffer-get-channel-data-method.js.map","import { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from '../helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n};\nexport const createAudioBufferConstructor = (audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, testNativeAudioBufferConstructorSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => {\n let nativeOfflineAudioContext = null;\n return class AudioBuffer {\n constructor(options) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n if (nativeOfflineAudioContext === null) {\n nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n }\n /*\n * Bug #99: Firefox does not throw a NotSupportedError when the numberOfChannels is zero. But it only does it when using the\n * factory function. But since Firefox also supports the constructor everything should be fine.\n */\n const audioBuffer = nativeAudioBufferConstructor !== null &&\n cacheTestResult(testNativeAudioBufferConstructorSupport, testNativeAudioBufferConstructorSupport)\n ? new nativeAudioBufferConstructor({ length, numberOfChannels, sampleRate })\n : nativeOfflineAudioContext.createBuffer(numberOfChannels, length, sampleRate);\n // Bug #99: Safari does not throw an error when the numberOfChannels is zero.\n if (audioBuffer.numberOfChannels === 0) {\n throw createNotSupportedError();\n }\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n }\n else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n /*\n * This does violate all good pratices but it is necessary to allow this AudioBuffer to be used with native\n * (Offline)AudioContexts.\n */\n return audioBuffer;\n }\n static [Symbol.hasInstance](instance) {\n return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === AudioBuffer.prototype) ||\n audioBufferStore.has(instance));\n }\n };\n};\n//# sourceMappingURL=audio-buffer-constructor.js.map","export const MOST_NEGATIVE_SINGLE_FLOAT = -3.4028234663852886e38;\nexport const MOST_POSITIVE_SINGLE_FLOAT = -MOST_NEGATIVE_SINGLE_FLOAT;\n//# sourceMappingURL=constants.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nexport const isActiveAudioNode = (audioNode) => ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n//# sourceMappingURL=is-active-audio-node.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nconst DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n};\nexport const createAudioBufferSourceNodeConstructor = (audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => {\n return class AudioBufferSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const audioBufferSourceNodeRenderer = ((isOffline ? createAudioBufferSourceNodeRenderer() : null));\n super(context, false, nativeAudioBufferSourceNode, audioBufferSourceNodeRenderer);\n this._audioBufferSourceNodeRenderer = audioBufferSourceNodeRenderer;\n this._isBufferNullified = false;\n this._isBufferSet = mergedOptions.buffer !== null;\n this._nativeAudioBufferSourceNode = nativeAudioBufferSourceNode;\n this._onended = null;\n // Bug #73: Safari does not export the correct values for maxValue and minValue.\n this._playbackRate = createAudioParam(this, isOffline, nativeAudioBufferSourceNode.playbackRate, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n }\n get buffer() {\n if (this._isBufferNullified) {\n return null;\n }\n return this._nativeAudioBufferSourceNode.buffer;\n }\n set buffer(value) {\n this._nativeAudioBufferSourceNode.buffer = value;\n // Bug #72: Only Chrome & Edge do not allow to reassign the buffer yet.\n if (value !== null) {\n if (this._isBufferSet) {\n throw createInvalidStateError();\n }\n this._isBufferSet = true;\n }\n }\n get loop() {\n return this._nativeAudioBufferSourceNode.loop;\n }\n set loop(value) {\n this._nativeAudioBufferSourceNode.loop = value;\n }\n get loopEnd() {\n return this._nativeAudioBufferSourceNode.loopEnd;\n }\n set loopEnd(value) {\n this._nativeAudioBufferSourceNode.loopEnd = value;\n }\n get loopStart() {\n return this._nativeAudioBufferSourceNode.loopStart;\n }\n set loopStart(value) {\n this._nativeAudioBufferSourceNode.loopStart = value;\n }\n get onended() {\n return this._onended;\n }\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeAudioBufferSourceNode.onended = wrappedListener;\n const nativeOnEnded = this._nativeAudioBufferSourceNode.onended;\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n get playbackRate() {\n return this._playbackRate;\n }\n start(when = 0, offset = 0, duration) {\n this._nativeAudioBufferSourceNode.start(when, offset, duration);\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.start = duration === undefined ? [when, offset] : [when, offset, duration];\n }\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n const resetInternalStateToPassive = () => {\n this._nativeAudioBufferSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n this._nativeAudioBufferSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n stop(when = 0) {\n this._nativeAudioBufferSourceNode.stop(when);\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n//# sourceMappingURL=audio-buffer-source-node-constructor.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createAudioBufferSourceNodeRendererFactory = (connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAudioBufferSourceNodes = new WeakMap();\n let start = null;\n let stop = null;\n const createAudioBufferSourceNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeAudioBufferSourceNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeAudioBufferSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeAudioBufferSourceNodeIsOwnedByContext = isOwnedByContext(nativeAudioBufferSourceNode, nativeOfflineAudioContext);\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n const options = {\n buffer: nativeAudioBufferSourceNode.buffer,\n channelCount: nativeAudioBufferSourceNode.channelCount,\n channelCountMode: nativeAudioBufferSourceNode.channelCountMode,\n channelInterpretation: nativeAudioBufferSourceNode.channelInterpretation,\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: nativeAudioBufferSourceNode.loop,\n loopEnd: nativeAudioBufferSourceNode.loopEnd,\n loopStart: nativeAudioBufferSourceNode.loopStart,\n playbackRate: nativeAudioBufferSourceNode.playbackRate.value\n };\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, options);\n if (start !== null) {\n nativeAudioBufferSourceNode.start(...start);\n }\n if (stop !== null) {\n nativeAudioBufferSourceNode.stop(stop);\n }\n }\n renderedNativeAudioBufferSourceNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await renderAutomation(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate);\n }\n else {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await connectAudioParam(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n return nativeAudioBufferSourceNode;\n };\n return {\n set start(value) {\n start = value;\n },\n set stop(value) {\n stop = value;\n },\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeAudioBufferSourceNode = renderedNativeAudioBufferSourceNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioBufferSourceNode !== undefined) {\n return Promise.resolve(renderedNativeAudioBufferSourceNode);\n }\n return createAudioBufferSourceNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=audio-buffer-source-node-renderer-factory.js.map","export const isAudioBufferSourceNode = (audioNode) => {\n return 'playbackRate' in audioNode;\n};\n//# sourceMappingURL=audio-buffer-source-node.js.map","export const isBiquadFilterNode = (audioNode) => {\n return 'frequency' in audioNode && 'gain' in audioNode;\n};\n//# sourceMappingURL=biquad-filter-node.js.map","export const isConstantSourceNode = (audioNode) => {\n return 'offset' in audioNode;\n};\n//# sourceMappingURL=constant-source-node.js.map","export const isGainNode = (audioNode) => {\n return !('frequency' in audioNode) && 'gain' in audioNode;\n};\n//# sourceMappingURL=gain-node.js.map","export const isOscillatorNode = (audioNode) => {\n return 'detune' in audioNode && 'frequency' in audioNode && !('gain' in audioNode);\n};\n//# sourceMappingURL=oscillator-node.js.map","export const isStereoPannerNode = (audioNode) => {\n return 'pan' in audioNode;\n};\n//# sourceMappingURL=stereo-panner-node.js.map","import { AUDIO_NODE_CONNECTIONS_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioNodeConnections = (audioNode) => {\n return getValueForKey(AUDIO_NODE_CONNECTIONS_STORE, audioNode);\n};\n//# sourceMappingURL=get-audio-node-connections.js.map","import { AUDIO_PARAM_CONNECTIONS_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioParamConnections = (audioParam) => {\n return getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE, audioParam);\n};\n//# sourceMappingURL=get-audio-param-connections.js.map","import { isAudioBufferSourceNode } from '../guards/audio-buffer-source-node';\nimport { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { isBiquadFilterNode } from '../guards/biquad-filter-node';\nimport { isConstantSourceNode } from '../guards/constant-source-node';\nimport { isGainNode } from '../guards/gain-node';\nimport { isOscillatorNode } from '../guards/oscillator-node';\nimport { isStereoPannerNode } from '../guards/stereo-panner-node';\nimport { getAudioNodeConnections } from './get-audio-node-connections';\nimport { getAudioParamConnections } from './get-audio-param-connections';\nimport { isActiveAudioNode } from './is-active-audio-node';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\nexport const deactivateActiveAudioNodeInputConnections = (audioNode, trace) => {\n const { activeInputs } = getAudioNodeConnections(audioNode);\n activeInputs.forEach((connections) => connections.forEach(([source]) => {\n if (!trace.includes(audioNode)) {\n deactivateActiveAudioNodeInputConnections(source, [...trace, audioNode]);\n }\n }));\n const audioParams = isAudioBufferSourceNode(audioNode)\n ? [\n // Bug #149: Safari does not yet support the detune AudioParam.\n audioNode.playbackRate\n ]\n : isAudioWorkletNode(audioNode)\n ? Array.from(audioNode.parameters.values())\n : isBiquadFilterNode(audioNode)\n ? [audioNode.Q, audioNode.detune, audioNode.frequency, audioNode.gain]\n : isConstantSourceNode(audioNode)\n ? [audioNode.offset]\n : isGainNode(audioNode)\n ? [audioNode.gain]\n : isOscillatorNode(audioNode)\n ? [audioNode.detune, audioNode.frequency]\n : isStereoPannerNode(audioNode)\n ? [audioNode.pan]\n : [];\n for (const audioParam of audioParams) {\n const audioParamConnections = getAudioParamConnections(audioParam);\n if (audioParamConnections !== undefined) {\n audioParamConnections.activeInputs.forEach(([source]) => deactivateActiveAudioNodeInputConnections(source, trace));\n }\n }\n if (isActiveAudioNode(audioNode)) {\n setInternalStateToPassive(audioNode);\n }\n};\n//# sourceMappingURL=deactivate-active-audio-node-input-connections.js.map","import { deactivateActiveAudioNodeInputConnections } from './deactivate-active-audio-node-input-connections';\nexport const deactivateAudioGraph = (context) => {\n deactivateActiveAudioNodeInputConnections(context.destination, []);\n};\n//# sourceMappingURL=deactivate-audio-graph.js.map","export const isValidLatencyHint = (latencyHint) => {\n return (latencyHint === undefined ||\n typeof latencyHint === 'number' ||\n (typeof latencyHint === 'string' && (latencyHint === 'balanced' || latencyHint === 'interactive' || latencyHint === 'playback')));\n};\n//# sourceMappingURL=is-valid-latency-hint.js.map","export const createAudioDestinationNodeConstructor = (audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode) => {\n return class AudioDestinationNode extends audioNodeConstructor {\n constructor(context, channelCount) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const nativeAudioDestinationNode = createNativeAudioDestinationNode(nativeContext, channelCount, isOffline);\n const audioDestinationNodeRenderer = ((isOffline ? createAudioDestinationNodeRenderer(renderInputsOfAudioNode) : null));\n super(context, false, nativeAudioDestinationNode, audioDestinationNodeRenderer);\n this._isNodeOfNativeOfflineAudioContext = isOffline;\n this._nativeAudioDestinationNode = nativeAudioDestinationNode;\n }\n get channelCount() {\n return this._nativeAudioDestinationNode.channelCount;\n }\n set channelCount(value) {\n // Bug #52: Chrome, Edge & Safari do not throw an exception at all.\n // Bug #54: Firefox does throw an IndexSizeError.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (value > this._nativeAudioDestinationNode.maxChannelCount) {\n throw createIndexSizeError();\n }\n this._nativeAudioDestinationNode.channelCount = value;\n }\n get channelCountMode() {\n return this._nativeAudioDestinationNode.channelCountMode;\n }\n set channelCountMode(value) {\n // Bug #53: No browser does throw an exception yet.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n this._nativeAudioDestinationNode.channelCountMode = value;\n }\n get maxChannelCount() {\n return this._nativeAudioDestinationNode.maxChannelCount;\n }\n };\n};\n//# sourceMappingURL=audio-destination-node-constructor.js.map","export const createAudioDestinationNodeRenderer = (renderInputsOfAudioNode) => {\n const renderedNativeAudioDestinationNodes = new WeakMap();\n const createAudioDestinationNode = async (proxy, nativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeOfflineAudioContext.destination;\n renderedNativeAudioDestinationNodes.set(nativeOfflineAudioContext, nativeAudioDestinationNode);\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioDestinationNode);\n return nativeAudioDestinationNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeAudioDestinationNode = renderedNativeAudioDestinationNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioDestinationNode !== undefined) {\n return Promise.resolve(renderedNativeAudioDestinationNode);\n }\n return createAudioDestinationNode(proxy, nativeOfflineAudioContext);\n }\n };\n};\n//# sourceMappingURL=audio-destination-node-renderer-factory.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nexport const createAudioListenerFactory = (createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, createNotSupportedError, getFirstSample, isNativeOfflineAudioContext, overwriteAccessors) => {\n return (context, nativeContext) => {\n const nativeListener = nativeContext.listener;\n // Bug #117: Only Chrome & Edge support the new interface already.\n const createFakeAudioParams = () => {\n const buffer = new Float32Array(1);\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 9\n });\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n let isScriptProcessorNodeCreated = false;\n let lastOrientation = [0, 0, -1, 0, 1, 0];\n let lastPosition = [0, 0, 0];\n const createScriptProcessorNode = () => {\n if (isScriptProcessorNodeCreated) {\n return;\n }\n isScriptProcessorNodeCreated = true;\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 9, 0);\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation = [\n getFirstSample(inputBuffer, buffer, 0),\n getFirstSample(inputBuffer, buffer, 1),\n getFirstSample(inputBuffer, buffer, 2),\n getFirstSample(inputBuffer, buffer, 3),\n getFirstSample(inputBuffer, buffer, 4),\n getFirstSample(inputBuffer, buffer, 5)\n ];\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n nativeListener.setOrientation(...orientation); // tslint:disable-line:deprecation\n lastOrientation = orientation;\n }\n const positon = [\n getFirstSample(inputBuffer, buffer, 6),\n getFirstSample(inputBuffer, buffer, 7),\n getFirstSample(inputBuffer, buffer, 8)\n ];\n if (positon.some((value, index) => value !== lastPosition[index])) {\n nativeListener.setPosition(...positon); // tslint:disable-line:deprecation\n lastPosition = positon;\n }\n };\n channelMergerNode.connect(scriptProcessorNode);\n };\n const createSetOrientation = (index) => (value) => {\n if (value !== lastOrientation[index]) {\n lastOrientation[index] = value;\n nativeListener.setOrientation(...lastOrientation); // tslint:disable-line:deprecation\n }\n };\n const createSetPosition = (index) => (value) => {\n if (value !== lastPosition[index]) {\n lastPosition[index] = value;\n nativeListener.setPosition(...lastPosition); // tslint:disable-line:deprecation\n }\n };\n const createFakeAudioParam = (input, initialValue, setValue) => {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: initialValue\n });\n constantSourceNode.connect(channelMergerNode, 0, input);\n // @todo This should be stopped when the context is closed.\n constantSourceNode.start();\n Object.defineProperty(constantSourceNode.offset, 'defaultValue', {\n get() {\n return initialValue;\n }\n });\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and\n * minValue for GainNodes.\n */\n const audioParam = createAudioParam({ context }, isOffline, constantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n overwriteAccessors(audioParam, 'value', (get) => () => get.call(audioParam), (set) => (value) => {\n try {\n set.call(audioParam, value);\n }\n catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n }\n createScriptProcessorNode();\n if (isOffline) {\n // Bug #117: Using setOrientation() and setPosition() doesn't work with an OfflineAudioContext.\n setValue(value);\n }\n });\n audioParam.cancelAndHoldAtTime = ((cancelAndHoldAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = cancelAndHoldAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.cancelAndHoldAtTime);\n audioParam.cancelScheduledValues = ((cancelScheduledValues) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = cancelScheduledValues.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.cancelScheduledValues);\n audioParam.exponentialRampToValueAtTime = ((exponentialRampToValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = exponentialRampToValueAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.exponentialRampToValueAtTime);\n audioParam.linearRampToValueAtTime = ((linearRampToValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = linearRampToValueAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.linearRampToValueAtTime);\n audioParam.setTargetAtTime = ((setTargetAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = setTargetAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.setTargetAtTime);\n audioParam.setValueAtTime = ((setValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = setValueAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.setValueAtTime);\n audioParam.setValueCurveAtTime = ((setValueCurveAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = setValueCurveAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.setValueCurveAtTime);\n return audioParam;\n };\n return {\n forwardX: createFakeAudioParam(0, 0, createSetOrientation(0)),\n forwardY: createFakeAudioParam(1, 0, createSetOrientation(1)),\n forwardZ: createFakeAudioParam(2, -1, createSetOrientation(2)),\n positionX: createFakeAudioParam(6, 0, createSetPosition(0)),\n positionY: createFakeAudioParam(7, 0, createSetPosition(1)),\n positionZ: createFakeAudioParam(8, 0, createSetPosition(2)),\n upX: createFakeAudioParam(3, 0, createSetOrientation(3)),\n upY: createFakeAudioParam(4, 1, createSetOrientation(4)),\n upZ: createFakeAudioParam(5, 0, createSetOrientation(5))\n };\n };\n const { forwardX, forwardY, forwardZ, positionX, positionY, positionZ, upX, upY, upZ } = nativeListener.forwardX === undefined ? createFakeAudioParams() : nativeListener;\n return {\n get forwardX() {\n return forwardX;\n },\n get forwardY() {\n return forwardY;\n },\n get forwardZ() {\n return forwardZ;\n },\n get positionX() {\n return positionX;\n },\n get positionY() {\n return positionY;\n },\n get positionZ() {\n return positionZ;\n },\n get upX() {\n return upX;\n },\n get upY() {\n return upY;\n },\n get upZ() {\n return upZ;\n }\n };\n };\n};\n//# sourceMappingURL=audio-listener-factory.js.map","export const isAudioNode = (audioNodeOrAudioParam) => {\n return 'context' in audioNodeOrAudioParam;\n};\n//# sourceMappingURL=audio-node.js.map","import { isAudioNode } from './audio-node';\nexport const isAudioNodeOutputConnection = (outputConnection) => {\n return isAudioNode(outputConnection[0]);\n};\n//# sourceMappingURL=audio-node-output-connection.js.map","export const insertElementInSet = (set, element, predicate, ignoreDuplicates) => {\n for (const lmnt of set) {\n if (predicate(lmnt)) {\n if (ignoreDuplicates) {\n return false;\n }\n throw Error('The set contains at least one similar element.');\n }\n }\n set.add(element);\n return true;\n};\n//# sourceMappingURL=insert-element-in-set.js.map","import { insertElementInSet } from './insert-element-in-set';\nexport const addActiveInputConnectionToAudioParam = (activeInputs, source, [output, eventListener], ignoreDuplicates) => {\n insertElementInSet(activeInputs, [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates);\n};\n//# sourceMappingURL=add-active-input-connection-to-audio-param.js.map","import { insertElementInSet } from './insert-element-in-set';\nexport const addPassiveInputConnectionToAudioParam = (passiveInputs, [source, output, eventListener], ignoreDuplicates) => {\n const passiveInputConnections = passiveInputs.get(source);\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, eventListener]]));\n }\n else {\n insertElementInSet(passiveInputConnections, [output, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output, ignoreDuplicates);\n }\n};\n//# sourceMappingURL=add-passive-input-connection-to-audio-param.js.map","export const isNativeAudioNodeFaker = (nativeAudioNodeOrNativeAudioNodeFaker) => {\n return 'inputs' in nativeAudioNodeOrNativeAudioNodeFaker;\n};\n//# sourceMappingURL=native-audio-node-faker.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nexport const connectNativeAudioNodeToNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n const fakeNativeDestinationAudioNode = nativeDestinationAudioNode.inputs[input];\n nativeSourceAudioNode.connect(fakeNativeDestinationAudioNode, output, 0);\n return [fakeNativeDestinationAudioNode, output, 0];\n }\n nativeSourceAudioNode.connect(nativeDestinationAudioNode, output, input);\n return [nativeDestinationAudioNode, output, input];\n};\n//# sourceMappingURL=connect-native-audio-node-to-native-audio-node.js.map","export const deleteActiveInputConnection = (activeInputConnections, source, output) => {\n for (const activeInputConnection of activeInputConnections) {\n if (activeInputConnection[0] === source && activeInputConnection[1] === output) {\n activeInputConnections.delete(activeInputConnection);\n return activeInputConnection;\n }\n }\n return null;\n};\n//# sourceMappingURL=delete-active-input-connection.js.map","import { pickElementFromSet } from './pick-element-from-set';\nexport const deleteActiveInputConnectionToAudioParam = (activeInputs, source, output) => {\n return pickElementFromSet(activeInputs, (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output);\n};\n//# sourceMappingURL=delete-active-input-connection-to-audio-param.js.map","import { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const deleteEventListenerOfAudioNode = (audioNode, eventListener) => {\n const eventListeners = getEventListenersOfAudioNode(audioNode);\n if (!eventListeners.delete(eventListener)) {\n throw new Error('Missing the expected event listener.');\n }\n};\n//# sourceMappingURL=delete-event-listeners-of-audio-node.js.map","import { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\nexport const deletePassiveInputConnectionToAudioParam = (passiveInputs, source, output) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output);\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n return matchingConnection;\n};\n//# sourceMappingURL=delete-passive-input-connection-to-audio-param.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nexport const disconnectNativeAudioNodeFromNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode.inputs[input], output, 0);\n }\n else {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode, output, input);\n }\n};\n//# sourceMappingURL=disconnect-native-audio-node-from-native-audio-node.js.map","import { AUDIO_NODE_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getNativeAudioNode = (audioNode) => {\n return getValueForKey(AUDIO_NODE_STORE, audioNode);\n};\n//# sourceMappingURL=get-native-audio-node.js.map","import { AUDIO_PARAM_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getNativeAudioParam = (audioParam) => {\n return getValueForKey(AUDIO_PARAM_STORE, audioParam);\n};\n//# sourceMappingURL=get-native-audio-param.js.map","import { CYCLE_COUNTERS } from '../globals';\nexport const isPartOfACycle = (audioNode) => {\n return CYCLE_COUNTERS.has(audioNode);\n};\n//# sourceMappingURL=is-part-of-a-cycle.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nexport const isPassiveAudioNode = (audioNode) => {\n return !ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n};\n//# sourceMappingURL=is-passive-audio-node.js.map","export const testAudioNodeDisconnectMethodSupport = (nativeAudioContext, nativeAudioWorkletNodeConstructor) => {\n return new Promise((resolve) => {\n /*\n * This bug existed in Safari up until v14.0.2. Since AudioWorklets were not supported in Safari until v14.1 the presence of the\n * constructor for an AudioWorkletNode can be used here to skip the test.\n */\n if (nativeAudioWorkletNodeConstructor !== null) {\n resolve(true);\n }\n else {\n const analyzer = nativeAudioContext.createScriptProcessor(256, 1, 1); // tslint:disable-line deprecation\n const dummy = nativeAudioContext.createGain();\n // Bug #95: Safari does not play one sample buffers.\n const ones = nativeAudioContext.createBuffer(1, 2, 44100);\n const channelData = ones.getChannelData(0);\n channelData[0] = 1;\n channelData[1] = 1;\n const source = nativeAudioContext.createBufferSource();\n source.buffer = ones;\n source.loop = true;\n source.connect(analyzer).connect(nativeAudioContext.destination);\n source.connect(dummy);\n source.disconnect(dummy);\n // tslint:disable-next-line:deprecation\n analyzer.onaudioprocess = (event) => {\n const chnnlDt = event.inputBuffer.getChannelData(0); // tslint:disable-line deprecation\n if (Array.prototype.some.call(chnnlDt, (sample) => sample === 1)) {\n resolve(true);\n }\n else {\n resolve(false);\n }\n source.stop();\n analyzer.onaudioprocess = null; // tslint:disable-line:deprecation\n source.disconnect(analyzer);\n analyzer.disconnect(nativeAudioContext.destination);\n };\n source.start();\n }\n });\n};\n//# sourceMappingURL=test-audio-node-disconnect-method-support.js.map","export const visitEachAudioNodeOnce = (cycles, visitor) => {\n const counts = new Map();\n for (const cycle of cycles) {\n for (const audioNode of cycle) {\n const count = counts.get(audioNode);\n counts.set(audioNode, count === undefined ? 1 : count + 1);\n }\n }\n counts.forEach((count, audioNode) => visitor(audioNode, count));\n};\n//# sourceMappingURL=visit-each-audio-node-once.js.map","export const isNativeAudioNode = (nativeAudioNodeOrAudioParam) => {\n return 'context' in nativeAudioNodeOrAudioParam;\n};\n//# sourceMappingURL=native-audio-node.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nexport const wrapAudioNodeDisconnectMethod = (nativeAudioNode) => {\n const connections = new Map();\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void no-inferrable-types\n return (destination, output = 0, input = 0) => {\n const returnValue = isNativeAudioNode(destination) ? connect(destination, output, input) : connect(destination, output);\n // Save the new connection only if the calls to connect above didn't throw an error.\n const connectionsToDestination = connections.get(destination);\n if (connectionsToDestination === undefined) {\n connections.set(destination, [{ input, output }]);\n }\n else {\n if (connectionsToDestination.every((connection) => connection.input !== input || connection.output !== output)) {\n connectionsToDestination.push({ input, output });\n }\n }\n return returnValue;\n };\n })(nativeAudioNode.connect.bind(nativeAudioNode));\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput, output, input) => {\n disconnect.apply(nativeAudioNode);\n if (destinationOrOutput === undefined) {\n connections.clear();\n }\n else if (typeof destinationOrOutput === 'number') {\n for (const [destination, connectionsToDestination] of connections) {\n const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== destinationOrOutput);\n if (filteredConnections.length === 0) {\n connections.delete(destination);\n }\n else {\n connections.set(destination, filteredConnections);\n }\n }\n }\n else if (connections.has(destinationOrOutput)) {\n if (output === undefined) {\n connections.delete(destinationOrOutput);\n }\n else {\n const connectionsToDestination = connections.get(destinationOrOutput);\n if (connectionsToDestination !== undefined) {\n const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== output && (connection.input !== input || input === undefined));\n if (filteredConnections.length === 0) {\n connections.delete(destinationOrOutput);\n }\n else {\n connections.set(destinationOrOutput, filteredConnections);\n }\n }\n }\n }\n for (const [destination, connectionsToDestination] of connections) {\n connectionsToDestination.forEach((connection) => {\n if (isNativeAudioNode(destination)) {\n nativeAudioNode.connect(destination, connection.output, connection.input);\n }\n else {\n nativeAudioNode.connect(destination, connection.output);\n }\n });\n }\n };\n })(nativeAudioNode.disconnect);\n};\n//# sourceMappingURL=wrap-audio-node-disconnect-method.js.map","import { AUDIO_NODE_STORE, EVENT_LISTENERS } from '../globals';\nimport { isAudioNode } from '../guards/audio-node';\nimport { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { addActiveInputConnectionToAudioParam } from '../helpers/add-active-input-connection-to-audio-param';\nimport { addPassiveInputConnectionToAudioParam } from '../helpers/add-passive-input-connection-to-audio-param';\nimport { connectNativeAudioNodeToNativeAudioNode } from '../helpers/connect-native-audio-node-to-native-audio-node';\nimport { deleteActiveInputConnection } from '../helpers/delete-active-input-connection';\nimport { deleteActiveInputConnectionToAudioParam } from '../helpers/delete-active-input-connection-to-audio-param';\nimport { deleteEventListenerOfAudioNode } from '../helpers/delete-event-listeners-of-audio-node';\nimport { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { deletePassiveInputConnectionToAudioParam } from '../helpers/delete-passive-input-connection-to-audio-param';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from '../helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from '../helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from '../helpers/get-event-listeners-of-audio-node';\nimport { getNativeAudioNode } from '../helpers/get-native-audio-node';\nimport { getNativeAudioParam } from '../helpers/get-native-audio-param';\nimport { insertElementInSet } from '../helpers/insert-element-in-set';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { isPartOfACycle } from '../helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from '../helpers/is-passive-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nimport { testAudioNodeDisconnectMethodSupport } from '../helpers/test-audio-node-disconnect-method-support';\nimport { visitEachAudioNodeOnce } from '../helpers/visit-each-audio-node-once';\nimport { wrapAudioNodeDisconnectMethod } from '../helpers/wrap-audio-node-disconnect-method';\nconst addConnectionToAudioParamOfAudioContext = (source, destination, output, isOffline) => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n const eventListener = (isActive) => {\n const nativeAudioNode = getNativeAudioNode(source);\n const nativeAudioParam = getNativeAudioParam(destination);\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n addActiveInputConnectionToAudioParam(activeInputs, source, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.connect(nativeAudioParam, output);\n }\n }\n else {\n const partialConnection = deleteActiveInputConnectionToAudioParam(activeInputs, source, output);\n addPassiveInputConnectionToAudioParam(passiveInputs, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n }\n };\n if (insertElementInSet(outputs, [destination, output], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output, true)) {\n eventListeners.add(eventListener);\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioParam(activeInputs, source, [output, eventListener], true);\n }\n else {\n addPassiveInputConnectionToAudioParam(passiveInputs, [source, output, eventListener], true);\n }\n return true;\n }\n return false;\n};\nconst deleteInputConnectionOfAudioNode = (source, destination, output, input) => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n const activeInputConnection = deleteActiveInputConnection(activeInputs[input], source, output);\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n return [passiveInputConnection[2], false];\n }\n return [activeInputConnection[2], true];\n};\nconst deleteInputConnectionOfAudioParam = (source, destination, output) => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n const activeInputConnection = deleteActiveInputConnection(activeInputs, source, output);\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n return [passiveInputConnection[1], false];\n }\n return [activeInputConnection[2], true];\n};\nconst deleteInputsOfAudioNode = (source, isOffline, destination, output, input) => {\n const [listener, isActive] = deleteInputConnectionOfAudioNode(source, destination, output, input);\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(source), getNativeAudioNode(destination), output, input);\n }\n }\n if (isActiveAudioNode(destination)) {\n const { activeInputs } = getAudioNodeConnections(destination);\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n};\nconst deleteInputsOfAudioParam = (source, isOffline, destination, output) => {\n const [listener, isActive] = deleteInputConnectionOfAudioParam(source, destination, output);\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n getNativeAudioNode(source).disconnect(getNativeAudioParam(destination), output);\n }\n }\n};\nconst deleteAnyConnection = (source, isOffline) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n destinations.push(outputConnection[0]);\n }\n audioNodeConnectionsOfSource.outputs.clear();\n return destinations;\n};\nconst deleteConnectionAtOutput = (source, isOffline, output) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (outputConnection[1] === output) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n destinations.push(outputConnection[0]);\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n }\n }\n return destinations;\n};\nconst deleteConnectionToDestination = (source, isOffline, destination, output, input) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n return Array.from(audioNodeConnectionsOfSource.outputs)\n .filter((outputConnection) => outputConnection[0] === destination &&\n (output === undefined || outputConnection[1] === output) &&\n (input === undefined || outputConnection[2] === input))\n .map((outputConnection) => {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n return outputConnection[0];\n });\n};\nexport const createAudioNodeConstructor = (addAudioNodeConnections, addConnectionToAudioNode, cacheTestResult, createIncrementCycleCounter, createIndexSizeError, createInvalidAccessError, createNotSupportedError, decrementCycleCounter, detectCycles, eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode, isNativeAudioParam, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor) => {\n return class AudioNode extends eventTargetConstructor {\n constructor(context, isActive, nativeAudioNode, audioNodeRenderer) {\n super(nativeAudioNode);\n this._context = context;\n this._nativeAudioNode = nativeAudioNode;\n const nativeContext = getNativeContext(context);\n // Bug #12: Safari does not support to disconnect a specific destination.\n if (isNativeAudioContext(nativeContext) &&\n true !==\n cacheTestResult(testAudioNodeDisconnectMethodSupport, () => {\n return testAudioNodeDisconnectMethodSupport(nativeContext, nativeAudioWorkletNodeConstructor);\n })) {\n wrapAudioNodeDisconnectMethod(nativeAudioNode);\n }\n AUDIO_NODE_STORE.set(this, nativeAudioNode);\n EVENT_LISTENERS.set(this, new Set());\n if (context.state !== 'closed' && isActive) {\n setInternalStateToActive(this);\n }\n addAudioNodeConnections(this, audioNodeRenderer, nativeAudioNode);\n }\n get channelCount() {\n return this._nativeAudioNode.channelCount;\n }\n set channelCount(value) {\n this._nativeAudioNode.channelCount = value;\n }\n get channelCountMode() {\n return this._nativeAudioNode.channelCountMode;\n }\n set channelCountMode(value) {\n this._nativeAudioNode.channelCountMode = value;\n }\n get channelInterpretation() {\n return this._nativeAudioNode.channelInterpretation;\n }\n set channelInterpretation(value) {\n this._nativeAudioNode.channelInterpretation = value;\n }\n get context() {\n return this._context;\n }\n get numberOfInputs() {\n return this._nativeAudioNode.numberOfInputs;\n }\n get numberOfOutputs() {\n return this._nativeAudioNode.numberOfOutputs;\n }\n // tslint:disable-next-line:invalid-void\n connect(destination, output = 0, input = 0) {\n // Bug #174: Safari does expose a wrong numberOfOutputs for MediaStreamAudioDestinationNodes.\n if (output < 0 || output >= this._nativeAudioNode.numberOfOutputs) {\n throw createIndexSizeError();\n }\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (isNativeAudioNode(destination) || isNativeAudioParam(destination)) {\n throw createInvalidAccessError();\n }\n if (isAudioNode(destination)) {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n try {\n const connection = connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode, nativeDestinationAudioNode, output, input);\n const isPassive = isPassiveAudioNode(this);\n if (isOffline || isPassive) {\n this._nativeAudioNode.disconnect(...connection);\n }\n if (this.context.state !== 'closed' && !isPassive && isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n }\n catch (err) {\n // Bug #41: Safari does not throw the correct exception so far.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n throw err;\n }\n const isNewConnectionToAudioNode = addConnectionToAudioNode(this, destination, output, input, isOffline);\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioNode) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n return destination;\n }\n const nativeAudioParam = getNativeAudioParam(destination);\n /*\n * Bug #73, #147 & #153: Safari does not support to connect an input signal to the playbackRate AudioParam of an\n * AudioBufferSourceNode. This can't be easily detected and that's why the outdated name property is used here to identify\n * Safari. In addition to that the maxValue property is used to only detect the affected versions below v14.0.2.\n */\n if (nativeAudioParam.name === 'playbackRate' && nativeAudioParam.maxValue === 1024) {\n throw createNotSupportedError();\n }\n try {\n this._nativeAudioNode.connect(nativeAudioParam, output);\n if (isOffline || isPassiveAudioNode(this)) {\n this._nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n }\n catch (err) {\n // Bug #58: Safari doesn't throw an InvalidAccessError yet.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n throw err;\n }\n const isNewConnectionToAudioParam = addConnectionToAudioParamOfAudioContext(this, destination, output, isOffline);\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioParam) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n }\n disconnect(destinationOrOutput, output, input) {\n let destinations;\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (destinationOrOutput === undefined) {\n destinations = deleteAnyConnection(this, isOffline);\n }\n else if (typeof destinationOrOutput === 'number') {\n if (destinationOrOutput < 0 || destinationOrOutput >= this.numberOfOutputs) {\n throw createIndexSizeError();\n }\n destinations = deleteConnectionAtOutput(this, isOffline, destinationOrOutput);\n }\n else {\n if (output !== undefined && (output < 0 || output >= this.numberOfOutputs)) {\n throw createIndexSizeError();\n }\n if (isAudioNode(destinationOrOutput) && input !== undefined && (input < 0 || input >= destinationOrOutput.numberOfInputs)) {\n throw createIndexSizeError();\n }\n destinations = deleteConnectionToDestination(this, isOffline, destinationOrOutput, output, input);\n if (destinations.length === 0) {\n throw createInvalidAccessError();\n }\n }\n // Bug #164: Only Firefox detects cycles so far.\n for (const destination of destinations) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, decrementCycleCounter);\n }\n }\n };\n};\n//# sourceMappingURL=audio-node-constructor.js.map","import { AutomationEventList } from 'automation-events';\nexport const createAudioParamFactory = (addAudioParamConnections, audioParamAudioNodeStore, audioParamStore, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible) => {\n return (audioNode, isAudioParamOfOfflineAudioContext, nativeAudioParam, maxValue = null, minValue = null) => {\n // Bug #196 Only Safari sets the defaultValue to the initial value.\n const defaultValue = nativeAudioParam.value;\n const automationEventList = new AutomationEventList(defaultValue);\n const audioParamRenderer = isAudioParamOfOfflineAudioContext ? createAudioParamRenderer(automationEventList) : null;\n const audioParam = {\n get defaultValue() {\n return defaultValue;\n },\n get maxValue() {\n return maxValue === null ? nativeAudioParam.maxValue : maxValue;\n },\n get minValue() {\n return minValue === null ? nativeAudioParam.minValue : minValue;\n },\n get value() {\n return nativeAudioParam.value;\n },\n set value(value) {\n nativeAudioParam.value = value;\n // Bug #98: Firefox & Safari do not yet treat the value setter like a call to setValueAtTime().\n audioParam.setValueAtTime(value, audioNode.context.currentTime);\n },\n cancelAndHoldAtTime(cancelTime) {\n // Bug #28: Firefox & Safari do not yet implement cancelAndHoldAtTime().\n if (typeof nativeAudioParam.cancelAndHoldAtTime === 'function') {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n nativeAudioParam.cancelAndHoldAtTime(cancelTime);\n }\n else {\n const previousLastEvent = Array.from(automationEventList).pop();\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n const currentLastEvent = Array.from(automationEventList).pop();\n nativeAudioParam.cancelScheduledValues(cancelTime);\n if (previousLastEvent !== currentLastEvent && currentLastEvent !== undefined) {\n if (currentLastEvent.type === 'exponentialRampToValue') {\n nativeAudioParam.exponentialRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n }\n else if (currentLastEvent.type === 'linearRampToValue') {\n nativeAudioParam.linearRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n }\n else if (currentLastEvent.type === 'setValue') {\n nativeAudioParam.setValueAtTime(currentLastEvent.value, currentLastEvent.startTime);\n }\n else if (currentLastEvent.type === 'setValueCurve') {\n nativeAudioParam.setValueCurveAtTime(currentLastEvent.values, currentLastEvent.startTime, currentLastEvent.duration);\n }\n }\n }\n return audioParam;\n },\n cancelScheduledValues(cancelTime) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelScheduledValuesAutomationEvent(cancelTime));\n nativeAudioParam.cancelScheduledValues(cancelTime);\n return audioParam;\n },\n exponentialRampToValueAtTime(value, endTime) {\n // Bug #45: Safari does not throw an error yet.\n if (value === 0) {\n throw new RangeError();\n }\n // Bug #187: Safari does not throw an error yet.\n if (!Number.isFinite(endTime) || endTime < 0) {\n throw new RangeError();\n }\n const currentTime = audioNode.context.currentTime;\n if (audioParamRenderer === null) {\n automationEventList.flush(currentTime);\n }\n // Bug #194: Firefox does not implicitly call setValueAtTime() if there is no previous event.\n if (Array.from(automationEventList).length === 0) {\n automationEventList.add(createSetValueAutomationEvent(defaultValue, currentTime));\n nativeAudioParam.setValueAtTime(defaultValue, currentTime);\n }\n automationEventList.add(createExponentialRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.exponentialRampToValueAtTime(value, endTime);\n return audioParam;\n },\n linearRampToValueAtTime(value, endTime) {\n const currentTime = audioNode.context.currentTime;\n if (audioParamRenderer === null) {\n automationEventList.flush(currentTime);\n }\n // Bug #195: Firefox does not implicitly call setValueAtTime() if there is no previous event.\n if (Array.from(automationEventList).length === 0) {\n automationEventList.add(createSetValueAutomationEvent(defaultValue, currentTime));\n nativeAudioParam.setValueAtTime(defaultValue, currentTime);\n }\n automationEventList.add(createLinearRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.linearRampToValueAtTime(value, endTime);\n return audioParam;\n },\n setTargetAtTime(target, startTime, timeConstant) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetTargetAutomationEvent(target, startTime, timeConstant));\n nativeAudioParam.setTargetAtTime(target, startTime, timeConstant);\n return audioParam;\n },\n setValueAtTime(value, startTime) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueAutomationEvent(value, startTime));\n nativeAudioParam.setValueAtTime(value, startTime);\n return audioParam;\n },\n setValueCurveAtTime(values, startTime, duration) {\n // Bug 183: Safari only accepts a Float32Array.\n const convertedValues = values instanceof Float32Array ? values : new Float32Array(values);\n /*\n * Bug #152: Safari does not correctly interpolate the values of the curve.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the\n * existence of the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n const endTime = startTime + duration;\n const sampleRate = audioNode.context.sampleRate;\n const firstSample = Math.ceil(startTime * sampleRate);\n const lastSample = Math.floor(endTime * sampleRate);\n const numberOfInterpolatedValues = lastSample - firstSample;\n const interpolatedValues = new Float32Array(numberOfInterpolatedValues);\n for (let i = 0; i < numberOfInterpolatedValues; i += 1) {\n const theoreticIndex = ((convertedValues.length - 1) / duration) * ((firstSample + i) / sampleRate - startTime);\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n interpolatedValues[i] =\n lowerIndex === upperIndex\n ? convertedValues[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * convertedValues[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * convertedValues[upperIndex];\n }\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueCurveAutomationEvent(interpolatedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(interpolatedValues, startTime, duration);\n const timeOfLastSample = lastSample / sampleRate;\n if (timeOfLastSample < endTime) {\n setValueAtTimeUntilPossible(audioParam, interpolatedValues[interpolatedValues.length - 1], timeOfLastSample);\n }\n setValueAtTimeUntilPossible(audioParam, convertedValues[convertedValues.length - 1], endTime);\n }\n else {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueCurveAutomationEvent(convertedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(convertedValues, startTime, duration);\n }\n return audioParam;\n }\n };\n audioParamStore.set(audioParam, nativeAudioParam);\n audioParamAudioNodeStore.set(audioParam, audioNode);\n addAudioParamConnections(audioParam, audioParamRenderer);\n return audioParam;\n };\n};\n//# sourceMappingURL=audio-param-factory.js.map","export const createAudioParamRenderer = (automationEventList) => {\n return {\n replay(audioParam) {\n for (const automationEvent of automationEventList) {\n if (automationEvent.type === 'exponentialRampToValue') {\n const { endTime, value } = automationEvent;\n audioParam.exponentialRampToValueAtTime(value, endTime);\n }\n else if (automationEvent.type === 'linearRampToValue') {\n const { endTime, value } = automationEvent;\n audioParam.linearRampToValueAtTime(value, endTime);\n }\n else if (automationEvent.type === 'setTarget') {\n const { startTime, target, timeConstant } = automationEvent;\n audioParam.setTargetAtTime(target, startTime, timeConstant);\n }\n else if (automationEvent.type === 'setValue') {\n const { startTime, value } = automationEvent;\n audioParam.setValueAtTime(value, startTime);\n }\n else if (automationEvent.type === 'setValueCurve') {\n const { duration, startTime, values } = automationEvent;\n audioParam.setValueCurveAtTime(values, startTime, duration);\n }\n else {\n throw new Error(\"Can't apply an unknown automation.\");\n }\n }\n }\n };\n};\n//# sourceMappingURL=audio-param-renderer.js.map","export class ReadOnlyMap {\n constructor(parameters) {\n this._map = new Map(parameters);\n }\n get size() {\n return this._map.size;\n }\n entries() {\n return this._map.entries();\n }\n forEach(callback, thisArg = null) {\n return this._map.forEach((value, key) => callback.call(thisArg, value, key, this));\n }\n get(name) {\n return this._map.get(name);\n }\n has(name) {\n return this._map.has(name);\n }\n keys() {\n return this._map.keys();\n }\n values() {\n return this._map.values();\n }\n}\n//# sourceMappingURL=read-only-map.js.map","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport { ReadOnlyMap } from '../read-only-map';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n // Bug #61: The channelCountMode should be 'max' according to the spec but is set to 'explicit' to achieve consistent behavior.\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 1,\n numberOfOutputs: 1,\n parameterData: {},\n processorOptions: {}\n};\nexport const createAudioWorkletNodeConstructor = (addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, testAudioWorkletNodeOptionsClonability, wrapEventListener) => {\n return class AudioWorkletNode extends audioNodeConstructor {\n constructor(context, name, options) {\n var _a;\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = sanitizeAudioWorkletNodeOptions({ ...DEFAULT_OPTIONS, ...options });\n // Bug #191: Safari doesn't throw an error if the options aren't clonable.\n testAudioWorkletNodeOptionsClonability(mergedOptions);\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n const processorConstructor = nodeNameToProcessorConstructorMap === null || nodeNameToProcessorConstructorMap === void 0 ? void 0 : nodeNameToProcessorConstructorMap.get(name);\n // Bug #186: Chrome and Edge do not allow to create an AudioWorkletNode on a closed AudioContext.\n const nativeContextOrBackupOfflineAudioContext = isOffline || nativeContext.state !== 'closed'\n ? nativeContext\n : (_a = getBackupOfflineAudioContext(nativeContext)) !== null && _a !== void 0 ? _a : nativeContext;\n const nativeAudioWorkletNode = createNativeAudioWorkletNode(nativeContextOrBackupOfflineAudioContext, isOffline ? null : context.baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, mergedOptions);\n const audioWorkletNodeRenderer = ((isOffline ? createAudioWorkletNodeRenderer(name, mergedOptions, processorConstructor) : null));\n /*\n * @todo Add a mechanism to switch an AudioWorkletNode to passive once the process() function of the AudioWorkletProcessor\n * returns false.\n */\n super(context, true, nativeAudioWorkletNode, audioWorkletNodeRenderer);\n const parameters = [];\n nativeAudioWorkletNode.parameters.forEach((nativeAudioParam, nm) => {\n const audioParam = createAudioParam(this, isOffline, nativeAudioParam);\n parameters.push([nm, audioParam]);\n });\n this._nativeAudioWorkletNode = nativeAudioWorkletNode;\n this._onprocessorerror = null;\n this._parameters = new ReadOnlyMap(parameters);\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to\n * the destination.\n */\n if (isOffline) {\n addUnrenderedAudioWorkletNode(nativeContext, this);\n }\n const { activeInputs } = getAudioNodeConnections(this);\n setActiveAudioWorkletNodeInputs(nativeAudioWorkletNode, activeInputs);\n }\n get onprocessorerror() {\n return this._onprocessorerror;\n }\n set onprocessorerror(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeAudioWorkletNode.onprocessorerror = wrappedListener;\n const nativeOnProcessorError = this._nativeAudioWorkletNode.onprocessorerror;\n this._onprocessorerror =\n nativeOnProcessorError !== null && nativeOnProcessorError === wrappedListener\n ? value\n : nativeOnProcessorError;\n }\n get parameters() {\n if (this._parameters === null) {\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n return this._nativeAudioWorkletNode.parameters;\n }\n return this._parameters;\n }\n get port() {\n return this._nativeAudioWorkletNode.port;\n }\n };\n};\n//# sourceMappingURL=audio-worklet-node-constructor.js.map","export function copyFromChannel(audioBuffer, \n// @todo There is currently no way to define something like { [ key: number | string ]: Float32Array }\nparent, key, channelNumber, bufferOffset) {\n if (typeof audioBuffer.copyFromChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = new Float32Array(128);\n }\n audioBuffer.copyFromChannel(parent[key], channelNumber, bufferOffset);\n // Bug #5: Safari does not support copyFromChannel().\n }\n else {\n const channelData = audioBuffer.getChannelData(channelNumber);\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = channelData.slice(bufferOffset, bufferOffset + 128);\n }\n else {\n const slicedInput = new Float32Array(channelData.buffer, bufferOffset * Float32Array.BYTES_PER_ELEMENT, 128);\n parent[key].set(slicedInput);\n }\n }\n}\n//# sourceMappingURL=copy-from-channel.js.map","export const copyToChannel = (audioBuffer, parent, key, channelNumber, bufferOffset) => {\n if (typeof audioBuffer.copyToChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.copyToChannel(parent[key], channelNumber, bufferOffset);\n }\n // Bug #5: Safari does not support copyToChannel().\n }\n else {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.getChannelData(channelNumber).set(parent[key], bufferOffset);\n }\n }\n};\n//# sourceMappingURL=copy-to-channel.js.map","export const createNestedArrays = (x, y) => {\n const arrays = [];\n for (let i = 0; i < x; i += 1) {\n const array = [];\n const length = typeof y === 'number' ? y : y[i];\n for (let j = 0; j < length; j += 1) {\n array.push(new Float32Array(128));\n }\n arrays.push(array);\n }\n return arrays;\n};\n//# sourceMappingURL=create-nested-arrays.js.map","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { getNativeAudioNode } from './get-native-audio-node';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioWorkletProcessor = (nativeOfflineAudioContext, proxy) => {\n const nodeToProcessorMap = getValueForKey(NODE_TO_PROCESSOR_MAPS, nativeOfflineAudioContext);\n const nativeAudioWorkletNode = getNativeAudioNode(proxy);\n return getValueForKey(nodeToProcessorMap, nativeAudioWorkletNode);\n};\n//# sourceMappingURL=get-audio-worklet-processor.js.map","import { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioWorkletProcessor } from '../helpers/get-audio-worklet-processor';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nconst processBuffer = async (proxy, renderedBuffer, nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime) => {\n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n const length = renderedBuffer === null ? Math.ceil(proxy.context.length / 128) * 128 : renderedBuffer.length;\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const processedBuffer = numberOfOutputChannels === 0\n ? null\n : nativeOfflineAudioContext.createBuffer(numberOfOutputChannels, length, nativeOfflineAudioContext.sampleRate);\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n const audioNodeConnections = getAudioNodeConnections(proxy);\n const audioWorkletProcessor = await getAudioWorkletProcessor(nativeOfflineAudioContext, proxy);\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters = Array.from(proxy.parameters.keys()).reduce((prmtrs, name) => ({ ...prmtrs, [name]: new Float32Array(128) }), {});\n for (let i = 0; i < length; i += 128) {\n if (options.numberOfInputs > 0 && renderedBuffer !== null) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(renderedBuffer, inputs[j], k, k, i);\n }\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined && renderedBuffer !== null) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(renderedBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n if (audioNodeConnections.activeInputs[index].size === 0) {\n return [];\n }\n return input;\n });\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(i / nativeOfflineAudioContext.sampleRate, nativeOfflineAudioContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters));\n if (processedBuffer !== null) {\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(processedBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n }\n if (!activeSourceFlag) {\n break;\n }\n }\n catch (error) {\n proxy.dispatchEvent(new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n }));\n break;\n }\n }\n return processedBuffer;\n};\nexport const createAudioWorkletNodeRendererFactory = (connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => {\n return (name, options, processorConstructor) => {\n const renderedNativeAudioNodes = new WeakMap();\n let processedBufferPromise = null;\n const createAudioNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeAudioWorkletNode = getNativeAudioNode(proxy);\n let nativeOutputNodes = null;\n const nativeAudioWorkletNodeIsOwnedByContext = isOwnedByContext(nativeAudioWorkletNode, nativeOfflineAudioContext);\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n // Bug #61: Only Chrome, Edge & Firefox have an implementation of the AudioWorkletNode yet.\n if (nativeAudioWorkletNodeConstructor === null) {\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes = [];\n for (let i = 0; i < proxy.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n }));\n }\n const outputGainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n });\n outputGainNode.connect = connectMultipleOutputs.bind(null, outputChannelMergerNodes);\n outputGainNode.disconnect = disconnectMultipleOutputs.bind(null, outputChannelMergerNodes);\n nativeOutputNodes = [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode];\n }\n else if (!nativeAudioWorkletNodeIsOwnedByContext) {\n nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeOfflineAudioContext, name);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeOutputNodes === null ? nativeAudioWorkletNode : nativeOutputNodes[2]);\n if (nativeOutputNodes !== null) {\n if (processedBufferPromise === null) {\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n const numberOfInputChannels = proxy.channelCount * proxy.numberOfInputs;\n const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n const numberOfChannels = numberOfInputChannels + numberOfParameters;\n const renderBuffer = async () => {\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(numberOfChannels, \n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n Math.ceil(proxy.context.length / 128) * 128, nativeOfflineAudioContext.sampleRate);\n const gainNodes = [];\n const inputChannelSplitterNodes = [];\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(createNativeGainNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n }));\n inputChannelSplitterNodes.push(createNativeChannelSplitterNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n }));\n }\n const constantSourceNodes = await Promise.all(Array.from(proxy.parameters.values()).map(async (audioParam) => {\n const constantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: audioParam.value\n });\n await renderAutomation(partialOfflineAudioContext, audioParam, constantSourceNode.offset);\n return constantSourceNode;\n }));\n const inputChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n for (const [index, constantSourceNode] of constantSourceNodes.entries()) {\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n }\n inputChannelMergerNode.connect(partialOfflineAudioContext.destination);\n await Promise.all(gainNodes.map((gainNode) => renderInputsOfAudioNode(proxy, partialOfflineAudioContext, gainNode)));\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n };\n processedBufferPromise = processBuffer(proxy, numberOfChannels === 0 ? null : await renderBuffer(), nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime);\n }\n const processedBuffer = await processedBufferPromise;\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode] = nativeOutputNodes;\n if (processedBuffer !== null) {\n audioBufferSourceNode.buffer = processedBuffer;\n audioBufferSourceNode.start(0);\n }\n audioBufferSourceNode.connect(outputChannelSplitterNode);\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < proxy.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n return outputGainNode;\n }\n if (!nativeAudioWorkletNodeIsOwnedByContext) {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await renderAutomation(nativeOfflineAudioContext, audioParam, \n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n nativeAudioWorkletNode.parameters.get(nm));\n }\n }\n else {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await connectAudioParam(nativeOfflineAudioContext, audioParam, \n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n nativeAudioWorkletNode.parameters.get(nm));\n }\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioWorkletNode);\n return nativeAudioWorkletNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n deleteUnrenderedAudioWorkletNode(nativeOfflineAudioContext, proxy);\n const renderedNativeAudioWorkletNodeOrGainNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioWorkletNodeOrGainNode !== undefined) {\n return Promise.resolve(renderedNativeAudioWorkletNodeOrGainNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=audio-worklet-node-renderer-factory.js.map","export const createCacheTestResult = (ongoingTests, testResults) => {\n return (tester, test) => {\n const cachedTestResult = testResults.get(tester);\n if (cachedTestResult !== undefined) {\n return cachedTestResult;\n }\n const ongoingTest = ongoingTests.get(tester);\n if (ongoingTest !== undefined) {\n return ongoingTest;\n }\n try {\n const synchronousTestResult = test();\n if (synchronousTestResult instanceof Promise) {\n ongoingTests.set(tester, synchronousTestResult);\n return synchronousTestResult\n .catch(() => false)\n .then((finalTestResult) => {\n ongoingTests.delete(tester);\n testResults.set(tester, finalTestResult);\n return finalTestResult;\n });\n }\n testResults.set(tester, synchronousTestResult);\n return synchronousTestResult;\n }\n catch {\n testResults.set(tester, false);\n return false;\n }\n };\n};\n//# sourceMappingURL=cache-test-result.js.map","export const createConnectAudioParam = (renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => {\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam);\n };\n};\n//# sourceMappingURL=connect-audio-param.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nexport const createConnectMultipleOutputs = (createIndexSizeError) => {\n return (outputAudioNodes, destination, output = 0, input = 0) => {\n const outputAudioNode = outputAudioNodes[output];\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n if (isNativeAudioNode(destination)) {\n return outputAudioNode.connect(destination, 0, input);\n }\n return outputAudioNode.connect(destination, 0);\n };\n};\n//# sourceMappingURL=connect-multiple-outputs.js.map","export const createConvertNumberToUnsignedLong = (unit32Array) => {\n return (value) => {\n unit32Array[0] = value;\n return unit32Array[0];\n };\n};\n//# sourceMappingURL=convert-number-to-unsigned-long.js.map","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nexport const createDecrementCycleCounter = (connectNativeAudioNodeToNativeAudioNode, cycleCounters, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n if (cycleCounter === undefined) {\n throw new Error('Missing the expected cycle count.');\n }\n const nativeContext = getNativeContext(audioNode.context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (cycleCounter === count) {\n cycleCounters.delete(audioNode);\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]);\n }\n else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n nativeSourceAudioNode.connect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n }\n else {\n cycleCounters.set(audioNode, cycleCounter - count);\n }\n };\n};\n//# sourceMappingURL=decrement-cycle-counter.js.map","export const createDeleteActiveInputConnectionToAudioNode = (pickElementFromSet) => {\n return (activeInputs, source, output, input) => {\n return pickElementFromSet(activeInputs[input], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output);\n };\n};\n//# sourceMappingURL=delete-active-input-connection-to-audio-node.js.map","export const createDeleteUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).delete(audioWorkletNode);\n };\n};\n//# sourceMappingURL=delete-unrendered-audio-worklet-node.js.map","export const isDelayNode = (audioNode) => {\n return 'delayTime' in audioNode;\n};\n//# sourceMappingURL=delay-node.js.map","import { isAudioNode } from '../guards/audio-node';\nimport { isDelayNode } from '../guards/delay-node';\nexport const createDetectCycles = (audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey) => {\n return function detectCycles(chain, nextLink) {\n const audioNode = isAudioNode(nextLink) ? nextLink : getValueForKey(audioParamAudioNodeStore, nextLink);\n if (isDelayNode(audioNode)) {\n return [];\n }\n if (chain[0] === audioNode) {\n return [chain];\n }\n if (chain.includes(audioNode)) {\n return [];\n }\n const { outputs } = getAudioNodeConnections(audioNode);\n return Array.from(outputs)\n .map((outputConnection) => detectCycles([...chain, audioNode], outputConnection[0]))\n .reduce((mergedCycles, nestedCycles) => mergedCycles.concat(nestedCycles), []);\n };\n};\n//# sourceMappingURL=detect-cycles.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nconst getOutputAudioNodeAtIndex = (createIndexSizeError, outputAudioNodes, output) => {\n const outputAudioNode = outputAudioNodes[output];\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n return outputAudioNode;\n};\nexport const createDisconnectMultipleOutputs = (createIndexSizeError) => {\n return (outputAudioNodes, destinationOrOutput = undefined, output = undefined, input = 0) => {\n if (destinationOrOutput === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect());\n }\n if (typeof destinationOrOutput === 'number') {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, destinationOrOutput).disconnect();\n }\n if (isNativeAudioNode(destinationOrOutput)) {\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n if (input === undefined) {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n }\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0, input);\n }\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n };\n};\n//# sourceMappingURL=disconnect-multiple-outputs.js.map","export const createEvaluateSource = (window) => {\n return (source) => new Promise((resolve, reject) => {\n if (window === null) {\n // Bug #182 Chrome and Edge do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n return;\n }\n const head = window.document.head;\n if (head === null) {\n // Bug #182 Chrome and Edge do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n }\n else {\n const script = window.document.createElement('script');\n // @todo Safari doesn't like URLs with a type of 'application/javascript; charset=utf-8'.\n const blob = new Blob([source], { type: 'application/javascript' });\n const url = URL.createObjectURL(blob);\n const originalOnErrorHandler = window.onerror;\n const removeErrorEventListenerAndRevokeUrl = () => {\n window.onerror = originalOnErrorHandler;\n URL.revokeObjectURL(url);\n };\n window.onerror = (message, src, lineno, colno, error) => {\n // @todo Edge thinks the source is the one of the html document.\n if (src === url || (src === window.location.href && lineno === 1 && colno === 1)) {\n removeErrorEventListenerAndRevokeUrl();\n reject(error);\n return false;\n }\n if (originalOnErrorHandler !== null) {\n return originalOnErrorHandler(message, src, lineno, colno, error);\n }\n };\n script.onerror = () => {\n removeErrorEventListenerAndRevokeUrl();\n // Bug #182 Chrome and Edge do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n };\n script.onload = () => {\n removeErrorEventListenerAndRevokeUrl();\n resolve();\n };\n script.src = url;\n script.type = 'module';\n head.appendChild(script);\n }\n });\n};\n//# sourceMappingURL=evaluate-source.js.map","export const createEventTargetConstructor = (wrapEventListener) => {\n return class EventTarget {\n constructor(_nativeEventTarget) {\n this._nativeEventTarget = _nativeEventTarget;\n this._listeners = new WeakMap();\n }\n addEventListener(type, listener, options) {\n if (listener !== null) {\n let wrappedEventListener = this._listeners.get(listener);\n if (wrappedEventListener === undefined) {\n wrappedEventListener = wrapEventListener(this, listener);\n if (typeof listener === 'function') {\n this._listeners.set(listener, wrappedEventListener);\n }\n }\n this._nativeEventTarget.addEventListener(type, wrappedEventListener, options);\n }\n }\n dispatchEvent(event) {\n return this._nativeEventTarget.dispatchEvent(event);\n }\n removeEventListener(type, listener, options) {\n const wrappedEventListener = listener === null ? undefined : this._listeners.get(listener);\n this._nativeEventTarget.removeEventListener(type, wrappedEventListener === undefined ? null : wrappedEventListener, options);\n }\n };\n};\n//# sourceMappingURL=event-target-constructor.js.map","export const createExposeCurrentFrameAndCurrentTime = (window) => {\n return (currentTime, sampleRate, fn) => {\n Object.defineProperties(window, {\n currentFrame: {\n configurable: true,\n get() {\n return Math.round(currentTime * sampleRate);\n }\n },\n currentTime: {\n configurable: true,\n get() {\n return currentTime;\n }\n }\n });\n try {\n return fn();\n }\n finally {\n if (window !== null) {\n delete window.currentFrame;\n delete window.currentTime;\n }\n }\n };\n};\n//# sourceMappingURL=expose-current-frame-and-current-time.js.map","export const createFetchSource = (createAbortError) => {\n return async (url) => {\n try {\n const response = await fetch(url);\n if (response.ok) {\n return [await response.text(), response.url];\n }\n }\n catch {\n // Ignore errors.\n } // tslint:disable-line:no-empty\n throw createAbortError();\n };\n};\n//# sourceMappingURL=fetch-source.js.map","export const createGetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore, getValueForKey) => {\n return (nativeAudioWorkletNode) => getValueForKey(activeAudioWorkletNodeInputsStore, nativeAudioWorkletNode);\n};\n//# sourceMappingURL=get-active-audio-worklet-node-inputs.js.map","export const createGetAudioNodeRenderer = (getAudioNodeConnections) => {\n return (audioNode) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n if (audioNodeConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioNode in the audio graph.');\n }\n return audioNodeConnections.renderer;\n };\n};\n//# sourceMappingURL=get-audio-node-renderer.js.map","export const createGetAudioNodeTailTime = (audioNodeTailTimeStore) => {\n return (audioNode) => { var _a; return (_a = audioNodeTailTimeStore.get(audioNode)) !== null && _a !== void 0 ? _a : 0; };\n};\n//# sourceMappingURL=get-audio-node-tail-time.js.map","export const createGetAudioParamRenderer = (getAudioParamConnections) => {\n return (audioParam) => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n if (audioParamConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioParam in the audio graph.');\n }\n return audioParamConnections.renderer;\n };\n};\n//# sourceMappingURL=get-audio-param-renderer.js.map","export const createGetBackupOfflineAudioContext = (backupOfflineAudioContextStore) => {\n return (nativeContext) => {\n return backupOfflineAudioContextStore.get(nativeContext);\n };\n};\n//# sourceMappingURL=get-backup-offline-audio-context.js.map","export const createInvalidStateError = () => new DOMException('', 'InvalidStateError');\n//# sourceMappingURL=invalid-state-error.js.map","import { createInvalidStateError } from './invalid-state-error';\nexport const createGetNativeContext = (contextStore) => {\n return (context) => {\n const nativeContext = contextStore.get(context);\n if (nativeContext === undefined) {\n throw createInvalidStateError();\n }\n return (nativeContext);\n };\n};\n//# sourceMappingURL=get-native-context.js.map","export const createGetOrCreateBackupOfflineAudioContext = (backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor) => {\n return (nativeContext) => {\n let backupOfflineAudioContext = backupOfflineAudioContextStore.get(nativeContext);\n if (backupOfflineAudioContext !== undefined) {\n return backupOfflineAudioContext;\n }\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n backupOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n backupOfflineAudioContextStore.set(nativeContext, backupOfflineAudioContext);\n return backupOfflineAudioContext;\n };\n};\n//# sourceMappingURL=get-or-create-backup-offline-audio-context.js.map","export const createGetUnrenderedAudioWorkletNodes = (unrenderedAudioWorkletNodeStore) => {\n return (nativeContext) => {\n const unrenderedAudioWorkletNodes = unrenderedAudioWorkletNodeStore.get(nativeContext);\n if (unrenderedAudioWorkletNodes === undefined) {\n throw new Error('The context has no set of AudioWorkletNodes.');\n }\n return unrenderedAudioWorkletNodes;\n };\n};\n//# sourceMappingURL=get-unrendered-audio-worklet-nodes.js.map","export const createInvalidAccessError = () => new DOMException('', 'InvalidAccessError');\n//# sourceMappingURL=invalid-access-error.js.map","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nexport const createIncrementCycleCounterFactory = (cycleCounters, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode) => {\n return (isOffline) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n if (cycleCounter === undefined) {\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]);\n }\n else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n nativeSourceAudioNode.disconnect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n cycleCounters.set(audioNode, count);\n }\n else {\n cycleCounters.set(audioNode, cycleCounter + count);\n }\n };\n };\n};\n//# sourceMappingURL=increment-cycle-counter-factory.js.map","export const createIsNativeAudioContext = (nativeAudioContextConstructor) => {\n return (anything) => {\n return nativeAudioContextConstructor !== null && anything instanceof nativeAudioContextConstructor;\n };\n};\n//# sourceMappingURL=is-native-audio-context.js.map","export const createIsNativeAudioNode = (window) => {\n return (anything) => {\n return window !== null && typeof window.AudioNode === 'function' && anything instanceof window.AudioNode;\n };\n};\n//# sourceMappingURL=is-native-audio-node.js.map","export const createIsNativeAudioParam = (window) => {\n return (anything) => {\n return window !== null && typeof window.AudioParam === 'function' && anything instanceof window.AudioParam;\n };\n};\n//# sourceMappingURL=is-native-audio-param.js.map","export const createIsNativeOfflineAudioContext = (nativeOfflineAudioContextConstructor) => {\n return (anything) => {\n return nativeOfflineAudioContextConstructor !== null && anything instanceof nativeOfflineAudioContextConstructor;\n };\n};\n//# sourceMappingURL=is-native-offline-audio-context.js.map","export const createIsSecureContext = (window) => window !== null && window.isSecureContext;\n//# sourceMappingURL=is-secure-context.js.map","export const createMediaStreamAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class MediaStreamAudioSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamAudioSourceNode = createNativeMediaStreamAudioSourceNode(nativeContext, options);\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n super(context, true, nativeMediaStreamAudioSourceNode, null);\n this._nativeMediaStreamAudioSourceNode = nativeMediaStreamAudioSourceNode;\n }\n get mediaStream() {\n return this._nativeMediaStreamAudioSourceNode.mediaStream;\n }\n };\n};\n//# sourceMappingURL=media-stream-audio-source-node-constructor.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nexport const createMinimalAudioContextConstructor = (createInvalidStateError, createNotSupportedError, createUnknownError, minimalBaseAudioContextConstructor, nativeAudioContextConstructor) => {\n return class MinimalAudioContext extends minimalBaseAudioContextConstructor {\n constructor(options = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n let nativeAudioContext;\n try {\n nativeAudioContext = new nativeAudioContextConstructor(options);\n }\n catch (err) {\n // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported.\n if (err.code === 12 && err.message === 'sampleRate is not in range') {\n throw createNotSupportedError();\n }\n throw err;\n }\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n // Bug #51 Only Chrome and Edge throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(`The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);\n }\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n super(nativeAudioContext, 2);\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n this._nativeGainNode.gain.value = 1e-37;\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n }\n else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n this._state = null;\n /*\n * Bug #34: Chrome and Edge pretend to be running right away, but fire an onstatechange event when the state actually changes\n * to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n get baseLatency() {\n return this._baseLatency;\n }\n get state() {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n close() {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n deactivateAudioGraph(this);\n });\n }\n resume() {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n }\n else {\n this.resume().then(resolve, reject);\n }\n };\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome and Edge do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n suspend() {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n };\n};\n//# sourceMappingURL=minimal-audio-context-constructor.js.map","import { CONTEXT_STORE } from '../globals';\nexport const createMinimalBaseAudioContextConstructor = (audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener) => {\n return class MinimalBaseAudioContext extends eventTargetConstructor {\n constructor(_nativeContext, numberOfChannels) {\n super(_nativeContext);\n this._nativeContext = _nativeContext;\n CONTEXT_STORE.set(this, _nativeContext);\n if (isNativeOfflineAudioContext(_nativeContext)) {\n unrenderedAudioWorkletNodeStore.set(_nativeContext, new Set());\n }\n this._destination = new audioDestinationNodeConstructor(this, numberOfChannels);\n this._listener = createAudioListener(this, _nativeContext);\n this._onstatechange = null;\n }\n get currentTime() {\n return this._nativeContext.currentTime;\n }\n get destination() {\n return this._destination;\n }\n get listener() {\n return this._listener;\n }\n get onstatechange() {\n return this._onstatechange;\n }\n set onstatechange(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeContext.onstatechange = wrappedListener;\n const nativeOnStateChange = this._nativeContext.onstatechange;\n this._onstatechange = nativeOnStateChange !== null && nativeOnStateChange === wrappedListener ? value : nativeOnStateChange;\n }\n get sampleRate() {\n return this._nativeContext.sampleRate;\n }\n get state() {\n return this._nativeContext.state;\n }\n };\n};\n//# sourceMappingURL=minimal-base-audio-context-constructor.js.map","export const testPromiseSupport = (nativeContext) => {\n // This 12 numbers represent the 48 bytes of an empty WAVE file with a single sample.\n const uint32Array = new Uint32Array([1179011410, 40, 1163280727, 544501094, 16, 131073, 44100, 176400, 1048580, 1635017060, 4, 0]);\n try {\n // Bug #1: Safari requires a successCallback.\n const promise = nativeContext.decodeAudioData(uint32Array.buffer, () => {\n // Ignore the success callback.\n });\n if (promise === undefined) {\n return false;\n }\n promise.catch(() => {\n // Ignore rejected errors.\n });\n return true;\n }\n catch {\n // Ignore errors.\n }\n return false;\n};\n//# sourceMappingURL=test-promise-support.js.map","export const createMonitorConnections = (insertElementInSet, isNativeAudioNode) => {\n return (nativeAudioNode, whenConnected, whenDisconnected) => {\n const connections = new Set();\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void no-inferrable-types\n return (destination, output = 0, input = 0) => {\n const wasDisconnected = connections.size === 0;\n if (isNativeAudioNode(destination)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n connect.call(nativeAudioNode, destination, output, input);\n insertElementInSet(connections, [destination, output, input], (connection) => connection[0] === destination && connection[1] === output && connection[2] === input, true);\n if (wasDisconnected) {\n whenConnected();\n }\n return destination;\n }\n connect.call(nativeAudioNode, destination, output);\n insertElementInSet(connections, [destination, output], (connection) => connection[0] === destination && connection[1] === output, true);\n if (wasDisconnected) {\n whenConnected();\n }\n return;\n };\n })(nativeAudioNode.connect);\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput, output, input) => {\n const wasConnected = connections.size > 0;\n if (destinationOrOutput === undefined) {\n disconnect.apply(nativeAudioNode);\n connections.clear();\n }\n else if (typeof destinationOrOutput === 'number') {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n disconnect.call(nativeAudioNode, destinationOrOutput);\n for (const connection of connections) {\n if (connection[1] === destinationOrOutput) {\n connections.delete(connection);\n }\n }\n }\n else {\n if (isNativeAudioNode(destinationOrOutput)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n disconnect.call(nativeAudioNode, destinationOrOutput, output, input);\n }\n else {\n // @todo TypeScript cannot infer the overloaded signature with 2 arguments yet.\n disconnect.call(nativeAudioNode, destinationOrOutput, output);\n }\n for (const connection of connections) {\n if (connection[0] === destinationOrOutput &&\n (output === undefined || connection[1] === output) &&\n (input === undefined || connection[2] === input)) {\n connections.delete(connection);\n }\n }\n }\n const isDisconnected = connections.size === 0;\n if (wasConnected && isDisconnected) {\n whenDisconnected();\n }\n };\n })(nativeAudioNode.disconnect);\n return nativeAudioNode;\n };\n};\n//# sourceMappingURL=monitor-connections.js.map","export const assignNativeAudioNodeOption = (nativeAudioNode, options, option) => {\n const value = options[option];\n if (value !== undefined && value !== nativeAudioNode[option]) {\n nativeAudioNode[option] = value;\n }\n};\n//# sourceMappingURL=assign-native-audio-node-option.js.map","import { assignNativeAudioNodeOption } from './assign-native-audio-node-option';\nexport const assignNativeAudioNodeOptions = (nativeAudioNode, options) => {\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCount');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCountMode');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelInterpretation');\n};\n//# sourceMappingURL=assign-native-audio-node-options.js.map","export const createNativeAudioBufferConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('AudioBuffer')) {\n return window.AudioBuffer;\n }\n return null;\n};\n//# sourceMappingURL=native-audio-buffer-constructor.js.map","export const assignNativeAudioNodeAudioParamValue = (nativeAudioNode, options, audioParam) => {\n const value = options[audioParam];\n if (value !== undefined && value !== nativeAudioNode[audioParam].value) {\n nativeAudioNode[audioParam].value = value;\n }\n};\n//# sourceMappingURL=assign-native-audio-node-audio-param-value.js.map","import { createInvalidStateError } from '../factories/invalid-state-error';\nexport const wrapAudioBufferSourceNodeStartMethodConsecutiveCalls = (nativeAudioBufferSourceNode) => {\n nativeAudioBufferSourceNode.start = ((start) => {\n let isScheduled = false;\n return (when = 0, offset = 0, duration) => {\n if (isScheduled) {\n throw createInvalidStateError();\n }\n start.call(nativeAudioBufferSourceNode, when, offset, duration);\n isScheduled = true;\n };\n })(nativeAudioBufferSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-start-method-consecutive-calls.js.map","export const wrapAudioScheduledSourceNodeStartMethodNegativeParameters = (nativeAudioScheduledSourceNode) => {\n nativeAudioScheduledSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration) => {\n if ((typeof duration === 'number' && duration < 0) || offset < 0 || when < 0) {\n throw new RangeError(\"The parameters can't be negative.\");\n }\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n start.call(nativeAudioScheduledSourceNode, when, offset, duration);\n };\n })(nativeAudioScheduledSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-start-method-negative-parameters.js.map","export const wrapAudioScheduledSourceNodeStopMethodNegativeParameters = (nativeAudioScheduledSourceNode) => {\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n return (when = 0) => {\n if (when < 0) {\n throw new RangeError(\"The parameter can't be negative.\");\n }\n stop.call(nativeAudioScheduledSourceNode, when);\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-stop-method-negative-parameters.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioBufferSourceNodeStartMethodConsecutiveCalls } from '../helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nexport const createNativeAudioBufferSourceNodeFactory = (addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClampling, wrapAudioBufferSourceNodeStopMethodNullifiedBuffer, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => {\n return (nativeContext, options) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n assignNativeAudioNodeOptions(nativeAudioBufferSourceNode, options);\n assignNativeAudioNodeAudioParamValue(nativeAudioBufferSourceNode, options, 'playbackRate');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'buffer');\n // Bug #149: Safari does not yet support the detune AudioParam.\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loop');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopEnd');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopStart');\n // Bug #69: Safari does allow calls to start() of an already scheduled AudioBufferSourceNode.\n if (!cacheTestResult(testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, () => testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(nativeAudioBufferSourceNode);\n }\n // Bug #154 & #155: Safari does not handle offsets which are equal to or greater than the duration of the buffer.\n if (!cacheTestResult(testAudioBufferSourceNodeStartMethodOffsetClampingSupport, () => testAudioBufferSourceNodeStartMethodOffsetClampingSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStartMethodOffsetClampling(nativeAudioBufferSourceNode);\n }\n // Bug #162: Safari does throw an error when stop() is called on an AudioBufferSourceNode which has no buffer assigned to it.\n if (!cacheTestResult(testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, () => testAudioBufferSourceNodeStopMethodNullifiedBufferSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStopMethodNullifiedBuffer(nativeAudioBufferSourceNode, nativeContext);\n }\n // Bug #44: Safari does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeAudioBufferSourceNode, nativeContext);\n }\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeAudioBufferSourceNode);\n return nativeAudioBufferSourceNode;\n };\n};\n//# sourceMappingURL=native-audio-buffer-source-node-factory.js.map","export const createNativeAudioContextConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('AudioContext')) {\n return window.AudioContext;\n }\n return window.hasOwnProperty('webkitAudioContext') ? window.webkitAudioContext : null;\n};\n//# sourceMappingURL=native-audio-context-constructor.js.map","export const createNativeAudioDestinationNodeFactory = (createNativeGainNode, overwriteAccessors) => {\n return (nativeContext, channelCount, isNodeOfNativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeContext.destination;\n // Bug #132: Safari does not have the correct channelCount.\n if (nativeAudioDestinationNode.channelCount !== channelCount) {\n try {\n nativeAudioDestinationNode.channelCount = channelCount;\n }\n catch {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n }\n }\n // Bug #83: Safari does not have the correct channelCountMode.\n if (isNodeOfNativeOfflineAudioContext && nativeAudioDestinationNode.channelCountMode !== 'explicit') {\n nativeAudioDestinationNode.channelCountMode = 'explicit';\n }\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (nativeAudioDestinationNode.maxChannelCount === 0) {\n Object.defineProperty(nativeAudioDestinationNode, 'maxChannelCount', {\n value: channelCount\n });\n }\n // Bug #168: No browser does yet have an AudioDestinationNode with an output.\n const gainNode = createNativeGainNode(nativeContext, {\n channelCount,\n channelCountMode: nativeAudioDestinationNode.channelCountMode,\n channelInterpretation: nativeAudioDestinationNode.channelInterpretation,\n gain: 1\n });\n overwriteAccessors(gainNode, 'channelCount', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n try {\n nativeAudioDestinationNode.channelCount = value;\n }\n catch (err) {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n if (value > nativeAudioDestinationNode.maxChannelCount) {\n throw err;\n }\n }\n });\n overwriteAccessors(gainNode, 'channelCountMode', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelCountMode = value;\n });\n overwriteAccessors(gainNode, 'channelInterpretation', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelInterpretation = value;\n });\n Object.defineProperty(gainNode, 'maxChannelCount', {\n get: () => nativeAudioDestinationNode.maxChannelCount\n });\n // @todo This should be disconnected when the context is closed.\n gainNode.connect(nativeAudioDestinationNode);\n return gainNode;\n };\n};\n//# sourceMappingURL=native-audio-destination-node.js.map","export const createNativeAudioWorkletNodeConstructor = (window) => {\n if (window === null) {\n return null;\n }\n return window.hasOwnProperty('AudioWorkletNode') ? window.AudioWorkletNode : null;\n};\n//# sourceMappingURL=native-audio-worklet-node-constructor.js.map","export const testClonabilityOfAudioWorkletNodeOptions = (audioWorkletNodeOptions) => {\n const { port1 } = new MessageChannel();\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n }\n finally {\n port1.close();\n }\n};\n//# sourceMappingURL=test-clonability-of-audio-worklet-node-options.js.map","import { testClonabilityOfAudioWorkletNodeOptions } from '../helpers/test-clonability-of-audio-worklet-node-options';\nexport const createNativeAudioWorkletNodeFactory = (createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections) => {\n return (nativeContext, baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, options) => {\n if (nativeAudioWorkletNodeConstructor !== null) {\n try {\n const nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeContext, name, options);\n const patchedEventListeners = new Map();\n let onprocessorerror = null;\n Object.defineProperties(nativeAudioWorkletNode, {\n /*\n * Bug #61: Overwriting the property accessors for channelCount and channelCountMode is necessary as long as some\n * browsers have no native implementation to achieve a consistent behavior.\n */\n channelCount: {\n get: () => options.channelCount,\n set: () => {\n throw createInvalidStateError();\n }\n },\n channelCountMode: {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n },\n // Bug #156: Chrome and Edge do not yet fire an ErrorEvent.\n onprocessorerror: {\n get: () => onprocessorerror,\n set: (value) => {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.removeEventListener('processorerror', onprocessorerror);\n }\n onprocessorerror = typeof value === 'function' ? value : null;\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.addEventListener('processorerror', onprocessorerror);\n }\n }\n }\n });\n nativeAudioWorkletNode.addEventListener = ((addEventListener) => {\n return (...args) => {\n if (args[0] === 'processorerror') {\n const unpatchedEventListener = typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n }\n else {\n args[1] = (event) => {\n // Bug #178: Chrome and Edge do fire an event of type error.\n if (event.type === 'error') {\n Object.defineProperties(event, {\n type: { value: 'processorerror' }\n });\n unpatchedEventListener(event);\n }\n else {\n unpatchedEventListener(new ErrorEvent(args[0], { ...event }));\n }\n };\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n // Bug #178: Chrome and Edge do fire an event of type error.\n addEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n return addEventListener.call(nativeAudioWorkletNode, ...args);\n };\n })(nativeAudioWorkletNode.addEventListener);\n nativeAudioWorkletNode.removeEventListener = ((removeEventListener) => {\n return (...args) => {\n if (args[0] === 'processorerror') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n args[1] = patchedEventListener;\n }\n }\n // Bug #178: Chrome and Edge do fire an event of type error.\n removeEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n return removeEventListener.call(nativeAudioWorkletNode, args[0], args[1], args[2]);\n };\n })(nativeAudioWorkletNode.removeEventListener);\n /*\n * Bug #86: Chrome and Edge do not invoke the process() function if the corresponding AudioWorkletNode is unconnected but\n * has an output.\n */\n if (options.numberOfOutputs !== 0) {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeAudioWorkletNode.connect(nativeGainNode).connect(nativeContext.destination);\n const whenConnected = () => nativeGainNode.disconnect();\n const whenDisconnected = () => nativeGainNode.connect(nativeContext.destination);\n // @todo Disconnect the connection when the process() function of the AudioWorkletNode returns false.\n return monitorConnections(nativeAudioWorkletNode, whenConnected, whenDisconnected);\n }\n return nativeAudioWorkletNode;\n }\n catch (err) {\n // Bug #60: Chrome & Edge throw an InvalidStateError instead of a NotSupportedError.\n if (err.code === 11) {\n throw createNotSupportedError();\n }\n throw err;\n }\n }\n // Bug #61: Only Chrome & Edge have an implementation of the AudioWorkletNode yet.\n if (processorConstructor === undefined) {\n throw createNotSupportedError();\n }\n testClonabilityOfAudioWorkletNodeOptions(options);\n return createNativeAudioWorkletNodeFaker(nativeContext, baseLatency, processorConstructor, options);\n };\n};\n//# sourceMappingURL=native-audio-worklet-node-factory.js.map","export const computeBufferSize = (baseLatency, sampleRate) => {\n if (baseLatency === null) {\n return 512;\n }\n return Math.max(512, Math.min(16384, Math.pow(2, Math.round(Math.log2(baseLatency * sampleRate)))));\n};\n//# sourceMappingURL=compute-buffer-size.js.map","export const cloneAudioWorkletNodeOptions = (audioWorkletNodeOptions) => {\n return new Promise((resolve, reject) => {\n const { port1, port2 } = new MessageChannel();\n port1.onmessage = ({ data }) => {\n port1.close();\n port2.close();\n resolve(data);\n };\n port1.onmessageerror = ({ data }) => {\n port1.close();\n port2.close();\n reject(data);\n };\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port2.postMessage(audioWorkletNodeOptions);\n });\n};\n//# sourceMappingURL=clone-audio-worklet-node-options.js.map","import { cloneAudioWorkletNodeOptions } from './clone-audio-worklet-node-options';\nexport const createAudioWorkletProcessorPromise = async (processorConstructor, audioWorkletNodeOptions) => {\n const clonedAudioWorkletNodeOptions = await cloneAudioWorkletNodeOptions(audioWorkletNodeOptions);\n return new processorConstructor(clonedAudioWorkletNodeOptions);\n};\n//# sourceMappingURL=create-audio-worklet-processor-promise.js.map","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { createAudioWorkletProcessorPromise } from './create-audio-worklet-processor-promise';\nexport const createAudioWorkletProcessor = (nativeContext, nativeAudioWorkletNode, processorConstructor, audioWorkletNodeOptions) => {\n let nodeToProcessorMap = NODE_TO_PROCESSOR_MAPS.get(nativeContext);\n if (nodeToProcessorMap === undefined) {\n nodeToProcessorMap = new WeakMap();\n NODE_TO_PROCESSOR_MAPS.set(nativeContext, nodeToProcessorMap);\n }\n const audioWorkletProcessorPromise = createAudioWorkletProcessorPromise(processorConstructor, audioWorkletNodeOptions);\n nodeToProcessorMap.set(nativeAudioWorkletNode, audioWorkletProcessorPromise);\n return audioWorkletProcessorPromise;\n};\n//# sourceMappingURL=create-audio-worklet-processor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createAudioWorkletProcessor } from '../helpers/create-audio-worklet-processor';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { ReadOnlyMap } from '../read-only-map';\nexport const createNativeAudioWorkletNodeFakerFactory = (connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections) => {\n return (nativeContext, baseLatency, processorConstructor, options) => {\n if (options.numberOfInputs === 0 && options.numberOfOutputs === 0) {\n throw createNotSupportedError();\n }\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n // @todo Check if any of the channelCount values is greater than the implementation's maximum number of channels.\n if (outputChannelCount.some((channelCount) => channelCount < 1)) {\n throw createNotSupportedError();\n }\n if (outputChannelCount.length !== options.numberOfOutputs) {\n throw createIndexSizeError();\n }\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (options.channelCountMode !== 'explicit') {\n throw createNotSupportedError();\n }\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (numberOfInputChannels + numberOfParameters > 6 || numberOfOutputChannels > 6) {\n throw createNotSupportedError();\n }\n const messageChannel = new MessageChannel();\n const gainNodes = [];\n const inputChannelSplitterNodes = [];\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(createNativeGainNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n }));\n inputChannelSplitterNodes.push(createNativeChannelSplitterNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n }));\n }\n const constantSourceNodes = [];\n if (processorConstructor.parameterDescriptors !== undefined) {\n for (const { defaultValue, maxValue, minValue, name } of processorConstructor.parameterDescriptors) {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: options.parameterData[name] !== undefined\n ? options.parameterData[name]\n : defaultValue === undefined\n ? 0\n : defaultValue\n });\n Object.defineProperties(constantSourceNode.offset, {\n defaultValue: {\n get: () => (defaultValue === undefined ? 0 : defaultValue)\n },\n maxValue: {\n get: () => (maxValue === undefined ? MOST_POSITIVE_SINGLE_FLOAT : maxValue)\n },\n minValue: {\n get: () => (minValue === undefined ? MOST_NEGATIVE_SINGLE_FLOAT : minValue)\n }\n });\n constantSourceNodes.push(constantSourceNode);\n }\n }\n const inputChannelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, numberOfInputChannels + numberOfParameters, \n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n Math.max(1, numberOfOutputChannels));\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes = [];\n for (let i = 0; i < options.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n }));\n }\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n const parameterMap = new ReadOnlyMap(processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.map(({ name }, index) => {\n const constantSourceNode = constantSourceNodes[index];\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n return [name, constantSourceNode.offset];\n }));\n inputChannelMergerNode.connect(scriptProcessorNode);\n let channelInterpretation = options.channelInterpretation;\n let onprocessorerror = null;\n // Bug #87: Expose at least one output to make this node connectable.\n const outputAudioNodes = options.numberOfOutputs === 0 ? [scriptProcessorNode] : outputChannelMergerNodes;\n const nativeAudioWorkletNodeFaker = {\n get bufferSize() {\n return bufferSize;\n },\n get channelCount() {\n return options.channelCount;\n },\n set channelCount(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelCountMode() {\n return options.channelCountMode;\n },\n set channelCountMode(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelInterpretation() {\n return channelInterpretation;\n },\n set channelInterpretation(value) {\n for (const gainNode of gainNodes) {\n gainNode.channelInterpretation = value;\n }\n channelInterpretation = value;\n },\n get context() {\n return scriptProcessorNode.context;\n },\n get inputs() {\n return gainNodes;\n },\n get numberOfInputs() {\n return options.numberOfInputs;\n },\n get numberOfOutputs() {\n return options.numberOfOutputs;\n },\n get onprocessorerror() {\n return onprocessorerror;\n },\n set onprocessorerror(value) {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.removeEventListener('processorerror', onprocessorerror);\n }\n onprocessorerror = typeof value === 'function' ? value : null;\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.addEventListener('processorerror', onprocessorerror);\n }\n },\n get parameters() {\n return parameterMap;\n },\n get port() {\n return messageChannel.port2;\n },\n addEventListener(...args) {\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n connect: connectMultipleOutputs.bind(null, outputAudioNodes),\n disconnect: disconnectMultipleOutputs.bind(null, outputAudioNodes),\n dispatchEvent(...args) {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n const patchedEventListeners = new Map();\n messageChannel.port1.addEventListener = ((addEventListener) => {\n return (...args) => {\n if (args[0] === 'message') {\n const unpatchedEventListener = typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n }\n else {\n args[1] = (event) => {\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => unpatchedEventListener(event));\n };\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n return addEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.addEventListener);\n messageChannel.port1.removeEventListener = ((removeEventListener) => {\n return (...args) => {\n if (args[0] === 'message') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n args[1] = patchedEventListener;\n }\n }\n return removeEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.removeEventListener);\n let onmessage = null;\n Object.defineProperty(messageChannel.port1, 'onmessage', {\n get: () => onmessage,\n set: (value) => {\n if (typeof onmessage === 'function') {\n messageChannel.port1.removeEventListener('message', onmessage);\n }\n onmessage = typeof value === 'function' ? value : null;\n if (typeof onmessage === 'function') {\n messageChannel.port1.addEventListener('message', onmessage);\n messageChannel.port1.start();\n }\n }\n });\n processorConstructor.prototype.port = messageChannel.port1;\n let audioWorkletProcessor = null;\n const audioWorkletProcessorPromise = createAudioWorkletProcessor(nativeContext, nativeAudioWorkletNodeFaker, processorConstructor, options);\n audioWorkletProcessorPromise.then((dWrkltPrcssr) => (audioWorkletProcessor = dWrkltPrcssr));\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters = processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.reduce((prmtrs, { name }) => ({ ...prmtrs, [name]: new Float32Array(128) }), {});\n let isActive = true;\n const disconnectOutputsGraph = () => {\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.disconnect(outputChannelSplitterNode);\n }\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.disconnect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n };\n const activeInputIndexes = new Map();\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer, outputBuffer }) => {\n if (audioWorkletProcessor !== null) {\n const activeInputs = getActiveAudioWorkletNodeInputs(nativeAudioWorkletNodeFaker);\n for (let i = 0; i < bufferSize; i += 128) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(inputBuffer, inputs[j], k, k, i);\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(inputBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n const activeInput = activeInputs[index];\n if (activeInput.size > 0) {\n activeInputIndexes.set(index, bufferSize / 128);\n return input;\n }\n const count = activeInputIndexes.get(index);\n if (count === undefined) {\n return [];\n }\n if (input.every((channelData) => channelData.every((sample) => sample === 0))) {\n if (count === 1) {\n activeInputIndexes.delete(index);\n }\n else {\n activeInputIndexes.set(index, count - 1);\n }\n }\n return input;\n });\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(nativeContext.currentTime + i / nativeContext.sampleRate, nativeContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters));\n isActive = activeSourceFlag;\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(outputBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n }\n catch (error) {\n isActive = false;\n nativeAudioWorkletNodeFaker.dispatchEvent(new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n }));\n }\n if (!isActive) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n gainNodes[j].disconnect(inputChannelSplitterNodes[j]);\n for (let k = 0; k < options.channelCount; k += 1) {\n inputChannelSplitterNodes[i].disconnect(inputChannelMergerNode, k, j * options.channelCount + k);\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined) {\n const length = processorConstructor.parameterDescriptors.length;\n for (let j = 0; j < length; j += 1) {\n const constantSourceNode = constantSourceNodes[j];\n constantSourceNode.disconnect(inputChannelMergerNode, 0, numberOfInputChannels + j);\n constantSourceNode.stop();\n }\n }\n inputChannelMergerNode.disconnect(scriptProcessorNode);\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n if (isConnected) {\n disconnectOutputsGraph();\n }\n else {\n disconnectFakeGraph();\n }\n break;\n }\n }\n }\n };\n let isConnected = false;\n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n const connectFakeGraph = () => scriptProcessorNode.connect(nativeGainNode).connect(nativeContext.destination);\n const disconnectFakeGraph = () => {\n scriptProcessorNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n const whenConnected = () => {\n if (isActive) {\n disconnectFakeGraph();\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.connect(outputChannelSplitterNode);\n }\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n }\n isConnected = true;\n };\n const whenDisconnected = () => {\n if (isActive) {\n connectFakeGraph();\n disconnectOutputsGraph();\n }\n isConnected = false;\n };\n connectFakeGraph();\n return monitorConnections(nativeAudioWorkletNodeFaker, whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-audio-worklet-node-faker-factory.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeChannelMergerNodeFactory = (nativeAudioContextConstructor, wrapChannelMergerNode) => {\n return (nativeContext, options) => {\n const nativeChannelMergerNode = nativeContext.createChannelMerger(options.numberOfInputs);\n /*\n * Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n wrapChannelMergerNode(nativeContext, nativeChannelMergerNode);\n }\n assignNativeAudioNodeOptions(nativeChannelMergerNode, options);\n return nativeChannelMergerNode;\n };\n};\n//# sourceMappingURL=native-channel-merger-node-factory.js.map","import { createInvalidStateError } from '../factories/invalid-state-error';\nexport const wrapChannelSplitterNode = (channelSplitterNode) => {\n const channelCount = channelSplitterNode.numberOfOutputs;\n // Bug #97: Safari does not throw an error when attempting to change the channelCount to something other than its initial value.\n Object.defineProperty(channelSplitterNode, 'channelCount', {\n get: () => channelCount,\n set: (value) => {\n if (value !== channelCount) {\n throw createInvalidStateError();\n }\n }\n });\n // Bug #30: Safari does not throw an error when attempting to change the channelCountMode to something other than explicit.\n Object.defineProperty(channelSplitterNode, 'channelCountMode', {\n get: () => 'explicit',\n set: (value) => {\n if (value !== 'explicit') {\n throw createInvalidStateError();\n }\n }\n });\n // Bug #32: Safari does not throw an error when attempting to change the channelInterpretation to something other than discrete.\n Object.defineProperty(channelSplitterNode, 'channelInterpretation', {\n get: () => 'discrete',\n set: (value) => {\n if (value !== 'discrete') {\n throw createInvalidStateError();\n }\n }\n });\n};\n//# sourceMappingURL=wrap-channel-splitter-node.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapChannelSplitterNode } from '../helpers/wrap-channel-splitter-node';\nexport const createNativeChannelSplitterNode = (nativeContext, options) => {\n const nativeChannelSplitterNode = nativeContext.createChannelSplitter(options.numberOfOutputs);\n // Bug #96: Safari does not have the correct channelCount.\n // Bug #29: Safari does not have the correct channelCountMode.\n // Bug #31: Safari does not have the correct channelInterpretation.\n assignNativeAudioNodeOptions(nativeChannelSplitterNode, options);\n // Bug #29, #30, #31, #32, #96 & #97: Only Chrome, Edge & Firefox partially support the spec yet.\n wrapChannelSplitterNode(nativeChannelSplitterNode);\n return nativeChannelSplitterNode;\n};\n//# sourceMappingURL=native-channel-splitter-node.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nexport const createNativeConstantSourceNodeFactory = (addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport) => {\n return (nativeContext, options) => {\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeContext.createConstantSource === undefined) {\n return createNativeConstantSourceNodeFaker(nativeContext, options);\n }\n const nativeConstantSourceNode = nativeContext.createConstantSource();\n assignNativeAudioNodeOptions(nativeConstantSourceNode, options);\n assignNativeAudioNodeAudioParamValue(nativeConstantSourceNode, options, 'offset');\n // Bug #44: Safari does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeConstantSourceNode);\n }\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeConstantSourceNode);\n }\n // Bug #175: Safari will not fire an ended event if the ConstantSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeConstantSourceNode);\n return nativeConstantSourceNode;\n };\n};\n//# sourceMappingURL=native-constant-source-node-factory.js.map","export const interceptConnections = (original, interceptor) => {\n original.connect = interceptor.connect.bind(interceptor);\n original.disconnect = interceptor.disconnect.bind(interceptor);\n return original;\n};\n//# sourceMappingURL=intercept-connections.js.map","import { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativeConstantSourceNodeFakerFactory = (addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections) => {\n return (nativeContext, { offset, ...audioNodeOptions }) => {\n const audioBuffer = nativeContext.createBuffer(1, 2, 44100);\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const gainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: offset });\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n const channelData = audioBuffer.getChannelData(0);\n // Bug #95: Safari does not play or loop one sample buffers.\n channelData[0] = 1;\n channelData[1] = 1;\n audioBufferSourceNode.buffer = audioBuffer;\n audioBufferSourceNode.loop = true;\n const nativeConstantSourceNodeFaker = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return gainNode.channelCount;\n },\n set channelCount(value) {\n gainNode.channelCount = value;\n },\n get channelCountMode() {\n return gainNode.channelCountMode;\n },\n set channelCountMode(value) {\n gainNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return gainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n gainNode.channelInterpretation = value;\n },\n get context() {\n return gainNode.context;\n },\n get inputs() {\n return [];\n },\n get numberOfInputs() {\n return audioBufferSourceNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return gainNode.numberOfOutputs;\n },\n get offset() {\n return gainNode.gain;\n },\n get onended() {\n return audioBufferSourceNode.onended;\n },\n set onended(value) {\n audioBufferSourceNode.onended = value;\n },\n addEventListener(...args) {\n return audioBufferSourceNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return audioBufferSourceNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return audioBufferSourceNode.removeEventListener(args[0], args[1], args[2]);\n },\n start(when = 0) {\n audioBufferSourceNode.start.call(audioBufferSourceNode, when);\n },\n stop(when = 0) {\n audioBufferSourceNode.stop.call(audioBufferSourceNode, when);\n }\n };\n const whenConnected = () => audioBufferSourceNode.connect(gainNode);\n const whenDisconnected = () => audioBufferSourceNode.disconnect(gainNode);\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, audioBufferSourceNode);\n return monitorConnections(interceptConnections(nativeConstantSourceNodeFaker, gainNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-constant-source-node-faker-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeGainNode = (nativeContext, options) => {\n const nativeGainNode = nativeContext.createGain();\n assignNativeAudioNodeOptions(nativeGainNode, options);\n assignNativeAudioNodeAudioParamValue(nativeGainNode, options, 'gain');\n return nativeGainNode;\n};\n//# sourceMappingURL=native-gain-node.js.map","export const createNativeMediaStreamAudioSourceNode = (nativeAudioContext, { mediaStream }) => {\n const audioStreamTracks = mediaStream.getAudioTracks();\n /*\n * Bug #151: Safari does not use the audio track as input anymore if it gets removed from the mediaStream after construction.\n * Bug #159: Safari picks the first audio track if the MediaStream has more than one audio track.\n */\n audioStreamTracks.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n const filteredAudioStreamTracks = audioStreamTracks.slice(0, 1);\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(new MediaStream(filteredAudioStreamTracks));\n /*\n * Bug #151 & #159: The given mediaStream gets reconstructed before it gets passed to the native node which is why the accessor needs\n * to be overwritten as it would otherwise expose the reconstructed version.\n */\n Object.defineProperty(nativeMediaStreamAudioSourceNode, 'mediaStream', { value: mediaStream });\n return nativeMediaStreamAudioSourceNode;\n};\n//# sourceMappingURL=native-media-stream-audio-source-node.js.map","export const createNativeOfflineAudioContextConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('OfflineAudioContext')) {\n return window.OfflineAudioContext;\n }\n return window.hasOwnProperty('webkitOfflineAudioContext') ? window.webkitOfflineAudioContext : null;\n};\n//# sourceMappingURL=native-offline-audio-context-constructor.js.map","export const createNativeScriptProcessorNode = (nativeContext, bufferSize, numberOfInputChannels, numberOfOutputChannels) => {\n return nativeContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels); // tslint:disable-line deprecation\n};\n//# sourceMappingURL=native-script-processor-node.js.map","export const createNotSupportedError = () => new DOMException('', 'NotSupportedError');\n//# sourceMappingURL=not-supported-error.js.map","export const createRenderAutomation = (getAudioParamRenderer, renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => {\n const audioParamRenderer = getAudioParamRenderer(audioParam);\n audioParamRenderer.replay(nativeAudioParam);\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam);\n };\n};\n//# sourceMappingURL=render-automation.js.map","export const createRenderInputsOfAudioNode = (getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle) => {\n return async (audioNode, nativeOfflineAudioContext, nativeAudioNode) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n await Promise.all(audioNodeConnections.activeInputs\n .map((connections, input) => Array.from(connections).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext);\n const destination = audioNode.context.destination;\n if (!isPartOfACycle(source) && (audioNode !== destination || !isPartOfACycle(audioNode))) {\n renderedNativeAudioNode.connect(nativeAudioNode, output, input);\n }\n }))\n .reduce((allRenderingPromises, renderingPromises) => [...allRenderingPromises, ...renderingPromises], []));\n };\n};\n//# sourceMappingURL=render-inputs-of-audio-node.js.map","export const createRenderInputsOfAudioParam = (getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle) => {\n return async (audioParam, nativeOfflineAudioContext, nativeAudioParam) => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n await Promise.all(Array.from(audioParamConnections.activeInputs).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext);\n if (!isPartOfACycle(source)) {\n renderedNativeAudioNode.connect(nativeAudioParam, output);\n }\n }));\n };\n};\n//# sourceMappingURL=render-inputs-of-audio-param.js.map","import { testPromiseSupport } from '../helpers/test-promise-support';\nexport const createRenderNativeOfflineAudioContext = (cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, testOfflineAudioContextCurrentTimeSupport) => {\n return (nativeOfflineAudioContext) => {\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n // Bug #158: Chrome and Edge do not advance currentTime if it is not accessed while rendering the audio.\n return Promise.resolve(cacheTestResult(testOfflineAudioContextCurrentTimeSupport, testOfflineAudioContextCurrentTimeSupport)).then((isOfflineAudioContextCurrentTimeSupported) => {\n if (!isOfflineAudioContextCurrentTimeSupported) {\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeOfflineAudioContext, 512, 0, 1);\n nativeOfflineAudioContext.oncomplete = () => {\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n scriptProcessorNode.disconnect();\n };\n scriptProcessorNode.onaudioprocess = () => nativeOfflineAudioContext.currentTime; // tslint:disable-line:deprecation\n scriptProcessorNode.connect(nativeOfflineAudioContext.destination);\n }\n return nativeOfflineAudioContext.startRendering();\n });\n }\n return new Promise((resolve) => {\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeOfflineAudioContext.oncomplete = (event) => {\n gainNode.disconnect();\n resolve(event.renderedBuffer);\n };\n gainNode.connect(nativeOfflineAudioContext.destination);\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n//# sourceMappingURL=render-native-offline-audio-context.js.map","export const createSetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore) => {\n return (nativeAudioWorkletNode, activeInputs) => {\n activeAudioWorkletNodeInputsStore.set(nativeAudioWorkletNode, activeInputs);\n };\n};\n//# sourceMappingURL=set-active-audio-worklet-node-inputs.js.map","// Bug #33: Safari exposes an AudioBuffer but it can't be used as a constructor.\nexport const createTestAudioBufferConstructorSupport = (nativeAudioBufferConstructor) => {\n return () => {\n if (nativeAudioBufferConstructor === null) {\n return false;\n }\n try {\n new nativeAudioBufferConstructor({ length: 1, sampleRate: 44100 }); // tslint:disable-line:no-unused-expression\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-audio-buffer-constructor-support.js.map","// Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\nexport const createTestAudioWorkletProcessorPostMessageSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => {\n return async () => {\n // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist.\n if (nativeAudioWorkletNodeConstructor === null) {\n return true;\n }\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const blob = new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor(\"a\",A)'], {\n type: 'application/javascript; charset=utf-8'\n });\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100);\n const url = URL.createObjectURL(blob);\n let isEmittingMessageEvents = false;\n let isEmittingProcessorErrorEvents = false;\n try {\n await offlineAudioContext.audioWorklet.addModule(url);\n const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 });\n const oscillator = offlineAudioContext.createOscillator();\n audioWorkletNode.port.onmessage = () => (isEmittingMessageEvents = true);\n audioWorkletNode.onprocessorerror = () => (isEmittingProcessorErrorEvents = true);\n oscillator.connect(audioWorkletNode);\n oscillator.start(0);\n await offlineAudioContext.startRendering();\n // Bug #197: Safari does not deliver the messages before the promise returned by startRendering() resolves.\n await new Promise((resolve) => setTimeout(resolve));\n }\n catch {\n // Ignore errors.\n }\n finally {\n URL.revokeObjectURL(url);\n }\n return isEmittingMessageEvents && !isEmittingProcessorErrorEvents;\n };\n};\n//# sourceMappingURL=test-audio-worklet-processor-post-message-support.js.map","export const createTestOfflineAudioContextCurrentTimeSupport = (createNativeGainNode, nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n nativeOfflineAudioContext.oncomplete = () => {\n gainNode.disconnect();\n resolve(nativeOfflineAudioContext.currentTime !== 0);\n };\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n//# sourceMappingURL=test-offline-audio-context-current-time-support.js.map","export const createUnknownError = () => new DOMException('', 'UnknownError');\n//# sourceMappingURL=unknown-error.js.map","export const createWindow = () => (typeof window === 'undefined' ? null : window);\n//# sourceMappingURL=window.js.map","export const createWrapAudioBufferCopyChannelMethods = (convertNumberToUnsignedLong, createIndexSizeError) => {\n return (audioBuffer) => {\n audioBuffer.copyFromChannel = (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const destinationLength = destination.length;\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < destinationLength; i += 1) {\n destination[i] = channelData[i + bufferOffset];\n }\n };\n audioBuffer.copyToChannel = (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const sourceLength = source.length;\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < sourceLength; i += 1) {\n channelData[i + bufferOffset] = source[i];\n }\n };\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-copy-channel-methods.js.map","export const createWrapAudioBufferCopyChannelMethodsOutOfBounds = (convertNumberToUnsignedLong) => {\n return (audioBuffer) => {\n audioBuffer.copyFromChannel = ((copyFromChannel) => {\n return (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (bufferOffset < audioBuffer.length) {\n return copyFromChannel.call(audioBuffer, destination, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyFromChannel);\n audioBuffer.copyToChannel = ((copyToChannel) => {\n return (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (bufferOffset < audioBuffer.length) {\n return copyToChannel.call(audioBuffer, source, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyToChannel);\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-copy-channel-methods-out-of-bounds.js.map","export const createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer = (overwriteAccessors) => {\n return (nativeAudioBufferSourceNode, nativeContext) => {\n const nullifiedBuffer = nativeContext.createBuffer(1, 1, 44100);\n if (nativeAudioBufferSourceNode.buffer === null) {\n nativeAudioBufferSourceNode.buffer = nullifiedBuffer;\n }\n overwriteAccessors(nativeAudioBufferSourceNode, 'buffer', (get) => () => {\n const value = get.call(nativeAudioBufferSourceNode);\n return value === nullifiedBuffer ? null : value;\n }, (set) => (value) => {\n return set.call(nativeAudioBufferSourceNode, value === null ? nullifiedBuffer : value);\n });\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-stop-method-nullified-buffer.js.map","export const createWrapChannelMergerNode = (createInvalidStateError, monitorConnections) => {\n return (nativeContext, channelMergerNode) => {\n // Bug #15: Safari does not return the default properties.\n channelMergerNode.channelCount = 1;\n channelMergerNode.channelCountMode = 'explicit';\n // Bug #16: Safari does not throw an error when setting a different channelCount or channelCountMode.\n Object.defineProperty(channelMergerNode, 'channelCount', {\n get: () => 1,\n set: () => {\n throw createInvalidStateError();\n }\n });\n Object.defineProperty(channelMergerNode, 'channelCountMode', {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n });\n // Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n const audioBufferSourceNode = nativeContext.createBufferSource();\n const whenConnected = () => {\n const length = channelMergerNode.numberOfInputs;\n for (let i = 0; i < length; i += 1) {\n audioBufferSourceNode.connect(channelMergerNode, 0, i);\n }\n };\n const whenDisconnected = () => audioBufferSourceNode.disconnect(channelMergerNode);\n monitorConnections(channelMergerNode, whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=wrap-channel-merger-node.js.map","export const getFirstSample = (audioBuffer, buffer, channelNumber) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n if (audioBuffer.copyFromChannel === undefined) {\n return audioBuffer.getChannelData(channelNumber)[0];\n }\n audioBuffer.copyFromChannel(buffer, channelNumber);\n return buffer[0];\n};\n//# sourceMappingURL=get-first-sample.js.map","export const overwriteAccessors = (object, property, createGetter, createSetter) => {\n let prototype = object;\n while (!prototype.hasOwnProperty(property)) {\n prototype = Object.getPrototypeOf(prototype);\n }\n const { get, set } = Object.getOwnPropertyDescriptor(prototype, property);\n Object.defineProperty(object, property, { get: createGetter(get), set: createSetter(set) });\n};\n//# sourceMappingURL=overwrite-accessors.js.map","export const sanitizeAudioWorkletNodeOptions = (options) => {\n return {\n ...options,\n outputChannelCount: options.outputChannelCount !== undefined\n ? options.outputChannelCount\n : options.numberOfInputs === 1 && options.numberOfOutputs === 1\n ? /*\n * Bug #61: This should be the computedNumberOfChannels, but unfortunately that is almost impossible to fake. That's why\n * the channelCountMode is required to be 'explicit' as long as there is not a native implementation in every browser. That\n * makes sure the computedNumberOfChannels is equivilant to the channelCount which makes it much easier to compute.\n */\n [options.channelCount]\n : Array.from({ length: options.numberOfOutputs }, () => 1)\n };\n};\n//# sourceMappingURL=sanitize-audio-worklet-node-options.js.map","export const setValueAtTimeUntilPossible = (audioParam, value, startTime) => {\n try {\n audioParam.setValueAtTime(value, startTime);\n }\n catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n setValueAtTimeUntilPossible(audioParam, value, startTime + 1e-7);\n }\n};\n//# sourceMappingURL=set-value-at-time-until-possible.js.map","export const testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.start();\n try {\n nativeAudioBufferSourceNode.start();\n }\n catch {\n return true;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-start-method-consecutive-calls-support.js.map","export const testAudioBufferSourceNodeStartMethodOffsetClampingSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n try {\n nativeAudioBufferSourceNode.start(0, 1);\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-start-method-offset-clamping-support.js.map","export const testAudioBufferSourceNodeStopMethodNullifiedBufferSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.start();\n try {\n nativeAudioBufferSourceNode.stop();\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-stop-method-nullified-buffer-support.js.map","export const testAudioScheduledSourceNodeStartMethodNegativeParametersSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n try {\n nativeAudioBufferSourceNode.start(-1);\n }\n catch (err) {\n return err instanceof RangeError;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-start-method-negative-parameters-support.js.map","export const testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport = (nativeContext) => {\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.start();\n nativeAudioBufferSourceNode.stop();\n try {\n nativeAudioBufferSourceNode.stop();\n return true;\n }\n catch {\n return false;\n }\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-stop-method-consecutive-calls-support.js.map","export const testAudioScheduledSourceNodeStopMethodNegativeParametersSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n try {\n nativeAudioBufferSourceNode.stop(-1);\n }\n catch (err) {\n return err instanceof RangeError;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-stop-method-negative-parameters-support.js.map","export const testAudioWorkletNodeOptionsClonability = (audioWorkletNodeOptions) => {\n const { port1, port2 } = new MessageChannel();\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n }\n finally {\n port1.close();\n port2.close();\n }\n};\n//# sourceMappingURL=test-audio-worklet-node-options-clonability.js.map","export const wrapAudioBufferSourceNodeStartMethodOffsetClamping = (nativeAudioBufferSourceNode) => {\n nativeAudioBufferSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration) => {\n const buffer = nativeAudioBufferSourceNode.buffer;\n // Bug #154: Safari does not clamp the offset if it is equal to or greater than the duration of the buffer.\n const clampedOffset = buffer === null ? offset : Math.min(buffer.duration, offset);\n // Bug #155: Safari does not handle the offset correctly if it would cause the buffer to be not be played at all.\n if (buffer !== null && clampedOffset > buffer.duration - 0.5 / nativeAudioBufferSourceNode.context.sampleRate) {\n start.call(nativeAudioBufferSourceNode, when, 0, 0);\n }\n else {\n start.call(nativeAudioBufferSourceNode, when, clampedOffset, duration);\n }\n };\n })(nativeAudioBufferSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-start-method-offset-clamping.js.map","import { interceptConnections } from './intercept-connections';\nexport const wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls = (nativeAudioScheduledSourceNode, nativeContext) => {\n const nativeGainNode = nativeContext.createGain();\n nativeAudioScheduledSourceNode.connect(nativeGainNode);\n const disconnectGainNode = ((disconnect) => {\n return () => {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n disconnect.call(nativeAudioScheduledSourceNode, nativeGainNode);\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnectGainNode);\n };\n })(nativeAudioScheduledSourceNode.disconnect);\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnectGainNode);\n interceptConnections(nativeAudioScheduledSourceNode, nativeGainNode);\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n let isStopped = false;\n return (when = 0) => {\n if (isStopped) {\n try {\n stop.call(nativeAudioScheduledSourceNode, when);\n }\n catch {\n nativeGainNode.gain.setValueAtTime(0, when);\n }\n }\n else {\n stop.call(nativeAudioScheduledSourceNode, when);\n isStopped = true;\n }\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-stop-method-consecutive-calls.js.map","export const wrapEventListener = (target, eventListener) => {\n return (event) => {\n const descriptor = { value: target };\n Object.defineProperties(event, {\n currentTarget: descriptor,\n target: descriptor\n });\n if (typeof eventListener === 'function') {\n return eventListener.call(target, event);\n }\n return eventListener.handleEvent.call(target, event);\n };\n};\n//# sourceMappingURL=wrap-event-listener.js.map","import { createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent } from 'automation-events';\nimport { createAbortError } from './factories/abort-error';\nimport { createAddActiveInputConnectionToAudioNode } from './factories/add-active-input-connection-to-audio-node';\nimport { createAddAudioNodeConnections } from './factories/add-audio-node-connections';\nimport { createAddAudioParamConnections } from './factories/add-audio-param-connections';\nimport { createAddAudioWorkletModule } from './factories/add-audio-worklet-module';\nimport { createAddConnectionToAudioNode } from './factories/add-connection-to-audio-node';\nimport { createAddPassiveInputConnectionToAudioNode } from './factories/add-passive-input-connection-to-audio-node';\nimport { createAddSilentConnection } from './factories/add-silent-connection';\nimport { createAddUnrenderedAudioWorkletNode } from './factories/add-unrendered-audio-worklet-node';\nimport { createAnalyserNodeConstructor } from './factories/analyser-node-constructor';\nimport { createAnalyserNodeRendererFactory } from './factories/analyser-node-renderer-factory';\nimport { createAudioBufferConstructor } from './factories/audio-buffer-constructor';\nimport { createAudioBufferSourceNodeConstructor } from './factories/audio-buffer-source-node-constructor';\nimport { createAudioBufferSourceNodeRendererFactory } from './factories/audio-buffer-source-node-renderer-factory';\nimport { createAudioContextConstructor } from './factories/audio-context-constructor';\nimport { createAudioDestinationNodeConstructor } from './factories/audio-destination-node-constructor';\nimport { createAudioDestinationNodeRenderer } from './factories/audio-destination-node-renderer-factory';\nimport { createAudioListenerFactory } from './factories/audio-listener-factory';\nimport { createAudioNodeConstructor } from './factories/audio-node-constructor';\nimport { createAudioParamFactory } from './factories/audio-param-factory';\nimport { createAudioParamRenderer } from './factories/audio-param-renderer';\nimport { createAudioWorkletNodeConstructor } from './factories/audio-worklet-node-constructor';\nimport { createAudioWorkletNodeRendererFactory } from './factories/audio-worklet-node-renderer-factory';\nimport { createBaseAudioContextConstructor } from './factories/base-audio-context-constructor';\nimport { createBiquadFilterNodeConstructor } from './factories/biquad-filter-node-constructor';\nimport { createBiquadFilterNodeRendererFactory } from './factories/biquad-filter-node-renderer-factory';\nimport { createCacheTestResult } from './factories/cache-test-result';\nimport { createChannelMergerNodeConstructor } from './factories/channel-merger-node-constructor';\nimport { createChannelMergerNodeRendererFactory } from './factories/channel-merger-node-renderer-factory';\nimport { createChannelSplitterNodeConstructor } from './factories/channel-splitter-node-constructor';\nimport { createChannelSplitterNodeRendererFactory } from './factories/channel-splitter-node-renderer-factory';\nimport { createConnectAudioParam } from './factories/connect-audio-param';\nimport { createConnectMultipleOutputs } from './factories/connect-multiple-outputs';\nimport { createConnectedNativeAudioBufferSourceNodeFactory } from './factories/connected-native-audio-buffer-source-node-factory';\nimport { createConstantSourceNodeConstructor } from './factories/constant-source-node-constructor';\nimport { createConstantSourceNodeRendererFactory } from './factories/constant-source-node-renderer-factory';\nimport { createConvertNumberToUnsignedLong } from './factories/convert-number-to-unsigned-long';\nimport { createConvolverNodeConstructor } from './factories/convolver-node-constructor';\nimport { createConvolverNodeRendererFactory } from './factories/convolver-node-renderer-factory';\nimport { createCreateNativeOfflineAudioContext } from './factories/create-native-offline-audio-context';\nimport { createDataCloneError } from './factories/data-clone-error';\nimport { createDecodeAudioData } from './factories/decode-audio-data';\nimport { createDecrementCycleCounter } from './factories/decrement-cycle-counter';\nimport { createDelayNodeConstructor } from './factories/delay-node-constructor';\nimport { createDelayNodeRendererFactory } from './factories/delay-node-renderer-factory';\nimport { createDeleteActiveInputConnectionToAudioNode } from './factories/delete-active-input-connection-to-audio-node';\nimport { createDeleteUnrenderedAudioWorkletNode } from './factories/delete-unrendered-audio-worklet-node';\nimport { createDetectCycles } from './factories/detect-cycles';\nimport { createDisconnectMultipleOutputs } from './factories/disconnect-multiple-outputs';\nimport { createDynamicsCompressorNodeConstructor } from './factories/dynamics-compressor-node-constructor';\nimport { createDynamicsCompressorNodeRendererFactory } from './factories/dynamics-compressor-node-renderer-factory';\nimport { createEncodingError } from './factories/encoding-error';\nimport { createEvaluateSource } from './factories/evaluate-source';\nimport { createEventTargetConstructor } from './factories/event-target-constructor';\nimport { createExposeCurrentFrameAndCurrentTime } from './factories/expose-current-frame-and-current-time';\nimport { createFetchSource } from './factories/fetch-source';\nimport { createGainNodeConstructor } from './factories/gain-node-constructor';\nimport { createGainNodeRendererFactory } from './factories/gain-node-renderer-factory';\nimport { createGetActiveAudioWorkletNodeInputs } from './factories/get-active-audio-worklet-node-inputs';\nimport { createGetAudioNodeRenderer } from './factories/get-audio-node-renderer';\nimport { createGetAudioNodeTailTime } from './factories/get-audio-node-tail-time';\nimport { createGetAudioParamRenderer } from './factories/get-audio-param-renderer';\nimport { createGetBackupOfflineAudioContext } from './factories/get-backup-offline-audio-context';\nimport { createGetNativeContext } from './factories/get-native-context';\nimport { createGetOrCreateBackupOfflineAudioContext } from './factories/get-or-create-backup-offline-audio-context';\nimport { createGetUnrenderedAudioWorkletNodes } from './factories/get-unrendered-audio-worklet-nodes';\nimport { createIIRFilterNodeConstructor } from './factories/iir-filter-node-constructor';\nimport { createIIRFilterNodeRendererFactory } from './factories/iir-filter-node-renderer-factory';\nimport { createIncrementCycleCounterFactory } from './factories/increment-cycle-counter-factory';\nimport { createIndexSizeError } from './factories/index-size-error';\nimport { createInvalidAccessError } from './factories/invalid-access-error';\nimport { createInvalidStateError } from './factories/invalid-state-error';\nimport { createIsAnyAudioContext } from './factories/is-any-audio-context';\nimport { createIsAnyAudioNode } from './factories/is-any-audio-node';\nimport { createIsAnyAudioParam } from './factories/is-any-audio-param';\nimport { createIsAnyOfflineAudioContext } from './factories/is-any-offline-audio-context';\nimport { createIsNativeAudioContext } from './factories/is-native-audio-context';\nimport { createIsNativeAudioNode } from './factories/is-native-audio-node';\nimport { createIsNativeAudioParam } from './factories/is-native-audio-param';\nimport { createIsNativeContext } from './factories/is-native-context';\nimport { createIsNativeOfflineAudioContext } from './factories/is-native-offline-audio-context';\nimport { createIsSecureContext } from './factories/is-secure-context';\nimport { createIsSupportedPromise } from './factories/is-supported-promise';\nimport { createMediaElementAudioSourceNodeConstructor } from './factories/media-element-audio-source-node-constructor';\nimport { createMediaStreamAudioDestinationNodeConstructor } from './factories/media-stream-audio-destination-node-constructor';\nimport { createMediaStreamAudioSourceNodeConstructor } from './factories/media-stream-audio-source-node-constructor';\nimport { createMediaStreamTrackAudioSourceNodeConstructor } from './factories/media-stream-track-audio-source-node-constructor';\nimport { createMinimalAudioContextConstructor } from './factories/minimal-audio-context-constructor';\nimport { createMinimalBaseAudioContextConstructor } from './factories/minimal-base-audio-context-constructor';\nimport { createMinimalOfflineAudioContextConstructor } from './factories/minimal-offline-audio-context-constructor';\nimport { createMonitorConnections } from './factories/monitor-connections';\nimport { createNativeAnalyserNodeFactory } from './factories/native-analyser-node-factory';\nimport { createNativeAudioBufferConstructor } from './factories/native-audio-buffer-constructor';\nimport { createNativeAudioBufferSourceNodeFactory } from './factories/native-audio-buffer-source-node-factory';\nimport { createNativeAudioContextConstructor } from './factories/native-audio-context-constructor';\nimport { createNativeAudioDestinationNodeFactory } from './factories/native-audio-destination-node';\nimport { createNativeAudioWorkletNodeConstructor } from './factories/native-audio-worklet-node-constructor';\nimport { createNativeAudioWorkletNodeFactory } from './factories/native-audio-worklet-node-factory';\nimport { createNativeAudioWorkletNodeFakerFactory } from './factories/native-audio-worklet-node-faker-factory';\nimport { createNativeBiquadFilterNode } from './factories/native-biquad-filter-node';\nimport { createNativeChannelMergerNodeFactory } from './factories/native-channel-merger-node-factory';\nimport { createNativeChannelSplitterNode } from './factories/native-channel-splitter-node';\nimport { createNativeConstantSourceNodeFactory } from './factories/native-constant-source-node-factory';\nimport { createNativeConstantSourceNodeFakerFactory } from './factories/native-constant-source-node-faker-factory';\nimport { createNativeConvolverNodeFactory } from './factories/native-convolver-node-factory';\nimport { createNativeDelayNode } from './factories/native-delay-node';\nimport { createNativeDynamicsCompressorNodeFactory } from './factories/native-dynamics-compressor-node-factory';\nimport { createNativeGainNode } from './factories/native-gain-node';\nimport { createNativeIIRFilterNodeFactory } from './factories/native-iir-filter-node-factory';\nimport { createNativeIIRFilterNodeFakerFactory } from './factories/native-iir-filter-node-faker-factory';\nimport { createNativeMediaElementAudioSourceNode } from './factories/native-media-element-audio-source-node';\nimport { createNativeMediaStreamAudioDestinationNode } from './factories/native-media-stream-audio-destination-node';\nimport { createNativeMediaStreamAudioSourceNode } from './factories/native-media-stream-audio-source-node';\nimport { createNativeMediaStreamTrackAudioSourceNodeFactory } from './factories/native-media-stream-track-audio-source-node-factory';\nimport { createNativeOfflineAudioContextConstructor } from './factories/native-offline-audio-context-constructor';\nimport { createNativeOscillatorNodeFactory } from './factories/native-oscillator-node-factory';\nimport { createNativePannerNodeFactory } from './factories/native-panner-node-factory';\nimport { createNativePannerNodeFakerFactory } from './factories/native-panner-node-faker-factory';\nimport { createNativePeriodicWaveFactory } from './factories/native-periodic-wave-factory';\nimport { createNativeScriptProcessorNode } from './factories/native-script-processor-node';\nimport { createNativeStereoPannerNodeFactory } from './factories/native-stereo-panner-node-factory';\nimport { createNativeStereoPannerNodeFakerFactory } from './factories/native-stereo-panner-node-faker-factory';\nimport { createNativeWaveShaperNodeFactory } from './factories/native-wave-shaper-node-factory';\nimport { createNativeWaveShaperNodeFakerFactory } from './factories/native-wave-shaper-node-faker-factory';\nimport { createNotSupportedError } from './factories/not-supported-error';\nimport { createOfflineAudioContextConstructor } from './factories/offline-audio-context-constructor';\nimport { createOscillatorNodeConstructor } from './factories/oscillator-node-constructor';\nimport { createOscillatorNodeRendererFactory } from './factories/oscillator-node-renderer-factory';\nimport { createPannerNodeConstructor } from './factories/panner-node-constructor';\nimport { createPannerNodeRendererFactory } from './factories/panner-node-renderer-factory';\nimport { createPeriodicWaveConstructor } from './factories/periodic-wave-constructor';\nimport { createRenderAutomation } from './factories/render-automation';\nimport { createRenderInputsOfAudioNode } from './factories/render-inputs-of-audio-node';\nimport { createRenderInputsOfAudioParam } from './factories/render-inputs-of-audio-param';\nimport { createRenderNativeOfflineAudioContext } from './factories/render-native-offline-audio-context';\nimport { createSetActiveAudioWorkletNodeInputs } from './factories/set-active-audio-worklet-node-inputs';\nimport { createSetAudioNodeTailTime } from './factories/set-audio-node-tail-time';\nimport { createStartRendering } from './factories/start-rendering';\nimport { createStereoPannerNodeConstructor } from './factories/stereo-panner-node-constructor';\nimport { createStereoPannerNodeRendererFactory } from './factories/stereo-panner-node-renderer-factory';\nimport { createTestAudioBufferConstructorSupport } from './factories/test-audio-buffer-constructor-support';\nimport { createTestAudioBufferCopyChannelMethodsSubarraySupport } from './factories/test-audio-buffer-copy-channel-methods-subarray-support';\nimport { createTestAudioContextCloseMethodSupport } from './factories/test-audio-context-close-method-support';\nimport { createTestAudioContextDecodeAudioDataMethodTypeErrorSupport } from './factories/test-audio-context-decode-audio-data-method-type-error-support';\nimport { createTestAudioContextOptionsSupport } from './factories/test-audio-context-options-support';\nimport { createTestAudioNodeConnectMethodSupport } from './factories/test-audio-node-connect-method-support';\nimport { createTestAudioWorkletProcessorNoOutputsSupport } from './factories/test-audio-worklet-processor-no-outputs-support';\nimport { createTestAudioWorkletProcessorPostMessageSupport } from './factories/test-audio-worklet-processor-post-message-support';\nimport { createTestChannelMergerNodeChannelCountSupport } from './factories/test-channel-merger-node-channel-count-support';\nimport { createTestConstantSourceNodeAccurateSchedulingSupport } from './factories/test-constant-source-node-accurate-scheduling-support';\nimport { createTestConvolverNodeBufferReassignabilitySupport } from './factories/test-convolver-node-buffer-reassignability-support';\nimport { createTestConvolverNodeChannelCountSupport } from './factories/test-convolver-node-channel-count-support';\nimport { createTestIsSecureContextSupport } from './factories/test-is-secure-context-support';\nimport { createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport } from './factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support';\nimport { createTestOfflineAudioContextCurrentTimeSupport } from './factories/test-offline-audio-context-current-time-support';\nimport { createTestStereoPannerNodeDefaultValueSupport } from './factories/test-stereo-panner-node-default-value-support';\nimport { createUnknownError } from './factories/unknown-error';\nimport { createWaveShaperNodeConstructor } from './factories/wave-shaper-node-constructor';\nimport { createWaveShaperNodeRendererFactory } from './factories/wave-shaper-node-renderer-factory';\nimport { createWindow } from './factories/window';\nimport { createWrapAudioBufferCopyChannelMethods } from './factories/wrap-audio-buffer-copy-channel-methods';\nimport { createWrapAudioBufferCopyChannelMethodsOutOfBounds } from './factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds';\nimport { createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer } from './factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer';\nimport { createWrapChannelMergerNode } from './factories/wrap-channel-merger-node';\nimport { AUDIO_NODE_CONNECTIONS_STORE, AUDIO_NODE_STORE, AUDIO_PARAM_CONNECTIONS_STORE, AUDIO_PARAM_STORE, CONTEXT_STORE, CYCLE_COUNTERS } from './globals';\nimport { connectNativeAudioNodeToNativeAudioNode } from './helpers/connect-native-audio-node-to-native-audio-node';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from './helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from './helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from './helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from './helpers/get-event-listeners-of-audio-node';\nimport { getFirstSample } from './helpers/get-first-sample';\nimport { getNativeAudioNode } from './helpers/get-native-audio-node';\nimport { getNativeAudioParam } from './helpers/get-native-audio-param';\nimport { getValueForKey } from './helpers/get-value-for-key';\nimport { insertElementInSet } from './helpers/insert-element-in-set';\nimport { isActiveAudioNode } from './helpers/is-active-audio-node';\nimport { isDCCurve } from './helpers/is-dc-curve';\nimport { isPartOfACycle } from './helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from './helpers/is-passive-audio-node';\nimport { overwriteAccessors } from './helpers/overwrite-accessors';\nimport { pickElementFromSet } from './helpers/pick-element-from-set';\nimport { sanitizeAudioWorkletNodeOptions } from './helpers/sanitize-audio-worklet-node-options';\nimport { sanitizeChannelSplitterOptions } from './helpers/sanitize-channel-splitter-options';\nimport { sanitizePeriodicWaveOptions } from './helpers/sanitize-periodic-wave-options';\nimport { setValueAtTimeUntilPossible } from './helpers/set-value-at-time-until-possible';\nimport { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from './helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport } from './helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support';\nimport { testAudioBufferSourceNodeStartMethodOffsetClampingSupport } from './helpers/test-audio-buffer-source-node-start-method-offset-clamping-support';\nimport { testAudioBufferSourceNodeStopMethodNullifiedBufferSupport } from './helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support';\nimport { testAudioScheduledSourceNodeStartMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support';\nimport { testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport } from './helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support';\nimport { testAudioScheduledSourceNodeStopMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support';\nimport { testAudioWorkletNodeOptionsClonability } from './helpers/test-audio-worklet-node-options-clonability';\nimport { testDomExceptionConstructorSupport } from './helpers/test-dom-exception-constructor-support';\nimport { testPromiseSupport } from './helpers/test-promise-support';\nimport { testTransferablesSupport } from './helpers/test-transferables-support';\nimport { wrapAudioBufferSourceNodeStartMethodOffsetClamping } from './helpers/wrap-audio-buffer-source-node-start-method-offset-clamping';\nimport { wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls } from './helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls';\nimport { wrapEventListener } from './helpers/wrap-event-listener';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nconst addActiveInputConnectionToAudioNode = createAddActiveInputConnectionToAudioNode(insertElementInSet);\nconst addPassiveInputConnectionToAudioNode = createAddPassiveInputConnectionToAudioNode(insertElementInSet);\nconst deleteActiveInputConnectionToAudioNode = createDeleteActiveInputConnectionToAudioNode(pickElementFromSet);\nconst audioNodeTailTimeStore = new WeakMap();\nconst getAudioNodeTailTime = createGetAudioNodeTailTime(audioNodeTailTimeStore);\nconst cacheTestResult = createCacheTestResult(new Map(), new WeakMap());\nconst window = createWindow();\nconst createNativeAnalyserNode = createNativeAnalyserNodeFactory(cacheTestResult, createIndexSizeError);\nconst getAudioNodeRenderer = createGetAudioNodeRenderer(getAudioNodeConnections);\nconst renderInputsOfAudioNode = createRenderInputsOfAudioNode(getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle);\nconst createAnalyserNodeRenderer = createAnalyserNodeRendererFactory(createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst getNativeContext = createGetNativeContext(CONTEXT_STORE);\nconst nativeOfflineAudioContextConstructor = createNativeOfflineAudioContextConstructor(window);\nconst isNativeOfflineAudioContext = createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor);\nconst audioParamAudioNodeStore = new WeakMap();\nconst eventTargetConstructor = createEventTargetConstructor(wrapEventListener);\nconst nativeAudioContextConstructor = createNativeAudioContextConstructor(window);\nconst isNativeAudioContext = createIsNativeAudioContext(nativeAudioContextConstructor);\nconst isNativeAudioNode = createIsNativeAudioNode(window);\nconst isNativeAudioParam = createIsNativeAudioParam(window);\nconst nativeAudioWorkletNodeConstructor = createNativeAudioWorkletNodeConstructor(window);\nconst audioNodeConstructor = createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE), createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode), cacheTestResult, createIncrementCycleCounterFactory(CYCLE_COUNTERS, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode), createIndexSizeError, createInvalidAccessError, createNotSupportedError, createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode, CYCLE_COUNTERS, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext), createDetectCycles(audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey), eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode, isNativeAudioParam, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor);\nconst analyserNodeConstructor = createAnalyserNodeConstructor(audioNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext);\nexport { analyserNodeConstructor as AnalyserNode };\nconst audioBufferStore = new WeakSet();\nconst nativeAudioBufferConstructor = createNativeAudioBufferConstructor(window);\nconst convertNumberToUnsignedLong = createConvertNumberToUnsignedLong(new Uint32Array(1));\nconst wrapAudioBufferCopyChannelMethods = createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong, createIndexSizeError);\nconst wrapAudioBufferCopyChannelMethodsOutOfBounds = createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong);\nconst audioBufferConstructor = createAudioBufferConstructor(audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor), wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nexport { audioBufferConstructor as AudioBuffer };\nconst addSilentConnection = createAddSilentConnection(createNativeGainNode);\nconst renderInputsOfAudioParam = createRenderInputsOfAudioParam(getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle);\nconst connectAudioParam = createConnectAudioParam(renderInputsOfAudioParam);\nconst createNativeAudioBufferSourceNode = createNativeAudioBufferSourceNodeFactory(addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClamping, createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors), wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls);\nconst renderAutomation = createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections), renderInputsOfAudioParam);\nconst createAudioBufferSourceNodeRenderer = createAudioBufferSourceNodeRendererFactory(connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst createAudioParam = createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE), audioParamAudioNodeStore, AUDIO_PARAM_STORE, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible);\nconst audioBufferSourceNodeConstructor = createAudioBufferSourceNodeConstructor(audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nexport { audioBufferSourceNodeConstructor as AudioBufferSourceNode };\nconst audioDestinationNodeConstructor = createAudioDestinationNodeConstructor(audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNodeFactory(createNativeGainNode, overwriteAccessors), getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode);\nconst createBiquadFilterNodeRenderer = createBiquadFilterNodeRendererFactory(connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst setAudioNodeTailTime = createSetAudioNodeTailTime(audioNodeTailTimeStore);\nconst biquadFilterNodeConstructor = createBiquadFilterNodeConstructor(audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst monitorConnections = createMonitorConnections(insertElementInSet, isNativeAudioNode);\nconst wrapChannelMergerNode = createWrapChannelMergerNode(createInvalidStateError, monitorConnections);\nconst createNativeChannelMergerNode = createNativeChannelMergerNodeFactory(nativeAudioContextConstructor, wrapChannelMergerNode);\nconst createChannelMergerNodeRenderer = createChannelMergerNodeRendererFactory(createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst channelMergerNodeConstructor = createChannelMergerNodeConstructor(audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext);\nconst createChannelSplitterNodeRenderer = createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst channelSplitterNodeConstructor = createChannelSplitterNodeConstructor(audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions);\nconst createNativeConstantSourceNodeFaker = createNativeConstantSourceNodeFakerFactory(addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections);\nconst createNativeConstantSourceNode = createNativeConstantSourceNodeFactory(addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport);\nconst createConstantSourceNodeRenderer = createConstantSourceNodeRendererFactory(connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst constantSourceNodeConstructor = createConstantSourceNodeConstructor(audioNodeConstructor, createAudioParam, createConstantSourceNodeRenderer, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nconst createNativeConvolverNode = createNativeConvolverNodeFactory(createNotSupportedError, overwriteAccessors);\nconst createConvolverNodeRenderer = createConvolverNodeRendererFactory(createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst convolverNodeConstructor = createConvolverNodeConstructor(audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createDelayNodeRenderer = createDelayNodeRendererFactory(connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst delayNodeConstructor = createDelayNodeConstructor(audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createNativeDynamicsCompressorNode = createNativeDynamicsCompressorNodeFactory(createNotSupportedError);\nconst createDynamicsCompressorNodeRenderer = createDynamicsCompressorNodeRendererFactory(connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst dynamicsCompressorNodeConstructor = createDynamicsCompressorNodeConstructor(audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createGainNodeRenderer = createGainNodeRendererFactory(connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst gainNodeConstructor = createGainNodeConstructor(audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext);\nconst createNativeIIRFilterNodeFaker = createNativeIIRFilterNodeFakerFactory(createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError);\nconst renderNativeOfflineAudioContext = createRenderNativeOfflineAudioContext(cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode, nativeOfflineAudioContextConstructor));\nconst createIIRFilterNodeRenderer = createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst createNativeIIRFilterNode = createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker);\nconst iIRFilterNodeConstructor = createIIRFilterNodeConstructor(audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createAudioListener = createAudioListenerFactory(createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, createNotSupportedError, getFirstSample, isNativeOfflineAudioContext, overwriteAccessors);\nconst unrenderedAudioWorkletNodeStore = new WeakMap();\nconst minimalBaseAudioContextConstructor = createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener);\nconst createNativeOscillatorNode = createNativeOscillatorNodeFactory(addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls);\nconst createOscillatorNodeRenderer = createOscillatorNodeRendererFactory(connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst oscillatorNodeConstructor = createOscillatorNodeConstructor(audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nconst createConnectedNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode);\nconst createNativeWaveShaperNodeFaker = createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections);\nconst createNativeWaveShaperNode = createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors);\nconst createNativePannerNodeFaker = createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, getFirstSample, monitorConnections);\nconst createNativePannerNode = createNativePannerNodeFactory(createNativePannerNodeFaker);\nconst createPannerNodeRenderer = createPannerNodeRendererFactory(connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst pannerNodeConstructor = createPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createNativePeriodicWave = createNativePeriodicWaveFactory(createIndexSizeError);\nconst periodicWaveConstructor = createPeriodicWaveConstructor(createNativePeriodicWave, getNativeContext, new WeakSet(), sanitizePeriodicWaveOptions);\nconst nativeStereoPannerNodeFakerFactory = createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections);\nconst createNativeStereoPannerNode = createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory, createNotSupportedError);\nconst createStereoPannerNodeRenderer = createStereoPannerNodeRendererFactory(connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst stereoPannerNodeConstructor = createStereoPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext);\nconst createWaveShaperNodeRenderer = createWaveShaperNodeRendererFactory(createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst waveShaperNodeConstructor = createWaveShaperNodeConstructor(audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst isSecureContext = createIsSecureContext(window);\nconst exposeCurrentFrameAndCurrentTime = createExposeCurrentFrameAndCurrentTime(window);\nconst backupOfflineAudioContextStore = new WeakMap();\nconst getOrCreateBackupOfflineAudioContext = createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor);\n// The addAudioWorkletModule() function is only available in a SecureContext.\nexport const addAudioWorkletModule = isSecureContext\n ? createAddAudioWorkletModule(cacheTestResult, createNotSupportedError, createEvaluateSource(window), exposeCurrentFrameAndCurrentTime, createFetchSource(createAbortError), getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, new WeakMap(), new WeakMap(), createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), \n // @todo window is guaranteed to be defined because isSecureContext checks that as well.\n window)\n : undefined;\nconst isNativeContext = createIsNativeContext(isNativeAudioContext, isNativeOfflineAudioContext);\nexport const decodeAudioData = createDecodeAudioData(audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, new WeakSet(), getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nconst baseAudioContextConstructor = createBaseAudioContextConstructor(addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor);\nconst mediaElementAudioSourceNodeConstructor = createMediaElementAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext);\nconst mediaStreamAudioDestinationNodeConstructor = createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext);\nconst mediaStreamAudioSourceNodeConstructor = createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext);\nconst createNativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError, isNativeOfflineAudioContext);\nconst mediaStreamTrackAudioSourceNodeConstructor = createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext);\nconst audioContextConstructor = createAudioContextConstructor(baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor);\nexport { audioContextConstructor as AudioContext };\nconst getUnrenderedAudioWorkletNodes = createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore);\nconst addUnrenderedAudioWorkletNode = createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst connectMultipleOutputs = createConnectMultipleOutputs(createIndexSizeError);\nconst deleteUnrenderedAudioWorkletNode = createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst disconnectMultipleOutputs = createDisconnectMultipleOutputs(createIndexSizeError);\nconst activeAudioWorkletNodeInputsStore = new WeakMap();\nconst getActiveAudioWorkletNodeInputs = createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore, getValueForKey);\nconst createNativeAudioWorkletNodeFaker = createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections);\nconst createNativeAudioWorkletNode = createNativeAudioWorkletNodeFactory(createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections);\nconst createAudioWorkletNodeRenderer = createAudioWorkletNodeRendererFactory(connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst getBackupOfflineAudioContext = createGetBackupOfflineAudioContext(backupOfflineAudioContextStore);\nconst setActiveAudioWorkletNodeInputs = createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore);\n// The AudioWorkletNode constructor is only available in a SecureContext.\nconst audioWorkletNodeConstructor = isSecureContext\n ? createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, testAudioWorkletNodeOptionsClonability, wrapEventListener)\n : undefined;\nexport { audioWorkletNodeConstructor as AudioWorkletNode };\nexport { biquadFilterNodeConstructor as BiquadFilterNode };\nexport { channelMergerNodeConstructor as ChannelMergerNode };\nexport { channelSplitterNodeConstructor as ChannelSplitterNode };\nexport { convolverNodeConstructor as ConvolverNode };\nexport { constantSourceNodeConstructor as ConstantSourceNode };\nexport { delayNodeConstructor as DelayNode };\nexport { dynamicsCompressorNodeConstructor as DynamicsCompressorNode };\nexport { gainNodeConstructor as GainNode };\nexport { iIRFilterNodeConstructor as IIRFilterNode };\nexport { mediaElementAudioSourceNodeConstructor as MediaElementAudioSourceNode };\nexport { mediaStreamAudioDestinationNodeConstructor as MediaStreamAudioDestinationNode };\nexport { mediaStreamAudioSourceNodeConstructor as MediaStreamAudioSourceNode };\nexport { mediaStreamTrackAudioSourceNodeConstructor as MediaStreamTrackAudioSourceNode };\nconst minimalAudioContextConstructor = createMinimalAudioContextConstructor(createInvalidStateError, createNotSupportedError, createUnknownError, minimalBaseAudioContextConstructor, nativeAudioContextConstructor);\nexport { minimalAudioContextConstructor as MinimalAudioContext };\nconst createNativeOfflineAudioContext = createCreateNativeOfflineAudioContext(createNotSupportedError, nativeOfflineAudioContextConstructor);\nconst startRendering = createStartRendering(audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nconst minimalOfflineAudioContextConstructor = createMinimalOfflineAudioContextConstructor(cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, minimalBaseAudioContextConstructor, startRendering);\nexport { minimalOfflineAudioContextConstructor as MinimalOfflineAudioContext };\nconst offlineAudioContextConstructor = createOfflineAudioContextConstructor(baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering);\nexport { offlineAudioContextConstructor as OfflineAudioContext };\nexport { oscillatorNodeConstructor as OscillatorNode };\nexport { pannerNodeConstructor as PannerNode };\nexport { periodicWaveConstructor as PeriodicWave };\nexport { stereoPannerNodeConstructor as StereoPannerNode };\nexport { waveShaperNodeConstructor as WaveShaperNode };\nexport const isAnyAudioContext = createIsAnyAudioContext(CONTEXT_STORE, isNativeAudioContext);\nexport const isAnyAudioNode = createIsAnyAudioNode(AUDIO_NODE_STORE, isNativeAudioNode);\nexport const isAnyAudioParam = createIsAnyAudioParam(AUDIO_PARAM_STORE, isNativeAudioParam);\nexport const isAnyOfflineAudioContext = createIsAnyOfflineAudioContext(CONTEXT_STORE, isNativeOfflineAudioContext);\nexport const isSupported = () => createIsSupportedPromise(cacheTestResult, createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor), createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor), createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor), createTestAudioContextOptionsSupport(nativeAudioContextConstructor), createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor), createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor), createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor), testDomExceptionConstructorSupport, createTestIsSecureContextSupport(window), createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor), createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor), testTransferablesSupport);\n//# sourceMappingURL=module.js.map","import { encode, instantiate } from 'media-encoder-host';\nimport { addRecorderAudioWorkletModule, createRecorderAudioWorkletNode } from 'recorder-audio-worklet';\nimport { AudioBuffer, AudioBufferSourceNode, AudioWorkletNode, MediaStreamAudioSourceNode, MinimalAudioContext, addAudioWorkletModule } from 'standardized-audio-context';\nconst ERROR_MESSAGE = 'Missing AudioWorklet support. Maybe this is not running in a secure context.';\n// @todo This should live in a separate file.\nconst createPromisedAudioNodesEncoderInstanceIdAndPort = async (audioBuffer, audioContext, channelCount, mediaStream, mimeType) => {\n const { encoderInstanceId, port } = await instantiate(mimeType, audioContext.sampleRate);\n if (AudioWorkletNode === undefined) {\n throw new Error(ERROR_MESSAGE);\n }\n const audioBufferSourceNode = new AudioBufferSourceNode(audioContext, { buffer: audioBuffer });\n const mediaStreamAudioSourceNode = new MediaStreamAudioSourceNode(audioContext, { mediaStream });\n const recorderAudioWorkletNode = createRecorderAudioWorkletNode(AudioWorkletNode, audioContext, { channelCount });\n return { audioBufferSourceNode, encoderInstanceId, mediaStreamAudioSourceNode, port, recorderAudioWorkletNode };\n};\nexport const createWebAudioMediaRecorderFactory = (createBlobEvent, createInvalidModificationError, createInvalidStateError, createNotSupportedError) => {\n return (eventTarget, mediaStream, mimeType) => {\n var _a;\n const sampleRate = (_a = mediaStream.getAudioTracks()[0]) === null || _a === void 0 ? void 0 : _a.getSettings().sampleRate;\n const audioContext = new MinimalAudioContext({ latencyHint: 'playback', sampleRate });\n const length = Math.max(1024, Math.ceil(audioContext.baseLatency * audioContext.sampleRate));\n const audioBuffer = new AudioBuffer({ length, sampleRate: audioContext.sampleRate });\n const bufferedArrayBuffers = [];\n const promisedAudioWorkletModule = addRecorderAudioWorkletModule((url) => {\n if (addAudioWorkletModule === undefined) {\n throw new Error(ERROR_MESSAGE);\n }\n return addAudioWorkletModule(audioContext, url);\n });\n let abortRecording = null;\n let intervalId = null;\n let promisedAudioNodesAndEncoderInstanceId = null;\n let promisedPartialRecording = null;\n let isAudioContextRunning = true;\n const dispatchDataAvailableEvent = (arrayBuffers) => {\n eventTarget.dispatchEvent(createBlobEvent('dataavailable', { data: new Blob(arrayBuffers, { type: mimeType }) }));\n };\n const requestNextPartialRecording = async (encoderInstanceId, timeslice) => {\n const arrayBuffers = await encode(encoderInstanceId, timeslice);\n if (promisedAudioNodesAndEncoderInstanceId === null) {\n bufferedArrayBuffers.push(...arrayBuffers);\n }\n else {\n dispatchDataAvailableEvent(arrayBuffers);\n promisedPartialRecording = requestNextPartialRecording(encoderInstanceId, timeslice);\n }\n };\n const resume = () => {\n isAudioContextRunning = true;\n return audioContext.resume();\n };\n const stop = () => {\n if (promisedAudioNodesAndEncoderInstanceId === null) {\n return;\n }\n if (abortRecording !== null) {\n mediaStream.removeEventListener('addtrack', abortRecording);\n mediaStream.removeEventListener('removetrack', abortRecording);\n }\n if (intervalId !== null) {\n clearTimeout(intervalId);\n }\n promisedAudioNodesAndEncoderInstanceId.then(async ({ encoderInstanceId, mediaStreamAudioSourceNode, recorderAudioWorkletNode }) => {\n if (promisedPartialRecording !== null) {\n promisedPartialRecording.catch(() => {\n /* @todo Only catch the errors caused by a duplicate call to encode. */\n });\n promisedPartialRecording = null;\n }\n await recorderAudioWorkletNode.stop();\n mediaStreamAudioSourceNode.disconnect(recorderAudioWorkletNode);\n const arrayBuffers = await encode(encoderInstanceId, null);\n if (promisedAudioNodesAndEncoderInstanceId === null) {\n await suspend();\n }\n dispatchDataAvailableEvent([...bufferedArrayBuffers, ...arrayBuffers]);\n bufferedArrayBuffers.length = 0;\n eventTarget.dispatchEvent(new Event('stop'));\n });\n promisedAudioNodesAndEncoderInstanceId = null;\n };\n const suspend = () => {\n isAudioContextRunning = false;\n return audioContext.suspend();\n };\n suspend();\n return {\n get mimeType() {\n return mimeType;\n },\n get state() {\n return promisedAudioNodesAndEncoderInstanceId === null ? 'inactive' : isAudioContextRunning ? 'recording' : 'paused';\n },\n pause() {\n if (promisedAudioNodesAndEncoderInstanceId === null) {\n throw createInvalidStateError();\n }\n if (isAudioContextRunning) {\n suspend();\n eventTarget.dispatchEvent(new Event('pause'));\n }\n },\n resume() {\n if (promisedAudioNodesAndEncoderInstanceId === null) {\n throw createInvalidStateError();\n }\n if (!isAudioContextRunning) {\n resume();\n eventTarget.dispatchEvent(new Event('resume'));\n }\n },\n start(timeslice) {\n var _a;\n if (promisedAudioNodesAndEncoderInstanceId !== null) {\n throw createInvalidStateError();\n }\n if (mediaStream.getVideoTracks().length > 0) {\n throw createNotSupportedError();\n }\n eventTarget.dispatchEvent(new Event('start'));\n const audioTracks = mediaStream.getAudioTracks();\n const channelCount = audioTracks.length === 0 ? 2 : (_a = audioTracks[0].getSettings().channelCount) !== null && _a !== void 0 ? _a : 2;\n promisedAudioNodesAndEncoderInstanceId = Promise.all([\n resume(),\n promisedAudioWorkletModule.then(() => createPromisedAudioNodesEncoderInstanceIdAndPort(audioBuffer, audioContext, channelCount, mediaStream, mimeType))\n ]).then(async ([, { audioBufferSourceNode, encoderInstanceId, mediaStreamAudioSourceNode, port, recorderAudioWorkletNode }]) => {\n mediaStreamAudioSourceNode.connect(recorderAudioWorkletNode);\n await new Promise((resolve) => {\n audioBufferSourceNode.onended = resolve;\n audioBufferSourceNode.connect(recorderAudioWorkletNode);\n audioBufferSourceNode.start(audioContext.currentTime + length / audioContext.sampleRate);\n });\n audioBufferSourceNode.disconnect(recorderAudioWorkletNode);\n await recorderAudioWorkletNode.record(port);\n if (timeslice !== undefined) {\n promisedPartialRecording = requestNextPartialRecording(encoderInstanceId, timeslice);\n }\n return { encoderInstanceId, mediaStreamAudioSourceNode, recorderAudioWorkletNode };\n });\n const tracks = mediaStream.getTracks();\n abortRecording = () => {\n stop();\n eventTarget.dispatchEvent(new ErrorEvent('error', { error: createInvalidModificationError() }));\n };\n mediaStream.addEventListener('addtrack', abortRecording);\n mediaStream.addEventListener('removetrack', abortRecording);\n intervalId = setInterval(() => {\n const currentTracks = mediaStream.getTracks();\n if ((currentTracks.length !== tracks.length || currentTracks.some((track, index) => track !== tracks[index])) &&\n abortRecording !== null) {\n abortRecording();\n }\n }, 1000);\n },\n stop\n };\n };\n};\n//# sourceMappingURL=web-audio-media-recorder.js.map","export class MultiBufferDataView {\n constructor(buffers, byteOffset = 0, byteLength) {\n if (byteOffset < 0 || (byteLength !== undefined && byteLength < 0)) {\n throw new RangeError();\n }\n const availableBytes = buffers.reduce((length, buffer) => length + buffer.byteLength, 0);\n if (byteOffset > availableBytes || (byteLength !== undefined && byteOffset + byteLength > availableBytes)) {\n throw new RangeError();\n }\n const dataViews = [];\n const effectiveByteLength = byteLength === undefined ? availableBytes - byteOffset : byteLength;\n const truncatedBuffers = [];\n let consumedByteLength = 0;\n let truncatedByteOffset = byteOffset;\n for (const buffer of buffers) {\n if (truncatedBuffers.length === 0) {\n if (buffer.byteLength > truncatedByteOffset) {\n consumedByteLength = buffer.byteLength - truncatedByteOffset;\n const byteLengthOfDataView = consumedByteLength > effectiveByteLength ? effectiveByteLength : consumedByteLength;\n dataViews.push(new DataView(buffer, truncatedByteOffset, byteLengthOfDataView));\n truncatedBuffers.push(buffer);\n }\n else {\n truncatedByteOffset -= buffer.byteLength;\n }\n }\n else if (consumedByteLength < effectiveByteLength) {\n consumedByteLength += buffer.byteLength;\n const byteLengthOfDataView = consumedByteLength > effectiveByteLength\n ? buffer.byteLength - consumedByteLength + effectiveByteLength\n : buffer.byteLength;\n dataViews.push(new DataView(buffer, 0, byteLengthOfDataView));\n truncatedBuffers.push(buffer);\n }\n }\n this._buffers = truncatedBuffers;\n this._byteLength = effectiveByteLength;\n this._byteOffset = truncatedByteOffset;\n this._dataViews = dataViews;\n this._internalBuffer = new DataView(new ArrayBuffer(8));\n }\n get buffers() {\n return this._buffers;\n }\n get byteLength() {\n return this._byteLength;\n }\n get byteOffset() {\n return this._byteOffset;\n }\n getFloat32(byteOffset, littleEndian) {\n this._internalBuffer.setUint8(0, this.getUint8(byteOffset + 0));\n this._internalBuffer.setUint8(1, this.getUint8(byteOffset + 1));\n this._internalBuffer.setUint8(2, this.getUint8(byteOffset + 2));\n this._internalBuffer.setUint8(3, this.getUint8(byteOffset + 3));\n return this._internalBuffer.getFloat32(0, littleEndian);\n }\n getFloat64(byteOffset, littleEndian) {\n this._internalBuffer.setUint8(0, this.getUint8(byteOffset + 0));\n this._internalBuffer.setUint8(1, this.getUint8(byteOffset + 1));\n this._internalBuffer.setUint8(2, this.getUint8(byteOffset + 2));\n this._internalBuffer.setUint8(3, this.getUint8(byteOffset + 3));\n this._internalBuffer.setUint8(4, this.getUint8(byteOffset + 4));\n this._internalBuffer.setUint8(5, this.getUint8(byteOffset + 5));\n this._internalBuffer.setUint8(6, this.getUint8(byteOffset + 6));\n this._internalBuffer.setUint8(7, this.getUint8(byteOffset + 7));\n return this._internalBuffer.getFloat64(0, littleEndian);\n }\n getInt16(byteOffset, littleEndian) {\n this._internalBuffer.setUint8(0, this.getUint8(byteOffset + 0));\n this._internalBuffer.setUint8(1, this.getUint8(byteOffset + 1));\n return this._internalBuffer.getInt16(0, littleEndian);\n }\n getInt32(byteOffset, littleEndian) {\n this._internalBuffer.setUint8(0, this.getUint8(byteOffset + 0));\n this._internalBuffer.setUint8(1, this.getUint8(byteOffset + 1));\n this._internalBuffer.setUint8(2, this.getUint8(byteOffset + 2));\n this._internalBuffer.setUint8(3, this.getUint8(byteOffset + 3));\n return this._internalBuffer.getInt32(0, littleEndian);\n }\n getInt8(byteOffset) {\n const [dataView, byteOffsetOfDataView] = this._findDataViewWithOffset(byteOffset);\n return dataView.getInt8(byteOffset - byteOffsetOfDataView);\n }\n getUint16(byteOffset, littleEndian) {\n this._internalBuffer.setUint8(0, this.getUint8(byteOffset + 0));\n this._internalBuffer.setUint8(1, this.getUint8(byteOffset + 1));\n return this._internalBuffer.getUint16(0, littleEndian);\n }\n getUint32(byteOffset, littleEndian) {\n this._internalBuffer.setUint8(0, this.getUint8(byteOffset + 0));\n this._internalBuffer.setUint8(1, this.getUint8(byteOffset + 1));\n this._internalBuffer.setUint8(2, this.getUint8(byteOffset + 2));\n this._internalBuffer.setUint8(3, this.getUint8(byteOffset + 3));\n return this._internalBuffer.getUint32(0, littleEndian);\n }\n getUint8(byteOffset) {\n const [dataView, byteOffsetOfDataView] = this._findDataViewWithOffset(byteOffset);\n return dataView.getUint8(byteOffset - byteOffsetOfDataView);\n }\n setFloat32(byteOffset, value, littleEndian) {\n this._internalBuffer.setFloat32(0, value, littleEndian);\n this.setUint8(byteOffset, this._internalBuffer.getUint8(0));\n this.setUint8(byteOffset + 1, this._internalBuffer.getUint8(1));\n this.setUint8(byteOffset + 2, this._internalBuffer.getUint8(2));\n this.setUint8(byteOffset + 3, this._internalBuffer.getUint8(3));\n }\n setFloat64(byteOffset, value, littleEndian) {\n this._internalBuffer.setFloat64(0, value, littleEndian);\n this.setUint8(byteOffset, this._internalBuffer.getUint8(0));\n this.setUint8(byteOffset + 1, this._internalBuffer.getUint8(1));\n this.setUint8(byteOffset + 2, this._internalBuffer.getUint8(2));\n this.setUint8(byteOffset + 3, this._internalBuffer.getUint8(3));\n this.setUint8(byteOffset + 4, this._internalBuffer.getUint8(4));\n this.setUint8(byteOffset + 5, this._internalBuffer.getUint8(5));\n this.setUint8(byteOffset + 6, this._internalBuffer.getUint8(6));\n this.setUint8(byteOffset + 7, this._internalBuffer.getUint8(7));\n }\n setInt16(byteOffset, value, littleEndian) {\n this._internalBuffer.setInt16(0, value, littleEndian);\n this.setUint8(byteOffset, this._internalBuffer.getUint8(0));\n this.setUint8(byteOffset + 1, this._internalBuffer.getUint8(1));\n }\n setInt32(byteOffset, value, littleEndian) {\n this._internalBuffer.setInt32(0, value, littleEndian);\n this.setUint8(byteOffset, this._internalBuffer.getUint8(0));\n this.setUint8(byteOffset + 1, this._internalBuffer.getUint8(1));\n this.setUint8(byteOffset + 2, this._internalBuffer.getUint8(2));\n this.setUint8(byteOffset + 3, this._internalBuffer.getUint8(3));\n }\n setInt8(byteOffset, value) {\n const [dataView, byteOffsetOfDataView] = this._findDataViewWithOffset(byteOffset);\n dataView.setInt8(byteOffset - byteOffsetOfDataView, value);\n }\n setUint16(byteOffset, value, littleEndian) {\n this._internalBuffer.setUint16(0, value, littleEndian);\n this.setUint8(byteOffset, this._internalBuffer.getUint8(0));\n this.setUint8(byteOffset + 1, this._internalBuffer.getUint8(1));\n }\n setUint32(byteOffset, value, littleEndian) {\n this._internalBuffer.setUint32(0, value, littleEndian);\n this.setUint8(byteOffset, this._internalBuffer.getUint8(0));\n this.setUint8(byteOffset + 1, this._internalBuffer.getUint8(1));\n this.setUint8(byteOffset + 2, this._internalBuffer.getUint8(2));\n this.setUint8(byteOffset + 3, this._internalBuffer.getUint8(3));\n }\n setUint8(byteOffset, value) {\n const [dataView, byteOffsetOfDataView] = this._findDataViewWithOffset(byteOffset);\n dataView.setUint8(byteOffset - byteOffsetOfDataView, value);\n }\n _findDataViewWithOffset(byteOffset) {\n let byteOffsetOfDataView = 0;\n for (const dataView of this._dataViews) {\n const byteOffsetOfNextDataView = byteOffsetOfDataView + dataView.byteLength;\n if (byteOffset >= byteOffsetOfDataView && byteOffset < byteOffsetOfNextDataView) {\n return [dataView, byteOffsetOfDataView];\n }\n byteOffsetOfDataView = byteOffsetOfNextDataView;\n }\n throw new RangeError();\n }\n}\n//# sourceMappingURL=multi-buffer-data-view.js.map","import { encode, instantiate } from 'media-encoder-host';\nimport { MultiBufferDataView } from 'multi-buffer-data-view';\nimport { on } from 'subscribable-things';\nexport const createWebmPcmMediaRecorderFactory = (createBlobEvent, decodeWebMChunk, readVariableSizeInteger) => {\n return (eventTarget, nativeMediaRecorderConstructor, mediaStream, mimeType) => {\n const bufferedArrayBuffers = [];\n const nativeMediaRecorder = new nativeMediaRecorderConstructor(mediaStream, { mimeType: 'audio/webm;codecs=pcm' });\n let promisedPartialRecording = null;\n let stopRecording = () => { }; // tslint:disable-line:no-empty\n const dispatchDataAvailableEvent = (arrayBuffers) => {\n eventTarget.dispatchEvent(createBlobEvent('dataavailable', { data: new Blob(arrayBuffers, { type: mimeType }) }));\n };\n const requestNextPartialRecording = async (encoderInstanceId, timeslice) => {\n const arrayBuffers = await encode(encoderInstanceId, timeslice);\n if (nativeMediaRecorder.state === 'inactive') {\n bufferedArrayBuffers.push(...arrayBuffers);\n }\n else {\n dispatchDataAvailableEvent(arrayBuffers);\n promisedPartialRecording = requestNextPartialRecording(encoderInstanceId, timeslice);\n }\n };\n const stop = () => {\n if (nativeMediaRecorder.state === 'inactive') {\n return;\n }\n if (promisedPartialRecording !== null) {\n promisedPartialRecording.catch(() => {\n /* @todo Only catch the errors caused by a duplicate call to encode. */\n });\n promisedPartialRecording = null;\n }\n stopRecording();\n stopRecording = () => { }; // tslint:disable-line:no-empty\n nativeMediaRecorder.stop();\n };\n nativeMediaRecorder.addEventListener('error', (event) => {\n stop();\n eventTarget.dispatchEvent(new ErrorEvent('error', {\n error: event.error\n }));\n });\n nativeMediaRecorder.addEventListener('pause', () => eventTarget.dispatchEvent(new Event('pause')));\n nativeMediaRecorder.addEventListener('resume', () => eventTarget.dispatchEvent(new Event('resume')));\n nativeMediaRecorder.addEventListener('start', () => eventTarget.dispatchEvent(new Event('start')));\n return {\n get mimeType() {\n return mimeType;\n },\n get state() {\n return nativeMediaRecorder.state;\n },\n pause() {\n return nativeMediaRecorder.pause();\n },\n resume() {\n return nativeMediaRecorder.resume();\n },\n start(timeslice) {\n const [audioTrack] = mediaStream.getAudioTracks();\n if (audioTrack !== undefined && nativeMediaRecorder.state === 'inactive') {\n // Bug #19: Chrome does not expose the correct channelCount property right away.\n const { channelCount, sampleRate } = audioTrack.getSettings();\n if (channelCount === undefined) {\n throw new Error('The channelCount is not defined.');\n }\n if (sampleRate === undefined) {\n throw new Error('The sampleRate is not defined.');\n }\n let isRecording = false;\n let isStopped = false;\n // Bug #9: Chrome sometimes fires more than one dataavailable event while being inactive.\n let pendingInvocations = 0;\n let promisedDataViewElementTypeEncoderInstanceIdAndPort = instantiate(mimeType, sampleRate);\n stopRecording = () => {\n isStopped = true;\n };\n const removeEventListener = on(nativeMediaRecorder, 'dataavailable')(({ data }) => {\n pendingInvocations += 1;\n const promisedArrayBuffer = data.arrayBuffer();\n promisedDataViewElementTypeEncoderInstanceIdAndPort = promisedDataViewElementTypeEncoderInstanceIdAndPort.then(async ({ dataView = null, elementType = null, encoderInstanceId, port }) => {\n const arrayBuffer = await promisedArrayBuffer;\n pendingInvocations -= 1;\n const currentDataView = dataView === null\n ? new MultiBufferDataView([arrayBuffer])\n : new MultiBufferDataView([...dataView.buffers, arrayBuffer], dataView.byteOffset);\n if (!isRecording && nativeMediaRecorder.state === 'recording' && !isStopped) {\n const lengthAndValue = readVariableSizeInteger(currentDataView, 0);\n if (lengthAndValue === null) {\n return { dataView: currentDataView, elementType, encoderInstanceId, port };\n }\n const { value } = lengthAndValue;\n if (value !== 172351395) {\n return { dataView, elementType, encoderInstanceId, port };\n }\n isRecording = true;\n }\n const { currentElementType, offset, contents } = decodeWebMChunk(currentDataView, elementType, channelCount);\n const remainingDataView = offset < currentDataView.byteLength\n ? new MultiBufferDataView(currentDataView.buffers, currentDataView.byteOffset + offset)\n : null;\n contents.forEach((content) => port.postMessage(content, content.map(({ buffer }) => buffer)));\n if (pendingInvocations === 0 && (nativeMediaRecorder.state === 'inactive' || isStopped)) {\n encode(encoderInstanceId, null).then((arrayBuffers) => {\n dispatchDataAvailableEvent([...bufferedArrayBuffers, ...arrayBuffers]);\n bufferedArrayBuffers.length = 0;\n eventTarget.dispatchEvent(new Event('stop'));\n });\n port.postMessage([]);\n port.close();\n removeEventListener();\n }\n return { dataView: remainingDataView, elementType: currentElementType, encoderInstanceId, port };\n });\n });\n if (timeslice !== undefined) {\n promisedDataViewElementTypeEncoderInstanceIdAndPort.then(({ encoderInstanceId }) => {\n if (isStopped) {\n return;\n }\n promisedPartialRecording = requestNextPartialRecording(encoderInstanceId, timeslice);\n });\n }\n }\n nativeMediaRecorder.start(100);\n },\n stop\n };\n };\n};\n//# sourceMappingURL=webm-pcm-media-recorder.js.map","export const createWindow = () => (typeof window === 'undefined' ? null : window);\n//# sourceMappingURL=window.js.map","export const readVariableSizeIntegerLength = (dataView, offset) => {\n if (offset >= dataView.byteLength) {\n return null;\n }\n const byte = dataView.getUint8(offset);\n if (byte > 127) {\n return 1;\n }\n if (byte > 63) {\n return 2;\n }\n if (byte > 31) {\n return 3;\n }\n if (byte > 15) {\n return 4;\n }\n if (byte > 7) {\n return 5;\n }\n if (byte > 3) {\n return 6;\n }\n if (byte > 1) {\n return 7;\n }\n if (byte > 0) {\n return 8;\n }\n const length = readVariableSizeIntegerLength(dataView, offset + 1);\n return length === null ? null : length + 8;\n};\n//# sourceMappingURL=read-variable-size-integer-length.js.map","export const wrapEventListener = (target, eventListener) => {\n return (event) => {\n const descriptor = { value: target };\n Object.defineProperties(event, {\n currentTarget: descriptor,\n target: descriptor\n });\n if (typeof eventListener === 'function') {\n return eventListener.call(target, event);\n }\n return eventListener.handleEvent.call(target, event);\n };\n};\n//# sourceMappingURL=wrap-event-listener.js.map","import { deregister as drgstr, register as rgstr } from 'media-encoder-host';\nimport { createBlobEventFactory } from './factories/blob-event-factory';\nimport { createDecodeWebMChunk } from './factories/decode-web-m-chunk';\nimport { createEventTargetConstructor } from './factories/event-target-constructor';\nimport { createEventTargetFactory } from './factories/event-target-factory';\nimport { createInvalidModificationError } from './factories/invalid-modification-error';\nimport { createInvalidStateError } from './factories/invalid-state-error';\nimport { createIsSupportedPromise } from './factories/is-supported-promise';\nimport { createMediaRecorderConstructor } from './factories/media-recorder-constructor';\nimport { createNativeBlobEventConstructor } from './factories/native-blob-event-constructor';\nimport { createNativeMediaRecorderConstructor } from './factories/native-media-recorder-constructor';\nimport { createNativeMediaRecorderFactory } from './factories/native-media-recorder-factory';\nimport { createNotSupportedError } from './factories/not-supported-error';\nimport { createReadElementContent } from './factories/read-element-content';\nimport { createReadElementType } from './factories/read-element-type';\nimport { createReadVariableSizeInteger } from './factories/read-variable-size-integer';\nimport { createWebAudioMediaRecorderFactory } from './factories/web-audio-media-recorder';\nimport { createWebmPcmMediaRecorderFactory } from './factories/webm-pcm-media-recorder';\nimport { createWindow } from './factories/window';\nimport { readVariableSizeIntegerLength } from './functions/read-variable-size-integer-length';\nimport { wrapEventListener } from './functions/wrap-event-listener';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nconst encoderRegexes = [];\nconst window = createWindow();\nconst nativeBlobEventConstructor = createNativeBlobEventConstructor(window);\nconst createBlobEvent = createBlobEventFactory(nativeBlobEventConstructor);\nconst createWebAudioMediaRecorder = createWebAudioMediaRecorderFactory(createBlobEvent, createInvalidModificationError, createInvalidStateError, createNotSupportedError);\nconst readVariableSizeInteger = createReadVariableSizeInteger(readVariableSizeIntegerLength);\nconst readElementContent = createReadElementContent(readVariableSizeInteger);\nconst readElementType = createReadElementType(readVariableSizeInteger);\nconst decodeWebMChunk = createDecodeWebMChunk(readElementContent, readElementType);\nconst createWebmPcmMediaRecorder = createWebmPcmMediaRecorderFactory(createBlobEvent, decodeWebMChunk, readVariableSizeInteger);\nconst createEventTarget = createEventTargetFactory(window);\nconst nativeMediaRecorderConstructor = createNativeMediaRecorderConstructor(window);\nconst mediaRecorderConstructor = createMediaRecorderConstructor(createNativeMediaRecorderFactory(createNotSupportedError), createNotSupportedError, createWebAudioMediaRecorder, createWebmPcmMediaRecorder, encoderRegexes, createEventTargetConstructor(createEventTarget, wrapEventListener), nativeMediaRecorderConstructor);\nexport { mediaRecorderConstructor as MediaRecorder };\nconst ports = new WeakMap();\nexport const deregister = async (port) => {\n await drgstr(port);\n const encoderRegex = ports.get(port);\n if (encoderRegex !== undefined) {\n const index = encoderRegexes.indexOf(encoderRegex);\n encoderRegexes.splice(index, 1);\n }\n};\nexport const isSupported = () => createIsSupportedPromise(window);\nexport const register = async (port) => {\n const encoderRegex = await rgstr(port);\n encoderRegexes.push(encoderRegex);\n ports.set(port, encoderRegex);\n};\n//# sourceMappingURL=module.js.map","import { createBroker } from 'broker-factory';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nexport const wrap = createBroker({\n characterize: ({ call }) => {\n return () => call('characterize');\n },\n encode: ({ call }) => {\n return (recordingId, timeslice) => {\n return call('encode', { recordingId, timeslice });\n };\n },\n record: ({ call }) => {\n return async (recordingId, sampleRate, typedArrays) => {\n await call('record', { recordingId, sampleRate, typedArrays }, typedArrays.map(({ buffer }) => buffer));\n };\n }\n});\nexport const load = (url) => {\n const worker = new Worker(url);\n return wrap(worker);\n};\n//# sourceMappingURL=module.js.map","// This is the minified and stringified code of the extendable-media-recorder-wav-encoder-worker package.\nexport const worker = `(()=>{var e={455:function(e,t){!function(e){\"use strict\";var t=function(e){return function(t){var r=e(t);return t.add(r),r}},r=function(e){return function(t,r){return e.set(t,r),r}},n=void 0===Number.MAX_SAFE_INTEGER?9007199254740991:Number.MAX_SAFE_INTEGER,s=536870912,a=2*s,o=function(e,t){return function(r){var o=t.get(r),i=void 0===o?r.size:on)throw new Error(\"Congratulations, you created a collection of unique numbers which uses all available integers!\");for(;r.has(i);)i=Math.floor(Math.random()*n);return e(r,i)}},i=new WeakMap,c=r(i),l=o(c,i),u=t(l);e.addUniqueNumber=u,e.generateUniqueNumber=l}(t)}},t={};function r(n){var s=t[n];if(void 0!==s)return s.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,r),a.exports}(()=>{\"use strict\";const e=-32603,t=-32602,n=-32601,s=(e,t)=>Object.assign(new Error(e),{status:t}),a=t=>s('The handler of the method called \"'.concat(t,'\" returned an unexpected result.'),e),o=(t,r)=>async({data:{id:o,method:i,params:c}})=>{const l=r[i];try{if(void 0===l)throw(e=>s('The requested method called \"'.concat(e,'\" is not supported.'),n))(i);const r=void 0===c?l():l(c);if(void 0===r)throw(t=>s('The handler of the method called \"'.concat(t,'\" returned no required result.'),e))(i);const u=r instanceof Promise?await r:r;if(null===o){if(void 0!==u.result)throw a(i)}else{if(void 0===u.result)throw a(i);const{result:e,transferables:r=[]}=u;t.postMessage({id:o,result:e},r)}}catch(e){const{message:r,status:n=-32603}=e;t.postMessage({error:{code:n,message:r},id:o})}};var i=r(455);const c=new Map,l=(e,r,n)=>({...r,connect:({port:t})=>{t.start();const n=e(t,r),s=(0,i.generateUniqueNumber)(c);return c.set(s,(()=>{n(),t.close(),c.delete(s)})),{result:s}},disconnect:({portId:e})=>{const r=c.get(e);if(void 0===r)throw(e=>s('The specified parameter called \"portId\" with the given value \"'.concat(e,'\" does not identify a port connected to this worker.'),t))(e);return r(),{result:null}},isSupported:async()=>{if(await new Promise((e=>{const t=new ArrayBuffer(0),{port1:r,port2:n}=new MessageChannel;r.onmessage=({data:t})=>e(null!==t),n.postMessage(t,[t])}))){const e=n();return{result:e instanceof Promise?await e:e}}return{result:!1}}}),u=(e,t,r=()=>!0)=>{const n=l(u,t,r),s=o(e,n);return e.addEventListener(\"message\",s),()=>e.removeEventListener(\"message\",s)},d=e=>e.reduce(((e,t)=>e+t.length),0),h=(e,t)=>{const r=[];let n=0;e:for(;nt){const s=n-t;r.forEach(((t,r)=>{const n=t.pop(),a=n.length-s;t.push(n.subarray(0,a)),e[r].unshift(n.subarray(a))}))}return r},f=new Map,m=(e=>(t,r,n)=>{const s=e.get(t);if(void 0===s){const s={channelDataArrays:n.map((e=>[e])),isComplete:!0,sampleRate:r};return e.set(t,s),s}return s.channelDataArrays.forEach(((e,t)=>e.push(n[t]))),s})(f),p=((e,t)=>(r,n,s,a)=>{const o=s>>3,i=\"subsequent\"===n?0:44,c=r.length,l=e(r[0]),u=new ArrayBuffer(l*c*o+i),d=new DataView(u);return\"subsequent\"!==n&&t(d,s,c,\"complete\"===n?l:Number.POSITIVE_INFINITY,a),r.forEach(((e,t)=>{let r=i+t*o;e.forEach((e=>{const t=e.length;for(let n=0;n{const a=t>>3,o=Math.min(n*r*a,4294967251);e.setUint32(0,1380533830),e.setUint32(4,o+36,!0),e.setUint32(8,1463899717),e.setUint32(12,1718449184),e.setUint32(16,16,!0),e.setUint16(20,1,!0),e.setUint16(22,r,!0),e.setUint32(24,s,!0),e.setUint32(28,s*r*a,!0),e.setUint16(32,r*a,!0),e.setUint16(34,t,!0),e.setUint32(36,1684108385),e.setUint32(40,o,!0)})),v=new Map;u(self,{characterize:()=>({result:/^audio\\\\/wav$/}),encode:({recordingId:e,timeslice:t})=>{const r=v.get(e);void 0!==r&&(v.delete(e),r.reject(new Error(\"Another request was made to initiate an encoding.\")));const n=f.get(e);if(null!==t){if(void 0===n||d(n.channelDataArrays[0])*(1e3/n.sampleRate){v.set(e,{reject:n,resolve:r,timeslice:t})}));const r=h(n.channelDataArrays,Math.ceil(t*(n.sampleRate/1e3))),s=p(r,n.isComplete?\"initial\":\"subsequent\",16,n.sampleRate);return n.isComplete=!1,{result:s,transferables:s}}if(void 0!==n){const t=p(n.channelDataArrays,n.isComplete?\"complete\":\"subsequent\",16,n.sampleRate);return f.delete(e),{result:t,transferables:t}}return{result:[],transferables:[]}},record:({recordingId:e,sampleRate:t,typedArrays:r})=>{const n=m(e,t,r),s=v.get(e);if(void 0!==s&&d(n.channelDataArrays[0])*(1e3/t)>=s.timeslice){const r=h(n.channelDataArrays,Math.ceil(s.timeslice*(t/1e3))),a=p(r,n.isComplete?\"initial\":\"subsequent\",16,t);n.isComplete=!1,v.delete(e),s.resolve({result:a,transferables:a})}return{result:null}}})})()})();`; // tslint:disable-line:max-line-length\n//# sourceMappingURL=worker.js.map","import { load } from 'extendable-media-recorder-wav-encoder-broker';\nimport { worker } from './worker/worker';\nconst blob = new Blob([worker], { type: 'application/javascript; charset=utf-8' });\nconst url = URL.createObjectURL(blob);\nconst extendableMediaRecorderWavEncoder = load(url);\nexport const characterize = extendableMediaRecorderWavEncoder.characterize;\nexport const connect = extendableMediaRecorderWavEncoder.connect;\nexport const disconnect = extendableMediaRecorderWavEncoder.disconnect;\nexport const encode = extendableMediaRecorderWavEncoder.encode;\nexport const isSupported = extendableMediaRecorderWavEncoder.isSupported;\nexport const record = extendableMediaRecorderWavEncoder.record;\nURL.revokeObjectURL(url);\n//# sourceMappingURL=module.js.map"],"file":"assets/vendor-ota_xoL7.js"}