{"version":3,"file":"160.js","mappings":"gIACe,SAASA,IAEtB,KAAMC,gBAAgBD,GACpB,OAAO,IAAIA,EAIbC,KAAKC,KAAO,EAGZD,KAAKE,IAAM,EAGXF,KAAKG,UAAY,GAGjBH,KAAKI,gBAAkB,CAAC,EAGxBJ,KAAKK,QAAUC,OAAOC,OAAOP,KAAKK,SAGlCL,KAAKQ,cAAgB,EACvB,C,kCAGA,IAAIC,EAAUC,OAAOC,SAASC,gBAC1BC,EACFJ,EAAQI,SACRJ,EAAQK,uBACRL,EAAQM,oBACRN,EAAQO,kBACRP,EAAQQ,kBAUVlB,EAAYmB,UAAUC,gBAAkB,SAASC,EAAIC,GACnD,OAAOR,EAAQS,KAAKF,EAAIC,EAC1B,EAUAtB,EAAYmB,UAAUK,iBAAmB,SAASpB,EAAWqB,GAC3D,OAAOA,EAAQD,iBAAiBpB,EAClC,EAUAJ,EAAYmB,UAAUb,QAAU,GAGhC,IAAIoB,EAAO,oCACX1B,EAAYmB,UAAUb,QAAQqB,KAAK,CACjCC,KAAM,KACNN,SAAU,SAAyBO,GACjC,IAAIC,EACJ,GAAKA,EAAID,EAAIE,MAAML,GACjB,OAAOI,EAAE,GAAGE,MAAM,EAEtB,EACAC,QAAS,SAAsBZ,GAC7B,GAAIA,EAAGa,GACL,MAAO,CAACb,EAAGa,GAEf,IAIF,IAAIC,EAAU,qCACdnC,EAAYmB,UAAUb,QAAQqB,KAAK,CACjCC,KAAM,QACNN,SAAU,SAA4BO,GACpC,IAAIC,EACJ,GAAKA,EAAID,EAAIE,MAAMI,GACjB,OAAOL,EAAE,GAAGE,MAAM,EAEtB,EACAC,QAAS,SAA8BZ,GACrC,IAAIe,EAAYf,EAAGe,UACnB,GAAIA,EAAW,CACb,GAAyB,iBAAdA,EACT,OAAOA,EAAUC,MAAM,MAClB,GAAyB,iBAAdD,GAA0B,YAAaA,EAGvD,OAAOA,EAAUE,QAAQD,MAAM,KAEnC,CACF,IAIF,IA0BIE,EA1BAC,EAAQ,mCACZxC,EAAYmB,UAAUb,QAAQqB,KAAK,CACjCC,KAAM,MACNN,SAAU,SAA0BO,GAClC,IAAIC,EACJ,GAAKA,EAAID,EAAIE,MAAMS,GACjB,OAAOV,EAAE,GAAGW,aAEhB,EACAR,QAAS,SAA2BZ,GAClC,MAAO,CAACA,EAAGqB,SAASD,cACtB,IAIFzC,EAAYmB,UAAUb,QAAiB,QAAI,CACzCsB,KAAM,YACNN,SAAU,WACR,OAAO,CACT,EACAW,QAAS,WACP,MAAO,EAAC,EACV,GAMAM,EADwB,mBAAf5B,OAAO4B,IACV5B,OAAO4B,IAEP,WACJ,SAASA,IACPtC,KAAK0C,IAAM,CAAC,CACd,CAOA,OANAJ,EAAIpB,UAAUyB,IAAM,SAASC,GAC3B,OAAO5C,KAAK0C,IAAIE,EAAM,IACxB,EACAN,EAAIpB,UAAU2B,IAAM,SAASD,EAAKE,GAChC9C,KAAK0C,IAAIE,EAAM,KAAOE,CACxB,EACOR,CACR,CAXK,GAiBR,IAAIS,EAAU,sIAOd,SAASC,EAAqBC,EAAY5B,GAGxC,IACE6B,EACAC,EACAtB,EACAuB,EAEAR,EACAS,EAPEC,GAFJL,EAAaA,EAAWlB,MAAM,GAAGwB,OAAON,EAAoB,UAE7BO,OAK7BC,EAAOpC,EAGPhB,EAAU,GAEZ,GAEE,GADA0C,EAAQW,KAAK,KACR7B,EAAIkB,EAAQW,KAAKD,MACpBA,EAAO5B,EAAE,GACLA,EAAE,KAAO4B,GACX,IAAKP,EAAI,EAAGA,EAAII,EAAeJ,IAE7B,GAAKN,GADLS,EAAQJ,EAAWC,IACF7B,SAASQ,EAAE,IAAM,CAGhC,IAFAsB,EAAI9C,EAAQmD,OACZJ,GAAM,EACCD,KACL,GAAI9C,EAAQ8C,GAAGE,QAAUA,GAAShD,EAAQ8C,GAAGP,MAAQA,EAAK,CACxDQ,GAAM,EACN,KACF,CAEGA,GACH/C,EAAQqB,KAAK,CAAE2B,MAAOA,EAAOT,IAAKA,IAEpC,KACF,QAICf,GAET,OAAOxB,CACT,CAQA,SAASsD,EAAgBC,EAAKC,GAC5B,IAAIX,EAAGY,EAAKC,EACZ,IAAKb,EAAI,EAAGY,EAAMF,EAAIJ,OAAQN,EAAIY,EAAKZ,IAErC,GADAa,EAAOH,EAAIV,GACPW,EAAMG,cAAcD,GACtB,OAAOA,CAGb,CA2IA,SAASE,EAASC,EAAGC,GACnB,OAAOD,EAAEjC,GAAKkC,EAAElC,EAClB,CA/HAlC,EAAYmB,UAAUkD,oBAAsB,WAAY,EAQxDrE,EAAYmB,UAAUmD,IAAM,SAAShD,EAAUiD,GAC7C,IAAIC,EACFrB,EACAsB,EACA5B,EACAS,EACAoB,EACAC,EACAC,EACAtE,EAAUL,KAAKQ,cACfL,EAAYH,KAAKG,UACjBC,EAAkBJ,KAAKI,gBAEzB,GAAwB,iBAAbiB,EAAX,CAYA,IAHAjB,GALAmE,EAAM,CACJtC,GAAIjC,KAAKE,MACTmB,SAAUA,EACViD,KAAMA,IAEYrC,IAAMsC,EAE1BG,EAAkB1B,EAAqBhD,KAAKK,QAASgB,GAChD6B,EAAI,EAAGA,EAAIwB,EAAgBlB,OAAQN,IAEtCN,GADA+B,EAAgBD,EAAgBxB,IACZN,KAGpBS,EAAQM,EAAgBtD,EAFxBmE,EAAaG,EAActB,WAIzBA,EAAQ/C,OAAOC,OAAOiE,IAChB9B,IAAM,IAAIJ,EAChBjC,EAAQqB,KAAK2B,IAGXmB,IAAexE,KAAKK,QAAiB,SACvCL,KAAKoE,oBAAoBG,IAE3BE,EAAOpB,EAAMX,IAAIC,IAAIC,MAEnB6B,EAAO,GACPpB,EAAMX,IAAIG,IAAID,EAAK6B,IAErBA,EAAK/C,KAAK6C,GAGZvE,KAAKC,OACLE,EAAUuB,KAAKL,EAlCf,CAmCF,EAQAtB,EAAYmB,UAAU0D,OAAS,SAASvD,EAAUiD,GAChD,GAAwB,iBAAbjD,EAAX,CAIA,IAAIqD,EACFC,EACAzB,EACAC,EACA0B,EACAC,EACAL,EACAF,EACAlE,EAAUL,KAAKQ,cACfL,EAAaH,KAAKG,UAAY,GAC9BC,EAAkBJ,KAAKI,gBACvB2E,EAAa,CAAC,EACdC,EAAiC,IAArBC,UAAUzB,OAGxB,IADAkB,EAAkB1B,EAAqBhD,KAAKK,QAASgB,GAChD6B,EAAI,EAAGA,EAAIwB,EAAgBlB,OAAQN,IAItC,IAHAyB,EAAgBD,EAAgBxB,GAEhCC,EAAI9C,EAAQmD,OACLL,KAEL,GADA2B,EAAWzE,EAAQ8C,GACfwB,EAActB,MAAMW,cAAcc,GAAW,CAE/C,GADAL,EAAOK,EAASpC,IAAIC,IAAIgC,EAAc/B,KAGpC,IADAiC,EAAIJ,EAAKjB,OACFqB,MACLN,EAAME,EAAKI,IACHxD,WAAaA,IAAa2D,GAAaT,EAAID,OAASA,IAC1DG,EAAKS,OAAOL,EAAG,GACfE,EAAWR,EAAItC,KAAM,GAI3B,KACF,CAIJ,IAAKiB,KAAK6B,SACD3E,EAAgB8C,GACvBlD,KAAKC,OAGP,IAAKiD,KAAK9C,EACRD,EAAUuB,KAAKtB,EAAgB8C,GAAG7B,SA9CpC,CAgDF,EAiBAtB,EAAYmB,UAAUiE,SAAW,SAAS3D,GACxC,IAAKxB,KAAKG,UAAUqD,OAClB,MAAO,GAGT,IAIIN,EAAGC,EAAGW,EAAKsB,EAAMhE,EAAIS,EAAGC,EAAOyC,EAJ/B1D,EAAU,CAAC,EACbwE,EAAU,GACRC,EAAMtF,KAAKuB,iBAAiBvB,KAAKG,UAAUoF,KAAK,MAAO/D,GAG3D,IAAK0B,EAAI,EAAGY,EAAMwB,EAAI9B,OAAQN,EAAIY,EAAKZ,IAGrC,IAFA9B,EAAKkE,EAAIpC,GAEJC,EAAI,EAAGiC,GADZvD,EAAI7B,KAAKa,QAAQO,IACIoC,OAAQL,EAAIiC,EAAMjC,IAEhCtC,GADL0D,EAAM1C,EAAEsB,IACSlB,IAUfH,EAAQjB,EAAQ0D,EAAItC,KATpBH,EAAQ,CACNG,GAAIsC,EAAItC,GACRZ,SAAUkD,EAAIlD,SACdiD,KAAMC,EAAID,KACVkB,SAAU,IAEZ3E,EAAQ0D,EAAItC,IAAMH,EAClBuD,EAAQ3D,KAAKI,IAIfA,EAAM0D,SAAS9D,KAAKN,GAIxB,OAAOiE,EAAQI,KAAKxB,EACtB,EAOAlE,EAAYmB,UAAUL,QAAU,SAASO,GACvC,IAAKA,EACH,MAAO,GAGT,IAAI8B,EAAGC,EAAG0B,EAAGf,EAAKsB,EAAMM,EAAMrC,EAAOsC,EAAMlB,EAAMF,EAAKtC,EAClD5B,EAAUL,KAAKQ,cACjBoF,EAAa,CAAC,EACd/E,EAAU,GAEZ,IAAKqC,EAAI,EAAGY,EAAMzD,EAAQmD,OAAQN,EAAIY,EAAKZ,IAGzC,GADAyC,GADAtC,EAAQhD,EAAQ6C,IACHlB,QAAQZ,GAEnB,IAAK+B,EAAI,EAAGiC,EAAOO,EAAKnC,OAAQL,EAAIiC,EAAMjC,IACxC,GAAKsB,EAAOpB,EAAMX,IAAIC,IAAIgD,EAAKxC,IAC7B,IAAK0B,EAAI,EAAGa,EAAOjB,EAAKjB,OAAQqB,EAAIa,EAAMb,KAGnCe,EADL3D,GADAsC,EAAME,EAAKI,IACF5C,KACcjC,KAAKmB,gBAAgBC,EAAImD,EAAIlD,YAClDuE,EAAW3D,IAAM,EACjBpB,EAAQa,KAAK6C,IAQzB,OAAO1D,EAAQ4E,KAAKxB,EACtB,ECpbA,IAAI4B,EAAe,CAAC,EAChBC,EAAgB,CAAC,EACjBC,EAAqB,IAAIC,QACzBC,EAA8B,IAAID,QAClCE,EAAiB,IAAIF,QACrBG,EAAoB7F,OAAO8F,yBAAyBC,MAAMnF,UAAW,iBAEzE,SAASoF,EAAOC,EAASC,EAAMC,GAC7B,IAAIC,EAASH,EAAQC,GAOrB,OALAD,EAAQC,GAAQ,WAEd,OADAC,EAAGE,MAAMJ,EAAStB,WACXyB,EAAOC,MAAMJ,EAAStB,UAC/B,EAEOsB,CACT,CA4BA,SAASK,IACPb,EAAmBlD,IAAI7C,MAAM,EAC/B,CAEA,SAAS6G,IACPd,EAAmBlD,IAAI7C,MAAM,GAC7BiG,EAA4BpD,IAAI7C,MAAM,EACxC,CAEA,SAAS8G,IACP,OAAOZ,EAAevD,IAAI3C,OAAS,IACrC,CAEA,SAAS+G,EAAoBC,EAAOC,GAC7Bd,GACL7F,OAAO4G,eAAeF,EAAO,gBAAiB,CAC5CG,cAAc,EACdC,YAAY,EACZzE,IAAKsE,GAAUd,EAAkBxD,KAErC,CAWA,SAAS0E,EAASL,GAChB,GAVF,SAAqBA,GACnB,IAEE,OADAA,EAAMM,YACC,CACT,CAAE,MAAOC,GACP,OAAO,CACT,CACF,CAGOC,CAAYR,GAAjB,CACA,IACI7G,GAD8B,IAArB6G,EAAMM,WAAmBxB,EAAgBD,GAC/BmB,EAAMS,MAC7B,GAAKtH,EAAL,CACA,IAAIuH,EA9DN,SAAiBvH,EAAWwH,EAAQC,GAClC,IAAIF,EAAQ,GACRG,EAAOF,EAEX,EAAG,CACD,GAAsB,IAAlBE,EAAKC,SAAgB,MAEzB,IAAIC,EAAW5H,EAAUU,QAAQgH,GAEjC,GAAIE,EAASvE,OAAQ,CACnB,IAAIwE,EAAU,CACZH,KAAMA,EACNI,UAAWF,GAGTH,EACFF,EAAMQ,QAAQF,GAEdN,EAAMhG,KAAKsG,EAEf,CACF,OAASH,EAAOA,EAAKM,eAErB,OAAOT,CACT,CAsCc,CAAQvH,EAAW6G,EAAMW,OAA6B,IAArBX,EAAMM,YACnD,GAAKI,EAAMlE,OAAX,CACA8C,EAAOU,EAAO,kBAAmBJ,GACjCN,EAAOU,EAAO,2BAA4BH,GAC1CE,EAAoBC,EAAOF,GAE3B,IAAK,IAAI5D,EAAI,EAAGkF,EAAOV,EAAMlE,OAAQN,EAAIkF,IACnCrC,EAAmBpD,IAAIqE,GADkB9D,IAAK,CAElD,IAAI8E,EAAUN,EAAMxE,GACpBgD,EAAerD,IAAImE,EAAOgB,EAAQH,MAElC,IAAK,IAAI1E,EAAI,EAAGiC,EAAO4C,EAAQC,UAAUzE,OAAQL,EAAIiC,IAC/Ca,EAA4BtD,IAAIqE,GADqB7D,IAEzD6E,EAAQC,UAAU9E,GAAGmB,KAAKhD,KAAK0G,EAAQH,KAAMb,EAEjD,CAEAd,EAAuB,OAAEc,GACzBD,EAAoBC,EAjBK,CAFH,CAHS,CAuBjC,CAEA,SAASqB,EAAG1G,EAAMN,EAAUoF,GAC1B,IACI6B,KADUrD,UAAUzB,OAAS,QAAsB+E,IAAjBtD,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC7DqD,QAClBE,EAASF,EAAUxC,EAAgBD,EACnC1F,EAAYqI,EAAO7G,GAElBxB,IACHA,EAAY,IAAIJ,EAChByI,EAAO7G,GAAQxB,EACfQ,SAAS8H,iBAAiB9G,EAAM0F,EAAUiB,IAG5CnI,EAAUkE,IAAIhD,EAAUoF,EAC1B,CACA,SAASiC,EAAI/G,EAAMN,EAAUoF,GAC3B,IACI6B,KADUrD,UAAUzB,OAAS,QAAsB+E,IAAjBtD,UAAU,GAAmBA,UAAU,GAAK,CAAC,GAC7DqD,QAClBE,EAASF,EAAUxC,EAAgBD,EACnC1F,EAAYqI,EAAO7G,GAClBxB,IACLA,EAAUyE,OAAOvD,EAAUoF,GACvBtG,EAAUF,cACPuI,EAAO7G,GACdhB,SAASgI,oBAAoBhH,EAAM0F,EAAUiB,IAC/C,CACA,SAASM,EAAKjB,EAAQhG,EAAMkH,GAC1B,OAAOlB,EAAOmB,cAAc,IAAIC,YAAYpH,EAAM,CAChDqH,SAAS,EACTC,YAAY,EACZJ,OAAQA,IAEZ,C,mBCrImEK,EAAOC,QAGjE,WAAe,aAEpB,SAASC,IACL,OAAOC,KAAKC,SAASC,SAAS,IAAIC,UAAU,EAAG,GACnD,CAwBA,SAASC,EAASC,EAAMC,EAAO,GAAIC,GAAY,GAC3C,IAAIC,EACJ,OAAO,YAAaC,GAChB,MAAMtI,EAAUuI,KAOVC,EAAUJ,IAAcC,EAC9BI,aAAaJ,GACbA,EAAUK,YARI,KACVL,EAAU,KACLD,GACDF,EAAK/C,MAAMnF,EAASsI,EACxB,GAIwBH,GACxBK,GACAN,EAAK/C,MAAMnF,EAASsI,EAE5B,CACJ,CACA,SAASK,EAAQjG,EAAGC,GAChB,OAAOiG,KAAKC,UAAUnG,KAAOkG,KAAKC,UAAUlG,EAChD,CAMA,MAAMmG,EACF,WAAAC,CAAYC,GAOR,GANAxK,KAAKiC,GAAMuI,EAASvI,IAAsB,KAAhBuI,EAASvI,GAA2BuI,EAASvI,GAAxBmH,IAC/CpJ,KAAKyK,MAAQD,EAASC,OAAS,GAC/BzK,KAAK0K,eAAmCnC,IAAvBiC,EAASE,WAAkCF,EAASE,UACrE1K,KAAK2K,cAAgBH,EAASG,eAAiB,aAC/C3K,KAAK4K,SAAWJ,EAASI,UAAY,MACrC5K,KAAK6K,QAAU,GACXL,EAASK,QACT,IAAK,MAAMC,KAAKN,EAASK,QACrB7K,KAAK6K,QAAQnJ,KAAK,IAAIqJ,EAAOD,GAGzC,EAEJ,MAAMC,EACF,WAAAR,CAAYS,GACRhL,KAAKiC,GAAM+I,EAAO/I,IAAoB,KAAd+I,EAAO/I,GAA2B+I,EAAO/I,GAAtBmH,IAC3CpJ,KAAK8C,WAAyByF,IAAjByC,EAAOlI,MAAsBkI,EAAOC,KAAOD,EAAOlI,MAC/D9C,KAAKiL,KAAOD,EAAOC,MAAQ,GAC3BjL,KAAKkL,KAAOF,EAAOE,MAAQ,GAC3BlL,KAAKmL,cAA+B5C,IAApByC,EAAOG,UAAyBH,EAAOG,SACvDnL,KAAKoL,aAA6B7C,IAAnByC,EAAOI,SAAwBJ,EAAOI,QACrDpL,KAAKqL,cAA+B9C,IAApByC,EAAOK,UAAyBL,EAAOK,SACvDrL,KAAKsL,eAAiC/C,IAArByC,EAAOM,WAA0BN,EAAOM,UACzDtL,KAAKuL,iBAAqChD,IAAvByC,EAAOO,aAA4BP,EAAOO,YAC7DvL,KAAKwL,MAAQR,EAAOQ,OAAS,GAC7BxL,KAAKyL,MAAQT,EAAOS,OAAS,GAC7BzL,KAAKsE,KAAO0G,EAAO1G,MAAQ,CAAC,CAChC,EAEJ,MAAMoH,EACF,WAAAnB,CAAY9C,EAAMnD,GACdtE,KAAK2L,WAAa,SAClB3L,KAAKsE,KAAO,GACZtE,KAAK2L,WAAalE,EAClBzH,KAAK4L,QAAQtH,EACjB,CACA,iBAAAuH,CAAkBvH,GACd,IAAKwH,MAAMC,QAAQzH,GACf,OAAO,IAAI0H,MAAM,yBAErB,IAAK,IAAIC,KAAW3H,EAAM,CACtB,KAAI2H,aAAmB3B,GAAY,UAAW2B,GAUzC,OAAIA,aAAmBlB,GAAU,SAAUkB,EACrCjM,KAAKkM,eAAeD,GAGpB,IAAID,MAAM,kDAbjB,KAAM,UAAWC,GACb,OAAO,IAAID,MAAM,8BAErB,GAAI,YAAaC,GAAWA,EAAQpB,QAChC,IAAK,IAAIG,KAAUiB,EAAQpB,QACvB,OAAO7K,KAAKkM,eAAelB,EAU3C,CACA,OAAO,IACX,CACA,cAAAkB,CAAelB,GACX,MAAM,SAAUA,EAGT,KAFI,IAAIgB,MAAM,0BAGzB,CACA,iBAAAG,CAAkB7H,GACd,IAAI8H,EAAY,GAiBhB,OAhBA9H,EAAK+H,SAASJ,IACV,GAAIA,aAAmB3B,GAAY,UAAW2B,EAAS,CACnD,IAAIK,EAAa,GACb,YAAaL,GAAWA,EAAQpB,SAChCoB,EAAQpB,QAAQwB,SAASrB,IACrBsB,EAAW5K,KAAK,IAAIqJ,EAAOC,GAAQ,IAGvCsB,EAAW9I,OAAS,GACpB4I,EAAU1K,KAAK,IAAI4I,EAAS2B,GAEpC,EACIA,aAAmBlB,GAAU,SAAUkB,IACvCG,EAAU1K,KAAK,IAAIqJ,EAAOkB,GAC9B,IAEGG,CACX,CACA,OAAAR,CAAQtH,GACJtE,KAAKsE,KAAOtE,KAAKmM,kBAAkB7H,GACX,WAApBtE,KAAK2L,YACL3L,KAAKuM,cAAc,QAASvM,KAAKwM,cAEzC,CACA,OAAAC,GACI,OAAOzM,KAAK0M,OAAO,MAAM,EAC7B,CACA,cAAAC,GACI,OAAO3M,KAAK0M,OAAO,MAAM,EAC7B,CACA,SAAAE,CAAU5B,GACNhL,KAAK4L,QAAQ5L,KAAKyM,UAAUlJ,OAAO,IAAIwH,EAAOC,IAClD,CACA,aAAAuB,CAAcM,EAAcC,GACxB,IAAIC,EAAc,KACdC,GAAc,EAClB,IAAK,IAAIf,KAAWjM,KAAKsE,KAAM,CAC3B,GAAI2H,aAAmB3B,EACnB,IAAK,IAAIU,KAAUiB,EAAQpB,QAClBkC,IACDA,EAAc/B,GAElBA,EAAOG,UAAW6B,GAAsBF,EAAeG,SAASjC,EAAO6B,IACnE7B,EAAOG,UAAgC,WAApBnL,KAAK2L,aACxBqB,GAAc,GAItBf,aAAmBlB,IACdgC,IACDA,EAAcd,GAElBA,EAAQd,UAAW6B,GAAsBF,EAAeG,SAAShB,EAAQY,IACrEZ,EAAQd,UAAgC,WAApBnL,KAAK2L,aACzBqB,GAAc,GAG1B,CACwB,WAApBhN,KAAK2L,YAA2BoB,IAAgBC,IAChDD,EAAY5B,UAAW,EAE/B,CACA,WAAAqB,GACI,IAAIU,EAAkBlN,KAAKmN,qBACvBL,EAAiB,GAIrB,OAHAI,EAAgBb,SAASrB,IACrB8B,EAAepL,KAAKsJ,EAAOlI,MAAM,IAE9BgK,CACX,CACA,kBAAAK,GACI,OAAOnN,KAAK0M,QAAQU,GACTA,EAAIjC,WACZ,EACP,CACA,cAAAkC,GACI,IAAIH,EAAkBlN,KAAKmN,qBACvBG,EAAc,GAIlB,OAHAJ,EAAgBb,SAASkB,IACrBD,EAAY5L,KAAK6L,EAAGtL,GAAG,IAEpBqL,CACX,CACA,eAAAE,CAAgBvL,GACZ,IAAK,IAAIgK,KAAWjM,KAAKsE,KACrB,GAAI2H,aAAmB3B,GAAY2B,EAAQhK,KAAOA,EAC9C,OAAOgK,EAGf,OAAO,IACX,CACA,aAAAwB,CAAcxL,GACV,IAAI4I,EAAU7K,KAAK0M,QAAQU,GAChBA,EAAInL,KAAOA,IACnB,GACH,OAAO4I,EAAQrH,OAASqH,EAAQ,GAAK,IACzC,CACA,aAAA6C,GACI,OAAO1N,KAAK2L,UAChB,CACA,cAAAgC,GACI,IAAI3C,EAAS,KACb,IAAK,IAAIiB,KAAWjM,KAAKsE,KAOrB,GANI2H,aAAmB3B,EACnBU,EAASiB,EAAQpB,QAAQ,GAEpBoB,aAAmBlB,IACxBC,EAASiB,GAETjB,EACA,MAGR,OAAOA,CACX,CACA,MAAA4C,CAAOA,EAAQC,GAEX,MAAe,MADfD,EAASA,EAAOE,QAEL9N,KAAKyM,UAETzM,KAAK0M,QAAQU,GACTS,EAAaT,EAAKQ,KAC1B,EACP,CACA,MAAAlB,CAAOA,EAAQqB,GACX,MAAMC,EAAa,GA0BnB,OAzBAhO,KAAKsE,KAAK+H,SAASJ,IACf,GAAIA,aAAmB3B,EAAU,CAC7B,IAAIgC,EAAa,GAWjB,GAVAL,EAAQpB,QAAQwB,SAASrB,IAChB0B,IAAUA,EAAO1B,KACb+C,EAIDzB,EAAW5K,KAAK,IAAIqJ,EAAOC,IAH3BgD,EAAWtM,KAAK,IAAIqJ,EAAOC,IAKnC,IAEAsB,EAAW9I,OAAS,EAAG,CACvB,IAAIgH,EAAW,IAAIF,EAAS2B,GAC5BzB,EAASK,QAAUyB,EACnB0B,EAAWtM,KAAK8I,EACpB,CACJ,CACIyB,aAAmBlB,IACd2B,IAAUA,EAAOT,IAClB+B,EAAWtM,KAAK,IAAIqJ,EAAOkB,IAEnC,IAEG+B,CACX,EAGJ,MAAMC,EACF,WAAA1D,CAAY2D,EAAUC,EAAOC,GACzBpO,KAAKqO,QAAU,CACXC,KAAM,UACN/C,YAAa,iBACbgD,OAAQ,YACRC,OAAQ,YACRC,IAAK,SACL3L,MAAO,WACP4L,UAAW,gBACXC,YAAa,kBACbC,SAAU,eACVC,SAAU,cACVC,aAAc,8BACdC,MAAO,WACPC,WAAY,uBACZC,UAAW,uBACXC,QAAS,aACTC,UAAW,gBACXC,UAAW,gBACXxB,OAAQ,YACRyB,kBAAmB,sBACnBC,UAAW,eACXC,QAAS,aACTC,YAAa,8BACbC,KAAM,UACNjF,SAAU,cACVkF,cAAe,oBACfC,kBAAmB,yBACnBC,gBAAiB,sBACjBC,kBAAmB,eACnBC,qBAAsB,qCACtBC,uBAAwB,uBACxBC,iBAAkB,cAClBhF,OAAQ,YACRiF,aAAc,8BACdC,YAAa,iBACbC,KAAM,UACNC,MAAO,WACPjF,SAAU,cACVkF,MAAO,WACPhF,SAAU,cACViF,KAAM,WAEVtQ,KAAKmO,MAAQA,EACbnO,KAAKkO,SAAWA,EAChBlO,KAAKoO,UAAYA,EACjBpO,KAAKsO,KAAOtO,KAAKuQ,UACjBvQ,KAAKkP,QAAUlP,KAAKwQ,aACpBxQ,KAAKyQ,oBACLzQ,KAAK0Q,uBACL1Q,KAAKkO,SAASyC,gBAAgBC,YAAY5Q,KAAKkP,QAAQZ,KAC3D,CACA,MAAAuC,GACI7Q,KAAKsO,KAAKA,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQhD,UAC7CrL,KAAKkP,QAAQtB,OAAOmD,MAAM1F,UAAW,CACzC,CACA,OAAA2F,GACIhR,KAAKsO,KAAKA,KAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQhD,UAC1CrL,KAAKkP,QAAQtB,OAAOmD,MAAM1F,UAAW,CACzC,CACA,IAAA8E,GACInQ,KAAKsO,KAAKS,MAAMkC,KAAKC,aAAa,IAAKlR,KAAKqO,QAAQY,WACpDjP,KAAKsO,KAAKA,KAAKwC,UAAUzM,IAAmC,OAA/BrE,KAAKkO,SAASiD,aAAwBnR,KAAKqO,QAAQc,UAAYnP,KAAKqO,QAAQe,WACzGpP,KAAKsO,KAAKA,KAAK4C,aAAa,gBAAiB,QAC7ClR,KAAKoR,cACL,MAAMlE,EAAkBlN,KAAKmO,MAAMhB,qBACnC,GAAID,EAAgB1J,OAAQ,CACxB,MAAM6N,EAAanE,EAAgBA,EAAgB1J,OAAS,GAAGvB,GACzDqP,EAAiBtR,KAAKkP,QAAQO,KAAK8B,cAAc,aAAeF,EAAa,MAC/EC,GACAtR,KAAKwR,oBAAoBxR,KAAKkP,QAAQO,KAAM6B,EAEpD,CACJ,CACA,KAAAlB,GACIpQ,KAAKsO,KAAKA,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQc,WAC7CnP,KAAKsO,KAAKA,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQe,WAC7CpP,KAAKsO,KAAKA,KAAK4C,aAAa,gBAAiB,SAC7ClR,KAAKkP,QAAQZ,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQc,WAChDnP,KAAKkP,QAAQZ,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQe,WAChDpP,KAAKsO,KAAKS,MAAMkC,KAAKC,aAAa,IAAKlR,KAAKqO,QAAQW,WACxD,CACA,iBAAAyB,GAWI,GAVAzQ,KAAKsO,KAAKA,KAAKnM,UAAY,GAC3BnC,KAAKsO,KAAKA,KAAKmD,gBAAgB,SAC/BzR,KAAKkP,QAAQZ,KAAKnM,UAAY,GAC9BnC,KAAKkP,QAAQZ,KAAKmD,gBAAgB,SAClCzR,KAAKsO,KAAKA,KAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQC,MAC1CtO,KAAKkP,QAAQZ,KAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQa,SACjB,KAAxBlP,KAAKkO,SAASzC,QACdzL,KAAKsO,KAAKA,KAAK7C,MAAMiG,QAAU1R,KAAKkO,SAASzC,MAC7CzL,KAAKkP,QAAQZ,KAAK7C,MAAMiG,QAAU1R,KAAKkO,SAASzC,OAEhDzL,KAAKkO,SAAS1C,MAAMhI,OACpB,IAAK,MAAMmO,KAAK3R,KAAKkO,SAAS1C,MACT,KAAbmG,EAAE7D,SACF9N,KAAKsO,KAAKA,KAAKwC,UAAUzM,IAAIsN,EAAE7D,QAC/B9N,KAAKkP,QAAQZ,KAAKwC,UAAUzM,IAAIsN,EAAE7D,SAIR,aAAlC9N,KAAKkO,SAAS0D,iBACd5R,KAAKkP,QAAQZ,KAAKwC,UAAUzM,IAAI,MAAQrE,KAAKkO,SAAS0D,gBAE9D,CACA,oBAAAlB,GACI1Q,KAAKsO,KAAKA,KAAKuD,KAAO,WACtB7R,KAAKsO,KAAKA,KAAK4C,aAAa,gBAAiB,WAC7ClR,KAAKsO,KAAKA,KAAK4C,aAAa,gBAAiBlR,KAAKkP,QAAQZ,KAAKrM,IAC/DjC,KAAKsO,KAAKA,KAAK4C,aAAa,gBAAiB,SAC7ClR,KAAKkP,QAAQZ,KAAK4C,aAAa,OAAQ,UAC3C,CACA,OAAAX,GACI,IAAIuB,EACJ,MAAMxD,EAAO3N,SAASoR,cAAc,OACpCzD,EAAK0D,QAAQ/P,GAAKjC,KAAKkO,SAASjM,GAChCqM,EAAK4C,aAAa,aAAclR,KAAKkO,SAAS+D,WAC9C3D,EAAK4D,SAAW,EAChB5D,EAAK6D,UAAaC,IACd,OAAQA,EAAExP,KACN,IAAK,UACL,IAAK,YAGD,OAFA5C,KAAKoO,UAAU+B,OACL,cAAViC,EAAExP,IAAsB5C,KAAKqS,UAAU,QAAUrS,KAAKqS,UAAU,OACzD,EACX,IAAK,MAED,OADArS,KAAKoO,UAAUgC,SACR,EACX,IAAK,QACL,IAAK,IACDpQ,KAAKoO,UAAU+B,OACf,MAAMD,EAAclQ,KAAKkP,QAAQO,KAAK8B,cAAc,IAAMvR,KAAKqO,QAAQ6B,aAIvE,OAHIA,GACAA,EAAYoC,SAET,EACX,IAAK,SAED,OADAtS,KAAKoO,UAAUgC,SACR,EAEf,OAAO,CAAK,EAEhB9B,EAAKiE,QAAWH,IACRpS,KAAKkO,SAAS7C,WAGlBrL,KAAKkO,SAASsE,OAASxS,KAAKoO,UAAUgC,QAAUpQ,KAAKoO,UAAU+B,OAAM,EAEzE,MAAM5B,EAAS5N,SAASoR,cAAc,OACtCxD,EAAOuC,UAAUzM,IAAIrE,KAAKqO,QAAQE,QAClCD,EAAKsC,YAAYrC,GACjB,MAAMM,EAAWlO,SAASoR,cAAc,OACxClD,EAASiC,UAAUzM,IAAIrE,KAAKqO,QAAQQ,UACpC,MAAM3B,EAAwC,QAArB4E,EAAK9R,KAAKmO,aAA0B,IAAP2D,OAAgB,EAASA,EAAG3E,sBAC7EnN,KAAKkO,SAASuE,eAAkBzS,KAAKkO,SAASwE,YAAcxF,GAAmBA,EAAgB1J,QAAU,EAC1GqL,EAASiC,UAAUzM,IAAIrE,KAAKqO,QAAQiC,MAGpCzB,EAASiC,UAAUlM,OAAO5E,KAAKqO,QAAQiC,MAE3CzB,EAAS0D,QAAWH,IAEhB,GADAA,EAAEO,kBACE3S,KAAKkO,SAAS7C,SACd,OAEJ,IAAIuH,GAAe,EACnB,MAAMtM,EAAStG,KAAKmO,MAAMhB,qBAK1B,GAHInN,KAAKoO,UAAUyE,eACfD,GAA8D,IAA/C5S,KAAKoO,UAAUyE,aAFpB,GAEwCvM,IAElDsM,EAAc,CACd,GAAI5S,KAAKkO,SAASwE,WACd1S,KAAKoO,UAAU0E,YAAY,IAAI,GAC/B9S,KAAK+S,wBAEJ,CACD,MAAMhG,EAAc/M,KAAKmO,MAAMR,iBACzB7K,EAAQiK,EAAcA,EAAYjK,MAAQ,GAChD9C,KAAKoO,UAAU0E,YAAYhQ,GAAO,EACtC,CACI9C,KAAKkO,SAAS8E,eACdhT,KAAKoO,UAAUgC,QAEfpQ,KAAKoO,UAAU6E,aACfjT,KAAKoO,UAAU6E,YAAYjT,KAAKmO,MAAMhB,qBAE9C,GAEJ,MAAM+F,EAAcvS,SAASwS,gBAAgB,6BAA8B,OAC3ED,EAAYhC,aAAa,UAAW,eACpC,MAAMpC,EAAenO,SAASwS,gBAAgB,6BAA8B,QAC5ErE,EAAaoC,aAAa,IAAKlR,KAAKqO,QAAQS,cAC5CoE,EAAYtC,YAAY9B,GACxBD,EAAS+B,YAAYsC,GACrB5E,EAAKsC,YAAY/B,GACjB,MAAME,EAAQpO,SAASwS,gBAAgB,6BAA8B,OACrEpE,EAAM+B,UAAUzM,IAAIrE,KAAKqO,QAAQU,OACjCA,EAAMmC,aAAa,UAAW,eAC9B,MAAMkC,EAAYzS,SAASwS,gBAAgB,6BAA8B,QAOzE,OANAC,EAAUlC,aAAa,IAAKlR,KAAKqO,QAAQW,YACrChP,KAAKkO,SAASmF,YACdtE,EAAM+B,UAAUzM,IAAIrE,KAAKqO,QAAQiC,MAErCvB,EAAM6B,YAAYwC,GAClB9E,EAAKsC,YAAY7B,GACV,CACHT,KAAMA,EACNC,OAAQA,EACRM,SAAU,CACNP,KAAMO,EACNyE,IAAKJ,EACLjC,KAAMnC,GAEVC,MAAO,CACHT,KAAMS,EACNkC,KAAMmC,GAGlB,CACA,SAAAG,CAAUC,GACY,UAAdA,GACAxT,KAAKsO,KAAKA,KAAKmF,MAAM,CAAEC,eAAe,GAE9C,CACA,WAAAnI,GACI,MAAMoI,EAAoB3T,KAAKmO,MAAMzB,QAAQ5B,GAAMA,EAAES,cAAa,GAClE,IAAIqI,EAAkB5T,KAAKkO,SAAS0F,gBAChCD,EAAkBnQ,SACgB,KAA9BmQ,EAAkB,GAAGzI,KACrB0I,EAAkBD,EAAkB,GAAGzI,KAEJ,KAA9ByI,EAAkB,GAAG1I,OAC1B2I,EAAkBD,EAAkB,GAAG1I,OAG/C,MAAMM,EAAc5K,SAASoR,cAAc,OAG3C,OAFAxG,EAAYuF,UAAUzM,IAAIrE,KAAKqO,QAAQ9C,aACvCA,EAAYsI,UAAYD,EACjBrI,CACX,CACA,YAAAuI,GACS9T,KAAKkO,SAASwE,YAInB1S,KAAK+T,uBACL/T,KAAK+S,qBAJD/S,KAAKgU,mBAKb,CACA,iBAAAA,GACI,MAAM7I,EAAWnL,KAAKmO,MAAMzB,QAAQ5B,GACzBA,EAAEK,WAAaL,EAAES,cACzB,GACG0I,EAAiB9I,EAAS3H,OAAS,EAAI2H,EAAS,GAAK,KAC3D,GAAK8I,EAGA,CACD,MAAMC,EAAcvT,SAASoR,cAAc,OAC3CmC,EAAYpD,UAAUzM,IAAIrE,KAAKqO,QAAQG,QACnCyF,EAAe/I,KACfgJ,EAAYL,UAAYI,EAAe/I,KAGvCgJ,EAAYC,UAAYF,EAAehJ,KAE3CjL,KAAKsO,KAAKC,OAAOsF,UAAYK,EAAYE,SAC7C,MAZIpU,KAAKsO,KAAKC,OAAOsF,UAAY7T,KAAKuL,cAAc6I,UAa/CpU,KAAKkO,SAASuE,eAAkBtH,EAAS3H,OAI1CxD,KAAKsO,KAAKO,SAASP,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQiC,MAHtDtQ,KAAKsO,KAAKO,SAASP,KAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQiC,KAK3D,CACA,oBAAAyD,GACI,IAAIM,EAAerU,KAAKsO,KAAKC,OAAO+F,WAChCpH,EAAkBlN,KAAKmO,MAAMzB,QAAQU,GAC9BA,EAAIjC,UAAYiC,EAAIhC,UAC5B,GACH,GAA+B,IAA3B8B,EAAgB1J,OAEhB,YADAxD,KAAKsO,KAAKC,OAAOsF,UAAY7T,KAAKuL,cAAc6I,WAG/C,CACD,MAAM7I,EAAcvL,KAAKsO,KAAKC,OAAOgD,cAAc,IAAMvR,KAAKqO,QAAQ9C,aAClEA,GACAA,EAAY3G,QAEpB,CACA,GAAIsI,EAAgB1J,OAASxD,KAAKkO,SAASqG,eAAgB,CACvD,MAAML,EAAcvT,SAASoR,cAAc,OAI3C,OAHAmC,EAAYpD,UAAUzM,IAAIrE,KAAKqO,QAAQI,KACvCyF,EAAYM,YAAcxU,KAAKkO,SAASuG,iBAAiBC,QAAQ,WAAYxH,EAAgB1J,OAAO+F,iBACpGvJ,KAAKsO,KAAKC,OAAOsF,UAAYK,EAAYE,UAE7C,CACK,CACD,MAAMK,EAAmBzU,KAAKsO,KAAKC,OAAOgD,cAAc,IAAMvR,KAAKqO,QAAQI,KACvEgG,GACAA,EAAiB7P,QAEzB,CACA,IAAI+P,EAAc,GAClB,IAAK,IAAIzR,EAAI,EAAGA,EAAImR,EAAa7Q,OAAQN,IAAK,CAC1C,MAAM2E,EAAOwM,EAAanR,GACpBjB,EAAK4F,EAAK+M,aAAa,WACzB3S,IACciL,EAAgBR,QAAQU,GAC3BA,EAAInL,KAAOA,IACnB,GACQuB,QACPmR,EAAYjT,KAAKmG,GAG7B,CACA,IAAK,MAAMgN,KAAKF,EACZE,EAAE/D,UAAUzM,IAAIrE,KAAKqO,QAAQO,UAC7B1E,YAAW,KACHlK,KAAKsO,KAAKC,OAAOuG,iBAAmB9U,KAAKsO,KAAKC,OAAOwG,SAASF,IAC9D7U,KAAKsO,KAAKC,OAAOyG,YAAYH,EACjC,GACD,KAEPR,EAAerU,KAAKsO,KAAKC,OAAO+F,WAChC,IAAK,IAAIW,EAAI,EAAGA,EAAI/H,EAAgB1J,OAAQyR,IAAK,CAC7C,IAAIC,GAAY,EAChB,IAAK,IAAIhS,EAAI,EAAGA,EAAImR,EAAa7Q,OAAQN,IACjCgK,EAAgB+H,GAAGhT,KAAOkT,OAAOd,EAAanR,GAAG8O,QAAQ/P,MACzDiT,GAAY,GAGhBA,IACIlV,KAAKkO,SAASkH,WAIc,IAAxBf,EAAa7Q,OAHjBxD,KAAKsO,KAAKC,OAAOqC,YAAY5Q,KAAKqV,cAAcnI,EAAgB+H,KAMjD,IAANA,EACLjV,KAAKsO,KAAKC,OAAO+G,aAAatV,KAAKqV,cAAcnI,EAAgB+H,IAAKZ,EAAaY,IAGnFZ,EAAaY,EAAI,GAAGM,sBAAsB,WAAYvV,KAAKqV,cAAcnI,EAAgB+H,KAIzG,CACJ,CACA,aAAAI,CAAcrK,GACV,MAAMlI,EAAQnC,SAASoR,cAAc,OACrCjP,EAAMgO,UAAUzM,IAAIrE,KAAKqO,QAAQvL,OACjCA,EAAMkP,QAAQ/P,GAAK+I,EAAO/I,GAC1B,MAAMgJ,EAAOtK,SAASoR,cAAc,OAIpC,GAHA9G,EAAK6F,UAAUzM,IAAIrE,KAAKqO,QAAQK,WAChCzD,EAAKkJ,UAAYnJ,EAAOC,KACxBnI,EAAM8N,YAAY3F,IACbD,EAAOM,UAAW,CACnB,MAAMkK,EAAY7U,SAASoR,cAAc,OACzCyD,EAAU1E,UAAUzM,IAAIrE,KAAKqO,QAAQM,aACrC6G,EAAUjD,QAAWH,IAGjB,GAFAA,EAAEqD,iBACFrD,EAAEO,kBACE3S,KAAKkO,SAAS7C,SACd,OAEJ,IAAIuH,GAAe,EACnB,MAAMtM,EAAStG,KAAKmO,MAAMhB,qBACpBuI,EAAQpP,EAAOoG,QAAQ5B,GAClBA,EAAEK,UAAYL,EAAE7I,KAAO+I,EAAO/I,KACtC,GACH,KAAIjC,KAAKkO,SAASyH,aAAeD,EAAMlS,OAASxD,KAAKkO,SAASyH,eAG1D3V,KAAKoO,UAAUyE,eACfD,GAA8D,IAA/C5S,KAAKoO,UAAUyE,aAAa6C,EAAOpP,IAElDsM,GAAc,CACd,IAAI9F,EAAiB,GACrB,IAAK,MAAMhC,KAAK4K,EAAO,CACnB,GAAI5K,aAAaR,EACb,IAAK,MAAMqH,KAAK7G,EAAED,QACdiC,EAAepL,KAAKiQ,EAAE7O,OAG1BgI,aAAaC,GACb+B,EAAepL,KAAKoJ,EAAEhI,MAE9B,CACA9C,KAAKoO,UAAU0E,YAAYhG,GAAgB,GACvC9M,KAAKkO,SAAS8E,eACdhT,KAAKoO,UAAUgC,QAEfpQ,KAAKoO,UAAU6E,aACfjT,KAAKoO,UAAU6E,YAAYyC,GAE/B1V,KAAK+S,mBACT,GAEJ,MAAM6C,EAAYjV,SAASwS,gBAAgB,6BAA8B,OACzEyC,EAAU1E,aAAa,UAAW,eAClC,MAAM2E,EAAalV,SAASwS,gBAAgB,6BAA8B,QAC1E0C,EAAW3E,aAAa,IAAKlR,KAAKqO,QAAQ4B,cAC1C2F,EAAUhF,YAAYiF,GACtBL,EAAU5E,YAAYgF,GACtB9S,EAAM8N,YAAY4E,EACtB,CACA,OAAO1S,CACX,CACA,UAAA0N,GACI,MAAMlC,EAAO3N,SAASoR,cAAc,OACpCzD,EAAK0D,QAAQ/P,GAAKjC,KAAKkO,SAASjM,GAChC,MAAM2L,EAAS5N,KAAK8V,YACpBxH,EAAKsC,YAAYhD,EAAOU,MACxB,MAAMmB,EAAOzP,KAAK+V,UAElB,OADAzH,EAAKsC,YAAYnB,GACV,CACHnB,KAAMA,EACNV,OAAQA,EACR6B,KAAMA,EAEd,CACA,WAAA2B,GAC0C,aAAlCpR,KAAKkO,SAAS0D,iBAIiB,SAA/B5R,KAAKkO,SAASiD,aAIsB,OAA/BnR,KAAKkO,SAASiD,aAIG,OAAtBnR,KAAKgW,aACLhW,KAAKiW,mBAGLjW,KAAKkW,mBAPLlW,KAAKiW,mBARLjW,KAAKkW,kBAiBb,CACA,SAAAJ,GACI,MAAMxH,EAAO3N,SAASoR,cAAc,OAC9BhB,EAAQpQ,SAASoR,cAAc,SAC/BxC,EAAU5O,SAASoR,cAAc,OACvCzD,EAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQT,QAChC,MAAMuI,EAAe,CACjB7H,OACAyC,SA8CJ,GA5CK/Q,KAAKkO,SAASkI,aACf9H,EAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQiC,MAChCS,EAAMsF,UAAW,GAErBtF,EAAMtJ,KAAO,SACbsJ,EAAMxF,YAAcvL,KAAKkO,SAASoI,kBAClCvF,EAAMmB,UAAY,EAClBnB,EAAMG,aAAa,aAAclR,KAAKkO,SAASoI,mBAC/CvF,EAAMG,aAAa,iBAAkB,OACrCH,EAAMG,aAAa,eAAgB,OACnCH,EAAMG,aAAa,cAAe,OAClCH,EAAMwF,QAAU9M,GAAU2I,IACtBpS,KAAKoO,UAAUR,OAAOwE,EAAEzK,OAAO7E,MAAM,GACtC,KACHiO,EAAMoB,UAAaC,IACf,OAAQA,EAAExP,KACN,IAAK,UACL,IAAK,YAED,MADU,cAAVwP,EAAExP,IAAsB5C,KAAKqS,UAAU,QAAUrS,KAAKqS,UAAU,OACzD,EACX,IAAK,MAED,OADArS,KAAKoO,UAAUgC,SACR,EACX,IAAK,SAED,OADApQ,KAAKoO,UAAUgC,SACR,EACX,IAAK,QACL,IAAK,IACD,GAAIpQ,KAAKoO,UAAUmB,SAAW6C,EAAEoE,QAE5B,OADAjH,EAAQ+C,SACD,EAEN,CACD,MAAMpC,EAAclQ,KAAKkP,QAAQO,KAAK8B,cAAc,IAAMvR,KAAKqO,QAAQ6B,aACvE,GAAIA,EAEA,OADAA,EAAYoC,SACL,CAEf,CACA,OAAO,EAEf,OAAO,CAAI,EAEfhE,EAAKsC,YAAYG,GACb/Q,KAAKoO,UAAUmB,QAAS,CACxBA,EAAQuB,UAAUzM,IAAIrE,KAAKqO,QAAQkB,SACnC,MAAMkH,EAAO9V,SAASwS,gBAAgB,6BAA8B,OACpEsD,EAAKvF,aAAa,UAAW,eAC7B,MAAMwF,EAAW/V,SAASwS,gBAAgB,6BAA8B,QACxEuD,EAASxF,aAAa,IAAKlR,KAAKqO,QAAQmB,aACxCiH,EAAK7F,YAAY8F,GACjBnH,EAAQqB,YAAY6F,GACpBlH,EAAQgD,QAAWH,IAGf,GAFAA,EAAEqD,iBACFrD,EAAEO,mBACG3S,KAAKoO,UAAUmB,QAChB,OAEJ,MAAMoH,EAAa3W,KAAKkP,QAAQtB,OAAOmD,MAAMjO,MAAMgL,OACnD,GAAmB,KAAf6I,EAEA,YADA3W,KAAKkP,QAAQtB,OAAOmD,MAAM0C,QAG9B,MAAMmD,EAAaC,IACf,IAAIC,EAAY,IAAI/L,EAAO8L,GAE3B,GADA7W,KAAKoO,UAAUxB,UAAUkK,GACrB9W,KAAKkO,SAASwE,WAAY,CAC1B,IAAInE,EAASvO,KAAKmO,MAAM3B,cACxB+B,EAAO7M,KAAKoV,EAAUhU,OACtB9C,KAAKoO,UAAU0E,YAAYvE,GAAQ,EACvC,MAEIvO,KAAKoO,UAAU0E,YAAY,CAACgE,EAAUhU,QAAQ,GAElD9C,KAAKoO,UAAUR,OAAO,IAClB5N,KAAKkO,SAAS8E,eACd9I,YAAW,KACPlK,KAAKoO,UAAUgC,OAAO,GACvB,IACP,EAEE2G,EAAe/W,KAAKoO,UAAUmB,QAAQoH,IACvB,IAAjBI,SAA0BA,IAG1BA,aAAwBC,QACxBD,EAAaE,MAAMnU,IAEX8T,EADiB,iBAAV9T,EACG,CACNmI,KAAMnI,EACNA,MAAOA,GAIDA,EACd,IAIJ8T,EAD6B,iBAAjBG,EACF,CACN9L,KAAM8L,EACNjU,MAAOiU,GAIDA,GAER,EAEVzI,EAAKsC,YAAYrB,GACjB4G,EAAa5G,QAAU,CACnBjB,KAAMiB,EACN+D,IAAKmD,EACLxF,KAAMyF,EAEd,CACA,OAAOP,CACX,CACA,WAAAe,GACIlX,KAAKkP,QAAQtB,OAAOmD,MAAM0C,OAC9B,CACA,UAAA0D,CAAWC,GAAiB,EAAOC,GAAc,EAAOC,GAAY,GAChE,IAAIC,EAAQ,IAAMvX,KAAKqO,QAAQrD,OAU/B,OATIoM,IACAG,GAAS,SAAWvX,KAAKqO,QAAQ9C,YAAc,KAE/C8L,IACAE,GAAS,SAAWvX,KAAKqO,QAAQhD,SAAW,KAE5CiM,IACAC,GAAS,SAAWvX,KAAKqO,QAAQiC,KAAO,KAErCxE,MAAM0L,KAAKxX,KAAKkP,QAAQO,KAAKlO,iBAAiBgW,GACzD,CACA,SAAAlF,CAAUoF,GACN,MAAM5M,EAAU7K,KAAKmX,YAAW,GAAM,GAAM,GAC5C,GAAuB,IAAnBtM,EAAQrH,OACR,OAEJ,GAAuB,IAAnBqH,EAAQrH,SACHqH,EAAQ,GAAGiG,UAAUiE,SAAS/U,KAAKqO,QAAQ6B,aAE5C,YADArF,EAAQ,GAAGiG,UAAUzM,IAAIrE,KAAKqO,QAAQ6B,aAI9C,IAAIA,GAAc,EAClB,IAAK,MAAMpF,KAAKD,EACRC,EAAEgG,UAAUiE,SAAS/U,KAAKqO,QAAQ6B,eAClCA,GAAc,GAGtB,IAAKA,EACD,IAAK,MAAMpF,KAAKD,EACZ,GAAIC,EAAEgG,UAAUiE,SAAS/U,KAAKqO,QAAQlD,UAAW,CAC7CL,EAAEgG,UAAUzM,IAAIrE,KAAKqO,QAAQ6B,aAC7B,KACJ,CAGR,IAAK,IAAIhN,EAAI,EAAGA,EAAI2H,EAAQrH,OAAQN,IAChC,GAAI2H,EAAQ3H,GAAG4N,UAAUiE,SAAS/U,KAAKqO,QAAQ6B,aAAc,CACzD,MAAMwH,EAAa7M,EAAQ3H,GAC3BwU,EAAW5G,UAAUlM,OAAO5E,KAAKqO,QAAQ6B,aACzC,MAAMyH,EAAaD,EAAWvP,cAC9B,GAAIwP,GAAcA,EAAW7G,UAAUiE,SAAS/U,KAAKqO,QAAQ8B,MAAO,CAChE,MAAMT,EAAgBiI,EAAWpG,cAAc,IAAMvR,KAAKqO,QAAQqB,eAC9DA,GACAA,EAAc4C,OAEtB,CACA,IAAIsF,EAAe/M,EAAgB,SAAR4M,EAAkBvU,EAAI,EAAI2H,EAAQrH,OAASN,EAAI,EAAI,EAAKA,EAAI,GAAK,EAAIA,EAAI,EAAI2H,EAAQrH,OAAS,GACzHoU,EAAa9G,UAAUzM,IAAIrE,KAAKqO,QAAQ6B,aACxClQ,KAAKwR,oBAAoBxR,KAAKkP,QAAQO,KAAMmI,GAC5C,MAAMC,EAAeD,EAAazP,cAClC,GAAI0P,GAAgBA,EAAa/G,UAAUiE,SAAS/U,KAAKqO,QAAQ+B,OAAQ,CACrE,MAAMV,EAAgBmI,EAAatG,cAAc,IAAMvR,KAAKqO,QAAQqB,eAChEA,GACAA,EAAc4C,OAEtB,CACA,MACJ,CAEJzH,EAAgB,SAAR4M,EAAiB,EAAI5M,EAAQrH,OAAS,GAAGsN,UAAUzM,IAAIrE,KAAKqO,QAAQ6B,aAC5ElQ,KAAKwR,oBAAoBxR,KAAKkP,QAAQO,KAAM5E,EAAgB,SAAR4M,EAAiB,EAAI5M,EAAQrH,OAAS,GAC9F,CACA,OAAAuS,GACI,MAAMlL,EAAUlK,SAASoR,cAAc,OAEvC,OADAlH,EAAQiG,UAAUzM,IAAIrE,KAAKqO,QAAQoB,MAC5B5E,CACX,CACA,WAAAiN,CAAYzH,GACRrQ,KAAKkP,QAAQO,KAAKoE,UAAY,GAC9B,MAAMkE,EAAWpX,SAASoR,cAAc,OACxCgG,EAASjH,UAAUzM,IAAIrE,KAAKqO,QAAQgC,OACpC0H,EAASvD,YAAcnE,EACvBrQ,KAAKkP,QAAQO,KAAKmB,YAAYmH,EAClC,CACA,eAAAC,GACIhY,KAAKkP,QAAQO,KAAKoE,UAAY,GAC9B,MAAMoE,EAAetX,SAASoR,cAAc,OAC5CkG,EAAanH,UAAUzM,IAAIrE,KAAKqO,QAAQiB,WACxC2I,EAAazD,YAAcxU,KAAKkO,SAASgK,cACzClY,KAAKkP,QAAQO,KAAKmB,YAAYqH,EAClC,CACA,aAAAE,CAAc7T,GAEV,GADAtE,KAAKkP,QAAQO,KAAKoE,UAAY,GACV,IAAhBvP,EAAKd,OAAc,CACnB,MAAM4U,EAAYzX,SAASoR,cAAc,OAIzC,OAHAqG,EAAUtH,UAAUzM,IAAIrE,KAAKqO,QAAQT,QACrCwK,EAAUvE,UAAY7T,KAAKkO,SAASmK,gBACpCrY,KAAKkP,QAAQO,KAAKmB,YAAYwH,EAElC,CACA,IAAK,MAAMnD,KAAK3Q,EAAM,CAClB,GAAI2Q,aAAa3K,EAAU,CACvB,MAAMgO,EAAa3X,SAASoR,cAAc,OAC1CuG,EAAWxH,UAAUzM,IAAIrE,KAAKqO,QAAQ7D,UACtC,MAAMkF,EAAgB/O,SAASoR,cAAc,OAC7CrC,EAAcoB,UAAUzM,IAAIrE,KAAKqO,QAAQqB,eACzC4I,EAAW1H,YAAYlB,GACvB,MAAMC,EAAoBhP,SAASoR,cAAc,OACjDpC,EAAkBmB,UAAUzM,IAAIrE,KAAKqO,QAAQsB,mBAC7CA,EAAkB6E,YAAcS,EAAExK,MAClCiF,EAAckB,YAAYjB,GAC1B,MAAMC,EAAkBjP,SAASoR,cAAc,OAG/C,GAFAnC,EAAgBkB,UAAUzM,IAAIrE,KAAKqO,QAAQuB,iBAC3CF,EAAckB,YAAYhB,GACtB5P,KAAKkO,SAASwE,YAAcuC,EAAEvK,UAAW,CACzC,MAAMA,EAAY/J,SAASoR,cAAc,OACzCrH,EAAUoG,UAAUzM,IAAIrE,KAAKqO,QAAQwB,mBACrC,IAAI0I,GAAc,EAClB,IAAK,MAAMzN,KAAKmK,EAAEpK,QACd,IAAKC,EAAEK,SAAU,CACboN,GAAc,EACd,KACJ,CAEAA,GACA7N,EAAUoG,UAAUzM,IAAIrE,KAAKqO,QAAQlD,UAEzC,MAAMR,EAAgBhK,SAASoR,cAAc,QAC7CpH,EAAc6J,YAAcS,EAAEtK,cAC9BD,EAAUkG,YAAYjG,GACtB,MAAM6N,EAAe7X,SAASwS,gBAAgB,6BAA8B,OAC5EqF,EAAatH,aAAa,UAAW,eACrCxG,EAAUkG,YAAY4H,GACtB,MAAMC,EAAe9X,SAASwS,gBAAgB,6BAA8B,QAC5EsF,EAAavH,aAAa,IAAKlR,KAAKqO,QAAQyB,sBAC5C0I,EAAa5H,YAAY6H,GACzB,MAAMC,EAAiB/X,SAASwS,gBAAgB,6BAA8B,QAC9EuF,EAAexH,aAAa,IAAKlR,KAAKqO,QAAQ0B,wBAC9CyI,EAAa5H,YAAY8H,GACzBhO,EAAUjC,iBAAiB,SAAU2J,IACjCA,EAAEqD,iBACFrD,EAAEO,kBACF,MAAMgG,EAAkB3Y,KAAKmO,MAAM3B,cACnC,GAAI+L,EAAJ,CACI,MAAMK,EAAcD,EAAgBjM,QAAQmM,IACxC,IAAK,MAAM/N,KAAKmK,EAAEpK,QACd,GAAIgO,IAAM/N,EAAEhI,MACR,OAAO,EAGf,OAAO,CAAI,IAEf9C,KAAKoO,UAAU0E,YAAY8F,GAAa,EAY5C,KArBA,CAaI,MAAMA,EAAcD,EAAgBpV,OAAO0R,EAAEpK,QAAQnI,KAAKoI,GAAMA,EAAEhI,SAClE,IAAK,MAAMgI,KAAKmK,EAAEpK,QACT7K,KAAKmO,MAAMV,cAAc3C,EAAE7I,KAC5BjC,KAAKoO,UAAUxB,UAAU9B,GAGjC9K,KAAKoO,UAAU0E,YAAY8F,GAAa,EAE5C,KAEJhJ,EAAgBgB,YAAYlG,EAChC,CACA,GAAmB,QAAfuK,EAAErK,SAAoB,CACtB,MAAMoF,EAAmBrP,SAASoR,cAAc,OAChD/B,EAAiBc,UAAUzM,IAAIrE,KAAKqO,QAAQ2B,kBAC5C,MAAM8I,EAAsBnY,SAASwS,gBAAgB,6BAA8B,OACnF2F,EAAoB5H,aAAa,UAAW,eAC5C4H,EAAoBhI,UAAUzM,IAAIrE,KAAKqO,QAAQU,OAC/CiB,EAAiBY,YAAYkI,GAC7B,MAAMC,EAAwBpY,SAASwS,gBAAgB,6BAA8B,QACrF2F,EAAoBlI,YAAYmI,GAC5B9D,EAAEpK,QAAQmO,MAAMlO,GAAMA,EAAEK,YAAwD,KAA3CnL,KAAKkP,QAAQtB,OAAOmD,MAAMjO,MAAMgL,QACrEkC,EAAiBc,UAAUzM,IAAIrE,KAAKqO,QAAQ8B,MAC5C4I,EAAsB7H,aAAa,IAAKlR,KAAKqO,QAAQY,YAEjC,SAAfgG,EAAErK,UACP0N,EAAWxH,UAAUzM,IAAIrE,KAAKqO,QAAQ8B,MACtC4I,EAAsB7H,aAAa,IAAKlR,KAAKqO,QAAQY,YAEjC,UAAfgG,EAAErK,WACP0N,EAAWxH,UAAUzM,IAAIrE,KAAKqO,QAAQ+B,OACtC2I,EAAsB7H,aAAa,IAAKlR,KAAKqO,QAAQW,aAEzDU,EAAcjH,iBAAiB,SAAU2J,IACrCA,EAAEqD,iBACFrD,EAAEO,kBACE2F,EAAWxH,UAAUiE,SAAS/U,KAAKqO,QAAQ+B,QAC3CkI,EAAWxH,UAAUlM,OAAO5E,KAAKqO,QAAQ+B,OACzCkI,EAAWxH,UAAUzM,IAAIrE,KAAKqO,QAAQ8B,MACtC4I,EAAsB7H,aAAa,IAAKlR,KAAKqO,QAAQY,aAGrDqJ,EAAWxH,UAAUlM,OAAO5E,KAAKqO,QAAQ8B,MACzCmI,EAAWxH,UAAUzM,IAAIrE,KAAKqO,QAAQ+B,OACtC2I,EAAsB7H,aAAa,IAAKlR,KAAKqO,QAAQW,YACzD,IAEJY,EAAgBgB,YAAYZ,EAChC,CACAsI,EAAW1H,YAAYlB,GACvB,IAAK,MAAM5E,KAAKmK,EAAEpK,QACdyN,EAAW1H,YAAY5Q,KAAKgL,OAAOF,IAEvC9K,KAAKkP,QAAQO,KAAKmB,YAAY0H,EAClC,CACIrD,aAAalK,GACb/K,KAAKkP,QAAQO,KAAKmB,YAAY5Q,KAAKgL,OAAOiK,GAElD,CACJ,CACA,MAAAjK,CAAOA,GACH,GAAIA,EAAOO,YAAa,CACpB,MAAMA,EAAc5K,SAASoR,cAAc,OAG3C,OAFAxG,EAAYuF,UAAUzM,IAAIrE,KAAKqO,QAAQrD,QACvCO,EAAYuF,UAAUzM,IAAIrE,KAAKqO,QAAQiC,MAChC/E,CACX,CACA,MAAM0N,EAAWtY,SAASoR,cAAc,OAmGxC,OAlGAkH,EAASjH,QAAQ/P,GAAK+I,EAAO/I,GAC7BgX,EAAShX,GAAK+I,EAAO/I,GACrBgX,EAASnI,UAAUzM,IAAIrE,KAAKqO,QAAQrD,QACpCiO,EAAS/H,aAAa,OAAQ,UAC1BlG,EAAOQ,OACPR,EAAOQ,MAAMpJ,MAAM,KAAKiK,SAAS6M,IAC7BD,EAASnI,UAAUzM,IAAI6U,EAAU,IAGrClO,EAAOS,QACPwN,EAASxN,MAAMiG,QAAU1G,EAAOS,OAEhCzL,KAAKkO,SAASiL,iBAA8D,KAA3CnZ,KAAKkP,QAAQtB,OAAOmD,MAAMjO,MAAMgL,OACjEmL,EAASpF,UAAY7T,KAAKoZ,cAA8B,KAAhBpO,EAAOE,KAAcF,EAAOE,KAAOF,EAAOC,KAAMjL,KAAKkP,QAAQtB,OAAOmD,MAAMjO,MAAO9C,KAAKqO,QAAQgB,mBAEjH,KAAhBrE,EAAOE,KACZ+N,EAASpF,UAAY7I,EAAOE,KAG5B+N,EAASzE,YAAcxJ,EAAOC,KAE9BjL,KAAKkO,SAASmL,oBAAsBJ,EAASzE,aAC7CyE,EAAS/H,aAAa,QAAS+H,EAASzE,aAEvCxJ,EAAOI,SACR6N,EAASnI,UAAUzM,IAAIrE,KAAKqO,QAAQiC,MAEpCtF,EAAOK,UACP4N,EAASnI,UAAUzM,IAAIrE,KAAKqO,QAAQhD,UAEpCL,EAAOG,UAAYnL,KAAKkO,SAASoL,cACjCL,EAASnI,UAAUzM,IAAIrE,KAAKqO,QAAQiC,MAEpCtF,EAAOG,UACP8N,EAASnI,UAAUzM,IAAIrE,KAAKqO,QAAQlD,UACpC8N,EAAS/H,aAAa,gBAAiB,QACvClR,KAAKsO,KAAKA,KAAK4C,aAAa,wBAAyB+H,EAAShX,MAG9DgX,EAASnI,UAAUlM,OAAO5E,KAAKqO,QAAQlD,UACvC8N,EAAS/H,aAAa,gBAAiB,UAE3C+H,EAASxQ,iBAAiB,SAAU2J,IAChCA,EAAEqD,iBACFrD,EAAEO,kBACF,MAAMzF,EAAkBlN,KAAKmO,MAAM3B,cAC7BxK,EAAUoQ,EAAEmH,cACZC,EAAYrE,OAAOnT,EAAQgQ,QAAQ/P,IACzC,GAAI+I,EAAOK,UAAaL,EAAOG,WAAanL,KAAKkO,SAASuE,cACtD,OAEJ,GAAKzS,KAAKkO,SAASwE,YAAc1S,KAAKkO,SAASuL,aAAevM,EAAgB1J,SAAWwH,EAAOG,UAC3FnL,KAAKkO,SAASwE,YAAc1S,KAAKkO,SAASyH,aAAezI,EAAgB1J,QAAUwH,EAAOG,SAC3F,OAEJ,IAAIuO,GAAe,EACnB,MAAMpT,EAAStG,KAAKmO,MAAMhB,qBAC1B,IAAIuI,EAAQ,GACR1V,KAAKkO,SAASwE,aAEVgD,EADA1K,EAAOG,SACC7E,EAAOoG,QAAQ5B,GAAMA,EAAE7I,KAAOuX,IAG9BlT,EAAO/C,OAAOyH,IAGzBhL,KAAKkO,SAASwE,aAEXgD,EADA1K,EAAOG,SACC,GAGA,CAACH,IAGZhL,KAAKoO,UAAUyE,eAChB6G,GAAe,GAEf1Z,KAAKoO,UAAUyE,eAEX6G,GAD+C,IAA/C1Z,KAAKoO,UAAUyE,aAAa6C,EAAOpP,IAOvCoT,IACK1Z,KAAKmO,MAAMV,cAAc+L,IAC1BxZ,KAAKoO,UAAUxB,UAAU5B,GAE7BhL,KAAKoO,UAAU0E,YAAY4C,EAAMhT,KAAKoI,GAAMA,EAAEhI,SAAQ,GAClD9C,KAAKkO,SAAS8E,eACdhT,KAAKoO,UAAUgC,QAEfpQ,KAAKoO,UAAU6E,aACfjT,KAAKoO,UAAU6E,YAAYyC,GAEnC,IAEGuD,CACX,CACA,OAAAU,GACI3Z,KAAKsO,KAAKA,KAAK1J,SACf5E,KAAKkP,QAAQZ,KAAK1J,QACtB,CACA,aAAAwU,CAAcQ,EAAKhM,EAAQzL,GACvB,IAAI0X,EAAkBD,EACtB,MAAME,EAAQ,IAAIC,OAAO,IAAMnM,EAAOE,OAAS,sBAAuB,KACtE,IAAK8L,EAAI9X,MAAMgY,GACX,OAAOF,EAEX,MAAMI,EAAqBJ,EAAI9X,MAAMgY,GAAOzW,MACtC4W,EAAmBD,EAAqBJ,EAAI9X,MAAMgY,GAAO,GAAGvQ,WAAW/F,OACvE0W,EAA2BN,EAAIpQ,UAAUwQ,EAAoBC,GAEnE,OADAJ,EAAkBA,EAAgBnF,QAAQoF,EAAO,gBAAgB3X,MAAc+X,YACxEL,CACX,CACA,gBAAA5D,GACI,MAAMkE,EAAana,KAAKsO,KAAKA,KAAK8L,aAC5BC,EAAgBra,KAAKkP,QAAQZ,KAAK8L,aACxCpa,KAAKsO,KAAKA,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQe,WAC7CpP,KAAKsO,KAAKA,KAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQc,WAC1CnP,KAAKkP,QAAQZ,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQe,WAChDpP,KAAKkP,QAAQZ,KAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQc,WAC7C,MAAMmL,EAAgBta,KAAKsO,KAAKA,KAAKiM,wBACrCva,KAAKkP,QAAQZ,KAAK7C,MAAM+O,OAAS,KAAOL,EAAaE,EAAgB,GAAK,iBAC1Era,KAAKkP,QAAQZ,KAAK7C,MAAMgP,IAAMH,EAAcG,IAAMH,EAAcI,OAASha,OAAOia,QAAU,KAC1F3a,KAAKkP,QAAQZ,KAAK7C,MAAMmP,KAAON,EAAcM,KAAOla,OAAOma,QAAU,KACrE7a,KAAKkP,QAAQZ,KAAK7C,MAAMqP,MAAQR,EAAcQ,MAAQ,IAC1D,CACA,gBAAA5E,GACIlW,KAAKsO,KAAKA,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQc,WAC7CnP,KAAKsO,KAAKA,KAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQe,WAC1CpP,KAAKkP,QAAQZ,KAAKwC,UAAUlM,OAAO5E,KAAKqO,QAAQc,WAChDnP,KAAKkP,QAAQZ,KAAKwC,UAAUzM,IAAIrE,KAAKqO,QAAQe,WAC7C,MAAMkL,EAAgBta,KAAKsO,KAAKA,KAAKiM,wBACrCva,KAAKkP,QAAQZ,KAAK7C,MAAM+O,OAAS,mBACK,aAAlCxa,KAAKkO,SAAS0D,kBACd5R,KAAKkP,QAAQZ,KAAK7C,MAAMgP,IAAMH,EAAcG,IAAMH,EAAcI,OAASha,OAAOia,QAAU,KAC1F3a,KAAKkP,QAAQZ,KAAK7C,MAAMmP,KAAON,EAAcM,KAAOla,OAAOma,QAAU,KACrE7a,KAAKkP,QAAQZ,KAAK7C,MAAMqP,MAAQR,EAAcQ,MAAQ,KAE9D,CACA,mBAAAtJ,CAAoBuJ,EAAW/Y,GAC3B,MAAMgZ,EAAOD,EAAUE,UAAYF,EAAUG,UACvCC,EAAUH,EAAOD,EAAUK,aAC3BC,EAAOrZ,EAAQkZ,UACfI,EAAUD,EAAOrZ,EAAQoZ,aAC3BC,EAAOL,EACPD,EAAUE,WAAaD,EAAOK,EAEzBC,EAAUH,IACfJ,EAAUE,WAAaK,EAAUH,EAEzC,CACA,UAAAnF,GACI,MAAMmE,EAAana,KAAKsO,KAAKA,KAAK8L,aAC5BmB,EAAWvb,KAAKsO,KAAKA,KAAKiM,wBAC1BF,EAAgBra,KAAKkP,QAAQZ,KAAK8L,aAExC,OADmB1Z,OAAO8a,aAAeD,EAASd,IAAMN,IACtCE,GACVkB,EAASd,IAAMJ,EACR,KAMR,MACX,CACA,iBAAAtH,GACI,IAAK/S,KAAKmO,QAAUnO,KAAKkO,SACrB,OAEJ,MAAM/C,EAAWnL,KAAKmO,MAAMhB,qBACtBsO,EAAmBtQ,GAAYA,EAAS3H,OAAS,EACjDkP,EAAa1S,KAAKkO,SAASwE,WAC3BD,EAAgBzS,KAAKkO,SAASuE,cAC9BiJ,EAAiB1b,KAAKsO,KAAKO,SAASP,KACpCqN,EAAY3b,KAAKqO,QAAQiC,MAC3BmC,GAAmBC,IAAe+I,EAIlCC,EAAe5K,UAAUzM,IAAIsX,GAH7BD,EAAe5K,UAAUlM,OAAO+W,EAKxC,EAGJ,MAAMC,EACF,WAAArR,CAAYsR,GACR7b,KAAK8b,QAAS,EACd9b,KAAK+b,SAAW,KAChB/b,KAAK6b,OAASA,EACd7b,KAAKgc,YAAchc,KAAKgc,YAAYC,KAAKjc,MACzCA,KAAK6b,OAAOpT,iBAAiB,SAAUzI,KAAKgc,YAAa,CACrDE,SAAS,IAEblc,KAAK+b,SAAW,IAAII,iBAAiBnc,KAAKoc,YAAYH,KAAKjc,OAC3DA,KAAKqc,cAAa,EACtB,CACA,MAAAxL,GACI7Q,KAAK6b,OAAOxQ,UAAW,CAC3B,CACA,OAAA2F,GACIhR,KAAK6b,OAAOxQ,UAAW,CAC3B,CACA,MAAAiR,GACItc,KAAK6b,OAAO3J,UAAY,EACxBlS,KAAK6b,OAAOpQ,MAAML,QAAU,OAC5BpL,KAAK6b,OAAO3K,aAAa,cAAe,OAC5C,CACA,MAAAqL,GACIvc,KAAK6b,OAAOpK,gBAAgB,YAC5BzR,KAAK6b,OAAOpQ,MAAML,QAAU,GAC5BpL,KAAK6b,OAAOpK,gBAAgB,cAChC,CACA,YAAA4K,CAAaP,GACT9b,KAAK8b,OAASA,EACVA,GACI9b,KAAK+b,UACL/b,KAAK+b,SAASS,QAAQxc,KAAK6b,OAAQ,CAC/BY,SAAS,EACTC,WAAW,EACXC,YAAY,IAInBb,GACG9b,KAAK+b,UACL/b,KAAK+b,SAASa,YAG1B,CACA,WAAAZ,CAAYa,GAIR,OAHI7c,KAAK8b,QAAU9b,KAAK8c,eACpB9c,KAAK8c,cAAc9c,KAAK+c,sBAErB,CACX,CACA,WAAAX,CAAYY,GACR,IAAKhd,KAAK8b,OACN,OAEJ,IAAImB,GAAe,EACfC,GAAkB,EAClBC,GAAwB,EAC5B,IAAK,MAAMtb,KAAKmb,EACRnb,EAAE8F,SAAW3H,KAAK6b,SACM,aAApBha,EAAEub,gBACFF,GAAkB,GAEE,UAApBrb,EAAEub,gBACFH,GAAe,IAGG,aAAtBpb,EAAE8F,OAAOlF,UAAiD,WAAtBZ,EAAE8F,OAAOlF,WAC7C0a,GAAwB,GAG5BF,GAAgBjd,KAAKqd,eACrBrd,KAAKqd,cAAcrd,KAAK6b,OAAO1Z,UAAUC,MAAM,MAE/C8a,GAAmBld,KAAKsd,mBACxBtd,KAAKqc,cAAa,GAClBrc,KAAKsd,iBAAiBtd,KAAK6b,OAAOxQ,UAClCrL,KAAKqc,cAAa,IAElBc,GAAyBnd,KAAKud,kBAC9Bvd,KAAKqc,cAAa,GAClBrc,KAAKud,gBAAgBvd,KAAKyM,WAC1BzM,KAAKqc,cAAa,GAE1B,CACA,OAAA5P,GACI,IAAInI,EAAO,GACX,MAAMkZ,EAAQxd,KAAK6b,OAAOvH,WAC1B,IAAK,MAAMO,KAAK2I,EACO,aAAf3I,EAAEpS,UACF6B,EAAK5C,KAAK1B,KAAKyd,oBAAoB5I,IAEpB,WAAfA,EAAEpS,UACF6B,EAAK5C,KAAK1B,KAAK0d,kBAAkB7I,IAGzC,OAAOvQ,CACX,CACA,mBAAAmZ,CAAoBjT,GAChB,IAAIlG,EAAO,CACPrC,GAAIuI,EAASvI,GACbwI,MAAOD,EAASC,MAChBC,YAAWF,EAASwH,SAAyC,SAA/BxH,EAASwH,QAAQ2L,UAC/ChT,cAAeH,EAASwH,QAAUxH,EAASwH,QAAQ4L,cAAgB,aACnEhT,SAAUJ,EAASwH,QAAUxH,EAASwH,QAAQpH,SAAW,MACzDC,QAAS,IAEb,MAAMA,EAAUL,EAAS8J,WACzB,IAAK,MAAMxJ,KAAKD,EACO,WAAfC,EAAErI,UACF6B,EAAKuG,QAAQnJ,KAAK1B,KAAK0d,kBAAkB5S,IAGjD,OAAOxG,CACX,CACA,iBAAAoZ,CAAkB1S,GACd,MAAO,CACH/I,GAAI+I,EAAO/I,GACXa,MAAOkI,EAAOlI,MACdmI,KAAMD,EAAOC,KACbC,KAAMF,EAAOgH,SAAWhH,EAAOgH,QAAQ9G,KAAOF,EAAOgH,QAAQ9G,KAAO,GACpEC,SAAUH,EAAOG,SACjBC,QAAkC,SAAzBJ,EAAOS,MAAML,QACtBC,SAAUL,EAAOK,SACjBC,YAAWN,EAAOgH,SAAuC,SAA7BhH,EAAOgH,QAAQ1G,UAC3CC,YAA4C,SAA/BP,EAAOgH,QAAQzG,YAC5BC,MAAOR,EAAO7I,UACdsJ,MAAOT,EAAOS,MAAMiG,QACpBpN,KAAM0G,EAAOgH,QAErB,CACA,iBAAA+K,GACI,IAAIxO,EAAS,GACb,MAAM1D,EAAU7K,KAAK6b,OAAOvH,WAC5B,IAAK,MAAMxJ,KAAKD,EAAS,CACrB,GAAmB,aAAfC,EAAErI,SAAyB,CAC3B,MAAMob,EAAkB/S,EAAEwJ,WAC1B,IAAK,MAAMuC,KAAMgH,EACb,GAAoB,WAAhBhH,EAAGpU,SAAuB,CAC1B,MAAMuI,EAAS6L,EACX7L,EAAOG,UACPoD,EAAO7M,KAAKsJ,EAAOlI,MAE3B,CAER,CACA,GAAmB,WAAfgI,EAAErI,SAAuB,CACzB,MAAMuI,EAASF,EACXE,EAAOG,UACPoD,EAAO7M,KAAKsJ,EAAOlI,MAE3B,CACJ,CACA,OAAOyL,CACX,CACA,WAAAuE,CAAYhQ,GACR9C,KAAKqc,cAAa,GAClB,MAAMxR,EAAU7K,KAAK6b,OAAOvH,WAC5B,IAAK,MAAMxJ,KAAKD,EAAS,CACrB,GAAmB,aAAfC,EAAErI,SAAyB,CAC3B,MACMob,EADW/S,EACgBwJ,WACjC,IAAK,MAAMuC,KAAMgH,EACb,GAAoB,WAAhBhH,EAAGpU,SAAuB,CAC1B,MAAMuI,EAAS6L,EACf7L,EAAOG,SAAWrI,EAAMmK,SAASjC,EAAOlI,MAC5C,CAER,CACA,GAAmB,WAAfgI,EAAErI,SAAuB,CACzB,MAAMuI,EAASF,EACfE,EAAOG,SAAWrI,EAAMmK,SAASjC,EAAOlI,MAC5C,CACJ,CACA9C,KAAKqc,cAAa,EACtB,CACA,YAAAyB,CAAa7b,EAAIwJ,EAAO4C,GACpBrO,KAAKqc,cAAa,GACdpa,IACAjC,KAAK6b,OAAO7J,QAAQ/P,GAAKA,GAEzBwJ,IACAzL,KAAK6b,OAAOpQ,MAAMiG,QAAUjG,GAE5B4C,IACArO,KAAK6b,OAAO1Z,UAAY,GACxBkM,EAAQhC,SAASsF,IACI,KAAbA,EAAE7D,QACF9N,KAAK6b,OAAO/K,UAAUzM,IAAIsN,EAAE7D,OAChC,KAGR9N,KAAKqc,cAAa,EACtB,CACA,aAAA0B,CAAczZ,GACVtE,KAAKqc,cAAa,GAClBrc,KAAK6b,OAAOhI,UAAY,GACxB,IAAK,MAAMoB,KAAK3Q,EACR2Q,aAAa3K,GACbtK,KAAK6b,OAAOjL,YAAY5Q,KAAKge,eAAe/I,IAE5CA,aAAalK,GACb/K,KAAK6b,OAAOjL,YAAY5Q,KAAKie,aAAahJ,IAGlDjV,KAAK6b,OAAO/S,cAAc,IAAIzC,MAAM,WACpCrG,KAAKqc,cAAa,EACtB,CACA,cAAA2B,CAAexT,GACX,MAAM8N,EAAa3X,SAASoR,cAAc,YAS1C,GARAuG,EAAWrW,GAAKuI,EAASvI,GACzBqW,EAAW7N,MAAQD,EAASC,MACxBD,EAASE,YACT4N,EAAWtG,QAAQtH,UAAY,QAET,QAAtBF,EAASI,WACT0N,EAAWtG,QAAQpH,SAAWJ,EAASI,UAEvCJ,EAASK,QACT,IAAK,MAAMC,KAAKN,EAASK,QACrByN,EAAW1H,YAAY5Q,KAAKie,aAAanT,IAGjD,OAAOwN,CACX,CACA,YAAA2F,CAAaC,GACT,MAAMjF,EAAWtY,SAASoR,cAAc,UAgCxC,OA/BAkH,EAAShX,GAAKic,EAAKjc,GACnBgX,EAASnW,MAAQob,EAAKpb,MACtBmW,EAASpF,UAAYqK,EAAKjT,KACR,KAAdiT,EAAKhT,MACL+N,EAAS/H,aAAa,YAAagN,EAAKhT,MAExCgT,EAAK/S,WACL8N,EAAS9N,SAAW+S,EAAK/S,UAEzB+S,EAAK7S,WACL4N,EAAS5N,UAAW,IAEH,IAAjB6S,EAAK9S,UACL6N,EAASxN,MAAML,QAAU,QAEzB8S,EAAK3S,aACL0N,EAAS/H,aAAa,mBAAoB,QAE1CgN,EAAK5S,WACL2N,EAAS/H,aAAa,iBAAkB,QAExCgN,EAAK1S,OACL0S,EAAK1S,MAAMpJ,MAAM,KAAKiK,SAAS8R,IAC3BlF,EAASnI,UAAUzM,IAAI8Z,EAAY,IAGvCD,EAAK5Z,MAA6B,iBAAd4Z,EAAK5Z,MACzBhE,OAAOqF,KAAKuY,EAAK5Z,MAAM+H,SAASzJ,IAC5BqW,EAAS/H,aAAa,QAx7CtC,SAAmB0I,GACf,MAAMwE,EAASxE,EAAIlF,QAAQ,oCAAqC5S,GAAU,IAAMA,EAAMuc,gBACtF,OAAOzE,EAAI,KAAOA,EAAI,GAAGpX,cAAgB4b,EAAO5U,UAAU,GAAK4U,CACnE,CAq7CgDE,CAAU1b,GAAMsb,EAAK5Z,KAAK1B,GAAK,IAGhEqW,CACX,CACA,OAAAU,GACI3Z,KAAKqc,cAAa,GAClBrc,KAAK6b,OAAOlT,oBAAoB,SAAU3I,KAAKgc,aAC3Chc,KAAK+b,WACL/b,KAAK+b,SAASa,aACd5c,KAAK+b,SAAW,aAEb/b,KAAK6b,OAAO7J,QAAQ/P,GAC3BjC,KAAKuc,QACT,EAGJ,MAAMgC,EACF,WAAAhU,CAAY2D,GACRlO,KAAKiC,GAAK,GACVjC,KAAKyL,MAAQ,GACbzL,KAAKwL,MAAQ,GACbxL,KAAK0S,YAAa,EAClB1S,KAAKwS,QAAS,EACdxS,KAAKwe,YAAa,EAClBxe,KAAKye,aAAe,KACfvQ,IACDA,EAAW,CAAC,GAEhBlO,KAAKiC,GAAK,MAAQmH,IAClBpJ,KAAKyL,MAAQyC,EAASzC,OAAS,GAC/BzL,KAAKwL,MAAQ0C,EAAS1C,OAAS,GAC/BxL,KAAKqL,cAAiC9C,IAAtB2F,EAAS7C,UAAyB6C,EAAS7C,SAC3DrL,KAAKqT,gBAAqC9K,IAAxB2F,EAASmF,YAA2BnF,EAASmF,WAC/DrT,KAAKoW,gBAAqC7N,IAAxB2F,EAASkI,YAA2BlI,EAASkI,WAC/DpW,KAAKiS,UAAY/D,EAAS+D,WAAa,WACvCjS,KAAKsW,kBAAoBpI,EAASoI,mBAAqB,SACvDtW,KAAKqY,WAAanK,EAASmK,YAAc,aACzCrY,KAAKkY,cAAgBhK,EAASgK,eAAiB,eAC/ClY,KAAKmZ,qBAA+C5Q,IAA7B2F,EAASiL,iBAAgCjL,EAASiL,gBACzEnZ,KAAKgT,mBAA2CzK,IAA3B2F,EAAS8E,eAA8B9E,EAAS8E,cACrEhT,KAAK2Q,gBAAkBzC,EAASyC,iBAAmBhQ,SAAS+d,KAC5D1e,KAAK4R,gBAAkB1D,EAAS0D,iBAAmB,WACnD5R,KAAKmR,aAAejD,EAASiD,cAAgB,OAC7CnR,KAAK4T,qBAA+CrL,IAA7B2F,EAAS0F,gBAAgC1F,EAAS0F,gBAAkB,eAC3F5T,KAAKyS,mBAA2ClK,IAA3B2F,EAASuE,eAA8BvE,EAASuE,cACrEzS,KAAKsZ,kBAAyC/Q,IAA1B2F,EAASoL,cAA6BpL,EAASoL,aACnEtZ,KAAKoV,eAAmC7M,IAAvB2F,EAASkH,WAA0BlH,EAASkH,UAC7DpV,KAAKqZ,wBAAqD9Q,IAAhC2F,EAASmL,oBAAmCnL,EAASmL,mBAC/ErZ,KAAK2V,YAAczH,EAASyH,aAAe,EAC3C3V,KAAKyZ,YAAcvL,EAASuL,aAAe,IAC3CzZ,KAAK2e,aAAezQ,EAASyQ,cAAgB,IAC7C3e,KAAKuU,eAAiBrG,EAASqG,gBAAkB,GACjDvU,KAAKyU,iBAAmBvG,EAASuG,kBAAoB,mBACzD,EAsSJ,OAnSA,MACI,WAAAlK,CAAYqU,GACR,IAAI9M,EAwCJ,GAvCA9R,KAAKwI,OAAS,CACVoF,YAAQrF,EACRsF,aAAc,CAACT,EAAKQ,KACiD,IAA1DR,EAAInC,KAAKoT,cAAcQ,QAAQjR,EAAOyQ,eAEjD9O,aAAShH,EACTsK,kBAActK,EACd0K,iBAAa1K,EACbuW,gBAAYvW,EACZwW,eAAWxW,EACXyW,iBAAazW,EACb0W,gBAAY1W,GAEhBvI,KAAKkf,aAAezV,GAAS,MACpBzJ,KAAKkO,SAASsE,QAAWxS,KAAKkO,SAASsQ,aAG5Cxe,KAAKmf,OAAO/N,aAAa,IAE7BpR,KAAKof,aAAe3V,GAAS,MACpBzJ,KAAKkO,SAASsE,QAAWxS,KAAKkO,SAASsQ,aAG5Cxe,KAAKmf,OAAO/N,aAAa,IAE7BpR,KAAKqf,cAAiBjN,IACbpS,KAAKkO,SAASsE,QAGfJ,EAAEzK,SA7jDlB,SAAwB3F,EAASG,GAC7B,SAASmd,EAASlN,EAAGT,GACjB,OAAIA,GAAKS,GAAKA,EAAEtB,WAAasB,EAAEtB,UAAUiE,SAASpD,IAG9CA,GAAKS,GAAKA,EAAEJ,SAAWI,EAAEJ,QAAQ/P,IAAMmQ,EAAEJ,QAAQ/P,KAAOE,EAFjDiQ,EAKJ,IACX,CAYA,OAAOkN,EAAStd,EAASG,IAXzB,SAASod,EAAcnN,EAAGT,GACtB,OAAKS,GAAKA,IAAMzR,SAGP2e,EAASlN,EAAGT,GACVS,EAGAmN,EAAcnN,EAAEoN,WAAY7N,GAN5B,IAQf,CACuC4N,CAAcvd,EAASG,EAClE,CAuiD6Bsd,CAAerN,EAAEzK,OAAQ3H,KAAKkO,SAASjM,KACpDjC,KAAKoQ,MAAMgC,EAAE3K,KACjB,EAEJzH,KAAK0f,uBAAyB,KACtB/e,SAASgf,QACT3f,KAAKoQ,OACT,EAEJpQ,KAAK4f,SAAqC,iBAAlBhB,EAAO/C,OAAsBlb,SAAS4Q,cAAcqN,EAAO/C,QAAU+C,EAAO/C,QAC/F7b,KAAK4f,SAIN,YAHIhB,EAAOpW,QAAUoW,EAAOpW,OAAO6H,OAC/BuO,EAAOpW,OAAO6H,MAAM,IAAIrE,MAAM,mCAItC,GAA8B,WAA1BhM,KAAK4f,SAASC,QAId,YAHIjB,EAAOpW,QAAUoW,EAAOpW,OAAO6H,OAC/BuO,EAAOpW,OAAO6H,MAAM,IAAIrE,MAAM,iCAIlChM,KAAK4f,SAAS5N,QAAQ8N,MACtB9f,KAAK2Z,UAET3Z,KAAKkO,SAAW,IAAIqQ,EAASK,EAAO1Q,UACpC,MAAM6R,EAAiB,CAAC,cAAe,aAAc,YAAa,cAAe,cACjF,IAAK,MAAMnd,KAAOgc,EAAOpW,OAChBoW,EAAOpW,OAAOwX,eAAepd,MAGG,IAAjCmd,EAAelB,QAAQjc,GACvB5C,KAAKwI,OAAO5F,GAAO6G,EAASmV,EAAOpW,OAAO5F,GAAM,KAGhD5C,KAAKwI,OAAO5F,GAAOgc,EAAOpW,OAAO5F,IAGzC5C,KAAKkO,SAAS7C,UAAuC,QAA1ByG,EAAK8M,EAAO1Q,gBAA6B,IAAP4D,OAAgB,EAASA,EAAGzG,UAAYuT,EAAO1Q,SAAS7C,SAAWrL,KAAK4f,SAASvU,SAC9IrL,KAAKkO,SAASwE,WAAa1S,KAAK4f,SAASK,SACzCjgB,KAAKkO,SAASzC,MAAQzL,KAAK4f,SAASnU,MAAMiG,QAC1C1R,KAAKkO,SAAS1C,MAAQxL,KAAK4f,SAASzd,UAAUC,MAAM,KACpDpC,KAAK6b,OAAS,IAAID,EAAO5b,KAAK4f,UAC9B5f,KAAK6b,OAAOiC,aAAa9d,KAAKkO,SAASjM,GAAIjC,KAAKkO,SAASzC,MAAOzL,KAAKkO,SAAS1C,OAC9ExL,KAAK6b,OAAOS,SACZtc,KAAK6b,OAAOiB,cAAiBvO,IACzBvO,KAAK8S,YAAYvE,EAAO,EAE5BvO,KAAK6b,OAAOwB,cAAiBhP,IACzBrO,KAAKkO,SAAS1C,MAAQ6C,EACtBrO,KAAKmf,OAAO1O,mBAAmB,EAEnCzQ,KAAK6b,OAAOyB,iBAAoBjS,IACxBA,EACArL,KAAKgR,UAGLhR,KAAK6Q,QACT,EAEJ7Q,KAAK6b,OAAO0B,gBAAmBjZ,IAC3BtE,KAAK4L,QAAQtH,EAAK,EAEtBtE,KAAKmO,MAAQ,IAAIzC,EAAM1L,KAAKkO,SAASwE,WAAa,WAAa,SAAUkM,EAAOta,KAAOsa,EAAOta,KAAOtE,KAAK6b,OAAOpP,WAC7GmS,EAAOta,MACPtE,KAAK6b,OAAOkC,cAAc/d,KAAKmO,MAAM1B,WAEzC,MAAMyT,EAAkB,CACpB/P,KAAMnQ,KAAKmQ,KAAK8L,KAAKjc,MACrBoQ,MAAOpQ,KAAKoQ,MAAM6L,KAAKjc,MACvBuP,QAASvP,KAAKwI,OAAO+G,QAAUvP,KAAKwI,OAAO+G,aAAUhH,EACrDuK,YAAa9S,KAAK8S,YAAYmJ,KAAKjc,MACnC4M,UAAW5M,KAAK4M,UAAUqP,KAAKjc,MAC/B4N,OAAQ5N,KAAK4N,OAAOqO,KAAKjc,MACzB6S,aAAc7S,KAAKwI,OAAOqK,aAC1BI,YAAajT,KAAKwI,OAAOyK,aAE7BjT,KAAKmf,OAAS,IAAIlR,EAAOjO,KAAKkO,SAAUlO,KAAKmO,MAAO+R,GACpDlgB,KAAKmf,OAAOrL,eACZ9T,KAAKmf,OAAOhH,cAAcnY,KAAKmO,MAAM1B,WACrC,MAAM0T,EAAkBngB,KAAK4f,SAAShL,aAAa,cAC7CwL,EAAuBpgB,KAAK4f,SAAShL,aAAa,mBACpDuL,EACAngB,KAAKmf,OAAO7Q,KAAKA,KAAK4C,aAAa,aAAciP,GAE5CC,GACLpgB,KAAKmf,OAAO7Q,KAAKA,KAAK4C,aAAa,kBAAmBkP,GAEtDpgB,KAAK4f,SAASJ,YACdxf,KAAK4f,SAASJ,WAAWlK,aAAatV,KAAKmf,OAAO7Q,KAAKA,KAAMtO,KAAK4f,SAASS,aAE/E3f,OAAO+H,iBAAiB,SAAUzI,KAAKkf,cAAc,GAClB,SAA/Blf,KAAKkO,SAASiD,cACdzQ,OAAO+H,iBAAiB,SAAUzI,KAAKof,cAAc,GAEzDze,SAAS8H,iBAAiB,mBAAoBzI,KAAK0f,wBAC/C1f,KAAKkO,SAAS7C,UACdrL,KAAKgR,UAELhR,KAAKkO,SAASmF,YACdrT,KAAKmQ,OAETnQ,KAAK4f,SAASU,KAAOtgB,IACzB,CACA,MAAA6Q,GACI7Q,KAAKkO,SAAS7C,UAAW,EACzBrL,KAAK6b,OAAOhL,SACZ7Q,KAAKmf,OAAOtO,QAChB,CACA,OAAAG,GACIhR,KAAKkO,SAAS7C,UAAW,EACzBrL,KAAK6b,OAAO7K,UACZhR,KAAKmf,OAAOnO,SAChB,CACA,OAAAvE,GACI,OAAOzM,KAAKmO,MAAM1B,SACtB,CACA,OAAAb,CAAQtH,GACJ,MAAM6G,EAAWnL,KAAKmO,MAAM3B,cACtB+T,EAAMvgB,KAAKmO,MAAMtC,kBAAkBvH,GACzC,GAAIic,EAIA,YAHIvgB,KAAKwI,OAAO6H,OACZrQ,KAAKwI,OAAO6H,MAAMkQ,IAI1BvgB,KAAKmO,MAAMvC,QAAQtH,GACnB,MAAMkc,EAAYxgB,KAAKmO,MAAM1B,UAC7BzM,KAAK6b,OAAOkC,cAAcyC,GAC1BxgB,KAAKmf,OAAOrL,eACZ9T,KAAKmf,OAAOhH,cAAcqI,GACtBxgB,KAAKwI,OAAOyK,cAAgB9I,EAAQgB,EAAUnL,KAAKmO,MAAM3B,gBACzDxM,KAAKwI,OAAOyK,YAAYjT,KAAKmO,MAAMhB,qBAE3C,CACA,WAAAX,GACI,OAAOxM,KAAKmO,MAAM3B,aACtB,CACA,WAAAsG,CAAYhQ,EAAO2d,GAAiB,GAChC,MAAMtV,EAAWnL,KAAKmO,MAAM3B,cAC5BxM,KAAKmO,MAAM5B,cAAc,QAAST,MAAMC,QAAQjJ,GAASA,EAAQ,CAACA,IAClE,MAAMwB,EAAOtE,KAAKmO,MAAM1B,UACxBzM,KAAK6b,OAAOkC,cAAczZ,GAC1BtE,KAAKmf,OAAOrL,eACmC,KAA3C9T,KAAKmf,OAAOjQ,QAAQtB,OAAOmD,MAAMjO,MACjC9C,KAAK4N,OAAO5N,KAAKmf,OAAOjQ,QAAQtB,OAAOmD,MAAMjO,OAG7C9C,KAAKmf,OAAOhH,cAAc7T,GAE1Bmc,GAAkBzgB,KAAKwI,OAAOyK,cAAgB9I,EAAQgB,EAAUnL,KAAKmO,MAAM3B,gBAC3ExM,KAAKwI,OAAOyK,YAAYjT,KAAKmO,MAAMhB,qBAE3C,CACA,SAAAP,CAAU5B,GACN,MAAMG,EAAWnL,KAAKmO,MAAM3B,cACvBxM,KAAKmO,MAAMxB,iBAAiBqM,MAAMlO,IAAQ,IAAIgH,EAAI,OAAOhH,EAAEhI,SAAmC,QAAvBgP,EAAK9G,EAAOlI,aAA0B,IAAPgP,EAAgBA,EAAK9G,EAAOC,KAAK,KACxIjL,KAAKmO,MAAMvB,UAAU5B,GAEzB,MAAM1G,EAAOtE,KAAKmO,MAAM1B,UACxBzM,KAAK6b,OAAOkC,cAAczZ,GAC1BtE,KAAKmf,OAAOrL,eACZ9T,KAAKmf,OAAOhH,cAAc7T,GACtBtE,KAAKwI,OAAOyK,cAAgB9I,EAAQgB,EAAUnL,KAAKmO,MAAM3B,gBACzDxM,KAAKwI,OAAOyK,YAAYjT,KAAKmO,MAAMhB,qBAE3C,CACA,IAAAgD,GACQnQ,KAAKkO,SAAS7C,UAAYrL,KAAKkO,SAASsE,SAGxCxS,KAAKwI,OAAOsW,YACZ9e,KAAKwI,OAAOsW,aAEhB9e,KAAKmf,OAAOhP,OACRnQ,KAAKkO,SAASkI,YACdpW,KAAKmf,OAAOjI,cAEhBlX,KAAKkO,SAASsE,QAAS,EACvBtI,YAAW,KACHlK,KAAKwI,OAAOuW,WACZ/e,KAAKwI,OAAOuW,YAEZ/e,KAAKkO,SAASsE,SACdxS,KAAKkO,SAASsQ,YAAa,GAE/B7d,SAAS8H,iBAAiB,QAASzI,KAAKqf,cAAc,GACvDrf,KAAKkO,SAASyQ,cACqB,aAAlC3e,KAAKkO,SAAS0D,kBACV5R,KAAKkO,SAASuQ,cACdiC,cAAc1gB,KAAKkO,SAASuQ,cAEhCze,KAAKkO,SAASuQ,aAAekC,YAAY3gB,KAAKmf,OAAO/N,YAAY6K,KAAKjc,KAAKmf,QAAS,MAE5F,CACA,KAAA/O,CAAMoD,EAAY,MACTxT,KAAKkO,SAASsE,SAAUxS,KAAKkO,SAASmF,aAGvCrT,KAAKwI,OAAOwW,aACZhf,KAAKwI,OAAOwW,cAEhBhf,KAAKmf,OAAO/O,QACmC,KAA3CpQ,KAAKmf,OAAOjQ,QAAQtB,OAAOmD,MAAMjO,OACjC9C,KAAK4N,OAAO,IAEhB5N,KAAKmf,OAAO5L,UAAUC,GACtBxT,KAAKkO,SAASsE,QAAS,EACvBxS,KAAKkO,SAASsQ,YAAa,EAC3BtU,YAAW,KACHlK,KAAKwI,OAAOyW,YACZjf,KAAKwI,OAAOyW,aAEhBte,SAASgI,oBAAoB,QAAS3I,KAAKqf,cAAc,GAC1Drf,KAAKkO,SAASyQ,cACb3e,KAAKkO,SAASuQ,cACdiC,cAAc1gB,KAAKkO,SAASuQ,cAEpC,CACA,MAAA7Q,CAAO9K,GAIH,GAHI9C,KAAKmf,OAAOjQ,QAAQtB,OAAOmD,MAAMjO,QAAUA,IAC3C9C,KAAKmf,OAAOjQ,QAAQtB,OAAOmD,MAAMjO,MAAQA,IAExC9C,KAAKwI,OAAOoF,OAEb,YADA5N,KAAKmf,OAAOhH,cAAwB,KAAVrV,EAAe9C,KAAKmO,MAAM1B,UAAYzM,KAAKmO,MAAMP,OAAO9K,EAAO9C,KAAKwI,OAAOqF,eAGzG7N,KAAKmf,OAAOnH,kBACZ,MAAM4I,EAAa5gB,KAAKwI,OAAOoF,OAAO9K,EAAO9C,KAAKmO,MAAMhB,sBACpDyT,aAAsB5J,QACtB4J,EACK3J,MAAM3S,IACPtE,KAAKmf,OAAOhH,cAAcnY,KAAKmO,MAAMhC,kBAAkB7H,GAAM,IAE5Duc,OAAON,IACRvgB,KAAKmf,OAAOrH,YAA2B,iBAARyI,EAAmBA,EAAMA,EAAIO,QAAQ,IAInEhV,MAAMC,QAAQ6U,GACnB5gB,KAAKmf,OAAOhH,cAAcnY,KAAKmO,MAAMhC,kBAAkByU,IAGvD5gB,KAAKmf,OAAOrH,YAAY,yDAEhC,CACA,OAAA6B,GACIhZ,SAASgI,oBAAoB,QAAS3I,KAAKqf,eAC3C3e,OAAOiI,oBAAoB,SAAU3I,KAAKkf,cAAc,GACrB,SAA/Blf,KAAKkO,SAASiD,cACdzQ,OAAOiI,oBAAoB,SAAU3I,KAAKof,cAAc,GAE5Dze,SAASgI,oBAAoB,mBAAoB3I,KAAK0f,wBACtD1f,KAAKmO,MAAMvC,QAAQ,IACnB5L,KAAKmf,OAAOxF,UACZ3Z,KAAK6b,OAAOlC,SAChB,EAKP,CA10DmFoH,E,8BCDpF,SAAS1W,EAAUvH,GACf,YAAwB,IAAVA,EAAwBA,EAAQ,EAClD,C,iBACA,MAAMke,EAAoB,CAACC,EAAKC,EAAIxM,EAASkK,KACzC,IAAIuC,EACJ,GAAkB,iBAAPD,EACPC,EAAcD,MAEb,CACD,MAAME,EAAMxC,EAAOyC,SAAS,mBAAmB,GAAM,GACrD,IAAK,MAAMze,KAAOse,EAAI,CAClB,MAAMpe,EAAQoe,EAAGte,GACjB,GAAIse,EAAGte,aAAgBkJ,MACnB,IAAK,MAAMwV,KAAOxe,EACdse,EAAIG,OAAO3e,EAAKyH,EAAUiX,SAG9BF,EAAIG,OAAO3e,EAAKyH,EAAUvH,GAElC,CACAqe,EAAcC,EAAI7X,UACtB,CACA,MAAMnH,EAAQ6e,EAAI7e,MAAM,KACxB,OAAK+e,EAEDzM,GAAWtS,EAAMoB,OAAS,EACnBpB,EAAM,GAAK,IAAM+e,EACrBF,EAAM,IAAME,EAHRzM,EAAUtS,EAAM,GAAK6e,CAGF,EAkBlC,EAPoB,CAChBO,OAAQ,CACJ,KAAAjK,CAAM2J,EAAIxM,GAAU,GAChB,MAAO,IAAK1U,KAAMyhB,KAAMT,EAAkBhhB,KAAKyhB,KAAMP,EAAIxM,EAAS1U,KAAK0hB,SAC3E,G,+CC1CD,MACMC,EAAsB,eACtBC,EAAcC,SACdC,EAAmBD,SCFzB,SAASE,EAAmBC,EAAU,CAAC,GAC1C,IAAIlQ,EACJ,OAA+G,QAAvGA,EAAKxR,OAAO2hB,QAAQD,GAASE,MAAK,EAAErd,KAAOA,EAAEwZ,gBAAkBsD,EAAoBtD,uBAAmC,IAAPvM,OAAgB,EAASA,EAAG,EACvJ,CACO,SAASqQ,EAAiBrf,GAC7B,MAAO,yBAAyBsf,KAAKtf,EACzC,CACO,MAAMuf,EAAM,SAAUC,EAAKC,EAAKC,GAAc,GACjD,OAAOliB,OAAO2hB,QAAQM,GAAKE,QAAO,CAACC,GAAM9f,EAAK+f,MAC1C,MAAM7f,EAAQwf,EAAI1f,GAUlB,OATIkJ,MAAMC,QAAQjJ,IAAUgJ,MAAMC,QAAQ4W,GACtCD,EAAI9f,GAAO4f,EAAc,IAAI1f,KAAU6f,GAAYA,EAGnDD,EAAI9f,GADkB,iBAAVE,GAA0C,iBAAb6f,EAC9BN,EAAIvf,EAAO6f,EAAUH,GAGrBG,EAERD,CAAG,GACX,IAAKJ,GACZ,ECrBM1D,EAAS,CAEX/T,QAAS,CAAC,EAEV+X,UAAW,OAEXC,UAAW,CAOX,EACA,QAAAxB,CAASyB,EAAGC,GAAU,EAAMC,GAAW,KAAUlZ,GAC7C,MAAMmZ,EAAMjjB,KAAK6iB,UAAUC,KACN,oBAAT/Y,KAAuBA,KAAK+Y,GAAK,QACtB,oBAAXI,OAAyBA,OAAOJ,GAAK,MACjD,GAAIC,IAAYE,EACZ,MAAM,IAAIjX,MAAM8W,EAAI,mBACxB,OAAOE,GAAYC,EAAM,IAAIA,KAAOnZ,GAAQmZ,CAChD,GAsEJ,ICrFO,MAAME,UAAoBnX,OAE1B,MAAMoX,EAAY5B,IACrB,MAAM6B,EAAc/iB,OAAOC,OAAO,MAClCihB,EAASA,EAAO8B,QAAQb,QAAO,CAACc,EAAGC,IAAUA,EAAMC,eAC/CD,EAAMC,cAAcF,EAAG/B,EAAOkC,SAAUL,IACrCE,GAAG/B,GACV,MAAQC,KAAMR,EAAKyC,SAAUC,EAAMjC,QAAS9C,EAAQgF,UAAWA,EAAWC,WAAYC,EAAWC,aAAcC,EAAaV,QAASW,GAAWzC,EAC1I0C,EAAW,IAAI5hB,IAAIshB,GACnBO,EAAe9B,EAAIzD,EAAO/T,QAAS8Y,GAEzC,IAAIS,EAAWnD,EACf,MAAMoD,EChBsB,CAACL,GAAiBM,GACvCN,EAAYO,aAAY,CAAC7B,EAAK8B,IAASA,EAAK9B,IAAM4B,IAAkBA,EDezDG,CAAiBT,EAAjBS,EAA8B,CAACxD,EAAKpW,KAClDuZ,EAAWnD,EACJrC,EAAOyC,SAAS,QAAhBzC,CAAyBqC,EAAKpW,KAFvB4Z,CAGfxD,EAAKkD,GAEFO,EAAiB,IAAI1Y,MACrB2Y,EAAkBN,EACnBxD,OAAMxQ,IACP,KAAM,CAAE,CAACuR,GAAcvR,EAAO,IAE7B4G,MAAK2N,IACN,IAAKA,EAASC,GAAI,CACd,MAAMtE,EAAM,IAAI4C,EAMhB,GAJA5C,EAAW,MAAImE,EACfnE,EAAIuE,MAAQvE,EAAIuE,MAAQ,YAAcJ,EAAeI,MACrDvE,EAAIqE,SAAWA,EACfrE,EAAIU,IAAMmD,EACY,WAAlBQ,EAASnd,KACT,MAAM8Y,EAEV,OAAOqE,EAAS3Z,OAAOgM,MAAMyH,IACzB,IAAI5M,EAEJ,GADAyO,EAAIO,QAAUpC,EACW,SAArBE,EAAOgE,WAAgI,sBAAvD,QAA/C9Q,EAAK8S,EAAS5C,QAAQrf,IAAI,uBAAoC,IAAPmP,OAAgB,EAASA,EAAG1P,MAAM,KAAK,IAC/H,IACIme,EAAIwE,KAAO3a,KAAK4a,MAAMtG,EAC1B,CACA,MAAOtM,GAAkB,CAI7B,MAFAmO,EAAItV,KAAOyT,EACX6B,EAAY,OAAIqE,EAASK,OACnB1E,CAAG,GAEjB,CACA,OAAOqE,CAAQ,IAiBbM,EAAaC,GAAWC,IAAMD,EAEhBR,EAAgB1N,MAAK1P,GAAKA,GAAKA,EAAE4d,OAAYlO,MAAK1P,GAAK6d,EAAKA,EAAG7d,GAAKA,IAEpEod,EAAgB1N,MAAK1P,GAAK6d,EAAKA,EAAG7d,GAAKA,KAjBxCsZ,OAAMN,IACjB,MAAM8E,EAAiB9E,EAAIP,eAAe4B,GACpCvR,EAAQgV,EAAiB9E,EAAIqB,GAAerB,EAC5C+E,GAAYjV,aAAqC,EAASA,EAAM4U,SAAWf,EAASvhB,IAAI0N,EAAM4U,SAChGf,EAASvhB,IAAI0N,aAAqC,EAASA,EAAM1O,OAAU0jB,GAAkBnB,EAASqB,IAAI3D,IAAgBsC,EAASvhB,IAAIif,GAC3I,GAAI0D,EACA,OAAOA,EAAQjV,EAAOmR,GAC1B,MAAMgE,EAAkBtB,EAASvhB,IAAImf,GACrC,GAAI0D,EACA,OAAOA,EAAgBnV,EAAOmR,GAClC,MAAMnR,CAAK,IAQboV,EAAgB,CAClBC,WAAYlE,EACZ6C,YACAsB,aAActC,EACdJ,IAAKiC,EAAW,MAChBH,KAAMG,EAAW,QACjBU,KAAMV,EAAW,QACjBW,SAAUX,EAAW,YACrBY,YAAaZ,EAAW,eACxBja,KAAMia,EAAW,QACjB,KAAA7U,CAAM0V,EAASX,GAEX,OADAlB,EAASrhB,IAAIkjB,EAASX,GACfplB,IACX,EACA,UAAAgmB,CAAWZ,GAAM,OAAOplB,KAAKqQ,MAAM,IAAK+U,EAAK,EAC7C,YAAAa,CAAab,GAAM,OAAOplB,KAAKqQ,MAAM,IAAK+U,EAAK,EAC/C,SAAAc,CAAUd,GAAM,OAAOplB,KAAKqQ,MAAM,IAAK+U,EAAK,EAC5C,QAAAe,CAASf,GAAM,OAAOplB,KAAKqQ,MAAM,IAAK+U,EAAK,EAC3C,OAAAvb,CAAQub,GAAM,OAAOplB,KAAKqQ,MAAM,IAAK+U,EAAK,EAC1C,aAAAgB,CAAchB,GAAM,OAAOplB,KAAKqQ,MAAM,IAAK+U,EAAK,EAChD,UAAAiB,CAAWjB,GAAM,OAAOplB,KAAKqQ,MAAMuR,EAAawD,EAAK,GAEnDkB,EAAwBrC,EAAOxB,QAAO,CAAC8D,EAAO/C,KAAU,IACvD+C,KAC2B,mBAAnB/C,EAAMJ,SAA0BI,EAAMJ,SAASmD,GAAS/C,EAAMJ,YACzEqC,GACJ,OAAO3B,EAAUrB,QAAO,CAAC8D,EAAOC,IAAMA,EAAED,EAAO/E,IAAS8E,EAAsB,EElGrEG,EAAO,CAChBhF,KAAM,GACNiC,SAAU,CAAC,EACXhC,QAAS,EACTkC,UAAW,IAAIthB,IACfuhB,WAAY,GACZ6C,UAAW,GACX3C,aAAc,GACdT,QAAS,GACT,KAAAE,CAAMA,GACF,MAAO,IAAKxjB,KAAMsjB,QAAS,IAAItjB,KAAKsjB,QAASE,MAAWA,EAAMhC,OAClE,EACA,SAAAoB,CAAUA,GACN,MAAO,IACA5iB,KACH0hB,QAAS,IACF1hB,KAAK0hB,QACRkB,aAGZ,EACA,SAAAC,CAAUA,EAAWnO,GAAU,GAC3B,MAAO,IACA1U,KACH0hB,QAAS,IACF1hB,KAAK0hB,QACRmB,UAAWnO,EAAUmO,EAAYR,EAAIriB,KAAK0hB,QAAQmB,UAAWA,IAGzE,EACA,GAAA5B,CAAIQ,EAAM/M,GAAU,GAChB,GAAIA,EACA,MAAO,IAAK1U,KAAMyhB,QACtB,MAAMrf,EAAQpC,KAAKyhB,KAAKrf,MAAM,KAC9B,MAAO,IACApC,KACHyhB,KAAMrf,EAAMoB,OAAS,EACjBpB,EAAM,GAAKqf,EAAO,IAAMrf,EAAM,GAC9BpC,KAAKyhB,KAAOA,EAExB,EACA,OAAA5W,CAAQA,EAAS6J,GAAU,GACvB,MAAO,IAAK1U,KAAM0jB,SAAUhP,EAAU7J,EAAUwX,EAAIriB,KAAK0jB,SAAU7Y,GACvE,EACA,OAAAmX,CAAQ2E,GACJ,MAAM3E,EAAW2E,EACb7a,MAAMC,QAAQ4a,GAAgBrmB,OAAOsmB,YAAYD,GAC7C,YAAaA,EAAermB,OAAOsmB,YAAYD,EAAa1E,WACxD0E,EAHoB,CAAC,EAIjC,MAAO,IAAK3mB,KAAM0jB,SAAUrB,EAAIriB,KAAK0jB,SAAU,CAAE1B,YACrD,EACA,MAAA6E,CAAOC,GACH,OAAO9mB,KAAKgiB,QAAQ,CAAE+E,OAAQD,GAClC,EACA,OAAA5X,CAAQ4X,GACJ,OAAO9mB,KAAKgiB,QAAQ,CAAE,CAACL,GAAsBmF,GACjD,EACA,IAAAE,CAAKF,GACD,OAAO9mB,KAAKgiB,QAAQ,CAAEiF,cAAeH,GACzC,EACA,OAAAxB,CAAQS,EAAST,GACb,MAAM4B,EAAS,IAAI5kB,IAAItC,KAAK4jB,WAE5B,OADAsD,EAAOrkB,IAAIkjB,EAAST,GACb,IAAKtlB,KAAM4jB,UAAWsD,EACjC,EACA,eAAA1B,CAAgBF,GACZ,OAAOtlB,KAAKslB,QAAQxD,EAAkBwD,EAC1C,EACA,OAAA6B,CAAQ/D,EAAUgE,GAAQ,GACtB,MAAO,IAAKpnB,KAAM6jB,WAAYuD,EAAQ,CAAChE,GAAY,IAAIpjB,KAAK6jB,WAAYT,GAC5E,EACA,KAAAiE,CAAMC,EAAUF,GAAQ,GACpB,MAAO,IACApnB,KACH0mB,UAAWU,EAAQ,CAACE,GAAY,IAAItnB,KAAK0mB,UAAWY,GAE5D,EACA,WAAAtD,CAAYA,EAAaoD,GAAQ,GAC7B,MAAO,IACApnB,KACH+jB,aAAcqD,EAAQpD,EAAc,IAAIhkB,KAAK+jB,gBAAiBC,GAEtE,EACA,KAAAuD,CAAMC,EAASxnB,KAAK0jB,SAAS8D,OAAQvG,EAAM,GAAIvC,EAAO,MAClD,IAAI+I,EAAOznB,KAAKihB,IAAIA,GAAKpW,QAAQ,CAAE2c,WAEnC,MAAME,EAAc3F,EAAmB0F,EAAK/D,SAAS1B,SAC/C2F,EAA0B,iBAATjJ,KAAuB+I,EAAK/D,SAAS1B,UAAY0F,GAAevF,EAAiBuF,IAKxG,OAJAD,EACK/I,EACGiJ,EAAUF,EAAK1C,KAAKrG,EAAMgJ,GACtBD,EAAK/I,KAAKA,GAFV+I,EAGLrE,EAASqE,EACXf,UACAjE,QAAO,CAACC,EAAK8B,IAASA,EAAK9B,EAAKA,EAAIjB,KAAMiB,EAAIgB,WAAW+D,GAClE,EACA,GAAA9kB,CAAIse,EAAM,IACN,OAAOjhB,KAAKunB,MAAM,MAAOtG,EAC7B,EACA,OAAOA,EAAM,IACT,OAAOjhB,KAAKunB,MAAM,SAAUtG,EAChC,EACA,GAAA2G,CAAIlJ,EAAMuC,EAAM,IACZ,OAAOjhB,KAAKunB,MAAM,MAAOtG,EAAKvC,EAClC,EACA,IAAAmJ,CAAKnJ,EAAMuC,EAAM,IACb,OAAOjhB,KAAKunB,MAAM,OAAQtG,EAAKvC,EACnC,EACA,KAAAoJ,CAAMpJ,EAAMuC,EAAM,IACd,OAAOjhB,KAAKunB,MAAM,QAAStG,EAAKvC,EACpC,EACA,IAAAqJ,CAAK9G,EAAM,IACP,OAAOjhB,KAAKunB,MAAM,OAAQtG,EAC9B,EACA,IAAA0C,CAAK1C,EAAM,IACP,OAAOjhB,KAAKunB,MAAM,UAAWtG,EACjC,EACA,IAAAvC,CAAKsJ,GACD,MAAO,IAAKhoB,KAAM0jB,SAAU,IAAK1jB,KAAK0jB,SAAUhF,KAAMsJ,GAC1D,EACA,IAAAjD,CAAKkD,EAAUP,GACX,MAAMQ,EAAqBnG,EAAmB/hB,KAAK0jB,SAAS1B,SAC5D,OAAOhiB,KAAKkP,QAAQwY,GAChBvF,EAAiB+F,IAAuBA,GL/H3B,oBKgIFxJ,KAAKtU,KAAKC,UAAU4d,GACvC,GC/GJ,SAASlH,EAAQU,EAAO,GAAIiC,EAAW,CAAC,GACpC,MAAO,IAAK+C,EAAMhF,OAAMiC,WAC5B,CACA3C,EAAiB,QAAIA,EAErBA,EAAQlW,QJgBD,SAAoBA,EAAS6J,GAAU,GAC1CkK,EAAO/T,QAAU6J,EAAU7J,EAAUwX,EAAIzD,EAAO/T,QAASA,EAC7D,EIhBAkW,EAAQ6B,UJgED,SAAsBA,GACzBhE,EAAOgE,UAAYA,CACvB,EIhEA7B,EAAQ8B,UJqCD,SAAsBA,EAAWnO,GAAU,GAC9CkK,EAAOiE,UAAYnO,EAAUmO,EAAYR,EAAIzD,EAAOiE,UAAWA,EACnE,EItCA9B,EAAQoC,YAAcA,EACtB,S","sources":["webpack://silverstripe-base/./node_modules/selector-set/selector-set.next.js","webpack://silverstripe-base/./node_modules/delegated-events/dist/index.js","webpack://silverstripe-base/./node_modules/slim-select/dist/slimselect.js","webpack://silverstripe-base/./node_modules/wretch/dist/addons/queryString.js","webpack://silverstripe-base/./node_modules/wretch/dist/constants.js","webpack://silverstripe-base/./node_modules/wretch/dist/utils.js","webpack://silverstripe-base/./node_modules/wretch/dist/config.js","webpack://silverstripe-base/./node_modules/wretch/dist/resolver.js","webpack://silverstripe-base/./node_modules/wretch/dist/middleware.js","webpack://silverstripe-base/./node_modules/wretch/dist/core.js","webpack://silverstripe-base/./node_modules/wretch/dist/index.js"],"sourcesContent":["// Public: Create a new SelectorSet.\nexport default function SelectorSet() {\n // Construct new SelectorSet if called as a function.\n if (!(this instanceof SelectorSet)) {\n return new SelectorSet();\n }\n\n // Public: Number of selectors added to the set\n this.size = 0;\n\n // Internal: Incrementing ID counter\n this.uid = 0;\n\n // Internal: Array of String selectors in the set\n this.selectors = [];\n\n // Internal: Map of selector ids to objects\n this.selectorObjects = {};\n\n // Internal: All Object index String names mapping to Index objects.\n this.indexes = Object.create(this.indexes);\n\n // Internal: Used Object index String names mapping to Index objects.\n this.activeIndexes = [];\n}\n\n// Detect prefixed Element#matches function.\nvar docElem = window.document.documentElement;\nvar matches =\n docElem.matches ||\n docElem.webkitMatchesSelector ||\n docElem.mozMatchesSelector ||\n docElem.oMatchesSelector ||\n docElem.msMatchesSelector;\n\n// Public: Check if element matches selector.\n//\n// Maybe overridden with custom Element.matches function.\n//\n// el - An Element\n// selector - String CSS selector\n//\n// Returns true or false.\nSelectorSet.prototype.matchesSelector = function(el, selector) {\n return matches.call(el, selector);\n};\n\n// Public: Find all elements in the context that match the selector.\n//\n// Maybe overridden with custom querySelectorAll function.\n//\n// selectors - String CSS selectors.\n// context - Element context\n//\n// Returns non-live list of Elements.\nSelectorSet.prototype.querySelectorAll = function(selectors, context) {\n return context.querySelectorAll(selectors);\n};\n\n// Public: Array of indexes.\n//\n// name - Unique String name\n// selector - Function that takes a String selector and returns a String key\n// or undefined if it can't be used by the index.\n// element - Function that takes an Element and returns an Array of String\n// keys that point to indexed values.\n//\nSelectorSet.prototype.indexes = [];\n\n// Index by element id\nvar idRe = /^#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'ID',\n selector: function matchIdSelector(sel) {\n var m;\n if ((m = sel.match(idRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementId(el) {\n if (el.id) {\n return [el.id];\n }\n }\n});\n\n// Index by all of its class names\nvar classRe = /^\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'CLASS',\n selector: function matchClassSelector(sel) {\n var m;\n if ((m = sel.match(classRe))) {\n return m[0].slice(1);\n }\n },\n element: function getElementClassNames(el) {\n var className = el.className;\n if (className) {\n if (typeof className === 'string') {\n return className.split(/\\s/);\n } else if (typeof className === 'object' && 'baseVal' in className) {\n // className is a SVGAnimatedString\n // global SVGAnimatedString is not an exposed global in Opera 12\n return className.baseVal.split(/\\s/);\n }\n }\n }\n});\n\n// Index by tag/node name: `DIV`, `FORM`, `A`\nvar tagRe = /^((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/g;\nSelectorSet.prototype.indexes.push({\n name: 'TAG',\n selector: function matchTagSelector(sel) {\n var m;\n if ((m = sel.match(tagRe))) {\n return m[0].toUpperCase();\n }\n },\n element: function getElementTagName(el) {\n return [el.nodeName.toUpperCase()];\n }\n});\n\n// Default index just contains a single array of elements.\nSelectorSet.prototype.indexes['default'] = {\n name: 'UNIVERSAL',\n selector: function() {\n return true;\n },\n element: function() {\n return [true];\n }\n};\n\n// Use ES Maps when supported\nvar Map;\nif (typeof window.Map === 'function') {\n Map = window.Map;\n} else {\n Map = (function() {\n function Map() {\n this.map = {};\n }\n Map.prototype.get = function(key) {\n return this.map[key + ' '];\n };\n Map.prototype.set = function(key, value) {\n this.map[key + ' '] = value;\n };\n return Map;\n })();\n}\n\n// Regexps adopted from Sizzle\n// https://github.com/jquery/sizzle/blob/1.7/sizzle.js\n//\nvar chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n\n// Internal: Get indexes for selector.\n//\n// selector - String CSS selector\n//\n// Returns Array of {index, key}.\nfunction parseSelectorIndexes(allIndexes, selector) {\n allIndexes = allIndexes.slice(0).concat(allIndexes['default']);\n\n var allIndexesLen = allIndexes.length,\n i,\n j,\n m,\n dup,\n rest = selector,\n key,\n index,\n indexes = [];\n\n do {\n chunker.exec('');\n if ((m = chunker.exec(rest))) {\n rest = m[3];\n if (m[2] || !rest) {\n for (i = 0; i < allIndexesLen; i++) {\n index = allIndexes[i];\n if ((key = index.selector(m[1]))) {\n j = indexes.length;\n dup = false;\n while (j--) {\n if (indexes[j].index === index && indexes[j].key === key) {\n dup = true;\n break;\n }\n }\n if (!dup) {\n indexes.push({ index: index, key: key });\n }\n break;\n }\n }\n }\n }\n } while (m);\n\n return indexes;\n}\n\n// Internal: Find first item in Array that is a prototype of `proto`.\n//\n// ary - Array of objects\n// proto - Prototype of expected item in `ary`\n//\n// Returns object from `ary` if found. Otherwise returns undefined.\nfunction findByPrototype(ary, proto) {\n var i, len, item;\n for (i = 0, len = ary.length; i < len; i++) {\n item = ary[i];\n if (proto.isPrototypeOf(item)) {\n return item;\n }\n }\n}\n\n// Public: Log when added selector falls under the default index.\n//\n// This API should not be considered stable. May change between\n// minor versions.\n//\n// obj - {selector, data} Object\n//\n// SelectorSet.prototype.logDefaultIndexUsed = function(obj) {\n// console.warn(obj.selector, \"could not be indexed\");\n// };\n//\n// Returns nothing.\nSelectorSet.prototype.logDefaultIndexUsed = function() {};\n\n// Public: Add selector to set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.add = function(selector, data) {\n var obj,\n i,\n indexProto,\n key,\n index,\n objs,\n selectorIndexes,\n selectorIndex,\n indexes = this.activeIndexes,\n selectors = this.selectors,\n selectorObjects = this.selectorObjects;\n\n if (typeof selector !== 'string') {\n return;\n }\n\n obj = {\n id: this.uid++,\n selector: selector,\n data: data\n };\n selectorObjects[obj.id] = obj;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n key = selectorIndex.key;\n indexProto = selectorIndex.index;\n\n index = findByPrototype(indexes, indexProto);\n if (!index) {\n index = Object.create(indexProto);\n index.map = new Map();\n indexes.push(index);\n }\n\n if (indexProto === this.indexes['default']) {\n this.logDefaultIndexUsed(obj);\n }\n objs = index.map.get(key);\n if (!objs) {\n objs = [];\n index.map.set(key, objs);\n }\n objs.push(obj);\n }\n\n this.size++;\n selectors.push(selector);\n};\n\n// Public: Remove selector from set.\n//\n// selector - String CSS selector\n// data - Optional data Object (default: undefined)\n//\n// Returns nothing.\nSelectorSet.prototype.remove = function(selector, data) {\n if (typeof selector !== 'string') {\n return;\n }\n\n var selectorIndexes,\n selectorIndex,\n i,\n j,\n k,\n selIndex,\n objs,\n obj,\n indexes = this.activeIndexes,\n selectors = (this.selectors = []),\n selectorObjects = this.selectorObjects,\n removedIds = {},\n removeAll = arguments.length === 1;\n\n selectorIndexes = parseSelectorIndexes(this.indexes, selector);\n for (i = 0; i < selectorIndexes.length; i++) {\n selectorIndex = selectorIndexes[i];\n\n j = indexes.length;\n while (j--) {\n selIndex = indexes[j];\n if (selectorIndex.index.isPrototypeOf(selIndex)) {\n objs = selIndex.map.get(selectorIndex.key);\n if (objs) {\n k = objs.length;\n while (k--) {\n obj = objs[k];\n if (obj.selector === selector && (removeAll || obj.data === data)) {\n objs.splice(k, 1);\n removedIds[obj.id] = true;\n }\n }\n }\n break;\n }\n }\n }\n\n for (i in removedIds) {\n delete selectorObjects[i];\n this.size--;\n }\n\n for (i in selectorObjects) {\n selectors.push(selectorObjects[i].selector);\n }\n};\n\n// Sort by id property handler.\n//\n// a - Selector obj.\n// b - Selector obj.\n//\n// Returns Number.\nfunction sortById(a, b) {\n return a.id - b.id;\n}\n\n// Public: Find all matching decendants of the context element.\n//\n// context - An Element\n//\n// Returns Array of {selector, data, elements} matches.\nSelectorSet.prototype.queryAll = function(context) {\n if (!this.selectors.length) {\n return [];\n }\n\n var matches = {},\n results = [];\n var els = this.querySelectorAll(this.selectors.join(', '), context);\n\n var i, j, len, len2, el, m, match, obj;\n for (i = 0, len = els.length; i < len; i++) {\n el = els[i];\n m = this.matches(el);\n for (j = 0, len2 = m.length; j < len2; j++) {\n obj = m[j];\n if (!matches[obj.id]) {\n match = {\n id: obj.id,\n selector: obj.selector,\n data: obj.data,\n elements: []\n };\n matches[obj.id] = match;\n results.push(match);\n } else {\n match = matches[obj.id];\n }\n match.elements.push(el);\n }\n }\n\n return results.sort(sortById);\n};\n\n// Public: Match element against all selectors in set.\n//\n// el - An Element\n//\n// Returns Array of {selector, data} matches.\nSelectorSet.prototype.matches = function(el) {\n if (!el) {\n return [];\n }\n\n var i, j, k, len, len2, len3, index, keys, objs, obj, id;\n var indexes = this.activeIndexes,\n matchedIds = {},\n matches = [];\n\n for (i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n keys = index.element(el);\n if (keys) {\n for (j = 0, len2 = keys.length; j < len2; j++) {\n if ((objs = index.map.get(keys[j]))) {\n for (k = 0, len3 = objs.length; k < len3; k++) {\n obj = objs[k];\n id = obj.id;\n if (!matchedIds[id] && this.matchesSelector(el, obj.selector)) {\n matchedIds[id] = true;\n matches.push(obj);\n }\n }\n }\n }\n }\n }\n\n return matches.sort(sortById);\n};\n","import SelectorSet from 'selector-set';\n\nvar bubbleEvents = {};\nvar captureEvents = {};\nvar propagationStopped = new WeakMap();\nvar immediatePropagationStopped = new WeakMap();\nvar currentTargets = new WeakMap();\nvar currentTargetDesc = Object.getOwnPropertyDescriptor(Event.prototype, 'currentTarget');\n\nfunction before(subject, verb, fn) {\n var source = subject[verb];\n\n subject[verb] = function () {\n fn.apply(subject, arguments);\n return source.apply(subject, arguments);\n };\n\n return subject;\n}\n\nfunction matches(selectors, target, reverse) {\n var queue = [];\n var node = target;\n\n do {\n if (node.nodeType !== 1) break;\n\n var _matches = selectors.matches(node);\n\n if (_matches.length) {\n var matched = {\n node: node,\n observers: _matches\n };\n\n if (reverse) {\n queue.unshift(matched);\n } else {\n queue.push(matched);\n }\n }\n } while (node = node.parentElement);\n\n return queue;\n}\n\nfunction trackPropagation() {\n propagationStopped.set(this, true);\n}\n\nfunction trackImmediate() {\n propagationStopped.set(this, true);\n immediatePropagationStopped.set(this, true);\n}\n\nfunction getCurrentTarget() {\n return currentTargets.get(this) || null;\n}\n\nfunction defineCurrentTarget(event, getter) {\n if (!currentTargetDesc) return;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n enumerable: true,\n get: getter || currentTargetDesc.get\n });\n}\n\nfunction canDispatch(event) {\n try {\n event.eventPhase;\n return true;\n } catch (_) {\n return false;\n }\n}\n\nfunction dispatch(event) {\n if (!canDispatch(event)) return;\n var events = event.eventPhase === 1 ? captureEvents : bubbleEvents;\n var selectors = events[event.type];\n if (!selectors) return;\n var queue = matches(selectors, event.target, event.eventPhase === 1);\n if (!queue.length) return;\n before(event, 'stopPropagation', trackPropagation);\n before(event, 'stopImmediatePropagation', trackImmediate);\n defineCurrentTarget(event, getCurrentTarget);\n\n for (var i = 0, len1 = queue.length; i < len1; i++) {\n if (propagationStopped.get(event)) break;\n var matched = queue[i];\n currentTargets.set(event, matched.node);\n\n for (var j = 0, len2 = matched.observers.length; j < len2; j++) {\n if (immediatePropagationStopped.get(event)) break;\n matched.observers[j].data.call(matched.node, event);\n }\n }\n\n currentTargets[\"delete\"](event);\n defineCurrentTarget(event);\n}\n\nfunction on(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n\n if (!selectors) {\n selectors = new SelectorSet();\n events[name] = selectors;\n document.addEventListener(name, dispatch, capture);\n }\n\n selectors.add(selector, fn);\n}\nfunction off(name, selector, fn) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var capture = options.capture ? true : false;\n var events = capture ? captureEvents : bubbleEvents;\n var selectors = events[name];\n if (!selectors) return;\n selectors.remove(selector, fn);\n if (selectors.size) return;\n delete events[name];\n document.removeEventListener(name, dispatch, capture);\n}\nfunction fire(target, name, detail) {\n return target.dispatchEvent(new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: detail\n }));\n}\n\nexport { fire, off, on };\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SlimSelect = factory());\n})(this, (function () { 'use strict';\n\n function generateID() {\n return Math.random().toString(36).substring(2, 10);\n }\n function hasClassInTree(element, className) {\n function hasClass(e, c) {\n if (c && e && e.classList && e.classList.contains(c)) {\n return e;\n }\n if (c && e && e.dataset && e.dataset.id && e.dataset.id === className) {\n return e;\n }\n return null;\n }\n function parentByClass(e, c) {\n if (!e || e === document) {\n return null;\n }\n else if (hasClass(e, c)) {\n return e;\n }\n else {\n return parentByClass(e.parentNode, c);\n }\n }\n return hasClass(element, className) || parentByClass(element, className);\n }\n function debounce(func, wait = 50, immediate = false) {\n let timeout;\n return function (...args) {\n const context = self;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n }\n function isEqual(a, b) {\n return JSON.stringify(a) === JSON.stringify(b);\n }\n function kebabCase(str) {\n const result = str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match) => '-' + match.toLowerCase());\n return str[0] === str[0].toUpperCase() ? result.substring(1) : result;\n }\n\n class Optgroup {\n constructor(optgroup) {\n this.id = !optgroup.id || optgroup.id === '' ? generateID() : optgroup.id;\n this.label = optgroup.label || '';\n this.selectAll = optgroup.selectAll === undefined ? false : optgroup.selectAll;\n this.selectAllText = optgroup.selectAllText || 'Select All';\n this.closable = optgroup.closable || 'off';\n this.options = [];\n if (optgroup.options) {\n for (const o of optgroup.options) {\n this.options.push(new Option(o));\n }\n }\n }\n }\n class Option {\n constructor(option) {\n this.id = !option.id || option.id === '' ? generateID() : option.id;\n this.value = option.value === undefined ? option.text : option.value;\n this.text = option.text || '';\n this.html = option.html || '';\n this.selected = option.selected !== undefined ? option.selected : false;\n this.display = option.display !== undefined ? option.display : true;\n this.disabled = option.disabled !== undefined ? option.disabled : false;\n this.mandatory = option.mandatory !== undefined ? option.mandatory : false;\n this.placeholder = option.placeholder !== undefined ? option.placeholder : false;\n this.class = option.class || '';\n this.style = option.style || '';\n this.data = option.data || {};\n }\n }\n class Store {\n constructor(type, data) {\n this.selectType = 'single';\n this.data = [];\n this.selectType = type;\n this.setData(data);\n }\n validateDataArray(data) {\n if (!Array.isArray(data)) {\n return new Error('Data must be an array');\n }\n for (let dataObj of data) {\n if (dataObj instanceof Optgroup || 'label' in dataObj) {\n if (!('label' in dataObj)) {\n return new Error('Optgroup must have a label');\n }\n if ('options' in dataObj && dataObj.options) {\n for (let option of dataObj.options) {\n return this.validateOption(option);\n }\n }\n }\n else if (dataObj instanceof Option || 'text' in dataObj) {\n return this.validateOption(dataObj);\n }\n else {\n return new Error('Data object must be a valid optgroup or option');\n }\n }\n return null;\n }\n validateOption(option) {\n if (!('text' in option)) {\n return new Error('Option must have a text');\n }\n return null;\n }\n partialToFullData(data) {\n let dataFinal = [];\n data.forEach((dataObj) => {\n if (dataObj instanceof Optgroup || 'label' in dataObj) {\n let optOptions = [];\n if ('options' in dataObj && dataObj.options) {\n dataObj.options.forEach((option) => {\n optOptions.push(new Option(option));\n });\n }\n if (optOptions.length > 0) {\n dataFinal.push(new Optgroup(dataObj));\n }\n }\n if (dataObj instanceof Option || 'text' in dataObj) {\n dataFinal.push(new Option(dataObj));\n }\n });\n return dataFinal;\n }\n setData(data) {\n this.data = this.partialToFullData(data);\n if (this.selectType === 'single') {\n this.setSelectedBy('value', this.getSelected());\n }\n }\n getData() {\n return this.filter(null, true);\n }\n getDataOptions() {\n return this.filter(null, false);\n }\n addOption(option) {\n this.setData(this.getData().concat(new Option(option)));\n }\n setSelectedBy(selectedType, selectedValues) {\n let firstOption = null;\n let hasSelected = false;\n for (let dataObj of this.data) {\n if (dataObj instanceof Optgroup) {\n for (let option of dataObj.options) {\n if (!firstOption) {\n firstOption = option;\n }\n option.selected = hasSelected ? false : selectedValues.includes(option[selectedType]);\n if (option.selected && this.selectType === 'single') {\n hasSelected = true;\n }\n }\n }\n if (dataObj instanceof Option) {\n if (!firstOption) {\n firstOption = dataObj;\n }\n dataObj.selected = hasSelected ? false : selectedValues.includes(dataObj[selectedType]);\n if (dataObj.selected && this.selectType === 'single') {\n hasSelected = true;\n }\n }\n }\n if (this.selectType === 'single' && firstOption && !hasSelected) {\n firstOption.selected = true;\n }\n }\n getSelected() {\n let selectedOptions = this.getSelectedOptions();\n let selectedValues = [];\n selectedOptions.forEach((option) => {\n selectedValues.push(option.value);\n });\n return selectedValues;\n }\n getSelectedOptions() {\n return this.filter((opt) => {\n return opt.selected;\n }, false);\n }\n getSelectedIDs() {\n let selectedOptions = this.getSelectedOptions();\n let selectedIDs = [];\n selectedOptions.forEach((op) => {\n selectedIDs.push(op.id);\n });\n return selectedIDs;\n }\n getOptgroupByID(id) {\n for (let dataObj of this.data) {\n if (dataObj instanceof Optgroup && dataObj.id === id) {\n return dataObj;\n }\n }\n return null;\n }\n getOptionByID(id) {\n let options = this.filter((opt) => {\n return opt.id === id;\n }, false);\n return options.length ? options[0] : null;\n }\n getSelectType() {\n return this.selectType;\n }\n getFirstOption() {\n let option = null;\n for (let dataObj of this.data) {\n if (dataObj instanceof Optgroup) {\n option = dataObj.options[0];\n }\n else if (dataObj instanceof Option) {\n option = dataObj;\n }\n if (option) {\n break;\n }\n }\n return option;\n }\n search(search, searchFilter) {\n search = search.trim();\n if (search === '') {\n return this.getData();\n }\n return this.filter((opt) => {\n return searchFilter(opt, search);\n }, true);\n }\n filter(filter, includeOptgroup) {\n const dataSearch = [];\n this.data.forEach((dataObj) => {\n if (dataObj instanceof Optgroup) {\n let optOptions = [];\n dataObj.options.forEach((option) => {\n if (!filter || filter(option)) {\n if (!includeOptgroup) {\n dataSearch.push(new Option(option));\n }\n else {\n optOptions.push(new Option(option));\n }\n }\n });\n if (optOptions.length > 0) {\n let optgroup = new Optgroup(dataObj);\n optgroup.options = optOptions;\n dataSearch.push(optgroup);\n }\n }\n if (dataObj instanceof Option) {\n if (!filter || filter(dataObj)) {\n dataSearch.push(new Option(dataObj));\n }\n }\n });\n return dataSearch;\n }\n }\n\n class Render {\n constructor(settings, store, callbacks) {\n this.classes = {\n main: 'ss-main',\n placeholder: 'ss-placeholder',\n values: 'ss-values',\n single: 'ss-single',\n max: 'ss-max',\n value: 'ss-value',\n valueText: 'ss-value-text',\n valueDelete: 'ss-value-delete',\n valueOut: 'ss-value-out',\n deselect: 'ss-deselect',\n deselectPath: 'M10,10 L90,90 M10,90 L90,10',\n arrow: 'ss-arrow',\n arrowClose: 'M10,30 L50,70 L90,30',\n arrowOpen: 'M10,70 L50,30 L90,70',\n content: 'ss-content',\n openAbove: 'ss-open-above',\n openBelow: 'ss-open-below',\n search: 'ss-search',\n searchHighlighter: 'ss-search-highlight',\n searching: 'ss-searching',\n addable: 'ss-addable',\n addablePath: 'M50,10 L50,90 M10,50 L90,50',\n list: 'ss-list',\n optgroup: 'ss-optgroup',\n optgroupLabel: 'ss-optgroup-label',\n optgroupLabelText: 'ss-optgroup-label-text',\n optgroupActions: 'ss-optgroup-actions',\n optgroupSelectAll: 'ss-selectall',\n optgroupSelectAllBox: 'M60,10 L10,10 L10,90 L90,90 L90,50',\n optgroupSelectAllCheck: 'M30,45 L50,70 L90,10',\n optgroupClosable: 'ss-closable',\n option: 'ss-option',\n optionDelete: 'M10,10 L90,90 M10,90 L90,10',\n highlighted: 'ss-highlighted',\n open: 'ss-open',\n close: 'ss-close',\n selected: 'ss-selected',\n error: 'ss-error',\n disabled: 'ss-disabled',\n hide: 'ss-hide',\n };\n this.store = store;\n this.settings = settings;\n this.callbacks = callbacks;\n this.main = this.mainDiv();\n this.content = this.contentDiv();\n this.updateClassStyles();\n this.updateAriaAttributes();\n this.settings.contentLocation.appendChild(this.content.main);\n }\n enable() {\n this.main.main.classList.remove(this.classes.disabled);\n this.content.search.input.disabled = false;\n }\n disable() {\n this.main.main.classList.add(this.classes.disabled);\n this.content.search.input.disabled = true;\n }\n open() {\n this.main.arrow.path.setAttribute('d', this.classes.arrowOpen);\n this.main.main.classList.add(this.settings.openPosition === 'up' ? this.classes.openAbove : this.classes.openBelow);\n this.main.main.setAttribute('aria-expanded', 'true');\n this.moveContent();\n const selectedOptions = this.store.getSelectedOptions();\n if (selectedOptions.length) {\n const selectedId = selectedOptions[selectedOptions.length - 1].id;\n const selectedOption = this.content.list.querySelector('[data-id=\"' + selectedId + '\"]');\n if (selectedOption) {\n this.ensureElementInView(this.content.list, selectedOption);\n }\n }\n }\n close() {\n this.main.main.classList.remove(this.classes.openAbove);\n this.main.main.classList.remove(this.classes.openBelow);\n this.main.main.setAttribute('aria-expanded', 'false');\n this.content.main.classList.remove(this.classes.openAbove);\n this.content.main.classList.remove(this.classes.openBelow);\n this.main.arrow.path.setAttribute('d', this.classes.arrowClose);\n }\n updateClassStyles() {\n this.main.main.className = '';\n this.main.main.removeAttribute('style');\n this.content.main.className = '';\n this.content.main.removeAttribute('style');\n this.main.main.classList.add(this.classes.main);\n this.content.main.classList.add(this.classes.content);\n if (this.settings.style !== '') {\n this.main.main.style.cssText = this.settings.style;\n this.content.main.style.cssText = this.settings.style;\n }\n if (this.settings.class.length) {\n for (const c of this.settings.class) {\n if (c.trim() !== '') {\n this.main.main.classList.add(c.trim());\n this.content.main.classList.add(c.trim());\n }\n }\n }\n if (this.settings.contentPosition === 'relative') {\n this.content.main.classList.add('ss-' + this.settings.contentPosition);\n }\n }\n updateAriaAttributes() {\n this.main.main.role = 'combobox';\n this.main.main.setAttribute('aria-haspopup', 'listbox');\n this.main.main.setAttribute('aria-controls', this.content.main.id);\n this.main.main.setAttribute('aria-expanded', 'false');\n this.content.main.setAttribute('role', 'listbox');\n }\n mainDiv() {\n var _a;\n const main = document.createElement('div');\n main.dataset.id = this.settings.id;\n main.setAttribute('aria-label', this.settings.ariaLabel);\n main.tabIndex = 0;\n main.onkeydown = (e) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n this.callbacks.open();\n e.key === 'ArrowDown' ? this.highlight('down') : this.highlight('up');\n return false;\n case 'Tab':\n this.callbacks.close();\n return true;\n case 'Enter':\n case ' ':\n this.callbacks.open();\n const highlighted = this.content.list.querySelector('.' + this.classes.highlighted);\n if (highlighted) {\n highlighted.click();\n }\n return false;\n case 'Escape':\n this.callbacks.close();\n return false;\n }\n return false;\n };\n main.onclick = (e) => {\n if (this.settings.disabled) {\n return;\n }\n this.settings.isOpen ? this.callbacks.close() : this.callbacks.open();\n };\n const values = document.createElement('div');\n values.classList.add(this.classes.values);\n main.appendChild(values);\n const deselect = document.createElement('div');\n deselect.classList.add(this.classes.deselect);\n const selectedOptions = (_a = this.store) === null || _a === void 0 ? void 0 : _a.getSelectedOptions();\n if (!this.settings.allowDeselect || (this.settings.isMultiple && selectedOptions && selectedOptions.length <= 0)) {\n deselect.classList.add(this.classes.hide);\n }\n else {\n deselect.classList.remove(this.classes.hide);\n }\n deselect.onclick = (e) => {\n e.stopPropagation();\n if (this.settings.disabled) {\n return;\n }\n let shouldDelete = true;\n const before = this.store.getSelectedOptions();\n const after = [];\n if (this.callbacks.beforeChange) {\n shouldDelete = this.callbacks.beforeChange(after, before) === true;\n }\n if (shouldDelete) {\n if (this.settings.isMultiple) {\n this.callbacks.setSelected([], false);\n this.updateDeselectAll();\n }\n else {\n const firstOption = this.store.getFirstOption();\n const value = firstOption ? firstOption.value : '';\n this.callbacks.setSelected(value, false);\n }\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(this.store.getSelectedOptions());\n }\n }\n };\n const deselectSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n deselectSvg.setAttribute('viewBox', '0 0 100 100');\n const deselectPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n deselectPath.setAttribute('d', this.classes.deselectPath);\n deselectSvg.appendChild(deselectPath);\n deselect.appendChild(deselectSvg);\n main.appendChild(deselect);\n const arrow = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n arrow.classList.add(this.classes.arrow);\n arrow.setAttribute('viewBox', '0 0 100 100');\n const arrowPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n arrowPath.setAttribute('d', this.classes.arrowClose);\n if (this.settings.alwaysOpen) {\n arrow.classList.add(this.classes.hide);\n }\n arrow.appendChild(arrowPath);\n main.appendChild(arrow);\n return {\n main: main,\n values: values,\n deselect: {\n main: deselect,\n svg: deselectSvg,\n path: deselectPath,\n },\n arrow: {\n main: arrow,\n path: arrowPath,\n },\n };\n }\n mainFocus(eventType) {\n if (eventType !== 'click') {\n this.main.main.focus({ preventScroll: true });\n }\n }\n placeholder() {\n const placeholderOption = this.store.filter((o) => o.placeholder, false);\n let placeholderText = this.settings.placeholderText;\n if (placeholderOption.length) {\n if (placeholderOption[0].html !== '') {\n placeholderText = placeholderOption[0].html;\n }\n else if (placeholderOption[0].text !== '') {\n placeholderText = placeholderOption[0].text;\n }\n }\n const placeholder = document.createElement('div');\n placeholder.classList.add(this.classes.placeholder);\n placeholder.innerHTML = placeholderText;\n return placeholder;\n }\n renderValues() {\n if (!this.settings.isMultiple) {\n this.renderSingleValue();\n return;\n }\n this.renderMultipleValues();\n this.updateDeselectAll();\n }\n renderSingleValue() {\n const selected = this.store.filter((o) => {\n return o.selected && !o.placeholder;\n }, false);\n const selectedSingle = selected.length > 0 ? selected[0] : null;\n if (!selectedSingle) {\n this.main.values.innerHTML = this.placeholder().outerHTML;\n }\n else {\n const singleValue = document.createElement('div');\n singleValue.classList.add(this.classes.single);\n if (selectedSingle.html) {\n singleValue.innerHTML = selectedSingle.html;\n }\n else {\n singleValue.innerText = selectedSingle.text;\n }\n this.main.values.innerHTML = singleValue.outerHTML;\n }\n if (!this.settings.allowDeselect || !selected.length) {\n this.main.deselect.main.classList.add(this.classes.hide);\n }\n else {\n this.main.deselect.main.classList.remove(this.classes.hide);\n }\n }\n renderMultipleValues() {\n let currentNodes = this.main.values.childNodes;\n let selectedOptions = this.store.filter((opt) => {\n return opt.selected && opt.display;\n }, false);\n if (selectedOptions.length === 0) {\n this.main.values.innerHTML = this.placeholder().outerHTML;\n return;\n }\n else {\n const placeholder = this.main.values.querySelector('.' + this.classes.placeholder);\n if (placeholder) {\n placeholder.remove();\n }\n }\n if (selectedOptions.length > this.settings.maxValuesShown) {\n const singleValue = document.createElement('div');\n singleValue.classList.add(this.classes.max);\n singleValue.textContent = this.settings.maxValuesMessage.replace('{number}', selectedOptions.length.toString());\n this.main.values.innerHTML = singleValue.outerHTML;\n return;\n }\n else {\n const maxValuesMessage = this.main.values.querySelector('.' + this.classes.max);\n if (maxValuesMessage) {\n maxValuesMessage.remove();\n }\n }\n let removeNodes = [];\n for (let i = 0; i < currentNodes.length; i++) {\n const node = currentNodes[i];\n const id = node.getAttribute('data-id');\n if (id) {\n const found = selectedOptions.filter((opt) => {\n return opt.id === id;\n }, false);\n if (!found.length) {\n removeNodes.push(node);\n }\n }\n }\n for (const n of removeNodes) {\n n.classList.add(this.classes.valueOut);\n setTimeout(() => {\n if (this.main.values.hasChildNodes() && this.main.values.contains(n)) {\n this.main.values.removeChild(n);\n }\n }, 100);\n }\n currentNodes = this.main.values.childNodes;\n for (let d = 0; d < selectedOptions.length; d++) {\n let shouldAdd = true;\n for (let i = 0; i < currentNodes.length; i++) {\n if (selectedOptions[d].id === String(currentNodes[i].dataset.id)) {\n shouldAdd = false;\n }\n }\n if (shouldAdd) {\n if (this.settings.keepOrder) {\n this.main.values.appendChild(this.multipleValue(selectedOptions[d]));\n }\n else {\n if (currentNodes.length === 0) {\n this.main.values.appendChild(this.multipleValue(selectedOptions[d]));\n }\n else if (d === 0) {\n this.main.values.insertBefore(this.multipleValue(selectedOptions[d]), currentNodes[d]);\n }\n else {\n currentNodes[d - 1].insertAdjacentElement('afterend', this.multipleValue(selectedOptions[d]));\n }\n }\n }\n }\n }\n multipleValue(option) {\n const value = document.createElement('div');\n value.classList.add(this.classes.value);\n value.dataset.id = option.id;\n const text = document.createElement('div');\n text.classList.add(this.classes.valueText);\n text.innerText = option.text;\n value.appendChild(text);\n if (!option.mandatory) {\n const deleteDiv = document.createElement('div');\n deleteDiv.classList.add(this.classes.valueDelete);\n deleteDiv.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (this.settings.disabled) {\n return;\n }\n let shouldDelete = true;\n const before = this.store.getSelectedOptions();\n const after = before.filter((o) => {\n return o.selected && o.id !== option.id;\n }, true);\n if (this.settings.minSelected && after.length < this.settings.minSelected) {\n return;\n }\n if (this.callbacks.beforeChange) {\n shouldDelete = this.callbacks.beforeChange(after, before) === true;\n }\n if (shouldDelete) {\n let selectedValues = [];\n for (const o of after) {\n if (o instanceof Optgroup) {\n for (const c of o.options) {\n selectedValues.push(c.value);\n }\n }\n if (o instanceof Option) {\n selectedValues.push(o.value);\n }\n }\n this.callbacks.setSelected(selectedValues, false);\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(after);\n }\n this.updateDeselectAll();\n }\n };\n const deleteSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n deleteSvg.setAttribute('viewBox', '0 0 100 100');\n const deletePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n deletePath.setAttribute('d', this.classes.optionDelete);\n deleteSvg.appendChild(deletePath);\n deleteDiv.appendChild(deleteSvg);\n value.appendChild(deleteDiv);\n }\n return value;\n }\n contentDiv() {\n const main = document.createElement('div');\n main.dataset.id = this.settings.id;\n const search = this.searchDiv();\n main.appendChild(search.main);\n const list = this.listDiv();\n main.appendChild(list);\n return {\n main: main,\n search: search,\n list: list,\n };\n }\n moveContent() {\n if (this.settings.contentPosition === 'relative') {\n this.moveContentBelow();\n return;\n }\n if (this.settings.openPosition === 'down') {\n this.moveContentBelow();\n return;\n }\n else if (this.settings.openPosition === 'up') {\n this.moveContentAbove();\n return;\n }\n if (this.putContent() === 'up') {\n this.moveContentAbove();\n }\n else {\n this.moveContentBelow();\n }\n }\n searchDiv() {\n const main = document.createElement('div');\n const input = document.createElement('input');\n const addable = document.createElement('div');\n main.classList.add(this.classes.search);\n const searchReturn = {\n main,\n input,\n };\n if (!this.settings.showSearch) {\n main.classList.add(this.classes.hide);\n input.readOnly = true;\n }\n input.type = 'search';\n input.placeholder = this.settings.searchPlaceholder;\n input.tabIndex = -1;\n input.setAttribute('aria-label', this.settings.searchPlaceholder);\n input.setAttribute('autocapitalize', 'off');\n input.setAttribute('autocomplete', 'off');\n input.setAttribute('autocorrect', 'off');\n input.oninput = debounce((e) => {\n this.callbacks.search(e.target.value);\n }, 100);\n input.onkeydown = (e) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n e.key === 'ArrowDown' ? this.highlight('down') : this.highlight('up');\n return false;\n case 'Tab':\n this.callbacks.close();\n return true;\n case 'Escape':\n this.callbacks.close();\n return false;\n case 'Enter':\n case ' ':\n if (this.callbacks.addable && e.ctrlKey) {\n addable.click();\n return false;\n }\n else {\n const highlighted = this.content.list.querySelector('.' + this.classes.highlighted);\n if (highlighted) {\n highlighted.click();\n return false;\n }\n }\n return true;\n }\n return true;\n };\n main.appendChild(input);\n if (this.callbacks.addable) {\n addable.classList.add(this.classes.addable);\n const plus = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n plus.setAttribute('viewBox', '0 0 100 100');\n const plusPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n plusPath.setAttribute('d', this.classes.addablePath);\n plus.appendChild(plusPath);\n addable.appendChild(plus);\n addable.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.callbacks.addable) {\n return;\n }\n const inputValue = this.content.search.input.value.trim();\n if (inputValue === '') {\n this.content.search.input.focus();\n return;\n }\n const runFinish = (oo) => {\n let newOption = new Option(oo);\n this.callbacks.addOption(newOption);\n if (this.settings.isMultiple) {\n let values = this.store.getSelected();\n values.push(newOption.value);\n this.callbacks.setSelected(values, true);\n }\n else {\n this.callbacks.setSelected([newOption.value], true);\n }\n this.callbacks.search('');\n if (this.settings.closeOnSelect) {\n setTimeout(() => {\n this.callbacks.close();\n }, 100);\n }\n };\n const addableValue = this.callbacks.addable(inputValue);\n if (addableValue === false || addableValue === undefined || addableValue === null) {\n return;\n }\n if (addableValue instanceof Promise) {\n addableValue.then((value) => {\n if (typeof value === 'string') {\n runFinish({\n text: value,\n value: value,\n });\n }\n else {\n runFinish(value);\n }\n });\n }\n else if (typeof addableValue === 'string') {\n runFinish({\n text: addableValue,\n value: addableValue,\n });\n }\n else {\n runFinish(addableValue);\n }\n return;\n };\n main.appendChild(addable);\n searchReturn.addable = {\n main: addable,\n svg: plus,\n path: plusPath,\n };\n }\n return searchReturn;\n }\n searchFocus() {\n this.content.search.input.focus();\n }\n getOptions(notPlaceholder = false, notDisabled = false, notHidden = false) {\n let query = '.' + this.classes.option;\n if (notPlaceholder) {\n query += ':not(.' + this.classes.placeholder + ')';\n }\n if (notDisabled) {\n query += ':not(.' + this.classes.disabled + ')';\n }\n if (notHidden) {\n query += ':not(.' + this.classes.hide + ')';\n }\n return Array.from(this.content.list.querySelectorAll(query));\n }\n highlight(dir) {\n const options = this.getOptions(true, true, true);\n if (options.length === 0) {\n return;\n }\n if (options.length === 1) {\n if (!options[0].classList.contains(this.classes.highlighted)) {\n options[0].classList.add(this.classes.highlighted);\n return;\n }\n }\n let highlighted = false;\n for (const o of options) {\n if (o.classList.contains(this.classes.highlighted)) {\n highlighted = true;\n }\n }\n if (!highlighted) {\n for (const o of options) {\n if (o.classList.contains(this.classes.selected)) {\n o.classList.add(this.classes.highlighted);\n break;\n }\n }\n }\n for (let i = 0; i < options.length; i++) {\n if (options[i].classList.contains(this.classes.highlighted)) {\n const prevOption = options[i];\n prevOption.classList.remove(this.classes.highlighted);\n const prevParent = prevOption.parentElement;\n if (prevParent && prevParent.classList.contains(this.classes.open)) {\n const optgroupLabel = prevParent.querySelector('.' + this.classes.optgroupLabel);\n if (optgroupLabel) {\n optgroupLabel.click();\n }\n }\n let selectOption = options[dir === 'down' ? (i + 1 < options.length ? i + 1 : 0) : i - 1 >= 0 ? i - 1 : options.length - 1];\n selectOption.classList.add(this.classes.highlighted);\n this.ensureElementInView(this.content.list, selectOption);\n const selectParent = selectOption.parentElement;\n if (selectParent && selectParent.classList.contains(this.classes.close)) {\n const optgroupLabel = selectParent.querySelector('.' + this.classes.optgroupLabel);\n if (optgroupLabel) {\n optgroupLabel.click();\n }\n }\n return;\n }\n }\n options[dir === 'down' ? 0 : options.length - 1].classList.add(this.classes.highlighted);\n this.ensureElementInView(this.content.list, options[dir === 'down' ? 0 : options.length - 1]);\n }\n listDiv() {\n const options = document.createElement('div');\n options.classList.add(this.classes.list);\n return options;\n }\n renderError(error) {\n this.content.list.innerHTML = '';\n const errorDiv = document.createElement('div');\n errorDiv.classList.add(this.classes.error);\n errorDiv.textContent = error;\n this.content.list.appendChild(errorDiv);\n }\n renderSearching() {\n this.content.list.innerHTML = '';\n const searchingDiv = document.createElement('div');\n searchingDiv.classList.add(this.classes.searching);\n searchingDiv.textContent = this.settings.searchingText;\n this.content.list.appendChild(searchingDiv);\n }\n renderOptions(data) {\n this.content.list.innerHTML = '';\n if (data.length === 0) {\n const noResults = document.createElement('div');\n noResults.classList.add(this.classes.search);\n noResults.innerHTML = this.settings.searchText;\n this.content.list.appendChild(noResults);\n return;\n }\n for (const d of data) {\n if (d instanceof Optgroup) {\n const optgroupEl = document.createElement('div');\n optgroupEl.classList.add(this.classes.optgroup);\n const optgroupLabel = document.createElement('div');\n optgroupLabel.classList.add(this.classes.optgroupLabel);\n optgroupEl.appendChild(optgroupLabel);\n const optgroupLabelText = document.createElement('div');\n optgroupLabelText.classList.add(this.classes.optgroupLabelText);\n optgroupLabelText.textContent = d.label;\n optgroupLabel.appendChild(optgroupLabelText);\n const optgroupActions = document.createElement('div');\n optgroupActions.classList.add(this.classes.optgroupActions);\n optgroupLabel.appendChild(optgroupActions);\n if (this.settings.isMultiple && d.selectAll) {\n const selectAll = document.createElement('div');\n selectAll.classList.add(this.classes.optgroupSelectAll);\n let allSelected = true;\n for (const o of d.options) {\n if (!o.selected) {\n allSelected = false;\n break;\n }\n }\n if (allSelected) {\n selectAll.classList.add(this.classes.selected);\n }\n const selectAllText = document.createElement('span');\n selectAllText.textContent = d.selectAllText;\n selectAll.appendChild(selectAllText);\n const selectAllSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n selectAllSvg.setAttribute('viewBox', '0 0 100 100');\n selectAll.appendChild(selectAllSvg);\n const selectAllBox = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n selectAllBox.setAttribute('d', this.classes.optgroupSelectAllBox);\n selectAllSvg.appendChild(selectAllBox);\n const selectAllCheck = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n selectAllCheck.setAttribute('d', this.classes.optgroupSelectAllCheck);\n selectAllSvg.appendChild(selectAllCheck);\n selectAll.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const currentSelected = this.store.getSelected();\n if (allSelected) {\n const newSelected = currentSelected.filter((s) => {\n for (const o of d.options) {\n if (s === o.value) {\n return false;\n }\n }\n return true;\n });\n this.callbacks.setSelected(newSelected, true);\n return;\n }\n else {\n const newSelected = currentSelected.concat(d.options.map((o) => o.value));\n for (const o of d.options) {\n if (!this.store.getOptionByID(o.id)) {\n this.callbacks.addOption(o);\n }\n }\n this.callbacks.setSelected(newSelected, true);\n return;\n }\n });\n optgroupActions.appendChild(selectAll);\n }\n if (d.closable !== 'off') {\n const optgroupClosable = document.createElement('div');\n optgroupClosable.classList.add(this.classes.optgroupClosable);\n const optgroupClosableSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n optgroupClosableSvg.setAttribute('viewBox', '0 0 100 100');\n optgroupClosableSvg.classList.add(this.classes.arrow);\n optgroupClosable.appendChild(optgroupClosableSvg);\n const optgroupClosableArrow = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n optgroupClosableSvg.appendChild(optgroupClosableArrow);\n if (d.options.some((o) => o.selected) || this.content.search.input.value.trim() !== '') {\n optgroupClosable.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else if (d.closable === 'open') {\n optgroupEl.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else if (d.closable === 'close') {\n optgroupEl.classList.add(this.classes.close);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);\n }\n optgroupLabel.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (optgroupEl.classList.contains(this.classes.close)) {\n optgroupEl.classList.remove(this.classes.close);\n optgroupEl.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else {\n optgroupEl.classList.remove(this.classes.open);\n optgroupEl.classList.add(this.classes.close);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);\n }\n });\n optgroupActions.appendChild(optgroupClosable);\n }\n optgroupEl.appendChild(optgroupLabel);\n for (const o of d.options) {\n optgroupEl.appendChild(this.option(o));\n }\n this.content.list.appendChild(optgroupEl);\n }\n if (d instanceof Option) {\n this.content.list.appendChild(this.option(d));\n }\n }\n }\n option(option) {\n if (option.placeholder) {\n const placeholder = document.createElement('div');\n placeholder.classList.add(this.classes.option);\n placeholder.classList.add(this.classes.hide);\n return placeholder;\n }\n const optionEl = document.createElement('div');\n optionEl.dataset.id = option.id;\n optionEl.id = option.id;\n optionEl.classList.add(this.classes.option);\n optionEl.setAttribute('role', 'option');\n if (option.class) {\n option.class.split(' ').forEach((dataClass) => {\n optionEl.classList.add(dataClass);\n });\n }\n if (option.style) {\n optionEl.style.cssText = option.style;\n }\n if (this.settings.searchHighlight && this.content.search.input.value.trim() !== '') {\n optionEl.innerHTML = this.highlightText(option.html !== '' ? option.html : option.text, this.content.search.input.value, this.classes.searchHighlighter);\n }\n else if (option.html !== '') {\n optionEl.innerHTML = option.html;\n }\n else {\n optionEl.textContent = option.text;\n }\n if (this.settings.showOptionTooltips && optionEl.textContent) {\n optionEl.setAttribute('title', optionEl.textContent);\n }\n if (!option.display) {\n optionEl.classList.add(this.classes.hide);\n }\n if (option.disabled) {\n optionEl.classList.add(this.classes.disabled);\n }\n if (option.selected && this.settings.hideSelected) {\n optionEl.classList.add(this.classes.hide);\n }\n if (option.selected) {\n optionEl.classList.add(this.classes.selected);\n optionEl.setAttribute('aria-selected', 'true');\n this.main.main.setAttribute('aria-activedescendant', optionEl.id);\n }\n else {\n optionEl.classList.remove(this.classes.selected);\n optionEl.setAttribute('aria-selected', 'false');\n }\n optionEl.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const selectedOptions = this.store.getSelected();\n const element = e.currentTarget;\n const elementID = String(element.dataset.id);\n if (option.disabled || (option.selected && !this.settings.allowDeselect)) {\n return;\n }\n if ((this.settings.isMultiple && this.settings.maxSelected <= selectedOptions.length && !option.selected) ||\n (this.settings.isMultiple && this.settings.minSelected >= selectedOptions.length && option.selected)) {\n return;\n }\n let shouldUpdate = false;\n const before = this.store.getSelectedOptions();\n let after = [];\n if (this.settings.isMultiple) {\n if (option.selected) {\n after = before.filter((o) => o.id !== elementID);\n }\n else {\n after = before.concat(option);\n }\n }\n if (!this.settings.isMultiple) {\n if (option.selected) {\n after = [];\n }\n else {\n after = [option];\n }\n }\n if (!this.callbacks.beforeChange) {\n shouldUpdate = true;\n }\n if (this.callbacks.beforeChange) {\n if (this.callbacks.beforeChange(after, before) === false) {\n shouldUpdate = false;\n }\n else {\n shouldUpdate = true;\n }\n }\n if (shouldUpdate) {\n if (!this.store.getOptionByID(elementID)) {\n this.callbacks.addOption(option);\n }\n this.callbacks.setSelected(after.map((o) => o.value), false);\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(after);\n }\n }\n });\n return optionEl;\n }\n destroy() {\n this.main.main.remove();\n this.content.main.remove();\n }\n highlightText(str, search, className) {\n let completedString = str;\n const regex = new RegExp('(' + search.trim() + ')(?![^<]*>[^<>]*${originalTextFoundByRegex}`);\n return completedString;\n }\n moveContentAbove() {\n const mainHeight = this.main.main.offsetHeight;\n const contentHeight = this.content.main.offsetHeight;\n this.main.main.classList.remove(this.classes.openBelow);\n this.main.main.classList.add(this.classes.openAbove);\n this.content.main.classList.remove(this.classes.openBelow);\n this.content.main.classList.add(this.classes.openAbove);\n const containerRect = this.main.main.getBoundingClientRect();\n this.content.main.style.margin = '-' + (mainHeight + contentHeight - 1) + 'px 0px 0px 0px';\n this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';\n this.content.main.style.left = containerRect.left + window.scrollX + 'px';\n this.content.main.style.width = containerRect.width + 'px';\n }\n moveContentBelow() {\n this.main.main.classList.remove(this.classes.openAbove);\n this.main.main.classList.add(this.classes.openBelow);\n this.content.main.classList.remove(this.classes.openAbove);\n this.content.main.classList.add(this.classes.openBelow);\n const containerRect = this.main.main.getBoundingClientRect();\n this.content.main.style.margin = '-1px 0px 0px 0px';\n if (this.settings.contentPosition !== 'relative') {\n this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';\n this.content.main.style.left = containerRect.left + window.scrollX + 'px';\n this.content.main.style.width = containerRect.width + 'px';\n }\n }\n ensureElementInView(container, element) {\n const cTop = container.scrollTop + container.offsetTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n if (eTop < cTop) {\n container.scrollTop -= cTop - eTop;\n }\n else if (eBottom > cBottom) {\n container.scrollTop += eBottom - cBottom;\n }\n }\n putContent() {\n const mainHeight = this.main.main.offsetHeight;\n const mainRect = this.main.main.getBoundingClientRect();\n const contentHeight = this.content.main.offsetHeight;\n const spaceBelow = window.innerHeight - (mainRect.top + mainHeight);\n if (spaceBelow <= contentHeight) {\n if (mainRect.top > contentHeight) {\n return 'up';\n }\n else {\n return 'down';\n }\n }\n return 'down';\n }\n updateDeselectAll() {\n if (!this.store || !this.settings) {\n return;\n }\n const selected = this.store.getSelectedOptions();\n const hasSelectedItems = selected && selected.length > 0;\n const isMultiple = this.settings.isMultiple;\n const allowDeselect = this.settings.allowDeselect;\n const deselectButton = this.main.deselect.main;\n const hideClass = this.classes.hide;\n if (allowDeselect && !(isMultiple && !hasSelectedItems)) {\n deselectButton.classList.remove(hideClass);\n }\n else {\n deselectButton.classList.add(hideClass);\n }\n }\n }\n\n class Select {\n constructor(select) {\n this.listen = false;\n this.observer = null;\n this.select = select;\n this.valueChange = this.valueChange.bind(this);\n this.select.addEventListener('change', this.valueChange, {\n passive: true,\n });\n this.observer = new MutationObserver(this.observeCall.bind(this));\n this.changeListen(true);\n }\n enable() {\n this.select.disabled = false;\n }\n disable() {\n this.select.disabled = true;\n }\n hideUI() {\n this.select.tabIndex = -1;\n this.select.style.display = 'none';\n this.select.setAttribute('aria-hidden', 'true');\n }\n showUI() {\n this.select.removeAttribute('tabindex');\n this.select.style.display = '';\n this.select.removeAttribute('aria-hidden');\n }\n changeListen(listen) {\n this.listen = listen;\n if (listen) {\n if (this.observer) {\n this.observer.observe(this.select, {\n subtree: true,\n childList: true,\n attributes: true,\n });\n }\n }\n if (!listen) {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n }\n valueChange(ev) {\n if (this.listen && this.onValueChange) {\n this.onValueChange(this.getSelectedValues());\n }\n return true;\n }\n observeCall(mutations) {\n if (!this.listen) {\n return;\n }\n let classChanged = false;\n let disabledChanged = false;\n let optgroupOptionChanged = false;\n for (const m of mutations) {\n if (m.target === this.select) {\n if (m.attributeName === 'disabled') {\n disabledChanged = true;\n }\n if (m.attributeName === 'class') {\n classChanged = true;\n }\n }\n if (m.target.nodeName === 'OPTGROUP' || m.target.nodeName === 'OPTION') {\n optgroupOptionChanged = true;\n }\n }\n if (classChanged && this.onClassChange) {\n this.onClassChange(this.select.className.split(' '));\n }\n if (disabledChanged && this.onDisabledChange) {\n this.changeListen(false);\n this.onDisabledChange(this.select.disabled);\n this.changeListen(true);\n }\n if (optgroupOptionChanged && this.onOptionsChange) {\n this.changeListen(false);\n this.onOptionsChange(this.getData());\n this.changeListen(true);\n }\n }\n getData() {\n let data = [];\n const nodes = this.select.childNodes;\n for (const n of nodes) {\n if (n.nodeName === 'OPTGROUP') {\n data.push(this.getDataFromOptgroup(n));\n }\n if (n.nodeName === 'OPTION') {\n data.push(this.getDataFromOption(n));\n }\n }\n return data;\n }\n getDataFromOptgroup(optgroup) {\n let data = {\n id: optgroup.id,\n label: optgroup.label,\n selectAll: optgroup.dataset ? optgroup.dataset.selectall === 'true' : false,\n selectAllText: optgroup.dataset ? optgroup.dataset.selectalltext : 'Select all',\n closable: optgroup.dataset ? optgroup.dataset.closable : 'off',\n options: [],\n };\n const options = optgroup.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTION') {\n data.options.push(this.getDataFromOption(o));\n }\n }\n return data;\n }\n getDataFromOption(option) {\n return {\n id: option.id,\n value: option.value,\n text: option.text,\n html: option.dataset && option.dataset.html ? option.dataset.html : '',\n selected: option.selected,\n display: option.style.display === 'none' ? false : true,\n disabled: option.disabled,\n mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,\n placeholder: option.dataset.placeholder === 'true',\n class: option.className,\n style: option.style.cssText,\n data: option.dataset,\n };\n }\n getSelectedValues() {\n let values = [];\n const options = this.select.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTGROUP') {\n const optgroupOptions = o.childNodes;\n for (const oo of optgroupOptions) {\n if (oo.nodeName === 'OPTION') {\n const option = oo;\n if (option.selected) {\n values.push(option.value);\n }\n }\n }\n }\n if (o.nodeName === 'OPTION') {\n const option = o;\n if (option.selected) {\n values.push(option.value);\n }\n }\n }\n return values;\n }\n setSelected(value) {\n this.changeListen(false);\n const options = this.select.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTGROUP') {\n const optgroup = o;\n const optgroupOptions = optgroup.childNodes;\n for (const oo of optgroupOptions) {\n if (oo.nodeName === 'OPTION') {\n const option = oo;\n option.selected = value.includes(option.value);\n }\n }\n }\n if (o.nodeName === 'OPTION') {\n const option = o;\n option.selected = value.includes(option.value);\n }\n }\n this.changeListen(true);\n }\n updateSelect(id, style, classes) {\n this.changeListen(false);\n if (id) {\n this.select.dataset.id = id;\n }\n if (style) {\n this.select.style.cssText = style;\n }\n if (classes) {\n this.select.className = '';\n classes.forEach((c) => {\n if (c.trim() !== '') {\n this.select.classList.add(c.trim());\n }\n });\n }\n this.changeListen(true);\n }\n updateOptions(data) {\n this.changeListen(false);\n this.select.innerHTML = '';\n for (const d of data) {\n if (d instanceof Optgroup) {\n this.select.appendChild(this.createOptgroup(d));\n }\n if (d instanceof Option) {\n this.select.appendChild(this.createOption(d));\n }\n }\n this.select.dispatchEvent(new Event('change'));\n this.changeListen(true);\n }\n createOptgroup(optgroup) {\n const optgroupEl = document.createElement('optgroup');\n optgroupEl.id = optgroup.id;\n optgroupEl.label = optgroup.label;\n if (optgroup.selectAll) {\n optgroupEl.dataset.selectAll = 'true';\n }\n if (optgroup.closable !== 'off') {\n optgroupEl.dataset.closable = optgroup.closable;\n }\n if (optgroup.options) {\n for (const o of optgroup.options) {\n optgroupEl.appendChild(this.createOption(o));\n }\n }\n return optgroupEl;\n }\n createOption(info) {\n const optionEl = document.createElement('option');\n optionEl.id = info.id;\n optionEl.value = info.value;\n optionEl.innerHTML = info.text;\n if (info.html !== '') {\n optionEl.setAttribute('data-html', info.html);\n }\n if (info.selected) {\n optionEl.selected = info.selected;\n }\n if (info.disabled) {\n optionEl.disabled = true;\n }\n if (info.display === false) {\n optionEl.style.display = 'none';\n }\n if (info.placeholder) {\n optionEl.setAttribute('data-placeholder', 'true');\n }\n if (info.mandatory) {\n optionEl.setAttribute('data-mandatory', 'true');\n }\n if (info.class) {\n info.class.split(' ').forEach((optionClass) => {\n optionEl.classList.add(optionClass);\n });\n }\n if (info.data && typeof info.data === 'object') {\n Object.keys(info.data).forEach((key) => {\n optionEl.setAttribute('data-' + kebabCase(key), info.data[key]);\n });\n }\n return optionEl;\n }\n destroy() {\n this.changeListen(false);\n this.select.removeEventListener('change', this.valueChange);\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n delete this.select.dataset.id;\n this.showUI();\n }\n }\n\n class Settings {\n constructor(settings) {\n this.id = '';\n this.style = '';\n this.class = [];\n this.isMultiple = false;\n this.isOpen = false;\n this.isFullOpen = false;\n this.intervalMove = null;\n if (!settings) {\n settings = {};\n }\n this.id = 'ss-' + generateID();\n this.style = settings.style || '';\n this.class = settings.class || [];\n this.disabled = settings.disabled !== undefined ? settings.disabled : false;\n this.alwaysOpen = settings.alwaysOpen !== undefined ? settings.alwaysOpen : false;\n this.showSearch = settings.showSearch !== undefined ? settings.showSearch : true;\n this.ariaLabel = settings.ariaLabel || 'Combobox';\n this.searchPlaceholder = settings.searchPlaceholder || 'Search';\n this.searchText = settings.searchText || 'No Results';\n this.searchingText = settings.searchingText || 'Searching...';\n this.searchHighlight = settings.searchHighlight !== undefined ? settings.searchHighlight : false;\n this.closeOnSelect = settings.closeOnSelect !== undefined ? settings.closeOnSelect : true;\n this.contentLocation = settings.contentLocation || document.body;\n this.contentPosition = settings.contentPosition || 'absolute';\n this.openPosition = settings.openPosition || 'auto';\n this.placeholderText = settings.placeholderText !== undefined ? settings.placeholderText : 'Select Value';\n this.allowDeselect = settings.allowDeselect !== undefined ? settings.allowDeselect : false;\n this.hideSelected = settings.hideSelected !== undefined ? settings.hideSelected : false;\n this.keepOrder = settings.keepOrder !== undefined ? settings.keepOrder : false;\n this.showOptionTooltips = settings.showOptionTooltips !== undefined ? settings.showOptionTooltips : false;\n this.minSelected = settings.minSelected || 0;\n this.maxSelected = settings.maxSelected || 1000;\n this.timeoutDelay = settings.timeoutDelay || 200;\n this.maxValuesShown = settings.maxValuesShown || 20;\n this.maxValuesMessage = settings.maxValuesMessage || '{number} selected';\n }\n }\n\n class SlimSelect {\n constructor(config) {\n var _a;\n this.events = {\n search: undefined,\n searchFilter: (opt, search) => {\n return opt.text.toLowerCase().indexOf(search.toLowerCase()) !== -1;\n },\n addable: undefined,\n beforeChange: undefined,\n afterChange: undefined,\n beforeOpen: undefined,\n afterOpen: undefined,\n beforeClose: undefined,\n afterClose: undefined,\n };\n this.windowResize = debounce(() => {\n if (!this.settings.isOpen && !this.settings.isFullOpen) {\n return;\n }\n this.render.moveContent();\n });\n this.windowScroll = debounce(() => {\n if (!this.settings.isOpen && !this.settings.isFullOpen) {\n return;\n }\n this.render.moveContent();\n });\n this.documentClick = (e) => {\n if (!this.settings.isOpen) {\n return;\n }\n if (e.target && !hasClassInTree(e.target, this.settings.id)) {\n this.close(e.type);\n }\n };\n this.windowVisibilityChange = () => {\n if (document.hidden) {\n this.close();\n }\n };\n this.selectEl = (typeof config.select === 'string' ? document.querySelector(config.select) : config.select);\n if (!this.selectEl) {\n if (config.events && config.events.error) {\n config.events.error(new Error('Could not find select element'));\n }\n return;\n }\n if (this.selectEl.tagName !== 'SELECT') {\n if (config.events && config.events.error) {\n config.events.error(new Error('Element isnt of type select'));\n }\n return;\n }\n if (this.selectEl.dataset.ssid) {\n this.destroy();\n }\n this.settings = new Settings(config.settings);\n const debounceEvents = ['afterChange', 'beforeOpen', 'afterOpen', 'beforeClose', 'afterClose'];\n for (const key in config.events) {\n if (!config.events.hasOwnProperty(key)) {\n continue;\n }\n if (debounceEvents.indexOf(key) !== -1) {\n this.events[key] = debounce(config.events[key], 100);\n }\n else {\n this.events[key] = config.events[key];\n }\n }\n this.settings.disabled = ((_a = config.settings) === null || _a === void 0 ? void 0 : _a.disabled) ? config.settings.disabled : this.selectEl.disabled;\n this.settings.isMultiple = this.selectEl.multiple;\n this.settings.style = this.selectEl.style.cssText;\n this.settings.class = this.selectEl.className.split(' ');\n this.select = new Select(this.selectEl);\n this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class);\n this.select.hideUI();\n this.select.onValueChange = (values) => {\n this.setSelected(values);\n };\n this.select.onClassChange = (classes) => {\n this.settings.class = classes;\n this.render.updateClassStyles();\n };\n this.select.onDisabledChange = (disabled) => {\n if (disabled) {\n this.disable();\n }\n else {\n this.enable();\n }\n };\n this.select.onOptionsChange = (data) => {\n this.setData(data);\n };\n this.store = new Store(this.settings.isMultiple ? 'multiple' : 'single', config.data ? config.data : this.select.getData());\n if (config.data) {\n this.select.updateOptions(this.store.getData());\n }\n const renderCallbacks = {\n open: this.open.bind(this),\n close: this.close.bind(this),\n addable: this.events.addable ? this.events.addable : undefined,\n setSelected: this.setSelected.bind(this),\n addOption: this.addOption.bind(this),\n search: this.search.bind(this),\n beforeChange: this.events.beforeChange,\n afterChange: this.events.afterChange,\n };\n this.render = new Render(this.settings, this.store, renderCallbacks);\n this.render.renderValues();\n this.render.renderOptions(this.store.getData());\n const selectAriaLabel = this.selectEl.getAttribute('aria-label');\n const selectAriaLabelledBy = this.selectEl.getAttribute('aria-labelledby');\n if (selectAriaLabel) {\n this.render.main.main.setAttribute('aria-label', selectAriaLabel);\n }\n else if (selectAriaLabelledBy) {\n this.render.main.main.setAttribute('aria-labelledby', selectAriaLabelledBy);\n }\n if (this.selectEl.parentNode) {\n this.selectEl.parentNode.insertBefore(this.render.main.main, this.selectEl.nextSibling);\n }\n window.addEventListener('resize', this.windowResize, false);\n if (this.settings.openPosition === 'auto') {\n window.addEventListener('scroll', this.windowScroll, false);\n }\n document.addEventListener('visibilitychange', this.windowVisibilityChange);\n if (this.settings.disabled) {\n this.disable();\n }\n if (this.settings.alwaysOpen) {\n this.open();\n }\n this.selectEl.slim = this;\n }\n enable() {\n this.settings.disabled = false;\n this.select.enable();\n this.render.enable();\n }\n disable() {\n this.settings.disabled = true;\n this.select.disable();\n this.render.disable();\n }\n getData() {\n return this.store.getData();\n }\n setData(data) {\n const selected = this.store.getSelected();\n const err = this.store.validateDataArray(data);\n if (err) {\n if (this.events.error) {\n this.events.error(err);\n }\n return;\n }\n this.store.setData(data);\n const dataClean = this.store.getData();\n this.select.updateOptions(dataClean);\n this.render.renderValues();\n this.render.renderOptions(dataClean);\n if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n getSelected() {\n return this.store.getSelected();\n }\n setSelected(value, runAfterChange = true) {\n const selected = this.store.getSelected();\n this.store.setSelectedBy('value', Array.isArray(value) ? value : [value]);\n const data = this.store.getData();\n this.select.updateOptions(data);\n this.render.renderValues();\n if (this.render.content.search.input.value !== '') {\n this.search(this.render.content.search.input.value);\n }\n else {\n this.render.renderOptions(data);\n }\n if (runAfterChange && this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n addOption(option) {\n const selected = this.store.getSelected();\n if (!this.store.getDataOptions().some((o) => { var _a; return o.value === ((_a = option.value) !== null && _a !== void 0 ? _a : option.text); })) {\n this.store.addOption(option);\n }\n const data = this.store.getData();\n this.select.updateOptions(data);\n this.render.renderValues();\n this.render.renderOptions(data);\n if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n open() {\n if (this.settings.disabled || this.settings.isOpen) {\n return;\n }\n if (this.events.beforeOpen) {\n this.events.beforeOpen();\n }\n this.render.open();\n if (this.settings.showSearch) {\n this.render.searchFocus();\n }\n this.settings.isOpen = true;\n setTimeout(() => {\n if (this.events.afterOpen) {\n this.events.afterOpen();\n }\n if (this.settings.isOpen) {\n this.settings.isFullOpen = true;\n }\n document.addEventListener('click', this.documentClick);\n }, this.settings.timeoutDelay);\n if (this.settings.contentPosition === 'absolute') {\n if (this.settings.intervalMove) {\n clearInterval(this.settings.intervalMove);\n }\n this.settings.intervalMove = setInterval(this.render.moveContent.bind(this.render), 500);\n }\n }\n close(eventType = null) {\n if (!this.settings.isOpen || this.settings.alwaysOpen) {\n return;\n }\n if (this.events.beforeClose) {\n this.events.beforeClose();\n }\n this.render.close();\n if (this.render.content.search.input.value !== '') {\n this.search('');\n }\n this.render.mainFocus(eventType);\n this.settings.isOpen = false;\n this.settings.isFullOpen = false;\n setTimeout(() => {\n if (this.events.afterClose) {\n this.events.afterClose();\n }\n document.removeEventListener('click', this.documentClick);\n }, this.settings.timeoutDelay);\n if (this.settings.intervalMove) {\n clearInterval(this.settings.intervalMove);\n }\n }\n search(value) {\n if (this.render.content.search.input.value !== value) {\n this.render.content.search.input.value = value;\n }\n if (!this.events.search) {\n this.render.renderOptions(value === '' ? this.store.getData() : this.store.search(value, this.events.searchFilter));\n return;\n }\n this.render.renderSearching();\n const searchResp = this.events.search(value, this.store.getSelectedOptions());\n if (searchResp instanceof Promise) {\n searchResp\n .then((data) => {\n this.render.renderOptions(this.store.partialToFullData(data));\n })\n .catch((err) => {\n this.render.renderError(typeof err === 'string' ? err : err.message);\n });\n return;\n }\n else if (Array.isArray(searchResp)) {\n this.render.renderOptions(this.store.partialToFullData(searchResp));\n }\n else {\n this.render.renderError('Search event must return a promise or an array of data');\n }\n }\n destroy() {\n document.removeEventListener('click', this.documentClick);\n window.removeEventListener('resize', this.windowResize, false);\n if (this.settings.openPosition === 'auto') {\n window.removeEventListener('scroll', this.windowScroll, false);\n }\n document.removeEventListener('visibilitychange', this.windowVisibilityChange);\n this.store.setData([]);\n this.render.destroy();\n this.select.destroy();\n }\n }\n\n return SlimSelect;\n\n}));\n","function stringify(value) {\n return typeof value !== \"undefined\" ? value : \"\";\n}\nconst appendQueryParams = (url, qp, replace, config) => {\n let queryString;\n if (typeof qp === \"string\") {\n queryString = qp;\n }\n else {\n const usp = config.polyfill(\"URLSearchParams\", true, true);\n for (const key in qp) {\n const value = qp[key];\n if (qp[key] instanceof Array) {\n for (const val of value)\n usp.append(key, stringify(val));\n }\n else {\n usp.append(key, stringify(value));\n }\n }\n queryString = usp.toString();\n }\n const split = url.split(\"?\");\n if (!queryString)\n return replace ? split[0] : url;\n if (replace || split.length < 2)\n return split[0] + \"?\" + queryString;\n return url + \"&\" + queryString;\n};\n/**\n * Adds the ability to append query parameters from a javascript object.\n *\n * ```js\n * import QueryAddon from \"wretch/addons/queryString\"\n *\n * wretch().addon(QueryAddon)\n * ```\n */\nconst queryString = {\n wretch: {\n query(qp, replace = false) {\n return { ...this, _url: appendQueryParams(this._url, qp, replace, this._config) };\n }\n }\n};\nexport default queryString;\n//# sourceMappingURL=queryString.js.map","export const JSON_MIME = \"application/json\";\nexport const CONTENT_TYPE_HEADER = \"Content-Type\";\nexport const FETCH_ERROR = Symbol();\nexport const CATCHER_FALLBACK = Symbol();\n//# sourceMappingURL=constants.js.map","import { CONTENT_TYPE_HEADER } from \"./constants.js\";\nexport function extractContentType(headers = {}) {\n var _a;\n return (_a = Object.entries(headers).find(([k]) => k.toLowerCase() === CONTENT_TYPE_HEADER.toLowerCase())) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function isLikelyJsonMime(value) {\n return /^application\\/.*json.*/.test(value);\n}\nexport const mix = function (one, two, mergeArrays = false) {\n return Object.entries(two).reduce((acc, [key, newValue]) => {\n const value = one[key];\n if (Array.isArray(value) && Array.isArray(newValue)) {\n acc[key] = mergeArrays ? [...value, ...newValue] : newValue;\n }\n else if (typeof value === \"object\" && typeof newValue === \"object\") {\n acc[key] = mix(value, newValue, mergeArrays);\n }\n else {\n acc[key] = newValue;\n }\n return acc;\n }, { ...one });\n};\n//# sourceMappingURL=utils.js.map","import { mix } from \"./utils.js\";\nconst config = {\n // Default options\n options: {},\n // Error type\n errorType: \"text\",\n // Polyfills\n polyfills: {\n // fetch: null,\n // FormData: null,\n // URLSearchParams: null,\n // performance: null,\n // PerformanceObserver: null,\n // AbortController: null\n },\n polyfill(p, doThrow = true, instance = false, ...args) {\n const res = this.polyfills[p] ||\n (typeof self !== \"undefined\" ? self[p] : null) ||\n (typeof global !== \"undefined\" ? global[p] : null);\n if (doThrow && !res)\n throw new Error(p + \" is not defined\");\n return instance && res ? new res(...args) : res;\n }\n};\n/**\n * Sets the default fetch options that will be stored internally when instantiating wretch objects.\n *\n * ```js\n * import wretch from \"wretch\"\n *\n * wretch.options({ headers: { \"Accept\": \"application/json\" } });\n *\n * // The fetch request is sent with both headers.\n * wretch(\"...\", { headers: { \"X-Custom\": \"Header\" } }).get().res();\n * ```\n *\n * @param options Default options\n * @param replace If true, completely replaces the existing options instead of mixing in\n */\nexport function setOptions(options, replace = false) {\n config.options = replace ? options : mix(config.options, options);\n}\n/**\n * Sets the default polyfills that will be stored internally when instantiating wretch objects.\n * Useful for browserless environments like `node.js`.\n *\n * Needed for libraries like [fetch-ponyfill](https://github.com/qubyte/fetch-ponyfill).\n *\n * ```js\n * import wretch from \"wretch\"\n *\n * wretch.polyfills({\n * fetch: require(\"node-fetch\"),\n * FormData: require(\"form-data\"),\n * URLSearchParams: require(\"url\").URLSearchParams,\n * });\n *\n * // Uses the above polyfills.\n * wretch(\"...\").get().res();\n * ```\n *\n * @param polyfills An object containing the polyfills\n * @param replace If true, replaces the current polyfills instead of mixing in\n */\nexport function setPolyfills(polyfills, replace = false) {\n config.polyfills = replace ? polyfills : mix(config.polyfills, polyfills);\n}\n/**\n * Sets the default method (text, json, …) used to parse the data contained in the response body in case of an HTTP error.\n * As with other static methods, it will affect wretch instances created after calling this function.\n *\n * _Note: if the response Content-Type header is set to \"application/json\", the body will be parsed as json regardless of the errorType._\n *\n * ```js\n * import wretch from \"wretch\"\n *\n * wretch.errorType(\"json\")\n *\n * wretch(\"http://server/which/returns/an/error/with/a/json/body\")\n * .get()\n * .res()\n * .catch(error => {\n * // error[errorType] (here, json) contains the parsed body\n * console.log(error.json)\n * })\n * ```\n *\n * If null, defaults to \"text\".\n */\nexport function setErrorType(errorType) {\n config.errorType = errorType;\n}\nexport default config;\n//# sourceMappingURL=config.js.map","import { middlewareHelper } from \"./middleware.js\";\nimport { mix } from \"./utils.js\";\nimport { FETCH_ERROR, CATCHER_FALLBACK } from \"./constants.js\";\n/**\n * This class inheriting from Error is thrown when the fetch response is not \"ok\".\n * It extends Error and adds status, text and body fields.\n */\nexport class WretchError extends Error {\n}\nexport const resolver = (wretch) => {\n const sharedState = Object.create(null);\n wretch = wretch._addons.reduce((w, addon) => addon.beforeRequest &&\n addon.beforeRequest(w, wretch._options, sharedState)\n || w, wretch);\n const { _url: url, _options: opts, _config: config, _catchers: _catchers, _resolvers: resolvers, _middlewares: middlewares, _addons: addons } = wretch;\n const catchers = new Map(_catchers);\n const finalOptions = mix(config.options, opts);\n // The generated fetch request\n let finalUrl = url;\n const _fetchReq = middlewareHelper(middlewares)((url, options) => {\n finalUrl = url;\n return config.polyfill(\"fetch\")(url, options);\n })(url, finalOptions);\n // Throws on an http error\n const referenceError = new Error();\n const throwingPromise = _fetchReq\n .catch(error => {\n throw { [FETCH_ERROR]: error };\n })\n .then(response => {\n if (!response.ok) {\n const err = new WretchError();\n // Enhance the error object\n err[\"cause\"] = referenceError;\n err.stack = err.stack + \"\\nCAUSE: \" + referenceError.stack;\n err.response = response;\n err.url = finalUrl;\n if (response.type === \"opaque\") {\n throw err;\n }\n return response.text().then((body) => {\n var _a;\n err.message = body;\n if (config.errorType === \"json\" || ((_a = response.headers.get(\"Content-Type\")) === null || _a === void 0 ? void 0 : _a.split(\";\")[0]) === \"application/json\") {\n try {\n err.json = JSON.parse(body);\n }\n catch (e) { /* ignore */ }\n }\n err.text = body;\n err[\"status\"] = response.status;\n throw err;\n });\n }\n return response;\n });\n // Wraps the Promise in order to dispatch the error to a matching catcher\n const catchersWrapper = (promise) => {\n return promise.catch(err => {\n const fetchErrorFlag = err.hasOwnProperty(FETCH_ERROR);\n const error = fetchErrorFlag ? err[FETCH_ERROR] : err;\n const catcher = ((error === null || error === void 0 ? void 0 : error.status) && catchers.get(error.status)) ||\n catchers.get(error === null || error === void 0 ? void 0 : error.name) || (fetchErrorFlag && catchers.has(FETCH_ERROR) && catchers.get(FETCH_ERROR));\n if (catcher)\n return catcher(error, wretch);\n const catcherFallback = catchers.get(CATCHER_FALLBACK);\n if (catcherFallback)\n return catcherFallback(error, wretch);\n throw error;\n });\n };\n const bodyParser = funName => cb => funName ?\n // If a callback is provided, then callback with the body result otherwise return the parsed body itself.\n catchersWrapper(throwingPromise.then(_ => _ && _[funName]()).then(_ => cb ? cb(_) : _)) :\n // No body parsing method - return the response\n catchersWrapper(throwingPromise.then(_ => cb ? cb(_) : _));\n const responseChain = {\n _wretchReq: wretch,\n _fetchReq,\n _sharedState: sharedState,\n res: bodyParser(null),\n json: bodyParser(\"json\"),\n blob: bodyParser(\"blob\"),\n formData: bodyParser(\"formData\"),\n arrayBuffer: bodyParser(\"arrayBuffer\"),\n text: bodyParser(\"text\"),\n error(errorId, cb) {\n catchers.set(errorId, cb);\n return this;\n },\n badRequest(cb) { return this.error(400, cb); },\n unauthorized(cb) { return this.error(401, cb); },\n forbidden(cb) { return this.error(403, cb); },\n notFound(cb) { return this.error(404, cb); },\n timeout(cb) { return this.error(408, cb); },\n internalError(cb) { return this.error(500, cb); },\n fetchError(cb) { return this.error(FETCH_ERROR, cb); },\n };\n const enhancedResponseChain = addons.reduce((chain, addon) => ({\n ...chain,\n ...(typeof addon.resolver === \"function\" ? addon.resolver(chain) : addon.resolver)\n }), responseChain);\n return resolvers.reduce((chain, r) => r(chain, wretch), enhancedResponseChain);\n};\n//# sourceMappingURL=resolver.js.map","/**\n * @private @internal\n */\nexport const middlewareHelper = (middlewares) => (fetchFunction) => {\n return middlewares.reduceRight((acc, curr) => curr(acc), fetchFunction) || fetchFunction;\n};\n//# sourceMappingURL=middleware.js.map","import { mix, extractContentType, isLikelyJsonMime } from \"./utils.js\";\nimport { JSON_MIME, CONTENT_TYPE_HEADER, CATCHER_FALLBACK } from \"./constants.js\";\nimport { resolver } from \"./resolver.js\";\nimport config from \"./config.js\";\nexport const core = {\n _url: \"\",\n _options: {},\n _config: config,\n _catchers: new Map(),\n _resolvers: [],\n _deferred: [],\n _middlewares: [],\n _addons: [],\n addon(addon) {\n return { ...this, _addons: [...this._addons, addon], ...addon.wretch };\n },\n errorType(errorType) {\n return {\n ...this,\n _config: {\n ...this._config,\n errorType\n }\n };\n },\n polyfills(polyfills, replace = false) {\n return {\n ...this,\n _config: {\n ...this._config,\n polyfills: replace ? polyfills : mix(this._config.polyfills, polyfills)\n }\n };\n },\n url(_url, replace = false) {\n if (replace)\n return { ...this, _url };\n const split = this._url.split(\"?\");\n return {\n ...this,\n _url: split.length > 1 ?\n split[0] + _url + \"?\" + split[1] :\n this._url + _url\n };\n },\n options(options, replace = false) {\n return { ...this, _options: replace ? options : mix(this._options, options) };\n },\n headers(headerValues) {\n const headers = !headerValues ? {} :\n Array.isArray(headerValues) ? Object.fromEntries(headerValues) :\n \"entries\" in headerValues ? Object.fromEntries(headerValues.entries()) :\n headerValues;\n return { ...this, _options: mix(this._options, { headers }) };\n },\n accept(headerValue) {\n return this.headers({ Accept: headerValue });\n },\n content(headerValue) {\n return this.headers({ [CONTENT_TYPE_HEADER]: headerValue });\n },\n auth(headerValue) {\n return this.headers({ Authorization: headerValue });\n },\n catcher(errorId, catcher) {\n const newMap = new Map(this._catchers);\n newMap.set(errorId, catcher);\n return { ...this, _catchers: newMap };\n },\n catcherFallback(catcher) {\n return this.catcher(CATCHER_FALLBACK, catcher);\n },\n resolve(resolver, clear = false) {\n return { ...this, _resolvers: clear ? [resolver] : [...this._resolvers, resolver] };\n },\n defer(callback, clear = false) {\n return {\n ...this,\n _deferred: clear ? [callback] : [...this._deferred, callback]\n };\n },\n middlewares(middlewares, clear = false) {\n return {\n ...this,\n _middlewares: clear ? middlewares : [...this._middlewares, ...middlewares]\n };\n },\n fetch(method = this._options.method, url = \"\", body = null) {\n let base = this.url(url).options({ method });\n // \"Jsonify\" the body if it is an object and if it is likely that the content type targets json.\n const contentType = extractContentType(base._options.headers);\n const jsonify = typeof body === \"object\" && (!base._options.headers || !contentType || isLikelyJsonMime(contentType));\n base =\n !body ? base :\n jsonify ? base.json(body, contentType) :\n base.body(body);\n return resolver(base\n ._deferred\n .reduce((acc, curr) => curr(acc, acc._url, acc._options), base));\n },\n get(url = \"\") {\n return this.fetch(\"GET\", url);\n },\n delete(url = \"\") {\n return this.fetch(\"DELETE\", url);\n },\n put(body, url = \"\") {\n return this.fetch(\"PUT\", url, body);\n },\n post(body, url = \"\") {\n return this.fetch(\"POST\", url, body);\n },\n patch(body, url = \"\") {\n return this.fetch(\"PATCH\", url, body);\n },\n head(url = \"\") {\n return this.fetch(\"HEAD\", url);\n },\n opts(url = \"\") {\n return this.fetch(\"OPTIONS\", url);\n },\n body(contents) {\n return { ...this, _options: { ...this._options, body: contents } };\n },\n json(jsObject, contentType) {\n const currentContentType = extractContentType(this._options.headers);\n return this.content(contentType ||\n isLikelyJsonMime(currentContentType) && currentContentType ||\n JSON_MIME).body(JSON.stringify(jsObject));\n }\n};\n//# sourceMappingURL=core.js.map","import { setOptions, setErrorType, setPolyfills } from \"./config.js\";\nimport { core } from \"./core.js\";\nimport { WretchError } from \"./resolver.js\";\n/**\n * Creates a new wretch instance with a base url and base\n * [fetch options](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch).\n *\n * ```ts\n * import wretch from \"wretch\"\n *\n * // Reusable instance\n * const w = wretch(\"https://domain.com\", { mode: \"cors\" })\n * ```\n *\n * @param _url The base url\n * @param _options The base fetch options\n * @returns A fresh wretch instance\n */\nfunction factory(_url = \"\", _options = {}) {\n return { ...core, _url, _options };\n}\nfactory[\"default\"] = factory;\n/** {@inheritDoc setOptions} */\nfactory.options = setOptions;\n/** {@inheritDoc setErrorType} */\nfactory.errorType = setErrorType;\n/** {@inheritDoc setPolyfills} */\nfactory.polyfills = setPolyfills;\nfactory.WretchError = WretchError;\nexport default factory;\n//# sourceMappingURL=index.js.map"],"names":["SelectorSet","this","size","uid","selectors","selectorObjects","indexes","Object","create","activeIndexes","docElem","window","document","documentElement","matches","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","prototype","matchesSelector","el","selector","call","querySelectorAll","context","idRe","push","name","sel","m","match","slice","element","id","classRe","className","split","baseVal","Map","tagRe","toUpperCase","nodeName","map","get","key","set","value","chunker","parseSelectorIndexes","allIndexes","i","j","dup","index","allIndexesLen","concat","length","rest","exec","findByPrototype","ary","proto","len","item","isPrototypeOf","sortById","a","b","logDefaultIndexUsed","add","data","obj","indexProto","objs","selectorIndexes","selectorIndex","remove","k","selIndex","removedIds","removeAll","arguments","splice","queryAll","len2","results","els","join","elements","sort","len3","keys","matchedIds","bubbleEvents","captureEvents","propagationStopped","WeakMap","immediatePropagationStopped","currentTargets","currentTargetDesc","getOwnPropertyDescriptor","Event","before","subject","verb","fn","source","apply","trackPropagation","trackImmediate","getCurrentTarget","defineCurrentTarget","event","getter","defineProperty","configurable","enumerable","dispatch","eventPhase","_","canDispatch","type","queue","target","reverse","node","nodeType","_matches","matched","observers","unshift","parentElement","len1","on","capture","undefined","events","addEventListener","off","removeEventListener","fire","detail","dispatchEvent","CustomEvent","bubbles","cancelable","module","exports","generateID","Math","random","toString","substring","debounce","func","wait","immediate","timeout","args","self","callNow","clearTimeout","setTimeout","isEqual","JSON","stringify","Optgroup","constructor","optgroup","label","selectAll","selectAllText","closable","options","o","Option","option","text","html","selected","display","disabled","mandatory","placeholder","class","style","Store","selectType","setData","validateDataArray","Array","isArray","Error","dataObj","validateOption","partialToFullData","dataFinal","forEach","optOptions","setSelectedBy","getSelected","getData","filter","getDataOptions","addOption","selectedType","selectedValues","firstOption","hasSelected","includes","selectedOptions","getSelectedOptions","opt","getSelectedIDs","selectedIDs","op","getOptgroupByID","getOptionByID","getSelectType","getFirstOption","search","searchFilter","trim","includeOptgroup","dataSearch","Render","settings","store","callbacks","classes","main","values","single","max","valueText","valueDelete","valueOut","deselect","deselectPath","arrow","arrowClose","arrowOpen","content","openAbove","openBelow","searchHighlighter","searching","addable","addablePath","list","optgroupLabel","optgroupLabelText","optgroupActions","optgroupSelectAll","optgroupSelectAllBox","optgroupSelectAllCheck","optgroupClosable","optionDelete","highlighted","open","close","error","hide","mainDiv","contentDiv","updateClassStyles","updateAriaAttributes","contentLocation","appendChild","enable","classList","input","disable","path","setAttribute","openPosition","moveContent","selectedId","selectedOption","querySelector","ensureElementInView","removeAttribute","cssText","c","contentPosition","role","_a","createElement","dataset","ariaLabel","tabIndex","onkeydown","e","highlight","click","onclick","isOpen","allowDeselect","isMultiple","stopPropagation","shouldDelete","beforeChange","setSelected","updateDeselectAll","closeOnSelect","afterChange","deselectSvg","createElementNS","arrowPath","alwaysOpen","svg","mainFocus","eventType","focus","preventScroll","placeholderOption","placeholderText","innerHTML","renderValues","renderMultipleValues","renderSingleValue","selectedSingle","singleValue","innerText","outerHTML","currentNodes","childNodes","maxValuesShown","textContent","maxValuesMessage","replace","removeNodes","getAttribute","n","hasChildNodes","contains","removeChild","d","shouldAdd","String","keepOrder","multipleValue","insertBefore","insertAdjacentElement","deleteDiv","preventDefault","after","minSelected","deleteSvg","deletePath","searchDiv","listDiv","putContent","moveContentAbove","moveContentBelow","searchReturn","showSearch","readOnly","searchPlaceholder","oninput","ctrlKey","plus","plusPath","inputValue","runFinish","oo","newOption","addableValue","Promise","then","searchFocus","getOptions","notPlaceholder","notDisabled","notHidden","query","from","dir","prevOption","prevParent","selectOption","selectParent","renderError","errorDiv","renderSearching","searchingDiv","searchingText","renderOptions","noResults","searchText","optgroupEl","allSelected","selectAllSvg","selectAllBox","selectAllCheck","currentSelected","newSelected","s","optgroupClosableSvg","optgroupClosableArrow","some","optionEl","dataClass","searchHighlight","highlightText","showOptionTooltips","hideSelected","currentTarget","elementID","maxSelected","shouldUpdate","destroy","str","completedString","regex","RegExp","matchStartPosition","matchEndPosition","originalTextFoundByRegex","mainHeight","offsetHeight","contentHeight","containerRect","getBoundingClientRect","margin","top","height","scrollY","left","scrollX","width","container","cTop","scrollTop","offsetTop","cBottom","clientHeight","eTop","eBottom","mainRect","innerHeight","hasSelectedItems","deselectButton","hideClass","Select","select","listen","observer","valueChange","bind","passive","MutationObserver","observeCall","changeListen","hideUI","showUI","observe","subtree","childList","attributes","disconnect","ev","onValueChange","getSelectedValues","mutations","classChanged","disabledChanged","optgroupOptionChanged","attributeName","onClassChange","onDisabledChange","onOptionsChange","nodes","getDataFromOptgroup","getDataFromOption","selectall","selectalltext","optgroupOptions","updateSelect","updateOptions","createOptgroup","createOption","info","optionClass","result","toLowerCase","kebabCase","Settings","isFullOpen","intervalMove","body","timeoutDelay","config","indexOf","beforeOpen","afterOpen","beforeClose","afterClose","windowResize","render","windowScroll","documentClick","hasClass","parentByClass","parentNode","hasClassInTree","windowVisibilityChange","hidden","selectEl","tagName","ssid","debounceEvents","hasOwnProperty","multiple","renderCallbacks","selectAriaLabel","selectAriaLabelledBy","nextSibling","slim","err","dataClean","runAfterChange","clearInterval","setInterval","searchResp","catch","message","factory","appendQueryParams","url","qp","queryString","usp","polyfill","val","append","wretch","_url","_config","CONTENT_TYPE_HEADER","FETCH_ERROR","Symbol","CATCHER_FALLBACK","extractContentType","headers","entries","find","isLikelyJsonMime","test","mix","one","two","mergeArrays","reduce","acc","newValue","errorType","polyfills","p","doThrow","instance","res","global","WretchError","resolver","sharedState","_addons","w","addon","beforeRequest","_options","opts","_catchers","_resolvers","resolvers","_middlewares","middlewares","addons","catchers","finalOptions","finalUrl","_fetchReq","fetchFunction","reduceRight","curr","middlewareHelper","referenceError","throwingPromise","response","ok","stack","json","parse","status","bodyParser","funName","cb","fetchErrorFlag","catcher","has","catcherFallback","responseChain","_wretchReq","_sharedState","blob","formData","arrayBuffer","errorId","badRequest","unauthorized","forbidden","notFound","internalError","fetchError","enhancedResponseChain","chain","r","core","_deferred","headerValues","fromEntries","accept","headerValue","Accept","auth","Authorization","newMap","resolve","clear","defer","callback","fetch","method","base","contentType","jsonify","put","post","patch","head","contents","jsObject","currentContentType"],"sourceRoot":""}