@deephaven/embed-widget 1.7.2-beta.3 → 1.7.2-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/assets/{App-BBiEAxwe.js → App-Bxfd4Qnm.js} +2 -2
- package/build/assets/{App-BBiEAxwe.js.map → App-Bxfd4Qnm.js.map} +1 -1
- package/build/assets/{Chart-as_K_vLO.js → Chart-CEIAQIRJ.js} +2 -2
- package/build/assets/{Chart-as_K_vLO.js.map → Chart-CEIAQIRJ.js.map} +1 -1
- package/build/assets/{IrisGrid-yQrU5wCO.js → IrisGrid-10FJOsPW.js} +5 -5
- package/build/assets/IrisGrid-10FJOsPW.js.map +1 -0
- package/build/assets/IrisGridThemeProvider-CH_zuco9.js +12 -0
- package/build/assets/IrisGridThemeProvider-CH_zuco9.js.map +1 -0
- package/build/assets/{LocalWorkspaceStorage-C0Ew7KXR.js → LocalWorkspaceStorage-CaCzxYFf.js} +2 -2
- package/build/assets/{LocalWorkspaceStorage-C0Ew7KXR.js.map → LocalWorkspaceStorage-CaCzxYFf.js.map} +1 -1
- package/build/assets/LogPanel-2k7dsKfX.js +20 -0
- package/build/assets/LogPanel-2k7dsKfX.js.map +1 -0
- package/build/assets/{MarkdownEditor-BeWpL2KU.js → MarkdownEditor-CzPFy3O8.js} +2 -2
- package/build/assets/{MarkdownEditor-BeWpL2KU.js.map → MarkdownEditor-CzPFy3O8.js.map} +1 -1
- package/build/assets/{MarkdownNotebook-hck10PUa.js → MarkdownNotebook-BUxWjchY.js} +2 -2
- package/build/assets/{MarkdownNotebook-hck10PUa.js.map → MarkdownNotebook-BUxWjchY.js.map} +1 -1
- package/build/assets/Plot-D1qLr0Y6.js +2 -0
- package/build/assets/{Plot-MkKLoacS.js.map → Plot-D1qLr0Y6.js.map} +1 -1
- package/build/assets/{Plotly-Cy2HnY94.js → Plotly-BXm-6Lb8.js} +2 -2
- package/build/assets/{Plotly-Cy2HnY94.js.map → Plotly-BXm-6Lb8.js.map} +1 -1
- package/build/assets/{index-DuOsttR6.js → index-B8cBuBmD.js} +11 -11
- package/build/assets/index-B8cBuBmD.js.map +1 -0
- package/build/assets/{index-DfdMWwUx.js → index-CDtpRL6c.js} +4 -4
- package/build/assets/{index-DfdMWwUx.js.map → index-CDtpRL6c.js.map} +1 -1
- package/build/assets/{index-DE3gXqa5.js → index-Cq054aM4.js} +19 -19
- package/build/assets/index-Cq054aM4.js.map +1 -0
- package/build/assets/plotly-CwtgfxLB.js +7 -0
- package/build/assets/{plotly-DcwjB6YO.js.map → plotly-CwtgfxLB.js.map} +1 -1
- package/build/index.html +1 -1
- package/package.json +17 -17
- package/build/assets/IrisGrid-yQrU5wCO.js.map +0 -1
- package/build/assets/IrisGridThemeProvider-DgZBNU8i.js +0 -12
- package/build/assets/IrisGridThemeProvider-DgZBNU8i.js.map +0 -1
- package/build/assets/LogPanel-IIvpOJvm.js +0 -20
- package/build/assets/LogPanel-IIvpOJvm.js.map +0 -1
- package/build/assets/Plot-MkKLoacS.js +0 -2
- package/build/assets/index-DE3gXqa5.js.map +0 -1
- package/build/assets/index-DuOsttR6.js.map +0 -1
- package/build/assets/plotly-DcwjB6YO.js +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":";s5BAAU,IAACA,GAAc,OAAO,OAAO,EAAE,EAC9BC,GAAY,IAAI,IAChBC,GAAiB,OAOrB,SAASC,GAAYC,EAAO,CACjC,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC9C,CAMO,SAASC,IAAyB,CACvC,QAASC,EAAO,UAAU,OAAQC,EAAe,IAAI,MAAMD,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IACvFD,EAAaC,CAAI,EAAI,UAAUA,CAAI,EAErC,OAAOD,EAAa,OAAOE,GAAKA,GAAK,IAAI,CAC3C,CCtBA,SAASC,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAMG,WAA6B,KAAM,CACvC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBP,GAAgB,KAAM,aAAc,EAAI,CAC1C,CACF,CCRA,SAASA,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAChT,MAAMI,WAAwC,KAAM,CACzD,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBR,GAAgB,KAAM,oCAAqC,EAAI,CACjE,CACF,CCRA,SAASA,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAChT,MAAMK,WAAkC,KAAM,CACnD,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBT,GAAgB,KAAM,8BAA+B,EAAI,CAC3D,CACF,CCRA,SAASA,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAChT,MAAMM,WAAmC,KAAM,CACpD,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBV,GAAgB,KAAM,0BAA2B,EAAI,CACvD,CACF,CCRA,SAASW,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAQzT,SAASE,GAAgBC,EAAI,CAClC,OAAOC,GAAiB,MAAM,KAAM,SAAS,CAC/C,CACA,SAASA,IAAmB,CAC1B,OAAAA,GAAmBL,GAAkB,UAAWM,EAAY,CAC1D,GAAI,CAGF,IAAIC,EAAOD,EACX,OAAQ,MAAM,UAAU,YAAY,MAAM,CACxC,KAAAC,CACR,CAAO,GAAG,KACN,OAASC,EAAO,CAGd,MAAIA,aAAiB,UACb,IAAIf,GAENe,CACR,CACF,CAAC,EACMH,GAAiB,MAAM,KAAM,SAAS,CAC/C,CC/BA,SAASX,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CASzT,SAASQ,GAAgBL,EAAI,CAClC,OAAOM,GAAiB,MAAM,KAAM,SAAS,CAC/C,CAOA,SAASA,IAAmB,CAC1B,OAAAA,GAAmBV,GAAkB,UAAWW,EAAM,CACpD,GAAI,CACF,UAAAC,CACN,EAAQ,UACJ,GAAIA,IAAc,OAChB,GAAI,CACF,OAAO,MAAM,UAAU,UAAU,UAAUD,CAAI,CACjD,MAAkB,CAGlB,CAEFE,GAA2BF,CAAI,CACjC,CAAC,EACMD,GAAiB,MAAM,KAAM,SAAS,CAC/C,CACO,SAASG,GAA2BF,EAAM,CAC/C,IAAIG,EAAW,SAAS,cACpBC,EAAW,SAAS,cAAc,UAAU,EAChDA,EAAS,MAAQJ,EACjB,SAAS,KAAK,YAAYI,CAAQ,EAClCA,EAAS,MAAK,EACdA,EAAS,OAAM,EACf,IAAIC,EAAS,SAAS,YAAY,MAAM,EAKxC,GAJA,SAAS,KAAK,YAAYD,CAAQ,EAC9BD,aAAoB,aACtBA,EAAS,MAAK,EAEZ,CAACE,EAAQ,MAAM,IAAI,MAAM,gCAAgC,CAC/D,CAMO,SAASC,IAAoB,CAClC,OAAOC,GAAmB,MAAM,KAAM,SAAS,CACjD,CACA,SAASA,IAAqB,CAC5B,OAAAA,GAAqBlB,GAAkB,WAAa,CAClD,GAAI,CACF,GAAI,CACF,UAAAY,CACR,EAAU,UACJ,GAAIA,IAAc,OAAW,MAAM,IAAIpB,GACvC,IAAI2B,EAAkB,MAAMhB,GAAgB,gBAAgB,EAC5D,GAAIgB,IAAoB,UAAW,CACjC,IAAIR,EAAO,MAAMC,EAAU,SAAQ,EACnC,OAAOD,CACT,CACA,GAAIQ,IAAoB,SAAU,CAChC,GAAI,CAEF,MAAMP,EAAU,SAAQ,CAC1B,MAAmB,CAEnB,CAIA,GADAO,EAAkB,MAAMhB,GAAgB,gBAAgB,EACpDgB,IAAoB,UAAW,CACjC,IAAIC,EAAQ,MAAMR,EAAU,SAAQ,EACpC,OAAOQ,CACT,CACF,CACA,GAAID,IAAoB,UAAYA,IAAoB,SAEtD,MAAM,IAAI5B,EAEd,OAAS8B,EAAK,CACZ,MAAIA,aAAe5B,GACX,IAAID,GAEN6B,CACR,CACA,MAAM,IAAI7B,EACZ,CAAC,EACM0B,GAAmB,MAAM,KAAM,SAAS,CACjD,CClGA,IAAII,GACJ,SAASvC,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,IAAIoC,GAAe,SACfC,GAAgB,UAGhBC,GAA6B,IAAI,IAAI,CAAC,KAAM,MAAO,IAAK,KAAM,GAAG,CAAC,EAGlEC,GAAgB,IAAI,IAAI,CAAC,WAAY,WAAY,MAAO,MAAO,SAAU,SAAU,UAAW,KAAM,UAAW,eAAgB,UAAW,KAAM,OAAQ,UAAW,OAAQ,QAAS,SAAU,aAAc,YAAa,QAAS,OAAQ,OAAQ,SAAU,SAAU,SAAU,OAAQ,OAAQ,aAAc,SAAU,YAAa,QAAS,UAAW,MAAO,QAAS,MAAO,OAAQ,QAAS,YAAa,SAAU,OAAQ,QAAS,UAAW,OAAQ,WAAY,WAAY,QAAS,QAAS,SAAU,QAAS,QAAS,OAAQ,OAAQ,OAAO,CAAC,EAO1hBC,GAAoC,sBAGpCC,GAAiC,kBAGjCC,GAAqB,iCACrBC,GAA8B,iBAClC,SAASC,GAAmBC,EAAO,CAEjC,OAAOA,EAAM,QAAQ,QAAS,GAAG,CACnC,CACA,SAASC,GAAkBD,EAAO,CAEhC,OAAOA,EAAM,QAAQ,MAAO,GAAG,CACjC,CAMA,MAAME,EAAgB,EACtBZ,GAAmBY,GACnBnD,GAAgBmD,GAAiB,WAAY,CAAC3B,EAAM4B,EAASC,EAAQC,EAAOC,EAAelD,IAAM,CAC/F,IAAImD,EAAYJ,EAAQ5B,EAAK,KAAI,CAAE,EAYnC,OATI+B,IAAkBb,GAA2B,IAAIc,CAAS,GAAKb,GAAc,IAAIa,CAAS,KAC5FA,EAAYH,EAASG,GAIvBA,EAAYA,EAAU,QAAQF,EAAO,EAAE,EAIlCE,GAMD,UAAU,KAAKA,CAAS,IAC1BA,EAAYH,EAASG,GAEhBA,GAREH,EAAShD,CASpB,CAAC,EAQDL,GAAgBmD,GAAiB,oBAAqB3B,GAAQe,GAAiB,SAASf,EAAM0B,GAAmBV,GAAcI,GAAmC,GAAO,CAAC,CAAC,EAM3K5C,GAAgBmD,GAAiB,mBAAoB3B,GAAQe,GAAiB,kBAAkBf,CAAI,EAAE,QAAQuB,GAA6B,GAAG,CAAC,EAC/I/C,GAAgBmD,GAAiB,sBAAuBM,GAAW,CACjE,IAAIC,EAAe,GACnB,OAAAD,EAAQ,QAAQ,CAACE,EAAQtD,IAAM,CAC7B,IAAIuD,EAAcrB,GAAiB,mBAAmBoB,EAAQtD,CAAC,EAG3DqD,EAAa,SAASE,CAAW,IACnCA,EAAcnB,GAAgBpC,GAEhCqD,EAAa,KAAKE,CAAW,CAC/B,CAAC,EACMF,CACT,CAAC,EACD1D,GAAgBmD,GAAiB,qBAAsB,SAAUQ,EAAQ,CACvE,IAAItD,EAAI,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC5E,OAEEkC,GAAiB,SAASoB,EAAQX,GAAoBP,GAAeI,GAAgC,GAAMxC,CAAC,CAEhH,CAAC,EACDL,GAAgBmD,GAAiB,mBAAoB3B,GAAQsB,GAAmB,KAAKtB,CAAI,CAAC,EAC1FxB,GAAgBmD,GAAiB,oBAAqB3B,GAAQe,GAAiB,mBAAmBf,CAAI,IAAMA,CAAI,EChGzG,MAAMqC,WAA6B,WAAY,CAQpD,YAAYC,EAASC,EAAe,CAClC,MAAMD,EAASC,CAAa,CAC9B,CACF,CCbO,MAAMC,EAAa,CAOxB,OAAO,eAAeC,EAASC,EAAS,CACtC,IAAIC,EAAc,GACdC,EACAC,EACAC,EAAiB,IAAI,QAAQ,CAACC,EAASC,IAAW,CACpDH,EAAWG,EACX,QAAQ,QAAQP,CAAO,EAAE,KAAKQ,GAAO,CAC/BN,EACED,GACFA,EAAQO,CAAG,GAGbL,EAAWK,EACXF,EAAQE,CAAG,EAEf,CAAC,EAAE,MAAMhD,GAAS+C,EAAO/C,CAAK,CAAC,CACjC,CAAC,EAGD,OAAA6C,EAAe,OAAS,IAAM,CAC5BH,EAAc,GACdE,EAAS,IAAI9D,EAAsB,EAC/B6D,GAAY,MAAQF,GACtBA,EAAQE,CAAQ,CAEpB,EACOE,CACT,CACA,OAAO,WAAW7C,EAAO,CACvB,OAAOA,aAAiBlB,EAC1B,CACA,OAAO,WAAWkB,EAAO,CACvB,OAAOA,aAAiBiD,EAC1B,CAOA,OAAO,YAAYC,EAAWC,EAAU,CACtC,OAAO,IAAI,QAAQ,CAACL,EAASC,IAAW,CACtC,WAAW,IAAM,CACf,GAAI,CACFD,EAAQK,EAAQ,CAAE,CACpB,OAAStC,EAAK,CACZkC,EAAOlC,CAAG,CACZ,CACF,EAAGqC,CAAS,CACd,CAAC,CACH,CACF,CC5DA,SAAS3E,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAOvT,MAAMyE,EAAQ,CACZ,aAAc,CACZ7E,GAAgB,KAAM,UAAW,EAAE,EACnCA,GAAgB,KAAM,WAAY,EAAE,CACtC,CAOA,IAAI8E,EAAMZ,EAAS,CACjB,IAAID,EAAUD,GAAa,eAAec,EAAMZ,CAAO,EACvD,YAAK,QAAQ,KAAKD,CAAO,EACzBA,EAAQ,KAAK,IAAM,CACjB,KAAK,QAAQA,CAAO,CACtB,EAAG,IAAM,CACP,KAAK,QAAQA,CAAO,CACtB,CAAC,EACMA,CACT,CAMA,OAAOA,EAAS,CACd,QAAS5D,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,GAAK,EAC5C,GAAI,KAAK,QAAQA,CAAC,IAAM4D,EAAS,CAC/B,KAAK,QAAQ,OAAO5D,EAAG,CAAC,EACxB,MACF,CAEJ,CACA,QAAQ4D,EAAS,CACf,KAAK,OAAOA,CAAO,EACnB,KAAK,SAAS,KAAKA,CAAO,CAC5B,CAKA,QAAS,CAEP,QADIc,EAAc,CAAC,GAAG,KAAK,QAAS,GAAG,KAAK,QAAQ,EAC3C1E,EAAI,EAAGA,EAAI0E,EAAY,OAAQ1E,GAAK,EAC3C0E,EAAY1E,CAAC,EAAE,OAAM,EAEvB,KAAK,QAAU,GACf,KAAK,SAAW,EAClB,CACF,CCtDO,SAAS2E,GAAgBvD,EAAO,CACrC,IAAIwD,EAAWxD,EACXA,aAAiB,cACnBwD,EAAWxD,EAAM,QAEnB,IAAIyD,EAAU,GAOd,GANID,aAAoB,MACtBC,EAAUD,EAAS,QACVA,GAAY,OACrBC,EAAU,GAAG,OAAOD,CAAQ,GAE9BC,EAAUA,EAAQ,KAAI,EAClBA,EAAQ,OAAS,EACnB,OAAOA,CAGX,CCnBA,MAAMC,EAAW,CACf,OAAO,aAAaC,EAAO,CACzB,OAAOA,GAAS,MAAQA,EAAM,SAAW,GAAK,OAAO,UAAUA,EAAM,CAAC,CAAC,GAAK,OAAO,UAAUA,EAAM,CAAC,CAAC,GAAKA,EAAM,CAAC,GAAKA,EAAM,CAAC,CAC/H,CACA,OAAO,cAAcA,EAAO,CAC1B,GAAI,CAACD,GAAW,aAAaC,CAAK,EAChC,MAAM,IAAI,MAAM,kBAAkB,OAAOA,CAAK,CAAC,CAEnD,CACA,OAAO,WAAWC,EAAgBC,EAAO,CACvC,QAASjF,EAAI,EAAGA,EAAIgF,EAAe,OAAQhF,GAAK,EAAG,CACjD,IAAI+E,EAAQC,EAAehF,CAAC,EACxBkF,EAAQH,EAAM,CAAC,EACfI,EAAMJ,EAAM,CAAC,EACjB,GAAIG,GAASD,GAASA,GAASE,EAC7B,MAAO,EAEX,CACA,MAAO,EACT,CACA,OAAO,YAAYH,EAAgBD,EAAO,CAKxC,OAJI,CAACG,EAAOC,CAAG,EAAIJ,EACfK,EAAS,CAAC,GAAGJ,CAAc,EAGtBhF,EAAIoF,EAAO,OAAS,EAAGpF,GAAK,EAAGA,GAAK,EAAG,CAC9C,IAAIqF,EAAgBD,EAAOpF,CAAC,EACxBsF,EAAgBD,EAAc,CAAC,EAC/BE,EAAcF,EAAc,CAAC,EACjC,GAAIC,GAAiBJ,GAASC,GAAOI,EAEnC,OAAOH,EAELF,GAASK,GAAeD,GAAiBH,IAE3CD,EAAQ,KAAK,IAAIA,EAAOI,CAAa,EACrCH,EAAM,KAAK,IAAIA,EAAKI,CAAW,EAC/BH,EAAO,OAAOpF,EAAG,CAAC,EAEtB,CACA,OAAAoF,EAAO,KAAK,CAACF,EAAOC,CAAG,CAAC,EACjBC,CACT,CACA,OAAO,cAAcJ,EAAgBD,EAAO,CAI1C,OAHI,CAACG,EAAOC,CAAG,EAAIJ,EACfK,EAAS,CAAC,GAAGJ,CAAc,EAEtBhF,EAAIoF,EAAO,OAAS,EAAGpF,GAAK,EAAGA,GAAK,EAAG,CAC9C,IAAIqF,EAAgBD,EAAOpF,CAAC,EACxBsF,EAAgBD,EAAc,CAAC,EAC/BE,EAAcF,EAAc,CAAC,EACjC,GAAI,EAAAF,EAAMG,GAAiBC,EAAcL,GAElC,GAAII,EAAgBJ,GAASC,EAAMI,EAAa,CAErDH,EAAOpF,CAAC,EAAI,CAACsF,EAAeJ,EAAQ,CAAC,EACrCE,EAAO,OAAOpF,EAAI,EAAG,EAAG,CAACmF,EAAM,EAAGI,CAAW,CAAC,EAC9C,KACF,MAAWL,GAASI,GAAiBC,GAAeJ,EAElDC,EAAO,OAAOpF,EAAG,CAAC,EACTsF,EAAgBJ,EAEzBE,EAAOpF,CAAC,EAAI,CAACsF,EAAeJ,EAAQ,CAAC,EAGrCE,EAAOpF,CAAC,EAAI,CAACmF,EAAM,EAAGI,CAAW,CAErC,CACA,OAAOH,CACT,CAOA,OAAO,MAAMA,EAAQ,CACnB,OAAOA,EAAO,OAAO,CAACI,EAAKT,IAAUS,GAAOT,EAAM,CAAC,EAAIA,EAAM,CAAC,EAAI,GAAI,CAAC,CACzE,CAQA,OAAO,iBAAiBU,EAAOL,EAAQ,CACrC,OAAOA,EAAO,OAAO,CAACM,EAAKX,IAAU,CAEnC,QADInD,EAAS,CAAC,GAAG8D,CAAG,EACX1F,EAAI+E,EAAM,CAAC,EAAG/E,GAAK+E,EAAM,CAAC,EAAG/E,GAAK,EACzC4B,EAAO,KAAK6D,EAAMzF,CAAC,CAAC,EAEtB,OAAO4B,CACT,EAAG,EAAE,CACP,CACF,CAQO,SAAU+D,GAAcT,EAAOC,EAAK,CAEzC,QAASnF,EAAIkF,EAAOlF,GAAKmF,EAAK,EAAEnF,EAC9B,MAAMA,CAEV,CC/GU,IAAC4F,GAAqB,IACzB,MAAMC,EAAU,CAUrB,OAAO,KAAKJ,EAAO,CACjB,IAAIK,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,MACtF,GAAIL,GAAS,MAAQA,EAAM,SAAW,EACpC,MAAO,GAET,GAAIA,EAAM,SAAW,EACnB,OAAOA,EAAM,CAAC,EAEhB,GAAIA,EAAM,SAAW,EACnB,MAAO,GAAG,OAAOA,EAAM,CAAC,EAAG,GAAG,EAAE,OAAOK,EAAa,GAAG,EAAE,OAAOL,EAAM,CAAC,CAAC,EAE1E,IAAIM,EAAWN,EAAM,MAAM,EAAGA,EAAM,OAAS,CAAC,EAAE,KAAK,IAAI,EACrDO,EAAWP,EAAMA,EAAM,OAAS,CAAC,EACrC,MAAO,GAAG,OAAOM,EAAU,IAAI,EAAE,OAAOD,EAAa,GAAG,EAAE,OAAOE,CAAQ,CAC3E,CAOA,OAAO,QAAQzE,EAAM,CACnB,IAAI0E,EAAgB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxF,GAAI1E,GAAQ,KAAM,CAChB,GAAI0E,EACF,MAAO,GAET,MAAM,IAAI,MAAM,4CAA4C,CAC9D,CACA,OAAO1E,EAAK,YAAW,CACzB,CAQA,OAAO,KAAKf,EAAG0F,EAAG,CAChB,IAAIC,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtF,OAAI3F,EAAI0F,EACCC,EAAc,GAAK,EAExB3F,EAAI0F,EACCC,EAAc,EAAI,GAEpB,CACT,CASA,OAAO,UAAU9G,EAAO+G,EAAUC,EAAY,CAC5C,OAAIhH,IAAU,EACL+G,EAEFC,GAA4D,GAAG,OAAOD,EAAU,GAAG,CAC5F,CACF,CCzEA,SAASzG,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAMuG,EAAU,CAOd,OAAO,kBAAkBC,EAAM,CAC7B,GAAI,OAAOA,GAAS,UAAY,CAAC,OAAO,UAAUA,CAAI,EACpD,MAAM,IAAI,MAAM,GAAG,OAAOA,EAAM,4DAA4D,CAAC,EAE/F,IAAIC,EAAQ,KAAK,MAAMD,EAAO,IAAI,EAC9BE,EAAO,KAAK,MAAMF,EAAO,KAAO,EAAE,EAClCG,EAAUH,EAAO,GACrB,MAAO,GAAG,OAAOC,EAAQ,EAAI,GAAG,OAAOA,EAAO,IAAI,EAAI,EAAE,EAAI,GAAG,OAAOC,EAAO,GAAKD,EAAQ,EAAI,GAAG,OAAOC,EAAM,IAAI,EAAI,EAAE,EAAI,GAAG,OAAOF,GAAQ,GAAK,GAAG,OAAOG,EAAS,GAAG,EAAE,SAAS,EAAG,GAAG,EAAI,GAAG,OAAOA,EAAS,GAAG,CAAC,CACvN,CAMA,OAAO,WAAWC,EAAe,CAC/B,GAAI,OAAOA,GAAkB,UAAY,CAAC,OAAO,UAAUA,CAAa,GAAKA,EAAgB,EAC3F,MAAM,IAAI,MAAM,GAAG,OAAOA,EAAe,4DAA4D,CAAC,EAExG,IAAIH,EAAQ,OAAO,KAAK,MAAMG,GAAiB,GAAK,GAAG,CAAC,EAAE,SAAS,EAAG,GAAG,EACrEC,EAAoBD,GAAiB,GAAK,IAC1CE,EAAU,OAAO,KAAK,MAAMD,EAAoB,EAAE,CAAC,EAAE,SAAS,EAAG,GAAG,EACpEE,EAAoBF,EAAoB,GACxCF,EAAU,OAAO,KAAK,KAAKI,CAAiB,CAAC,EAAE,SAAS,EAAG,GAAG,EAClE,MAAO,GAAG,OAAON,EAAO,GAAG,EAAE,OAAOK,EAAS,GAAG,EAAE,OAAOH,CAAO,CAClE,CACA,OAAO,aAAaK,EAAG,CACrB,OAAO,IAAI,OAAOT,GAAU,YAAY,EAAE,KAAKS,CAAC,CAClD,CAMA,OAAO,UAAUC,EAAY,CAC3B,GAAIA,GAAc,MAAQ,OAAOA,GAAe,SAC9C,MAAM,IAAI,MAAM,GAAG,OAAOA,EAAY,wBAAwB,CAAC,EAEjE,IAAIC,EAAaD,EAAW,MAAM,GAAG,EACrC,GAAIC,EAAW,SAAW,EACxB,MAAM,IAAI,MAAM,GAAG,OAAOD,EAAY,0CAA0C,CAAC,EAEnF,OAAO,OAAOC,EAAW,CAAC,CAAC,EAAI,GAAK,GAAK,OAAOA,EAAW,CAAC,CAAC,EAAI,GAAK,OAAOA,EAAW,CAAC,CAAC,CAC5F,CACF,CACAtH,GAAgB2G,GAAW,eAAgB,0CAA0C,EACrF3G,GAAgB2G,GAAW,aAAc,OAAO,OAAO,CAAC,CACtD,MAAO,qBACP,MAAO,YACT,EAAG,CACD,MAAO,qBACP,MAAO,YACT,EAAG,CACD,MAAO,yBACP,MAAO,gBACT,EAAG,CACD,MAAO,yBACP,MAAO,gBACT,EAAG,CACD,MAAO,0BACP,MAAO,cACT,EAAG,CACD,MAAO,eACP,MAAO,eACT,EAAG,CACD,MAAO,mBACP,MAAO,KACT,EAAG,CACD,MAAO,eACP,MAAO,eACT,EAAG,CACD,MAAO,kBACP,MAAO,mBACT,EAAG,CACD,MAAO,yBACP,MAAO,kBACT,EAAG,CACD,MAAO,gBACP,MAAO,iBACT,EAAG,CACD,MAAO,iBACP,MAAO,kBACT,EAAG,CACD,MAAO,gBACP,MAAO,iBACT,EAAG,CACD,MAAO,eACP,MAAO,gBACT,EAAG,CACD,MAAO,oBACP,MAAO,qBACT,EAAG,CACD,MAAO,kBACP,MAAO,mBACT,EAAG,CACD,MAAO,yBACP,MAAO,kBACT,EAAG,CACD,MAAO,eACP,MAAO,eACT,EAAG,CACD,MAAO,kBACP,MAAO,kBACT,EAAG,CACD,MAAO,sBACP,MAAO,aACT,EAAG,CACD,MAAO,gBACP,MAAO,kBACT,CAAC,CAAC,CAAC,ECtHH,SAAS3G,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAMmH,WAAwB,KAAM,CAClC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClBvH,GAAgB,KAAM,YAAa,EAAI,CACzC,CACF,CCHO,SAASwH,IAAkB,CAChC,IAAIC,EAAeC,SAAO,EAAK,EAC/BC,mBAAU,KACRF,EAAa,QAAU,GAChB,IAAM,CACXA,EAAa,QAAU,EACzB,GACC,EAAE,EACEA,CACT,CCdA,SAAS9G,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAIhU,IAAI0G,GAAMC,EAAI,OAAO,kBAAkB,EAmBhC,SAASC,GAAiBlD,EAAUmD,EAAkB,CAC3D,IAAIN,EAAeD,GAAe,EAC9BQ,EAAgBN,SAAO,CAAC,EACxBO,EAAmBP,SAAO,CAAC,EAC3BQ,EAAqBR,SAAO,IAAI,EAChCS,EAAOC,cAAyBnH,GAAkB,WAAa,CACjE,IAAIoH,EAAM,KAAK,IAAG,EAClBJ,EAAiB,SAAW,EAI5B,IAAIK,EAAuBJ,EAAmB,SAAW,KAAOH,EAAmBM,EAAMH,EAAmB,QAC5GA,EAAmB,QAAUG,EAC7B,GAAI,CACF,MAAMzD,EAAQ,CAChB,OAAStC,EAAK,CACZsF,GAAI,MAAM,yBAA0BtF,CAAG,CACzC,CACA,GAAKmF,EAAa,QAGlB,CAAAa,GAAwB,KAAK,IAAG,EAAKJ,EAAmB,QAGxD,IAAIK,EAAU,KAAK,IAAI,EAAGD,EAAuBP,CAAgB,EAC7DS,EAAmB,KAAK,IAAI,EAAGT,EAAmBQ,CAAO,EAC7DP,EAAc,QAAU,OAAO,WAAWG,EAAMK,CAAgB,EAClE,CAAC,EAAG,CAAC5D,EAAU6C,EAAcM,CAAgB,CAAC,EAC9CJ,YAAU,KACRO,EAAmB,QAAU,KAC7BC,EAAI,EACG,IAAM,CACX,OAAO,aAAaH,EAAc,OAAO,CAC3C,GACC,CAACD,EAAkBI,CAAI,CAAC,CAC7B,CCnDO,SAASM,GAAkBC,EAAS,CACzC,IAAIxD,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,iEAC9ExF,EAAQiJ,aAAWD,CAAO,EAC9B,GAAIhJ,GAAS,KACX,MAAM,IAAI,MAAMwF,CAAO,EAEzB,OAAOxF,CACT,CCHO,SAASkJ,GAAqBhE,EAAUiE,EAAY,CACzD,IAAIC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC9E,CACF,QAAAC,EAAU,GACV,SAAAC,EAAW,GACX,QAAAC,CACJ,EAAMH,EACAI,EAAoBC,UAAQ,IAAMC,GAASxE,EAAUiE,EAAYI,GAAW,KAGhF,CACE,QAAAF,EACA,SAAAC,EACA,QAAAC,CACJ,EAAM,CACF,QAAAF,EACA,SAAAC,CACJ,CAAG,EAAG,CAACpE,EAAUiE,EAAYE,EAASC,EAAUC,CAAO,CAAC,EACtDtB,mBAAU,IAAM,IAAMuB,EAAkB,OAAM,EAAI,CAACA,CAAiB,CAAC,EAC9DA,CACT,CC7Be,SAASG,GAAY3J,EAAO,CACzC,IAAI4J,EAAM5B,SAAM,EAChBC,mBAAU,UAAmB,CAC3B2B,EAAI,QAAU5J,CAChB,CAAC,EACM4J,EAAI,OACb,CCIO,SAASC,GAAqB3E,EAAU4E,EAAYC,EAAgB,CACzE,IAAIX,EAAUpB,SAAO+B,CAAc,EAK/BC,EAAchC,SAAO9C,CAAQ,EACjC8E,EAAY,QAAU9E,EACtB,IAAI+E,EAAoBR,UAAQ,IAAMS,GAAS,UAAY,CACzD,OAAOF,EAAY,QAAQ,GAAG,SAAS,CACzC,EAAGF,EAAYV,EAAQ,OAAO,EAAG,CAACU,CAAU,CAAC,EAC7C7B,mBAAU,IAAM,IAAM,CACpB,IAAIkC,EAAuBC,GACtBD,GAAyBC,EAAmBhB,EAAQ,WAAa,MAAQgB,IAAqB,OAAS,OAASA,EAAiB,kBAAoB,MAAQD,IAA0B,QAASA,EACnMF,EAAkB,MAAK,EAEvBA,EAAkB,OAAM,CAE5B,EAAG,CAACA,CAAiB,CAAC,EACfA,CACT,CCxBe,SAASI,GAAgBT,EAAK,CAC3C,IAAIU,EAAWtC,SAAO,IAAI,EAC1BC,mBAAU,UAAsB,CACzB2B,IACD,OAAOA,GAAQ,WACjBA,EAAIU,EAAS,OAAO,EAGpBV,EAAI,QAAUU,EAAS,QAE3B,CAAC,EACMA,CACT,CCrBA,SAASC,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CA2BvT,IAAI+J,GAAoB,SACxB,MAAMC,WAAeC,WAAU,CAC7B,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,UAAwBuK,EAAM,UAAS,CAAE,EAE/DvK,GAAgB,KAAM,MAAO,MAAM,EACnC,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,QAAU,SAAS,cAAc,KAAK,EAC3C,KAAK,QAAQ,UAAY,mBACzB,KAAK,UAAyBuK,EAAM,UAAS,EAI7C,KAAK,IAAM,EACX,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MACT,KAAK,MAAQ,CACX,KAAMA,EACN,OAAQ,IACd,CACE,CACA,mBAAmBC,EAAW,CAC5B,GAAI,CACF,QAAAD,CACN,EAAQ,KAAK,MACLC,EAAU,UAAYD,IACpBA,GACF,qBAAqB,KAAK,GAAG,EAC7B,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5C,KAAK,KAAI,CACX,CAAC,GAED,KAAK,KAAI,EAGf,CACA,sBAAuB,CACrB,KAAK,cAAc,EAAK,CAC1B,CAEA,kBAAkBE,EAAS,CACzB,OAAIA,GAAW,MAAQA,EAAQ,aAAe,GAAKA,EAAQ,YAAc,EAChEA,EAEF,KAAK,kBAAkBA,EAAQ,aAAa,CACrD,CACA,YAAa,CACX,GAAI,CACF,OAAQC,CACd,EAAQ,KAAK,MACL,CACF,YAAAC,EACA,gBAAAC,CACN,EAAQ,KAAK,MACT,GAAI,CAAAF,GAGA,KAAK,UAAU,UAAY,KAG/B,IAAI,CACF,QAAA7B,CACN,EAAQ,KAAK,MACTA,EAAUoB,GAAc,CACtB,UAAW,OACX,UAAW,CACT,gBAAiB,CACf,kBAAmB,UAC7B,CACA,CACA,EAAOpB,CAAO,EACV,SAAS,KAAK,YAAY,KAAK,OAAO,EACtC,IAAIgC,EAAS,KAAK,kBAAkB,KAAK,UAAU,OAAO,EACtDA,GAAU,OACZA,EAAS,KAAK,UAAU,SAE1B,IAAIC,EAAS,IAAIC,GAASH,GAAmBC,EAAQ,KAAK,QAAShC,CAAO,EAC1EiC,EAAO,eAAc,EAGrB,qBAAqB,KAAK,GAAG,EAC7B,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAI5C,GAAIH,EAAa,CACf,IAAIK,EAAW,KAAK,QAAQ,cAAc,IAAI,OAAOd,EAAiB,CAAC,EACnEc,aAAoB,aAAe,CAACA,EAAS,SAAS,SAAS,aAAa,GAC9EA,EAAS,MAAK,CAElB,CACF,CAAC,EAGDC,aAAU,IAAM,CACd,KAAK,SAAS,CACZ,OAAAH,CACR,CAAO,CACH,CAAC,EACH,CACA,eAAgB,CACd,IAAII,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtF,qBAAqB,KAAK,GAAG,EAC7B,GAAI,CACF,OAAAJ,CACN,EAAQ,KAAK,MACJA,IAGLA,EAAO,QAAO,EAKV,SAAS,KAAK,SAAS,KAAK,OAAO,GACrC,SAAS,KAAK,YAAY,KAAK,OAAO,EAEpCI,GACF,KAAK,SAAS,CACZ,OAAQ,IAChB,CAAO,EAEL,CACA,MAAO,CACL,KAAK,WAAU,EAGfD,aAAU,IAAM,CACd,KAAK,SAAS,CACZ,KAAM,EACd,CAAO,CACH,CAAC,CACH,CACA,MAAO,CACL,KAAK,SAAS,CACZ,KAAM,EACZ,CAAK,CACH,CACA,gBAAiB,CACf,GAAI,CACF,OAAAH,CACN,EAAQ,KAAK,MACLA,GAAQA,EAAO,eAAc,CACnC,CACA,WAAW,EAAG,CACN,EAAE,yBAAyB,cAG5B,KAAK,QAAQ,SAAS,EAAE,aAAa,GACxC,KAAK,KAAI,EAEb,CACA,aAAc,CACZ,GAAI,CACF,UAAAK,CACN,EAAQ,KAAK,MACTA,GACF,CACA,YAAa,CACX,GAAI,CACF,SAAAC,CACN,EAAQ,KAAK,MACL,CACF,KAAAC,CACN,EAAQ,KAAK,MACJA,GACH,KAAK,cAAa,EAEpBD,GACF,CACA,eAAgB,CACd,GAAI,CACF,UAAAE,EACA,SAAAC,EACA,QAAAC,EACA,YAAAC,EACA,YAAAd,CACN,EAAQ,KAAK,MACL,CACF,KAAAU,CACN,EAAQ,KAAK,MACT,OAAoBK,MAAKC,GAAuB,CAC9C,SAAU,GACV,SAAuBD,MAAKE,GAAe,CACzC,GAAIP,EACJ,QAASG,EACT,WAAY,oBACZ,UAAW,KAAK,YAChB,SAAU,KAAK,WACf,QAAS,KAAK,QACd,SAAuBE,MAAK,MAAO,CACjC,IAAK,KAAK,QACV,QAAS1L,GAAK,CAEZA,EAAE,gBAAe,CACnB,EACA,UAAWA,GAAK,CACVA,EAAE,MAAQ,UAAU,KAAK,KAAI,CACnC,EACA,UAAW6L,EAAW3B,GAAmB,CACvC,YAAAuB,CACZ,EAAaH,CAAS,EACZ,OAAQX,EAAc,KAAK,WAAa,OACxC,SAAUA,EAAc,GAAK,OAC7B,KAAM,eACN,SAAuBmB,OAAM,MAAO,CAClC,UAAW,iBACX,SAAU,CAACP,EAAuBG,MAAK,MAAO,CAC5C,UAAW,eACX,UAAW,EACzB,CAAa,CAAC,CACd,CAAW,CACX,CAAS,CACT,CAAO,CACP,CAAK,CACH,CACA,QAAS,CACP,GAAI,CACF,OAAAZ,CACN,EAAQ,KAAK,MACL,CACF,cAAeiB,CACrB,EAAQ,KAAK,MACT,OAAoBL,MAAK,MAAO,CAC9B,UAAW,0BACX,IAAK,KAAK,UACV,MAAO,CACL,QAAS,MACjB,EACM,cAAeK,EACf,SAAUjB,GAAuBkB,GAAS,aAAa,KAAK,cAAa,EAAI,KAAK,OAAO,CAC/F,CAAK,CACH,CACF,CACAjM,GAAgBoK,GAAQ,eAAgB,CACtC,QAAS,GACT,UAAW,GACX,QAAS8B,GAAY,aACrB,WAAY,CAEZ,EACA,UAAW,CAEX,EACA,QAAS,GACT,YAAa,GACb,YAAa,GACb,gBAAiB,KACjB,cAAe,MACjB,CAAC,EC9RD,IAAIC,GACJ,SAASlC,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAOvT,IAAIwH,GAAMC,EAAI,OAAO,SAAS,EAa9B,MAAMuE,WAAgB/B,WAAU,CAC9B,OAAO,cAAe,CACpB+B,GAAQ,mBAAqB,EACzBA,GAAQ,oBAAsB,IAChCA,GAAQ,eAAiB,KAAK,IAAG,EAErC,CACA,OAAO,aAAc,CACnBA,GAAQ,mBAAqB,CAC/B,CACA,YAAY9B,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,SAAU,MAAM,EAGtCA,GAAgB,KAAM,QAAS,MAAM,EACrC,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,UAAyBuK,EAAM,UAAS,EAC7C,KAAK,OAAsBA,EAAM,UAAS,EAC1C,KAAK,OAAS,KACd,KAAK,MAAQ,KACb,KAAK,MAAQ,CACX,QAAS,EACf,CACE,CACA,mBAAoB,CAClB,KAAK,eAAc,EACnB,GAAI,CACF,QAAAkB,CACN,EAAQ,KAAK,MACLA,IAAY,GACd,KAAK,KAAI,CAEb,CACA,mBAAmBhB,EAAW4B,EAAW,CACvC,GAAI,CACF,QAASC,CACf,EAAQD,EACA,CACF,QAAA7B,CACN,EAAQ,KAAK,MACLA,IAAY8B,IACV9B,EACF4B,GAAQ,YAAW,EAEnBA,GAAQ,aAAY,EAG1B,CACA,sBAAuB,CACrB,KAAK,cAAa,EAClB,KAAK,oBAAmB,EACxB,KAAK,UAAS,EACd,GAAI,CACF,QAAA5B,CACN,EAAQ,KAAK,MACLA,GACF4B,GAAQ,aAAY,CAExB,CACA,gBAAiB,CACf,GAAI,CAAC,KAAK,UAAU,SAAW,CAAC,KAAK,UAAU,QAAQ,cAAe,CACpExE,GAAI,MAAM,mDAAmD,EAC7D,MACF,CACA,KAAK,OAAS,KAAK,UAAU,QAAQ,cACrC,KAAK,OAAO,iBAAiB,YAAa,KAAK,eAAe,EAC9D,KAAK,OAAO,iBAAiB,aAAc,KAAK,gBAAgB,EAChE,KAAK,OAAO,iBAAiB,YAAa,KAAK,kBAAkB,CACnE,CACA,eAAgB,CACT,KAAK,SAGV,KAAK,OAAO,oBAAoB,YAAa,KAAK,eAAe,EACjE,KAAK,OAAO,oBAAoB,aAAc,KAAK,gBAAgB,EACnE,KAAK,OAAO,oBAAoB,YAAa,KAAK,kBAAkB,EACtE,CACA,sBAAuB,CACrB,OAAO,iBAAiB,YAAa,KAAK,sBAAuB,EAAI,EACrE,OAAO,iBAAiB,cAAe,KAAK,mBAAoB,EAAI,EACpE,OAAO,iBAAiB,QAAS,KAAK,WAAW,CACnD,CACA,qBAAsB,CACpB,OAAO,oBAAoB,YAAa,KAAK,sBAAuB,EAAI,EACxE,OAAO,oBAAoB,cAAe,KAAK,mBAAoB,EAAI,EACvE,OAAO,oBAAoB,QAAS,KAAK,WAAW,CACtD,CACA,iBAAkB,CAChB,KAAK,WAAU,CACjB,CACA,aAAc,CACZ,GAAI,CACF,QAAA4C,CACN,EAAQ,KAAK,MACL,KAAK,OAAO,SAAW,KAAK,QAAUA,GACpC,CAAC,KAAK,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,GAAK,CAAC,KAAK,OAAO,QAAQ,QAAQ,IACjF,KAAK,UAAS,EACd,KAAK,KAAI,EAGf,CACA,kBAAmB,CACjB,GAAI,CACF,QAAAA,CACN,EAAQ,KAAK,MACT,KAAK,UAAS,EACd,GAAI,CACF,YAAAkB,CACN,EAAQ,KAAK,MACL,CAACA,GAAelB,GAClB,KAAK,KAAI,CAEb,CACA,eAAgB,CACd,KAAK,KAAI,CACX,CACA,sBAAsB+B,EAAO,CAC3B,IAAIC,EAASD,EAAM,QACfE,EAASF,EAAM,QACf,CACF,QAAA/B,CACN,EAAQ,KAAK,MACT,GAAI,GAAC,KAAK,OAAO,SAAW,CAAC,KAAK,QAGlC,KAAIkC,EAAa,KAAK,OAAO,QAAQ,QAAQ,sBAAqB,EAC9DC,EAAa,KAAK,OAAO,sBAAqB,EAC9CH,GAAUE,EAAW,MAAQF,GAAUE,EAAW,KAAOA,EAAW,OAASD,GAAUC,EAAW,KAAOD,GAAUC,EAAW,IAAMA,EAAW,OACjJ,KAAK,gBAAe,EACXF,GAAUG,EAAW,MAAQH,GAAUG,EAAW,KAAOA,EAAW,OAASF,GAAUE,EAAW,KAAOF,GAAUE,EAAW,IAAMA,EAAW,OACxJ,KAAK,gBAAe,EACXnC,IACT,KAAK,UAAS,EACd,KAAK,KAAI,GAEb,CACA,YAAa,CACX,KAAK,UAAS,EACd,GAAI,CACF,QAAAiB,EACA,cAAAmB,CACN,EAAQ,KAAK,MACLC,EAAepB,GACfW,GAAQ,kBAAoB,GAAK,KAAK,IAAG,EAAKA,GAAQ,eAAiBA,GAAQ,0BACjFS,EAAeD,GAEjB,KAAK,MAAQ,OAAO,WAAW,KAAK,cAAeC,CAAY,CACjE,CACA,WAAY,CACN,KAAK,OAAS,OAChB,aAAa,KAAK,KAAK,EACvB,KAAK,MAAQ,KAEjB,CACA,MAAO,CACL,GAAI,CACF,QAAArC,CACN,EAAQ,KAAK,MAET,GADA,KAAK,UAAS,EACV,CAACA,EAAS,CACZ,IAAIsC,GACHA,EAAuB,KAAK,OAAO,WAAa,MAAQA,IAAyB,QAAUA,EAAqB,KAAI,EAIrH5B,aAAU,IAAM,CACd,KAAK,SAAS,CACZ,QAAS,EACnB,CAAS,CACH,CAAC,EACD,GAAI,CACF,YAAAQ,CACR,EAAU,KAAK,MACLA,GACF,KAAK,qBAAoB,CAE7B,CACF,CACA,MAAO,CACL,IAAIqB,GACHA,EAAwB,KAAK,OAAO,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,KAAI,EACxH,KAAK,oBAAmB,CAC1B,CACA,QAAS,CACP,IAAIC,GACHA,EAAwB,KAAK,OAAO,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,eAAc,CACpI,CACA,cAAe,CACb,KAAK,SAAS,CACZ,QAAS,EACf,CAAK,EACD,GAAI,CACF,SAAA3B,CACN,EAAQ,KAAK,MACTA,EAAQ,CACV,CACA,oBAAqB,CACnB,GAAI,CACF,QAAAb,CACN,EAAQ,KAAK,MACT,KAAK,UAAS,EACVA,GACF,KAAK,KAAI,CAEb,CACA,QAAS,CACP,GAAI,CACF,YAAAkB,EACA,SAAAF,EACA,gBAAAX,EACA,gBAAAoC,EACA,cAAejB,EACf,UAAAZ,CACN,EAAQ,KAAK,MACL,CACF,QAAAZ,CACN,EAAQ,KAAK,MACL,CACF,QAAA1B,CACN,EAAQ,KAAK,MACT,OAAAA,EAAUoB,GAAc,CACtB,UAAW,QACjB,EAAOpB,CAAO,EACU6C,MAAK,MAAO,CAC9B,IAAK,KAAK,UACV,MAAO,CACL,QAAS,MACjB,EACM,cAAeK,EACf,SAAuBL,MAAKvB,GAAQ,CAClC,UAAW0B,EAAWmB,EAAiB,gBAAgB,EACvD,QAASnE,EACT,IAAK,KAAK,OACV,UAAWsC,EACX,SAAU,KAAK,aACf,YAAaM,EACb,gBAAiBb,EACjB,SAAuBkB,OAAM,MAAO,CAClC,UAAW,kBACX,SAAU,CAAC,IAAKvB,GAAWgB,CAAQ,CAC7C,CAAS,CACT,CAAO,CACP,CAAK,CACH,CACF,CACAW,GAAWC,GACXpM,GAAgBoM,GAAS,iBAAkB,GAAG,EAC9CpM,GAAgBoM,GAAS,uBAAwB,GAAG,EACpDpM,GAAgBoM,GAAS,yBAA0B,GAAG,EACtDpM,GAAgBoM,GAAS,oBAAqB,CAAC,EAC/CpM,GAAgBoM,GAAS,iBAAkB,KAAK,IAAG,CAAE,EACrDpM,GAAgBoM,GAAS,eAAgB,CACvC,YAAa,GACb,QAAS,GACT,gBAAiB,GACjB,cAAeD,GAAS,qBACxB,QAASA,GAAS,eAClB,UAAW,OACX,SAAU,OACV,cAAe,MACjB,CAAC,EC/RD,IAAIvE,GAAMC,EAAI,OAAO,eAAe,EACzBqF,GAA4BC,gBAAc,IAAI,EACzDD,GAAa,YAAc,eACpB,SAASE,GAAcC,EAAM,CAClC,GAAI,CACF,OAAQC,EACR,kBAAAC,EAAoB,GACpB,qBAAAC,EAAuBC,GACvB,SAAAjC,CACJ,EAAM6B,EACAK,EAAavE,UAAQ,IAAMwE,GAAoB,EAAI,EAAE,EACrD,CAACjO,EAAOkO,CAAQ,EAAIC,WAAS,IAAI,EACjC,CAACC,EAAkBC,CAAmB,EAAIF,WAASG,EAA0B,EAG7EC,EAAe9E,UAAQ,IAAMmE,GAAgB,KAAO,KAAOY,GAAgBJ,EAAkB,CAC/F,KAAMJ,EACN,OAAQJ,GAAkE,EAC9E,CAAG,EAAG,CAACI,EAAYI,EAAkBR,CAAY,CAAC,EAC5Ca,EAAShF,UAAQ,IAAM,CAAC,GAAGuE,EAAY,GAAIJ,GAAkE,EAAG,EAAG,CAACI,EAAYJ,CAAY,CAAC,EA8BjJ,OA7BA3F,YAAU,UAAkC,CAE1C,GAAI,EAAAsG,GAAgB,MAAQX,GAAgB,MAM5C,CAAAc,GAAsBZ,CAAoB,EAC1C,IAAIa,EAAsBC,GAA6Bd,CAAoB,EAC3E5F,GAAI,OAAO,0BAA2B,CACpC,OAAQqG,EAAa,IAAIM,GAASA,EAAM,QAAQ,EAChD,OAAQjB,EAAa,IAAIiB,GAASA,EAAM,QAAQ,EAChD,oBAAAF,EACA,iBAAAP,CACN,CAAK,EACDU,GAAoB,CAClB,SAAUV,EACV,oBAAAO,CACN,CAAK,EACH,EAAG,CAACJ,EAAcH,EAAkBR,EAAcE,CAAoB,CAAC,EACvE7F,YAAU,IAAM,CACdiG,EAAS,CACP,aAAAK,EACA,iBAAAH,EACA,OAAAK,EACA,oBAAAJ,CACN,CAAK,CACH,EAAG,CAACE,EAAcH,EAAkBK,CAAM,CAAC,EACvCZ,GAAqBU,GAAgB,KAChC,KAEWlC,OAAM0C,WAAW,CACnC,SAAU,CAACR,GAAgB,KAAO,KAAoBtC,MAAK8C,WAAW,CACpE,SAAUR,EAAa,IAAIM,GAAsB5C,MAAK,QAAS,CAC7D,iBAAkB4C,EAAM,SACxB,SAAUA,EAAM,YACxB,EAASA,EAAM,QAAQ,CAAC,CACxB,CAAK,EAAG7O,GAAS,KAAO,KAAoBiM,MAAKuB,GAAa,SAAU,CAClE,MAAOxN,EACP,SAAuBiM,MAAKC,GAAuB,CACjD,SAAUJ,CAClB,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CCnEO,SAASkD,IAAW,CACzB,OAAOjG,GAAkByE,GAAc,mFAAmF,CAC5H,CCJO,SAASyB,GAAiBrE,EAAO,CACtC,GAAI,CACF,SAAAkB,EACA,UAAAD,EACA,MAAAqD,EACA,cAAe5C,CACnB,EAAM1B,EACJ,OAAoBqB,MAAK,MAAO,CAC9B,UAAWG,EAAW,YAAaP,CAAS,EAC5C,MAAOqD,EACP,KAAM,QACN,cAAe5C,EACf,SAAUR,CACd,CAAG,CACH,CCjBA,IAAIqD,GAAY,CAAC,OAAQ,UAAW,OAAQ,UAAW,OAAQ,WAAY,SAAU,UAAW,gBAAiB,cAAe,YAAa,eAAgB,eAAgB,YAAa,YAAa,QAAS,WAAY,WAAY,cAAe,YAAY,EACnQ,SAAS5E,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,SAAS0O,GAAyB7O,EAAGG,EAAG,CAAE,GAAYH,GAAR,KAAW,MAAO,GAAI,IAAIW,EAAG,EAAG,EAAImO,GAA8B9O,EAAGG,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIY,EAAI,OAAO,sBAAsBf,CAAC,EAAG,IAAK,EAAI,EAAG,EAAIe,EAAE,OAAQ,IAAKJ,EAAII,EAAE,CAAC,EAAUZ,EAAE,QAAQQ,CAAC,IAAlB,IAAuB,GAAG,qBAAqB,KAAKX,EAAGW,CAAC,IAAM,EAAEA,CAAC,EAAIX,EAAEW,CAAC,EAAI,CAAE,OAAO,CAAG,CACrU,SAASmO,GAA8B7O,EAAG,EAAG,CAAE,GAAYA,GAAR,KAAW,MAAO,GAAI,IAAI,EAAI,GAAI,QAASc,KAAKd,EAAG,GAAI,GAAG,eAAe,KAAKA,EAAGc,CAAC,EAAG,CAAE,GAAW,EAAE,QAAQA,CAAC,IAAlB,GAAqB,SAAU,EAAEA,CAAC,EAAId,EAAEc,CAAC,CAAG,CAAE,OAAO,CAAG,CAStM,SAASgO,GAAaC,EAAMC,EAAU,CACpC,OAAQD,EAAI,CACV,IAAK,UACH,MAAO,cACT,IAAK,YACH,MAAO,sBACT,IAAK,WACH,MAAO,gBACT,IAAK,UACH,MAAO,cACT,IAAK,SACH,MAAO,aACT,IAAK,SACH,MAAO,aACT,IAAK,QACH,OAAOnD,EAAW,WAAY,CAC5B,gBAAiBoD,EACjB,qBAAsBA,CAC9B,CAAO,CACP,CACA,CACA,SAASC,GAAkBF,EAAM,CAC/B,OAAQA,EAAI,CACV,IAAK,YACH,OAAOnD,EAAW,OAAQ,MAAM,CACtC,CACA,CACU,IAACsD,GAAsB7E,EAAM,WAAW,CAACD,EAAOhB,IAAQ,CAChE,GAAI,CACA,KAAA2F,EACA,QAAAI,EACA,KAAAC,EAAO,SACP,QAAAC,EACA,KAAAC,EACA,SAAAC,EAAW,GACX,OAAAC,EACA,QAAAC,EACA,cAAAC,EACA,YAAAC,EACA,UAAAC,EACA,aAAAC,EACA,aAAAC,EACA,UAAAC,EACA,UAAA1E,EACA,MAAAqD,EACA,SAAApD,EACA,SAAA0E,EACA,cAAelE,EACf,aAAcmE,CACpB,EAAQ7F,EACJ8F,EAAOtB,GAAyBxE,EAAOuE,EAAS,EAO9C,CACF,iBAAAwB,CACJ,EAAMC,GAAa,GAAI,QAAQ,EACzBC,EACAlB,IACFkB,EAAmBpB,GAAkBE,CAAO,GAE9C,IAAImB,EACAhB,IACFgB,EAAwBjG,EAAM,eAAeiF,CAAI,EAAIA,EAAoB7D,MAAK8E,GAAiB,CAC7F,KAAMjB,CACZ,CAAK,GAIH,IAAIN,EAAWsB,GAAY,MAAQhF,GAAY,KAC3CkF,EAAe1B,GAAaC,EAAMC,CAAQ,EAC1CyB,EACApB,IAAY,SACdoB,EAAc,OAAOpB,GAAY,SAAwB5D,MAAKS,GAAS,CACrE,SAAUmD,CAChB,CAAK,EAAIA,GAKP,IAAIqB,EAAkBT,EAClBA,IAAc,QAAajB,GAAYK,GAAW,MAAQ,OAAOA,GAAY,WAC/EqB,EAAkBrB,GAEpB,IAAIsB,EAAsB9E,OAAM,SAAU7B,GAAcA,GAAc,CACpE,cAAe8B,EACf,IAAK1C,EAGL,KAAMgG,EACN,UAAWxD,EAAW,MAAO4E,EAAcH,EAAkB,CAC3D,OAAAb,CACN,EAAOnE,EAAW8E,CAAgB,EAC9B,QAASV,EACT,cAAeC,EACf,UAAWE,EACX,YAAaD,EACb,aAAcE,EACd,aAAcC,EACd,UAAWC,EACX,MAAOrB,EACP,SAAUa,EACV,SAAUS,EACV,aAAcU,CAElB,EAAKR,CAAI,EAAG,GAAI,CACZ,SAAU,CAACZ,GAAQgB,EAAUhF,EAAU+D,GAAW,MAAQ,CAACE,GAAYkB,CAAW,CACtF,CAAG,CAAC,EAKF,OAAOlB,GAAYF,GAAW,KAAoBxD,OAAM,OAAQ,CAC9D,UAAW,uBACX,SAAU,CAAC8E,EAAQF,CAAW,CAClC,CAAG,EAAIE,CACP,CAAC,EACDzB,GAAO,YAAc,SCrIrB,SAAS0B,GAAYzD,EAAM,CACzB,GAAI,CACF,UAAA9B,EACA,SAAAC,EACA,cAAeQ,CACnB,EAAMqB,EACJ,OAAoB1B,MAAK,MAAO,CAC9B,UAAWG,EAAW,eAAgBP,CAAS,EAC/C,cAAeS,EACf,SAAUR,CACd,CAAG,CACH,CCIA,SAASuF,GAAWzG,EAAO,CACzB,GAAI,CACF,OAAA0G,EACA,WAAAC,EACA,SAAAC,EACA,SAAAC,EACA,UAAAC,EACA,UAAAC,EACA,eAAAC,EACA,iBAAAC,EAAmB,SACnB,kBAAAC,EAAoB,OACpB,kBAAAC,EAAoB,UACpB,gBAAAC,EAAkB,GAClB,SAAAlG,EACA,cAAeQ,CACnB,EAAM1B,EACAqH,EAAgBjK,SAAO,IAAI,EAC3BkK,EAAuBlK,SAAO,IAAI,EAClCmK,EAAmBzJ,cAAY,IAAM,CACnCwJ,EAAqB,UAAY,MAAQA,EAAqB,QAAQ,SAAWN,GACnFA,EAAc,EAEhBF,EAAS,CACX,EAAG,CAACA,EAAWE,CAAc,CAAC,EAC1BQ,EAAW1J,cAAY,IAAM,CAC/B,IAAI2J,GACHA,EAAwBJ,EAAc,WAAa,MAAQI,IAA0B,QAAUA,EAAsB,MAAK,CAC7H,EAAG,EAAE,EACDC,EAAY,GAChB,OAAIhB,IACFgB,EAAY,OAAOd,GAAa,WAAaA,EAAQ,EAAKA,GAExCnF,OAAMkG,GAAO,CAC/B,OAAQjB,EACR,SAAUc,EACV,SAAU,CAAcnG,MAAKuG,GAAa,CACxC,YAAa,GACb,SAAUjB,CAChB,CAAK,EAAgBtF,MAAKwG,GAAW,CAC/B,SAAUH,CAChB,CAAK,EAAgBjG,OAAM+E,GAAa,CAClC,SAAU,CAACQ,GAA+BvF,OAAM,MAAO,CACrD,UAAW,oDACX,SAAU,CAAcJ,MAAK,QAAS,CACpC,KAAM,WACN,UAAW,uBACX,GAAI,6BACJ,eAAgB,GAChB,IAAKiG,EACL,cAAe5F,IAAe,OAAY,GAAG,OAAOA,EAAY,mBAAmB,EAAI,MACjG,CAAS,EAAgBL,MAAK,QAAS,CAC7B,UAAW,uBACX,QAAS,6BACT,SAAU,oBACpB,CAAS,CAAC,CACV,CAAO,EAAG0F,GAA0B1F,MAAKyD,GAAQ,CACzC,KAAM,YACN,UAAW,UACX,eAAgB,QAChB,QAASiC,EACT,cAAerF,IAAe,OAAY,GAAG,OAAOA,EAAY,cAAc,EAAI,OAClF,SAAUyF,CAClB,CAAO,EAAGN,GAAyBxF,MAAKyD,GAAQ,CACxC,KAAM,YACN,eAAgB,QAChB,QAAS+B,EACT,cAAenF,IAAe,OAAY,GAAG,OAAOA,EAAY,aAAa,EAAI,OACjF,SAAUuF,CAClB,CAAO,EAAgBxF,OAAM4C,GAAkB,CACvC,SAAU,CAAchD,MAAKyD,GAAQ,CACnC,KAAMsC,EAAkB,SAAW,UACnC,QAASG,EACT,IAAKF,EACL,cAAe3F,IAAe,OAAY,GAAG,OAAOA,EAAY,cAAc,EAAI,OAClF,SAAUwF,CACpB,CAAS,EAAGhG,CAAQ,CACpB,CAAO,CAAC,CACR,CAAK,CAAC,CACN,CAAG,CACH,CCjGA,SAASxL,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAChT,SAASgS,GAAU1S,EAAO,CAC/B,OAAOA,EAAM,OAAS,MACxB,CACA,MAAM2S,EAAmB,CACvB,OAAO,mBAAoB,CACzBA,GAAmB,gBAAkB,EACvC,CACA,OAAO,kBAAmB,CACxBA,GAAmB,gBAAkB,EACvC,CACA,OAAO,qBAAqB,EAAG,CAC7B,OAAO,MAAM,QAAQ,EAAE,cAAc,CACvC,CAOA,OAAO,eAAexR,EAAG0F,EAAG,CAC1B,GAAI1F,EAAE,QAAU0F,EAAE,MAAO,CACvB,IAAI+L,EAAUC,EACd,QAASD,EAAWzR,EAAE,SAAW,MAAQyR,IAAa,OAASA,EAAW,KAAOC,EAAWhM,EAAE,SAAW,MAAQgM,IAAa,OAASA,EAAW,GAAK,EAAI,EAC7J,CACA,GAAI1R,EAAE,QAAU0F,EAAE,MAAO,CACvB,IAAIiM,EAAUC,EACd,QAASD,EAAW3R,EAAE,SAAW,MAAQ2R,IAAa,OAASA,EAAW,KAAOC,EAAWlM,EAAE,SAAW,MAAQkM,IAAa,OAASA,EAAW,GAAK,EAAI,EAC7J,CACA,GAAI5R,EAAE,QAAU0F,EAAE,MAAO,CACvB,IAAImM,EAAUC,EACd,QAASD,EAAW7R,EAAE,SAAW,MAAQ6R,IAAa,OAASA,EAAW,MAAQC,EAAWpM,EAAE,SAAW,MAAQoM,IAAa,OAASA,EAAW,IAAM,EAAI,EAC/J,CACA,OAAI9R,IAAM0F,EACD1F,EAAI0F,EAAI,EAAI,GAEd,CACT,CAMA,OAAO,YAAYqM,EAAS,CAC1B,GAAIA,GAAW,MAAQ,CAAC,MAAM,QAAQA,CAAO,EAC3C,MAAO,GAET,IAAIC,EAAgBD,EAAQ,MAAK,EACjC,OAAAC,EAAc,KAAKR,GAAmB,cAAc,EAC7CQ,CACT,CACA,OAAO,eAAgB,CACrB,GAAI,CACF,SAAAC,CACN,EAAQ,OAAO,UACX,OAAOA,EAAS,WAAW,KAAK,CAClC,CAKA,OAAO,gBAAiB,CACtB,OAAIT,GAAmB,gBACd,UAEF,SACT,CAMA,OAAO,kBAAkB9F,EAAO,CAC9B,IAAIwG,EAAcV,GAAmB,eAAc,EACnD,OAAO9F,EAAMwG,CAAW,CAC1B,CAUA,OAAO,aAAaC,EAAc,CAChC,IAAIC,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtFC,EAAY,GACZN,EAAUI,EACT,MAAM,QAAQJ,CAAO,IACxBA,EAAU,CAACA,CAAO,GAEpB,QAASvS,EAAI,EAAGA,EAAIuS,EAAQ,OAAQvS,GAAK,EAAG,CAC1C,IAAI8S,EAASP,EAAQvS,CAAC,EAClB+S,EAAe,OACf,OAAOD,GAAW,WACpBC,EAAeD,EAAM,EAErBC,EAAeD,EAEbC,GAAgB,OACdA,aAAwB,QACtBH,GACFC,EAAU,KAAKE,CAAY,EAEpB,MAAM,QAAQA,CAAY,EACnCF,EAAYA,EAAU,OAAOE,CAAY,EAEzCF,EAAU,KAAKE,CAAY,EAGjC,CACA,OAAAF,EAAYA,EAAU,OAAOC,GAAUA,EAAO,QAAU,QAAaA,EAAO,MAAQ,MAAQA,EAAO,WAAW,EACvGD,CACT,CAQA,OAAO,gBAAgBG,EAAYC,EAAOJ,EAAW,CACnD,IAAIK,EAAaF,EACbE,EAAa,GAAKD,EAAQ,IAE5BC,EAAaL,EAAU,QAGzB,QAAS7S,EAAI,EAAGA,EAAI6S,EAAU,OAAS,EAAG7S,GAAK,EAAG,CAChD,IAAImT,GAAaD,EAAaD,EAAQjT,EAAI6S,EAAU,QAAUA,EAAU,OACpEpO,EAAOoO,EAAUM,CAAS,EAC9B,GAAI,EAAE1O,aAAgB,UAAYA,EAAK,WAAa,GAClD,OAAO0O,CAEX,CACA,OAAOH,CACT,CACF,CACArT,GAAgBqS,GAAoB,kBAAmB,EAAK,EC1I5D,IAAIzK,GAAMC,EAAI,OAAO,qBAAqB,EAC1C,MAAM4L,WAA4BpJ,WAAU,CAC1C,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,CACnD,CACA,mBAAoB,CAClB,SAAS,KAAK,iBAAiB,cAAe,KAAK,iBAAiB,EACpE,SAAS,KAAK,iBAAiB,UAAW,KAAK,aAAa,CAC9D,CACA,sBAAuB,CACrB,SAAS,KAAK,oBAAoB,cAAe,KAAK,iBAAiB,EACvE,SAAS,KAAK,oBAAoB,UAAW,KAAK,aAAa,CACjE,CACA,kBAAkBoJ,EAAK,CACrB,IAAIzT,EAAIyT,EACJzT,EAAE,gBAAkB,OACtBA,EAAE,eAAiB,IAErB,GAAI,CACF,OAAAkT,CACN,EAAQ,KAAK,MACLA,EAAO,OAAS,MAAQ,CAACA,EAAO,cAGhClT,EAAE,gBAAkB,OACtBA,EAAE,eAAiB,IAErBA,EAAE,eAAe,KAAKkT,CAAM,EAC5BvL,GAAI,MAAM,qEAAsE3H,EAAE,cAAc,EAClG,CACA,cAAc,EAAG,CACf,GAAI,CACF,OAAAkT,CACN,EAAQ,KAAK,MACT,GAAI,CAACd,GAAmB,iBAAmBc,EAAO,WAAa,QAAaA,EAAO,SAAS,aAAa,CAAC,EAAG,CAC3G,IAAIQ,EACJ/L,GAAI,MAAM,yBAA0B,CAAC,GACpC+L,EAAiBR,EAAO,UAAY,MAAQQ,IAAmB,QAAUA,EAAe,KAAKR,EAAQ,CAAC,EACvG,EAAE,eAAc,EAChB,EAAE,gBAAe,CACnB,CACF,CACA,QAAS,CACP,OAAO,IACT,CACF,CC/CA,MAAMS,WAA6BvJ,WAAU,CAC3C,QAAS,CAMP,OALI,CACF,QAAAuI,EACA,cAAe5G,CACrB,EAAQ,KAAK,MACL6H,EAAiB,GACZ,EAAI,EAAG,EAAIjB,EAAQ,OAAQ,GAAK,EAAG,CAC1C,IAAIO,EAASP,EAAQ,CAAC,EAClB,CACF,SAAAkB,CACR,EAAUX,EACJ,GAAIA,EAAO,OAAS,MAAQA,EAAO,aAAeW,EAAU,CAC1D,IAAIC,EAA6BpI,MAAK8H,GAAqB,CACzD,OAAQN,EACR,cAAenH,CACzB,EAAW,GAAG,OAAOmH,EAAO,MAAO,GAAG,EAAE,OAAOW,GAAa,KAA8B,OAASA,EAAS,EAAE,CAAC,EACvGD,EAAe,KAAKE,CAAa,CACnC,CACF,CACA,OAAOF,CACT,CACF,CCzBA,SAAS7T,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAUvT,IAAIwH,GAAMC,EAAI,OAAO,gBAAgB,EA2BrC,MAAMmM,WAAuB3J,WAAU,CACrC,OAAO,YAAYK,EAASuJ,EAASC,EAAStB,EAAS,CACrD,GAAIA,EAAQ,SAAW,EAGvB,KAAIuB,EAAa,IAAI,WAAW,cAAe,CAC7C,QAAAF,EACA,QAAAC,EACA,QAAS,GACT,WAAY,EAClB,CAAK,EACDC,EAAW,eAAiBvB,EAC5BlI,EAAQ,cAAcyJ,CAAU,EAClC,CACA,YAAY7J,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,YAAa,MAAM,EACzC,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,UAAyBuK,EAAM,UAAS,EAC7C,KAAK,MAAQ,CACX,cAAe,GACf,gBAAiB,EACvB,CACE,CACA,OAAO,yBAAyBD,EAAO,CACrC,GAAIA,EAAM,SAAW,MAAQ,CAAC,MAAM,QAAQA,EAAM,OAAO,EACvD,MAAO,CACL,cAAe,GACf,gBAAiB,EACzB,EAEI,IAAI8J,EAAgB9J,EAAM,QAAQ,OAAO6I,GAAU,CAACf,GAAUe,CAAM,GAAK,OAAOA,GAAW,YAAcA,EAAO,QAAQ,EACpHkB,EAAkB/J,EAAM,QAAQ,OAAO6I,GAAU,CAACf,GAAUe,CAAM,GAAK,OAAOA,GAAW,aAAeA,EAAO,WAAa,QAAa,CAACA,EAAO,WAAaA,EAAO,UAAY,IAAI,EACzL,MAAO,CACL,cAAAiB,EACA,gBAAAC,CACN,CACE,CACA,mBAAoB,CAClB,IAAIC,GACCA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,gBACzH,KAAK,UAAU,QAAQ,cAAc,iBAAiB,cAAe,KAAK,iBAAiB,EAC3F,KAAK,UAAU,QAAQ,cAAc,iBAAiB,UAAW,KAAK,aAAa,EAEvF,CACA,sBAAuB,CACrB,IAAIC,GACCA,EAAyB,KAAK,UAAU,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,gBAC5H,KAAK,UAAU,QAAQ,cAAc,oBAAoB,cAAe,KAAK,iBAAiB,EAC9F,KAAK,UAAU,QAAQ,cAAc,oBAAoB,UAAW,KAAK,aAAa,EAE1F,CACA,kBAAkB,EAAG,CACnB,GAAI,CACF,iBAAAC,EAAmB,EACzB,EAAQ,KAAK,MACT,GAAIA,EAAiB,OAAS,GAgB5B,QAfIC,EAAK,EAAE,OACPC,EAAQ,UAAiB,CACzB,GAAI,CACF,UAAAC,CACZ,EAAcF,EACAG,EAAmBJ,EAAiB,KAAKjJ,GAAaoJ,EAAU,SAASpJ,CAAS,CAAC,EACvF,GAAIqJ,IAAqB,OACvBhN,UAAI,OAAO,4DAA6D,OAAOgN,EAAkB,GAAI,CAAC,EAC/F,CACL,EAAG,MACjB,EAEUH,EAAKA,EAAG,aACV,EACAI,EACKJ,GAAM,MAEX,GADAI,EAAOH,EAAK,EACRG,EAAM,OAAOA,EAAK,EAM1B,GAHKxC,GAAmB,qBAAqB,CAAC,IAC5C,EAAE,eAAiB,IAEjB,EAACA,GAAmB,qBAAqB,CAAC,EAG9C,IAAI,CACF,QAAAO,CACN,EAAQ,KAAK,MACT,GAAIA,GAAW,KAAM,CACnB,IAAIkC,EAAiBlC,EACjB,MAAM,QAAQkC,CAAc,IAC9BA,EAAiBA,EAAe,OAAO3B,GAAUf,GAAUe,CAAM,GAAK,OAAOA,GAAW,YAAcA,EAAO,WAAa,QAAa,CAACA,EAAO,QAAQ,GAEzJ,EAAE,eAAiB,EAAE,eAAe,OAAO2B,CAAc,CAC3D,CACAlN,GAAI,MAAM,oDAAqD,EAAE,cAAc,EACjF,CACA,cAAc,EAAG,CAIf,OAHI,CACF,gBAAAyM,CACN,EAAQ,KAAK,MACAhU,EAAI,EAAGA,EAAIgU,EAAgB,OAAQhU,GAAK,EAAG,CAClD,IAAI0U,EAAiBV,EAAgBhU,CAAC,EACtC,GAAI,CAACgS,GAAmB,iBAAmB0C,EAAe,UAAY,MAAQA,EAAe,SAAS,aAAa,CAAC,EAAG,CACrH,IAAIC,EACJpN,GAAI,MAAM,0BAA2B,CAAC,GACrCoN,EAAwBD,EAAe,UAAY,MAAQC,IAA0B,QAAUA,EAAsB,KAAKD,EAAgB,CAAC,EAC5I,EAAE,gBAAe,EACjB,EAAE,eAAc,EAChBnN,GAAI,OAAO,uDAAuD,CACpE,CACF,CACF,CACA,QAAS,CACP,GAAI,CACF,cAAeoE,CACrB,EAAQ,KAAK,MACL,CACF,cAAAoI,CACN,EAAQ,KAAK,MACT,OAAoBzI,MAAK,MAAO,CAC9B,UAAW,2BACX,IAAK,KAAK,UACV,cAAeK,EACf,SAAuBL,MAAKiI,GAAsB,CAChD,QAASQ,CACjB,CAAO,CACP,CAAK,CACH,CACF,CAOApU,GAAgBgU,GAAgB,SAAU,CACxC,QAAS,OACT,KAAM,IACN,OAAQ,IACR,IAAK,IACL,OAAQ,IACR,KAAM,GACR,CAAC,EChLE,IAACiB,GAA+B1K,EAAM,WAAW,CAAC8C,EAAM/D,IAAQ,CACjE,IAAI4L,EAAuBC,EACvB,CACF,UAAAC,EACA,SAAA5J,EACA,SAAA6J,EACA,gBAAAC,EACA,oBAAAC,EACA,sBAAAC,EACA,mBAAAC,EAAqB,GACrB,gBAAAC,EAAkB,GAClB,cAAe1J,CACnB,EAAMqB,EACAsI,EAAsBvN,cAAYnI,GAAK,CACzCqV,EAAgBD,EAAUpV,CAAC,CAC7B,EAAG,CAACoV,EAAUC,CAAe,CAAC,EAC1BM,EAA0BxN,cAAYnI,GAAK,CAC7CsV,EAAoBF,EAAUpV,CAAC,CACjC,EAAG,CAACoV,EAAUE,CAAmB,CAAC,EAC9BM,EAA4BzN,cAAYnI,GAAK,CAC/CuV,EAAsBH,EAAUpV,CAAC,CACnC,EAAG,CAACoV,EAAUG,CAAqB,CAAC,EACpC,SAASM,EAAwBpL,EAASqL,EAAaC,EAAiB,CAEtE,GAAI,OAAOtL,EAAQ,MAAS,SAC1B,OAAOA,EAET,IAAIuL,EAAiB,CACnB,SAAAZ,EACA,UAAAD,EACA,mBAAAK,EACA,gBAAAC,EACA,YAAAK,EACA,gBAAAC,EACA,cAAehK,CACrB,EACI,OAAoBzB,EAAM,aAAaG,EAAS,CAC9C,eAAAuL,CACN,CAAK,CACH,CACA,IAAID,GAAmBd,EAAwBG,EAAS,gBAAkB,MAAQH,IAA0B,OAASA,GAAyBC,EAAqBE,EAAS,YAAc,MAAQF,IAAuB,OAAS,OAASA,EAAmB,eAAc,EACxQ3F,EAAO,KACX,GAAI6F,EAAS,KAAM,CACjB,IAAIa,EAAeb,EAAS,KAC5B,GAAiB9K,EAAM,eAAe2L,CAAY,EAChD1G,EAAO0G,MACF,CACL,IAAItH,EACAyG,EAAS,WAAa,OAASA,EAAS,WAAa,QAAa,CAACA,EAAS,YAC9EzG,EAAQ,CACN,MAAOyG,EAAS,SAC1B,GAEM7F,EAAoB7D,MAAK8E,GAAiB,CACxC,KAAMyF,EACN,MAAOtH,CACf,CAAO,CACH,CACF,CACA,IAAIuH,EAAmB,KACnBC,EAAkB,EAAQ5K,EAC1B6J,EAAS,UACXc,EAAgCxK,MAAK8E,GAAiB,CACpD,KAAM4F,EACZ,CAAK,GAEH,IAAIC,EAAU,KACd,GAAIjB,EAAS,YACXiB,EAAuB3K,MAAK,MAAO,CACjC,UAAW,mBACX,YAAaiK,EACb,SAAUE,EAAwBT,EAAS,YAAa7F,EAAMwG,CAAe,CACnF,CAAK,MACI,CACL,IAAIO,EACAC,EAAmBnB,EAAS,SAC5BoB,EAAiBpB,EAAS,YAC9BiB,EAAuB3K,MAAK,SAAU,CACpC,KAAM,SACN,UAAWG,EAAW,mBAAoB,CACxC,SAAU0K,CAClB,EAAS,CACD,QAASJ,GAAmBV,KAAqBc,IAAqB,QAAa,CAACA,EAC5F,EAAS,CACD,kBAAmBf,IAAuBe,IAAqB,QAAa,CAACA,EACrF,CAAO,EACD,QAASb,EACT,YAAaC,EACb,cAAeC,EACf,OAAQU,EAAwBlB,EAAS,eAAiB,MAAQkB,IAA0B,OAASA,EAAwB,GAC7H,SAAuBxK,OAAM,MAAO,CAClC,UAAW,2BACX,SAAU,CAAcJ,MAAK,OAAQ,CACnC,UAAWG,EAAW,OAAQ,CAC5B,QAAS2K,CACrB,CAAW,EACD,SAAUjH,CACpB,CAAS,EAAgB7D,MAAK,OAAQ,CAC5B,UAAW,QACX,SAAU0J,EAAS,KAC7B,CAAS,EAAGW,IAAoB,QAA0BrK,MAAK,OAAQ,CAC7D,UAAW,WACX,SAAUqK,CACpB,CAAS,EAAGG,GAAiCxK,MAAK,OAAQ,CAChD,UAAWG,EAAW,oBAAqB,CACzC,SAAU0K,CACtB,CAAW,EACD,SAAUL,CACpB,CAAS,CAAC,CACV,CAAO,CACP,CAAK,CACH,CACA,OAAoBpK,OAAM,MAAO,CAC/B,UAAW,oBACX,IAAKzC,EACL,cAAe0C,EACf,SAAU,CAACR,EAAU8K,CAAO,CAChC,CAAG,CACH,CAAC,EACDrB,GAAgB,YAAc,kBCpH3B,IAACyB,GAAwBnM,EAAM,WAAW,CAACD,EAAOqM,IAAiB,CACpE,GAAI,CACF,QAAAC,EAAU,GACV,SAAApL,EACA,UAAAD,EACA,SAAAkE,EAAW,GACX,eAAAoH,EACA,UAAAC,EAAY,GACZ,eAAAC,EACA,KAAAvV,EACA,SAAAwV,EACA,cAAehL,CACnB,EAAM1B,EACA,CAAC2M,CAAE,EAAIpJ,WAASqJ,GAAM,CAAE,EACxB5N,EAAMS,GAAgB4M,CAAY,EACtChP,YAAU,UAAoC,CACxC2B,EAAI,UAENA,EAAI,QAAQ,cAAgBsN,IAAY,KAE5C,EAAG,CAACtN,EAAKsN,CAAO,CAAC,EACjB,IAAIO,EAAiB/O,cAAYmE,GAAS,CACpCjD,EAAI,UAENA,EAAI,QAAQ,cAAgBsN,IAAY,MAEtCI,GACFA,EAASzK,CAAK,CAElB,EAAG,CAACjD,EAAKsN,EAASI,CAAQ,CAAC,EAC3B,OAAoBjL,OAAM,MAAO,CAC/B,UAAWD,EAAW,iCAAkCP,CAAS,EACjE,SAAU,CAAcI,MAAK,QAAS,CACpC,KAAM,WACN,IAAKrC,EACL,QAASsN,GAAmD,GAE5D,UAAW9K,EAAW,uBAAwB+K,EAAgB,CAC5D,aAAcC,CACtB,CAAO,EACD,SAAUrH,EACV,GAAIwH,EACJ,KAAMzV,EACN,SAAU2V,EACV,cAAenL,CACrB,CAAK,EAAgBL,MAAK,QAAS,CAC7B,UAAWG,EAAW,uBAAwBiL,CAAc,EAC5D,QAASE,EACT,SAAUzL,CAChB,CAAK,CAAC,CACN,CAAG,CACH,CAAC,EAIDkL,GAAS,YAAc,WCpDhB,SAASU,GAAmB/M,EAAW,CAC5C,OAAQA,GAAc,KAA+B,OAASA,EAAU,oBAAsB,MAChG,CAOO,SAASgN,GAAiBhN,EAAW,CAC1C,OAAI+M,GAAmB/M,CAAS,GAAKgN,GAAiBhN,EAAU,gBAAgB,EACvE,GAEFA,EAAU,WAAa,MAAQA,EAAU,UAAU,kBAAoB,IAChF,CAOO,SAASiN,GAA0BjN,EAAW,CACnD,MAAO,CAAC+M,GAAmB/M,CAAS,GAGpC,aAAcA,GAAaA,EAAU,WAAakN,aACpD,CAQO,SAASC,GAAWnN,EAAW,CACpC,OAAOgN,GAAiBhN,CAAS,GAAKiN,GAA0BjN,CAAS,CAC3E,CC/CA,SAASJ,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAcvT,MAAMqX,WAAaC,eAAc,CAC/B,YAAYpN,EAAO,CACjB,IAAIqN,EACJ,MAAMrN,CAAK,EACXtK,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,MAAO,MAAM,EACnC,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,UAAyBuK,EAAM,UAAS,EAC7C,KAAK,SAAW,SAAS,cACzB,KAAK,IAAM,EACX,GAAI,CACF,QAAAzB,CACN,EAAQwB,EACAsN,GAAiBD,EAAwB7O,EAAQ,wBAA0B,MAAQ6O,IAA0B,OAASA,EAAwB,GAClJ,KAAK,MAAQ,CACX,UAAW,GACX,cAAAC,EACA,WAAY,EAClB,CACE,CACA,mBAAoB,CAClB,KAAK,SAAQ,EACb,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5C,IAAItD,GAGHA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,EAC5H,GAAI,CACF,aAAAuD,CACR,EAAU,KAAK,MACTA,EAAa,IAAI,CACnB,CAAC,CACH,CACA,mBAAmBpN,EAAW,CAC5B,GAAI,CACF,QAAAmI,CACN,EAAQ,KAAK,MACLnI,EAAU,UAAYmI,GACxB,KAAK,SAAQ,CAEjB,CACA,sBAAuB,CACrB,qBAAqB,KAAK,GAAG,CAC/B,CACA,kBAAmB,CACjB,GAAI,CACF,QAAA9J,CACN,EAAQ,KAAK,MACT,GAAIA,EAAQ,wBAA0B,QAAaA,EAAQ,sBAAuB,CAChF,GAAI,CACF,cAAA8O,CACR,EAAU,KAAK,MACT,OAAOA,CACT,CACA,OAAO,KAAK,cAAa,CAC3B,CACA,iBAAiBtS,EAAO,CACtB,GAAI,CACF,QAAAwD,CACN,EAAQ,KAAK,MACLA,EAAQ,wBAA0B,QAAaA,EAAQ,sBACzD,KAAK,SAAS,CACZ,cAAexD,CACvB,CAAO,EAED,KAAK,cAAcA,CAAK,CAE5B,CACA,eAAgB,CACd,GAAI,CACF,WAAAwS,CACN,EAAQ,KAAK,MACT,OAAOA,CACT,CACA,cAAcxS,EAAO,CACnB,KAAK,SAAS,CACZ,WAAYA,CAClB,CAAK,CACH,CACA,UAAW,CAET,qBAAqB,KAAK,GAAG,EAC7B,KAAK,SAAS,CACZ,UAAW,EACjB,CAAK,EACD,GAAI,CACF,QAAAsN,CACN,EAAQ,KAAK,MACLM,EAAYb,GAAmB,aAAaO,EAAS,EAAK,EAC1DM,EAAU,OAAS,GACrB,KAAK,SAAS6E,IAAU,CACtB,UAAW1F,GAAmB,YAAY0F,EAAM,UAAU,OAAO7E,CAAS,CAAC,CACnF,EAAQ,CAEN,CACA,cAAc,EAAG,CACf,GAAI,CACF,UAAAA,CACN,EAAQ,KAAK,MACLnR,EAAW,KAAK,iBAAgB,EAChCiW,EAAWjW,EACf,GAAI,EAAE,MAAQ,SAAW,EAAE,MAAQ,IAAK,CAClCA,GAAY,MAAQA,GAAY,GAAKA,EAAWmR,EAAU,QAC5D,KAAK,oBAAoBA,EAAUnR,CAAQ,EAAG,CAAC,EAEjD,MACF,CACI,EAAE,MAAQ,SACZiW,EAAW,KACF,EAAE,MAAQ,WAAa,EAAE,MAAQ,OAAS,EAAE,WAAa,GAClEA,EAAW3F,GAAmB,gBAAgB2F,GAAsD,EAAG,GAAI9E,CAAS,GAC3G,EAAE,MAAQ,aAAe,EAAE,MAAQ,OAAS,EAAE,WAAa,MACpE8E,EAAW3F,GAAmB,gBAAgB2F,GAAsD,EAAG,EAAG9E,CAAS,GAEjHnR,IAAaiW,IACXA,IAAa,KACf,KAAK,iBAAiBA,CAAQ,GAE9B,KAAK,UAAS,EACV,KAAK,oBAAoB,aAC3B,KAAK,SAAS,MAAK,GAGvB,EAAE,eAAc,EAChB,EAAE,gBAAe,EAErB,CACA,WAAY,CACV,IAAIC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/E,CACF,UAAA7C,EACA,aAAA8C,CACN,EAAQ,KAAK,MACT,qBAAqB,KAAK,GAAG,EAC7B,KAAK,IAAM,OAAO,sBAAsB,IAAM,CAC5C9C,EAAU6C,CAAQ,EAClBC,EAAa,IAAI,CACnB,CAAC,CACH,CACA,iBAAkB,CAChB,KAAK,UAAS,CAChB,CACA,oBAAoB7C,EAAUpV,EAAG,CAC/BA,EAAE,eAAc,EAChBA,EAAE,gBAAe,EACboV,GAAY,OAASA,EAAS,WAAa,QAAa,CAACA,EAAS,WAAaA,EAAS,QAAU,OACpGA,EAAS,OAAOpV,EAAE,WAAW,EAC7B,KAAK,UAAU,EAAI,EAEvB,CACA,wBAAwBoV,EAAU,CAChC,GAAI,CACF,UAAAnC,CACN,EAAQ,KAAK,MACLiF,EAAajF,EAAU,QAAQmC,CAAQ,EAC3C,KAAK,cAAc8C,CAAU,CAC/B,CACA,kBAAmB,CACjB,KAAK,cAAc,EAAE,CACvB,CACA,QAAS,CAUP,QATIC,EAAmB,GACnB,CACF,cAAepM,CACrB,EAAQ,KAAK,MACL,CACF,cAAA4L,EACA,UAAA1E,EACA,WAAA4E,CACN,EAAQ,KAAK,MACAzX,EAAI,EAAGA,EAAI6S,EAAU,OAAQ7S,GAAK,EAAG,CAC5C,IAAIgV,EAAWnC,EAAU7S,CAAC,EACtBA,EAAI,GAAKgV,EAAS,QAAUnC,EAAU7S,EAAI,CAAC,EAAE,OAC/C+X,EAAiB,KAAkBzM,MAAK,KAAM,GAAI,GAAG,OAAOtL,EAAG,YAAY,CAAC,CAAC,EAE/E,IAAIgY,EAA+B1M,MAAKsJ,GAAiB,CACvD,mBAAoB2C,IAAkBvX,EACtC,gBAAiByX,IAAezX,EAChC,SAAUgV,EACV,UAAW,KAAK,gBAChB,gBAAiB,KAAK,oBACtB,oBAAqB,KAAK,wBAC1B,sBAAuB,IAAM,EACrC,EAAShV,CAAC,EACJ+X,EAAiB,KAAKC,CAAe,CACvC,CACA,GAAI,CACF,UAAAC,CACN,EAAQ,KAAK,MACT,OAAoB3M,MAAK,MAAO,CAC9B,UAAW,yBACX,MAAOzB,GAAc,GAAIoO,CAAS,EAClC,IAAK,KAAK,UACV,UAAW,KAAK,cAChB,aAAc,KAAK,iBACnB,KAAM,WACN,SAAU,EACV,cAAetM,EACf,SAAUoM,CAChB,CAAK,CACH,CACF,CACApY,GAAgByX,GAAM,eAAgB,CACpC,WAAY,CAEZ,EACA,cAAe,CAEf,EACA,cAAe,CAEf,EACA,QAAS,GACT,UAAW,GACX,cAAe,MACjB,CAAC,EC9OD,SAASxN,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAqCvT,MAAMmY,WAAqBb,eAAc,CACvC,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,SAAU,MAAM,EACtC,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,UAAyBuK,EAAM,UAAS,EAC7C,KAAK,OAAS,KACd,KAAK,OAAsBA,EAAM,UAAS,EAC1C,KAAK,OAAS,EAChB,CACA,mBAAoB,CAClB,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MACT,GAAIA,IAAY,KAAM,CACpB,IAAI8J,GACCA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,gBACzH,KAAK,OAAS,KAAK,UAAU,QAAQ,cACrC,KAAK,OAAO,iBAAiB,QAAS,KAAK,WAAW,EAE1D,MAAW9J,GACT,KAAK,SAAQ,CAEjB,CACA,mBAAmBC,EAAW,CAC5B,GAAI,CACF,QAAAD,CACN,EAAQ,KAAK,MACLC,EAAU,UAAYD,IACpBA,IAAY,MAAQA,EAEtB,OAAO,sBAAsB,IAAM,CACjC,KAAK,SAAQ,CACf,CAAC,EAED,KAAK,UAAS,EAGpB,CACA,sBAAuB,CACjB,KAAK,QACP,KAAK,OAAO,oBAAoB,QAAS,KAAK,WAAW,CAE7D,CACA,WAAY,CACV,IAAIsC,GACHA,EAAuB,KAAK,OAAO,WAAa,MAAQA,IAAyB,QAAUA,EAAqB,KAAI,CACvH,CACA,UAAW,CACL,KAAK,OAAO,SAAW,CAAC,KAAK,SAC/B,KAAK,OAAO,QAAQ,KAAI,EACxB,KAAK,OAAS,GAElB,CACA,gBAAiB,CACf,IAAIC,GACHA,EAAwB,KAAK,OAAO,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,eAAc,CACpI,CACA,YAAY,EAAG,CACb,EAAE,eAAc,EAChB,EAAE,gBAAe,EACjB,KAAK,SAAQ,CACf,CACA,iBAAkB,CAChB,KAAK,UAAS,CAChB,CACA,cAAe,CACb,KAAK,OAAS,GACd,GAAI,CACF,aAAAmL,CACN,EAAQ,KAAK,MACTA,EAAY,CACd,CACA,QAAS,CACP,GAAI,CACF,QAAAtF,EACA,aAAAiF,EACA,gBAAA5K,EACA,cAAejB,CACrB,EAAQ,KAAK,MACL,CACF,UAAAsM,CACN,EAAQ,KAAK,MACL,CACF,QAAAxP,EACA,cAAA0P,CACN,EAAQ,KAAK,MACT,OAAAA,EAAgBtO,GAAc,CAC5B,UAAW,QACjB,EAAOsO,CAAa,EAChB1P,EAAUoB,GAAc,CACtB,sBAAuB,EAC7B,EAAOpB,CAAO,EACU6C,MAAK,MAAO,CAC9B,UAAW,wBACX,IAAK,KAAK,UACV,cAAeK,EACf,SAAuBL,MAAKvB,GAAQ,CAClC,IAAK,KAAK,OACV,QAASoO,EACT,UAAW1M,EAAW,cAAemB,CAAe,EACpD,SAAU,KAAK,aACf,YAAa,GACb,YAAa,GACb,SAAuBtB,MAAK8L,GAAM,CAChC,QAAS7E,EACT,UAAW,KAAK,gBAChB,aAAciF,EACd,QAAS/O,EACT,UAAWwP,CACrB,CAAS,CACT,CAAO,CACP,CAAK,CACH,CACF,CACAtY,GAAgBuY,GAAc,eAAgB,CAC5C,QAAS,KACT,cAAe,CAEf,EACA,cAAe,CAEf,EACA,QAAS,GACT,cAAe,GACf,gBAAiB,GACjB,UAAW,GACX,cAAe,MACjB,CAAC,EC9KD,SAASvY,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAMvT,IAAIwH,GAAMC,EAAI,OAAO,UAAU,EACpB4Q,EAAwB,SAAUA,EAAU,CACrD,OAAAA,EAAS,KAAU,gBACnBA,EAAS,IAAS,eAClBA,EAAS,IAAS,eAClBA,EAAS,OAAY,kBACrBA,EAAS,MAAW,iBACbA,CACT,EAAE,EAAE,EAIOC,EAAmB,SAAUA,EAAK,CAC3C,OAAAA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,EAAO,IACXA,EAAI,KAAU,IACdA,EAAI,IAAS,IACbA,EAAI,IAAS,IACbA,EAAI,MAAW,IACfA,EAAI,KAAU,IACdA,EAAI,KAAU,IACdA,EAAI,IAAS,IACbA,EAAI,MAAW,IACfA,EAAI,MAAW,IACfA,EAAI,KAAU,IACdA,EAAI,UAAe,YACnBA,EAAI,OAAY,SAChBA,EAAI,MAAW,QACfA,EAAI,OAAY,SAChBA,EAAI,MAAW,IACfA,EAAI,cAAmB,IACvBA,EAAI,UAAe,KACnBA,EAAI,KAAU,IACdA,EAAI,MAAW,IACfA,EAAI,WAAgB,IACpBA,EAAI,OAAY,IAChBA,EAAI,KAAU,IACdA,EAAI,SAAc,IAClBA,EAAI,MAAW,IACfA,EAAI,MAAW,IACfA,EAAI,aAAkB,IACtBA,EAAI,OAAY,IAChBA,EAAI,cAAmB,IACvBA,EAAI,UAAe,IACnBA,EAAI,MAAW,IACfA,EAAI,aAAkB,IACtBA,EAAI,aAAkB,IACtBA,EAAI,aAAkB,IACtBA,EAAI,cAAmB,IACvBA,EAAI,WAAgB,IACpBA,EAAI,YAAiB,IACrBA,EAAI,GAAQ,KACZA,EAAI,GAAQ,KACZA,EAAI,GAAQ,KACZA,EAAI,GAAQ,KACZA,EAAI,GAAQ,KACZA,EAAI,GAAQ,KACZA,EAAI,GAAQ,KACZA,EAAI,GAAQ,KACZA,EAAI,GAAQ,KACZA,EAAI,IAAS,MACbA,EAAI,IAAS,MACbA,EAAI,IAAS,MACNA,CACT,EAAE,EAAE,EACAC,GAAyB,IAAI,IAAI,CAACD,EAAI,MAAOA,EAAI,OAAQA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAKA,EAAI,IAAKA,EAAI,GAAG,CAAC,EAChJ,MAAME,WAAiBC,EAAY,CAMhD,OAAO,aAAaC,EAAK,CACvB,OAAO,OAAO,OAAOJ,CAAG,EAAE,SAASI,CAAG,CACxC,CAOA,OAAO,gBAAgBf,EAAO,CAC5B,GAAI,CACF,SAAAgB,CACN,EAAQhB,EACJ,GAAIgB,IAAa,KAEf,MAAO,GAMT,GAJI,CAACH,GAAS,eAAiBb,EAAM,SAIjC,CAACa,GAAS,aAAaG,CAAQ,EACjC,MAAO,GAET,IAAIC,EAAc,CAACjB,EAAM,QAAU,CAACA,EAAM,SAAW,CAACA,EAAM,SAAW,CAACA,EAAM,SAC9E,MAAO,CAACiB,GAAeL,GAAuB,IAAII,CAAQ,CAC5D,CAMA,OAAO,eAAeE,EAAM,CAC1B,IAAIC,EAAW,CACb,OAAQ,GACR,QAAS,GACT,QAAS,GACT,SAAU,GACV,SAAUD,EAAKA,EAAK,OAAS,CAAC,CACpC,EACI,OAAAA,EAAK,QAAQH,GAAO,CAClB,OAAQA,EAAG,CACT,KAAKL,EAAS,KACZS,EAAS,QAAU,GACnB,MACF,KAAKT,EAAS,IACd,KAAKA,EAAS,OACZS,EAAS,OAAS,GAClB,MACF,KAAKT,EAAS,IACZS,EAAS,QAAU,GACnB,MACF,KAAKT,EAAS,MACZS,EAAS,SAAW,GACpB,KAGV,CACI,CAAC,EACMA,CACT,CACA,OAAO,qBAAqB,EAAG,CAC7B,GAAI,CACF,IAAKC,EACL,QAAAC,CACN,EAAQ,EACAN,EAAM,GACV,OAAIK,IAAa,SAAWA,IAAa,QAAUA,IAAa,WAAaA,IAAa,MACxFL,EAAM,GAIR,CAACF,GAAS,aAAaO,CAAQ,GAAKP,GAAS,aAAa,OAAO,aAAaQ,CAAO,CAAC,EACpFN,EAAM,OAAO,aAAaM,CAAO,EAEjCN,EAAMK,EAED,CACL,SAAUL,EACV,OAAQ,EAAE,OACV,QAAS,EAAE,QACX,QAAS,EAAE,QACX,SAAU,EAAE,QAClB,CACE,CAQA,OAAO,sBAAsBI,EAAU,CACrC,IAAIG,EAAU,GACd,OAAIH,EAAS,UACXG,GAAW,SAETH,EAAS,SACXG,GAAW,QAETH,EAAS,WACXG,GAAW,UAETH,EAAS,WAAaR,EAAI,OAC5BW,GAAW,MACFH,EAAS,WAAa,OAC/BG,GAAWH,EAAS,UAEfG,CACT,CAQA,OAAO,kBAAkBH,EAAU,CACjC,IAAIG,EAAU,GAad,OAZIH,EAAS,UACXG,GAAW,KAETH,EAAS,SACXG,GAAW,KAETH,EAAS,WACXG,GAAW,KAETH,EAAS,UACXG,GAAW,KAELH,EAAS,SAAQ,CACvB,KAAKR,EAAI,MACPW,GAAW,IACX,MACF,KAAKX,EAAI,OACPW,GAAW,IACX,MACF,KAAKX,EAAI,UACPW,GAAW,IACX,MACF,KAAKX,EAAI,OACPW,GAAW,IACX,MACF,KAAK,KACH,MACF,QACEA,GAAWH,EAAS,QAC5B,CACI,OAAOG,CACT,CAQA,OAAO,iBAAiBC,EAAQC,EAAQ,CACtC,IAAIC,EAAkBC,EACtB,QAASD,EAAmBF,EAAO,YAAc,MAAQE,IAAqB,OAAS,OAASA,EAAiB,YAAW,OAAUC,EAAmBF,EAAO,YAAc,MAAQE,IAAqB,OAAS,OAASA,EAAiB,YAAW,IAAOH,EAAO,SAAWC,EAAO,QAAUD,EAAO,UAAYC,EAAO,SAAWD,EAAO,UAAYC,EAAO,SAAWD,EAAO,WAAaC,EAAO,QAC1Y,CAOA,OAAO,eAAeL,EAAU,CAC9B,OAAIA,EAAS,WAAa,KACjB,GAEFN,GAAS,cAAgBA,GAAS,kBAAkBM,CAAQ,EAAIN,GAAS,sBAAsBM,CAAQ,CAChH,CACA,YAAY7L,EAAM,CAChB,GAAI,CACF,GAAA4J,EACA,SAAAnD,EACA,YAAA4F,EACA,WAAAC,EAAa,GACb,KAAAnY,EACA,QAAA+N,CACN,EAAQlC,EACJ,MAAK,EACLrN,GAAgB,KAAM,KAAM,MAAM,EAElCA,GAAgB,KAAM,OAAQ,MAAM,EAEpCA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,GAAKiX,EACV,KAAK,KAAOzV,EACZ,KAAK,QAAU+N,EACf,KAAK,WAAaoK,EAClB,IAAIC,EAAQhB,GAAS,cACjBiB,EAAiBD,EAAQF,EAAc5F,EAC3C,KAAK,gBAAkB8E,GAAS,eAAeiB,CAAc,EAC7D,KAAK,SAAW,KAAK,eACvB,CAKA,gBAAiB,CACf,OAAOjB,GAAS,eAAe,KAAK,QAAQ,CAC9C,CAKA,aAAc,CACZ,OAAO,KAAK,QACd,CAMA,YAAYM,EAAU,CAChBN,GAAS,gBAAgBM,CAAQ,GACnCtR,GAAI,OAAO,YAAY,OAAO,KAAK,GAAI,cAAc,EAAE,OAAO,KAAK,UAAUsR,CAAQ,CAAC,CAAC,EACvF,KAAK,SAAWA,EAChB,KAAK,cAAc,IAAIrV,GAAqB,WAAY,CACtD,OAAQ,IAChB,CAAO,CAAC,GAEF+D,GAAI,OAAO,YAAY,OAAO,KAAK,GAAI,uCAAuC,EAAE,OAAO,KAAK,UAAUsR,CAAQ,CAAC,CAAC,CAEpH,CAMA,oBAAqB,CACnB,OAAO,KAAK,eACd,CACA,WAAY,CACV,OAAON,GAAS,iBAAiB,KAAK,mBAAkB,EAAI,KAAK,aAAa,CAChF,CAKA,WAAY,CACV,KAAK,YAAYA,GAAS,cAAc,CAC1C,CACA,QAAS,CACP,OAAOA,GAAS,iBAAiB,KAAK,SAAUA,GAAS,cAAc,CACzE,CAKA,cAAe,CACb,KAAK,YAAY,KAAK,eAAe,CACvC,CAOA,gBAAgBM,EAAU,CACxB,OAAON,GAAS,iBAAiBM,EAAU,KAAK,QAAQ,CAC1D,CAOA,aAAa,EAAG,CACd,OAAO,KAAK,gBAAgBN,GAAS,qBAAqB,CAAC,CAAC,CAC9D,CACF,CACA5Y,GAAgB4Y,GAAU,iBAAkB,CAC1C,QAAS,GACT,SAAU,GACV,OAAQ,GACR,QAAS,GACT,SAAU,IACZ,CAAC,EACD5Y,GAAgB4Y,GAAU,gBAAiBvG,GAAmB,cAAa,CAAE,ECrY7E,SAASrS,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAMvT,IAAIwH,GAAMC,EAAI,OAAO,kBAAkB,EACvC,MAAMiS,WAAyBjB,EAAY,CACzC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB7Y,GAAgB,KAAM,cAAe,IAAI,GAAK,EAC9CA,GAAgB,KAAM,sBAAuB,IAAI,GAAK,CACxD,CAMA,aAAa+Z,EAAQ,CACnB,IAAIjG,EAAW,IAAI8E,GAASmB,CAAM,EAClC,OAAO,KAAK,IAAIjG,CAAQ,CAC1B,CAOA,IAAIA,EAAU,CACZ,IAAIkG,EAAmB,KAAK,YAAY,IAAIlG,EAAS,EAAE,EACvD,GAAIkG,EACFpS,UAAI,KAAK,8DAA8D,OAAOkM,EAAS,EAAE,CAAC,EACnFkG,EAETpS,GAAI,OAAO,gCAAgC,OAAOkM,EAAS,EAAE,CAAC,EAC9DA,EAAS,iBAAiB,WAAYzG,GAAQ,CAC5C,GAAI,CACF,OAAA4M,CACR,EAAU5M,EACJ,OAAO,KAAK,cAAc,IAAIxJ,GAAqB,WAAY,CAC7D,OAAAoW,CACR,CAAO,CAAC,CACJ,CAAC,EACD,IAAIC,EAAWpG,EAAS,GAAG,MAAM,GAAG,EAAE,CAAC,EAEvC,GADA,KAAK,YAAY,IAAIA,EAAS,GAAIA,CAAQ,EACtC,KAAK,oBAAoB,IAAIoG,CAAQ,EAAG,CAC1C,IAAIC,GACHA,EAAwB,KAAK,oBAAoB,IAAID,CAAQ,KAAO,MAAQC,IAA0B,QAAUA,EAAsB,KAAKrG,CAAQ,CACtJ,MACE,KAAK,oBAAoB,IAAIoG,EAAU,CAACpG,CAAQ,CAAC,EAEnD,OAAOA,CACT,CAOA,IAAImD,EAAI,CACN,OAAO,KAAK,YAAY,IAAIA,CAAE,CAChC,CAQA,wBAAwBiC,EAAU,CAChC,OAAO,MAAM,KAAK,KAAK,YAAY,OAAM,CAAE,EAAE,OAAOpF,GAAY,CAACA,EAAS,OAAM,GAAMA,EAAS,gBAAgBoF,CAAQ,CAAC,CAC1H,CACF,CACG,IAACkB,GAAW,OAAO,OAAO,IAAIN,EAAkB,ECzE/CO,GAAmB,CACrB,KAAMP,GAAiB,aAAa,CAClC,GAAI,cACJ,KAAM,OACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,IAAKC,EAAI,CAAC,EACjC,WAAY,EAChB,CAAG,EACD,MAAOoB,GAAiB,aAAa,CACnC,GAAI,eACJ,KAAM,QACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,IAAKC,EAAI,CAAC,EACjC,WAAY,EAChB,CAAG,EACD,KAAMoB,GAAiB,aAAa,CAClC,GAAI,cACJ,KAAM,OACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,IAAKC,EAAI,CAAC,EACjC,WAAY,EAChB,CAAG,EACD,WAAYoB,GAAiB,aAAa,CACxC,GAAI,oBACJ,KAAM,aACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,IAAKC,EAAI,CAAC,EACjC,WAAY,EAChB,CAAG,EACD,oBAAqBoB,GAAiB,aAAa,CACjD,GAAI,6BACJ,KAAM,uBACN,SAAU,CAACrB,EAAS,IAAKA,EAAS,MAAOC,EAAI,CAAC,EAC9C,YAAa,CAACD,EAAS,OAAQA,EAAS,MAAOC,EAAI,CAAC,EACpD,WAAY,EAChB,CAAG,EACD,OAAQoB,GAAiB,aAAa,CACpC,GAAI,gBACJ,KAAM,SACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,IAAKC,EAAI,CAAC,CACrC,CAAG,EACD,aAAcoB,GAAiB,aAAa,CAC1C,GAAI,sBACJ,KAAM,uBACN,SAAU,CAACpB,EAAI,MAAM,EACrB,YAAa,CAACA,EAAI,MAAM,EACxB,WAAY,EAChB,CAAG,EACD,kBAAmBoB,GAAiB,aAAa,CAC/C,GAAI,2BACJ,KAAM,oBAEN,SAAU,CAACrB,EAAS,KAAMA,EAAS,IAAKC,EAAI,CAAC,EAC7C,YAAa,CAACD,EAAS,IAAKA,EAAS,MAAOC,EAAI,CAAC,EACjD,WAAY,EAChB,CAAG,EACD,YAAaoB,GAAiB,aAAa,CACzC,GAAI,qBACJ,KAAM,cACN,SAAU,CAACrB,EAAS,KAAMA,EAAS,IAAKA,EAAS,MAAOC,EAAI,CAAC,EAC7D,YAAa,CAACD,EAAS,IAAKA,EAAS,OAAQA,EAAS,MAAOC,EAAI,CAAC,EAClE,WAAY,EAChB,CAAG,EACD,oBAAqBoB,GAAiB,aAAa,CACjD,GAAI,6BACJ,KAAM,sBACN,SAAU,CAACrB,EAAS,KAAMA,EAAS,MAAOC,EAAI,CAAC,EAC/C,YAAa,CAACD,EAAS,IAAKA,EAAS,MAAOC,EAAI,CAAC,EACjD,WAAY,EAChB,CAAG,EACD,KAAMoB,GAAiB,aAAa,CAClC,GAAI,cACJ,KAAM,OACN,SAAU,CAACpB,EAAI,KAAK,EACpB,YAAa,CAACA,EAAI,KAAK,EACvB,WAAY,EAChB,CAAG,EACD,SAAUoB,GAAiB,aAAa,CACtC,GAAI,kBACJ,KAAM,WACN,SAAU,CAACrB,EAAS,MAAOC,EAAI,KAAK,EACpC,YAAa,CAACD,EAAS,MAAOC,EAAI,KAAK,EACvC,WAAY,EAChB,CAAG,CACH,ECvFA,SAAS1Y,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAUvT,MAAMka,WAAoB5C,eAAc,CACtC,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,wBAAyB,MAAM,EACrD,KAAK,WAA0BuK,EAAM,UAAS,EAC9C,KAAK,sBAAqCA,EAAM,UAAS,CAC3D,CACA,mBAAoB,CAClB,KAAK,qBAAoB,CAC3B,CACA,oBAAqB,CACnB,KAAK,qBAAoB,CAC3B,CACA,OAAQ,CACN,IAAIgQ,GACHA,EAAwB,KAAK,WAAW,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,CAC/H,CACA,QAAS,CACP,IAAIC,GACHA,EAAyB,KAAK,WAAW,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,OAAM,CACnI,CACA,sBAAuB,CACrB,IAAIC,EAAa,KAAK,WAAW,QAC7BC,EAAwB,KAAK,sBAAsB,QACvD,GAAID,GAAcC,EAAuB,CACvC,IAAIC,EAAeD,EAAsB,sBAAqB,EAAG,MACjED,EAAW,MAAM,aAAe,GAAG,OAAOE,EAAc,IAAI,CAC9D,CACF,CACA,QAAS,CACP,GAAI,CACF,MAAAjb,EACA,YAAAkb,EACA,eAAAC,EACA,OAAAC,EACA,SAAA9D,EACA,UAAAzL,EACA,SAAAkE,EACA,WAAAsL,EACA,GAAA9D,EACA,UAAAhH,EACA,cAAejE,EACf,OAAAgP,CACN,EAAQ,KAAK,MACLC,EACAnG,EAAiB,CAAC,CACpB,OAAQ,IAAMkG,GAAW,KAA4B,OAASA,EAAO,KAAK,SAAS,EACnF,SAAUX,GAAiB,IACjC,EAAO,CACD,OAAQ,IAAMW,GAAW,KAA4B,OAASA,EAAO,KAAK,MAAM,EAChF,SAAUX,GAAiB,QACjC,CAAK,EACD,OAAIW,GAAUD,EAAa,EACzBE,EAAiClP,OAAM0C,WAAW,CAChD,SAAU,CAAc9C,MAAKyD,GAAQ,CACnC,KAAM,QACN,UAAW,uBACX,KAAM,SACN,QAAS,IAAM,CACb4L,EAAO,KAAK,MAAM,CACpB,EACA,KAAME,GACN,QAAS,mBAAmB,OAAOb,GAAiB,SAAS,eAAc,EAAI,GAAG,CAC5F,CAAS,EAAgBtO,OAAM,OAAQ,CAC7B,UAAW,qBACX,SAAU,CAACiP,EAAO,QAAU,QAAa,GAAG,OAAOA,EAAO,MAAQ,EAAG,MAAM,EAAGD,CAAU,CAClG,CAAS,EAAgBpP,MAAKyD,GAAQ,CAC5B,KAAM,QACN,UAAW,uBACX,KAAM,SACN,QAAS,IAAM,CACb4L,EAAO,KAAK,SAAS,CACvB,EACA,KAAMG,GACN,QAAS,eAAe,OAAOd,GAAiB,KAAK,eAAc,EAAI,GAAG,CACpF,CAAS,CAAC,CACV,CAAO,EAEDY,EAAoBF,EAAa,GAAkBpP,MAAK,OAAQ,CAC9D,UAAW,eACX,SAAUoP,CAClB,CAAO,EAEiBhP,OAAM,MAAO,CAC/B,UAAWD,EAAW,eAAgBP,CAAS,EAC/C,SAAU,CAAcI,MAAK,QAAS,CACpC,KAAM,SACN,MAAOjM,EACP,OAAQob,EACR,SAAU9D,EACV,UAAW/G,EACX,UAAW,eACX,SAAUR,EACV,YAAamL,EACb,IAAK,KAAK,WACV,GAAI3D,EACJ,cAAejL,CACvB,CAAO,EAAG+O,GAAc,KAAoBhP,OAAM0C,WAAW,CACrD,SAAU,CAAc9C,MAAK,MAAO,CAClC,UAAW,0BACX,IAAK,KAAK,sBACV,SAAUsP,CACpB,CAAS,EAAgBtP,MAAKqI,GAAgB,CACpC,QAASc,CACnB,CAAS,CAAC,CACV,CAAO,EAAiB/I,OAAM,OAAQ,CAC9B,UAAW,qBACX,SAAU,EAAE8O,GAAwE,MAAQ,IAAMnb,IAAU,IAAmBiM,MAAK,OAAQ,CAC1I,UAAW,yBACX,SAAUkP,CACpB,CAAS,EAAgBlP,MAAK8E,GAAiB,CACrC,KAAM2K,EAChB,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACApb,GAAgBsa,GAAa,eAAgB,CAC3C,YAAa,SACb,UAAW,GACX,WAAY,KACZ,WAAY,CAEZ,EACA,GAAI,GACJ,cAAe,OACf,OAAQ,MACV,CAAC,EC5ID,SAASta,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAKvT,MAAMib,WAA6B3D,eAAc,CAC/C,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,cAAe,MAAM,EAC3C,KAAK,YAA2BuK,EAAM,UAAS,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,WAAanB,GAAS,KAAK,WAAW,KAAK,IAAI,EAAGkB,EAAM,UAAU,EACvE,KAAK,MAAQ,CACX,MAAOA,EAAM,KACnB,CACE,CACA,mBAAmBG,EAAW,CAC5B,GAAI,CACF,MAAA/K,CACN,EAAQ,KAAK,MACL+K,EAAU,QAAU/K,GAEtB,KAAK,SAAS,CACZ,MAAAA,CACR,CAAO,CAEL,CACA,OAAQ,CACN,IAAI4b,GACHA,EAAwB,KAAK,YAAY,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,CAChI,CACA,aAAa/O,EAAO,CAClB,KAAK,SAAS,CACZ,MAAOA,EAAM,OAAO,KAC1B,EAAO,KAAK,UAAU,CACpB,CACA,YAAa,CACX,GAAI,CACF,SAAAyK,CACN,EAAQ,KAAK,MACL,CACF,MAAAtX,CACN,EAAQ,KAAK,MACTsX,EAAStX,CAAK,CAChB,CACA,QAAS,CACP,GAAI,CACF,YAAAkb,EACA,UAAArP,EACA,WAAAwP,EACA,GAAA9D,EACA,cAAejL,CACrB,EAAQ,KAAK,MACL,CACF,MAAAtM,CACN,EAAQ,KAAK,MACT,OAAoBiM,MAAK2O,GAAa,CACpC,MAAO5a,EACP,YAAakb,EACb,SAAU,KAAK,aACf,UAAWrP,EACX,WAAYwP,EACZ,IAAK,KAAK,YACV,GAAI9D,EACJ,cAAejL,CACrB,CAAK,CACH,CACF,CACAhM,GAAgBqb,GAAsB,eAAgB,CACpD,YAAa,SACb,UAAW,GACX,WAAY,KACZ,WAAY,IACZ,GAAI,GACJ,cAAe,MACjB,CAAC,EC7ED,SAASrb,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAMvT,IAAIwH,GAAMC,EAAI,OAAO,cAAc,EACnC,MAAM0T,WAAqBlR,WAAU,CACnC,OAAO,eAAgB,CACrBzC,UAAI,IAAI,kCAAkC,EACnC,EACT,CACA,YAAY0C,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,UAAW,MAAM,EACvC,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,QAAuBuK,EAAM,UAAS,CAC7C,CACA,WAAW,EAAG,CACZ,GAAI,CACF,UAAAiR,EACA,OAAAV,CACN,EAAQ,KAAK,MACTA,EAAOU,EAAW,CAAC,CACrB,CACA,YAAY,EAAG,CACb,GAAI,CACF,UAAAA,EACA,QAAAC,CACN,EAAQ,KAAK,MACTA,EAAQD,EAAW,CAAC,CACtB,CACA,YAAY,EAAG,CACb,GAAI,CACF,UAAAA,EACA,QAAA7L,CACN,EAAQ,KAAK,MACTA,EAAQ6L,EAAW,CAAC,CACtB,CACA,kBAAkB,EAAG,CACnB,GAAI,CACF,UAAAA,EACA,cAAA5L,CACN,EAAQ,KAAK,MACTA,EAAc4L,EAAW,CAAC,CAC5B,CACA,gBAAgB,EAAG,CACjB,GAAI,CACF,UAAAA,EACA,YAAAE,CACN,EAAQ,KAAK,MACTA,EAAYF,EAAW,CAAC,CAC1B,CACA,WAAW,EAAG,CACZ,GAAI,CACF,UAAAA,EACA,OAAAG,CACN,EAAQ,KAAK,MACTA,EAAOH,EAAW,CAAC,CACrB,CACA,eAAe,EAAG,CAEhB,EAAE,eAAc,EAChB,GAAI,CACF,UAAAA,EACA,WAAAI,CACN,EAAQ,KAAK,MACTA,EAAWJ,EAAW,CAAC,CACzB,CACA,cAAc,EAAG,CACf,GAAI,CACF,UAAAA,EACA,UAAAK,CACN,EAAQ,KAAK,MACTA,EAAUL,EAAW,CAAC,CACxB,CACA,WAAW,EAAG,CACZ,GAAI,CACF,UAAAA,EACA,OAAAM,CACN,EAAQ,KAAK,MACTA,EAAON,EAAW,CAAC,CACrB,CACA,kBAAkB,EAAG,CACnB,GAAI,CACF,UAAAA,EACA,cAAAO,CACN,EAAQ,KAAK,MACTA,EAAcP,EAAW,CAAC,CAC5B,CACA,gBAAgB,EAAG,CACjB,GAAI,CACF,UAAAA,EACA,YAAAQ,CACN,EAAQ,KAAK,MACTA,EAAYR,EAAW,CAAC,CAC1B,CACA,gBAAgB,EAAG,CACjB,GAAI,CACF,UAAAA,EACA,YAAA3L,CACN,EAAQ,KAAK,MACTA,EAAY2L,EAAW,CAAC,CAC1B,CACA,cAAc,EAAG,CACf,GAAI,CACF,UAAAA,EACA,UAAA1L,CACN,EAAQ,KAAK,MACTA,EAAU0L,EAAW,CAAC,CACxB,CACA,QAAS,CACP,GAAI,CACF,YAAAS,EACA,UAAAC,EACA,WAAAC,EACA,MAAAvN,EACA,SAAApD,EACA,cAAeQ,CACrB,EAAQ,KAAK,MACT,OAAoBL,MAAK,MAAO,CAC9B,UAAWG,EAAW,iBAAkB,CACtC,OAAQqQ,CAChB,EAAS,CACD,aAAcD,CACtB,EAAS,CACD,eAAgBD,CACxB,CAAO,EACD,UAAWV,GAAa,cACxB,qBAAsB,KAAK,kBAC3B,QAAS,KAAK,YACd,OAAQ,KAAK,WACb,YAAa,KAAK,gBAClB,WAAY,KAAK,eACjB,UAAW,KAAK,cAChB,OAAQ,KAAK,WACb,cAAe,KAAK,kBACpB,YAAa,KAAK,gBAClB,YAAa,KAAK,gBAClB,UAAW,KAAK,cAChB,SAAU,GACV,IAAK,KAAK,QACV,KAAM,WACN,MAAO3M,EACP,QAAS,KAAK,YACd,OAAQ,KAAK,WACb,UAAWqN,EACX,cAAejQ,EACf,SAAUR,CAChB,CAAK,CACH,CACF,CACAxL,GAAgBub,GAAc,eAAgB,CAC5C,SAAU,KACV,YAAa,GACb,UAAW,GACX,WAAY,GACZ,UAAW,EACX,cAAe,OACf,QAAS,CAET,EACA,SAAU,CAEV,EACA,eAAgB,CAEhB,EACA,aAAc,CAEd,EACA,QAAS,CAET,EACA,YAAa,CAEb,EACA,WAAY,CAEZ,EACA,QAAS,CAET,EACA,eAAgB,CAEhB,EACA,SAAU,CAEV,EACA,aAAc,CAEd,EACA,aAAc,CAEd,EACA,WAAY,CAEZ,EACA,MAAO,EACT,CAAC,ECrND,IAAIa,GACJ,SAASnS,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAYvT,IAAIwH,GAAMC,EAAI,OAAO,UAAU,EAC3BwU,GAAiB,EAKd,MAAMC,WAAiB5E,eAAc,CAC1C,OAAO,WAAWrK,EAAM,CACtB,IAAIkP,EAAOC,EACP,CACF,KAAA1X,CACN,EAAQuI,EACJ,OAAoB1B,MAAK,MAAO,CAC9B,UAAW,yBACX,SAAU7G,GAAQ,QAAUyX,GAASC,EAAqB1X,EAAK,gBAAkB,MAAQ0X,IAAuB,OAASA,EAAqB1X,EAAK,SAAW,MAAQyX,IAAU,OAASA,EAAQ,GAAG,OAAOzX,CAAI,EACrN,CAAK,CACH,CACA,YAAY2X,EAAQ,CAClB,MAAMA,CAAM,EACZzc,GAAgB,KAAM,OAAQ,MAAM,EACpCA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,kBAAmB0c,GAAQ,CAACpX,EAAOD,IAAmBF,GAAW,WAAWE,EAAgBC,CAAK,EAAG,CACxH,IAAKgX,GAAS,UACpB,CAAK,CAAC,EACFtc,GAAgB,KAAM,gBAAiB0c,GAAQ,CAAClB,EAAW1C,EAAKhU,EAAMoX,EAAWC,EAAYQ,EAAY/N,EAAOgO,IAAkB,CAChI,IAAItG,EAAUqG,EAAW,CACvB,KAAA7X,EACA,UAAA0W,EACA,UAAAU,EACA,WAAAC,EACA,MAAAvN,CACR,CAAO,EACD,OAAoBjD,MAAK4P,GAAc,CACrC,cAAe,KAAK,sBACpB,cAAe,KAAK,sBACpB,YAAa,KAAK,oBAClB,QAAS,KAAK,gBACd,OAAQ,KAAK,eACb,cAAeqB,EACf,YAAa,KAAK,oBAClB,UAAW,KAAK,kBAChB,UAAWV,EACX,WAAYC,EACZ,UAAWX,EACX,MAAO5M,EACP,SAAU0H,CAClB,EAASwC,CAAG,CACR,EAAG,CACD,IAAKwD,GAAS,UACpB,CAAK,CAAC,EACFtc,GAAgB,KAAM,kBAAmB0c,GAAQzM,GAAa,CAC5D,IAAI4M,EAAyBtS,EAAM,WAAW,CAACD,EAAOhB,IAGtDqC,MAAK,MAAOzB,GAAc,CACxB,IAAKZ,EACL,SAAU,GACV,UAAW2G,EACX,KAAM,cAEd,EAAS3F,CAAK,CAAC,CAAC,EACV,OAAAuS,EAAU,YAAc,uBACjBA,CACT,EAAG,CACD,IAAK,GACX,CAAK,CAAC,EACF7c,GAAgB,KAAM,kBAAmB0c,GAAQ,IAAM,CACrD,IAAIG,EAAyBtS,EAAM,WAAW,CAACD,EAAOhB,IAAqBqC,MAAK,MAAOzB,GAAc,CACnG,UAAW,0BACX,IAAKZ,CAEb,EAASgB,CAAK,CAAC,CAAC,EACV,OAAAuS,EAAU,YAAc,uBACjBA,CACT,EAAG,CACD,IAAK,GACX,CAAK,CAAC,EACF7c,GAAgB,KAAM,cAAe0c,GAAQ,CAAC5W,EAAOT,EAAgBsX,KAAgB,CACnF,MAAA7W,EACA,eAAAT,EACA,WAAAsX,CACN,GAAQ,CACF,IAAK,GACX,CAAK,CAAC,EACF,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,KAAoBpS,EAAM,UAAS,EACxC,KAAK,cAA6BA,EAAM,UAAS,EACjD,GAAI,CACF,eAAAuS,EACA,eAAgBC,CACtB,EAAQN,EACJ,KAAK,MAAQ,CACX,WAAY,KACZ,eAAgB,KAChB,eAAgBM,EAChB,mBAAoB,EACpB,OAAQ,KACR,WAAY,GACZ,gBAAiBD,EACjB,aAAc,KACd,OAAQ,KACR,OAAQ,IACd,CACE,CACA,mBAAmBrS,EAAW4B,EAAW,CACvC,GAAI,CACF,eAAgB2Q,EAChB,UAAAC,CACN,EAAQ,KAAK,MACL,CACF,WAAA9E,EACA,gBAAA+E,EACA,aAAAC,EACA,OAAAC,EACA,eAAA/X,CACN,EAAQ,KAAK,MAOT,GANI6X,GAAmB,CAAC,KAAK,eAAc,GAAMD,EAAY,GAC3D,KAAK,eAAc,GAEjBE,IAAiB9Q,EAAU,cAAgB+Q,IAAW/Q,EAAU,SAClE,KAAK,mBAAkB,EAErB2Q,IAAuBvS,EAAU,gBAAkBuS,IAAuB3X,EAC5E,KAAK,kBAAkB2X,CAAkB,UAChC3X,IAAmBgH,EAAU,eAAgB,CACtD,GAAI,CACF,kBAAAgR,CACR,EAAU,KAAK,MACTA,EAAkBhY,CAAc,CAClC,CACA,GAAI8S,IAAe9L,EAAU,WAAY,CACvC,GAAI,CACF,cAAAiR,CACR,EAAU,KAAK,MACTA,EAAcnF,CAAU,CAC1B,CACF,CACA,sBAAuB,CACrB,OAAO,oBAAoB,UAAW,KAAK,mBAAmB,CAChE,CACA,OAAQ,CACN,IAAIoF,GACHA,EAAwB,KAAK,cAAc,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,CAClI,CACA,uBAAwB,CACtB,GAAI,CACF,aAAAJ,CACN,EAAQ,KAAK,MACT,GAAIA,GAAgB,KAAM,CACxB,IAAIK,GAGHA,EAAyB,KAAK,cAAc,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,SAAS,EAAGL,CAAY,CACxJ,CACF,CACA,WAAW3B,EAAW,CACpB,GAAI,KAAK,cAAc,SAAW,KAChC,OAAO,KAET,GAAI,CACF,cAAAiC,CACN,EAAQ,KAAK,MACL,CACF,mBAAAC,CACN,EAAQ,KAAK,MACLC,EAAW,KAAK,cAAc,QAAQ,iBAAiBF,CAAa,EACpEG,EAAepC,EAAYkC,EAC/B,OAAOC,EAASC,CAAY,CAC9B,CACA,UAAUpC,EAAW,CACnB,GAAI,CACF,cAAAoB,CACN,EAAQ,KAAK,MACT,GAAI,CAAAA,EACJ,MAAK,SAAS,CACZ,WAAYpB,CAClB,CAAK,EACD,IAAI9Q,EAAU,KAAK,WAAW8Q,CAAS,EACnC9Q,aAAmB,aACrBA,EAAQ,MAAK,EAEjB,CACA,aAAa8Q,EAAW,CACtB,IAAI9Q,EAAU,KAAK,WAAW8Q,CAAS,EACnC9Q,GAAW,MACbA,EAAQ,eAAe,CACrB,MAAO,QACf,CAAO,CAEL,CACA,sBAAsB8Q,EAAWvb,EAAG,CAClC,KAAK,SAAS,CACZ,WAAYub,CAClB,CAAK,EAGD,GAAI,CACF,eAAAnW,CACN,EAAQ,KAAK,MACL8W,EAAahX,GAAW,WAAWE,EAAgBmW,CAAS,EAG5DqC,EAAiB1B,GAAc9J,GAAmB,kBAAkBpS,CAAC,EACzE,KAAK,aAAaub,EAAWvb,EAAE,SAAU4d,EAAgB,EAAK,CAChE,CACA,sBAAsBrC,EAAWvb,EAAG,CAClC,GAAI,CACF,oBAAA6d,EACA,SAAAC,CACN,EAAQ,KAAK,MACLD,GACF,KAAK,SAASE,GAAS,CACrB,GAAI,CACF,eAAA3Y,CACV,EAAY2Y,EACJ,MAAO,CACL,eAAgB7Y,GAAW,YAAYE,EAAgB,CAACmW,EAAWA,CAAS,CAAC,CACvF,CACM,EAAG,IAAM,CACPuC,EAASvC,EAAWvb,CAAC,CACvB,CAAC,CAEL,CACA,oBAAoBqF,EAAOrF,EAAG,CAC5B,GAAI,CACF,eAAAoF,CACN,EAAQ,KAAK,MACT,GAAI,EAAApF,EAAE,kBAAkB,aAAe,CAAC,SAAU,SAAU,QAAS,UAAU,EAAE,QAAQA,EAAE,OAAO,QAAQ,YAAW,CAAE,IAAM,IAI7H,IAAIA,EAAE,SAAW,GAAKoF,EAAe,SAAW,EAAG,CAEjD,KAAK,UAAUC,CAAK,EACpB,KAAK,WAAWA,CAAK,EACrB,MACF,CACIrF,EAAE,QAAU,MAAQA,EAAE,SAAW,IAGrC,KAAK,SAAS,CACZ,eAAgBqF,EAChB,OAAQrF,EAAE,QACV,OAAQA,EAAE,OAChB,CAAK,EACD,OAAO,iBAAiB,UAAW,KAAK,mBAAmB,GAG7D,CACA,eAAeub,EAAWvb,EAAG,CAC3B2H,GAAI,OAAO,YAAa4T,EAAWvb,EAAE,cAAeA,EAAE,aAAa,GAC/D,CAACA,EAAE,eAAiB,KAAK,cAAc,SAAWA,EAAE,yBAAyB,aAAe,CAAC,KAAK,cAAc,QAAQ,SAASA,EAAE,aAAa,IAElJ,KAAK,SAAS,CACZ,WAAY,IACpB,CAAO,CAEL,CACA,gBAAgBub,EAAWvb,EAAG,CAC5B2H,GAAI,OAAO,aAAc4T,EAAWvb,EAAE,MAAM,EAC5C,KAAK,SAAS8X,GAAS,CACrB,GAAI,CACF,WAAAI,CACR,EAAUJ,EACJ,OAAII,IAAeqD,EACV,CACL,WAAYA,CACtB,EAEa,IACT,CAAC,CACH,CACA,oBAAoBA,EAAWvb,EAAG,CAChC,GAAI,CACF,aAAAge,EACA,cAAAC,EACA,cAAAtB,CACN,EAAQ,KAAK,MACL,CACF,eAAAuB,EACA,eAAA9Y,EACA,OAAAmH,EACA,OAAAC,CACN,EAAQ,KAAK,MACT,GAAI,EAAA0R,GAAkB,MAAQvB,GAC9B,KAAIwB,EAAa,KAAK,IAAIne,EAAE,SAAWuM,GAAgD,EAAE,EACrF6R,EAAa,KAAK,IAAIpe,EAAE,SAAWwM,GAAgD,EAAE,EACrF2R,EAAa/B,IAAkBgC,EAAahC,IAC9C,KAAK,SAAS,CACZ,WAAY,EACpB,CAAO,GAEC4B,GAAgBE,IAAmB3C,KACrC,KAAK,UAAUA,CAAS,EACpB0C,GACE,CAACD,GAAgB,CAAC,KAAK,gBAAgBzC,EAAWnW,CAAc,GAAK,CAACgN,GAAmB,kBAAkBpS,CAAC,GAE9G,KAAK,YAAW,EAElB,KAAK,YAAY,CAAC,KAAK,IAAIke,EAAgB3C,CAAS,EAAG,KAAK,IAAI2C,EAAgB3C,CAAS,CAAC,CAAC,GAE3F,KAAK,aAAaA,EAAWvb,EAAE,SAAUoS,GAAmB,kBAAkBpS,CAAC,EAAG,EAAK,GAG7F,CACA,kBAAkBqF,EAAOrF,EAAG,CAC1B,GAAI,CACF,kBAAAqe,EACA,oBAAAR,EACA,SAAAC,CACN,EAAQ,KAAK,MACL,CACF,eAAAI,EACA,WAAAI,CACN,EAAQ,KAAK,MACT,GAAI,EAAAte,EAAE,kBAAkB,aAAe,CAAC,SAAU,SAAU,QAAS,UAAU,EAAE,QAAQA,EAAE,OAAO,QAAQ,YAAW,CAAE,IAAM,IAG7H,IAAIke,IAAmB7Y,GAAS,CAACiZ,EAAY,CAC3C,IAAIC,EAAcve,EAAE,SAChB4d,EAAiBxL,GAAmB,kBAAkBpS,CAAC,EAC3D,KAAK,UAAUqF,CAAK,EACpB,KAAK,aAAaA,EAAOkZ,EAAaX,EAAgBS,CAAiB,EACnE,CAACR,GAAuB,CAACU,GAAe,CAACX,GAC3CE,EAASzY,EAAOrF,CAAC,CAErB,CACA,KAAK,gBAAe,EACtB,CACA,oBAAoBwe,EAAO,CACzB,GAAI,CACF,mBAAAf,CACN,EAAQe,EACJ,KAAK,SAAS,CACZ,mBAAAf,CACN,CAAK,CACH,CACA,aAAagB,EAAO,CAClB,GAAI,CACF,OAAAtB,CACN,EAAQsB,EACJ,KAAK,SAAS,CACZ,OAAAtB,CACN,CAAK,CACH,CACA,kBAAmB,CACjB,KAAK,SAAS,CACZ,eAAgB,IACtB,CAAK,CACH,CACA,qBAAsB,CACpB,KAAK,gBAAe,EACpB,OAAO,oBAAoB,UAAW,KAAK,mBAAmB,CAChE,CACA,cAAc,EAAG,CACf,GAAI,CACF,cAAAc,EACA,UAAAjB,EACA,SAAAc,CACN,EAAQ,KAAK,MACL,CACF,WAAYhc,CAClB,EAAQ,KAAK,MACLiW,EAAWjW,EACf,GAAI,EAAE,MAAQ,SAAW,EAAE,MAAQ,IAAK,CAClC,CAACmc,GAAiBlG,GAAY,MAChC,KAAK,SAAS,CACZ,eAAgB,CAAC,CAACA,EAAUA,CAAQ,CAAC,CAC/C,EAAW,IAAM,CACHA,GAAY,MACd+F,EAAS/F,EAAU,CAAC,CAExB,CAAC,EAEH,MACF,CACA,GAAI,EAAE,MAAQ,UACRA,GAAY,MAAQA,GAAY,EAClCA,EAAW,KAAK,IAAI,EAAGA,EAAW,CAAC,EAEnCA,EAAWiF,EAAY,UAEhB,EAAE,MAAQ,YACfjF,GAAY,MAAQA,GAAY,EAClCA,EAAW,KAAK,IAAIA,EAAW,EAAGiF,EAAY,CAAC,EAE/CjF,EAAW,MAGb,QAEF,GAAIjW,IAAaiW,EAAU,CACzB,EAAE,gBAAe,EACjB,EAAE,eAAc,EAChB,KAAK,UAAUA,CAAQ,EACvB,GAAI,CACF,eAAA3S,CACR,EAAU,KAAK,MACT,GAAI,EAAE,UAAYA,EAAe,OAAS,EAAG,CAC3C,IAAIsZ,EAAYtZ,EAAeA,EAAe,OAAS,CAAC,EACxD,KAAK,YAAY,CAAC,KAAK,IAAI2S,EAAU2G,EAAU,CAAC,CAAC,EAAG,KAAK,IAAI3G,EAAU2G,EAAU,CAAC,CAAC,CAAC,CAAC,CACvF,SACE,KAAK,YAAW,EACZ3G,IAAa,KACf,KAAK,WAAWA,CAAQ,MACnB,CACL,IAAI4G,GACHA,EAAyB,KAAK,cAAc,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,MAAK,CACrI,CAEF,KAAK,eAAe5G,CAAQ,CAC9B,CACF,CACA,aAAa6G,EAAO,CAClB,GAAI,CACF,yBAAAC,EACA,aAAA3B,CACN,EAAQ0B,EACJ,KAAK,SAAS9G,GAAS,CACrB,GAAI+G,EAGF,MAAO,CACL,aAAA3B,CACV,EAEM,GAAI,CACF,eAAAL,CACR,EAAU,KAAK,MACL,CACF,OAAAM,CACR,EAAUrF,EACAmF,EAAkBJ,GAAkB,KAAK,eAAe,CAC1D,aAAAK,EACA,OAAAC,CACR,CAAO,EACD,MAAO,CACL,gBAAAF,EACA,aAAAC,CACR,CACI,CAAC,CACH,CACA,iBAAkB,CAChB,KAAK,SAAS,CACZ,eAAgB,KAChB,WAAY,EAClB,CAAK,CACH,CACA,gBAAiB,CACf,GAAI,CACF,UAAAF,CACN,EAAQ,KAAK,MACL,KAAK,KAAK,SACZ,KAAK,KAAK,QAAQ,aAAaA,CAAS,CAE5C,CACA,eAAezB,EAAW,CACpB,KAAK,KAAK,SACZ,KAAK,KAAK,QAAQ,aAAaA,CAAS,CAE5C,CAQA,aAAalW,EAAOkZ,EAAaX,EAAgB,CAC/C,IAAIkB,EAAiB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACrF,CACF,cAAAb,CACN,EAAQ,KAAK,MACL,CACF,eAAA7Y,CACN,EAAQ,KAAK,MACT,GAAI6Y,GAAiBM,GAAenZ,EAAe,OAAS,EAAG,CAC7D,IAAIsZ,EAAYtZ,EAAeA,EAAe,OAAS,CAAC,EACxD,KAAK,YAAY,CAAC,KAAK,IAAIsZ,EAAU,CAAC,EAAGrZ,CAAK,EAAG,KAAK,IAAIA,EAAOqZ,EAAU,CAAC,CAAC,CAAC,CAAC,CACjF,MAAWT,GAAiB7Y,EAAe,SAAW,GAAKA,EAAe,CAAC,EAAE,CAAC,IAAMC,GAASD,EAAe,CAAC,EAAE,CAAC,IAAMC,EAChHyZ,GACF,KAAK,aAAazZ,CAAK,EAEhB4Y,GAAiBL,EACtB,KAAK,gBAAgBvY,EAAOD,CAAc,EACxC0Z,GACF,KAAK,aAAazZ,CAAK,EAGzB,KAAK,WAAWA,CAAK,GAGvB,KAAK,YAAW,EAChB,KAAK,WAAWA,CAAK,EAEzB,CACA,aAAc,CACZ,GAAI,CACF,UAAA2X,CACN,EAAQ,KAAK,MACT,KAAK,cAAc,CAAC,EAAGA,CAAS,CAAC,CACnC,CACA,aAAa3X,EAAO,CAClB,KAAK,cAAc,CAACA,EAAOA,CAAK,CAAC,CACnC,CACA,cAAcF,EAAO,CACnBD,GAAW,cAAcC,CAAK,EAC9B,KAAK,SAAS4Z,GAAS,CACrB,GAAI,CACF,eAAA3Z,CACR,EAAU2Z,EACJ,MAAO,CACL,eAAgB7Z,GAAW,cAAcE,EAAgBD,CAAK,CACtE,CACI,CAAC,CACH,CACA,WAAWE,EAAO,CAChB,GAAI,CACF,cAAAsX,CACN,EAAQ,KAAK,MACLA,GACJ,KAAK,YAAY,CAACtX,EAAOA,CAAK,CAAC,CACjC,CACA,YAAYF,EAAO,CACjBD,GAAW,cAAcC,CAAK,EAC9B,KAAK,SAAS6Z,GAAS,CACrB,GAAI,CACF,eAAA5Z,CACR,EAAU4Z,EACJ,MAAO,CACL,eAAgB9Z,GAAW,YAAYE,EAAgBD,CAAK,CACpE,CACI,CAAC,CACH,CACA,kBAAkBC,EAAgB,CAChC,KAAK,SAAS,CACZ,eAAAA,CACN,CAAK,CACH,CACA,oBAAqB,CACnB,GAAI,CACF,aAAA8X,EACA,OAAAC,CACN,EAAQ,KAAK,MACT,GAAID,GAAgB,MAAQC,GAAU,KAAM,CAC1C,GAAI,CACF,iBAAA8B,EACA,UAAAC,CACR,EAAU,KAAK,MACLC,EAAS,KAAK,MAAMjC,EAAegC,CAAS,EAC5CE,EAAYD,EAAS,KAAK,KAAKhC,EAAS+B,CAAS,EACrDD,EAAiBE,EAAQC,CAAS,CACpC,CACF,CACA,gBAAiB,CACf,GAAI,CACF,aAAAlC,EACA,OAAAC,CACN,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,KAAK,MAC7E,GAAIA,GAAU,MAAQD,GAAgB,KACpC,MAAO,GAET,GAAI,CACF,UAAAF,EACA,UAAAkC,CACN,EAAQ,KAAK,MACT,OAAOhC,EAAeC,GAAUH,EAAYkC,CAC9C,CACA,mBAAmBG,EAAO,CACxB,GAAI,CACF,MAAO9D,EACP,MAAA5M,CACN,EAAQ0Q,EACA,CACF,MAAAxZ,EACA,OAAAyZ,EACA,WAAA5C,EACA,cAAAC,CACN,EAAQ,KAAK,MACL,CACF,WAAAzE,EACA,eAAA9S,CACN,EAAQ,KAAK,MACT,GAAImW,EAAY+D,GAAU/D,GAAa+D,EAASzZ,EAAM,OACpD,OAAO,KAET,IAAIhB,EAAOgB,EAAM0V,EAAY+D,CAAM,EACnC,OAAO,KAAK,cAAc/D,EAAWA,EAAW1W,EAAM0W,IAAcrD,GAAc,CAACyE,EAAe,KAAK,gBAAgBpB,EAAWnW,CAAc,EAAGsX,EAAY/N,EAAOgO,CAAa,CACrL,CACA,QAAS,CACP,GAAI,CACF,MAAA9W,EACA,UAAAmX,EACA,cAAAuC,EACA,WAAA7C,EACA,UAAAwC,EACA,cAAenT,CACrB,EAAQ,KAAK,MACL,CACF,eAAA3G,EACA,gBAAA6X,CACN,EAAQ,KAAK,MACT,OAAoBvR,MAAK8T,GAAW,CAClC,UAAW,uBACX,SAAU,KAAK,aACf,SAAUC,GAAS,CACjB,GAAI,CACF,MAAAC,EACA,OAAAvC,CACV,EAAYsC,EACJ,OAAoB/T,MAAKiU,GAAM,CAC7B,UAAW,wBACX,OAAQxC,EACR,MAAOuC,EACP,oBAAqBzC,EAAkBD,EAAYkC,EAAY,EAC/D,UAAWlC,EACX,SAAUkC,EAKV,SAAU,KAAK,YAAYrZ,EAAOT,EAAgBsX,CAAU,EAC5D,SAAU,KAAK,aACf,gBAAiB,KAAK,oBACtB,IAAK,KAAK,KACV,iBAAkB,KAAK,gBAAgB,KAAK,aAAa,EACzD,SAAU,KAAK,cACf,iBAAkB,KAAK,gBAAe,EACtC,cAAe6C,EACf,cAAexT,EACf,SAAU,KAAK,kBACzB,CAAS,CACH,CACN,CAAK,CACH,CACF,CACAoQ,GAAYE,GACZtc,GAAgBsc,GAAU,aAAc,GAAI,EAC5Ctc,GAAgBsc,GAAU,qBAAsB,EAAE,EAElDtc,GAAgBsc,GAAU,mBAAoB,EAAE,EAChDtc,GAAgBsc,GAAU,eAAgB,CACxC,OAAQ,EACR,MAAO,GACP,UAAWF,GAAU,mBACrB,kBAAmB,GACnB,oBAAqB,GACrB,aAAc,GACd,cAAe,GACf,eAAgB,GAChB,cAAe,GACf,eAAgB,CAEhB,EACA,UAAW,CAEX,EACA,mBAAoB,CAEpB,EACA,kBAAmB,CAEnB,EACA,cAAeA,GAAU,iBACzB,WAAYA,GAAU,WACtB,eAAgB,GAChB,cAAe,kBACf,cAAe,MACjB,CAAC,ECtrBD,IAAIxU,GAAMC,EAAI,OAAO,eAAe,EAK7B,MAAMgY,WAAsBxV,WAAU,CAC3C,OAAO,yBAAyB5I,EAAO,CACrC,MAAO,CACL,MAAAA,CACN,CACE,CACA,YAAY6I,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,MAAQ,CACX,MAAO,MACb,CACE,CACA,kBAAkB7I,EAAOqe,EAAW,CAClC,GAAI,CACF,QAAAC,CACN,EAAQ,KAAK,MACTnY,GAAI,MAAM,gCAAiCnG,EAAOqe,CAAS,EAC3DC,GAAY,MAA8BA,EAAQte,EAAOqe,CAAS,CACpE,CACA,QAAS,CACP,GAAI,CACF,SAAAtU,EACA,UAAAD,EACA,SAAAyU,CACN,EAAQ,KAAK,MACL,CACF,MAAAve,CACN,EAAQ,KAAK,MACT,OAAIA,GAAS,KACPue,GAGgBrU,MAAK,MAAO,CAC9B,UAAWJ,EACX,SAAuBI,MAAKsU,GAAgB,CAC1C,aAAc,GAAG,OAAOxe,CAAK,EAC7B,UAAW,GACX,SAAU,GACV,cAAe,wBACzB,CAAS,CACT,CAAO,EAKI+J,GAAsD,IAC/D,CACF,CCpDA,SAAS0U,GAAS7S,EAAM,CACtB,GAAI,CACF,GAAA8S,EACA,GAAAlJ,EACA,UAAA1L,EACA,UAAAuL,EACA,SAAArH,EAAW,GACX,QAAAE,EACA,cAAe3D,CACnB,EAAMqB,EACJ,OAGE1B,MAAK,SAAU,CACb,KAAM,SACN,UAAWG,EAAW,MAAO,aAAcP,EAAW,CACpD,OAAQ4U,CAChB,EAAS,CACD,aAAcrJ,CACtB,CAAO,EACD,GAAIG,EACJ,QAAStH,EACT,SAAUF,EACV,cAAezD,EACf,SAAuBL,MAAK,MAAO,CACjC,UAAW,QACnB,CAAO,CACP,CAAK,CAEL,CCjCA,IAAIkD,GAAY,CAAC,WAAY,YAAa,YAAa,WAAY,aAAa,EAChF,SAAS5E,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,SAAS0O,GAAyB7O,EAAGG,EAAG,CAAE,GAAYH,GAAR,KAAW,MAAO,GAAI,IAAIW,EAAG,EAAG,EAAImO,GAA8B9O,EAAGG,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIY,EAAI,OAAO,sBAAsBf,CAAC,EAAG,IAAK,EAAI,EAAG,EAAIe,EAAE,OAAQ,IAAKJ,EAAII,EAAE,CAAC,EAAUZ,EAAE,QAAQQ,CAAC,IAAlB,IAAuB,GAAG,qBAAqB,KAAKX,EAAGW,CAAC,IAAM,EAAEA,CAAC,EAAIX,EAAEW,CAAC,EAAI,CAAE,OAAO,CAAG,CACrU,SAASmO,GAA8B7O,EAAG,EAAG,CAAE,GAAYA,GAAR,KAAW,MAAO,GAAI,IAAI,EAAI,GAAI,QAASc,KAAKd,EAAG,GAAI,GAAG,eAAe,KAAKA,EAAGc,CAAC,EAAG,CAAE,GAAW,EAAE,QAAQA,CAAC,IAAlB,GAAqB,SAAU,EAAEA,CAAC,EAAId,EAAEc,CAAC,CAAG,CAAE,OAAO,CAAG,CAWnM,IAACof,GAAsB7V,EAAM,WAAW,CAACD,EAAOqM,IAAiB,CAClE,GAAI,CACA,SAAAnL,EACA,UAAAD,EACA,UAAAuL,EACA,SAAAE,EACA,cAAehL,CACrB,EAAQ1B,EACJ8F,EAAOtB,GAAyBxE,EAAOuE,EAAS,EAC9CvF,EAAMS,GAAgB4M,CAAY,EAClC0J,EAAejY,cAAYmE,GAAS,CACtCyK,EAASzK,EAAM,OAAO,KAAK,CAC7B,EAAG,CAACyK,CAAQ,CAAC,EACb,OAAoBrL,MAAK,SAAUzB,GAAcA,GAAc,CAC7D,IAAKZ,EACL,UAAWwC,EAAW,gBAAiBP,EAAW,CAChD,aAAcuL,CACpB,CAAK,EACD,SAAUuJ,EACV,cAAerU,CAEnB,EAAKoE,CAAI,EAAG,GAAI,CACZ,SAAU5E,CACd,CAAG,CAAC,CACJ,CAAC,EACD4U,GAAO,YAAc,SCvCX,IAACE,GAAoC/V,EAAM,cAErD,IAAI,GAAK,EACT+V,GAAqB,YAAc,uBACzB,IAACC,GAAwBD,GAAqB,SAOjD,SAASE,GAAcnW,EAAW,CACvC,IAAIoW,EACAC,EAAM/X,aAAW2X,EAAoB,EACzC,OAAQG,EAAWC,EAAI,IAAIrW,CAAS,KAAO,MAAQoW,IAAa,OAASA,EAAWpW,EAAU,QAChG,CCnBA,SAASJ,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAsChT,SAASugB,GAAiBtW,EAAW,CAC1C,IAAIuW,EACAC,EACJ,SAASC,EAAWxW,EAAOhB,EAAK,CAC9B,IAAIyX,EAAuBP,GAAcK,CAAqB,EAC9D,OAAOrJ,GAAWnN,CAAS,EAG3BsB,MAAKoV,EAAsB7W,GAAcA,GAAc,GAAII,CAAK,EAAG,GAAI,CACrE,IAAKhB,CACX,CAAK,CAAC,EAGFqC,MAAKoV,EAAsB7W,GAAc,GAAII,CAAK,CAAC,CACrD,CAIA,OAAAwW,EAAW,YAAc,cAAc,QAAQF,EAAwBvW,EAAU,eAAiB,MAAQuW,IAA0B,OAASA,EAAwBvW,EAAU,KAAM,GAAG,EAGxLwW,EAAqCG,aAAWF,CAAU,EAC1DD,EAAsB,SAAWxW,EACjCwW,EAAsB,aAAe,GAC9BA,CACT,CC7DO,SAASI,IAAS,CACvB,OAAOxY,GAAkByY,GAAY,sFAAsF,CAC7H,CCGO,SAASC,GAAyBzhB,EAAO,CAC9C,OAAO,OAAOA,GAAU,UAAYA,GAAS,MAAQ,OAAOA,EAAM,MAAS,UAAYA,EAAM,MAAQ,IACvG,CACO,SAAS0hB,GAAuB1hB,EAAO,CAC5C,OAAO,OAAOA,GAAU,UAAYA,GAAS,MAAQ,OAAOA,EAAM,MAAS,UAAYA,EAAM,IAAM,IACrG,CACO,SAAS2hB,GAAqB3hB,EAAO,CAC1C,OAAOyhB,GAAyBzhB,CAAK,GAAK0hB,GAAuB1hB,CAAK,CACxE,CAQU,IAAC4hB,GAAoCnU,gBAAc,IAAI,EACjEmU,GAAqB,YAAc,uBAQ5B,SAASC,GAA2BC,EAAY,CAErD,GAAIJ,GAAuBI,CAAU,EACnC,MAAO,CACL,GAAIA,EAAW,GACf,KAAMA,EAAW,IACvB,EAEE,GAAIL,GAAyBK,CAAU,EAAG,CACxC,IAAIC,EACJ,MAAO,CACL,MAAOA,EAAmBD,EAAW,QAAU,MAAQC,IAAqB,OAASA,EAAmB,GACxG,KAAMD,EAAW,IACvB,CACE,CACA,MAAM,IAAI,MAAM,uBAAuB,OAAOA,CAAU,CAAC,CAC3D,CAOO,SAASE,GAAsBC,EAAY,CAChD,IAAIC,EAAkBC,EACtB,MAAO,CACL,MAAOD,EAAmBD,EAAW,QAAU,MAAQC,IAAqB,OAASA,EAAmB,GACxG,MAAOC,EAAoBF,EAAW,SAAW,MAAQE,IAAsB,OAASA,EAAoBF,EAAW,KACvH,GAAIA,EAAW,EACnB,CACA,CAMO,SAASG,IAAmB,CACjC,OAAOrZ,GAAkB6Y,GAAsB,oGAAoG,CACrJ,CC1EA,SAASrX,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAEvT,IAAI2hB,GAAe,OAAO,OAAO,EAAE,EAC/BxiB,GAAY,IAAI,IACTyiB,GAASC,GAASA,EAAM,IAGxBC,GAAUD,GAASA,EAAM,KAKzBE,GAAaF,GAASA,EAAM,QAC5BG,GAA2BH,GAASE,GAAWF,CAAK,EAAE,sBACtDI,GAAiBJ,GAASE,GAAWF,CAAK,EAAE,YAE5CK,GAA8BL,GAASA,EAAM,yBAG7CM,GAAeN,GAAS,CACjC,GAAI,CACF,UAAAO,CACJ,EAAMP,EACJ,OAAOO,CACT,EAGWC,GAAc/F,GAAQuF,GAAS,CAKxC,QAJIS,EAAuBC,EACvBC,GAAsBF,GAAyBC,EAAgBJ,GAAaN,CAAK,KAAO,MAAQU,IAAkB,OAAS,OAASA,EAAc,KAAK,YAAc,MAAQD,IAA0B,OAASA,EAAwB,GACxOG,EAAW3Y,GAAc,GAAIoY,GAA4BL,CAAK,CAAC,EAC/DhJ,EAAO,OAAO,KAAK2J,CAAkB,EAChCviB,EAAI,EAAGA,EAAI4Y,EAAK,OAAQ5Y,GAAK,EAAG,CACvC,IAAIyY,EAAMG,EAAK5Y,CAAC,EACZuiB,EAAmB9J,CAAG,IAAM,SAE9B+J,EAAS/J,CAAG,EAAI8J,EAAmB9J,CAAG,EAE1C,CACA,OAAO+J,CACT,CAAC,EAeUC,GAAcb,GAASQ,GAAYR,CAAK,EAAE,SAW1Cc,GAAsBd,GAAS,CACxC,IAAIe,EACJ,OAAQA,EAAwBP,GAAYR,CAAK,EAAE,oBAAsB,MAAQe,IAA0B,OAASA,EAAwBjB,EAC9I,EACWkB,GAAgBhB,GAASA,EAAM,WAO/BiB,GAAajB,GAAS,CAC/B,IAAIkB,EACJ,OAAQA,EAAiBlB,EAAM,WAAa,MAAQkB,IAAmB,OAASA,EAAiB5jB,EACnG,ECnFW6jB,GAAkB,kBAClBC,GAAU,UACVC,GAA8B,8BAE9BC,GAAmB,mBACnBC,GAAc,cACdC,GAAW,WACXC,GAAgB,gBAChBC,GAAiC,iCACjCC,GAAwB,wBACxBC,GAA2B,2BCXtC,SAAS5Z,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAG7S,IAAC0jB,GAAUC,IAAS,CAC5B,KAAMN,GACN,QAASM,CACX,GACWC,GAASC,IAAQ,CAC1B,KAAMZ,GACN,QAASY,CACX,GACWC,GAAe1B,IAAc,CACtC,KAAMkB,GACN,QAASlB,CACX,GACW2B,GAA8BtB,IAAa,CACpD,KAAMc,GACN,QAASd,CACX,GAkBWuB,GAAgB5B,GAAa,CAAC6B,EAAUC,IAAa,CAC9DD,EAASH,GAAa1B,CAAS,CAAC,EAChC,GAAI,CACF,QAAA+B,CACJ,EAAMD,EAAQ,EACR,CACF,iBAAAE,CACJ,EAAMD,EACJ,OAAOC,GAAqB,KAAsC,OAASA,EAAiB,KAAKhC,CAAS,CAC5G,EAMWiC,GAAsBC,GAAiB,CAACL,EAAUC,IAAa,CACxE,GAAI,CACF,UAAA9B,CACJ,EAAM8B,EAAQ,EACR,CACF,KAAAK,CACJ,EAAMnC,GAAyD,GACzDoC,EAAe1a,GAAcA,GAAc,GAAIsY,CAAS,EAAG,GAAI,CACjE,KAAMtY,GAAcA,GAAcA,GAAc,GAAIya,CAAI,EAAGD,CAAa,EAAG,GAAI,CAC7E,SAAUxa,GAAcA,GAAc,GAAIya,GAAS,KAA0B,OAASA,EAAK,QAAQ,EAAGD,EAAc,QAAQ,CAClI,CAAK,CACL,CAAG,EACD,OAAOL,EAASD,GAAcQ,CAAY,CAAC,CAC7C,EACWC,GAAyBhC,GAAY,CAACwB,EAAUC,IAAa,CACtE,GAAI,CACF,iBAAAQ,CACJ,EAAMrC,GAAY6B,GAAU,EACtBS,EAAsB7a,GAAcA,GAAc,GAAI4a,CAAgB,EAAGjC,CAAQ,EACrF,OAAOwB,EAASW,GAAe,CAC7B,iBAAkBD,CACtB,CAAG,CAAC,CACJ,EAMWC,GAAiBnC,GAAYwB,GAAYA,EAASI,GAAoB,CAC/E,SAAA5B,CACF,CAAC,CAAC,EACSoC,GAAgBC,IAAY,CACrC,KAAM9B,GACN,QAAA8B,CACF,GAKWC,GAAwBC,IAAW,CAC5C,KAAMvB,GACN,QAASuB,CACX,GCjGA,SAASnb,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAOxS,SAASilB,GAAmB/V,EAAM,CAC/C,IAAIgW,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFC,EAAiB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACzF,OAAO,UAAY,CACjB,IAAIxN,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIuN,EAC5EnS,EAAS,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACnD,OAAQA,GAAW,KAA4B,OAASA,EAAO,KAAI,CACjE,KAAK7D,EACH,CACE,GAAI,CACF,GAAA2H,EACA,QAAAiO,CACZ,EAAc/R,EACJ,OAAIoS,GAAkBC,GAAU,CAC9B,QAAAN,CACZ,EAAa,CACD,QAASnN,EAAMd,CAAE,CAC7B,CAAW,EACQc,EAEF7N,GAAcA,GAAc,GAAI6N,CAAK,EAAG,GAAI,CACjD,CAACd,CAAE,EAAGiO,CAClB,CAAW,CACH,CACF,QACE,OAAOnN,CACf,CACE,CACF,CCvCA,SAAS9N,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAQhT,MAAMqlB,EAAgB,CAC3B,aAAc,CACZzlB,GAAgB,KAAM,WAAY,EAAE,EACpCA,GAAgB,KAAM,WAAY,IAAI,CACxC,CACA,SAASwB,EAAMkkB,EAAS,CACtB,IAAIC,EACJ,KAAK,SAAWzb,GAAcA,GAAc,GAAI,KAAK,QAAQ,EAAG,GAAI,CAClE,CAAC1I,CAAI,EAAGkkB,CACd,CAAK,GACAC,EAAiB,KAAK,YAAc,MAAQA,IAAmB,QAAUA,EAAe,KAAK,KAAM,KAAK,QAAQ,CACnH,CACA,YAAYC,EAAU,CACpB,KAAK,SAAWA,CAClB,CACF,CACG,IAACC,GAAkB,IAAIJ,GC5B1B,SAASzlB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAOhT,MAAM0lB,EAAqB,CAOhC,OAAO,QAAQC,EAAIC,EAAQ,CACzB,MAAO,EACT,CAQA,OAAO,aAAaC,EAASC,EAAS,CACpC,MAAM,IAAI,MAAM,8BAA8B,CAChD,CASA,OAAO,WAAWC,EAAOC,EAAc9W,EAAM,CAC3C,MAAO,CACL,MAAA6W,EACA,aAAAC,EACA,KAAA9W,CACN,CACE,CAOA,OAAO5P,EAAOsmB,EAAQ,CACpB,MAAO,EACT,CACF,CACAhmB,GAAgB8lB,GAAsB,cAAe,aAAa,EAClE9lB,GAAgB8lB,GAAsB,sBAAuB,qBAAqB,EAClF9lB,GAAgB8lB,GAAsB,sBAAuB,qBAAqB,ECxDlF,SAAS9lB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAKvT,IAAIwH,GAAMC,EAAI,OAAO,yBAAyB,EACvC,MAAMwe,WAAgCP,EAAqB,CAOhE,OAAO,QAAQC,EAAIC,EAAQ,CACzB,GAAIA,EAAO,cAAgB,KACzB,MAAO,GAET,GAAI,CACF,OAAAD,EAAG,KAAK,eAAe,OAAOC,EAAO,aAAc,IAAI,IAAM,EACtD,EACT,MAAY,CACV,MAAO,EACT,CACF,CACA,OAAO,WAAWG,EAAOC,EAAc,CACrC,IAAI9W,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIwW,GAAqB,oBACpG,MAAO,CACL,MAAAK,EACA,aAAAC,EACA,KAAA9W,CACN,CACE,CAQA,OAAO,aAAa2W,EAASC,EAAS,CACpC,OAAOD,IAAYC,GAAWD,IAAY,MAAQC,IAAY,MAAQD,EAAQ,OAASC,EAAQ,MAAQD,EAAQ,eAAiBC,EAAQ,YAC1I,CACA,OAAO,0BAA0BI,EAAcC,EAAgB,CAC7D,IAAIC,EAAYD,EAAiB,MAAQ,IACrCE,EAAKH,EAAe,KAAO,GAC/B,OAAO,IAAI,IAAI,CAAC,CAAC,sBAAuB,aAAa,OAAOE,EAAW,UAAU,EAAE,OAAOC,CAAE,CAAC,EAAG,CAAC,0BAA2B,aAAa,OAAOD,EAAW,cAAc,EAAE,OAAOC,CAAE,CAAC,EAAG,CAAC,gCAAiC,aAAa,OAAOD,EAAW,oBAAoB,EAAE,OAAOC,CAAE,CAAC,CAAC,CAAC,CAC7R,CACA,OAAO,iBAAiBH,EAAcC,EAAgB,CACpD,IAAIG,EAAkBL,GAAwB,0BAA0BC,EAAcC,CAAc,EACpG,MAAO,CAAC,GAAGG,EAAgB,MAAM,CACnC,CACA,OAAO,oBAAoBJ,EAAcC,EAAgB,CACvD,IAAIC,EAAYD,IAAmB,QAAaA,EAAiB,MAAQ,IACrEE,EAAKH,IAAiB,QAAaA,EAAe,KAAO,GAC7D,OAAO,IAAI,IAAI,CAAC,CAAC,aAAc,aAAa,OAAOG,CAAE,CAAC,EAAG,CAAC,aAAc,aAAa,OAAOA,CAAE,CAAC,EAAG,CAAC,WAAY,WAAW,OAAOA,CAAE,CAAC,EAAG,CAAC,eAAgB,eAAe,OAAOA,CAAE,CAAC,EAAG,CAAC,qBAAsB,qBAAqB,OAAOA,CAAE,CAAC,EAAG,CAAC,sBAAuB,aAAa,OAAOD,EAAW,UAAU,EAAE,OAAOC,CAAE,CAAC,EAAG,CAAC,0BAA2B,aAAa,OAAOD,EAAW,cAAc,EAAE,OAAOC,CAAE,CAAC,EAAG,CAAC,gCAAiC,aAAa,OAAOD,EAAW,oBAAoB,EAAE,OAAOC,CAAE,CAAC,CAAC,CAAC,CAC1f,CACA,OAAO,WAAWH,EAAcC,EAAgB,CAC9C,IAAIG,EAAkBL,GAAwB,oBAAoBC,EAAcC,CAAc,EAC9F,MAAO,CAAC,GAAGG,EAAgB,MAAM,CACnC,CACA,YAAYX,EAAI,CACd,GAAI,CACF,SAAUY,EAAgB,GAC1B,aAAAL,EAAe,GACf,eAAAC,EAAiB,GACjB,4BAAAK,EAA8BP,GAAwB,8BAC5D,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxE,MAAK,EACLrmB,GAAgB,KAAM,KAAM,MAAM,EAClCA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,8BAA+B,MAAM,EAC3DA,GAAgB,KAAM,eAAgB,MAAM,EAC5CA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,kBAAmB,MAAM,EAC/C,IAAI6mB,EAAWF,GAAiBN,GAAwB,qBACxD,GAAI,CACF,KAAK,WAAaN,EAAG,KAAK,SAAS,YAAYc,CAAQ,CACzD,MAAY,CACVjf,GAAI,MAAM,2BAA4Bif,CAAQ,EAC9C,KAAK,WAAad,EAAG,KAAK,SAAS,YAAYM,GAAwB,oBAAoB,CAC7F,CACA,KAAK,GAAKN,EACV,KAAK,4BAA8Ba,EACnC,KAAK,aAAeN,EACpB,KAAK,eAAiBC,EACtB,KAAK,gBAAkBF,GAAwB,oBAAoBC,EAAcC,CAAc,CACjG,CACA,yBAAyBO,EAAkB,CACzC,IAAIC,EACJ,OAAQA,EAAwB,KAAK,gBAAgB,IAAID,CAAgB,KAAO,MAAQC,IAA0B,OAASA,EAAwBD,CACrJ,CACA,OAAOpnB,EAAO,CACZ,IAAIsmB,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7Ec,EAAmBd,EAAO,cAAgB,MAAQA,EAAO,eAAiB,GAAKA,EAAO,aAAe,KAAK,4BAC1GI,EAAe,KAAK,yBAAyBU,CAAgB,EACjE,GAAI,CACF,OAAO,KAAK,GAAG,KAAK,eAAe,OAAOV,EAAc1mB,EAAO,KAAK,UAAU,CAChF,MAAY,CACVkI,GAAI,MAAM,0BAA0B,CACtC,CACA,MAAO,EACT,CACF,CACA5H,GAAgBqmB,GAAyB,iCAAkC,yBAAyB,EACpGrmB,GAAgBqmB,GAAyB,uBAAwB,kBAAkB,EC1GnF,IAAIW,GACJ,SAAShnB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAKvT,IAAIwH,GAAMC,EAAI,OAAO,wBAAwB,EACtC,MAAMof,WAA+BnB,EAAqB,CAO/D,OAAO,QAAQC,EAAIC,EAAQ,CACzB,GAAIA,EAAO,cAAgB,KACzB,MAAO,GAET,GAAI,CACF,OAAAD,EAAG,KAAK,aAAa,OAAOC,EAAO,aAAc,CAAC,EAC3C,EACT,MAAY,CACV,MAAO,EACT,CACF,CAUA,OAAO,WAAWG,EAAOC,EAAc,CACrC,IAAI9W,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIwW,GAAqB,oBAChGoB,EAAa,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACvD,MAAO,CACL,MAAAf,EACA,KAAA7W,EACA,aAAA8W,EACA,WAAAc,CACN,CACE,CASA,OAAO,iBAAiBf,EAAO,CAC7B,IAAIC,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFc,EAAa,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACvD,OAAOD,GAAuB,WAAWd,EAAOC,EAAcN,GAAqB,oBAAqBoB,CAAU,CACpH,CAQA,OAAO,kBAAmB,CACxB,IAAId,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFc,EAAa,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACvD,OAAOD,GAAuB,WAAW,gBAAiBb,EAAcN,GAAqB,oBAAqBoB,CAAU,CAC9H,CAOA,OAAO,aAAajB,EAASC,EAAS,CACpC,OAAOD,IAAYC,GAAWD,GAAW,MAAQC,GAAW,MAAQD,EAAQ,OAASC,EAAQ,MAAQD,EAAQ,eAAiBC,EAAQ,cAAgBD,EAAQ,aAAeC,EAAQ,UACvL,CACA,YAAYH,EAAI,CACd,GAAI,CACF,oBAAAoB,EAAsBF,GAAuB,qBACnD,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxE,MAAK,EACLjnB,GAAgB,KAAM,sBAAuB,MAAM,EACnDA,GAAgB,KAAM,KAAM,MAAM,EAClC,KAAK,GAAK+lB,EACV,KAAK,oBAAsBoB,CAC7B,CAQA,OAAOC,EAAY,CACjB,IAAIpB,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7EI,EAAeJ,EAAO,cAAgB,MAAQA,EAAO,eAAiB,GAAKA,EAAO,aAAe,KAAK,oBACtGtmB,EAAQsmB,EAAO,YAAc,MAAQA,EAAO,aAAe,EAAIoB,EAAapB,EAAO,WAAaoB,EACpG,GAAI,CACF,OAAO,KAAK,GAAG,KAAK,aAAa,OAAOhB,EAAc1mB,CAAK,CAC7D,MAAY,CACVkI,GAAI,MAAM,0BAA0B,CACtC,CACA,MAAO,EACT,CACF,CACAof,GAA0BC,GAC1BjnB,GAAgBinB,GAAwB,wBAAyB,cAAc,EAC/EjnB,GAAgBinB,GAAwB,iBAAkBD,GAAwB,iBAAiB,UAAW,SAAS,CAAC,EACxHhnB,GAAgBinB,GAAwB,sBAAuBD,GAAwB,iBAAiB,eAAgB,aAAc,GAAK,CAAC,EAC5IhnB,GAAgBinB,GAAwB,mBAAoBD,GAAwB,iBAAiB,YAAa,YAAa,IAAK,CAAC,EACrIhnB,GAAgBinB,GAAwB,kBAAmBD,GAAwB,iBAAiB,WAAY,iBAAkB,IAAQ,CAAC,EAC3IhnB,GAAgBinB,GAAwB,6BAA8BD,GAAwB,iBAAiB,sBAAuB,UAAU,CAAC,EACjJhnB,GAAgBinB,GAAwB,eAAgBD,GAAwB,iBAAiB,QAAS,SAAS,CAAC,EACpHhnB,GAAgBinB,GAAwB,4BAA6BD,GAAwB,iBAAiB,OAAQ,YAAY,CAAC,EACnIhnB,GAAgBinB,GAAwB,6BAA8BD,GAAwB,iBAAiB,SAAU,cAAc,CAAC,ECtHxI,IAAIK,GACJ,SAASrnB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAKvT,IAAIwH,GAAMC,EAAI,OAAO,wBAAwB,EAEtC,MAAMyf,WAA+BxB,EAAqB,CAO/D,OAAO,QAAQC,EAAIC,EAAQ,CACzB,GAAIA,EAAO,cAAgB,KACzB,MAAO,GAET,GAAI,CACF,OAAAD,EAAG,KAAK,aAAa,OAAOC,EAAO,aAAc,CAAC,EAC3C,EACT,MAAY,CACV,MAAO,EACT,CACF,CAUA,OAAO,WAAWG,EAAOC,EAAc,CACrC,IAAI9W,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIwW,GAAqB,oBAChGoB,EAAa,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACvD,MAAO,CACL,MAAAf,EACA,KAAA7W,EACA,aAAA8W,EACA,WAAAc,CACN,CACE,CASA,OAAO,iBAAiBf,EAAO,CAC7B,IAAIC,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFc,EAAa,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACvD,OAAOI,GAAuB,WAAWnB,EAAOC,EAAcN,GAAqB,oBAAqBoB,CAAU,CACpH,CAQA,OAAO,kBAAmB,CACxB,IAAId,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFc,EAAa,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACvD,OAAOI,GAAuB,WAAW,gBAAiBlB,EAAcN,GAAqB,oBAAqBoB,CAAU,CAC9H,CAQA,OAAO,aAAajB,EAASC,EAAS,CACpC,OAAOD,IAAYC,GAAWD,GAAW,MAAQC,GAAW,MAAQD,EAAQ,OAASC,EAAQ,MAAQD,EAAQ,eAAiBC,EAAQ,cAAgBD,EAAQ,aAAeC,EAAQ,UACvL,CACA,YAAYH,EAAI,CACd,GAAI,CACF,oBAAAoB,EAAsBG,GAAuB,qBACnD,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxE,MAAK,EACLtnB,GAAgB,KAAM,KAAM,MAAM,EAClCA,GAAgB,KAAM,sBAAuB,MAAM,EACnD,KAAK,GAAK+lB,EACV,KAAK,oBAAsBoB,CAC7B,CAQA,OAAOC,EAAY,CACjB,IAAIpB,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7EI,EAAeJ,EAAO,cAAgB,MAAQA,EAAO,eAAiB,GAAKA,EAAO,aAAe,KAAK,oBACtGtmB,EAAQsmB,EAAO,YAAc,MAAQA,EAAO,aAAe,EAAIoB,EAAapB,EAAO,WAAaoB,EACpG,GAAI,CACF,OAAO,KAAK,GAAG,KAAK,aAAa,OAAOhB,EAAc1mB,CAAK,CAC7D,MAAY,CACVkI,GAAI,MAAM,0BAA0B,CACtC,CACA,MAAO,EACT,CACF,CACAyf,GAA0BC,GAC1BtnB,GAAgBsnB,GAAwB,wBAAyB,SAAS,EAC1EtnB,GAAgBsnB,GAAwB,mBAAoBD,GAAwB,iBAAiB,YAAa,YAAa,IAAK,CAAC,EACrIrnB,GAAgBsnB,GAAwB,kBAAmBD,GAAwB,iBAAiB,WAAY,iBAAkB,IAAQ,CAAC,EAC3IrnB,GAAgBsnB,GAAwB,6BAA8BD,GAAwB,iBAAiB,sBAAuB,UAAU,CAAC,ECnHjJ,SAASrnB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAIhT,MAAMmnB,CAAoB,EACjCvnB,GAAgBunB,EAAqB,UAAW,KAAK,EACrDvnB,GAAgBunB,EAAqB,OAAQ,MAAM,EACnDvnB,GAAgBunB,EAAqB,SAAU,QAAQ,EACvDvnB,GAAgBunB,EAAqB,UAAW,MAAM,EACtDvnB,GAAgBunB,EAAqB,SAAU,QAAQ,EACvDvnB,GAAgBunB,EAAqB,YAAa,UAAU,EAC5DvnB,GAAgBunB,EAAqB,aAAc,WAAW,ECZpD,IAACC,GAA8Bra,gBAAc,IAAI,EAC3Dqa,GAAe,YAAc,iBCFnB,IAACC,GAAa,OAAO,OAAO,CACpC,YAAa,aACb,iBAAkB,kBAClB,cAAe,eACf,aAAc,cACd,aAAc,cACd,eAAgB,eAClB,CAAC,EAMM,SAASC,GAAwBC,EAAQ,CAC9C,MAAO,oBAAqBA,CAC9B,CAMO,SAASC,GAAmBD,EAAQ,CACzC,MAAO,eAAgBA,CACzB,CAMO,SAASE,GAAoBF,EAAQ,CAC1C,MAAO,gBAAiBA,CAC1B,CAMO,SAASG,GAAeH,EAAQ,CACrC,OAAOD,GAAwBC,CAAM,GAAKC,GAAmBD,CAAM,GAAKE,GAAoBF,CAAM,CACpG,CAMO,SAASI,GAAkBJ,EAAQ,CACxC,MAAO,SAAUA,GAAUA,EAAO,OAASF,GAAW,gBACxD,CACO,SAASO,GAAeL,EAAQ,CACrC,MAAO,SAAUA,GAAUA,EAAO,OAASF,GAAW,aACxD,CACO,SAASQ,GAAcN,EAAQ,CACpC,MAAO,SAAUA,GAAUA,EAAO,OAASF,GAAW,YACxD,CAWO,SAASS,GAAaP,EAAQ,CACnC,MAAO,SAAUA,GAAUA,EAAO,OAASF,GAAW,WACxD,CAEO,SAASU,GAAcR,EAAQ,CACpC,MAAO,SAAUA,GAAUA,EAAO,OAASF,GAAW,YACxD,CAQO,SAASW,GAAgBT,EAAQ,CACtC,MAAO,SAAUA,GAAUA,EAAO,OAASF,GAAW,cACxD,CACO,SAASY,GAASV,EAAQ,CAC/B,OAAOI,GAAkBJ,CAAM,GAAKO,GAAaP,CAAM,GAAKM,GAAcN,CAAM,GAAKQ,GAAcR,CAAM,GAAKK,GAAeL,CAAM,GAAKS,GAAgBT,CAAM,CAChK,CC5EA,IAAI/f,GAAMC,EAAI,OAAO,+BAA+B,EAC7C,SAASygB,GAAmBX,EAAQrY,EAAM,CAC/C,OAAIqY,GAAU,MAAQ,CAACK,GAAeL,CAAM,EACnC,GAEF,CAACA,EAAO,cAAc,EAAE,KAAI,EAAG,KAAK,GAAK,IAAMrY,CAAI,CAC5D,CACO,SAASiZ,GAAiBZ,EAAQ,CACvC,IAAIa,EAA2B7c,MAAK8E,GAAiB,CACnD,KAAMgY,EACV,CAAG,EACD,GAAI,CAACT,GAAeL,CAAM,EACxB,OAAOa,EAET,GAAI,CACF,KAAAhZ,CACJ,EAAMmY,EACJ,OAAInY,GAAQ,KACHgZ,EAEQE,iBAAelZ,CAAI,EAC3BA,EAEW7D,MAAK8E,GAAiB,CACxC,KAAMjB,CACV,CAAG,CACH,CAMO,SAASmZ,GAAwBC,EAAW,CACjD,IAAIC,EAAqB,CAAC,GAAGD,EAAU,QAAO,CAAE,EAAE,OAAOE,GAASX,GAAcW,EAAM,CAAC,CAAC,CAAC,EACzFlhB,UAAI,MAAM,kCAAmCihB,CAAkB,EACxDA,EAAmB,IAAIxb,GAAQ,CACpC,GAAI,CAAC0b,EAAYpB,CAAM,EAAIta,EAGvB2b,EAAU,MAAM,QAAQrB,EAAO,MAAM,EAAIA,EAAO,OAAS,CAACA,EAAO,MAAM,EAC3E,OAAOqB,EAAQ,IAAIzM,GAAS,CAC1B,GAAI,CACF,KAAA/a,EACA,UAAAynB,EACA,aAAAC,CACR,EAAU3M,EACJ,MAAO,CACL,aAAc,WAAW,OAAO0M,GAAyD,MAAM,EAC/F,SAAUE,GAAYJ,EAAYvnB,CAAI,EACtC,KAAAA,EACA,aAAA0nB,CACR,CACI,CAAC,CACH,CAAC,EAAE,KAAI,CACT,CAOO,SAASE,GAAqBR,EAAW,CAC9C,IAAIS,EAAuB,CAAC,GAAGT,EAAU,QAAO,CAAE,EAAE,OAAOE,GAASV,GAAgBU,EAAM,CAAC,CAAC,GAAKA,EAAM,CAAC,EAAE,SAAW,IAAI,EACzHlhB,UAAI,MAAM,iCAAkCyhB,CAAoB,EACzD,IAAI,IAAIA,EAAqB,QAAQrL,GAAS,CACnD,GAAI,EAAG2J,CAAM,EAAI3J,EACjB,OAAO,OAAO,QAAQ2J,EAAO,OAAO,CACtC,CAAC,CAAC,CACJ,CCzEO,SAAS2B,IAAa,CAC3B,OAAO7gB,GAAkB+e,GAAgB,kJAAkJ,CAC7L,CCCU,IAAC+B,GAAsCpc,gBAAc,IAAI,EACnEoc,GAAuB,YAAc,yBAK9B,SAASC,GAAwBlf,EAAO,CAC7C,GAAI,CACF,aAAAgb,EACA,SAAAtO,EACA,SAAAxL,CACJ,EAAMlB,EACA,CAACmf,EAAUC,CAAW,EAAInf,EAAM,SAAS,CAAC,EAO1Cof,EAAiBjiB,SAAO,CAC1B,QAAS4d,EACT,gBAAiB,IAAI,IACrB,MAAO,IAAI,IACX,WAAY,EAChB,CAAG,EACGsE,EAAWxhB,cAAY,CAAC6O,EAAIc,IAAU,CACpC4R,EAAe,QAAQ,YACzBA,EAAe,QAAQ,MAAM,IAAI1S,EAAIc,CAAK,CAE9C,EAAG,EAAE,EACD8R,EAAsBzhB,cAAY,IAAM,CAErCuhB,EAAe,QAAQ,aAC1BA,EAAe,QAAQ,WAAa,GACpCA,EAAe,QAAQ,MAAQ,IAAI,IACnCD,EAAYI,GAAQA,EAAO,CAAC,EAEhC,EAAG,EAAE,EACDC,EAAuBriB,SAAOiiB,EAAe,QAAQ,QAAQ,OAAO,QAAQ,GAAG,EAC/EK,EAAkB5hB,cAAY,SAAkB6O,EAAI,CAEtD,IAAIgT,EAAoBN,EAAe,QAAQ,gBAAgB,IAAI1S,CAAE,EACrE,GAAIgT,EACF,OAAOA,EAET,GAAI,CACF,MAAAvqB,EACA,KAAAwqB,CACN,EAAQH,EAAqB,QAAQ,KAAI,EACjCI,EAAW,CACb,MAAOzqB,EACP,KAAMwqB,GAA0C,EACtD,EACI,OAAAP,EAAe,QAAQ,gBAAgB,IAAI1S,EAAIkT,CAAQ,EAChDA,CACT,EAAG,EAAE,EACLxiB,YAAU,UAAwB,CAC5BgiB,EAAe,QAAQ,aACzB3S,EAAS,CAAC,GAAG2S,EAAe,QAAQ,MAAM,OAAM,CAAE,CAAC,EACnDA,EAAe,QAAQ,WAAa,GAExC,EAAG,CAACF,EAAUzS,CAAQ,CAAC,EACvB,IAAIoT,EAAejhB,UAAQ,KAAO,CAChC,SAAAygB,EACA,oBAAAC,EACA,gBAAAG,EACA,SAAAP,CACJ,GAAM,CAACG,EAAUI,EAAiBH,EAAqBJ,CAAQ,CAAC,EAC9D,OAAoB9d,MAAK4d,GAAuB,SAAU,CACxD,MAAOa,EACP,SAAU5e,CACd,CAAG,CACH,++BCzEA,IAAI5D,GAAMC,EAAI,OAAO,YAAY,EAC1B,SAASwiB,IAAoB,CAClC,IAAIC,EACAC,EAAaC,GAA4BC,EAAa,EAK1D,OAAAF,EAAW,SAAWG,IAAqBJ,EAAuBC,EAAW,YAAc,MAAQD,IAAyB,OAASA,EAAuB,EAAE,EAAE,IAAIjd,GAAQ,CAC1K,GAAI,CAAC9H,EAAOC,CAAG,EAAI6H,EACnB,OAAOsd,GAAW,kBAAkBJ,EAAW,SAAS,UAAUhlB,EAAOC,EAAM,CAAC,CAAC,CACnF,CAAC,EAAE,KAAK,GAAG,EACXoC,GAAI,OAAO,eAAgB6iB,EAAa,EACxC7iB,GAAI,OAAO,uBAAwB2iB,CAAU,EACtC,OAAO,OAAO,CACnB,cAAeA,EAAW,eAAe,EACzC,aAAcA,EAAW,cAAc,EACvC,YAAaA,EAAW,aAAa,EACrC,aAAcA,EAAW,cAAc,EACvC,SAAUA,EAAW,SACrB,UAAWA,EAAW,UACtB,UAAWA,EAAW,UACtB,cAAeA,EAAW,cAC1B,sBAAuBA,EAAW,uBAAuB,EACzD,gBAAiBA,EAAW,iBAAiB,EAC7C,gBAAiBA,EAAW,iBAAiB,EAE7C,gBAAiBA,EAAW,iBAAiB,EAC7C,WAAYA,EAAW,YAAY,EACnC,YAAaA,EAAW,aAAa,EACrC,WAAYA,EAAW,YAAY,EACnC,YAAaA,EAAW,aAAa,EAErC,qBAAsBA,EAAW,sBAAsB,EACvD,qBAAsBA,EAAW,sBAAsB,EACvD,gBAAiBA,EAAW,iBAAiB,CACjD,CAAG,CACH,CCzCA,SAAStgB,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAIvT,IAAIwqB,GAAwBC,OAAK,IAAKC,GAAA,IAAC,OAAO,oBAAW,iDAAC,EAC1D,SAASC,GAAKzgB,EAAO,CACnB,OAAoBqB,MAAKqf,WAAU,CACjC,SAAuBrf,MAAKsU,GAAgB,CAC1C,cAAe,mBACrB,CAAK,EACD,SAAuBtU,MAAKif,GAAU1gB,GAAc,GAAII,CAAK,CAAC,CAClE,CAAG,CACH,CCZU,IAAC2gB,GAAiC9d,gBAAc,IAAI,EAC9D8d,GAAkB,YAAc,oBAIzB,SAASC,GAAmB7d,EAAM,CACvC,GAAI,CACF,SAAA7B,CACJ,EAAM6B,EACA,CACF,aAAAY,CACJ,EAAMS,GAAQ,EACR6b,EAAaphB,UAAQkhB,GAAmB,CAACpc,CAAY,CAAC,EAC1D,OAAoBtC,MAAKsf,GAAkB,SAAU,CACnD,MAAOV,EACP,SAAU/e,CACd,CAAG,CACH,CChBO,SAAS2f,IAAgB,CAC9B,OAAO1iB,GAAkBwiB,GAAmB,mCAAmC,CACjF,CCPO,IAAIG,GAAgB,OAAO,OAAO,CACvC,YAAa,GACb,SAAU,CACR,WAAY,GACZ,yBAA0B,GAC1B,eAAgB,GAChB,iBAAkB,GAClB,iBAAkB,GAClB,yBAA0B,GAC1B,qBAAsB,GACtB,eAAgB,GAChB,iBAAkB,GAClB,cAAe,GACf,eAAgB,SAEhB,oBAAqB,EAGrB,iBAAkB,EACtB,EACE,WAAY,CACV,YAAa,EACb,gBAAiB,GACjB,cAAe,GACf,aAAc,GACd,aAAc,GACd,eAAgB,IAChB,gBAAiB,GACrB,EACE,OAAQ,CACN,MAAO,QACP,SAAU,WACV,SAAU,WACV,OAAQ,qBACR,MAAO,SACP,YAAa,kBACb,aAAc,OACd,iBAAkB,UACtB,EACE,QAAS,EACX,CAAC,ECtCM,SAASC,GAAoBvmB,EAAM,CACxC,OAAOA,EAAK,gBAAkB,MAChC,CACO,SAASwmB,GAAuBxmB,EAAM,CAC3C,OAAOA,EAAK,YAAc,MAC5B,CACO,IAAIymB,GAAoB,OAAO,OAAO,CAC3C,KAAM,UACN,WAAY,GACZ,cAAe,GACf,eAAgB,GAChB,MAAO,EACT,CAAC,6LCdD,SAASvrB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAavT,MAAMorB,EAAa,CACjB,aAAc,CACZxrB,GAAgB,KAAM,kBAAmB,MAAM,EAI/CA,GAAgB,KAAM,MAAO,KAAK,MAAM,EAIxCA,GAAgB,KAAM,UAAW,KAAK,IAAI,EAC1C,KAAK,gBAAkB,GACvB,KAAK,gBAAgBwrB,GAAa,SAAS,EAAI,EACjD,CASA,GAAGC,EAAW7mB,EAAU8D,EAAS,CAC/B,GAAI,OAAO9D,GAAa,WACtB,MAAM,IAAI,MAAM,4BAA8B6mB,EAAY,+BAAiC7mB,CAAQ,EAEhG,KAAK,gBAAgB6mB,CAAS,IACjC,KAAK,gBAAgBA,CAAS,EAAI,IAEpC,KAAK,gBAAgBA,CAAS,EAAE,KAAK,CACnC,GAAI7mB,EACJ,IAAK8D,CACX,CAAK,CACH,CAQA,KAAK+iB,EAAW,CAEd,QADIC,EAAO,KAAK,gBAAgBD,CAAS,EAChC7rB,EAAO,UAAU,OAAQ+rB,EAAO,IAAI,MAAM/rB,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAClG6rB,EAAK7rB,EAAO,CAAC,EAAI,UAAUA,CAAI,EAEjC,GAAI4rB,EACF,QAASrrB,EAAI,EAAGA,EAAIqrB,EAAK,OAAQrrB,IAAK,CACpC,IAAIqgB,EAAMgL,EAAKrrB,CAAC,EAAE,KAAO,GACzB,GAAI,CACFqrB,EAAKrrB,CAAC,EAAE,GAAG,MAAMqgB,EAAKiL,CAAI,CAC5B,OAAS1rB,EAAG,CACV,QAAQ,MAAM,8BAA+BA,CAAC,CAChD,CACF,CAEF0rB,EAAK,QAAQF,CAAS,EAEtB,QADIG,EAAe,KAAK,gBAAgBJ,GAAa,SAAS,EACrDK,EAAK,EAAGA,EAAKD,EAAa,OAAQC,IAAM,CAC/C,IAAIC,EAAOF,EAAaC,CAAE,EAAE,KAAO,GACnC,GAAI,CACFD,EAAaC,CAAE,EAAE,GAAG,MAAMC,EAAMH,CAAI,CACtC,OAAS1rB,EAAG,CACV,QAAQ,MAAM,8CAA+CA,CAAC,CAChE,CACF,CACF,CASA,OAAOwrB,EAAW7mB,EAAU8D,EAAS,CACnC,GAAI,CAAC,KAAK,gBAAgB+iB,CAAS,EACjC,MAAM,IAAI,MAAM,6CAA+CA,CAAS,EAG1E,QADIM,EAAW,GACN1rB,EAAI,EAAGA,EAAI,KAAK,gBAAgBorB,CAAS,EAAE,OAAQprB,KACrD,CAACuE,GAAY,KAAK,gBAAgB6mB,CAAS,EAAEprB,CAAC,EAAE,KAAOuE,KAAc,CAAC8D,GAAWA,IAAY,KAAK,gBAAgB+iB,CAAS,EAAEprB,CAAC,EAAE,OACnI,KAAK,gBAAgBorB,CAAS,EAAE,OAAOprB,EAAG,CAAC,EAC3C0rB,EAAW,IAGf,GAAIA,IAAa,GACf,MAAM,IAAI,MAAM,yBAA2BN,CAAS,CAExD,CACF,CAUAzrB,GAAgBwrB,GAAc,YAAa,OAAO,ECnHlD,SAASxrB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAIxS,MAAM4rB,WAAsBR,EAAa,CACtD,YAAYpG,EAAQta,EAAQmhB,EAAe,CACzC,MAAK,EACLjsB,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,MAAO,MAAM,EAEnCA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,WAAY,EAAK,EACvCA,GAAgB,KAAM,qBAAsB,MAAM,EAClDA,GAAgB,KAAM,WAAYksB,EAAE,CAAC,kCAAmC,+CAAgD,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAC3IlsB,GAAgB,KAAM,kBAAmB,MAAM,EAC/C,KAAK,MAAQqrB,GAAoBjG,CAAM,EAAIA,EAAO,cAAgB,GAClE,KAAK,OAASta,EACd,KAAK,cAAgBmhB,EACrB,KAAK,QAAU7G,EACf,KAAK,gBAAkB,KAAK,SAAS,KAAK,aAAa,EACvD,KAAK,mBAAqB,IAC5B,CAMA,YAAa,CACX,OAAO,KAAK,eACd,CAOA,MAAO,CACL,KAAK,KAAK,MAAM,EAChB,KAAK,SAAW,GAChB,KAAK,SAAS,KAAI,CACpB,CAOA,MAAO,CACL,KAAK,KAAK,MAAM,EAChB,KAAK,SAAW,GAChB,KAAK,SAAS,KAAI,GAEd,KAAK,QAAU,GAAK,KAAK,OAAS,IACpC,KAAK,KAAK,OAAO,CAErB,CAeA,QAAQzF,EAAOvC,EAAQ,CAIrB,QAHI+O,EAAiBC,EAAuBC,EACxCC,EAAc,KAAK,OACnBC,EAAmB,KAChBD,GAAe,CAACA,EAAY,UAAY,CAACA,EAAY,OAAO,CACjE,IAAIE,EAOJ,GANAD,EAAmBD,EACnBA,EAAcA,EAAY,QAKrBE,EAAeF,KAAiB,MAAQE,IAAiB,QAAUA,EAAa,OACnF,MAAO,EAEX,CACA,GAAI,CAACF,GAAe,CAACC,EACnB,MAAO,GAOT,QALIE,EAAYH,EAAY,SAAW,SAAW,QAC9CI,EAAUD,IAAc,SAAWrP,EAASuC,EAC5CgN,IAAeR,EAAkB,KAAKM,CAAS,KAAO,MAAQN,IAAoB,OAASA,EAAkB,IAAM,KAAOC,EAAwBG,EAAiB,OAAOE,CAAS,KAAO,MAAQL,IAA0B,OAASA,EAAwB,GAAK,MAClQQ,EAAaF,EAAUC,EAAa,IACpCrZ,KAAW+Y,EAAyBE,EAAiB,OAAOE,CAAS,KAAO,MAAQJ,IAA2B,OAASA,EAAyB,GAAKO,IAAeN,EAAY,aAAa,OAAS,GAClMjsB,EAAI,EAAGA,EAAIisB,EAAY,aAAa,OAAQjsB,IACnD,GAAIisB,EAAY,aAAajsB,CAAC,IAAMksB,EAClCD,EAAY,aAAajsB,CAAC,EAAE,OAAOosB,CAAS,EAAIG,MAC3C,CACL,IAAIC,EACJP,EAAY,aAAajsB,CAAC,EAAE,OAAOosB,CAAS,IAAMI,EAAwBP,EAAY,aAAajsB,CAAC,EAAE,OAAOosB,CAAS,KAAO,MAAQI,IAA0B,OAASA,EAAwB,GAAKvZ,CACvM,CAEF,OAAAgZ,EAAY,cAAc,SAAS,EAC5B,EACT,CAQA,MAAMxjB,EAAS,CACb,IAAIgkB,EAAuBC,EAEtB,KAAK,QAAQ,aAGb,GAAAD,GAAyBC,EAAyB,KAAK,sBAAwB,MAAQA,IAA2B,OAAS,OAASA,EAAuB,KAAK,KAAMjkB,CAAO,KAAO,MAAQgkB,IAA0B,SAASA,KAClO,KAAK,KAAK,OAAO,EACjB,KAAK,OAAO,MAAK,EAErB,CAMA,YAAYloB,EAAU,CACpB,KAAK,mBAAqBA,CAC5B,CAOA,UAAW,CACT,OAAO,KAAK,QAAQ,cACtB,CAOA,WAAY,CACV,OAAO,KAAK,OACd,CAOA,YAAYmT,EAAO,CACjB,KAAK,SAASmU,EAAE,OAAO,GAAM,KAAK,WAAYnU,CAAK,CAAC,CACtD,CAOA,SAASA,EAAO,CACd,KAAK,QAAQ,eAAiBA,EAC9B,KAAK,OAAO,kBAAkB,cAAc,CAC9C,CAOA,SAASiV,EAAO,CACd,KAAK,OAAO,SAASA,CAAK,CAC5B,CAUA,WAAY,CACV,IAAIrN,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC5EvC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EACjF,GAAIuC,IAAU,KAAK,OAASvC,IAAW,KAAK,OAAQ,CAClD,KAAK,MAAQuC,EACb,KAAK,OAASvC,EACd,IAAI6P,EAAK,KAAK,gBAAgB,CAAC,EAC3BC,EAASD,EAAG,YAAcA,EAAG,YAC7BE,EAASF,EAAG,aAAeA,EAAG,aAClC,KAAK,gBAAgB,MAAM,KAAK,MAAQC,CAAM,EAAE,OAAO,KAAK,OAASC,CAAM,EAC3E,KAAK,KAAK,QAAQ,CACpB,CACF,CACF,mIC3MO,SAASC,GAAatU,EAAK,CAChC,IAAIuU,EAAU,SAAS,KAAK,MAAM,IAAI,OAAOvU,EAAM,UAAU,CAAC,EAC9D,OAAOuU,EAAUA,EAAQ,CAAC,EAAI,IAChC,CACO,SAASC,GAAoBC,EAAO,CACzC,GAAI,OAAO,SAAS,KAClB,OAAOH,GAAaG,CAAK,EACpB,GAAI,CAAC,OAAO,SAAS,OAC1B,OAAO,KAET,IAAIC,EAAgB,OAAO,SAAS,OAAO,OAAO,CAAC,EAAE,MAAM,GAAG,EAC5DzT,EAAS,GACT0T,EACA,EACF,IAAK,EAAI,EAAG,EAAID,EAAc,OAAQ,IACpCC,EAAOD,EAAc,CAAC,EAAE,MAAM,GAAG,EACjCzT,EAAO0T,EAAK,CAAC,CAAC,EAAIA,EAAK,CAAC,EAE1B,OAAO1T,EAAOwT,CAAK,GAAK,IAC1B,CACO,SAASG,GAAUC,EAAI,CAC5B,OAAO,OAAO,sBAAsBA,CAAE,CACxC,CACO,SAASC,GAAgB9oB,EAAM+oB,EAAO,CAC3C,IAAIvoB,EAAQuoB,EAAM,QAAQ/oB,CAAI,EAC9B,GAAIQ,IAAU,GACZ,MAAM,IAAI,MAAM,wDAAwD,EAE1EuoB,EAAM,OAAOvoB,EAAO,CAAC,CACvB,CACO,SAASwoB,IAAc,CAC5B,OAAO5W,GAAM,CACf,CAYO,SAAS6W,GAAU9qB,EAAO+qB,EAAU,CACzC,IAAIC,EAAShrB,EAAM,QAAQ,eAAgB,gBAAgB,EAAE,QAAQ,eAAgB,iBAAiB,EAAE,QAAQ,WAAY,YAAY,EAAE,QAAQ,WAAY,aAAa,EAAE,QAAQ,YAAa,cAAc,EAChN,OAAI+qB,IAAa,GACRC,EAEAA,EAAO,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM,CAE5D,CASO,SAASC,GAAUjrB,EAAO,CAC/B,OAAOipB,EAAE,KAAKjpB,EAAM,QAAQ,gBAAiB,EAAE,CAAC,CAClD,CChEA,SAASjD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAGvT,MAAM+tB,WAAqB3C,EAAa,CACtC,YAAY4C,EAAU,CACpB,IAAIC,EACAC,EAAsB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC9F,MAAK,EACLtuB,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,uBAAwB,MAAM,EAIpDA,GAAgB,KAAM,UAAW,GAAG,EACpCA,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,UAAW,MAAM,EAIvCA,GAAgB,KAAM,aAAc,EAAE,EAEtCA,GAAgB,KAAM,MAAO,CAAC,EAC9BA,GAAgB,KAAM,MAAO,CAAC,EAC9BA,GAAgB,KAAM,cAAe,CAAC,EACtCA,GAAgB,KAAM,cAAe,CAAC,EACtCA,GAAgB,KAAM,aAAc,EAAK,EACzC,KAAK,UAAYouB,EACjB,KAAK,WAAalC,EAAE,QAAQ,EAC5B,KAAK,OAASA,EAAE,SAAS,IAAI,EAE7B,KAAK,qBAAuBoC,EAC5B,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,EACzC,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,GAG1CD,EAAkB,KAAK,aAAe,MAAQA,IAAoB,QAAUA,EAAgB,GAAG,YAAa,KAAK,WAAW,CAC/H,CACA,SAAU,CACR,IAAIE,EAAkBC,GACrBD,EAAmB,KAAK,aAAe,MAAQA,IAAqB,QAAUA,EAAiB,OAAO,YAAa,KAAK,WAAW,GACnIC,EAAmB,KAAK,cAAgB,MAAQA,IAAqB,QAAUA,EAAiB,OAAO,UAAW,KAAK,SAAS,EACjI,KAAK,UAAY,OACjB,KAAK,WAAa,OAClB,KAAK,OAAS,OACd,aAAa,KAAK,QAAQ,EAC1B,KAAK,SAAW,MAClB,CACA,YAAYC,EAAQ,CAElB,GADAA,EAAO,eAAc,EACjBA,EAAO,SAAW,EAAG,CACvB,IAAIC,EAAgBC,EAAgBC,EAAmBC,EACnDC,EAAc,KAAK,gBAAgBL,CAAM,EAC7C,KAAK,aAAeC,EAAiBI,EAAY,KAAO,MAAQJ,IAAmB,OAASA,EAAiB,EAC7G,KAAK,aAAeC,EAAiBG,EAAY,KAAO,MAAQH,IAAmB,OAASA,EAAiB,GAC5GC,EAAoB,KAAK,cAAgB,MAAQA,IAAsB,QAAUA,EAAkB,GAAG,YAAa,KAAK,WAAW,GACnIC,EAAoB,KAAK,cAAgB,MAAQA,IAAsB,QAAUA,EAAkB,GAAG,UAAW,KAAK,SAAS,EAChI,KAAK,SAAW,OAAO,WAAW,KAAK,WAAY,KAAK,OAAO,CACjE,CACF,CACA,YAAYJ,EAAQ,CAClB,GAAI,KAAK,UAAY,KAAM,CACzB,IAAIM,EAAiBC,EACrBP,EAAO,eAAc,EACrB,IAAIK,EAAc,KAAK,gBAAgBL,CAAM,EAC7C,KAAK,MAAQM,EAAkBD,EAAY,KAAO,MAAQC,IAAoB,OAASA,EAAkB,GAAK,KAAK,YACnH,KAAK,MAAQC,EAAkBF,EAAY,KAAO,MAAQE,IAAoB,OAASA,EAAkB,GAAK,KAAK,YAC/G,KAAK,aAAe,KAClB,KAAK,IAAI,KAAK,GAAG,EAAI,KAAK,YAAc,KAAK,IAAI,KAAK,GAAG,EAAI,KAAK,aACpE,KAAK,WAAU,EAGf,KAAK,YACP,KAAK,KAAK,OAAQ,KAAK,IAAK,KAAK,IAAKP,CAAM,CAEhD,CACF,CACA,UAAUA,EAAQ,CAChB,GAAI,KAAK,UAAY,KAAM,CACzB,IAAIQ,EAAmBC,EAAmBC,EAAmBC,EAa7D,GAZA,aAAa,KAAK,QAAQ,GACzBH,EAAoB,KAAK,cAAgB,MAAQA,IAAsB,QAAUA,EAAkB,OAAO,YAAa,KAAK,WAAW,GACvIC,EAAoB,KAAK,cAAgB,MAAQA,IAAsB,QAAUA,EAAkB,OAAO,UAAW,KAAK,SAAS,GACnIC,EAAoB,KAAK,cAAgB,MAAQA,IAAsB,SAAWA,EAAoBA,EAAkB,KAAK,QAAQ,KAAO,MAAQA,IAAsB,QAAUA,EAAkB,IAAI,iBAAkB,EAAE,EAC3N,KAAK,aAAe,KACtB,KAAK,WAAa,GAClB,KAAK,KAAK,WAAYV,EAAQ,KAAK,YAAc,KAAK,GAAG,IAK1DW,EAAe,KAAK,UAAY,MAAQA,IAAiB,QAAUA,EAAa,YAAY,aAAa,EACtG,EAAE,KAAK,qBAAqB,QAAS,CACvC,IAAIC,GACHA,EAAmB,KAAK,aAAe,MAAQA,IAAqB,QAAUA,EAAiB,YAAY,aAAa,CAC3H,CACI,KAAK,sBAAsB,KAAK,QAAO,CAC7C,CACF,CACA,YAAa,CACX,IAAIC,EAAeC,EAAkBC,EACrC,OAAO,aAAa,KAAK,QAAQ,EACjC,KAAK,WAAa,IACjBF,EAAgB,KAAK,UAAY,MAAQA,IAAkB,QAAUA,EAAc,SAAS,aAAa,GACzGC,EAAmB,KAAK,aAAe,MAAQA,IAAqB,QAAUA,EAAiB,SAAS,aAAa,GACrHC,EAAoB,KAAK,cAAgB,MAAQA,IAAsB,SAAWA,EAAoBA,EAAkB,KAAK,QAAQ,KAAO,MAAQA,IAAsB,QAAUA,EAAkB,IAAI,iBAAkB,MAAM,EACnO,KAAK,KAAK,YAAa,KAAK,YAAa,KAAK,WAAW,CAC3D,CACA,gBAAgBjjB,EAAO,CACrB,IAAIkjB,EAAcC,EAClB,MAAO,CACL,GAAID,EAAeljB,EAAM,SAAW,MAAQkjB,IAAiB,OAASA,EAAe,EACrF,GAAIC,EAAenjB,EAAM,SAAW,MAAQmjB,IAAiB,OAASA,EAAe,CAC3F,CACE,CACF,CCxHA,SAAS1vB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWxS,MAAMuvB,EAAsB,CACzC,YAAYC,EAAW7X,EAAO,CAC5B/X,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,kBAAmB,IAAI,EAC7CA,GAAgB,KAAM,mBAAoB,IAAI,EAC9CA,GAAgB,KAAM,+BAAgC,IAAI,EAC1DA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,cAAe,MAAM,EAC3C,KAAK,gBAAkB,KACvB,KAAK,iBAAmB,KACxB,KAAK,6BAA+B,KACpC,KAAK,WAAa4vB,EAClB,KAAK,cAAgB7X,EACrB,KAAK,YAAc,KAAK,eAAc,EACtC,KAAK,WAAW,GAAG,OAAQ,KAAK,QAAS,IAAI,EAC7C,KAAK,WAAW,GAAG,UAAW,KAAK,SAAU,IAAI,CACnD,CAMA,MAAO,CACL,IAAId,EAAK,KAAK,WAAW,QAAQ,GACjC,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,+BAA+B,EAKjD,OAAI,MAAM,QAAQA,CAAE,EACXA,EAAG,KAAK,GAAG,EAEbA,CACT,CAYA,SAAU,CACR,IAAI6B,EAAM,KAAK,KAAI,EACnB,KAAK,iBAAgC7M,GAAS,aAAa,KAAK,mBAAkB,EAAI,KAAK,WAAW,WAAU,EAAG,CAAC,EAAG6M,CAAG,EAC1H,KAAK,WAAW,cAAc,cAAcA,EAAK,KAAK,gBAAgB,CACxE,CAWA,mBAAmB+D,EAAW,CAC5B,GAAKA,EAGL,MAAK,gBAAkBA,EACvB,KAAK,6BAA+B,KAAK,gBAAgB,qBAAuB,UAAY,CAAC,EAC7F,KAAK,gBAAgB,oBAAsB,KAAK,UAAU,KAAK,IAAI,EACnE,IAAI9E,EAAQ,KAAK,WAAW,SAAQ,EAChCA,GACF,KAAK,gBAAgB,SAASA,CAAK,EAEvC,CAKA,UAAW,CACT,KAAK,WAAW,cAAc,iBAAiB,KAAK,KAAI,EAAI,KAAK,gBAAgB,EACjF,KAAK,WAAW,IAAI,OAAQ,KAAK,QAAS,IAAI,EAC9C,KAAK,WAAW,IAAI,UAAW,KAAK,SAAU,IAAI,CACpD,CAMA,UAAU8X,EAAWC,EAAW,CAC9B,IAAIC,EACJ,KAAK,WAAW,SAASD,CAAS,GACjCC,EAAwB,KAAK,gCAAkC,MAAQA,IAA0B,QAAUA,EAAsB,KAAK,KAAK,gBAAiBF,EAAWC,CAAS,CACnL,CAMA,gBAAiB,CACf,IAAIE,EAAgB,KAAK,WAAW,QAAQ,UAC5C,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,0EAA0E,EAE5F,IAAIC,EAAa,KAAK,WAAW,cAAc,aAAaD,CAAa,GAAK,KAAK,WAAW,cAAc,qBAAoB,EAChI,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,oBAAsBD,EAAgB,0GAA+G,EAEvK,OAAOC,CACT,CAKA,oBAAqB,CACnB,IAAIC,EAAe,CACjB,WAAY,KAAK,WAAW,cAAc,SAC1C,YAAa,KAAK,WAWlB,IAAK,KAAK,mBAAmB,KAAK,IAAI,CAC5C,EACQ5lB,EAAQ4hB,EAAE,OAAOgE,EAAc,KAAK,WAAW,QAAQ,KAAK,EAChE,OAAoB3lB,EAAM,cAAc,KAAK,YAAaD,CAAK,CACjE,CACF,CC1IA,IAAI6lB,GAAQ,CAAC,WAAY,aAAc,2BAA4B,mBAAoB,aAAc,cAAe,gBAAiB,eAAgB,eAAgB,iBAAkB,kBAAmB,SAAU,QAAS,WAAY,WAAY,SAAU,UAAW,gBAAiB,iBAAkB,KAAM,QAAS,OAAQ,SAAU,aAAc,QAAS,mBAAoB,cAAe,WAAY,kBAAmB,iBAAkB,iBAGzb,EACIC,GAAU,CAAC,GAAM,GAAO,MAAO,SAAU,QAAS,YAAa,QAAS,WAAY,WAAY,oBAAoB,EAWjH,SAASC,GAAajL,EAAQ,CACnC,GAAI+K,GAAM,OAAS,GACjB,MAAM,IAAI,MAAM,sCAAsC,EAExD,IAAIG,EAAM,GACV,OAAAC,GAAWnL,EAAQkL,EAAK,MAAM,EACvBA,CACT,CAUO,SAASE,GAAeC,EAAgB,CAC7C,GAAIN,GAAM,OAAS,GACjB,MAAM,IAAI,MAAM,sCAAsC,EAExD,IAAIO,EAAO,GACX,OAAAH,GAAWE,EAAgBC,EAAM,MAAM,EAChCA,CACT,CASA,SAASH,GAAWI,EAAMC,EAAIC,EAAmB,CAC/C,IAAIC,EAAgBD,IAAsB,OAASE,GAAOC,GAC1D,QAASlY,KAAO6X,EAId,GAAKA,EAAK,eAAe7X,CAAG,EAC5B,KAAImY,EAAW,MAAM,QAAQN,CAAI,EAAIA,EAAK,OAAO,SAAS7X,EAAK,EAAE,CAAC,EAAI6X,EAAK7X,CAAG,EAK9E,GAAI,OAAOmY,GAAa,UAAYA,GAAY,KAAM,CACpD,IAAIC,EAASD,aAAoB,MAAQ,GAAK,GAC9C,GAAI,MAAM,QAAQL,CAAE,EAClBA,EAAG,OAAO,SAAS9X,EAAK,EAAE,CAAC,EAAIoY,MAC1B,CACL,IAAIC,EAASL,EAAchY,EAAKqX,EAAK,EACrCS,EAAGO,CAAM,EAAID,CACf,CACAX,GAAWU,EAAUC,EAAQL,CAAiB,CAMhD,KAAO,CACL,IAAIO,EAAUN,EAAcG,EAAUb,EAAO,EAC7C,GAAI,MAAM,QAAQQ,CAAE,EAClBA,EAAG,OAAO,SAAS9X,EAAK,EAAE,CAAC,EAAIsY,MAC1B,CACL,IAAIC,EAAUP,EAAchY,EAAKqX,EAAK,EACtCS,EAAGS,CAAO,EAAID,CAChB,CACF,EAEJ,CAUA,SAASL,GAAKrxB,EAAO4xB,EAAY,CAK/B,GAAI,OAAO5xB,GAAU,UAAYA,EAAM,SAAW,EAChD,MAAO,MAAQA,EAEjB,IAAI4F,EAAQgsB,EAAW,QAAQ5xB,CAAK,EAKpC,OAAI4F,IAAU,GACL5F,EAMA4F,EAAM,SAAS,EAAE,CAE5B,CACA,SAAS0rB,GAAKtxB,EAAO4xB,EAAY,CAK/B,OAAI,OAAO5xB,GAAU,UAAYA,EAAM,SAAW,EACzC4xB,EAAW,SAAS5xB,EAAO,EAAE,CAAC,EAQnC,OAAOA,GAAU,UAAYA,EAAM,OAAO,EAAG,CAAC,IAAM,MAC/CA,EAAM,CAAC,EAKTA,CACT,CChJA,SAASM,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACxS,MAAMmxB,EAAc,CACjC,YAAY/vB,EAAMgwB,EAAQ,CACxBxxB,GAAgB,KAAM,OAAQ,MAAM,EACpCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,uBAAwB,MAAM,EACpD,KAAK,KAAOwB,EACZ,KAAK,OAASgwB,EACd,KAAK,qBAAuB,EAC9B,CACA,iBAAkB,CAChB,KAAK,qBAAuB,EAC9B,CACF,CCfA,SAASxxB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,QAcvT,cAAuBorB,EAAa,CAClC,YAAYS,EAAe,CACzB,MAAK,EACLjsB,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,yBAA0B,MAAM,EACtDA,GAAgB,KAAM,oBAAqB,MAAM,EACjDA,GAAgB,KAAM,yBAA0B,MAAM,EACtD,KAAK,eAAiBisB,EACtB,KAAK,uBAAyB,KAC9B,KAAK,kBAAoB,KACzB,KAAK,GAAGT,GAAa,UAAW,KAAK,iBAAiB,KAAK,IAAI,CAAC,EAChE,KAAK,uBAAyB,KAAK,kBAAkB,KAAK,IAAI,EAC9DU,EAAE,MAAM,EAAE,GAAG,iBAAkB,KAAK,sBAAsB,CAC5D,CAKA,kBAAmB,CACjB,QAAStsB,EAAO,UAAU,OAAQ+rB,EAAO,IAAI,MAAM/rB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/E6rB,EAAK7rB,CAAI,EAAI,UAAUA,CAAI,EAEzB,KAAK,eAAe,aAAe6rB,EAAK,CAAC,IAAM,KAAK,wBACtD,KAAK,mBAAmBA,CAAI,EAE9B,KAAK,qBAAqBA,CAAI,EAG9B,KAAK,uBAAyB,KAC9B,KAAK,kBAAoB,IAC3B,CAOA,oBAAoBA,EAAM,CACxB,KAAK,uBAAyBA,EAAK,CAAC,EACpC,KAAK,KAAK,MAAM,KAAMA,CAAI,CAC5B,CAOA,kBAAkBpf,EAAO,CACvB,KAAK,kBAAoBA,EAAM,cAAc,KAC7C,KAAK,KAAK,MAAM,KAAMA,EAAM,cAAc,QAAQ,CACpD,CAQA,mBAAmBof,EAAM,CACvB,IAAI8F,EACAhG,EAAY,iBACZlf,GAASklB,EAAiB,OAAO,UAAY,MAAQA,IAAmB,OAAS,OAASA,EAAe,SAAS,YAAY,YAAY,EAC9IllB,EAAM,UAAUkf,EAAW,GAAM,EAAI,EACrClf,EAAM,UAAYkf,EAClBlf,EAAM,SAAWof,EACjBpf,EAAM,KAAO,KAAK,eAClB,OAAO,OAAO,cAAcA,CAAK,CACnC,CAOA,qBAAqBof,EAAM,CACzB,QAAStrB,EAAI,EAAGA,EAAI,KAAK,eAAe,YAAY,OAAQA,IAAK,CAC/D,IAAIqxB,EAAU,KAAK,eAAe,YAAYrxB,CAAC,EAAE,cAAa,EAC1DqxB,GAAWA,IAAY,KAAK,mBAC9BA,EAAQ,SAAS,oBAAoB/F,CAAI,CAE7C,CACF,CAKA,SAAU,CACRO,EAAE,MAAM,EAAE,IAAI,iBAAkB,KAAK,sBAAsB,CAC7D,CACF,ECjGO,SAASyF,GAAeC,EAAcrlB,EAAOslB,EAAS,CAC3D,OAAAD,EAAa,GAAGrlB,EAAOslB,CAAO,EACvB,IAAM,CACXD,EAAa,IAAIrlB,EAAOslB,CAAO,CACjC,CACF,CACO,SAASC,GAAmBvlB,EAAO,CACxC,MAAO,CAACqlB,EAAcC,IAAYF,GAAeC,EAAcrlB,EAAOslB,CAAO,CAC/E,CACO,SAASE,GAAiBxlB,EAAO,CACtC,OAAO,SAAUqlB,EAAc,CAC7B,QAAShyB,EAAO,UAAU,OAAQoyB,EAAa,IAAI,MAAMpyB,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IACxGkyB,EAAWlyB,EAAO,CAAC,EAAI,UAAUA,CAAI,EAEvC8xB,EAAa,KAAKrlB,EAAO,GAAGylB,CAAU,CACxC,CACF,CACO,SAASC,GAAwB1lB,EAAO,CAC7C,MAAO,CAACqlB,EAAcC,IAAY,CAChC,IAAIK,EAAkBxqB,SAAO,IAAI,EAC7ByqB,EAAazqB,SAAO,IAAM,EAAK,EACnC,GAAIwqB,EAAgB,SAAWN,GAAgBO,EAAW,SAAWN,EAAS,CAC5E,IAAIO,GACHA,EAAwBF,EAAgB,WAAa,MAAQE,IAA0B,QAAUA,EAAsB,IAAI7lB,EAAO4lB,EAAW,OAAO,EACrJP,GAAiB,MAAmCA,EAAa,GAAGrlB,EAAOslB,CAAO,CACpF,CACAK,EAAgB,QAAUN,EAC1BO,EAAW,QAAUN,EAKrBlqB,YAAU,IAAM,IAAM,CACpB,IAAI0qB,EACJ,OAAQA,EAAyBH,EAAgB,WAAa,MAAQG,IAA2B,OAAS,OAASA,EAAuB,IAAI9lB,EAAO4lB,EAAW,OAAO,CACzK,EAAG,EAAE,CACP,CACF,CAOO,SAASG,GAAmB/lB,EAAO,CACxC,MAAO,CACL,OAAQulB,GAAmBvlB,CAAK,EAChC,KAAMwlB,GAAiBxlB,CAAK,EAC5B,YAAa0lB,GAAwB1lB,CAAK,CAC9C,CACA,0bC1DA,SAASvM,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAmBxS,MAAMmyB,WAAsB/G,EAAa,CACtD,YAAYpG,EAAQoN,EAAYC,EAAUC,EAAezG,EAAe,CACtE,MAAK,EACLjsB,GAAgB,KAAM,gBAAiB,EAAK,EAC5CA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,gBAAiB,IAAI,EAC3CA,GAAgB,KAAM,MAAO,IAAI,EACjC,KAAK,QAAUolB,EACf,KAAK,YAAcoN,EACnB,KAAK,UAAYC,EACjB,KAAK,eAAiBC,EACtB,KAAK,eAAiBzG,EACtB,KAAK,cAAa,CACpB,CACA,UAAW,CACT,IAAI0G,EAAqBC,EAAsBvlB,EAAMwlB,EAAuBC,EAAqBC,EAAsBxW,EAAOyW,EAAwBC,EAAsBC,EAAsBC,EAClM,GAAI,KAAK,gBAAkB,GACzB,MAAM,IAAI,MAAM,iDAAiD,EAEnE,MAAO,CACL,WAAY,CACV,OAAQR,EAAsB,KAAK,cAAa,KAAQ,MAAQA,IAAwB,OAAS,OAASA,EAAoB,MAC9H,QAASC,EAAuB,KAAK,cAAa,KAAQ,MAAQA,IAAyB,OAAS,OAASA,EAAqB,OAClI,MAAOvlB,GAAQwlB,GAAyBC,EAAsB,KAAK,iBAAmB,MAAQA,IAAwB,OAAS,OAASA,EAAoB,WAAa,MAAQD,IAA0B,OAASA,GAAyBE,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,cAAgB,MAAQ1lB,IAAS,OAASA,EAAO,EACrZ,KAAMkP,GAASyW,GAA0BC,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,WAAa,MAAQD,IAA2B,OAASA,GAA0BE,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,aAAe,MAAQ3W,IAAU,OAASA,EAAQ,CACpa,EACM,SAAU4W,EAAuB,KAAK,cAAa,KAAQ,MAAQA,IAAyB,OAAS,OAASA,EAAqB,SAAQ,EAAG,QAC9I,SAAU,KAAK,UACf,cAAe,KAAK,cAC1B,CACE,CACA,eAAgB,CACd,IAAIC,EACJ,OAAQA,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,YACjI,CACA,WAAY,CACV,OAAO,KAAK,aACd,CACA,OAAQ,CACN,GAAI,KAAK,gBAAiB,CACxB,IAAIC,GACHA,EAAuB,KAAK,cAAa,KAAQ,MAAQA,IAAyB,QAAUA,EAAqB,cAAa,CACjI,KACE,IAAI,CACF,IAAIC,GACHA,EAAkB,KAAK,eAAiB,MAAQA,IAAoB,QAAUA,EAAgB,MAAK,CACtG,MAAY,CAAC,CAEjB,CAMA,OAAQ,CACN,IAAIC,EACQ,KAAK,eACjB,IAAIC,EAAc,KACdC,EAAa,KACjB,GAAI,KAAK,UAAW,CAClB,IAAIC,EAiBJ,GAPAF,EAActH,EAAE,OAAO,GAAM,IAAKwH,EAAuB,KAAK,cAAa,KAAQ,MAAQA,IAAyB,OAAS,OAASA,EAAqB,UAAU,EAAE,QAAQ,CAAC,EAChLD,EAAa,KAAK,eAAe,KAAK,aAAa,KAAK,SAAS,EAAE,CAAC,EAMhE,CAACA,EAAY,CACf,IAAIE,IACEA,EAAwB,KAAK,eAAe,KAAK,aAAa,UAAY,MAAQA,IAA0B,OAASA,EAAwB,GAAK,EACtJF,EAAa,KAAK,eAAe,KAAK,aAAa,CAAC,EAEpDA,EAAa,KAAK,eAAe,IAGrC,CACF,CACKD,KAGJD,EAAcE,KAAgB,MAAQF,IAAgB,QAAUA,EAAY,SAASC,EAAa,KAAK,cAAc,EACtH,KAAK,MAAK,EACZ,CAMA,eAAgB,CACd,IAAII,EAAM,KAAK,WAAU,EAMrB5G,EAAQ,KAAK,MAAM,KAAK,OAAM,EAAK,GAAO,EAAE,SAAS,EAAE,EAIvDlkB,EAAU,KAAK,wBAAwB,CACzC,MAAO,KAAK,YAAY,MACxB,OAAQ,KAAK,YAAY,OACzB,WAAY,KAAK,YAAY,MAC7B,YAAa,KAAK,YAAY,OAC9B,QAAS,KACT,QAAS,KACT,SAAU,KACV,YAAa,KACb,UAAW,MACX,WAAY,KACZ,OAAQ,IACd,CAAK,EAID,GADA,KAAK,cAAgB,OAAO,KAAK8qB,EAAK5G,EAAOlkB,CAAO,EAChD,CAAC,KAAK,cACR,GAAI,KAAK,eAAe,OAAO,SAAS,2BAA6B,GAAM,CACzE,IAAIrH,EAAQ,IAAI,MAAM,gBAAgB,EACtC,MAAAA,EAAM,KAAO,gBACPA,CACR,KACE,QAGJyqB,EAAE,KAAK,aAAa,EAAE,GAAG,OAAQ,KAAK,gBAAgB,KAAK,IAAI,CAAC,EAAE,GAAG,sBAAuB,KAAK,SAAS,KAAK,IAAI,CAAC,EAQpH,IAAI2H,EAAqB,OAAO,YAAY,IAAM,CAChD,IAAIC,GACCA,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,cAAgB,KAAK,cAAc,aAAa,gBAClK,KAAK,eAAc,EACnB,OAAO,cAAcD,CAAkB,EAE3C,EAAG,EAAE,CACP,CASA,wBAAwBE,EAAe,CACrC,IAAIC,EAAsB,GACxBlb,EACF,IAAKA,KAAOib,EACVC,EAAoB,KAAKlb,EAAM,IAAMib,EAAcjb,CAAG,CAAC,EAEzD,OAAOkb,EAAoB,KAAK,GAAG,CACrC,CAQA,YAAa,CACX,IAAI5O,EAAS,CACX,QAAS,KAAK,OACpB,EACQ6O,EAAa,oBAAsBnG,GAAW,EAClD1I,EAASiL,GAAajL,CAAM,EAC5B,GAAI,CACF,aAAa,QAAQ6O,EAAY,KAAK,UAAU7O,CAAM,CAAC,CACzD,OAASnlB,EAAG,CACV,MAAM,IAAI,MAAM,uCAAyCA,EAAE,SAAQ,CAAE,CACvE,CACA,IAAIi0B,EAAW,SAAS,SAAS,KAAK,MAAM,GAAG,EAG/C,OAAIA,EAAS,SAAW,EACfA,EAAS,CAAC,EAAI,cAAgBD,EAI9B,SAAS,SAAS,KAAO,cAAgBA,CAEpD,CAMA,iBAAkB,CAChB,IAAIE,EAAsBC,GACzBD,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,OAAO,KAAK,YAAY,KAAM,KAAK,YAAY,GAAG,GACjKC,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,MAAK,CACvH,CAMA,gBAAiB,CACf,IAAIC,EACJ,KAAK,cAAgB,IACpBA,EAAuB,KAAK,cAAa,KAAQ,MAAQA,IAAyB,QAAUA,EAAqB,GAAG,QAAS,KAAK,MAAO,IAAI,EAC9I,KAAK,KAAK,aAAa,CACzB,CAKA,UAAW,CACT,WAAW,KAAK,KAAK,KAAK,KAAM,QAAQ,EAAG,EAAE,CAC/C,CACF,CCxPA,SAASr0B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAexS,MAAMk0B,WAAkB9I,EAAa,CAClD,YAAY+I,EAAGC,EAAGC,EAAcxI,EAAeyI,EAAaC,EAAgB,CAC1E,IAAIC,EAAuBC,EAAwBC,EAAcC,EAAapB,EAAuBqB,EAAwBC,EAAqBC,EA0BlJ,GAzBA,MAAK,EACLl1B,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,eAAgB,MAAM,EAC5CA,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,QAAS,IAAI,EACnCA,GAAgB,KAAM,iBAAkB,IAAI,EAC5CA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,wBAAyB,MAAM,EACrDA,GAAgB,KAAM,YAAa,MAAM,EACzC,KAAK,cAAgBy0B,EACrB,KAAK,eAAiBxI,EACtB,KAAK,aAAeyI,EACpB,KAAK,gBAAkBC,EACvB,KAAK,cAAc,GAAG,OAAQ,KAAK,QAAS,IAAI,EAChD,KAAK,cAAc,GAAG,WAAY,KAAK,QAAS,IAAI,EAGhD,KAAK,aAAa,KAAO,KAAK,aAAa,IAAI,QAAS,CAC1D,IAAIQ,EAAuBC,EAC3B,KAAK,eAAe,mBAAmB,OAAOD,EAAwB,KAAK,aAAa,IAAI,QAAQ,WAAW,EAAI,KAAO,MAAQA,IAA0B,OAASA,EAAwB,CAAC,EAC9L,KAAK,eAAe,mBAAmB,QAAQC,EAAyB,KAAK,aAAa,IAAI,QAAQ,YAAY,EAAI,KAAO,MAAQA,IAA2B,OAASA,EAAyB,CAAC,CACrM,CAwBA,GAvBA,KAAK,QAAUlJ,EAAEoI,GAAU,SAAS,EAChCK,GAAkBA,EAAe,QACnC,KAAK,OAASA,EAAe,OAC7B,KAAK,QAAQ,SAAS,MAAQA,EAAe,KAAK,EAC9C,CAAC,QAAS,QAAQ,EAAE,QAAQA,EAAe,MAAM,SAAQ,CAAE,GAAK,GAAG,KAAK,QAAQ,KAAK,aAAa,EAAE,MAAM,KAAK,QAAQ,KAAK,YAAY,CAAC,GAE/I,KAAK,QAAQ,IAAI,CACf,KAAMJ,EACN,IAAKC,CACX,CAAK,EACD,KAAK,UAAY,KAAK,QAAQ,KAAK,SAAS,EAC5C,KAAK,UAAU,KAAK,QAAStG,IAAW0G,EAAwB,KAAK,aAAa,OAAO,SAAW,MAAQA,IAA0B,OAASA,EAAwB,EAAE,CAAC,EAC1K,KAAK,QAAQ,KAAK,WAAW,EAAE,MAAMC,EAAyB,KAAK,aAAa,OAAO,SAAW,MAAQA,IAA2B,OAASA,EAAyB,EAAE,EACzK,KAAK,sBAAwB,KAAK,QAAQ,KAAK,aAAa,EAC5D,KAAK,sBAAsB,OAAOH,EAAY,OAAO,EACrD,KAAK,YAAW,EAChB,KAAK,eAAe,qBAAoB,EACxCxI,EAAE,SAAS,IAAI,EAAE,OAAO,KAAK,OAAO,EAGpC,KAAK,eAAc,EAGf,CAAC,KAAK,aAAa,KAAO,KAAK,UAAU,OAAQ,CACnD,IAAImJ,EAAuBC,EAC3B,KAAK,eAAe,mBAAmB,OAAOD,EAAwB,KAAK,UAAU,WAAW,EAAI,KAAO,MAAQA,IAA0B,OAASA,EAAwB,CAAC,EAC/K,KAAK,eAAe,mBAAmB,QAAQC,EAAyB,KAAK,UAAU,YAAY,EAAI,KAAO,MAAQA,IAA2B,OAASA,EAAyB,CAAC,CACtL,CACA,IAAI/V,EAAS,KAAK,eAAe,UAAU,OAAM,EACjD,KAAK,OAASuV,EAAevV,GAAW,KAA4B,OAASA,EAAO,QAAU,MAAQuV,IAAiB,OAASA,EAAe,EAC/I,KAAK,OAASC,EAAcxV,GAAW,KAA4B,OAASA,EAAO,OAAS,MAAQwV,IAAgB,OAASA,EAAc,EAC3I,KAAK,QAAUpB,EAAwB,KAAK,eAAe,UAAU,MAAK,KAAQ,MAAQA,IAA0B,OAASA,EAAwB,GAAK,KAAK,MAC/J,KAAK,QAAUqB,EAAyB,KAAK,eAAe,UAAU,OAAM,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,GAAK,KAAK,MACnK,KAAK,QAAUC,EAAsB,KAAK,QAAQ,MAAK,KAAQ,MAAQA,IAAwB,OAASA,EAAsB,EAC9H,KAAK,SAAWC,EAAuB,KAAK,QAAQ,OAAM,KAAQ,MAAQA,IAAyB,OAASA,EAAuB,EACnI,KAAK,iBAAiBX,EAAGC,CAAC,EAC1B,KAAK,eAAe,KAAK,eAAgB,KAAK,YAAY,CAC5D,CAWA,QAAQe,EAASC,EAASjpB,EAAO,CAC/B,IAAIkjB,EAAcC,EACd6E,GAAK9E,EAAeljB,EAAM,SAAW,MAAQkjB,IAAiB,OAASA,EAAe,EACtF+E,GAAK9E,EAAenjB,EAAM,SAAW,MAAQmjB,IAAiB,OAASA,EAAe,EACtF+F,EAAoBlB,EAAI,KAAK,OAASA,EAAI,KAAK,OAASC,EAAI,KAAK,OAASA,EAAI,KAAK,MACnF,CAACiB,GAAqB,KAAK,eAAe,OAAO,SAAS,2BAA6B,IAG3F,KAAK,iBAAiBlB,EAAGC,CAAC,CAC5B,CAQA,iBAAiBD,EAAGC,EAAG,CACrB,KAAK,QAAQ,IAAI,CACf,KAAMD,EACN,IAAKC,CACX,CAAK,EACD,KAAK,MAAQ,KAAK,eAAe,UAAUD,EAAGC,CAAC,EAC3C,KAAK,QAAU,OACjB,KAAK,eAAiB,KAAK,MAC3B,KAAK,MAAM,YAAY,oBAAoBD,EAAGC,EAAG,KAAK,KAAK,EAE/D,CAMA,SAAU,CACR,IAAIkB,GACHA,EAAyB,KAAK,eAAe,uBAAyB,MAAQA,IAA2B,QAAUA,EAAuB,KAAI,EAK3I,KAAK,QAAU,KACjB,KAAK,MAAM,YAAY,SAAS,KAAK,aAAc,KAAK,KAAK,EAMpD,KAAK,iBAAmB,KACjC,KAAK,eAAe,YAAY,SAAS,KAAK,aAAc,KAAK,cAAc,EAOtE,KAAK,gBACd,KAAK,gBAAgB,SAAS,KAAK,YAAY,EAQ/C,KAAK,aAAa,UAAS,EAE7B,KAAK,cAAc,IAAI,OAAQ,KAAK,QAAS,IAAI,EACjD,KAAK,cAAc,IAAI,WAAY,KAAK,QAAS,IAAI,EACrD,KAAK,QAAQ,OAAM,EACnB,KAAK,eAAe,KAAK,cAAe,KAAK,YAAY,CAC3D,CAKA,aAAc,CAIR,KAAK,aAAa,QACpB,KAAK,aAAa,OAAO,YAAY,KAAK,aAAc,EAAI,EAE9D,KAAK,aAAa,YAAY,IAAI,CACpC,CAKA,gBAAiB,CACf,IAAIlD,EAAa,KAAK,eAAe,OAAO,WACxC7S,EAAQ6S,EAAW,eACnBpV,EAASoV,EAAW,gBACxB,KAAK,QAAQ,MAAM7S,CAAK,EACxB,KAAK,QAAQ,OAAOvC,CAAM,EAC1BuC,GAAS,KAAK,OAAS6S,EAAW,aAAe,EACjDpV,GAAW,KAAK,OAAmC,EAA1BoV,EAAW,aACpC,KAAK,sBAAsB,MAAM7S,CAAK,EACtC,KAAK,sBAAsB,OAAOvC,CAAM,EACxC,KAAK,aAAa,QAAQ,MAAMuC,CAAK,EACrC,KAAK,aAAa,QAAQ,OAAOvC,CAAM,EACvC,KAAK,aAAa,cAAc,QAAQ,EACxC,KAAK,aAAa,cAAc,SAAS,CAC3C,CACF,CACApd,GAAgBs0B,GAAW,YAAa,qOAAkR,EC1M1T,SAASt0B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAYxS,MAAMu1B,EAAW,CAC9B,YAAYjrB,EAASkrB,EAAY3J,EAAe,CAC9CjsB,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,gBAAiB,MAAM,EAC7C,KAAK,SAAW0K,EAChB,KAAK,YAAckrB,EACnB,KAAK,eAAiB3J,EACtB,KAAK,cAAgB,KAAK,oBAAmB,CAC/C,CAKA,qBAAsB,CACpB,YAAK,cAAgB,IAAIkC,GAAa,KAAK,SAAU,EAAI,EACzD,KAAK,cAAc,GAAG,YAAa,KAAK,aAAc,IAAI,EAC1D,KAAK,cAAc,GAAG,WAAY,KAAK,oBAAqB,IAAI,EACzD,KAAK,aACd,CAQA,aAAaoG,EAAGC,EAAG,CACjB,IAAIoB,EAAa,KAAK,YAClB,OAAOA,GAAe,aACxBA,EAAaA,EAAU,GAEtB,IAAClB,EAAc,KAAK,eAAe,uBAAuBxI,EAAE,OAAO,GAAM,GAAI0J,CAAU,CAAC,EAC7E,IAAItB,GAAUC,EAAGC,EAAG,KAAK,cAAe,KAAK,eAAgBE,EAAa,IAAI,CAC9F,CACF,CClDA,SAAS10B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAYxS,MAAMy1B,EAAoB,CACvC,YAAYD,EAAY3J,EAAe1f,EAAO,CAC5CvM,GAAgB,KAAM,WAAYksB,EAAE,MAAM,CAAC,EAE3ClsB,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,gBAAiB,MAAM,EAC7C,KAAK,YAAc41B,EACnB,KAAK,eAAiB3J,EACtB,KAAK,oBAAoB1f,CAAK,CAChC,CAKA,oBAAoBA,EAAO,CACrB,KAAK,eACP,KAAK,cAAc,QAAO,EAEvB,KAAK,WAGV,KAAK,cAAgB,IAAI4hB,GAAa,KAAK,SAAU,EAAI,EACzD,KAAK,cAAc,GAAG,YAAa,KAAK,aAAc,IAAI,EAC1D,KAAK,cAAc,GAAG,WAAY,KAAK,SAAU,IAAI,EAGrD,KAAK,cAAc,YAAY5hB,CAAK,EACpC,KAAK,cAAc,WAAU,EAC/B,CACA,UAAW,CACT,KAAK,cAAgB,OACrB,KAAK,SAAW,OAChB,KAAK,YAAc,OACnB,KAAK,eAAiB,MACxB,CAQA,aAAagoB,EAAGC,EAAG,CACjB,GAAI,GAAC,KAAK,eAAiB,CAAC,KAAK,gBAGjC,KAAIoB,EAAa,KAAK,YAClB,OAAOA,GAAe,aACxBA,EAAaA,EAAU,GAEzB,IAAIlB,EAAc,KAAK,eAAe,uBAAuBxI,EAAE,OAAO,GAAM,GAAI0J,CAAU,CAAC,EAC3F,IAAItB,GAAUC,EAAGC,EAAG,KAAK,cAAe,KAAK,eAAgBE,EAAa,IAAI,EAChF,CACF,CCpEA,SAAS10B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAExS,MAAM01B,EAAoB,CACvC,aAAc,CACZ91B,GAAgB,KAAM,UAAWksB,EAAE4J,GAAoB,SAAS,CAAC,EACjE5J,EAAE,SAAS,IAAI,EAAE,OAAO,KAAK,OAAO,CACtC,CACA,SAAU,CACR,KAAK,QAAQ,OAAM,CACrB,CACA,cAAc6J,EAAM,CAClB,KAAK,QAAQ,IAAI,CACf,KAAMA,EAAK,GACX,IAAKA,EAAK,GAEV,MAAO,KAAK,MAAMA,EAAK,GAAKA,EAAK,EAAE,EACnC,OAAQ,KAAK,MAAMA,EAAK,GAAKA,EAAK,EAAE,CAC1C,CAAK,EAAE,KAAI,CACT,CACA,MAAO,CACL,KAAK,QAAQ,KAAI,CACnB,CACF,CACA/1B,GAAgB81B,GAAqB,YAAa,wEAAwE,ECzB1H,SAAS91B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAExS,MAAM41B,EAAa,CAChC,YAAYryB,EAAQwiB,EAAO8P,EAAU9iB,EAAQ,CAC3CnT,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,UAAW,MAAM,EACvC,KAAK,QAAU2D,EACf,KAAK,QAAUuoB,EAAE,cAAgB+J,EAAW,YAAc9P,EAAQ,SAAS,EAC3E,KAAK,QAAQ,GAAG,UAAW,KAAK,UAAW,IAAI,EAC/C,KAAK,QAAUhT,EACf,KAAK,QAAQ,GAAG,QAAS,KAAK,OAAO,EACrC,KAAK,QAAQ,kBAAkB,OAAO,KAAK,OAAO,CACpD,CACA,WAAY,CACV,KAAK,QAAQ,IAAG,EAChB,KAAK,QAAQ,OAAM,CACrB,CACF,CCpBA,SAASnT,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAM81B,WAA2B,KAAM,CACrC,YAAYhxB,EAASixB,EAAM,CACzB,MAAK,EACLn2B,GAAgB,KAAM,OAAQ,MAAM,EACpC,KAAK,KAAO,sBACZ,KAAK,QAAUkF,EACf,KAAK,KAAOixB,CACd,CACF,2HCXA,SAASn2B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAIhT,SAASg2B,GAAQtxB,EAAM,CAC5B,OAAOA,EAAK,OACd,CACO,SAASuxB,GAAYvxB,EAAM,CAChC,OAAOA,EAAK,WACd,CACO,SAASwxB,GAAOxxB,EAAM,CAC3B,OAAOA,EAAK,MACd,CAsBe,MAAMyxB,WAA4B/K,EAAa,CAC5D,YAAYS,EAAe7G,EAAQta,EAAQJ,EAAS,CAClD,MAAK,EACL1K,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,OAAQ,MAAM,EACpCA,GAAgB,KAAM,eAAgB,MAAM,EAC5CA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,wBAAyB,MAAM,EACrDA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,gBAAiB,EAAK,EAC5CA,GAAgB,KAAM,cAAe,EAAK,EAC1CA,GAAgB,KAAM,SAAU,EAAK,EACrCA,GAAgB,KAAM,QAAS,EAAK,EACpCA,GAAgB,KAAM,WAAY,EAAK,EACvCA,GAAgB,KAAM,UAAW,EAAK,EACtCA,GAAgB,KAAM,cAAe,EAAK,EAC1CA,GAAgB,KAAM,MAAO,MAAM,EACnCA,GAAgB,KAAM,4BAA6B,MAAM,EACzDA,GAAgB,KAAM,mBAAoB,MAAM,EAChD,KAAK,QAAU0K,EAGf,KAAK,OAAS,KAAK,gBAAgB0a,CAAM,EACzC,KAAK,KAAOA,EAAO,KACnB,KAAK,aAAe,GACpB,KAAK,OAASta,EACd,KAAK,cAAgBmhB,EACrB,KAAK,0BAA4B,GACjC,KAAK,iBAAmB,CAAC,cAAc,EACvC,KAAK,GAAGT,GAAa,UAAW,KAAK,gBAAiB,IAAI,EACtDpG,EAAO,SACT,KAAK,oBAAoBA,CAAM,CAEnC,CAgBA,cAAcoR,EAAc,CAC1B,IAAIC,EAAoB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxFC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/EC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC/ED,IAAa,IAAQC,IAAa,IACpC,KAAKH,CAAY,EAAE,MAAM,KAAMC,CAAiB,EAElD,QAASp2B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IAC5C,KAAK,aAAaA,CAAC,EAAE,cAAcm2B,EAAcC,EAAmBC,CAAQ,EAE1EA,IAAa,IAAQC,IAAa,IACpC,KAAKH,CAAY,EAAE,MAAM,KAAMC,CAAiB,CAEpD,CAOA,YAAY/B,EAAa,CACvB,IAAIkC,EACAC,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAIhFvxB,EAAQ,KAAK,aAAa,QAAQovB,CAAW,EAKjD,GAAIpvB,IAAU,GACZ,MAAM,IAAI,MAAM,+CAA+C,EAuBjE,GAjBIuxB,IAAc,IAChB,KAAK,aAAavxB,CAAK,EAAE,UAAS,EAMpC,KAAK,aAAa,OAAOA,EAAO,CAAC,GAKhCsxB,EAAuB,KAAK,OAAO,WAAa,MAAQA,IAAyB,QAAUA,EAAqB,OAAOtxB,EAAO,CAAC,EAK5H,KAAK,aAAa,OAAS,EAC7B,KAAK,cAAc,SAAS,UAKnB,KAAK,OAAS,QAAU,KAAK,OAAO,WAAY,CACzD,IAAIwxB,GACHA,EAAe,KAAK,UAAY,MAAQA,IAAiB,QAAUA,EAAa,YAAY,IAAI,CACnG,CACF,CAUA,SAASpC,EAAapvB,EAAO,CAC3BovB,EAAc,KAAK,cAAc,uBAAuBA,EAAa,IAAI,EACrEpvB,IAAU,SACZA,EAAQ,KAAK,aAAa,QAE5B,KAAK,aAAa,OAAOA,EAAO,EAAGovB,CAAW,EAC1C,KAAK,OAAO,UAAY,SAC1B,KAAK,OAAO,QAAU,IAExB,KAAK,OAAO,QAAQ,OAAOpvB,EAAO,EAAGovB,EAAY,MAAM,EACvDA,EAAY,OAAS,KACjBA,EAAY,OAAO,gBAAkB,IAAQA,EAAY,gBAAkB,IAC7EA,EAAY,OAAM,CAEtB,CASA,aAAaqC,EAAUC,EAAU,CAC/B,IAAIC,EAAoB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5FD,EAAW,KAAK,cAAc,uBAAuBA,CAAQ,EAC7D,IAAI1xB,EAAQ,KAAK,aAAa,QAAQyxB,CAAQ,EAC1CG,EAAaH,EAAS,QAAQ,CAAC,EAAE,WACrC,GAAIzxB,IAAU,GACZ,MAAM,IAAI,MAAM,oDAAoD,EAEtE4xB,GAAe,MAAiCA,EAAW,aAAaF,EAAS,QAAQ,CAAC,EAAGD,EAAS,QAAQ,CAAC,CAAC,EAK5GE,IAAsB,KACxBF,EAAS,OAAS,KAClBA,EAAS,UAAS,GAMpB,KAAK,aAAazxB,CAAK,EAAI0xB,EAC3BA,EAAS,OAAS,KAKdZ,GAAQ,IAAI,IACd,KAAK,OAAO,KAAK9wB,CAAK,EAAE,YAAc0xB,GAIpCA,EAAS,OAAO,gBAAkB,IAAQA,EAAS,gBAAkB,IACvEA,EAAS,OAAM,EAEjB,KAAK,cAAc,SAAS,CAC9B,CAMA,QAAS,CACP,IAAIG,GACHA,EAAgB,KAAK,UAAY,MAAQA,IAAkB,QAAUA,EAAc,YAAY,IAAI,CACtG,CAMA,QAAS,CACP,IAAIC,EAAgB,KAAK,cAAc,aAAa,IAAI,EACxD,YAAK,kBAAkB,cAAc,EAC9BA,CACT,CAKA,eAAe,EAAG,CAChB,GAAK,EAAE,eAAc,EACjB,KAAK,cAAgB,GACvB,KAAK,cAAc,eAAe,IAAI,EAEtC,KAAK,cAAc,eAAe,IAAI,EAExC,KAAK,YAAc,CAAC,KAAK,YACzB,KAAK,kBAAkB,cAAc,CACvC,CAKA,QAAS,CACH,KAAK,cAAc,eAAiB,OACtC,KAAK,cAAc,WAAW,KAAM,EAAI,EACxC,KAAK,QAAQ,SAAS,aAAa,EAEvC,CAKA,UAAW,CACL,KAAK,cAAc,eAAiB,OACtC,KAAK,cAAc,aAAe,KAClC,KAAK,QAAQ,YAAY,aAAa,EAE1C,CAMA,SAASpK,EAAO,CACd,KAAK,OAAO,MAAQA,EACpB,KAAK,KAAK,eAAgBA,CAAK,EAC/B,KAAK,kBAAkB,cAAc,CACvC,CAOA,MAAM/V,EAAI,CACR,GAAK,KAAK,OAAO,GAEV,IAAI,OAAO,KAAK,OAAO,IAAO,SACnC,OAAO,KAAK,OAAO,KAAOA,EACrB,GAAI,KAAK,OAAO,cAAc,MACnC,OAAO,KAAK,OAAO,GAAG,QAAQA,CAAE,IAAM,OAJtC,OAAO,EAMX,CAOA,MAAMA,EAAI,CACJ,KAAK,MAAMA,CAAE,IAGZ,KAAK,OAAO,GAEN,OAAO,KAAK,OAAO,IAAO,SACnC,KAAK,OAAO,GAAK,CAAC,KAAK,OAAO,GAAIA,CAAE,EAC3B,KAAK,OAAO,cAAc,OACnC,KAAK,OAAO,GAAG,KAAKA,CAAE,EAJtB,KAAK,OAAO,GAAKA,EAMrB,CAOA,SAASA,EAAI,CACX,GAAI,CAAC,KAAK,MAAMA,CAAE,EAChB,MAAM,IAAI,MAAM,cAAc,EAEhC,GAAI,OAAO,KAAK,OAAO,IAAO,SAC5B,OAAO,KAAK,OAAO,WACV,KAAK,OAAO,cAAc,MAAO,CAC1C,IAAI3R,EAAQ,KAAK,OAAO,GAAG,QAAQ2R,CAAE,EACrC,KAAK,OAAO,GAAG,OAAO3R,EAAO,CAAC,CAChC,CACF,CAKA,iBAAiB+xB,EAAQ,CACvB,IAAIp1B,EAAS,GACTf,EAAQ,SAAcwzB,EAAa,CACrC,QAASr0B,EAAI,EAAGA,EAAIq0B,EAAY,aAAa,OAAQr0B,IAC/Cg3B,EAAO3C,EAAY,aAAar0B,CAAC,CAAC,IAAM,IAC1C4B,EAAO,KAAKyyB,EAAY,aAAar0B,CAAC,CAAC,EAEzCa,EAAMwzB,EAAY,aAAar0B,CAAC,CAAC,CAErC,EACA,OAAAa,EAAM,IAAI,EACHe,CACT,CACA,aAAagV,EAAI,CACf,OAAO,KAAK,iBAAiB,SAAUnS,EAAM,CAC3C,OAAIA,EAAK,OAAO,cAAc,MACrBA,EAAK,OAAO,GAAG,QAAQmS,CAAE,IAAM,GAE/BnS,EAAK,OAAO,KAAOmS,CAE9B,CAAC,CACH,CACA,eAAe3H,EAAM,CACnB,OAAO,KAAK,qBAAqB,OAAQA,CAAI,CAC/C,CACA,oBAAoB0gB,EAAe,CAGjC,QAFI1oB,EAAa,KAAK,qBAAqB,gBAAiB0oB,CAAa,EACrEsH,EAAY,GACP,EAAI,EAAG,EAAIhwB,EAAW,OAAQ,IACrCgwB,EAAU,KAAKhwB,EAAW,CAAC,EAAE,QAAQ,EAEvC,OAAOgwB,CACT,CAKA,qBAAqBxe,EAAKpZ,EAAO,CAC/B,OAAO,KAAK,iBAAiB,SAAUoF,EAAM,CAC3C,OAAOA,EAAKgU,CAAG,IAAMpZ,CACvB,CAAC,CACH,CACA,YAAYoL,EAAQ,CAClB,KAAK,OAASA,CAChB,CACA,oBAAoBypB,EAAGC,EAAGuB,EAAM,CAC9B,IAAIwB,GACHA,EAAwB,KAAK,cAAc,uBAAyB,MAAQA,IAA0B,QAAUA,EAAsB,cAAcxB,CAAI,CAC3J,CACA,SAASrB,EAAaqB,EAAM,CAC1B,KAAK,SAASrB,CAAW,CAC3B,CACA,QAAS,CACP,KAAK,wBAAwB,MAAM,EACnC,KAAK,QAAQ,KAAI,EACjB,KAAK,cAAc,WAAU,CAC/B,CACA,QAAS,CACP,KAAK,wBAAwB,MAAM,EACnC,KAAK,QAAQ,KAAI,EACjB,KAAK,cAAc,WAAU,CAC/B,CACA,wBAAwB8C,EAAY,CAGlC,QAFIC,EAAS,KAAK,eAAe,OAAO,EACpCC,EAAoB,KACf,EAAI,EAAG,EAAID,EAAO,OAAQ,IACjCC,EAAoBD,EAAO,CAAC,EAAE,qBAAoB,EAC9CC,GAAqBrB,GAAYqB,CAAiB,GACpDA,EAAkB,UAAUF,CAAU,EAAC,CAG7C,CAKA,WAAY,CACV,KAAK,kBAAkB,qBAAqB,EAC5C,KAAK,cAAc,YAAa,GAAI,GAAM,EAAI,EAC9C,KAAK,QAAQ,OAAM,EACnB,KAAK,kBAAkB,eAAe,CACxC,CAaA,UAAU9sB,EAAS,CACjB,IAAIitB,EAAiBC,EAAgBC,EACrCntB,EAAUA,GAAW,KAAK,QAC1B,IAAI6U,GAAUoY,EAAkBjtB,EAAQ,OAAM,KAAQ,MAAQitB,IAAoB,OAASA,EAAkB,CAC3G,KAAM,EACN,IAAK,CACX,EACQhY,GAASiY,EAAiBltB,EAAQ,WAAa,MAAQktB,IAAmB,OAASA,EAAiB,EACpGxa,GAAUya,EAAkBntB,EAAQ,YAAc,MAAQmtB,IAAoB,OAASA,EAAkB,EAC7G,MAAO,CACL,GAAItY,EAAO,KACX,GAAIA,EAAO,IACX,GAAIA,EAAO,KAAOI,EAClB,GAAIJ,EAAO,IAAMnC,EACjB,QAASuC,EAAQvC,EACjB,YAAa,KACb,KAAM,EACZ,CACE,CASA,QAAS,CACP,KAAK,QAAO,EACZ,QAAS/c,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IAAK,CACjD,IAAIy3B,GACHA,EAAwB,KAAK,yBAA2B,MAAQA,IAA0B,QAAUA,EAAsB,OAAO,KAAK,aAAaz3B,CAAC,EAAE,OAAO,CAChK,CACA,KAAK,cAAgB,GACrB,KAAK,kBAAkB,aAAa,EACpC,KAAK,kBAAkB,KAAK,KAAO,SAAS,CAC9C,CAOA,kBAAkBmB,EAAM,CACtB,IAAI+K,EAAQ,IAAIglB,GAAc/vB,EAAM,IAAI,EACxC,KAAK,KAAKA,EAAM+K,CAAK,CACvB,CAOA,oBAAoB6Y,EAAQ,CAC1B,IAAI2S,EACJ,GAAI,EAAE3S,EAAO,mBAAmB,OAC9B,MAAM,IAAI8Q,GAAmB,2BAA4B9Q,CAAM,EAEjE,QAAS/kB,EAAI,EAAGA,EAAI+kB,EAAO,QAAQ,OAAQ/kB,IACzC03B,EAAe,KAAK,cAAc,kBAAkB3S,EAAO,QAAQ/kB,CAAC,EAAG,IAAI,EAC3E,KAAK,aAAa,KAAK03B,CAAY,CAEvC,CAOA,gBAAgB3S,EAAQ,CACtB,OAAS,CAACtM,EAAKpZ,CAAK,IAAK,OAAO,QAAQ6rB,EAAiB,EAAG,CAE1D,IAAIyM,EAAIlf,EACJsM,EAAO4S,CAAC,IAAM,SAChB5S,EAAO4S,CAAC,EAAIt4B,EAEhB,CACA,OAAO0lB,CACT,CASA,gBAAgB5jB,EAAM+K,EAAO,CACvBA,aAAiBglB,IAAiBhlB,EAAM,uBAAyB,IAAS,KAAK,gBAAkB,KAO/F,KAAK,SAAW,IAAS,KAAK,OAChC,KAAK,OAAO,KAAK,MAAM,KAAK,OAAQ,CAAC/K,EAAM+K,CAAK,CAAC,EAEjD,KAAK,yCAAyC/K,EAAM+K,CAAK,EAG/D,CASA,yCAAyC/K,EAAM+K,EAAO,CAChD,KAAK,iBAAiB,QAAQ/K,CAAI,IAAM,GAC1C,KAAK,cAAc,KAAKA,EAAM+K,EAAM,MAAM,EAEtC,KAAK,0BAA0B/K,CAAI,IAAM,KAC3C,KAAK,0BAA0BA,CAAI,EAAI,GACvCksB,GAAU,KAAK,+BAA+B,KAAK,KAAMlsB,EAAM+K,CAAK,CAAC,EAG3E,CAOA,+BAA+B/K,EAAM+K,EAAO,CAC1C,KAAK,0BAA0B/K,CAAI,EAAI,GACvC,KAAK,cAAc,KAAKA,EAAM+K,CAAK,CACrC,CACF,CCnjBA,SAASvM,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAUxS,MAAMiK,WAAkBksB,EAAoB,CACzD,YAAYtK,EAAe7G,EAAQta,EAAQ,CACzC,IAAImtB,EAEJ,OAAO,SAASA,EAAwBhM,EAAc,OAAO,SAAS,0BAA4B,MAAQgM,IAA0B,OAASA,EAAwB,EAAE,EAAE,QAAQ5qB,GAAQ,CACvL,GAAI,CAAC2qB,EAAGE,CAAC,EAAI7qB,EAET+X,EAAO4S,CAAC,IAAM,SAEhB5S,EAAO4S,CAAC,EAAIE,EAEhB,CAAC,EACD,MAAMjM,EAAe7G,EAAQta,EAAQohB,EAAC,CAAE,EACxClsB,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,OAASolB,EACd,KAAK,OAASta,EACd,IAAIqtB,EAAuBlM,EAAc,aAAa,KAAK,OAAO,aAAa,GAAKA,EAAc,qBAAoB,EACpHmM,EAAkBlM,EAAE,OAAO,GAAM,GAAI,KAAK,OAAO,gBAAkB,EAAE,EACvE,GAAIiM,GAAwB,KAC1B,MAAM,IAAIjC,GAAmB,sBAAwB,KAAK,OAAO,cAAgB,GAAG,EAEtFkC,EAAgB,cAAgB,KAAK,OAAO,cAC5C,KAAK,cAAgB,KAAK,OAAO,cAC7B,KAAK,OAAO,QAAU,KACxB,KAAK,OAAO,MAAQ,KAAK,OAAO,eAElC,KAAK,YAAc,GACnB,KAAK,UAAY,IAAIpM,GAAc,KAAK,OAAQ,KAAMC,CAAa,EACnE,KAAK,SAAW,IAAIkM,EAAqB,KAAK,UAAWC,CAAe,EACxE,KAAK,QAAU,KAAK,UAAU,QAChC,CACA,OAAQ,CACN,IAAItB,GACHA,EAAe,KAAK,UAAY,MAAQA,IAAiB,QAAUA,EAAa,YAAY,IAAI,CACnG,CACA,SAAU,CACJ,KAAK,QAAQ,GAAG,UAAU,GAE5B,KAAK,UAAU,UAAU,KAAK,QAAQ,MAAK,EAAI,KAAK,QAAQ,QAAQ,CAExE,CACA,QAAS,CACPP,GAAoB,UAAU,OAAO,KAAK,IAAI,EAC9C,KAAK,UAAU,KAAK,MAAM,CAC5B,CACA,QAAS,CACP,KAAK,UAAU,KAAI,EACnBA,GAAoB,UAAU,OAAO,KAAK,IAAI,CAChD,CACA,OAAO8B,EAAY,CACjB,KAAK,UAAU,KAAI,GACf,KAAK,UAAU,QAAQ,eAAiBA,IAG1C,KAAK,UAAU,gBAAgB,CAAC,EAAE,MAAM,CACtC,cAAe,EACvB,CAAO,EAEH9B,GAAoB,UAAU,OAAO,KAAK,IAAI,CAChD,CACA,WAAY,CACV,KAAK,UAAU,KAAK,UAAW,IAAI,EACnCA,GAAoB,UAAU,UAAU,KAAK,IAAI,CACnD,CAOA,WAAY,CACV,OAAO,IACT,CACF,CCzFA,SAASv2B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAKxS,MAAMk4B,WAAoB/B,EAAoB,CAC3D,YAAYgC,EAAUtM,EAAe7G,EAAQta,EAAQ,CACnD,MAAMmhB,EAAe7G,EAAQta,EAAQohB,EAAE,2BAA6BqM,EAAW,SAAW,OAAS,UAAU,CAAC,EAC9Gv4B,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,wBAAyB,MAAM,EACrDA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,YAAa,EAAE,EACrCA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,oBAAqB,MAAM,EACjDA,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,oBAAqB,IAAI,EAC/CA,GAAgB,KAAM,uBAAwB,IAAI,EAClDA,GAAgB,KAAM,uBAAwB,IAAI,EAClD,KAAK,OAAS8K,EACd,KAAK,MAAQ,CAACytB,EACd,KAAK,SAAWA,EAChB,KAAK,sBAAwB,KAAK,QAClC,KAAK,cAAgBtM,EAAc,OAAO,WAAW,YACrD,KAAK,kBAAoBA,EAAc,OAAO,WAAW,gBACzD,KAAK,UAAYsM,EACjB,KAAK,WAAaA,EAAW,SAAW,QACxC,KAAK,kBAAoB,KACzB,KAAK,qBAAuB,KAC5B,KAAK,qBAAuB,IAC9B,CAYA,SAAS7D,EAAapvB,EAAOkzB,EAAiB,CAC5C,IAAIC,EAAaC,EAAUr4B,EAAGs4B,EAmB9B,GAlBAjE,EAAc,KAAK,cAAc,uBAAuBA,EAAa,IAAI,EACrEpvB,IAAU,SACZA,EAAQ,KAAK,aAAa,QAExB,KAAK,aAAa,OAAS,GAC7BqzB,EAAkB,KAAK,gBAAgB,KAAK,IAAI,EAAGrzB,EAAQ,CAAC,CAAC,EAAE,QAC3DA,EAAQ,GACV,KAAK,aAAaA,EAAQ,CAAC,EAAE,QAAQ,MAAMqzB,CAAe,EAC1DA,EAAgB,MAAMjE,EAAY,OAAO,IAEzC,KAAK,aAAa,CAAC,EAAE,QAAQ,OAAOiE,CAAe,EACnDA,EAAgB,OAAOjE,EAAY,OAAO,IAG5C,KAAK,sBAAsB,OAAOA,EAAY,OAAO,EAEvD6B,GAAoB,UAAU,SAAS,KAAK,KAAM7B,EAAapvB,CAAK,EACpEmzB,EAAc,EAAI,KAAK,aAAa,OAAS,IACzCD,IAAoB,GAAM,CAC5B,KAAK,kBAAkB,cAAc,EACrC,MACF,CACA,IAAKn4B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IACxC,GAAI,KAAK,aAAaA,CAAC,IAAMq0B,EAC3BA,EAAY,OAAO,KAAK,UAAU,EAAI+D,MACjC,CACL,IAAIG,EACJF,IAAaE,EAAwB,KAAK,aAAav4B,CAAC,EAAE,OAAO,KAAK,UAAU,KAAO,MAAQu4B,IAA0B,OAASA,EAAwB,IAAM,IAAMH,GAAe,IACrL,KAAK,aAAap4B,CAAC,EAAE,OAAO,KAAK,UAAU,EAAIq4B,CACjD,CAEF,KAAK,cAAc,SAAS,EAC5B,KAAK,kBAAkB,cAAc,CACvC,CAQA,YAAYhE,EAAamC,EAAW,CAClC,IAAIgC,EACAC,GAAmBD,EAAwBnE,EAAY,OAAO,KAAK,UAAU,KAAO,MAAQmE,IAA0B,OAASA,EAAwB,EACzJvzB,EAAQ,KAAK,aAAa,QAAQovB,CAAW,EAC7CqE,EAAgB,KAAK,IAAIzzB,EAAQ,EAAG,CAAC,EACrCjF,EACA24B,EACF,GAAI1zB,IAAU,GACZ,MAAM,IAAI,MAAM,oEAAoE,EAetF,IARI,KAAK,UAAUyzB,CAAa,IAC9B,KAAK,UAAUA,CAAa,EAAE,UAAS,EACvC,KAAK,UAAU,OAAOA,EAAe,CAAC,GAMnC14B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IACxC,GAAI,KAAK,aAAaA,CAAC,IAAMq0B,EAAa,CACxC,IAAIuE,EACJ,KAAK,aAAa54B,CAAC,EAAE,OAAO,KAAK,UAAU,IAAM44B,EAAyB,KAAK,aAAa54B,CAAC,EAAE,OAAO,KAAK,UAAU,KAAO,MAAQ44B,IAA2B,OAASA,EAAyB,GAAKH,GAAmB,KAAK,aAAa,OAAS,EACtP,CAGF,GADAvC,GAAoB,UAAU,YAAY,KAAK,KAAM7B,EAAamC,CAAS,EACvE,KAAK,aAAa,SAAW,GAAK,KAAK,OAAO,aAAe,GAAM,CACrE,IAAIC,EACJkC,EAAY,KAAK,aAAa,CAAC,EAC/B,KAAK,aAAe,IACnBlC,EAAe,KAAK,UAAY,MAAQA,IAAiB,QAAUA,EAAa,aAAa,KAAMkC,EAAW,EAAI,CACrH,MACE,KAAK,cAAc,SAAS,EAC5B,KAAK,kBAAkB,cAAc,CAEzC,CASA,aAAajC,EAAUC,EAAU,CAC/B,IAAIkC,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtFC,EAAOpC,EAAS,OAAO,KAAK,UAAU,EAC1CC,EAAS,OAAO,KAAK,UAAU,EAAImC,EACnC,MAAM,aAAapC,EAAUC,EAAUkC,CAAe,EACtD,KAAK,cAAc,SAAS,EAC5B,KAAK,kBAAkB,cAAc,CACvC,CAKA,SAAU,CACJ,KAAK,aAAa,OAAS,IAC7B,KAAK,wBAAuB,EAC5B,KAAK,kBAAiB,GAExB,KAAK,kBAAkB,cAAc,EACrC,KAAK,KAAK,QAAQ,CACpB,CAOA,QAAS,CACP,GAAI,KAAK,gBAAkB,GAC3B,KAAI74B,EAEJ,IADAk2B,GAAoB,UAAU,OAAO,KAAK,IAAI,EACzCl2B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAS,EAAGA,IAC5C,KAAK,aAAaA,CAAC,EAAE,QAAQ,MAAM,KAAK,gBAAgBA,CAAC,EAAE,OAAO,EAEtE,CAQA,mBAAoB,CAClB,IAAIA,EACF+4B,EAAW,KAAK,wBAAuB,EACzC,IAAK/4B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IACpC+4B,EAAS,gBAAkB/4B,EAAI,GACjC+4B,EAAS,UAAU/4B,CAAC,IAElB,KAAK,WACP,KAAK,aAAaA,CAAC,EAAE,QAAQ,MAAM+4B,EAAS,UAAU,EACtD,KAAK,aAAa/4B,CAAC,EAAE,QAAQ,OAAO+4B,EAAS,UAAU/4B,CAAC,CAAC,IAEzD,KAAK,aAAaA,CAAC,EAAE,QAAQ,MAAM+4B,EAAS,UAAU/4B,CAAC,CAAC,EACxD,KAAK,aAAaA,CAAC,EAAE,QAAQ,OAAO+4B,EAAS,WAAW,EAG9D,CAMA,yBAA0B,CACxB,IAAInE,EAAqBC,EACrBmE,GAAqB,KAAK,aAAa,OAAS,GAAK,KAAK,cAC1DC,GAAcrE,EAAsB,KAAK,QAAQ,MAAK,KAAQ,MAAQA,IAAwB,OAASA,EAAsB,EAC7HsE,GAAerE,EAAuB,KAAK,QAAQ,OAAM,KAAQ,MAAQA,IAAyB,OAASA,EAAuB,EAClIsE,EAAgB,EAChBC,EAAY,GACZ,KAAK,UACPF,GAAeF,EAEfC,GAAcD,EAEhB,QAASh5B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IAAK,CACjD,IAAIq5B,EAAwBC,EACxBjB,EAAW,KAAK,UAAY,KAAK,MAAMa,KAAiBG,EAAyB,KAAK,aAAar5B,CAAC,EAAE,OAAO,UAAY,MAAQq5B,IAA2B,OAASA,EAAyB,GAAK,IAAI,EAAI,KAAK,MAAMJ,KAAgBK,EAAyB,KAAK,aAAat5B,CAAC,EAAE,OAAO,SAAW,MAAQs5B,IAA2B,OAASA,EAAyB,GAAK,IAAI,EACxXH,GAAiBd,EACjBe,EAAU,KAAKf,CAAQ,CACzB,CACA,IAAIkB,EAAkB,KAAK,OAAO,KAAK,UAAYL,EAAcD,GAAcE,CAAa,EAC5F,MAAO,CACL,UAAAC,EACA,gBAAAG,EACA,WAAAN,EACA,YAAAC,CACN,CACE,CAoBA,yBAA0B,CAIxB,QAHIM,EAAQ,EACRC,EAA2B,GAC3BC,EAAY,KAAK,UAAY,SAAW,QACnC,EAAI,EAAG,EAAI,KAAK,aAAa,OAAQ,IAAK,CACjD,IAAIZ,EAAO,KAAK,aAAa,CAAC,EAAE,OAAOY,CAAS,EAC5CZ,GAAQ,KACVU,GAASV,EAETW,EAAyB,KAAK,KAAK,aAAa,CAAC,CAAC,CAEtD,CAKA,GAAI,KAAK,MAAMD,CAAK,IAAM,IAAK,CAC7B,KAAK,qBAAoB,EACzB,MACF,CAKA,GAAI,KAAK,MAAMA,CAAK,EAAI,KAAOC,EAAyB,OAAS,EAAG,CAClE,QAASjO,EAAK,EAAGA,EAAKiO,EAAyB,OAAQjO,IACrDiO,EAAyBjO,CAAE,EAAE,OAAOkO,CAAS,GAAK,IAAMF,GAASC,EAAyB,OAE5F,KAAK,qBAAoB,EACzB,MACF,CAQA,GAAI,KAAK,MAAMD,CAAK,EAAI,IACtB,QAASG,EAAM,EAAGA,EAAMF,EAAyB,OAAQE,IACvDF,EAAyBE,CAAG,EAAE,OAAOD,CAAS,EAAI,GAClDF,GAAS,GAOb,QAASI,EAAM,EAAGA,EAAM,KAAK,aAAa,OAAQA,IAAO,CACvD,IAAIC,EACJ,KAAK,aAAaD,CAAG,EAAE,OAAOF,CAAS,IAAMG,EAAwB,KAAK,aAAaD,CAAG,EAAE,OAAOF,CAAS,KAAO,MAAQG,IAA0B,OAASA,EAAwB,GAAKL,EAAQ,GACrM,CACA,KAAK,qBAAoB,CAC3B,CAKA,sBAAuB,CACrB,IAAIM,EACAC,EAAe,KAAK,cAAc,OAAO,aAAcD,EAAwB,KAAK,cAAc,OAAO,WAAW,gBAAkB,MAAQA,IAA0B,OAASA,EAA4B,EAC7ME,EAAiB,GACjBC,EAAe,EACfC,EAAgB,EAChBC,EAAiB,EACjBC,EAAa,GACb3R,EACJ,GAAI,OAAK,WAAa,CAACsR,GAAgB,KAAK,aAAa,QAAU,GAQnE,SALIhB,EAAW,KAAK,wBAAuB,EAKlC/4B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IAAK,CAC/B,KAAK,aAAaA,CAAC,EACrC,IAAIq4B,EAAWU,EAAS,UAAU/4B,CAAC,EAC/Bq4B,EAAW0B,GACbG,GAAiBH,EAAe1B,EAChC5P,EAAQ,CACN,MAAOsR,CACjB,IAEQE,GAAgB5B,EAAW0B,EAC3BtR,EAAQ,CACN,MAAO4P,CACjB,EACQ2B,EAAe,KAAKvR,CAAK,GAE3B2R,EAAW,KAAK3R,CAAK,CACvB,CAKA,GAAI,EAAAyR,IAAkB,GAAKA,EAAgBD,GAO3C,KAAII,EAAgBH,EAAgBD,EACpCE,EAAiBD,EACjB,QAASI,EAAM,EAAGA,EAAMN,EAAe,OAAQM,IAAO,CACpD7R,EAAQuR,EAAeM,CAAG,EAC1B,IAAIC,EAAe,KAAK,OAAO9R,EAAM,MAAQsR,GAAgBM,CAAa,EAC1EF,GAAkBI,EAClB9R,EAAM,OAAS8R,CACjB,CAKIJ,IAAmB,IACrBC,EAAWA,EAAW,OAAS,CAAC,EAAE,OAASD,GAM7C,QAASK,EAAM,EAAGA,EAAM,KAAK,aAAa,OAAQA,IAChD,KAAK,aAAaA,CAAG,EAAE,OAAO,MAAQJ,EAAWI,CAAG,EAAE,MAAQzB,EAAS,WAAa,KAExF,CAWA,gBAAgB9zB,EAAO,CACrB,IAAIw1B,EACJ,OAAAA,EAAW,IAAIC,GAAS,KAAK,UAAW,KAAK,cAAe,KAAK,iBAAiB,EAClFD,EAAS,GAAG,OAAQ,KAAK,gBAAgB,KAAK,KAAMA,CAAQ,EAAG,IAAI,EACnEA,EAAS,GAAG,WAAY,KAAK,oBAAoB,KAAK,KAAMA,CAAQ,EAAG,IAAI,EAC3EA,EAAS,GAAG,YAAa,KAAK,qBAAqB,KAAK,KAAMA,CAAQ,EAAG,IAAI,EAC7E,KAAK,UAAU,OAAOx1B,EAAO,EAAGw1B,CAAQ,EACjCA,CACT,CAYA,qBAAqBA,EAAU,CAC7B,IAAIx1B,EAAQ,KAAK,UAAU,QAAQw1B,CAAQ,EAC3C,GAAIx1B,EAAQ,EACV,MAAM,IAAI,MAAM,mCAAmC,EAErD,MAAO,CACL,OAAQ,KAAK,aAAaA,CAAK,EAC/B,MAAO,KAAK,aAAaA,EAAQ,CAAC,CACxC,CACE,CAOA,sBAAsB01B,EAAK,CAGzB,QAFIC,EAAW,EACbC,EAAY,EACL,EAAI,EAAG,EAAIF,EAAI,OAAQ,EAAE,EAAG,CACnC,IAAIG,EAAiBC,EACrBH,EAAW,KAAK,KAAKE,EAAkBH,EAAI,CAAC,EAAE,YAAc,MAAQG,IAAoB,OAASA,EAAkB,EAAGF,CAAQ,EAC9HC,EAAY,KAAK,KAAKE,EAAmBJ,EAAI,CAAC,EAAE,aAAe,MAAQI,IAAqB,OAASA,EAAmB,EAAGF,CAAS,CACtI,CACA,MAAO,CACL,WAAYD,EACZ,SAAUC,CAChB,CACE,CAQA,qBAAqBJ,EAAU,CAC7B,IAAIO,EAAuBC,EAAuBC,EAAuBC,EACrE11B,EAAQ,KAAK,qBAAqBg1B,CAAQ,EAC1CW,EAAU,KAAK,cAAc,OAAO,WAAW,KAAK,UAAY,gBAAkB,cAAc,EAChGC,EAAe,KAAK,uBAAuBL,EAAwBv1B,EAAM,OAAO,OAAO,WAAa,MAAQu1B,IAA0B,OAASA,EAAwB,EAAE,EACzKM,EAAgB,KAAK,UAAYD,EAAa,SAAWA,EAAa,WACtEE,EAAc,KAAK,uBAAuBN,EAAwBx1B,EAAM,MAAM,OAAO,WAAa,MAAQw1B,IAA0B,OAASA,EAAwB,EAAE,EACvKO,EAAe,KAAK,UAAYD,EAAY,SAAWA,EAAY,WACvE,KAAK,kBAAoB,EACzB,KAAK,qBAAuB,MAAQL,EAAwBz1B,EAAM,OAAO,QAAQ,KAAK,UAAU,OAAS,MAAQy1B,IAA0B,OAASA,EAAwB,IAAMI,GAAiBF,IACnM,KAAK,uBAAyBD,EAAwB11B,EAAM,MAAM,QAAQ,KAAK,UAAU,EAAC,KAAQ,MAAQ01B,IAA0B,OAASA,EAAwB,IAAMK,GAAgBJ,EAC7L,CAUA,gBAAgBX,EAAUvF,EAASC,EAAS,CAC1C,IAAIjW,EAAS,KAAK,UAAYiW,EAAUD,EACpC,KAAK,sBAAwB,MAAQ,KAAK,sBAAwB,MAGlEhW,EAAS,KAAK,sBAAwBA,EAAS,KAAK,uBACtD,KAAK,kBAAoBA,EACzBub,EAAS,QAAQ,IAAI,KAAK,UAAY,MAAQ,OAAQvb,CAAM,EAEhE,CASA,oBAAoBub,EAAU,CAC5B,IAAIgB,EAAwBC,EAAwBC,EAAuBC,EAAwBC,EAC/Fp2B,EAAQ,KAAK,qBAAqBg1B,CAAQ,EAC1CqB,GAAcL,EAAyBh2B,EAAM,OAAO,QAAQ,KAAK,UAAU,EAAC,KAAQ,MAAQg2B,IAA2B,OAASA,EAAyB,EACzJM,GAAaL,EAAyBj2B,EAAM,MAAM,QAAQ,KAAK,UAAU,EAAC,KAAQ,MAAQi2B,IAA2B,OAASA,EAAyB,EACvJM,KAA6BL,EAAwB,KAAK,qBAAuB,MAAQA,IAA0B,OAASA,EAAwB,GAAKG,IAAeA,EAAaC,GACrLE,IAAsBL,EAAyBn2B,EAAM,OAAO,OAAO,KAAK,UAAU,KAAO,MAAQm2B,IAA2B,OAASA,EAAyB,KAAOC,EAAwBp2B,EAAM,MAAM,OAAO,KAAK,UAAU,KAAO,MAAQo2B,IAA0B,OAASA,EAAwB,GAC7Sp2B,EAAM,OAAO,OAAO,KAAK,UAAU,EAAIu2B,EAA0BC,EACjEx2B,EAAM,MAAM,OAAO,KAAK,UAAU,GAAK,EAAIu2B,GAA2BC,EACtExB,EAAS,QAAQ,IAAI,CACnB,IAAK,EACL,KAAM,CACZ,CAAK,EACDpN,GAAU,KAAK,cAAc,KAAK,KAAM,UAAW,OAAW,OAAW,MAAS,CAAC,CACrF,CACF,CCzeA,SAASzjB,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAIxS,MAAMm8B,WAAahG,EAAoB,CACpD,YAAYtK,EAAe7G,EAAQoX,EAAkB,CACnD,MAAMvQ,EAAe/hB,GAAcA,GAAc,GAAIkb,CAAM,EAAG,GAAI,CAChE,KAAM,MACZ,CAAK,EAAG,KAAM8G,EAAE,qDAAqD,CAAC,EAClElsB,GAAgB,KAAM,wBAAyB,MAAM,EACrDA,GAAgB,KAAM,oBAAqB,MAAM,EACjD,KAAK,OAAS,GACd,KAAK,KAAO,OACZ,KAAK,sBAAwB,KAAK,QAClC,KAAK,kBAAoBw8B,EACzB,KAAK,kBAAkB,OAAO,KAAK,OAAO,CAC5C,CACA,SAAS9H,EAAapvB,EAAO,CAC3B,GAAI,KAAK,aAAa,OAAS,EAC7B,MAAM,IAAI,MAAM,wCAAwC,EAE1DovB,EAAc,KAAK,cAAc,uBAAuBA,EAAa,IAAI,EACzE,KAAK,sBAAsB,OAAOA,EAAY,OAAO,EACrD,MAAM,SAASA,EAAapvB,CAAK,EACjC,KAAK,cAAc,SAAS,EAC5B,KAAK,kBAAkB,cAAc,CACvC,CACA,QAAQqa,EAAOvC,EAAQ,CACrB,IAAIqf,EAAuBC,EAC3B/c,EAAQ,OAAOA,EAAU,KAAe8c,EAAwB,KAAK,kBAAkB,MAAK,KAAQ,MAAQA,IAA0B,OAASA,EAAwB,EAAI9c,EAC3KvC,EAAS,OAAOA,EAAW,KAAesf,EAAyB,KAAK,kBAAkB,OAAM,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,EAAItf,EACjL,KAAK,QAAQ,MAAMuC,CAAK,EACxB,KAAK,QAAQ,OAAOvC,CAAM,EAKtB,KAAK,aAAa,CAAC,IACrB,KAAK,aAAa,CAAC,EAAE,QAAQ,MAAMuC,CAAK,EACxC,KAAK,aAAa,CAAC,EAAE,QAAQ,OAAOvC,CAAM,EAE9C,CACA,WAAY,CACV,IAAI2Y,EAAO,MAAM,UAAS,EAC1B,GAAIA,GAAQ,KACV,MAAM,IAAI,MAAM,yBAAyB,EAE3C,OAAOA,CACT,CACA,oBAAoBxB,EAAGC,EAAGuB,EAAM,CAC9B,KAAK,cAAc,mBAAmB,OAAM,EAC5C,MAAM,oBAAoBxB,EAAGC,EAAGuB,CAAI,CACtC,CACA,SAASrB,EAAaqB,EAAM,CAC1B,IAAI4G,EAUJ,GATItG,GAAY3B,CAAW,IACzBiI,EAAQ,KAAK,cAAc,kBAAkB,CAC3C,KAAM,QACN,OAAQjI,EAAY,OAAO,QAAU,EAC7C,EAAS,IAAI,EACPiI,EAAM,OAAM,EACZA,EAAM,SAASjI,CAAW,EAC1BA,EAAciI,GAEZ,CAAC,KAAK,aAAa,OACrB,KAAK,SAASjI,CAAW,MACpB,CACL,GAAI,CACF,KAAAkI,CACR,EAAU7G,EACAzmB,EAAOstB,IAAS,QAAUA,IAAS,QAAU,MAAQ,SACrD7C,EAAY6C,IAAS,QAAUA,IAAS,QAAU,QAAU,SAC5DC,EAAeD,IAAS,QAAUA,IAAS,MAC3CE,EAAS,KAAK,aAAa,CAAC,EAChC,GAAI,EAAEA,aAAkBxE,KAAgBwE,EAAO,MAAQxtB,EAAM,CAC3D,IAAIgd,EAAc,KAAK,cAAc,kBAAkB,CACrD,KAAMhd,CAChB,EAAW,IAAI,EACP,KAAK,aAAawtB,EAAQxQ,CAAW,EACrCA,EAAY,SAASoI,EAAamI,EAAe,EAAI,OAAW,EAAI,EACpEvQ,EAAY,SAASwQ,EAAQD,EAAe,OAAY,EAAG,EAAI,EAC/DC,EAAO,OAAO/C,CAAS,EAAI,GAC3BrF,EAAY,OAAOqF,CAAS,EAAI,GAChCzN,EAAY,cAAc,SAAS,CACrC,KAAO,CACL,IAAIyQ,EACAC,EAAUF,EAAO,aAAaD,EAAe,EAAIC,EAAO,aAAa,OAAS,CAAC,EACnFA,EAAO,SAASpI,EAAamI,EAAe,EAAI,OAAW,EAAI,EAC/DG,EAAQ,OAAOjD,CAAS,IAAMgD,EAAwBC,EAAQ,OAAOjD,CAAS,KAAO,MAAQgD,IAA0B,OAASA,EAAwB,GAAK,GAC7JrI,EAAY,OAAOqF,CAAS,EAAIiD,EAAQ,OAAOjD,CAAS,EACxD+C,EAAO,cAAc,SAAS,CAChC,CACF,CACF,CACF,CClGA,SAAS7yB,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAKxS,MAAM68B,WAAc1G,EAAoB,CACrD,YAAYtK,EAAe7G,EAAQta,EAAQ,CACzC,IAAIoyB,EAAeC,EAAgBC,EAAaC,EAAgBC,EAAcC,EAAgBC,EAAcC,EAAsBC,EAClI,MAAMzR,EAAe7G,EAAQta,EAAQohB,EAAE,sCAAsC,CAAC,EAC9ElsB,GAAgB,KAAM,qBAAsB,IAAI,EAChDA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,wBAAyBksB,EAAE,8BAA8B,CAAC,EAChFlsB,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,UAAW,EAAI,EACrCA,GAAgB,KAAM,eAAgB,IAAI,EAC1CA,GAAgB,KAAM,yBAA0B,IAAI,EACpDA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,SAAU,EAAK,EACrCA,GAAgB,KAAM,SAAU,MAAM,EACtC,KAAK,OAAS8K,EACd,KAAK,OAASsa,EACd,IAAIuY,EAAM1R,EAAc,OACxB,KAAK,MAAQ,GACb,KAAK,QAAU,CAEb,OAAQiR,EAAgBS,EAAI,YAAc,MAAQT,IAAkB,OAAS,OAASA,EAAc,aAAe9X,EAAO,aAAe,GACzI,QAAS+X,EAAiBQ,EAAI,YAAc,MAAQR,IAAmB,QAAUA,EAAe,gBAAkBC,EAAcO,EAAI,UAAY,MAAQP,IAAgB,OAAS,OAASA,EAAY,OAAS,OAC/M,UAAWC,EAAiBM,EAAI,YAAc,MAAQN,IAAmB,QAAUA,EAAe,kBAAoBC,EAAeK,EAAI,UAAY,MAAQL,IAAiB,OAAS,OAASA,EAAa,SAAW,OACxN,OAAQC,EAAiBI,EAAI,YAAc,MAAQJ,IAAmB,QAAUA,EAAe,eAAiBC,EAAeG,EAAI,UAAY,MAAQH,IAAiB,OAAS,OAASA,EAAa,MAAQ,OAC/M,UAAWC,GAAwBC,EAAeC,EAAI,UAAY,MAAQD,IAAiB,OAAS,OAASA,EAAa,YAAc,MAAQD,IAAyB,OAASA,EAAuB,MAC/M,EAGQE,EAAI,SAAQ,KAAK,QAAUzzB,GAAcA,GAAc,GAAI,KAAK,OAAO,EAAGyzB,EAAI,MAAM,GACpFvY,EAAO,SAET,KAAK,QAAUlb,GAAcA,GAAc,GAAI,KAAK,OAAO,EAAGkb,EAAO,MAAM,GACzEA,EAAO,SAAWA,EAAO,QAAQ,CAAC,GAAKA,EAAO,QAAQ,CAAC,EAAE,SAE3D,KAAK,QAAUlb,GAAcA,GAAc,GAAI,KAAK,OAAO,EAAGkb,EAAO,QAAQ,CAAC,EAAE,MAAM,GACxF,KAAK,OAAS,IAAIwY,GAAO3R,EAAe,IAAI,EAC5C,KAAK,QAAQ,OAAO,KAAK,OAAO,OAAO,EACvC,KAAK,QAAQ,OAAO,KAAK,qBAAqB,EAC9C,KAAK,qBAAoB,EACzB,KAAK,sBAAqB,CAC5B,CACA,SAAU,CACR,IAAIkO,EAAuB0D,EAAwB5I,EAAqBC,EACpE70B,EACFy9B,EAAa,KAAK,QAAQ,OAAQ3D,GAAyB0D,EAAyB,KAAK,cAAc,OAAO,cAAgB,MAAQA,IAA2B,OAAS,OAASA,EAAuB,gBAAkB,MAAQ1D,IAA0B,OAASA,EAA4B,EACnS4D,IAAiB9I,EAAsB,KAAK,QAAQ,MAAK,KAAQ,MAAQA,IAAwB,OAASA,EAAsB,IAAM,KAAK,OAAS6I,EAAa,GACjKE,IAAkB9I,EAAuB,KAAK,QAAQ,OAAM,KAAQ,MAAQA,IAAyB,OAASA,EAAuB,IAAO,KAAK,OAAsB,EAAb4I,GAG5J,IAFA,KAAK,sBAAsB,MAAMC,CAAY,EAC7C,KAAK,sBAAsB,OAAOC,CAAa,EAC1C39B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IACxC,KAAK,aAAaA,CAAC,EAAE,QAAQ,MAAM09B,CAAY,EAAE,OAAOC,CAAa,EAEvE,KAAK,KAAK,QAAQ,EAClB,KAAK,kBAAkB,cAAc,CACvC,CACA,QAAS,CACP,GAAI,KAAK,gBAAkB,GAC3B,MAAK,OAAO,qBAAoB,EAChC,MAAM,OAAM,EACZ,QAAS39B,EAAI,EAAGA,EAAI,KAAK,aAAa,OAAQA,IAC5C,KAAK,OAAO,UAAU,KAAK,aAAaA,CAAC,CAAC,EAC1C,KAAK,aAAaA,CAAC,EAAE,OAAM,EAE7B,GAAI,KAAK,aAAa,OAAS,EAAG,CAChC,IAAI49B,EAAc,KAAK,aAAa,KAAK,OAAO,iBAAmB,CAAC,EACpE,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,0CAA0C,EAE5D,KAAK,qBAAqBA,CAAW,CACvC,EACF,CACA,qBAAqBvJ,EAAa2D,EAAY,CAC5C,GAAI,KAAK,aAAa,QAAQ3D,CAAW,IAAM,GAC7C,MAAM,IAAI,MAAM,0CAA0C,EAExD,KAAK,qBAAuB,MAC9B,KAAK,mBAAmB,OAAM,EAEhC,KAAK,mBAAqBA,EAC1B,KAAK,OAAO,qBAAqBA,CAAW,EACxC2B,GAAY3B,CAAW,EACzBA,EAAY,OAAO2D,CAAU,EAE7B3D,EAAY,OAAM,EAEpB,KAAK,KAAK,2BAA4BA,CAAW,EACjD,KAAK,cAAc,KAAK,2BAA4BA,CAAW,EAC/D,KAAK,kBAAkB,cAAc,CACvC,CACA,sBAAuB,CACrB,OAAO,KAAK,OAAO,iBACrB,CACA,SAASA,EAAapvB,EAAO,CAC3BovB,EAAc,KAAK,cAAc,uBAAuBA,EAAa,IAAI,EACzE,MAAM,SAASA,EAAapvB,CAAK,EACjC,KAAK,sBAAsB,OAAOovB,EAAY,OAAO,EACrD,KAAK,OAAO,UAAUA,EAAapvB,CAAK,EACxC,KAAK,qBAAqBovB,CAAW,EACrC,KAAK,cAAc,SAAS,EAC5B,KAAK,sBAAqB,EAC1B,KAAK,kBAAkB,cAAc,CACvC,CACA,YAAYA,EAAa,CACvB,IAAImC,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAChFvxB,EAAQ,KAAK,aAAa,QAAQovB,CAAW,EACjD,MAAM,YAAYA,EAAamC,CAAS,EACxC,KAAK,OAAO,UAAUnC,CAAW,EAC7B,KAAK,OAAO,oBAAsBA,IAChC,KAAK,aAAa,OAAS,EAC7B,KAAK,qBAAqB,KAAK,aAAa,KAAK,IAAIpvB,EAAQ,EAAG,CAAC,CAAC,CAAC,EAEnE,KAAK,mBAAqB,MAG9B,KAAK,sBAAqB,EAC1B,KAAK,kBAAkB,cAAc,CACvC,CAOA,uBAAwB,CAEtB,QADI44B,EAAa,KAAK,OAAO,YAAW,EAC/B79B,EAAI,EAAG89B,EAAM,KAAK,aAAa,OAAQ99B,EAAI89B,EAAK99B,IAAK,CAC5D,IAAIu4B,EACJ,GAAI,CAACsF,EACH,MAEFA,GAActF,EAAwB,KAAK,aAAav4B,CAAC,EAAE,OAAO,cAAgB,MAAQu4B,IAA0B,OAASA,EAAwB,EACvJ,CACA,KAAK,OAAO,cAAcsF,CAAU,CACtC,CACA,WAAY,CACV3H,GAAoB,UAAU,UAAU,KAAK,IAAI,EACjD,KAAK,OAAO,UAAS,CACvB,CAqBA,SAAS7B,EAAa,CAKpB,GAAI,KAAK,eAAiB,SAAU,CAClC,KAAK,qBAAoB,EACzB,KAAK,SAASA,EAAa,KAAK,UAAU,EAC1C,MACF,CAKA,GAAI,KAAK,eAAiB,OAAQ,CAChC,KAAK,SAASA,CAAW,EACzB,MACF,CAMA,IAAI0J,EAAa,KAAK,eAAiB,OAAS,KAAK,eAAiB,SAClEC,EAAe,KAAK,eAAiB,QAAU,KAAK,eAAiB,QACrExB,EAAe,KAAK,eAAiB,OAAS,KAAK,eAAiB,OACpEyB,EAAmB,KAAK,kBAAkBhG,KAAgB8F,GAAc,KAAK,OAAO,UAAYC,GAAgB,KAAK,OAAO,OAC5H/uB,EAAO8uB,EAAa,SAAW,MAC/BrE,EAAYqE,EAAa,SAAW,QAKxC,GAAI/H,GAAY3B,CAAW,EAAG,CAC5B,IAAIiI,EAAQ,KAAK,cAAc,kBAAkB,CAC/C,KAAM,QACN,OAAQjI,EAAY,OAAO,QAAU,EAC7C,EAAS,IAAI,EACPiI,EAAM,OAAM,EACZA,EAAM,SAASjI,CAAW,EAC1BA,EAAciI,CAChB,CAMA,GAAI2B,EAAkB,CACpB,IAAIC,EACAj5B,EAAQ,KAAK,OAAO,aAAa,QAAQ,IAAI,EAGjD,KAAK,OAAO,SAASovB,EAAamI,EAAev3B,EAAQA,EAAQ,EAAG,EAAI,EACxE,KAAK,OAAOy0B,CAAS,IAAMwE,EAAwB,KAAK,OAAOxE,CAAS,KAAO,MAAQwE,IAA0B,OAASA,EAAwB,GAAK,GACvJ7J,EAAY,OAAOqF,CAAS,EAAI,KAAK,OAAOA,CAAS,EACrD,KAAK,OAAO,cAAc,SAAS,CAKrC,KAAO,CACL,IAAIjD,EACAxK,EAAc,KAAK,cAAc,kBAAkB,CACrD,KAAAhd,CACR,EAAS,IAAI,GACNwnB,EAAe,KAAK,UAAY,MAAQA,IAAiB,QAAUA,EAAa,aAAa,KAAMxK,CAAW,EAC/GA,EAAY,SAASoI,EAAamI,EAAe,EAAI,OAAW,EAAI,EACpEvQ,EAAY,SAAS,KAAMuQ,EAAe,OAAY,EAAG,EAAI,EAC7D,KAAK,OAAO9C,CAAS,EAAI,GACzBrF,EAAY,OAAOqF,CAAS,EAAI,GAChCzN,EAAY,cAAc,SAAS,CACrC,CACF,CASA,oBAAoBiI,EAAGC,EAAG,CACxB,GAAK,KAAK,uBAGV,OAAS,CAACgK,EAAShM,CAAU,IAAK,OAAO,QAAQ,KAAK,sBAAsB,EAAG,CAC7E,IAAIuD,EAAOvD,EAAW,UACtB,GAAIuD,EAAK,GAAKxB,GAAKwB,EAAK,GAAKxB,GAAKwB,EAAK,GAAKvB,GAAKuB,EAAK,GAAKvB,EAAG,CACxDgK,IAAY,UACd,KAAK,aAAe,SACpB,KAAK,yBAAyBjK,CAAC,IAE/B,KAAK,qBAAoB,EACzB,KAAK,uBAAuBiK,CAAO,GAErC,MACF,CACF,CACF,CACA,WAAY,CACV,GAAI,KAAK,QAAQ,GAAG,UAAU,IAAM,GAClC,OAAO,KAET,IAAIC,EAAa,MAAM,UAAU,KAAK,OAAO,OAAO,EAChDC,EAAc,MAAM,UAAU,KAAK,qBAAqB,EAC5D,GAAID,GAAc,MAAQC,GAAe,KACvC,OAAO,KAET,IAAIX,EAAeW,EAAY,GAAKA,EAAY,GAC5CV,EAAgBU,EAAY,GAAKA,EAAY,GAsBjD,OArBA,KAAK,uBAAyB,CAC5B,OAAQ,CACN,UAAW,CACT,GAAID,EAAW,GACf,GAAIA,EAAW,GACf,GAAIA,EAAW,GACf,GAAIA,EAAW,EACzB,EACQ,cAAe,CACb,GAAIA,EAAW,GACf,GAAIA,EAAW,GACf,GAAIA,EAAW,GACf,GAAIA,EAAW,EACzB,CACA,CACA,EAMQ,KAAK,oBAAsB,KAAK,mBAAmB,cAAgB,GAC9DA,EAML,KAAK,aAAa,SAAW,GAC/B,KAAK,uBAAuB,KAAO,CACjC,UAAW,CACT,GAAIC,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,EAC1B,EACQ,cAAe,CACb,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,EAC1B,CACA,EACa,MAAM,UAAU,KAAK,OAAO,IAErC,KAAK,uBAAuB,KAAO,CACjC,UAAW,CACT,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAAKX,EAAe,IACpC,GAAIW,EAAY,EACxB,EACM,cAAe,CACb,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAAKX,EAAe,GACpC,GAAIW,EAAY,EACxB,CACA,EACI,KAAK,uBAAuB,IAAM,CAChC,UAAW,CACT,GAAIA,EAAY,GAAKX,EAAe,IACpC,GAAIW,EAAY,GAChB,GAAIA,EAAY,GAAKX,EAAe,IACpC,GAAIW,EAAY,GAAKV,EAAgB,EAC7C,EACM,cAAe,CACb,GAAIU,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAAKV,EAAgB,EAC7C,CACA,EACI,KAAK,uBAAuB,MAAQ,CAClC,UAAW,CACT,GAAIU,EAAY,GAAKX,EAAe,IACpC,GAAIW,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,EACxB,EACM,cAAe,CACb,GAAIA,EAAY,GAAKX,EAAe,GACpC,GAAIW,EAAY,GAChB,GAAIA,EAAY,GAChB,GAAIA,EAAY,EACxB,CACA,EACI,KAAK,uBAAuB,OAAS,CACnC,UAAW,CACT,GAAIA,EAAY,GAAKX,EAAe,IACpC,GAAIW,EAAY,GAAKV,EAAgB,GACrC,GAAIU,EAAY,GAAKX,EAAe,IACpC,GAAIW,EAAY,EACxB,EACM,cAAe,CACb,GAAIA,EAAY,GAChB,GAAIA,EAAY,GAAKV,EAAgB,GACrC,GAAIU,EAAY,GAChB,GAAIA,EAAY,EACxB,CACA,EACW,MAAM,UAAU,KAAK,OAAO,EACrC,CACA,yBAAyBnK,EAAG,CAC1B,IAAIoK,EAAoBC,EAAuBC,EAAwBC,EAAwBC,EAAuBC,EAAwBC,EAAwBC,EAAwBC,EAAwBC,EAAwBC,EAAwBC,EAAwBC,EAAwBC,EAAwBC,EAAwBC,EAClWC,EAAa,KAAK,OAAO,KAAK,OAMlC,GAAIA,IAAe,EAAG,CACpB,IAAIpI,EAAuBqI,EAAoBC,EAAqBC,EAAuBC,EAAwBC,EAAwBC,EAAwBC,EAC/JC,EAAe,KAAK,OAAO,QAAQ,OAAM,GAG5C5I,EAAwB,KAAK,cAAc,uBAAyB,MAAQA,IAA0B,QAAUA,EAAsB,cAAc,CACnJ,IAAKqI,EAAqBO,GAAiB,KAAkC,OAASA,EAAa,QAAU,MAAQP,IAAuB,OAASA,EAAqB,EAC1K,KAAMC,EAAsBM,GAAiB,KAAkC,OAASA,EAAa,QAAU,MAAQN,IAAwB,OAASA,EAAsB,GAAK,IACnL,IAAKC,GAAyBC,EAAyB,KAAK,OAAO,QAAQ,YAAc,MAAQA,IAA2B,OAAS,OAASA,EAAuB,OAAS,MAAQD,IAA0B,OAASA,EAAwB,EACjP,KAAME,GAA0BC,EAAyB,KAAK,OAAO,QAAQ,OAAM,KAAQ,MAAQA,IAA2B,OAAS,OAASA,EAAuB,OAAS,MAAQD,IAA2B,OAASA,EAAyB,KAAOE,EAAyB,KAAK,OAAO,QAAQ,YAAW,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,EACzY,CAAO,EACD,MACF,CACA,IAAIE,EAAgB,KAAK,OAAO,cAC5BC,GAAqB1B,EAAqByB,EAAc,IAAI,CAAC,KAAO,MAAQzB,IAAuB,OAAS,OAASA,EAAmB,sBAAqB,EAC7J2B,GAAmB1B,EAAwB,KAAK,cAAc,mBAAmB,IAAI,CAAC,KAAO,MAAQA,IAA0B,OAAS,OAASA,EAAsB,sBAAqB,EAChM,GAAI,GAACyB,GAAqB,CAACC,GAG3B,CAAI/L,EAAI8L,EAAkB,KAGxB9L,EAAI8L,EAAkB,KAAO,EACpB9L,EAAI8L,EAAkB,QAG/B9L,EAAI8L,EAAkB,MAAQ,GAEhC,IAAIE,EACAC,EAGJ,GAAI,EAAEF,EAAgB,KAAO/L,GAAKA,EAAI+L,EAAgB,OAAQ,CAE5D,QAASjgC,EAAI,EAAGA,EAAIs/B,EAAYt/B,IAAK,CACnC,IAAIogC,GAGJ,GAFAF,EAAa,KAAK,OAAO,KAAKlgC,CAAC,EAAE,QACjCmgC,GAAWC,GAAkBF,EAAW,IAAI,CAAC,KAAO,MAAQE,KAAoB,OAAS,OAASA,GAAgB,sBAAqB,EACnID,GAAWA,EAAQ,KAAOjM,GAAKA,EAAIiM,EAAQ,MAAO,CACpD,KAAK,WAAangC,EAClB,KACF,CACF,CAGA,GAAIkgC,GAAcC,GAAWjM,EAAIiM,EAAQ,KAAOA,EAAQ,MAAQ,GAE9DD,EAAW,OAAO,KAAK,cAAc,kBAAkB,UAC9CA,EAAY,CACrB,IAAIG,GAEJ,KAAK,WAAa,KAAK,MAAMA,GAAmB,KAAK,cAAgB,MAAQA,KAAqB,OAASA,GAAmB,GAAK,EAAGf,CAAU,EAChJY,EAAW,MAAM,KAAK,cAAc,kBAAkB,CACxD,CACF,CACA,IAAII,IAAmB9B,GAA0BC,EAAyB,KAAK,cAAc,mBAAmB,YAAc,MAAQA,IAA2B,OAAS,OAASA,EAAuB,QAAU,MAAQD,IAA2B,OAASA,EAAyB,EACzR8B,GAAkB,KAAK,IAAIA,IAAkB5B,GAAyBC,EAAyB,KAAK,OAAO,cAAc,OAAM,KAAQ,MAAQA,IAA2B,OAAS,OAASA,EAAuB,QAAU,MAAQD,IAA0B,OAASA,EAAwB,CAAC,EACjS,IAAI6B,EAAmBD,KAAoB1B,EAAyB,KAAK,cAAc,mBAAmB,MAAK,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,GAC5L2B,EAAmB,KAAK,IAAIA,IAAoB1B,GAA0BC,EAAyB,KAAK,OAAO,cAAc,YAAc,MAAQA,IAA2B,OAAS,OAASA,EAAuB,QAAU,MAAQD,IAA2B,OAASA,EAAyB,KAAOE,EAAyB,KAAK,OAAO,cAAc,WAAU,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,EAAE,GACxbC,EAAyB,KAAK,cAAc,uBAAyB,MAAQA,IAA2B,QAAUA,EAAuB,cAAc,CACtJ,GAAIsB,GACJ,GAAIC,EACJ,IAAKtB,GAA0BC,EAAyB,KAAK,OAAO,QAAQ,YAAc,MAAQA,IAA2B,OAAS,OAASA,EAAuB,OAAS,MAAQD,IAA2B,OAASA,EAAyB,EACpP,KAAME,GAA0BC,EAAyB,KAAK,OAAO,QAAQ,OAAM,KAAQ,MAAQA,IAA2B,OAAS,OAASA,EAAuB,OAAS,MAAQD,IAA2B,OAASA,EAAyB,KAAOE,EAAyB,KAAK,OAAO,QAAQ,YAAW,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,EACvY,CAAK,EACH,CACA,sBAAuB,CACrB,KAAK,cAAc,mBAAmB,OAAM,CAC9C,CACA,sBAAuB,CACrB,IAAI9C,EAAO,CAAC,QAAS,OAAQ,QAAQ,EAAE,KAAKiE,GAAQA,IAAS,KAAK,QAAQ,IAAI,EAAI,KAAK,QAAQ,KAAO,OAEtG,GADA,KAAK,OAAO,QAAQ,OAAO,CAAC,CAAC,KAAK,QAAQ,IAAI,EAC1C,EAACjE,IAGL,KAAK,MAAQA,EACb,KAAK,OAAS,CAAC,QAAS,MAAM,EAAE,QAAQ,KAAK,MAAM,SAAQ,CAAE,GAAK,EAClE,KAAK,QAAQ,YAAY,4BAA4B,EACjD,KAAK,OAAO,KAAK,QAAQ,SAAS,MAAQ,KAAK,KAAK,EACpD,KAAK,QAAQ,KAAK,YAAY,EAAE,QAAU,KAAK,uBAAuB,CACxE,IAAIkE,EAAiB,CAAC,QAAS,QAAQ,EAAE,QAAQ,KAAK,MAAM,SAAQ,CAAE,GAAK,EAAI,SAAW,QAC1F,KAAK,OAAO,QAAQA,CAAc,EAAE,KAAK,qBAAqB,EAC9D,KAAK,cAAc,SAAS,CAC9B,CACF,CACA,uBAAuBtC,EAAS,CAC9B,IAAIuC,EACAC,GAAiBD,EAAwB,KAAK,0BAA4B,MAAQA,IAA0B,SAAWA,EAAwBA,EAAsBvC,CAAO,KAAO,MAAQuC,IAA0B,OAAS,OAASA,EAAsB,cACjQ,GAAIC,EAAe,CACjB,IAAIC,GACHA,EAAyB,KAAK,cAAc,uBAAyB,MAAQA,IAA2B,QAAUA,EAAuB,cAAcD,CAAa,CACvK,CACA,KAAK,aAAexC,CACtB,CACF,4NCpeA,SAASx+B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWxS,MAAM8gC,EAAI,CACvB,YAAYv9B,EAAQ+wB,EAAa,CAC/B,IAAIf,EACJ3zB,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,UAAWksB,EAAEgV,GAAI,SAAS,CAAC,EACjDlhC,GAAgB,KAAM,eAAgB,MAAM,EAC5CA,GAAgB,KAAM,eAAgB,MAAM,EAC5CA,GAAgB,KAAM,WAAY,EAAK,EACvCA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,gBAAiB,MAAM,EAC7C,KAAK,OAAS2D,EACd,KAAK,YAAc+wB,EACnB,KAAK,aAAe,KAAK,QAAQ,KAAK,WAAW,EACjD,KAAK,aAAe,KAAK,QAAQ,KAAK,eAAe,EACrD,KAAK,aAAaA,EAAY,OAAO,WAAa,OAAS,MAAM,EAAC,EAClE,KAAK,SAASA,EAAY,OAAO,KAAK,EACtC,KAAK,YAAY,GAAG,eAAgB,KAAK,SAAU,IAAI,EACvD,KAAK,eAAiB,KAAK,YAAY,eAClCf,EAAwB,KAAK,eAAe,OAAO,YAAc,MAAQA,IAA0B,QAAUA,EAAsB,gBAAkBe,EAAY,OAAO,iBAC3K,KAAK,cAAgB,IAAIvG,GAAa,KAAK,OAAO,EAClD,KAAK,cAAc,GAAG,YAAa,KAAK,aAAc,IAAI,EAC1D,KAAK,YAAY,GAAG,UAAW,KAAK,cAAc,QAAS,KAAK,aAAa,GAE/E,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,QAAQ,GAAG,QAAS,KAAK,WAAW,EACzC,KAAK,QAAQ,GAAG,WAAY,KAAK,WAAW,EAC5C,KAAK,QAAQ,GAAG,UAAW,KAAK,UAAU,EACtC,KAAK,YAAY,OAAO,YAC1B,KAAK,aAAa,GAAG,QAAS,KAAK,aAAa,EAChD,KAAK,aAAa,GAAG,YAAa,KAAK,iBAAiB,GAExD,KAAK,aAAa,OAAM,EAE1B,KAAK,YAAY,IAAM,KACvB,KAAK,YAAY,KAAK,MAAO,IAAI,EACjC,KAAK,YAAY,cAAc,KAAK,aAAc,IAAI,EAClDkI,GAAY,KAAK,WAAW,IAE9B,KAAK,YAAY,UAAU,gBAAgB,GAAG,UAAW,KAAK,oBAAoB,EAAE,GAAG,WAAY,KAAK,qBAAqB,EAC7H,KAAK,YAAY,UAAU,IAAM,KACjC,KAAK,YAAY,UAAU,KAAK,MAAO,IAAI,EAE/C,CAQA,UAAW,CACT,IAAIrJ,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAGhF,KAAK,aAAa,KAAKA,CAAK,CAC9B,CAOA,UAAUmU,EAAU,CACdA,IAAa,KAAK,WAGtB,KAAK,SAAWA,EACZA,EACF,KAAK,QAAQ,SAAS,WAAW,EAEjC,KAAK,QAAQ,YAAY,WAAW,EAExC,CAQA,WAAY,CACV,KAAK,QAAQ,IAAI,QAAS,KAAK,WAAW,EAC1C,KAAK,QAAQ,IAAI,WAAY,KAAK,WAAW,EAC7C,KAAK,QAAQ,IAAI,UAAW,KAAK,UAAU,EAC3C,KAAK,aAAa,IAAI,QAAS,KAAK,aAAa,EAC7C9K,GAAY,KAAK,WAAW,IAC9B,KAAK,YAAY,UAAU,gBAAgB,IAAG,EAC9C,KAAK,YAAY,UAAU,gBAAgB,CAAC,EAAE,oBAAoB,QAAS,KAAK,qBAAsB,EAAI,GAExG,KAAK,gBACP,KAAK,YAAY,IAAI,UAAW,KAAK,cAAc,QAAS,KAAK,aAAa,EAC9E,KAAK,cAAc,IAAI,YAAa,KAAK,YAAY,EACrD,KAAK,cAAgB,QAEvB,KAAK,QAAQ,OAAM,CACrB,CAQA,aAAa9B,EAAGC,EAAG,CACjB,IAAI4M,GACCA,EAAwB,KAAK,YAAY,UAAY,MAAQA,IAA0B,QAAUA,EAAsB,aAC1H,KAAK,YAAY,OAAO,eAAc,EAEnC,KAAK,eAGV,IAAI9M,GAAUC,EAAGC,EAAG,KAAK,cAAe,KAAK,eAAgB,KAAK,YAAa,KAAK,OAAO,MAAM,CACnG,CAKA,sBAAuB,CAOrBtI,EAAE,cAAe,KAAK,eAAe,KAAK,OAAO,EAAE,YAAY,YAAY,EAC3E,KAAK,QAAQ,SAAS,YAAY,CACpC,CAUA,uBAAwB,CAClBmK,GAAY,KAAK,WAAW,GAAK,CAAC,KAAK,YAAY,UAAU,gBAAgB,CAAC,EAAE,SAAS,SAAS,aAAa,GACjH,KAAK,QAAQ,YAAY,YAAY,CAEzC,CAOA,YAAY9pB,EAAO,CAEjB,GAAI,CAACA,GAASA,EAAM,SAAW,EAAG,CAChC,IAAI80B,EACA3J,EAAoB,KAAK,OAAO,OAAO,qBAAoB,EAC3D,KAAK,cAAgBA,GAAqBrB,GAAY,KAAK,WAAW,EACxE,KAAK,OAAO,OAAO,qBAAqB,KAAK,WAAW,EAC/CA,GAAY,KAAK,WAAW,GAAK,CAAC,KAAK,YAAY,UAAU,gBAAgB,CAAC,EAAE,SAAS,SAAS,aAAa,GAGxH,KAAK,YAAY,UAAU,gBAAgB,MAAK,EAE9CA,GAAY,KAAK,WAAW,GAC9B,KAAK,YAAY,UAAU,KAAK,aAAc9pB,CAAK,EAIrD,KAAK,OAAO,4BAA2B,GAGtC80B,EAAoB,KAAK,QAAQ,IAAI,CAAC,KAAO,MAAQA,IAAsB,QAAUA,EAAkB,eAAe,CACrH,OAAQ,SAGhB,CAAO,CAGH,MAAW90B,EAAM,SAAW,GAAK,KAAK,YAAY,OAAO,YACvD,KAAK,cAAcA,CAAK,CAE5B,CAQA,cAAcA,EAAO,CACnBA,EAAM,gBAAe,EACjB8pB,GAAY,KAAK,WAAW,EAC9B,KAAK,YAAY,UAAU,MAAK,EAEhC,KAAK,OAAO,OAAO,YAAY,KAAK,WAAW,CAEnD,CAOA,WAAW9pB,EAAO,CACZA,EAAM,SAAW,IACnBA,EAAM,eAAc,EACpBA,EAAM,gBAAe,EAEzB,CAQA,kBAAkBA,EAAO,CACvBA,EAAM,gBAAe,CACvB,CACF,CAIAvM,GAAgBkhC,GAAK,YAAa,CAAC,sBAAuB,wCAAyC,iCAAkC,0DAA2D,OAAO,EAAE,KAAK,EAAE,CAAC,EC5OjN,SAASlhC,EAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWxS,MAAMw9B,WAAepS,EAAa,CAC/C,YAAYS,EAAenhB,EAAQ,CACjC,IAAIqvB,EAAuB0D,EAC3B,MAAK,EACL79B,EAAgB,KAAM,gBAAiB,MAAM,EAC7CA,EAAgB,KAAM,UAAWksB,EAAE0R,GAAO,SAAS,CAAC,EACpD59B,EAAgB,KAAM,gBAAiB,MAAM,EAC7CA,EAAgB,KAAM,uBAAwB,MAAM,EACpDA,EAAgB,KAAM,oBAAqB,MAAM,EACjDA,EAAgB,KAAM,kBAAmB,IAAI,EAC7CA,EAAgB,KAAM,oBAAqB,MAAM,EACjDA,EAAgB,KAAM,SAAU,MAAM,EACtCA,EAAgB,KAAM,OAAQ,EAAE,EAChCA,EAAgB,KAAM,oBAAqB,IAAI,EAC/CA,EAAgB,KAAM,cAAe,IAAI,EACzCA,EAAgB,KAAM,oBAAqB,IAAI,EAC/CA,EAAgB,KAAM,gBAAiBksB,EAAE0R,GAAO,mBAAmB,CAAC,EACpE59B,EAAgB,KAAM,oBAAqBksB,EAAE0R,GAAO,uBAAuB,CAAC,EAE5E59B,EAAgB,KAAM,YAAa,IAAI,EACvCA,EAAgB,KAAM,MAAO,IAAI,EAEjCA,EAAgB,KAAM,gBAAiB,GAAG,EAE1CA,EAAgB,KAAM,cAAe,GAAI,EACzCA,EAAgB,KAAM,eAAgB,IAAM,EAC5CA,EAAgB,KAAM,UAAW,EAAE,EACnCA,EAAgB,KAAM,cAAe,MAAM,EAC3CA,EAAgB,KAAM,eAAgB,OAAO,EAC7CA,EAAgB,KAAM,gBAAiB,EAAK,EAC5CA,EAAgB,KAAM,gBAAiB,EAAK,EAC5CA,EAAgB,KAAM,kBAAmB,EAAK,EAC9CA,EAAgB,KAAM,mBAAoB,CAAC,EAC3CA,EAAgB,KAAM,uBAAwB,EAAE,EAChDA,EAAgB,KAAM,oBAAqB,MAAM,EACjD,KAAK,cAAgBisB,GAChBkO,EAAwB,KAAK,cAAc,OAAO,YAAc,MAAQA,IAA0B,QAAUA,EAAsB,mBACrI,KAAK,QAAQ,SAAS,eAAe,EACrC,KAAK,QAAQ,GAAG,QAAS,KAAK,eAAe,KAAK,IAAI,CAAC,GAEzD,KAAK,cAAgB,KAAK,QAAQ,KAAK,UAAU,EACjD,KAAK,qBAAuB,KAAK,QAAQ,KAAK,sBAAsB,EACpE,KAAK,qBAAqB,KAAI,EAC9B,KAAK,kBAAoB,KAAK,QAAQ,KAAK,8BAA8B,EACzE,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,kBAAkB,GAAG,QAAS,KAAK,kBAAkB,EAC1D,KAAK,kBAAkB,GAAG,UAAW,KAAK,oBAAoB,EAC9D,KAAK,kBAAoB,KAAK,QAAQ,KAAK,cAAc,EACzD,KAAK,OAASrvB,EACd,KAAK,OAAO,GAAG,SAAU,KAAK,gBAAiB,IAAI,EACnD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,2BAA6B,KAAK,2BAA2B,KAAK,IAAI,EAC3E,KAAK,+BAAiC,KAAK,+BAA+B,KAAK,IAAI,EACnF,KAAK,6BAA+B,KAAK,6BAA6B,KAAK,IAAI,EAC/E,KAAK,2BAA6B,KAAK,2BAA2B,KAAK,IAAI,EAC3E,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,cAAc,GAAG,YAAa,KAAK,0BAA0B,EAClE,KAAK,kBAAkB,GAAG,YAAa,KAAK,8BAA8B,EAC1E,KAAK,cAAc,GAAG,SAAU,KAAK,kBAAkB,EACvD,KAAK,cAAc,GAAG,eAAgB,KAAK,mBAAmB,EAC9D,KAAK,cAAc,GAAG,cAAe,KAAK,kBAAkB,EAG5D,KAAK,cAAc,OAAO,KAAK,iBAAiB,EAEhD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,eAAe,EACpE,KAAK,kBAAkB,KAAI,EAC3B,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,mBAAqB+yB,EAAyB,KAAK,cAAc,OAAO,YAAc,MAAQA,IAA2B,OAAS,OAASA,EAAuB,iBACvK,KAAK,gBAAe,CACtB,CAQA,UAAUnJ,EAAapvB,EAAO,CAG5B,QAASjF,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IACpC,GAAI,KAAK,KAAKA,CAAC,EAAE,cAAgBq0B,EAC/B,OAGJ,IAAI4M,EAAM,IAAIJ,GAAI,KAAMxM,CAAW,EACnC,GAAI,KAAK,KAAK,SAAW,EAAG,CAC1B,KAAK,KAAK,KAAK4M,CAAG,EAClB,KAAK,cAAc,OAAOA,EAAI,OAAO,EACrC,MACF,CACIh8B,IAAU,SACZA,EAAQ,KAAK,KAAK,QAEhBA,EAAQ,EACV,KAAK,KAAKA,EAAQ,CAAC,EAAE,QAAQ,MAAMg8B,EAAI,OAAO,EAE9C,KAAK,KAAK,CAAC,EAAE,QAAQ,OAAOA,EAAI,OAAO,EAEzC,KAAK,KAAK,OAAOh8B,EAAO,EAAGg8B,CAAG,EAC9B,KAAK,gBAAe,CACtB,CAOA,UAAU5M,EAAa,CACrB,QAASr0B,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IACpC,GAAI,KAAK,KAAKA,CAAC,EAAE,cAAgBq0B,EAAa,CAC5C,KAAK,KAAKr0B,CAAC,EAAE,UAAS,EACtB,KAAK,KAAK,OAAOA,EAAG,CAAC,EACrB,MACF,CAEF,MAAM,IAAI,MAAM,8CAA8C,CAChE,CAOA,qBAAqBq0B,EAAa,CAGhC,QAFI6M,EAAuBC,EAAwBC,EAC/CN,EACK9gC,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IACpC8gC,EAAW,KAAK,KAAK9gC,CAAC,EAAE,cAAgBq0B,EACxC,KAAK,KAAKr0B,CAAC,EAAE,UAAU8gC,CAAQ,EAC3BA,IAAa,KACf,KAAK,kBAAoBzM,EACzB,KAAK,OAAO,OAAO,gBAAkBr0B,IAKxCkhC,EAAwB,KAAK,MAAME,EAAwB,KAAK,OAAO,OAAO,mBAAqB,MAAQA,IAA0B,OAASA,EAAwB,CAAC,EAAE,QAAQ,IAAI,CAAC,KAAO,MAAQF,IAA0B,SAAWC,EAAyBD,EAAsB,kBAAoB,MAAQC,IAA2B,QAAUA,EAAuB,KAAKD,EAAuB,CAE5Y,OAAQ,SACd,CAAK,EACD,KAAK,4BAA2B,EAChC,KAAK,gBAAe,EACpB,KAAK,OAAO,kBAAkB,cAAc,CAC9C,CASA,SAASG,EAAU,CACjB,IAAIC,EAAW,KAAK,OAAO,QAAQ,KACnC,OAAIA,GAAY,CAAC,KAAK,OAAO,QAAOA,EAAW,OAC3CD,IAAa,QAAa,KAAK,OAAO,QAAQ,OAASA,IACzD,KAAK,OAAO,QAAQ,KAAOA,EAC3B,KAAK,OAAO,qBAAoB,GAE3BC,CACT,CAIA,sBAAuB,CACrB,IAAIC,GACHA,EAAwB,KAAK,cAAc,IAAI,CAAC,KAAO,MAAQA,IAA0B,QAAUA,EAAsB,iBAAiB,QAAS,KAAK,kBAAmB,CAC1K,QAAS,EACf,CAAK,CACH,CAGA,sBAAuB,CACrB,IAAIC,GACHA,EAAyB,KAAK,cAAc,IAAI,CAAC,KAAO,MAAQA,IAA2B,QAAUA,EAAuB,oBAAoB,QAAS,KAAK,iBAAiB,CAClL,CACA,kBAAkBt1B,EAAO,CACvB,IAAIu1B,EAASv1B,EAAM,cACnB,GAAMu1B,aAAkB,YAKxB,KAAIxuB,EAAQ,KAAK,IAAI/G,EAAM,MAAM,EAAI,KAAK,IAAIA,EAAM,MAAM,EAAIA,EAAM,OAASA,EAAM,OAInF,GAAIA,EAAM,YAAc,WAAW,eAAgB,CACjD,IAAIw1B,EAGJzuB,IAAUyuB,EAAwB,KAAK,cAAc,gBAAkB,MAAQA,IAA0B,OAASA,EAAwB,CAC5I,MAAWx1B,EAAM,YAAc,WAAW,iBAExC+G,GAAS,IAAM,GAEjBwuB,EAAO,YAAc,KAAK,MAAMxuB,CAAK,EACvC,CAGA,oBAAqB,CACnB,KAAK,mBAAkB,CACzB,CAGA,qBAAsB,CACpB,KAAK,cAAgB,GACjB,KAAK,iBAAiB,KAAK,4BAA2B,EAC1D,KAAK,kBAAkB,GAAG,aAAc,KAAK,qBAAqB,EAClE,KAAK,kBAAkB,GAAG,aAAc,KAAK,yBAAyB,CACxE,CAGA,oBAAqB,CACnB,IAAI0uB,EACJ,KAAK,cAAgB,GACrB,OAAO,sBAAsBA,EAAY,KAAK,OAAS,MAAQA,IAAc,OAASA,EAAY,EAAE,EACpG,KAAK,IAAM,KACX,KAAK,kBAAkB,IAAI,aAAc,KAAK,qBAAqB,EACnE,KAAK,kBAAkB,IAAI,aAAc,KAAK,qBAAqB,EACnE,KAAK,kBAAkB,IAAI,aAAc,KAAK,yBAAyB,EACvE,KAAK,kBAAkB,IAAI,aAAc,KAAK,yBAAyB,CACzE,CAKA,uBAAwB,CACtB,IAAIC,EACJ,KAAK,kBAAkB,GAAG,aAAc,KAAK,qBAAqB,EAClE,KAAK,oBAAoB,KAAK,cAAeA,EAAwB,KAAK,cAAc,WAAU,KAAQ,MAAQA,IAA0B,OAASA,EAAwB,CAAC,CAChL,CACA,2BAA4B,CAC1B,IAAIC,EACJ,KAAK,kBAAkB,GAAG,aAAc,KAAK,yBAAyB,EACtE,KAAK,oBAAoB,KAAK,aAAcA,EAAyB,KAAK,cAAc,WAAU,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,CAAC,CAClL,CACA,uBAAwB,CACtB,IAAIC,EACJ,OAAO,sBAAsBA,EAAa,KAAK,OAAS,MAAQA,IAAe,OAASA,EAAa,EAAE,EACvG,KAAK,IAAM,KACX,KAAK,kBAAkB,IAAI,aAAc,KAAK,qBAAqB,CACrE,CACA,2BAA4B,CAC1B,IAAIC,EACJ,OAAO,sBAAsBA,EAAa,KAAK,OAAS,MAAQA,IAAe,OAASA,EAAa,EAAE,EACvG,KAAK,IAAM,KACX,KAAK,kBAAkB,IAAI,aAAc,KAAK,yBAAyB,CACzE,CAIA,4BAA6B,CAE3B,QADIC,EACKhiC,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,GAAK,EAAG,CAC5C,IAAIiiC,EAAuBC,EAAwBC,EAAwBC,EAAwBC,EACnG,KAAMJ,GAAyBC,EAAyB,KAAK,KAAKliC,CAAC,EAAE,QAAQ,IAAI,CAAC,KAAO,MAAQkiC,IAA2B,OAAS,OAASA,EAAuB,cAAgB,MAAQD,IAA0B,OAASA,EAAwB,KAAOE,GAA0BC,EAAyB,KAAK,cAAc,IAAI,CAAC,KAAO,MAAQA,IAA2B,OAAS,OAASA,EAAuB,eAAiB,MAAQD,IAA2B,OAASA,EAAyB,KAAOE,EAAyB,KAAK,cAAc,gBAAkB,MAAQA,IAA2B,OAASA,EAAyB,GAAI,CAC/nBL,EAAsB,KAAK,KAAKhiC,CAAC,EAAE,QAAQ,IAAI,CAAC,EAChD,KACF,CACF,CACA,GAAIgiC,EACFA,EAAoB,eAAe,CACjC,SAAU,SACV,OAAQ,SAChB,CAAO,EACD,KAAK,6BAA6B,KAAK,YAAY,MAC9C,CACL,IAAIjC,EAAgB,KAAK,cAAc,IAAI,CAAC,EAC5C,GAAIA,EAAe,CACjB,IAAIuC,EAAwBC,EAC5BxC,EAAc,YAAcuC,GAA0BC,EAAyB,KAAK,cAAc,IAAI,CAAC,KAAO,MAAQA,IAA2B,OAAS,OAASA,EAAuB,eAAiB,MAAQD,IAA2B,OAASA,EAAyB,CAClR,CACF,CACF,CAIA,gCAAiC,CAE/B,QADIE,EACKxiC,EAAI,KAAK,KAAK,OAAS,EAAGA,GAAK,EAAGA,GAAK,EAAG,CACjD,IAAIyiC,EAAwBC,EAAwBC,EACpD,KAAMF,GAA0BC,EAAyB,KAAK,KAAK1iC,CAAC,EAAE,QAAQ,IAAI,CAAC,KAAO,MAAQ0iC,IAA2B,OAAS,OAASA,EAAuB,cAAgB,MAAQD,IAA2B,OAASA,EAAyB,KAAOE,EAAyB,KAAK,cAAc,WAAU,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,GAAI,CACvYH,EAAqB,KAAK,KAAKxiC,CAAC,EAAE,QAAQ,IAAI,CAAC,EAC/C,KACF,CACF,CACA,GAAIwiC,EACFA,EAAmB,eAAe,CAChC,SAAU,SACV,OAAQ,OAChB,CAAO,EACD,KAAK,6BAA6B,KAAK,WAAW,MAC7C,CACL,IAAIzC,EAAgB,KAAK,cAAc,IAAI,CAAC,EACxCA,IACFA,EAAc,WAAa,EAE/B,CACF,CAIA,6BAA6B3T,EAAW,CAEtC,KAAK,UAAY,OAAO,WAAW,IAAM,CACvC,IAAIwW,EACJ,KAAK,oBAAoBxW,GAAYwW,EAAyB,KAAK,cAAc,WAAU,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,EAAG,GAAG,CAChL,EAAG,KAAK,aAAa,EACrB,OAAO,iBAAiB,UAAW,KAAK,0BAA0B,CACpE,CAGA,4BAA6B,CAC3B,IAAIC,EAAiBC,EACrB,cAAcD,EAAkB,KAAK,aAAe,MAAQA,IAAoB,OAASA,EAAkB,EAAE,EAC7G,KAAK,UAAY,KACjB,sBAAsBC,EAAa,KAAK,OAAS,MAAQA,IAAe,OAASA,EAAa,EAAE,EAChG,KAAK,IAAM,KACX,OAAO,oBAAoB,UAAW,KAAK,0BAA0B,CACvE,CAGA,oBAAqB,CACnB,IAAIC,EAAwBC,EAAwBC,EAChD,KAAK,cAAc,WAAU,IAAO,EACtC,KAAK,kBAAkB,MAAK,EAAG,KAAK,WAAY,EAAI,IACzCF,EAAyB,KAAK,cAAc,WAAU,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,KAAOC,EAAyB,KAAK,cAAc,WAAU,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,OAASC,EAAyB,KAAK,cAAc,IAAI,CAAC,KAAO,MAAQA,IAA2B,OAAS,OAASA,EAAuB,aACra,KAAK,cAAc,KAAK,WAAY,EAAI,GAExC,KAAK,cAAc,KAAK,WAAY,EAAK,EACzC,KAAK,kBAAkB,MAAK,EAAG,KAAK,WAAY,EAAK,EAEzD,CAMA,oBAAoB7W,EAAW8W,EAAQ,CACrC,IAAIC,EACAC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAC7EC,EAAgB,UAAU,OAAS,EAAI,UAAU,CAAC,EAAI,OACtDC,EAAe,KAAK,cAAc,IAAI,CAAC,EAC3C,GAAKA,EAGL,KAAIC,EAAmBD,EAAa,sBAAqB,EACzD,GAAIlX,IAAc,KAAK,aAOrB,GANA,KAAK,cAAc,WAAW8W,EAASE,CAAM,EACzC,KAAK,eAEP,KAAK,OAAO,yBAAyBG,EAAiB,KAAO,CAAC,EAG5D,KAAK,cAAc,WAAU,IAAO,EAAG,CACzC,KAAK,mBAAkB,EACvB,MACF,UACSnX,IAAc,KAAK,aAAc,CAC1C,IAAIoX,EAAwBC,EAO5B,GANA,KAAK,cAAc,WAAWP,EAASE,CAAM,EACzC,KAAK,eAEP,KAAK,OAAO,yBAAyBG,EAAiB,MAAQ,CAAC,IAG3DC,EAAyB,KAAK,cAAc,gBAAkB,MAAQA,IAA2B,OAASA,EAAyB,KAAOC,EAAyB,KAAK,cAAc,WAAU,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,KAAOH,EAAa,YAAa,CAClT,KAAK,mBAAkB,EACvB,MACF,CACF,CAGA,OAAO,sBAAsBH,EAAa,KAAK,OAAS,MAAQA,IAAe,OAASA,EAAa,EAAE,EACvG,KAAK,IAAM,OAAO,sBAAsBO,GAAa,CACnD,IAAIC,EAAwBC,EACxBC,EAAYR,GAAiBK,EAC7BI,EAAYJ,EAAYG,EACxBE,EAAY,KAAK,YAAcD,EAAY,GAAM,KAAK,cAAgBA,EAAYA,GACtFC,EAAY,KAAK,IAAIA,GAAYJ,GAA0BC,EAAyB,KAAK,cAAc,IAAI,CAAC,KAAO,MAAQA,IAA2B,OAAS,OAASA,EAAuB,eAAiB,MAAQD,IAA2B,OAASA,EAAyB,GAAQ,EAC7R,KAAK,oBAAoBvX,EAAW8W,EAAQa,EAAWF,CAAS,CAClE,CAAC,EACH,CAOA,cAAchG,EAAY,CACxB,OAAI,KAAK,aAAe,KAAK,YAAW,GACtC,KAAK,YAAY,QAAQA,EAAa,OAAS,MAAM,EAAC,EAC/C,IAEF,EACT,CAKA,WAAY,CACV,KAAK,KAAK,UAAW,IAAI,EACzB,QAAS79B,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IACpC,KAAK,KAAKA,CAAC,EAAE,UAAS,EAExB,KAAK,qBAAoB,EACzB,KAAK,mBAAkB,EACvB6rB,EAAE,QAAQ,EAAE,IAAI,UAAW,KAAK,2BAA2B,EAC3D,KAAK,kBAAkB,IAAI,QAAS,KAAK,kBAAkB,EAC3D,KAAK,kBAAkB,IAAI,UAAW,KAAK,oBAAoB,EAC/D,KAAK,QAAQ,OAAM,CACrB,CAOA,kBAAkB1qB,EAAM,CACtB,GAAIA,KAAQ,KAAK,OAAO,QAAS,OAAO,KAAK,OAAO,QAAQA,CAAI,CAClE,CAKA,iBAAkB,CACb,IAAC6iC,EAAYC,EAAQne,EAAOoe,EAAUC,EA0BzC,GApBAA,EAAmB,KAAK,cAAc,OAAO,OAAO,YAC7B,KAAK,cAAc,OAAO,OAAO,aAC7B,KAAK,cAAc,OAAO,OAAO,iBAC5D,KAAK,kBAAoB,IAAIxO,GAAa,KAAMwO,EAAkB,iBAAkB,KAAK,2BAA2B,EACpH,KAAK,kBAAkB,QAAQ,KAAI,EACnC,KAAK,kBAAkB,QAAQ,KAAK,aAAa,EACjD,KAAK,cAAc,KAAI,EAKnB,KAAK,kBAAkB,QAAQ,IACjCF,EAAS,KAAK,eAAe,KAAK,IAAI,EACtCne,EAAQ,KAAK,kBAAkB,QAAQ,EACvC,IAAI6P,GAAa,KAAM7P,EAAO,YAAame,CAAM,GAM/C,KAAK,kBAAkB,UAAU,EAAG,CACtCC,EAAW,KAAK,OAAO,eAAe,KAAK,KAAK,MAAM,EACtD,IAAIE,EAAgB,KAAK,kBAAkB,UAAU,EACjDC,EAAgB,KAAK,kBAAkB,UAAU,EACjDC,EAAiB,IAAI3O,GAAa,KAAMyO,EAAe,cAAeF,CAAQ,EAClF,KAAK,OAAO,GAAG,YAAa,UAAY,CACtCI,EAAe,QAAQ,KAAK,QAASD,GAAqE,EAAE,CAC9G,CAAC,EACD,KAAK,OAAO,GAAG,YAAa,UAAY,CACtCC,EAAe,QAAQ,KAAK,QAASF,GAAqE,EAAE,CAC9G,CAAC,CACH,CAKI,KAAK,gBACPJ,EAAa,KAAK,OAAO,OAAO,KAAK,KAAK,MAAM,EAChDle,EAAQ,KAAK,kBAAkB,OAAO,EACtC,KAAK,YAAc,IAAI6P,GAAa,KAAM7P,EAAO,WAAYke,CAAU,EAE3E,CAOA,6BAA8B,CAC5B,GAAI,KAAK,gBAAiB,CACxB,KAAK,4BAA2B,EAChC,MACF,CAIA,KAAK,gBAAkB,KAAK,cAAc,MAAM,EAAI,EAAE,SAAS,KAAK,oBAAoB,EAAE,SAAQ,EAAG,YAAY,WAAW,EAI5HnY,EAAE,SAAS,IAAI,EAAE,OAAO,KAAK,oBAAoB,EAGjD,KAAK,qBAAqB,KAAI,EAC9B,KAAK,gBAAkB,GAKvB,KAAK,QAAQ,SAAS,kBAAkB,EAGxC,KAAK,kBAAkB,IAAI,EAAE,EAAE,MAAK,EACpC,KAAK,iBAAmB,EACxB,KAAK,gBAAgB,GAAG,KAAK,gBAAgB,EAAE,SAAS,oBAAoB,EAC5EA,EAAE,QAAQ,EAAE,GAAG,YAAa,KAAK,2BAA2B,EAC5D,KAAK,8BAA6B,CACpC,CAGA,qBAAqB,EAAG,CACtB,GAAI,EAAE,MAAQ,SAAU,CACtB,KAAK,4BAA2B,EAChC,MACF,CAGA,GAAI,KAAK,mBAAqB,GAAI,OAClC,GAAI,EAAE,MAAQ,SAAW,EAAE,MAAQ,IAAK,CAEtC,KAAK,4BAA2B,EAChC,KAAK,KAAK,KAAK,gBAAgB,EAAE,YAAW,EAC5C,MACF,CACA,SAAS0Y,EAAqBvxB,EAAYC,EAAOuxB,EAAiB,CAChE,GAAIA,GAAmB,MAAQA,EAAgB,OAAS,EACtD,MAAO,GAGT,QADIxkC,GAAKgT,EAAaC,EAAQuxB,EAAgB,QAAUA,EAAgB,OACjExkC,IAAMgT,GAAY,CACvB,GAAIwxB,EAAgB,GAAGxkC,CAAC,EAAE,IAAI,SAAS,IAAM,OAC3C,OAAOA,EAETA,GAAKA,EAAIiT,EAAQuxB,EAAgB,QAAUA,EAAgB,MAC7D,CACA,OAAOxxB,CACT,CAGA,GAAI,EAAE,MAAQ,aAAe,EAAE,MAAQ,OAAS,EAAE,WAAa,GAAO,CACpE,IAAIyxB,EAAuBC,EAC3B,EAAE,eAAc,GACfD,EAAwB,KAAK,mBAAqB,MAAQA,IAA0B,QAAUA,EAAsB,GAAG,KAAK,gBAAgB,EAAE,YAAY,oBAAoB,EAC/K,KAAK,iBAAmBF,EAAqB,KAAK,iBAAkB,EAAG,KAAK,eAAe,GAC1FG,EAAyB,KAAK,mBAAqB,MAAQA,IAA2B,QAAUA,EAAuB,GAAG,KAAK,gBAAgB,EAAE,SAAS,oBAAoB,CACjL,SAAW,EAAE,MAAQ,WAAa,EAAE,MAAQ,MAAO,CACjD,IAAIC,EAAwBC,EAC5B,EAAE,eAAc,GACfD,EAAyB,KAAK,mBAAqB,MAAQA,IAA2B,QAAUA,EAAuB,GAAG,KAAK,gBAAgB,EAAE,YAAY,oBAAoB,EAClL,KAAK,iBAAmBJ,EAAqB,KAAK,iBAAkB,GAAI,KAAK,eAAe,GAC3FK,EAAyB,KAAK,mBAAqB,MAAQA,IAA2B,QAAUA,EAAuB,GAAG,KAAK,gBAAgB,EAAE,SAAS,oBAAoB,CACjL,CACF,CAGA,mBAAmB14B,EAAO,CACxB,GAAI,KAAK,iBAAmB,KAI5B,MAAK,gBAAgB,GAAG,KAAK,gBAAgB,EAAE,YAAY,oBAAoB,EAC/E,KAAK,iBAAmB,GACxB,QAASlM,EAAI,EAAGA,EAAI,KAAK,gBAAgB,OAAQA,IAAK,CACpD,IAAI6kC,EAAuBC,IACrBD,GAAyBC,EAAyB,KAAK,KAAK9kC,CAAC,EAAE,YAAY,OAAO,SAAW,MAAQ8kC,IAA2B,OAAS,OAASA,EAAuB,YAAW,EAAG,QAAQ54B,EAAM,OAAO,MAAM,YAAW,CAAE,KAAO,MAAQ24B,IAA0B,OAASA,EAAwB,MAAQ,IACrT,KAAK,gBAAgB,GAAG7kC,CAAC,EAAE,IAAI,UAAW,EAAE,EACxC,KAAK,mBAAqB,KAAI,KAAK,iBAAmBA,IAE1D,KAAK,gBAAgB,GAAGA,CAAC,EAAE,IAAI,UAAW,MAAM,CAEpD,CACI,KAAK,mBAAqB,IAC5B,KAAK,gBAAgB,GAAG,KAAK,gBAAgB,EAAE,SAAS,oBAAoB,EAEhF,CAOA,4BAA4BkM,EAAO,CACjC,IAAI64B,EAAuBC,EAEtB,KAAK,kBACN94B,IAAU64B,EAAwB,KAAK,qBAAqB,IAAI,CAAC,KAAO,MAAQA,IAA0B,QAAUA,EAAsB,SAAS74B,EAAM,MAAM,GAGxJA,KAAW84B,EAAwB,KAAK,qBAAuB,MAAQA,IAA0B,OAAS,OAASA,EAAsB,QAAQ,IAAI,CAAC,KAAO94B,EAAM,SAI9K,KAAK,QAAQ,YAAY,kBAAkB,EAC3C,KAAK,qBAAqB,KAAI,EAC9B,KAAK,gBAAkB,GAGvB,KAAK,QAAQ,OAAO,KAAK,oBAAoB,EAG7C,KAAK,qBAAqB,KAAK,UAAU,EAAE,OAAM,EACjD2f,EAAE,QAAQ,EAAE,IAAI,YAAa,KAAK,2BAA2B,GAC/D,CAOA,+BAAgC,CAC9B,IAAIoZ,EAAwBC,EAAwBC,EAAWC,EAC/D,GAAK,KAAK,iBACN,GAAC,KAAK,iBAAmB,KAAK,gBAAgB,QAAU,GAC5D,KAAIC,GAAgBJ,GAA0BC,EAAyB,KAAK,qBAAqB,IAAI,CAAC,KAAO,MAAQA,IAA2B,OAAS,OAASA,EAAuB,gBAAkB,MAAQD,IAA2B,OAASA,EAAyB,EAChR,GAAII,IAAiB,EAErB,KAAIC,EAAY,KAAK,qBAAqB,CAAC,EAAE,sBAAqB,EAC9DC,GAAgBJ,EAAYtZ,EAAE,MAAM,EAAE,OAAM,KAAQ,MAAQsZ,IAAc,OAASA,EAAY,EAC/FK,GAAeJ,EAAWvZ,EAAE,MAAM,EAAE,MAAK,KAAQ,MAAQuZ,IAAa,OAASA,EAAW,EAG9F,GAAK,KAAK,kBACV,KAAIK,EAAc,KAAK,kBAAkB,QAAQ,CAAC,EAAE,sBAAqB,EAIrEC,EAAgBL,EAAeE,EAAeE,EAAY,OAC1DE,EAAa,CAACD,GAAiBD,EAAY,OAASF,EAAe,GAInEK,EAAO,KAAK,IAAIH,EAAY,MAAQE,EAAaF,EAAY,MAAQ,GAAID,EAAcF,EAAU,MAAQ,KAAK,OAAO,EAErHO,EAAMF,EAAa,KAAK,IAAIF,EAAY,IAAMJ,EAAc,KAAK,OAAO,EAAII,EAAY,OAGxFK,EAAYP,EAAeM,EAAM,KAAK,QAC1C,KAAK,qBAAqB,IAAI,CAC5B,aAAcC,EACd,IAAAD,EACA,KAAAD,CACN,CAAK,IACH,CAQA,aAAc,CACZ,MAAO,GAAQ,KAAK,OAAO,OAAO,YAAc,KAAK,cAAc,OAAO,SAAS,cACrF,CACA,gBAAiB,CACf,GAAI,KAAK,cAAc,OAAO,SAAS,mBAAqB,GAC1D,KAAK,OAAO,OAAM,MACb,CACL,IAAIG,GACHA,EAAwB,KAAK,qBAAuB,MAAQA,IAA0B,QAAUA,EAAsB,OAAM,CAC/H,CACF,CAOA,eAAe75B,EAAO,CAChBA,EAAM,SAAW,KAAK,QAAQ,CAAC,GACjC,KAAK,OAAO,OAAM,CAEtB,CAKA,iBAAkB,CAChB,GAAI,KAAK,KAAK,SAAW,EAGzB,KAAI6zB,EAAgB,KAAK,cAAc,IAAI,CAAC,EAK5C,GAJI,KAAK,iBAEP,KAAK,8BAA6B,EAEhC,EAACA,EAGL,IAAI,CAAC,KAAK,eAAiBA,EAAc,YAAcA,EAAc,YAAa,CAChF,IAAIiG,GACHA,EAAyB,KAAK,qBAAuB,MAAQA,IAA2B,QAAUA,EAAuB,QAAQ,KAAI,EACtI,KAAK,cAAc,KAAI,EACvB,KAAK,kBAAkB,KAAI,EAC3B,KAAK,cAAgB,EACvB,SAAW,KAAK,eAAiBjG,EAAc,aAAeA,EAAc,YAAa,CACvF,IAAIkG,GACHA,EAAyB,KAAK,qBAAuB,MAAQA,IAA2B,QAAUA,EAAuB,QAAQ,KAAI,EACtI,KAAK,cAAc,KAAI,EACvB,KAAK,kBAAkB,KAAI,EAC3B,KAAK,cAAgB,EACvB,CACI,KAAK,eAAe,KAAK,mBAAkB,GACjD,CACF,CACAtmC,EAAgB49B,GAAQ,YAAa,CAAC,0BAA2B,4BAA6B,gCAAiC,mCAAoC,uFAAwF,QAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EACtR59B,EAAgB49B,GAAQ,0BAA2B,CAAC,2BAA4B,yCAA0C,OAAO,EAAE,KAAK,EAAE,CAAC,EAC3I59B,EAAgB49B,GAAQ,sBAAuB,CAAC,oCAAoC,EAAE,KAAK,EAAE,CAAC,EC5tB9F,SAAS59B,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAGxS,MAAM26B,EAAS,CAC5B,YAAYqD,EAAYjF,EAAMoN,EAAU,CACtCvmC,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,UAAW,MAAM,EACvC,KAAK,YAAco+B,EACnB,KAAK,MAAQjF,EACb,KAAK,UAAYoN,EAAWpN,EAAOA,EAAOoN,EAC1C,KAAK,QAAU,KAAK,eAAc,EAClC,KAAK,cAAgB,IAAIpY,GAAa,KAAK,OAAO,CACpD,CACA,GAAG5hB,EAAO3H,EAAU8D,EAAS,CAC3B,IAAI89B,GACHA,EAAsB,KAAK,iBAAmB,MAAQA,IAAwB,QAAUA,EAAoB,GAAGj6B,EAAO3H,EAAU8D,CAAO,CAC1I,CACA,WAAY,CACV,IAAI+9B,GACHA,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,QAAO,EACvH,KAAK,cAAgB,KACrB,KAAK,QAAQ,OAAM,CACrB,CACA,gBAAiB,CACf,IAAIC,EAAaxa,EAAE,oCAAoC,EACnDxhB,EAAUwhB,EAAE,iCAAiC,EACjDxhB,EAAQ,OAAOg8B,CAAU,EACzB,IAAIC,EAAmB,KAAK,UAAY,KAAK,MACzCC,EAAkBD,EAAmB,EACzC,OAAI,KAAK,aACPD,EAAW,IAAI,MAAO,CAACE,CAAe,EACtCF,EAAW,IAAI,SAAU,KAAK,MAAQC,CAAgB,EACtDj8B,EAAQ,SAAS,aAAa,EAC9BA,EAAQ,OAAU,KAAK,KAAK,IAE5Bg8B,EAAW,IAAI,OAAQ,CAACE,CAAe,EACvCF,EAAW,IAAI,QAAS,KAAK,MAAQC,CAAgB,EACrDj8B,EAAQ,SAAS,eAAe,EAChCA,EAAQ,MAAS,KAAK,KAAK,GAEtBA,CACT,CACF,4OCzCA,IAAIm8B,GAAK,CACP,OAAAzhB,GACA,UAAAwK,GACA,SAAAkX,GACA,OAAAC,GACA,MAAAjhC,GACA,MAAAkhC,EACF,ECbA,SAAS/8B,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,EAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,EAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAoBvT,IAAI6mC,GAA2B,CAAC,SAAU,MAAO,QAAS,WAAW,EAQ9D,MAAMC,WAAsB1b,EAAa,CAK9C,OAAO,mBAAmBpG,EAAQ,CAChC,OAAO6hB,GAAyB,SAAS7hB,EAAO,IAAI,CACtD,CAUA,OAAO,aAAaA,EAAQ,CAC1B,OAAOiL,GAAajL,CAAM,CAC5B,CASA,OAAO,eAAeA,EAAQ,CAC5B,OAAOoL,GAAepL,CAAM,CAC9B,CACA,YAAYA,EAAQwK,EAAW,CAC7B,MAAK,EACL5vB,EAAgB,KAAM,gBAAiB,EAAK,EAC5CA,EAAgB,KAAM,cAAe,EAAK,EAC1CA,EAAgB,KAAM,mBAAoB,MAAM,EAChDA,EAAgB,KAAM,cAAe,CACnC,qBAAsB2vB,EAC5B,CAAK,EACD3vB,EAAgB,KAAM,qBAAsB,MAAM,EAClDA,EAAgB,KAAM,aAAc,EAAE,EACtCA,EAAgB,KAAM,iBAAkB,IAAI,EAC5CA,EAAgB,KAAM,uBAAwBksB,EAAE,uCAAuC,CAAC,EACxFlsB,EAAgB,KAAM,yBAA0B,EAAK,EACrDA,EAAgB,KAAM,qBAAsB,EAAK,EACjDA,EAAgB,KAAM,eAAgB,EAAE,EACxCA,EAAgB,KAAM,6BAA8B,EAAK,EACzDA,EAAgB,KAAM,aAAc,EAAI,EACxCA,EAAgB,KAAM,iBAAkB,IAAI,GAAK,EACjDA,EAAgB,KAAM,iBAAkB,IAAI,EAC5CA,EAAgB,KAAM,uBAAwB,MAAM,EACpDA,EAAgB,KAAM,QAAS,IAAI,EACnCA,EAAgB,KAAM,SAAU,IAAI,EACpCA,EAAgB,KAAM,OAAQ,MAAM,EAEpCA,EAAgB,KAAM,cAAe,EAAE,EACvCA,EAAgB,KAAM,eAAgB,IAAI,EAC1CA,EAAgB,KAAM,cAAe,EAAK,EAC1CA,EAAgB,KAAM,WAAY,IAAImnC,GAAS,IAAI,CAAC,EACpDnnC,EAAgB,KAAM,SAAU,MAAM,EACtCA,EAAgB,KAAM,YAAa,MAAM,EACzCA,EAAgB,KAAM,qBAAsB,MAAM,EAClDA,EAAgB,KAAM,sBAAuB,IAAI,EACjDA,EAAgB,KAAM,qBAAsBksB,EAAE,6CAA6C,CAAC,EAC5F,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,EACzC,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,EACzC,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,OAAS,KAAK,cAAc9G,CAAM,EACvC,KAAK,mBAAqBwK,EAC1B,KAAK,UAAY,KAAK,cAAa,EACnC,KAAK,qBAAuB,KAAK,OAAO,WAAW,aAC/C,KAAK,aACP1D,EAAE,MAAM,EAAE,IAAI,aAAc,QAAQ,CAExC,CAiBA,kBAAkB1qB,EAAM4lC,EAAa,CACnC,GAAI,OAAOA,GAAgB,aAAeA,GAAe,MAAQA,EAAY,QAAU,MAAQ,OAAOA,EAAY,QAAW,YAC3H,MAAM,IAAI,MAAM,wCAAwC,EAE1D,GAAI,KAAK,YAAY5lC,CAAI,IAAM,OAC7B,MAAM,IAAI,MAAM,aAAeA,EAAO,wBAAwB,EAEhE,KAAK,YAAYA,CAAI,EAAI4lC,EACzB,IAAIljC,EAAU,IAAM,CAClB,GAAI,KAAK,YAAY1C,CAAI,IAAM,OAC7B,MAAM,IAAI,MAAM,aAAeA,EAAO,oBAAoB,EAE5D,OAAO,KAAK,YAAYA,CAAI,CAC9B,EACA,OAAO0C,CACT,CAMA,qBAAqBkjC,EAAa,CAChC,KAAK,mBAAqBA,CAC5B,CAOA,SAASC,EAAM,CACb,GAAI,KAAK,gBAAkB,GACzB,MAAM,IAAI,MAAM,iDAAiD,EAEnE,GAAIA,GAAQ,EAAEA,aAAgB9Q,IAC5B,MAAM,IAAI,MAAM,4BAA4B,EAM9C,IAAInR,EAAS,CACX,SAAUlb,GAAc,GAAI,KAAK,OAAO,QAAQ,EAChD,WAAYA,GAAc,GAAI,KAAK,OAAO,UAAU,EACpD,OAAQA,GAAc,GAAI,KAAK,OAAO,MAAM,EAC5C,QAAS,EACf,EAKQhJ,EAAQ,SAAcomC,EAAYxiC,EAAM,CAC1C,QAASgU,KAAOhU,EAAK,OACfgU,IAAQ,YACVwuB,EAAWxuB,CAAG,EAAIhU,EAAK,OAAOgU,CAAG,GAOrC,GAJIwuB,EAAW,gBAAkB,uBAE/BA,EAAW,KAAO,mBAEhBxiC,EAAK,aAAa,OAAQ,CAC5BwiC,EAAW,QAAU,GACrB,QAASjnC,EAAI,EAAGA,EAAIyE,EAAK,aAAa,OAAQzE,IAC5CinC,EAAW,QAAQjnC,CAAC,EAAI,GACxBa,EAAMomC,EAAW,QAAQjnC,CAAC,EAAGyE,EAAK,aAAazE,CAAC,CAAC,CAErD,CACF,EACIgnC,EACFnmC,EAAMkkB,EAAQ,CACZ,aAAc,CAACiiB,CAAI,CAC3B,CAAO,EAEDnmC,EAAMkkB,EAAQ,KAAK,IAAI,EAMzB,KAAK,yBAAwB,EAC7BA,EAAO,YAAc,GACrB,QAAS,EAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,IAC3CA,EAAO,YAAY,KAAK,KAAK,YAAY,CAAC,EAAE,UAAU,EAMxD,OAAAA,EAAO,gBAAkB,KAAK,eAAiB,gBAAkB,OAC1DA,CACT,CAMA,aAAa5jB,EAAM,CACjB,OAAO,KAAK,YAAYA,CAAI,CAC9B,CASA,sBAAuB,CACrB,OAAO,KAAK,kBACd,CAUA,MAAO,CAcL,GARI,KAAK,qBAAuB,KAC9B,KAAK,kBAAiB,EACtB,KAAK,mBAAqB,IAMxB,SAAS,aAAe,WAAa,SAAS,OAAS,KAAM,CAC/D0qB,EAAE,QAAQ,EAAE,MAAM,KAAK,KAAK,KAAK,IAAI,CAAC,EACtC,MACF,CAOA,GAAI,KAAK,cAAgB,IAAQ,KAAK,yBAA2B,GAAO,CACtE,WAAW,KAAK,KAAK,KAAK,IAAI,EAAG,CAAC,EAClC,KAAK,uBAAyB,GAC9B,MACF,CACI,KAAK,cAAgB,IACvB,KAAK,oBAAmB,EAE1B,KAAK,cAAa,EAClB,KAAK,oBAAsB,IAAI4J,GAC/B,KAAK,WAAU,EACf,KAAK,QAAQ,KAAK,MAAM,EACxB,KAAK,YAAW,EAChB,KAAK,cAAgB,GACrB,KAAK,yBAAwB,EAC7B,KAAK,KAAK,aAAa,CACzB,CAOA,cAAc7e,EAAIvM,EAAS,CACzB,KAAK,eAAe,IAAIuM,EAAIvM,CAAO,EACnC,KAAK,eAAiB,CAAC,GAAG,KAAK,eAAe,OAAM,CAAE,EACtD,KAAK,KAAK,sBAAsB,CAClC,CAQA,iBAAiBuM,EAAIvM,EAAS,CAC5B,IAAI68B,EAAU,KAAK,eAAe,IAAItwB,CAAE,EACpCswB,IAAY78B,IAId,KAAK,eAAe,OAAOuM,CAAE,EAC7B,KAAK,eAAiB,CAAC,GAAG,KAAK,eAAe,OAAM,CAAE,EACtD,KAAK,KAAK,sBAAsB,EAEpC,CAUA,kBAAmB,CACjB,OAAO,KAAK,cACd,CACA,eAAgB,CACd,KAAK,OAAO,SAAS,WAAa,GAClC,KAAK,OAAO,WAAW,aAAe,KAAK,qBAC3C,KAAK,wBAAuB,EAAG,QAAQ0lB,GAAS,CAC9CA,EAAM,QAAQ,KAAO,GACrBA,EAAM,OAAO,QAAQ,OAAO,EAAI,CAClC,CAAC,EACD,KAAK,WAAU,CACjB,CACA,gBAAiB,CACf,KAAK,OAAO,SAAS,WAAa,GAClC,KAAK,OAAO,WAAW,aAAe,EACtC,KAAK,wBAAuB,EAAG,QAAQA,GAAS,CAC9CA,EAAM,QAAQ,KAAO,GACrBA,EAAM,OAAO,QAAQ,OAAO,EAAK,CACnC,CAAC,EACD,KAAK,WAAU,CACjB,CAOA,WAAWhd,EAAOvC,EAAQ,CACxB,IAAI/P,EAAMkP,EAGV,GAFA,KAAK,OAASlP,EAAOsS,GAA6C,KAAK,UAAU,WAAa,MAAQtS,IAAS,OAASA,EAAO,EAC/H,KAAK,QAAUkP,EAAQa,GAAgD,KAAK,UAAU,YAAc,MAAQb,IAAU,OAASA,EAAQ,EACnI,KAAK,gBAAkB,GAAM,CAE/B,GADA,KAAK,KAAK,cAAc,UAAW,CAAC,KAAK,MAAO,KAAK,MAAM,CAAC,EACxD,KAAK,eAAgB,CACvB,IAAIirB,EAAuBC,EAC3B,KAAK,eAAe,QAAQ,OAAOD,EAAwB,KAAK,UAAU,MAAK,KAAQ,MAAQA,IAA0B,OAASA,EAAwB,CAAC,EAC3J,KAAK,eAAe,QAAQ,QAAQC,EAAwB,KAAK,UAAU,OAAM,KAAQ,MAAQA,IAA0B,OAASA,EAAwB,CAAC,EAC7J,KAAK,eAAe,cAAc,SAAS,CAC7C,CACA,KAAK,yBAAwB,CAC/B,CACF,CAMA,SAAU,CACR,IAAIC,EACA,KAAK,gBAAkB,IAAS,CAAC,KAAK,OAG1C,KAAK,UAAS,EACdxb,EAAE,MAAM,EAAE,IAAI,SAAU,KAAK,SAAS,EACtCA,EAAE,MAAM,EAAE,IAAI,sBAAuB,KAAK,SAAS,EACnDA,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,IAAI,UAAU,EACvCA,EAAE,MAAM,EAAE,IAAI,UAAW,KAAK,cAAc,EAC5C,KAAK,KAAK,cAAc,YAAa,GAAI,EAAI,EAC7C,KAAK,KAAK,aAAe,GACzB,KAAK,mBAAmB,OAAM,GAC7Bwb,EAAwB,KAAK,uBAAyB,MAAQA,IAA0B,QAAUA,EAAsB,QAAO,EAChI,KAAK,SAAS,QAAO,EACrB,KAAK,aAAa,QAAQ,SAAUC,EAAY,CAC9CA,EAAW,cAAc,QAAO,CAClC,CAAC,EACD,KAAK,aAAe,GACtB,CAkBA,kBAAkBviB,EAAQta,EAAQ,CAChC,IAAI88B,EACAC,EACJ,GAAI,OAAOziB,EAAO,MAAS,SACzB,MAAM,IAAI8Q,GAAmB,2BAA4B9Q,CAAM,EAMjE,GAJIA,EAAO,OAAS,oBAClBA,EAAO,KAAO,YACdA,EAAO,cAAgB,sBAErB,CAAC8hB,GAAc,mBAAmB9hB,CAAM,EAC1C,MAAAyiB,EAAe,iBAAmBziB,EAAO,KAAO,sBAA6B6hB,GAAyB,KAAK,GAAG,EACxG,IAAI/Q,GAAmB2R,CAAY,EAuB3C,OAfAziB,EAAO,OAAS,aAEhB,EAAEta,aAAkBmyB,KAElBnyB,GAEF,EAAE,KAAK,cAAgB,IAAQA,aAAkByxB,MAC/CnX,EAAS,CACP,KAAM,QACN,MAAOA,EAAO,MACd,OAAQA,EAAO,OACf,QAAS,CAACA,CAAM,CACxB,GAEIA,EAAO,IAAMwiB,EAAaxiB,EAAO,MAAQ,MAAQwiB,IAAe,OAASA,EAAa9Z,GAAW,EAC7F1I,EAAO,OAAS,QACX,IAAI6X,GAAM,KAAM7X,EAAQta,CAAM,EAEnCsa,EAAO,OAAS,MACX,IAAIkT,GAAY,GAAO,KAAMlT,EAAQta,CAAM,EAEhDsa,EAAO,OAAS,SACX,IAAIkT,GAAY,GAAM,KAAMlT,EAAQta,CAAM,EAE5C,IAAIT,GAAU,KAAM+a,EAAQta,CAAM,CAC3C,CAYA,aAAag9B,EAAqBtV,EAAYC,EAAUC,EAAe,CAErE,IAAIqV,EAAc,GACdC,EAASF,aAA+BvR,GACxC0R,EAAO,KACX,GAAID,EAAQ,CACV,IAAIE,EACJH,EAAc,KAAK,SAASD,CAAmB,EAAE,QACjDrV,EAAW3E,GAAW,EAYtB,QAFIqa,EAAUL,EAAoB,OAC9BM,EAAQN,IACHO,EAAWF,KAAa,MAAQE,IAAa,OAAS,OAASA,EAAS,aAAa,UAAY,GAAK,CAACF,EAAQ,QAAQ,CAC9H,IAAIE,EACJD,EAAQD,EACRA,EAAUA,EAAQ,MACpB,CAEA,IADCD,EAAWC,KAAa,MAAQD,IAAa,QAAUA,EAAS,MAAMzV,CAAQ,EAC3EC,GAAiB,MAAa,OAAO,MAAMA,CAAa,EAAG,CAC7D,IAAI4V,EACJ5V,GAAiB4V,EAAWH,KAAa,MAAQG,IAAa,OAAS,OAASA,EAAS,aAAa,QAAQF,CAAK,CACrH,CACF,MACQN,aAA+B,MAGnCC,EAAcD,EAFdC,EAAc,CAACD,CAAmB,EAKtC,GAAI,CAACtV,GAAcwV,EAAQ,CACzB,IAAIO,EAAuBC,EAAwBC,EAC/CC,EAAa,OAAO,SAAW,OAAO,WACtCC,EAAY,OAAO,SAAW,OAAO,UACrCppB,GAAUgpB,EAAwBT,EAAoB,QAAQ,OAAM,KAAQ,MAAQS,IAA0B,OAASA,EAAwB,CACjJ,KAAM,EACN,IAAK,CACb,EACM/V,EAAa,CACX,KAAMkW,EAAanpB,EAAO,KAC1B,IAAKopB,EAAYppB,EAAO,IACxB,OAAQipB,EAAyBV,EAAoB,QAAQ,WAAa,MAAQU,IAA2B,OAASA,EAAyB,EAC/I,QAASC,EAAyBX,EAAoB,QAAQ,OAAM,KAAQ,MAAQW,IAA2B,OAASA,EAAyB,CACzJ,CACI,CAYA,GAXI,CAACjW,GAAc,CAACwV,IAClBxV,EAAa,CACX,KAAM,OAAO,SAAW,OAAO,WAAa,GAC5C,IAAK,OAAO,SAAW,OAAO,UAAY,GAC1C,MAAO,IACP,OAAQ,GAChB,GAEQwV,GACFF,EAAoB,OAAM,EAExB,GAACtV,GAAc,CAACC,GAAYC,IAAkB,QAGlD,KAAI0E,EAAgB,IAAI7E,GAAcwV,EAAavV,EAAYC,EAAUC,EAAe,IAAI,EAC5F,OAAA0E,EAAc,GAAG,cAAe,UAAY,CAC1C6Q,EAAK,KAAK,eAAgB7Q,CAAa,CACzC,CAAC,EACDA,EAAc,GAAG,SAAU,UAAY,CACrC6Q,EAAK,yBAAwB,CAC/B,CAAC,EACD,KAAK,YAAY,KAAK7Q,CAAa,EAC5BA,EACT,CAUA,iBAAiB1sB,EAASkrB,EAAY,CACpC,KAAK,OAAO,SAAS,yBAA2B,GAChD,IAAI+R,EAAa,IAAIhS,GAAWjrB,EAASkrB,EAAY,IAAI,EACzD,YAAK,aAAa,KAAK+R,CAAU,EAC1BA,CACT,CAQA,0BAA0B/R,EAAYrpB,EAAO,CAC3C,YAAK,OAAO,SAAS,yBAA2B,GACzC,IAAIspB,GAAoBD,EAAY,KAAMrpB,CAAK,CACxD,CAUA,WAAWzH,EAAM8jC,EAAU,CACzB,GAAI,KAAK,OAAO,SAAS,mBAAqB,GAC5C,MAAM,IAAI,MAAM,yDAAyD,EAEvE9jC,IAAS,KAAK,eAGd,KAAK,eAAiB,MACxB,KAAK,aAAa,SAAQ,EAExBA,GAAQ8jC,IAAa,IACvB9jC,EAAK,OAAM,EAEb,KAAK,aAAeA,EACpB,KAAK,KAAK,mBAAoBA,CAAI,EACpC,CAKA,eAAe4vB,EAAa,CAC1B,IAAImU,EAAwBC,EACxB,KAAK,iBAAmB,MAC1B,KAAK,eAAe,KAAK,cAAc,EAEzC,KAAK,eAAiBpU,EACtB,KAAK,eAAe,MAAM,eAAe,EACzCA,EAAY,QAAQ,SAAS,cAAc,EAC3CA,EAAY,QAAQ,MAAM,KAAK,oBAAoB,EACnD,KAAK,KAAK,QAAQ,QAAQA,EAAY,OAAO,EAC7CA,EAAY,QAAQ,OAAOmU,EAAyB,KAAK,UAAU,MAAK,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,CAAC,EACtJnU,EAAY,QAAQ,QAAQoU,EAAyB,KAAK,UAAU,OAAM,KAAQ,MAAQA,IAA2B,OAASA,EAAyB,CAAC,EACxJpU,EAAY,cAAc,SAAS,EACnC,KAAK,eAAe,KAAK,WAAW,EACpC,KAAK,KAAK,cAAc,CAC1B,CACA,eAAeA,EAAa,CAC1B,IAAIqU,EACJrU,EAAY,QAAQ,YAAY,cAAc,EAC9CA,EAAY,SAAS,eAAe,EACpC,KAAK,qBAAqB,MAAMA,EAAY,OAAO,EACnD,KAAK,qBAAqB,OAAM,GAC/BqU,EAAsBrU,EAAY,UAAY,MAAQqU,IAAwB,QAAUA,EAAoB,cAAc,SAAS,EACpI,KAAK,eAAiB,KACtBrU,EAAY,KAAK,WAAW,EAC5B,KAAK,KAAK,cAAc,CAC1B,CAYA,eAAgB,CACd,OAAO,WAAW,UAAY,CAC5B,OAAO,MAAK,CACd,EAAG,CAAC,CACN,CACA,UAAUH,EAAGC,EAAG,CAGd,QAFIwU,EAAkB,IAClBC,EAAc,KACT5oC,EAAI,EAAGA,EAAI,KAAK,WAAW,OAAQA,IAAK,CAC/C,IAAI01B,EAAO,KAAK,WAAW11B,CAAC,EACxBk0B,EAAIwB,EAAK,IAAMxB,EAAIwB,EAAK,IAAMvB,EAAIuB,EAAK,IAAMvB,EAAIuB,EAAK,IAAMiT,EAAkBjT,EAAK,UACrFiT,EAAkBjT,EAAK,QACvBkT,EAAclT,EAElB,CACA,OAAOkT,CACT,CAKA,uBAAwB,CACtB,IAAIC,EAAW,GACXC,EAAWj/B,GAAc,GAAI,KAAK,KAAK,WAAW,EAClDk/B,EAAQ,CAACl/B,GAAcA,GAAc,GAAIi/B,CAAQ,EAAG,GAAI,CAC1D,KAAM,OACN,GAAIA,EAAS,GAAKD,CACxB,CAAK,EAAGh/B,GAAcA,GAAc,GAAIi/B,CAAQ,EAAG,GAAI,CACjD,KAAM,QACN,GAAIA,EAAS,GAAKD,CACxB,CAAK,EAAGh/B,GAAcA,GAAc,GAAIi/B,CAAQ,EAAG,GAAI,CACjD,KAAM,MACN,GAAIA,EAAS,GAAKD,CACxB,CAAK,EAAGh/B,GAAcA,GAAc,GAAIi/B,CAAQ,EAAG,GAAI,CACjD,KAAM,SACN,GAAIA,EAAS,GAAKD,CACxB,CAAK,CAAC,EACFE,EAAM,QAAQrT,GAAQ,CACpBA,EAAK,SAAWA,EAAK,GAAKA,EAAK,KAAOA,EAAK,GAAKA,EAAK,GACvD,CAAC,EACD,KAAK,WAAW,KAAK,GAAGqT,CAAK,CAC/B,CACA,sBAAuB,CACrB,IAAIC,EAAkB,KAAK,oBAAmB,EAU9C,GATA,KAAK,WAAa,GASdA,EAAgB,SAAW,EAAG,CAChC,KAAK,WAAW,KAAK,KAAK,KAAK,UAAS,CAAE,EAC1C,MACF,CACA,KAAK,sBAAqB,EAC1B,QAAShpC,EAAI,EAAGA,EAAIgpC,EAAgB,OAAQhpC,IAAK,CAC/C,IAAIyE,EAAOukC,EAAgBhpC,CAAC,EAC5B,GAAK+1B,GAAQtxB,CAAI,EAGjB,KAAIixB,EAAOjxB,EAAK,UAAS,EACzB,GAAIixB,IAAS,KAEN,GAAIA,aAAgB,MACzB,KAAK,WAAa,KAAK,WAAW,OAAOA,CAAI,MACxC,CACL,IAAIuT,EACJ,KAAK,WAAW,KAAKvT,CAAI,EACzB,IAAIpyB,EAASuG,GAAcA,GAAc,GAAI6rB,CAAI,GAAIuT,EAAwBvT,EAAK,YAAY,0BAA4B,MAAQuT,IAA0B,OAAS,OAASA,EAAsB,OAAO,aAAa,EACxN3lC,EAAO,SAAWA,EAAO,GAAKA,EAAO,KAAOA,EAAO,GAAKA,EAAO,IAC/D,KAAK,WAAW,KAAKA,CAAM,CAC7B,EACF,CACF,CAUA,uBAAuB4lC,EAAqBz+B,EAAQ,CAClD,GAAI,CAACy+B,EACH,MAAM,IAAI,MAAM,yBAAyB,EAK3C,GAHI,OAAOA,GAAwB,aACjCA,EAAsBA,EAAmB,GAEvCA,aAA+BhT,GACjC,OAAOgT,EAET,GAAIrd,EAAE,cAAcqd,CAAmB,GAAKA,EAAoB,KAAM,CACpE,IAAIC,EAAiB,KAAK,kBAAkBD,EAAqBz+B,GAAgD,IAAI,EACrH,OAAA0+B,EAAe,cAAc,QAAQ,EAC9BA,CACT,KACE,OAAM,IAAI,MAAM,qBAAqB,CAEzC,CAOA,0BAA2B,CAEzB,QADIC,EAAc,GACTppC,EAAI,EAAGA,EAAI,KAAK,YAAY,OAAQA,IAAK,CAChD,IAAIqpC,IACEA,EAAwB,KAAK,YAAYrpC,CAAC,EAAE,UAAS,KAAQ,MAAQqpC,IAA0B,OAAS,OAASA,EAAsB,UAAY,GACvJD,EAAY,KAAK,KAAK,YAAYppC,CAAC,CAAC,EAEpC,KAAK,KAAK,eAAgB,KAAK,YAAYA,CAAC,CAAC,CAEjD,CACI,KAAK,YAAY,SAAWopC,EAAY,SAC1C,KAAK,KAAK,cAAc,EACxB,KAAK,YAAcA,EAEvB,CAUA,qBAAsB,CACpB,IAAIJ,EAAkB,GAClBM,EAAcjV,GAAe,CAE/B,GADA2U,EAAgB,KAAK3U,CAAW,EAC5BA,EAAY,wBAAwB,MACtC,QAAS,EAAI,EAAG,EAAIA,EAAY,aAAa,OAAQ,IACnDiV,EAAYjV,EAAY,aAAa,CAAC,CAAC,CAG7C,EACA,OAAAiV,EAAY,KAAK,IAAI,EACdN,CACT,CAKA,aAAc,CACR,KAAK,aACPnd,EAAE,MAAM,EAAE,OAAO,KAAK,SAAS,EAEjCA,EAAE,MAAM,EAAE,GAAG,sBAAuB,KAAK,SAAS,EAAE,GAAG,UAAW,KAAK,WAAW,EAAE,GAAG,WAAY,KAAK,YAAY,EAAE,GAAG,UAAW,KAAK,cAAc,CACzJ,CAKA,aAAc,CACZ,KAAK,KAAK,QAAQ,SAAS,gBAAgB,CAC7C,CACA,cAAe,CACb,KAAK,KAAK,QAAQ,YAAY,gBAAgB,CAChD,CAUA,eAAe,EAAG,CAChB,GAAI,EAAE,MAAQ,UAAY,KAAK,iBAAmB,KAAM,CACtD,IAAIxc,EAAS,SAAS,cACtB,GAAIA,IAAWA,EAAO,UAAY,SAAWA,EAAO,UAAY,YAAcA,EAAO,UAAY,UAAYA,EAAO,mBAClH,OAEF,KAAK,eAAe,eAAc,CACpC,CACF,CAKA,WAAY,CACV,aAAa,KAAK,gBAAgB,EAClC,KAAK,iBAAmB,OAAO,WAAW,KAAK,WAAW,KAAK,IAAI,EAAG,GAAG,CAC3E,CAUA,cAAc0V,EAAQ,CACpB,IAAIwkB,EACAC,EAAkBvc,GAAoB,WAAW,EACjDuc,IACF,KAAK,YAAc,GACnBzkB,EAAS,KAAK,MAAM,aAAa,QAAQykB,CAAe,GAAK,IAAI,EACjEzkB,EAASoL,GAAepL,CAAM,EAC9B,aAAa,WAAWykB,CAAe,GAEzCzkB,EAAS8G,EAAE,OAAO,GAAM,GAAId,GAAehG,CAAM,EACjD,IAAI0kB,EAAY,SAAkB3T,EAAM,CACtC,QAASrd,KAAOqd,EAAM,CACpB,IAAIz2B,EAAQy2B,EAAKrd,CAAG,EAChBA,IAAQ,SAAW,OAAOpZ,GAAU,UAAYA,GAAS,KAC3DoqC,EAAUpqC,CAAK,EACNoZ,IAAQ,QAAUpZ,IAAU,oBACrCy2B,EAAK,KAAO,YACZA,EAAK,cAAgB,qBAEzB,CACF,EACA,OAAA2T,EAAU1kB,CAAM,IACVwkB,EAAmBxkB,EAAO,YAAc,MAAQwkB,IAAqB,OAAS,OAASA,EAAiB,cAAgB,KAC5HxkB,EAAO,WAAW,aAAe,GAE5BA,CACT,CAMA,qBAAsB,CACpB,IAAI2kB,EACAC,EAAc9d,EAAE,gCAAkC,KAAK,OAAO,OAAO,MAAQ,8DAA6E,EAC9J8d,EAAY,MAAM,IAAM,CACtB,KAAK,KAAK,OAAO,CACnB,CAAC,EACD,SAAS,MAAQ9b,IAAW6b,EAAwB,KAAK,OAAO,QAAQ,CAAC,EAAE,SAAW,MAAQA,IAA0B,OAASA,EAAwB,EAAE,EAC3J7d,EAAE,MAAM,EAAE,OAAOA,EAAE,2CAA2C,CAAC,EAC/D,KAAK,UAAYA,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,aAAc,SAAS,EAAE,OAAO8d,CAAW,EAM3E,SAAS,KAAK,aAOtB,OAAO,aAAe,IACxB,CAMA,mBAAoB,CAClB,GAAK,KAAK,OAAO,YAGjB,QAAS3pC,EAAI,EAAGA,EAAI,KAAK,OAAO,YAAY,OAAQA,IAAK,CACvD,IAAIikC,EAAS,KAAK,OAAO,YAAYjkC,CAAC,EACtC,KAAK,aAAaikC,EAAO,QAASA,EAAO,WAAYA,EAAO,SAAUA,EAAO,aAAa,CAC5F,CACF,CACA,eAAgB,CACd,IAAI1U,EAAY,KAAK,mBAAqB1D,EAAE,KAAK,kBAAkB,EAAIA,EAAE,MAAM,EAC/E,GAAI0D,EAAU,SAAW,EACvB,MAAM,IAAI,MAAM,kCAAkC,EAEpD,GAAIA,EAAU,OAAS,EACrB,MAAM,IAAI,MAAM,wDAAwD,EAE1E,OAAOA,CACT,CAKA,eAAgB,CACd,IAAIA,EAAY,KAAK,cAAa,EAC9BA,EAAU,CAAC,IAAM,SAAS,OAC5B,KAAK,YAAc,GACnB1D,EAAE,YAAY,EAAE,IAAI,CAClB,OAAQ,OACR,OAAQ,EACR,QAAS,EACT,SAAU,QAClB,CAAO,GAEH,KAAK,UAAY0D,CACnB,CAOA,QAAQxK,EAAQ,CACd,IAAI6kB,EACJ,GAAI,EAAE7kB,EAAO,mBAAmB,OAC9B,MAAIA,EAAO,UAAY,OACrB6kB,EAAW,0DAEXA,EAAW,qDAEP,IAAI/T,GAAmB+T,EAAU7kB,CAAM,EAE/C,GAAIA,EAAO,QAAQ,OAAS,EAC1B,MAAA6kB,EAAW,yDACL,IAAI/T,GAAmB+T,EAAU7kB,CAAM,EAE/C,KAAK,KAAO,IAAImX,GAAK,KAAM,CACzB,QAASnX,EAAO,OACtB,EAAO,KAAK,SAAS,EACjB,KAAK,KAAK,cAAc,QAAQ,EAC5BA,EAAO,kBAAoB,iBAC7B,KAAK,KAAK,aAAaA,EAAO,eAAe,EAAE,CAAC,EAAE,eAAc,CAEpE,CAMA,WAAY,CACV,GAAI,KAAK,OAAO,SAAS,uBAAyB,GAChD,QAAS/kB,EAAI,EAAGA,EAAI,KAAK,YAAY,OAAQA,IAC3C,KAAK,YAAYA,CAAC,EAAE,MAAK,CAG/B,CAKA,0BAA2B,CAEzB,GAAI,CAAC,KAAK,qBAAoB,GAAM,KAAK,4BAA8B,CAAC,KAAK,OAAO,YAAc,CAAC,KAAK,OAAO,WAAW,cAAgB,KAAK,KAAK,aAAa,SAAW,GAAK,CAAC,KAAK,KAAK,aAAa,CAAC,EAAE,MAAO,CACjN,KAAK,WAAa,GAClB,MACF,CACA,KAAK,WAAa,GAGlB,IAAI6pC,EAAc,KAAK,KAAK,aAAa,CAAC,EAAE,aAAa,OACzD,GAAI,EAAAA,GAAe,GAKnB,KAAI9P,EAAe,KAAK,OAAO,WAAW,aACtC+P,EAAgBD,EAAc9P,EAClC,GAAI,OAAK,OAAS,MAAQ+P,GAAiB,KAAK,OAKhD,MAAK,2BAA6B,GAOlC,QAJIC,EAAmB,KAAK,IAAI,KAAK,MAAM,KAAK,MAAQhQ,CAAY,EAAG,CAAC,EACpEiQ,EAAmBH,EAAcE,EACjCE,EAAkB,KAAK,KAAK,aAAa,CAAC,EAC1CC,EAAsB,KAAK,wBAAuB,EAAG,CAAC,EACjDlqC,EAAI,EAAGA,EAAIgqC,EAAkBhqC,IAAK,CAEzC,IAAIy8B,EAASwN,EAAgB,aAAaA,EAAgB,aAAa,OAAS,CAAC,EACjF,KAAK,iCAAiCC,EAAqBzN,CAAM,CACnE,CACA,KAAK,2BAA6B,IACpC,CAOA,sBAAuB,CACrB,OAAO,KAAK,OAAO,WAAa,KAAK,OAAO,SAAS,gBAAkB,UAAY,KAAK,OAAO,SAAS,gBAAkB,UAAY,KAAK,WAC7I,CAOA,iCAAiClN,EAAWuG,EAAM,CAC5CA,EAAK,OAAS,QAChBA,EAAK,aAAa,QAAQ,SAAUrxB,EAAM,CACxC8qB,EAAU,SAAS9qB,CAAI,EACvBqxB,EAAK,YAAYrxB,EAAM,EAAI,CAC7B,CAAC,EAEDqxB,EAAK,aAAa,QAAQrxB,GAAQ,CAChC,KAAK,iCAAiC8qB,EAAW9qB,CAAI,CACvD,CAAC,CAEL,CAMA,yBAA0B,CACxB,IAAI0lC,EAAkB,GACtB,YAAK,iCAAiCA,EAAiB,KAAK,IAAI,EACzDA,CACT,CAQA,iCAAiCA,EAAiBrU,EAAM,CACtDA,EAAK,aAAa,QAAQrxB,GAAQ,CAC5BsxB,GAAQtxB,CAAI,EACd0lC,EAAgB,KAAK1lC,CAAI,EACfA,EAAK,aACf,KAAK,iCAAiC0lC,EAAiB1lC,CAAI,CAE/D,CAAC,CACH,CACF,CAIA9E,EAAgBknC,GAAe,OAAQL,EAAE,2DC5iCzC4D,GAAe,OAAO,OAAO,CAC3B,UAAW,SAASC,GAAa,YAAY,EAAG,EAAE,EAClD,gBAAiB,SAASA,GAAa,mBAAmB,EAAG,EAAE,CACjE,CAAC,ECJD,SAASzgC,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAOvT,IAAIwH,GAAMC,EAAI,OAAO,aAAa,EAClC,SAAS8iC,GAAkBvlB,EAAQ,CACjC,OAAOA,EAAO,gBAAkB,MAClC,CACO,SAASkG,GAAuBlG,EAAQ,CAC7C,IAAIwlB,EAAcxlB,EAGlB,OAAQulB,GAAkBvlB,CAAM,GAAKA,EAAO,gBAAkB,sBAAwBA,EAAO,OAAS,oBAAsBwlB,EAAY,YAAc,MACxJ,CACA,SAASC,GAAcngC,EAAS,CAC9B,OAAOA,EAAQ,QAAU,MAC3B,CACA,SAASogC,GAAkB1lB,EAAQ,CACjC,OAAOA,EAAO,OAAS,OACzB,CACA,MAAM2lB,CAAY,CAChB,OAAO,YAAY1D,EAAMjiB,EAAQ,CAC/B,IAAIuX,EAAQoO,EAAY,gBAAgB1D,EAAMjiB,EAAQ,EAAK,EAC3D,GAAI,CAACuX,EAAO,CACV/0B,GAAI,MAAM,kCAAmCwd,CAAM,EACnD,MACF,CAEA,IAAIsP,EAAcqW,EAAY,sBAAsBpO,EAAOvX,CAAM,EAC7DsP,GACFiI,EAAM,qBAAqBjI,CAAW,CAE1C,CAQA,OAAO,YAAY2S,EAAMjiB,EAAQ,CAC/B,IAAIuX,EAAQoO,EAAY,gBAAgB1D,EAAMjiB,EAAQ,EAAK,EAC3D,GAAI,CAACuX,EACH/0B,UAAI,MAAM,kCAAmCwd,CAAM,EAC5C,GAGT,IAAIsP,EAAcqW,EAAY,sBAAsBpO,EAAOvX,CAAM,EAC7D4lB,EAAarO,EAAM,qBAAoB,EAC3C,OAAOqO,IAAetW,CACxB,CAOA,OAAO,SAAS5pB,EAAQ,CACtB,IAAImgC,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC1F,GAAI3U,GAAOxrB,CAAM,EAAG,CAClB,IAAIogC,EAAiB,CACnB,KAAMD,EAAkB,SAAW,KAC3C,GACUngC,EAAO,cAAgB,MAAQA,EAAO,aAAa,SAAW,IAChEA,EAAO,SAASogC,CAAc,EAEhC,IAAI9C,EAAQt9B,EAAO,aAAa,CAAC,EAC7BqgC,EAAiBF,EAAkB7C,EAAM,SAAWA,EAAM,MAC9D,GAAI,CAAC+C,EAAgB,CACnBrgC,EAAO,YAAYs9B,EAAO,EAAI,EAC9Bt9B,EAAO,SAASogC,CAAc,EAI9B,IAAIE,EAAuB,SAAS,cACpCtgC,EAAO,aAAa,CAAC,EAAE,SAASs9B,CAAK,EACjCgD,GAAwBA,EAAqB,OAAS,MACxDA,EAAqB,MAAK,CAE9B,CACA,OAAO,KAAK,SAAStgC,EAAO,aAAa,CAAC,EAAGmgC,CAAe,CAC9D,CACA,GAAIngC,EAAO,aAAa,OAAS,EAC/B,OAAAA,EAAO,SAAS,CACd,KAAM,OACd,CAAO,EACMA,EAAO,aAAaA,EAAO,aAAa,OAAS,CAAC,EAE3D,IAAIugC,EAAYvgC,EAAO,aAAaA,EAAO,aAAa,OAAS,CAAC,EAC9DwgC,EAAiBL,EAAuCI,EAAU,MAA/BA,EAAU,SAGjD,GAAI,CAACC,EAAe,CAClB,IAAIC,EAAmBC,EACnBC,EAAwB3gC,EAAO,cAAc,kBAAkB,CACjE,KAAOmgC,EAA6B,MAAX,SACzB,QAASM,EAAoBF,EAAU,UAAY,MAAQE,IAAsB,OAAS,OAASA,EAAkB,OACrH,OAAQC,EAAqBH,EAAU,UAAY,MAAQG,IAAuB,OAAS,OAASA,EAAmB,KAC/H,EAAS1gC,CAAM,EACTA,EAAO,aAAaugC,EAAWI,CAAqB,EACpD3gC,EAAO,aAAaA,EAAO,aAAa,OAAS,CAAC,EAAE,SAASugC,CAAS,EACtEA,EAAYvgC,EAAO,aAAaA,EAAO,aAAa,OAAS,CAAC,CAChE,CACA,OAAO,KAAK,SAASugC,EAAW,CAACJ,CAAe,CAClD,CAOA,OAAO,sBAAsBS,EAAQ,CAEnC,OAAOA,EAAO,wBAAuB,CACvC,CAOA,OAAO,qBAAqBC,EAAW,CAIrC,OAAOA,EAAU,UAAUhP,GAASA,EAAM,OAAO,KAAK,KAAK2E,GAAOA,EAAI,QAAQ,CAAC,EAAE,UAAU,SAAS,YAAY,CAAC,CAAC,CACpH,CAOA,OAAO,gBAAgBoK,EAAQ,CAC7B,IAAIC,EAAYZ,EAAY,sBAAsBW,CAAM,EACpDE,EAAoBb,EAAY,qBAAqBY,CAAS,EAClE,OAAOA,EAAUC,CAAiB,CACpC,CAOA,OAAO,aAAa9mC,EAAM+mC,EAAU,CAClC,IAAIC,EACAC,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC1F,GAAIA,GAAmB3V,GAAQtxB,CAAI,GAAKA,EAAK,aAAa,SAAW,EACnE,OAAOA,EAET,GAAI+mC,MAAeC,EAAehnC,EAAK,UAAY,MAAQgnC,IAAiB,OAAS,OAASA,EAAa,IAAK,CAC9G,GAAI1V,GAAQtxB,CAAI,EACd,OAAOA,EAET,MAAM,IAAI,MAAM,gBAAgB,OAAO+mC,EAAU,iBAAiB,CAAC,CACrE,CACA,GAAI/mC,EAAK,cAAgB,KACvB,OAAO,KAET,QAASzE,EAAI,EAAGA,EAAIyE,EAAK,aAAa,OAAQzE,GAAK,EAAG,CACpD,IAAIs8B,EAAQ,KAAK,aAAa73B,EAAK,aAAazE,CAAC,EAAGwrC,EAAUE,CAAe,EAC7E,GAAIpP,EACF,OAAOA,CAEX,CACA,OAAO,IACT,CAOA,OAAO,mBAAmB73B,EAAM+mC,EAAU,CACxC,IAAIG,EACJ,KAAMA,EAAgBlnC,EAAK,UAAY,MAAQknC,IAAkB,OAAS,OAASA,EAAc,MAAQH,EACvG,OAAO/mC,EAET,GAAIA,EAAK,cAAgB,KACvB,OAAO,KAET,QAAS,EAAI,EAAG,EAAIA,EAAK,aAAa,OAAQ,GAAK,EAAG,CACpD,IAAI4vB,EAAc,KAAK,mBAAmB5vB,EAAK,aAAa,CAAC,EAAG+mC,CAAQ,EACxE,GAAInX,EACF,OAAOA,CAEX,CACA,OAAO,IACT,CAOA,OAAO,kBAAkB5vB,EAAM,CAC7B,IAAIsgB,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7E2mB,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC1F,GAAIA,GAAmB3V,GAAQtxB,CAAI,GAAKA,EAAK,aAAa,SAAW,EACnE,OAAOA,EAET,GAAIA,EAAK,cAAgB,KACvB,OAAO,KAET,QAAS,EAAI,EAAG,EAAIA,EAAK,aAAa,OAAQ,GAAK,EAAG,CACpD,IAAI4vB,EAAc5vB,EAAK,aAAa,CAAC,EACrC,GAAI4vB,EAAY,aAAeA,EAAY,QAAU,MAC/CuX,GAAQvX,EAAY,OAAQtP,CAAM,EACpC,OAAOtgB,EAGX,IAAI63B,EAAQ,KAAK,kBAAkBjI,EAAatP,EAAQ2mB,CAAe,EACvE,GAAIpP,EACF,OAAOA,CAEX,CACA,OAAO,IACT,CAUA,OAAO,gBAAgB0K,EAAMjiB,EAAQ,CACnC,IAAI8mB,EAAoB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxFC,EAAqB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACzFJ,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtFpP,EAAQ,KAAK,kBAAkB0K,EAAMjiB,CAAM,EAC/C,MAAI,CAACuX,GAASwP,IACZxP,EAAQ,KAAK,kBAAkB0K,EAAM,CACnC,UAAWjiB,EAAO,SAC1B,EAAS2mB,CAAe,GAEhB,CAACpP,GAASuP,IACZvP,EAAQ,KAAK,SAAS0K,CAAI,GAErB1K,CACT,CAUA,OAAO,0BAA0B0K,EAAM+E,EAAO,CAI5C,QAHIF,EAAoB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxFC,EAAqB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACzFJ,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACjF1rC,EAAI,EAAGA,EAAI+rC,EAAM,OAAQ/rC,GAAK,EAAG,CACxC,IAAIwc,EAAYuvB,EAAM/rC,CAAC,EACnBgsC,EAAahsC,IAAM+rC,EAAM,OAAS,EAClCzP,EAAQoO,EAAY,gBAAgB1D,EAAM,CAC5C,UAAAxqB,CACR,EAASqvB,GAAqBG,EAAYF,EAAoBJ,CAAe,EACvE,GAAIpP,EACF,OAAOA,CAEX,CACA,OAAO,IACT,CAQA,OAAO,sBAAsBA,EAAOvX,EAAQ,CAC1C,GAAI,CAACuX,EACH,OAAO,KAET,QAASt8B,EAAI,EAAGA,EAAIs8B,EAAM,aAAa,OAAQt8B,GAAK,EAAG,CACrD,IAAIq0B,EAAciI,EAAM,aAAat8B,CAAC,EACtC,GAAIq0B,EAAY,aAAeA,EAAY,QAAU,MAC/CuX,GAAQvX,EAAY,OAAQtP,CAAM,EACpC,OAAOsP,CAGb,CACA,OAAO,IACT,CAOA,OAAO,sBAAsBtP,EAAQknB,EAAoB,CACvD,GAAIlnB,GAAU,MAAQ,CAACA,EAAO,OAC5B,MAAO,GAGT,QADImnB,EAAmB,GACd,EAAI,EAAG,EAAInnB,EAAO,OAAQ,GAAK,EAAG,CACzC,IAAIwQ,EAAaxQ,EAAO,CAAC,EACrB,CACF,QAAA9O,CACR,EAAUsf,EACJ,GAAItK,GAAuBsK,CAAU,EAAG,CACtC,IAAI4W,EAAsBF,EAAmB1W,EAAW,UAAWA,CAAU,EACzE4W,GAAuB,KACzBD,EAAiB,KAAKC,CAAmB,EAEzC5kC,GAAI,OAAO,uDAAwD,OAAOguB,EAAW,UAAW,GAAI,CAAC,CAEzG,SAAWtf,EAAS,CAClB,IAAIm2B,EAAmBviC,GAAcA,GAAc,GAAI0rB,CAAU,EAAG,GAAI,CACtE,QAASmV,EAAY,sBAAsBz0B,EAASg2B,CAAkB,CAChF,CAAS,EACDC,EAAiB,KAAKE,CAAgB,CACxC,MACEF,EAAiB,KAAK3W,CAAU,CAEpC,CACA,OAAO2W,CACT,CACA,OAAO,YAAYG,EAAa,CAC9B,GAAI,CACF,IAAApL,CACN,EAAQoL,EACJ,GAAIpL,GAAO,KACT,MAAM,IAAI,MAAM,sCAAsC,OAAOoL,CAAW,CAAC,EAE3E,IAAIlM,EAAUc,EAAI,QAAQ,CAAC,EAAE,sBAAqB,EAClD,MAAO,CAACd,EAAQ,KAAOA,EAAQ,MAAQ,GAAKA,EAAQ,OAAS,CAAC,CAChE,CAcA,OAAO,sBAAsBpb,EAAQ,CACnC,QAAS/kB,EAAI,EAAGA,EAAI+kB,EAAO,OAAQ/kB,GAAK,EAAG,CACzC,IAAIu1B,EAAaxQ,EAAO/kB,CAAC,EACrB,CACF,QAAAiW,CACR,EAAUsf,EACAtf,IAAY,QACVw0B,GAAkBlV,CAAU,GAC9B,OAAOA,EAAW,gBAEpBmV,EAAY,sBAAsBz0B,CAAO,GAChCgV,GAAuBsK,CAAU,GAAKA,EAAW,YAAc,iBACpEA,EAAW,MAAM,YAAc,OACjC,OAAOA,EAAW,GAClBA,EAAW,MAAM,WAAW,cAAc,MAAQ,GAClDA,EAAW,MAAM,WAAW,cAAc,aAAe,GACzDA,EAAW,MAAM,WAAW,UAAU,gBAAkB,GACxDA,EAAW,MAAM,WAAW,UAAU,eAAiB,GAG7D,CACF,CAQA,OAAO,QAAQ+W,EAASC,EAAS,CAC/B,IAAIC,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5EC,EAAe/B,EAAY,YAAY4B,CAAO,EAC9CI,EAAehC,EAAY,YAAY6B,CAAO,EAClD,OAAIC,GACF9B,EAAY,sBAAsB+B,CAAY,EAC9C/B,EAAY,sBAAsBgC,CAAY,EACvCvnB,GAAUsnB,EAAcC,CAAY,GAItCvnB,GAAUsnB,EAAcC,CAAY,CAC7C,CACA,OAAO,YAAYrB,EAAQ,CACzB,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAM,CAAC,CAC1C,CAQA,OAAO,oBAAoBtmB,EAAQ4nB,EAAkB,CACnD,GAAI5nB,GAAU,MAAQ,CAACA,EAAO,OAC5B,MAAO,GAGT,QADI6nB,EAAiB,GACZ,EAAI,EAAG,EAAI7nB,EAAO,OAAQ,GAAK,EAAG,CACzC,IAAIwQ,EAAaxQ,EAAO,CAAC,EACzB,GAAIkG,GAAuBsK,CAAU,EAAG,CACtC,IAAIsX,EACA,CACF,UAAArwB,EACA,MAAAvS,EAAQ,EAClB,EAAYsrB,EACJqX,EAAe,KAAK/iC,GAAcA,GAAc,GAAI0rB,CAAU,EAAG,GAAI,CACnE,IAAKsX,EAAiBtX,GAAe,KAAgC,OAASA,EAAW,MAAQ,MAAQsX,IAAmB,OAASA,EAAiBh2B,GAAM,EAC5J,MAAO81B,EAAiBnwB,EAAWvS,CAAK,CAClD,CAAS,CAAC,CACJ,SAAWsrB,EAAW,UAAY,OAAW,CAC3C,IAAIuX,EAAgBpC,EAAY,oBAAoBnV,EAAW,QAASoX,CAAgB,EACpFlC,GAAkBlV,CAAU,GAAKA,EAAW,iBAAmB,MAAQA,EAAW,iBAAmBuX,EAAc,SACrHvlC,GAAI,KAAK,8BAA+BguB,EAAW,gBAAiBA,CAAU,EAC9EA,EAAW,gBAAkB,GAE/BqX,EAAe,KAAK/iC,GAAcA,GAAc,GAAI0rB,CAAU,EAAG,GAAI,CACnE,QAASuX,CACnB,CAAS,CAAC,CACJ,MACEF,EAAe,KAAKrX,CAAU,CAElC,CACA,OAAOqX,CACT,CAcA,OAAO,eAAgB,CACrB,GAAI,CACF,KAAA5F,EACA,OAAQ+F,EACR,MAAOC,EAAa,OACpB,gBAAAC,EAAkB,GAClB,cAAAC,EAAgB,OAChB,eAAAC,EAAiB,GACjB,aAAAC,EAAe,OACf,UAAAC,EAAY,MAClB,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAEpEtC,EAAuB,SAAS,cAChChmB,EAASlb,GAAc,GAAIkjC,CAAW,EAI1C,GAHIhoB,EAAO,IAAM,OACfA,EAAO,GAAKlO,GAAM,GAEhBw2B,GAAa,KAAM,CACrBrG,GAAS,MAA2BA,EAAK,cAAc,0BAA0BjiB,EAAQsoB,CAAS,EAClG,MACF,CACA,IAAIC,EAAeJ,GAAiB,CAClC,GAAInoB,EAAO,GACX,UAAWA,EAAO,SACxB,EACIwoB,EAAcvG,CAAI,EAClB,IAAI1K,EAAQ0Q,IAA4DG,EAAiBzC,EAAY,SAAS1D,CAAI,EAAI0D,EAAY,gBAAgB1D,EAAMsG,CAAY,GACpKC,EAAcjR,CAAK,EACnB,IAAIkR,EAAiB9C,EAAY,sBAAsBpO,EAAOgR,CAAY,EAC1E,GAAIF,GAAgB,KAAM,CAExB,IAAIK,EAAqBvhC,GAAS,CAChC3E,GAAI,MAAM,sCAAuC6lC,CAAY,EAC7D9Q,EAAM,IAAI,mBAAoBmR,CAAkB,EAChD,GAAI,CACF,QAAApjC,CACV,EAAY6B,EAAM,OAGV,sBAAsB,IAAM,CAC1Bw+B,EAAY,aAAargC,EAAQ,CAAC,EAAG+iC,CAAY,CACnD,CAAC,CACH,EACA9Q,EAAM,GAAG,mBAAoBmR,CAAkB,CACjD,CACA,GAAIR,GAAmBO,EAAgB,CACrC,IAAIvoC,EAAQq3B,EAAM,aAAa,QAAQkR,CAAc,EAIrDlR,EAAM,SAASvX,EAAQ9f,EAAQ,CAAC,EAChCq3B,EAAM,YAAYkR,CAAc,EAChClR,EAAM,qBAAqBA,EAAM,aAAar3B,CAAK,CAAC,CACtD,MACEq3B,EAAM,SAASvX,CAAM,EAEnBqoB,GAAgB,MAAQrC,GAAwBP,GAAcO,CAAoB,GACpFA,EAAqB,MAAK,CAE9B,CASA,OAAO,qBAAqBzO,EAAOvX,EAAQ,CACzC,IAAIkoB,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACtFlC,EAAuB,SAAS,cAEhCuC,EAAe,CACjB,GAAIvoB,EAAO,EACjB,EACQyoB,EAAiB9C,EAAY,sBAAsBpO,EAAOgR,CAAY,EAC1E,GAAIL,GAAmBO,GAAkBlR,EAAO,CAC9C,IAAIr3B,EAAQq3B,GAAU,KAA2B,OAASA,EAAM,aAAa,QAAQkR,CAAc,EAInGlR,EAAM,SAASvX,EAAQ9f,EAAQ,CAAC,EAChCq3B,EAAM,YAAYkR,CAAc,EAChClR,EAAM,qBAAqBA,EAAM,aAAar3B,CAAK,CAAC,CACtD,MACEq3B,GAAU,MAA4BA,EAAM,SAASvX,CAAM,EAEzDgmB,GAAwBP,GAAcO,CAAoB,GAC5DA,EAAqB,MAAK,CAE9B,CAOA,OAAO,eAAe/D,EAAMjiB,EAAQ2oB,EAAc,CAChD,IAAIpR,EAAQoO,EAAY,gBAAgB1D,EAAMjiB,EAAQ,GAAO,GAAO,EAAK,EACzE,GAAI,CAACuX,EAAO,CACV/0B,GAAI,KAAK,kDAAmDwd,CAAM,EAClE,MACF,CAIA,IAAIyoB,EAAiB9C,EAAY,sBAAsBpO,EAAOvX,CAAM,EAChEgmB,EAAuB,SAAS,cAChCyC,IACExX,GAAYwX,CAAc,EAC5BA,EAAe,UAAU,MAAME,CAAY,EAE3CpR,EAAM,YAAYkR,CAAc,GAIhCzC,GAAwB,SAAS,SAASA,CAAoB,GAAKP,GAAcO,CAAoB,GACvGA,EAAqB,MAAK,CAE9B,CACA,OAAO,gBAAgB/D,EAAMjiB,EAAQ4oB,EAAU,CAC7C,IAAIrR,EAAQoO,EAAY,gBAAgB1D,EAAMjiB,EAAQ,EAAK,EAC3D,GAAI,CAACuX,EAAO,CACV/0B,GAAI,MAAM,kCAAmCwd,CAAM,EACnD,MACF,CAEA,IAAIsP,EAAcqW,EAAY,sBAAsBpO,EAAOvX,CAAM,EAC7DsP,GACFA,EAAY,SAASsZ,CAAQ,CAEjC,CAQA,OAAO,eAAe3G,EAAMjiB,EAAQ,CAClC,IAAIuX,EAAQoO,EAAY,gBAAgB1D,EAAMjiB,EAAQ,EAAK,EAC3D,GAAI,CAACuX,EACH/0B,UAAI,MAAM,kCAAmCwd,CAAM,EAC5C,KAET,GAAI,CACF,MAAA9a,EAAQ,EACd,EAAQ8a,EACA6oB,EAAalD,EAAY,uBAAuB3lB,CAAM,EACtD8oB,EAAc,CAChB,KAAM,kBACN,UAAW9oB,EAAO,UAClB,MAAOlb,GAAcA,GAAc,GAAII,CAAK,EAAG,GAAI,CACjD,WAAA2jC,CACR,CAAO,EACD,MAAO,GAAG,OAAO7oB,EAAO,MAAO,OAAO,EACtC,GAAIlO,GAAM,CAChB,EACI,OAAA6zB,EAAY,qBAAqBpO,EAAOuR,CAAW,EAC5CA,CACT,CAOA,OAAO,uBAAuB9oB,EAAQ,CACpC,GAAIulB,GAAkBvlB,CAAM,EAAG,CAC7B,IAAI+oB,EACJ,OAAQA,EAAwB/oB,EAAO,kBAAoB,MAAQ+oB,IAA0B,OAAS,OAASA,EAAsB,UACvI,CACA,GAAI7iB,GAAuBlG,CAAM,EAAG,CAClC,IAAIgpB,EACJ,OAAQA,EAAgBhpB,EAAO,SAAW,MAAQgpB,IAAkB,OAAS,OAASA,EAAc,UACtG,CACA,OAAO,IACT,CACA,OAAO,mBAAoB,CACzB,MAAO,CACL,WAAY,CACV,aAAc3D,GAAwB,UACtC,YAAaA,GAAwB,gBACrC,gBAAiB,EACzB,EACM,SAAU,CACR,eAAgB,GAChB,cAAe,GACf,yBAA0B,EAClC,CACA,CACE,CAMA,OAAO,qBAAqB7a,EAAW,CACrC,OAAOA,EAAU,cAAc,IACjC,CAMA,OAAO,gCAAgCA,EAAW,CAChD,OAAIA,EACEA,EAAU,KAAO,MAAQA,EAAU,IAAI,aAAe,KACjDA,EAAU,IAAI,YAAY,OAO5BA,EAAU,QAEZ,IACT,CACA,OAAO,sBAAsBA,EAAW,CACtC,OAAIA,GAAa,MAAQA,EAAU,KAAO,MAAQA,EAAU,IAAI,aAAe,KACtEA,EAAU,IAAI,YAAY,OAAO,MAEnC,IACT,CACA,OAAO,gBAAgB0R,EAAK,CAC1B,OAAIA,GAAO,MAAQA,EAAI,aAAe,KAC7BA,EAAI,YAAY,OAAO,MAEzB,IACT,CAOA,OAAO,mBAAmBoL,EAAa,CACrC,IAAItnB,EAAS2lB,EAAY,gCAAgC2B,CAAW,EACpE,OAAItnB,EACKA,EAAO,GAET,IACT,CAOA,OAAO,eAAeipB,EAAO,CAC3B,GAAI,CACF,YAAA3B,CACN,EAAQ2B,EAAM,MACV,OAAOtD,EAAY,mBAAmB2B,CAAW,CACnD,CAOA,OAAO,0BAA0B2B,EAAO,CACtC,GAAI,CACF,YAAA3B,CACN,EAAQ2B,EAAM,MACNjpB,EAAS2lB,EAAY,gCAAgC2B,CAAW,EACpE,GAAItnB,GAAUkG,GAAuBlG,CAAM,EAAG,CAC5C,IAAIkpB,EACJ,OAAQA,EAAoBlpB,EAAO,aAAe,MAAQkpB,IAAsB,OAASA,EAAoB,IAC/G,CACA,OAAO,IACT,CAQA,OAAO,iBAAiBzxB,EAAW,CACjC,IAAI0xB,EAAuBC,EACvBhtC,GAAQ+sC,GAAyBC,EAAyB3xB,EAAU,oBAAsB,MAAQ2xB,IAA2B,OAAS,OAASA,EAAuB,eAAiB,MAAQD,IAA0B,OAASA,EAAwB1xB,EAAU,YACxQ,GAAIrb,GAAQ,KACV,MAAM,IAAI,MAAM,qCAAqC,OAAOqb,CAAS,CAAC,EAExE,OAAOrb,CACT,CASA,OAAO,aAAakJ,EAAS,CAC3B,IAAI+jC,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI1D,EAAY,uBAC/F,GAAIrgC,GAAW,KACb,OAAO,KAET,IAAI+iC,EAAe/iC,EAAQ,cAAc+jC,CAAQ,EACjD,OAAIhB,GAAgB,KACX,MAEL5C,GAAc4C,CAAY,GAC5BA,EAAa,MAAK,EAEbA,EACT,CAOA,OAAO,cAAc/B,EAAQ,CAC3B,OAAO,IAAI,QAAQnnC,GAAW,CAC5B,GAAImnC,EAAO,cAAe,CACxBnnC,EAAO,EACP,MACF,CACA,IAAImqC,EAAS,IAAM,CACjBhD,EAAO,IAAI,cAAegD,CAAM,EAChCnqC,EAAO,CACT,EACAmnC,EAAO,GAAG,cAAegD,CAAM,CACjC,CAAC,CACH,CACF,CACA1uC,GAAgB+qC,EAAa,yBAA0B,iCAAiC,ECpwBrF,IAAC4D,GAAgCpkC,EAAM,WAAW,CAACD,EAAOhB,IAAQ,CACnE,IAAIuT,EAAYkuB,EAAY,0BAA0B,CACpD,MAAAzgC,CACJ,CAAG,EACD,OAAoBqB,MAAK,MAAO,CAC9B,IAAKrC,EACL,UAAW,oBACX,SAAuByC,OAAM,MAAO,CAClC,SAAU,CAAC,cAAgB8Q,EAAW,sBAAuB,CACnE,CAAK,CACL,CAAG,CACH,CAAC,EACD8xB,GAAiB,YAAc,mBCfrB,IAACC,EAAa,OAAO,OAAO,CAEpC,MAAO,mBAEP,MAAO,mBAEP,QAAS,qBAET,cAAe,2BAEf,OAAQ,oBAER,YAAa,yBAEb,OAAQ,oBAER,OAAQ,oBAER,OAAQ,oBAIR,KAAM,kBAEN,MAAO,mBAEP,SAAU,sBAEV,QAAS,oBACX,CAAC,EACU,CACT,OAAQC,GACR,KAAMC,GACN,YAAaC,EACf,EAAIzc,GAAmBsc,EAAW,IAAI,ECrClCI,GAAkB,OAAO,OAAO,CAClC,oBAAqB,sCACrB,wBAAyB,0CACzB,kBAAmB,oCACnB,sBAAuB,uCACzB,CAAC,EACU,CACT,OAAQC,GACR,KAAMC,GACN,YAAaC,EACf,EAAI7c,GAAmB0c,GAAgB,mBAAmB,EAC/C,CACT,OAAQI,GACR,KAAMC,GACN,YAAaC,EACf,EAAIhd,GAAmB0c,GAAgB,uBAAuB,EACnD,CACT,OAAQO,GACR,KAAMC,GACN,YAAaC,EACf,EAAInd,GAAmB0c,GAAgB,iBAAiB,EAC7C,CACT,OAAQU,GACR,KAAMC,GACN,YAAaC,EACf,EAAItd,GAAmB0c,GAAgB,qBAAqB,EC1B5D,SAAS/kC,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAMvT,IAAIwH,GAAMC,EAAI,OAAO,cAAc,EAC/BgoC,GAA8B,SAAUA,EAAgB,CAC1D,OAAAA,EAAeA,EAAe,KAAU,CAAC,EAAI,OAC7CA,EAAeA,EAAe,SAAc,CAAC,EAAI,WAC1CA,CACT,EAAEA,IAAkB,EAAE,EAItB,MAAMC,EAAa,CASjB,YAAYpE,EAAQ,CAClB,IAAIsB,EAAmB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAACxrC,EAAM8I,IAAUA,EACxGgiC,EAAqB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC9qC,EAAM4jB,IAAWA,EAC3G2qB,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,IAAI,IACpFC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7EC,EAAkB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,OAC1FjwC,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,mBAAoB,MAAM,EAChDA,GAAgB,KAAM,qBAAsB,MAAM,EAClDA,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,kCAAmC,MAAM,EAC/D,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAI7C,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,2BAA6B,KAAK,2BAA2B,KAAK,IAAI,EAC3E,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,OAAS0rC,EACd,KAAK,iBAAmBsB,EACxB,KAAK,mBAAqBV,EAC1B,KAAK,gBAAkB2D,EAGvB,KAAK,UAAY,IAAI,IAAIF,CAAS,EAGlC,KAAK,OAAS,CAAC,GAAGC,CAAM,EAGxB,KAAK,gCAAkC,GACvC,KAAK,eAAc,CACrB,CACA,gBAAiB,CACf,GAAI,CACF,SAAAE,CACN,EAAQ,KAAK,OACTA,EAAS,GAAGtB,EAAW,MAAO,KAAK,WAAW,EAC9CsB,EAAS,GAAGtB,EAAW,MAAO,KAAK,WAAW,EAC9CsB,EAAS,GAAGtB,EAAW,QAAS,KAAK,aAAa,EAClDsB,EAAS,GAAGtB,EAAW,OAAQ,KAAK,YAAY,EAChDsB,EAAS,GAAGtB,EAAW,YAAa,KAAK,gBAAgB,EACzDsB,EAAS,GAAGtB,EAAW,OAAQ,KAAK,aAAa,EACjDsB,EAAS,GAAGtB,EAAW,OAAQ,KAAK,YAAY,EAChDsB,EAAS,GAAGtB,EAAW,MAAO,KAAK,kBAAkB,EAGrD,KAAK,gCAAgC,KAAKK,GAA0BiB,EAAU,KAAK,sBAAsB,CAAC,EAC1G,KAAK,gCAAgC,KAAKd,GAA8Bc,EAAU,KAAK,0BAA0B,CAAC,EAClH,KAAK,gCAAgC,KAAKX,GAAwBW,EAAU,KAAK,oBAAoB,CAAC,EACtG,KAAK,gCAAgC,KAAKR,GAA4BQ,EAAU,KAAK,wBAAwB,CAAC,CAChH,CACA,eAAgB,CACd,GAAI,CACF,SAAAA,CACN,EAAQ,KAAK,OACTA,EAAS,IAAItB,EAAW,MAAO,KAAK,WAAW,EAC/CsB,EAAS,IAAItB,EAAW,MAAO,KAAK,WAAW,EAC/CsB,EAAS,IAAItB,EAAW,QAAS,KAAK,aAAa,EACnDsB,EAAS,IAAItB,EAAW,OAAQ,KAAK,YAAY,EACjDsB,EAAS,IAAItB,EAAW,YAAa,KAAK,gBAAgB,EAC1DsB,EAAS,IAAItB,EAAW,OAAQ,KAAK,aAAa,EAClDsB,EAAS,IAAItB,EAAW,OAAQ,KAAK,YAAY,EACjDsB,EAAS,IAAItB,EAAW,MAAO,KAAK,kBAAkB,EACtD,KAAK,gCAAgC,QAAQuB,GAAWA,EAAO,CAAE,EACjE,KAAK,gCAAkC,EACzC,CACA,4BAA4BC,EAAY,CACtC,OAAO,KAAK,OAAO,OAAO/B,GAASA,EAAM,YAAc+B,CAAU,CACnE,CACA,iBAAkB,CAChB,OAAO,MAAM,KAAK,KAAK,UAAU,OAAM,CAAE,CAC3C,CACA,uBAAwB,CACtB,OAAO,KAAK,kBAAkB,IAAI/B,GAAS,CACzC,GAAI,CACF,YAAA3B,CACR,EAAU2B,EAAM,MACV,OAAOtD,EAAY,gCAAgC2B,CAAW,CAChE,CAAC,CACH,CACA,4BAA4B0D,EAAY,CACtC,OAAO,KAAK,sBAAqB,EAAG,OAAOhrB,GAAUA,GAAU,MAAQkG,GAAuBlG,CAAM,GAAKA,EAAO,YAAcgrB,CAAU,CAC1I,CACA,mBAAmBC,EAAS,CAC1B,OAAO,KAAK,UAAU,IAAIA,CAAO,CACnC,CACA,sBAAsBA,EAAS,CAC7B,IAAIhjC,EACAsvB,EAAQoO,EAAY,kBAAkB,KAAK,OAAO,KAAM,CAC1D,GAAIsF,CACV,CAAK,EACD,OAAQhjC,EAAOsvB,GAASoO,EAAY,sBAAsBpO,EAAO,CAC/D,GAAI0T,CACV,CAAK,KAAO,MAAQhjC,IAAS,OAASA,EAAO,IAC3C,CACA,iBAAiBijC,EAAS,CAExB,QADIC,EAAS,KAAK,gBAAe,EACxBlwC,EAAIkwC,EAAO,OAAS,EAAGlwC,GAAK,EAAGA,GAAK,EAAG,CAC9C,IAAIguC,EAAQkC,EAAOlwC,CAAC,EACpB,GAAIiwC,GAAW,MAAQA,EAAQjC,CAAK,EAClC,OAAOA,CAEX,CAEF,CACA,uBAAuB/+B,EAAM,CAC3B,OAAO,KAAK,wBAAwB,CAACA,CAAI,CAAC,CAC5C,CACA,wBAAwB88B,EAAO,CAC7B,OAAO,KAAK,iBAAiBiC,GAASjC,EAAM,KAAK98B,GAAQ8H,GAAmB9H,CAAI,GAAK++B,aAAiB/+B,EAAK,kBAAoB,CAAC8H,GAAmB9H,CAAI,GAAK++B,aAAiB/+B,CAAI,CAAC,CACpL,CACA,YAAY++B,EAAO,CACjB,IAAIgC,EAAUtF,EAAY,eAAesD,CAAK,EAC9C,GAAIgC,GAAW,KAAM,CACnBzoC,GAAI,MAAM,uCAAwCymC,CAAK,EACvD,MACF,CACAzmC,GAAI,OAAO,qBAAqB,OAAOyoC,EAAS,qBAAqB,CAAC,EAItE,KAAK,UAAU,OAAOA,CAAO,EAC7B,KAAK,UAAU,IAAIA,EAAShC,CAAK,CACnC,CACA,YAAYA,EAAO,CACjB,IAAIgC,EAAUtF,EAAY,eAAesD,CAAK,EAC9C,GAAIgC,GAAW,KAAM,CACnBzoC,GAAI,MAAM,uCAAwCymC,CAAK,EACvD,MACF,CACA,GAAI,CAAC,KAAK,UAAU,IAAIgC,CAAO,EAAG,CAChCzoC,GAAI,MAAM,oBAAoB,OAAOyoC,EAAS,qBAAqB,CAAC,EACpE,MACF,CACA,GAAI,KAAK,UAAU,IAAIA,CAAO,IAAMhC,EAAO,CAIzCzmC,GAAI,MAAM,8DAA8D,OAAOyoC,EAAS,uBAAuB,CAAC,EAChH,MACF,CACAzoC,GAAI,OAAO,qBAAqB,OAAOyoC,EAAS,uBAAuB,CAAC,EACxE,KAAK,UAAU,OAAOA,CAAO,CAC/B,CACA,wBAAwBG,EAAa,CACnC,IAAIlrC,EAAQ,KAAK,OAAO,UAAUmrC,GAAgBA,IAAiBD,GAAeC,EAAa,IAAM,MAAQD,EAAY,IAAM,MAAQC,EAAa,KAAOD,EAAY,EAAE,EACrKlrC,GAAS,GACX,KAAK,OAAO,OAAOA,EAAO,CAAC,CAE/B,CACA,YAAY+oC,EAAO,CACjBzmC,GAAI,OAAO,UAAWymC,CAAK,EAC3B,KAAK,YAAYA,CAAK,CACxB,CACA,YAAYA,EAAO,CACjBzmC,GAAI,OAAO,UAAWymC,CAAK,EAC3B,KAAK,YAAYA,CAAK,EACtB,KAAK,WAAU,CACjB,CACA,cAAcA,EAAO,CACnBzmC,GAAI,OAAO,YAAaymC,CAAK,EAC7B,KAAK,YAAYA,CAAK,EACtB,KAAK,WAAU,CACjB,CACA,WAAW5hB,EAAW,CACpB,IAAIkf,EAAYZ,EAAY,sBAAsB,KAAK,MAAM,EAC7D,GAAI,EAAAY,EAAU,QAAU,GAGxB,KAAI+E,EAAe3F,EAAY,qBAAqBY,CAAS,EAG7D,GAAI+E,IAAiB,GAAI,CACvB,IAAIC,EAAehF,EAAU,CAAC,EAC1BiF,EAAsBD,EAAa,OAAO,gBAC1CE,EAAqBD,GAAuB,KAAOD,EAAa,aAAaC,CAAmB,EAAID,EAAa,aAAa,CAAC,EACnIA,EAAa,qBAAqBE,EAAoB,EAAI,EAC1D,MACF,CACA,IAAIC,EAAcrkB,IAAcojB,GAAe,MAAQa,EAAe,GAAK/E,EAAU,QAAU+E,EAAe,EAAI/E,EAAU,QAAUA,EAAU,OAC5IoF,EAAcpF,EAAUmF,CAAW,EACnCE,EAAqBD,EAAY,OAAO,gBACxCrZ,EAAoBsZ,GAAsB,KAAOD,EAAY,aAAaC,CAAkB,EAAID,EAAY,aAAa,CAAC,EAC9HA,EAAY,qBAAqBrZ,EAAmB,EAAI,EAC1D,CACA,wBAAyB,CACvB,KAAK,WAAWmY,GAAe,IAAI,CACrC,CACA,4BAA6B,CAC3B,KAAK,WAAWA,GAAe,QAAQ,CACzC,CACA,SAASpjB,EAAW,CAClB,IAAIwkB,EACAC,EAAenG,EAAY,gBAAgB,KAAK,MAAM,EAC1D,GAAImG,IAAiB,OAGrB,IAAI,CACF,aAAAC,CACN,EAAQD,EACJ,GAAI,EAAAC,EAAa,QAAU,GAG3B,KAAIC,GAAmBH,EAAwBC,EAAa,OAAO,mBAAqB,MAAQD,IAA0B,OAASA,EAAwB,EACvJH,EAAcrkB,IAAcojB,GAAe,MAAQuB,EAAkB,GAAKD,EAAa,QAAUC,EAAkB,EAAID,EAAa,QAAUA,EAAa,OAC3JE,EAAoBF,EAAaL,CAAW,EAChDI,EAAa,qBAAqBG,EAAmB,EAAI,GAC3D,CACA,sBAAuB,CACrB,KAAK,SAASxB,GAAe,IAAI,CACnC,CACA,0BAA2B,CACzB,KAAK,SAASA,GAAe,QAAQ,CACvC,CAOA,aAAaW,EAAajD,EAAe,CACvC3lC,GAAI,OAAO,UAAW4oC,EAAajD,CAAa,EAChD,KAAK,wBAAwBiD,CAAW,EAIxC,GAAI,CACF,UAAA3zB,CACN,EAAQ2zB,EACA,CACF,MAAAlmC,CACN,EAAQkmC,EACJlmC,EAAQ,KAAK,iBAAiBuS,EAAWvS,CAAK,EAC9C,IAAI8a,EAASlb,GAAcA,GAAc,GAAIsmC,CAAW,EAAG,GAAI,CAC7D,MAAAlmC,CACN,CAAK,EACG,CACF,KAAA+8B,CACN,EAAQ,KAAK,OACL1K,EAAQ6T,EAAY,gBAAkB,OAAY,OAAYzF,EAAY,aAAa1D,EAAMmJ,EAAY,aAAa,EAC1HzF,EAAY,cAAc,CACxB,KAAA1D,EACA,OAAAjiB,EACA,cAAAmoB,EACA,MAAO5Q,GAA6C,MAC1D,CAAK,CACH,CAMA,iBAAiB+P,EAAa,CAC5B,IAAI4E,EACJ,GAAI,KAAK,OAAO,SAAW,EAC3B,IAAI5E,IAAgB,OAAW,CAC7B,KAAK,aAAa,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,CAAC,EACrD,MACF,CAEA,QADI6E,GAAWD,EAAwBvG,EAAY,kBAAkB,KAAK,OAAO,KAAM2B,EAAY,UAAS,CAAE,KAAO,MAAQ4E,IAA0B,OAAS,OAASA,EAAsB,OAAO,GAC7L,EAAI,KAAK,OAAO,OAAS,EAAG,GAAK,EAAG,GAAK,EAAG,CACnD,IAAId,EAAc,KAAK,OAAO,CAAC,EAC/B,GAAIA,EAAY,gBAAkBe,EAAS,CACzC,KAAK,aAAaf,CAAW,EAC7B,MACF,CACF,EACF,CACA,cAAcA,EAAa,CACzB5oC,GAAI,OAAO,WAAY4oC,CAAW,EAClC,KAAK,wBAAwBA,CAAW,EACxC,KAAK,WAAU,CACjB,CACA,aAAaH,EAAS3D,EAAa,CAGjC9kC,GAAI,OAAO,WAAYyoC,CAAO,EAC9B,KAAK,eAAe3D,CAAW,EAC/B,KAAK,WAAU,CACjB,CACA,mBAAmBz1B,EAAI,CACrB,IAAImO,EAAS,CACX,GAAAnO,CACN,EACQ,CACF,KAAAowB,CACN,EAAQ,KAAK,OACT0D,EAAY,eAAe1D,EAAMjiB,CAAM,CACzC,CACA,eAAesnB,EAAa,CAC1B,IAAItnB,EAAS2lB,EAAY,gCAAgC2B,CAAW,EACpE,GAAItnB,GAAUkG,GAAuBlG,CAAM,EAAG,CAC5C,IAAImnB,EAAmB,KAAK,mBAAmBnnB,EAAO,UAAWA,CAAM,EACvE,GAAImnB,GAAoB,KAAM,CAC5B,IAAIiF,EAGJjF,EAAiB,eAAiBiF,EAAmB9E,EAAY,OAAS,MAAQ8E,IAAqB,OAAS,OAASA,EAAiB,OAAO,OAAO,OAAO,GAC/J,KAAK,OAAO,KAAKjF,CAAgB,CACnC,CACF,CACF,CACA,YAAa,CACX,GAAI,CACF,OAAAyD,EACA,UAAAD,CACN,EAAQ,KACJ,KAAK,gBAAgB,CACnB,OAAQ,CAAC,GAAGC,CAAM,EAClB,UAAW,IAAI,IAAID,CAAS,CAClC,CAAK,CACH,CACF,CACA/vC,GAAgB8vC,GAAc,yBAA0B,GAAG,ECzV3D,IAAIloC,GAAMC,EAAI,OAAO,oBAAoB,EAOzC,MAAM4pC,WAA2BpnC,WAAU,CACzC,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,MAAQ,CACX,MAAO,IACb,CACE,CACA,kBAAkB7I,EAAO,CACvB,KAAK,SAAS,CACZ,MAAAA,CACN,CAAK,CACH,CACA,sBAAuB,CACrB,GAAI,CACF,YAAAirC,EACA,WAAAgF,CACN,EAAQ,KAAK,MACLrB,EAAUtF,EAAY,mBAAmB2B,CAAW,EACxD9kC,GAAI,MAAM,uBAAwByoC,CAAO,EACzCqB,EAAW,KAAK9C,EAAW,OAAQyB,EAAS3D,CAAW,CACzD,CACA,QAAS,CACP,GAAI,CACF,SAAAlhC,CACN,EAAQ,KAAK,MACL,CACF,MAAA/J,CACN,EAAQ,KAAK,MACT,OAAIA,GAAS,KACSkK,MAAK,MAAO,CAC9B,UAAW,uBACX,SAAuBA,MAAKsU,GAAgB,CAC1C,cAAe,qCACf,aAAc,GAAG,OAAOxe,CAAK,EAC7B,UAAW,GACX,SAAU,EACpB,CAAS,CACT,CAAO,EAKI+J,GAAsD,IAC/D,CACF,CC1DA,SAASvB,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAUhT,SAASuxC,GAAUvsB,EAAQ,CAChC,GAAI,CACF,MAAA9a,EACA,eAAAsnC,CACJ,EAAMxsB,EACA,CACF,SAAAysB,CACJ,EAAMvnC,EACA,CACF,WAAA2jC,EAAa,IACjB,EAAM3jC,EACAsnC,IACD,CACC,WAAA3D,CACN,EAAQ2D,GAEN,IAAIE,EAAW,GACf,OAAID,GAAY,OACdC,EAAS,SAAWD,GAElB5D,GAAc,OAChB6D,EAAS,WAAa7D,GAEjB/jC,GAAcA,GAAc,GAAIkb,CAAM,EAAG,GAAI,CAClD,eAAgB,KAChB,MAAO0sB,EACP,KAAM,iBACV,CAAG,CACH,CASO,SAASC,GAAQznC,EAAO0nC,EAAkB,CAC/C,OAAO9nC,GAAcA,GAAc,GAAII,CAAK,EAAG,GAAI,CACjD,iBAAA0nC,CACJ,CAAG,CACH,CACA,MAAAC,GAAe,CACb,UAAAN,GACA,QAAAI,EACF,EC1DU,IAACG,GAAoC3nC,EAAM,cAAc,MAAS,EAC5E2nC,GAAqB,YAAc,uBCDnC,IAAIC,GAAYC,GAAU,MAAM,CAC9B,GAAIA,GAAU,KACd,IAAKA,GAAU,KACf,SAAUA,GAAU,KACpB,IAAKA,GAAU,MAAM,CACnB,OAAQA,GAAU,MAAM,CACtB,KAAMA,GAAU,QAAQA,GAAU,MAAM,CACtC,YAAaA,GAAU,MAAM,EAAE,CACvC,CAAO,CAAC,CACR,CAAK,CACL,CAAG,EACD,MAAOA,GAAU,OACjB,SAAUA,GAAU,KACpB,MAAOA,GAAU,IACnB,CAAC,EACGjL,GAAWiL,GAAU,MAAM,CAC7B,GAAIA,GAAU,KACd,IAAKA,GAAU,KACf,KAAMA,GAAU,IAClB,CAAC,EACGC,GAASD,GAAU,MAAM,CAC3B,kBAAmBA,GAAU,KAC7B,KAAMA,GAAU,MAAM,CACpB,SAAUA,GAAU,IACxB,CAAG,EACD,GAAIA,GAAU,KACd,IAAKA,GAAU,KACf,SAAUjL,EACZ,CAAC,EACGmL,GAAc,OAAO,OAAO,CAC9B,UAAAH,GACA,SAAAhL,GACA,OAAAkL,EACF,CAAC,EC3BM,SAASE,GAAY3gB,EAAcnG,EAE1C7mB,EAAU,CACR+C,YAAU,UAA4B,CACpC,OAAAiqB,EAAa,GAAGnG,EAAW7mB,CAAQ,EAC5B,IAAM,CACXgtB,EAAa,IAAInG,EAAW7mB,CAAQ,CACtC,CACF,EAAG,CAACgtB,EAAcnG,EAAW7mB,CAAQ,CAAC,CACxC,CCfU,IAAC4tC,GAAqB,qBCIhC,MAAAC,GAAeptB,GAAmBmtB,GAAoB,GAAI,EAAK,ECJ/DE,GAAe,CACb,cAAAD,EACF,ECFA,IAAIlzC,GAAY,IAAI,IAChBwiB,GAAe,OAAO,OAAO,EAAE,EAC/BziB,GAAc,OAAO,OAAO,EAAE,EAIvBqzC,GAAiBC,GACjBC,GAAiBC,GACjBC,GAAcC,GAOdC,GAAuBhxB,GAASA,EAAM,cAOtCixB,GAAmB,CAACjxB,EAAOkxB,IAAgB,CACpD,IAAIC,EACJ,OAAQA,EAAwBH,GAAqBhxB,CAAK,EAAEkxB,CAAW,KAAO,MAAQC,IAA0B,OAASA,EAAwBrxB,EACnJ,EAOWsxB,GAA8B,CAACpxB,EAAOkxB,IAAgB,CAC/D,IAAIG,EACJ,OAAQA,EAAwBJ,GAAiBjxB,EAAOkxB,CAAW,EAAE,UAAY,MAAQG,IAA0B,OAASA,EAAwBh0C,EACtJ,EAOWi0C,GAAgC,CAACtxB,EAAOkxB,IAAgB,CACjE,IAAIK,EACJ,OAAQA,EAAwBN,GAAiBjxB,EAAOkxB,CAAW,EAAE,aAAe,MAAQK,IAA0B,OAASA,EAAwBj0C,EACzJ,EAOWk0C,GAA+B,CAACxxB,EAAOkxB,IAAgB,CAChE,IAAIO,EACJ,OAAQA,EAAwBR,GAAiBjxB,EAAOkxB,CAAW,EAAE,iBAAmB,MAAQO,IAA0B,OAASA,EAAwB3xB,EAC7J,EAQW4xB,GAA4B,CAAC1xB,EAAOkxB,EAAaS,IAAaH,GAA6BxxB,EAAOkxB,CAAW,EAAES,CAAQ,EChElI,SAAS3pC,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAS7S,IAACyzC,GAAmB,CAAC58B,EAAI0N,KAAU,CAC3C,KAAM6tB,GACN,GAAAv7B,EACA,QAAS0N,CACX,GAQWmvB,GAAsB,CAAC78B,EAAI0N,IAAS,CAACN,EAAUC,IAAaD,EAASwvB,GAAiB58B,EAAI/M,GAAcA,GAAc,GAAIgpC,GAAiB5uB,EAAQ,EAAIrN,CAAE,CAAC,EAAG0N,CAAI,CAAC,CAAC,EAUnKovB,GAAyB,CAAC98B,EAAI28B,EAAUjvB,IAAS,CAACN,EAAUC,IAAaD,EAASwvB,GAAiB58B,EAAI/M,GAAcA,GAAc,GAAIgpC,GAAiB5uB,EAAQ,EAAIrN,CAAE,CAAC,EAAG,GAAI,CACvL,cAAe/M,GAAcA,GAAc,GAAIupC,GAA6BnvB,IAAYrN,CAAE,CAAC,EAAG,GAAI,CAChG,CAAC28B,CAAQ,EAAGjvB,CAChB,CAAG,CACH,CAAC,CAAC,CAAC,ECrCH,OAAO,QAAQ+tB,EAAQ,EAAE,IAAIrlC,GAAQ,CACnC,GAAI,CAAC7L,EAAMkkB,CAAO,EAAIrY,EACtB,OAAOwY,GAAgB,SAASrkB,EAAMkkB,CAAO,CAC/C,CAAC,ECHM,SAASsuB,GAAsB3mC,EAAM,CAC1C,GAAI,CACF,SAAA7B,CACJ,EAAM6B,EAEJ,OAAoB1B,MAAK8C,WAAW,CAClC,SAAUjD,CACd,CAAG,CACH,CCLU,IAACyoC,GAA8B9mC,gBAAc,IAAI,EAC3D8mC,GAAe,YAAc,iBAMtB,SAASC,IAAa,CAC3B,OAAOvrC,aAAWsrC,EAAc,CAClC,CCdA,SAAShqC,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAgBvT,IAAIwH,GAAMC,EAAI,OAAO,iBAAiB,EAClCka,GAAe,OAAO,OAAO,EAAE,EAC/BoyB,GAAwB,GACxBC,GAAmB,OACnBC,GAA2B,IAG3BC,GAAoBhqC,GAASA,EAI1B,SAASiqC,GAAgBlnC,EAAM,CACpC,IAAImnC,EAAcC,EACd,CACF,GAAAx9B,EACA,SAAAzL,EACA,eAAAkpC,EAA8B/oC,MAAK,MAAO,CACxC,SAAU,qBAChB,CAAK,EACD,OAAA+/B,EACA,aAAAiJ,EAAeR,GACf,eAAAS,EAAiBR,GACjB,oBAAAS,EAAsBT,GAC1B,QAAIrC,EAAU+C,GACd,UAAInD,EAAYoD,GACZ,aAAAC,EAAehB,EACnB,EAAM3mC,EACAgX,EAAWuuB,GAAW,EACtBjuB,GAAQ6vB,EAAe1B,GAAY/6B,GAASm7B,GAAiBn7B,EAAOd,CAAE,CAAC,KAAO,MAAQu9B,IAAiB,OAASA,EAAezyB,GAC/H,CAACkzB,EAAkBC,CAAmB,EAAIrnC,WAAS,EAAK,EACxD,CAACsnC,EAAgBC,CAAiB,EAAIvnC,WAAS,EAAK,EACpD,CAACwnC,EAAYC,CAAa,EAAIznC,WAAQ,EACtC,CAAC0nC,CAAmB,EAAI1nC,YAAU4mC,EAAU9vB,GAAS,KAA0B,OAASA,EAAK,UAAY,MAAQ8vB,IAAY,OAASA,EAAU,EAAE,EAClJ,CAACe,EAAgBC,CAAiB,EAAI5nC,WAAS69B,EAAO,kBAAkB,EACxEgK,EAAavsC,UAAQ,IAAM,IAAI,IAAO,EAAE,EACxCwsC,EAAexsC,UAAQ,IAAM,IAAI,IAAO,EAAE,EAC1CysC,EAAoBxtC,cAAY,SAAU5G,EAAMq0C,EAAe,CACjE,IAAIC,GACAC,GAAmB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIhE,EACvFiE,GAAqB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIrE,EAC7F/pC,GAAI,OAAO,oBAAqBpG,EAAMq0C,EAAeE,GAAkBC,EAAkB,EACzF,SAASC,GAAiB3rC,EAAOhB,GAAK,CAEpC,IAAI4sC,GAAQL,EACRM,GAAmBnB,EAOnBoB,GAAS5+B,GAAW0+B,EAAK,EAGzB,CACF,YAAAxJ,GACA,WAAAgF,EACR,EAAUpnC,EACA+lC,GAAUtF,EAAY,mBAAmB2B,EAAW,EACxD,OAAoB/gC,MAAK8lC,GAAoB,CAC3C,YAAa/E,GACb,WAAYgF,GACZ,SAAuB/lC,MAAKsoC,GAAe,SAAU,CACnD,MAAO5D,GACP,SAAuB1kC,MAAKwqC,GAAkBjsC,GAAcA,GAAc,GAAII,CAAK,EAAG,GAAI,CACxF,SAAU8rC,GAGVzqC,MAAKuqC,GAAOhsC,GAAcA,GAAc,GAAII,CAAK,EAAG,GAAI,CACtD,IAAKhB,EACnB,CAAa,CAAC,EAGFqC,MAAKuqC,GAAOhsC,GAAc,GAAII,CAAK,CAAC,CAChD,CAAW,CAAC,CACZ,CAAS,CACT,CAAO,CACH,CACA2rC,GAAiB,YAAc,oBAAoB,QAAQH,GAAwBD,EAAc,eAAiB,MAAQC,KAA0B,OAASA,GAAwBt0C,EAAM,GAAG,EAC9L,IAAI0C,EAAUwnC,EAAO,kBAAkBlqC,EAAmB+I,EAAM,WAAW0rC,EAAgB,CAAC,EAC5F,OAAAP,EAAW,IAAIl0C,EAAMu0C,EAAgB,EACrCJ,EAAa,IAAIn0C,EAAMw0C,EAAkB,EAClC9xC,CACT,EAAG,CAAC6tC,EAASJ,EAAW+D,EAAYC,EAAcjK,EAAQsJ,CAAY,CAAC,EACnEhI,EAAmB5kC,cAAY,CAAC5G,EAAM8I,IAAU,CAClD,IAAI+rC,GACJ,QAASA,GAAkBX,EAAW,IAAIl0C,CAAI,KAAO,MAAQ60C,KAAoB,OAASA,GAAkB/B,IAAmBhqC,EAAO2M,CAAE,CAC1I,EAAG,CAACy+B,EAAYz+B,CAAE,CAAC,EACfq1B,EAAqBlkC,cAAY,CAAC5G,EAAM4jB,IAAW,CACrD,IAAIkxB,GACJ,QAASA,GAAoBX,EAAa,IAAIn0C,CAAI,KAAO,MAAQ80C,KAAsB,OAASA,GAAoBhC,IAAmBlvB,EAAQnO,CAAE,CACnJ,EAAG,CAAC0+B,EAAc1+B,CAAE,CAAC,EACjBs/B,EAAeptC,UAAQ,IAAM,IAAI2mC,GAAapE,EAAQsB,EAAkBV,EAAoB,IAAI,IAAOiJ,EAAqBh5B,GAAS,CACvI,GAAI,CACF,OAAAyzB,EACA,UAAAD,EACN,EAAQxzB,EACJ8H,EAASyvB,GAAoB78B,EAAI,CAC/B,OAAA+4B,EACA,UAAAD,EACN,CAAK,CAAC,CACJ,CAAC,EAAG,CAACzD,EAAoBjoB,EAAU2oB,EAAkB/1B,EAAIs+B,EAAqB7J,CAAM,CAAC,EAGjF8K,EAAyCjtC,GAAqBktC,GAA0B,CAC1F,IAAIC,EAAarB,GAAc,MAAQ,CAACtK,EAAY,QAAQsK,EAAYoB,CAAsB,EAC9F7uC,GAAI,MAAM,2BAA4B8uC,EAAYD,CAAsB,EACpEC,IACFxB,EAAoBxJ,EAAO,KAAK,aAAa,SAAW,CAAC,EACzD4J,EAAcmB,CAAsB,EACpC7B,EAAe6B,CAAsB,EACrChB,EAAkB/J,EAAO,kBAAkB,EAE/C,EAAG2I,GAA0B,CAC3B,eAAgB,EACpB,CAAG,EACD1sC,YAAU,IAAM,IAAM6uC,EAAuC,MAAK,EAAI,CAACA,CAAsC,CAAC,EAC9G,IAAIG,EAA2BvuC,cAAY,IAAM,CAG/C,GAAI,CAAA+sC,EACJ,KAAIyB,EAAWlL,EAAO,SAAQ,EAC1ByB,EAAgByJ,EAAS,QACzBH,GAAyB1L,EAAY,sBAAsBoC,EAAeb,CAAkB,EAChGkK,EAAuCC,EAAsB,EAC/D,EAAG,CAACnK,EAAoB6I,EAAgBzJ,EAAQ8K,CAAsC,CAAC,EACnFK,EAA2BzuC,cAAYyU,GAAa,CACtD,IAAIi6B,EAAc/L,EAAY,mBAAmBluB,CAAS,EAC1D6uB,EAAO,SAAS,KAAKkD,EAAW,SAAUkI,CAAW,EACrD1B,EAAkB,EAAI,CACxB,EAAG,CAAC1J,EAAO,QAAQ,CAAC,EAChBqL,EAA0B3uC,cAAYyU,GAAa,CACrD,IAAIi6B,EAAc/L,EAAY,mBAAmBluB,CAAS,EAC1D6uB,EAAO,SAAS,KAAKkD,EAAW,QAASkI,CAAW,EACpD1B,EAAkB,EAAK,CACzB,EAAG,CAAC1J,EAAO,QAAQ,CAAC,EAChBsL,GAAyB5uC,cAAYtD,GAAQ,CAE/C,GADA8C,GAAI,OAAO,yBAA0B9C,CAAI,EACrC,EAAAA,GAAQ,MAAQA,EAAK,QAAU,MAAQ,CAACwmB,GAAuBxmB,EAAK,MAAM,GAAKA,EAAK,OAAO,WAAa,MAAQA,EAAK,SAAW,MAGpI,KAAImyC,EAAenyC,EAAK,OAAO,UAAU,QAAQ,kBAAmB,OAAO,EAAE,YAAW,EACpFmxB,GAAW,GAAG,OAAOghB,EAAc,YAAY,EACnDnyC,EAAK,QAAQ,SAASmxB,EAAQ,EAChC,EAAG,EAAE,EACDihB,GAA4B9uC,cAAY,IAAM,CAChDqtC,EAAkB/J,EAAO,kBAAkB,CAC7C,EAAG,CAACA,CAAM,CAAC,EACX6G,GAAY7G,EAAQ,eAAgBiL,CAAwB,EAC5DpE,GAAY7G,EAAQ,eAAgBmL,CAAwB,EAC5DtE,GAAY7G,EAAQ,cAAeqL,CAAuB,EAC1DxE,GAAY7G,EAAQ,mBAAoBsL,EAAsB,EAC9DzE,GAAY7G,EAAO,SAAUkD,EAAW,cAAe+H,CAAwB,EAC/EpE,GAAY7G,EAAQ,uBAAwBwL,EAAyB,EACrE,IAAIC,GAAuB9tC,GAAYsrC,CAAY,EACnDhtC,mBAAU,UAAyB,CACjC,GAAIwvC,KAAyBxC,GAAgBA,IAAiBU,EAAY,CACxEztC,GAAI,MAAM,+BAA+B,EAGzC,QAFI0O,EAAUy0B,EAAY,oBAAoB4J,EAAc3H,CAAgB,EAErEtB,EAAO,KAAK,aAAa,OAAS,GACvCA,EAAO,KAAK,aAAa,CAAC,EAAE,OAAM,EAIpC,QAASrrC,GAAI,EAAGA,GAAIiW,EAAQ,OAAQjW,IAAK,EACvCqrC,EAAO,KAAK,SAASp1B,EAAQjW,EAAC,CAAC,EAEjC60C,EAAoBxJ,EAAO,KAAK,aAAa,SAAW,CAAC,CAC3D,CACF,EAAG,CAACsB,EAAkBtB,EAAQiJ,EAAcU,EAAYkB,EAAcY,EAAoB,CAAC,EAO3FxvC,YAAU,IAAMktC,EAAmB,EAAI,EAAE,EACrB9oC,OAAM0C,WAAW,CACnC,SAAU,CAACwmC,GAAoBP,EAAgBc,EAAgBjrC,EAAM,SAAS,IAAIiB,EAAU48B,GAASA,GAAS,KAI9Gz8B,MAAKkU,GAAe,CAClB,SAAU,GACV,SAAuBtV,EAAM,aAAa69B,EAAO,CAC/C,GAAAnxB,EACA,OAAAy0B,EACA,aAAA6K,EACA,kBAAAX,CACR,CAAO,CACP,CAAK,EAAI,IAAI,CAAC,CACd,CAAG,CACH,CCpNU,IAACwB,GAAkCjqC,gBAAc,IAAI,EAC/DiqC,GAAmB,YAAc,qBAC1B,SAASC,IAAiB,CAC/B,IAAIlE,EAAcxqC,aAAWyuC,EAAkB,EAC/C,GAAIjE,GAAe,KACjB,MAAM,IAAI,MAAM,kEAAkE,EAEpF,OAAOA,CACT,CCTA,SAASnzC,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAqBvT,SAASk3C,GACTC,EACAC,EACA/I,EAAU,CACR,GAAK8I,EAGL,IAAI9I,EAAS8I,CAAK,IAAM,GACtB,OAAOA,EAGT,QADInP,EAAmCmP,EAAM,MACtCnP,GAAO,CACZ,IAAIqP,EAAQH,GAAclP,EAAOoP,EAAW/I,CAAQ,EACpD,GAAIgJ,EACF,OAAOA,EAETrP,EAA2BA,EAAM,OACnC,EACF,CAKA,SAASsP,GAAYhvC,EAAS,CAC5B,GAAI,CACF,OAAO,OAAO,iBAAiBA,EAAS,CACtC,iBAAkB,CAChB,KAAM,CACJ,OAAO,IACT,EACA,KAAM,CAEN,CACR,EACM,kBAAmB,CACjB,KAAM,CACJ,OAAO,IACT,EACA,KAAM,CAEN,CACR,CACA,CAAK,CACH,MAAY,CACV,OAAOA,CACT,CACF,CAGA,IAAIivC,GAA8BD,GAGlCE,gBAAoB,IAAI,CAAC,EACzBD,GAAa,YAAc,eAKpB,MAAME,WAAsBC,WAAgB,CACjD,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB93C,GAAgB,KAAM,kBAAmB,MAAM,CACjD,CACA,QAAS,CACP,GAAI,CACF,SAAAwL,CACN,EAAQ,KAAK,MACT,OAGEG,MAAKgsC,GAAa,SAAU,CAC1B,MAAO,KAAK,gBACZ,SAAUnsC,CAClB,CAAO,CAEL,CACF,CAKO,SAASusC,IAAW,CACzB,IAAI1Q,EAAO2Q,aAAiBL,EAAY,EACxC,GAAItQ,IAAS,KACX,MAAM,IAAI,MAAM,qDAAqD,EAEvE,GAAI,CAACpwB,CAAE,EAAIghC,WAAe,IAAM/gC,GAAM,CAAE,EACpCghC,EAAcC,UAAc,IAAM,CAEpC,QAASC,IAAc,CAAC/Q,EAAMA,GAAS,KAA0B,OAASA,EAAK,SAAS,EAAE,OAAOnnC,GAAKA,GAAK,IAAI,EAAG,CAChH,IAAIq3C,EAAQD,GAAcc,EAAY,GAAOjiB,GAAQ,CAEnD,QADIpe,EAAQoe,EAAK,cACVpe,GAAS,MAAM,CACpB,GAAIA,EAAM,gBAAkBd,EAC1B,MAAO,GAETc,EAAQA,EAAM,IAChB,CACF,CAAC,EACD,GAAIw/B,EACF,OAAOA,CAEX,CACF,EAAG,CAAClQ,EAAMpwB,CAAE,CAAC,EACb,OAAOihC,CACT,CC/HU,IAACG,GAAuB,UCAvBC,GAAmB,mBACnBC,GAAkB,kBAClB,CACT,OAAQC,GACR,KAAMC,GACN,YAAaC,EACf,EAAIpmB,GAAmBgmB,EAAgB,EAC5B,CACT,OAAQK,GACR,KAAMC,GACN,YAAaC,EACf,EAAIvmB,GAAmBimB,EAAe,ECZtC,SAASv4C,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAQvT,MAAM04C,WAAyBphC,eAAc,CAC3C,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,CACzD,CACA,YAAa,CACX,IAAIyuC,EAAuBvH,EAEvB,CACF,YAAA9E,CACN,EAAQ,KAAK,MACT,MAAO,CAAC,IAAKqM,EAAwBrM,GAAgB,OAAmC8E,EAAmB9E,EAAY,OAAS,MAAQ8E,IAAqB,SAAWA,EAAmBA,EAAiB,UAAY,MAAQA,IAAqB,OAAS,OAASA,EAAiB,QAAU,MAAQuH,IAA0B,OAASA,EAAwB,EAAG,CAC1W,CACA,gBAAiB,CACf,GAAI,CACF,YAAArM,CACN,EAAQ,KAAK,MACTA,EAAY,MAAK,CACnB,CACA,oBAAqB,CACnB,IAAIsM,EAAO,KAAK,WAAU,EAI1BA,EAAK,QAAQ1X,GAAO,CAClB,IAAI2X,EACJ,OAAQA,GAAc3X,GAAQ,KAAyB,OAASA,EAAI,aAAa,aAAe,MAAQ2X,IAAe,OAAS,OAASA,EAAW,MAAK,CAC3J,CAAC,CACH,CACA,sBAAuB,CAKrB,OAJI,CACF,YAAAvM,CACN,EAAQ,KAAK,MACLsM,EAAO,KAAK,WAAU,EACjB34C,EAAI24C,EAAK,OAAS,EAAG34C,EAAI,EAAGA,GAAK,EAAG,CAC3C,IAAI64C,EAAqBC,EAAmBC,EAAaC,EACzD,KAAMH,EAAsBF,EAAK34C,CAAC,EAAE,eAAiB,MAAQ64C,IAAwB,SAAWA,EAAsBA,EAAoB,UAAY,MAAQA,IAAwB,OAAS,OAASA,EAAoB,QAAUC,EAAoBzM,EAAY,OAAS,MAAQyM,IAAsB,SAAWA,EAAoBA,EAAkB,eAAiB,MAAQA,IAAsB,SAAWA,EAAoBA,EAAkB,UAAY,MAAQA,IAAsB,OAAS,OAASA,EAAkB,IAC1gB,OAIDC,IAAgBC,EAAUL,EAAK34C,CAAC,KAAO,MAAQg5C,IAAY,OAAS,OAASA,EAAQ,aAAa,aAAe,MAAQD,IAAgB,QAAUA,EAAY,MAAK,CACvK,CACF,CACA,kBAAmB,CACjB,GAAI,CACF,YAAA1M,EACA,WAAAgF,CACN,EAAQ,KAAK,MACTA,EAAW,KAAK9C,EAAW,YAAalC,CAAW,CACrD,CACA,mBAAoB,CAMlB,OALI,CACF,YAAAA,CACN,EAAQ,KAAK,MACLsM,EAAO,KAAK,WAAU,EACtBvpC,EAAW,GACN,EAAIupC,EAAK,OAAS,EAAG,EAAI,EAAG,GAAK,EAAG,CAC3C,IAAIM,EAAsBC,EAAmBC,EAC7C,KAAMF,EAAuBN,EAAK,CAAC,EAAE,eAAiB,MAAQM,IAAyB,SAAWA,EAAuBA,EAAqB,UAAY,MAAQA,IAAyB,OAAS,OAASA,EAAqB,QAAUC,EAAoB7M,EAAY,OAAS,MAAQ6M,IAAsB,SAAWA,EAAoBA,EAAkB,eAAiB,MAAQA,IAAsB,SAAWA,EAAoBA,EAAkB,UAAY,MAAQA,IAAsB,OAAS,OAASA,EAAkB,IAChhB,MAEF,IAAIE,EAAW,GAAS,GAAAD,EAAWR,EAAK,CAAC,KAAO,MAAQQ,IAAa,SAAWA,EAAWA,EAAS,eAAiB,MAAQA,IAAa,SAAWA,EAAWA,EAAS,UAAY,MAAQA,IAAa,SAAkBA,EAAS,YACrO,GAAIC,EAAU,CACZhqC,EAAW,GACX,KACF,CACF,CACA,OAAOA,CACT,CACA,aAAc,CAGZ,QAFIupC,EAAO,KAAK,WAAU,EACtBvpC,EAAW,GACNpP,EAAI24C,EAAK,OAAS,EAAG34C,EAAI,EAAGA,GAAK,EAAG,CAC3C,IAAIq5C,EACAD,EAAW,GAAS,GAAAC,EAAWV,EAAK34C,CAAC,KAAO,MAAQq5C,IAAa,SAAWA,EAAWA,EAAS,eAAiB,MAAQA,IAAa,SAAWA,EAAWA,EAAS,UAAY,MAAQA,IAAa,SAAkBA,EAAS,YACrO,GAAID,EAAU,CACZhqC,EAAW,GACX,KACF,CACF,CACA,OAAOA,CACT,CACA,eAAgB,CACd,IAAI6hC,EAAuBqI,EACvB,CACF,UAAAn3B,EACA,YAAAkqB,CACN,EAAQ,KAAK,MACL6E,GAAWD,EAAwBvG,EAAY,kBAAkB2B,EAAY,cAAc,KAAMA,EAAY,UAAS,CAAE,KAAO,MAAQ4E,IAA0B,OAAS,OAASA,EAAsB,OAAO,GACpN,MAAO,GAAGqI,EAAwBn3B,EAAU,KAAK,UAAY,MAAQm3B,IAA0B,QAAUA,EAAsB,KAAKtL,GAASA,EAAM,gBAAkBkD,CAAO,EAC9K,CACA,QAAS,CACP,IAAIqI,EACA,CACF,kBAAAC,EACA,YAAAnN,CACN,EAAQ,KAAK,MACL53B,EAAiB,CAAC,GAAG+kC,CAAiB,EAC1C/kC,EAAe,KAAK,KAAO,CACzB,MAAO,uBACP,MAAOd,GAAe,OAAO,OAAS,KACtC,OAAQ,KAAK,iBACb,SAAU,KAAK,cAAa,CAClC,EAAM,EACF,IAAIylC,GAAYG,EAAoBlN,EAAY,OAAS,MAAQkN,IAAsB,SAAWA,EAAoBA,EAAkB,eAAiB,MAAQA,IAAsB,SAAWA,EAAoBA,EAAkB,UAAY,MAAQA,IAAsB,OAAS,OAASA,EAAkB,WACtT,OAAA9kC,EAAe,KAAK,CAClB,MAAO,QACP,MAAO,GACP,MAAOd,GAAe,OAAO,IAC7B,OAAQ,KAAK,eACb,SAAUylC,IAAa,QAAa,CAACA,CAC3C,CAAK,EAGD3kC,EAAe,KAAK,KAAO,CACzB,MAAO,sBACP,MAAO,GACP,MAAOd,GAAe,OAAO,IAC7B,OAAQ,KAAK,qBACb,SAAU,KAAK,kBAAiB,CACtC,EAAM,EACFc,EAAe,KAAK,KAAO,CACzB,MAAO,YACP,MAAO,GACP,MAAOd,GAAe,OAAO,IAC7B,OAAQ,KAAK,mBACb,SAAU,KAAK,YAAW,CAChC,EAAM,EACkBrI,MAAKqI,GAAgB,CACvC,QAASc,CACf,CAAK,CACH,CACF,CACA9U,GAAgB84C,GAAkB,eAAgB,CAChD,kBAAmB,EACrB,CAAC,EACD,IAAIgB,GAAkB/hC,IAAU,CAC9B,UAAWwK,GAAaxK,CAAK,CAC/B,GACIgiC,GAA4BC,GAAQF,GAAiB,CACvD,aAAcG,EAChB,CAAC,EAAEnB,EAAgB,EC3JnB,SAAS94C,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAKxS,MAAM85C,WAAqBxiC,eAAc,CACtD,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,iBAAkB,MAAM,EAC9C,KAAK,yBAA2B,KAAK,yBAAyB,KAAK,IAAI,EACvE,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,eAA8BuK,EAAM,UAAS,EAClD,GAAI,CACF,MAAA7K,CACN,EAAQ4K,EACJ,KAAK,MAAQ,CACX,MAAA5K,EACA,kBAAmB,EACzB,CACE,CACA,mBAAmB+K,EAAW,CAC5B,GAAI,CACF,QAAS0vC,CACf,EAAQ1vC,EACA,CACF,QAAAD,CACN,EAAQ,KAAK,MAKLA,GAAW,CAAC2vC,GACd,KAAK,WAAU,CAEnB,CACA,YAAa,CACX,GAAI,CACF,MAAAz6C,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,MAAAA,EACA,kBAAmB,EACzB,CAAK,CACH,CACA,0BAA2B,CACzB,IAAI06C,GACHA,EAAuB,KAAK,kBAAoB,MAAQA,IAAyB,SAAWA,EAAuBA,EAAqB,WAAa,MAAQA,IAAyB,QAAUA,EAAqB,MAAK,CAC7N,CACA,wBAAwB7tC,EAAO,CAC7B,KAAK,SAAS,CACZ,MAAOA,EAAM,OAAO,KAC1B,CAAK,CACH,CACA,oBAAqB,CACnB,GAAI,CACF,SAAA4E,CACN,EAAQ,KAAK,MACTA,EAAQ,CACV,CACA,mBAAmB5E,EAAO,CACxBA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,GAAI,CACF,MAAA7M,CACN,EAAQ,KAAK,MACLsuC,EAAWtuC,GAAU,KAA2B,OAASA,EAAM,KAAI,EACvE,GAAIsuC,IAAa,QAAaA,IAAa,GAAI,CAC7C,GAAI,CACF,SAAAqM,CACR,EAAU,KAAK,MACTA,EAASrM,CAAQ,CACnB,MACE,KAAK,SAAS,CACZ,MAAOA,EACP,kBAAmB,EAC3B,CAAO,CAEL,CACA,oBAAqB,CACnB,GAAI,CACF,SAAAsM,EACA,QAAAC,EACA,SAAAC,CACN,EAAQ,KAAK,MACL,CACF,MAAA96C,EACA,kBAAA+6C,CACN,EAAQ,KAAK,MACT,OAAoB1uC,OAAM,OAAQ,CAChC,UAAWD,EAAW,MAAO,CAC3B,gBAAiB2uC,CACzB,CAAO,EACD,SAAU,KAAK,mBACf,WAAY,GACZ,KAAM,eACN,YAAaluC,GAAS,CAEpBA,EAAM,gBAAe,CACvB,EACA,UAAWA,GAAS,CAClBA,EAAM,gBAAe,CACvB,EACA,SAAU,CAAcR,OAAM,MAAO,CACnC,UAAW,aACX,SAAU,CAAcA,OAAM,QAAS,CACrC,QAAS,iBAAiB,OAAOyuC,EAAU,QAAQ,EACnD,SAAU,CAAC,UAAWA,CAAQ,CACxC,CAAS,EAAgB7uC,MAAK,QAAS,CAC7B,KAAM,OACN,UAAW,eACX,GAAI,iBAAiB,OAAO6uC,EAAU,QAAQ,EAC9C,MAAO96C,GAA6C,OACpD,IAAK,KAAK,eACV,SAAU,KAAK,wBACf,SAAU,EACpB,CAAS,EAAgBqM,OAAM,MAAO,CAC5B,UAAW,mBACX,SAAU,CAACyuC,EAAU,uBAAuB,CACtD,CAAS,GAAIF,GAAY,CAACC,IAAyBxuC,OAAM,MAAO,CACtD,UAAW,OACX,SAAU,CAAC,iBAAkByuC,EAAU,6BAA6B,CAC9E,CAAS,CAAC,CACV,CAAO,EAAgBzuC,OAAM,MAAO,CAC5B,UAAW,aACX,SAAU,CAAcJ,MAAKyD,GAAQ,CACnC,KAAM,YACN,UAAW,OACX,QAAS,KAAK,mBACd,SAAU,QACpB,CAAS,EAAgBzD,MAAKyD,GAAQ,CAC5B,KAAM,UACN,KAAM,SACN,SAAU,QACpB,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACH,CACA,QAAS,CACP,GAAI,CACF,QAAA5E,EACA,SAAA2G,CACN,EAAQ,KAAK,MACT,OAAoBxF,MAAKvB,GAAQ,CAC/B,QAASI,EACT,UAAW,KAAK,yBAChB,SAAU2G,EACV,QAAS,CACP,UAAW,QACnB,EACM,YAAa,GACb,YAAa,GACb,SAAU,KAAK,mBAAkB,CACvC,CAAK,CACH,CACF,CACAnR,GAAgBk6C,GAAc,eAAgB,CAC5C,SAAU,GACV,QAAS,GACT,SAAU,OACV,MAAO,EACT,CAAC,ECpKE,IAACQ,GAAW,OAAO,OAAO,CAC3B,MAAO,iBACP,KAAM,eACR,CAAC,ECHD,SAAS16C,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAevT,IAAIwH,GAAMC,EAAI,OAAO,OAAO,EAM5B,MAAM8yC,WAAkBjjC,eAAc,CACpC,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,MAAO,MAAM,EACnCA,GAAgB,KAAM,uBAAwB0c,GAAQ,CAAC9J,EAASgoC,EAAYC,IAAgB,CAC1F,IAAIhB,EAAoB,GACxB,OAAIe,GACFf,EAAkB,KAAK,KAAK,gBAAgB,EAE1CgB,GACFhB,EAAkB,KAAK,KAAK,iBAAiB,EAExC,CAAC,GAAGA,EAAmB,GAAGjnC,CAAO,CAC1C,CAAC,CAAC,EACF,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,EACzC,KAAK,IAAmBrI,EAAM,UAAS,EACvC,GAAI,CACF,YAAAmiC,CACN,EAAQ,KAAK,MACT,KAAK,MAAQ,CACX,MAAO3B,EAAY,sBAAsB2B,CAAW,EACpD,iBAAkB,GAClB,cAAe,EACrB,CACE,CACA,mBAAoB,CAClB,IAAIoO,EACA,CACF,eAAAC,EACA,YAAArO,EACA,WAAAgF,CACN,EAAQ,KAAK,MACThF,EAAY,GAAG,SAAU,KAAK,YAAY,EAC1CA,EAAY,GAAG,OAAQ,KAAK,gBAAgB,EAC5CA,EAAY,GAAG,QAAS,KAAK,UAAU,EACvCA,EAAY,GAAG,OAAQ,KAAK,UAAU,EACtCA,EAAY,GAAG,MAAO,KAAK,SAAS,EACpCA,EAAY,GAAG,aAAc,KAAK,gBAAgB,EAClDgF,EAAW,GAAGgJ,GAAS,MAAO,KAAK,cAAc,EACjDhJ,EAAW,GAAGgJ,GAAS,KAAM,KAAK,aAAa,EAC/ChJ,EAAW,KAAK9C,EAAW,MAAOmM,GAAwE,IAAI,EAC9G,KAAK,SAAS,CACZ,gBAAiBD,EAAoB,KAAK,IAAI,WAAa,MAAQA,IAAsB,SAAWA,EAAoBA,EAAkB,iBAAmB,MAAQA,IAAsB,OAAS,OAASA,EAAkB,QAAQ,WAAW,IAAM,IAC9P,CAAK,CACH,CACA,sBAAuB,CACrB,GAAI,CACF,eAAAC,EACA,YAAArO,EACA,WAAAgF,CACN,EAAQ,KAAK,MACThF,EAAY,IAAI,SAAU,KAAK,YAAY,EAC3CA,EAAY,IAAI,OAAQ,KAAK,gBAAgB,EAC7CA,EAAY,IAAI,QAAS,KAAK,UAAU,EACxCA,EAAY,IAAI,OAAQ,KAAK,UAAU,EACvCA,EAAY,IAAI,MAAO,KAAK,SAAS,EACrCA,EAAY,IAAI,aAAc,KAAK,gBAAgB,EACnDgF,EAAW,IAAIgJ,GAAS,MAAO,KAAK,cAAc,EAClDhJ,EAAW,IAAIgJ,GAAS,KAAM,KAAK,aAAa,EAChDhJ,EAAW,KAAK9C,EAAW,QAASmM,GAAwE,IAAI,CAClH,CACA,UAAUzZ,EAAK,CACTA,GAAO,MACT,KAAK,SAAS,CACZ,MAAOyJ,EAAY,gBAAgBzJ,CAAG,CAC9C,CAAO,EAIH,KAAK,YAAW,EAChB,GAAI,CACF,MAAA0Z,CACN,EAAQ,KAAK,MACTA,GAAU,MAA4BA,EAAM1Z,CAAG,CACjD,CACA,iBAAiB,EAAG,CAClB,GAAI,CACF,aAAA2Z,CACN,EAAQ,KAAK,MACTA,GAAiB,MAAmCA,EAAa,CAAC,CACpE,CACA,YAAY1uC,EAAO,CACjB,GAAI,CACF,eAAAwuC,EACA,WAAArJ,CACN,EAAQ,KAAK,MACTA,EAAW,KAAK9C,EAAW,MAAOmM,GAAwE,IAAI,EAC9G,GAAI,CACF,QAAAt/B,CACN,EAAQ,KAAK,MACTA,GAAY,MAA8BA,EAAQlP,CAAK,CACzD,CACA,WAAWA,EAAO,CAChB,GAAI,CACF,OAAAuO,CACN,EAAQ,KAAK,MACTA,GAAW,MAA6BA,EAAOvO,CAAK,CACtD,CACA,YAAa,CAIX,OAHI,CACF,OAAA2uC,CACN,EAAQ,KAAK,MACAt7C,EAAO,UAAU,OAAQ+rB,EAAO,IAAI,MAAM/rB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/E6rB,EAAK7rB,CAAI,EAAI,UAAUA,CAAI,EAE7Bo7C,GAAW,MAA6BA,EAAO,GAAGvvB,CAAI,CACxD,CACA,cAAe,CAIb,OAHI,CACF,SAAAwvB,CACN,EAAQ,KAAK,MACAC,EAAQ,UAAU,OAAQzvB,EAAO,IAAI,MAAMyvB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF1vB,EAAK0vB,CAAK,EAAI,UAAUA,CAAK,EAE/BF,GAAa,MAA+BA,EAAS,GAAGxvB,CAAI,CAC9D,CACA,kBAAmB,CAIjB,OAHI,CACF,aAAA2vB,CACN,EAAQ,KAAK,MACAC,EAAQ,UAAU,OAAQ5vB,EAAO,IAAI,MAAM4vB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF7vB,EAAK6vB,CAAK,EAAI,UAAUA,CAAK,EAE/BF,GAAiB,MAAmCA,EAAa,GAAG3vB,CAAI,CAC1E,CACA,YAAa,CAIX,OAHI,CACF,OAAA8vB,CACN,EAAQ,KAAK,MACAC,EAAQ,UAAU,OAAQ/vB,EAAO,IAAI,MAAM+vB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFhwB,EAAKgwB,CAAK,EAAI,UAAUA,CAAK,EAE/BF,GAAW,MAA6BA,EAAO,GAAG9vB,CAAI,CACxD,CACA,eAAgB,CAId,OAHI,CACF,UAAAiwB,CACN,EAAQ,KAAK,MACAC,EAAQ,UAAU,OAAQlwB,EAAO,IAAI,MAAMkwB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFnwB,EAAKmwB,CAAK,EAAI,UAAUA,CAAK,EAE/BF,GAAc,MAAgCA,EAAU,GAAGjwB,CAAI,CACjE,CACA,gBAAiB,CAIf,OAHI,CACF,WAAAowB,CACN,EAAQ,KAAK,MACAC,EAAQ,UAAU,OAAQrwB,EAAO,IAAI,MAAMqwB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFtwB,EAAKswB,CAAK,EAAI,UAAUA,CAAK,EAE/BF,GAAe,MAAiCA,EAAW,GAAGpwB,CAAI,CACpE,CACA,oBAAqB,CACnB,KAAK,SAAS,CACZ,iBAAkB,EACxB,CAAK,CACH,CACA,wBAAyB,CACvB,KAAK,SAAS,CACZ,iBAAkB,EACxB,CAAK,CACH,CACA,mBAAmBqiB,EAAU,CAC3B,GAAI,CACF,YAAAtB,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,iBAAkB,GAClB,MAAOsB,CACb,CAAK,EACD,IAAI3G,EAAO0D,EAAY,qBAAqB2B,CAAW,EACnDtnB,EAAS2lB,EAAY,gCAAgC2B,CAAW,EACpEkB,EAAcxoB,CAAM,EACpB2lB,EAAY,gBAAgB1D,EAAMjiB,EAAQ4oB,CAAQ,CACpD,CACA,iBAAkB,CAChB,GAAI,CACF,YAAAtB,EACA,WAAAgF,CACN,EAAQ,KAAK,MACLrK,EAAO0D,EAAY,qBAAqB2B,CAAW,EACnDtnB,EAAS2lB,EAAY,gCAAgC2B,CAAW,EACpE,GAAItnB,GAAU,KAAM,CAClBxd,GAAI,MAAM,gDAAiD8kC,CAAW,EACtE,MACF,CACA,IAAIwB,EAAcnD,EAAY,eAAe1D,EAAMjiB,CAAM,EACrD8oB,IAAgB,MAClBwD,EAAW,KAAK9C,EAAW,OAAQ,KAAMV,CAAW,CAExD,CACA,gBAAiB,CACf,MAAO,CACL,MAAO,aACP,MAAO,GACP,MAAOl6B,GAAe,OAAO,KAC7B,OAAQ,KAAK,eACnB,CACE,CACA,iBAAkB,CAChB,MAAO,CACL,MAAO,SACP,MAAO,GACP,MAAOA,GAAe,OAAO,OAC7B,OAAQ,KAAK,sBACnB,CACE,CACA,QAAS,CACP,GAAI,CACF,SAAAxI,EACA,UAAAD,EACA,iBAAA2wC,EACA,YAAAxP,EACA,WAAAgF,EACA,kBAAAmI,EAAoBv6C,GACpB,aAAA68C,EACA,SAAAC,EAAW,GACX,UAAAC,EAAY,GACZ,WAAAzB,EAAa,GACb,YAAAC,EAAc,EACpB,EAAQ,KAAK,MACL,CACF,IAAKyB,CACX,EAAQ5P,EACA,CACF,iBAAA6P,EACA,MAAAvvB,EACA,cAAAwvB,CACN,EAAQ,KAAK,MACT,OAAoBzwC,OAAM,MAAO,CAC/B,UAAWD,EAAW,uBAAwBP,CAAS,EACvD,eAAgB,KAAK,YACrB,cAAe,KAAK,WACpB,IAAK,KAAK,IACV,SAAU,CAACC,EAAuBG,MAAKsU,GAAgB,CACrD,cAAe,qBACf,aAAck8B,EACd,SAAUC,EACV,UAAWC,CACnB,CAAO,EAAG,CAACG,GAAiBF,GAAS,MAAqBrwC,GAAS,aAA0BF,OAAM0C,WAAW,CACtG,SAAU,CAAc9C,MAAKmtC,GAAkB,CAC7C,YAAapM,EACb,WAAYgF,EACZ,kBAAmB,KAAK,qBAAqBmI,EAAmBe,EAAYC,CAAW,CACjG,CAAS,EAAGA,GAA4BlvC,MAAKuuC,GAAc,CACjD,QAASqC,EACT,MAAOvvB,EACP,SAAU,QACV,SAAU,KAAK,mBACf,SAAU,KAAK,kBACzB,CAAS,EAAGkvB,GAAoB,MAAqBvwC,MAAKS,GAAS,CACzD,YAAa,GACb,QAAS,CACP,UAAW,QACvB,EACU,gBAAiB,mBACjB,SAAU8vC,EAAgB,CACpC,CAAS,CAAC,CACV,CAAO,EAAGI,EAAM,QAAQ,CAAC,CACzB,CAAO,CACP,CAAK,CACH,CACF,CACG,IAACG,GAAa97B,GAAiBg6B,EAAS,ECxSvC/yC,GAAMC,EAAI,OAAO,SAAS,EACnB60C,GAAa,SAYjB,SAASC,IAAU,CACxB,IAAItvC,EAAMuvC,EAENtyC,GAAS+C,GAAQuvC,EAAY7E,GAAQ,KAAQ,MAAQ6E,IAAc,OAAS,OAASA,EAAU,gBAAkB,MAAQvvC,IAAS,OAASA,EAAO,GAClJwvC,EAAWvyC,EAAMoyC,EAAU,EAC3BrM,EAAU6D,GAAU,EACxB,GAAI2I,GAAY,KAAM,CACpB,GAAI,OAAOA,GAAa,SACtB,MAAM,IAAI,MAAM,yBAAyB,OAAOH,GAAY,2BAA2B,EAAE,OAAO,OAAOG,CAAQ,CAAC,EAElH,OAAOA,CACT,CACA,OAAIxM,IACFzoC,GAAI,KAAK,wEAAwE,OAAO80C,GAAY,4BAA4B,CAAC,EAC1H,KAGX,CC5BA,SAASI,GAAWzvC,EAAM,CACxB,GAAI,CACF,KAAAiC,CACJ,EAAMjC,EACA0Y,EAAK9E,GAAM,EACf,OAAQ3R,EAAI,CACV,KAAKyW,EAAG,aAAa,MACrB,KAAKA,EAAG,aAAa,SACrB,KAAKA,EAAG,aAAa,UACrB,KAAKA,EAAG,aAAa,kBACrB,KAAKA,EAAG,aAAa,iBACnB,OAAoBpa,MAAK8E,GAAiB,CACxC,KAAMssC,EACd,CAAO,EACH,KAAKh3B,EAAG,aAAa,OACnB,OAAoBpa,MAAK8E,GAAiB,CACxC,KAAMusC,EACd,CAAO,EACH,KAAKj3B,EAAG,aAAa,OACnB,OAAoBpa,MAAK8E,GAAiB,CACxC,KAAMwsC,EACd,CAAO,EACH,QACE,OAAoBtxC,MAAK8E,GAAiB,CACxC,KAAMgY,EACd,CAAO,CACP,CACA,CChCA,SAAS9nB,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAKhU,SAASg8C,GAAK7vC,EAAM,CAClB,GAAI,CACF,SAAA7B,EACA,SAAA2xC,CACJ,EAAM9vC,EACA,CAAC+vC,EAAeC,CAAgB,EAAIxvC,WAAS,IAAI,EACjD,CACF,aAAAI,CACJ,EAAMS,GAAQ,EACZ/G,mBAAU,IAAM,CACd,IAAI21C,EAAa,GACjB,SAASC,GAAW,CAClB,OAAOC,EAAU,MAAM,KAAM,SAAS,CACxC,CACA,SAASA,GAAY,CACnB,OAAAA,EAAYv8C,GAAkB,WAAa,CACzC,GAAIuK,GAAY,MAAQyC,GAAgB,KAAM,CAC5C,IAAIhM,EAAS,MAAMw7C,GAAc,SAASjyC,EAAS,SAAQ,EAAI2xC,EAAU,EAAE,EACtEG,GACHD,EAAiBp7C,CAAM,CAE3B,CACF,CAAC,EACMu7C,EAAU,MAAM,KAAM,SAAS,CACxC,CACA,OAAAD,EAAQ,EACD,IAAM,CACXD,EAAa,EACf,CACF,EAAG,CAACrvC,EAAczC,EAAU2xC,CAAQ,CAAC,EACjBxxC,MAAK,MAAO,CAG9B,MAAO,CACL,cAAe,MACrB,EAGI,wBAAyByxC,GAAiB,KAAO,CAC/C,OAAQA,CACd,EAAQ,MACR,CAAG,CACH,CChDA,MAAMM,EAAiB,CAIrB,WAAW,cAAe,CACxB,OAAO,IAAI,IAAI,CAAC,CAAC,SAAU,QAAQ,EAAG,CAAC,SAAU,QAAQ,EAAG,CAAC,QAAS,OAAO,CAAC,CAAC,CACjF,CACF,CCNA,MAAMC,EAAa,CACjB,OAAO,WAAWC,EAAK,CACrB,OAAOA,EAAI,UAAY,MACzB,CACA,OAAO,WAAWA,EAAK,CACrB,OAAOA,EAAI,UAAY,MACzB,CACA,OAAO,MAAMA,EAAK,CAChB,OAAOA,EAAI,KAAO,MACpB,CAOA,OAAO,eAAeC,EAAK,CACzB,OAAIA,GAAO,MAAQ,EAAE,OAAOA,GAAQ,UAAYA,aAAe,QACtD,GAKFC,GAAW,MAAMD,CAAG,EAAE,OAAOD,GAAO,CAAC,KAAK,WAAWA,CAAG,CAAC,EAAE,IAAIA,GAChE,KAAK,WAAWA,CAAG,EACdA,EAAI,QAET,KAAK,MAAMA,CAAG,EACTA,EAAI,GAEN,GAAG,OAAOA,CAAG,CACrB,CACH,CACA,OAAO,gBAAgBG,EAAM,CAC3B,GAAIA,GAAQ,MAAQ,EAAEA,aAAgB,MACpC,OAAO,KAET,IAAIl3C,EAAQ,GAAG,OAAOk3C,EAAK,SAAQ,CAAE,EAAE,SAAS,EAAG,GAAG,EAClD72C,EAAU,GAAG,OAAO62C,EAAK,WAAU,CAAE,EAAE,SAAS,EAAG,GAAG,EACtDh3C,EAAU,GAAG,OAAOg3C,EAAK,WAAU,CAAE,EAAE,SAAS,EAAG,GAAG,EACtDC,EAAe,GAAG,OAAOD,EAAK,gBAAe,CAAE,EAAE,SAAS,EAAG,GAAG,EACpE,MAAO,GAAG,OAAOl3C,EAAO,GAAG,EAAE,OAAOK,EAAS,GAAG,EAAE,OAAOH,EAAS,GAAG,EAAE,OAAOi3C,CAAY,CAC5F,CACA,OAAO,YAAYj4B,EAAIzW,EAAM,CAC3B,OAAOA,IAASyW,EAAG,aAAa,OAASzW,IAASyW,EAAG,aAAa,WAAazW,IAASyW,EAAG,aAAa,mBAAqBzW,IAASyW,EAAG,aAAa,gBACxJ,CACA,OAAO,aAAaA,EAAIzW,EAAM,CAC5B,OAAOA,IAASyW,EAAG,aAAa,QAAUzW,IAASyW,EAAG,aAAa,aAAezW,IAASyW,EAAG,aAAa,MAC7G,CACA,OAAO,eAAeA,EAAIzW,EAAM,CAC9B,OAAOquC,GAAa,YAAY53B,EAAIzW,CAAI,GAAKquC,GAAa,aAAa53B,EAAIzW,CAAI,CACjF,CACA,OAAO,aAAayW,EAAIzW,EAAM,CAC5B,OAAOA,IAASyW,EAAG,aAAa,MAClC,CACA,OAAO,SAASA,EAAIzW,EAAM,CACxB,OAAOA,IAASyW,EAAG,aAAa,MAClC,CACF,CCtDA,SAASk4B,GAAyB5wC,EAAM,CACtC,GAAI,CACF,SAAA7B,CACJ,EAAM6B,EACJ,OAAoBtB,OAAM,MAAO,CAC/B,UAAW,8BACX,SAAU,CAAcJ,MAAK,MAAO,CAClC,UAAW,yBACX,SAAU,GAChB,CAAK,EAAgBA,MAAK,MAAO,CAC3B,UAAW,0BACX,SAAUH,CAChB,CAAK,CAAC,CACN,CAAG,CACH,CCnBA,SAASxL,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWvT,MAAM89C,WAAuC7zC,WAAU,CACrD,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,YAAa,MAAM,EACzC,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,UAAY,KAAK,IAAG,EACzB,KAAK,MAAQ,CACX,QAAS,CACf,CACE,CACA,mBAAoB,CAClB,KAAK,MAAQ,OAAO,YAAY,KAAK,cAAe,GAAI,CAC1D,CACA,sBAAuB,CACjB,KAAK,OAAS,MAChB,cAAc,KAAK,KAAK,EAE1B,KAAK,MAAQ,MACf,CACA,eAAgB,CACd,KAAK,SAAS,CACZ,QAAS,KAAK,OAAO,KAAK,MAAQ,KAAK,WAAa,GAAI,CAC9D,CAAK,CACH,CACA,QAAS,CACP,GAAI,CACF,SAAAyP,EACA,cAAA0uC,CACN,EAAQ,KAAK,MACL,CACF,QAAAC,CACN,EAAQ,KAAK,MACT,OAAoBzyC,MAAK,MAAO,CAC9B,UAAWG,EAAW,qCAAsC,CAC1D,SAAA2D,CACR,CAAO,EACD,SAAuB1D,OAAM,OAAQ,CACnC,UAAW,QACX,SAAU,CAAcJ,MAAK0yC,GAAgB,CAC3C,UAAW,MACrB,CAAS,EAAG,cAAe13C,GAAU,kBAAkBy3C,CAAO,EAAG,IAAqBzyC,MAAKyD,GAAQ,CACzF,UAAW,4CACX,KAAM,QACN,KAAMkvC,GACN,QAAS,SACT,QAASH,EACT,SAAU1uC,CACpB,CAAS,CAAC,CACV,CAAO,CACP,CAAK,CACH,CACF,CACAzP,GAAgBk+C,GAAgC,eAAgB,CAC9D,SAAU,EACZ,CAAC,ECpED,SAASl+C,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAUvT,MAAMm+C,WAAyC7mC,eAAc,CAC3D,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,aAAc,MAAM,EAC1C,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,WAAa,GAClB,KAAK,MAAQ,CACX,WAAY,GACZ,iBAAkB,EACxB,CACE,CACA,eAAeuM,EAAO,CACpB,OAAQA,EAAM,IAAG,CACf,IAAK,QACL,IAAK,IAEH,KAAK,kBAAiB,EACtBA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,KAGR,CACE,CACA,gBAAgBA,EAAO,CACrB,KAAK,OAASA,EAAM,QACpB,KAAK,OAASA,EAAM,QACpB,KAAK,WAAa,EACpB,CACA,gBAAgBA,EAAO,CACjB,KAAK,QAAU,MAAQ,KAAK,QAAU,MACpC,KAAK,IAAIA,EAAM,QAAU,KAAK,MAAM,GAAKgyC,GAAiC,oBAAsB,KAAK,IAAIhyC,EAAM,QAAU,KAAK,MAAM,GAAKgyC,GAAiC,sBAC5K,KAAK,WAAa,IAEX,KAAK,aAEd,KAAK,WAAa,GAEtB,CACA,cAAchyC,EAAO,CAGf,KAAK,YAAc,CAACA,EAAM,UAAY,CAACA,EAAM,SAAW,CAACA,EAAM,QACjE,KAAK,kBAAiB,EAExB,KAAK,OAAS,KACd,KAAK,OAAS,KACd,KAAK,WAAa,EACpB,CACA,mBAAoB,CAClB,KAAK,SAASwL,IAAU,CACtB,WAAY,CAACA,EAAM,UACzB,EAAM,CACJ,CACA,kBAAmB,CACjB,KAAK,SAAS,CACZ,iBAAkB,EACxB,CAAK,CACH,CACA,kBAAmB,CACjB,KAAK,SAAS,CACZ,iBAAkB,EACxB,CAAK,CACH,CACA,QAAS,CACP,GAAI,CACF,WAAAymC,EACA,iBAAAC,CACN,EAAQ,KAAK,MACL,CACF,QAASC,CACf,EAAQ,KAAK,MACT9Q,EAAc8Q,CAAW,EAEzB,IAAIx5C,EAAUw5C,EAAY,QAAO,EAC7BC,EAAiBz5C,EAAQ,QAAQ;AAAA,CAAI,EACrC05C,EAAcD,EAAiB,GAC/BE,EAAmB35C,EACnB05C,IACFC,EAAmB35C,EAAQ,MAAM,EAAGy5C,CAAc,GAEpD,IAAIG,EAAqB55C,EAAQ,MAAMy5C,CAAc,EACjDI,EAAkBN,EAAmB,wCAA0C,iBACnF,OAAoB1yC,OAAM,MAAO,CAC/B,UAAWD,EAAW,gBAAiB,CACrC,SAAU0yC,CAClB,CAAO,EACD,SAAU,CAACI,GAA4B7yC,OAAM0C,WAAW,CACtD,SAAU,CAAc9C,MAAK,MAAO,CAClC,UAAW,eACX,SAAuBA,MAAK,SAAU,CACpC,KAAM,SACN,QAAS,KAAK,kBACd,UAAWozC,EACX,SAAU,GACV,SAAuBpzC,MAAK8E,GAAiB,CAC3C,KAAM+tC,EAAaQ,GAAiBC,GACpC,UAAW,QACzB,CAAa,CACb,CAAW,CACX,CAAS,EAAgBlzC,OAAM,MAAO,CAC5B,UAAW,gBACX,SAAU,CAAcJ,MAAK,MAAO,CAClC,UAAW,6BACX,KAAM,SACN,SAAU,EACV,WAAY,KAAK,eACjB,YAAa,KAAK,gBAClB,YAAa,KAAK,gBAClB,aAAc,KAAK,iBACnB,aAAc,KAAK,iBACnB,UAAW,KAAK,cAChB,SAAUkzC,CACtB,CAAW,EAAGL,EAAaM,EAAqB,EAAE,CAClD,CAAS,CAAC,CACV,CAAO,EAAG,CAACF,GAA4BjzC,MAAK,MAAO,CAC3C,UAAW,gBACX,SAAuBA,MAAK,MAAO,CACjC,UAAW,qBACX,SAAUkzC,CACpB,CAAS,CACT,CAAO,CAAC,CACR,EAAO,OAAO,CACZ,CACF,CACA7+C,GAAgBu+C,GAAkC,eAAgB,CAChE,QAAS,EACX,CAAC,EACDv+C,GAAgBu+C,GAAkC,qBAAsB,CAAC,ECtJzE,SAASv+C,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAcvT,IAAIwH,GAAMC,EAAI,OAAO,oBAAoB,EACzC,MAAMq3C,WAA2BxnC,eAAc,CAC7C,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,CAC3D,CACA,kBAAkB60C,EAAQ,CACxBv3C,GAAI,MAAM,oBAAqBu3C,CAAM,EACrC,GAAI,CACF,WAAAC,CACN,EAAQ,KAAK,MACTA,EAAWD,CAAM,CACnB,CACA,mBAAoB,CAClB,GAAI,CACF,KAAAr6C,CACN,EAAQ,KAAK,MACLA,GAAQ,MAAQA,EAAK,eACvB8C,GAAI,MAAM,uBAAuB,OAAO9C,EAAK,OAAO,CAAC,EACrDA,EAAK,aAAY,EAErB,CACA,QAAS,CACP,GAAI,CACF,SAAA2K,EACA,KAAA3K,EACA,SAAAq4C,EACA,YAAAkC,CACN,EAAQ,KAAK,MACL,CACF,gBAAAC,EACA,OAAAr9C,CACN,EAAQ6C,EACAy6C,EAAaz6C,EAAK,SAAW,MAAQA,EAAK,UAAY,GACtD06C,EAAiB,KACjBD,IACFC,EAA8BzzC,OAAM,MAAO,CACzC,UAAW,+BACX,SAAU,CAAcJ,MAAK,MAAO,CAClC,UAAW,yBACX,SAAU,GACpB,CAAS,EAAgBA,MAAK,MAAO,CAC3B,UAAW,0BACX,SAAuBA,MAAKuxC,GAAM,CAChC,SAAUC,EACV,SAAUr4C,EAAK,OAC3B,CAAW,CACX,CAAS,CAAC,CACV,CAAO,GAEH,IAAI26C,EAAiB,GACjBC,EAAa,GACjB,GAAIz9C,EAAQ,CACV,GAAI,CACF,MAAAR,EACA,QAAAyD,EACA,QAAAy6C,CACR,EAAU19C,EACJ,GAAI09C,EAAS,CACX,GAAI,CACF,QAAAC,EACA,QAAAC,CACV,EAAYF,EAIJ,CAAC,GAAGC,EAAS,GAAGC,CAAO,EAAE,QAAQV,GAAU,CACzCO,EAAa,GACb,GAAI,CACF,MAAA1yB,CACZ,EAAcmyB,EACArmC,EAAM,GAAG,OAAOkU,CAAK,EACrB8yB,EAAcrwC,IAAa,QAAaA,IAAa6vC,GAA2E,IAAI,QAAQxmC,CAAG,GAAK,EACpJpO,EAAuBiB,MAAKyD,GAAQ,CACtC,KAAM,UACN,QAAS,IAAM,KAAK,kBAAkB+vC,CAAM,EAC5C,UAAW,qBACX,SAAUW,EACV,KAAMT,EAAYF,EAAO,IAAI,EAC7B,SAAUnyB,CACtB,EAAalU,CAAG,EACN2mC,EAAe,KAAK/0C,CAAO,CAC7B,CAAC,CACH,CAGA,GAAIjJ,GAAS,MAAQ,CAAC89C,EAAY,CAChC,IAAIQ,EACA5D,EAAe,GAAG,QAAQ4D,EAAWt+C,EAAM,WAAa,MAAQs+C,IAAa,OAASA,EAAWt+C,CAAK,EACrG06C,IACHA,EAAe16C,GAEjB,IAAIiJ,EAAuBiB,MAAK4yC,GAAkC,CAChE,QAASpC,CACnB,EAAW,cAAc,EACjBsD,EAAe,KAAK/0C,CAAO,CAC7B,CACA,GAAIxF,IAAY,QAAaA,IAAY,GAAI,CAC3C,IAAI86C,EAAwBr0C,MAAK,MAAO,CACtC,UAAW,cACX,SAAUzG,CACpB,EAAW,aAAa,EAChBu6C,EAAe,KAAKO,CAAQ,CAC9B,CACF,KAAO,CACLN,EAAa,GACb,IAAIO,EAAyBt0C,MAAKuyC,GAAgC,CAChE,cAAe,KAAK,kBACpB,SAAUzuC,CAClB,EAAS,aAAa,EAChBgwC,EAAe,KAAKQ,CAAS,CAC/B,CACA,IAAIC,EAAgB,KACpB,OAAIT,EAAe,OAAS,IAC1BS,EAA6Bv0C,MAAKsyC,GAA0B,CAC1D,SAAUwB,CAClB,CAAO,GAEiB1zC,OAAM,MAAO,CAC/B,UAAWD,EAAW,yBAA0B,CAC9C,yBAA0B4zC,CAClC,CAAO,EACD,SAAU,CAACF,EAAgBU,CAAa,CAC9C,CAAK,CACH,CACF,CACAlgD,GAAgBk/C,GAAoB,eAAgB,CAClD,SAAU,EACZ,CAAC,EC1ID,SAASiB,GAAQ9/C,EAAGyE,EAAM,CACxB,MAAO,GAAG,OAAOzE,EAAG,GAAG,EAAE,OAAOyE,EAAK,QAAS,GAAG,EAAE,OAAOA,EAAK,QAAUA,EAAK,OAAO,QAAS,GAAG,EAAE,OAAOA,EAAK,QAAUA,EAAK,OAAO,KAAK,CAC5I,CAKG,IAACs7C,GAA8B71C,EAAM,WAAW,SAAwBD,EAAOhB,EAAK,CAUrF,OATI,CACF,SAAAmG,EAAW,GACX,MAAA3J,EACA,SAAAq3C,EACA,WAAAiC,EACA,aAAAiB,EACA,YAAAhB,CACJ,EAAM/0C,EACAg2C,EAAkB,GACbjgD,EAAI,EAAGA,EAAIyF,EAAM,OAAQzF,GAAK,EAAG,CACxC,IAAIyE,EAAOgB,EAAMzF,CAAC,EACdkgD,EAA8B50C,MAAKuzC,GAAoB,CACzD,SAAUzvC,EACV,KAAM3K,EACN,WAAYs6C,EACZ,SAAUjC,EACV,aAAckD,EACd,YAAahB,CACnB,EAAOc,GAAQ9/C,EAAGyE,CAAI,CAAC,EACnBw7C,EAAgB,KAAKC,CAAc,CACrC,CACA,OAAoB50C,MAAK,MAAO,CAC9B,IAAKrC,EACL,UAAW,kCACX,SAAUg3C,CACd,CAAG,CACH,CAAC,ECxCGE,GAAU,CACZ,KAAM,UACN,MAAO1mC,GAAiB,aAAa,CACnC,GAAI,gBACJ,KAAM,QACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,KAAMC,EAAI,CAAC,CACtC,CAAG,EACD,cAAeoB,GAAiB,aAAa,CAC3C,GAAI,wBACJ,KAAM,gBACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,KAAMA,EAAS,OAAQC,EAAI,CAAC,CACvD,CAAG,CACH,EACI+nC,GAAkB,CACpB,KAAM,kBACN,cAAe3mC,GAAiB,aAAa,CAC3C,GAAI,gCACJ,KAAM,uBACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,KAAMA,EAAS,OAAQC,EAAI,CAAC,CACvD,CAAG,EACD,gBAAiBoB,GAAiB,aAAa,CAC7C,GAAI,kCACJ,KAAM,kBACN,SAAU,CAACpB,EAAI,KAAK,EACpB,YAAa,CAACA,EAAI,KAAK,CAC3B,CAAG,EACD,iBAAkBoB,GAAiB,aAAa,CAC9C,GAAI,mCACJ,KAAM,mBACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,KAAK,EACnC,YAAa,CAACD,EAAS,IAAKC,EAAI,KAAK,CACzC,CAAG,EACD,IAAKoB,GAAiB,aAAa,CACjC,GAAI,sBACJ,KAAM,MACN,SAAU,CAACrB,EAAS,IAAKC,EAAI,CAAC,EAC9B,YAAa,CAACD,EAAS,OAAQC,EAAI,CAAC,CACxC,CAAG,CACH,EACIgoC,GAAW,CACb,KAAM,WACN,IAAK5mC,GAAiB,aAAa,CACjC,GAAI,eACJ,KAAM,MACN,SAAU,CAACrB,EAAS,IAAKC,EAAI,CAAC,EAC9B,YAAa,CAACD,EAAS,OAAQC,EAAI,CAAC,CACxC,CAAG,EACD,aAAcoB,GAAiB,aAAa,CAC1C,GAAI,wBACJ,KAAM,eACN,SAAU,CAACrB,EAAS,IAAKA,EAAS,MAAOC,EAAI,CAAC,EAC9C,YAAa,CAACD,EAAS,OAAQA,EAAS,MAAOC,EAAI,CAAC,CACxD,CAAG,EACD,KAAMoB,GAAiB,aAAa,CAClC,GAAI,gBACJ,KAAM,OACN,SAAU,CAACrB,EAAS,KAAMC,EAAI,CAAC,EAC/B,YAAa,CAACD,EAAS,IAAKC,EAAI,CAAC,EACjC,WAAY,EAChB,CAAG,EACD,QAASoB,GAAiB,aAAa,CACrC,GAAI,mBACJ,KAAM,eACN,SAAU,CAACrB,EAAS,IAAKC,EAAI,CAAC,EAC9B,YAAa,CAACD,EAAS,OAAQC,EAAI,CAAC,CACxC,CAAG,EACD,SAAUoB,GAAiB,aAAa,CACtC,GAAI,oBACJ,KAAM,YACN,SAAU,CAACrB,EAAS,IAAKC,EAAI,CAAC,EAC9B,YAAa,CAACD,EAAS,OAAQC,EAAI,CAAC,CACxC,CAAG,CACH,EACIioC,GAAY,CACd,QAAAH,GACA,gBAAAC,GACA,SAAAC,EACF,ECjFA,MAAAE,GAAe,OAAO,OAAO,CAC3B,MAAO,QACP,OAAQ,SACR,MAAO,QACP,KAAM,OACN,OAAQ,SACR,KAAM,OACN,MAAO,QACP,MAAO,OACT,CAAC,i3HCTD,IAAI3pC,GAAK,SACL4pC,GAAO,CACT,SAAU,CACR,YAAa,IACb,aAAc,CAAC,MAAO,KAAK,CAC/B,EACE,SAAU,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,CAAC,EAC7C,iBAAkB,CAAC,CACjB,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,CAAC,QAAQ,CACpB,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,CAAC,SAAU,SAAS,CAC/B,CAAG,EACD,iBAAkB,CAAC,CACjB,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,CAAG,EACD,aAAc,CAAC,CACb,WAAY,iFACZ,OAAQ,CACN,aAAc,CACpB,CACA,CAAG,EACD,QAAS,CACP,QAAS,GACT,QAAS,CACP,MAAO,gBACP,IAAK,kBACX,CACA,CACA,EACI1D,GAAW,CAIb,SAAU,CAAC,MAAO,MAAO,OAAQ,MAAO,QAAS,KAAM,OAAQ,SAAU,KAAM,OAAQ,SAAU,OAAQ,KAAM,OAAQ,QAAS,QAAS,SAAU,SAAU,QAAS,OAAQ,KAAM,QAAS,WAAY,UAAW,KAAM,SAAU,MAAO,MAAO,IAAK,IAAK,aAAc,WAAW,EACrR,QAAS,CAAC,QAAS,MAAO,QAAS,QAAQ,EAC3C,UAAW,CAAC,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAK,EAClM,SAAU,CAAC,CACT,KAAM,IACN,MAAO,IACP,MAAO,iBACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,kBACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,uBACX,CAAG,EAED,QAAS,oBACT,WAAY,YAEZ,QAAS,4FACT,OAAQ,mCACR,OAAQ,aAER,UAAW,CACT,KAAM,CAEN,CAAC,oBAAqB,CACpB,MAAO,eACP,QAAS,QACT,KAAM,aACZ,CAAK,EAAG,CAAC,0BAA2B,gBAAgB,EAEhD,CAAC,0BAA2B,gBAAgB,EAE5C,CAAC,gBAAiB,CAChB,MAAO,eACP,QAAS,QACT,KAAM,cACN,aAAc,aACpB,CAAK,EAAG,CAAC,iBAAkB,CACrB,MAAO,eACP,QAAS,QACT,KAAM,YACZ,CAAK,EAAG,CAAC,mBAAoB,CACvB,MAAO,eACP,QAAS,QACT,KAAM,gBACZ,CAAK,EAAG,CAAC,yBAA0B,gBAAgB,EAE/C,CAAC,yBAA0B,gBAAgB,EAE3C,CAAC,gBAAiB,CAChB,MAAO,eACP,QAAS,QACT,KAAM,eACZ,CAAK,EAED,CAAC,WAAY,YAAY,EAAG,CAAC,gBAAiB,CAC5C,MAAO,CACL,YAAa,UACb,WAAY,UACZ,WAAY,YACpB,CACA,CAAK,EAAG,CAAC,aAAc,CACjB,MAAO,CACL,cAAe,yBACf,WAAY,sBACpB,CACA,CAAK,EAID,CACE,QAAS,aACf,EAEI,CAAC,YAAa,WAAW,EAAG,CAAC,WAAY,CACvC,MAAO,CACL,YAAa,UACb,aAAc,WACd,WAAY,EACpB,CACA,CAAK,EAED,CAAC,0BAA2B,cAAc,EAAG,CAAC,yBAA0B,YAAY,EAAG,CAAC,mBAAoB,eAAe,EAAG,CAAC,6BAA8B,cAAc,EAAG,CAAC,oBAAqB,QAAQ,EAE5M,CAAC,IAAK,CACJ,MAAO,UACP,QAAS,OACf,CAAK,EAED,CAAC,cAAe,CACd,MAAO,CACL,YAAa,UACb,WAAY,WACpB,CACA,CAAK,CAAC,EACF,QAAS,CAAC,CAAC,SAAU,SAAS,EAAG,CAAC,OAAQ,UAAW,OAAO,EAE5D,CAAC,OAAQ,UAAW,MAAM,EAAG,CAAC,OAAQ,SAAS,CAAC,EAEhD,QAAS,CAAC,CACR,QAAS,aACf,EAAO,CAAC,UAAW,CACb,MAAO,CACL,UAAW,CACT,MAAO,eACP,QAAS,SACT,KAAM,MAChB,EACQ,WAAY,CACV,MAAO,QACjB,CACA,CACA,CAAK,EAAG,CAAC,OAAQ,QAAQ,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC/C,QAAS,CAAC,CACR,QAAS,aACf,EAAO,CAAC,MAAO,CACT,MAAO,eACP,QAAS,SACT,KAAM,OACN,aAAc,MACpB,CAAK,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC3B,OAAQ,CAAC,CACP,QAAS,aACf,EAAO,CAAC,MAAO,CACT,MAAO,eACP,QAAS,SACT,KAAM,MACZ,CAAK,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC3B,WAAY,CAAC,CAAC,WAAY,QAAQ,EAAG,CAAC,MAAO,eAAe,EAAG,CAAC,WAAY,eAAe,EAAG,CAAC,MAAO,uBAAuB,CAAC,EAE9H,WAAY,CAAC,CACX,QAAS,gBACf,EAAO,CAAC,UAAW,CACb,MAAO,CACL,UAAW,CACT,MAAO,eACP,QAAS,SACT,KAAM,MAChB,EACQ,WAAY,CACV,MAAO,QACjB,CACA,CACA,CAAK,EAAG,CAAC,OAAQ,QAAQ,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC/C,UAAW,CAAC,CACV,QAAS,gBACf,EAAO,CAAC,OAAQ,CACV,MAAO,CACL,UAAW,CACT,MAAO,eACP,QAAS,SACT,KAAM,MAChB,EACQ,WAAY,CACV,MAAO,QACjB,CACA,CACA,CAAK,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC3B,cAAe,CAAC,CAAC,WAAY,QAAQ,EAAG,CAAC,SAAU,QAAQ,EAAG,CAAC,oBAAqB,eAAe,EAAG,CAAC,KAAM,QAAQ,CAAC,EACtH,WAAY,CAAC,CAAC,MAAO,OAAO,EAAG,CAAC,UAAW,SAAS,EAAG,CAAC,MAAO,SAAU,eAAe,EAAG,CAAC,MAAO,SAAU,kBAAkB,CAAC,EAChI,aAAc,CAAC,CAAC,QAAS,QAAQ,EAAG,CAAC,MAAO,QAAQ,EAAG,CAAC,MAAO,SAAU,SAAS,EAAG,CAAC,IAAK,QAAQ,CAAC,EACpG,gBAAiB,CAAC,CAAC,QAAS,QAAQ,EAAG,CAAC,MAAO,QAAQ,EAAG,CAAC,MAAO,SAAU,SAAS,EAAG,CAAC,IAAK,QAAQ,CAAC,CAC3G,CACA,EACI2D,GAAO,CACX,GAAE7pC,GACF,KAAE4pC,GACF,SAAE1D,EACF,ECtOIlmC,GAAK,SACL4pC,GAAO,CACT,SAAU,CACR,YAAa,KACb,aAAc,CAAC,KAAM,IAAI,CAC7B,EACE,SAAU,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,CAAC,EAC7C,iBAAkB,CAAC,CACjB,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,CAAC,QAAQ,CACpB,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,CAAC,SAAU,SAAS,CAC/B,CAAG,EACD,iBAAkB,CAAC,CACjB,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,CAAG,EACD,aAAc,CAAC,CACb,WAAY,iFACZ,OAAQ,CACN,aAAc,CACpB,CACA,CAAG,EACD,QAAS,CACP,QAAS,GACT,QAAS,CACP,MAAO,gBACP,IAAK,kBACX,CACA,CACA,EACI1D,GAAW,CAIb,SAAU,CAAC,MAAO,MAAO,OAAQ,MAAO,QAAS,KAAM,OAAQ,SAAU,KAAM,OAAQ,SAAU,OAAQ,KAAM,OAAQ,QAAS,QAAS,SAAU,SAAU,QAAS,UAAW,QAAS,OAAQ,KAAM,QAAS,WAAY,UAAW,KAAM,SAAU,MAAO,MAAO,SAAU,MAAO,IAAK,IAAK,aAAc,WAAW,EAC1T,UAAW,CAAC,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAK,EAClM,SAAU,CAAC,CACT,KAAM,IACN,MAAO,IACP,MAAO,iBACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,kBACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,uBACX,CAAG,EAED,QAAS,oBACT,WAAY,YAEZ,QAAS,4FACT,OAAQ,mCACR,OAAQ,aAER,UAAW,CACT,KAAM,CAEN,CAAC,oBAAqB,CACpB,MAAO,eACP,QAAS,QACT,KAAM,aACZ,CAAK,EAAG,CAAC,0BAA2B,gBAAgB,EAEhD,CAAC,0BAA2B,gBAAgB,EAE5C,CAAC,gBAAiB,CAChB,MAAO,eACP,QAAS,QACT,KAAM,cACN,aAAc,aACpB,CAAK,EAAG,CAAC,iBAAkB,CACrB,MAAO,eACP,QAAS,QACT,KAAM,YACZ,CAAK,EAAG,CAAC,mBAAoB,CACvB,MAAO,eACP,QAAS,QACT,KAAM,gBACZ,CAAK,EAAG,CAAC,yBAA0B,gBAAgB,EAE/C,CAAC,yBAA0B,gBAAgB,EAE3C,CAAC,gBAAiB,CAChB,MAAO,eACP,QAAS,QACT,KAAM,eACZ,CAAK,EAED,CAAC,WAAY,YAAY,EAAG,CAAC,gBAAiB,CAC5C,MAAO,CACL,YAAa,UACb,WAAY,YACpB,CACA,CAAK,EAAG,CAAC,aAAc,CACjB,MAAO,CACL,cAAe,yBACf,WAAY,sBACpB,CACA,CAAK,EAID,CACE,QAAS,aACf,EAEI,CAAC,YAAa,WAAW,EAAG,CAAC,WAAY,CACvC,MAAO,CACL,YAAa,UACb,aAAc,WACd,WAAY,EACpB,CACA,CAAK,EAED,CAAC,0BAA2B,cAAc,EAAG,CAAC,yBAA0B,YAAY,EAAG,CAAC,mBAAoB,eAAe,EAAG,CAAC,6BAA8B,cAAc,EAAG,CAAC,oBAAqB,QAAQ,EAE5M,CAAC,IAAK,CACJ,MAAO,UACP,QAAS,OACf,CAAK,EAED,CAAC,cAAe,CACd,MAAO,CACL,YAAa,UACb,WAAY,WACpB,CACA,CAAK,CAAC,EAEF,QAAS,CAAC,CACR,QAAS,aACf,EAAO,CAAC,UAAW,CACb,MAAO,CACL,UAAW,CACT,MAAO,eACP,QAAS,SACT,KAAM,MAChB,EACQ,WAAY,CACV,MAAO,QACjB,CACA,CACA,CAAK,EAAG,CAAC,OAAQ,QAAQ,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC/C,QAAS,CAAC,CACR,QAAS,aACf,EAAO,CAAC,MAAO,CACT,MAAO,eACP,QAAS,SACT,KAAM,OACN,aAAc,MACpB,CAAK,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC3B,OAAQ,CAAC,CACP,QAAS,aACf,EAAO,CAAC,MAAO,CACT,MAAO,eACP,QAAS,SACT,KAAM,MACZ,CAAK,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC3B,WAAY,CAAC,CAAC,WAAY,QAAQ,EAAG,CAAC,MAAO,eAAe,EAAG,CAAC,WAAY,eAAe,EAAG,CAAC,MAAO,uBAAuB,CAAC,EAE9H,WAAY,CAAC,CACX,QAAS,gBACf,EAAO,CAAC,UAAW,CACb,MAAO,CACL,UAAW,CACT,MAAO,eACP,QAAS,SACT,KAAM,MAChB,EACQ,WAAY,CACV,MAAO,QACjB,CACA,CACA,CAAK,EAAG,CAAC,OAAQ,QAAQ,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC/C,UAAW,CAAC,CACV,QAAS,gBACf,EAAO,CAAC,OAAQ,CACV,MAAO,CACL,UAAW,CACT,MAAO,eACP,QAAS,SACT,KAAM,MAChB,EACQ,WAAY,CACV,MAAO,QACjB,CACA,CACA,CAAK,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC3B,cAAe,CAAC,CAAC,WAAY,QAAQ,EAAG,CAAC,SAAU,QAAQ,EAAG,CAAC,oBAAqB,eAAe,EAAG,CAAC,KAAM,QAAQ,CAAC,EACtH,WAAY,CAAC,CAAC,aAAc,EAAE,EAAG,CAAC,eAAgB,cAAe,aAAa,EAAG,CAAC,OAAQ,UAAW,UAAU,EAAG,CAAC,UAAW,SAAS,CAAC,EACxI,QAAS,CAAC,CAAC,SAAU,SAAS,EAAG,CAAC,OAAQ,UAAW,MAAM,EAAG,CAAC,OAAQ,SAAS,CAAC,EACjF,WAAY,CAAC,CAAC,SAAU,aAAa,EAAG,CAAC,OAAQ,cAAe,MAAM,EAAG,CAAC,OAAQ,aAAa,CAAC,CACpG,CACA,EACI2D,GAAO,CACX,GAAE7pC,GACF,KAAE4pC,GACF,SAAE1D,EACF,ECrMIlmC,GAAK,QACL4pC,GAAO,CAOT,YAAa,wFACb,SAAU,CACR,YAAa,KACb,aAAc,CAAC,KAAM,IAAI,CAC7B,EACE,SAAU,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,CAAC,EAC7C,iBAAkB,CAAC,CACjB,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,CAAG,EACD,iBAAkB,CAAC,CACjB,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,CAAG,EACD,QAAS,CACP,QAAS,CACP,MAAO,mDACP,IAAK,sDACX,CACA,CACA,EACI1D,GAAW,CAIb,SAAU,CAAC,eAAgB,QAAS,QAAS,UAAW,MAAO,KAAM,OAAQ,UAAW,UAAW,MAAO,UAAW,UAAW,KAAM,SAAU,eAAgB,QAAS,QAAS,MAAO,SAAU,UAAW,SAAU,QAAS,QAAS,MAAO,OAAQ,QAAS,MAAO,MAAO,QAAS,OAAQ,QAEjS,QAAS,OAAQ,MAAM,EAEvB,aAAc,CAAC,KAAM,SAAU,YAAa,MAAO,UAAW,IAAI,EAClE,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,OAAO,EACpD,UAAW,CAAC,WAAY,QAAS,WAAY,OAAQ,WAAY,UAAW,YAAa,QAAQ,EAEjG,cAAe,CAAC,SAAU,SAAU,OAAQ,cAAe,OAAO,EAClE,KAAM,4BACN,KAAM,kBAEN,QAAS,0BACT,OAAQ,cACR,UAAW,iCAEX,QAAS,sEACT,aAAc,yEAEd,UAAW,CACT,KAAM,CAEN,CAAC,WAAY,CACX,MAAO,eACP,QAAS,QACT,KAAM,aACZ,CAAK,EAAG,CAAC,SAAU,CACb,MAAO,eACP,QAAS,QACT,KAAM,YACZ,CAAK,EAAG,CAAC,SAAU,CACb,MAAO,eACP,QAAS,QACT,KAAM,WACZ,CAAK,EAAG,CAAC,OAAQ,CACX,MAAO,eACP,QAAS,QACT,KAAM,UACZ,CAAK,EAAG,CAAC,UAAW,CACd,MAAO,eACP,QAAS,QACT,KAAM,WACZ,CAAK,EAAG,CAAC,OAAQ,CACX,MAAO,eACP,QAAS,QACT,KAAM,UACZ,CAAK,EAAG,CAAC,MAAO,CACV,MAAO,eACP,QAAS,QACT,KAAM,UACZ,CAAK,EAAG,CAAC,IAAK,CACR,MAAO,eACP,QAAS,QACT,KAAM,SACZ,CAAK,EAED,CAAC,wCAAyC,eAAgB,cAAc,EAAG,CAAC,mDAAoD,eAAgB,cAAc,EAAG,CAAC,yBAA0B,aAAc,cAAc,EAAG,CAAC,kBAAmB,eAAgB,cAAc,EAAG,CAAC,iBAAkB,SAAU,cAAc,EAAG,CAAC,QAAS,KAAK,EAAG,CAAC,UAAW,UAAW,cAAc,EAErX,CAAC,aAAc,UAAW,SAAS,EAAG,CAAC,4BAA6B,CAAC,mBAAoB,QAAS,SAAS,CAAC,EAAG,CAAC,WAAY,UAAW,OAAO,EAAG,CAAC,aAAc,UAAW,SAAS,EAAG,CAAC,yDAA0D,CAAC,UAAW,QAAS,YAAY,CAAC,EAAG,CAAC,wBAAyB,UAAU,EAAG,CAAC,uBAAwB,CAAC,CACtV,MAAO,UACb,EAAO,CACD,MAAO,WACP,KAAM,cACZ,CAAK,CAAC,EAAG,CAAC,8BAA+B,CAAC,YAAa,QAAS,UAAU,CAAC,EAAG,CAAC,QAAS,CAClF,MAAO,CACL,YAAa,UACb,gBAAiB,UACjB,aAAc,mBACd,iBAAkB,mBAClB,aAAc,CACZ,MAAO,WACP,KAAM,cAChB,EACQ,WAAY,CACV,MAAO,aACP,KAAM,cAChB,CACA,CACA,CAAK,EAAG,CAAC,QAAS,OAAQ,cAAc,EAEpC,CACE,QAAS,aACf,EAEI,CAAC,2CAA4C,YAAY,EAEzD,CAAC,OAAQ,WAAW,EAAG,CAAC,OAAQ,YAAa,cAAc,EAAG,CAAC,KAAM,iBAAiB,EAAG,CAAC,gCAAiC,kBAAmB,cAAc,EAAG,CAAC,IAAK,iBAAiB,EAAG,CAAC,+CAAgD,SAAS,EAAG,CAAC,WAAY,UAAU,EAE7Q,CAAC,QAAS,WAAW,EAErB,CAAC,wBAAyB,gBAAgB,EAE1C,CAAC,WAAY,SAAU,cAAc,EAAG,CAAC,mBAAoB,CAAC,CAC5D,MAAO,QACb,EAAO,CACD,MAAO,eACb,EAAO,CACD,MAAO,SACP,KAAM,cACZ,CAAK,CAAC,EAAG,CAAC,IAAK,gBAAgB,CAAC,EAC5B,OAAQ,CAAC,CAAC,IAAK,YAAa,MAAM,EAAG,CAAC,MAAO,GAAI,MAAM,EAAG,CAAC,SAAU,OAAO,EAAG,CAAC,UAAW,QAAS,MAAM,EAAG,CAAC,OAAQ,UAAW,UAAU,EAAG,CAAC,cAAe,MAAM,EAAG,CAAC,SAAU,WAAW,EAAG,CAAC,QAAS,iBAAiB,EAAG,CAAC,OAAQ,WAAW,CAAC,EACnP,YAAa,CAAC,CAAC,MAAO,GAAI,MAAM,EAAG,CAAC,SAAU,OAAO,EAAG,CAAC,UAAW,QAAS,MAAM,EAAG,CAAC,OAAQ,UAAW,UAAU,EAAG,CAAC,kBAAmB,UAAW,MAAM,EAAG,CAAC,6DAA8D,CAC5N,MAAO,CACL,YAAa,CACX,MAAO,UACP,KAAM,MAChB,EACQ,iBAAkB,CAChB,MAAO,UACP,KAAM,MAChB,EACQ,WAAY,CACV,MAAO,WACP,KAAM,MAChB,CACA,CACA,CAAK,EAAG,CAAC,GAAI,GAAI,MAAM,CAAC,EACpB,QAAS,CAAC,CAAC,SAAU,SAAS,EAAG,CAAC,OAAQ,UAAW,OAAO,EAE5D,CAAC,OAAQ,UAAW,MAAM,EAAG,CAAC,OAAQ,SAAS,CAAC,EAChD,KAAM,CAAC,CAAC,QAAS,KAAK,EAAG,CAAC,qCAAsC,UAAW,cAAc,EAAG,CAAC,YAAa,UAAW,MAAM,EAAG,CAAC,UAAW,aAAc,cAAc,EAAG,CAAC,QAAS,WAAY,cAAc,EAAG,CAAC,uBAAwB,SAAS,EAAG,CACnP,QAAS,OACf,CAAK,EACD,OAAQ,CAAC,CAAC,QAAS,KAAK,EAAG,CAAC,qCAAsC,SAAS,EAAG,CAAC,QAAS,UAAU,EAAG,CAAC,uBAAwB,SAAS,EAAG,CAAC,WAAY,WAAY,MAAM,EAAG,CAAC,IAAK,QAAS,MAAM,EAAG,CAClM,QAAS,OACf,CAAK,EACD,OAAQ,CAAC,CAAC,cAAe,QAAQ,EAAG,CAAC,WAAY,eAAe,EAAG,CAAC,MAAO,uBAAuB,EAAG,CAAC,IAAK,CACzG,MAAO,eACP,QAAS,SACT,SAAU,cAChB,CAAK,CAAC,EACF,QAAS,CAAC,CAAC,cAAe,QAAQ,EAAG,CAAC,WAAY,eAAe,EAAG,CAAC,MAAO,uBAAuB,EAAG,CAAC,WAAY,QAAQ,EAAG,CAAC,MAAO,CACpI,MAAO,eACP,QAAS,SACT,SAAU,cAChB,CAAK,EAAG,CAAC,IAAK,QAAQ,CAAC,EACnB,QAAS,CAAC,CAAC,WAAY,eAAe,EAAG,CAAC,IAAK,CAC7C,MAAO,eACP,QAAS,SACT,SAAU,cAChB,CAAK,EAAG,CAAC,OAAQ,QAAQ,EAAG,CAAC,kBAAmB,CAAC,WAAY,YAAY,CAAC,EAAG,CAAC,OAAQ,WAAY,SAAS,EAAG,CAAC,KAAM,QAAQ,EAAG,CAAC,oDAAqD,CAAC,UAAW,mBAAoB,SAAU,SAAS,CAAC,EAAG,CAAC,yCAA0C,CAAC,UAAW,SAAU,SAAS,CAAC,EAAG,CAAC,gCAAiC,CAAC,UAAW,mBAAoB,SAAS,CAAC,EAAG,CAAC,qBAAsB,CAAC,UAAW,SAAS,CAAC,EAAG,CAAC,IAAK,QAAQ,CAAC,EACrc,SAAU,CAAC,CAAC,WAAY,eAAe,EAAG,CAAC,WAAY,QAAQ,EAAG,CAAC,MAAO,CACxE,MAAO,eACP,QAAS,SACT,SAAU,cAChB,CAAK,EAAG,CAAC,OAAQ,QAAQ,EAAG,CAAC,kBAAmB,CAAC,WAAY,YAAY,CAAC,EAAG,CAAC,OAAQ,WAAY,SAAS,EAAG,CAAC,KAAM,QAAQ,EAAG,CAAC,oDAAqD,CAAC,UAAW,mBAAoB,SAAU,SAAS,CAAC,EAAG,CAAC,yCAA0C,CAAC,UAAW,SAAU,SAAS,CAAC,EAAG,CAAC,gCAAiC,CAAC,UAAW,mBAAoB,SAAS,CAAC,EAAG,CAAC,qBAAsB,CAAC,UAAW,SAAS,CAAC,EAAG,CAAC,IAAK,QAAQ,CAAC,EACrc,QAAS,CAAC,CAAC,WAAY,eAAe,EAAG,CAAC,IAAK,CAC7C,MAAO,eACP,QAAS,SACT,SAAU,cAChB,CAAK,EAAG,CAAC,OAAQ,QAAQ,EAAG,CAAC,kBAAmB,CAAC,WAAY,YAAY,CAAC,EAAG,CAAC,OAAQ,WAAY,SAAS,EAAG,CAAC,IAAK,QAAQ,CAAC,EACzH,SAAU,CAAC,CAAC,WAAY,eAAe,EAAG,CAAC,WAAY,QAAQ,EAAG,CAAC,MAAO,CACxE,MAAO,eACP,QAAS,SACT,SAAU,cAChB,CAAK,EAAG,CAAC,OAAQ,QAAQ,EAAG,CAAC,kBAAmB,CAAC,WAAY,YAAY,CAAC,EAAG,CAAC,OAAQ,WAAY,SAAS,EAAG,CAAC,IAAK,QAAQ,CAAC,EACzH,OAAQ,CAAC,CAAC,IAAK,WAAY,OAAO,EAAG,CAAC,IAAK,WAAY,MAAM,EAAG,CAC9D,QAAS,OACf,CAAK,EACD,UAAW,CAAC,CAAC,OAAQ,QAAQ,EAAG,CAAC,IAAK,CACpC,MAAO,eACP,QAAS,SACT,SAAU,cAChB,CAAK,CAAC,EACF,WAAY,CAAC,CAAC,OAAQ,QAAQ,EAAG,CAAC,WAAY,QAAQ,EAAG,CAAC,MAAO,CAC/D,MAAO,eACP,QAAS,SACT,SAAU,cAChB,CAAK,EAAG,CAAC,IAAK,QAAQ,CAAC,EACnB,WAAY,CAAC,CAAC,aAAc,OAAO,EAAG,CAAC,OAAQ,UAAW,UAAU,EAAG,CAAC,UAAW,SAAS,CAAC,CACjG,CACA,EACI2D,GAAO,CACX,GAAE7pC,GACF,KAAE4pC,GACF,SAAE1D,EACF,ECpQIlmC,GAAK,cACL4pC,GAAO,CACT,SAAU,CACR,YAAa,IACb,aAAc,CAAC,MAAO,KAAK,CAC/B,EACE,SAAU,CAAC,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,EAAG,CAAC,IAAK,GAAG,CAAC,EAC7C,iBAAkB,CAAC,CACjB,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,CAAC,QAAQ,CACpB,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,CAAC,SAAU,SAAS,CAC/B,CAAG,EACD,iBAAkB,CAAC,CACjB,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,EAAK,CACD,KAAM,IACN,MAAO,GACX,CAAG,EACD,aAAc,CAAC,CACb,WAAY,iFACZ,OAAQ,CACN,aAAc,CACpB,CACA,CAAG,EACD,QAAS,CACP,QAAS,GACT,QAAS,CACP,MAAO,gBACP,IAAK,kBACX,CACA,CACA,EACI1D,GAAW,CACb,aAAc,MACd,SAAU,CAAC,UAAW,QAAS,OAAQ,OAAQ,QAAS,OAAQ,QAAS,QAAS,WAAY,WAAY,UAAW,SAAU,KAAM,SAAU,OAAQ,OAAQ,SAAU,UAAW,QAAS,QAAS,UAAW,QAAS,MAAO,WAAY,OAAQ,KAAM,aAAc,SAAU,KAAM,aAAc,MAAO,YAAa,OAAQ,SAAU,MAAO,OAAQ,UAAW,UAAW,YAAa,SAAU,SAAU,QAAS,SAAU,QAAS,SAAU,eAAgB,OAAQ,QAAS,SAAU,YAAa,OAAQ,MAAO,SAAU,MAAO,OAAQ,WAAY,QAAS,MAAM,EACpjB,SAAU,CAAC,SAAU,UAAW,SAAU,WAAY,WAAW,EACjE,UAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAM,EAE9N,SAAU,CAAC,CACT,KAAM,IACN,MAAO,IACP,MAAO,iBACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,mBACX,EAAK,CACD,KAAM,IACN,MAAO,IACP,MAAO,uBACX,CAAG,EAED,QAAS,6BACT,QAAS,8CACT,SAAU,mBACV,UAAW,yBACX,UAAW,+EACX,UAAW,CACT,KAAM,CAEN,CAAC,gCAAiC,CAChC,MAAO,CACL,cAAe,CAAC,UAAW,QAAS,WAAW,EAC/C,GAAI,CAAC,iBAAkB,QAAS,WAAW,EAE3C,cAAe,CAAC,wBAAyB,QAAS,WAAW,EAC7D,WAAY,CAAC,aAAc,QAAS,WAAW,CACvD,CACA,CAAK,EAED,CACE,QAAS,aACf,EAEI,CAAC,yBAA0B,CACzB,MAAO,eACP,QAAS,QACT,KAAM,SACZ,CAAK,EAED,CAAC,aAAc,WAAW,EAAG,CAAC,QAAS,WAAW,EAAG,CAAC,WAAY,CAChE,MAAO,CACL,aAAc,WACd,WAAY,EACpB,CACA,CAAK,EAED,CAAC,uBAAwB,cAAc,EAAG,CAAC,oBAAqB,cAAc,EAAG,CAAC,eAAgB,cAAc,EAAG,CAAC,mBAAoB,YAAY,EAAG,CAAC,UAAW,cAAc,EAAG,CAAC,MAAO,QAAQ,EAEpM,CAAC,kBAAmB,gBAAgB,EAEpC,CAAC,kBAAmB,gBAAgB,EAEpC,CAAC,IAAK,SAAU,WAAW,EAAG,CAAC,IAAK,SAAU,WAAW,CAAC,EAC1D,WAAY,CAAC,CAAC,aAAc,OAAO,EAAG,CAAC,OAAQ,UAAW,UAAU,EAAG,CAAC,UAAW,SAAS,CAAC,EAC7F,QAAS,CAAC,CAAC,UAAW,SAAS,EAE/B,CAAC,OAAQ,iBAAiB,EAAG,CAAC,OAAQ,UAAW,MAAM,EAAG,CAAC,QAAS,SAAS,CAAC,EAC9E,OAAQ,CAAC,CAAC,WAAY,QAAQ,EAAG,CAAC,WAAY,eAAe,EAAG,CAAC,MAAO,uBAAuB,EAAG,CAAC,OAAQ,CACzG,MAAO,CACL,UAAW,CACT,MAAO,SACP,KAAM,MAChB,EACQ,WAAY,QACpB,CACA,CAAK,CAAC,EAEF,OAAQ,CAAC,CAAC,yBAA0B,CAAC,kCAAmC,wBAAyB,iCAAiC,CAAC,EAAG,CAAC,kCAAmC,CAAC,CACzK,MAAO,iCACb,EAAO,CACD,MAAO,wBACP,KAAM,aACZ,CAAK,CAAC,EAAG,CAAC,oBAAqB,CAAC,kCAAmC,uBAAuB,CAAC,EAAG,CAAC,OAAQ,iCAAiC,EAAG,CAAC,aAAc,uBAAuB,EAAG,CAAC,UAAW,QAAQ,EAAG,CAAC,aAAc,eAAe,EAAG,CAAC,OAAQ,gBAAgB,EAAG,CAAC,IAAK,CACxQ,MAAO,eACP,QAAS,QACf,EAAO,MAAM,CAAC,EACV,WAAY,CAAC,CAAC,IAAK,uBAAuB,EAAG,CAAC,KAAM,gBAAgB,EAAG,CAAC,aAAc,eAAe,EAAG,CAAC,QAAS,QAAQ,EAAG,CAAC,KAAM,kCAAmC,MAAM,CAAC,CAClL,CACA,EACI2D,GAAO,CACX,GAAE7pC,GACF,KAAE4pC,GACF,SAAE1D,EACF,EClJIlmC,GAAK,MACL4pC,GAAO,GACP1D,GAAW,CACb,UAAW,CACT,KAAM,CAAC,CAAC,gBAAiB,CACvB,MAAO,QACP,KAAM,QACZ,CAAK,EAAG,CAAC,gBAAiB,CACpB,MAAO,QACP,KAAM,QACZ,CAAK,EAAG,CAAC,iBAAkB,CACrB,MAAO,QACP,KAAM,QACZ,CAAK,EAAG,CAAC,YAAa,CAChB,MAAO,SACP,KAAM,SACZ,CAAK,EAAG,CAAC,eAAgB,CACnB,MAAO,OACP,KAAM,OACZ,CAAK,EAAG,CAAC,UAAW,CACd,MAAO,OACP,KAAM,OACZ,CAAK,EAAG,CAAC,gBAAiB,CACpB,MAAO,QACP,KAAM,QACZ,CAAK,EAAG,CAAC,iBAAkB,CACrB,MAAO,QACP,KAAM,QACZ,CAAK,EAAG,CAAC,2BAA4B,MAAM,CAAC,EACxC,MAAO,CAAC,CACN,QAAS,OACf,CAAK,EACD,KAAM,CAAC,CACL,QAAS,OACf,CAAK,EACD,KAAM,CAAC,CACL,QAAS,OACf,CAAK,EACD,OAAQ,CAAC,CACP,QAAS,OACf,CAAK,EACD,MAAO,CAAC,CACN,QAAS,OACf,CAAK,EACD,MAAO,CAAC,CACN,QAAS,OACf,CAAK,EACD,KAAM,CAAC,CAAC,2BAA4B,CAClC,MAAO,OACP,KAAM,MACZ,CAAK,EAAG,CAAC,UAAW,CACd,MAAO,KACb,CAAK,CAAC,CACN,CACA,EACI2D,GAAO,CACT,GAAA7pC,GACA,KAAA4pC,GACA,SAAA1D,EACF,EC7DI4D,GAAwB,CAC1B,QAAS,GACT,iBAAkB,OAClB,cAAe,GACf,eAAgB,EAChB,OAAQ,CACN,eAAgB,QAChB,cAAe,QACnB,EACE,KAAM,CACJ,6BAA8B,CAC5B,kBAAmB,EACzB,EAEI,OAAQ,CAAC,QAAQ,EAEjB,OAAQ,CAAC,IAET,KAEA,KAEA,OAEA,OAEA,OAEA,OAEA,IAEA,IAEA,SAEA,MAEA,MAEA,SAEA,SAEA,SAEA,UAEA,MAEA,QAEA,SAEA,SAEA,SAEA,UAEA,UAEA,MAEA,OAEA,IACJ,CACA,CACA,ECrEA,SAASpgD,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAChU,SAASlB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAUvT,IAAIwH,GAAMC,EAAI,OAAO,0BAA0B,EAI/C,MAAMm5C,UAAwBtpC,eAAc,CAK1C,OAAO,UAAW,CAChB,OAAOzW,GAAkB,WAAa,CACpC,GAAK+/C,EAAgB,cAGrB,OAAIA,EAAgB,kBAGpBA,EAAgB,gBAAkBC,GAAK,EAAE,EAAE,KAAK,IAAM,CACpDr5C,GAAI,MAAM,mBAAoBs5C,GAAU,QAAO,CAAE,EACjDF,EAAgB,kBAAoB,GACpCA,EAAgB,oBAAmB,CACrC,CAAC,GACMA,EAAgB,eACzB,CAAC,EAAC,CACJ,CAMA,OAAO,qBAAsB,CAC3B,GAAKA,EAAgB,kBAKrB,KAAIG,EAAU,QAAQ,IACtB,GAAI,CACF,QAAQ,IAAM,OACdH,EAAgB,cAAgB,IAAIE,GAAUF,EAAgB,YAAY,CAC5E,QAAC,CACC,QAAQ,IAAMG,CAChB,CAGAH,EAAgB,cAAa,EAC/B,CAMA,OAAO,iBAAkB,CACvB,IAAIn+B,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIm+B,EAAgB,aAEnG,GADAA,EAAgB,aAAen+B,EAC3B,CAACm+B,EAAgB,kBAAmB,CACtCA,EAAgB,SAAQ,EACxB,MACF,CACAA,EAAgB,oBAAmB,CACrC,CACA,OAAO,eAAeI,EAAO,CAC3B,GAAI,CAACJ,EAAgB,cACnB,MAAO,GAET,IAAIK,EAAcL,EAAgB,cAAc,MAAMI,EAAM,UAAU,EACtE,OAAIE,GAAY,eAAeF,CAAK,EAE3BC,EAAY,OAAOE,GAAKA,EAAE,MAAQ,IAAI,EAExCF,CACT,CACA,OAAO,eAAgB,CACrB,GAAI,CAACL,EAAgB,cAAe,CAClCvD,GAAc,iBAAiB,MAAM,EACrC,MACF,CACAA,GAAc,UAAS,EAAG,OAAO19C,GAAKA,EAAE,cAAa,IAAO,QAAQ,EAAE,QAAQihD,EAAgB,UAAU,CAC1G,CACA,OAAO,WAAWI,EAAO,CACvB,GAAKJ,EAAgB,eAGhBA,EAAgB,cAGrB,KAAIK,EAAcL,EAAgB,eAAeI,CAAK,EACtDx5C,GAAI,MAAM,4BAA4B,OAAOw5C,EAAM,IAAI,UAAU,EAAGC,CAAW,EAC/E5D,GAAc,gBAAgB2D,EAAO,OAAQC,EAAY,IAAIE,GAAK,CAEhE,IAAIC,EAAgBD,EAAE,OAAS,QAAUA,EAAE,OAAS,OAChDE,EAAgBF,EAAE,MAAQ,KAC9B,MAAO,CACL,gBAAiBA,EAAE,SAAS,IAC5B,YAAaA,EAAE,SAAS,OACxB,cAAeA,EAAE,aAAa,IAC9B,UAAWA,EAAE,aAAa,OAC1B,QAASE,EAAgBF,EAAE,QAAU,GAAG,OAAOA,EAAE,KAAM,IAAI,EAAE,OAAOA,EAAE,OAAO,EAC7E,SAAUE,EAAgBC,GAAsB,MAAQA,GAAsB,QAC9E,KAAMF,EAAgB,CAACG,GAAiB,WAAW,EAAI,EAC/D,CACI,CAAC,CAAC,EACJ,CAUA,OAAO,gBAAgB1yC,EAAM,CAC3B,IAAI2yC,EAAcC,GAAiB,mBACnC,OAAQ5yC,EAAI,CACV,IAAK,GACH,OAAO2yC,EAAY,KACrB,IAAK,GACH,OAAOA,EAAY,OACrB,IAAK,GACH,OAAOA,EAAY,SACrB,IAAK,GACH,OAAOA,EAAY,YACrB,IAAK,GACH,OAAOA,EAAY,MACrB,IAAK,GACH,OAAOA,EAAY,SACrB,IAAK,GACH,OAAOA,EAAY,MACrB,IAAK,GACH,OAAOA,EAAY,UACrB,IAAK,GACH,OAAOA,EAAY,OACrB,IAAK,IACH,OAAOA,EAAY,SACrB,IAAK,IACH,OAAOA,EAAY,KACrB,IAAK,IACH,OAAOA,EAAY,MACrB,IAAK,IACH,OAAOA,EAAY,KACrB,IAAK,IACH,OAAOA,EAAY,QACrB,IAAK,IACH,OAAOA,EAAY,QACrB,IAAK,IACH,OAAOA,EAAY,MACrB,IAAK,IACH,OAAOA,EAAY,KACrB,IAAK,IACH,OAAOA,EAAY,UACrB,IAAK,IACH,OAAOA,EAAY,OACrB,IAAK,IACH,OAAOA,EAAY,WACrB,IAAK,IACH,OAAOA,EAAY,SACrB,IAAK,IACH,OAAOA,EAAY,OACrB,IAAK,IACH,OAAOA,EAAY,MACrB,IAAK,IACH,OAAOA,EAAY,SACrB,IAAK,IACH,OAAOA,EAAY,cACrB,QACE,OAAOA,EAAY,QAC3B,CACE,CASA,OAAO,iBAAiBx8C,EAAO,CAC7B,GAAI,CACF,MAAAG,EACA,IAAAC,CACN,EAAQJ,EAGJ,MAAO,CACL,gBAAiBG,EAAM,KAAO,EAC9B,YAAaA,EAAM,UAAY,EAC/B,cAAeC,EAAI,KAAO,EAC1B,UAAWA,EAAI,UAAY,CACjC,CACE,CASA,OAAO,oBAAoBk8B,EAAU,CAEnC,MAAO,CACL,KAAMA,EAAS,WAAa,EAC5B,UAAWA,EAAS,OAAS,CACnC,CACE,CACA,OAAO,8BAA8B0f,EAAOh8C,EAAO,CACjD,GAAI,CAAC47C,EAAgB,eAAiB,CAACA,EAAgB,cACrD,MAAO,CACL,QAAS,GACT,QAAS,IAAM,CAEf,CACR,EAEI,IAAIK,EAAcL,EAAgB,eAAeI,CAAK,EAAE,OAAO,GAAK,CAClE,IAAIU,EAAkB,IAAIC,GAAa,EAAE,SAAS,IAAK,EAAE,SAAS,OAAQ,EAAE,aAAa,IAAK,EAAE,aAAa,MAAM,EACnH,OAAO,EAAE,MAAQ,MAEjBD,EAAgB,gBAAgB18C,CAAK,CACvC,CAAC,EACG48C,EAAaX,EAAY,OAAOh0C,GAAQ,CAC1C,GAAI,CACF,IAAA40C,CACR,EAAU50C,EACJ,OAAO40C,GAAO,IAChB,CAAC,EAAE,IAAI,GAAK,CACV,IAAIj1B,EAAQ,MACZ,OAAI,EAAE,KAAO,OACP,EAAE,IAAI,SAAW,MAAQ,EAAE,IAAI,UAAY,GAC7CA,EAAQ,GAAG,OAAO,EAAE,KAAM,IAAI,EAAE,OAAO,EAAE,IAAI,OAAO,EAEpDA,EAAQ,OAAO,OAAO,EAAE,IAAI,GAGzB,CACL,MAAAA,EACA,GAAI,OAAO,OAAO,EAAE,IAAI,EACxB,KAAM,WACN,KAAM,EAAE,IAAM,CACZ,MAAO,EAAE,IAAI,MAAM,IAAIk1B,GAAQ,CAC7B,IAAIC,EACJ,MAAO,CACL,SAAUf,EAAM,IAChB,UAAWA,EAAM,aAAY,EAC7B,SAAU,CACR,MAAO,CACL,gBAAiBc,EAAK,SAAS,IAC/B,YAAaA,EAAK,SAAS,OAC3B,cAAeA,EAAK,aAAa,IACjC,UAAWA,EAAK,aAAa,MAC/C,EACgB,MAAOC,EAAgBD,EAAK,WAAa,MAAQC,IAAkB,OAASA,EAAgB,EAC5G,CACA,CACU,CAAC,CACX,EAAY,MACZ,CACI,CAAC,EACGC,EAAY,IAAI,IAChBC,EAAiB,IAAI,IACzBhB,EAAY,QAAQ,GAAK,CACnB,EAAE,MAAQ,OAGVe,EAAU,IAAI,EAAE,IAAI,GACtBC,EAAe,IAAI,EAAE,IAAI,EAE3BD,EAAU,IAAI,EAAE,IAAI,EACtB,CAAC,EACD,IAAIE,EAAqBjB,EAAY,IAAI,GAAK,CAC5C,GAAI,EAAE,MAAQ,KAEZ,MAAO,GAET,IAAIkB,EAAOnB,EAAM,eAAe,EAAE,SAAS,GAAG,EAC1CoB,EAAY/E,GAAc,SAAS8E,EAAMnB,EAAM,cAAa,CAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EACxEqB,EAAW,CACb,MAAO,CACL,gBAAiB,EAAE,SAAS,IAC5B,YAAaF,EAAK,OAAS,EAC3B,cAAe,EAAE,SAAS,IAC1B,UAAWA,EAAK,OAAS,CACnC,EACQ,KAAM,YAAY,OAAO,EAAE,IAAI,CACvC,EACM,OAAIC,GAAa,MAAQA,EAAU,KAAK,WAAW,SAAS,IAE1DC,EAAS,KAAO,WAAW,OAAO,EAAE,KAAM,GAAG,EACzCF,EAAK,WAAW,UAAWC,EAAU,MAAM,GAE7CC,EAAS,MAAM,YAAcD,EAAU,OAAS,EAChDC,EAAS,MAAM,UAAYD,EAAU,OAAS,IAE9CC,EAAS,MAAM,YAAcD,EAAU,OAAS,EAChDC,EAAS,MAAM,UAAYF,EAAK,WAAW,KAAMC,EAAU,MAAM,EAAIA,EAAU,OAAS,EACtFA,EAAU,OAAS,IAGlB,CAAC,CACN,MAAO,WAAW,OAAO,EAAE,KAAM,OAAO,EAAE,OAAOH,EAAe,IAAI,EAAE,IAAI,EAAI,QAAQ,OAAO,EAAE,SAAS,GAAG,EAAI,WAAW,EAC1H,KAAM,WACN,KAAM,CACJ,MAAO,CAAC,CACN,SAAUjB,EAAM,IAChB,UAAWA,EAAM,aAAY,EAC7B,SAAUqB,CACtB,CAAW,CACX,CACA,CAAO,CACH,CAAC,EAAE,KAAI,EAAG,OAEV,CAACtvC,EAAQ9S,EAAG26B,IAAQA,EAAI,KAAKn6B,GAAKA,EAAE,QAAUsS,EAAO,KAAK,IAAMA,CAAM,EAClEuvC,EAAuB,CAAC,GAAGN,CAAS,EAAE,IAAIO,IAAS,CACrD,MAAO,WAAW,OAAOA,EAAM,gBAAgB,EAC/C,KAAM,WACN,KAAM,CACJ,MAAO,CAAC,CACN,SAAUvB,EAAM,IAChB,UAAWA,EAAM,aAAY,EAC7B,SAAU,CACR,MAAO,CACL,gBAAiB,EACjB,YAAa,EACb,cAAe,EACf,UAAW,CACzB,EACY,KAAM,iBAAiB,OAAOuB,EAAM;AAAA,CAAI,CACpD,CACA,CAAS,CACT,CACA,EAAM,EACF,MAAO,CACL,QAAS,CAAC,GAAGX,EAAY,GAAGM,EAAoB,GAAGI,CAAoB,EACvE,QAAS,IAAM,CAEf,CACN,CACE,CACA,OAAO,0BAA0BtB,EAAOt4C,EAAS85C,EAAO,CACtD,GAAK5B,EAAgB,cAGrBp5C,UAAI,MAAM,+BAA+B,OAAOw5C,EAAM,IAAI,QAAQ,CAAC,EAC5D,CAAC,CACN,MAAOA,EAAM,kBAAiB,EAC9B,KAAMJ,EAAgB,cAAc,OAAOI,EAAM,SAAQ,CAAE,CACjE,CAAK,CACH,CACA,YAAY92C,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,+BAAgC,MAAM,EAC5DA,GAAgB,KAAM,8BAA+B,MAAM,EAC3DA,GAAgB,KAAM,0BAA2B,MAAM,EACvD,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,CAC7D,CACA,mBAAoB,CAClB,GAAI,CACF,SAAAm9C,EACA,QAAA0F,CACN,EAAQ,KAAK,MACT,KAAK,6BAA+BhB,GAAiB,+BAA+B1E,EAAU,CAC5F,uBAAwB,KAAK,wBAC7B,kBAAmB,CAAC,IAAK,IAAK,GAAG,CACvC,CAAK,EACG0F,EAAQ,kBAAoB,OAC9B,KAAK,4BAA8BhB,GAAiB,8BAA8B1E,EAAU,CAC1F,qBAAsB,KAAK,uBAC3B,+BAAgC,CAAC,IAAK,GAAG,CACjD,CAAO,GAEC0F,EAAQ,UAAY,OACtB,KAAK,wBAA0BhB,GAAiB,sBAAsB1E,EAAU,CAC9E,aAAc,KAAK,kBAC3B,CAAO,EAEL,CACA,sBAAuB,CACrB,IAAI2F,EAAuBC,EAAuBC,GACjDF,EAAwB,KAAK,gCAAkC,MAAQA,IAA0B,QAAUA,EAAsB,QAAO,GACxIC,EAAwB,KAAK,+BAAiC,MAAQA,IAA0B,QAAUA,EAAsB,QAAO,GACvIC,EAAwB,KAAK,2BAA6B,MAAQA,IAA0B,QAAUA,EAAsB,QAAO,CACtI,CACA,wBAAwB5B,EAAO1f,EAAUh5B,EAAS,CAChD,GAAI,CACF,MAAOu6C,EACP,QAAAJ,CACN,EAAQ,KAAK,MACT,GAAIzB,IAAU6B,EACZ,OAAO,KAET,IAAIlpC,EAAS,CACX,aAAc,CACZ,IAAK,GAAG,OAAOqnC,EAAM,GAAG,EACxB,QAASA,EAAM,aAAY,CACnC,EACM,SAAUJ,EAAgB,oBAAoBtf,CAAQ,EACtD,QAAAh5B,CACN,EACQw6C,EAAkBL,EAAQ,mBAAmB9oC,CAAM,EACvDnS,GAAI,MAAM,6BAA8BmS,CAAM,EAC9C,IAAIopC,EAAwBD,EAAgB,KAAKp9C,GAAS,CACxD8B,GAAI,MAAM,8BAA+BmS,EAAQjU,CAAK,EACtD,IAAIs9C,EAAct9C,EAAM,IAAIhB,GAAQ,CAClC,GAAI,CACF,MAAAqhB,EACA,KAAAlX,EACA,OAAAgL,EACA,cAAAopC,EACA,SAAAC,EACA,WAAAC,EACA,SAAAC,EACA,iBAAAC,CACV,EAAY3+C,EACJ,MAAO,CACL,MAAAqhB,EACA,KAAM66B,EAAgB,gBAAgB/xC,CAAI,EAC1C,OAAAgL,EACA,eAAgBopC,GAAkB,KAAmC,OAASA,EAAc,QAAU,WAAaA,EAAgBA,GAAkB,KAAmC,OAASA,EAAc,MAC/M,SAAAC,EACA,WAAAC,EACA,WAAYC,EAAS,KAIrB,gBAAiBC,IAAqB,EAAI,EAAIA,EAC9C,MAAOzC,EAAgB,iBAAiBwC,EAAS,KAAK,CAChE,CACM,CAAC,EACD,MAAO,CACL,WAAY,GACZ,YAAAJ,CACR,CACI,CAAC,EAAE,MAAM3hD,IACPmG,GAAI,MAAM,iDAAkDnG,CAAK,EAC1D,CACL,YAAa,EACrB,EACK,EACD,OAAO0hD,CACT,CACA,uBAAuB/B,EAAO1f,EAAUkhB,EAAOl6C,EAAS,CACtD,IAAIg7C,EAAgB,CAClB,MAAO,CACL,WAAY,GACZ,gBAAiB,EACjB,gBAAiB,CACzB,EACM,QAAS,IAAM,CAEf,CACN,EACQ,CACF,MAAOT,EACP,QAAAJ,CACN,EAAQ,KAAK,MACT,GAAIzB,IAAU6B,GAAaJ,EAAQ,kBAAoB,KACrD,OAAO,KAET,IAAI9oC,EAAS,CACX,aAAc,CACZ,IAAK,GAAG,OAAOqnC,EAAM,GAAG,EACxB,QAASA,EAAM,aAAY,CACnC,EACM,SAAUJ,EAAgB,oBAAoBtf,CAAQ,EACtD,QAAAh5B,CACN,EACQi7C,EAAiBd,EAAQ,iBAAiB9oC,CAAM,EACpDnS,GAAI,MAAM,2BAA4BmS,CAAM,EAC5C,IAAI6pC,EAAmBD,EAAe,KAAK79C,GAAS,CAClD8B,GAAI,MAAM,wBAAyBmS,EAAQ4pC,CAAc,EACzD,IAAIE,EAAa/9C,EAAM,IAAIhB,GAAQ,CACjC,GAAI,CACF,MAAAqhB,EACA,cAAAk9B,EACA,WAAArxB,CACV,EAAYltB,EACJ,MAAO,CACL,eAAgBu+C,GAAkB,KAAmC,OAASA,EAAc,QAAU,WAAaA,EAAgBA,GAAkB,KAAmC,OAASA,EAAc,MAC/M,MAAAl9B,EACA,WAAY6L,GAA4D,EAClF,CACM,CAAC,EACD,GAAI6xB,EAAW,SAAW,EACxB,OAAOH,EAKT,IAAII,EAAkB,EACtB,MAAO,CACL,MAAO,CACL,WAAAD,EACA,gBAAAC,EACA,gBAAiBh+C,EAAMg+C,CAAe,EAAE,eAClD,EACQ,QAAS,IAAM,CAEf,CACR,CACI,CAAC,EAAE,MAAMriD,IACPmG,GAAI,MAAM,iDAAkDnG,CAAK,EAC1DiiD,EACR,EACD,OAAOE,CACT,CACA,mBAAmBxC,EAAO1f,EAAU,CAClC,GAAI,CACF,MAAOuhB,EACP,QAAAJ,CACN,EAAQ,KAAK,MACT,GAAIzB,IAAU6B,GAAaJ,EAAQ,UAAY,KAC7C,OAAO,KAET,IAAI9oC,EAAS,CACX,aAAc,CACZ,IAAK,GAAG,OAAOqnC,EAAM,GAAG,EACxB,QAASA,EAAM,aAAY,CACnC,EACM,SAAUJ,EAAgB,oBAAoBtf,CAAQ,CAC5D,EACQqiB,EAAQlB,EAAQ,SAAS9oC,CAAM,EACnCnS,GAAI,MAAM,kBAAmBmS,CAAM,EACnC,IAAIiqC,EAAcD,EAAM,KAAKE,GAAa,CACxCr8C,GAAI,MAAM,mBAAoBmS,EAAQkqC,CAAS,EAC/C,GAAI,CACF,SAAUC,CAClB,EAAUD,EACJ,MAAO,CACL,SAAUC,GAAiB,KAAO,CAACA,CAAa,EAAI,EAC5D,CACI,CAAC,EAAE,MAAMziD,IACPmG,GAAI,MAAM,sCAAuCnG,CAAK,EAC/C,CACL,SAAU,EAClB,EACK,EACD,OAAOuiD,CACT,CACA,QAAS,CACP,OAAO,IACT,CACF,CACAhkD,GAAgBghD,EAAiB,gBAAiB,MAAM,EACxDhhD,GAAgBghD,EAAiB,kBAAmB,MAAM,EAC1DhhD,GAAgBghD,EAAiB,oBAAqB,EAAK,EAC3DhhD,GAAgBghD,EAAiB,gBAAiB,EAAI,EACtDhhD,GAAgBghD,EAAiB,eAAgBD,EAAqB,ECnjBtE,SAASpgD,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAChU,SAAS+I,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAqBvT,IAAIwH,GAAMC,EAAI,OAAO,aAAa,EAC9Bs8C,GAAqB,yBACzB,MAAM7C,EAAY,CAMhB,OAAO,MAAO,CACZ,GAAI,CACF,UAAA8C,CACN,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxEx8C,GAAI,MAAM,wBAAwB,EAC9Bw8C,IAAc,QAChB9C,GAAY,kBAAkB8C,CAAS,EAEzC,GAAI,CACF,UAAAC,EACA,kBAAAC,CACN,EAAQhD,GACJ+C,EAAS,EACTC,EAAkB,CAACC,GAAQC,GAAQC,GAAYC,GAASC,EAAS,CAAC,EAClE9C,GAAiB,WAAW,SAAU,IAAM,CAC1CA,GAAiB,2BAA2B,SAAU,CACpD,mBAAoBb,EAAgB,6BAC5C,EAAS,CACD,wBAAyB,CAAC,UAAU,CAC5C,CAAO,EACDa,GAAiB,uCAAuC,SAAU,CAChE,+BAAgCb,EAAgB,yBACxD,CAAO,CACH,CAAC,EACDvD,GAAc,iBAAiB2D,GAAS,CAEtC,GAAIA,EAAM,cAAa,IAAO,SAAU,CAClCJ,EAAgB,eAAiB,MACnCA,EAAgB,WAAWI,CAAK,EAElC,IAAIwD,EAAgBh7C,GAAS7J,GAAKihD,EAAgB,WAAWjhD,CAAC,EAAG,GAAG,EACpEqhD,EAAM,mBAAmB,IAAM,CAC7BwD,EAAcxD,CAAK,CACrB,CAAC,CACH,CACF,CAAC,EACDE,GAAY,6BAA4B,EACxC15C,GAAI,MAAM,qBAAqB,CACjC,CAKA,OAAO,WAAY,CACjB,IAAIi9C,EAAsBC,EACtB,CACF,cAAAC,CACN,EAAQzD,GACA0D,EAAcx6B,GAA4By6B,EAAc,EAC5Dr9C,GAAI,OAAO,gBAAiBq9C,EAAc,EAC1Cr9C,GAAI,OAAO,wBAAyBo9C,CAAW,EAC/C,IAAIE,EAAc,CAAC,CACjB,MAAO,GACP,WAAYH,EAAcC,EAAY,UAAU,CACtD,EAAO,CACD,MAAO,SACP,WAAYD,EAAcC,EAAY,MAAM,CAClD,EAAO,CACD,MAAO,eACP,WAAYD,EAAcC,EAAY,cAAc,CAAC,CAC3D,EAAO,CACD,MAAO,UACP,WAAYD,EAAcC,EAAY,OAAO,CACnD,EAAO,CACD,MAAO,gBACP,WAAYD,EAAcC,EAAY,eAAe,CAAC,CAC5D,EAAO,CACD,MAAO,YACP,WAAYD,EAAcC,EAAY,SAAS,CACrD,EAAO,CACD,MAAO,UACP,WAAYD,EAAcC,EAAY,OAAO,CACnD,EAAO,CACD,MAAO,SACP,WAAYD,EAAcC,EAAY,MAAM,CAClD,EAAO,CACD,MAAO,UACP,WAAYD,EAAcC,EAAY,OAAO,CACnD,EAAO,CACD,MAAO,aACP,WAAYD,EAAcC,EAAY,UAAU,CACtD,EAAO,CACD,MAAO,uBACP,WAAYD,EAAcC,EAAY,sBAAsB,CAAC,CACnE,EAAO,CACD,MAAO,WACP,WAAYD,EAAcC,EAAY,QAAQ,CACpD,EAAO,CACD,MAAO,aACP,WAAYD,EAAcC,EAAY,UAAU,CACtD,EAAO,CACD,MAAO,YACP,YAAaH,GAAwBC,EAAwBE,EAAY,WAAW,KAAO,MAAQF,IAA0B,OAAS,OAASA,EAAsB,UAAU,CAAC,KAAO,MAAQD,IAAyB,OAASA,EAAuB,EAC9P,EAAO,CACD,MAAO,WACP,WAAYE,EAAcC,EAAY,UAAU,CAAC,CACvD,EAAO,CACD,MAAO,WACP,WAAYD,EAAcC,EAAY,UAAU,CAAC,CACvD,EAAO,CACD,MAAO,aACP,WAAYD,EAAcC,EAAY,YAAY,CAAC,CACzD,EAAO,CACD,MAAO,YACP,WAAYD,EAAcC,EAAY,WAAW,CAAC,CACxD,EAAO,CACD,MAAO,YACP,WAAYD,EAAcC,EAAY,WAAW,CAAC,CACxD,EAAO,CACD,MAAO,WACP,WAAYD,EAAcC,EAAY,UAAU,CAAC,CACvD,CAAK,EACGG,EAAe,CACjB,WAAYH,EAAY,WACxB,gBAAiBA,EAAY,kBAAkB,EAC/C,2BAA4BA,EAAY,4BAA4B,EACpE,oBAAqBA,EAAY,WACjC,oBAAqBA,EAAY,WACjC,iCAAkCA,EAAY,kCAAkC,EAChF,8BAA+BA,EAAY,+BAA+B,EAC1E,oCAAqCA,EAAY,sCAAsC,EACvF,6BAA8BA,EAAY,6BAA6B,EACvE,qCAAsCA,EAAY,sCAAsC,EACxF,sCAAuCA,EAAY,uCAAuC,EAC1F,iCAAkCA,EAAY,kCAAkC,EAChF,6BAA8BA,EAAY,8BAA8B,EACxE,sCAAuCA,EAAY,wCAAwC,EAC3F,iCAAkCA,EAAY,kCAAkC,EAChF,6BAA8BA,EAAY,8BAA8B,EACxE,iCAAkCA,EAAY,kCAAkC,EAChF,yCAA0CA,EAAY,2CAA2C,EACjG,iCAAkCA,EAAY,2CAA2C,EACzF,yCAA0CA,EAAY,2CAA2C,EACjG,iCAAkCA,EAAY,2CAA2C,EACzF,0CAA2CA,EAAY,2CAA2C,EAClG,+CAAgDA,EAAY,kDAAkD,EAC9G,uBAAwBA,EAAY,uBAAuB,EAC3D,sBAAuBA,EAAY,yBAAyB,EAC5D,sBAAuBA,EAAY,yBAAyB,EAC5D,2BAA4BA,EAAY,2BAA2B,EACnE,2BAA4BA,EAAY,2BAA2B,EACnE,6BAA8BA,EAAY,2BAA2B,EACrE,uBAAwBA,EAAY,2BAA2B,EAC/D,0BAA2BA,EAAY,0BAA0B,EACjE,+BAAgCA,EAAY,gCAAgC,EAC5E,+BAAgCA,EAAY,gCAAgC,EAC5E,YAAaA,EAAY,cAAc,EACvC,mBAAoBA,EAAY,kBAAkB,EAClD,mBAAoBA,EAAY,kBAAkB,EAClD,eAAgBA,EAAY,cAAc,EAC1C,sBAAuBA,EAAY,sBAAsB,EACzD,4BAA6BA,EAAY,6BAA6B,EACtE,8BAA+BA,EAAY,+BAA+B,EAC1E,qCAAsCA,EAAY,4BAA4B,EAC9E,qCAAsCA,EAAY,4BAA4B,EAC9E,qCAAsCA,EAAY,4BAA4B,EAC9E,qCAAsCA,EAAY,4BAA4B,EAC9E,qCAAsCA,EAAY,4BAA4B,EAC9E,qCAAsCA,EAAY,4BAA4B,EAC9E,sDAAuDA,EAAY,sCAAsC,CAC/G,EACIvH,GAAc,YAAY,UAAW,CACnC,KAAM,UACN,QAAS,GACT,MAAOyH,EACP,OAAQC,CACd,CAAK,EACD,GAAI,CACF1H,GAAc,SAAS,SAAS,CAClC,OAASn7C,EAAK,CACZsF,GAAI,MAAM,gEAAiEtF,CAAG,EAC9Em7C,GAAc,SAAS,SAAS,CAClC,CACF,CAMA,OAAO,kBAAkB2G,EAAW,CAClC,OAAO,kBAAoBl6C,GAAcA,GAAc,GAAI,OAAO,iBAAiB,EAAG,GAAI,CACxF,UAAAk6C,CACN,CAAK,CACH,CAOA,OAAO,cAAcgB,EAAO,CAC1B,IAAIC,EACJ,OAAQA,EAAmBD,GAAU,KAA2B,OAASA,EAAM,UAAU,CAAC,KAAO,MAAQC,IAAqB,OAASA,EAAmB,EAC5J,CACA,OAAO,kBAAkBC,EAAW,CAGlC,IAAIC,EAAcD,EAAU,IAAIj4C,GAAQ,CACtC,GAAI,CACF,GAAA4J,CACR,EAAU5J,EACJ,OAAO4J,CACT,CAAC,EACD4qC,GAAiB,aAAY,EAAG,OAAOtlC,GAAS,CAC9C,GAAI,CACF,GAAAtF,CACR,EAAUsF,EACJ,OAAOgpC,EAAY,SAAStuC,CAAE,CAChC,CAAC,EAAE,QAAQuuC,GAAiB,CAC1B,IAAIrI,EAAWqI,EACf59C,GAAI,OAAO,sCAAuCu1C,EAAS,EAAE,CAC/D,CAAC,EAGDmI,EAAU,QAAQnI,GAAY,CAC5BmE,GAAY,iBAAiBnE,CAAQ,CACvC,CAAC,CACH,CACA,OAAO,iBAAiBA,EAAU,CAChCv1C,GAAI,OAAO,yBAA0Bu1C,EAAS,EAAE,EAChD0E,GAAiB,SAAS1E,CAAQ,EAClC0E,GAAiB,WAAW1E,EAAS,GAAI,IAAM,CAC7C0E,GAAiB,yBAAyB1E,EAAS,GAAIA,EAAS,IAAI,EACpE0E,GAAiB,yBAAyB1E,EAAS,GAAIA,EAAS,QAAQ,CAC1E,CAAC,CACH,CAOA,OAAO,OAAOsI,EAAQ,CACpB,IAAIC,EACAC,EAAc,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAIlI,GAAc,kBAAkB,IACrHiI,EAAmBD,EAAO,cAAgB,MAAQC,IAAqB,QAAUA,EAAiB,OAAOC,CAAW,CACvH,CAQA,OAAO,aAAaF,EAAQ5C,EAAS,CACnC,IAAIzB,EAAQqE,EAAO,SAAQ,EAC3B7X,EAAcwT,CAAK,EACnB,IAAIwE,EAAwB,CAC1B,aAAc,CACZ,IAAK,GAAG,OAAOxE,EAAM,GAAG,EACxB,WAAYA,EAAM,cAAa,EAC/B,QAASA,EAAM,aAAY,EAC3B,KAAMA,EAAM,SAAQ,CAC5B,CACA,EACIx5C,GAAI,OAAO,0BAA2Bg+C,CAAqB,EAC3D/C,EAAQ,aAAa+C,CAAqB,EAC1C,IAAIC,EAAUJ,EAAO,wBAAwBK,GAAgB,CAM3D,OALI,CACF,QAAAnG,EACA,UAAAoG,CACR,EAAUD,EACAE,EAAiB,GACZ3lD,EAAI,EAAGA,EAAIs/C,EAAQ,OAAQt/C,GAAK,EAAG,CAC1C,IAAI4lD,EAAStG,EAAQt/C,CAAC,EAClB,CACF,MAAA+E,EACA,YAAA8gD,EACA,KAAAtkD,CACV,EAAYqkD,EACAE,EAAgB,CAClB,MAAO,CACL,MAAO,CACL,KAAM/gD,EAAM,gBAAkB,EAC9B,UAAWA,EAAM,YAAc,CAC7C,EACY,IAAK,CACH,KAAMA,EAAM,cAAgB,EAC5B,UAAWA,EAAM,UAAY,CAC3C,CACA,EACU,YAAA8gD,EACA,KAAAtkD,CACV,EACQokD,EAAe,KAAKG,CAAa,CACnC,CACA,GAAIH,EAAe,OAAS,EAAG,CAC7B,IAAII,EAA0B,CAC5B,aAAc,CACZ,QAASL,EACT,IAAK,GAAG,OAAO3E,EAAM,GAAG,CACpC,EACU,eAAA4E,CACV,EACQp+C,GAAI,OAAO,0BAA2Bw+C,CAAuB,EAC7DvD,EAAQ,eAAeuD,CAAuB,CAChD,CACF,CAAC,EACD,OAAOP,CACT,CACA,OAAO,cAAcJ,EAAQ5C,EAAS,CACpC,IAAIzB,EAAQqE,EAAO,SAAQ,EAC3B7X,EAAcwT,CAAK,EACnB,IAAIiF,EAAyB,CAC3B,aAAc,CACZ,IAAK,GAAG,OAAOjF,EAAM,GAAG,CAChC,CACA,EACIyB,EAAQ,cAAcwD,CAAsB,CAC9C,CAQA,OAAO,qBAAqBZ,EAAQ,CAClCA,EAAO,WAAWa,GAAc,CAC9B,IAAIC,EAAc,OACdC,EAAe,UACfC,EAAgB,UAChBC,EAAcjB,EAAO,SAAQ,EACjC7X,EAAc8Y,CAAW,EACzB,IAAIC,EAAaD,EAAY,gBAAgBJ,EAAW,KAAK,GACzDC,EAAY,KAAKI,CAAU,GAAKH,EAAa,KAAKG,CAAU,GAAKF,EAAc,KAAKE,CAAU,IAChGD,EAAY,WAAW,CAAC,CACtB,MAAOJ,EAAW,MAClB,KAAMK,EAAW,QAAQJ,EAAa,GAAG,EAAE,QAAQC,EAAc,EAAE,EAAE,QAAQC,EAAe,GAAG,CACzG,CAAS,CAAC,CAEN,CAAC,CACH,CACA,OAAO,eAAgB,CACrB,GAAI,CACF,SAAA3zC,CACN,EAAQ,OAAO,UACX,OAAOA,EAAS,WAAW,KAAK,CAClC,CAQA,OAAO,8BAA+B,CAMpC2qC,GAAc,kBAEd,CAEE,WAAYmJ,GAAc,QAAUC,GAAe,KACnD,QAAS,IACf,CAAK,EAKIvF,GAAY,iBACf7D,GAAc,kBAAkB,CAE9B,WAAYmJ,GAAc,QAAUC,GAAe,KACnD,QAAS,IACjB,CAAO,CAEL,CAUA,OAAO,mBAAmBpB,EAAQqB,EAAa,CAC7CrB,EAAO,UAAU,CAEf,GAAI,uBAAuB,OAAOvuC,IAAQ,EAC1C,MAAO,GAEP,YAAA4vC,EACA,IAAK,MACX,CAAK,CACH,CACA,OAAO,6BAA6BhzC,EAAU,CAC5C,GAAI,CACF,SAAAoF,CACN,EAAQpF,EACA,CACF,SAAAiF,CACN,EAAQG,EACJ,GAAIH,IAAa,KACf,MAAO,GAET,IAAIa,EAAQ0nC,GAAY,cAAa,EACrC,OAAI1nC,GAGCV,EAAS,QAAU0tC,GAAc,QAAU,IAAM1tC,EAAS,SAAW0tC,GAAc,MAAQ,IAAM1tC,EAAS,OAAS0tC,GAAc,IAAM,IAAM1tC,EAAS,QAAU0tC,GAAc,QAAU,GAAKG,GAAa,WAAWhuC,CAAQ,GAK/NG,EAAS,QAAU0tC,GAAc,QAAU,IAAM1tC,EAAS,SAAW0tC,GAAc,MAAQ,IAAM1tC,EAAS,OAAS0tC,GAAc,IAAM,IAAM1tC,EAAS,QAAU0tC,GAAc,QAAU,GAAKG,GAAa,WAAWhuC,CAAQ,CAElO,CACA,OAAO,aAAaqoC,EAAO,CAmBzB,QAlBI4F,EAAY,GACZtyC,EAAQ,SAAerU,EAAG,CAC5B,IAAI4mD,EAAW7F,EAAM,eAAe/gD,CAAC,EACjC6mD,EAAiBC,GAAYF,CAAQ,EACrCG,EAASF,EAAe,OAAOtE,GAC7BA,EAAM,OAAS,MACV,eAAe,KAAKA,EAAM,KAAK,EAEjC,EACR,EAEDwE,EAAO,QAAQxE,GAAS,CACtBoE,EAAU,KAAK,CACb,IAAKpE,EAAM,KACX,MAAO,IAAIb,GAAa1hD,EAAGuiD,EAAM,MAAQ,EAAGviD,EAAGuiD,EAAM,IAAM,CAAC,CACtE,CAAS,CACH,CAAC,CACH,EACS,EAAI,EAAG,GAAKxB,EAAM,aAAY,EAAI,GAAK,EAC9C1sC,EAAM,CAAC,EAET,MAAO,CACL,MAAOsyC,CACb,CACE,CAMA,OAAO,oBAAqB,CAC1B,OAAOK,GAAW,MAAM,GAAG,OAAOlD,EAAkB,EAAE,OAAOjtC,GAAM,CAAE,CAAC,CACxE,CAOA,OAAO,eAAekqC,EAAO,CAC3B,OAAOA,EAAM,IAAI,SAAQ,EAAG,WAAW+C,EAAkB,CAC3D,CAOA,OAAO,UAAUsB,EAAQ,CACvB,IAAI6B,EACJ,QAASA,EAAoB7B,EAAO,UAAU,8BAA8B,KAAO,MAAQ6B,IAAsB,OAAS,OAASA,EAAkB,YAAW,KAAQ,EAC1K,CAMA,OAAO,eAAe7B,EAAQ,CAC5B,OAAOxkD,GAAkB,WAAa,CACpC,IAAIsmD,EACJ,MAAOA,EAAqB9B,EAAO,UAAU,8BAA8B,KAAO,MAAQ8B,IAAuB,OAAS,OAASA,EAAmB,IAAG,CAC3J,CAAC,EAAC,CACJ,CACF,CC/fA,SAAS5mD,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAChU,SAASlB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CASvT,IAAIwH,GAAMC,EAAI,OAAO,cAAc,EAC/B2/C,GAAc,SAASxC,GAAY,aAAa,EAAG,EAAE,EACrDyC,GAAc,EACdC,GAAiB,EACjBC,GAAmBH,GAAcC,GAAcC,GAC/CE,GAAc,IAIX,MAAMC,WAAqBnwC,eAAc,CAC9C,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,mBAAoB,MAAM,EAChDA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,sBAAuB,MAAM,EACnDA,GAAgB,KAAM,6BAA8B,MAAM,EAC1DA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,UAAW,MAAM,EAEvCA,GAAgB,KAAM,mBAAoB,MAAM,EAChD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,iBAAgCuK,EAAM,UAAS,EACpD,KAAK,oBAAsB,KAC3B,KAAK,UAAY,KAAK,IAAG,EACzB,KAAK,YAAc,EACnB,KAAK,QAAU,GAEf,KAAK,iBAAmB,IAAI,IAC5B,KAAK,eAAiB,IAAI,OAAO,eAAe,KAAK,YAAY,EACjE,KAAK,MAAQ,CACX,oBAAqBi9C,GACrB,UAAW,GACX,MAAO,IACb,CACE,CACA,mBAAoB,CAClB,KAAK,kBAAiB,EACtB,KAAK,gBAAe,CACtB,CACA,oBAAqB,CACnB,KAAK,aAAY,CACnB,CACA,sBAAuB,CACrB,KAAK,eAAe,WAAU,EAC1B,KAAK,gBAAkB,MACzB,KAAK,eAAe,OAAM,EAE5B,KAAK,qBAAoB,CAC3B,CASA,eAAe5lD,EAAM,CACnB,IAAIkmD,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5EC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAClF,GAAKnmD,EAML,IAHAgG,GAAI,MAAM,qBAAsBhG,CAAI,EAGhC,CAACmmD,EAAS,CACZ,IAAIC,EAGJ,KAAK,oBAAsB,MAC1BA,EAAsB,KAAK,iBAAmB,MAAQA,IAAwB,QAAUA,EAAoB,SAASpmD,CAAI,CAC5H,CACIkmD,GACF,KAAK,SAAQ,EAEf,KAAK,iBAAgB,EACjBC,GACF,KAAK,eAAenmD,CAAI,EAE5B,CACA,mBAAoB,CAClB,GAAI,CACF,SAAAu7C,EACA,QAAA0F,CACN,EAAQ,KAAK,MACLzB,EAAQ3D,GAAc,YAAY,GAAIN,EAAUmE,GAAY,oBAAoB,EAChF2G,EAAkB,CACpB,2BAA4B,GAC5B,YAAa,QACb,qBAAsB,GACtB,QAAS,GACT,WAAY,YACZ,YAAa,GACb,SAAA9K,EACA,WAAYqK,GACZ,qBAAsB,EACtB,YAAa,MACb,QAAS,CACP,QAAS,EACjB,EACM,oBAAqB,OACrB,qBAAsB,GACtB,UAAW,CACT,UAAW,EACX,WAAY,SACZ,wBAAyB,CACjC,EACM,QAAS,CACP,IAAKC,GACL,OAAQC,EAChB,EACM,MAAO,GACP,SAAU,KACV,oBAAqB,mBACrB,MAAAtG,CACN,EACQ12C,EAAU,KAAK,iBAAiB,QACpCkjC,EAAcljC,CAAO,EACrB,KAAK,cAAgB+yC,GAAc,OAAO/yC,EAASu9C,CAAe,EAClE3G,GAAY,OAAO,KAAK,aAAa,EACrCA,GAAY,aAAa,KAAK,cAAeuB,CAAO,EACpD,KAAK,cAAc,wBAAwB,IAAM,CAC/C,IAAIqF,EACAxoD,GAASwoD,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,SAAQ,EAC5I,KAAK,iBAAiB,IAAI,KAAK,oBAAqBxoD,GAA6C,IAAI,EACrG,KAAK,iBAAgB,CACvB,CAAC,EACD,KAAK,cAAc,qBAAqB,IAAM,CAC5C,KAAK,SAAS,CACZ,UAAW,EACnB,CAAO,CACH,CAAC,EACD,KAAK,cAAc,oBAAoB,IAAM,CAC3C,KAAK,SAAS,CACZ,UAAW,EACnB,CAAO,CACH,CAAC,EAOD,KAAK,cAAc,UAAUyoD,GAAY,CACvC,GAAI,CACF,cAAAC,EACA,oBAAAC,CACR,EAAU,KACA3mB,EAAW0mB,GAAkB,KAAmC,OAASA,EAAc,YAAW,EACtGxa,EAAclM,CAAQ,EACtB,GAAI,CACF,WAAA4mB,CACR,EAAU5mB,EACJ,GAAI,CAACymB,EAAS,QAAU,CAACA,EAAS,UAAY,CAACA,EAAS,QAAS,CAC/D,GAAIA,EAAS,OAAS,WAAa,CAAC,KAAK,0BAAyB,GAAMG,IAAe,EAAG,CACpFD,GAAuB,KACzB,KAAK,YAAYA,EAAsB,CAAC,EAExC,KAAK,YAAY,CAAC,EAEpB,KAAK,WAAU,EACfF,EAAS,gBAAe,EACxBA,EAAS,eAAc,EACvB,MACF,CACA,GAAIA,EAAS,OAAS,aAAe,CAAC,KAAK,0BAAyB,GAAMG,KAAgBlH,GAAU,KAA2B,OAASA,EAAM,aAAY,GAAK,CACzJiH,GAAuB,MAAQA,EAAsB,EACvD,KAAK,YAAYA,EAAsB,CAAC,EAExC,KAAK,YAAY,IAAI,EAEvB,KAAK,SAAQ,EACbF,EAAS,gBAAe,EACxBA,EAAS,eAAc,EACvB,MACF,CACA,GAAIA,EAAS,UAAYtB,GAAe,OAAS,CAAC,KAAK,4BAA6B,CAClF,IAAI0B,EACJJ,EAAS,gBAAe,EACxBA,EAAS,eAAc,EACvB,IAAIK,GAAWD,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,SAAQ,EAAG,KAAI,EACrJ,GAAIC,IAAY,OAAW,CACzB,IAAIC,EACJ,KAAK,eAAeD,CAAO,GAC1BC,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,SAAS,EAAE,CAC7H,CACF,CACF,CACF,CAAC,EAGDnH,GAAY,mBAAmB,KAAK,cAAe,CAACsF,GAAc,QAAUC,GAAe,IAC/F,CAAK,EACDvF,GAAY,qBAAqB,KAAK,aAAa,EACnD,KAAK,cAAc,MAAK,EACxB,KAAK,eAAe,QAAQ52C,CAAO,EACnC,KAAK,iBAAgB,EACrB,KAAK,SAAS,CACZ,MAAO,KAAK,cAAc,SAAQ,CACxC,CAAK,CACH,CACA,sBAAuB,CACrB,GAAI,CACF,QAAAm4C,CACN,EAAQ,KAAK,MACL,KAAK,gBACPvB,GAAY,cAAc,KAAK,cAAeuB,CAAO,EACrD,KAAK,cAAc,QAAO,EAC1B,KAAK,cAAgB,OAEzB,CACA,cAAe,CACb,KAAK,iBAAgB,CACvB,CACA,wBAAyB,CACvB,IAAIx1C,EACJ,GAAI,CAAC,KAAK,2BAA4B,CACpC,IAAIq7C,EACJ,KAAK,4BAA8BA,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,SAAWA,EAAuBA,EAAqB,WAAU,KAAQ,MAAQA,IAAyB,OAAS,OAASA,EAAqB,cAAc,iBAAiB,CACrS,CACA,OAAQr7C,EAAO,KAAK,4BAA8B,KAAK,2BAA2B,UAAU,SAAS,SAAS,KAAO,MAAQA,IAAS,OAASA,EAAO,EACxJ,CACA,2BAA4B,CAC1B,IAAIs7C,EAAuBC,EAC3B,OAAO,KAAK,uBAAsB,KAAQD,GAAyBC,EAAyB,KAAK,8BAAgC,MAAQA,IAA2B,SAAWA,EAAyBA,EAAuB,cAAc,mBAAmB,KAAO,MAAQA,IAA2B,OAAS,OAASA,EAAuB,qBAAuB,MAAQD,IAA0B,OAASA,EAAwB,GAAK,CACpb,CACA,OAAQ,CACN,IAAIE,GACHA,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,MAAK,CACvH,CACA,YAAa,CACX,IAAIC,EAAsBC,EAAsBC,EAAsBC,EAAsBC,EACxF9H,GAAS0H,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,SAAQ,EAC5Ilb,EAAcwT,CAAK,EACnB,IAAItkB,EAASskB,EAAM,cAAc,CAAC,EAAI,EAClC+H,GAAgBJ,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,OAAS,OAASA,EAAqB,kBAAkB,EAAGjsB,CAAM,EACtK8Q,EAAcub,CAAY,GACzBH,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,YAAY,CAC1H,WAAY,EACZ,OAAAlsB,CACN,CAAK,GACAmsB,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,aAAaE,CAAY,GACxID,EAAuB,KAAK,iBAAmB,MAAQA,IAAyB,QAAUA,EAAqB,MAAK,CACvH,CACA,UAAW,CACT,IAAIE,EAAuBC,EAAuBC,EAAuBC,EAAuBC,EAC5FpI,GAASgI,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,OAAS,OAASA,EAAsB,SAAQ,EAC/Ixb,EAAcwT,CAAK,EACnB,IAAIqI,EAAWrI,EAAM,aAAY,EAC7BtkB,EAASskB,EAAM,cAAcqI,CAAQ,EAAI,EACzCC,GAAeL,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,OAAS,OAASA,EAAsB,kBAAkBI,EAAU3sB,CAAM,EAC/K8Q,EAAc8b,CAAW,GACxBJ,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,QAAUA,EAAsB,YAAY,CAC7H,WAAYG,EACZ,OAAA3sB,CACN,CAAK,GACAysB,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,QAAUA,EAAsB,aAAaG,CAAW,GAC1IF,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,CAC1H,CACA,OAAQ,CACN,IAAIG,EAAuBC,GAC1BD,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,GACvHC,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,SAAWA,EAAwBA,EAAsB,SAAQ,KAAQ,MAAQA,IAA0B,QAAUA,EAAsB,SAAS,EAAE,EACzO,KAAK,oBAAsB,IAC7B,CACA,cAAe,CACT,KAAK,eACP,KAAK,cAAc,OAAM,CAE7B,CAOA,YAAYtkD,EAAO,CACjB,IAAIukD,EACJ,GAAI,EAAAvkD,IAAU,MAAQA,GAAS,KAAK,QAAQ,QAG5C,KAAIwkD,EAAgB,KAAK,iBAAiB,IAAIxkD,CAAK,EAC/CykD,EAAezkD,IAAU,KAAO,GAAK,KAAK,QAAQ,KAAK,QAAQ,OAASA,EAAQ,CAAC,EACrF,KAAK,oBAAsBA,GAC1BukD,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,SAAWA,EAAwBA,EAAsB,SAAQ,KAAQ,MAAQA,IAA0B,QAAUA,EAAsB,SAASC,GAAqEC,CAAY,EACpTzkD,IAAU,MAAQA,EAAQ,KAAK,QAAQ,OAASsiD,IAClD,KAAK,gBAAe,EAExB,CACA,iBAAkB,CAChB,IAAIoC,EAAQ,KACZ,OAAO/oD,GAAkB,WAAa,CACpC,GAAI,CACF,GAAI+oD,EAAM,gBAAkB,MAAQA,EAAM,aAAe,KACvD,OAEF,GAAI,CACF,sBAAAC,EACA,SAAA9M,EACA,MAAA+M,CACV,EAAYF,EAAM,MACVA,EAAM,eAAiBhmD,GAAa,eAAeimD,EAAsB,SAAS9M,EAAU+M,GAA6C,GAAIF,EAAM,SAAS,EAAG5lD,GAAYA,EAAS,OAAO,EAC3L,IAAI+lD,EAAQ,MAAMH,EAAM,eACxBG,EAAM,YAAY,EAAI,EACtBA,EAAM,YAAY,CAChB,IAAKH,EAAM,YACX,OAAQA,EAAM,YAAcpC,GAAc,CACpD,CAAS,EACDoC,EAAM,eAAiBhmD,GAAa,eAAemmD,EAAM,kBAAmB,IAAMA,EAAM,OAAO,EAC/F,IAAIC,EAAe,MAAMJ,EAAM,eAC/BA,EAAM,aAAepC,GACjBoC,EAAM,aAAeG,EAAM,OAE7BH,EAAM,YAAc,MAEtBA,EAAM,QAAU,CAAC,GAAGI,EAAa,MAAM,OAAO,CAAC7tC,EAAO8tC,EAAKrvB,IAAQ,CACjE,GAAI,CACF,KAAAx5B,CACZ,EAAc+a,EACJ,OAAO8tC,IAAQ,GAAK7oD,IAASw5B,EAAIqvB,EAAM,CAAC,EAAE,IAC5C,CAAC,EAAE,IAAIrsC,GAAS,CACd,GAAI,CACF,KAAAxc,CACZ,EAAcwc,EACJ,OAAOxc,CACT,CAAC,EAAE,QAAO,EAAI,GAAGwoD,EAAM,OAAO,EAC9BA,EAAM,eAAiB,OACvBG,EAAM,MAAK,CACb,OAAS7nD,EAAK,CAEZ,GADA0nD,EAAM,eAAiB,OACnBhmD,GAAa,WAAW1B,CAAG,EAAG,CAChCsF,GAAI,OAAO,uCAAuC,EAClD,MACF,CACAA,GAAI,MAAM,yBAA0BtF,CAAG,CACzC,CACF,CAAC,EAAC,CACJ,CACA,eAAekmD,EAAS,CACtB,KAAK,oBAAsB,KAC3B,KAAK,iBAAiB,MAAK,EAC3B5a,EAAc4a,CAAO,EACjBA,IAAY,KAAO,KAAK,QAAQ,SAAW,GAAKA,IAAY,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,IAClG,KAAK,QAAQ,KAAKA,CAAO,EAE3B,KAAK,iBAAgB,EACrB,GAAI,CACF,SAAAnO,CACN,EAAQ,KAAK,MACTA,EAASmO,CAAO,CAClB,CACA,kBAAmB,CACjB,GAAK,KAAK,cAGV,IAAI,CACF,UAAAriB,CACN,EAAQ,KAAK,MACTyH,EAAczH,CAAS,EACvB,IAAInI,EAAgB,KAAK,cAAc,iBAAgB,EACnDssB,EAAsB,KAAK,IAAI,KAAK,IAAItsB,EAAemI,CAAS,EAAGwhB,EAAgB,EAGnF4C,EAAevsB,EAAgBssB,EAC/BxhD,EAAU,CACZ,mBAAoByhD,EAAe,OAAY,CACrD,EACI,KAAK,SAAS,CACZ,oBAAAD,CACN,EAAO,IAAM,CACP,IAAIE,EAAuBC,GAC1BD,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,QAAUA,EAAsB,cAAc1hD,CAAO,GACvI2hD,EAAwB,KAAK,iBAAmB,MAAQA,IAA0B,QAAUA,EAAsB,OAAM,CAC3H,CAAC,EACH,CACA,QAAS,CACP,GAAI,CACF,SAAAh7C,EACA,SAAA0tC,EACA,QAAA0F,CACN,EAAQ,KAAK,MACL,CACF,oBAAAyH,EACA,UAAApuC,EACA,MAAAklC,CACN,EAAQ,KAAK,MACT,OAAoBz1C,MAAK,MAAO,CAC9B,UAAWG,EAAW,wBAAyB,CAC7C,SAAA2D,CACR,CAAO,EACD,SAAuB1D,OAAM,MAAO,CAClC,UAAWD,EAAW,8BAA+B,CACnD,MAAOoQ,CACjB,CAAS,EACD,SAAU,CAAcvQ,MAAK,MAAO,CAClC,UAAWk8C,GAAa,iBACxB,IAAK,KAAK,iBACV,MAAO,CACL,OAAQyC,CACpB,CACA,CAAS,EAAGlJ,GAAsBz1C,MAAKq1C,EAAiB,CAC9C,MAAOI,EACP,SAAUjE,EACV,QAAS0F,CACnB,CAAS,CAAC,CACV,CAAO,CACP,CAAK,CACH,CACF,CACA7iD,GAAgB6nD,GAAc,eAAgB,CAC5C,UAAWL,GAAc,GACzB,MAAO,KACP,SAAU,EACZ,CAAC,EACDxnD,GAAgB6nD,GAAc,mBAAoB,eAAe,EChbjE,SAAS7nD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CASvT,IAAIsqD,GAAgB,gBAChBC,GAAqB,CAAC,WAAY,UAAW,WAAY,UAAU,EACnEC,GAAmB,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,MAAM,EAClEC,GAAiB,CAAC,MAAM,EAK5B,MAAMC,WAAmBzgD,WAAU,CACjC,OAAO,gBAAgBvF,EAAM,CAC3B,OAAOA,GAAQ,MAAQA,EAAK,OAAS,QAAU,CAAC6lD,GAAmB,KAAKI,GAAWA,EAAQ,KAAKjmD,EAAK,IAAI,CAAC,CAC5G,CACA,OAAO,iBAAiBtD,EAAM,CAC5B,IAAIwpD,EAAW,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnF,OAAOJ,GAAiB,KAAKK,GAAOzpD,EAAK,SAASypD,CAAG,CAAC,GAAKD,GAAYH,GAAe,KAAKI,GAAOzpD,EAAK,SAASypD,CAAG,CAAC,CACtH,CACA,OAAO,eAAe,EAAG,CACvB,EAAE,eAAc,EAChB,EAAE,gBAAe,CACnB,CACA,OAAO,QAAQC,EAAU,CACvB,OAAIA,IAAaR,GACRS,GAELD,EAAS,SAAS,MAAM,EACnBE,GAELF,EAAS,SAAS,MAAM,EACnBG,GAEFC,EACT,CACA,YAAYhhD,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,qBAAsB0c,GAAQsuC,GAAYA,EAAW,CAAC,GAAGJ,GAAkB,GAAGC,EAAc,EAAI,CAAC,GAAGD,EAAgB,CAAC,CAAC,EAC5I5qD,GAAgB,KAAM,kBAAmB0c,GAAQsuC,GAAY,KAAK,mBAAmBA,CAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,EAC1GhrD,GAAgB,KAAM,yBAA0B0c,GAAQsuC,GAAY9kD,GAAU,KAAK,KAAK,mBAAmB8kD,CAAQ,EAAG,IAAI,CAAC,CAAC,EAC5H,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,SAAwBzgD,EAAM,UAAS,EAC5C,KAAK,QAAuBA,EAAM,UAAS,EAC3C,KAAK,MAAQ,CACX,iBAAkB,EACxB,CACE,CACA,mBAAoB,CAClB,IAAIghD,EAAuBC,GAC1BD,EAAwB,KAAK,QAAQ,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,iBAAiB,QAAS,KAAK,gBAAgB,GACnKC,EAAyB,KAAK,QAAQ,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,MAAK,CAC/H,CACA,sBAAuB,CACrB,IAAIC,GACHA,EAAyB,KAAK,QAAQ,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,oBAAoB,QAAS,KAAK,gBAAgB,CAC5K,CACA,kBAAmB,CACjB,GAAI,KAAK,SAAS,QAAS,CACzB,IAAIC,EACJ,KAAK,SAAS,QAAQ,MAAQ,IAC7BA,EAAwB,KAAK,SAAS,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,CAC7H,CACF,CACA,YAAYn/C,EAAO,CACjBA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,GAAI,CACF,MAAAo/C,CACN,EAAQp/C,EAAM,OACNo/C,GAAS,MACX,KAAK,WAAWA,EAAM,CAAC,CAAC,CAE5B,CACA,WAAW,EAAG,CACZ,GAAI,CACF,SAAAX,EACA,eAAAY,EACA,UAAAC,CACN,EAAQ,KAAK,MAGT,GAFA,EAAE,eAAc,EAChB,EAAE,gBAAe,EACbA,GAAa,KAAM,CACrBD,EAAc,EACd,MACF,CACA,GAAI,IAAE,cAAgB,MAAQ,EAAE,aAAa,OAAS,MAAQ,EAAE,aAAa,MAAM,SAAW,GAG9F,KAAIE,EAAO,EAAE,aAAa,MAAM,CAAC,EAAE,UAAS,EAC5Cle,EAAcke,CAAI,EACdhB,GAAW,iBAAiBgB,EAAK,KAAMd,CAAQ,EACjD,KAAK,WAAWc,CAAI,EAEpB,KAAK,SAAS,CACZ,UAAWhB,GAAW,eAC9B,CAAO,EAEL,CACA,YAAYv+C,EAAO,CACjB,GAAI,CACF,SAAA4E,CACN,EAAQ,KAAK,MACT5E,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB4E,EAAQ,EACR,KAAK,SAAS,CACZ,iBAAkB,GAClB,UAAW,MACjB,CAAK,CACH,CACA,WAAW26C,EAAM,CACf,GAAI,CACF,aAAAC,CACN,EAAQ,KAAK,MACTA,EAAaD,CAAI,EACjB,KAAK,SAAS,CACZ,iBAAkBA,EAAK,KACvB,UAAW,MACjB,CAAK,CACH,CACA,iBAAkB,CAChB,GAAI,CACF,QAAAE,EACA,QAAAjsC,EACA,iBAAAksC,CACN,EAAQ,KAAK,MACLA,GAGJ,UAAU,UAAU,WAAW,KAAKC,GAAY,CAC9CF,EAAQE,CAAQ,EAChB,KAAK,SAAS,CACZ,iBAAkBxB,GAClB,UAAW,MACnB,CAAO,CACH,CAAC,EAAE,MAAMzqD,GAAK8f,EAAQ9f,CAAC,CAAC,CAC1B,CACA,iBAAiBsM,EAAO,CACtBA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,KAAK,gBAAe,CACtB,CACA,sBAAuB,CACrB,GAAI,CACF,iBAAA0/C,CACN,EAAQ,KAAK,MACT,MAAO,CAAC,CACN,MAAO,QACP,KAAMd,GACN,OAAQ,KAAK,gBACb,SAAU9wC,GAAiB,MAC3B,SAAU4xC,CAChB,CAAK,CACH,CACA,QAAS,CACP,GAAI,CACF,SAAAjB,EACA,UAAAa,EACA,iBAAAI,CACN,EAAQ,KAAK,MACL,CACF,iBAAAE,EACA,UAAAC,CACN,EAAQ,KAAK,MACL3qD,EAAQoqD,GAAyDO,EACjEt3C,EAAiB,KAAK,qBAAoB,EAC9C,OAAoB/I,OAAM,MAAO,CAC/B,IAAK,KAAK,QACV,UAAW,mCACX,WAAY++C,GAAW,eACvB,OAAQ,KAAK,WACb,SAAU,GACV,SAAU,CAAcn/C,MAAKqI,GAAgB,CAC3C,QAASc,CACjB,CAAO,EAAgBnJ,MAAK,QAAS,CAC7B,IAAK,KAAK,SACV,KAAM,OACN,GAAI,WACJ,OAAQ,KAAK,gBAAgBq/C,CAAQ,EACrC,MAAO,CACL,QAAS,MACnB,EACQ,SAAU,KAAK,YACf,cAAe,UACvB,CAAO,EAAG,CAACmB,IAAqB1qD,IAAU,QAAaA,IAAU,KAAoBsK,OAAM,MAAO,CAC1F,UAAW,kBACX,SAAU,CAAcJ,MAAK,MAAO,CAClC,UAAW,eACX,SAAuBA,MAAK8E,GAAiB,CAC3C,KAAM47C,EAClB,CAAW,CACX,CAAS,EAAgB1gD,MAAK,QAAS,CAC7B,SAAU,4CACpB,CAAS,EAAgBA,MAAK,MAAO,CAC3B,UAAW,gBACX,SAAuBA,MAAK,QAAS,CACnC,SAAU,IACtB,CAAW,CACX,CAAS,EAAgBA,MAAKyD,GAAQ,CAC5B,KAAM,UACN,QAAS,KAAK,iBACd,SAAU,gBACpB,CAAS,CAAC,CACV,CAAO,EAAG+8C,IAAqB1qD,IAAU,QAAaA,IAAU,KAAoBsK,OAAM,MAAO,CACzF,UAAW,mBACX,SAAU,CAAcJ,MAAK,MAAO,CAClC,UAAW,gBACX,SAAuBA,MAAK8E,GAAiB,CAC3C,KAAMq6C,GAAW,QAAQqB,CAAgB,CACrD,CAAW,CACX,CAAS,EAAgBpgD,OAAM,MAAO,CAC5B,UAAW,gBACX,SAAU,CAAcJ,MAAK,QAAS,CACpC,SAAU,eACtB,CAAW,EAAgBI,OAAM,QAAS,CAC9B,UAAW,gBACX,SAAU,CAACogD,EAAkB,CAACF,GAAiCtgD,MAAKyD,GAAQ,CAC1E,KAAM,QACN,UAAW,OACX,QAAS,KAAK,YACd,KAAMk9C,GACN,QAAS,QACvB,CAAa,CAAC,CACd,CAAW,CAAC,CACZ,CAAS,CAAC,CACV,CAAO,EAAG,EAAQ7qD,GAAuBsK,OAAM,MAAO,CAC9C,UAAW,kBACX,SAAU,CAAcJ,MAAK,MAAO,CAClC,UAAW,eACX,SAAuBA,MAAK8E,GAAiB,CAC3C,KAAM87C,EAClB,CAAW,CACX,CAAS,EAAgB5gD,MAAK,QAAS,CAC7B,SAAUlK,CACpB,CAAS,EAAGA,IAAUqpD,GAAW,iBAAgCn/C,MAAK,MAAO,CACnE,UAAW,gBACX,SAAuBA,MAAK,QAAS,CACnC,SAAU,KAAK,uBAAuBq/C,CAAQ,CAC1D,CAAW,CACX,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACAhrD,GAAgB8qD,GAAY,eAAgB,CAC1C,SAAU,GACV,UAAW,IACb,CAAC,EACD9qD,GAAgB8qD,GAAY,sBAAuB,6BAA6B,EAChF9qD,GAAgB8qD,GAAY,kBAAmB,yBAAyB,EClQzD,SAAS0B,GAAoBC,EAAQC,EAAU,CAC5D,IAAIC,EAASF,EAAO,eAAe,QAAQ,EAC3C,OAAAE,EAAO,SAAW,GAClBA,EAAO,KAAO,IAAM,GACpBA,EAAO,eAAiB,IAAM,GAC9BA,EAAO,GAAG,OAAQ,CAACC,EAAG/a,IAAa6a,EAAS7a,CAAQ,CAAC,EAC9C8a,CACT,CCbA,SAAS1iD,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAOvT,IAAIysD,GAAU,UACVC,GAAU,WACVC,GAAU,YACVC,GAAkB,uGAClBC,GAAmB,2DAKvB,MAAMC,EAAc,CAClB,OAAO,cAAcxtD,EAAO4P,EAAM69C,EAAY,CAC5C,GAAI,CAACztD,GAASA,IAAUytD,EAEtB,OAAO79C,EAET,OAAQA,EAAI,CACV,KAAKiY,EAAoB,OAEvB,OAAOA,EAAoB,OAC7B,KAAKA,EAAoB,QACvB,OAAO2lC,GAAc,aAAaxtD,CAAK,EACzC,KAAK6nB,EAAoB,KACvB,OAAO2lC,GAAc,UAAUxtD,CAAK,EACtC,KAAK6nB,EAAoB,OACvB,OAAO2lC,GAAc,YAAYxtD,CAAK,EACxC,KAAK6nB,EAAoB,QACvB,OAAO2lC,GAAc,aAAaxtD,CAAK,EACzC,KAAK6nB,EAAoB,UACvB,OAAO2lC,GAAc,cAAcxtD,CAAK,EAC1C,KAAK6nB,EAAoB,WACvB,OAAO2lC,GAAc,eAAextD,CAAK,EAC3C,QACE,OAAOwtD,GAAc,mBAAmBxtD,CAAK,CACrD,CACE,CAGA,OAAO,oBAAoB0H,EAAG,CAC5B,OAAO,MAAMA,CAAC,GAAKA,IAAM,YAAcA,IAAM,WAC/C,CACA,OAAO,aAAa1H,EAAO,CACzB,IAAI0tD,EAAW1tD,EAAM,QAAQ,KAAM,EAAE,EACrC,OAAIwtD,GAAc,oBAAoBE,CAAQ,EACrC7lC,EAAoB,OAEtB2lC,GAAc,cAAcE,CAAQ,CAC7C,CACA,OAAO,UAAU1tD,EAAO,CACtB,IAAI0tD,EAAW1tD,EAAM,QAAQ,KAAM,EAAE,EACrC,OAAIwtD,GAAc,oBAAoBE,CAAQ,EACrC7lC,EAAoB,OAEzB6lC,EAAS,SAAS,GAAG,EAChB7lC,EAAoB,OAEtBA,EAAoB,IAC7B,CACA,OAAO,YAAY7nB,EAAO,CACxB,IAAI0tD,EAAW1tD,EAAM,QAAQ,KAAM,EAAE,EACrC,OAAIwtD,GAAc,oBAAoBE,CAAQ,EACrC7lC,EAAoB,OAEtBA,EAAoB,MAC7B,CACA,OAAO,aAAa7nB,EAAO,CACzB,IAAI2tD,EAAQ3tD,EAAM,YAAW,EAC7B,OAAI2tD,IAAU,QAAUA,IAAU,QACzB9lC,EAAoB,QAEtBA,EAAoB,MAC7B,CACA,OAAO,cAAc7nB,EAAO,CAC1B,OAAIstD,GAAgB,KAAKttD,CAAK,EACrB6nB,EAAoB,UAEtBA,EAAoB,MAC7B,CACA,OAAO,eAAe7nB,EAAO,CAC3B,OAAIutD,GAAiB,KAAKvtD,CAAK,EACtB6nB,EAAoB,WAEtBA,EAAoB,MAC7B,CACA,OAAO,mBAAmB7nB,EAAO,CAC/B,IAAI0tD,EAAW1tD,EAAM,QAAQ,KAAM,EAAE,EACrC,GAAIwtD,GAAc,oBAAoBE,CAAQ,EAAG,CAC/C,IAAIC,EAAQ3tD,EAAM,YAAW,EAC7B,OAAI2tD,IAAU,QAAUA,IAAU,QACzB9lC,EAAoB,QAEzBylC,GAAgB,KAAKttD,CAAK,GAAKA,EAAM,SAAS,GAAG,EAC5C6nB,EAAoB,UAEzB0lC,GAAiB,KAAKvtD,CAAK,EACtB6nB,EAAoB,WAEtBA,EAAoB,MAC7B,CACA,OAAO2lC,GAAc,cAAcE,CAAQ,CAC7C,CACA,OAAO,cAAc1tD,EAAO,CAC1B,GAAIA,EAAM,SAAS,GAAG,EACpB,OAAO6nB,EAAoB,OAI7B,IAAI+lC,EAAe5tD,EAAM,WAAW,GAAG,EAAI,GAAK,GAChD,GAAIA,EAAM,OAAS4tD,EACjB,OAAO/lC,EAAoB,KAI7B,IAAIgmC,EAAW,SAAS7tD,EAAO,EAAE,EACjC,OAAI6tD,EAAWT,IAAWS,EAAWR,GAC5BxlC,EAAoB,KAEtBA,EAAoB,OAC7B,CACA,YAAYimC,EAAiB1B,EAAM2B,EAAaC,EAAcP,EAAYQ,EAAY5tC,EAAS6tC,EAAaC,EAAOC,EAAY,CAC7H9tD,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,OAAQ,MAAM,EACpCA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,SAAU,MAAM,EACtC,KAAK,gBAAkBwtD,EACvB,KAAK,KAAO1B,EACZ,KAAK,YAAc2B,EACnB,KAAK,WAAaN,EAClB,KAAK,WAAaQ,EAClB,KAAK,QAAU5tC,EACf,KAAK,OAAS,EACd,KAAK,YAAc6tC,EACnB,KAAK,SAAW,EAChB,KAAK,MAAQC,EACb,KAAK,WAAaC,EAClB,KAAK,YAAc,EACnB,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,OAAS5jD,GAAcA,GAAc,GAAIwjD,CAAY,EAAG,GAAI,CAC/D,MAAO,KAAK,YACZ,MAAO,KAAK,YACZ,SAAU,KAAK,cACrB,CAAK,CACH,CACA,OAAQ,CACN,GAAI,KAAK,gBAAgB,MAAQ,KAAK,gBAAgB,KACpDK,GAAK,MAAM,KAAK,KAAM,KAAK,MAAM,MAC5B,CACL,IAAIC,EAAYxB,GAAoB,KAAK,KAAM,KAAK,gBAAgB,EAEpEuB,GAAK,MAAMC,EAAW,KAAK,MAAM,EAGjCA,EAAU,OAAM,CAClB,CACF,CACA,YAAY/rD,EAAQgsD,EAAQ,CAC1B,GAAI,CACF,KAAAtpC,CACN,EAAQ1iB,EACJ,GAAI,CAAC,KAAK,MAAO,CACf,GAAI0iB,GAAQ,MAAQA,EAAK,SAAW,EAAG,CACrCspC,EAAO,MAAK,EACZ,KAAK,QAAQ,qCAAqC,EAClD,MACF,CACA,KAAK,MAAQ,IAAI,MAAMtpC,EAAK,CAAC,EAAE,MAAM,EAAE,KAAKkoC,EAAO,EAC/C,KAAK,cAEPloC,EAAOA,EAAK,MAAM,CAAC,EAEvB,CACA,KAAK,UAAYA,EAAK,OACtBipB,EAAc,KAAK,KAAK,EACxB,IAAIsgB,EAAa,CAAC,GAAG,KAAK,KAAK,EAC/BvpC,EAAK,QAAQwpC,GAAO,CAClB,GAAIA,EAAI,QAAUD,EAAW,OAAQ,CACnC,QAAS7tD,EAAI,EAAGA,EAAI6tD,EAAW,OAAQ7tD,GAAK,EAC1C6tD,EAAW7tD,CAAC,EAAI6sD,GAAc,cAAc,KAAK,WAAaiB,EAAI9tD,CAAC,EAAE,KAAI,EAAK8tD,EAAI9tD,CAAC,EAAG6tD,EAAW7tD,CAAC,EAAG,KAAK,UAAU,EAEtH,KAAK,MAAQ6tD,CACf,MACED,EAAO,MAAK,EACZ,KAAK,QAAQ;AAAA,kBAAiE,OAAOC,EAAW,OAAQ,aAAa,EAAE,OAAOC,EAAI,OAAQ;AAAA,OAAW,EAAE,OAAOA,CAAG,CAAC,CAEtK,CAAC,EACD,KAAK,QAAU,EAEf,IAAIC,EAAW,EACX,KAAK,YAAc,EACrBA,EAAW,KAAK,MAAM,KAAK,OAAS,KAAK,YAAc,EAAE,EAEzDA,EAAW,KAAK,MAAM,KAAK,YAAc,CAAC,EAE5C,IAAIC,EAAc,KAAK,WAAWD,CAAQ,EACtCC,GACFJ,EAAO,MAAK,CAEhB,CACA,eAAeK,EAAS,CACtB,GAAI,CACF,MAAAliB,EACA,gBAAAohB,CACN,EAAQ,KAEJ5f,EAAcxB,CAAK,GACfkiB,GAAW,MAAQ,CAACA,EAAQ,KAAK,UACnCd,EAAgBphB,EAAM,IAAI98B,GAI1BA,IAASu9C,IAAWv9C,IAASiY,EAAoB,WAAaA,EAAoB,OAASjY,CAAI,EAAG,KAAK,QAAQ,CAEnH,CACA,YAAY7N,EAAO,CACjB,GAAI,CACF,QAAAse,CACN,EAAQ,KACJA,EAAQte,CAAK,CACf,CACA,iBAAiBowC,EAAU,CACzB,KAAK,YAAcA,EAAS,OAC9B,CACF,CCrPA,IAAI0c,GACJ,SAASvuD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAMvT,IAAIwH,GAAMC,EAAI,OAAO,WAAW,EAI5B2mD,GAAyB,IAI7B,MAAMC,EAAU,CACd,OAAO,wBAAwBztD,EAAG,CAChC,IAAI2C,EAAS,GACT+qD,EAAO1tD,EACX,OAAIA,GAAK,KACP2C,EAASA,EAAO,OAAO8qD,GAAU,wBAAwB,KAAK,MAAMztD,EAAI,EAAE,EAAI,CAAC,CAAC,EAChF0tD,EAAO1tD,EAAI,IAEN2C,EAAO,OAAO,OAAO,aAAa,GAAK+qD,CAAI,CAAC,CACrD,CACA,YAAYrhD,EAAM,CAChB,GAAI,CACF,gBAAAmgD,EACA,QAAA3K,EACA,KAAAiJ,EACA,KAAAx8C,EACA,YAAAm+C,EAAc,GACd,WAAAE,EACA,QAAA5tC,EACA,SAAA8G,EACA,MAAAgnC,CACN,EAAQxgD,EACJrN,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,OAAQ,MAAM,EACpCA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,OAAQ,MAAM,EACpCA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,WAAY,MAAM,EACxCA,GAAgB,KAAM,gBAAiB,MAAM,EAC7CA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,qBAAsB,MAAM,EAClDA,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,SAAU,MAAM,EACtC,KAAK,gBAAkBwtD,EACvB,KAAK,QAAU3K,EACf,KAAK,KAAOiJ,EACZ,KAAK,MAAQ+B,EACb,KAAK,KAAOv+C,EACZ,KAAK,YAAcm+C,EACnB,KAAK,SAAW5mC,EAChB,KAAK,WAAa8mC,EAClB,KAAK,QAAU5tC,EACf,KAAK,OAAS,GACd,KAAK,SAAW,EAChB,KAAK,cAAgB,EACrB,KAAK,OAAS,EACd,KAAK,YAAc8tC,EAAQ,EAAI,KAAK,KAAK/B,EAAK,KAAOiC,GAAK,cAAc,EACxE,KAAK,WAAa,GAClB,KAAK,YAAc,EACnB,KAAK,gBAAkB,EACvB,KAAK,YAAc,GACnB,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,OAAS,CACZ,UAAWz+C,EAAK,UAChB,QAASA,EAAK,QACd,WAAYA,EAAK,WACjB,cAAe,GACf,MAAO,KAAK,YACZ,eAAgBA,EAAK,eACrB,MAAO,KAAK,YACZ,SAAU,KAAK,eACf,SAAU,EAChB,CACE,CACA,QAAS,CACP,KAAK,YAAc,EACrB,CACA,UAAUq/C,EAAY9gC,EAAO,CAG3B,QAFI+gC,EAAU/gC,EAAM,OAChBghC,EAAU,IAAI,MAAMF,CAAU,EAAE,KAAK,IAAI,EAAE,IAAI,IAAM,IAAI,MAAMC,CAAO,CAAC,EAClE1uD,EAAI,EAAGA,EAAI0uD,EAAS1uD,GAAK,EAAG,CACnC,IAAIiuD,EAAMtgC,EAAM3tB,CAAC,EACjB,GAAIiuD,EAAI,OAASQ,EACf,MAAM,IAAI,MAAM,kCAAkC,OAAOA,EAAY,aAAa,EAAE,OAAOR,EAAI,OAAQ;AAAA,CAAI,EAAE,OAAOA,CAAG,CAAC,EAE1H,QAASrtD,EAAI,EAAGA,EAAI6tD,EAAY7tD,GAAK,EAAG,CACtC,IAAIpB,EAAQ,KAAK,KAAK,WAAamuB,EAAM3tB,CAAC,EAAEY,CAAC,EAAE,KAAI,EAAK+sB,EAAM3tB,CAAC,EAAEY,CAAC,EAClE+tD,EAAQ/tD,CAAC,EAAEZ,CAAC,EAAI,KAAK,UAAUR,CAAK,CACtC,CACF,CACA,OAAOmvD,CACT,CACA,UAAUnvD,EAAO,CACf,OAAOA,IAAU,KAAK,KAAK,WAAa,GAAKA,CAC/C,CACA,OAAQ,CACN,IAAIovD,EAAkB,CAAC1iB,EAAO2iB,IAAa,CAGzC,GAFA,KAAK,MAAQ3iB,EACb,KAAK,SAAW2iB,EACZ,KAAK,gBAAgB,MAAQ,KAAK,gBAAgB,KACpDhB,GAAK,MAAM,KAAK,KAAM,KAAK,MAAM,MAC5B,CACL,IAAIC,EAAYxB,GAAoB,KAAK,KAAM,KAAK,gBAAgB,EAEpEuB,GAAK,MAAMC,EAAW,KAAK,MAAM,EAGjCA,EAAU,OAAM,CAClB,CACF,EACIgB,EAAa,IAAI9B,GAAc4B,EAAiB,KAAK,KAAM,KAAK,YAAa,KAAK,OAAQ,KAAK,KAAK,WAAY,KAAK,WAAY,KAAK,QAAS,KAAK,YAAa,KAAK,MAAO,KAAK,KAAK,UAAU,EACrME,EAAW,MAAK,CAClB,CACA,YAAY/sD,EAAQgsD,EAAQ,CAC1B,GAAI,CACF,YAAAR,EACA,QAAA1tC,EACA,kBAAAkvC,EACA,MAAApB,EACA,OAAAqB,CACN,EAAQ,KACJ,GAAI,KAAK,YAAa,CACpBtnD,GAAI,OAAO,uBAAuB,EAClCqmD,EAAO,MAAK,EACZiB,EAAO,QAAQ9uD,GAAKA,EAAE,MAAK,CAAE,EAC7B,MACF,CACA,GAAI,CACF,KAAAukB,CACN,EAAQ1iB,EACC,KAAK,UACJwrD,GACF,KAAK,QAAUtqD,GAAgB,oBAAoBwhB,EAAK,CAAC,CAAC,EAC1DA,EAAOA,EAAK,MAAM,CAAC,GAEnB,KAAK,QAAU8pC,GAAU,gBAAgB9pC,EAAK,CAAC,EAAE,MAAM,GAG3D,IAAIkqC,EAAU,GACd,GAAI,CAEF,GADAA,EAAU,KAAK,UAAU,KAAK,QAAQ,OAAQlqC,CAAI,EAC9CkpC,EAEF,KAAK,kBAAkBgB,EAASZ,CAAM,MACjC,CACL,IAAI3oD,EAAQ,KAAK,OACjB,KAAK,QAAU,EACf2pD,EAAkB3pD,EAAOupD,EAASZ,CAAM,CAC1C,CACF,OAAShuD,EAAG,CACV8f,EAAQ9f,CAAC,CACX,CACF,CACA,kBAAkB4uD,EAASZ,EAAQ,CACjC,GAAI,CAAC,KAAK,mBACR,KAAK,mBAAqBY,EAAQ,MAAK,MAEvC,SAASxuD,EAAI,EAAGA,EAAIwuD,EAAQ,OAAQxuD,GAAK,EACvC,KAAK,mBAAmBA,CAAC,EAAI,KAAK,mBAAmBA,CAAC,EAAE,OAAOwuD,EAAQxuD,CAAC,CAAC,EAG7E,KAAK,iBAAmB,GACpB,KAAK,iBAAmBmuD,IAA0B,KAAK,aACzD,KAAK,yBAAyBP,CAAM,CAExC,CACA,yBAAyBA,EAAQ,CAC/B,IAAIkB,EACA,CACF,kBAAAF,CACN,EAAQ,KACA3pD,EAAQ,KAAK,OACjB,KAAK,QAAU,EACf,IAAI8pD,GAAYD,EAAwB,KAAK,sBAAwB,MAAQA,IAA0B,OAAS,OAASA,EAAsB,MAAK,EACpJ,KAAK,mBAAqB,OAC1B,KAAK,gBAAkB,EACvBvhB,EAAcwhB,CAAQ,EACtBH,EAAkB3pD,EAAO8pD,EAAUnB,CAAM,CAC3C,CACA,kBAAkB3oD,EAAOupD,EAASZ,EAAQ,CACxC,GAAI,CACF,QAAApL,EACA,OAAAqM,EACA,gBAAA1B,EACA,YAAAI,EACA,MAAAxhB,EACA,WAAAuhB,EACA,QAAA5tC,CACN,EAAQ,KACAkuC,GACFA,EAAO,MAAK,EAEdrgB,EAAc,KAAK,OAAO,EAC1BA,EAAcxB,CAAK,EACnB,KAAK,eAAiByiB,EAAQ,CAAC,EAAE,OACjChM,EAAQ,SAAS,KAAK,QAASzW,EAAOyiB,EAAS,KAAK,QAAQ,EAAE,KAAK1E,GAAS,CAC1E,GAAI,KAAK,YAAa,CACpBviD,GAAI,OAAO,uBAAuB,EAC9BqmD,GACFA,EAAO,MAAK,EAEdiB,EAAO,QAAQ9uD,GAAKA,EAAE,MAAK,CAAE,EAC7B,MACF,CACI6tD,GACFA,EAAO,OAAM,EAEfiB,EAAO5pD,CAAK,EAAI6kD,EAEhB,IAAIiE,EAAW,EACXR,EAAc,EAChBQ,EAAW,KAAK,MAAMc,EAAO,OAAStB,EAAc,EAAE,EAAI,GAI1DQ,EAAW,KAAK,MAAM,KAAK,cAAgB,KAAK,SAAW,EAAE,EAAI,GAEnExmD,GAAI,OAAO,uBAAuB,OAAOwmD,CAAQ,CAAC,EAClDT,EAAWS,CAAQ,EACf,KAAK,YAAcc,EAAO,SAAW,KAAK,SAC5CtnD,GAAI,OAAO,sBAAsB,EACjC4lD,EAAgB0B,CAAM,EAE1B,CAAC,EAAE,MAAMjvD,GAAK,CACR,CAAC,KAAK,YAAcguD,GACtBA,EAAO,MAAK,EAEdluC,EAAQ9f,CAAC,CACX,CAAC,CACH,CACA,eAAequD,EAAS,EAElBA,GAAW,MAAQA,EAAQ,KAAK,SAAW,QAC7C,KAAK,WAAa,GAEd,KAAK,oBACP,KAAK,yBAAyB,IAAI,EAGxC,CACA,YAAY7sD,EAAO,CACjB,GAAI,CACF,QAAAse,CACN,EAAQ,KACJA,EAAQte,CAAK,CACf,CACA,iBAAiBowC,EAAU,CACzB,KAAK,YAAcA,EAAS,OAC9B,CACF,CACA0c,GAAaE,GAEbzuD,GAAgByuD,GAAW,kBAAmBE,GAAc,CAE1D,QADIlrD,EAAU,GACLpD,EAAI,EAAGA,EAAIsuD,EAAYtuD,GAAK,EACnCoD,EAAQ,KAAK8qD,GAAW,wBAAwBluD,CAAC,CAAC,EAEpD,OAAOoD,CACT,CAAC,ECxRD,SAASzD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAMivD,EAAW,CACf,OAAO,cAAcnE,EAAU,CAC7B,OAAIA,EAAS,SAAS,MAAM,EACnB,cAELA,EAAS,SAAS,MAAM,GAAKA,EAAS,SAAS,MAAM,EAChD,MAELA,EAAS,SAAS,MAAM,EACnB,UAEF,YACT,CACF,CACAlrD,GAAgBqvD,GAAY,eAAgB,aAAa,EACzDrvD,GAAgBqvD,GAAY,OAAQ,YAAY,EAChDrvD,GAAgBqvD,GAAY,QAAS,OAAO,OAAO,CACjD,YAAa,CACX,KAAM,wBACN,UAAW,IACX,QAAS,OAET,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,QAChB,EACE,IAAK,CACH,KAAM,sBACN,UAAW,IACX,QAAS,OAET,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,QAChB,EAEE,kBAAmB,CACjB,KAAM,oBACN,UAAW,IACX,QAAS;AAAA,EACT,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,IAChB,EAEE,UAAW,CACT,KAAM,qBACN,UAAW,IACX,QAAS;AAAA,EACT,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,IAChB,EAEE,WAAY,CACV,KAAM,YACN,UAAW,IACX,QAAS;AAAA,EACT,WAAY,KACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,KAChB,EAEE,YAAa,CACX,KAAM,cACN,UAAW,IACX,QAAS;AAAA,EACT,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,IAChB,EACE,SAAU,CACR,KAAM,aACN,UAAW,IACX,QAAS,OAET,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,QAChB,EACE,cAAe,CACb,KAAM,kBACN,UAAW,IACX,QAAS,OAET,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,QAChB,EACE,QAAS,CACP,KAAM,yBACN,UAAW,IACX,QAAS,OAET,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,QAChB,EACE,SAAU,CACR,KAAM,eACN,UAAW,IACX,QAAS,OAET,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,QAChB,EACE,WAAY,CACV,KAAM,aACN,UAAW,OAEX,QAAS,OAET,WAAY,IACZ,WAAY,GACZ,eAAgB,GAChB,WAAY,QAChB,CACA,CAAC,CAAC,ECnIF,SAASrvD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWvT,IAAIwH,GAAMC,EAAI,OAAO,aAAa,EAC9BynD,GAAe,OAAO,QAAQD,GAAW,KAAK,EAAE,IAAIhiD,GAAQ,CAC9D,GAAI,CAACyL,EAAKpZ,CAAK,EAAI2N,EACnB,OAAoB1B,MAAK,SAAU,CACjC,MAAOmN,EACP,SAAUpZ,EAAM,IACpB,EAAKoZ,CAAG,CACR,CAAC,EAID,MAAMy2C,WAAoBllD,WAAU,CAClC,YAAYC,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,SAAwBuK,EAAM,UAAS,EAC5C,KAAK,MAAQ,CACX,UAAW,GACX,aAAc,GACd,kBAAmB,GACnB,aAAc,GACd,cAAe,EACf,KAAM8kD,GAAW,aACjB,OAAQ,IACd,CACE,CAIA,mBAAmB5kD,EAAW,CAC5B,GAAI,CACF,KAAAqhD,EACA,MAAA0D,CACN,EAAQ,KAAK,MACL,CACF,UAAAC,EACA,aAAAC,CACN,EAAQ,KAAK,MAET,GAAI,CAACA,GAAgB5D,GAAQ,MAAQ,CAAC2D,EAAW,CAC/C,IAAIE,EACAC,EAAW9D,EAAK,KAAK,YAAY,GAAG,EACpC+D,EAAgB1sD,GAAgB,iBAAiB2oD,EAAK,KAAK,UAAU,EAAG8D,CAAQ,CAAC,EACrF,KAAK,SAAS,CACZ,UAAWC,EACX,aAAc,EACtB,CAAO,GACAF,EAAwB,KAAK,SAAS,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,CAC7H,MAAW7D,GAAQ,MAAQrhD,EAAU,MAAQ,MAAQ+kD,GAAS,MAAQ/kD,EAAU,OAAS,OAEvF,KAAK,SAAS,CACZ,UAAW,GACX,aAAc,EACtB,CAAO,EAIC+kD,GAAS,MAAQA,IAAU,IAAM,CAACC,GAAa,KAAK,SAAS,SAC/D,KAAK,SAAS,QAAQ,MAAK,EAIzB3D,GAAQ,MAAQA,IAASrhD,EAAU,KACrC,KAAK,SAAS,CACZ,KAAM4kD,GAAW,cAAcvD,EAAK,IAAI,CAChD,CAAO,EACQ0D,GAAS,MAAQA,IAAU,KAAO/kD,EAAU,QAAU,QAAaA,EAAU,QAAU,KAChG,KAAK,SAAS,CACZ,KAAM4kD,GAAW,IACzB,CAAO,CAEL,CACA,sBAAuB,CACrB,GAAI,CACF,OAAApB,CACN,EAAQ,KAAK,MACLA,GACFA,EAAO,OAAM,CAEjB,CACA,cAAe,CACb,GAAI,CACF,QAAA6B,CACN,EAAQ,KAAK,MACTA,EAAO,CACT,CACA,YAAY,EAAG,CACb,GAAI,CACF,QAAAA,EACA,QAAA/vC,CACN,EAAQ,KAAK,MACTnY,GAAI,MAAM,CAAC,EACXmY,EAAQ,CAAC,EACT+vC,EAAO,CACT,CACA,gBAAgBvjD,EAAO,CACrB,KAAK,SAAS,CACZ,UAAWA,EAAM,OAAO,MACxB,aAAc,EACpB,CAAK,CACH,CACA,uBAAwB,CACtB,GAAI,CACF,kBAAAwjD,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,kBAAmB,CAACA,CAC1B,CAAK,CACH,CACA,aAAaxjD,EAAO,CAClBA,EAAM,gBAAe,EACrBA,EAAM,eAAc,EACpB,GAAI,CACF,KAAAu/C,EACA,MAAA0D,CACN,EAAQ,KAAK,MACL1D,GAAQ,KACNA,EAAK,KAAK,SAAS,MAAM,EAC3B,KAAK,cAAcA,CAAI,EAEvB,KAAK,WAAWA,CAAI,EAEb0D,IAAU,QAAaA,IAAU,IAC1C,KAAK,WAAW,IAAI,KAAK,CAACA,CAAK,EAAG,CAChC,KAAM,YACd,CAAO,CAAC,CAEN,CACA,WAAW1D,EAAM,CACf,IAAI+B,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAChFjmD,GAAI,KAAK,2BAA2B,OAAOkkD,aAAgB,KAAOA,EAAK,KAAO,gBAAiB,GAAG,EAAE,OAAO+B,EAAQ,GAAK/B,EAAK,KAAM,QAAQ,CAAC,EAC5I,GAAI,CACF,QAAAjJ,EACA,SAAAh8B,EACA,aAAAmpC,CACN,EAAQ,KAAK,MACL,CACF,UAAAP,EACA,kBAAAM,EACA,KAAAzgD,CACN,EAAQ,KAAK,MACLw/C,EAAkBI,GAAU,CAE1BA,EAAO,SAAW,EACpBrM,EAAQ,oBAAoBqM,EAAO,CAAC,EAAGO,CAAS,EAAE,KAAK,IAAM,KAAK,UAAS,CAAE,EAAE,MAAMxvD,GAAK,KAAK,YAAYA,CAAC,CAAC,EAE7G4iD,EAAQ,YAAYqM,CAAM,EAAE,KAAK/E,GAAS,CACxCtH,EAAQ,oBAAoBsH,EAAOsF,CAAS,EAAE,KAAK,IAAM,KAAK,UAAS,CAAE,EAAE,MAAMxvD,GAAK,KAAK,YAAYA,CAAC,CAAC,EACzGivD,EAAO,QAAQ9uD,GAAKA,EAAE,MAAK,CAAE,CAC/B,CAAC,EAAE,MAAMH,GAAK,KAAK,YAAYA,CAAC,CAAC,CAErC,EACIguD,EAAS,IAAIQ,GAAU,CACzB,gBAAiBK,EACjB,QAAAjM,EACA,KAAAiJ,EACA,KAAMuD,GAAW,MAAM//C,CAAI,EAC3B,YAAaygD,EACb,WAAY,KAAK,eACjB,QAAS,KAAK,YACd,SAAAlpC,EACA,MAAAgnC,CACN,CAAK,EACDI,EAAO,MAAK,EACZ,KAAK,SAAS,CACZ,aAAc,GACd,OAAAA,CACN,CAAK,EAED+B,EAAa,EAAI,CACnB,CACA,cAAcC,EAAS,CACrB,GAAI,CACF,SAAAvD,EACA,MAAAwD,CACN,EAAQ,KAAK,MACT,GAAIA,GAAS,KAAM,CACjB,KAAK,YAAY,IAAI,MAAM,qCAAqC,CAAC,EACjE,MACF,CACAA,EAAMD,CAAO,EAAE,KAAKtE,GAAS,CAG3B,QAFIwE,EAAW,GAEN9vD,EAAI,EAAGA,EAAIsrD,EAAM,OAAQtrD,GAAK,EAAG,CACxC,IAAI+vD,EAAIzE,EAAMtrD,CAAC,EACf,GAAIyqD,GAAW,iBAAiBsF,EAAE,IAAI,EAAG,CACvC1D,EAAS,WAAW,OAAO0D,EAAE,KAAM,eAAe,EAAE,OAAOH,EAAQ,IAAI,CAAC,EACxEE,EAAW,GACX,KAAK,WAAWC,EAAG,EAAI,EACvB,KACF,CACF,CACA,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,wBAAwB,OAAOF,EAAQ,IAAI,CAAC,CAEhE,CAAC,EAAE,MAAMhwD,GAAK,KAAK,YAAYA,CAAC,CAAC,CACnC,CACA,eAAeowD,EAAe,CAC5B,GAAI,CACF,aAAAC,CACN,EAAQ,KAAK,MACT,OAAIA,GACF,KAAK,SAAS,CACZ,cAAAD,CACR,CAAO,EAGI,CAACC,CACV,CAGA,wBAAyB,CACvB,GAAI,CACF,aAAAN,CACN,EAAQ,KAAK,MACL,CACF,OAAA/B,CACN,EAAQ,KAAK,MACLA,GACFA,EAAO,OAAM,EAEf,KAAK,SAAS,CACZ,aAAc,GACd,cAAe,CACrB,CAAK,EACD+B,EAAa,EAAK,CACpB,CACA,WAAY,CACV,GAAI,CACF,YAAAO,EACA,QAAAT,CACN,EAAQ,KAAK,MACL,CACF,UAAAL,CACN,EAAQ,KAAK,MACTc,EAAYd,CAAS,EACrBK,EAAO,CACT,CACA,sBAAsBU,EAAkB,CACtC,KAAK,SAAS,CACZ,KAAMA,CACZ,CAAK,CACH,CACA,QAAS,CACP,GAAI,CACF,KAAA1E,EACA,MAAA0D,CACN,EAAQ,KAAK,MACL,CACF,UAAAC,EACA,kBAAAM,EACA,aAAAO,EACA,cAAAD,EACA,KAAA/gD,CACN,EAAQ,KAAK,MAELmhD,EAAgB,EAAQjB,GAAU,CAACC,EACvC,OAAoB1jD,OAAM,MAAO,CAC/B,UAAW,gBACX,SAAU,CAAC,CAACukD,GAA6BvkD,OAAM,OAAQ,CACrD,SAAU,KAAK,aACf,UAAW,sCACX,SAAU,CAAcA,OAAM,MAAO,CACnC,UAAW,aACX,SAAU,CAAcJ,MAAK,QAAS,CACpC,QAAS,iBACT,SAAU,YACtB,CAAW,EAAgBA,MAAK,QAAS,CAC7B,IAAK,KAAK,SACV,GAAI,iBACJ,KAAM,OACN,UAAWG,EAAW,eAAgB,CACpC,aAAc2kD,CAC5B,CAAa,EACD,MAAOhB,EACP,SAAU,KAAK,eAC3B,CAAW,CAAC,CACZ,CAAS,EAAgB1jD,OAAM,MAAO,CAC5B,UAAW,aACX,SAAU,CAAcJ,MAAK,QAAS,CACpC,QAAS,eACT,SAAU,aACtB,CAAW,EAAgBA,MAAKyU,GAAQ,CAC5B,GAAI,eACJ,UAAW,gBACX,MAAO9Q,EACP,SAAU,KAAK,sBACf,SAAUggD,EACtB,CAAW,CAAC,CACZ,CAAS,EAAgB3jD,MAAK+K,GAAU,CAC9B,UAAW,kBACX,QAASq5C,EACT,SAAU,KAAK,sBACf,SAAU,6BACpB,CAAS,EAAgBhkD,OAAM,MAAO,CAC5B,UAAW,+BACX,SAAU,CAAcJ,MAAKyD,GAAQ,CACnC,KAAM,YACN,QAAS,KAAK,aACd,SAAU,QACtB,CAAW,EAAgBzD,MAAKyD,GAAQ,CAC5B,KAAM,UACN,KAAM,SACN,SAAU,EAAE08C,IAAS,MAAQ0D,IAAU,QAAaA,IAAU,KAAO,CAACC,EACtE,SAAU,QACtB,CAAW,CAAC,CACZ,CAAS,CAAC,CACV,CAAO,EAAGa,GAA6BvkD,OAAM,MAAO,CAC5C,UAAW,yBACX,SAAU,CAAcJ,MAAK,QAAS,CACpC,SAAU,iBACpB,CAAS,EAAgBA,MAAK,MAAO,CAC3B,UAAW,WACX,SAAuBA,MAAK,MAAO,CACjC,UAAW,0BACX,MAAO,CACL,MAAO,GAAG,OAAO0kD,EAAe,GAAG,CACjD,EACY,gBAAiBA,EACjB,gBAAiB,EACjB,gBAAiB,GAC7B,CAAW,CACX,CAAS,EAAgBtkD,OAAM,QAAS,CAC9B,SAAU,CAACskD,EAAe,GAAG,CACvC,CAAS,EAAgB1kD,MAAKyD,GAAQ,CAC5B,KAAM,UACN,QAAS,KAAK,uBACd,SAAU,QACpB,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACApP,GAAgBuvD,GAAa,eAAgB,CAC3C,KAAM,KACN,MAAO,KACP,MAAO,IACT,CAAC,ECtWD,SAAS5uD,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAQhU,IAAIwvD,GAAiB,CACnB,UAAW,YACb,EACA,SAASC,GAAiBtjD,EAAM,CAC9B,GAAI,CACF,SAAA7B,EACA,GAAAua,EACA,QAAA88B,EACA,gBAAA+N,CACJ,EAAMvjD,EACA,CAACwjD,EAAqBC,CAAsB,EAAIjjD,WAAS,CAAC,EAC1DkjD,EAAuB3oD,cAAyB,UAAY,CAC9D,IAAImU,EAAQtb,GAAkB,UAAWsL,EAAO,CAC9CukD,EAAuBE,GAASA,EAAQ,CAAC,EACzC,GAAI,CACF,GAAI,CACF,OAAA/uD,CACV,EAAYsK,EAAM,OACV,MAAMtK,CACR,MAAgB,CAEhB,CACA6uD,EAAuBE,GAASA,EAAQ,CAAC,CAC3C,CAAC,EACD,OAAO,SAAU3vD,EAAI,CACnB,OAAOkb,EAAM,MAAM,KAAM,SAAS,CACpC,CACF,EAAC,EAAI,EAAE,EACP5U,YAAU,UAA0B,CAClC,OAAOk7C,EAAQ,iBAAiB98B,EAAG,WAAW,qBAAsBgrC,CAAoB,CAC1F,EAAG,CAAChrC,EAAIgrC,EAAsBlO,CAAO,CAAC,EACtC,IAAIoO,EAAkB,KAClBC,EAAc,KACdL,EAAsB,GAExBI,EAAkB,8BAClBC,EAAc,mBAGdD,EAAkB,2BAClBC,EAAc,kBAEhB,IAAIC,EAAaP,GAAmB,OAAS,CAAC,MAAM,QAAQA,CAAe,GAAKA,EAAgB,OAAS,GACzG,OAAoB7kD,OAAM,MAAO,CAC/B,UAAW,0BACX,SAAU,CAAcA,OAAM,MAAO,CACnC,SAAU,CAAcJ,MAAK,MAAO,CAClC,UAAWG,EAAW,sBAAuBmlD,CAAe,CACpE,CAAO,EAAgBtlD,MAAKS,GAAS,CAC7B,SAAU8kD,CAClB,CAAO,CAAC,CACR,CAAK,EAAG1lD,EAAU2lD,GAA2BxlD,MAAKyD,GAAQ,CACpD,KAAM,QACN,KAAMgiD,GACN,QAAS,kBACT,aAAc,kBAGd,QAAS5xD,GACT,SAAuBmM,MAAK4M,GAAc,CACxC,QAASq4C,EACT,cAAeF,EACvB,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CClEA,IAAIW,GAAqB,IACzB,SAASC,GAAmBjkD,EAAM,CAChC,GAAI,CACF,WAAA+xC,EACA,QAAAmS,CACJ,EAAMlkD,EACA,CAACk2C,EAAYiO,CAAa,EAAI3jD,WAAS,EAAE,EACzC4jD,EAAY/pD,SAAO,IAAI,EACvBgqD,EAAc9oD,GAAqB,IAAM,CAC3C4oD,EAAc,EAAE,CAClB,EAAGH,EAAkB,EACjBM,EAAiBvpD,cAAY,IAAM,CACrC,IAAIwpD,EACJF,EAAY,OAAM,GACjBE,EAAqBH,EAAU,WAAa,MAAQG,IAAuB,QAAUA,EAAmB,OAAM,CACjH,EAAG,CAACF,CAAW,CAAC,EACZG,EAAkBzpD,cAAY,IAAM,CACtCspD,EAAW,CACb,EAAG,CAACA,CAAW,CAAC,EACZ9+C,EAAUzJ,UAAQ,IAAM,CAC1B,GAAIooD,EAAQ,SAAW,EACrB,MAAO,GAET,IAAIO,EAAgB,CAClB,YAA0BnmD,MAAK2O,GAAa,CAC1C,MAAOipC,EACP,SAAUtjD,GAAK,CACbuxD,EAAcvxD,EAAE,OAAO,KAAK,CAC9B,EACA,UAAW,eACX,IAAKwxD,CACb,CAAO,CACP,EACQM,EAAkBxO,EAAagO,EAAQ,OAAOh1C,GAAS,CACzD,GAAI,CACF,MAAAyQ,CACR,EAAUzQ,EACJ,OAAOyQ,GAAS,MAAQA,EAAM,YAAW,EAAG,SAASu2B,EAAW,aAAa,CAC/E,CAAC,EAAIgO,EACDS,EAAgBD,EAAgB,IAAI5S,IAAW,CACjD,MAAOA,EAAO,MACd,OAAQ,IAAM,CACZC,EAAWD,CAAM,CACnB,EACA,KAAmBxzC,MAAKmxC,GAAY,CAClC,KAAMqC,EAAO,IACrB,CAAO,CACP,EAAM,EACF,MAAO,CAAC2S,EAAe,GAAGE,CAAa,CACzC,EAAG,CAACT,EAAShO,EAAYnE,CAAU,CAAC,EACpC,OAAoBzzC,MAAKyD,GAAQ,CAC/B,aAAc,UACd,KAAM,QACN,SAAUmiD,EAAQ,SAAW,EAG7B,QAAS/xD,GACT,QAAS+xD,EAAQ,SAAW,EAAI,uBAAyB,UACzD,KAAmBxlD,OAAM,MAAO,CAC9B,UAAW,kBACX,SAAU,CAAcJ,MAAK8E,GAAiB,CAC5C,KAAMusC,GACN,KAAMgC,GACN,UAAW,gBACnB,CAAO,EAAgBrzC,MAAK8E,GAAiB,CACrC,KAAMuuC,GACN,UAAW,gBACnB,CAAO,CAAC,CACR,CAAK,EACD,SAAuBrzC,MAAK4M,GAAc,CACxC,QAAS3F,EACT,aAAc++C,EACd,aAAcE,EACd,QAAS,CACP,qBAAsB,CAC9B,EACM,cAAe,CACb,UAAW,YACnB,CACA,CAAK,CACL,CAAG,CACH,CCzFA,SAAS5nD,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAsBvT,IAAIwH,GAAMC,EAAI,OAAO,SAAS,EAC1BoqD,GAAmB,CACrB,0BAA2B,GAC3B,qBAAsB,GACtB,iCAAkC,EACpC,EACA,SAASC,IAAsB,CAC7B,MAAO,EACT,CACA,SAASC,GAAmB7iD,EAAM,CAEhC,OAAoB3D,MAAK8C,WAAW,EAAE,CACxC,CACO,MAAM2jD,WAAgB16C,eAAc,CAMzC,OAAO,aAAa26C,EAAU,CAC5B,OAAOA,IAAazR,GAAS,QAAUyR,IAAazR,GAAS,OAASyR,IAAazR,GAAS,KAC9F,CAOA,OAAO,cAAcyR,EAAU,CAG7B,OAAOA,IAAazR,GAAS,QAAUwR,GAAQ,aAAaC,CAAQ,CACtE,CACA,YAAY/nD,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,eAAgB,MAAM,EAC5CA,GAAgB,KAAM,2BAA4B,MAAM,EACxDA,GAAgB,KAAM,wBAAyB,MAAM,EACrDA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,oBAAqB,MAAM,EACjDA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,yBAA0B4J,GAAS,IAAM,CAC7D,KAAK,SAASmO,GAAS,CACrBnQ,GAAI,OAAO,yBAA0B,KAAK,kBAAkB,OAAQ,QAAQ,EAC5E,GAAI,CACF,eAAA0qD,CACV,EAAYv6C,EACJ,OAAAu6C,EAAiBA,EAAe,OAAO,KAAK,iBAAiB,EAC7D,KAAK,kBAAoB,GAClB,CACL,eAAAA,CACV,CACM,CAAC,CACH,EAAGF,GAAQ,YAAY,CAAC,EACxBpyD,GAAgB,KAAM,aAAc0c,GAAQ61C,GAAa,MAAM,KAAKA,EAAU,OAAM,CAAE,CAAC,CAAC,EACxFvyD,GAAgB,KAAM,oBAAqB0c,GAAQ9J,GAAW,CAAC,GAAGA,EAAS,CACzE,OAAQ,KAAK,oBACb,SAAU+tC,GAAU,QAAQ,KAClC,EAAO,CACD,OAAQ,KAAK,mBACb,SAAUA,GAAU,QAAQ,aAClC,CAAK,CAAC,CAAC,EACH,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,6BAA+B,KAAK,6BAA6B,KAAK,IAAI,EAC/E,KAAK,oCAAsC,KAAK,oCAAoC,KAAK,IAAI,EAC7F,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,IAAI,EACrE,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,YAA2Bp2C,EAAM,UAAS,EAC/C,KAAK,aAA4BA,EAAM,UAAS,EAChD,KAAK,yBAAwCA,EAAM,UAAS,EAC5D,KAAK,sBAAqCA,EAAM,UAAS,EACzD,KAAK,QAAU,IAAI1F,GACnB,KAAK,kBAAoB,GACzB,KAAK,eAAiB,IAAI,OAAO,eAAe,KAAK,mBAAmB,EACxE,GAAI,CACF,UAAW2tD,EACX,SAAA3vC,CACN,EAAQ,KAAK,MACT,KAAK,MAAQ3Y,GAAcA,GAAc,CAEvC,eAAgB,GAEhB,cAAe,EACf,wBAAyB,GAEzB,iBAAkB,IAAI,IAEtB,UAAW,IAAI,IAAIsoD,CAAU,EAC7B,eAAgB,GAChB,QAAS,KACT,SAAU,KACV,UAAW,KACX,oBAAqB,GACrB,gBAAiB,EACvB,EAAOP,EAAgB,EAAGpvC,CAAQ,CAChC,CACA,mBAAoB,CAClB,KAAK,mBAAkB,EACvB,GAAI,CACF,GAAAkD,EACA,QAAA88B,CACN,EAAQ,KAAK,MACTA,EAAQ,iBAAiB98B,EAAG,WAAW,qBAAsB,KAAK,oBAAoB,EACtF,KAAK,iBAAgB,EACjB,KAAK,yBAAyB,SAAW,KAAK,sBAAsB,UACtE,KAAK,eAAe,QAAQ,KAAK,yBAAyB,OAAO,EACjE,KAAK,eAAe,QAAQ,KAAK,sBAAsB,OAAO,EAElE,CACA,mBAAmBtb,EAAW4B,EAAW,CACvC,GAAI,CACF,MAAA/B,EACA,MAAAyN,CACN,EAAQ,KACJ,KAAK,mBAAmB1L,EAAW0L,CAAK,EACpCzN,EAAM,YAAcG,EAAU,WAChC,KAAK,gBAAe,EAElBsN,EAAM,iBAAmB,CAAC,KAAK,WAAU,GAC3C,KAAK,6BAA4B,CAErC,CACA,sBAAuB,CACrB,GAAI,CACF,GAAAgO,EACA,QAAA88B,CACN,EAAQ,KAAK,MACTA,EAAQ,oBAAoB98B,EAAG,WAAW,qBAAsB,KAAK,oBAAoB,EACzF,KAAK,QAAQ,OAAM,EACnB,KAAK,uBAAuB,OAAM,EAClC,KAAK,qBAAoB,EACzB,KAAK,eAAe,WAAU,CAChC,CACA,oBAAqB,CACnB,GAAI,CACF,QAAA88B,CACN,EAAQ,KAAK,MACT,KAAK,eAAiBA,EAAQ,aAAa,KAAK,gBAAgB,CAClE,CACA,sBAAuB,CACjB,KAAK,gBAAkB,OACzB,KAAK,eAAc,EACnB,KAAK,eAAiB,OAE1B,CACA,YAAa,CACX,GAAI,KAAK,yBAAyB,SAAW,KAC3C,MAAO,GAET,GAAI,CACF,aAAAnd,EACA,aAAA+sB,EACA,UAAAC,CACN,EAAQ,KAAK,yBAAyB,QAClC,OAAO,KAAK,IAAIhtB,EAAe+sB,EAAeC,CAAS,GAAK,CAC9D,CACA,oBAAoBnmD,EAAO,CACzB,IAAIomD,EACJpmD,EAAM,eAAc,EACpBA,EAAM,gBAAe,GACpBomD,EAAwB,KAAK,aAAa,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,CACjI,CACA,qBAAqBpmD,EAAO,CAC1B,GAAI,CACF,KAAAo2C,EACA,OAAA1gD,CACN,EAAQsK,EAAM,OACNqmD,EAAgB,KAAK,QAAQ,IAAI3wD,CAAM,EACvC4wD,EAAc,CAChB,QAASlQ,EACT,gBAAiB,GACjB,UAAW,KAAK,IAAG,EACnB,aAAc,IAAM,CAClB1gD,EAAO,OAAM,CACf,EACA,cAAA2wD,CACN,EACQ,CACF,sBAAA3I,EACA,SAAA9M,EACA,MAAA+M,CACN,EAAQ,KAAK,MACL4I,EAAuB7I,EAAsB,QAAQ9M,EAAU+M,EAAOvH,EAAM,CAC9E,QAASA,EACT,UAAW,IAAI,KAAI,EAAG,OAAM,CAClC,CAAK,EACDmQ,EAAqB,MAAMxwD,GAAO,CAChCsF,GAAI,MAAM,8BAA+BtF,CAAG,CAC9C,CAAC,EACD,KAAK,SAASyV,IAAU,CACtB,eAAgBA,EAAM,eAAe,OAAO86C,CAAW,CAC7D,GAAQ,IAAM,CACR,KAAK,6BAA4B,CACnC,CAAC,EACDD,EAAc,KAAKxuD,GAAY,CAC7B,KAAK,oBAAoBA,EAAUyuD,EAAaC,CAAoB,CACtE,CAAC,EAAE,MAAMrxD,GAAS,CAChB,KAAK,mBAAmBA,EAAOoxD,EAAaC,CAAoB,CAClE,CAAC,CACH,CACA,oBAAoB7wD,EAAQ4wD,EAAaC,EAAsB,CAC7D,IAAIC,EAAiB7oD,GAAcA,GAAc,GAAI2oD,CAAW,EAAG,GAAI,CACrE,cAAe,OACf,aAAc,OACd,OAAQ5wD,GAAgD4wD,EAAY,MAC1E,CAAK,EACD,KAAK,SAASxlD,GAAQ,CACpB,GAAI,CACF,eAAAilD,CACR,EAAUjlD,EACAmO,EAAY82C,EAAe,YAAYO,CAAW,EACtD,GAAIr3C,EAAY,EACd5T,UAAI,MAAM,yCAAyC,EAC5C,KAET,IAAIorD,EAAaV,EAAe,OAAM,EACtC,OAAAU,EAAWx3C,CAAS,EAAIu3C,EACjB,CACL,eAAgBC,CACxB,CACI,CAAC,EACI/wD,IAGL,KAAK,6BAA4B,EACjC,KAAK,cAAcA,EAAQ8wD,CAAc,EACzC,KAAK,mBAAmBA,CAAc,EACtC,KAAK,2BAA2B,CAC9B,MAAO9wD,EAAO,KACpB,EAAO6wD,CAAoB,EACvB,KAAK,kBAAkB7wD,EAAO,OAAO,EACrC,KAAK,iBAAiBA,EAAO,OAAO,EACtC,CACA,mBAAmBR,EAAOoxD,EAAaC,EAAsB,CAC3D,GAAI9uD,GAAa,WAAWvC,CAAK,EAAG,CAClCmG,GAAI,MAAM,yDAAyD,EACnE,MACF,CACA,KAAK,2BAA2B,CAC9B,MAAO,GAAG,OAAOnG,CAAK,CAC5B,EAAOqxD,CAAoB,EACvB,KAAK,SAAS/6C,GAAS,CACrB,IAAIk7C,EAAUl7C,EAAM,eAAe,OAAM,EACrCzS,EAAQ2tD,EAAQ,YAAYJ,CAAW,EACvCE,EAAiB7oD,GAAc,GAAI2oD,CAAW,EAClD,OAAAE,EAAe,cAAgB,OAC/BA,EAAe,aAAe,OAC9BA,EAAe,QAAU,KAAK,IAAG,EACjCA,EAAe,OAAS,CACtB,MAAAtxD,CACR,EACMwxD,EAAQ3tD,CAAK,EAAIytD,EACV,CACL,eAAgBE,CACxB,CACI,CAAC,CACH,CACA,mBAAmB1mD,EAAO,CACxBA,EAAM,eAAc,EACpBA,EAAM,gBAAe,EACrB,GAAI,CACF,oBAAA2mD,CACN,EAAQ,KAAK,MACTA,EAAmB,CACrB,CACA,iBAAiBhuD,EAAS,CACxB,GAAI,CACF,qBAAAiuD,CACN,EAAQ,KAAK,MACJA,GAGDf,GAAQ,cAAcltD,EAAQ,QAAQ,GACxC,KAAK,gBAAgBA,EAAQ,QAASA,EAAQ,QAAQ,CAE1D,CACA,gBAAgBA,EAASmtD,EAAU,CACjC,IAAIpwD,EAAS,GACTmwD,GAAQ,aAAaC,CAAQ,EAC/BpwD,EAAO,MAAQiD,EAEfjD,EAAO,QAAUiD,EAEnB,IAAI2tD,EAAc,CAChB,QAAS,OACT,OAAA5wD,CACN,EACI,KAAK,kBAAkB,KAAK4wD,CAAW,EACvC,KAAK,uBAAsB,CAC7B,CACA,iBAAiBlT,EAAS,CACxB/3C,GAAI,MAAM,mBAAoB+3C,CAAO,EACrC,GAAI,CACF,0BAAAyT,CACN,EAAQ,KAAK,MACT,GAAIzT,GAAW,KAGf,IAAI,CACF,WAAAP,CACN,EAAQ,KAAK,MACT,CAAC,GAAGO,EAAQ,QAAS,GAAGA,EAAQ,OAAO,EAAE,QAAQR,GAAUC,EAAWD,EAAQiU,IAA8BjU,EAAO,QAAU,QAAa,CAACA,EAAO,MAAM,WAAW,GAAG,EAAE,CAAC,EAC3K,CACA,kBAAkBQ,EAAS,CACzB,GAAI,EAAAA,GAAW,MAAQA,EAAQ,SAAW,MAAQA,EAAQ,QAAQ,SAAW,GAG7E,IAAI,CACF,YAAA0T,CACN,EAAQ,KAAK,MACL,CACF,QAAAC,CACN,EAAQ3T,EACJ2T,EAAQ,QAAQnU,GAAUkU,EAAYlU,CAAM,CAAC,EAC/C,CACA,cAAcl9C,EAAQsxD,EAAkB,CACtC,IAAIV,EAAcU,EACdtxD,GAAU,MAAQA,EAAO,SAAW,MAAQ4wD,GAAe,OAG/DA,EAAY,QAAU,KAAK,IAAG,EAG9B,KAAK,SAAS96C,GAAS,CACrB,IAAIu6C,EAAiBv6C,EAAM,eAAe,OAAM,EAChD,MAAO,CACL,eAAAu6C,CACR,CACI,CAAC,EACH,CACA,mBAAmBO,EAAa,CAC9B,IAAIlT,EAIJ,GAHIkT,EAAY,SACdlT,EAAUkT,EAAY,OAAO,SAE3B,CAAClT,IAAYA,EAAQ,SAAW,MAAQA,EAAQ,QAAQ,SAAW,KAAOA,EAAQ,SAAW,MAAQA,EAAQ,QAAQ,SAAW,KAAOA,EAAQ,SAAW,MAAQA,EAAQ,QAAQ,SAAW,GAAI,CACnM/3C,GAAI,OAAO,+BAA+B,EAC1C,MACF,CACA,KAAK,SAASmQ,GAAS,CACrB,IAAIy7C,EAAUC,EAAWC,EACrB,CACF,eAAApB,CACR,EAAUv6C,EACAyD,EAAY82C,EAAe,YAAYO,CAAW,EACtD,GAAIr3C,EAAY,EACd5T,UAAI,MAAM,+CAA+C,EAClD,KAET,IAAI+rD,EAAmB,IAAI,IAAI57C,EAAM,gBAAgB,EACjDw6C,EAAY,IAAI,IAAIx6C,EAAM,SAAS,EACnC67C,EAAmB,SAA0BzU,EAAQ,CACvD,IAAI0U,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAChF,CACF,MAAA7mC,CACV,EAAYmyB,EACJvR,EAAc5gB,CAAK,EACnB,IAAI8mC,EAAWH,EAAiB,IAAI3mC,CAAK,EAIzC,GAAI8mC,GAAY,MAAQA,GAAY,EAAG,CACrC,IAAIC,EAEAzB,IAAmBv6C,EAAM,iBAE3Bu6C,EAAiBA,EAAe,OAAM,GAExC,IAAIS,EAAiB7oD,GAAcA,GAAc,GAAIooD,EAAewB,CAAQ,CAAC,EAAG,GAAI,CAClF,gBAAiB,CAAC,IAAKC,EAAwBzB,EAAewB,CAAQ,EAAE,mBAAqB,MAAQC,IAA0B,OAASA,EAAwB,GAAK/mC,CAAK,CACtL,CAAW,EACDslC,EAAewB,CAAQ,EAAIf,CAC7B,CACAY,EAAiB,IAAI3mC,EAAOxR,CAAS,EACjCq4C,EACFtB,EAAU,OAAOvlC,CAAK,EAEtBulC,EAAU,IAAIvlC,EAAOmyB,CAAM,CAE/B,EACA,OAACqU,EAAW7T,KAAa,MAAQ6T,IAAa,QAAUA,EAAS,QAAQ,QAAQrU,GAAUyU,EAAiBzU,CAAM,CAAC,GAClHsU,EAAY9T,KAAa,MAAQ8T,IAAc,QAAUA,EAAU,QAAQ,QAAQtU,GAAUyU,EAAiBzU,EAAQ,EAAI,CAAC,GAI3HuU,EAAY/T,KAAa,MAAQ+T,IAAc,QAAUA,EAAU,QAAQ,QAAQvU,GAAU,CAC5F,GAAI,CACF,MAAAnyB,CACV,EAAYmyB,EACJvR,EAAc5gB,CAAK,EACnB2mC,EAAiB,IAAI3mC,EAAOxR,CAAS,EACrC+2C,EAAU,IAAIvlC,EAAOmyB,CAAM,CAC7B,CAAC,EACM,CACL,iBAAAwU,EACA,UAAApB,EACA,eAAAD,CACR,CACI,CAAC,CACH,CACA,iBAAkB,CAChB,GAAI,CACF,UAAAC,CACN,EAAQ,KAAK,MACT,KAAK,SAAS,CACZ,UAAAA,CACN,CAAK,CACH,CAOA,2BAA2BtwD,EAAQ6wD,EAAsB,CACvD,IAAI7uD,EAAU,KAAK,QAAQ,IAAI6uD,CAAoB,EAC/CkB,EAAU,IAAI,KAAI,EAAG,OAAM,EAC/B/vD,EAAQ,KAAKgwD,GAAiB,CAC5B,IAAIC,EAAchqD,GAAcA,GAAc,GAAI+pD,CAAa,EAAG,GAAI,CACpE,KAAM/pD,GAAcA,GAAc,GAAI+pD,EAAc,IAAI,EAAG,GAAI,CAC7D,QAAAD,EACA,OAAA/xD,CACV,CAAS,CACT,CAAO,EACG,CACF,sBAAAgoD,EACA,SAAA9M,CACR,EAAU,KAAK,MACT8M,EAAsB,WAAW9M,EAAU+W,CAAW,EAAE,MAAM5xD,GAAO,CACnEsF,GAAI,KAAK,yCAA0CtF,CAAG,CACxD,CAAC,CACH,CAAC,EAAE,MAAMA,GAAO,CACdsF,GAAI,MAAM,wCAAyCtF,CAAG,CACxD,CAAC,CACH,CACA,8BAA+B,CAC7B,IAAI6xD,EAAO,KAAK,yBAAyB,QACrCA,GAAQ,MAGZ,OAAO,sBAAsB,IAAM,CACjCA,EAAK,SAAS,CACZ,IAAKA,EAAK,aACV,SAAU,SAClB,CAAO,CACH,CAAC,CACH,CACA,uBAAuB5nD,EAAO,CAC5B3E,GAAI,MAAM,yBAA0B2E,CAAK,EACzC,IAAI6nD,EAAa,KAAK,yBAAyB,QAC/CxmB,EAAcwmB,CAAU,EACxB,KAAK,SAAS,CACZ,wBAAyBA,EAAW,UAAY,GAAKA,EAAW,aAAeA,EAAW,aAC1F,gBAAiB,KAAK,WAAU,CACtC,CAAK,CACH,CACA,oBAAoBC,EAAS,CAC3BzsD,GAAI,MAAM,sBAAuBysD,CAAO,EACxC,IAAIvrC,EAAQurC,EAAQ,CAAC,EACrB,GAAIvrC,EAAM,YAAY,OAAS,GAAKA,EAAM,YAAY,MAAQ,EAAG,CAC/D,GAAI,CACF,gBAAA5L,CACR,EAAU,KAAK,MACLA,GAAmB,CAAC,KAAK,cAC3B,KAAK,6BAA4B,CAErC,CACF,CACA,8BAA+B,CAC7B,KAAK,SAASnF,IAAU,CACtB,0BAA2B,CAACA,EAAM,yBACxC,EAAM,CACJ,CACA,qCAAsC,CACpC,KAAK,SAASA,IAAU,CACtB,iCAAkC,CAACA,EAAM,gCAC/C,EAAM,CACJ,CACA,yBAA0B,CACxB,KAAK,SAASA,IAAU,CACtB,qBAAsB,CAACA,EAAM,oBACnC,EAAM,CACJ,CACA,iBAAkB,CAChB,KAAK,SAAS,CACZ,eAAgB,GAChB,UAAW,KACX,oBAAqB,EAC3B,CAAK,CACH,CACA,eAAgB,CACd,KAAK,SAAS,CACZ,eAAgB,GAChB,QAAS,KACT,SAAU,KACV,UAAW,KACX,oBAAqB,EAC3B,CAAK,CACH,CACA,uBAAwB,CACtB,KAAK,SAAS,CACZ,QAAS,KACT,SAAU,IAChB,CAAK,CACH,CACA,oBAAoB+zC,EAAM,CACxB,KAAK,SAAS,CACZ,QAASA,EACT,SAAU,IAChB,CAAK,CACH,CACA,eAAepsD,EAAO,CACpB,KAAK,SAAS,CACZ,QAAS,KACT,SAAUA,CAChB,CAAK,CACH,CACA,gBAAgB,EAAG,CACjB,GAAI,IAAE,cAAgB,MAAQ,EAAE,aAAa,OAAS,MAAQ,EAAE,aAAa,MAAM,SAAW,GAAK,EAAE,aAAa,MAAM,CAAC,EAAE,OAAS,UAGpI,GAAE,eAAc,EAChB,EAAE,gBAAe,EACjB,KAAK,SAAS,CACZ,eAAgB,EACtB,CAAK,EACD,GAAI,CACF,MAAAoG,CACN,EAAQ,EAAE,aACN,GAAIA,EAAM,OAAS,EAAG,CACpB,KAAK,SAAS,CACZ,UAAWglD,GAAW,mBAC9B,CAAO,EACD,MACF,CACA,IAAIhmD,EAAOgB,EAAM,CAAC,EACdglD,GAAW,gBAAgBhmD,CAAI,EACjC,KAAK,SAAS,CACZ,UAAW,IACnB,CAAO,EAED,KAAK,SAAS,CACZ,UAAWgmD,GAAW,eAC9B,CAAO,EAEL,CACA,gBAAgB,EAAG,CAEb,EAAE,eAAiB,MAAQ,EAAE,yBAAyB,SAAW,EAAE,yBAAyB,SAAW,EAAE,cAAc,SAAS,EAAE,aAAa,IAGnJ,EAAE,eAAc,EAChB,EAAE,gBAAe,EACjB,KAAK,SAAS,CACZ,eAAgB,GAChB,UAAW,IACjB,CAAK,EACH,CACA,sBAAuB,CACrB,KAAK,SAAS,CACZ,UAAW,IACjB,CAAK,CACH,CACA,mBAAmB99B,EAAO,CACxB,GAAI,CACF,GAAAjH,EACA,WAAAq5B,EACA,sBAAA6K,EACA,SAAA9M,EACA,MAAA+M,CACN,EAAQ,KAAK,MACL,CACF,eAAAoI,EACA,UAAAC,CACN,EAAQ,KAAK,MACLpT,EAAS,CACX,KAAMnyB,EACN,MAAAA,EACA,KAAMjH,EAAG,aAAa,KAC5B,EACQuuC,EAAmB/B,EAAU,IAAIvlC,CAAK,EACtC6lC,EAAc,CAChB,UAAW,KAAK,IAAG,EACnB,QAAS,KAAK,IAAG,EACjB,gBAAiB,GACjB,OAAQ,CACN,QAAS,CACP,QAAS,GACT,QAAS,GACT,QAAS,GACT,CAACyB,EAAmB,UAAY,SAAS,EAAG,CAACnV,CAAM,CAC7D,CACA,CACA,EACQ8T,EAAUX,EAAe,OAAOO,CAAW,EAC/C,KAAK,SAAS,CACZ,eAAgBI,CACtB,CAAK,EACD,KAAK,6BAA4B,EACjC,KAAK,mBAAmBJ,CAAW,EACnCzT,EAAW,CACT,KAAMpyB,EACN,KAAMjH,EAAG,aAAa,KAC5B,CAAK,EACDkkC,EAAsB,QAAQ9M,EAAU+M,EAAOl9B,EAAO,CACpD,QAASA,EACT,UAAW,IAAI,KAAI,EAAG,OAAM,EAC5B,QAAS,IAAI,KAAI,EAAG,OAAM,CAChC,CAAK,CACH,CACA,yBAAyB9nB,EAASzD,EAAO,CACvC,GAAI,CACF,eAAA6wD,CACN,EAAQ,KAAK,MACLO,EAAc,CAChB,UAAW,KAAK,IAAG,EACnB,QAAS,KAAK,IAAG,EACjB,OAAQ,CACN,QAAA3tD,EACA,MAAAzD,CACR,CACA,EACQwxD,EAAUX,EAAe,OAAOO,CAAW,EAC/C,KAAK,SAAS,CACZ,eAAgBI,CACtB,CAAK,CACH,CACA,gBAAgB/tD,EAAS,CACvB,KAAK,yBAAyBA,CAAO,CACvC,CACA,eAAezD,EAAO,CACpB,KAAK,yBAAyB,OAAWA,GAAS,KAAO,GAAG,OAAOA,CAAK,EAAI,MAAS,CACvF,CACA,oBAAoB8yD,EAAqB,CACvC,KAAK,SAAS,CACZ,oBAAAA,CACN,CAAK,CACH,CACA,uBAAwB,CACtB,GAAI,CACF,0BAAAnB,EACA,iCAAAoB,EACA,qBAAArB,CACN,EAAQ,KAAK,MACL,CACF,QAAAvgD,CACN,EAAQ,KAAK,MACT,MAAO,CAAC,GAAGA,EAAS,CAClB,MAAO,eACP,OAAQ,KAAK,wBACb,MAAOoB,GAAe,OAAO,KAC7B,KAAMm/C,EAAuBsB,GAAU,OACvC,MAAO,EACb,EAAO,CACD,MAAO,qBACP,OAAQ,KAAK,6BACb,MAAOzgD,GAAe,OAAO,KAC7B,KAAMo/C,EAA4BqB,GAAU,OAC5C,MAAO,EACb,EAAO,CACD,MAAO,6BACP,OAAQ,KAAK,oCACb,MAAOzgD,GAAe,OAAO,KAC7B,KAAMwgD,EAAmCC,GAAU,OACnD,MAAO,EACb,EAAO,CACD,MAAO,yBACP,OAAQ,KAAK,gBACb,MAAOzgD,GAAe,OAAO,KAAO,GACpC,MAAO,EACb,CAAK,CACH,CACA,oBAAoBw0C,EAAS,CAC3B,GAAIA,IAAY,SAAWA,IAAY,MACrC,KAAK,oBAAmB,UACfA,EAAQ,OAAS,EAAG,CAE7B,GAAI,CACF,QAAA3F,CACR,EAAU,KAAK,MACTA,EAAQ,QAAQ2F,CAAO,EAAE,MAAM/mD,GAAS,CACtCmG,GAAI,MAAM,4CAA6CnG,CAAK,CAC9D,CAAC,CACH,KAAO,CAEL,IAAIoxD,EAAc,CAChB,QAAS,IACT,OAAQ,GACR,UAAW,KAAK,IAAG,EACnB,QAAS,KAAK,IAAG,CACzB,EACM,KAAK,6BAA4B,EACjC,KAAK,SAAS96C,IAAU,CACtB,eAAgBA,EAAM,eAAe,OAAO86C,CAAW,CAC/D,EAAQ,CACJ,CACF,CACA,qBAAsB,CACpB,KAAK,QAAQ,OAAM,EACnB,KAAK,SAAS96C,GAAS,CAGrB,IAAI47C,EAAmB,IAAI,IAAI,CAAC,GAAG57C,EAAM,iBAAiB,MAAM,EAAE,IAAIvW,GAAQ,CAACA,EAAM,EAAE,CAAC,CAAC,EACzF,MAAO,CACL,eAAgB,GAChB,iBAAAmyD,CACR,CACI,CAAC,CACH,CACA,WAAWnL,EAAS,CAClB,IAAIV,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5EC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7E,KAAK,aAAa,UAGvB,KAAK,aAAa,QAAQ,eAAeS,EAASV,EAAOC,CAAO,EAC5DD,GACF,KAAK,6BAA4B,EAErC,CACA,OAAQ,CACN,IAAI4M,GACHA,EAAyB,KAAK,aAAa,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,MAAK,CACpI,CACA,mBAAmBroD,EAAW0L,EAAO,CAKnC,QAJIwN,EAAiB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACrFtM,EAAO,OAAO,KAAKg5C,EAAgB,EACnCpvC,EAAW,GACX8xC,EAAa,GACRt0D,EAAI,EAAGA,EAAI4Y,EAAK,OAAQ5Y,GAAK,EAAG,CACvC,IAAIyY,EAAMG,EAAK5Y,CAAC,EACZ,CACF,CAACyY,CAAG,EAAG87C,CACf,EAAU78C,EACA,CACF,CAACe,CAAG,EAAG+7C,CACf,EAAUxoD,EACAuoD,IAAYC,IACdF,EAAa,IAEf9xC,EAAS/J,CAAG,EAAI87C,CAClB,CACA,GAAI,EAAArvC,GAAkB,CAACovC,GAGvB,IAAI,CACF,iBAAAG,CACN,EAAQ,KAAK,MACTA,EAAiBjyC,CAAQ,EAC3B,CACA,kBAAmB,CACb,KAAK,YAAY,SACnB,KAAK,SAAS,CACZ,cAAe,KAAK,YAAY,QAAQ,YAChD,CAAO,EAEC,KAAK,aAAa,SACpB,KAAK,aAAa,QAAQ,iBAAgB,CAE9C,CACA,QAAS,CACP,GAAI,CACF,QAAAjQ,EACA,GAAAmT,EACA,gBAAAgvC,EACA,SAAA5X,EACA,kBAAA6X,EACA,WAAA5V,EACA,QAAAyD,EACA,MAAAqH,EACA,sBAAAD,EACA,SAAApjC,EACA,SAAApX,EACA,MAAAygD,EACA,aAAA7P,EACA,YAAAhB,EACA,gBAAA4V,CACN,EAAQ,KAAK,MACL,CACF,cAAAC,EACA,eAAA5C,EACA,wBAAA6C,EACA,UAAA5C,EACA,eAAA6C,EACA,QAAAC,EACA,SAAAC,EACA,UAAAzJ,EACA,oBAAA0I,CACN,EAAQ,KAAK,MACLgB,EAAqB,KAAK,WAAWhD,CAAS,EAC9CiD,EAAiB,KAAK,MAAMN,EAAgB,EAAG,EAC/CpgD,EAAiB,KAAK,kBAAkBlC,CAAO,EACnD,OAAoB7G,OAAM,MAAO,CAC/B,KAAM,eACN,UAAWD,EAAW,eAAgB,QAAS,QAAS,CACtD,SAAA2D,CACR,CAAO,EACD,SAAU,CAAc1D,OAAM,MAAO,CACnC,UAAW,eACX,IAAK,KAAK,YACV,SAAU,CAAcA,OAAM4kD,GAAkB,CAC9C,GAAI5qC,EACJ,QAAS88B,EACT,gBAAiB,KAAK,sBACtB,SAAU,CAACmS,EAAmBC,IAAoB,IAAqBtpD,MAAK2lD,GAAoB,CAC9F,WAAYlS,EACZ,QAASmW,CACrB,CAAW,CAAC,CACZ,CAAS,EAAgBxpD,OAAM,MAAO,CAC5B,UAAW,wBACX,WAAY++C,GAAW,eACvB,YAAa,KAAK,gBAClB,YAAa,KAAK,gBAClB,SAAU,CAACsK,GAA+BzpD,MAAKm/C,GAAY,CACzD,SAAU,KAAK,sBACf,aAAc,KAAK,oBACnB,QAAS,KAAK,eACd,eAAgB,KAAK,qBACrB,UAAWe,EACX,QAAS,KAAK,eACd,iBAAkB0I,EAClB,SAAUrE,GAAS,IAC/B,CAAW,EAAgBnkD,OAAM,MAAO,CAC5B,KAAM,eACN,UAAWD,EAAW,0BAA2B,CAC/C,oBAAqBqpD,CACnC,CAAa,EACD,SAAU,KAAK,uBACf,IAAK,KAAK,yBACV,SAAU,CAAcxpD,MAAKy0C,GAAgB,CAC3C,MAAOkS,EACP,WAAYlT,EACZ,SAAUjC,EACV,SAAU1tC,EACV,aAAc4wC,EACd,YAAahB,EACb,IAAK,KAAK,qBACxB,CAAa,EAAG0V,CAAe,CAC/B,CAAW,CAAC,CACZ,CAAS,EAAG,CAACK,GAA+BzpD,MAAKk8C,GAAc,CACrD,IAAK,KAAK,aACV,QAAShF,EACT,SAAU1F,EACV,MAAO+M,EACP,SAAU,KAAK,oBACf,UAAWsL,EACX,sBAAuBvL,CACjC,CAAS,EAAGmL,GAA+BzpD,MAAK4jD,GAAa,CACnD,QAAS1M,EACT,YAAa,KAAK,mBAClB,QAAS,KAAK,cACd,SAAU,KAAK,gBACf,QAAS,KAAK,eACd,KAAMwS,GAAmD,OACzD,MAAOC,GAAsD,OAC7D,aAAc,KAAK,oBACnB,SAAUzuC,EACV,MAAOqpC,CACjB,CAAS,CAAC,CACV,CAAO,EAAgBvkD,MAAKqI,GAAgB,CACpC,QAASc,EACT,iBAAkB,CAAC+yC,GAAa,gBAAgB,CACxD,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACA7nD,GAAgBoyD,GAAS,eAAgB,CACvC,kBAAmB,KACnB,SAAU,GACV,iBAAkB,OAClB,MAAO,KACP,QAAS,GACT,gBAAiB,KACjB,SAAU,mBACV,UAAW,IAAI,IACf,SAAU,GACV,MAAO,KACP,aAAcF,GACd,YAAaC,GACb,gBAAiB,EACnB,CAAC,EACDnyD,GAAgBoyD,GAAS,eAAgB,GAAG,ECh6B5C,SAASpyD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWvT,IAAIq1D,GAAqB,IACrBC,GAAsB,KACnB,MAAMC,WAAkCtrD,WAAU,CACvD,OAAO,cAAc65B,EAAW8vB,EAAS,CACvC,GAAI9vB,GAAa,MAAQ8vB,IAAY,IAAMA,IAAY,EACrD,OAAO,KAET,IAAI7vB,EAAY,KAAK,OAAO,IAAI,KAAK6vB,CAAO,EAAE,QAAO,EAAK,IAAI,KAAK9vB,CAAS,EAAE,QAAO,GAAM,GAAI,EAC/F,OAAIC,EAAY,EAAU,MACnBx9B,GAAU,kBAAkBw9B,CAAS,CAC9C,CACA,YAAY75B,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,QAAS,MAAM,EACrCA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,WAAYoJ,GAAS,IAAM,CAC/C,GAAI,CACF,sBAAA6gD,EACA,KAAAnlD,EACA,SAAAq4C,CACR,EAAU,KAAK,MACL,CACF,GAAAlmC,CACR,EAAUnS,EACJ,KAAK,QAAUmlD,EAAsB,WAAW9M,EAAUlmC,EAAI,KAAK,aAAc,KAAK,WAAW,CACnG,EAAGw+C,EAAkB,CAAC,EACtBz1D,GAAgB,KAAM,iBAAkB0c,GAAQlb,GAAQA,EAAK,MAAM;AAAA,EAAMk0D,EAAmB,EAAE,KAAK;AAAA,CAAI,EAAG,CACxG,IAAK,CACX,CAAK,CAAC,EACF,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,MAAQ,CACX,YAAa,KAAK,IAAG,CAC3B,CACE,CACA,mBAAoB,CAClB,KAAK,SAAQ,CACf,CACA,mBAAmBjrD,EAAW4B,EAAW,CACvC,IAAIupD,EACA,CACF,KAAAjxC,CACN,EAAQ,KAAK,MACL,KAAK,OAAS,MAAQ,EAAEA,GAAS,MAA2BA,EAAK,UAAmBA,GAAS,MAAmCA,EAAK,YAAc,EAAEA,GAAQ,MAAQA,EAAK,UAAY,QACxL,KAAK,WAAU,GACNA,GAAS,MAA2BA,EAAK,QAAU,GAAGixC,EAAkBvpD,EAAU,QAAU,MAAQupD,IAAoB,QAAUA,EAAgB,SAAmBjxC,GAAS,MAAmCA,EAAK,SAAY,EAAEtY,EAAU,MAAQ,MAAQA,EAAU,KAAK,UAAY,UAElS,KAAK,UAAS,CAElB,CACA,sBAAuB,CACrB,KAAK,SAAS,OAAM,EAChB,KAAK,SAAW,MAClB,KAAK,QAAO,EAEd,KAAK,UAAS,CAChB,CACA,YAAa,CACX,KAAK,UAAS,EACd,KAAK,MAAQ,OAAO,YAAY,KAAK,cAAe,GAAI,CAC1D,CACA,WAAY,CACN,KAAK,OAAS,OAChB,cAAc,KAAK,KAAK,EACxB,KAAK,MAAQ,OAEjB,CACA,YAAa,CACX,KAAK,SAAS,CACZ,YAAa,KAAK,IAAG,CAC3B,CAAK,CACH,CACA,YAAY5K,EAAO,CACjB,KAAK,SAAS,CACZ,MAAO,GAAG,OAAOA,CAAK,CAC5B,CAAK,CACH,CACA,aAAaqD,EAAM,CACjB,GAAI,CACF,KAAA6f,CACN,EAAQ7f,GAA0C,GAC9C,KAAK,SAAS,CACZ,KAAA6f,CACN,CAAK,EACD,GAAI,CACF,SAAA+nC,CACN,EAAQ,KAAK,MACTA,GAAa,MAA+BA,EAAS/nC,CAAI,CAC3D,CACA,eAAgB,CACd,KAAK,WAAU,CACjB,CACA,QAAS,CACP,IAAIkxC,EACA,CACF,KAAM,CACJ,KAAAr0D,CACR,EACM,SAAA27C,CACN,EAAQ,KAAK,MACL,CACF,YAAA2Y,EACA,KAAAnxC,EACA,MAAAljB,CACN,EAAQ,KAAK,MACL,CACF,OAAAQ,EACA,UAAAiiC,EACA,QAAA8vB,CACN,EAAQrvC,GAA0C,GAC1Cw3B,GAAgB0Z,EAAgB5zD,GAAW,KAA4B,OAASA,EAAO,SAAW,MAAQ4zD,IAAkB,OAASA,EAAgBp0D,EACrJ4F,EAAasuD,GAA0B,cAAczxB,EAAW8vB,GAAmD8B,CAAW,EAK9HC,EAAc,KAAK,eAAev0D,CAAI,EACtCw0D,EAAgB,EAAQ3uD,EAC5B,OAAoB0E,OAAM,MAAO,CAC/B,UAAW,+BACX,SAAU,CAAcA,OAAM,MAAO,CACnC,UAAW,mBACX,SAAU,CAAcJ,MAAKuxC,GAAM,CACjC,SAAUC,EACV,SAAU4Y,CACpB,CAAS,EAAGA,EAAY,OAASv0D,EAAK,QAAuBmK,MAAK,IAAK,CAC7D,SAAU,sBACpB,CAAS,CAAC,CACV,CAAO,EAAgBI,OAAM,MAAO,CAC5B,UAAW,cACX,SAAU,CAAcA,OAAM,MAAO,CACnC,UAAW,iCACX,SAAU,CAAC,EAAQowC,GAA8BpwC,OAAM,MAAO,CAC5D,UAAW,mBACX,SAAU,CAAcJ,MAAK8E,GAAiB,CAC5C,KAAM87C,EACpB,CAAa,EAAG,uBAAuB,CACvC,CAAW,EAAgBxgD,OAAM,MAAO,CAC5B,UAAW,eACX,SAAU,CAAC,gBAAiB,IAAKiqD,EAA6BrqD,MAAK,OAAQ,CACzE,UAAW,cACX,SAAUtE,CACxB,CAAa,EAAiBsE,MAAK0yC,GAAgB,CACrC,UAAW,gCACzB,CAAa,CAAC,CACd,CAAW,CAAC,CACZ,CAAS,EAAG,EAAQlC,GAA8BxwC,MAAK,MAAO,CACpD,UAAW,gBACX,SAAUwwC,CACpB,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACAn8C,GAAgB21D,GAA2B,eAAgB,CACzD,SAAU,MACZ,CAAC,ECpKD,IAAIM,GAAsB,IAC1B,SAASC,GAAmB7oD,EAAM,CAChC,GAAI,CACF,KAAAvI,EACA,SAAAq4C,EACA,WAAAhhC,EAAa,GACb,sBAAA8tC,CACJ,EAAM58C,EACA0oD,EAAcjxD,EAAK,KAAK,UAAU,EAAGmxD,EAAmB,EACxD1mD,EAAU7H,SAAO,IAAI,EACrByuD,EAAe/tD,cAAY,IAAM,CACnC,IAAIguD,GACHA,EAAmB7mD,EAAQ,WAAa,MAAQ6mD,IAAqB,QAAUA,EAAiB,OAAM,CACzG,EAAG,CAAC7mD,CAAO,CAAC,EACZ,OAAoBxD,OAAM,MAAO,CAC/B,UAAWD,EAAW,uBAAwB,CAC5C,SAAUqQ,CAChB,CAAK,EACD,SAAU,CAAC45C,EAA0BpqD,MAAKS,GAAS,CACjD,IAAKmD,EACL,YAAa,GACb,QAAS,CACP,UAAW,OACX,UAAW,CACT,gBAAiB,CACf,QAAS,GACT,kBAAmB,WACnB,MAAO,GACnB,CACA,CACA,EACM,gBAAiB,8BACjB,SAAuB5D,MAAKgqD,GAA2B,CACrD,KAAM7wD,EACN,SAAUq4C,EACV,SAAUgZ,EACV,sBAAuBlM,CAC/B,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CCvCA,MAAMoM,WAA8BhsD,WAAU,CAC5C,OAAO,QAAQhK,EAAGyE,EAAM,CACtB,MAAO,GAAG,OAAOA,EAAK,KAAK,CAC7B,CACA,OAAO,cAAcA,EAAM,CACzB,OAAIA,EAAK,oBAAsB,QAAaA,EAAK,kBAC3BiH,OAAM,MAAO,CAC/B,UAAW,kBACX,SAAU,CAAcJ,MAAK8E,GAAiB,CAC5C,KAAM6lD,GACN,KAAMxxD,EAAK,KACX,UAAW,yBACrB,CAAS,EAAgB6G,MAAK8E,GAAiB,CACrC,KAAMyK,GACN,UAAW,yBACrB,CAAS,CAAC,CACV,CAAO,EAEiBvP,MAAK8E,GAAiB,CACxC,KAAM3L,EAAK,IACjB,CAAK,CACH,CACA,QAAS,CACP,GAAI,CACF,QAAA8N,EACA,aAAA2jD,CACN,EAAQ,KAAK,MACT,OAAoB5qD,MAAK,MAAO,CAC9B,UAAW,0BACX,SAAUiH,EAAQ,IAAI,CAAC9N,EAAMQ,IAAuBqG,MAAKyD,GAAQ,CAC/D,KAAM,SACN,UAAWtD,EAAWhH,EAAK,SAAS,EACpC,QAASA,EAAK,OACd,QAASA,EAAK,YACd,SAAUA,EAAK,oBAAsB,QAAaA,EAAK,mBAAqB,CAACyxD,EAC7E,KAAMF,GAAsB,cAAcvxD,CAAI,CACtD,EAASuxD,GAAsB,QAAQ/wD,EAAOR,CAAI,CAAC,CAAC,CACpD,CAAK,CACH,CACF,CC3CA,IAAI0xD,GAAe,IACfC,GAAmB,EACnB7uD,GAAMC,EAAI,OAAO,+BAA+B,EACpD,SAAS6uD,GAA8BrpD,EAAM,CAC3C,GAAI,CACF,MAAA88C,EACA,QAAA0E,EACA,IAAA3oB,EAAM,EACN,OAAAywB,EAAS,EACT,OAAAC,EACA,WAAAC,EAAa,GACb,SAAAnK,CACJ,EAAMr/C,EACAypD,EAA0B3tD,UAAQ,IAAMS,GAASmtD,GAAY,CAC/D,IAAIC,EAAaD,EAAS,OAASA,EAAS,IACxCE,EAAc,KAAK,IAAI,EAAGF,EAAS,IAAMC,EAAaP,EAAgB,EACtES,EAAiBH,EAAS,OAASC,EAAaP,GACpDtM,EAAM,YAAY,CAChB,IAAK8M,EACL,OAAQC,EACR,QAASH,EAAS,OACxB,CAAK,CACH,EAAGP,EAAY,EAAG,CAACrM,CAAK,CAAC,EACzBxiD,mBAAU,UAAuC,CAC/C,IAAIzD,EAAUimD,EAAM,SAASC,GAAgB,CAC3C,IAAI+M,EAAqBC,EACzB1K,EAAS,CACP,OAAQyK,EAAsB/M,EAAa,SAAW,MAAQ+M,IAAwB,OAASA,EAAsB,GACrH,QAASC,EAAuBhN,EAAa,UAAY,MAAQgN,IAAyB,OAASA,EAAuB,CAClI,CAAO,CACH,CAAC,EACD,MAAO,IAAM,CACXxvD,GAAI,MAAM,kBAAkB,EAC5B1D,EAAO,CACT,CACF,EAAG,CAACimD,EAAOuC,CAAQ,CAAC,EACpB/kD,YAAU,UAAyB,CACjCwiD,EAAM,UAAUyM,GAAgD,EAAE,CACpE,EAAG,CAACzM,EAAOyM,CAAM,CAAC,EAClBjvD,YAAU,UAA0B,CAClCmvD,EAAwB,CACtB,IAAA5wB,EACA,OAAAywB,EACA,QAAA9H,CACN,CAAK,CACH,EAAG,CAACiI,EAAyB5wB,EAAKywB,EAAQ9H,EAAS+H,EAAQC,CAAU,CAAC,EACtElvD,YAAU,IAAM,IAAM,CACpBC,GAAI,OAAO,gCAAgC,EAC3CkvD,EAAwB,OAAM,CAChC,EAAG,CAACA,CAAuB,CAAC,EACrB,IACT,CCtDA,SAASn2D,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAChU,SAASlB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAcvT,IAAIwH,GAAMC,EAAI,OAAO,gBAAgB,EACrC,MAAMwvD,WAAuBhtD,WAAU,CACrC,OAAO,wBAAwBvE,EAAOyZ,EAAQ+3C,EAAc,CAE1D,QADIC,EAAW,GACNl3D,EAAI,EAAGA,EAAIi3D,EAAa,OAAQj3D,GAAK,EAE5C,QADI+E,EAAQkyD,EAAaj3D,CAAC,EACjBm3D,EAAIpyD,EAAM,CAAC,EAAGoyD,GAAKpyD,EAAM,CAAC,EAAGoyD,GAAK,EACzC,GAAIA,GAAKj4C,GAAUi4C,EAAIj4C,EAASzZ,EAAM,OAAQ,CAC5C,GAAI,CACF,KAAAtE,CACZ,EAAcsE,EAAM0xD,EAAIj4C,CAAM,EACpBg4C,EAAS,KAAK/1D,CAAI,CACpB,CAGJ,OAAO+1D,CACT,CACA,OAAO,wBAAwBpN,EAAOmN,EAAc,CAClD,OAAOr2D,GAAkB,WAAa,CACpC,IAAI6E,EAAQ,MAAMqkD,EAAM,YAAYmN,CAAY,EAChD,MAAO,CAAC,GAAGxxD,EAAM,OAAM,CAAE,EAAE,IAAIhB,GAAQA,EAAK,IAAI,CAClD,CAAC,EAAC,CACJ,CACA,YAAYwF,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,UAAW,MAAM,EACvCA,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,cAAe,MAAM,EAC3CA,GAAgB,KAAM,wBAAyBoJ,GAAS,IAAM,CAC5D,KAAK,SAASiE,GAAQ,CACpB,GAAI,CACF,WAAAoqD,CACV,EAAYpqD,EACJ,MAAO,CACL,oBAAqBoqD,EAErB,eAAgB,EAC1B,CACM,CAAC,CACH,EAAGJ,GAAe,sBAAsB,CAAC,EACzC,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,YAAc,CAAC,CAClB,MAAO,iBACP,YAAa,sCACb,KAAMK,GACN,SAAUr9C,GAAiB,KAC3B,OAAQ,KAAK,qBACb,MAAOrG,GAAe,OAAO,IACnC,EAAO,CACD,MAAO,kBACP,YAAa,wCACb,KAAM2jD,GACN,SAAUhX,GAAU,gBAAgB,gBACpC,OAAQ,KAAK,cACb,MAAO0W,GAAe,WAAW,KACjC,MAAO,EACb,EAAO,CACD,MAAO,iBACP,YAAa,uCACb,KAAMO,GACN,SAAUjX,GAAU,gBAAgB,IACpC,OAAQ,KAAK,aACb,MAAO0W,GAAe,WAAW,KACjC,MAAO,EACb,EAAO,CACD,MAAO,0BACP,YAAa,uCACb,KAAMQ,GACN,SAAUlX,GAAU,gBAAgB,iBACpC,OAAQ,KAAK,eACb,MAAO0W,GAAe,WAAW,KACjC,MAAO,EACb,EAAO,CACD,MAAO,uBACP,YAAa,2CACb,KAAMS,GACN,OAAQ,KAAK,eACb,MAAOT,GAAe,WAAW,KACjC,MAAO,EACb,CAAK,EACD,KAAK,eAAiB,CAAC,CACrB,MAAO,kBACP,KAAMM,GACN,kBAAmB,GACnB,YAAa,wCACb,OAAQ,KAAK,aACnB,EAAO,CACD,MAAO,mBACP,KAAME,GACN,kBAAmB,GACnB,YAAa,uCACb,OAAQ,KAAK,cACnB,CAAK,EACD,KAAK,QAAU,IAAIhzD,GACnB,KAAK,eAA8B0F,EAAM,UAAS,EAClD,KAAK,YAA2BA,EAAM,UAAS,EAC/C,GAAI,CACF,MAAA4/C,CACN,EAAQ7/C,EACJ,KAAK,MAAQ,CACX,QAAS,GACT,eAAgB,KAAK,eACrB,IAAK,EACL,OAAQ,EACR,UAAW6/C,EAAM,KACjB,MAAO,GACP,OAAQ,EACR,eAAgB,GAChB,WAAY,GACZ,oBAAqB,EAC3B,CACE,CACA,sBAAuB,CACrB,KAAK,sBAAsB,OAAM,EACjC,KAAK,QAAQ,OAAM,CACrB,CAMA,qBAAsB,CACpB,IAAIH,EAAQ,KACZ,OAAO/oD,GAAkB,WAAa,CACpC,GAAI,CACF,MAAA6E,EACA,OAAAyZ,EACA,eAAAla,CACR,EAAU2kD,EAAM,MACNvkD,EAASJ,EAAe,MAAK,EAAG,KAAK,CAAC,EAAGkB,IAAM,EAAE,CAAC,EAAIA,EAAE,CAAC,CAAC,EAC9D,GAAId,EAAO,SAAW,EACpB,MAAO,GAET,GAAIA,EAAO,CAAC,EAAE,CAAC,GAAK8Z,GAAU9Z,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAI8Z,EAASzZ,EAAM,OAE1E,OAAOuxD,GAAe,wBAAwBvxD,EAAOyZ,EAAQ9Z,CAAM,EAErE,GAAI,CACF,MAAA0kD,CACR,EAAUH,EAAM,MACV,OAAOA,EAAM,QAAQ,IAAIqN,GAAe,wBAAwBlN,EAAO1kD,CAAM,CAAC,CAChF,CAAC,EAAC,CACJ,CAMA,wBAAyB,CACvB,OAAO,KAAK,oBAAmB,EAAG,KAAK8xD,GAAYA,EAAS,KAAK;AAAA,CAAI,CAAC,CACxE,CACA,eAAgB,CACd,KAAK,SAASx/C,GAAS,CACrB,GAAI,CACF,eAAA1S,CACR,EAAU0S,EACAggD,EAAmB1yD,EAAe,OAAO,CAAC2rD,EAAO5rD,IAAU4rD,EAAQ5rD,EAAM,CAAC,EAAIA,EAAM,CAAC,EAAI,EAAG,CAAC,EACjG,OAAI2yD,EAAmB,GAAKA,EAAmBV,GAAe,qBAC5DzvD,GAAI,MAAM,mBAAoB,KAAK,WAAW,EACvC,CACL,QAAS,KAAK,WACxB,IAEMA,GAAI,MAAM,oBAAqBmwD,CAAgB,EACxC,CACL,QAAS,EACjB,EACI,CAAC,CACH,CACA,sBAAuB,CACrB,KAAK,uBAAsB,EAAG,KAAKr2D,EAAe,EAAE,MAAMkG,GAAI,KAAK,CACrE,CACA,gBAAiB,CACf,KAAK,uBAAsB,EAAG,KAAKowD,GAAe,CAChD,GAAI,CACF,SAAA7a,EACA,eAAA8a,CACR,EAAU,KAAK,MACTA,EAAe,CACb,MAAOD,EACP,SAAA7a,CACR,EAAS,EAAI,CACT,CAAC,EAAE,MAAMv1C,GAAI,KAAK,CACpB,CACA,gBAAiB,CACf,KAAK,uBAAsB,EAAG,KAAKowD,GAAe,CAChD,GAAI,CACF,SAAA7a,EACA,eAAA8a,CACR,EAAU,KAAK,MACTA,EAAe,CACb,MAAOD,EACP,SAAA7a,CACR,CAAO,CACH,CAAC,EAAE,MAAMv1C,GAAI,KAAK,CACpB,CACA,eAAgB,CACd,GAAI,CACF,cAAAswD,CACN,EAAQ,KAAK,MACT,KAAK,uBAAsB,EAAG,KAAKA,CAAa,EAAE,MAAMtwD,GAAI,KAAK,CACnE,CACA,cAAe,CACb,KAAK,uBAAsB,EAAG,KAAKowD,GAAe,CAChD,GAAI,CACF,cAAAE,CACR,EAAU,KAAK,MACTA,EAAcF,EAAa,GAAM,EAAI,CACvC,CAAC,EAAE,MAAMpwD,GAAI,KAAK,CACpB,CACA,aAAatC,EAAO,CAClB,GAAI,CACF,cAAA4yD,CACN,EAAQ,KAAK,MACL,CACF,MAAApyD,EACA,OAAAyZ,CACN,EAAQ,KAAK,MACT,GAAIja,EAAQia,GAAUja,GAASia,EAASzZ,EAAM,OAAQ,CACpD8B,GAAI,MAAM,iBAAkBtC,CAAK,EACjC,MACF,CACA,GAAI,CACF,KAAA9D,CACN,EAAQsE,EAAMR,EAAQia,CAAM,EACxB24C,EAAc12D,CAAI,CACpB,CACA,sBAAsB6D,EAAgB,CACpC,KAAK,SAAS,CACZ,eAAAA,CACN,CAAK,EACD,KAAK,cAAa,CACpB,CACA,qBAAqB6gC,EAAKywB,EAAQ,CAChC,KAAK,SAAS,CACZ,IAAAzwB,EACA,OAAAywB,CACN,CAAK,CACH,CACA,mBAAmB,EAAG,CACpB,KAAK,SAAS,CACZ,WAAY,EAAE,OAAO,KAC3B,CAAK,EACD,KAAK,sBAAqB,CAC5B,CACA,qBAAqBp6C,EAAO,CAC1B,GAAI,CACF,MAAAzW,EACA,OAAAyZ,CACN,EAAQhD,EACA,CACF,MAAA4tC,CACN,EAAQ,KAAK,MACLltC,EAAYktC,EAAM,KACtB,KAAK,SAAS,CACZ,MAAArkD,EACA,UAAAmX,EACA,OAAAsC,CACN,CAAK,CACH,CACA,WAAWvB,EAAO,CAChB,GAAI,CACF,KAAAlZ,EACA,UAAA0W,EACA,WAAAW,CACN,EAAQ6B,EACA,CACF,SAAAm/B,EACA,sBAAA8M,CACN,EAAQ,KAAK,MACT,OAAoBt+C,MAAKuqD,GAAoB,CAC3C,WAAY/5C,EACZ,KAAMrX,EACN,SAAUq4C,EACV,sBAAuB8M,CAC7B,CAAK,CACH,CACA,OAAQ,CACF,KAAK,eAAe,SACtB,KAAK,eAAe,QAAQ,MAAK,CAErC,CACA,uBAAwB,CACtB,IAAIkO,GACHA,EAAwB,KAAK,YAAY,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,sBAAqB,CAChJ,CACA,QAAS,CACP,IAAIC,EACA,CACF,SAAAjb,EACA,MAAAgN,CACN,EAAQ,KAAK,MACL,CACF,QAAAv3C,EACA,eAAAylD,EACA,WAAAZ,EACA,oBAAAa,EACA,IAAApyB,EACA,OAAAywB,EACA,MAAA7wD,EACA,UAAAmX,EACA,OAAAsC,EACA,eAAAla,CACN,EAAQ,KAAK,MACLkzD,GAAyBH,EAAwB1a,GAAiB,aAAa,IAAIP,CAAQ,KAAO,MAAQib,IAA0B,OAASA,EAAwB,GACzK,OAAoBrsD,OAAM,MAAO,CAC/B,UAAW,kBACX,SAAU,CAAcA,OAAM,MAAO,CACnC,UAAW,6BACX,SAAU,CAAcJ,MAAK2O,GAAa,CACxC,IAAK,KAAK,eACV,MAAOm9C,EACP,YAAa,GAAG,OAAOc,EAAuB,kBAAkB,EAChE,SAAU,KAAK,kBACzB,CAAS,EAAgB5sD,MAAK0qD,GAAuB,CAC3C,QAASgC,EACT,aAAchzD,EAAe,OAAS,CAChD,CAAS,CAAC,CACV,CAAO,EAAgB0G,OAAM,MAAO,CAC5B,UAAW,uBACX,SAAU,CAAcJ,MAAK2Q,GAAU,CACrC,IAAK,KAAK,YACV,UAAWW,EACX,MAAOnX,EACP,OAAQyZ,EACR,eAAgBla,EAChB,SAAU,KAAK,aACf,kBAAmB,KAAK,sBACxB,iBAAkB,KAAK,qBACvB,WAAY,KAAK,WACjB,UAAWgyD,GAAe,YAC1B,oBAAqB,GACrB,cAAe,GACf,eAAgB,EAC1B,CAAS,EAAgB1rD,MAAK+qD,GAA+B,CACnD,MAAOvM,EACP,IAAKjkB,EACL,OAAQywB,EACR,OAAQ2B,EACR,SAAU,KAAK,oBACzB,CAAS,EAAgB3sD,MAAKqI,GAAgB,CACpC,QAASpB,CACnB,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACA5S,GAAgBq3D,GAAgB,cAAe,EAAE,EACjDr3D,GAAgBq3D,GAAgB,sBAAuB,GAAK,EAC5Dr3D,GAAgBq3D,GAAgB,yBAA0B,GAAG,EAC7Dr3D,GAAgBq3D,GAAgB,aAAc,CAC5C,KAAMrjD,GAAe,OAAO,OAAS,GACvC,CAAC,ECxXD,MAAMwkD,WAAyB9gD,eAAc,CAC3C,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,CAC3D,CACA,mBAAoB,CAClB,GAAI,CACF,SAAA+nD,EACA,QAAA1iD,CACN,EAAQ,KAAK,MACTA,EAAQ0iD,CAAQ,CAClB,CACA,QAAS,CACP,GAAI,CACF,SAAAA,EACA,GAAAlyC,CACN,EAAQ,KAAK,MACT,OAAoBpU,OAAM,MAAO,CAC/B,UAAWD,EAAW,sBAAuBumD,CAAQ,EACrD,SAAU,CAAc1mD,MAAKuU,GAAU,CACrC,GAAIC,EACJ,QAAS,KAAK,iBACtB,CAAO,EAAGkyC,CAAQ,CAClB,CAAK,CACH,CACF,CC/BA,SAASpoD,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAevT,MAAMq4D,WAAgB/gD,eAAc,CAClC,OAAO,WAAWghD,EAAS,CACzB,IAAI3a,EAAO,IAAI,KAAK2a,EAAQ,OAAS,GAAI,EACrC30B,EAAY4Z,GAAa,gBAAgBI,CAAI,EACjD,MAAO,GAAG,OAAOha,EAAW,GAAG,EAAE,OAAO20B,EAAQ,SAAU,GAAG,EAAE,OAAOA,EAAQ,OAAO,CACvF,CACA,YAAYpuD,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,iBAAkB,MAAM,EAC9CA,GAAgB,KAAM,SAAU,MAAM,EACtCA,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,oBAAqB,MAAM,EACjDA,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,mBAAoB,MAAM,EAChDA,GAAgB,KAAM,WAAY,MAAM,EACxC,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,kBAAoB,GACzB,KAAK,gBAAkB,KACvB,KAAK,iBAAmB,GACxB,KAAK,SAAW,GAChB,KAAK,MAAQ,CACX,eAAgB,EACtB,CACE,CACA,mBAAoB,CAClB,KAAK,eAAc,EACnB,KAAK,WAAU,EACf,KAAK,eAAc,EACnB,OAAO,iBAAiB,SAAU,KAAK,YAAY,CACrD,CACA,mBAAmByK,EAAW4B,EAAW,CACvC,KAAK,iBAAgB,EACrB,GAAI,CACF,eAAAssD,CACN,EAAQ,KAAK,MACLtsD,EAAU,iBAAmBssD,GAC/B,KAAK,eAAc,EAErB,GAAI,CACF,QAAA9V,CACN,EAAQ,KAAK,MACLp4C,EAAU,UAAYo4C,IACxB,KAAK,cAAa,EAClB,KAAK,eAAc,EAEnB,KAAK,UAAS,EAElB,CACA,sBAAuB,CACrB,KAAK,eAAc,EACnB,KAAK,cAAa,EAClB,KAAK,cAAa,EAClB,OAAO,oBAAoB,SAAU,KAAK,YAAY,CACxD,CACA,eAAe8V,EAAgB,CAC7B,IAAI3O,EAAQ,KACRp3C,EAAU,GACdA,EAAQ,KAAK,CACX,YAA0BjH,MAAK,MAAO,CACpC,UAAW,uBACX,SAAU,oBAClB,CAAO,EACD,MAAO,EACP,MAAO,EACb,CAAK,EAoBD,QAnBI+I,EAAQ,UAAiB,CAC3B,IAAI29C,EAAWoG,GAAQ,aAAap4D,CAAC,EACjC8f,EAAKw4C,EAAetG,CAAQ,GAAK,KAAOsG,EAAetG,CAAQ,EAAI,GACvEz/C,EAAQ,KAAK,CACX,MAAOy/C,EACP,MAAO,EACP,MAAOhyD,EAAI,IACX,YAA0BsL,MAAK6sD,GAAkB,CAC/C,SAAUnG,EACV,GAAIlyC,EACJ,QAAS6pC,EAAM,oBACf,IAAKt/C,GAAW,CACVA,GAAW,OACbs/C,EAAM,kBAAkBqI,CAAQ,EAAI3nD,EAExC,CACV,CAAS,CACT,CAAO,CACH,EACSrK,EAAI,EAAGA,EAAIo4D,GAAQ,aAAa,OAAQp4D,GAAK,EACpDqU,EAAK,EAEP,OAAA9B,EAAQ,KAAK,CACX,MAAO,EACP,MAAO,IACP,YAA0B7G,OAAM,MAAO,CACrC,UAAW,0BACX,SAAU,CAAcJ,MAAKyD,GAAQ,CACnC,KAAM,QACN,UAAW,uBACX,QAAS,KAAK,qBACd,SAAU,YACpB,CAAS,EAAgBzD,MAAKyD,GAAQ,CAC5B,KAAM,QACN,QAAS,KAAK,iBACd,SAAU,OACpB,CAAS,CAAC,CACV,CAAO,CACP,CAAK,EACMwD,CACT,CACA,gBAAiB,CAOf,QANI+lD,EAAiB,GACjBC,EAAS,UAAkB,CAC7B,IAAIvG,EAAWoG,GAAQ,aAAap4D,CAAC,EACjCw4D,EAAYJ,GAAQ,iBAAiB,KAAKK,GAASA,IAAUzG,CAAQ,EACzEsG,EAAetG,CAAQ,EAAIwG,CAC7B,EACSx4D,EAAI,EAAGA,EAAIo4D,GAAQ,aAAa,OAAQp4D,GAAK,EACpDu4D,EAAM,EAER,KAAK,SAAS,CACZ,eAAAD,CACN,CAAK,CACH,CACA,gBAAiB,CACf,GAAI,CACF,QAAA9V,CACN,EAAQ,KAAK,MACT,KAAK,eAAiBA,EAAQ,aAAa,KAAK,gBAAgB,CAClE,CACA,eAAgB,CACV,KAAK,gBAAkB,OACzB,KAAK,eAAc,EACnB,KAAK,eAAiB,OAE1B,CACA,YAAa,CACXjV,EAAc,KAAK,eAAe,EAClC,KAAK,OAAS6P,GAAc,OAAO,KAAK,gBAAiB,CACvD,2BAA4B,GAC5B,qBAAsB,GACtB,QAAS,GACT,WAAY,YACZ,YAAa,GACb,SAAU,MACV,qBAAsB,EACtB,YAAa,MACb,oBAAqB,EACrB,QAAS,CACP,QAAS,EACjB,EACM,SAAU,GACV,oBAAqB,OACrB,qBAAsB,GACtB,MAAO,GACP,SAAU,IAChB,CAAK,EAGD,CAAC,CAACoJ,GAAe,MAAM,EAAG,CAACD,GAAc,MAAQC,GAAe,MAAM,CAC1E,EAAM,QAAQC,GAAe,CACvBlZ,EAAc,KAAK,MAAM,EAIzB0T,GAAY,mBAAmB,KAAK,OAAQwF,CAAW,EAGvD,KAAK,OAAO,UAAU,CACpB,GAAI,4BACJ,MAAO,GACP,YAAa,CAACD,GAAe,MAAM,EACnC,kBAAmB,uCACnB,IAAK,IAAM,CACT,IAAIkS,EAAcC,EACdt3B,GAAYq3B,EAAe,KAAK,UAAY,MAAQA,IAAiB,OAAS,OAASA,EAAa,YAAW,EACnHnrB,EAAclM,CAAQ,GACrBs3B,EAAgB,KAAK,UAAY,MAAQA,IAAkB,QAAUA,EAAc,YAAYt3B,CAAQ,CAC1G,CACR,CAAO,CACH,CAAC,CACH,CACA,eAAgB,CACV,KAAK,SACP,KAAK,OAAO,QAAO,EACnB,KAAK,OAAS,OAElB,CACA,mBAAoB,CAClB,IAAIu3B,EAAeC,GAIlBD,EAAgB,KAAK,UAAY,MAAQA,IAAkB,QAAUA,EAAc,MAAK,GACxFC,EAAgB,KAAK,UAAY,MAAQA,IAAkB,QAAUA,EAAc,QAAQ,WAAY,eAAgB,MAAS,CACnI,CACA,WAAY,CAKV,OAJI,CACF,eAAAP,CACN,EAAQ,KAAK,MACLQ,EAAe,GACV94D,EAAI,EAAGA,EAAIo4D,GAAQ,aAAa,OAAQp4D,GAAK,EAAG,CACvD,IAAIgyD,EAAWoG,GAAQ,aAAap4D,CAAC,EACrC,GAAI,CAACs4D,EAAetG,CAAQ,EAAG,CAC7B8G,EAAe,GACf,KACF,CACF,CACA,GAAIA,EACF,KAAK,SAAS,CACZ,eAAgB,EACxB,CAAO,MACI,CAEL,QADIC,EAAmB,GACdvtC,EAAK,EAAGA,EAAK4sC,GAAQ,aAAa,OAAQ5sC,GAAM,EAAG,CAC1D,IAAIwtC,EAAYZ,GAAQ,aAAa5sC,CAAE,EACvCutC,EAAiBC,CAAS,EAAI,EAChC,CACA,KAAK,SAAS,CACZ,eAAgBD,CACxB,CAAO,CACH,CACF,CACA,eAAe/G,EAAU,CACvB,GAAI,CACF,eAAAsG,CACN,EAAQ,KAAK,MACLE,EAAYF,EAAetG,CAAQ,EACnC+G,EAAmB,GACvBA,EAAiB/G,CAAQ,EAAI,CAACwG,EAC9B,KAAK,gBAAgBO,CAAgB,CACvC,CACA,gBAAgBA,EAAkB,CAChC,GAAI,CACF,eAAAT,CACN,EAAQ,KAAK,MACTA,EAAiBzuD,GAAcA,GAAc,GAAIyuD,CAAc,EAAGS,CAAgB,EAClF,KAAK,SAAS,CACZ,eAAAT,CACN,CAAK,CACH,CACA,cAAc/2D,EAAM,CAClB,GAAK,KAAK,OAGV,KAAIw/C,EAAQ,KAAK,OAAO,SAAQ,EAC5BmB,EAAOnB,GAAU,KAA2B,OAASA,EAAM,aAAY,EAC3ExT,EAAc2U,CAAI,EAClB,IAAIzlB,EAASskB,GAAU,KAA2B,OAASA,EAAM,cAAcmB,CAAI,EACnF3U,EAAc9Q,CAAM,EACpB,IAAIw8B,EAAkB,KAAK,gBAAe,EACtCC,EAAQ,GA0BZ,GAzBIz8B,EAAS,IACXy8B,EAAM,KAAK,CACT,MAAO,CACL,gBAAiBhX,EACjB,YAAazlB,EAAS,EACtB,cAAeylB,EACf,UAAWzlB,EAAS,CAC9B,EACQ,KAAM;AAAA,EACN,iBAAkB,EAC1B,CAAO,EACDylB,GAAQ,EACRzlB,EAAS,GAEXy8B,EAAM,KAAK,CACT,MAAO,CACL,gBAAiBhX,EACjB,YAAazlB,EACb,cAAeylB,EACf,UAAWzlB,CACnB,EACM,KAAAl7B,EACA,iBAAkB,EACxB,CAAK,EACDw/C,GAAU,MAA4BA,EAAM,WAAWmY,CAAK,EACxDD,EAAiB,CACnB,IAAIE,EAAYpY,GAAU,KAA2B,OAASA,EAAM,aAAY,EAChFxT,EAAc4rB,CAAS,EACvB,KAAK,OAAO,WAAWA,EAAW,CAAC,CACrC,EACF,CAKA,gBAAiB,CACf,GAAK,KAAK,OAGV,MAAK,uBAAsB,EAM3B,OALI,CACF,eAAAb,CACN,EAAQ,KAAK,MACLW,EAAkB,KAAK,gBAAe,EACtC13D,EAAO,GACF,EAAI,EAAG,EAAI,KAAK,SAAS,OAAQ,GAAK,EAAG,CAChD,IAAIsD,EAAU,KAAK,SAAS,CAAC,EAC7B,GAAIyzD,EAAezzD,EAAQ,QAAQ,EAAG,CACpC,IAAIu0D,EAAUhB,GAAQ,WAAWvzD,CAAO,EACpCu0D,EAAQ,OAAS,IACnB73D,GAAQ63D,EACJA,EAAQ,OAAOA,EAAQ,OAAS,CAAC,IAAM;AAAA,IACzC73D,GAAQ;AAAA,GAGd,CACF,CAGA,GAFAA,EAAOA,EAAK,UAAS,EACrB,KAAK,OAAO,SAASA,CAAI,EACrB03D,EAAiB,CACnB,IAAII,EACAnX,GAAQmX,EAAwB,KAAK,OAAO,SAAQ,KAAQ,MAAQA,IAA0B,OAAS,OAASA,EAAsB,aAAY,EACtJ9rB,EAAc2U,CAAI,EAClB,KAAK,OAAO,WAAWA,EAAM,CAAC,CAChC,CACA,KAAK,eAAc,EACnB,KAAK,iBAAmB,GAC1B,CACA,wBAAyB,CACnB,KAAK,SAAS,OAASkW,GAAQ,aACjC,KAAK,SAAW,KAAK,SAAS,OAAO,KAAK,SAAS,OAASA,GAAQ,YAAY,EAEpF,CACA,gBAAiB,CACf,IAAIkB,EAAeC,EACnB,GAAK,KAAK,OAGV,KAAIrX,GAAQoX,EAAgB,KAAK,UAAY,MAAQA,IAAkB,SAAWC,EAAwBD,EAAc,YAAc,MAAQC,IAA0B,SAAWA,EAAwBA,EAAsB,KAAKD,CAAa,KAAO,MAAQC,IAA0B,OAAS,OAASA,EAAsB,aAAY,EAChVhsB,EAAc2U,CAAI,EAClB,KAAK,OAAO,WAAWA,EAAM,CAAC,EAChC,CACA,iBAAkB,CAChB,GAAI,CAAC,KAAK,OACR,MAAO,GAET,IAAInB,EAAQ,KAAK,OAAO,SAAQ,EAC5BmB,EAAOnB,GAAU,KAA2B,OAASA,EAAM,aAAY,EAC3E,OAAAxT,EAAc2U,CAAI,EACX,KAAK,cAAcA,CAAI,CAChC,CACA,cAAcA,EAAM,CAClB,IAAIsX,EACAC,GAAiBD,EAAgB,KAAK,UAAY,MAAQA,IAAkB,OAAS,OAASA,EAAc,iBAAgB,EAChI,GAAIC,GAAiB,MAAQA,EAAc,SAAW,EACpD,MAAO,GAET,QAAS,EAAI,EAAG,EAAIA,EAAc,OAAQ,GAAK,EAAG,CAChD,IAAI10D,EAAQ00D,EAAc,CAAC,EAC3B,GAAI10D,EAAM,iBAAmBm9C,GAAQA,GAAQn9C,EAAM,cACjD,MAAO,EAEX,CACA,MAAO,EACT,CAGA,iBAAiBF,EAAS,CACxB,GAAI,CACF,eAAAyzD,CACN,EAAQ,KAAK,MACT,OAAOA,EAAezzD,EAAQ,QAAQ,CACxC,CACA,OAAQ,CAEN,QADItD,EAAO,GACFvB,EAAI,EAAGA,EAAI,KAAK,iBAAiB,OAAQA,GAAK,EAAG,CACxD,IAAI6E,EAAU,KAAK,iBAAiB7E,CAAC,EACjCo5D,EAAUhB,GAAQ,WAAWvzD,CAAO,EACxCtD,GAAQ63D,EACJA,EAAQ,OAAOA,EAAQ,OAAS,CAAC,IAAM;AAAA,IACzC73D,GAAQ;AAAA,EAEZ,CACA,KAAK,iBAAmB,GACxB,KAAK,cAAcA,CAAI,CACzB,CACA,MAAMsD,EAAS,CACb,KAAK,iBAAiB,KAAKA,CAAO,EAC9B,KAAK,iBAAiB,SAAW,IACnC,KAAK,WAAa,WAAW,KAAK,mBAAoBuzD,GAAQ,aAAa,EAE/E,CACA,gBAAiB,CACX,KAAK,aACP,aAAa,KAAK,UAAU,EAC5B,KAAK,WAAa,OAEtB,CACA,kBAAmB,CACb,KAAK,QACP,KAAK,OAAO,OAAM,CAEtB,CACA,kBAAmB,CACjB,KAAK,UAAS,CAChB,CACA,WAAY,CACV,KAAK,SAAW,GAChB,KAAK,eAAc,CACrB,CACA,oBAAqB,CACnB,KAAK,eAAc,EACnB,KAAK,MAAK,CACZ,CACA,iBAAiBvzD,EAAS,CACxB,KAAK,SAAS,KAAKA,CAAO,EACtB,KAAK,QAAU,KAAK,iBAAiBA,CAAO,GAC9C,KAAK,MAAMA,CAAO,CAEtB,CACA,oBAAoBmtD,EAAU,CAC5B,KAAK,eAAeA,CAAQ,CAC9B,CACA,kBAAmB,CACjB,KAAK,eAAc,CACrB,CACA,cAAe,CACb,KAAK,iBAAgB,CACvB,CACA,sBAAuB,CACrB,KAAK,UAAS,CAChB,CACA,QAAS,CACP,IAAI75C,EAAgB,CAClB,UAAW,YACjB,EACQ,CACF,eAAAmgD,CACN,EAAQ,KAAK,MACL/lD,EAAU,KAAK,eAAe+lD,CAAc,EAChD,OAAoB5sD,OAAM,MAAO,CAC/B,UAAW,uBACX,SAAU,CAAcA,OAAM,MAAO,CACnC,UAAW,gBACX,SAAU,CAAcJ,MAAKyD,GAAQ,CACnC,KAAM,QACN,UAAW,iBACX,QAAS,KAAK,iBACd,KAAM2qD,GACN,QAAS,WACnB,CAAS,EAAgBpuD,MAAKyD,GAAQ,CAC5B,KAAM,QACN,UAAW,6BACX,KAAM4qD,GACN,QAAS,eACT,QAAS,IAAM,CAEf,EACA,SAAuBruD,MAAK4M,GAAc,CACxC,QAAS3F,EACT,gBAAiB,wBACjB,cAAe4F,CAC3B,CAAW,CACX,CAAS,CAAC,CACV,CAAO,EAAgB7M,MAAK,MAAO,CAC3B,UAAW,8BACX,IAAKsuD,GAAmB,CACtB,KAAK,gBAAkBA,CACzB,CACR,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACAj6D,GAAgBy4D,GAAS,mBAAoB,CAAC7X,GAAS,OAAQA,GAAS,MAAOA,GAAS,MAAOA,GAAS,OAAQA,GAAS,IAAI,CAAC,EAC9H5gD,GAAgBy4D,GAAS,eAAgB,CAAC7X,GAAS,KAAMA,GAAS,OAAQA,GAAS,MAAOA,GAAS,MAAOA,GAAS,OAAQA,GAAS,KAAMA,GAAS,MAAOA,GAAS,KAAK,CAAC,EAEzK5gD,GAAgBy4D,GAAS,gBAAiB,EAAE,EAE5Cz4D,GAAgBy4D,GAAS,aAAc,MAAM,EAC7Cz4D,GAAgBy4D,GAAS,eAAgB,KAAK,EC5e9C,SAAS93D,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAShU,IAAI0G,GAAMC,EAAI,OAAO,WAAW,EAChC,SAASqyD,GAAU7sD,EAAM,CACvB,IAAI8sD,EACA,CACF,WAAAC,EACA,sBAAAC,EACA,oBAAAC,EACA,aAAAC,EAAe,GACf,gBAAAC,CACJ,EAAMntD,EACAkd,EAAaY,GAAa,EAC1B,CAACsvC,EAAaC,CAAc,EAAI7sD,WAAS,CAC3C,WAAY,EACZ,gBAAiB,IACjB,cAAe,CACnB,CAAG,EACG,CAACmD,EAAQ2pD,CAAS,EAAI9sD,WAAS,EAAK,EACpC+sD,EAAelzD,SAAO,CACxB,WAAY,GACZ,OAAQ,EACZ,CAAG,EACGD,EAAeD,GAAe,EAC9BqzD,EAAyBzyD,cAAyBnH,GAAkB,WAAa,CACnF,GAAI,CACF,IAAI65D,EAAW,MAAMV,EAAW,kBAAiB,EACjD,GAAI,CAAC3yD,EAAa,QAChB,OAGF,GADAizD,EAAeI,CAAQ,EACnBP,GAAgBvpD,EAAQ,CAO1B,QANI+pD,GAAgBD,EAAS,cAAgBA,EAAS,YAAcA,EAAS,gBACzEhF,EAAc,KAAK,IAAG,EACtB,CACF,WAAYkF,GACZ,OAAQC,EAClB,EAAYL,EAAa,QACVI,GAAY,SAAW,GAAKlF,EAAckF,GAAY,CAAC,EAAIR,EAAkB,KAClFQ,GAAY,MAAK,EACjBC,GAAQ,MAAK,EAEfD,GAAY,KAAKlF,CAAW,EAC5BmF,GAAQ,KAAKF,CAAY,CAC3B,MACEH,EAAa,QAAU,CACrB,WAAY,GACZ,OAAQ,EAClB,CAEI,OAAS36D,GAAG,CACV2H,GAAI,KAAK,2BAA4B3H,EAAC,CACxC,CACF,CAAC,EAAG,CAACm6D,EAAY3yD,EAAc8yD,EAAcvpD,EAAQwpD,CAAe,CAAC,EACrE1yD,GAAiB+yD,EAAwB7pD,EAASspD,EAAsBD,CAAqB,EAC7F,IAAIa,EAAiB,CAACC,EAAKC,IAAQ,KAAK,MAAMD,EAAM,IAAMC,CAAG,EAAI,IAAMA,EACnEC,EAAe,EACfC,EAAW,MAAQ,EACnB,CACF,WAAAC,EACA,cAAAC,EACA,gBAAAC,CACJ,EAAMhB,EACAiB,EAAeR,EAAeK,EAAaD,EAAUD,CAAY,EACjEM,EAAcT,EAAeM,EAAgBF,EAAUD,CAAY,EACnEO,EAAYV,EAAeO,EAAkBH,EAAUD,CAAY,EACnEQ,EAAUF,EAAcD,EACxBI,EAAS,SAAgBl6D,EAAMu3B,EAAM,CACvC,IAAI4iC,GAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACvF,OAAoBhwD,OAAM,MAAO,CAC/B,UAAWD,EAAW,sBAAuB,CAC3C,wBAAyBiwD,EACjC,CAAO,EACD,SAAU,CAAcpwD,MAAK,MAAO,CAClC,UAAW,mBACX,SAAU/J,CAClB,CAAO,EAAgB+J,MAAK,MAAO,CAC3B,SAAUwtB,CAClB,CAAO,CAAC,CACR,CAAK,CACH,EACI,CACF,WAAA6iC,EACA,OAAAC,CACJ,EAAMrB,EAAa,QACbsB,GAAiB/B,EAAe6B,EAAWA,EAAW,OAAS,CAAC,KAAO,MAAQ7B,IAAiB,OAASA,EAAe,EACxHgC,EAAkBX,EAAgBC,EAClCW,GAAkBZ,EAAgBD,GAAcE,EACpD,OAAoB1vD,OAAM,MAAO,CAC/B,UAAW,aACX,SAAU,CAAcJ,MAAK,MAAO,CAClC,UAAW,eACX,MAAO,CACL,MAAO,QAAQ,OAAOwwD,EAAkB,IAAK,MAAM,EAAE,OAAOA,EAAkB,EAAG,IAAI,CAC7F,CACA,CAAK,EAAgBxwD,MAAK,MAAO,CAC3B,UAAWG,EAAW,cAAe,CACnC,iBAAkB0vD,EAAgBD,GAAcE,EAAkB,GAC1E,CAAO,EACD,MAAO,CACL,MAAO,QAAQ,OAAOW,EAAiB,IAAK,MAAM,EAAE,OAAOA,EAAiB,EAAG,IAAI,CAC3F,CACA,CAAK,EAAgBrwD,OAAM,MAAO,CAC5B,UAAW,cACX,SAAU,CAAC6vD,EAAU,QAAQ,CAAC,EAAG,KAAK,CAC5C,CAAK,EAAgBjwD,MAAKS,GAAS,CAC7B,UAAW,IAAMuuD,EAAU,EAAI,EAC/B,SAAU,IAAMA,EAAU,EAAK,EAC/B,YAAa,GACb,SAAuB5uD,OAAM,MAAO,CAClC,UAAW,eACX,SAAU,CAAC+vD,EAAO,UAAW,GAAG,OAAOD,EAAQ,QAAQR,CAAY,EAAG,MAAM,EAAE,OAAOO,EAAU,QAAQP,CAAY,EAAG,KAAK,EAAG,EAAI,EAAGS,EAAO,QAAS,GAAG,OAAOJ,EAAa,QAAQL,CAAY,EAAG,KAAK,CAAC,EAAGS,EAAO,SAAU,GAAG,OAAOH,EAAY,QAAQN,CAAY,EAAG,KAAK,CAAC,EAAGS,EAAO,OAAQ,GAAG,OAAOF,EAAU,QAAQP,CAAY,EAAG,KAAK,CAAC,EAAgB1vD,MAAK,MAAO,CAC7W,UAAW,YACX,SAAuBA,MAAKof,GAAM,CAChC,KAAM,CAAC,CACL,EAAG,CAAC,GAAGixC,CAAU,EACjB,EAAG,CAAC,GAAGC,CAAM,EACb,KAAM,UACN,KAAM,OACpB,CAAa,EACD,OAAQ,CACN,WAAY,GACZ,WAAY,EAC1B,EACY,MAAO,CACL,MAAO,QACP,OAAQ,OACtB,EACY,OAAQ,CACN,OAAQ,CACN,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,CACnB,EACc,aAAc,cACd,cAAe,cACf,SAAU,CAAC,SAAS,EACpB,MAAO,CACL,MAAO,KAAK,MAAMzB,EAAkB,CAAC,EACrC,UAAWjwC,EAAW,UACtB,MAAO,CAAC2xC,EAAgB1B,EAAiB0B,CAAa,EACtD,UAAW3xC,EAAW,UACtB,UAAW,EACX,OAAQ,EACxB,EACc,MAAO,CACL,MAAO,GACP,UAAWA,EAAW,UACtB,MAAO,CAAC,EAAG,CAAC,EACZ,UAAWA,EAAW,UACtB,UAAW,EACX,OAAQ,EACxB,CACA,CACA,CAAW,CACX,CAAS,EAAgBxe,OAAM,MAAO,CAC5B,UAAW,wBACX,SAAU,CAAC,sBAAuB,KAAK,MAAMyuD,EAAkB,IAAO,EAAE,EAAG,OAAO,CAC5F,CAAS,CAAC,CACV,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CC3KA,SAASx6D,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAMi8D,EAAa,EACnBr8D,GAAgBq8D,GAAc,iBAAkB,6BAA6B,EAC7Er8D,GAAgBq8D,GAAc,iBAAkB,6BAA6B,EAC7Er8D,GAAgBq8D,GAAc,gBAAiB,4BAA4B,EAC3Er8D,GAAgBq8D,GAAc,eAAgB,2BAA2B,EACzEr8D,GAAgBq8D,GAAc,mBAAoB,+BAA+B,ECRjF,SAASr8D,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAMk8D,EAAiB,EAEvBt8D,GAAgBs8D,GAAkB,gBAAiB,gCAAgC,EAEnFt8D,GAAgBs8D,GAAkB,kBAAmB,kCAAkC,EAEvFt8D,GAAgBs8D,GAAkB,kBAAmB,kCAAkC,EAEvFt8D,GAAgBs8D,GAAkB,oBAAqB,oCAAoC,EAE3Ft8D,GAAgBs8D,GAAkB,kBAAmB,kCAAkC,EAEvFt8D,GAAgBs8D,GAAkB,gBAAiB,gCAAgC,EAEnFt8D,GAAgBs8D,GAAkB,aAAc,6BAA6B,EAE7Et8D,GAAgBs8D,GAAkB,0BAA2B,0CAA0C,ECnBvG,SAASt8D,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAMm8D,EAAc,EACpBv8D,GAAgBu8D,GAAe,kBAAmB,8BAA8B,EAChFv8D,GAAgBu8D,GAAe,kBAAmB,8BAA8B,EAChFv8D,GAAgBu8D,GAAe,aAAc,yBAAyB,EACtEv8D,GAAgBu8D,GAAe,SAAU,sBAAsB,EAC/Dv8D,GAAgBu8D,GAAe,cAAe,0BAA0B,EACxEv8D,GAAgBu8D,GAAe,gBAAiB,4BAA4B,EAC5Ev8D,GAAgBu8D,GAAe,mBAAoB,8BAA8B,EACjFv8D,GAAgBu8D,GAAe,kBAAmB,8BAA8B,EAChFv8D,GAAgBu8D,GAAe,uBAAwB,kCAAkC,ECZzF,IAAI1tD,GAAY,CAAC,UAAU,EAC3B,SAAS5E,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,SAAS0O,GAAyB7O,EAAGG,EAAG,CAAE,GAAYH,GAAR,KAAW,MAAO,GAAI,IAAIW,EAAG,EAAG,EAAImO,GAA8B9O,EAAGG,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIY,EAAI,OAAO,sBAAsBf,CAAC,EAAG,IAAK,EAAI,EAAG,EAAIe,EAAE,OAAQ,IAAKJ,EAAII,EAAE,CAAC,EAAUZ,EAAE,QAAQQ,CAAC,IAAlB,IAAuB,GAAG,qBAAqB,KAAKX,EAAGW,CAAC,IAAM,EAAEA,CAAC,EAAIX,EAAEW,CAAC,EAAI,CAAE,OAAO,CAAG,CACrU,SAASmO,GAA8B7O,EAAG,EAAG,CAAE,GAAYA,GAAR,KAAW,MAAO,GAAI,IAAI,EAAI,GAAI,QAASc,KAAKd,EAAG,GAAI,GAAG,eAAe,KAAKA,EAAGc,CAAC,EAAG,CAAE,GAAW,EAAE,QAAQA,CAAC,IAAlB,GAAqB,SAAU,EAAEA,CAAC,EAAId,EAAEc,CAAC,CAAG,CAAE,OAAO,CAAG,CAStM,MAAMw7D,WAAkB9kD,eAAc,CACpC,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,CAC/D,CACA,mBAAoB,CAClB,GAAI,CACF,WAAAonC,CACN,EAAQ,KAAK,MACTA,EAAW,GAAG2qB,GAAa,eAAgB,KAAK,mBAAmB,EACnE3qB,EAAW,GAAG2qB,GAAa,eAAgB,KAAK,mBAAmB,EACnE3qB,EAAW,GAAG4qB,GAAiB,kBAAmB,KAAK,qBAAqB,CAC9E,CACA,sBAAuB,CACrB,GAAI,CACF,WAAA5qB,CACN,EAAQ,KAAK,MACTA,EAAW,IAAI2qB,GAAa,eAAgB,KAAK,mBAAmB,EACpE3qB,EAAW,IAAI2qB,GAAa,eAAgB,KAAK,mBAAmB,EACpE3qB,EAAW,IAAI4qB,GAAiB,kBAAmB,KAAK,qBAAqB,CAC/E,CACA,uBAAwB,CAItB,OAHI,CACF,kBAAAG,CACN,EAAQ,KAAK,MACA78D,EAAO,UAAU,OAAQ+rB,EAAO,IAAI,MAAM/rB,CAAI,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IAC/E6rB,EAAK7rB,CAAI,EAAI,UAAUA,CAAI,EAE7B28D,GAAsB,MAAwCA,EAAkB,GAAG9wC,CAAI,CACzF,CACA,oBAAoBk3B,EAAS,CAC3B,GAAI,CACF,eAAA6Z,CACN,EAAQ,KAAK,MACTA,GAAmB,MAAqCA,EAAe7Z,CAAO,CAChF,CACA,oBAAoBA,EAAS9oC,EAAQ,CACnC,GAAI,CACF,cAAA4iD,CACN,EAAQ,KAAK,MACTA,GAAkB,MAAoCA,EAAc9Z,EAAS9oC,CAAM,CACrF,CACA,QAAS,CACP,IAAI6iD,EAAc,KAAK,MACrB,CACE,SAAApxD,CACR,EAAUoxD,EACJC,EAAa/tD,GAAyB8tD,EAAa/tD,EAAS,EAG9D,OAAoBlD,MAAKgvC,GAAWzwC,GAAcA,GAAc,GAAI2yD,CAAU,EAAG,GAAI,CACnF,SAAUrxD,CAChB,CAAK,CAAC,CACJ,CACF,CACG,IAACsxD,GAAan8C,GAAiB67C,EAAS,ECxEvCz6C,GAAe,OAAO,OAAO,EAAE,EAC/BxiB,GAAY,IAAI,IAChBD,GAAc,OAAO,OAAO,EAAE,EAOvBy9D,GAAyB,CAAC96C,EAAOkxB,IAAgB,CAC1D,IAAI6pB,EACJ,OAAQA,EAAwB9pB,GAAiBjxB,EAAOkxB,CAAW,EAAE,WAAa,MAAQ6pB,IAA0B,OAASA,EAAwB19D,EACvJ,EAQW29D,GAA4B,CAACh7C,EAAOkxB,IAAgB,CAC7D,IAAI+pB,EACJ,OAAQA,EAAwBhqB,GAAiBjxB,EAAOkxB,CAAW,EAAE,cAAgB,MAAQ+pB,IAA0B,OAASA,EAAwB59D,EAC1J,EAOW69D,GAA8B,CAACl7C,EAAOkxB,IAAgB,CAC/D,IAAIiqB,EACJ,OAAQA,EAAyBlqB,GAAiBjxB,EAAOkxB,CAAW,EAAE,WAAa,MAAQiqB,IAA2B,OAASA,EAAyB99D,EAC1J,EAOW+9D,GAA0B,CAACp7C,EAAOkxB,IAAgB,CAC3D,IAAImqB,EACJ,OAAQA,EAAwBpqB,GAAiBjxB,EAAOkxB,CAAW,EAAE,YAAc,MAAQmqB,IAA0B,OAASA,EAAwB/9D,EACxJ,EAOWg+D,GAAuC,CAACt7C,EAAOkxB,IAAgBD,GAAiBjxB,EAAOkxB,CAAW,EAAE,sBAOpGqqB,GAAuB,CAACv7C,EAAOkxB,IAAgB,CACxD,IAAIsqB,EACJ,OAAQA,EAAwBvqB,GAAiBjxB,EAAOkxB,CAAW,EAAE,SAAW,MAAQsqB,IAA0B,OAASA,EAAwBn+D,EACrJ,EAOWo+D,GAA0C,CAACz7C,EAAOkxB,IAAgBD,GAAiBjxB,EAAOkxB,CAAW,EAAE,yBAOvGwqB,GAA8B,CAAC17C,EAAOkxB,IAAgB,CAC/D,IAAIyqB,EACJ,OAAQA,EAAwB1qB,GAAiBjxB,EAAOkxB,CAAW,EAAE,mBAAqB,MAAQyqB,IAA0B,OAASA,EAAwB77C,EAC/J,EAQW87C,GAAyB,CAAC57C,EAAOkxB,IAAgBD,GAAiBjxB,EAAOkxB,CAAW,EAAE,WAQtF2qB,GAA6B,CAAC77C,EAAOkxB,IAAgBD,GAAiBjxB,EAAOkxB,CAAW,EAAE,eC9FrG,SAASnzC,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAavT,IAAIwH,GAAMC,EAAI,OAAO,qBAAqB,EAC1C,MAAMk2D,WAA4B1zD,WAAU,CAC1C,OAAO,YAAY5I,EAAO,CACxBmG,GAAI,MAAMnG,CAAK,CACjB,CACA,YAAY6I,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,YAAa,MAAM,EACzCA,GAAgB,KAAM,UAAW,MAAM,EACvC,KAAK,mBAAqB,KAAK,mBAAmB,KAAK,IAAI,EAC3D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,UAAyBuK,EAAM,UAAS,EAC7C,KAAK,QAAU,IAAI1F,GACnB,GAAI,CACF,QAAAg+C,EACA,UAAAmb,EACA,SAAA7gB,CACN,EAAQ7yC,EACJ,KAAK,MAAQ,CAEX,WAAY,GACZ,QAAAu4C,EACA,UAAAmb,EACA,SAAA7gB,EACA,eAAgB,CAAC,CACf,OAAQ,KAAK,mBACb,SAAUwD,GAAU,gBAAgB,aAC5C,CAAO,CACP,CACE,CACA,mBAAoB,CAClB,GAAI,CACF,WAAAjP,EACA,QAAAmR,CACN,EAAQ,KAAK,MACTnR,EAAW,GAAG2qB,GAAa,cAAe,KAAK,kBAAkB,EAC7DxZ,GAAW,MACb,KAAK,UAAS,CAElB,CACA,sBAAuB,CACrB,GAAI,CACF,WAAAnR,CACN,EAAQ,KAAK,MACTA,EAAW,IAAI2qB,GAAa,cAAe,KAAK,kBAAkB,EAClE,KAAK,QAAQ,OAAM,CACrB,CACA,oBAAqB,CACf,KAAK,UAAU,SACjB,KAAK,UAAU,QAAQ,MAAK,CAEhC,CACA,YAAa,CACX,IAAI/nD,GAEHA,EAAwB,KAAK,UAAU,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,sBAAqB,CAC9I,CACA,oBAAoBuuC,EAASx1C,EAAM,CACjC,GAAI,CACF,SAAA8vC,EACA,UAAA6gB,CACN,EAAQ3wD,EACJ,KAAK,SAAS,CACZ,QAAAw1C,EACA,UAAAmb,EACA,SAAA7gB,CACN,EAAO,IAAM,CACP,KAAK,UAAS,CAChB,CAAC,CACH,CACA,qBAAsB,CACpB,KAAK,QAAQ,OAAM,EACnB,KAAK,SAAS,CACZ,QAAS,OACT,SAAU,OACV,MAAO,MACb,CAAK,CACH,CACA,qBAAqBt6B,EAAU,CAC7B,IAAIo7C,EAAmB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACvF,CACF,QAAApb,EACA,SAAA1F,CACN,EAAQ,KAAK,MAET,GADAv1C,GAAI,MAAM,uBAAwBi7C,EAAShgC,CAAQ,EAC/C,CAACggC,EAAS,CACZj7C,GAAI,MAAM,2BAA2B,EACrC,MACF,CACA,GAAI,CACF,WAAA8pC,CACN,EAAQ,KAAK,MACTA,EAAW,KAAKusB,EAAmB1B,GAAc,gBAAkBA,GAAc,iBAAkB1Z,EAAS1F,EAAUt6B,CAAQ,CAChI,CACA,oBAAoB2lC,EAAS,CAC3B,IAAIV,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5EC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAClFngD,GAAI,MAAM,sBAAuB4gD,CAAO,EACxC,GAAI,CACF,WAAA9W,CACN,EAAQ,KAAK,MACTA,EAAW,KAAK2qB,GAAa,aAAc7T,EAASV,EAAOC,CAAO,CACpE,CACA,WAAY,CACV,GAAI,CACF,sBAAAkC,CACN,EAAQ,KAAK,MACL,CACF,SAAA9M,EACA,UAAA6gB,CACN,EAAQ,KAAK,MACTpwB,EAAcuP,CAAQ,EACtBvP,EAAcowB,CAAS,EACvB,KAAK,QAAQ,IAAI/T,EAAsB,SAAS9M,EAAU6gB,EAAW,KAAK,IAAG,CAAE,EAAG55D,GAAYA,EAAS,MAAK,CAAE,EAAE,KAAK+lD,GAAS,CAC5H,KAAK,SAAS,CACZ,MAAAA,CACR,CAAO,CACH,CAAC,EAAE,MAAM4T,GAAoB,WAAW,CAC1C,CACA,QAAS,CACP,GAAI,CACF,YAAArxB,EACA,WAAAgF,EACA,sBAAAuY,CACN,EAAQ,KAAK,MACL,CACF,SAAA9M,EACA,eAAAroC,EACA,MAAAq1C,CACN,EAAQ,KAAK,MACT,OAAoBp+C,OAAMmyD,GAAO,CAC/B,UAAW,uBACX,eAAgB,KAChB,YAAaxxB,EACb,WAAYgF,EACZ,cAAe,KAAK,oBACpB,eAAgB,KAAK,oBACrB,OAAQ,KAAK,WACb,SAAU,CAAC,CAACyY,GAAsBx+C,MAAK,MAAO,CAC5C,UAAW,uCACX,SAAU,gCAClB,CAAO,EAAGw+C,GAAShN,GAAY,MAAqBpxC,OAAM0C,WAAW,CAC7D,SAAU,CAAc9C,MAAK0rD,GAAgB,CAC3C,IAAK,KAAK,UACV,SAAUla,EACV,eAAgB,KAAK,qBACrB,cAAe,KAAK,oBACpB,MAAOgN,EACP,sBAAuBF,CACjC,CAAS,EAAgBt+C,MAAKqI,GAAgB,CACpC,QAASc,CACnB,CAAS,CAAC,CACV,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACA9U,GAAgB+9D,GAAqB,YAAa,qBAAqB,EACvE/9D,GAAgB+9D,GAAqB,QAAS,iBAAiB,EAC/D,IAAIjkB,GAAkB,CAAC/hC,EAAOomD,IAAa,CACzC,IAAIlU,EAAwB7nC,GAAyBrK,CAAK,EACtDqmD,EAAiBN,GAA2B/lD,EAAOomD,EAAS,gBAAgB,EAC5E,CACF,QAAAtb,EACA,OAAQwb,CACZ,EAAMD,GAAwE,GACxE,CACF,KAAMjhB,EACN,GAAI6gB,CACR,EAAMK,GAAqE,GACzE,MAAO,CACL,sBAAApU,EACA,SAAA9M,EACA,QAAA0F,EACA,UAAAmb,CACJ,CACA,EACIM,GAA+BtkB,GAAQF,GAAiB,KAAM,KAAM,CACtE,WAAY,EACd,CAAC,EAAEikB,EAAmB,ECrMtB,SAAS9zD,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAoBvT,IAAIwH,GAAMC,EAAI,OAAO,cAAc,EAC/B02D,GAA8B,IAC9BC,GAAsB,OAAO,OAAO,CACtC,gBAAiB,GACjB,QAAS,EACX,CAAC,EACM,MAAMC,WAAqB/mD,eAAc,CAG9C,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,aAAc,MAAM,EAC1CA,GAAgB,KAAM,4BAA6B,MAAM,EACzDA,GAAgB,KAAM,iBAAkBoJ,GAAS,IAAM,CACrD,GAAI,CACF,gBAAAs1D,EACA,QAAAC,CACR,EAAU,KAAK,MACL1wB,EAAa,CACf,gBAAAywB,EACA,QAAS,CAAC,GAAGC,CAAO,CAC5B,EACM/2D,GAAI,MAAM,qBAAsBqmC,CAAU,EAE1C,KAAK,SAAS,CACZ,WAAAA,CACR,CAAO,CACH,EAAGswB,EAA2B,CAAC,EAC/B,KAAK,0BAA4B,KAAK,0BAA0B,KAAK,IAAI,EACzE,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,qBAAuB,KAAK,qBAAqB,KAAK,IAAI,EAC/D,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,WAA0Bh0D,EAAM,UAAS,EAC9C,GAAI,CACF,WAAYq0D,CAClB,EAAQt0D,EACAu0D,EAAc30D,GAAcA,GAAc,GAAIs0D,EAAmB,EAAGI,GAAqB,EAAE,EAC3F,CACF,gBAAiBE,EACjB,QAASC,CACf,EAAQF,EACJ,KAAK,MAAQ,CACX,gBAAiBC,EACjB,QAAS,IAAI,IAAIC,CAAQ,EACzB,UAAW,IAAI,IACf,MAAO,OAEP,WAAYF,CAClB,CACE,CACA,mBAAoB,CAClB,GAAI,CACF,WAAAntB,CACN,EAAQ,KAAK,MAGT,KAAK,wBAAuB,EAC5BA,EAAW,GAAG9C,EAAW,MAAO,KAAK,gBAAgB,EACrD,KAAK,wBAAuB,CAC9B,CACA,mBAAmBnkC,EAAW4B,EAAW,CACvC,GAAI,CACF,gBAAAqyD,EACA,QAAAC,CACN,EAAQ,KAAK,OACLtyD,EAAU,kBAAoBqyD,GAAmBryD,EAAU,UAAYsyD,IACzE,KAAK,eAAc,CAEvB,CACA,sBAAuB,CACrB,IAAIK,EACA,CACF,WAAAttB,CACN,EAAQ,KAAK,MACT,KAAK,eAAe,MAAK,EACzBA,EAAW,IAAI9C,EAAW,MAAO,KAAK,gBAAgB,GACrDowB,EAAwB,KAAK,6BAA+B,MAAQA,IAA0B,QAAUA,EAAsB,KAAK,IAAI,CAC1I,CACA,yBAA0B,CACxB,GAAI,CACF,eAAAZ,CACN,EAAQ,KAAK,MACT,GAAIA,GAAkB,KAGtB,IAAI,CACF,QAAAvb,CACN,EAAQub,EACJ,KAAK,0BAA4Bvb,EAAQ,wBAAwBoc,GAAW,CAC1Er3D,GAAI,MAAM,cAAeq3D,CAAO,EAChC,KAAK,SAAS5xD,GAAQ,CACpB,GAAI,CACF,UAAAklD,CACV,EAAYllD,EACA,CACF,QAAAwyC,EACA,QAAAD,EACA,QAAA0T,CACV,EAAY2L,EAGAC,EAAkB,CAAC,GAAGrf,EAAS,GAAGyT,CAAO,EACzC6L,EAAe,IAAI,IAAI5M,CAAS,EACpC2M,EAAgB,QAAQE,GAAY,CAClC,GAAI,CACF,MAAApyC,CACZ,EAAcoyC,EACApyC,IAAU,QACZmyC,EAAa,OAAOnyC,CAAK,CAE7B,CAAC,EAGD,IAAIqyC,EAAe,CAAC,GAAGxf,EAAS,GAAGD,CAAO,EAC1C,OAAAyf,EAAa,QAAQC,GAAS,CACxBA,EAAM,QAAU,QAClBH,EAAa,IAAIG,EAAM,MAAOA,CAAK,CAEvC,CAAC,EACM,CACL,UAAWH,CACrB,CACM,CAAC,CACH,CAAC,EACH,CACA,UAAU39D,EAAMyV,EAAI,CAClB,KAAK,SAASsF,GAAS,CACrB,GAAI,CACF,QAAAoiD,CACR,EAAUpiD,EACAgjD,EAAa,IAAI,IAAIZ,CAAO,EAChC,OAAAY,EAAW,IAAI/9D,EAAMyV,CAAE,EAChB,CACL,QAASsoD,CACjB,CACI,CAAC,CACH,CACA,UAAU/9D,EAAM,CACd,IAAI0qC,EAAoB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxF,CACF,QAAAyyB,CACN,EAAQ,KAAK,MACL1nD,EAAK0nD,EAAQ,IAAIn9D,CAAI,EACzB,OAAIyV,GAAM,MAAQi1B,IAChBj1B,EAAKC,GAAM,EACX,KAAK,UAAU1V,EAAMyV,CAAE,GAElBA,CACT,CACA,gBAAiB,CACf,IAAIuoD,GACHA,EAAwB,KAAK,WAAW,WAAa,MAAQA,IAA0B,QAAUA,EAAsB,MAAK,CAC/H,CACA,iBAAiBnxB,EAAO,CACtB,IAAIoxB,EAAcC,EACd,CACF,QAAAf,CACN,EAAQ,KAAK,MACLtuB,EAAUhC,GAAU,OAA6BoxB,EAAepxB,EAAM,SAAW,MAAQoxB,IAAiB,OAAS,OAASA,EAAa,GACzIE,EAAWtxB,GAAU,OAA6BqxB,EAAgBrxB,EAAM,SAAW,MAAQqxB,IAAkB,SAAWA,EAAgBA,EAAc,YAAc,MAAQA,IAAkB,OAAS,OAASA,EAAc,cAClO,GAAIrvB,GAAWsvB,EAAU,CAEvB,IAAIC,EAAY,IAAI,IAAIjB,EAAQ,OAAM,CAAE,EACpCiB,EAAU,IAAID,CAAQ,GAExB,KAAK,UAAUtvB,EAASA,CAAO,CAEnC,CACF,CACA,2BAA4B,CAC1B,GAAI,CACF,WAAAqB,CACN,EAAQ,KAAK,MACTA,EAAW,KAAK2qB,GAAa,aAAa,CAC5C,CACA,cAAe,CACb,KAAK,iBAAgB,CACvB,CACA,YAAa,CACX,KAAK,iBAAgB,CACvB,CACA,iBAAiBld,EAAQ,CACvB,IAAI0gB,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACpFjyB,EAAc,KAAK,OAAO,EAC1B,GAAI,CACF,KAAAvG,CACN,EAAQ,KAAK,QACLy4B,EAAa3gB,EAAO,OAAS,KAAO,KAAK,UAAUA,EAAO,MAAO,EAAK,EAAI,MAC1E0gB,GAAaC,GAAc,MAAQ/0B,EAAY,gBAAgB1D,EAAM,CACvE,GAAIy4B,CACV,EAAO,GAAO,GAAO,EAAK,GAAK,OACzB,KAAK,WAAW3gB,CAAM,CAE1B,CACA,kBAAkBA,EAAQ,CACxB,GAAI,CACF,MAAAnyB,CACN,EAAQmyB,EACJ,GAAInyB,IAAU,OAAW,CACvB,IAAI/V,EAAK,KAAK,UAAU+V,EAAO,EAAK,EACpC,GAAI/V,GAAM,KAAM,CACd,GAAI,CACF,WAAAy6B,CACV,EAAY,KAAK,MACTA,EAAW,KAAK9C,EAAW,MAAO33B,CAAE,EAEpC2hC,GAAmBlH,EAAY1kB,CAAK,CACtC,CACF,CACF,CACA,qBAAqB0xC,EAAiB,CACpC,GAAI,CACF,WAAAhtB,CACN,EAAQ,KAAK,MACT9pC,GAAI,MAAM,uBAAwB82D,CAAe,EACjD,KAAK,SAAS,CACZ,gBAAAA,CACN,CAAK,EACDhtB,EAAW,KAAK2qB,GAAa,iBAAkBqC,CAAe,CAChE,CAKA,WAAWqB,EAAQ,CACjB,GAAI,CACF,WAAAruB,EACA,eAAA0sB,CACN,EAAQ,KAAK,MACTxwB,EAAcwwB,CAAc,EAC5B,GAAI,CACF,OAAAh5C,EACA,QAAAy9B,CACN,EAAQub,EACA,CACF,MAAApxC,EAAQ+yC,EAAO,IACrB,EAAQA,EACJnyB,EAAc5gB,CAAK,EACnB,IAAIqjB,EAAU,KAAK,UAAUrjB,CAAK,EAC9BgzC,EAAc,CAChB,MAAO,IAAMnd,EAAQ,UAAUkd,CAAM,EACrC,QAAA1vB,EACA,OAAQnmC,GAAcA,GAAc,GAAIwX,GAAsBq+C,CAAM,CAAC,EAAG,GAAI,CAC1E,UAAW36C,EAAO,EAC1B,CAAO,CACP,EACIxd,GAAI,MAAM,aAAco4D,CAAW,EACnClxB,GAAc4C,EAAYsuB,CAAW,CACvC,CACA,WAAWxX,EAAS,CAClB,IAAIyX,EACAnY,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5EC,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,IACjFkY,EAAyB,KAAK,WAAW,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,WAAWzX,EAASV,EAAOC,CAAO,CAC/J,CAMA,yBAA0B,CACxB,IAAImY,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC5E,CACF,gBAAAxB,EACA,QAAAC,CACN,EAAQ,KAAK,MACL,CACF,iCAAAnK,EAAmC,EACzC,EAAQkK,EACJ,GAAI,GAAClK,GAAoC,CAAC0L,GAG1C,KAAIC,EAAkB,CAAC,GAAGxB,EAAQ,OAAM,CAAE,EACtC,CACF,WAAAjtB,CACN,EAAQ,KAAK,MACTyuB,EAAgB,QAAQ9vB,GAAW,CACjCqB,EAAW,KAAK9C,EAAW,MAAOyB,CAAO,CAC3C,CAAC,EACD,KAAK,SAAS,CACZ,QAAS,IAAI,GACnB,CAAK,EACH,CACA,kBAAmB,CACjB,IAAI+vB,GACHA,EAAyB,KAAK,WAAW,WAAa,MAAQA,IAA2B,QAAUA,EAAuB,iBAAgB,CAC7I,CACA,aAAa9wD,EAAM,CACjB,GAAI,CACF,QAAA+wD,CACN,EAAQ,KAAK,MACT,MAAO,CAAC,GAAGA,EAAQ,QAAQ,EAAE,KAAK14C,GAAUW,GAAmBX,EAAQrY,CAAI,CAAC,CAC9E,CACA,YAAYA,EAAM,CAChB,GAAI,CACF,QAAA+wD,CACN,EAAQ,KAAK,MACL14C,EAAS,CAAC,GAAG04C,EAAQ,OAAM,CAAE,EAAE,KAAKC,GAAKh4C,GAAmBg4C,EAAGhxD,CAAI,CAAC,EACxE,OAAIqY,GAAU,KACLY,GAAiBZ,CAAM,EAGZhc,MAAKmxC,GAAY,CACnC,KAAMxtC,CACZ,CAAK,CACH,CACA,QAAS,CACP,GAAI,CACF,sBAAA26C,EACA,YAAAvd,EACA,WAAAgF,EACA,eAAA0sB,EACA,SAAAv3C,EACA,MAAAqpC,CACN,EAAQ,KAAK,MACT,GAAIkO,GAAkB,KACpB,OAAoBzyD,MAAKsU,GAAgB,CACvC,UAAW,GACX,aAAc,uBACd,cAAe,6BACvB,CAAO,EAEH,GAAI,CACF,gBAAAy+C,EACA,MAAAj9D,EACA,UAAA8wD,CACN,EAAQ,KAAK,MACL,CACF,OAAAntC,EACA,QAAAy9B,EACA,WAAAuX,EACA,QAAAmG,EAAU,GACV,GAAAx6C,CACN,EAAQq4C,EACA,CACF,WAAAoC,EACA,cAAAC,CACN,EAAQF,EACA,CACF,GAAIvC,EACJ,KAAM7gB,CACZ,EAAQ/3B,EACJ,OAAoBzZ,MAAKuyD,GAAO,CAC9B,UAAW,qBACX,eAAgB,KAChB,YAAaxxB,EACb,WAAYgF,EACZ,SAAU,KAAK,aACf,OAAQ,KAAK,WACb,WAAY,KAAK,eACjB,aAAcjwC,GAAS,KAAO,GAAG,OAAOA,CAAK,EAAI,OACjD,SAAUohD,GAAW,MAAqBl3C,MAAKymD,GAAS,CACtD,GAAIrsC,EACJ,IAAK,KAAK,WACV,SAAU24C,EACV,QAAS7b,EACT,oBAAqB,KAAK,0BAC1B,WAAY,KAAK,iBACjB,YAAa,KAAK,kBAClB,sBAAuBoH,EACvB,iBAAkB,KAAK,qBACvB,SAAU9M,EACV,kBAAgCpxC,OAAM0C,WAAW,CAC/C,SAAU,CAAc9C,MAAK,MAAO,CAClC,SAAU+xC,GAAiB,aAAa,IAAIP,CAAQ,CAChE,CAAW,EAAGqjB,GAAc,MAAqBz0D,OAAM0C,WAAW,CACtD,SAAU,CAAc9C,MAAK,MAAO,CAClC,SAAU,GACxB,CAAa,EAAG60D,CAAU,CAC1B,CAAW,EAAGC,GAAiB,MAAqB10D,OAAM0C,WAAW,CACzD,SAAU,CAAc9C,MAAK,MAAO,CAClC,SAAU,GACxB,CAAa,EAAG80D,EAA4B90D,MAAK,MAAO,CAC1C,SAAU,GACxB,CAAa,CAAC,CACd,CAAW,EAAgBA,MAAKuuD,GAAW,CAC/B,WAAYE,EACZ,sBAAuB,GAAK,IAC5B,oBAAqB,EAAI,IACzB,gBAAiB,GAAK,GAAK,GACvC,CAAW,CAAC,CACZ,CAAS,EACD,gBAAiB,GACjB,MAAO4D,EACP,SAAUn3C,EACV,UAAW0rC,EACX,MAAOrC,EACP,aAAc,KAAK,aACnB,YAAa,KAAK,WAC1B,CAAO,CACP,CAAK,CACH,CACF,CACAlwD,GAAgBy+D,GAAc,YAAa,cAAc,EACzDz+D,GAAgBy+D,GAAc,QAAS,SAAS,EAChDz+D,GAAgBy+D,GAAc,cAAevsB,EAAoB,EACjE,IAAI4H,GAAkB,CAAC/hC,EAAOomD,KAAc,CAC1C,sBAAuB/7C,GAAyBrK,CAAK,EACrD,eAAgB+lD,GAA2B/lD,EAAOomD,EAAS,gBAAgB,EAC3E,SAAUr7C,GAAY/K,CAAK,EAC3B,QAASmL,GAAWnL,CAAK,CAC3B,GACI2oD,GAAwB1mB,GAAQF,GAAiB,KAAM,KAAM,CAC/D,WAAY,EACd,CAAC,EAAE2kB,EAAY,EC7aR,SAASkC,GAAWrxD,EAAM,CAC/B,OAAOA,IAAS,QAAUA,IAAS,WACrC,CACO,SAASsxD,GAAY9U,EAAM,CAChC,OAAOA,EAAK,OAAS,WACvB,CCTA,SAAS9rD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CACvT,MAAMygE,WAA0B,KAAM,CACpC,aAAc,CACZ,MAAM,sCAAsC,EAC5C7gE,GAAgB,KAAM,iBAAkB,EAAI,CAC9C,CACF,CCRA,SAASW,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAMzT,IAAI4/D,GAAyB,SAAUA,EAAW,CACvD,OAAAA,EAAU,OAAY,gBACtBA,EAAU,WAAgB,aAC1BA,EAAU,OAAY,gBACtBA,EAAU,gBAAqB,4BAC/BA,EAAU,MAAW,eACrBA,EAAU,QAAa,GAChBA,CACT,EAAE,EAAE,EAKG,MAAMC,CAAU,CACrB,OAAO,WAAWC,EAAax/D,EAAM,CACnC,OAAOP,GAAkB,WAAa,CACpC,GAAI,CACF,aAAM+/D,EAAY,KAAKx/D,CAAI,EACpB,EACT,OAASvB,EAAG,CAEV,GAAI,EAAEA,aAAa4gE,IACjB,MAAM5gE,EAER,MAAO,EACT,CACF,CAAC,EAAC,CACJ,CAOA,OAAO,uBAAwB,CAC7B,IAAIghE,EAAY,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACpF,OAAOA,EAAU,SAAW,EAAI,GAAK,IAAI,OAAOA,CAAS,CAC3D,CAMA,OAAO,SAASz/D,EAAM,CACpB,IAAI0/D,EACJ,GAAI,CAACH,EAAU,QAAQv/D,CAAI,EACzB,MAAM,IAAI,MAAM,0BAA0B,OAAOA,CAAI,CAAC,EAExD,IAAI6rB,GAAW6zC,EAAc1/D,EAAK,MAAM,KAAK,KAAO,MAAQ0/D,IAAgB,OAASA,EAAc,GACnG,OAAO7zC,EAAQ,OAAS,CAC1B,CAQA,OAAO,aAAa7rB,EAAM,CACxB,IAAI8F,EAAa,KAAK,YAAY9F,CAAI,EAAE,MAAM,GAAG,EACjD,GAAI8F,EAAW,OAAS,EAAG,CACzB,IAAI65D,EACJ,OAAQA,EAAkB75D,EAAW,IAAG,KAAQ,MAAQ65D,IAAoB,OAASA,EAAkB,EACzG,CACA,MAAO,EACT,CAOA,OAAO,YAAY3/D,EAAM,CACvB,IAAI4/D,EACJ,OAAQA,EAAkB5/D,EAAK,MAAM,GAAG,EAAE,IAAG,KAAQ,MAAQ4/D,IAAoB,OAASA,EAAkB,EAC9G,CAOA,OAAO,gBAAgBC,EAAc,CACnC,IAAIC,EAAoBD,EAAa,YAAY,GAAG,EAChDJ,EAAY,KACZz/D,EAAO,KACP8/D,EAAoB,EAEtB9/D,EAAO6/D,GAEP7/D,EAAO6/D,EAAa,UAAU,EAAGC,CAAiB,EAClDL,EAAYI,EAAa,UAAUC,EAAoB,CAAC,GAE1D,IAAIC,EAAW//D,EAAO,GAAG,OAAOA,EAAM,OAAO,EAAI,OACjD,OAAOy/D,IAAc,KAAO,GAAG,OAAOM,EAAU,GAAG,EAAE,OAAON,CAAS,EAAIM,CAC3E,CACA,OAAO,sBAAsBP,EAAaK,EAAc,CACtD,OAAOpgE,GAAkB,WAAa,CAIpC,QAHIsgE,EAAWR,EAAU,gBAAgBM,CAAY,EAG9C,MAAMN,EAAU,WAAWC,EAAaO,CAAQ,GACrDA,EAAWR,EAAU,gBAAgBQ,CAAQ,EAE/C,OAAOA,CACT,CAAC,EAAC,CACJ,CAOA,OAAO,YAAY//D,EAAM,CACvB,IAAIy/D,EAAY,KAAK,aAAaz/D,CAAI,EAAE,YAAW,EACnD,OAAQy/D,EAAS,CACf,IAAK,SACH,OAAOH,GAAU,OACnB,IAAK,KACH,OAAOA,GAAU,OACnB,IAAK,MACH,OAAOA,GAAU,gBACnB,IAAK,QACH,OAAOA,GAAU,MACnB,IAAK,MACH,OAAOA,GAAU,WACnB,QACE,OAAOA,GAAU,OACzB,CACE,CAMA,OAAO,UAAUt/D,EAAM,CACrB,GAAI,CAACu/D,EAAU,QAAQv/D,CAAI,EACzB,MAAM,IAAI,MAAM,0BAA0B,OAAOA,CAAI,CAAC,EAGxD,QADIggE,EAAQhgE,EAAK,MAAM,GAAG,EACnBggE,EAAM,IAAG,IAAO,IAAG,CAC1B,GAAIA,EAAM,SAAW,EACnB,MAAM,IAAI,MAAM,gCAAgC,OAAOhgE,CAAI,CAAC,EAE9D,MAAO,GAAG,OAAOggE,EAAM,KAAK,GAAG,EAAG,GAAG,CACvC,CAOA,OAAO,QAAQhgE,EAAM,CACnB,GAAI,CAACu/D,EAAU,QAAQv/D,CAAI,EACzB,MAAM,IAAI,MAAM,8BAA8B,OAAOA,CAAI,CAAC,EAE5D,IAAIggE,EAAQhgE,EAAK,MAAM,GAAG,EAC1B,OAAAggE,EAAM,IAAG,EACF,GAAG,OAAOA,EAAM,KAAK,GAAG,EAAG,GAAG,CACvC,CAOA,OAAO,QAAQhgE,EAAM,CACnB,OAAOA,EAAK,WAAW,GAAG,CAC5B,CAOA,OAAO,OAAOA,EAAM,CAClB,OAAOA,EAAK,WAAW,GAAG,GAAKA,EAAK,SAAS,GAAG,CAClD,CAMA,OAAO,SAASA,EAAM,CACpB,OAAKA,EAAK,SAAS,GAAG,EAGfA,EAFE,GAAG,OAAOA,EAAM,GAAG,CAG9B,CAOA,OAAO,iBAAiBA,EAAM,CAC5B,IAAIigE,EAAe,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACnFn8D,EAAQ9D,EAAK,YAAY,GAAG,EAC5BkgE,EAAuBp8D,EAAQ,GAAK9D,EAAK,UAAU,EAAG8D,CAAK,EAAI9D,EAC/DmgE,EAAkBZ,EAAU,sBAAsBU,CAAY,EAClE,MAAO,GAAG,OAAOC,CAAoB,EAAE,OAAOC,CAAe,CAC/D,CAMA,OAAO,aAAangE,EAAM,CAExB,IAAIogE,EAAgB,CAAC,IAAK,IAAI,EAE1BC,EAAoB,WACpBC,EAAoB,IAAI,IAAI,CAAC,CAAC,KAAM,MAAM,CAAC,CAAC,EAChD,GAAI,CAACtgE,EACH,MAAM,IAAI+F,GAAgB,sBAAsB,EAElD,GAAIq6D,EAAc,SAASpgE,CAAI,EAC7B,MAAM,IAAI+F,GAAgB,IAAK,OAAO/F,EAAM,sBAAuB,CAAC,EAEtE,GAAIqgE,EAAkB,KAAKrgE,CAAI,EAAG,CAChC,IAAIugE,EAAuBC,EAC3B,MAAM,IAAIz6D,GAAgB,gCAAiC,QAAQw6D,GAAyBC,EAAexgE,EAAK,MAAMqgE,CAAiB,KAEjI,MAAQG,IAAiB,OAAS,OAASA,EAAa,OAAO,CAACj8D,EAAKk8D,IAASl8D,EAAI,SAASk8D,CAAI,EAAIl8D,EAAM,CAAC,GAAGA,EAAKk8D,CAAI,EAAG,EAAE,EAAE,IAAIvT,GAAQoT,EAAkB,IAAIpT,CAAI,EAAIoT,EAAkB,IAAIpT,CAAI,EAAIA,CAAI,EAAE,KAAK,MAAM,KAAO,MAAQqT,IAA0B,OAASA,EAAwB,GAAI,GAAI,CAAC,CACjT,CACF,CAOA,OAAO,YAAYG,EAAO,CACxB,IAAIC,EAAUD,EAAM,OAAOE,GAAQrB,EAAU,OAAOqB,CAAI,CAAC,EACzD,OAAOF,EAAM,OAAOE,GAAQ,CAACD,EAAQ,KAAKE,GAAUD,IAASC,GAAUD,EAAK,WAAWC,CAAM,CAAC,CAAC,CACjG,CAQA,OAAO,WAAWh7B,EAAMi7B,EAAU,CAChC,GAAIj7B,EAAK,SAAW,EAClB,OAAOi7B,EAET,GAAI,CAACA,EAAS,WAAWj7B,CAAI,EAC3B,MAAM,IAAI,MAAM,YAAY,OAAOi7B,EAAU,qCAAqC,EAAE,OAAOj7B,CAAI,CAAC,EAElG,OAAOi7B,EAAS,UAAUj7B,EAAK,MAAM,CACvC,CAOA,OAAO,QAAQA,EAAM+6B,EAAM,CACzB,MAAO,GAAG,OAAO/6B,CAAI,EAAE,OAAO+6B,CAAI,CACpC,CACF,CC1QO,IAAIG,GAAqB,GACzB,SAASC,GAAgB1W,EAAM,CACpC,OAAO8U,GAAY9U,CAAI,EAAIiV,EAAU,SAASjV,EAAK,QAAQ,EAAIiV,EAAU,QAAQjV,EAAK,QAAQ,CAChG,CAKO,SAAS2W,GAAiBC,EAAcC,EAAY,CACzD,GAAID,EAAa,SAAW,GAAKC,GAAc,KAC7C,MAAM,IAAI,MAAM,kBAAkB,EAEpC,IAAIC,EAAaJ,GAAgBG,CAAU,EAC3C,GAAID,EAAa,KAAKr1D,GAAQ,CAC5B,GAAI,CACF,SAAAi1D,CACN,EAAQj1D,EACJ,OAAO0zD,EAAU,QAAQuB,CAAQ,IAAMM,CACzC,CAAC,EAEC,MAAM,IAAI,MAAM,wCAAwC,EAE1D,GAAIF,EAAa,KAAK59D,GAAQ87D,GAAY97D,CAAI,GAAK89D,EAAW,WAAW7B,EAAU,SAASj8D,EAAK,QAAQ,CAAC,CAAC,EAEzG,MAAM,IAAI,MAAM,0DAA0D,EAE5E,MAAO,CACL,MAAO49D,EACP,WAAAE,CACJ,CACA,CCjBA,SAASC,GAAY/9D,EAAM,CACzB,GAAI87D,GAAY97D,CAAI,EAClB,OAAOA,EAAK,WAAag+D,GAAiBC,GAE5C,IAAIC,EAAWjC,EAAU,YAAYj8D,EAAK,QAAQ,EAClD,OAAQk+D,EAAQ,CACd,KAAKlC,GAAU,OACb,OAAOmC,GACT,QACE,OAAOC,EACb,CACA,CACO,SAASC,GAAa74D,EAAO,CAClC,IAAI84D,EACA,CACF,SAAA53D,EACA,aAAAk3D,EACA,iBAAAW,EACA,kBAAAC,EACA,WAAAnnD,EACA,KAAArX,EACA,UAAA0W,EACA,eAAA+nD,EACA,YAAaC,EACb,WAAYC,EACZ,UAAWC,EACX,WAAAC,EACA,OAAQC,CACZ,EAAMt5D,EACAu5D,GAAaT,EAAqBV,GAAiB,KAAkC,OAASA,EAAa,KAAKoB,GAAeA,EAAY,KAAOh/D,EAAK,EAAE,KAAO,MAAQs+D,IAAuB,OAASA,EAAqB,GAC7NW,EAAWvB,GAAgB19D,CAAI,EAC/Bk/D,EAAiBX,GAAoBE,EAAiBf,GAAgBe,CAAc,EAAI,KACxFU,EAAoBZ,GAAoBC,GAAqB1C,GAAY97D,CAAI,GAAKk/D,IAAmBD,EACrGG,EAAiBb,GAAoBC,GAAqBU,IAAmBD,EAC7EI,EAAsBd,GAAoB,CAACC,GAAqBU,IAAmBD,EACnFv0D,EAAOqzD,GAAY/9D,CAAI,EACvBs/D,EAAQrD,EAAU,SAASj8D,EAAK,QAAQ,EACxCu/D,EAAa,MAAMD,CAAK,EAAE,KAAK,IAAI,EAAE,IAAI,CAAC1kE,EAAO4F,IAGrDqG,MAAK,OAAQ,CACX,UAAW,sBACf,EAAKrG,CAAK,CAAC,EACT,OAAoByG,OAAM,MAAO,CAC/B,UAAWD,EAAW,kCAAmC,iBAAkB,CACzE,aAAc+3D,EACd,uBAAwBI,EACxB,oBAAqBC,EACrB,yBAA0BC,EAC1B,cAAehoD,CACrB,CAAK,EACD,YAAalc,GAAKujE,EAAahoD,EAAWvb,CAAC,EAC3C,WAAYA,GAAKwjE,EAAYjoD,EAAWvb,CAAC,EACzC,UAAWA,GAAKyjE,EAAWloD,EAAWvb,CAAC,EACvC,WAAY0jE,EACZ,OAAQ1jE,GAAK2jE,EAAQpoD,EAAWvb,CAAC,EACjC,UAAW,GACX,KAAM,eACN,aAAc6E,EAAK,SACnB,SAAU,CAACu/D,EAAY,IAAkB14D,MAAK8E,GAAiB,CAC7D,KAAMjB,EACN,UAAW,YACX,WAAY,EAClB,CAAK,EAAG,IAAkB7D,MAAK,OAAQ,CACjC,UAAW,qBACX,SAAUH,GAAmEO,OAAM0C,WAAW,CAC5F,SAAU,CAAC3J,EAAK,SAAuB6G,MAAKS,GAAS,CACnD,SAAUtH,EAAK,QACzB,CAAS,CAAC,CACV,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CCvFA,SAASmF,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWvT,IAAIwH,GAAMC,EAAI,OAAO,UAAU,EAE3By8D,GAAqB,IACrBC,GAAuB,wBAKpB,SAASC,GAASl6D,EAAO,CAC9B,GAAI,CACF,cAAA4T,EAAgB,GAChB,MAAAisC,EACA,cAAA7sC,EAAgB,OAChB,OAAAmnD,EACA,SAAA1mD,EACA,kBAAAV,EAAoB,OACpB,WAAAV,EAAawmD,GACb,UAAAhkD,EAAYojD,GACZ,cAAA/iD,EAAgBlD,GAAS,gBAC7B,EAAMhS,EACA,CAACo6D,EAAgBC,CAAiB,EAAI92D,WAAS,KAAO,CACxD,MAAO,GACP,OAAQ,EACR,UAAW,CACf,EAAI,EACE,CAACkpD,EAAU6N,CAAW,EAAI/2D,WAAS,CACrC,IAAK,EACL,OAAQ,CACZ,CAAG,EACG,CAAC01D,EAAgBsB,CAAiB,EAAIh3D,WAAQ,EAC9C,CAAC60D,EAAcoC,CAAe,EAAIj3D,WAAQ,EAC1C,CAACk3D,EAAiBC,CAAkB,EAAIn3D,WAAQ,EAChD,CAACxI,EAAgB4/D,CAAiB,EAAIp3D,WAAS,EAAE,EACjD6iC,EAAehpC,SAAM,EACrBw9D,EAAWx9D,SAAO,IAAI,EACtBy9D,EAAWz9D,SAAO,IAAI,EACtB09D,EAAWh9D,cAAY3C,GAAU,CACnC,GAAIA,EAAO,SAAW,GAAKi/D,GAAkB,KAC3C,MAAO,GAGT,QADI5+D,EAAQ,GACHzF,GAAI,EAAGA,GAAIoF,EAAO,OAAQpF,IAAK,EAEtC,QADI+E,GAAQK,EAAOpF,EAAC,EACXm3D,GAAIpyD,GAAM,CAAC,EAAGoyD,IAAKpyD,GAAM,CAAC,EAAGoyD,IAAK,EACrCA,IAAKkN,EAAe,QAAUlN,GAAIkN,EAAe,OAASA,EAAe,MAAM,QACjF5+D,EAAM,KAAK4+D,EAAe,MAAMlN,GAAIkN,EAAe,MAAM,CAAC,EAIhE,OAAO5+D,CACT,EAAG,CAAC4+D,CAAc,CAAC,EACfW,EAAUj9D,cAAYoT,GAAa,CACrC,IAAI1V,EAAQs/D,EAAS,CAAC,CAAC5pD,EAAWA,CAAS,CAAC,CAAC,EAC7C,GAAI1V,EAAM,OAAS,EACjB,OAAOA,EAAM,CAAC,CAElB,EAAG,CAACs/D,CAAQ,CAAC,EAKTE,EAAyBl9D,cAAY,IAAM,CAC7C,IAAI4oD,EAAQ7rD,GAAW,MAAME,CAAc,EAC3C,GAAI2rD,IAAU,EACZ,OAAO,KAET,GAAIA,IAAU,EAAG,CACf,IAAI1rD,EAAQD,EAAe,CAAC,EAAE,CAAC,EAC3BP,GAAOugE,EAAQ//D,CAAK,EACxB,GAAIR,IAAQ,KACV,OAAOA,GAAK,QAEhB,CACA,MAAO,GAAG,OAAOksD,EAAO,QAAQ,CAClC,EAAG,CAACqU,EAAShgE,CAAc,CAAC,EAMxBkgE,EAAYn9D,cAAYoT,GAAa,CACvC,GAAI,GAACknD,GAAgB,CAACa,GAGtB37D,IAAI,MAAM,YAAa86D,EAAc,KAAMlnD,CAAS,EACpD,GAAI,CACF,GAAI,CACF,MAAAmwC,EACA,WAAAiX,EACR,EAAUH,GAAiBC,EAAca,CAAc,EAEjD,GADAkB,GAAW,MAA6BA,EAAO9Y,EAAOiX,EAAU,EAC5DpnD,GAAa,KAAM,CACrB,IAAIgqD,GACJP,EAAkB,CAAC,CAACzpD,EAAWA,CAAS,CAAC,CAAC,GACzCgqD,GAAoBN,EAAS,WAAa,MAAQM,KAAsB,QAAUA,GAAkB,UAAUhqD,CAAS,CAC1H,CACF,OAASlZ,GAAK,CACZsF,GAAI,MAAM,0BAA2BtF,EAAG,CAC1C,EACF,EAAG,CAACogE,EAAca,EAAgBkB,CAAM,CAAC,EACrCgB,EAAer9D,cAAY,CAACoT,EAAWjP,IAAU,CACnD,IAAIzH,GAAO4/D,EAAe,MAAMlpD,EAAYkpD,EAAe,MAAM,EAC7D5/D,KAAS,SACX8C,GAAI,MAAM,kBAAmB9C,EAAI,EACjCiZ,EAASjZ,GAAMyH,CAAK,EAChBq0D,GAAY97D,EAAI,IAClBqlD,GAAU,MAA4BA,EAAM,YAAYrlD,GAAK,SAAU,CAACA,GAAK,UAAU,GAG7F,EAAG,CAAC4/D,EAAgB3mD,EAAUosC,CAAK,CAAC,EAChCub,EAAsBt9D,cAAY,CAACoT,EAAWvb,IAAM,CACtD,IAAI0lE,GAAoBC,GACxBh+D,GAAI,OAAO,sBAAuB4T,EAAWnW,CAAc,EAC3D,IAAIwgE,GAAgBxgE,EACfF,GAAW,WAAWE,EAAgBmW,CAAS,IAClDqqD,GAAgB,CAAC,CAACrqD,EAAWA,CAAS,CAAC,EACvCypD,EAAkBY,EAAa,GAEjCf,EAAgBM,EAASS,EAAa,CAAC,GAGtCF,GAAqBT,EAAS,WAAa,MAAQS,KAAuB,QAAUA,GAAmB,gBAAe,EACvH,IAAIG,GAAqB,SAAS,cAAc,KAAK,EACjDC,GAAwB,SAAS,cAAc,KAAK,EACxDA,GAAsB,UAAY,0BAClCA,GAAsB,WAAaH,GAAwBN,EAAsB,KAAQ,MAAQM,KAA0B,OAASA,GAAwB,GAC5JE,GAAmB,YAAYC,EAAqB,EACpDD,GAAmB,UAAY,4BAC/B,SAAS,KAAK,YAAYA,EAAkB,EAC5C7lE,EAAE,aAAa,aAAa6lE,GAAoB,EAAG,CAAC,EACpD7lE,EAAE,aAAa,cAAgB,OAC/B+kE,EAAmBc,EAAkB,CACvC,EAAG,CAACR,EAAwBF,EAAU//D,CAAc,CAAC,EACjD2gE,EAAqB59D,cAAY,CAACoT,EAAWvb,IAAM,CACrDA,EAAE,eAAc,EAChB2H,GAAI,OAAO,qBAAsB3H,CAAC,EAClC4kE,EAAkBQ,EAAQ7pD,CAAS,CAAC,CACtC,EAAG,CAAC6pD,CAAO,CAAC,EACRY,EAAoB79D,cAAY,CAACoT,EAAWvb,IAAM,CACpD2H,GAAI,MAAM,oBAAqB4T,CAAS,EACxCupD,GAAoB,MAAsCA,EAAgB,OAAM,EAIhFD,EAAgB,MAAS,EACzBD,EAAkB,MAAS,EAC3BG,EAAmB,MAAS,CAC9B,EAAG,CAACD,CAAe,CAAC,EAChBmB,EAAiB99D,cAAY,CAACoT,EAAWvb,IAAM,CACjDslE,EAAU/pD,CAAS,CACrB,EAAG,CAAC+pD,CAAS,CAAC,EACVY,GAAqB/9D,cAAY,IAAM,CACzCR,GAAI,OAAO,oBAAoB,EAC/Bi9D,EAAkB,MAAS,CAC7B,EAAG,EAAE,EACDuB,GAAqBh+D,cAAYnI,GAAK,CACpCA,EAAE,kBAAkB,SAAWA,EAAE,OAAO,UAAU,SAASskE,EAAoB,IAGjFtkE,EAAE,eAAc,EAChB2H,GAAI,OAAO,qBAAsB3H,CAAC,EAClC4kE,EAAkB,CAChB,KAAM,YACN,SAAU,IACV,SAAU,IACV,GAAI,GACZ,CAAO,EAEL,EAAG,EAAE,EACDwB,GAAiBj+D,cAAYnI,GAAK,CAChCA,EAAE,kBAAkB,SAAWA,EAAE,OAAO,UAAU,SAASskE,EAAoB,IACjF38D,GAAI,MAAM,gBAAgB,EAC1B29D,EAAS,EAEb,EAAG,CAACA,CAAS,CAAC,EACVe,EAAwBl+D,cAAY,SAAUm+D,EAAmB,CACnE,IAAIrG,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAEhF,GADAt4D,GAAI,OAAO,wBAAyB2+D,CAAiB,EACjDrG,IAAU,IAAQqG,IAAsBlhE,EAAgB,CAC1D4/D,EAAkBsB,CAAiB,EACnC,IAAIC,GAAgBpB,EAASmB,CAAiB,EAC9ClpD,EAAkBmpD,EAAa,CACjC,CACF,EAAG,CAACpB,EAAU/nD,EAAmBhY,CAAc,CAAC,EAC5CohE,EAAoBr+D,cAAY+P,GAAc,CAEhD,GADAvQ,GAAI,OAAO,oBAAqBuQ,CAAU,EACtCA,GAAc,KAAM,CACtB,GAAI,CAACuuD,CAAW,EAAItB,EAAS,CAAC,CAACjtD,EAAYA,CAAU,CAAC,CAAC,EACvDmF,EAAcopD,CAAW,CAC3B,MACEppD,EAAa,EAEfozB,EAAa,QAAUv4B,CACzB,EAAG,CAACitD,EAAU9nD,CAAa,CAAC,EACxBqpD,GAAuBv+D,cAAY,CAAC89B,EAAKywB,IAAW,CACtD/uD,GAAI,MAAM,uBAAwBs+B,EAAKywB,CAAM,GACzCzwB,IAAQ6wB,EAAS,KAAOJ,IAAWI,EAAS,SAC9C6N,EAAY,CACV,IAAA1+B,EACA,OAAAywB,CACR,CAAO,CAEL,EAAG,CAACI,CAAQ,CAAC,EACTuM,GAAoBn6D,UAAQ,IAAM,CACpC,GAAI,CAACu5D,GAAgB,CAACa,EACpB,MAAO,GAET,GAAI,CACF,OAAAd,GAAiBC,EAAca,CAAc,EAC7C37D,GAAI,MAAM,+BAA+B,EAClC,EACT,MAAY,CACVA,UAAI,MAAM,gCAAgC,EACnC,EACT,CACF,EAAG,CAAC86D,EAAca,CAAc,CAAC,EAC7B,CACF,YAAAqD,EACJ,EAAMt8D,EACJ3C,YAAU,IAAM,CACVi/D,KAAgB,SACdA,KAAgB,IAClBzc,EAAM,YAAW,GAEjBA,EAAM,YAAYyc,GAAa,EAAK,EACpCzc,EAAM,YAAYyc,GAAa,EAAI,GAGzC,EAAG,CAACzc,EAAOyc,EAAW,CAAC,EACvBj/D,YAAU,UAA+B,CACvCC,GAAI,MAAM,0BAA2BmvD,CAAQ,EAC7C5M,GAAU,MAA4BA,EAAM,YAAY,CACtD,IAAK,KAAK,IAAI,EAAG4M,EAAS,IAAMv3C,CAAa,EAC7C,OAAQu3C,EAAS,OAASv3C,CAChC,CAAK,CACH,EAAG,CAACA,EAAe2qC,EAAO4M,CAAQ,CAAC,EAGnCpvD,YAAU,UAA6C,CACrD,IAAIk/D,EAAkB1c,EAAM,SAAS2c,IAAe,CAClDnC,EAAkB,CAChB,MAAOmC,GAAY,MAAM,IAAIhiE,IAAQoF,GAAcA,GAAc,GAAIpF,EAAI,EAAG,GAAI,CAC9E,SAAUA,GAAK,QACzB,CAAS,CAAC,EACF,OAAQgiE,GAAY,OACpB,UAAW3c,EAAM,IACzB,CAAO,CACH,CAAC,EACD,MAAO,IAAM,CACX0c,EAAe,CACjB,CACF,EAAG,CAAC1c,CAAK,CAAC,EAKVxiD,YAAU,UAAmC,CACvC+oC,EAAa,SAAW,MAC1B+1B,EAAkB/1B,EAAa,OAAO,EAEpCrrC,EAAe,OAAS,GAG1BihE,EAAsBjhE,EAAgB,EAAI,CAE9C,EAAG,CAACq/D,EAAgB+B,EAAmBH,EAAuBjhE,CAAc,CAAC,EAG7EsC,YAAU,UAA+B,CACvC,GAAI47D,GAAkB,MAAQ3C,GAAY2C,CAAc,GAAKA,EAAe,WAAa,IAAK,CAC5F,IAAI93D,EAAU,WAAW,IAAM,CACxB83D,EAAe,YAClBpZ,GAAU,MAA4BA,EAAM,YAAYoZ,EAAe,SAAU,EAAI,CAEzF,EAAGe,EAAkB,EACrB,MAAO,IAAM,aAAa74D,CAAO,CACnC,CACF,EAAG,CAAC83D,EAAgBpZ,CAAK,CAAC,EAC1B,IAAI4c,GAAgB3+D,cAAY4+D,GAAarqD,EAAWzS,GAAcA,GAAc,GAAI88D,CAAS,EAAG,GAAI,CACtG,iBAAkBtE,GAAgB,KAClC,eAAAa,EACA,aAAAb,EACA,kBAAAY,GACA,YAAaoC,EACb,UAAWO,EACX,WAAYD,EACZ,WAAYG,GACZ,OAAQD,CACZ,CAAG,CAAC,EAAG,CAACD,EAAmBE,GAAoBH,EAAoBN,EAAqBQ,EAAgBxD,EAAca,EAAgBD,GAAmB3mD,CAAU,CAAC,EAClK,OAAoBhR,MAAK,MAAO,CAC9B,IAAKw5D,EACL,UAAWr5D,EAAW,YAAa,CACjC,cAAe42D,GAAgB,IACrC,CAAK,EACD,WAAY0D,GACZ,OAAQC,GACR,SAAuB16D,MAAK2Q,GAAU,CACpC,IAAK4oD,EACL,MAAOR,EAAe,MACtB,UAAWA,EAAe,UAC1B,OAAQA,EAAe,OACvB,cAAe+B,EACf,SAAUhB,EACV,kBAAmBa,EACnB,iBAAkBK,GAClB,eAAgBthE,EAChB,WAAY0hE,GACZ,UAAW5nD,EACX,cAAejB,EACf,aAAc,GACd,kBAAmB,EACzB,CAAK,CACL,CAAG,CACH,CCvUA,IAAI+oD,GAAgB,CAElB,OAAQntD,GAAiB,aAAa,CACpC,GAAI,uBACJ,KAAM,SACN,SAAU,CAACpB,EAAI,MAAM,EACrB,YAAa,CAACD,EAAS,IAAKC,EAAI,SAAS,CAC7C,CAAG,EACD,OAAQoB,GAAiB,aAAa,CACpC,GAAI,uBACJ,KAAM,SACN,SAAU,CAACpB,EAAI,KAAK,EACpB,YAAa,CAACA,EAAI,KAAK,CAC3B,CAAG,CACH,EACA,MAAAioC,GAAe,CACb,cAAAsmB,EACF,ECZA,IAAIr/D,GAAMC,EAAI,OAAO,oBAAoB,EACrCq/D,GAAmB,IAAM,QAAQ,QAAO,EACrC,SAASC,GAAmB95D,EAAM,CACvC,GAAI,CACF,KAAAvI,EACA,SAAAqM,EACA,SAAAkpC,EACA,SAAA+sB,EAAWF,EACf,EAAM75D,EACApK,EAAQyE,SAAO,IAAI,EACnB,CAAChI,EAAOkO,CAAQ,EAAIC,WAAS/I,EAAK,QAAQ,EAC1C,CAACuiE,EAAiBC,CAAkB,EAAIz5D,WAAQ,EAChD,CAAC05D,EAAmBC,CAAoB,EAAI35D,WAAS,QAAQ,SAAS,EACtEi6C,EAAQ1/C,cAAY,IAAM,CAC5B,IAAIq/D,GACHA,EAAiBxkE,EAAM,WAAa,MAAQwkE,IAAmB,QAAUA,EAAe,MAAK,CAEhG,EAAG,CAACxkE,CAAK,CAAC,EACNykE,EAAkBt/D,cAAYnI,GAAKA,EAAE,gBAAe,EAAI,EAAE,EAC1D0nE,EAAoBv/D,cAAY,IAAM,CACxCm/D,EAAkB,KAAK,IAAM,CAC3BltB,EAAS36C,CAAK,CAChB,CAAC,EAAE,MAAMO,GAAK2H,GAAI,KAAK,0BAA2B3H,CAAC,CAAC,CACtD,EAAG,CAACo6C,EAAU36C,EAAO6nE,CAAiB,CAAC,EACvC5/D,YAAU,UAAsC,CAC9C,IAAIigE,EAAkB5jE,GAAa,eAAeojE,EAAS1nE,CAAK,CAAC,EACjE,OAAAkoE,EAAgB,KAAK,IAAMN,EAAmB,MAAS,CAAC,EAAE,MAAMrnE,GAAK,CAC9D+D,GAAa,WAAW/D,CAAC,GAC5BqnE,EAAmBrnE,CAAC,CAExB,CAAC,EACDunE,EAAqBI,CAAe,EAC7B,IAAMA,EAAgB,OAAM,CACrC,EAAG,CAACR,EAAU1nE,CAAK,CAAC,EACpBiI,YAAU,UAAuB,CAC/BmgD,EAAK,CACP,EAAG,CAACA,CAAK,CAAC,EACV,IAAI+f,EAAaz/D,cAAY,IAAM,CACjCR,GAAI,OAAO,YAAY,EACvB+/D,EAAiB,CACnB,EAAG,CAACA,CAAiB,CAAC,EAClBtnD,EAAejY,cAAYnI,GAAK,CAClC,GAAI,CACF,MAAO6nE,CACb,EAAQ7nE,EAAE,OACN2N,EAASk6D,CAAQ,CACnB,EAAG,EAAE,EACDC,EAAgB3/D,cAAYnI,GAAK,CACnCA,EAAE,gBAAe,EACjB,GAAI,CACF,IAAA6Y,CACN,EAAQ7Y,EACJ,OAAQ6Y,EAAG,CACT,IAAK,QACH,CACE6uD,EAAiB,EACjB,KACF,CACF,IAAK,SACH,CACEx2D,EAAQ,EACR,KACF,CAER,CACE,EAAG,CAACA,EAAUw2D,CAAiB,CAAC,EAChC,OAAoB57D,OAAM,MAAO,CAC/B,UAAW,wBACX,SAAU,CAAcJ,MAAK,QAAS,CACpC,KAAM,OACN,UAAWG,EAAW,2CAA4C,CAChE,aAAcu7D,CACtB,CAAO,EACD,MAAO3nE,EACP,IAAKuD,EACL,OAAQ4kE,EACR,UAAWE,EACX,SAAU1nD,EACV,QAASqnD,EACT,cAAeA,EACf,YAAaA,CACnB,CAAK,EAAGL,GAAgC17D,MAAK,MAAO,CAC9C,UAAW,mBACX,SAAU,GAAG,OAAO07D,CAAe,CACzC,CAAK,CAAC,CACN,CAAG,CACH,CC5FA,SAASp9D,GAAQhK,EAAGC,EAAG,CAAE,IAAI,EAAI,OAAO,KAAKD,CAAC,EAAG,GAAI,OAAO,sBAAuB,CAAE,IAAIW,EAAI,OAAO,sBAAsBX,CAAC,EAAGC,IAAMU,EAAIA,EAAE,OAAO,SAAUV,EAAG,CAAE,OAAO,OAAO,yBAAyBD,EAAGC,CAAC,EAAE,UAAY,CAAC,GAAI,EAAE,KAAK,MAAM,EAAGU,CAAC,CAAG,CAAE,OAAO,CAAG,CAC9P,SAASsJ,GAAcjK,EAAG,CAAE,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAAE,IAAI,EAAY,UAAUA,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,GAAIA,EAAI,EAAI+J,GAAQ,OAAO,CAAC,EAAG,EAAE,EAAE,QAAQ,SAAU,EAAG,CAAEjK,GAAgBC,EAAG,EAAG,EAAE,CAAC,CAAC,CAAG,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiBA,EAAG,OAAO,0BAA0B,CAAC,CAAC,EAAIgK,GAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAO,eAAehK,EAAG,EAAG,OAAO,yBAAyB,EAAG,CAAC,CAAC,CAAG,CAAC,CAAG,CAAE,OAAOA,CAAG,CACtb,SAASD,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAgBhT,SAAS4nE,GAAkB19D,EAAO,CACvC,GAAI,CACF,cAAA4T,EAAgB,GAChB,YAAA0oD,EACA,gBAAAqB,EAAkB,GAClB,aAAAC,EACA,eAAAC,EACA,OAAAC,EACA,SAAAC,EACA,OAAA5D,EACA,SAAA6D,EACA,SAAAvqD,EACA,kBAAAV,EACA,MAAA8sC,EACA,UAAAhrC,EAAYojD,GACZ,eAAAgG,EAAiB,IAAM,QAAQ,QAAO,CAC1C,EAAMj+D,EACA,CAACk+D,EAAYC,CAAa,EAAI56D,WAAQ,EACtC,CAAC24D,EAAekC,CAAgB,EAAI76D,WAAS,EAAE,EAC/C,CAAC64D,EAAaiC,CAAc,EAAI96D,WAAQ,EACxCy4D,EAAwBl+D,cAAYwgE,GAAoB,CAC1DF,EAAiBE,CAAgB,EACjCvrD,GAAsB,MAAwCA,EAAkBurD,CAAgB,CAClG,EAAG,CAACvrD,CAAiB,CAAC,EAClBopD,EAAoBr+D,cAAYygE,GAAkB,CACpDF,EAAeE,CAAc,CAC/B,EAAG,EAAE,EACDC,EAAmB1gE,cAAY,IAAM,CACnCs+D,IACF0B,GAAW,MAA6BA,EAAO1B,CAAW,EAE9D,EAAG,CAACA,EAAa0B,CAAM,CAAC,EACpBW,EAAqB3gE,cAAY,IAAM,CACrCo+D,EAAc,OAAS,IACzB6B,GAAa,MAA+BA,EAAS7B,CAAa,EAEtE,EAAG,CAAC6B,EAAU7B,CAAa,CAAC,EACxBwC,EAAsB5gE,cAAY,IAAM,CAC1C8/D,GAAiB,MAAmCA,EAAY,CAClE,EAAG,CAACA,CAAY,CAAC,EACbe,EAAwB7gE,cAAY,IAAM,CACxCs+D,IACFyB,GAAmB,MAAqCA,EAAepH,EAAU,QAAQ2F,EAAY,QAAQ,CAAC,EAElH,EAAG,CAACA,EAAayB,CAAc,CAAC,EAC5Be,EAAqB9gE,cAAY,IAAM,CACrCs+D,GACF+B,EAAc/B,CAAW,CAE7B,EAAG,CAACA,CAAW,CAAC,EACZyC,EAAqB/gE,cAAY,IAAM,CACzCqgE,EAAc,MAAS,CACzB,EAAG,EAAE,EACDW,EAAqBhhE,cAAYihE,GAAW,CAC1Cb,IACFF,GAAa,MAA+BA,EAASE,EAAYa,CAAO,EACxEZ,EAAc,MAAS,EAE3B,EAAG,CAACH,EAAUE,CAAU,CAAC,EACrB51D,EAAUzJ,UAAQ,IAAM,CAC1B,GAAIq/D,EAEF,MAAO,GAET,IAAIvmE,EAAS,GACb,OAAIimE,GACFjmE,EAAO,KAAK,CACV,MAAO,WACP,YAAa,kBACb,OAAQ+mE,EACR,MAAOh1D,GAAe,OAAO,MACrC,CAAO,EAECm0D,GACFlmE,EAAO,KAAK,CACV,MAAO,aACP,YAAa,oBACb,OAAQgnE,EACR,MAAOj1D,GAAe,OAAO,MACrC,CAAO,EAECo0D,GACFnmE,EAAO,KAAK,CACV,MAAO,YACP,YAAa,yBACb,OAAQ6mE,EACR,MAAO90D,GAAe,OAAO,IAC7B,SAAU0yD,GAAe,MAAQ9F,GAAY8F,CAAW,CAChE,CAAO,EAEC2B,GAAY7B,EAAc,OAAS,GACrCvkE,EAAO,KAAK,CACV,MAAO,SACP,YAAa,SACb,SAAU0+C,GAAU,cAAc,OAClC,OAAQooB,EACR,MAAO/0D,GAAe,OAAO,GACrC,CAAO,EAECs0D,GACFrmE,EAAO,KAAK,CACV,MAAO,SACP,YAAa,SACb,SAAU0+C,GAAU,cAAc,OAClC,OAAQuoB,EACR,MAAOl1D,GAAe,OAAO,IAC7B,SAAU0yD,GAAe,IACjC,CAAO,EAEIzkE,CACT,EAAG,CAAC6mE,EAAkBC,EAAoBC,EAAqBC,EAAuBC,EAAoBxC,EAAa0B,EAAQF,EAAcC,EAAgBE,EAAUC,EAAU9B,EAAegC,CAAU,CAAC,EACvMc,EAAqBlhE,cAAYihE,IACnCz7B,EAAc46B,CAAU,EACjBD,EAAeC,EAAYa,CAAO,GACxC,CAACb,EAAYD,CAAc,CAAC,EAC3B5rD,EAAavU,cAAY4+D,GAAa,CACxC,GAAI,CACF,KAAAliE,EACN,EAAQkiE,EACJ,OAAIwB,GAAcA,EAAW,WAAa1jE,GAAK,SAI3C6G,MAAKw3D,GAAcj5D,GAAcA,GAAc,GAAI88D,CAAS,EAAG,GAAI,CACjE,SAAuBr7D,MAAKw7D,GAAoB,CAC9C,KAAMriE,GACN,SAAUwkE,EACV,SAAUF,EACV,SAAUD,CACtB,CAAW,CACX,CAAS,CAAC,EAIcx9D,MAAKw3D,GAAcj5D,GAAc,GAAI88D,CAAS,CAAC,CACrE,EAAG,CAACmC,EAAoBC,EAAoBZ,EAAYc,CAAkB,CAAC,EAC3E,OAAoBv9D,OAAM,MAAO,CAC/B,UAAW,sBACX,SAAU,CAACo+C,GAAS,MAAqBx+C,MAAK64D,GAAU,CACtD,OAAQC,EACR,SAAU1mD,EACV,kBAAmBuoD,EACnB,cAAeG,EACf,WAAY9pD,EACZ,UAAWwC,EACX,MAAOgrC,EACP,cAAejsC,EACf,YAAa0oD,CACnB,CAAK,EAAGqB,GAAgCt8D,MAAKqI,GAAgB,CACvD,QAASpB,CACf,CAAK,CAAC,CACN,CAAG,CACH,CACAo1D,GAAkB,YAAc,oBC7KhC,SAAShoE,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAEvT,MAAMmpE,WAAwBhiE,EAAgB,CAC5C,YAAYiiE,EAAM,CAChB,MAAM,qBAAqB,EAC3BxpE,GAAgB,KAAM,iBAAkB,EAAI,EAC5CA,GAAgB,KAAM,OAAQ,MAAM,EACpC,KAAK,KAAOwpE,CACd,CACF,CCXA,SAAS7oE,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAahU,IAAI0G,GAAMC,EAAI,OAAO,cAAc,EAI5B,SAAS4hE,GAAan/D,EAAO,CAClC,GAAI,CACF,QAAAia,EACA,cAAArG,EAAgB,GAChB,YAAA0oD,EACA,OAAAwB,EAAS,OACT,SAAAC,EAAW,OACX,SAAAC,EAAW,OACX,aAAAJ,EAAe,OACf,eAAAC,EAAiB,OACjB,SAAApqD,EACA,kBAAAV,EACA,UAAA8B,EAAYojD,EAChB,EAAMj4D,EACA,CAACo/D,EAAeC,CAAgB,EAAI97D,WAAS,EAAE,EAC/C,CAACs8C,EAAOyf,CAAQ,EAAI/7D,WAAQ,EAChClG,YAAU,UAA2B,CACnC,IAAIkiE,EACJ,SAASC,GAAY,CACnB,OAAOC,EAAW,MAAM,KAAM,SAAS,CACzC,CACA,SAASA,GAAa,CACpB,OAAAA,EAAa9oE,GAAkB,WAAa,CAC1C2G,GAAI,MAAM,WAAW,EACrBiiE,EAAe7lE,GAAa,eAAeugB,EAAQ,SAAQ,EAAInkB,GAAKA,EAAE,OAAO,EAC7E,GAAI,CACFwpE,EAAS,MAAMC,CAAY,CAC7B,OAAS5pE,EAAG,CACL+D,GAAa,WAAW/D,CAAC,GAC5B2H,GAAI,MAAM,6BAA8B3H,CAAC,CAE7C,CACF,CAAC,EACM8pE,EAAW,MAAM,KAAM,SAAS,CACzC,CACA,OAAAD,EAAS,EACF,IAAM,CACXD,EAAa,OAAM,CACrB,CACF,EAAG,CAACtlD,CAAO,CAAC,EACZ,IAAIylD,EAAc5hE,cAAYnI,GAAK,CAC5B+D,GAAa,WAAW/D,CAAC,GAC5B2H,GAAI,MAAM3H,CAAC,CAEf,EAAG,EAAE,EACDgqE,EAAmB7hE,cAAY,IAAM,CACvCR,GAAI,MAAM,kBAAkB,EAC5BsgE,EAAY,CACd,EAAG,CAACA,CAAY,CAAC,EACbgC,EAAqB9hE,cAAY,IAAM,CACzCR,GAAI,MAAM,oBAAoB,EAC9BugE,EAAc,CAChB,EAAG,CAACA,CAAc,CAAC,EACfgC,EAAiB/hE,cAAY0jD,GAAQ,CACvClkD,GAAI,MAAM,iBAAkBkkD,EAAK,QAAQ,EACzCsc,EAAOtc,CAAI,CACb,EAAG,CAACsc,CAAM,CAAC,EACPgC,EAAehiE,cAAYujD,GAAS,CACtC/jD,GAAI,MAAM,qCAAsC+jD,CAAK,EACrDge,EAAiBhe,CAAK,CACxB,EAAG,EAAE,EACD0e,EAAsBjiE,cAAY,IAAM,CAC1CR,GAAI,MAAM,sBAAuB8hE,CAAa,EAC9CA,EAAc,QAAQ5d,GAAQvnC,EAAQ,WAAWq8C,GAAY9U,CAAI,EAAIiV,EAAU,SAASjV,EAAK,QAAQ,EAAIA,EAAK,QAAQ,CAAC,EACvHuc,EAASqB,CAAa,EACtBC,EAAiB,EAAE,CACrB,EAAG,CAACD,EAAerB,EAAU9jD,CAAO,CAAC,EACjC+lD,EAAqBliE,cAAY,IAAM,CACzCR,GAAI,MAAM,oBAAoB,EAC9B+hE,EAAiB,EAAE,CACrB,EAAG,EAAE,EACDY,EAAaniE,cAAY,CAACujD,EAAOyW,IAAS,CAC5C,IAAIoI,EAAczJ,EAAU,YAAYpV,EAAM,IAAIG,GAAQ8U,GAAY9U,CAAI,EAAIiV,EAAU,SAASjV,EAAK,QAAQ,EAAIA,EAAK,QAAQ,CAAC,EAChI0e,EAAY,QAAQ1e,GAAQ,CAC1B,IAAI2e,EAAU1J,EAAU,OAAOjV,CAAI,EAAI,GAAG,OAAOsW,CAAI,EAAE,OAAOrB,EAAU,YAAYjV,EAAK,UAAU,EAAGA,EAAK,OAAS,CAAC,CAAC,EAAG,GAAG,EAAI,GAAG,OAAOsW,CAAI,EAAE,OAAOrB,EAAU,YAAYjV,CAAI,CAAC,EAClLvnC,EAAQ,SAASunC,EAAM2e,CAAO,EAAE,KAAK,IAAM,CAGzCnC,EAASxc,EAAM2e,CAAO,CACxB,CAAC,EAAE,MAAMT,CAAW,CACtB,CAAC,CACH,EAAG,CAACA,EAAa1B,EAAU/jD,CAAO,CAAC,EAC/BmmD,EAAetiE,cAAY,CAACtD,EAAMukE,IAAY,CAChD,IAAI7nE,EAAOsD,EAAK,SACZ6lE,EAAQ/J,GAAY97D,CAAI,EACxB6lE,GAAS,CAACnpE,EAAK,SAAS,GAAG,IAC7BA,EAAO,GAAG,OAAOA,EAAM,GAAG,GAE5B,IAAIopE,EAAc,GAAG,OAAO7J,EAAU,UAAUv/D,CAAI,CAAC,EAAE,OAAO6nE,CAAO,EACjEsB,GAAS,CAACC,EAAY,SAAS,GAAG,IACpCA,EAAc,GAAG,OAAOA,EAAa,GAAG,GAE1ChjE,GAAI,OAAO,eAAgBpG,EAAMopE,CAAW,EAC5CrmD,EAAQ,SAAS/iB,EAAMopE,CAAW,EAAE,MAAMZ,CAAW,EACrD1B,EAAS9mE,EAAMopE,CAAW,CAC5B,EAAG,CAACZ,EAAa1B,EAAU/jD,CAAO,CAAC,EAC/BsmD,EAAuBziE,cAAyB,UAAY,CAC9D,IAAIiF,EAAOpM,GAAkB,UAAWunE,EAAYa,EAAS,CAC3D,GAAIA,IAAYb,EAAW,SAI3B,CAAAzH,EAAU,aAAasI,CAAO,EAC9B,IAAIvB,EAAW,GAAG,OAAO/G,EAAU,QAAQyH,EAAW,QAAQ,CAAC,EAAE,OAAOa,CAAO,EAC/E,GAAI,CACF,IAAIyB,EAAW,MAAMvmD,EAAQ,KAAKujD,CAAQ,EAC1C,MAAM,IAAIyB,GAAgBuB,CAAQ,CACpC,OAAS7qE,EAAG,CACV,GAAI,EAAEA,aAAa4gE,IACjB,MAAM5gE,CAGV,EACF,CAAC,EACD,OAAO,SAAUoB,EAAI0pE,EAAK,CACxB,OAAO19D,EAAK,MAAM,KAAM,SAAS,CACnC,CACF,EAAC,EAAI,CAACkX,CAAO,CAAC,EACVymD,EAA4BtB,EAAc,OAAS,EACnDuB,EAA4B9hE,UAAQ,IAClCugE,EAAc,SAAW,EACpB,oCAAqC,OAAOA,EAAc,CAAC,EAAE,SAAU,IAAK,EAE9E,sDACN,CAACA,CAAa,CAAC,EAClB,OAAoB39D,OAAM,MAAO,CAC/B,UAAW,gBACX,SAAU,CAACo+C,GAAsBx+C,MAAKq8D,GAAmB,CACvD,cAAe9pD,EACf,YAAa0oD,EACb,gBAAiB,GACjB,OAAQuD,EACR,eAAgBD,EAChB,aAAcD,EACd,OAAQM,EACR,SAAUH,EACV,SAAUM,EACV,SAAU3sD,EACV,kBAAmBV,EACnB,UAAW8B,EACX,MAAOgrC,EACP,eAAgB0gB,CACtB,CAAK,EAAgBl/D,MAAKoF,GAAY,CAChC,OAAQi6D,EACR,WAAYC,EACZ,SAAU,+BACV,SAAUX,EACV,UAAWD,EACX,kBAAmB,QACzB,CAAK,CAAC,CACN,CAAG,CACH,CACAZ,GAAa,YAAc,eC1K3B,SAAS9oE,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAChU,SAASlB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAcvT,IAAIwH,GAAMC,EAAI,OAAO,cAAc,EACnC,MAAMqjE,WAAqBxzD,eAAc,CACvC,OAAO,qBAAqBpV,EAAK,CAC/B,OAAIA,aAAeinE,IAAmBjnE,EAAI,KAAK,OAAS,YAC/C,6CAEF,GAAG,OAAOA,CAAG,CACtB,CACA,OAAO,YAAYA,EAAK,CACjB0B,GAAa,WAAW1B,CAAG,GAC9BsF,GAAI,MAAMtF,CAAG,CAEjB,CACA,YAAYgI,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,WAAyBuK,EAAM,UAAS,CAAE,EAChEvK,GAAgB,KAAM,4BAA6B,MAAM,EACzDA,GAAgB,KAAM,gCAAiC,MAAM,EAC7DA,GAAgB,KAAM,UAAW,IAAI6E,EAAS,EAC9C7E,GAAgB,KAAM,UAAW,IAAI,GAAK,EAC1CA,GAAgB,KAAM,gBAAiB,EAAI,EAC3C,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,6BAA+B,KAAK,6BAA6B,KAAK,IAAI,EAC/E,KAAK,uBAAyB,KAAK,uBAAuB,KAAK,IAAI,EACnE,GAAI,CACF,aAAAmrE,CACN,EAAQ7gE,EACA83D,EAAOrB,EAAU,QAAQoK,CAAY,EAAIpK,EAAU,QAAQoK,CAAY,EAAI,IAC/E,KAAK,MAAQ,CACX,aAAc,GACd,KAAA/I,EACA,cAAerB,EAAU,aAAaoK,CAAY,EAClD,yBAA0B,GAC1B,mBAAoB,GACpB,MAAOpK,EAAU,YAAYoK,CAAY,CAC/C,CACE,CACA,mBAAmB1gE,EAAW4B,EAAW,CACvC,GAAI,CACF,OAAA2E,CACN,EAAQ,KAAK,MACL,CACF,OAAQo6D,CACd,EAAQ3gE,EACA,CACF,MAAA/K,EACA,KAAA0iE,CACN,EAAQ,KAAK,MACL,CAACgJ,GAAcp6D,IACjB,KAAK,WAAU,EACf,KAAK,cAAgB,IAEnBo6D,GAAcp6D,IACZ,CAAC,KAAK,gBAAkBoxD,IAAS/1D,EAAU,MAAQ3M,IAAU2M,EAAU,QACzE,KAAK,uBAAuB+1D,EAAM1iE,CAAK,EAEzC,KAAK,cAAgB,GAEzB,CACA,sBAAuB,CACrB,KAAK,QAAQ,OAAM,EACf,KAAK,2BACP,KAAK,0BAA0B,OAAM,EAEnC,KAAK,+BACP,KAAK,8BAA8B,OAAM,CAE7C,CACA,YAAa,CACX,GAAI,CACF,aAAAyrE,CACN,EAAQ,KAAK,MACL/I,EAAOrB,EAAU,QAAQoK,CAAY,EAAIpK,EAAU,QAAQoK,CAAY,EAAI,IAC/E,KAAK,SAAS,CACZ,KAAA/I,EACA,MAAOrB,EAAU,YAAYoK,CAAY,EACzC,gBAAiB,OACjB,cAAepK,EAAU,aAAaoK,CAAY,EAClD,aAAc,EACpB,CAAK,CACH,CACA,qBAAqB/I,EAAM5gE,EAAM,CAC/B,IAAI6pE,EAAgB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACxF,OAAI,KAAK,2BACP,KAAK,0BAA0B,OAAM,EAEvC,KAAK,0BAA4BrnE,GAAa,eAAe,KAAK,aAAao+D,EAAM5gE,EAAM6pE,CAAa,CAAC,EAClG,KAAK,yBACd,CACA,aAAajJ,EAAM5gE,EAAM6pE,EAAe,CACtC,IAAIrhB,EAAQ,KACZ,OAAO/oD,GAAkB,WAAa,CACpC8/D,EAAU,aAAav/D,CAAI,EAC3B,GAAI,CACF,aAAA2pE,EACA,QAAA5mD,CACR,EAAUylC,EAAM,MACV,GAAIqhB,EAAe,CACjB,IAAI3rE,EAAQ,GAAG,OAAO0iE,CAAI,EAAE,OAAO5gE,CAAI,EACvC,GAAI9B,IAAUyrE,EACZ,GAAI,CACF,IAAIG,EAAe,MAAM/mD,EAAQ,KAAK7kB,CAAK,EAC3C,MAAM,IAAI6pE,GAAgB+B,CAAY,CACxC,OAASrrE,EAAG,CACV,GAAI,EAAEA,aAAa4gE,IACjB,MAAM5gE,CAGV,CAEJ,CACA,OAAOuB,CACT,CAAC,EAAC,CACJ,CACA,uBAAuB4gE,EAAMiH,EAAS,CACpC,KAAK,qBAAqBjH,EAAMiH,CAAO,EAAE,KAAK,IAAM,CAClD,KAAK,SAAS,CACZ,gBAAiB,MACzB,CAAO,CACH,CAAC,EAAE,MAAM,KAAK,qBAAqB,EAAE,MAAM6B,GAAa,WAAW,CACrE,CACA,mBAAoB,CAClB,KAAK,iBAAgB,CACvB,CACA,mBAAoB,CAClB,KAAK,YAAW,CAClB,CACA,aAAa3+D,EAAO,CAClB,GAAI,CACF,MAAA7M,CACN,EAAQ6M,EAAM,OACV,KAAK,SAAS,CACZ,MAAA7M,CACN,CAAK,CACH,CACA,aAAaoF,EAAM,CAEjB,GADA8C,GAAI,MAAM,eAAgB9C,CAAI,EAC1BA,EAAK,OAAS,YAChB,KAAK,SAAS,CACZ,KAAMi8D,EAAU,SAASj8D,EAAK,QAAQ,CAC9C,CAAO,MACI,CAEL,IAAIpF,EAAQoF,EAAK,SACbs9D,EAAOrB,EAAU,QAAQj8D,EAAK,QAAQ,EAC1C,KAAK,SAAS,CACZ,MAAApF,EACA,KAAA0iE,CACR,EAAS,IAAM,CACP,KAAK,iBAAgB,CACvB,CAAC,CACH,CACF,CAGA,cAAc,EAAG,CACf,GAAI,CACF,IAAAtpD,CACN,EAAQ,EAEJ,OADA,EAAE,gBAAe,EACTA,EAAG,CACT,IAAK,QACH,CAEE,EAAE,eAAc,EAChB,KAAK,YAAW,EAChB,KACF,CACF,IAAK,SACH,CACE,EAAE,eAAc,EAChB,GAAI,CACF,SAAA3H,CACZ,EAAc,KAAK,MACTA,EAAQ,EACR,KACF,CAER,CACE,CACA,sBAAsB7O,EAAK,CACzB,GAAI,EAAEA,aAAeiF,IACnB,MAAMjF,EAERsF,GAAI,MAAM,mBAAoBtF,CAAG,EACjC,KAAK,SAAS,CACZ,gBAAiBA,CACvB,CAAK,CACH,CACA,uBAAwB,CACtB,KAAK,SAAS,CACZ,mBAAoB,GACpB,aAAc,EACpB,CAAK,CACH,CACA,wBAAyB,CACvB,KAAK,SAAS,CACZ,mBAAoB,EAC1B,CAAK,EACD,GAAI,CACF,SAAA+3C,CACN,EAAQ,KAAK,MACL,CACF,KAAA+nB,EACA,MAAA1iE,CACN,EAAQ,KAAK,MACTkI,GAAI,MAAM,yBAA0Bw6D,EAAM1iE,CAAK,EAC/C26C,EAAS,GAAG,OAAO+nB,CAAI,EAAE,OAAO1iE,CAAK,EAAG,EAAI,CAC9C,CACA,6BAA8B,CAC5BkI,GAAI,MAAM,6BAA6B,EACvC,KAAK,SAASyF,GAAQ,CACpB,GAAI,CACF,MAAA3N,EACA,cAAA6rE,CACR,EAAUl+D,EACAy6D,EAAW/G,EAAU,iBAAiBrhE,EAAO6rE,CAAa,EAC9D,MAAO,CACL,yBAA0B,GAC1B,MAAOzD,CACf,CACI,CAAC,EACD,KAAK,YAAY,EAAI,CACvB,CACA,8BAA+B,CAC7BlgE,GAAI,MAAM,8BAA8B,EACxC,KAAK,SAAS,CACZ,yBAA0B,EAChC,CAAK,EACD,KAAK,YAAY,EAAI,CACvB,CAKA,kBAAmB,CACjB,IAAI3E,EAAQ,KAAK,SAAS,QAC1B,GAAIA,EAAO,CACT,GAAI,CACF,KAAAqM,CACR,EAAU,KAAK,MACL,CACF,MAAA5P,CACR,EAAUuD,EACAuoE,EAAel8D,IAAS,YAAc5P,EAAM,OAASA,EAAM,YAAY,GAAG,EAC9EuD,EAAM,MAAK,EACXA,EAAM,kBAAkB,EAAGuoE,EAAe,EAAIA,EAAe9rE,EAAM,MAAM,CAC3E,CACF,CACA,aAAc,CACZ,IAAI+rE,EAAqB,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC7F,KAAK,SAASlvD,GAAS,CACrB,GAAI,CACF,cAAAgvD,EACA,MAAA7rE,EACA,KAAA0iE,CACR,EAAU7lD,EACA,CACF,wBAAAmvD,EACA,KAAAp8D,CACR,EAAU,KAAK,MACT1H,GAAI,MAAM,cAAe2jE,EAAe7rE,CAAK,EAC7C,IAAI+hE,EAAeV,EAAU,aAAarhE,CAAK,EAC/C,OAAIgsE,GAA2B,CAACD,GAAsBF,IAAkB,MAAQA,IAAkB9J,EACzF,CACL,aAAc,GACd,yBAA0B,GAC1B,aAAAA,CACV,GAEM,KAAK,qBAAqBW,EAAM1iE,EAAO,EAAI,EAAE,KAAKisE,GAAe,CAC/D,GAAI,CACF,SAAAtxB,CACV,EAAY,KAAK,MACTA,EAAS,GAAG,OAAO+nB,CAAI,EAAE,OAAO1iE,CAAK,CAAC,CACxC,CAAC,EAAE,MAAMO,GAAK,CAGZ,GAAIA,aAAaspE,IACXj6D,IAAS,aAAerP,EAAE,KAAK,OAAS,YAAa,CACvD,KAAK,SAAS,CACZ,mBAAoB,EAClC,CAAa,EACD,MACF,CAEF,MAAMA,CACR,CAAC,EAAE,MAAMA,GAAK,CACZ,MAAI+D,GAAa,WAAW/D,CAAC,GAC3B,KAAK,SAAS,CACZ,aAAc,EAC1B,CAAW,EAEGA,CACR,CAAC,EAAE,MAAM,KAAK,qBAAqB,EAAE,MAAMirE,GAAa,WAAW,EAC5D,CACL,aAAc,GACd,yBAA0B,GAC1B,aAAc,MACtB,EACI,CAAC,CACH,CACA,uBAAuBU,EAAe,CACpC,KAAK,SAAS,CACZ,KAAMA,CACZ,CAAK,CACH,CACA,kBAAkBxJ,EAAM,CACtB,IAAIyJ,EAAazJ,EAAK,MAAM,GAAG,EAC/B,OAAAyJ,EAAW,IAAG,EACPA,EAAW,IAAI,CAACC,EAAUxmE,IAAU,CAEzC,QADIsmE,EAAgB,GACXvrE,EAAI,EAAGA,EAAIiF,EAAOjF,GAAK,EAC9BurE,GAAiB,GAAG,OAAOC,EAAWxrE,CAAC,EAAG,GAAG,EAE/C,OAAAurE,GAAiB,GAAG,OAAOE,EAAU,GAAG,EACpB//D,OAAMxB,EAAM,SAAU,CACxC,SAAU,CAAcoB,MAAKyD,GAAQ,CACnC,KAAM,QACN,UAAW,wBACX,QAAS,IAAM,KAAK,uBAAuBw8D,CAAa,EACxD,aAActmE,IAAU,EAAI,OAAS,OACrC,KAAMA,IAAU,EAAiBqG,MAAK8E,GAAiB,CACrD,KAAMs7D,GACN,UAAW,WACvB,CAAW,EAAI,OACL,QAASzmE,IAAU,EAAI,OAAS,OAChC,SAAUwmE,CACpB,CAAS,EAAG,GAAG,CACf,EAASF,CAAa,CAClB,CAAC,CACH,CACA,QAAS,CACP,GAAI,CACF,QAAArnD,EACA,OAAAvT,EACA,SAAAG,EACA,YAAAyJ,EACA,MAAAoS,EACA,KAAA1d,CACN,EAAQ,KAAK,MACL,CACF,aAAA08D,EACA,KAAA5J,EACA,yBAAA6J,EACA,mBAAAC,EACA,gBAAA7E,EACA,MAAA3nE,EACA,cAAA6rE,EACA,aAAA9J,CACN,EAAQ,KAAK,MACLb,EAActxD,IAAS,YACvB68D,EAAoBpL,EAAU,sBAAsBwK,CAAa,EACjEa,EAAmBrL,EAAU,sBAAsBU,CAAY,EAC/D4K,EAAiBzL,EAAc,SAAW,OAC1C0L,EAAiB1L,EAAc,kBAAoB,eACvD,OAAoB70D,OAAM0C,WAAW,CACnC,SAAU,CAAc1C,OAAMkG,GAAO,CACnC,OAAQjB,EACR,OAAQG,EACR,SAAU,KAAK,kBACf,UAAW,uCACX,SAAU,CAAcxF,MAAKuG,GAAa,CACxC,OAAQf,EACR,SAAU6b,CACpB,CAAS,EAAgBrhB,MAAKwG,GAAW,CAC/B,SAAuBxG,MAAK,OAAQ,CAClC,SAAuBI,OAAM,MAAO,CAClC,UAAW,4CACX,SAAU,CAAcA,OAAM,MAAO,CACnC,UAAW,mBACX,SAAU,CAAcJ,MAAK,QAAS,CACpC,QAAS,kBACT,SAAU2gE,CAC5B,CAAiB,EAAgB3gE,MAAK,QAAS,CAC7B,GAAI,kBACJ,KAAM,OACN,aAAc,MACd,eAAgB,OAChB,YAAa,MACb,WAAY,QACZ,UAAWG,EAAW,eAAgB,CACpC,aAAcu7D,CAClC,CAAmB,EACD,MAAO3nE,EACP,YAAakb,EACb,IAAK,KAAK,SACV,UAAW,KAAK,cAChB,SAAU,KAAK,YACjC,CAAiB,EAAGysD,GAAgC17D,MAAK,MAAO,CAC9C,UAAW,mBACX,SAAUu/D,GAAa,qBAAqB7D,CAAe,CAC7E,CAAiB,CAAC,CAClB,CAAe,EAAgBt7D,OAAM,MAAO,CAC5B,UAAW,cACX,SAAU,CAAcJ,MAAK,QAAS,CACpC,SAAU,cAC5B,CAAiB,EAAG,KAAK,kBAAkBy2D,CAAI,CAAC,CAChD,CAAe,EAAgBz2D,MAAK,MAAO,CAC3B,UAAW,sCACX,SAAuBA,MAAK89D,GAAc,CACxC,SAAU,KAAK,aACf,QAASllD,EACT,YAAa69C,CAC/B,CAAiB,CACjB,CAAe,CAAC,CAChB,CAAa,CACb,CAAW,CACX,CAAS,EAAgBr2D,OAAM+E,GAAa,CAClC,SAAU,CAAcnF,MAAKyD,GAAQ,CACnC,KAAM,YACN,QAAS+B,EACT,SAAU,QACtB,CAAW,EAAgBxF,MAAKyD,GAAQ,CAC5B,KAAM,UACN,SAAU48D,EACV,QAAS,KAAK,kBACd,SAAUK,CACtB,CAAW,CAAC,CACZ,CAAS,CAAC,CACV,CAAO,EAAgB1gE,MAAKoF,GAAY,CAChC,OAAQm7D,EACR,WAAY,oBACZ,SAAU,6EACV,SAAU,KAAK,sBACf,UAAW,KAAK,uBAChB,iBAAkB,SAClB,kBAAmB,WAC3B,CAAO,EAAgBvgE,MAAKoF,GAAY,CAChC,OAAQk7D,EACR,WAAY,2BACZ,SAAU,mDAAoD,OAAOE,EAAmB,QAAU,EAAE,OAAOC,EAAkB,IAAK,EAClI,SAAU,KAAK,4BACf,UAAW,KAAK,6BAChB,iBAAkB,SAAU,OAAOD,EAAmB,GAAI,EAC1D,kBAAmB,QAAS,OAAOC,EAAkB,GAAI,CACjE,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACApsE,GAAgBkrE,GAAc,eAAgB,CAC5C,OAAQ,GACR,aAAc,IACd,wBAAyB,GACzB,YAAa,GACb,SAAU,CAAC1pE,EAAM+qE,OACjB,SAAU,MACZ,CAAC,ECpdM,SAASC,GAAoBn/D,EAAM,CACxC,GAAI,CACF,WAAAo/D,EACA,aAAAC,EACA,eAAAC,EACA,kBAAAC,EAAoB,EACxB,EAAMv/D,EACJ,OAAoBtB,OAAM,MAAO,CAC/B,UAAW,wBACX,SAAU,CAAcA,OAAM,MAAO,CACnC,UAAW,gCACX,SAAU,CAAcJ,MAAKyD,GAAQ,CACnC,KAAM,QACN,KAAM0oD,GACN,QAAS,eACT,QAAS2U,EACT,aAAc,cACtB,CAAO,EAAgB9gE,MAAKyD,GAAQ,CAC5B,KAAM,QACN,KAAMy9D,GACN,QAAS,aACT,QAASH,EACT,aAAc,YACtB,CAAO,CAAC,CACR,CAAK,EAAGC,GAA+BhhE,MAAK,MAAO,CAC7C,UAAW,+BACX,SAAuBA,MAAK0P,GAAsB,CAChD,MAAOuxD,EACP,SAAUD,EACV,YAAa,gBACrB,CAAO,CACP,CAAK,CAAC,CACN,CAAG,CACH,CCtCA,SAAShsE,GAAmB,EAAGP,EAAGH,EAAG,EAAGW,EAAGC,EAAGC,EAAG,CAAE,GAAI,CAAE,IAAIT,EAAI,EAAEQ,CAAC,EAAEC,CAAC,EAAGC,EAAIV,EAAE,KAAO,OAASW,EAAG,CAAE,OAAO,KAAKf,EAAEe,CAAC,CAAG,CAAEX,EAAE,KAAOD,EAAEW,CAAC,EAAI,QAAQ,QAAQA,CAAC,EAAE,KAAK,EAAGH,CAAC,CAAG,CACxK,SAASK,GAAkB,EAAG,CAAE,OAAO,UAAY,CAAE,IAAIb,EAAI,KAAMH,EAAI,UAAW,OAAO,IAAI,QAAQ,SAAU,EAAGW,EAAG,CAAE,IAAIC,EAAI,EAAE,MAAMT,EAAGH,CAAC,EAAG,SAASiB,EAAMF,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,OAAQH,CAAC,CAAG,CAAE,SAASG,EAAOH,EAAG,CAAEL,GAAmBE,EAAG,EAAGD,EAAGM,EAAOC,EAAQ,QAASH,CAAC,CAAG,CAAEE,EAAM,MAAM,CAAG,CAAC,CAAG,CAAG,CAChU,SAASlB,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWvT,IAAIwH,GAAMC,EAAI,OAAO,mBAAmB,EACpCiyC,GAAkB,CAAC/hC,EAAOomD,IAAa,CACzC,IAAI6C,EAAc3+C,GAAetK,CAAK,EAClCqmD,EAAiBN,GAA2B/lD,EAAOomD,EAAS,gBAAgB,EAC5E,CACF,QAAAtb,EACA,OAAQwb,CACZ,EAAMD,GAAwE,GACxEjhB,EAAWkhB,GAAkB,KAAmC,OAASA,EAAc,KAC3F,MAAO,CACL,YAAA2C,EACA,SAAA7jB,EACA,QAAA0F,CACJ,CACA,EACIiqB,GAAY9yB,GAAQF,GAAiB,KAAM,KAAM,CACnD,WAAY,EACd,CAAC,EACD,SAASizB,GAAa9sE,EAAG,CACvB,IAAIkU,EAAalU,EACjB,OAAOkU,GAAc,MAAQ,OAAOA,EAAW,QAAW,QAC5D,CAKO,MAAM64D,WAA0BziE,EAAM,SAAU,CACrD,OAAO,YAAY9I,EAAO,CACxBmG,GAAI,MAAMnG,CAAK,CACjB,CAMA,OAAO,aAAa8K,EAAO,CACzB,OAAIwgE,GAAaxgE,CAAK,EAEbA,EAAM,QAAU,EAIlB,EACT,CACA,YAAYjC,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,EACnD,KAAK,iBAAmB,KAAK,iBAAiB,KAAK,IAAI,EACvD,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,4BAA8B,KAAK,4BAA4B,KAAK,IAAI,EAC7E,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,sBAAwB,KAAK,sBAAsB,KAAK,IAAI,EACjE,GAAI,CACF,QAAAu4C,EACA,SAAA1F,CACN,EAAQ7yC,EACJ,KAAK,MAAQ,CACX,QAAS,GACT,SAAA6yC,EACA,QAAA0F,EACA,iBAAkB,GAClB,gBAAiB,GACvB,CACE,CACA,mBAAoB,CACb,KAAK,YACR,KAAK,SAAS,CACZ,QAAS,EACjB,CAAO,CAEL,CACA,kBAAmB,CACjB,GAAI,CACF,WAAAnR,CACN,EAAQ,KAAK,MACL,CACF,QAAAmR,EACA,SAAA1F,CACN,EAAQ,KAAK,MACLr4B,EAAmB,CACrB,SAAAq4B,EACA,MAAO,EACb,EACIv1C,GAAI,MAAM,mBAAoBi7C,EAAS1F,EAAUr4B,CAAgB,EACjE4sB,EAAW,KAAK6qB,GAAc,gBAAiB1Z,EAAS1F,EAAUr4B,CAAgB,CACpF,CACA,uBAAwB,CACtB,KAAK,SAAS,CACZ,iBAAkB,EACxB,CAAK,CACH,CACA,6BAA8B,CAC5Bld,GAAI,MAAM,6BAA6B,EACvC,KAAK,SAAS,CACZ,iBAAkB,EACxB,CAAK,CACH,CACA,4BAA4Bw6D,EAAM,CAChCx6D,GAAI,MAAM,8BAA+Bw6D,CAAI,EAC7C,KAAK,SAAS,CACZ,iBAAkB,EACxB,CAAK,EACD,GAAI,CACF,YAAApB,CACN,EAAQ,KAAK,MACTA,EAAY,gBAAgBoB,CAAI,EAAE,MAAM4K,GAAkB,WAAW,CACvE,CACA,eAAelhB,EAAM,CACnB,IAAI9B,EAAQ,KACZ,OAAO/oD,GAAkB,WAAa,CACpC,GAAI,CACF,YAAA+/D,CACR,EAAUhX,EAAM,MACV,GAAI4W,GAAY9U,CAAI,EAAG,CACrBlkD,GAAI,MAAM,iCAAkCkkD,CAAI,EAChD,MACF,CACA,IAAIud,EAAU,MAAMtI,EAAU,sBAAsBC,EAAalV,EAAK,QAAQ,EAC9E,MAAMkV,EAAY,SAASlV,EAAK,SAAUud,CAAO,CACnD,CAAC,EAAC,CACJ,CACA,aAAa1d,EAAO,CAClB,GAAI,CACF,WAAAja,CACN,EAAQ,KAAK,MACTia,EAAM,QAAQG,GAAQ,CACpBpa,EAAW,KAAK6qB,GAAc,WAAY,CACxC,GAAIzQ,EAAK,SACT,SAAUA,EAAK,QACvB,CAAO,CACH,CAAC,CACH,CACA,sBAAsB0a,EAAe,CACnC,IAAIpE,EAAO,IACPoE,EAAc,SAAW,IACvBA,EAAc,CAAC,EAAE,OAAS,YAC5BpE,EAAOrB,EAAU,SAASyF,EAAc,CAAC,EAAE,QAAQ,EAEnDpE,EAAOrB,EAAU,QAAQyF,EAAc,CAAC,EAAE,QAAQ,GAGtD,KAAK,SAAS,CACZ,gBAAiBpE,CACvB,CAAK,CACH,CACA,iBAAiBtW,EAAMv/C,EAAO,CAE5B,GADA3E,GAAI,MAAM,aAAckkD,CAAI,EACxBA,EAAK,OAAS,YAGlB,KAAImhB,EAAcD,GAAkB,aAAazgE,CAAK,EAClD2gE,EAAe,CACjB,GAAIphB,EAAK,SACT,SAAUA,EAAK,QACrB,EACQ,CACF,WAAApa,CACN,EAAQ,KAAK,MACL,CACF,QAAAmR,EACA,SAAA1F,CACN,EAAQ,KAAK,MACLr4B,EAAmB,CACrB,MAAO,KACP,SAAAq4B,CACN,EACIzL,EAAW,KAAK6qB,GAAc,gBAAiB1Z,EAAS1F,EAAUr4B,EAAkBooD,EAAcD,CAAW,EAC/G,CACA,aAAaE,EAAS9D,EAAS,CAC7B,GAAI,CACF,WAAA33B,CACN,EAAQ,KAAK,MACT9pC,GAAI,MAAM,eAAgBulE,EAAS9D,CAAO,EAC1C33B,EAAW,KAAK6qB,GAAc,YAAa4Q,EAAS9D,CAAO,CAC7D,CACA,oBAAoBxmB,EAASx1C,EAAM,CACjC,GAAI,CACF,SAAA8vC,CACN,EAAQ9vC,EACJ,KAAK,SAAS,CACZ,QAAAw1C,EACA,SAAA1F,CACN,CAAK,CACH,CACA,qBAAsB,CACpB,KAAK,SAAS,CACZ,QAAS,OACT,SAAU,MAChB,CAAK,CACH,CACA,YAAa,CACX,KAAK,SAAS,CACZ,QAAS,EACf,CAAK,CACH,CACA,UAAW,CACT,GAAI,CACF,YAAAzQ,CACN,EAAQ,KAAK,MACL,CACF,SAAA0gC,CACN,EAAQ1gC,EACJ,OAAO0gC,CACT,CACA,QAAS,CACP,GAAI,CACF,YAAApM,EACA,YAAAt0B,EACA,WAAAgF,CACN,EAAQ,KAAK,MACL,CACF,QAAAlnC,EACA,iBAAA6iE,EACA,gBAAAC,CACN,EAAQ,KAAK,MACT,OAAoBvhE,OAAMmyD,GAAO,CAC/B,UAAW,sBACX,eAAgB,KAChB,YAAaxxB,EACb,WAAYgF,EACZ,cAAe,KAAK,oBACpB,eAAgB,KAAK,oBACrB,OAAQ,KAAK,WACb,SAAU,CAAc/lC,MAAK6gE,GAAqB,CAChD,WAAY,KAAK,iBACjB,aAAc,KAAK,qBAC3B,CAAO,EAAGhiE,GAAwBmB,MAAK89D,GAAc,CAC7C,cAAe,GACf,QAASzI,EACT,OAAQ,KAAK,eACb,aAAc,KAAK,iBACnB,eAAgB,KAAK,sBACrB,SAAU,KAAK,aACf,SAAU,KAAK,aACf,SAAU,KAAK,iBACf,kBAAmB,KAAK,qBAChC,CAAO,EAAgBr1D,MAAKu/D,GAAc,CAClC,OAAQmC,EACR,KAAM,YACN,MAAO,oBACP,QAASrM,EACT,SAAU,KAAK,4BACf,SAAU,KAAK,4BACf,aAAcsM,CACtB,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACAttE,GAAgBgtE,GAAmB,YAAa,mBAAmB,EACnEhtE,GAAgBgtE,GAAmB,QAAS,eAAe,EACxD,IAACO,GAA6BT,GAAUE,EAAiB,EC/Q5D,SAAShtE,GAAgBC,EAAGC,EAAG,EAAG,CAAE,OAAQA,EAAIC,GAAeD,CAAC,KAAMD,EAAI,OAAO,eAAeA,EAAGC,EAAG,CAAE,MAAO,EAAG,WAAY,GAAI,aAAc,GAAI,SAAU,EAAE,CAAE,EAAID,EAAEC,CAAC,EAAI,EAAGD,CAAG,CACnL,SAASE,GAAeC,EAAG,CAAE,IAAIC,EAAIC,GAAaF,EAAG,QAAQ,EAAG,OAAmB,OAAOC,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASC,GAAaF,EAAGF,EAAG,CAAE,GAAgB,OAAOE,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIH,EAAIG,EAAE,OAAO,WAAW,EAAG,GAAeH,IAAX,OAAc,CAAE,IAAII,EAAIJ,EAAE,KAAKG,EAAGF,CAAc,EAAG,GAAgB,OAAOG,GAAnB,SAAsB,OAAOA,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBH,IAAb,SAAiB,OAAS,QAAQE,CAAC,CAAG,CAWvT,IAAIwH,GAAMC,EAAI,OAAO,UAAU,EAC/B,MAAM2lE,WAAiB91D,eAAc,CACnC,YAAYpN,EAAO,CACjB,MAAMA,CAAK,EACXtK,GAAgB,KAAM,kBAAmB,MAAM,EAC/CA,GAAgB,KAAM,UAAW,MAAM,EACvC,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,oBAAsB,KAAK,oBAAoB,KAAK,IAAI,EAC7D,KAAK,gBAAkB,GACvB,KAAK,QAAU,KACf,GAAI,CACF,QAAA6iD,CACN,EAAQ,KAAK,MACT,KAAK,MAAQ,CACX,QAAAA,CACN,CACE,CACA,cAAe,CACb,KAAK,iBAAgB,CACvB,CACA,YAAa,CACX,KAAK,iBAAgB,EACjB,KAAK,UACP,KAAK,QAAQ,kBAAiB,EAC1B,KAAK,iBACP,KAAK,QAAQ,eAAc,EAGjC,CACA,YAAa,CACP,KAAK,UACP,KAAK,gBAAkB,KAAK,QAAQ,gBAAe,EAEvD,CACA,oBAAoBA,EAAS,CAC3Bj7C,GAAI,MAAM,iBAAkB,CAACi7C,CAAO,CAAC,EACrC,KAAK,SAAS,CACZ,QAAAA,CACN,CAAK,CACH,CAGA,oBAAoBA,EAAS,CAC3Bj7C,GAAI,MAAM,iBAAkBi7C,CAAO,CAErC,CACA,kBAAmB,CACb,KAAK,SACP,KAAK,QAAQ,iBAAgB,CAEjC,CACA,QAAS,CACP,GAAI,CACF,YAAAnW,EACA,WAAAgF,CACN,EAAQ,KAAK,MACL,CACF,QAAAmR,CACN,EAAQ,KAAK,MACT,OAAoB92C,OAAMmyD,GAAO,CAC/B,eAAgB,KAChB,YAAaxxB,EACb,WAAYgF,EACZ,SAAU,KAAK,aACf,OAAQ,KAAK,WACb,OAAQ,KAAK,WACb,cAAe,KAAK,oBACpB,eAAgB,KAAK,oBACrB,SAAU,CAACmR,GAAW,MAAqBl3C,MAAK,MAAO,CACrD,UAAW,iCACX,SAAU,gCAClB,CAAO,EAAGk3C,GAAW,MAAqBl3C,MAAK8sD,GAAS,CAChD,QAAS5V,EACT,IAAK4qB,GAAW,CACd,KAAK,QAAUA,CACjB,CACR,CAAO,CAAC,CACR,CAAK,CACH,CACF,CACAztE,GAAgBwtE,GAAU,eAAgB,CACxC,QAAS,IACX,CAAC,EACDxtE,GAAgBwtE,GAAU,YAAa,UAAU,EACjDxtE,GAAgBwtE,GAAU,QAAS,KAAK,EACxC,IAAI1zB,GAAkB,CAAC/hC,EAAOomD,IAAa,CACzC,IAAIuP,EACJ,MAAO,CACL,SAAUA,EAAwB5P,GAA2B/lD,EAAOomD,EAAS,gBAAgB,KAAO,MAAQuP,IAA0B,OAAS,OAASA,EAAsB,OAClL,CACA,EACIC,GAAoB3zB,GAAQF,GAAiB,KAAM,KAAM,CAC3D,WAAY,EACd,CAAC,EAAE0zB,EAAQ","names":["EMPTY_ARRAY","EMPTY_MAP","EMPTY_FUNCTION","ensureArray","value","removeNullAndUndefined","_len","maybeDefined","_key","m","_defineProperty","e","r","_toPropertyKey","t","i","_toPrimitive","CanceledPromiseError","ClipboardPermissionsDeniedError","ClipboardUnavailableError","UnsupportedPermissionError","asyncGeneratorStep","o","a","c","u","n","_asyncToGenerator","_next","_throw","checkPermission","_x","_checkPermission","permission","name","error","copyToClipboard","_copyToClipboard","text","clipboard","copyToClipboardExecCommand","oldFocus","textArea","result","readFromClipboard","_readFromClipboard","permissionState","_text","err","_DbNameValidator","TABLE_PREFIX","COLUMN_PREFIX","DB_RESERVED_VARIABLE_NAMES","JAVA_KEYWORDS","STERILE_TABLE_AND_NAMESPACE_REGEX","STERILE_COLUMN_AND_QUERY_REGEX","TABLE_NAME_PATTERN","STERILE_VARIABLE_NAME_REGEX","columnNameReplacer","input","tableNameReplacer","DbNameValidator","replace","prefix","regex","checkReserved","legalName","headers","legalHeaders","header","legalHeader","EventShimCustomEvent","typeArg","eventInitDict","PromiseUtils","promise","cleanup","hasCanceled","resolved","rejectFn","wrappedPromise","resolve","reject","val","TimeoutError","timeoutMs","callback","Pending","item","allPromises","getErrorMessage","errorObj","message","RangeUtils","range","selectedRanges","index","start","end","ranges","selectedRange","selectedStart","selectedEnd","sum","items","acc","generateRange","NON_BREAKING_SPACE","TextUtils","conjunction","itemText","lastItem","isNullAllowed","b","isAscending","singular","pluralized","TimeUtils","time","hours","mins","seconds","timeInSeconds","divisorForMinutes","minutes","divisorForSeconds","s","timeString","components","ValidationError","useIsMountedRef","isMountedRef","useRef","useEffect","log","Log","useAsyncInterval","targetIntervalMs","setTimeoutRef","trackingCountRef","trackingStartedRef","tick","useCallback","now","elapsedSinceLastTick","overage","nextTickInterval","useContextOrThrow","context","useContext","useDebouncedCallback","debounceMs","options","leading","trailing","maxWait","debouncedCallback","useMemo","debounce","usePrevious","ref","useThrottledCallback","throttleMs","initialOptions","callbackRef","throttledCallback","throttle","_options$current$flus","_options$current","useForwardedRef","innerRef","ownKeys","_objectSpread","POPPER_CLASS_NAME","Popper","Component","props","React","isShown","prevProps","element","statePopper","closeOnBlur","referenceObject","parent","popper","PopperJs","popperEl","flushSync","updateState","onEntered","onExited","show","className","children","timeout","interactive","_jsx","SpectrumThemeProvider","CSSTransition","classNames","_jsxs","dataTestId","ReactDOM","ThemeExport","_Tooltip","Tooltip","prevState","oldIsShown","event","mouseX","mouseY","popperRect","parentRect","reshowTimeout","timerTimeout","_this$popper$current","_this$popper$current2","_this$popper$current3","popperClassName","ThemeContext","createContext","ThemeProvider","_ref","customThemes","waitForActivation","defaultPreloadValues","DEFAULT_PRELOAD_DATA_VARIABLES","baseThemes","getDefaultBaseThemes","setValue","useState","selectedThemeKey","setSelectedThemeKey","getDefaultSelectedThemeKey","activeThemes","getActiveThemes","themes","overrideSVGFillColors","preloadStyleContent","calculatePreloadStyleContent","theme","setThemePreloadData","_Fragment","useTheme","SplitButtonGroup","style","_excluded","_objectWithoutProperties","_objectWithoutPropertiesLoose","getClassName","kind","iconOnly","getVariantClasses","Button","variant","type","tooltip","icon","disabled","active","onClick","onContextMenu","onMouseDown","onMouseUp","onMouseEnter","onMouseLeave","onKeyDown","tabIndex","ariaLabel","rest","UNSAFE_className","useSlotProps","variantClassName","iconElem","FontAwesomeIcon","btnClassName","tooltipElem","ariaLabelString","button","ModalFooter","BasicModal","isOpen","headerText","bodyText","onCancel","onConfirm","onDiscard","onModalDisable","cancelButtonText","confirmButtonText","discardButtonText","isConfirmDanger","confirmButton","disableModalCheckbox","onConfirmClicked","onOpened","_confirmButton$curren","modalBody","Modal","ModalHeader","ModalBody","isPromise","ContextActionUtils","_a$group","_b$group","_a$order","_b$order","_a$title","_b$title","actions","sortedActions","platform","modifierKey","actionsParam","includePromises","menuItems","action","newMenuItems","startIndex","delta","firstIndex","menuIndex","GlobalContextAction","evt","_action$action","GlobalContextActions","actionElements","shortcut","actionElement","ContextActions","clientX","clientY","mouseEvent","globalActions","keyboardActions","_this$container$curre","_this$container$curre2","ignoreClassNames","el","_loop","classList","ignoredClassName","_ret","contextActions","keyboardAction","_keyboardAction$actio","ContextMenuItem","_menuItem$shortcutTex","_menuItem$shortcut","closeMenu","menuItem","onMenuItemClick","onMenuItemMouseMove","onMenuItemContextMenu","isKeyboardSelected","isMouseSelected","handleMenuItemClick","handleMenuItemMouseMove","handleMenuItemContextMenu","renderCustomMenuElement","iconElement","displayShortcut","forwardedProps","menuItemIcon","subMenuIndicator","isSubMenuActive","vsChevronRight","content","_menuItem$description","menuItemDisabled","iconHasOutline","Checkbox","forwardedRef","checked","inputClassName","isInvalid","labelClassName","onChange","id","nanoid","handleOnChange","isWrappedComponent","isClassComponent","isForwardRefComponentType","ForwardRef","canHaveRef","Menu","PureComponent","_options$initialKeybo","keyboardIndex","onMenuOpened","mouseIndex","state","newFocus","closeAll","onMenuClosed","focusIndex","menuItemElements","menuItemElement","menuStyle","DropdownMenu","popperOptions","MODIFIER","KEY","ALLOWED_SINGLE_KEY_SET","Shortcut","EventTarget","key","keyValue","isSingleKey","keys","keyState","eventKey","keyCode","display","state1","state2","_state1$keyValue","_state2$keyValue","macShortcut","isEditable","isMac","activeShortcut","ShortcutRegistry","params","existingShortcut","detail","category","_this$shortcutsByCate","registry","GLOBAL_SHORTCUTS","SearchInput","_this$inputField$curr","_this$inputField$curr2","inputField","searchChangeSelection","paddingRight","placeholder","endPlaceholder","onBlur","matchCount","cursor","matchCountSection","vsArrowLeft","vsArrowRight","vsSearch","DebouncedSearchInput","_this$searchInput$cur","ItemListItem","itemIndex","onFocus","onDragStart","onDrag","onDragOver","onDragEnd","onDrop","onDoubleClick","onMouseMove","isDraggable","isFocused","isSelected","_ItemList","MIN_DRAG_DELTA","ItemList","_ref2","_item$displayValue","_props","memoize","renderItem","disableSelect","component","isStickyBottom","_selectedRanges","propSelectedRanges","itemCount","isStuckToBottom","scrollOffset","height","onSelectionChange","onFocusChange","_this$listContainer$c","_this$listContainer$c2","focusSelector","overscanStartIndex","elements","elementIndex","isModifierDown","isDoubleClickSelect","onSelect","_ref3","isDragSelect","isMultiSelect","mouseDownIndex","mouseMoveX","mouseMoveY","isDeselectOnClick","isDragging","isShiftDown","_ref4","_ref5","lastRange","_this$listContainer$c3","_ref6","scrollUpdateWasRequested","isDeselectable","_ref7","_ref8","onViewportChange","rowHeight","topRow","bottomRow","_ref9","offset","overscanCount","AutoSizer","_ref0","width","List","ErrorBoundary","errorInfo","onError","fallback","LoadingOverlay","UISwitch","on","Select","handleChange","XComponentMapContext","XComponentMapProvider","useXComponent","_ctx$get","ctx","createXComponent","_Component$displayNam","forwardedRefComponent","XComponent","ReplacementComponent","forwardRef","useApi","ApiContext","isNameVariableDescriptor","isIdVariableDescriptor","isVariableDescriptor","ObjectFetcherContext","sanitizeVariableDescriptor","descriptor","_descriptor$name","getVariableDescriptor","definition","_definition$type","_definition$title","useObjectFetcher","EMPTY_OBJECT","getApi","store","getUser","getStorage","getCommandHistoryStorage","getFileStorage","getDefaultWorkspaceSettings","getWorkspace","workspace","getSettings","_getWorkspace$data$se","_getWorkspace","customizedSettings","settings","getTimeZone","getNotebookSettings","_getSettings$notebook","getActiveTool","getPlugins","_store$plugins","SET_ACTIVE_TOOL","SET_API","SET_COMMAND_HISTORY_STORAGE","SET_FILE_STORAGE","SET_PLUGINS","SET_USER","SET_WORKSPACE","SET_DEFAULT_WORKSPACE_SETTINGS","SET_WORKSPACE_STORAGE","SET_SERVER_CONFIG_VALUES","setUser","user","setApi","api","setWorkspace","setDefaultWorkspaceSettings","saveWorkspace","dispatch","getState","storage","workspaceStorage","updateWorkspaceData","workspaceData","data","newWorkspace","updateNotebookSettings","notebookSettings","newNotebookSettings","updateSettings","setActiveTool","payload","setServerConfigValues","config","replaceByIdReducer","initialState","checkIfChanged","deepEqual","ReducerRegistry","reducer","_this$listener","listener","reducerRegistry","TableColumnFormatter","dh","format","formatA","formatB","label","formatString","DateTimeColumnFormatter","showTimeZone","showTSeparator","separator","tz","formatStringMap","timeZoneParam","defaultDateTimeFormatString","timeZone","baseFormatString","_this$formatStringMap","_DecimalColumnFormatter","DecimalColumnFormatter","multiplier","defaultFormatString","valueParam","_IntegerColumnFormatter","IntegerColumnFormatter","NewTableColumnTypes","PluginsContext","PluginType","isLegacyDashboardPlugin","plugin","isLegacyAuthPlugin","isLegacyTablePlugin","isLegacyPlugin","isDashboardPlugin","isWidgetPlugin","isTablePlugin","isAuthPlugin","isThemePlugin","isElementPlugin","isPlugin","pluginSupportsType","getIconForPlugin","defaultIcon","vsPreview","isValidElement","getThemeDataFromPlugins","pluginMap","themePluginEntries","entry","pluginName","configs","baseTheme","styleContent","getThemeKey","getPluginsElementMap","elementPluginEntries","usePlugins","PersistentStateContext","PersistentStateProvider","updateId","setUpdateId","persistentData","addState","scheduleStateUpdate","prev","initialStateIterator","getInitialState","initialStateForId","done","stateVal","contextValue","defaultChartTheme","_chartTheme$colorway","chartTheme","resolveCssVariablesInRecord","chartThemeRaw","getExpressionRanges","ColorUtils","PlotBase","lazy","__vitePreload","Plot","Suspense","ChartThemeContext","ChartThemeProvider","useChartTheme","defaultConfig","isGLComponentConfig","isReactComponentConfig","itemDefaultConfig","EventEmitter","eventName","subs","args","allEventSubs","_i","_ctx","bUnbound","ItemContainer","layoutManager","$","_this$direction","_rowOrColumnChild$con","_rowOrColumnChild$con2","rowOrColumn","rowOrColumnChild","_rowOrColumn","direction","newSize","totalPixel","percentage","_rowOrColumn$contentI","_this$beforeCloseHand","_this$beforeCloseHand2","title","cl","hdelta","vdelta","getHashValue","matches","getQueryStringParam","param","keyValuePairs","pair","animFrame","fn","removeFromArray","array","getUniqueId","filterXss","keepTags","output","stripTags","DragListener","eElement","_this$_eElement","destroyAfterMouseUp","_this$_eElement2","_this$_oDocument","oEvent","_coordinates$x","_coordinates$y","_this$_oDocument2","_this$_oDocument3","coordinates","_coordinates$x2","_coordinates$y2","_this$_oDocument4","_this$_oDocument5","_this$_oDocument6","_this$_eBody","_this$_eElement3","_this$_eBody2","_this$_eElement4","_this$_oDocument7","_event$pageX","_event$pageY","ReactComponentHandler","container","nextProps","nextState","_this$_originalCompon","componentName","reactClass","defaultProps","_keys","_values","minifyConfig","min","_nextLevel","unminifyConfig","minifiedConfig","orig","from","to","translationFnName","translationFn","_min","_max","fromItem","toItem","minKey","_toItem","_minKey","dictionary","BubblingEvent","origin","_window$opener","childGl","listenForEvent","eventEmitter","handler","makeListenFunction","makeEmitFunction","parameters","makeUseListenerFunction","eventEmitterRef","handlerRef","_eventEmitterRef$curr","_eventEmitterRef$curr2","makeEventFunctions","BrowserPopout","dimensions","parentId","indexInParent","_this$getGlInstance","_this$getGlInstance2","_this$_popoutWindow$s","_this$_popoutWindow","_this$_popoutWindow2","_this$_popoutWindow$s2","_this$_popoutWindow3","_this$_popoutWindow4","_this$getGlInstance3","_this$_popoutWindow5","_this$getGlInstance4","_this$getWindow","_parentItem","childConfig","parentItem","_this$getGlInstance5","_this$_layoutManager$","url","checkReadyInterval","_this$_popoutWindow6","windowOptions","windowOptionsString","storageKey","urlParts","_this$_popoutWindow7","_this$_popoutWindow8","_this$getGlInstance6","DragProxy","x","y","dragListener","contentItem","originalParent","_this$_contentItem$co","_this$_contentItem$co2","_offset$left","_offset$top","_this$_layoutManager$2","_this$element$width","_this$element$height","_this$_contentItem$ta","_this$_contentItem$ta2","_this$_proxyTab$outer","_this$_proxyTab$outer2","offsetX","offsetY","isWithinContainer","_this$_layoutManager$3","DragSource","itemConfig","DragSourceFromEvent","DropTargetIndicator","area","HeaderButton","cssClass","ConfigurationError","node","isStack","isComponent","isRoot","AbstractContentItem","functionName","functionArguments","bottomUp","skipSelf","_this$config$content","keepChild","_this$parent","oldChild","newChild","_$destroyOldChild","parentNode","_this$parent2","browserPopout","filter","instances","_this$layoutManager$d","methodName","stacks","activeContentItem","_element$offset","_element$width","_element$height","_this$childElementCon","oContentItem","k","_layoutManager$config","v","ComponentConstructor","componentConfig","forceFocus","RowOrColumn","isColumn","_$suspendResize","newItemSize","itemSize","splitterElement","_this$contentItems$i$","_contentItem$config$t","removedItemSize","splitterIndex","childItem","_this$contentItems$i$2","destroyOldChild","size","sizeData","totalSplitterSize","totalWidth","totalHeight","totalAssigned","itemSizes","_this$contentItems$i$3","_this$contentItems$i$4","additionalPixel","total","itemsWithoutSetDimension","dimension","_i2","_i3","_this$contentItems$_i","_this$layoutManager$c","minItemWidth","entriesOverMin","totalOverMin","totalUnderMin","remainingWidth","allEntries","reducePercent","_i4","reducedWidth","_i5","splitter","Splitter","arr","minWidth","minHeight","_arr$i$minWidth","_arr$i$minHeight","_items$before$config$","_items$after$config$c","_items$before$element","_items$after$element$","minSize","beforeMinDim","beforeMinSize","afterMinDim","afterMinSize","_items$before$element2","_items$after$element$2","_this$_splitterPositi","_items$before$config$2","_items$after$config$t","sizeBefore","sizeAfter","splitterPositionInRange","totalRelativeSize","Root","containerElement","_this$_containerEleme","_this$_containerEleme2","stack","side","insertBefore","column","_sibling$config$dimen","sibling","Stack","_cfg$settings","_cfg$settings2","_cfg$labels","_cfg$settings3","_cfg$labels2","_cfg$settings4","_cfg$labels3","_cfg$labels$minimise","_cfg$labels4","cfg","Header","_this$layoutManager$c2","headerSize","contentWidth","contentHeight","initialItem","isClosable","len","isVertical","isHorizontal","hasCorrectParent","_this$config$dimensio","segment","headerArea","contentArea","_tabsContainer$get","_this$layoutManager$t","_this$layoutManager$t2","_this$layoutManager$t3","_this$header$tabsCont","_this$header$tabsCont2","_this$layoutManager$t4","_this$header$tabsCont3","_this$header$tabsCont4","_this$header$tabsCont5","_this$layoutManager$d2","_this$header$element$6","_this$header$element$7","_this$header$element$8","_this$header$element$9","_this$header$element$0","tabsLength","_headerOffset$left","_headerOffset$left2","_this$header$element$","_this$header$element$2","_this$header$element$3","_this$header$element$4","_this$header$element$5","headerOffset","tabsContainer","tabsContainerRect","placeholderRect","tabElement","tabRect","_tabElement$get","_this$_dropIndex","placeHolderLeft","placeHolderRight","elem","headerPosition","_this$_contentAreaDim","highlightArea","_this$layoutManager$d3","Tab","isActive","_this$contentItem$par","_this$element$get","tab","_this$tabs$element$ge","_this$tabs$element$ge2","_this$parent$config$a","position","previous","_this$tabsContainer$g","_this$tabsContainer$g2","target","_this$tabsContainer$i","_this$rAF","_this$tabsContainer$s","_this$tabsContainer$s2","_this$rAF2","_this$rAF3","rightOffscreenChild","_this$tabs$i$element$","_this$tabs$i$element$2","_this$tabsContainer$g3","_this$tabsContainer$g4","_this$tabsContainer$s3","_this$tabsContainer$g5","_this$tabsContainer$g6","leftOffscreenChild","_this$tabs$i$element$3","_this$tabs$i$element$4","_this$tabsContainer$s4","_this$tabsContainer$s5","_this$holdTimer","_this$rAF4","_this$tabsContainer$s6","_this$tabsContainer$i2","_this$tabsContainer$g7","startX","_this$rAF5","deltaX","prevTimestamp","tabContainer","tabContainerRect","_this$tabsContainer$s7","_this$tabsContainer$i3","timestamp","_this$tabsContainer$g8","_this$tabsContainer$g9","startTime","deltaTime","newDeltaX","closeStack","popout","maximise","tabDropdownLabel","maximiseLabel","minimiseLabel","maximiseButton","getNextDropdownIndex","tabDropdownList","_this$tabDropdownList","_this$tabDropdownList2","_this$tabDropdownList3","_this$tabDropdownList4","_this$tabs$i$contentI","_this$tabs$i$contentI2","_this$tabDropdownCont","_this$tabDropdownButt","_this$tabDropdownCont2","_this$tabDropdownCont3","_$$height","_$$width","scrollHeight","list_rect","windowHeight","windowWidth","button_rect","hasSpaceBelow","shouldFlip","left","top","maxHeight","_this$activeContentIt","_this$tabDropdownButt2","_this$tabDropdownButt3","grabSize","_this$_dragListener","_this$_dragListener2","dragHandle","handleExcessSize","handleExcessPos","lm","controls","errors","utils","LAYOUT_ITEM_CONFIG_TYPES","LayoutManager","EventHub","constructor","root","configNode","mapElem","_this$container$width","_this$container$heigh","_this$dropTargetIndic","dragSource","_config$id","typeErrorMsg","configOrContentItem","configArray","isItem","self","_parent3","_parent","child","_parent2","_parent4","_configOrContentItem$","_configOrContentItem$2","_configOrContentItem$3","windowLeft","windowTop","_$silent","_this$container$width2","_this$container$heigh2","_contentItem$parent","smallestSurface","mathingArea","areaSize","rootArea","areas","allContentItems","_area$contentItem$_co","contentItemOrConfig","newContentItem","openPopouts","_this$openPopouts$i$g","addChildren","_config$settings","windowConfigKey","_nextNode","_this$config$content$","popInButton","errorMsg","columnCount","totalMinWidth","finalColumnCount","stackColumnCount","rootContentItem","firstStackContainer","stackContainers","GoldenLayoutThemeExport","GoldenLayout","isComponentConfig","reactConfig","isHTMLElement","isStackItemConfig","LayoutUtils","activeItem","columnPreferred","rowOrColConfig","_isCorrectType","maintainFocusElement","newParent","isCorrectType","_newParent$config","_newParent$config2","inverseRowOrColConfig","layout","allStacks","focusedStackIndex","searchId","_item$config","allowEmptyStack","_item$config2","isMatch","createIfNecessary","matchComponentType","types","isLastType","dehydrateComponent","dehydratedConfig","dehydratedComponent","layoutItemConfig","glContainer","layout1","layout2","major","layout1Clone","layout2Clone","hydrateComponent","hydratedConfig","_itemConfig$id","contentConfig","configParam","stackParam","replaceExisting","replaceConfig","createNewStack","focusElement","dragEvent","searchConfig","assertNotNull","oldContentItem","onComponentCreated","closeOptions","newTitle","panelState","cloneConfig","_config$componentStat","_config$props","panel","_config$component","_component$WrappedCom","_component$WrappedCom2","selector","onInit","PanelPlaceholder","PanelEvent","listenForPanelOpen","emitPanelOpen","usePanelOpenListener","NavigationEvent","listenForCycleToNextStack","emitCycleToNextStack","useCycleToNextStackListener","listenForCycleToPreviousStack","emitCycleToPreviousStack","useCycleToPreviousStackListener","listenForCycleToNextTab","emitCycleToNextTab","useCycleToNextTabListener","listenForCycleToPreviousTab","emitCycleToPreviousTab","useCycleToPreviousTabListener","CycleDirection","PanelManager","openedMap","closed","onPanelsUpdated","eventHub","remover","typeString","panelId","matcher","opened","panelConfig","closedConfig","focusedIndex","_targetStack","_activeContentIndex","_activeContentItem","targetIndex","targetStack","activeContentIndex","_focusedStack$config$","focusedStack","contentItems","activeItemIndex","targetContentItem","_LayoutUtils$getStack","stackId","_glContainer$tab","PanelErrorBoundary","glEventHub","dehydrate","componentState","metadata","newProps","hydrate","localDashboardId","DashboardUtils","LayoutManagerContext","Container","PropTypes","Layout","GLPropTypes","useListener","SET_DASHBOARD_DATA","dashboardData","reducers","useAppDispatch","useDispatch","useAppSelector","useSelector","useAppStore","useStore","getAllDashboardsData","getDashboardData","dashboardId","_getAllDashboardsData","getClosedPanelsForDashboard","_getDashboardData$clo","getOpenedPanelMapForDashboard","_getDashboardData$ope","getPluginDataMapForDashboard","_getDashboardData$plu","getPluginDataForDashboard","pluginId","setDashboardData","updateDashboardData","setDashboardPluginData","DashboardPanelWrapper","PanelIdContext","usePanelId","DEFAULT_LAYOUT_CONFIG","DEFAULT_CALLBACK","STATE_CHANGE_THROTTLE_MS","FALLBACK_CALLBACK","DashboardLayout","_useSelector","_closed","emptyDashboard","layoutConfig","onLayoutChange","onLayoutInitialized","hydrateDefault","dehydrateDefault","panelWrapper","isDashboardEmpty","setIsDashboardEmpty","isItemDragging","setIsItemDragging","lastConfig","setLastConfig","initialClosedPanels","layoutChildren","setLayoutChildren","hydrateMap","dehydrateMap","registerComponent","componentType","_componentType$displa","componentHydrate","componentDehydrate","wrappedComponent","CType","PanelWrapperType","hasRef","_hydrateMap$get","_dehydrateMap$get","panelManager","throttledProcessDehydratedLayoutConfig","dehydratedLayoutConfig","hasChanged","handleLayoutStateChanged","glConfig","handleLayoutItemPickedUp","componentId","handleLayoutItemDropped","handleComponentCreated","cssComponent","handleReactChildrenChange","previousLayoutConfig","DashboardIdContext","useDashboardId","traverseFiber","fiber","ascending","match","wrapContext","FiberContext","React.createContext","FiberProvider","React.Component","useFiber","React.useContext","React.useState","actualFiber","React.useMemo","maybeFiber","DEFAULT_DASHBOARD_ID","CREATE_DASHBOARD","CLOSE_DASHBOARD","listenForCreateDashboard","emitCreateDashboard","useCreateDashboardListener","listenForCloseDashboard","emitCloseDashboard","useCloseDashboardListener","PanelContextMenu","_glContainer$tab$head","tabs","_container","_tabs$i$contentItem","_glContainer$tab2","_container2","_tabs$i","_tabs$i$contentItem2","_glContainer$tab3","_tabs$i2","closable","_tabs$i3","_workspace$data$close","_glContainer$tab4","additionalActions","mapStateToProps","ConnectedPanelContextMenu","connect","setWorkspaceAction","RenameDialog","prevIsShown","_this$renameInputRef","onSubmit","isShared","isOwner","itemType","valueWasValidated","TabEvent","BasePanel","isClonable","isRenamable","_this$ref$current","componentPanel","onTab","onTabClicked","onHide","onResize","_len2","_key2","onBeforeShow","_len3","_key3","onShow","_len4","_key4","onTabBlur","_len5","_key5","onTabFocus","_len6","_key6","renderTabTooltip","errorMessage","isLoaded","isLoading","glTab","showRenameDialog","isWithinPanel","XBasePanel","DH_ID_PROP","useDhId","_useFiber","dhIdProp","ObjectIcon","dhTable","vsGraph","dhPandas","Code","language","colorizedHtml","setColorizedHtml","isCanceled","colorize","_colorize","monaco.editor","ConsoleConstants","ConsoleUtils","arg","str","ShellQuote","date","milliseconds","ConsoleHistoryItemResult","ConsoleHistoryResultInProgress","onCancelClick","elapsed","LoadingSpinner","vsClose","ConsoleHistoryResultErrorMessage","isExpanded","isTriggerHovered","messageProp","lineBreakIndex","isMultiline","topLineOfMessage","remainderOfMessage","arrowBtnClasses","vsTriangleDown","vsTriangleRight","ConsoleHistoryItem","object","openObject","iconForType","disabledObjects","hasCommand","commandElement","resultElements","hasButtons","changes","created","updated","btnDisabled","_message","_element","_element2","resultElement","itemKey","ConsoleHistory","supportsType","historyElements","historyElement","CONSOLE","COMMAND_HISTORY","NOTEBOOK","SHORTCUTS","LogLevel","conf","lang","RUFF_DEFAULT_SETTINGS","MonacoProviders","init","Workspace","prevLog","model","diagnostics","MonacoUtils","d","isUnnecessary","isSyntaxError","monaco.MarkerSeverity","monaco.MarkerTag","monacoKinds","monaco.languages","diagnosticRange","monaco.Range","fixActions","fix","edit","_edit$content","seenCodes","duplicateCodes","disableLineActions","line","lastToken","lineEdit","disableGlobalActions","code","token","session","_this$registeredCompl","_this$registeredSigna","_this$registeredHover","propModel","completionItems","monacoCompletionItems","suggestions","documentation","sortText","filterText","textEdit","insertTextFormat","defaultResult","signatureItems","monacoSignatures","signatures","activeSignature","hover","monacoHover","hoverItem","hoverContents","CONSOLE_URI_PREFIX","getWorker","initTheme","registerLanguages","DbLang","PyLang","GroovyLang","LogLang","ScalaLang","throttledLint","_MonacoTheme$logErro","_MonacoTheme$logErro2","removeHashtag","MonacoTheme","MonacoThemeRaw","dhDarkRules","dhDarkColors","color","_color$substring","languages","languageIds","languageParam","editor","_editor$getModel","eolSequence","didOpenDocumentParams","dispose","changedEvent","versionId","contentChanges","change","rangeLength","contentChange","didChangeDocumentParams","didCloseDocumentParams","pasteEvent","smartQuotes","invalidChars","invalidSpaces","editorModel","pastedText","monaco.KeyMod","monaco.KeyCode","keybindings","KeyCodeUtils","newTokens","lineText","originalTokens","linkifyFind","tokens","monaco.Uri","_editor$getAction","_editor$getAction2","LINE_HEIGHT","TOP_PADDING","BOTTOM_PADDING","MIN_INPUT_HEIGHT","BUFFER_SIZE","ConsoleInput","focus","execute","_this$commandEditor","commandSettings","_this$commandEditor2","keyEvent","commandEditor","commandHistoryIndex","lineNumber","_this$commandEditor3","command","_this$commandEditor4","_this$commandEditor5","_this$commandSuggesti","_this$commandSuggesti2","_this$commandEditor6","_this$commandEditor7","_this$commandEditor8","_this$commandEditor9","_this$commandEditor0","_this$commandEditor1","firstCharTop","_this$commandEditor10","_this$commandEditor11","_this$commandEditor12","_this$commandEditor13","_this$commandEditor14","lastLine","lastCharTop","_this$commandEditor15","_this$commandEditor16","_this$commandEditor17","modifiedValue","historyValue","_this","commandHistoryStorage","scope","table","viewportData","pos","commandEditorHeight","shouldScroll","_this$commandEditor18","_this$commandEditor19","PASTED_VALUES","INVALID_MIME_TYPES","VALID_EXTENSIONS","ZIP_EXTENSIONS","CsvOverlay","invalid","allowZip","ext","fileName","vsClippy","dhFileCsv","vsFileZip","dhFileSpreadsheet","_this$divElem$current","_this$divElem$current2","_this$divElem$current3","_this$fileElem$curren","files","clearDragError","dragError","file","onFileOpened","onPaste","uploadInProgress","clipText","selectedFileName","dropError","dhFileDownload","vsTrash","vsWarning","makeZipStreamHelper","zipObj","onUpdate","helper","_","UNKNOWN","MAX_INT","MIN_INT","DATE_TIME_REGEX","LOCAL_TIME_REGEX","CsvTypeParser","nullString","noCommas","lower","maxIntLength","intValue","onFileCompleted","readHeaders","parentConfig","onProgress","totalChunks","isZip","shouldTrim","Papa","zipStream","parser","cloneTypes","row","progress","isCancelled","results","_CsvParser","ZIP_CONSOLIDATE_CHUNKS","CsvParser","char","numColumns","numRows","columns","handleParseDone","rowCount","typeParser","handleCreateTable","tables","_this$consolidatedChu","toUpload","CsvFormats","TYPE_OPTIONS","CsvInputBar","paste","tableName","tableNameSet","_this$inputRef$curren","dotIndex","fileTableName","onClose","isFirstRowHeaders","onInProgress","zipFile","unzip","csvFound","f","progressValue","showProgress","onOpenTable","eventTargetValue","isNameInvalid","POPPER_OPTIONS","ConsoleStatusBar","overflowActions","pendingCommandCount","setPendingCommandCount","handleCommandStarted","count","statusIconClass","tooltipText","hasActions","vsKebabVertical","RESET_FILTER_DELAY","ConsoleObjectsMenu","objects","setFilterText","searchRef","resetFilter","handleMenuOpen","_searchRef$current","handleMenuClose","searchActions","filteredObjects","objectActions","DEFAULT_SETTINGS","defaultSupportsType","defaultIconForType","Console","logLevel","consoleHistory","objectMap","_objectMap","clientHeight","scrollTop","_this$consoleInput$cu","wrappedResult","historyItem","workspaceItemPromise","newHistoryItem","newHistory","history","focusCommandHistory","isPrintStdOutEnabled","isAutoLaunchPanelsEnabled","closeObject","removed","historyItemParam","_changes","_changes2","_changes3","objectHistoryMap","disableOldObject","isRemoved","oldIndex","_consoleHistory$oldIn","endTime","workspaceItem","updatedItem","pane","scrollPane","entries","isExistingObject","csvUploadInProgress","isClosePanelsOnDisconnectEnabled","vsCheck","_this$consoleInput$cu2","hasChanges","setting","prevSetting","onSettingsChange","historyChildren","statusBarChildren","showObjectsMenu","consoleHeight","isScrollDecorationShown","showCsvOverlay","csvFile","csvPaste","consoleMenuObjects","inputMaxHeight","LOAD_DATA_DEBOUNCE","MAX_NUMBER_OF_LINES","CommandHistoryItemTooltip","_prevState$data","_result$error","currentTime","previewText","hasTimeString","MAX_TRUNCATE_LENGTH","CommandHistoryItem","handleUpdate","_tooltip$current","CommandHistoryActions","vsCircleLargeFilled","hasSelection","UPDATE_DELAY","ROW_BUFFER_PAGES","CommandHistoryViewportUpdater","bottom","search","isReversed","throttledUpdateViewport","viewport","viewHeight","bufferedTop","bufferedBottom","_viewportData$items","_viewportData$offset","CommandHistory","sortedRanges","commands","j","searchText","vsFiles","vsTerminal","vsPlay","vsFileCode","vsNewFile","selectedRowCount","commandText","sendToNotebook","sendToConsole","_this$itemListRef$cur","_ConsoleConstants$LAN","historyActions","debouncedSearchText","languageDisplayString","LogLevelMenuItem","LogView","logItem","shownLogLevels","_loop2","isEnabled","level","_this$editor","_this$editor2","_this$editor3","_this$editor4","isAllEnabled","updatedLogLevels","_logLevel","isBottomVisible","edits","lineCount","logText","_this$editor$getModel","_this$editor5","_this$editor5$getMode","_this$editor6","visibleRanges","dhTrashUndo","vsGear","editorContainer","HeapUsage","_timestamps2","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","setIsOpen","historyUsage","setUsageUpdateInterval","newUsage","currentUsage","_timestamps","_usages","toDecimalPlace","num","dec","decimalPlace","GbToByte","freeMemory","totalHeapSize","maximumHeapSize","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","bottomBorder","timestamps","usages","lastTimestamp","totalPercentage","usedPercentage","ConsoleEvent","InputFilterEvent","NotebookEvent","CorePanel","onClearAllFilters","onSessionClose","onSessionOpen","_this$props","otherProps","XCorePanel","getColumnsForDashboard","_getDashboardData$col","getFilterSetsForDashboard","_getDashboardData$fil","getInputFiltersForDashboard","_getDashboardData$fil2","getTableMapForDashboard","_getDashboardData$tab","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","_getDashboardData$lin","getColumnSelectionValidatorForDashboard","getDashboardConsoleSettings","_getDashboardData$con","getDashboardConnection","getDashboardSessionWrapper","CommandHistoryPanel","sessionId","forceNewNotebook","Panel","ownProps","sessionWrapper","sessionConfig","ConnectedCommandHistoryPanel","DEBOUNCE_PANEL_STATE_UPDATE","DEFAULT_PANEL_STATE","ConsolePanel","consoleSettings","itemIds","initialPanelState","_panelState","_consoleSettings","_itemIds","_this$objectSubscript","updates","objectsToRemove","newObjectMap","toRemove","objectsToAdd","toAdd","newItemIds","_this$consoleRef$curr","_panel$props","_panel$props2","sourceId","pandelIds","forceOpen","oldPanelId","widget","openOptions","_this$consoleRef$curr2","force","panelIdsToClose","_this$consoleRef$curr3","plugins","p","details","workerName","processInfoId","ConnectedConsolePanel","isFileType","isDirectory","FileNotFoundError","MIME_TYPE","FileUtils","fileStorage","extension","_name$match","_components$pop","_name$split$pop","originalName","extensionPosition","copyName","parts","newExtension","nameWithoutExtension","extensionString","reservedNames","invalidCharsRegex","invalidCharLabels","_name$match$reduce$ma","_name$match2","next","paths","folders","path","folder","filename","DEFAULT_ROW_HEIGHT","getPathFromItem","getMoveOperation","draggedItems","targetItem","targetPath","getItemIcon","vsFolderOpened","vsFolder","mimeType","dhPython","vsCode","FileListItem","_draggedItems$some","isDragInProgress","isDropTargetValid","dropTargetItem","_onDragStart","_onDragOver","_onDragEnd","onDragExit","_onDrop","isDragged","draggedItem","itemPath","dropTargetPath","isExactDropTarget","isInDropTarget","isInvalidDropTarget","depth","depthLines","DRAG_HOVER_TIMEOUT","ITEM_LIST_CLASS_NAME","FileList","onMove","loadedViewport","setLoadedViewport","setViewport","setDropTargetItem","setDraggedItems","dragPlaceholder","setDragPlaceholder","setSelectedRanges","itemList","fileList","getItems","getItem","getDragPlaceholderText","dropItems","_itemList$current","handleSelect","handleItemDragStart","_itemList$current2","_getDragPlaceholderTe","draggedRanges","newDragPlaceholder","dndPlaceholderContent","handleItemDragOver","handleItemDragEnd","handleItemDrop","handleItemDragExit","handleListDragOver","handleListDrop","handleSelectionChange","newSelectedRanges","selectedItems","handleFocusChange","focusedItem","handleViewportChange","focusedPath","listenerRemover","newViewport","renderWrapper","itemProps","FILE_EXPLORER","DEFAULT_VALIDATE","FileListItemEditor","validate","validationError","setValidationError","validationPromise","setValidationPromise","_input$current","stopPropagation","validateAndSubmit","validatePromise","handleBlur","newValue","handleKeyDown","FileListContainer","showContextMenu","onCreateFile","onCreateFolder","onCopy","onDelete","onRename","validateRename","renameItem","setRenameItem","setSelectedItems","setFocusedItem","newSelectedItems","newFocusedItem","handleCopyAction","handleDeleteAction","handleNewFileAction","handleNewFolderAction","handleRenameAction","handleRenameCancel","handleRenameSubmit","newName","validateRenameItem","FileExistsError","info","FileExplorer","itemsToDelete","setItemsToDelete","setTable","tablePromise","initTable","_initTable","handleError","handleCreateFile","handleCreateFolder","handleCopyFile","handleDelete","handleDeleteConfirm","handleDeleteCancel","handleMove","filesToMove","newFile","handleRename","isDir","destination","handleValidateRename","fileInfo","_x2","isDeleteConfirmationShown","deleteConfirmationMessage","NewItemModal","defaultValue","prevIsOpen","checkExisting","existingFile","prevExtension","selectionEnd","skipExtensionCheck","notifyOnExtensionChange","newItemName","directoryPath","pathAsList","basename","vsHome","isSubmitting","showExtensionChangeModal","showOverwriteModal","prevExtensionText","newExtensionText","submitBtnLabel","nameInputLabel","isOverwrite","FileExplorerToolbar","createFile","createFolder","onSearchChange","defaultSearchText","vsNewFolder","connector","isMouseEvent","FileExplorerPanel","shouldFocus","fileMetadata","oldName","isHidden","showCreateFolder","focusedFilePath","ConnectedFileExplorerPanel","LogPanel","logView","_getDashboardSessionW","ConnectedLogPanel"],"ignoreList":[],"sources":["../../../utils/dist/DataUtils.js","../../../utils/dist/CanceledPromiseError.js","../../../utils/dist/errors/ClipboardPermissionDeniedError.js","../../../utils/dist/errors/ClipboardUnavailableError.js","../../../utils/dist/errors/UnsupportedPermissionError.js","../../../utils/dist/PermissionUtils.js","../../../utils/dist/ClipboardUtils.js","../../../utils/dist/DbNameValidator.js","../../../utils/dist/EventTargetShimUtils.js","../../../utils/dist/PromiseUtils.js","../../../utils/dist/Pending.js","../../../utils/dist/ErrorUtils.js","../../../utils/dist/RangeUtils.js","../../../utils/dist/TextUtils.js","../../../utils/dist/TimeUtils.js","../../../utils/dist/ValidationError.js","../../../react-hooks/dist/useIsMountedRef.js","../../../react-hooks/dist/useAsyncInterval.js","../../../react-hooks/dist/useContextOrThrow.js","../../../react-hooks/dist/useDebouncedCallback.js","../../../react-hooks/dist/usePrevious.js","../../../react-hooks/dist/useThrottledCallback.js","../../../react-hooks/dist/useForwardedRef.js","../../../components/dist/popper/Popper.js","../../../components/dist/popper/Tooltip.js","../../../components/dist/theme/ThemeProvider.js","../../../components/dist/theme/useTheme.js","../../../components/dist/SplitButtonGroup.js","../../../components/dist/Button.js","../../../components/dist/modal/ModalFooter.js","../../../components/dist/BasicModal.js","../../../components/dist/context-actions/ContextActionUtils.js","../../../components/dist/context-actions/GlobalContextAction.js","../../../components/dist/context-actions/GlobalContextActions.js","../../../components/dist/context-actions/ContextActions.js","../../../components/dist/context-actions/ContextMenuItem.js","../../../components/dist/Checkbox.js","../../../components/dist/ComponentUtils.js","../../../components/dist/menu-actions/Menu.js","../../../components/dist/menu-actions/DropdownMenu.js","../../../components/dist/shortcuts/Shortcut.js","../../../components/dist/shortcuts/ShortcutRegistry.js","../../../components/dist/shortcuts/GlobalShortcuts.js","../../../components/dist/SearchInput.js","../../../components/dist/DebouncedSearchInput.js","../../../components/dist/ItemListItem.js","../../../components/dist/ItemList.js","../../../components/dist/ErrorBoundary.js","../../../components/dist/UISwitch.js","../../../components/dist/Select.js","../../../components/dist/XComponentMap.js","../../../components/dist/XComponent.js","../../../jsapi-bootstrap/dist/useApi.js","../../../jsapi-bootstrap/dist/useObjectFetcher.js","../../../redux/dist/selectors.js","../../../redux/dist/actionTypes.js","../../../redux/dist/actions.js","../../../redux/dist/reducers/common/replaceByIdReducer.js","../../../redux/dist/reducerRegistry.js","../../../jsapi-utils/dist/formatters/TableColumnFormatter.js","../../../jsapi-utils/dist/formatters/DateTimeColumnFormatter.js","../../../jsapi-utils/dist/formatters/DecimalColumnFormatter.js","../../../jsapi-utils/dist/formatters/IntegerColumnFormatter.js","../../../jsapi-utils/dist/NewTableColumnTypes.js","../../../plugin/dist/PluginsContext.js","../../../plugin/dist/PluginTypes.js","../../../plugin/dist/PluginUtils.js","../../../plugin/dist/usePlugins.js","../../../plugin/dist/PersistentStateContext.js","../../../chart/dist/ChartTheme.js","../../../chart/dist/plotly/LazyPlot.js","../../../chart/dist/ChartThemeProvider.js","../../../chart/dist/useChartTheme.js","../../../golden-layout/dist/config/Config.js","../../../golden-layout/dist/config/ItemConfig.js","../../../golden-layout/dist/utils/EventEmitter.js","../../../golden-layout/dist/container/ItemContainer.js","../../../golden-layout/dist/utils/utils.js","../../../golden-layout/dist/utils/DragListener.js","../../../golden-layout/dist/utils/ReactComponentHandler.js","../../../golden-layout/dist/utils/ConfigMinifier.js","../../../golden-layout/dist/utils/BubblingEvent.js","../../../golden-layout/dist/utils/EventHub.js","../../../golden-layout/dist/utils/EventUtils.js","../../../golden-layout/dist/controls/BrowserPopout.js","../../../golden-layout/dist/controls/DragProxy.js","../../../golden-layout/dist/controls/DragSource.js","../../../golden-layout/dist/controls/DragSourceFromEvent.js","../../../golden-layout/dist/controls/DropTargetIndicator.js","../../../golden-layout/dist/controls/HeaderButton.js","../../../golden-layout/dist/errors/ConfigurationError.js","../../../golden-layout/dist/items/AbstractContentItem.js","../../../golden-layout/dist/items/Component.js","../../../golden-layout/dist/items/RowOrColumn.js","../../../golden-layout/dist/items/Root.js","../../../golden-layout/dist/items/Stack.js","../../../golden-layout/dist/controls/Tab.js","../../../golden-layout/dist/controls/Header.js","../../../golden-layout/dist/controls/Splitter.js","../../../golden-layout/dist/base.js","../../../golden-layout/dist/LayoutManager.js","../../../golden-layout/dist/GoldenLayoutThemeExport.js","../../../dashboard/dist/layout/LayoutUtils.js","../../../dashboard/dist/PanelPlaceholder.js","../../../dashboard/dist/PanelEvent.js","../../../dashboard/dist/NavigationEvent.js","../../../dashboard/dist/PanelManager.js","../../../dashboard/dist/PanelErrorBoundary.js","../../../dashboard/dist/DashboardUtils.js","../../../dashboard/dist/layout/LayoutManagerContext.js","../../../dashboard/dist/layout/GLPropTypes.js","../../../dashboard/dist/layout/useListener.js","../../../dashboard/dist/redux/actionTypes.js","../../../dashboard/dist/redux/reducers/dashboardData.js","../../../dashboard/dist/redux/reducers/index.js","../../../dashboard/dist/redux/selectors.js","../../../dashboard/dist/redux/actions.js","../../../dashboard/dist/redux/index.js","../../../dashboard/dist/DashboardPanelWrapper.js","../../../dashboard/dist/usePanelId.js","../../../dashboard/dist/DashboardLayout.js","../../../dashboard/dist/useDashboardId.js","../../../dashboard/dist/useFiber.js","../../../dashboard/dist/DashboardConstants.js","../../../dashboard/dist/DashboardEvents.js","../../../dashboard/dist/PanelContextMenu.js","../../../dashboard/dist/RenameDialog.js","../../../dashboard/dist/TabEvent.js","../../../dashboard/dist/BasePanel.js","../../../dashboard/dist/useDhId.js","../../../console/dist/common/ObjectIcon.js","../../../console/dist/common/Code.js","../../../console/dist/common/ConsoleConstants.js","../../../console/dist/common/ConsoleUtils.js","../../../console/dist/console-history/ConsoleHistoryItemResult.js","../../../console/dist/console-history/ConsoleHistoryResultInProgress.js","../../../console/dist/console-history/ConsoleHistoryResultErrorMessage.js","../../../console/dist/console-history/ConsoleHistoryItem.js","../../../console/dist/console-history/ConsoleHistory.js","../../../console/dist/ConsoleShortcuts.js","../../../console/dist/log/LogLevel.js","../../../console/dist/monaco/lang/python.js","../../../console/dist/monaco/lang/groovy.js","../../../console/dist/monaco/lang/scala.js","../../../console/dist/monaco/lang/db.js","../../../console/dist/monaco/lang/log.js","../../../console/dist/monaco/RuffDefaultSettings.js","../../../console/dist/monaco/MonacoProviders.js","../../../console/dist/monaco/MonacoUtils.js","../../../console/dist/ConsoleInput.js","../../../console/dist/csv/CsvOverlay.js","../../../console/dist/csv/ZipStreamHelper.js","../../../console/dist/csv/CsvTypeParser.js","../../../console/dist/csv/CsvParser.js","../../../console/dist/csv/CsvFormats.js","../../../console/dist/csv/CsvInputBar.js","../../../console/dist/ConsoleStatusBar.js","../../../console/dist/ConsoleObjectsMenu.js","../../../console/dist/Console.js","../../../console/dist/command-history/CommandHistoryItemTooltip.js","../../../console/dist/command-history/CommandHistoryItem.js","../../../console/dist/command-history/CommandHistoryActions.js","../../../console/dist/command-history/CommandHistoryViewportUpdater.js","../../../console/dist/command-history/CommandHistory.js","../../../console/dist/log/LogLevelMenuItem.js","../../../console/dist/log/LogView.js","../../../console/dist/HeapUsage.js","../../../dashboard-core-plugins/dist/events/ConsoleEvent.js","../../../dashboard-core-plugins/dist/events/InputFilterEvent.js","../../../dashboard-core-plugins/dist/events/NotebookEvent.js","../../../dashboard-core-plugins/dist/panels/CorePanel.js","../../../dashboard-core-plugins/dist/redux/selectors.js","../../../dashboard-core-plugins/dist/panels/CommandHistoryPanel.js","../../../dashboard-core-plugins/dist/panels/ConsolePanel.js","../../../file-explorer/dist/FileStorage.js","../../../file-explorer/dist/FileNotFoundError.js","../../../file-explorer/dist/FileUtils.js","../../../file-explorer/dist/FileListUtils.js","../../../file-explorer/dist/FileListItem.js","../../../file-explorer/dist/FileList.js","../../../file-explorer/dist/FileExplorerShortcuts.js","../../../file-explorer/dist/FileListItemEditor.js","../../../file-explorer/dist/FileListContainer.js","../../../file-explorer/dist/FileExistsError.js","../../../file-explorer/dist/FileExplorer.js","../../../file-explorer/dist/NewItemModal.js","../../../file-explorer/dist/FileExplorerToolbar.js","../../../dashboard-core-plugins/dist/panels/FileExplorerPanel.js","../../../dashboard-core-plugins/dist/panels/LogPanel.js"],"sourcesContent":["export var EMPTY_ARRAY = Object.freeze([]);\nexport var EMPTY_MAP = new Map();\nexport var EMPTY_FUNCTION = () => undefined;\n/**\n * Wrap a value in an array if it is not already an array. Otherwise return the\n * value.\n * @param value The value to ensure is an array\n * @returns The value as an array\n */\nexport function ensureArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * Filters out any null or undefined values from an array.\n * @param maybeDefined\n */\nexport function removeNullAndUndefined() {\n for (var _len = arguments.length, maybeDefined = new Array(_len), _key = 0; _key < _len; _key++) {\n maybeDefined[_key] = arguments[_key];\n }\n return maybeDefined.filter(m => m != null);\n}\n//# sourceMappingURL=DataUtils.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass CanceledPromiseError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isCanceled\", true);\n }\n}\nexport default CanceledPromiseError;\n//# sourceMappingURL=CanceledPromiseError.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport class ClipboardPermissionsDeniedError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isClipboardPermissionsDeniedError\", true);\n }\n}\nexport default ClipboardPermissionsDeniedError;\n//# sourceMappingURL=ClipboardPermissionDeniedError.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport class ClipboardUnavailableError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isClipboardUnavailableError\", true);\n }\n}\nexport default ClipboardUnavailableError;\n//# sourceMappingURL=ClipboardUnavailableError.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport class UnsupportedPermissionError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isPermissionUnsupported\", true);\n }\n}\nexport default UnsupportedPermissionError;\n//# sourceMappingURL=UnsupportedPermissionError.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport UnsupportedPermissionError from \"./errors/UnsupportedPermissionError.js\";\n/**\n * Checks permission to use a particular API from: https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API#permission-aware_apis\n * @param permission The name of the permission\n * @returns Promise that resolves to PermissionState on success, or rejects if permission is unsupported by browser\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function checkPermission(_x) {\n return _checkPermission.apply(this, arguments);\n}\nfunction _checkPermission() {\n _checkPermission = _asyncToGenerator(function* (permission) {\n try {\n // Typescript doesn't recognize certain permissions as a valid PermissionName\n // https://github.com/microsoft/TypeScript/issues/33923\n var name = permission;\n return (yield navigator.permissions.query({\n name\n })).state;\n } catch (error) {\n // TypeError thrown if retrieving the PermissionDescriptor information failed in some way,\n // or the permission doesn't exist or is unsupported by the user agent.\n if (error instanceof TypeError) {\n throw new UnsupportedPermissionError();\n }\n throw error;\n }\n });\n return _checkPermission.apply(this, arguments);\n}\n//# sourceMappingURL=PermissionUtils.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport { ClipboardPermissionsDeniedError, ClipboardUnavailableError } from \"./errors/index.js\";\nimport UnsupportedPermissionError from \"./errors/UnsupportedPermissionError.js\";\nimport { checkPermission } from \"./PermissionUtils.js\";\n/**\n * Copy the passed in text to the clipboard.\n * @param text The text to copy\n * @returns Promise Resolved on success, rejected on failure\n */\nexport function copyToClipboard(_x) {\n return _copyToClipboard.apply(this, arguments);\n}\n\n/**\n * Copy the passed in text to the clipboard using the `execCommand` functionality\n * Throws on error/failure\n * @param text The text to copy\n */\nfunction _copyToClipboard() {\n _copyToClipboard = _asyncToGenerator(function* (text) {\n var {\n clipboard\n } = navigator;\n if (clipboard !== undefined) {\n try {\n return yield navigator.clipboard.writeText(text);\n } catch (_unused) {\n // Ignore error. Fallback to `copyToClipboardExecCommand` below\n // (same as when clipboard is not available).\n }\n }\n copyToClipboardExecCommand(text);\n });\n return _copyToClipboard.apply(this, arguments);\n}\nexport function copyToClipboardExecCommand(text) {\n var oldFocus = document.activeElement;\n var textArea = document.createElement('textarea');\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n var result = document.execCommand('copy');\n document.body.removeChild(textArea);\n if (oldFocus instanceof HTMLElement) {\n oldFocus.focus();\n }\n if (!result) throw new Error('Unable to execute copy command');\n}\n\n/**\n * Reads text from the clipboard.\n * @returns Promise that resolves to text from clipboard as string, or rejects if permissions are not supported/granted.\n */\nexport function readFromClipboard() {\n return _readFromClipboard.apply(this, arguments);\n}\nfunction _readFromClipboard() {\n _readFromClipboard = _asyncToGenerator(function* () {\n try {\n var {\n clipboard\n } = navigator;\n if (clipboard === undefined) throw new ClipboardUnavailableError();\n var permissionState = yield checkPermission('clipboard-read');\n if (permissionState === 'granted') {\n var text = yield clipboard.readText();\n return text;\n }\n if (permissionState === 'prompt') {\n try {\n // Need to call this to bring up a permission prompt\n yield clipboard.readText();\n } catch (_unused2) {\n // Ignore error caused by calling readText() without permissions\n }\n\n // Check status again after user has interacted with the permission prompt\n permissionState = yield checkPermission('clipboard-read');\n if (permissionState === 'granted') {\n var _text = yield clipboard.readText();\n return _text;\n }\n }\n if (permissionState === 'prompt' || permissionState === 'denied') {\n // Prompt means user closed out of the previous permission prompt, also treat it as a denial\n throw new ClipboardPermissionsDeniedError();\n }\n } catch (err) {\n if (err instanceof UnsupportedPermissionError) {\n throw new ClipboardUnavailableError();\n }\n throw err;\n }\n throw new ClipboardUnavailableError();\n });\n return _readFromClipboard.apply(this, arguments);\n}\n//# sourceMappingURL=ClipboardUtils.js.map","var _DbNameValidator;\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar TABLE_PREFIX = 'table_';\nvar COLUMN_PREFIX = 'column_';\n\n// From io.deephaven.db.tables.utils.DBNameValidator#DB_RESERVED_VARIABLE_NAMES\nvar DB_RESERVED_VARIABLE_NAMES = new Set(['in', 'not', 'i', 'ii', 'k']);\n\n// From javax.lang.model.SourceVersion#keywords\nvar JAVA_KEYWORDS = new Set(['abstract', 'continue', 'for', 'new', 'switch', 'assert', 'default', 'if', 'package', 'synchronized', 'boolean', 'do', 'goto', 'private', 'this', 'break', 'double', 'implements', 'protected', 'throw', 'byte', 'else', 'import', 'public', 'throws', 'case', 'enum', 'instanceof', 'return', 'transient', 'catch', 'extends', 'int', 'short', 'try', 'char', 'final', 'interface', 'static', 'void', 'class', 'finally', 'long', 'strictfp', 'volatile', 'const', 'float', 'native', 'super', 'while', 'null', 'true', 'false']);\n\n// The '$' character is not valid in Deephaven table and column names,\n// yet it is treated as valid in the DbNameValidator Java class.\n// TODO: Update the regexes once (or if) DH-19169 is merged.\n\n// From io.deephaven.db.tables.utils.DBNameValidator#STERILE_TABLE_AND_NAMESPACE_REGEX\nvar STERILE_TABLE_AND_NAMESPACE_REGEX = /[^a-zA-Z0-9_$\\-+@]/g;\n\n// From io.deephaven.db.tables.utils.DBNameValidator#STERILE_COLUMN_AND_QUERY_REGEX\nvar STERILE_COLUMN_AND_QUERY_REGEX = /[^A-Za-z0-9_$]/g;\n\n// From io.deephaven.db.tables.utils.DBNameValidator#TABLE_NAME_PATTERN\nvar TABLE_NAME_PATTERN = /^[a-zA-Z_$][a-zA-Z0-9_$\\-+@]*$/;\nvar STERILE_VARIABLE_NAME_REGEX = /[^a-zA-Z0-9_]/g;\nfunction columnNameReplacer(input) {\n // Replace all dashes and spaces with underscores\n return input.replace(/[ -]/g, '_');\n}\nfunction tableNameReplacer(input) {\n // Replace spaces with underscores\n return input.replace(/\\s/g, '_');\n}\n\n/**\n * Similar to DBNameValidator.java, this class has utilities for validating and legalizing\n * Table and Column names.\n */\nclass DbNameValidator {}\n_DbNameValidator = DbNameValidator;\n_defineProperty(DbNameValidator, \"legalize\", (name, replace, prefix, regex, checkReserved, i) => {\n var legalName = replace(name.trim());\n\n // Add prefix to reserved names\n if (checkReserved && (DB_RESERVED_VARIABLE_NAMES.has(legalName) || JAVA_KEYWORDS.has(legalName))) {\n legalName = prefix + legalName;\n }\n\n // Remove illegal characters\n legalName = legalName.replace(regex, '');\n\n // Check if the name ended up blank and append the prefix.\n // Note, io.deephaven.db.tables.utils.DBNameValidator throws an exception in this case.\n if (!legalName) {\n return prefix + i;\n }\n\n // If name starts with a number or a dash, append the prefix.\n // Note, io.deephaven.db.tables.utils.DBNameValidator throws an exception for names starting with a dash.\n if (/^[0-9-]/.test(legalName)) {\n legalName = prefix + legalName;\n }\n return legalName;\n});\n/**\n * Get a legal table name based on the passed in string.\n * Follows the same rules as DBNameValidator.java except that here\n * we prepend a prefix in cases where the Java class throws an exception.\n * @param name The name to legalize\n * @returns Legalized table name\n */\n_defineProperty(DbNameValidator, \"legalizeTableName\", name => _DbNameValidator.legalize(name, tableNameReplacer, TABLE_PREFIX, STERILE_TABLE_AND_NAMESPACE_REGEX, false, 0));\n/**\n * Make a valid variable name based on the passed in string.\n * @param name The name to get the variable name for\n * @returns Variable name\n */\n_defineProperty(DbNameValidator, \"makeVariableName\", name => _DbNameValidator.legalizeTableName(name).replace(STERILE_VARIABLE_NAME_REGEX, '_'));\n_defineProperty(DbNameValidator, \"legalizeColumnNames\", headers => {\n var legalHeaders = [];\n headers.forEach((header, i) => {\n var legalHeader = _DbNameValidator.legalizeColumnName(header, i);\n\n // Check if the name is already in use\n if (legalHeaders.includes(legalHeader)) {\n legalHeader = COLUMN_PREFIX + i;\n }\n legalHeaders.push(legalHeader);\n });\n return legalHeaders;\n});\n_defineProperty(DbNameValidator, \"legalizeColumnName\", function (header) {\n var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return (\n // Replace all dashes and spaces with underscores\n _DbNameValidator.legalize(header, columnNameReplacer, COLUMN_PREFIX, STERILE_COLUMN_AND_QUERY_REGEX, true, i)\n );\n});\n_defineProperty(DbNameValidator, \"isValidTableName\", name => TABLE_NAME_PATTERN.test(name));\n_defineProperty(DbNameValidator, \"isValidColumnName\", name => _DbNameValidator.legalizeColumnName(name) === name);\nexport default DbNameValidator;\n//# sourceMappingURL=DbNameValidator.js.map","/**\n * A CustomEvent extension which combines the browser CustomEvent and event-target-shim's Event types for type safety\n * CustomEvent does not have a generic type and augmenting the dom types seemed like not the best idea\n */\nexport class EventShimCustomEvent extends CustomEvent {\n // The fields declared are so TS plays nicely w/ event-target-shim and the browser CustomEvent\n // They don't actually do anything other than tell TS to not complain that they aren't set in the constructor\n // If declare is removed, then the properties are initialized to undefined which breaks this class\n // This will be the default for tsc and babel at some point\n // https://github.com/babel/babel/issues/12128#issuecomment-702119272\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(typeArg, eventInitDict) {\n super(typeArg, eventInitDict);\n }\n}\n\n/**\n * Converts an event map into one using EventShimCustomEvent's so the event type only needs to be specified once\n * Takes an event map such as EventSourceEventMap from https://github.com/mysticatea/event-target-shim/blob/HEAD/docs/reference.md#example-3\n * This lets us specify the EventMap as just { onEvent: Event } rather than { onEvent: Event<'onEvent'> }\n */\n//# sourceMappingURL=EventTargetShimUtils.js.map","import CanceledPromiseError from \"./CanceledPromiseError.js\";\nimport TimeoutError from \"./TimeoutError.js\";\nexport class PromiseUtils {\n /**\n * Creates a promise that can be canceled by calling the `cancel` function\n * Pass an optional `cleanupFunc` to perform actions on the resolved item after promise is cancelled.\n * @param promise The item to resolve\n * @param cleanup Function to cleanup the resolved item after cancelation. Called after both this promise is cancelled and the wrapped item was resolved (order does not matter).\n */\n static makeCancelable(promise, cleanup) {\n var hasCanceled = false;\n var resolved;\n var rejectFn;\n var wrappedPromise = new Promise((resolve, reject) => {\n rejectFn = reject;\n Promise.resolve(promise).then(val => {\n if (hasCanceled) {\n if (cleanup) {\n cleanup(val);\n }\n } else {\n resolved = val;\n resolve(val);\n }\n }).catch(error => reject(error));\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrappedPromise.cancel = () => {\n hasCanceled = true;\n rejectFn(new CanceledPromiseError());\n if (resolved != null && cleanup) {\n cleanup(resolved);\n }\n };\n return wrappedPromise;\n }\n static isCanceled(error) {\n return error instanceof CanceledPromiseError;\n }\n static isTimedOut(error) {\n return error instanceof TimeoutError;\n }\n\n /**\n * Wrap a callback call in a Promise + setTimeout.\n * @param timeoutMs\n * @param callback\n */\n static withTimeout(timeoutMs, callback) {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n try {\n resolve(callback());\n } catch (err) {\n reject(err);\n }\n }, timeoutMs);\n });\n }\n}\n//# sourceMappingURL=PromiseUtils.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { PromiseUtils } from \"./PromiseUtils.js\";\n/**\n * Helper class for managing pending promises.\n * DH-6167 When cancel is called, it calls cancel on ALL promises, including ones that have already resolved.\n * This behaviour may change when DH-9464 is implemented.\n */\nclass Pending {\n constructor() {\n _defineProperty(this, \"pending\", []);\n _defineProperty(this, \"resolved\", []);\n }\n /**\n * Begins tracking a promise. After the promise has resolved, it's removed from tracking.\n * @param item Item to track.\n * @param cleanup The cleanup function to use when the promise is cancelled\n * @returns CancelablePromise Returns a cancelable promise.\n */\n add(item, cleanup) {\n var promise = PromiseUtils.makeCancelable(item, cleanup);\n this.pending.push(promise);\n promise.then(() => {\n this.resolve(promise);\n }, () => {\n this.resolve(promise);\n });\n return promise;\n }\n\n /**\n * Remove a promise from tracking.\n * @param promise Promise to stop tracking\n */\n remove(promise) {\n for (var i = 0; i < this.pending.length; i += 1) {\n if (this.pending[i] === promise) {\n this.pending.splice(i, 1);\n return;\n }\n }\n }\n resolve(promise) {\n this.remove(promise);\n this.resolved.push(promise);\n }\n\n /**\n * Cancel all pending promises and remove them from tracking.\n */\n cancel() {\n var allPromises = [...this.pending, ...this.resolved];\n for (var i = 0; i < allPromises.length; i += 1) {\n allPromises[i].cancel();\n }\n this.pending = [];\n this.resolved = [];\n }\n}\nexport default Pending;\n//# sourceMappingURL=Pending.js.map","/**\n * Returns an error message from an object. Guaranteed not to be an empty string.\n * @param error Error object to get the message from.\n * @returns Error message, or undefined if there is no message.\n */\nexport function getErrorMessage(error) {\n var errorObj = error;\n if (error instanceof CustomEvent) {\n errorObj = error.detail;\n }\n var message = '';\n if (errorObj instanceof Error) {\n message = errorObj.message;\n } else if (errorObj != null) {\n message = \"\".concat(errorObj);\n }\n message = message.trim();\n if (message.length > 0) {\n return message;\n }\n return undefined;\n}\nexport default getErrorMessage;\n//# sourceMappingURL=ErrorUtils.js.map","// A number pair representing [start, end].\n\nclass RangeUtils {\n static isValidRange(range) {\n return range != null && range.length === 2 && Number.isInteger(range[0]) && Number.isInteger(range[1]) && range[0] <= range[1];\n }\n static validateRange(range) {\n if (!RangeUtils.isValidRange(range)) {\n throw new Error(\"Invalid range! \".concat(range));\n }\n }\n static isSelected(selectedRanges, index) {\n for (var i = 0; i < selectedRanges.length; i += 1) {\n var range = selectedRanges[i];\n var start = range[0];\n var end = range[1];\n if (start <= index && index <= end) {\n return true;\n }\n }\n return false;\n }\n static selectRange(selectedRanges, range) {\n var [start, end] = range;\n var ranges = [...selectedRanges];\n\n // Need to consolidate the range with previous ranges\n for (var i = ranges.length - 1; i >= 0; i -= 1) {\n var selectedRange = ranges[i];\n var selectedStart = selectedRange[0];\n var selectedEnd = selectedRange[1];\n if (selectedStart <= start && end <= selectedEnd) {\n // Already contained within a range\n return ranges;\n }\n if (start <= selectedEnd && selectedStart <= end) {\n // Overlaps the previous range, remove this range and update the new range\n start = Math.min(start, selectedStart);\n end = Math.max(end, selectedEnd);\n ranges.splice(i, 1);\n }\n }\n ranges.push([start, end]);\n return ranges;\n }\n static deselectRange(selectedRanges, range) {\n var [start, end] = range;\n var ranges = [...selectedRanges];\n // Need to consolidate the range with previous ranges\n for (var i = ranges.length - 1; i >= 0; i -= 1) {\n var selectedRange = ranges[i];\n var selectedStart = selectedRange[0];\n var selectedEnd = selectedRange[1];\n if (end < selectedStart || selectedEnd < start) {\n // Outside of the selected range\n } else if (selectedStart < start && end < selectedEnd) {\n // Contained within the range, split the range\n ranges[i] = [selectedStart, start - 1];\n ranges.splice(i + 1, 0, [end + 1, selectedEnd]);\n break;\n } else if (start <= selectedStart && selectedEnd <= end) {\n // Entire range should be deselected, remove from selected ranges\n ranges.splice(i, 1);\n } else if (selectedStart < start) {\n // Overlaps end of the previous range, update the end\n ranges[i] = [selectedStart, start - 1];\n } else {\n // Overlaps the start of the previous range, update the start\n ranges[i] = [end + 1, selectedEnd];\n }\n }\n return ranges;\n }\n\n /**\n * Count the sum total of items in the ranges provided\n *\n * @param ranges The ranges to count\n */\n static count(ranges) {\n return ranges.reduce((sum, range) => sum + (range[1] - range[0] + 1), 0);\n }\n\n /**\n * Get the items in the ranges provided\n * @param items List of items\n * @param ranges The ranges to include in the result\n * @returns The items in the provided ranges\n */\n static getItemsInRanges(items, ranges) {\n return ranges.reduce((acc, range) => {\n var result = [...acc];\n for (var i = range[0]; i <= range[1]; i += 1) {\n result.push(items[i]);\n }\n return result;\n }, []);\n }\n}\nexport default RangeUtils;\n\n/**\n * Generator that yields a range of numbers.\n * @param start Start index to generate\n * @param end End index to generate\n */\nexport function* generateRange(start, end) {\n // eslint-disable-next-line no-plusplus\n for (var i = start; i <= end; ++i) {\n yield i;\n }\n}\n//# sourceMappingURL=RangeUtils.js.map","export var NON_BREAKING_SPACE = '\\xa0';\nexport class TextUtils {\n /**\n * Joins a list of strings with a comma, keeping the oxford comma and adding \"and\" as appropriate.\n * Eg.\n * One\n * One and Two\n * One, Two, and Three\n * @param items The items to join in a list\n * @param conjunction Conjunction to use between the last two items\n */\n static join(items) {\n var conjunction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'and';\n if (items == null || items.length === 0) {\n return '';\n }\n if (items.length === 1) {\n return items[0];\n }\n if (items.length === 2) {\n return \"\".concat(items[0], \" \").concat(conjunction, \" \").concat(items[1]);\n }\n var itemText = items.slice(0, items.length - 1).join(', ');\n var lastItem = items[items.length - 1];\n return \"\".concat(itemText, \", \").concat(conjunction, \" \").concat(lastItem);\n }\n\n /**\n * Converts text to lower case, handling null if necessary and returning an empty string\n * @param text The text to convert to lower case\n * @param isNullAllowed True if a null string should return an empty string from this function. If false an error is thrown if null is passed in.\n */\n static toLower(text) {\n var isNullAllowed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (text == null) {\n if (isNullAllowed) {\n return '';\n }\n throw new Error('Null string passed in to TextUtils.toLower');\n }\n return text.toLowerCase();\n }\n\n /**\n *\n * @param a The string to sort\n * @param b Second string to sort\n * @param isAscending Whether to sort ascending or descending\n */\n static sort(a, b) {\n var isAscending = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (a < b) {\n return isAscending ? -1 : 1;\n }\n if (a > b) {\n return isAscending ? 1 : -1;\n }\n return 0;\n }\n\n /**\n * Pluralize a string based on a value\n * @param value The value to use for pluralization\n * @param singular The singular form of the string\n * @param pluralized The pluralized form of the string. If not provided, will append 's' to the singular form.\n * @returns The pluralized string\n */\n static pluralize(value, singular, pluralized) {\n if (value === 1) {\n return singular;\n }\n return pluralized !== null && pluralized !== void 0 ? pluralized : \"\".concat(singular, \"s\");\n }\n}\nexport default TextUtils;\n//# sourceMappingURL=TextUtils.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass TimeUtils {\n /**\n * Pretty prints a time in seconds as a format like \"1h 3m 23s\", \"32s\"\n * Seconds are padded after 60s, has elapsed to reduce width changes\n * Minutes aren't paded, as thats a slower change\n * @param time in seconds\n */\n static formatElapsedTime(time) {\n if (typeof time !== 'number' || !Number.isInteger(time)) {\n throw new Error(\"\".concat(time, \" is not a number that can be expressed as a formatted time\"));\n }\n var hours = Math.floor(time / 3600);\n var mins = Math.floor(time % 3600 / 60);\n var seconds = time % 60;\n return \"\".concat(hours > 0 ? \"\".concat(hours, \"h \") : '') + \"\".concat(mins > 0 || hours > 0 ? \"\".concat(mins, \"m \") : '') + \"\".concat(time >= 60 ? \"\".concat(seconds, \"s\").padStart(3, '0') : \"\".concat(seconds, \"s\"));\n }\n\n /**\n * Format the time into hh:mm:ss format, eg. '12:34:56'\n * @param timeInSeconds in seconds\n */\n static formatTime(timeInSeconds) {\n if (typeof timeInSeconds !== 'number' || !Number.isInteger(timeInSeconds) || timeInSeconds < 0) {\n throw new Error(\"\".concat(timeInSeconds, \" is not a number that can be expressed as a formatted time\"));\n }\n var hours = String(Math.floor(timeInSeconds / (60 * 60))).padStart(2, '0');\n var divisorForMinutes = timeInSeconds % (60 * 60);\n var minutes = String(Math.floor(divisorForMinutes / 60)).padStart(2, '0');\n var divisorForSeconds = divisorForMinutes % 60;\n var seconds = String(Math.ceil(divisorForSeconds)).padStart(2, '0');\n return \"\".concat(hours, \":\").concat(minutes, \":\").concat(seconds);\n }\n static isTimeString(s) {\n return new RegExp(TimeUtils.TIME_PATTERN).test(s);\n }\n\n /**\n * Parse time in seconds from the provided time string\n * @param timeString Time string in hh:mm:ss format\n */\n static parseTime(timeString) {\n if (timeString == null || typeof timeString !== 'string') {\n throw new Error(\"\".concat(timeString, \" is not a valid string\"));\n }\n var components = timeString.split(':');\n if (components.length !== 3) {\n throw new Error(\"\".concat(timeString, \" is not a time string that can be parsed\"));\n }\n return Number(components[0]) * 60 * 60 + Number(components[1]) * 60 + Number(components[2]);\n }\n}\n_defineProperty(TimeUtils, \"TIME_PATTERN\", '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]');\n_defineProperty(TimeUtils, \"TIME_ZONES\", Object.freeze([{\n label: 'Tokyo UTC+9 No DST',\n value: 'Asia/Tokyo'\n}, {\n label: 'Seoul UTC+9 No DST',\n value: 'Asia/Seoul'\n}, {\n label: 'Hong Kong UTC+8 No DST',\n value: 'Asia/Hong_Kong'\n}, {\n label: 'Singapore UTC+8 No DST',\n value: 'Asia/Singapore'\n}, {\n label: 'Kolkata UTC+5:30 No DST',\n value: 'Asia/Kolkata'\n}, {\n label: 'Berlin UTC+1',\n value: 'Europe/Berlin'\n}, {\n label: 'UTC UTC±0 No DST',\n value: 'UTC'\n}, {\n label: 'London UTC±0',\n value: 'Europe/London'\n}, {\n label: 'Sao Paulo UTC-2',\n value: 'America/Sao_Paulo'\n}, {\n label: 'Newfoundland UTC-3:30',\n value: 'America/St_Johns'\n}, {\n label: 'Halifax UTC-4',\n value: 'America/Halifax'\n}, {\n label: 'New York UTC−5',\n value: 'America/New_York'\n}, {\n label: 'Chicago UTC-6',\n value: 'America/Chicago'\n}, {\n label: 'Denver UTC-7',\n value: 'America/Denver'\n}, {\n label: 'Los Angeles UTC-8',\n value: 'America/Los_Angeles'\n}, {\n label: 'Anchorage UTC-9',\n value: 'America/Anchorage'\n}, {\n label: 'Honolulu UTC-10 No DST',\n value: 'Pacific/Honolulu'\n}, {\n label: 'Zurich UTC+1',\n value: 'Europe/Zurich'\n}, {\n label: 'Amsterdam UTC+1',\n value: 'Europe/Amsterdam'\n}, {\n label: 'Taipei UTC+8 No DST',\n value: 'Asia/Taipei'\n}, {\n label: 'Sydney UTC+10',\n value: 'Australia/Sydney'\n}]));\nexport default TimeUtils;\n//# sourceMappingURL=TimeUtils.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass ValidationError extends Error {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"isInvalid\", true);\n }\n}\nexport default ValidationError;\n//# sourceMappingURL=ValidationError.js.map","import { useEffect, useRef } from 'react';\n\n/**\n * Returns a ref which tracks whether the component is mounted or not.\n */\nexport function useIsMountedRef() {\n var isMountedRef = useRef(false);\n useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef;\n}\nexport default useIsMountedRef;\n//# sourceMappingURL=useIsMountedRef.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport { useCallback, useEffect, useRef } from 'react';\nimport Log from '@deephaven/log';\nimport { useIsMountedRef } from \"./useIsMountedRef.js\";\nvar log = Log.module('useAsyncInterval');\n\n/**\n * Calls the given async callback at a target interval.\n *\n * If the callback takes less time than the target interval, the target interval\n * for the next tick will be adjusted to target the remaining time in the current\n * interval.\n *\n * e.g. If the target interval is 1000ms, and the callback takes 50ms to resolve,\n * the next tick will be scheduled for 950ms from now via `setTimeout(callback, 950)`.\n *\n * If the callback takes longer than the target interval, the next tick will be\n * scheduled immediately via `setTimeout(callback, 0)`. In such cases, the time\n * between ticks may be > than the target interval, but this guarantees that\n * a callback won't be scheduled until after the previous one has resolved.\n * @param callback Callback to call at the target interval\n * @param targetIntervalMs Target interval in milliseconds to call the callback\n */\nexport function useAsyncInterval(callback, targetIntervalMs) {\n var isMountedRef = useIsMountedRef();\n var setTimeoutRef = useRef(0);\n var trackingCountRef = useRef(0);\n var trackingStartedRef = useRef(null);\n var tick = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {\n var now = Date.now();\n trackingCountRef.current += 1;\n\n // If this is our first tick, treat it as if we've already waited the full\n // interval, otherwise calculate the elapsed time since the last tick\n var elapsedSinceLastTick = trackingStartedRef.current == null ? targetIntervalMs : now - trackingStartedRef.current;\n trackingStartedRef.current = now;\n try {\n yield callback();\n } catch (err) {\n log.error('A tick error occurred:', err);\n }\n if (!isMountedRef.current) {\n return;\n }\n elapsedSinceLastTick += Date.now() - trackingStartedRef.current;\n\n // Calculate any elapsed time beyond the target interval.\n var overage = Math.max(0, elapsedSinceLastTick - targetIntervalMs);\n var nextTickInterval = Math.max(0, targetIntervalMs - overage);\n setTimeoutRef.current = window.setTimeout(tick, nextTickInterval);\n }), [callback, isMountedRef, targetIntervalMs]);\n useEffect(() => {\n trackingStartedRef.current = null;\n tick();\n return () => {\n window.clearTimeout(setTimeoutRef.current);\n };\n }, [targetIntervalMs, tick]);\n}\nexport default useAsyncInterval;\n//# sourceMappingURL=useAsyncInterval.js.map","import { useContext } from 'react';\n\n/**\n * Fetch a given context or throw an error if it is null or undefined.\n * @param context Context to use.\n * @param message Message to throw if context is null or undefined.\n * @returns Context, or throws\n */\nexport function useContextOrThrow(context) {\n var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'No value available in context. Was code wrapped in a provider?';\n var value = useContext(context);\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport default useContextOrThrow;\n//# sourceMappingURL=useContextOrThrow.js.map","import { useEffect, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\n\n/**\n * Wraps a given callback in a cancelable, debounced function. The debounced\n * callback is automatically cancelled if the callback reference changes or the\n * component unmounts.\n * @param callback callback function to debounce\n * @param debounceMs debounce milliseconds\n * @param options debounce options such as leading or trailing behavior\n * @returns a cancelable, debounced function\n */\nexport function useDebouncedCallback(callback, debounceMs) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var {\n leading = false,\n trailing = true,\n maxWait\n } = options;\n var debouncedCallback = useMemo(() => debounce(callback, debounceMs, maxWait != null ?\n // lodash checks `'maxWait' in options`\n // and lower clamps to the debounce if it exists at all\n {\n leading,\n trailing,\n maxWait\n } : {\n leading,\n trailing\n }), [callback, debounceMs, leading, trailing, maxWait]);\n useEffect(() => () => debouncedCallback.cancel(), [debouncedCallback]);\n return debouncedCallback;\n}\nexport default useDebouncedCallback;\n//# sourceMappingURL=useDebouncedCallback.js.map","import { useEffect, useRef } from 'react';\n\n// From https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nexport default function usePrevious(value) {\n var ref = useRef();\n useEffect(function getPrev() {\n ref.current = value;\n });\n return ref.current;\n}\n//# sourceMappingURL=usePrevious.js.map","import { useEffect, useMemo, useRef } from 'react';\nimport throttle from 'lodash.throttle';\n\n/**\n * Wraps a given callback in a cancelable, throttled function. The throttled\n * callback is stable and will never change. It will be automatically cancelled\n * on unmount, unless the `flushOnUnmount` option is passed in, then it will be flushed on unmount.\n * At the time the throttled function is called, it will call the latest callback that has been passed in.\n * @param callback callback function to call with throttling\n * @param throttleMs throttle milliseconds\n * @param initialOptions lodash throttle options. Will not react to changes to this param\n * @returns a cancelable, throttled function\n */\nexport function useThrottledCallback(callback, throttleMs, initialOptions) {\n var options = useRef(initialOptions);\n\n // Use a ref for the callback\n // We want to keep a stable callback so the flush/cancel works as expected\n // So we keep a ref to the current callback, then we have a throttled callback that will just call this\n var callbackRef = useRef(callback);\n callbackRef.current = callback;\n var throttledCallback = useMemo(() => throttle(function () {\n return callbackRef.current(...arguments);\n }, throttleMs, options.current), [throttleMs]);\n useEffect(() => () => {\n var _options$current$flus, _options$current;\n if ((_options$current$flus = (_options$current = options.current) === null || _options$current === void 0 ? void 0 : _options$current.flushOnUnmount) !== null && _options$current$flus !== void 0 ? _options$current$flus : false) {\n throttledCallback.flush();\n } else {\n throttledCallback.cancel();\n }\n }, [throttledCallback]);\n return throttledCallback;\n}\nexport default useThrottledCallback;\n//# sourceMappingURL=useThrottledCallback.js.map","import { useEffect, useRef } from 'react';\n\n/**\n * Takes a ref from forwardRef and makes it safe to use.\n * Sometimes the ref may be undefined, but we want to use the ref internally for something like input focus\n *\n * @param ref The forwarded ref to use\n * @returns A React ref that is safe to use inside forwardRef\n */\nexport default function useForwardedRef(ref) {\n var innerRef = useRef(null);\n useEffect(function getSafeRef() {\n if (!ref) return;\n if (typeof ref === 'function') {\n ref(innerRef.current);\n } else {\n // eslint-disable-next-line no-param-reassign\n ref.current = innerRef.current;\n }\n });\n return innerRef;\n}\n//# sourceMappingURL=useForwardedRef.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs from 'popper.js';\nimport ThemeExport from \"../ThemeExport.js\";\nimport \"./Popper.css\";\nimport { SpectrumThemeProvider } from \"../theme/SpectrumThemeProvider.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar POPPER_CLASS_NAME = 'popper';\nclass Popper extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"element\", void 0);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"nodeRef\", /*#__PURE__*/React.createRef());\n // This is the request animation frame handle number\n _defineProperty(this, \"rAF\", void 0);\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = /*#__PURE__*/React.createRef();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n var {\n isShown\n } = this.props;\n this.state = {\n show: isShown,\n popper: null\n };\n }\n componentDidUpdate(prevProps) {\n var {\n isShown\n } = this.props;\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n componentWillUnmount() {\n this.destroyPopper(false);\n }\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element) {\n if (element == null || element.clientHeight > 0 || element.clientWidth > 0) {\n return element;\n }\n return this.getVisibleElement(element.parentElement);\n }\n initPopper() {\n var {\n popper: statePopper\n } = this.state;\n var {\n closeOnBlur,\n referenceObject\n } = this.props;\n if (statePopper) {\n return;\n }\n if (this.container.current === null) {\n return;\n }\n var {\n options\n } = this.props;\n options = _objectSpread({\n placement: 'auto',\n modifiers: {\n preventOverflow: {\n boundariesElement: 'viewport'\n }\n }\n }, options);\n document.body.appendChild(this.element);\n var parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n var popper = new PopperJs(referenceObject || parent, this.element, options);\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n var popperEl = this.element.querySelector(\".\".concat(POPPER_CLASS_NAME));\n if (popperEl instanceof HTMLElement && !popperEl.contains(document.activeElement)) {\n popperEl.focus();\n }\n }\n });\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({\n popper\n });\n });\n }\n destroyPopper() {\n var updateState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n cancelAnimationFrame(this.rAF);\n var {\n popper\n } = this.state;\n if (!popper) {\n return;\n }\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n if (updateState) {\n this.setState({\n popper: null\n });\n }\n }\n show() {\n this.initPopper();\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({\n show: true\n });\n });\n }\n hide() {\n this.setState({\n show: false\n });\n }\n scheduleUpdate() {\n var {\n popper\n } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n handleBlur(e) {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n handleEnter() {\n var {\n onEntered\n } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n handleExit() {\n var {\n onExited\n } = this.props;\n var {\n show\n } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n renderContent() {\n var {\n className,\n children,\n timeout,\n interactive,\n closeOnBlur\n } = this.props;\n var {\n show\n } = this.state;\n return /*#__PURE__*/_jsx(SpectrumThemeProvider, {\n isPortal: true,\n children: /*#__PURE__*/_jsx(CSSTransition, {\n in: show,\n timeout: timeout,\n classNames: \"popper-transition\",\n onEntered: this.handleEnter,\n onExited: this.handleExit,\n nodeRef: this.nodeRef,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: this.nodeRef,\n onClick: e => {\n // stop click events from escaping popper\n e.stopPropagation();\n },\n onKeyDown: e => {\n if (e.key === 'Escape') this.hide();\n },\n className: classNames(POPPER_CLASS_NAME, {\n interactive\n }, className),\n onBlur: closeOnBlur ? this.handleBlur : undefined,\n tabIndex: closeOnBlur ? -1 : undefined,\n role: \"presentation\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"popper-content\",\n children: [children, /*#__PURE__*/_jsx(\"div\", {\n className: \"popper-arrow\",\n \"x-arrow\": \"\"\n })]\n })\n })\n })\n });\n }\n render() {\n var {\n popper\n } = this.state;\n var {\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"popper-parent-container\",\n ref: this.container,\n style: {\n display: 'none'\n },\n \"data-testid\": dataTestId,\n children: popper && /*#__PURE__*/ReactDOM.createPortal(this.renderContent(), this.element)\n });\n }\n}\n_defineProperty(Popper, \"defaultProps\", {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered() {\n // no-op\n },\n onExited() {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined\n});\nexport default Popper;\n//# sourceMappingURL=Popper.js.map","var _Tooltip;\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport Popper from \"./Popper.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('Tooltip');\n/**\n * Component that can be added to an element to automatically display a tooltip.\n * Content is mounted lazily, so don't worry about complex tooltips!\n *\n * Usage:\n * <div className=\"parent-container\">\n * Hover this container to see a tooltip\n * <Tooltip>\n * <div>My tooltip content goes here!</div>\n * </Tooltip>\n * </div>\n */\nclass Tooltip extends Component {\n static handleHidden() {\n Tooltip.shownTooltipCount -= 1;\n if (Tooltip.shownTooltipCount === 0) {\n Tooltip.lastHiddenTime = Date.now();\n }\n }\n static handleShown() {\n Tooltip.shownTooltipCount += 1;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"popper\", void 0);\n _defineProperty(this, \"parent\", void 0);\n // This is platform dependent of Node/DOM\n // Jest requires Node types\n _defineProperty(this, \"timer\", void 0);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleWindowMouseMove = this.handleWindowMouseMove.bind(this);\n this.handleWheel = this.handleWheel.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.stopShowingTooltip = this.stopShowingTooltip.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.popper = /*#__PURE__*/React.createRef();\n this.parent = null;\n this.timer = null;\n this.state = {\n isShown: false\n };\n }\n componentDidMount() {\n this.startListening();\n var {\n timeout\n } = this.props;\n if (timeout === 0) {\n this.show();\n }\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n isShown: oldIsShown\n } = prevState;\n var {\n isShown\n } = this.state;\n if (isShown !== oldIsShown) {\n if (isShown) {\n Tooltip.handleShown();\n } else {\n Tooltip.handleHidden();\n }\n }\n }\n componentWillUnmount() {\n this.stopListening();\n this.stopListeningWindow();\n this.stopTimer();\n var {\n isShown\n } = this.state;\n if (isShown) {\n Tooltip.handleHidden();\n }\n }\n startListening() {\n if (!this.container.current || !this.container.current.parentElement) {\n log.error(\"Tooltip doesn't have a container or a parent set!\");\n return;\n }\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('mousemove', this.handleMouseMove);\n this.parent.addEventListener('mouseleave', this.handleMouseLeave);\n this.parent.addEventListener('mousedown', this.stopShowingTooltip);\n }\n stopListening() {\n if (!this.parent) {\n return;\n }\n this.parent.removeEventListener('mousemove', this.handleMouseMove);\n this.parent.removeEventListener('mouseleave', this.handleMouseLeave);\n this.parent.removeEventListener('mousedown', this.stopShowingTooltip);\n }\n startListeningWindow() {\n window.addEventListener('mousemove', this.handleWindowMouseMove, true);\n window.addEventListener('contextmenu', this.stopShowingTooltip, true);\n window.addEventListener('wheel', this.handleWheel);\n }\n stopListeningWindow() {\n window.removeEventListener('mousemove', this.handleWindowMouseMove, true);\n window.removeEventListener('contextmenu', this.stopShowingTooltip, true);\n window.removeEventListener('wheel', this.handleWheel);\n }\n handleMouseMove() {\n this.startTimer();\n }\n handleWheel() {\n var {\n isShown\n } = this.state;\n if (this.popper.current && this.parent && isShown) {\n if (!this.popper.current.element.matches(':hover') && !this.parent.matches(':hover')) {\n this.stopTimer();\n this.hide();\n }\n }\n }\n handleMouseLeave() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n var {\n interactive\n } = this.props;\n if (!interactive && isShown) {\n this.hide();\n }\n }\n handleTimeout() {\n this.show();\n }\n handleWindowMouseMove(event) {\n var mouseX = event.clientX;\n var mouseY = event.clientY;\n var {\n isShown\n } = this.state;\n if (!this.popper.current || !this.parent) {\n return;\n }\n var popperRect = this.popper.current.element.getBoundingClientRect();\n var parentRect = this.parent.getBoundingClientRect();\n if (mouseX >= popperRect.left && mouseX <= popperRect.left + popperRect.width && mouseY >= popperRect.top && mouseY <= popperRect.top + popperRect.height) {\n this.handleMouseMove();\n } else if (mouseX >= parentRect.left && mouseX <= parentRect.left + parentRect.width && mouseY >= parentRect.top && mouseY <= parentRect.top + parentRect.height) {\n this.handleMouseMove();\n } else if (isShown) {\n this.stopTimer();\n this.hide();\n }\n }\n startTimer() {\n this.stopTimer();\n var {\n timeout,\n reshowTimeout\n } = this.props;\n var timerTimeout = timeout;\n if (Tooltip.shownTooltipCount > 0 || Date.now() - Tooltip.lastHiddenTime < Tooltip.triggerReshowThreshold) {\n timerTimeout = reshowTimeout;\n }\n this.timer = window.setTimeout(this.handleTimeout, timerTimeout);\n }\n stopTimer() {\n if (this.timer != null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n show() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n if (!isShown) {\n var _this$popper$current;\n (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 || _this$popper$current.show();\n // This is needed for the positioning to work consistently.\n // Without this, the tooltip sometimes overflows the screen\n // or ends up in a different position when hovered a second time.\n flushSync(() => {\n this.setState({\n isShown: true\n });\n });\n var {\n interactive\n } = this.props;\n if (interactive) {\n this.startListeningWindow();\n }\n }\n }\n hide() {\n var _this$popper$current2;\n (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 || _this$popper$current2.hide();\n this.stopListeningWindow();\n }\n update() {\n var _this$popper$current3;\n (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 || _this$popper$current3.scheduleUpdate();\n }\n handleExited() {\n this.setState({\n isShown: false\n });\n var {\n onExited\n } = this.props;\n onExited();\n }\n stopShowingTooltip() {\n var {\n isShown\n } = this.state;\n this.stopTimer();\n if (isShown) {\n this.hide();\n }\n }\n render() {\n var {\n interactive,\n children,\n referenceObject,\n popperClassName,\n 'data-testid': dataTestId,\n onEntered\n } = this.props;\n var {\n isShown\n } = this.state;\n var {\n options\n } = this.props;\n options = _objectSpread({\n placement: 'bottom'\n }, options);\n return /*#__PURE__*/_jsx(\"div\", {\n ref: this.container,\n style: {\n display: 'none'\n },\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(Popper, {\n className: classNames(popperClassName, 'popper-tooltip'),\n options: options,\n ref: this.popper,\n onEntered: onEntered,\n onExited: this.handleExited,\n interactive: interactive,\n referenceObject: referenceObject,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"tooltip-content\",\n children: [\" \", isShown && children]\n })\n })\n });\n }\n}\n_Tooltip = Tooltip;\n_defineProperty(Tooltip, \"defaultTimeout\", 500);\n_defineProperty(Tooltip, \"defaultReshowTimeout\", 100);\n_defineProperty(Tooltip, \"triggerReshowThreshold\", 300);\n_defineProperty(Tooltip, \"shownTooltipCount\", 0);\n_defineProperty(Tooltip, \"lastHiddenTime\", Date.now());\n_defineProperty(Tooltip, \"defaultProps\", {\n interactive: false,\n options: {},\n popperClassName: '',\n reshowTimeout: _Tooltip.defaultReshowTimeout,\n timeout: _Tooltip.defaultTimeout,\n onEntered: () => undefined,\n onExited: () => undefined,\n 'data-testid': undefined\n});\nexport default Tooltip;\n//# sourceMappingURL=Tooltip.js.map","import { createContext, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { DEFAULT_PRELOAD_DATA_VARIABLES } from \"./ThemeModel.js\";\nimport { calculatePreloadStyleContent, getActiveThemes, getDefaultBaseThemes, setThemePreloadData, overrideSVGFillColors, getDefaultSelectedThemeKey } from \"./ThemeUtils.js\";\nimport { SpectrumThemeProvider } from \"./SpectrumThemeProvider.js\";\nimport \"./theme-svg.css\";\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ThemeProvider');\nexport var ThemeContext = /*#__PURE__*/createContext(null);\nThemeContext.displayName = 'ThemeContext';\nexport function ThemeProvider(_ref) {\n var {\n themes: customThemes,\n waitForActivation = false,\n defaultPreloadValues = DEFAULT_PRELOAD_DATA_VARIABLES,\n children\n } = _ref;\n var baseThemes = useMemo(() => getDefaultBaseThemes(), []);\n var [value, setValue] = useState(null);\n var [selectedThemeKey, setSelectedThemeKey] = useState(getDefaultSelectedThemeKey);\n\n // Calculate active themes once a non-null themes array is provided.\n var activeThemes = useMemo(() => customThemes == null ? null : getActiveThemes(selectedThemeKey, {\n base: baseThemes,\n custom: customThemes !== null && customThemes !== void 0 ? customThemes : []\n }), [baseThemes, selectedThemeKey, customThemes]);\n var themes = useMemo(() => [...baseThemes, ...(customThemes !== null && customThemes !== void 0 ? customThemes : [])], [baseThemes, customThemes]);\n useEffect(function updateThemePreloadData() {\n // Don't update preload data until themes have been loaded and activated\n if (activeThemes == null || customThemes == null) {\n return;\n }\n\n // Override fill color for certain inline SVGs (the originals are provided\n // by theme-svg.scss)\n overrideSVGFillColors(defaultPreloadValues);\n var preloadStyleContent = calculatePreloadStyleContent(defaultPreloadValues);\n log.debug2('updateThemePreloadData:', {\n active: activeThemes.map(theme => theme.themeKey),\n custom: customThemes.map(theme => theme.themeKey),\n preloadStyleContent,\n selectedThemeKey\n });\n setThemePreloadData({\n themeKey: selectedThemeKey,\n preloadStyleContent\n });\n }, [activeThemes, selectedThemeKey, customThemes, defaultPreloadValues]);\n useEffect(() => {\n setValue({\n activeThemes,\n selectedThemeKey,\n themes,\n setSelectedThemeKey\n });\n }, [activeThemes, selectedThemeKey, themes]);\n if (waitForActivation && activeThemes == null) {\n return null;\n }\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [activeThemes == null ? null : /*#__PURE__*/_jsx(_Fragment, {\n children: activeThemes.map(theme => /*#__PURE__*/_jsx(\"style\", {\n \"data-theme-key\": theme.themeKey,\n children: theme.styleContent\n }, theme.themeKey))\n }), value == null ? null : /*#__PURE__*/_jsx(ThemeContext.Provider, {\n value: value,\n children: /*#__PURE__*/_jsx(SpectrumThemeProvider, {\n children: children\n })\n })]\n });\n}\nexport default ThemeProvider;\n//# sourceMappingURL=ThemeProvider.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ThemeContext } from \"./ThemeProvider.js\";\n/**\n * Hook to get the current `ThemeContextValue`.\n */\nexport function useTheme() {\n return useContextOrThrow(ThemeContext, 'No ThemeContext value found. Component must be wrapped in a ThemeContext.Provider');\n}\nexport default useTheme;\n//# sourceMappingURL=useTheme.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function SplitButtonGroup(props) {\n var {\n children,\n className,\n style,\n 'data-testid': dataTestId\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('btn-group', className),\n style: style,\n role: \"group\",\n \"data-testid\": dataTestId,\n children: children\n });\n}\nexport default SplitButtonGroup;\n//# sourceMappingURL=SplitButtonGroup.js.map","var _excluded = [\"kind\", \"variant\", \"type\", \"tooltip\", \"icon\", \"disabled\", \"active\", \"onClick\", \"onContextMenu\", \"onMouseDown\", \"onMouseUp\", \"onMouseEnter\", \"onMouseLeave\", \"onKeyDown\", \"className\", \"style\", \"children\", \"tabIndex\", \"data-testid\", \"aria-label\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport React from 'react';\nimport { useSlotProps } from '@react-spectrum/utils';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } from \"./popper/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar BUTTON_KINDS = ['primary', 'secondary', 'tertiary', 'success', 'danger', 'inline', 'ghost'];\nvar VARIANT_KINDS = ['group-end'];\nfunction getClassName(kind, iconOnly) {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly\n });\n }\n}\nfunction getVariantClasses(kind) {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\nexport var Button = /*#__PURE__*/React.forwardRef((props, ref) => {\n var {\n kind,\n variant,\n type = 'button',\n tooltip,\n icon,\n disabled = false,\n active,\n onClick,\n onContextMenu,\n onMouseDown,\n onMouseUp,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n className,\n style,\n children,\n tabIndex,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n\n // Spectrum container components such as `ButtonGroup` provide\n // UNSAFE_className prop for the `button` slot via a SlotProvider (\n // https://github.com/adobe/react-spectrum/blob/%40adobe/react-spectrum%403.33.1/packages/%40react-spectrum/buttongroup/src/ButtonGroup.tsx#L104-L107)\n // This can be retrieved via `useSlotProps` to allow our buttons to be styled\n // correctly inside the container.\n var {\n UNSAFE_className\n } = useSlotProps({}, 'button');\n var variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n var iconElem;\n if (icon) {\n iconElem = /*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n }\n\n // not entirely accurate, as button can have non-visible children\n var iconOnly = iconElem != null && children == null;\n var btnClassName = getClassName(kind, iconOnly);\n var tooltipElem;\n if (tooltip !== undefined) {\n tooltipElem = typeof tooltip === 'string' ? /*#__PURE__*/_jsx(Tooltip, {\n children: tooltip\n }) : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n var ariaLabelString = ariaLabel;\n if (ariaLabel === undefined && iconOnly && tooltip != null && typeof tooltip === 'string') {\n ariaLabelString = tooltip;\n }\n var button = /*#__PURE__*/_jsxs(\"button\", _objectSpread(_objectSpread({\n \"data-testid\": dataTestId,\n ref: ref\n // eslint-disable-next-line react/button-has-type\n ,\n type: type,\n className: classNames('btn', btnClassName, variantClassName, {\n active\n }, className, UNSAFE_className),\n onClick: onClick,\n onContextMenu: onContextMenu,\n onMouseUp: onMouseUp,\n onMouseDown: onMouseDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onKeyDown: onKeyDown,\n style: style,\n disabled: disabled,\n tabIndex: tabIndex,\n \"aria-label\": ariaLabelString\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, rest), {}, {\n children: [icon && iconElem, children, tooltip != null && !disabled && tooltipElem]\n }));\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled && tooltip != null ? /*#__PURE__*/_jsxs(\"span\", {\n className: \"btn-disabled-wrapper\",\n children: [button, tooltipElem]\n }) : button;\n});\nButton.displayName = 'Button';\nexport default Button;\n//# sourceMappingURL=Button.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction ModalFooter(_ref) {\n var {\n className,\n children,\n 'data-testid': dataTestId\n } = _ref;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('modal-footer', className),\n \"data-testid\": dataTestId,\n children: children\n });\n}\nexport default ModalFooter;\n//# sourceMappingURL=ModalFooter.js.map","import React, { useRef, useCallback } from 'react';\nimport { SplitButtonGroup } from \"./SplitButtonGroup.js\";\nimport Button from \"./Button.js\";\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from \"./modal/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A basic modal dialog with two buttons: cancel / confirm.\n *\n * @param isOpen indicates if the modal dialog is open\n * @param headerText text displayed in the modal header\n * @param bodyText text displayed in the modal body\n * @param onCancel callback for the cancel button; if not provided, button not shown\n * @param onConfirm callback for the confirm button\n * @param onDiscard callback for the discard button; if not provided, button not shown\n * @param cancelButtonText optional text for the cancel button, defaults to 'Cancel'\n * @param confirmButtonText optional text for the confirm button, defaults to 'Okay'\n * @param discardButtonText optional text for the discard button, defaults to 'Discard'\n */\nfunction BasicModal(props) {\n var {\n isOpen,\n headerText,\n bodyText,\n onCancel,\n onConfirm,\n onDiscard,\n onModalDisable,\n cancelButtonText = 'Cancel',\n confirmButtonText = 'Okay',\n discardButtonText = 'Discard',\n isConfirmDanger = false,\n children,\n 'data-testid': dataTestId\n } = props;\n var confirmButton = useRef(null);\n var disableModalCheckbox = useRef(null);\n var onConfirmClicked = useCallback(() => {\n if (disableModalCheckbox.current !== null && disableModalCheckbox.current.checked && onModalDisable) {\n onModalDisable();\n }\n onConfirm();\n }, [onConfirm, onModalDisable]);\n var onOpened = useCallback(() => {\n var _confirmButton$curren;\n (_confirmButton$curren = confirmButton.current) === null || _confirmButton$curren === void 0 || _confirmButton$curren.focus();\n }, []);\n var modalBody = '';\n if (isOpen) {\n modalBody = typeof bodyText === 'function' ? bodyText() : bodyText;\n }\n return /*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n onOpened: onOpened,\n children: [/*#__PURE__*/_jsx(ModalHeader, {\n closeButton: false,\n children: headerText\n }), /*#__PURE__*/_jsx(ModalBody, {\n children: modalBody\n }), /*#__PURE__*/_jsxs(ModalFooter, {\n children: [onModalDisable && /*#__PURE__*/_jsxs(\"div\", {\n className: \"custom-control custom-checkbox form-group mr-auto\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"checkbox\",\n className: \"custom-control-input\",\n id: \"move-confirmation-checkbox\",\n defaultChecked: false,\n ref: disableModalCheckbox,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-checkbox-confirm\") : undefined\n }), /*#__PURE__*/_jsx(\"label\", {\n className: \"custom-control-label\",\n htmlFor: \"move-confirmation-checkbox\",\n children: \"Don't ask me again\"\n })]\n }), onDiscard && /*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n className: \"mr-auto\",\n \"data-dismiss\": \"modal\",\n onClick: onDiscard,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-discard\") : undefined,\n children: discardButtonText\n }), onCancel && /*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n \"data-dismiss\": \"modal\",\n onClick: onCancel,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-cancel\") : undefined,\n children: cancelButtonText\n }), /*#__PURE__*/_jsxs(SplitButtonGroup, {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: isConfirmDanger ? 'danger' : 'primary',\n onClick: onConfirmClicked,\n ref: confirmButton,\n \"data-testid\": dataTestId !== undefined ? \"\".concat(dataTestId, \"-btn-confirm\") : undefined,\n children: confirmButtonText\n }), children]\n })]\n })]\n });\n}\nexport default BasicModal;\n//# sourceMappingURL=BasicModal.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport function isPromise(value) {\n return value.then !== undefined;\n}\nclass ContextActionUtils {\n static disableAllActions() {\n ContextActionUtils.actionsDisabled = true;\n }\n static enableAllActions() {\n ContextActionUtils.actionsDisabled = false;\n }\n static isContextActionEvent(e) {\n return Array.isArray(e.contextActions);\n }\n\n /**\n * Compare two action items. Useful in Array.sort\n * @param a First context action to compare\n * @param b Second context action to compare\n */\n static compareActions(a, b) {\n if (a.group !== b.group) {\n var _a$group, _b$group;\n return ((_a$group = a.group) !== null && _a$group !== void 0 ? _a$group : 0) > ((_b$group = b.group) !== null && _b$group !== void 0 ? _b$group : 0) ? 1 : -1;\n }\n if (a.order !== b.order) {\n var _a$order, _b$order;\n return ((_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : 0) > ((_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : 0) ? 1 : -1;\n }\n if (a.title !== b.title) {\n var _a$title, _b$title;\n return ((_a$title = a.title) !== null && _a$title !== void 0 ? _a$title : '') > ((_b$title = b.title) !== null && _b$title !== void 0 ? _b$title : '') ? 1 : -1;\n }\n if (a !== b) {\n return a > b ? 1 : -1;\n }\n return 0;\n }\n\n /**\n *\n * @param actions The array of actions to sort\n */\n static sortActions(actions) {\n if (actions == null || !Array.isArray(actions)) {\n return [];\n }\n var sortedActions = actions.slice();\n sortedActions.sort(ContextActionUtils.compareActions);\n return sortedActions;\n }\n static isMacPlatform() {\n var {\n platform\n } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Retrieve the preferred modifier key based on the current platform\n */\n static getModifierKey() {\n if (ContextActionUtils.isMacPlatform()) {\n return 'metaKey';\n }\n return 'ctrlKey';\n }\n\n /**\n * Returns true if the modifier key for the current platform is down for the event (Ctrl for windows/linux, Command (meta) for mac)\n * @param event The event to get the meta key status from\n */\n static isModifierKeyDown(event) {\n var modifierKey = ContextActionUtils.getModifierKey();\n return event[modifierKey];\n }\n\n /**\n * Returns the menu items for the provided context actions, or empty array if none found.\n * @param actionsParam The actions to get menu items for\n * @param includePromises Whether or not to include promises in the returned menu items\n */\n\n // If ignoring promises, then the return type is narrowed\n\n static getMenuItems(actionsParam) {\n var includePromises = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var menuItems = [];\n var actions = actionsParam;\n if (!Array.isArray(actions)) {\n actions = [actions];\n }\n for (var i = 0; i < actions.length; i += 1) {\n var action = actions[i];\n var newMenuItems = void 0;\n if (typeof action === 'function') {\n newMenuItems = action();\n } else {\n newMenuItems = action;\n }\n if (newMenuItems != null) {\n if (newMenuItems instanceof Promise) {\n if (includePromises) {\n menuItems.push(newMenuItems);\n }\n } else if (Array.isArray(newMenuItems)) {\n menuItems = menuItems.concat(newMenuItems);\n } else {\n menuItems.push(newMenuItems);\n }\n }\n }\n menuItems = menuItems.filter(action => action.title !== undefined || action.then != null || action.menuElement);\n return menuItems;\n }\n\n /**\n * Returns the index of the next menu item in a list that doesn't have a disabled=true prop\n * @param startIndex the starting position for the iteration\n * @param delta the direction of travel, -1 or 1\n * @param menuItems an array of menuItems\n */\n static getNextMenuItem(startIndex, delta, menuItems) {\n var firstIndex = startIndex;\n if (firstIndex < 0 && delta < 0) {\n // if menu index is -1 and delta -1 manually set start point\n firstIndex = menuItems.length;\n }\n // find the next non disabled menu option, iterating the list only once\n for (var i = 1; i < menuItems.length + 1; i += 1) {\n var menuIndex = (firstIndex + delta * i + menuItems.length) % menuItems.length;\n var item = menuItems[menuIndex];\n if (!(item instanceof Promise) && item.disabled !== true) {\n return menuIndex;\n }\n }\n return startIndex;\n }\n}\n_defineProperty(ContextActionUtils, \"actionsDisabled\", false);\nexport default ContextActionUtils;\n//# sourceMappingURL=ContextActionUtils.js.map","import { Component } from 'react';\nimport Log from '@deephaven/log';\nimport ContextActionUtils from \"./ContextActionUtils.js\";\nvar log = Log.module('GlobalContextAction');\nclass GlobalContextAction extends Component {\n constructor(props) {\n super(props);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n componentDidMount() {\n document.body.addEventListener('contextmenu', this.handleContextMenu);\n document.body.addEventListener('keydown', this.handleKeyDown);\n }\n componentWillUnmount() {\n document.body.removeEventListener('contextmenu', this.handleContextMenu);\n document.body.removeEventListener('keydown', this.handleKeyDown);\n }\n handleContextMenu(evt) {\n var e = evt;\n if (e.contextActions == null) {\n e.contextActions = [];\n }\n var {\n action\n } = this.props;\n if (action.title == null && !action.menuElement) {\n return;\n }\n if (e.contextActions == null) {\n e.contextActions = [];\n }\n e.contextActions.push(action);\n log.debug('Received context menu event at global action! Menu items are now: ', e.contextActions);\n }\n handleKeyDown(e) {\n var {\n action\n } = this.props;\n if (!ContextActionUtils.actionsDisabled && action.shortcut !== undefined && action.shortcut.matchesEvent(e)) {\n var _action$action;\n log.debug('Global hotkey matched!', e);\n (_action$action = action.action) === null || _action$action === void 0 || _action$action.call(action, e);\n e.preventDefault();\n e.stopPropagation();\n }\n }\n render() {\n return null;\n }\n}\nexport default GlobalContextAction;\n//# sourceMappingURL=GlobalContextAction.js.map","import React, { Component } from 'react';\nimport GlobalContextAction from \"./GlobalContextAction.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass GlobalContextActions extends Component {\n render() {\n var {\n actions,\n 'data-testid': dataTestId\n } = this.props;\n var actionElements = [];\n for (var i = 0; i < actions.length; i += 1) {\n var action = actions[i];\n var {\n shortcut\n } = action;\n if (action.title != null || action.menuElement || shortcut) {\n var actionElement = /*#__PURE__*/_jsx(GlobalContextAction, {\n action: action,\n \"data-testid\": dataTestId\n }, \"\".concat(action.title, \".\").concat(shortcut === null || shortcut === void 0 ? void 0 : shortcut.id));\n actionElements.push(actionElement);\n }\n }\n return actionElements;\n }\n}\nexport default GlobalContextActions;\n//# sourceMappingURL=GlobalContextActions.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Just a simple utility class for displaying a popup menu.\n */\nimport React, { Component } from 'react';\nimport Log from '@deephaven/log';\nimport ContextActionUtils, { isPromise } from \"./ContextActionUtils.js\";\nimport GlobalContextActions from \"./GlobalContextActions.js\";\nimport \"./ContextActions.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('ContextActions');\n/**\n * ContextActions that you add onto any component.\n *\n * Usage:\n * let actions = [{\n * title: 'My Action', // Omit the title to hide it from the context menu\n * action: () => { alert('My Action Clicked!') }\n * actions: [] // Submenu of actions\n * icon: faPrint, // Limited to FontAwesome icons for now.\n * iconColor: '#ff0000, // Color to use for the icon\n * shortcut: Shortcut, // Defaults to null\n * isGlobal: false, // Global context action. Defaults to false.\n * group: ContextActions.groups.default, // What group to group the context action with\n * order: null, // Int where to order within group\n * disabled: true // disable action\n * menuElement: null // Custom menu element for displaying in context menu. When null, creates a default menu item based on title\n * }];\n *\n * <div>\n * Right click in this container\n * <ContextActions actions={actions}/>\n * </div>\n *\n * Right clicking the container will then build the context menu, bubbling up until an element with a ContextMenuRoot is on it.\n * You should generally have a ContextMenuRoot on the root node of your document.\n */\nclass ContextActions extends Component {\n static triggerMenu(element, clientX, clientY, actions) {\n if (actions.length === 0) {\n return;\n }\n var mouseEvent = new MouseEvent('contextmenu', {\n clientX,\n clientY,\n bubbles: true,\n cancelable: true\n });\n mouseEvent.contextActions = actions;\n element.dispatchEvent(mouseEvent);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.state = {\n globalActions: [],\n keyboardActions: []\n };\n }\n static getDerivedStateFromProps(props) {\n if (props.actions == null || !Array.isArray(props.actions)) {\n return {\n globalActions: [],\n keyboardActions: []\n };\n }\n var globalActions = props.actions.filter(action => !isPromise(action) && typeof action !== 'function' && action.isGlobal);\n var keyboardActions = props.actions.filter(action => !isPromise(action) && typeof action !== 'function' && (action.isGlobal === undefined || !action.isGlobal) && action.shortcut != null);\n return {\n globalActions,\n keyboardActions\n };\n }\n componentDidMount() {\n var _this$container$curre;\n if ((_this$container$curre = this.container.current) !== null && _this$container$curre !== void 0 && _this$container$curre.parentElement) {\n this.container.current.parentElement.addEventListener('contextmenu', this.handleContextMenu);\n this.container.current.parentElement.addEventListener('keydown', this.handleKeyDown);\n }\n }\n componentWillUnmount() {\n var _this$container$curre2;\n if ((_this$container$curre2 = this.container.current) !== null && _this$container$curre2 !== void 0 && _this$container$curre2.parentElement) {\n this.container.current.parentElement.removeEventListener('contextmenu', this.handleContextMenu);\n this.container.current.parentElement.removeEventListener('keydown', this.handleKeyDown);\n }\n }\n handleContextMenu(e) {\n var {\n ignoreClassNames = []\n } = this.props;\n if (ignoreClassNames.length > 0) {\n var el = e.target;\n var _loop = function _loop() {\n var {\n classList\n } = el;\n var ignoredClassName = ignoreClassNames.find(className => classList.contains(className));\n if (ignoredClassName !== undefined) {\n log.debug2(\"Contextmenu event ignored based on the target className \\\"\".concat(ignoredClassName, \"\\\"\"));\n return {\n v: void 0\n };\n }\n el = el.parentElement;\n },\n _ret;\n while (el != null) {\n _ret = _loop();\n if (_ret) return _ret.v;\n }\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n e.contextActions = [];\n }\n if (!ContextActionUtils.isContextActionEvent(e)) {\n return;\n }\n var {\n actions\n } = this.props;\n if (actions != null) {\n var contextActions = actions;\n if (Array.isArray(contextActions)) {\n contextActions = contextActions.filter(action => isPromise(action) || typeof action === 'function' || action.isGlobal === undefined || !action.isGlobal);\n }\n e.contextActions = e.contextActions.concat(contextActions);\n }\n log.debug('Received context menu event! Menu items are now: ', e.contextActions);\n }\n handleKeyDown(e) {\n var {\n keyboardActions\n } = this.state;\n for (var i = 0; i < keyboardActions.length; i += 1) {\n var keyboardAction = keyboardActions[i];\n if (!ContextActionUtils.actionsDisabled && keyboardAction.shortcut != null && keyboardAction.shortcut.matchesEvent(e)) {\n var _keyboardAction$actio;\n log.debug('Context hotkey matched!', e);\n (_keyboardAction$actio = keyboardAction.action) === null || _keyboardAction$actio === void 0 || _keyboardAction$actio.call(keyboardAction, e);\n e.stopPropagation();\n e.preventDefault();\n log.debug2('Matched hotkey returned false, key event not consumed');\n }\n }\n }\n render() {\n var {\n 'data-testid': dataTestId\n } = this.props;\n var {\n globalActions\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"context-actions-listener\",\n ref: this.container,\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(GlobalContextActions, {\n actions: globalActions\n })\n });\n }\n}\n/**\n * Group you can assign to context menu actions to group them together.\n * Lower group IDs appear at the top of the list.\n * Groups are separated by a separator item.\n * Items within groups are ordered by their order property, then by their title.\n */\n_defineProperty(ContextActions, \"groups\", {\n default: undefined,\n high: 100,\n medium: 5000,\n low: 10000,\n global: 100000,\n edit: 100\n});\nexport default ContextActions;\n//# sourceMappingURL=ContextActions.js.map","import React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsChevronRight } from '@deephaven/icons';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar ContextMenuItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n var _menuItem$shortcutTex, _menuItem$shortcut;\n var {\n closeMenu,\n children,\n menuItem,\n onMenuItemClick,\n onMenuItemMouseMove,\n onMenuItemContextMenu,\n isKeyboardSelected = false,\n isMouseSelected = false,\n 'data-testid': dataTestId\n } = _ref;\n var handleMenuItemClick = useCallback(e => {\n onMenuItemClick(menuItem, e);\n }, [menuItem, onMenuItemClick]);\n var handleMenuItemMouseMove = useCallback(e => {\n onMenuItemMouseMove(menuItem, e);\n }, [menuItem, onMenuItemMouseMove]);\n var handleMenuItemContextMenu = useCallback(e => {\n onMenuItemContextMenu(menuItem, e);\n }, [menuItem, onMenuItemContextMenu]);\n function renderCustomMenuElement(element, iconElement, displayShortcut) {\n // Don't pass forwardedProps if menuElement is a native DOM node\n if (typeof element.type === 'string') {\n return element;\n }\n var forwardedProps = {\n menuItem,\n closeMenu,\n isKeyboardSelected,\n isMouseSelected,\n iconElement,\n displayShortcut,\n 'data-testid': dataTestId\n };\n return /*#__PURE__*/React.cloneElement(element, {\n forwardedProps\n });\n }\n var displayShortcut = (_menuItem$shortcutTex = menuItem.shortcutText) !== null && _menuItem$shortcutTex !== void 0 ? _menuItem$shortcutTex : (_menuItem$shortcut = menuItem.shortcut) === null || _menuItem$shortcut === void 0 ? void 0 : _menuItem$shortcut.getDisplayText();\n var icon = null;\n if (menuItem.icon) {\n var menuItemIcon = menuItem.icon;\n if (/*#__PURE__*/React.isValidElement(menuItemIcon)) {\n icon = menuItemIcon;\n } else {\n var style;\n if (menuItem.iconColor != null && (menuItem.disabled === undefined || !menuItem.disabled)) {\n style = {\n color: menuItem.iconColor\n };\n }\n icon = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: menuItemIcon,\n style: style\n });\n }\n }\n var subMenuIndicator = null;\n var isSubMenuActive = Boolean(children);\n if (menuItem.actions) {\n subMenuIndicator = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsChevronRight\n });\n }\n var content = null;\n if (menuItem.menuElement) {\n content = /*#__PURE__*/_jsx(\"div\", {\n className: \"custom-menu-item\",\n onMouseMove: handleMenuItemMouseMove,\n children: renderCustomMenuElement(menuItem.menuElement, icon, displayShortcut)\n });\n } else {\n var _menuItem$description;\n var menuItemDisabled = menuItem.disabled;\n var iconHasOutline = menuItem.iconOutline;\n content = /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n className: classNames('btn-context-menu', {\n disabled: menuItemDisabled\n }, {\n active: (isSubMenuActive || isMouseSelected) && (menuItemDisabled === undefined || !menuItemDisabled)\n }, {\n 'keyboard-active': isKeyboardSelected && (menuItemDisabled === undefined || !menuItemDisabled)\n }),\n onClick: handleMenuItemClick,\n onMouseMove: handleMenuItemMouseMove,\n onContextMenu: handleMenuItemContextMenu,\n title: (_menuItem$description = menuItem.description) !== null && _menuItem$description !== void 0 ? _menuItem$description : '',\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"btn-context-menu-wrapper\",\n children: [/*#__PURE__*/_jsx(\"span\", {\n className: classNames('icon', {\n outline: iconHasOutline\n }),\n children: icon\n }), /*#__PURE__*/_jsx(\"span\", {\n className: \"title\",\n children: menuItem.title\n }), displayShortcut !== undefined && /*#__PURE__*/_jsx(\"span\", {\n className: \"shortcut\",\n children: displayShortcut\n }), subMenuIndicator && /*#__PURE__*/_jsx(\"span\", {\n className: classNames('submenu-indicator', {\n disabled: menuItemDisabled\n }),\n children: subMenuIndicator\n })]\n })\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"context-menu-item\",\n ref: ref,\n \"data-testid\": dataTestId,\n children: [children, content]\n });\n});\nContextMenuItem.displayName = 'ContextMenuItem';\nexport default ContextMenuItem;\n//# sourceMappingURL=ContextMenuItem.js.map","import React, { useState, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { nanoid } from 'nanoid';\nimport { useForwardedRef } from '@deephaven/react-hooks';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A simple checkbox component. Automatically generates an id so htmlFor/id attributes are unique.\n */\nvar Checkbox = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var {\n checked = false,\n children,\n className,\n disabled = false,\n inputClassName,\n isInvalid = false,\n labelClassName,\n name,\n onChange,\n 'data-testid': dataTestId\n } = props;\n var [id] = useState(nanoid());\n var ref = useForwardedRef(forwardedRef);\n useEffect(function setIndeterminateProperty() {\n if (ref.current) {\n // indeterminate is not actually an html attr, can only be set via JS\n ref.current.indeterminate = checked === null;\n }\n }, [ref, checked]);\n var handleOnChange = useCallback(event => {\n if (ref.current) {\n // ref.current can be null in tests, doesn't impact behaviour\n ref.current.indeterminate = checked === null;\n }\n if (onChange) {\n onChange(event);\n }\n }, [ref, checked, onChange]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('custom-control custom-checkbox', className),\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"checkbox\",\n ref: ref,\n checked: checked !== null && checked !== void 0 ? checked : false // checked attr must always have a value to remain as a controlled component\n ,\n className: classNames('custom-control-input', inputClassName, {\n 'is-invalid': isInvalid\n }),\n disabled: disabled,\n id: id,\n name: name,\n onChange: handleOnChange,\n \"data-testid\": dataTestId\n }), /*#__PURE__*/_jsx(\"label\", {\n className: classNames('custom-control-label', labelClassName),\n htmlFor: id,\n children: children\n })]\n });\n});\n\n// Forward ref causes a false positive for display-name in eslint:\n// https://github.com/yannickcr/eslint-plugin-react/issues/2269\nCheckbox.displayName = 'Checkbox';\nexport default Checkbox;\n//# sourceMappingURL=Checkbox.js.map","import { ForwardRef } from 'react-is';\n\n/**\n * Type that represents a component that has been wrapped by redux.\n */\n\n/**\n * Checks if a component is a wrapped component.\n * @param Component The component to check\n * @returns Whether the component is a wrapped component or not\n */\nexport function isWrappedComponent(Component) {\n return (Component === null || Component === void 0 ? void 0 : Component.WrappedComponent) !== undefined;\n}\n\n/**\n * Checks if a component is a class component.\n * @param Component The component to check\n * @returns Whether the component is a class component or not\n */\nexport function isClassComponent(Component) {\n if (isWrappedComponent(Component) && isClassComponent(Component.WrappedComponent)) {\n return true;\n }\n return Component.prototype != null && Component.prototype.isReactComponent != null;\n}\n\n/**\n * Checks if a component is a forward ref component.\n * @param Component The component to check\n * @returns Whether the component is a forward ref component or not\n */\nexport function isForwardRefComponentType(Component) {\n return !isWrappedComponent(Component) &&\n // Do a check right on the `$$typeof` the component. The `isForwardRef` function in `react-is` checks against a `Component` instance, whereas\n // we want to check against a `ComponentType` which is the class/function that defines a component.\n '$$typeof' in Component && Component.$$typeof === ForwardRef;\n}\n\n/**\n * Checks if a component can have a ref. Helps silence react dev errors\n * if a ref is passed to a functional component without forwardRef.\n * @param Component The component to check if it can take a ref\n * @returns Whether the component can have a ref or not\n */\nexport function canHaveRef(Component) {\n return isClassComponent(Component) || isForwardRefComponentType(Component);\n}\n//# sourceMappingURL=ComponentUtils.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport ContextActionUtils from \"../context-actions/ContextActionUtils.js\";\nimport ContextMenuItem from \"../context-actions/ContextMenuItem.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Do not use this class directly. Use DropdownMenu instead.\n *\n * Generates list from actions for use by DropdownMenu.\n * It has beem split from the context-actions component, due to divergering requirements,\n * but still re-uses styling from context-menu. Depending on how usage evolves, may get split further.\n *\n */\n\nclass Menu extends PureComponent {\n constructor(props) {\n var _options$initialKeybo;\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"oldFocus\", void 0);\n _defineProperty(this, \"rAF\", void 0);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleMenuItemMouseMove = this.handleMenuItemMouseMove.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.oldFocus = document.activeElement;\n this.rAF = 0;\n var {\n options\n } = props;\n var keyboardIndex = (_options$initialKeybo = options.initialKeyboardIndex) !== null && _options$initialKeybo !== void 0 ? _options$initialKeybo : -1;\n this.state = {\n menuItems: [],\n keyboardIndex,\n mouseIndex: -1\n };\n }\n componentDidMount() {\n this.initMenu();\n this.rAF = window.requestAnimationFrame(() => {\n var _this$container$curre;\n // set initial focus to container so keyboard navigation works\n // components can still override focus in onMenuOpened callback\n (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 || _this$container$curre.focus();\n var {\n onMenuOpened\n } = this.props;\n onMenuOpened(this);\n });\n }\n componentDidUpdate(prevProps) {\n var {\n actions\n } = this.props;\n if (prevProps.actions !== actions) {\n this.initMenu();\n }\n }\n componentWillUnmount() {\n cancelAnimationFrame(this.rAF);\n }\n getKeyboardIndex() {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n var {\n keyboardIndex\n } = this.state;\n return keyboardIndex;\n }\n return this.getMouseIndex();\n }\n setKeyboardIndex(index) {\n var {\n options\n } = this.props;\n if (options.separateKeyboardMouse !== undefined && options.separateKeyboardMouse) {\n this.setState({\n keyboardIndex: index\n });\n } else {\n this.setMouseIndex(index);\n }\n }\n getMouseIndex() {\n var {\n mouseIndex\n } = this.state;\n return mouseIndex;\n }\n setMouseIndex(index) {\n this.setState({\n mouseIndex: index\n });\n }\n initMenu() {\n // cancel any pending close\n cancelAnimationFrame(this.rAF);\n this.setState({\n menuItems: []\n });\n var {\n actions\n } = this.props;\n var menuItems = ContextActionUtils.getMenuItems(actions, false);\n if (menuItems.length > 0) {\n this.setState(state => ({\n menuItems: ContextActionUtils.sortActions(state.menuItems.concat(menuItems))\n }));\n }\n }\n handleKeyDown(e) {\n var {\n menuItems\n } = this.state;\n var oldFocus = this.getKeyboardIndex();\n var newFocus = oldFocus;\n if (e.key === 'Enter' || e.key === ' ') {\n if (oldFocus != null && oldFocus >= 0 && oldFocus < menuItems.length) {\n this.handleMenuItemClick(menuItems[oldFocus], e);\n }\n return;\n }\n if (e.key === 'Escape') {\n newFocus = null;\n } else if (e.key === 'ArrowUp' || e.key === 'Tab' && e.shiftKey === true) {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus !== null && newFocus !== void 0 ? newFocus : 0, -1, menuItems);\n } else if (e.key === 'ArrowDown' || e.key === 'Tab' && e.shiftKey === false) {\n newFocus = ContextActionUtils.getNextMenuItem(newFocus !== null && newFocus !== void 0 ? newFocus : 0, 1, menuItems);\n }\n if (oldFocus !== newFocus) {\n if (newFocus !== null) {\n this.setKeyboardIndex(newFocus);\n } else {\n this.closeMenu();\n if (this.oldFocus instanceof HTMLElement) {\n this.oldFocus.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n }\n }\n closeMenu() {\n var closeAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var {\n closeMenu,\n onMenuClosed\n } = this.props;\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n closeMenu(closeAll);\n onMenuClosed(this);\n });\n }\n handleCloseMenu() {\n this.closeMenu();\n }\n handleMenuItemClick(menuItem, e) {\n e.preventDefault();\n e.stopPropagation();\n if (menuItem != null && (menuItem.disabled === undefined || !menuItem.disabled) && menuItem.action != null) {\n menuItem.action(e.nativeEvent);\n this.closeMenu(true);\n }\n }\n handleMenuItemMouseMove(menuItem) {\n var {\n menuItems\n } = this.state;\n var focusIndex = menuItems.indexOf(menuItem);\n this.setMouseIndex(focusIndex);\n }\n handleMouseLeave() {\n this.setMouseIndex(-1);\n }\n render() {\n var menuItemElements = [];\n var {\n 'data-testid': dataTestId\n } = this.props;\n var {\n keyboardIndex,\n menuItems,\n mouseIndex\n } = this.state;\n for (var i = 0; i < menuItems.length; i += 1) {\n var menuItem = menuItems[i];\n if (i > 0 && menuItem.group !== menuItems[i - 1].group) {\n menuItemElements.push(/*#__PURE__*/_jsx(\"hr\", {}, \"\".concat(i, \".separator\")));\n }\n var menuItemElement = /*#__PURE__*/_jsx(ContextMenuItem, {\n isKeyboardSelected: keyboardIndex === i,\n isMouseSelected: mouseIndex === i,\n menuItem: menuItem,\n closeMenu: this.handleCloseMenu,\n onMenuItemClick: this.handleMenuItemClick,\n onMenuItemMouseMove: this.handleMenuItemMouseMove,\n onMenuItemContextMenu: () => false\n }, i);\n menuItemElements.push(menuItemElement);\n }\n var {\n menuStyle\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"context-menu-container\",\n style: _objectSpread({}, menuStyle),\n ref: this.container,\n onKeyDown: this.handleKeyDown,\n onMouseLeave: this.handleMouseLeave,\n role: \"menuitem\",\n tabIndex: 0,\n \"data-testid\": dataTestId,\n children: menuItemElements\n });\n }\n}\n_defineProperty(Menu, \"defaultProps\", {\n closeMenu() {\n // no-op\n },\n onMenuOpened() {\n // no-op\n },\n onMenuClosed() {\n // no-op\n },\n options: {},\n menuStyle: {},\n 'data-testid': undefined\n});\nexport default Menu;\n//# sourceMappingURL=Menu.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Add dropdown menu that you add onto any component.\n *\n * Similar to the context-actions package, accepts list of actions to create a dropdown menu.\n * Note: Does not support nested sub-menus.\n *\n * Usage:\n * let actions = [{\n * title: 'My Action',\n * action: () => { alert('My Action Clicked!') }\n * icon: faPrint, // Limited to FontAwesome icons for now.\n * shortcut: Shortcut, // Shortcut class instance\n * group: ContextActions.groups.default, // What group to group the context action with\n * order: null // Int where to order within group\n * }];\n *\n * Usage:\n * 1. Auto bind click to open event to parent\n * <div>\n * Click in this container\n * <DropdownMenu actions={actions}/>\n * </div>\n *\n * 2. Control via prop\n * <div>\n * DropdownMenu will not react to the click event if isShown prop is used\n * <DropdownMenu actions={actions} isShown={isShown} />\n * </div>\n *\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Popper } from \"../popper/index.js\";\nimport Menu from \"./Menu.js\";\nimport \"./DropdownMenu.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass DropdownMenu extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"popper\", void 0);\n _defineProperty(this, \"isOpen\", void 0);\n this.handleClick = this.handleClick.bind(this);\n this.handleCloseMenu = this.handleCloseMenu.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.parent = null;\n this.popper = /*#__PURE__*/React.createRef();\n this.isOpen = false;\n }\n componentDidMount() {\n var {\n isShown\n } = this.props;\n if (isShown === null) {\n var _this$container$curre;\n if ((_this$container$curre = this.container.current) !== null && _this$container$curre !== void 0 && _this$container$curre.parentElement) {\n this.parent = this.container.current.parentElement;\n this.parent.addEventListener('click', this.handleClick);\n }\n } else if (isShown) {\n this.openMenu();\n }\n }\n componentDidUpdate(prevProps) {\n var {\n isShown\n } = this.props;\n if (prevProps.isShown !== isShown) {\n if (isShown !== null && isShown) {\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.openMenu();\n });\n } else {\n this.closeMenu();\n }\n }\n }\n componentWillUnmount() {\n if (this.parent) {\n this.parent.removeEventListener('click', this.handleClick);\n }\n }\n closeMenu() {\n var _this$popper$current;\n (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 || _this$popper$current.hide();\n }\n openMenu() {\n if (this.popper.current && !this.isOpen) {\n this.popper.current.show();\n this.isOpen = true;\n }\n }\n scheduleUpdate() {\n var _this$popper$current2;\n (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 || _this$popper$current2.scheduleUpdate();\n }\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.openMenu();\n }\n handleCloseMenu() {\n this.closeMenu();\n }\n handleExited() {\n this.isOpen = false;\n var {\n onMenuClosed\n } = this.props;\n onMenuClosed();\n }\n render() {\n var {\n actions,\n onMenuOpened,\n popperClassName,\n 'data-testid': dataTestId\n } = this.props;\n var {\n menuStyle\n } = this.props;\n var {\n options,\n popperOptions\n } = this.props;\n popperOptions = _objectSpread({\n placement: 'bottom'\n }, popperOptions);\n options = _objectSpread({\n separateKeyboardMouse: true\n }, options);\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"menu-actions-listener\",\n ref: this.container,\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(Popper, {\n ref: this.popper,\n options: popperOptions,\n className: classNames('menu-popper', popperClassName),\n onExited: this.handleExited,\n closeOnBlur: true,\n interactive: true,\n children: /*#__PURE__*/_jsx(Menu, {\n actions: actions,\n closeMenu: this.handleCloseMenu,\n onMenuOpened: onMenuOpened,\n options: options,\n menuStyle: menuStyle\n })\n })\n });\n }\n}\n_defineProperty(DropdownMenu, \"defaultProps\", {\n isShown: null,\n onMenuClosed() {\n // no-op\n },\n onMenuOpened() {\n // no-op\n },\n options: {},\n popperOptions: {},\n popperClassName: '',\n menuStyle: {},\n 'data-testid': undefined\n});\nexport default DropdownMenu;\n//# sourceMappingURL=DropdownMenu.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable no-underscore-dangle */\nimport { EventTarget } from 'event-target-shim';\nimport { Log } from '@deephaven/log';\nimport { EventShimCustomEvent } from '@deephaven/utils';\nimport { ContextActionUtils } from \"../context-actions/index.js\";\nvar log = Log.module('Shortcut');\nexport var MODIFIER = /*#__PURE__*/function (MODIFIER) {\n MODIFIER[\"CTRL\"] = \"MODIFIER_CTRL\";\n MODIFIER[\"CMD\"] = \"MODIFIER_CMD\";\n MODIFIER[\"ALT\"] = \"MODIFIER_ALT\";\n MODIFIER[\"OPTION\"] = \"MODIFIER_OPTION\";\n MODIFIER[\"SHIFT\"] = \"MODIFIER_SHIFT\";\n return MODIFIER;\n}({});\n\n// The value should match the KeyboardEvent.key value\n// This is the value which will be displayed if no display overrides are done in the OS specific getDisplayString methods\nexport var KEY = /*#__PURE__*/function (KEY) {\n KEY[\"A\"] = \"A\";\n KEY[\"B\"] = \"B\";\n KEY[\"C\"] = \"C\";\n KEY[\"D\"] = \"D\";\n KEY[\"E\"] = \"E\";\n KEY[\"F\"] = \"F\";\n KEY[\"G\"] = \"G\";\n KEY[\"H\"] = \"H\";\n KEY[\"I\"] = \"I\";\n KEY[\"J\"] = \"J\";\n KEY[\"K\"] = \"K\";\n KEY[\"L\"] = \"L\";\n KEY[\"M\"] = \"M\";\n KEY[\"N\"] = \"N\";\n KEY[\"O\"] = \"O\";\n KEY[\"P\"] = \"P\";\n KEY[\"Q\"] = \"Q\";\n KEY[\"R\"] = \"R\";\n KEY[\"S\"] = \"S\";\n KEY[\"T\"] = \"T\";\n KEY[\"U\"] = \"U\";\n KEY[\"V\"] = \"V\";\n KEY[\"W\"] = \"W\";\n KEY[\"X\"] = \"X\";\n KEY[\"Y\"] = \"Y\";\n KEY[\"Z\"] = \"Z\";\n KEY[\"ZERO\"] = \"0\";\n KEY[\"ONE\"] = \"1\";\n KEY[\"TWO\"] = \"2\";\n KEY[\"THREE\"] = \"3\";\n KEY[\"FOUR\"] = \"4\";\n KEY[\"FIVE\"] = \"5\";\n KEY[\"SIX\"] = \"6\";\n KEY[\"SEVEN\"] = \"7\";\n KEY[\"EIGHT\"] = \"8\";\n KEY[\"NINE\"] = \"9\";\n KEY[\"BACKSPACE\"] = \"Backspace\";\n KEY[\"ESCAPE\"] = \"Escape\";\n KEY[\"ENTER\"] = \"Enter\";\n KEY[\"DELETE\"] = \"Delete\";\n KEY[\"SLASH\"] = \"/\";\n KEY[\"QUESTION_MARK\"] = \"?\";\n KEY[\"BACKSLASH\"] = \"\\\\\";\n KEY[\"PIPE\"] = \"|\";\n KEY[\"MINUS\"] = \"-\";\n KEY[\"UNDERSCORE\"] = \"_\";\n KEY[\"EQUALS\"] = \"=\";\n KEY[\"PLUS\"] = \"+\";\n KEY[\"BACKTICK\"] = \"`\";\n KEY[\"TILDE\"] = \"~\";\n KEY[\"COMMA\"] = \",\";\n KEY[\"LEFT_CHEVRON\"] = \"<\";\n KEY[\"PERIOD\"] = \".\";\n KEY[\"RIGHT_CHEVRON\"] = \">\";\n KEY[\"SEMICOLON\"] = \";\";\n KEY[\"COLON\"] = \":\";\n KEY[\"SINGLE_QUOTE\"] = \"'\";\n KEY[\"DOUBLE_QUOTE\"] = \"\\\"\";\n KEY[\"LEFT_BRACKET\"] = \"[\";\n KEY[\"RIGHT_BRACKET\"] = \"]\";\n KEY[\"LEFT_CURLY\"] = \"{\";\n KEY[\"RIGHT_CURLY\"] = \"}\";\n KEY[\"F1\"] = \"F1\";\n KEY[\"F2\"] = \"F2\";\n KEY[\"F3\"] = \"F3\";\n KEY[\"F4\"] = \"F4\";\n KEY[\"F5\"] = \"F5\";\n KEY[\"F6\"] = \"F6\";\n KEY[\"F7\"] = \"F7\";\n KEY[\"F8\"] = \"F8\";\n KEY[\"F9\"] = \"F9\";\n KEY[\"F10\"] = \"F10\";\n KEY[\"F11\"] = \"F11\";\n KEY[\"F12\"] = \"F12\";\n return KEY;\n}({});\nvar ALLOWED_SINGLE_KEY_SET = new Set([KEY.ENTER, KEY.DELETE, KEY.F1, KEY.F2, KEY.F3, KEY.F4, KEY.F5, KEY.F6, KEY.F7, KEY.F8, KEY.F9, KEY.F10, KEY.F11, KEY.F12]);\nexport default class Shortcut extends EventTarget {\n /**\n * Use to check if a keyCode corresponds to an allowed key for a shortcut\n * @param keyCode The keyCode to check. This should be the charCode of the key\n * @returns Type predicate asserting the key is an allowed KEY\n */\n static isAllowedKey(key) {\n return Object.values(KEY).includes(key);\n }\n\n /**\n * Checks if a KeyState has a valid key.\n * @param state KeyState with any string as the key\n * @returns True if KeyState is is using an allowed keyCode\n */\n static isValidKeyState(state) {\n var {\n keyValue\n } = state;\n if (keyValue === null) {\n // Null state is valid\n return true;\n }\n if (!Shortcut.isMacPlatform && state.metaKey) {\n // MetaKey not allowed in windows\n return false;\n }\n if (!Shortcut.isAllowedKey(keyValue)) {\n return false;\n }\n var isSingleKey = !state.altKey && !state.ctrlKey && !state.metaKey && !state.shiftKey;\n return !isSingleKey || ALLOWED_SINGLE_KEY_SET.has(keyValue);\n }\n /**\n * Creates a KeyState from a valid array of modifier and key constants\n * @param keys Array of keys in the shortcut. Modifiers first and key last. Should use the MODIFIER and KEY enums\n * @returns KeyState representing the array of constants\n */\n static createKeyState(keys) {\n var keyState = {\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n keyValue: keys[keys.length - 1]\n };\n keys.forEach(key => {\n switch (key) {\n case MODIFIER.CTRL:\n keyState.ctrlKey = true;\n break;\n case MODIFIER.ALT:\n case MODIFIER.OPTION:\n keyState.altKey = true;\n break;\n case MODIFIER.CMD:\n keyState.metaKey = true;\n break;\n case MODIFIER.SHIFT:\n keyState.shiftKey = true;\n break;\n default:\n break;\n }\n });\n return keyState;\n }\n static getKeyStateFromEvent(e) {\n var {\n key: eventKey,\n keyCode\n } = e;\n var key = '';\n if (eventKey === 'Shift' || eventKey === 'Meta' || eventKey === 'Control' || eventKey === 'Alt') {\n key = '';\n } else if (\n // This is primarily for Mac which has a symbol keyboard hidden behind the alt key\n // The keyCode still corresponds to the letter keyCode, but the key value will be a symbol\n !Shortcut.isAllowedKey(eventKey) && Shortcut.isAllowedKey(String.fromCharCode(keyCode))) {\n key = String.fromCharCode(keyCode);\n } else {\n key = eventKey;\n }\n return {\n keyValue: key,\n altKey: e.altKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey\n };\n }\n\n /**\n * Gets display string for Windows (and Linux + any other non-Mac OS)\n * If the key is not an allowed key, the display will only display the modifiers\n * @param keyState KeyState to get the display for\n * @returns The string to display on Windows/non-Mac OS\n */\n static getWindowsDisplayText(keyState) {\n var display = '';\n if (keyState.ctrlKey) {\n display += 'Ctrl+';\n }\n if (keyState.altKey) {\n display += 'Alt+';\n }\n if (keyState.shiftKey) {\n display += 'Shift+';\n }\n if (keyState.keyValue === KEY.ESCAPE) {\n display += 'Esc';\n } else if (keyState.keyValue !== null) {\n display += keyState.keyValue;\n }\n return display;\n }\n\n /**\n * Gets display string Mac OS\n * If the key is not an allowed key, the display will only display the modifiers\n * @param keyState KeyState to get the display for\n * @returns The string to display on Mac OS\n */\n static getMacDisplayText(keyState) {\n var display = '';\n if (keyState.ctrlKey) {\n display += '⌃';\n }\n if (keyState.altKey) {\n display += '⌥';\n }\n if (keyState.shiftKey) {\n display += '⇧';\n }\n if (keyState.metaKey) {\n display += '⌘';\n }\n switch (keyState.keyValue) {\n case KEY.ENTER:\n display += '⏎';\n break;\n case KEY.ESCAPE:\n display += '⎋';\n break;\n case KEY.BACKSPACE:\n display += '⌫';\n break;\n case KEY.DELETE:\n display += '⌦';\n break;\n case null:\n break;\n default:\n display += keyState.keyValue;\n }\n return display;\n }\n\n /**\n * Checks if 2 KeyStates match\n * @param state1 First KeyState to compare\n * @param state2 Second KeyState to compare\n * @returns True if the KeyStates match and have non-null keyValues\n */\n static doKeyStatesMatch(state1, state2) {\n var _state1$keyValue, _state2$keyValue;\n return ((_state1$keyValue = state1.keyValue) === null || _state1$keyValue === void 0 ? void 0 : _state1$keyValue.toUpperCase()) === ((_state2$keyValue = state2.keyValue) === null || _state2$keyValue === void 0 ? void 0 : _state2$keyValue.toUpperCase()) && state1.altKey === state2.altKey && state1.ctrlKey === state2.ctrlKey && state1.metaKey === state2.metaKey && state1.shiftKey === state2.shiftKey;\n }\n\n /**\n * Gets the display string for the current OS from a KeyState.\n * @param keyState KeyState to get the display for\n * @returns Display string for the current OS\n */\n static getDisplayText(keyState) {\n if (keyState.keyValue === null) {\n return '';\n }\n return Shortcut.isMacPlatform ? Shortcut.getMacDisplayText(keyState) : Shortcut.getWindowsDisplayText(keyState);\n }\n constructor(_ref) {\n var {\n id,\n shortcut,\n macShortcut,\n isEditable = true,\n name,\n tooltip\n } = _ref;\n super();\n _defineProperty(this, \"id\", void 0);\n // Unique identifier for the shortcut\n _defineProperty(this, \"name\", void 0);\n // e.g. Rename, Save, Run Selected\n _defineProperty(this, \"tooltip\", void 0);\n _defineProperty(this, \"isEditable\", void 0);\n _defineProperty(this, \"defaultKeyState\", void 0);\n _defineProperty(this, \"keyState\", void 0);\n this.id = id;\n this.name = name;\n this.tooltip = tooltip;\n this.isEditable = isEditable;\n var isMac = Shortcut.isMacPlatform;\n var activeShortcut = isMac ? macShortcut : shortcut;\n this.defaultKeyState = Shortcut.createKeyState(activeShortcut);\n this.keyState = this.defaultKeyState;\n }\n\n /**\n * Gets the display string for the current OS\n */\n getDisplayText() {\n return Shortcut.getDisplayText(this.keyState);\n }\n\n /**\n * Gets the current keyState for the Shortcut\n */\n getKeyState() {\n return this.keyState;\n }\n\n /**\n * Sets the KeyState if it is valid\n * @param keyState\n */\n setKeyState(keyState) {\n if (Shortcut.isValidKeyState(keyState)) {\n log.debug2(\"Shortcut \".concat(this.id, \" updated to \").concat(JSON.stringify(keyState)));\n this.keyState = keyState;\n this.dispatchEvent(new EventShimCustomEvent('onUpdate', {\n detail: this\n }));\n } else {\n log.debug2(\"Shortcut \".concat(this.id, \" tried to update to invalid keyState \").concat(JSON.stringify(keyState)));\n }\n }\n\n /**\n * Gets the default key state of the shortcut\n * @returns Default key state\n */\n getDefaultKeyState() {\n return this.defaultKeyState;\n }\n isDefault() {\n return Shortcut.doKeyStatesMatch(this.getDefaultKeyState(), this.getKeyState());\n }\n\n /**\n * Sets the shortcut to have null keyValue\n */\n setToNull() {\n this.setKeyState(Shortcut.NULL_KEY_STATE);\n }\n isNull() {\n return Shortcut.doKeyStatesMatch(this.keyState, Shortcut.NULL_KEY_STATE);\n }\n\n /**\n * Sets the shortcut to its default key state\n */\n setToDefault() {\n this.setKeyState(this.defaultKeyState);\n }\n\n /**\n * Checks if a KeyState matches the KeyState for the shortcut\n * @param keyState KeyState to check\n * @returns True if the passed KeyState matches the Shortcut's KeyState\n */\n matchesKeyState(keyState) {\n return Shortcut.doKeyStatesMatch(keyState, this.keyState);\n }\n\n /**\n * Alias for matchesKeyState\n * @param e KeyboardEvent to check if the Shortcut matches\n * @returns True if the event matches the Shortcut's KeyState\n */\n matchesEvent(e) {\n return this.matchesKeyState(Shortcut.getKeyStateFromEvent(e));\n }\n}\n_defineProperty(Shortcut, \"NULL_KEY_STATE\", {\n metaKey: false,\n shiftKey: false,\n altKey: false,\n ctrlKey: false,\n keyValue: null\n});\n_defineProperty(Shortcut, \"isMacPlatform\", ContextActionUtils.isMacPlatform());\n//# sourceMappingURL=Shortcut.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable max-classes-per-file */\nimport { EventTarget } from 'event-target-shim';\nimport { Log } from '@deephaven/log';\nimport { EventShimCustomEvent } from '@deephaven/utils';\nimport Shortcut from \"./Shortcut.js\";\nvar log = Log.module('ShortcutRegistry');\nclass ShortcutRegistry extends EventTarget {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"shortcutMap\", new Map());\n _defineProperty(this, \"shortcutsByCategory\", new Map());\n }\n /**\n * Creates a Shortcut and adds it to the registry\n * @param params The constructor params for the {@link Shortcut}\n * @returns The created shortcut or the shortcut in the registry if 1 already exists w/ the same ID\n */\n createAndAdd(params) {\n var shortcut = new Shortcut(params);\n return this.add(shortcut);\n }\n\n /**\n * Adds a shortcut to the registry. Warns and returns existing shortcut if a shortcut with the same ID already exists\n * @param shortcut Shortcut to add to the registry\n * @returns Shortcut passed if it is not in the registry. Shortcut from the registry if one exists for the same ID\n */\n add(shortcut) {\n var existingShortcut = this.shortcutMap.get(shortcut.id);\n if (existingShortcut) {\n log.warn(\"Skipping attempt to add duplicate shortcut ID to registry: \".concat(shortcut.id));\n return existingShortcut;\n }\n log.debug2(\"Adding shortcut to registry: \".concat(shortcut.id));\n shortcut.addEventListener('onUpdate', _ref => {\n var {\n detail\n } = _ref;\n return this.dispatchEvent(new EventShimCustomEvent('onUpdate', {\n detail\n }));\n });\n var category = shortcut.id.split('.')[0];\n this.shortcutMap.set(shortcut.id, shortcut);\n if (this.shortcutsByCategory.has(category)) {\n var _this$shortcutsByCate;\n (_this$shortcutsByCate = this.shortcutsByCategory.get(category)) === null || _this$shortcutsByCate === void 0 || _this$shortcutsByCate.push(shortcut);\n } else {\n this.shortcutsByCategory.set(category, [shortcut]);\n }\n return shortcut;\n }\n\n /**\n * Gets a shortcut from the registry from an ID\n * @param id ID of the shortcut\n * @returns The shortcut for that ID if it exists\n */\n get(id) {\n return this.shortcutMap.get(id);\n }\n\n /**\n * Gets an array of any registered shortcuts with conflicting key states.\n * Only checks the key states of the current OS (Mac or Windows/Linux)\n * @param keyState\n * @returns Array of conflicting shortcuts. Empty array if none conflict\n */\n getConflictingShortcuts(keyState) {\n return Array.from(this.shortcutMap.values()).filter(shortcut => !shortcut.isNull() && shortcut.matchesKeyState(keyState));\n }\n}\nvar registry = Object.freeze(new ShortcutRegistry());\nexport default registry;\n//# sourceMappingURL=ShortcutRegistry.js.map","import ShortcutRegistry from \"./ShortcutRegistry.js\";\nimport { MODIFIER, KEY } from \"./Shortcut.js\";\nvar GLOBAL_SHORTCUTS = {\n COPY: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.COPY',\n name: 'Copy',\n shortcut: [MODIFIER.CTRL, KEY.C],\n macShortcut: [MODIFIER.CMD, KEY.C],\n isEditable: false\n }),\n PASTE: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.PASTE',\n name: 'Paste',\n shortcut: [MODIFIER.CTRL, KEY.V],\n macShortcut: [MODIFIER.CMD, KEY.V],\n isEditable: false\n }),\n SAVE: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.SAVE',\n name: 'Save',\n shortcut: [MODIFIER.CTRL, KEY.S],\n macShortcut: [MODIFIER.CMD, KEY.S],\n isEditable: false\n }),\n SELECT_ALL: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.SELECT_ALL',\n name: 'Select All',\n shortcut: [MODIFIER.CTRL, KEY.A],\n macShortcut: [MODIFIER.CMD, KEY.A],\n isEditable: false\n }),\n REOPEN_CLOSED_PANEL: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.REOPEN_CLOSED_PANEL',\n name: 'Re-open Closed Panel',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.T],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.T],\n isEditable: true\n }),\n LINKER: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.LINKER',\n name: 'Linker',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CMD, KEY.L]\n }),\n LINKER_CLOSE: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.LINKER_CLOSE',\n name: 'Close Linker Overlay',\n shortcut: [KEY.ESCAPE],\n macShortcut: [KEY.ESCAPE],\n isEditable: false\n }),\n COPY_VERSION_INFO: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.COPY_VERSION_INFO',\n name: 'Copy Version Info',\n // alt vs shift to not be the devtools shortcut on each platform\n shortcut: [MODIFIER.CTRL, MODIFIER.ALT, KEY.I],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.I],\n isEditable: true\n }),\n EXPORT_LOGS: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.EXPORT_LOGS',\n name: 'Export Logs',\n shortcut: [MODIFIER.CTRL, MODIFIER.ALT, MODIFIER.SHIFT, KEY.L],\n macShortcut: [MODIFIER.CMD, MODIFIER.OPTION, MODIFIER.SHIFT, KEY.L],\n isEditable: true\n }),\n OPEN_DASHBOARD_LIST: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.OPEN_DASHBOARD_LIST',\n name: 'Open Dashboard List',\n shortcut: [MODIFIER.CTRL, MODIFIER.SHIFT, KEY.D],\n macShortcut: [MODIFIER.CMD, MODIFIER.SHIFT, KEY.D],\n isEditable: true\n }),\n NEXT: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.NEXT',\n name: 'Next',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER],\n isEditable: false\n }),\n PREVIOUS: ShortcutRegistry.createAndAdd({\n id: 'GLOBAL.PREVIOUS',\n name: 'Previous',\n shortcut: [MODIFIER.SHIFT, KEY.ENTER],\n macShortcut: [MODIFIER.SHIFT, KEY.ENTER],\n isEditable: false\n })\n};\nexport default GLOBAL_SHORTCUTS;\n//# sourceMappingURL=GlobalShortcuts.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsArrowLeft, vsArrowRight, vsSearch } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport Button from \"./Button.js\";\nimport \"./SearchInput.css\";\nimport { GLOBAL_SHORTCUTS } from \"./shortcuts/index.js\";\nimport { ContextActions } from \"./context-actions/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nclass SearchInput extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputField\", void 0);\n _defineProperty(this, \"searchChangeSelection\", void 0);\n this.inputField = /*#__PURE__*/React.createRef();\n this.searchChangeSelection = /*#__PURE__*/React.createRef();\n }\n componentDidMount() {\n this.setInputPaddingRight();\n }\n componentDidUpdate() {\n this.setInputPaddingRight();\n }\n focus() {\n var _this$inputField$curr;\n (_this$inputField$curr = this.inputField.current) === null || _this$inputField$curr === void 0 || _this$inputField$curr.focus();\n }\n select() {\n var _this$inputField$curr2;\n (_this$inputField$curr2 = this.inputField.current) === null || _this$inputField$curr2 === void 0 || _this$inputField$curr2.select();\n }\n setInputPaddingRight() {\n var inputField = this.inputField.current;\n var searchChangeSelection = this.searchChangeSelection.current;\n if (inputField && searchChangeSelection) {\n var paddingRight = searchChangeSelection.getBoundingClientRect().width;\n inputField.style.paddingRight = \"\".concat(paddingRight, \"px\");\n }\n }\n render() {\n var {\n value,\n placeholder,\n endPlaceholder,\n onBlur,\n onChange,\n className,\n disabled,\n matchCount,\n id,\n onKeyDown,\n 'data-testid': dataTestId,\n cursor\n } = this.props;\n var matchCountSection;\n var contextActions = [{\n action: () => cursor === null || cursor === void 0 ? void 0 : cursor.next('forward'),\n shortcut: GLOBAL_SHORTCUTS.NEXT\n }, {\n action: () => cursor === null || cursor === void 0 ? void 0 : cursor.next('back'),\n shortcut: GLOBAL_SHORTCUTS.PREVIOUS\n }];\n if (cursor && matchCount > 1) {\n matchCountSection = /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"search-change-button\",\n type: \"button\",\n onClick: () => {\n cursor.next('back');\n },\n icon: vsArrowLeft,\n tooltip: \"Previous match (\".concat(GLOBAL_SHORTCUTS.PREVIOUS.getDisplayText(), \")\")\n }), /*#__PURE__*/_jsxs(\"span\", {\n className: \"search-change-text\",\n children: [cursor.index !== undefined && \"\".concat(cursor.index + 1, \" of \"), matchCount]\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"search-change-button\",\n type: \"button\",\n onClick: () => {\n cursor.next('forward');\n },\n icon: vsArrowRight,\n tooltip: \"Next match (\".concat(GLOBAL_SHORTCUTS.NEXT.getDisplayText(), \")\")\n })]\n });\n } else {\n matchCountSection = matchCount > 0 && /*#__PURE__*/_jsx(\"span\", {\n className: \"search-match\",\n children: matchCount\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('search-group', className),\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"search\",\n value: value,\n onBlur: onBlur,\n onChange: onChange,\n onKeyDown: onKeyDown,\n className: \"form-control\",\n disabled: disabled,\n placeholder: placeholder,\n ref: this.inputField,\n id: id,\n \"data-testid\": dataTestId\n }), matchCount != null ? /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"search-change-selection\",\n ref: this.searchChangeSelection,\n children: matchCountSection\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n }) : /*#__PURE__*/_jsxs(\"span\", {\n className: \"search-end-content\",\n children: [(endPlaceholder !== null && endPlaceholder !== void 0 ? endPlaceholder : '') !== '' && value === '' && /*#__PURE__*/_jsx(\"span\", {\n className: \"search-end-placeholder\",\n children: endPlaceholder\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsSearch\n })]\n })]\n });\n }\n}\n_defineProperty(SearchInput, \"defaultProps\", {\n placeholder: 'Search',\n className: '',\n matchCount: null,\n onKeyDown() {\n // no-op\n },\n id: '',\n 'data-testid': undefined,\n cursor: undefined\n});\nexport default SearchInput;\n//# sourceMappingURL=SearchInput.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport debounce from 'lodash.debounce';\nimport SearchInput from \"./SearchInput.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass DebouncedSearchInput extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"searchInput\", void 0);\n this.searchInput = /*#__PURE__*/React.createRef();\n this.handleChange = this.handleChange.bind(this);\n this.sendUpdate = debounce(this.sendUpdate.bind(this), props.debounceMs);\n this.state = {\n value: props.value\n };\n }\n componentDidUpdate(prevProps) {\n var {\n value\n } = this.props;\n if (prevProps.value !== value) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n value\n });\n }\n }\n focus() {\n var _this$searchInput$cur;\n (_this$searchInput$cur = this.searchInput.current) === null || _this$searchInput$cur === void 0 || _this$searchInput$cur.focus();\n }\n handleChange(event) {\n this.setState({\n value: event.target.value\n }, this.sendUpdate);\n }\n sendUpdate() {\n var {\n onChange\n } = this.props;\n var {\n value\n } = this.state;\n onChange(value);\n }\n render() {\n var {\n placeholder,\n className,\n matchCount,\n id,\n 'data-testid': dataTestId\n } = this.props;\n var {\n value\n } = this.state;\n return /*#__PURE__*/_jsx(SearchInput, {\n value: value,\n placeholder: placeholder,\n onChange: this.handleChange,\n className: className,\n matchCount: matchCount,\n ref: this.searchInput,\n id: id,\n \"data-testid\": dataTestId\n });\n }\n}\n_defineProperty(DebouncedSearchInput, \"defaultProps\", {\n placeholder: 'Search',\n className: '',\n matchCount: null,\n debounceMs: 250,\n id: '',\n 'data-testid': undefined\n});\nexport default DebouncedSearchInput;\n//# sourceMappingURL=DebouncedSearchInput.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport \"./ItemListItem.css\";\nimport Log from '@deephaven/log';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('ItemListItem');\nclass ItemListItem extends Component {\n static handleKeyDown() {\n log.log('ItemListItem.handleKeyDown false');\n return false;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"itemRef\", void 0);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragOver = this.handleDragOver.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.handleDoubleClick = this.handleDoubleClick.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.itemRef = /*#__PURE__*/React.createRef();\n }\n handleBlur(e) {\n var {\n itemIndex,\n onBlur\n } = this.props;\n onBlur(itemIndex, e);\n }\n handleFocus(e) {\n var {\n itemIndex,\n onFocus\n } = this.props;\n onFocus(itemIndex, e);\n }\n handleClick(e) {\n var {\n itemIndex,\n onClick\n } = this.props;\n onClick(itemIndex, e);\n }\n handleContextMenu(e) {\n var {\n itemIndex,\n onContextMenu\n } = this.props;\n onContextMenu(itemIndex, e);\n }\n handleDragStart(e) {\n var {\n itemIndex,\n onDragStart\n } = this.props;\n onDragStart(itemIndex, e);\n }\n handleDrag(e) {\n var {\n itemIndex,\n onDrag\n } = this.props;\n onDrag(itemIndex, e);\n }\n handleDragOver(e) {\n // Have to call preventDefault otherwise onDrop won't get triggered\n e.preventDefault();\n var {\n itemIndex,\n onDragOver\n } = this.props;\n onDragOver(itemIndex, e);\n }\n handleDragEnd(e) {\n var {\n itemIndex,\n onDragEnd\n } = this.props;\n onDragEnd(itemIndex, e);\n }\n handleDrop(e) {\n var {\n itemIndex,\n onDrop\n } = this.props;\n onDrop(itemIndex, e);\n }\n handleDoubleClick(e) {\n var {\n itemIndex,\n onDoubleClick\n } = this.props;\n onDoubleClick(itemIndex, e);\n }\n handleMouseMove(e) {\n var {\n itemIndex,\n onMouseMove\n } = this.props;\n onMouseMove(itemIndex, e);\n }\n handleMouseDown(e) {\n var {\n itemIndex,\n onMouseDown\n } = this.props;\n onMouseDown(itemIndex, e);\n }\n handleMouseUp(e) {\n var {\n itemIndex,\n onMouseUp\n } = this.props;\n onMouseUp(itemIndex, e);\n }\n render() {\n var {\n isDraggable,\n isFocused,\n isSelected,\n style,\n children,\n 'data-testid': dataTestId\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('item-list-item', {\n active: isSelected\n }, {\n 'is-focused': isFocused\n }, {\n 'is-draggable': isDraggable\n }),\n onKeyDown: ItemListItem.handleKeyDown,\n onContextMenuCapture: this.handleContextMenu,\n onClick: this.handleClick,\n onDrag: this.handleDrag,\n onDragStart: this.handleDragStart,\n onDragOver: this.handleDragOver,\n onDragEnd: this.handleDragEnd,\n onDrop: this.handleDrop,\n onDoubleClick: this.handleDoubleClick,\n onMouseDown: this.handleMouseDown,\n onMouseMove: this.handleMouseMove,\n onMouseUp: this.handleMouseUp,\n tabIndex: -1,\n ref: this.itemRef,\n role: \"listitem\",\n style: style,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n draggable: isDraggable,\n \"data-testid\": dataTestId,\n children: children\n });\n }\n}\n_defineProperty(ItemListItem, \"defaultProps\", {\n children: null,\n isDraggable: false,\n isFocused: false,\n isSelected: false,\n itemIndex: 0,\n 'data-testid': undefined,\n onBlur() {\n // no-op\n },\n onClick() {\n // no-op\n },\n onContextMenu() {\n // no-op\n },\n onDragStart() {\n // no-op\n },\n onDrag() {\n // no-op\n },\n onDragOver() {\n // no-op\n },\n onDragEnd() {\n // no-op\n },\n onDrop() {\n // no-op\n },\n onDoubleClick() {\n // no-op\n },\n onFocus() {\n // no-op\n },\n onMouseDown() {\n // no-op\n },\n onMouseMove() {\n // no-op\n },\n onMouseUp() {\n // no-op\n },\n style: {}\n});\nexport default ItemListItem;\n//# sourceMappingURL=ItemListItem.js.map","var _ItemList;\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable react/no-unstable-nested-components */\nimport React, { PureComponent } from 'react';\nimport memoize from 'memoizee';\nimport { FixedSizeList as List } from 'react-window';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport Log from '@deephaven/log';\nimport { RangeUtils } from '@deephaven/utils';\nimport ItemListItem from \"./ItemListItem.js\";\nimport { ContextActionUtils } from \"./context-actions/index.js\";\nimport \"./ItemList.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('ItemList');\nvar MIN_DRAG_DELTA = 5;\n/**\n * Show items in a long scrollable list.\n * Can be navigated via keyboard or mouse.\n */\nexport class ItemList extends PureComponent {\n static renderItem(_ref) {\n var _ref2, _item$displayValue;\n var {\n item\n } = _ref;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"item-list-item-content\",\n children: item != null && ((_ref2 = (_item$displayValue = item.displayValue) !== null && _item$displayValue !== void 0 ? _item$displayValue : item.value) !== null && _ref2 !== void 0 ? _ref2 : \"\".concat(item))\n });\n }\n constructor(_props) {\n super(_props);\n _defineProperty(this, \"list\", void 0);\n _defineProperty(this, \"listContainer\", void 0);\n _defineProperty(this, \"getItemSelected\", memoize((index, selectedRanges) => RangeUtils.isSelected(selectedRanges, index), {\n max: ItemList.CACHE_SIZE\n }));\n _defineProperty(this, \"getCachedItem\", memoize((itemIndex, key, item, isFocused, isSelected, renderItem, style, disableSelect) => {\n var content = renderItem({\n item,\n itemIndex,\n isFocused,\n isSelected,\n style\n });\n return /*#__PURE__*/_jsx(ItemListItem, {\n onContextMenu: this.handleItemContextMenu,\n onDoubleClick: this.handleItemDoubleClick,\n onMouseDown: this.handleItemMouseDown,\n onFocus: this.handleItemFocus,\n onBlur: this.handleItemBlur,\n disableSelect: disableSelect,\n onMouseMove: this.handleItemMouseMove,\n onMouseUp: this.handleItemMouseUp,\n isFocused: isFocused,\n isSelected: isSelected,\n itemIndex: itemIndex,\n style: style,\n children: content\n }, key);\n }, {\n max: ItemList.CACHE_SIZE\n }));\n _defineProperty(this, \"getOuterElement\", memoize(onKeyDown => {\n var component = /*#__PURE__*/React.forwardRef((props, ref) =>\n /*#__PURE__*/\n // We need to add the tabIndex to make sure it is focusable, otherwise we can't get key events\n _jsx(\"div\", _objectSpread({\n ref: ref,\n tabIndex: -1,\n onKeyDown: onKeyDown,\n role: \"presentation\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, props)));\n component.displayName = 'ItemListOuterElement';\n return component;\n }, {\n max: 1000\n }));\n _defineProperty(this, \"getInnerElement\", memoize(() => {\n var component = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(\"div\", _objectSpread({\n className: \"item-list-inner-element\",\n ref: ref\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, props)));\n component.displayName = 'ItemListInnerElement';\n return component;\n }, {\n max: 1000\n }));\n _defineProperty(this, \"getItemData\", memoize((items, selectedRanges, renderItem) => ({\n items,\n selectedRanges,\n renderItem\n }), {\n max: 1000\n }));\n this.handleItemBlur = this.handleItemBlur.bind(this);\n this.handleItemContextMenu = this.handleItemContextMenu.bind(this);\n this.handleItemFocus = this.handleItemFocus.bind(this);\n this.handleItemDoubleClick = this.handleItemDoubleClick.bind(this);\n this.handleItemMouseDown = this.handleItemMouseDown.bind(this);\n this.handleItemMouseMove = this.handleItemMouseMove.bind(this);\n this.handleItemMouseUp = this.handleItemMouseUp.bind(this);\n this.handleItemsRendered = this.handleItemsRendered.bind(this);\n this.handleWindowMouseUp = this.handleWindowMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.renderInnerElement = this.renderInnerElement.bind(this);\n this.list = /*#__PURE__*/React.createRef();\n this.listContainer = /*#__PURE__*/React.createRef();\n var {\n isStickyBottom,\n selectedRanges: _selectedRanges\n } = _props;\n this.state = {\n focusIndex: null,\n mouseDownIndex: null,\n selectedRanges: _selectedRanges,\n overscanStartIndex: 0,\n height: null,\n isDragging: false,\n isStuckToBottom: isStickyBottom,\n scrollOffset: null,\n mouseX: null,\n mouseY: null\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n selectedRanges: propSelectedRanges,\n itemCount\n } = this.props;\n var {\n focusIndex,\n isStuckToBottom,\n scrollOffset,\n height,\n selectedRanges\n } = this.state;\n if (isStuckToBottom && !this.isListAtBottom() && itemCount > 0) {\n this.scrollToBottom();\n }\n if (scrollOffset !== prevState.scrollOffset || height !== prevState.height) {\n this.sendViewportUpdate();\n }\n if (propSelectedRanges !== prevProps.selectedRanges && propSelectedRanges !== selectedRanges) {\n this.setSelectedRanges(propSelectedRanges);\n } else if (selectedRanges !== prevState.selectedRanges) {\n var {\n onSelectionChange\n } = this.props;\n onSelectionChange(selectedRanges);\n }\n if (focusIndex !== prevState.focusIndex) {\n var {\n onFocusChange\n } = this.props;\n onFocusChange(focusIndex);\n }\n }\n componentWillUnmount() {\n window.removeEventListener('mouseup', this.handleWindowMouseUp);\n }\n focus() {\n var _this$listContainer$c;\n (_this$listContainer$c = this.listContainer.current) === null || _this$listContainer$c === void 0 || _this$listContainer$c.focus();\n }\n restoreScrollPosition() {\n var {\n scrollOffset\n } = this.state;\n if (scrollOffset != null) {\n var _this$listContainer$c2;\n // manually restore the scroll containers offset\n // virtual list doesn't restore scrolloffset in a re-render if it's the same\n (_this$listContainer$c2 = this.listContainer.current) === null || _this$listContainer$c2 === void 0 || _this$listContainer$c2.scrollTo(0, scrollOffset);\n }\n }\n getElement(itemIndex) {\n if (this.listContainer.current == null) {\n return null;\n }\n var {\n focusSelector\n } = this.props;\n var {\n overscanStartIndex\n } = this.state;\n var elements = this.listContainer.current.querySelectorAll(focusSelector);\n var elementIndex = itemIndex - overscanStartIndex;\n return elements[elementIndex];\n }\n focusItem(itemIndex) {\n var {\n disableSelect\n } = this.props;\n if (disableSelect) return;\n this.setState({\n focusIndex: itemIndex\n });\n var element = this.getElement(itemIndex);\n if (element instanceof HTMLElement) {\n element.focus();\n }\n }\n scrollToItem(itemIndex) {\n var element = this.getElement(itemIndex);\n if (element != null) {\n element.scrollIntoView({\n block: 'center'\n });\n }\n }\n handleItemContextMenu(itemIndex, e) {\n this.setState({\n focusIndex: itemIndex\n });\n\n // Update the selection, but don't consume the mouse event - it will trigger the context menu\n var {\n selectedRanges\n } = this.state;\n var isSelected = RangeUtils.isSelected(selectedRanges, itemIndex);\n\n // When right-clicking, we want to maintain the current selection if the right click happened within the selection even if the modifier key isn't down\n var isModifierDown = isSelected || ContextActionUtils.isModifierKeyDown(e);\n this.toggleSelect(itemIndex, e.shiftKey, isModifierDown, false);\n }\n handleItemDoubleClick(itemIndex, e) {\n var {\n isDoubleClickSelect,\n onSelect\n } = this.props;\n if (isDoubleClickSelect) {\n this.setState(_ref3 => {\n var {\n selectedRanges\n } = _ref3;\n return {\n selectedRanges: RangeUtils.selectRange(selectedRanges, [itemIndex, itemIndex])\n };\n }, () => {\n onSelect(itemIndex, e);\n });\n }\n }\n handleItemMouseDown(index, e) {\n var {\n selectedRanges\n } = this.state;\n if (e.target instanceof HTMLElement && ['button', 'select', 'input', 'textarea'].indexOf(e.target.tagName.toLowerCase()) !== -1) {\n // allow these elements to do their own behaviours\n return;\n }\n if (e.button === 2 && selectedRanges.length === 0) {\n // allow right click to act as a selection if selection is empty\n this.focusItem(index);\n this.selectItem(index);\n return;\n }\n if (e.button != null && e.button !== 0) {\n return;\n }\n this.setState({\n mouseDownIndex: index,\n mouseX: e.clientX,\n mouseY: e.clientY\n });\n window.addEventListener('mouseup', this.handleWindowMouseUp);\n\n // Leave selection until mouse up, to allow for dragging behaviour\n }\n handleItemBlur(itemIndex, e) {\n log.debug2('item blur', itemIndex, e.currentTarget, e.relatedTarget);\n if (!e.relatedTarget || this.listContainer.current && e.relatedTarget instanceof HTMLElement && !this.listContainer.current.contains(e.relatedTarget)) {\n // Next focused element is outside of the ItemList\n this.setState({\n focusIndex: null\n });\n }\n }\n handleItemFocus(itemIndex, e) {\n log.debug2('item focus', itemIndex, e.target);\n this.setState(state => {\n var {\n focusIndex\n } = state;\n if (focusIndex !== itemIndex) {\n return {\n focusIndex: itemIndex\n };\n }\n return null;\n });\n }\n handleItemMouseMove(itemIndex, e) {\n var {\n isDragSelect,\n isMultiSelect,\n disableSelect\n } = this.props;\n var {\n mouseDownIndex,\n selectedRanges,\n mouseX,\n mouseY\n } = this.state;\n if (mouseDownIndex == null || disableSelect) return;\n var mouseMoveX = Math.abs(e.clientX - (mouseX !== null && mouseX !== void 0 ? mouseX : 0));\n var mouseMoveY = Math.abs(e.clientY - (mouseY !== null && mouseY !== void 0 ? mouseY : 0));\n if (mouseMoveX > MIN_DRAG_DELTA && mouseMoveY > MIN_DRAG_DELTA) {\n this.setState({\n isDragging: true\n });\n }\n if (isDragSelect || mouseDownIndex === itemIndex) {\n this.focusItem(itemIndex);\n if (isMultiSelect) {\n if (!isDragSelect && !this.getItemSelected(itemIndex, selectedRanges) && !ContextActionUtils.isModifierKeyDown(e)) {\n // If there's already a selection and they select outside of that range while dragging without a modifier key, start a new selection with just the new item\n this.deselectAll();\n }\n this.selectRange([Math.min(mouseDownIndex, itemIndex), Math.max(mouseDownIndex, itemIndex)]);\n } else {\n this.toggleSelect(itemIndex, e.shiftKey, ContextActionUtils.isModifierKeyDown(e), false);\n }\n }\n }\n handleItemMouseUp(index, e) {\n var {\n isDeselectOnClick,\n isDoubleClickSelect,\n onSelect\n } = this.props;\n var {\n mouseDownIndex,\n isDragging\n } = this.state;\n if (e.target instanceof HTMLElement && ['button', 'select', 'input', 'textarea'].indexOf(e.target.tagName.toLowerCase()) !== -1) {\n return;\n }\n if (mouseDownIndex === index && !isDragging) {\n var isShiftDown = e.shiftKey;\n var isModifierDown = ContextActionUtils.isModifierKeyDown(e);\n this.focusItem(index);\n this.toggleSelect(index, isShiftDown, isModifierDown, isDeselectOnClick);\n if (!isDoubleClickSelect && !isShiftDown && !isModifierDown) {\n onSelect(index, e);\n }\n }\n this.resetMouseState();\n }\n handleItemsRendered(_ref4) {\n var {\n overscanStartIndex\n } = _ref4;\n this.setState({\n overscanStartIndex\n });\n }\n handleResize(_ref5) {\n var {\n height\n } = _ref5;\n this.setState({\n height\n });\n }\n handleMouseLeave() {\n this.setState({\n mouseDownIndex: null\n });\n }\n handleWindowMouseUp() {\n this.resetMouseState();\n window.removeEventListener('mouseup', this.handleWindowMouseUp);\n }\n handleKeyDown(e) {\n var {\n isMultiSelect,\n itemCount,\n onSelect\n } = this.props;\n var {\n focusIndex: oldFocus\n } = this.state;\n var newFocus = oldFocus;\n if (e.key === 'Enter' || e.key === ' ') {\n if (!isMultiSelect && newFocus != null) {\n this.setState({\n selectedRanges: [[newFocus, newFocus]]\n }, () => {\n if (newFocus != null) {\n onSelect(newFocus, e);\n }\n });\n }\n return;\n }\n if (e.key === 'ArrowUp') {\n if (newFocus != null && newFocus >= 0) {\n newFocus = Math.max(0, newFocus - 1);\n } else {\n newFocus = itemCount - 1;\n }\n } else if (e.key === 'ArrowDown') {\n if (newFocus != null && newFocus >= 0) {\n newFocus = Math.min(newFocus + 1, itemCount - 1);\n } else {\n newFocus = 0;\n }\n } else {\n return;\n }\n if (oldFocus !== newFocus) {\n e.stopPropagation();\n e.preventDefault();\n this.focusItem(newFocus);\n var {\n selectedRanges\n } = this.state;\n if (e.shiftKey && selectedRanges.length > 0) {\n var lastRange = selectedRanges[selectedRanges.length - 1];\n this.selectRange([Math.min(newFocus, lastRange[0]), Math.max(newFocus, lastRange[1])]);\n } else {\n this.deselectAll();\n if (newFocus !== null) {\n this.selectItem(newFocus);\n } else {\n var _this$listContainer$c3;\n (_this$listContainer$c3 = this.listContainer.current) === null || _this$listContainer$c3 === void 0 || _this$listContainer$c3.focus();\n }\n }\n this.scrollIntoView(newFocus);\n }\n }\n handleScroll(_ref6) {\n var {\n scrollUpdateWasRequested,\n scrollOffset\n } = _ref6;\n this.setState(state => {\n if (scrollUpdateWasRequested) {\n // The scroll was caused by scrollTo() or scrollToItem()\n // Don't re-calc isStuckToBottom\n return {\n scrollOffset\n };\n }\n var {\n isStickyBottom\n } = this.props;\n var {\n height\n } = state;\n var isStuckToBottom = isStickyBottom && this.isListAtBottom({\n scrollOffset,\n height\n });\n return {\n isStuckToBottom,\n scrollOffset\n };\n });\n }\n resetMouseState() {\n this.setState({\n mouseDownIndex: null,\n isDragging: false\n });\n }\n scrollToBottom() {\n var {\n itemCount\n } = this.props;\n if (this.list.current) {\n this.list.current.scrollToItem(itemCount);\n }\n }\n scrollIntoView(itemIndex) {\n if (this.list.current) {\n this.list.current.scrollToItem(itemIndex);\n }\n }\n\n /**\n * @param index The index to toggle selection for\n * @param isShiftDown True if the shift modifier key is down\n * @param isModifierDown True if the meta modifier key is down\n * @param isDeselectable True if item should be deselected if already selected\n */\n toggleSelect(index, isShiftDown, isModifierDown) {\n var isDeselectable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var {\n isMultiSelect\n } = this.props;\n var {\n selectedRanges\n } = this.state;\n if (isMultiSelect && isShiftDown && selectedRanges.length > 0) {\n var lastRange = selectedRanges[selectedRanges.length - 1];\n this.selectRange([Math.min(lastRange[0], index), Math.max(index, lastRange[1])]);\n } else if (isMultiSelect && selectedRanges.length === 1 && selectedRanges[0][0] === index && selectedRanges[0][1] === index) {\n if (isDeselectable) {\n this.deselectItem(index);\n }\n } else if (isMultiSelect && isModifierDown) {\n if (this.getItemSelected(index, selectedRanges)) {\n if (isDeselectable) {\n this.deselectItem(index);\n }\n } else {\n this.selectItem(index);\n }\n } else {\n this.deselectAll();\n this.selectItem(index);\n }\n }\n deselectAll() {\n var {\n itemCount\n } = this.props;\n this.deselectRange([0, itemCount]);\n }\n deselectItem(index) {\n this.deselectRange([index, index]);\n }\n deselectRange(range) {\n RangeUtils.validateRange(range);\n this.setState(_ref7 => {\n var {\n selectedRanges\n } = _ref7;\n return {\n selectedRanges: RangeUtils.deselectRange(selectedRanges, range)\n };\n });\n }\n selectItem(index) {\n var {\n disableSelect\n } = this.props;\n if (disableSelect) return;\n this.selectRange([index, index]);\n }\n selectRange(range) {\n RangeUtils.validateRange(range);\n this.setState(_ref8 => {\n var {\n selectedRanges\n } = _ref8;\n return {\n selectedRanges: RangeUtils.selectRange(selectedRanges, range)\n };\n });\n }\n setSelectedRanges(selectedRanges) {\n this.setState({\n selectedRanges\n });\n }\n sendViewportUpdate() {\n var {\n scrollOffset,\n height\n } = this.state;\n if (scrollOffset != null && height != null) {\n var {\n onViewportChange,\n rowHeight\n } = this.props;\n var topRow = Math.floor(scrollOffset / rowHeight);\n var bottomRow = topRow + Math.ceil(height / rowHeight);\n onViewportChange(topRow, bottomRow);\n }\n }\n isListAtBottom() {\n var {\n scrollOffset,\n height\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;\n if (height == null || scrollOffset == null) {\n return false;\n }\n var {\n itemCount,\n rowHeight\n } = this.props;\n return scrollOffset + height >= itemCount * rowHeight;\n }\n renderInnerElement(_ref9) {\n var {\n index: itemIndex,\n style\n } = _ref9;\n var {\n items,\n offset,\n renderItem,\n disableSelect\n } = this.props;\n var {\n focusIndex,\n selectedRanges\n } = this.state;\n if (itemIndex < offset || itemIndex >= offset + items.length) {\n return null;\n }\n var item = items[itemIndex - offset];\n return this.getCachedItem(itemIndex, itemIndex, item, itemIndex === focusIndex && !disableSelect, this.getItemSelected(itemIndex, selectedRanges), renderItem, style, disableSelect);\n }\n render() {\n var {\n items,\n itemCount,\n overscanCount,\n renderItem,\n rowHeight,\n 'data-testid': dataTestId\n } = this.props;\n var {\n selectedRanges,\n isStuckToBottom\n } = this.state;\n return /*#__PURE__*/_jsx(AutoSizer, {\n className: \"item-list-auto-sizer\",\n onResize: this.handleResize,\n children: _ref0 => {\n var {\n width,\n height\n } = _ref0;\n return /*#__PURE__*/_jsx(List, {\n className: \"item-list-scroll-pane\",\n height: height,\n width: width,\n initialScrollOffset: isStuckToBottom ? itemCount * rowHeight : 0,\n itemCount: itemCount,\n itemSize: rowHeight\n // This prop isn't actually used by us, it is passed to the render function by react-window\n // Used here to force a re-render of the List component.\n // Otherwise it doesn't know to call the render again when selection or renderItem changes\n ,\n itemData: this.getItemData(items, selectedRanges, renderItem),\n onScroll: this.handleScroll,\n onItemsRendered: this.handleItemsRendered,\n ref: this.list,\n outerElementType: this.getOuterElement(this.handleKeyDown),\n outerRef: this.listContainer,\n innerElementType: this.getInnerElement(),\n overscanCount: overscanCount,\n \"data-testid\": dataTestId,\n children: this.renderInnerElement\n });\n }\n });\n }\n}\n_ItemList = ItemList;\n_defineProperty(ItemList, \"CACHE_SIZE\", 1000);\n_defineProperty(ItemList, \"DEFAULT_ROW_HEIGHT\", 20);\n// By drawing an additional 10 items on each side, tab/keyboard navigation works better (as the next element exists)\n_defineProperty(ItemList, \"DEFAULT_OVERSCAN\", 10);\n_defineProperty(ItemList, \"defaultProps\", {\n offset: 0,\n items: [],\n rowHeight: _ItemList.DEFAULT_ROW_HEIGHT,\n isDeselectOnClick: true,\n isDoubleClickSelect: false,\n isDragSelect: true,\n isMultiSelect: false,\n isStickyBottom: false,\n disableSelect: false,\n onFocusChange() {\n // no-op\n },\n onSelect() {\n // no-op\n },\n onSelectionChange() {\n // no-op\n },\n onViewportChange() {\n // no-op\n },\n overscanCount: _ItemList.DEFAULT_OVERSCAN,\n renderItem: _ItemList.renderItem,\n selectedRanges: [],\n focusSelector: '.item-list-item',\n 'data-testid': undefined\n});\nexport default ItemList;\n//# sourceMappingURL=ItemList.js.map","import Log from '@deephaven/log';\nimport React, { Component } from 'react';\nimport LoadingOverlay from \"./LoadingOverlay.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('ErrorBoundary');\n/**\n * Error boundary for catching render errors in React. Displays an error message if an error is caught by default, or you can specify a fallback component to render.\n * https://react.dev/reference/react/Component#catching-rendering-errors-with-an-error-boundary\n */\nexport class ErrorBoundary extends Component {\n static getDerivedStateFromError(error) {\n return {\n error\n };\n }\n constructor(props) {\n super(props);\n this.state = {\n error: undefined\n };\n }\n componentDidCatch(error, errorInfo) {\n var {\n onError\n } = this.props;\n log.error('Error caught by ErrorBoundary', error, errorInfo);\n onError === null || onError === void 0 || onError(error, errorInfo);\n }\n render() {\n var {\n children,\n className,\n fallback\n } = this.props;\n var {\n error\n } = this.state;\n if (error != null) {\n if (fallback != null) {\n return fallback;\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: className,\n children: /*#__PURE__*/_jsx(LoadingOverlay, {\n errorMessage: \"\".concat(error),\n isLoading: false,\n isLoaded: false,\n \"data-testid\": \"error-boundary-loading\"\n })\n });\n }\n\n // We need to check for undefined children because React will throw an error if we return undefined from a render method\n // Note this behaviour was changed in React 18: https://github.com/reactwg/react-18/discussions/75\n return children !== null && children !== void 0 ? children : null;\n }\n}\nexport default ErrorBoundary;\n//# sourceMappingURL=ErrorBoundary.js.map","import React from 'react';\nimport classNames from 'classnames';\nimport \"./UISwitch.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction UISwitch(_ref) {\n var {\n on,\n id,\n className,\n isInvalid,\n disabled = false,\n onClick,\n 'data-testid': dataTestId\n } = _ref;\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/control-has-associated-label\n _jsx(\"button\", {\n type: \"button\",\n className: classNames('btn', 'btn-switch', className, {\n active: on\n }, {\n 'is-invalid': isInvalid\n }),\n id: id,\n onClick: onClick,\n disabled: disabled,\n \"data-testid\": dataTestId,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"handle\"\n })\n })\n );\n}\nexport default UISwitch;\n//# sourceMappingURL=UISwitch.js.map","var _excluded = [\"children\", \"className\", \"isInvalid\", \"onChange\", \"data-testid\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport { useForwardedRef } from '@deephaven/react-hooks';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A custom select component with styling, which is a wrapper around the\n * native select element.\n * @param props.onChange returns a string value and not the event\n */\n\nvar Select = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {\n var {\n children,\n className,\n isInvalid,\n onChange,\n 'data-testid': dataTestId\n } = props,\n rest = _objectWithoutProperties(props, _excluded);\n var ref = useForwardedRef(forwardedRef);\n var handleChange = useCallback(event => {\n onChange(event.target.value);\n }, [onChange]);\n return /*#__PURE__*/_jsx(\"select\", _objectSpread(_objectSpread({\n ref: ref,\n className: classNames('custom-select', className, {\n 'is-invalid': isInvalid\n }),\n onChange: handleChange,\n \"data-testid\": dataTestId\n // eslint-disable-next-line react/jsx-props-no-spreading\n }, rest), {}, {\n children: children\n }));\n});\nSelect.displayName = 'Select';\nexport default Select;\n//# sourceMappingURL=Select.js.map","import React, { useContext } from 'react';\n\n/** Type for an extended component. Can fetch the original component using `.Original` */\n\nexport var XComponentMapContext = /*#__PURE__*/React.createContext(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nnew Map());\nXComponentMapContext.displayName = 'XComponentMapContext';\nexport var XComponentMapProvider = XComponentMapContext.Provider;\n\n/**\n * Use the replacement component for the provided component if it exists, or just return the provided component.\n * @param Component Component to check if there's a replacement for\n * @returns The replacement component if it exists, otherwise the original component\n */\nexport function useXComponent(Component) {\n var _ctx$get;\n var ctx = useContext(XComponentMapContext);\n return (_ctx$get = ctx.get(Component)) !== null && _ctx$get !== void 0 ? _ctx$get : Component.Original;\n}\n//# sourceMappingURL=XComponentMap.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { forwardRef } from 'react';\nimport { canHaveRef } from \"./ComponentUtils.js\";\nimport { useXComponent } from \"./XComponentMap.js\";\n/**\n * Helper function that will wrap the provided component, and return an ExtendableComponent type.\n * Whenever that ExtendableComponent is used, it will check if there is a replacement component for the provided component on the context.\n * If there is, it will use that component instead of the provided component.\n * This is a similar concept to how swizzling is done in Docusaurus or obj-c, but for any React component.\n *\n * Usage:\n *\n * ```tsx\n * function MyComponent() {\n * return <div>MyComponent</div>;\n * }\n *\n * const XMyComponent = extendableComponent(MyComponent);\n *\n * function MyReplacementComponent() {\n * return <div>MyReplacementComponent</div>;\n * }\n *\n * <XMyComponent /> // Will render MyComponent\n *\n * <XComponentMapProvider value={new Map([[XMyComponent, MyReplacementComponent]])}>\n * <XMyComponent /> // Will render MyReplacementComponent\n * </XComponentMapProvider>\n *\n * ```\n *\n * Is useful in cases where we have a component deep down in the component tree that we want to replace with a different component, but don't want to\n * have to provide props at the top level just to hook into that.\n *\n * @param Component The component to wrap\n * @returns The wrapped component\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function createXComponent(Component) {\n var _Component$displayNam;\n var forwardedRefComponent;\n function XComponent(props, ref) {\n var ReplacementComponent = useXComponent(forwardedRefComponent);\n return canHaveRef(Component) ?\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n _jsx(ReplacementComponent, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref\n })) :\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n _jsx(ReplacementComponent, _objectSpread({}, props));\n }\n\n // Add the display name so this appears as a tag in the React DevTools\n // Need to add it here, and then when it's wrapped with the `forwardRef` it will automatically get the display name of the original component\n XComponent.displayName = \"XComponent(\".concat((_Component$displayNam = Component.displayName) !== null && _Component$displayNam !== void 0 ? _Component$displayNam : Component.name, \")\");\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n forwardedRefComponent = /*#__PURE__*/forwardRef(XComponent);\n forwardedRefComponent.Original = Component;\n forwardedRefComponent.isXComponent = true;\n return forwardedRefComponent;\n}\nexport default createXComponent;\n//# sourceMappingURL=XComponent.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ApiContext } from \"./ApiBootstrap.js\";\n/**\n * Retrieve the API for the current context.\n * @returns The API instance from the nearest ApiContext.Provider, or throws if none is set\n */\nexport function useApi() {\n return useContextOrThrow(ApiContext, 'No API available in useApi. Was code wrapped in ApiBootstrap or ApiContext.Provider?');\n}\nexport default useApi;\n//# sourceMappingURL=useApi.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { createContext } from 'react';\n\n/**\n * Descriptor for a variable by name. Used when needed to fetch an object.\n */\n\n/**\n * Descriptor for a variable by id. Used when needed to fetch an object.\n */\n\nexport function isNameVariableDescriptor(value) {\n return typeof value === 'object' && value != null && typeof value.type === 'string' && value.name != null;\n}\nexport function isIdVariableDescriptor(value) {\n return typeof value === 'object' && value != null && typeof value.type === 'string' && value.id != null;\n}\nexport function isVariableDescriptor(value) {\n return isNameVariableDescriptor(value) || isIdVariableDescriptor(value);\n}\n\n/**\n * Function to fetch an object based on a provided descriptor object.\n * @param descriptor Descriptor object or URI to fetch the object from. Can be extended by a specific implementation to\n * include additional fields (such as a session ID) to uniquely identify an object.\n */\n\nexport var ObjectFetcherContext = /*#__PURE__*/createContext(null);\nObjectFetcherContext.displayName = 'ObjectFetcherContext';\n\n/**\n * Gets a descriptor that only has the ID or name set, but not both.\n * API will throw an error if both are set when fetching from the connection.\n * @param descriptor Variable descriptor to sanitize\n * @returns Descriptor object that has either the ID or name set, but not both.\n */\nexport function sanitizeVariableDescriptor(descriptor) {\n // Can't use a spread operator because of how the GWT compiled code defines properties on the object: https://github.com/gwtproject/gwt/issues/9913\n if (isIdVariableDescriptor(descriptor)) {\n return {\n id: descriptor.id,\n type: descriptor.type\n };\n }\n if (isNameVariableDescriptor(descriptor)) {\n var _descriptor$name;\n return {\n name: (_descriptor$name = descriptor.name) !== null && _descriptor$name !== void 0 ? _descriptor$name : '',\n type: descriptor.type\n };\n }\n throw new Error(\"Invalid descriptor: \".concat(descriptor));\n}\n\n/**\n * Get the variable descriptor for a definition.\n * @param definition Definition to get the variable descriptor from\n * @returns Serializable VariableDescriptor object\n */\nexport function getVariableDescriptor(definition) {\n var _definition$type, _definition$title;\n return {\n type: (_definition$type = definition.type) !== null && _definition$type !== void 0 ? _definition$type : '',\n name: (_definition$title = definition.title) !== null && _definition$title !== void 0 ? _definition$title : definition.name,\n id: definition.id\n };\n}\n\n/**\n * Use a function to fetch an object based on provided metadata\n * @returns Function to asynchronously fetch an object based on provided metadata\n */\nexport function useObjectFetcher() {\n return useContextOrThrow(ObjectFetcherContext, 'No ObjectFetcher available in useObjectFetcher. Was code wrapped in ObjectFetcherContext.Provider?');\n}\n//# sourceMappingURL=useObjectFetcher.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { memoize } from 'proxy-memoize';\nvar EMPTY_OBJECT = Object.freeze({});\nvar EMPTY_MAP = new Map();\nexport var getApi = store => store.api;\n\n// User\nexport var getUser = store => store.user;\nexport var getUserName = store => getUser(store).name;\nexport var getUserGroups = store => getUser(store).groups;\n\n// Storage\nexport var getStorage = store => store.storage;\nexport var getCommandHistoryStorage = store => getStorage(store).commandHistoryStorage;\nexport var getFileStorage = store => getStorage(store).fileStorage;\nexport var getWorkspaceStorage = store => getStorage(store).workspaceStorage;\nexport var getDefaultWorkspaceSettings = store => store.defaultWorkspaceSettings;\n\n// Workspace\nexport var getWorkspace = store => {\n var {\n workspace\n } = store;\n return workspace;\n};\n\n// Settings\nexport var getSettings = memoize(store => {\n var _getWorkspace$data$se, _getWorkspace;\n var customizedSettings = (_getWorkspace$data$se = (_getWorkspace = getWorkspace(store)) === null || _getWorkspace === void 0 ? void 0 : _getWorkspace.data.settings) !== null && _getWorkspace$data$se !== void 0 ? _getWorkspace$data$se : {};\n var settings = _objectSpread({}, getDefaultWorkspaceSettings(store));\n var keys = Object.keys(customizedSettings);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (customizedSettings[key] !== undefined) {\n // @ts-expect-error assign non-undefined customized settings to settings\n settings[key] = customizedSettings[key];\n }\n }\n return settings;\n});\nexport var getDefaultSettings = store => store.defaultWorkspaceSettings;\nexport var getDefaultDateTimeFormat = store => getSettings(store).defaultDateTimeFormat;\nexport var getDefaultDecimalFormatOptions = store => {\n var _getSettings$defaultD;\n return (_getSettings$defaultD = getSettings(store).defaultDecimalFormatOptions) !== null && _getSettings$defaultD !== void 0 ? _getSettings$defaultD : EMPTY_OBJECT;\n};\nexport var getDefaultIntegerFormatOptions = store => {\n var _getSettings$defaultI;\n return (_getSettings$defaultI = getSettings(store).defaultIntegerFormatOptions) !== null && _getSettings$defaultI !== void 0 ? _getSettings$defaultI : EMPTY_OBJECT;\n};\nexport var getFormatter = store => {\n var _getSettings$formatte;\n return (_getSettings$formatte = getSettings(store).formatter) !== null && _getSettings$formatte !== void 0 ? _getSettings$formatte : [];\n};\nexport var getTimeZone = store => getSettings(store).timeZone;\nexport var getShowTimeZone = store => getSettings(store).showTimeZone;\nexport var getShowTSeparator = store => getSettings(store).showTSeparator;\nexport var getTruncateNumbersWithPound = store => getSettings(store).truncateNumbersWithPound;\nexport var getShowEmptyStrings = store => getSettings(store).showEmptyStrings;\nexport var getShowNullStrings = store => getSettings(store).showNullStrings;\nexport var getShowExtraGroupColumn = store => getSettings(store).showExtraGroupColumn;\nexport var getDisableMoveConfirmation = store => getSettings(store).disableMoveConfirmation === true;\nexport var getShortcutOverrides = store => getSettings(store).shortcutOverrides;\nexport var getWebGL = store => getSettings(store).webgl;\nexport var getWebGLEditable = store => getSettings(store).webglEditable;\nexport var getNotebookSettings = store => {\n var _getSettings$notebook;\n return (_getSettings$notebook = getSettings(store).notebookSettings) !== null && _getSettings$notebook !== void 0 ? _getSettings$notebook : EMPTY_OBJECT;\n};\nexport var getActiveTool = store => store.activeTool;\n\n/**\n * @deprecated Use `usePlugins` hook instead or `PluginsContext` directly\n * @param store Redux store\n * @returns Plugins map\n */\nexport var getPlugins = store => {\n var _store$plugins;\n return (_store$plugins = store.plugins) !== null && _store$plugins !== void 0 ? _store$plugins : EMPTY_MAP;\n};\n//# sourceMappingURL=selectors.js.map","export var SAVE_WORKSPACE = 'SAVE_WORKSPACE';\nexport var SET_ACTIVE_TOOL = 'SET_ACTIVE_TOOL';\nexport var SET_API = 'SET_API';\nexport var SET_COMMAND_HISTORY_STORAGE = 'SET_COMMAND_HISTORY_STORAGE';\nexport var SET_DASHBOARD_STORAGE = 'SET_DASHBOARD_STORAGE';\nexport var SET_FILE_STORAGE = 'SET_FILE_STORAGE';\nexport var SET_PLUGINS = 'SET_PLUGINS';\nexport var SET_USER = 'SET_USER';\nexport var SET_WORKSPACE = 'SET_WORKSPACE';\nexport var SET_DEFAULT_WORKSPACE_SETTINGS = 'SET_DEFAULT_WORKSPACE_SETTINGS';\nexport var SET_WORKSPACE_STORAGE = 'SET_WORKSPACE_STORAGE';\nexport var SET_SERVER_CONFIG_VALUES = 'SET_SERVER_CONFIG_VALUES';\n//# sourceMappingURL=actionTypes.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { SET_PLUGINS, SET_USER, SET_WORKSPACE, SET_COMMAND_HISTORY_STORAGE, SET_WORKSPACE_STORAGE, SET_ACTIVE_TOOL, SET_FILE_STORAGE, SET_SERVER_CONFIG_VALUES, SET_API, SET_DEFAULT_WORKSPACE_SETTINGS } from \"./actionTypes.js\";\nimport { getSettings } from \"./selectors.js\";\nexport var setUser = user => ({\n type: SET_USER,\n payload: user\n});\nexport var setApi = api => ({\n type: SET_API,\n payload: api\n});\nexport var setWorkspace = workspace => ({\n type: SET_WORKSPACE,\n payload: workspace\n});\nexport var setDefaultWorkspaceSettings = settings => ({\n type: SET_DEFAULT_WORKSPACE_SETTINGS,\n payload: settings\n});\nexport var setWorkspaceStorage = workspaceStorage => ({\n type: SET_WORKSPACE_STORAGE,\n payload: workspaceStorage\n});\nexport var setCommandHistoryStorage = commandHistoryStorage => ({\n type: SET_COMMAND_HISTORY_STORAGE,\n payload: commandHistoryStorage\n});\nexport var setFileStorage = fileStorage => ({\n type: SET_FILE_STORAGE,\n payload: fileStorage\n});\n\n/**\n * Sets the specified workspace locally and saves it remotely\n * @param workspace The workspace to save\n */\nexport var saveWorkspace = workspace => (dispatch, getState) => {\n dispatch(setWorkspace(workspace));\n var {\n storage\n } = getState();\n var {\n workspaceStorage\n } = storage;\n return workspaceStorage === null || workspaceStorage === void 0 ? void 0 : workspaceStorage.save(workspace);\n};\n\n/**\n * Update part of the workspace data and save it\n * @param workspaceData The properties to update in workspace data\n */\nexport var updateWorkspaceData = workspaceData => (dispatch, getState) => {\n var {\n workspace\n } = getState();\n var {\n data\n } = workspace !== null && workspace !== void 0 ? workspace : {};\n var newWorkspace = _objectSpread(_objectSpread({}, workspace), {}, {\n data: _objectSpread(_objectSpread(_objectSpread({}, data), workspaceData), {}, {\n settings: _objectSpread(_objectSpread({}, data === null || data === void 0 ? void 0 : data.settings), workspaceData.settings)\n })\n });\n return dispatch(saveWorkspace(newWorkspace));\n};\nexport var updateNotebookSettings = settings => (dispatch, getState) => {\n var {\n notebookSettings\n } = getSettings(getState());\n var newNotebookSettings = _objectSpread(_objectSpread({}, notebookSettings), settings);\n return dispatch(updateSettings({\n notebookSettings: newNotebookSettings\n }));\n};\n\n/**\n * Sets the specified settings locally and saves them remotely\n * @param settings The settings to save\n */\nexport var updateSettings = settings => dispatch => dispatch(updateWorkspaceData({\n settings\n}));\nexport var setActiveTool = payload => ({\n type: SET_ACTIVE_TOOL,\n payload\n});\nexport var setPlugins = plugins => ({\n type: SET_PLUGINS,\n payload: plugins\n});\nexport var setServerConfigValues = config => ({\n type: SET_SERVER_CONFIG_VALUES,\n payload: config\n});\n//# sourceMappingURL=actions.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport deepEqual from 'fast-deep-equal';\n/**\n * Setup a replace reducer for a specific action type.\n * Will take the payload passed in and replace the entity at the id with the payload\n * @param type The action type\n */\nexport default function replaceByIdReducer(type) {\n var initialState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var checkIfChanged = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n switch (action === null || action === void 0 ? void 0 : action.type) {\n case type:\n {\n var {\n id,\n payload\n } = action;\n if (checkIfChanged && deepEqual({\n payload\n }, {\n payload: state[id]\n })) {\n return state;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n [id]: payload\n });\n }\n default:\n return state;\n }\n };\n}\n//# sourceMappingURL=replaceByIdReducer.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * A registry for registering reducers. Whenever a new reducer is added,\n * the reducers should be replaced in the store.\n *\n * See this blog post for some notes on redux modules/code splitting\n * http://nicolasgallagher.com/redux-modules-and-code-splitting/\n */\nexport class ReducerRegistry {\n constructor() {\n _defineProperty(this, \"reducers\", {});\n _defineProperty(this, \"listener\", null);\n }\n register(name, reducer) {\n var _this$listener;\n this.reducers = _objectSpread(_objectSpread({}, this.reducers), {}, {\n [name]: reducer\n });\n (_this$listener = this.listener) === null || _this$listener === void 0 || _this$listener.call(this, this.reducers);\n }\n setListener(listener) {\n this.listener = listener;\n }\n}\nvar reducerRegistry = new ReducerRegistry();\nexport default reducerRegistry;\n//# sourceMappingURL=reducerRegistry.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n/**\n * Default column data formatter. Just interpolates the value as a string and returns.\n * Extend this class and register with TableUtils to make use of it.\n */\n\nexport class TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n return true;\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n throw new Error('isSameFormat not implemented');\n }\n\n /**\n * Create and return a Format object\n * @param label The label of the format object\n * @param formatString Format string to use for the format\n * @param type The type of column to use for this format\n * @returns A format object\n */\n static makeFormat(label, formatString, type) {\n return {\n label,\n formatString,\n type\n };\n }\n\n /**\n * @param value The value to format\n * @param format Optional format object with value transformation options\n * @returns String the formatted text string of the value passed in.\n */\n format(value, format) {\n return '';\n }\n}\n_defineProperty(TableColumnFormatter, \"TYPE_GLOBAL\", 'type-global');\n_defineProperty(TableColumnFormatter, \"TYPE_CONTEXT_PRESET\", 'type-context-preset');\n_defineProperty(TableColumnFormatter, \"TYPE_CONTEXT_CUSTOM\", 'type-context-custom');\nexport default TableColumnFormatter;\n//# sourceMappingURL=TableColumnFormatter.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('DateTimeColumnFormatter');\nexport class DateTimeColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.DateTimeFormat.format(format.formatString, new Date());\n return true;\n } catch (e) {\n return false;\n }\n }\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n return {\n label,\n formatString,\n type\n };\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA !== null && formatB !== null && formatA.type === formatB.type && formatA.formatString === formatB.formatString;\n }\n static makeGlobalFormatStringMap(showTimeZone, showTSeparator) {\n var separator = showTSeparator ? \"'T'\" : ' ';\n var tz = showTimeZone ? ' z' : '';\n return new Map([['yyyy-MM-dd HH:mm:ss', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSS\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSSSSSSSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSSSSSSSS\").concat(tz)]]);\n }\n static getGlobalFormats(showTimeZone, showTSeparator) {\n var formatStringMap = DateTimeColumnFormatter.makeGlobalFormatStringMap(showTimeZone, showTSeparator);\n return [...formatStringMap.keys()];\n }\n static makeFormatStringMap(showTimeZone, showTSeparator) {\n var separator = showTSeparator !== undefined && showTSeparator ? \"'T'\" : ' ';\n var tz = showTimeZone !== undefined && showTimeZone ? ' z' : '';\n return new Map([['yyyy-MM-dd', \"yyyy-MM-dd\".concat(tz)], ['MM-dd-yyyy', \"MM-dd-yyyy\".concat(tz)], ['HH:mm:ss', \"HH:mm:ss\".concat(tz)], ['HH:mm:ss.SSS', \"HH:mm:ss.SSS\".concat(tz)], ['HH:mm:ss.SSSSSSSSS', \"HH:mm:ss.SSSSSSSSS\".concat(tz)], ['yyyy-MM-dd HH:mm:ss', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSS\").concat(tz)], ['yyyy-MM-dd HH:mm:ss.SSSSSSSSS', \"yyyy-MM-dd\".concat(separator, \"HH:mm:ss.SSSSSSSSS\").concat(tz)]]);\n }\n static getFormats(showTimeZone, showTSeparator) {\n var formatStringMap = DateTimeColumnFormatter.makeFormatStringMap(showTimeZone, showTSeparator);\n return [...formatStringMap.keys()];\n }\n constructor(dh) {\n var {\n timeZone: timeZoneParam = '',\n showTimeZone = true,\n showTSeparator = false,\n defaultDateTimeFormatString = DateTimeColumnFormatter.DEFAULT_DATETIME_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"dhTimeZone\", void 0);\n _defineProperty(this, \"defaultDateTimeFormatString\", void 0);\n _defineProperty(this, \"showTimeZone\", void 0);\n _defineProperty(this, \"showTSeparator\", void 0);\n _defineProperty(this, \"formatStringMap\", void 0);\n var timeZone = timeZoneParam || DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID;\n try {\n this.dhTimeZone = dh.i18n.TimeZone.getTimeZone(timeZone);\n } catch (e) {\n log.error('Unsupported time zone id', timeZone);\n this.dhTimeZone = dh.i18n.TimeZone.getTimeZone(DateTimeColumnFormatter.DEFAULT_TIME_ZONE_ID);\n }\n this.dh = dh;\n this.defaultDateTimeFormatString = defaultDateTimeFormatString;\n this.showTimeZone = showTimeZone;\n this.showTSeparator = showTSeparator;\n this.formatStringMap = DateTimeColumnFormatter.makeFormatStringMap(showTimeZone, showTSeparator);\n }\n getEffectiveFormatString(baseFormatString) {\n var _this$formatStringMap;\n return (_this$formatStringMap = this.formatStringMap.get(baseFormatString)) !== null && _this$formatStringMap !== void 0 ? _this$formatStringMap : baseFormatString;\n }\n format(value) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var baseFormatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultDateTimeFormatString;\n var formatString = this.getEffectiveFormatString(baseFormatString);\n try {\n return this.dh.i18n.DateTimeFormat.format(formatString, value, this.dhTimeZone);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_defineProperty(DateTimeColumnFormatter, \"DEFAULT_DATETIME_FORMAT_STRING\", 'yyyy-MM-dd HH:mm:ss.SSS');\n_defineProperty(DateTimeColumnFormatter, \"DEFAULT_TIME_ZONE_ID\", 'America/New_York');\nexport default DateTimeColumnFormatter;\n//# sourceMappingURL=DateTimeColumnFormatter.js.map","var _DecimalColumnFormatter;\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('DecimalColumnFormatter');\nexport class DecimalColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.NumberFormat.format(format.formatString, 0);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Create a DecimalColumnFormat object with the parameters specified\n * @param label Label for the format\n * @param formatString Format string for the format\n * @param multiplier Optional multiplier for the formatter\n * @param type Type of format created\n * @returns DecimalColumnFormat object\n */\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n var multiplier = arguments.length > 3 ? arguments[3] : undefined;\n return {\n label,\n type,\n formatString,\n multiplier\n };\n }\n\n /**\n * Convenient function to create a DecimalFormatObject with Preset type set\n * @param label Label for this format object\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns DecimalColumnFormat object\n */\n static makePresetFormat(label) {\n var formatString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var multiplier = arguments.length > 2 ? arguments[2] : undefined;\n return DecimalColumnFormatter.makeFormat(label, formatString, TableColumnFormatter.TYPE_CONTEXT_PRESET, multiplier);\n }\n\n /**\n * Convenient function to create a DecimalFormatObject with a default 'Custom Format' label and Custom type\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns DecimalColumnFormat object\n */\n static makeCustomFormat() {\n var formatString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var multiplier = arguments.length > 1 ? arguments[1] : undefined;\n return DecimalColumnFormatter.makeFormat('Custom Format', formatString, TableColumnFormatter.TYPE_CONTEXT_CUSTOM, multiplier);\n }\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA != null && formatB != null && formatA.type === formatB.type && formatA.formatString === formatB.formatString && formatA.multiplier === formatB.multiplier;\n }\n constructor(dh) {\n var {\n defaultFormatString = DecimalColumnFormatter.DEFAULT_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"defaultFormatString\", void 0);\n _defineProperty(this, \"dh\", void 0);\n this.dh = dh;\n this.defaultFormatString = defaultFormatString;\n }\n\n /**\n * Format a value with the provided format object\n * @param valueParam Value to format\n * @param format Format object\n * @returns Formatted string\n */\n format(valueParam) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultFormatString;\n var value = format.multiplier != null && format.multiplier !== 0 ? valueParam * format.multiplier : valueParam;\n try {\n return this.dh.i18n.NumberFormat.format(formatString, value);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_DecimalColumnFormatter = DecimalColumnFormatter;\n_defineProperty(DecimalColumnFormatter, \"DEFAULT_FORMAT_STRING\", '###,##0.0000');\n_defineProperty(DecimalColumnFormatter, \"FORMAT_PERCENT\", _DecimalColumnFormatter.makePresetFormat('Percent', '##0.00%'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_BASIS_POINTS\", _DecimalColumnFormatter.makePresetFormat('Basis Points', '###,##0 bp', 10000));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_THOUSANDS\", _DecimalColumnFormatter.makePresetFormat('Thousands', '##0.000 k', 0.001));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_MILLIONS\", _DecimalColumnFormatter.makePresetFormat('Millions', '###,##0.000 mm', 0.000001));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_SCIENTIFIC_NOTATION\", _DecimalColumnFormatter.makePresetFormat('Scientific Notation', '0.0000E0'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND\", _DecimalColumnFormatter.makePresetFormat('Round', '###,##0'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND_TWO_DECIMALS\", _DecimalColumnFormatter.makePresetFormat('0.00', '###,##0.00'));\n_defineProperty(DecimalColumnFormatter, \"FORMAT_ROUND_FOUR_DECIMALS\", _DecimalColumnFormatter.makePresetFormat('0.0000', '###,##0.0000'));\nexport default DecimalColumnFormatter;\n//# sourceMappingURL=DecimalColumnFormatter.js.map","var _IntegerColumnFormatter;\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint class-methods-use-this: \"off\" */\n\nimport Log from '@deephaven/log';\nimport TableColumnFormatter from \"./TableColumnFormatter.js\";\nvar log = Log.module('IntegerColumnFormatter');\n/** Column formatter for integers/whole numbers */\nexport class IntegerColumnFormatter extends TableColumnFormatter {\n /**\n * Validates format object\n * @param dh JSAPI instance\n * @param format Format object\n * @returns true for valid object\n */\n static isValid(dh, format) {\n if (format.formatString == null) {\n return false;\n }\n try {\n dh.i18n.NumberFormat.format(format.formatString, 0);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Create an IntegerColumnFormat object with the parameters specified\n * @param label Label for the format\n * @param formatString Format string for the format\n * @param multiplier Optional multiplier for the formatter\n * @param type Type of format created\n * @returns IntegerColumnFormat object\n */\n static makeFormat(label, formatString) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : TableColumnFormatter.TYPE_CONTEXT_PRESET;\n var multiplier = arguments.length > 3 ? arguments[3] : undefined;\n return {\n label,\n type,\n formatString,\n multiplier\n };\n }\n\n /**\n * Convenient function to create a IntegerFormatObject with Preset type set\n * @param label Label for this format object\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns IntegerColumnFormat object\n */\n static makePresetFormat(label) {\n var formatString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var multiplier = arguments.length > 2 ? arguments[2] : undefined;\n return IntegerColumnFormatter.makeFormat(label, formatString, TableColumnFormatter.TYPE_CONTEXT_PRESET, multiplier);\n }\n\n /**\n * Convenient function to create a IntegerFormatObject with a default 'Custom Format' label and Custom type\n * @param formatString Format string to use\n * @param multiplier Multiplier to use\n * @returns IntegerColumnFormat object\n */\n static makeCustomFormat() {\n var formatString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var multiplier = arguments.length > 1 ? arguments[1] : undefined;\n return IntegerColumnFormatter.makeFormat('Custom Format', formatString, TableColumnFormatter.TYPE_CONTEXT_CUSTOM, multiplier);\n }\n\n /**\n * Check if the given formats match\n * @param formatA format object to check\n * @param formatB format object to check\n * @returns True if the formats match\n */\n static isSameFormat(formatA, formatB) {\n return formatA === formatB || formatA != null && formatB != null && formatA.type === formatB.type && formatA.formatString === formatB.formatString && formatA.multiplier === formatB.multiplier;\n }\n constructor(dh) {\n var {\n defaultFormatString = IntegerColumnFormatter.DEFAULT_FORMAT_STRING\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n _defineProperty(this, \"dh\", void 0);\n _defineProperty(this, \"defaultFormatString\", void 0);\n this.dh = dh;\n this.defaultFormatString = defaultFormatString;\n }\n\n /**\n * Format a value with the provided format object\n * @param valueParam Value to format\n * @param format Format object\n * @returns Formatted string\n */\n format(valueParam) {\n var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formatString = format.formatString != null && format.formatString !== '' ? format.formatString : this.defaultFormatString;\n var value = format.multiplier != null && format.multiplier !== 0 ? valueParam * format.multiplier : valueParam;\n try {\n return this.dh.i18n.NumberFormat.format(formatString, value);\n } catch (e) {\n log.error('Invalid format arguments');\n }\n return '';\n }\n}\n_IntegerColumnFormatter = IntegerColumnFormatter;\n_defineProperty(IntegerColumnFormatter, \"DEFAULT_FORMAT_STRING\", '###,##0');\n_defineProperty(IntegerColumnFormatter, \"FORMAT_THOUSANDS\", _IntegerColumnFormatter.makePresetFormat('Thousands', '##0.000 k', 0.001));\n_defineProperty(IntegerColumnFormatter, \"FORMAT_MILLIONS\", _IntegerColumnFormatter.makePresetFormat('Millions', '###,##0.000 mm', 0.000001));\n_defineProperty(IntegerColumnFormatter, \"FORMAT_SCIENTIFIC_NOTATION\", _IntegerColumnFormatter.makePresetFormat('Scientific Notation', '0.0000E0'));\nexport default IntegerColumnFormatter;\n//# sourceMappingURL=IntegerColumnFormatter.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Valid column types to be used for a call to newTable.\n */\nexport class NewTableColumnTypes {}\n_defineProperty(NewTableColumnTypes, \"INTEGER\", 'int');\n_defineProperty(NewTableColumnTypes, \"LONG\", 'long');\n_defineProperty(NewTableColumnTypes, \"DOUBLE\", 'double');\n_defineProperty(NewTableColumnTypes, \"BOOLEAN\", 'bool');\n_defineProperty(NewTableColumnTypes, \"STRING\", 'string');\n_defineProperty(NewTableColumnTypes, \"DATE_TIME\", 'datetime');\n_defineProperty(NewTableColumnTypes, \"LOCAL_TIME\", 'localtime');\nexport default NewTableColumnTypes;\n//# sourceMappingURL=NewTableColumnTypes.js.map","import { createContext } from 'react';\nexport var PluginsContext = /*#__PURE__*/createContext(null);\nPluginsContext.displayName = 'PluginsContext';\nexport default PluginsContext;\n//# sourceMappingURL=PluginsContext.js.map","export var PluginType = Object.freeze({\n AUTH_PLUGIN: 'AuthPlugin',\n DASHBOARD_PLUGIN: 'DashboardPlugin',\n WIDGET_PLUGIN: 'WidgetPlugin',\n TABLE_PLUGIN: 'TablePlugin',\n THEME_PLUGIN: 'ThemePlugin',\n ELEMENT_PLUGIN: 'ElementPlugin'\n});\n\n/**\n * @deprecated Use DashboardPlugin instead\n */\n\nexport function isLegacyDashboardPlugin(plugin) {\n return 'DashboardPlugin' in plugin;\n}\n\n/**\n * @deprecated Use AuthPlugin instead\n */\n\nexport function isLegacyAuthPlugin(plugin) {\n return 'AuthPlugin' in plugin;\n}\n\n/**\n * @deprecated Use TablePlugin instead\n */\n\nexport function isLegacyTablePlugin(plugin) {\n return 'TablePlugin' in plugin;\n}\n\n/**\n * @deprecated Use Plugin instead\n */\n\nexport function isLegacyPlugin(plugin) {\n return isLegacyDashboardPlugin(plugin) || isLegacyAuthPlugin(plugin) || isLegacyTablePlugin(plugin);\n}\n\n/**\n * A plugin that will be mounted to the dashboard.\n */\n\nexport function isDashboardPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.DASHBOARD_PLUGIN;\n}\nexport function isWidgetPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.WIDGET_PLUGIN;\n}\nexport function isTablePlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.TABLE_PLUGIN;\n}\n\n/**\n * Map from auth config keys to their values\n * E.g. Map { AuthHandlers → \"io.deephaven.auth.AnonymousAuthenticationHandler\" }\n */\n\n/**\n * Props for the auth plugin component to render\n */\n\nexport function isAuthPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.AUTH_PLUGIN;\n}\n/** Type guard to check if given plugin is a `ThemePlugin` */\nexport function isThemePlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.THEME_PLUGIN;\n}\n\n/** A mapping of element names to their React components. */\n\n/** An element plugin is used by deephaven.ui to render custom components\n * The mapping contains the element names as keys and the React components as values.\n */\n\nexport function isElementPlugin(plugin) {\n return 'type' in plugin && plugin.type === PluginType.ELEMENT_PLUGIN;\n}\nexport function isPlugin(plugin) {\n return isDashboardPlugin(plugin) || isAuthPlugin(plugin) || isTablePlugin(plugin) || isThemePlugin(plugin) || isWidgetPlugin(plugin) || isElementPlugin(plugin);\n}\n//# sourceMappingURL=PluginTypes.js.map","import { isValidElement } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { getThemeKey } from '@deephaven/components';\nimport { vsPreview } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { isWidgetPlugin, isThemePlugin, isElementPlugin } from \"./PluginTypes.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('@deephaven/plugin.PluginUtils');\nexport function pluginSupportsType(plugin, type) {\n if (plugin == null || !isWidgetPlugin(plugin)) {\n return false;\n }\n return [plugin.supportedTypes].flat().some(t => t === type);\n}\nexport function getIconForPlugin(plugin) {\n var defaultIcon = /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsPreview\n });\n if (!isWidgetPlugin(plugin)) {\n return defaultIcon;\n }\n var {\n icon\n } = plugin;\n if (icon == null) {\n return defaultIcon;\n }\n if (/*#__PURE__*/isValidElement(icon)) {\n return icon;\n }\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon\n });\n}\n\n/**\n * Extract theme data from theme plugins in the given plugin map.\n * @param pluginMap\n */\nexport function getThemeDataFromPlugins(pluginMap) {\n var themePluginEntries = [...pluginMap.entries()].filter(entry => isThemePlugin(entry[1]));\n log.debug('Getting theme data from plugins', themePluginEntries);\n return themePluginEntries.map(_ref => {\n var [pluginName, plugin] = _ref;\n // Normalize to an array since config can be an array of configs or a\n // single config\n var configs = Array.isArray(plugin.themes) ? plugin.themes : [plugin.themes];\n return configs.map(_ref2 => {\n var {\n name,\n baseTheme,\n styleContent\n } = _ref2;\n return {\n baseThemeKey: \"default-\".concat(baseTheme !== null && baseTheme !== void 0 ? baseTheme : 'dark'),\n themeKey: getThemeKey(pluginName, name),\n name,\n styleContent\n };\n });\n }).flat();\n}\n\n/**\n * Get a mapping of element names to their React components from the given plugin map.\n * @param pluginMap The plugin map to extract element plugins from.\n * @returns A Map of element names to their React components.\n */\nexport function getPluginsElementMap(pluginMap) {\n var elementPluginEntries = [...pluginMap.entries()].filter(entry => isElementPlugin(entry[1]) && entry[1].mapping != null);\n log.debug('Getting element plugin mapping', elementPluginEntries);\n return new Map(elementPluginEntries.flatMap(_ref3 => {\n var [, plugin] = _ref3;\n return Object.entries(plugin.mapping);\n }));\n}\n//# sourceMappingURL=PluginUtils.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { PluginsContext } from \"./PluginsContext.js\";\nexport function usePlugins() {\n return useContextOrThrow(PluginsContext, 'No Plugins available in usePlugins. This can happen when plugins have not finished loading or if code is not wrapped in PluginsContext.Provider.');\n}\nexport default usePlugins;\n//# sourceMappingURL=usePlugins.js.map","import React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Context that holds methods to track the state of all calls to usePersistentState below this provider.\n */\nexport var PersistentStateContext = /*#__PURE__*/createContext(null);\nPersistentStateContext.displayName = 'PersistentStateContext';\n/**\n * Tracks all calls to the usePersistentState hook below this provider.\n * Keeps track of the state in call order so and calls onChange when the state changes.\n */\nexport function PersistentStateProvider(props) {\n var {\n initialState,\n onChange,\n children\n } = props;\n var [updateId, setUpdateId] = React.useState(0);\n\n // We store the previous and next state in a map in case a component calls setState in its render function.\n // This would cause an immediate re-render and usePersistentState may be called multiple times from 1 component\n // before the render finishes and we run the effect to persist the state.\n // JS Maps iterate based on insertion order, so if a component renders multiple times its original position will be maintained\n // while updating its state if it changed in that re-render.\n var persistentData = useRef({\n initial: initialState,\n initialStateMap: new Map(),\n state: new Map(),\n isTracking: true // We want to start tracking on the first render\n });\n var addState = useCallback((id, state) => {\n if (persistentData.current.isTracking) {\n persistentData.current.state.set(id, state);\n }\n }, []);\n var scheduleStateUpdate = useCallback(() => {\n // Don't trigger again if we are already tracking a render\n if (!persistentData.current.isTracking) {\n persistentData.current.isTracking = true;\n persistentData.current.state = new Map();\n setUpdateId(prev => prev + 1);\n }\n }, []);\n var initialStateIterator = useRef(persistentData.current.initial[Symbol.iterator]());\n var getInitialState = useCallback(function getState(id) {\n // Prevents a component re-rendering multiple times in the same render cycle from taking multiple values from the iterator\n var initialStateForId = persistentData.current.initialStateMap.get(id);\n if (initialStateForId) {\n return initialStateForId;\n }\n var {\n value,\n done\n } = initialStateIterator.current.next();\n var stateVal = {\n value: value,\n done: done !== null && done !== void 0 ? done : false\n };\n persistentData.current.initialStateMap.set(id, stateVal);\n return stateVal;\n }, []);\n useEffect(function persistState() {\n if (persistentData.current.isTracking) {\n onChange([...persistentData.current.state.values()]);\n persistentData.current.isTracking = false;\n }\n }, [updateId, onChange]);\n var contextValue = useMemo(() => ({\n addState,\n scheduleStateUpdate,\n getInitialState,\n updateId\n }), [addState, getInitialState, scheduleStateUpdate, updateId]);\n return /*#__PURE__*/_jsx(PersistentStateContext.Provider, {\n value: contextValue,\n children: children\n });\n}\n//# sourceMappingURL=PersistentStateContext.js.map","import { getExpressionRanges, resolveCssVariablesInRecord } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { ColorUtils } from '@deephaven/utils';\nimport chartThemeRaw from \"./ChartTheme.module.css\";\nvar log = Log.module('ChartTheme');\nexport function defaultChartTheme() {\n var _chartTheme$colorway;\n var chartTheme = resolveCssVariablesInRecord(chartThemeRaw);\n\n // The color normalization in `resolveCssVariablesInRecord` won't work for\n // colorway since it is an array of colors. We need to explicitly normalize\n // each color expression\n chartTheme.colorway = getExpressionRanges((_chartTheme$colorway = chartTheme.colorway) !== null && _chartTheme$colorway !== void 0 ? _chartTheme$colorway : '').map(_ref => {\n var [start, end] = _ref;\n return ColorUtils.normalizeCssColor(chartTheme.colorway.substring(start, end + 1));\n }).join(' ');\n log.debug2('Chart theme:', chartThemeRaw);\n log.debug2('Chart theme derived:', chartTheme);\n return Object.freeze({\n paper_bgcolor: chartTheme['paper-bgcolor'],\n plot_bgcolor: chartTheme['plot-bgcolor'],\n title_color: chartTheme['title-color'],\n legend_color: chartTheme['legend-color'],\n colorway: chartTheme.colorway,\n gridcolor: chartTheme.gridcolor,\n linecolor: chartTheme.linecolor,\n zerolinecolor: chartTheme.zerolinecolor,\n error_band_line_color: chartTheme['error-band-line-color'],\n ohlc_increasing: chartTheme['ohlc-increasing'],\n ohlc_decreasing: chartTheme['ohlc-decreasing'],\n // Geo\n coastline_color: chartTheme['coastline-color'],\n land_color: chartTheme['land-color'],\n ocean_color: chartTheme['ocean-color'],\n lake_color: chartTheme['lake-color'],\n river_color: chartTheme['river-color'],\n // Indicator\n indicator_increasing: chartTheme['indicator-increasing'],\n indicator_decreasing: chartTheme['indicator-decreasing'],\n indicator_gauge: chartTheme['indicator-gauge']\n });\n}\nexport default defaultChartTheme;\n//# sourceMappingURL=ChartTheme.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { LoadingOverlay } from '@deephaven/components';\nimport { lazy, Suspense } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar PlotBase = /*#__PURE__*/lazy(() => import('./Plot.js'));\nfunction Plot(props) {\n return /*#__PURE__*/_jsx(Suspense, {\n fallback: /*#__PURE__*/_jsx(LoadingOverlay, {\n \"data-testid\": \"lazy-plot-loading\"\n }),\n children: /*#__PURE__*/_jsx(PlotBase, _objectSpread({}, props))\n });\n}\nexport default Plot;\n//# sourceMappingURL=LazyPlot.js.map","import { createContext, useMemo } from 'react';\nimport { useTheme } from '@deephaven/components';\nimport defaultChartTheme from \"./ChartTheme.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var ChartThemeContext = /*#__PURE__*/createContext(null);\nChartThemeContext.displayName = 'ChartThemeContext';\n/*\n * Provides a chart theme based on the active themes from the ThemeProvider.\n */\nexport function ChartThemeProvider(_ref) {\n var {\n children\n } = _ref;\n var {\n activeThemes\n } = useTheme();\n var chartTheme = useMemo(defaultChartTheme, [activeThemes]);\n return /*#__PURE__*/_jsx(ChartThemeContext.Provider, {\n value: chartTheme,\n children: children\n });\n}\n//# sourceMappingURL=ChartThemeProvider.js.map","import { useContextOrThrow } from '@deephaven/react-hooks';\nimport { ChartThemeContext } from \"./ChartThemeProvider.js\";\n/**\n * Hook to get the current `ChartThemeContextValue`.\n */\nexport function useChartTheme() {\n return useContextOrThrow(ChartThemeContext, 'No ChartThemeContext value found.');\n}\nexport default useChartTheme;\n//# sourceMappingURL=useChartTheme.js.map","export var defaultConfig = Object.freeze({\n openPopouts: [],\n settings: {\n hasHeaders: true,\n constrainDragToContainer: true,\n reorderEnabled: true,\n selectionEnabled: false,\n popoutWholeStack: false,\n blockedPopoutsThrowError: true,\n closePopoutsOnUnload: true,\n showPopoutIcon: true,\n showMaximiseIcon: true,\n showCloseIcon: true,\n responsiveMode: 'onload',\n // Can be onload, always, or none.\n tabOverlapAllowance: 0,\n // maximum pixel overlap per tab\n // reorderOnTabMenuClick: true, // Deephaven disabled\n tabControlOffset: 10\n },\n dimensions: {\n borderWidth: 5,\n borderGrabWidth: 10,\n minItemHeight: 10,\n minItemWidth: 10,\n headerHeight: 20,\n dragProxyWidth: 300,\n dragProxyHeight: 200\n },\n labels: {\n close: 'Close',\n maximise: 'Maximize',\n minimise: 'Minimize',\n popout: 'Open in new window',\n popin: 'Pop in',\n tabDropdown: 'Additional tabs',\n tabNextLabel: 'Next',\n tabPreviousLabel: 'Previous'\n },\n content: []\n});\n//# sourceMappingURL=Config.js.map","/** @deprecated Use `ItemConfig` instead. */\n\nexport function isGLComponentConfig(item) {\n return item.componentName !== undefined;\n}\nexport function isReactComponentConfig(item) {\n return item.component !== undefined;\n}\nexport var itemDefaultConfig = Object.freeze({\n type: 'default',\n isClosable: true,\n isFocusOnShow: true,\n reorderEnabled: true,\n title: ''\n});\n//# sourceMappingURL=ItemConfig.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * A generic and very fast EventEmitter\n * implementation. On top of emitting the\n * actual event it emits an\n *\n * EventEmitter.ALL_EVENT\n *\n * event for every event triggered. This allows\n * to hook into it and proxy events forwards\n *\n * @constructor\n */\nclass EventEmitter {\n constructor() {\n _defineProperty(this, \"_mSubscriptions\", void 0);\n /**\n * Alias for unbind\n */\n _defineProperty(this, \"off\", this.unbind);\n /**\n * Alias for emit\n */\n _defineProperty(this, \"trigger\", this.emit);\n this._mSubscriptions = {};\n this._mSubscriptions[EventEmitter.ALL_EVENT] = [];\n }\n\n /**\n * Listen for events\n *\n * @param eventName The name of the event to listen to\n * @param callback The callback to execute when the event occurs\n * @param context The value of the this pointer within the callback function\n */\n on(eventName, callback, context) {\n if (typeof callback !== 'function') {\n throw new Error('Tried to listen to event ' + eventName + ' with non-function callback ' + callback);\n }\n if (!this._mSubscriptions[eventName]) {\n this._mSubscriptions[eventName] = [];\n }\n this._mSubscriptions[eventName].push({\n fn: callback,\n ctx: context\n });\n }\n\n /**\n * Emit an event and notify listeners\n *\n * @param eventName The name of the event\n * @param args additional arguments that will be passed to the listener\n */\n emit(eventName) {\n var subs = this._mSubscriptions[eventName];\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (subs) {\n for (var i = 0; i < subs.length; i++) {\n var ctx = subs[i].ctx || {};\n try {\n subs[i].fn.apply(ctx, args);\n } catch (e) {\n console.error('Error while emitting event:', e);\n }\n }\n }\n args.unshift(eventName);\n var allEventSubs = this._mSubscriptions[EventEmitter.ALL_EVENT];\n for (var _i = 0; _i < allEventSubs.length; _i++) {\n var _ctx = allEventSubs[_i].ctx || {};\n try {\n allEventSubs[_i].fn.apply(_ctx, args);\n } catch (e) {\n console.error('Error while emitting event to allEventSubs:', e);\n }\n }\n }\n\n /**\n * Removes a listener for an event, or all listeners if no callback and context is provided.\n *\n * @param eventName The name of the event\n * @param callback The previously registered callback method (optional)\n * @param context The previously registered context (optional)\n */\n unbind(eventName, callback, context) {\n if (!this._mSubscriptions[eventName]) {\n throw new Error('No subscriptions to unsubscribe for event ' + eventName);\n }\n var bUnbound = false;\n for (var i = 0; i < this._mSubscriptions[eventName].length; i++) {\n if ((!callback || this._mSubscriptions[eventName][i].fn === callback) && (!context || context === this._mSubscriptions[eventName][i].ctx)) {\n this._mSubscriptions[eventName].splice(i, 1);\n bUnbound = true;\n }\n }\n if (bUnbound === false) {\n throw new Error('Nothing to unbind for ' + eventName);\n }\n }\n}\n/**\n * The name of the event that's triggered for every other event\n *\n * usage\n *\n * myEmitter.on( EventEmitter.ALL_EVENT, function( eventName, argsArray ){\n * \t//do stuff\n * });\n */\n_defineProperty(EventEmitter, \"ALL_EVENT\", '__all');\nexport default EventEmitter;\n//# sourceMappingURL=EventEmitter.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport { isGLComponentConfig } from \"../config/index.js\";\nimport EventEmitter from \"../utils/EventEmitter.js\";\nexport default class ItemContainer extends EventEmitter {\n constructor(config, parent, layoutManager) {\n super();\n _defineProperty(this, \"width\", void 0);\n _defineProperty(this, \"height\", void 0);\n _defineProperty(this, \"title\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"layoutManager\", void 0);\n _defineProperty(this, \"tab\", void 0);\n // This type is to make TS happy and allow ReactComponentConfig passed to container generic\n _defineProperty(this, \"_config\", void 0);\n _defineProperty(this, \"isHidden\", false);\n _defineProperty(this, \"beforeCloseHandler\", void 0);\n _defineProperty(this, \"_element\", $(['<div class=\"lm_item_container\">', '<div class=\"lm_content\" tabindex=\"-1\"></div>', '</div>'].join('')));\n _defineProperty(this, \"_contentElement\", void 0);\n this.title = isGLComponentConfig(config) ? config.componentName : '';\n this.parent = parent;\n this.layoutManager = layoutManager;\n this._config = config;\n this._contentElement = this._element.find('.lm_content');\n this.beforeCloseHandler = null;\n }\n\n /**\n * Get the inner DOM element the container's content\n * is intended to live in\n */\n getElement() {\n return this._contentElement;\n }\n\n /**\n * Hide the container. Notifies the containers content first\n * and then hides the DOM node. If the container is already hidden\n * this should have no effect\n */\n hide() {\n this.emit('hide');\n this.isHidden = true;\n this._element.hide();\n }\n\n /**\n * Shows a previously hidden container. Notifies the\n * containers content first and then shows the DOM element.\n * If the container is already visible this has no effect.\n */\n show() {\n this.emit('show');\n this.isHidden = false;\n this._element.show();\n // call shown only if the container has a valid size\n if (this.height != 0 || this.width != 0) {\n this.emit('shown');\n }\n }\n\n /**\n * Set the size from within the container. Traverses up\n * the item tree until it finds a row or column element\n * and resizes its items accordingly.\n *\n * If this container isn't a descendant of a row or column\n * it returns false\n * @todo Rework!!!\n * @param width The new width in pixel\n * @param height The new height in pixel\n *\n * @returns resizeSuccesful\n */\n setSize(width, height) {\n var _this$direction, _rowOrColumnChild$con, _rowOrColumnChild$con2;\n var rowOrColumn = this.parent;\n var rowOrColumnChild = null;\n while (rowOrColumn && !rowOrColumn.isColumn && !rowOrColumn.isRow) {\n var _rowOrColumn;\n rowOrColumnChild = rowOrColumn;\n rowOrColumn = rowOrColumn.parent;\n\n /**\n * No row or column has been found\n */\n if ((_rowOrColumn = rowOrColumn) !== null && _rowOrColumn !== void 0 && _rowOrColumn.isRoot) {\n return false;\n }\n }\n if (!rowOrColumn || !rowOrColumnChild) {\n return false;\n }\n var direction = rowOrColumn.isColumn ? 'height' : 'width';\n var newSize = direction === 'height' ? height : width;\n var totalPixel = ((_this$direction = this[direction]) !== null && _this$direction !== void 0 ? _this$direction : 0) * (1 / (((_rowOrColumnChild$con = rowOrColumnChild.config[direction]) !== null && _rowOrColumnChild$con !== void 0 ? _rowOrColumnChild$con : 0) / 100));\n var percentage = newSize / totalPixel * 100;\n var delta = (((_rowOrColumnChild$con2 = rowOrColumnChild.config[direction]) !== null && _rowOrColumnChild$con2 !== void 0 ? _rowOrColumnChild$con2 : 0) - percentage) / (rowOrColumn.contentItems.length - 1);\n for (var i = 0; i < rowOrColumn.contentItems.length; i++) {\n if (rowOrColumn.contentItems[i] === rowOrColumnChild) {\n rowOrColumn.contentItems[i].config[direction] = percentage;\n } else {\n var _rowOrColumn$contentI;\n rowOrColumn.contentItems[i].config[direction] = ((_rowOrColumn$contentI = rowOrColumn.contentItems[i].config[direction]) !== null && _rowOrColumn$contentI !== void 0 ? _rowOrColumn$contentI : 0) + delta;\n }\n }\n rowOrColumn.callDownwards('setSize');\n return true;\n }\n\n /**\n * Closes the container if it is closable. Can be called by\n * both the component within at as well as the contentItem containing\n * it. Emits a close event before the container itself is closed.\n * @param options Options to pass into the beforeClose handler\n */\n close(options) {\n var _this$beforeCloseHand, _this$beforeCloseHand2;\n // Not closable, don't do anything\n if (!this._config.isClosable) return;\n\n // If beforeCloseHandler returns true or if the handler doesn't exist, close\n if ((_this$beforeCloseHand = (_this$beforeCloseHand2 = this.beforeCloseHandler) === null || _this$beforeCloseHand2 === void 0 ? void 0 : _this$beforeCloseHand2.call(this, options)) !== null && _this$beforeCloseHand !== void 0 ? _this$beforeCloseHand : true) {\n this.emit('close');\n this.parent.close();\n }\n }\n\n /**\n * Sets the beforeCloseHandler to callback\n * @param callback Callback function to call before closing\n */\n beforeClose(callback) {\n this.beforeCloseHandler = callback;\n }\n\n /**\n * Returns the current state object\n *\n * @returns state\n */\n getState() {\n return this._config.componentState;\n }\n\n /**\n * Returns the object's config\n *\n * @returns id\n */\n getConfig() {\n return this._config;\n }\n\n /**\n * Merges the provided state into the current one\n *\n * @param state\n */\n extendState(state) {\n this.setState($.extend(true, this.getState(), state));\n }\n\n /**\n * Notifies the layout manager of a stateupdate\n *\n * @param state\n */\n setState(state) {\n this._config.componentState = state;\n this.parent.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Set's the components title\n *\n * @param title\n */\n setTitle(title) {\n this.parent.setTitle(title);\n }\n\n /**\n * Set's the containers size. Called by the container's component.\n * To set the size programmatically from within the container please\n * use the public setSize method\n *\n * @param width in px\n * @param height in px\n */\n _$setSize() {\n var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (width !== this.width || height !== this.height) {\n this.width = width;\n this.height = height;\n var cl = this._contentElement[0];\n var hdelta = cl.offsetWidth - cl.clientWidth;\n var vdelta = cl.offsetHeight - cl.clientHeight;\n this._contentElement.width(this.width - hdelta).height(this.height - vdelta);\n this.emit('resize');\n }\n }\n}\n//# sourceMappingURL=ItemContainer.js.map","import $ from 'jquery';\nimport { nanoid } from 'nanoid';\nexport function getHashValue(key) {\n var matches = location.hash.match(new RegExp(key + '=([^&]*)'));\n return matches ? matches[1] : null;\n}\nexport function getQueryStringParam(param) {\n if (window.location.hash) {\n return getHashValue(param);\n } else if (!window.location.search) {\n return null;\n }\n var keyValuePairs = window.location.search.substr(1).split('&'),\n params = {},\n pair,\n i;\n for (i = 0; i < keyValuePairs.length; i++) {\n pair = keyValuePairs[i].split('=');\n params[pair[0]] = pair[1];\n }\n return params[param] || null;\n}\nexport function animFrame(fn) {\n return window.requestAnimationFrame(fn);\n}\nexport function removeFromArray(item, array) {\n var index = array.indexOf(item);\n if (index === -1) {\n throw new Error(\"Can't remove item from array. Item is not in the array\");\n }\n array.splice(index, 1);\n}\nexport function getUniqueId() {\n return nanoid();\n}\n\n/**\n * A basic XSS filter. It is ultimately up to the\n * implementing developer to make sure their particular\n * applications and usecases are save from cross site scripting attacks\n *\n * @param input\n * @param keepTags\n *\n * @returns filtered input\n */\nexport function filterXss(input, keepTags) {\n var output = input.replace(/javascript/gi, 'javascript').replace(/expression/gi, 'expression').replace(/onload/gi, 'onload').replace(/script/gi, 'script').replace(/onerror/gi, 'onerror');\n if (keepTags === true) {\n return output;\n } else {\n return output.replace(/>/g, '>').replace(/</g, '<');\n }\n}\n\n/**\n * Removes html tags from a string\n *\n * @param input\n *\n * @returns input without tags\n */\nexport function stripTags(input) {\n return $.trim(input.replace(/(<([^>]+)>)/gi, ''));\n}\n//# sourceMappingURL=utils.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport EventEmitter from \"./EventEmitter.js\";\nclass DragListener extends EventEmitter {\n constructor(eElement) {\n var _this$_eElement;\n var destroyAfterMouseUp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n super();\n _defineProperty(this, \"_eElement\", void 0);\n _defineProperty(this, \"_oDocument\", void 0);\n _defineProperty(this, \"_eBody\", void 0);\n _defineProperty(this, \"_destroyAfterMouseUp\", void 0);\n /**\n * The delay after which to start the drag in milliseconds\n */\n _defineProperty(this, \"_nDelay\", 400);\n _defineProperty(this, \"_timeout\", void 0);\n _defineProperty(this, \"timeout\", void 0);\n /**\n * The distance the mouse needs to be moved to qualify as a drag\n */\n _defineProperty(this, \"_nDistance\", 10);\n //TODO - works better with delay only\n _defineProperty(this, \"_nX\", 0);\n _defineProperty(this, \"_nY\", 0);\n _defineProperty(this, \"_nOriginalX\", 0);\n _defineProperty(this, \"_nOriginalY\", 0);\n _defineProperty(this, \"_bDragging\", false);\n this._eElement = eElement;\n this._oDocument = $(document);\n this._eBody = $(document.body);\n // used by drag sources, to destroy listener at the right time\n this._destroyAfterMouseUp = destroyAfterMouseUp;\n this.onMouseMove = this.onMouseMove.bind(this);\n this.onMouseUp = this.onMouseUp.bind(this);\n this.onMouseDown = this.onMouseDown.bind(this);\n this._startDrag = this._startDrag.bind(this);\n\n // https://github.com/microsoft/TypeScript/issues/48546\n (_this$_eElement = this._eElement) === null || _this$_eElement === void 0 || _this$_eElement.on('mousedown', this.onMouseDown);\n }\n destroy() {\n var _this$_eElement2, _this$_oDocument;\n (_this$_eElement2 = this._eElement) === null || _this$_eElement2 === void 0 || _this$_eElement2.unbind('mousedown', this.onMouseDown);\n (_this$_oDocument = this._oDocument) === null || _this$_oDocument === void 0 || _this$_oDocument.unbind('mouseup', this.onMouseUp);\n this._eElement = undefined;\n this._oDocument = undefined;\n this._eBody = undefined;\n clearTimeout(this._timeout);\n this._timeout = undefined;\n }\n onMouseDown(oEvent) {\n oEvent.preventDefault();\n if (oEvent.button === 0) {\n var _coordinates$x, _coordinates$y, _this$_oDocument2, _this$_oDocument3;\n var coordinates = this._getCoordinates(oEvent);\n this._nOriginalX = (_coordinates$x = coordinates.x) !== null && _coordinates$x !== void 0 ? _coordinates$x : 0;\n this._nOriginalY = (_coordinates$y = coordinates.y) !== null && _coordinates$y !== void 0 ? _coordinates$y : 0;\n (_this$_oDocument2 = this._oDocument) === null || _this$_oDocument2 === void 0 || _this$_oDocument2.on('mousemove', this.onMouseMove);\n (_this$_oDocument3 = this._oDocument) === null || _this$_oDocument3 === void 0 || _this$_oDocument3.on('mouseup', this.onMouseUp);\n this._timeout = window.setTimeout(this._startDrag, this._nDelay);\n }\n }\n onMouseMove(oEvent) {\n if (this._timeout != null) {\n var _coordinates$x2, _coordinates$y2;\n oEvent.preventDefault();\n var coordinates = this._getCoordinates(oEvent);\n this._nX = ((_coordinates$x2 = coordinates.x) !== null && _coordinates$x2 !== void 0 ? _coordinates$x2 : 0) - this._nOriginalX;\n this._nY = ((_coordinates$y2 = coordinates.y) !== null && _coordinates$y2 !== void 0 ? _coordinates$y2 : 0) - this._nOriginalY;\n if (this._bDragging === false) {\n if (Math.abs(this._nX) > this._nDistance || Math.abs(this._nY) > this._nDistance) {\n this._startDrag();\n }\n }\n if (this._bDragging) {\n this.emit('drag', this._nX, this._nY, oEvent);\n }\n }\n }\n onMouseUp(oEvent) {\n if (this._timeout != null) {\n var _this$_oDocument4, _this$_oDocument5, _this$_oDocument6, _this$_eBody;\n clearTimeout(this._timeout);\n (_this$_oDocument4 = this._oDocument) === null || _this$_oDocument4 === void 0 || _this$_oDocument4.unbind('mousemove', this.onMouseMove);\n (_this$_oDocument5 = this._oDocument) === null || _this$_oDocument5 === void 0 || _this$_oDocument5.unbind('mouseup', this.onMouseUp);\n (_this$_oDocument6 = this._oDocument) === null || _this$_oDocument6 === void 0 || (_this$_oDocument6 = _this$_oDocument6.find('iframe')) === null || _this$_oDocument6 === void 0 || _this$_oDocument6.css('pointer-events', '');\n if (this._bDragging === true) {\n this._bDragging = false;\n this.emit('dragStop', oEvent, this._nOriginalX + this._nX);\n }\n\n // after dragStop, so that .lm_dragging is removed after size is processed\n // and any overflow: hidden remains applied during the calculations\n (_this$_eBody = this._eBody) === null || _this$_eBody === void 0 || _this$_eBody.removeClass('lm_dragging');\n if (!(this._eElement instanceof Window)) {\n var _this$_eElement3;\n (_this$_eElement3 = this._eElement) === null || _this$_eElement3 === void 0 || _this$_eElement3.removeClass('lm_dragging');\n }\n if (this._destroyAfterMouseUp) this.destroy();\n }\n }\n _startDrag() {\n var _this$_eBody2, _this$_eElement4, _this$_oDocument7;\n window.clearTimeout(this._timeout);\n this._bDragging = true;\n (_this$_eBody2 = this._eBody) === null || _this$_eBody2 === void 0 || _this$_eBody2.addClass('lm_dragging');\n (_this$_eElement4 = this._eElement) === null || _this$_eElement4 === void 0 || _this$_eElement4.addClass('lm_dragging');\n (_this$_oDocument7 = this._oDocument) === null || _this$_oDocument7 === void 0 || (_this$_oDocument7 = _this$_oDocument7.find('iframe')) === null || _this$_oDocument7 === void 0 || _this$_oDocument7.css('pointer-events', 'none');\n this.emit('dragStart', this._nOriginalX, this._nOriginalY);\n }\n _getCoordinates(event) {\n var _event$pageX, _event$pageY;\n return {\n x: (_event$pageX = event.pageX) !== null && _event$pageX !== void 0 ? _event$pageX : 0,\n y: (_event$pageY = event.pageY) !== null && _event$pageY !== void 0 ? _event$pageY : 0\n };\n }\n}\nexport default DragListener;\n//# sourceMappingURL=DragListener.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport $ from 'jquery';\n/**\n * A specialised GoldenLayout component that binds GoldenLayout container\n * lifecycle events to react components\n *\n * @param container\n * @param state state is not required for react components\n */\nexport default class ReactComponentHandler {\n constructor(container, state) {\n _defineProperty(this, \"_container\", void 0);\n _defineProperty(this, \"_reactComponent\", null);\n _defineProperty(this, \"_portalComponent\", null);\n _defineProperty(this, \"_originalComponentWillUpdate\", null);\n _defineProperty(this, \"_initialState\", void 0);\n _defineProperty(this, \"_reactClass\", void 0);\n this._reactComponent = null;\n this._portalComponent = null;\n this._originalComponentWillUpdate = null;\n this._container = container;\n this._initialState = state;\n this._reactClass = this._getReactClass();\n this._container.on('open', this._render, this);\n this._container.on('destroy', this._destroy, this);\n }\n\n /**\n * Gets the unique key to use for the react component\n * @returns Unique key for the component\n */\n _key() {\n var id = this._container._config.id;\n if (!id) {\n throw new Error('Cannot mount panel without id');\n }\n\n // If addId is called multiple times, an element can have multiple IDs in golden-layout\n // We don't use it, but changing the type requires many changes and a separate PR\n if (Array.isArray(id)) {\n return id.join(',');\n }\n return id;\n }\n\n /**\n * Creates the react class and component and hydrates it with\n * the initial state - if one is present\n *\n * By default, react's getInitialState will be used\n *\n * Creates a portal so the non-react golden-layout code still works,\n * but also allows us to mount the React components in the app's tree\n * instead of separate sibling root trees\n */\n _render() {\n var key = this._key();\n this._portalComponent = /*#__PURE__*/ReactDOM.createPortal(this._getReactComponent(), this._container.getElement()[0], key);\n this._container.layoutManager.addReactChild(key, this._portalComponent);\n }\n\n /**\n * Fired by react when the component is created.\n * <p>\n * Note: This callback is used instead of the return from `ReactDOM.render` because\n *\t of https://github.com/facebook/react/issues/10309.\n * </p>\n *\n * @param component The component instance created by the `ReactDOM.render` call in the `_render` method.\n */\n _gotReactComponent(component) {\n if (!component) {\n return;\n }\n this._reactComponent = component;\n this._originalComponentWillUpdate = this._reactComponent.componentWillUpdate || function () {};\n this._reactComponent.componentWillUpdate = this._onUpdate.bind(this);\n var state = this._container.getState();\n if (state) {\n this._reactComponent.setState(state);\n }\n }\n\n /**\n * Removes the component from the DOM and thus invokes React's unmount lifecycle\n */\n _destroy() {\n this._container.layoutManager.removeReactChild(this._key(), this._portalComponent);\n this._container.off('open', this._render, this);\n this._container.off('destroy', this._destroy, this);\n }\n\n /**\n * Hooks into React's state management and applies the componentstate\n * to GoldenLayout\n */\n _onUpdate(nextProps, nextState) {\n var _this$_originalCompon;\n this._container.setState(nextState);\n (_this$_originalCompon = this._originalComponentWillUpdate) === null || _this$_originalCompon === void 0 || _this$_originalCompon.call(this._reactComponent, nextProps, nextState);\n }\n\n /**\n * Retrieves the react class from GoldenLayout's registry\n * @returns react class\n */\n _getReactClass() {\n var componentName = this._container._config.component;\n if (!componentName) {\n throw new Error('No react component name. type: react-component needs a field `component`');\n }\n var reactClass = this._container.layoutManager.getComponent(componentName) || this._container.layoutManager.getFallbackComponent();\n if (!reactClass) {\n throw new Error('React component \"' + componentName + '\" not found. ' + 'Please register all components with GoldenLayout using `registerComponent(name, component)`');\n }\n return reactClass;\n }\n\n /**\n * Copies and extends the properties array and returns the React element\n */\n _getReactComponent() {\n var defaultProps = {\n glEventHub: this._container.layoutManager.eventHub,\n glContainer: this._container,\n /**\n * This ref assignment makes use of callback refs which is a legacy ref style in React.\n * It uses the callback to inject GoldenLayout _onUpdate into the React componentWillUpdate lifecycle.\n * This allows GoldenLayout to track the internal state of class components.\n * We then emit this state change and somewhere furter up, serialize it.\n * Specifically we look for state.panelState changes.\n * We should not do this going forward as it's quite unclear where/why your component's state might be saved.\n * This ref cannot be removed unless we refactor all existing panels to not rely on the magic of panelState.\n * DashboardUtils#dehydrate is where the panelState gets read/saved.\n */\n ref: this._gotReactComponent.bind(this)\n };\n var props = $.extend(defaultProps, this._container._config.props);\n return /*#__PURE__*/React.createElement(this._reactClass, props);\n }\n}\n//# sourceMappingURL=ReactComponentHandler.js.map","/**\n * Minifies and unminifies configs by replacing frequent keys\n * and values with one letter substitutes. Config options must\n * retain array position/index, add new options at the end.\n */\n\nvar _keys = ['settings', 'hasHeaders', 'constrainDragToContainer', 'selectionEnabled', 'dimensions', 'borderWidth', 'minItemHeight', 'minItemWidth', 'headerHeight', 'dragProxyWidth', 'dragProxyHeight', 'labels', 'close', 'maximise', 'minimise', 'popout', 'content', 'componentName', 'componentState', 'id', 'width', 'type', 'height', 'isClosable', 'title', 'popoutWholeStack', 'openPopouts', 'parentId', 'activeItemIndex', 'reorderEnabled', 'borderGrabWidth'\n\n//Maximum 36 entries, do not cross this line!\n];\nvar _values = [true, false, 'row', 'column', 'stack', 'component', 'close', 'maximise', 'minimise', 'open in new window'];\n\n/**\n * Takes a GoldenLayout configuration object and\n * replaces its keys and values recursively with\n * one letter counterparts\n *\n * @param config A GoldenLayout config object\n *\n * @returns minified config\n */\nexport function minifyConfig(config) {\n if (_keys.length > 36) {\n throw new Error('Too many keys in config minifier map');\n }\n var min = {};\n _nextLevel(config, min, '_min');\n return min;\n}\n\n/**\n * Takes a configuration Object that was previously minified\n * using minifyConfig and returns its original version\n *\n * @param minifiedConfig\n *\n * @returns the original configuration\n */\nexport function unminifyConfig(minifiedConfig) {\n if (_keys.length > 36) {\n throw new Error('Too many keys in config minifier map');\n }\n var orig = {};\n _nextLevel(minifiedConfig, orig, '_max');\n return orig;\n}\n\n/**\n * Recursive function, called for every level of the config structure\n *\n * @param orig\n * @param min\n * @param translationFnName\n */\nfunction _nextLevel(from, to, translationFnName) {\n var translationFn = translationFnName === '_min' ? _min : _max;\n for (var key in from) {\n /**\n * In case something has extended Object prototypes\n */\n if (!from.hasOwnProperty(key)) continue;\n var fromItem = Array.isArray(from) ? from[Number.parseInt(key, 10)] : from[key];\n /**\n * For Arrays and Objects, create a new Array/Object\n * on the minified object and recurse into it\n */\n if (typeof fromItem === 'object' && fromItem != null) {\n var toItem = fromItem instanceof Array ? [] : {};\n if (Array.isArray(to)) {\n to[Number.parseInt(key, 10)] = toItem;\n } else {\n var minKey = translationFn(key, _keys);\n to[minKey] = toItem;\n }\n _nextLevel(fromItem, toItem, translationFnName);\n\n /**\n * For primitive values (Strings, Numbers, Boolean etc.)\n * minify the value\n */\n } else {\n var _toItem = translationFn(fromItem, _values);\n if (Array.isArray(to)) {\n to[Number.parseInt(key, 10)] = _toItem;\n } else {\n var _minKey = translationFn(key, _keys);\n to[_minKey] = _toItem;\n }\n }\n }\n}\n\n/**\n * Minifies value based on a dictionary\n *\n * @param value\n * @param dictionary\n *\n * @returns The minified version\n */\nfunction _min(value, dictionary) {\n /**\n * If a value actually is a single character, prefix it\n * with ___ to avoid mistaking it for a minification code\n */\n if (typeof value === 'string' && value.length === 1) {\n return '___' + value;\n }\n var index = dictionary.indexOf(value);\n\n /**\n * value not found in the dictionary, return it unmodified\n */\n if (index === -1) {\n return value;\n\n /**\n * value found in dictionary, return its base36 counterpart\n */\n } else {\n return index.toString(36);\n }\n}\nfunction _max(value, dictionary) {\n /**\n * value is a single character. Assume that it's a translation\n * and return the original value from the dictionary\n */\n if (typeof value === 'string' && value.length === 1) {\n return dictionary[parseInt(value, 36)];\n }\n\n /**\n * value originally was a single character and was prefixed with ___\n * to avoid mistaking it for a translation. Remove the prefix\n * and return the original character\n */\n if (typeof value === 'string' && value.substr(0, 3) === '___') {\n return value[3];\n }\n /**\n * value was not minified\n */\n return value;\n}\n//# sourceMappingURL=ConfigMinifier.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport default class BubblingEvent {\n constructor(name, origin) {\n _defineProperty(this, \"name\", void 0);\n _defineProperty(this, \"origin\", void 0);\n _defineProperty(this, \"isPropagationStopped\", void 0);\n this.name = name;\n this.origin = origin;\n this.isPropagationStopped = false;\n }\n stopPropagation() {\n this.isPropagationStopped = true;\n }\n}\n//# sourceMappingURL=BubblingEvent.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport EventEmitter from \"./EventEmitter.js\";\n/**\n * An EventEmitter singleton that propagates events\n * across multiple windows. This is a little bit trickier since\n * windows are allowed to open childWindows in their own right\n *\n * This means that we deal with a tree of windows. Hence the rules for event propagation are:\n *\n * - Propagate events from this layout to both parents and children\n * - Propagate events from parent to this and children\n * - Propagate events from children to the other children (but not the emitting one) and the parent\n */\nclass EventHub extends EventEmitter {\n constructor(layoutManager) {\n super();\n _defineProperty(this, \"_layoutManager\", void 0);\n _defineProperty(this, \"_dontPropagateToParent\", void 0);\n _defineProperty(this, \"_childEventSource\", void 0);\n _defineProperty(this, \"_boundOnEventFromChild\", void 0);\n this._layoutManager = layoutManager;\n this._dontPropagateToParent = null;\n this._childEventSource = null;\n this.on(EventEmitter.ALL_EVENT, this._onEventFromThis.bind(this));\n this._boundOnEventFromChild = this._onEventFromChild.bind(this);\n $(window).on('gl_child_event', this._boundOnEventFromChild);\n }\n\n /**\n * Called on every event emitted on this eventHub, regardles of origin.\n */\n _onEventFromThis() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (this._layoutManager.isSubWindow && args[0] !== this._dontPropagateToParent) {\n this._propagateToParent(args);\n }\n this._propagateToChildren(args);\n\n //Reset\n this._dontPropagateToParent = null;\n this._childEventSource = null;\n }\n\n /**\n * Called by the parent layout.\n *\n * @param args Event name + arguments\n */\n _$onEventFromParent(args) {\n this._dontPropagateToParent = args[0];\n this.emit.apply(this, args);\n }\n\n /**\n * Callback for child events raised on the window\n *\n * @param event\n */\n _onEventFromChild(event) {\n this._childEventSource = event.originalEvent.__gl;\n this.emit.apply(this, event.originalEvent.__glArgs);\n }\n\n /**\n * Propagates the event to the parent by emitting\n * it on the parent's DOM window\n *\n * @param args Event name + arguments\n */\n _propagateToParent(args) {\n var _window$opener;\n var eventName = 'gl_child_event';\n var event = (_window$opener = window.opener) === null || _window$opener === void 0 ? void 0 : _window$opener.document.createEvent('HTMLEvents');\n event.initEvent(eventName, true, true);\n event.eventName = eventName;\n event.__glArgs = args;\n event.__gl = this._layoutManager;\n window.opener.dispatchEvent(event);\n }\n\n /**\n * Propagate events to children\n *\n * @param args Event name + arguments\n */\n _propagateToChildren(args) {\n for (var i = 0; i < this._layoutManager.openPopouts.length; i++) {\n var childGl = this._layoutManager.openPopouts[i].getGlInstance();\n if (childGl && childGl !== this._childEventSource) {\n childGl.eventHub._$onEventFromParent(args);\n }\n }\n }\n\n /**\n * Destroys the EventHub\n */\n destroy() {\n $(window).off('gl_child_event', this._boundOnEventFromChild);\n }\n}\nexport default EventHub;\n//# sourceMappingURL=EventHub.js.map","import { useEffect, useRef } from 'react';\n/**\n * Listen for an event\n * @param eventEmitter The event emitter to listen to\n * @param event The event to listen for\n * @param handler The handler to call when the event is emitted\n * @returns A function to stop listening for the event\n */\nexport function listenForEvent(eventEmitter, event, handler) {\n eventEmitter.on(event, handler);\n return () => {\n eventEmitter.off(event, handler);\n };\n}\nexport function makeListenFunction(event) {\n return (eventEmitter, handler) => listenForEvent(eventEmitter, event, handler);\n}\nexport function makeEmitFunction(event) {\n return function (eventEmitter) {\n for (var _len = arguments.length, parameters = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n parameters[_key - 1] = arguments[_key];\n }\n eventEmitter.emit(event, ...parameters);\n };\n}\nexport function makeUseListenerFunction(event) {\n return (eventEmitter, handler) => {\n var eventEmitterRef = useRef(null);\n var handlerRef = useRef(() => false);\n if (eventEmitterRef.current != eventEmitter || handlerRef.current != handler) {\n var _eventEmitterRef$curr;\n (_eventEmitterRef$curr = eventEmitterRef.current) === null || _eventEmitterRef$curr === void 0 || _eventEmitterRef$curr.off(event, handlerRef.current);\n eventEmitter === null || eventEmitter === void 0 || eventEmitter.on(event, handler);\n }\n eventEmitterRef.current = eventEmitter;\n handlerRef.current = handler;\n\n // Cleanup on unmount\n // Mounting the listener in useEffect causes a race condition with embed-widget\n // where the event is emitted during render before the useEffect runs after render.\n useEffect(() => () => {\n var _eventEmitterRef$curr2;\n return (_eventEmitterRef$curr2 = eventEmitterRef.current) === null || _eventEmitterRef$curr2 === void 0 ? void 0 : _eventEmitterRef$curr2.off(event, handlerRef.current);\n }, []);\n };\n}\n\n/**\n * Create listener, emitter, and hook functions for an event\n * @param event Name of the event to create functions for\n * @returns Listener, Emitter, and Hook functions for the event\n */\nexport function makeEventFunctions(event) {\n return {\n listen: makeListenFunction(event),\n emit: makeEmitFunction(event),\n useListener: makeUseListenerFunction(event)\n };\n}\n//# sourceMappingURL=EventUtils.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport { getUniqueId, minifyConfig, EventEmitter } from \"../utils/index.js\";\n/**\n * Pops a content item out into a new browser window.\n * This is achieved by\n *\n * - Creating a new configuration with the content item as root element\n * - Serializing and minifying the configuration\n * - Opening the current window's URL with the configuration as a GET parameter\n * - GoldenLayout when opened in the new window will look for the GET parameter\n * and use it instead of the provided configuration\n *\n * @param config GoldenLayout item config\n * @param dimensions A map with width, height, top and left\n * @param parentId The id of the element the item will be appended to on popIn\n * @param indexInParent The position of this element within its parent\n * @param layoutManager\n */\nexport default class BrowserPopout extends EventEmitter {\n constructor(config, dimensions, parentId, indexInParent, layoutManager) {\n super();\n _defineProperty(this, \"isInitialised\", false);\n _defineProperty(this, \"_config\", void 0);\n _defineProperty(this, \"_dimensions\", void 0);\n _defineProperty(this, \"_parentId\", void 0);\n _defineProperty(this, \"_indexInParent\", void 0);\n _defineProperty(this, \"_layoutManager\", void 0);\n _defineProperty(this, \"_popoutWindow\", null);\n _defineProperty(this, \"_id\", null);\n this._config = config;\n this._dimensions = dimensions;\n this._parentId = parentId;\n this._indexInParent = indexInParent;\n this._layoutManager = layoutManager;\n this._createWindow();\n }\n toConfig() {\n var _this$getGlInstance, _this$getGlInstance2, _ref, _this$_popoutWindow$s, _this$_popoutWindow, _this$_popoutWindow2, _ref2, _this$_popoutWindow$s2, _this$_popoutWindow3, _this$_popoutWindow4, _this$getGlInstance3;\n if (this.isInitialised === false) {\n throw new Error(\"Can't create config, layout not yet initialised\");\n }\n return {\n dimensions: {\n width: (_this$getGlInstance = this.getGlInstance()) === null || _this$getGlInstance === void 0 ? void 0 : _this$getGlInstance.width,\n height: (_this$getGlInstance2 = this.getGlInstance()) === null || _this$getGlInstance2 === void 0 ? void 0 : _this$getGlInstance2.height,\n left: (_ref = (_this$_popoutWindow$s = (_this$_popoutWindow = this._popoutWindow) === null || _this$_popoutWindow === void 0 ? void 0 : _this$_popoutWindow.screenX) !== null && _this$_popoutWindow$s !== void 0 ? _this$_popoutWindow$s : (_this$_popoutWindow2 = this._popoutWindow) === null || _this$_popoutWindow2 === void 0 ? void 0 : _this$_popoutWindow2.screenLeft) !== null && _ref !== void 0 ? _ref : 0,\n top: (_ref2 = (_this$_popoutWindow$s2 = (_this$_popoutWindow3 = this._popoutWindow) === null || _this$_popoutWindow3 === void 0 ? void 0 : _this$_popoutWindow3.screenY) !== null && _this$_popoutWindow$s2 !== void 0 ? _this$_popoutWindow$s2 : (_this$_popoutWindow4 = this._popoutWindow) === null || _this$_popoutWindow4 === void 0 ? void 0 : _this$_popoutWindow4.screenTop) !== null && _ref2 !== void 0 ? _ref2 : 0\n },\n content: (_this$getGlInstance3 = this.getGlInstance()) === null || _this$getGlInstance3 === void 0 ? void 0 : _this$getGlInstance3.toConfig().content,\n parentId: this._parentId,\n indexInParent: this._indexInParent\n };\n }\n getGlInstance() {\n var _this$_popoutWindow5;\n return (_this$_popoutWindow5 = this._popoutWindow) === null || _this$_popoutWindow5 === void 0 ? void 0 : _this$_popoutWindow5.__glInstance;\n }\n getWindow() {\n return this._popoutWindow;\n }\n close() {\n if (this.getGlInstance()) {\n var _this$getGlInstance4;\n (_this$getGlInstance4 = this.getGlInstance()) === null || _this$getGlInstance4 === void 0 || _this$getGlInstance4._$closeWindow();\n } else {\n try {\n var _this$getWindow;\n (_this$getWindow = this.getWindow()) === null || _this$getWindow === void 0 || _this$getWindow.close();\n } catch (e) {}\n }\n }\n\n /**\n * Returns the popped out item to its original position. If the original\n * parent isn't available anymore it falls back to the layout's topmost element\n */\n popIn() {\n var _parentItem;\n var index = this._indexInParent;\n var childConfig = null;\n var parentItem = null;\n if (this._parentId) {\n var _this$getGlInstance5;\n /*\n * The $.extend call seems a bit pointless, but it's crucial to\n * copy the config returned by this.getGlInstance().toConfig()\n * onto a new object. Internet Explorer keeps the references\n * to objects on the child window, resulting in the following error\n * once the child window is closed:\n *\n * The callee (server [not server application]) is not available and disappeared\n */\n childConfig = $.extend(true, {}, (_this$getGlInstance5 = this.getGlInstance()) === null || _this$getGlInstance5 === void 0 ? void 0 : _this$getGlInstance5.toConfig()).content[0];\n parentItem = this._layoutManager.root.getItemsById(this._parentId)[0];\n\n /*\n * Fallback if parentItem is not available. Either add it to the topmost\n * item or make it the topmost item if the layout is empty\n */\n if (!parentItem) {\n var _this$_layoutManager$;\n if (((_this$_layoutManager$ = this._layoutManager.root.contentItems.length) !== null && _this$_layoutManager$ !== void 0 ? _this$_layoutManager$ : 0) > 0) {\n parentItem = this._layoutManager.root.contentItems[0];\n } else {\n parentItem = this._layoutManager.root;\n }\n index = 0;\n }\n }\n if (!childConfig) {\n return;\n }\n (_parentItem = parentItem) === null || _parentItem === void 0 || _parentItem.addChild(childConfig, this._indexInParent);\n this.close();\n }\n\n /**\n * Creates the URL and window parameter\n * and opens a new window\n */\n _createWindow() {\n var url = this._createUrl();\n /**\n * Bogus title to prevent re-usage of existing window with the\n * same title. The actual title will be set by the new window's\n * GoldenLayout instance if it detects that it is in subWindowMode\n */\n var title = Math.floor(Math.random() * 1000000).toString(36);\n /**\n * The options as used in the window.open string\n */\n var options = this._serializeWindowOptions({\n width: this._dimensions.width,\n height: this._dimensions.height,\n innerWidth: this._dimensions.width,\n innerHeight: this._dimensions.height,\n menubar: 'no',\n toolbar: 'no',\n location: 'no',\n personalbar: 'no',\n resizable: 'yes',\n scrollbars: 'no',\n status: 'no'\n });\n\n // I'm not entirely sure how __glInstance is mounted to the popout window\n this._popoutWindow = window.open(url, title, options);\n if (!this._popoutWindow) {\n if (this._layoutManager.config.settings.blockedPopoutsThrowError === true) {\n var error = new Error('Popout blocked');\n error.type = 'popoutBlocked';\n throw error;\n } else {\n return;\n }\n }\n $(this._popoutWindow).on('load', this._positionWindow.bind(this)).on('unload beforeunload', this._onClose.bind(this));\n\n /**\n * Polling the childwindow to find out if GoldenLayout has been initialised\n * doesn't seem optimal, but the alternatives - adding a callback to the parent\n * window or raising an event on the window object - both would introduce knowledge\n * about the parent to the child window which we'd rather avoid\n */\n var checkReadyInterval = window.setInterval(() => {\n var _this$_popoutWindow6;\n if ((_this$_popoutWindow6 = this._popoutWindow) !== null && _this$_popoutWindow6 !== void 0 && _this$_popoutWindow6.__glInstance && this._popoutWindow.__glInstance.isInitialised) {\n this._onInitialised();\n window.clearInterval(checkReadyInterval);\n }\n }, 10);\n }\n\n /**\n * Serialises a map of key:values to a window options string\n *\n * @param windowOptions\n *\n * @returns serialised window options\n */\n _serializeWindowOptions(windowOptions) {\n var windowOptionsString = [],\n key;\n for (key in windowOptions) {\n windowOptionsString.push(key + '=' + windowOptions[key]);\n }\n return windowOptionsString.join(',');\n }\n\n /**\n * Creates the URL for the new window, including the\n * config GET parameter\n *\n * @returns URL\n */\n _createUrl() {\n var config = {\n content: this._config\n };\n var storageKey = 'gl-window-config-' + getUniqueId();\n config = minifyConfig(config);\n try {\n localStorage.setItem(storageKey, JSON.stringify(config));\n } catch (e) {\n throw new Error('Error while writing to localStorage ' + e.toString());\n }\n var urlParts = document.location.href.split('?');\n\n // URL doesn't contain GET-parameters\n if (urlParts.length === 1) {\n return urlParts[0] + '?gl-window=' + storageKey;\n\n // URL contains GET-parameters\n } else {\n return document.location.href + '&gl-window=' + storageKey;\n }\n }\n\n /**\n * Move the newly created window roughly to\n * where the component used to be.\n */\n _positionWindow() {\n var _this$_popoutWindow7, _this$_popoutWindow8;\n (_this$_popoutWindow7 = this._popoutWindow) === null || _this$_popoutWindow7 === void 0 || _this$_popoutWindow7.moveTo(this._dimensions.left, this._dimensions.top);\n (_this$_popoutWindow8 = this._popoutWindow) === null || _this$_popoutWindow8 === void 0 || _this$_popoutWindow8.focus();\n }\n\n /**\n * Callback when the new window is opened and the GoldenLayout instance\n * within it is initialised\n */\n _onInitialised() {\n var _this$getGlInstance6;\n this.isInitialised = true;\n (_this$getGlInstance6 = this.getGlInstance()) === null || _this$getGlInstance6 === void 0 || _this$getGlInstance6.on('popIn', this.popIn, this);\n this.emit('initialised');\n }\n\n /**\n * Invoked 50ms after the window unload event\n */\n _onClose() {\n setTimeout(this.emit.bind(this, 'closed'), 50);\n }\n}\n//# sourceMappingURL=BrowserPopout.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport { stripTags, EventEmitter } from \"../utils/index.js\";\n/**\n * This class creates a temporary container\n * for the component whilst it is being dragged\n * and handles drag events\n *\n * @param x The initial x position\n * @param y The initial y position\n * @param dragListener\n * @param layoutManager\n * @param contentItem\n * @param originalParent\n */\nexport default class DragProxy extends EventEmitter {\n constructor(x, y, dragListener, layoutManager, contentItem, originalParent) {\n var _this$_contentItem$co, _this$_contentItem$co2, _offset$left, _offset$top, _this$_layoutManager$, _this$_layoutManager$2, _this$element$width, _this$element$height;\n super();\n _defineProperty(this, \"_dragListener\", void 0);\n _defineProperty(this, \"_layoutManager\", void 0);\n _defineProperty(this, \"_contentItem\", void 0);\n _defineProperty(this, \"_originalParent\", void 0);\n _defineProperty(this, \"_area\", null);\n _defineProperty(this, \"_lastValidArea\", null);\n _defineProperty(this, \"_minX\", void 0);\n _defineProperty(this, \"_maxX\", void 0);\n _defineProperty(this, \"_minY\", void 0);\n _defineProperty(this, \"_maxY\", void 0);\n _defineProperty(this, \"_width\", void 0);\n _defineProperty(this, \"_height\", void 0);\n _defineProperty(this, \"_sided\", void 0);\n _defineProperty(this, \"element\", void 0);\n _defineProperty(this, \"childElementContainer\", void 0);\n _defineProperty(this, \"_proxyTab\", void 0);\n this._dragListener = dragListener;\n this._layoutManager = layoutManager;\n this._contentItem = contentItem;\n this._originalParent = originalParent;\n this._dragListener.on('drag', this._onDrag, this);\n this._dragListener.on('dragStop', this._onDrop, this);\n\n // set the inserted drag placeholder to be the size of the tab removed, before its removed\n if (this._contentItem.tab && this._contentItem.tab.element) {\n var _this$_contentItem$ta, _this$_contentItem$ta2;\n this._layoutManager.tabDropPlaceholder.width((_this$_contentItem$ta = this._contentItem.tab.element.outerWidth(true)) !== null && _this$_contentItem$ta !== void 0 ? _this$_contentItem$ta : 0);\n this._layoutManager.tabDropPlaceholder.height((_this$_contentItem$ta2 = this._contentItem.tab.element.outerHeight(true)) !== null && _this$_contentItem$ta2 !== void 0 ? _this$_contentItem$ta2 : 0);\n }\n this.element = $(DragProxy._template);\n if (originalParent && originalParent._side) {\n this._sided = originalParent._sided;\n this.element.addClass('lm_' + originalParent._side);\n if (['right', 'bottom'].indexOf(originalParent._side.toString()) >= 0) this.element.find('.lm_content').after(this.element.find('.lm_header'));\n }\n this.element.css({\n left: x,\n top: y\n });\n this._proxyTab = this.element.find('.lm_tab');\n this._proxyTab.attr('title', stripTags((_this$_contentItem$co = this._contentItem.config.title) !== null && _this$_contentItem$co !== void 0 ? _this$_contentItem$co : ''));\n this.element.find('.lm_title').text((_this$_contentItem$co2 = this._contentItem.config.title) !== null && _this$_contentItem$co2 !== void 0 ? _this$_contentItem$co2 : '');\n this.childElementContainer = this.element.find('.lm_content');\n this.childElementContainer.append(contentItem.element);\n this._updateTree();\n this._layoutManager._$calculateItemAreas();\n $(document.body).append(this.element);\n\n // Need to set dimensions after adding the element, or `Component.setSize()` will not pass the `.is('visible')` test and won't update\n this._setDimensions();\n\n // there's no content tab to use yet, use the proxy tab size for placeholder sizing, after it's created\n if (!this._contentItem.tab && this._proxyTab.length) {\n var _this$_proxyTab$outer, _this$_proxyTab$outer2;\n this._layoutManager.tabDropPlaceholder.width((_this$_proxyTab$outer = this._proxyTab.outerWidth(true)) !== null && _this$_proxyTab$outer !== void 0 ? _this$_proxyTab$outer : 0);\n this._layoutManager.tabDropPlaceholder.height((_this$_proxyTab$outer2 = this._proxyTab.outerHeight(true)) !== null && _this$_proxyTab$outer2 !== void 0 ? _this$_proxyTab$outer2 : 0);\n }\n var offset = this._layoutManager.container.offset();\n this._minX = (_offset$left = offset === null || offset === void 0 ? void 0 : offset.left) !== null && _offset$left !== void 0 ? _offset$left : 0;\n this._minY = (_offset$top = offset === null || offset === void 0 ? void 0 : offset.top) !== null && _offset$top !== void 0 ? _offset$top : 0;\n this._maxX = ((_this$_layoutManager$ = this._layoutManager.container.width()) !== null && _this$_layoutManager$ !== void 0 ? _this$_layoutManager$ : 0) + this._minX;\n this._maxY = ((_this$_layoutManager$2 = this._layoutManager.container.height()) !== null && _this$_layoutManager$2 !== void 0 ? _this$_layoutManager$2 : 0) + this._minY;\n this._width = (_this$element$width = this.element.width()) !== null && _this$element$width !== void 0 ? _this$element$width : 0;\n this._height = (_this$element$height = this.element.height()) !== null && _this$element$height !== void 0 ? _this$element$height : 0;\n this._setDropPosition(x, y);\n this._layoutManager.emit('itemPickedUp', this._contentItem);\n }\n\n /**\n * Callback on every mouseMove event during a drag. Determines if the drag is\n * still within the valid drag area and calls the layoutManager to highlight the\n * current drop area\n *\n * @param offsetX The difference from the original x position in px\n * @param offsetY The difference from the original y position in px\n * @param event\n */\n _onDrag(offsetX, offsetY, event) {\n var _event$pageX, _event$pageY;\n var x = (_event$pageX = event.pageX) !== null && _event$pageX !== void 0 ? _event$pageX : 0;\n var y = (_event$pageY = event.pageY) !== null && _event$pageY !== void 0 ? _event$pageY : 0;\n var isWithinContainer = x > this._minX && x < this._maxX && y > this._minY && y < this._maxY;\n if (!isWithinContainer && this._layoutManager.config.settings.constrainDragToContainer === true) {\n return;\n }\n this._setDropPosition(x, y);\n }\n\n /**\n * Sets the target position, highlighting the appropriate area\n *\n * @param x The x position in px\n * @param y The y position in px\n */\n _setDropPosition(x, y) {\n this.element.css({\n left: x,\n top: y\n });\n this._area = this._layoutManager._$getArea(x, y);\n if (this._area !== null) {\n this._lastValidArea = this._area;\n this._area.contentItem._$highlightDropZone(x, y, this._area);\n }\n }\n\n /**\n * Callback when the drag has finished. Determines the drop area\n * and adds the child to it\n */\n _onDrop() {\n var _this$_layoutManager$3;\n (_this$_layoutManager$3 = this._layoutManager.dropTargetIndicator) === null || _this$_layoutManager$3 === void 0 || _this$_layoutManager$3.hide();\n\n /*\n * Valid drop area found\n */\n if (this._area !== null) {\n this._area.contentItem._$onDrop(this._contentItem, this._area);\n\n /**\n * No valid drop area available at present, but one has been found before.\n * Use it\n */\n } else if (this._lastValidArea !== null) {\n this._lastValidArea.contentItem._$onDrop(this._contentItem, this._lastValidArea);\n\n /**\n * No valid drop area found during the duration of the drag. Return\n * content item to its original position if a original parent is provided.\n * (Which is not the case if the drag had been initiated by createDragSource)\n */\n } else if (this._originalParent) {\n this._originalParent.addChild(this._contentItem);\n\n /**\n * The drag didn't ultimately end up with adding the content item to\n * any container. In order to ensure clean up happens, destroy the\n * content item.\n */\n } else {\n this._contentItem._$destroy();\n }\n this._dragListener.off('drag', this._onDrag, this);\n this._dragListener.off('dragStop', this._onDrop, this);\n this.element.remove();\n this._layoutManager.emit('itemDropped', this._contentItem);\n }\n\n /**\n * Removes the item from its original position within the tree\n */\n _updateTree() {\n /**\n * parent is null if the drag had been initiated by a external drag source\n */\n if (this._contentItem.parent) {\n this._contentItem.parent.removeChild(this._contentItem, true);\n }\n this._contentItem._$setParent(null);\n }\n\n /**\n * Updates the DragProxy's dimensions\n */\n _setDimensions() {\n var dimensions = this._layoutManager.config.dimensions;\n var width = dimensions.dragProxyWidth;\n var height = dimensions.dragProxyHeight;\n this.element.width(width);\n this.element.height(height);\n width -= this._sided ? dimensions.headerHeight : 0;\n height -= !this._sided ? dimensions.headerHeight : 0;\n this.childElementContainer.width(width);\n this.childElementContainer.height(height);\n this._contentItem.element.width(width);\n this._contentItem.element.height(height);\n this._contentItem.callDownwards('_$show');\n this._contentItem.callDownwards('setSize');\n }\n}\n_defineProperty(DragProxy, \"_template\", '<div class=\"lm_dragProxy\">' + '<div class=\"lm_header\">' + '<ul class=\"lm_tabs\">' + '<li class=\"lm_tab lm_active\"><i class=\"lm_left\"></i>' + '<span class=\"lm_title\"></span>' + '<i class=\"lm_right\"></i></li>' + '</ul>' + '</div>' + '<div class=\"lm_content\"></div>' + '</div>');\n//# sourceMappingURL=DragProxy.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport { DragListener } from \"../utils/index.js\";\nimport DragProxy from \"./DragProxy.js\";\n/**\n * Allows for any DOM item to create a component on drag\n * start tobe dragged into the Layout\n *\n * @param element\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n */\nexport default class DragSource {\n constructor(element, itemConfig, layoutManager) {\n _defineProperty(this, \"_element\", void 0);\n _defineProperty(this, \"_itemConfig\", void 0);\n _defineProperty(this, \"_layoutManager\", void 0);\n _defineProperty(this, \"_dragListener\", void 0);\n this._element = element;\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n this._dragListener = this._createDragListener();\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener() {\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._createDragListener, this);\n return this._dragListener;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x, y) {\n var itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n var contentItem = this._layoutManager._$normalizeContentItem($.extend(true, {}, itemConfig)),\n dragProxy = new DragProxy(x, y, this._dragListener, this._layoutManager, contentItem, null);\n }\n}\n//# sourceMappingURL=DragSource.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport { DragListener } from \"../utils/index.js\";\nimport DragProxy from \"./DragProxy.js\";\n/**\n * Creates a drag item given a starting mouseevent\n * that can then be dragged into the Layout\n *\n * @param itemConfig the configuration for the contentItem that will be created\n * @param layoutManager\n * @param event used to get the starting position\n */\nexport default class DragSourceFromEvent {\n constructor(itemConfig, layoutManager, event) {\n _defineProperty(this, \"_element\", $(window));\n // we need something to listen for mousemoves against\n _defineProperty(this, \"_itemConfig\", void 0);\n _defineProperty(this, \"_layoutManager\", void 0);\n _defineProperty(this, \"_dragListener\", void 0);\n this._itemConfig = itemConfig;\n this._layoutManager = layoutManager;\n this._createDragListener(event);\n }\n\n /**\n * Called initially and after every drag\n */\n _createDragListener(event) {\n if (this._dragListener) {\n this._dragListener.destroy();\n }\n if (!this._element) {\n return;\n }\n this._dragListener = new DragListener(this._element, true);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this._dragListener.on('dragStop', this._destroy, this);\n\n // manaully pass in an event as mousedow, that already happened to start the dragListener\n this._dragListener.onMouseDown(event);\n this._dragListener._startDrag();\n }\n _destroy() {\n this._dragListener = undefined;\n this._element = undefined;\n this._itemConfig = undefined;\n this._layoutManager = undefined;\n }\n\n /**\n * Callback for the DragListener's dragStart event\n *\n * @param x the x position of the mouse on dragStart\n * @param y the x position of the mouse on dragStart\n */\n _onDragStart(x, y) {\n if (!this._dragListener || !this._layoutManager) {\n return;\n }\n var itemConfig = this._itemConfig;\n if (typeof itemConfig === 'function') {\n itemConfig = itemConfig();\n }\n var contentItem = this._layoutManager._$normalizeContentItem($.extend(true, {}, itemConfig));\n new DragProxy(x, y, this._dragListener, this._layoutManager, contentItem, null);\n }\n}\n//# sourceMappingURL=DragSourceFromEvent.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nexport default class DropTargetIndicator {\n constructor() {\n _defineProperty(this, \"element\", $(DropTargetIndicator._template));\n $(document.body).append(this.element);\n }\n destroy() {\n this.element.remove();\n }\n highlightArea(area) {\n this.element.css({\n left: area.x1,\n top: area.y1,\n // marching ants were causing rendering artifacts with fractional pixels\n width: Math.floor(area.x2 - area.x1),\n height: Math.floor(area.y2 - area.y1)\n }).show();\n }\n hide() {\n this.element.hide();\n }\n}\n_defineProperty(DropTargetIndicator, \"_template\", '<div class=\"lm_dropTargetIndicator\"><div class=\"lm_inner\"></div></div>');\n//# sourceMappingURL=DropTargetIndicator.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nexport default class HeaderButton {\n constructor(header, label, cssClass, action) {\n _defineProperty(this, \"element\", void 0);\n _defineProperty(this, \"_header\", void 0);\n _defineProperty(this, \"_action\", void 0);\n this._header = header;\n this.element = $('<li class=\"' + cssClass + '\" title=\"' + label + '\"></li>');\n this._header.on('destroy', this._$destroy, this);\n this._action = action;\n this.element.on('click', this._action);\n this._header.controlsContainer.append(this.element);\n }\n _$destroy() {\n this.element.off();\n this.element.remove();\n }\n}\n//# sourceMappingURL=HeaderButton.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass ConfigurationError extends Error {\n constructor(message, node) {\n super();\n _defineProperty(this, \"node\", void 0);\n this.name = 'Configuration Error';\n this.message = message;\n this.node = node;\n }\n}\nexport default ConfigurationError;\n//# sourceMappingURL=ConfigurationError.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { animFrame, BubblingEvent, EventEmitter } from \"../utils/index.js\";\nimport { ConfigurationError } from \"../errors/index.js\";\nimport { itemDefaultConfig } from \"../config/index.js\";\nexport function isStack(item) {\n return item.isStack;\n}\nexport function isComponent(item) {\n return item.isComponent;\n}\nexport function isRoot(item) {\n return item.isRoot;\n}\n/**\n * This is the baseclass that all content items inherit from.\n * Most methods provide a subset of what the sub-classes do.\n *\n * It also provides a number of functions for tree traversal\n *\n * @param {lm.LayoutManager} layoutManager\n * @param {item node configuration} config\n * @param {lm.item} parent\n *\n * @event stateChanged\n * @event beforeItemDestroyed\n * @event itemDestroyed\n * @event itemCreated\n * @event componentCreated\n * @event rowCreated\n * @event columnCreated\n * @event stackCreated\n *\n * @constructor\n */\nexport default class AbstractContentItem extends EventEmitter {\n constructor(layoutManager, config, parent, element) {\n super();\n _defineProperty(this, \"config\", void 0);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"contentItems\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"layoutManager\", void 0);\n _defineProperty(this, \"element\", void 0);\n _defineProperty(this, \"childElementContainer\", void 0);\n _defineProperty(this, \"componentName\", void 0);\n _defineProperty(this, \"isInitialised\", false);\n _defineProperty(this, \"isMaximised\", false);\n _defineProperty(this, \"isRoot\", false);\n _defineProperty(this, \"isRow\", false);\n _defineProperty(this, \"isColumn\", false);\n _defineProperty(this, \"isStack\", false);\n _defineProperty(this, \"isComponent\", false);\n _defineProperty(this, \"tab\", void 0);\n _defineProperty(this, \"_pendingEventPropagations\", void 0);\n _defineProperty(this, \"_throttledEvents\", void 0);\n this.element = element;\n\n // Some GL things expect this config to not change\n this.config = this._extendItemNode(config);\n this.type = config.type;\n this.contentItems = [];\n this.parent = parent;\n this.layoutManager = layoutManager;\n this._pendingEventPropagations = {};\n this._throttledEvents = ['stateChanged'];\n this.on(EventEmitter.ALL_EVENT, this._propagateEvent, this);\n if (config.content) {\n this._createContentItems(config);\n }\n }\n\n /**\n * Set the size of the component and its children, called recursively\n *\n * @abstract\n */\n\n /**\n * Calls a method recursively downwards on the tree\n *\n * @param functionName the name of the function to be called\n * @param functionArguments optional arguments that are passed to every function\n * @param bottomUp Call methods from bottom to top, defaults to false\n * @param skipSelf Don't invoke the method on the class that calls it, defaults to false\n */\n callDownwards(functionName) {\n var functionArguments = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var bottomUp = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var skipSelf = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (bottomUp !== true && skipSelf !== true) {\n this[functionName].apply(this, functionArguments);\n }\n for (var i = 0; i < this.contentItems.length; i++) {\n this.contentItems[i].callDownwards(functionName, functionArguments, bottomUp);\n }\n if (bottomUp === true && skipSelf !== true) {\n this[functionName].apply(this, functionArguments);\n }\n }\n\n /**\n * Removes a child node (and its children) from the tree\n *\n * @param contentItem\n */\n removeChild(contentItem) {\n var _this$config$content;\n var keepChild = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n /*\n * Get the position of the item that's to be removed within all content items this node contains\n */\n var index = this.contentItems.indexOf(contentItem);\n\n /*\n * Make sure the content item to be removed is actually a child of this item\n */\n if (index === -1) {\n throw new Error(\"Can't remove child item. Unknown content item\");\n }\n\n /**\n * Call ._$destroy on the content item. This also calls ._$destroy on all its children\n */\n if (keepChild !== true) {\n this.contentItems[index]._$destroy();\n }\n\n /**\n * Remove the content item from this nodes array of children\n */\n this.contentItems.splice(index, 1);\n\n /**\n * Remove the item from the configuration\n */\n (_this$config$content = this.config.content) === null || _this$config$content === void 0 || _this$config$content.splice(index, 1);\n\n /**\n * If this node still contains other content items, adjust their size\n */\n if (this.contentItems.length > 0) {\n this.callDownwards('setSize');\n\n /**\n * If this was the last content item, remove this node as well\n */\n } else if (this.type !== 'root' && this.config.isClosable) {\n var _this$parent;\n (_this$parent = this.parent) === null || _this$parent === void 0 || _this$parent.removeChild(this);\n }\n }\n\n /**\n * Sets up the tree structure for the newly added child\n * The responsibility for the actual DOM manipulations lies\n * with the concrete item\n *\n * @param contentItem\n * @param index If omitted item will be appended\n */\n addChild(contentItem, index) {\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n if (index === undefined) {\n index = this.contentItems.length;\n }\n this.contentItems.splice(index, 0, contentItem);\n if (this.config.content === undefined) {\n this.config.content = [];\n }\n this.config.content.splice(index, 0, contentItem.config);\n contentItem.parent = this;\n if (contentItem.parent.isInitialised === true && contentItem.isInitialised === false) {\n contentItem._$init();\n }\n }\n\n /**\n * Replaces oldChild with newChild. This used to use jQuery.replaceWith... which for\n * some reason removes all event listeners, so isn't really an option.\n *\n * @param oldChild\n * @param newChild\n */\n replaceChild(oldChild, newChild) {\n var _$destroyOldChild = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n newChild = this.layoutManager._$normalizeContentItem(newChild);\n var index = this.contentItems.indexOf(oldChild);\n var parentNode = oldChild.element[0].parentNode;\n if (index === -1) {\n throw new Error(\"Can't replace child. oldChild is not child of this\");\n }\n parentNode === null || parentNode === void 0 || parentNode.replaceChild(newChild.element[0], oldChild.element[0]);\n\n /*\n * Optionally destroy the old content item\n */\n if (_$destroyOldChild === true) {\n oldChild.parent = null;\n oldChild._$destroy();\n }\n\n /*\n * Wire the new contentItem into the tree\n */\n this.contentItems[index] = newChild;\n newChild.parent = this;\n\n /*\n * Update tab reference\n */\n if (isStack(this)) {\n this.header.tabs[index].contentItem = newChild;\n }\n\n //TODO This doesn't update the config... refactor to leave item nodes untouched after creation\n if (newChild.parent.isInitialised === true && newChild.isInitialised === false) {\n newChild._$init();\n }\n this.callDownwards('setSize');\n }\n\n /**\n * Convenience method.\n * Shorthand for this.parent.removeChild( this )\n */\n remove() {\n var _this$parent2;\n (_this$parent2 = this.parent) === null || _this$parent2 === void 0 || _this$parent2.removeChild(this);\n }\n\n /**\n * Removes the component from the layout and creates a new\n * browser window with the component and its children inside\n */\n popout() {\n var browserPopout = this.layoutManager.createPopout(this);\n this.emitBubblingEvent('stateChanged');\n return browserPopout;\n }\n\n /**\n * Maximises the Item or minimises it if it is already maximised\n */\n toggleMaximise(e) {\n e && e.preventDefault();\n if (this.isMaximised === true) {\n this.layoutManager._$minimiseItem(this);\n } else {\n this.layoutManager._$maximiseItem(this);\n }\n this.isMaximised = !this.isMaximised;\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Selects the item if it is not already selected\n */\n select() {\n if (this.layoutManager.selectedItem !== this) {\n this.layoutManager.selectItem(this, true);\n this.element.addClass('lm_selected');\n }\n }\n\n /**\n * De-selects the item if it is selected\n */\n deselect() {\n if (this.layoutManager.selectedItem === this) {\n this.layoutManager.selectedItem = null;\n this.element.removeClass('lm_selected');\n }\n }\n\n /**\n * Set this component's title\n * @param title\n */\n setTitle(title) {\n this.config.title = title;\n this.emit('titleChanged', title);\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Checks whether a provided id is present\n * @param id\n * @returns isPresent\n */\n hasId(id) {\n if (!this.config.id) {\n return false;\n } else if (typeof this.config.id === 'string') {\n return this.config.id === id;\n } else if (this.config.id instanceof Array) {\n return this.config.id.indexOf(id) !== -1;\n }\n }\n\n /**\n * Adds an id. Adds it as a string if the component doesn't\n * have an id yet or creates/uses an array\n * @param id\n */\n addId(id) {\n if (this.hasId(id)) {\n return;\n }\n if (!this.config.id) {\n this.config.id = id;\n } else if (typeof this.config.id === 'string') {\n this.config.id = [this.config.id, id];\n } else if (this.config.id instanceof Array) {\n this.config.id.push(id);\n }\n }\n\n /**\n * Removes an existing id. Throws an error\n * if the id is not present\n * @param id\n */\n removeId(id) {\n if (!this.hasId(id)) {\n throw new Error('Id not found');\n }\n if (typeof this.config.id === 'string') {\n delete this.config.id;\n } else if (this.config.id instanceof Array) {\n var index = this.config.id.indexOf(id);\n this.config.id.splice(index, 1);\n }\n }\n\n /****************************************\n * SELECTOR\n ****************************************/\n getItemsByFilter(filter) {\n var result = [];\n var _next = function next(contentItem) {\n for (var i = 0; i < contentItem.contentItems.length; i++) {\n if (filter(contentItem.contentItems[i]) === true) {\n result.push(contentItem.contentItems[i]);\n }\n _next(contentItem.contentItems[i]);\n }\n };\n _next(this);\n return result;\n }\n getItemsById(id) {\n return this.getItemsByFilter(function (item) {\n if (item.config.id instanceof Array) {\n return item.config.id.indexOf(id) !== -1;\n } else {\n return item.config.id === id;\n }\n });\n }\n getItemsByType(type) {\n return this._$getItemsByProperty('type', type);\n }\n getComponentsByName(componentName) {\n var components = this._$getItemsByProperty('componentName', componentName);\n var instances = [];\n for (var i = 0; i < components.length; i++) {\n instances.push(components[i].instance);\n }\n return instances;\n }\n\n /****************************************\n * PACKAGE PRIVATE\n ****************************************/\n _$getItemsByProperty(key, value) {\n return this.getItemsByFilter(function (item) {\n return item[key] === value;\n });\n }\n _$setParent(parent) {\n this.parent = parent;\n }\n _$highlightDropZone(x, y, area) {\n var _this$layoutManager$d;\n (_this$layoutManager$d = this.layoutManager.dropTargetIndicator) === null || _this$layoutManager$d === void 0 || _this$layoutManager$d.highlightArea(area);\n }\n _$onDrop(contentItem, area) {\n this.addChild(contentItem);\n }\n _$hide() {\n this._callOnActiveComponents('hide');\n this.element.hide();\n this.layoutManager.updateSize();\n }\n _$show() {\n this._callOnActiveComponents('show');\n this.element.show();\n this.layoutManager.updateSize();\n }\n _callOnActiveComponents(methodName) {\n var stacks = this.getItemsByType('stack');\n var activeContentItem = null;\n for (var i = 0; i < stacks.length; i++) {\n activeContentItem = stacks[i].getActiveContentItem();\n if (activeContentItem && isComponent(activeContentItem)) {\n activeContentItem.container[methodName]();\n }\n }\n }\n\n /**\n * Destroys this item ands its children\n */\n _$destroy() {\n this.emitBubblingEvent('beforeItemDestroyed');\n this.callDownwards('_$destroy', [], true, true);\n this.element.remove();\n this.emitBubblingEvent('itemDestroyed');\n }\n\n /**\n * Returns the area the component currently occupies in the format\n *\n * {\n *\t\tx1: int\n *\t\tx2: int\n *\t\ty1: int\n *\t\ty2: int\n *\t\tcontentItem: contentItem\n * }\n */\n _$getArea(element) {\n var _element$offset, _element$width, _element$height;\n element = element || this.element;\n var offset = (_element$offset = element.offset()) !== null && _element$offset !== void 0 ? _element$offset : {\n left: 0,\n top: 0\n };\n var width = (_element$width = element.width()) !== null && _element$width !== void 0 ? _element$width : 0;\n var height = (_element$height = element.height()) !== null && _element$height !== void 0 ? _element$height : 0;\n return {\n x1: offset.left,\n y1: offset.top,\n x2: offset.left + width,\n y2: offset.top + height,\n surface: width * height,\n contentItem: this,\n side: ''\n };\n }\n\n /**\n * The tree of content items is created in two steps: First all content items are instantiated,\n * then init is called recursively from top to bottem. This is the basic init function,\n * it can be used, extended or overwritten by the content items\n *\n * Its behaviour depends on the content item\n */\n _$init() {\n this.setSize();\n for (var i = 0; i < this.contentItems.length; i++) {\n var _this$childElementCon;\n (_this$childElementCon = this.childElementContainer) === null || _this$childElementCon === void 0 || _this$childElementCon.append(this.contentItems[i].element);\n }\n this.isInitialised = true;\n this.emitBubblingEvent('itemCreated');\n this.emitBubblingEvent(this.type + 'Created');\n }\n\n /**\n * Emit an event that bubbles up the item tree.\n *\n * @param name The name of the event\n */\n emitBubblingEvent(name) {\n var event = new BubblingEvent(name, this);\n this.emit(name, event);\n }\n\n /**\n * Private method, creates all content items for this node at initialisation time\n * PLEASE NOTE, please see addChild for adding contentItems add runtime\n * @param {configuration item node} config\n */\n _createContentItems(config) {\n var oContentItem;\n if (!(config.content instanceof Array)) {\n throw new ConfigurationError('content must be an Array', config);\n }\n for (var i = 0; i < config.content.length; i++) {\n oContentItem = this.layoutManager.createContentItem(config.content[i], this);\n this.contentItems.push(oContentItem);\n }\n }\n\n /**\n * Extends an item configuration node with default settings\n * @param config\n * @returns extended config\n */\n _extendItemNode(config) {\n for (var [key, value] of Object.entries(itemDefaultConfig)) {\n // This just appeases TS\n var k = key;\n if (config[k] === undefined) {\n config[k] = value;\n }\n }\n return config;\n }\n\n /**\n * Called for every event on the item tree. Decides whether the event is a bubbling\n * event and propagates it to its parent\n *\n * @param name the name of the event\n * @param event\n */\n _propagateEvent(name, event) {\n if (event instanceof BubblingEvent && event.isPropagationStopped === false && this.isInitialised === true) {\n /**\n * In some cases (e.g. if an element is created from a DragSource) it\n * doesn't have a parent and is not below root. If that's the case\n * propagate the bubbling event from the top level of the substree directly\n * to the layoutManager\n */\n if (this.isRoot === false && this.parent) {\n this.parent.emit.apply(this.parent, [name, event]);\n } else {\n this._scheduleEventPropagationToLayoutManager(name, event);\n }\n }\n }\n\n /**\n * All raw events bubble up to the root element. Some events that\n * are propagated to - and emitted by - the layoutManager however are\n * only string-based, batched and sanitized to make them more usable\n *\n * @param name the name of the event\n */\n _scheduleEventPropagationToLayoutManager(name, event) {\n if (this._throttledEvents.indexOf(name) === -1) {\n this.layoutManager.emit(name, event.origin);\n } else {\n if (this._pendingEventPropagations[name] !== true) {\n this._pendingEventPropagations[name] = true;\n animFrame(this._propagateEventToLayoutManager.bind(this, name, event));\n }\n }\n }\n\n /**\n * Callback for events scheduled by _scheduleEventPropagationToLayoutManager\n *\n * @param name the name of the event\n */\n _propagateEventToLayoutManager(name, event) {\n this._pendingEventPropagations[name] = false;\n this.layoutManager.emit(name, event);\n }\n}\n//# sourceMappingURL=AbstractContentItem.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport AbstractContentItem from \"./AbstractContentItem.js\";\nimport { ConfigurationError } from \"../errors/index.js\";\nimport ItemContainer from \"../container/ItemContainer.js\";\n/**\n * @param layoutManager\n * @param config\n * @param parent\n */\nexport default class Component extends AbstractContentItem {\n constructor(layoutManager, config, parent) {\n var _layoutManager$config;\n // Extend before super so the AbstractContentItem defualts aren't applied first\n Object.entries((_layoutManager$config = layoutManager.config.settings.defaultComponentConfig) !== null && _layoutManager$config !== void 0 ? _layoutManager$config : {}).forEach(_ref => {\n var [k, v] = _ref;\n // @ts-ignore\n if (config[k] === undefined) {\n // @ts-ignore\n config[k] = v;\n }\n });\n super(layoutManager, config, parent, $());\n _defineProperty(this, \"config\", void 0);\n _defineProperty(this, \"componentName\", void 0);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"instance\", void 0);\n this.config = config;\n this.parent = parent;\n var ComponentConstructor = layoutManager.getComponent(this.config.componentName) || layoutManager.getFallbackComponent(),\n componentConfig = $.extend(true, {}, this.config.componentState || {});\n if (ComponentConstructor == null) {\n throw new ConfigurationError('Unknown component \"' + this.config.componentName + '\"');\n }\n componentConfig.componentName = this.config.componentName;\n this.componentName = this.config.componentName;\n if (this.config.title === '') {\n this.config.title = this.config.componentName;\n }\n this.isComponent = true;\n this.container = new ItemContainer(this.config, this, layoutManager);\n this.instance = new ComponentConstructor(this.container, componentConfig);\n this.element = this.container._element;\n }\n close() {\n var _this$parent;\n (_this$parent = this.parent) === null || _this$parent === void 0 || _this$parent.removeChild(this);\n }\n setSize() {\n if (this.element.is(':visible')) {\n // Do not update size of hidden components to prevent unwanted reflows\n this.container._$setSize(this.element.width(), this.element.height());\n }\n }\n _$init() {\n AbstractContentItem.prototype._$init.call(this);\n this.container.emit('open');\n }\n _$hide() {\n this.container.hide();\n AbstractContentItem.prototype._$hide.call(this);\n }\n _$show(forceFocus) {\n this.container.show();\n if (this.container._config.isFocusOnShow || forceFocus) {\n // focus the shown container element on show\n // preventScroll isn't supported in safari, but also doesn't matter for illumon when 100% window\n this.container._contentElement[0].focus({\n preventScroll: true\n });\n }\n AbstractContentItem.prototype._$show.call(this);\n }\n _$destroy() {\n this.container.emit('destroy', this);\n AbstractContentItem.prototype._$destroy.call(this);\n }\n\n /**\n * Dragging onto a component directly is not an option\n *\n * @returns null\n */\n _$getArea() {\n return null;\n }\n}\n//# sourceMappingURL=Component.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport AbstractContentItem from \"./AbstractContentItem.js\";\nimport { animFrame } from \"../utils/index.js\";\nimport { Splitter } from \"../controls/index.js\";\nexport default class RowOrColumn extends AbstractContentItem {\n constructor(isColumn, layoutManager, config, parent) {\n super(layoutManager, config, parent, $('<div class=\"lm_item lm_' + (isColumn ? 'column' : 'row') + '\"></div>'));\n _defineProperty(this, \"isRow\", void 0);\n _defineProperty(this, \"isColumn\", void 0);\n _defineProperty(this, \"childElementContainer\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"_splitter\", []);\n _defineProperty(this, \"_splitterSize\", void 0);\n _defineProperty(this, \"_splitterGrabSize\", void 0);\n _defineProperty(this, \"_isColumn\", void 0);\n _defineProperty(this, \"_dimension\", void 0);\n _defineProperty(this, \"_splitterPosition\", null);\n _defineProperty(this, \"_splitterMinPosition\", null);\n _defineProperty(this, \"_splitterMaxPosition\", null);\n this.parent = parent;\n this.isRow = !isColumn;\n this.isColumn = isColumn;\n this.childElementContainer = this.element;\n this._splitterSize = layoutManager.config.dimensions.borderWidth;\n this._splitterGrabSize = layoutManager.config.dimensions.borderGrabWidth;\n this._isColumn = isColumn;\n this._dimension = isColumn ? 'height' : 'width';\n this._splitterPosition = null;\n this._splitterMinPosition = null;\n this._splitterMaxPosition = null;\n }\n\n /**\n * Add a new contentItem to the Row or Column\n *\n * @param contentItem\n * @param index The position of the new item within the Row or Column.\n * If no index is provided the item will be added to the end\n * @param _$suspendResize If true the items won't be resized. This will leave the item in\n * an inconsistent state and is only intended to be used if multiple\n * children need to be added in one go and resize is called afterwards\n */\n addChild(contentItem, index, _$suspendResize) {\n var newItemSize, itemSize, i, splitterElement;\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n if (index === undefined) {\n index = this.contentItems.length;\n }\n if (this.contentItems.length > 0) {\n splitterElement = this._createSplitter(Math.max(0, index - 1)).element;\n if (index > 0) {\n this.contentItems[index - 1].element.after(splitterElement);\n splitterElement.after(contentItem.element);\n } else {\n this.contentItems[0].element.before(splitterElement);\n splitterElement.before(contentItem.element);\n }\n } else {\n this.childElementContainer.append(contentItem.element);\n }\n AbstractContentItem.prototype.addChild.call(this, contentItem, index);\n newItemSize = 1 / this.contentItems.length * 100;\n if (_$suspendResize === true) {\n this.emitBubblingEvent('stateChanged');\n return;\n }\n for (i = 0; i < this.contentItems.length; i++) {\n if (this.contentItems[i] === contentItem) {\n contentItem.config[this._dimension] = newItemSize;\n } else {\n var _this$contentItems$i$;\n itemSize = ((_this$contentItems$i$ = this.contentItems[i].config[this._dimension]) !== null && _this$contentItems$i$ !== void 0 ? _this$contentItems$i$ : 0) * (100 - newItemSize) / 100;\n this.contentItems[i].config[this._dimension] = itemSize;\n }\n }\n this.callDownwards('setSize');\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Removes a child of this element\n *\n * @param contentItem\n * @param keepChild If true the child will be removed, but not destroyed\n */\n removeChild(contentItem, keepChild) {\n var _contentItem$config$t;\n var removedItemSize = (_contentItem$config$t = contentItem.config[this._dimension]) !== null && _contentItem$config$t !== void 0 ? _contentItem$config$t : 0,\n index = this.contentItems.indexOf(contentItem),\n splitterIndex = Math.max(index - 1, 0),\n i,\n childItem;\n if (index === -1) {\n throw new Error(\"Can't remove child. ContentItem is not child of this Row or Column\");\n }\n\n /**\n * Remove the splitter before the item or after if the item happens\n * to be the first in the row/column\n */\n if (this._splitter[splitterIndex]) {\n this._splitter[splitterIndex]._$destroy();\n this._splitter.splice(splitterIndex, 1);\n }\n\n /**\n * Allocate the space that the removed item occupied to the remaining items\n */\n for (i = 0; i < this.contentItems.length; i++) {\n if (this.contentItems[i] !== contentItem) {\n var _this$contentItems$i$2;\n this.contentItems[i].config[this._dimension] = ((_this$contentItems$i$2 = this.contentItems[i].config[this._dimension]) !== null && _this$contentItems$i$2 !== void 0 ? _this$contentItems$i$2 : 0) + removedItemSize / (this.contentItems.length - 1);\n }\n }\n AbstractContentItem.prototype.removeChild.call(this, contentItem, keepChild);\n if (this.contentItems.length === 1 && this.config.isClosable === true) {\n var _this$parent;\n childItem = this.contentItems[0];\n this.contentItems = [];\n (_this$parent = this.parent) === null || _this$parent === void 0 || _this$parent.replaceChild(this, childItem, true);\n } else {\n this.callDownwards('setSize');\n this.emitBubblingEvent('stateChanged');\n }\n }\n\n /**\n * Replaces a child of this Row or Column with another contentItem\n *\n * @param oldChild The old child to replace\n * @param newChild The new child to take the old child's place\n * @param destroyOldChild If the old child should be destroyed or not\n */\n replaceChild(oldChild, newChild) {\n var destroyOldChild = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var size = oldChild.config[this._dimension];\n newChild.config[this._dimension] = size;\n super.replaceChild(oldChild, newChild, destroyOldChild);\n this.callDownwards('setSize');\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Called whenever the dimensions of this item or one of its parents change\n */\n setSize() {\n if (this.contentItems.length > 0) {\n this._calculateRelativeSizes();\n this._setAbsoluteSizes();\n }\n this.emitBubblingEvent('stateChanged');\n this.emit('resize');\n }\n\n /**\n * Invoked recursively by the layout manager. AbstractContentItem.init appends\n * the contentItem's DOM elements to the container, RowOrColumn init adds splitters\n * in between them\n */\n _$init() {\n if (this.isInitialised === true) return;\n var i;\n AbstractContentItem.prototype._$init.call(this);\n for (i = 0; i < this.contentItems.length - 1; i++) {\n this.contentItems[i].element.after(this._createSplitter(i).element);\n }\n }\n\n /**\n * Turns the relative sizes calculated by _calculateRelativeSizes into\n * absolute pixel values and applies them to the children's DOM elements\n *\n * Assigns additional pixels to counteract Math.floor\n */\n _setAbsoluteSizes() {\n var i,\n sizeData = this._calculateAbsoluteSizes();\n for (i = 0; i < this.contentItems.length; i++) {\n if (sizeData.additionalPixel - i > 0) {\n sizeData.itemSizes[i]++;\n }\n if (this._isColumn) {\n this.contentItems[i].element.width(sizeData.totalWidth);\n this.contentItems[i].element.height(sizeData.itemSizes[i]);\n } else {\n this.contentItems[i].element.width(sizeData.itemSizes[i]);\n this.contentItems[i].element.height(sizeData.totalHeight);\n }\n }\n }\n\n /**\n * Calculates the absolute sizes of all of the children of this Item.\n * @returns {object} - Set with absolute sizes and additional pixels.\n */\n _calculateAbsoluteSizes() {\n var _this$element$width, _this$element$height;\n var totalSplitterSize = (this.contentItems.length - 1) * this._splitterSize;\n var totalWidth = (_this$element$width = this.element.width()) !== null && _this$element$width !== void 0 ? _this$element$width : 0;\n var totalHeight = (_this$element$height = this.element.height()) !== null && _this$element$height !== void 0 ? _this$element$height : 0;\n var totalAssigned = 0;\n var itemSizes = [];\n if (this._isColumn) {\n totalHeight -= totalSplitterSize;\n } else {\n totalWidth -= totalSplitterSize;\n }\n for (var i = 0; i < this.contentItems.length; i++) {\n var _this$contentItems$i$3, _this$contentItems$i$4;\n var itemSize = this._isColumn ? Math.floor(totalHeight * (((_this$contentItems$i$3 = this.contentItems[i].config.height) !== null && _this$contentItems$i$3 !== void 0 ? _this$contentItems$i$3 : 0) / 100)) : Math.floor(totalWidth * (((_this$contentItems$i$4 = this.contentItems[i].config.width) !== null && _this$contentItems$i$4 !== void 0 ? _this$contentItems$i$4 : 0) / 100));\n totalAssigned += itemSize;\n itemSizes.push(itemSize);\n }\n var additionalPixel = Math.floor((this._isColumn ? totalHeight : totalWidth) - totalAssigned);\n return {\n itemSizes,\n additionalPixel,\n totalWidth,\n totalHeight\n };\n }\n\n /**\n * Calculates the relative sizes of all children of this Item. The logic\n * is as follows:\n *\n * - Add up the total size of all items that have a configured size\n *\n * - If the total == 100 (check for floating point errors)\n * Excellent, job done\n *\n * - If the total is > 100,\n * set the size of items without set dimensions to 1/3 and add this to the total\n * set the size off all items so that the total is hundred relative to their original size\n *\n * - If the total is < 100\n * If there are items without set dimensions, distribute the remainder to 100 evenly between them\n * If there are no items without set dimensions, increase all items sizes relative to\n * their original size so that they add up to 100\n */\n _calculateRelativeSizes() {\n var total = 0;\n var itemsWithoutSetDimension = [];\n var dimension = this._isColumn ? 'height' : 'width';\n for (var i = 0; i < this.contentItems.length; i++) {\n var size = this.contentItems[i].config[dimension];\n if (size != null) {\n total += size;\n } else {\n itemsWithoutSetDimension.push(this.contentItems[i]);\n }\n }\n\n /**\n * Everything adds up to hundred, all good :-)\n */\n if (Math.round(total) === 100) {\n this._respectMinItemWidth();\n return;\n }\n\n /**\n * Allocate the remaining size to the items without a set dimension\n */\n if (Math.round(total) < 100 && itemsWithoutSetDimension.length > 0) {\n for (var _i = 0; _i < itemsWithoutSetDimension.length; _i++) {\n itemsWithoutSetDimension[_i].config[dimension] = (100 - total) / itemsWithoutSetDimension.length;\n }\n this._respectMinItemWidth();\n return;\n }\n\n /**\n * If the total is > 100, but there are also items without a set dimension left, assing 50\n * as their dimension and add it to the total\n *\n * This will be reset in the next step\n */\n if (Math.round(total) > 100) {\n for (var _i2 = 0; _i2 < itemsWithoutSetDimension.length; _i2++) {\n itemsWithoutSetDimension[_i2].config[dimension] = 50;\n total += 50;\n }\n }\n\n /**\n * Set every items size relative to 100 relative to its size to total\n */\n for (var _i3 = 0; _i3 < this.contentItems.length; _i3++) {\n var _this$contentItems$_i;\n this.contentItems[_i3].config[dimension] = ((_this$contentItems$_i = this.contentItems[_i3].config[dimension]) !== null && _this$contentItems$_i !== void 0 ? _this$contentItems$_i : 0) / total * 100;\n }\n this._respectMinItemWidth();\n }\n\n /**\n * Adjusts the column widths to respect the dimensions minItemWidth if set.\n */\n _respectMinItemWidth() {\n var _this$layoutManager$c;\n var minItemWidth = this.layoutManager.config.dimensions ? (_this$layoutManager$c = this.layoutManager.config.dimensions.minItemWidth) !== null && _this$layoutManager$c !== void 0 ? _this$layoutManager$c : 0 : 0;\n var entriesOverMin = [];\n var totalOverMin = 0;\n var totalUnderMin = 0;\n var remainingWidth = 0;\n var allEntries = [];\n var entry;\n if (this._isColumn || !minItemWidth || this.contentItems.length <= 1) {\n return;\n }\n var sizeData = this._calculateAbsoluteSizes();\n\n /**\n * Figure out how much we are under the min item size total and how much room we have to use.\n */\n for (var i = 0; i < this.contentItems.length; i++) {\n var contentItem = this.contentItems[i];\n var itemSize = sizeData.itemSizes[i];\n if (itemSize < minItemWidth) {\n totalUnderMin += minItemWidth - itemSize;\n entry = {\n width: minItemWidth\n };\n } else {\n totalOverMin += itemSize - minItemWidth;\n entry = {\n width: itemSize\n };\n entriesOverMin.push(entry);\n }\n allEntries.push(entry);\n }\n\n /**\n * If there is nothing under min, or there is not enough over to make up the difference, do nothing.\n */\n if (totalUnderMin === 0 || totalUnderMin > totalOverMin) {\n return;\n }\n\n /**\n * Evenly reduce all columns that are over the min item width to make up the difference.\n */\n var reducePercent = totalUnderMin / totalOverMin;\n remainingWidth = totalUnderMin;\n for (var _i4 = 0; _i4 < entriesOverMin.length; _i4++) {\n entry = entriesOverMin[_i4];\n var reducedWidth = Math.round((entry.width - minItemWidth) * reducePercent);\n remainingWidth -= reducedWidth;\n entry.width -= reducedWidth;\n }\n\n /**\n * Take anything remaining from the last item.\n */\n if (remainingWidth !== 0) {\n allEntries[allEntries.length - 1].width -= remainingWidth;\n }\n\n /**\n * Set every items size relative to 100 relative to its size to total\n */\n for (var _i5 = 0; _i5 < this.contentItems.length; _i5++) {\n this.contentItems[_i5].config.width = allEntries[_i5].width / sizeData.totalWidth * 100;\n }\n }\n\n /**\n * Instantiates a new lm.controls.Splitter, binds events to it and adds\n * it to the array of splitters at the position specified as the index argument\n *\n * What it doesn't do though is append the splitter to the DOM\n *\n * @param index The position of the splitter\n * @returns The created splitter\n */\n _createSplitter(index) {\n var splitter;\n splitter = new Splitter(this._isColumn, this._splitterSize, this._splitterGrabSize);\n splitter.on('drag', this._onSplitterDrag.bind(this, splitter), this);\n splitter.on('dragStop', this._onSplitterDragStop.bind(this, splitter), this);\n splitter.on('dragStart', this._onSplitterDragStart.bind(this, splitter), this);\n this._splitter.splice(index, 0, splitter);\n return splitter;\n }\n\n /**\n * Locates the instance of lm.controls.Splitter in the array of\n * registered splitters and returns a map containing the contentItem\n * before and after the splitters, both of which are affected if the\n * splitter is moved\n *\n * @param splitter\n *\n * @returns A map of contentItems that the splitter affects\n */\n _getItemsForSplitter(splitter) {\n var index = this._splitter.indexOf(splitter);\n if (index < 0) {\n throw new Error('Splitter not found in RowOrColumn');\n }\n return {\n before: this.contentItems[index],\n after: this.contentItems[index + 1]\n };\n }\n\n /**\n * Gets the minimum dimensions for the given item configuration array\n * @param item\n * @private\n */\n _getMinimumDimensions(arr) {\n var minWidth = 0,\n minHeight = 0;\n for (var i = 0; i < arr.length; ++i) {\n var _arr$i$minWidth, _arr$i$minHeight;\n minWidth = Math.max((_arr$i$minWidth = arr[i].minWidth) !== null && _arr$i$minWidth !== void 0 ? _arr$i$minWidth : 0, minWidth);\n minHeight = Math.max((_arr$i$minHeight = arr[i].minHeight) !== null && _arr$i$minHeight !== void 0 ? _arr$i$minHeight : 0, minHeight);\n }\n return {\n horizontal: minWidth,\n vertical: minHeight\n };\n }\n\n /**\n * Invoked when a splitter's dragListener fires dragStart. Calculates the splitters\n * movement area once (so that it doesn't need calculating on every mousemove event)\n *\n * @param splitter\n */\n _onSplitterDragStart(splitter) {\n var _items$before$config$, _items$after$config$c, _items$before$element, _items$after$element$;\n var items = this._getItemsForSplitter(splitter);\n var minSize = this.layoutManager.config.dimensions[this._isColumn ? 'minItemHeight' : 'minItemWidth'];\n var beforeMinDim = this._getMinimumDimensions((_items$before$config$ = items.before.config.content) !== null && _items$before$config$ !== void 0 ? _items$before$config$ : []);\n var beforeMinSize = this._isColumn ? beforeMinDim.vertical : beforeMinDim.horizontal;\n var afterMinDim = this._getMinimumDimensions((_items$after$config$c = items.after.config.content) !== null && _items$after$config$c !== void 0 ? _items$after$config$c : []);\n var afterMinSize = this._isColumn ? afterMinDim.vertical : afterMinDim.horizontal;\n this._splitterPosition = 0;\n this._splitterMinPosition = -1 * (((_items$before$element = items.before.element[this._dimension]()) !== null && _items$before$element !== void 0 ? _items$before$element : 0) - (beforeMinSize || minSize));\n this._splitterMaxPosition = ((_items$after$element$ = items.after.element[this._dimension]()) !== null && _items$after$element$ !== void 0 ? _items$after$element$ : 0) - (afterMinSize || minSize);\n }\n\n /**\n * Invoked when a splitter's DragListener fires drag. Updates the splitters DOM position,\n * but not the sizes of the elements the splitter controls in order to minimize resize events\n *\n * @param splitter\n * @param offsetX Relative pixel values to the splitters original position. Can be negative\n * @param offsetY Relative pixel values to the splitters original position. Can be negative\n */\n _onSplitterDrag(splitter, offsetX, offsetY) {\n var offset = this._isColumn ? offsetY : offsetX;\n if (this._splitterMaxPosition == null || this._splitterMinPosition == null) {\n return;\n }\n if (offset > this._splitterMinPosition && offset < this._splitterMaxPosition) {\n this._splitterPosition = offset;\n splitter.element.css(this._isColumn ? 'top' : 'left', offset);\n }\n }\n\n /**\n * Invoked when a splitter's DragListener fires dragStop. Resets the splitters DOM position,\n * and applies the new sizes to the elements before and after the splitter and their children\n * on the next animation frame\n *\n * @param {lm.controls.Splitter} splitter\n */\n _onSplitterDragStop(splitter) {\n var _items$before$element2, _items$after$element$2, _this$_splitterPositi, _items$before$config$2, _items$after$config$t;\n var items = this._getItemsForSplitter(splitter);\n var sizeBefore = (_items$before$element2 = items.before.element[this._dimension]()) !== null && _items$before$element2 !== void 0 ? _items$before$element2 : 0;\n var sizeAfter = (_items$after$element$2 = items.after.element[this._dimension]()) !== null && _items$after$element$2 !== void 0 ? _items$after$element$2 : 0;\n var splitterPositionInRange = (((_this$_splitterPositi = this._splitterPosition) !== null && _this$_splitterPositi !== void 0 ? _this$_splitterPositi : 0) + sizeBefore) / (sizeBefore + sizeAfter);\n var totalRelativeSize = ((_items$before$config$2 = items.before.config[this._dimension]) !== null && _items$before$config$2 !== void 0 ? _items$before$config$2 : 0) + ((_items$after$config$t = items.after.config[this._dimension]) !== null && _items$after$config$t !== void 0 ? _items$after$config$t : 0);\n items.before.config[this._dimension] = splitterPositionInRange * totalRelativeSize;\n items.after.config[this._dimension] = (1 - splitterPositionInRange) * totalRelativeSize;\n splitter.element.css({\n top: 0,\n left: 0\n });\n animFrame(this.callDownwards.bind(this, 'setSize', undefined, undefined, undefined));\n }\n}\n//# sourceMappingURL=RowOrColumn.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport AbstractContentItem, { isComponent } from \"./AbstractContentItem.js\";\nimport RowOrColumn from \"./RowOrColumn.js\";\nexport default class Root extends AbstractContentItem {\n constructor(layoutManager, config, containerElement) {\n super(layoutManager, _objectSpread(_objectSpread({}, config), {}, {\n type: 'root'\n }), null, $('<div class=\"lm_goldenlayout lm_item lm_root\"></div>'));\n _defineProperty(this, \"childElementContainer\", void 0);\n _defineProperty(this, \"_containerElement\", void 0);\n this.isRoot = true;\n this.type = 'root';\n this.childElementContainer = this.element;\n this._containerElement = containerElement;\n this._containerElement.append(this.element);\n }\n addChild(contentItem, index) {\n if (this.contentItems.length > 0) {\n throw new Error('Root node can only have a single child');\n }\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n this.childElementContainer.append(contentItem.element);\n super.addChild(contentItem, index);\n this.callDownwards('setSize');\n this.emitBubblingEvent('stateChanged');\n }\n setSize(width, height) {\n var _this$_containerEleme, _this$_containerEleme2;\n width = typeof width === 'undefined' ? (_this$_containerEleme = this._containerElement.width()) !== null && _this$_containerEleme !== void 0 ? _this$_containerEleme : 0 : width;\n height = typeof height === 'undefined' ? (_this$_containerEleme2 = this._containerElement.height()) !== null && _this$_containerEleme2 !== void 0 ? _this$_containerEleme2 : 0 : height;\n this.element.width(width);\n this.element.height(height);\n\n /*\n * Root can be empty\n */\n if (this.contentItems[0]) {\n this.contentItems[0].element.width(width);\n this.contentItems[0].element.height(height);\n }\n }\n _$getArea() {\n var area = super._$getArea();\n if (area == null) {\n throw new Error('Unable to get root area');\n }\n return area;\n }\n _$highlightDropZone(x, y, area) {\n this.layoutManager.tabDropPlaceholder.remove();\n super._$highlightDropZone(x, y, area);\n }\n _$onDrop(contentItem, area) {\n var stack;\n if (isComponent(contentItem)) {\n stack = this.layoutManager.createContentItem({\n type: 'stack',\n header: contentItem.config.header || {}\n }, this);\n stack._$init();\n stack.addChild(contentItem);\n contentItem = stack;\n }\n if (!this.contentItems.length) {\n this.addChild(contentItem);\n } else {\n var {\n side\n } = area;\n var type = side === 'left' || side === 'right' ? 'row' : 'column'; // Should new root be a row or column\n var dimension = side === 'left' || side === 'right' ? 'width' : 'height';\n var insertBefore = side === 'left' || side === 'top';\n var column = this.contentItems[0];\n if (!(column instanceof RowOrColumn) || column.type != type) {\n var rowOrColumn = this.layoutManager.createContentItem({\n type: type\n }, this);\n this.replaceChild(column, rowOrColumn);\n rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);\n rowOrColumn.addChild(column, insertBefore ? undefined : 0, true);\n column.config[dimension] = 50;\n contentItem.config[dimension] = 50;\n rowOrColumn.callDownwards('setSize');\n } else {\n var _sibling$config$dimen;\n var sibling = column.contentItems[insertBefore ? 0 : column.contentItems.length - 1];\n column.addChild(contentItem, insertBefore ? 0 : undefined, true);\n sibling.config[dimension] = ((_sibling$config$dimen = sibling.config[dimension]) !== null && _sibling$config$dimen !== void 0 ? _sibling$config$dimen : 0) * 0.5;\n contentItem.config[dimension] = sibling.config[dimension];\n column.callDownwards('setSize');\n }\n }\n }\n}\n//# sourceMappingURL=Root.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport AbstractContentItem, { isComponent } from \"./AbstractContentItem.js\";\nimport { Header } from \"../controls/index.js\";\nimport RowOrColumn from \"./RowOrColumn.js\";\nexport default class Stack extends AbstractContentItem {\n constructor(layoutManager, config, parent) {\n var _cfg$settings, _cfg$settings2, _cfg$labels, _cfg$settings3, _cfg$labels2, _cfg$settings4, _cfg$labels3, _cfg$labels$minimise, _cfg$labels4;\n super(layoutManager, config, parent, $('<div class=\"lm_item lm_stack\"></div>'));\n _defineProperty(this, \"_activeContentItem\", null);\n _defineProperty(this, \"_header\", void 0);\n _defineProperty(this, \"childElementContainer\", $('<div class=\"lm_items\"></div>'));\n _defineProperty(this, \"header\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"isStack\", true);\n _defineProperty(this, \"_dropSegment\", null);\n _defineProperty(this, \"_contentAreaDimensions\", null);\n _defineProperty(this, \"_dropIndex\", void 0);\n _defineProperty(this, \"_side\", void 0);\n _defineProperty(this, \"_sided\", false);\n _defineProperty(this, \"config\", void 0);\n this.parent = parent;\n this.config = config;\n var cfg = layoutManager.config;\n this._side = false;\n this._header = {\n // defaults' reconstruction from old configuration style\n show: ((_cfg$settings = cfg.settings) === null || _cfg$settings === void 0 ? void 0 : _cfg$settings.hasHeaders) && config.hasHeaders !== false,\n popout: (_cfg$settings2 = cfg.settings) !== null && _cfg$settings2 !== void 0 && _cfg$settings2.showPopoutIcon ? (_cfg$labels = cfg.labels) === null || _cfg$labels === void 0 ? void 0 : _cfg$labels.popout : undefined,\n maximise: (_cfg$settings3 = cfg.settings) !== null && _cfg$settings3 !== void 0 && _cfg$settings3.showMaximiseIcon ? (_cfg$labels2 = cfg.labels) === null || _cfg$labels2 === void 0 ? void 0 : _cfg$labels2.maximise : undefined,\n close: (_cfg$settings4 = cfg.settings) !== null && _cfg$settings4 !== void 0 && _cfg$settings4.showCloseIcon ? (_cfg$labels3 = cfg.labels) === null || _cfg$labels3 === void 0 ? void 0 : _cfg$labels3.close : undefined,\n minimise: (_cfg$labels$minimise = (_cfg$labels4 = cfg.labels) === null || _cfg$labels4 === void 0 ? void 0 : _cfg$labels4.minimise) !== null && _cfg$labels$minimise !== void 0 ? _cfg$labels$minimise : undefined\n };\n\n // load simplified version of header configuration (https://github.com/deepstreamIO/golden-layout/pull/245)\n if (cfg.header) this._header = _objectSpread(_objectSpread({}, this._header), cfg.header);\n if (config.header)\n // load from stack\n this._header = _objectSpread(_objectSpread({}, this._header), config.header);\n if (config.content && config.content[0] && config.content[0].header)\n // load from component if stack omitted\n this._header = _objectSpread(_objectSpread({}, this._header), config.content[0].header);\n this.header = new Header(layoutManager, this);\n this.element.append(this.header.element);\n this.element.append(this.childElementContainer);\n this._setupHeaderPosition();\n this._$validateClosability();\n }\n setSize() {\n var _this$layoutManager$c, _this$layoutManager$c2, _this$element$width, _this$element$height;\n var i,\n headerSize = this._header.show ? (_this$layoutManager$c = (_this$layoutManager$c2 = this.layoutManager.config.dimensions) === null || _this$layoutManager$c2 === void 0 ? void 0 : _this$layoutManager$c2.headerHeight) !== null && _this$layoutManager$c !== void 0 ? _this$layoutManager$c : 0 : 0,\n contentWidth = ((_this$element$width = this.element.width()) !== null && _this$element$width !== void 0 ? _this$element$width : 0) - (this._sided ? headerSize : 0),\n contentHeight = ((_this$element$height = this.element.height()) !== null && _this$element$height !== void 0 ? _this$element$height : 0) - (!this._sided ? headerSize : 0);\n this.childElementContainer.width(contentWidth);\n this.childElementContainer.height(contentHeight);\n for (i = 0; i < this.contentItems.length; i++) {\n this.contentItems[i].element.width(contentWidth).height(contentHeight);\n }\n this.emit('resize');\n this.emitBubblingEvent('stateChanged');\n }\n _$init() {\n if (this.isInitialised === true) return;\n this.header._attachWheelListener();\n super._$init();\n for (var i = 0; i < this.contentItems.length; i++) {\n this.header.createTab(this.contentItems[i]);\n this.contentItems[i]._$hide();\n }\n if (this.contentItems.length > 0) {\n var initialItem = this.contentItems[this.config.activeItemIndex || 0];\n if (!initialItem) {\n throw new Error('Configured activeItemIndex out of bounds');\n }\n this.setActiveContentItem(initialItem);\n }\n }\n setActiveContentItem(contentItem, forceFocus) {\n if (this.contentItems.indexOf(contentItem) === -1) {\n throw new Error('contentItem is not a child of this stack');\n }\n if (this._activeContentItem !== null) {\n this._activeContentItem._$hide();\n }\n this._activeContentItem = contentItem;\n this.header.setActiveContentItem(contentItem);\n if (isComponent(contentItem)) {\n contentItem._$show(forceFocus);\n } else {\n contentItem._$show();\n }\n this.emit('activeContentItemChanged', contentItem);\n this.layoutManager.emit('activeContentItemChanged', contentItem);\n this.emitBubblingEvent('stateChanged');\n }\n getActiveContentItem() {\n return this.header.activeContentItem;\n }\n addChild(contentItem, index) {\n contentItem = this.layoutManager._$normalizeContentItem(contentItem, this);\n super.addChild(contentItem, index);\n this.childElementContainer.append(contentItem.element);\n this.header.createTab(contentItem, index);\n this.setActiveContentItem(contentItem);\n this.callDownwards('setSize');\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n removeChild(contentItem) {\n var keepChild = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var index = this.contentItems.indexOf(contentItem);\n super.removeChild(contentItem, keepChild);\n this.header.removeTab(contentItem);\n if (this.header.activeContentItem === contentItem) {\n if (this.contentItems.length > 0) {\n this.setActiveContentItem(this.contentItems[Math.max(index - 1, 0)]);\n } else {\n this._activeContentItem = null;\n }\n }\n this._$validateClosability();\n this.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Validates that the stack is still closable or not. If a stack is able\n * to close, but has a non closable component added to it, the stack is no\n * longer closable until all components are closable.\n */\n _$validateClosability() {\n var isClosable = this.header._isClosable();\n for (var i = 0, len = this.contentItems.length; i < len; i++) {\n var _this$contentItems$i$;\n if (!isClosable) {\n break;\n }\n isClosable = (_this$contentItems$i$ = this.contentItems[i].config.isClosable) !== null && _this$contentItems$i$ !== void 0 ? _this$contentItems$i$ : false;\n }\n this.header._$setClosable(isClosable);\n }\n _$destroy() {\n AbstractContentItem.prototype._$destroy.call(this);\n this.header._$destroy();\n }\n\n /**\n * Ok, this one is going to be the tricky one: The user has dropped {contentItem} onto this stack.\n *\n * It was dropped on either the stacks header or the top, right, bottom or left bit of the content area\n * (which one of those is stored in this._dropSegment). Now, if the user has dropped on the header the case\n * is relatively clear: We add the item to the existing stack... job done (might be good to have\n * tab reordering at some point, but lets not sweat it right now)\n *\n * If the item was dropped on the content part things are a bit more complicated. If it was dropped on either the\n * top or bottom region we need to create a new column and place the items accordingly.\n * Unless, of course if the stack is already within a column... in which case we want\n * to add the newly created item to the existing column...\n * either prepend or append it, depending on wether its top or bottom.\n *\n * Same thing for rows and left / right drop segments... so in total there are 9 things that can potentially happen\n * (left, top, right, bottom) * is child of the right parent (row, column) + header drop\n *\n * @param contentItem\n */\n _$onDrop(contentItem) {\n /*\n * The item was dropped on the header area. Just add it as a child of this stack and\n * get the hell out of this logic\n */\n if (this._dropSegment === 'header') {\n this._resetHeaderDropZone();\n this.addChild(contentItem, this._dropIndex);\n return;\n }\n\n /*\n * The stack is empty. Let's just add the element.\n */\n if (this._dropSegment === 'body') {\n this.addChild(contentItem);\n return;\n }\n\n /*\n * The item was dropped on the top-, left-, bottom- or right- part of the content. Let's\n * aggregate some conditions to make the if statements later on more readable\n */\n var isVertical = this._dropSegment === 'top' || this._dropSegment === 'bottom';\n var isHorizontal = this._dropSegment === 'left' || this._dropSegment === 'right';\n var insertBefore = this._dropSegment === 'top' || this._dropSegment === 'left';\n var hasCorrectParent = this.parent instanceof RowOrColumn && (isVertical && this.parent.isColumn || isHorizontal && this.parent.isRow);\n var type = isVertical ? 'column' : 'row';\n var dimension = isVertical ? 'height' : 'width';\n\n /*\n * The content item can be either a component or a stack. If it is a component, wrap it into a stack\n */\n if (isComponent(contentItem)) {\n var stack = this.layoutManager.createContentItem({\n type: 'stack',\n header: contentItem.config.header || {}\n }, this);\n stack._$init();\n stack.addChild(contentItem);\n contentItem = stack;\n }\n\n /*\n * If the item is dropped on top or bottom of a column or left and right of a row, it's already\n * layd out in the correct way. Just add it as a child\n */\n if (hasCorrectParent) {\n var _this$config$dimensio;\n var index = this.parent.contentItems.indexOf(this);\n\n // Should be a `RowOrColumn` if `hasCorrectParent` is true\n this.parent.addChild(contentItem, insertBefore ? index : index + 1, true);\n this.config[dimension] = ((_this$config$dimensio = this.config[dimension]) !== null && _this$config$dimensio !== void 0 ? _this$config$dimensio : 0) * 0.5;\n contentItem.config[dimension] = this.config[dimension];\n this.parent.callDownwards('setSize');\n /*\n * This handles items that are dropped on top or bottom of a row or left / right of a column. We need\n * to create the appropriate contentItem for them to live in\n */\n } else {\n var _this$parent;\n var rowOrColumn = this.layoutManager.createContentItem({\n type\n }, this);\n (_this$parent = this.parent) === null || _this$parent === void 0 || _this$parent.replaceChild(this, rowOrColumn);\n rowOrColumn.addChild(contentItem, insertBefore ? 0 : undefined, true);\n rowOrColumn.addChild(this, insertBefore ? undefined : 0, true);\n this.config[dimension] = 50;\n contentItem.config[dimension] = 50;\n rowOrColumn.callDownwards('setSize');\n }\n }\n\n /**\n * If the user hovers above the header part of the stack, indicate drop positions for tabs.\n * otherwise indicate which segment of the body the dragged item would be dropped on\n *\n * @param x Absolute Screen X\n * @param y Absolute Screen Y\n */\n _$highlightDropZone(x, y) {\n if (!this._contentAreaDimensions) {\n return;\n }\n for (var [segment, dimensions] of Object.entries(this._contentAreaDimensions)) {\n var area = dimensions.hoverArea;\n if (area.x1 < x && area.x2 > x && area.y1 < y && area.y2 > y) {\n if (segment === 'header') {\n this._dropSegment = 'header';\n this._highlightHeaderDropZone(x);\n } else {\n this._resetHeaderDropZone();\n this._highlightBodyDropZone(segment);\n }\n return;\n }\n }\n }\n _$getArea() {\n if (this.element.is(':visible') === false) {\n return null;\n }\n var headerArea = super._$getArea(this.header.element);\n var contentArea = super._$getArea(this.childElementContainer);\n if (headerArea == null || contentArea == null) {\n return null;\n }\n var contentWidth = contentArea.x2 - contentArea.x1;\n var contentHeight = contentArea.y2 - contentArea.y1;\n this._contentAreaDimensions = {\n header: {\n hoverArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2\n },\n highlightArea: {\n x1: headerArea.x1,\n y1: headerArea.y1,\n x2: headerArea.x2,\n y2: headerArea.y2\n }\n }\n };\n\n /**\n * If this Stack is a parent to rows, columns or other stacks only its\n * header is a valid dropzone.\n */\n if (this._activeContentItem && this._activeContentItem.isComponent === false) {\n return headerArea;\n }\n\n /**\n * Highlight the entire body if the stack is empty\n */\n if (this.contentItems.length === 0) {\n this._contentAreaDimensions.body = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2\n }\n };\n return super._$getArea(this.element);\n }\n this._contentAreaDimensions.left = {\n hoverArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.25,\n y2: contentArea.y2\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.5,\n y2: contentArea.y2\n }\n };\n this._contentAreaDimensions.top = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y1 + contentHeight * 0.5\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y1 + contentHeight * 0.5\n }\n };\n this._contentAreaDimensions.right = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.75,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2\n },\n highlightArea: {\n x1: contentArea.x1 + contentWidth * 0.5,\n y1: contentArea.y1,\n x2: contentArea.x2,\n y2: contentArea.y2\n }\n };\n this._contentAreaDimensions.bottom = {\n hoverArea: {\n x1: contentArea.x1 + contentWidth * 0.25,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x1 + contentWidth * 0.75,\n y2: contentArea.y2\n },\n highlightArea: {\n x1: contentArea.x1,\n y1: contentArea.y1 + contentHeight * 0.5,\n x2: contentArea.x2,\n y2: contentArea.y2\n }\n };\n return super._$getArea(this.element);\n }\n _highlightHeaderDropZone(x) {\n var _tabsContainer$get, _this$layoutManager$t, _this$layoutManager$t2, _this$layoutManager$t3, _this$header$tabsCont, _this$header$tabsCont2, _this$layoutManager$t4, _this$header$tabsCont3, _this$header$tabsCont4, _this$header$tabsCont5, _this$layoutManager$d2, _this$header$element$6, _this$header$element$7, _this$header$element$8, _this$header$element$9, _this$header$element$0;\n var tabsLength = this.header.tabs.length;\n\n // I've omitted code for side edge tabs here\n // illumon doesn't need it, will slowly pull that code out elsewhere too\n\n // Empty stack\n if (tabsLength === 0) {\n var _this$layoutManager$d, _headerOffset$left, _headerOffset$left2, _this$header$element$, _this$header$element$2, _this$header$element$3, _this$header$element$4, _this$header$element$5;\n var headerOffset = this.header.element.offset();\n\n // we don't have a placeholder to measure in the dom, lets just cheat and make it 100px.\n (_this$layoutManager$d = this.layoutManager.dropTargetIndicator) === null || _this$layoutManager$d === void 0 || _this$layoutManager$d.highlightArea({\n x1: (_headerOffset$left = headerOffset === null || headerOffset === void 0 ? void 0 : headerOffset.left) !== null && _headerOffset$left !== void 0 ? _headerOffset$left : 0,\n x2: ((_headerOffset$left2 = headerOffset === null || headerOffset === void 0 ? void 0 : headerOffset.left) !== null && _headerOffset$left2 !== void 0 ? _headerOffset$left2 : 0) + 100,\n y1: (_this$header$element$ = (_this$header$element$2 = this.header.element.offset()) === null || _this$header$element$2 === void 0 ? void 0 : _this$header$element$2.top) !== null && _this$header$element$ !== void 0 ? _this$header$element$ : 0,\n y2: ((_this$header$element$3 = (_this$header$element$4 = this.header.element.offset()) === null || _this$header$element$4 === void 0 ? void 0 : _this$header$element$4.top) !== null && _this$header$element$3 !== void 0 ? _this$header$element$3 : 0) + ((_this$header$element$5 = this.header.element.innerHeight()) !== null && _this$header$element$5 !== void 0 ? _this$header$element$5 : 0)\n });\n return;\n }\n var tabsContainer = this.header.tabsContainer;\n var tabsContainerRect = (_tabsContainer$get = tabsContainer.get(0)) === null || _tabsContainer$get === void 0 ? void 0 : _tabsContainer$get.getBoundingClientRect();\n var placeholderRect = (_this$layoutManager$t = this.layoutManager.tabDropPlaceholder.get(0)) === null || _this$layoutManager$t === void 0 ? void 0 : _this$layoutManager$t.getBoundingClientRect();\n if (!tabsContainerRect || !placeholderRect) {\n return;\n }\n if (x < tabsContainerRect.left) {\n // is over left tab controls button\n // move x to a new point to inside left edge of container\n x = tabsContainerRect.left + 1;\n } else if (x > tabsContainerRect.right) {\n // is over right tab controls button\n // move x to a new point to inside right edge of container\n x = tabsContainerRect.right - 1;\n }\n var tabElement;\n var tabRect;\n\n // if its not inide a placeholder,\n if (!(placeholderRect.left < x && x < placeholderRect.right)) {\n // which tab is it over ...\n for (var i = 0; i < tabsLength; i++) {\n var _tabElement$get;\n tabElement = this.header.tabs[i].element;\n tabRect = (_tabElement$get = tabElement.get(0)) === null || _tabElement$get === void 0 ? void 0 : _tabElement$get.getBoundingClientRect();\n if (tabRect && tabRect.left < x && x < tabRect.right) {\n this._dropIndex = i;\n break;\n }\n }\n\n // we have tabRect at this x,y from the loop above\n if (tabElement && tabRect && x < tabRect.left + tabRect.width * 0.5) {\n // mostly before an element, insert placeholder before\n tabElement.before(this.layoutManager.tabDropPlaceholder);\n } else if (tabElement) {\n var _this$_dropIndex;\n // x is likely after the lhe last item, position after and increase drop index\n this._dropIndex = Math.min(((_this$_dropIndex = this._dropIndex) !== null && _this$_dropIndex !== void 0 ? _this$_dropIndex : 0) + 1, tabsLength);\n tabElement.after(this.layoutManager.tabDropPlaceholder);\n }\n }\n var placeHolderLeft = (_this$layoutManager$t2 = (_this$layoutManager$t3 = this.layoutManager.tabDropPlaceholder.offset()) === null || _this$layoutManager$t3 === void 0 ? void 0 : _this$layoutManager$t3.left) !== null && _this$layoutManager$t2 !== void 0 ? _this$layoutManager$t2 : 0;\n placeHolderLeft = Math.max(placeHolderLeft, (_this$header$tabsCont = (_this$header$tabsCont2 = this.header.tabsContainer.offset()) === null || _this$header$tabsCont2 === void 0 ? void 0 : _this$header$tabsCont2.left) !== null && _this$header$tabsCont !== void 0 ? _this$header$tabsCont : 0);\n var placeHolderRight = placeHolderLeft + ((_this$layoutManager$t4 = this.layoutManager.tabDropPlaceholder.width()) !== null && _this$layoutManager$t4 !== void 0 ? _this$layoutManager$t4 : 0);\n placeHolderRight = Math.min(placeHolderRight, ((_this$header$tabsCont3 = (_this$header$tabsCont4 = this.header.tabsContainer.offset()) === null || _this$header$tabsCont4 === void 0 ? void 0 : _this$header$tabsCont4.left) !== null && _this$header$tabsCont3 !== void 0 ? _this$header$tabsCont3 : 0) + ((_this$header$tabsCont5 = this.header.tabsContainer.innerWidth()) !== null && _this$header$tabsCont5 !== void 0 ? _this$header$tabsCont5 : 0));\n (_this$layoutManager$d2 = this.layoutManager.dropTargetIndicator) === null || _this$layoutManager$d2 === void 0 || _this$layoutManager$d2.highlightArea({\n x1: placeHolderLeft,\n x2: placeHolderRight,\n y1: (_this$header$element$6 = (_this$header$element$7 = this.header.element.offset()) === null || _this$header$element$7 === void 0 ? void 0 : _this$header$element$7.top) !== null && _this$header$element$6 !== void 0 ? _this$header$element$6 : 0,\n y2: ((_this$header$element$8 = (_this$header$element$9 = this.header.element.offset()) === null || _this$header$element$9 === void 0 ? void 0 : _this$header$element$9.top) !== null && _this$header$element$8 !== void 0 ? _this$header$element$8 : 0) + ((_this$header$element$0 = this.header.element.innerHeight()) !== null && _this$header$element$0 !== void 0 ? _this$header$element$0 : 0)\n });\n }\n _resetHeaderDropZone() {\n this.layoutManager.tabDropPlaceholder.remove();\n }\n _setupHeaderPosition() {\n var side = ['right', 'left', 'bottom'].some(elem => elem === this._header.show) ? this._header.show : undefined;\n this.header.element.toggle(!!this._header.show);\n if (!side) {\n return;\n }\n this._side = side;\n this._sided = ['right', 'left'].indexOf(this._side.toString()) >= 0;\n this.element.removeClass('lm_left lm_right lm_bottom');\n if (this._side) this.element.addClass('lm_' + this._side);\n if (this.element.find('.lm_header').length && this.childElementContainer) {\n var headerPosition = ['right', 'bottom'].indexOf(this._side.toString()) >= 0 ? 'before' : 'after';\n this.header.element[headerPosition](this.childElementContainer);\n this.callDownwards('setSize');\n }\n }\n _highlightBodyDropZone(segment) {\n var _this$_contentAreaDim;\n var highlightArea = (_this$_contentAreaDim = this._contentAreaDimensions) === null || _this$_contentAreaDim === void 0 || (_this$_contentAreaDim = _this$_contentAreaDim[segment]) === null || _this$_contentAreaDim === void 0 ? void 0 : _this$_contentAreaDim.highlightArea;\n if (highlightArea) {\n var _this$layoutManager$d3;\n (_this$layoutManager$d3 = this.layoutManager.dropTargetIndicator) === null || _this$layoutManager$d3 === void 0 || _this$layoutManager$d3.highlightArea(highlightArea);\n }\n this._dropSegment = segment;\n }\n}\n//# sourceMappingURL=Stack.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport { isComponent } from \"../items/index.js\";\nimport { DragListener } from \"../utils/index.js\";\nimport DragProxy from \"./DragProxy.js\";\n/**\n * Represents an individual tab within a Stack's header\n *\n * @param header\n * @param contentItem\n */\nexport default class Tab {\n constructor(header, contentItem) {\n var _this$_layoutManager$;\n _defineProperty(this, \"header\", void 0);\n _defineProperty(this, \"contentItem\", void 0);\n _defineProperty(this, \"element\", $(Tab._template));\n _defineProperty(this, \"titleElement\", void 0);\n _defineProperty(this, \"closeElement\", void 0);\n _defineProperty(this, \"isActive\", false);\n _defineProperty(this, \"_layoutManager\", void 0);\n _defineProperty(this, \"_dragListener\", void 0);\n this.header = header;\n this.contentItem = contentItem;\n this.titleElement = this.element.find('.lm_title');\n this.closeElement = this.element.find('.lm_close_tab');\n this.closeElement[contentItem.config.isClosable ? 'show' : 'hide']();\n this.setTitle(contentItem.config.title);\n this.contentItem.on('titleChanged', this.setTitle, this);\n this._layoutManager = this.contentItem.layoutManager;\n if ((_this$_layoutManager$ = this._layoutManager.config.settings) !== null && _this$_layoutManager$ !== void 0 && _this$_layoutManager$.reorderEnabled && contentItem.config.reorderEnabled) {\n this._dragListener = new DragListener(this.element);\n this._dragListener.on('dragStart', this._onDragStart, this);\n this.contentItem.on('destroy', this._dragListener.destroy, this._dragListener);\n }\n this._onTabClick = this._onTabClick.bind(this);\n this._onCloseClick = this._onCloseClick.bind(this);\n this._onTabContentFocusIn = this._onTabContentFocusIn.bind(this);\n this._onTabContentFocusOut = this._onTabContentFocusOut.bind(this);\n this.element.on('click', this._onTabClick);\n this.element.on('auxclick', this._onTabClick);\n this.element.on('mouseup', this._onMouseUp);\n if (this.contentItem.config.isClosable) {\n this.closeElement.on('click', this._onCloseClick);\n this.closeElement.on('mousedown', this._onCloseMousedown);\n } else {\n this.closeElement.remove();\n }\n this.contentItem.tab = this;\n this.contentItem.emit('tab', this);\n this.contentItem.layoutManager.emit('tabCreated', this);\n if (isComponent(this.contentItem)) {\n // add focus class to tab when content\n this.contentItem.container._contentElement.on('focusin', this._onTabContentFocusIn).on('focusout', this._onTabContentFocusOut);\n this.contentItem.container.tab = this;\n this.contentItem.container.emit('tab', this);\n }\n }\n\n /**\n * Sets the tab's title to the provided string and sets\n * its title attribute to a pure text representation (without\n * html tags) of the same string.\n * @param title can contain html\n */\n setTitle() {\n var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // Disabling for illumon project, we want to manage our own tooltips\n // this.element.attr( 'title', lm.utils.stripTags( title ) );\n this.titleElement.text(title);\n }\n\n /**\n * Sets this tab's active state. To programmatically\n * switch tabs, use header.setActiveContentItem( item ) instead.\n * @param isActive\n */\n setActive(isActive) {\n if (isActive === this.isActive) {\n return;\n }\n this.isActive = isActive;\n if (isActive) {\n this.element.addClass('lm_active');\n } else {\n this.element.removeClass('lm_active');\n }\n }\n\n /**\n * Destroys the tab\n *\n * @private\n * @returns {void}\n */\n _$destroy() {\n this.element.off('click', this._onTabClick);\n this.element.off('auxclick', this._onTabClick);\n this.element.off('mouseup', this._onMouseUp);\n this.closeElement.off('click', this._onCloseClick);\n if (isComponent(this.contentItem)) {\n this.contentItem.container._contentElement.off();\n this.contentItem.container._contentElement[0].removeEventListener('click', this._onTabContentFocusIn, true);\n }\n if (this._dragListener) {\n this.contentItem.off('destroy', this._dragListener.destroy, this._dragListener);\n this._dragListener.off('dragStart', this._onDragStart);\n this._dragListener = undefined;\n }\n this.element.remove();\n }\n\n /**\n * Callback for the DragListener\n *\n * @param x The tabs absolute x position\n * @param y The tabs absolute y position\n */\n _onDragStart(x, y) {\n var _this$contentItem$par;\n if ((_this$contentItem$par = this.contentItem.parent) !== null && _this$contentItem$par !== void 0 && _this$contentItem$par.isMaximised) {\n this.contentItem.parent.toggleMaximise();\n }\n if (!this._dragListener) {\n return;\n }\n new DragProxy(x, y, this._dragListener, this._layoutManager, this.contentItem, this.header.parent);\n }\n\n /**\n * Callback when the contentItem is focused in\n */\n _onTabContentFocusIn() {\n // Ensure only one tab is marked as having focus at a time.\n // In Firefox, if the focused element is removed from the DOM,\n // the focusout event won't trigger. This can result in two tabs\n // being erroneously marked as focused if the user's DOM element\n // is removed and they click another tab. To prevent this, we\n // remove existing \"lm_focusin\" classes first.\n $('.lm_focusin', this._layoutManager.root.element).removeClass('lm_focusin');\n this.element.addClass('lm_focusin');\n }\n\n /**\n * Callback when the contentItem is focused out\n *\n * @param {jQuery DOM event} event\n *\n * @private\n * @returns {void}\n */\n _onTabContentFocusOut() {\n if (isComponent(this.contentItem) && !this.contentItem.container._contentElement[0].contains(document.activeElement)) {\n this.element.removeClass('lm_focusin');\n }\n }\n\n /**\n * Callback when the tab is clicked\n *\n * @param event\n */\n _onTabClick(event) {\n // left mouse button or tap\n if (!event || event.button === 0) {\n var _this$element$get;\n var activeContentItem = this.header.parent.getActiveContentItem();\n if (this.contentItem !== activeContentItem && isComponent(this.contentItem)) {\n this.header.parent.setActiveContentItem(this.contentItem);\n } else if (isComponent(this.contentItem) && !this.contentItem.container._contentElement[0].contains(document.activeElement)) {\n // if no focus inside put focus onto the container\n // so focusin always fires for tabclicks\n this.contentItem.container._contentElement.focus();\n }\n if (isComponent(this.contentItem)) {\n this.contentItem.container.emit('tabClicked', event);\n }\n\n // might have been called from the dropdown\n this.header._hideAdditionalTabsDropdown();\n\n // makes sure clicked tabs scrollintoview (either those partially offscreen or in dropdown)\n (_this$element$get = this.element.get(0)) === null || _this$element$get === void 0 || _this$element$get.scrollIntoView({\n inline: 'nearest'\n // behaviour smooth is not possible here, as when a tab becomes active it may attempt to take focus\n // which interupts any scroll behaviour from completeting\n });\n\n // middle mouse button\n } else if (event.button === 1 && this.contentItem.config.isClosable) {\n this._onCloseClick(event);\n }\n }\n\n /**\n * Callback when the tab's close button is\n * clicked\n *\n * @param event\n */\n _onCloseClick(event) {\n event.stopPropagation();\n if (isComponent(this.contentItem)) {\n this.contentItem.container.close();\n } else {\n this.header.parent.removeChild(this.contentItem);\n }\n }\n\n /**\n * Callback to prevent paste into active input on Linux\n * when closing a tab via middle click.\n * @param event\n */\n _onMouseUp(event) {\n if (event.button === 1) {\n event.preventDefault(); // This seems to prevent the paste event from firing\n event.stopPropagation(); // Stop propagation just in case\n }\n }\n\n /**\n * Callback to capture tab close button mousedown\n * to prevent tab from activating.\n *\n * @param event\n */\n _onCloseMousedown(event) {\n event.stopPropagation();\n }\n}\n/**\n * The tab's html template\n */\n_defineProperty(Tab, \"_template\", ['<li class=\"lm_tab\">', '<span class=\"lm_title_before\"></span>', '<span class=\"lm_title\"></span>', '<div class=\"lm_close_tab\" aria-label=\"Close tab\"></div>', '</li>'].join(''));\n//# sourceMappingURL=Tab.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport { EventEmitter } from \"../utils/index.js\";\nimport HeaderButton from \"./HeaderButton.js\";\nimport Tab from \"./Tab.js\";\n/**\n * This class represents a header above a Stack ContentItem.\n *\n * @param layoutManager\n * @param parent\n */\nexport default class Header extends EventEmitter {\n constructor(layoutManager, parent) {\n var _this$layoutManager$c, _this$layoutManager$c2;\n super();\n _defineProperty(this, \"layoutManager\", void 0);\n _defineProperty(this, \"element\", $(Header._template));\n _defineProperty(this, \"tabsContainer\", void 0);\n _defineProperty(this, \"tabDropdownContainer\", void 0);\n _defineProperty(this, \"tabDropdownSearch\", void 0);\n _defineProperty(this, \"tabDropdownList\", null);\n _defineProperty(this, \"controlsContainer\", void 0);\n _defineProperty(this, \"parent\", void 0);\n _defineProperty(this, \"tabs\", []);\n _defineProperty(this, \"activeContentItem\", null);\n _defineProperty(this, \"closeButton\", null);\n _defineProperty(this, \"tabDropdownButton\", null);\n _defineProperty(this, \"tabNextButton\", $(Header._nextButtonTemplate));\n _defineProperty(this, \"tabPreviousButton\", $(Header._previousButtonTemplate));\n // use for scroll repeat\n _defineProperty(this, \"holdTimer\", null);\n _defineProperty(this, \"rAF\", null);\n // mouse hold timeout to act as hold instead of click\n _defineProperty(this, \"CLICK_TIMEOUT\", 500);\n // mouse hold acceleration\n _defineProperty(this, \"START_SPEED\", 0.01);\n _defineProperty(this, \"ACCELERATION\", 0.0005);\n _defineProperty(this, \"PADDING\", 10);\n _defineProperty(this, \"SCROLL_LEFT\", 'left');\n _defineProperty(this, \"SCROLL_RIGHT\", 'right');\n _defineProperty(this, \"isDraggingTab\", false);\n _defineProperty(this, \"isOverflowing\", false);\n _defineProperty(this, \"isDropdownShown\", false);\n _defineProperty(this, \"dropdownKeyIndex\", 0);\n _defineProperty(this, \"_lastVisibleTabIndex\", -1);\n _defineProperty(this, \"_tabControlOffset\", void 0);\n this.layoutManager = layoutManager;\n if ((_this$layoutManager$c = this.layoutManager.config.settings) !== null && _this$layoutManager$c !== void 0 && _this$layoutManager$c.selectionEnabled) {\n this.element.addClass('lm_selectable');\n this.element.on('click', this._onHeaderClick.bind(this));\n }\n this.tabsContainer = this.element.find('.lm_tabs');\n this.tabDropdownContainer = this.element.find('.lm_tabdropdown_list');\n this.tabDropdownContainer.hide();\n this.tabDropdownSearch = this.element.find('.lm_tabdropdown_search input');\n this._handleFilterInput = this._handleFilterInput.bind(this);\n this._handleFilterKeydown = this._handleFilterKeydown.bind(this);\n this.tabDropdownSearch.on('input', this._handleFilterInput);\n this.tabDropdownSearch.on('keydown', this._handleFilterKeydown);\n this.controlsContainer = this.element.find('.lm_controls');\n this.parent = parent;\n this.parent.on('resize', this._updateTabSizes, this);\n this._handleItemPickedUp = this._handleItemPickedUp.bind(this);\n this._handleItemDropped = this._handleItemDropped.bind(this);\n this._handleNextMouseEnter = this._handleNextMouseEnter.bind(this);\n this._handleNextMouseLeave = this._handleNextMouseLeave.bind(this);\n this._handlePreviousMouseEnter = this._handlePreviousMouseEnter.bind(this);\n this._handlePreviousMouseLeave = this._handlePreviousMouseLeave.bind(this);\n this._handleScrollRepeat = this._handleScrollRepeat.bind(this);\n this._handleNextButtonMouseDown = this._handleNextButtonMouseDown.bind(this);\n this._handlePreviousButtonMouseDown = this._handlePreviousButtonMouseDown.bind(this);\n this._handleScrollButtonMouseDown = this._handleScrollButtonMouseDown.bind(this);\n this._handleScrollButtonMouseUp = this._handleScrollButtonMouseUp.bind(this);\n this._handleScrollEvent = this._handleScrollEvent.bind(this);\n this.tabNextButton.on('mousedown', this._handleNextButtonMouseDown);\n this.tabPreviousButton.on('mousedown', this._handlePreviousButtonMouseDown);\n this.tabsContainer.on('scroll', this._handleScrollEvent);\n this.layoutManager.on('itemPickedUp', this._handleItemPickedUp);\n this.layoutManager.on('itemDropped', this._handleItemDropped);\n\n // append previous button template\n this.tabsContainer.before(this.tabPreviousButton);\n // change reference to just the li, not the wrapping ul\n this.tabPreviousButton = this.tabPreviousButton.find('>:first-child');\n this.tabPreviousButton.hide();\n this._showAdditionalTabsDropdown = this._showAdditionalTabsDropdown.bind(this);\n this._hideAdditionalTabsDropdown = this._hideAdditionalTabsDropdown.bind(this);\n this._tabControlOffset = (_this$layoutManager$c2 = this.layoutManager.config.settings) === null || _this$layoutManager$c2 === void 0 ? void 0 : _this$layoutManager$c2.tabControlOffset;\n this._createControls();\n }\n\n /**\n * Creates a new tab and associates it with a contentItem\n *\n * @param contentItem\n * @param index The position of the tab\n */\n createTab(contentItem, index) {\n //If there's already a tab relating to the\n //content item, don't do anything\n for (var i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n return;\n }\n }\n var tab = new Tab(this, contentItem);\n if (this.tabs.length === 0) {\n this.tabs.push(tab);\n this.tabsContainer.append(tab.element);\n return;\n }\n if (index === undefined) {\n index = this.tabs.length;\n }\n if (index > 0) {\n this.tabs[index - 1].element.after(tab.element);\n } else {\n this.tabs[0].element.before(tab.element);\n }\n this.tabs.splice(index, 0, tab);\n this._updateTabSizes();\n }\n\n /**\n * Finds a tab based on the contentItem its associated with and removes it.\n *\n * @param contentItem\n */\n removeTab(contentItem) {\n for (var i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].contentItem === contentItem) {\n this.tabs[i]._$destroy();\n this.tabs.splice(i, 1);\n return;\n }\n }\n throw new Error('contentItem is not controlled by this header');\n }\n\n /**\n * The programmatical equivalent of clicking a Tab.\n *\n * @param contentItem\n */\n setActiveContentItem(contentItem) {\n var _this$tabs$element$ge, _this$tabs$element$ge2, _this$parent$config$a;\n var isActive;\n for (var i = 0; i < this.tabs.length; i++) {\n isActive = this.tabs[i].contentItem === contentItem;\n this.tabs[i].setActive(isActive);\n if (isActive === true) {\n this.activeContentItem = contentItem;\n this.parent.config.activeItemIndex = i;\n }\n }\n\n // makes sure dropped tabs are scrollintoview, removed any re-ordering\n (_this$tabs$element$ge = this.tabs[(_this$parent$config$a = this.parent.config.activeItemIndex) !== null && _this$parent$config$a !== void 0 ? _this$parent$config$a : 0].element.get(0)) === null || _this$tabs$element$ge === void 0 || (_this$tabs$element$ge2 = _this$tabs$element$ge.scrollIntoView) === null || _this$tabs$element$ge2 === void 0 || _this$tabs$element$ge2.call(_this$tabs$element$ge, {\n // Optional chain scrollIntoView call so tests do not error\n inline: 'nearest'\n });\n this._hideAdditionalTabsDropdown();\n this._updateTabSizes();\n this.parent.emitBubblingEvent('stateChanged');\n }\n\n /**\n * Programmatically operate with header position.\n *\n * @param position one of ('top','left','right','bottom') to set or empty to get it.\n *\n * @returns previous header position\n */\n position(position) {\n var previous = this.parent._header.show;\n if (previous && !this.parent._side) previous = 'top';\n if (position !== undefined && this.parent._header.show !== position) {\n this.parent._header.show = position;\n this.parent._setupHeaderPosition();\n }\n return previous;\n }\n\n // Manually attaching so wheel can be passive instead of jquery .on\n // _attachWheelListener is called by parent init\n _attachWheelListener() {\n var _this$tabsContainer$g;\n (_this$tabsContainer$g = this.tabsContainer.get(0)) === null || _this$tabsContainer$g === void 0 || _this$tabsContainer$g.addEventListener('wheel', this._handleWheelEvent, {\n passive: true\n });\n }\n\n // detach called by this.destroy\n _detachWheelListener() {\n var _this$tabsContainer$g2;\n (_this$tabsContainer$g2 = this.tabsContainer.get(0)) === null || _this$tabsContainer$g2 === void 0 || _this$tabsContainer$g2.removeEventListener('wheel', this._handleWheelEvent);\n }\n _handleWheelEvent(event) {\n var target = event.currentTarget;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // we only care about the larger of the two deltas\n var delta = Math.abs(event.deltaY) > Math.abs(event.deltaX) ? event.deltaY : event.deltaX;\n\n // jshint\n /* globals WheelEvent */\n if (event.deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n var _this$tabsContainer$i;\n // Users can set OS to be in deltaMode page\n // scrolly by page units as pixels\n delta *= (_this$tabsContainer$i = this.tabsContainer.innerWidth()) !== null && _this$tabsContainer$i !== void 0 ? _this$tabsContainer$i : 1;\n } else if (event.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n // chrome goes 100px per 3 lines, and firefox would go 102 per 3 (17 lineheight * 3 lines * 2)\n delta *= 100 / 3;\n }\n target.scrollLeft += Math.round(delta);\n }\n\n // on scroll we need to check if side error might need to be disabled\n _handleScrollEvent() {\n this._checkScrollArrows();\n }\n\n // when and item is picked up, attach mouse enter listeners to next/previous buttons\n _handleItemPickedUp() {\n this.isDraggingTab = true;\n if (this.isDropdownShown) this._hideAdditionalTabsDropdown();\n this.controlsContainer.on('mouseenter', this._handleNextMouseEnter);\n this.tabPreviousButton.on('mouseenter', this._handlePreviousMouseEnter);\n }\n\n // when an item is dropped remove listeners and cancel animation\n _handleItemDropped() {\n var _this$rAF;\n this.isDraggingTab = false;\n window.cancelAnimationFrame((_this$rAF = this.rAF) !== null && _this$rAF !== void 0 ? _this$rAF : -1);\n this.rAF = null;\n this.controlsContainer.off('mouseenter', this._handleNextMouseEnter);\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n this.tabPreviousButton.off('mouseenter', this._handlePreviousMouseEnter);\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // on next/previous enter start scroll repeat animation loop\n // and attach a listener looking for mouseleave\n // cancel animation on mouse leave, and remove leave listener\n _handleNextMouseEnter() {\n var _this$tabsContainer$s;\n this.controlsContainer.on('mouseleave', this._handleNextMouseLeave);\n this._handleScrollRepeat(this.SCROLL_RIGHT, (_this$tabsContainer$s = this.tabsContainer.scrollLeft()) !== null && _this$tabsContainer$s !== void 0 ? _this$tabsContainer$s : 0);\n }\n _handlePreviousMouseEnter() {\n var _this$tabsContainer$s2;\n this.tabPreviousButton.on('mouseleave', this._handlePreviousMouseLeave);\n this._handleScrollRepeat(this.SCROLL_LEFT, (_this$tabsContainer$s2 = this.tabsContainer.scrollLeft()) !== null && _this$tabsContainer$s2 !== void 0 ? _this$tabsContainer$s2 : 0);\n }\n _handleNextMouseLeave() {\n var _this$rAF2;\n window.cancelAnimationFrame((_this$rAF2 = this.rAF) !== null && _this$rAF2 !== void 0 ? _this$rAF2 : -1);\n this.rAF = null;\n this.controlsContainer.off('mouseleave', this._handleNextMouseLeave);\n }\n _handlePreviousMouseLeave() {\n var _this$rAF3;\n window.cancelAnimationFrame((_this$rAF3 = this.rAF) !== null && _this$rAF3 !== void 0 ? _this$rAF3 : -1);\n this.rAF = null;\n this.tabPreviousButton.off('mouseleave', this._handlePreviousMouseLeave);\n }\n\n // scroll one tab to the right on mouse down\n // start scrollRepeat if mouse is held down\n _handleNextButtonMouseDown() {\n var rightOffscreenChild;\n for (var i = 0; i < this.tabs.length; i += 1) {\n var _this$tabs$i$element$, _this$tabs$i$element$2, _this$tabsContainer$g3, _this$tabsContainer$g4, _this$tabsContainer$s3;\n if (((_this$tabs$i$element$ = (_this$tabs$i$element$2 = this.tabs[i].element.get(0)) === null || _this$tabs$i$element$2 === void 0 ? void 0 : _this$tabs$i$element$2.offsetLeft) !== null && _this$tabs$i$element$ !== void 0 ? _this$tabs$i$element$ : 0) > ((_this$tabsContainer$g3 = (_this$tabsContainer$g4 = this.tabsContainer.get(0)) === null || _this$tabsContainer$g4 === void 0 ? void 0 : _this$tabsContainer$g4.offsetWidth) !== null && _this$tabsContainer$g3 !== void 0 ? _this$tabsContainer$g3 : 0) + ((_this$tabsContainer$s3 = this.tabsContainer.scrollLeft()) !== null && _this$tabsContainer$s3 !== void 0 ? _this$tabsContainer$s3 : 0)) {\n rightOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n if (rightOffscreenChild) {\n rightOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'nearest'\n });\n this._handleScrollButtonMouseDown(this.SCROLL_RIGHT);\n } else {\n var tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n var _this$tabsContainer$g5, _this$tabsContainer$g6;\n tabsContainer.scrollLeft = (_this$tabsContainer$g5 = (_this$tabsContainer$g6 = this.tabsContainer.get(0)) === null || _this$tabsContainer$g6 === void 0 ? void 0 : _this$tabsContainer$g6.scrollWidth) !== null && _this$tabsContainer$g5 !== void 0 ? _this$tabsContainer$g5 : 0;\n }\n }\n }\n\n // scroll left by one tab\n // start scrollRepeat if mouse is held down\n _handlePreviousButtonMouseDown() {\n var leftOffscreenChild;\n for (var i = this.tabs.length - 1; i >= 0; i -= 1) {\n var _this$tabs$i$element$3, _this$tabs$i$element$4, _this$tabsContainer$s4;\n if (((_this$tabs$i$element$3 = (_this$tabs$i$element$4 = this.tabs[i].element.get(0)) === null || _this$tabs$i$element$4 === void 0 ? void 0 : _this$tabs$i$element$4.offsetLeft) !== null && _this$tabs$i$element$3 !== void 0 ? _this$tabs$i$element$3 : 0) < ((_this$tabsContainer$s4 = this.tabsContainer.scrollLeft()) !== null && _this$tabsContainer$s4 !== void 0 ? _this$tabsContainer$s4 : 0)) {\n leftOffscreenChild = this.tabs[i].element.get(0);\n break;\n }\n }\n if (leftOffscreenChild) {\n leftOffscreenChild.scrollIntoView({\n behavior: 'smooth',\n inline: 'start'\n });\n this._handleScrollButtonMouseDown(this.SCROLL_LEFT);\n } else {\n var tabsContainer = this.tabsContainer.get(0);\n if (tabsContainer) {\n tabsContainer.scrollLeft = 0;\n }\n }\n }\n\n // when hold timer is reached start scroll repeat anim loop\n // cancel it when mouse up happens anywhere\n _handleScrollButtonMouseDown(direction) {\n // closure so that scrollLeft is value at end of timer, and not start of timer\n this.holdTimer = window.setTimeout(() => {\n var _this$tabsContainer$s5;\n this._handleScrollRepeat(direction, (_this$tabsContainer$s5 = this.tabsContainer.scrollLeft()) !== null && _this$tabsContainer$s5 !== void 0 ? _this$tabsContainer$s5 : 0, 100); // kickstart deltaX to be faster\n }, this.CLICK_TIMEOUT);\n window.addEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // cancel scroll repeat\n _handleScrollButtonMouseUp() {\n var _this$holdTimer, _this$rAF4;\n clearTimeout((_this$holdTimer = this.holdTimer) !== null && _this$holdTimer !== void 0 ? _this$holdTimer : -1);\n this.holdTimer = null;\n cancelAnimationFrame((_this$rAF4 = this.rAF) !== null && _this$rAF4 !== void 0 ? _this$rAF4 : -1);\n this.rAF = null;\n window.removeEventListener('mouseup', this._handleScrollButtonMouseUp);\n }\n\n // disables scroll arrow if at edge of scroll area\n _checkScrollArrows() {\n var _this$tabsContainer$s6, _this$tabsContainer$i2, _this$tabsContainer$g7;\n if (this.tabsContainer.scrollLeft() === 0) {\n this.tabPreviousButton.first().prop('disabled', true);\n } else if (((_this$tabsContainer$s6 = this.tabsContainer.scrollLeft()) !== null && _this$tabsContainer$s6 !== void 0 ? _this$tabsContainer$s6 : 0) + ((_this$tabsContainer$i2 = this.tabsContainer.innerWidth()) !== null && _this$tabsContainer$i2 !== void 0 ? _this$tabsContainer$i2 : 0) === ((_this$tabsContainer$g7 = this.tabsContainer.get(0)) === null || _this$tabsContainer$g7 === void 0 ? void 0 : _this$tabsContainer$g7.scrollWidth)) {\n this.tabNextButton.prop('disabled', true);\n } else {\n this.tabNextButton.prop('disabled', false);\n this.tabPreviousButton.first().prop('disabled', false);\n }\n }\n\n // scrolls the tab header container on drag tab over control buttons\n // or on press and hold of scroll arrows at either end\n // called recurisevly in an animation loop until cancelled\n // or directional end is reached\n _handleScrollRepeat(direction, startX) {\n var _this$rAF5;\n var deltaX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var prevTimestamp = arguments.length > 3 ? arguments[3] : undefined;\n var tabContainer = this.tabsContainer.get(0);\n if (!tabContainer) {\n return;\n }\n var tabContainerRect = tabContainer.getBoundingClientRect();\n if (direction === this.SCROLL_LEFT) {\n this.tabsContainer.scrollLeft(startX - deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.left - 1);\n }\n // stop loop at left edge\n if (this.tabsContainer.scrollLeft() === 0) {\n this._checkScrollArrows();\n return;\n }\n } else if (direction === this.SCROLL_RIGHT) {\n var _this$tabsContainer$s7, _this$tabsContainer$i3;\n this.tabsContainer.scrollLeft(startX + deltaX);\n if (this.isDraggingTab) {\n // update drag placeholder\n this.parent._highlightHeaderDropZone(tabContainerRect.right + 1);\n }\n // stop loop at right edge\n if (((_this$tabsContainer$s7 = this.tabsContainer.scrollLeft()) !== null && _this$tabsContainer$s7 !== void 0 ? _this$tabsContainer$s7 : 0) + ((_this$tabsContainer$i3 = this.tabsContainer.innerWidth()) !== null && _this$tabsContainer$i3 !== void 0 ? _this$tabsContainer$i3 : 0) === tabContainer.scrollWidth) {\n this._checkScrollArrows();\n return;\n }\n }\n\n // setup animation loop, scroll with acceleration\n window.cancelAnimationFrame((_this$rAF5 = this.rAF) !== null && _this$rAF5 !== void 0 ? _this$rAF5 : -1);\n this.rAF = window.requestAnimationFrame(timestamp => {\n var _this$tabsContainer$g8, _this$tabsContainer$g9;\n var startTime = prevTimestamp || timestamp;\n var deltaTime = timestamp - startTime;\n var newDeltaX = this.START_SPEED * deltaTime + 0.5 * this.ACCELERATION * (deltaTime * deltaTime);\n newDeltaX = Math.min(newDeltaX, (_this$tabsContainer$g8 = (_this$tabsContainer$g9 = this.tabsContainer.get(0)) === null || _this$tabsContainer$g9 === void 0 ? void 0 : _this$tabsContainer$g9.scrollWidth) !== null && _this$tabsContainer$g8 !== void 0 ? _this$tabsContainer$g8 : Infinity);\n this._handleScrollRepeat(direction, startX, newDeltaX, startTime);\n });\n }\n\n /**\n * Programmatically set closability.\n * @param isClosable Whether to enable/disable closability.\n * @returns Whether the action was successful\n */\n _$setClosable(isClosable) {\n if (this.closeButton && this._isClosable()) {\n this.closeButton.element[isClosable ? 'show' : 'hide']();\n return true;\n }\n return false;\n }\n\n /**\n * Destroys the entire header\n */\n _$destroy() {\n this.emit('destroy', this);\n for (var i = 0; i < this.tabs.length; i++) {\n this.tabs[i]._$destroy();\n }\n this._detachWheelListener();\n this._handleItemDropped();\n $(document).off('mouseup', this._hideAdditionalTabsDropdown);\n this.tabDropdownSearch.off('input', this._handleFilterInput);\n this.tabDropdownSearch.off('keydown', this._handleFilterKeydown);\n this.element.remove();\n }\n\n /**\n * get settings from header\n *\n * @returns when exists\n */\n _getHeaderSetting(name) {\n if (name in this.parent._header) return this.parent._header[name];\n }\n\n /**\n * Creates the popout, maximise and close buttons in the header's top right corner\n */\n _createControls() {\n var closeStack, popout, label, maximise, tabDropdownLabel, tabOverflowNextLabel, tabOverflowPreviousLabel;\n\n /**\n * Dropdown to show additional tabs.\n */\n\n tabDropdownLabel = this.layoutManager.config.labels.tabDropdown;\n tabOverflowNextLabel = this.layoutManager.config.labels.tabNextLabel;\n tabOverflowPreviousLabel = this.layoutManager.config.labels.tabPreviousLabel;\n this.tabDropdownButton = new HeaderButton(this, tabDropdownLabel, 'lm_tabdropdown', this._showAdditionalTabsDropdown);\n this.tabDropdownButton.element.hide();\n this.controlsContainer.prepend(this.tabNextButton);\n this.tabNextButton.hide();\n\n /**\n * Popout control to launch component in new window.\n */\n if (this._getHeaderSetting('popout')) {\n popout = this._onPopoutClick.bind(this);\n label = this._getHeaderSetting('popout');\n new HeaderButton(this, label, 'lm_popout', popout);\n }\n\n /**\n * Maximise control - set the component to the full size of the layout\n */\n if (this._getHeaderSetting('maximise')) {\n maximise = this.parent.toggleMaximise.bind(this.parent);\n var maximiseLabel = this._getHeaderSetting('maximise');\n var minimiseLabel = this._getHeaderSetting('minimise');\n var maximiseButton = new HeaderButton(this, maximiseLabel, 'lm_maximise', maximise);\n this.parent.on('maximised', function () {\n maximiseButton.element.attr('title', minimiseLabel !== null && minimiseLabel !== void 0 ? minimiseLabel : '');\n });\n this.parent.on('minimised', function () {\n maximiseButton.element.attr('title', maximiseLabel !== null && maximiseLabel !== void 0 ? maximiseLabel : '');\n });\n }\n\n /**\n * Close button\n */\n if (this._isClosable()) {\n closeStack = this.parent.remove.bind(this.parent);\n label = this._getHeaderSetting('close');\n this.closeButton = new HeaderButton(this, label, 'lm_close', closeStack);\n }\n }\n\n /**\n * Shows drop down for additional tabs when there are too many to display.\n *\n * @returns {void}\n */\n _showAdditionalTabsDropdown() {\n if (this.isDropdownShown) {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // clone tabs in the current list, with event listeners\n // and add them to the drop down\n this.tabDropdownList = this.tabsContainer.clone(true).appendTo(this.tabDropdownContainer).children().removeClass('lm_active');\n\n // move it to be absolutely positioned in document root\n // as header has overflow hidden, and we need to escape that\n $(document.body).append(this.tabDropdownContainer);\n\n // show the dropdown\n this.tabDropdownContainer.show();\n this.isDropdownShown = true;\n\n // dropdown is a part of the header z-index context\n // add class to header when dropdown is open\n // so we can bump the z-index of the lists parent\n this.element.addClass('lm_dropdown_open');\n\n // focus the dropdown filter list input\n this.tabDropdownSearch.val('').focus();\n this.dropdownKeyIndex = 0;\n this.tabDropdownList.eq(this.dropdownKeyIndex).addClass('lm_keyboard_active');\n $(document).on('mousedown', this._hideAdditionalTabsDropdown);\n this._updateAdditionalTabsDropdown();\n }\n\n // enables synthetic keyboard navigation of the list\n _handleFilterKeydown(e) {\n if (e.key === 'Escape') {\n this._hideAdditionalTabsDropdown();\n return;\n }\n\n // a negative dropdownKeyIndex means the list is filtered to an empty state\n if (this.dropdownKeyIndex === -1) return;\n if (e.key === 'Enter' || e.key === ' ') {\n // simulate \"click\"\n this._hideAdditionalTabsDropdown();\n this.tabs[this.dropdownKeyIndex]._onTabClick();\n return;\n }\n function getNextDropdownIndex(startIndex, delta, tabDropdownList) {\n if (tabDropdownList == null || tabDropdownList.length < 2) {\n return -1;\n }\n var i = (startIndex + delta + tabDropdownList.length) % tabDropdownList.length;\n while (i !== startIndex) {\n if (tabDropdownList.eq(i).css('display') !== 'none') {\n return i;\n }\n i = (i + delta + tabDropdownList.length) % tabDropdownList.length;\n }\n return startIndex;\n }\n\n // allow tab or arrow key navigation of list, prevent tabs default behaviour\n if (e.key === 'ArrowDown' || e.key === 'Tab' && e.shiftKey === false) {\n var _this$tabDropdownList, _this$tabDropdownList2;\n e.preventDefault();\n (_this$tabDropdownList = this.tabDropdownList) === null || _this$tabDropdownList === void 0 || _this$tabDropdownList.eq(this.dropdownKeyIndex).removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(this.dropdownKeyIndex, 1, this.tabDropdownList);\n (_this$tabDropdownList2 = this.tabDropdownList) === null || _this$tabDropdownList2 === void 0 || _this$tabDropdownList2.eq(this.dropdownKeyIndex).addClass('lm_keyboard_active');\n } else if (e.key === 'ArrowUp' || e.key === 'Tab') {\n var _this$tabDropdownList3, _this$tabDropdownList4;\n e.preventDefault();\n (_this$tabDropdownList3 = this.tabDropdownList) === null || _this$tabDropdownList3 === void 0 || _this$tabDropdownList3.eq(this.dropdownKeyIndex).removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = getNextDropdownIndex(this.dropdownKeyIndex, -1, this.tabDropdownList);\n (_this$tabDropdownList4 = this.tabDropdownList) === null || _this$tabDropdownList4 === void 0 || _this$tabDropdownList4.eq(this.dropdownKeyIndex).addClass('lm_keyboard_active');\n }\n }\n\n // filters the list\n _handleFilterInput(event) {\n if (this.tabDropdownList == null) {\n return;\n }\n // reset keyboard index\n this.tabDropdownList.eq(this.dropdownKeyIndex).removeClass('lm_keyboard_active');\n this.dropdownKeyIndex = -1;\n for (var i = 0; i < this.tabDropdownList.length; i++) {\n var _this$tabs$i$contentI, _this$tabs$i$contentI2;\n if (((_this$tabs$i$contentI = (_this$tabs$i$contentI2 = this.tabs[i].contentItem.config.title) === null || _this$tabs$i$contentI2 === void 0 ? void 0 : _this$tabs$i$contentI2.toLowerCase().indexOf(event.target.value.toLowerCase())) !== null && _this$tabs$i$contentI !== void 0 ? _this$tabs$i$contentI : -1) !== -1) {\n this.tabDropdownList.eq(i).css('display', '');\n if (this.dropdownKeyIndex === -1) this.dropdownKeyIndex = i;\n } else {\n this.tabDropdownList.eq(i).css('display', 'none');\n }\n }\n if (this.dropdownKeyIndex !== -1) {\n this.tabDropdownList.eq(this.dropdownKeyIndex).addClass('lm_keyboard_active');\n }\n }\n\n /**\n * Hides drop down for additional tabs when needed. It is called via mousedown\n * event on document when list is open, or programmatically when drag starts,\n * or active tab changes etc.\n */\n _hideAdditionalTabsDropdown(event) {\n var _this$tabDropdownCont, _this$tabDropdownButt;\n // dropdown already closed, do nothing\n if (!this.isDropdownShown) return;\n if (event && (_this$tabDropdownCont = this.tabDropdownContainer.get(0)) !== null && _this$tabDropdownCont !== void 0 && _this$tabDropdownCont.contains(event.target)) {\n // prevent events occuring inside the list from causing a close\n return;\n } else if (event && ((_this$tabDropdownButt = this.tabDropdownButton) === null || _this$tabDropdownButt === void 0 ? void 0 : _this$tabDropdownButt.element.get(0)) === event.target) {\n // do nothing on the mouse down so that the click event can close, rather then re-open\n return;\n }\n this.element.removeClass('lm_dropdown_open');\n this.tabDropdownContainer.hide();\n this.isDropdownShown = false;\n\n // put it back in the header dom to keep the root tidy\n this.element.append(this.tabDropdownContainer);\n\n // remove the current tab list\n this.tabDropdownContainer.find('.lm_tabs').remove();\n $(document).off('mousedown', this._hideAdditionalTabsDropdown);\n }\n\n /**\n * Ensures additional tab drop down which is absolutely positioned in the root\n * doesn't overflow the screen, and instead becomes scrollable. Positions the\n * floating menu in the correct location relative to the dropdown button.\n */\n _updateAdditionalTabsDropdown() {\n var _this$tabDropdownCont2, _this$tabDropdownCont3, _$$height, _$$width;\n if (!this.isDropdownShown) return;\n if (!this.tabDropdownList || this.tabDropdownList.length == 0) return;\n var scrollHeight = (_this$tabDropdownCont2 = (_this$tabDropdownCont3 = this.tabDropdownContainer.get(0)) === null || _this$tabDropdownCont3 === void 0 ? void 0 : _this$tabDropdownCont3.scrollHeight) !== null && _this$tabDropdownCont2 !== void 0 ? _this$tabDropdownCont2 : 0;\n if (scrollHeight === 0) return; // height can be zero if called on a hidden or empty list\n\n var list_rect = this.tabDropdownContainer[0].getBoundingClientRect();\n var windowHeight = (_$$height = $(window).height()) !== null && _$$height !== void 0 ? _$$height : 0;\n var windowWidth = (_$$width = $(window).width()) !== null && _$$width !== void 0 ? _$$width : 0;\n\n // position relative to the dropdown button\n if (!this.tabDropdownButton) return;\n var button_rect = this.tabDropdownButton.element[0].getBoundingClientRect();\n\n // If it fits below button, put it there. If it doesn't and there is more\n // than 60% space above, then flip to displaying menu above button\n var hasSpaceBelow = scrollHeight < windowHeight - button_rect.bottom;\n var shouldFlip = !hasSpaceBelow && button_rect.bottom > windowHeight * 0.6; // 0.6 bias to not flipping rather than strictly 0.5\n\n // keep from going of right edge\n // when flipped offset to right edge of button\n var left = Math.min(button_rect.left + (shouldFlip ? button_rect.width : 0), windowWidth - list_rect.width - this.PADDING);\n // flip, with limit of top of screen\n var top = shouldFlip ? Math.max(button_rect.top - scrollHeight, this.PADDING) : button_rect.bottom;\n\n // if needs scroll to fit, apply a max-height\n var maxHeight = windowHeight - top - this.PADDING;\n this.tabDropdownContainer.css({\n 'max-height': maxHeight,\n top,\n left\n });\n }\n\n /**\n * Checks whether the header is closable based on the parent config and\n * the global config.\n *\n * @returns Whether the header is closable.\n */\n _isClosable() {\n return Boolean(this.parent.config.isClosable && this.layoutManager.config.settings.showCloseIcon);\n }\n _onPopoutClick() {\n if (this.layoutManager.config.settings.popoutWholeStack === true) {\n this.parent.popout();\n } else {\n var _this$activeContentIt;\n (_this$activeContentIt = this.activeContentItem) === null || _this$activeContentIt === void 0 || _this$activeContentIt.popout();\n }\n }\n\n /**\n * Invoked when the header's background is clicked (not it's tabs or controls)\n *\n * @param event\n */\n _onHeaderClick(event) {\n if (event.target === this.element[0]) {\n this.parent.select();\n }\n }\n\n /**\n * Pushes the tabs to the tab dropdown if the available space is not sufficient\n */\n _updateTabSizes() {\n if (this.tabs.length === 0) {\n return;\n }\n var tabsContainer = this.tabsContainer.get(0);\n if (this.isDropdownShown) {\n // resize the dropdown list too as it is currently open\n this._updateAdditionalTabsDropdown();\n }\n if (!tabsContainer) {\n return;\n }\n if (!this.isOverflowing && tabsContainer.scrollWidth > tabsContainer.clientWidth) {\n var _this$tabDropdownButt2;\n (_this$tabDropdownButt2 = this.tabDropdownButton) === null || _this$tabDropdownButt2 === void 0 || _this$tabDropdownButt2.element.show();\n this.tabNextButton.show();\n this.tabPreviousButton.show();\n this.isOverflowing = true;\n } else if (this.isOverflowing && tabsContainer.scrollWidth <= tabsContainer.clientWidth) {\n var _this$tabDropdownButt3;\n (_this$tabDropdownButt3 = this.tabDropdownButton) === null || _this$tabDropdownButt3 === void 0 || _this$tabDropdownButt3.element.hide();\n this.tabNextButton.hide();\n this.tabPreviousButton.hide();\n this.isOverflowing = false;\n }\n if (this.isOverflowing) this._checkScrollArrows();\n }\n}\n_defineProperty(Header, \"_template\", ['<div class=\"lm_header\">', '<ul class=\"lm_tabs\"></ul>', '<ul class=\"lm_controls\"></ul>', '<ul class=\"lm_tabdropdown_list\">', '<li class=\"lm_tabdropdown_search\"><input type=\"text\" placeholder=\"Find tab...\"></li>', '</ul>', '</div>'].join(''));\n_defineProperty(Header, \"_previousButtonTemplate\", ['<ul class=\"lm_controls\">', '<li class=\"lm_tabpreviousbutton\"></li>', '</ul>'].join(''));\n_defineProperty(Header, \"_nextButtonTemplate\", ['<li class=\"lm_tabnextbutton\"></li>'].join(''));\n//# sourceMappingURL=Header.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport { DragListener } from \"../utils/index.js\";\nexport default class Splitter {\n constructor(isVertical, size, grabSize) {\n _defineProperty(this, \"_isVertical\", void 0);\n _defineProperty(this, \"_size\", void 0);\n _defineProperty(this, \"_grabSize\", void 0);\n _defineProperty(this, \"_dragListener\", void 0);\n _defineProperty(this, \"element\", void 0);\n this._isVertical = isVertical;\n this._size = size;\n this._grabSize = grabSize < size ? size : grabSize;\n this.element = this._createElement();\n this._dragListener = new DragListener(this.element);\n }\n on(event, callback, context) {\n var _this$_dragListener;\n (_this$_dragListener = this._dragListener) === null || _this$_dragListener === void 0 || _this$_dragListener.on(event, callback, context);\n }\n _$destroy() {\n var _this$_dragListener2;\n (_this$_dragListener2 = this._dragListener) === null || _this$_dragListener2 === void 0 || _this$_dragListener2.destroy();\n this._dragListener = null;\n this.element.remove();\n }\n _createElement() {\n var dragHandle = $('<div class=\"lm_drag_handle\"></div>');\n var element = $('<div class=\"lm_splitter\"></div>');\n element.append(dragHandle);\n var handleExcessSize = this._grabSize - this._size;\n var handleExcessPos = handleExcessSize / 2;\n if (this._isVertical) {\n dragHandle.css('top', -handleExcessPos);\n dragHandle.css('height', this._size + handleExcessSize);\n element.addClass('lm_vertical');\n element['height'](this._size);\n } else {\n dragHandle.css('left', -handleExcessPos);\n dragHandle.css('width', this._size + handleExcessSize);\n element.addClass('lm_horizontal');\n element['width'](this._size);\n }\n return element;\n }\n}\n//# sourceMappingURL=Splitter.js.map","import * as config from \"./config/index.js\";\nimport * as container from \"./container/index.js\";\nimport * as controls from \"./controls/index.js\";\nimport * as errors from \"./errors/index.js\";\nimport * as items from \"./items/index.js\";\nimport * as utils from \"./utils/index.js\";\nvar lm = {\n config,\n container,\n controls,\n errors,\n items,\n utils\n};\nexport default lm;\n//# sourceMappingURL=base.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport $ from 'jquery';\nimport lm from \"./base.js\";\nimport { defaultConfig } from \"./config/index.js\";\nimport { BrowserPopout, DragSource, DragSourceFromEvent, DropTargetIndicator } from \"./controls/index.js\";\nimport { ConfigurationError } from \"./errors/index.js\";\nimport { AbstractContentItem, isStack, Component, Root, RowOrColumn, Stack } from \"./items/index.js\";\nimport { minifyConfig, unminifyConfig, EventEmitter, EventHub, ReactComponentHandler, getQueryStringParam, getUniqueId, stripTags } from \"./utils/index.js\";\n/**\n * Item configuration types that are supported inside of `createContentItem` to\n * create content items. Note that `ReactComponentConfig` is a valid input type,\n * but it gets converted to `ComponentConfig` inside the method before this\n * constraint comes into play.\n */\n/**\n * Item configuration `type` values that are supported inside of\n * `createContentItem` to create content items. Note that `react-component`\n * is a valid input value, but it gets converted to `component` inside the\n * method before this constraint comes into play.\n */\nvar LAYOUT_ITEM_CONFIG_TYPES = ['column', 'row', 'stack', 'component'];\n\n/**\n * The main class that will be exposed as GoldenLayout.\n *\n * @param config\n * @param container Can be a jQuery selector string or a Dom element. Defaults to body\n */\nexport class LayoutManager extends EventEmitter {\n /**\n * Returns true if the given item config can be used to create a layout item.\n * (Used internally by `createContentItem`).\n */\n static isLayoutItemConfig(config) {\n return LAYOUT_ITEM_CONFIG_TYPES.includes(config.type);\n }\n\n /**\n * Takes a GoldenLayout configuration object and\n * replaces its keys and values recursively with\n * one letter codes\n *\n * @param config A GoldenLayout config object\n * @returns minified config\n */\n static minifyConfig(config) {\n return minifyConfig(config);\n }\n\n /**\n * Takes a configuration Object that was previously minified\n * using minifyConfig and returns its original version\n *\n * @param minifiedConfig\n * @returns the original configuration\n */\n static unminifyConfig(config) {\n return unminifyConfig(config);\n }\n constructor(config, container) {\n super();\n _defineProperty(this, \"isInitialised\", false);\n _defineProperty(this, \"_isFullPage\", false);\n _defineProperty(this, \"_resizeTimeoutId\", void 0);\n _defineProperty(this, \"_components\", {\n 'lm-react-component': ReactComponentHandler\n });\n _defineProperty(this, \"_fallbackComponent\", void 0);\n _defineProperty(this, \"_itemAreas\", []);\n _defineProperty(this, \"_maximisedItem\", null);\n _defineProperty(this, \"_maximisePlaceholder\", $('<div class=\"lm_maximise_place\"></div>'));\n _defineProperty(this, \"_creationTimeoutPassed\", false);\n _defineProperty(this, \"_subWindowsCreated\", false);\n _defineProperty(this, \"_dragSources\", []);\n _defineProperty(this, \"_updatingColumnsResponsive\", false);\n _defineProperty(this, \"_firstLoad\", true);\n _defineProperty(this, \"_reactChildMap\", new Map());\n _defineProperty(this, \"_reactChildren\", null);\n _defineProperty(this, \"_initialHeaderHeight\", void 0);\n _defineProperty(this, \"width\", null);\n _defineProperty(this, \"height\", null);\n _defineProperty(this, \"root\", void 0);\n // This will be created after init is called.\n _defineProperty(this, \"openPopouts\", []);\n _defineProperty(this, \"selectedItem\", null);\n _defineProperty(this, \"isSubWindow\", false);\n _defineProperty(this, \"eventHub\", new EventHub(this));\n _defineProperty(this, \"config\", void 0);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"_originalContainer\", void 0);\n _defineProperty(this, \"dropTargetIndicator\", null);\n _defineProperty(this, \"tabDropPlaceholder\", $('<div class=\"lm_drop_tab_placeholder\"></div>'));\n this._onResize = this._onResize.bind(this);\n this._onUnload = this._onUnload.bind(this);\n this._windowBlur = this._windowBlur.bind(this);\n this._windowFocus = this._windowFocus.bind(this);\n this._windowKeydown = this._windowKeydown.bind(this);\n this.config = this._createConfig(config);\n this._originalContainer = container;\n this.container = this._getContainer();\n this._initialHeaderHeight = this.config.dimensions.headerHeight;\n if (this.isSubWindow) {\n $('body').css('visibility', 'hidden');\n }\n }\n\n /**\n * Register a component with the layout manager. If a configuration node\n * of type component is reached it will look up componentName and create the\n * associated component\n *\n * {\n *\t\ttype: \"component\",\n *\t\tcomponentName: \"EquityNewsFeed\",\n *\t\tcomponentState: { \"feedTopic\": \"us-bluechips\" }\n * }\n *\n * @param name\n * @param constructor\n * @returns cleanup function to deregister component\n */\n registerComponent(name, constructor) {\n if (typeof constructor !== 'function' && (constructor == null || constructor.render == null || typeof constructor.render !== 'function')) {\n throw new Error('Please register a constructor function');\n }\n if (this._components[name] !== undefined) {\n throw new Error('Component ' + name + ' is already registered');\n }\n this._components[name] = constructor;\n var cleanup = () => {\n if (this._components[name] === undefined) {\n throw new Error('Component ' + name + ' is not registered');\n }\n delete this._components[name];\n };\n return cleanup;\n }\n\n /**\n * Set a fallback component to be rendered in place of unregistered components\n * @param constructor\n */\n setFallbackComponent(constructor) {\n this._fallbackComponent = constructor;\n }\n\n /**\n * Creates a layout configuration object based on the the current state\n * @param root\n * @returns GoldenLayout configuration\n */\n toConfig(root) {\n if (this.isInitialised === false) {\n throw new Error(\"Can't create config, layout not yet initialised\");\n }\n if (root && !(root instanceof AbstractContentItem)) {\n throw new Error('Root must be a ContentItem');\n }\n\n /*\n * settings & labels\n */\n var config = {\n settings: _objectSpread({}, this.config.settings),\n dimensions: _objectSpread({}, this.config.dimensions),\n labels: _objectSpread({}, this.config.labels),\n content: []\n };\n\n /*\n * Content\n */\n var _next = function next(configNode, item) {\n for (var key in item.config) {\n if (key !== 'content') {\n configNode[key] = item.config[key];\n }\n }\n if (configNode.componentName === 'lm-react-component') {\n // We change the type in `createContentItem`, so change it back here\n configNode.type = 'react-component';\n }\n if (item.contentItems.length) {\n configNode.content = [];\n for (var i = 0; i < item.contentItems.length; i++) {\n configNode.content[i] = {};\n _next(configNode.content[i], item.contentItems[i]);\n }\n }\n };\n if (root) {\n _next(config, {\n contentItems: [root]\n });\n } else {\n _next(config, this.root);\n }\n\n /*\n * Retrieve config for subwindows\n */\n this._$reconcilePopoutWindows();\n config.openPopouts = [];\n for (var i = 0; i < this.openPopouts.length; i++) {\n config.openPopouts.push(this.openPopouts[i].toConfig());\n }\n\n /*\n * Add maximised item\n */\n config.maximisedItemId = this._maximisedItem ? '__glMaximised' : undefined;\n return config;\n }\n\n /**\n * Returns a previously registered component\n * @param name The name used\n */\n getComponent(name) {\n return this._components[name];\n }\n\n /**\n * Returns a fallback component to render in place of unregistered components\n *\n * @public\n *\n * @returns {Function}\n */\n getFallbackComponent() {\n return this._fallbackComponent;\n }\n\n /**\n * Creates the actual layout. Must be called after all initial components\n * are registered. Recurses through the configuration and sets up\n * the item tree.\n *\n * If called before the document is ready it adds itself as a listener\n * to the document.ready event\n */\n init() {\n /**\n * Create the popout windows straight away. If popouts are blocked\n * an error is thrown on the same 'thread' rather than a timeout and can\n * be caught. This also prevents any further initilisation from taking place.\n */\n if (this._subWindowsCreated === false) {\n this._createSubWindows();\n this._subWindowsCreated = true;\n }\n\n /**\n * If the document isn't ready yet, wait for it.\n */\n if (document.readyState === 'loading' || document.body === null) {\n $(document).ready(this.init.bind(this));\n return;\n }\n\n /**\n * If this is a subwindow, wait a few milliseconds for the original\n * page's js calls to be executed, then replace the bodies content\n * with GoldenLayout\n */\n if (this.isSubWindow === true && this._creationTimeoutPassed === false) {\n setTimeout(this.init.bind(this), 7);\n this._creationTimeoutPassed = true;\n return;\n }\n if (this.isSubWindow === true) {\n this._adjustToWindowMode();\n }\n this._setContainer();\n this.dropTargetIndicator = new DropTargetIndicator();\n this.updateSize();\n this._create(this.config);\n this._bindEvents();\n this.isInitialised = true;\n this._adjustColumnsResponsive();\n this.emit('initialised');\n }\n\n /**\n * Adds a react child to the layout manager\n * @param id Unique panel id\n * @param element The React element\n */\n addReactChild(id, element) {\n this._reactChildMap.set(id, element);\n this._reactChildren = [...this._reactChildMap.values()];\n this.emit('reactChildrenChanged');\n }\n\n /**\n * Removes a react child from the layout manager\n * Only removes if the elements for the panelId has not been replaced by a different element\n * @param id Unique panel id\n * @param element The React element\n */\n removeReactChild(id, element) {\n var mapElem = this._reactChildMap.get(id);\n if (mapElem === element) {\n // If an element was replaced it may be destroyed after the other is created\n // In that case, the new element would be removed\n // Make sure the element being removed is the current element associated with its id\n this._reactChildMap.delete(id);\n this._reactChildren = [...this._reactChildMap.values()];\n this.emit('reactChildrenChanged');\n }\n }\n\n /**\n * Gets the react children in the layout\n *\n * Used in @deephaven/dashboard to mount the react elements\n * inside the app's React tree\n *\n * @returns The react children to mount for this layout manager\n */\n getReactChildren() {\n return this._reactChildren;\n }\n enableHeaders() {\n this.config.settings.hasHeaders = true;\n this.config.dimensions.headerHeight = this._initialHeaderHeight;\n this._findAllStackContainers().forEach(stack => {\n stack._header.show = true;\n stack.header.element.toggle(true);\n });\n this.updateSize();\n }\n disableHeaders() {\n this.config.settings.hasHeaders = false;\n this.config.dimensions.headerHeight = 0;\n this._findAllStackContainers().forEach(stack => {\n stack._header.show = false;\n stack.header.element.toggle(false);\n });\n this.updateSize();\n }\n\n /**\n * Updates the layout managers size\n * @param width width in pixels\n * @param height height in pixels\n */\n updateSize(width, height) {\n var _ref, _ref2;\n this.width = (_ref = width !== null && width !== void 0 ? width : this.container.width()) !== null && _ref !== void 0 ? _ref : 0;\n this.height = (_ref2 = height !== null && height !== void 0 ? height : this.container.height()) !== null && _ref2 !== void 0 ? _ref2 : 0;\n if (this.isInitialised === true) {\n this.root.callDownwards('setSize', [this.width, this.height]);\n if (this._maximisedItem) {\n var _this$container$width, _this$container$heigh;\n this._maximisedItem.element.width((_this$container$width = this.container.width()) !== null && _this$container$width !== void 0 ? _this$container$width : 0);\n this._maximisedItem.element.height((_this$container$heigh = this.container.height()) !== null && _this$container$heigh !== void 0 ? _this$container$heigh : 0);\n this._maximisedItem.callDownwards('setSize');\n }\n this._adjustColumnsResponsive();\n }\n }\n\n /**\n * Destroys the LayoutManager instance itself as well as every ContentItem\n * within it. After this is called nothing should be left of the LayoutManager.\n */\n destroy() {\n var _this$dropTargetIndic;\n if (this.isInitialised === false || !this.root) {\n return;\n }\n this._onUnload();\n $(window).off('resize', this._onResize);\n $(window).off('unload beforeunload', this._onUnload);\n $(window).off('blur.lm').off('focus.lm');\n $(window).off('keydown', this._windowKeydown);\n this.root.callDownwards('_$destroy', [], true);\n this.root.contentItems = [];\n this.tabDropPlaceholder.remove();\n (_this$dropTargetIndic = this.dropTargetIndicator) === null || _this$dropTargetIndic === void 0 || _this$dropTargetIndic.destroy();\n this.eventHub.destroy();\n this._dragSources.forEach(function (dragSource) {\n dragSource._dragListener.destroy();\n });\n this._dragSources = [];\n }\n\n /**\n * Recursively creates new item tree structures based on a provided\n * ItemConfiguration object\n *\n * @public\n * @param config ItemConfig\n * @param parent The item the newly created item should be a child of\n *\n * @returns Created item\n */\n\n // Default and Root configs will throw an error hence the `never` return type\n\n // This signature is necessary for this function to handle the broader\n // `ItemConfig` type since it won't be able to narrow the result in such cases.\n\n createContentItem(config, parent) {\n var _config$id;\n var typeErrorMsg, contentItem;\n if (typeof config.type !== 'string') {\n throw new ConfigurationError(\"Missing parameter 'type'\", config);\n }\n if (config.type === 'react-component') {\n config.type = 'component';\n config.componentName = 'lm-react-component';\n }\n if (!LayoutManager.isLayoutItemConfig(config)) {\n typeErrorMsg = \"Unknown type '\" + config.type + \"'. \" + 'Valid types are ' + LAYOUT_ITEM_CONFIG_TYPES.join(',');\n throw new ConfigurationError(typeErrorMsg);\n }\n\n /**\n * We add an additional stack around every component that's not within a stack anyways.\n */\n if (\n // If this is a component\n config.type === 'component' &&\n // and it's not already within a stack\n !(parent instanceof Stack) &&\n // and we have a parent\n !!parent &&\n // and it's not the topmost item in a new window\n !(this.isSubWindow === true && parent instanceof Root)) {\n config = {\n type: 'stack',\n width: config.width,\n height: config.height,\n content: [config]\n };\n }\n config.id = (_config$id = config.id) !== null && _config$id !== void 0 ? _config$id : getUniqueId();\n if (config.type === 'stack') {\n return new Stack(this, config, parent);\n }\n if (config.type === 'row') {\n return new RowOrColumn(false, this, config, parent);\n }\n if (config.type === 'column') {\n return new RowOrColumn(true, this, config, parent);\n }\n return new Component(this, config, parent);\n }\n\n /**\n * Creates a popout window with the specified content and dimensions\n *\n * @param configOrContentItem\n * @param dimensions A map with width, height, left and top\n * @param parentId the id of the element this item will be appended to\n * when popIn is called\n * @param indexInParent The position of this item within its parent element\n * @returns Created popout\n */\n createPopout(configOrContentItem, dimensions, parentId, indexInParent) {\n var config = configOrContentItem;\n var configArray = [];\n var isItem = configOrContentItem instanceof AbstractContentItem;\n var self = this;\n if (isItem) {\n var _parent3;\n configArray = this.toConfig(configOrContentItem).content;\n parentId = getUniqueId();\n\n /**\n * If the item is the only component within a stack or for some\n * other reason the only child of its parent the parent will be destroyed\n * when the child is removed.\n *\n * In order to support this we move up the tree until we find something\n * that will remain after the item is being popped out\n */\n var _parent = configOrContentItem.parent;\n var child = configOrContentItem;\n while (((_parent2 = _parent) === null || _parent2 === void 0 ? void 0 : _parent2.contentItems.length) === 1 && !_parent.isRoot) {\n var _parent2;\n child = _parent;\n _parent = _parent.parent;\n }\n (_parent3 = _parent) === null || _parent3 === void 0 || _parent3.addId(parentId);\n if (indexInParent == undefined || Number.isNaN(indexInParent)) {\n var _parent4;\n indexInParent = (_parent4 = _parent) === null || _parent4 === void 0 ? void 0 : _parent4.contentItems.indexOf(child);\n }\n } else {\n if (!(configOrContentItem instanceof Array)) {\n configArray = [configOrContentItem];\n } else {\n configArray = configOrContentItem;\n }\n }\n if (!dimensions && isItem) {\n var _configOrContentItem$, _configOrContentItem$2, _configOrContentItem$3;\n var windowLeft = window.screenX || window.screenLeft;\n var windowTop = window.screenY || window.screenTop;\n var offset = (_configOrContentItem$ = configOrContentItem.element.offset()) !== null && _configOrContentItem$ !== void 0 ? _configOrContentItem$ : {\n left: 0,\n top: 0\n };\n dimensions = {\n left: windowLeft + offset.left,\n top: windowTop + offset.top,\n width: (_configOrContentItem$2 = configOrContentItem.element.width()) !== null && _configOrContentItem$2 !== void 0 ? _configOrContentItem$2 : 0,\n height: (_configOrContentItem$3 = configOrContentItem.element.height()) !== null && _configOrContentItem$3 !== void 0 ? _configOrContentItem$3 : 0\n };\n }\n if (!dimensions && !isItem) {\n dimensions = {\n left: window.screenX || window.screenLeft + 20,\n top: window.screenY || window.screenTop + 20,\n width: 500,\n height: 309\n };\n }\n if (isItem) {\n configOrContentItem.remove();\n }\n if (!dimensions || !parentId || indexInParent === undefined) {\n return;\n }\n var browserPopout = new BrowserPopout(configArray, dimensions, parentId, indexInParent, this);\n browserPopout.on('initialised', function () {\n self.emit('windowOpened', browserPopout);\n });\n browserPopout.on('closed', function () {\n self._$reconcilePopoutWindows();\n });\n this.openPopouts.push(browserPopout);\n return browserPopout;\n }\n\n /**\n * Attaches DragListener to any given DOM element\n * and turns it into a way of creating new ContentItems\n * by 'dragging' the DOM element into the layout\n *\n * @param element\n * @param itemConfig for the new item to be created, or a function which will provide it\n */\n createDragSource(element, itemConfig) {\n this.config.settings.constrainDragToContainer = false;\n var dragSource = new DragSource(element, itemConfig, this);\n this._dragSources.push(dragSource);\n return dragSource;\n }\n\n /**\n * Create a new item in a dragging state, given a starting mouse event to act as the initial position\n *\n * @param itemConfig for the new item to be created, or a function which will provide it\n * @param event used as the starting position for the dragProxy\n */\n createDragSourceFromEvent(itemConfig, event) {\n this.config.settings.constrainDragToContainer = false;\n return new DragSourceFromEvent(itemConfig, this, event);\n }\n\n /**\n * Programmatically selects an item. This deselects\n * the currently selected item, selects the specified item\n * and emits a selectionChanged event\n *\n * @param item\n * @param _$silent Wheather to notify the item of its selection\n */\n selectItem(item, _$silent) {\n if (this.config.settings.selectionEnabled !== true) {\n throw new Error('Please set selectionEnabled to true to use this feature');\n }\n if (item === this.selectedItem) {\n return;\n }\n if (this.selectedItem !== null) {\n this.selectedItem.deselect();\n }\n if (item && _$silent !== true) {\n item.select();\n }\n this.selectedItem = item;\n this.emit('selectionChanged', item);\n }\n\n /*************************\n * PACKAGE PRIVATE\n *************************/\n _$maximiseItem(contentItem) {\n var _this$container$width2, _this$container$heigh2;\n if (this._maximisedItem !== null) {\n this._$minimiseItem(this._maximisedItem);\n }\n this._maximisedItem = contentItem;\n this._maximisedItem.addId('__glMaximised');\n contentItem.element.addClass('lm_maximised');\n contentItem.element.after(this._maximisePlaceholder);\n this.root.element.prepend(contentItem.element);\n contentItem.element.width((_this$container$width2 = this.container.width()) !== null && _this$container$width2 !== void 0 ? _this$container$width2 : 0);\n contentItem.element.height((_this$container$heigh2 = this.container.height()) !== null && _this$container$heigh2 !== void 0 ? _this$container$heigh2 : 0);\n contentItem.callDownwards('setSize');\n this._maximisedItem.emit('maximised');\n this.emit('stateChanged');\n }\n _$minimiseItem(contentItem) {\n var _contentItem$parent;\n contentItem.element.removeClass('lm_maximised');\n contentItem.removeId('__glMaximised');\n this._maximisePlaceholder.after(contentItem.element);\n this._maximisePlaceholder.remove();\n (_contentItem$parent = contentItem.parent) === null || _contentItem$parent === void 0 || _contentItem$parent.callDownwards('setSize');\n this._maximisedItem = null;\n contentItem.emit('minimised');\n this.emit('stateChanged');\n }\n\n /**\n * This method is used to get around sandboxed iframe restrictions.\n * If 'allow-top-navigation' is not specified in the iframe's 'sandbox' attribute\n * (as is the case with codepens) the parent window is forbidden from calling certain\n * methods on the child, such as window.close() or setting document.location.href.\n *\n * This prevented GoldenLayout popouts from popping in in codepens. The fix is to call\n * _$closeWindow on the child window's gl instance which (after a timeout to disconnect\n * the invoking method from the close call) closes itself.\n */\n _$closeWindow() {\n window.setTimeout(function () {\n window.close();\n }, 1);\n }\n _$getArea(x, y) {\n var smallestSurface = Infinity;\n var mathingArea = null;\n for (var i = 0; i < this._itemAreas.length; i++) {\n var area = this._itemAreas[i];\n if (x > area.x1 && x < area.x2 && y > area.y1 && y < area.y2 && smallestSurface > area.surface) {\n smallestSurface = area.surface;\n mathingArea = area;\n }\n }\n return mathingArea;\n }\n\n /**\n * Creates the drop zones at the edges of the screen\n */\n _$createRootItemAreas() {\n var areaSize = 50;\n var rootArea = _objectSpread({}, this.root._$getArea());\n var areas = [_objectSpread(_objectSpread({}, rootArea), {}, {\n side: 'left',\n x2: rootArea.x1 + areaSize\n }), _objectSpread(_objectSpread({}, rootArea), {}, {\n side: 'right',\n x1: rootArea.x2 - areaSize\n }), _objectSpread(_objectSpread({}, rootArea), {}, {\n side: 'top',\n y2: rootArea.y1 + areaSize\n }), _objectSpread(_objectSpread({}, rootArea), {}, {\n side: 'bottom',\n y1: rootArea.y2 - areaSize\n })];\n areas.forEach(area => {\n area.surface = (area.x2 - area.x1) * (area.y2 - area.y1);\n });\n this._itemAreas.push(...areas);\n }\n _$calculateItemAreas() {\n var allContentItems = this._getAllContentItems();\n this._itemAreas = [];\n\n /**\n * If the last item is dragged out, highlight the entire container size to\n * allow to re-drop it. allContentItems[ 0 ] === this.root at this point\n *\n * Don't include root into the possible drop areas though otherwise since it\n * will used for every gap in the layout, e.g. splitters\n */\n if (allContentItems.length === 1) {\n this._itemAreas.push(this.root._$getArea());\n return;\n }\n this._$createRootItemAreas();\n for (var i = 0; i < allContentItems.length; i++) {\n var item = allContentItems[i];\n if (!isStack(item)) {\n continue;\n }\n var area = item._$getArea();\n if (area === null) {\n continue;\n } else if (area instanceof Array) {\n this._itemAreas = this._itemAreas.concat(area);\n } else {\n var _area$contentItem$_co;\n this._itemAreas.push(area);\n var header = _objectSpread(_objectSpread({}, area), (_area$contentItem$_co = area.contentItem._contentAreaDimensions) === null || _area$contentItem$_co === void 0 ? void 0 : _area$contentItem$_co.header.highlightArea);\n header.surface = (header.x2 - header.x1) * (header.y2 - header.y1);\n this._itemAreas.push(header);\n }\n }\n }\n\n /**\n * Takes a contentItem or a configuration and optionally a parent\n * item and returns an initialised instance of the contentItem.\n * If the contentItem is a function, it is first called\n *\n * @param contentItemOrConfig\n * @param parent Only necessary when passing in config\n */\n _$normalizeContentItem(contentItemOrConfig, parent) {\n if (!contentItemOrConfig) {\n throw new Error('No content item defined');\n }\n if (typeof contentItemOrConfig === 'function') {\n contentItemOrConfig = contentItemOrConfig();\n }\n if (contentItemOrConfig instanceof AbstractContentItem) {\n return contentItemOrConfig;\n }\n if ($.isPlainObject(contentItemOrConfig) && contentItemOrConfig.type) {\n var newContentItem = this.createContentItem(contentItemOrConfig, parent !== null && parent !== void 0 ? parent : null);\n newContentItem.callDownwards('_$init');\n return newContentItem;\n } else {\n throw new Error('Invalid contentItem');\n }\n }\n\n /**\n * Iterates through the array of open popout windows and removes the ones\n * that are effectively closed. This is necessary due to the lack of reliably\n * listening for window.close / unload events in a cross browser compatible fashion.\n */\n _$reconcilePopoutWindows() {\n var openPopouts = [];\n for (var i = 0; i < this.openPopouts.length; i++) {\n var _this$openPopouts$i$g;\n if (((_this$openPopouts$i$g = this.openPopouts[i].getWindow()) === null || _this$openPopouts$i$g === void 0 ? void 0 : _this$openPopouts$i$g.closed) === false) {\n openPopouts.push(this.openPopouts[i]);\n } else {\n this.emit('windowClosed', this.openPopouts[i]);\n }\n }\n if (this.openPopouts.length !== openPopouts.length) {\n this.emit('stateChanged');\n this.openPopouts = openPopouts;\n }\n }\n\n /***************************\n * PRIVATE\n ***************************/\n /**\n * Returns a flattened array of all content items,\n * regardles of level or type\n * @return Flattened array of content items\n */\n _getAllContentItems() {\n var allContentItems = [];\n var addChildren = contentItem => {\n allContentItems.push(contentItem);\n if (contentItem.contentItems instanceof Array) {\n for (var i = 0; i < contentItem.contentItems.length; i++) {\n addChildren(contentItem.contentItems[i]);\n }\n }\n };\n addChildren(this.root);\n return allContentItems;\n }\n\n /**\n * Binds to DOM/BOM events on init\n */\n _bindEvents() {\n if (this._isFullPage) {\n $(window).resize(this._onResize);\n }\n $(window).on('unload beforeunload', this._onUnload).on('blur.lm', this._windowBlur).on('focus.lm', this._windowFocus).on('keydown', this._windowKeydown);\n }\n\n /**\n * Handles setting a class based on window focus, useful for focus indicators\n */\n _windowBlur() {\n this.root.element.addClass('lm_window_blur');\n }\n _windowFocus() {\n this.root.element.removeClass('lm_window_blur');\n }\n\n /**\n * Handles the escape key to close maximized items, as long as the focus isn't within an input.\n * The escape key has local behaviors in inputs like the Monaco editor or search that we don't\n * want to react to as they are not captured.\n *\n * @private\n * @param e The keydown event\n */\n _windowKeydown(e) {\n if (e.key === 'Escape' && this._maximisedItem !== null) {\n var active = document.activeElement;\n if (active && (active.tagName === 'INPUT' || active.tagName === 'TEXTAREA' || active.tagName === 'SELECT' || active.isContentEditable)) {\n return;\n }\n this._maximisedItem.toggleMaximise();\n }\n }\n\n /**\n * Debounces resize events\n */\n _onResize() {\n clearTimeout(this._resizeTimeoutId);\n this._resizeTimeoutId = window.setTimeout(this.updateSize.bind(this), 100);\n }\n\n /**\n * Extends the default config with the user specific settings and applies\n * derivations. Please note that there's a seperate method (AbstractContentItem._extendItemNode)\n * that deals with the extension of item configs\n *\n * @param config\n * @returns config\n */\n _createConfig(config) {\n var _config$settings;\n var windowConfigKey = getQueryStringParam('gl-window');\n if (windowConfigKey) {\n this.isSubWindow = true;\n config = JSON.parse(localStorage.getItem(windowConfigKey) || '{}');\n config = unminifyConfig(config);\n localStorage.removeItem(windowConfigKey);\n }\n config = $.extend(true, {}, defaultConfig, config);\n var _nextNode = function nextNode(node) {\n for (var key in node) {\n var value = node[key];\n if (key !== 'props' && typeof value === 'object' && value != null) {\n _nextNode(value);\n } else if (key === 'type' && value === 'react-component') {\n node.type = 'component';\n node.componentName = 'lm-react-component';\n }\n }\n };\n _nextNode(config);\n if (((_config$settings = config.settings) === null || _config$settings === void 0 ? void 0 : _config$settings.hasHeaders) === false) {\n config.dimensions.headerHeight = 0;\n }\n return config;\n }\n\n /**\n * This is executed when GoldenLayout detects that it is run\n * within a previously opened popout window.\n */\n _adjustToWindowMode() {\n var _this$config$content$;\n var popInButton = $('<div class=\"lm_popin\" title=\"' + this.config.labels.popin + '\">' + '<div class=\"lm_icon\"></div>' + '<div class=\"lm_bg\"></div>' + '</div>');\n popInButton.click(() => {\n this.emit('popIn');\n });\n document.title = stripTags((_this$config$content$ = this.config.content[0].title) !== null && _this$config$content$ !== void 0 ? _this$config$content$ : '');\n $('head').append($('body link, body style, template, .gl_keep'));\n this.container = $('body').html('').css('visibility', 'visible').append(popInButton);\n\n /*\n * This seems a bit pointless, but actually causes a reflow/re-evaluation getting around\n * slickgrid's \"Cannot find stylesheet.\" bug in chrome\n */\n var x = document.body.offsetHeight; // jshint ignore:line\n\n /*\n * Expose this instance on the window object\n * to allow the opening window to interact with\n * it\n */\n window.__glInstance = this;\n }\n\n /**\n * Creates Subwindows (if there are any). Throws an error\n * if popouts are blocked.\n */\n _createSubWindows() {\n if (!this.config.openPopouts) {\n return;\n }\n for (var i = 0; i < this.config.openPopouts.length; i++) {\n var popout = this.config.openPopouts[i];\n this.createPopout(popout.content, popout.dimensions, popout.parentId, popout.indexInParent);\n }\n }\n _getContainer() {\n var container = this._originalContainer ? $(this._originalContainer) : $('body');\n if (container.length === 0) {\n throw new Error('GoldenLayout container not found');\n }\n if (container.length > 1) {\n throw new Error('GoldenLayout more than one container element specified');\n }\n return container;\n }\n\n /**\n * Determines what element the layout will be created in\n */\n _setContainer() {\n var container = this._getContainer();\n if (container[0] === document.body) {\n this._isFullPage = true;\n $('html, body').css({\n height: '100%',\n margin: 0,\n padding: 0,\n overflow: 'hidden'\n });\n }\n this.container = container;\n }\n\n /**\n * Kicks of the initial, recursive creation chain\n *\n * @param config GoldenLayout Config\n */\n _create(config) {\n var errorMsg;\n if (!(config.content instanceof Array)) {\n if (config.content === undefined) {\n errorMsg = \"Missing setting 'content' on top level of configuration\";\n } else {\n errorMsg = \"Configuration parameter 'content' must be an array\";\n }\n throw new ConfigurationError(errorMsg, config);\n }\n if (config.content.length > 1) {\n errorMsg = \"Top level content can't contain more then one element.\";\n throw new ConfigurationError(errorMsg, config);\n }\n this.root = new Root(this, {\n content: config.content\n }, this.container);\n this.root.callDownwards('_$init');\n if (config.maximisedItemId === '__glMaximised') {\n this.root.getItemsById(config.maximisedItemId)[0].toggleMaximise();\n }\n }\n\n /**\n * Called when the window is closed or the user navigates away\n * from the page\n */\n _onUnload() {\n if (this.config.settings.closePopoutsOnUnload === true) {\n for (var i = 0; i < this.openPopouts.length; i++) {\n this.openPopouts[i].close();\n }\n }\n }\n\n /**\n * Adjusts the number of columns to be lower to fit the screen and still maintain minItemWidth.\n */\n _adjustColumnsResponsive() {\n // If there is no min width set, or not content items, do nothing.\n if (!this._useResponsiveLayout() || this._updatingColumnsResponsive || !this.config.dimensions || !this.config.dimensions.minItemWidth || this.root.contentItems.length === 0 || !this.root.contentItems[0].isRow) {\n this._firstLoad = false;\n return;\n }\n this._firstLoad = false;\n\n // If there is only one column, do nothing.\n var columnCount = this.root.contentItems[0].contentItems.length;\n if (columnCount <= 1) {\n return;\n }\n\n // If they all still fit, do nothing.\n var minItemWidth = this.config.dimensions.minItemWidth;\n var totalMinWidth = columnCount * minItemWidth;\n if (this.width == null || totalMinWidth <= this.width) {\n return;\n }\n\n // Prevent updates while it is already happening.\n this._updatingColumnsResponsive = true;\n\n // Figure out how many columns to stack, and put them all in the first stack container.\n var finalColumnCount = Math.max(Math.floor(this.width / minItemWidth), 1);\n var stackColumnCount = columnCount - finalColumnCount;\n var rootContentItem = this.root.contentItems[0];\n var firstStackContainer = this._findAllStackContainers()[0];\n for (var i = 0; i < stackColumnCount; i++) {\n // Stack from right.\n var column = rootContentItem.contentItems[rootContentItem.contentItems.length - 1];\n this._addChildContentItemsToContainer(firstStackContainer, column);\n }\n this._updatingColumnsResponsive = false;\n }\n\n /**\n * Determines if responsive layout should be used.\n *\n * @returns True if responsive layout should be used; otherwise false.\n */\n _useResponsiveLayout() {\n return this.config.settings && (this.config.settings.responsiveMode == 'always' || this.config.settings.responsiveMode == 'onload' && this._firstLoad);\n }\n\n /**\n * Adds all children of a node to another container recursively.\n * @param container - Container to add child content items to.\n * @param node - Node to search for content items.\n */\n _addChildContentItemsToContainer(container, node) {\n if (node.type === 'stack') {\n node.contentItems.forEach(function (item) {\n container.addChild(item);\n node.removeChild(item, true);\n });\n } else {\n node.contentItems.forEach(item => {\n this._addChildContentItemsToContainer(container, item);\n });\n }\n }\n\n /**\n * Finds all the stack containers.\n * @returns The found stack containers.\n */\n _findAllStackContainers() {\n var stackContainers = [];\n this._findAllStackContainersRecursive(stackContainers, this.root);\n return stackContainers;\n }\n\n /**\n * Finds all the stack containers.\n *\n * @param stackContainers Set of containers to populate.\n * @param node Current node to process.\n */\n _findAllStackContainersRecursive(stackContainers, node) {\n node.contentItems.forEach(item => {\n if (isStack(item)) {\n stackContainers.push(item);\n } else if (!item.isComponent) {\n this._findAllStackContainersRecursive(stackContainers, item);\n }\n });\n }\n}\n/**\n * Hook that allows to access private classes\n */\n_defineProperty(LayoutManager, \"__lm\", lm);\nexport default LayoutManager;\n//# sourceMappingURL=LayoutManager.js.map","import GoldenLayout from \"./GoldenLayout.module.css\"; // parseInt for unitless values, stripping \"px\"\nexport default Object.freeze({\n tabHeight: parseInt(GoldenLayout['tab-height'], 10),\n dragBorderWidth: parseInt(GoldenLayout['drag-border-width'], 10)\n});\n//# sourceMappingURL=GoldenLayoutThemeExport.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport deepEqual from 'fast-deep-equal';\nimport { nanoid } from 'nanoid';\nimport isMatch from 'lodash.ismatch';\nimport Log from '@deephaven/log';\nimport { isComponent, isRoot, isStack, GoldenLayoutThemeExport } from '@deephaven/golden-layout';\nimport { assertNotNull } from '@deephaven/utils';\nvar log = Log.module('LayoutUtils');\nfunction isComponentConfig(config) {\n return config.componentName !== undefined;\n}\nexport function isReactComponentConfig(config) {\n var reactConfig = config;\n // Golden layout sets the type to 'component' and componentName to 'lm-react-component' in `createContentItem`, then changes it back in `toConfig`\n // For our purposes, we need to check both.\n return (isComponentConfig(config) && config.componentName === 'lm-react-component' || config.type === 'react-component') && reactConfig.component !== undefined;\n}\nfunction isHTMLElement(element) {\n return element.focus !== undefined;\n}\nfunction isStackItemConfig(config) {\n return config.type === 'stack';\n}\nclass LayoutUtils {\n static activateTab(root, config) {\n var stack = LayoutUtils.getStackForRoot(root, config, false);\n if (!stack) {\n log.error('Could not find stack for config', config);\n return;\n }\n // Find the tab with the specified table and activate it\n var contentItem = LayoutUtils.getContentItemInStack(stack, config);\n if (contentItem) {\n stack.setActiveContentItem(contentItem);\n }\n }\n\n /**\n * Is the tab with the given config active\n * @param root A GoldenLayout content item with the tab\n * @param config Tab config to match\n * @returns True if the tab is active\n */\n static isActiveTab(root, config) {\n var stack = LayoutUtils.getStackForRoot(root, config, false);\n if (!stack) {\n log.error('Could not find stack for config', config);\n return false;\n }\n // Find the item with the specified config and compare with active item\n var contentItem = LayoutUtils.getContentItemInStack(stack, config);\n var activeItem = stack.getActiveContentItem();\n return activeItem === contentItem;\n }\n\n /**\n * Adds a stack to the root layout specified. Adds to the first row/column with only one item\n * @param parent A GoldenLayout content item to add the stack to\n * @returns The newly created stack.\n */\n static addStack(parent) {\n var columnPreferred = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (isRoot(parent)) {\n var rowOrColConfig = {\n type: columnPreferred ? 'column' : 'row'\n };\n if (parent.contentItems == null || parent.contentItems.length === 0) {\n parent.addChild(rowOrColConfig);\n }\n var child = parent.contentItems[0];\n var _isCorrectType = columnPreferred ? child.isColumn : child.isRow;\n if (!_isCorrectType) {\n parent.removeChild(child, true);\n parent.addChild(rowOrColConfig);\n\n // The addChild may cause the element that has focus to be removed from the DOM, which changes focus to the body\n // Try and maintain the focus as best we can. The unfocused element may still send a blur/focus event so that needs to be handled correctly.\n var maintainFocusElement = document.activeElement;\n parent.contentItems[0].addChild(child);\n if (maintainFocusElement && maintainFocusElement.focus != null) {\n maintainFocusElement.focus();\n }\n }\n return this.addStack(parent.contentItems[0], columnPreferred);\n }\n if (parent.contentItems.length < 2) {\n parent.addChild({\n type: 'stack'\n });\n return parent.contentItems[parent.contentItems.length - 1];\n }\n var newParent = parent.contentItems[parent.contentItems.length - 1];\n var isCorrectType = !columnPreferred ? newParent.isColumn : newParent.isRow;\n\n // This is usually triggered because we hit a stack within the last row/column\n if (!isCorrectType) {\n var _newParent$config, _newParent$config2;\n var inverseRowOrColConfig = parent.layoutManager.createContentItem({\n type: !columnPreferred ? 'column' : 'row',\n height: (_newParent$config = newParent.config) === null || _newParent$config === void 0 ? void 0 : _newParent$config.height,\n width: (_newParent$config2 = newParent.config) === null || _newParent$config2 === void 0 ? void 0 : _newParent$config2.width\n }, parent);\n parent.replaceChild(newParent, inverseRowOrColConfig);\n parent.contentItems[parent.contentItems.length - 1].addChild(newParent);\n newParent = parent.contentItems[parent.contentItems.length - 1];\n }\n return this.addStack(newParent, !columnPreferred);\n }\n\n /**\n * Gets all stack containers in the layout\n * @param layout GoldenLayout instance\n * @returns The found stack containers\n */\n static getAllStackContainers(layout) {\n // eslint-disable-next-line no-underscore-dangle\n return layout._findAllStackContainers();\n }\n\n /**\n * Get the index of the stack that is currently focused\n * @param allStacks All the stacks\n * @returns The focused stack's index or -1 if not found\n */\n static getFocusedStackIndex(allStacks) {\n // NOTE: We target the 'lm_focusin' class because GoldenLayout automatically applies this class\n // to tab elements when they receive focus. Until we enhance focus tracking in GoldenLayout, we\n // will have to rely on this internal CSS class.\n return allStacks.findIndex(stack => stack.header.tabs.some(tab => tab.element[0].classList.contains('lm_focusin')));\n }\n\n /**\n * Get the stack that is currently focused\n * @param layout GoldenLayout instance\n * @returns The focused stack or undefined if none found\n */\n static getFocusedStack(layout) {\n var allStacks = LayoutUtils.getAllStackContainers(layout);\n var focusedStackIndex = LayoutUtils.getFocusedStackIndex(allStacks);\n return allStacks[focusedStackIndex];\n }\n\n /**\n * Gets a stack by its ID\n * @param item Golden layout content item to search for the stack\n * @param searchId the ID\n */\n static getStackById(item, searchId) {\n var _item$config;\n var allowEmptyStack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (allowEmptyStack && isStack(item) && item.contentItems.length === 0) {\n return item;\n }\n if (searchId === ((_item$config = item.config) === null || _item$config === void 0 ? void 0 : _item$config.id)) {\n if (isStack(item)) {\n return item;\n }\n throw new Error(\"Item with ID \".concat(searchId, \" is not a stack\"));\n }\n if (item.contentItems == null) {\n return null;\n }\n for (var i = 0; i < item.contentItems.length; i += 1) {\n var stack = this.getStackById(item.contentItems[i], searchId, allowEmptyStack);\n if (stack) {\n return stack;\n }\n }\n return null;\n }\n\n /**\n * Gets a content item by its ID\n * @param item Golden layout content item to search for the content item. Typically the root.\n * @param searchId the ID\n */\n static getContentItemById(item, searchId) {\n var _item$config2;\n if (((_item$config2 = item.config) === null || _item$config2 === void 0 ? void 0 : _item$config2.id) === searchId) {\n return item;\n }\n if (item.contentItems == null) {\n return null;\n }\n for (var i = 0; i < item.contentItems.length; i += 1) {\n var contentItem = this.getContentItemById(item.contentItems[i], searchId);\n if (contentItem) {\n return contentItem;\n }\n }\n return null;\n }\n\n /**\n * Gets the first stack which contains a contentItem with the given config values\n * @param item Golden layout content item to search for the stack\n * @param config The item properties to match\n */\n static getStackForConfig(item) {\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allowEmptyStack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (allowEmptyStack && isStack(item) && item.contentItems.length === 0) {\n return item;\n }\n if (item.contentItems == null) {\n return null;\n }\n for (var i = 0; i < item.contentItems.length; i += 1) {\n var contentItem = item.contentItems[i];\n if (contentItem.isComponent && contentItem.config != null) {\n if (isMatch(contentItem.config, config)) {\n return item;\n }\n }\n var stack = this.getStackForConfig(contentItem, config, allowEmptyStack);\n if (stack) {\n return stack;\n }\n }\n return null;\n }\n\n /**\n * Gets a stack matching the specified config\n * @param root The root GoldenLayout element\n * @param config The item config type to match, eg. { component: 'IrisGridPanel', title: 'Table Name' }\n * @param createIfNecessary Whether to create the stack if it does not exist.\n * @param matchComponentType If the config doesn't match exactly, just find another one of the same component type\n * @param allowEmptyStack If no configs match, search for an empty stack that can be used\n */\n static getStackForRoot(root, config) {\n var createIfNecessary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var matchComponentType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var allowEmptyStack = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var stack = this.getStackForConfig(root, config);\n if (!stack && matchComponentType) {\n stack = this.getStackForConfig(root, {\n component: config.component\n }, allowEmptyStack);\n }\n if (!stack && createIfNecessary) {\n stack = this.addStack(root);\n }\n return stack;\n }\n\n /**\n * Gets a stack matching one of the specified types, creates new stack if necessary\n * @param root The GoldenLayout root to find or create the stack in\n * @param types The array of component types to match\n * @param createIfNecessary Whether to create the stack if it does not exist\n * @param matchComponentType If the config doesn't match exactly, just find another one of the same component type\n * @param allowEmptyStack If no configs match, search for an empty stack that can be used\n */\n static getStackForComponentTypes(root, types) {\n var createIfNecessary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var matchComponentType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var allowEmptyStack = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n for (var i = 0; i < types.length; i += 1) {\n var component = types[i];\n var isLastType = i === types.length - 1;\n var stack = LayoutUtils.getStackForRoot(root, {\n component\n }, createIfNecessary && isLastType, matchComponentType, allowEmptyStack);\n if (stack) {\n return stack;\n }\n }\n return null;\n }\n\n /**\n * Gets first content item with the specified config in stack.\n * @param stack The stack to search for the item\n * @param config The item config type to match, eg. { component: 'IrisGridPanel', title: 'Table Name' }\n * @returns Returns the found content item, null if not found.\n */\n static getContentItemInStack(stack, config) {\n if (!stack) {\n return null;\n }\n for (var i = 0; i < stack.contentItems.length; i += 1) {\n var contentItem = stack.contentItems[i];\n if (contentItem.isComponent && contentItem.config != null) {\n if (isMatch(contentItem.config, config)) {\n return contentItem;\n }\n }\n }\n return null;\n }\n\n /**\n * Removes dynamic props from components in the given config so this config could be serialized\n * @param config Config objec\n * @returns Dehydrated config\n */\n static dehydrateLayoutConfig(config, dehydrateComponent) {\n if (config == null || !config.length) {\n return [];\n }\n var dehydratedConfig = [];\n for (var i = 0; i < config.length; i += 1) {\n var itemConfig = config[i];\n var {\n content\n } = itemConfig;\n if (isReactComponentConfig(itemConfig)) {\n var dehydratedComponent = dehydrateComponent(itemConfig.component, itemConfig);\n if (dehydratedComponent != null) {\n dehydratedConfig.push(dehydratedComponent);\n } else {\n log.debug2(\"dehydrateLayoutConfig: skipping unmapped component \\\"\".concat(itemConfig.component, \"\\\"\"));\n }\n } else if (content) {\n var layoutItemConfig = _objectSpread(_objectSpread({}, itemConfig), {}, {\n content: LayoutUtils.dehydrateLayoutConfig(content, dehydrateComponent)\n });\n dehydratedConfig.push(layoutItemConfig);\n } else {\n dehydratedConfig.push(itemConfig);\n }\n }\n return dehydratedConfig;\n }\n static getTabPoint(glContainer) {\n var {\n tab\n } = glContainer;\n if (tab == null) {\n throw new Error(\"Cannot get tab for panel container \".concat(glContainer));\n }\n var tabRect = tab.element[0].getBoundingClientRect();\n return [tabRect.left + tabRect.width * 0.5, tabRect.bottom - 8];\n }\n\n /**\n * Drop minor changes in Layout Configuration for deep comparison\n * @param config Layout Configuration\n *\n * minor changes:\n * 1. sorts in grid\n * 2. quick filters in grid\n * 3. active item\n * 4. isStuckToBottom/isStuckToRight\n *\n * item id is also removed\n */\n static dropLayoutMinorChange(config) {\n for (var i = 0; i < config.length; i += 1) {\n var itemConfig = config[i];\n var {\n content\n } = itemConfig;\n if (content !== undefined) {\n if (isStackItemConfig(itemConfig)) {\n delete itemConfig.activeItemIndex;\n }\n LayoutUtils.dropLayoutMinorChange(content);\n } else if (isReactComponentConfig(itemConfig) && itemConfig.component === 'IrisGridPanel') {\n if (itemConfig.props.panelState != null) {\n delete itemConfig.id;\n itemConfig.props.panelState.irisGridState.sorts = [];\n itemConfig.props.panelState.irisGridState.quickFilters = [];\n itemConfig.props.panelState.gridState.isStuckToBottom = false;\n itemConfig.props.panelState.gridState.isStuckToRight = false;\n }\n }\n }\n }\n\n /**\n * Compare two layouts to see if they are equivalent\n * @param layout1 A Golden Layout config object\n * @param layout2 Another Golden layout config object\n * @param major When true, will ignore \"minor\" property differences (eg. sorts)\n */\n static isEqual(layout1, layout2) {\n var major = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var layout1Clone = LayoutUtils.cloneLayout(layout1);\n var layout2Clone = LayoutUtils.cloneLayout(layout2);\n if (major) {\n LayoutUtils.dropLayoutMinorChange(layout1Clone);\n LayoutUtils.dropLayoutMinorChange(layout2Clone);\n return deepEqual(layout1Clone, layout2Clone);\n }\n // Pass cloned layouts to avoid false negatives\n // when comparing layouts with undefined and missing properties\n return deepEqual(layout1Clone, layout2Clone);\n }\n static cloneLayout(layout) {\n return JSON.parse(JSON.stringify(layout));\n }\n\n /**\n * Adds dynamic props to components in the given config so this config could be used to initialize a layout\n * @param config Dehydrated config object\n * @param hydrateComponent Function to hydrate the component\n * @returns Hydrated config\n */\n static hydrateLayoutConfig(config, hydrateComponent) {\n if (config == null || !config.length) {\n return [];\n }\n var hydratedConfig = [];\n for (var i = 0; i < config.length; i += 1) {\n var itemConfig = config[i];\n if (isReactComponentConfig(itemConfig)) {\n var _itemConfig$id;\n var {\n component,\n props = {}\n } = itemConfig;\n hydratedConfig.push(_objectSpread(_objectSpread({}, itemConfig), {}, {\n id: (_itemConfig$id = itemConfig === null || itemConfig === void 0 ? void 0 : itemConfig.id) !== null && _itemConfig$id !== void 0 ? _itemConfig$id : nanoid(),\n props: hydrateComponent(component, props)\n }));\n } else if (itemConfig.content !== undefined) {\n var contentConfig = LayoutUtils.hydrateLayoutConfig(itemConfig.content, hydrateComponent);\n if (isStackItemConfig(itemConfig) && itemConfig.activeItemIndex != null && itemConfig.activeItemIndex >= contentConfig.length) {\n log.warn('Fixing bad activeItemIndex!', itemConfig.activeItemIndex, itemConfig);\n itemConfig.activeItemIndex = 0;\n }\n hydratedConfig.push(_objectSpread(_objectSpread({}, itemConfig), {}, {\n content: contentConfig\n }));\n } else {\n hydratedConfig.push(itemConfig);\n }\n }\n return hydratedConfig;\n }\n\n /**\n * Opens a component. It will try and open the component in an existing stack of the same component.\n * If `replaceExisting` is true and there is a component found with the same `config.id`, it will replace that component with this one.\n * If `allowStack` is true and there is a component of the same type found, it will open in that stack (potentially covering up a panel).\n * @param root The GoldenLayout root to open the component in\n * @param config The component config definition to open\n * @param replaceExisting Whether it should replace the existing one matching component type and id, or open a new one\n * @param replaceConfig The component config to replace\n * @param createNewStack True to force opening in a new stack, false to try and open in a stack with the same type of component.\n * @param focusElement The element to focus on\n * @param dragEvent Whether component is being created with a drag, mouse event is initial position for drag proxy\n */\n static openComponent() {\n var {\n root,\n config: configParam,\n stack: stackParam = undefined,\n replaceExisting = true,\n replaceConfig = undefined,\n createNewStack = false,\n focusElement = undefined,\n dragEvent = undefined\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // attempt to retain focus after dom manipulation, which can break focus\n var maintainFocusElement = document.activeElement;\n var config = _objectSpread({}, configParam);\n if (config.id == null) {\n config.id = nanoid();\n }\n if (dragEvent != null) {\n root === null || root === void 0 || root.layoutManager.createDragSourceFromEvent(config, dragEvent);\n return;\n }\n var searchConfig = replaceConfig || {\n id: config.id,\n component: config.component\n };\n assertNotNull(root);\n var stack = stackParam !== null && stackParam !== void 0 ? stackParam : createNewStack ? LayoutUtils.addStack(root) : LayoutUtils.getStackForRoot(root, searchConfig);\n assertNotNull(stack);\n var oldContentItem = LayoutUtils.getContentItemInStack(stack, searchConfig);\n if (focusElement != null) {\n // We need to listen for when the stack is created\n var onComponentCreated = event => {\n log.debug('Component created, focusing element', focusElement);\n stack.off('componentCreated', onComponentCreated);\n var {\n element\n } = event.origin;\n\n // Need to wait until the component actually renders.\n requestAnimationFrame(() => {\n LayoutUtils.focusElement(element[0], focusElement);\n });\n };\n stack.on('componentCreated', onComponentCreated);\n }\n if (replaceExisting && oldContentItem) {\n var index = stack.contentItems.indexOf(oldContentItem);\n\n // Using remove/add here instead of replaceChild because I was getting errors with replaceChild... should be the same.\n // Add first so that the stack doesn't get screwed up\n stack.addChild(config, index + 1);\n stack.removeChild(oldContentItem);\n stack.setActiveContentItem(stack.contentItems[index]);\n } else {\n stack.addChild(config);\n }\n if (focusElement == null && maintainFocusElement && isHTMLElement(maintainFocusElement)) {\n maintainFocusElement.focus();\n }\n }\n\n /**\n * Opens a component in an given stack.\n * If `replaceExisting` is true and there is a component found with the same `config.id`, it will replace that component with this one\n * @param stack The GoldenLayout stack to open the component in\n * @param config The component config definition to open\n * @param replaceExisting Whether it should replace the existing one matching component type and id, or open a new one\n */\n static openComponentInStack(stack, config) {\n var replaceExisting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var maintainFocusElement = document.activeElement; // attempt to retain focus after dom manipulation, which can break focus\n\n var searchConfig = {\n id: config.id\n };\n var oldContentItem = LayoutUtils.getContentItemInStack(stack, searchConfig);\n if (replaceExisting && oldContentItem && stack) {\n var index = stack === null || stack === void 0 ? void 0 : stack.contentItems.indexOf(oldContentItem);\n\n // Using remove/add here instead of replaceChild because I was getting errors with replaceChild... should be the same.\n // Add first so that the stack doesn't get screwed up\n stack.addChild(config, index + 1);\n stack.removeChild(oldContentItem);\n stack.setActiveContentItem(stack.contentItems[index]);\n } else {\n stack === null || stack === void 0 || stack.addChild(config);\n }\n if (maintainFocusElement && isHTMLElement(maintainFocusElement)) {\n maintainFocusElement.focus();\n }\n }\n\n /**\n * Close the specified component and remove it from the stack it's currently in\n * @param root The GoldenLayout root to search and close the component in\n * @param config The GoldenLayout component config definition to close, eg. { component: 'IrisGridPanel', id: 'table-t' }\n */\n static closeComponent(root, config, closeOptions) {\n var stack = LayoutUtils.getStackForRoot(root, config, false, false, false);\n if (!stack) {\n log.warn('Cannot find stack for component, ignoring close', config);\n return;\n }\n\n // Find the tab with the specified config and remove it\n // Same component was used to get the stack above, so getContentItemInStack shouldn't return null\n var oldContentItem = LayoutUtils.getContentItemInStack(stack, config);\n var maintainFocusElement = document.activeElement; // attempt to retain focus after dom manipulation, which can break focus\n if (oldContentItem) {\n if (isComponent(oldContentItem)) {\n oldContentItem.container.close(closeOptions);\n } else {\n stack.removeChild(oldContentItem);\n }\n }\n // if focused element is still in dom restore focus, note it could have been in the removed panel so check first\n if (maintainFocusElement && document.contains(maintainFocusElement) && isHTMLElement(maintainFocusElement)) {\n maintainFocusElement.focus();\n }\n }\n static renameComponent(root, config, newTitle) {\n var stack = LayoutUtils.getStackForRoot(root, config, false);\n if (!stack) {\n log.error('Could not find stack for config', config);\n return;\n }\n // Find the tab with the specified config and rename it\n var contentItem = LayoutUtils.getContentItemInStack(stack, config);\n if (contentItem) {\n contentItem.setTitle(newTitle);\n }\n }\n\n /**\n * Create a component clone based on the given config\n * @param root The GoldenLayout root to clone the component in\n * @param config The config to clone\n * @returns Clone config\n */\n static cloneComponent(root, config) {\n var stack = LayoutUtils.getStackForRoot(root, config, false);\n if (!stack) {\n log.error('Could not find stack for config', config);\n return null;\n }\n var {\n props = {}\n } = config;\n var panelState = LayoutUtils.getPanelComponentState(config);\n var cloneConfig = {\n type: 'react-component',\n component: config.component,\n props: _objectSpread(_objectSpread({}, props), {}, {\n panelState\n }),\n title: \"\".concat(config.title, \" Copy\"),\n id: nanoid()\n };\n LayoutUtils.openComponentInStack(stack, cloneConfig);\n return cloneConfig;\n }\n\n /**\n * Get panel component state for the given config\n * @param config Panel config\n * @returns Panel state\n */\n static getPanelComponentState(config) {\n if (isComponentConfig(config)) {\n var _config$componentStat;\n return (_config$componentStat = config.componentState) === null || _config$componentStat === void 0 ? void 0 : _config$componentStat.panelState;\n }\n if (isReactComponentConfig(config)) {\n var _config$props;\n return (_config$props = config.props) === null || _config$props === void 0 ? void 0 : _config$props.panelState;\n }\n return null;\n }\n static makeDefaultLayout() {\n return {\n dimensions: {\n headerHeight: GoldenLayoutThemeExport.tabHeight,\n borderWidth: GoldenLayoutThemeExport.dragBorderWidth,\n borderGrabWidth: 10\n },\n settings: {\n showPopoutIcon: false,\n showCloseIcon: false,\n constrainDragToContainer: false\n }\n };\n }\n\n /**\n * Gets a containers root node\n * @param container The Golden Layout container to get the root for\n */\n static getRootFromContainer(container) {\n return container.layoutManager.root;\n }\n\n /**\n * Gets the config for the panel component given a glContainer\n * @param container The Golden Layout container to get the config for\n */\n static getComponentConfigFromContainer(container) {\n if (container) {\n if (container.tab != null && container.tab.contentItem != null) {\n return container.tab.contentItem.config;\n }\n\n // If the container hasn't populated the tab yet, just get the config directly from the container\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore private api usage\n // eslint-disable-next-line no-underscore-dangle\n return container._config;\n }\n return null;\n }\n static getTitleFromContainer(container) {\n if (container != null && container.tab != null && container.tab.contentItem != null) {\n return container.tab.contentItem.config.title;\n }\n return null;\n }\n static getTitleFromTab(tab) {\n if (tab != null && tab.contentItem != null) {\n return tab.contentItem.config.title;\n }\n return null;\n }\n\n /**\n * Retrieve the panel ID for the provided golden layout container\n * @param glContainer The container to get the panel ID for\n * @returns Panel ID\n */\n static getIdFromContainer(glContainer) {\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config) {\n return config.id;\n }\n return null;\n }\n\n /**\n * Retrieve the ID of the panel provided\n * @param panel The panel to get the ID for\n * @returns Panel ID\n */\n static getIdFromPanel(panel) {\n var {\n glContainer\n } = panel.props;\n return LayoutUtils.getIdFromContainer(glContainer);\n }\n\n /**\n * Get component name from the panel instance\n * @param panel Panel to get component name for\n * @returns Component name or null if unable to retrieve name\n */\n static getComponentNameFromPanel(panel) {\n var {\n glContainer\n } = panel.props;\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config && isReactComponentConfig(config)) {\n var _config$component;\n return (_config$component = config.component) !== null && _config$component !== void 0 ? _config$component : null;\n }\n return null;\n }\n\n /**\n * Get component name for wrapped and un-wrapped components\n * @param component Component to get name for\n * @returns Component name\n * @throws If displayName for the component is not defined\n */\n static getComponentName(component) {\n var _component$WrappedCom, _component$WrappedCom2;\n var name = (_component$WrappedCom = (_component$WrappedCom2 = component.WrappedComponent) === null || _component$WrappedCom2 === void 0 ? void 0 : _component$WrappedCom2.displayName) !== null && _component$WrappedCom !== void 0 ? _component$WrappedCom : component.displayName;\n if (name == null) {\n throw new Error(\"Component displayName not defined \".concat(component));\n }\n return name;\n }\n\n /**\n * Put focus on the first \"input\" element (input, button, select, textarea) within an element\n * If element is null or input element not found, does nothing\n * @param element The element to put focus in.\n * @param selector The first element matching this selector will be focused.\n * @returns The element that was focused, null if not focused\n */\n static focusElement(element) {\n var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : LayoutUtils.DEFAULT_FOCUS_SELECTOR;\n if (element == null) {\n return null;\n }\n var focusElement = element.querySelector(selector);\n if (focusElement == null) {\n return null;\n }\n if (isHTMLElement(focusElement)) {\n focusElement.focus();\n }\n return focusElement;\n }\n\n /**\n * Get a promise that initializes when layout is initialized\n * @param layout The layout to await initialization on\n * @returns Promise that resolves when layout is initialized\n */\n static onInitialized(layout) {\n return new Promise(resolve => {\n if (layout.isInitialised) {\n resolve();\n return;\n }\n var onInit = () => {\n layout.off('initialised', onInit);\n resolve();\n };\n layout.on('initialised', onInit);\n });\n }\n}\n_defineProperty(LayoutUtils, \"DEFAULT_FOCUS_SELECTOR\", 'input, select, textarea, button');\nexport default LayoutUtils;\n//# sourceMappingURL=LayoutUtils.js.map","import React from 'react';\nimport \"./PanelPlaceholder.css\";\nimport LayoutUtils from \"./layout/LayoutUtils.js\";\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Displays a placeholder for unregistered panel types.\n */\nvar PanelPlaceholder = /*#__PURE__*/React.forwardRef((props, ref) => {\n var component = LayoutUtils.getComponentNameFromPanel({\n props\n });\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: \"panel-placeholder\",\n children: /*#__PURE__*/_jsxs(\"div\", {\n children: [\"Component \\\"\", component, \"\\\" is not registered.\"]\n })\n });\n});\nPanelPlaceholder.displayName = 'PanelPlaceholder';\nexport default PanelPlaceholder;\n//# sourceMappingURL=PanelPlaceholder.js.map","import { makeEventFunctions } from '@deephaven/golden-layout';\n/**\n * Events emitted by panels and to control panels\n */\nexport var PanelEvent = Object.freeze({\n // Panel has received focus\n FOCUS: 'PanelEvent.FOCUS',\n // Panel has been mounted\n MOUNT: 'PanelEvent.MOUNT',\n // Panel has been unmounted\n UNMOUNT: 'PanelEvent.UNMOUNT',\n // The title of the panel has changed\n TITLE_CHANGED: 'PanelEvent.TITLE_CHANGED',\n // Panel was re-opened from a dehydrated state\n REOPEN: 'PanelEvent.REOPEN',\n // Reopen last closed panel\n REOPEN_LAST: 'PanelEvent.REOPEN_LAST',\n // Panel was deleted\n DELETE: 'PanelEvent.DELETE',\n // Panel was cloned/copied\n CLONED: 'PanelEvent.CLONED',\n // Panel was closed\n CLOSED: 'PanelEvent.CLOSED',\n // Event to open a new panel\n // Plugins will need to register to open based on this event.\n // Multiple plugins could open panels for the same event if desired.\n OPEN: 'PanelEvent.OPEN',\n // Event to close a panel that's currently open\n CLOSE: 'PanelEvent.CLOSE',\n // Panel is being dragged\n DRAGGING: 'PanelEvent.DRAGGING',\n // Panel is dropped\n DROPPED: 'PanelEvent.DROPPED'\n});\nexport var {\n listen: listenForPanelOpen,\n emit: emitPanelOpen,\n useListener: usePanelOpenListener\n} = makeEventFunctions(PanelEvent.OPEN);\n\n// TODO (#2147): Add the rest of the event functions here. Need to create the correct types for all of them.\n\nexport default PanelEvent;\n//# sourceMappingURL=PanelEvent.js.map","import { makeEventFunctions } from '@deephaven/golden-layout';\nvar NavigationEvent = Object.freeze({\n CYCLE_TO_NEXT_STACK: 'NavigationEvent.CYCLE_TO_NEXT_STACK',\n CYCLE_TO_PREVIOUS_STACK: 'NavigationEvent.CYCLE_TO_PREVIOUS_STACK',\n CYCLE_TO_NEXT_TAB: 'NavigationEvent.CYCLE_TO_NEXT_TAB',\n CYCLE_TO_PREVIOUS_TAB: 'NavigationEvent.CYCLE_TO_PREVIOUS_TAB'\n});\nexport var {\n listen: listenForCycleToNextStack,\n emit: emitCycleToNextStack,\n useListener: useCycleToNextStackListener\n} = makeEventFunctions(NavigationEvent.CYCLE_TO_NEXT_STACK);\nexport var {\n listen: listenForCycleToPreviousStack,\n emit: emitCycleToPreviousStack,\n useListener: useCycleToPreviousStackListener\n} = makeEventFunctions(NavigationEvent.CYCLE_TO_PREVIOUS_STACK);\nexport var {\n listen: listenForCycleToNextTab,\n emit: emitCycleToNextTab,\n useListener: useCycleToNextTabListener\n} = makeEventFunctions(NavigationEvent.CYCLE_TO_NEXT_TAB);\nexport var {\n listen: listenForCycleToPreviousTab,\n emit: emitCycleToPreviousTab,\n useListener: useCycleToPreviousTabListener\n} = makeEventFunctions(NavigationEvent.CYCLE_TO_PREVIOUS_TAB);\nexport default NavigationEvent;\n//# sourceMappingURL=NavigationEvent.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport Log from '@deephaven/log';\nimport PanelEvent from \"./PanelEvent.js\";\nimport { listenForCycleToNextStack, listenForCycleToPreviousStack, listenForCycleToNextTab, listenForCycleToPreviousTab } from \"./NavigationEvent.js\";\nimport LayoutUtils, { isReactComponentConfig } from \"./layout/LayoutUtils.js\";\nimport { isWrappedComponent } from \"./DashboardPlugin.js\";\nvar log = Log.module('PanelManager');\nvar CycleDirection = /*#__PURE__*/function (CycleDirection) {\n CycleDirection[CycleDirection[\"Next\"] = 0] = \"Next\";\n CycleDirection[CycleDirection[\"Previous\"] = 1] = \"Previous\";\n return CycleDirection;\n}(CycleDirection || {});\n/**\n * Class to keep track of which panels are open, have been closed, and also events to close panels.\n */\nclass PanelManager {\n /**\n * @param layout The GoldenLayout object to attach to\n * @param hydrateComponent Function to hydrate a panel from a dehydrated state\n * @param dehydrateComponent Function to dehydrate a panel\n * @param openedMap Map of opened panels\n * @param closed Array of closed panels in a dehydrated state\n * @param onPanelsUpdated Triggered when the panels are updated\n */\n constructor(layout) {\n var hydrateComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (name, props) => props;\n var dehydrateComponent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (name, config) => config;\n var openedMap = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new Map();\n var closed = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var onPanelsUpdated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : () => undefined;\n _defineProperty(this, \"layout\", void 0);\n _defineProperty(this, \"hydrateComponent\", void 0);\n _defineProperty(this, \"dehydrateComponent\", void 0);\n _defineProperty(this, \"onPanelsUpdated\", void 0);\n _defineProperty(this, \"closed\", void 0);\n _defineProperty(this, \"openedMap\", void 0);\n _defineProperty(this, \"navigationEventListenerRemovers\", void 0);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleMount = this.handleMount.bind(this);\n // Panel can be unmounted on error but still keep the tab until it's closed\n // Use PanelEvent.MOUNT/UNMOUNT to track open (active) panels\n // and PanelEvent.CLOSED for cleanup (delete links, add panel to closed panels list, etc)\n this.handleUnmount = this.handleUnmount.bind(this);\n this.handleReopen = this.handleReopen.bind(this);\n this.handleReopenLast = this.handleReopenLast.bind(this);\n this.handleCycleToNextStack = this.handleCycleToNextStack.bind(this);\n this.handleCycleToPreviousStack = this.handleCycleToPreviousStack.bind(this);\n this.handleCycleToNextTab = this.handleCycleToNextTab.bind(this);\n this.handleCycleToPreviousTab = this.handleCycleToPreviousTab.bind(this);\n this.handleDeleted = this.handleDeleted.bind(this);\n this.handleClosed = this.handleClosed.bind(this);\n this.handleControlClose = this.handleControlClose.bind(this);\n this.layout = layout;\n this.hydrateComponent = hydrateComponent;\n this.dehydrateComponent = dehydrateComponent;\n this.onPanelsUpdated = onPanelsUpdated;\n\n // Store the opened and closed panels\n this.openedMap = new Map(openedMap);\n\n // Closed panels are stored in their dehydrated state\n this.closed = [...closed];\n\n // Store the navigation event listener removers\n this.navigationEventListenerRemovers = [];\n this.startListening();\n }\n startListening() {\n var {\n eventHub\n } = this.layout;\n eventHub.on(PanelEvent.FOCUS, this.handleFocus);\n eventHub.on(PanelEvent.MOUNT, this.handleMount);\n eventHub.on(PanelEvent.UNMOUNT, this.handleUnmount);\n eventHub.on(PanelEvent.REOPEN, this.handleReopen);\n eventHub.on(PanelEvent.REOPEN_LAST, this.handleReopenLast);\n eventHub.on(PanelEvent.DELETE, this.handleDeleted);\n eventHub.on(PanelEvent.CLOSED, this.handleClosed);\n eventHub.on(PanelEvent.CLOSE, this.handleControlClose);\n // PanelEvent.OPEN should be listened to by plugins to open a panel\n\n this.navigationEventListenerRemovers.push(listenForCycleToNextStack(eventHub, this.handleCycleToNextStack));\n this.navigationEventListenerRemovers.push(listenForCycleToPreviousStack(eventHub, this.handleCycleToPreviousStack));\n this.navigationEventListenerRemovers.push(listenForCycleToNextTab(eventHub, this.handleCycleToNextTab));\n this.navigationEventListenerRemovers.push(listenForCycleToPreviousTab(eventHub, this.handleCycleToPreviousTab));\n }\n stopListening() {\n var {\n eventHub\n } = this.layout;\n eventHub.off(PanelEvent.FOCUS, this.handleFocus);\n eventHub.off(PanelEvent.MOUNT, this.handleMount);\n eventHub.off(PanelEvent.UNMOUNT, this.handleUnmount);\n eventHub.off(PanelEvent.REOPEN, this.handleReopen);\n eventHub.off(PanelEvent.REOPEN_LAST, this.handleReopenLast);\n eventHub.off(PanelEvent.DELETE, this.handleDeleted);\n eventHub.off(PanelEvent.CLOSED, this.handleClosed);\n eventHub.off(PanelEvent.CLOSE, this.handleControlClose);\n this.navigationEventListenerRemovers.forEach(remover => remover());\n this.navigationEventListenerRemovers = [];\n }\n getClosedPanelConfigsOfType(typeString) {\n return this.closed.filter(panel => panel.component === typeString);\n }\n getOpenedPanels() {\n return Array.from(this.openedMap.values());\n }\n getOpenedPanelConfigs() {\n return this.getOpenedPanels().map(panel => {\n var {\n glContainer\n } = panel.props;\n return LayoutUtils.getComponentConfigFromContainer(glContainer);\n });\n }\n getOpenedPanelConfigsOfType(typeString) {\n return this.getOpenedPanelConfigs().filter(config => config != null && isReactComponentConfig(config) && config.component === typeString);\n }\n getOpenedPanelById(panelId) {\n return this.openedMap.get(panelId);\n }\n getContainerByPanelId(panelId) {\n var _ref;\n var stack = LayoutUtils.getStackForConfig(this.layout.root, {\n id: panelId\n });\n return (_ref = stack && LayoutUtils.getContentItemInStack(stack, {\n id: panelId\n })) !== null && _ref !== void 0 ? _ref : null;\n }\n getLastUsedPanel(matcher) {\n var opened = this.getOpenedPanels();\n for (var i = opened.length - 1; i >= 0; i -= 1) {\n var panel = opened[i];\n if (matcher == null || matcher(panel)) {\n return panel;\n }\n }\n return undefined;\n }\n getLastUsedPanelOfType(type) {\n return this.getLastUsedPanelOfTypes([type]);\n }\n getLastUsedPanelOfTypes(types) {\n return this.getLastUsedPanel(panel => types.some(type => isWrappedComponent(type) && panel instanceof type.WrappedComponent || !isWrappedComponent(type) && panel instanceof type));\n }\n updatePanel(panel) {\n var panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error('updatePanel Panel did not have an ID', panel);\n return;\n }\n log.debug2(\"Updating panel ID \".concat(panelId, \" in open panels map\"));\n // Delete the entry before it's set to maintain correct ordering in the open panels map.\n // The last updated (focused) panel should be the last inserted.\n // Deleting the entry from the map directly instead of calling this.removePanel to skip the checks.\n this.openedMap.delete(panelId);\n this.openedMap.set(panelId, panel);\n }\n removePanel(panel) {\n var panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error('removePanel Panel did not have an ID', panel);\n return;\n }\n if (!this.openedMap.has(panelId)) {\n log.error(\"Missing panel ID \".concat(panelId, \" in open panels map\"));\n return;\n }\n if (this.openedMap.get(panelId) !== panel) {\n // We mount a new panel before un-mounting the existing one\n // when replacing existing panels in openComponent/openComponentInStack.\n // Skip map delete if the panelId entry already refers to the new panel.\n log.debug(\"Panel argument doesn't match the open panels map entry for \".concat(panelId, \", removePanel ignored\"));\n return;\n }\n log.debug2(\"Removing panel ID \".concat(panelId, \" from open panels map\"));\n this.openedMap.delete(panelId);\n }\n removeClosedPanelConfig(panelConfig) {\n var index = this.closed.findIndex(closedConfig => closedConfig === panelConfig || closedConfig.id != null && panelConfig.id != null && closedConfig.id === panelConfig.id);\n if (index >= 0) {\n this.closed.splice(index, 1);\n }\n }\n handleFocus(panel) {\n log.debug2('Focus: ', panel);\n this.updatePanel(panel);\n }\n handleMount(panel) {\n log.debug2('Mount: ', panel);\n this.updatePanel(panel);\n this.sendUpdate();\n }\n handleUnmount(panel) {\n log.debug2('Unmount: ', panel);\n this.removePanel(panel);\n this.sendUpdate();\n }\n cycleStack(direction) {\n var allStacks = LayoutUtils.getAllStackContainers(this.layout);\n if (allStacks.length <= 1) {\n return;\n }\n var focusedIndex = LayoutUtils.getFocusedStackIndex(allStacks);\n\n // If no stack is focused, activate the first stack's content item\n if (focusedIndex === -1) {\n var _targetStack = allStacks[0];\n var _activeContentIndex = _targetStack.config.activeItemIndex;\n var _activeContentItem = _activeContentIndex != null ? _targetStack.contentItems[_activeContentIndex] : _targetStack.contentItems[0];\n _targetStack.setActiveContentItem(_activeContentItem, true);\n return;\n }\n var targetIndex = direction === CycleDirection.Next ? (focusedIndex + 1) % allStacks.length : (focusedIndex - 1 + allStacks.length) % allStacks.length;\n var targetStack = allStacks[targetIndex];\n var activeContentIndex = targetStack.config.activeItemIndex;\n var activeContentItem = activeContentIndex != null ? targetStack.contentItems[activeContentIndex] : targetStack.contentItems[0];\n targetStack.setActiveContentItem(activeContentItem, true);\n }\n handleCycleToNextStack() {\n this.cycleStack(CycleDirection.Next);\n }\n handleCycleToPreviousStack() {\n this.cycleStack(CycleDirection.Previous);\n }\n cycleTab(direction) {\n var _focusedStack$config$;\n var focusedStack = LayoutUtils.getFocusedStack(this.layout);\n if (focusedStack === undefined) {\n return;\n }\n var {\n contentItems\n } = focusedStack;\n if (contentItems.length <= 1) {\n return;\n }\n var activeItemIndex = (_focusedStack$config$ = focusedStack.config.activeItemIndex) !== null && _focusedStack$config$ !== void 0 ? _focusedStack$config$ : 0;\n var targetIndex = direction === CycleDirection.Next ? (activeItemIndex + 1) % contentItems.length : (activeItemIndex - 1 + contentItems.length) % contentItems.length;\n var targetContentItem = contentItems[targetIndex];\n focusedStack.setActiveContentItem(targetContentItem, true);\n }\n handleCycleToNextTab() {\n this.cycleTab(CycleDirection.Next);\n }\n handleCycleToPreviousTab() {\n this.cycleTab(CycleDirection.Previous);\n }\n\n /**\n *\n * @param panelConfig The config to hydrate and load\n * @param replaceConfig The config to place\n */\n handleReopen(panelConfig, replaceConfig) {\n log.debug2('Reopen:', panelConfig, replaceConfig);\n this.removeClosedPanelConfig(panelConfig);\n // Don't need to send an update yet, it will get sent when component is mounted\n\n // Rehydrate the panel before adding it back\n var {\n component\n } = panelConfig;\n var {\n props\n } = panelConfig;\n props = this.hydrateComponent(component, props);\n var config = _objectSpread(_objectSpread({}, panelConfig), {}, {\n props\n });\n var {\n root\n } = this.layout;\n var stack = panelConfig.parentStackId === undefined ? undefined : LayoutUtils.getStackById(root, panelConfig.parentStackId);\n LayoutUtils.openComponent({\n root,\n config,\n replaceConfig,\n stack: stack !== null && stack !== void 0 ? stack : undefined\n });\n }\n\n /**\n *\n * @param glContainer Only reopen panels that were closed from the stack of this container, if defined\n */\n handleReopenLast(glContainer) {\n var _LayoutUtils$getStack;\n if (this.closed.length === 0) return;\n if (glContainer === undefined) {\n this.handleReopen(this.closed[this.closed.length - 1]);\n return;\n }\n var stackId = (_LayoutUtils$getStack = LayoutUtils.getStackForConfig(this.layout.root, glContainer.getConfig())) === null || _LayoutUtils$getStack === void 0 ? void 0 : _LayoutUtils$getStack.config.id;\n for (var i = this.closed.length - 1; i >= 0; i -= 1) {\n var panelConfig = this.closed[i];\n if (panelConfig.parentStackId === stackId) {\n this.handleReopen(panelConfig);\n return;\n }\n }\n }\n handleDeleted(panelConfig) {\n log.debug2('Deleted:', panelConfig);\n this.removeClosedPanelConfig(panelConfig);\n this.sendUpdate();\n }\n handleClosed(panelId, glContainer) {\n // Panel component should be already unmounted at this point\n // so the emitted event sends the container object instead of the panel.\n log.debug2('Closed: ', panelId);\n this.addClosedPanel(glContainer);\n this.sendUpdate();\n }\n handleControlClose(id) {\n var config = {\n id\n };\n var {\n root\n } = this.layout;\n LayoutUtils.closeComponent(root, config);\n }\n addClosedPanel(glContainer) {\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config && isReactComponentConfig(config)) {\n var dehydratedConfig = this.dehydrateComponent(config.component, config);\n if (dehydratedConfig != null) {\n var _glContainer$tab;\n // Not using LayoutUtils.getStackForConfig here because the panel may be removed from the root config already.\n // The container config should be the same as it was when it was unmounted, so this avoids the issue of the config not existing on root.\n dehydratedConfig.parentStackId = (_glContainer$tab = glContainer.tab) === null || _glContainer$tab === void 0 ? void 0 : _glContainer$tab.header.parent.config.id;\n this.closed.push(dehydratedConfig);\n }\n }\n }\n sendUpdate() {\n var {\n closed,\n openedMap\n } = this;\n this.onPanelsUpdated({\n closed: [...closed],\n openedMap: new Map(openedMap)\n });\n }\n}\n_defineProperty(PanelManager, \"MAX_CLOSED_PANEL_COUNT\", 100);\nexport default PanelManager;\n//# sourceMappingURL=PanelManager.js.map","import React, { Component } from 'react';\nimport { LoadingOverlay } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport PanelEvent from \"./PanelEvent.js\";\nimport LayoutUtils from \"./layout/LayoutUtils.js\";\nimport \"./PanelErrorBoundary.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('PanelErrorBoundary');\n/**\n * Panel wrapper implementing Error Boundary and emitting Closed event.\n * Closed event has to be emitted from the wrapper instead of the panel itself\n * because the panel can get unmounted on errors\n * and we want to differentiate between unmount on error vs panel being intentionally closed.\n */\nclass PanelErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n componentDidCatch(error) {\n this.setState({\n error\n });\n }\n componentWillUnmount() {\n var {\n glContainer,\n glEventHub\n } = this.props;\n var panelId = LayoutUtils.getIdFromContainer(glContainer);\n log.debug('componentWillUnmount', panelId);\n glEventHub.emit(PanelEvent.CLOSED, panelId, glContainer);\n }\n render() {\n var {\n children\n } = this.props;\n var {\n error\n } = this.state;\n if (error != null) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"panel-error-boundary\",\n children: /*#__PURE__*/_jsx(LoadingOverlay, {\n \"data-testid\": \"panel-error-boundary-loading-error\",\n errorMessage: \"\".concat(error),\n isLoading: false,\n isLoaded: false\n })\n });\n }\n\n // We need to check for undefined children because React will throw an error if we return undefined from a render method\n // Note this behaviour was changed in React 18: https://github.com/reactwg/react-18/discussions/75\n return children !== null && children !== void 0 ? children : null;\n }\n}\nexport default PanelErrorBoundary;\n//# sourceMappingURL=PanelErrorBoundary.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport { canHaveRef } from '@deephaven/components';\n\n/**\n * Dehydrate an existing panel to allow it to be serialized/saved.\n * Just takes what's in the panels `metadata` in the props and `panelState` in\n * the component state, assumes it's serializable, and saves it.\n * @param config The panel config to dehydrate\n * @returns The dehydrated PanelConfig\n */\nexport function dehydrate(config) {\n var {\n props,\n componentState\n } = config;\n var {\n metadata\n } = props;\n var {\n panelState = null\n } = props;\n if (componentState) {\n ({\n panelState\n } = componentState);\n }\n var newProps = {};\n if (metadata != null) {\n newProps.metadata = metadata;\n }\n if (panelState != null) {\n newProps.panelState = panelState;\n }\n return _objectSpread(_objectSpread({}, config), {}, {\n componentState: null,\n props: newProps,\n type: 'react-component'\n });\n}\n\n/**\n * Default hydration function. Just applies the dashboard ID. When used with dehydrate above,\n * the panels state will be stored in `panelState` prop.\n * @param props Panel props to hydrate\n * @param localDashboardId The local dashboard ID to hydrate the panel with\n * @returns The hydrated panel props\n */\nexport function hydrate(props, localDashboardId) {\n return _objectSpread(_objectSpread({}, props), {}, {\n localDashboardId\n });\n}\nexport default {\n dehydrate,\n hydrate\n};\n//# sourceMappingURL=DashboardUtils.js.map","import React from 'react';\nexport var LayoutManagerContext = /*#__PURE__*/React.createContext(undefined);\nLayoutManagerContext.displayName = 'LayoutManagerContext';\nexport default LayoutManagerContext;\n//# sourceMappingURL=LayoutManagerContext.js.map","import PropTypes from 'prop-types';\nvar Container = PropTypes.shape({\n on: PropTypes.func,\n off: PropTypes.func,\n isHidden: PropTypes.bool,\n tab: PropTypes.shape({\n header: PropTypes.shape({\n tabs: PropTypes.arrayOf(PropTypes.shape({\n contentItem: PropTypes.shape({})\n }))\n })\n }),\n title: PropTypes.string,\n setTitle: PropTypes.func,\n close: PropTypes.func\n});\nvar EventHub = PropTypes.shape({\n on: PropTypes.func,\n off: PropTypes.func,\n emit: PropTypes.func\n});\nvar Layout = PropTypes.shape({\n registerComponent: PropTypes.func,\n root: PropTypes.shape({\n addChild: PropTypes.func\n }),\n on: PropTypes.func,\n off: PropTypes.func,\n eventHub: EventHub\n});\nvar GLPropTypes = Object.freeze({\n Container,\n EventHub,\n Layout\n});\nexport default GLPropTypes;\n//# sourceMappingURL=GLPropTypes.js.map","import { useEffect } from 'react';\n/**\n * Listen for a specific event on an EventEmitter\n * @param eventEmitter EventEmitter to listen to\n * @param eventName Name of the event to listen to\n * @param callback Callback to call when the event is triggered\n */\nexport function useListener(eventEmitter, eventName,\n// eslint-disable-next-line @typescript-eslint/ban-types\ncallback) {\n useEffect(function initEventEmitter() {\n eventEmitter.on(eventName, callback);\n return () => {\n eventEmitter.off(eventName, callback);\n };\n }, [eventEmitter, eventName, callback]);\n}\nexport default useListener;\n//# sourceMappingURL=useListener.js.map","// eslint-disable-next-line import/prefer-default-export\nexport var SET_DASHBOARD_DATA = 'SET_DASHBOARD_DATA';\n//# sourceMappingURL=actionTypes.js.map","/**\n * Store information about input filters set in a dashboard\n */\nimport { replaceByIdReducer } from '@deephaven/redux';\nimport { SET_DASHBOARD_DATA } from \"../actionTypes.js\";\nexport default replaceByIdReducer(SET_DASHBOARD_DATA, {}, false);\n//# sourceMappingURL=dashboardData.js.map","import dashboardData from \"./dashboardData.js\";\nexport default {\n dashboardData\n};\n//# sourceMappingURL=index.js.map","import { useDispatch, useSelector, useStore } from 'react-redux';\nvar EMPTY_MAP = new Map();\nvar EMPTY_OBJECT = Object.freeze({});\nvar EMPTY_ARRAY = Object.freeze([]);\n// https://react-redux.js.org/using-react-redux/usage-with-typescript#define-typed-hooks\n// Defined in @deephaven/dashboard, as that's the most common package with React and @deephaven/redux as dependencies\n// We could have another package specifically for this, but it's not really necessary.\nexport var useAppDispatch = useDispatch;\nexport var useAppSelector = useSelector;\nexport var useAppStore = useStore;\n\n/**\n * Retrieve the data for all dashboards\n * @param store The redux store\n * @returns Property mapping dashboard ID to data for that dashboard\n */\nexport var getAllDashboardsData = store => store.dashboardData;\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns The data object for the dashboard with the specified ID\n */\nexport var getDashboardData = (store, dashboardId) => {\n var _getAllDashboardsData;\n return (_getAllDashboardsData = getAllDashboardsData(store)[dashboardId]) !== null && _getAllDashboardsData !== void 0 ? _getAllDashboardsData : EMPTY_OBJECT;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns The ClosedPanel array of panels that were previously closed/dehydrated\n */\nexport var getClosedPanelsForDashboard = (store, dashboardId) => {\n var _getDashboardData$clo;\n return (_getDashboardData$clo = getDashboardData(store, dashboardId).closed) !== null && _getDashboardData$clo !== void 0 ? _getDashboardData$clo : EMPTY_ARRAY;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns The map of panel IDs to components of all currently open components\n */\nexport var getOpenedPanelMapForDashboard = (store, dashboardId) => {\n var _getDashboardData$ope;\n return (_getDashboardData$ope = getDashboardData(store, dashboardId).openedMap) !== null && _getDashboardData$ope !== void 0 ? _getDashboardData$ope : EMPTY_MAP;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns The map of plugin IDs to data for all plugins on the dashboard\n */\nexport var getPluginDataMapForDashboard = (store, dashboardId) => {\n var _getDashboardData$plu;\n return (_getDashboardData$plu = getDashboardData(store, dashboardId).pluginDataMap) !== null && _getDashboardData$plu !== void 0 ? _getDashboardData$plu : EMPTY_OBJECT;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @param pluginId The plugin ID to get data for\n * @returns The plugin data\n */\nexport var getPluginDataForDashboard = (store, dashboardId, pluginId) => getPluginDataMapForDashboard(store, dashboardId)[pluginId];\n//# sourceMappingURL=selectors.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { SET_DASHBOARD_DATA } from \"./actionTypes.js\";\nimport { getDashboardData, getPluginDataMapForDashboard } from \"./selectors.js\";\n/**\n * Action to replace the dashboard data for a dashboard\n * @param id The ID of the dashboard to set the data on\n * @param data Data for the dashboard\n * @returns The action to get dispatched\n */\nexport var setDashboardData = (id, data) => ({\n type: SET_DASHBOARD_DATA,\n id,\n payload: data\n});\n\n/**\n * Action to update the dashboard data. Will combine the update with any existing dashboard data.\n * @param id The id of the dashboard to update the data on\n * @param updateData The data to combine with the existing dashboard data\n * @returns\n */\nexport var updateDashboardData = (id, data) => (dispatch, getState) => dispatch(setDashboardData(id, _objectSpread(_objectSpread({}, getDashboardData(getState(), id)), data)));\n\n/**\n * Action to set the dashboard plugin data.\n * Will replace any existing plugin data for the plugin in the dashboard with the data provided.\n * @param id The id of the dashboard to set the data on\n * @param pluginId The id of the plugin to set the data on\n * @param data The data to replace the existing plugin data with\n * @returns Thunk action to dispatch\n */\nexport var setDashboardPluginData = (id, pluginId, data) => (dispatch, getState) => dispatch(setDashboardData(id, _objectSpread(_objectSpread({}, getDashboardData(getState(), id)), {}, {\n pluginDataMap: _objectSpread(_objectSpread({}, getPluginDataMapForDashboard(getState(), id)), {}, {\n [pluginId]: data\n })\n})));\n//# sourceMappingURL=actions.js.map","import { reducerRegistry } from '@deephaven/redux';\nimport reducers from \"./reducers/index.js\";\nObject.entries(reducers).map(_ref => {\n var [name, reducer] = _ref;\n return reducerRegistry.register(name, reducer);\n});\nexport { reducers };\nexport * from \"./actions.js\";\nexport * from \"./actionTypes.js\";\nexport * from \"./hooks.js\";\nexport * from \"./selectors.js\";\n//# sourceMappingURL=index.js.map","import React from 'react';\nimport { Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\nexport function DashboardPanelWrapper(_ref) {\n var {\n children\n } = _ref;\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/_jsx(_Fragment, {\n children: children\n });\n}\nexport default DashboardPanelWrapper;\n//# sourceMappingURL=DashboardPanelWrapper.js.map","import { createContext, useContext } from 'react';\n\n/**\n * Context to provide the golden layout panel ID.\n */\nexport var PanelIdContext = /*#__PURE__*/createContext(null);\nPanelIdContext.displayName = 'PanelIdContext';\n\n/**\n * Gets the current panel ID from the nearest context.\n * @returns The current panel ID from the context, or null if not set or there is no context.\n */\nexport function usePanelId() {\n return useContext(PanelIdContext);\n}\n//# sourceMappingURL=usePanelId.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Log from '@deephaven/log';\nimport { usePrevious, useThrottledCallback } from '@deephaven/react-hooks';\nimport { ErrorBoundary } from '@deephaven/components';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PanelManager from \"./PanelManager.js\";\nimport PanelErrorBoundary from \"./PanelErrorBoundary.js\";\nimport LayoutUtils, { isReactComponentConfig } from \"./layout/LayoutUtils.js\";\nimport { canHaveRef, dehydrate as dehydrateDefault, hydrate as hydrateDefault } from \"./DashboardUtils.js\";\nimport PanelEvent from \"./PanelEvent.js\";\nimport { useListener } from \"./layout/index.js\";\nimport { getDashboardData, updateDashboardData } from \"./redux/index.js\";\nimport DashboardPanelWrapper from \"./DashboardPanelWrapper.js\";\nimport { PanelIdContext } from \"./usePanelId.js\";\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('DashboardLayout');\nvar EMPTY_OBJECT = Object.freeze({});\nvar DEFAULT_LAYOUT_CONFIG = [];\nvar DEFAULT_CALLBACK = () => undefined;\nvar STATE_CHANGE_THROTTLE_MS = 1000;\n\n// If a component isn't registered, just pass through the props so they are saved if a plugin is loaded later\nvar FALLBACK_CALLBACK = props => props;\n/**\n * DashboardLayout component. Handles hydrating, dehydrating components, listening for dragging panels.\n */\nexport function DashboardLayout(_ref) {\n var _useSelector, _closed;\n var {\n id,\n children,\n emptyDashboard = /*#__PURE__*/_jsx(\"div\", {\n children: \"Dashboard is empty.\"\n }),\n layout,\n layoutConfig = DEFAULT_LAYOUT_CONFIG,\n onLayoutChange = DEFAULT_CALLBACK,\n onLayoutInitialized = DEFAULT_CALLBACK,\n hydrate = hydrateDefault,\n dehydrate = dehydrateDefault,\n panelWrapper = DashboardPanelWrapper\n } = _ref;\n var dispatch = useDispatch();\n var data = (_useSelector = useSelector(state => getDashboardData(state, id))) !== null && _useSelector !== void 0 ? _useSelector : EMPTY_OBJECT;\n var [isDashboardEmpty, setIsDashboardEmpty] = useState(false);\n var [isItemDragging, setIsItemDragging] = useState(false);\n var [lastConfig, setLastConfig] = useState();\n var [initialClosedPanels] = useState((_closed = data === null || data === void 0 ? void 0 : data.closed) !== null && _closed !== void 0 ? _closed : []);\n var [layoutChildren, setLayoutChildren] = useState(layout.getReactChildren());\n var hydrateMap = useMemo(() => new Map(), []);\n var dehydrateMap = useMemo(() => new Map(), []);\n var registerComponent = useCallback(function (name, componentType) {\n var _componentType$displa;\n var componentHydrate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : hydrate;\n var componentDehydrate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : dehydrate;\n log.debug2('registerComponent', name, componentType, componentHydrate, componentDehydrate);\n function wrappedComponent(props, ref) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var CType = componentType;\n var PanelWrapperType = panelWrapper;\n\n /**\n * The ref is used to detect changes to class component state so we\n * can track changes to panelState. We should opt for more explicit\n * state changes in the future and in functional components.\n */\n var hasRef = canHaveRef(CType);\n\n // Props supplied by GoldenLayout\n var {\n glContainer,\n glEventHub\n } = props;\n var panelId = LayoutUtils.getIdFromContainer(glContainer);\n return /*#__PURE__*/_jsx(PanelErrorBoundary, {\n glContainer: glContainer,\n glEventHub: glEventHub,\n children: /*#__PURE__*/_jsx(PanelIdContext.Provider, {\n value: panelId,\n children: /*#__PURE__*/_jsx(PanelWrapperType, _objectSpread(_objectSpread({}, props), {}, {\n children: hasRef ?\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n _jsx(CType, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref\n })) :\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n _jsx(CType, _objectSpread({}, props))\n }))\n })\n });\n }\n wrappedComponent.displayName = \"DashboardWrapper(\".concat((_componentType$displa = componentType.displayName) !== null && _componentType$displa !== void 0 ? _componentType$displa : name, \")\");\n var cleanup = layout.registerComponent(name, /*#__PURE__*/React.forwardRef(wrappedComponent));\n hydrateMap.set(name, componentHydrate);\n dehydrateMap.set(name, componentDehydrate);\n return cleanup;\n }, [hydrate, dehydrate, hydrateMap, dehydrateMap, layout, panelWrapper]);\n var hydrateComponent = useCallback((name, props) => {\n var _hydrateMap$get;\n return ((_hydrateMap$get = hydrateMap.get(name)) !== null && _hydrateMap$get !== void 0 ? _hydrateMap$get : FALLBACK_CALLBACK)(props, id);\n }, [hydrateMap, id]);\n var dehydrateComponent = useCallback((name, config) => {\n var _dehydrateMap$get;\n return ((_dehydrateMap$get = dehydrateMap.get(name)) !== null && _dehydrateMap$get !== void 0 ? _dehydrateMap$get : FALLBACK_CALLBACK)(config, id);\n }, [dehydrateMap, id]);\n var panelManager = useMemo(() => new PanelManager(layout, hydrateComponent, dehydrateComponent, new Map(), initialClosedPanels, _ref2 => {\n var {\n closed,\n openedMap\n } = _ref2;\n dispatch(updateDashboardData(id, {\n closed,\n openedMap\n }));\n }), [dehydrateComponent, dispatch, hydrateComponent, id, initialClosedPanels, layout]);\n\n // Throttle the calls so that we don't flood comparing these layouts\n var throttledProcessDehydratedLayoutConfig = useThrottledCallback(dehydratedLayoutConfig => {\n var hasChanged = lastConfig == null || !LayoutUtils.isEqual(lastConfig, dehydratedLayoutConfig);\n log.debug('handleLayoutStateChanged', hasChanged, dehydratedLayoutConfig);\n if (hasChanged) {\n setIsDashboardEmpty(layout.root.contentItems.length === 0);\n setLastConfig(dehydratedLayoutConfig);\n onLayoutChange(dehydratedLayoutConfig);\n setLayoutChildren(layout.getReactChildren());\n }\n }, STATE_CHANGE_THROTTLE_MS, {\n flushOnUnmount: true\n });\n useEffect(() => () => throttledProcessDehydratedLayoutConfig.flush(), [throttledProcessDehydratedLayoutConfig]);\n var handleLayoutStateChanged = useCallback(() => {\n // we don't want to emit stateChanges that happen during item drags or else\n // we risk the last saved state being one without that panel in the layout entirely\n if (isItemDragging) return;\n var glConfig = layout.toConfig();\n var contentConfig = glConfig.content;\n var dehydratedLayoutConfig = LayoutUtils.dehydrateLayoutConfig(contentConfig, dehydrateComponent);\n throttledProcessDehydratedLayoutConfig(dehydratedLayoutConfig);\n }, [dehydrateComponent, isItemDragging, layout, throttledProcessDehydratedLayoutConfig]);\n var handleLayoutItemPickedUp = useCallback(component => {\n var componentId = LayoutUtils.getIdFromContainer(component);\n layout.eventHub.emit(PanelEvent.DRAGGING, componentId);\n setIsItemDragging(true);\n }, [layout.eventHub]);\n var handleLayoutItemDropped = useCallback(component => {\n var componentId = LayoutUtils.getIdFromContainer(component);\n layout.eventHub.emit(PanelEvent.DROPPED, componentId);\n setIsItemDragging(false);\n }, [layout.eventHub]);\n var handleComponentCreated = useCallback(item => {\n log.debug2('handleComponentCreated', item);\n if (item == null || item.config == null || !isReactComponentConfig(item.config) || item.config.component == null || item.element == null) {\n return;\n }\n var cssComponent = item.config.component.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var cssClass = \"\".concat(cssComponent, \"-component\");\n item.element.addClass(cssClass);\n }, []);\n var handleReactChildrenChange = useCallback(() => {\n setLayoutChildren(layout.getReactChildren());\n }, [layout]);\n useListener(layout, 'stateChanged', handleLayoutStateChanged);\n useListener(layout, 'itemPickedUp', handleLayoutItemPickedUp);\n useListener(layout, 'itemDropped', handleLayoutItemDropped);\n useListener(layout, 'componentCreated', handleComponentCreated);\n useListener(layout.eventHub, PanelEvent.TITLE_CHANGED, handleLayoutStateChanged);\n useListener(layout, 'reactChildrenChanged', handleReactChildrenChange);\n var previousLayoutConfig = usePrevious(layoutConfig);\n useEffect(function loadNewConfig() {\n if (previousLayoutConfig !== layoutConfig && layoutConfig !== lastConfig) {\n log.debug('Setting new layout content...');\n var content = LayoutUtils.hydrateLayoutConfig(layoutConfig, hydrateComponent);\n // Remove the old layout before add the new one\n while (layout.root.contentItems.length > 0) {\n layout.root.contentItems[0].remove();\n }\n\n // Add the new content. It is usally just one item from the root\n for (var i = 0; i < content.length; i += 1) {\n layout.root.addChild(content[i]);\n }\n setIsDashboardEmpty(layout.root.contentItems.length === 0);\n }\n }, [hydrateComponent, layout, layoutConfig, lastConfig, panelManager, previousLayoutConfig]);\n\n // This should be the last hook called in this component\n // Ensures it runs after any other effects on mount\n // Fire only once after the layout is mounted\n // This should ensure DashboardPlugins have been mounted\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => onLayoutInitialized(), []);\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [isDashboardEmpty && emptyDashboard, layoutChildren, React.Children.map(children, child => child != null ?\n /*#__PURE__*/\n // Have fallback be an empty array so that we don't show the error message over entire app\n // Look into using toast message in the future\n _jsx(ErrorBoundary, {\n fallback: [],\n children: /*#__PURE__*/React.cloneElement(child, {\n id,\n layout,\n panelManager,\n registerComponent\n })\n }) : null)]\n });\n}\nexport default DashboardLayout;\n//# sourceMappingURL=DashboardLayout.js.map","import { createContext, useContext } from 'react';\nexport var DashboardIdContext = /*#__PURE__*/createContext(null);\nDashboardIdContext.displayName = 'DashboardIdContext';\nexport function useDashboardId() {\n var dashboardId = useContext(DashboardIdContext);\n if (dashboardId == null) {\n throw new Error('useDashboardId must be used within a DashboardIdContext provider');\n }\n return dashboardId;\n}\n//# sourceMappingURL=useDashboardId.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Adapted from https://www.npmjs.com/package/its-fine to support React 17.\n * The main change is using `nanoid` instead of `useId` which doesn't exist in React 17.\n * Also tweaked a bit of the code to match our style and removed the parts we don't use.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { nanoid } from 'nanoid';\nimport * as React from 'react';\n\n/**\n * Represents a react-internal Fiber node.\n */\n\n/**\n * Represents a {@link Fiber} node selector for traversal.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Traverses up or down a {@link Fiber}, return `true` to stop and select a node.\n */\nfunction traverseFiber(/** Input {@link Fiber} to traverse. */\nfiber, /** Whether to ascend and walk up the tree. Will walk down if `false`. */\nascending, /** A {@link Fiber} node selector, returns the first match when `true` is passed. */\nselector) {\n if (!fiber) {\n return;\n }\n if (selector(fiber) === true) {\n return fiber;\n }\n var child = ascending ? fiber.return : fiber.child;\n while (child) {\n var match = traverseFiber(child, ascending, selector);\n if (match) {\n return match;\n }\n child = ascending ? null : child.sibling;\n }\n}\n\n// In development, React will warn about using contexts between renderers.\n// Hide the warning because its-fine fixes this issue\n// https://github.com/facebook/react/pull/12779\nfunction wrapContext(context) {\n try {\n return Object.defineProperties(context, {\n _currentRenderer: {\n get() {\n return null;\n },\n set() {\n /* no-op */\n }\n },\n _currentRenderer2: {\n get() {\n return null;\n },\n set() {\n /* no-op */\n }\n }\n });\n } catch (_) {\n return context;\n }\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nvar FiberContext = /* @__PURE__ */wrapContext(\n// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n/* @__PURE__ */\nReact.createContext(null));\nFiberContext.displayName = 'FiberContext';\n\n/**\n * A react-internal {@link Fiber} provider. This component binds React children to the React Fiber tree. Call its-fine hooks within this.\n */\nexport class FiberProvider extends React.Component {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"_reactInternals\", void 0);\n }\n render() {\n var {\n children\n } = this.props;\n return (\n /*#__PURE__*/\n // eslint-disable-next-line no-underscore-dangle\n _jsx(FiberContext.Provider, {\n value: this._reactInternals,\n children: children\n })\n );\n }\n}\n\n/**\n * Returns the current react-internal {@link Fiber}. This is an implementation detail of [react-reconciler](https://github.com/facebook/react/tree/main/packages/react-reconciler).\n */\nexport function useFiber() {\n var root = React.useContext(FiberContext);\n if (root === null) {\n throw new Error('useFiber must be called within a <FiberProvider />!');\n }\n var [id] = React.useState(() => nanoid());\n var actualFiber = React.useMemo(() => {\n // eslint-disable-next-line no-restricted-syntax\n for (var maybeFiber of [root, root === null || root === void 0 ? void 0 : root.alternate].filter(r => r != null)) {\n var fiber = traverseFiber(maybeFiber, false, node => {\n var state = node.memoizedState;\n while (state != null) {\n if (state.memoizedState === id) {\n return true;\n }\n state = state.next;\n }\n });\n if (fiber) {\n return fiber;\n }\n }\n }, [root, id]);\n return actualFiber;\n}\n//# sourceMappingURL=useFiber.js.map","// eslint-disable-next-line import/prefer-default-export\nexport var DEFAULT_DASHBOARD_ID = 'default';\n//# sourceMappingURL=DashboardConstants.js.map","import { makeEventFunctions } from '@deephaven/golden-layout';\nexport var CREATE_DASHBOARD = 'CREATE_DASHBOARD';\nexport var CLOSE_DASHBOARD = 'CLOSE_DASHBOARD';\nexport var {\n listen: listenForCreateDashboard,\n emit: emitCreateDashboard,\n useListener: useCreateDashboardListener\n} = makeEventFunctions(CREATE_DASHBOARD);\nexport var {\n listen: listenForCloseDashboard,\n emit: emitCloseDashboard,\n useListener: useCloseDashboardListener\n} = makeEventFunctions(CLOSE_DASHBOARD);\n//# sourceMappingURL=DashboardEvents.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { ContextActions } from '@deephaven/components';\nimport { getWorkspace, setWorkspace as setWorkspaceAction } from '@deephaven/redux';\nimport { connect } from 'react-redux';\nimport { LayoutUtils } from \"./layout/index.js\";\nimport { PanelEvent } from \"./PanelEvent.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nclass PanelContextMenu extends PureComponent {\n constructor(props) {\n super(props);\n this.handleCloseTab = this.handleCloseTab.bind(this);\n this.handleCloseTabsRight = this.handleCloseTabsRight.bind(this);\n this.handleCloseTabsAll = this.handleCloseTabsAll.bind(this);\n this.handleReopenLast = this.handleReopenLast.bind(this);\n }\n getAllTabs() {\n var _glContainer$tab$head, _glContainer$tab;\n // return a clone of the tabs array, or returns empty array if null\n var {\n glContainer\n } = this.props;\n return [...((_glContainer$tab$head = glContainer === null || glContainer === void 0 || (_glContainer$tab = glContainer.tab) === null || _glContainer$tab === void 0 || (_glContainer$tab = _glContainer$tab.header) === null || _glContainer$tab === void 0 ? void 0 : _glContainer$tab.tabs) !== null && _glContainer$tab$head !== void 0 ? _glContainer$tab$head : [])];\n }\n handleCloseTab() {\n var {\n glContainer\n } = this.props;\n glContainer.close();\n }\n handleCloseTabsAll() {\n var tabs = this.getAllTabs();\n\n // No need to check if isClosable, golden-layout returns\n // false when attempting to close tabs that you can't\n tabs.forEach(tab => {\n var _container;\n return (_container = (tab === null || tab === void 0 ? void 0 : tab.contentItem).container) === null || _container === void 0 ? void 0 : _container.close();\n });\n }\n handleCloseTabsRight() {\n var {\n glContainer\n } = this.props;\n var tabs = this.getAllTabs();\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n var _tabs$i$contentItem, _glContainer$tab2, _container2, _tabs$i;\n if (((_tabs$i$contentItem = tabs[i].contentItem) === null || _tabs$i$contentItem === void 0 || (_tabs$i$contentItem = _tabs$i$contentItem.config) === null || _tabs$i$contentItem === void 0 ? void 0 : _tabs$i$contentItem.id) === ((_glContainer$tab2 = glContainer.tab) === null || _glContainer$tab2 === void 0 || (_glContainer$tab2 = _glContainer$tab2.contentItem) === null || _glContainer$tab2 === void 0 || (_glContainer$tab2 = _glContainer$tab2.config) === null || _glContainer$tab2 === void 0 ? void 0 : _glContainer$tab2.id)) {\n break; // end when we get back to current id\n }\n\n // eslint-disable-next-line no-unused-expressions\n (_container2 = ((_tabs$i = tabs[i]) === null || _tabs$i === void 0 ? void 0 : _tabs$i.contentItem).container) === null || _container2 === void 0 || _container2.close();\n }\n }\n handleReopenLast() {\n var {\n glContainer,\n glEventHub\n } = this.props;\n glEventHub.emit(PanelEvent.REOPEN_LAST, glContainer);\n }\n canCloseTabsRight() {\n var {\n glContainer\n } = this.props;\n var tabs = this.getAllTabs();\n var disabled = true;\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n var _tabs$i$contentItem2, _glContainer$tab3, _tabs$i2;\n if (((_tabs$i$contentItem2 = tabs[i].contentItem) === null || _tabs$i$contentItem2 === void 0 || (_tabs$i$contentItem2 = _tabs$i$contentItem2.config) === null || _tabs$i$contentItem2 === void 0 ? void 0 : _tabs$i$contentItem2.id) === ((_glContainer$tab3 = glContainer.tab) === null || _glContainer$tab3 === void 0 || (_glContainer$tab3 = _glContainer$tab3.contentItem) === null || _glContainer$tab3 === void 0 || (_glContainer$tab3 = _glContainer$tab3.config) === null || _glContainer$tab3 === void 0 ? void 0 : _glContainer$tab3.id)) {\n break; // end when we get back to current id\n }\n var closable = Boolean((_tabs$i2 = tabs[i]) === null || _tabs$i2 === void 0 || (_tabs$i2 = _tabs$i2.contentItem) === null || _tabs$i2 === void 0 || (_tabs$i2 = _tabs$i2.config) === null || _tabs$i2 === void 0 ? void 0 : _tabs$i2.isClosable);\n if (closable) {\n disabled = false;\n break; // end if we find a closeable tab\n }\n }\n return disabled;\n }\n canCloseAny() {\n var tabs = this.getAllTabs();\n var disabled = true;\n for (var i = tabs.length - 1; i > 0; i -= 1) {\n var _tabs$i3;\n var closable = Boolean((_tabs$i3 = tabs[i]) === null || _tabs$i3 === void 0 || (_tabs$i3 = _tabs$i3.contentItem) === null || _tabs$i3 === void 0 || (_tabs$i3 = _tabs$i3.config) === null || _tabs$i3 === void 0 ? void 0 : _tabs$i3.isClosable);\n if (closable) {\n disabled = false;\n break;\n }\n }\n return disabled;\n }\n canReopenLast() {\n var _LayoutUtils$getStack, _workspace$data$close;\n var {\n workspace,\n glContainer\n } = this.props;\n var stackId = (_LayoutUtils$getStack = LayoutUtils.getStackForConfig(glContainer.layoutManager.root, glContainer.getConfig())) === null || _LayoutUtils$getStack === void 0 ? void 0 : _LayoutUtils$getStack.config.id;\n return !((_workspace$data$close = workspace.data.closed) !== null && _workspace$data$close !== void 0 && _workspace$data$close.some(panel => panel.parentStackId === stackId));\n }\n render() {\n var _glContainer$tab4;\n var {\n additionalActions,\n glContainer\n } = this.props;\n var contextActions = [...additionalActions];\n contextActions.push(() => ({\n title: 'Re-open closed panel',\n group: ContextActions.groups.medium + 2004,\n action: this.handleReopenLast,\n disabled: this.canReopenLast()\n }));\n var closable = (_glContainer$tab4 = glContainer.tab) === null || _glContainer$tab4 === void 0 || (_glContainer$tab4 = _glContainer$tab4.contentItem) === null || _glContainer$tab4 === void 0 || (_glContainer$tab4 = _glContainer$tab4.config) === null || _glContainer$tab4 === void 0 ? void 0 : _glContainer$tab4.isClosable;\n contextActions.push({\n title: 'Close',\n order: 10,\n group: ContextActions.groups.low,\n action: this.handleCloseTab,\n disabled: closable === undefined || !closable\n });\n\n // pushed as function so the disable check happens on run\n contextActions.push(() => ({\n title: 'Close Tabs to Right',\n order: 20,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsRight,\n disabled: this.canCloseTabsRight()\n }));\n contextActions.push(() => ({\n title: 'Close All',\n order: 30,\n group: ContextActions.groups.low,\n action: this.handleCloseTabsAll,\n disabled: this.canCloseAny()\n }));\n return /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n });\n }\n}\n_defineProperty(PanelContextMenu, \"defaultProps\", {\n additionalActions: []\n});\nvar mapStateToProps = state => ({\n workspace: getWorkspace(state)\n});\nvar ConnectedPanelContextMenu = connect(mapStateToProps, {\n setWorkspace: setWorkspaceAction\n})(PanelContextMenu);\nexport default ConnectedPanelContextMenu;\n//# sourceMappingURL=PanelContextMenu.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Button, Popper } from '@deephaven/components';\nimport { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nexport default class RenameDialog extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"renameInputRef\", void 0);\n this.handleRenameDialogOpened = this.handleRenameDialogOpened.bind(this);\n this.handleRenameInputChange = this.handleRenameInputChange.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n this.renameInputRef = /*#__PURE__*/React.createRef();\n var {\n value\n } = props;\n this.state = {\n value,\n valueWasValidated: false\n };\n }\n componentDidUpdate(prevProps) {\n var {\n isShown: prevIsShown\n } = prevProps;\n var {\n isShown\n } = this.props;\n // Reset the state on dialog shown and not on the `value` prop change\n // so the input keeps the internal value while the dialog is open.\n // Useful in case the `value` prop update is triggered externally\n // i.e. by someone else renaming the same shared dashboard\n if (isShown && !prevIsShown) {\n this.resetState();\n }\n }\n resetState() {\n var {\n value\n } = this.props;\n this.setState({\n value,\n valueWasValidated: false\n });\n }\n handleRenameDialogOpened() {\n var _this$renameInputRef;\n (_this$renameInputRef = this.renameInputRef) === null || _this$renameInputRef === void 0 || (_this$renameInputRef = _this$renameInputRef.current) === null || _this$renameInputRef === void 0 || _this$renameInputRef.focus();\n }\n handleRenameInputChange(event) {\n this.setState({\n value: event.target.value\n });\n }\n handleRenameCancel() {\n var {\n onCancel\n } = this.props;\n onCancel();\n }\n handleRenameSubmit(event) {\n event.stopPropagation();\n event.preventDefault();\n var {\n value\n } = this.state;\n var newTitle = value === null || value === void 0 ? void 0 : value.trim();\n if (newTitle !== undefined && newTitle !== '') {\n var {\n onSubmit\n } = this.props;\n onSubmit(newTitle);\n } else {\n this.setState({\n value: newTitle,\n valueWasValidated: true\n });\n }\n }\n renderRenameDialog() {\n var {\n isShared,\n isOwner,\n itemType\n } = this.props;\n var {\n value,\n valueWasValidated\n } = this.state;\n return /*#__PURE__*/_jsxs(\"form\", {\n className: classNames('p-3', {\n 'was-validated': valueWasValidated\n }),\n onSubmit: this.handleRenameSubmit,\n noValidate: true,\n role: \"presentation\",\n onMouseDown: event => {\n // block events in the NewTabScreen ItemList\n event.stopPropagation();\n },\n onMouseUp: event => {\n event.stopPropagation();\n },\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsxs(\"label\", {\n htmlFor: \"rename-dialog-\".concat(itemType, \"-input\"),\n children: [\"Rename \", itemType]\n }), /*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: \"form-control\",\n id: \"rename-dialog-\".concat(itemType, \"-input\"),\n value: value !== null && value !== void 0 ? value : undefined,\n ref: this.renameInputRef,\n onChange: this.handleRenameInputChange,\n required: true\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"invalid-feedback\",\n children: [itemType, \" name cannot be empty\"]\n }), (isShared || !isOwner) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"pt-2\",\n children: [\"Renaming this \", itemType, \" will rename for all users.\"]\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"text-right\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n className: \"mr-2\",\n onClick: this.handleRenameCancel,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n type: \"submit\",\n children: \"Rename\"\n })]\n })]\n });\n }\n render() {\n var {\n isShown,\n onCancel\n } = this.props;\n return /*#__PURE__*/_jsx(Popper, {\n isShown: isShown,\n onEntered: this.handleRenameDialogOpened,\n onExited: onCancel,\n options: {\n placement: 'bottom'\n },\n interactive: true,\n closeOnBlur: true,\n children: this.renderRenameDialog()\n });\n }\n}\n_defineProperty(RenameDialog, \"defaultProps\", {\n isShared: false,\n isOwner: true,\n itemType: 'Item',\n value: ''\n});\n//# sourceMappingURL=RenameDialog.js.map","var TabEvent = Object.freeze({\n focus: 'TabEvent.focus',\n blur: 'TabEvent.blur'\n});\nexport default TabEvent;\n//# sourceMappingURL=TabEvent.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { ContextActions, createXComponent, LoadingOverlay, Tooltip } from '@deephaven/components';\nimport { assertNotNull, EMPTY_ARRAY } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport LayoutUtils from \"./layout/LayoutUtils.js\";\nimport PanelEvent from \"./PanelEvent.js\";\nimport PanelContextMenu from \"./PanelContextMenu.js\";\nimport RenameDialog from \"./RenameDialog.js\";\nimport TabEvent from \"./TabEvent.js\";\nimport \"./Panel.css\";\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('Panel');\n/**\n * Generic panel component that emits mount/unmount/focus events.\n * Also wires up some triggers for common events:\n * Focus, Resize, Show\n */\nclass BasePanel extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"ref\", void 0);\n _defineProperty(this, \"getAdditionalActions\", memoize((actions, isClonable, isRenamable) => {\n var additionalActions = [];\n if (isClonable) {\n additionalActions.push(this.getCloneAction());\n }\n if (isRenamable) {\n additionalActions.push(this.getRenameAction());\n }\n return [...additionalActions, ...actions];\n }));\n this.handleCopyPanel = this.handleCopyPanel.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleBeforeShow = this.handleBeforeShow.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRenameSubmit = this.handleRenameSubmit.bind(this);\n this.handleShowRenameDialog = this.handleShowRenameDialog.bind(this);\n this.handleTabClicked = this.handleTabClicked.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.ref = /*#__PURE__*/React.createRef();\n var {\n glContainer\n } = this.props;\n this.state = {\n title: LayoutUtils.getTitleFromContainer(glContainer),\n showRenameDialog: false,\n isWithinPanel: true\n };\n }\n componentDidMount() {\n var _this$ref$current;\n var {\n componentPanel,\n glContainer,\n glEventHub\n } = this.props;\n glContainer.on('resize', this.handleResize);\n glContainer.on('show', this.handleBeforeShow);\n glContainer.on('shown', this.handleShow);\n glContainer.on('hide', this.handleHide);\n glContainer.on('tab', this.handleTab);\n glContainer.on('tabClicked', this.handleTabClicked);\n glEventHub.on(TabEvent.focus, this.handleTabFocus);\n glEventHub.on(TabEvent.blur, this.handleTabBlur);\n glEventHub.emit(PanelEvent.MOUNT, componentPanel !== null && componentPanel !== void 0 ? componentPanel : this);\n this.setState({\n isWithinPanel: ((_this$ref$current = this.ref.current) === null || _this$ref$current === void 0 || (_this$ref$current = _this$ref$current.parentElement) === null || _this$ref$current === void 0 ? void 0 : _this$ref$current.closest('.dh-panel')) != null\n });\n }\n componentWillUnmount() {\n var {\n componentPanel,\n glContainer,\n glEventHub\n } = this.props;\n glContainer.off('resize', this.handleResize);\n glContainer.off('show', this.handleBeforeShow);\n glContainer.off('shown', this.handleShow);\n glContainer.off('hide', this.handleHide);\n glContainer.off('tab', this.handleTab);\n glContainer.off('tabClicked', this.handleTabClicked);\n glEventHub.off(TabEvent.focus, this.handleTabFocus);\n glEventHub.off(TabEvent.blur, this.handleTabBlur);\n glEventHub.emit(PanelEvent.UNMOUNT, componentPanel !== null && componentPanel !== void 0 ? componentPanel : this);\n }\n handleTab(tab) {\n if (tab != null) {\n this.setState({\n title: LayoutUtils.getTitleFromTab(tab)\n });\n }\n // render after move can happen before tab event, glTab could be null\n // when tab event is emitted, force a render update\n this.forceUpdate();\n var {\n onTab\n } = this.props;\n onTab === null || onTab === void 0 || onTab(tab);\n }\n handleTabClicked(e) {\n var {\n onTabClicked\n } = this.props;\n onTabClicked === null || onTabClicked === void 0 || onTabClicked(e);\n }\n handleFocus(event) {\n var {\n componentPanel,\n glEventHub\n } = this.props;\n glEventHub.emit(PanelEvent.FOCUS, componentPanel !== null && componentPanel !== void 0 ? componentPanel : this);\n var {\n onFocus\n } = this.props;\n onFocus === null || onFocus === void 0 || onFocus(event);\n }\n handleBlur(event) {\n var {\n onBlur\n } = this.props;\n onBlur === null || onBlur === void 0 || onBlur(event);\n }\n handleHide() {\n var {\n onHide\n } = this.props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n onHide === null || onHide === void 0 || onHide(...args);\n }\n handleResize() {\n var {\n onResize\n } = this.props;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n onResize === null || onResize === void 0 || onResize(...args);\n }\n handleBeforeShow() {\n var {\n onBeforeShow\n } = this.props;\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n onBeforeShow === null || onBeforeShow === void 0 || onBeforeShow(...args);\n }\n handleShow() {\n var {\n onShow\n } = this.props;\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n onShow === null || onShow === void 0 || onShow(...args);\n }\n handleTabBlur() {\n var {\n onTabBlur\n } = this.props;\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n onTabBlur === null || onTabBlur === void 0 || onTabBlur(...args);\n }\n handleTabFocus() {\n var {\n onTabFocus\n } = this.props;\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n onTabFocus === null || onTabFocus === void 0 || onTabFocus(...args);\n }\n handleRenameCancel() {\n this.setState({\n showRenameDialog: false\n });\n }\n handleShowRenameDialog() {\n this.setState({\n showRenameDialog: true\n });\n }\n handleRenameSubmit(newTitle) {\n var {\n glContainer\n } = this.props;\n this.setState({\n showRenameDialog: false,\n title: newTitle\n });\n var root = LayoutUtils.getRootFromContainer(glContainer);\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n assertNotNull(config);\n LayoutUtils.renameComponent(root, config, newTitle);\n }\n handleCopyPanel() {\n var {\n glContainer,\n glEventHub\n } = this.props;\n var root = LayoutUtils.getRootFromContainer(glContainer);\n var config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n var cloneConfig = LayoutUtils.cloneComponent(root, config);\n if (cloneConfig !== null) {\n glEventHub.emit(PanelEvent.CLONED, this, cloneConfig);\n }\n }\n getCloneAction() {\n return {\n title: 'Copy Panel',\n order: 10,\n group: ContextActions.groups.high,\n action: this.handleCopyPanel\n };\n }\n getRenameAction() {\n return {\n title: 'Rename',\n order: 10,\n group: ContextActions.groups.medium,\n action: this.handleShowRenameDialog\n };\n }\n render() {\n var {\n children,\n className,\n renderTabTooltip,\n glContainer,\n glEventHub,\n additionalActions = EMPTY_ARRAY,\n errorMessage,\n isLoaded = true,\n isLoading = false,\n isClonable = false,\n isRenamable = false\n } = this.props;\n var {\n tab: glTab\n } = glContainer;\n var {\n showRenameDialog,\n title,\n isWithinPanel\n } = this.state;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('h-100 w-100 dh-panel', className),\n onFocusCapture: this.handleFocus,\n onBlurCapture: this.handleBlur,\n ref: this.ref,\n children: [children, /*#__PURE__*/_jsx(LoadingOverlay, {\n \"data-testid\": \"base-panel-loading\",\n errorMessage: errorMessage,\n isLoaded: isLoaded,\n isLoading: isLoading\n }), !isWithinPanel && glTab != null && /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(PanelContextMenu, {\n glContainer: glContainer,\n glEventHub: glEventHub,\n additionalActions: this.getAdditionalActions(additionalActions, isClonable, isRenamable)\n }), isRenamable && /*#__PURE__*/_jsx(RenameDialog, {\n isShown: showRenameDialog,\n value: title,\n itemType: \"Panel\",\n onCancel: this.handleRenameCancel,\n onSubmit: this.handleRenameSubmit\n }), renderTabTooltip != null && /*#__PURE__*/_jsx(Tooltip, {\n interactive: true,\n options: {\n placement: 'bottom'\n },\n popperClassName: \"panel-tab-popper\",\n children: renderTabTooltip()\n })]\n }), glTab.element[0] // tab.element is jquery element, we want a dom element\n )]\n });\n }\n}\nvar XBasePanel = createXComponent(BasePanel);\nexport default XBasePanel;\n//# sourceMappingURL=BasePanel.js.map","import Log from '@deephaven/log';\nimport { useFiber } from \"./useFiber.js\";\nimport { usePanelId } from \"./usePanelId.js\";\nvar log = Log.module('useDhId');\nexport var DH_ID_PROP = '__dhId';\n\n/**\n * Gets the Deephaven ID of a component.\n * This is used to identify the component within a dashboard.\n * Usually this is just a panel ID, but in some contexts such as dh.ui,\n * it may be an ID for a component within a panel.\n *\n * Looks for a __dhId prop on the component, and if not found, looks in the PanelIdContext.\n * @param props The props of the component using this hook\n * @returns The Deephaven ID of the component or null if not found.\n */\nexport function useDhId() {\n var _ref, _useFiber;\n // pendingProps are the props passed to the fiber node\n var props = (_ref = (_useFiber = useFiber()) === null || _useFiber === void 0 ? void 0 : _useFiber.pendingProps) !== null && _ref !== void 0 ? _ref : {};\n var dhIdProp = props[DH_ID_PROP];\n var panelId = usePanelId();\n if (dhIdProp != null) {\n if (typeof dhIdProp !== 'string') {\n throw new Error(\"useDhId expected prop \".concat(DH_ID_PROP, \" to be a string, but got \").concat(typeof dhIdProp));\n }\n return dhIdProp;\n }\n if (panelId == null) {\n log.warn(\"useDhId must be used within a PanelIdContext provider if there is no \".concat(DH_ID_PROP, \" prop. Defaulting to null.\"));\n return null;\n }\n return panelId;\n}\n//# sourceMappingURL=useDhId.js.map","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhPandas, dhTable, vsGraph, vsPreview } from '@deephaven/icons';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction ObjectIcon(_ref) {\n var {\n type\n } = _ref;\n var dh = useApi();\n switch (type) {\n case dh.VariableType.TABLE:\n case dh.VariableType.TABLEMAP:\n case dh.VariableType.TREETABLE:\n case dh.VariableType.HIERARCHICALTABLE:\n case dh.VariableType.PARTITIONEDTABLE:\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhTable\n });\n case dh.VariableType.FIGURE:\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsGraph\n });\n case dh.VariableType.PANDAS:\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhPandas\n });\n default:\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsPreview\n });\n }\n}\nexport default ObjectIcon;\n//# sourceMappingURL=ObjectIcon.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport React, { useEffect, useState } from 'react';\nimport * as monaco from 'monaco-editor';\nimport { useTheme } from '@deephaven/components';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Code(_ref) {\n var {\n children,\n language\n } = _ref;\n var [colorizedHtml, setColorizedHtml] = useState(null);\n var {\n activeThemes\n } = useTheme();\n useEffect(() => {\n var isCanceled = false;\n function colorize() {\n return _colorize.apply(this, arguments);\n }\n function _colorize() {\n _colorize = _asyncToGenerator(function* () {\n if (children != null && activeThemes != null) {\n var result = yield monaco.editor.colorize(children.toString(), language, {});\n if (!isCanceled) {\n setColorizedHtml(result);\n }\n }\n });\n return _colorize.apply(this, arguments);\n }\n colorize();\n return () => {\n isCanceled = true;\n };\n }, [activeThemes, children, language]);\n return /*#__PURE__*/_jsx(\"div\", {\n // Add pointerEvents: 'none' has huge benefits on performance with Hit Test testing on large colorized elements.\n // You can still select the text event with this set\n style: {\n pointerEvents: 'none'\n }\n // eslint-disable-next-line react/no-danger\n ,\n dangerouslySetInnerHTML: colorizedHtml != null ? {\n __html: colorizedHtml\n } : undefined\n });\n}\nexport default Code;\n//# sourceMappingURL=Code.js.map","class ConsoleConstants {\n /**\n * Map of language keys to their display names\n */\n static get LANGUAGE_MAP() {\n return new Map([['python', 'Python'], ['groovy', 'Groovy'], ['scala', 'Scala']]);\n }\n}\nexport default ConsoleConstants;\n//# sourceMappingURL=ConsoleConstants.js.map","import ShellQuote from 'shell-quote';\nclass ConsoleUtils {\n static hasComment(arg) {\n return arg.comment !== undefined;\n }\n static hasPattern(arg) {\n return arg.pattern !== undefined;\n }\n static hasOp(arg) {\n return arg.op !== undefined;\n }\n\n /**\n * Given the provided text, parse out arguments using shell quoting rules.\n * @param str The text to parse.\n * @returns string[] of the arguments. Empty if no arguments found.\n */\n static parseArguments(str) {\n if (str == null || !(typeof str === 'string' || str instanceof String)) {\n return [];\n }\n\n // Parse can return an object, not just a string. See the `ParseEntry` type def for all types\n // We must map them all to strings. Filter out comments that will not be needed as well.\n return ShellQuote.parse(str).filter(arg => !this.hasComment(arg)).map(arg => {\n if (this.hasPattern(arg)) {\n return arg.pattern;\n }\n if (this.hasOp(arg)) {\n return arg.op;\n }\n return \"\".concat(arg);\n });\n }\n static formatTimestamp(date) {\n if (date == null || !(date instanceof Date)) {\n return null;\n }\n var hours = \"\".concat(date.getHours()).padStart(2, '0');\n var minutes = \"\".concat(date.getMinutes()).padStart(2, '0');\n var seconds = \"\".concat(date.getSeconds()).padStart(2, '0');\n var milliseconds = \"\".concat(date.getMilliseconds()).padStart(3, '0');\n return \"\".concat(hours, \":\").concat(minutes, \":\").concat(seconds, \".\").concat(milliseconds);\n }\n static isTableType(dh, type) {\n return type === dh.VariableType.TABLE || type === dh.VariableType.TREETABLE || type === dh.VariableType.HIERARCHICALTABLE || type === dh.VariableType.PARTITIONEDTABLE;\n }\n static isWidgetType(dh, type) {\n return type === dh.VariableType.FIGURE || type === dh.VariableType.OTHERWIDGET || type === dh.VariableType.PANDAS;\n }\n static isOpenableType(dh, type) {\n return ConsoleUtils.isTableType(dh, type) || ConsoleUtils.isWidgetType(dh, type);\n }\n static isFigureType(dh, type) {\n return type === dh.VariableType.FIGURE;\n }\n static isPandas(dh, type) {\n return type === dh.VariableType.PANDAS;\n }\n}\nexport default ConsoleUtils;\n//# sourceMappingURL=ConsoleUtils.js.map","/**\n * Console display for use in the Iris environment.\n */\nimport React from 'react';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction ConsoleHistoryItemResult(_ref) {\n var {\n children\n } = _ref;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-history-item-result\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"console-history-gutter\",\n children: \"-\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"console-history-content\",\n children: children\n })]\n });\n}\nexport default ConsoleHistoryItemResult;\n//# sourceMappingURL=ConsoleHistoryItemResult.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { vsClose } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport \"./ConsoleHistoryResultInProgress.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * A spinner shown when a command is taking a while.\n */\nclass ConsoleHistoryResultInProgress extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"timer\", void 0);\n _defineProperty(this, \"startTime\", void 0);\n this.updateElapsed = this.updateElapsed.bind(this);\n this.startTime = Date.now();\n this.state = {\n elapsed: 0\n };\n }\n componentDidMount() {\n this.timer = window.setInterval(this.updateElapsed, 1000);\n }\n componentWillUnmount() {\n if (this.timer != null) {\n clearInterval(this.timer);\n }\n this.timer = undefined;\n }\n updateElapsed() {\n this.setState({\n elapsed: Math.round((Date.now() - this.startTime) / 1000)\n });\n }\n render() {\n var {\n disabled,\n onCancelClick\n } = this.props;\n var {\n elapsed\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('console-history-result-in-progress', {\n disabled\n }),\n children: /*#__PURE__*/_jsxs(\"span\", {\n className: \"badge\",\n children: [/*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"ml-2\"\n }), \"Running... \", TimeUtils.formatElapsedTime(elapsed), \"\\xA0\", /*#__PURE__*/_jsx(Button, {\n className: \"console-history-result-in-progress-cancel\",\n kind: \"ghost\",\n icon: vsClose,\n tooltip: \"Cancel\",\n onClick: onCancelClick,\n disabled: disabled\n })]\n })\n });\n }\n}\n_defineProperty(ConsoleHistoryResultInProgress, \"defaultProps\", {\n disabled: false\n});\nexport default ConsoleHistoryResultInProgress;\n//# sourceMappingURL=ConsoleHistoryResultInProgress.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Error message that can be expanded\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleRight, vsTriangleDown } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nclass ConsoleHistoryResultErrorMessage extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"mouseX\", void 0);\n _defineProperty(this, \"mouseY\", void 0);\n _defineProperty(this, \"isClicking\", void 0);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleToggleError = this.handleToggleError.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n this.state = {\n isExpanded: false,\n isTriggerHovered: false\n };\n }\n handleKeyPress(event) {\n switch (event.key) {\n case 'Enter':\n case ' ':\n // Toggle the error open/closed\n this.handleToggleError();\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n handleMouseDown(event) {\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n this.isClicking = true;\n }\n handleMouseMove(event) {\n if (this.mouseX != null && this.mouseY != null) {\n if (Math.abs(event.clientX - this.mouseX) >= ConsoleHistoryResultErrorMessage.mouseDragThreshold || Math.abs(event.clientY - this.mouseY) >= ConsoleHistoryResultErrorMessage.mouseDragThreshold) {\n this.isClicking = false;\n }\n } else if (this.isClicking) {\n // Rare case - could happen if you mouse down, switch window focus, release the mouse, then come back, mouse down outside of the error, drag into the error, then release the mouse\n this.isClicking = false;\n }\n }\n handleMouseUp(event) {\n // We don't want to expand/collapse the error if user is holding shift or an alt key\n // They may be trying to adjust their selection\n if (this.isClicking && !event.shiftKey && !event.metaKey && !event.altKey) {\n this.handleToggleError();\n }\n this.mouseX = null;\n this.mouseY = null;\n this.isClicking = false;\n }\n handleToggleError() {\n this.setState(state => ({\n isExpanded: !state.isExpanded\n }));\n }\n handleMouseEnter() {\n this.setState({\n isTriggerHovered: true\n });\n }\n handleMouseLeave() {\n this.setState({\n isTriggerHovered: false\n });\n }\n render() {\n var {\n isExpanded,\n isTriggerHovered\n } = this.state;\n var {\n message: messageProp\n } = this.props;\n assertNotNull(messageProp);\n // Trim trailing whitespace to avoid unnecessary empty lines\n var message = messageProp.trimEnd();\n var lineBreakIndex = message.indexOf('\\n');\n var isMultiline = lineBreakIndex > -1;\n var topLineOfMessage = message;\n if (isMultiline) {\n topLineOfMessage = message.slice(0, lineBreakIndex);\n }\n var remainderOfMessage = message.slice(lineBreakIndex);\n var arrowBtnClasses = isTriggerHovered ? 'error-btn-link error-btn-link--active' : 'error-btn-link';\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('error-message', {\n expanded: isExpanded\n }),\n children: [isMultiline && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"error-gutter\",\n children: /*#__PURE__*/_jsx(\"button\", {\n type: \"button\",\n onClick: this.handleToggleError,\n className: arrowBtnClasses,\n tabIndex: -1,\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: isExpanded ? vsTriangleDown : vsTriangleRight,\n transform: \"left-3\"\n })\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"error-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"console-error-text-trigger\",\n role: \"button\",\n tabIndex: 0,\n onKeyPress: this.handleKeyPress,\n onMouseDown: this.handleMouseDown,\n onMouseMove: this.handleMouseMove,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onMouseUp: this.handleMouseUp,\n children: topLineOfMessage\n }), isExpanded ? remainderOfMessage : '']\n })]\n }), !isMultiline && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-content\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"console-error-text\",\n children: topLineOfMessage\n })\n })]\n }, \"error\");\n }\n}\n_defineProperty(ConsoleHistoryResultErrorMessage, \"defaultProps\", {\n message: ''\n});\n_defineProperty(ConsoleHistoryResultErrorMessage, \"mouseDragThreshold\", 5);\nexport default ConsoleHistoryResultErrorMessage;\n//# sourceMappingURL=ConsoleHistoryResultErrorMessage.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent } from 'react';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport { Code } from \"../common/index.js\";\nimport ConsoleHistoryItemResult from \"./ConsoleHistoryItemResult.js\";\nimport ConsoleHistoryResultInProgress from \"./ConsoleHistoryResultInProgress.js\";\nimport ConsoleHistoryResultErrorMessage from \"./ConsoleHistoryResultErrorMessage.js\";\nimport \"./ConsoleHistoryItem.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConsoleHistoryItem');\nclass ConsoleHistoryItem extends PureComponent {\n constructor(props) {\n super(props);\n this.handleCancelClick = this.handleCancelClick.bind(this);\n this.handleObjectClick = this.handleObjectClick.bind(this);\n }\n handleObjectClick(object) {\n log.debug('handleObjectClick', object);\n var {\n openObject\n } = this.props;\n openObject(object);\n }\n handleCancelClick() {\n var {\n item\n } = this.props;\n if (item != null && item.cancelResult) {\n log.debug(\"Cancelling command: \".concat(item.command));\n item.cancelResult();\n }\n }\n render() {\n var {\n disabled,\n item,\n language,\n iconForType\n } = this.props;\n var {\n disabledObjects,\n result\n } = item;\n var hasCommand = item.command != null && item.command !== '';\n var commandElement = null;\n if (hasCommand) {\n commandElement = /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-history-item-command\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"console-history-gutter\",\n children: \">\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"console-history-content\",\n children: /*#__PURE__*/_jsx(Code, {\n language: language,\n children: item.command\n })\n })]\n });\n }\n var resultElements = [];\n var hasButtons = false;\n if (result) {\n var {\n error,\n message,\n changes\n } = result;\n if (changes) {\n var {\n created,\n updated\n } = changes;\n // TODO: #1573 filter for supported types or change button kind\n // based on if type is supported. Possibly a warn state for widgets\n // that the UI doesn't have anything registered to support.\n [...created, ...updated].forEach(object => {\n hasButtons = true;\n var {\n title\n } = object;\n var key = \"\".concat(title);\n var btnDisabled = disabled === undefined || disabled || (disabledObjects !== null && disabledObjects !== void 0 ? disabledObjects : []).indexOf(key) >= 0;\n var element = /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: () => this.handleObjectClick(object),\n className: \"btn-console-object\",\n disabled: btnDisabled,\n icon: iconForType(object.type),\n children: title\n }, key);\n resultElements.push(element);\n });\n }\n\n // If the error has an associated command, we'll actually get a separate ERROR item printed out, so only print an error if there isn't an associated command\n if (error != null && !hasCommand) {\n var _message;\n var errorMessage = \"\".concat((_message = error.message) !== null && _message !== void 0 ? _message : error);\n if (!errorMessage) {\n errorMessage = error;\n }\n var element = /*#__PURE__*/_jsx(ConsoleHistoryResultErrorMessage, {\n message: errorMessage\n }, \"result-error\");\n resultElements.push(element);\n }\n if (message !== undefined && message !== '') {\n var _element = /*#__PURE__*/_jsx(\"div\", {\n className: \"log-message\",\n children: message\n }, \"log-message\");\n resultElements.push(_element);\n }\n } else {\n hasButtons = true;\n var _element2 = /*#__PURE__*/_jsx(ConsoleHistoryResultInProgress, {\n onCancelClick: this.handleCancelClick,\n disabled: disabled\n }, \"in_progress\");\n resultElements.push(_element2);\n }\n var resultElement = null;\n if (resultElements.length > 0) {\n resultElement = /*#__PURE__*/_jsx(ConsoleHistoryItemResult, {\n children: resultElements\n });\n }\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('console-command-result', {\n 'console-result-buttons': hasButtons\n }),\n children: [commandElement, resultElement]\n });\n }\n}\n_defineProperty(ConsoleHistoryItem, \"defaultProps\", {\n disabled: false\n});\nexport default ConsoleHistoryItem;\n//# sourceMappingURL=ConsoleHistoryItem.js.map","/**\n * Console display for use in the Iris environment.\n */\nimport React from 'react';\nimport ConsoleHistoryItem from \"./ConsoleHistoryItem.js\";\nimport \"./ConsoleHistory.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction itemKey(i, item) {\n return \"\".concat(i, \".\").concat(item.command, \".\").concat(item.result && item.result.message, \".\").concat(item.result && item.result.error);\n}\n\n/**\n * Display the console history.\n */\nvar ConsoleHistory = /*#__PURE__*/React.forwardRef(function ConsoleHistory(props, ref) {\n var {\n disabled = false,\n items,\n language,\n openObject,\n supportsType,\n iconForType\n } = props;\n var historyElements = [];\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var historyElement = /*#__PURE__*/_jsx(ConsoleHistoryItem, {\n disabled: disabled,\n item: item,\n openObject: openObject,\n language: language,\n supportsType: supportsType,\n iconForType: iconForType\n }, itemKey(i, item));\n historyElements.push(historyElement);\n }\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: \"container-fluid console-history\",\n children: historyElements\n });\n});\nexport default ConsoleHistory;\n//# sourceMappingURL=ConsoleHistory.js.map","import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\nvar CONSOLE = {\n name: 'Console',\n CLEAR: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.CLEAR',\n name: 'Clear',\n shortcut: [MODIFIER.CTRL, KEY.L],\n macShortcut: [MODIFIER.CTRL, KEY.C]\n }),\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'CONSOLE.FOCUS_HISTORY',\n name: 'Focus History',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H] // cmd+H is a system level shortcut on Mac, so use something else\n })\n};\nvar COMMAND_HISTORY = {\n name: 'Command History',\n FOCUS_HISTORY: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.FOCUS_HISTORY',\n name: 'Focus History Search',\n shortcut: [MODIFIER.CTRL, KEY.H],\n macShortcut: [MODIFIER.CTRL, MODIFIER.OPTION, KEY.H]\n }),\n SEND_TO_CONSOLE: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_CONSOLE',\n name: 'Send to Console',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER]\n }),\n SEND_TO_NOTEBOOK: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.SEND_TO_NOTEBOOK',\n name: 'Send to Notebook',\n shortcut: [MODIFIER.CTRL, KEY.ENTER],\n macShortcut: [MODIFIER.CMD, KEY.ENTER]\n }),\n RUN: ShortcutRegistry.createAndAdd({\n id: 'COMMAND_HISTORY.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R]\n })\n};\nvar NOTEBOOK = {\n name: 'Notebook',\n RUN: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN',\n name: 'Run',\n shortcut: [MODIFIER.ALT, KEY.R],\n macShortcut: [MODIFIER.OPTION, KEY.R]\n }),\n RUN_SELECTED: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.RUN_SELECTED',\n name: 'Run Selected',\n shortcut: [MODIFIER.ALT, MODIFIER.SHIFT, KEY.R],\n macShortcut: [MODIFIER.OPTION, MODIFIER.SHIFT, KEY.R]\n }),\n FIND: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.FIND',\n name: 'Find',\n shortcut: [MODIFIER.CTRL, KEY.F],\n macShortcut: [MODIFIER.CMD, KEY.F],\n isEditable: false\n }),\n MINIMAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.MINIMAP',\n name: 'Show Minimap',\n shortcut: [MODIFIER.ALT, KEY.M],\n macShortcut: [MODIFIER.OPTION, KEY.M]\n }),\n WORDWRAP: ShortcutRegistry.createAndAdd({\n id: 'NOTEBOOK.WORDWRAP',\n name: 'Word Wrap',\n shortcut: [MODIFIER.ALT, KEY.Z],\n macShortcut: [MODIFIER.OPTION, KEY.Z]\n })\n};\nvar SHORTCUTS = {\n CONSOLE,\n COMMAND_HISTORY,\n NOTEBOOK\n};\nexport default SHORTCUTS;\n//# sourceMappingURL=ConsoleShortcuts.js.map","export default Object.freeze({\n FATAL: 'FATAL',\n STDERR: 'STDERR',\n ERROR: 'ERROR',\n WARN: 'WARN',\n STDOUT: 'STDOUT',\n INFO: 'INFO',\n DEBUG: 'DEBUG',\n TRACE: 'TRACE'\n});\n//# sourceMappingURL=LogLevel.js.map","var id = 'python';\nvar conf = {\n comments: {\n lineComment: '#',\n blockComment: [\"'''\", \"'''\"]\n },\n brackets: [['{', '}'], ['[', ']'], ['(', ')']],\n autoClosingPairs: [{\n open: '{',\n close: '}'\n }, {\n open: '[',\n close: ']'\n }, {\n open: '(',\n close: ')'\n }, {\n open: '\"',\n close: '\"',\n notIn: ['string']\n }, {\n open: \"'\",\n close: \"'\",\n notIn: ['string', 'comment']\n }],\n surroundingPairs: [{\n open: '{',\n close: '}'\n }, {\n open: '[',\n close: ']'\n }, {\n open: '(',\n close: ')'\n }, {\n open: '\"',\n close: '\"'\n }, {\n open: \"'\",\n close: \"'\"\n }],\n onEnterRules: [{\n beforeText: /^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\s*$/,\n action: {\n indentAction: 1\n } // see monaco.languages.IndentAction.Indent\n }],\n folding: {\n offSide: true,\n markers: {\n start: /^\\s*#region\\b/,\n end: /^\\s*#endregion\\b/\n }\n }\n};\nvar language = {\n // Set defaultToken to invalid to see what you do not tokenize yet\n // defaultToken: 'invalid',\n\n keywords: ['and', 'del', 'from', 'not', 'while', 'as', 'elif', 'global', 'or', 'with', 'assert', 'else', 'if', 'pass', 'yield', 'break', 'except', 'import', 'print', 'exec', 'in', 'raise', 'continue', 'finally', 'is', 'return', 'for', 'try', ':', '=', 'isinstance', '__debug__'],\n storage: ['class', 'def', 'async', 'lambda'],\n operators: ['+', '-', '*', '**', '/', '//', '%', '<<', '>>', '&', '|', '^', '~', '<', '>', '<=', '>=', '==', '!=', '<>', '+=', '-=', '*=', '/', '//=', '%=', '&=', '|=', '^=', '>>=', '<<=', '**='],\n brackets: [{\n open: '{',\n close: '}',\n token: 'delimiter.curly'\n }, {\n open: '[',\n close: ']',\n token: 'delimiter.square'\n }, {\n open: '(',\n close: ')',\n token: 'delimiter.parenthesis'\n }],\n // operator symbols\n symbols: /[=><!~&|+\\-*/^%]+/,\n delimiters: /[;=.@:,`]/,\n // strings\n escapes: /\\\\(?:[abfnrtv\\\\\"'\\n\\r]|x[0-9A-Fa-f]{2}|[0-7]{3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|N\\{\\w+\\})/,\n rawpre: /(?:[rR]|ur|Ur|uR|UR|br|Br|bR|BR)/,\n strpre: /(?:[buBU])/,\n // The main tokenizer for our languages\n tokenizer: {\n root: [\n // strings: need to check first due to the prefix\n [/@strpre?(\"\"\"|''')/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@mstring.$1'\n }], [/@strpre?\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/@strpre?'([^'\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/@strpre?([\"])/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@sstring.$1',\n nextEmbedded: 'deephavenDb'\n }], [/@strpre?([\"'])/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@string.$1'\n }], [/@rawpre(\"\"\"|''')/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@mrawstring.$1'\n }], [/@rawpre\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/@rawpre'([^'\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/@rawpre([\"'])/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@rawstring.$1'\n }],\n // identifiers and keywords\n [/__[\\w$]*/, 'predefined'], [/[a-z_$][\\w$]*/, {\n cases: {\n '@keywords': 'keyword',\n '@storage': 'storage',\n '@default': 'identifier'\n }\n }], [/[A-Z][\\w]*/, {\n cases: {\n '~[A-Z0-9_]+': 'constructor.identifier',\n '@default': 'namespace.identifier'\n }\n }],\n // to show class names nicely\n\n // whitespace\n {\n include: '@whitespace'\n },\n // delimiters and operators\n [/[{}()[\\]]/, '@brackets'], [/@symbols/, {\n cases: {\n '@keywords': 'keyword',\n '@operators': 'operator',\n '@default': ''\n }\n }],\n // numbers\n [/\\d*\\.\\d+([eE][-+]?\\d+)?/, 'number.float'], [/0[xX][0-9a-fA-F]+[lL]?/, 'number.hex'], [/0[bB][0-1]+[lL]?/, 'number.binary'], [/(0[oO][0-7]+|0[0-7]+)[lL]?/, 'number.octal'], [/(0|[1-9]\\d*)[lL]?/, 'number'],\n // delimiter: after number because of .\\d floats\n [':', {\n token: 'keyword',\n bracket: '@open'\n }],\n // bracket for indentation\n [/@delimiters/, {\n cases: {\n '@keywords': 'keyword',\n '@default': 'delimiter'\n }\n }]],\n comment: [[/[^/*]+/, 'comment'], [/\\/\\*/, 'comment', '@push'],\n // nested comment\n ['\\\\*/', 'comment', '@pop'], [/[/*]/, 'comment']],\n // Regular strings\n mstring: [{\n include: '@strcontent'\n }, [/\"\"\"|'''/, {\n cases: {\n '$#==$S2': {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop'\n },\n '@default': {\n token: 'string'\n }\n }\n }], [/[\"']/, 'string'], [/./, 'string.invalid']],\n sstring: [{\n include: '@strcontent'\n }, [/[\"]/, {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop',\n nextEmbedded: '@pop'\n }], [/./, 'string.invalid']],\n string: [{\n include: '@strcontent'\n }, [/[']/, {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop'\n }], [/./, 'string.invalid']],\n strcontent: [[/[^\\\\\"']+/, 'string'], [/\\\\$/, 'string.escape'], [/@escapes/, 'string.escape'], [/\\\\./, 'string.escape.invalid']],\n // Raw strings: we distinguish them to color escape sequences correctly\n mrawstring: [{\n include: '@rawstrcontent'\n }, [/\"\"\"|'''/, {\n cases: {\n '$#==$S2': {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop'\n },\n '@default': {\n token: 'string'\n }\n }\n }], [/[\"']/, 'string'], [/./, 'string.invalid']],\n rawstring: [{\n include: '@rawstrcontent'\n }, [/[\"']/, {\n cases: {\n '$#==$S2': {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop'\n },\n '@default': {\n token: 'string'\n }\n }\n }], [/./, 'string.invalid']],\n rawstrcontent: [[/[^\\\\\"']+/, 'string'], [/\\\\[\"']/, 'string'], [/\\\\u[0-9A-Fa-f]{4}/, 'string.escape'], [/\\\\/, 'string']],\n whitespace: [[/\\s+/, 'white'], [/(^#.*$)/, 'comment'], [/'''/, 'string', '@endDocString'], [/\"\"\"/, 'string', '@endDblDocString']],\n endDocString: [[/[^']+/, 'string'], [/\\\\'/, 'string'], [/'''/, 'string', '@popall'], [/'/, 'string']],\n endDblDocString: [[/[^\"]+/, 'string'], [/\\\\\"/, 'string'], [/\"\"\"/, 'string', '@popall'], [/\"/, 'string']]\n }\n};\nvar lang = {\n id,\n conf,\n language\n};\nexport default lang;\n//# sourceMappingURL=python.js.map","var id = 'groovy';\nvar conf = {\n comments: {\n lineComment: '//',\n blockComment: ['/*', '*/']\n },\n brackets: [['{', '}'], ['[', ']'], ['(', ')']],\n autoClosingPairs: [{\n open: '{',\n close: '}'\n }, {\n open: '[',\n close: ']'\n }, {\n open: '(',\n close: ')'\n }, {\n open: '\"',\n close: '\"',\n notIn: ['string']\n }, {\n open: \"'\",\n close: \"'\",\n notIn: ['string', 'comment']\n }],\n surroundingPairs: [{\n open: '{',\n close: '}'\n }, {\n open: '[',\n close: ']'\n }, {\n open: '(',\n close: ')'\n }, {\n open: '\"',\n close: '\"'\n }, {\n open: \"'\",\n close: \"'\"\n }],\n onEnterRules: [{\n beforeText: /^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\s*$/,\n action: {\n indentAction: 1\n } // see monaco.languages.IndentAction.Indent\n }],\n folding: {\n offSide: true,\n markers: {\n start: /^\\s*#region\\b/,\n end: /^\\s*#endregion\\b/\n }\n }\n};\nvar language = {\n // Set defaultToken to invalid to see what you do not tokenize yet\n // defaultToken: 'invalid',\n\n keywords: ['and', 'del', 'from', 'not', 'while', 'as', 'elif', 'global', 'or', 'with', 'assert', 'else', 'if', 'pass', 'yield', 'break', 'except', 'import', 'print', 'println', 'class', 'exec', 'in', 'raise', 'continue', 'finally', 'is', 'return', 'def', 'for', 'lambda', 'try', ':', '=', 'isinstance', '__debug__'],\n operators: ['+', '-', '*', '**', '/', '//', '%', '<<', '>>', '&', '|', '^', '~', '<', '>', '<=', '>=', '==', '!=', '<>', '+=', '-=', '*=', '/', '//=', '%=', '&=', '|=', '^=', '>>=', '<<=', '**='],\n brackets: [{\n open: '{',\n close: '}',\n token: 'delimiter.curly'\n }, {\n open: '[',\n close: ']',\n token: 'delimiter.square'\n }, {\n open: '(',\n close: ')',\n token: 'delimiter.parenthesis'\n }],\n // operator symbols\n symbols: /[=><!~&|+\\-*/^%]+/,\n delimiters: /[;=.@:,`]/,\n // strings\n escapes: /\\\\(?:[abfnrtv\\\\\"'\\n\\r]|x[0-9A-Fa-f]{2}|[0-7]{3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|N\\{\\w+\\})/,\n rawpre: /(?:[rR]|ur|Ur|uR|UR|br|Br|bR|BR)/,\n strpre: /(?:[buBU])/,\n // The main tokenizer for our languages\n tokenizer: {\n root: [\n // strings: need to check first due to the prefix\n [/@strpre?(\"\"\"|''')/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@mstring.$1'\n }], [/@strpre?\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/@strpre?'([^'\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/@strpre?([\"])/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@sstring.$1',\n nextEmbedded: 'deephavenDb'\n }], [/@strpre?([\"'])/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@string.$1'\n }], [/@rawpre(\"\"\"|''')/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@mrawstring.$1'\n }], [/@rawpre\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/@rawpre'([^'\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/@rawpre([\"'])/, {\n token: 'string.delim',\n bracket: '@open',\n next: '@rawstring.$1'\n }],\n // identifiers and keywords\n [/__[\\w$]*/, 'predefined'], [/[a-z_$][\\w$]*/, {\n cases: {\n '@keywords': 'keyword',\n '@default': 'identifier'\n }\n }], [/[A-Z][\\w]*/, {\n cases: {\n '~[A-Z0-9_]+': 'constructor.identifier',\n '@default': 'namespace.identifier'\n }\n }],\n // to show class names nicely\n\n // whitespace\n {\n include: '@whitespace'\n },\n // delimiters and operators\n [/[{}()[\\]]/, '@brackets'], [/@symbols/, {\n cases: {\n '@keywords': 'keyword',\n '@operators': 'operator',\n '@default': ''\n }\n }],\n // numbers\n [/\\d*\\.\\d+([eE][-+]?\\d+)?/, 'number.float'], [/0[xX][0-9a-fA-F]+[lL]?/, 'number.hex'], [/0[bB][0-1]+[lL]?/, 'number.binary'], [/(0[oO][0-7]+|0[0-7]+)[lL]?/, 'number.octal'], [/(0|[1-9]\\d*)[lL]?/, 'number'],\n // delimiter: after number because of .\\d floats\n [':', {\n token: 'keyword',\n bracket: '@open'\n }],\n // bracket for indentation\n [/@delimiters/, {\n cases: {\n '@keywords': 'keyword',\n '@default': 'delimiter'\n }\n }]],\n // Regular strings\n mstring: [{\n include: '@strcontent'\n }, [/\"\"\"|'''/, {\n cases: {\n '$#==$S2': {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop'\n },\n '@default': {\n token: 'string'\n }\n }\n }], [/[\"']/, 'string'], [/./, 'string.invalid']],\n sstring: [{\n include: '@strcontent'\n }, [/[\"]/, {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop',\n nextEmbedded: '@pop'\n }], [/./, 'string.invalid']],\n string: [{\n include: '@strcontent'\n }, [/[']/, {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop'\n }], [/./, 'string.invalid']],\n strcontent: [[/[^\\\\\"']+/, 'string'], [/\\\\$/, 'string.escape'], [/@escapes/, 'string.escape'], [/\\\\./, 'string.escape.invalid']],\n // Raw strings: we distinguish them to color escape sequences correctly\n mrawstring: [{\n include: '@rawstrcontent'\n }, [/\"\"\"|'''/, {\n cases: {\n '$#==$S2': {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop'\n },\n '@default': {\n token: 'string'\n }\n }\n }], [/[\"']/, 'string'], [/./, 'string.invalid']],\n rawstring: [{\n include: '@rawstrcontent'\n }, [/[\"']/, {\n cases: {\n '$#==$S2': {\n token: 'string.delim',\n bracket: '@close',\n next: '@pop'\n },\n '@default': {\n token: 'string'\n }\n }\n }], [/./, 'string.invalid']],\n rawstrcontent: [[/[^\\\\\"']+/, 'string'], [/\\\\[\"']/, 'string'], [/\\\\u[0-9A-Fa-f]{4}/, 'string.escape'], [/\\\\/, 'string']],\n whitespace: [[/[ \\t\\r\\n]+/, ''], [/\\/\\*\\*(?!\\/)/, 'comment.doc', '@doccomment'], [/\\/\\*/, 'comment', '@comment'], [/\\/\\/.*$/, 'comment']],\n comment: [[/[^/*]+/, 'comment'], [/\\*\\//, 'comment', '@pop'], [/[/*]/, 'comment']],\n doccomment: [[/[^/*]+/, 'comment.doc'], [/\\*\\//, 'comment.doc', '@pop'], [/[/*]/, 'comment.doc']]\n }\n};\nvar lang = {\n id,\n conf,\n language\n};\nexport default lang;\n//# sourceMappingURL=groovy.js.map","/*---------------------------------------------------------------------------------------------\n * The MIT License (MIT)\n *\n * Copyright (c) Microsoft Corporation\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n *\n * The base version of this file is licensed under the MIT License (as above)\n * and was sourced from microsoft's monaco languages repository:\n * - https://github.com/microsoft/monaco-languages/blob/main/src/scala/scala.ts\n *--------------------------------------------------------------------------------------------*/\n\nvar id = 'scala';\nvar conf = {\n /*\n * `...` is allowed as an identifier.\n * $ is allowed in identifiers.\n * unary_<op> is allowed as an identifier.\n * <name>_= is allowed as an identifier.\n */\n wordPattern: /(unary_[@~!#%^&*()\\-=+\\\\|:<>/?]+)|([a-zA-Z_$][\\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\\w$]*)/g,\n comments: {\n lineComment: '//',\n blockComment: ['/*', '*/']\n },\n brackets: [['{', '}'], ['[', ']'], ['(', ')']],\n autoClosingPairs: [{\n open: '{',\n close: '}'\n }, {\n open: '[',\n close: ']'\n }, {\n open: '(',\n close: ')'\n }, {\n open: '\"',\n close: '\"'\n }, {\n open: \"'\",\n close: \"'\"\n }],\n surroundingPairs: [{\n open: '{',\n close: '}'\n }, {\n open: '[',\n close: ']'\n }, {\n open: '(',\n close: ')'\n }, {\n open: '\"',\n close: '\"'\n }, {\n open: \"'\",\n close: \"'\"\n }],\n folding: {\n markers: {\n start: /^\\s*\\/\\/\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))/,\n end: /^\\s*\\/\\/\\s*(?:(?:#?endregion\\b)|(?:<\\/editor-fold>))/\n }\n }\n};\nvar language = {\n // tokenPostfix: '.scala',\n\n // We can't easily add everything from Dotty, but we can at least add some of its keywords\n keywords: ['asInstanceOf', 'catch', 'class', 'classOf', 'def', 'do', 'else', 'extends', 'finally', 'for', 'foreach', 'forSome', 'if', 'import', 'isInstanceOf', 'macro', 'match', 'new', 'object', 'package', 'return', 'throw', 'trait', 'try', 'type', 'until', 'val', 'var', 'while', 'with', 'yield',\n // Dotty-specific:\n 'given', 'enum', 'then'],\n // Dotty-specific:\n softKeywords: ['as', 'export', 'extension', 'end', 'derives', 'on'],\n constants: ['true', 'false', 'null', 'this', 'super'],\n modifiers: ['abstract', 'final', 'implicit', 'lazy', 'override', 'private', 'protected', 'sealed'],\n // Dotty-specific:\n softModifiers: ['inline', 'opaque', 'open', 'transparent', 'using'],\n name: /(?:[a-z_$][\\w$]*|`[^`]+`)/,\n type: /(?:[A-Z][\\w$]*)/,\n // we include these common regular expressions\n symbols: /[=><!~?:&|+\\-*/^\\\\%@#]+/,\n digits: /\\d+(_+\\d+)*/,\n hexdigits: /[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,\n // C# style strings\n escapes: /\\\\(?:[btnfr\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,\n fstring_conv: /[bBhHsScCdoxXeEfgGaAt]|[Tn](?:[HIklMSLNpzZsQ]|[BbhAaCYyjmde]|[RTrDFC])/,\n // The main tokenizer for our languages\n tokenizer: {\n root: [\n // strings\n [/\\braw\"\"\"/, {\n token: 'string.quote',\n bracket: '@open',\n next: '@rawstringt'\n }], [/\\braw\"/, {\n token: 'string.quote',\n bracket: '@open',\n next: '@rawstring'\n }], [/\\bs\"\"\"/, {\n token: 'string.quote',\n bracket: '@open',\n next: '@sstringt'\n }], [/\\bs\"/, {\n token: 'string.quote',\n bracket: '@open',\n next: '@sstring'\n }], [/\\bf\"\"\"\"/, {\n token: 'string.quote',\n bracket: '@open',\n next: '@fstringt'\n }], [/\\bf\"/, {\n token: 'string.quote',\n bracket: '@open',\n next: '@fstring'\n }], [/\"\"\"/, {\n token: 'string.quote',\n bracket: '@open',\n next: '@stringt'\n }], [/\"/, {\n token: 'string.quote',\n bracket: '@open',\n next: '@string'\n }],\n // numbers\n [/(@digits)[eE]([-+]?(@digits))?[fFdD]?/, 'number.float', '@allowMethod'], [/(@digits)\\.(@digits)([eE][-+]?(@digits))?[fFdD]?/, 'number.float', '@allowMethod'], [/0[xX](@hexdigits)[Ll]?/, 'number.hex', '@allowMethod'], [/(@digits)[fFdD]/, 'number.float', '@allowMethod'], [/(@digits)[lL]?/, 'number', '@allowMethod'], [/\\b_\\*/, 'key'], [/\\b(_)\\b/, 'keyword', '@allowMethod'],\n // identifiers and keywords\n [/\\bimport\\b/, 'keyword', '@import'], [/\\b(case)([ \\t]+)(class)\\b/, ['keyword.modifier', 'white', 'keyword']], [/\\bcase\\b/, 'keyword', '@case'], [/\\bva[lr]\\b/, 'keyword', '@vardef'], [/\\b(def)([ \\t]+)((?:unary_)?@symbols|@name(?:_=)|@name)/, ['keyword', 'white', 'identifier']], [/@name(?=[ \\t]*:(?!:))/, 'variable'], [/(\\.)(@name|@symbols)/, [{\n token: 'operator'\n }, {\n token: '@rematch',\n next: '@allowMethod'\n }]], [/([{(])(\\s*)(@name(?=\\s*=>))/, ['@brackets', 'white', 'variable']], [/@name/, {\n cases: {\n '@keywords': 'keyword',\n '@softKeywords': 'keyword',\n '@modifiers': 'keyword.modifier',\n '@softModifiers': 'keyword.modifier',\n '@constants': {\n token: 'constant',\n next: '@allowMethod'\n },\n '@default': {\n token: 'identifier',\n next: '@allowMethod'\n }\n }\n }], [/@type/, 'type', '@allowMethod'],\n // whitespace\n {\n include: '@whitespace'\n },\n // @ annotations.\n [/@[a-zA-Z_$][\\w$]*(?:\\.[a-zA-Z_$][\\w$]*)*/, 'annotation'],\n // delimiters and operators\n [/[{(]/, '@brackets'], [/[})]/, '@brackets', '@allowMethod'], [/\\[/, 'operator.square'], [/](?!\\s*(?:va[rl]|def|type)\\b)/, 'operator.square', '@allowMethod'], [/]/, 'operator.square'], [/([=-]>|<-|>:|<:|:>|<%)(?=[\\s\\w()[\\]{},.\"'`])/, 'keyword'], [/@symbols/, 'operator'],\n // delimiter: after number because of .\\d floats\n [/[;,.]/, 'delimiter'],\n // symbols\n [/'[a-zA-Z$][\\w$]*(?!')/, 'attribute.name'],\n // characters\n [/'[^\\\\']'/, 'string', '@allowMethod'], [/(')(@escapes)(')/, [{\n token: 'string'\n }, {\n token: 'string.escape'\n }, {\n token: 'string',\n next: '@allowMethod'\n }]], [/'/, 'string.invalid']],\n import: [[/;/, 'delimiter', '@pop'], [/^|$/, '', '@pop'], [/[ \\t]+/, 'white'], [/[\\n\\r]+/, 'white', '@pop'], [/\\/\\*/, 'comment', '@comment'], [/@name|@type/, 'type'], [/[(){}]/, '@brackets'], [/[[\\]]/, 'operator.square'], [/[.,]/, 'delimiter']],\n allowMethod: [[/^|$/, '', '@pop'], [/[ \\t]+/, 'white'], [/[\\n\\r]+/, 'white', '@pop'], [/\\/\\*/, 'comment', '@comment'], [/(?==>[\\s\\w([{])/, 'keyword', '@pop'], [/(@name|@symbols)(?=[ \\t]*[[({\"'`]|[ \\t]+(?:[+-]?\\.?\\d|\\w))/, {\n cases: {\n '@keywords': {\n token: 'keyword',\n next: '@pop'\n },\n '->|<-|>:|<:|<%': {\n token: 'keyword',\n next: '@pop'\n },\n '@default': {\n token: '@rematch',\n next: '@pop'\n }\n }\n }], ['', '', '@pop']],\n comment: [[/[^/*]+/, 'comment'], [/\\/\\*/, 'comment', '@push'],\n // nested comment\n [/\\*\\//, 'comment', '@pop'], [/[/*]/, 'comment']],\n case: [[/\\b_\\*/, 'key'], [/\\b(_|true|false|null|this|super)\\b/, 'keyword', '@allowMethod'], [/\\bif\\b|=>/, 'keyword', '@pop'], [/`[^`]+`/, 'identifier', '@allowMethod'], [/@name/, 'variable', '@allowMethod'], [/:::?|\\||@(?![a-z_$])/, 'keyword'], {\n include: '@root'\n }],\n vardef: [[/\\b_\\*/, 'key'], [/\\b(_|true|false|null|this|super)\\b/, 'keyword'], [/@name/, 'variable'], [/:::?|\\||@(?![a-z_$])/, 'keyword'], [/=|:(?!:)/, 'operator', '@pop'], [/$/, 'white', '@pop'], {\n include: '@root'\n }],\n string: [[/[^\\\\\"\\n\\r]+/, 'string'], [/@escapes/, 'string.escape'], [/\\\\./, 'string.escape.invalid'], [/\"/, {\n token: 'string.quote',\n bracket: '@close',\n switchTo: '@allowMethod'\n }]],\n stringt: [[/[^\\\\\"\\n\\r]+/, 'string'], [/@escapes/, 'string.escape'], [/\\\\./, 'string.escape.invalid'], [/\"(?=\"\"\")/, 'string'], [/\"\"\"/, {\n token: 'string.quote',\n bracket: '@close',\n switchTo: '@allowMethod'\n }], [/\"/, 'string']],\n fstring: [[/@escapes/, 'string.escape'], [/\"/, {\n token: 'string.quote',\n bracket: '@close',\n switchTo: '@allowMethod'\n }], [/\\$\\$/, 'string'], [/(\\$)([a-z_]\\w*)/, ['operator', 'identifier']], [/\\$\\{/, 'operator', '@interp'], [/%%/, 'string'], [/(%)([-#+ 0,(])(\\d+|\\.\\d+|\\d+\\.\\d+)(@fstring_conv)/, ['metatag', 'keyword.modifier', 'number', 'metatag']], [/(%)(\\d+|\\.\\d+|\\d+\\.\\d+)(@fstring_conv)/, ['metatag', 'number', 'metatag']], [/(%)([-#+ 0,(])(@fstring_conv)/, ['metatag', 'keyword.modifier', 'metatag']], [/(%)(@fstring_conv)/, ['metatag', 'metatag']], [/./, 'string']],\n fstringt: [[/@escapes/, 'string.escape'], [/\"(?=\"\"\")/, 'string'], [/\"\"\"/, {\n token: 'string.quote',\n bracket: '@close',\n switchTo: '@allowMethod'\n }], [/\\$\\$/, 'string'], [/(\\$)([a-z_]\\w*)/, ['operator', 'identifier']], [/\\$\\{/, 'operator', '@interp'], [/%%/, 'string'], [/(%)([-#+ 0,(])(\\d+|\\.\\d+|\\d+\\.\\d+)(@fstring_conv)/, ['metatag', 'keyword.modifier', 'number', 'metatag']], [/(%)(\\d+|\\.\\d+|\\d+\\.\\d+)(@fstring_conv)/, ['metatag', 'number', 'metatag']], [/(%)([-#+ 0,(])(@fstring_conv)/, ['metatag', 'keyword.modifier', 'metatag']], [/(%)(@fstring_conv)/, ['metatag', 'metatag']], [/./, 'string']],\n sstring: [[/@escapes/, 'string.escape'], [/\"/, {\n token: 'string.quote',\n bracket: '@close',\n switchTo: '@allowMethod'\n }], [/\\$\\$/, 'string'], [/(\\$)([a-z_]\\w*)/, ['operator', 'identifier']], [/\\$\\{/, 'operator', '@interp'], [/./, 'string']],\n sstringt: [[/@escapes/, 'string.escape'], [/\"(?=\"\"\")/, 'string'], [/\"\"\"/, {\n token: 'string.quote',\n bracket: '@close',\n switchTo: '@allowMethod'\n }], [/\\$\\$/, 'string'], [/(\\$)([a-z_]\\w*)/, ['operator', 'identifier']], [/\\$\\{/, 'operator', '@interp'], [/./, 'string']],\n interp: [[/{/, 'operator', '@push'], [/}/, 'operator', '@pop'], {\n include: '@root'\n }],\n rawstring: [[/[^\"]/, 'string'], [/\"/, {\n token: 'string.quote',\n bracket: '@close',\n switchTo: '@allowMethod'\n }]],\n rawstringt: [[/[^\"]/, 'string'], [/\"(?=\"\"\")/, 'string'], [/\"\"\"/, {\n token: 'string.quote',\n bracket: '@close',\n switchTo: '@allowMethod'\n }], [/\"/, 'string']],\n whitespace: [[/[ \\t\\r\\n]+/, 'white'], [/\\/\\*/, 'comment', '@comment'], [/\\/\\/.*$/, 'comment']]\n }\n};\nvar lang = {\n id,\n conf,\n language\n};\nexport default lang;\n//# sourceMappingURL=scala.js.map","/* eslint no-useless-escape: \"off\" */\nvar id = 'deephavenDb';\nvar conf = {\n comments: {\n lineComment: '#',\n blockComment: [\"'''\", \"'''\"]\n },\n brackets: [['{', '}'], ['[', ']'], ['(', ')']],\n autoClosingPairs: [{\n open: '{',\n close: '}'\n }, {\n open: '[',\n close: ']'\n }, {\n open: '(',\n close: ')'\n }, {\n open: '\"',\n close: '\"',\n notIn: ['string']\n }, {\n open: \"'\",\n close: \"'\",\n notIn: ['string', 'comment']\n }],\n surroundingPairs: [{\n open: '{',\n close: '}'\n }, {\n open: '[',\n close: ']'\n }, {\n open: '(',\n close: ')'\n }, {\n open: '\"',\n close: '\"'\n }, {\n open: \"'\",\n close: \"'\"\n }],\n onEnterRules: [{\n beforeText: /^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\s*$/,\n action: {\n indentAction: 1\n } // see monaco.languages.IndentAction.Indent\n }],\n folding: {\n offSide: true,\n markers: {\n start: /^\\s*#region\\b/,\n end: /^\\s*#endregion\\b/\n }\n }\n};\nvar language = {\n tokenPostfix: '.js',\n keywords: ['boolean', 'break', 'byte', 'case', 'catch', 'char', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'double', 'else', 'enum', 'export', 'extends', 'false', 'final', 'finally', 'float', 'for', 'function', 'goto', 'if', 'implements', 'import', 'in', 'instanceof', 'int', 'interface', 'long', 'native', 'new', 'null', 'package', 'private', 'protected', 'public', 'return', 'short', 'static', 'super', 'switch', 'synchronized', 'this', 'throw', 'throws', 'transient', 'true', 'try', 'typeof', 'var', 'void', 'volatile', 'while', 'with'],\n builtins: ['define', 'require', 'window', 'document', 'undefined'],\n operators: ['=', '>', '<', '!', '~', '?', ':', '==', '<=', '>=', '!=', '&&', '||', '++', '--', '+', '-', '*', '/', '&', '|', '^', '%', '<<', '>>', '>>>', '+=', '-=', '*=', '/=', '&=', '|=', '^=', '%=', '<<=', '>>=', '>>>='],\n // define our own brackets as '<' and '>' do not match in javascript\n brackets: [{\n open: '{',\n close: '}',\n token: 'delimiter.curly'\n }, {\n open: '[',\n close: ']',\n token: 'delimiter.bracket'\n }, {\n open: '(',\n close: ')',\n token: 'delimiter.parenthesis'\n }],\n // common regular expressions\n symbols: /[~!@#%\\^&*-+=|\\\\:`<>.?\\/]+/,\n escapes: /\\\\(?:[btnfr\\\\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,\n exponent: /[eE][\\-+]?[0-9]+/,\n regexpctl: /[(){}\\[\\]\\$\\^|\\-*+?\\.]/,\n regexpesc: /\\\\(?:[bBdDfnrstvwWn0\\\\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,\n tokenizer: {\n root: [\n // identifiers and keywords\n [/([a-zA-Z_\\$][\\w\\$]*)(\\s*)(:?)/, {\n cases: {\n '$1@keywords': ['keyword', 'white', 'delimiter'],\n $3: ['key.identifier', 'white', 'delimiter'],\n // followed by :\n '$1@builtins': ['predefined.identifier', 'white', 'delimiter'],\n '@default': ['identifier', 'white', 'delimiter']\n }\n }],\n // whitespace\n {\n include: '@whitespace'\n },\n // regular expression: ensure it is terminated before beginning (otherwise it is an opeator)\n [/\\/(?=([^\\\\\\/]|\\\\.)+\\/)/, {\n token: 'regexp.slash',\n bracket: '@open',\n next: '@regexp'\n }],\n // delimiters and operators\n [/[{}()\\[\\]]/, '@brackets'], [/[;,.]/, 'delimiter'], [/@symbols/, {\n cases: {\n '@operators': 'operator',\n '@default': ''\n }\n }],\n // numbers\n [/\\d+\\.\\d*(@exponent)?/, 'number.float'], [/\\.\\d+(@exponent)?/, 'number.float'], [/\\d+@exponent/, 'number.float'], [/0[xX][\\da-fA-F]+/, 'number.hex'], [/0[0-7]+/, 'number.octal'], [/\\d+/, 'number'],\n // strings: recover on non-terminated strings\n [/\"([^\"\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/'([^'\\\\]|\\\\.)*$/, 'string.invalid'],\n // non-teminated string\n [/\"/, 'string', '@string.\"'], [/'/, 'string', \"@string.'\"]],\n whitespace: [[/[ \\t\\r\\n]+/, 'white'], [/\\/\\*/, 'comment', '@comment'], [/\\/\\/.*$/, 'comment']],\n comment: [[/[^\\/*]+/, 'comment'],\n // [/\\/\\*/, 'comment', '@push' ], // nested comment not allowed :-(\n [/\\/\\*/, 'comment.invalid'], ['\\\\*/', 'comment', '@pop'], [/[\\/*]/, 'comment']],\n string: [[/[^\\\\\"']+/, 'string'], [/@escapes/, 'string.escape'], [/\\\\./, 'string.escape.invalid'], [/[\"']/, {\n cases: {\n '$#==$S2': {\n token: 'string',\n next: '@pop'\n },\n '@default': 'string'\n }\n }]],\n // We match regular expression quite precisely\n regexp: [[/(\\{)(\\d+(?:,\\d*)?)(\\})/, ['@brackets.regexp.escape.control', 'regexp.escape.control', '@brackets.regexp.escape.control']], [/(\\[)(\\^?)(?=(?:[^\\]\\\\\\/]|\\\\.)+)/, [{\n token: '@brackets.regexp.escape.control'\n }, {\n token: 'regexp.escape.control',\n next: '@regexrange'\n }]], [/(\\()(\\?:|\\?=|\\?!)/, ['@brackets.regexp.escape.control', 'regexp.escape.control']], [/[()]/, '@brackets.regexp.escape.control'], [/@regexpctl/, 'regexp.escape.control'], [/[^\\\\\\/]/, 'regexp'], [/@regexpesc/, 'regexp.escape'], [/\\\\\\./, 'regexp.invalid'], ['/', {\n token: 'regexp.slash',\n bracket: '@close'\n }, '@pop']],\n regexrange: [[/-/, 'regexp.escape.control'], [/\\^/, 'regexp.invalid'], [/@regexpesc/, 'regexp.escape'], [/[^\\]]/, 'regexp'], [/\\]/, '@brackets.regexp.escape.control', '@pop']]\n }\n};\nvar lang = {\n id,\n conf,\n language\n};\nexport default lang;\n//# sourceMappingURL=db.js.map","/* eslint no-useless-escape: \"off\" */\n\nvar id = 'log';\nvar conf = {};\nvar language = {\n tokenizer: {\n root: [[/ FATAL[\\s\\S]*/, {\n token: 'error',\n next: '@error'\n }], [/ ERROR[\\s\\S]*/, {\n token: 'error',\n next: '@error'\n }], [/ STDERR[\\s\\S]*/, {\n token: 'error',\n next: '@error'\n }], [/ STDOUT.*/, {\n token: 'stdout',\n next: '@stdout'\n }], [/ INFO[\\s\\S]*/, {\n token: 'info',\n next: '@info'\n }], [/ WARN.*/, {\n token: 'warn',\n next: '@warn'\n }], [/ TRACE[\\s\\S]*/, {\n token: 'trace',\n next: '@trace'\n }], [/ DEBUG[.\\s\\S]*/, {\n token: 'debug',\n next: '@debug'\n }], [/^\\d{2}:\\d{2}:\\d{2}.\\d{3}/, 'date']],\n error: [{\n include: '@body'\n }],\n info: [{\n include: '@body'\n }],\n warn: [{\n include: '@body'\n }],\n stdout: [{\n include: '@body'\n }],\n trace: [{\n include: '@body'\n }],\n debug: [{\n include: '@body'\n }],\n body: [[/^\\d{2}:\\d{2}:\\d{2}.\\d{3}/, {\n token: 'date',\n next: '@pop'\n }], [/[\\s\\S]*/, {\n token: '$S0'\n }]]\n }\n};\nvar lang = {\n id,\n conf,\n language\n};\nexport default lang;\n//# sourceMappingURL=log.js.map","var RUFF_DEFAULT_SETTINGS = {\n preview: true,\n 'target-version': 'py38',\n 'line-length': 88,\n 'indent-width': 4,\n format: {\n 'indent-style': 'space',\n 'quote-style': 'double'\n },\n lint: {\n 'flake8-implicit-str-concat': {\n 'allow-multiline': false\n },\n // More info on rules at https://docs.astral.sh/ruff/rules/\n ignore: ['ISC003'],\n // Ignoring this rule permits explicit string concatenation\n select: ['F',\n // Pyflakes\n 'E1',\n // Pycodestyle indentation errors\n 'E9',\n // Pycodestyle syntax errors\n 'E711',\n // Pycodestyle comparison to None\n 'W291',\n // Pycodestyle trailing whitespace\n 'W293',\n // Pycodestyle blank line contains whitespace\n 'W605',\n // Pycodestyle invalid escape sequence\n 'B',\n // flake8-bugbear\n 'A',\n // flake8-builtins\n 'COM818',\n // flake8-commas trailing comma on bare tuple\n 'ISC',\n // flake8-implicit-str-concat\n 'PLE',\n // pylint errors\n 'RUF001',\n // ambiguous-unicode-character-string\n 'RUF021',\n // parenthesize-chained-operators\n 'RUF027',\n // missing-f-string-syntax\n 'PLR1704',\n // Redefined argument from local\n 'LOG',\n // flake8-logging\n 'ASYNC',\n // flake8-async\n 'RET501',\n // unnecessary-return-none\n 'RET502',\n // implicit-return-value\n 'RET503',\n // implicit-return\n 'PLC2401',\n // non-ascii-name\n 'PLC2403',\n // non-ascii-import-name\n 'NPY',\n // NumPy-specific rules\n 'PERF',\n // Perflint\n 'C4' // flake8-comprehensions\n ]\n }\n};\nexport default RUFF_DEFAULT_SETTINGS;\n//# sourceMappingURL=RuffDefaultSettings.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Completion provider for a code session\n */\nimport { PureComponent } from 'react';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport init, { Workspace } from '@astral-sh/ruff-wasm-web';\nimport RUFF_DEFAULT_SETTINGS from \"./RuffDefaultSettings.js\";\nimport MonacoUtils from \"./MonacoUtils.js\";\nvar log = Log.module('MonacoCompletionProvider');\n/**\n * Registers a completion provider with monaco for the language and session provided.\n */\nclass MonacoProviders extends PureComponent {\n /**\n * Loads and initializes Ruff if it is enabled.\n * Subsequent calls will return the same promise.\n */\n static initRuff() {\n return _asyncToGenerator(function* () {\n if (!MonacoProviders.isRuffEnabled) {\n return;\n }\n if (MonacoProviders.initRuffPromise) {\n return MonacoProviders.initRuffPromise;\n }\n MonacoProviders.initRuffPromise = init({}).then(() => {\n log.debug('Initialized Ruff', Workspace.version());\n MonacoProviders.isRuffInitialized = true;\n MonacoProviders.updateRuffWorkspace();\n });\n return MonacoProviders.initRuffPromise;\n })();\n }\n\n /**\n * Updates the current ruff workspace with MonacoProviders.ruffSettings.\n * Re-lints all Python models after updating.\n */\n static updateRuffWorkspace() {\n if (!MonacoProviders.isRuffInitialized) {\n return;\n }\n\n /* eslint-disable no-console */\n var prevLog = console.log;\n try {\n console.log = () => undefined; // Suppress not useful ruff-wasm-web logs when it creates the workspace\n MonacoProviders.ruffWorkspace = new Workspace(MonacoProviders.ruffSettings);\n } finally {\n console.log = prevLog; // Restore console.log\n }\n /* eslint-enable no-console */\n\n MonacoProviders.lintAllPython();\n }\n\n /**\n * Sets ruff settings\n * @param settings The ruff settings\n */\n static setRuffSettings() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MonacoProviders.ruffSettings;\n MonacoProviders.ruffSettings = settings;\n if (!MonacoProviders.isRuffInitialized) {\n MonacoProviders.initRuff();\n return;\n }\n MonacoProviders.updateRuffWorkspace();\n }\n static getDiagnostics(model) {\n if (!MonacoProviders.ruffWorkspace) {\n return [];\n }\n var diagnostics = MonacoProviders.ruffWorkspace.check(model.getValue());\n if (MonacoUtils.isConsoleModel(model)) {\n // Only want SyntaxErrors for console which have no code\n return diagnostics.filter(d => d.code == null);\n }\n return diagnostics;\n }\n static lintAllPython() {\n if (!MonacoProviders.isRuffEnabled) {\n monaco.editor.removeAllMarkers('ruff');\n return;\n }\n monaco.editor.getModels().filter(m => m.getLanguageId() === 'python').forEach(MonacoProviders.lintPython);\n }\n static lintPython(model) {\n if (!MonacoProviders.isRuffEnabled) {\n return;\n }\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n var diagnostics = MonacoProviders.getDiagnostics(model);\n log.debug(\"Linting Python document: \".concat(model.uri.toString()), diagnostics);\n monaco.editor.setModelMarkers(model, 'ruff', diagnostics.map(d => {\n // Unused variable or import. Mark as unnecessary to fade the text\n var isUnnecessary = d.code === 'F401' || d.code === 'F841';\n var isSyntaxError = d.code == null; // SyntaxError has no error code\n return {\n startLineNumber: d.location.row,\n startColumn: d.location.column,\n endLineNumber: d.end_location.row,\n endColumn: d.end_location.column,\n message: isSyntaxError ? d.message : \"\".concat(d.code, \": \").concat(d.message),\n severity: isSyntaxError ? monaco.MarkerSeverity.Error : monaco.MarkerSeverity.Warning,\n tags: isUnnecessary ? [monaco.MarkerTag.Unnecessary] : []\n };\n }));\n }\n\n /**\n * Converts LSP CompletionItemKind to Monaco CompletionItemKind\n * Defaults to Variable if no LSP kind was provided\n * https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItemKind\n *\n * @param kind The LSP kind\n * @returns Monaco kind\n */\n static lspToMonacoKind(kind) {\n var monacoKinds = monaco.languages.CompletionItemKind;\n switch (kind) {\n case 1:\n return monacoKinds.Text;\n case 2:\n return monacoKinds.Method;\n case 3:\n return monacoKinds.Function;\n case 4:\n return monacoKinds.Constructor;\n case 5:\n return monacoKinds.Field;\n case 6:\n return monacoKinds.Variable;\n case 7:\n return monacoKinds.Class;\n case 8:\n return monacoKinds.Interface;\n case 9:\n return monacoKinds.Module;\n case 10:\n return monacoKinds.Property;\n case 11:\n return monacoKinds.Unit;\n case 12:\n return monacoKinds.Value;\n case 13:\n return monacoKinds.Enum;\n case 14:\n return monacoKinds.Keyword;\n case 15:\n return monacoKinds.Snippet;\n case 16:\n return monacoKinds.Color;\n case 17:\n return monacoKinds.File;\n case 18:\n return monacoKinds.Reference;\n case 19:\n return monacoKinds.Folder;\n case 20:\n return monacoKinds.EnumMember;\n case 21:\n return monacoKinds.Constant;\n case 22:\n return monacoKinds.Struct;\n case 23:\n return monacoKinds.Event;\n case 24:\n return monacoKinds.Operator;\n case 25:\n return monacoKinds.TypeParameter;\n default:\n return monacoKinds.Variable;\n }\n }\n\n /**\n * Converts an LSP document range to a monaco range\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param range The LSP document range to convert\n * @returns The corresponding monaco range\n */\n static lspToMonacoRange(range) {\n var {\n start,\n end\n } = range;\n\n // Monaco expects the columns/ranges to start at 1. LSP starts at 0\n return {\n startLineNumber: start.line + 1,\n startColumn: start.character + 1,\n endLineNumber: end.line + 1,\n endColumn: end.character + 1\n };\n }\n\n /**\n * Converts a monaco position to an LSP position\n * Accounts for LSP indexing from 0 and monaco indexing from 1\n *\n * @param position The monaco position\n * @returns The corresponding LSP position\n */\n static monacoToLspPosition(position) {\n // Monaco 1-indexes Position. LSP 0-indexes Position\n return {\n line: position.lineNumber - 1,\n character: position.column - 1\n };\n }\n static handlePythonCodeActionRequest(model, range) {\n if (!MonacoProviders.isRuffEnabled || !MonacoProviders.ruffWorkspace) {\n return {\n actions: [],\n dispose: () => {\n /* no-op */\n }\n };\n }\n var diagnostics = MonacoProviders.getDiagnostics(model).filter(d => {\n var diagnosticRange = new monaco.Range(d.location.row, d.location.column, d.end_location.row, d.end_location.column);\n return d.code != null &&\n // Syntax errors have no code and can't be fixed/disabled\n diagnosticRange.intersectRanges(range);\n });\n var fixActions = diagnostics.filter(_ref => {\n var {\n fix\n } = _ref;\n return fix != null;\n }).map(d => {\n var title = 'Fix';\n if (d.fix != null) {\n if (d.fix.message != null && d.fix.message !== '') {\n title = \"\".concat(d.code, \": \").concat(d.fix.message);\n } else {\n title = \"Fix \".concat(d.code);\n }\n }\n return {\n title,\n id: \"fix-\".concat(d.code),\n kind: 'quickfix',\n edit: d.fix ? {\n edits: d.fix.edits.map(edit => {\n var _edit$content;\n return {\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: edit.location.row,\n startColumn: edit.location.column,\n endLineNumber: edit.end_location.row,\n endColumn: edit.end_location.column\n },\n text: (_edit$content = edit.content) !== null && _edit$content !== void 0 ? _edit$content : ''\n }\n };\n })\n } : undefined\n };\n });\n var seenCodes = new Set();\n var duplicateCodes = new Set();\n diagnostics.forEach(d => {\n if (d.code == null) {\n return;\n }\n if (seenCodes.has(d.code)) {\n duplicateCodes.add(d.code);\n }\n seenCodes.add(d.code);\n });\n var disableLineActions = diagnostics.map(d => {\n if (d.code == null) {\n // The nulls are already filtered out, but TS doesn't know that\n return [];\n }\n var line = model.getLineContent(d.location.row);\n var lastToken = monaco.editor.tokenize(line, model.getLanguageId())[0].at(-1);\n var lineEdit = {\n range: {\n startLineNumber: d.location.row,\n startColumn: line.length + 1,\n endLineNumber: d.location.row,\n endColumn: line.length + 1\n },\n text: \" # noqa: \".concat(d.code)\n };\n if (lastToken != null && lastToken.type.startsWith('comment')) {\n // Already a comment at the end of the line\n lineEdit.text = \"# noqa: \".concat(d.code, \" \");\n if (line.startsWith('# noqa:', lastToken.offset)) {\n // Already another suppressed rule on the line\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = lastToken.offset + 9; // \"# noqa: \" length + 1 to offset\n } else {\n lineEdit.range.startColumn = lastToken.offset + 1;\n lineEdit.range.endColumn = line.startsWith('# ', lastToken.offset) ? lastToken.offset + 3 // \"# \" + 1 to offset\n : lastToken.offset + 2; // \"#\" + 1 to offset\n }\n }\n return [{\n title: \"Disable \".concat(d.code, \" for \").concat(duplicateCodes.has(d.code) ? \"line \".concat(d.location.row) : 'this line'),\n kind: 'quickfix',\n edit: {\n edits: [{\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: lineEdit\n }]\n }\n }];\n }).flat().filter(\n // Remove actions with duplicate titles as you can't disable the same rule on a line twice\n (action, i, arr) => arr.find(a => a.title === action.title) === action);\n var disableGlobalActions = [...seenCodes].map(code => ({\n title: \"Disable \".concat(code, \" for this file\"),\n kind: 'quickfix',\n edit: {\n edits: [{\n resource: model.uri,\n versionId: model.getVersionId(),\n textEdit: {\n range: {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1\n },\n text: \"# ruff: noqa: \".concat(code, \"\\n\")\n }\n }]\n }\n }));\n return {\n actions: [...fixActions, ...disableLineActions, ...disableGlobalActions],\n dispose: () => {\n /* no-op */\n }\n };\n }\n static handlePythonFormatRequest(model, options, token) {\n if (!MonacoProviders.ruffWorkspace) {\n return;\n }\n log.debug(\"Formatting Python document: \".concat(model.uri.toString));\n return [{\n range: model.getFullModelRange(),\n text: MonacoProviders.ruffWorkspace.format(model.getValue())\n }];\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"registeredCompletionProvider\", void 0);\n _defineProperty(this, \"registeredSignatureProvider\", void 0);\n _defineProperty(this, \"registeredHoverProvider\", void 0);\n this.handleCompletionRequest = this.handleCompletionRequest.bind(this);\n this.handleSignatureRequest = this.handleSignatureRequest.bind(this);\n this.handleHoverRequest = this.handleHoverRequest.bind(this);\n }\n componentDidMount() {\n var {\n language,\n session\n } = this.props;\n this.registeredCompletionProvider = monaco.languages.registerCompletionItemProvider(language, {\n provideCompletionItems: this.handleCompletionRequest,\n triggerCharacters: ['.', '\"', \"'\"]\n });\n if (session.getSignatureHelp != null) {\n this.registeredSignatureProvider = monaco.languages.registerSignatureHelpProvider(language, {\n provideSignatureHelp: this.handleSignatureRequest,\n signatureHelpTriggerCharacters: ['(', ',']\n });\n }\n if (session.getHover != null) {\n this.registeredHoverProvider = monaco.languages.registerHoverProvider(language, {\n provideHover: this.handleHoverRequest\n });\n }\n }\n componentWillUnmount() {\n var _this$registeredCompl, _this$registeredSigna, _this$registeredHover;\n (_this$registeredCompl = this.registeredCompletionProvider) === null || _this$registeredCompl === void 0 || _this$registeredCompl.dispose();\n (_this$registeredSigna = this.registeredSignatureProvider) === null || _this$registeredSigna === void 0 || _this$registeredSigna.dispose();\n (_this$registeredHover = this.registeredHoverProvider) === null || _this$registeredHover === void 0 || _this$registeredHover.dispose();\n }\n handleCompletionRequest(model, position, context) {\n var {\n model: propModel,\n session\n } = this.props;\n if (model !== propModel) {\n return null;\n }\n var params = {\n textDocument: {\n uri: \"\".concat(model.uri),\n version: model.getVersionId()\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context\n };\n var completionItems = session.getCompletionItems(params);\n log.debug('Requested completion items', params);\n var monacoCompletionItems = completionItems.then(items => {\n log.debug('Completion items received: ', params, items);\n var suggestions = items.map(item => {\n var {\n label,\n kind,\n detail,\n documentation,\n sortText,\n filterText,\n textEdit,\n insertTextFormat\n } = item;\n return {\n label,\n kind: MonacoProviders.lspToMonacoKind(kind),\n detail,\n documentation: (documentation === null || documentation === void 0 ? void 0 : documentation.kind) === 'markdown' ? documentation : documentation === null || documentation === void 0 ? void 0 : documentation.value,\n sortText,\n filterText,\n insertText: textEdit.text,\n // We are basically guessing that LSP's insertTextFormat===2 is\n // semantically equivalent to monaco's insertTextRules===4.\n // Why microsoft is using almost-but-not-LSP apis is beyond me....\n insertTextRules: insertTextFormat === 2 ? 4 : insertTextFormat,\n range: MonacoProviders.lspToMonacoRange(textEdit.range)\n };\n });\n return {\n incomplete: true,\n suggestions\n };\n }).catch(error => {\n log.error('There was an error retrieving completion items', error);\n return {\n suggestions: []\n };\n });\n return monacoCompletionItems;\n }\n handleSignatureRequest(model, position, token, context) {\n var defaultResult = {\n value: {\n signatures: [],\n activeSignature: 0,\n activeParameter: 0\n },\n dispose: () => {\n /* no-op */\n }\n };\n var {\n model: propModel,\n session\n } = this.props;\n if (model !== propModel || session.getSignatureHelp == null) {\n return null;\n }\n var params = {\n textDocument: {\n uri: \"\".concat(model.uri),\n version: model.getVersionId()\n },\n position: MonacoProviders.monacoToLspPosition(position),\n context\n };\n var signatureItems = session.getSignatureHelp(params);\n log.debug('Requested signature help', params);\n var monacoSignatures = signatureItems.then(items => {\n log.debug('Signatures received: ', params, signatureItems);\n var signatures = items.map(item => {\n var {\n label,\n documentation,\n parameters\n } = item;\n return {\n documentation: (documentation === null || documentation === void 0 ? void 0 : documentation.kind) === 'markdown' ? documentation : documentation === null || documentation === void 0 ? void 0 : documentation.value,\n label,\n parameters: parameters !== null && parameters !== void 0 ? parameters : []\n };\n });\n if (signatures.length === 0) {\n return defaultResult;\n }\n\n // For now we will assume we only autocomplete Python w/ 1 signature\n // For multiple signatures, this may need to be sent through the request as context\n var activeSignature = 0;\n return {\n value: {\n signatures,\n activeSignature,\n activeParameter: items[activeSignature].activeParameter\n },\n dispose: () => {\n /* no-op */\n }\n };\n }).catch(error => {\n log.error('There was an error retrieving completion items', error);\n return defaultResult;\n });\n return monacoSignatures;\n }\n handleHoverRequest(model, position) {\n var {\n model: propModel,\n session\n } = this.props;\n if (model !== propModel || session.getHover == null) {\n return null;\n }\n var params = {\n textDocument: {\n uri: \"\".concat(model.uri),\n version: model.getVersionId()\n },\n position: MonacoProviders.monacoToLspPosition(position)\n };\n var hover = session.getHover(params);\n log.debug('Requested hover', params);\n var monacoHover = hover.then(hoverItem => {\n log.debug('Hover received: ', params, hoverItem);\n var {\n contents: hoverContents\n } = hoverItem;\n return {\n contents: hoverContents != null ? [hoverContents] : []\n };\n }).catch(error => {\n log.error('There was an error retrieving hover', error);\n return {\n contents: []\n };\n });\n return monacoHover;\n }\n render() {\n return null;\n }\n}\n_defineProperty(MonacoProviders, \"ruffWorkspace\", void 0);\n_defineProperty(MonacoProviders, \"initRuffPromise\", void 0);\n_defineProperty(MonacoProviders, \"isRuffInitialized\", false);\n_defineProperty(MonacoProviders, \"isRuffEnabled\", true);\n_defineProperty(MonacoProviders, \"ruffSettings\", RUFF_DEFAULT_SETTINGS);\nexport default MonacoProviders;\n//# sourceMappingURL=MonacoProviders.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { nanoid } from 'nanoid';\nimport throttle from 'lodash.throttle';\n/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\nimport { resolveCssVariablesInRecord } from '@deephaven/components';\nimport { assertNotNull } from '@deephaven/utils';\nimport { find as linkifyFind } from 'linkifyjs';\nimport * as monaco from 'monaco-editor';\n// @ts-ignore\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\nimport Log from '@deephaven/log';\nimport MonacoThemeRaw from \"./MonacoTheme.module.css\";\nimport PyLang from \"./lang/python.js\";\nimport GroovyLang from \"./lang/groovy.js\";\nimport ScalaLang from \"./lang/scala.js\";\nimport DbLang from \"./lang/db.js\";\nimport LogLang from \"./lang/log.js\";\nimport MonacoProviders from \"./MonacoProviders.js\";\nvar log = Log.module('MonacoUtils');\nvar CONSOLE_URI_PREFIX = 'inmemory://dh-console/';\nclass MonacoUtils {\n /**\n * Initializes Monaco for the environment\n * @param getWorker The getWorker function Monaco should use\n * The workers should be provided by the caller and bundled by their build system (e.g. Vite, Webpack)\n */\n static init() {\n var {\n getWorker\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n log.debug('Initializing Monaco...');\n if (getWorker !== undefined) {\n MonacoUtils.registerGetWorker(getWorker);\n }\n var {\n initTheme,\n registerLanguages\n } = MonacoUtils;\n initTheme();\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n monaco.languages.onLanguage('python', () => {\n monaco.languages.registerCodeActionProvider('python', {\n provideCodeActions: MonacoProviders.handlePythonCodeActionRequest\n }, {\n providedCodeActionKinds: ['quickfix']\n });\n monaco.languages.registerDocumentFormattingEditProvider('python', {\n provideDocumentFormattingEdits: MonacoProviders.handlePythonFormatRequest\n });\n });\n monaco.editor.onDidCreateModel(model => {\n // Lint Python models on creation and on change\n if (model.getLanguageId() === 'python') {\n if (MonacoProviders.ruffWorkspace != null) {\n MonacoProviders.lintPython(model);\n }\n var throttledLint = throttle(m => MonacoProviders.lintPython(m), 250);\n model.onDidChangeContent(() => {\n throttledLint(model);\n });\n }\n });\n MonacoUtils.removeConflictingKeybindings();\n log.debug('Monaco initialized.');\n }\n\n /**\n * Initialize current Monaco theme based on the current DH theme.\n */\n static initTheme() {\n var _MonacoTheme$logErro, _MonacoTheme$logErro2;\n var {\n removeHashtag\n } = MonacoUtils;\n var MonacoTheme = resolveCssVariablesInRecord(MonacoThemeRaw);\n log.debug2('Monaco theme:', MonacoThemeRaw);\n log.debug2('Monaco theme derived:', MonacoTheme);\n var dhDarkRules = [{\n token: '',\n foreground: removeHashtag(MonacoTheme.foreground)\n }, {\n token: 'string',\n foreground: removeHashtag(MonacoTheme.string)\n }, {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim'])\n }, {\n token: 'keyword',\n foreground: removeHashtag(MonacoTheme.keyword)\n }, {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js'])\n }, {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter)\n }, {\n token: 'comment',\n foreground: removeHashtag(MonacoTheme.comment)\n }, {\n token: 'number',\n foreground: removeHashtag(MonacoTheme.number)\n }, {\n token: 'storage',\n foreground: removeHashtag(MonacoTheme.storage)\n }, {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier)\n }, {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier'])\n }, {\n token: 'operator',\n foreground: removeHashtag(MonacoTheme.operator)\n }, {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined)\n }, {\n token: 'error.log',\n foreground: (_MonacoTheme$logErro = (_MonacoTheme$logErro2 = MonacoTheme['log-error']) === null || _MonacoTheme$logErro2 === void 0 ? void 0 : _MonacoTheme$logErro2.substring(1)) !== null && _MonacoTheme$logErro !== void 0 ? _MonacoTheme$logErro : ''\n }, {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn'])\n }, {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info'])\n }, {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout'])\n }, {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace'])\n }, {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug'])\n }, {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date'])\n }];\n var dhDarkColors = {\n foreground: MonacoTheme.foreground,\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-background'],\n 'editorLineNumber.foreground': MonacoTheme['editor-line-number-foreground'],\n 'editorLineNumber.activeForeground': MonacoTheme['editor-line-number-active-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.inactiveSelectionBackground': MonacoTheme['editor-inactive-selection-background'],\n 'editor.selectionHighlightBackground': MonacoTheme['editor-selection-highlight-background'],\n 'editor.wordHighlightBackground': MonacoTheme['editor-word-highlight-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground': MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background': MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground': MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground': MonacoTheme['editor-suggest-widget-selected-background'],\n 'list.activeSelectionBackground': MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.selectedForeground': MonacoTheme['editor-suggest-widget-selected-foreground'],\n 'list.activeSelectionForeground': MonacoTheme['editor-suggest-widget-selected-foreground'],\n 'editorSuggestWidget.highlightForeground': MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'editorSuggestWidget.focusHighlightForeground': MonacoTheme['editor-suggest-widget-focus-highlight-foreground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'menu.selectionForeground': MonacoTheme['menu-selection-foreground'],\n 'keybindingLabel.foreground': MonacoTheme['menu-selection-foreground'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground': MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground': MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n 'textLink.foreground': MonacoTheme['text-link-foreground'],\n 'textLink.activeForeground': MonacoTheme['text-link-active-foreground'],\n 'editorLink.activeForeground': MonacoTheme['editor-link-active-foreground'],\n 'editorBracketHighlight.foreground1': MonacoTheme['editor-bracket-foreground1'],\n 'editorBracketHighlight.foreground2': MonacoTheme['editor-bracket-foreground2'],\n 'editorBracketHighlight.foreground3': MonacoTheme['editor-bracket-foreground3'],\n 'editorBracketHighlight.foreground4': MonacoTheme['editor-bracket-foreground4'],\n 'editorBracketHighlight.foreground5': MonacoTheme['editor-bracket-foreground5'],\n 'editorBracketHighlight.foreground6': MonacoTheme['editor-bracket-foreground6'],\n 'editorBracketHighlight.unexpectedBracket.foreground': MonacoTheme['editor-unexpected-bracket-foreground']\n };\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors\n });\n try {\n monaco.editor.setTheme('dh-dark');\n } catch (err) {\n log.error(\"Failed to set 'dh-dark' Monaco theme, falling back to vs-dark\", err);\n monaco.editor.setTheme('vs-dark');\n }\n }\n\n /**\n * Register the getWorker function for Monaco\n * @param getWorker The getWorker function for Monaco\n */\n static registerGetWorker(getWorker) {\n window.MonacoEnvironment = _objectSpread(_objectSpread({}, window.MonacoEnvironment), {}, {\n getWorker\n });\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color) {\n var _color$substring;\n return (_color$substring = color === null || color === void 0 ? void 0 : color.substring(1)) !== null && _color$substring !== void 0 ? _color$substring : '';\n }\n static registerLanguages(languages) {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n var languageIds = languages.map(_ref => {\n var {\n id\n } = _ref;\n return id;\n });\n monaco.languages.getLanguages().filter(_ref2 => {\n var {\n id\n } = _ref2;\n return languageIds.includes(id);\n }).forEach(languageParam => {\n var language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n static registerLanguage(language) {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param editor The editor to set the EOL for\n * @param eolSequence EOL sequence\n */\n static setEOL(editor) {\n var _editor$getModel;\n var eolSequence = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : monaco.editor.EndOfLineSequence.LF;\n (_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 || _editor$getModel.setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param session The IdeSession to link\n * @param editor The editor to link the session to\n * @returns A cleanup function for disposing of the created listeners\n */\n static openDocument(editor, session) {\n var model = editor.getModel();\n assertNotNull(model);\n var didOpenDocumentParams = {\n textDocument: {\n uri: \"\".concat(model.uri),\n languageId: model.getLanguageId(),\n version: model.getVersionId(),\n text: model.getValue()\n }\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n session.openDocument(didOpenDocumentParams);\n var dispose = editor.onDidChangeModelContent(changedEvent => {\n var {\n changes,\n versionId\n } = changedEvent;\n var contentChanges = [];\n for (var i = 0; i < changes.length; i += 1) {\n var change = changes[i];\n var {\n range,\n rangeLength,\n text\n } = change;\n var contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1\n }\n },\n rangeLength,\n text\n };\n contentChanges.push(contentChange);\n }\n if (contentChanges.length > 0) {\n var didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: \"\".concat(model.uri)\n },\n contentChanges\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n return dispose;\n }\n static closeDocument(editor, session) {\n var model = editor.getModel();\n assertNotNull(model);\n var didCloseDocumentParams = {\n textDocument: {\n uri: \"\".concat(model.uri)\n }\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param editor The editor the register the paste handler for\n */\n static registerPasteHandler(editor) {\n editor.onDidPaste(pasteEvent => {\n var smartQuotes = /“|”/g;\n var invalidChars = /\\u200b/g; // zero width space\n var invalidSpaces = /\\u00A0/g; // non-breaking space\n var editorModel = editor.getModel();\n assertNotNull(editorModel);\n var pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (smartQuotes.test(pastedText) || invalidChars.test(pastedText) || invalidSpaces.test(pastedText)) {\n editorModel.applyEdits([{\n range: pasteEvent.range,\n text: pastedText.replace(smartQuotes, '\"').replace(invalidChars, '').replace(invalidSpaces, ' ')\n }]);\n }\n });\n }\n static isMacPlatform() {\n var {\n platform\n } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture\n * them. Note that this is a global configuration, so all editor instances will\n * be impacted.\n */\n static removeConflictingKeybindings() {\n // All editor instances share a global keybinding registry which is where\n // default keybindings are set. There doesn't appear to be a way to remove\n // default bindings, but we can add new ones that will override the existing\n // ones and set `command` to null. This will treat the key events as unhandled\n // and allow them to bubble up.\n monaco.editor.addKeybindingRule(\n // Restart console in Enterprise (see Shortcuts.ts)\n {\n /* eslint-disable-next-line no-bitwise */\n keybinding: monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyD,\n command: null\n });\n\n // Ctrl+H is used to focus Community console history in Windows + Linux.\n // An alternate shortcut is used for Mac, so no need to override it\n // (See ConsoleShortcuts.ts)\n if (!MonacoUtils.isMacPlatform()) {\n monaco.editor.addKeybindingRule({\n /* eslint-disable-next-line no-bitwise */\n keybinding: monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyH,\n command: null\n });\n }\n }\n\n /**\n * Creates actions with a `noop` run function to disable specified keybindings.\n * Note that this will swallow the events. To disable default keybindings in a\n * way that allows events to propagate upward, see `removeConflictingKeybindings`\n * @param editor Editor to disable keybindings for\n * @param keybindings List of monaco keybindings to disable. Often a bitwise\n * combination like `monaco.KeyMod.Alt | monaco.KeyMod.KeyJ`\n */\n static disableKeyBindings(editor, keybindings) {\n editor.addAction({\n // This shouldn't be referenced by anything so using an arbitrary unique id\n id: \"disable-keybindings-\".concat(nanoid()),\n label: '',\n // This action won't be shown in the UI so no need for a label\n keybindings,\n run: () => undefined\n });\n }\n static getMonacoKeyCodeFromShortcut(shortcut) {\n var {\n keyState\n } = shortcut;\n var {\n keyValue\n } = keyState;\n if (keyValue === null) {\n return 0;\n }\n var isMac = MonacoUtils.isMacPlatform();\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey ? monaco.KeyMod.CtrlCmd : 0) | (keyState.shiftKey ? monaco.KeyMod.Shift : 0) | (keyState.altKey ? monaco.KeyMod.Alt : 0) | (keyState.ctrlKey ? monaco.KeyMod.WinCtrl : 0) | KeyCodeUtils.fromString(keyValue)\n );\n }\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey ? monaco.KeyMod.CtrlCmd : 0) | (keyState.shiftKey ? monaco.KeyMod.Shift : 0) | (keyState.altKey ? monaco.KeyMod.Alt : 0) | (keyState.metaKey ? monaco.KeyMod.WinCtrl : 0) | KeyCodeUtils.fromString(keyValue)\n );\n }\n static provideLinks(model) {\n var newTokens = [];\n var _loop = function _loop(i) {\n var lineText = model.getLineContent(i);\n var originalTokens = linkifyFind(lineText);\n var tokens = originalTokens.filter(token => {\n if (token.type === 'url') {\n return /^https?:\\/\\//.test(token.value);\n }\n return true;\n });\n // map the tokens to the ranges - you know the line number now, use the token start/end as the startColumn/endColumn\n tokens.forEach(token => {\n newTokens.push({\n url: token.href,\n range: new monaco.Range(i, token.start + 1, i, token.end + 1)\n });\n });\n };\n for (var i = 1; i <= model.getLineCount(); i += 1) {\n _loop(i);\n }\n return {\n links: newTokens\n };\n }\n\n /**\n * Generates a console URI for use with monaco.\n * @returns A new console URI\n */\n static generateConsoleUri() {\n return monaco.Uri.parse(\"\".concat(CONSOLE_URI_PREFIX).concat(nanoid()));\n }\n\n /**\n * Checks if a model is a console model based on its URI.\n * @param model The monaco model to check\n * @returns If the model is a console model\n */\n static isConsoleModel(model) {\n return model.uri.toString().startsWith(CONSOLE_URI_PREFIX);\n }\n\n /**\n * Checks if the editor has the formatDocument action registered.\n * @param editor The monaco editor to check\n * @returns If the editor has a document formatter registered\n */\n static canFormat(editor) {\n var _editor$getAction;\n return ((_editor$getAction = editor.getAction('editor.action.formatDocument')) === null || _editor$getAction === void 0 ? void 0 : _editor$getAction.isSupported()) === true;\n }\n\n /**\n * Runs the formatDocument action on the editor.\n * @param editor The editor to format\n */\n static formatDocument(editor) {\n return _asyncToGenerator(function* () {\n var _editor$getAction2;\n yield (_editor$getAction2 = editor.getAction('editor.action.formatDocument')) === null || _editor$getAction2 === void 0 ? void 0 : _editor$getAction2.run();\n })();\n }\n}\nexport default MonacoUtils;\n//# sourceMappingURL=MonacoUtils.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport * as monaco from 'monaco-editor';\nimport Log from '@deephaven/log';\nimport { assertNotNull, PromiseUtils } from '@deephaven/utils';\nimport { MonacoProviders, MonacoTheme, MonacoUtils } from \"./monaco/index.js\";\nimport \"./ConsoleInput.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConsoleInput');\nvar LINE_HEIGHT = parseInt(MonacoTheme['line-height'], 10);\nvar TOP_PADDING = 6;\nvar BOTTOM_PADDING = 6;\nvar MIN_INPUT_HEIGHT = LINE_HEIGHT + TOP_PADDING + BOTTOM_PADDING;\nvar BUFFER_SIZE = 100;\n/**\n * Component for input in a console session. Handles loading the recent command history\n */\nexport class ConsoleInput extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelListener\", void 0);\n _defineProperty(this, \"resizeObserver\", void 0);\n _defineProperty(this, \"commandContainer\", void 0);\n _defineProperty(this, \"commandEditor\", void 0);\n _defineProperty(this, \"commandHistoryIndex\", void 0);\n _defineProperty(this, \"commandSuggestionContainer\", void 0);\n _defineProperty(this, \"loadingPromise\", void 0);\n _defineProperty(this, \"timestamp\", void 0);\n _defineProperty(this, \"bufferIndex\", void 0);\n _defineProperty(this, \"history\", void 0);\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n _defineProperty(this, \"modifiedCommands\", void 0);\n this.handleResize = this.handleResize.bind(this);\n this.commandContainer = /*#__PURE__*/React.createRef();\n this.commandHistoryIndex = null;\n this.timestamp = Date.now();\n this.bufferIndex = 0;\n this.history = [];\n // Tracks every command that has been modified by its commandHistoryIndex. Cleared on any command being executed\n this.modifiedCommands = new Map();\n this.resizeObserver = new window.ResizeObserver(this.handleResize);\n this.state = {\n commandEditorHeight: LINE_HEIGHT,\n isFocused: false,\n model: null\n };\n }\n componentDidMount() {\n this.initCommandEditor();\n this.loadMoreHistory();\n }\n componentDidUpdate() {\n this.layoutEditor();\n }\n componentWillUnmount() {\n this.resizeObserver.disconnect();\n if (this.loadingPromise != null) {\n this.loadingPromise.cancel();\n }\n this.destroyCommandEditor();\n }\n /**\n * Sets the console text from an external source.\n * Sets commandHistoryIndex to null since the source is not part of the history\n * @param text The text to set in the input\n * @param focus If the input should be focused\n * @param execute If the input should be executed\n * @returns void\n */\n setConsoleText(text) {\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!text) {\n return;\n }\n log.debug('Command received: ', text);\n\n // Only set the console text if we're not running this command\n if (!execute) {\n var _this$commandEditor;\n // Need to set commandHistoryIndex before value\n // On value change, modified commands map updates\n this.commandHistoryIndex = null;\n (_this$commandEditor = this.commandEditor) === null || _this$commandEditor === void 0 || _this$commandEditor.setValue(text);\n }\n if (focus) {\n this.focusEnd();\n }\n this.updateDimensions();\n if (execute) {\n this.processCommand(text);\n }\n }\n initCommandEditor() {\n var {\n language,\n session\n } = this.props;\n var model = monaco.editor.createModel('', language, MonacoUtils.generateConsoleUri());\n var commandSettings = {\n copyWithSyntaxHighlighting: false,\n cursorStyle: 'block',\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language,\n lineHeight: LINE_HEIGHT,\n lineDecorationsWidth: 3,\n lineNumbers: 'off',\n minimap: {\n enabled: false\n },\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n scrollbar: {\n arrowSize: 0,\n horizontal: 'hidden',\n horizontalScrollbarSize: 0\n },\n padding: {\n top: TOP_PADDING,\n bottom: BOTTOM_PADDING\n },\n value: '',\n wordWrap: 'on',\n autoClosingBrackets: 'beforeWhitespace',\n model\n };\n var element = this.commandContainer.current;\n assertNotNull(element);\n this.commandEditor = monaco.editor.create(element, commandSettings);\n MonacoUtils.setEOL(this.commandEditor);\n MonacoUtils.openDocument(this.commandEditor, session);\n this.commandEditor.onDidChangeModelContent(() => {\n var _this$commandEditor2;\n var value = (_this$commandEditor2 = this.commandEditor) === null || _this$commandEditor2 === void 0 ? void 0 : _this$commandEditor2.getValue();\n this.modifiedCommands.set(this.commandHistoryIndex, value !== null && value !== void 0 ? value : null);\n this.updateDimensions();\n });\n this.commandEditor.onDidFocusEditorText(() => {\n this.setState({\n isFocused: true\n });\n });\n this.commandEditor.onDidBlurEditorText(() => {\n this.setState({\n isFocused: false\n });\n });\n\n /**\n * Register for keydown events to capture the `Enter` key.\n * Need to do it this way instead of using `addCommand`, because that would eat the Enter key in all situations, which is not what we want.\n * Can't do it in `onDidChangeModelContent` either, since we want to stop the Enter action from modifying the command.\n */\n this.commandEditor.onKeyDown(keyEvent => {\n var {\n commandEditor,\n commandHistoryIndex\n } = this;\n var position = commandEditor === null || commandEditor === void 0 ? void 0 : commandEditor.getPosition();\n assertNotNull(position);\n var {\n lineNumber\n } = position;\n if (!keyEvent.altKey && !keyEvent.shiftKey && !keyEvent.metaKey) {\n if (keyEvent.code === 'ArrowUp' && !this.isSuggestionMenuPopulated() && lineNumber === 1) {\n if (commandHistoryIndex != null) {\n this.loadCommand(commandHistoryIndex + 1);\n } else {\n this.loadCommand(0);\n }\n this.focusStart();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n return;\n }\n if (keyEvent.code === 'ArrowDown' && !this.isSuggestionMenuPopulated() && lineNumber === (model === null || model === void 0 ? void 0 : model.getLineCount())) {\n if (commandHistoryIndex != null && commandHistoryIndex > 0) {\n this.loadCommand(commandHistoryIndex - 1);\n } else {\n this.loadCommand(null);\n }\n this.focusEnd();\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n return;\n }\n if (keyEvent.keyCode === monaco.KeyCode.Enter && !this.isSuggestionMenuPopulated()) {\n var _this$commandEditor3;\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n var command = (_this$commandEditor3 = this.commandEditor) === null || _this$commandEditor3 === void 0 ? void 0 : _this$commandEditor3.getValue().trim();\n if (command !== undefined) {\n var _this$commandEditor4;\n this.processCommand(command);\n (_this$commandEditor4 = this.commandEditor) === null || _this$commandEditor4 === void 0 || _this$commandEditor4.setValue('');\n }\n }\n }\n });\n\n // Disable the Ctrl+F functionality so that the find window doesn't appear\n MonacoUtils.disableKeyBindings(this.commandEditor, [monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyF // eslint-disable-line no-bitwise\n ]);\n MonacoUtils.registerPasteHandler(this.commandEditor);\n this.commandEditor.focus();\n this.resizeObserver.observe(element);\n this.updateDimensions();\n this.setState({\n model: this.commandEditor.getModel()\n });\n }\n destroyCommandEditor() {\n var {\n session\n } = this.props;\n if (this.commandEditor) {\n MonacoUtils.closeDocument(this.commandEditor, session);\n this.commandEditor.dispose();\n this.commandEditor = undefined;\n }\n }\n handleResize() {\n this.updateDimensions();\n }\n isSuggestionMenuActive() {\n var _ref;\n if (!this.commandSuggestionContainer) {\n var _this$commandEditor5;\n this.commandSuggestionContainer = (_this$commandEditor5 = this.commandEditor) === null || _this$commandEditor5 === void 0 || (_this$commandEditor5 = _this$commandEditor5.getDomNode()) === null || _this$commandEditor5 === void 0 ? void 0 : _this$commandEditor5.querySelector('.suggest-widget');\n }\n return (_ref = this.commandSuggestionContainer && this.commandSuggestionContainer.classList.contains('visible')) !== null && _ref !== void 0 ? _ref : false;\n }\n isSuggestionMenuPopulated() {\n var _this$commandSuggesti, _this$commandSuggesti2;\n return this.isSuggestionMenuActive() && ((_this$commandSuggesti = (_this$commandSuggesti2 = this.commandSuggestionContainer) === null || _this$commandSuggesti2 === void 0 || (_this$commandSuggesti2 = _this$commandSuggesti2.querySelector('.monaco-list-rows')) === null || _this$commandSuggesti2 === void 0 ? void 0 : _this$commandSuggesti2.childElementCount) !== null && _this$commandSuggesti !== void 0 ? _this$commandSuggesti : 0) > 0;\n }\n focus() {\n var _this$commandEditor6;\n (_this$commandEditor6 = this.commandEditor) === null || _this$commandEditor6 === void 0 || _this$commandEditor6.focus();\n }\n focusStart() {\n var _this$commandEditor7, _this$commandEditor8, _this$commandEditor9, _this$commandEditor0, _this$commandEditor1;\n var model = (_this$commandEditor7 = this.commandEditor) === null || _this$commandEditor7 === void 0 ? void 0 : _this$commandEditor7.getModel();\n assertNotNull(model);\n var column = model.getLineLength(1) + 1; // Length of 1st line\n var firstCharTop = (_this$commandEditor8 = this.commandEditor) === null || _this$commandEditor8 === void 0 ? void 0 : _this$commandEditor8.getTopForPosition(1, column);\n assertNotNull(firstCharTop);\n (_this$commandEditor9 = this.commandEditor) === null || _this$commandEditor9 === void 0 || _this$commandEditor9.setPosition({\n lineNumber: 1,\n column\n });\n (_this$commandEditor0 = this.commandEditor) === null || _this$commandEditor0 === void 0 || _this$commandEditor0.setScrollTop(firstCharTop);\n (_this$commandEditor1 = this.commandEditor) === null || _this$commandEditor1 === void 0 || _this$commandEditor1.focus();\n }\n focusEnd() {\n var _this$commandEditor10, _this$commandEditor11, _this$commandEditor12, _this$commandEditor13, _this$commandEditor14;\n var model = (_this$commandEditor10 = this.commandEditor) === null || _this$commandEditor10 === void 0 ? void 0 : _this$commandEditor10.getModel();\n assertNotNull(model);\n var lastLine = model.getLineCount();\n var column = model.getLineLength(lastLine) + 1;\n var lastCharTop = (_this$commandEditor11 = this.commandEditor) === null || _this$commandEditor11 === void 0 ? void 0 : _this$commandEditor11.getTopForPosition(lastLine, column);\n assertNotNull(lastCharTop);\n (_this$commandEditor12 = this.commandEditor) === null || _this$commandEditor12 === void 0 || _this$commandEditor12.setPosition({\n lineNumber: lastLine,\n column\n });\n (_this$commandEditor13 = this.commandEditor) === null || _this$commandEditor13 === void 0 || _this$commandEditor13.setScrollTop(lastCharTop);\n (_this$commandEditor14 = this.commandEditor) === null || _this$commandEditor14 === void 0 || _this$commandEditor14.focus();\n }\n clear() {\n var _this$commandEditor15, _this$commandEditor16;\n (_this$commandEditor15 = this.commandEditor) === null || _this$commandEditor15 === void 0 || _this$commandEditor15.focus();\n (_this$commandEditor16 = this.commandEditor) === null || _this$commandEditor16 === void 0 || (_this$commandEditor16 = _this$commandEditor16.getModel()) === null || _this$commandEditor16 === void 0 || _this$commandEditor16.setValue('');\n this.commandHistoryIndex = null;\n }\n layoutEditor() {\n if (this.commandEditor) {\n this.commandEditor.layout();\n }\n }\n\n /**\n * Loads the given command from history\n * If edits have been made to the command since last run command, loads the modified version\n * @param index The index to load. Null to load command started in the editor and not in the history\n */\n loadCommand(index) {\n var _this$commandEditor17;\n if (index !== null && index >= this.history.length) {\n return;\n }\n var modifiedValue = this.modifiedCommands.get(index);\n var historyValue = index === null ? '' : this.history[this.history.length - index - 1];\n this.commandHistoryIndex = index;\n (_this$commandEditor17 = this.commandEditor) === null || _this$commandEditor17 === void 0 || (_this$commandEditor17 = _this$commandEditor17.getModel()) === null || _this$commandEditor17 === void 0 || _this$commandEditor17.setValue(modifiedValue !== null && modifiedValue !== void 0 ? modifiedValue : historyValue);\n if (index !== null && index > this.history.length - BUFFER_SIZE) {\n this.loadMoreHistory();\n }\n }\n loadMoreHistory() {\n var _this = this;\n return _asyncToGenerator(function* () {\n try {\n if (_this.loadingPromise != null || _this.bufferIndex == null) {\n return;\n }\n var {\n commandHistoryStorage,\n language,\n scope\n } = _this.props;\n _this.loadingPromise = PromiseUtils.makeCancelable(commandHistoryStorage.getTable(language, scope !== null && scope !== void 0 ? scope : '', _this.timestamp), resolved => resolved.close());\n var table = yield _this.loadingPromise;\n table.setReversed(true);\n table.setViewport({\n top: _this.bufferIndex,\n bottom: _this.bufferIndex + BUFFER_SIZE - 1\n });\n _this.loadingPromise = PromiseUtils.makeCancelable(table.getViewportData(), () => table.close());\n var viewportData = yield _this.loadingPromise;\n _this.bufferIndex += BUFFER_SIZE;\n if (_this.bufferIndex >= table.size) {\n // We've loaded the full history, no need to load any more\n _this.bufferIndex = null;\n }\n _this.history = [...viewportData.items.filter((_ref2, pos, arr) => {\n var {\n name\n } = _ref2;\n return pos === 0 || name !== arr[pos - 1].name;\n }).map(_ref3 => {\n var {\n name\n } = _ref3;\n return name;\n }).reverse(), ..._this.history];\n _this.loadingPromise = undefined;\n table.close();\n } catch (err) {\n _this.loadingPromise = undefined;\n if (PromiseUtils.isCanceled(err)) {\n log.debug2('Promise canceled, not loading history');\n return;\n }\n log.error('Error fetching history', err);\n }\n })();\n }\n processCommand(command) {\n this.commandHistoryIndex = null;\n this.modifiedCommands.clear();\n assertNotNull(command);\n if (command !== '' && (this.history.length === 0 || command !== this.history[this.history.length - 1])) {\n this.history.push(command);\n }\n this.updateDimensions();\n var {\n onSubmit\n } = this.props;\n onSubmit(command);\n }\n updateDimensions() {\n if (!this.commandEditor) {\n return;\n }\n var {\n maxHeight\n } = this.props;\n assertNotNull(maxHeight);\n var contentHeight = this.commandEditor.getContentHeight();\n var commandEditorHeight = Math.max(Math.min(contentHeight, maxHeight), MIN_INPUT_HEIGHT);\n\n // Only show the overview ruler (markings overlapping sroll bar area) if the scrollbar will show\n var shouldScroll = contentHeight > commandEditorHeight;\n var options = {\n overviewRulerLanes: shouldScroll ? undefined : 0\n };\n this.setState({\n commandEditorHeight\n }, () => {\n var _this$commandEditor18, _this$commandEditor19;\n (_this$commandEditor18 = this.commandEditor) === null || _this$commandEditor18 === void 0 || _this$commandEditor18.updateOptions(options);\n (_this$commandEditor19 = this.commandEditor) === null || _this$commandEditor19 === void 0 || _this$commandEditor19.layout();\n });\n }\n render() {\n var {\n disabled,\n language,\n session\n } = this.props;\n var {\n commandEditorHeight,\n isFocused,\n model\n } = this.state;\n return /*#__PURE__*/_jsx(\"div\", {\n className: classNames('console-input-wrapper', {\n disabled\n }),\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('console-input-inner-wrapper', {\n focus: isFocused\n }),\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: ConsoleInput.INPUT_CLASS_NAME,\n ref: this.commandContainer,\n style: {\n height: commandEditorHeight\n }\n }), model && /*#__PURE__*/_jsx(MonacoProviders, {\n model: model,\n language: language,\n session: session\n })]\n })\n });\n }\n}\n_defineProperty(ConsoleInput, \"defaultProps\", {\n maxHeight: LINE_HEIGHT * 10,\n scope: null,\n disabled: false\n});\n_defineProperty(ConsoleInput, \"INPUT_CLASS_NAME\", 'console-input');\nexport default ConsoleInput;\n//# sourceMappingURL=ConsoleInput.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport memoize from 'memoize-one';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, ContextActions, GLOBAL_SHORTCUTS } from '@deephaven/components';\nimport { dhFileCsv, dhFileDownload, dhFileSpreadsheet, vsClippy, vsFileZip, vsTrash, vsWarning } from '@deephaven/icons';\nimport \"./CsvOverlay.css\";\nimport { assertNotNull, TextUtils } from '@deephaven/utils';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar PASTED_VALUES = 'pasted values';\nvar INVALID_MIME_TYPES = [/^audio.*/, /^font.*/, /^image.*/, /^video.*/];\nvar VALID_EXTENSIONS = ['.csv', '.tsv', '.tab', '.psv', '.dsv', '.txt'];\nvar ZIP_EXTENSIONS = ['.zip'];\n\n/**\n * Overlay that is displayed when uploading a CSV file.\n */\nclass CsvOverlay extends Component {\n static isValidDropItem(item) {\n return item != null && item.kind === 'file' && !INVALID_MIME_TYPES.find(invalid => invalid.test(item.type));\n }\n static isValidExtension(name) {\n var allowZip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return VALID_EXTENSIONS.some(ext => name.endsWith(ext)) || allowZip && ZIP_EXTENSIONS.some(ext => name.endsWith(ext));\n }\n static handleDragOver(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n static getIcon(fileName) {\n if (fileName === PASTED_VALUES) {\n return vsClippy;\n }\n if (fileName.endsWith('.csv')) {\n return dhFileCsv;\n }\n if (fileName.endsWith('.zip')) {\n return vsFileZip;\n }\n return dhFileSpreadsheet;\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"fileElem\", void 0);\n _defineProperty(this, \"divElem\", void 0);\n _defineProperty(this, \"getValidExtensions\", memoize(allowZip => allowZip ? [...VALID_EXTENSIONS, ...ZIP_EXTENSIONS] : [...VALID_EXTENSIONS]));\n _defineProperty(this, \"getAcceptString\", memoize(allowZip => this.getValidExtensions(allowZip).join(', ')));\n _defineProperty(this, \"getFileTypeErrorString\", memoize(allowZip => TextUtils.join(this.getValidExtensions(allowZip), 'or')));\n this.handleSelectFile = this.handleSelectFile.bind(this);\n this.handleFiles = this.handleFiles.bind(this);\n this.handleDrop = this.handleDrop.bind(this);\n this.unstageFile = this.unstageFile.bind(this);\n this.handleMenuPaste = this.handleMenuPaste.bind(this);\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n this.fileElem = /*#__PURE__*/React.createRef();\n this.divElem = /*#__PURE__*/React.createRef();\n this.state = {\n selectedFileName: ''\n };\n }\n componentDidMount() {\n var _this$divElem$current, _this$divElem$current2;\n (_this$divElem$current = this.divElem.current) === null || _this$divElem$current === void 0 || _this$divElem$current.addEventListener('paste', this.handlePasteEvent);\n (_this$divElem$current2 = this.divElem.current) === null || _this$divElem$current2 === void 0 || _this$divElem$current2.focus();\n }\n componentWillUnmount() {\n var _this$divElem$current3;\n (_this$divElem$current3 = this.divElem.current) === null || _this$divElem$current3 === void 0 || _this$divElem$current3.removeEventListener('paste', this.handlePasteEvent);\n }\n handleSelectFile() {\n if (this.fileElem.current) {\n var _this$fileElem$curren;\n this.fileElem.current.value = '';\n (_this$fileElem$curren = this.fileElem.current) === null || _this$fileElem$curren === void 0 || _this$fileElem$curren.click();\n }\n }\n handleFiles(event) {\n event.stopPropagation();\n event.preventDefault();\n var {\n files\n } = event.target;\n if (files != null) {\n this.handleFile(files[0]);\n }\n }\n handleDrop(e) {\n var {\n allowZip,\n clearDragError,\n dragError\n } = this.props;\n e.preventDefault();\n e.stopPropagation();\n if (dragError != null) {\n clearDragError();\n return;\n }\n if (e.dataTransfer == null || e.dataTransfer.items == null || e.dataTransfer.items.length === 0) {\n return;\n }\n var file = e.dataTransfer.items[0].getAsFile();\n assertNotNull(file);\n if (CsvOverlay.isValidExtension(file.name, allowZip)) {\n this.handleFile(file);\n } else {\n this.setState({\n dropError: CsvOverlay.FILE_TYPE_ERROR\n });\n }\n }\n unstageFile(event) {\n var {\n onCancel\n } = this.props;\n event.stopPropagation();\n event.preventDefault();\n onCancel();\n this.setState({\n selectedFileName: '',\n dropError: undefined\n });\n }\n handleFile(file) {\n var {\n onFileOpened\n } = this.props;\n onFileOpened(file);\n this.setState({\n selectedFileName: file.name,\n dropError: undefined\n });\n }\n handleMenuPaste() {\n var {\n onPaste,\n onError,\n uploadInProgress\n } = this.props;\n if (uploadInProgress) {\n return;\n }\n navigator.clipboard.readText().then(clipText => {\n onPaste(clipText);\n this.setState({\n selectedFileName: PASTED_VALUES,\n dropError: undefined\n });\n }).catch(e => onError(e));\n }\n handlePasteEvent(event) {\n event.stopPropagation();\n event.preventDefault();\n this.handleMenuPaste();\n }\n makeContextMenuItems() {\n var {\n uploadInProgress\n } = this.props;\n return [{\n title: 'Paste',\n icon: vsClippy,\n action: this.handleMenuPaste,\n shortcut: GLOBAL_SHORTCUTS.PASTE,\n disabled: uploadInProgress\n }];\n }\n render() {\n var {\n allowZip,\n dragError,\n uploadInProgress\n } = this.props;\n var {\n selectedFileName,\n dropError\n } = this.state;\n var error = dragError !== null && dragError !== void 0 ? dragError : dropError;\n var contextActions = this.makeContextMenuItems();\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: this.divElem,\n className: \"csv-overlay fill-parent-absolute\",\n onDragOver: CsvOverlay.handleDragOver,\n onDrop: this.handleDrop,\n tabIndex: -1,\n children: [/*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n }), /*#__PURE__*/_jsx(\"input\", {\n ref: this.fileElem,\n type: \"file\",\n id: \"fileElem\",\n accept: this.getAcceptString(allowZip),\n style: {\n display: 'none'\n },\n onChange: this.handleFiles,\n \"data-testid\": \"fileElem\"\n }), !selectedFileName && (error === undefined || error === '') && /*#__PURE__*/_jsxs(\"div\", {\n className: \"message-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"message-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: dhFileDownload\n })\n }), /*#__PURE__*/_jsx(\"label\", {\n children: \"Drop file (or paste values) here to import\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"message-small\",\n children: /*#__PURE__*/_jsx(\"label\", {\n children: \"or\"\n })\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleSelectFile,\n children: \"Select File...\"\n })]\n }), selectedFileName && (error === undefined || error === '') && /*#__PURE__*/_jsxs(\"div\", {\n className: \"selected-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"selected-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: CsvOverlay.getIcon(selectedFileName)\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"selected-text\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: \"Selected File\"\n }), /*#__PURE__*/_jsxs(\"label\", {\n className: \"selected-name\",\n children: [selectedFileName, !uploadInProgress && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"ml-2\",\n onClick: this.unstageFile,\n icon: vsTrash,\n tooltip: \"Remove\"\n })]\n })]\n })]\n }), Boolean(error) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"message-content\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"message-icon\",\n children: /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n })\n }), /*#__PURE__*/_jsx(\"label\", {\n children: error\n }), error === CsvOverlay.FILE_TYPE_ERROR && /*#__PURE__*/_jsx(\"div\", {\n className: \"message-small\",\n children: /*#__PURE__*/_jsx(\"label\", {\n children: this.getFileTypeErrorString(allowZip)\n })\n })]\n })]\n });\n }\n}\n_defineProperty(CsvOverlay, \"defaultProps\", {\n allowZip: false,\n dragError: null\n});\n_defineProperty(CsvOverlay, \"MULTIPLE_FILE_ERROR\", 'Please select only one file');\n_defineProperty(CsvOverlay, \"FILE_TYPE_ERROR\", 'Filetype not supported.');\nexport default CsvOverlay;\n//# sourceMappingURL=CsvOverlay.js.map","/**\n * This is used to help papaparse understand our stream.\n * It uses these fields for feature detection, but never actually calls read()\n * https://github.com/mholt/PapaParse/blob/master/papaparse.js#L244\n */\n\nexport default function makeZipStreamHelper(zipObj, onUpdate) {\n var helper = zipObj.internalStream('string');\n helper.readable = true;\n helper.read = () => false;\n helper.removeListener = () => false;\n helper.on('data', (_, metadata) => onUpdate(metadata));\n return helper;\n}\n//# sourceMappingURL=ZipStreamHelper.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { assertNotNull } from '@deephaven/utils';\nimport Papa from 'papaparse';\n// Intentionally using isNaN rather than Number.isNaN\n/* eslint-disable no-restricted-globals */\nimport { NewTableColumnTypes } from '@deephaven/jsapi-utils';\nimport makeZipStreamHelper from \"./ZipStreamHelper.js\"; // Initially column types start as unknown\nvar UNKNOWN = 'unknown';\nvar MAX_INT = 2147483647;\nvar MIN_INT = -2147483648;\nvar DATE_TIME_REGEX = /^[0-9]{4}-[0-1][0-9]-[0-3][0-9][ T][0-2][0-9]:[0-5][0-9]:[0-6][0-9](?:\\.[0-9]{1,9})?(?: [a-zA-Z]+)?$/;\nvar LOCAL_TIME_REGEX = /^([0-9]+T)?([0-9]+):([0-9]+)(:[0-9]+)?(?:\\.[0-9]{1,9})?$/;\n\n/**\n * Determines the type of each column in a CSV file by parsing it and looking at every value.\n */\nclass CsvTypeParser {\n static determineType(value, type, nullString) {\n if (!value || value === nullString) {\n // A null tells us nothing about the type\n return type;\n }\n switch (type) {\n case NewTableColumnTypes.STRING:\n // Strings never get promoted\n return NewTableColumnTypes.STRING;\n case NewTableColumnTypes.INTEGER:\n return CsvTypeParser.checkInteger(value);\n case NewTableColumnTypes.LONG:\n return CsvTypeParser.checkLong(value);\n case NewTableColumnTypes.DOUBLE:\n return CsvTypeParser.checkDouble(value);\n case NewTableColumnTypes.BOOLEAN:\n return CsvTypeParser.checkBoolean(value);\n case NewTableColumnTypes.DATE_TIME:\n return CsvTypeParser.checkDateTime(value);\n case NewTableColumnTypes.LOCAL_TIME:\n return CsvTypeParser.checkLocalTime(value);\n default:\n return CsvTypeParser.getTypeFromUnknown(value);\n }\n }\n\n // Allows for cusomt rules in addition to isNaN\n static isNotParsableNumber(s) {\n return isNaN(s) || s === 'Infinity' || s === '-Infinity';\n }\n static checkInteger(value) {\n var noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n return CsvTypeParser.getNumberType(noCommas);\n }\n static checkLong(value) {\n var noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n if (noCommas.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n return NewTableColumnTypes.LONG;\n }\n static checkDouble(value) {\n var noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n return NewTableColumnTypes.STRING;\n }\n return NewTableColumnTypes.DOUBLE;\n }\n static checkBoolean(value) {\n var lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n return NewTableColumnTypes.STRING;\n }\n static checkDateTime(value) {\n if (DATE_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.DATE_TIME;\n }\n return NewTableColumnTypes.STRING;\n }\n static checkLocalTime(value) {\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n return NewTableColumnTypes.STRING;\n }\n static getTypeFromUnknown(value) {\n var noCommas = value.replace(/,/g, '');\n if (CsvTypeParser.isNotParsableNumber(noCommas)) {\n var lower = value.toLowerCase();\n if (lower === 'true' || lower === 'false') {\n return NewTableColumnTypes.BOOLEAN;\n }\n if (DATE_TIME_REGEX.test(value) && value.includes(':')) {\n return NewTableColumnTypes.DATE_TIME;\n }\n if (LOCAL_TIME_REGEX.test(value)) {\n return NewTableColumnTypes.LOCAL_TIME;\n }\n return NewTableColumnTypes.STRING;\n }\n return CsvTypeParser.getNumberType(noCommas);\n }\n static getNumberType(value) {\n if (value.includes('.')) {\n return NewTableColumnTypes.DOUBLE;\n }\n\n // Fast length check\n var maxIntLength = value.startsWith('-') ? 11 : 10;\n if (value.length > maxIntLength) {\n return NewTableColumnTypes.LONG;\n }\n\n // Slower parseInt check\n var intValue = parseInt(value, 10);\n if (intValue > MAX_INT || intValue < MIN_INT) {\n return NewTableColumnTypes.LONG;\n }\n return NewTableColumnTypes.INTEGER;\n }\n constructor(onFileCompleted, file, readHeaders, parentConfig, nullString, onProgress, onError, totalChunks, isZip, shouldTrim) {\n _defineProperty(this, \"onFileCompleted\", void 0);\n _defineProperty(this, \"file\", void 0);\n _defineProperty(this, \"readHeaders\", void 0);\n _defineProperty(this, \"nullString\", void 0);\n _defineProperty(this, \"onProgress\", void 0);\n _defineProperty(this, \"onError\", void 0);\n _defineProperty(this, \"types\", void 0);\n _defineProperty(this, \"chunks\", void 0);\n _defineProperty(this, \"totalChunks\", void 0);\n _defineProperty(this, \"rowCount\", void 0);\n _defineProperty(this, \"isZip\", void 0);\n _defineProperty(this, \"shouldTrim\", void 0);\n _defineProperty(this, \"zipProgress\", void 0);\n _defineProperty(this, \"config\", void 0);\n this.onFileCompleted = onFileCompleted;\n this.file = file;\n this.readHeaders = readHeaders;\n this.nullString = nullString;\n this.onProgress = onProgress;\n this.onError = onError;\n this.chunks = 0;\n this.totalChunks = totalChunks;\n this.rowCount = 0;\n this.isZip = isZip;\n this.shouldTrim = shouldTrim;\n this.zipProgress = 0;\n this.handleChunk = this.handleChunk.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n this.config = _objectSpread(_objectSpread({}, parentConfig), {}, {\n error: this.handleError,\n chunk: this.handleChunk,\n complete: this.handleComplete\n });\n }\n parse() {\n if (this.file instanceof File || this.file instanceof Blob) {\n Papa.parse(this.file, this.config);\n } else {\n var zipStream = makeZipStreamHelper(this.file, this.handleNodeUpdate);\n // This is actually a stream, but papaparse TS doesn't like it\n Papa.parse(zipStream, this.config);\n // The stream needs to be manually resumed since jszip starts paused\n // Papaparse does not call resume and assumes the stream is already reading\n zipStream.resume();\n }\n }\n handleChunk(result, parser) {\n var {\n data\n } = result;\n if (!this.types) {\n if (data == null || data.length === 0) {\n parser.abort();\n this.onError('Error parsing CSV: no data in file.');\n return;\n }\n this.types = new Array(data[0].length).fill(UNKNOWN);\n if (this.readHeaders) {\n // If headers are being read from the file, remove them from type analysis\n data = data.slice(1);\n }\n }\n this.rowCount += data.length;\n assertNotNull(this.types);\n var cloneTypes = [...this.types];\n data.forEach(row => {\n if (row.length >= cloneTypes.length) {\n for (var i = 0; i < cloneTypes.length; i += 1) {\n cloneTypes[i] = CsvTypeParser.determineType(this.shouldTrim ? row[i].trim() : row[i], cloneTypes[i], this.nullString);\n }\n this.types = cloneTypes;\n } else {\n parser.abort();\n this.onError(\"Error parsing CSV: Insufficient data in row.\\nExpected length \".concat(cloneTypes.length, \" but found \").concat(row.length, \".\\nRow = \").concat(row));\n }\n });\n this.chunks += 1;\n // 50 because the type parsing accounts for 50% of the parsing\n var progress = 0;\n if (this.totalChunks > 0) {\n progress = Math.round(this.chunks / this.totalChunks * 50);\n } else {\n progress = Math.round(this.zipProgress / 2);\n }\n var isCancelled = this.onProgress(progress);\n if (isCancelled) {\n parser.abort();\n }\n }\n handleComplete(results) {\n var {\n types,\n onFileCompleted\n } = this;\n // results is undefined for a succesful parse, but has meta data for an abort\n assertNotNull(types);\n if (results == null || !results.meta.aborted) {\n onFileCompleted(types.map(type =>\n // If the type is still unknown or a local time, just map it to a string.\n // Local times are not supported by the backend in DHC, and probably should have more context to parse safely anyway (such as a date or a time zone).\n // In these cases, we just map it to a string, and the user can use an `.update_view` later if they want to parse it into a different type.\n type === UNKNOWN || type === NewTableColumnTypes.LOCAL_TIME ? NewTableColumnTypes.STRING : type), this.rowCount);\n }\n }\n handleError(error) {\n var {\n onError\n } = this;\n onError(error);\n }\n handleNodeUpdate(metadata) {\n this.zipProgress = metadata.percent;\n }\n}\nexport default CsvTypeParser;\n//# sourceMappingURL=CsvTypeParser.js.map","var _CsvParser;\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport Papa from 'papaparse';\nimport Log from '@deephaven/log';\nimport { assertNotNull, DbNameValidator } from '@deephaven/utils';\nimport CsvTypeParser from \"./CsvTypeParser.js\";\nimport makeZipStreamHelper from \"./ZipStreamHelper.js\";\nvar log = Log.module('CsvParser');\n\n// This is based on jszip streaming ~15 KB chunks to papa parse\n// Want to consolidate to ~10 MB chunks\nvar ZIP_CONSOLIDATE_CHUNKS = 650;\n/**\n * Parser a CSV file in chunks and returns a table handle for each chunk.\n */\nclass CsvParser {\n static generateHeaderRecursive(n) {\n var header = '';\n var char = n;\n if (n >= 26) {\n header = header.concat(CsvParser.generateHeaderRecursive(Math.floor(n / 26) - 1));\n char = n % 26;\n }\n return header.concat(String.fromCharCode(65 + char));\n }\n constructor(_ref) {\n var {\n onFileCompleted,\n session,\n file,\n type,\n readHeaders = true,\n onProgress,\n onError,\n timeZone,\n isZip\n } = _ref;\n _defineProperty(this, \"onFileCompleted\", void 0);\n _defineProperty(this, \"session\", void 0);\n _defineProperty(this, \"file\", void 0);\n _defineProperty(this, \"isZip\", void 0);\n _defineProperty(this, \"type\", void 0);\n _defineProperty(this, \"readHeaders\", void 0);\n _defineProperty(this, \"timeZone\", void 0);\n _defineProperty(this, \"onProgress\", void 0);\n _defineProperty(this, \"onError\", void 0);\n _defineProperty(this, \"tables\", void 0);\n _defineProperty(this, \"headers\", void 0);\n _defineProperty(this, \"types\", void 0);\n _defineProperty(this, \"rowCount\", void 0);\n _defineProperty(this, \"rowsProcessed\", void 0);\n _defineProperty(this, \"chunks\", void 0);\n _defineProperty(this, \"totalChunks\", void 0);\n _defineProperty(this, \"isComplete\", void 0);\n _defineProperty(this, \"zipProgress\", void 0);\n _defineProperty(this, \"consolidatedChunks\", void 0);\n _defineProperty(this, \"numConsolidated\", void 0);\n _defineProperty(this, \"isCancelled\", void 0);\n _defineProperty(this, \"config\", void 0);\n this.onFileCompleted = onFileCompleted;\n this.session = session;\n this.file = file;\n this.isZip = isZip;\n this.type = type;\n this.readHeaders = readHeaders;\n this.timeZone = timeZone;\n this.onProgress = onProgress;\n this.onError = onError;\n this.tables = [];\n this.rowCount = 0;\n this.rowsProcessed = 0;\n this.chunks = 0;\n this.totalChunks = isZip ? 0 : Math.ceil(file.size / Papa.LocalChunkSize);\n this.isComplete = false;\n this.zipProgress = 0;\n this.numConsolidated = 0;\n this.isCancelled = false;\n this.handleChunk = this.handleChunk.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleComplete = this.handleComplete.bind(this);\n this.handleNodeUpdate = this.handleNodeUpdate.bind(this);\n this.handleCreateTable = this.handleCreateTable.bind(this);\n this.config = {\n delimiter: type.delimiter,\n newline: type.newline,\n escapeChar: type.escapeChar,\n dynamicTyping: false,\n error: this.handleError,\n skipEmptyLines: type.skipEmptyLines,\n chunk: this.handleChunk,\n complete: this.handleComplete,\n fastMode: false\n };\n }\n cancel() {\n this.isCancelled = true;\n }\n transpose(numColumns, array) {\n var numRows = array.length;\n var columns = new Array(numColumns).fill(null).map(() => new Array(numRows));\n for (var r = 0; r < numRows; r += 1) {\n var row = array[r];\n if (row.length < numColumns) {\n throw new Error(\"Insufficient columns. Expected \".concat(numColumns, \" but found \").concat(row.length, \"\\n\").concat(row));\n }\n for (var c = 0; c < numColumns; c += 1) {\n var value = this.type.shouldTrim ? array[r][c].trim() : array[r][c];\n columns[c][r] = this.nullCheck(value);\n }\n }\n return columns;\n }\n nullCheck(value) {\n return value === this.type.nullString ? '' : value;\n }\n parse() {\n var handleParseDone = (types, rowCount) => {\n this.types = types;\n this.rowCount = rowCount;\n if (this.file instanceof File || this.file instanceof Blob) {\n Papa.parse(this.file, this.config);\n } else {\n var zipStream = makeZipStreamHelper(this.file, this.handleNodeUpdate);\n // This is actually a stream, but papaparse TS doesn't like it\n Papa.parse(zipStream, this.config);\n // The stream needs to be manually resumed since jszip starts paused\n // Papaparse does not call resume and assumes the stream is already reading\n zipStream.resume();\n }\n };\n var typeParser = new CsvTypeParser(handleParseDone, this.file, this.readHeaders, this.config, this.type.nullString, this.onProgress, this.onError, this.totalChunks, this.isZip, this.type.shouldTrim);\n typeParser.parse();\n }\n handleChunk(result, parser) {\n var {\n readHeaders,\n onError,\n handleCreateTable,\n isZip,\n tables\n } = this;\n if (this.isCancelled) {\n log.debug2('CSV parser cancelled.');\n parser.abort();\n tables.forEach(t => t.close());\n return;\n }\n var {\n data\n } = result;\n if (!this.headers) {\n if (readHeaders) {\n this.headers = DbNameValidator.legalizeColumnNames(data[0]);\n data = data.slice(1);\n } else {\n this.headers = CsvParser.generateHeaders(data[0].length);\n }\n }\n var columns = [];\n try {\n columns = this.transpose(this.headers.length, data);\n if (isZip) {\n // Zip file chunks are tiny, so consolidate them to avoid create thousands of small tables\n this.consolidateChunks(columns, parser);\n } else {\n var index = this.chunks;\n this.chunks += 1;\n handleCreateTable(index, columns, parser);\n }\n } catch (e) {\n onError(e);\n }\n }\n consolidateChunks(columns, parser) {\n if (!this.consolidatedChunks) {\n this.consolidatedChunks = columns.slice();\n } else {\n for (var i = 0; i < columns.length; i += 1) {\n this.consolidatedChunks[i] = this.consolidatedChunks[i].concat(columns[i]);\n }\n }\n this.numConsolidated += 1;\n if (this.numConsolidated >= ZIP_CONSOLIDATE_CHUNKS || this.isComplete) {\n this.uploadConsolidatedChunks(parser);\n }\n }\n uploadConsolidatedChunks(parser) {\n var _this$consolidatedChu;\n var {\n handleCreateTable\n } = this;\n var index = this.chunks;\n this.chunks += 1;\n var toUpload = (_this$consolidatedChu = this.consolidatedChunks) === null || _this$consolidatedChu === void 0 ? void 0 : _this$consolidatedChu.slice();\n this.consolidatedChunks = undefined;\n this.numConsolidated = 0;\n assertNotNull(toUpload);\n handleCreateTable(index, toUpload, parser);\n }\n handleCreateTable(index, columns, parser) {\n var {\n session,\n tables,\n onFileCompleted,\n totalChunks,\n types,\n onProgress,\n onError\n } = this;\n if (parser) {\n parser.pause();\n }\n assertNotNull(this.headers);\n assertNotNull(types);\n this.rowsProcessed += columns[0].length;\n session.newTable(this.headers, types, columns, this.timeZone).then(table => {\n if (this.isCancelled) {\n log.debug2('CSV parser cancelled.');\n if (parser) {\n parser.abort();\n }\n tables.forEach(t => t.close());\n return;\n }\n if (parser) {\n parser.resume();\n }\n tables[index] = table;\n // This accounts for 50% of parsing plus 50% already done by the type parser\n var progress = 0;\n if (totalChunks > 0) {\n progress = Math.round(tables.length / totalChunks * 50) + 50;\n } else {\n // The zip file can be read entirely while in the middle of parsing\n // Since we know the number of rows from the type parsing, use that for progress\n progress = Math.round(this.rowsProcessed / this.rowCount * 50) + 50;\n }\n log.debug2(\"CSV parser progress \".concat(progress));\n onProgress(progress);\n if (this.isComplete && tables.length === this.chunks) {\n log.debug2('CSV parser complete.');\n onFileCompleted(tables);\n }\n }).catch(e => {\n if (!this.isComplete && parser) {\n parser.abort();\n }\n onError(e);\n });\n }\n handleComplete(results) {\n // results is undefined for a succesful parse, but has meta data for an abort\n if (results == null || results.meta.aborted == null) {\n this.isComplete = true;\n // Check if there are any consolidated chunks left over from a zip file\n if (this.consolidatedChunks) {\n this.uploadConsolidatedChunks(null);\n }\n }\n }\n handleError(error) {\n var {\n onError\n } = this;\n onError(error);\n }\n handleNodeUpdate(metadata) {\n this.zipProgress = metadata.percent;\n }\n}\n_CsvParser = CsvParser;\n// Generates column names A-Z, AA-AZ, BA-BZ, etc...\n_defineProperty(CsvParser, \"generateHeaders\", numColumns => {\n var headers = [];\n for (var i = 0; i < numColumns; i += 1) {\n headers.push(_CsvParser.generateHeaderRecursive(i));\n }\n return headers;\n});\nexport default CsvParser;\n//# sourceMappingURL=CsvParser.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass CsvFormats {\n static fromExtension(fileName) {\n if (fileName.endsWith('.csv')) {\n return 'DEFAULT_CSV';\n }\n if (fileName.endsWith('.tsv') || fileName.endsWith('.tab')) {\n return 'TSV';\n }\n if (fileName.endsWith('.psv')) {\n return 'PIPE_SV';\n }\n return 'AUTODETECT';\n }\n}\n_defineProperty(CsvFormats, \"DEFAULT_TYPE\", 'DEFAULT_CSV');\n_defineProperty(CsvFormats, \"AUTO\", 'AUTODETECT');\n_defineProperty(CsvFormats, \"TYPES\", Object.freeze({\n DEFAULT_CSV: {\n name: 'Default csv (trimmed)',\n delimiter: ',',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n TSV: {\n name: 'Tab seperated (tsv)',\n delimiter: '\\t',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n // From org.apache.commons.csv.CSVFormat#DEFAULT\n APACHE_COMMON_CSV: {\n name: 'Apache Common csv',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: null\n },\n // From org.apache.commons.csv.CSVFormat#EXCEL\n EXCEL_CSV: {\n name: 'Excel csv (strict)',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: null\n },\n // From org.apache.commons.csv.CSVFormat#MYSQL\n MY_SQL_CSV: {\n name: 'MySQL csv',\n delimiter: '\\t',\n newline: '\\n',\n escapeChar: '\\\\',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: '\\\\N'\n },\n // From org.apache.commons.csv.CSVFormat#RFC4180\n RFC4180_CSV: {\n name: 'RFC4180 csv',\n delimiter: ',',\n newline: '\\r\\n',\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: false,\n nullString: null\n },\n COLON_SV: {\n name: ': colon sv',\n delimiter: ':',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n SEMI_COLON_SV: {\n name: '; semi-colon sv',\n delimiter: ';',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n PIPE_SV: {\n name: '| pipe separated (psv)',\n delimiter: '|',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n SPACE_SV: {\n name: '\" \" space sv',\n delimiter: ' ',\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n },\n AUTODETECT: {\n name: 'autodetect',\n delimiter: undefined,\n // autodetect\n newline: undefined,\n // autodetect\n escapeChar: '\"',\n shouldTrim: true,\n skipEmptyLines: true,\n nullString: '(null)'\n }\n}));\nexport default CsvFormats;\n//# sourceMappingURL=CsvFormats.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { Button, Checkbox, Select } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { DbNameValidator } from '@deephaven/utils';\nimport CsvOverlay from \"./CsvOverlay.js\";\nimport CsvParser from \"./CsvParser.js\";\nimport CsvFormats from \"./CsvFormats.js\";\nimport \"./CsvInputBar.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('CsvInputBar');\nvar TYPE_OPTIONS = Object.entries(CsvFormats.TYPES).map(_ref => {\n var [key, value] = _ref;\n return /*#__PURE__*/_jsx(\"option\", {\n value: key,\n children: value.name\n }, key);\n});\n/**\n * Input controls for CSV upload.\n */\nclass CsvInputBar extends Component {\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputRef\", void 0);\n this.handleUpload = this.handleUpload.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTableName = this.handleTableName.bind(this);\n this.toggleFirstRowHeaders = this.toggleFirstRowHeaders.bind(this);\n this.handleProgress = this.handleProgress.bind(this);\n this.handleCancelInProgress = this.handleCancelInProgress.bind(this);\n this.handleQueryTypeChange = this.handleQueryTypeChange.bind(this);\n this.inputRef = /*#__PURE__*/React.createRef();\n this.state = {\n tableName: '',\n tableNameSet: false,\n isFirstRowHeaders: true,\n showProgress: false,\n progressValue: 0,\n type: CsvFormats.DEFAULT_TYPE,\n parser: null\n };\n }\n\n // React documentation says it is fine to update state inside an if statment\n /* eslint-disable react/no-did-update-set-state */\n componentDidUpdate(prevProps) {\n var {\n file,\n paste\n } = this.props;\n var {\n tableName,\n tableNameSet\n } = this.state;\n // Set the table name from a file\n if (!tableNameSet && file != null && !tableName) {\n var _this$inputRef$curren;\n var dotIndex = file.name.lastIndexOf('.');\n var fileTableName = DbNameValidator.makeVariableName(file.name.substring(0, dotIndex));\n this.setState({\n tableName: fileTableName,\n tableNameSet: true\n });\n (_this$inputRef$curren = this.inputRef.current) === null || _this$inputRef$curren === void 0 || _this$inputRef$curren.focus();\n } else if (file == null && prevProps.file != null || paste == null && prevProps.paste != null) {\n // The file or paste was unstaged\n this.setState({\n tableName: '',\n tableNameSet: false\n });\n }\n\n // Focus the name input field on paste\n if (paste != null && paste !== '' && !tableName && this.inputRef.current) {\n this.inputRef.current.focus();\n }\n\n // Determine parser type by file extension\n if (file != null && file !== prevProps.file) {\n this.setState({\n type: CsvFormats.fromExtension(file.name)\n });\n } else if (paste != null && paste !== '' && (prevProps.paste === undefined || prevProps.paste === '')) {\n this.setState({\n type: CsvFormats.AUTO\n });\n }\n }\n componentWillUnmount() {\n var {\n parser\n } = this.state;\n if (parser) {\n parser.cancel();\n }\n }\n handleCancel() {\n var {\n onClose\n } = this.props;\n onClose();\n }\n handleError(e) {\n var {\n onClose,\n onError\n } = this.props;\n log.error(e);\n onError(e);\n onClose();\n }\n handleTableName(event) {\n this.setState({\n tableName: event.target.value,\n tableNameSet: true\n });\n }\n toggleFirstRowHeaders() {\n var {\n isFirstRowHeaders\n } = this.state;\n this.setState({\n isFirstRowHeaders: !isFirstRowHeaders\n });\n }\n handleUpload(event) {\n event.stopPropagation();\n event.preventDefault();\n var {\n file,\n paste\n } = this.props;\n if (file != null) {\n if (file.name.endsWith('.zip')) {\n this.handleZipFile(file);\n } else {\n this.handleFile(file);\n }\n } else if (paste !== undefined && paste !== '') {\n this.handleFile(new Blob([paste], {\n type: 'text/plain'\n }));\n }\n }\n handleFile(file) {\n var isZip = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n log.info(\"Starting CSV parser for \".concat(file instanceof File ? file.name : 'pasted values', \" \").concat(isZip ? '' : file.size, \" bytes\"));\n var {\n session,\n timeZone,\n onInProgress\n } = this.props;\n var {\n tableName,\n isFirstRowHeaders,\n type\n } = this.state;\n var handleParseDone = tables => {\n // Do not bother merging just one table\n if (tables.length === 1) {\n session.bindTableToVariable(tables[0], tableName).then(() => this.openTable()).catch(e => this.handleError(e));\n } else {\n session.mergeTables(tables).then(table => {\n session.bindTableToVariable(table, tableName).then(() => this.openTable()).catch(e => this.handleError(e));\n tables.forEach(t => t.close());\n }).catch(e => this.handleError(e));\n }\n };\n var parser = new CsvParser({\n onFileCompleted: handleParseDone,\n session,\n file,\n type: CsvFormats.TYPES[type],\n readHeaders: isFirstRowHeaders,\n onProgress: this.handleProgress,\n onError: this.handleError,\n timeZone,\n isZip\n });\n parser.parse();\n this.setState({\n showProgress: true,\n parser\n });\n // Note that calling onClose will set in progress to false\n onInProgress(true);\n }\n handleZipFile(zipFile) {\n var {\n onUpdate,\n unzip\n } = this.props;\n if (unzip == null) {\n this.handleError(new Error('No support for zip files available.'));\n return;\n }\n unzip(zipFile).then(files => {\n var csvFound = false;\n // Find the first Csv file in the zip and use that\n for (var i = 0; i < files.length; i += 1) {\n var f = files[i];\n if (CsvOverlay.isValidExtension(f.name)) {\n onUpdate(\"Loading \".concat(f.name, \" as csv from \").concat(zipFile.name));\n csvFound = true;\n this.handleFile(f, true);\n break;\n }\n }\n if (!csvFound) {\n throw new Error(\"No csv file found in \".concat(zipFile.name));\n }\n }).catch(e => this.handleError(e));\n }\n handleProgress(progressValue) {\n var {\n showProgress\n } = this.state;\n if (showProgress) {\n this.setState({\n progressValue\n });\n }\n // Indicates to the caller that the upload has been cancelled\n return !showProgress;\n }\n\n // Cancels an in progress upload\n handleCancelInProgress() {\n var {\n onInProgress\n } = this.props;\n var {\n parser\n } = this.state;\n if (parser) {\n parser.cancel();\n }\n this.setState({\n showProgress: false,\n progressValue: 0\n });\n onInProgress(false);\n }\n openTable() {\n var {\n onOpenTable,\n onClose\n } = this.props;\n var {\n tableName\n } = this.state;\n onOpenTable(tableName);\n onClose();\n }\n handleQueryTypeChange(eventTargetValue) {\n this.setState({\n type: eventTargetValue\n });\n }\n render() {\n var {\n file,\n paste\n } = this.props;\n var {\n tableName,\n isFirstRowHeaders,\n showProgress,\n progressValue,\n type\n } = this.state;\n // A blank table name is invalid for pasted values\n var isNameInvalid = Boolean(paste) && !tableName;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"csv-input-bar\",\n children: [!showProgress && /*#__PURE__*/_jsxs(\"form\", {\n onSubmit: this.handleUpload,\n className: \"csv-input-bar-container form-inline\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"tableNameInput\",\n children: \"Table name\"\n }), /*#__PURE__*/_jsx(\"input\", {\n ref: this.inputRef,\n id: \"tableNameInput\",\n type: \"text\",\n className: classNames('form-control', {\n 'is-invalid': isNameInvalid\n }),\n value: tableName,\n onChange: this.handleTableName\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"form-group\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"formatSelect\",\n children: \"File format\"\n }), /*#__PURE__*/_jsx(Select, {\n id: \"formatSelect\",\n className: \"custom-select\",\n value: type,\n onChange: this.handleQueryTypeChange,\n children: TYPE_OPTIONS\n })]\n }), /*#__PURE__*/_jsx(Checkbox, {\n className: \"firstRowHeaders\",\n checked: isFirstRowHeaders,\n onChange: this.toggleFirstRowHeaders,\n children: \"First row is column headers\"\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"csv-input-buttons form-group\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: this.handleCancel,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n type: \"submit\",\n disabled: !(file !== null || paste !== undefined && paste !== '') || !tableName,\n children: \"Upload\"\n })]\n })]\n }), showProgress && /*#__PURE__*/_jsxs(\"div\", {\n className: \"csv-progress-container\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: \"Uploading Table\"\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"progress\",\n children: /*#__PURE__*/_jsx(\"div\", {\n className: \"progress-bar bg-primary\",\n style: {\n width: \"\".concat(progressValue, \"%\")\n },\n \"aria-valuenow\": progressValue,\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100\n })\n }), /*#__PURE__*/_jsxs(\"label\", {\n children: [progressValue, \"%\"]\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n onClick: this.handleCancelInProgress,\n children: \"Cancel\"\n })]\n })]\n });\n }\n}\n_defineProperty(CsvInputBar, \"defaultProps\", {\n file: null,\n paste: null,\n unzip: null\n});\nexport default CsvInputBar;\n//# sourceMappingURL=CsvInputBar.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport React, { useCallback, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { vsKebabVertical } from '@deephaven/icons';\nimport { Button, DropdownMenu, Tooltip } from '@deephaven/components';\nimport \"./ConsoleStatusBar.css\";\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar POPPER_OPTIONS = {\n placement: 'bottom-end'\n};\nfunction ConsoleStatusBar(_ref) {\n var {\n children,\n dh,\n session,\n overflowActions\n } = _ref;\n var [pendingCommandCount, setPendingCommandCount] = useState(0);\n var handleCommandStarted = useCallback(/*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator(function* (event) {\n setPendingCommandCount(count => count + 1);\n try {\n var {\n result\n } = event.detail;\n yield result;\n } catch (error) {\n // No-op, fall through\n }\n setPendingCommandCount(count => count - 1);\n });\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }(), []);\n useEffect(function startListening() {\n return session.addEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, handleCommandStarted);\n }, [dh, handleCommandStarted, session]);\n var statusIconClass = null;\n var tooltipText = null;\n if (pendingCommandCount > 0) {\n // Connected, Pending\n statusIconClass = 'console-status-icon-pending';\n tooltipText = 'Worker is busy';\n } else {\n // Connected, Idle\n statusIconClass = 'console-status-icon-idle';\n tooltipText = 'Worker is idle';\n }\n var hasActions = overflowActions != null && (!Array.isArray(overflowActions) || overflowActions.length > 0);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-pane-status-bar\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: classNames('console-status-icon', statusIconClass)\n }), /*#__PURE__*/_jsx(Tooltip, {\n children: tooltipText\n })]\n }), children, hasActions && /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: vsKebabVertical,\n tooltip: \"More Actions...\",\n \"aria-label\": \"More Actions...\"\n // no-op: click is handled in `DropdownMenu`\n ,\n onClick: EMPTY_FUNCTION,\n children: /*#__PURE__*/_jsx(DropdownMenu, {\n actions: overflowActions,\n popperOptions: POPPER_OPTIONS\n })\n })]\n });\n}\nexport default ConsoleStatusBar;\n//# sourceMappingURL=ConsoleStatusBar.js.map","import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, DropdownMenu, SearchInput } from '@deephaven/components';\nimport { vsGraph, vsTriangleDown } from '@deephaven/icons';\nimport { useDebouncedCallback } from '@deephaven/react-hooks';\nimport { EMPTY_FUNCTION } from '@deephaven/utils';\nimport { ObjectIcon } from \"./common/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar RESET_FILTER_DELAY = 5000;\nfunction ConsoleObjectsMenu(_ref) {\n var {\n openObject,\n objects\n } = _ref;\n var [filterText, setFilterText] = useState('');\n var searchRef = useRef(null);\n var resetFilter = useDebouncedCallback(() => {\n setFilterText('');\n }, RESET_FILTER_DELAY);\n var handleMenuOpen = useCallback(() => {\n var _searchRef$current;\n resetFilter.cancel();\n (_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 || _searchRef$current.select();\n }, [resetFilter]);\n var handleMenuClose = useCallback(() => {\n resetFilter();\n }, [resetFilter]);\n var actions = useMemo(() => {\n if (objects.length === 0) {\n return [];\n }\n var searchActions = {\n menuElement: /*#__PURE__*/_jsx(SearchInput, {\n value: filterText,\n onChange: e => {\n setFilterText(e.target.value);\n },\n className: \"console-menu\",\n ref: searchRef\n })\n };\n var filteredObjects = filterText ? objects.filter(_ref2 => {\n var {\n title\n } = _ref2;\n return title != null && title.toLowerCase().includes(filterText.toLowerCase());\n }) : objects;\n var objectActions = filteredObjects.map(object => ({\n title: object.title,\n action: () => {\n openObject(object);\n },\n icon: /*#__PURE__*/_jsx(ObjectIcon, {\n type: object.type\n })\n }));\n return [searchActions, ...objectActions];\n }, [objects, filterText, openObject]);\n return /*#__PURE__*/_jsx(Button, {\n \"aria-label\": \"Objects\",\n kind: \"ghost\",\n disabled: objects.length === 0\n // no-op: click is handled in `DropdownMenu`\n ,\n onClick: EMPTY_FUNCTION,\n tooltip: objects.length === 0 ? 'No objects available' : 'Objects',\n icon: /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-md fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n mask: vsGraph,\n icon: vsTriangleDown,\n transform: \"right-5 down-5\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsTriangleDown,\n transform: \"right-8 down-6\"\n })]\n }),\n children: /*#__PURE__*/_jsx(DropdownMenu, {\n actions: actions,\n onMenuOpened: handleMenuOpen,\n onMenuClosed: handleMenuClose,\n options: {\n initialKeyboardIndex: 1\n },\n popperOptions: {\n placement: 'bottom-end'\n }\n })\n });\n}\nexport default ConsoleObjectsMenu;\n//# sourceMappingURL=ConsoleObjectsMenu.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Console display for use in the Iris environment.\n */\nimport React, { PureComponent } from 'react';\nimport { ContextActions } from '@deephaven/components';\nimport { vsCheck } from '@deephaven/icons';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport Log from '@deephaven/log';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport ConsoleHistory from \"./console-history/ConsoleHistory.js\";\nimport SHORTCUTS from \"./ConsoleShortcuts.js\";\nimport LogLevel from \"./log/LogLevel.js\";\nimport ConsoleInput from \"./ConsoleInput.js\";\nimport CsvOverlay from \"./csv/CsvOverlay.js\";\nimport CsvInputBar from \"./csv/CsvInputBar.js\";\nimport \"./Console.css\";\nimport ConsoleStatusBar from \"./ConsoleStatusBar.js\";\nimport ConsoleObjectsMenu from \"./ConsoleObjectsMenu.js\";\nimport { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('Console');\nvar DEFAULT_SETTINGS = {\n isAutoLaunchPanelsEnabled: true,\n isPrintStdOutEnabled: true,\n isClosePanelsOnDisconnectEnabled: true\n};\nfunction defaultSupportsType() {\n return true;\n}\nfunction defaultIconForType(type) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/_jsx(_Fragment, {});\n}\nexport class Console extends PureComponent {\n /**\n * Check if the provided log level is an error type\n * @param logLevel The LogLevel being checked\n * @returns true if the log level is an error level log\n */\n static isErrorLevel(logLevel) {\n return logLevel === LogLevel.STDERR || logLevel === LogLevel.ERROR || logLevel === LogLevel.FATAL;\n }\n\n /**\n * Check if the provided log level is output level\n * @param logLevel The LogLevel being checked\n * @returns true if the log level should be output to the console\n */\n static isOutputLevel(logLevel) {\n // We want all errors to be output, in addition to STDOUT.\n // That way the user is more likely to see them.\n return logLevel === LogLevel.STDOUT || Console.isErrorLevel(logLevel);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelListener\", void 0);\n _defineProperty(this, \"consolePane\", void 0);\n _defineProperty(this, \"consoleInput\", void 0);\n _defineProperty(this, \"consoleHistoryScrollPane\", void 0);\n _defineProperty(this, \"consoleHistoryContent\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"queuedLogMessages\", void 0);\n _defineProperty(this, \"resizeObserver\", void 0);\n _defineProperty(this, \"processLogMessageQueue\", throttle(() => {\n this.setState(state => {\n log.debug2('processLogMessageQueue', this.queuedLogMessages.length, ' items');\n var {\n consoleHistory\n } = state;\n consoleHistory = consoleHistory.concat(this.queuedLogMessages);\n this.queuedLogMessages = [];\n return {\n consoleHistory\n };\n });\n }, Console.LOG_THROTTLE));\n _defineProperty(this, \"getObjects\", memoize(objectMap => Array.from(objectMap.values())));\n _defineProperty(this, \"getContextActions\", memoize(actions => [...actions, {\n action: this.handleClearShortcut,\n shortcut: SHORTCUTS.CONSOLE.CLEAR\n }, {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.CONSOLE.FOCUS_HISTORY\n }]));\n this.handleCommandResult = this.handleCommandResult.bind(this);\n this.handleCommandStarted = this.handleCommandStarted.bind(this);\n this.handleCommandSubmit = this.handleCommandSubmit.bind(this);\n this.handleClearShortcut = this.handleClearShortcut.bind(this);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleOverflowActions = this.handleOverflowActions.bind(this);\n this.handleScrollPaneScroll = this.handleScrollPaneScroll.bind(this);\n this.handleHistoryResize = this.handleHistoryResize.bind(this);\n this.handleToggleAutoLaunchPanels = this.handleToggleAutoLaunchPanels.bind(this);\n this.handleToggleClosePanelsOnDisconnect = this.handleToggleClosePanelsOnDisconnect.bind(this);\n this.handleTogglePrintStdout = this.handleTogglePrintStdout.bind(this);\n this.handleUploadCsv = this.handleUploadCsv.bind(this);\n this.handleHideCsv = this.handleHideCsv.bind(this);\n this.handleCsvFileCanceled = this.handleCsvFileCanceled.bind(this);\n this.handleCsvFileOpened = this.handleCsvFileOpened.bind(this);\n this.handleCsvPaste = this.handleCsvPaste.bind(this);\n this.handleDragEnter = this.handleDragEnter.bind(this);\n this.handleDragLeave = this.handleDragLeave.bind(this);\n this.handleClearDragError = this.handleClearDragError.bind(this);\n this.handleOpenCsvTable = this.handleOpenCsvTable.bind(this);\n this.handleCsvUpdate = this.handleCsvUpdate.bind(this);\n this.handleCsvError = this.handleCsvError.bind(this);\n this.handleCsvInProgress = this.handleCsvInProgress.bind(this);\n this.consolePane = /*#__PURE__*/React.createRef();\n this.consoleInput = /*#__PURE__*/React.createRef();\n this.consoleHistoryScrollPane = /*#__PURE__*/React.createRef();\n this.consoleHistoryContent = /*#__PURE__*/React.createRef();\n this.pending = new Pending();\n this.queuedLogMessages = [];\n this.resizeObserver = new window.ResizeObserver(this.handleHistoryResize);\n var {\n objectMap: _objectMap,\n settings\n } = this.props;\n this.state = _objectSpread(_objectSpread({\n // Need separate histories as console history has stdout/stderr output\n consoleHistory: [],\n // Height of the viewport of the console input and history\n consoleHeight: 0,\n isScrollDecorationShown: false,\n // Location of objects in the console history\n objectHistoryMap: new Map(),\n // The object definitions, name/type\n objectMap: new Map(_objectMap),\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false,\n isStuckToBottom: true\n }, DEFAULT_SETTINGS), settings);\n }\n componentDidMount() {\n this.initConsoleLogging();\n var {\n dh,\n session\n } = this.props;\n session.addEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, this.handleCommandStarted);\n this.updateDimensions();\n if (this.consoleHistoryScrollPane.current && this.consoleHistoryContent.current) {\n this.resizeObserver.observe(this.consoleHistoryScrollPane.current);\n this.resizeObserver.observe(this.consoleHistoryContent.current);\n }\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n props,\n state\n } = this;\n this.sendSettingsChange(prevState, state);\n if (props.objectMap !== prevProps.objectMap) {\n this.updateObjectMap();\n }\n if (state.isStuckToBottom && !this.isAtBottom()) {\n this.scrollConsoleHistoryToBottom();\n }\n }\n componentWillUnmount() {\n var {\n dh,\n session\n } = this.props;\n session.removeEventListener(dh.IdeSession.EVENT_COMMANDSTARTED, this.handleCommandStarted);\n this.pending.cancel();\n this.processLogMessageQueue.cancel();\n this.deinitConsoleLogging();\n this.resizeObserver.disconnect();\n }\n initConsoleLogging() {\n var {\n session\n } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n deinitConsoleLogging() {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n isAtBottom() {\n if (this.consoleHistoryScrollPane.current == null) {\n return false;\n }\n var {\n scrollHeight,\n clientHeight,\n scrollTop\n } = this.consoleHistoryScrollPane.current;\n return Math.abs(scrollHeight - clientHeight - scrollTop) <= 1;\n }\n handleClearShortcut(event) {\n var _this$consoleInput$cu;\n event.preventDefault();\n event.stopPropagation();\n (_this$consoleInput$cu = this.consoleInput.current) === null || _this$consoleInput$cu === void 0 || _this$consoleInput$cu.clear();\n }\n handleCommandStarted(event) {\n var {\n code,\n result\n } = event.detail;\n var wrappedResult = this.pending.add(result);\n var historyItem = {\n command: code,\n disabledObjects: [],\n startTime: Date.now(),\n cancelResult: () => {\n result.cancel();\n },\n wrappedResult\n };\n var {\n commandHistoryStorage,\n language,\n scope\n } = this.props;\n var workspaceItemPromise = commandHistoryStorage.addItem(language, scope, code, {\n command: code,\n startTime: new Date().toJSON()\n });\n workspaceItemPromise.catch(err => {\n log.debug('Error adding workspace item', err);\n });\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem)\n }), () => {\n this.scrollConsoleHistoryToBottom();\n });\n wrappedResult.then(resolved => {\n this.handleCommandResult(resolved, historyItem, workspaceItemPromise);\n }).catch(error => {\n this.handleCommandError(error, historyItem, workspaceItemPromise);\n });\n }\n handleCommandResult(result, historyItem, workspaceItemPromise) {\n var newHistoryItem = _objectSpread(_objectSpread({}, historyItem), {}, {\n wrappedResult: undefined,\n cancelResult: undefined,\n result: result !== null && result !== void 0 ? result : historyItem.result\n });\n this.setState(_ref => {\n var {\n consoleHistory\n } = _ref;\n var itemIndex = consoleHistory.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(\"historyItem not found in consoleHistory\");\n return null;\n }\n var newHistory = consoleHistory.concat();\n newHistory[itemIndex] = newHistoryItem;\n return {\n consoleHistory: newHistory\n };\n });\n if (!result) {\n return;\n }\n this.scrollConsoleHistoryToBottom();\n this.updateHistory(result, newHistoryItem);\n this.updateKnownObjects(newHistoryItem);\n this.updateWorkspaceHistoryItem({\n error: result.error\n }, workspaceItemPromise);\n this.closeRemovedItems(result.changes);\n this.openUpdatedItems(result.changes);\n }\n handleCommandError(error, historyItem, workspaceItemPromise) {\n if (PromiseUtils.isCanceled(error)) {\n log.debug('Called handleCommandError on a cancelled promise result');\n return;\n }\n this.updateWorkspaceHistoryItem({\n error: \"\".concat(error)\n }, workspaceItemPromise);\n this.setState(state => {\n var history = state.consoleHistory.concat();\n var index = history.lastIndexOf(historyItem);\n var newHistoryItem = _objectSpread({}, historyItem);\n newHistoryItem.wrappedResult = undefined;\n newHistoryItem.cancelResult = undefined;\n newHistoryItem.endTime = Date.now();\n newHistoryItem.result = {\n error\n };\n history[index] = newHistoryItem;\n return {\n consoleHistory: history\n };\n });\n }\n handleFocusHistory(event) {\n event.preventDefault();\n event.stopPropagation();\n var {\n focusCommandHistory\n } = this.props;\n focusCommandHistory();\n }\n handleLogMessage(message) {\n var {\n isPrintStdOutEnabled\n } = this.state;\n if (!isPrintStdOutEnabled) {\n return;\n }\n if (Console.isOutputLevel(message.logLevel)) {\n this.queueLogMessage(message.message, message.logLevel);\n }\n }\n queueLogMessage(message, logLevel) {\n var result = {};\n if (Console.isErrorLevel(logLevel)) {\n result.error = message;\n } else {\n result.message = message;\n }\n var historyItem = {\n command: undefined,\n result\n };\n this.queuedLogMessages.push(historyItem);\n this.processLogMessageQueue();\n }\n openUpdatedItems(changes) {\n log.debug('openUpdatedItems', changes);\n var {\n isAutoLaunchPanelsEnabled\n } = this.state;\n if (changes == null) {\n return;\n }\n var {\n openObject\n } = this.props;\n [...changes.created, ...changes.updated].forEach(object => openObject(object, isAutoLaunchPanelsEnabled && (object.title === undefined || !object.title.startsWith('_'))));\n }\n closeRemovedItems(changes) {\n if (changes == null || changes.removed == null || changes.removed.length === 0) {\n return;\n }\n var {\n closeObject\n } = this.props;\n var {\n removed\n } = changes;\n removed.forEach(object => closeObject(object));\n }\n updateHistory(result, historyItemParam) {\n var historyItem = historyItemParam;\n if (result == null || result.changes == null || historyItem == null) {\n return;\n }\n historyItem.endTime = Date.now();\n\n // Update history to re-render items as necessary\n this.setState(state => {\n var consoleHistory = state.consoleHistory.concat();\n return {\n consoleHistory\n };\n });\n }\n updateKnownObjects(historyItem) {\n var changes;\n if (historyItem.result) {\n changes = historyItem.result.changes;\n }\n if (!changes || (changes.created == null || changes.created.length === 0) && (changes.updated == null || changes.updated.length === 0) && (changes.removed == null || changes.removed.length === 0)) {\n log.debug2('updateKnownObjects no changes');\n return;\n }\n this.setState(state => {\n var _changes, _changes2, _changes3;\n var {\n consoleHistory\n } = state;\n var itemIndex = consoleHistory.lastIndexOf(historyItem);\n if (itemIndex < 0) {\n log.error(\"historyItem not found in state.consoleHistory\");\n return null;\n }\n var objectHistoryMap = new Map(state.objectHistoryMap);\n var objectMap = new Map(state.objectMap);\n var disableOldObject = function disableOldObject(object) {\n var isRemoved = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n title\n } = object;\n assertNotNull(title);\n var oldIndex = objectHistoryMap.get(title);\n // oldIndex can be -1 if a object is active but doesn't have a command in consoleHistory\n // this can happen after clearing the console using 'clear' or 'cls' command\n\n if (oldIndex != null && oldIndex >= 0) {\n var _consoleHistory$oldIn;\n // disable outdated object variable in the old consoleHistory item\n if (consoleHistory === state.consoleHistory) {\n // First item in the history being updated,\n consoleHistory = consoleHistory.concat();\n }\n var newHistoryItem = _objectSpread(_objectSpread({}, consoleHistory[oldIndex]), {}, {\n disabledObjects: [...((_consoleHistory$oldIn = consoleHistory[oldIndex].disabledObjects) !== null && _consoleHistory$oldIn !== void 0 ? _consoleHistory$oldIn : []), title]\n });\n consoleHistory[oldIndex] = newHistoryItem;\n }\n objectHistoryMap.set(title, itemIndex);\n if (isRemoved) {\n objectMap.delete(title);\n } else {\n objectMap.set(title, object);\n }\n };\n (_changes = changes) === null || _changes === void 0 || _changes.updated.forEach(object => disableOldObject(object));\n (_changes2 = changes) === null || _changes2 === void 0 || _changes2.removed.forEach(object => disableOldObject(object, true));\n\n // Created objects have to be processed after removed\n // in case the same object name is present in both removed and created\n (_changes3 = changes) === null || _changes3 === void 0 || _changes3.created.forEach(object => {\n var {\n title\n } = object;\n assertNotNull(title);\n objectHistoryMap.set(title, itemIndex);\n objectMap.set(title, object);\n });\n return {\n objectHistoryMap,\n objectMap,\n consoleHistory\n };\n });\n }\n updateObjectMap() {\n var {\n objectMap\n } = this.props;\n this.setState({\n objectMap\n });\n }\n\n /**\n * Updates an existing workspace CommandHistoryItem\n * @param result The result to store with the history item. Could be empty object for success\n * @param workspaceItemPromise The workspace data row promise for the workspace item to be updated\n */\n updateWorkspaceHistoryItem(result, workspaceItemPromise) {\n var promise = this.pending.add(workspaceItemPromise);\n var endTime = new Date().toJSON();\n promise.then(workspaceItem => {\n var updatedItem = _objectSpread(_objectSpread({}, workspaceItem), {}, {\n data: _objectSpread(_objectSpread({}, workspaceItem.data), {}, {\n endTime,\n result\n })\n });\n var {\n commandHistoryStorage,\n language\n } = this.props;\n commandHistoryStorage.updateItem(language, updatedItem).catch(err => {\n log.warn('Error updating command history storage', err);\n });\n }).catch(err => {\n log.debug('Error updating workspace history item', err);\n });\n }\n scrollConsoleHistoryToBottom() {\n var pane = this.consoleHistoryScrollPane.current;\n if (pane == null) {\n return;\n }\n window.requestAnimationFrame(() => {\n pane.scrollTo({\n top: pane.scrollHeight,\n behavior: 'instant'\n });\n });\n }\n handleScrollPaneScroll(event) {\n log.debug('handleScrollPaneScroll', event);\n var scrollPane = this.consoleHistoryScrollPane.current;\n assertNotNull(scrollPane);\n this.setState({\n isScrollDecorationShown: scrollPane.scrollTop > 0 && scrollPane.scrollHeight > scrollPane.clientHeight,\n isStuckToBottom: this.isAtBottom()\n });\n }\n handleHistoryResize(entries) {\n log.debug('handleHistoryResize', entries);\n var entry = entries[0];\n if (entry.contentRect.height > 0 && entry.contentRect.width > 0) {\n var {\n isStuckToBottom\n } = this.state;\n if (isStuckToBottom && !this.isAtBottom()) {\n this.scrollConsoleHistoryToBottom();\n }\n }\n }\n handleToggleAutoLaunchPanels() {\n this.setState(state => ({\n isAutoLaunchPanelsEnabled: !state.isAutoLaunchPanelsEnabled\n }));\n }\n handleToggleClosePanelsOnDisconnect() {\n this.setState(state => ({\n isClosePanelsOnDisconnectEnabled: !state.isClosePanelsOnDisconnectEnabled\n }));\n }\n handleTogglePrintStdout() {\n this.setState(state => ({\n isPrintStdOutEnabled: !state.isPrintStdOutEnabled\n }));\n }\n handleUploadCsv() {\n this.setState({\n showCsvOverlay: true,\n dragError: null,\n csvUploadInProgress: false\n });\n }\n handleHideCsv() {\n this.setState({\n showCsvOverlay: false,\n csvFile: null,\n csvPaste: null,\n dragError: null,\n csvUploadInProgress: false\n });\n }\n handleCsvFileCanceled() {\n this.setState({\n csvFile: null,\n csvPaste: null\n });\n }\n handleCsvFileOpened(file) {\n this.setState({\n csvFile: file,\n csvPaste: null\n });\n }\n handleCsvPaste(value) {\n this.setState({\n csvFile: null,\n csvPaste: value\n });\n }\n handleDragEnter(e) {\n if (e.dataTransfer == null || e.dataTransfer.items == null || e.dataTransfer.items.length === 0 || e.dataTransfer.items[0].kind === 'string') {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n showCsvOverlay: true\n });\n var {\n items\n } = e.dataTransfer;\n if (items.length > 1) {\n this.setState({\n dragError: CsvOverlay.MULTIPLE_FILE_ERROR\n });\n return;\n }\n var item = items[0];\n if (CsvOverlay.isValidDropItem(item)) {\n this.setState({\n dragError: null\n });\n } else {\n this.setState({\n dragError: CsvOverlay.FILE_TYPE_ERROR\n });\n }\n }\n handleDragLeave(e) {\n // DragLeave gets fired for every child element, so make sure we're actually leaving the drop zone\n if (e.currentTarget == null || e.currentTarget instanceof Element && e.relatedTarget instanceof Element && e.currentTarget.contains(e.relatedTarget)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n showCsvOverlay: false,\n dragError: null\n });\n }\n handleClearDragError() {\n this.setState({\n dragError: null\n });\n }\n handleOpenCsvTable(title) {\n var {\n dh,\n openObject,\n commandHistoryStorage,\n language,\n scope\n } = this.props;\n var {\n consoleHistory,\n objectMap\n } = this.state;\n var object = {\n name: title,\n title,\n type: dh.VariableType.TABLE\n };\n var isExistingObject = objectMap.has(title);\n var historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n disabledObjects: [],\n result: {\n changes: {\n created: [],\n updated: [],\n removed: [],\n [isExistingObject ? 'updated' : 'created']: [object]\n }\n }\n };\n var history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history\n });\n this.scrollConsoleHistoryToBottom();\n this.updateKnownObjects(historyItem);\n openObject({\n name: title,\n type: dh.VariableType.TABLE\n });\n commandHistoryStorage.addItem(language, scope, title, {\n command: title,\n startTime: new Date().toJSON(),\n endTime: new Date().toJSON()\n });\n }\n addConsoleHistoryMessage(message, error) {\n var {\n consoleHistory\n } = this.state;\n var historyItem = {\n startTime: Date.now(),\n endTime: Date.now(),\n result: {\n message,\n error\n }\n };\n var history = consoleHistory.concat(historyItem);\n this.setState({\n consoleHistory: history\n });\n }\n handleCsvUpdate(message) {\n this.addConsoleHistoryMessage(message);\n }\n handleCsvError(error) {\n this.addConsoleHistoryMessage(undefined, error != null ? \"\".concat(error) : undefined);\n }\n handleCsvInProgress(csvUploadInProgress) {\n this.setState({\n csvUploadInProgress\n });\n }\n handleOverflowActions() {\n var {\n isAutoLaunchPanelsEnabled,\n isClosePanelsOnDisconnectEnabled,\n isPrintStdOutEnabled\n } = this.state;\n var {\n actions\n } = this.props;\n return [...actions, {\n title: 'Print Stdout',\n action: this.handleTogglePrintStdout,\n group: ContextActions.groups.high,\n icon: isPrintStdOutEnabled ? vsCheck : undefined,\n order: 10\n }, {\n title: 'Auto Launch Panels',\n action: this.handleToggleAutoLaunchPanels,\n group: ContextActions.groups.high,\n icon: isAutoLaunchPanelsEnabled ? vsCheck : undefined,\n order: 20\n }, {\n title: 'Close Panels on Disconnect',\n action: this.handleToggleClosePanelsOnDisconnect,\n group: ContextActions.groups.high,\n icon: isClosePanelsOnDisconnectEnabled ? vsCheck : undefined,\n order: 30\n }, {\n title: 'Upload Table from File',\n action: this.handleUploadCsv,\n group: ContextActions.groups.high + 10,\n order: 40\n }];\n }\n handleCommandSubmit(command) {\n if (command === 'clear' || command === 'cls') {\n this.clearConsoleHistory();\n } else if (command.length > 0) {\n // Result is handled in this.handleCommandStarted\n var {\n session\n } = this.props;\n session.runCode(command).catch(error => {\n log.error('There was an error initiating the command', error);\n });\n } else {\n // Empty command, just pump a blank line out to history\n var historyItem = {\n command: ' ',\n result: {},\n startTime: Date.now(),\n endTime: Date.now()\n };\n this.scrollConsoleHistoryToBottom();\n this.setState(state => ({\n consoleHistory: state.consoleHistory.concat(historyItem)\n }));\n }\n }\n clearConsoleHistory() {\n this.pending.cancel();\n this.setState(state => {\n // Replace all values with -1 to indicate that table references are still active\n // but don't have corresponding command indexes in consoleHistory\n var objectHistoryMap = new Map([...state.objectHistoryMap.keys()].map(name => [name, -1]));\n return {\n consoleHistory: [],\n objectHistoryMap\n };\n });\n }\n addCommand(command) {\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!this.consoleInput.current) {\n return;\n }\n this.consoleInput.current.setConsoleText(command, focus, execute);\n if (focus) {\n this.scrollConsoleHistoryToBottom();\n }\n }\n focus() {\n var _this$consoleInput$cu2;\n (_this$consoleInput$cu2 = this.consoleInput.current) === null || _this$consoleInput$cu2 === void 0 || _this$consoleInput$cu2.focus();\n }\n sendSettingsChange(prevState, state) {\n var checkIfChanged = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var keys = Object.keys(DEFAULT_SETTINGS);\n var settings = {};\n var hasChanges = false;\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var {\n [key]: setting\n } = state;\n var {\n [key]: prevSetting\n } = prevState;\n if (setting !== prevSetting) {\n hasChanges = true;\n }\n settings[key] = setting;\n }\n if (checkIfChanged && !hasChanges) {\n return;\n }\n var {\n onSettingsChange\n } = this.props;\n onSettingsChange(settings);\n }\n updateDimensions() {\n if (this.consolePane.current) {\n this.setState({\n consoleHeight: this.consolePane.current.clientHeight\n });\n }\n if (this.consoleInput.current) {\n this.consoleInput.current.updateDimensions();\n }\n }\n render() {\n var {\n actions,\n dh,\n historyChildren,\n language,\n statusBarChildren,\n openObject,\n session,\n scope,\n commandHistoryStorage,\n timeZone,\n disabled,\n unzip,\n supportsType,\n iconForType,\n showObjectsMenu\n } = this.props;\n var {\n consoleHeight,\n consoleHistory,\n isScrollDecorationShown,\n objectMap,\n showCsvOverlay,\n csvFile,\n csvPaste,\n dragError,\n csvUploadInProgress\n } = this.state;\n var consoleMenuObjects = this.getObjects(objectMap);\n var inputMaxHeight = Math.round(consoleHeight * 0.7);\n var contextActions = this.getContextActions(actions);\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"presentation\",\n className: classNames('iris-console', 'h-100', 'w-100', {\n disabled\n }),\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"console-pane\",\n ref: this.consolePane,\n children: [/*#__PURE__*/_jsxs(ConsoleStatusBar, {\n dh: dh,\n session: session,\n overflowActions: this.handleOverflowActions,\n children: [statusBarChildren, showObjectsMenu === true && /*#__PURE__*/_jsx(ConsoleObjectsMenu, {\n openObject: openObject,\n objects: consoleMenuObjects\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"console-csv-container\",\n onDragOver: CsvOverlay.handleDragOver,\n onDragEnter: this.handleDragEnter,\n onDragLeave: this.handleDragLeave,\n children: [showCsvOverlay && /*#__PURE__*/_jsx(CsvOverlay, {\n onCancel: this.handleCsvFileCanceled,\n onFileOpened: this.handleCsvFileOpened,\n onPaste: this.handleCsvPaste,\n clearDragError: this.handleClearDragError,\n dragError: dragError,\n onError: this.handleCsvError,\n uploadInProgress: csvUploadInProgress,\n allowZip: unzip != null\n }), /*#__PURE__*/_jsxs(\"div\", {\n role: \"presentation\",\n className: classNames('scroll-pane no-scroll-x', {\n 'scroll-decoration': isScrollDecorationShown\n }),\n onScroll: this.handleScrollPaneScroll,\n ref: this.consoleHistoryScrollPane,\n children: [/*#__PURE__*/_jsx(ConsoleHistory, {\n items: consoleHistory,\n openObject: openObject,\n language: language,\n disabled: disabled,\n supportsType: supportsType,\n iconForType: iconForType,\n ref: this.consoleHistoryContent\n }), historyChildren]\n })]\n }), !showCsvOverlay && /*#__PURE__*/_jsx(ConsoleInput, {\n ref: this.consoleInput,\n session: session,\n language: language,\n scope: scope,\n onSubmit: this.handleCommandSubmit,\n maxHeight: inputMaxHeight,\n commandHistoryStorage: commandHistoryStorage\n }), showCsvOverlay && /*#__PURE__*/_jsx(CsvInputBar, {\n session: session,\n onOpenTable: this.handleOpenCsvTable,\n onClose: this.handleHideCsv,\n onUpdate: this.handleCsvUpdate,\n onError: this.handleCsvError,\n file: csvFile !== null && csvFile !== void 0 ? csvFile : undefined,\n paste: csvPaste !== null && csvPaste !== void 0 ? csvPaste : undefined,\n onInProgress: this.handleCsvInProgress,\n timeZone: timeZone,\n unzip: unzip\n })]\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions,\n ignoreClassNames: [ConsoleInput.INPUT_CLASS_NAME]\n })]\n });\n }\n}\n_defineProperty(Console, \"defaultProps\", {\n statusBarChildren: null,\n settings: {},\n onSettingsChange: () => undefined,\n scope: null,\n actions: [],\n historyChildren: null,\n timeZone: 'America/New_York',\n objectMap: new Map(),\n disabled: false,\n unzip: null,\n supportsType: defaultSupportsType,\n iconForType: defaultIconForType,\n showObjectsMenu: true\n});\n_defineProperty(Console, \"LOG_THROTTLE\", 500);\nexport default Console;\n//# sourceMappingURL=Console.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport debounce from 'lodash.debounce';\nimport memoize from 'memoizee';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { TimeUtils } from '@deephaven/utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport Code from \"../common/Code.js\";\nimport \"./CommandHistoryItemTooltip.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar LOAD_DATA_DEBOUNCE = 250;\nvar MAX_NUMBER_OF_LINES = 2500;\nexport class CommandHistoryItemTooltip extends Component {\n static getTimeString(startTime, endTime) {\n if (startTime == null || endTime === '' || endTime === 0) {\n return null;\n }\n var deltaTime = Math.round((new Date(endTime).valueOf() - new Date(startTime).valueOf()) / 1000);\n if (deltaTime < 1) return '<1s';\n return TimeUtils.formatElapsedTime(deltaTime);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"timer\", void 0);\n _defineProperty(this, \"cleanup\", void 0);\n _defineProperty(this, \"loadData\", debounce(() => {\n var {\n commandHistoryStorage,\n item,\n language\n } = this.props;\n var {\n id\n } = item;\n this.cleanup = commandHistoryStorage.listenItem(language, id, this.handleUpdate, this.handleError);\n }, LOAD_DATA_DEBOUNCE));\n _defineProperty(this, \"getPreviewText\", memoize(name => name.split('\\n', MAX_NUMBER_OF_LINES).join('\\n'), {\n max: 1\n }));\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleTimeout = this.handleTimeout.bind(this);\n this.state = {\n currentTime: Date.now()\n };\n }\n componentDidMount() {\n this.loadData();\n }\n componentDidUpdate(prevProps, prevState) {\n var _prevState$data;\n var {\n data\n } = this.state;\n if (this.timer == null && !(data !== null && data !== void 0 && data.result) && Boolean(data === null || data === void 0 ? void 0 : data.startTime) && !(data == null || data.endTime === undefined)) {\n this.startTimer();\n } else if (data !== null && data !== void 0 && data.result && !((_prevState$data = prevState.data) !== null && _prevState$data !== void 0 && _prevState$data.result) || Boolean(data === null || data === void 0 ? void 0 : data.endTime) && !(prevState.data == null || prevState.data.endTime === undefined)) {\n // Command complete\n this.stopTimer();\n }\n }\n componentWillUnmount() {\n this.loadData.cancel();\n if (this.cleanup != null) {\n this.cleanup();\n }\n this.stopTimer();\n }\n startTimer() {\n this.stopTimer();\n this.timer = window.setInterval(this.handleTimeout, 1000);\n }\n stopTimer() {\n if (this.timer != null) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n updateTime() {\n this.setState({\n currentTime: Date.now()\n });\n }\n handleError(error) {\n this.setState({\n error: \"\".concat(error)\n });\n }\n handleUpdate(item) {\n var {\n data\n } = item !== null && item !== void 0 ? item : {};\n this.setState({\n data\n });\n var {\n onUpdate\n } = this.props;\n onUpdate === null || onUpdate === void 0 || onUpdate(data);\n }\n handleTimeout() {\n this.updateTime();\n }\n render() {\n var _result$error;\n var {\n item: {\n name\n },\n language\n } = this.props;\n var {\n currentTime,\n data,\n error\n } = this.state;\n var {\n result,\n startTime,\n endTime\n } = data !== null && data !== void 0 ? data : {};\n var errorMessage = (_result$error = result === null || result === void 0 ? void 0 : result.error) !== null && _result$error !== void 0 ? _result$error : error;\n var timeString = CommandHistoryItemTooltip.getTimeString(startTime, endTime !== null && endTime !== void 0 ? endTime : currentTime);\n\n // colorizing in monaco is mostly a function of the number of lines,\n // it gets real slow after a few thousand lines. Truncate the tooltip\n // to avoid UI locks. The full command is still inserted.\n var previewText = this.getPreviewText(name);\n var hasTimeString = Boolean(timeString);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"command-history-item-tooltip\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"scroll-container\",\n children: [/*#__PURE__*/_jsx(Code, {\n language: language,\n children: previewText\n }), previewText.length < name.length && /*#__PURE__*/_jsx(\"p\", {\n children: \"Preview Truncated...\"\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"result-info\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex justify-content-between\",\n children: [Boolean(errorMessage) && /*#__PURE__*/_jsxs(\"div\", {\n className: \"text-danger mr-1\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsWarning\n }), \" Executed with errors\"]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"time-wrapper\",\n children: [\"Elapsed time:\", ' ', hasTimeString ? /*#__PURE__*/_jsx(\"span\", {\n className: \"time-string\",\n children: timeString\n }) : /*#__PURE__*/_jsx(LoadingSpinner, {\n className: \"loading-spinner-vertical-align\"\n })]\n })]\n }), Boolean(errorMessage) && /*#__PURE__*/_jsx(\"div\", {\n className: \"error-message\",\n children: errorMessage\n })]\n })]\n });\n }\n}\n_defineProperty(CommandHistoryItemTooltip, \"defaultProps\", {\n onUpdate: () => undefined\n});\nexport default CommandHistoryItemTooltip;\n//# sourceMappingURL=CommandHistoryItemTooltip.js.map","import React, { useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport \"./CommandHistoryItem.css\";\nimport CommandHistoryItemTooltip from \"./CommandHistoryItemTooltip.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar MAX_TRUNCATE_LENGTH = 512;\nfunction CommandHistoryItem(_ref) {\n var {\n item,\n language,\n isSelected = false,\n commandHistoryStorage\n } = _ref;\n var previewText = item.name.substring(0, MAX_TRUNCATE_LENGTH);\n var tooltip = useRef(null);\n var handleUpdate = useCallback(() => {\n var _tooltip$current;\n (_tooltip$current = tooltip.current) === null || _tooltip$current === void 0 || _tooltip$current.update();\n }, [tooltip]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('command-history-item', {\n selected: isSelected\n }),\n children: [previewText, /*#__PURE__*/_jsx(Tooltip, {\n ref: tooltip,\n interactive: true,\n options: {\n placement: 'left',\n modifiers: {\n preventOverflow: {\n enabled: true,\n boundariesElement: 'viewport',\n order: 825 // modify order so boundary is enforced at end of popper calcs\n }\n }\n },\n popperClassName: \"command-history-item-popper\",\n children: /*#__PURE__*/_jsx(CommandHistoryItemTooltip, {\n item: item,\n language: language,\n onUpdate: handleUpdate,\n commandHistoryStorage: commandHistoryStorage\n })\n })]\n });\n}\nexport default CommandHistoryItem;\n//# sourceMappingURL=CommandHistoryItem.js.map","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsArrowLeft, vsCircleLargeFilled } from '@deephaven/icons';\nimport \"./CommandHistoryActions.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nclass CommandHistoryActions extends Component {\n static itemKey(i, item) {\n return \"\".concat(item.title);\n }\n static renderContent(item) {\n if (item.selectionRequired !== undefined && item.selectionRequired) {\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"fa-md fa-layers\",\n children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsCircleLargeFilled,\n mask: item.icon,\n transform: \"right-5 down-5 shrink-4\"\n }), /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsArrowLeft,\n transform: \"shrink-3 right-7 down-6\"\n })]\n });\n }\n return /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: item.icon\n });\n }\n render() {\n var {\n actions,\n hasSelection\n } = this.props;\n return /*#__PURE__*/_jsx(\"div\", {\n className: \"command-history-actions\",\n children: actions.map((item, index) => /*#__PURE__*/_jsx(Button, {\n kind: \"inline\",\n className: classNames(item.className),\n onClick: item.action,\n tooltip: item.description,\n disabled: item.selectionRequired !== undefined && item.selectionRequired && !hasSelection,\n icon: CommandHistoryActions.renderContent(item)\n }, CommandHistoryActions.itemKey(index, item)))\n });\n }\n}\nexport default CommandHistoryActions;\n//# sourceMappingURL=CommandHistoryActions.js.map","import { useEffect, useMemo } from 'react';\nimport throttle from 'lodash.throttle';\nimport Log from '@deephaven/log';\nvar UPDATE_DELAY = 150;\nvar ROW_BUFFER_PAGES = 3;\nvar log = Log.module('CommandHistoryViewportUpdater');\nfunction CommandHistoryViewportUpdater(_ref) {\n var {\n table,\n columns,\n top = 0,\n bottom = 0,\n search,\n isReversed = false,\n onUpdate\n } = _ref;\n var throttledUpdateViewport = useMemo(() => throttle(viewport => {\n var viewHeight = viewport.bottom - viewport.top;\n var bufferedTop = Math.max(0, viewport.top - viewHeight * ROW_BUFFER_PAGES);\n var bufferedBottom = viewport.bottom + viewHeight * ROW_BUFFER_PAGES;\n table.setViewport({\n top: bufferedTop,\n bottom: bufferedBottom,\n columns: viewport.columns\n });\n }, UPDATE_DELAY), [table]);\n useEffect(function updateTableAndReturnCleanup() {\n var cleanup = table.onUpdate(viewportData => {\n var _viewportData$items, _viewportData$offset;\n onUpdate({\n items: (_viewportData$items = viewportData.items) !== null && _viewportData$items !== void 0 ? _viewportData$items : [],\n offset: (_viewportData$offset = viewportData.offset) !== null && _viewportData$offset !== void 0 ? _viewportData$offset : 0\n });\n });\n return () => {\n log.debug('onUpdate cleanup');\n cleanup();\n };\n }, [table, onUpdate]);\n useEffect(function setSearchText() {\n table.setSearch(search !== null && search !== void 0 ? search : '');\n }, [table, search]);\n useEffect(function updateViewport() {\n throttledUpdateViewport({\n top,\n bottom,\n columns\n });\n }, [throttledUpdateViewport, top, bottom, columns, search, isReversed]);\n useEffect(() => () => {\n log.debug2('Cancel throttledUpdateViewport');\n throttledUpdateViewport.cancel();\n }, [throttledUpdateViewport]);\n return null;\n}\nexport default CommandHistoryViewportUpdater;\n//# sourceMappingURL=CommandHistoryViewportUpdater.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport debounce from 'lodash.debounce';\nimport { ContextActions, ItemList, SearchInput, GLOBAL_SHORTCUTS } from '@deephaven/components';\nimport { vsFileCode, vsFiles, vsNewFile, vsPlay, vsTerminal } from '@deephaven/icons';\nimport { copyToClipboard, Pending } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport CommandHistoryItem from \"./CommandHistoryItem.js\";\nimport CommandHistoryActions from \"./CommandHistoryActions.js\";\nimport ConsoleConstants from \"../common/ConsoleConstants.js\";\nimport \"./CommandHistory.css\";\nimport CommandHistoryViewportUpdater from \"./CommandHistoryViewportUpdater.js\";\nimport SHORTCUTS from \"../ConsoleShortcuts.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('CommandHistory');\nclass CommandHistory extends Component {\n static getCommandsFromViewport(items, offset, sortedRanges) {\n var commands = [];\n for (var i = 0; i < sortedRanges.length; i += 1) {\n var range = sortedRanges[i];\n for (var j = range[0]; j <= range[1]; j += 1) {\n if (j >= offset && j < offset + items.length) {\n var {\n name\n } = items[j - offset];\n commands.push(name);\n }\n }\n }\n return commands;\n }\n static getCommandsFromSnapshot(table, sortedRanges) {\n return _asyncToGenerator(function* () {\n var items = yield table.getSnapshot(sortedRanges);\n return [...items.values()].map(item => item.name);\n })();\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"itemActions\", void 0);\n _defineProperty(this, \"historyActions\", void 0);\n _defineProperty(this, \"pending\", void 0);\n _defineProperty(this, \"searchInputRef\", void 0);\n _defineProperty(this, \"itemListRef\", void 0);\n _defineProperty(this, \"debouncedSearchChange\", debounce(() => {\n this.setState(_ref => {\n var {\n searchText\n } = _ref;\n return {\n debouncedSearchText: searchText,\n // clear selected range, as old selection could be filtered from list\n selectedRanges: []\n };\n });\n }, CommandHistory.SET_SEARCH_DEBOUNCE_MS));\n this.copySelectedCommands = this.copySelectedCommands.bind(this);\n this.createNotebook = this.createNotebook.bind(this);\n this.sendToConsole = this.sendToConsole.bind(this);\n this.renderItem = this.renderItem.bind(this);\n this.runInConsole = this.runInConsole.bind(this);\n this.sendToNotebook = this.sendToNotebook.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleViewportUpdate = this.handleViewportUpdate.bind(this);\n this.itemActions = [{\n title: 'Copy Selection',\n description: 'Copy selected commands to clipboard',\n icon: vsFiles,\n shortcut: GLOBAL_SHORTCUTS.COPY,\n action: this.copySelectedCommands,\n group: ContextActions.groups.edit\n }, {\n title: 'Send to Console',\n description: 'Open selected commands in the console',\n icon: vsTerminal,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_CONSOLE,\n action: this.sendToConsole,\n group: CommandHistory.menuGroups.send,\n order: 10\n }, {\n title: 'Run in Console',\n description: 'Run selected commands in the console',\n icon: vsPlay,\n shortcut: SHORTCUTS.COMMAND_HISTORY.RUN,\n action: this.runInConsole,\n group: CommandHistory.menuGroups.send,\n order: 10\n }, {\n title: 'Send to Active Notebook',\n description: 'Open selected commands in a notebook',\n icon: vsFileCode,\n shortcut: SHORTCUTS.COMMAND_HISTORY.SEND_TO_NOTEBOOK,\n action: this.sendToNotebook,\n group: CommandHistory.menuGroups.send,\n order: 20\n }, {\n title: 'Send to New Notebook',\n description: 'Open selected commands in a new notebook',\n icon: vsNewFile,\n action: this.createNotebook,\n group: CommandHistory.menuGroups.send,\n order: 30\n }];\n this.historyActions = [{\n title: 'Send to Console',\n icon: vsTerminal,\n selectionRequired: true,\n description: 'Open selected commands in the console',\n action: this.sendToConsole\n }, {\n title: 'Send to Notebook',\n icon: vsFileCode,\n selectionRequired: true,\n description: 'Open selected commands in a notebook',\n action: this.sendToNotebook\n }];\n this.pending = new Pending();\n this.searchInputRef = /*#__PURE__*/React.createRef();\n this.itemListRef = /*#__PURE__*/React.createRef();\n var {\n table\n } = props;\n this.state = {\n actions: [],\n historyActions: this.historyActions,\n top: 0,\n bottom: 0,\n itemCount: table.size,\n items: [],\n offset: 0,\n selectedRanges: [],\n searchText: '',\n debouncedSearchText: ''\n };\n }\n componentWillUnmount() {\n this.debouncedSearchChange.cancel();\n this.pending.cancel();\n }\n /**\n * Retrieves the selected commands as an array.\n * If they're not within the current viewport, will fetch them from the table\n * @returns Array of selected commands\n */\n getSelectedCommands() {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n items,\n offset,\n selectedRanges\n } = _this.state;\n var ranges = selectedRanges.slice().sort((a, b) => a[0] - b[0]);\n if (ranges.length === 0) {\n return [];\n }\n if (ranges[0][0] >= offset && ranges[ranges.length - 1][1] < offset + items.length) {\n // All ranges are in the current viewport, just copy the data we've already got\n return CommandHistory.getCommandsFromViewport(items, offset, ranges);\n }\n var {\n table\n } = _this.props;\n return _this.pending.add(CommandHistory.getCommandsFromSnapshot(table, ranges));\n })();\n }\n\n /**\n * Retrieves the text of all the currently selected commands, joined by a new line char\n * @returns The commands joined by \\n char\n */\n getSelectedCommandText() {\n return this.getSelectedCommands().then(commands => commands.join('\\n'));\n }\n updateActions() {\n this.setState(state => {\n var {\n selectedRanges\n } = state;\n var selectedRowCount = selectedRanges.reduce((count, range) => count + range[1] - range[0] + 1, 0);\n if (selectedRowCount > 0 && selectedRowCount < CommandHistory.MAX_SELECTION_COUNT) {\n log.debug('Updating actions', this.itemActions);\n return {\n actions: this.itemActions\n };\n }\n log.debug('Disabling actions', selectedRowCount);\n return {\n actions: []\n };\n });\n }\n copySelectedCommands() {\n this.getSelectedCommandText().then(copyToClipboard).catch(log.error);\n }\n createNotebook() {\n this.getSelectedCommandText().then(commandText => {\n var {\n language,\n sendToNotebook\n } = this.props;\n sendToNotebook({\n value: commandText,\n language\n }, true);\n }).catch(log.error);\n }\n sendToNotebook() {\n this.getSelectedCommandText().then(commandText => {\n var {\n language,\n sendToNotebook\n } = this.props;\n sendToNotebook({\n value: commandText,\n language\n });\n }).catch(log.error);\n }\n sendToConsole() {\n var {\n sendToConsole\n } = this.props;\n this.getSelectedCommandText().then(sendToConsole).catch(log.error);\n }\n runInConsole() {\n this.getSelectedCommandText().then(commandText => {\n var {\n sendToConsole\n } = this.props;\n sendToConsole(commandText, true, true);\n }).catch(log.error);\n }\n handleSelect(index) {\n var {\n sendToConsole\n } = this.props;\n var {\n items,\n offset\n } = this.state;\n if (index < offset || index >= offset + items.length) {\n log.error('Invalid index!', index);\n return;\n }\n var {\n name\n } = items[index - offset];\n sendToConsole(name);\n }\n handleSelectionChange(selectedRanges) {\n this.setState({\n selectedRanges\n });\n this.updateActions();\n }\n handleViewportChange(top, bottom) {\n this.setState({\n top,\n bottom\n });\n }\n handleSearchChange(e) {\n this.setState({\n searchText: e.target.value\n });\n this.debouncedSearchChange();\n }\n handleViewportUpdate(_ref2) {\n var {\n items,\n offset\n } = _ref2;\n var {\n table\n } = this.props;\n var itemCount = table.size;\n this.setState({\n items,\n itemCount,\n offset\n });\n }\n renderItem(_ref3) {\n var {\n item,\n itemIndex,\n isSelected\n } = _ref3;\n var {\n language,\n commandHistoryStorage\n } = this.props;\n return /*#__PURE__*/_jsx(CommandHistoryItem, {\n isSelected: isSelected,\n item: item,\n language: language,\n commandHistoryStorage: commandHistoryStorage\n });\n }\n focus() {\n if (this.searchInputRef.current) {\n this.searchInputRef.current.focus();\n }\n }\n restoreScrollPosition() {\n var _this$itemListRef$cur;\n (_this$itemListRef$cur = this.itemListRef.current) === null || _this$itemListRef$cur === void 0 || _this$itemListRef$cur.restoreScrollPosition();\n }\n render() {\n var _ConsoleConstants$LAN;\n var {\n language,\n table\n } = this.props;\n var {\n actions,\n historyActions,\n searchText,\n debouncedSearchText,\n top,\n bottom,\n items,\n itemCount,\n offset,\n selectedRanges\n } = this.state;\n var languageDisplayString = (_ConsoleConstants$LAN = ConsoleConstants.LANGUAGE_MAP.get(language)) !== null && _ConsoleConstants$LAN !== void 0 ? _ConsoleConstants$LAN : '';\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"command-history\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"command-history-search-bar\",\n children: [/*#__PURE__*/_jsx(SearchInput, {\n ref: this.searchInputRef,\n value: searchText,\n placeholder: \"\".concat(languageDisplayString, \" Command History\"),\n onChange: this.handleSearchChange\n }), /*#__PURE__*/_jsx(CommandHistoryActions, {\n actions: historyActions,\n hasSelection: selectedRanges.length > 0\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"command-history-list\",\n children: [/*#__PURE__*/_jsx(ItemList, {\n ref: this.itemListRef,\n itemCount: itemCount,\n items: items,\n offset: offset,\n selectedRanges: selectedRanges,\n onSelect: this.handleSelect,\n onSelectionChange: this.handleSelectionChange,\n onViewportChange: this.handleViewportChange,\n renderItem: this.renderItem,\n rowHeight: CommandHistory.ITEM_HEIGHT,\n isDoubleClickSelect: true,\n isMultiSelect: true,\n isStickyBottom: true\n }), /*#__PURE__*/_jsx(CommandHistoryViewportUpdater, {\n table: table,\n top: top,\n bottom: bottom,\n search: debouncedSearchText,\n onUpdate: this.handleViewportUpdate\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: actions\n })]\n })]\n });\n }\n}\n_defineProperty(CommandHistory, \"ITEM_HEIGHT\", 29);\n_defineProperty(CommandHistory, \"MAX_SELECTION_COUNT\", 10000);\n_defineProperty(CommandHistory, \"SET_SEARCH_DEBOUNCE_MS\", 150);\n_defineProperty(CommandHistory, \"menuGroups\", {\n send: ContextActions.groups.medium + 100\n});\nexport default CommandHistory;\n//# sourceMappingURL=CommandHistory.js.map","// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { UISwitch } from '@deephaven/components';\nimport \"./LogLevelMenuItem.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nclass LogLevelMenuItem extends PureComponent {\n constructor(props) {\n super(props);\n this.handleSwitchClick = this.handleSwitchClick.bind(this);\n }\n handleSwitchClick() {\n var {\n logLevel,\n onClick\n } = this.props;\n onClick(logLevel);\n }\n render() {\n var {\n logLevel,\n on\n } = this.props;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('log-level-menu-item', logLevel),\n children: [/*#__PURE__*/_jsx(UISwitch, {\n on: on,\n onClick: this.handleSwitchClick\n }), logLevel]\n });\n }\n}\nexport default LogLevelMenuItem;\n//# sourceMappingURL=LogLevelMenuItem.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { Button, DropdownMenu } from '@deephaven/components';\nimport { vsGear, dhTrashUndo } from '@deephaven/icons';\nimport { assertNotNull } from '@deephaven/utils';\nimport * as monaco from 'monaco-editor';\nimport ConsoleUtils from \"../common/ConsoleUtils.js\";\nimport LogLevel from \"./LogLevel.js\";\nimport \"./LogView.css\";\nimport LogLevelMenuItem from \"./LogLevelMenuItem.js\";\nimport { MonacoUtils } from \"../monaco/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Log view contents. Uses a monaco editor to display/search the contents of the log.\n */\nclass LogView extends PureComponent {\n static getLogText(logItem) {\n var date = new Date(logItem.micros / 1000);\n var timestamp = ConsoleUtils.formatTimestamp(date);\n return \"\".concat(timestamp, \" \").concat(logItem.logLevel, \" \").concat(logItem.message);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"cancelListener\", void 0);\n _defineProperty(this, \"editor\", void 0);\n _defineProperty(this, \"editorContainer\", void 0);\n _defineProperty(this, \"logLevelMenuItems\", void 0);\n _defineProperty(this, \"flushTimer\", void 0);\n _defineProperty(this, \"bufferedMessages\", void 0);\n _defineProperty(this, \"messages\", void 0);\n this.handleClearClick = this.handleClearClick.bind(this);\n this.handleFlushTimeout = this.handleFlushTimeout.bind(this);\n this.handleLogMessage = this.handleLogMessage.bind(this);\n this.handleMenuItemClick = this.handleMenuItemClick.bind(this);\n this.handleResetClick = this.handleResetClick.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleToggleAllClick = this.handleToggleAllClick.bind(this);\n this.logLevelMenuItems = {};\n this.editorContainer = null;\n this.bufferedMessages = [];\n this.messages = [];\n this.state = {\n shownLogLevels: {}\n };\n }\n componentDidMount() {\n this.resetLogLevels();\n this.initMonaco();\n this.startListening();\n window.addEventListener('resize', this.handleResize);\n }\n componentDidUpdate(prevProps, prevState) {\n this.updateDimensions();\n var {\n shownLogLevels\n } = this.state;\n if (prevState.shownLogLevels !== shownLogLevels) {\n this.refreshLogText();\n }\n var {\n session\n } = this.props;\n if (prevProps.session !== session) {\n this.stopListening();\n this.startListening();\n // clear logs when starting a new console\n this.clearLogs();\n }\n }\n componentWillUnmount() {\n this.stopFlushTimer();\n this.stopListening();\n this.destroyMonaco();\n window.removeEventListener('resize', this.handleResize);\n }\n getMenuActions(shownLogLevels) {\n var _this = this;\n var actions = [];\n actions.push({\n menuElement: /*#__PURE__*/_jsx(\"div\", {\n className: \"log-level-menu-title\",\n children: \"Display Log Levels\"\n }),\n group: 1,\n order: 10\n });\n var _loop = function _loop() {\n var logLevel = LogView.AllLogLevels[i];\n var on = shownLogLevels[logLevel] != null ? shownLogLevels[logLevel] : false;\n actions.push({\n title: logLevel,\n group: 1,\n order: i + 100,\n menuElement: /*#__PURE__*/_jsx(LogLevelMenuItem, {\n logLevel: logLevel,\n on: on,\n onClick: _this.handleMenuItemClick,\n ref: element => {\n if (element != null) {\n _this.logLevelMenuItems[logLevel] = element;\n }\n }\n })\n });\n };\n for (var i = 0; i < LogView.AllLogLevels.length; i += 1) {\n _loop();\n }\n actions.push({\n group: 1,\n order: 1000,\n menuElement: /*#__PURE__*/_jsxs(\"div\", {\n className: \"log-level-menu-controls\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"log-level-toggle-all\",\n onClick: this.handleToggleAllClick,\n children: \"Toggle All\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n onClick: this.handleResetClick,\n children: \"Reset\"\n })]\n })\n });\n return actions;\n }\n resetLogLevels() {\n var shownLogLevels = {};\n var _loop2 = function _loop2() {\n var logLevel = LogView.AllLogLevels[i];\n var isEnabled = LogView.DefaultLogLevels.some(level => level === logLevel);\n shownLogLevels[logLevel] = isEnabled;\n };\n for (var i = 0; i < LogView.AllLogLevels.length; i += 1) {\n _loop2();\n }\n this.setState({\n shownLogLevels\n });\n }\n startListening() {\n var {\n session\n } = this.props;\n this.cancelListener = session.onLogMessage(this.handleLogMessage);\n }\n stopListening() {\n if (this.cancelListener != null) {\n this.cancelListener();\n this.cancelListener = undefined;\n }\n }\n initMonaco() {\n assertNotNull(this.editorContainer);\n this.editor = monaco.editor.create(this.editorContainer, {\n copyWithSyntaxHighlighting: false,\n fixedOverflowWidgets: true,\n folding: false,\n fontFamily: 'Fira Mono',\n glyphMargin: false,\n language: 'log',\n lineDecorationsWidth: 0,\n lineNumbers: 'off',\n lineNumbersMinChars: 0,\n minimap: {\n enabled: false\n },\n readOnly: true,\n renderLineHighlight: 'none',\n scrollBeyondLastLine: false,\n value: '',\n wordWrap: 'on'\n });\n\n // Override default Monaco keybindings for `escape` and `shift-escape`\n [[monaco.KeyCode.Escape], [monaco.KeyMod.Shift | monaco.KeyCode.Escape] // eslint-disable-line no-bitwise\n ].forEach(keybindings => {\n assertNotNull(this.editor);\n\n // Monaco default behavior is for escape key to close the find widget.\n // Instead, capture it and do nothing. Same for shift-escape.\n MonacoUtils.disableKeyBindings(this.editor, keybindings);\n\n // Restore regular escape to clear selection, when editorText has focus.\n this.editor.addAction({\n id: 'clear-selection-on-escape',\n label: '',\n keybindings: [monaco.KeyCode.Escape],\n keybindingContext: 'findWidgetVisible && editorTextFocus',\n run: () => {\n var _this$editor, _this$editor2;\n var position = (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.getPosition();\n assertNotNull(position);\n (_this$editor2 = this.editor) === null || _this$editor2 === void 0 || _this$editor2.setPosition(position);\n }\n });\n });\n }\n destroyMonaco() {\n if (this.editor) {\n this.editor.dispose();\n this.editor = undefined;\n }\n }\n triggerFindWidget() {\n var _this$editor3, _this$editor4;\n // The actions.find action can no longer be triggered when the editor is not in focus, with monaco 0.22.x.\n // As a workaround, just focus the editor before triggering the action\n // https://github.com/microsoft/monaco-editor/issues/2355\n (_this$editor3 = this.editor) === null || _this$editor3 === void 0 || _this$editor3.focus();\n (_this$editor4 = this.editor) === null || _this$editor4 === void 0 || _this$editor4.trigger('keyboard', 'actions.find', undefined);\n }\n toggleAll() {\n var {\n shownLogLevels\n } = this.state;\n var isAllEnabled = true;\n for (var i = 0; i < LogView.AllLogLevels.length; i += 1) {\n var logLevel = LogView.AllLogLevels[i];\n if (!shownLogLevels[logLevel]) {\n isAllEnabled = false;\n break;\n }\n }\n if (isAllEnabled) {\n this.setState({\n shownLogLevels: {}\n });\n } else {\n var updatedLogLevels = {};\n for (var _i = 0; _i < LogView.AllLogLevels.length; _i += 1) {\n var _logLevel = LogView.AllLogLevels[_i];\n updatedLogLevels[_logLevel] = true;\n }\n this.setState({\n shownLogLevels: updatedLogLevels\n });\n }\n }\n toggleLogLevel(logLevel) {\n var {\n shownLogLevels\n } = this.state;\n var isEnabled = shownLogLevels[logLevel];\n var updatedLogLevels = {};\n updatedLogLevels[logLevel] = !isEnabled;\n this.updateLogLevels(updatedLogLevels);\n }\n updateLogLevels(updatedLogLevels) {\n var {\n shownLogLevels\n } = this.state;\n shownLogLevels = _objectSpread(_objectSpread({}, shownLogLevels), updatedLogLevels);\n this.setState({\n shownLogLevels\n });\n }\n appendLogText(text) {\n if (!this.editor) {\n return;\n }\n var model = this.editor.getModel();\n var line = model === null || model === void 0 ? void 0 : model.getLineCount();\n assertNotNull(line);\n var column = model === null || model === void 0 ? void 0 : model.getLineLength(line);\n assertNotNull(column);\n var isBottomVisible = this.isBottomVisible();\n var edits = [];\n if (column > 0) {\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column + 1,\n endLineNumber: line,\n endColumn: column + 1\n },\n text: '\\n',\n forceMoveMarkers: true\n });\n line += 1;\n column = 0;\n }\n edits.push({\n range: {\n startLineNumber: line,\n startColumn: column,\n endLineNumber: line,\n endColumn: column\n },\n text,\n forceMoveMarkers: true\n });\n model === null || model === void 0 || model.applyEdits(edits);\n if (isBottomVisible) {\n var lineCount = model === null || model === void 0 ? void 0 : model.getLineCount();\n assertNotNull(lineCount);\n this.editor.revealLine(lineCount, 1);\n }\n }\n\n /**\n * Refresh the contents of the log component with the updated filter text\n */\n refreshLogText() {\n if (!this.editor) {\n return;\n }\n this.truncateLogIfNecessary();\n var {\n shownLogLevels\n } = this.state;\n var isBottomVisible = this.isBottomVisible();\n var text = '';\n for (var i = 0; i < this.messages.length; i += 1) {\n var message = this.messages[i];\n if (shownLogLevels[message.logLevel]) {\n var logText = LogView.getLogText(message);\n if (logText.length > 0) {\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n }\n }\n text = text.trimRight();\n this.editor.setValue(text);\n if (isBottomVisible) {\n var _this$editor$getModel;\n var line = (_this$editor$getModel = this.editor.getModel()) === null || _this$editor$getModel === void 0 ? void 0 : _this$editor$getModel.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n this.stopFlushTimer();\n this.bufferedMessages = [];\n }\n truncateLogIfNecessary() {\n if (this.messages.length > LogView.maxLogSize) {\n this.messages = this.messages.splice(this.messages.length - LogView.truncateSize);\n }\n }\n scrollToBottom() {\n var _this$editor5, _this$editor5$getMode;\n if (!this.editor) {\n return;\n }\n var line = (_this$editor5 = this.editor) === null || _this$editor5 === void 0 || (_this$editor5$getMode = _this$editor5.getModel) === null || _this$editor5$getMode === void 0 || (_this$editor5$getMode = _this$editor5$getMode.call(_this$editor5)) === null || _this$editor5$getMode === void 0 ? void 0 : _this$editor5$getMode.getLineCount();\n assertNotNull(line);\n this.editor.revealLine(line, 1);\n }\n isBottomVisible() {\n if (!this.editor) {\n return true;\n }\n var model = this.editor.getModel();\n var line = model === null || model === void 0 ? void 0 : model.getLineCount();\n assertNotNull(line);\n return this.isLineVisible(line);\n }\n isLineVisible(line) {\n var _this$editor6;\n var visibleRanges = (_this$editor6 = this.editor) === null || _this$editor6 === void 0 ? void 0 : _this$editor6.getVisibleRanges();\n if (visibleRanges == null || visibleRanges.length === 0) {\n return false;\n }\n for (var i = 0; i < visibleRanges.length; i += 1) {\n var range = visibleRanges[i];\n if (range.startLineNumber <= line && line <= range.endLineNumber) {\n return true;\n }\n }\n return false;\n }\n\n /** Checks if the given log message is visible with the current filters */\n isLogItemVisible(message) {\n var {\n shownLogLevels\n } = this.state;\n return shownLogLevels[message.logLevel];\n }\n flush() {\n var text = '';\n for (var i = 0; i < this.bufferedMessages.length; i += 1) {\n var message = this.bufferedMessages[i];\n var logText = LogView.getLogText(message);\n text += logText;\n if (logText.charAt(logText.length - 1) !== '\\n') {\n text += '\\n';\n }\n }\n this.bufferedMessages = [];\n this.appendLogText(text);\n }\n queue(message) {\n this.bufferedMessages.push(message);\n if (this.bufferedMessages.length === 1) {\n this.flushTimer = setTimeout(this.handleFlushTimeout, LogView.bufferTimeout);\n }\n }\n stopFlushTimer() {\n if (this.flushTimer) {\n clearTimeout(this.flushTimer);\n this.flushTimer = undefined;\n }\n }\n updateDimensions() {\n if (this.editor) {\n this.editor.layout();\n }\n }\n handleClearClick() {\n this.clearLogs();\n }\n clearLogs() {\n this.messages = [];\n this.refreshLogText();\n }\n handleFlushTimeout() {\n this.stopFlushTimer();\n this.flush();\n }\n handleLogMessage(message) {\n this.messages.push(message);\n if (this.editor && this.isLogItemVisible(message)) {\n this.queue(message);\n }\n }\n handleMenuItemClick(logLevel) {\n this.toggleLogLevel(logLevel);\n }\n handleResetClick() {\n this.resetLogLevels();\n }\n handleResize() {\n this.updateDimensions();\n }\n handleToggleAllClick() {\n this.toggleAll();\n }\n render() {\n var popperOptions = {\n placement: 'bottom-end'\n };\n var {\n shownLogLevels\n } = this.state;\n var actions = this.getMenuActions(shownLogLevels);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"log-pane h-100 w-100\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"log-pane-menu\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-clear-logs\",\n onClick: this.handleClearClick,\n icon: dhTrashUndo,\n tooltip: \"Clear log\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"btn-link-icon btn-overflow\",\n icon: vsGear,\n tooltip: \"Log Settings\",\n onClick: () => {\n // no-op: click is handled in `DropdownMenu'\n },\n children: /*#__PURE__*/_jsx(DropdownMenu, {\n actions: actions,\n popperClassName: \"log-level-menu-popper\",\n popperOptions: popperOptions\n })\n })]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"log-pane-editor h-100 w-100\",\n ref: editorContainer => {\n this.editorContainer = editorContainer;\n }\n })]\n });\n }\n}\n_defineProperty(LogView, \"DefaultLogLevels\", [LogLevel.STDOUT, LogLevel.ERROR, LogLevel.FATAL, LogLevel.STDERR, LogLevel.WARN]);\n_defineProperty(LogView, \"AllLogLevels\", [LogLevel.INFO, LogLevel.STDOUT, LogLevel.ERROR, LogLevel.FATAL, LogLevel.STDERR, LogLevel.WARN, LogLevel.DEBUG, LogLevel.TRACE]);\n/** ms to buffer log messages before processing them */\n_defineProperty(LogView, \"bufferTimeout\", 16);\n/** Maximum number of messages to store in the log */\n_defineProperty(LogView, \"maxLogSize\", 131072);\n_defineProperty(LogView, \"truncateSize\", 65536);\nexport default LogView;\n//# sourceMappingURL=LogView.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport { useState, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport { Plot, useChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval, useIsMountedRef } from '@deephaven/react-hooks';\nimport \"./HeapUsage.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('HeapUsage');\nfunction HeapUsage(_ref) {\n var _timestamps2;\n var {\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration\n } = _ref;\n var chartTheme = useChartTheme();\n var [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0\n });\n var [isOpen, setIsOpen] = useState(false);\n var historyUsage = useRef({\n timestamps: [],\n usages: []\n });\n var isMountedRef = useIsMountedRef();\n var setUsageUpdateInterval = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {\n try {\n var newUsage = yield connection.getWorkerHeapInfo();\n if (!isMountedRef.current) {\n return;\n }\n setMemoryUsage(newUsage);\n if (bgMonitoring || isOpen) {\n var currentUsage = (newUsage.totalHeapSize - newUsage.freeMemory) / newUsage.maximumHeapSize;\n var currentTime = Date.now();\n var {\n timestamps: _timestamps,\n usages: _usages\n } = historyUsage.current;\n while (_timestamps.length !== 0 && currentTime - _timestamps[0] > monitorDuration * 1.5) {\n _timestamps.shift();\n _usages.shift();\n }\n _timestamps.push(currentTime);\n _usages.push(currentUsage);\n } else {\n historyUsage.current = {\n timestamps: [],\n usages: []\n };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n }), [connection, isMountedRef, bgMonitoring, isOpen, monitorDuration]);\n useAsyncInterval(setUsageUpdateInterval, isOpen ? hoverUpdateInterval : defaultUpdateInterval);\n var toDecimalPlace = (num, dec) => Math.round(num * 10 ** dec) / 10 ** dec;\n var decimalPlace = 2;\n var GbToByte = 1024 ** 3;\n var {\n freeMemory,\n totalHeapSize,\n maximumHeapSize\n } = memoryUsage;\n var freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n var totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n var maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n var inUseGB = totalHeapGB - freeMemoryGB;\n var getRow = function getRow(text, size) {\n var bottomBorder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames(\"heap-usage-info-row\", {\n 'heading-bottom-border': bottomBorder\n }),\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"font-weight-bold\",\n children: text\n }), /*#__PURE__*/_jsx(\"div\", {\n children: size\n })]\n });\n };\n var {\n timestamps,\n usages\n } = historyUsage.current;\n var lastTimestamp = (_timestamps2 = timestamps[timestamps.length - 1]) !== null && _timestamps2 !== void 0 ? _timestamps2 : 0;\n var totalPercentage = totalHeapSize / maximumHeapSize;\n var usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"max-memory\",\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"total-memory\",\n style: {\n width: \"calc(\".concat(totalPercentage * 100, \"% - \").concat(totalPercentage * 2, \"px\")\n }\n }), /*#__PURE__*/_jsx(\"div\", {\n className: classNames('used-memory', {\n 'heap-overflow': (totalHeapSize - freeMemory) / maximumHeapSize > 0.95\n }),\n style: {\n width: \"calc(\".concat(usedPercentage * 100, \"% - \").concat(usedPercentage * 2, \"px\")\n }\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"memory-text\",\n children: [maxHeapGB.toFixed(1), \" GB\"]\n }), /*#__PURE__*/_jsx(Tooltip, {\n onEntered: () => setIsOpen(true),\n onExited: () => setIsOpen(false),\n interactive: true,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"heap-tooltip\",\n children: [getRow('In use:', \"\".concat(inUseGB.toFixed(decimalPlace), \" of \").concat(maxHeapGB.toFixed(decimalPlace), \" GB\"), true), getRow('Free:', \"\".concat(freeMemoryGB.toFixed(decimalPlace), \" GB\")), getRow('Total:', \"\".concat(totalHeapGB.toFixed(decimalPlace), \" GB\")), getRow('Max:', \"\".concat(maxHeapGB.toFixed(decimalPlace), \" GB\")), /*#__PURE__*/_jsx(\"div\", {\n className: \"heap-plot\",\n children: /*#__PURE__*/_jsx(Plot, {\n data: [{\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines'\n }],\n config: {\n staticPlot: true,\n responsive: true\n },\n style: {\n width: '196px',\n height: '100px'\n },\n layout: {\n margin: {\n l: 2,\n t: 2,\n r: 2,\n b: 2\n },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: chartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: chartTheme.linecolor,\n linewidth: 2,\n mirror: true\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: chartTheme.linecolor,\n range: [0, 1],\n linecolor: chartTheme.linecolor,\n linewidth: 2,\n mirror: true\n }\n }\n })\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"heap-utilisation-text\",\n children: [\"% utilization over \", Math.round(monitorDuration / 1000 / 60), \" min.\"]\n })]\n })\n })]\n });\n}\nexport default HeapUsage;\n//# sourceMappingURL=HeapUsage.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass ConsoleEvent {}\n_defineProperty(ConsoleEvent, \"SESSION_OPENED\", 'ConsoleEvent.SESSION_OPENED');\n_defineProperty(ConsoleEvent, \"SESSION_CLOSED\", 'ConsoleEvent.SESSION_CLOSED');\n_defineProperty(ConsoleEvent, \"FOCUS_HISTORY\", 'ConsoleEvent.FOCUS_HISTORY');\n_defineProperty(ConsoleEvent, \"SEND_COMMAND\", 'ConsoleEvent.SEND_COMMAND');\n_defineProperty(ConsoleEvent, \"SETTINGS_CHANGED\", 'ConsoleEvent.SETTINGS_CHANGED');\nexport default ConsoleEvent;\n//# sourceMappingURL=ConsoleEvent.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass InputFilterEvent {}\n/** table object for a given panel has changed */\n_defineProperty(InputFilterEvent, \"TABLE_CHANGED\", 'InputFilterEvent.TABLE_CHANGED');\n/** columns list for a given panel has changed */\n_defineProperty(InputFilterEvent, \"COLUMNS_CHANGED\", 'InputFilterEvent.COLUMNS_CHANGED');\n/** The filter values from an filter panel have changed */\n_defineProperty(InputFilterEvent, \"FILTERS_CHANGED\", 'InputFilterEvent.FILTERS_CHANGED');\n/** Clear all the values in currently open filter panels */\n_defineProperty(InputFilterEvent, \"CLEAR_ALL_FILTERS\", 'InputFilterEvent.CLEAR_ALL_FILTERS');\n/** A column was selected from an input filter panel */\n_defineProperty(InputFilterEvent, \"COLUMN_SELECTED\", 'InputFilterEvent.COLUMN_SELECTED');\n/** Open a Dropdown filter panel */\n_defineProperty(InputFilterEvent, \"OPEN_DROPDOWN\", 'InputFilterEvent.OPEN_DROPDOWN');\n/** Open an input filter panel */\n_defineProperty(InputFilterEvent, \"OPEN_INPUT\", 'InputFilterEvent.OPEN_INPUT');\n/** Open a filter set manager panel */\n_defineProperty(InputFilterEvent, \"OPEN_FILTER_SET_MANAGER\", 'InputFilterEvent.OPEN_FILTER_SET_MANAGER');\nexport default InputFilterEvent;\n//# sourceMappingURL=InputFilterEvent.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass NotebookEvent {}\n_defineProperty(NotebookEvent, \"CREATE_NOTEBOOK\", 'NotebookEvent.createNotebook');\n_defineProperty(NotebookEvent, \"SELECT_NOTEBOOK\", 'NotebookEvent.selectNotebook');\n_defineProperty(NotebookEvent, \"CLOSE_FILE\", 'NotebookEvent.closeFile');\n_defineProperty(NotebookEvent, \"RENAME\", 'NotebookEvent.rename');\n_defineProperty(NotebookEvent, \"RENAME_FILE\", 'NotebookEvent.renameFile');\n_defineProperty(NotebookEvent, \"REGISTER_FILE\", 'NotebookEvent.registerFile');\n_defineProperty(NotebookEvent, \"SEND_TO_NOTEBOOK\", 'NotebookEvent.sendToNotebook');\n_defineProperty(NotebookEvent, \"UNREGISTER_FILE\", 'NotebookEvent.unregisterFile');\n_defineProperty(NotebookEvent, \"PROMOTE_FROM_PREVIEW\", 'NotebookEvent.promoteFromPreview');\nexport default NotebookEvent;\n//# sourceMappingURL=NotebookEvent.js.map","var _excluded = [\"children\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport React, { PureComponent } from 'react';\nimport { createXComponent } from '@deephaven/components';\nimport { BasePanel } from '@deephaven/dashboard';\nimport { ConsoleEvent, InputFilterEvent } from \"../events/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Extends the base panel component to handle Session events and input filter events.\n */\nclass CorePanel extends PureComponent {\n constructor(props) {\n super(props);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n }\n componentDidMount() {\n var {\n glEventHub\n } = this.props;\n glEventHub.on(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.on(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.on(InputFilterEvent.CLEAR_ALL_FILTERS, this.handleClearAllFilters);\n }\n componentWillUnmount() {\n var {\n glEventHub\n } = this.props;\n glEventHub.off(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.off(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.off(InputFilterEvent.CLEAR_ALL_FILTERS, this.handleClearAllFilters);\n }\n handleClearAllFilters() {\n var {\n onClearAllFilters\n } = this.props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n onClearAllFilters === null || onClearAllFilters === void 0 || onClearAllFilters(...args);\n }\n handleSessionClosed(session) {\n var {\n onSessionClose\n } = this.props;\n onSessionClose === null || onSessionClose === void 0 || onSessionClose(session);\n }\n handleSessionOpened(session, params) {\n var {\n onSessionOpen\n } = this.props;\n onSessionOpen === null || onSessionOpen === void 0 || onSessionOpen(session, params);\n }\n render() {\n var _this$props = this.props,\n {\n children\n } = _this$props,\n otherProps = _objectWithoutProperties(_this$props, _excluded);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return /*#__PURE__*/_jsx(BasePanel, _objectSpread(_objectSpread({}, otherProps), {}, {\n children: children\n }));\n }\n}\nvar XCorePanel = createXComponent(CorePanel);\nexport default XCorePanel;\n//# sourceMappingURL=CorePanel.js.map","import { getDashboardData } from '@deephaven/dashboard';\nvar EMPTY_OBJECT = Object.freeze({});\nvar EMPTY_MAP = new Map();\nvar EMPTY_ARRAY = Object.freeze([]);\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns All column objects found in all panels in this dashboard\n */\nexport var getColumnsForDashboard = (store, dashboardId) => {\n var _getDashboardData$col;\n return (_getDashboardData$col = getDashboardData(store, dashboardId).columns) !== null && _getDashboardData$col !== void 0 ? _getDashboardData$col : EMPTY_ARRAY;\n};\n\n/**\n * Get the known filter sets for the dashboard.\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns The filter sets set on this dashboard\n */\nexport var getFilterSetsForDashboard = (store, dashboardId) => {\n var _getDashboardData$fil;\n return (_getDashboardData$fil = getDashboardData(store, dashboardId).filterSets) !== null && _getDashboardData$fil !== void 0 ? _getDashboardData$fil : EMPTY_ARRAY;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns The filters set on this dashboard\n */\nexport var getInputFiltersForDashboard = (store, dashboardId) => {\n var _getDashboardData$fil2;\n return (_getDashboardData$fil2 = getDashboardData(store, dashboardId).filters) !== null && _getDashboardData$fil2 !== void 0 ? _getDashboardData$fil2 : EMPTY_ARRAY;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get data for\n * @returns Map from panel ID to the table used in that panel\n */\nexport var getTableMapForDashboard = (store, dashboardId) => {\n var _getDashboardData$tab;\n return (_getDashboardData$tab = getDashboardData(store, dashboardId).tableMap) !== null && _getDashboardData$tab !== void 0 ? _getDashboardData$tab : EMPTY_MAP;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the data for\n * @returns The panel ID that is isolated, undefined if none is isolated\n */\nexport var getIsolatedLinkerPanelIdForDashboard = (store, dashboardId) => getDashboardData(store, dashboardId).isolatedLinkerPanelId;\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the data from\n * @returns The links for the dashboard\n */\nexport var getLinksForDashboard = (store, dashboardId) => {\n var _getDashboardData$lin;\n return (_getDashboardData$lin = getDashboardData(store, dashboardId).links) !== null && _getDashboardData$lin !== void 0 ? _getDashboardData$lin : EMPTY_ARRAY;\n};\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the column selection validators for\n * @returns Column selection validator active on a dashboard\n */\nexport var getColumnSelectionValidatorForDashboard = (store, dashboardId) => getDashboardData(store, dashboardId).columnSelectionValidator;\n\n/**\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the console settings for\n * @returns Console settings for this dashboard\n */\nexport var getDashboardConsoleSettings = (store, dashboardId) => {\n var _getDashboardData$con;\n return (_getDashboardData$con = getDashboardData(store, dashboardId).consoleSettings) !== null && _getDashboardData$con !== void 0 ? _getDashboardData$con : EMPTY_OBJECT;\n};\n\n/**\n *\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the IdeConnection for\n * @returns The connection for the dashboard\n */\nexport var getDashboardConnection = (store, dashboardId) => getDashboardData(store, dashboardId).connection;\n\n/**\n *\n * @param store The redux store\n * @param dashboardId The dashboard ID to get the SessionWrapper for\n * @returns The session wrapper for the dashboard\n */\nexport var getDashboardSessionWrapper = (store, dashboardId) => getDashboardData(store, dashboardId).sessionWrapper;\n//# sourceMappingURL=selectors.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { ContextActions } from '@deephaven/components';\nimport { CommandHistory, SHORTCUTS } from '@deephaven/console';\nimport Log from '@deephaven/log';\nimport { getCommandHistoryStorage } from '@deephaven/redux';\nimport { assertNotNull, Pending } from '@deephaven/utils';\nimport { ConsoleEvent, NotebookEvent } from \"../events/index.js\";\nimport \"./CommandHistoryPanel.css\";\nimport Panel from \"./CorePanel.js\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('CommandHistoryPanel');\nclass CommandHistoryPanel extends Component {\n static handleError(error) {\n log.error(error);\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"container\", void 0);\n _defineProperty(this, \"pending\", void 0);\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSendToConsole = this.handleSendToConsole.bind(this);\n this.handleSendToNotebook = this.handleSendToNotebook.bind(this);\n this.container = /*#__PURE__*/React.createRef();\n this.pending = new Pending();\n var {\n session,\n sessionId,\n language\n } = props;\n this.state = {\n // eslint-disable-next-line react/no-unused-state\n panelState: {},\n session,\n sessionId,\n language,\n contextActions: [{\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.COMMAND_HISTORY.FOCUS_HISTORY\n }]\n };\n }\n componentDidMount() {\n var {\n glEventHub,\n session\n } = this.props;\n glEventHub.on(ConsoleEvent.FOCUS_HISTORY, this.handleFocusHistory);\n if (session != null) {\n this.loadTable();\n }\n }\n componentWillUnmount() {\n var {\n glEventHub\n } = this.props;\n glEventHub.off(ConsoleEvent.FOCUS_HISTORY, this.handleFocusHistory);\n this.pending.cancel();\n }\n handleFocusHistory() {\n if (this.container.current) {\n this.container.current.focus();\n }\n }\n handleShow() {\n var _this$container$curre;\n // virtual list requires a forced reset to scroll position when picked up and dropped in same place\n (_this$container$curre = this.container.current) === null || _this$container$curre === void 0 || _this$container$curre.restoreScrollPosition();\n }\n handleSessionOpened(session, _ref) {\n var {\n language,\n sessionId\n } = _ref;\n this.setState({\n session,\n sessionId,\n language\n }, () => {\n this.loadTable();\n });\n }\n handleSessionClosed() {\n this.pending.cancel();\n this.setState({\n session: undefined,\n language: undefined,\n table: undefined\n });\n }\n handleSendToNotebook(settings) {\n var forceNewNotebook = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var {\n session,\n language\n } = this.state;\n log.debug('handleSendToNotebook', session, settings);\n if (!session) {\n log.error('Session is not connected.');\n return;\n }\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(forceNewNotebook ? NotebookEvent.CREATE_NOTEBOOK : NotebookEvent.SEND_TO_NOTEBOOK, session, language, settings);\n }\n handleSendToConsole(command) {\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n log.debug('handleSendToConsole', command);\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, focus, execute);\n }\n loadTable() {\n var {\n commandHistoryStorage\n } = this.props;\n var {\n language,\n sessionId\n } = this.state;\n assertNotNull(language);\n assertNotNull(sessionId);\n this.pending.add(commandHistoryStorage.getTable(language, sessionId, Date.now()), resolved => resolved.close()).then(table => {\n this.setState({\n table\n });\n }).catch(CommandHistoryPanel.handleError);\n }\n render() {\n var {\n glContainer,\n glEventHub,\n commandHistoryStorage\n } = this.props;\n var {\n language,\n contextActions,\n table\n } = this.state;\n return /*#__PURE__*/_jsxs(Panel, {\n className: \"command-history-pane\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onSessionOpen: this.handleSessionOpened,\n onSessionClose: this.handleSessionClosed,\n onShow: this.handleShow,\n children: [!table && /*#__PURE__*/_jsx(\"div\", {\n className: \"command-history-disconnected-message\",\n children: \"Waiting for console connection\"\n }), table && language != null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(CommandHistory, {\n ref: this.container,\n language: language,\n sendToNotebook: this.handleSendToNotebook,\n sendToConsole: this.handleSendToConsole,\n table: table,\n commandHistoryStorage: commandHistoryStorage\n }), /*#__PURE__*/_jsx(ContextActions, {\n actions: contextActions\n })]\n })]\n });\n }\n}\n_defineProperty(CommandHistoryPanel, \"COMPONENT\", 'CommandHistoryPanel');\n_defineProperty(CommandHistoryPanel, \"TITLE\", 'Command History');\nvar mapStateToProps = (state, ownProps) => {\n var commandHistoryStorage = getCommandHistoryStorage(state);\n var sessionWrapper = getDashboardSessionWrapper(state, ownProps.localDashboardId);\n var {\n session,\n config: sessionConfig\n } = sessionWrapper !== null && sessionWrapper !== void 0 ? sessionWrapper : {};\n var {\n type: language,\n id: sessionId\n } = sessionConfig !== null && sessionConfig !== void 0 ? sessionConfig : {};\n return {\n commandHistoryStorage,\n language,\n session,\n sessionId\n };\n};\nvar ConnectedCommandHistoryPanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(CommandHistoryPanel);\nexport default ConnectedCommandHistoryPanel;\n//# sourceMappingURL=CommandHistoryPanel.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport { nanoid } from 'nanoid';\nimport debounce from 'lodash.debounce';\nimport { connect } from 'react-redux';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { Console, ConsoleConstants, HeapUsage, ObjectIcon } from '@deephaven/console';\nimport { emitCloseDashboard, emitPanelOpen, LayoutManagerContext, LayoutUtils, PanelEvent } from '@deephaven/dashboard';\nimport { getVariableDescriptor } from '@deephaven/jsapi-bootstrap';\nimport Log from '@deephaven/log';\nimport { getCommandHistoryStorage, getPlugins, getTimeZone } from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport { getIconForPlugin, pluginSupportsType } from '@deephaven/plugin';\nimport { ConsoleEvent } from \"../events/index.js\";\nimport Panel from \"./CorePanel.js\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport \"./ConsolePanel.css\";\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('ConsolePanel');\nvar DEBOUNCE_PANEL_STATE_UPDATE = 500;\nvar DEFAULT_PANEL_STATE = Object.freeze({\n consoleSettings: {},\n itemIds: []\n});\nexport class ConsolePanel extends PureComponent {\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n\n constructor(props) {\n super(props);\n _defineProperty(this, \"consoleRef\", void 0);\n _defineProperty(this, \"objectSubscriptionCleanup\", void 0);\n _defineProperty(this, \"savePanelState\", debounce(() => {\n var {\n consoleSettings,\n itemIds\n } = this.state;\n var panelState = {\n consoleSettings,\n itemIds: [...itemIds]\n };\n log.debug('Saving panel state', panelState);\n // eslint-disable-next-line react/no-unused-state\n this.setState({\n panelState\n });\n }, DEBOUNCE_PANEL_STATE_UPDATE));\n this.handleFocusCommandHistory = this.handleFocusCommandHistory.bind(this);\n this.handleOpenObject = this.handleOpenObject.bind(this);\n this.handleCloseObject = this.handleCloseObject.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSettingsChange = this.handleSettingsChange.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handlePanelMount = this.handlePanelMount.bind(this);\n this.supportsType = this.supportsType.bind(this);\n this.iconForType = this.iconForType.bind(this);\n this.consoleRef = /*#__PURE__*/React.createRef();\n var {\n panelState: initialPanelState\n } = props;\n var _panelState = _objectSpread(_objectSpread({}, DEFAULT_PANEL_STATE), initialPanelState || {});\n var {\n consoleSettings: _consoleSettings,\n itemIds: _itemIds\n } = _panelState;\n this.state = {\n consoleSettings: _consoleSettings,\n itemIds: new Map(_itemIds),\n objectMap: new Map(),\n error: undefined,\n // eslint-disable-next-line react/no-unused-state\n panelState: _panelState // Dehydrated panel state that can load this panel\n };\n }\n componentDidMount() {\n var {\n glEventHub\n } = this.props;\n // Need to close the disconnected panels when we're first loaded,\n // as they may have been saved with the dashboard\n this.closeDisconnectedPanels();\n glEventHub.on(PanelEvent.MOUNT, this.handlePanelMount);\n this.subscribeToFieldUpdates();\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n consoleSettings,\n itemIds\n } = this.state;\n if (prevState.consoleSettings !== consoleSettings || prevState.itemIds !== itemIds) {\n this.savePanelState();\n }\n }\n componentWillUnmount() {\n var _this$objectSubscript;\n var {\n glEventHub\n } = this.props;\n this.savePanelState.flush();\n glEventHub.off(PanelEvent.MOUNT, this.handlePanelMount);\n (_this$objectSubscript = this.objectSubscriptionCleanup) === null || _this$objectSubscript === void 0 || _this$objectSubscript.call(this);\n }\n subscribeToFieldUpdates() {\n var {\n sessionWrapper\n } = this.props;\n if (sessionWrapper == null) {\n return;\n }\n var {\n session\n } = sessionWrapper;\n this.objectSubscriptionCleanup = session.subscribeToFieldUpdates(updates => {\n log.debug('Got updates', updates);\n this.setState(_ref => {\n var {\n objectMap\n } = _ref;\n var {\n updated,\n created,\n removed\n } = updates;\n\n // Remove from the array if it's been removed OR modified. We'll add it back after if it was modified.\n var objectsToRemove = [...updated, ...removed];\n var newObjectMap = new Map(objectMap);\n objectsToRemove.forEach(toRemove => {\n var {\n title\n } = toRemove;\n if (title !== undefined) {\n newObjectMap.delete(title);\n }\n });\n\n // Now add all the modified and updated widgets back in\n var objectsToAdd = [...updated, ...created];\n objectsToAdd.forEach(toAdd => {\n if (toAdd.title !== undefined) {\n newObjectMap.set(toAdd.title, toAdd);\n }\n });\n return {\n objectMap: newObjectMap\n };\n });\n });\n }\n setItemId(name, id) {\n this.setState(_ref2 => {\n var {\n itemIds\n } = _ref2;\n var newItemIds = new Map(itemIds);\n newItemIds.set(name, id);\n return {\n itemIds: newItemIds\n };\n });\n }\n getItemId(name) {\n var createIfNecessary = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var {\n itemIds\n } = this.state;\n var id = itemIds.get(name);\n if (id == null && createIfNecessary) {\n id = nanoid();\n this.setItemId(name, id);\n }\n return id;\n }\n handleTabFocus() {\n var _this$consoleRef$curr;\n (_this$consoleRef$curr = this.consoleRef.current) === null || _this$consoleRef$curr === void 0 || _this$consoleRef$curr.focus();\n }\n handlePanelMount(panel) {\n var _panel$props, _panel$props2;\n var {\n itemIds\n } = this.state;\n var panelId = panel === null || panel === void 0 || (_panel$props = panel.props) === null || _panel$props === void 0 ? void 0 : _panel$props.id;\n var sourceId = panel === null || panel === void 0 || (_panel$props2 = panel.props) === null || _panel$props2 === void 0 || (_panel$props2 = _panel$props2.metadata) === null || _panel$props2 === void 0 ? void 0 : _panel$props2.sourcePanelId;\n if (panelId && sourceId) {\n // Check if the panel was created from a panel in this console\n var pandelIds = new Set(itemIds.values());\n if (pandelIds.has(sourceId)) {\n // The Chart Panel does not have name so map panelId to panelId\n this.setItemId(panelId, panelId);\n }\n }\n }\n handleFocusCommandHistory() {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(ConsoleEvent.FOCUS_HISTORY);\n }\n handleResize() {\n this.updateDimensions();\n }\n handleShow() {\n this.updateDimensions();\n }\n handleOpenObject(object) {\n var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n assertNotNull(this.context);\n var {\n root\n } = this.context;\n var oldPanelId = object.title != null ? this.getItemId(object.title, false) : null;\n if (forceOpen || oldPanelId != null && LayoutUtils.getStackForRoot(root, {\n id: oldPanelId\n }, false, false, false) != null) {\n this.openWidget(object);\n }\n }\n handleCloseObject(object) {\n var {\n title\n } = object;\n if (title !== undefined) {\n var id = this.getItemId(title, false);\n if (id != null) {\n var {\n glEventHub\n } = this.props;\n glEventHub.emit(PanelEvent.CLOSE, id);\n // Just emit for all panels since there shouldn't be dashboard and panel name conflicts\n emitCloseDashboard(glEventHub, title);\n }\n }\n }\n handleSettingsChange(consoleSettings) {\n var {\n glEventHub\n } = this.props;\n log.debug('handleSettingsChange', consoleSettings);\n this.setState({\n consoleSettings\n });\n glEventHub.emit(ConsoleEvent.SETTINGS_CHANGED, consoleSettings);\n }\n\n /**\n * @param widget The widget to open\n */\n openWidget(widget) {\n var {\n glEventHub,\n sessionWrapper\n } = this.props;\n assertNotNull(sessionWrapper);\n var {\n config,\n session\n } = sessionWrapper;\n var {\n title = widget.name\n } = widget;\n assertNotNull(title);\n var panelId = this.getItemId(title);\n var openOptions = {\n fetch: () => session.getObject(widget),\n panelId,\n widget: _objectSpread(_objectSpread({}, getVariableDescriptor(widget)), {}, {\n sessionId: config.id\n })\n };\n log.debug('openWidget', openOptions);\n emitPanelOpen(glEventHub, openOptions);\n }\n addCommand(command) {\n var _this$consoleRef$curr2;\n var focus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var execute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n (_this$consoleRef$curr2 = this.consoleRef.current) === null || _this$consoleRef$curr2 === void 0 || _this$consoleRef$curr2.addCommand(command, focus, execute);\n }\n\n /**\n * Close the disconnected panels from this session\n * @param force True to force the panels closed regardless of the current setting\n */\n closeDisconnectedPanels() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var {\n consoleSettings,\n itemIds\n } = this.state;\n var {\n isClosePanelsOnDisconnectEnabled = true\n } = consoleSettings;\n if (!isClosePanelsOnDisconnectEnabled && !force) {\n return;\n }\n var panelIdsToClose = [...itemIds.values()];\n var {\n glEventHub\n } = this.props;\n panelIdsToClose.forEach(panelId => {\n glEventHub.emit(PanelEvent.CLOSE, panelId);\n });\n this.setState({\n itemIds: new Map()\n });\n }\n updateDimensions() {\n var _this$consoleRef$curr3;\n (_this$consoleRef$curr3 = this.consoleRef.current) === null || _this$consoleRef$curr3 === void 0 || _this$consoleRef$curr3.updateDimensions();\n }\n supportsType(type) {\n var {\n plugins\n } = this.props;\n return [...plugins.values()].some(plugin => pluginSupportsType(plugin, type));\n }\n iconForType(type) {\n var {\n plugins\n } = this.props;\n var plugin = [...plugins.values()].find(p => pluginSupportsType(p, type));\n if (plugin != null) {\n return getIconForPlugin(plugin);\n }\n // TODO: #1573 Remove this default and always return getIconForPlugin\n return /*#__PURE__*/_jsx(ObjectIcon, {\n type: type\n });\n }\n render() {\n var {\n commandHistoryStorage,\n glContainer,\n glEventHub,\n sessionWrapper,\n timeZone,\n unzip\n } = this.props;\n if (sessionWrapper == null) {\n return /*#__PURE__*/_jsx(LoadingOverlay, {\n isLoading: false,\n errorMessage: \"Console is disabled.\",\n \"data-testid\": \"console-panel-loading-error\"\n });\n }\n var {\n consoleSettings,\n error,\n objectMap\n } = this.state;\n var {\n config,\n session,\n connection,\n details = {},\n dh\n } = sessionWrapper;\n var {\n workerName,\n processInfoId\n } = details;\n var {\n id: sessionId,\n type: language\n } = config;\n return /*#__PURE__*/_jsx(Panel, {\n className: \"iris-panel-console\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onResize: this.handleResize,\n onShow: this.handleShow,\n onTabFocus: this.handleTabFocus,\n errorMessage: error != null ? \"\".concat(error) : undefined,\n children: session != null && /*#__PURE__*/_jsx(Console, {\n dh: dh,\n ref: this.consoleRef,\n settings: consoleSettings,\n session: session,\n focusCommandHistory: this.handleFocusCommandHistory,\n openObject: this.handleOpenObject,\n closeObject: this.handleCloseObject,\n commandHistoryStorage: commandHistoryStorage,\n onSettingsChange: this.handleSettingsChange,\n language: language,\n statusBarChildren: /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n children: ConsoleConstants.LANGUAGE_MAP.get(language)\n }), workerName != null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n children: \"\\u2022\"\n }), workerName]\n }), processInfoId != null && /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n children: \"\\u2022\"\n }), processInfoId, /*#__PURE__*/_jsx(\"div\", {\n children: \"\\u2022\"\n })]\n }), /*#__PURE__*/_jsx(HeapUsage, {\n connection: connection,\n defaultUpdateInterval: 10 * 1000,\n hoverUpdateInterval: 3 * 1000,\n monitorDuration: 10 * 60 * 1000\n })]\n }),\n showObjectsMenu: false,\n scope: sessionId,\n timeZone: timeZone,\n objectMap: objectMap,\n unzip: unzip,\n supportsType: this.supportsType,\n iconForType: this.iconForType\n })\n });\n }\n}\n_defineProperty(ConsolePanel, \"COMPONENT\", 'ConsolePanel');\n_defineProperty(ConsolePanel, \"TITLE\", 'Console');\n_defineProperty(ConsolePanel, \"contextType\", LayoutManagerContext);\nvar mapStateToProps = (state, ownProps) => ({\n commandHistoryStorage: getCommandHistoryStorage(state),\n sessionWrapper: getDashboardSessionWrapper(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n plugins: getPlugins(state)\n});\nvar ConnectedConsolePanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(ConsolePanel);\nexport default ConnectedConsolePanel;\n//# sourceMappingURL=ConsolePanel.js.map","/**\n * Basic metadata of the file\n */\n\nexport function isFileType(type) {\n return type === 'file' || type === 'directory';\n}\nexport function isDirectory(file) {\n return file.type === 'directory';\n}\n\n/**\n * A file including it's contents\n */\n\n/**\n * FileStorage abstraction. Has methods for managing files, and for retrieving a table to browse files.\n */\n//# sourceMappingURL=FileStorage.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nclass FileNotFoundError extends Error {\n constructor() {\n super('No file exists at the path specified');\n _defineProperty(this, \"isFileNotFound\", true);\n }\n}\nexport default FileNotFoundError;\n//# sourceMappingURL=FileNotFoundError.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport { ValidationError } from '@deephaven/utils';\nimport FileNotFoundError from \"./FileNotFoundError.js\";\n/**\n * A basic list of some common MIME types.\n */\nexport var MIME_TYPE = /*#__PURE__*/function (MIME_TYPE) {\n MIME_TYPE[\"GROOVY\"] = \"text/x-groovy\";\n MIME_TYPE[\"PLAIN_TEXT\"] = \"text/plain\";\n MIME_TYPE[\"PYTHON\"] = \"text/x-python\";\n MIME_TYPE[\"PYTHON_COMPILED\"] = \"application/x-python-code\";\n MIME_TYPE[\"SCALA\"] = \"text/x-scala\";\n MIME_TYPE[\"UNKNOWN\"] = \"\";\n return MIME_TYPE;\n}({});\n\n/**\n * Collection of utils for operating on file names\n */\nexport class FileUtils {\n static fileExists(fileStorage, name) {\n return _asyncToGenerator(function* () {\n try {\n yield fileStorage.info(name);\n return true;\n } catch (e) {\n // Should probably make sure it's a `FileNotFoundError`, and re-throw the error if it is not\n if (!(e instanceof FileNotFoundError)) {\n throw e;\n }\n return false;\n }\n })();\n }\n\n /**\n * Format file extension\n * @param extension File extension to format, defaults to empty string\n * @returns Formatted string - '' for no extension, '.' for empty extension, '.ext' for non-empty extension\n */\n static fileExtensionToString() {\n var extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return extension.length === 0 ? '' : \".\".concat(extension);\n }\n\n /**\n * Get the depth (how many directories deep it is) of the provided filename with path.\n * @param name The full file name to get the depth of\n */\n static getDepth(name) {\n var _name$match;\n if (!FileUtils.hasPath(name)) {\n throw new Error(\"Invalid path provided: \".concat(name));\n }\n var matches = (_name$match = name.match(/\\//g)) !== null && _name$match !== void 0 ? _name$match : [];\n return matches.length - 1;\n }\n\n /**\n * Get just the extension of file name.\n * Note that it just returns the last extension, so 'example.tar.gz' would just return 'gz'.\n * @param name The file name with or without path to get the extension of\n * @returns The file extension\n */\n static getExtension(name) {\n var components = this.getBaseName(name).split('.');\n if (components.length > 1) {\n var _components$pop;\n return (_components$pop = components.pop()) !== null && _components$pop !== void 0 ? _components$pop : '';\n }\n return '';\n }\n\n /**\n * Get the base name portion of the file, eg '/foo/bar.txt' => 'bar.txt'\n * @param name The full name including path of the file\n * @returns Just the file name part of the file\n */\n static getBaseName(name) {\n var _name$split$pop;\n return (_name$split$pop = name.split('/').pop()) !== null && _name$split$pop !== void 0 ? _name$split$pop : '';\n }\n\n /**\n * Create copy file name, used for copying unsaved files so doesn't have to be unique\n * @param originalName File name\n * @returns The file name of the copy\n */\n static getCopyFileName(originalName) {\n var extensionPosition = originalName.lastIndexOf('.');\n var extension = null;\n var name = null;\n if (extensionPosition < 0) {\n // No extension\n name = originalName;\n } else {\n name = originalName.substring(0, extensionPosition);\n extension = originalName.substring(extensionPosition + 1);\n }\n var copyName = name ? \"\".concat(name, \"-copy\") : 'Copy';\n return extension !== null ? \"\".concat(copyName, \".\").concat(extension) : copyName;\n }\n static getUniqueCopyFileName(fileStorage, originalName) {\n return _asyncToGenerator(function* () {\n var copyName = FileUtils.getCopyFileName(originalName);\n // await in loop is fine here, this isn't a parallel task\n // eslint-disable-next-line no-await-in-loop\n while (yield FileUtils.fileExists(fileStorage, copyName)) {\n copyName = FileUtils.getCopyFileName(copyName);\n }\n return copyName;\n })();\n }\n\n /**\n * Return a MIME type for the provided file\n * @param name The file name to get the type for\n * @returns A known MIME type if recognized\n */\n static getMimeType(name) {\n var extension = this.getExtension(name).toLowerCase();\n switch (extension) {\n case 'groovy':\n return MIME_TYPE.GROOVY;\n case 'py':\n return MIME_TYPE.PYTHON;\n case 'pyc':\n return MIME_TYPE.PYTHON_COMPILED;\n case 'scala':\n return MIME_TYPE.SCALA;\n case 'txt':\n return MIME_TYPE.PLAIN_TEXT;\n default:\n return MIME_TYPE.UNKNOWN;\n }\n }\n\n /**\n * Pop the last part of the filename component to return the parent path\n * @param name The file name to get the parent path of\n */\n static getParent(name) {\n if (!FileUtils.hasPath(name)) {\n throw new Error(\"Invalid name provided: \".concat(name));\n }\n var parts = name.split('/');\n while (parts.pop() === '');\n if (parts.length === 0) {\n throw new Error(\"No parent for path provided: \".concat(name));\n }\n return \"\".concat(parts.join('/'), \"/\");\n }\n\n /**\n * Get the path name portion of the file\n * @param name The full path with or without filename to get the path of\n * @returns Just the path with out the file name part, including trailing slash\n */\n static getPath(name) {\n if (!FileUtils.hasPath(name)) {\n throw new Error(\"Invalid filename provided: \".concat(name));\n }\n var parts = name.split('/');\n parts.pop();\n return \"\".concat(parts.join('/'), \"/\");\n }\n\n /**\n * Check if a given file name includes the full path\n * @param name The file name to check\n * @returns True if it's a full path, false otherwise\n */\n static hasPath(name) {\n return name.startsWith('/');\n }\n\n /**\n * Check a given file name is a path\n * @param name The file name to check\n * @returns True if it's a full path, false otherwise\n */\n static isPath(name) {\n return name.startsWith('/') && name.endsWith('/');\n }\n\n /**\n * Turns a directory file name into a path. Basically ensures there's a trailing slash\n * @param name The directory name to make a path\n */\n static makePath(name) {\n if (!name.endsWith('/')) {\n return \"\".concat(name, \"/\");\n }\n return name;\n }\n\n /**\n * Replace extension in the item name\n * @param name Name to replace the extension in\n * @param newExtension New extension, defaults to no extension\n */\n static replaceExtension(name) {\n var newExtension = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var index = name.lastIndexOf('.');\n var nameWithoutExtension = index > -1 ? name.substring(0, index) : name;\n var extensionString = FileUtils.fileExtensionToString(newExtension);\n return \"\".concat(nameWithoutExtension).concat(extensionString);\n }\n\n /**\n * Validate the provided name. Throws an error if validation fails\n * @param name The item name to validate\n */\n static validateName(name) {\n // Static checks\n var reservedNames = ['.', '..'];\n // Global flag to show all invalid chars, not just the first match\n var invalidCharsRegex = /[\\\\/\\0]/g;\n var invalidCharLabels = new Map([['\\0', 'null']]);\n if (!name) {\n throw new ValidationError(\"Name cannot be empty\");\n }\n if (reservedNames.includes(name)) {\n throw new ValidationError(\"\\\"\".concat(name, \"\\\" is a reserved name\"));\n }\n if (invalidCharsRegex.test(name)) {\n var _name$match$reduce$ma, _name$match2;\n throw new ValidationError(\"Invalid characters in name: \\\"\".concat((_name$match$reduce$ma = (_name$match2 = name.match(invalidCharsRegex)\n // Filter out duplicates\n ) === null || _name$match2 === void 0 ? void 0 : _name$match2.reduce((acc, next) => acc.includes(next) ? acc : [...acc, next], []).map(char => invalidCharLabels.has(char) ? invalidCharLabels.get(char) : char).join('\", \"')) !== null && _name$match$reduce$ma !== void 0 ? _name$match$reduce$ma : '', \"\\\"\"));\n }\n }\n\n /**\n * Reduce the provided paths to the minimum selection.\n * Removes any nested files or directories if a parent is already selected.\n * @param paths The paths to reduce\n */\n static reducePaths(paths) {\n var folders = paths.filter(path => FileUtils.isPath(path));\n return paths.filter(path => !folders.some(folder => path !== folder && path.startsWith(folder)));\n }\n\n /**\n * Removes the root path from the provided file name. Throws if the filename does not start with root.\n * @param root The root to remove\n * @param filename Filename to remove the root path from\n * @returns Filename without the root\n */\n static removeRoot(root, filename) {\n if (root.length === 0) {\n return filename;\n }\n if (!filename.startsWith(root)) {\n throw new Error(\"Filename \".concat(filename, \" does not start with expected root \").concat(root));\n }\n return filename.substring(root.length);\n }\n\n /**\n * Add root to the filename as prefix\n * @param path Filename to prefix root to\n * @returns Filename with root at the prefix\n */\n static addRoot(root, path) {\n return \"\".concat(root).concat(path);\n }\n}\nexport default FileUtils;\n//# sourceMappingURL=FileUtils.js.map","import { isDirectory } from \"./FileStorage.js\";\nimport FileUtils from \"./FileUtils.js\";\nexport var DEFAULT_ROW_HEIGHT = 26;\nexport function getPathFromItem(file) {\n return isDirectory(file) ? FileUtils.makePath(file.filename) : FileUtils.getPath(file.filename);\n}\n\n/**\n * Get the move operation for the current selection and the given target. Throws if the operation is invalid.\n */\nexport function getMoveOperation(draggedItems, targetItem) {\n if (draggedItems.length === 0 || targetItem == null) {\n throw new Error('No items to move');\n }\n var targetPath = getPathFromItem(targetItem);\n if (draggedItems.some(_ref => {\n var {\n filename\n } = _ref;\n return FileUtils.getPath(filename) === targetPath;\n })) {\n // Cannot drop if target is one of the dragged items is already in the target folder\n throw new Error('File already in the destination folder');\n }\n if (draggedItems.some(item => isDirectory(item) && targetPath.startsWith(FileUtils.makePath(item.filename)))) {\n // Cannot drop if target is a child of one of the directories being moved\n throw new Error('Destination folder cannot be a child of a dragged folder');\n }\n return {\n files: draggedItems,\n targetPath\n };\n}\n//# sourceMappingURL=FileListUtils.js.map","import React from 'react';\nimport { Tooltip } from '@deephaven/components';\nimport { dhPython, vsCode, vsFolder, vsFolderOpened } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport classNames from 'classnames';\nimport { isDirectory } from \"./FileStorage.js\";\nimport \"./FileList.css\";\nimport FileUtils, { MIME_TYPE } from \"./FileUtils.js\";\nimport { getPathFromItem } from \"./FileListUtils.js\";\n/**\n * Get the icon definition for a file or folder item\n * @param item Item to get the icon for\n * @returns Icon definition to pass in the FontAwesomeIcon icon prop\n */\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getItemIcon(item) {\n if (isDirectory(item)) {\n return item.isExpanded ? vsFolderOpened : vsFolder;\n }\n var mimeType = FileUtils.getMimeType(item.basename);\n switch (mimeType) {\n case MIME_TYPE.PYTHON:\n return dhPython;\n default:\n return vsCode;\n }\n}\nexport function FileListItem(props) {\n var _draggedItems$some;\n var {\n children,\n draggedItems,\n isDragInProgress,\n isDropTargetValid,\n isSelected,\n item,\n itemIndex,\n dropTargetItem,\n onDragStart: _onDragStart,\n onDragOver: _onDragOver,\n onDragEnd: _onDragEnd,\n onDragExit,\n onDrop: _onDrop\n } = props;\n var isDragged = (_draggedItems$some = draggedItems === null || draggedItems === void 0 ? void 0 : draggedItems.some(draggedItem => draggedItem.id === item.id)) !== null && _draggedItems$some !== void 0 ? _draggedItems$some : false;\n var itemPath = getPathFromItem(item);\n var dropTargetPath = isDragInProgress && dropTargetItem ? getPathFromItem(dropTargetItem) : null;\n var isExactDropTarget = isDragInProgress && isDropTargetValid && isDirectory(item) && dropTargetPath === itemPath;\n var isInDropTarget = isDragInProgress && isDropTargetValid && dropTargetPath === itemPath;\n var isInvalidDropTarget = isDragInProgress && !isDropTargetValid && dropTargetPath === itemPath;\n var icon = getItemIcon(item);\n var depth = FileUtils.getDepth(item.filename);\n var depthLines = Array(depth).fill(null).map((value, index) =>\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n _jsx(\"span\", {\n className: \"file-list-depth-line\"\n }, index));\n return /*#__PURE__*/_jsxs(\"div\", {\n className: classNames('d-flex w-100 align-items-center', 'file-list-item', {\n 'is-dragged': isDragged,\n 'is-exact-drop-target': isExactDropTarget,\n 'is-in-drop-target': isInDropTarget,\n 'is-invalid-drop-target': isInvalidDropTarget,\n 'is-selected': isSelected\n }),\n onDragStart: e => _onDragStart(itemIndex, e),\n onDragOver: e => _onDragOver(itemIndex, e),\n onDragEnd: e => _onDragEnd(itemIndex, e),\n onDragExit: onDragExit,\n onDrop: e => _onDrop(itemIndex, e),\n draggable: true,\n role: \"presentation\",\n \"aria-label\": item.basename,\n children: [depthLines, ' ', /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: icon,\n className: \"item-icon\",\n fixedWidth: true\n }), ' ', /*#__PURE__*/_jsx(\"span\", {\n className: \"truncation-wrapper\",\n children: children !== null && children !== void 0 ? children : /*#__PURE__*/_jsxs(_Fragment, {\n children: [item.basename, /*#__PURE__*/_jsx(Tooltip, {\n children: item.basename\n })]\n })\n })]\n });\n}\nexport default FileListItem;\n//# sourceMappingURL=FileListItem.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { ItemList } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { RangeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { isDirectory } from \"./FileStorage.js\";\nimport \"./FileList.css\";\nimport { DEFAULT_ROW_HEIGHT, getMoveOperation } from \"./FileListUtils.js\";\nimport { FileListItem } from \"./FileListItem.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar log = Log.module('FileList');\n// How long you need to hover over a directory before it expands\nvar DRAG_HOVER_TIMEOUT = 500;\nvar ITEM_LIST_CLASS_NAME = 'item-list-scroll-pane';\n\n/**\n * Component that displays and allows interaction with the file system in the provided FileStorageTable.\n */\nexport function FileList(props) {\n var {\n isMultiSelect = false,\n table,\n onFocusChange = () => undefined,\n onMove,\n onSelect,\n onSelectionChange = () => undefined,\n renderItem = FileListItem,\n rowHeight = DEFAULT_ROW_HEIGHT,\n overscanCount = ItemList.DEFAULT_OVERSCAN\n } = props;\n var [loadedViewport, setLoadedViewport] = useState(() => ({\n items: [],\n offset: 0,\n itemCount: 0\n }));\n var [viewport, setViewport] = useState({\n top: 0,\n bottom: 0\n });\n var [dropTargetItem, setDropTargetItem] = useState();\n var [draggedItems, setDraggedItems] = useState();\n var [dragPlaceholder, setDragPlaceholder] = useState();\n var [selectedRanges, setSelectedRanges] = useState([]);\n var focusedIndex = useRef();\n var itemList = useRef(null);\n var fileList = useRef(null);\n var getItems = useCallback(ranges => {\n if (ranges.length === 0 || loadedViewport == null) {\n return [];\n }\n var items = [];\n for (var i = 0; i < ranges.length; i += 1) {\n var range = ranges[i];\n for (var j = range[0]; j <= range[1]; j += 1) {\n if (j >= loadedViewport.offset && j < loadedViewport.offset + loadedViewport.items.length) {\n items.push(loadedViewport.items[j - loadedViewport.offset]);\n }\n }\n }\n return items;\n }, [loadedViewport]);\n var getItem = useCallback(itemIndex => {\n var items = getItems([[itemIndex, itemIndex]]);\n if (items.length > 0) {\n return items[0];\n }\n }, [getItems]);\n\n /**\n * Get the placeholder text to show when a drag operation is in progress\n */\n var getDragPlaceholderText = useCallback(() => {\n var count = RangeUtils.count(selectedRanges);\n if (count === 0) {\n return null;\n }\n if (count === 1) {\n var index = selectedRanges[0][0];\n var item = getItem(index);\n if (item != null) {\n return item.filename;\n }\n }\n return \"\".concat(count, \" items\");\n }, [getItem, selectedRanges]);\n\n /**\n * Drop the currently dragged items at the currently set drop target.\n * If an itemIndex is provided, focus that index after the drop.\n */\n var dropItems = useCallback(itemIndex => {\n if (!draggedItems || !dropTargetItem) {\n return;\n }\n log.debug('dropItems', draggedItems, 'to', itemIndex);\n try {\n var {\n files,\n targetPath\n } = getMoveOperation(draggedItems, dropTargetItem);\n onMove === null || onMove === void 0 || onMove(files, targetPath);\n if (itemIndex != null) {\n var _itemList$current;\n setSelectedRanges([[itemIndex, itemIndex]]);\n (_itemList$current = itemList.current) === null || _itemList$current === void 0 || _itemList$current.focusItem(itemIndex);\n }\n } catch (err) {\n log.error('Unable to complete move', err);\n }\n }, [draggedItems, dropTargetItem, onMove]);\n var handleSelect = useCallback((itemIndex, event) => {\n var item = loadedViewport.items[itemIndex - loadedViewport.offset];\n if (item !== undefined) {\n log.debug('handleItemClick', item);\n onSelect(item, event);\n if (isDirectory(item)) {\n table === null || table === void 0 || table.setExpanded(item.filename, !item.isExpanded);\n }\n }\n }, [loadedViewport, onSelect, table]);\n var handleItemDragStart = useCallback((itemIndex, e) => {\n var _itemList$current2, _getDragPlaceholderTe;\n log.debug2('handleItemDragStart', itemIndex, selectedRanges);\n var draggedRanges = selectedRanges;\n if (!RangeUtils.isSelected(selectedRanges, itemIndex)) {\n draggedRanges = [[itemIndex, itemIndex]];\n setSelectedRanges(draggedRanges);\n }\n setDraggedItems(getItems(draggedRanges));\n\n // We need to reset reset the mouse state since we steal the drag\n (_itemList$current2 = itemList.current) === null || _itemList$current2 === void 0 || _itemList$current2.resetMouseState();\n var newDragPlaceholder = document.createElement('div');\n var dndPlaceholderContent = document.createElement('div');\n dndPlaceholderContent.className = 'dnd-placeholder-content';\n dndPlaceholderContent.innerText = (_getDragPlaceholderTe = getDragPlaceholderText()) !== null && _getDragPlaceholderTe !== void 0 ? _getDragPlaceholderTe : '';\n newDragPlaceholder.appendChild(dndPlaceholderContent);\n newDragPlaceholder.className = 'file-list-dnd-placeholder';\n document.body.appendChild(newDragPlaceholder);\n e.dataTransfer.setDragImage(newDragPlaceholder, 0, 0);\n e.dataTransfer.effectAllowed = 'move';\n setDragPlaceholder(newDragPlaceholder);\n }, [getDragPlaceholderText, getItems, selectedRanges]);\n var handleItemDragOver = useCallback((itemIndex, e) => {\n e.preventDefault();\n log.debug2('handleItemDragOver', e);\n setDropTargetItem(getItem(itemIndex));\n }, [getItem]);\n var handleItemDragEnd = useCallback((itemIndex, e) => {\n log.debug('handleItemDragEnd', itemIndex);\n dragPlaceholder === null || dragPlaceholder === void 0 || dragPlaceholder.remove();\n\n // Drag end is triggered after drop\n // Also drop isn't triggered if drag end is outside of the list\n setDraggedItems(undefined);\n setDropTargetItem(undefined);\n setDragPlaceholder(undefined);\n }, [dragPlaceholder]);\n var handleItemDrop = useCallback((itemIndex, e) => {\n dropItems(itemIndex);\n }, [dropItems]);\n var handleItemDragExit = useCallback(() => {\n log.debug2('handleItemDragExit');\n setDropTargetItem(undefined);\n }, []);\n var handleListDragOver = useCallback(e => {\n if (e.target instanceof Element && e.target.classList.contains(ITEM_LIST_CLASS_NAME)) {\n // Need to prevent default to enable drop\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#droptargets\n e.preventDefault();\n log.debug2('handleListDragOver', e);\n setDropTargetItem({\n type: 'directory',\n filename: '/',\n basename: '/',\n id: '/'\n });\n }\n }, []);\n var handleListDrop = useCallback(e => {\n if (e.target instanceof Element && e.target.classList.contains(ITEM_LIST_CLASS_NAME)) {\n log.debug('handleListDrop');\n dropItems();\n }\n }, [dropItems]);\n var handleSelectionChange = useCallback(function (newSelectedRanges) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n log.debug2('handleSelectionChange', newSelectedRanges);\n if (force === true || newSelectedRanges !== selectedRanges) {\n setSelectedRanges(newSelectedRanges);\n var selectedItems = getItems(newSelectedRanges);\n onSelectionChange(selectedItems);\n }\n }, [getItems, onSelectionChange, selectedRanges]);\n var handleFocusChange = useCallback(focusIndex => {\n log.debug2('handleFocusChange', focusIndex);\n if (focusIndex != null) {\n var [focusedItem] = getItems([[focusIndex, focusIndex]]);\n onFocusChange(focusedItem);\n } else {\n onFocusChange();\n }\n focusedIndex.current = focusIndex;\n }, [getItems, onFocusChange]);\n var handleViewportChange = useCallback((top, bottom) => {\n log.debug('handleViewportChange', top, bottom);\n if (top !== viewport.top || bottom !== viewport.bottom) {\n setViewport({\n top,\n bottom\n });\n }\n }, [viewport]);\n var isDropTargetValid = useMemo(() => {\n if (!draggedItems || !dropTargetItem) {\n return false;\n }\n try {\n getMoveOperation(draggedItems, dropTargetItem);\n log.debug('handleValidateDropTarget true');\n return true;\n } catch (e) {\n log.debug('handleValidateDropTarget false');\n return false;\n }\n }, [draggedItems, dropTargetItem]);\n var {\n focusedPath\n } = props;\n useEffect(() => {\n if (focusedPath !== undefined) {\n if (focusedPath === '/') {\n table.collapseAll();\n } else {\n table.setExpanded(focusedPath, false);\n table.setExpanded(focusedPath, true);\n }\n }\n }, [table, focusedPath]);\n useEffect(function updateTableViewport() {\n log.debug('updating table viewport', viewport);\n table === null || table === void 0 || table.setViewport({\n top: Math.max(0, viewport.top - overscanCount),\n bottom: viewport.bottom + overscanCount\n });\n }, [overscanCount, table, viewport]);\n\n // Listen for table updates\n useEffect(function setLoadedViewportAndReturnCleanup() {\n var listenerRemover = table.onUpdate(newViewport => {\n setLoadedViewport({\n items: newViewport.items.map(item => _objectSpread(_objectSpread({}, item), {}, {\n itemName: item.basename\n })),\n offset: newViewport.offset,\n itemCount: table.size\n });\n });\n return () => {\n listenerRemover();\n };\n }, [table]);\n\n // if the loadedViewport changes, re-fire the focused\n // item and the selected range items as they could have\n // been updated\n useEffect(function updateFocusAndSelection() {\n if (focusedIndex.current != null) {\n handleFocusChange(focusedIndex.current);\n }\n if (selectedRanges.length > 0) {\n // force the update, as the selected range may be the same\n // but the selected items may now be different\n handleSelectionChange(selectedRanges, true);\n }\n }, [loadedViewport, handleFocusChange, handleSelectionChange, selectedRanges]);\n\n // Expand a folder if hovering over it\n useEffect(function expandFolderOnHover() {\n if (dropTargetItem != null && isDirectory(dropTargetItem) && dropTargetItem.filename !== '/') {\n var timeout = setTimeout(() => {\n if (!dropTargetItem.isExpanded) {\n table === null || table === void 0 || table.setExpanded(dropTargetItem.filename, true);\n }\n }, DRAG_HOVER_TIMEOUT);\n return () => clearTimeout(timeout);\n }\n }, [dropTargetItem, table]);\n var renderWrapper = useCallback(itemProps => renderItem(_objectSpread(_objectSpread({}, itemProps), {}, {\n isDragInProgress: draggedItems != null,\n dropTargetItem,\n draggedItems,\n isDropTargetValid,\n onDragStart: handleItemDragStart,\n onDragEnd: handleItemDragEnd,\n onDragOver: handleItemDragOver,\n onDragExit: handleItemDragExit,\n onDrop: handleItemDrop\n })), [handleItemDragEnd, handleItemDragExit, handleItemDragOver, handleItemDragStart, handleItemDrop, draggedItems, dropTargetItem, isDropTargetValid, renderItem]);\n return /*#__PURE__*/_jsx(\"div\", {\n ref: fileList,\n className: classNames('file-list', {\n 'is-dragging': draggedItems != null\n }),\n onDragOver: handleListDragOver,\n onDrop: handleListDrop,\n children: /*#__PURE__*/_jsx(ItemList, {\n ref: itemList,\n items: loadedViewport.items,\n itemCount: loadedViewport.itemCount,\n offset: loadedViewport.offset,\n onFocusChange: handleFocusChange,\n onSelect: handleSelect,\n onSelectionChange: handleSelectionChange,\n onViewportChange: handleViewportChange,\n selectedRanges: selectedRanges,\n renderItem: renderWrapper,\n rowHeight: rowHeight,\n isMultiSelect: isMultiSelect,\n isDragSelect: false,\n isDeselectOnClick: false\n })\n });\n}\nexport default FileList;\n//# sourceMappingURL=FileList.js.map","import { ShortcutRegistry, KEY, MODIFIER } from '@deephaven/components';\nvar FILE_EXPLORER = {\n name: 'File Explorer',\n DELETE: ShortcutRegistry.createAndAdd({\n id: 'FILE_EXPLORER.DELETE',\n name: 'Delete',\n shortcut: [KEY.DELETE],\n macShortcut: [MODIFIER.CMD, KEY.BACKSPACE]\n }),\n RENAME: ShortcutRegistry.createAndAdd({\n id: 'FILE_EXPLORER.RENAME',\n name: 'Rename',\n shortcut: [KEY.ENTER],\n macShortcut: [KEY.ENTER]\n })\n};\nexport default {\n FILE_EXPLORER\n};\n//# sourceMappingURL=FileExplorerShortcuts.js.map","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport \"./FileListItemEditor.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('FileListItemEditor');\nvar DEFAULT_VALIDATE = () => Promise.resolve();\nexport function FileListItemEditor(_ref) {\n var {\n item,\n onCancel,\n onSubmit,\n validate = DEFAULT_VALIDATE\n } = _ref;\n var input = useRef(null);\n var [value, setValue] = useState(item.basename);\n var [validationError, setValidationError] = useState();\n var [validationPromise, setValidationPromise] = useState(Promise.resolve());\n var focus = useCallback(() => {\n var _input$current;\n (_input$current = input.current) === null || _input$current === void 0 || _input$current.focus();\n // Select the proper range based on the type...\n }, [input]);\n var stopPropagation = useCallback(e => e.stopPropagation(), []);\n var validateAndSubmit = useCallback(() => {\n validationPromise.then(() => {\n onSubmit(value);\n }).catch(e => log.info('Unable to validate name', e));\n }, [onSubmit, value, validationPromise]);\n useEffect(function validateValueAndSetPromise() {\n var validatePromise = PromiseUtils.makeCancelable(validate(value));\n validatePromise.then(() => setValidationError(undefined)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n setValidationError(e);\n }\n });\n setValidationPromise(validatePromise);\n return () => validatePromise.cancel();\n }, [validate, value]);\n useEffect(function selectRange() {\n focus();\n }, [focus]);\n var handleBlur = useCallback(() => {\n log.debug2('handleBlur');\n validateAndSubmit();\n }, [validateAndSubmit]);\n var handleChange = useCallback(e => {\n var {\n value: newValue\n } = e.target;\n setValue(newValue);\n }, []);\n var handleKeyDown = useCallback(e => {\n e.stopPropagation();\n var {\n key\n } = e;\n switch (key) {\n case 'Enter':\n {\n validateAndSubmit();\n break;\n }\n case 'Escape':\n {\n onCancel();\n break;\n }\n default:\n }\n }, [onCancel, validateAndSubmit]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"file-list-item-editor\",\n children: [/*#__PURE__*/_jsx(\"input\", {\n type: \"text\",\n className: classNames('form-control file-list-item-editor-input', {\n 'is-invalid': validationError\n }),\n value: value,\n ref: input,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n onClick: stopPropagation,\n onDoubleClick: stopPropagation,\n onMouseDown: stopPropagation\n }), validationError && /*#__PURE__*/_jsx(\"div\", {\n className: \"invalid-feedback\",\n children: \"\".concat(validationError)\n })]\n });\n}\nexport default FileListItemEditor;\n//# sourceMappingURL=FileListItemEditor.js.map","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { ContextActions } from '@deephaven/components';\nimport { assertNotNull } from '@deephaven/utils';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport FileList from \"./FileList.js\";\nimport { FileListItem } from \"./FileListItem.js\";\nimport { DEFAULT_ROW_HEIGHT } from \"./FileListUtils.js\";\nimport { isDirectory } from \"./FileStorage.js\";\nimport SHORTCUTS from \"./FileExplorerShortcuts.js\";\nimport \"./FileExplorer.css\";\nimport FileUtils from \"./FileUtils.js\";\nimport FileListItemEditor from \"./FileListItemEditor.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Component that displays and allows interaction with the file system in the provided FileStorage.\n */\nexport function FileListContainer(props) {\n var {\n isMultiSelect = false,\n focusedPath,\n showContextMenu = false,\n onCreateFile,\n onCreateFolder,\n onCopy,\n onDelete,\n onMove,\n onRename,\n onSelect,\n onSelectionChange,\n table,\n rowHeight = DEFAULT_ROW_HEIGHT,\n validateRename = () => Promise.resolve()\n } = props;\n var [renameItem, setRenameItem] = useState();\n var [selectedItems, setSelectedItems] = useState([]);\n var [focusedItem, setFocusedItem] = useState();\n var handleSelectionChange = useCallback(newSelectedItems => {\n setSelectedItems(newSelectedItems);\n onSelectionChange === null || onSelectionChange === void 0 || onSelectionChange(newSelectedItems);\n }, [onSelectionChange]);\n var handleFocusChange = useCallback(newFocusedItem => {\n setFocusedItem(newFocusedItem);\n }, []);\n var handleCopyAction = useCallback(() => {\n if (focusedItem) {\n onCopy === null || onCopy === void 0 || onCopy(focusedItem);\n }\n }, [focusedItem, onCopy]);\n var handleDeleteAction = useCallback(() => {\n if (selectedItems.length > 0) {\n onDelete === null || onDelete === void 0 || onDelete(selectedItems);\n }\n }, [onDelete, selectedItems]);\n var handleNewFileAction = useCallback(() => {\n onCreateFile === null || onCreateFile === void 0 || onCreateFile();\n }, [onCreateFile]);\n var handleNewFolderAction = useCallback(() => {\n if (focusedItem) {\n onCreateFolder === null || onCreateFolder === void 0 || onCreateFolder(FileUtils.getPath(focusedItem.filename));\n }\n }, [focusedItem, onCreateFolder]);\n var handleRenameAction = useCallback(() => {\n if (focusedItem) {\n setRenameItem(focusedItem);\n }\n }, [focusedItem]);\n var handleRenameCancel = useCallback(() => {\n setRenameItem(undefined);\n }, []);\n var handleRenameSubmit = useCallback(newName => {\n if (renameItem) {\n onRename === null || onRename === void 0 || onRename(renameItem, newName);\n setRenameItem(undefined);\n }\n }, [onRename, renameItem]);\n var actions = useMemo(() => {\n if (renameItem) {\n // While renaming, we don't want to enable any of the context actions or it may interfere with renaming input\n return [];\n }\n var result = [];\n if (onCreateFile) {\n result.push({\n title: 'New File',\n description: 'Create new file',\n action: handleNewFileAction,\n group: ContextActions.groups.medium\n });\n }\n if (onCreateFolder) {\n result.push({\n title: 'New Folder',\n description: 'Create new folder',\n action: handleNewFolderAction,\n group: ContextActions.groups.medium\n });\n }\n if (onCopy) {\n result.push({\n title: 'Copy File',\n description: 'Copy the selected file',\n action: handleCopyAction,\n group: ContextActions.groups.low,\n disabled: focusedItem == null || isDirectory(focusedItem)\n });\n }\n if (onDelete && selectedItems.length > 0) {\n result.push({\n title: 'Delete',\n description: 'Delete',\n shortcut: SHORTCUTS.FILE_EXPLORER.DELETE,\n action: handleDeleteAction,\n group: ContextActions.groups.low\n });\n }\n if (onRename) {\n result.push({\n title: 'Rename',\n description: 'Rename',\n shortcut: SHORTCUTS.FILE_EXPLORER.RENAME,\n action: handleRenameAction,\n group: ContextActions.groups.low,\n disabled: focusedItem == null\n });\n }\n return result;\n }, [handleCopyAction, handleDeleteAction, handleNewFileAction, handleNewFolderAction, handleRenameAction, focusedItem, onCopy, onCreateFile, onCreateFolder, onDelete, onRename, selectedItems, renameItem]);\n var validateRenameItem = useCallback(newName => {\n assertNotNull(renameItem);\n return validateRename(renameItem, newName);\n }, [renameItem, validateRename]);\n var renderItem = useCallback(itemProps => {\n var {\n item\n } = itemProps;\n if (renameItem && renameItem.filename === item.filename) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n _jsx(FileListItem, _objectSpread(_objectSpread({}, itemProps), {}, {\n children: /*#__PURE__*/_jsx(FileListItemEditor, {\n item: item,\n validate: validateRenameItem,\n onSubmit: handleRenameSubmit,\n onCancel: handleRenameCancel\n })\n }))\n );\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n return /*#__PURE__*/_jsx(FileListItem, _objectSpread({}, itemProps));\n }, [handleRenameCancel, handleRenameSubmit, renameItem, validateRenameItem]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"file-list-container\",\n children: [table != null && /*#__PURE__*/_jsx(FileList, {\n onMove: onMove,\n onSelect: onSelect,\n onSelectionChange: handleSelectionChange,\n onFocusChange: handleFocusChange,\n renderItem: renderItem,\n rowHeight: rowHeight,\n table: table,\n isMultiSelect: isMultiSelect,\n focusedPath: focusedPath\n }), showContextMenu && /*#__PURE__*/_jsx(ContextActions, {\n actions: actions\n })]\n });\n}\nFileListContainer.displayName = 'FileListContainer';\nexport default FileListContainer;\n//# sourceMappingURL=FileListContainer.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { ValidationError } from '@deephaven/utils';\nclass FileExistsError extends ValidationError {\n constructor(info) {\n super('Name already exists');\n _defineProperty(this, \"isExistingFile\", true);\n _defineProperty(this, \"info\", void 0);\n this.info = info;\n }\n}\nexport default FileExistsError;\n//# sourceMappingURL=FileExistsError.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nimport { BasicModal } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { DEFAULT_ROW_HEIGHT } from \"./FileListUtils.js\";\nimport { isDirectory } from \"./FileStorage.js\";\nimport \"./FileExplorer.css\";\nimport FileListContainer from \"./FileListContainer.js\";\nimport FileUtils from \"./FileUtils.js\";\nimport FileExistsError from \"./FileExistsError.js\";\nimport FileNotFoundError from \"./FileNotFoundError.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('FileExplorer');\n/**\n * Component that displays and allows interaction with the file system in the provided FileStorage.\n */\nexport function FileExplorer(props) {\n var {\n storage,\n isMultiSelect = false,\n focusedPath,\n onCopy = () => undefined,\n onDelete = () => undefined,\n onRename = () => undefined,\n onCreateFile = () => undefined,\n onCreateFolder = () => undefined,\n onSelect,\n onSelectionChange,\n rowHeight = DEFAULT_ROW_HEIGHT\n } = props;\n var [itemsToDelete, setItemsToDelete] = useState([]);\n var [table, setTable] = useState();\n useEffect(function initializeTable() {\n var tablePromise;\n function initTable() {\n return _initTable.apply(this, arguments);\n }\n function _initTable() {\n _initTable = _asyncToGenerator(function* () {\n log.debug('initTable');\n tablePromise = PromiseUtils.makeCancelable(storage.getTable(), t => t.close());\n try {\n setTable(yield tablePromise);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to initialize table', e);\n }\n }\n });\n return _initTable.apply(this, arguments);\n }\n initTable();\n return () => {\n tablePromise.cancel();\n };\n }, [storage]);\n var handleError = useCallback(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error(e);\n }\n }, []);\n var handleCreateFile = useCallback(() => {\n log.debug('handleCreateFile');\n onCreateFile();\n }, [onCreateFile]);\n var handleCreateFolder = useCallback(() => {\n log.debug('handleCreateFolder');\n onCreateFolder();\n }, [onCreateFolder]);\n var handleCopyFile = useCallback(file => {\n log.debug('handleCopyFile', file.filename);\n onCopy(file);\n }, [onCopy]);\n var handleDelete = useCallback(files => {\n log.debug('handleDelete, pending confirmation', files);\n setItemsToDelete(files);\n }, []);\n var handleDeleteConfirm = useCallback(() => {\n log.debug('handleDeleteConfirm', itemsToDelete);\n itemsToDelete.forEach(file => storage.deleteFile(isDirectory(file) ? FileUtils.makePath(file.filename) : file.filename));\n onDelete(itemsToDelete);\n setItemsToDelete([]);\n }, [itemsToDelete, onDelete, storage]);\n var handleDeleteCancel = useCallback(() => {\n log.debug('handleDeleteCancel');\n setItemsToDelete([]);\n }, []);\n var handleMove = useCallback((files, path) => {\n var filesToMove = FileUtils.reducePaths(files.map(file => isDirectory(file) ? FileUtils.makePath(file.filename) : file.filename));\n filesToMove.forEach(file => {\n var newFile = FileUtils.isPath(file) ? \"\".concat(path).concat(FileUtils.getBaseName(file.substring(0, file.length - 1)), \"/\") : \"\".concat(path).concat(FileUtils.getBaseName(file));\n storage.moveFile(file, newFile).then(() => {\n // Each moved file triggers a rename so parent knows something has happened\n // We signal each individually if for some reason there's an error moving one of the files\n onRename(file, newFile);\n }).catch(handleError);\n });\n }, [handleError, onRename, storage]);\n var handleRename = useCallback((item, newName) => {\n var name = item.filename;\n var isDir = isDirectory(item);\n if (isDir && !name.endsWith('/')) {\n name = \"\".concat(name, \"/\");\n }\n var destination = \"\".concat(FileUtils.getParent(name)).concat(newName);\n if (isDir && !destination.endsWith('/')) {\n destination = \"\".concat(destination, \"/\");\n }\n log.debug2('handleRename', name, destination);\n storage.moveFile(name, destination).catch(handleError);\n onRename(name, destination);\n }, [handleError, onRename, storage]);\n var handleValidateRename = useCallback(/*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (renameItem, newName) {\n if (newName === renameItem.basename) {\n // Same name is fine\n return undefined;\n }\n FileUtils.validateName(newName);\n var newValue = \"\".concat(FileUtils.getPath(renameItem.filename)).concat(newName);\n try {\n var fileInfo = yield storage.info(newValue);\n throw new FileExistsError(fileInfo);\n } catch (e) {\n if (!(e instanceof FileNotFoundError)) {\n throw e;\n }\n // The file does not exist, fine to save at that path\n }\n });\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }(), [storage]);\n var isDeleteConfirmationShown = itemsToDelete.length > 0;\n var deleteConfirmationMessage = useMemo(() => {\n if (itemsToDelete.length === 1) {\n return \"Are you sure you want to delete \\\"\".concat(itemsToDelete[0].filename, \"\\\"?\");\n }\n return \"Are you sure you want to delete the selected files?\";\n }, [itemsToDelete]);\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"file-explorer\",\n children: [table && /*#__PURE__*/_jsx(FileListContainer, {\n isMultiSelect: isMultiSelect,\n focusedPath: focusedPath,\n showContextMenu: true,\n onCopy: handleCopyFile,\n onCreateFolder: handleCreateFolder,\n onCreateFile: handleCreateFile,\n onMove: handleMove,\n onDelete: handleDelete,\n onRename: handleRename,\n onSelect: onSelect,\n onSelectionChange: onSelectionChange,\n rowHeight: rowHeight,\n table: table,\n validateRename: handleValidateRename\n }), /*#__PURE__*/_jsx(BasicModal, {\n isOpen: isDeleteConfirmationShown,\n headerText: deleteConfirmationMessage,\n bodyText: \"You cannot undo this action.\",\n onCancel: handleDeleteCancel,\n onConfirm: handleDeleteConfirm,\n confirmButtonText: \"Delete\"\n })]\n });\n}\nFileExplorer.displayName = 'FileExplorer';\nexport default FileExplorer;\n//# sourceMappingURL=FileExplorer.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { Modal, ModalBody, ModalFooter, ModalHeader, BasicModal, Button } from '@deephaven/components';\nimport { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { vsHome } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport FileExplorer from \"./FileExplorer.js\";\nimport FileUtils from \"./FileUtils.js\";\nimport \"./NewItemModal.css\";\nimport FileExistsError from \"./FileExistsError.js\";\nimport FileNotFoundError from \"./FileNotFoundError.js\";\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nvar log = Log.module('NewItemModal');\nclass NewItemModal extends PureComponent {\n static getValidationMessage(err) {\n if (err instanceof FileExistsError && err.info.type === 'directory') {\n return 'Error: Cannot overwrite existing directory';\n }\n return \"\".concat(err);\n }\n static handleError(err) {\n if (!PromiseUtils.isCanceled(err)) {\n log.error(err);\n }\n }\n constructor(props) {\n super(props);\n _defineProperty(this, \"inputRef\", /*#__PURE__*/React.createRef());\n _defineProperty(this, \"cancelableValidatePromise\", void 0);\n _defineProperty(this, \"cancelableExistingItemPromise\", void 0);\n _defineProperty(this, \"pending\", new Pending());\n _defineProperty(this, \"pathMap\", new Map());\n _defineProperty(this, \"isInitialLoad\", true);\n this.handleModalSubmit = this.handleModalSubmit.bind(this);\n this.handleModalOpened = this.handleModalOpened.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleValidationError = this.handleValidationError.bind(this);\n this.handleOverwriteCancel = this.handleOverwriteCancel.bind(this);\n this.handleOverwriteConfirm = this.handleOverwriteConfirm.bind(this);\n this.handleExtensionChangeCancel = this.handleExtensionChangeCancel.bind(this);\n this.handleExtensionChangeConfirm = this.handleExtensionChangeConfirm.bind(this);\n this.handleBreadcrumbSelect = this.handleBreadcrumbSelect.bind(this);\n var {\n defaultValue\n } = props;\n var path = FileUtils.hasPath(defaultValue) ? FileUtils.getPath(defaultValue) : '/';\n this.state = {\n isSubmitting: false,\n path,\n prevExtension: FileUtils.getExtension(defaultValue),\n showExtensionChangeModal: false,\n showOverwriteModal: false,\n value: FileUtils.getBaseName(defaultValue)\n };\n }\n componentDidUpdate(prevProps, prevState) {\n var {\n isOpen\n } = this.props;\n var {\n isOpen: prevIsOpen\n } = prevProps;\n var {\n value,\n path\n } = this.state;\n if (!prevIsOpen && isOpen) {\n this.resetValue();\n this.isInitialLoad = true;\n }\n if (prevIsOpen && isOpen) {\n if (!this.isInitialLoad && (path !== prevState.path || value !== prevState.value)) {\n this.updateValidationStatus(path, value);\n }\n this.isInitialLoad = false;\n }\n }\n componentWillUnmount() {\n this.pending.cancel();\n if (this.cancelableValidatePromise) {\n this.cancelableValidatePromise.cancel();\n }\n if (this.cancelableExistingItemPromise) {\n this.cancelableExistingItemPromise.cancel();\n }\n }\n resetValue() {\n var {\n defaultValue\n } = this.props;\n var path = FileUtils.hasPath(defaultValue) ? FileUtils.getPath(defaultValue) : '/';\n this.setState({\n path,\n value: FileUtils.getBaseName(defaultValue),\n validationError: undefined,\n prevExtension: FileUtils.getExtension(defaultValue),\n isSubmitting: false\n });\n }\n getValidationPromise(path, name) {\n var checkExisting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (this.cancelableValidatePromise) {\n this.cancelableValidatePromise.cancel();\n }\n this.cancelableValidatePromise = PromiseUtils.makeCancelable(this.validateName(path, name, checkExisting));\n return this.cancelableValidatePromise;\n }\n validateName(path, name, checkExisting) {\n var _this = this;\n return _asyncToGenerator(function* () {\n FileUtils.validateName(name);\n var {\n defaultValue,\n storage\n } = _this.props;\n if (checkExisting) {\n var value = \"\".concat(path).concat(name);\n if (value !== defaultValue) {\n try {\n var existingFile = yield storage.info(value);\n throw new FileExistsError(existingFile);\n } catch (e) {\n if (!(e instanceof FileNotFoundError)) {\n throw e;\n }\n // There is no existing file, ignore\n }\n }\n }\n return name;\n })();\n }\n updateValidationStatus(path, newName) {\n this.getValidationPromise(path, newName).then(() => {\n this.setState({\n validationError: undefined\n });\n }).catch(this.handleValidationError).catch(NewItemModal.handleError);\n }\n handleModalOpened() {\n this.focusRenameInput();\n }\n handleModalSubmit() {\n this.submitModal();\n }\n handleChange(event) {\n var {\n value\n } = event.target;\n this.setState({\n value\n });\n }\n handleSelect(item) {\n log.debug('handleSelect', item);\n if (item.type === 'directory') {\n this.setState({\n path: FileUtils.makePath(item.filename)\n });\n } else {\n // Use selected item name and folder and focus the input\n var value = item.basename;\n var path = FileUtils.getPath(item.filename);\n this.setState({\n value,\n path\n }, () => {\n this.focusRenameInput();\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleKeyDown(e) {\n var {\n key\n } = e;\n e.stopPropagation();\n switch (key) {\n case 'Enter':\n {\n // Prevent form submit event\n e.preventDefault();\n this.submitModal();\n break;\n }\n case 'Escape':\n {\n e.preventDefault();\n var {\n onCancel\n } = this.props;\n onCancel();\n break;\n }\n default:\n }\n }\n handleValidationError(err) {\n if (!(err instanceof ValidationError)) {\n throw err;\n }\n log.debug('Validation error', err);\n this.setState({\n validationError: err\n });\n }\n handleOverwriteCancel() {\n this.setState({\n showOverwriteModal: false,\n isSubmitting: false\n });\n }\n handleOverwriteConfirm() {\n this.setState({\n showOverwriteModal: false\n });\n var {\n onSubmit\n } = this.props;\n var {\n path,\n value\n } = this.state;\n log.debug('handleOverwriteConfirm', path, value);\n onSubmit(\"\".concat(path).concat(value), true);\n }\n handleExtensionChangeCancel() {\n log.debug('handleExtensionChangeCancel');\n this.setState(_ref => {\n var {\n value,\n prevExtension\n } = _ref;\n var newValue = FileUtils.replaceExtension(value, prevExtension);\n return {\n showExtensionChangeModal: false,\n value: newValue\n };\n });\n this.submitModal(true);\n }\n handleExtensionChangeConfirm() {\n log.debug('handleExtensionChangeConfirm');\n this.setState({\n showExtensionChangeModal: false\n });\n this.submitModal(true);\n }\n\n /**\n * Focus rename input and select name part for files, select all text for folders\n */\n focusRenameInput() {\n var input = this.inputRef.current;\n if (input) {\n var {\n type\n } = this.props;\n var {\n value\n } = input;\n var selectionEnd = type === 'directory' ? value.length : value.lastIndexOf('.');\n input.focus();\n input.setSelectionRange(0, selectionEnd > 0 ? selectionEnd : value.length);\n }\n }\n submitModal() {\n var skipExtensionCheck = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.setState(_ref2 => {\n var {\n prevExtension,\n value,\n path\n } = _ref2;\n var {\n notifyOnExtensionChange,\n type\n } = this.props;\n log.debug('submitModal', prevExtension, value);\n var newExtension = FileUtils.getExtension(value);\n if (notifyOnExtensionChange && !skipExtensionCheck && prevExtension !== null && prevExtension !== newExtension) {\n return {\n isSubmitting: false,\n showExtensionChangeModal: true,\n newExtension\n };\n }\n this.getValidationPromise(path, value, true).then(newItemName => {\n var {\n onSubmit\n } = this.props;\n onSubmit(\"\".concat(path).concat(value));\n }).catch(e => {\n // Don't allow using existing names for folders\n // For files, prompt if they want to overwrite existing file\n if (e instanceof FileExistsError) {\n if (type !== 'directory' && e.info.type !== 'directory') {\n this.setState({\n showOverwriteModal: true\n });\n return;\n }\n }\n throw e;\n }).catch(e => {\n if (PromiseUtils.isCanceled(e)) {\n this.setState({\n isSubmitting: false\n });\n }\n throw e;\n }).catch(this.handleValidationError).catch(NewItemModal.handleError);\n return {\n isSubmitting: true,\n showExtensionChangeModal: false,\n newExtension: undefined\n };\n });\n }\n handleBreadcrumbSelect(directoryPath) {\n this.setState({\n path: directoryPath\n });\n }\n renderPathButtons(path) {\n var pathAsList = path.split('/');\n pathAsList.pop();\n return pathAsList.map((basename, index) => {\n var directoryPath = '';\n for (var i = 0; i < index; i += 1) {\n directoryPath += \"\".concat(pathAsList[i], \"/\");\n }\n directoryPath += \"\".concat(basename, \"/\");\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n className: \"directory-breadcrumbs\",\n onClick: () => this.handleBreadcrumbSelect(directoryPath),\n \"aria-label\": index === 0 ? 'Home' : undefined,\n icon: index === 0 ? /*#__PURE__*/_jsx(FontAwesomeIcon, {\n icon: vsHome,\n transform: \"right-1.6\"\n }) : undefined,\n tooltip: index === 0 ? 'Home' : undefined,\n children: basename\n }), \"/\"]\n }, directoryPath);\n });\n }\n render() {\n var {\n storage,\n isOpen,\n onCancel,\n placeholder,\n title,\n type\n } = this.props;\n var {\n isSubmitting,\n path,\n showExtensionChangeModal,\n showOverwriteModal,\n validationError,\n value,\n prevExtension,\n newExtension\n } = this.state;\n var isDirectory = type === 'directory';\n var prevExtensionText = FileUtils.fileExtensionToString(prevExtension);\n var newExtensionText = FileUtils.fileExtensionToString(newExtension);\n var submitBtnLabel = isDirectory ? 'Create' : 'Save';\n var nameInputLabel = isDirectory ? 'New folder name' : 'Save file as';\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsxs(Modal, {\n isOpen: isOpen,\n toggle: onCancel,\n onOpened: this.handleModalOpened,\n className: \"modal-dialog-centered new-file-modal\",\n children: [/*#__PURE__*/_jsx(ModalHeader, {\n toggle: onCancel,\n children: title\n }), /*#__PURE__*/_jsx(ModalBody, {\n children: /*#__PURE__*/_jsx(\"form\", {\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"d-flex flex-column new-file-modal-content\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"flex-grow-0 mb-4\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n htmlFor: \"file-name-input\",\n children: nameInputLabel\n }), /*#__PURE__*/_jsx(\"input\", {\n id: \"file-name-input\",\n type: \"text\",\n autoComplete: \"off\",\n autoCapitalize: \"none\",\n autoCorrect: \"off\",\n spellCheck: \"false\",\n className: classNames('form-control', {\n 'is-invalid': validationError\n }),\n value: value,\n placeholder: placeholder,\n ref: this.inputRef,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange\n }), validationError && /*#__PURE__*/_jsx(\"div\", {\n className: \"invalid-feedback\",\n children: NewItemModal.getValidationMessage(validationError)\n })]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"flex-grow-0\",\n children: [/*#__PURE__*/_jsx(\"label\", {\n children: \"Directory: /\"\n }), this.renderPathButtons(path)]\n }), /*#__PURE__*/_jsx(\"div\", {\n className: \"flex-grow-1 file-explorer-container\",\n children: /*#__PURE__*/_jsx(FileExplorer, {\n onSelect: this.handleSelect,\n storage: storage,\n focusedPath: path\n })\n })]\n })\n })\n }), /*#__PURE__*/_jsxs(ModalFooter, {\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"secondary\",\n onClick: onCancel,\n children: \"Cancel\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"primary\",\n disabled: isSubmitting,\n onClick: this.handleModalSubmit,\n children: submitBtnLabel\n })]\n })]\n }), /*#__PURE__*/_jsx(BasicModal, {\n isOpen: showOverwriteModal,\n headerText: \"Confirm overwrite\",\n bodyText: \"File with this name already exists, are you sure you want to overwrite it?\",\n onCancel: this.handleOverwriteCancel,\n onConfirm: this.handleOverwriteConfirm,\n cancelButtonText: \"Cancel\",\n confirmButtonText: \"Overwrite\"\n }), /*#__PURE__*/_jsx(BasicModal, {\n isOpen: showExtensionChangeModal,\n headerText: \"Confirm extension change\",\n bodyText: \"Are you sure you want to change extension from \\\"\".concat(prevExtensionText, \"\\\" to \\\"\").concat(newExtensionText, \"\\\"?\"),\n onCancel: this.handleExtensionChangeCancel,\n onConfirm: this.handleExtensionChangeConfirm,\n cancelButtonText: \"Keep \\\"\".concat(prevExtensionText, \"\\\"\"),\n confirmButtonText: \"Use \\\"\".concat(newExtensionText, \"\\\"\")\n })]\n });\n }\n}\n_defineProperty(NewItemModal, \"defaultProps\", {\n isOpen: false,\n defaultValue: '/',\n notifyOnExtensionChange: false,\n placeholder: '',\n onSubmit: (name, isOverwrite) => undefined,\n onCancel: () => undefined\n});\nexport default NewItemModal;\n//# sourceMappingURL=NewItemModal.js.map","import React from 'react';\nimport { Button, DebouncedSearchInput } from '@deephaven/components';\nimport { vsNewFile, vsNewFolder } from '@deephaven/icons';\nimport \"./FileExplorerToolbar.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function FileExplorerToolbar(_ref) {\n var {\n createFile,\n createFolder,\n onSearchChange,\n defaultSearchText = ''\n } = _ref;\n return /*#__PURE__*/_jsxs(\"div\", {\n className: \"file-explorer-toolbar\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"file-explorer-toolbar-buttons\",\n children: [/*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: vsNewFile,\n tooltip: \"New notebook\",\n onClick: createFile,\n \"aria-label\": \"New notebook\"\n }), /*#__PURE__*/_jsx(Button, {\n kind: \"ghost\",\n icon: vsNewFolder,\n tooltip: \"New folder\",\n onClick: createFolder,\n \"aria-label\": \"New folder\"\n })]\n }), onSearchChange && /*#__PURE__*/_jsx(\"div\", {\n className: \"file-explorer-toolbar-search\",\n children: /*#__PURE__*/_jsx(DebouncedSearchInput, {\n value: defaultSearchText,\n onChange: onSearchChange,\n placeholder: \"Search by name\"\n })\n })]\n });\n}\nexport default FileExplorerToolbar;\n//# sourceMappingURL=FileExplorerToolbar.js.map","function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport Log from '@deephaven/log';\nimport { getFileStorage } from '@deephaven/redux';\nimport FileExplorer, { FileExplorerToolbar, FileUtils, NewItemModal, isDirectory } from '@deephaven/file-explorer';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport Panel from \"./CorePanel.js\";\nimport { NotebookEvent } from \"../events/index.js\";\nimport \"./FileExplorerPanel.css\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('FileExplorerPanel');\nvar mapStateToProps = (state, ownProps) => {\n var fileStorage = getFileStorage(state);\n var sessionWrapper = getDashboardSessionWrapper(state, ownProps.localDashboardId);\n var {\n session,\n config: sessionConfig\n } = sessionWrapper !== null && sessionWrapper !== void 0 ? sessionWrapper : {};\n var language = sessionConfig === null || sessionConfig === void 0 ? void 0 : sessionConfig.type;\n return {\n fileStorage,\n language,\n session\n };\n};\nvar connector = connect(mapStateToProps, null, null, {\n forwardRef: true\n});\nfunction isMouseEvent(e) {\n var mouseEvent = e;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component {\n static handleError(error) {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event) {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n constructor(props) {\n super(props);\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCopyFile = this.handleCopyFile.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel = this.handleCreateDirectoryCancel.bind(this);\n this.handleCreateDirectorySubmit = this.handleCreateDirectorySubmit.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n var {\n session,\n language\n } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/'\n };\n }\n componentDidMount() {\n if (!this.isHidden()) {\n this.setState({\n isShown: true\n });\n }\n }\n handleCreateFile() {\n var {\n glEventHub\n } = this.props;\n var {\n session,\n language\n } = this.state;\n var notebookSettings = {\n language,\n value: ''\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(NotebookEvent.CREATE_NOTEBOOK, session, language, notebookSettings);\n }\n handleCreateDirectory() {\n this.setState({\n showCreateFolder: true\n });\n }\n handleCreateDirectoryCancel() {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false\n });\n }\n handleCreateDirectorySubmit(path) {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({\n showCreateFolder: false\n });\n var {\n fileStorage\n } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n handleCopyFile(file) {\n var _this = this;\n return _asyncToGenerator(function* () {\n var {\n fileStorage\n } = _this.props;\n if (isDirectory(file)) {\n log.error('Invalid item in handleCopyItem', file);\n return;\n }\n var newName = yield FileUtils.getUniqueCopyFileName(fileStorage, file.filename);\n yield fileStorage.copyFile(file.filename, newName);\n })();\n }\n handleDelete(files) {\n var {\n glEventHub\n } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename\n });\n });\n }\n handleSelectionChange(selectedItems) {\n var path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({\n focusedFilePath: path\n });\n }\n handleFileSelect(file, event) {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n var shouldFocus = FileExplorerPanel.isFocusEvent(event);\n var fileMetadata = {\n id: file.filename,\n itemName: file.filename\n };\n var {\n glEventHub\n } = this.props;\n var {\n session,\n language\n } = this.state;\n var notebookSettings = {\n value: null,\n language\n };\n glEventHub.emit(NotebookEvent.SELECT_NOTEBOOK, session, language, notebookSettings, fileMetadata, shouldFocus);\n }\n handleRename(oldName, newName) {\n var {\n glEventHub\n } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n handleSessionOpened(session, _ref) {\n var {\n language\n } = _ref;\n this.setState({\n session,\n language\n });\n }\n handleSessionClosed() {\n this.setState({\n session: undefined,\n language: undefined\n });\n }\n handleShow() {\n this.setState({\n isShown: true\n });\n }\n isHidden() {\n var {\n glContainer\n } = this.props;\n var {\n isHidden\n } = glContainer;\n return isHidden;\n }\n render() {\n var {\n fileStorage,\n glContainer,\n glEventHub\n } = this.props;\n var {\n isShown,\n showCreateFolder,\n focusedFilePath\n } = this.state;\n return /*#__PURE__*/_jsxs(Panel, {\n className: \"file-explorer-panel\",\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onSessionOpen: this.handleSessionOpened,\n onSessionClose: this.handleSessionClosed,\n onShow: this.handleShow,\n children: [/*#__PURE__*/_jsx(FileExplorerToolbar, {\n createFile: this.handleCreateFile,\n createFolder: this.handleCreateDirectory\n }), isShown && /*#__PURE__*/_jsx(FileExplorer, {\n isMultiSelect: true,\n storage: fileStorage,\n onCopy: this.handleCopyFile,\n onCreateFile: this.handleCreateFile,\n onCreateFolder: this.handleCreateDirectory,\n onDelete: this.handleDelete,\n onRename: this.handleRename,\n onSelect: this.handleFileSelect,\n onSelectionChange: this.handleSelectionChange\n }), /*#__PURE__*/_jsx(NewItemModal, {\n isOpen: showCreateFolder,\n type: \"directory\",\n title: \"Create New Folder\",\n storage: fileStorage,\n onSubmit: this.handleCreateDirectorySubmit,\n onCancel: this.handleCreateDirectoryCancel,\n defaultValue: focusedFilePath\n })]\n });\n }\n}\n_defineProperty(FileExplorerPanel, \"COMPONENT\", 'FileExplorerPanel');\n_defineProperty(FileExplorerPanel, \"TITLE\", 'File Explorer');\nvar ConnectedFileExplorerPanel = connector(FileExplorerPanel);\nexport default ConnectedFileExplorerPanel;\n//# sourceMappingURL=FileExplorerPanel.js.map","function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport { connect } from 'react-redux';\nimport { LogView } from '@deephaven/console';\nimport Log from '@deephaven/log';\nimport \"./LogPanel.css\";\nimport Panel from \"./CorePanel.js\";\nimport { getDashboardSessionWrapper } from \"../redux/index.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar log = Log.module('LogPanel');\nclass LogPanel extends PureComponent {\n constructor(props) {\n super(props);\n _defineProperty(this, \"isBottomVisible\", void 0);\n _defineProperty(this, \"logView\", void 0);\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.isBottomVisible = true;\n this.logView = null;\n var {\n session\n } = this.props;\n this.state = {\n session\n };\n }\n handleResize() {\n this.updateDimensions();\n }\n handleShow() {\n this.updateDimensions();\n if (this.logView) {\n this.logView.triggerFindWidget();\n if (this.isBottomVisible) {\n this.logView.scrollToBottom();\n }\n }\n }\n handleHide() {\n if (this.logView) {\n this.isBottomVisible = this.logView.isBottomVisible();\n }\n }\n handleSessionOpened(session) {\n log.debug('Session opened', [session]);\n this.setState({\n session\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleSessionClosed(session) {\n log.debug('Session closed', session);\n // Keep the session reference in state unchanged until the session is re-connected\n }\n updateDimensions() {\n if (this.logView) {\n this.logView.updateDimensions();\n }\n }\n render() {\n var {\n glContainer,\n glEventHub\n } = this.props;\n var {\n session\n } = this.state;\n return /*#__PURE__*/_jsxs(Panel, {\n componentPanel: this,\n glContainer: glContainer,\n glEventHub: glEventHub,\n onResize: this.handleResize,\n onHide: this.handleHide,\n onShow: this.handleShow,\n onSessionOpen: this.handleSessionOpened,\n onSessionClose: this.handleSessionClosed,\n children: [session == null && /*#__PURE__*/_jsx(\"div\", {\n className: \"log-panel-disconnected-message\",\n children: \"Waiting for session connection\"\n }), session != null && /*#__PURE__*/_jsx(LogView, {\n session: session,\n ref: logView => {\n this.logView = logView;\n }\n })]\n });\n }\n}\n_defineProperty(LogPanel, \"defaultProps\", {\n session: null\n});\n_defineProperty(LogPanel, \"COMPONENT\", 'LogPanel');\n_defineProperty(LogPanel, \"TITLE\", 'Log');\nvar mapStateToProps = (state, ownProps) => {\n var _getDashboardSessionW;\n return {\n session: (_getDashboardSessionW = getDashboardSessionWrapper(state, ownProps.localDashboardId)) === null || _getDashboardSessionW === void 0 ? void 0 : _getDashboardSessionW.session\n };\n};\nvar ConnectedLogPanel = connect(mapStateToProps, null, null, {\n forwardRef: true\n})(LogPanel);\nexport default ConnectedLogPanel;\n//# sourceMappingURL=LogPanel.js.map"],"file":"assets/LogPanel-2k7dsKfX.js"}
|