{"version":3,"sources":["jsdelivr-header.js","/npm/tutuca@0.15.0/dist/tutuca-dev.js"],"names":[],"mappings":"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A,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,SACA,MACA,QACA,SACA,KACA,OACA,UACA,OACA,UACA,OACA,OACA,MACA,UACA,WACA,WACA,SACA,KACA,IACA,QACA,YACA,MACA,SACA,SACA,UACA,SACA,SACA,QACA,UACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,QACA,KACA,QACA,KACA,MACA,KACF,CAAC,EACG,GAAsC,IAAI,IAAI,CAChD,IACA,IACA,MACA,OACA,KACA,OACA,IACA,OACA,IACA,QACA,SACA,SACA,KACA,GACF,CAAC,EACG,GAA2C,IAAI,IAAI,CACrD,SACA,UACA,OACA,QACA,KACA,KACA,UACA,SACA,SACA,UAEF,CAAC,EACG,GAAsD,IAAI,IAAI,CAAC,KAAM,KAAM,KAAM,KAAM,OAAO,CAAC,EAC/F,GAAmD,IAAI,IAAI,CAAC,gBAAiB,OAAQ,OAAO,CAAC,EAC7F,GAAkC,IAAI,IAAI,CAAC,GAAG,GAA0B,KAAM,IAAI,CAAC,EACnF,GAA+B,IAAI,IAAI,CAAC,GAAG,GAA0B,QAAQ,CAAC,EAC9E,GAAgB,GAChB,GAA8B,IAAI,IAAI,CAAC,OAAQ,QAAS,UAAU,CAAC,EACnE,GAA8C,IAAI,IAAI,CACxD,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,UACF,CAAC,EACG,GAA2C,IAAI,IAAI,CACrD,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,mBACA,mBACA,YACF,CAAC,EACG,GAAqC,IAAI,IAAI,CAAC,eAAe,CAAC,EAC9D,GAA8C,IAAI,IACtD,UAAW,KAAS,GAClB,GAA4B,IAAI,EAAM,YAAW,EAAI,CAAK,EAC5D,IAAI,GAAiD,IAAI,IACzD,UAAW,KAAS,GAClB,GAA+B,IAAI,EAAM,YAAW,EAAI,CAAK,EAC/D,IAAI,GAAwC,IAAI,IAAI,CAClD,IACA,MACA,aACA,OACA,KACA,SACA,OACA,KACA,MACA,KACA,KACA,KACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,KACA,IACA,MACA,KACA,UACA,OACA,OACA,OACA,KACA,IACA,MACA,OACA,IACA,QACA,OACA,SACA,SACA,MACA,MACA,QACA,KACA,IACA,KACA,KACF,CAAC,EACG,GAAuC,IAAI,IAAI,CAAC,QAAS,SAAU,WAAY,QAAQ,CAAC,EACxF,EAAQ,OAAO,OAAO,CACxB,OAAQ,SACR,QAAS,UACT,UAAW,YACX,cAAe,gBACf,YAAa,cACb,MAAO,QACP,OAAQ,SACR,SAAU,WACV,gBAAiB,kBACjB,WAAY,YACd,CAAC,EACG,EAAK,OAAO,OAAO,CACrB,KAAM,OACN,IAAK,MACL,KAAM,MACR,CAAC,EACG,GAAyB,OAAO,OAAO,CACzC,SAAU,CAAE,KAAM,EAAM,WAAY,GAAI,EAAG,IAAI,EAC/C,KAAM,CAAE,KAAM,EAAM,OAAQ,GAAI,EAAG,IAAI,EACvC,IAAK,CAAE,KAAM,EAAM,OAAQ,GAAI,EAAG,IAAI,EACtC,MAAO,CAAE,KAAM,EAAM,QAAS,GAAI,EAAG,IAAI,EACzC,MAAO,CAAE,KAAM,EAAM,YAAa,GAAI,EAAG,IAAI,EAC7C,MAAO,CAAE,KAAM,EAAM,YAAa,GAAI,EAAG,IAAI,EAC7C,MAAO,CAAE,KAAM,EAAM,YAAa,GAAI,EAAG,IAAI,EAC7C,QAAS,CAAE,KAAM,EAAM,UAAW,GAAI,EAAG,IAAI,EAC7C,SAAU,CAAE,KAAM,EAAM,cAAe,GAAI,EAAG,IAAI,EAClD,GAAI,CAAE,KAAM,EAAM,MAAO,GAAI,EAAG,IAAI,EACpC,GAAI,CAAE,KAAM,EAAM,OAAQ,GAAI,EAAG,IAAI,EACrC,GAAI,CAAE,KAAM,EAAM,OAAQ,GAAI,EAAG,IAAI,EACrC,OAAQ,CAAE,KAAM,EAAM,SAAU,GAAI,EAAG,IAAI,EAC3C,IAAK,CAAE,KAAM,EAAM,OAAQ,GAAI,EAAG,GAAG,EACrC,KAAM,CAAE,KAAM,EAAM,OAAQ,GAAI,EAAG,IAAI,CACzC,CAAC,EAGG,GAA8B,8BAC9B,GAA8B,8BAC9B,GAA+B,+BAC/B,GAAkC,kCAClC,EAAiC,iCACjC,GAAkC,kCAClC,GAAkC,kCAClC,GAAsB,sBACtB,GAA0B,0BAC1B,GAA4B,4BAC5B,GAA0B,0BAC1B,GAA2B,2BAC3B,GAA6B,6BAC7B,GAA4B,4BAC5B,GAA+B,+BAC/B,GAA+B,+BAC/B,GAAqB,qBACrB,GAA2B,2BAC3B,EAAc,QACd,EAAa,OACb,GAAmC,IAAI,IAAI,CAC7C,UACA,WACA,QACA,QACA,QACA,KACA,KACA,KACA,OACF,CAAC,EACG,GAAuC,IAAI,IAAI,CAAC,KAAM,IAAI,CAAC,EAC3D,GAAmC,IAAI,IAAI,CAC7C,KACA,KACA,KACA,WACA,SACA,IACA,KACA,KACA,KACA,KACF,CAAC,EACD,SAAS,GAAS,EAAO,EAAW,EAAO,CAAA,EAAI,CAC7C,MAAM,EAAiB,EAAK,gBAAkB,GACxC,EAAM,IAAI,GAAU,EAAO,EAAW,CAAI,EAC1C,EAAY,IAAI,EACpB,CAAE,QAAS,GAAO,eAAgB,GAAO,qBAAsB,EAAI,EACnE,CACJ,EACE,OAAA,EAAI,UAAY,EAChB,EAAU,MAAM,CAAK,EACrB,EAAU,IAAG,EACN,EAAI,YACb,CACA,IAAI,GAAY,KAAM,CACpB,YAAY,EAAO,EAAW,EAAM,CAClC,KAAK,KAAO,EACZ,KAAK,UAAY,EACjB,KAAK,aAAe,EACpB,KAAK,WAAa,GAAkB,CAAK,EACzC,MAAM,EAAU,EAAK,iBAAmB,WAClC,EAAU,GAAuB,CAAO,GAAK,GAAuB,SAC1E,KAAK,aAAe,CAAA,EAChB,IAAY,MACd,KAAK,aAAa,KAAK,CAAE,KAAM,QAAS,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,EAChE,KAAK,aAAa,KAAK,CAAE,KAAM,QAAS,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,GACvD,IAAY,SAAW,IAAY,SAAW,IAAY,QACnE,KAAK,aAAa,KAAK,CAAE,KAAM,QAAS,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,EACvD,IAAY,MAAQ,IAAY,MACzC,KAAK,aAAa,KAAK,CAAE,KAAM,QAAS,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,EAChE,KAAK,aAAa,KAAK,CAAE,KAAM,QAAS,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,EAChE,KAAK,aAAa,KAAK,CAAE,KAAM,KAAM,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,GACpD,IAAY,UACrB,KAAK,aAAa,KAAK,CAAE,KAAM,QAAS,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,EACvD,IAAY,WACrB,KAAK,aAAa,KAAK,CAAE,KAAM,QAAS,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,EACvD,IAAY,MACrB,KAAK,aAAa,KAAK,CAAE,KAAM,MAAO,GAAI,EAAG,IAAK,MAAO,EAAE,CAAE,EACpD,IAAY,OACrB,KAAK,aAAa,KAAK,CAAE,KAAM,OAAQ,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,EACtD,IAAY,UACrB,KAAK,aAAa,KAAK,CAAE,KAAM,SAAU,GAAI,EAAG,KAAM,MAAO,EAAE,CAAE,EAEnE,KAAK,cAAgB,EAAQ,KAC7B,KAAK,uBAAyB,IAAY,WAAa,CAAC,EAAM,UAAU,EAAI,CAAA,EAC5E,KAAK,iBAAmB,CAAA,EACxB,KAAK,WAAa,GAClB,KAAK,iBAAmB,EAAK,kBAAoB,GACjD,KAAK,wBAA0B,EAAK,wBAA0B,CAAA,GAAI,IAAK,GAAM,EAAE,YAAW,CAAE,EAC5F,KAAK,eAAiB,GACtB,KAAK,kBAAoB,GACzB,KAAK,gBAAkB,EACvB,KAAK,aAAe,CAAA,EACpB,KAAK,YAAc,KACnB,KAAK,UAAY,IACnB,CAEA,cAAc,EAAO,EAAK,CACxB,MAAM,EAAM,KAAK,KAAK,MAAM,EAAO,CAAG,EACtC,KAAK,kBAAoB,EACzB,KAAK,eAAiB,EAAI,YAAW,EACrC,KAAK,gBAAkB,EACvB,KAAK,aAAe,CAAA,EACpB,KAAK,YAAc,IACrB,CACA,aAAa,EAAO,EAAK,CACvB,MAAM,EAAU,KAAK,KAAK,MAAM,EAAO,CAAG,EAC1C,KAAK,YAAc,CACjB,KAAM,EAAQ,YAAW,EACzB,QAAA,EACA,UAAW,EACX,MAAO,KACP,WAAY,GACZ,SAAU,GACV,MAAO,GAAU,OACvB,CACE,CACA,aAAa,EAAO,EAAK,CAClB,KAAK,cACV,KAAK,YAAY,WAAa,EAC9B,KAAK,YAAY,SAAW,EAC5B,KAAK,YAAY,MAAQ,KAAK,KAAK,MAAM,EAAO,CAAG,EACrD,CACA,YAAY,EAAO,EAAM,CACvB,MAAM,EAAI,KAAK,YACf,GAAI,CAAC,EAAG,OACR,EAAE,MAAQ,EACV,MAAM,EAAM,KAAK,aAAa,KAAM,GAAM,EAAE,OAAS,EAAE,IAAI,EACvD,EACF,KAAK,OACH,GACA,EACA,EAAE,UACF,CAAE,KAAM,EAAE,KAAM,QAAS,EAAI,SAAS,EACtC,CAAE,KAAM,SAAU,KAAM,kBAAkB,EAAE,IAAI,aAAa,CACrE,EAEM,KAAK,aAAa,KAAK,CAAC,EAEtB,EAAE,QAAU,GAAU,UAAY,EAAE,QAAU,IAChD,KAAK,OAAO,GAA8B,EAAY,EAAE,UAAW,CACjE,KAAM,EAAE,IAChB,CAAO,EAEH,KAAK,YAAc,IACrB,CACA,eAAe,EAAK,CACpB,CACA,aAAa,EAAK,EAAM,CACxB,CACA,QAAQ,EAAM,CACZ,MAAM,EAAI,KAAK,aAAa,KAAM,GAAM,EAAE,OAAS,CAAI,EACvD,OAAO,EAAI,EAAE,MAAQ,IACvB,CACA,QAAQ,EAAM,CACZ,OAAO,KAAK,aAAa,KAAM,GAAM,EAAE,OAAS,CAAI,CACtD,CACA,aAAa,EAAU,CACrB,KAAK,eAAe,GAAO,CAAQ,CACrC,CACA,iBAAiB,EAAU,CACzB,KAAK,eAAe,GAAM,CAAQ,CACpC,CACA,WAAW,EAAO,EAAK,CAErB,MAAM,EADM,KAAK,KAAK,MAAM,EAAO,CAAG,EACrB,YAAW,EAC5B,IAAI,EAAI,EACJ,EAAY,GAChB,KAAO,EAAI,KAAK,KAAK,QAAQ,CAC3B,MAAM,EAAI,KAAK,KAAK,WAAW,CAAC,EAChC,GAAI,IAAM,GAAI,MACV,IAAM,IAAM,IAAM,GAAK,IAAM,IAAM,IAAM,IAAM,IAAM,KAAI,EAAY,GACzE,GACF,CACA,GAAI,GAAa,EACf,GAAI,KAAK,KAAK,WAAW,CAAS,IAAM,IAAM,IAAc,EAAI,EAAG,CACjE,IAAI,EAAa,GACjB,QAAS,EAAI,EAAK,EAAI,EAAW,IAAK,CACpC,MAAM,EAAK,KAAK,KAAK,WAAW,CAAC,EACjC,GAAI,IAAO,IAAM,IAAO,GAAK,IAAO,IAAM,IAAO,IAAM,IAAO,GAAI,CAChE,EAAa,EACb,KACF,CACF,CACI,EAAa,EACf,KAAK,OACH,GACA,EACA,EACA,CAAE,IAAK,CAAI,EACX,CAAE,KAAM,UAAW,KAAM,KAAK,CAAI,KAAM,GAAI,KAAK,CAAI,GAAG,CACpE,EAEU,KAAK,OACH,GACA,EACA,EACA,CAAE,IAAK,CAAI,EACX,CAAE,KAAM,SAAU,KAAM,qBAAqB,CAAI,GAAG,CAChE,CAEM,MACE,KAAK,OACH,GACA,EACA,EACA,CAAE,IAAK,CAAI,EACX,CAAE,KAAM,SAAU,KAAM,qBAAqB,CAAI,GAAG,CAC9D,EAGI,KAAK,aAAa,EAAM,CAAK,CAC/B,CACA,OAAO,EAAO,EAAK,CACjB,GAAI,GAAS,EAAK,OAClB,MAAM,EAAM,KAAK,YAAW,EACxB,GAAO,EAAI,KAAO,EAAG,MAAQ,CAAC,KAAK,mBAAmB,CAAG,GAC7D,KAAK,WAAW,EAAO,CAAG,CAC5B,CACA,UAAU,EAAO,EAAM,EAAW,CAC5B,IAAc,GAChB,KAAK,OAAO,GAAoB,EAAY,EAAO,CACjD,KAAM,KAAK,aACnB,CAAO,CAEL,CACA,QAAQ,EAAO,EAAM,EAAY,CAC3B,KAAK,iBAAgB,IAAO,EAAG,MACjC,KAAK,OAAO,GAA8B,EAAY,EAAO,CAC3D,KAAM,KAAK,aACnB,CAAO,CAEL,CACA,cAAc,EAAQ,EAAM,CAC5B,CACA,wBAAwB,EAAQ,EAAM,CACtC,CACA,oBAAqB,CACnB,OAAO,KAAK,iBAAgB,IAAO,EAAG,IACxC,CACA,OAAQ,CACR,CAEA,OAAO,EAAI,EAAO,EAAQ,EAAM,EAAa,KAAM,CACjD,KAAK,eACL,KAAM,CAAE,KAAA,EAAM,OAAA,CAAM,EAAK,GAAgB,KAAK,WAAY,CAAM,EAChE,KAAK,UAAU,CACb,GAAA,EACA,MAAA,EACA,KAAA,EACA,SAAU,CAAE,MAAO,EAAQ,IAAK,GAAU,EAAK,KAAK,QAAU,GAAI,KAAA,EAAM,OAAA,CAAM,EAC9E,WAAA,CACN,CAAK,CACH,CACA,aAAc,CACZ,OAAO,KAAK,aAAa,KAAK,aAAa,OAAS,CAAC,GAAK,IAC5D,CACA,kBAAmB,CACjB,MAAM,EAAM,KAAK,YAAW,EAC5B,OAAO,EAAM,EAAI,GAAK,EAAG,IAC3B,CACA,KAAK,EAAM,EAAI,EAAO,CACpB,KAAK,aAAa,KAAK,CAAE,KAAA,EAAM,GAAA,EAAI,MAAA,CAAK,CAAE,CAC5C,CACA,KAAM,CACJ,OAAO,KAAK,aAAa,IAAG,CAC9B,CACA,WAAW,EAAQ,EAAU,CAC3B,QAAS,EAAI,KAAK,aAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACtD,MAAM,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,EAAE,OAAS,GAAU,EAAE,KAAO,EAAG,KAAM,MAAO,GAClD,GAAI,EAAE,KAAO,EAAG,MACd,GAAI,EAAS,IAAI,EAAE,IAAI,EAAG,MAAO,WACxB,KAAK,gBAAgB,CAAC,EAC/B,MAAO,EAEX,CACA,MAAO,EACT,CAKA,gBAAgB,EAAO,CACrB,OAAI,EAAM,KAAO,EAAG,KACX,GAAoC,IAAI,EAAM,IAAI,GAAK,EAAM,OAAS,iBAE3E,EAAM,KAAO,EAAG,IACX,GAAiC,IAAI,EAAM,IAAI,EAEjD,EACT,CAIA,mBAAmB,EAAO,CACxB,OAAI,EAAM,KAAO,EAAG,KACd,GAAA,GAAoC,IAAI,EAAM,IAAI,GAClD,EAAM,OAAS,kBAAoB,EAAM,iBAG3C,EAAM,KAAO,EAAG,IACX,GAAiC,IAAI,EAAM,IAAI,EAEjD,EACT,CACA,kBAAkB,EAAQ,CACxB,OAAO,KAAK,WAAW,EAAQ,EAAa,CAC9C,CACA,iBAAiB,EAAQ,CACvB,OAAO,KAAK,WAAW,EAAQ,EAAY,CAC7C,CACA,mBAAmB,EAAQ,CACzB,OAAO,KAAK,WAAW,EAAQ,EAAe,CAChD,CACA,gBAAgB,EAAQ,CACtB,OAAO,KAAK,WAAW,EAAQ,EAAW,CAC5C,CACA,iBAAiB,EAAQ,CACvB,QAAS,EAAI,KAAK,aAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACtD,MAAM,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,EAAE,KAAO,EAAG,KAAM,MAAO,GAC7B,GAAI,EAAE,OAAS,EAAQ,MAAO,GAC9B,GAAI,EAAE,OAAS,YAAc,EAAE,OAAS,SAAU,MAAO,EAC3D,CACA,MAAO,EACT,CACA,aAAa,EAAM,CACjB,KAAO,KAAK,aAAa,QAAQ,CAC/B,MAAM,EAAI,KAAK,aAAa,IAAG,EAC/B,GAAI,EAAE,OAAS,EAAM,OAAO,CAC9B,CACA,OAAO,IACT,CACA,uBAAuB,EAAS,KAAM,CACpC,MAAM,EAA0B,IAAI,IAAI,CAAC,KAAM,KAAM,KAAM,WAAY,SAAU,IAAK,KAAM,KAAM,KAAM,KAAK,CAAC,EAC9G,KAAO,KAAK,aAAa,QAAQ,CAC/B,MAAM,EAAM,KAAK,YAAW,EAE5B,GADI,EAAI,KAAO,EAAG,MACd,CAAC,EAAQ,IAAI,EAAI,IAAI,GAAK,EAAI,OAAS,EAAQ,MACnD,KAAK,aAAa,IAAG,CACvB,CACF,CAEA,iBAAiB,EAAM,CACrB,UAAW,KAAU,KAAK,uBACxB,GAAI,IAAS,GAAU,EAAK,WAAW,GAAG,CAAM,GAAG,EAAG,MAAO,GAE/D,MAAO,EACT,CACA,eAAe,EAAa,EAAU,CACpC,MAAM,EAAO,KAAK,eACZ,EAAM,KAAK,kBACX,EAAQ,KAAK,gBACb,EAAK,KAAK,iBAAgB,EAC5B,IAAO,EAAG,KACR,IAAQ,GACV,KAAK,OACH,GACA,EACA,EACA,CAAE,IAAA,EAAK,WAAY,CAAI,EACvB,CAAE,KAAM,UAAW,KAAM,IAAI,CAAG,IAAK,GAAI,IAAI,CAAI,GAAG,CAC9D,EAEe,IAAO,EAAG,KACf,IAAQ,EAAI,YAAW,GAAM,CAAC,KAAK,iBAAiB,IAAI,CAAG,GAC7D,KAAK,OACH,GACA,EACA,EACA,CAAE,IAAA,EAAK,WAAY,CAAI,EACvB,CAAE,KAAM,UAAW,KAAM,IAAI,CAAG,IAAK,GAAI,IAAI,CAAI,GAAG,CAC9D,EAGI,MAAM,EAAW,IAAO,EAAG,KAAO,EAAK,IAAS,MAAQ,EAAG,IAAM,IAAS,OAAS,EAAG,KAAO,EAAG,KAChG,GAAI,IAAa,EAAG,IAClB,UAAW,KAAK,KAAK,aAAc,CACjC,MAAM,EAAY,GAA4B,IAAI,EAAE,IAAI,EACpD,GAAa,EAAE,UAAY,GAC7B,KAAK,OACH,GACA,EACA,EAAE,UACF,CAAE,IAAK,EAAE,QAAS,UAAA,CAAS,EAC3B,CAAE,KAAM,UAAW,KAAM,EAAE,QAAS,GAAI,CAAS,CAC7D,CAEM,SACS,IAAa,EAAG,KACzB,UAAW,KAAK,KAAK,aAAc,CACjC,MAAM,EAAY,GAA+B,IAAI,EAAE,IAAI,EACvD,GAAa,EAAE,UAAY,GAC7B,KAAK,OACH,GACA,EACA,EAAE,UACF,CAAE,IAAK,EAAE,QAAS,UAAA,CAAS,EAC3B,CAAE,KAAM,UAAW,KAAM,EAAE,QAAS,GAAI,CAAS,CAC7D,CAEM,CAEF,GAAI,KAAK,iBAAiB,CAAI,EAAG,OACjC,MAAM,EAAM,KAAK,YAAW,EACtB,EAAY,IAAO,EAAG,MAAQ,EAAE,GAAO,KAAK,mBAAmB,CAAG,GACxE,GAAI,GAAa,CAAC,KAAK,0BAA0B,CAAI,EAAG,CACtD,KAAK,kBAAkB,EAAM,EAAK,EAAa,CAAK,EACpD,MACF,CACA,GAAI,GAAa,KAAK,0BAA0B,CAAI,EAOlD,IANA,KAAK,OAAO,EAAgC,EAAY,EAAO,CAC7D,IAAK,EACL,OAAQ,KAAK,YAAW,GAAI,MAAQ,SACpC,KAAM,KAAK,cACX,OAAQ,kBAChB,CAAO,EACM,KAAK,aAAa,QAAU,KAAK,YAAW,GAAI,KAAO,EAAG,MAC/D,KAAK,aAAa,IAAG,EAGzB,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,CAC/D,CACA,0BAA0B,EAAM,CAC9B,OAAI,GAAsB,IAAI,CAAI,EAAU,GACxC,IAAS,OACJ,KAAK,QAAQ,OAAO,GAAK,KAAK,QAAQ,MAAM,GAAK,KAAK,QAAQ,MAAM,EAEtE,EACT,CACA,kBAAkB,EAAM,EAAK,EAAa,EAAO,CAC/C,MAAM,EAAK,IAAS,MAAQ,EAAG,IAAM,IAAS,OAAS,EAAG,KAAO,KAAK,iBAAgB,EAChF,EAAM,KAAK,YAAW,EAC5B,GAAI,GAAO,KAAK,mBAAmB,CAAG,GAAK,IAAS,UAAY,IAAS,aAAc,CACrF,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,EAAQ,EAAI,MAAM,EACvE,MACF,CACA,GAAI,EAAa,OACjB,MAAM,EAAQ,CAAE,KAAA,EAAM,GAAA,EAAI,MAAA,CAAK,EAC/B,GAAI,IAAO,EAAG,MAAQ,IAAS,iBAAkB,CAC/C,MAAM,GAAO,KAAK,QAAQ,UAAU,GAAK,IAAI,YAAW,GACpD,IAAQ,aAAe,IAAQ,2BACjC,EAAM,gBAAkB,GAE5B,CACA,KAAK,aAAa,KAAK,CAAK,CAC9B,CACA,iBAAiB,EAAM,EAAK,EAAa,EAAO,EAAU,CACxD,OAAQ,KAAK,cAAa,CACxB,KAAK,EAAM,WACT,OAAO,KAAK,gBAAgB,EAAM,EAAK,EAAa,EAAO,CAAQ,EACrE,KAAK,EAAM,OACT,OAAO,KAAK,YAAY,EAAM,EAAK,EAAa,EAAO,CAAQ,EACjE,KAAK,EAAM,QACT,OAAO,KAAK,aAAa,EAAM,EAAK,EAAa,EAAO,CAAQ,EAClE,KAAK,EAAM,UACT,OAAO,KAAK,eAAe,EAAM,EAAK,EAAa,EAAO,CAAQ,EACpE,KAAK,EAAM,cACT,OAAO,KAAK,mBAAmB,EAAM,EAAK,EAAa,EAAO,CAAQ,EACxE,KAAK,EAAM,YACT,OAAO,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,EACtE,KAAK,EAAM,MACT,OAAO,KAAK,WAAW,EAAM,EAAK,EAAa,EAAO,CAAQ,EAChE,KAAK,EAAM,OACT,OAAO,KAAK,YAAY,EAAM,EAAK,EAAa,EAAO,CAAQ,EACjE,KAAK,EAAM,SACT,OAAO,KAAK,cAAc,EAAM,EAAK,EAAa,EAAO,CAAQ,EACnE,KAAK,EAAM,gBACT,OAAO,KAAK,qBAAqB,EAAM,EAAK,EAAa,EAAO,CAAQ,CAChF,CACE,CAEA,YAAY,EAAM,EAAK,EAAa,EAAO,EAAW,CACpD,GAAI,IAAS,QAAU,IAAS,QAAU,IAAS,QAAU,IAAS,SAAW,IAAS,WAAY,CACpG,KAAK,OAAO,EAAgC,EAAY,EAAO,CAC7D,IAAK,EACL,KAAM,KAAK,cACX,OAAQ,SAChB,CAAO,EACD,MACF,CACA,GAAI,IAAS,WAAa,IAAS,WAAa,IAAS,SAAW,IAAS,cAAgB,IAAS,UAAY,IAAS,WAAa,IAAS,UAAY,IAAS,OAAS,IAAS,OAAS,IAAS,MAAQ,IAAS,YAAc,IAAS,cAAgB,IAAS,UAAY,IAAS,UAAY,IAAS,UAAY,IAAS,UAAY,IAAS,QAAU,IAAS,QAAU,IAAS,OAAS,IAAS,MAAQ,IAAS,KAAO,IAAS,UAAY,IAAS,WAAa,IAAS,WAAa,IAAS,KAAM,CACzf,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,MAAQ,IAAS,MAAQ,IAAS,MAAQ,IAAS,MAAQ,IAAS,MAAQ,IAAS,KAAM,CAClG,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,MAAM,EAAM,KAAK,YAAW,EACxB,GAAO,WAAW,KAAK,EAAI,IAAI,IACjC,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,EAAI,KACZ,KAAM,KAAK,cACX,OAAQ,qBAClB,CAAS,EACD,KAAK,aAAa,IAAG,GAEvB,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,OAAS,IAAS,UAAW,CACpC,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,WAAa,GAClB,MACF,CACA,GAAI,IAAS,OAAQ,CACnB,GAAI,KAAK,gBAAgB,MAAM,GAAK,CAAC,KAAK,gBAAgB,UAAU,EAAG,CACrE,KAAK,OACH,GACA,EACA,EACA,CAAE,IAAK,EAAK,KAAM,KAAK,aAAa,EACpC,CAAE,KAAM,SAAU,KAAM,kBAAkB,CACpD,EACQ,MACF,CACI,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,KAAM,CACjB,KAAK,WAAa,GAClB,QAAS,EAAI,KAAK,aAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACtD,MAAM,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,EAAE,KAAO,EAAG,KAAM,MACtB,GAAI,EAAE,OAAS,KAAM,CAEnB,IADA,KAAK,uBAAuB,IAAI,EACzB,KAAK,aAAa,QACR,KAAK,aAAa,IAAG,EACzB,OAAS,MAApB,CAEF,KACF,CACA,GAAI,GAAiB,IAAI,EAAE,IAAI,GAAK,EAAE,OAAS,WAAa,EAAE,OAAS,OAAS,EAAE,OAAS,IACzF,KAEJ,CACI,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,MAAQ,IAAS,KAAM,CAClC,KAAK,WAAa,GAClB,QAAS,EAAI,KAAK,aAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACtD,MAAM,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,EAAE,KAAO,EAAG,KAAM,MACtB,GAAI,EAAE,OAAS,MAAQ,EAAE,OAAS,KAAM,CAEtC,IADA,KAAK,uBAAuB,EAAE,IAAI,EAC3B,KAAK,aAAa,QACR,KAAK,aAAa,IAAG,EACzB,OAAS,EAAE,MAAtB,CAEF,KACF,CACA,GAAI,GAAiB,IAAI,EAAE,IAAI,GAAK,EAAE,OAAS,WAAa,EAAE,OAAS,OAAS,EAAE,OAAS,IACzF,KAEJ,CACI,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,YAAa,CACpB,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,SAAU,CACjB,KAAK,kBAAkB,QAAQ,IACjC,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,SACR,KAAM,KAAK,cACX,OAAQ,qBAClB,CAAS,EACD,KAAK,uBAAsB,EAC3B,KAAK,aAAa,QAAQ,GAE5B,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,WAAa,GAClB,MACF,CACA,GAAI,IAAS,IAAK,CACZ,KAAK,oBAAoB,GAAG,IAC9B,KAAK,OAAO,GAAyB,EAAY,EAAO,CACtD,IAAK,EACL,KAAM,KAAK,aACrB,CAAS,EACD,KAAK,kBAAkB,GAAG,GAE5B,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,iBAAiB,KAAK,KAAK,YAAW,CAAE,EAC7C,MACF,CACA,GAAI,GAAoB,IAAI,CAAI,EAAG,CACjC,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,iBAAiB,KAAK,KAAK,YAAW,CAAE,EAC7C,MACF,CACA,GAAI,IAAS,OAAQ,CACf,KAAK,oBAAoB,MAAM,IACjC,KAAK,OAAO,GAAyB,EAAY,EAAO,CACtD,IAAK,EACL,KAAM,KAAK,aACrB,CAAS,EACD,KAAK,kBAAkB,MAAM,GAE/B,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,iBAAiB,KAAK,KAAK,YAAW,CAAE,EAC7C,MACF,CACA,GAAI,IAAS,QAAS,CAChB,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,WAAa,GAClB,KAAK,cAAgB,EAAM,QAC3B,MACF,CACA,GAAI,IAAS,QAAU,IAAS,MAAQ,IAAS,SAAW,IAAS,OAAS,IAAS,UAAY,IAAS,OAAS,IAAS,SAAW,IAAS,SAAW,IAAS,UAAY,IAAS,SAAW,IAAS,MAAQ,IAAS,QAAU,IAAS,QAAU,IAAS,OAAS,IAAS,OAAQ,CAC9R,KAAK,WAAa,GAClB,MACF,CACA,GAAI,IAAS,SAAU,CACjB,KAAK,iBAAiB,GAAG,GAAG,KAAK,gBAAgB,IAAK,EAAO,CAAG,EACpE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,WAAa,GAClB,KAAK,cAAgB,EAAM,SAC3B,MACF,CACA,GAAI,IAAS,UAAY,IAAS,WAAY,CACxC,KAAK,YAAW,GAAI,OAAS,UAC/B,KAAK,aAAa,IAAG,EAEvB,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,YAAc,IAAS,SAAW,GAAkB,IAAI,CAAI,EAAG,CAC1E,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,QAAU,IAAS,MAAO,CACrC,KAAK,KAAK,EAAK,IAAS,MAAQ,EAAG,IAAM,EAAG,KAAM,CAAK,EACvD,KAAK,WAAa,GAClB,MACF,CACA,GAAI,IAAS,WAAa,IAAS,OAAS,IAAS,YAAc,IAAS,SAAW,IAAS,SAAW,IAAS,MAAQ,IAAS,SAAW,IAAS,MAAQ,IAAS,SAAW,IAAS,KAAM,CAClM,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,KAAK,YAAW,GAAI,MAAQ,SACpC,KAAM,KAAK,cACX,OAAQ,SAChB,CAAO,EACD,MACF,CACI,GACJ,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,CAC/B,CACA,gBAAgB,EAAM,CACpB,QAAS,EAAI,KAAK,aAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACtD,MAAM,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,EAAE,KAAO,EAAG,MAAQ,EAAE,OAAS,EAAM,MAAO,EAClD,CACA,MAAO,EACT,CACA,oBAAoB,EAAM,CACxB,QAAS,EAAI,KAAK,iBAAiB,OAAS,EAAG,GAAK,EAAG,IAAK,CAC1D,MAAM,EAAI,KAAK,iBAAiB,CAAC,EACjC,GAAI,IAAM,KAAM,MAAO,GACvB,GAAI,EAAE,OAAS,EAAM,MAAO,EAC9B,CACA,MAAO,EACT,CAQA,kBAAkB,EAAM,CACtB,QAAS,EAAI,KAAK,iBAAiB,OAAS,EAAG,GAAK,EAAG,IAAK,CAC1D,MAAM,EAAI,KAAK,iBAAiB,CAAC,EACjC,GAAI,IAAM,KAAM,MAChB,GAAI,EAAE,OAAS,EAAM,CACnB,MAAM,EAAM,KAAK,aAAa,QAAQ,CAAC,EACnC,GAAO,GAAG,KAAK,aAAa,OAAO,EAAK,CAAC,EAC7C,MACF,CACF,CACF,CACA,gBAAgB,EAAM,EAAQ,EAAY,CACxC,KAAO,KAAK,aAAa,QACR,KAAK,aAAa,IAAG,EACzB,OAAS,GAApB,CAEJ,CAEA,gBAAgB,EAAM,EAAK,EAAa,EAAO,EAAU,CACvD,IAAI,EACJ,GAAI,IAAS,WAAa,IAAS,YAAc,IAAS,SAAW,IAAS,SAAW,IAAS,QAChG,EAAO,EAAM,gBACJ,IAAS,MAClB,EAAO,EAAM,sBACJ,IAAS,KAClB,EAAO,EAAM,oBACJ,IAAS,MAAQ,IAAS,KACnC,EAAO,EAAM,UAEb,aAAK,gBAAe,EACpB,KAAK,iBAAiB,EAAM,MAAM,EAClC,KAAK,cAAgB,EAAM,OACpB,KAAK,YAAY,EAAM,EAAK,EAAa,EAAO,CAAQ,EAEjE,YAAK,gBAAe,EACpB,KAAK,iBAAiB,CAAI,EAC1B,KAAK,cAAgB,EACd,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,CACtE,CACA,iBAAkB,CACZ,KAAK,uBAAuB,QAAQ,KAAK,uBAAuB,IAAG,CACzE,CACA,iBAAiB,EAAM,CACrB,KAAK,uBAAuB,KAAK,CAAI,CACvC,CAEA,aAAa,EAAM,EAAK,EAAa,EAAO,EAAU,CACpD,GAAI,IAAS,UAAW,CACtB,KAAK,sBAAqB,EAC1B,KAAK,iBAAiB,KAAK,IAAI,EAC/B,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,cAAgB,EAAM,UAC3B,MACF,CACA,GAAI,IAAS,WAAY,CACvB,KAAK,sBAAqB,EAC1B,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,cAAgB,EAAM,cAC3B,MACF,CACA,GAAI,IAAS,MACX,YAAK,sBAAqB,EAC1B,KAAK,KAAK,WAAY,EAAG,KAAM,CAAK,EACpC,KAAK,cAAgB,EAAM,cACpB,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,EAEtE,GAAI,IAAS,SAAW,IAAS,SAAW,IAAS,QAAS,CAC5D,KAAK,sBAAqB,EAC1B,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,cAAgB,EAAM,YAC3B,MACF,CACA,GAAI,IAAS,MAAQ,IAAS,MAAQ,IAAS,KAC7C,YAAK,sBAAqB,EAC1B,KAAK,KAAK,QAAS,EAAG,KAAM,CAAK,EACjC,KAAK,cAAgB,EAAM,YACpB,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,EAEtE,GAAI,IAAS,QAOX,OANA,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,QACR,KAAM,KAAK,cACX,OAAQ,qBAChB,CAAO,EACG,KAAK,gBAAgB,OAAO,GAC9B,KAAK,aAAa,OAAO,EACzB,KAAK,gCAA+B,EAC7B,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,GAEtE,OAEF,GAAI,IAAS,SAAW,IAAS,UAAY,IAAS,WACpD,OAAO,KAAK,YAAY,EAAM,EAAK,EAAa,EAAO,CAAQ,EAEjE,GAAI,IAAS,QAAS,CAEpB,IADe,KAAK,QAAQ,MAAM,GAAK,IAAI,YAAW,IACxC,SAAU,OACxB,KAAK,OAAO,EAAgC,EAAY,EAAO,CAC7D,IAAK,EACL,OAAQ,QACR,KAAM,KAAK,cACX,OAAQ,eAChB,CAAO,EACD,MACF,CACA,GAAI,IAAS,OAAQ,CACnB,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,QACR,KAAM,KAAK,cACX,OAAQ,SAChB,CAAO,EACD,MACF,CACA,YAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,KAAK,YAAW,GAAI,MAAQ,QACpC,KAAM,KAAK,cACX,OAAQ,eACd,CAAK,EACM,KAAK,YAAY,EAAM,EAAK,EAAa,EAAO,CAAQ,CACjE,CACA,uBAAwB,CACtB,KAAO,KAAK,aAAa,QAAQ,CAC/B,MAAM,EAAM,KAAK,YAAW,EAE5B,GADI,CAAC,GACD,EAAI,OAAS,SAAW,EAAI,OAAS,WAAY,MACrD,KAAK,aAAa,IAAG,CACvB,CACF,CAEA,eAAe,EAAM,EAAK,EAAa,EAAO,EAAU,CACtD,OAAI,IAAS,WAAa,IAAS,OAAS,IAAS,YAAc,IAAS,SAAW,IAAS,MAAQ,IAAS,SAAW,IAAS,MAAQ,IAAS,SAAW,IAAS,KACpK,KAAK,gBAAgB,SAAS,GAChC,KAAK,uBAAsB,EAC3B,KAAK,aAAa,SAAS,EAC3B,KAAK,8BAA6B,EAClC,KAAK,cAAgB,EAAM,QACpB,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,GAEtE,OAEK,KAAK,YAAY,EAAM,EAAK,EAAa,EAAO,CAAQ,CACjE,CACA,+BAAgC,CAC9B,KAAO,KAAK,iBAAiB,QAE3B,GADU,KAAK,iBAAiB,IAAG,IACzB,KAAM,MAEpB,CAEA,mBAAmB,EAAM,EAAK,EAAa,EAAO,EAAU,CAC1D,GAAI,IAAS,MAGb,IAAI,IAAS,WACX,OAAO,KAAK,YAAY,EAAM,EAAK,EAAa,EAAO,CAAQ,EAEjE,GAAI,KAAK,YAAW,GAAI,OAAS,WAC/B,YAAK,aAAa,IAAG,EACrB,KAAK,cAAgB,EAAM,QACpB,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,EAEtE,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,WACR,KAAM,KAAK,cACX,OAAQ,SACd,CAAK,EACH,CAEA,iBAAiB,EAAM,EAAK,EAAa,EAAO,EAAU,CACxD,GAAI,IAAS,KAAM,CACjB,KAAK,0BAAyB,EAC9B,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,cAAgB,EAAM,MAC3B,MACF,CACA,OAAI,GAAqB,IAAI,CAAI,GAC/B,KAAK,OAAO,EAAgC,EAAY,EAAO,CAC7D,IAAK,EACL,OAAQ,KAAK,YAAW,GAAI,MAAQ,QACpC,KAAM,KAAK,cACX,OAAQ,qBAChB,CAAO,EACD,KAAK,0BAAyB,EAC9B,KAAK,KAAK,KAAM,EAAG,KAAM,CAAK,EAC9B,KAAK,cAAgB,EAAM,MACpB,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,GAElE,IAAS,WAAa,IAAS,OAAS,IAAS,YAAc,IAAS,SAAW,IAAS,SAAW,IAAS,QAC9G,KAAK,gBAAgB,OAAO,GAAK,KAAK,gBAAgB,OAAO,GAAK,KAAK,gBAAgB,OAAO,GAChG,KAAK,0BAAyB,EAC9B,KAAK,aAAa,IAAG,EACrB,KAAK,cAAgB,EAAM,QACpB,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,GAEtE,OAEK,KAAK,aAAa,EAAM,EAAK,EAAa,EAAO,CAAQ,CAClE,CACA,2BAA4B,CAC1B,KAAO,KAAK,aAAa,QAAQ,CAC/B,MAAM,EAAM,KAAK,YAAW,EAE5B,GADI,CAAC,GACD,EAAI,OAAS,SAAW,EAAI,OAAS,SAAW,EAAI,OAAS,SAAW,EAAI,OAAS,YAAc,EAAI,OAAS,QAClH,MACF,KAAK,aAAa,IAAG,CACvB,CACF,CAEA,WAAW,EAAM,EAAK,EAAa,EAAO,EAAU,CAClD,GAAI,GAAqB,IAAI,CAAI,EAAG,CAClC,KAAK,yBAAwB,EAC7B,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,KAAK,cAAgB,EAAM,OAC3B,KAAK,iBAAiB,KAAK,IAAI,EAC/B,MACF,CACA,OAAI,IAAS,WAAa,IAAS,OAAS,IAAS,YAAc,IAAS,SAAW,IAAS,SAAW,IAAS,SAAW,IAAS,KAClI,KAAK,gBAAgB,IAAI,GAC3B,KAAK,yBAAwB,EAC7B,KAAK,aAAa,IAAG,EACrB,KAAK,cAAgB,EAAM,YACpB,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,GAEtE,OAEK,KAAK,aAAa,EAAM,EAAK,EAAa,EAAO,CAAQ,CAClE,CACA,0BAA2B,CACzB,KAAO,KAAK,aAAa,QAAQ,CAC/B,MAAM,EAAM,KAAK,YAAW,EAE5B,GADI,CAAC,GACD,EAAI,OAAS,MAAQ,EAAI,OAAS,YAAc,EAAI,OAAS,QAAS,MAC1E,KAAK,aAAa,IAAG,CACvB,CACF,CAEA,YAAY,EAAM,EAAK,EAAa,EAAO,EAAU,CACnD,OAAI,IAAS,WAAa,IAAS,OAAS,IAAS,YAAc,IAAS,SAAW,IAAS,MAAQ,IAAS,SAAW,IAAS,MAAQ,IAAS,SAAW,IAAS,KACpK,KAAK,gBAAgB,IAAI,GAAK,KAAK,gBAAgB,IAAI,GACzD,KAAK,UAAS,EACP,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,GAEtE,OAEK,KAAK,YAAY,EAAM,EAAK,EAAa,EAAO,CAAQ,CACjE,CACA,WAAY,CAEV,IADA,KAAK,uBAAsB,EACpB,KAAK,aAAa,QAAQ,CAC/B,MAAM,EAAS,KAAK,aAAa,IAAG,EACpC,GAAI,EAAO,OAAS,MAAQ,EAAO,OAAS,KAAM,KACpD,CACA,KAAK,8BAA6B,EAClC,KAAK,cAAgB,EAAM,KAC7B,CAEA,cAAc,EAAM,EAAK,EAAc,EAAO,EAAW,CACvD,GAAI,IAAS,SAAU,CACjB,KAAK,YAAW,GAAI,OAAS,UAAU,KAAK,aAAa,IAAG,EAChE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,WAAY,CACnB,KAAK,YAAW,GAAI,OAAS,UAAU,KAAK,aAAa,IAAG,EAC5D,KAAK,YAAW,GAAI,OAAS,YAAY,KAAK,aAAa,IAAG,EAClE,KAAK,KAAK,EAAK,EAAG,KAAM,CAAK,EAC7B,MACF,CACA,GAAI,IAAS,KACb,IAAI,GAAqB,IAAI,CAAI,EAW/B,OAVA,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,SACR,KAAM,KAAK,cACX,OAAQ,qBAChB,CAAO,EACG,KAAK,iBAAiB,QAAQ,IAChC,KAAK,aAAa,QAAQ,EAC1B,KAAK,gCAA+B,GAElC,IAAS,SAAU,OAChB,KAAK,iBAAiB,EAAM,EAAK,GAAO,EAAO,CAAS,EAEjE,GAAI,IAAS,UAAY,IAAS,WAChC,OAAO,KAAK,YAAY,EAAM,EAAK,GAAO,EAAO,CAAS,EAE5D,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,SACR,KAAM,KAAK,cACX,OAAQ,SACd,CAAK,EACH,CAEA,qBAAqB,EAAM,EAAK,EAAa,EAAO,EAAU,CAC5D,OAAI,IAAS,WAAa,IAAS,SAAW,IAAS,SAAW,IAAS,SAAW,IAAS,SAAW,IAAS,MAAQ,IAAS,MAAQ,IAAS,MACnJ,KAAK,OAAO,EAAgC,EAAa,EAAO,CAC9D,IAAK,EACL,OAAQ,SACR,KAAM,KAAK,cACX,OAAQ,qBAChB,CAAO,EACD,KAAK,aAAa,QAAQ,EAC1B,KAAK,gCAA+B,EAC7B,KAAK,iBAAiB,EAAM,EAAK,EAAa,EAAO,CAAQ,GAE/D,KAAK,cAAc,EAAM,EAAK,EAAa,EAAO,CAAQ,CACnE,CACA,iCAAkC,CAChC,QAAS,EAAI,KAAK,aAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACtD,MAAM,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,EAAE,KAAO,EAAG,KAAM,SACtB,MAAM,EAAO,IAAM,EACnB,OAAQ,EAAE,KAAI,CACZ,IAAK,SACH,KAAK,cAAgB,EAAM,SAC3B,OACF,IAAK,KACL,IAAK,KACH,GAAI,CAAC,EAAM,CACT,KAAK,cAAgB,EAAM,OAC3B,MACF,CACA,MACF,IAAK,KACH,KAAK,cAAgB,EAAM,MAC3B,OACF,IAAK,QACL,IAAK,QACL,IAAK,QACH,KAAK,cAAgB,EAAM,YAC3B,OACF,IAAK,UACH,KAAK,cAAgB,EAAM,UAC3B,OACF,IAAK,WACH,KAAK,cAAgB,EAAM,cAC3B,OACF,IAAK,QACH,KAAK,cAAgB,EAAM,QAC3B,OACF,IAAK,WACH,KAAK,cAAgB,KAAK,uBAAuB,KAAK,uBAAuB,OAAS,CAAC,GAAK,EAAM,OAClG,MAGV,CACI,CACA,KAAK,cAAgB,EAAM,MAC7B,CAEA,aAAa,EAAM,EAAO,CACxB,GAAI,KAAK,iBAAiB,CAAI,EAAG,OAEjC,GADW,KAAK,iBAAgB,IACrB,EAAG,KAAM,CAClB,IAAI,EAAW,KAAK,aAAa,OAAS,EACtC,EAAQ,GACZ,KAAO,EAAW,GAAG,CACnB,MAAM,EAAI,KAAK,aAAa,CAAQ,EACpC,GAAI,CAAC,GAAS,EAAE,KAAO,EAAG,KAAM,MAChC,GAAI,EAAE,KAAO,EAAG,MAAQ,EAAE,KAAK,YAAW,IAAO,EAAM,CACrD,KAAK,aAAa,OAAS,EAC3B,MACF,CACI,IACF,KAAK,OAAO,GAAyB,EAAY,EAAO,CACtD,IAAK,EACL,KAAM,KAAK,aACvB,CAAW,EACD,EAAQ,IAEV,GACF,CACF,CACA,GAAI,GAAc,IAAI,CAAI,EAAG,CAC3B,KAAK,OACH,GACA,EACA,EACA,CAAE,IAAK,EAAM,KAAM,KAAK,aAAa,EACrC,CAAE,KAAM,SAAU,KAAM,SAAS,CAAI,GAAG,CAChD,EACM,MACF,CACA,GAAI,GAAoB,IAAI,CAAI,EAAG,CACjC,MAAM,EAAM,KAAK,YAAW,EAC5B,GAAI,GAAO,EAAI,KAAO,EAAG,MAAQ,EAAI,OAAS,EAAM,CAClD,KAAK,aAAa,IAAG,EACrB,KAAK,gCAAgC,CAAG,EACxC,MACF,CACA,GAAI,KAAK,oBAAoB,CAAI,GAAK,KAAK,gBAAgB,CAAI,EAAG,CAChE,KAAK,OAAO,GAA2B,EAAY,EAAO,CACxD,IAAK,EACL,KAAM,KAAK,aACrB,CAAS,EACD,KAAK,kBAAkB,CAAI,EAC3B,MACF,CACA,KAAK,OAAO,GAAyB,EAAY,EAAO,CACtD,IAAK,EACL,KAAM,KAAK,aACnB,CAAO,EACD,MACF,CACA,MAAM,EAAuB,GAAiB,IAAI,CAAI,EACtD,QAAS,EAAI,KAAK,aAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACtD,MAAM,EAAI,KAAK,aAAa,CAAC,EAC7B,GAAI,EAAE,KAAO,EAAG,MAAQ,EAAE,OAAS,EAAM,CACvC,QAAS,EAAI,KAAK,aAAa,OAAS,EAAG,EAAI,EAAG,IAAK,CACrD,MAAM,EAAS,KAAK,aAAa,CAAC,EAClC,GAAI,EAAO,KAAO,EAAG,MAAQ,EAAO,OAAS,GAAQ,CAAC,GAAiB,IAAI,EAAO,IAAI,GAAK,EAAE,GAAwB,GAAiB,IAAI,EAAO,IAAI,GAAI,CACvJ,KAAK,OAAO,GAA0B,EAAY,EAAO,CACvD,IAAK,EACL,SAAU,EAAO,KACjB,KAAM,KAAK,aACzB,CAAa,EACD,KACF,CACF,CACA,KAAK,aAAa,OAAS,GACvB,GAAiB,IAAI,CAAI,GAAK,IAAS,UAAY,IAAS,aAC9D,KAAK,gCAA+B,EAEtC,MACF,CACA,GAAI,EAAE,KAAO,EAAG,MAAQ,GAAiB,IAAI,EAAE,IAAI,GAAK,CAAC,GAAiB,IAAI,EAAE,IAAI,GAAK,EAAE,GAAwB,GAAiB,IAAI,EAAE,IAAI,GAAI,CAChJ,KAAK,OAAO,GAAyB,EAAY,EAAO,CACtD,IAAK,EACL,KAAM,KAAK,aACrB,CAAS,EACD,MACF,CACF,CACF,CACA,gCAAgC,EAAK,CACnC,MAAM,EAAM,KAAK,iBAAiB,QAAQ,CAAG,EACzC,GAAO,GAAG,KAAK,iBAAiB,OAAO,EAAK,CAAC,CACnD,CAEA,WAAW,EAAO,EAAK,CACrB,GAAI,KAAK,gBAAkB,EAAM,SAAW,KAAK,gBAAkB,EAAM,aAAe,KAAK,gBAAkB,EAAM,MAAO,CAC1H,MAAM,EAAQ,KAAK,KAAK,MAAM,EAAO,CAAG,EACf,KAAK,KAAK,CAAK,GAEtC,KAAK,OAAO,GAAiC,EAAa,EAAO,CAC/D,KAAM,KAAK,cACX,QAAS,EAAM,OAAS,GAAK,GAAG,EAAM,MAAM,EAAG,EAAE,CAAC,SAAM,CAClE,CAAS,EAEH,MACF,CACA,GAAI,KAAK,gBAAkB,EAAM,cAAe,CAC9C,MAAM,EAAQ,KAAK,KAAK,MAAM,EAAO,CAAG,EACxC,MAAI,KAAK,KAAK,CAAK,GACb,KAAK,YAAW,GAAI,OAAS,YAC/B,KAAK,aAAa,IAAG,EACrB,KAAK,cAAgB,EAAM,QACpB,KAAK,WAAW,EAAO,CAAG,GAGrC,MACF,CACI,KAAK,gBAAkB,EAAM,WAAY,KAAK,cAAkB,EAAM,gBAG5E,CACF,EACA,SAAS,GAAkB,EAAO,CAChC,MAAM,EAAM,CAAC,CAAC,EACd,QAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,IAC5B,EAAM,WAAW,CAAC,IAAM,IAAI,EAAI,KAAK,EAAI,CAAC,EAEhD,OAAO,CACT,CACA,SAAS,GAAgB,EAAY,EAAQ,CAC3C,IAAI,EAAK,EACL,EAAK,EAAW,OAAS,EAC7B,KAAO,EAAK,GAAI,CACd,MAAM,EAAM,EAAK,EAAK,IAAM,EACxB,EAAW,CAAG,GAAK,EAAQ,EAAK,EAC/B,EAAK,EAAM,CAClB,CACA,MAAO,CAAE,KAAM,EAAK,EAAG,OAAQ,EAAS,EAAW,CAAE,EAAI,CAAC,CAC5D,CAGA,SAAS,GAAa,EAAG,EAAG,CAC1B,GAAI,IAAM,EAAG,MAAO,GACpB,MAAM,EAAK,EAAE,OACP,EAAK,EAAE,OACb,GAAI,IAAO,EAAG,OAAO,EACrB,GAAI,IAAO,EAAG,OAAO,EACrB,MAAM,EAAQ,IAAI,MAAM,EAAK,CAAC,EACxB,EAAQ,IAAI,MAAM,EAAK,CAAC,EACxB,EAAO,IAAI,MAAM,EAAK,CAAC,EAC7B,QAAS,EAAI,EAAG,GAAK,EAAI,IAAK,EAAM,CAAC,EAAI,EACzC,QAAS,EAAI,EAAG,GAAK,EAAI,IAAK,CAC5B,EAAK,CAAC,EAAI,EACV,MAAM,EAAK,EAAE,WAAW,EAAI,CAAC,EAC7B,QAAS,EAAI,EAAG,GAAK,EAAI,IAAK,CAC5B,MAAM,EAAK,EAAE,WAAW,EAAI,CAAC,EACvB,EAAO,IAAO,EAAK,EAAI,EAC7B,IAAI,EAAI,KAAK,IAAI,EAAK,EAAI,CAAC,EAAI,EAAG,EAAM,CAAC,EAAI,EAAG,EAAM,EAAI,CAAC,EAAI,CAAI,EAC/D,EAAI,GAAK,EAAI,GAAK,IAAO,EAAE,WAAW,EAAI,CAAC,GAAK,EAAE,WAAW,EAAI,CAAC,IAAM,IAC1E,EAAI,KAAK,IAAI,EAAG,EAAM,EAAI,CAAC,EAAI,CAAC,GAElC,EAAK,CAAC,EAAI,CACZ,CACA,QAAS,EAAI,EAAG,GAAK,EAAI,IACvB,EAAM,CAAC,EAAI,EAAM,CAAC,EAClB,EAAM,CAAC,EAAI,EAAK,CAAC,CAErB,CACA,OAAO,EAAM,CAAE,CACjB,CACA,SAAS,GAAY,EAAM,EAAY,EAAc,EAAG,CACtD,GAAI,CAAC,EAAM,OAAO,KAClB,MAAM,EAAQ,EAAK,YAAW,EAC9B,IAAI,EAAO,KACP,EAAW,EAAc,EAC7B,UAAW,KAAQ,EAAY,CAC7B,GAAI,IAAS,EAAM,OAAO,KAC1B,GAAI,EAAK,YAAW,IAAO,EAAO,OAAO,EACzC,MAAM,EAAI,GAAa,EAAM,CAAI,EAC7B,EAAI,IACN,EAAO,EACP,EAAW,EAEf,CACA,OAAO,GAAY,EAAc,EAAO,IAC1C,CAGA,IAAI,GAA4B,IAAI,IAClC,2GAA2G,MACzG,GACJ,CACA,EACI,GAA4B,IAAI,IAChC,GAA8C,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAC9E,GAAwC,IAAI,IAAI,CAClD,0BACA,OACA,YACA,OACA,OACA,OACA,OACA,cACA,OACA,YACA,OACA,MACF,CAAC,EACG,GAAe,GAAM,CACvB,MAAM,EAAI,EAAE,WAAW,CAAC,EACxB,OAAO,GAAK,IAAM,GAAK,EACzB,EACI,GAA0B,0BAC1B,GAA6B,6BAC7B,GAAsB,sBACtB,GAA2B,2BAC3B,GAA0B,0BAC1B,GAAyB,yBACzB,GAAmB,mBACnB,GAAqB,qBACrB,GAA4B,4BAC5B,GAAyB,yBACzB,GAAkC,kCAClC,GAAmC,mCACnC,GAAyB,yBACzB,GAAwB,wBACxB,GAAsB,sBACtB,GAAyB,yBACzB,GAAsB,sBACtB,GAA4B,4BAC5B,GAAmB,mBACnB,GAAyB,yBACzB,GAAoB,oBACpB,GAAoB,oBACpB,GAAmB,mBACnB,GAAe,eACf,GAAiB,iBACjB,GAAwB,wBACxB,GAAuB,uBACvB,GAAsB,sBACtB,GAAY,YACZ,GAA0B,0BAC1B,GAA0B,0BAC1B,GAAyB,yBACzB,GAA4B,4BAC5B,GAAkC,kCAClC,GAAqB,qBACrB,GAA6B,6BAC7B,GAAuB,uBACvB,GAAgB,gBAChB,GAAoC,oCACpC,GAAkC,kCAClC,GAA8B,8BAC9B,GAAmC,IAAI,IAAI,CAC7C,OACA,OACA,SACA,YACA,cACA,OACA,MACF,CAAC,EACG,GAAqC,IAAI,IAAI,CAAC,KAAM,OAAQ,YAAa,OAAQ,MAAM,CAAC,EACxF,GAA4C,IAAI,IAAI,CAAC,OAAQ,cAAe,YAAa,OAAQ,MAAM,CAAC,EACxG,GAAc,OACd,GAAe,QACf,GAAa,OACb,GAAe,CACjB,oBAAqB,CAAE,GAAI,GAAmB,WAAY,EAAqB,EAC/E,mBAAoB,CAAE,GAAI,EAAgB,EAC1C,eAAgB,CAAE,GAAI,GAAc,WAAY,GAAkB,SAAU,EAAgB,EAC5F,iBAAkB,CAChB,GAAI,GACJ,WAAY,GACZ,SAAU,EACd,EACE,YAAa,CAAE,GAAI,EAAS,EAC5B,uBAAwB,CAAE,GAAI,EAAgC,CAChE,EACA,SAAS,GAAe,EAAO,EAAM,CACnC,OAAO,GAAiB,EAAO,CAAI,IAAM,IAC3C,CACA,SAAS,GAAiB,EAAO,EAAM,CACrC,IAAI,EAAS,EACb,KAAO,GAAU,IAAW,OAAO,WAAW,CAC5C,MAAM,EAAO,OAAO,yBAAyB,EAAQ,CAAI,EACzD,GAAI,IAAS,OAAQ,OAAO,OAAO,EAAK,OAAU,WAAa,EAAK,MAAQ,KAC5E,EAAS,OAAO,eAAe,CAAM,CACvC,CACA,OAAO,IACT,CACA,SAAS,GAAwB,EAAO,CACtC,MAAM,EAAM,CAAA,EACZ,IAAI,EAAS,EACb,KAAO,GAAU,IAAW,OAAO,WAAW,CAC5C,UAAW,KAAO,OAAO,oBAAoB,CAAM,EAC7C,IAAQ,eACZ,EAAI,KAAK,CAAG,EAEd,EAAS,OAAO,eAAe,CAAM,CACvC,CACA,OAAO,CACT,CACA,SAAS,GAAe,EAAO,EAAQ,CACrC,MAAM,EAAM,CAAA,EACZ,QAAS,EAAS,EAAO,EAAQ,EAAS,EAAO,OAAQ,CACvD,MAAM,EAAM,EAAO,CAAM,EACzB,GAAK,EACL,UAAW,KAAO,OAAO,KAAK,CAAG,EAAG,EAAI,KAAK,CAAG,CAClD,CACA,OAAO,CACT,CACA,SAAS,GAAsB,EAAM,EAAY,CAC/C,MAAM,EAAQ,GAAY,EAAM,CAAU,EAC1C,OAAO,EAAQ,CAAE,KAAM,eAAgB,KAAM,EAAM,GAAI,CAAK,EAAK,IACnE,CACA,SAAS,GAAiB,EAAO,CAC/B,GAAI,OAAO,GAAU,SAAU,OAAO,KACtC,MAAM,EAAI,EAAM,KAAI,EACpB,OAAI,IAAM,GAAW,KACjB,gBAAgB,KAAK,CAAC,EAAU,UAChC,kCAAkC,KAAK,CAAC,EAAU,aAClD,UAAU,KAAK,CAAC,EAAU,UAC1B,yBAAyB,KAAK,CAAC,EAAU,iBACzC,0CAA0C,KAAK,CAAC,EAAU,aACvD,IACT,CACA,IAAI,GAA6B,0CAC7B,GAA4B,CAC9B,QAAS,6KACT,WAAY,4JACZ,QAAS,mJACT,iBAAkB,4KAClB,aAAc,mNAChB,EACA,SAAS,GAAe,EAAM,EAAK,IAAI,GAAe,CAAE,gBAAA,EAAkB,EAAS,EAAK,CAAA,EAAI,CAC1F,OAAO,EAAG,KAAK,CAAE,cAAe,EAAK,IAAI,EAAI,IAAM,CACjD,GAAqB,EAAI,EAAM,CAAe,EAC9C,GAAuB,EAAI,CAAI,EAC/B,GAA+B,EAAI,CAAI,EACvC,GAA4B,EAAI,CAAI,EACpC,GAAmB,EAAI,CAAI,EAC3B,GAAkB,EAAI,CAAI,EAC1B,GAAwB,EAAI,CAAI,EAChC,GAA0B,EAAI,CAAI,EAClC,GAAsB,EAAI,CAAI,EAC9B,GAA2B,EAAI,CAAI,EACnC,GAAyB,EAAI,CAAI,EACjC,MAAM,EAAmC,IAAI,IACvC,EAAmC,IAAI,IACvC,EAAqC,IAAI,IAC/C,GAA4B,EAAI,EAAM,CAAgB,EACtD,GAAqB,EAAI,EAAM,EAAkB,CAAkB,EACnE,UAAW,KAAQ,EAAK,MACtB,EAAG,KACD,CAAE,SAAU,CAAI,EAChB,IAAM,GAAU,EAAI,EAAK,MAAM,CAAI,EAAG,EAAM,EAAkB,CAAkB,CACxF,EAEI,OAAA,GAA+B,EAAI,EAAM,CAAgB,EACzD,GAA0B,EAAI,EAAM,CAAkB,EAC/C,CACT,CAAC,CACH,CACA,SAAS,GAAU,EAAI,EAAM,EAAM,EAAkB,EAAoB,CACvE,GAAiB,EAAI,CAAI,EACzB,GAAoB,EAAI,CAAI,EAC5B,GAAsB,EAAI,EAAM,CAAI,EACpC,GAAoB,EAAI,CAAI,EAC5B,GAAuB,EAAI,EAAM,EAAM,EAAkB,CAAkB,EAC3E,GAAmB,EAAI,EAAM,CAAI,EACjC,GAAmB,EAAI,CAAI,CAC7B,CACA,IAAI,GAAiB,CACnB,gBAAiB,WAGjB,uBAAwB,CAAC,GAAG,CAC9B,EACA,SAAS,GAAmB,EAAI,EAAM,CAChC,OAAO,EAAK,SAAY,UAAY,CAAC,EAAK,SAC9C,GACE,EAAK,QACJ,GAAM,EAAG,OAAO,EAAE,GAAI,CAAE,GAAG,EAAE,KAAM,SAAU,EAAE,QAAQ,EAAI,EAAE,MAAO,EAAE,YAAc,IAAI,EACzF,EACJ,CACA,CACA,SAAS,GAAiB,EAAI,EAAM,CAClC,MAAM,EAAS,EAAK,IAAI,YACxB,GAAK,EACL,SAAW,CAAE,KAAA,EAAM,KAAA,CAAI,IAAM,EAAQ,CACnC,GAAI,IAAS,wBAAyB,CACpC,EAAG,KAAK,GAAuB,EAAM,CAAE,KAAM,SAAU,KAAM,sBAAsB,CAAE,EACrF,QACF,CACA,GAAI,IAAS,uBAAwB,CACnC,EAAG,MAAM,GAAkC,EAAM,CAC/C,KAAM,WACN,KAAM,EAAK,MACX,KAAM,SAAS,EAAK,IAAI,qCAAqC,EAAK,IAAI,IAC9E,CAAO,EACD,QACF,CACA,MAAM,EAAO,GAAa,CAAI,EAC9B,GAAI,CAAC,EAAM,SACX,MAAM,EAAK,EAAK,GAChB,GAAI,IAAS,YAAa,CACxB,GAAI,OAAO,EAAK,OAAU,UAAY,GAA2B,KAAK,EAAK,MAAM,KAAI,CAAE,EAAG,CACxF,EAAG,MAAM,GAAyB,EAAM,CACtC,KAAM,WACN,KAAM,EAAK,MACX,KAAM,+FAChB,CAAS,EACD,QACF,CACA,MAAM,EAAW,GAAiB,EAAK,KAAK,EAC5C,GAAI,EAAU,CACZ,EAAG,MACD,GACA,CAAE,GAAG,EAAM,SAAA,CAAQ,EACnB,CAAE,KAAM,WAAY,KAAM,EAAK,MAAO,KAAM,GAA0B,CAAQ,CAAC,CACzF,EACQ,QACF,CACF,CACA,MAAM,EAAgB,EAAK,SACrB,EAAmB,GAAiB,EAAK,MAAM,WAAW,GAAG,GAAK,EAAc,IAAI,EAAK,KAAK,MAAM,CAAC,CAAC,EAC5G,IAAI,EAAa,KACb,EACF,EAAa,CAAE,KAAM,cAAe,KAAM,EAAK,KAAM,GAAI,EAAK,KAAK,MAAM,CAAC,CAAC,EAClE,EAAK,aACd,EAAa,GAAsB,EAAK,KAAM,EAAK,UAAU,GAE/D,EAAG,MAAM,EAAI,EAAM,CAAU,EACzB,GACF,EAAG,KACD,GACA,CAAE,GAAG,EAAM,WAAY,EAAK,KAAK,MAAM,CAAC,CAAC,EACzC,CAAE,KAAM,cAAe,KAAM,EAAK,KAAM,GAAI,EAAK,KAAK,MAAM,CAAC,CAAC,CACtE,CAEE,CACF,CACA,SAAS,GAAmB,EAAI,EAAM,EAAM,CAC1C,KAAM,CAAE,MAAA,CAAK,EAAK,EAClB,UAAW,KAAa,EAAK,IAAI,WAAY,CAC3C,MAAM,EAAS,EAAM,YAAY,EAAU,IAAI,EAC/C,GAAI,IAAW,KAAM,SACrB,KAAM,CAAE,SAAA,CAAQ,EAAK,EACrB,UAAW,KAAW,EAAU,MACxB,KAAW,GACf,EAAG,MACD,GACA,CAAE,KAAM,EAAS,UAAW,EAAU,KAAM,IAAK,KAAK,EAAU,IAAI,EAAE,EACtE,GAAsB,EAAS,OAAO,KAAK,CAAQ,CAAC,CAC9D,CAGE,CACF,CACA,SAAS,GAAoB,EAAI,EAAM,CACrC,IAAI,EAAc,GAClB,UAAW,KAAQ,EAAK,IAAI,MAC1B,GAAI,EAAK,YAAY,OAAS,eAAgB,CAC5C,EAAc,GACd,KACF,CAEG,GACL,GAAgB,EAAI,EAAK,MAAO,CAAC,CACnC,CACA,SAAS,GAAoB,EAAI,CAC/B,MAAM,EAAM,SAAS,UAAU,SAAS,KAAK,CAAE,EACzC,EAAO,EAAI,MAAM,gCAAgC,EACvD,GAAI,CAAC,EAAM,OAAO,KAClB,MAAM,EAAS,EAAK,CAAC,EAAE,MAAM,GAAG,EAAE,IAAK,GAAM,EAAE,KAAI,CAAE,EAC/C,CAAC,EAAS,CAAI,CAAS,EAAI,EACjC,GAAI,CAAC,QAAQ,KAAK,GAAa,EAAE,GAAK,CAAC,QAAQ,KAAK,GAAa,EAAE,EAAG,OAAO,KAC7E,IAAI,EAAO,EAAI,MAAM,EAAK,CAAC,EAAE,MAAM,EAAE,KAAI,EACzC,GAAI,EAAK,WAAW,GAAG,EAAG,CACxB,GAAI,CAAC,EAAK,SAAS,GAAG,EAAG,OAAO,KAChC,EAAO,EAAK,MAAM,EAAG,EAAE,CACzB,CACA,MAAM,EAAa,EAAK,MAAM,OAAO,EAAE,IAAK,GAAM,EAAE,KAAI,CAAE,EAAE,OAAQ,GAAM,IAAM,IAAM,CAAC,EAAE,WAAW,IAAI,CAAC,EACzG,GAAI,EAAW,SAAW,EAAG,OAAO,KACpC,MAAM,EAAe,IAAI,OACvB,IAAI,CAAS,qBAAqB,CAAS,4CAC/C,EACQ,EAAU,CAAA,EAChB,UAAW,KAAa,EAAY,CAClC,MAAM,EAAI,EAAU,MAAM,CAAY,EACtC,GAAI,CAAC,EAAG,OAAO,KACf,EAAQ,KAAK,CAAE,KAAM,EAAE,CAAC,EAAG,OAAQ,EAAE,CAAC,GAAK,EAAE,CAAC,CAAC,CAAE,CACnD,CACA,OAAO,CACT,CACA,SAAS,GAAsB,EAAI,EAAM,EAAM,CAC7C,UAAW,KAAQ,EAAK,IAAI,MAAO,CACjC,GAAI,EAAK,YAAY,OAAS,WAAY,SAC1C,MAAM,EAAS,EAAK,UAAU,cAC9B,GAAI,CAAC,GAAQ,KAAM,SACnB,MAAM,EAAK,EAAO,YAAY,OAAS,YAAc,GAAiB,EAAK,WAAa,OAAO,eAAe,CAAI,EAAG,EAAO,IAAI,EAAI,EAAK,QAAQ,EAAO,IAAI,EAC5J,GAAI,OAAO,GAAO,WAAY,SAC9B,MAAM,EAAU,GAAoB,CAAE,EACtC,GAAI,IAAY,KAAM,SACtB,MAAM,EAAW,EAAQ,IAAI,CAAC,CAAE,KAAA,EAAM,OAAA,CAAM,IAAO,KAAK,CAAI,gBAAgB,CAAM,GAAG,EACrF,EAAG,KACD,GACA,CAAE,KAAM,EAAO,KAAM,QAAA,CAAO,EAC5B,CACE,KAAM,WACN,KAAM,WAAW,EAAS,KAAK,IAAI,CAAC,yDAAyD,EAAO,IAAI,kBAChH,CACA,CACE,CACF,CACA,SAAS,GAAgB,EAAI,EAAM,EAAW,CAC5C,GAAI,GAAS,KACb,OAAQ,EAAK,YAAY,KAAI,CAC3B,IAAK,eACC,IAAc,GAChB,EAAG,MACD,GACA,CAAE,KAAA,CAAI,EACN,CAAE,KAAM,OAAQ,KAAM,gBAAiB,GAAI,iBAAiB,CACtE,EAEM,OACF,IAAK,WACH,GAAgB,EAAI,EAAK,KAAM,EAAY,CAAC,EAC5C,OACF,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,mBACL,IAAK,YACL,IAAK,iBACH,GAAgB,EAAI,EAAK,KAAM,CAAS,EACxC,OACF,IAAK,UACL,IAAK,eACH,UAAW,KAAS,EAAK,OAAQ,GAAgB,EAAI,EAAO,CAAS,EACrE,OACF,QACE,MACN,CACA,CACA,IAAI,GAAe,CAAA,EACf,GAAsB,CACxB,GAAG,OAAO,KAAK,EAA0B,EACzC,GAAG,OAAO,KAAK,EAAW,CAC5B,EACA,SAAS,GAAoB,EAAI,EAAM,CACrC,UAAW,KAAS,EAAK,IAAI,OAC3B,UAAW,KAAW,EAAM,SAAU,CACpC,KAAM,CAAE,KAAA,EAAM,UAAA,CAAS,EAAK,EACtB,EAAQ,CACZ,GAAG,OAAO,KAAK,GAAsB,CAAI,GAAK,EAAY,EAC1D,GAAG,EACX,EACM,UAAW,KAAY,EACrB,GAAI,CAAC,EAAM,SAAS,CAAQ,EAAG,CAC7B,MAAM,EAAQ,GAAY,EAAU,CAAK,EACzC,EAAG,MACD,GACA,CACE,KAAA,EACA,SAAA,EACA,QAAA,EACA,MAAA,EACA,WAAY,OAAO,CAAI,IAAI,EAAU,KAAK,GAAG,CAAC,EAC5D,EACY,EAAQ,CAAE,KAAM,eAAgB,KAAM,IAAI,CAAQ,GAAI,GAAI,IAAI,CAAK,EAAE,EAAK,IACtF,CACQ,CAEJ,CAEJ,CACA,SAAS,GAAuB,EAAI,EAAM,EAAM,EAAkB,EAAoB,CACpF,MAAM,EAAM,GAAa,EAAM,EAAkB,CAAkB,EACnE,UAAW,KAAS,EAAK,IAAI,OAC3B,UAAW,KAAW,EAAM,SAAU,CACpC,KAAM,CAAE,KAAA,EAAM,WAAA,CAAU,EAAK,EAAQ,YAC/B,EAAc,GAAY,KAC1B,EAAY,EAAQ,KACpB,EAAS,CACb,UAAA,EACA,YAAA,EACA,WAAY,OAAO,CAAS,EACpC,EACM,QAAS,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAuB,EAAI,EAAK,CAAC,EAAG,EAAK,GAAO,CAAE,GAAG,EAAQ,SAAU,CAAC,CAAE,CAE9E,CAEJ,CACA,SAAS,GAAa,EAAM,EAAkB,EAAoB,CAChE,KAAM,CAAE,MAAA,EAAO,MAAA,EAAO,QAAA,EAAS,OAAQ,EAAS,OAAA,CAAM,EAAK,EACrD,EAAQ,EAAK,WAAa,OAAO,eAAe,CAAI,EACpD,EAAa,CAAE,GAAG,EAAS,GAAG,CAAO,EAC3C,MAAO,CAAE,OAAA,EAAQ,MAAA,EAAO,MAAA,EAAO,MAAA,EAAO,iBAAA,EAAkB,WAAA,EAAY,mBAAA,CAAkB,CACxF,CACA,SAAS,GAA4B,EAAI,EAAM,EAAkB,CAC/D,KAAM,CAAE,QAAS,EAAO,MAAA,CAAK,EAAK,EAC5B,EAAQ,EAAK,WAAa,OAAO,eAAe,CAAI,EAC1D,UAAW,KAAY,EACrB,EAAG,KAAK,CAAE,SAAA,CAAQ,EAAI,IAAM,CAC1B,MAAM,EAAO,EAAM,CAAQ,EAC3B,UAAW,KAAS,EAAK,IAAI,OAC3B,UAAW,KAAW,EAAM,SAAU,CACpC,KAAM,CAAE,WAAA,CAAU,EAAK,EAAQ,YACzB,EAAY,EAAQ,KACpB,EAAa,OAAO,CAAS,GACnC,GAAI,GAAY,YAAY,OAAS,iBAAkB,CACrD,GAAkB,IAAI,EAAW,IAAI,EACrC,KAAM,CAAE,KAAA,CAAI,EAAK,EACjB,GAAI,EAAM,CAAI,IAAM,OAAQ,CAC1B,MAAM,EAAa,GAAe,EAAO,CAAI,EAAI,CAC/C,KAAM,WACN,KAAM,EACN,KAAM,SAAS,CAAI,iEACnC,EAAkB,GAAsB,EAAM,OAAO,KAAK,CAAK,CAAC,EAClD,EAAG,MACD,GACA,CAAE,KAAA,EAAM,QAAA,EAAS,MAAA,EAAO,UAAA,EAAW,WAAA,CAAU,EAC7C,CAChB,CACY,CACF,CACF,CAEJ,CAAC,CAEL,CACA,IAAI,GAAQ,CAAC,EAAM,KAAQ,CAAE,KAAM,UAAW,KAAA,EAAM,GAAA,CAAE,GACtD,SAAS,GAAkB,EAAI,EAAM,EAAM,EAAY,EAAM,CAC3D,EAAG,MAAM,EAAM,CAAE,GAAG,EAAM,KAAA,CAAI,EAAI,GAAsB,EAAM,CAAU,CAAC,CAC3E,CACA,IAAI,GAAyC,IAAI,IAAI,CAAC,QAAS,QAAS,WAAY,UAAU,CAAC,EAC3F,GAAsB,GAAW,GAAU,OAAS,GAAuB,IAAI,EAAO,UAAU,GAAK,EAAO,SAAW,OACvH,GAAoB,CAMtB,SAAS,CAAE,GAAA,EAAI,IAAA,EAAK,OAAA,EAAQ,OAAA,CAAM,EAAI,CAChC,GAAU,GAAmB,CAAM,GAAK,OAAO,EAAI,KAAQ,WAC7D,EAAG,KAAK,GAAoB,CAAE,GAAG,EAAQ,QAAS,OAAO,CAAG,CAAC,CAAE,CACnE,EAEA,SAAS,CAAE,GAAA,EAAI,IAAA,EAAK,IAAA,EAAK,OAAA,CAAM,EAAI,CACjC,KAAM,CAAE,OAAA,EAAQ,MAAA,CAAK,EAAK,EACpB,CAAE,KAAA,CAAI,EAAK,EACb,EAAO,CAAI,IAAM,SACjB,GAAe,EAAO,CAAI,EAC5B,EAAG,MAAM,GAAqB,CAAE,GAAG,EAAQ,IAAA,EAAK,KAAA,CAAI,EAAI,GAAM,IAAI,CAAI,GAAI,IAAI,CAAI,EAAE,CAAC,EAErF,GAAkB,EAAI,GAAuB,EAAM,OAAO,KAAK,CAAM,EAAG,CAAE,GAAG,EAAQ,IAAA,CAAG,CAAE,EAC9F,EAEA,UAAU,CAAE,GAAA,EAAI,IAAA,EAAK,IAAA,EAAK,OAAA,CAAM,EAAI,CAClC,KAAM,CAAE,OAAA,EAAQ,MAAA,CAAK,EAAK,EACpB,CAAE,KAAA,CAAI,EAAK,EACb,GAAe,EAAO,CAAI,IAC1B,EAAO,CAAI,IAAM,OACnB,EAAG,MAAM,GAAqB,CAAE,GAAG,EAAQ,IAAA,EAAK,KAAA,CAAI,EAAI,GAAM,IAAI,CAAI,GAAI,IAAI,CAAI,EAAE,CAAC,EAErF,GAAkB,EAAI,GAAwB,EAAM,GAAwB,CAAK,EAAG,CAClF,GAAG,EACH,IAAA,CACR,CAAO,EACL,EACA,aAAa,CAAE,IAAA,EAAK,QAAA,CAAO,EAAI,CAC7B,EAAQ,EAAI,MAAM,EAClB,EAAQ,EAAI,MAAM,CACpB,EAMA,UAAU,CAAE,GAAA,EAAI,IAAA,EAAK,OAAA,EAAQ,QAAA,EAAS,OAAA,CAAM,EAAI,CAC9C,MAAM,EAAK,EAAI,KACT,EAAU,EAAI,gBAAe,EACnC,GAAI,IAAY,KAAM,CAChB,GAAU,GAAmB,CAAM,EAAG,EAAG,KAAK,GAAoB,CAAE,GAAG,EAAQ,QAAA,CAAO,CAAE,EAE1F,EAAG,KACD,GACA,CAAE,GAAG,EAAQ,QAAA,CAAO,EACpB,GAAM,IAAI,CAAO,GAAI,CAAO,CACtC,EACM,MACF,SAAW,EAAG,SAAW,EAAG,CAC1B,MAAM,EAAU,OAAO,EAAG,CAAC,CAAC,EAC5B,EAAG,KAAK,GAA2B,CAAE,GAAG,EAAQ,QAAA,CAAO,EAAI,GAAM,MAAM,CAAO,KAAM,CAAO,CAAC,CAC9F,CACA,UAAW,KAAU,EAAI,EAAQ,CAAM,CACzC,EACA,eAAe,CAAE,GAAA,EAAI,IAAA,EAAK,IAAA,EAAK,OAAA,CAAM,EAAI,CACvC,EAAI,kBAAkB,IAAI,EAAI,IAAI,EAC9B,EAAI,MAAM,EAAI,IAAI,IAAM,QAC1B,GAAkB,EAAI,GAAyB,EAAI,KAAM,OAAO,KAAK,EAAI,KAAK,EAAG,CAAM,CAC3F,EAIA,aAAa,CAAE,GAAA,EAAI,IAAA,EAAK,OAAA,EAAQ,QAAA,CAAO,EAAI,CACzC,MAAM,EAAc,GAAM,EAAE,YAAY,OAAS,YAAc,EAAE,YAAY,OAAS,aAAe,EAAE,gBAAe,IAAO,KACzH,GAAmB,CAAM,GAAK,EAAI,KAAK,MAAM,CAAU,GACzD,EAAG,KAAK,GAAoB,CAAE,GAAG,EAAQ,QAAS,OAAO,CAAG,CAAC,CAAE,EACjE,UAAW,KAAO,EAAI,KAAM,EAAQ,CAAG,CACzC,EACA,OAAO,CAAE,GAAA,EAAI,IAAA,EAAK,IAAA,EAAK,OAAA,CAAM,EAAI,CAC/B,EAAI,oBAAoB,IAAI,EAAI,IAAI,EAChC,EAAI,WAAW,EAAI,IAAI,IAAM,QAC/B,GAAkB,EAAI,GAAqB,EAAI,KAAM,OAAO,KAAK,EAAI,UAAU,EAAG,CAAM,CAC5F,CACF,EACA,SAAS,EAAuB,EAAI,EAAK,EAAK,EAAc,GAAO,EAAS,KAAM,EAAS,GAAM,CAC/F,MAAM,EAAS,GAAkB,GAAK,YAAY,IAAI,EACtD,GAAI,IAAW,OAAQ,OAEvB,EAAO,CAAE,GAAA,EAAI,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,YAAA,EAAa,QAD3B,GAAQ,EAAuB,EAAI,EAAK,EAAK,EAAa,EAAQ,EAAK,EACnC,OAAA,CAAM,CAAE,CAC/D,CACA,IAAI,GAAmB,CACrB,eAAgB,CAAE,WAAY,UAAU,EACxC,WAAY,CAAE,WAAY,YAAY,EACtC,aAAc,CAAE,WAAY,eAAe,EAC3C,SAAU,CAAE,WAAY,UAAU,EAClC,SAAU,CAAE,WAAY,UAAU,EAClC,iBAAkB,CAAE,WAAY,eAAe,CACjD,EACA,SAAS,GAAe,EAAU,CAChC,OAAO,GAAiB,CAAQ,GAAK,IACvC,CACA,SAAS,GAAgB,EAAM,CAC7B,MAAM,EAAK,EAAK,YAAY,KAC5B,OAAI,IAAO,YAAoB,UAC3B,IAAO,SAAiB,OAAO,EAAK,IAAI,GACxC,IAAO,cAAsB,2BAC1B,IAAI,EAAK,IAAI,EACtB,CACA,SAAS,GAAe,EAAM,CAC5B,MAAM,EAAK,EAAK,YAAY,KAC5B,OAAI,IAAO,SAAiB,OAAO,EAAK,IAAI,GACxC,IAAO,cAAsB,2BAC1B,IAAI,EAAK,IAAI,EACtB,CACA,SAAS,GAAwB,EAAI,EAAO,EAAK,EAAa,CAC5D,GAAI,GAAe,CAAC,EAAO,OAC3B,MAAM,EAAO,EAAM,YAAY,KAC/B,IAAI,EACJ,GAAI,IAAS,aAAc,EAAQ,OAAO,KAAK,EAAM,KAAK,UACjD,IAAS,WAAY,EAAQ,EAAM,MAAM,IAAK,GAAM,GAAG,IAAI,MAC/D,QACL,UAAW,KAAQ,EACb,GAA0B,IAAI,CAAI,GACpC,EAAG,KACD,GACA,CAAE,KAAA,EAAM,IAAA,EAAK,WAAY,IAAI,CAAI,EAAE,EACnC,CAAE,KAAM,aAAc,KAAM,EAAM,GAAI,IAAI,CAAI,EAAE,CACxD,CAGA,CACA,SAAS,GAAqB,EAAI,EAAM,EAAkB,EAAoB,CAC5E,KAAM,CAAE,MAAA,CAAK,EAAK,EACZ,EAAM,GAAa,EAAM,EAAkB,CAAkB,EACnE,UAAW,KAAY,EACrB,EAAG,KAAK,CAAE,SAAA,CAAQ,EAAI,IAAM,CAC1B,MAAM,EAAO,EAAM,CAAQ,EAC3B,UAAW,KAAS,EAAK,IAAI,MAAO,CAClC,KAAM,CAAE,MAAA,EAAO,aAAA,EAAc,UAAA,EAAW,YAAA,EAAa,IAAA,CAAG,EAAK,EAE7D,GADA,GAAwB,EAAI,EAAO,EAAK,CAAW,EAC/C,GAAO,YAAY,OAAS,WAAY,CAC1C,MAAM,EAAgC,IAAI,IAC1C,UAAW,KAAQ,EAAM,MAAO,CAC9B,MAAM,EAAO,GAAM,KACnB,GAAI,IAAS,QAAU,IAAS,WAAY,CAC1C,MAAM,EAAU,EAAc,IAAI,CAAI,EAChC,EAAQ,GAAgB,CAAI,EAC9B,EAAS,EAAQ,KAAK,CAAK,EAC1B,EAAc,IAAI,EAAM,CAAC,CAAK,CAAC,CACtC,CACA,GAAI,GAAM,YAAY,OAAS,SAAU,CAClC,EAAK,gBACR,EAAG,MAAM,GAAkB,CAAE,KAAM,EAAK,KAAM,IAAA,CAAG,CAAE,EAErD,MAAM,EAAW,CACf,CAAC,MAAO,EAAK,OAAO,EACpB,CAAC,QAAS,EAAK,OAAO,EACtB,CAAC,QAAS,EAAK,OAAO,CACtC,EACc,SAAW,CAAC,EAAQ,CAAM,IAAK,EAC7B,EAAuB,EAAI,EAAQ,EAAK,EAAa,CACnD,IAAA,EACA,WAAY,OAAO,EAAK,IAAI,GAC5B,OAAA,CAClB,CAAiB,CAEL,MAAW,GAAM,MAAQ,QACvB,EAAuB,EAAI,EAAK,IAAK,EAAK,EAAa,CACrD,IAAA,EACA,WAAY,GAAe,CAAI,CAC/C,CAAe,CAEL,CACA,SAAW,CAAC,EAAM,CAAO,IAAK,EACxB,EAAQ,OAAS,GACnB,EAAG,MAAM,GAA2B,CAAE,KAAA,EAAM,QAAA,EAAS,IAAA,CAAG,CAAE,CAGhE,CACA,GAAI,IAAiB,KACnB,UAAW,KAAK,EACd,GAAI,EAAE,OAAS,OACT,EAAE,SACJ,EAAuB,EAAI,EAAE,QAAS,EAAK,GAAO,CAAE,IAAA,EAAK,WAAY,OAAO,CAAE,EAC5E,EAAE,eACJ,EAAuB,EAAI,EAAE,cAAe,EAAK,GAAO,CACtD,IAAA,EACA,WAAY,cAC9B,CAAiB,EACC,EAAE,aACJ,EAAuB,EAAI,EAAE,YAAa,EAAK,GAAO,CACpD,IAAA,EACA,WAAY,YAC9B,CAAiB,MACE,CACL,MAAM,EAAa,EAAE,OAAS,QAAU,eAAiB,IAAI,EAAE,IAAI,GACnE,EAAuB,EAAI,EAAE,IAAK,EAAK,GAAO,CAAE,IAAA,EAAK,WAAA,CAAU,CAAE,CACnE,CAGA,GACF,EAAuB,EAAI,EAAW,EAAK,GAAO,CAAE,IAAA,EAAK,WAAY,OAAO,CAAE,CAElF,CACA,UAAW,KAAQ,EAAK,IAAI,MAAO,CACjC,MAAM,EAAW,EAAK,YAAY,KAClC,GAAI,IAAa,YAAa,SAC9B,MAAM,EAAU,GAAe,CAAQ,EAIvC,GAHI,EAAK,KACP,EAAuB,EAAI,EAAK,IAAK,EAAK,GAAO,CAAO,EAEtD,IAAa,YAAc,EAAK,eAAgB,CAClD,MAAM,EAAO,EAAK,SACd,EAAK,SACP,EAAuB,EAAI,EAAK,QAAS,EAAK,GAAO,CACnD,WAAY,uBAC1B,CAAa,EACC,EAAK,aACP,EAAuB,EAAI,EAAK,YAAa,EAAK,GAAO,CACvD,WAAY,4BAC1B,CAAa,CACL,CACF,CACF,CAAC,CAEL,CACA,SAAS,GAA2B,EAAI,EAAM,CAC5C,MAAM,EAAU,EAAK,SAAW,CAAA,EAC1B,EAAS,EAAK,QAAU,CAAA,EAC9B,UAAW,KAAQ,EACb,EAAQ,CAAI,IAAM,QACpB,EAAG,MAAM,GAAwB,CAC/B,KAAA,EACA,QAAS,IAAI,CAAI,mDACjB,IAAK,4GACb,CAAO,EACL,UAAW,KAAQ,EACjB,UAAW,IAAU,CAAC,KAAM,QAAS,WAAW,EAC1C,EAAQ,EAAO,CAAM,IAAM,QAAU,EAAO,CAAI,IAAM,QACxD,EAAG,KAAK,GAAwB,CAC9B,KAAA,EACA,QAAS,8BAA8B,CAAI,0BAA0B,EAAO,CAAM,IAClF,IAAK,oBAAoB,CAAI,mCAAmC,EAAO,CAAM,8CACvF,CAAS,CACT,CACA,SAAS,GAAqB,EAAI,EAAM,EAAiB,CACvD,MAAM,EAAQ,EAAK,MACnB,GAAI,CAAC,EAAO,OACZ,IAAI,EAAa,KACjB,UAAW,KAAO,OAAO,KAAK,CAAK,EAC7B,GAA4B,IAAI,CAAG,GAAK,EAAgB,IAAI,CAAG,IACnE,IAAe,CACb,GAAG,GACH,GAAG,GACH,GAAG,CACT,EACI,EAAG,KAAK,GAA4B,CAAE,IAAA,CAAG,EAAI,GAAsB,EAAK,CAAU,CAAC,EAEvF,CACA,SAAS,GAAuB,EAAI,EAAM,CACxC,MAAM,EAAS,EAAK,EAAS,GAAG,OAChC,GAAK,EACL,UAAW,KAAa,EAAQ,CAC9B,MAAM,EAAQ,EAAO,CAAS,EACzB,OAAO,OAAO,EAAO,MAAM,IAC5B,OAAO,EAAM,MAAS,UACxB,EAAG,MAAM,GAAsB,CAC7B,UAAA,EACA,KAAM,uBACN,IAAK,OAAO,EAAM,KAClB,QAAS,EAAM,MAAM,MAAQ,IACrC,CAAO,GAEC,EAAM,MAAQ,MAAQ,EAAM,KAAK,cAAgB,SACnD,EAAG,MAAM,GAAsB,CAC7B,UAAA,EACA,KAAM,kBACN,IAAK,EAAM,OAAS,KAAO,OAAS,OAAO,EAAM,IACzD,CAAO,EAEL,CACF,CACA,SAAS,GAA+B,EAAI,EAAM,CAChD,MAAM,EAAO,EAAK,EAAS,EAC3B,GAAK,EACL,UAAW,KAAQ,EAAK,OAClB,OAAO,OAAO,EAAK,QAAS,CAAI,GAAG,EAAG,MAAM,GAA6B,CAAE,KAAA,CAAI,CAAE,CACzF,CACA,SAAS,GAA+B,EAAI,EAAM,EAAkB,CAClE,UAAW,KAAQ,EAAK,MACjB,EAAiB,IAAI,CAAI,GAC5B,EAAG,KAAK,GAA4B,CAAE,KAAA,CAAI,CAAE,CAGlD,CACA,IAAI,GAAmB,CAAC,UAAW,SAAU,OAAO,EAChD,GAAqB,uXACzB,SAAS,GAAsB,EAAI,EAAM,CACvC,UAAW,KAAW,GAAkB,CACtC,MAAM,EAAQ,EAAK,CAAO,EAC1B,GAAK,EACL,UAAW,KAAQ,EAAO,CACxB,MAAM,EAAK,EAAM,CAAI,EACjB,OAAO,GAAO,YAAc,EAAG,aAAa,OAAS,iBACvD,EAAG,MACD,GACA,CAAE,KAAA,EAAM,QAAA,CAAO,EACf,CAAE,KAAM,WAAY,KAAM,EAAM,KAAM,EAAkB,CAClE,CAEI,CACF,CACF,CACA,IAAI,GAAuB,oKACvB,GAA0B,8CAC1B,GAAmB,oCACnB,GAAY,GAAM,EAAE,QAAQ,SAAU,GAAG,EAC7C,SAAS,GAAc,EAAM,CAC3B,OAAO,EAAK,QAAQ,oBAAqB,EAAQ,EAAE,QAAQ,uBAAwB,EAAQ,EAAE,QAAQ,uBAAwB,EAAQ,CACvI,CACA,SAAS,GAAiB,EAAK,EAAO,CACpC,IAAI,EAAO,EACP,EAAY,EAChB,QAAS,EAAI,EAAG,EAAI,EAAO,IACrB,EAAI,CAAC,IAAM;IACb,IACA,EAAY,EAAI,GAGpB,MAAO,CAAE,KAAA,EAAM,OAAQ,EAAQ,EAAY,CAAC,CAC9C,CACA,SAAS,GAAgB,EAAM,CAC7B,MAAM,EAAwB,IAAI,IAClC,GAAiB,UAAY,EAC7B,QAAS,EAAI,GAAiB,KAAK,CAAI,EAAG,IAAM,KAAM,EAAI,GAAiB,KAAK,CAAI,EAClF,EAAM,IAAI,GAAiB,EAAM,EAAE,KAAK,EAAE,IAAI,EAEhD,OAAO,CACT,CACA,IAAI,GAAuB,gMAC3B,SAAS,GAAc,EAAI,EAAM,EAAK,CACpC,GAAI,CAAC,EAAM,OACX,MAAM,EAAS,GAAgB,CAAI,EAC7B,EAAQ,GAAc,CAAI,EAC1B,EAAS,CAAC,EAAI,IAAS,CACvB,EAAO,IAAI,EAAK,SAAS,IAAI,GACjC,EAAG,MAAM,EAAI,CAAE,IAAA,EAAK,GAAG,CAAI,EAAI,CAAE,KAAM,WAAY,KAAM,EAAoB,CAAE,CACjF,EACA,GAAqB,UAAY,EACjC,QAAS,EAAI,GAAqB,KAAK,CAAK,EAAG,IAAM,KAAM,EAAI,GAAqB,KAAK,CAAK,EAAG,CAC/F,MAAM,EAAK,EAAE,MAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,EACrC,EAAO,GAAmC,CACxC,OAAQ,EAAE,CAAC,EAAE,YAAW,EACxB,SAAU,GAAiB,EAAO,CAAE,CAC1C,CAAK,CACH,CACA,GAAwB,UAAY,EACpC,QAAS,EAAI,GAAwB,KAAK,CAAK,EAAG,IAAM,KAAM,EAAI,GAAwB,KAAK,CAAK,EAAG,CACrG,MAAM,EAAK,EAAE,MAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EACtC,EAAO,GAAiC,CACtC,SAAU,EAAE,CAAC,EAAE,YAAW,EAC1B,SAAU,GAAiB,EAAO,CAAE,CAC1C,CAAK,CACH,CACF,CACA,SAAS,GAAyB,EAAI,EAAM,CAC1C,GAAc,EAAI,EAAK,YAAa,aAAa,EACjD,UAAW,KAAQ,EAAK,MAAO,CAC7B,KAAM,CAAE,MAAA,CAAK,EAAK,EAAK,MAAM,CAAI,EAC7B,GAAO,EAAG,KAAK,CAAE,SAAU,CAAI,EAAI,IAAM,GAAc,EAAI,EAAO,OAAO,CAAC,CAChF,CACF,CACA,SAAS,GAA4B,EAAI,EAAM,CAC7C,UAAW,KAAQ,EAAK,YAClB,GAAY,CAAI,GAChB,EAAK,QAAQ,CAAI,IAAM,QACzB,EAAG,MAAM,GAAyB,CAAE,KAAA,EAAM,MAAO,EAAK,YAAY,CAAI,CAAC,CAAE,CAG/E,CACA,SAAS,GAAmB,EAAI,EAAM,CACpC,UAAW,KAAQ,EAAK,YAAa,CACnC,GAAI,CAAC,GAAY,CAAI,EAAG,SACxB,MAAM,EAAM,EAAK,YAAY,CAAI,EAC7B,IAAQ,QAAQ,EAAG,MAAM,GAAwB,CAAE,KAAA,EAAM,MAAO,CAAG,CAAE,CAC3E,CACF,CACA,IAAI,GAAoC,IAAI,IAAI,CAAC,OAAQ,SAAS,CAAC,EACnE,SAAS,GAAkB,EAAI,EAAM,CACnC,MAAM,EAAM,EAAK,WACjB,GAAI,CAAC,MAAM,QAAQ,CAAG,EAAG,CACnB,IAAQ,QAAU,OAAO,KAAK,CAAG,EAAE,OAAS,GAC9C,EAAG,MAAM,GAAkB,CAAE,KAAM,SAAU,QAAS,yBAAyB,CAAE,EACnF,MACF,CACA,UAAW,KAAS,EAAK,CACvB,GAAI,OAAO,GAAU,SAAU,SAC/B,GAAI,IAAU,MAAQ,OAAO,GAAU,UAAY,MAAM,QAAQ,CAAK,EAAG,CACvE,EAAG,MAAM,GAAkB,CACzB,KAAM,OAAO,CAAK,EAClB,QAAS,uDACjB,CAAO,EACD,QACF,CACA,MAAM,EAAQ,OAAO,KAAK,CAAK,EAAE,OAAQ,GAAM,CAAC,GAAkB,IAAI,CAAC,CAAC,EACxE,GAAI,EAAM,OAAS,EAAG,CACpB,EAAG,MAAM,GAAkB,CACzB,KAAM,OAAO,EAAM,IAAI,EACvB,QAAS,mBAAmB,EAAM,KAAK,IAAI,CAAC,EACpD,CAAO,EACD,QACF,CACA,GAAI,OAAO,EAAM,MAAS,UAAY,EAAM,OAAS,GAAI,CACvD,EAAG,MAAM,GAAkB,CACzB,KAAM,OAAO,EAAM,IAAI,EACvB,QAAS,yCACjB,CAAO,EACD,QACF,CACI,EAAM,UAAY,QAAU,OAAO,EAAM,SAAY,UACvD,EAAG,MAAM,GAAkB,CAAE,KAAM,EAAM,KAAM,QAAS,4BAA4B,CAAE,CAC1F,CACF,CACA,SAAS,GAA0B,EAAI,EAAM,CAC3C,MAAM,EAAQ,EAAK,MACnB,GAAK,EACL,UAAW,KAAQ,EAAK,OAAQ,CAE9B,GADI,GAAY,CAAI,GAChB,EAAM,cAAc,CAAI,GAAK,EAAM,aAAa,CAAI,EAAG,SAC3D,MAAM,EAAO,CAAE,KAAA,EAAM,WAAY,EAAK,OAAO,CAAI,GAAK,IAAI,EACtD,EAAK,WAAY,EAAG,KAAK,GAAoB,CAAI,EAChD,EAAG,MAAM,GAAoB,CAAI,CACxC,CACF,CACA,SAAS,GAAwB,EAAI,EAAM,CACzC,GAAK,EAAK,MACV,UAAW,KAAQ,EAAK,OACjB,GAAY,CAAI,GACjB,EAAK,MAAM,gBAAgB,CAAI,IAAM,MACvC,GAAkB,EAAI,GAAwB,EAAM,GAAe,EAAK,MAAO,QAAQ,EAAG,CAAA,CAAE,CAElG,CACA,SAAS,GAA0B,EAAI,EAAM,EAAoB,CAC/D,UAAW,KAAQ,EAAK,OAClB,GAAY,CAAI,GACf,EAAmB,IAAI,CAAI,GAC9B,EAAG,KAAK,GAA0B,CAAE,KAAA,CAAI,CAAE,CAGhD,CACG,IAAC,GAAc,KAAM,CACtB,aAAc,CACZ,KAAK,QAAU,CAAA,EACf,KAAK,MAAQ,CAAA,CACf,CACA,KAAK,EAAO,EAAI,CACd,MAAM,EAAO,KAAK,MAClB,KAAK,MAAQ,CAAE,GAAG,EAAM,GAAG,CAAK,EAChC,GAAI,CACF,OAAO,EAAE,CACX,QAAC,CACC,KAAK,MAAQ,CACf,CACF,CACA,MAAM,EAAI,EAAM,EAAa,KAAM,CACjC,KAAK,OAAO,EAAI,EAAM,GAAc,CAAU,CAChD,CACA,KAAK,EAAI,EAAM,EAAa,KAAM,CAChC,KAAK,OAAO,EAAI,EAAM,GAAa,CAAU,CAC/C,CACA,KAAK,EAAI,EAAM,EAAa,KAAM,CAChC,KAAK,OAAO,EAAI,EAAM,GAAY,CAAU,CAC9C,CACA,OAAO,EAAI,EAAO,CAAA,EAAI,EAAQ,GAAc,EAAa,KAAM,CAC7D,KAAK,QAAQ,KAAK,CAAE,GAAA,EAAI,KAAA,EAAM,MAAA,EAAO,QAAS,CAAE,GAAG,KAAK,KAAK,EAAI,WAAA,CAAU,CAAE,CAC/E,CACF,EACI,GAAmB,cAAc,EAA0B,CAC7D,YAAY,EAAW,CACrB,MAAM,CAAS,EACf,KAAK,MAAQ,CAAA,EACb,KAAK,YAAc,CAAA,CACrB,CACA,aAAa,EAAO,EAAc,EAAW,EAAc,GAAO,EAAM,KAAM,CAC5E,MAAM,aAAa,EAAO,EAAc,EAAW,EAAa,CAAG,EACnE,KAAK,MAAM,KAAK,CAAE,MAAA,EAAO,aAAA,EAAc,UAAA,EAAW,YAAA,EAAa,IAAA,CAAG,CAAE,CACtE,CACA,aAAa,EAAM,EAAM,CACvB,MAAM,EAAM,KAAK,WACjB,KAAK,YAAY,KAAK,CAAE,KAAA,EAAM,KAAM,GAAO,EAAK,MAAQ,OAAS,CAAE,GAAG,EAAM,IAAA,CAAG,EAAK,CAAI,CAAE,CAC5F,CACF,EAGI,GAAW,CAAC,OAAQ,QAAQ,EAChC,SAAS,GAAS,EAAO,CACvB,MAAM,EAAM,CAAA,EACZ,UAAW,KAAS,GAAU,UAAW,KAAK,EAAM,CAAK,GAAK,CAAA,EAAI,EAAI,KAAK,CAAE,KAAM,EAAO,GAAG,CAAC,CAAE,EAChG,UAAW,KAAK,EAAM,IAAM,CAAA,EAAI,EAAI,KAAK,CAAC,EAC1C,OAAO,CACT,CACA,SAAS,GAAY,EAAM,EAAM,CAC/B,OAAO,OAAO,GAAS,WAAa,EAAK,CAAI,GAAK,CAAA,EAAK,GAAQ,CAAA,CACjE,CACA,SAAS,GAAc,EAAY,EAAY,EAAO,EAAM,CAC1D,GAAK,EACL,UAAW,KAAM,GAAS,CAAK,EAAG,CAChC,MAAM,EAAO,GAAY,EAAG,KAAM,CAAI,EACtC,OAAQ,EAAG,KAAI,CACb,IAAK,OACH,EAAW,WAAW,EAAY,EAAG,KAAM,CAAI,EAC/C,MACF,IAAK,SACH,EAAW,aAAa,EAAY,EAAG,KAAM,EAAM,EAAG,IAAI,EAC1D,KACR,CACE,CACF,CAGA,IAAI,GAA6B,OAAO,UAAU,EAC9C,GAAe,GAAO,KACtB,GAAc,GACZ,aAAa,IAAY,IAAI,IAAI,CAAC,EAClC,MAAM,QAAQ,CAAC,GAAK,GAAc,CAAC,EAC9B,IAAI,IAAI,MAAM,QAAQ,CAAC,EAAI,EAAI,OAAO,QAAQ,CAAC,CAAC,EAClD,KAEL,GAAc,CAChB,IAAK,CAAE,GAAO,GAAM,GAAa,IAAM,IAAI,EAC3C,KAAM,CAAE,GAAM,OAAO,GAAM,SAAW,GAAM,GAAG,WAAQ,GAAQ,GAAI,IAAM,EAAE,EAC3E,IAAK,CAAC,OAAO,UAAY,GAAM,OAAO,SAAS,CAAC,EAAI,KAAK,MAAM,CAAC,EAAI,KAAM,IAAM,CAAC,EACjF,MAAO,CAAC,OAAO,SAAU,GAAa,IAAM,CAAC,EAC7C,KAAM,CAAE,GAAM,OAAO,GAAM,UAAY,GAAM,CAAC,CAAC,EAAG,IAAM,EAAK,EAC7D,KAAM,CAAC,MAAM,QAAU,GAAM,MAAM,QAAQ,CAAC,EAAI,CAAC,GAAG,CAAC,EAAI,KAAM,IAAM,CAAA,CAAE,EACvE,OAAQ,CAAC,GAAgB,GAAM,GAAc,CAAC,EAAI,CAAE,GAAG,CAAC,EAAK,KAAM,KAAO,CAAA,EAAG,EAC7E,IAAK,CAAE,GAAM,aAAa,IAAK,GAAY,IAAsB,IAAI,GAAK,EAC1E,IAAK,CACF,GAAM,aAAa,IACnB,GAAM,aAAa,KAAO,MAAM,QAAQ,CAAC,EAAI,IAAI,IAAI,CAAC,EAAI,KAC3D,IAAsB,IAAI,GAC9B,CACA,EACI,GAAQ,KAAM,CAEhB,YAAY,EAAO,EAAM,EAAc,CAAC,EAAW,EAAS,CAAW,EAAI,GAAY,CAAK,EAAG,CAC7F,KAAK,KAAO,EACZ,KAAK,KAAO,EACZ,KAAK,UAAY,EACjB,KAAK,QAAU,EACf,KAAK,aAAe,IAAiB,OAAS,EAAW,EAAK,CAChE,CACA,QAAQ,EAAG,CACT,OAAO,KAAK,UAAU,CAAC,CACzB,CACA,SAAS,EAAG,EAAe,KAAM,CAC/B,GAAI,KAAK,QAAQ,CAAC,EAAG,OAAO,EAC5B,MAAM,EAAK,KAAK,QAAQ,CAAC,EACzB,OAAO,KAAK,QAAQ,CAAE,EAAI,EAAK,CACjC,CACA,gBAAgB,EAAG,CACjB,OAAO,KAAK,SAAS,EAAG,KAAK,YAAY,CAC3C,CACF,EACI,GAAU,GAAM,GAAG,aAAa,eAAY,EAC5C,GAAe,GAAM,GAAO,CAAC,GAAG,MAAQ,KACxC,GAAY,cAAc,EAAM,CAClC,YAAY,EAAO,EAAM,EAAM,CAC7B,MAAM,EAAO,EAAM,KAAM,CAAE,GAAM,GAAY,CAAC,IAAM,EAAO,GAAa,IAAM,IAAI,CAAC,EACnF,KAAK,KAAO,CACd,CACF,EACA,SAAS,GAAY,EAAO,EAAO,EAAM,CACvC,MAAM,EAAO,GAAO,gBAAgB,EAAM,IAAI,GAAK,KACnD,OAAI,IAAS,MACX,QAAQ,KACN,EAAQ,oBAAoB,EAAM,IAAI,iBAAiB,EAAM,IAAI,uBAAyB,oBAAoB,EAAM,IAAI,gCAAgC,EAAM,IAAI,kDAA6C,EAAM,IAAI,gEAC/N,EACS,GAAM,KAAK,CAAE,GAAG,EAAM,KAAM,GAAG,CAAI,EAAI,CAAE,MAAA,CAAK,CAAE,GAAK,IAC9D,CACA,SAAS,GAAc,EAAM,EAAO,CAClC,MAAM,EAAQ,OAAO,EACrB,GAAI,IAAU,SAAU,OAAO,IAAI,GAAM,OAAQ,EAAM,CAAK,EAC5D,GAAI,IAAU,SAAU,OAAO,IAAI,GAAM,QAAS,EAAM,CAAK,EAC7D,GAAI,IAAU,UAAW,OAAO,IAAI,GAAM,OAAQ,EAAM,CAAK,EAC7D,GAAI,MAAM,QAAQ,CAAK,EAAG,OAAO,IAAI,GAAM,OAAQ,EAAM,CAAC,GAAG,CAAK,CAAC,EACnE,GAAI,aAAiB,IAAK,OAAO,IAAI,GAAM,MAAO,EAAM,IAAI,IAAI,CAAK,CAAC,EACtE,GAAI,aAAiB,IAAK,OAAO,IAAI,GAAM,MAAO,EAAM,IAAI,IAAI,CAAK,CAAC,EACtE,GAAI,GAAO,MAAQ,OAAO,OAAO,EAAO,cAAc,EAAG,CACvD,MAAM,EAAI,EAAM,QAAQ,GAAc,EAAM,KAAO,MAC7C,EAAQ,IAAI,GAAM,EAAG,CAAI,EAC/B,OAAO,IAAI,GAAM,EAAG,EAAM,EAAM,SAAS,EAAM,aAAc,EAAM,YAAY,CAAC,CAClF,CACA,OAAI,GAAO,WAAa,GAAO,OAAS,OAC/B,IAAI,GAAU,EAAM,UAAW,EAAM,EAAM,IAAI,EACpD,GAAc,CAAK,EAAU,IAAI,GAAM,SAAU,EAAM,CAAE,GAAG,CAAK,CAAE,EAChE,IAAI,GAAM,MAAO,EAAM,CAAK,CACrC,CACA,SAAS,GAAc,EAAM,CAAE,OAAQ,EAAO,CAAA,EAAI,QAAA,EAAU,CAAA,EAAI,QAAA,EAAU,CAAA,CAAE,EAAI,CAC9E,MAAM,EAAS,CAAA,EACf,UAAW,KAAO,EAAM,EAAO,CAAG,EAAI,GAAc,EAAK,EAAK,CAAG,CAAC,EAClE,MAAM,EAAW,OAAO,YACtB,OAAO,QAAQ,CAAM,EAAE,IAAI,CAAC,CAAC,EAAK,CAAK,IAAM,CAAC,EAAK,EAAM,YAAY,CAAC,CAC1E,EACQ,EAAQ,CACZ,CAAC,CAAI,EAAG,KAAM,CACZ,YAAY,EAAS,CAAA,EAAI,CACvB,OAAO,OAAO,KAAM,EAAU,CAAM,CACtC,CACN,CACA,EAAI,CAAI,EACN,OAAA,EAAM,EAAS,EAAI,GACnB,OAAO,OAAO,EAAM,UAAW,CAAO,EACtC,OAAO,OACL,EACA,CACE,OAAA,EACA,QAAA,EAGA,aAAc,IAAM,EACpB,KAAK,EAAS,CAAA,EAAI,EAAO,CAAA,EAAI,CAC3B,MAAM,EAAO,CAAA,EACP,EAAQ,EAAK,OAAS,KAAK,MACjC,UAAW,KAAO,EAAQ,CACxB,MAAM,EAAQ,EAAO,CAAG,EACpB,IAAU,OACZ,QAAQ,KAAK,iCAAkC,EAAM,EAAK,CAAM,EACzD,aAAiB,GAAW,EAAK,CAAG,EAAI,GAAY,EAAO,EAAO,EAAO,CAAG,CAAC,EACjF,EAAK,CAAG,EAAI,EAAM,gBAAgB,EAAO,CAAG,CAAC,CACpD,CACA,UAAW,KAAO,EACZ,EAAO,CAAG,YAAa,IAAa,EAAK,CAAG,IAAM,SACpD,EAAK,CAAG,EAAI,GAAY,EAAO,CAAG,EAAG,EAAO,MAAM,GACtD,OAAO,GAAO,IAAI,KAAK,CAAI,EAAG,EAAI,CACpC,CACN,EACI,CACJ,EACS,CACT,CACA,SAAS,GAAoB,EAAU,EAAO,CAC5C,MAAM,EAAO,GAAO,CAAQ,EAC5B,GAAK,EACL,SAAW,CAAC,EAAM,CAAK,IAAK,OAAO,QAAQ,EAAK,MAAM,EAAG,CACvD,MAAM,EAAQ,EAAM,CAAI,EACxB,GAAI,EAAM,QAAQ,CAAK,EAAG,SAC1B,MAAM,EAAU,EAAM,SAAS,EAAO,EAAU,EAC5C,IAAY,GAAY,EAAM,CAAI,EAAI,GAExC,QAAQ,KAAK,qBAAqB,EAAK,IAAI,IAAI,CAAI,GAAI,CAAK,EAC5D,EAAM,CAAI,EAAI,EAAS,CAAI,EAE/B,CACF,CACA,IAAI,GAA6C,IAAI,IAAI,CACvD,GAAG,iKAAiK,MAClK,GACJ,EACE,GAAG,OAAO,KAAK,EAAiB,CAClC,CAAC,EACD,SAAS,GAAiC,EAAU,CAAA,EAAI,CACtD,UAAW,KAAQ,EACjB,GAAI,GAA2B,IAAI,CAAI,EACrC,MAAM,IAAI,UAAU,qBAAqB,CAAI,gCAAgC,CAGnF,CACA,SAAS,GAAU,EAAM,CACvB,OAAA,GAAiC,EAAK,OAAO,EACtC,GAAc,GAAc,EAAK,MAAQ,UAAW,CAAI,EAAG,CAAI,CACxE,CAGA,IAAI,GAAS,KAAM,CACjB,YAAY,EAAK,CACf,KAAK,IAAM,EACX,KAAK,WAAa,CAAA,CACpB,CACA,SAAS,EAAI,CACX,KAAK,WAAW,KAAK,CAAE,CACzB,CACA,IAAI,EAAK,EAAM,CACb,MAAM,EAAM,KAAK,IACjB,KAAK,IAAM,EACX,UAAW,KAAO,KAAK,WAAY,EAAI,CAAE,IAAA,EAAK,IAAA,EAAK,KAAA,EAAM,UAAW,KAAK,IAAG,CAAE,CAAE,CAClF,CACF,EACI,GAAa,KAAM,CACrB,YAAY,EAAO,EAAW,CAC5B,KAAK,MAAQ,EACb,KAAK,aAAe,CAAA,EACpB,KAAK,MAAQ,IAAI,GAAO,CAAS,EACjC,KAAK,oBAAsB,IAAM,CACjC,EACA,KAAK,WAAa,CAAA,EAClB,KAAK,SAAW,CAAA,EAChB,KAAK,kBAAoB,CAAA,EACzB,KAAK,UAA4B,IAAI,GACvC,CACA,gBAAgB,EAAG,CACjB,KAAK,aAAa,KAAK,CAAC,EACxB,KAAK,oBAAoB,CAAC,CAC5B,CAQA,QAAQ,EAAI,CACV,OAAO,GAAU,KAAK,WAAY,CAAE,CACtC,CAOA,OAAO,EAAM,EAAO,CAAA,EAAI,CACtB,MAAM,EAAS,CAAE,KAAA,EAAM,KAAA,EAAM,UAAW,KAAK,IAAG,CAAE,EAClD,KAAK,SAAS,KAAK,CAAM,EACrB,KAAK,SAAS,OAAS,IAAkB,KAAK,SAAS,MAAK,EAChE,QAAQ,KAAK,mBAAmB,CAAI,IAAK,CAAI,EAC7C,UAAW,KAAM,KAAK,kBAAmB,EAAG,CAAM,EAClD,OAAO,CACT,CAGA,gBAAgB,EAAI,CAClB,OAAO,GAAU,KAAK,kBAAmB,CAAE,CAC7C,CAKA,YAAY,EAAM,CAAE,KAAA,EAAM,KAAA,EAAM,KAAA,EAAM,KAAM,EAAO,WAAA,EAAY,QAAA,EAAS,YAAA,EAAa,QAAA,EAAS,OAAA,EAAQ,MAAA,EAAO,OAAA,CAAM,EAAI,CACrH,GAAI,KAAK,WAAW,SAAW,EAAG,OAClC,MAAM,EAAS,EAAM,QAAQ,CAAI,EAC3B,EAAS,CACb,KAAA,EACA,KAAA,EACA,KAAM,GAAQ,KACd,KAAM,EACN,SAAU,EAAO,OAAM,EACvB,WAAA,EACA,QAAS,GAAW,KACpB,YAAa,IAAgB,GAAS,MAAQ,MAC9C,QAAS,GAAW,KACpB,OAAA,EACA,MAAA,EACA,OAAA,EACA,UAAW,KAAK,IAAG,CACzB,EACI,UAAW,KAAM,KAAK,WAAY,EAAG,CAAM,CAC7C,CAIA,iBAAiB,EAAa,EAAM,CAC9B,KAAK,WAAW,SAAW,GAC/B,KAAK,YAAY,EAAM,CACrB,KAAM,EAAY,YAClB,KAAM,EAAY,YAClB,KAAM,EAAY,KAClB,KAAM,EAAY,mBAAkB,EACpC,WAAY,EAAY,YAAc,EAAY,KAClD,QAAS,EAAY,iBACrB,QAAS,EAAY,SACrB,OAAQ,EAAY,QACpB,MAAO,EAAY,OACnB,OAAQ,EAAY,iBAC1B,CAAK,CACH,CASA,SAAS,EAAO,EAAM,EAAO,CAAA,EAAI,EAAS,KAAM,EAAS,KAAM,EAAU,KAAM,CAC7E,MAAM,EAAI,IAAI,GAAU,EAAO,KAAM,EAAM,EAAM,CAAM,EACvD,OAAA,EAAE,QAAU,EACZ,EAAE,OAAS,EACX,EAAE,aAAe,IAAW,KAAO,KAAO,EAAO,kBAAiB,EAAG,QAAQ,KAAK,MAAM,GAAG,EAC3F,KAAK,gBAAgB,CAAC,EAClB,GAAQ,EAAE,WAAW,MAAM,EAAO,WAAW,MAAK,CAAE,EACjD,CACT,CAIA,WAAW,EAAO,EAAM,EAAO,CAAA,EAAI,EAAO,CAAA,EAAI,EAAS,KAAM,CAC3D,MAAM,EAAU,EAAS,EAAO,WAAW,MAAK,EAAK,KAC/C,EAAO,IAAI,GAAW,KAAM,EAAO,EAAM,EAAM,EAAM,EAAQ,CAAO,EAC1E,OAAA,EAAK,QAAO,EACL,CACT,CAIA,MAAM,OAAO,EAAW,IAAK,CAC3B,MAAQ,KAAK,wBAA0B,KAAK,UAAU,OAAS,KAAa,GAAG,CAC7E,KAAO,KAAK,wBAAwB,KAAK,aAAY,EACjD,KAAK,UAAU,MAAM,MAAM,QAAQ,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC,CACvE,CACF,CACA,IAAI,wBAAyB,CAC3B,OAAO,KAAK,aAAa,OAAS,CACpC,CACA,cAAe,CACb,KAAK,SAAS,KAAK,aAAa,MAAK,CAAE,CACzC,CACA,SAAS,EAAa,CACpB,GAAI,CACF,MAAM,EAAW,KAAK,MAAM,IACtB,EAAW,EAAY,IAAI,EAAU,KAAK,KAAK,EACjD,IAAa,QACf,KAAK,MAAM,IAAI,EAAU,CAAE,YAAA,CAAW,CAAE,EACxC,EAAY,iBAAgB,EAC5B,KAAK,iBAAiB,EAAa,CAAQ,GACtC,QAAQ,KAAK,sBAAuB,CAAE,SAAA,EAAU,YAAA,CAAW,CAAE,CACtE,QAAC,CACC,EAAY,qBAAkB,EAC9B,EAAY,aAAa,OAAM,CACjC,CACF,CACA,iBAAiB,EAAO,EAAO,EAAc,EAAU,CACrD,KAAK,SAAS,IAAI,GAAW,EAAO,EAAO,EAAc,KAAM,CAAQ,CAAC,CAC1E,CACF,EACA,SAAS,IAAc,CACrB,OAAO,IACT,CACA,SAAS,GAAU,EAAM,EAAI,CAC3B,OAAA,EAAK,KAAK,CAAE,EACL,IAAM,CACX,MAAM,EAAI,EAAK,QAAQ,CAAE,EACrB,IAAM,IAAI,EAAK,OAAO,EAAG,CAAC,CAChC,CACF,CACA,SAAS,GAAe,EAAM,EAAK,CACjC,eAAQ,KAAK,WAAW,CAAI,aAAc,EAAK,2BAA2B,EACnE,IACT,CACA,IAAI,GAAc,KAAM,CACtB,YAAY,EAAO,EAAY,EAAoB,KAAM,CACvD,KAAK,KAAO,EACZ,KAAK,QAAU,KACf,KAAK,WAAa,EAClB,KAAK,kBAAoB,EACzB,KAAK,YAAc,IACrB,CAGA,IAAI,YAAa,CACf,YAAK,cAAgB,IAAI,GAClB,KAAK,WACd,CAEA,aAAc,CACZ,OAAO,KAAK,WAAW,YAAW,CACpC,CAGA,oBAAqB,CACnB,OAAO,KAAK,WAAW,mBAAkB,CAC3C,CAIA,YAAY,EAAM,EAAU,EAAO,EAAO,CACxC,KAAM,CAAC,EAAS,CAAI,EAAI,KAAK,kBAAkB,EAAM,EAAU,CAAK,EACpE,YAAK,iBAAmB,EACjB,EAAQ,MAAM,EAAU,CAAC,EAAO,GAAG,CAAI,CAAC,CACjD,CAOA,QAAQ,EAAM,CACZ,KAAK,SAAW,GAAQ,CAAA,CAC1B,CACA,kBAAmB,CACjB,MAAM,EAAI,KAAK,SACf,GAAI,IAAM,OAAQ,OAClB,KAAK,SAAW,OAChB,MAAM,EAAO,KAAK,aAAY,EAC9B,GAAI,IAAS,OAAQ,CACnB,KAAK,WAAW,OAAO,kBAAmB,CAAA,CAAE,EAC5C,MACF,CACA,KAAM,CAAE,KAAA,EAAO,KAAK,aAAY,EAAI,GAAG,CAAI,EAAK,EAChD,KAAK,WAAW,WAAW,KAAK,aAAY,EAAI,EAAM,EAAM,EAAM,IAAI,CACxE,CAKA,oBAAqB,CACnB,OAAO,KAAK,SAAW,KAAK,KAAK,kBAAiB,CACpD,CACA,IAAI,EAAS,EAAO,CAClB,MAAM,EAAU,KAAK,mBAAkB,EACjC,EAAU,EAAQ,OAAO,CAAO,EAChC,EAAU,GAAQ,EAAU,GAAU,CAC1C,MAAM,EAAS,KAAK,YAAY,EAAS,EAAS,EAAO,CAAK,EAC9D,OAAI,IAAW,QAAU,IAAW,IAAO,GAAoB,EAAS,CAAK,EACtE,CACT,CAAC,EACD,YAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,aAAa,gBAAgB,CAAE,MAAO,EAAS,IAAK,CAAO,CAAE,EAC3D,IAAY,EAAU,EAAQ,SAAS,EAAS,CAAO,EAAI,CACpE,CACF,EACI,GAAa,cAAc,EAAY,CACzC,YAAY,EAAO,EAAG,EAAS,EAAY,EAAU,CACnD,MAAM,EAAO,CAAU,EACvB,KAAK,EAAI,EACT,KAAK,QAAU,EACf,KAAK,SAAW,EAChB,KAAK,cAAgB,IACvB,CAIA,IAAI,cAAe,CACjB,YAAK,gBAAkB,KAAK,KAAK,QAAO,EACjC,KAAK,aACd,CAKA,oBAAqB,CACnB,OAAO,KAAK,aAAa,kBAAiB,CAC5C,CAIA,IAAI,aAAc,CAChB,MAAO,SACT,CACA,IAAI,aAAc,CAChB,OAAO,KAAK,GAAG,MAAQ,IACzB,CAMA,cAAe,CAEb,OADW,KAAK,SAAS,aAAa,YAAc,KAAK,SAAS,aACvD,IACb,CACA,cAAe,CACb,OAAO,KAAK,cAAgB,CAAA,CAC9B,CACA,cAAe,CACb,OAAO,KAAK,YACd,CACA,kBAAkB,EAAM,EAAW,EAAO,CACxC,MAAM,EAAQ,KAAK,KAAK,WAAW,GAAM,KAAK,EAAO,EAAM,IAAI,CAAC,EAC1D,CAAC,EAAS,CAAI,EAAI,KAAK,QAAQ,kBAAkB,EAAO,IAAI,EAClE,KAAK,aAAe,CAAC,GAAG,CAAI,EAC5B,MAAM,EAAQ,KAAK,aACnB,OAAA,EAAK,KAAK,IAAI,GAAa,EAAO,KAAK,WAAY,IAAI,CAAC,EACjD,CAAC,EAAS,CAAI,CACvB,CACF,EACI,GAAsB,cAAc,EAAY,CAClD,YAAY,EAAO,EAAY,EAAM,EAAM,EAAmB,CAC5D,MAAM,EAAO,EAAY,CAAiB,EAC1C,KAAK,KAAO,EACZ,KAAK,KAAO,EACZ,KAAK,WAAa,CACpB,CACA,YAAc,KAGd,IAAI,aAAc,CAChB,OAAO,KAAK,WACd,CACA,IAAI,aAAc,CAChB,OAAO,KAAK,IACd,CAGA,cAAe,CACb,OAAO,KAAK,IACd,CACA,cAAe,CACb,OAAO,KAAK,IACd,CACA,cAAe,CACb,OAAO,KAAK,IACd,CACA,kBAAkB,EAAM,CACtB,MAAM,EAAW,IAAO,KAAK,WAAW,EAClC,EAAQ,IAAW,KAAK,IAAI,EAClC,GAAI,EACF,YAAK,SAAW,QACT,EAET,MAAM,EAAU,GAAU,SAC1B,OAAI,GACF,KAAK,SAAW,UACT,IAET,KAAK,SAAW,OACT,GACT,CACA,kBAAkB,EAAO,EAAU,EAAO,CAExC,MAAO,CADS,KAAK,kBAAkB,EAAM,WAAW,CAAQ,CAAC,EAChD,CAAC,GAAG,KAAK,KAAM,IAAI,GAAa,KAAK,KAAM,KAAK,WAAY,IAAI,CAAC,CAAC,CACrF,CACF,EACI,GAAY,cAAc,EAAoB,CAChD,YAAc,UAMd,IAAI,aAAc,CAChB,OAAO,KAAK,UAAY,SAAW,SACrC,CACF,EACI,GAAc,cAAc,EAAoB,CAClD,YAAc,SACd,YAAY,EAAO,EAAY,EAAM,CACnC,MAAM,EAAO,EAAY,EAAK,KAAM,EAAK,KAAM,EAAK,MAAM,EAC1D,KAAK,KAAO,EACZ,KAAK,WAAa,EAAK,MACzB,CAGA,QAAQ,EAAM,CACZ,KAAK,KAAK,MAAM,EAAM,KAAK,IAAI,CACjC,CACA,kBAAmB,CACjB,KAAK,mBAAkB,CACzB,CAGA,oBAAqB,CACf,KAAK,YACT,KAAK,UAAY,GACjB,KAAK,KAAK,QAAO,EACnB,CACF,EACI,GAAuB,OAAO,IAAI,oBAAoB,EACtD,GAAmB,IACnB,GAAe,GACf,GAAa,KAAM,CACrB,YAAY,EAAY,EAAO,EAAM,EAAM,EAAM,EAAQ,EAAS,CAChE,KAAK,WAAa,EAClB,KAAK,KAAO,EACZ,KAAK,KAAO,EACZ,KAAK,MAAQ,GAAM,OAAS,GAC5B,KAAK,OAAS,EACd,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,WAAa,GAAM,SAAW,KAAO,EAAM,kBAAiB,EAAG,QAAQ,EAAW,MAAM,GAAG,EAChG,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,KAAO,EACZ,KAAK,MAAQ,EACf,CAGA,SAAU,CACR,GAAI,MAAK,MACT,IAAI,KAAK,QAAU,GAAc,OAAO,KAAK,QAAQ,aAAa,EAClE,KAAO,KAAK,SAAW,KAAK,MAAM,QAAQ,CACxC,MAAM,EAAM,KAAK,MAAM,KAAK,QAAQ,EACpC,GAAI,IAAQ,MAAO,CACjB,GAAI,CAAC,KAAK,MAAM,OAAM,EAAI,CACxB,KAAK,WACL,QACF,CACA,KAAK,MAAQ,KAAK,MAAM,QAAO,EAC/B,KAAK,WAAW,gBAAgB,IAAI,GAAY,KAAK,MAAO,KAAK,WAAY,IAAI,CAAC,EAClF,MACF,CACA,GAAI,IAAQ,MACV,YAAK,WACE,KAAK,QAAO,EAErB,GAAe,SAAU,CAAG,EAC5B,KAAK,UACP,CACA,KAAK,QAAQ,WAAW,EAC1B,CAGA,SAAU,CACR,MAAM,EAAO,KAAK,WAAW,MAAM,IAC7B,EAAU,KAAK,OAAO,kBAAiB,EACvC,EAAO,EAAQ,OAAO,CAAI,EAC1B,EAAQ,KAAK,WAAW,MAAM,kBAAkB,EAAM,KAAK,IAAI,EAcrE,GAbA,KAAK,WAAW,YAAY,EAAM,CAChC,KAAM,SACN,KAAM,KAAK,KACX,KAAM,KAAK,KACX,KAAM,EACN,WAAY,KAAK,OACjB,QAAS,EAAM,CAAC,EAChB,YAAa,EAAM,CAAC,GAAG,MAAQ,KAAK,KACpC,QAAS,EAAM,OAAS,EAAI,QAAU,OACtC,OAAQ,EACR,MAAO,OACP,OAAQ,KAAK,MACnB,CAAK,EACG,EAAM,SAAW,EAAG,OAAO,KAAK,QAAO,EAC3C,MAAM,EAAI,KAAK,QAAQ,EAAO,CAAC,EAC/B,KAAK,WAAW,UAAU,IAAI,CAAC,EAC/B,EAAE,QAAQ,IAAM,KAAK,WAAW,UAAU,OAAO,CAAC,CAAC,CACrD,CACA,MAAM,QAAQ,EAAO,EAAG,CACtB,GAAI,KAAK,MAAO,OAChB,GAAI,GAAK,EAAM,OAAQ,OAAO,KAAK,QAAO,EAC1C,MAAM,EAAM,IAAI,GAAW,KAAK,OAAQ,KAAK,WAAY,KAAK,MAAM,EACpE,GAAI,CACF,MAAM,EAAM,MAAM,EAAM,CAAC,EAAE,MAAM,KAAM,CAAC,GAAG,KAAK,KAAM,CAAG,CAAC,EAC1D,GAAI,IAAQ,GAAM,OAAO,KAAK,QAAQ,EAAO,EAAI,CAAC,EAClD,KAAK,OAAO,KAAM,CAAG,CACvB,OAAS,EAAO,CACd,KAAK,OAAO,QAAS,CAAK,CAC5B,CACF,CAEA,OAAO,EAAQ,EAAO,CACpB,KAAK,OAAO,GAAG,KAAK,IAAI,GAAG,CAAM,GAAI,CAAC,CAAK,CAAC,CAC9C,CAGA,MAAM,EAAM,EAAM,CACZ,GAAM,OAAS,SAAQ,KAAK,KAAO,EAAK,MACxC,GAAM,QAAU,SAClB,KAAK,MAAQ,EAAK,MAClB,KAAK,SAAW,EAChB,KAAK,MAAQ,GAAQ,KAAK,MAE9B,CAIA,QAAQ,EAAQ,CACd,GAAI,KAAK,MAAO,OAChB,KAAM,CAAE,KAAA,EAAM,KAAA,CAAI,EAAK,KACjB,EAAO,KAAK,WAAW,MAAM,WACjC,KAAK,OAAO,kBAAiB,EAAG,OAAO,KAAK,WAAW,MAAM,GAAG,CACtE,EACU,EAAY,GAAM,GAAM,UAAU,CAAC,IAAM,OAC3C,EAAS,GAAG,CAAI,WAAW,EAC7B,KAAK,OAAO,GAAG,CAAI,YAAa,CAAI,EAC3B,EAAS,GAAG,CAAI,OAAO,EAChC,KAAK,OAAO,GAAG,CAAI,QAAS,CAAC,CAAM,CAAC,GAEhC,EAAS,GAAG,CAAI,IAAI,GACtB,QAAQ,KACN,WAAW,CAAI,uBAAuB,CAAM,uCAAuC,CAAI,cAAc,CAAI,kBAAkB,CAAI,qBACzI,EACM,KAAK,OAAO,KAAM,IAAI,EAE1B,CAIA,OAAO,EAAM,EAAM,CACjB,GAAI,KAAK,MAAO,OAEhB,GADA,KAAK,MAAQ,GACT,IAAS,KAAM,OAAO,KAAK,UAAO,EACtC,MAAM,EAAI,IAAI,GAAU,KAAK,OAAQ,KAAK,WAAY,EAAM,EAAM,KAAK,MAAM,EAC7E,EAAE,QAAU,KAAK,WACjB,EAAE,UAAY,GACd,KAAK,WAAW,gBAAgB,CAAC,EAC7B,KAAK,SAAS,EAAE,WAAW,MAAM,KAAK,OAAO,CACnD,CACF,EACI,GAAa,KAAM,CACrB,aAAc,CACZ,KAAK,IAAM,OACX,KAAK,YAAc,GACnB,KAAK,eAAiB,GACtB,KAAK,QAAU,EACf,KAAK,aAAe,KACpB,KAAK,aAAe,KACpB,KAAK,gBAAkB,KACvB,KAAK,gBAAkB,KACvB,KAAK,aAAe,KAAK,MAAK,CAChC,CACA,aAAc,CACZ,OAAI,KAAK,YAAoB,QAAQ,QAAQ,KAAK,GAAG,GACrD,KAAK,eAAiB,IAAI,QAAS,GAAQ,CACzC,KAAK,aAAe,CACtB,CAAC,EACM,KAAK,aACd,CACA,oBAAqB,CACnB,OAAI,KAAK,eAAuB,QAAQ,QAAQ,KAAK,GAAG,GACxD,KAAK,kBAAoB,IAAI,QAAS,GAAQ,CAC5C,KAAK,gBAAkB,CACzB,CAAC,EACM,KAAK,gBACd,CAEA,gBAAgB,EAAK,CACf,KAAK,cACT,KAAK,YAAc,GACnB,KAAK,IAAM,EACX,KAAK,eAAe,CAAG,EACzB,CAGA,QAAS,CACP,KAAK,gBAAgB,KAAK,GAAG,EAC7B,KAAK,aAAY,CACnB,CAGA,OAAQ,CACN,KAAK,UACL,IAAI,EAAO,GACX,MAAO,IAAM,CACP,IACJ,EAAO,GACH,EAAE,KAAK,UAAY,IACrB,KAAK,eAAiB,GACtB,KAAK,kBAAkB,KAAK,GAAG,GAEnC,CACF,CAGA,MAAM,EAAS,CACb,KAAK,mBAAkB,EAAG,KAAK,CAAO,CACxC,CACF,EACI,GAAa,KAAM,CACrB,YAAY,EAAO,EAAY,EAAmB,CAChD,KAAK,KAAO,EACZ,KAAK,WAAa,EAClB,KAAK,OAAS,EACd,KAAK,KAAO,EAAW,MAAM,GAC/B,CAGA,SAAS,EAAU,CACjB,MAAM,EAAQ,KAAK,WAAW,MACxB,EAAQ,KAAK,KAAK,kBAAiB,EAAG,aAAa,KAAK,IAAI,EAClE,QAAS,EAAI,EAAM,OAAS,EAAG,GAAK,EAAG,IAAK,CAC1C,MAAM,EAAO,EAAM,WAAW,EAAM,CAAC,CAAC,EACtC,GAAI,GAAQ,EAAS,EAAM,EAAM,CAAC,CAAC,IAAM,GAAO,MAClD,CACF,CACA,IAAI,IAAK,CACP,OAAO,IAAI,GAAY,IAAI,CAC7B,CAUA,QAAS,CACP,YAAK,aAAe,KAAK,KAAK,WAC5B,GAAM,KAAK,KAAK,WAAW,MAAO,KAAK,KAAM,KAAK,MAAM,CAC9D,EACW,KAAK,UACd,CAMA,OAAO,EAAM,EAAM,CACjB,UAAW,KAAO,GAAM,OAAS,GAAe,CAC9C,MAAM,EAAI,IAAQ,MAAQ,KAAK,OAAM,GAAI,cAAc,CAAI,GAAK,KAAO,IAAQ,MAAQ,KAAK,WAAW,CAAI,EAAI,GAAe,SAAU,CAAG,EAC3I,GAAI,GAAK,KAAM,OAAO,CACxB,CACA,OAAO,IACT,CAKA,WAAW,EAAM,CACf,IAAI,EAAO,KACX,KAAK,SAAU,IACb,EAAO,EACA,GACR,EACD,MAAM,EAAQ,GAAM,MACpB,OAAI,GAAS,KAAa,KACtB,GAAW,CAAI,EAAU,EAAM,gBAAgB,CAAI,GAAK,KACrD,EAAM,WAAW,CAAI,GAAG,OAAO,KAAK,IAAI,GAAK,IACtD,CAIA,WAAW,EAAM,EAAM,CACrB,MAAM,EAAQ,GAAM,OAAS,GACvB,EAAI,KAAK,OAAO,EAAM,CAAE,MAAA,CAAK,CAAE,EACrC,OAAI,GAAK,MACP,KAAK,WAAW,OAAO,iBAAkB,CAAE,KAAA,EAAM,MAAA,CAAK,CAAE,EACjD,MAEL,IAAI,EAAS,GAAK,MACpB,KAAK,WAAW,OAAO,qBAAsB,CAAE,KAAA,EAAM,IAAK,OAAO,CAAC,CAAE,EAC7D,MAEF,CACT,CAEA,KAAK,EAAM,EAAM,CACf,OAAO,KAAK,WAAW,KAAK,KAAM,EAAM,CAAI,CAC9C,CACA,WAAW,EAAO,EAAM,EAAM,CAC5B,OAAO,KAAK,WAAW,SAAS,EAAO,EAAM,EAAM,KAAK,OAAQ,KAAK,IAAI,CAC3E,CAIA,OAAO,EAAM,EAAM,EAAM,CACvB,OAAO,KAAK,aAAa,KAAK,KAAM,EAAM,EAAM,CAAI,CACtD,CACA,aAAa,EAAO,EAAM,EAAM,EAAM,CACpC,OAAO,KAAK,WAAW,WAAW,EAAO,EAAM,EAAM,EAAM,KAAK,MAAM,CACxE,CACF,EACI,GAAe,cAAc,EAAW,CAC1C,IAAI,MAAO,CACT,OAAO,KAAK,QAAQ,MAAQ,IAC9B,CACA,IAAI,YAAa,CACf,OAAO,KAAK,OAAO,UACrB,CAGA,MAAM,EAAO,CACX,OAAO,KAAK,OAAO,OAAS,OAAS,GAAc,OAAO,EAAI,KAAK,OAAO,KAAK,OAAO,KAAM,CAAK,CACnG,CACA,KAAK,EAAO,CACV,OAAO,KAAK,OAAO,OAAS,OAAS,GAAc,MAAM,EAAI,KAAK,OAAO,KAAK,OAAO,QAAS,CAAK,CACrG,CAMA,UAAU,EAAM,EAAM,CACpB,MAAM,EAAS,KAAK,QAAQ,QAAU,KACtC,OAAI,GAAU,MACZ,KAAK,WAAW,OAAO,YAAa,CAAE,KAAA,CAAI,CAAE,EACrC,MAEF,KAAK,WAAW,SACrB,EACA,EACA,EACA,KAAK,OACL,KAAK,KACL,KAAK,OAAO,YAClB,CACE,CAGA,MAAO,CACL,OAAO,KAAK,OAAO,OAAS,OAAS,GAAc,MAAM,EAAI,KAAK,OAAO,KAAK,OAAO,KAAM,IAAI,CACjG,CAIA,QAAQ,EAAM,CACZ,OAAO,KAAK,OAAO,QAAQ,CAAI,CACjC,CACF,EACA,SAAS,GAAc,EAAM,CAC3B,QAAQ,KAAK,OAAO,CAAI,wDAAwD,CAClF,CACA,IAAI,GAAc,cAAc,EAAY,CAC1C,YAAY,EAAY,CACtB,MAAK,EACL,KAAK,WAAa,CACpB,CACA,KAAK,EAAM,EAAM,CACf,OAAO,KAAK,WAAW,WAAW,KAAK,UAAS,EAAI,EAAM,CAAI,CAChE,CACA,OAAO,EAAM,EAAM,EAAM,CACvB,OAAO,KAAK,WAAW,aAAa,KAAK,UAAS,EAAI,EAAM,EAAM,CAAI,CACxE,CACA,WAAY,CACV,OAAO,KAAK,WAAW,KAAK,OAAO,KAAK,WAAW,CACrD,CACF,EACA,SAAS,GAAe,EAAY,CAClC,OAAO,IAAI,GAAW,IAAI,GAAgB,EAAY,IAAI,CAC5D,CAGG,IAAC,GAAa,KAAM,CACrB,YAAY,CAAE,KAAM,EAAQ,KAAM,QAAA,EAA0B,IAAI,IAAO,OAAA,EAAS,CAAA,EAAI,SAAA,EAAW,CAAA,CAAE,EAAI,CACnG,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,SAAW,CAClB,CACF,EACI,GAAmB,KAAM,CAC3B,YAAY,CAAE,KAAA,EAAM,MAAA,EAAO,OAAA,CAAM,EAAI,CACnC,KAAK,KAAO,EACZ,KAAK,MAAQ,EACb,KAAK,OAAS,CAChB,CACF,EACI,GAAgB,KAAM,CACxB,YAAY,CAAE,MAAA,EAAO,MAAA,EAAQ,KAAM,UAAA,EAAY,EAAK,EAAI,CACtD,KAAK,MAAQ,EACb,KAAK,MAAQ,GAAS,EAAM,OAC5B,KAAK,UAAY,CACnB,CACF,EACI,GAAe,KAAM,CACvB,YAAY,CAAE,SAAA,EAAU,MAAA,EAAQ,KAAM,UAAA,EAAY,EAAK,EAAI,CACzD,KAAK,SAAW,EAChB,KAAK,MAAQ,GAAS,EAAS,OAAO,CAAC,EAAG,IAAM,GAAK,EAAE,OAAO,QAAU,GAAI,CAAC,EAC7E,KAAK,UAAY,CACnB,CACF,EACI,GAAgB,KAAM,CACxB,YAAY,CAAE,MAAA,CAAK,EAAI,CACrB,KAAK,MAAQ,CACf,CACF,EACI,GAAc,KAAM,CACtB,YAAY,CAAE,GAAA,EAAI,MAAA,EAAO,KAAA,EAAM,QAAA,EAAU,CAAA,EAAI,WAAA,EAAa,IAAI,EAAI,CAChE,KAAK,GAAK,EACV,KAAK,MAAQ,EACb,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,WAAa,CACpB,CACF,EACI,GAAsB,KAAM,CAC9B,YAAY,CAAE,cAAA,EAAe,SAAA,CAAQ,EAAI,CACvC,KAAK,cAAgB,EACrB,KAAK,SAAW,CAClB,CACA,IAAI,YAAa,CACf,OAAO,KAAK,SAAS,OAAQ,GAAM,EAAE,QAAU,OAAO,EAAE,MAC1D,CACA,IAAI,WAAY,CACd,OAAO,KAAK,SAAS,OAAQ,GAAM,EAAE,QAAU,MAAM,EAAE,MACzD,CACF,EACI,GAAa,KAAM,CACrB,YAAY,CAAE,WAAA,CAAU,EAAI,CAC1B,KAAK,WAAa,CACpB,CACA,IAAI,WAAY,CACd,OAAO,KAAK,WAAW,KAAM,GAAM,EAAE,WAAa,CAAC,CACrD,CACA,IAAI,aAAc,CAChB,OAAO,KAAK,WAAW,OAAO,CAAC,EAAG,IAAM,EAAI,EAAE,WAAY,CAAC,CAC7D,CACA,IAAI,eAAgB,CAClB,OAAO,KAAK,WAAW,OAAO,CAAC,EAAG,IAAM,EAAI,EAAE,UAAW,CAAC,CAC5D,CACF,EACI,GAAkB,KAAM,CAC1B,YAAY,CAAE,MAAA,EAAO,YAAA,EAAc,KAAM,cAAA,EAAe,KAAA,EAAM,KAAM,EAAO,MAAA,EAAQ,IAAI,EAAI,CACzF,KAAK,MAAQ,EACb,KAAK,YAAc,EACnB,KAAK,cAAgB,EACrB,KAAK,KAAO,EACZ,KAAK,KAAO,EACZ,KAAK,MAAQ,CACf,CACF,EACI,GAAkB,KAAM,CAC1B,YAAY,CAAE,MAAA,EAAO,YAAA,EAAc,KAAM,MAAA,CAAK,EAAI,CAChD,KAAK,MAAQ,EACb,KAAK,YAAc,EACnB,KAAK,MAAQ,CACf,CACF,EACI,GAAc,KAAM,CACtB,YAAY,CAAE,SAAA,CAAQ,EAAI,CACxB,KAAK,SAAW,CAClB,CACA,IAAI,WAAY,CACd,OAAO,KAAK,SAAS,KAAM,GAAM,EAAE,MAAM,KAAM,GAAM,EAAE,QAAU,IAAI,CAAC,CACxE,CACF,EACI,GAAa,KAAM,CACrB,YAAY,CAAE,MAAA,EAAO,SAAA,EAAU,cAAA,EAAgB,KAAM,OAAA,EAAQ,WAAA,EAAa,EAAG,MAAA,EAAQ,IAAI,EAAI,CAC3F,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,KAAK,cAAgB,EACrB,KAAK,OAAS,EACd,KAAK,WAAa,EAClB,KAAK,MAAQ,CACf,CACF,EACI,GAAiB,KAAM,CACzB,YAAY,CAAE,MAAA,EAAO,cAAA,EAAgB,KAAM,SAAA,EAAW,CAAA,CAAE,EAAI,CAC1D,KAAK,MAAQ,EACb,KAAK,cAAgB,EACrB,KAAK,SAAW,CAClB,CACF,EACI,GAAmB,KAAM,CAC3B,YAAY,CAAE,KAAM,EAAQ,KAAM,OAAA,EAAS,CAAA,EAAI,OAAA,EAAS,CAAE,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,MAAO,CAAC,CAAE,EAAI,CACjG,KAAK,KAAO,EACZ,KAAK,OAAS,EACd,KAAK,OAAS,CAChB,CACF,EACI,GAAa,KAAM,CACrB,YAAY,CAAE,QAAA,EAAU,CAAA,CAAE,EAAI,CAC5B,KAAK,QAAU,CACjB,CACA,IAAI,QAAS,CACX,OAAO,KAAK,QAAQ,OAClB,CAAC,EAAK,KAAO,CACX,KAAM,EAAI,KAAO,EAAE,OAAO,KAC1B,KAAM,EAAI,KAAO,EAAE,OAAO,KAC1B,KAAM,EAAI,KAAO,EAAE,OAAO,KAC1B,MAAO,EAAI,MAAQ,EAAE,OAAO,KACpC,GACM,CAAE,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,MAAO,CAAC,CAC3C,CACE,CACA,IAAI,aAAc,CAChB,OAAO,KAAK,QAAQ,KAAM,GAAM,EAAE,OAAO,KAAO,CAAC,CACnD,CACF,EAGI,GAAW,KAAM,CACnB,YAAY,CAAE,MAAA,EAAO,cAAA,EAAgB,KAAM,OAAA,EAAS,IAAI,EAAI,CAC1D,KAAK,MAAQ,EACb,KAAK,cAAgB,EACrB,KAAK,OAAS,EACd,KAAK,SAAW,CAAA,CAClB,CACF,EACI,GAAO,KAAM,CACf,YAAY,CAAE,MAAA,EAAO,GAAA,EAAI,cAAA,EAAgB,KAAM,OAAA,EAAS,IAAI,EAAI,CAC9D,KAAK,MAAQ,EACb,KAAK,GAAK,EACV,KAAK,cAAgB,EACrB,KAAK,OAAS,CAChB,CACF,EACI,GAAc,KAAM,CACtB,YAAY,CAAE,KAAM,EAAQ,KAAM,OAAA,EAAS,CAAA,CAAE,EAAK,CAAA,EAAI,CACpD,KAAK,KAAO,EACZ,KAAK,OAAS,CAChB,CACF,EACA,SAAS,GAAkB,EAAG,CAC5B,OAAI,IAAM,KAAa,GACnB,OAAO,GAAM,WAAmB,EAAE,EAAS,GAAK,KAC7C,OAAO,EAAE,MAAS,UAAY,OAAO,EAAE,OAAU,UAC1D,CACA,SAAS,GAAqB,EAAK,EAAY,CAC7C,GAAI,GAAkB,CAAG,EAAG,OAAO,EAAI,KACvC,GAAI,OAAO,GAAQ,YACjB,UAAW,KAAK,EAAY,GAAI,IAAM,EAAK,OAAO,EAAE,KAEtD,OAAO,IACT,CACA,SAAS,GAAa,EAAK,CACzB,OAAI,OAAO,GAAQ,SAAiB,EAChC,GAAkB,CAAG,EAAU,EAAI,KACnC,OAAO,GAAQ,WAAmB,EAAI,MAAQ,cAC3C,OAAO,CAAG,CACnB,CACA,SAAS,GAAc,CAAE,KAAM,EAAQ,KAAM,WAAA,EAAa,CAAA,CAAE,EAAK,CAAA,EAAI,CACnE,MAAM,EAAc,IAAI,GAAY,CAAE,KAAM,EAAO,OAAQ,CAAA,CAAE,CAAE,EACzD,EAAQ,CAAA,EACd,SAAS,KAAY,EAAM,CACzB,IAAI,EACA,EAAU,KACV,EACJ,GAAI,EAAK,SAAW,EAClB,CAAC,EAAM,CAAE,EAAI,UACJ,EAAK,SAAW,EACzB,CAAC,EAAM,EAAS,CAAE,EAAI,MAEtB,OAAM,IAAI,MAAM,4CAA4C,EAAK,MAAM,EAAE,EAE3E,GAAI,OAAO,GAAO,WAChB,MAAM,IAAI,MACR,YAAY,KAAK,UAAU,GAAa,CAAI,CAAC,CAAC,sCACtD,EAEI,IAAI,EAAgB,KAOpB,GANI,OAAO,GAAS,WAClB,EAAgB,GAAqB,EAAM,CAAU,GAEnD,IAAkB,MAAQ,GAAW,EAAQ,WAAa,OAC5D,EAAgB,GAAqB,EAAQ,UAAW,CAAU,GAEhE,IAAkB,KAAM,CAC1B,MAAM,EAAU,EAAM,OAAS,EAAM,EAAM,OAAS,CAAC,EAAI,KACrD,IAAS,EAAgB,EAAQ,cACvC,CACA,MAAM,EAAS,EAAM,OAAS,EAAM,EAAM,OAAS,CAAC,EAAI,KAClD,EAAO,IAAI,GAAS,CACxB,MAAO,GAAa,CAAI,EACxB,cAAA,EACA,OAAA,CACN,CAAK,EACG,EAAQ,EAAO,SAAS,KAAK,CAAI,EAChC,EAAY,OAAO,KAAK,CAAI,EACjC,EAAM,KAAK,CAAI,EACf,GAAI,CACF,EAAE,CACJ,QAAC,CACC,EAAM,IAAG,CACX,CACF,CACA,SAAS,EAAM,EAAO,EAAI,CACxB,GAAI,OAAO,GAAU,SACnB,MAAM,IAAI,MAAM,yCAAyC,EAE3D,GAAI,OAAO,GAAO,WAChB,MAAM,IAAI,MAAM,QAAQ,KAAK,UAAU,CAAK,CAAC,0BAA0B,EAEzE,MAAM,EAAS,EAAM,OAAS,EAAM,EAAM,OAAS,CAAC,EAAI,KACxD,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,QAAQ,KAAK,UAAU,CAAK,CAAC,sCAAsC,EAErF,EAAO,SAAS,KACd,IAAI,GAAK,CACP,MAAA,EACA,GAAA,EACA,cAAe,EAAO,cACtB,OAAA,CACR,CAAO,CACP,CACE,CACA,MAAO,CAAE,SAAA,EAAU,KAAM,EAAO,YAAA,CAAW,CAC7C,CAGA,SAAS,GAAU,EAAM,CACvB,MAAM,EAAQ,CAAA,EACd,IAAI,EAAM,EACV,KAAO,GACL,EAAM,QAAQ,EAAI,KAAK,EACvB,EAAM,EAAI,OAEZ,OAAO,EAAM,KAAK,KAAK,CACzB,CACA,SAAS,GAAa,EAAG,CACvB,MAAM,EAAM,CAAE,QAAS,EAAE,QAAS,MAAO,EAAE,KAAK,EAChD,MAAI,aAAc,IAAG,EAAI,SAAW,EAAE,UAClC,WAAY,IAAG,EAAI,OAAS,EAAE,QAC3B,CACT,CACA,SAAS,GAAW,CAAE,WAAA,EAAa,CAAA,EAAI,OAAA,EAAS,KAAM,eAAA,EAAiB,IAAI,EAAK,CAAA,EAAI,CAClF,MAAM,EAAQ,IAAI,GAClB,OAAA,EAAM,mBAAmB,CAAU,EAC/B,GAAQ,EAAM,eAAe,CAAM,EACnC,GAAgB,EAAM,uBAAuB,CAAc,EACxD,CACT,CACA,eAAe,GAAW,EAAO,EAAO,EAAO,EAAO,CAAA,EAAI,CACxD,MAAM,EAAa,IAAI,GAAW,EAAM,MAAO,CAAK,EACpD,OAAI,EAAK,WACP,EAAW,MAAM,SAAS,CAAC,CAAE,IAAA,EAAK,IAAA,EAAK,KAAA,CAAI,IAAO,CAChD,MAAM,EAAI,GAAM,YAChB,EAAK,UACH,CAAE,KAAM,GAAG,aAAe,UAAW,KAAM,GAAG,KAAM,KAAM,GAAG,KAAM,KAAM,GAAG,IAAI,EAChF,EACA,CACR,CACI,CAAC,EACH,GAAc,GAAe,CAAU,EAAG,IAAI,GAAgB,EAAO,CAAK,EAC1E,MAAM,EAAW,OAAM,EAChB,EAAW,MAAM,GAC1B,CACA,eAAe,GAAM,EAAK,EAAO,EAAO,EAAO,CAAA,EAAI,CACjD,OAAO,GAAW,GAAW,CAAG,EAAG,EAAO,EAAO,CAAI,CACvD,CACA,eAAe,GAAS,CACtB,SAAA,EACA,WAAA,EAAa,CAAA,EACb,KAAM,EAAQ,KACd,OAAQ,EACR,KAAA,EAAO,KACP,KAAA,EAAO,KACP,KAAA,EAAO,GACP,eAAA,EAAiB,KACjB,OAAA,EAAS,IACX,EAAI,CAAA,EAAI,CACN,MAAM,EAAS,CAAE,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,MAAO,CAAC,EACpD,GAAI,OAAO,GAAa,WACtB,OAAO,IAAI,GAAW,CACpB,QAAS,CAAC,IAAI,GAAiB,CAAE,KAAM,EAAO,OAAQ,CAAA,EAAI,OAAA,CAAM,CAAE,CAAC,CACzE,CAAK,EAEH,GAAI,OAAO,GAAY,WACrB,MAAM,IAAI,MAAM,wDAAwD,EAE1E,KAAM,CAAE,SAAA,EAAU,KAAM,EAAO,YAAA,CAAW,EAAK,GAAc,CAAE,KAAM,EAAO,WAAA,CAAU,CAAE,EACxF,IAAI,EAAS,KACb,MAAM,EAAW,IAAM,IAAW,GAAW,CAAE,WAAA,EAAY,OAAA,EAAQ,eAAA,CAAc,CAAE,EAEnF,MAAM,EAAS,CAAE,SAAA,EAAU,KAAM,EAAO,OAAQ,EAAS,MADtC,CAAC,EAAO,EAAO,EAAO,CAAA,IAAO,GAAW,EAAQ,EAAI,EAAO,EAAO,CAAI,CACf,CAAE,EAC5E,IAAI,EAAS,GACb,eAAe,EAAM,EAAM,CACzB,GAAI,aAAgB,GAAM,CACxB,GAAI,IAAS,MAAQ,EAAK,gBAAkB,EAAM,OAAO,KACzD,MAAM,EAAW,GAAU,CAAI,EAC/B,GAAI,IAAS,MAAQ,CAAC,EAAS,SAAS,CAAI,EAAG,OAAO,KAEtD,GADA,EAAO,QACH,EACF,OAAA,EAAO,OACA,IAAI,GAAW,CACpB,MAAO,EAAK,MACZ,SAAA,EACA,cAAe,EAAK,cACpB,OAAQ,MAClB,CAAS,EAEH,MAAM,GAAQ,YAAY,IAAG,EAC7B,GAAI,CACF,aAAM,EAAK,GAAE,EACb,EAAO,OACA,IAAI,GAAW,CACpB,MAAO,EAAK,MACZ,SAAA,EACA,cAAe,EAAK,cACpB,OAAQ,OACR,WAAY,YAAY,IAAG,EAAK,EAC1C,CAAS,CACH,OAAS,GAAG,CACV,OAAA,EAAO,OACH,IAAM,EAAS,IACZ,IAAI,GAAW,CACpB,MAAO,EAAK,MACZ,SAAA,EACA,cAAe,EAAK,cACpB,OAAQ,OACR,WAAY,YAAY,IAAG,EAAK,GAChC,MAAO,GAAa,EAAC,CAC/B,CAAS,CACH,CACF,CACA,MAAM,EAAe,CAAA,EACrB,UAAW,KAAS,EAAK,SAAU,CACjC,MAAM,GAAI,MAAM,EAAM,CAAK,EACvB,KAAM,MAAM,EAAa,KAAK,EAAC,CACrC,CACA,OAAI,EAAa,SAAW,EAAU,KAC/B,IAAI,GAAe,CACxB,MAAO,EAAK,MACZ,cAAe,EAAK,cACpB,SAAU,CAChB,CAAK,CACH,CACA,MAAM,EAAe,CAAA,EACrB,UAAW,KAAS,EAAY,OAAQ,CACtC,MAAM,EAAI,MAAM,EAAM,CAAK,EACvB,IAAM,MAAM,EAAa,KAAK,CAAC,CACrC,CACA,OAAO,IAAI,GAAW,CACpB,QAAS,CAAC,IAAI,GAAiB,CAAE,KAAM,EAAO,OAAQ,EAAc,OAAA,CAAM,CAAE,CAAC,CACjF,CAAG,CACH,CAGA,IAAI,GAAQ,iCACR,GAAO,iCACP,GAAO,cACP,GAAM,cACN,GAAQ,sCACZ,SAAS,GAAe,EAAM,CAC5B,GAAI,EAAK,SAAU,CACjB,MAAM,EAAQ,EAAK,cAAgB,GAAG,EAAK,KAAK,KAAK,EAAK,aAAa,IAAM,EAAK,MAClF,QAAQ,MAAM,CAAK,EACnB,UAAW,KAAS,EAAK,SAAU,GAAe,CAAK,EACvD,QAAQ,SAAQ,EAChB,MACF,CACA,MAAM,EAAM,EAAK,SAAW,OAAS,GAAK,KAAK,KAAK,MAAM,EAAK,UAAU,CAAC,MACtE,EAAK,SAAW,OAClB,QAAQ,IAAI,cAAS,EAAK,KAAK,KAAK,CAAG,GAAI,GAAO,GAAO,EAAG,EACnD,EAAK,SAAW,OACzB,QAAQ,IAAI,YAAO,EAAK,KAAK,eAAgB,GAAM,EAAK,GAExD,QAAQ,MAAM,cAAS,EAAK,KAAK,KAAK,CAAG,GAAI,GAAM,GAAO,EAAG,EAC7D,QAAQ,MAAM,EAAK,OAAO,SAAW,oBAAoB,EACrD,EAAK,QAAU,aAAc,EAAK,OAAS,WAAY,EAAK,SAC9D,QAAQ,IAAI,YAAa,EAAK,MAAM,QAAQ,EAC5C,QAAQ,IAAI,YAAa,EAAK,MAAM,MAAM,GAExC,EAAK,OAAO,OAAO,QAAQ,IAAI,EAAK,MAAM,KAAK,EACnD,QAAQ,SAAQ,EAEpB,CACA,SAAS,GAA0B,EAAQ,CACzC,UAAW,KAAK,EAAO,QAAS,CAC9B,MAAM,EAAQ,eAAe,EAAE,KAAO,WAAM,EAAE,IAAI,GAAK,EAAE,GAEzD,GADA,QAAQ,MAAM,CAAK,EACf,EAAE,OAAO,SAAW,EACtB,QAAQ,IAAI,YAAY,MAExB,WAAW,KAAK,EAAE,OAAQ,GAAe,CAAC,EAE5C,MAAM,EAAI,EAAE,OACN,EAAU,GAAG,EAAE,IAAI,YAAY,EAAE,IAAI,YAAY,EAAE,IAAI,aAAa,EAAE,KAAK,UAC7E,EAAE,KAAO,EAAG,QAAQ,MAAM,KAAK,CAAO,GAAI,EAAI,EACzC,EAAE,QAAU,EAAG,QAAQ,IAAI,KAAK,CAAO,GAAI,EAAG,EAClD,QAAQ,IAAI,KAAK,CAAO,GAAI,EAAK,EACtC,QAAQ,SAAQ,CAClB,CACA,OAAO,CACT,CAGA,IAAI,GAAyB,CAC3B,QAAS,qBACT,WAAY,aACZ,QAAS,qBACT,iBAAkB,6BAClB,aAAc,mBAChB,EACA,SAAS,GAAuB,EAAM,CACpC,MAAM,EAAI,KAAK,UAAU,EAAK,KAAK,EAC7B,EAAQ,GAAuB,EAAK,QAAQ,GAAK,aACvD,OAAQ,EAAK,KAAI,CACf,IAAK,OACH,MAAO,eAAe,CAAK,IAAI,CAAC,2BAA2B,EAAK,IAAI,IACtE,IAAK,YACH,MAAO,eAAe,CAAK,IAAI,CAAC,mBAAmB,EAAK,SAAS,IACnE,IAAK,KACH,MAAO,eAAe,CAAK,IAAI,CAAC,YAAY,EAAK,IAAI,cACvD,IAAK,OACH,MAAO,eAAe,CAAK,IAAI,CAAC,UAAU,EAAK,EAAE,IACnD,QACE,MAAO,eAAe,CAAK,IAAI,CAAC,EACtC,CACA,CACA,SAAS,GAAgB,EAAM,CAC7B,MAAM,EAAI,KAAK,UAAU,EAAK,KAAK,EACnC,OAAQ,EAAK,KAAI,CACf,IAAK,OACH,MAAO,sBAAsB,CAAC,oBAAoB,EAAK,IAAI,IAC7D,IAAK,YACH,MAAO,sBAAsB,CAAC,oBAAoB,EAAK,SAAS,IAClE,IAAK,KACH,MAAO,0BAA0B,CAAC,aAAa,EAAK,IAAI,IAC1D,IAAK,OACH,MAAO,sBAAsB,CAAC,WAAW,EAAK,EAAE,IAClD,IAAK,eACH,MAAO,6BAA6B,CAAC,GACvC,IAAK,cACH,MAAO,iCAAiC,CAAC,GAC3C,IAAK,YACH,MAAO,qBAAqB,EAAK,IAAI,mBACvC,QACE,MAAO,sBAAsB,CAAC,EACpC,CACA,CACA,SAAS,GAAW,EAAK,CACvB,OAAO,EAAM,OAAO,CAAG,EAAE,YAAW,EAAK,IAC3C,CACA,SAAS,GAAa,EAAM,CAC1B,MAAM,EAAI,GAAW,GAAM,GAAG,EAC9B,OAAO,GAAK,IAAM,IAAM,QAAQ,CAAC,IAAM,EACzC,CACA,SAAS,GAAgB,EAAM,CAC7B,GAAI,CAAC,EAAM,MAAO,GAClB,MAAM,EAAQ,CAAA,EACd,GAAI,EAAK,WAAY,CACnB,MAAM,EAAS,EAAK,OAAS,IAAI,EAAK,MAAM,IAAM,GAClD,EAAM,KAAK,MAAM,EAAK,UAAU,GAAG,CAAM,EAAE,CAC7C,CACI,EAAK,aACP,EAAM,KACJ,YAAY,EAAK,WAAW,IAAI,EAAK,WAAa,OAAS,QAAQ,EAAK,QAAQ,GAAK,EAAE,EAC7F,EAEE,MAAM,EAAI,GAAW,EAAK,GAAG,EAC7B,OAAI,GAAK,IAAM,KAAK,EAAM,KAAK,OAAO,CAAC,GAAG,EACnC,EAAM,OAAS,KAAK,EAAM,KAAK,IAAI,CAAC,IAAM,EACnD,CACA,SAAS,GAAe,EAAM,CAC5B,OAAI,GAAM,WAAmB,OAAO,EAAK,UAAU,GAC/C,GAAM,UAAkB,WAAW,EAAK,SAAS,GAC9C,EACT,CACA,SAAS,GAAgB,EAAI,EAAM,CACjC,OAAQ,EAAE,CACR,IAAK,4BACH,MAAO,uCACT,IAAK,yBAA0B,CAC7B,MAAM,EAAO,EAAK,SAAS,WAAa,CAAC,EAAK,QAAQ,EAChD,EAAU,OAAO,EAAK,IAAI,IAAI,EAAK,KAAK,GAAG,CAAC,GAClD,MAAO,sBAAsB,EAAK,QAAQ,SAAS,CAAO,GAC5D,CACA,IAAK,yBACH,MAAO,GAAG,EAAK,OAAO,WAAM,EAAK,GAAG,GACtC,IAAK,kCACH,MAAO,oBAAoB,EAAK,IAAI,uBAAuB,GAAe,CAAI,CAAC,GACjF,IAAK,mCACH,MAAO,mBAAmB,EAAK,IAAI,8DAAyD,EAAK,IAAI,IACvG,IAAK,8BACH,MAAO,UAAU,EAAK,IAAI,iFAC5B,IAAK,wBACH,MAAO,WAAW,EAAK,IAAI,mBAAmB,GAAgB,CAAI,CAAC,GACrE,IAAK,sBACH,MAAO,KAAK,EAAK,IAAI,yBAAyB,EAAK,IAAI,yCAAoC,EAAK,IAAI,IAAI,GAAgB,CAAI,CAAC,GAC/H,IAAK,yBACH,MAAO,YAAY,EAAK,IAAI,mBAAmB,GAAgB,CAAI,CAAC,GACtE,IAAK,sBACH,MAAO,KAAK,EAAK,IAAI,0BAA0B,EAAK,IAAI,wCAAmC,EAAK,IAAI,IAAI,GAAgB,CAAI,CAAC,GAC/H,IAAK,4BAA6B,CAChC,MAAM,EAAU,EAAK,SAAS,OAAS,KAAK,EAAK,QAAQ,KAAK,IAAI,CAAC,IAAM,GACnE,EAAM,EAAK,IAAM,QAAQ,OAAO,EAAK,GAAG,EAAE,YAAW,CAAE,IAAM,GACnE,MAAO,cAAc,EAAK,IAAI,YAAY,EAAK,SAAS,QAAU,UAAU,SAAS,CAAO,GAAG,CAAG,EACpG,CACA,IAAK,mBACH,MAAO,QAAQ,EAAK,IAAI,+FAAgF,GAAa,CAAI,CAAC,GAC5H,IAAK,yBACH,MAAO,sBAAsB,EAAK,IAAI,IAAI,GAAgB,CAAI,CAAC,GACjE,IAAK,0BACH,MAAO,kBAAkB,EAAK,IAAI,mBAAmB,GAAgB,CAAI,CAAC,GAC5E,IAAK,6BACH,MAAO,kBAAkB,EAAK,IAAI,uGACpC,IAAK,sBACH,MAAO,qBAAqB,EAAK,IAAI,mBAAmB,GAAgB,CAAI,CAAC,GAC/E,IAAK,2BACH,MAAO,WAAW,EAAK,IAAI,qEAAgE,EAAK,IAAI,cACtG,IAAK,0BACH,MAAO,YAAY,EAAK,IAAI,YAAY,EAAK,KAAK,uGAAkG,EAAK,IAAI,gDAAgD,EAAK,IAAI,wBACxN,IAAK,mBACH,MAAO,WAAW,EAAK,IAAI,2BAA2B,EAAK,OAAO,GACpE,IAAK,qBACH,OAAO,EAAK,WAAa,WAAW,EAAK,IAAI,8GAAgH,WAAW,EAAK,IAAI,sKACnL,IAAK,yBACH,MAAO,YAAY,EAAK,IAAI,8FAAyF,EAAK,KAAK,IACjI,IAAK,oBACH,MAAO,aAAa,EAAK,IAAI,+BAA+B,EAAK,SAAS,IAC5E,IAAK,oBACH,MAAO,uBAAuB,EAAK,IAAI,IAAI,KAAK,UAAU,EAAK,KAAK,CAAC,IAAI,GAAa,CAAI,CAAC,GAC7F,IAAK,mBACH,MAAO,KAAK,EAAK,IAAI,IAAI,KAAK,UAAU,EAAK,KAAK,CAAC,gBAAgB,EAAK,KAAK,8CAAyC,GAAa,CAAI,CAAC,GAC1I,IAAK,eACH,MAAO,mBAAmB,EAAK,IAAI,IAAI,KAAK,UAAU,EAAK,KAAK,CAAC,IAAI,GAAa,CAAI,CAAC,GACzF,IAAK,iBACH,MAAO,sBAAsB,EAAK,IAAI,IAAI,KAAK,UAAU,EAAK,KAAK,CAAC,WAAW,EAAK,EAAE,IAAI,GAAa,CAAI,CAAC,GAC9G,IAAK,wBACH,MAAO,MAAM,EAAK,EAAE,iCAAiC,EAAK,EAAE,sGAAiG,GAAa,CAAI,CAAC,GACjL,IAAK,uBAEH,MAAO,IADS,EAAK,QAAU,OAAS,GAAG,EAAK,IAAI,IAAI,KAAK,UAAU,EAAK,KAAK,CAAC,GAAK,EAAK,IAC1E,0FAEpB,IAAK,sBACH,MAAO,IAAI,EAAK,IAAI,UAAU,EAAK,KAAO,IAAI,YAAW,CAAE,iCAAiC,EAAK,IAAI,8CACvG,IAAK,YACH,MAAO,GAAG,GAAgB,CAAI,CAAC,GAAG,GAAa,CAAI,CAAC,GACtD,IAAK,0BACH,MAAO,GAAG,GAAuB,CAAI,CAAC,GAAG,GAAa,CAAI,CAAC,GAC7D,IAAK,0BACH,MAAO,uBAAuB,KAAK,UAAU,EAAK,KAAK,CAAC,yFAAoF,GAAa,CAAI,CAAC,GAChK,IAAK,yBAA0B,CAC7B,MAAM,GAAS,EAAK,SAAW,CAAA,GAAI,IAAI,CAAC,CAAE,OAAA,CAAM,IAAO,WAAW,CAAM,GAAG,EAAE,KAAK,IAAI,EACtF,MAAO,mBAAmB,EAAK,IAAI,oEAA+D,EAAQ,KAAK,CAAK,IAAM,EAAE,gCAC9H,CACA,IAAK,4BACH,MAAO,sCAAiC,EAAK,OAAO,sBAAsB,EAAK,OAAO,IAAI,GAAgB,CAAI,CAAC,GACjH,IAAK,kCACH,MAAO,sEAAiE,EAAK,OAAO,WAAW,GAAgB,CAAI,CAAC,GACtH,IAAK,qBACH,MAAO,qCAAqC,EAAK,OAAO,sFAAiF,GAAgB,CAAI,CAAC,GAChK,IAAK,6BACH,MAAO,+BAA+B,EAAK,GAAG,4CAChD,IAAK,uBACH,OAAO,EAAK,OAAS,kBAAoB,UAAU,EAAK,SAAS,iEAAiE,EAAK,GAAG,GAAK,UAAU,EAAK,SAAS,sFAAsF,EAAK,QAAU,OAAO,EAAK,OAAO,SAAW,EAAK,GAAG,GACpT,IAAK,8BACH,MAAO,QAAQ,EAAK,GAAG,4BAA4B,EAAK,UAAU,IAAI,EAAkB,CAAI,CAAC,GAC/F,IAAK,8BACH,MAAO,YAAY,EAAK,GAAG,6EAAwE,EAAK,UAAU,IAAI,EAAkB,CAAI,CAAC,GAC/I,IAAK,iCACH,MAAO,IAAI,EAAK,GAAG,wBAAwB,EAAK,QAAU,GAAG,QAAQ,EAAK,IAAI,WAAM,GAAiB,EAAK,OAAQ,EAAK,IAAK,EAAK,MAAM,CAAC,GAAG,EAAkB,CAAI,CAAC,GACpK,IAAK,kCACH,MAAO,sCAAsC,EAAK,IAAI,KAAK,KAAK,UAAU,EAAK,OAAO,CAAC,GAAG,EAAkB,CAAI,CAAC,GACnH,IAAK,kCACH,MAAO,iBAAiB,EAAK,GAAG,8BAA8B,EAAkB,CAAI,CAAC,GACvF,IAAK,sBACH,MAAO,oEAA+D,EAAkB,CAAI,CAAC,GAC/F,IAAK,0BACH,MAAO,IAAI,EAAK,GAAG,4BAA4B,EAAK,GAAG,wCAAmC,EAAkB,CAAI,CAAC,GACnH,IAAK,4BACH,MAAO,8BAA8B,EAAK,GAAG,8CAAyC,EAAkB,CAAI,CAAC,GAC/G,IAAK,0BACH,MAAO,wBAAwB,EAAK,GAAG,IAAI,EAAkB,CAAI,CAAC,GACpE,IAAK,2BACH,MAAO,IAAI,EAAK,QAAQ,uBAAuB,EAAK,GAAG,sCAAiC,EAAkB,CAAI,CAAC,GACjH,IAAK,2BACH,MAAO,wBAAwB,EAAK,IAAI,qCAAgC,EAAkB,CAAI,CAAC,GACjG,IAAK,6BACH,MAAO,2BAA2B,EAAK,GAAG,iCAA4B,EAAkB,CAAI,CAAC,GAC/F,IAAK,4BACH,MAAO,0BAA0B,EAAK,GAAG,wCAAmC,EAAkB,CAAI,CAAC,GACrG,IAAK,+BACH,MAAO,cAAc,EAAK,IAAI,uBAAuB,EAAkB,CAAI,CAAC,GAC9E,IAAK,+BACH,MAAO,0EAAqE,EAAkB,CAAI,CAAC,GACrG,IAAK,qBACH,MAAO,qDAAgD,EAAkB,CAAI,CAAC,GAChF,IAAK,+BACH,MAAO,kBAAkB,EAAK,GAAG,2BAA2B,EAAK,SAAS,IAAI,EAAkB,CAAI,CAAC,GACvG,IAAK,kCACH,MAAO,qBAAqB,EAAK,GAAG,2BAA2B,EAAK,SAAS,IAAI,EAAkB,CAAI,CAAC,GAC1G,IAAK,gBACH,MAAO,YAAY,EAAK,IAAI,SAAS,EAAK,OAAO,0JACnD,IAAK,oCACH,MAAO,KAAK,EAAK,MAAM,uCAAuC,EAAK,GAAG,mJAAoI,EAAkB,CAAI,CAAC,GACnO,IAAK,kCACH,MAAO,aAAa,EAAK,QAAQ,qCAAqC,EAAK,GAAG,sIAAiI,EAAkB,CAAI,CAAC,GACxO,IAAK,aACH,OAAO,EAAK,QACd,QACE,OAAO,CACb,CACA,CACA,SAAS,GAAoB,EAAY,CACvC,GAAI,CAAC,EAAY,OAAO,KACxB,OAAQ,EAAW,KAAI,CACrB,IAAK,eACH,MAAO,iBAAiB,EAAW,EAAE,KACvC,IAAK,cACH,MAAO,iBAAiB,EAAW,EAAE,yBAAyB,EAAW,KAAK,MAAM,EAAG,EAAW,KAAK,OAAS,EAAW,GAAG,MAAM,CAAC,KACvI,IAAK,aACH,MAAO,iBAAiB,EAAW,EAAE,wBAAwB,EAAW,GAAG,MAAM,EAAG,EAAW,GAAG,OAAS,EAAW,KAAK,MAAM,CAAC,KACpI,IAAK,SACH,MAAO,UAAU,EAAW,IAAI,GAClC,IAAK,UACH,MAAO,QAAQ,EAAW,EAAE,iBAAiB,EAAW,IAAI,IAC9D,IAAK,OACH,MAAO,cAAc,EAAW,EAAE,GACpC,IAAK,WACH,OAAO,EAAW,MAAQ,KAC5B,QACE,OAAO,IACb,CACA,CACA,SAAS,EAAkB,EAAM,CAC/B,MAAM,EAAM,GAAM,SAClB,OAAK,EACE,YAAY,EAAI,IAAI,SAAS,EAAI,MAAM,GAD7B,EAEnB,CACA,SAAS,GAAiB,EAAQ,EAAK,EAAQ,CAC7C,OAAQ,EAAM,CACZ,IAAK,UACH,MAAO,8BAA8B,CAAG,IAC1C,IAAK,OACH,MAAO,8BAA8B,CAAG,IAC1C,IAAK,sBACH,MAAO,0BAA0B,GAAU,GAAG,wBAAwB,CAAG,iBAC3E,IAAK,gBACH,MAAO,yBAAyB,CAAG,cAAc,GAAU,GAAG,uBAChE,IAAK,mBACH,MAAO,wDAAwD,CAAG,iBACpE,QACE,MAAO,kBAAkB,CAAM,EACrC,CACA,CAGA,IAAI,GAAO,uEAAuE,MAAM,GAAG,EACvF,GAAM,KAAM,CACd,YAAY,EAAU,EAAO,EAAU,EAAe,CACpD,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,UAAY,IAAI,GAAe,CAAK,EACzC,KAAK,WAAa,IAAI,GAAW,EAAO,IAAI,EAC5C,KAAK,aAAe,EACpB,KAAK,SAAW,EAChB,KAAK,qBAAuB,KAAK,cAAgB,KACjD,KAAK,YAAc,IAAI,IAAI,EAAI,EAC/B,KAAK,SAAW,KAAK,YAAc,KACnC,KAAK,OAAS,KACd,KAAK,WAAW,oBAAuB,GAAiB,CAClD,KAAK,uBAAyB,MAAM,KAAK,uCAAsC,CACrF,EACA,KAAK,UAAY,GACjB,KAAK,YAAc,CAAE,SAAU,EAAS,aAAa,EACrD,KAAK,aAAe,KACpB,KAAK,aAAe,IACtB,CACA,IAAI,OAAQ,CACV,OAAO,KAAK,WAAW,KACzB,CACA,YAAY,EAAG,CACb,KAAM,CAAE,KAAM,CAAK,EAAK,EACxB,GAAI,EAAM,CAAC,IAAM,KAAO,EAAM,WAAW,OAAO,EAAG,CACjD,KAAK,kBAAkB,CAAC,EACxB,MACF,CACA,KAAK,eAAe,CAAC,CACvB,CACA,eAAe,EAAG,CAChB,KAAM,CAAE,KAAM,CAAK,EAAK,EAClB,EAAS,IAAU,YAAc,IAAU,aAAe,IAAU,WAAa,IAAU,OAC3F,CAAE,SAAA,EAAU,MAAA,EAAO,WAAA,CAAU,EAAK,KAClC,CAAC,EAAO,CAAQ,EAAI,GAAa,qBACrC,EAAE,OACF,EACA,EACA,EACA,CAAC,CACP,EAEI,GADI,GAAQ,KAAK,iBAAiB,EAAG,EAAO,CAAK,EAC7C,IAAU,MAAQ,IAAa,KACjC,UAAW,KAAW,EAAU,EAAW,iBAAiB,EAAO,EAAG,EAAS,KAAK,QAAQ,CAChG,CACA,kBAAkB,EAAG,CACnB,KAAM,CAAE,KAAM,CAAK,EAAK,EACxB,GAAI,IAAU,aAAc,CAC1B,GAAI,KAAK,SAAW,MAAQ,EAAE,QAAQ,SAAW,EAAG,OACpD,MAAM,EAAI,EAAE,QAAQ,CAAC,EACf,EAAY,EAAE,QAAQ,UAAU,oBAAoB,EAC1D,GAAI,CAAC,EAAW,OAChB,KAAK,OAAS,GAAc,EAAE,WAAY,EAAE,QAAS,EAAE,QAAS,EAAW,EAAK,EAChF,MACF,CACA,GAAI,KAAK,SAAW,KAAM,OAC1B,MAAM,EAAQ,GAAU,EAAG,KAAK,OAAO,EAAE,EACzC,GAAI,IAAU,KAAM,OACpB,KAAM,CAAE,SAAA,EAAU,OAAA,CAAM,EAAK,KACvB,CAAE,QAAA,EAAS,QAAA,CAAO,EAAK,EACvB,EAAO,CAAC,EAAO,IAAW,CAC9B,MAAM,EAAK,CAAE,KAAM,EAAO,OAAA,EAAQ,QAAA,EAAS,QAAA,EAAS,eAAgB,EAAI,EACxE,KAAK,eAAe,CAAE,CACxB,EACA,GAAI,IAAU,YAAa,CACzB,GAAK,EAAO,OAQV,EAAE,eAAc,EAChB,EAAK,WAAY,GAAQ,EAAU,EAAS,CAAO,CAAC,MATlC,CAClB,MAAM,EAAK,EAAU,EAAO,OACtB,EAAK,EAAU,EAAO,OAC5B,GAAI,EAAK,EAAK,EAAK,EAAK,IAAK,OAC7B,EAAO,OAAS,GAChB,EAAE,eAAc,EAChB,EAAK,YAAa,EAAO,MAAM,CACjC,CAIA,MACF,EACI,IAAU,YAAc,IAAU,iBAChC,EAAO,SACL,IAAU,YAAY,EAAK,OAAQ,GAAQ,EAAU,EAAS,CAAO,CAAC,EAC1E,EAAK,UAAW,EAAO,MAAM,GAE/B,KAAK,OAAS,KAElB,CACA,iBAAiB,EAAG,EAAO,EAAO,CAChC,GAAI,IAAU,WAAY,CACxB,MAAM,EAAa,GAAqB,EAAE,OAAQ,KAAK,SAAU,GAAQ,EACrE,IAAe,OACjB,EAAE,eAAc,EAChB,KAAK,oBAAmB,EACxB,KAAK,YAAc,EACnB,EAAW,QAAQ,aAAe,KAAK,UAAU,MAAQ,YAE7D,SAAW,IAAU,YAAa,CAChC,EAAE,OAAO,QAAQ,SAAW,EAC5B,MAAM,EAAY,KAAK,MAAM,IAEvB,EADU,EAAM,QAAO,EAAG,kBAAiB,EAC3B,OAAO,CAAS,EAChC,EAAW,EAAE,OAAO,QAAQ,UAAY,IACxC,EAAQ,EAAM,WAAW,KAAK,UAAU,CAAS,CAAC,EACxD,KAAK,SAAW,IAAI,GAAS,EAAO,EAAO,EAAU,EAAE,MAAM,CAC/D,MAAW,IAAU,QACnB,EAAE,eAAc,EAChB,KAAK,oBAAmB,IAEpB,KAAK,WAAa,OACpB,OAAO,KAAK,SAAS,KAAK,QAAQ,SAClC,KAAK,SAAW,MAElB,KAAK,oBAAmB,EAE5B,CACA,UAAU,EAAW,CACnB,OAAO,GAAM,KAAK,KAAK,MAAO,CAAS,CACzC,CACA,qBAAsB,CAChB,KAAK,cAAgB,OACvB,OAAO,KAAK,YAAY,QAAQ,aAChC,KAAK,YAAc,KAEvB,CACA,QAAS,CACP,MAAM,EAAO,KAAK,MAAM,IAClB,EAAQ,KAAK,UAAU,CAAI,EAC3B,CAAE,SAAA,EAAU,SAAA,EAAU,YAAA,EAAa,aAAA,CAAY,EAAK,KACpD,EAAW,GACf,EAAS,WAAW,EAAO,EAAM,KAAK,YAAY,EAClD,EACA,EACA,CACN,EACI,YAAK,aAAe,EACb,EAAS,GAClB,CACA,SAAS,EAAU,CACjB,KAAK,WAAW,MAAM,SAAS,CAAQ,CACzC,CAGA,QAAQ,EAAU,CAChB,OAAO,KAAK,WAAW,QAAQ,CAAQ,CACzC,CACA,SAAU,CACR,UAAW,KAAQ,KAAK,MAAM,KAAK,OAAM,EAAI,CAC3C,EAAK,QAAQ,KAAK,YAAY,EAC9B,UAAW,KAAO,EAAK,MACrB,UAAW,KAAQ,EAAK,MAAM,CAAG,EAAE,IAAI,cAAa,EAAI,KAAK,YAAY,IAAI,CAAI,CACrF,CACA,KAAK,UAAY,EACnB,CACA,kBAAkB,EAAY,CAC5B,UAAW,KAAQ,EAAY,KAAK,SAAS,iBAAiB,EAAM,KAAM,GAAa,CAAI,CAAC,CAC9F,CACA,gBAAgB,EAAM,CACpB,GAAU,aAAc,KAAK,MAAM,cAAa,EAAI,GAAM,MAAQ,SAAS,IAAI,CACjF,CACA,MAAM,EAAM,CACL,KAAK,WAAW,KAAK,QAAO,EACjC,KAAK,kBAAkB,KAAK,WAAW,EACvC,KAAK,SAAU,GAAS,CAClB,EAAK,MAAQ,EAAK,KAAK,KAAK,OAAM,CACxC,CAAC,EACD,KAAK,gBAAgB,CAAI,EACrB,GAAM,QAAS,KAAK,SAAS,aAAY,EACxC,KAAK,2BAA0B,EACpC,KAAK,OAAM,CACb,CACA,MAAO,CACL,KAAK,0BAAyB,EAC9B,aAAa,KAAK,oBAAoB,EACtC,KAAK,qBAAuB,KAC5B,UAAW,KAAQ,KAAK,YACtB,KAAK,SAAS,oBAAoB,EAAM,KAAM,GAAa,CAAI,CAAC,CACpE,CACA,WAAW,EAAM,EAAM,CACrB,KAAK,WAAW,SAAS,IAAI,GAAgB,EAAM,CAAI,CACzD,CACA,mBAAmB,EAAO,EAAM,CAC9B,MAAM,EAAQ,KAAK,UAAU,MAAK,EAClC,OAAA,EAAM,mBAAmB,EAAO,CAAI,EAC7B,CACT,CACA,mBAAmB,EAAe,GAAI,CACpC,KAAK,qBAAuB,KAC5B,MAAM,EAAU,KAAK,IAAG,EAClB,EAAI,KAAK,WACf,KAAO,EAAE,wBAA0B,KAAK,IAAG,EAAK,EAAU,GAAc,EAAE,aAAY,EAClF,EAAE,wBAAwB,KAAK,uCAAsC,CAC3E,CACA,wCAAyC,CACvC,KAAK,qBAAuB,WAAW,IAAM,KAAK,mBAAkB,EAAI,CAAC,CAC3E,CACA,2BAA2B,EAAa,IAAK,CAC3C,KAAK,cAAgB,YAAY,IAAM,KAAK,SAAS,MAAM,MAAK,EAAI,CAAU,CAChF,CACA,2BAA4B,CAC1B,cAAc,KAAK,aAAa,EAChC,KAAK,cAAgB,IACvB,CACF,EACA,SAAS,GAAU,EAAQ,EAAO,EAAc,SAAS,KAAM,CAC7D,MAAM,EAAY,SAAS,cAAc,OAAO,EAC1C,EAAoB,EAAY,cAAc,IAAI,CAAM,EAAE,EAC5D,GAAmB,EAAY,YAAY,CAAiB,EAChE,EAAU,GAAK,EACf,EAAU,UAAY,EACtB,EAAY,YAAY,CAAS,CACnC,CACA,IAAI,GAAO,IAAM,CACjB,EACA,SAAS,GAAU,EAAG,EAAI,CACxB,UAAW,KAAK,EAAE,eAAgB,GAAI,EAAE,aAAe,EAAI,OAAO,EAClE,UAAW,KAAK,EAAE,QAAS,GAAI,EAAE,aAAe,EAAI,OAAO,EAC3D,OAAO,IACT,CACA,IAAI,GAAgB,GAAS,IAAS,YAAc,CAAE,QAAS,EAAK,EAAK,OACzE,SAAS,GAAc,EAAI,EAAQ,EAAQ,EAAQ,EAAQ,CACzD,MAAO,CAAE,GAAA,EAAI,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAQ,OAAA,CAAM,CAC7C,CACA,SAAS,GAAQ,EAAU,EAAG,EAAG,CAE/B,IAAI,EADS,EAAS,YAAW,EACnB,mBAAmB,EAAG,CAAC,GAAK,KAC1C,KAAO,GAAI,YAAY,CACrB,MAAM,EAAO,EAAG,WAAW,iBAAiB,EAAG,CAAC,EAChD,GAAI,IAAS,MAAQ,IAAS,EAAI,MAClC,EAAK,CACP,CACA,OAAO,GAAM,CACf,CACA,SAAS,GAAqB,EAAQ,EAAU,EAAO,CACrD,IAAI,EAAO,EACX,KAAO,KAAU,GAAK,IAAS,GAAU,CACvC,GAAI,EAAK,SAAS,aAAe,OAAQ,OAAO,EAChD,EAAO,EAAK,UACd,CACA,OAAO,IACT,CACA,IAAI,GAAW,KAAM,CACnB,YAAY,EAAO,EAAK,EAAO,EAAM,CACnC,KAAK,MAAQ,EACb,KAAK,IAAM,EACX,KAAK,KAAO,EACZ,KAAK,KAAO,CACd,CACA,WAAW,EAAM,CACf,OAAO,KAAK,MAAM,WAAW,CAAI,CACnC,CACF,EAGI,GAAa,GAAM,IAAM,OAAS,OAAO,GAAM,UAAY,OAAO,GAAM,YACxE,GAAe,KAAM,CACvB,IAAI,EAAO,EAAW,CACtB,CACA,IAAI,EAAO,EAAW,EAAI,CAC1B,CACA,OAAQ,CACR,CACF,EACI,GAAkB,KAAM,CAC1B,aAAc,CACZ,KAAK,UAA4B,IAAI,GACvC,CACA,IAAI,EAAM,EAAU,CAClB,MAAM,EAAM,EAAK,OACjB,IAAI,EAAM,KAAK,UAAU,IAAI,CAAG,EAChC,GAAK,EACL,SAAS,EAAI,EAAG,EAAI,EAAM,EAAG,IAE3B,GADA,EAAM,EAAI,IAAI,EAAK,CAAC,CAAC,EACjB,CAAC,EAAK,OAEZ,OAAO,EAAI,IAAI,EAAK,EAAM,CAAC,CAAC,IAAI,CAAQ,EAC1C,CACA,IAAI,EAAM,EAAU,EAAG,CACrB,MAAM,EAAM,EAAK,OACjB,IAAI,EAAM,KAAK,UAAU,IAAI,CAAG,EAC3B,IACH,EAAsB,IAAI,QAC1B,KAAK,UAAU,IAAI,EAAK,CAAG,GAE7B,QAAS,EAAI,EAAG,EAAI,EAAM,EAAG,IAAK,CAChC,MAAM,EAAM,EAAK,CAAC,EAClB,IAAI,EAAO,EAAI,IAAI,CAAG,EACtB,GAAI,CAAC,EAAM,CACT,GAAI,CAAC,GAAU,CAAG,EAAG,OACrB,EAAuB,IAAI,QAC3B,EAAI,IAAI,EAAK,CAAI,CACnB,CACA,EAAM,CACR,CACA,MAAM,EAAU,EAAK,EAAM,CAAC,EACtB,EAAO,EAAI,IAAI,CAAO,EACxB,EAAM,EAAK,CAAQ,EAAI,EAClB,GAAU,CAAO,GAAG,EAAI,IAAI,EAAS,CAAE,CAAC,CAAQ,EAAG,CAAC,CAAE,CACjE,CACA,OAAQ,CACN,KAAK,UAA4B,IAAI,GACvC,CACF,EAGA,SAAS,GAAgB,EAAM,EAAM,CACnC,OAAI,aAAgB,GACX,IAAI,GACT,EAAK,IACL,CAAE,GAAG,EAAK,MAAO,UAAW,CAAI,EAChC,EAAK,OACL,EAAK,IACL,EAAK,SACX,EACM,aAAgB,GACX,IAAI,GAAU,EAAK,OAAO,IAAK,GAAM,GAAgB,EAAG,CAAI,CAAC,CAAC,EAChE,CACT,CACA,IAAI,GAAW,KAAM,CACnB,YAAY,EAAO,CACjB,KAAK,MAAQ,EACb,KAAK,MAAQ,IAAI,EACnB,CAMA,UAAU,EAAK,EAAO,EAAQ,EAAW,CACvC,OAAO,GAAE,EAAK,EAAO,EAAQ,CAAS,CACxC,CACA,eAAe,EAAQ,CACrB,OAAO,IAAI,GAAU,CAAM,CAC7B,CACA,cAAc,EAAM,CAClB,OAAO,IAAI,GAAS,CAAI,CAC1B,CACA,cAAe,CACb,KAAK,MAAQ,IAAI,EACnB,CACA,WAAW,EAAO,EAAK,EAAW,KAAM,CACtC,MAAM,EAAO,KAAK,MAAM,WAAW,CAAG,EACtC,OAAI,IAAS,KAAa,KACnB,KAAK,UAAU,EAAO,EAAK,EAAM,EAAK,QAAQ,CAAQ,EAAE,MAAO,OAAQ,CAAQ,CACxF,CAGA,SAAS,EAAO,EAAM,EAAU,EAAO,KAAM,CAC3C,MAAM,EAAO,KAAK,MAAM,WAAW,EAAM,EAAE,EAC3C,OAAO,EAAO,KAAK,UAAU,EAAO,EAAM,GAAI,EAAM,EAAM,GAAI,EAAU,CAAI,EAAI,IAClF,CAMA,UAAU,EAAO,EAAK,EAAM,EAAM,EAAK,EAAU,EAAO,KAAM,CAC5D,MAAM,EAAW,GAAG,GAAY,EAAE,IAAI,EAAM,SAAW,EAAE,IAAI,CAAG,IAAI,EAAM,WAAW,UAAU,GACzF,EAAY,CAAC,EAAM,CAAG,EAC5B,EAAM,0BAA0B,EAAW,CAAI,EAC/C,MAAM,EAAa,KAAK,MAAM,IAAI,EAAW,CAAQ,EACrD,GAAI,EAAY,OAAO,EACvB,MAAM,EAAO,EAAW,EAAK,QAAQ,CAAQ,EAAI,EAAM,eAAe,EAAK,MAAO,MAAM,EAClF,EAAO,KAAK,WAAW,EAAM,CAAK,EACxC,GAAI,GAAQ,KAAM,OAAO,KACzB,MAAM,EAAW,IAAS,KAAO,KAAO,GAAW,CAAI,EACjD,EAAO,KAAK,gBAAgB,CAChC,EAAG,OACH,IAAK,GAAM,QAAU,KACrB,IAAK,EAAK,GACV,IAAK,EAAK,KACV,GAAG,IAAa,KAAO,KAAO,CAAE,KAAM,CAAQ,CACpD,CAAK,EACK,EAAM,IAAI,GAAU,CACxB,EACA,IAAa,KAAO,EAAO,GAAgB,EAAM,KAAK,UAAU,CAAQ,CAAC,CAC/E,CAAK,EACD,YAAK,MAAM,IAAI,EAAW,EAAU,CAAG,EAChC,CACT,CACA,cAAc,EAAG,EAAK,EAAU,EAAK,EAAK,CACxC,EAAE,KAAK,KAAK,gBAAgB,CAAE,EAAG,OAAQ,IAAA,EAAK,CAAC,CAAQ,EAAG,CAAG,CAAE,EAAG,CAAG,CACvE,CACA,eAAe,EAAO,EAAO,CAC3B,KAAM,CAAE,IAAK,EAAQ,KAAM,EAAM,OAAQ,CAAG,EAAK,EAC3C,CAAE,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,SAAA,CAAQ,EAAK,EAAM,SAAS,CAAK,EAC1D,EAAU,aAAkB,GAAS,EAAM,qBAAqB,EAAO,IAAI,GAAG,MAAQ,KAAO,KAC7F,EAAI,CAAA,EACJ,EAAK,EAAM,GACX,EAAY,CAAC,EAAK,EAAO,EAAU,IAAU,CACjD,MAAM,EAAW,IAAY,KAAO,KAAO,GAAU,EAAS,CAAG,EAC3D,EAAW,IAAa,KAAO,EAAM,SAAS,CAAG,EAAI,KACrD,EAAW,IAAa,KAAO,EAAM,WAAW,UAAU,CAAQ,EAAI,IAAa,KAAO,EAAM,WAAW,SAAS,CAAQ,EAAI,EAAM,WACtI,EAAY,EAAW,CAAC,EAAM,EAAI,CAAK,EAAI,CAAC,EAAM,CAAK,EACvD,EAAW,GAAG,EAAM,SAAW,EAAE,IAAI,CAAG,IAAI,CAAG,IAAI,EAAS,UAAU,GACtE,GAAa,KAAK,MAAM,IAAI,EAAW,CAAQ,EACrD,GAAI,GAAY,KAAK,cAAc,EAAG,EAAK,EAAU,EAAK,EAAU,MAC/D,CACH,MAAM,GAAM,KAAK,WACf,EACA,EAAM,MAAM,EAAO,EAAO,GAAO,EAAU,IAAa,IAAI,CACtE,EACY,IAAO,MAAM,KAAK,cAAc,EAAG,EAAK,EAAU,EAAK,EAAG,EAC9D,KAAK,MAAM,IAAI,EAAW,EAAU,EAAG,CACzC,CACF,EACA,OAAA,GACE,CAAE,IAAA,EAAK,GAAA,EAAI,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,IAAK,GAAY,EAAO,CAAM,CAAC,EACtE,CACN,EACW,CACT,CACA,WAAW,EAAM,EAAO,CACtB,IAAI,EAAI,EAAM,MAAM,CAAC,EACrB,KAAO,IAAM,MAAM,CACjB,MAAM,EAAI,EAAE,CAAC,EACb,GAAI,EAAE,QAAS,CACb,GAAI,EAAM,KAAO,EAAE,GAAI,MACvB,eAAQ,MAAM,qBAAsB,EAAM,GAAI,EAAE,EAAE,EAC3C,IAAI,GAAS,mBAAmB,CACzC,CACA,EAAI,EAAE,CAAC,CACT,CACA,OAAO,EAAK,OAAO,EAAO,IAAI,CAChC,CACA,gBAAgB,EAAM,CACpB,OAAO,IAAI,GAAS,OAAI,KAAK,UAAU,CAAI,CAAC,MAAG,CACjD,CAGA,gBAAgB,EAAK,EAAK,CACxB,OAAO,IAAI,GAAU,CAAC,KAAK,gBAAgB,CAAE,EAAG,QAAS,IAAA,CAAG,CAAE,EAAG,CAAG,CAAC,CACvE,CACF,EAGI,GAAM,OAAO,IACb,GAAO,OAAO,IACd,GAAQ,CAAC,EAAU,IAAY,IAAI,GAAM,EAAU,CAAO,EAC9D,SAAS,GAAO,EAAgB,CAC9B,MAAM,EAAW,OAAO,GAAmB,SAAW,SAAS,cAAc,CAAc,EAAI,EACzF,EAAQ,IAAI,GACZ,EAAW,IAAI,GAAS,CAAK,EACnC,OAAO,IAAI,GAAI,EAAU,EAAO,EAAU,EAAY,CACxD,CAGA,eAAe,GAAsB,EAAK,EAAgB,EAAU,cAAe,CACjF,MAAM,EAAK,YAAY,IAAG,EACpB,EAAO,MAAM,GAA0B,EAAK,CAAc,EAC1D,EAAK,YAAY,IAAG,EAC1B,OAAA,GAAU,EAAS,CAAI,EAChB,EAAK,CACd,CACA,eAAe,GAA0B,EAAK,EAAgB,EAAM,GAA2B,CAC7F,OAAA,EAAI,aAAe,EACnB,EAAI,QAAO,EACJ,MAAM,EAAe,MAAM,KAAK,GAAuB,CAAG,CAAC,CAAC,CACrE,CAGA,SAAS,GAAa,EAAM,EAAM,CAChC,GAAI,GAAQ,KAAM,OAAO,KACzB,MAAM,EAAK,EAAK,QAAQ,CAAI,EAC5B,GAAI,OAAO,GAAO,WAChB,MAAM,IAAI,MAAM,kBAAkB,CAAI,6BAA6B,EAAK,IAAI,GAAG,EAEjF,OAAO,CACT,CACA,SAAS,GAAoB,EAAM,EAAc,EAAK,EAAO,CAAA,EAAI,CAC/D,MAAM,EAAS,GAAa,EAAM,EAAK,IAAI,GAAK,GAC1C,EAAa,GAAa,EAAM,EAAK,QAAQ,GAAK,GAClD,EAAW,GAAa,EAAM,EAAK,UAAU,EAC7C,EAAgB,GAAa,EAAM,EAAK,WAAW,EACnD,EAAK,EACL,EAAQ,EAAgB,EAAc,KAAK,CAAE,GAAK,CAAA,EAAK,EAAK,OAAS,CAAA,EACrE,EAAM,CACV,OAAS,GAAS,EAAM,CAAI,EAC5B,OAAQ,CAAC,EAAK,EAAO,IAAa,EAAO,KAAK,EAAI,EAAK,EAAO,CAAQ,CAC1E,EACQ,EAAM,CAAA,EACZ,OAAA,GACE,CAAE,IAAA,EAAK,GAAA,EAAI,OAAQ,EAAQ,SAAU,EAAY,SAAU,EAAU,IAAA,CAAG,EACxE,CAAC,EAAM,EAAQ,EAAW,IAAU,EAAI,KAAK,CAAK,CACtD,EACS,CACT,CAGA,SAAS,GAAa,EAAM,EAAI,CAE9B,MAAM,EADI,EAAG,SAAQ,EACT,MAAM,uCAAuC,EACnD,EAAS,EAAI,EAAE,CAAC,EAAE,KAAI,EAAK,GACjC,MAAO,GAAG,CAAI,IAAI,CAAM,GAC1B,CACA,SAAS,GAAiB,EAAG,CAC3B,OAAI,GAAM,KAA6B,EACnC,aAAa,IAAY,OAAO,YAAY,CAAC,EAC7C,aAAa,IAAY,CAAC,GAAG,CAAC,EAC3B,CACT,CACA,SAAS,GAAgB,EAAM,CAC7B,KAAM,CAAE,OAAA,EAAQ,KAAA,EAAM,QAAA,CAAO,EAAK,EAC5B,EAAc,OAAO,KAAK,CAAO,EAAE,IAAK,IAAO,CACnD,KAAM,EACN,IAAK,GAAa,EAAG,EAAQ,CAAC,CAAC,CACnC,EAAI,EACI,EAAQ,GAAW,OAAO,KAAK,GAAU,CAAA,CAAE,EAAE,IAAK,IAAO,CAAE,KAAM,EAAG,IAAK,GAAa,EAAG,EAAO,CAAC,CAAC,CAAC,EAAG,EACtG,EAAkB,EAAK,EAAK,OAAO,EACnC,EAAiB,EAAK,EAAK,MAAM,EACjC,EAAY,CAAA,EAClB,UAAW,KAAa,EAAQ,CAC9B,MAAM,EAAQ,EAAO,CAAS,EAC9B,EAAU,KAAK,CACb,KAAM,EACN,KAAM,EAAM,KACZ,QAAS,GAAiB,EAAM,YAAY,EAC5C,QAAS,CAAA,CACf,CAAK,CACH,CACA,MAAO,CACL,KAAA,EACA,QAAS,EACT,QAAS,EACT,OAAQ,EACR,OAAQ,CACZ,CACA,CACA,SAAS,GAAc,EAAY,CAAE,KAAA,EAAO,IAAI,EAAK,CAAA,EAAI,CACvD,MAAM,EAAQ,EAAW,WACnB,EAAS,IAAS,KAAO,EAAQ,EAAM,OAAQ,GAAM,EAAE,OAAS,CAAI,EAC1E,OAAO,IAAI,GAAc,CAAE,MAAO,EAAO,IAAK,GAAS,GAAgB,CAAI,CAAC,CAAC,CAAE,CACjF,CAGA,eAAe,GAAM,EAAO,CAAA,EAAI,CAC9B,MAAM,EAAS,MAAM,GAAS,CAAE,OAAA,GAAQ,GAAG,CAAI,CAAE,EACjD,OAAA,GAA0B,CAAM,EACzB,CACT,CACA,SAAS,GAAqB,EAAM,CAClC,MAAM,EAAc,CAAA,EACpB,UAAW,KAAQ,EAAK,MAAO,CAC7B,MAAM,EAAU,EAAK,MAAM,CAAI,EAAE,QAC3B,EAAM,IAAI,GAChB,GAAM,MAAM,EAAS,CAAG,EACxB,EAAI,QAAQ,EAAK,KAAK,EACtB,EAAY,CAAI,EAAI,CAAE,KAAA,EAAM,IAAA,EAAK,QAAA,CAAO,CAC1C,CACA,MAAM,EAAa,OAAO,OAAO,CAAI,EACrC,OAAA,EAAW,MAAQ,EACZ,GAAe,CAAU,EAAE,OACpC,CACA,SAAS,GAAM,EAAK,CAClB,MAAM,EAAS,CAAE,MAAO,EAAG,KAAM,EAAG,KAAM,CAAC,EAC3C,UAAW,KAAQ,EAAI,MAAM,KAAK,OAAM,EAAI,CAC1C,MAAM,EAAU,GAAqB,CAAI,EACzC,GAAI,EAAQ,SAAW,EACvB,SAAQ,MAAM,EAAK,IAAI,EACvB,UAAW,KAAK,EAAS,CACvB,EAAO,EAAE,KAAK,IACd,MAAM,EAAO,GAAoB,EAAE,UAAU,EACvC,EAAS,EAAO,WAAM,CAAI,GAAK,GAC/B,EAAO,IAAI,EAAE,KAAK,KAAK,GAAgB,EAAE,GAAI,EAAE,IAAI,CAAC,GAAG,CAAM,GAC/D,EAAE,QAAU,QAAS,QAAQ,MAAM,CAAI,EAClC,EAAE,QAAU,OAAQ,QAAQ,KAAK,CAAI,EACzC,QAAQ,IAAI,CAAI,CACvB,CACA,QAAQ,SAAQ,EAClB,CACA,MAAM,EAAQ,EAAO,MAAQ,EAAO,KAAO,EAAO,KAClD,eAAQ,IACN,IAAU,EAAI,mBAAqB,UAAU,EAAO,KAAK,WAAW,EAAO,IAAI,UAAU,EAAO,IAAI,OACxG,EACS,CACT","file":"/npm/tutuca@0.15.0/dist/tutuca-dev.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/tutuca@0.15.0/dist/tutuca-dev.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// node_modules/chai/index.js\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar utils_exports = {};\n__export(utils_exports, {\n  addChainableMethod: () => addChainableMethod,\n  addLengthGuard: () => addLengthGuard,\n  addMethod: () => addMethod,\n  addProperty: () => addProperty,\n  checkError: () => check_error_exports,\n  compareByInspect: () => compareByInspect,\n  eql: () => deep_eql_default,\n  events: () => events,\n  expectTypes: () => expectTypes,\n  flag: () => flag,\n  getActual: () => getActual,\n  getMessage: () => getMessage2,\n  getName: () => getName,\n  getOperator: () => getOperator,\n  getOwnEnumerableProperties: () => getOwnEnumerableProperties,\n  getOwnEnumerablePropertySymbols: () => getOwnEnumerablePropertySymbols,\n  getPathInfo: () => getPathInfo,\n  hasProperty: () => hasProperty,\n  inspect: () => inspect2,\n  isNaN: () => isNaN22,\n  isNumeric: () => isNumeric,\n  isProxyEnabled: () => isProxyEnabled,\n  isRegExp: () => isRegExp2,\n  objDisplay: () => objDisplay,\n  overwriteChainableMethod: () => overwriteChainableMethod,\n  overwriteMethod: () => overwriteMethod,\n  overwriteProperty: () => overwriteProperty,\n  proxify: () => proxify,\n  test: () => test,\n  transferFlags: () => transferFlags,\n  type: () => type\n});\nvar check_error_exports = {};\n__export(check_error_exports, {\n  compatibleConstructor: () => compatibleConstructor,\n  compatibleInstance: () => compatibleInstance,\n  compatibleMessage: () => compatibleMessage,\n  getConstructorName: () => getConstructorName,\n  getMessage: () => getMessage\n});\nfunction isErrorInstance(obj) {\n  return obj instanceof Error || Object.prototype.toString.call(obj) === \"[object Error]\";\n}\n__name(isErrorInstance, \"isErrorInstance\");\nfunction isRegExp(obj) {\n  return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n}\n__name(isRegExp, \"isRegExp\");\nfunction compatibleInstance(thrown, errorLike) {\n  return isErrorInstance(errorLike) && thrown === errorLike;\n}\n__name(compatibleInstance, \"compatibleInstance\");\nfunction compatibleConstructor(thrown, errorLike) {\n  if (isErrorInstance(errorLike)) {\n    return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n  } else if ((typeof errorLike === \"object\" || typeof errorLike === \"function\") && errorLike.prototype) {\n    return thrown.constructor === errorLike || thrown instanceof errorLike;\n  }\n  return false;\n}\n__name(compatibleConstructor, \"compatibleConstructor\");\nfunction compatibleMessage(thrown, errMatcher) {\n  const comparisonString = typeof thrown === \"string\" ? thrown : thrown.message;\n  if (isRegExp(errMatcher)) {\n    return errMatcher.test(comparisonString);\n  } else if (typeof errMatcher === \"string\") {\n    return comparisonString.indexOf(errMatcher) !== -1;\n  }\n  return false;\n}\n__name(compatibleMessage, \"compatibleMessage\");\nfunction getConstructorName(errorLike) {\n  let constructorName = errorLike;\n  if (isErrorInstance(errorLike)) {\n    constructorName = errorLike.constructor.name;\n  } else if (typeof errorLike === \"function\") {\n    constructorName = errorLike.name;\n    if (constructorName === \"\") {\n      const newConstructorName = new errorLike().name;\n      constructorName = newConstructorName || constructorName;\n    }\n  }\n  return constructorName;\n}\n__name(getConstructorName, \"getConstructorName\");\nfunction getMessage(errorLike) {\n  let msg = \"\";\n  if (errorLike && errorLike.message) {\n    msg = errorLike.message;\n  } else if (typeof errorLike === \"string\") {\n    msg = errorLike;\n  }\n  return msg;\n}\n__name(getMessage, \"getMessage\");\nfunction flag(obj, key, value) {\n  let flags = obj.__flags || (obj.__flags = /* @__PURE__ */ Object.create(null));\n  if (arguments.length === 3) {\n    flags[key] = value;\n  } else {\n    return flags[key];\n  }\n}\n__name(flag, \"flag\");\nfunction test(obj, args) {\n  let negate = flag(obj, \"negate\"), expr = args[0];\n  return negate ? !expr : expr;\n}\n__name(test, \"test\");\nfunction type(obj) {\n  if (typeof obj === \"undefined\") {\n    return \"undefined\";\n  }\n  if (obj === null) {\n    return \"null\";\n  }\n  const stringTag = obj[Symbol.toStringTag];\n  if (typeof stringTag === \"string\") {\n    return stringTag;\n  }\n  const type3 = Object.prototype.toString.call(obj).slice(8, -1);\n  return type3;\n}\n__name(type, \"type\");\nvar canElideFrames = \"captureStackTrace\" in Error;\nvar _AssertionError = class _AssertionError2 extends Error {\n  constructor(message = \"Unspecified AssertionError\", props, ssf) {\n    super(message);\n    __publicField(this, \"message\");\n    this.message = message;\n    if (canElideFrames) {\n      Error.captureStackTrace(this, ssf || _AssertionError2);\n    }\n    for (const key in props) {\n      if (!(key in this)) {\n        this[key] = props[key];\n      }\n    }\n  }\n  get name() {\n    return \"AssertionError\";\n  }\n  get ok() {\n    return false;\n  }\n  toJSON(stack) {\n    return {\n      ...this,\n      name: this.name,\n      message: this.message,\n      ok: false,\n      stack: stack !== false ? this.stack : void 0\n    };\n  }\n};\n__name(_AssertionError, \"AssertionError\");\nvar AssertionError = _AssertionError;\nfunction expectTypes(obj, types) {\n  let flagMsg = flag(obj, \"message\");\n  let ssfi = flag(obj, \"ssfi\");\n  flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n  obj = flag(obj, \"object\");\n  types = types.map(function(t) {\n    return t.toLowerCase();\n  });\n  types.sort();\n  let str = types.map(function(t, index) {\n    let art = ~[\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(t.charAt(0)) ? \"an\" : \"a\";\n    let or = types.length > 1 && index === types.length - 1 ? \"or \" : \"\";\n    return or + art + \" \" + t;\n  }).join(\", \");\n  let objType = type(obj).toLowerCase();\n  if (!types.some(function(expected) {\n    return objType === expected;\n  })) {\n    throw new AssertionError(\n      flagMsg + \"object tested must be \" + str + \", but \" + objType + \" given\",\n      void 0,\n      ssfi\n    );\n  }\n}\n__name(expectTypes, \"expectTypes\");\nfunction getActual(obj, args) {\n  return args.length > 4 ? args[4] : obj._obj;\n}\n__name(getActual, \"getActual\");\nvar ansiColors = {\n  bold: [\"1\", \"22\"],\n  dim: [\"2\", \"22\"],\n  italic: [\"3\", \"23\"],\n  underline: [\"4\", \"24\"],\n  // 5 & 6 are blinking\n  inverse: [\"7\", \"27\"],\n  hidden: [\"8\", \"28\"],\n  strike: [\"9\", \"29\"],\n  // 10-20 are fonts\n  // 21-29 are resets for 1-9\n  black: [\"30\", \"39\"],\n  red: [\"31\", \"39\"],\n  green: [\"32\", \"39\"],\n  yellow: [\"33\", \"39\"],\n  blue: [\"34\", \"39\"],\n  magenta: [\"35\", \"39\"],\n  cyan: [\"36\", \"39\"],\n  white: [\"37\", \"39\"],\n  brightblack: [\"30;1\", \"39\"],\n  brightred: [\"31;1\", \"39\"],\n  brightgreen: [\"32;1\", \"39\"],\n  brightyellow: [\"33;1\", \"39\"],\n  brightblue: [\"34;1\", \"39\"],\n  brightmagenta: [\"35;1\", \"39\"],\n  brightcyan: [\"36;1\", \"39\"],\n  brightwhite: [\"37;1\", \"39\"],\n  grey: [\"90\", \"39\"]\n};\nvar styles = {\n  special: \"cyan\",\n  number: \"yellow\",\n  bigint: \"yellow\",\n  boolean: \"yellow\",\n  undefined: \"grey\",\n  null: \"bold\",\n  string: \"green\",\n  symbol: \"green\",\n  date: \"magenta\",\n  regexp: \"red\"\n};\nvar truncator = \"…\";\nfunction colorise(value, styleType) {\n  const color = ansiColors[styles[styleType]] || ansiColors[styleType] || \"\";\n  if (!color) {\n    return String(value);\n  }\n  return `\\x1B[${color[0]}m${String(value)}\\x1B[${color[1]}m`;\n}\n__name(colorise, \"colorise\");\nfunction normaliseOptions({\n  showHidden = false,\n  depth = 2,\n  colors = false,\n  customInspect = true,\n  showProxy = false,\n  maxArrayLength = Infinity,\n  breakLength = Infinity,\n  seen = [],\n  // eslint-disable-next-line no-shadow\n  truncate: truncate2 = Infinity,\n  stylize = String\n} = {}, inspect3) {\n  const options = {\n    showHidden: Boolean(showHidden),\n    depth: Number(depth),\n    colors: Boolean(colors),\n    customInspect: Boolean(customInspect),\n    showProxy: Boolean(showProxy),\n    maxArrayLength: Number(maxArrayLength),\n    breakLength: Number(breakLength),\n    truncate: Number(truncate2),\n    seen,\n    inspect: inspect3,\n    stylize\n  };\n  if (options.colors) {\n    options.stylize = colorise;\n  }\n  return options;\n}\n__name(normaliseOptions, \"normaliseOptions\");\nfunction isHighSurrogate(char) {\n  return char >= \"\\uD800\" && char <= \"\\uDBFF\";\n}\n__name(isHighSurrogate, \"isHighSurrogate\");\nfunction truncate(string, length, tail = truncator) {\n  string = String(string);\n  const tailLength = tail.length;\n  const stringLength = string.length;\n  if (tailLength > length && stringLength > tailLength) {\n    return tail;\n  }\n  if (stringLength > length && stringLength > tailLength) {\n    let end = length - tailLength;\n    if (end > 0 && isHighSurrogate(string[end - 1])) {\n      end = end - 1;\n    }\n    return `${string.slice(0, end)}${tail}`;\n  }\n  return string;\n}\n__name(truncate, \"truncate\");\nfunction inspectList(list, options, inspectItem, separator = \", \") {\n  inspectItem = inspectItem || options.inspect;\n  const size = list.length;\n  if (size === 0)\n    return \"\";\n  const originalLength = options.truncate;\n  let output = \"\";\n  let peek2 = \"\";\n  let truncated = \"\";\n  for (let i = 0; i < size; i += 1) {\n    const last = i + 1 === list.length;\n    const secondToLast = i + 2 === list.length;\n    truncated = `${truncator}(${list.length - i})`;\n    const value = list[i];\n    options.truncate = originalLength - output.length - (last ? 0 : separator.length);\n    const string = peek2 || inspectItem(value, options) + (last ? \"\" : separator);\n    const nextLength = output.length + string.length;\n    const truncatedLength = nextLength + truncated.length;\n    if (last && nextLength > originalLength && output.length + truncated.length <= originalLength) {\n      break;\n    }\n    if (!last && !secondToLast && truncatedLength > originalLength) {\n      break;\n    }\n    peek2 = last ? \"\" : inspectItem(list[i + 1], options) + (secondToLast ? \"\" : separator);\n    if (!last && secondToLast && truncatedLength > originalLength && nextLength + peek2.length > originalLength) {\n      break;\n    }\n    output += string;\n    if (!last && !secondToLast && nextLength + peek2.length >= originalLength) {\n      truncated = `${truncator}(${list.length - i - 1})`;\n      break;\n    }\n    truncated = \"\";\n  }\n  return `${output}${truncated}`;\n}\n__name(inspectList, \"inspectList\");\nfunction quoteComplexKey(key) {\n  if (key.match(/^[a-zA-Z_][a-zA-Z_0-9]*$/)) {\n    return key;\n  }\n  return JSON.stringify(key).replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n}\n__name(quoteComplexKey, \"quoteComplexKey\");\nfunction inspectProperty([key, value], options) {\n  options.truncate -= 2;\n  if (typeof key === \"string\") {\n    key = quoteComplexKey(key);\n  } else if (typeof key !== \"number\") {\n    key = `[${options.inspect(key, options)}]`;\n  }\n  options.truncate -= key.length;\n  value = options.inspect(value, options);\n  return `${key}: ${value}`;\n}\n__name(inspectProperty, \"inspectProperty\");\nfunction inspectArray(array, options) {\n  const nonIndexProperties = Object.keys(array).slice(array.length);\n  if (!array.length && !nonIndexProperties.length)\n    return \"[]\";\n  options.truncate -= 4;\n  const listContents = inspectList(array, options);\n  options.truncate -= listContents.length;\n  let propertyContents = \"\";\n  if (nonIndexProperties.length) {\n    propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);\n  }\n  return `[ ${listContents}${propertyContents ? `, ${propertyContents}` : \"\"} ]`;\n}\n__name(inspectArray, \"inspectArray\");\nvar getArrayName = /* @__PURE__ */ __name((array) => {\n  if (typeof Buffer === \"function\" && array instanceof Buffer) {\n    return \"Buffer\";\n  }\n  if (array[Symbol.toStringTag]) {\n    return array[Symbol.toStringTag];\n  }\n  return array.constructor.name;\n}, \"getArrayName\");\nfunction inspectTypedArray(array, options) {\n  const name = getArrayName(array);\n  options.truncate -= name.length + 4;\n  const nonIndexProperties = Object.keys(array).slice(array.length);\n  if (!array.length && !nonIndexProperties.length)\n    return `${name}[]`;\n  let output = \"\";\n  for (let i = 0; i < array.length; i++) {\n    const string = `${options.stylize(truncate(array[i], options.truncate), \"number\")}${i === array.length - 1 ? \"\" : \", \"}`;\n    options.truncate -= string.length;\n    if (array[i] !== array.length && options.truncate <= 3) {\n      output += `${truncator}(${array.length - array[i] + 1})`;\n      break;\n    }\n    output += string;\n  }\n  let propertyContents = \"\";\n  if (nonIndexProperties.length) {\n    propertyContents = inspectList(nonIndexProperties.map((key) => [key, array[key]]), options, inspectProperty);\n  }\n  return `${name}[ ${output}${propertyContents ? `, ${propertyContents}` : \"\"} ]`;\n}\n__name(inspectTypedArray, \"inspectTypedArray\");\nfunction inspectDate(dateObject, options) {\n  const stringRepresentation = dateObject.toJSON();\n  if (stringRepresentation === null) {\n    return \"Invalid Date\";\n  }\n  const split = stringRepresentation.split(\"T\");\n  const date = split[0];\n  return options.stylize(`${date}T${truncate(split[1], options.truncate - date.length - 1)}`, \"date\");\n}\n__name(inspectDate, \"inspectDate\");\nfunction inspectFunction(func, options) {\n  const functionType = func[Symbol.toStringTag] || \"Function\";\n  const name = func.name;\n  if (!name) {\n    return options.stylize(`[${functionType}]`, \"special\");\n  }\n  return options.stylize(`[${functionType} ${truncate(name, options.truncate - 11)}]`, \"special\");\n}\n__name(inspectFunction, \"inspectFunction\");\nfunction inspectMapEntry([key, value], options) {\n  options.truncate -= 4;\n  key = options.inspect(key, options);\n  options.truncate -= key.length;\n  value = options.inspect(value, options);\n  return `${key} => ${value}`;\n}\n__name(inspectMapEntry, \"inspectMapEntry\");\nfunction mapToEntries(map) {\n  const entries = [];\n  map.forEach((value, key) => {\n    entries.push([key, value]);\n  });\n  return entries;\n}\n__name(mapToEntries, \"mapToEntries\");\nfunction inspectMap(map, options) {\n  if (map.size === 0)\n    return \"Map{}\";\n  options.truncate -= 7;\n  return `Map{ ${inspectList(mapToEntries(map), options, inspectMapEntry)} }`;\n}\n__name(inspectMap, \"inspectMap\");\nvar isNaN2 = Number.isNaN || ((i) => i !== i);\nfunction inspectNumber(number, options) {\n  if (isNaN2(number)) {\n    return options.stylize(\"NaN\", \"number\");\n  }\n  if (number === Infinity) {\n    return options.stylize(\"Infinity\", \"number\");\n  }\n  if (number === -Infinity) {\n    return options.stylize(\"-Infinity\", \"number\");\n  }\n  if (number === 0) {\n    return options.stylize(1 / number === Infinity ? \"+0\" : \"-0\", \"number\");\n  }\n  return options.stylize(truncate(String(number), options.truncate), \"number\");\n}\n__name(inspectNumber, \"inspectNumber\");\nfunction inspectBigInt(number, options) {\n  let nums = truncate(number.toString(), options.truncate - 1);\n  if (nums !== truncator)\n    nums += \"n\";\n  return options.stylize(nums, \"bigint\");\n}\n__name(inspectBigInt, \"inspectBigInt\");\nfunction inspectRegExp(value, options) {\n  const flags = value.toString().split(\"/\")[2];\n  const sourceLength = options.truncate - (2 + flags.length);\n  const source = value.source;\n  return options.stylize(`/${truncate(source, sourceLength)}/${flags}`, \"regexp\");\n}\n__name(inspectRegExp, \"inspectRegExp\");\nfunction arrayFromSet(set22) {\n  const values = [];\n  set22.forEach((value) => {\n    values.push(value);\n  });\n  return values;\n}\n__name(arrayFromSet, \"arrayFromSet\");\nfunction inspectSet(set22, options) {\n  if (set22.size === 0)\n    return \"Set{}\";\n  options.truncate -= 7;\n  return `Set{ ${inspectList(arrayFromSet(set22), options)} }`;\n}\n__name(inspectSet, \"inspectSet\");\nvar stringEscapeChars = new RegExp(\"['\\\\u0000-\\\\u001f\\\\u007f-\\\\u009f\\\\u00ad\\\\u0600-\\\\u0604\\\\u070f\\\\u17b4\\\\u17b5\\\\u200c-\\\\u200f\\\\u2028-\\\\u202f\\\\u2060-\\\\u206f\\\\ufeff\\\\ufff0-\\\\uffff]\", \"g\");\nvar escapeCharacters = {\n  \"\\b\": \"\\\\b\",\n  \"\t\": \"\\\\t\",\n  \"\\n\": \"\\\\n\",\n  \"\\f\": \"\\\\f\",\n  \"\\r\": \"\\\\r\",\n  \"'\": \"\\\\'\",\n  \"\\\\\": \"\\\\\\\\\"\n};\nvar hex = 16;\nvar unicodeLength = 4;\nfunction escape(char) {\n  return escapeCharacters[char] || `\\\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`;\n}\n__name(escape, \"escape\");\nfunction inspectString(string, options) {\n  if (stringEscapeChars.test(string)) {\n    string = string.replace(stringEscapeChars, escape);\n  }\n  return options.stylize(`'${truncate(string, options.truncate - 2)}'`, \"string\");\n}\n__name(inspectString, \"inspectString\");\nfunction inspectSymbol(value) {\n  if (\"description\" in Symbol.prototype) {\n    return value.description ? `Symbol(${value.description})` : \"Symbol()\";\n  }\n  return value.toString();\n}\n__name(inspectSymbol, \"inspectSymbol\");\nvar getPromiseValue = /* @__PURE__ */ __name(() => \"Promise{…}\", \"getPromiseValue\");\nvar promise_default = getPromiseValue;\nfunction inspectObject(object, options) {\n  const properties = Object.getOwnPropertyNames(object);\n  const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : [];\n  if (properties.length === 0 && symbols.length === 0) {\n    return \"{}\";\n  }\n  options.truncate -= 4;\n  options.seen = options.seen || [];\n  if (options.seen.includes(object)) {\n    return \"[Circular]\";\n  }\n  options.seen.push(object);\n  const propertyContents = inspectList(properties.map((key) => [key, object[key]]), options, inspectProperty);\n  const symbolContents = inspectList(symbols.map((key) => [key, object[key]]), options, inspectProperty);\n  options.seen.pop();\n  let sep = \"\";\n  if (propertyContents && symbolContents) {\n    sep = \", \";\n  }\n  return `{ ${propertyContents}${sep}${symbolContents} }`;\n}\n__name(inspectObject, \"inspectObject\");\nvar toStringTag = typeof Symbol !== \"undefined\" && Symbol.toStringTag ? Symbol.toStringTag : false;\nfunction inspectClass(value, options) {\n  let name = \"\";\n  if (toStringTag && toStringTag in value) {\n    name = value[toStringTag];\n  }\n  name = name || value.constructor.name;\n  if (!name || name === \"_class\") {\n    name = \"<Anonymous Class>\";\n  }\n  options.truncate -= name.length;\n  return `${name}${inspectObject(value, options)}`;\n}\n__name(inspectClass, \"inspectClass\");\nfunction inspectArguments(args, options) {\n  if (args.length === 0)\n    return \"Arguments[]\";\n  options.truncate -= 13;\n  return `Arguments[ ${inspectList(args, options)} ]`;\n}\n__name(inspectArguments, \"inspectArguments\");\nvar errorKeys = [\n  \"stack\",\n  \"line\",\n  \"column\",\n  \"name\",\n  \"message\",\n  \"fileName\",\n  \"lineNumber\",\n  \"columnNumber\",\n  \"number\",\n  \"description\",\n  \"cause\"\n];\nfunction inspectObject2(error, options) {\n  const properties = Object.getOwnPropertyNames(error).filter((key) => errorKeys.indexOf(key) === -1);\n  const name = error.name;\n  options.truncate -= name.length;\n  let message = \"\";\n  if (typeof error.message === \"string\") {\n    message = truncate(error.message, options.truncate);\n  } else {\n    properties.unshift(\"message\");\n  }\n  message = message ? `: ${message}` : \"\";\n  options.truncate -= message.length + 5;\n  options.seen = options.seen || [];\n  if (options.seen.includes(error)) {\n    return \"[Circular]\";\n  }\n  options.seen.push(error);\n  const propertyContents = inspectList(properties.map((key) => [key, error[key]]), options, inspectProperty);\n  return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : \"\"}`;\n}\n__name(inspectObject2, \"inspectObject\");\nfunction inspectAttribute([key, value], options) {\n  options.truncate -= 3;\n  if (!value) {\n    return `${options.stylize(String(key), \"yellow\")}`;\n  }\n  return `${options.stylize(String(key), \"yellow\")}=${options.stylize(`\"${value}\"`, \"string\")}`;\n}\n__name(inspectAttribute, \"inspectAttribute\");\nfunction inspectNodeCollection(collection, options) {\n  return inspectList(collection, options, inspectNode, \"\\n\");\n}\n__name(inspectNodeCollection, \"inspectNodeCollection\");\nfunction inspectNode(node, options) {\n  switch (node.nodeType) {\n    case 1:\n      return inspectHTML(node, options);\n    case 3:\n      return options.inspect(node.data, options);\n    default:\n      return options.inspect(node, options);\n  }\n}\n__name(inspectNode, \"inspectNode\");\nfunction inspectHTML(element, options) {\n  const properties = element.getAttributeNames();\n  const name = element.tagName.toLowerCase();\n  const head = options.stylize(`<${name}`, \"special\");\n  const headClose = options.stylize(`>`, \"special\");\n  const tail = options.stylize(`</${name}>`, \"special\");\n  options.truncate -= name.length * 2 + 5;\n  let propertyContents = \"\";\n  if (properties.length > 0) {\n    propertyContents += \" \";\n    propertyContents += inspectList(properties.map((key) => [key, element.getAttribute(key)]), options, inspectAttribute, \" \");\n  }\n  options.truncate -= propertyContents.length;\n  const truncate2 = options.truncate;\n  let children = inspectNodeCollection(element.children, options);\n  if (children && children.length > truncate2) {\n    children = `${truncator}(${element.children.length})`;\n  }\n  return `${head}${propertyContents}${headClose}${children}${tail}`;\n}\n__name(inspectHTML, \"inspectHTML\");\nvar symbolsSupported = typeof Symbol === \"function\" && typeof Symbol.for === \"function\";\nvar chaiInspect = symbolsSupported ? /* @__PURE__ */ Symbol.for(\"chai/inspect\") : \"@@chai/inspect\";\nvar nodeInspect = /* @__PURE__ */ Symbol.for(\"nodejs.util.inspect.custom\");\nvar constructorMap = /* @__PURE__ */ new WeakMap();\nvar stringTagMap = {};\nvar baseTypesMap = {\n  undefined: /* @__PURE__ */ __name((value, options) => options.stylize(\"undefined\", \"undefined\"), \"undefined\"),\n  null: /* @__PURE__ */ __name((value, options) => options.stylize(\"null\", \"null\"), \"null\"),\n  boolean: /* @__PURE__ */ __name((value, options) => options.stylize(String(value), \"boolean\"), \"boolean\"),\n  Boolean: /* @__PURE__ */ __name((value, options) => options.stylize(String(value), \"boolean\"), \"Boolean\"),\n  number: inspectNumber,\n  Number: inspectNumber,\n  bigint: inspectBigInt,\n  BigInt: inspectBigInt,\n  string: inspectString,\n  String: inspectString,\n  function: inspectFunction,\n  Function: inspectFunction,\n  symbol: inspectSymbol,\n  // A Symbol polyfill will return `Symbol` not `symbol` from typedetect\n  Symbol: inspectSymbol,\n  Array: inspectArray,\n  Date: inspectDate,\n  Map: inspectMap,\n  Set: inspectSet,\n  RegExp: inspectRegExp,\n  Promise: promise_default,\n  // WeakSet, WeakMap are totally opaque to us\n  WeakSet: /* @__PURE__ */ __name((value, options) => options.stylize(\"WeakSet{…}\", \"special\"), \"WeakSet\"),\n  WeakMap: /* @__PURE__ */ __name((value, options) => options.stylize(\"WeakMap{…}\", \"special\"), \"WeakMap\"),\n  Arguments: inspectArguments,\n  Int8Array: inspectTypedArray,\n  Uint8Array: inspectTypedArray,\n  Uint8ClampedArray: inspectTypedArray,\n  Int16Array: inspectTypedArray,\n  Uint16Array: inspectTypedArray,\n  Int32Array: inspectTypedArray,\n  Uint32Array: inspectTypedArray,\n  Float32Array: inspectTypedArray,\n  Float64Array: inspectTypedArray,\n  Generator: /* @__PURE__ */ __name(() => \"\", \"Generator\"),\n  DataView: /* @__PURE__ */ __name(() => \"\", \"DataView\"),\n  ArrayBuffer: /* @__PURE__ */ __name(() => \"\", \"ArrayBuffer\"),\n  Error: inspectObject2,\n  HTMLCollection: inspectNodeCollection,\n  NodeList: inspectNodeCollection\n};\nvar inspectCustom = /* @__PURE__ */ __name((value, options, type3, inspectFn) => {\n  if (chaiInspect in value && typeof value[chaiInspect] === \"function\") {\n    return value[chaiInspect](options);\n  }\n  if (nodeInspect in value && typeof value[nodeInspect] === \"function\") {\n    return value[nodeInspect](options.depth, options, inspectFn);\n  }\n  if (\"inspect\" in value && typeof value.inspect === \"function\") {\n    return value.inspect(options.depth, options);\n  }\n  if (\"constructor\" in value && constructorMap.has(value.constructor)) {\n    return constructorMap.get(value.constructor)(value, options);\n  }\n  if (stringTagMap[type3]) {\n    return stringTagMap[type3](value, options);\n  }\n  return \"\";\n}, \"inspectCustom\");\nvar toString = Object.prototype.toString;\nfunction inspect(value, opts = {}) {\n  const options = normaliseOptions(opts, inspect);\n  const { customInspect } = options;\n  let type3 = value === null ? \"null\" : typeof value;\n  if (type3 === \"object\") {\n    type3 = toString.call(value).slice(8, -1);\n  }\n  if (type3 in baseTypesMap) {\n    return baseTypesMap[type3](value, options);\n  }\n  if (customInspect && value) {\n    const output = inspectCustom(value, options, type3, inspect);\n    if (output) {\n      if (typeof output === \"string\")\n        return output;\n      return inspect(output, options);\n    }\n  }\n  const proto = value ? Object.getPrototypeOf(value) : false;\n  if (proto === Object.prototype || proto === null) {\n    return inspectObject(value, options);\n  }\n  if (value && typeof HTMLElement === \"function\" && value instanceof HTMLElement) {\n    return inspectHTML(value, options);\n  }\n  if (\"constructor\" in value) {\n    if (value.constructor !== Object) {\n      return inspectClass(value, options);\n    }\n    return inspectObject(value, options);\n  }\n  if (value === Object(value)) {\n    return inspectObject(value, options);\n  }\n  return options.stylize(String(value), type3);\n}\n__name(inspect, \"inspect\");\nvar config = {\n  /**\n   * ### config.includeStack\n   *\n   * User configurable property, influences whether stack trace\n   * is included in Assertion error message. Default of false\n   * suppresses stack trace in the error message.\n   *\n   *     chai.config.includeStack = true;  // enable stack on error\n   *\n   * @param {boolean}\n   * @public\n   */\n  includeStack: false,\n  /**\n   * ### config.showDiff\n   *\n   * User configurable property, influences whether or not\n   * the `showDiff` flag should be included in the thrown\n   * AssertionErrors. `false` will always be `false`; `true`\n   * will be true when the assertion has requested a diff\n   * be shown.\n   *\n   * @param {boolean}\n   * @public\n   */\n  showDiff: true,\n  /**\n   * ### config.truncateThreshold\n   *\n   * User configurable property, sets length threshold for actual and\n   * expected values in assertion errors. If this threshold is exceeded, for\n   * example for large data structures, the value is replaced with something\n   * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`.\n   *\n   * Set it to zero if you want to disable truncating altogether.\n   *\n   * This is especially userful when doing assertions on arrays: having this\n   * set to a reasonable large value makes the failure messages readily\n   * inspectable.\n   *\n   *     chai.config.truncateThreshold = 0;  // disable truncating\n   *\n   * @param {number}\n   * @public\n   */\n  truncateThreshold: 40,\n  /**\n   * ### config.useProxy\n   *\n   * User configurable property, defines if chai will use a Proxy to throw\n   * an error when a non-existent property is read, which protects users\n   * from typos when using property-based assertions.\n   *\n   * Set it to false if you want to disable this feature.\n   *\n   *     chai.config.useProxy = false;  // disable use of Proxy\n   *\n   * This feature is automatically disabled regardless of this config value\n   * in environments that don't support proxies.\n   *\n   * @param {boolean}\n   * @public\n   */\n  useProxy: true,\n  /**\n   * ### config.proxyExcludedKeys\n   *\n   * User configurable property, defines which properties should be ignored\n   * instead of throwing an error if they do not exist on the assertion.\n   * This is only applied if the environment Chai is running in supports proxies and\n   * if the `useProxy` configuration setting is enabled.\n   * By default, `then` and `inspect` will not throw an error if they do not exist on the\n   * assertion object because the `.inspect` property is read by `util.inspect` (for example, when\n   * using `console.log` on the assertion object) and `.then` is necessary for promise type-checking.\n   *\n   *     // By default these keys will not throw an error if they do not exist on the assertion object\n   *     chai.config.proxyExcludedKeys = ['then', 'inspect'];\n   *\n   * @param {Array}\n   * @public\n   */\n  proxyExcludedKeys: [\"then\", \"catch\", \"inspect\", \"toJSON\"],\n  /**\n   * ### config.deepEqual\n   *\n   * User configurable property, defines which a custom function to use for deepEqual\n   * comparisons.\n   * By default, the function used is the one from the `deep-eql` package without custom comparator.\n   *\n   *     // use a custom comparator\n   *     chai.config.deepEqual = (expected, actual) => {\n   *         return chai.util.eql(expected, actual, {\n   *             comparator: (expected, actual) => {\n   *                 // for non number comparison, use the default behavior\n   *                 if(typeof expected !== 'number') return null;\n   *                 // allow a difference of 10 between compared numbers\n   *                 return typeof actual === 'number' && Math.abs(actual - expected) < 10\n   *             }\n   *         })\n   *     };\n   *\n   * @param {Function}\n   * @public\n   */\n  deepEqual: null\n};\nfunction inspect2(obj, showHidden, depth, colors) {\n  let options = {\n    colors,\n    depth: typeof depth === \"undefined\" ? 2 : depth,\n    showHidden,\n    truncate: config.truncateThreshold ? config.truncateThreshold : Infinity\n  };\n  return inspect(obj, options);\n}\n__name(inspect2, \"inspect\");\nfunction objDisplay(obj) {\n  let str = inspect2(obj), type3 = Object.prototype.toString.call(obj);\n  if (config.truncateThreshold && str.length >= config.truncateThreshold) {\n    if (type3 === \"[object Function]\") {\n      return !obj.name || obj.name === \"\" ? \"[Function]\" : \"[Function: \" + obj.name + \"]\";\n    } else if (type3 === \"[object Array]\") {\n      return \"[ Array(\" + obj.length + \") ]\";\n    } else if (type3 === \"[object Object]\") {\n      let keys = Object.keys(obj), kstr = keys.length > 2 ? keys.splice(0, 2).join(\", \") + \", ...\" : keys.join(\", \");\n      return \"{ Object (\" + kstr + \") }\";\n    } else {\n      return str;\n    }\n  } else {\n    return str;\n  }\n}\n__name(objDisplay, \"objDisplay\");\nfunction getMessage2(obj, args) {\n  let negate = flag(obj, \"negate\");\n  let val = flag(obj, \"object\");\n  let expected = args[3];\n  let actual = getActual(obj, args);\n  let msg = negate ? args[2] : args[1];\n  let flagMsg = flag(obj, \"message\");\n  if (typeof msg === \"function\") msg = msg();\n  msg = msg || \"\";\n  msg = msg.replace(/#\\{this\\}/g, function() {\n    return objDisplay(val);\n  }).replace(/#\\{act\\}/g, function() {\n    return objDisplay(actual);\n  }).replace(/#\\{exp\\}/g, function() {\n    return objDisplay(expected);\n  });\n  return flagMsg ? flagMsg + \": \" + msg : msg;\n}\n__name(getMessage2, \"getMessage\");\nfunction transferFlags(assertion, object, includeAll) {\n  let flags = assertion.__flags || (assertion.__flags = /* @__PURE__ */ Object.create(null));\n  if (!object.__flags) {\n    object.__flags = /* @__PURE__ */ Object.create(null);\n  }\n  includeAll = arguments.length === 3 ? includeAll : true;\n  for (let flag3 in flags) {\n    if (includeAll || flag3 !== \"object\" && flag3 !== \"ssfi\" && flag3 !== \"lockSsfi\" && flag3 != \"message\") {\n      object.__flags[flag3] = flags[flag3];\n    }\n  }\n}\n__name(transferFlags, \"transferFlags\");\nfunction type2(obj) {\n  if (typeof obj === \"undefined\") {\n    return \"undefined\";\n  }\n  if (obj === null) {\n    return \"null\";\n  }\n  const stringTag = obj[Symbol.toStringTag];\n  if (typeof stringTag === \"string\") {\n    return stringTag;\n  }\n  const sliceStart = 8;\n  const sliceEnd = -1;\n  return Object.prototype.toString.call(obj).slice(sliceStart, sliceEnd);\n}\n__name(type2, \"type\");\nfunction FakeMap() {\n  this._key = \"chai/deep-eql__\" + Math.random() + Date.now();\n}\n__name(FakeMap, \"FakeMap\");\nFakeMap.prototype = {\n  get: /* @__PURE__ */ __name(function get(key) {\n    return key[this._key];\n  }, \"get\"),\n  set: /* @__PURE__ */ __name(function set(key, value) {\n    if (Object.isExtensible(key)) {\n      Object.defineProperty(key, this._key, {\n        value,\n        configurable: true\n      });\n    }\n  }, \"set\")\n};\nvar MemoizeMap = typeof WeakMap === \"function\" ? WeakMap : FakeMap;\nfunction memoizeCompare(leftHandOperand, rightHandOperand, memoizeMap) {\n  if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n    return null;\n  }\n  var leftHandMap = memoizeMap.get(leftHandOperand);\n  if (leftHandMap) {\n    var result = leftHandMap.get(rightHandOperand);\n    if (typeof result === \"boolean\") {\n      return result;\n    }\n  }\n  return null;\n}\n__name(memoizeCompare, \"memoizeCompare\");\nfunction memoizeSet(leftHandOperand, rightHandOperand, memoizeMap, result) {\n  if (!memoizeMap || isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n    return;\n  }\n  var leftHandMap = memoizeMap.get(leftHandOperand);\n  if (leftHandMap) {\n    leftHandMap.set(rightHandOperand, result);\n  } else {\n    leftHandMap = new MemoizeMap();\n    leftHandMap.set(rightHandOperand, result);\n    memoizeMap.set(leftHandOperand, leftHandMap);\n  }\n}\n__name(memoizeSet, \"memoizeSet\");\nvar deep_eql_default = deepEqual;\nfunction deepEqual(leftHandOperand, rightHandOperand, options) {\n  if (options && options.comparator) {\n    return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n  }\n  var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n  if (simpleResult !== null) {\n    return simpleResult;\n  }\n  return extensiveDeepEqual(leftHandOperand, rightHandOperand, options);\n}\n__name(deepEqual, \"deepEqual\");\nfunction simpleEqual(leftHandOperand, rightHandOperand) {\n  if (leftHandOperand === rightHandOperand) {\n    return leftHandOperand !== 0 || 1 / leftHandOperand === 1 / rightHandOperand;\n  }\n  if (leftHandOperand !== leftHandOperand && // eslint-disable-line no-self-compare\n  rightHandOperand !== rightHandOperand) {\n    return true;\n  }\n  if (isPrimitive(leftHandOperand) || isPrimitive(rightHandOperand)) {\n    return false;\n  }\n  return null;\n}\n__name(simpleEqual, \"simpleEqual\");\nfunction extensiveDeepEqual(leftHandOperand, rightHandOperand, options) {\n  options = options || {};\n  options.memoize = options.memoize === false ? false : options.memoize || new MemoizeMap();\n  var comparator = options && options.comparator;\n  var memoizeResultLeft = memoizeCompare(leftHandOperand, rightHandOperand, options.memoize);\n  if (memoizeResultLeft !== null) {\n    return memoizeResultLeft;\n  }\n  var memoizeResultRight = memoizeCompare(rightHandOperand, leftHandOperand, options.memoize);\n  if (memoizeResultRight !== null) {\n    return memoizeResultRight;\n  }\n  if (comparator) {\n    var comparatorResult = comparator(leftHandOperand, rightHandOperand);\n    if (comparatorResult === false || comparatorResult === true) {\n      memoizeSet(leftHandOperand, rightHandOperand, options.memoize, comparatorResult);\n      return comparatorResult;\n    }\n    var simpleResult = simpleEqual(leftHandOperand, rightHandOperand);\n    if (simpleResult !== null) {\n      return simpleResult;\n    }\n  }\n  var leftHandType = type2(leftHandOperand);\n  if (leftHandType !== type2(rightHandOperand)) {\n    memoizeSet(leftHandOperand, rightHandOperand, options.memoize, false);\n    return false;\n  }\n  memoizeSet(leftHandOperand, rightHandOperand, options.memoize, true);\n  var result = extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options);\n  memoizeSet(leftHandOperand, rightHandOperand, options.memoize, result);\n  return result;\n}\n__name(extensiveDeepEqual, \"extensiveDeepEqual\");\nfunction extensiveDeepEqualByType(leftHandOperand, rightHandOperand, leftHandType, options) {\n  switch (leftHandType) {\n    case \"String\":\n    case \"Number\":\n    case \"Boolean\":\n    case \"Date\":\n      return deepEqual(leftHandOperand.valueOf(), rightHandOperand.valueOf());\n    case \"Promise\":\n    case \"Symbol\":\n    case \"function\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return leftHandOperand === rightHandOperand;\n    case \"Error\":\n      return keysEqual(leftHandOperand, rightHandOperand, [\"name\", \"message\", \"code\"], options);\n    case \"Arguments\":\n    case \"Int8Array\":\n    case \"Uint8Array\":\n    case \"Uint8ClampedArray\":\n    case \"Int16Array\":\n    case \"Uint16Array\":\n    case \"Int32Array\":\n    case \"Uint32Array\":\n    case \"Float32Array\":\n    case \"Float64Array\":\n    case \"Array\":\n      return iterableEqual(leftHandOperand, rightHandOperand, options);\n    case \"RegExp\":\n      return regexpEqual(leftHandOperand, rightHandOperand);\n    case \"Generator\":\n      return generatorEqual(leftHandOperand, rightHandOperand, options);\n    case \"DataView\":\n      return iterableEqual(new Uint8Array(leftHandOperand.buffer), new Uint8Array(rightHandOperand.buffer), options);\n    case \"ArrayBuffer\":\n      return iterableEqual(new Uint8Array(leftHandOperand), new Uint8Array(rightHandOperand), options);\n    case \"Set\":\n      return entriesEqual(leftHandOperand, rightHandOperand, options);\n    case \"Map\":\n      return entriesEqual(leftHandOperand, rightHandOperand, options);\n    case \"Temporal.PlainDate\":\n    case \"Temporal.PlainTime\":\n    case \"Temporal.PlainDateTime\":\n    case \"Temporal.Instant\":\n    case \"Temporal.ZonedDateTime\":\n    case \"Temporal.PlainYearMonth\":\n    case \"Temporal.PlainMonthDay\":\n      return leftHandOperand.equals(rightHandOperand);\n    case \"Temporal.Duration\":\n      return leftHandOperand.total(\"nanoseconds\") === rightHandOperand.total(\"nanoseconds\");\n    case \"Temporal.TimeZone\":\n    case \"Temporal.Calendar\":\n      return leftHandOperand.toString() === rightHandOperand.toString();\n    default:\n      return objectEqual(leftHandOperand, rightHandOperand, options);\n  }\n}\n__name(extensiveDeepEqualByType, \"extensiveDeepEqualByType\");\nfunction regexpEqual(leftHandOperand, rightHandOperand) {\n  return leftHandOperand.toString() === rightHandOperand.toString();\n}\n__name(regexpEqual, \"regexpEqual\");\nfunction entriesEqual(leftHandOperand, rightHandOperand, options) {\n  try {\n    if (leftHandOperand.size !== rightHandOperand.size) {\n      return false;\n    }\n    if (leftHandOperand.size === 0) {\n      return true;\n    }\n  } catch (sizeError) {\n    return false;\n  }\n  var leftHandItems = [];\n  var rightHandItems = [];\n  leftHandOperand.forEach(/* @__PURE__ */ __name(function gatherEntries(key, value) {\n    leftHandItems.push([key, value]);\n  }, \"gatherEntries\"));\n  rightHandOperand.forEach(/* @__PURE__ */ __name(function gatherEntries(key, value) {\n    rightHandItems.push([key, value]);\n  }, \"gatherEntries\"));\n  return iterableEqual(leftHandItems.sort(), rightHandItems.sort(), options);\n}\n__name(entriesEqual, \"entriesEqual\");\nfunction iterableEqual(leftHandOperand, rightHandOperand, options) {\n  var length = leftHandOperand.length;\n  if (length !== rightHandOperand.length) {\n    return false;\n  }\n  if (length === 0) {\n    return true;\n  }\n  var index = -1;\n  while (++index < length) {\n    if (deepEqual(leftHandOperand[index], rightHandOperand[index], options) === false) {\n      return false;\n    }\n  }\n  return true;\n}\n__name(iterableEqual, \"iterableEqual\");\nfunction generatorEqual(leftHandOperand, rightHandOperand, options) {\n  return iterableEqual(getGeneratorEntries(leftHandOperand), getGeneratorEntries(rightHandOperand), options);\n}\n__name(generatorEqual, \"generatorEqual\");\nfunction hasIteratorFunction(target) {\n  return typeof Symbol !== \"undefined\" && typeof target === \"object\" && typeof Symbol.iterator !== \"undefined\" && typeof target[Symbol.iterator] === \"function\";\n}\n__name(hasIteratorFunction, \"hasIteratorFunction\");\nfunction getIteratorEntries(target) {\n  if (hasIteratorFunction(target)) {\n    try {\n      return getGeneratorEntries(target[Symbol.iterator]());\n    } catch (iteratorError) {\n      return [];\n    }\n  }\n  return [];\n}\n__name(getIteratorEntries, \"getIteratorEntries\");\nfunction getGeneratorEntries(generator) {\n  var generatorResult = generator.next();\n  var accumulator = [generatorResult.value];\n  while (generatorResult.done === false) {\n    generatorResult = generator.next();\n    accumulator.push(generatorResult.value);\n  }\n  return accumulator;\n}\n__name(getGeneratorEntries, \"getGeneratorEntries\");\nfunction getEnumerableKeys(target) {\n  var keys = [];\n  for (var key in target) {\n    keys.push(key);\n  }\n  return keys;\n}\n__name(getEnumerableKeys, \"getEnumerableKeys\");\nfunction getEnumerableSymbols(target) {\n  var keys = [];\n  var allKeys = Object.getOwnPropertySymbols(target);\n  for (var i = 0; i < allKeys.length; i += 1) {\n    var key = allKeys[i];\n    if (Object.getOwnPropertyDescriptor(target, key).enumerable) {\n      keys.push(key);\n    }\n  }\n  return keys;\n}\n__name(getEnumerableSymbols, \"getEnumerableSymbols\");\nfunction keysEqual(leftHandOperand, rightHandOperand, keys, options) {\n  var length = keys.length;\n  if (length === 0) {\n    return true;\n  }\n  for (var i = 0; i < length; i += 1) {\n    if (deepEqual(leftHandOperand[keys[i]], rightHandOperand[keys[i]], options) === false) {\n      return false;\n    }\n  }\n  return true;\n}\n__name(keysEqual, \"keysEqual\");\nfunction objectEqual(leftHandOperand, rightHandOperand, options) {\n  var leftHandKeys = getEnumerableKeys(leftHandOperand);\n  var rightHandKeys = getEnumerableKeys(rightHandOperand);\n  var leftHandSymbols = getEnumerableSymbols(leftHandOperand);\n  var rightHandSymbols = getEnumerableSymbols(rightHandOperand);\n  leftHandKeys = leftHandKeys.concat(leftHandSymbols);\n  rightHandKeys = rightHandKeys.concat(rightHandSymbols);\n  if (leftHandKeys.length && leftHandKeys.length === rightHandKeys.length) {\n    if (iterableEqual(mapSymbols(leftHandKeys).sort(), mapSymbols(rightHandKeys).sort()) === false) {\n      return false;\n    }\n    return keysEqual(leftHandOperand, rightHandOperand, leftHandKeys, options);\n  }\n  var leftHandEntries = getIteratorEntries(leftHandOperand);\n  var rightHandEntries = getIteratorEntries(rightHandOperand);\n  if (leftHandEntries.length && leftHandEntries.length === rightHandEntries.length) {\n    leftHandEntries.sort();\n    rightHandEntries.sort();\n    return iterableEqual(leftHandEntries, rightHandEntries, options);\n  }\n  if (leftHandKeys.length === 0 && leftHandEntries.length === 0 && rightHandKeys.length === 0 && rightHandEntries.length === 0) {\n    return true;\n  }\n  return false;\n}\n__name(objectEqual, \"objectEqual\");\nfunction isPrimitive(value) {\n  return value === null || typeof value !== \"object\";\n}\n__name(isPrimitive, \"isPrimitive\");\nfunction mapSymbols(arr) {\n  return arr.map(/* @__PURE__ */ __name(function mapSymbol(entry) {\n    if (typeof entry === \"symbol\") {\n      return entry.toString();\n    }\n    return entry;\n  }, \"mapSymbol\"));\n}\n__name(mapSymbols, \"mapSymbols\");\nfunction hasProperty(obj, name) {\n  if (typeof obj === \"undefined\" || obj === null) {\n    return false;\n  }\n  return name in Object(obj);\n}\n__name(hasProperty, \"hasProperty\");\nfunction parsePath(path2) {\n  const str = path2.replace(/([^\\\\])\\[/g, \"$1.[\");\n  const parts = str.match(/(\\\\\\.|[^.]+?)+/g);\n  return parts.map((value) => {\n    if (value === \"constructor\" || value === \"__proto__\" || value === \"prototype\") {\n      return {};\n    }\n    const regexp = /^\\[(\\d+)\\]$/;\n    const mArr = regexp.exec(value);\n    let parsed = null;\n    if (mArr) {\n      parsed = { i: parseFloat(mArr[1]) };\n    } else {\n      parsed = { p: value.replace(/\\\\([.[\\]])/g, \"$1\") };\n    }\n    return parsed;\n  });\n}\n__name(parsePath, \"parsePath\");\nfunction internalGetPathValue(obj, parsed, pathDepth) {\n  let temporaryValue = obj;\n  let res = null;\n  pathDepth = typeof pathDepth === \"undefined\" ? parsed.length : pathDepth;\n  for (let i = 0; i < pathDepth; i++) {\n    const part = parsed[i];\n    if (temporaryValue) {\n      if (typeof part.p === \"undefined\") {\n        temporaryValue = temporaryValue[part.i];\n      } else {\n        temporaryValue = temporaryValue[part.p];\n      }\n      if (i === pathDepth - 1) {\n        res = temporaryValue;\n      }\n    }\n  }\n  return res;\n}\n__name(internalGetPathValue, \"internalGetPathValue\");\nfunction getPathInfo(obj, path2) {\n  const parsed = parsePath(path2);\n  const last = parsed[parsed.length - 1];\n  const info = {\n    parent: parsed.length > 1 ? internalGetPathValue(obj, parsed, parsed.length - 1) : obj,\n    name: last.p || last.i,\n    value: internalGetPathValue(obj, parsed)\n  };\n  info.exists = hasProperty(info.parent, info.name);\n  return info;\n}\n__name(getPathInfo, \"getPathInfo\");\nvar _Assertion = class _Assertion2 {\n  /**\n   * Creates object for chaining.\n   * `Assertion` objects contain metadata in the form of flags. Three flags can\n   * be assigned during instantiation by passing arguments to this constructor:\n   *\n   * - `object`: This flag contains the target of the assertion. For example, in\n   * the assertion `expect(numKittens).to.equal(7);`, the `object` flag will\n   * contain `numKittens` so that the `equal` assertion can reference it when\n   * needed.\n   *\n   * - `message`: This flag contains an optional custom error message to be\n   * prepended to the error message that's generated by the assertion when it\n   * fails.\n   *\n   * - `ssfi`: This flag stands for \"start stack function indicator\". It\n   * contains a function reference that serves as the starting point for\n   * removing frames from the stack trace of the error that's created by the\n   * assertion when it fails. The goal is to provide a cleaner stack trace to\n   * end users by removing Chai's internal functions. Note that it only works\n   * in environments that support `Error.captureStackTrace`, and only when\n   * `Chai.config.includeStack` hasn't been set to `false`.\n   *\n   * - `lockSsfi`: This flag controls whether or not the given `ssfi` flag\n   * should retain its current value, even as assertions are chained off of\n   * this object. This is usually set to `true` when creating a new assertion\n   * from within another assertion. It's also temporarily set to `true` before\n   * an overwritten assertion gets called by the overwriting assertion.\n   *\n   * - `eql`: This flag contains the deepEqual function to be used by the assertion.\n   *\n   * @param {unknown} obj target of the assertion\n   * @param {string} [msg] (optional) custom error message\n   * @param {Function} [ssfi] (optional) starting point for removing stack frames\n   * @param {boolean} [lockSsfi] (optional) whether or not the ssfi flag is locked\n   */\n  constructor(obj, msg, ssfi, lockSsfi) {\n    __publicField(this, \"__flags\", {});\n    flag(this, \"ssfi\", ssfi || _Assertion2);\n    flag(this, \"lockSsfi\", lockSsfi);\n    flag(this, \"object\", obj);\n    flag(this, \"message\", msg);\n    flag(this, \"eql\", config.deepEqual || deep_eql_default);\n    return proxify(this);\n  }\n  /** @returns {boolean} */\n  static get includeStack() {\n    console.warn(\n      \"Assertion.includeStack is deprecated, use chai.config.includeStack instead.\"\n    );\n    return config.includeStack;\n  }\n  /** @param {boolean} value */\n  static set includeStack(value) {\n    console.warn(\n      \"Assertion.includeStack is deprecated, use chai.config.includeStack instead.\"\n    );\n    config.includeStack = value;\n  }\n  /** @returns {boolean} */\n  static get showDiff() {\n    console.warn(\n      \"Assertion.showDiff is deprecated, use chai.config.showDiff instead.\"\n    );\n    return config.showDiff;\n  }\n  /** @param {boolean} value */\n  static set showDiff(value) {\n    console.warn(\n      \"Assertion.showDiff is deprecated, use chai.config.showDiff instead.\"\n    );\n    config.showDiff = value;\n  }\n  /**\n   * @param {string} name\n   * @param {Function} fn\n   */\n  static addProperty(name, fn) {\n    addProperty(this.prototype, name, fn);\n  }\n  /**\n   * @param {string} name\n   * @param {Function} fn\n   */\n  static addMethod(name, fn) {\n    addMethod(this.prototype, name, fn);\n  }\n  /**\n   * @param {string} name\n   * @param {Function} fn\n   * @param {Function} chainingBehavior\n   */\n  static addChainableMethod(name, fn, chainingBehavior) {\n    addChainableMethod(this.prototype, name, fn, chainingBehavior);\n  }\n  /**\n   * @param {string} name\n   * @param {Function} fn\n   */\n  static overwriteProperty(name, fn) {\n    overwriteProperty(this.prototype, name, fn);\n  }\n  /**\n   * @param {string} name\n   * @param {Function} fn\n   */\n  static overwriteMethod(name, fn) {\n    overwriteMethod(this.prototype, name, fn);\n  }\n  /**\n   * @param {string} name\n   * @param {Function} fn\n   * @param {Function} chainingBehavior\n   */\n  static overwriteChainableMethod(name, fn, chainingBehavior) {\n    overwriteChainableMethod(this.prototype, name, fn, chainingBehavior);\n  }\n  /**\n   * ### .assert(expression, message, negateMessage, expected, actual, showDiff)\n   *\n   * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.\n   *\n   * @name assert\n   * @param {unknown} _expr to be tested\n   * @param {string | Function} msg or function that returns message to display if expression fails\n   * @param {string | Function} _negateMsg or function that returns negatedMessage to display if negated expression fails\n   * @param {unknown} expected value (remember to check for negation)\n   * @param {unknown} _actual (optional) will default to `this.obj`\n   * @param {boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails\n   * @returns {void}\n   */\n  assert(_expr, msg, _negateMsg, expected, _actual, showDiff) {\n    const ok = test(this, arguments);\n    if (false !== showDiff) showDiff = true;\n    if (void 0 === expected && void 0 === _actual) showDiff = false;\n    if (true !== config.showDiff) showDiff = false;\n    if (!ok) {\n      msg = getMessage2(this, arguments);\n      const actual = getActual(this, arguments);\n      const assertionErrorObjectProperties = {\n        actual,\n        expected,\n        showDiff\n      };\n      const operator = getOperator(this, arguments);\n      if (operator) {\n        assertionErrorObjectProperties.operator = operator;\n      }\n      throw new AssertionError(\n        msg,\n        assertionErrorObjectProperties,\n        // @ts-expect-error Not sure what to do about these types yet\n        config.includeStack ? this.assert : flag(this, \"ssfi\")\n      );\n    }\n  }\n  /**\n   * Quick reference to stored `actual` value for plugin developers.\n   *\n   * @returns {unknown}\n   */\n  get _obj() {\n    return flag(this, \"object\");\n  }\n  /**\n   * Quick reference to stored `actual` value for plugin developers.\n   *\n   * @param {unknown} val\n   */\n  set _obj(val) {\n    flag(this, \"object\", val);\n  }\n};\n__name(_Assertion, \"Assertion\");\nvar Assertion = _Assertion;\nvar events = new EventTarget();\nvar _PluginEvent = class _PluginEvent2 extends Event {\n  constructor(type3, name, fn) {\n    super(type3);\n    this.name = String(name);\n    this.fn = fn;\n  }\n};\n__name(_PluginEvent, \"PluginEvent\");\nvar PluginEvent = _PluginEvent;\nfunction isProxyEnabled() {\n  return config.useProxy && typeof Proxy !== \"undefined\" && typeof Reflect !== \"undefined\";\n}\n__name(isProxyEnabled, \"isProxyEnabled\");\nfunction addProperty(ctx, name, getter) {\n  getter = getter === void 0 ? function() {\n  } : getter;\n  Object.defineProperty(ctx, name, {\n    get: /* @__PURE__ */ __name(function propertyGetter() {\n      if (!isProxyEnabled() && !flag(this, \"lockSsfi\")) {\n        flag(this, \"ssfi\", propertyGetter);\n      }\n      let result = getter.call(this);\n      if (result !== void 0) return result;\n      let newAssertion = new Assertion();\n      transferFlags(this, newAssertion);\n      return newAssertion;\n    }, \"propertyGetter\"),\n    configurable: true\n  });\n  events.dispatchEvent(new PluginEvent(\"addProperty\", name, getter));\n}\n__name(addProperty, \"addProperty\");\nvar fnLengthDesc = Object.getOwnPropertyDescriptor(function() {\n}, \"length\");\nfunction addLengthGuard(fn, assertionName, isChainable) {\n  if (!fnLengthDesc.configurable) return fn;\n  Object.defineProperty(fn, \"length\", {\n    get: /* @__PURE__ */ __name(function() {\n      if (isChainable) {\n        throw Error(\n          \"Invalid Chai property: \" + assertionName + '.length. Due to a compatibility issue, \"length\" cannot directly follow \"' + assertionName + '\". Use \"' + assertionName + '.lengthOf\" instead.'\n        );\n      }\n      throw Error(\n        \"Invalid Chai property: \" + assertionName + '.length. See docs for proper usage of \"' + assertionName + '\".'\n      );\n    }, \"get\")\n  });\n  return fn;\n}\n__name(addLengthGuard, \"addLengthGuard\");\nfunction getProperties(object) {\n  let result = Object.getOwnPropertyNames(object);\n  function addProperty2(property) {\n    if (result.indexOf(property) === -1) {\n      result.push(property);\n    }\n  }\n  __name(addProperty2, \"addProperty\");\n  let proto = Object.getPrototypeOf(object);\n  while (proto !== null) {\n    Object.getOwnPropertyNames(proto).forEach(addProperty2);\n    proto = Object.getPrototypeOf(proto);\n  }\n  return result;\n}\n__name(getProperties, \"getProperties\");\nvar builtins = [\"__flags\", \"__methods\", \"_obj\", \"assert\"];\nfunction proxify(obj, nonChainableMethodName) {\n  if (!isProxyEnabled()) return obj;\n  return new Proxy(obj, {\n    get: /* @__PURE__ */ __name(function proxyGetter(target, property) {\n      if (typeof property === \"string\" && config.proxyExcludedKeys.indexOf(property) === -1 && !Reflect.has(target, property)) {\n        if (nonChainableMethodName) {\n          throw Error(\n            \"Invalid Chai property: \" + nonChainableMethodName + \".\" + property + '. See docs for proper usage of \"' + nonChainableMethodName + '\".'\n          );\n        }\n        let suggestion = null;\n        let suggestionDistance = 4;\n        getProperties(target).forEach(function(prop) {\n          if (\n            // we actually mean to check `Object.prototype` here\n            // eslint-disable-next-line no-prototype-builtins\n            !Object.prototype.hasOwnProperty(prop) && builtins.indexOf(prop) === -1\n          ) {\n            let dist = stringDistanceCapped(property, prop, suggestionDistance);\n            if (dist < suggestionDistance) {\n              suggestion = prop;\n              suggestionDistance = dist;\n            }\n          }\n        });\n        if (suggestion !== null) {\n          throw Error(\n            \"Invalid Chai property: \" + property + '. Did you mean \"' + suggestion + '\"?'\n          );\n        } else {\n          throw Error(\"Invalid Chai property: \" + property);\n        }\n      }\n      if (builtins.indexOf(property) === -1 && !flag(target, \"lockSsfi\")) {\n        flag(target, \"ssfi\", proxyGetter);\n      }\n      return Reflect.get(target, property);\n    }, \"proxyGetter\")\n  });\n}\n__name(proxify, \"proxify\");\nfunction stringDistanceCapped(strA, strB, cap) {\n  if (Math.abs(strA.length - strB.length) >= cap) {\n    return cap;\n  }\n  let memo = [];\n  for (let i = 0; i <= strA.length; i++) {\n    memo[i] = Array(strB.length + 1).fill(0);\n    memo[i][0] = i;\n  }\n  for (let j = 0; j < strB.length; j++) {\n    memo[0][j] = j;\n  }\n  for (let i = 1; i <= strA.length; i++) {\n    let ch = strA.charCodeAt(i - 1);\n    for (let j = 1; j <= strB.length; j++) {\n      if (Math.abs(i - j) >= cap) {\n        memo[i][j] = cap;\n        continue;\n      }\n      memo[i][j] = Math.min(\n        memo[i - 1][j] + 1,\n        memo[i][j - 1] + 1,\n        memo[i - 1][j - 1] + (ch === strB.charCodeAt(j - 1) ? 0 : 1)\n      );\n    }\n  }\n  return memo[strA.length][strB.length];\n}\n__name(stringDistanceCapped, \"stringDistanceCapped\");\nfunction addMethod(ctx, name, method) {\n  let methodWrapper = /* @__PURE__ */ __name(function() {\n    if (!flag(this, \"lockSsfi\")) {\n      flag(this, \"ssfi\", methodWrapper);\n    }\n    let result = method.apply(this, arguments);\n    if (result !== void 0) return result;\n    let newAssertion = new Assertion();\n    transferFlags(this, newAssertion);\n    return newAssertion;\n  }, \"methodWrapper\");\n  addLengthGuard(methodWrapper, name, false);\n  ctx[name] = proxify(methodWrapper, name);\n  events.dispatchEvent(new PluginEvent(\"addMethod\", name, method));\n}\n__name(addMethod, \"addMethod\");\nfunction overwriteProperty(ctx, name, getter) {\n  let _get = Object.getOwnPropertyDescriptor(ctx, name), _super = /* @__PURE__ */ __name(function() {\n  }, \"_super\");\n  if (_get && \"function\" === typeof _get.get) _super = _get.get;\n  Object.defineProperty(ctx, name, {\n    get: /* @__PURE__ */ __name(function overwritingPropertyGetter() {\n      if (!isProxyEnabled() && !flag(this, \"lockSsfi\")) {\n        flag(this, \"ssfi\", overwritingPropertyGetter);\n      }\n      let origLockSsfi = flag(this, \"lockSsfi\");\n      flag(this, \"lockSsfi\", true);\n      let result = getter(_super).call(this);\n      flag(this, \"lockSsfi\", origLockSsfi);\n      if (result !== void 0) {\n        return result;\n      }\n      let newAssertion = new Assertion();\n      transferFlags(this, newAssertion);\n      return newAssertion;\n    }, \"overwritingPropertyGetter\"),\n    configurable: true\n  });\n}\n__name(overwriteProperty, \"overwriteProperty\");\nfunction overwriteMethod(ctx, name, method) {\n  let _method = ctx[name], _super = /* @__PURE__ */ __name(function() {\n    throw new Error(name + \" is not a function\");\n  }, \"_super\");\n  if (_method && \"function\" === typeof _method) _super = _method;\n  let overwritingMethodWrapper = /* @__PURE__ */ __name(function() {\n    if (!flag(this, \"lockSsfi\")) {\n      flag(this, \"ssfi\", overwritingMethodWrapper);\n    }\n    let origLockSsfi = flag(this, \"lockSsfi\");\n    flag(this, \"lockSsfi\", true);\n    let result = method(_super).apply(this, arguments);\n    flag(this, \"lockSsfi\", origLockSsfi);\n    if (result !== void 0) {\n      return result;\n    }\n    let newAssertion = new Assertion();\n    transferFlags(this, newAssertion);\n    return newAssertion;\n  }, \"overwritingMethodWrapper\");\n  addLengthGuard(overwritingMethodWrapper, name, false);\n  ctx[name] = proxify(overwritingMethodWrapper, name);\n}\n__name(overwriteMethod, \"overwriteMethod\");\nvar canSetPrototype = typeof Object.setPrototypeOf === \"function\";\nvar testFn = /* @__PURE__ */ __name(function() {\n}, \"testFn\");\nvar excludeNames = Object.getOwnPropertyNames(testFn).filter(function(name) {\n  let propDesc = Object.getOwnPropertyDescriptor(testFn, name);\n  if (typeof propDesc !== \"object\") return true;\n  return !propDesc.configurable;\n});\nvar call = Function.prototype.call;\nvar apply = Function.prototype.apply;\nvar _PluginAddChainableMethodEvent = class _PluginAddChainableMethodEvent2 extends PluginEvent {\n  constructor(type3, name, fn, chainingBehavior) {\n    super(type3, name, fn);\n    this.chainingBehavior = chainingBehavior;\n  }\n};\n__name(_PluginAddChainableMethodEvent, \"PluginAddChainableMethodEvent\");\nvar PluginAddChainableMethodEvent = _PluginAddChainableMethodEvent;\nfunction addChainableMethod(ctx, name, method, chainingBehavior) {\n  if (typeof chainingBehavior !== \"function\") {\n    chainingBehavior = /* @__PURE__ */ __name(function() {\n    }, \"chainingBehavior\");\n  }\n  let chainableBehavior = {\n    method,\n    chainingBehavior\n  };\n  if (!ctx.__methods) {\n    ctx.__methods = {};\n  }\n  ctx.__methods[name] = chainableBehavior;\n  Object.defineProperty(ctx, name, {\n    get: /* @__PURE__ */ __name(function chainableMethodGetter() {\n      chainableBehavior.chainingBehavior.call(this);\n      let chainableMethodWrapper = /* @__PURE__ */ __name(function() {\n        if (!flag(this, \"lockSsfi\")) {\n          flag(this, \"ssfi\", chainableMethodWrapper);\n        }\n        let result = chainableBehavior.method.apply(this, arguments);\n        if (result !== void 0) {\n          return result;\n        }\n        let newAssertion = new Assertion();\n        transferFlags(this, newAssertion);\n        return newAssertion;\n      }, \"chainableMethodWrapper\");\n      addLengthGuard(chainableMethodWrapper, name, true);\n      if (canSetPrototype) {\n        let prototype = Object.create(this);\n        prototype.call = call;\n        prototype.apply = apply;\n        Object.setPrototypeOf(chainableMethodWrapper, prototype);\n      } else {\n        let asserterNames = Object.getOwnPropertyNames(ctx);\n        asserterNames.forEach(function(asserterName) {\n          if (excludeNames.indexOf(asserterName) !== -1) {\n            return;\n          }\n          let pd = Object.getOwnPropertyDescriptor(ctx, asserterName);\n          Object.defineProperty(chainableMethodWrapper, asserterName, pd);\n        });\n      }\n      transferFlags(this, chainableMethodWrapper);\n      return proxify(chainableMethodWrapper);\n    }, \"chainableMethodGetter\"),\n    configurable: true\n  });\n  events.dispatchEvent(\n    new PluginAddChainableMethodEvent(\n      \"addChainableMethod\",\n      name,\n      method,\n      chainingBehavior\n    )\n  );\n}\n__name(addChainableMethod, \"addChainableMethod\");\nfunction overwriteChainableMethod(ctx, name, method, chainingBehavior) {\n  let chainableBehavior = ctx.__methods[name];\n  let _chainingBehavior = chainableBehavior.chainingBehavior;\n  chainableBehavior.chainingBehavior = /* @__PURE__ */ __name(function overwritingChainableMethodGetter() {\n    let result = chainingBehavior(_chainingBehavior).call(this);\n    if (result !== void 0) {\n      return result;\n    }\n    let newAssertion = new Assertion();\n    transferFlags(this, newAssertion);\n    return newAssertion;\n  }, \"overwritingChainableMethodGetter\");\n  let _method = chainableBehavior.method;\n  chainableBehavior.method = /* @__PURE__ */ __name(function overwritingChainableMethodWrapper() {\n    let result = method(_method).apply(this, arguments);\n    if (result !== void 0) {\n      return result;\n    }\n    let newAssertion = new Assertion();\n    transferFlags(this, newAssertion);\n    return newAssertion;\n  }, \"overwritingChainableMethodWrapper\");\n}\n__name(overwriteChainableMethod, \"overwriteChainableMethod\");\nfunction compareByInspect(a, b) {\n  return inspect2(a) < inspect2(b) ? -1 : 1;\n}\n__name(compareByInspect, \"compareByInspect\");\nfunction getOwnEnumerablePropertySymbols(obj) {\n  if (typeof Object.getOwnPropertySymbols !== \"function\") return [];\n  return Object.getOwnPropertySymbols(obj).filter(function(sym) {\n    return Object.getOwnPropertyDescriptor(obj, sym).enumerable;\n  });\n}\n__name(getOwnEnumerablePropertySymbols, \"getOwnEnumerablePropertySymbols\");\nfunction getOwnEnumerableProperties(obj) {\n  return Object.keys(obj).concat(getOwnEnumerablePropertySymbols(obj));\n}\n__name(getOwnEnumerableProperties, \"getOwnEnumerableProperties\");\nvar isNaN22 = Number.isNaN;\nfunction isObjectType(obj) {\n  let objectType = type(obj);\n  let objectTypes = [\"Array\", \"Object\", \"Function\"];\n  return objectTypes.indexOf(objectType) !== -1;\n}\n__name(isObjectType, \"isObjectType\");\nfunction getOperator(obj, args) {\n  let operator = flag(obj, \"operator\");\n  let negate = flag(obj, \"negate\");\n  let expected = args[3];\n  let msg = negate ? args[2] : args[1];\n  if (operator) {\n    return operator;\n  }\n  if (typeof msg === \"function\") msg = msg();\n  msg = msg || \"\";\n  if (!msg) {\n    return void 0;\n  }\n  if (/\\shave\\s/.test(msg)) {\n    return void 0;\n  }\n  let isObject = isObjectType(expected);\n  if (/\\snot\\s/.test(msg)) {\n    return isObject ? \"notDeepStrictEqual\" : \"notStrictEqual\";\n  }\n  return isObject ? \"deepStrictEqual\" : \"strictEqual\";\n}\n__name(getOperator, \"getOperator\");\nfunction getName(fn) {\n  return fn.name;\n}\n__name(getName, \"getName\");\nfunction isRegExp2(obj) {\n  return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n}\n__name(isRegExp2, \"isRegExp\");\nfunction isNumeric(obj) {\n  return [\"Number\", \"BigInt\"].includes(type(obj));\n}\n__name(isNumeric, \"isNumeric\");\nvar { flag: flag2 } = utils_exports;\n[\n  \"to\",\n  \"be\",\n  \"been\",\n  \"is\",\n  \"and\",\n  \"has\",\n  \"have\",\n  \"with\",\n  \"that\",\n  \"which\",\n  \"at\",\n  \"of\",\n  \"same\",\n  \"but\",\n  \"does\",\n  \"still\",\n  \"also\"\n].forEach(function(chain) {\n  Assertion.addProperty(chain);\n});\nAssertion.addProperty(\"not\", function() {\n  flag2(this, \"negate\", true);\n});\nAssertion.addProperty(\"deep\", function() {\n  flag2(this, \"deep\", true);\n});\nAssertion.addProperty(\"nested\", function() {\n  flag2(this, \"nested\", true);\n});\nAssertion.addProperty(\"own\", function() {\n  flag2(this, \"own\", true);\n});\nAssertion.addProperty(\"ordered\", function() {\n  flag2(this, \"ordered\", true);\n});\nAssertion.addProperty(\"any\", function() {\n  flag2(this, \"any\", true);\n  flag2(this, \"all\", false);\n});\nAssertion.addProperty(\"all\", function() {\n  flag2(this, \"all\", true);\n  flag2(this, \"any\", false);\n});\nvar functionTypes = {\n  function: [\n    \"function\",\n    \"asyncfunction\",\n    \"generatorfunction\",\n    \"asyncgeneratorfunction\"\n  ],\n  asyncfunction: [\"asyncfunction\", \"asyncgeneratorfunction\"],\n  generatorfunction: [\"generatorfunction\", \"asyncgeneratorfunction\"],\n  asyncgeneratorfunction: [\"asyncgeneratorfunction\"]\n};\nfunction an(type3, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  type3 = type3.toLowerCase();\n  let obj = flag2(this, \"object\"), article = ~[\"a\", \"e\", \"i\", \"o\", \"u\"].indexOf(type3.charAt(0)) ? \"an \" : \"a \";\n  const detectedType = type(obj).toLowerCase();\n  if (functionTypes[\"function\"].includes(type3)) {\n    this.assert(\n      functionTypes[type3].includes(detectedType),\n      \"expected #{this} to be \" + article + type3,\n      \"expected #{this} not to be \" + article + type3\n    );\n  } else {\n    this.assert(\n      type3 === detectedType,\n      \"expected #{this} to be \" + article + type3,\n      \"expected #{this} not to be \" + article + type3\n    );\n  }\n}\n__name(an, \"an\");\nAssertion.addChainableMethod(\"an\", an);\nAssertion.addChainableMethod(\"a\", an);\nfunction SameValueZero(a, b) {\n  return isNaN22(a) && isNaN22(b) || a === b;\n}\n__name(SameValueZero, \"SameValueZero\");\nfunction includeChainingBehavior() {\n  flag2(this, \"contains\", true);\n}\n__name(includeChainingBehavior, \"includeChainingBehavior\");\nfunction include(val, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, \"message\"), negate = flag2(this, \"negate\"), ssfi = flag2(this, \"ssfi\"), isDeep = flag2(this, \"deep\"), descriptor = isDeep ? \"deep \" : \"\", isEql = isDeep ? flag2(this, \"eql\") : SameValueZero;\n  flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n  let included = false;\n  switch (objType) {\n    case \"string\":\n      included = obj.indexOf(val) !== -1;\n      break;\n    case \"weakset\":\n      if (isDeep) {\n        throw new AssertionError(\n          flagMsg + \"unable to use .deep.include with WeakSet\",\n          void 0,\n          ssfi\n        );\n      }\n      included = obj.has(val);\n      break;\n    case \"map\":\n      obj.forEach(function(item) {\n        included = included || isEql(item, val);\n      });\n      break;\n    case \"set\":\n      if (isDeep) {\n        obj.forEach(function(item) {\n          included = included || isEql(item, val);\n        });\n      } else {\n        included = obj.has(val);\n      }\n      break;\n    case \"array\":\n      if (isDeep) {\n        included = obj.some(function(item) {\n          return isEql(item, val);\n        });\n      } else {\n        included = obj.indexOf(val) !== -1;\n      }\n      break;\n    default: {\n      if (val !== Object(val)) {\n        throw new AssertionError(\n          flagMsg + \"the given combination of arguments (\" + objType + \" and \" + type(val).toLowerCase() + \") is invalid for this assertion. You can use an array, a map, an object, a set, a string, or a weakset instead of a \" + type(val).toLowerCase(),\n          void 0,\n          ssfi\n        );\n      }\n      let props = Object.keys(val);\n      let firstErr = null;\n      let numErrs = 0;\n      props.forEach(function(prop) {\n        let propAssertion = new Assertion(obj);\n        transferFlags(this, propAssertion, true);\n        flag2(propAssertion, \"lockSsfi\", true);\n        if (!negate || props.length === 1) {\n          propAssertion.property(prop, val[prop]);\n          return;\n        }\n        try {\n          propAssertion.property(prop, val[prop]);\n        } catch (err) {\n          if (!check_error_exports.compatibleConstructor(err, AssertionError)) {\n            throw err;\n          }\n          if (firstErr === null) firstErr = err;\n          numErrs++;\n        }\n      }, this);\n      if (negate && props.length > 1 && numErrs === props.length) {\n        throw firstErr;\n      }\n      return;\n    }\n  }\n  this.assert(\n    included,\n    \"expected #{this} to \" + descriptor + \"include \" + inspect2(val),\n    \"expected #{this} to not \" + descriptor + \"include \" + inspect2(val)\n  );\n}\n__name(include, \"include\");\nAssertion.addChainableMethod(\"include\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"contain\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"contains\", include, includeChainingBehavior);\nAssertion.addChainableMethod(\"includes\", include, includeChainingBehavior);\nAssertion.addProperty(\"ok\", function() {\n  this.assert(\n    flag2(this, \"object\"),\n    \"expected #{this} to be truthy\",\n    \"expected #{this} to be falsy\"\n  );\n});\nAssertion.addProperty(\"true\", function() {\n  this.assert(\n    true === flag2(this, \"object\"),\n    \"expected #{this} to be true\",\n    \"expected #{this} to be false\",\n    flag2(this, \"negate\") ? false : true\n  );\n});\nAssertion.addProperty(\"numeric\", function() {\n  const object = flag2(this, \"object\");\n  this.assert(\n    [\"Number\", \"BigInt\"].includes(type(object)),\n    \"expected #{this} to be numeric\",\n    \"expected #{this} to not be numeric\",\n    flag2(this, \"negate\") ? false : true\n  );\n});\nAssertion.addProperty(\"callable\", function() {\n  const val = flag2(this, \"object\");\n  const ssfi = flag2(this, \"ssfi\");\n  const message = flag2(this, \"message\");\n  const msg = message ? `${message}: ` : \"\";\n  const negate = flag2(this, \"negate\");\n  const assertionMessage = negate ? `${msg}expected ${inspect2(val)} not to be a callable function` : `${msg}expected ${inspect2(val)} to be a callable function`;\n  const isCallable = [\n    \"Function\",\n    \"AsyncFunction\",\n    \"GeneratorFunction\",\n    \"AsyncGeneratorFunction\"\n  ].includes(type(val));\n  if (isCallable && negate || !isCallable && !negate) {\n    throw new AssertionError(assertionMessage, void 0, ssfi);\n  }\n});\nAssertion.addProperty(\"false\", function() {\n  this.assert(\n    false === flag2(this, \"object\"),\n    \"expected #{this} to be false\",\n    \"expected #{this} to be true\",\n    flag2(this, \"negate\") ? true : false\n  );\n});\nAssertion.addProperty(\"null\", function() {\n  this.assert(\n    null === flag2(this, \"object\"),\n    \"expected #{this} to be null\",\n    \"expected #{this} not to be null\"\n  );\n});\nAssertion.addProperty(\"undefined\", function() {\n  this.assert(\n    void 0 === flag2(this, \"object\"),\n    \"expected #{this} to be undefined\",\n    \"expected #{this} not to be undefined\"\n  );\n});\nAssertion.addProperty(\"NaN\", function() {\n  this.assert(\n    isNaN22(flag2(this, \"object\")),\n    \"expected #{this} to be NaN\",\n    \"expected #{this} not to be NaN\"\n  );\n});\nfunction assertExist() {\n  let val = flag2(this, \"object\");\n  this.assert(\n    val !== null && val !== void 0,\n    \"expected #{this} to exist\",\n    \"expected #{this} to not exist\"\n  );\n}\n__name(assertExist, \"assertExist\");\nAssertion.addProperty(\"exist\", assertExist);\nAssertion.addProperty(\"exists\", assertExist);\nAssertion.addProperty(\"empty\", function() {\n  let val = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), flagMsg = flag2(this, \"message\"), itemsCount;\n  flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n  switch (type(val).toLowerCase()) {\n    case \"array\":\n    case \"string\":\n      itemsCount = val.length;\n      break;\n    case \"map\":\n    case \"set\":\n      itemsCount = val.size;\n      break;\n    case \"weakmap\":\n    case \"weakset\":\n      throw new AssertionError(\n        flagMsg + \".empty was passed a weak collection\",\n        void 0,\n        ssfi\n      );\n    case \"function\": {\n      const msg = flagMsg + \".empty was passed a function \" + getName(val);\n      throw new AssertionError(msg.trim(), void 0, ssfi);\n    }\n    default:\n      if (val !== Object(val)) {\n        throw new AssertionError(\n          flagMsg + \".empty was passed non-string primitive \" + inspect2(val),\n          void 0,\n          ssfi\n        );\n      }\n      itemsCount = Object.keys(val).length;\n  }\n  this.assert(\n    0 === itemsCount,\n    \"expected #{this} to be empty\",\n    \"expected #{this} not to be empty\"\n  );\n});\nfunction checkArguments() {\n  let obj = flag2(this, \"object\"), type3 = type(obj);\n  this.assert(\n    \"Arguments\" === type3,\n    \"expected #{this} to be arguments but got \" + type3,\n    \"expected #{this} to not be arguments\"\n  );\n}\n__name(checkArguments, \"checkArguments\");\nAssertion.addProperty(\"arguments\", checkArguments);\nAssertion.addProperty(\"Arguments\", checkArguments);\nfunction assertEqual(val, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\");\n  if (flag2(this, \"deep\")) {\n    let prevLockSsfi = flag2(this, \"lockSsfi\");\n    flag2(this, \"lockSsfi\", true);\n    this.eql(val);\n    flag2(this, \"lockSsfi\", prevLockSsfi);\n  } else {\n    this.assert(\n      val === obj,\n      \"expected #{this} to equal #{exp}\",\n      \"expected #{this} to not equal #{exp}\",\n      val,\n      this._obj,\n      true\n    );\n  }\n}\n__name(assertEqual, \"assertEqual\");\nAssertion.addMethod(\"equal\", assertEqual);\nAssertion.addMethod(\"equals\", assertEqual);\nAssertion.addMethod(\"eq\", assertEqual);\nfunction assertEql(obj, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let eql = flag2(this, \"eql\");\n  this.assert(\n    eql(obj, flag2(this, \"object\")),\n    \"expected #{this} to deeply equal #{exp}\",\n    \"expected #{this} to not deeply equal #{exp}\",\n    obj,\n    this._obj,\n    true\n  );\n}\n__name(assertEql, \"assertEql\");\nAssertion.addMethod(\"eql\", assertEql);\nAssertion.addMethod(\"eqls\", assertEql);\nfunction assertAbove(n, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase();\n  if (doLength && objType !== \"map\" && objType !== \"set\") {\n    new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n  }\n  if (!doLength && objType === \"date\" && nType !== \"date\") {\n    throw new AssertionError(\n      msgPrefix + \"the argument to above must be a date\",\n      void 0,\n      ssfi\n    );\n  } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n    throw new AssertionError(\n      msgPrefix + \"the argument to above must be a number\",\n      void 0,\n      ssfi\n    );\n  } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n    let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n    throw new AssertionError(\n      msgPrefix + \"expected \" + printObj + \" to be a number or a date\",\n      void 0,\n      ssfi\n    );\n  }\n  if (doLength) {\n    let descriptor = \"length\", itemsCount;\n    if (objType === \"map\" || objType === \"set\") {\n      descriptor = \"size\";\n      itemsCount = obj.size;\n    } else {\n      itemsCount = obj.length;\n    }\n    this.assert(\n      itemsCount > n,\n      \"expected #{this} to have a \" + descriptor + \" above #{exp} but got #{act}\",\n      \"expected #{this} to not have a \" + descriptor + \" above #{exp}\",\n      n,\n      itemsCount\n    );\n  } else {\n    this.assert(\n      obj > n,\n      \"expected #{this} to be above #{exp}\",\n      \"expected #{this} to be at most #{exp}\",\n      n\n    );\n  }\n}\n__name(assertAbove, \"assertAbove\");\nAssertion.addMethod(\"above\", assertAbove);\nAssertion.addMethod(\"gt\", assertAbove);\nAssertion.addMethod(\"greaterThan\", assertAbove);\nfunction assertLeast(n, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n  if (doLength && objType !== \"map\" && objType !== \"set\") {\n    new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n  }\n  if (!doLength && objType === \"date\" && nType !== \"date\") {\n    errorMessage = msgPrefix + \"the argument to least must be a date\";\n  } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n    errorMessage = msgPrefix + \"the argument to least must be a number\";\n  } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n    let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n    errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n  } else {\n    shouldThrow = false;\n  }\n  if (shouldThrow) {\n    throw new AssertionError(errorMessage, void 0, ssfi);\n  }\n  if (doLength) {\n    let descriptor = \"length\", itemsCount;\n    if (objType === \"map\" || objType === \"set\") {\n      descriptor = \"size\";\n      itemsCount = obj.size;\n    } else {\n      itemsCount = obj.length;\n    }\n    this.assert(\n      itemsCount >= n,\n      \"expected #{this} to have a \" + descriptor + \" at least #{exp} but got #{act}\",\n      \"expected #{this} to have a \" + descriptor + \" below #{exp}\",\n      n,\n      itemsCount\n    );\n  } else {\n    this.assert(\n      obj >= n,\n      \"expected #{this} to be at least #{exp}\",\n      \"expected #{this} to be below #{exp}\",\n      n\n    );\n  }\n}\n__name(assertLeast, \"assertLeast\");\nAssertion.addMethod(\"least\", assertLeast);\nAssertion.addMethod(\"gte\", assertLeast);\nAssertion.addMethod(\"greaterThanOrEqual\", assertLeast);\nfunction assertBelow(n, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n  if (doLength && objType !== \"map\" && objType !== \"set\") {\n    new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n  }\n  if (!doLength && objType === \"date\" && nType !== \"date\") {\n    errorMessage = msgPrefix + \"the argument to below must be a date\";\n  } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n    errorMessage = msgPrefix + \"the argument to below must be a number\";\n  } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n    let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n    errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n  } else {\n    shouldThrow = false;\n  }\n  if (shouldThrow) {\n    throw new AssertionError(errorMessage, void 0, ssfi);\n  }\n  if (doLength) {\n    let descriptor = \"length\", itemsCount;\n    if (objType === \"map\" || objType === \"set\") {\n      descriptor = \"size\";\n      itemsCount = obj.size;\n    } else {\n      itemsCount = obj.length;\n    }\n    this.assert(\n      itemsCount < n,\n      \"expected #{this} to have a \" + descriptor + \" below #{exp} but got #{act}\",\n      \"expected #{this} to not have a \" + descriptor + \" below #{exp}\",\n      n,\n      itemsCount\n    );\n  } else {\n    this.assert(\n      obj < n,\n      \"expected #{this} to be below #{exp}\",\n      \"expected #{this} to be at least #{exp}\",\n      n\n    );\n  }\n}\n__name(assertBelow, \"assertBelow\");\nAssertion.addMethod(\"below\", assertBelow);\nAssertion.addMethod(\"lt\", assertBelow);\nAssertion.addMethod(\"lessThan\", assertBelow);\nfunction assertMost(n, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), nType = type(n).toLowerCase(), errorMessage, shouldThrow = true;\n  if (doLength && objType !== \"map\" && objType !== \"set\") {\n    new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n  }\n  if (!doLength && objType === \"date\" && nType !== \"date\") {\n    errorMessage = msgPrefix + \"the argument to most must be a date\";\n  } else if (!isNumeric(n) && (doLength || isNumeric(obj))) {\n    errorMessage = msgPrefix + \"the argument to most must be a number\";\n  } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n    let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n    errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n  } else {\n    shouldThrow = false;\n  }\n  if (shouldThrow) {\n    throw new AssertionError(errorMessage, void 0, ssfi);\n  }\n  if (doLength) {\n    let descriptor = \"length\", itemsCount;\n    if (objType === \"map\" || objType === \"set\") {\n      descriptor = \"size\";\n      itemsCount = obj.size;\n    } else {\n      itemsCount = obj.length;\n    }\n    this.assert(\n      itemsCount <= n,\n      \"expected #{this} to have a \" + descriptor + \" at most #{exp} but got #{act}\",\n      \"expected #{this} to have a \" + descriptor + \" above #{exp}\",\n      n,\n      itemsCount\n    );\n  } else {\n    this.assert(\n      obj <= n,\n      \"expected #{this} to be at most #{exp}\",\n      \"expected #{this} to be above #{exp}\",\n      n\n    );\n  }\n}\n__name(assertMost, \"assertMost\");\nAssertion.addMethod(\"most\", assertMost);\nAssertion.addMethod(\"lte\", assertMost);\nAssertion.addMethod(\"lessThanOrEqual\", assertMost);\nAssertion.addMethod(\"within\", function(start, finish, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), doLength = flag2(this, \"doLength\"), flagMsg = flag2(this, \"message\"), msgPrefix = flagMsg ? flagMsg + \": \" : \"\", ssfi = flag2(this, \"ssfi\"), objType = type(obj).toLowerCase(), startType = type(start).toLowerCase(), finishType = type(finish).toLowerCase(), errorMessage, shouldThrow = true, range = startType === \"date\" && finishType === \"date\" ? start.toISOString() + \"..\" + finish.toISOString() : start + \"..\" + finish;\n  if (doLength && objType !== \"map\" && objType !== \"set\") {\n    new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n  }\n  if (!doLength && objType === \"date\" && (startType !== \"date\" || finishType !== \"date\")) {\n    errorMessage = msgPrefix + \"the arguments to within must be dates\";\n  } else if ((!isNumeric(start) || !isNumeric(finish)) && (doLength || isNumeric(obj))) {\n    errorMessage = msgPrefix + \"the arguments to within must be numbers\";\n  } else if (!doLength && objType !== \"date\" && !isNumeric(obj)) {\n    let printObj = objType === \"string\" ? \"'\" + obj + \"'\" : obj;\n    errorMessage = msgPrefix + \"expected \" + printObj + \" to be a number or a date\";\n  } else {\n    shouldThrow = false;\n  }\n  if (shouldThrow) {\n    throw new AssertionError(errorMessage, void 0, ssfi);\n  }\n  if (doLength) {\n    let descriptor = \"length\", itemsCount;\n    if (objType === \"map\" || objType === \"set\") {\n      descriptor = \"size\";\n      itemsCount = obj.size;\n    } else {\n      itemsCount = obj.length;\n    }\n    this.assert(\n      itemsCount >= start && itemsCount <= finish,\n      \"expected #{this} to have a \" + descriptor + \" within \" + range,\n      \"expected #{this} to not have a \" + descriptor + \" within \" + range\n    );\n  } else {\n    this.assert(\n      obj >= start && obj <= finish,\n      \"expected #{this} to be within \" + range,\n      \"expected #{this} to not be within \" + range\n    );\n  }\n});\nfunction assertInstanceOf(constructor, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let target = flag2(this, \"object\");\n  let ssfi = flag2(this, \"ssfi\");\n  let flagMsg = flag2(this, \"message\");\n  let isInstanceOf;\n  try {\n    isInstanceOf = target instanceof constructor;\n  } catch (err) {\n    if (err instanceof TypeError) {\n      flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n      throw new AssertionError(\n        flagMsg + \"The instanceof assertion needs a constructor but \" + type(constructor) + \" was given.\",\n        void 0,\n        ssfi\n      );\n    }\n    throw err;\n  }\n  let name = getName(constructor);\n  if (name == null) {\n    name = \"an unnamed constructor\";\n  }\n  this.assert(\n    isInstanceOf,\n    \"expected #{this} to be an instance of \" + name,\n    \"expected #{this} to not be an instance of \" + name\n  );\n}\n__name(assertInstanceOf, \"assertInstanceOf\");\nAssertion.addMethod(\"instanceof\", assertInstanceOf);\nAssertion.addMethod(\"instanceOf\", assertInstanceOf);\nfunction assertProperty(name, val, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let isNested = flag2(this, \"nested\"), isOwn = flag2(this, \"own\"), flagMsg = flag2(this, \"message\"), obj = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), nameType = typeof name;\n  flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n  if (isNested) {\n    if (nameType !== \"string\") {\n      throw new AssertionError(\n        flagMsg + \"the argument to property must be a string when using nested syntax\",\n        void 0,\n        ssfi\n      );\n    }\n  } else {\n    if (nameType !== \"string\" && nameType !== \"number\" && nameType !== \"symbol\") {\n      throw new AssertionError(\n        flagMsg + \"the argument to property must be a string, number, or symbol\",\n        void 0,\n        ssfi\n      );\n    }\n  }\n  if (isNested && isOwn) {\n    throw new AssertionError(\n      flagMsg + 'The \"nested\" and \"own\" flags cannot be combined.',\n      void 0,\n      ssfi\n    );\n  }\n  if (obj === null || obj === void 0) {\n    throw new AssertionError(\n      flagMsg + \"Target cannot be null or undefined.\",\n      void 0,\n      ssfi\n    );\n  }\n  let isDeep = flag2(this, \"deep\"), negate = flag2(this, \"negate\"), pathInfo = isNested ? getPathInfo(obj, name) : null, value = isNested ? pathInfo.value : obj[name], isEql = isDeep ? flag2(this, \"eql\") : (val1, val2) => val1 === val2;\n  let descriptor = \"\";\n  if (isDeep) descriptor += \"deep \";\n  if (isOwn) descriptor += \"own \";\n  if (isNested) descriptor += \"nested \";\n  descriptor += \"property \";\n  let hasProperty2;\n  if (isOwn) hasProperty2 = Object.prototype.hasOwnProperty.call(obj, name);\n  else if (isNested) hasProperty2 = pathInfo.exists;\n  else hasProperty2 = hasProperty(obj, name);\n  if (!negate || arguments.length === 1) {\n    this.assert(\n      hasProperty2,\n      \"expected #{this} to have \" + descriptor + inspect2(name),\n      \"expected #{this} to not have \" + descriptor + inspect2(name)\n    );\n  }\n  if (arguments.length > 1) {\n    this.assert(\n      hasProperty2 && isEql(val, value),\n      \"expected #{this} to have \" + descriptor + inspect2(name) + \" of #{exp}, but got #{act}\",\n      \"expected #{this} to not have \" + descriptor + inspect2(name) + \" of #{act}\",\n      val,\n      value\n    );\n  }\n  flag2(this, \"object\", value);\n}\n__name(assertProperty, \"assertProperty\");\nAssertion.addMethod(\"property\", assertProperty);\nfunction assertOwnProperty(_name, _value, _msg) {\n  flag2(this, \"own\", true);\n  assertProperty.apply(this, arguments);\n}\n__name(assertOwnProperty, \"assertOwnProperty\");\nAssertion.addMethod(\"ownProperty\", assertOwnProperty);\nAssertion.addMethod(\"haveOwnProperty\", assertOwnProperty);\nfunction assertOwnPropertyDescriptor(name, descriptor, msg) {\n  if (typeof descriptor === \"string\") {\n    msg = descriptor;\n    descriptor = null;\n  }\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\");\n  let actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name);\n  let eql = flag2(this, \"eql\");\n  if (actualDescriptor && descriptor) {\n    this.assert(\n      eql(descriptor, actualDescriptor),\n      \"expected the own property descriptor for \" + inspect2(name) + \" on #{this} to match \" + inspect2(descriptor) + \", got \" + inspect2(actualDescriptor),\n      \"expected the own property descriptor for \" + inspect2(name) + \" on #{this} to not match \" + inspect2(descriptor),\n      descriptor,\n      actualDescriptor,\n      true\n    );\n  } else {\n    this.assert(\n      actualDescriptor,\n      \"expected #{this} to have an own property descriptor for \" + inspect2(name),\n      \"expected #{this} to not have an own property descriptor for \" + inspect2(name)\n    );\n  }\n  flag2(this, \"object\", actualDescriptor);\n}\n__name(assertOwnPropertyDescriptor, \"assertOwnPropertyDescriptor\");\nAssertion.addMethod(\"ownPropertyDescriptor\", assertOwnPropertyDescriptor);\nAssertion.addMethod(\"haveOwnPropertyDescriptor\", assertOwnPropertyDescriptor);\nfunction assertLengthChain() {\n  flag2(this, \"doLength\", true);\n}\n__name(assertLengthChain, \"assertLengthChain\");\nfunction assertLength(n, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), objType = type(obj).toLowerCase(), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\"), descriptor = \"length\", itemsCount;\n  switch (objType) {\n    case \"map\":\n    case \"set\":\n      descriptor = \"size\";\n      itemsCount = obj.size;\n      break;\n    default:\n      new Assertion(obj, flagMsg, ssfi, true).to.have.property(\"length\");\n      itemsCount = obj.length;\n  }\n  this.assert(\n    itemsCount == n,\n    \"expected #{this} to have a \" + descriptor + \" of #{exp} but got #{act}\",\n    \"expected #{this} to not have a \" + descriptor + \" of #{act}\",\n    n,\n    itemsCount\n  );\n}\n__name(assertLength, \"assertLength\");\nAssertion.addChainableMethod(\"length\", assertLength, assertLengthChain);\nAssertion.addChainableMethod(\"lengthOf\", assertLength, assertLengthChain);\nfunction assertMatch(re, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\");\n  this.assert(\n    re.exec(obj),\n    \"expected #{this} to match \" + re,\n    \"expected #{this} not to match \" + re\n  );\n}\n__name(assertMatch, \"assertMatch\");\nAssertion.addMethod(\"match\", assertMatch);\nAssertion.addMethod(\"matches\", assertMatch);\nAssertion.addMethod(\"string\", function(str, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n  new Assertion(obj, flagMsg, ssfi, true).is.a(\"string\");\n  this.assert(\n    ~obj.indexOf(str),\n    \"expected #{this} to contain \" + inspect2(str),\n    \"expected #{this} to not contain \" + inspect2(str)\n  );\n});\nfunction assertKeys(keys) {\n  let obj = flag2(this, \"object\"), objType = type(obj), keysType = type(keys), ssfi = flag2(this, \"ssfi\"), isDeep = flag2(this, \"deep\"), str, deepStr = \"\", actual, ok = true, flagMsg = flag2(this, \"message\");\n  flagMsg = flagMsg ? flagMsg + \": \" : \"\";\n  let mixedArgsMsg = flagMsg + \"when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments\";\n  if (objType === \"Map\" || objType === \"Set\") {\n    deepStr = isDeep ? \"deeply \" : \"\";\n    actual = [];\n    obj.forEach(function(val, key) {\n      actual.push(key);\n    });\n    if (keysType !== \"Array\") {\n      keys = Array.prototype.slice.call(arguments);\n    }\n  } else {\n    actual = getOwnEnumerableProperties(obj);\n    switch (keysType) {\n      case \"Array\":\n        if (arguments.length > 1) {\n          throw new AssertionError(mixedArgsMsg, void 0, ssfi);\n        }\n        break;\n      case \"Object\":\n        if (arguments.length > 1) {\n          throw new AssertionError(mixedArgsMsg, void 0, ssfi);\n        }\n        keys = Object.keys(keys);\n        break;\n      default:\n        keys = Array.prototype.slice.call(arguments);\n    }\n    keys = keys.map(function(val) {\n      return typeof val === \"symbol\" ? val : String(val);\n    });\n  }\n  if (!keys.length) {\n    throw new AssertionError(flagMsg + \"keys required\", void 0, ssfi);\n  }\n  let len = keys.length, any = flag2(this, \"any\"), all = flag2(this, \"all\"), expected = keys, isEql = isDeep ? flag2(this, \"eql\") : (val1, val2) => val1 === val2;\n  if (!any && !all) {\n    all = true;\n  }\n  if (any) {\n    ok = expected.some(function(expectedKey) {\n      return actual.some(function(actualKey) {\n        return isEql(expectedKey, actualKey);\n      });\n    });\n  }\n  if (all) {\n    ok = expected.every(function(expectedKey) {\n      return actual.some(function(actualKey) {\n        return isEql(expectedKey, actualKey);\n      });\n    });\n    if (!flag2(this, \"contains\")) {\n      ok = ok && keys.length == actual.length;\n    }\n  }\n  if (len > 1) {\n    keys = keys.map(function(key) {\n      return inspect2(key);\n    });\n    let last = keys.pop();\n    if (all) {\n      str = keys.join(\", \") + \", and \" + last;\n    }\n    if (any) {\n      str = keys.join(\", \") + \", or \" + last;\n    }\n  } else {\n    str = inspect2(keys[0]);\n  }\n  str = (len > 1 ? \"keys \" : \"key \") + str;\n  str = (flag2(this, \"contains\") ? \"contain \" : \"have \") + str;\n  this.assert(\n    ok,\n    \"expected #{this} to \" + deepStr + str,\n    \"expected #{this} to not \" + deepStr + str,\n    expected.slice(0).sort(compareByInspect),\n    actual.sort(compareByInspect),\n    true\n  );\n}\n__name(assertKeys, \"assertKeys\");\nAssertion.addMethod(\"keys\", assertKeys);\nAssertion.addMethod(\"key\", assertKeys);\nfunction assertThrows(errorLike, errMsgMatcher, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), ssfi = flag2(this, \"ssfi\"), flagMsg = flag2(this, \"message\"), negate = flag2(this, \"negate\") || false;\n  new Assertion(obj, flagMsg, ssfi, true).is.a(\"function\");\n  if (isRegExp2(errorLike) || typeof errorLike === \"string\") {\n    errMsgMatcher = errorLike;\n    errorLike = null;\n  }\n  let caughtErr;\n  let errorWasThrown = false;\n  try {\n    obj();\n  } catch (err) {\n    errorWasThrown = true;\n    caughtErr = err;\n  }\n  let everyArgIsUndefined = errorLike === void 0 && errMsgMatcher === void 0;\n  let everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n  let errorLikeFail = false;\n  let errMsgMatcherFail = false;\n  if (everyArgIsUndefined || !everyArgIsUndefined && !negate) {\n    let errorLikeString = \"an error\";\n    if (errorLike instanceof Error) {\n      errorLikeString = \"#{exp}\";\n    } else if (errorLike) {\n      errorLikeString = check_error_exports.getConstructorName(errorLike);\n    }\n    let actual = caughtErr;\n    if (caughtErr instanceof Error) {\n      actual = caughtErr.toString();\n    } else if (typeof caughtErr === \"string\") {\n      actual = caughtErr;\n    } else if (caughtErr && (typeof caughtErr === \"object\" || typeof caughtErr === \"function\")) {\n      try {\n        actual = check_error_exports.getConstructorName(caughtErr);\n      } catch (_err) {\n      }\n    }\n    this.assert(\n      errorWasThrown,\n      \"expected #{this} to throw \" + errorLikeString,\n      \"expected #{this} to not throw an error but #{act} was thrown\",\n      errorLike && errorLike.toString(),\n      actual\n    );\n  }\n  if (errorLike && caughtErr) {\n    if (errorLike instanceof Error) {\n      let isCompatibleInstance = check_error_exports.compatibleInstance(\n        caughtErr,\n        errorLike\n      );\n      if (isCompatibleInstance === negate) {\n        if (everyArgIsDefined && negate) {\n          errorLikeFail = true;\n        } else {\n          this.assert(\n            negate,\n            \"expected #{this} to throw #{exp} but #{act} was thrown\",\n            \"expected #{this} to not throw #{exp}\" + (caughtErr && !negate ? \" but #{act} was thrown\" : \"\"),\n            errorLike.toString(),\n            caughtErr.toString()\n          );\n        }\n      }\n    }\n    let isCompatibleConstructor = check_error_exports.compatibleConstructor(\n      caughtErr,\n      errorLike\n    );\n    if (isCompatibleConstructor === negate) {\n      if (everyArgIsDefined && negate) {\n        errorLikeFail = true;\n      } else {\n        this.assert(\n          negate,\n          \"expected #{this} to throw #{exp} but #{act} was thrown\",\n          \"expected #{this} to not throw #{exp}\" + (caughtErr ? \" but #{act} was thrown\" : \"\"),\n          errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike),\n          caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr)\n        );\n      }\n    }\n  }\n  if (caughtErr && errMsgMatcher !== void 0 && errMsgMatcher !== null) {\n    let placeholder = \"including\";\n    if (isRegExp2(errMsgMatcher)) {\n      placeholder = \"matching\";\n    }\n    let isCompatibleMessage = check_error_exports.compatibleMessage(\n      caughtErr,\n      errMsgMatcher\n    );\n    if (isCompatibleMessage === negate) {\n      if (everyArgIsDefined && negate) {\n        errMsgMatcherFail = true;\n      } else {\n        this.assert(\n          negate,\n          \"expected #{this} to throw error \" + placeholder + \" #{exp} but got #{act}\",\n          \"expected #{this} to throw error not \" + placeholder + \" #{exp}\",\n          errMsgMatcher,\n          check_error_exports.getMessage(caughtErr)\n        );\n      }\n    }\n  }\n  if (errorLikeFail && errMsgMatcherFail) {\n    this.assert(\n      negate,\n      \"expected #{this} to throw #{exp} but #{act} was thrown\",\n      \"expected #{this} to not throw #{exp}\" + (caughtErr ? \" but #{act} was thrown\" : \"\"),\n      errorLike instanceof Error ? errorLike.toString() : errorLike && check_error_exports.getConstructorName(errorLike),\n      caughtErr instanceof Error ? caughtErr.toString() : caughtErr && check_error_exports.getConstructorName(caughtErr)\n    );\n  }\n  flag2(this, \"object\", caughtErr);\n}\n__name(assertThrows, \"assertThrows\");\nAssertion.addMethod(\"throw\", assertThrows);\nAssertion.addMethod(\"throws\", assertThrows);\nAssertion.addMethod(\"Throw\", assertThrows);\nfunction respondTo(method, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), itself = flag2(this, \"itself\"), context = \"function\" === typeof obj && !itself ? obj.prototype[method] : obj[method];\n  this.assert(\n    \"function\" === typeof context,\n    \"expected #{this} to respond to \" + inspect2(method),\n    \"expected #{this} to not respond to \" + inspect2(method)\n  );\n}\n__name(respondTo, \"respondTo\");\nAssertion.addMethod(\"respondTo\", respondTo);\nAssertion.addMethod(\"respondsTo\", respondTo);\nAssertion.addProperty(\"itself\", function() {\n  flag2(this, \"itself\", true);\n});\nfunction satisfy(matcher, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\");\n  let result = matcher(obj);\n  this.assert(\n    result,\n    \"expected #{this} to satisfy \" + objDisplay(matcher),\n    \"expected #{this} to not satisfy\" + objDisplay(matcher),\n    flag2(this, \"negate\") ? false : true,\n    result\n  );\n}\n__name(satisfy, \"satisfy\");\nAssertion.addMethod(\"satisfy\", satisfy);\nAssertion.addMethod(\"satisfies\", satisfy);\nfunction closeTo(expected, delta, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n  new Assertion(obj, flagMsg, ssfi, true).is.numeric;\n  let message = \"A `delta` value is required for `closeTo`\";\n  if (delta == void 0) {\n    throw new AssertionError(\n      flagMsg ? `${flagMsg}: ${message}` : message,\n      void 0,\n      ssfi\n    );\n  }\n  new Assertion(delta, flagMsg, ssfi, true).is.numeric;\n  message = \"A `expected` value is required for `closeTo`\";\n  if (expected == void 0) {\n    throw new AssertionError(\n      flagMsg ? `${flagMsg}: ${message}` : message,\n      void 0,\n      ssfi\n    );\n  }\n  new Assertion(expected, flagMsg, ssfi, true).is.numeric;\n  const abs = /* @__PURE__ */ __name((x) => x < 0 ? -x : x, \"abs\");\n  const strip = /* @__PURE__ */ __name((number) => parseFloat(parseFloat(number).toPrecision(12)), \"strip\");\n  this.assert(\n    strip(abs(obj - expected)) <= delta,\n    \"expected #{this} to be close to \" + expected + \" +/- \" + delta,\n    \"expected #{this} not to be close to \" + expected + \" +/- \" + delta\n  );\n}\n__name(closeTo, \"closeTo\");\nAssertion.addMethod(\"closeTo\", closeTo);\nAssertion.addMethod(\"approximately\", closeTo);\nfunction isSubsetOf(_subset, _superset, cmp, contains, ordered) {\n  let superset = Array.from(_superset);\n  let subset = Array.from(_subset);\n  if (!contains) {\n    if (subset.length !== superset.length) return false;\n    superset = superset.slice();\n  }\n  return subset.every(function(elem, idx) {\n    if (ordered) return cmp ? cmp(elem, superset[idx]) : elem === superset[idx];\n    if (!cmp) {\n      let matchIdx = superset.indexOf(elem);\n      if (matchIdx === -1) return false;\n      if (!contains) superset.splice(matchIdx, 1);\n      return true;\n    }\n    return superset.some(function(elem2, matchIdx) {\n      if (!cmp(elem, elem2)) return false;\n      if (!contains) superset.splice(matchIdx, 1);\n      return true;\n    });\n  });\n}\n__name(isSubsetOf, \"isSubsetOf\");\nAssertion.addMethod(\"members\", function(subset, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n  new Assertion(obj, flagMsg, ssfi, true).to.be.iterable;\n  new Assertion(subset, flagMsg, ssfi, true).to.be.iterable;\n  let contains = flag2(this, \"contains\");\n  let ordered = flag2(this, \"ordered\");\n  let subject, failMsg, failNegateMsg;\n  if (contains) {\n    subject = ordered ? \"an ordered superset\" : \"a superset\";\n    failMsg = \"expected #{this} to be \" + subject + \" of #{exp}\";\n    failNegateMsg = \"expected #{this} to not be \" + subject + \" of #{exp}\";\n  } else {\n    subject = ordered ? \"ordered members\" : \"members\";\n    failMsg = \"expected #{this} to have the same \" + subject + \" as #{exp}\";\n    failNegateMsg = \"expected #{this} to not have the same \" + subject + \" as #{exp}\";\n  }\n  let cmp = flag2(this, \"deep\") ? flag2(this, \"eql\") : void 0;\n  this.assert(\n    isSubsetOf(subset, obj, cmp, contains, ordered),\n    failMsg,\n    failNegateMsg,\n    subset,\n    obj,\n    true\n  );\n});\nAssertion.addProperty(\"iterable\", function(msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let obj = flag2(this, \"object\");\n  this.assert(\n    obj != void 0 && obj[Symbol.iterator],\n    \"expected #{this} to be an iterable\",\n    \"expected #{this} to not be an iterable\",\n    obj\n  );\n});\nfunction oneOf(list, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let expected = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\"), contains = flag2(this, \"contains\"), isDeep = flag2(this, \"deep\"), eql = flag2(this, \"eql\");\n  new Assertion(list, flagMsg, ssfi, true).to.be.an(\"array\");\n  if (contains) {\n    this.assert(\n      list.some(function(possibility) {\n        return expected.indexOf(possibility) > -1;\n      }),\n      \"expected #{this} to contain one of #{exp}\",\n      \"expected #{this} to not contain one of #{exp}\",\n      list,\n      expected\n    );\n  } else {\n    if (isDeep) {\n      this.assert(\n        list.some(function(possibility) {\n          return eql(expected, possibility);\n        }),\n        \"expected #{this} to deeply equal one of #{exp}\",\n        \"expected #{this} to deeply equal one of #{exp}\",\n        list,\n        expected\n      );\n    } else {\n      this.assert(\n        list.indexOf(expected) > -1,\n        \"expected #{this} to be one of #{exp}\",\n        \"expected #{this} to not be one of #{exp}\",\n        list,\n        expected\n      );\n    }\n  }\n}\n__name(oneOf, \"oneOf\");\nAssertion.addMethod(\"oneOf\", oneOf);\nfunction assertChanges(subject, prop, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n  new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n  let initial;\n  if (!prop) {\n    new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n    initial = subject();\n  } else {\n    new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n    initial = subject[prop];\n  }\n  fn();\n  let final = prop === void 0 || prop === null ? subject() : subject[prop];\n  let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n  flag2(this, \"deltaMsgObj\", msgObj);\n  flag2(this, \"initialDeltaValue\", initial);\n  flag2(this, \"finalDeltaValue\", final);\n  flag2(this, \"deltaBehavior\", \"change\");\n  flag2(this, \"realDelta\", final !== initial);\n  this.assert(\n    initial !== final,\n    \"expected \" + msgObj + \" to change\",\n    \"expected \" + msgObj + \" to not change\"\n  );\n}\n__name(assertChanges, \"assertChanges\");\nAssertion.addMethod(\"change\", assertChanges);\nAssertion.addMethod(\"changes\", assertChanges);\nfunction assertIncreases(subject, prop, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n  new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n  let initial;\n  if (!prop) {\n    new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n    initial = subject();\n  } else {\n    new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n    initial = subject[prop];\n  }\n  new Assertion(initial, flagMsg, ssfi, true).is.a(\"number\");\n  fn();\n  let final = prop === void 0 || prop === null ? subject() : subject[prop];\n  let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n  flag2(this, \"deltaMsgObj\", msgObj);\n  flag2(this, \"initialDeltaValue\", initial);\n  flag2(this, \"finalDeltaValue\", final);\n  flag2(this, \"deltaBehavior\", \"increase\");\n  flag2(this, \"realDelta\", final - initial);\n  this.assert(\n    final - initial > 0,\n    \"expected \" + msgObj + \" to increase\",\n    \"expected \" + msgObj + \" to not increase\"\n  );\n}\n__name(assertIncreases, \"assertIncreases\");\nAssertion.addMethod(\"increase\", assertIncreases);\nAssertion.addMethod(\"increases\", assertIncreases);\nfunction assertDecreases(subject, prop, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let fn = flag2(this, \"object\"), flagMsg = flag2(this, \"message\"), ssfi = flag2(this, \"ssfi\");\n  new Assertion(fn, flagMsg, ssfi, true).is.a(\"function\");\n  let initial;\n  if (!prop) {\n    new Assertion(subject, flagMsg, ssfi, true).is.a(\"function\");\n    initial = subject();\n  } else {\n    new Assertion(subject, flagMsg, ssfi, true).to.have.property(prop);\n    initial = subject[prop];\n  }\n  new Assertion(initial, flagMsg, ssfi, true).is.a(\"number\");\n  fn();\n  let final = prop === void 0 || prop === null ? subject() : subject[prop];\n  let msgObj = prop === void 0 || prop === null ? initial : \".\" + prop;\n  flag2(this, \"deltaMsgObj\", msgObj);\n  flag2(this, \"initialDeltaValue\", initial);\n  flag2(this, \"finalDeltaValue\", final);\n  flag2(this, \"deltaBehavior\", \"decrease\");\n  flag2(this, \"realDelta\", initial - final);\n  this.assert(\n    final - initial < 0,\n    \"expected \" + msgObj + \" to decrease\",\n    \"expected \" + msgObj + \" to not decrease\"\n  );\n}\n__name(assertDecreases, \"assertDecreases\");\nAssertion.addMethod(\"decrease\", assertDecreases);\nAssertion.addMethod(\"decreases\", assertDecreases);\nfunction assertDelta(delta, msg) {\n  if (msg) flag2(this, \"message\", msg);\n  let msgObj = flag2(this, \"deltaMsgObj\");\n  let initial = flag2(this, \"initialDeltaValue\");\n  let final = flag2(this, \"finalDeltaValue\");\n  let behavior = flag2(this, \"deltaBehavior\");\n  let realDelta = flag2(this, \"realDelta\");\n  let expression;\n  if (behavior === \"change\") {\n    expression = Math.abs(final - initial) === Math.abs(delta);\n  } else {\n    expression = realDelta === Math.abs(delta);\n  }\n  this.assert(\n    expression,\n    \"expected \" + msgObj + \" to \" + behavior + \" by \" + delta,\n    \"expected \" + msgObj + \" to not \" + behavior + \" by \" + delta\n  );\n}\n__name(assertDelta, \"assertDelta\");\nAssertion.addMethod(\"by\", assertDelta);\nAssertion.addProperty(\"extensible\", function() {\n  let obj = flag2(this, \"object\");\n  let isExtensible = obj === Object(obj) && Object.isExtensible(obj);\n  this.assert(\n    isExtensible,\n    \"expected #{this} to be extensible\",\n    \"expected #{this} to not be extensible\"\n  );\n});\nAssertion.addProperty(\"sealed\", function() {\n  let obj = flag2(this, \"object\");\n  let isSealed = obj === Object(obj) ? Object.isSealed(obj) : true;\n  this.assert(\n    isSealed,\n    \"expected #{this} to be sealed\",\n    \"expected #{this} to not be sealed\"\n  );\n});\nAssertion.addProperty(\"frozen\", function() {\n  let obj = flag2(this, \"object\");\n  let isFrozen2 = obj === Object(obj) ? Object.isFrozen(obj) : true;\n  this.assert(\n    isFrozen2,\n    \"expected #{this} to be frozen\",\n    \"expected #{this} to not be frozen\"\n  );\n});\nAssertion.addProperty(\"finite\", function(_msg) {\n  let obj = flag2(this, \"object\");\n  this.assert(\n    typeof obj === \"number\" && isFinite(obj),\n    \"expected #{this} to be a finite number\",\n    \"expected #{this} to not be a finite number\"\n  );\n});\nfunction compareSubset(expected, actual) {\n  if (expected === actual) {\n    return true;\n  }\n  if (typeof actual !== typeof expected) {\n    return false;\n  }\n  if (typeof expected !== \"object\" || expected === null) {\n    return expected === actual;\n  }\n  if (!actual) {\n    return false;\n  }\n  if (Array.isArray(expected)) {\n    if (!Array.isArray(actual)) {\n      return false;\n    }\n    return expected.every(function(exp) {\n      return actual.some(function(act) {\n        return compareSubset(exp, act);\n      });\n    });\n  }\n  if (expected instanceof Date) {\n    if (actual instanceof Date) {\n      return expected.getTime() === actual.getTime();\n    } else {\n      return false;\n    }\n  }\n  return Object.keys(expected).every(function(key) {\n    let expectedValue = expected[key];\n    let actualValue = actual[key];\n    if (typeof expectedValue === \"object\" && expectedValue !== null && actualValue !== null) {\n      return compareSubset(expectedValue, actualValue);\n    }\n    if (typeof expectedValue === \"function\") {\n      return expectedValue(actualValue);\n    }\n    return actualValue === expectedValue;\n  });\n}\n__name(compareSubset, \"compareSubset\");\nAssertion.addMethod(\"containSubset\", function(expected) {\n  const actual = flag(this, \"object\");\n  const showDiff = config.showDiff;\n  this.assert(\n    compareSubset(expected, actual),\n    \"expected #{act} to contain subset #{exp}\",\n    \"expected #{act} to not contain subset #{exp}\",\n    expected,\n    actual,\n    showDiff\n  );\n});\nfunction expect(val, message) {\n  return new Assertion(val, message);\n}\n__name(expect, \"expect\");\nexpect.fail = function(actual, expected, message, operator) {\n  if (arguments.length < 2) {\n    message = actual;\n    actual = void 0;\n  }\n  message = message || \"expect.fail()\";\n  throw new AssertionError(\n    message,\n    {\n      actual,\n      expected,\n      operator\n    },\n    expect.fail\n  );\n};\nvar should_exports = {};\n__export(should_exports, {\n  Should: () => Should,\n  should: () => should\n});\nfunction loadShould() {\n  function shouldGetter() {\n    if (this instanceof String || this instanceof Number || this instanceof Boolean || typeof Symbol === \"function\" && this instanceof Symbol || typeof BigInt === \"function\" && this instanceof BigInt) {\n      return new Assertion(this.valueOf(), null, shouldGetter);\n    }\n    return new Assertion(this, null, shouldGetter);\n  }\n  __name(shouldGetter, \"shouldGetter\");\n  function shouldSetter(value) {\n    Object.defineProperty(this, \"should\", {\n      value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  }\n  __name(shouldSetter, \"shouldSetter\");\n  Object.defineProperty(Object.prototype, \"should\", {\n    set: shouldSetter,\n    get: shouldGetter,\n    configurable: true\n  });\n  let should2 = {};\n  should2.fail = function(actual, expected, message, operator) {\n    if (arguments.length < 2) {\n      message = actual;\n      actual = void 0;\n    }\n    message = message || \"should.fail()\";\n    throw new AssertionError(\n      message,\n      {\n        actual,\n        expected,\n        operator\n      },\n      should2.fail\n    );\n  };\n  should2.equal = function(actual, expected, message) {\n    new Assertion(actual, message).to.equal(expected);\n  };\n  should2.Throw = function(fn, errt, errs, msg) {\n    new Assertion(fn, msg).to.Throw(errt, errs);\n  };\n  should2.exist = function(val, msg) {\n    new Assertion(val, msg).to.exist;\n  };\n  should2.not = {};\n  should2.not.equal = function(actual, expected, msg) {\n    new Assertion(actual, msg).to.not.equal(expected);\n  };\n  should2.not.Throw = function(fn, errt, errs, msg) {\n    new Assertion(fn, msg).to.not.Throw(errt, errs);\n  };\n  should2.not.exist = function(val, msg) {\n    new Assertion(val, msg).to.not.exist;\n  };\n  should2[\"throw\"] = should2[\"Throw\"];\n  should2.not[\"throw\"] = should2.not[\"Throw\"];\n  return should2;\n}\n__name(loadShould, \"loadShould\");\nvar should = loadShould;\nvar Should = loadShould;\nfunction assert(express, errmsg) {\n  let test22 = new Assertion(null, null, assert, true);\n  test22.assert(express, errmsg, \"[ negation message unavailable ]\");\n}\n__name(assert, \"assert\");\nassert.fail = function(actual, expected, message, operator) {\n  if (arguments.length < 2) {\n    message = actual;\n    actual = void 0;\n  }\n  message = message || \"assert.fail()\";\n  throw new AssertionError(\n    message,\n    {\n      actual,\n      expected,\n      operator\n    },\n    assert.fail\n  );\n};\nassert.isOk = function(val, msg) {\n  new Assertion(val, msg, assert.isOk, true).is.ok;\n};\nassert.isNotOk = function(val, msg) {\n  new Assertion(val, msg, assert.isNotOk, true).is.not.ok;\n};\nassert.equal = function(act, exp, msg) {\n  let test22 = new Assertion(act, msg, assert.equal, true);\n  test22.assert(\n    exp == flag(test22, \"object\"),\n    \"expected #{this} to equal #{exp}\",\n    \"expected #{this} to not equal #{act}\",\n    exp,\n    act,\n    true\n  );\n};\nassert.notEqual = function(act, exp, msg) {\n  let test22 = new Assertion(act, msg, assert.notEqual, true);\n  test22.assert(\n    exp != flag(test22, \"object\"),\n    \"expected #{this} to not equal #{exp}\",\n    \"expected #{this} to equal #{act}\",\n    exp,\n    act,\n    true\n  );\n};\nassert.strictEqual = function(act, exp, msg) {\n  new Assertion(act, msg, assert.strictEqual, true).to.equal(exp);\n};\nassert.notStrictEqual = function(act, exp, msg) {\n  new Assertion(act, msg, assert.notStrictEqual, true).to.not.equal(exp);\n};\nassert.deepEqual = assert.deepStrictEqual = function(act, exp, msg) {\n  new Assertion(act, msg, assert.deepEqual, true).to.eql(exp);\n};\nassert.notDeepEqual = function(act, exp, msg) {\n  new Assertion(act, msg, assert.notDeepEqual, true).to.not.eql(exp);\n};\nassert.isAbove = function(val, abv, msg) {\n  new Assertion(val, msg, assert.isAbove, true).to.be.above(abv);\n};\nassert.isAtLeast = function(val, atlst, msg) {\n  new Assertion(val, msg, assert.isAtLeast, true).to.be.least(atlst);\n};\nassert.isBelow = function(val, blw, msg) {\n  new Assertion(val, msg, assert.isBelow, true).to.be.below(blw);\n};\nassert.isAtMost = function(val, atmst, msg) {\n  new Assertion(val, msg, assert.isAtMost, true).to.be.most(atmst);\n};\nassert.isTrue = function(val, msg) {\n  new Assertion(val, msg, assert.isTrue, true).is[\"true\"];\n};\nassert.isNotTrue = function(val, msg) {\n  new Assertion(val, msg, assert.isNotTrue, true).to.not.equal(true);\n};\nassert.isFalse = function(val, msg) {\n  new Assertion(val, msg, assert.isFalse, true).is[\"false\"];\n};\nassert.isNotFalse = function(val, msg) {\n  new Assertion(val, msg, assert.isNotFalse, true).to.not.equal(false);\n};\nassert.isNull = function(val, msg) {\n  new Assertion(val, msg, assert.isNull, true).to.equal(null);\n};\nassert.isNotNull = function(val, msg) {\n  new Assertion(val, msg, assert.isNotNull, true).to.not.equal(null);\n};\nassert.isNaN = function(val, msg) {\n  new Assertion(val, msg, assert.isNaN, true).to.be.NaN;\n};\nassert.isNotNaN = function(value, message) {\n  new Assertion(value, message, assert.isNotNaN, true).not.to.be.NaN;\n};\nassert.exists = function(val, msg) {\n  new Assertion(val, msg, assert.exists, true).to.exist;\n};\nassert.notExists = function(val, msg) {\n  new Assertion(val, msg, assert.notExists, true).to.not.exist;\n};\nassert.isUndefined = function(val, msg) {\n  new Assertion(val, msg, assert.isUndefined, true).to.equal(void 0);\n};\nassert.isDefined = function(val, msg) {\n  new Assertion(val, msg, assert.isDefined, true).to.not.equal(void 0);\n};\nassert.isCallable = function(value, message) {\n  new Assertion(value, message, assert.isCallable, true).is.callable;\n};\nassert.isNotCallable = function(value, message) {\n  new Assertion(value, message, assert.isNotCallable, true).is.not.callable;\n};\nassert.isObject = function(val, msg) {\n  new Assertion(val, msg, assert.isObject, true).to.be.a(\"object\");\n};\nassert.isNotObject = function(val, msg) {\n  new Assertion(val, msg, assert.isNotObject, true).to.not.be.a(\"object\");\n};\nassert.isArray = function(val, msg) {\n  new Assertion(val, msg, assert.isArray, true).to.be.an(\"array\");\n};\nassert.isNotArray = function(val, msg) {\n  new Assertion(val, msg, assert.isNotArray, true).to.not.be.an(\"array\");\n};\nassert.isString = function(val, msg) {\n  new Assertion(val, msg, assert.isString, true).to.be.a(\"string\");\n};\nassert.isNotString = function(val, msg) {\n  new Assertion(val, msg, assert.isNotString, true).to.not.be.a(\"string\");\n};\nassert.isNumber = function(val, msg) {\n  new Assertion(val, msg, assert.isNumber, true).to.be.a(\"number\");\n};\nassert.isNotNumber = function(val, msg) {\n  new Assertion(val, msg, assert.isNotNumber, true).to.not.be.a(\"number\");\n};\nassert.isNumeric = function(val, msg) {\n  new Assertion(val, msg, assert.isNumeric, true).is.numeric;\n};\nassert.isNotNumeric = function(val, msg) {\n  new Assertion(val, msg, assert.isNotNumeric, true).is.not.numeric;\n};\nassert.isFinite = function(val, msg) {\n  new Assertion(val, msg, assert.isFinite, true).to.be.finite;\n};\nassert.isBoolean = function(val, msg) {\n  new Assertion(val, msg, assert.isBoolean, true).to.be.a(\"boolean\");\n};\nassert.isNotBoolean = function(val, msg) {\n  new Assertion(val, msg, assert.isNotBoolean, true).to.not.be.a(\"boolean\");\n};\nassert.typeOf = function(val, type3, msg) {\n  new Assertion(val, msg, assert.typeOf, true).to.be.a(type3);\n};\nassert.notTypeOf = function(value, type3, message) {\n  new Assertion(value, message, assert.notTypeOf, true).to.not.be.a(type3);\n};\nassert.instanceOf = function(val, type3, msg) {\n  new Assertion(val, msg, assert.instanceOf, true).to.be.instanceOf(type3);\n};\nassert.notInstanceOf = function(val, type3, msg) {\n  new Assertion(val, msg, assert.notInstanceOf, true).to.not.be.instanceOf(\n    type3\n  );\n};\nassert.include = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.include, true).include(inc);\n};\nassert.notInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.notInclude, true).not.include(inc);\n};\nassert.deepInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.deepInclude, true).deep.include(inc);\n};\nassert.notDeepInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.notDeepInclude, true).not.deep.include(inc);\n};\nassert.nestedInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.nestedInclude, true).nested.include(inc);\n};\nassert.notNestedInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.notNestedInclude, true).not.nested.include(\n    inc\n  );\n};\nassert.deepNestedInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.deepNestedInclude, true).deep.nested.include(\n    inc\n  );\n};\nassert.notDeepNestedInclude = function(exp, inc, msg) {\n  new Assertion(\n    exp,\n    msg,\n    assert.notDeepNestedInclude,\n    true\n  ).not.deep.nested.include(inc);\n};\nassert.ownInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.ownInclude, true).own.include(inc);\n};\nassert.notOwnInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.notOwnInclude, true).not.own.include(inc);\n};\nassert.deepOwnInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.deepOwnInclude, true).deep.own.include(inc);\n};\nassert.notDeepOwnInclude = function(exp, inc, msg) {\n  new Assertion(exp, msg, assert.notDeepOwnInclude, true).not.deep.own.include(\n    inc\n  );\n};\nassert.match = function(exp, re, msg) {\n  new Assertion(exp, msg, assert.match, true).to.match(re);\n};\nassert.notMatch = function(exp, re, msg) {\n  new Assertion(exp, msg, assert.notMatch, true).to.not.match(re);\n};\nassert.property = function(obj, prop, msg) {\n  new Assertion(obj, msg, assert.property, true).to.have.property(prop);\n};\nassert.notProperty = function(obj, prop, msg) {\n  new Assertion(obj, msg, assert.notProperty, true).to.not.have.property(prop);\n};\nassert.propertyVal = function(obj, prop, val, msg) {\n  new Assertion(obj, msg, assert.propertyVal, true).to.have.property(prop, val);\n};\nassert.notPropertyVal = function(obj, prop, val, msg) {\n  new Assertion(obj, msg, assert.notPropertyVal, true).to.not.have.property(\n    prop,\n    val\n  );\n};\nassert.deepPropertyVal = function(obj, prop, val, msg) {\n  new Assertion(obj, msg, assert.deepPropertyVal, true).to.have.deep.property(\n    prop,\n    val\n  );\n};\nassert.notDeepPropertyVal = function(obj, prop, val, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.notDeepPropertyVal,\n    true\n  ).to.not.have.deep.property(prop, val);\n};\nassert.ownProperty = function(obj, prop, msg) {\n  new Assertion(obj, msg, assert.ownProperty, true).to.have.own.property(prop);\n};\nassert.notOwnProperty = function(obj, prop, msg) {\n  new Assertion(obj, msg, assert.notOwnProperty, true).to.not.have.own.property(\n    prop\n  );\n};\nassert.ownPropertyVal = function(obj, prop, value, msg) {\n  new Assertion(obj, msg, assert.ownPropertyVal, true).to.have.own.property(\n    prop,\n    value\n  );\n};\nassert.notOwnPropertyVal = function(obj, prop, value, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.notOwnPropertyVal,\n    true\n  ).to.not.have.own.property(prop, value);\n};\nassert.deepOwnPropertyVal = function(obj, prop, value, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.deepOwnPropertyVal,\n    true\n  ).to.have.deep.own.property(prop, value);\n};\nassert.notDeepOwnPropertyVal = function(obj, prop, value, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.notDeepOwnPropertyVal,\n    true\n  ).to.not.have.deep.own.property(prop, value);\n};\nassert.nestedProperty = function(obj, prop, msg) {\n  new Assertion(obj, msg, assert.nestedProperty, true).to.have.nested.property(\n    prop\n  );\n};\nassert.notNestedProperty = function(obj, prop, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.notNestedProperty,\n    true\n  ).to.not.have.nested.property(prop);\n};\nassert.nestedPropertyVal = function(obj, prop, val, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.nestedPropertyVal,\n    true\n  ).to.have.nested.property(prop, val);\n};\nassert.notNestedPropertyVal = function(obj, prop, val, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.notNestedPropertyVal,\n    true\n  ).to.not.have.nested.property(prop, val);\n};\nassert.deepNestedPropertyVal = function(obj, prop, val, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.deepNestedPropertyVal,\n    true\n  ).to.have.deep.nested.property(prop, val);\n};\nassert.notDeepNestedPropertyVal = function(obj, prop, val, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.notDeepNestedPropertyVal,\n    true\n  ).to.not.have.deep.nested.property(prop, val);\n};\nassert.lengthOf = function(exp, len, msg) {\n  new Assertion(exp, msg, assert.lengthOf, true).to.have.lengthOf(len);\n};\nassert.hasAnyKeys = function(obj, keys, msg) {\n  new Assertion(obj, msg, assert.hasAnyKeys, true).to.have.any.keys(keys);\n};\nassert.hasAllKeys = function(obj, keys, msg) {\n  new Assertion(obj, msg, assert.hasAllKeys, true).to.have.all.keys(keys);\n};\nassert.containsAllKeys = function(obj, keys, msg) {\n  new Assertion(obj, msg, assert.containsAllKeys, true).to.contain.all.keys(\n    keys\n  );\n};\nassert.doesNotHaveAnyKeys = function(obj, keys, msg) {\n  new Assertion(obj, msg, assert.doesNotHaveAnyKeys, true).to.not.have.any.keys(\n    keys\n  );\n};\nassert.doesNotHaveAllKeys = function(obj, keys, msg) {\n  new Assertion(obj, msg, assert.doesNotHaveAllKeys, true).to.not.have.all.keys(\n    keys\n  );\n};\nassert.hasAnyDeepKeys = function(obj, keys, msg) {\n  new Assertion(obj, msg, assert.hasAnyDeepKeys, true).to.have.any.deep.keys(\n    keys\n  );\n};\nassert.hasAllDeepKeys = function(obj, keys, msg) {\n  new Assertion(obj, msg, assert.hasAllDeepKeys, true).to.have.all.deep.keys(\n    keys\n  );\n};\nassert.containsAllDeepKeys = function(obj, keys, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.containsAllDeepKeys,\n    true\n  ).to.contain.all.deep.keys(keys);\n};\nassert.doesNotHaveAnyDeepKeys = function(obj, keys, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.doesNotHaveAnyDeepKeys,\n    true\n  ).to.not.have.any.deep.keys(keys);\n};\nassert.doesNotHaveAllDeepKeys = function(obj, keys, msg) {\n  new Assertion(\n    obj,\n    msg,\n    assert.doesNotHaveAllDeepKeys,\n    true\n  ).to.not.have.all.deep.keys(keys);\n};\nassert.throws = function(fn, errorLike, errMsgMatcher, msg) {\n  if (\"string\" === typeof errorLike || errorLike instanceof RegExp) {\n    errMsgMatcher = errorLike;\n    errorLike = null;\n  }\n  let assertErr = new Assertion(fn, msg, assert.throws, true).to.throw(\n    errorLike,\n    errMsgMatcher\n  );\n  return flag(assertErr, \"object\");\n};\nassert.doesNotThrow = function(fn, errorLike, errMsgMatcher, message) {\n  if (\"string\" === typeof errorLike || errorLike instanceof RegExp) {\n    errMsgMatcher = errorLike;\n    errorLike = null;\n  }\n  new Assertion(fn, message, assert.doesNotThrow, true).to.not.throw(\n    errorLike,\n    errMsgMatcher\n  );\n};\nassert.operator = function(val, operator, val2, msg) {\n  let ok;\n  switch (operator) {\n    case \"==\":\n      ok = val == val2;\n      break;\n    case \"===\":\n      ok = val === val2;\n      break;\n    case \">\":\n      ok = val > val2;\n      break;\n    case \">=\":\n      ok = val >= val2;\n      break;\n    case \"<\":\n      ok = val < val2;\n      break;\n    case \"<=\":\n      ok = val <= val2;\n      break;\n    case \"!=\":\n      ok = val != val2;\n      break;\n    case \"!==\":\n      ok = val !== val2;\n      break;\n    default:\n      msg = msg ? msg + \": \" : msg;\n      throw new AssertionError(\n        msg + 'Invalid operator \"' + operator + '\"',\n        void 0,\n        assert.operator\n      );\n  }\n  let test22 = new Assertion(ok, msg, assert.operator, true);\n  test22.assert(\n    true === flag(test22, \"object\"),\n    \"expected \" + inspect2(val) + \" to be \" + operator + \" \" + inspect2(val2),\n    \"expected \" + inspect2(val) + \" to not be \" + operator + \" \" + inspect2(val2)\n  );\n};\nassert.closeTo = function(act, exp, delta, msg) {\n  new Assertion(act, msg, assert.closeTo, true).to.be.closeTo(exp, delta);\n};\nassert.approximately = function(act, exp, delta, msg) {\n  new Assertion(act, msg, assert.approximately, true).to.be.approximately(\n    exp,\n    delta\n  );\n};\nassert.sameMembers = function(set1, set22, msg) {\n  new Assertion(set1, msg, assert.sameMembers, true).to.have.same.members(set22);\n};\nassert.notSameMembers = function(set1, set22, msg) {\n  new Assertion(\n    set1,\n    msg,\n    assert.notSameMembers,\n    true\n  ).to.not.have.same.members(set22);\n};\nassert.sameDeepMembers = function(set1, set22, msg) {\n  new Assertion(\n    set1,\n    msg,\n    assert.sameDeepMembers,\n    true\n  ).to.have.same.deep.members(set22);\n};\nassert.notSameDeepMembers = function(set1, set22, msg) {\n  new Assertion(\n    set1,\n    msg,\n    assert.notSameDeepMembers,\n    true\n  ).to.not.have.same.deep.members(set22);\n};\nassert.sameOrderedMembers = function(set1, set22, msg) {\n  new Assertion(\n    set1,\n    msg,\n    assert.sameOrderedMembers,\n    true\n  ).to.have.same.ordered.members(set22);\n};\nassert.notSameOrderedMembers = function(set1, set22, msg) {\n  new Assertion(\n    set1,\n    msg,\n    assert.notSameOrderedMembers,\n    true\n  ).to.not.have.same.ordered.members(set22);\n};\nassert.sameDeepOrderedMembers = function(set1, set22, msg) {\n  new Assertion(\n    set1,\n    msg,\n    assert.sameDeepOrderedMembers,\n    true\n  ).to.have.same.deep.ordered.members(set22);\n};\nassert.notSameDeepOrderedMembers = function(set1, set22, msg) {\n  new Assertion(\n    set1,\n    msg,\n    assert.notSameDeepOrderedMembers,\n    true\n  ).to.not.have.same.deep.ordered.members(set22);\n};\nassert.includeMembers = function(superset, subset, msg) {\n  new Assertion(superset, msg, assert.includeMembers, true).to.include.members(\n    subset\n  );\n};\nassert.notIncludeMembers = function(superset, subset, msg) {\n  new Assertion(\n    superset,\n    msg,\n    assert.notIncludeMembers,\n    true\n  ).to.not.include.members(subset);\n};\nassert.includeDeepMembers = function(superset, subset, msg) {\n  new Assertion(\n    superset,\n    msg,\n    assert.includeDeepMembers,\n    true\n  ).to.include.deep.members(subset);\n};\nassert.notIncludeDeepMembers = function(superset, subset, msg) {\n  new Assertion(\n    superset,\n    msg,\n    assert.notIncludeDeepMembers,\n    true\n  ).to.not.include.deep.members(subset);\n};\nassert.includeOrderedMembers = function(superset, subset, msg) {\n  new Assertion(\n    superset,\n    msg,\n    assert.includeOrderedMembers,\n    true\n  ).to.include.ordered.members(subset);\n};\nassert.notIncludeOrderedMembers = function(superset, subset, msg) {\n  new Assertion(\n    superset,\n    msg,\n    assert.notIncludeOrderedMembers,\n    true\n  ).to.not.include.ordered.members(subset);\n};\nassert.includeDeepOrderedMembers = function(superset, subset, msg) {\n  new Assertion(\n    superset,\n    msg,\n    assert.includeDeepOrderedMembers,\n    true\n  ).to.include.deep.ordered.members(subset);\n};\nassert.notIncludeDeepOrderedMembers = function(superset, subset, msg) {\n  new Assertion(\n    superset,\n    msg,\n    assert.notIncludeDeepOrderedMembers,\n    true\n  ).to.not.include.deep.ordered.members(subset);\n};\nassert.oneOf = function(inList, list, msg) {\n  new Assertion(inList, msg, assert.oneOf, true).to.be.oneOf(list);\n};\nassert.isIterable = function(obj, msg) {\n  if (obj == void 0 || !obj[Symbol.iterator]) {\n    msg = msg ? `${msg} expected ${inspect2(obj)} to be an iterable` : `expected ${inspect2(obj)} to be an iterable`;\n    throw new AssertionError(msg, void 0, assert.isIterable);\n  }\n};\nassert.changes = function(fn, obj, prop, msg) {\n  if (arguments.length === 3 && typeof obj === \"function\") {\n    msg = prop;\n    prop = null;\n  }\n  new Assertion(fn, msg, assert.changes, true).to.change(obj, prop);\n};\nassert.changesBy = function(fn, obj, prop, delta, msg) {\n  if (arguments.length === 4 && typeof obj === \"function\") {\n    let tmpMsg = delta;\n    delta = prop;\n    msg = tmpMsg;\n  } else if (arguments.length === 3) {\n    delta = prop;\n    prop = null;\n  }\n  new Assertion(fn, msg, assert.changesBy, true).to.change(obj, prop).by(delta);\n};\nassert.doesNotChange = function(fn, obj, prop, msg) {\n  if (arguments.length === 3 && typeof obj === \"function\") {\n    msg = prop;\n    prop = null;\n  }\n  return new Assertion(fn, msg, assert.doesNotChange, true).to.not.change(\n    obj,\n    prop\n  );\n};\nassert.changesButNotBy = function(fn, obj, prop, delta, msg) {\n  if (arguments.length === 4 && typeof obj === \"function\") {\n    let tmpMsg = delta;\n    delta = prop;\n    msg = tmpMsg;\n  } else if (arguments.length === 3) {\n    delta = prop;\n    prop = null;\n  }\n  new Assertion(fn, msg, assert.changesButNotBy, true).to.change(obj, prop).but.not.by(delta);\n};\nassert.increases = function(fn, obj, prop, msg) {\n  if (arguments.length === 3 && typeof obj === \"function\") {\n    msg = prop;\n    prop = null;\n  }\n  return new Assertion(fn, msg, assert.increases, true).to.increase(obj, prop);\n};\nassert.increasesBy = function(fn, obj, prop, delta, msg) {\n  if (arguments.length === 4 && typeof obj === \"function\") {\n    let tmpMsg = delta;\n    delta = prop;\n    msg = tmpMsg;\n  } else if (arguments.length === 3) {\n    delta = prop;\n    prop = null;\n  }\n  new Assertion(fn, msg, assert.increasesBy, true).to.increase(obj, prop).by(delta);\n};\nassert.doesNotIncrease = function(fn, obj, prop, msg) {\n  if (arguments.length === 3 && typeof obj === \"function\") {\n    msg = prop;\n    prop = null;\n  }\n  return new Assertion(fn, msg, assert.doesNotIncrease, true).to.not.increase(\n    obj,\n    prop\n  );\n};\nassert.increasesButNotBy = function(fn, obj, prop, delta, msg) {\n  if (arguments.length === 4 && typeof obj === \"function\") {\n    let tmpMsg = delta;\n    delta = prop;\n    msg = tmpMsg;\n  } else if (arguments.length === 3) {\n    delta = prop;\n    prop = null;\n  }\n  new Assertion(fn, msg, assert.increasesButNotBy, true).to.increase(obj, prop).but.not.by(delta);\n};\nassert.decreases = function(fn, obj, prop, msg) {\n  if (arguments.length === 3 && typeof obj === \"function\") {\n    msg = prop;\n    prop = null;\n  }\n  return new Assertion(fn, msg, assert.decreases, true).to.decrease(obj, prop);\n};\nassert.decreasesBy = function(fn, obj, prop, delta, msg) {\n  if (arguments.length === 4 && typeof obj === \"function\") {\n    let tmpMsg = delta;\n    delta = prop;\n    msg = tmpMsg;\n  } else if (arguments.length === 3) {\n    delta = prop;\n    prop = null;\n  }\n  new Assertion(fn, msg, assert.decreasesBy, true).to.decrease(obj, prop).by(delta);\n};\nassert.doesNotDecrease = function(fn, obj, prop, msg) {\n  if (arguments.length === 3 && typeof obj === \"function\") {\n    msg = prop;\n    prop = null;\n  }\n  return new Assertion(fn, msg, assert.doesNotDecrease, true).to.not.decrease(\n    obj,\n    prop\n  );\n};\nassert.doesNotDecreaseBy = function(fn, obj, prop, delta, msg) {\n  if (arguments.length === 4 && typeof obj === \"function\") {\n    let tmpMsg = delta;\n    delta = prop;\n    msg = tmpMsg;\n  } else if (arguments.length === 3) {\n    delta = prop;\n    prop = null;\n  }\n  return new Assertion(fn, msg, assert.doesNotDecreaseBy, true).to.not.decrease(obj, prop).by(delta);\n};\nassert.decreasesButNotBy = function(fn, obj, prop, delta, msg) {\n  if (arguments.length === 4 && typeof obj === \"function\") {\n    let tmpMsg = delta;\n    delta = prop;\n    msg = tmpMsg;\n  } else if (arguments.length === 3) {\n    delta = prop;\n    prop = null;\n  }\n  new Assertion(fn, msg, assert.decreasesButNotBy, true).to.decrease(obj, prop).but.not.by(delta);\n};\nassert.ifError = function(val) {\n  if (val) {\n    throw val;\n  }\n};\nassert.isExtensible = function(obj, msg) {\n  new Assertion(obj, msg, assert.isExtensible, true).to.be.extensible;\n};\nassert.isNotExtensible = function(obj, msg) {\n  new Assertion(obj, msg, assert.isNotExtensible, true).to.not.be.extensible;\n};\nassert.isSealed = function(obj, msg) {\n  new Assertion(obj, msg, assert.isSealed, true).to.be.sealed;\n};\nassert.isNotSealed = function(obj, msg) {\n  new Assertion(obj, msg, assert.isNotSealed, true).to.not.be.sealed;\n};\nassert.isFrozen = function(obj, msg) {\n  new Assertion(obj, msg, assert.isFrozen, true).to.be.frozen;\n};\nassert.isNotFrozen = function(obj, msg) {\n  new Assertion(obj, msg, assert.isNotFrozen, true).to.not.be.frozen;\n};\nassert.isEmpty = function(val, msg) {\n  new Assertion(val, msg, assert.isEmpty, true).to.be.empty;\n};\nassert.isNotEmpty = function(val, msg) {\n  new Assertion(val, msg, assert.isNotEmpty, true).to.not.be.empty;\n};\nassert.containsSubset = function(val, exp, msg) {\n  new Assertion(val, msg).to.containSubset(exp);\n};\nassert.doesNotContainSubset = function(val, exp, msg) {\n  new Assertion(val, msg).to.not.containSubset(exp);\n};\nvar aliases = [\n  [\"isOk\", \"ok\"],\n  [\"isNotOk\", \"notOk\"],\n  [\"throws\", \"throw\"],\n  [\"throws\", \"Throw\"],\n  [\"isExtensible\", \"extensible\"],\n  [\"isNotExtensible\", \"notExtensible\"],\n  [\"isSealed\", \"sealed\"],\n  [\"isNotSealed\", \"notSealed\"],\n  [\"isFrozen\", \"frozen\"],\n  [\"isNotFrozen\", \"notFrozen\"],\n  [\"isEmpty\", \"empty\"],\n  [\"isNotEmpty\", \"notEmpty\"],\n  [\"isCallable\", \"isFunction\"],\n  [\"isNotCallable\", \"isNotFunction\"],\n  [\"containsSubset\", \"containSubset\"]\n];\nfor (const [name, as] of aliases) {\n  assert[as] = assert[name];\n}\nvar used = [];\nfunction use(fn) {\n  const exports = {\n    use,\n    AssertionError,\n    util: utils_exports,\n    config,\n    expect,\n    assert,\n    Assertion,\n    ...should_exports\n  };\n  if (!~used.indexOf(fn)) {\n    fn(exports, utils_exports);\n    used.push(fn);\n  }\n  return exports;\n}\n__name(use, \"use\");\n\n// src/chai-jest.js\nfunction jestMatchers(chai, utils) {\n  const A = chai.Assertion;\n  const m = (name, fn) => A.addMethod(name, fn);\n  m(\"toBe\", function(expected) {\n    this.assert(\n      Object.is(this._obj, expected),\n      \"expected #{this} to be #{exp}\",\n      \"expected #{this} not to be #{exp}\",\n      expected,\n      this._obj\n    );\n  });\n  m(\"toEqual\", function(expected) {\n    this.assert(\n      utils.eql(this._obj, expected),\n      \"expected #{this} to deeply equal #{exp}\",\n      \"expected #{this} not to deeply equal #{exp}\",\n      expected,\n      this._obj,\n      true\n    );\n  });\n  m(\"toBeTruthy\", function() {\n    this.assert(\n      Boolean(this._obj),\n      \"expected #{this} to be truthy\",\n      \"expected #{this} not to be truthy\"\n    );\n  });\n  m(\"toBeFalsy\", function() {\n    this.assert(!this._obj, \"expected #{this} to be falsy\", \"expected #{this} not to be falsy\");\n  });\n  m(\"toBeNull\", function() {\n    this.assert(\n      this._obj === null,\n      \"expected #{this} to be null\",\n      \"expected #{this} not to be null\"\n    );\n  });\n  m(\"toBeUndefined\", function() {\n    this.assert(\n      this._obj === void 0,\n      \"expected #{this} to be undefined\",\n      \"expected #{this} not to be undefined\"\n    );\n  });\n  m(\"toBeDefined\", function() {\n    this.assert(\n      this._obj !== void 0,\n      \"expected #{this} to be defined\",\n      \"expected #{this} to be undefined\"\n    );\n  });\n  m(\"toBeNaN\", function() {\n    this.assert(\n      Number.isNaN(this._obj),\n      \"expected #{this} to be NaN\",\n      \"expected #{this} not to be NaN\"\n    );\n  });\n  const compare = (name, op, word) => m(name, function(expected) {\n    this.assert(\n      op(this._obj, expected),\n      `expected #{this} to be ${word} #{exp}`,\n      `expected #{this} not to be ${word} #{exp}`,\n      expected\n    );\n  });\n  compare(\"toBeGreaterThan\", (a, b) => a > b, \"greater than\");\n  compare(\"toBeGreaterThanOrEqual\", (a, b) => a >= b, \"greater than or equal to\");\n  compare(\"toBeLessThan\", (a, b) => a < b, \"less than\");\n  compare(\"toBeLessThanOrEqual\", (a, b) => a <= b, \"less than or equal to\");\n  m(\"toBeCloseTo\", function(expected, numDigits = 2) {\n    const pass = Math.abs(expected - this._obj) < 10 ** -numDigits / 2;\n    this.assert(\n      pass,\n      `expected #{this} to be close to #{exp} (${numDigits} digits)`,\n      `expected #{this} not to be close to #{exp} (${numDigits} digits)`,\n      expected\n    );\n  });\n  m(\"toContain\", function(item) {\n    const obj = this._obj;\n    const ok = typeof obj === \"string\" ? obj.includes(item) : Array.from(obj).includes(item);\n    this.assert(\n      ok,\n      \"expected #{this} to contain #{exp}\",\n      \"expected #{this} not to contain #{exp}\",\n      item\n    );\n  });\n  m(\"toHaveLength\", function(length) {\n    const actual = this._obj == null ? void 0 : this._obj.length;\n    this.assert(\n      actual === length,\n      \"expected #{this} to have length #{exp}\",\n      \"expected #{this} not to have length #{exp}\",\n      length,\n      actual\n    );\n  });\n  m(\"toMatch\", function(expected) {\n    const obj = this._obj;\n    const ok = expected instanceof RegExp ? expected.test(obj) : String(obj).includes(expected);\n    this.assert(\n      ok,\n      \"expected #{this} to match #{exp}\",\n      \"expected #{this} not to match #{exp}\",\n      expected\n    );\n  });\n  m(\"toHaveProperty\", function(path2, ...rest) {\n    const keys = Array.isArray(path2) ? path2 : String(path2).split(\".\");\n    let cur = this._obj;\n    let found = true;\n    for (const k of keys) {\n      if (cur != null && k in Object(cur)) cur = cur[k];\n      else {\n        found = false;\n        break;\n      }\n    }\n    const pass = found && (rest.length === 0 || utils.eql(cur, rest[0]));\n    this.assert(\n      pass,\n      \"expected #{this} to have property #{exp}\",\n      \"expected #{this} not to have property #{exp}\",\n      path2\n    );\n  });\n  m(\"toBeInstanceOf\", function(ctor) {\n    this.assert(\n      this._obj instanceof ctor,\n      \"expected #{this} to be an instance of #{exp}\",\n      \"expected #{this} not to be an instance of #{exp}\",\n      ctor.name ?? ctor\n    );\n  });\n  m(\"toThrow\", function(expected) {\n    const a = new chai.Assertion(this._obj);\n    if (utils.flag(this, \"negate\")) {\n      expected === void 0 ? a.to.not.throw() : a.to.not.throw(expected);\n    } else {\n      expected === void 0 ? a.to.throw() : a.to.throw(expected);\n    }\n  });\n}\n\n// deps/chai.js\nuse(jestMatchers);\n\n// src/collection.js\nvar isPlainObject = (value) => {\n  if (value === null || typeof value !== \"object\") return false;\n  const proto = Object.getPrototypeOf(value);\n  return proto === Object.prototype || proto === null;\n};\nvar seqSize = (seq) => {\n  if (seq == null) return 0;\n  if (typeof seq.length === \"number\") return seq.length;\n  if (typeof seq.size === \"number\") return seq.size;\n  return isPlainObject(seq) ? Object.keys(seq).length : 0;\n};\nvar seqGet = (seq, key, dval = null) => {\n  if (seq == null) return dval;\n  if (seq instanceof Map) return seq.has(key) ? seq.get(key) : dval;\n  if (seq instanceof Set) return seq.has(key) ? key : dval;\n  if (Object.hasOwn(seq, key)) return seq[key];\n  if (typeof seq.get === \"function\") return seq.get(key, dval);\n  return dval;\n};\nvar isIndexedSeq = (seq) => Array.isArray(seq);\nvar isKeyedSeq = (seq) => seq instanceof Map || isPlainObject(seq);\nvar isSetSeq = (seq) => seq instanceof Set;\nfunction* seqEntries(seq) {\n  if (seq instanceof Map) yield* seq.entries();\n  else if (seq instanceof Set) for (const value of seq) yield [value, value];\n  else if (isPlainObject(seq)) yield* Object.entries(seq);\n  else if (Array.isArray(seq)) for (let i = 0; i < seq.length; i++) yield [i, seq[i]];\n}\n\n// node_modules/immer/dist/immer.mjs\nvar NOTHING = /* @__PURE__ */ Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = /* @__PURE__ */ Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = /* @__PURE__ */ Symbol.for(\"immer-state\");\nvar errors = true ? [\n  // All error codes, starting by 0:\n  function(plugin) {\n    return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n  },\n  function(thing) {\n    return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n  },\n  \"This object has been frozen and should not be mutated\",\n  function(data) {\n    return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n  },\n  \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n  \"Immer forbids circular references\",\n  \"The first or second argument to `produce` must be a function\",\n  \"The third argument to `produce` must be a function or undefined\",\n  \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n  \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n  function(thing) {\n    return `'current' expects a draft, got: ${thing}`;\n  },\n  \"Object.defineProperty() cannot be used on an Immer draft\",\n  \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n  \"Immer only supports deleting array indices\",\n  \"Immer only supports setting array indices and the 'length' property\",\n  function(thing) {\n    return `'original' expects a draft, got: ${thing}`;\n  }\n  // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n  // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n  if (true) {\n    const e = errors[error];\n    const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n    throw new Error(`[Immer] ${msg}`);\n  }\n  throw new Error(\n    `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n  );\n}\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n  return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n  if (!value)\n    return false;\n  return isPlainObject2(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nvar cachedCtorStrings = /* @__PURE__ */ new WeakMap();\nfunction isPlainObject2(value) {\n  if (!value || typeof value !== \"object\")\n    return false;\n  const proto = Object.getPrototypeOf(value);\n  if (proto === null || proto === Object.prototype)\n    return true;\n  const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n  if (Ctor === Object)\n    return true;\n  if (typeof Ctor !== \"function\")\n    return false;\n  let ctorString = cachedCtorStrings.get(Ctor);\n  if (ctorString === void 0) {\n    ctorString = Function.toString.call(Ctor);\n    cachedCtorStrings.set(Ctor, ctorString);\n  }\n  return ctorString === objectCtorString;\n}\nfunction each(obj, iter, strict = true) {\n  if (getArchtype(obj) === 0) {\n    const keys = strict ? Reflect.ownKeys(obj) : Object.keys(obj);\n    keys.forEach((key) => {\n      iter(key, obj[key], obj);\n    });\n  } else {\n    obj.forEach((entry, index) => iter(index, entry, obj));\n  }\n}\nfunction getArchtype(thing) {\n  const state = thing[DRAFT_STATE];\n  return state ? state.type_ : Array.isArray(thing) ? 1 : isMap(thing) ? 2 : isSet(thing) ? 3 : 0;\n}\nfunction has(thing, prop) {\n  return getArchtype(thing) === 2 ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction set2(thing, propOrOldValue, value) {\n  const t = getArchtype(thing);\n  if (t === 2)\n    thing.set(propOrOldValue, value);\n  else if (t === 3) {\n    thing.add(value);\n  } else\n    thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\nfunction isMap(target) {\n  return target instanceof Map;\n}\nfunction isSet(target) {\n  return target instanceof Set;\n}\nfunction latest(state) {\n  return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n  if (isMap(base)) {\n    return new Map(base);\n  }\n  if (isSet(base)) {\n    return new Set(base);\n  }\n  if (Array.isArray(base))\n    return Array.prototype.slice.call(base);\n  const isPlain = isPlainObject2(base);\n  if (strict === true || strict === \"class_only\" && !isPlain) {\n    const descriptors = Object.getOwnPropertyDescriptors(base);\n    delete descriptors[DRAFT_STATE];\n    let keys = Reflect.ownKeys(descriptors);\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      const desc = descriptors[key];\n      if (desc.writable === false) {\n        desc.writable = true;\n        desc.configurable = true;\n      }\n      if (desc.get || desc.set)\n        descriptors[key] = {\n          configurable: true,\n          writable: true,\n          // could live with !!desc.set as well here...\n          enumerable: desc.enumerable,\n          value: base[key]\n        };\n    }\n    return Object.create(getPrototypeOf(base), descriptors);\n  } else {\n    const proto = getPrototypeOf(base);\n    if (proto !== null && isPlain) {\n      return { ...base };\n    }\n    const obj = Object.create(proto);\n    return Object.assign(obj, base);\n  }\n}\nfunction freeze(obj, deep = false) {\n  if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n    return obj;\n  if (getArchtype(obj) > 1) {\n    Object.defineProperties(obj, {\n      set: dontMutateMethodOverride,\n      add: dontMutateMethodOverride,\n      clear: dontMutateMethodOverride,\n      delete: dontMutateMethodOverride\n    });\n  }\n  Object.freeze(obj);\n  if (deep)\n    Object.values(obj).forEach((value) => freeze(value, true));\n  return obj;\n}\nfunction dontMutateFrozenCollections() {\n  die(2);\n}\nvar dontMutateMethodOverride = {\n  value: dontMutateFrozenCollections\n};\nfunction isFrozen(obj) {\n  if (obj === null || typeof obj !== \"object\")\n    return true;\n  return Object.isFrozen(obj);\n}\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n  const plugin = plugins[pluginKey];\n  if (!plugin) {\n    die(0, pluginKey);\n  }\n  return plugin;\n}\nvar currentScope;\nfunction getCurrentScope() {\n  return currentScope;\n}\nfunction createScope(parent_, immer_) {\n  return {\n    drafts_: [],\n    parent_,\n    immer_,\n    // Whenever the modified draft contains a draft from another scope, we\n    // need to prevent auto-freezing so the unowned draft can be finalized.\n    canAutoFreeze_: true,\n    unfinalizedDrafts_: 0\n  };\n}\nfunction usePatchesInScope(scope, patchListener) {\n  if (patchListener) {\n    getPlugin(\"Patches\");\n    scope.patches_ = [];\n    scope.inversePatches_ = [];\n    scope.patchListener_ = patchListener;\n  }\n}\nfunction revokeScope(scope) {\n  leaveScope(scope);\n  scope.drafts_.forEach(revokeDraft);\n  scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n  if (scope === currentScope) {\n    currentScope = scope.parent_;\n  }\n}\nfunction enterScope(immer2) {\n  return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n  const state = draft[DRAFT_STATE];\n  if (state.type_ === 0 || state.type_ === 1)\n    state.revoke_();\n  else\n    state.revoked_ = true;\n}\nfunction processResult(result, scope) {\n  scope.unfinalizedDrafts_ = scope.drafts_.length;\n  const baseDraft = scope.drafts_[0];\n  const isReplaced = result !== void 0 && result !== baseDraft;\n  if (isReplaced) {\n    if (baseDraft[DRAFT_STATE].modified_) {\n      revokeScope(scope);\n      die(4);\n    }\n    if (isDraftable(result)) {\n      result = finalize(scope, result);\n      if (!scope.parent_)\n        maybeFreeze(scope, result);\n    }\n    if (scope.patches_) {\n      getPlugin(\"Patches\").generateReplacementPatches_(\n        baseDraft[DRAFT_STATE].base_,\n        result,\n        scope.patches_,\n        scope.inversePatches_\n      );\n    }\n  } else {\n    result = finalize(scope, baseDraft, []);\n  }\n  revokeScope(scope);\n  if (scope.patches_) {\n    scope.patchListener_(scope.patches_, scope.inversePatches_);\n  }\n  return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path2) {\n  if (isFrozen(value))\n    return value;\n  const useStrictIteration = rootScope.immer_.shouldUseStrictIteration();\n  const state = value[DRAFT_STATE];\n  if (!state) {\n    each(\n      value,\n      (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path2),\n      useStrictIteration\n    );\n    return value;\n  }\n  if (state.scope_ !== rootScope)\n    return value;\n  if (!state.modified_) {\n    maybeFreeze(rootScope, state.base_, true);\n    return state.base_;\n  }\n  if (!state.finalized_) {\n    state.finalized_ = true;\n    state.scope_.unfinalizedDrafts_--;\n    const result = state.copy_;\n    let resultEach = result;\n    let isSet2 = false;\n    if (state.type_ === 3) {\n      resultEach = new Set(result);\n      result.clear();\n      isSet2 = true;\n    }\n    each(\n      resultEach,\n      (key, childValue) => finalizeProperty(\n        rootScope,\n        state,\n        result,\n        key,\n        childValue,\n        path2,\n        isSet2\n      ),\n      useStrictIteration\n    );\n    maybeFreeze(rootScope, result, false);\n    if (path2 && rootScope.patches_) {\n      getPlugin(\"Patches\").generatePatches_(\n        state,\n        path2,\n        rootScope.patches_,\n        rootScope.inversePatches_\n      );\n    }\n  }\n  return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n  if (childValue == null) {\n    return;\n  }\n  if (typeof childValue !== \"object\" && !targetIsSet) {\n    return;\n  }\n  const childIsFrozen = isFrozen(childValue);\n  if (childIsFrozen && !targetIsSet) {\n    return;\n  }\n  if (childValue === targetObject)\n    die(5);\n  if (isDraft(childValue)) {\n    const path2 = rootPath && parentState && parentState.type_ !== 3 && // Set objects are atomic since they have no keys.\n    !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n    const res = finalize(rootScope, childValue, path2);\n    set2(targetObject, prop, res);\n    if (isDraft(res)) {\n      rootScope.canAutoFreeze_ = false;\n    } else\n      return;\n  } else if (targetIsSet) {\n    targetObject.add(childValue);\n  }\n  if (isDraftable(childValue) && !childIsFrozen) {\n    if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n      return;\n    }\n    if (parentState && parentState.base_ && parentState.base_[prop] === childValue && childIsFrozen) {\n      return;\n    }\n    finalize(rootScope, childValue);\n    if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && (isMap(targetObject) ? targetObject.has(prop) : Object.prototype.propertyIsEnumerable.call(targetObject, prop)))\n      maybeFreeze(rootScope, childValue);\n  }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n  if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n    freeze(value, deep);\n  }\n}\nfunction createProxyProxy(base, parent) {\n  const isArray = Array.isArray(base);\n  const state = {\n    type_: isArray ? 1 : 0,\n    // Track which produce call this is associated with.\n    scope_: parent ? parent.scope_ : getCurrentScope(),\n    // True for both shallow and deep changes.\n    modified_: false,\n    // Used during finalization.\n    finalized_: false,\n    // Track which properties have been assigned (true) or deleted (false).\n    assigned_: {},\n    // The parent draft state.\n    parent_: parent,\n    // The base state.\n    base_: base,\n    // The base proxy.\n    draft_: null,\n    // set below\n    // The base copy with any updated values.\n    copy_: null,\n    // Called by the `produce` function.\n    revoke_: null,\n    isManual_: false\n  };\n  let target = state;\n  let traps = objectTraps;\n  if (isArray) {\n    target = [state];\n    traps = arrayTraps;\n  }\n  const { revoke, proxy } = Proxy.revocable(target, traps);\n  state.draft_ = proxy;\n  state.revoke_ = revoke;\n  return proxy;\n}\nvar objectTraps = {\n  get(state, prop) {\n    if (prop === DRAFT_STATE)\n      return state;\n    const source = latest(state);\n    if (!has(source, prop)) {\n      return readPropFromProto(state, source, prop);\n    }\n    const value = source[prop];\n    if (state.finalized_ || !isDraftable(value)) {\n      return value;\n    }\n    if (value === peek(state.base_, prop)) {\n      prepareCopy(state);\n      return state.copy_[prop] = createProxy(value, state);\n    }\n    return value;\n  },\n  has(state, prop) {\n    return prop in latest(state);\n  },\n  ownKeys(state) {\n    return Reflect.ownKeys(latest(state));\n  },\n  set(state, prop, value) {\n    const desc = getDescriptorFromProto(latest(state), prop);\n    if (desc?.set) {\n      desc.set.call(state.draft_, value);\n      return true;\n    }\n    if (!state.modified_) {\n      const current2 = peek(latest(state), prop);\n      const currentState = current2?.[DRAFT_STATE];\n      if (currentState && currentState.base_ === value) {\n        state.copy_[prop] = value;\n        state.assigned_[prop] = false;\n        return true;\n      }\n      if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n        return true;\n      prepareCopy(state);\n      markChanged(state);\n    }\n    if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n    (value !== void 0 || prop in state.copy_) || // special case: NaN\n    Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n      return true;\n    state.copy_[prop] = value;\n    state.assigned_[prop] = true;\n    return true;\n  },\n  deleteProperty(state, prop) {\n    if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n      state.assigned_[prop] = false;\n      prepareCopy(state);\n      markChanged(state);\n    } else {\n      delete state.assigned_[prop];\n    }\n    if (state.copy_) {\n      delete state.copy_[prop];\n    }\n    return true;\n  },\n  // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n  // the same guarantee in ES5 mode.\n  getOwnPropertyDescriptor(state, prop) {\n    const owner = latest(state);\n    const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n    if (!desc)\n      return desc;\n    return {\n      writable: true,\n      configurable: state.type_ !== 1 || prop !== \"length\",\n      enumerable: desc.enumerable,\n      value: owner[prop]\n    };\n  },\n  defineProperty() {\n    die(11);\n  },\n  getPrototypeOf(state) {\n    return getPrototypeOf(state.base_);\n  },\n  setPrototypeOf() {\n    die(12);\n  }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n  arrayTraps[key] = function() {\n    arguments[0] = arguments[0][0];\n    return fn.apply(this, arguments);\n  };\n});\narrayTraps.deleteProperty = function(state, prop) {\n  if (isNaN(parseInt(prop)))\n    die(13);\n  return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n  if (prop !== \"length\" && isNaN(parseInt(prop)))\n    die(14);\n  return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n  const state = draft[DRAFT_STATE];\n  const source = state ? latest(state) : draft;\n  return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n  const desc = getDescriptorFromProto(source, prop);\n  return desc ? `value` in desc ? desc.value : (\n    // This is a very special case, if the prop is a getter defined by the\n    // prototype, we should invoke it with the draft as context!\n    desc.get?.call(state.draft_)\n  ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n  if (!(prop in source))\n    return void 0;\n  let proto = getPrototypeOf(source);\n  while (proto) {\n    const desc = Object.getOwnPropertyDescriptor(proto, prop);\n    if (desc)\n      return desc;\n    proto = getPrototypeOf(proto);\n  }\n  return void 0;\n}\nfunction markChanged(state) {\n  if (!state.modified_) {\n    state.modified_ = true;\n    if (state.parent_) {\n      markChanged(state.parent_);\n    }\n  }\n}\nfunction prepareCopy(state) {\n  if (!state.copy_) {\n    state.copy_ = shallowCopy(\n      state.base_,\n      state.scope_.immer_.useStrictShallowCopy_\n    );\n  }\n}\nvar Immer2 = class {\n  constructor(config2) {\n    this.autoFreeze_ = true;\n    this.useStrictShallowCopy_ = false;\n    this.useStrictIteration_ = true;\n    this.produce = (base, recipe, patchListener) => {\n      if (typeof base === \"function\" && typeof recipe !== \"function\") {\n        const defaultBase = recipe;\n        recipe = base;\n        const self = this;\n        return function curriedProduce(base2 = defaultBase, ...args) {\n          return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n        };\n      }\n      if (typeof recipe !== \"function\")\n        die(6);\n      if (patchListener !== void 0 && typeof patchListener !== \"function\")\n        die(7);\n      let result;\n      if (isDraftable(base)) {\n        const scope = enterScope(this);\n        const proxy = createProxy(base, void 0);\n        let hasError = true;\n        try {\n          result = recipe(proxy);\n          hasError = false;\n        } finally {\n          if (hasError)\n            revokeScope(scope);\n          else\n            leaveScope(scope);\n        }\n        usePatchesInScope(scope, patchListener);\n        return processResult(result, scope);\n      } else if (!base || typeof base !== \"object\") {\n        result = recipe(base);\n        if (result === void 0)\n          result = base;\n        if (result === NOTHING)\n          result = void 0;\n        if (this.autoFreeze_)\n          freeze(result, true);\n        if (patchListener) {\n          const p = [];\n          const ip = [];\n          getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n          patchListener(p, ip);\n        }\n        return result;\n      } else\n        die(1, base);\n    };\n    this.produceWithPatches = (base, recipe) => {\n      if (typeof base === \"function\") {\n        return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n      }\n      let patches, inversePatches;\n      const result = this.produce(base, recipe, (p, ip) => {\n        patches = p;\n        inversePatches = ip;\n      });\n      return [result, patches, inversePatches];\n    };\n    if (typeof config2?.autoFreeze === \"boolean\")\n      this.setAutoFreeze(config2.autoFreeze);\n    if (typeof config2?.useStrictShallowCopy === \"boolean\")\n      this.setUseStrictShallowCopy(config2.useStrictShallowCopy);\n    if (typeof config2?.useStrictIteration === \"boolean\")\n      this.setUseStrictIteration(config2.useStrictIteration);\n  }\n  createDraft(base) {\n    if (!isDraftable(base))\n      die(8);\n    if (isDraft(base))\n      base = current(base);\n    const scope = enterScope(this);\n    const proxy = createProxy(base, void 0);\n    proxy[DRAFT_STATE].isManual_ = true;\n    leaveScope(scope);\n    return proxy;\n  }\n  finishDraft(draft, patchListener) {\n    const state = draft && draft[DRAFT_STATE];\n    if (!state || !state.isManual_)\n      die(9);\n    const { scope_: scope } = state;\n    usePatchesInScope(scope, patchListener);\n    return processResult(void 0, scope);\n  }\n  /**\n   * Pass true to automatically freeze all copies created by Immer.\n   *\n   * By default, auto-freezing is enabled.\n   */\n  setAutoFreeze(value) {\n    this.autoFreeze_ = value;\n  }\n  /**\n   * Pass true to enable strict shallow copy.\n   *\n   * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n   */\n  setUseStrictShallowCopy(value) {\n    this.useStrictShallowCopy_ = value;\n  }\n  /**\n   * Pass false to use faster iteration that skips non-enumerable properties\n   * but still handles symbols for compatibility.\n   *\n   * By default, strict iteration is enabled (includes all own properties).\n   */\n  setUseStrictIteration(value) {\n    this.useStrictIteration_ = value;\n  }\n  shouldUseStrictIteration() {\n    return this.useStrictIteration_;\n  }\n  applyPatches(base, patches) {\n    let i;\n    for (i = patches.length - 1; i >= 0; i--) {\n      const patch = patches[i];\n      if (patch.path.length === 0 && patch.op === \"replace\") {\n        base = patch.value;\n        break;\n      }\n    }\n    if (i > -1) {\n      patches = patches.slice(i + 1);\n    }\n    const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n    if (isDraft(base)) {\n      return applyPatchesImpl(base, patches);\n    }\n    return this.produce(\n      base,\n      (draft) => applyPatchesImpl(draft, patches)\n    );\n  }\n};\nfunction createProxy(value, parent) {\n  const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n  const scope = parent ? parent.scope_ : getCurrentScope();\n  scope.drafts_.push(draft);\n  return draft;\n}\nfunction current(value) {\n  if (!isDraft(value))\n    die(10, value);\n  return currentImpl(value);\n}\nfunction currentImpl(value) {\n  if (!isDraftable(value) || isFrozen(value))\n    return value;\n  const state = value[DRAFT_STATE];\n  let copy;\n  let strict = true;\n  if (state) {\n    if (!state.modified_)\n      return state.base_;\n    state.finalized_ = true;\n    copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n    strict = state.scope_.immer_.shouldUseStrictIteration();\n  } else {\n    copy = shallowCopy(value, true);\n  }\n  each(\n    copy,\n    (key, childValue) => {\n      set2(copy, key, currentImpl(childValue));\n    },\n    strict\n  );\n  if (state) {\n    state.finalized_ = false;\n  }\n  return copy;\n}\nvar immer = new Immer2();\nvar produce = immer.produce;\n\n// src/path.js\nvar NONE = /* @__PURE__ */ Symbol(\"NONE\");\nvar writeKey = (value, key, next) => {\n  if (value instanceof Map) value.set(key, next);\n  else if (value instanceof Set) {\n    value.delete(key);\n    value.add(next);\n  } else value[key] = next;\n};\nvar writeSeqKey = (value, key, next) => !(value instanceof Map || value instanceof Set || Array.isArray(value)) && !Object.hasOwn(value, key) && typeof value?.set === \"function\" ? value.set(key, next) : writeKey(value, key, next);\nvar Step = class {\n  setDraftValue(_root, _v) {\n  }\n  // Re-enter this step while rebuilding a stack. `renderPath` is the dispatch\n  // position AFTER this step: a rebuilt frame must carry the same render path\n  // the renderer had there, or the provides it publishes would be located wrong.\n  enterFrame(stack, next, renderPath) {\n    return stack.enter(next, {}, true, renderPath);\n  }\n  toAbstractPathStep() {\n    return this;\n  }\n  // Freeze any field-resolved key against the value `v` entering this step (see\n  // `Path.pinKeys`). Most steps carry no live key and pin to themselves.\n  pinKey(_v) {\n    return this;\n  }\n  // A generic `{ field, key? }` descriptor for this step, or null for frame-only\n  // steps (binds) that address no field. Used by `Path.toKeys()` so tooling can\n  // introspect a path without reaching into Step subclasses.\n  toKey() {\n    return null;\n  }\n};\nvar BindStep = class extends Step {\n  constructor(binds) {\n    super();\n    this.binds = binds;\n  }\n  lookup(v) {\n    return v;\n  }\n  enterFrame(stack, next, renderPath) {\n    return stack.enter(next, { ...this.binds }, false, renderPath);\n  }\n  toAbstractPathStep() {\n    return null;\n  }\n};\nvar ScopeBindStep = class extends BindStep {\n  constructor(val, binds = {}) {\n    super(binds);\n    this.val = val;\n  }\n  enterFrame(stack, next, renderPath) {\n    const dyn = this.val.evalAsHandler(stack)?.call(stack.it) ?? {};\n    return stack.enter(next, { ...this.binds, ...dyn }, false, renderPath);\n  }\n};\nvar FieldStep = class extends Step {\n  constructor(field) {\n    super();\n    this.field = field;\n  }\n  lookup(v) {\n    return seqGet(v, this.field, NONE);\n  }\n  setDraftValue(root, v) {\n    writeKey(root, this.field, v);\n  }\n  toKey() {\n    return { field: this.field };\n  }\n};\nvar SeqStep = class extends Step {\n  constructor(field, key) {\n    super();\n    this.field = field;\n    this.key = key;\n  }\n  lookup(v) {\n    return seqGet(seqGet(v, this.field, null), this.key, NONE);\n  }\n  setDraftValue(root, v) {\n    const seq = seqGet(root, this.field, null);\n    if (seq != null) writeSeqKey(seq, this.key, v);\n  }\n  enterFrame(stack, next, renderPath) {\n    return stack.enter(next, { key: this.key }, true, renderPath);\n  }\n  toKey() {\n    return { field: this.field, key: this.key };\n  }\n};\nvar SeqAccessStep = class extends Step {\n  constructor(seqField, keyField) {\n    super();\n    this.seqField = seqField;\n    this.keyField = keyField;\n  }\n  lookup(v) {\n    const seq = seqGet(v, this.seqField, NONE);\n    const key = seqGet(v, this.keyField, NONE);\n    return key !== NONE && seq !== NONE ? seqGet(seq, key, NONE) : NONE;\n  }\n  setDraftValue(root, v) {\n    const seq = seqGet(root, this.seqField, NONE);\n    const key = seqGet(root, this.keyField, NONE);\n    if (seq !== NONE && key !== NONE) writeSeqKey(seq, key, v);\n  }\n  // Resolve `keyField` against `v` now and freeze it as a literal-key `SeqStep`, so a\n  // later lookup/setValue lands on this same item even if `keyField` changes meanwhile.\n  pinKey(v) {\n    const key = seqGet(v, this.keyField, NONE);\n    return key === NONE ? this : new SeqStep(this.seqField, key);\n  }\n  // The key is a *field reference* resolved live, so it is unknown without a value;\n  // report the seq field (no key) rather than dropping the step, which would shift\n  // the indices of later keys. Call `Path.pinKeys(root)` first to get a concrete key.\n  toKey() {\n    return { field: this.seqField };\n  }\n};\nvar EachBindStep = class extends Step {\n  constructor(eachNode, key) {\n    super();\n    this.eachNode = eachNode;\n    this.key = key;\n  }\n  lookup(v) {\n    return v;\n  }\n  // Replay the renderer's per-item binds (key, value + any @enrich-with binds)\n  // so a rebuilt stack matches the one @each rendered with.\n  enterFrame(stack, next, renderPath) {\n    return stack.enter(next, this.eachNode.enrichBinds(stack, this.key), false, renderPath);\n  }\n  toAbstractPathStep() {\n    return null;\n  }\n};\nvar EachRenderItStep = class extends SeqStep {\n  enterFrame(stack, next, renderPath) {\n    return stack.enter(next, { key: this.key, value: next }, false, renderPath).enter(next, {}, true, renderPath);\n  }\n  toAbstractPathStep() {\n    return new SeqStep(this.field, this.key);\n  }\n};\nfunction stepToJson(step) {\n  if (step instanceof SeqStep) return { f: step.field, k: step.key };\n  if (step instanceof FieldStep) return { f: step.field };\n  if (step instanceof SeqAccessStep) return { f: step.seqField, a: step.keyField };\n  return null;\n}\nfunction stepFromJson(j) {\n  if (j == null || typeof j.f !== \"string\") return null;\n  if (j.k !== void 0) return new SeqStep(j.f, j.k);\n  if (j.a !== void 0) return new SeqAccessStep(j.f, j.a);\n  return new FieldStep(j.f);\n}\nfunction pathToJson(path2) {\n  const out = [];\n  for (const step of path2.steps) {\n    const j = stepToJson(step);\n    if (j === null) return null;\n    out.push(j);\n  }\n  return out;\n}\nfunction pathFromJson(j) {\n  if (!Array.isArray(j)) return null;\n  const steps = [];\n  for (const item of j) {\n    const step = stepFromJson(item);\n    if (step === null) return null;\n    steps.push(step);\n  }\n  return new Path(steps);\n}\nvar Path = class _Path {\n  constructor(steps = []) {\n    this.steps = steps;\n  }\n  concat(steps) {\n    return new _Path(this.steps.concat(steps));\n  }\n  // Frame-only steps removed, one step per crossed component: `popStep` over the\n  // result bubbles through every component.\n  compact() {\n    const out = [];\n    for (const step of this.steps) {\n      const s = step.toAbstractPathStep();\n      if (s !== null) out.push(s);\n    }\n    return new _Path(out);\n  }\n  // Resolve every field-keyed step (e.g. `SeqAccessStep`) against `root`, freezing the\n  // key as it is *now* so a later lookup/setValue lands on the same item even if the\n  // keyField changed meanwhile (e.g. the selected tab moved while an intent was in\n  // flight). Returns a new Path with those steps replaced; `this` if nothing pinned.\n  pinKeys(root) {\n    let curVal = root;\n    let out = null;\n    for (let i = 0; i < this.steps.length; i++) {\n      const step = this.steps[i];\n      const pinned = step.pinKey(curVal);\n      if (pinned !== step) (out ??= this.steps.slice())[i] = pinned;\n      curVal = step.lookup(curVal);\n      if (curVal === NONE) break;\n    }\n    return out ? new _Path(out) : this;\n  }\n  lookup(v, dval = null) {\n    let curVal = v;\n    for (const step of this.steps) {\n      curVal = step.lookup(curVal);\n      if (curVal === NONE) return dval;\n    }\n    return curVal;\n  }\n  // The values entered along the path, root→leaf (root included): index 0 is `root`,\n  // the last entry is the leaf this path resolves to. Stops early at the first\n  // unresolvable step. Used to walk the component instances on a dispatch path\n  // (filter via Components.getCompFor).\n  resolveChain(root) {\n    const out = [root];\n    let curVal = root;\n    for (const step of this.steps) {\n      curVal = step.lookup(curVal);\n      if (curVal === NONE) break;\n      out.push(curVal);\n    }\n    return out;\n  }\n  // A flat `[{ field, key? }]` list of the addressing steps, skipping frame-only\n  // steps (binds). Generic path introspection so tooling (e.g. the storybook\n  // activity log) can identify which subtree a transaction touched without\n  // depending on Step internals.\n  toKeys() {\n    const out = [];\n    for (const step of this.steps) {\n      const k = step.toKey();\n      if (k !== null) out.push(k);\n    }\n    return out;\n  }\n  setValue(root, v) {\n    if (this.steps.length === 0) return v;\n    return produce(root, (draft) => {\n      let parent = draft;\n      for (let i = 0; i < this.steps.length - 1; i++) {\n        parent = this.steps[i].lookup(parent);\n        if (parent === NONE) return;\n      }\n      this.steps.at(-1).setDraftValue(parent, v);\n    });\n  }\n};\nfunction walkItems(stack, items, renderPath, path2) {\n  let prev = stack.it;\n  for (const step of items) {\n    const next = step.lookup(prev);\n    if (next === NONE) {\n      console.warn(\"bad PathItem\", { root: stack.it, step, path: path2 });\n      return null;\n    }\n    renderPath = renderPath.pushItem(step);\n    stack = step.enterFrame(stack, next, renderPath);\n    prev = next;\n  }\n  return [stack, renderPath];\n}\nvar EMPTY_PATH = new Path([]);\nvar DispatchPath = class _DispatchPath {\n  constructor(frames = [{ base: EMPTY_PATH, items: [] }]) {\n    this.frames = frames;\n  }\n  // Plain addressing steps in one frame based at the root: what a caller means\n  // by \"this position\" when it has no continuation of its own.\n  static ofSteps(steps) {\n    return new _DispatchPath([{ base: EMPTY_PATH, items: steps.slice() }]);\n  }\n  get top() {\n    return this.frames[this.frames.length - 1];\n  }\n  _withTopItems(items) {\n    const frames = this.frames.slice();\n    frames[frames.length - 1] = { base: this.top.base, items };\n    return new _DispatchPath(frames);\n  }\n  concat(steps) {\n    return this._withTopItems(this.top.items.concat(steps));\n  }\n  pushItem(step) {\n    return this.concat([step]);\n  }\n  pushFrame(base) {\n    return new _DispatchPath(this.frames.concat({ base, items: [] }));\n  }\n  // Whether bubbling has anywhere left to go: another step in this frame, or a\n  // visual caller underneath it. (A path always has at least one frame.)\n  canPop() {\n    return this.frames.length > 1 || this.frames[0].items.length > 0;\n  }\n  // One component closer to the root. At the top of a frame that is popping back\n  // to the visual caller, not to the producer's own parent — the caller is where\n  // the `*name` was written, and where an unhandled message should keep going.\n  popStep() {\n    const { top } = this;\n    if (top.items.length > 0) return this._withTopItems(top.items.slice(0, -1));\n    if (this.frames.length > 1) return new _DispatchPath(this.frames.slice(0, -1));\n    return this;\n  }\n  // Drop frame-only steps inside every frame independently; a frame's base is\n  // already addressing-only.\n  compact() {\n    return new _DispatchPath(\n      this.frames.map(({ base, items }) => ({ base, items: new Path(items).compact().steps }))\n    );\n  }\n  // A stable string for the ADDRESS this path denotes, for the render cache. The\n  // same immutable value can sit at two places in the tree, and a subtree rendered\n  // at one of them bakes that address in — the provides it publishes are located\n  // there. Frame-only steps address nothing, so they are compacted out: two sites\n  // that differ only in binds do render the same subtree.\n  get addressKey() {\n    this._addressKey ??= renderPathText(this.toTransactionPath().compact());\n    return this._addressKey;\n  }\n  // The active transaction address: the top frame's absolute base followed by\n  // its ordinary descendant steps. This is where a mutation lands.\n  toTransactionPath() {\n    const { base, items } = this.top;\n    return base.concat(items);\n  }\n  // Rebuild the render stack this path was dispatched from. A frame with a base\n  // re-enters at that absolute value first — replaying the resume a `*name`\n  // render performed — and then walks its ordinary items.\n  buildStack(stack) {\n    let renderPath = new _DispatchPath();\n    for (let i = 0; i < this.frames.length; i++) {\n      const { base, items } = this.frames[i];\n      if (i > 0 || base.steps.length > 0) {\n        const baseValue = base.lookup(stack.root, NONE);\n        if (baseValue === NONE) {\n          console.warn(\"bad frame base\", { base, path: this });\n          return null;\n        }\n        renderPath = renderPath.pushFrame(base);\n        stack = stack.enter(baseValue, {}, true, renderPath);\n      }\n      const walked = walkItems(stack, items, renderPath, this);\n      if (walked === null) return null;\n      [stack, renderPath] = walked;\n    }\n    return stack;\n  }\n  // Reconstruct the dispatch position of a DOM event from the `data-*` stamps and\n  // `§…§` meta comments the renderer left on the way down. `stopOnNoEvent` is off for\n  // drag events, whose path is needed even where no handler is registered.\n  static fromNodeAndEventName(node, eventName, rootNode, comps, stopOnNoEvent = true) {\n    const parts = [];\n    const bubbles = BUBBLING_EVENTS.has(eventName);\n    let eventIds = [];\n    let handlers = null;\n    let nodeRefs = [];\n    let isLeafComponent = true;\n    const crossComponent = (cidNum, vid) => {\n      const comp = comps.getComponentForId(cidNum);\n      let pushPart = true;\n      if (handlers === null && (isLeafComponent || bubbles)) {\n        handlers = findHandlers(comp, eventIds, vid, eventName);\n        if (handlers === null) {\n          if (isLeafComponent && stopOnNoEvent && !bubbles) return false;\n        } else if (!isLeafComponent) {\n          parts.length = 0;\n          pushPart = false;\n        }\n      }\n      isLeafComponent = false;\n      if (pushPart) {\n        const part = resolvePathPart(comp, nodeRefs, vid);\n        if (part) parts.push(part);\n      }\n      eventIds = [];\n      nodeRefs = [];\n      return true;\n    };\n    while (node && node !== rootNode) {\n      if (node?.dataset) {\n        const { eid, cid, vid, rp } = node.dataset;\n        if (eid !== void 0) eventIds.push(eid);\n        const metas = metaChain(node.previousSibling);\n        let sawComp = false;\n        for (const m of metas) {\n          if (m.$ === \"Comp\") {\n            sawComp = true;\n            if (!crossComponent(m.cid, m.vid)) return NO_EVENT_INFO;\n            nodeRefs.push({ nid: m.nid, base: pathFromJson(m.base) });\n          } else {\n            nodeRefs.push({ nid: m.nid, si: m.si, sk: m.sk });\n          }\n        }\n        if (!sawComp && cid !== void 0) {\n          if (!crossComponent(+cid, vid)) return NO_EVENT_INFO;\n          if (rp !== void 0) {\n            const base = parseRenderPath(rp);\n            if (base !== null) nodeRefs.push({ base });\n          }\n        }\n      }\n      node = node.parentNode;\n    }\n    parts.reverse();\n    let path2 = new _DispatchPath();\n    for (const part of parts)\n      path2 = part.base !== void 0 ? path2.pushFrame(part.base) : path2.pushItem(part.step);\n    return [path2, handlers];\n  }\n};\nfunction keyedPath(path2, key) {\n  const steps = path2.steps;\n  const last = steps[steps.length - 1];\n  if (last instanceof SeqStep || last instanceof FieldStep)\n    return new Path(steps.slice(0, -1).concat(new SeqStep(last.field, key)));\n  return null;\n}\nfunction renderPathText(path2) {\n  return JSON.stringify(pathToJson(path2));\n}\nfunction parseRenderPath(text) {\n  try {\n    return pathFromJson(JSON.parse(text));\n  } catch (err) {\n    console.warn(\"bad render path\", err, text);\n    return null;\n  }\n}\nfunction metaChain(n) {\n  const out = [];\n  while (n?.nodeType === 8 && n.textContent[0] === \"§\") {\n    try {\n      out.push(JSON.parse(n.textContent.slice(1, -1)));\n    } catch (err) {\n      console.warn(err, n);\n    }\n    n = n.previousSibling;\n  }\n  return out;\n}\nfunction findHandlers(comp, eventIds, vid, eventName) {\n  for (const eid of eventIds) {\n    const handlers = comp.getEventForId(+eid, vid).getHandlersFor(eventName);\n    if (handlers !== null) return handlers;\n  }\n  return null;\n}\nvar StepCtx = class _StepCtx {\n  constructor(comp, nodeIds, idx, vid) {\n    this.comp = comp;\n    this.nodeIds = nodeIds;\n    this.idx = idx;\n    this.vid = vid;\n  }\n  get meta() {\n    return this.nodeIds[this.idx];\n  }\n  get key() {\n    const m = this.meta;\n    return m.si !== void 0 ? +m.si : m.sk;\n  }\n  get hasKey() {\n    const m = this.meta;\n    return m.si !== void 0 || m.sk !== void 0;\n  }\n  next() {\n    const { idx, nodeIds } = this;\n    return idx + 1 < nodeIds.length ? new _StepCtx(this.comp, nodeIds, idx + 1, this.vid) : null;\n  }\n  resolveNode() {\n    return this.comp.getNodeForId(+this.meta.nid, this.vid);\n  }\n};\nfunction resolvePathPart(comp, nodeRefs, vid) {\n  for (let i = 0; i < nodeRefs.length; i++) {\n    const ref = nodeRefs[i];\n    if (ref.base != null) return { base: ref.base };\n    if (ref.nid === void 0 || ref.nid === null) continue;\n    const ctx = new StepCtx(comp, nodeRefs, i, vid);\n    const step = ctx.resolveNode()?.toPathStep(ctx) ?? null;\n    if (step !== null) return { step };\n  }\n  return null;\n}\nvar NO_EVENT_INFO = [null, null];\nvar BUBBLING_EVENTS = /* @__PURE__ */ new Set([\"drop\"]);\nvar path = () => new PathBuilder();\nvar PathBuilder = class {\n  constructor() {\n    this.pathChanges = [];\n  }\n  toPath() {\n    return new Path(this.pathChanges);\n  }\n  add(pathChange) {\n    this.pathChanges.push(pathChange);\n    return this;\n  }\n  field(name) {\n    return this.add(new FieldStep(name));\n  }\n  index(name, index) {\n    return this.add(new SeqStep(name, index));\n  }\n  key(name, key) {\n    return this.add(new SeqStep(name, key));\n  }\n};\n\n// src/value.js\nvar isMac = (globalThis.navigator?.userAgent ?? \"\").toLowerCase().includes(\"mac\");\nvar VALID_VAL_ID_RE = /^[a-zA-Z][a-zA-Z0-9_]*\\??$/;\nvar isValidValId = (name) => VALID_VAL_ID_RE.test(name);\nvar VALID_FLOAT_RE = /^-?[0-9]+(\\.[0-9]+)?$/;\nvar STR_TPL_SPLIT_RE = /(\\{[^}]+\\})/g;\nvar mkVal = (name, Cls) => isValidValId(name) ? new Cls(name) : null;\nvar VAL_TOKEN_RE = /\\$'(?:[^'\\\\]|\\\\.)*'|'(?:[^'\\\\]|\\\\.)*'|\\S+/g;\nvar tokenizeValue = (s) => s.match(VAL_TOKEN_RE) ?? [];\nvar unescapeStr = (s) => s.replace(/\\\\(['\\\\])/g, \"$1\");\nvar K_CONST = 1;\nvar K_STRTPL = 2;\nvar K_FIELD = 4;\nvar K_BIND = 8;\nvar K_DYN = 16;\nvar K_NAME = 32;\nvar K_SEQ = 256;\nvar K_METHOD = 1024;\nvar K_EVENT = 2048;\nvar G_BOOL = K_FIELD | K_METHOD | K_BIND | K_DYN | K_CONST;\nvar G_TEXT = G_BOOL | K_STRTPL;\nvar G_COMPONENT = K_FIELD | K_SEQ | K_DYN;\nvar G_SEQUENCE = K_FIELD | K_DYN;\nvar G_PROVIDE = K_FIELD | K_SEQ;\nvar G_FIELD = K_FIELD | K_METHOD | K_CONST | K_SEQ;\nvar G_VALUE = K_FIELD | K_METHOD | K_BIND | K_DYN | K_NAME | K_CONST;\nvar G_HANDLER_ARG = G_VALUE & ~K_NAME | K_EVENT;\nvar G_ALL = G_VALUE | K_STRTPL | K_SEQ;\nfunction sizeOf(v) {\n  if (v == null) return null;\n  const s = v.size;\n  if (typeof s === \"number\") return s;\n  const l = v.length;\n  if (typeof l === \"number\") return l;\n  return isPlainObject(v) ? Object.keys(v).length : null;\n}\nvar toNullIfNaN = (v) => Number.isNaN(v) ? null : v;\nfunction getValue(e) {\n  return e.target.type === \"checkbox\" ? e.target.checked : (e instanceof CustomEvent ? e.detail : e.target.value) ?? null;\n}\nvar predTruthy = (v) => {\n  const n = sizeOf(v);\n  return n === null ? !!v : n > 0;\n};\nvar PREDICATES = {\n  \"empty?\": { name: \"empty?\", arity: 1, fn: (v) => v == null || sizeOf(v) === 0 },\n  \"truthy?\": { name: \"truthy?\", arity: 1, fn: predTruthy },\n  \"falsy?\": { name: \"falsy?\", arity: 1, fn: (v) => !predTruthy(v) },\n  \"null?\": { name: \"null?\", arity: 1, fn: (v) => v == null },\n  \"equals?\": { name: \"equals?\", arity: 2, fn: (a, b) => Object.is(a, b) }\n};\nfunction parseToken(s, px) {\n  const c0 = s.charCodeAt(0);\n  if (c0 === 39)\n    return s.length >= 2 && s.charCodeAt(s.length - 1) === 39 ? new ConstVal(unescapeStr(s.slice(1, -1))) : null;\n  if (c0 === 36 && s.charCodeAt(1) === 39)\n    return s.length >= 3 && s.charCodeAt(s.length - 1) === 39 ? StrTplVal.parse(s.slice(2, -1), px) : null;\n  if (s.indexOf(\"[\") !== -1 || s.indexOf(\"]\") !== -1) return _parseSeqAccess(s, px);\n  if (s.indexOf(\"{\") !== -1 || s.indexOf(\"}\") !== -1) return null;\n  switch (c0) {\n    case 94: {\n      const name = s.slice(1);\n      const newS = px.frame.macroVars?.[name];\n      if (newS !== void 0) {\n        const tokens = tokenizeValue(newS.trim());\n        if (tokens.length !== 1) return null;\n        const val = parseToken(tokens[0], px);\n        if (val instanceof ConstVal) val.fromMacroVar = true;\n        return val;\n      }\n      px.onParseIssue(\"bad-value\", { role: \"macro-var\", name, value: s });\n      return null;\n    }\n    case 36:\n      return mkVal(s.slice(1), MethodVal);\n    case 64: {\n      const dot = s.indexOf(\".\", 1);\n      if (dot === -1) return mkVal(s.slice(1), BindVal);\n      const name = s.slice(1, dot);\n      const member = s.slice(dot + 1);\n      return isValidValId(name) && isValidValId(member) ? new BindMemberVal(name, member) : null;\n    }\n    case 42:\n      return mkVal(s.slice(1), DynVal);\n    case 46:\n      return mkVal(s.slice(1), FieldVal);\n  }\n  const num = VALID_FLOAT_RE.test(s) ? parseFloat(s) : null;\n  if (Number.isFinite(num)) return new ConstVal(num);\n  if (s === \"true\" || s === \"false\") return new ConstVal(s === \"true\");\n  if (c0 === 101) {\n    const m = /^e(\\.[a-zA-Z][a-zA-Z0-9_]*)+$/.exec(s);\n    if (m !== null) return new EventMemberVal(s.split(\".\").slice(1));\n  }\n  if (c0 >= 97 && c0 <= 122) return mkVal(s, NameVal);\n  return null;\n}\nfunction _parseSeqAccess(s, px) {\n  const open = s.indexOf(\"[\");\n  const close = s.indexOf(\"]\");\n  if (open < 1 || close !== s.length - 1 || close < open || s.indexOf(\"[\", open + 1) !== -1)\n    return null;\n  const left = parseToken(s.slice(0, open), px);\n  const right = parseToken(s.slice(open + 1, close), px);\n  return left instanceof FieldVal && right instanceof FieldVal ? new SeqAccessVal(left, right) : null;\n}\nfunction _parseSingle(s, px, group) {\n  const tokens = tokenizeValue(s.trim());\n  if (tokens.length !== 1) return null;\n  const val = parseToken(tokens[0], px);\n  return val !== null && kindOf(val) & group ? val : null;\n}\nfunction parseBool(s, px) {\n  const t = s.trim();\n  const tokens = tokenizeValue(t);\n  if (tokens.length !== 1) return tokens.length === 0 ? null : _parsePredicate(t, tokens, px);\n  const val = parseToken(tokens[0], px);\n  return val !== null && kindOf(val) & G_BOOL ? val : null;\n}\nvar parseText = (s, px) => _parseSingle(s, px, G_TEXT);\nvar parseComponent = (s, px) => _parseSingle(s, px, G_COMPONENT);\nvar parseSequence = (s, px) => _parseSingle(s, px, G_SEQUENCE);\nvar parseField = (s, px) => _parseSingle(s, px, G_FIELD);\nvar parseProvide = (s, px) => _parseSingle(s, px, G_PROVIDE);\nvar parseMacroAttr = (s, px) => _parseSingle(s, px, G_ALL);\nvar parseReceiveHandler = (s, px) => _parseHandler(s, px, \"receive\", true, true, false);\nvar parseAlterHandler = (s, px) => _parseHandler(s, px, \"alter\", false, false, true)?.handlerVal ?? null;\nfunction _parseHandler(s, px, namespace, allowArgs, report, allowMethod) {\n  const tokens = tokenizeValue(s.trim());\n  const headTok = tokens[0] ?? \"\";\n  const head = headTok === \"\" ? null : parseToken(headTok, px);\n  const hk = kindOf(head);\n  let handlerVal;\n  if (hk & K_METHOD && allowMethod) handlerVal = head;\n  else if (hk & K_METHOD) {\n    if (report)\n      px.onParseIssue(\"event-method-handler\", {\n        name: head.name,\n        role: \"handler-name\",\n        value: headTok\n      });\n    return null;\n  } else if (hk & K_NAME) handlerVal = new HandlerNameVal(head.name, namespace);\n  else {\n    if (report) px.onParseIssue(\"bad-value\", { role: \"handler-name\", value: headTok });\n    return null;\n  }\n  if (!allowArgs) return tokens.length === 1 ? { handlerVal, args: [] } : null;\n  const args = new Array(tokens.length - 1);\n  for (let i = 1; i < tokens.length; i++) {\n    const val = parseToken(tokens[i], px);\n    if (val !== null && kindOf(val) & G_HANDLER_ARG) args[i - 1] = val;\n    else {\n      if (report) px.onParseIssue(\"bad-value\", { role: \"handler-arg\", value: tokens[i] });\n      args[i - 1] = NULL_CONST_VAL;\n    }\n  }\n  return { handlerVal, args };\n}\nfunction _parsePredicate(s, tokens, px) {\n  const predName = tokens[0];\n  const pred = PREDICATES[predName];\n  if (pred === void 0) {\n    px.onParseIssue(\"bad-value\", { role: \"predicate\", value: predName });\n    return null;\n  }\n  const arity = tokens.length - 1;\n  if (arity !== pred.arity) {\n    px.onParseIssue(\"bad-value\", { role: \"predicate-arity\", value: s, predicate: predName });\n    return null;\n  }\n  const args = new Array(arity);\n  for (let i = 0; i < arity; i++) {\n    const tok = tokens[i + 1];\n    const val = parseToken(tok, px);\n    if (val === null || !(kindOf(val) & G_BOOL)) {\n      px.onParseIssue(\"bad-value\", { role: \"predicate-arg\", value: tok });\n      return null;\n    }\n    args[i] = val;\n  }\n  return new PredicateVal(pred, args);\n}\nvar kindOf = (val) => val?.kind ?? 0;\nvar BaseVal = class {\n  // No kind: never accepted by a group (PredicateVal, which only parseBool builds).\n  kind = 0;\n  eval(_stack) {\n  }\n  toPathItem() {\n    return null;\n  }\n  // Value of this expression when it sits in handler position (`@on.<event>`,\n  // `@when`, `@enrich-with`, `@loop-with`): the dispatch machinery calls the\n  // result with the event args. Defaults to `eval`; `MethodVal` overrides it\n  // to hand back the raw function instead of invoking it.\n  evalAsHandler(stack) {\n    return this.eval(stack);\n  }\n};\nvar ConstVal = class extends BaseVal {\n  constructor(val, kind = K_CONST) {\n    super();\n    this.val = val;\n    this.kind = kind;\n  }\n  eval(_stack) {\n    return this.val;\n  }\n  toString() {\n    const v = this.val;\n    return typeof v === \"string\" ? `'${v.replace(/(['\\\\])/g, \"\\\\$1\")}'` : `${v}`;\n  }\n};\nvar NULL_CONST_VAL = new ConstVal(null);\nvar PredicateVal = class extends BaseVal {\n  constructor(pred, args) {\n    super();\n    this.pred = pred;\n    this.args = args;\n  }\n  eval(stack) {\n    const n = this.args.length;\n    const vals = new Array(n);\n    for (let i = 0; i < n; i++) vals[i] = this.args[i].eval(stack);\n    return this.pred.fn(...vals);\n  }\n  toString() {\n    return `${this.pred.name} ${this.args.map(String).join(\" \")}`;\n  }\n};\nvar StrTplVal = class _StrTplVal extends BaseVal {\n  constructor(vals) {\n    super();\n    this.vals = vals;\n    this.kind = this.isLiteral() ? K_CONST : K_STRTPL;\n  }\n  // True when this template carries no dynamic placeholder: every part is a\n  // plain `ConstVal` and none was bound from a macro variable (the macro\n  // placeholder is real in the body even when it resolved to a constant).\n  isLiteral() {\n    for (const v of this.vals) if (!(v instanceof ConstVal) || v.fromMacroVar) return false;\n    return true;\n  }\n  eval(stack) {\n    const strs = new Array(this.vals.length);\n    for (let i = 0; i < this.vals.length; i++) strs[i] = this.vals[i]?.eval(stack, \"\");\n    return strs.join(\"\");\n  }\n  // When this is a placeholderless literal (see `isLiteral`), returns the\n  // string it spells out, in `'…'` source form; otherwise null. The linter\n  // uses this to nudge `$'foo'` → `'foo'` (PLACEHOLDERLESS_TEMPLATE_STRING).\n  toLiteralSource() {\n    if (!this.isLiteral()) return null;\n    let out = \"\";\n    for (const v of this.vals) out += v.val;\n    return new ConstVal(out).toString();\n  }\n  // `s` is the interior of a `$'…'` template (the text between `$'` and `'`).\n  // The interior is unescaped once (`\\'`, `\\\\`) then split on `{…}` groups:\n  // text between them becomes a `ConstVal`, expressions inside braces are\n  // parsed via `parseText`. A constant-only template is left as a `StrTplVal`\n  // (not folded to a `ConstVal`) so the linter can flag it — see\n  // `toLiteralSource` and the PLACEHOLDERLESS_TEMPLATE_STRING lint rule.\n  static parse(s, px) {\n    const parts = unescapeStr(s).split(STR_TPL_SPLIT_RE);\n    const vals = new Array(parts.length);\n    for (let i = 0; i < parts.length; i++) {\n      const part = parts[i];\n      const isExpr = part[0] === \"{\" && part.at(-1) === \"}\";\n      vals[i] = isExpr ? parseText(part.slice(1, -1), px) : new ConstVal(part);\n    }\n    let lo = 0;\n    let hi = vals.length;\n    const isTrimmable = (v) => v instanceof ConstVal && v.val === \"\" && !v.fromMacroVar;\n    while (lo < hi && isTrimmable(vals[lo])) lo++;\n    while (hi > lo && isTrimmable(vals[hi - 1])) hi--;\n    return new _StrTplVal(lo === 0 && hi === vals.length ? vals : vals.slice(lo, hi));\n  }\n};\nvar NameVal = class extends BaseVal {\n  kind = K_NAME;\n  constructor(name) {\n    super();\n    this.name = name;\n  }\n  toString() {\n    return this.name;\n  }\n};\nvar HandlerNameVal = class extends NameVal {\n  constructor(name, namespace) {\n    super(name);\n    this.namespace = namespace;\n  }\n  eval(stack) {\n    return stack.getHandlerFor(this.name, this.namespace) ?? mk404Handler(stack, this.namespace, this.name);\n  }\n};\nvar mk404Handler = (stack, type3, name) => function(...args) {\n  const transactor = stack?.ctx?.transactor;\n  if (transactor)\n    transactor.refuse(\"NO_HANDLER\", { namespace: type3, name, argCount: args.length });\n  else console.warn(\"handler not found\", { type: type3, name });\n  return this;\n};\nvar keyIs = (k) => (e) => e.key === k;\nvar macCtrl = (e) => isMac && e.metaKey || e.ctrlKey;\nvar nullSafe = (fn) => (e, stack) => {\n  const info = stack.lookupDragInfo();\n  return info == null ? null : fn(info);\n};\nvar EVENT_CONVENIENCES = {\n  value: (e) => getValue(e),\n  valueAsInt: (e) => toNullIfNaN(parseInt(getValue(e), 10)),\n  valueAsFloat: (e) => toNullIfNaN(parseFloat(getValue(e))),\n  isAlt: (e) => e.altKey,\n  isShift: (e) => e.shiftKey,\n  isCtrl: macCtrl,\n  isCmd: macCtrl,\n  isUpKey: keyIs(\"ArrowUp\"),\n  isDownKey: keyIs(\"ArrowDown\"),\n  isSend: keyIs(\"Enter\"),\n  isCancel: keyIs(\"Escape\"),\n  isTabKey: keyIs(\"Tab\"),\n  dragInfo: (_e, stack) => stack.lookupDragInfo(),\n  dragType: nullSafe((info) => info.type),\n  dragValue: nullSafe((info) => info.val),\n  dragKey: nullSafe((info) => info.lookupBind(\"key\"))\n};\nvar EventMemberVal = class extends BaseVal {\n  kind = K_EVENT;\n  constructor(members) {\n    super();\n    this.members = members;\n  }\n  eval(stack) {\n    const e = stack.lookupEvent();\n    if (e == null) return null;\n    if (this.members.length === 1) {\n      const convenience = EVENT_CONVENIENCES[this.members[0]];\n      if (convenience !== void 0) return convenience(e, stack);\n    }\n    let v = e;\n    for (const member of this.members) {\n      if (v == null) return null;\n      v = v[member];\n    }\n    return v ?? null;\n  }\n  toString() {\n    return `e.${this.members.join(\".\")}`;\n  }\n};\nvar SigilNameVal = class extends BaseVal {\n  constructor(name) {\n    super();\n    this.name = name;\n  }\n  toString() {\n    return this.sigil + this.name;\n  }\n};\nvar BindVal = class extends SigilNameVal {\n  kind = K_BIND;\n  sigil = \"@\";\n  eval(stack) {\n    return stack.lookupBind(this.name);\n  }\n};\nvar BindMemberVal = class extends BindVal {\n  constructor(name, member) {\n    super(name);\n    this.member = member;\n  }\n  eval(stack) {\n    const v = stack.lookupBind(this.name);\n    return seqGet(v, this.member, null);\n  }\n  toString() {\n    return `@${this.name}.${this.member}`;\n  }\n};\nvar DynVal = class extends SigilNameVal {\n  kind = K_DYN;\n  sigil = \"*\";\n  eval(stack) {\n    return stack.lookupDynamic(this.name);\n  }\n};\nvar FieldVal = class extends SigilNameVal {\n  kind = K_FIELD;\n  sigil = \".\";\n  eval(stack) {\n    return stack.lookupFieldRaw(this.name);\n  }\n  toPathItem() {\n    return new FieldStep(this.name);\n  }\n};\nvar MethodVal = class extends SigilNameVal {\n  kind = K_METHOD;\n  sigil = \"$\";\n  eval(stack) {\n    return stack.lookupMethod(this.name);\n  }\n  evalAsHandler(stack) {\n    return stack.lookupFieldRaw(this.name);\n  }\n};\nvar SeqAccessVal = class extends BaseVal {\n  kind = K_SEQ;\n  constructor(seqVal, keyVal) {\n    super();\n    this.seqVal = seqVal;\n    this.keyVal = keyVal;\n  }\n  toPathItem() {\n    return new SeqAccessStep(this.seqVal.name, this.keyVal.name);\n  }\n  eval(stack) {\n    const key = this.keyVal.eval(stack);\n    return seqGet(this.seqVal.eval(stack), key, null);\n  }\n  toString() {\n    return `${this.seqVal}[${this.keyVal}]`;\n  }\n};\n\n// src/attribute.js\nvar Attributes = class {\n  constructor(items) {\n    this.items = items;\n  }\n  isConstant() {\n    return false;\n  }\n};\nvar booleanAttrsRaw = \"itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected\";\nvar booleanAttrs = new Set(booleanAttrsRaw.split(\",\"));\nfunction parseDirectiveValue(px, directiveName, source, parser) {\n  const val = parser(source, px);\n  if (val === null) {\n    px.onParseIssue(\"bad-value\", {\n      role: \"directive\",\n      directive: directiveName,\n      value: source\n    });\n  }\n  return val;\n}\nvar ITER_DIRECTIVES = {\n  when: \"whenVal\",\n  \"loop-with\": \"loopWithVal\",\n  \"enrich-with\": \"enrichWithVal\"\n};\nvar parseIterDirective = (px, name, s) => parseDirectiveValue(px, name, s, parseAlterHandler);\nfunction parseIterationDirectives(attributes, px) {\n  const parseNamed = (name) => {\n    const attr = attributes.getNamedItem(`@${name}`);\n    return attr ? parseIterDirective(px, name, attr.value) : null;\n  };\n  return { whenVal: parseNamed(\"when\"), loopWithVal: parseNamed(\"loop-with\") };\n}\nvar AttrParser = class {\n  constructor(px) {\n    this.px = px;\n    this.attrs = null;\n    this.hasDynamic = false;\n    this.wrapperAttrs = null;\n    this.textChild = null;\n    this.eachAttr = null;\n    this.ifAttr = null;\n    this.events = null;\n  }\n  parseAttr(name, value, parseAll = false) {\n    const val = parseAll ? parseMacroAttr(value, this.px) : parseText(value, this.px);\n    if (val !== null) {\n      this.attrs ??= [];\n      this.attrs.push(new Attr(name, val));\n      this.hasDynamic ||= !(val instanceof ConstVal);\n    } else this.px.onParseIssue(\"bad-value\", { role: \"attr\", attr: name, value });\n  }\n  pushWrapper(name, raw, val) {\n    const node = { name, val, raw };\n    this.wrapperAttrs ??= [];\n    this.wrapperAttrs.push(node);\n    return node;\n  }\n  parseIf(directiveName, value) {\n    const dynVal = parseBool(value, this.px);\n    if (dynVal) {\n      this.ifAttr = new IfAttr(directiveName.slice(3), dynVal);\n      this.attrs ??= [];\n      this.attrs.push(this.ifAttr);\n      this.hasDynamic = true;\n    } else {\n      const info = { role: \"if\", attr: directiveName.slice(3), value };\n      this.px.onParseIssue(\"bad-value\", info);\n    }\n  }\n  // `@then` / `@else` fill the branches of the `@if.<attr>` on the same element.\n  parseBranch(slot, name, s) {\n    if (this.ifAttr === null) return this._orphan(name, s, \"if\");\n    this.ifAttr[slot] = parseText(s, this.px) ?? NOT_SET_VAL;\n  }\n  // `@when` / `@loop-with` / `@enrich-with` amend the `@each` on the same element. A\n  // loop-less `@enrich-with` is a scope of its own; the other two need the loop.\n  parseIter(name, s) {\n    const val = parseIterDirective(this.px, name, s);\n    if (this.eachAttr !== null) this.eachAttr[ITER_DIRECTIVES[name]] = val;\n    else if (name === \"enrich-with\") this.pushWrapper(\"scope\", s, val);\n    else this._orphan(name, s, \"each\");\n  }\n  // A directive that only means something next to another one, written alone.\n  _orphan(name, value, needs) {\n    this.px.onParseIssue(\"orphan-directive\", { name, value, needs });\n  }\n  parseEvent(directiveName, value) {\n    const [eventName, ...modifiers] = directiveName.slice(3).split(\"+\");\n    const handler = EventHandler.parse(value, this.px);\n    if (handler) {\n      if (this.events === null) {\n        this.events = this.px.registerEvents();\n        this.attrs ??= [];\n        this.attrs.push(new ConstAttr(\"data-eid\", new ConstVal(this.events.id)));\n      }\n      this.events.add(eventName, handler, modifiers);\n    }\n  }\n  parseDirective(s, directiveName) {\n    switch (directiveName) {\n      case \"dangerouslysetinnerhtml\":\n        this.attrs ??= [];\n        this.attrs.push(new RawHtmlAttr(parseDirectiveValue(this.px, directiveName, s, parseText)));\n        this.hasDynamic = true;\n        return;\n      case \"push-view\":\n        this.pushWrapper(\"push-view\", s, parseDirectiveValue(this.px, directiveName, s, parseText));\n        return;\n      case \"text\":\n        this.textChild = parseDirectiveValue(this.px, directiveName, s, parseText);\n        return;\n      case \"show\":\n        this.pushWrapper(\"show\", s, parseDirectiveValue(this.px, directiveName, s, parseBool));\n        return;\n      case \"hide\":\n        this.pushWrapper(\"hide\", s, parseDirectiveValue(this.px, directiveName, s, parseBool));\n        return;\n      case \"each\": {\n        const val = parseDirectiveValue(this.px, directiveName, s, parseSequence);\n        this.eachAttr = this.pushWrapper(\"each\", s, val);\n        return;\n      }\n      case \"when\":\n      case \"loop-with\":\n      case \"enrich-with\":\n        this.parseIter(directiveName, s);\n        return;\n      case \"then\":\n        this.parseBranch(\"thenVal\", directiveName, s);\n        return;\n      case \"else\":\n        this.parseBranch(\"elseVal\", directiveName, s);\n        return;\n    }\n    if (directiveName.startsWith(\"on.\")) this.parseEvent(directiveName, s);\n    else if (directiveName.startsWith(\"if.\")) this.parseIf(directiveName, s);\n    else if (directiveName.startsWith(\"then.\")) this.parseBranch(\"thenVal\", directiveName, s);\n    else if (directiveName.startsWith(\"else.\")) this.parseBranch(\"elseVal\", directiveName, s);\n    else {\n      const info = { name: directiveName, value: s };\n      this.px.onParseIssue(\"unknown-directive\", info);\n    }\n  }\n  parse(attributes, parseAll = false) {\n    for (const { name, value } of attributes) {\n      const charCode = name.charCodeAt(0);\n      if (charCode === 58)\n        this.parseAttr(name === \":viewbox\" ? \"viewBox\" : name.slice(1), value, parseAll);\n      else if (charCode === 64) this.parseDirective(value, name.slice(1));\n      else {\n        this.attrs ??= [];\n        const constVal = value === \"\" && booleanAttrs.has(name) ? true : value;\n        this.attrs.push(new ConstAttr(name, new ConstVal(constVal)));\n      }\n    }\n    const { attrs, hasDynamic } = this;\n    const pAttrs = hasDynamic ? new DynAttrs(attrs) : ConstAttrs.fromAttrs(attrs ?? []);\n    return [pAttrs, this.wrapperAttrs, this.textChild];\n  }\n};\nvar ConstAttrs = class _ConstAttrs extends Attributes {\n  eval(_stack) {\n    return this.items;\n  }\n  static fromAttrs(attrs) {\n    const attrsObj = {};\n    for (const attr of attrs) attrsObj[attr.name] = attr.val.eval(null);\n    return new _ConstAttrs(attrsObj);\n  }\n  setDataAttr(key, val) {\n    this.items[key] = val;\n  }\n  toMacroVars() {\n    const r = {};\n    for (const name in this.items) r[name] = new ConstVal(`${this.items[name]}`).toString();\n    return r;\n  }\n  isConstant() {\n    return true;\n  }\n};\nvar DynAttrs = class extends Attributes {\n  eval(stack) {\n    const attrs = {};\n    for (let i = 0; i < this.items.length; i++) {\n      const attr = this.items[i];\n      attrs[attr.name] = attr.eval(stack);\n    }\n    return attrs;\n  }\n  setDataAttr(key, val) {\n    this.items.push(new ConstAttr(key, new ConstVal(val)));\n  }\n  toMacroVars() {\n    const r = {};\n    for (const attr of this.items) r[attr.name] = attr.val.toString();\n    return r;\n  }\n};\nvar BaseAttr = class {\n  constructor(name) {\n    this.name = name;\n  }\n};\nvar Attr = class extends BaseAttr {\n  constructor(name, val) {\n    super(name);\n    this.val = val;\n  }\n  eval(stack) {\n    return this.val.eval(stack);\n  }\n};\nvar ConstAttr = class extends Attr {\n};\nvar RawHtmlAttr = class extends Attr {\n  constructor(val) {\n    super(\"dangerouslySetInnerHTML\", val ?? NULL_CONST_VAL);\n  }\n  eval(stack) {\n    return { __html: `${this.val.eval(stack)}` };\n  }\n};\nvar NOT_SET_VAL = NULL_CONST_VAL;\nvar IfAttr = class extends BaseAttr {\n  constructor(name, condVal) {\n    super(name);\n    this.condVal = condVal;\n    this.thenVal = this.elseVal = NOT_SET_VAL;\n  }\n  get anyBranchIsSet() {\n    return this.thenVal !== NOT_SET_VAL || this.elseVal !== NOT_SET_VAL;\n  }\n  eval(stack) {\n    return this.condVal.eval(stack) ? this.thenVal.eval(stack) : this.elseVal.eval(stack);\n  }\n};\nvar EventHandler = class _EventHandler {\n  constructor(handlerVal, args = []) {\n    this.handlerVal = handlerVal;\n    this.args = args;\n  }\n  getHandlerAndArgs(stack, _event) {\n    const argValues = new Array(this.args.length);\n    for (let i = 0; i < argValues.length; i++) argValues[i] = this.args[i].eval(stack);\n    return [this.handlerVal.evalAsHandler(stack), argValues];\n  }\n  static parse(s, px) {\n    const r = parseReceiveHandler(s, px);\n    return r === null ? null : new _EventHandler(r.handlerVal, r.args);\n  }\n};\n\n// src/iteration.js\nvar SEQ_INFO = /* @__PURE__ */ Symbol.for(\"tutuca.seqInfo\");\nvar normalizeRange = (start, end, size) => {\n  let s = start == null ? 0 : start < 0 ? size + start : start;\n  let e = end == null ? size : end < 0 ? size + end : end;\n  s = s < 0 ? 0 : s > size ? size : s;\n  e = e < 0 ? 0 : e > size ? size : e;\n  return [s, e < s ? s : e];\n};\nvar nativeIndexedIter = (seq, visit, start, end) => {\n  const [s, e] = normalizeRange(start, end, seqSize(seq));\n  for (let i = s; i < e; i++) visit(i, seq[i], \"si\");\n};\nvar nativeKeyedIter = (seq, visit, start, end) => {\n  const [s, e] = normalizeRange(start, end, seqSize(seq));\n  let i = 0;\n  for (const [key, value] of seqEntries(seq)) {\n    if (i >= e) break;\n    if (i >= s) visit(key, value, \"sk\");\n    i++;\n  }\n};\nvar unknownIter = () => {\n};\nvar getSeqInfo = (seq) => isIndexedSeq(seq) ? nativeIndexedIter : isKeyedSeq(seq) || isSetSeq(seq) ? nativeKeyedIter : seq?.[SEQ_INFO] ?? unknownIter;\nvar filterAlwaysTrue = (_key, _value, _iterData) => true;\nvar nullLoopWith = (seq) => ({ iterData: { seq } });\nvar unpackLoopResult = (result, seq) => {\n  const value = result ?? {};\n  return {\n    iterData: value.iterData ?? { seq },\n    start: value.start,\n    end: value.end,\n    keys: value.keys\n  };\n};\nvar makeLoopCtx = (stack, filter) => ({\n  lookup: (name) => stack.lookupBind(name),\n  filter: (key, value, iterData) => filter.call(stack.it, key, value, iterData)\n});\nvar callEnricher = (enricher, it, binds, key, value, iterData) => {\n  enricher.call(it, binds, key, value, iterData);\n  console.assert(\n    binds.key === key && binds.value === value,\n    \"@enrich-with handlers must not overwrite binds.key or binds.value\"\n  );\n  binds.key = key;\n  binds.value = value;\n};\nfunction bindsForKey({ seq, it, loopWith, enricher, ctx }, key) {\n  const value = seqGet(seq, key, null);\n  const binds = { key, value };\n  if (enricher) {\n    const { iterData } = unpackLoopResult(loopWith.call(it, seq, ctx), seq);\n    callEnricher(enricher, it, binds, key, value, iterData);\n  }\n  return binds;\n}\nvar visitKeys = (seq, keys, visit) => {\n  const attrName = isIndexedSeq(seq) ? \"si\" : \"sk\";\n  for (const key of keys) visit(key, seqGet(seq, key), attrName);\n};\nfunction walkLoopBindings({ seq, it, filter, loopWith, enricher, ctx }, visit) {\n  const { iterData, start, end, keys } = unpackLoopResult(loopWith.call(it, seq, ctx), seq);\n  const visitOne = (key, value, attrName) => {\n    const binds = { key, value };\n    if (enricher) callEnricher(enricher, it, binds, key, value, iterData);\n    visit(key, value, attrName, binds);\n  };\n  if (keys) visitKeys(seq, keys, visitOne);\n  else\n    getSeqInfo(seq)(\n      seq,\n      (key, value, attrName) => {\n        if (filter.call(it, key, value, iterData)) visitOne(key, value, attrName);\n      },\n      start,\n      end\n    );\n}\n\n// src/vdom.js\nvar HTML_NS = \"http://www.w3.org/1999/xhtml\";\nvar SVG_NS = \"http://www.w3.org/2000/svg\";\nvar MATH_NS = \"http://www.w3.org/1998/Math/MathML\";\nvar isNamespaced = (node) => {\n  const ns = node.namespaceURI;\n  return ns !== null && ns !== HTML_NS;\n};\nvar isForeignObject = (tag) => tag.length === 13 && tag.toLowerCase() === \"foreignobject\";\nvar effectiveNs = (vnode, opts) => vnode.namespace ?? opts.namespace ?? null;\nfunction childOpts(vnode, ns, opts) {\n  const target = ns === SVG_NS && isForeignObject(vnode.tag) ? null : ns;\n  return target === (opts.namespace ?? null) ? opts : { ...opts, namespace: target };\n}\nvar NEVER_ASSIGN = new Set(\n  \"width height href list form tabIndex download rowSpan colSpan role popover\".split(\" \")\n);\nvar PROP_ATTR_NAME = { className: \"class\", htmlFor: \"for\" };\nfunction applyProperties(node, props) {\n  const namespaced = isNamespaced(node);\n  for (const name in props) setProp(node, name, props[name], namespaced);\n}\nfunction setProp(node, name, value, namespaced) {\n  if (name === \"dangerouslySetInnerHTML\") {\n    if (value === void 0) node.replaceChildren();\n    else {\n      const html2 = value.__html ?? \"\";\n      if (html2 !== node.innerHTML) node.innerHTML = html2;\n    }\n    return;\n  }\n  if (typeof value === \"function\") return;\n  const usesProp = !namespaced && !NEVER_ASSIGN.has(name) && name in node;\n  if (usesProp && value != null) {\n    try {\n      node[name] = value;\n      return;\n    } catch {\n    }\n  }\n  if (value == null || value === false && name[4] !== \"-\") {\n    if (usesProp) {\n      try {\n        node[name] = \"\";\n      } catch {\n      }\n      node.removeAttribute(PROP_ATTR_NAME[name] ?? name);\n    } else node.removeAttribute(name);\n  } else node.setAttribute(name, value);\n}\nfunction applyValueLast(node, value) {\n  if (node.tagName === \"PROGRESS\" && (value == null || value === 0)) {\n    node.removeAttribute(\"value\");\n  } else {\n    setProp(node, \"value\", value, isNamespaced(node));\n  }\n}\nvar VBase = class {\n};\nvar getKey = (child) => child instanceof VNode ? child.key : void 0;\nvar isIterable = (obj) => obj != null && typeof obj !== \"string\" && typeof obj[Symbol.iterator] === \"function\";\nfunction childsEqual(a, b) {\n  if (a === b) return true;\n  for (let i = 0; i < a.length; i++) if (!a[i].isEqualTo(b[i])) return false;\n  return true;\n}\nfunction appendChildNodes(parent, childs, opts) {\n  for (const child of childs) parent.appendChild(child.toDom(opts));\n}\nfunction addChild(normalizedChildren, child) {\n  if (child == null) return;\n  if (isIterable(child)) {\n    for (const c of child) addChild(normalizedChildren, c);\n  } else if (child instanceof VBase) {\n    if (child instanceof VFragment) normalizedChildren.push(...child.childs);\n    else normalizedChildren.push(child);\n  } else normalizedChildren.push(new VText(child));\n}\nvar VText = class _VText extends VBase {\n  constructor(text) {\n    super();\n    this.text = String(text);\n  }\n  get nodeType() {\n    return 3;\n  }\n  isEqualTo(other) {\n    return other instanceof _VText && this.text === other.text;\n  }\n  toDom(opts) {\n    return opts.document.createTextNode(this.text);\n  }\n};\nvar VComment = class _VComment extends VBase {\n  constructor(text) {\n    super();\n    this.text = text;\n  }\n  get nodeType() {\n    return 8;\n  }\n  isEqualTo(other) {\n    return other instanceof _VComment && this.text === other.text;\n  }\n  toDom(opts) {\n    return opts.document.createComment(this.text);\n  }\n};\nvar VFragment = class _VFragment extends VBase {\n  constructor(childs) {\n    super();\n    this.childs = [];\n    addChild(this.childs, childs);\n  }\n  get nodeType() {\n    return 11;\n  }\n  isEqualTo(other) {\n    if (!(other instanceof _VFragment) || this.childs.length !== other.childs.length) return false;\n    return childsEqual(this.childs, other.childs);\n  }\n  toDom(opts) {\n    const fragment = opts.document.createDocumentFragment();\n    appendChildNodes(fragment, this.childs, opts);\n    return fragment;\n  }\n};\nvar VNode = class _VNode extends VBase {\n  constructor(tag, attrs, childs, key, namespace) {\n    super();\n    this.tag = tag;\n    this.attrs = attrs ?? {};\n    this.childs = childs ?? [];\n    this.key = key != null ? String(key) : void 0;\n    this.namespace = typeof namespace === \"string\" ? namespace : null;\n  }\n  get nodeType() {\n    return 1;\n  }\n  isSameKind(other) {\n    return this.tag === other.tag && this.namespace === other.namespace && this.key === other.key;\n  }\n  isEqualTo(other) {\n    if (this === other) return true;\n    if (!(other instanceof _VNode) || !this.isSameKind(other) || this.childs.length !== other.childs.length) {\n      return false;\n    }\n    if (this.attrs !== other.attrs) {\n      for (const key in this.attrs) if (this.attrs[key] !== other.attrs[key]) return false;\n      for (const key in other.attrs) if (!Object.hasOwn(this.attrs, key)) return false;\n    }\n    return childsEqual(this.childs, other.childs);\n  }\n  toDom(opts) {\n    const doc = opts.document;\n    const ns = effectiveNs(this, opts);\n    const tag = ns !== null && this.tag === this.tag.toUpperCase() ? this.tag.toLowerCase() : this.tag;\n    const attrs = this.attrs;\n    const createOpts = attrs.is != null ? { is: attrs.is } : void 0;\n    const node = ns === null ? doc.createElement(tag, createOpts) : doc.createElementNS(ns, tag, createOpts);\n    const cOpts = childOpts(this, ns, opts);\n    applyAttrs(node, attrs, () => appendChildNodes(node, this.childs, cOpts));\n    return node;\n  }\n};\nfunction applyAttrs(node, attrs, placeChildren) {\n  const hasValue = \"value\" in attrs;\n  const hasChecked = \"checked\" in attrs;\n  if (hasValue || hasChecked) {\n    const { value: _v, checked: _c, ...rest } = attrs;\n    applyProperties(node, rest);\n  } else applyProperties(node, attrs);\n  placeChildren();\n  if (hasValue) applyValueLast(node, attrs.value);\n  if (hasChecked) setProp(node, \"checked\", attrs.checked, isNamespaced(node));\n}\nfunction diffProps(a, b) {\n  if (a === b) return null;\n  let diff = null;\n  for (const aKey in a) {\n    if (!Object.hasOwn(b, aKey)) {\n      diff ??= {};\n      diff[aKey] = void 0;\n    } else if (a[aKey] !== b[aKey]) {\n      diff ??= {};\n      diff[aKey] = b[aKey];\n    }\n  }\n  for (const bKey in b) {\n    if (!Object.hasOwn(a, bKey)) {\n      diff ??= {};\n      diff[bKey] = b[bKey];\n    }\n  }\n  return diff;\n}\nfunction morphNode(domNode, source, target, opts) {\n  if (source === target || source.isEqualTo(target)) return domNode;\n  const type3 = source.nodeType;\n  if (type3 === target.nodeType) {\n    if (type3 === 3 || type3 === 8) {\n      domNode.data = target.text;\n      return domNode;\n    }\n    if (type3 === 1 && source.isSameKind(target)) {\n      const propsDiff = diffProps(source.attrs, target.attrs);\n      const placeChildren = () => {\n        if (target.attrs.dangerouslySetInnerHTML) return;\n        const ns = effectiveNs(target, opts);\n        morphChildren(domNode, source.childs, target.childs, childOpts(target, ns, opts));\n      };\n      if (propsDiff) applyAttrs(domNode, propsDiff, placeChildren);\n      else placeChildren();\n      if (!(propsDiff && \"value\" in propsDiff) && source.tag === \"SELECT\") {\n        if (target.attrs.value !== void 0) applyValueLast(domNode, target.attrs.value);\n      }\n      return domNode;\n    }\n    if (type3 === 11) {\n      morphChildren(domNode, source.childs, target.childs, opts);\n      return domNode;\n    }\n  }\n  const newNode = target.toDom(opts);\n  domNode.parentNode?.replaceChild(newNode, domNode);\n  return newNode;\n}\nfunction morphChildren(parentDom, oldChilds, newChilds, opts) {\n  if (oldChilds.length === 0) {\n    appendChildNodes(parentDom, newChilds, opts);\n    return;\n  }\n  if (newChilds.length === 0) {\n    parentDom.replaceChildren();\n    return;\n  }\n  if (oldChilds.length === newChilds.length) {\n    let hasKey = false;\n    for (let i = 0; i < oldChilds.length; i++) {\n      if (getKey(oldChilds[i]) != null || getKey(newChilds[i]) != null) {\n        hasKey = true;\n        break;\n      }\n    }\n    if (!hasKey) {\n      let dom = parentDom.firstChild;\n      for (let i = 0; i < oldChilds.length; i++) {\n        const next = dom.nextSibling;\n        morphNode(dom, oldChilds[i], newChilds[i], opts);\n        dom = next;\n      }\n      return;\n    }\n  }\n  const domNodes = Array.from(parentDom.childNodes);\n  const oldKeyMap = /* @__PURE__ */ Object.create(null);\n  for (let i = 0; i < oldChilds.length; i++) {\n    const key = getKey(oldChilds[i]);\n    if (key != null) oldKeyMap[key] = i;\n  }\n  const used2 = new Uint8Array(oldChilds.length);\n  let unkeyedCursor = 0;\n  for (let j = 0; j < newChilds.length; j++) {\n    const newChild = newChilds[j];\n    const newKey = getKey(newChild);\n    let oldIdx = -1;\n    if (newKey != null) {\n      if (newKey in oldKeyMap && !used2[oldKeyMap[newKey]]) oldIdx = oldKeyMap[newKey];\n    } else {\n      while (unkeyedCursor < oldChilds.length) {\n        if (!used2[unkeyedCursor] && getKey(oldChilds[unkeyedCursor]) == null) {\n          oldIdx = unkeyedCursor++;\n          break;\n        }\n        unkeyedCursor++;\n      }\n    }\n    if (oldIdx >= 0) {\n      used2[oldIdx] = 1;\n      const newDom = morphNode(domNodes[oldIdx], oldChilds[oldIdx], newChild, opts);\n      const ref = parentDom.childNodes[j] ?? null;\n      if (newDom !== ref) parentDom.insertBefore(newDom, ref);\n    } else {\n      const ref = parentDom.childNodes[j] ?? null;\n      parentDom.insertBefore(newChild.toDom(opts), ref);\n    }\n  }\n  for (let i = oldChilds.length - 1; i >= 0; i--)\n    if (!used2[i] && domNodes[i].parentNode === parentDom) parentDom.removeChild(domNodes[i]);\n}\nfunction render(vnode, container, options, prev) {\n  if (vnode == null) {\n    container.replaceChildren();\n    return { vnode: null, dom: null };\n  }\n  const isFragment = vnode instanceof VFragment;\n  if (prev && prev.vnode instanceof VFragment === isFragment) {\n    const oldDom = isFragment ? container : prev.dom;\n    const newDom = morphNode(oldDom, prev.vnode, vnode, options);\n    return { vnode, dom: isFragment ? container : newDom };\n  }\n  const domNode = vnode.toDom(options);\n  container.replaceChildren(domNode);\n  return { vnode, dom: isFragment ? container : domNode };\n}\nfunction h(tagName, properties, children, namespace) {\n  const props = {};\n  let key;\n  if (properties) {\n    for (const propName in properties) {\n      const propVal = properties[propName];\n      if (propName === \"key\") key = propVal;\n      else if (propName === \"namespace\") namespace = namespace ?? propVal;\n      else props[propName] = propVal;\n    }\n  }\n  if (namespace == null) {\n    const lower = tagName.toLowerCase();\n    if (lower === \"svg\") {\n      namespace = SVG_NS;\n      tagName = \"svg\";\n    } else if (lower === \"math\") {\n      namespace = MATH_NS;\n      tagName = \"math\";\n    }\n  }\n  const c = tagName.charCodeAt(0);\n  const tag = namespace == null && c >= 97 && c <= 122 && tagName === tagName.toLowerCase() ? tagName.toUpperCase() : tagName;\n  const normalizedChildren = [];\n  addChild(normalizedChildren, children);\n  return new VNode(tag, props, normalizedChildren, key, namespace);\n}\n\n// src/anode.js\nfunction renderTarget(val, stack) {\n  if (val instanceof DynVal) {\n    const loc = stack.lookupDynamicLocated(val.name);\n    if (loc?.path == null) return [loc?.value ?? null, stack.renderPath, null];\n    return [loc.value, stack.renderPath.pushFrame(loc.path), loc.path];\n  }\n  const step = val.toPathItem?.() ?? null;\n  if (step === null) return [val.eval(stack), stack.renderPath, null];\n  const path2 = stack.renderPath.pushItem(step);\n  return [val.eval(stack), path2, stack.pendingFrame ? path2.toTransactionPath() : null];\n}\nvar BaseNode = class {\n  render(_stack, _rx) {\n    return null;\n  }\n  // Stamp a `data-*` attribute on the element(s) this node renders. A no-op for\n  // nodes that produce no element of their own (text, `<x render*>`): a view whose\n  // root is one of those records its component boundary in the `§Comp§` meta\n  // comment instead (see Renderer._rValComp).\n  setDataAttr(_key, _val) {\n  }\n  isConstant() {\n    return false;\n  }\n  isWhiteSpace() {\n    return false;\n  }\n  optimize() {\n  }\n};\nvar TextNode = class extends BaseNode {\n  constructor(val) {\n    super();\n    this.val = val;\n  }\n  render(_stack, _rx) {\n    return this.val;\n  }\n  isWhiteSpace() {\n    for (let i = 0; i < this.val.length; i++) {\n      const c = this.val.charCodeAt(i);\n      if (!(c === 32 || c === 10 || c === 9 || c === 13)) return false;\n    }\n    return true;\n  }\n  hasNewLine() {\n    for (let i = 0; i < this.val.length; i++) {\n      const c = this.val.charCodeAt(i);\n      if (c === 10 || c === 13) return true;\n    }\n    return false;\n  }\n  condenseWhiteSpace(replacement = \"\") {\n    this.val = replacement;\n  }\n  isConstant() {\n    return true;\n  }\n};\nvar CommentNode = class extends TextNode {\n  render(_stack, rx) {\n    return rx.renderComment(this.val);\n  }\n};\nfunction optimizeNode(node) {\n  if (node.isConstant()) return new RenderOnceNode(node);\n  node.optimize();\n  return node;\n}\nvar ChildsNode = class extends BaseNode {\n  constructor(childs) {\n    super();\n    this.childs = childs;\n  }\n  isConstant() {\n    return this.childs.every((v) => v.isConstant());\n  }\n  optimize() {\n    const { childs } = this;\n    for (let i = 0; i < childs.length; i++) childs[i] = optimizeNode(childs[i]);\n  }\n};\nvar DomNode = class extends ChildsNode {\n  constructor(tagName, attrs, childs, namespace = null) {\n    super(childs);\n    this.tagName = tagName;\n    this.attrs = attrs;\n    this.namespace = namespace;\n  }\n  render(stack, rx) {\n    const childNodes = new Array(this.childs.length);\n    for (let i = 0; i < childNodes.length; i++) childNodes[i] = this.childs[i].render(stack, rx);\n    return rx.renderTag(this.tagName, this.attrs.eval(stack), childNodes, this.namespace);\n  }\n  setDataAttr(key, val) {\n    this.attrs.setDataAttr(key, val);\n  }\n  isConstant() {\n    return this.attrs.isConstant() && super.isConstant();\n  }\n};\nvar FragmentNode = class extends ChildsNode {\n  render(stack, rx) {\n    return rx.renderFragment(this.childs.map((c) => c.render(stack, rx)));\n  }\n  setDataAttr(key, val) {\n    for (const child of this.childs) child.setDataAttr(key, val);\n  }\n};\nvar maybeFragment = (xs) => xs.length === 1 ? xs[0] : new FragmentNode(xs);\nvar VALID_NODE_RE = /^[a-zA-Z][a-zA-Z0-9-]*$/;\nvar ANode = class _ANode extends BaseNode {\n  constructor(nodeId, val) {\n    super();\n    this.nodeId = nodeId;\n    this.val = val;\n  }\n  // The addressing step this node contributes to an event's dispatch path, given\n  // the `StepCtx` of the meta that named it; null when it addresses nothing.\n  toPathStep(_ctx) {\n    return this.val?.toPathItem?.() ?? null;\n  }\n  static parse(html2, px) {\n    const nodes = px.parseHTML(html2);\n    if (nodes.length === 0) return new CommentNode(\"Empty View in ANode.parse\");\n    if (nodes.length === 1) return _ANode.fromDOM(nodes[0], px);\n    const childs = [];\n    for (let i = 0; i < nodes.length; i++) {\n      const child = _ANode.fromDOM(nodes[i], px);\n      if (child !== null) childs.push(child);\n    }\n    const trimmed = condenseChildsWhites(childs);\n    if (trimmed.length === 0) return new CommentNode(\"Empty View in ANode.parse\");\n    return maybeFragment(trimmed);\n  }\n  static fromDOM(node, px) {\n    if (node.nodeType === 3) return new TextNode(node.textContent);\n    if (node.nodeType === 8) return new CommentNode(node.textContent);\n    const { childNodes, attributes: attrs, tagName: tag } = node;\n    const childs = [];\n    for (let i = 0; i < childNodes.length; i++) {\n      const child = _ANode.fromDOM(childNodes[i], px);\n      if (child !== null) childs.push(child);\n    }\n    const prevTag = px.currentTag;\n    px.currentTag = tag;\n    try {\n      const isPseudoX = attrs[0]?.name === \"@x\";\n      if (tag === \"X\" || isPseudoX) return parseXOp(attrs, childs, isPseudoX ? 1 : 0, px);\n      else if (tag.charCodeAt(1) === 58 && (tag.charCodeAt(0) === 88 || tag.charCodeAt(0) === 120)) {\n        const macroName = tag.slice(2).toLowerCase();\n        if (macroName === \"slot\") {\n          const slotName = attrs.getNamedItem(\"name\")?.value ?? \"_\";\n          return px.frame.macroSlots[slotName] ?? maybeFragment(childs);\n        }\n        const [nAttrs, wrappers] = new AttrParser(px).parse(attrs, true);\n        px.onAttributes(nAttrs, wrappers, null, true, tag);\n        return wrap(px.newMacroNode(macroName, nAttrs.toMacroVars(), childs), px, wrappers);\n      } else if (VALID_NODE_RE.test(tag)) {\n        const [nAttrs, wrappers, textChild] = new AttrParser(px).parse(attrs);\n        px.onAttributes(nAttrs, wrappers, textChild, false, tag);\n        if (textChild) childs.unshift(new RenderTextNode(null, textChild));\n        const domChilds = tag !== \"PRE\" ? condenseChildsWhites(childs) : childs;\n        const ns = node.namespaceURI;\n        const namespace = ns && ns !== HTML_NS ? ns : null;\n        return wrap(new DomNode(tag, nAttrs, domChilds, namespace), px, wrappers);\n      }\n      return new CommentNode(`Error: InvalidTagName ${tag}`);\n    } finally {\n      px.currentTag = prevTag;\n    }\n  }\n};\nfunction parseXOp(attrs, childs, opIdx, px) {\n  if (attrs.length <= opIdx) return maybeFragment(childs);\n  const { name, value } = attrs[opIdx];\n  if (X_OPS[name]?.ignoresChildren && hasMeaningfulChilds(childs))\n    px.onParseIssue(\"x-op-ignores-children\", { op: name });\n  const asAttr = attrs.getNamedItem(\"as\")?.value ?? null;\n  const as = asAttr === null ? null : parseViewName(asAttr, px);\n  let node;\n  switch (name) {\n    case \"slot\":\n      node = new SlotNode(null, new ConstVal(value), maybeFragment(childs));\n      break;\n    case \"text\":\n      node = px.addNodeIf(RenderTextNode, parseXOpVal(name, value, px, parseText));\n      break;\n    case \"render\":\n      node = px.addNodeIf(RenderNode, parseXOpVal(name, value, px, parseComponent), as);\n      break;\n    case \"render-it\":\n      node = px.addNode(RenderItNode, as);\n      break;\n    case \"render-each\":\n      node = parseRenderEach(px, value, as, attrs);\n      break;\n    case \"show\": {\n      const val = parseXOpVal(name, value, px, parseBool);\n      node = px.addNodeIf(ShowNode, val, maybeFragment(childs));\n      break;\n    }\n    case \"hide\": {\n      const val = parseXOpVal(name, value, px, parseBool);\n      node = px.addNodeIf(HideNode, val, maybeFragment(childs));\n      break;\n    }\n    default:\n      px.onParseIssue(\"unknown-x-op\", { name, value });\n      return new CommentNode(`Error: InvalidSpecialTagOp ${name}=${value}`);\n  }\n  return processXExtras(node, attrs, name, opIdx + 1, px);\n}\nfunction parseXOpVal(opName, value, px, parserFn) {\n  const val = parserFn(value, px);\n  if (val === null) px.onParseIssue(\"bad-value\", { role: \"x-op\", op: opName, value });\n  return val;\n}\nfunction parseViewName(s, px) {\n  return parseText(s, px) ?? new ConstVal(s);\n}\nfunction processXExtras(node, attrs, opName, startIdx, px) {\n  const { consumed, wrappable } = X_OPS[opName];\n  const wrappers = [];\n  for (let i = startIdx; i < attrs.length; i++) {\n    const a = attrs[i];\n    const aName = a.name;\n    if (consumed.has(aName)) continue;\n    if (wrappable && aName.charCodeAt(0) === 64) {\n      const wrapper = X_OPS[aName.slice(1)]?.wrapper;\n      if (wrapper) {\n        wrappers.push([wrapper, parseBool(a.value, px)]);\n        continue;\n      }\n    }\n    const issueInfo = { op: opName, name: aName, value: a.value };\n    px.onParseIssue(\"unknown-x-attr\", issueInfo);\n  }\n  for (let i = wrappers.length - 1; i >= 0; i--) {\n    const [Cls, val] = wrappers[i];\n    const wrapper = px.addNodeIf(Cls, val, node);\n    if (wrapper !== null) node = wrapper;\n  }\n  return node;\n}\nfunction wrap(node, px, wrappers) {\n  if (wrappers) {\n    for (let i = wrappers.length - 1; i >= 0; i--) {\n      const wrapperNode = makeWrapperNode(wrappers[i], px);\n      if (wrapperNode) {\n        wrapperNode.wrapNode(node);\n        node = wrapperNode;\n      }\n    }\n  }\n  return node;\n}\nfunction makeWrapperNode(data, px) {\n  const Cls = WRAPPER_NODES[data.name];\n  const node = Cls.register ? px.addNodeIf(Cls, data.val) : data.val && new Cls(null, data.val);\n  if (node !== null && data.name === \"each\") {\n    node.iterInfo.enrichWithVal = data.enrichWithVal ?? null;\n    node.iterInfo.whenVal = data.whenVal ?? null;\n    node.iterInfo.loopWithVal = data.loopWithVal ?? null;\n  }\n  return node;\n}\nvar MacroNode = class extends BaseNode {\n  constructor(name, attrs, slots, px) {\n    super();\n    this.name = name;\n    this.attrs = attrs;\n    this.slots = slots;\n    this.px = px;\n    this.node = null;\n    this.dataAttrs = {};\n  }\n  compile(scope) {\n    const { name, attrs, slots } = this;\n    if (this.px.isInsideMacro(name)) throw new Error(`Recursive macro expansion: ${name}`);\n    const macro2 = scope.lookupMacro(name);\n    if (macro2 === null) this.node = new CommentNode(`bad macro: ${name}`);\n    else {\n      const vars = { ...macro2.defaults, ...attrs };\n      this.node = macro2.expand(this.px.enterMacro(name, vars, slots));\n      for (const key in this.dataAttrs) this.node.setDataAttr(key, this.dataAttrs[key]);\n    }\n  }\n  render(stack, rx) {\n    return this.node.render(stack, rx);\n  }\n  setDataAttr(key, val) {\n    this.dataAttrs[key] = val;\n  }\n  isConstant() {\n    return this.node.isConstant();\n  }\n  optimize() {\n    this.node = optimizeNode(this.node);\n  }\n};\nvar Macro = class {\n  constructor(defaults, rawView) {\n    this.defaults = defaults;\n    this.rawView = rawView;\n  }\n  expand(px) {\n    return ANode.parse(this.rawView, px);\n  }\n};\nvar RenderViewId = class extends ANode {\n  constructor(nodeId, val, viewVal) {\n    super(nodeId, val);\n    this.viewVal = viewVal;\n  }\n  // The `as=` view selector, evaluated against the host (enclosing) stack like\n  // `@push-view`. Null when `as=` is absent, so the renderer falls through to\n  // `stack.lookupBestView`.\n  evalViewName(stack) {\n    return this.viewVal ? this.viewVal.eval(stack) : null;\n  }\n};\nvar RenderNode = class extends RenderViewId {\n  render(stack, rx) {\n    const [value, renderPath, base] = renderTarget(this.val, stack);\n    const newStack = stack.enter(value, {}, true, renderPath, false);\n    return rx.renderIt(newStack, this, this.evalViewName(stack), base);\n  }\n  // A `*name` target contributes no step: the site recorded the absolute base it\n  // resumed at, and event reconstruction turns that into a continuation frame.\n  toPathStep(ctx) {\n    if (this.val instanceof DynVal) return null;\n    return super.toPathStep(ctx);\n  }\n};\nvar RenderItNode = class extends RenderViewId {\n  render(stack, rx) {\n    const base = stack.pendingFrame ? stack.renderPath.toTransactionPath() : null;\n    const newStack = stack.enter(stack.it, {}, true, stack.renderPath, false);\n    return rx.renderIt(newStack, this, this.evalViewName(stack), base);\n  }\n  toPathStep(ctx) {\n    const next = ctx.next();\n    if (next === null) return null;\n    const nextNode = next.resolveNode();\n    if (nextNode instanceof EachNode && next.hasKey) {\n      if (nextNode.val instanceof DynVal) return null;\n      return new EachRenderItStep(nextNode.val.name, next.key);\n    }\n    return null;\n  }\n};\nfunction parseRenderEach(px, value, as, attrs) {\n  const seqVal = parseXOpVal(\"render-each\", value, px, parseSequence);\n  if (seqVal === null) return null;\n  const renderIt = px.addNode(RenderItNode, as);\n  const { whenVal, loopWithVal } = parseIterationDirectives(attrs, px);\n  const each2 = px.addNodeIf(EachNode, seqVal);\n  each2.iterInfo.whenVal = whenVal;\n  each2.iterInfo.loopWithVal = loopWithVal;\n  each2.fromRenderEach = true;\n  each2.wrapNode(renderIt);\n  return each2;\n}\nvar RenderTextNode = class extends ANode {\n  render(stack, _rx) {\n    return this.val.eval(stack);\n  }\n};\nvar RenderOnceNode = class extends BaseNode {\n  constructor(node) {\n    super();\n    this.node = node;\n    this._render = (stack, rx) => {\n      const dom = node.render(stack, rx);\n      this._render = (_stack, _rx) => dom;\n      return dom;\n    };\n  }\n  render(stack, rx) {\n    return this._render(stack, rx);\n  }\n};\nvar WrapperNode = class extends ANode {\n  constructor(nodeId, val, node = null) {\n    super(nodeId, val);\n    this.node = node;\n  }\n  wrapNode(node) {\n    this.node = node;\n  }\n  setDataAttr(key, val) {\n    this.node.setDataAttr(key, val);\n  }\n  optimize() {\n    this.node = optimizeNode(this.node);\n  }\n  static register = false;\n};\nvar ShowNode = class extends WrapperNode {\n  render(stack, rx) {\n    return this.val.eval(stack) ? this.node.render(stack, rx) : null;\n  }\n};\nvar HideNode = class extends WrapperNode {\n  render(stack, rx) {\n    return this.val.eval(stack) ? null : this.node.render(stack, rx);\n  }\n};\nvar PushViewNameNode = class extends WrapperNode {\n  render(stack, rx) {\n    return this.node.render(stack.pushViewName(this.val.eval(stack)), rx);\n  }\n};\nvar SlotNode = class extends WrapperNode {\n  // Marker instead of `instanceof`: newMacroNode receives nodes that may come\n  // from a different copy of this module (CLI tools import src/ while the\n  // module under render imports the dist bundle), and cross-copy instanceof\n  // is always false.\n  isSlotNode = true;\n  optimize() {\n    this.node.optimize();\n  }\n};\nvar ScopeNode = class extends WrapperNode {\n  render(stack, rx) {\n    const binds = this.val.evalAsHandler(stack)?.call(stack.it) ?? {};\n    const dom = this.node.render(stack.enter(stack.it, binds, false), rx);\n    return rx.renderScopeMeta(this.nodeId, dom);\n  }\n  toPathStep(_ctx) {\n    return new ScopeBindStep(this.val);\n  }\n  wrapNode(node) {\n    this.node = node;\n    this.node.setDataAttr(\"data-nid\", this.nodeId);\n  }\n  static register = true;\n};\nvar EachNode = class extends WrapperNode {\n  constructor(nodeId, val) {\n    super(nodeId, val);\n    this.iterInfo = new IterInfo();\n  }\n  render(stack, rx) {\n    return rx.renderEachWhen(stack, this);\n  }\n  // The sequence and the three loop handlers, resolved against `stack`.\n  evalIter(stack) {\n    const { whenVal, loopWithVal, enrichWithVal } = this.iterInfo;\n    return {\n      seq: this.val.eval(stack) ?? [],\n      filter: whenVal?.evalAsHandler(stack) ?? filterAlwaysTrue,\n      loopWith: loopWithVal?.evalAsHandler(stack) ?? nullLoopWith,\n      enricher: enrichWithVal?.evalAsHandler(stack) ?? null\n    };\n  }\n  // Rebuild the per-item binds for `key` (see iteration.js bindsForKey).\n  enrichBinds(stack, key) {\n    const { seq, filter, loopWith, enricher } = this.evalIter(stack);\n    const ctx = makeLoopCtx(stack, filter);\n    return bindsForKey({ seq, it: stack.it, loopWith, enricher, ctx }, key);\n  }\n  toPathStep(ctx) {\n    return ctx.hasKey ? new EachBindStep(this, ctx.key) : null;\n  }\n  // Where one item lives, for the render path. `@each` re-binds `it` to the item\n  // whether or not the body is a component, so the position moves either way and\n  // the step has to address it — `.rows` iterated at `key` IS `rows[key]`.\n  // Null for a dynamic sequence: `*rows` carries its own absolute path and enters\n  // a continuation frame instead (see Renderer.renderEachWhen).\n  itemStep(key) {\n    return this.val instanceof FieldVal ? new SeqStep(this.val.name, key) : null;\n  }\n  static register = true;\n};\nvar IterInfo = class {\n  constructor() {\n    this.whenVal = null;\n    this.loopWithVal = null;\n    this.enrichWithVal = null;\n  }\n};\nfunction xOp(consumed = [], { wrappable = false, wrapper = null, ignoresChildren = false } = {}) {\n  return { consumed: new Set(consumed), wrappable, wrapper, ignoresChildren };\n}\nvar X_OPS = {\n  slot: xOp(),\n  text: xOp([], { wrappable: true, ignoresChildren: true }),\n  render: xOp([\"as\"], { wrappable: true, ignoresChildren: true }),\n  \"render-it\": xOp([\"as\"], { wrappable: true, ignoresChildren: true }),\n  // `@when`/`@loop-with` are consumed here (handled in parseRenderEach) so\n  // `processXExtras` does not flag them as unknown attrs.\n  \"render-each\": xOp([\"as\", \"@when\", \"@loop-with\"], {\n    wrappable: true,\n    ignoresChildren: true\n  }),\n  show: xOp([], { wrapper: ShowNode }),\n  hide: xOp([], { wrapper: HideNode })\n};\nvar WRAPPER_NODES = {\n  show: ShowNode,\n  hide: HideNode,\n  each: EachNode,\n  // internal wrapper produced by a loop-less @enrich-with (no surface @scope directive)\n  scope: ScopeNode,\n  \"push-view\": PushViewNameNode\n};\nvar ParseContext = class {\n  constructor(document2 = globalThis.document) {\n    this.document = document2;\n    this.nodes = [];\n    this.events = [];\n    this.macroNodes = [];\n    this.parent = null;\n    this.frame = {};\n    this.currentTag = null;\n  }\n  isInsideMacro(name) {\n    return this.frame.macroName === name || this.parent?.isInsideMacro(name);\n  }\n  // A macro body parses in a child context that shares every accumulator with\n  // its parent (nodes, events, macroNodes, and whatever a subclass collects) and\n  // differs only in its frame. Cloned rather than constructed so a subclass\n  // keeps collecting inside macro bodies without re-implementing this — the\n  // lint and class-set contexts used to lose (or had to copy) exactly that.\n  enterMacro(macroName, macroVars, macroSlots) {\n    const child = Object.create(Object.getPrototypeOf(this));\n    return Object.assign(child, this, {\n      frame: { macroName, macroVars, macroSlots },\n      parent: this,\n      currentTag: null\n    });\n  }\n  parseHTML(html2) {\n    const t = this.document.createElement(\"template\");\n    t.innerHTML = html2;\n    return t.content.childNodes;\n  }\n  addNodeIf(Class, val, extra) {\n    if (val !== null) {\n      const nodeId = this.nodes.length;\n      const node = new Class(nodeId, val, extra);\n      this.nodes.push(node);\n      return node;\n    }\n    return null;\n  }\n  // For nodes that carry no value (e.g. RenderItNode, which reads stack.it at\n  // render time); addNodeIf treats a null val as a failed parse.\n  addNode(Class, extra) {\n    const nodeId = this.nodes.length;\n    const node = new Class(nodeId, null, extra);\n    this.nodes.push(node);\n    return node;\n  }\n  registerEvents() {\n    const id = this.events.length;\n    const events2 = new NodeEvents(id);\n    this.events.push(events2);\n    return events2;\n  }\n  newMacroNode(macroName, mAttrs, childs) {\n    const anySlot = [];\n    const slots = { _: new FragmentNode(anySlot) };\n    for (const child of childs)\n      if (child.isSlotNode) slots[child.val.val] = child.node;\n      else if (!child.isWhiteSpace()) anySlot.push(child);\n    const node = new MacroNode(macroName, mAttrs, slots, this);\n    this.macroNodes.push(node);\n    return node;\n  }\n  compile(scope) {\n    for (let i = 0; i < this.macroNodes.length; i++) this.macroNodes[i].compile(scope);\n  }\n  *genEventNames() {\n    for (const event of this.events) yield* event.genEventNames();\n  }\n  getEventForId(id) {\n    return this.events[id] ?? null;\n  }\n  getNodeForId(id) {\n    return this.nodes[id] ?? null;\n  }\n  onAttributes(_attrs, _wrapperAttrs, _textChild, _isMacroCall, _tag) {\n  }\n  onParseIssue(kind, info) {\n    console.warn(`tutuca parse issue [${kind}]`, info);\n  }\n};\nvar _htmlBlockTags = \"ADDRESS,ARTICLE,ASIDE,BLOCKQUOTE,CAPTION,COL,COLGROUP,DETAILS,DIALOG,DIV,DD,DL,DT,FIELDSET,FIGCAPTION,FIGURE,FOOTER,FORM,H1,H2,H3,H4,H5,H6,HEADER,HGROUP,HR,LEGEND,LI,MAIN,MENU,NAV,OL,P,PRE,SECTION,SUMMARY,TABLE,TBODY,TD,TFOOT,TH,THEAD,TR,UL\";\nvar HTML_BLOCK_TAGS = new Set(_htmlBlockTags.split(\",\"));\nvar isBlockDomNode = (n) => {\n  const node = n instanceof FragmentNode ? n.childs[0] : n;\n  return node instanceof DomNode && HTML_BLOCK_TAGS.has(node.tagName);\n};\nvar isEmptyText = (c) => c instanceof TextNode && c.val === \"\";\nvar isIgnorableXChild = (c) => c instanceof CommentNode || c.isWhiteSpace();\nvar hasMeaningfulChilds = (childs) => childs.some((c) => !isIgnorableXChild(c));\nfunction trimEdgeWhite(node) {\n  if (!node.isWhiteSpace()) return false;\n  node.condenseWhiteSpace();\n  return true;\n}\nfunction condenseChildsWhites(childs) {\n  if (childs.length === 0) return childs;\n  const last = childs.length - 1;\n  let emptied = trimEdgeWhite(childs[0]);\n  if (last > 0 && trimEdgeWhite(childs[last])) emptied = true;\n  for (let i = 1; i < last; i++) {\n    const cur = childs[i];\n    if (!(cur.isWhiteSpace() && cur.hasNewLine())) continue;\n    const bothBlock = isBlockDomNode(childs[i - 1]) && isBlockDomNode(childs[i + 1]);\n    cur.condenseWhiteSpace(bothBlock ? \"\" : \" \");\n    if (bothBlock) emptied = true;\n  }\n  return emptied ? childs.filter((c) => !isEmptyText(c)) : childs;\n}\nvar View = class {\n  constructor(name, rawView = \"No View Defined\", style = \"\") {\n    this.name = name;\n    this.rawView = rawView;\n    this.style = style;\n    this.anode = null;\n    this.ctx = null;\n  }\n  compile(ctx, scope, cid) {\n    this.ctx = ctx;\n    this.anode = ANode.parse(this.rawView, ctx);\n    this.anode.setDataAttr(\"data-cid\", cid);\n    this.anode.setDataAttr(\"data-vid\", this.name);\n    this.ctx.compile(scope);\n    this.anode = optimizeNode(this.anode);\n  }\n  render(stack, rx) {\n    if (this.anode === null) {\n      throw new Error(\n        `tutuca: view \"${this.name}\" was rendered before it was compiled — its component is not registered in this app/scope. Source: ${String(this.rawView).slice(0, 80).replace(/\\s+/g, \" \")}…`\n      );\n    }\n    return this.anode.render(stack, rx);\n  }\n};\nvar NodeEvents = class {\n  constructor(id) {\n    this.id = id;\n    this.handlers = [];\n  }\n  add(name, handlerCall, modifiers) {\n    this.handlers.push(new NodeEvent(name, handlerCall, modifiers));\n  }\n  *genEventNames() {\n    for (const handler of this.handlers) yield handler.name;\n  }\n  getHandlersFor(eventName) {\n    let r = null;\n    for (const handler of this.handlers)\n      if (handler.name === eventName) {\n        r ??= [];\n        r.push(handler);\n      }\n    return r;\n  }\n};\nvar NodeEvent = class {\n  constructor(name, handlerCall, modifiers) {\n    this.name = name;\n    this.handlerCall = handlerCall;\n    this.modifierWrapper = compileModifiers(name, modifiers);\n    this.modifiers = modifiers;\n  }\n  getHandlerAndArgs(stack, event) {\n    const r = this.handlerCall.getHandlerAndArgs(stack, event);\n    r[0] = this.modifierWrapper(r[0], event);\n    return r;\n  }\n};\nvar fwdIfCtxPred = (pred) => (w) => (that, f, args, ctx) => pred(ctx) ? w(that, f, args, ctx) : that;\nvar fwdIfEventPred = (pred) => fwdIfCtxPred(({ e }) => pred(e));\nvar fwdIfKey = (keyName) => fwdIfEventPred(keyIs(keyName));\nvar fwdCtrl = fwdIfEventPred(macCtrl);\nvar fwdMeta = fwdIfEventPred((e) => e.metaKey);\nvar fwdAlt = fwdIfEventPred((e) => e.altKey);\nvar MOD_WRAPPERS_FOR_ANY_EVENT = {\n  ctrl: fwdCtrl,\n  cmd: fwdCtrl,\n  meta: fwdMeta,\n  alt: fwdAlt\n};\nvar MOD_WRAPPERS_BY_EVENT = {\n  keydown: {\n    send: fwdIfKey(\"Enter\"),\n    cancel: fwdIfKey(\"Escape\")\n  }\n};\nvar MOD_EFFECTS = {\n  prevent: (e) => e.preventDefault?.(),\n  stop: (e) => e.stopPropagation?.()\n};\nvar NO_WRAPPERS = {};\nvar identityModifierWrapper = (f, _ctx) => f;\nfunction compileModifiers(eventName, names) {\n  if (names.length === 0) return identityModifierWrapper;\n  const wrappers = MOD_WRAPPERS_BY_EVENT[eventName] ?? NO_WRAPPERS;\n  const effects = [];\n  for (const name of names) {\n    const effect = MOD_EFFECTS[name];\n    if (effect !== void 0) effects.push(effect);\n  }\n  let w = effects.length === 0 ? (that, f, args, _ctx) => f.apply(that, args) : (that, f, args, ctx) => {\n    for (const effect of effects) effect(ctx.e);\n    return f.apply(that, args);\n  };\n  for (const name of names) {\n    const wrapper = wrappers[name] ?? MOD_WRAPPERS_FOR_ANY_EVENT[name];\n    if (wrapper !== void 0) w = wrapper(w);\n  }\n  return (f, ctx) => function(...args) {\n    return w(this, f, args, ctx);\n  };\n}\n\n// src/stack.js\nvar STOP = /* @__PURE__ */ Symbol(\"STOP\");\nvar NEXT = /* @__PURE__ */ Symbol(\"NEXT\");\nvar DEFAULT_ROUTE = [\"dyn\", \"lex\"];\nvar isTypeName = (s) => {\n  const c = s.charCodeAt(0);\n  return c >= 65 && c <= 90;\n};\nfunction lookup(chain, name, dv = null) {\n  let n = chain;\n  while (n !== null) {\n    const r = n[0].lookup(name);\n    if (r === STOP) return dv;\n    if (r !== NEXT) return r;\n    n = n[1];\n  }\n  return dv;\n}\nvar BindFrame = class {\n  constructor(it, binds, isFrame) {\n    this.it = it;\n    this.binds = binds;\n    this.isFrame = isFrame;\n  }\n  lookup(name) {\n    const v = this.binds[name];\n    return v === void 0 ? this.isFrame ? STOP : NEXT : v;\n  }\n};\nvar DynFrame = class {\n  constructor(binds, types) {\n    this.binds = binds;\n    this.types = types;\n  }\n  lookup(name) {\n    const v = (isTypeName(name) ? this.types : this.binds)[name];\n    return v === void 0 ? NEXT : v;\n  }\n};\nfunction computeViewsId(views) {\n  let s = \"\";\n  let n = views;\n  while (n !== null) {\n    s += n[0];\n    n = n[1];\n  }\n  return s === \"main\" ? \"\" : s;\n}\nvar Stack = class _Stack {\n  constructor(fields) {\n    Object.assign(this, fields);\n  }\n  _with(patch) {\n    return new _Stack({ ...this, ...patch });\n  }\n  // Evaluate every provide the entered component publishes and push them as one\n  // dynBinds frame, keyed by NAME. A value is published together with the absolute\n  // path it lives at: the same declaration is read as `*name` AND resumed at by\n  // `<x render=\"*name\">`, so a consumer needs both halves. Types go in the same\n  // frame's other map. No-op with no provides.\n  _pushProvides() {\n    const comp = this.comps.getCompFor(this.it);\n    if (comp == null) return this;\n    const { provide, provideType } = comp;\n    const binds = {};\n    const types = {};\n    let has2 = false;\n    const base = this._publishBase();\n    for (const k in provide) {\n      const step = provide[k].toPathItem?.() ?? null;\n      if (step === null) continue;\n      const value = provide[k].eval(this);\n      binds[k] = { value, path: base === null ? null : base.concat([step]) };\n      has2 = true;\n    }\n    for (const k in provideType) {\n      types[k] = provideType[k];\n      has2 = true;\n    }\n    if (!has2) return this;\n    return this._with({ dynBinds: [new DynFrame(binds, types), this.dynBinds] });\n  }\n  // The absolute address of the component being entered, or null when this\n  // position cannot be written down as one. Frame-only steps carry bindings and\n  // address nothing, so they are compacted away first; what is left is checked\n  // against the value actually being rendered, because a scope CAN move the\n  // render position without contributing an addressing step (a plain `@each`\n  // body re-binds `it` to the item while its rebuild step is an identity).\n  //\n  // A null base still publishes the VALUE — `*name` reads it fine — but there is\n  // nowhere to resume, so `<x render=\"*name\">` renders nothing rather than\n  // editing whatever happens to live at the address we guessed.\n  _publishBase() {\n    const base = this.renderPath.toTransactionPath().compact();\n    return base.lookup(this.root, NOT_FOUND) === this.it ? base : null;\n  }\n  static root(comps, it, ctx = null) {\n    return new _Stack({\n      comps,\n      root: it,\n      it,\n      binds: [new BindFrame(it, {}, true), null],\n      dynBinds: [new DynFrame({}, {}), null],\n      views: [\"main\", null],\n      viewsId: \"\",\n      renderPath: new DispatchPath(),\n      pendingFrame: false,\n      ctx\n    })._pushProvides();\n  }\n  // `renderPath` defaults to this stack's own: an ordinary scope does not move.\n  // `pendingFrame` clears on a component frame (which emits the base) and is\n  // inherited by transparent scopes, which have to carry it to the next boundary.\n  enter(it, bindings = {}, isFrame = true, renderPath = this.renderPath, pendingFrame = null) {\n    const stack = this._with({\n      it,\n      binds: [new BindFrame(it, bindings, isFrame), this.binds],\n      renderPath,\n      pendingFrame: pendingFrame ?? (isFrame ? false : this.pendingFrame)\n    });\n    return isFrame ? stack._pushProvides() : stack;\n  }\n  pushViewName(name) {\n    const views = [name, this.views];\n    return this._with({ views, viewsId: computeViewsId(views) });\n  }\n  // Published types are stable per scope and would only churn the render cache, so\n  // the cache key covers values alone.\n  _pushDynBindValuesToArray(arr, comp) {\n    for (const k in comp.provide) arr.push(this.lookupDynamic(k));\n    for (const k in comp.lookup) arr.push(this.lookupDynamic(k));\n  }\n  // `*name`: the nearest binding above (including this component's own provides,\n  // pushed on entering it), else a path registered in the component's lexical\n  // scope, else this component's declared default, else null.\n  //\n  // One chain walk and no producer resolution: a lookup names what it WANTS, so the\n  // frame it wants is keyed by that name. The default belongs to the CONSUMER's\n  // declaration and is evaluated against the consumer's stack, which is why it is\n  // consulted only after the whole chain has missed.\n  lookupDynamicLocated(name) {\n    if (isTypeName(name)) return null;\n    const v = lookup(this.dynBinds, name);\n    if (v != null) return v;\n    const comp = this.comps.getCompFor(this.it);\n    if (comp == null) return null;\n    const path2 = comp.scope?.lookupPath?.(name) ?? null;\n    if (path2 !== null) {\n      const value2 = path2.lookup(this.root, NOT_FOUND);\n      if (value2 !== NOT_FOUND) return { value: value2, path: path2 };\n    }\n    const dval = comp.lookup[name] ?? null;\n    if (dval === null) return null;\n    const step = dval.toPathItem?.() ?? null;\n    const value = dval.eval(this);\n    return step === null ? { value, path: null } : { value, path: this.renderPath.toTransactionPath().concat([step]) };\n  }\n  lookupDynamic(name) {\n    if (isTypeName(name)) return lookup(this.dynBinds, name);\n    return this.lookupDynamicLocated(name)?.value ?? null;\n  }\n  lookupBind(name) {\n    return lookup(this.binds, name);\n  }\n  lookupFieldRaw(name) {\n    return this.it[name] ?? null;\n  }\n  lookupMethod(name) {\n    const fn = this.it[name];\n    return fn instanceof Function ? fn.call(this.it) : null;\n  }\n  // The dispatched DOM event / drag info, read only by EventMemberVal's\n  // `e.<member>` handler args. Null outside a live event transaction (`ctx` is\n  // then a send/intent transaction, which carries no `e`).\n  lookupEvent() {\n    return this.ctx?.e ?? null;\n  }\n  lookupDragInfo() {\n    return this.ctx?.dragInfo ?? null;\n  }\n  getHandlerFor(name, key) {\n    return this.comps.getHandlerFor(this.it, name, key);\n  }\n  lookupBestView(views, defaultViewName) {\n    let n = this.views;\n    while (n !== null) {\n      const view = views[n[0]];\n      if (view !== void 0) return view;\n      n = n[1];\n    }\n    return views[defaultViewName];\n  }\n};\nvar NOT_FOUND = /* @__PURE__ */ Symbol(\"NOT_FOUND\");\n\n// src/components.js\nvar COMPONENT = /* @__PURE__ */ Symbol.for(\"tutuca.component\");\nvar Components = class {\n  constructor() {\n    this.byId = /* @__PURE__ */ new Map();\n  }\n  registerComponent(Comp) {\n    this.byId.set(Comp.id, Comp);\n  }\n  getComponentForId(id) {\n    return this.byId.get(id) ?? null;\n  }\n  getCompFor(v) {\n    const Comp = v?.constructor;\n    return Comp?.[COMPONENT] ? Comp : null;\n  }\n  getHandlerFor(v, name, key) {\n    return this.getCompFor(v)?.[key][name] ?? null;\n  }\n  // The `lex` leg of an intent's route: the handlers registered on the scope chain of\n  // the component that raised it, innermost first. A list, not a first match — see\n  // ComponentStack.lookupIntentChain.\n  getIntentChainFor(v, name) {\n    return this.getCompFor(v)?.scope.lookupIntentChain(name) ?? [];\n  }\n  compileStyles() {\n    const styles2 = [];\n    for (const Comp of this.byId.values()) styles2.push(Comp.compileStyle());\n    return styles2.join(\"\\n\");\n  }\n};\nvar ComponentStack = class _ComponentStack {\n  constructor(comps = new Components(), parent = null) {\n    this.comps = comps;\n    this.parent = parent;\n    this.byName = {};\n    this.intentsByName = {};\n    this.macros = {};\n    this.paths = {};\n  }\n  enter() {\n    return new _ComponentStack(this.comps, this);\n  }\n  registerComponents(comps, opts) {\n    const { aliases: aliases2 = {}, paths } = opts ?? {};\n    if (paths) this.registerPaths(paths);\n    for (let i = 0; i < comps.length; i++) {\n      const Comp = comps[i];\n      Comp.scope = this.enter();\n      this.comps.registerComponent(Comp);\n      this.byName[Comp.name] = Comp;\n    }\n    for (const alias in aliases2) {\n      const comp = this.byName[aliases2[alias]];\n      console.assert(this.byName[alias] === void 0, \"alias overrides component\", alias);\n      if (comp !== void 0) this.byName[alias] = comp;\n      else console.warn(\"alias\", alias, \"to inexistent component\", aliases2[alias]);\n    }\n  }\n  // Register lowercase names as absolute paths from the app state root. A\n  // descendant that declares one in its `lookup` reads and renders `*name` without\n  // anything above it publishing one — which is what makes a session, a theme or a\n  // host-owned value available in its natural registration scope, instead of forcing\n  // an application root whose only job is to `provide` it. Register on a nested\n  // scope to narrow a name; nearest registration wins.\n  //\n  // Uppercase names are ignored: a component TYPE is what `lookupComponent` already\n  // answers, and a type has no path.\n  registerPaths(paths) {\n    for (const name in paths) {\n      if (isTypeName(name)) {\n        console.warn(\"registerPaths: a type name has no path\", name);\n        continue;\n      }\n      this.paths[name] = paths[name].toPath();\n    }\n  }\n  lookupPath(name) {\n    return this.paths[name] ?? this.parent?.lookupPath(name) ?? null;\n  }\n  registerMacros(macros) {\n    for (const key in macros) {\n      const lower = key.toLowerCase();\n      console.assert(this.macros[lower] === void 0, \"macro key collision\", lower);\n      this.macros[lower] = macros[key];\n    }\n  }\n  getCompFor(v) {\n    return this.comps.getCompFor(v);\n  }\n  // Handlers that answer an intent's `lex` leg. A name maps to a LIST of plain\n  // functions, because the leg walks: a handler that returns PASS declines and hands\n  // the intent to the next one. Each runs with no `this` and takes a dispatcher\n  // context as its final argument; resolving answers, throwing fails. A bare function\n  // is accepted as a one-element list.\n  registerIntentHandlers(handlers) {\n    for (const name in handlers) {\n      const fns = handlers[name];\n      this.intentsByName[name] = Array.isArray(fns) ? fns : [fns];\n    }\n  }\n  // Innermost scope first, then outward. Concatenated rather than first-match, so a\n  // declining handler can hand the intent to one further up.\n  lookupIntentChain(name) {\n    const here = this.intentsByName[name] ?? [];\n    const up = this.parent?.lookupIntentChain(name) ?? [];\n    return up.length === 0 ? here : here.concat(up);\n  }\n  lookupComponent(name) {\n    return this.byName[name] ?? this.parent?.lookupComponent(name) ?? null;\n  }\n  // Whether anything in this scope chain provides `name`. Existence only: a lookup\n  // names what it WANTS and takes whoever is nearest above it at render time, so\n  // there is no producer to identify — several components may publish one name and\n  // the live render ancestry decides. Used by the linter to tell a lookup that can\n  // be satisfied from one that never will be.\n  hasProvider(name) {\n    for (const compName in this.byName) {\n      if (this.byName[compName].provide?.[name] !== void 0) return true;\n    }\n    return this.parent?.hasProvider(name) ?? false;\n  }\n  lookupMacro(name) {\n    return this.macros[name] ?? this.parent?.lookupMacro(name) ?? null;\n  }\n};\nvar isString = (v) => typeof v === \"string\";\nvar _rawSpecKeys = \"name view style commonStyle globalStyle receive intent alter views provide lookup fields methods statics\";\nvar KNOWN_SPEC_KEYS = new Set(_rawSpecKeys.split(\" \"));\nvar _compId = 0;\nfunction initComponent(Class, o) {\n  Class[COMPONENT] = Class;\n  Class.id = _compId++;\n  Class.views = { main: new View(\"main\", o.view, o.style) };\n  Class.commonStyle = o.commonStyle ?? \"\";\n  Class.globalStyle = o.globalStyle ?? \"\";\n  Class.receive = o.receive ?? {};\n  Class.intent = o.intent ?? {};\n  Class.alter = o.alter ?? {};\n  for (const name in o.views ?? {}) {\n    const v = o.views[name];\n    const { view, style } = isString(v) ? { view: v } : v;\n    Class.views[name] = new View(name, view, style);\n  }\n  Class._rawProvide = o.provide ?? {};\n  Class._rawLookup = o.lookup ?? [];\n  Class.provide = {};\n  Class.provideType = {};\n  Class.lookup = {};\n  Class.scope = null;\n  Class.spec = o;\n  Class.extra = {};\n  for (const key of Object.keys(o)) if (!KNOWN_SPEC_KEYS.has(key)) Class.extra[key] = o[key];\n  return Object.assign(Class, COMPONENT_METHODS);\n}\nvar COMPONENT_METHODS = {\n  compile(ParseContext2) {\n    for (const name in this.views)\n      this.views[name].compile(new ParseContext2(), this.scope, this.id);\n    const ctx = this.views.main.ctx;\n    for (const key in this._rawProvide) {\n      if (isTypeName(key)) {\n        if (this._rawProvide[key] === \"self\") this.provideType[key] = this;\n        continue;\n      }\n      const val = parseProvide(this._rawProvide[key], ctx);\n      if (val) this.provide[key] = val;\n    }\n    for (const entry of this._rawLookup) {\n      const name = isString(entry) ? entry : isString(entry?.name) ? entry.name : null;\n      if (name === null) continue;\n      const defStr = isString(entry?.default) ? entry.default : null;\n      this.lookup[name] = defStr === null ? null : parseField(defStr, ctx);\n    }\n    for (const key in this.lookup)\n      if (this.provide[key] !== void 0)\n        console.warn(\"name declared in both provide and lookup\", this.name, key);\n  },\n  getView(name) {\n    return this.views[name] ?? this.views.main;\n  },\n  getEventForId(id, viewName) {\n    return this.getView(viewName).ctx.getEventForId(id);\n  },\n  getNodeForId(id, viewName) {\n    return this.getView(viewName).ctx.getNodeForId(id);\n  },\n  compileStyle() {\n    const { id, commonStyle, globalStyle, views } = this;\n    const styles2 = commonStyle ? [`[data-cid=\"${id}\"]{${commonStyle}}`] : [];\n    if (globalStyle !== \"\") styles2.push(globalStyle);\n    for (const name in views) {\n      const { style } = views[name];\n      if (style !== \"\") styles2.push(`[data-cid=\"${id}\"][data-vid=\"${name}\"]{${style}}`);\n    }\n    return styles2.join(\"\\n\");\n  }\n};\n\n// src/util/parsectx.js\nvar ParseCtxClassSetCollector = class extends ParseContext {\n  constructor(...args) {\n    super(...args);\n    this.classes = /* @__PURE__ */ new Set();\n  }\n  _addClasses(s) {\n    for (const v of s.split(/\\s+/)) {\n      this.classes.add(v);\n    }\n  }\n  onAttributes(attrs, _wrapperAttrs, _textChild, _isMacroCall, _tag) {\n    if (Array.isArray(attrs.items)) {\n      for (const attr of attrs.items) {\n        if (attr.name !== \"class\") {\n          continue;\n        }\n        const { val, thenVal, elseVal } = attr;\n        if (thenVal !== void 0) {\n          this._maybeAddVal(thenVal);\n          this._maybeAddVal(elseVal);\n        } else {\n          this._maybeAddVal(val);\n        }\n      }\n    } else {\n      const attr = attrs.items.class;\n      if (attr) {\n        this._addClasses(attr);\n      }\n    }\n  }\n  _maybeAddVal(value) {\n    if (!this._maybeAddStrTpl(value) && typeof value?.val === \"string\") {\n      this._addClasses(value.val);\n    }\n  }\n  _maybeAddStrTpl(value) {\n    if (value?.vals !== void 0) {\n      for (const val of value.vals) {\n        if (val instanceof ConstVal && val.val !== \"\") {\n          this._addClasses(val.val);\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n};\nfunction collectAppClassesInSet(app) {\n  const classes = /* @__PURE__ */ new Set();\n  for (const Comp of app.comps.byId.values()) {\n    for (const key in Comp.views) {\n      const view = Comp.views[key];\n      for (const name of view.ctx.classes) {\n        classes.add(name);\n      }\n    }\n  }\n  return classes;\n}\n\n// tools/core/html-tokenizer.js\nvar CharCodes = {\n  Tab: 9,\n  NewLine: 10,\n  FormFeed: 12,\n  CarriageReturn: 13,\n  Space: 32,\n  ExclamationMark: 33,\n  Number: 35,\n  SingleQuote: 39,\n  DoubleQuote: 34,\n  Dash: 45,\n  Slash: 47,\n  Zero: 48,\n  Nine: 57,\n  Semi: 59,\n  Lt: 60,\n  Eq: 61,\n  Gt: 62,\n  Questionmark: 63,\n  UpperA: 65,\n  LowerA: 97,\n  UpperF: 70,\n  LowerF: 102,\n  UpperZ: 90,\n  LowerZ: 122,\n  LowerX: 120,\n  OpeningSquareBracket: 91\n};\nvar State = {\n  Text: 1,\n  BeforeTagName: 2,\n  InTagName: 3,\n  InSelfClosingTag: 4,\n  BeforeClosingTagName: 5,\n  InClosingTagName: 6,\n  AfterClosingTagName: 7,\n  // Attributes\n  BeforeAttributeName: 8,\n  InAttributeName: 9,\n  AfterAttributeName: 10,\n  BeforeAttributeValue: 11,\n  InAttributeValueDq: 12,\n  InAttributeValueSq: 13,\n  InAttributeValueNq: 14,\n  // Declarations\n  BeforeDeclaration: 15,\n  InDeclaration: 16,\n  // Processing instructions\n  InProcessingInstruction: 17,\n  // Comments & CDATA\n  BeforeComment: 18,\n  CDATASequence: 19,\n  DeclarationSequence: 20,\n  InSpecialComment: 21,\n  InCommentLike: 22,\n  // Special tags\n  SpecialStartSequence: 23,\n  InSpecialTag: 24,\n  InPlainText: 25\n};\nfunction isWhitespace(c) {\n  return c === CharCodes.Space || c === CharCodes.NewLine || c === CharCodes.Tab || c === CharCodes.FormFeed || c === CharCodes.CarriageReturn;\n}\nfunction isEndOfTagSection(c) {\n  return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n  return c >= CharCodes.LowerA && c <= CharCodes.LowerZ || c >= CharCodes.UpperA && c <= CharCodes.UpperZ;\n}\nvar QuoteType = {\n  NoValue: 0,\n  Unquoted: 1,\n  Single: 2,\n  Double: 3\n};\nvar Sequences = {\n  Empty: new Uint8Array(0),\n  Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),\n  // CDATA[\n  CdataEnd: new Uint8Array([93, 93, 62]),\n  // ]]>\n  CommentEnd: new Uint8Array([45, 45, 33, 62]),\n  // `--!>`\n  Doctype: new Uint8Array([100, 111, 99, 116, 121, 112, 101]),\n  // `doctype`\n  IframeEnd: new Uint8Array([60, 47, 105, 102, 114, 97, 109, 101]),\n  // `</iframe`\n  NoembedEnd: new Uint8Array([60, 47, 110, 111, 101, 109, 98, 101, 100]),\n  // `</noembed`\n  NoframesEnd: new Uint8Array([60, 47, 110, 111, 102, 114, 97, 109, 101, 115]),\n  // `</noframes`\n  Plaintext: new Uint8Array([60, 47, 112, 108, 97, 105, 110, 116, 101, 120, 116]),\n  // `</plaintext`\n  ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),\n  // `<\\/script`\n  StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),\n  // `</style`\n  TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]),\n  // `</title`\n  TextareaEnd: new Uint8Array([60, 47, 116, 101, 120, 116, 97, 114, 101, 97]),\n  // `</textarea`\n  XmpEnd: new Uint8Array([60, 47, 120, 109, 112])\n  // `</xmp`\n};\nvar specialStartSequences = /* @__PURE__ */ new Map([\n  [Sequences.IframeEnd[2], Sequences.IframeEnd],\n  [Sequences.NoembedEnd[2], Sequences.NoembedEnd],\n  [Sequences.Plaintext[2], Sequences.Plaintext],\n  [Sequences.ScriptEnd[2], Sequences.ScriptEnd],\n  [Sequences.TitleEnd[2], Sequences.TitleEnd],\n  [Sequences.XmpEnd[2], Sequences.XmpEnd]\n]);\nvar HtmlTokenizer = class {\n  constructor({ xmlMode = false, recognizeSelfClosing = xmlMode } = {}, cbs) {\n    this.cbs = cbs;\n    this.xmlMode = xmlMode;\n    this.recognizeSelfClosing = recognizeSelfClosing;\n    this.state = State.Text;\n    this.buffer = \"\";\n    this.sectionStart = 0;\n    this.index = 0;\n    this.isSpecial = false;\n    this.running = true;\n    this.offset = 0;\n    this.currentSequence = Sequences.Empty;\n    this.sequenceIndex = 0;\n  }\n  reset() {\n    this.state = State.Text;\n    this.buffer = \"\";\n    this.sectionStart = 0;\n    this.index = 0;\n    this.isSpecial = false;\n    this.currentSequence = Sequences.Empty;\n    this.sequenceIndex = 0;\n    this.running = true;\n    this.offset = 0;\n  }\n  write(chunk) {\n    this.offset += this.buffer.length;\n    this.buffer = chunk;\n    this.parse();\n  }\n  end() {\n    if (this.running) this.finish();\n  }\n  pause() {\n    this.running = false;\n  }\n  resume() {\n    this.running = true;\n    if (this.index < this.buffer.length + this.offset) {\n      this.parse();\n    }\n  }\n  stateText(c) {\n    if (c === CharCodes.Lt || this.fastForwardTo(CharCodes.Lt)) {\n      if (this.index > this.sectionStart) {\n        this.cbs.ontext(this.sectionStart, this.index);\n      }\n      this.state = State.BeforeTagName;\n      this.sectionStart = this.index;\n    }\n  }\n  enterTagBody() {\n    if (this.currentSequence === Sequences.Plaintext) {\n      this.currentSequence = Sequences.Empty;\n      this.state = State.InPlainText;\n    } else if (this.isSpecial) {\n      this.state = State.InSpecialTag;\n      this.sequenceIndex = 0;\n    } else {\n      this.state = State.Text;\n    }\n  }\n  stateSpecialStartSequence(c) {\n    const lower = c | 32;\n    if (this.sequenceIndex < this.currentSequence.length) {\n      if (lower === this.currentSequence[this.sequenceIndex]) {\n        this.sequenceIndex++;\n        return;\n      }\n      if (this.sequenceIndex === 3) {\n        if (this.currentSequence === Sequences.ScriptEnd && lower === Sequences.StyleEnd[3]) {\n          this.currentSequence = Sequences.StyleEnd;\n          this.sequenceIndex = 4;\n          return;\n        }\n        if (this.currentSequence === Sequences.TitleEnd && lower === Sequences.TextareaEnd[3]) {\n          this.currentSequence = Sequences.TextareaEnd;\n          this.sequenceIndex = 4;\n          return;\n        }\n      } else if (this.sequenceIndex === 4 && this.currentSequence === Sequences.NoembedEnd && lower === Sequences.NoframesEnd[4]) {\n        this.currentSequence = Sequences.NoframesEnd;\n        this.sequenceIndex = 5;\n        return;\n      }\n    } else if (isEndOfTagSection(c)) {\n      this.sequenceIndex = 0;\n      this.state = State.InTagName;\n      this.stateInTagName(c);\n      return;\n    }\n    this.isSpecial = false;\n    this.currentSequence = Sequences.Empty;\n    this.sequenceIndex = 0;\n    this.state = State.InTagName;\n    this.stateInTagName(c);\n  }\n  stateCDATASequence(c) {\n    if (c === Sequences.Cdata[this.sequenceIndex]) {\n      if (++this.sequenceIndex === Sequences.Cdata.length) {\n        this.state = State.InCommentLike;\n        this.currentSequence = Sequences.CdataEnd;\n        this.sequenceIndex = 0;\n        this.sectionStart = this.index + 1;\n      }\n    } else {\n      this.sequenceIndex = 0;\n      if (this.xmlMode) {\n        this.state = State.InDeclaration;\n        this.stateInDeclaration(c);\n      } else {\n        this.state = State.InSpecialComment;\n        this.stateInSpecialComment(c);\n      }\n    }\n  }\n  fastForwardTo(c) {\n    while (++this.index < this.buffer.length + this.offset) {\n      if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n        return true;\n      }\n    }\n    this.index = this.buffer.length + this.offset - 1;\n    return false;\n  }\n  emitComment(offset) {\n    this.cbs.oncomment(this.sectionStart, this.index, offset);\n    this.sequenceIndex = 0;\n    this.sectionStart = this.index + 1;\n    this.state = State.Text;\n  }\n  stateInCommentLike(c) {\n    if (!this.xmlMode && this.currentSequence === Sequences.CommentEnd && this.sequenceIndex <= 1 && this.index === this.sectionStart + this.sequenceIndex && c === CharCodes.Gt) {\n      this.emitComment(this.sequenceIndex);\n    } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === 2 && c === CharCodes.Gt) {\n      this.emitComment(2);\n    } else if (this.currentSequence === Sequences.CommentEnd && this.sequenceIndex === this.currentSequence.length - 1 && c !== CharCodes.Gt) {\n      this.sequenceIndex = Number(c === CharCodes.Dash);\n    } else if (c === this.currentSequence[this.sequenceIndex]) {\n      if (++this.sequenceIndex === this.currentSequence.length) {\n        if (this.currentSequence === Sequences.CdataEnd) {\n          this.cbs.oncdata(this.sectionStart, this.index, 2);\n        } else {\n          this.cbs.oncomment(this.sectionStart, this.index, 3);\n        }\n        this.sequenceIndex = 0;\n        this.sectionStart = this.index + 1;\n        this.state = State.Text;\n      }\n    } else if (this.sequenceIndex === 0) {\n      if (this.fastForwardTo(this.currentSequence[0])) {\n        this.sequenceIndex = 1;\n      }\n    } else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n      this.sequenceIndex = 0;\n    }\n  }\n  isTagStartChar(c) {\n    return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n  }\n  stateInSpecialTag(c) {\n    if (this.sequenceIndex === this.currentSequence.length) {\n      if (isEndOfTagSection(c)) {\n        const endOfText = this.index - this.currentSequence.length;\n        if (this.sectionStart < endOfText) {\n          const actualIndex = this.index;\n          this.index = endOfText;\n          this.cbs.ontext(this.sectionStart, endOfText);\n          this.index = actualIndex;\n        }\n        this.isSpecial = false;\n        this.sectionStart = endOfText + 2;\n        this.stateInClosingTagName(c);\n        return;\n      }\n      this.sequenceIndex = 0;\n    }\n    if ((c | 32) === this.currentSequence[this.sequenceIndex]) {\n      this.sequenceIndex += 1;\n    } else if (this.sequenceIndex === 0) {\n      if (this.fastForwardTo(CharCodes.Lt)) {\n        this.sequenceIndex = 1;\n      }\n    } else {\n      this.sequenceIndex = Number(c === CharCodes.Lt);\n    }\n  }\n  stateBeforeTagName(c) {\n    if (c === CharCodes.ExclamationMark) {\n      this.state = State.BeforeDeclaration;\n      this.sectionStart = this.index + 1;\n    } else if (c === CharCodes.Questionmark) {\n      if (this.xmlMode) {\n        this.state = State.InProcessingInstruction;\n        this.sequenceIndex = 0;\n        this.sectionStart = this.index + 1;\n      } else {\n        this.state = State.InSpecialComment;\n        this.sectionStart = this.index;\n      }\n    } else if (this.isTagStartChar(c)) {\n      this.sectionStart = this.index;\n      const special = this.xmlMode || this.cbs.isInForeignContext?.() ? void 0 : specialStartSequences.get(c | 32);\n      if (special === void 0) {\n        this.state = State.InTagName;\n      } else {\n        this.isSpecial = true;\n        this.currentSequence = special;\n        this.sequenceIndex = 3;\n        this.state = State.SpecialStartSequence;\n      }\n    } else if (c === CharCodes.Slash) {\n      this.state = State.BeforeClosingTagName;\n    } else {\n      this.state = State.Text;\n      this.stateText(c);\n    }\n  }\n  stateInTagName(c) {\n    if (isEndOfTagSection(c)) {\n      this.cbs.onopentagname(this.sectionStart, this.index);\n      this.sectionStart = -1;\n      this.state = State.BeforeAttributeName;\n      this.stateBeforeAttributeName(c);\n    }\n  }\n  stateBeforeClosingTagName(c) {\n    if (isWhitespace(c)) {\n      if (!this.xmlMode) {\n        this.state = State.InSpecialComment;\n        this.sectionStart = this.index;\n      }\n    } else if (c === CharCodes.Gt) {\n      this.state = State.Text;\n      if (!this.xmlMode) {\n        this.sectionStart = this.index + 1;\n      }\n    } else {\n      this.state = this.isTagStartChar(c) ? State.InClosingTagName : State.InSpecialComment;\n      this.sectionStart = this.index;\n    }\n  }\n  stateInClosingTagName(c) {\n    if (isEndOfTagSection(c)) {\n      this.cbs.onclosetag(this.sectionStart, this.index);\n      this.sectionStart = -1;\n      this.state = State.AfterClosingTagName;\n      this.stateAfterClosingTagName(c);\n    }\n  }\n  stateAfterClosingTagName(c) {\n    if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n      this.state = State.Text;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  stateBeforeAttributeName(c) {\n    if (c === CharCodes.Gt) {\n      this.cbs.onopentagend(this.index);\n      this.enterTagBody();\n      this.sectionStart = this.index + 1;\n    } else if (c === CharCodes.Slash) {\n      this.state = State.InSelfClosingTag;\n    } else if (!isWhitespace(c)) {\n      this.state = State.InAttributeName;\n      this.sectionStart = this.index;\n    }\n  }\n  stateInSelfClosingTag(c) {\n    if (c === CharCodes.Gt) {\n      this.cbs.onselfclosingtag(this.index);\n      this.sectionStart = this.index + 1;\n      if (!this.recognizeSelfClosing) {\n        this.enterTagBody();\n        return;\n      }\n      this.state = State.Text;\n      this.isSpecial = false;\n      this.currentSequence = Sequences.Empty;\n    } else if (!isWhitespace(c)) {\n      this.state = State.BeforeAttributeName;\n      this.stateBeforeAttributeName(c);\n    }\n  }\n  stateInAttributeName(c) {\n    if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n      this.cbs.onattribname(this.sectionStart, this.index);\n      this.sectionStart = this.index;\n      this.state = State.AfterAttributeName;\n      this.stateAfterAttributeName(c);\n    }\n  }\n  stateAfterAttributeName(c) {\n    if (c === CharCodes.Eq) {\n      this.state = State.BeforeAttributeValue;\n    } else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n      this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n      this.sectionStart = -1;\n      this.state = State.BeforeAttributeName;\n      this.stateBeforeAttributeName(c);\n    } else if (!isWhitespace(c)) {\n      this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n      this.state = State.InAttributeName;\n      this.sectionStart = this.index;\n    }\n  }\n  stateBeforeAttributeValue(c) {\n    if (c === CharCodes.DoubleQuote) {\n      this.state = State.InAttributeValueDq;\n      this.sectionStart = this.index + 1;\n    } else if (c === CharCodes.SingleQuote) {\n      this.state = State.InAttributeValueSq;\n      this.sectionStart = this.index + 1;\n    } else if (!isWhitespace(c)) {\n      this.sectionStart = this.index;\n      this.state = State.InAttributeValueNq;\n      this.stateInAttributeValueNoQuotes(c);\n    }\n  }\n  handleInAttributeValue(c, quote) {\n    if (c === quote || this.fastForwardTo(quote)) {\n      this.cbs.onattribdata(this.sectionStart, this.index);\n      this.sectionStart = -1;\n      this.cbs.onattribend(\n        quote === CharCodes.DoubleQuote ? QuoteType.Double : QuoteType.Single,\n        this.index + 1\n      );\n      this.state = State.BeforeAttributeName;\n    }\n  }\n  stateInAttributeValueDoubleQuotes(c) {\n    this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n  }\n  stateInAttributeValueSingleQuotes(c) {\n    this.handleInAttributeValue(c, CharCodes.SingleQuote);\n  }\n  stateInAttributeValueNoQuotes(c) {\n    if (isWhitespace(c) || c === CharCodes.Gt) {\n      this.cbs.onattribdata(this.sectionStart, this.index);\n      this.sectionStart = -1;\n      this.cbs.onattribend(QuoteType.Unquoted, this.index);\n      this.state = State.BeforeAttributeName;\n      this.stateBeforeAttributeName(c);\n    }\n  }\n  stateBeforeDeclaration(c) {\n    if (c === CharCodes.OpeningSquareBracket) {\n      this.state = State.CDATASequence;\n      this.sequenceIndex = 0;\n    } else if (this.xmlMode) {\n      this.state = c === CharCodes.Dash ? State.BeforeComment : State.InDeclaration;\n    } else if ((c | 32) === Sequences.Doctype[0]) {\n      this.state = State.DeclarationSequence;\n      this.currentSequence = Sequences.Doctype;\n      this.sequenceIndex = 1;\n    } else if (c === CharCodes.Gt) {\n      this.cbs.oncomment(this.sectionStart, this.index, 0);\n      this.state = State.Text;\n      this.sectionStart = this.index + 1;\n    } else if (c === CharCodes.Dash) {\n      this.state = State.BeforeComment;\n    } else {\n      this.state = State.InSpecialComment;\n    }\n  }\n  stateDeclarationSequence(c) {\n    if (this.sequenceIndex === this.currentSequence.length) {\n      this.state = State.InDeclaration;\n      this.stateInDeclaration(c);\n    } else if ((c | 32) === this.currentSequence[this.sequenceIndex]) {\n      this.sequenceIndex += 1;\n    } else if (c === CharCodes.Gt) {\n      this.cbs.oncomment(this.sectionStart, this.index, 0);\n      this.state = State.Text;\n      this.sectionStart = this.index + 1;\n    } else {\n      this.state = State.InSpecialComment;\n    }\n  }\n  stateInDeclaration(c) {\n    if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n      this.cbs.ondeclaration(this.sectionStart, this.index);\n      this.state = State.Text;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  stateInProcessingInstruction(c) {\n    if (c === CharCodes.Questionmark) {\n      this.sequenceIndex = 1;\n    } else if (c === CharCodes.Gt && this.sequenceIndex === 1) {\n      this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1);\n      this.sequenceIndex = 0;\n      this.state = State.Text;\n      this.sectionStart = this.index + 1;\n    } else {\n      this.sequenceIndex = Number(this.fastForwardTo(CharCodes.Questionmark));\n    }\n  }\n  stateBeforeComment(c) {\n    if (c === CharCodes.Dash) {\n      this.state = State.InCommentLike;\n      this.currentSequence = Sequences.CommentEnd;\n      this.sequenceIndex = 0;\n      this.sectionStart = this.index + 1;\n    } else if (this.xmlMode) {\n      this.state = State.InDeclaration;\n    } else if (c === CharCodes.Gt) {\n      this.cbs.oncomment(this.sectionStart, this.index, 0);\n      this.state = State.Text;\n      this.sectionStart = this.index + 1;\n    } else {\n      this.state = State.InSpecialComment;\n    }\n  }\n  stateInSpecialComment(c) {\n    if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n      this.cbs.oncomment(this.sectionStart, this.index, 0);\n      this.state = State.Text;\n      this.sectionStart = this.index + 1;\n    }\n  }\n  cleanup() {\n    if (this.running && this.sectionStart !== this.index) {\n      if (this.state === State.Text || this.state === State.InPlainText || this.state === State.InSpecialTag && this.sequenceIndex === 0) {\n        this.cbs.ontext(this.sectionStart, this.index);\n        this.sectionStart = this.index;\n      } else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) {\n        this.cbs.onattribdata(this.sectionStart, this.index);\n        this.sectionStart = this.index;\n      }\n    }\n  }\n  shouldContinue() {\n    return this.index < this.buffer.length + this.offset && this.running;\n  }\n  parse() {\n    while (this.shouldContinue()) {\n      const c = this.buffer.charCodeAt(this.index - this.offset);\n      switch (this.state) {\n        case State.Text:\n          this.stateText(c);\n          break;\n        case State.InPlainText:\n          this.index = this.buffer.length + this.offset - 1;\n          break;\n        case State.SpecialStartSequence:\n          this.stateSpecialStartSequence(c);\n          break;\n        case State.InSpecialTag:\n          this.stateInSpecialTag(c);\n          break;\n        case State.CDATASequence:\n          this.stateCDATASequence(c);\n          break;\n        case State.DeclarationSequence:\n          this.stateDeclarationSequence(c);\n          break;\n        case State.InAttributeValueDq:\n          this.stateInAttributeValueDoubleQuotes(c);\n          break;\n        case State.InAttributeName:\n          this.stateInAttributeName(c);\n          break;\n        case State.InCommentLike:\n          this.stateInCommentLike(c);\n          break;\n        case State.InSpecialComment:\n          this.stateInSpecialComment(c);\n          break;\n        case State.BeforeAttributeName:\n          this.stateBeforeAttributeName(c);\n          break;\n        case State.InTagName:\n          this.stateInTagName(c);\n          break;\n        case State.InClosingTagName:\n          this.stateInClosingTagName(c);\n          break;\n        case State.BeforeTagName:\n          this.stateBeforeTagName(c);\n          break;\n        case State.AfterAttributeName:\n          this.stateAfterAttributeName(c);\n          break;\n        case State.InAttributeValueSq:\n          this.stateInAttributeValueSingleQuotes(c);\n          break;\n        case State.BeforeAttributeValue:\n          this.stateBeforeAttributeValue(c);\n          break;\n        case State.BeforeClosingTagName:\n          this.stateBeforeClosingTagName(c);\n          break;\n        case State.AfterClosingTagName:\n          this.stateAfterClosingTagName(c);\n          break;\n        case State.InAttributeValueNq:\n          this.stateInAttributeValueNoQuotes(c);\n          break;\n        case State.InSelfClosingTag:\n          this.stateInSelfClosingTag(c);\n          break;\n        case State.InDeclaration:\n          this.stateInDeclaration(c);\n          break;\n        case State.BeforeDeclaration:\n          this.stateBeforeDeclaration(c);\n          break;\n        case State.BeforeComment:\n          this.stateBeforeComment(c);\n          break;\n        case State.InProcessingInstruction:\n          this.stateInProcessingInstruction(c);\n          break;\n      }\n      this.index++;\n    }\n    this.cleanup();\n  }\n  finish() {\n    this.handleTrailingData();\n    this.cbs.onend();\n  }\n  handleTrailingCommentLikeData(endIndex) {\n    if (this.state !== State.InCommentLike) return false;\n    if (this.currentSequence === Sequences.CdataEnd) {\n      if (this.xmlMode) {\n        if (this.sectionStart < endIndex) {\n          this.cbs.oncdata(this.sectionStart, endIndex, 0);\n        }\n      } else {\n        const cdataStart = this.sectionStart - Sequences.Cdata.length - 1;\n        this.cbs.oncomment(cdataStart, endIndex, 0);\n      }\n    } else {\n      const offset = this.xmlMode ? 0 : Math.min(this.sequenceIndex, Sequences.CommentEnd.length - 1);\n      this.cbs.oncomment(this.sectionStart, endIndex, offset);\n    }\n    return true;\n  }\n  handleTrailingMarkupDeclaration(endIndex) {\n    if (this.xmlMode) {\n      switch (this.state) {\n        case State.InSpecialComment:\n        case State.BeforeComment:\n        case State.CDATASequence:\n        case State.DeclarationSequence:\n        case State.InDeclaration:\n          this.cbs.ontext(this.sectionStart, endIndex);\n          return true;\n        default:\n          return false;\n      }\n    }\n    switch (this.state) {\n      case State.BeforeDeclaration:\n      case State.InSpecialComment:\n      case State.BeforeComment:\n      case State.CDATASequence:\n        this.cbs.oncomment(this.sectionStart, endIndex, 0);\n        return true;\n      case State.DeclarationSequence:\n        if (this.sequenceIndex !== Sequences.Doctype.length) {\n          this.cbs.oncomment(this.sectionStart, endIndex, 0);\n        }\n        return true;\n      case State.InDeclaration:\n        return true;\n      default:\n        return false;\n    }\n  }\n  handleTrailingData() {\n    const endIndex = this.buffer.length + this.offset;\n    if (this.handleTrailingCommentLikeData(endIndex) || this.handleTrailingMarkupDeclaration(endIndex)) {\n      return;\n    }\n    if (this.sectionStart >= endIndex) return;\n    switch (this.state) {\n      case State.InTagName:\n      case State.BeforeAttributeName:\n      case State.BeforeAttributeValue:\n      case State.AfterAttributeName:\n      case State.InAttributeName:\n      case State.InAttributeValueSq:\n      case State.InAttributeValueDq:\n      case State.InAttributeValueNq:\n      case State.InClosingTagName:\n        break;\n      default:\n        this.cbs.ontext(this.sectionStart, endIndex);\n    }\n  }\n};\n\n// tools/core/htmllinter-tables.js\nvar VOID_ELEMENTS = /* @__PURE__ */ new Set([\n  \"area\",\n  \"base\",\n  \"br\",\n  \"col\",\n  \"embed\",\n  \"hr\",\n  \"img\",\n  \"input\",\n  \"link\",\n  \"meta\",\n  \"source\",\n  \"track\",\n  \"wbr\"\n]);\nvar RAW_TEXT_ELEMENTS = /* @__PURE__ */ new Set([\n  \"script\",\n  \"style\",\n  \"iframe\",\n  \"noembed\",\n  \"noframes\",\n  \"noscript\",\n  \"xmp\",\n  \"plaintext\"\n]);\nvar SPECIAL_ELEMENTS = /* @__PURE__ */ new Set([\n  \"address\",\n  \"applet\",\n  \"area\",\n  \"article\",\n  \"aside\",\n  \"base\",\n  \"basefont\",\n  \"bgsound\",\n  \"blockquote\",\n  \"br\",\n  \"button\",\n  \"caption\",\n  \"center\",\n  \"col\",\n  \"colgroup\",\n  \"dd\",\n  \"details\",\n  \"dir\",\n  \"div\",\n  \"dl\",\n  \"dt\",\n  \"embed\",\n  \"fieldset\",\n  \"figcaption\",\n  \"figure\",\n  \"footer\",\n  \"form\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"header\",\n  \"hgroup\",\n  \"hr\",\n  \"iframe\",\n  \"img\",\n  \"input\",\n  \"keygen\",\n  \"li\",\n  \"link\",\n  \"listing\",\n  \"main\",\n  \"marquee\",\n  \"menu\",\n  \"meta\",\n  \"nav\",\n  \"noembed\",\n  \"noframes\",\n  \"noscript\",\n  \"object\",\n  \"ol\",\n  \"p\",\n  \"param\",\n  \"plaintext\",\n  \"pre\",\n  \"script\",\n  \"search\",\n  \"section\",\n  \"select\",\n  \"source\",\n  \"style\",\n  \"summary\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"template\",\n  \"textarea\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"title\",\n  \"tr\",\n  \"track\",\n  \"ul\",\n  \"wbr\",\n  \"xmp\"\n]);\nvar FORMATTING_ELEMENTS = /* @__PURE__ */ new Set([\n  \"a\",\n  \"b\",\n  \"big\",\n  \"code\",\n  \"em\",\n  \"font\",\n  \"i\",\n  \"nobr\",\n  \"s\",\n  \"small\",\n  \"strike\",\n  \"strong\",\n  \"tt\",\n  \"u\"\n]);\nvar DEFAULT_SCOPE_BOUNDARIES = /* @__PURE__ */ new Set([\n  \"applet\",\n  \"caption\",\n  \"html\",\n  \"table\",\n  \"td\",\n  \"th\",\n  \"marquee\",\n  \"object\",\n  \"select\",\n  \"template\"\n  // Foreign-content boundaries: svg, math foreign roots; tracked via ns.\n]);\nvar MATHML_TEXT_INTEGRATION_POINT_NAMES = /* @__PURE__ */ new Set([\"mi\", \"mo\", \"mn\", \"ms\", \"mtext\"]);\nvar SVG_HTML_INTEGRATION_POINT_NAMES = /* @__PURE__ */ new Set([\"foreignobject\", \"desc\", \"title\"]);\nvar SCOPE_LIST_ITEM = /* @__PURE__ */ new Set([...DEFAULT_SCOPE_BOUNDARIES, \"ol\", \"ul\"]);\nvar SCOPE_BUTTON = /* @__PURE__ */ new Set([...DEFAULT_SCOPE_BOUNDARIES, \"button\"]);\nvar SCOPE_DEFAULT = DEFAULT_SCOPE_BOUNDARIES;\nvar SCOPE_TABLE = /* @__PURE__ */ new Set([\"html\", \"table\", \"template\"]);\nvar STANDARD_SVG_CAMEL_ELEMENTS = /* @__PURE__ */ new Set([\n  \"altGlyph\",\n  \"altGlyphDef\",\n  \"altGlyphItem\",\n  \"animateColor\",\n  \"animateMotion\",\n  \"animateTransform\",\n  \"clipPath\",\n  \"feBlend\",\n  \"feColorMatrix\",\n  \"feComponentTransfer\",\n  \"feComposite\",\n  \"feConvolveMatrix\",\n  \"feDiffuseLighting\",\n  \"feDisplacementMap\",\n  \"feDistantLight\",\n  \"feDropShadow\",\n  \"feFlood\",\n  \"feFuncA\",\n  \"feFuncB\",\n  \"feFuncG\",\n  \"feFuncR\",\n  \"feGaussianBlur\",\n  \"feImage\",\n  \"feMerge\",\n  \"feMergeNode\",\n  \"feMorphology\",\n  \"feOffset\",\n  \"fePointLight\",\n  \"feSpecularLighting\",\n  \"feSpotLight\",\n  \"feTile\",\n  \"feTurbulence\",\n  \"foreignObject\",\n  \"glyphRef\",\n  \"linearGradient\",\n  \"radialGradient\",\n  \"textPath\"\n]);\nvar STANDARD_SVG_CAMEL_ATTRS = /* @__PURE__ */ new Set([\n  \"attributeName\",\n  \"attributeType\",\n  \"baseFrequency\",\n  \"baseProfile\",\n  \"calcMode\",\n  \"clipPathUnits\",\n  \"diffuseConstant\",\n  \"edgeMode\",\n  \"filterUnits\",\n  \"glyphRef\",\n  \"gradientTransform\",\n  \"gradientUnits\",\n  \"kernelMatrix\",\n  \"kernelUnitLength\",\n  \"keyPoints\",\n  \"keySplines\",\n  \"keyTimes\",\n  \"lengthAdjust\",\n  \"limitingConeAngle\",\n  \"markerHeight\",\n  \"markerUnits\",\n  \"markerWidth\",\n  \"maskContentUnits\",\n  \"maskUnits\",\n  \"numOctaves\",\n  \"pathLength\",\n  \"patternContentUnits\",\n  \"patternTransform\",\n  \"patternUnits\",\n  \"pointsAtX\",\n  \"pointsAtY\",\n  \"pointsAtZ\",\n  \"preserveAlpha\",\n  \"preserveAspectRatio\",\n  \"primitiveUnits\",\n  \"refX\",\n  \"refY\",\n  \"repeatCount\",\n  \"repeatDur\",\n  \"requiredExtensions\",\n  \"requiredFeatures\",\n  \"specularConstant\",\n  \"specularExponent\",\n  \"spreadMethod\",\n  \"startOffset\",\n  \"stdDeviation\",\n  \"stitchTiles\",\n  \"surfaceScale\",\n  \"systemLanguage\",\n  \"tableValues\",\n  \"targetX\",\n  \"targetY\",\n  \"textLength\",\n  \"viewBox\",\n  \"xChannelSelector\",\n  \"yChannelSelector\",\n  \"zoomAndPan\"\n]);\nvar MATHML_CAMEL_ATTRS = /* @__PURE__ */ new Set([\"definitionURL\"]);\nvar SVG_ATTR_LOWERCASE_TO_CAMEL = /* @__PURE__ */ new Map();\nfor (const camel of STANDARD_SVG_CAMEL_ATTRS)\n  SVG_ATTR_LOWERCASE_TO_CAMEL.set(camel.toLowerCase(), camel);\nvar MATHML_ATTR_LOWERCASE_TO_CAMEL = /* @__PURE__ */ new Map();\nfor (const camel of MATHML_CAMEL_ATTRS)\n  MATHML_ATTR_LOWERCASE_TO_CAMEL.set(camel.toLowerCase(), camel);\nvar FOREIGN_BREAKOUT_TAGS = /* @__PURE__ */ new Set([\n  \"b\",\n  \"big\",\n  \"blockquote\",\n  \"body\",\n  \"br\",\n  \"center\",\n  \"code\",\n  \"dd\",\n  \"div\",\n  \"dl\",\n  \"dt\",\n  \"em\",\n  \"embed\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"head\",\n  \"hr\",\n  \"i\",\n  \"img\",\n  \"li\",\n  \"listing\",\n  \"menu\",\n  \"meta\",\n  \"nobr\",\n  \"ol\",\n  \"p\",\n  \"pre\",\n  \"ruby\",\n  \"s\",\n  \"small\",\n  \"span\",\n  \"strong\",\n  \"strike\",\n  \"sub\",\n  \"sup\",\n  \"table\",\n  \"tt\",\n  \"u\",\n  \"ul\",\n  \"var\"\n]);\nvar SELECT_BREAKOUT_TAGS = /* @__PURE__ */ new Set([\"input\", \"keygen\", \"textarea\", \"select\"]);\nvar MODES = Object.freeze({\n  inBody: \"inBody\",\n  inTable: \"inTable\",\n  inCaption: \"inCaption\",\n  inColumnGroup: \"inColumnGroup\",\n  inTableBody: \"inTableBody\",\n  inRow: \"inRow\",\n  inCell: \"inCell\",\n  inSelect: \"inSelect\",\n  inSelectInTable: \"inSelectInTable\",\n  inTemplate: \"inTemplate\"\n});\nvar NS = Object.freeze({\n  html: \"html\",\n  svg: \"svg\",\n  math: \"math\"\n});\nvar FRAGMENT_CONTEXT_MODES = Object.freeze({\n  template: { mode: MODES.inTemplate, ns: NS.html },\n  body: { mode: MODES.inBody, ns: NS.html },\n  div: { mode: MODES.inBody, ns: NS.html },\n  table: { mode: MODES.inTable, ns: NS.html },\n  tbody: { mode: MODES.inTableBody, ns: NS.html },\n  thead: { mode: MODES.inTableBody, ns: NS.html },\n  tfoot: { mode: MODES.inTableBody, ns: NS.html },\n  caption: { mode: MODES.inCaption, ns: NS.html },\n  colgroup: { mode: MODES.inColumnGroup, ns: NS.html },\n  tr: { mode: MODES.inRow, ns: NS.html },\n  td: { mode: MODES.inCell, ns: NS.html },\n  th: { mode: MODES.inCell, ns: NS.html },\n  select: { mode: MODES.inSelect, ns: NS.html },\n  svg: { mode: MODES.inBody, ns: NS.svg },\n  math: { mode: MODES.inBody, ns: NS.math }\n});\n\n// tools/core/htmllinter.js\nvar HTML_TAG_NAME_HAS_UPPERCASE = \"HTML_TAG_NAME_HAS_UPPERCASE\";\nvar HTML_SVG_TAG_WILL_LOWERCASE = \"HTML_SVG_TAG_WILL_LOWERCASE\";\nvar HTML_SVG_ATTR_WILL_LOWERCASE = \"HTML_SVG_ATTR_WILL_LOWERCASE\";\nvar HTML_MATHML_ATTR_WILL_LOWERCASE = \"HTML_MATHML_ATTR_WILL_LOWERCASE\";\nvar HTML_TAG_NOT_ALLOWED_IN_PARENT = \"HTML_TAG_NOT_ALLOWED_IN_PARENT\";\nvar HTML_TEXT_NOT_ALLOWED_IN_PARENT = \"HTML_TEXT_NOT_ALLOWED_IN_PARENT\";\nvar HTML_VOID_ELEMENT_HAS_CLOSE_TAG = \"HTML_VOID_ELEMENT_HAS_CLOSE_TAG\";\nvar HTML_DUPLICATE_FORM = \"HTML_DUPLICATE_FORM\";\nvar HTML_NESTED_INTERACTIVE = \"HTML_NESTED_INTERACTIVE\";\nvar HTML_MISNESTED_FORMATTING = \"HTML_MISNESTED_FORMATTING\";\nvar HTML_UNEXPECTED_END_TAG = \"HTML_UNEXPECTED_END_TAG\";\nvar HTML_DUPLICATE_ATTRIBUTE = \"HTML_DUPLICATE_ATTRIBUTE\";\nvar HTML_ATTRIBUTES_ON_END_TAG = \"HTML_ATTRIBUTES_ON_END_TAG\";\nvar HTML_SELF_CLOSING_END_TAG = \"HTML_SELF_CLOSING_END_TAG\";\nvar HTML_MISSING_ATTRIBUTE_VALUE = \"HTML_MISSING_ATTRIBUTE_VALUE\";\nvar HTML_CDATA_IN_HTML_NAMESPACE = \"HTML_CDATA_IN_HTML_NAMESPACE\";\nvar HTML_BOGUS_COMMENT = \"HTML_BOGUS_COMMENT\";\nvar HTML_UNCLOSED_BEFORE_END = \"HTML_UNCLOSED_BEFORE_END\";\nvar LEVEL_ERROR = \"error\";\nvar LEVEL_WARN = \"warn\";\nvar TABLE_SCOPE_TAGS = /* @__PURE__ */ new Set([\n  \"caption\",\n  \"colgroup\",\n  \"thead\",\n  \"tbody\",\n  \"tfoot\",\n  \"tr\",\n  \"td\",\n  \"th\",\n  \"table\"\n]);\nvar TABLE_BODY_CELL_TAGS = /* @__PURE__ */ new Set([\"td\", \"th\"]);\nvar IMPLIED_END_TAGS = /* @__PURE__ */ new Set([\n  \"dd\",\n  \"dt\",\n  \"li\",\n  \"optgroup\",\n  \"option\",\n  \"p\",\n  \"rb\",\n  \"rp\",\n  \"rt\",\n  \"rtc\"\n]);\nfunction lintHtml(html2, onFinding, opts = {}) {\n  const TokenizerClass = opts.TokenizerClass ?? HtmlTokenizer;\n  const ctx = new LinterCtx(html2, onFinding, opts);\n  const tokenizer = new TokenizerClass(\n    { xmlMode: false, decodeEntities: false, recognizeSelfClosing: true },\n    ctx\n  );\n  ctx.tokenizer = tokenizer;\n  tokenizer.write(html2);\n  tokenizer.end();\n  return ctx.findingCount;\n}\nvar LinterCtx = class {\n  constructor(html2, onFinding, opts) {\n    this.html = html2;\n    this.onFinding = onFinding;\n    this.findingCount = 0;\n    this.lineStarts = computeLineStarts(html2);\n    const ctxName = opts.fragmentContext ?? \"template\";\n    const ctxInfo = FRAGMENT_CONTEXT_MODES[ctxName] ?? FRAGMENT_CONTEXT_MODES.template;\n    this.openElements = [];\n    if (ctxName === \"tr\") {\n      this.openElements.push({ name: \"table\", ns: NS.html, start: -1 });\n      this.openElements.push({ name: \"tbody\", ns: NS.html, start: -1 });\n    } else if (ctxName === \"tbody\" || ctxName === \"thead\" || ctxName === \"tfoot\") {\n      this.openElements.push({ name: \"table\", ns: NS.html, start: -1 });\n    } else if (ctxName === \"td\" || ctxName === \"th\") {\n      this.openElements.push({ name: \"table\", ns: NS.html, start: -1 });\n      this.openElements.push({ name: \"tbody\", ns: NS.html, start: -1 });\n      this.openElements.push({ name: \"tr\", ns: NS.html, start: -1 });\n    } else if (ctxName === \"caption\") {\n      this.openElements.push({ name: \"table\", ns: NS.html, start: -1 });\n    } else if (ctxName === \"colgroup\") {\n      this.openElements.push({ name: \"table\", ns: NS.html, start: -1 });\n    } else if (ctxName === \"svg\") {\n      this.openElements.push({ name: \"svg\", ns: NS.svg, start: -1 });\n    } else if (ctxName === \"math\") {\n      this.openElements.push({ name: \"math\", ns: NS.math, start: -1 });\n    } else if (ctxName === \"select\") {\n      this.openElements.push({ name: \"select\", ns: NS.html, start: -1 });\n    }\n    this.insertionMode = ctxInfo.mode;\n    this.templateInsertionModes = ctxName === \"template\" ? [MODES.inTemplate] : [];\n    this.activeFormatting = [];\n    this.framesetOk = true;\n    this.svgCamelElements = opts.svgCamelElements ?? STANDARD_SVG_CAMEL_ELEMENTS;\n    this.transparentTagPrefixes = (opts.transparentTagPrefixes ?? []).map((p) => p.toLowerCase());\n    this.currentTagName = \"\";\n    this.currentTagRawName = \"\";\n    this.currentTagStart = 0;\n    this.currentAttrs = [];\n    this.currentAttr = null;\n    this.tokenizer = null;\n  }\n  // ─── Tokenizer.Callbacks ──────────────────────────────────────────────────\n  onopentagname(start, end) {\n    const raw = this.html.slice(start, end);\n    this.currentTagRawName = raw;\n    this.currentTagName = raw.toLowerCase();\n    this.currentTagStart = start;\n    this.currentAttrs = [];\n    this.currentAttr = null;\n  }\n  onattribname(start, end) {\n    const rawName = this.html.slice(start, end);\n    this.currentAttr = {\n      name: rawName.toLowerCase(),\n      rawName,\n      nameStart: start,\n      value: null,\n      valueStart: -1,\n      valueEnd: -1,\n      quote: QuoteType.NoValue\n    };\n  }\n  onattribdata(start, end) {\n    if (!this.currentAttr) return;\n    this.currentAttr.valueStart = start;\n    this.currentAttr.valueEnd = end;\n    this.currentAttr.value = this.html.slice(start, end);\n  }\n  onattribend(quote, _end) {\n    const a = this.currentAttr;\n    if (!a) return;\n    a.quote = quote;\n    const dup = this.currentAttrs.find((x) => x.name === a.name);\n    if (dup) {\n      this.report(\n        HTML_DUPLICATE_ATTRIBUTE,\n        LEVEL_WARN,\n        a.nameStart,\n        { name: a.name, firstAt: dup.nameStart },\n        { kind: \"remove\", what: `the duplicate '${a.name}' attribute` }\n      );\n    } else {\n      this.currentAttrs.push(a);\n    }\n    if (a.quote === QuoteType.Unquoted && a.value === \"\") {\n      this.report(HTML_MISSING_ATTRIBUTE_VALUE, LEVEL_WARN, a.nameStart, {\n        name: a.name\n      });\n    }\n    this.currentAttr = null;\n  }\n  onattribentity(_cp) {\n  }\n  ontextentity(_cp, _end) {\n  }\n  getAttr(name) {\n    const a = this.currentAttrs.find((x) => x.name === name);\n    return a ? a.value : null;\n  }\n  hasAttr(name) {\n    return this.currentAttrs.some((x) => x.name === name);\n  }\n  onopentagend(endIndex) {\n    this.handleStartTag(false, endIndex);\n  }\n  onselfclosingtag(endIndex) {\n    this.handleStartTag(true, endIndex);\n  }\n  onclosetag(start, end) {\n    const raw = this.html.slice(start, end);\n    const name = raw.toLowerCase();\n    let i = end;\n    let lastNonWs = -1;\n    while (i < this.html.length) {\n      const c = this.html.charCodeAt(i);\n      if (c === 62) break;\n      if (c !== 32 && c !== 9 && c !== 10 && c !== 13 && c !== 12) lastNonWs = i;\n      i++;\n    }\n    if (lastNonWs >= 0) {\n      if (this.html.charCodeAt(lastNonWs) === 47 && lastNonWs === i - 1) {\n        let firstNonWs = -1;\n        for (let j = end; j < lastNonWs; j++) {\n          const c2 = this.html.charCodeAt(j);\n          if (c2 !== 32 && c2 !== 9 && c2 !== 10 && c2 !== 13 && c2 !== 12) {\n            firstNonWs = j;\n            break;\n          }\n        }\n        if (firstNonWs < 0) {\n          this.report(\n            HTML_SELF_CLOSING_END_TAG,\n            LEVEL_WARN,\n            start,\n            { tag: name },\n            { kind: \"rewrite\", from: `</${name}/>`, to: `</${name}>` }\n          );\n        } else {\n          this.report(\n            HTML_ATTRIBUTES_ON_END_TAG,\n            LEVEL_WARN,\n            start,\n            { tag: name },\n            { kind: \"remove\", what: `attributes from </${name}>` }\n          );\n        }\n      } else {\n        this.report(\n          HTML_ATTRIBUTES_ON_END_TAG,\n          LEVEL_WARN,\n          start,\n          { tag: name },\n          { kind: \"remove\", what: `attributes from </${name}>` }\n        );\n      }\n    }\n    this.handleEndTag(name, start);\n  }\n  ontext(start, end) {\n    if (start >= end) return;\n    const top = this.currentNode();\n    if (top && top.ns !== NS.html && !this.isIntegrationPoint(top)) return;\n    this.handleText(start, end);\n  }\n  oncomment(start, _end, endOffset) {\n    if (endOffset === 0) {\n      this.report(HTML_BOGUS_COMMENT, LEVEL_WARN, start, {\n        mode: this.insertionMode\n      });\n    }\n  }\n  oncdata(start, _end, _endOffset) {\n    if (this.currentNamespace() === NS.html) {\n      this.report(HTML_CDATA_IN_HTML_NAMESPACE, LEVEL_WARN, start, {\n        mode: this.insertionMode\n      });\n    }\n  }\n  ondeclaration(_start, _end) {\n  }\n  onprocessinginstruction(_start, _end) {\n  }\n  isInForeignContext() {\n    return this.currentNamespace() !== NS.html;\n  }\n  onend() {\n  }\n  // ─── Helpers ──────────────────────────────────────────────────────────────\n  report(id, level, offset, info, suggestion = null) {\n    this.findingCount++;\n    const { line, column } = offsetToLineCol(this.lineStarts, offset);\n    this.onFinding({\n      id,\n      level,\n      info,\n      location: { start: offset, end: offset + (info.tag?.length ?? 0), line, column },\n      suggestion\n    });\n  }\n  currentNode() {\n    return this.openElements[this.openElements.length - 1] ?? null;\n  }\n  currentNamespace() {\n    const top = this.currentNode();\n    return top ? top.ns : NS.html;\n  }\n  push(name, ns, start) {\n    this.openElements.push({ name, ns, start });\n  }\n  pop() {\n    return this.openElements.pop();\n  }\n  hasInScope(target, scopeSet) {\n    for (let i = this.openElements.length - 1; i >= 0; i--) {\n      const f = this.openElements[i];\n      if (f.name === target && f.ns === NS.html) return true;\n      if (f.ns === NS.html) {\n        if (scopeSet.has(f.name)) return false;\n      } else if (this.isScopeBoundary(f)) {\n        return false;\n      }\n    }\n    return false;\n  }\n  // Foreign frame names that bound scope walks per spec (§13.2.4.2 default\n  // scope list). This is broader than isHtmlIntegrationPoint: every MathML\n  // annotation-xml is a boundary regardless of encoding, even though only\n  // those with encoding=text/html dispatch as HTML.\n  isScopeBoundary(frame) {\n    if (frame.ns === NS.math) {\n      return MATHML_TEXT_INTEGRATION_POINT_NAMES.has(frame.name) || frame.name === \"annotation-xml\";\n    }\n    if (frame.ns === NS.svg) {\n      return SVG_HTML_INTEGRATION_POINT_NAMES.has(frame.name);\n    }\n    return false;\n  }\n  // Frames that re-enter HTML token dispatch (not the same as scope\n  // boundaries — annotation-xml only re-enters HTML when its encoding is\n  // text/html or application/xhtml+xml; html5ever rules.rs:1649-1665).\n  isIntegrationPoint(frame) {\n    if (frame.ns === NS.math) {\n      if (MATHML_TEXT_INTEGRATION_POINT_NAMES.has(frame.name)) return true;\n      if (frame.name === \"annotation-xml\" && frame.htmlIntegration) return true;\n      return false;\n    }\n    if (frame.ns === NS.svg) {\n      return SVG_HTML_INTEGRATION_POINT_NAMES.has(frame.name);\n    }\n    return false;\n  }\n  hasInDefaultScope(target) {\n    return this.hasInScope(target, SCOPE_DEFAULT);\n  }\n  hasInButtonScope(target) {\n    return this.hasInScope(target, SCOPE_BUTTON);\n  }\n  hasInListItemScope(target) {\n    return this.hasInScope(target, SCOPE_LIST_ITEM);\n  }\n  hasInTableScope(target) {\n    return this.hasInScope(target, SCOPE_TABLE);\n  }\n  hasInSelectScope(target) {\n    for (let i = this.openElements.length - 1; i >= 0; i--) {\n      const f = this.openElements[i];\n      if (f.ns !== NS.html) return false;\n      if (f.name === target) return true;\n      if (f.name !== \"optgroup\" && f.name !== \"option\") return false;\n    }\n    return false;\n  }\n  popUntilName(name) {\n    while (this.openElements.length) {\n      const f = this.openElements.pop();\n      if (f.name === name) return f;\n    }\n    return null;\n  }\n  generateImpliedEndTags(except = null) {\n    const implied = /* @__PURE__ */ new Set([\"dd\", \"dt\", \"li\", \"optgroup\", \"option\", \"p\", \"rb\", \"rp\", \"rt\", \"rtc\"]);\n    while (this.openElements.length) {\n      const top = this.currentNode();\n      if (top.ns !== NS.html) break;\n      if (!implied.has(top.name) || top.name === except) break;\n      this.openElements.pop();\n    }\n  }\n  // ─── Start tag dispatch ───────────────────────────────────────────────────\n  isTransparentTag(name) {\n    for (const prefix of this.transparentTagPrefixes) {\n      if (name === prefix || name.startsWith(`${prefix}:`)) return true;\n    }\n    return false;\n  }\n  handleStartTag(selfClosing, endIndex) {\n    const name = this.currentTagName;\n    const raw = this.currentTagRawName;\n    const start = this.currentTagStart;\n    const ns = this.currentNamespace();\n    if (ns === NS.html) {\n      if (raw !== name) {\n        this.report(\n          HTML_TAG_NAME_HAS_UPPERCASE,\n          LEVEL_ERROR,\n          start,\n          { raw, lowercased: name },\n          { kind: \"rewrite\", from: `<${raw}>`, to: `<${name}>` }\n        );\n      }\n    } else if (ns === NS.svg) {\n      if (raw !== raw.toLowerCase() && !this.svgCamelElements.has(raw)) {\n        this.report(\n          HTML_SVG_TAG_WILL_LOWERCASE,\n          LEVEL_ERROR,\n          start,\n          { raw, lowercased: name },\n          { kind: \"rewrite\", from: `<${raw}>`, to: `<${name}>` }\n        );\n      }\n    }\n    const targetNs = ns !== NS.html ? ns : name === \"svg\" ? NS.svg : name === \"math\" ? NS.math : NS.html;\n    if (targetNs === NS.svg) {\n      for (const a of this.currentAttrs) {\n        const canonical = SVG_ATTR_LOWERCASE_TO_CAMEL.get(a.name);\n        if (canonical && a.rawName !== canonical) {\n          this.report(\n            HTML_SVG_ATTR_WILL_LOWERCASE,\n            LEVEL_ERROR,\n            a.nameStart,\n            { raw: a.rawName, canonical },\n            { kind: \"rewrite\", from: a.rawName, to: canonical }\n          );\n        }\n      }\n    } else if (targetNs === NS.math) {\n      for (const a of this.currentAttrs) {\n        const canonical = MATHML_ATTR_LOWERCASE_TO_CAMEL.get(a.name);\n        if (canonical && a.rawName !== canonical) {\n          this.report(\n            HTML_MATHML_ATTR_WILL_LOWERCASE,\n            LEVEL_ERROR,\n            a.nameStart,\n            { raw: a.rawName, canonical },\n            { kind: \"rewrite\", from: a.rawName, to: canonical }\n          );\n        }\n      }\n    }\n    if (this.isTransparentTag(name)) return;\n    const top = this.currentNode();\n    const inForeign = ns !== NS.html && !(top && this.isIntegrationPoint(top));\n    if (inForeign && !this.shouldBreakoutFromForeign(name)) {\n      this.startTagInForeign(name, raw, selfClosing, start);\n      return;\n    }\n    if (inForeign && this.shouldBreakoutFromForeign(name)) {\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_WARN, start, {\n        tag: raw,\n        parent: this.currentNode()?.name ?? \"(root)\",\n        mode: this.insertionMode,\n        action: \"foreign-breakout\"\n      });\n      while (this.openElements.length && this.currentNode()?.ns !== NS.html) {\n        this.openElements.pop();\n      }\n    }\n    this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n  }\n  shouldBreakoutFromForeign(name) {\n    if (FOREIGN_BREAKOUT_TAGS.has(name)) return true;\n    if (name === \"font\") {\n      return this.hasAttr(\"color\") || this.hasAttr(\"face\") || this.hasAttr(\"size\");\n    }\n    return false;\n  }\n  startTagInForeign(name, raw, selfClosing, start) {\n    const ns = name === \"svg\" ? NS.svg : name === \"math\" ? NS.math : this.currentNamespace();\n    const top = this.currentNode();\n    if (top && this.isIntegrationPoint(top) && name !== \"mglyph\" && name !== \"malignmark\") {\n      this.dispatchStartTag(name, raw, selfClosing, start, start + raw.length);\n      return;\n    }\n    if (selfClosing) return;\n    const frame = { name, ns, start };\n    if (ns === NS.math && name === \"annotation-xml\") {\n      const enc = (this.getAttr(\"encoding\") ?? \"\").toLowerCase();\n      if (enc === \"text/html\" || enc === \"application/xhtml+xml\") {\n        frame.htmlIntegration = true;\n      }\n    }\n    this.openElements.push(frame);\n  }\n  dispatchStartTag(name, raw, selfClosing, start, endIndex) {\n    switch (this.insertionMode) {\n      case MODES.inTemplate:\n        return this.startInTemplate(name, raw, selfClosing, start, endIndex);\n      case MODES.inBody:\n        return this.startInBody(name, raw, selfClosing, start, endIndex);\n      case MODES.inTable:\n        return this.startInTable(name, raw, selfClosing, start, endIndex);\n      case MODES.inCaption:\n        return this.startInCaption(name, raw, selfClosing, start, endIndex);\n      case MODES.inColumnGroup:\n        return this.startInColumnGroup(name, raw, selfClosing, start, endIndex);\n      case MODES.inTableBody:\n        return this.startInTableBody(name, raw, selfClosing, start, endIndex);\n      case MODES.inRow:\n        return this.startInRow(name, raw, selfClosing, start, endIndex);\n      case MODES.inCell:\n        return this.startInCell(name, raw, selfClosing, start, endIndex);\n      case MODES.inSelect:\n        return this.startInSelect(name, raw, selfClosing, start, endIndex);\n      case MODES.inSelectInTable:\n        return this.startInSelectInTable(name, raw, selfClosing, start, endIndex);\n    }\n  }\n  // ─── inBody ───────────────────────────────────────────────────────────────\n  startInBody(name, raw, selfClosing, start, _endIndex) {\n    if (name === \"html\" || name === \"head\" || name === \"body\" || name === \"frame\" || name === \"frameset\") {\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_WARN, start, {\n        tag: raw,\n        mode: this.insertionMode,\n        action: \"ignored\"\n      });\n      return;\n    }\n    if (name === \"address\" || name === \"article\" || name === \"aside\" || name === \"blockquote\" || name === \"center\" || name === \"details\" || name === \"dialog\" || name === \"dir\" || name === \"div\" || name === \"dl\" || name === \"fieldset\" || name === \"figcaption\" || name === \"figure\" || name === \"footer\" || name === \"header\" || name === \"hgroup\" || name === \"main\" || name === \"menu\" || name === \"nav\" || name === \"ol\" || name === \"p\" || name === \"search\" || name === \"section\" || name === \"summary\" || name === \"ul\") {\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"h1\" || name === \"h2\" || name === \"h3\" || name === \"h4\" || name === \"h5\" || name === \"h6\") {\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      const top = this.currentNode();\n      if (top && /^h[1-6]$/.test(top.name)) {\n        this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n          tag: raw,\n          parent: top.name,\n          mode: this.insertionMode,\n          action: \"auto-close-implicit\"\n        });\n        this.openElements.pop();\n      }\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"pre\" || name === \"listing\") {\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      this.push(raw, NS.html, start);\n      this.framesetOk = false;\n      return;\n    }\n    if (name === \"form\") {\n      if (this.openElementsHas(\"form\") && !this.openElementsHas(\"template\")) {\n        this.report(\n          HTML_DUPLICATE_FORM,\n          LEVEL_ERROR,\n          start,\n          { tag: raw, mode: this.insertionMode },\n          { kind: \"remove\", what: \"the inner <form>\" }\n        );\n        return;\n      }\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"li\") {\n      this.framesetOk = false;\n      for (let i = this.openElements.length - 1; i >= 0; i--) {\n        const f = this.openElements[i];\n        if (f.ns !== NS.html) break;\n        if (f.name === \"li\") {\n          this.generateImpliedEndTags(\"li\");\n          while (this.openElements.length) {\n            const popped = this.openElements.pop();\n            if (popped.name === \"li\") break;\n          }\n          break;\n        }\n        if (SPECIAL_ELEMENTS.has(f.name) && f.name !== \"address\" && f.name !== \"div\" && f.name !== \"p\") {\n          break;\n        }\n      }\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"dd\" || name === \"dt\") {\n      this.framesetOk = false;\n      for (let i = this.openElements.length - 1; i >= 0; i--) {\n        const f = this.openElements[i];\n        if (f.ns !== NS.html) break;\n        if (f.name === \"dd\" || f.name === \"dt\") {\n          this.generateImpliedEndTags(f.name);\n          while (this.openElements.length) {\n            const popped = this.openElements.pop();\n            if (popped.name === f.name) break;\n          }\n          break;\n        }\n        if (SPECIAL_ELEMENTS.has(f.name) && f.name !== \"address\" && f.name !== \"div\" && f.name !== \"p\") {\n          break;\n        }\n      }\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"plaintext\") {\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"button\") {\n      if (this.hasInDefaultScope(\"button\")) {\n        this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n          tag: raw,\n          parent: \"button\",\n          mode: this.insertionMode,\n          action: \"auto-close-implicit\"\n        });\n        this.generateImpliedEndTags();\n        this.popUntilName(\"button\");\n      }\n      this.push(raw, NS.html, start);\n      this.framesetOk = false;\n      return;\n    }\n    if (name === \"a\") {\n      if (this.activeFormattingHas(\"a\")) {\n        this.report(HTML_NESTED_INTERACTIVE, LEVEL_WARN, start, {\n          tag: raw,\n          mode: this.insertionMode\n        });\n        this.runAdoptionAgency(\"a\");\n      }\n      this.push(raw, NS.html, start);\n      this.activeFormatting.push(this.currentNode());\n      return;\n    }\n    if (FORMATTING_ELEMENTS.has(name)) {\n      this.push(raw, NS.html, start);\n      this.activeFormatting.push(this.currentNode());\n      return;\n    }\n    if (name === \"nobr\") {\n      if (this.activeFormattingHas(\"nobr\")) {\n        this.report(HTML_NESTED_INTERACTIVE, LEVEL_WARN, start, {\n          tag: raw,\n          mode: this.insertionMode\n        });\n        this.runAdoptionAgency(\"nobr\");\n      }\n      this.push(raw, NS.html, start);\n      this.activeFormatting.push(this.currentNode());\n      return;\n    }\n    if (name === \"table\") {\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      this.push(raw, NS.html, start);\n      this.framesetOk = false;\n      this.insertionMode = MODES.inTable;\n      return;\n    }\n    if (name === \"area\" || name === \"br\" || name === \"embed\" || name === \"img\" || name === \"keygen\" || name === \"wbr\" || name === \"input\" || name === \"param\" || name === \"source\" || name === \"track\" || name === \"hr\" || name === \"meta\" || name === \"link\" || name === \"col\" || name === \"base\") {\n      this.framesetOk = false;\n      return;\n    }\n    if (name === \"select\") {\n      if (this.hasInButtonScope(\"p\")) this.implicitlyClose(\"p\", start, raw);\n      this.push(raw, NS.html, start);\n      this.framesetOk = false;\n      this.insertionMode = MODES.inSelect;\n      return;\n    }\n    if (name === \"option\" || name === \"optgroup\") {\n      if (this.currentNode()?.name === \"option\") {\n        this.openElements.pop();\n      }\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"textarea\" || name === \"title\" || RAW_TEXT_ELEMENTS.has(name)) {\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"math\" || name === \"svg\") {\n      this.push(raw, name === \"svg\" ? NS.svg : NS.math, start);\n      this.framesetOk = false;\n      return;\n    }\n    if (name === \"caption\" || name === \"col\" || name === \"colgroup\" || name === \"frame\" || name === \"tbody\" || name === \"td\" || name === \"tfoot\" || name === \"th\" || name === \"thead\" || name === \"tr\") {\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n        tag: raw,\n        parent: this.currentNode()?.name ?? \"(root)\",\n        mode: this.insertionMode,\n        action: \"ignored\"\n      });\n      return;\n    }\n    if (selfClosing) return;\n    this.push(raw, NS.html, start);\n  }\n  openElementsHas(name) {\n    for (let i = this.openElements.length - 1; i >= 0; i--) {\n      const f = this.openElements[i];\n      if (f.ns === NS.html && f.name === name) return true;\n    }\n    return false;\n  }\n  activeFormattingHas(name) {\n    for (let i = this.activeFormatting.length - 1; i >= 0; i--) {\n      const e = this.activeFormatting[i];\n      if (e === null) return false;\n      if (e.name === name) return true;\n    }\n    return false;\n  }\n  // Simplified adoption agency. The real algorithm clones the formatting\n  // element, splices it after the furthest block, and *keeps* the entry on\n  // the active formatting list (replaced via bookmark — html5ever\n  // mod.rs:713-921). We don't build a DOM, but we mirror the bookkeeping\n  // shape: pop the open-elements entry and leave the active-formatting\n  // entry in place so a subsequent same-name tag still sees it (which is\n  // what triggers the next adoption-agency run / nested-interactive lint).\n  runAdoptionAgency(name) {\n    for (let i = this.activeFormatting.length - 1; i >= 0; i--) {\n      const e = this.activeFormatting[i];\n      if (e === null) break;\n      if (e.name === name) {\n        const idx = this.openElements.indexOf(e);\n        if (idx >= 0) this.openElements.splice(idx, 1);\n        return;\n      }\n    }\n  }\n  implicitlyClose(name, _start, _newTagRaw) {\n    while (this.openElements.length) {\n      const popped = this.openElements.pop();\n      if (popped.name === name) break;\n    }\n  }\n  // ─── inTemplate ───────────────────────────────────────────────────────────\n  startInTemplate(name, raw, selfClosing, start, endIndex) {\n    let next;\n    if (name === \"caption\" || name === \"colgroup\" || name === \"tbody\" || name === \"tfoot\" || name === \"thead\") {\n      next = MODES.inTable;\n    } else if (name === \"col\") {\n      next = MODES.inColumnGroup;\n    } else if (name === \"tr\") {\n      next = MODES.inTableBody;\n    } else if (name === \"td\" || name === \"th\") {\n      next = MODES.inRow;\n    } else {\n      this.popTemplateMode();\n      this.pushTemplateMode(MODES.inBody);\n      this.insertionMode = MODES.inBody;\n      return this.startInBody(name, raw, selfClosing, start, endIndex);\n    }\n    this.popTemplateMode();\n    this.pushTemplateMode(next);\n    this.insertionMode = next;\n    return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n  }\n  popTemplateMode() {\n    if (this.templateInsertionModes.length) this.templateInsertionModes.pop();\n  }\n  pushTemplateMode(mode) {\n    this.templateInsertionModes.push(mode);\n  }\n  // ─── inTable ──────────────────────────────────────────────────────────────\n  startInTable(name, raw, selfClosing, start, endIndex) {\n    if (name === \"caption\") {\n      this.clearStackBackToTable();\n      this.activeFormatting.push(null);\n      this.push(raw, NS.html, start);\n      this.insertionMode = MODES.inCaption;\n      return;\n    }\n    if (name === \"colgroup\") {\n      this.clearStackBackToTable();\n      this.push(raw, NS.html, start);\n      this.insertionMode = MODES.inColumnGroup;\n      return;\n    }\n    if (name === \"col\") {\n      this.clearStackBackToTable();\n      this.push(\"colgroup\", NS.html, start);\n      this.insertionMode = MODES.inColumnGroup;\n      return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n    }\n    if (name === \"tbody\" || name === \"thead\" || name === \"tfoot\") {\n      this.clearStackBackToTable();\n      this.push(raw, NS.html, start);\n      this.insertionMode = MODES.inTableBody;\n      return;\n    }\n    if (name === \"td\" || name === \"th\" || name === \"tr\") {\n      this.clearStackBackToTable();\n      this.push(\"tbody\", NS.html, start);\n      this.insertionMode = MODES.inTableBody;\n      return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n    }\n    if (name === \"table\") {\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n        tag: raw,\n        parent: \"table\",\n        mode: this.insertionMode,\n        action: \"auto-close-implicit\"\n      });\n      if (this.hasInTableScope(\"table\")) {\n        this.popUntilName(\"table\");\n        this.resetInsertionModeAppropriately();\n        return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n      }\n      return;\n    }\n    if (name === \"style\" || name === \"script\" || name === \"template\") {\n      return this.startInBody(name, raw, selfClosing, start, endIndex);\n    }\n    if (name === \"input\") {\n      const type3 = (this.getAttr(\"type\") ?? \"\").toLowerCase();\n      if (type3 === \"hidden\") return;\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_WARN, start, {\n        tag: raw,\n        parent: \"table\",\n        mode: this.insertionMode,\n        action: \"foster-parent\"\n      });\n      return;\n    }\n    if (name === \"form\") {\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n        tag: raw,\n        parent: \"table\",\n        mode: this.insertionMode,\n        action: \"ignored\"\n      });\n      return;\n    }\n    this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n      tag: raw,\n      parent: this.currentNode()?.name ?? \"table\",\n      mode: this.insertionMode,\n      action: \"foster-parent\"\n    });\n    return this.startInBody(name, raw, selfClosing, start, endIndex);\n  }\n  clearStackBackToTable() {\n    while (this.openElements.length) {\n      const top = this.currentNode();\n      if (!top) break;\n      if (top.name === \"table\" || top.name === \"template\") break;\n      this.openElements.pop();\n    }\n  }\n  // ─── inCaption ────────────────────────────────────────────────────────────\n  startInCaption(name, raw, selfClosing, start, endIndex) {\n    if (name === \"caption\" || name === \"col\" || name === \"colgroup\" || name === \"tbody\" || name === \"td\" || name === \"tfoot\" || name === \"th\" || name === \"thead\" || name === \"tr\") {\n      if (this.hasInTableScope(\"caption\")) {\n        this.generateImpliedEndTags();\n        this.popUntilName(\"caption\");\n        this.clearActiveFormattingToMarker();\n        this.insertionMode = MODES.inTable;\n        return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n      }\n      return;\n    }\n    return this.startInBody(name, raw, selfClosing, start, endIndex);\n  }\n  clearActiveFormattingToMarker() {\n    while (this.activeFormatting.length) {\n      const e = this.activeFormatting.pop();\n      if (e === null) return;\n    }\n  }\n  // ─── inColumnGroup ────────────────────────────────────────────────────────\n  startInColumnGroup(name, raw, selfClosing, start, endIndex) {\n    if (name === \"col\") {\n      return;\n    }\n    if (name === \"template\") {\n      return this.startInBody(name, raw, selfClosing, start, endIndex);\n    }\n    if (this.currentNode()?.name === \"colgroup\") {\n      this.openElements.pop();\n      this.insertionMode = MODES.inTable;\n      return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n    }\n    this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n      tag: raw,\n      parent: \"colgroup\",\n      mode: this.insertionMode,\n      action: \"ignored\"\n    });\n  }\n  // ─── inTableBody ──────────────────────────────────────────────────────────\n  startInTableBody(name, raw, selfClosing, start, endIndex) {\n    if (name === \"tr\") {\n      this.clearStackBackToTableBody();\n      this.push(raw, NS.html, start);\n      this.insertionMode = MODES.inRow;\n      return;\n    }\n    if (TABLE_BODY_CELL_TAGS.has(name)) {\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_WARN, start, {\n        tag: raw,\n        parent: this.currentNode()?.name ?? \"tbody\",\n        mode: this.insertionMode,\n        action: \"auto-close-implicit\"\n      });\n      this.clearStackBackToTableBody();\n      this.push(\"tr\", NS.html, start);\n      this.insertionMode = MODES.inRow;\n      return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n    }\n    if (name === \"caption\" || name === \"col\" || name === \"colgroup\" || name === \"tbody\" || name === \"tfoot\" || name === \"thead\") {\n      if (this.hasInTableScope(\"tbody\") || this.hasInTableScope(\"thead\") || this.hasInTableScope(\"tfoot\")) {\n        this.clearStackBackToTableBody();\n        this.openElements.pop();\n        this.insertionMode = MODES.inTable;\n        return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n      }\n      return;\n    }\n    return this.startInTable(name, raw, selfClosing, start, endIndex);\n  }\n  clearStackBackToTableBody() {\n    while (this.openElements.length) {\n      const top = this.currentNode();\n      if (!top) break;\n      if (top.name === \"tbody\" || top.name === \"thead\" || top.name === \"tfoot\" || top.name === \"template\" || top.name === \"table\")\n        break;\n      this.openElements.pop();\n    }\n  }\n  // ─── inRow ────────────────────────────────────────────────────────────────\n  startInRow(name, raw, selfClosing, start, endIndex) {\n    if (TABLE_BODY_CELL_TAGS.has(name)) {\n      this.clearStackBackToTableRow();\n      this.push(raw, NS.html, start);\n      this.insertionMode = MODES.inCell;\n      this.activeFormatting.push(null);\n      return;\n    }\n    if (name === \"caption\" || name === \"col\" || name === \"colgroup\" || name === \"tbody\" || name === \"tfoot\" || name === \"thead\" || name === \"tr\") {\n      if (this.hasInTableScope(\"tr\")) {\n        this.clearStackBackToTableRow();\n        this.openElements.pop();\n        this.insertionMode = MODES.inTableBody;\n        return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n      }\n      return;\n    }\n    return this.startInTable(name, raw, selfClosing, start, endIndex);\n  }\n  clearStackBackToTableRow() {\n    while (this.openElements.length) {\n      const top = this.currentNode();\n      if (!top) break;\n      if (top.name === \"tr\" || top.name === \"template\" || top.name === \"table\") break;\n      this.openElements.pop();\n    }\n  }\n  // ─── inCell ───────────────────────────────────────────────────────────────\n  startInCell(name, raw, selfClosing, start, endIndex) {\n    if (name === \"caption\" || name === \"col\" || name === \"colgroup\" || name === \"tbody\" || name === \"td\" || name === \"tfoot\" || name === \"th\" || name === \"thead\" || name === \"tr\") {\n      if (this.hasInTableScope(\"td\") || this.hasInTableScope(\"th\")) {\n        this.closeCell();\n        return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n      }\n      return;\n    }\n    return this.startInBody(name, raw, selfClosing, start, endIndex);\n  }\n  closeCell() {\n    this.generateImpliedEndTags();\n    while (this.openElements.length) {\n      const popped = this.openElements.pop();\n      if (popped.name === \"td\" || popped.name === \"th\") break;\n    }\n    this.clearActiveFormattingToMarker();\n    this.insertionMode = MODES.inRow;\n  }\n  // ─── inSelect ─────────────────────────────────────────────────────────────\n  startInSelect(name, raw, _selfClosing, start, _endIndex) {\n    if (name === \"option\") {\n      if (this.currentNode()?.name === \"option\") this.openElements.pop();\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"optgroup\") {\n      if (this.currentNode()?.name === \"option\") this.openElements.pop();\n      if (this.currentNode()?.name === \"optgroup\") this.openElements.pop();\n      this.push(raw, NS.html, start);\n      return;\n    }\n    if (name === \"hr\") return;\n    if (SELECT_BREAKOUT_TAGS.has(name)) {\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n        tag: raw,\n        parent: \"select\",\n        mode: this.insertionMode,\n        action: \"auto-close-implicit\"\n      });\n      if (this.hasInSelectScope(\"select\")) {\n        this.popUntilName(\"select\");\n        this.resetInsertionModeAppropriately();\n      }\n      if (name === \"select\") return;\n      return this.dispatchStartTag(name, raw, false, start, _endIndex);\n    }\n    if (name === \"script\" || name === \"template\") {\n      return this.startInBody(name, raw, false, start, _endIndex);\n    }\n    this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n      tag: raw,\n      parent: \"select\",\n      mode: this.insertionMode,\n      action: \"ignored\"\n    });\n  }\n  // ─── inSelectInTable ──────────────────────────────────────────────────────\n  startInSelectInTable(name, raw, selfClosing, start, endIndex) {\n    if (name === \"caption\" || name === \"table\" || name === \"tbody\" || name === \"tfoot\" || name === \"thead\" || name === \"tr\" || name === \"td\" || name === \"th\") {\n      this.report(HTML_TAG_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n        tag: raw,\n        parent: \"select\",\n        mode: this.insertionMode,\n        action: \"auto-close-implicit\"\n      });\n      this.popUntilName(\"select\");\n      this.resetInsertionModeAppropriately();\n      return this.dispatchStartTag(name, raw, selfClosing, start, endIndex);\n    }\n    return this.startInSelect(name, raw, selfClosing, start, endIndex);\n  }\n  resetInsertionModeAppropriately() {\n    for (let i = this.openElements.length - 1; i >= 0; i--) {\n      const f = this.openElements[i];\n      if (f.ns !== NS.html) continue;\n      const last = i === 0;\n      switch (f.name) {\n        case \"select\":\n          this.insertionMode = MODES.inSelect;\n          return;\n        case \"td\":\n        case \"th\":\n          if (!last) {\n            this.insertionMode = MODES.inCell;\n            return;\n          }\n          break;\n        case \"tr\":\n          this.insertionMode = MODES.inRow;\n          return;\n        case \"tbody\":\n        case \"thead\":\n        case \"tfoot\":\n          this.insertionMode = MODES.inTableBody;\n          return;\n        case \"caption\":\n          this.insertionMode = MODES.inCaption;\n          return;\n        case \"colgroup\":\n          this.insertionMode = MODES.inColumnGroup;\n          return;\n        case \"table\":\n          this.insertionMode = MODES.inTable;\n          return;\n        case \"template\":\n          this.insertionMode = this.templateInsertionModes[this.templateInsertionModes.length - 1] ?? MODES.inBody;\n          return;\n        default:\n          break;\n      }\n    }\n    this.insertionMode = MODES.inBody;\n  }\n  // ─── End tag dispatch ─────────────────────────────────────────────────────\n  handleEndTag(name, start) {\n    if (this.isTransparentTag(name)) return;\n    const ns = this.currentNamespace();\n    if (ns !== NS.html) {\n      let stackIdx = this.openElements.length - 1;\n      let first = true;\n      while (stackIdx > 0) {\n        const f = this.openElements[stackIdx];\n        if (!first && f.ns === NS.html) break;\n        if (f.ns !== NS.html && f.name.toLowerCase() === name) {\n          this.openElements.length = stackIdx;\n          return;\n        }\n        if (first) {\n          this.report(HTML_UNEXPECTED_END_TAG, LEVEL_WARN, start, {\n            tag: name,\n            mode: this.insertionMode\n          });\n          first = false;\n        }\n        stackIdx--;\n      }\n    }\n    if (VOID_ELEMENTS.has(name)) {\n      this.report(\n        HTML_VOID_ELEMENT_HAS_CLOSE_TAG,\n        LEVEL_WARN,\n        start,\n        { tag: name, mode: this.insertionMode },\n        { kind: \"remove\", what: `the </${name}>` }\n      );\n      return;\n    }\n    if (FORMATTING_ELEMENTS.has(name)) {\n      const top = this.currentNode();\n      if (top && top.ns === NS.html && top.name === name) {\n        this.openElements.pop();\n        this.removeFromActiveFormattingByRef(top);\n        return;\n      }\n      if (this.activeFormattingHas(name) || this.openElementsHas(name)) {\n        this.report(HTML_MISNESTED_FORMATTING, LEVEL_WARN, start, {\n          tag: name,\n          mode: this.insertionMode\n        });\n        this.runAdoptionAgency(name);\n        return;\n      }\n      this.report(HTML_UNEXPECTED_END_TAG, LEVEL_WARN, start, {\n        tag: name,\n        mode: this.insertionMode\n      });\n      return;\n    }\n    const endIsTableStructural = TABLE_SCOPE_TAGS.has(name);\n    for (let i = this.openElements.length - 1; i >= 0; i--) {\n      const f = this.openElements[i];\n      if (f.ns === NS.html && f.name === name) {\n        for (let j = this.openElements.length - 1; j > i; j--) {\n          const popped = this.openElements[j];\n          if (popped.ns === NS.html && popped.name !== name && !IMPLIED_END_TAGS.has(popped.name) && !(endIsTableStructural && TABLE_SCOPE_TAGS.has(popped.name))) {\n            this.report(HTML_UNCLOSED_BEFORE_END, LEVEL_WARN, start, {\n              tag: name,\n              unclosed: popped.name,\n              mode: this.insertionMode\n            });\n            break;\n          }\n        }\n        this.openElements.length = i;\n        if (TABLE_SCOPE_TAGS.has(name) || name === \"select\" || name === \"template\") {\n          this.resetInsertionModeAppropriately();\n        }\n        return;\n      }\n      if (f.ns === NS.html && SPECIAL_ELEMENTS.has(f.name) && !IMPLIED_END_TAGS.has(f.name) && !(endIsTableStructural && TABLE_SCOPE_TAGS.has(f.name))) {\n        this.report(HTML_UNEXPECTED_END_TAG, LEVEL_WARN, start, {\n          tag: name,\n          mode: this.insertionMode\n        });\n        return;\n      }\n    }\n  }\n  removeFromActiveFormattingByRef(ref) {\n    const idx = this.activeFormatting.indexOf(ref);\n    if (idx >= 0) this.activeFormatting.splice(idx, 1);\n  }\n  // ─── Text dispatch ────────────────────────────────────────────────────────\n  handleText(start, end) {\n    if (this.insertionMode === MODES.inTable || this.insertionMode === MODES.inTableBody || this.insertionMode === MODES.inRow) {\n      const slice = this.html.slice(start, end);\n      const hasNonWhitespace = /\\S/.test(slice);\n      if (hasNonWhitespace) {\n        this.report(HTML_TEXT_NOT_ALLOWED_IN_PARENT, LEVEL_ERROR, start, {\n          mode: this.insertionMode,\n          snippet: slice.length > 40 ? `${slice.slice(0, 40)}…` : slice\n        });\n      }\n      return;\n    }\n    if (this.insertionMode === MODES.inColumnGroup) {\n      const slice = this.html.slice(start, end);\n      if (/\\S/.test(slice)) {\n        if (this.currentNode()?.name === \"colgroup\") {\n          this.openElements.pop();\n          this.insertionMode = MODES.inTable;\n          return this.handleText(start, end);\n        }\n      }\n      return;\n    }\n    if (this.insertionMode === MODES.inSelect || this.insertionMode === MODES.inSelectInTable) {\n      return;\n    }\n  }\n};\nfunction computeLineStarts(html2) {\n  const arr = [0];\n  for (let i = 0; i < html2.length; i++) {\n    if (html2.charCodeAt(i) === 10) arr.push(i + 1);\n  }\n  return arr;\n}\nfunction offsetToLineCol(lineStarts, offset) {\n  let lo = 0;\n  let hi = lineStarts.length - 1;\n  while (lo < hi) {\n    const mid = lo + hi + 1 >>> 1;\n    if (lineStarts[mid] <= offset) lo = mid;\n    else hi = mid - 1;\n  }\n  return { line: lo + 1, column: offset - lineStarts[lo] + 1 };\n}\n\n// tools/core/util/closest-name.js\nfunction editDistance(a, b) {\n  if (a === b) return 0;\n  const la = a.length;\n  const lb = b.length;\n  if (la === 0) return lb;\n  if (lb === 0) return la;\n  const prev2 = new Array(lb + 1);\n  const prev1 = new Array(lb + 1);\n  const curr = new Array(lb + 1);\n  for (let j = 0; j <= lb; j++) prev1[j] = j;\n  for (let i = 1; i <= la; i++) {\n    curr[0] = i;\n    const ca = a.charCodeAt(i - 1);\n    for (let j = 1; j <= lb; j++) {\n      const cb = b.charCodeAt(j - 1);\n      const cost = ca === cb ? 0 : 1;\n      let v = Math.min(curr[j - 1] + 1, prev1[j] + 1, prev1[j - 1] + cost);\n      if (i > 1 && j > 1 && ca === b.charCodeAt(j - 2) && a.charCodeAt(i - 2) === cb) {\n        v = Math.min(v, prev2[j - 2] + 1);\n      }\n      curr[j] = v;\n    }\n    for (let j = 0; j <= lb; j++) {\n      prev2[j] = prev1[j];\n      prev1[j] = curr[j];\n    }\n  }\n  return prev1[lb];\n}\nfunction closestName(name, candidates, maxDistance = 2) {\n  if (!name) return null;\n  const lower = name.toLowerCase();\n  let best = null;\n  let bestDist = maxDistance + 1;\n  for (const cand of candidates) {\n    if (cand === name) return null;\n    if (cand.toLowerCase() === lower) return cand;\n    const d = editDistance(name, cand);\n    if (d < bestDist) {\n      best = cand;\n      bestDist = d;\n    }\n  }\n  return bestDist <= maxDistance ? best : null;\n}\n\n// tools/core/lint-check.js\nvar KNOWN_COMPONENT_SPEC_KEYS = new Set(\n  \"name view style commonStyle globalStyle receive intent alter views provide lookup fields methods statics\".split(\n    \" \"\n  )\n);\nvar EMPTY_SET = /* @__PURE__ */ new Set();\nvar FRAMEWORK_WELL_KNOWN_EXTRAS = /* @__PURE__ */ new Set([\"intentOverridesField\"]);\nvar KNOWN_DIRECTIVE_NAMES = /* @__PURE__ */ new Set([\n  \"dangerouslysetinnerhtml\",\n  \"slot\",\n  \"push-view\",\n  \"text\",\n  \"show\",\n  \"hide\",\n  \"each\",\n  \"enrich-with\",\n  \"when\",\n  \"loop-with\",\n  \"then\",\n  \"else\"\n]);\nvar isTypeName2 = (s) => {\n  const c = s.charCodeAt(0);\n  return c >= 65 && c <= 90;\n};\nvar ALT_HANDLER_NOT_DEFINED = \"ALT_HANDLER_NOT_DEFINED\";\nvar ALT_HANDLER_NOT_REFERENCED = \"ALT_HANDLER_NOT_REFERENCED\";\nvar DYN_VAL_NOT_DEFINED = \"DYN_VAL_NOT_DEFINED\";\nvar DYN_ALIAS_NOT_REFERENCED = \"DYN_ALIAS_NOT_REFERENCED\";\nvar PROVIDE_NOT_ADDRESSABLE = \"PROVIDE_NOT_ADDRESSABLE\";\nvar PROVIDE_TYPE_BAD_SHAPE = \"PROVIDE_TYPE_BAD_SHAPE\";\nvar LOOKUP_BAD_SHAPE = \"LOOKUP_BAD_SHAPE\";\nvar LOOKUP_NO_PROVIDER = \"LOOKUP_NO_PROVIDER\";\nvar RENDER_IT_OUTSIDE_OF_LOOP = \"RENDER_IT_OUTSIDE_OF_LOOP\";\nvar UNKNOWN_EVENT_MODIFIER = \"UNKNOWN_EVENT_MODIFIER\";\nvar RECEIVE_HANDLER_NOT_IMPLEMENTED = \"RECEIVE_HANDLER_NOT_IMPLEMENTED\";\nvar EVENT_HANDLER_METHOD_NOT_ALLOWED = \"EVENT_HANDLER_METHOD_NOT_ALLOWED\";\nvar HANDLER_NAME_COLLISION = \"HANDLER_NAME_COLLISION\";\nvar FIELD_VAL_NOT_DEFINED = \"FIELD_VAL_NOT_DEFINED\";\nvar FIELD_VAL_IS_METHOD = \"FIELD_VAL_IS_METHOD\";\nvar METHOD_VAL_NOT_DEFINED = \"METHOD_VAL_NOT_DEFINED\";\nvar METHOD_VAL_IS_FIELD = \"METHOD_VAL_IS_FIELD\";\nvar DUPLICATE_ATTR_DEFINITION = \"DUPLICATE_ATTR_DEFINITION\";\nvar IF_NO_BRANCH_SET = \"IF_NO_BRANCH_SET\";\nvar UNKNOWN_COMPONENT_NAME = \"UNKNOWN_COMPONENT_NAME\";\nvar UNKNOWN_MACRO_ARG = \"UNKNOWN_MACRO_ARG\";\nvar UNKNOWN_DIRECTIVE = \"UNKNOWN_DIRECTIVE\";\nvar ORPHAN_DIRECTIVE = \"ORPHAN_DIRECTIVE\";\nvar UNKNOWN_X_OP = \"UNKNOWN_X_OP\";\nvar UNKNOWN_X_ATTR = \"UNKNOWN_X_ATTR\";\nvar X_OP_IGNORES_CHILDREN = \"X_OP_IGNORES_CHILDREN\";\nvar MAYBE_DROP_AT_PREFIX = \"MAYBE_DROP_AT_PREFIX\";\nvar MAYBE_ADD_AT_PREFIX = \"MAYBE_ADD_AT_PREFIX\";\nvar BAD_VALUE = \"BAD_VALUE\";\nvar UNSUPPORTED_EXPR_SYNTAX = \"UNSUPPORTED_EXPR_SYNTAX\";\nvar BINDING_MEMBER_TOO_DEEP = \"BINDING_MEMBER_TOO_DEEP\";\nvar SUGGEST_BINDING_MEMBER = \"SUGGEST_BINDING_MEMBER\";\nvar REDUNDANT_TEMPLATE_STRING = \"REDUNDANT_TEMPLATE_STRING\";\nvar PLACEHOLDERLESS_TEMPLATE_STRING = \"PLACEHOLDERLESS_TEMPLATE_STRING\";\nvar CONSTANT_CONDITION = \"CONSTANT_CONDITION\";\nvar UNKNOWN_COMPONENT_SPEC_KEY = \"UNKNOWN_COMPONENT_SPEC_KEY\";\nvar COMP_FIELD_BAD_SHAPE = \"COMP_FIELD_BAD_SHAPE\";\nvar ASYNC_HANDLER = \"ASYNC_HANDLER\";\nvar TOP_LEVEL_AT_RULE_IN_SCOPED_STYLE = \"TOP_LEVEL_AT_RULE_IN_SCOPED_STYLE\";\nvar GLOBAL_SELECTOR_IN_SCOPED_STYLE = \"GLOBAL_SELECTOR_IN_SCOPED_STYLE\";\nvar FIELD_METHOD_NAME_COLLISION = \"FIELD_METHOD_NAME_COLLISION\";\nvar X_KNOWN_OP_NAMES = /* @__PURE__ */ new Set([\n  \"slot\",\n  \"text\",\n  \"render\",\n  \"render-it\",\n  \"render-each\",\n  \"show\",\n  \"hide\"\n]);\nvar X_KNOWN_ATTR_NAMES = /* @__PURE__ */ new Set([\"as\", \"when\", \"loop-with\", \"show\", \"hide\"]);\nvar HOST_DIRECTIVE_ONLY_NAMES = /* @__PURE__ */ new Set([\"when\", \"enrich-with\", \"loop-with\", \"show\", \"hide\"]);\nvar LEVEL_WARN2 = \"warn\";\nvar LEVEL_ERROR2 = \"error\";\nvar LEVEL_HINT = \"hint\";\nvar PARSE_ISSUES = {\n  \"unknown-directive\": { id: UNKNOWN_DIRECTIVE, candidates: KNOWN_DIRECTIVE_NAMES },\n  \"orphan-directive\": { id: ORPHAN_DIRECTIVE },\n  \"unknown-x-op\": { id: UNKNOWN_X_OP, candidates: X_KNOWN_OP_NAMES, atPrefix: X_KNOWN_OP_NAMES },\n  \"unknown-x-attr\": {\n    id: UNKNOWN_X_ATTR,\n    candidates: X_KNOWN_ATTR_NAMES,\n    atPrefix: X_KNOWN_ATTR_NAMES\n  },\n  \"bad-value\": { id: BAD_VALUE },\n  \"event-method-handler\": { id: EVENT_HANDLER_METHOD_NOT_ALLOWED }\n};\nfunction protoHasMethod(proto, name) {\n  return protoMethodValue(proto, name) !== null;\n}\nfunction protoMethodValue(proto, name) {\n  let cursor = proto;\n  while (cursor && cursor !== Object.prototype) {\n    const desc = Object.getOwnPropertyDescriptor(cursor, name);\n    if (desc !== void 0) return typeof desc.value === \"function\" ? desc.value : null;\n    cursor = Object.getPrototypeOf(cursor);\n  }\n  return null;\n}\nfunction collectProtoMethodNames(proto) {\n  const out = [];\n  let cursor = proto;\n  while (cursor && cursor !== Object.prototype) {\n    for (const key of Object.getOwnPropertyNames(cursor)) {\n      if (key === \"constructor\") continue;\n      out.push(key);\n    }\n    cursor = Object.getPrototypeOf(cursor);\n  }\n  return out;\n}\nfunction scopeKeysAlong(scope, mapKey) {\n  const out = [];\n  for (let cursor = scope; cursor; cursor = cursor.parent) {\n    const map = cursor[mapKey];\n    if (!map) continue;\n    for (const key of Object.keys(map)) out.push(key);\n  }\n  return out;\n}\nfunction replaceNameSuggestion(name, candidates) {\n  const close = closestName(name, candidates);\n  return close ? { kind: \"replace-name\", from: name, to: close } : null;\n}\nfunction classifyBadValue(value) {\n  if (typeof value !== \"string\") return null;\n  const s = value.trim();\n  if (s === \"\") return null;\n  if (/\\s\\?\\s.+\\s:\\s/.test(s)) return \"ternary\";\n  if (/===|!==|==|!=|<=|>=|\\s<\\s|\\s>\\s/.test(s)) return \"comparison\";\n  if (/&&|\\|\\|/.test(s)) return \"logical\";\n  if (/^[.$][A-Za-z_]\\w*\\s+\\S/.test(s)) return \"call-with-args\";\n  if (/^\\.[A-Za-z_]\\w*\\??(\\.[A-Za-z_]\\w*\\??)+$/.test(s)) return \"field-path\";\n  return null;\n}\nvar BINDING_MEMBER_TOO_DEEP_RE = /^@[a-zA-Z]\\w*\\??(\\.[a-zA-Z]\\w*\\??){2,}$/;\nvar UNSUPPORTED_EXPR_GUIDANCE = {\n  ternary: \"Ternary expressions aren't supported in dynamic attributes. Define a method or computed value on the component that returns the value, then reference it as '$methodName'.\",\n  comparison: \"Comparisons aren't supported in dynamic attributes. Define a method like 'isFooSelected' that returns the boolean, then reference it as '$isFooSelected'.\",\n  logical: \"Logical operators aren't supported in dynamic attributes. Combine the conditions in a method on the component and reference it as '$methodName'.\",\n  \"call-with-args\": \"Method calls with arguments aren't supported here. Reference a no-arg method ('$methodName') and read what you need from component state, or split into per-case methods.\",\n  \"field-path\": \"Fields can't be read through a dotted path. Define a method that returns the value, render a child component for the nested data, or — inside a loop — read one member off a binding ('@value.member').\"\n};\nfunction checkComponent(Comp, lx = new LintContext(), { wellKnownExtras = EMPTY_SET } = {}) {\n  return lx.push({ componentName: Comp.name }, () => {\n    checkUnknownSpecKeys(lx, Comp, wellKnownExtras);\n    checkFieldDeclarations(lx, Comp);\n    checkFieldMethodNameCollisions(lx, Comp);\n    checkProvidesAreAddressable(lx, Comp);\n    checkProvidedTypes(lx, Comp);\n    checkLookupShapes(lx, Comp);\n    checkLookupTypesResolve(lx, Comp);\n    checkLookupsHaveProviders(lx, Comp);\n    checkHandlersNotAsync(lx, Comp);\n    checkHandlerNameCollisions(lx, Comp);\n    checkScopedStyleTopLevel(lx, Comp);\n    const referencedAlters = /* @__PURE__ */ new Set();\n    const referencedInputs = /* @__PURE__ */ new Set();\n    const referencedDynamics = /* @__PURE__ */ new Set();\n    checkEventHandlersHaveImpls(lx, Comp, referencedInputs);\n    checkConsistentAttrs(lx, Comp, referencedAlters, referencedDynamics);\n    for (const name in Comp.views) {\n      lx.push(\n        { viewName: name },\n        () => checkView(lx, Comp.views[name], Comp, referencedAlters, referencedDynamics)\n      );\n    }\n    checkUnreferencedAlterHandlers(lx, Comp, referencedAlters);\n    checkUnreferencedDynamics(lx, Comp, referencedDynamics);\n    return lx;\n  });\n}\nfunction checkView(lx, view, Comp, referencedAlters, referencedDynamics) {\n  checkParseIssues(lx, view);\n  checkRenderItInLoop(lx, view);\n  checkEnrichProjection(lx, view, Comp);\n  checkEventModifiers(lx, view);\n  checkKnownHandlerNames(lx, view, Comp, referencedAlters, referencedDynamics);\n  checkMacroCallArgs(lx, view, Comp);\n  checkHtmlStructure(lx, view);\n}\nvar HTML_LINT_OPTS = {\n  fragmentContext: \"template\",\n  // Tutuca's <x> and <x:macroname> tags are replaced at render time. Treat as\n  // phantom — case checks still apply, but don't enforce parent rules.\n  transparentTagPrefixes: [\"x\"]\n};\nfunction checkHtmlStructure(lx, view) {\n  if (typeof view.rawView !== \"string\" || !view.rawView) return;\n  lintHtml(\n    view.rawView,\n    (f) => lx.report(f.id, { ...f.info, location: f.location }, f.level, f.suggestion ?? null),\n    HTML_LINT_OPTS\n  );\n}\nfunction checkParseIssues(lx, view) {\n  const issues = view.ctx.parseIssues;\n  if (!issues) return;\n  for (const { kind, info } of issues) {\n    if (kind === \"x-op-ignores-children\") {\n      lx.warn(X_OP_IGNORES_CHILDREN, info, { kind: \"remove\", what: \"the ignored children\" });\n      continue;\n    }\n    if (kind === \"event-method-handler\") {\n      lx.error(EVENT_HANDLER_METHOD_NOT_ALLOWED, info, {\n        kind: \"rephrase\",\n        from: info.value,\n        text: `Move '${info.name}' to receive and reference it as '${info.name}'.`\n      });\n      continue;\n    }\n    const rule = PARSE_ISSUES[kind];\n    if (!rule) continue;\n    const id = rule.id;\n    if (kind === \"bad-value\") {\n      if (typeof info.value === \"string\" && BINDING_MEMBER_TOO_DEEP_RE.test(info.value.trim())) {\n        lx.error(BINDING_MEMBER_TOO_DEEP, info, {\n          kind: \"rephrase\",\n          from: info.value,\n          text: \"Read one level off the binding and compute the rest in a method or an '@enrich-with' handler.\"\n        });\n        continue;\n      }\n      const detected = classifyBadValue(info.value);\n      if (detected) {\n        lx.error(\n          UNSUPPORTED_EXPR_SYNTAX,\n          { ...info, detected },\n          { kind: \"rephrase\", from: info.value, text: UNSUPPORTED_EXPR_GUIDANCE[detected] }\n        );\n        continue;\n      }\n    }\n    const atPrefixKnown = rule.atPrefix;\n    const isAtPrefixedTypo = atPrefixKnown && info.name?.startsWith(\"@\") && atPrefixKnown.has(info.name.slice(1));\n    let suggestion = null;\n    if (isAtPrefixedTypo) {\n      suggestion = { kind: \"drop-prefix\", from: info.name, to: info.name.slice(1) };\n    } else if (rule.candidates) {\n      suggestion = replaceNameSuggestion(info.name, rule.candidates);\n    }\n    lx.error(id, info, suggestion);\n    if (isAtPrefixedTypo) {\n      lx.hint(\n        MAYBE_DROP_AT_PREFIX,\n        { ...info, suggestion: info.name.slice(1) },\n        { kind: \"drop-prefix\", from: info.name, to: info.name.slice(1) }\n      );\n    }\n  }\n}\nfunction checkMacroCallArgs(lx, view, Comp) {\n  const { scope } = Comp;\n  for (const macroNode of view.ctx.macroNodes) {\n    const macro2 = scope.lookupMacro(macroNode.name);\n    if (macro2 === null) continue;\n    const { defaults } = macro2;\n    for (const argName in macroNode.attrs) {\n      if (!(argName in defaults)) {\n        lx.error(\n          UNKNOWN_MACRO_ARG,\n          { name: argName, macroName: macroNode.name, tag: `x:${macroNode.name}` },\n          replaceNameSuggestion(argName, Object.keys(defaults))\n        );\n      }\n    }\n  }\n}\nfunction checkRenderItInLoop(lx, view) {\n  let hasRenderIt = false;\n  for (const node of view.ctx.nodes) {\n    if (node.constructor.name === \"RenderItNode\") {\n      hasRenderIt = true;\n      break;\n    }\n  }\n  if (!hasRenderIt) return;\n  walkForRenderIt(lx, view.anode, 0);\n}\nfunction pureProjectionBinds(fn) {\n  const src = Function.prototype.toString.call(fn);\n  const head = src.match(/^[^(]*\\(([^)]*)\\)\\s*(?:=>)?\\s*/);\n  if (!head) return null;\n  const params = head[1].split(\",\").map((p) => p.trim());\n  const [bindsName, , valueName] = params;\n  if (!/^\\w+$/.test(bindsName ?? \"\") || !/^\\w+$/.test(valueName ?? \"\")) return null;\n  let body = src.slice(head[0].length).trim();\n  if (body.startsWith(\"{\")) {\n    if (!body.endsWith(\"}\")) return null;\n    body = body.slice(1, -1);\n  }\n  const statements = body.split(/[;\\n]/).map((s) => s.trim()).filter((s) => s !== \"\" && !s.startsWith(\"//\"));\n  if (statements.length === 0) return null;\n  const projectionRe = new RegExp(\n    `^${bindsName}\\\\.(\\\\w+)\\\\s*=\\\\s*${valueName}(?:\\\\.(\\\\w+)|\\\\.get\\\\((['\"])(\\\\w+)\\\\3\\\\))$`\n  );\n  const members = [];\n  for (const statement of statements) {\n    const m = statement.match(projectionRe);\n    if (!m) return null;\n    members.push({ bind: m[1], member: m[2] ?? m[4] });\n  }\n  return members;\n}\nfunction checkEnrichProjection(lx, view, Comp) {\n  for (const node of view.ctx.nodes) {\n    if (node.constructor.name !== \"EachNode\") continue;\n    const enrich = node.iterInfo?.enrichWithVal;\n    if (!enrich?.name) continue;\n    const fn = enrich.constructor.name === \"MethodVal\" ? protoMethodValue(Comp.prototype ?? Object.getPrototypeOf(Comp), enrich.name) : Comp.alter?.[enrich.name];\n    if (typeof fn !== \"function\") continue;\n    const members = pureProjectionBinds(fn);\n    if (members === null) continue;\n    const rewrites = members.map(({ bind, member }) => `'@${bind}' -> '@value.${member}'`);\n    lx.hint(\n      SUGGEST_BINDING_MEMBER,\n      { name: enrich.name, members },\n      {\n        kind: \"rephrase\",\n        text: `Replace ${rewrites.join(\", \")} in the view, then remove the '@enrich-with' and the '${enrich.name}' alter handler.`\n      }\n    );\n  }\n}\nfunction walkForRenderIt(lx, node, loopDepth) {\n  if (node === null || node === void 0) return;\n  switch (node.constructor.name) {\n    case \"RenderItNode\":\n      if (loopDepth === 0) {\n        lx.error(\n          RENDER_IT_OUTSIDE_OF_LOOP,\n          { node },\n          { kind: \"wrap\", from: \"<x render-it>\", to: \"<x render-each>\" }\n        );\n      }\n      return;\n    case \"EachNode\":\n      walkForRenderIt(lx, node.node, loopDepth + 1);\n      return;\n    case \"ShowNode\":\n    case \"HideNode\":\n    case \"ScopeNode\":\n    case \"SlotNode\":\n    case \"PushViewNameNode\":\n    case \"MacroNode\":\n    case \"RenderOnceNode\":\n      walkForRenderIt(lx, node.node, loopDepth);\n      return;\n    case \"DomNode\":\n    case \"FragmentNode\":\n      for (const child of node.childs) walkForRenderIt(lx, child, loopDepth);\n      return;\n    default:\n      return;\n  }\n}\nvar NO_WRAPPERS2 = {};\nvar ANY_EVENT_MODIFIERS = [\n  ...Object.keys(MOD_WRAPPERS_FOR_ANY_EVENT),\n  ...Object.keys(MOD_EFFECTS)\n];\nfunction checkEventModifiers(lx, view) {\n  for (const event of view.ctx.events) {\n    for (const handler of event.handlers) {\n      const { name, modifiers } = handler;\n      const known = [\n        ...Object.keys(MOD_WRAPPERS_BY_EVENT[name] ?? NO_WRAPPERS2),\n        ...ANY_EVENT_MODIFIERS\n      ];\n      for (const modifier of modifiers) {\n        if (!known.includes(modifier)) {\n          const close = closestName(modifier, known);\n          lx.error(\n            UNKNOWN_EVENT_MODIFIER,\n            {\n              name,\n              modifier,\n              handler,\n              event,\n              originAttr: `@on.${name}+${modifiers.join(\"+\")}`\n            },\n            close ? { kind: \"replace-name\", from: `+${modifier}`, to: `+${close}` } : null\n          );\n        }\n      }\n    }\n  }\n}\nfunction checkKnownHandlerNames(lx, view, Comp, referencedAlters, referencedDynamics) {\n  const env = mkAttrValEnv(Comp, referencedAlters, referencedDynamics);\n  for (const event of view.ctx.events) {\n    for (const handler of event.handlers) {\n      const { args, handlerVal } = handler.handlerCall;\n      const handlerName = handlerVal?.name;\n      const eventName = handler.name;\n      const errCtx = {\n        eventName,\n        handlerName,\n        originAttr: `@on.${eventName}`\n      };\n      for (let i = 0; i < args.length; i++) {\n        checkConsistentAttrVal(lx, args[i], env, false, { ...errCtx, argIndex: i });\n      }\n    }\n  }\n}\nfunction mkAttrValEnv(Comp, referencedAlters, referencedDynamics) {\n  const { scope, alter, provide, lookup: lookup2, fields } = Comp;\n  const proto = Comp.prototype ?? Object.getPrototypeOf(Comp);\n  const dynamicMap = { ...provide, ...lookup2 };\n  return { fields, proto, scope, alter, referencedAlters, dynamicMap, referencedDynamics };\n}\nfunction checkEventHandlersHaveImpls(lx, Comp, referencedInputs) {\n  const { receive: input, views } = Comp;\n  const proto = Comp.prototype ?? Object.getPrototypeOf(Comp);\n  for (const viewName in views) {\n    lx.push({ viewName }, () => {\n      const view = views[viewName];\n      for (const event of view.ctx.events) {\n        for (const handler of event.handlers) {\n          const { handlerVal } = handler.handlerCall;\n          const eventName = handler.name;\n          const originAttr = `@on.${eventName}`;\n          if (handlerVal?.constructor.name === \"HandlerNameVal\") {\n            referencedInputs?.add(handlerVal.name);\n            const { name } = handlerVal;\n            if (input[name] === void 0) {\n              const suggestion = protoHasMethod(proto, name) ? {\n                kind: \"rephrase\",\n                from: name,\n                text: `Move '${name}' from methods to receive; event handlers are receive handlers.`\n              } : replaceNameSuggestion(name, Object.keys(input));\n              lx.error(\n                RECEIVE_HANDLER_NOT_IMPLEMENTED,\n                { name, handler, event, eventName, originAttr },\n                suggestion\n              );\n            }\n          }\n        }\n      }\n    });\n  }\n}\nvar fixTo = (from, to) => ({ kind: \"rewrite\", from, to });\nfunction reportUnknownName(lx, code, name, candidates, info) {\n  lx.error(code, { ...info, name }, replaceNameSuggestion(name, candidates));\n}\nvar BOOL_CONDITION_ORIGINS = /* @__PURE__ */ new Set([\"@show\", \"@hide\", \"<x show>\", \"<x hide>\"]);\nvar isBoolConditionCtx = (errCtx) => errCtx != null && (BOOL_CONDITION_ORIGINS.has(errCtx.originAttr) || errCtx.branch === \"@if\");\nvar ATTR_VAL_CHECKERS = {\n  // A literal is legal in most slots, but a *non-boolean* literal as the whole\n  // boolean condition (`@show=\"'x'\"`, `@if.class=\"1\"`) is a constant that never\n  // varies — almost always a mistyped field/method. `true`/`false` are left\n  // alone, and so is a literal nested as a predicate argument\n  // (`@show=\"equals? .status 'idle'\"`) — only the root value is the condition.\n  ConstVal({ lx, val, errCtx, isRoot }) {\n    if (isRoot && isBoolConditionCtx(errCtx) && typeof val.val !== \"boolean\")\n      lx.warn(CONSTANT_CONDITION, { ...errCtx, literal: String(val) });\n  },\n  // `.name` must be a field. If it names a method, the fix is `$name`.\n  FieldVal({ lx, val, env, errCtx }) {\n    const { fields, proto } = env;\n    const { name } = val;\n    if (fields[name] !== void 0) return;\n    if (protoHasMethod(proto, name))\n      lx.error(FIELD_VAL_IS_METHOD, { ...errCtx, val, name }, fixTo(`.${name}`, `$${name}`));\n    else\n      reportUnknownName(lx, FIELD_VAL_NOT_DEFINED, name, Object.keys(fields), { ...errCtx, val });\n  },\n  // `$name` must be a method. If it names a field, the fix is `.name`.\n  MethodVal({ lx, val, env, errCtx }) {\n    const { fields, proto } = env;\n    const { name } = val;\n    if (protoHasMethod(proto, name)) return;\n    if (fields[name] !== void 0)\n      lx.error(METHOD_VAL_IS_FIELD, { ...errCtx, val, name }, fixTo(`$${name}`, `.${name}`));\n    else\n      reportUnknownName(lx, METHOD_VAL_NOT_DEFINED, name, collectProtoMethodNames(proto), {\n        ...errCtx,\n        val\n      });\n  },\n  SeqAccessVal({ val, recurse }) {\n    recurse(val.seqVal);\n    recurse(val.keyVal);\n  },\n  // NameVals on a macro call-site attribute are macro-param bindings, not\n  // handler args — their role is determined inside the macro body after\n  // ^-substitution, where re-parsing handles validation. No checker: a NameVal\n  // can no longer reach a handler-arg slot (sigil-less words fail to parse),\n  // and macro-attr pass-throughs are skipped via skipNameVal.\n  StrTplVal({ lx, val, errCtx, recurse, isRoot }) {\n    const vs = val.vals;\n    const literal = val.toLiteralSource();\n    if (literal !== null) {\n      if (isRoot && isBoolConditionCtx(errCtx)) lx.warn(CONSTANT_CONDITION, { ...errCtx, literal });\n      else\n        lx.hint(\n          PLACEHOLDERLESS_TEMPLATE_STRING,\n          { ...errCtx, literal },\n          fixTo(`$${literal}`, literal)\n        );\n      return;\n    } else if (vs.length === 1) {\n      const simpler = String(vs[0]);\n      lx.warn(REDUNDANT_TEMPLATE_STRING, { ...errCtx, simpler }, fixTo(`$'{${simpler}}'`, simpler));\n    }\n    for (const subVal of vs) recurse(subVal);\n  },\n  HandlerNameVal({ lx, val, env, errCtx }) {\n    env.referencedAlters?.add(val.name);\n    if (env.alter[val.name] === void 0)\n      reportUnknownName(lx, ALT_HANDLER_NOT_DEFINED, val.name, Object.keys(env.alter), errCtx);\n  },\n  // Predicate args recurse as non-root: a literal arg (`equals? .status 'idle'`)\n  // is normal usage, not a constant condition. But a predicate whose args are\n  // ALL literals never changes, so the whole call is flagged as one.\n  PredicateVal({ lx, val, errCtx, recurse }) {\n    const isConstArg = (a) => a.constructor.name === \"ConstVal\" || a.constructor.name === \"StrTplVal\" && a.toLiteralSource() !== null;\n    if (isBoolConditionCtx(errCtx) && val.args.every(isConstArg))\n      lx.warn(CONSTANT_CONDITION, { ...errCtx, literal: String(val) });\n    for (const arg of val.args) recurse(arg);\n  },\n  DynVal({ lx, val, env, errCtx }) {\n    env.referencedDynamics?.add(val.name);\n    if (env.dynamicMap[val.name] === void 0)\n      reportUnknownName(lx, DYN_VAL_NOT_DEFINED, val.name, Object.keys(env.dynamicMap), errCtx);\n  }\n};\nfunction checkConsistentAttrVal(lx, val, env, skipNameVal = false, errCtx = null, isRoot = true) {\n  const check2 = ATTR_VAL_CHECKERS[val?.constructor.name];\n  if (check2 === void 0) return;\n  const recurse = (sub) => checkConsistentAttrVal(lx, sub, env, skipNameVal, errCtx, false);\n  check2({ lx, val, env, errCtx, skipNameVal, recurse, isRoot });\n}\nvar NODE_KIND_TO_CTX = {\n  RenderTextNode: { originAttr: \"<x text>\" },\n  RenderNode: { originAttr: \"<x render>\" },\n  RenderItNode: { originAttr: \"<x render-it>\" },\n  ShowNode: { originAttr: \"<x show>\" },\n  HideNode: { originAttr: \"<x hide>\" },\n  PushViewNameNode: { originAttr: \"<x push-view>\" }\n};\nfunction nodeCtxForNode(nodeKind) {\n  return NODE_KIND_TO_CTX[nodeKind] ?? null;\n}\nfunction attrSourceLabel(attr) {\n  const cn = attr.constructor.name;\n  if (cn === \"ConstAttr\") return \"literal\";\n  if (cn === \"IfAttr\") return `@if.${attr.name}`;\n  if (cn === \"RawHtmlAttr\") return \"@dangerouslysetinnerhtml\";\n  return `:${attr.name}`;\n}\nfunction attrOriginAttr(attr) {\n  const cn = attr.constructor.name;\n  if (cn === \"IfAttr\") return `@if.${attr.name}`;\n  if (cn === \"RawHtmlAttr\") return \"@dangerouslysetinnerhtml\";\n  return `:${attr.name}`;\n}\nfunction checkHostBareDirectives(lx, attrs, tag, isMacroCall) {\n  if (isMacroCall || !attrs) return;\n  const kind = attrs.constructor.name;\n  let names;\n  if (kind === \"ConstAttrs\") names = Object.keys(attrs.items);\n  else if (kind === \"DynAttrs\") names = attrs.items.map((a) => a?.name);\n  else return;\n  for (const name of names) {\n    if (HOST_DIRECTIVE_ONLY_NAMES.has(name)) {\n      lx.hint(\n        MAYBE_ADD_AT_PREFIX,\n        { name, tag, suggestion: `@${name}` },\n        { kind: \"add-prefix\", from: name, to: `@${name}` }\n      );\n    }\n  }\n}\nfunction checkConsistentAttrs(lx, Comp, referencedAlters, referencedDynamics) {\n  const { views } = Comp;\n  const env = mkAttrValEnv(Comp, referencedAlters, referencedDynamics);\n  for (const viewName in views) {\n    lx.push({ viewName }, () => {\n      const view = views[viewName];\n      for (const entry of view.ctx.attrs) {\n        const { attrs, wrapperAttrs, textChild, isMacroCall, tag } = entry;\n        checkHostBareDirectives(lx, attrs, tag, isMacroCall);\n        if (attrs?.constructor.name === \"DynAttrs\") {\n          const sourcesByName = /* @__PURE__ */ new Map();\n          for (const attr of attrs.items) {\n            const name = attr?.name;\n            if (name !== void 0 && name !== \"data-eid\") {\n              const sources = sourcesByName.get(name);\n              const label = attrSourceLabel(attr);\n              if (sources) sources.push(label);\n              else sourcesByName.set(name, [label]);\n            }\n            if (attr?.constructor.name === \"IfAttr\") {\n              if (!attr.anyBranchIsSet) {\n                lx.error(IF_NO_BRANCH_SET, { attr: attr.name, tag });\n              }\n              const branches = [\n                [\"@if\", attr.condVal],\n                [\"@then\", attr.thenVal],\n                [\"@else\", attr.elseVal]\n              ];\n              for (const [branch, subVal] of branches) {\n                checkConsistentAttrVal(lx, subVal, env, isMacroCall, {\n                  tag,\n                  originAttr: `@if.${attr.name}`,\n                  branch\n                });\n              }\n            } else if (attr?.val !== void 0) {\n              checkConsistentAttrVal(lx, attr.val, env, isMacroCall, {\n                tag,\n                originAttr: attrOriginAttr(attr)\n              });\n            }\n          }\n          for (const [name, sources] of sourcesByName) {\n            if (sources.length > 1) {\n              lx.error(DUPLICATE_ATTR_DEFINITION, { name, sources, tag });\n            }\n          }\n        }\n        if (wrapperAttrs !== null) {\n          for (const w of wrapperAttrs) {\n            if (w.name === \"each\") {\n              if (w.whenVal)\n                checkConsistentAttrVal(lx, w.whenVal, env, false, { tag, originAttr: \"@when\" });\n              if (w.enrichWithVal)\n                checkConsistentAttrVal(lx, w.enrichWithVal, env, false, {\n                  tag,\n                  originAttr: \"@enrich-with\"\n                });\n              if (w.loopWithVal)\n                checkConsistentAttrVal(lx, w.loopWithVal, env, false, {\n                  tag,\n                  originAttr: \"@loop-with\"\n                });\n            } else {\n              const originAttr = w.name === \"scope\" ? \"@enrich-with\" : `@${w.name}`;\n              checkConsistentAttrVal(lx, w.val, env, false, { tag, originAttr });\n            }\n          }\n        }\n        if (textChild) {\n          checkConsistentAttrVal(lx, textChild, env, false, { tag, originAttr: \"@text\" });\n        }\n      }\n      for (const node of view.ctx.nodes) {\n        const nodeKind = node.constructor.name;\n        if (nodeKind === \"ScopeNode\") continue;\n        const baseCtx = nodeCtxForNode(nodeKind);\n        if (node.val) {\n          checkConsistentAttrVal(lx, node.val, env, false, baseCtx);\n        }\n        if (nodeKind === \"EachNode\" && node.fromRenderEach) {\n          const iter = node.iterInfo;\n          if (iter.whenVal)\n            checkConsistentAttrVal(lx, iter.whenVal, env, false, {\n              originAttr: \"<x render-each @when>\"\n            });\n          if (iter.loopWithVal)\n            checkConsistentAttrVal(lx, iter.loopWithVal, env, false, {\n              originAttr: \"<x render-each @loop-with>\"\n            });\n        }\n      }\n    });\n  }\n}\nfunction checkHandlerNameCollisions(lx, Comp) {\n  const receive = Comp.receive ?? {};\n  const intent = Comp.intent ?? {};\n  for (const name in intent)\n    if (receive[name] !== void 0)\n      lx.error(HANDLER_NAME_COLLISION, {\n        name,\n        problem: `\"${name}\" is declared in both \\`receive\\` and \\`intent\\``,\n        fix: \"one is addressed and one is routed; give them different names so a reader can tell which a call site meant\"\n      });\n  for (const name in receive)\n    for (const suffix of [\"Ok\", \"Error\", \"Unhandled\"])\n      if (receive[name + suffix] !== void 0 && intent[name] === void 0)\n        lx.warn(HANDLER_NAME_COLLISION, {\n          name,\n          problem: `\\`receive\\` declares both \"${name}\" and its answer name \"${name + suffix}\"`,\n          fix: `an intent named \"${name}\" would dispatch its answer to \"${name + suffix}\" - rename one unless that is what you meant`\n        });\n}\nfunction checkUnknownSpecKeys(lx, Comp, wellKnownExtras) {\n  const extra = Comp.extra;\n  if (!extra) return;\n  let candidates = null;\n  for (const key of Object.keys(extra)) {\n    if (FRAMEWORK_WELL_KNOWN_EXTRAS.has(key) || wellKnownExtras.has(key)) continue;\n    candidates ??= [\n      ...KNOWN_COMPONENT_SPEC_KEYS,\n      ...FRAMEWORK_WELL_KNOWN_EXTRAS,\n      ...wellKnownExtras\n    ];\n    lx.warn(UNKNOWN_COMPONENT_SPEC_KEY, { key }, replaceNameSuggestion(key, candidates));\n  }\n}\nfunction checkFieldDeclarations(lx, Comp) {\n  const fields = Comp[COMPONENT]?.fields;\n  if (!fields) return;\n  for (const fieldName in fields) {\n    const field = fields[fieldName];\n    if (!Object.hasOwn(field, \"args\")) continue;\n    if (typeof field.type !== \"string\") {\n      lx.error(COMP_FIELD_BAD_SHAPE, {\n        fieldName,\n        kind: \"component-not-string\",\n        got: typeof field.type,\n        gotName: field.type?.name ?? null\n      });\n    }\n    if (field.args == null || field.args.constructor !== Object) {\n      lx.error(COMP_FIELD_BAD_SHAPE, {\n        fieldName,\n        kind: \"args-not-object\",\n        got: field.args === null ? \"null\" : typeof field.args\n      });\n    }\n  }\n}\nfunction checkFieldMethodNameCollisions(lx, Comp) {\n  const meta = Comp[COMPONENT];\n  if (!meta) return;\n  for (const name in meta.fields)\n    if (Object.hasOwn(meta.methods, name)) lx.error(FIELD_METHOD_NAME_COLLISION, { name });\n}\nfunction checkUnreferencedAlterHandlers(lx, Comp, referencedAlters) {\n  for (const name in Comp.alter) {\n    if (!referencedAlters.has(name)) {\n      lx.hint(ALT_HANDLER_NOT_REFERENCED, { name });\n    }\n  }\n}\nvar HANDLER_CHANNELS = [\"receive\", \"intent\", \"alter\"];\nvar ASYNC_HANDLER_HELP = `Move the async work into a scope-registered intent handler and trigger it with ctx.intent(\"name\", args, { route: [\"lex\"] }), then read the outcome in the synchronous \\`receive\\` arms named after it: <name>Ok, <name>Error and <name>Unhandled. To coordinate other components, keep the handler synchronous and use ctx.send to address one, or ctx.intent to let a route find one.`;\nfunction checkHandlersNotAsync(lx, Comp) {\n  for (const channel of HANDLER_CHANNELS) {\n    const block = Comp[channel];\n    if (!block) continue;\n    for (const name in block) {\n      const fn = block[name];\n      if (typeof fn === \"function\" && fn.constructor?.name === \"AsyncFunction\") {\n        lx.error(\n          ASYNC_HANDLER,\n          { name, channel },\n          { kind: \"rephrase\", from: name, text: ASYNC_HANDLER_HELP }\n        );\n      }\n    }\n  }\n}\nvar NON_NESTABLE_AT_RULE = /(?:^|[\\s;{}])@(?:-[a-z]+-)?(charset|import|namespace|font-face|keyframes|page|property|counter-style|font-feature-values|font-palette-values|view-transition)\\b/gi;\nvar GLOBAL_LEADING_SELECTOR = /(?:^|[{}])\\s*(html|body|:root)\\b[^{};]*\\{/gi;\nvar IGNORE_DIRECTIVE = /\\/\\*\\s*tutuca-lint-ignore\\s*\\*\\//g;\nvar blankRun = (m) => m.replace(/[^\\n]/g, \" \");\nfunction blankCssNoise(css2) {\n  return css2.replace(/\\/\\*[\\s\\S]*?\\*\\//g, blankRun).replace(/\"(?:[^\"\\\\\\n]|\\\\.)*\"/g, blankRun).replace(/'(?:[^'\\\\\\n]|\\\\.)*'/g, blankRun);\n}\nfunction offsetToLineCol2(str, index) {\n  let line = 1;\n  let lineStart = 0;\n  for (let i = 0; i < index; i++) {\n    if (str[i] === \"\\n\") {\n      line++;\n      lineStart = i + 1;\n    }\n  }\n  return { line, column: index - lineStart + 1 };\n}\nfunction suppressedLines(css2) {\n  const lines = /* @__PURE__ */ new Set();\n  IGNORE_DIRECTIVE.lastIndex = 0;\n  for (let m = IGNORE_DIRECTIVE.exec(css2); m !== null; m = IGNORE_DIRECTIVE.exec(css2)) {\n    lines.add(offsetToLineCol2(css2, m.index).line);\n  }\n  return lines;\n}\nvar STYLE_TO_GLOBAL_HELP = \"Move it to the component's 'globalStyle' key, which is injected without the component-scoping wrapper. To suppress a false positive, put a /* tutuca-lint-ignore */ comment on the same line.\";\nfunction scanScopedCss(lx, css2, key) {\n  if (!css2) return;\n  const ignore = suppressedLines(css2);\n  const clean = blankCssNoise(css2);\n  const report = (id, info) => {\n    if (ignore.has(info.location.line)) return;\n    lx.error(id, { key, ...info }, { kind: \"rephrase\", text: STYLE_TO_GLOBAL_HELP });\n  };\n  NON_NESTABLE_AT_RULE.lastIndex = 0;\n  for (let m = NON_NESTABLE_AT_RULE.exec(clean); m !== null; m = NON_NESTABLE_AT_RULE.exec(clean)) {\n    const at = m.index + m[0].indexOf(\"@\");\n    report(TOP_LEVEL_AT_RULE_IN_SCOPED_STYLE, {\n      atRule: m[1].toLowerCase(),\n      location: offsetToLineCol2(clean, at)\n    });\n  }\n  GLOBAL_LEADING_SELECTOR.lastIndex = 0;\n  for (let m = GLOBAL_LEADING_SELECTOR.exec(clean); m !== null; m = GLOBAL_LEADING_SELECTOR.exec(clean)) {\n    const at = m.index + m[0].indexOf(m[1]);\n    report(GLOBAL_SELECTOR_IN_SCOPED_STYLE, {\n      selector: m[1].toLowerCase(),\n      location: offsetToLineCol2(clean, at)\n    });\n  }\n}\nfunction checkScopedStyleTopLevel(lx, Comp) {\n  scanScopedCss(lx, Comp.commonStyle, \"commonStyle\");\n  for (const name in Comp.views) {\n    const { style } = Comp.views[name];\n    if (style) lx.push({ viewName: name }, () => scanScopedCss(lx, style, \"style\"));\n  }\n}\nfunction checkProvidesAreAddressable(lx, Comp) {\n  for (const name in Comp._rawProvide) {\n    if (isTypeName2(name)) continue;\n    if (Comp.provide[name] === void 0) {\n      lx.error(PROVIDE_NOT_ADDRESSABLE, { name, value: Comp._rawProvide[name] });\n    }\n  }\n}\nfunction checkProvidedTypes(lx, Comp) {\n  for (const name in Comp._rawProvide) {\n    if (!isTypeName2(name)) continue;\n    const raw = Comp._rawProvide[name];\n    if (raw !== \"self\") lx.error(PROVIDE_TYPE_BAD_SHAPE, { name, value: raw });\n  }\n}\nvar KNOWN_LOOKUP_KEYS = /* @__PURE__ */ new Set([\"name\", \"default\"]);\nfunction checkLookupShapes(lx, Comp) {\n  const raw = Comp._rawLookup;\n  if (!Array.isArray(raw)) {\n    if (raw !== void 0 && Object.keys(raw).length > 0)\n      lx.error(LOOKUP_BAD_SHAPE, { name: \"lookup\", problem: \"must be a list of names\" });\n    return;\n  }\n  for (const entry of raw) {\n    if (typeof entry === \"string\") continue;\n    if (entry === null || typeof entry !== \"object\" || Array.isArray(entry)) {\n      lx.error(LOOKUP_BAD_SHAPE, {\n        name: String(entry),\n        problem: 'must be a \"name\" string or a { name, default } object'\n      });\n      continue;\n    }\n    const extra = Object.keys(entry).filter((k) => !KNOWN_LOOKUP_KEYS.has(k));\n    if (extra.length > 0) {\n      lx.error(LOOKUP_BAD_SHAPE, {\n        name: String(entry.name),\n        problem: `unknown key(s): ${extra.join(\", \")}`\n      });\n      continue;\n    }\n    if (typeof entry.name !== \"string\" || entry.name === \"\") {\n      lx.error(LOOKUP_BAD_SHAPE, {\n        name: String(entry.name),\n        problem: \"'name' is required and must be a string\"\n      });\n      continue;\n    }\n    if (entry.default !== void 0 && typeof entry.default !== \"string\")\n      lx.error(LOOKUP_BAD_SHAPE, { name: entry.name, problem: \"'default' must be a string\" });\n  }\n}\nfunction checkLookupsHaveProviders(lx, Comp) {\n  const scope = Comp.scope;\n  if (!scope) return;\n  for (const name in Comp.lookup) {\n    if (isTypeName2(name)) continue;\n    if (scope.hasProvider?.(name) || scope.lookupPath?.(name)) continue;\n    const info = { name, hasDefault: Comp.lookup[name] != null };\n    if (info.hasDefault) lx.hint(LOOKUP_NO_PROVIDER, info);\n    else lx.error(LOOKUP_NO_PROVIDER, info);\n  }\n}\nfunction checkLookupTypesResolve(lx, Comp) {\n  if (!Comp.scope) return;\n  for (const name in Comp.lookup) {\n    if (!isTypeName2(name)) continue;\n    if (Comp.scope.lookupComponent(name) === null)\n      reportUnknownName(lx, UNKNOWN_COMPONENT_NAME, name, scopeKeysAlong(Comp.scope, \"byName\"), {});\n  }\n}\nfunction checkUnreferencedDynamics(lx, Comp, referencedDynamics) {\n  for (const name in Comp.lookup) {\n    if (isTypeName2(name)) continue;\n    if (!referencedDynamics.has(name)) {\n      lx.hint(DYN_ALIAS_NOT_REFERENCED, { name });\n    }\n  }\n}\nvar LintContext = class {\n  constructor() {\n    this.reports = [];\n    this.frame = {};\n  }\n  push(patch, fn) {\n    const prev = this.frame;\n    this.frame = { ...prev, ...patch };\n    try {\n      return fn();\n    } finally {\n      this.frame = prev;\n    }\n  }\n  error(id, info, suggestion = null) {\n    this.report(id, info, LEVEL_ERROR2, suggestion);\n  }\n  warn(id, info, suggestion = null) {\n    this.report(id, info, LEVEL_WARN2, suggestion);\n  }\n  hint(id, info, suggestion = null) {\n    this.report(id, info, LEVEL_HINT, suggestion);\n  }\n  report(id, info = {}, level = LEVEL_ERROR2, suggestion = null) {\n    this.reports.push({ id, info, level, context: { ...this.frame }, suggestion });\n  }\n};\nvar LintParseContext = class extends ParseCtxClassSetCollector {\n  constructor(document2) {\n    super(document2);\n    this.attrs = [];\n    this.parseIssues = [];\n  }\n  onAttributes(attrs, wrapperAttrs, textChild, isMacroCall = false, tag = null) {\n    super.onAttributes(attrs, wrapperAttrs, textChild, isMacroCall, tag);\n    this.attrs.push({ attrs, wrapperAttrs, textChild, isMacroCall, tag });\n  }\n  onParseIssue(kind, info) {\n    const tag = this.currentTag;\n    this.parseIssues.push({ kind, info: tag && info.tag === void 0 ? { ...info, tag } : info });\n  }\n};\n\n// src/on.js\nvar OP_KINDS = [\"send\", \"intent\"];\nfunction phaseOps(phase) {\n  const ops = [];\n  for (const type3 of OP_KINDS) for (const a of phase[type3] ?? []) ops.push({ type: type3, ...a });\n  for (const a of phase.do ?? []) ops.push(a);\n  return ops;\n}\nfunction resolveArgs(args, self) {\n  return typeof args === \"function\" ? args(self) ?? [] : args ?? [];\n}\nfunction dispatchPhase(dispatcher, targetPath, phase, self) {\n  if (!phase) return;\n  for (const op of phaseOps(phase)) {\n    const args = resolveArgs(op.args, self);\n    switch (op.type) {\n      case \"send\":\n        dispatcher.sendAtPath(targetPath, op.name, args);\n        break;\n      case \"intent\":\n        dispatcher.intentAtPath(targetPath, op.name, args, op.opts);\n        break;\n    }\n  }\n}\n\n// src/oo.js\nvar BAD_VALUE2 = /* @__PURE__ */ Symbol(\"BadValue\");\nvar COERCE_NONE = (_v) => null;\nvar COERCE_MAP = (v) => {\n  if (v instanceof Map) return new Map(v);\n  if (Array.isArray(v) || isPlainObject(v))\n    return new Map(Array.isArray(v) ? v : Object.entries(v));\n  return null;\n};\nvar FIELD_TYPES = {\n  any: [(_v) => true, COERCE_NONE, () => null],\n  text: [(v) => typeof v === \"string\", (v) => v?.toString?.() ?? \"\", () => \"\"],\n  int: [Number.isInteger, (v) => Number.isFinite(v) ? Math.trunc(v) : null, () => 0],\n  float: [Number.isFinite, COERCE_NONE, () => 0],\n  bool: [(v) => typeof v === \"boolean\", (v) => !!v, () => false],\n  list: [Array.isArray, (v) => Array.isArray(v) ? [...v] : null, () => []],\n  object: [isPlainObject, (v) => isPlainObject(v) ? { ...v } : null, () => ({})],\n  map: [(v) => v instanceof Map, COERCE_MAP, () => /* @__PURE__ */ new Map()],\n  set: [\n    (v) => v instanceof Set,\n    (v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null,\n    () => /* @__PURE__ */ new Set()\n  ]\n};\nvar Field = class {\n  // `type` names an entry of FIELD_TYPES; `defaultValue` falls back to the type's own.\n  constructor(type3, name, defaultValue, [typeCheck, coercer, makeDefault] = FIELD_TYPES[type3]) {\n    this.type = type3;\n    this.name = name;\n    this.typeCheck = typeCheck;\n    this.coercer = coercer;\n    this.defaultValue = defaultValue === void 0 ? makeDefault() : defaultValue;\n  }\n  isValid(v) {\n    return this.typeCheck(v);\n  }\n  coerceOr(v, defaultValue = null) {\n    if (this.isValid(v)) return v;\n    const v1 = this.coercer(v);\n    return this.isValid(v1) ? v1 : defaultValue;\n  }\n  coerceOrDefault(v) {\n    return this.coerceOr(v, this.defaultValue);\n  }\n};\nvar metaOf = (v) => v?.constructor?.getMetaClass?.();\nvar getTypeName = (v) => metaOf(v)?.name ?? null;\nvar FieldComp = class extends Field {\n  constructor(type3, name, args) {\n    super(type3, name, null, [(v) => getTypeName(v) === type3, COERCE_NONE, () => null]);\n    this.args = args;\n  }\n};\nfunction mkCompField(field, scope, args) {\n  const Comp = scope?.lookupComponent(field.type) ?? null;\n  if (Comp === null)\n    console.warn(\n      scope ? `component field \"${field.name}\": component \"${field.type}\" not found in scope` : `component field \"${field.name}\": cannot resolve component \"${field.type}\" — built without a registered scope (use ${field.type}.make({}) as the default, or build via a registered component)`\n    );\n  return Comp?.make({ ...field.args, ...args }, { scope }) ?? null;\n}\nfunction fieldFromSpec(name, value) {\n  const type3 = typeof value;\n  if (type3 === \"string\") return new Field(\"text\", name, value);\n  if (type3 === \"number\") return new Field(\"float\", name, value);\n  if (type3 === \"boolean\") return new Field(\"bool\", name, value);\n  if (Array.isArray(value)) return new Field(\"list\", name, [...value]);\n  if (value instanceof Set) return new Field(\"set\", name, new Set(value));\n  if (value instanceof Map) return new Field(\"map\", name, new Map(value));\n  if (value?.type && Object.hasOwn(value, \"defaultValue\")) {\n    const t = value.type in FIELD_TYPES ? value.type : \"any\";\n    const probe = new Field(t, name);\n    return new Field(t, name, probe.coerceOr(value.defaultValue, probe.defaultValue));\n  }\n  if (value?.component && value?.args !== void 0)\n    return new FieldComp(value.component, name, value.args);\n  if (isPlainObject(value)) return new Field(\"object\", name, { ...value });\n  return new Field(\"any\", name, value);\n}\nfunction classFromData(name, { fields: spec = {}, methods = {}, statics = {} }) {\n  const fields = {};\n  for (const key in spec) fields[key] = fieldFromSpec(key, spec[key]);\n  const defaults = Object.fromEntries(\n    Object.entries(fields).map(([key, field]) => [key, field.defaultValue])\n  );\n  const Class = {\n    [name]: class {\n      constructor(values = {}) {\n        Object.assign(this, defaults, values);\n      }\n    }\n  }[name];\n  Class[DRAFTABLE] = true;\n  Object.assign(Class.prototype, methods);\n  Object.assign(\n    Class,\n    {\n      fields,\n      methods,\n      // The documented way for instance code to reach its class's fields\n      // (`this.constructor.getMetaClass().fields.x.defaultValue`).\n      getMetaClass: () => Class,\n      make(inArgs = {}, opts = {}) {\n        const args = {};\n        const scope = opts.scope ?? this.scope;\n        for (const key in inArgs) {\n          const field = fields[key];\n          if (field === void 0)\n            console.warn(\"extra argument to constructor:\", name, key, inArgs);\n          else if (field instanceof FieldComp) args[key] = mkCompField(field, scope, inArgs[key]);\n          else args[key] = field.coerceOrDefault(inArgs[key]);\n        }\n        for (const key in fields)\n          if (fields[key] instanceof FieldComp && args[key] === void 0)\n            args[key] = mkCompField(fields[key], scope, void 0);\n        return freeze(new this(args), true);\n      }\n    },\n    statics\n  );\n  return Class;\n}\nfunction validateDraftFields(current2, draft) {\n  const meta = metaOf(current2);\n  if (!meta) return;\n  for (const [name, field] of Object.entries(meta.fields)) {\n    const value = draft[name];\n    if (field.isValid(value)) continue;\n    const coerced = field.coerceOr(value, BAD_VALUE2);\n    if (coerced !== BAD_VALUE2) draft[name] = coerced;\n    else {\n      console.warn(`invalid value for ${meta.name}.${name}`, value);\n      draft[name] = current2[name];\n    }\n  }\n}\nvar RESERVED_COMPONENT_STATICS = /* @__PURE__ */ new Set([\n  ...\"name id fields methods views receive intent alter provide provideType lookup spec extra commonStyle globalStyle scope _rawProvide _rawLookup make getMetaClass\".split(\n    \" \"\n  ),\n  ...Object.keys(COMPONENT_METHODS)\n]);\nfunction assertNoReservedComponentStatics(statics = {}) {\n  for (const name in statics) {\n    if (RESERVED_COMPONENT_STATICS.has(name)) {\n      throw new TypeError(`component static \"${name}\" is reserved by the framework`);\n    }\n  }\n}\nfunction component(opts) {\n  assertNoReservedComponentStatics(opts.statics);\n  return initComponent(classFromData(opts.name ?? \"UnkComp\", opts), opts);\n}\n\n// src/transactor.js\nvar State2 = class {\n  constructor(val) {\n    this.val = val;\n    this.changeSubs = [];\n  }\n  onChange(cb) {\n    this.changeSubs.push(cb);\n  }\n  set(val, info) {\n    const old = this.val;\n    this.val = val;\n    for (const sub of this.changeSubs) sub({ val, old, info, timestamp: Date.now() });\n  }\n};\nvar Transactor = class {\n  constructor(comps, rootValue) {\n    this.comps = comps;\n    this.transactions = [];\n    this.state = new State2(rootValue);\n    this.onTransactionPushed = () => {\n    };\n    this._observers = [];\n    this.refusals = [];\n    this._refusalObservers = [];\n    this._inflight = /* @__PURE__ */ new Set();\n  }\n  pushTransaction(t) {\n    this.transactions.push(t);\n    this.onTransactionPushed(t);\n  }\n  // Subscribe to a normalized record for every handler invocation. `kind` is the\n  // handler bucket (`receive` / `intent`), plus `answer` — an observation-only kind for\n  // a message the runtime wrote to answer an intent. The BUCKET does not know about\n  // that distinction, and must not: a handler cannot tell an answer from a message its\n  // parent sent. Returns an unsubscribe function. Records\n  // carry: kind, name, args, path, pathKeys, targetPath, handler, handlerName,\n  // matched, before, after, parent, timestamp. Purely observational.\n  observe(cb) {\n    return subscribe(this._observers, cb);\n  }\n  // Record a refusal: a dispatch the runtime could not carry out. Kinds are\n  // open strings; today the runtime raises NO_HANDLER (a receive name with no\n  // implementation, including the auto-generated fallback firing at dispatch\n  // time) and FORWARD_NO_NAME (ctx.forward() from a handler whose view wrote\n  // no name). Records carry { kind, info, timestamp } and are observational —\n  // the dispatch itself has already failed gracefully.\n  refuse(kind, info = {}) {\n    const record = { kind, info, timestamp: Date.now() };\n    this.refusals.push(record);\n    if (this.refusals.length > REFUSAL_RING_CAP) this.refusals.shift();\n    console.warn(`tutuca refusal [${kind}]`, info);\n    for (const cb of this._refusalObservers) cb(record);\n    return record;\n  }\n  // Subscribe to refusal records as they happen. Returns an unsubscribe fn,\n  // like observe().\n  observeRefusals(cb) {\n    return subscribe(this._refusalObservers, cb);\n  }\n  // Build and dispatch one observer record. Pins field-resolved keys (e.g. a\n  // `.a[.selId]` render target reconstructed from a DOM event) against the root the\n  // handler read, so pathKeys carries concrete keys instead of dropping the dynamic\n  // step. No-op when nobody is observing.\n  _emitRecord(root, { kind, name, args, path: path2, targetPath, handler, handlerName, matched, before, after, parent }) {\n    if (this._observers.length === 0) return;\n    const pinned = path2.pinKeys(root);\n    const record = {\n      kind,\n      name,\n      args: args ?? null,\n      path: pinned,\n      pathKeys: pinned.toKeys(),\n      targetPath,\n      handler: handler ?? null,\n      handlerName: handlerName ?? (handler?.name || null),\n      matched: matched ?? null,\n      before,\n      after,\n      parent,\n      timestamp: Date.now()\n    };\n    for (const cb of this._observers) cb(record);\n  }\n  // The observer record for a settled transaction. The resolved handler\n  // (`_resolvedHandler`/`_matched`) and per-leaf before/after (`_before`/`_after`)\n  // were captured while the handler ran (see callHandler / Transaction.run).\n  _emitTransaction(transaction, root) {\n    if (this._observers.length === 0) return;\n    this._emitRecord(root, {\n      kind: transaction.observeKind,\n      name: transaction.observeName,\n      args: transaction.args,\n      path: transaction.getTransactionPath(),\n      targetPath: transaction.targetPath ?? transaction.path,\n      handler: transaction._resolvedHandler,\n      matched: transaction._matched,\n      before: transaction._before,\n      after: transaction._after,\n      parent: transaction.parentTransaction\n    });\n  }\n  // `origin` is where the message came FROM, pinned now for the same reason an\n  // intent's answerPath is: a reply must reach the sender that asked even if a key\n  // moved while the message was in flight. Null when nobody is waiting — a host\n  // sendAtRoot or a view's own `@on.*` — and ctx.sendReply refuses on that.\n  //\n  // The parent's subtree stays open until this message's whole subtree settles. The\n  // unit is taken now, at dispatch — during the parent's handler or afterTransaction,\n  // while the parent's self-unit is still held — so its counter can't reach zero first.\n  pushSend(path2, name, args = [], parent = null, origin = null, txnPath = null) {\n    const t = new SendEvent(path2, this, name, args, parent);\n    t.txnPath = txnPath;\n    t.origin = origin;\n    t.originPinned = origin === null ? null : origin.toTransactionPath().pinKeys(this.state.val);\n    this.pushTransaction(t);\n    if (parent) t.completion.carry(parent.completion.track());\n    return t;\n  }\n  // Raise an intent: a job the sender did not address, walked along a route until\n  // something answers. `opts.route` is a list of legs (see DEFAULT_ROUTE) and\n  // `opts.livePath` opts out of pinning the answer's destination keys.\n  pushIntent(path2, name, args = [], opts = {}, parent = null) {\n    const release = parent ? parent.completion.track() : null;\n    const walk = new IntentWalk(this, path2, name, args, opts, parent, release);\n    walk.advance();\n    return walk;\n  }\n  // Drain queued transactions and await async intent handlers until quiescent. A\n  // completed handler may enqueue an answer, which may dispatch more work, so we loop.\n  // `maxTurns` backstops a pathological non-terminating cascade.\n  async settle(maxTurns = 1e4) {\n    while ((this.hasPendingTransactions || this._inflight.size) && maxTurns-- > 0) {\n      while (this.hasPendingTransactions) this.transactNext();\n      if (this._inflight.size) await Promise.allSettled([...this._inflight]);\n    }\n  }\n  get hasPendingTransactions() {\n    return this.transactions.length > 0;\n  }\n  transactNext() {\n    this.transact(this.transactions.shift());\n  }\n  transact(transaction) {\n    try {\n      const curState = this.state.val;\n      const newState = transaction.run(curState, this.comps);\n      if (newState !== void 0) {\n        this.state.set(newState, { transaction });\n        transaction.afterTransaction();\n        this._emitTransaction(transaction, curState);\n      } else console.warn(\"undefined new state\", { curState, transaction });\n    } finally {\n      transaction.ensureWalkAdvanced?.();\n      transaction._completion?.finish();\n    }\n  }\n  transactInputNow(path2, event, eventHandler, dragInfo) {\n    this.transact(new InputEvent(path2, event, eventHandler, this, dragInfo));\n  }\n};\nfunction nullHandler() {\n  return this;\n}\nfunction subscribe(list, cb) {\n  list.push(cb);\n  return () => {\n    const i = list.indexOf(cb);\n    if (i !== -1) list.splice(i, 1);\n  };\n}\nfunction warnUnknownLeg(what, leg) {\n  console.warn(`unknown ${what} route leg`, leg, '- expected \"dyn\" or \"lex\"');\n  return null;\n}\nvar Transaction = class {\n  constructor(path2, transactor, parentTransaction = null) {\n    this.path = path2;\n    this.txnPath = null;\n    this.transactor = transactor;\n    this.parentTransaction = parentTransaction;\n    this._completion = null;\n  }\n  // Lazily created (like the rest of the per-transaction state): a leaf event that\n  // nobody tracks or awaits never allocates one. See `class Completion`.\n  get completion() {\n    this._completion ??= new Completion();\n    return this._completion;\n  }\n  // Resolves once this transaction's own handler has run.\n  whenSettled() {\n    return this.completion.whenSettled();\n  }\n  // Resolves once this transaction AND all transitively-derived work (sends and\n  // intents, including the answers they produce, recursively) have settled.\n  whenSubtreeSettled() {\n    return this.completion.whenSubtreeSettled();\n  }\n  // Every transaction kind defines `observeKind` / `observeName` (what observers see;\n  // kept apart from `name`/`ctx.name` so they can't change handler-visible behavior),\n  // `getHandlerAndArgs(root, instance, comps)`, and the three `_forward*` hooks below.\n  callHandler(root, instance, draft, comps) {\n    const [handler, args] = this.getHandlerAndArgs(root, instance, comps);\n    this._resolvedHandler = handler;\n    return handler.apply(instance, [draft, ...args]);\n  }\n  // `forward` is where a name can LEAVE the component: the message being handled is\n  // raised again as an INTENT under the same name (`_forwardName()`) with the same\n  // arguments unless `opts.args` says otherwise, from the position `_forwardPath()`\n  // names. Deferred to afterTransaction so the state the handler produced is in place\n  // before the walk starts. (`IntentEvent` overrides both: in an intent body, forward\n  // amends the walk that is already running.)\n  forward(opts) {\n    this._forward = opts ?? {};\n  }\n  afterTransaction() {\n    const f = this._forward;\n    if (f === void 0) return;\n    this._forward = void 0;\n    const name = this._forwardName();\n    if (name === void 0) {\n      this.transactor.refuse(\"FORWARD_NO_NAME\", {});\n      return;\n    }\n    const { args = this._forwardArgs(), ...rest } = f;\n    this.transactor.pushIntent(this._forwardPath(), name, args, rest, this);\n  }\n  // The path used to apply the mutation: the ACTIVE frame of the dispatch path, so\n  // an event inside a `<x render=\"*name\">` subtree updates the value where it\n  // really lives (the dispatch `this.path` keeps the visual callers, for bubbling).\n  // `txnPath`, when pinned by the sender, wins.\n  getTransactionPath() {\n    return this.txnPath ?? this.path.toTransactionPath();\n  }\n  run(curRoot, comps) {\n    const txnPath = this.getTransactionPath();\n    const curLeaf = txnPath.lookup(curRoot);\n    const newLeaf = produce(curLeaf, (draft) => {\n      const result = this.callHandler(curRoot, curLeaf, draft, comps);\n      if (result === void 0 || result === draft) validateDraftFields(curLeaf, draft);\n      return result;\n    });\n    this._before = curLeaf;\n    this._after = newLeaf;\n    this._completion?.markSelfSettled({ value: newLeaf, old: curLeaf });\n    return curLeaf !== newLeaf ? txnPath.setValue(curRoot, newLeaf) : curRoot;\n  }\n};\nvar InputEvent = class extends Transaction {\n  constructor(path2, e, handler, transactor, dragInfo) {\n    super(path2, transactor);\n    this.e = e;\n    this.handler = handler;\n    this.dragInfo = dragInfo;\n    this._dispatchPath = null;\n  }\n  // Frame-only steps removed, one step per crossed component kept — inside every\n  // continuation frame independently, so bubbling it visits every component and\n  // then returns to the caller that wrote the `*name`.\n  get dispatchPath() {\n    this._dispatchPath ??= this.path.compact();\n    return this._dispatchPath;\n  }\n  // Only a DOM event's path carries frame-only bind steps (they replay the handler's\n  // arguments, but address no state); the compacted path is where the mutation lands,\n  // so a handler inside @each still updates the component that owns the view. Every\n  // other transaction is dispatched at an already-compacted position.\n  getTransactionPath() {\n    return this.dispatchPath.toTransactionPath();\n  }\n  // A DOM event is an ADDRESSED message like any other — it reaches the component that\n  // owns the view and stops. It keeps its own class only because it resolves its handler\n  // from the compiled view and runs synchronously, not because it is a different channel.\n  get observeKind() {\n    return \"receive\";\n  }\n  get observeName() {\n    return this.e?.type ?? null;\n  }\n  // A view's name is a message, and forwarding it means a view that says\n  // `@on.click=\"saveDraft .text\"` never has to change when an ancestor takes the job\n  // over. (A `$method` handler has a name too, so forwarding one raises an intent under\n  // it.) `handler` is a NodeEvent, whose own `name` is the DOM event type; the MESSAGE\n  // name is the one the view wrote, on the handler call it wraps.\n  _forwardName() {\n    const hv = this.handler?.handlerCall?.handlerVal ?? this.handler?.handlerVal;\n    return hv?.name;\n  }\n  _forwardArgs() {\n    return this._handlerArgs ?? [];\n  }\n  _forwardPath() {\n    return this.dispatchPath;\n  }\n  getHandlerAndArgs(root, _instance, comps) {\n    const stack = this.path.buildStack(Stack.root(comps, root, this));\n    const [handler, args] = this.handler.getHandlerAndArgs(stack, this);\n    this._handlerArgs = [...args];\n    const path2 = this.dispatchPath;\n    args.push(new EventContext(path2, this.transactor, this));\n    return [handler, args];\n  }\n};\nvar NameArgsTransaction = class extends Transaction {\n  constructor(path2, transactor, name, args, parentTransaction) {\n    super(path2, transactor, parentTransaction);\n    this.name = name;\n    this.args = args;\n    this.targetPath = path2;\n  }\n  handlerProp = null;\n  // NameArgs verbs map their handler bucket straight to the observed kind:\n  // receive / intent.\n  get observeKind() {\n    return this.handlerProp;\n  }\n  get observeName() {\n    return this.name;\n  }\n  // `forward` in a RECEIVE body starts a walk: the message that arrived becomes an\n  // intent, keeping its name and payload.\n  _forwardName() {\n    return this.name;\n  }\n  _forwardArgs() {\n    return this.args;\n  }\n  _forwardPath() {\n    return this.path;\n  }\n  getHandlerForName(comp) {\n    const handlers = comp?.[this.handlerProp];\n    const exact = handlers?.[this.name];\n    if (exact) {\n      this._matched = \"exact\";\n      return exact;\n    }\n    const unknown = handlers?.$unknown;\n    if (unknown) {\n      this._matched = \"unknown\";\n      return unknown;\n    }\n    this._matched = \"none\";\n    return nullHandler;\n  }\n  getHandlerAndArgs(_root, instance, comps) {\n    const handler = this.getHandlerForName(comps.getCompFor(instance));\n    return [handler, [...this.args, new EventContext(this.path, this.transactor, this)]];\n  }\n};\nvar SendEvent = class extends NameArgsTransaction {\n  handlerProp = \"receive\";\n  // `receive` is the ADDRESSED bucket, and it is the only one: a view's `@on.click`,\n  // a parent's ctx.send, the host's sendAtRoot and an answer to an intent all arrive\n  // here, and a handler cannot tell them apart. Splitting on where a message came from\n  // would let the view's name through and turn the parent's away, though the two say\n  // the same thing — and neither a test nor a parent could drive the component.\n  get observeKind() {\n    return this._isAnswer ? \"answer\" : \"receive\";\n  }\n};\nvar IntentEvent = class extends NameArgsTransaction {\n  handlerProp = \"intent\";\n  constructor(path2, transactor, walk) {\n    super(path2, transactor, walk.name, walk.args, walk.parent);\n    this.walk = walk;\n    this.targetPath = walk.origin;\n  }\n  // `forward` in an INTENT body amends the hop about to be pushed — it does not push\n  // one itself, because a walk advances on its own.\n  forward(opts) {\n    this.walk.amend(opts, this.path);\n  }\n  afterTransaction() {\n    this.ensureWalkAdvanced();\n  }\n  // Idempotent, because both afterTransaction and the transactor's `finally` call it —\n  // whichever gets there first advances the walk exactly once.\n  ensureWalkAdvanced() {\n    if (this._advanced) return;\n    this._advanced = true;\n    this.walk.advance();\n  }\n};\nvar PASS = /* @__PURE__ */ Symbol.for(\"tutuca.intent.pass\");\nvar REFUSAL_RING_CAP = 200;\nvar INTENT_DEPTH = 64;\nvar IntentWalk = class {\n  constructor(transactor, path2, name, args, opts, parent, release) {\n    this.transactor = transactor;\n    this.name = name;\n    this.args = args;\n    this.route = opts?.route ?? DEFAULT_ROUTE;\n    this.parent = parent;\n    this.release = release;\n    this.origin = path2;\n    this.answerPath = opts?.livePath ? null : path2.toTransactionPath().pinKeys(transactor.state.val);\n    this.legIndex = 0;\n    this.dynAt = path2;\n    this.hops = 0;\n    this.ended = false;\n  }\n  // Offer the intent to the next hop. Called once at dispatch, and again by every hop\n  // that ran without answering.\n  advance() {\n    if (this.ended) return;\n    if (this.hops++ >= INTENT_DEPTH) return this.exhaust(\"intentDepth\");\n    while (this.legIndex < this.route.length) {\n      const leg = this.route[this.legIndex];\n      if (leg === \"dyn\") {\n        if (!this.dynAt.canPop()) {\n          this.legIndex++;\n          continue;\n        }\n        this.dynAt = this.dynAt.popStep();\n        this.transactor.pushTransaction(new IntentEvent(this.dynAt, this.transactor, this));\n        return;\n      }\n      if (leg === \"lex\") {\n        this.legIndex++;\n        return this._tryLex();\n      }\n      warnUnknownLeg(\"intent\", leg);\n      this.legIndex++;\n    }\n    this.exhaust(\"noHandler\");\n  }\n  // The `lex` leg: the handlers registered on the scope chain of the component that\n  // raised the intent, in order.\n  _tryLex() {\n    const root = this.transactor.state.val;\n    const txnPath = this.origin.toTransactionPath();\n    const leaf = txnPath.lookup(root);\n    const chain = this.transactor.comps.getIntentChainFor(leaf, this.name);\n    this.transactor._emitRecord(root, {\n      kind: \"intent\",\n      name: this.name,\n      args: this.args,\n      path: txnPath,\n      targetPath: this.origin,\n      handler: chain[0],\n      handlerName: chain[0]?.name || this.name,\n      matched: chain.length > 0 ? \"exact\" : \"none\",\n      before: leaf,\n      after: void 0,\n      parent: this.parent\n    });\n    if (chain.length === 0) return this.advance();\n    const p = this._runLex(chain, 0);\n    this.transactor._inflight.add(p);\n    p.finally(() => this.transactor._inflight.delete(p));\n  }\n  async _runLex(chain, i) {\n    if (this.ended) return;\n    if (i >= chain.length) return this.advance();\n    const ctx = new Dispatcher(this.origin, this.transactor, this.parent);\n    try {\n      const res = await chain[i].apply(null, [...this.args, ctx]);\n      if (res === PASS) return this._runLex(chain, i + 1);\n      this.answer(\"Ok\", res);\n    } catch (error) {\n      this.answer(\"Error\", error);\n    }\n  }\n  // A hop answered. Ends the walk.\n  answer(suffix, value) {\n    this.finish(`${this.name}${suffix}`, [value]);\n  }\n  // `forward` from an intent body: keep walking, optionally with new arguments or a\n  // narrowed route.\n  amend(opts, from) {\n    if (opts?.args !== void 0) this.args = opts.args;\n    if (opts?.route !== void 0) {\n      this.route = opts.route;\n      this.legIndex = 0;\n      this.dynAt = from ?? this.dynAt;\n    }\n  }\n  // The route ran out. What the sender hears depends only on what it DECLARES, which is\n  // how \"a sender expects an answer if and only if it declares an answer arm\" becomes\n  // code — nobody writes it down twice, and there is no schema to keep in step.\n  exhaust(reason) {\n    if (this.ended) return;\n    const { name, args } = this;\n    const comp = this.transactor.comps.getCompFor(\n      this.origin.toTransactionPath().lookup(this.transactor.state.val)\n    );\n    const declares = (n) => comp?.receive?.[n] !== void 0;\n    if (declares(`${name}Unhandled`)) {\n      this.finish(`${name}Unhandled`, args);\n    } else if (declares(`${name}Error`)) {\n      this.finish(`${name}Error`, [reason]);\n    } else {\n      if (declares(`${name}Ok`))\n        console.warn(\n          `intent \"${name}\" was not answered (${reason}) and this component declares only \"${name}Ok\" - add \"${name}Unhandled\" or \"${name}Error\" to handle it`\n        );\n      this.finish(null, null);\n    }\n  }\n  // End the walk. `name === null` means no answer goes out, which is what `stop` and a\n  // fire-and-forget notification both are — the tracked unit is released here instead\n  // of following an answer's subtree.\n  finish(name, args) {\n    if (this.ended) return;\n    this.ended = true;\n    if (name === null) return this.release?.();\n    const t = new SendEvent(this.origin, this.transactor, name, args, this.parent);\n    t.txnPath = this.answerPath;\n    t._isAnswer = true;\n    this.transactor.pushTransaction(t);\n    if (this.release) t.completion.carry(this.release);\n  }\n};\nvar Completion = class {\n  constructor() {\n    this.val = void 0;\n    this.selfSettled = false;\n    this.subtreeSettled = false;\n    this.pending = 0;\n    this._selfResolve = null;\n    this._selfPromise = null;\n    this._subtreeResolve = null;\n    this._subtreePromise = null;\n    this._releaseSelf = this.track();\n  }\n  whenSettled() {\n    if (this.selfSettled) return Promise.resolve(this.val);\n    this._selfPromise ??= new Promise((res) => {\n      this._selfResolve = res;\n    });\n    return this._selfPromise;\n  }\n  whenSubtreeSettled() {\n    if (this.subtreeSettled) return Promise.resolve(this.val);\n    this._subtreePromise ??= new Promise((res) => {\n      this._subtreeResolve = res;\n    });\n    return this._subtreePromise;\n  }\n  // The transaction's own handler ran (records its {value, old}). Does not touch the counter.\n  markSelfSettled(val) {\n    if (this.selfSettled) return;\n    this.selfSettled = true;\n    this.val = val;\n    this._selfResolve?.(val);\n  }\n  // The transaction is done processing: self is settled (with the value the handler\n  // produced, or none on the undefined-state / throw paths) and the self-unit goes.\n  finish() {\n    this.markSelfSettled(this.val);\n    this._releaseSelf();\n  }\n  // Register an outstanding unit; returns its one-shot release. The subtree settles\n  // when the last unit is released.\n  track() {\n    this.pending++;\n    let done = false;\n    return () => {\n      if (done) return;\n      done = true;\n      if (--this.pending === 0) {\n        this.subtreeSettled = true;\n        this._subtreeResolve?.(this.val);\n      }\n    };\n  }\n  // Hand a unit held elsewhere to this subtree: `release` runs once this transaction\n  // and everything it spawned have settled.\n  carry(release) {\n    this.whenSubtreeSettled().then(release);\n  }\n};\nvar Dispatcher = class {\n  constructor(path2, transactor, parentTransaction) {\n    this.path = path2;\n    this.transactor = transactor;\n    this.parent = parentTransaction;\n    this.root = transactor.state.val;\n  }\n  // Walk the component instances on this ctx's path, leaf→root, calling\n  // callback(Component, instance). Return false from the callback to stop early.\n  walkPath(callback) {\n    const comps = this.transactor.comps;\n    const chain = this.path.toTransactionPath().resolveChain(this.root);\n    for (let i = chain.length - 1; i >= 0; i--) {\n      const comp = comps.getCompFor(chain[i]);\n      if (comp && callback(comp, chain[i]) === false) return;\n    }\n  }\n  get at() {\n    return new PathChanges(this);\n  }\n  // The render-time Stack, rebuilt on demand. A handler does not get one: the stack\n  // that evaluated its arguments is a local in getHandlerAndArgs and is gone by the\n  // time the body runs, and send/intent transactions never build one at all. Both\n  // halves it needs are pinned on this ctx, so the `dyn` leg reconstructs it — and\n  // only the `dyn` leg does, which is why this is lazy rather than eager.\n  //\n  // The path is compacted, so per-item binds (`@each`, `@enrich-with`) are not\n  // replayed; provides are pushed on every component frame either way, so a provide\n  // that reads a loop binding is the one case this cannot reproduce faithfully.\n  _stack() {\n    this._stackMemo ??= this.path.buildStack(\n      Stack.root(this.transactor.comps, this.root, this.parent)\n    );\n    return this._stackMemo;\n  }\n  // Resolve a name the way the renderer would. `opts.route` takes the same legs in\n  // the same spelling as `ctx.intent` — `[\"dyn\"]` the render ancestry, `[\"lex\"]` the\n  // registration scope, default both.\n  // Legs are tried in route order, like the intent walker's; an unknown leg warns and\n  // is skipped, and an empty route resolves to null.\n  lookup(name, opts) {\n    for (const leg of opts?.route ?? DEFAULT_ROUTE) {\n      const v = leg === \"dyn\" ? this._stack()?.lookupDynamic(name) ?? null : leg === \"lex\" ? this._lookupLex(name) : warnUnknownLeg(\"lookup\", leg);\n      if (v != null) return v;\n    }\n    return null;\n  }\n  // The `lex` leg without a Stack: the scope of the component whose handler is\n  // running, which is the leaf of this ctx's path. A type name resolves to the\n  // component registered under it; a value name to a path registered under it\n  // (see ComponentStack.registerPaths), read against the current root.\n  _lookupLex(name) {\n    let Comp = null;\n    this.walkPath((c) => {\n      Comp = c;\n      return false;\n    });\n    const scope = Comp?.scope;\n    if (scope == null) return null;\n    if (isTypeName(name)) return scope.lookupComponent(name) ?? null;\n    return scope.lookupPath(name)?.lookup(this.root) ?? null;\n  }\n  // A component lookup is a value lookup constrained to a component. The `lex` leg\n  // can only ever answer with one; the `dyn` leg reads a binding an ancestor\n  // published, so it is the leg that has to be checked.\n  lookupType(name, opts) {\n    const route = opts?.route ?? DEFAULT_ROUTE;\n    const v = this.lookup(name, { route });\n    if (v == null) {\n      this.transactor.refuse(\"TYPE_NOT_FOUND\", { name, route });\n      return null;\n    }\n    if (v?.[COMPONENT] == null) {\n      this.transactor.refuse(\"TYPE_NOT_COMPONENT\", { name, got: typeof v });\n      return null;\n    }\n    return v;\n  }\n  // A message is ADDRESSED: it names one component and stops there.\n  send(name, args) {\n    return this.sendAtPath(this.path, name, args);\n  }\n  sendAtPath(path2, name, args) {\n    return this.transactor.pushSend(path2, name, args, this.parent, this.path);\n  }\n  // An intent is ROUTED: it names a job and walks until something answers. The verb\n  // does not decide which scope answers — `opts.route` does, written here at the call\n  // site, which is where the decision actually is.\n  intent(name, args, opts) {\n    return this.intentAtPath(this.path, name, args, opts);\n  }\n  intentAtPath(path2, name, args, opts) {\n    return this.transactor.pushIntent(path2, name, args, opts, this.parent);\n  }\n};\nvar EventContext = class extends Dispatcher {\n  get name() {\n    return this.parent?.name ?? null;\n  }\n  get targetPath() {\n    return this.parent.targetPath;\n  }\n  // Answer the intent being handled, with a result or with an error. Either ENDS the\n  // walk. Legal only in an `intent` handler: a message has no sender waiting on it.\n  reply(value) {\n    return this.parent.walk === void 0 ? warnNotIntent(\"reply\") : this.parent.walk.answer(\"Ok\", value);\n  }\n  fail(error) {\n    return this.parent.walk === void 0 ? warnNotIntent(\"fail\") : this.parent.walk.answer(\"Error\", error);\n  }\n  // Reply to the sender of the MESSAGE being handled. An intent answers under a name\n  // the runtime derives (`<name>Ok`), because the raiser asked a question and declared\n  // arms for it; a message did not, so the replier names the reply itself and the\n  // sender handles it like any other message. Refuses when nobody sent this — a view's\n  // own `@on.*`, or a host sendAtRoot.\n  sendReply(name, args) {\n    const origin = this.parent?.origin ?? null;\n    if (origin == null) {\n      this.transactor.refuse(\"NO_SENDER\", { name });\n      return null;\n    }\n    return this.transactor.pushSend(\n      origin,\n      name,\n      args,\n      this.parent,\n      this.path,\n      this.parent.originPinned\n    );\n  }\n  // End the walk answering nothing — \"served, and no answer\". Like reply/fail,\n  // legal only in an `intent` handler.\n  stop() {\n    return this.parent.walk === void 0 ? warnNotIntent(\"stop\") : this.parent.walk.finish(null, null);\n  }\n  // From an `intent` body: hand the intent to the next hop, optionally amending it.\n  // From a `receive` body: turn the message that arrived into an intent. One word from\n  // both ends of a walk; which one you get depends on which bucket you are in.\n  forward(opts) {\n    return this.parent.forward(opts);\n  }\n};\nfunction warnNotIntent(verb) {\n  console.warn(`ctx.${verb}() is only meaningful in an \"intent\" handler - ignored`);\n}\nvar PathChanges = class extends PathBuilder {\n  constructor(dispatcher) {\n    super();\n    this.dispatcher = dispatcher;\n  }\n  send(name, args) {\n    return this.dispatcher.sendAtPath(this.buildPath(), name, args);\n  }\n  intent(name, args, opts) {\n    return this.dispatcher.intentAtPath(this.buildPath(), name, args, opts);\n  }\n  buildPath() {\n    return this.dispatcher.path.concat(this.pathChanges);\n  }\n};\nfunction rootDispatcher(transactor) {\n  return new Dispatcher(new DispatchPath(), transactor, null);\n}\n\n// tools/core/results.js\nvar ModuleInfo = class {\n  constructor({ path: path2 = null, present = /* @__PURE__ */ new Set(), counts = {}, warnings = [] }) {\n    this.path = path2;\n    this.present = present;\n    this.counts = counts;\n    this.warnings = warnings;\n  }\n};\nvar ComponentSummary = class {\n  constructor({ name, views, fields }) {\n    this.name = name;\n    this.views = views;\n    this.fields = fields;\n  }\n};\nvar ComponentList = class {\n  constructor({ items, total = null, truncated = false }) {\n    this.items = items;\n    this.total = total ?? items.length;\n    this.truncated = truncated;\n  }\n};\nvar ExampleIndex = class {\n  constructor({ sections, total = null, truncated = false }) {\n    this.sections = sections;\n    this.total = total ?? sections.reduce((n, s) => n + (s.items?.length ?? 0), 0);\n    this.truncated = truncated;\n  }\n};\nvar ComponentDocs = class {\n  constructor({ items }) {\n    this.items = items;\n  }\n};\nvar LintFinding = class {\n  constructor({ id, level, info, context = {}, suggestion = null }) {\n    this.id = id;\n    this.level = level;\n    this.info = info;\n    this.context = context;\n    this.suggestion = suggestion;\n  }\n};\nvar LintComponentResult = class {\n  constructor({ componentName, findings }) {\n    this.componentName = componentName;\n    this.findings = findings;\n  }\n  get errorCount() {\n    return this.findings.filter((f) => f.level === \"error\").length;\n  }\n  get warnCount() {\n    return this.findings.filter((f) => f.level === \"warn\").length;\n  }\n};\nvar LintReport = class {\n  constructor({ components }) {\n    this.components = components;\n  }\n  get hasErrors() {\n    return this.components.some((c) => c.errorCount > 0);\n  }\n  get totalErrors() {\n    return this.components.reduce((n, c) => n + c.errorCount, 0);\n  }\n  get totalWarnings() {\n    return this.components.reduce((n, c) => n + c.warnCount, 0);\n  }\n};\nvar RenderedExample = class {\n  constructor({ title, description = null, componentName, view, html: html2, error = null }) {\n    this.title = title;\n    this.description = description;\n    this.componentName = componentName;\n    this.view = view;\n    this.html = html2;\n    this.error = error;\n  }\n};\nvar RenderedSection = class {\n  constructor({ title, description = null, items }) {\n    this.title = title;\n    this.description = description;\n    this.items = items;\n  }\n};\nvar RenderBatch = class {\n  constructor({ sections }) {\n    this.sections = sections;\n  }\n  get hasErrors() {\n    return this.sections.some((s) => s.items.some((i) => i.error !== null));\n  }\n};\nvar TestResult = class {\n  constructor({ title, fullPath, componentName = null, status, durationMs = 0, error = null }) {\n    this.title = title;\n    this.fullPath = fullPath;\n    this.componentName = componentName;\n    this.status = status;\n    this.durationMs = durationMs;\n    this.error = error;\n  }\n};\nvar DescribeResult = class {\n  constructor({ title, componentName = null, children = [] }) {\n    this.title = title;\n    this.componentName = componentName;\n    this.children = children;\n  }\n};\nvar ModuleTestReport = class {\n  constructor({ path: path2 = null, suites = [], counts = { pass: 0, fail: 0, skip: 0, total: 0 } }) {\n    this.path = path2;\n    this.suites = suites;\n    this.counts = counts;\n  }\n};\nvar TestReport = class {\n  constructor({ modules = [] }) {\n    this.modules = modules;\n  }\n  get totals() {\n    return this.modules.reduce(\n      (acc, m) => ({\n        pass: acc.pass + m.counts.pass,\n        fail: acc.fail + m.counts.fail,\n        skip: acc.skip + m.counts.skip,\n        total: acc.total + m.counts.total\n      }),\n      { pass: 0, fail: 0, skip: 0, total: 0 }\n    );\n  }\n  get hasFailures() {\n    return this.modules.some((m) => m.counts.fail > 0);\n  }\n};\n\n// tools/core/tests.js\nvar Describe = class {\n  constructor({ title, componentName = null, parent = null }) {\n    this.title = title;\n    this.componentName = componentName;\n    this.parent = parent;\n    this.children = [];\n  }\n};\nvar Test = class {\n  constructor({ title, fn, componentName = null, parent = null }) {\n    this.title = title;\n    this.fn = fn;\n    this.componentName = componentName;\n    this.parent = parent;\n  }\n};\nvar ModuleTests = class {\n  constructor({ path: path2 = null, suites = [] } = {}) {\n    this.path = path2;\n    this.suites = suites;\n  }\n};\nfunction isComponentObject(x) {\n  if (x === null) return false;\n  if (typeof x === \"function\") return x[COMPONENT] != null;\n  return typeof x.name === \"string\" && typeof x.Class === \"function\";\n}\nfunction resolveComponentName(arg, components) {\n  if (isComponentObject(arg)) return arg.name;\n  if (typeof arg === \"function\") {\n    for (const c of components) if (c === arg) return c.name;\n  }\n  return null;\n}\nfunction titleFromArg(arg) {\n  if (typeof arg === \"string\") return arg;\n  if (isComponentObject(arg)) return arg.name;\n  if (typeof arg === \"function\") return arg.name || \"(anonymous)\";\n  return String(arg);\n}\nfunction makeCollector({ path: path2 = null, components = [] } = {}) {\n  const moduleTests = new ModuleTests({ path: path2, suites: [] });\n  const stack = [];\n  function describe(...args) {\n    let head;\n    let options = null;\n    let fn;\n    if (args.length === 2) {\n      [head, fn] = args;\n    } else if (args.length === 3) {\n      [head, options, fn] = args;\n    } else {\n      throw new Error(`describe() expects 2 or 3 arguments, got ${args.length}`);\n    }\n    if (typeof fn !== \"function\") {\n      throw new Error(\n        `describe(${JSON.stringify(titleFromArg(head))}): final argument must be a function`\n      );\n    }\n    let componentName = null;\n    if (typeof head !== \"string\") {\n      componentName = resolveComponentName(head, components);\n    }\n    if (componentName === null && options && options.component != null) {\n      componentName = resolveComponentName(options.component, components);\n    }\n    if (componentName === null) {\n      const parent2 = stack.length ? stack[stack.length - 1] : null;\n      if (parent2) componentName = parent2.componentName;\n    }\n    const parent = stack.length ? stack[stack.length - 1] : null;\n    const node = new Describe({\n      title: titleFromArg(head),\n      componentName,\n      parent\n    });\n    if (parent) parent.children.push(node);\n    else moduleTests.suites.push(node);\n    stack.push(node);\n    try {\n      fn();\n    } finally {\n      stack.pop();\n    }\n  }\n  function test3(title, fn) {\n    if (typeof title !== \"string\") {\n      throw new Error(\"test(title, fn): title must be a string\");\n    }\n    if (typeof fn !== \"function\") {\n      throw new Error(`test(${JSON.stringify(title)}): fn must be a function`);\n    }\n    const parent = stack.length ? stack[stack.length - 1] : null;\n    if (!parent) {\n      throw new Error(`test(${JSON.stringify(title)}) must be called inside a describe()`);\n    }\n    parent.children.push(\n      new Test({\n        title,\n        fn,\n        componentName: parent.componentName,\n        parent\n      })\n    );\n  }\n  return { describe, test: test3, moduleTests };\n}\n\n// tools/core/test.js\nfunction buildPath(node) {\n  const parts = [];\n  let cur = node;\n  while (cur) {\n    parts.unshift(cur.title);\n    cur = cur.parent;\n  }\n  return parts.join(\" > \");\n}\nfunction captureError(e) {\n  const out = { message: e.message, stack: e.stack };\n  if (\"expected\" in e) out.expected = e.expected;\n  if (\"actual\" in e) out.actual = e.actual;\n  return out;\n}\nfunction buildStack({ components = [], macros = null, intentHandlers = null } = {}) {\n  const stack = new ComponentStack();\n  stack.registerComponents(components);\n  if (macros) stack.registerMacros(macros);\n  if (intentHandlers) stack.registerIntentHandlers(intentHandlers);\n  return stack;\n}\nasync function driveStack(stack, value, phase, opts = {}) {\n  const transactor = new Transactor(stack.comps, value);\n  if (opts.onMessage)\n    transactor.state.onChange(({ val, old, info }) => {\n      const t = info?.transaction;\n      opts.onMessage(\n        { kind: t?.handlerProp ?? \"receive\", name: t?.name, args: t?.args, path: t?.path },\n        old,\n        val\n      );\n    });\n  dispatchPhase(rootDispatcher(transactor), new DispatchPath(), phase, value);\n  await transactor.settle();\n  return transactor.state.val;\n}\nasync function drive(cfg, value, phase, opts = {}) {\n  return driveStack(buildStack(cfg), value, phase, opts);\n}\nasync function runTests({\n  getTests,\n  components = [],\n  path: path2 = null,\n  expect: expect2,\n  name = null,\n  grep = null,\n  bail = false,\n  intentHandlers = null,\n  macros = null\n} = {}) {\n  const counts = { pass: 0, fail: 0, skip: 0, total: 0 };\n  if (typeof getTests !== \"function\") {\n    return new TestReport({\n      modules: [new ModuleTestReport({ path: path2, suites: [], counts })]\n    });\n  }\n  if (typeof expect2 !== \"function\") {\n    throw new Error(\"runTests: expect must be provided (e.g. chai's expect)\");\n  }\n  const { describe, test: test3, moduleTests } = makeCollector({ path: path2, components });\n  let _stack = null;\n  const getStack = () => _stack ??= buildStack({ components, macros, intentHandlers });\n  const driveLocal = (value, phase, opts = {}) => driveStack(getStack(), value, phase, opts);\n  await getTests({ describe, test: test3, expect: expect2, drive: driveLocal });\n  let bailed = false;\n  async function visit(node) {\n    if (node instanceof Test) {\n      if (name !== null && node.componentName !== name) return null;\n      const fullPath = buildPath(node);\n      if (grep !== null && !fullPath.includes(grep)) return null;\n      counts.total++;\n      if (bailed) {\n        counts.skip++;\n        return new TestResult({\n          title: node.title,\n          fullPath,\n          componentName: node.componentName,\n          status: \"skip\"\n        });\n      }\n      const start = performance.now();\n      try {\n        await node.fn();\n        counts.pass++;\n        return new TestResult({\n          title: node.title,\n          fullPath,\n          componentName: node.componentName,\n          status: \"pass\",\n          durationMs: performance.now() - start\n        });\n      } catch (e) {\n        counts.fail++;\n        if (bail) bailed = true;\n        return new TestResult({\n          title: node.title,\n          fullPath,\n          componentName: node.componentName,\n          status: \"fail\",\n          durationMs: performance.now() - start,\n          error: captureError(e)\n        });\n      }\n    }\n    const childResults = [];\n    for (const child of node.children) {\n      const r = await visit(child);\n      if (r !== null) childResults.push(r);\n    }\n    if (childResults.length === 0) return null;\n    return new DescribeResult({\n      title: node.title,\n      componentName: node.componentName,\n      children: childResults\n    });\n  }\n  const suiteResults = [];\n  for (const suite of moduleTests.suites) {\n    const r = await visit(suite);\n    if (r !== null) suiteResults.push(r);\n  }\n  return new TestReport({\n    modules: [new ModuleTestReport({ path: path2, suites: suiteResults, counts })]\n  });\n}\n\n// tools/format/console.js\nvar PASS2 = \"color: #0a0; font-weight: bold\";\nvar FAIL = \"color: #c00; font-weight: bold\";\nvar SKIP = \"color: #888\";\nvar DIM = \"color: #888\";\nvar RESET = \"color: inherit; font-weight: normal\";\nfunction reportTestNode(node) {\n  if (node.children) {\n    const label = node.componentName ? `${node.title} [${node.componentName}]` : node.title;\n    console.group(label);\n    for (const child of node.children) reportTestNode(child);\n    console.groupEnd();\n    return;\n  }\n  const dur = node.status === \"skip\" ? \"\" : ` (${Math.round(node.durationMs)}ms)`;\n  if (node.status === \"pass\") {\n    console.log(`%c✓%c ${node.title}%c${dur}`, PASS2, RESET, DIM);\n  } else if (node.status === \"skip\") {\n    console.log(`%c○ ${node.title}%c (skipped)`, SKIP, RESET);\n  } else {\n    console.group(`%c✗%c ${node.title}%c${dur}`, FAIL, RESET, DIM);\n    console.error(node.error?.message ?? \"(no error message)\");\n    if (node.error && (\"expected\" in node.error || \"actual\" in node.error)) {\n      console.log(\"expected:\", node.error.expected);\n      console.log(\"actual:  \", node.error.actual);\n    }\n    if (node.error?.stack) console.log(node.error.stack);\n    console.groupEnd();\n  }\n}\nfunction reportTestReportToConsole(report) {\n  for (const m of report.modules) {\n    const label = `tutuca tests${m.path ? ` — ${m.path}` : \"\"}`;\n    console.group(label);\n    if (m.suites.length === 0) {\n      console.log(\"(no tests)\");\n    } else {\n      for (const s of m.suites) reportTestNode(s);\n    }\n    const c = m.counts;\n    const summary = `${c.pass} passed, ${c.fail} failed, ${c.skip} skipped (${c.total} total)`;\n    if (c.fail > 0) console.error(`%c${summary}`, FAIL);\n    else if (c.total === 0) console.log(`%c${summary}`, DIM);\n    else console.log(`%c${summary}`, PASS2);\n    console.groupEnd();\n  }\n  return report;\n}\n\n// tools/format/lint.js\nvar UNSUPPORTED_EXPR_LABEL = {\n  ternary: \"ternary expression\",\n  comparison: \"comparison\",\n  logical: \"logical expression\",\n  \"call-with-args\": \"method call with arguments\",\n  \"field-path\": \"dotted field path\"\n};\nfunction unsupportedExprMessage(info) {\n  const v = JSON.stringify(info.value);\n  const label = UNSUPPORTED_EXPR_LABEL[info.detected] ?? \"expression\";\n  switch (info.role) {\n    case \"attr\":\n      return `Unsupported ${label} ${v} in dynamic attribute ':${info.attr}'`;\n    case \"directive\":\n      return `Unsupported ${label} ${v} in directive '@${info.directive}'`;\n    case \"if\":\n      return `Unsupported ${label} ${v} in '@if.${info.attr}' condition`;\n    case \"x-op\":\n      return `Unsupported ${label} ${v} in <x ${info.op}>`;\n    default:\n      return `Unsupported ${label} ${v}`;\n  }\n}\nfunction badValueMessage(info) {\n  const v = JSON.stringify(info.value);\n  switch (info.role) {\n    case \"attr\":\n      return `Cannot parse value ${v} for attribute ':${info.attr}'`;\n    case \"directive\":\n      return `Cannot parse value ${v} for directive '@${info.directive}'`;\n    case \"if\":\n      return `Cannot parse condition ${v} for '@if.${info.attr}'`;\n    case \"x-op\":\n      return `Cannot parse value ${v} for <x ${info.op}>`;\n    case \"handler-name\":\n      return `Cannot parse handler name ${v}`;\n    case \"handler-arg\":\n      return `Cannot parse handler argument ${v}`;\n    case \"macro-var\":\n      return `Macro parameter '^${info.name}' is not defined`;\n    default:\n      return `Cannot parse value ${v}`;\n  }\n}\nfunction tagDisplay(tag) {\n  return tag ? String(tag).toLowerCase() : null;\n}\nfunction fmtTagSuffix(info) {\n  const t = tagDisplay(info?.tag);\n  return t && t !== \"x\" ? ` on <${t}>` : \"\";\n}\nfunction fmtOriginSuffix(info) {\n  if (!info) return \"\";\n  const parts = [];\n  if (info.originAttr) {\n    const branch = info.branch ? `[${info.branch}]` : \"\";\n    parts.push(`in ${info.originAttr}${branch}`);\n  }\n  if (info.handlerName) {\n    parts.push(\n      `handler '${info.handlerName}'${info.argIndex !== void 0 ? ` arg ${info.argIndex}` : \"\"}`\n    );\n  }\n  const t = tagDisplay(info.tag);\n  if (t && t !== \"x\") parts.push(`on <${t}>`);\n  return parts.length ? ` (${parts.join(\", \")})` : \"\";\n}\nfunction fmtEventSuffix(info) {\n  if (info?.originAttr) return ` in ${info.originAttr}`;\n  if (info?.eventName) return ` in @on.${info.eventName}`;\n  return \"\";\n}\nfunction lintIdToMessage(id, info) {\n  switch (id) {\n    case \"RENDER_IT_OUTSIDE_OF_LOOP\":\n      return \"<x render-it> used outside of a loop\";\n    case \"UNKNOWN_EVENT_MODIFIER\": {\n      const mods = info.handler?.modifiers ?? [info.modifier];\n      const written = `@on.${info.name}+${mods.join(\"+\")}`;\n      return `Unknown modifier '+${info.modifier}' in '${written}'`;\n    }\n    case \"HANDLER_NAME_COLLISION\":\n      return `${info.problem} — ${info.fix}`;\n    case \"RECEIVE_HANDLER_NOT_IMPLEMENTED\":\n      return `Receive handler '${info.name}' is not implemented${fmtEventSuffix(info)}`;\n    case \"EVENT_HANDLER_METHOD_NOT_ALLOWED\":\n      return `Event handler '$${info.name}' is a method reference — move it to receive and use '${info.name}'`;\n    case \"FIELD_METHOD_NAME_COLLISION\":\n      return `Field '${info.name}' shadows a method with the same name — rename either the field or method`;\n    case \"FIELD_VAL_NOT_DEFINED\":\n      return `Field '.${info.name}' is not defined${fmtOriginSuffix(info)}`;\n    case \"FIELD_VAL_IS_METHOD\":\n      return `'.${info.name}' reads a field, but '${info.name}' is defined as a method — use '$${info.name}'${fmtOriginSuffix(info)}`;\n    case \"METHOD_VAL_NOT_DEFINED\":\n      return `Method '$${info.name}' is not defined${fmtOriginSuffix(info)}`;\n    case \"METHOD_VAL_IS_FIELD\":\n      return `'$${info.name}' calls a method, but '${info.name}' is defined as a field — use '.${info.name}'${fmtOriginSuffix(info)}`;\n    case \"DUPLICATE_ATTR_DEFINITION\": {\n      const sources = info.sources?.length ? ` (${info.sources.join(\", \")})` : \"\";\n      const tag = info.tag ? ` on <${String(info.tag).toLowerCase()}>` : \"\";\n      return `Attribute '${info.name}' is set ${info.sources?.length ?? \"multiple\"} times${sources}${tag}`;\n    }\n    case \"IF_NO_BRANCH_SET\":\n      return `'@if.${info.attr}' has no '@then' or '@else' branch — add '@then=\"…\"' or '@else=\"…\"' (or both)${fmtTagSuffix(info)}`;\n    case \"UNKNOWN_COMPONENT_NAME\":\n      return `Unknown component '${info.name}'${fmtOriginSuffix(info)}`;\n    case \"ALT_HANDLER_NOT_DEFINED\":\n      return `Alter handler '${info.name}' is not defined${fmtOriginSuffix(info)}`;\n    case \"ALT_HANDLER_NOT_REFERENCED\":\n      return `Alter handler '${info.name}' is defined but never used — remove it or reference it from @when, @enrich-with, or @loop-with`;\n    case \"DYN_VAL_NOT_DEFINED\":\n      return `Dynamic binding '*${info.name}' is not defined${fmtOriginSuffix(info)}`;\n    case \"DYN_ALIAS_NOT_REFERENCED\":\n      return `Lookup '${info.name}' is defined but never used — remove it or reference it as '*${info.name}' in a view`;\n    case \"PROVIDE_NOT_ADDRESSABLE\":\n      return `Provide '${info.name}' value '${info.value}' must be a field ('.f') or seq-access ('.s[.k]') — a provide doubles as the path '<x render=\"*${info.name}\">' resumes at, so this one is dropped and '*${info.name}' resolves to nothing`;\n    case \"LOOKUP_BAD_SHAPE\":\n      return `Lookup '${info.name}' has an invalid shape: ${info.problem}`;\n    case \"LOOKUP_NO_PROVIDER\":\n      return info.hasDefault ? `Lookup '${info.name}' is provided by no component in scope and matches no registered path, so it always resolves to its default` : `Lookup '${info.name}' is provided by no component in scope and matches no registered path — add a 'provide' for it, register a path under that name, or give this lookup a default`;\n    case \"PROVIDE_TYPE_BAD_SHAPE\":\n      return `Provide '${info.name}' starts uppercase, so it publishes a component type — its value must be 'self', not '${info.value}'`;\n    case \"UNKNOWN_MACRO_ARG\":\n      return `Argument '${info.name}' is not declared in macro '${info.macroName}'`;\n    case \"UNKNOWN_DIRECTIVE\":\n      return `Unknown directive '@${info.name}=${JSON.stringify(info.value)}'${fmtTagSuffix(info)}`;\n    case \"ORPHAN_DIRECTIVE\":\n      return `'@${info.name}=${JSON.stringify(info.value)}' needs an '@${info.needs}' on the same element — it was ignored${fmtTagSuffix(info)}`;\n    case \"UNKNOWN_X_OP\":\n      return `Unknown <x> op '${info.name}=${JSON.stringify(info.value)}'${fmtTagSuffix(info)}`;\n    case \"UNKNOWN_X_ATTR\":\n      return `Unknown attribute '${info.name}=${JSON.stringify(info.value)}' on <x ${info.op}>${fmtTagSuffix(info)}`;\n    case \"X_OP_IGNORES_CHILDREN\":\n      return `<x ${info.op}> has child content, but the '${info.op}' op ignores its children — they are silently dropped when the template is parsed; remove them${fmtTagSuffix(info)}`;\n    case \"MAYBE_DROP_AT_PREFIX\": {\n      const written = info.value !== void 0 ? `${info.name}=${JSON.stringify(info.value)}` : info.name;\n      return `'${written}' on <x> looks like a directive but is actually an x op/attr written with a leading '@'`;\n    }\n    case \"MAYBE_ADD_AT_PREFIX\":\n      return `'${info.name}' on <${(info.tag ?? \"\").toLowerCase()}> is a plain attribute, but '@${info.name}' is a directive — add the leading '@'`;\n    case \"BAD_VALUE\":\n      return `${badValueMessage(info)}${fmtTagSuffix(info)}`;\n    case \"UNSUPPORTED_EXPR_SYNTAX\":\n      return `${unsupportedExprMessage(info)}${fmtTagSuffix(info)}`;\n    case \"BINDING_MEMBER_TOO_DEEP\":\n      return `Binding member read ${JSON.stringify(info.value)} goes more than one level deep — only one member is allowed (like '@value.title')${fmtTagSuffix(info)}`;\n    case \"SUGGEST_BINDING_MEMBER\": {\n      const reads = (info.members ?? []).map(({ member }) => `'@value.${member}'`).join(\", \");\n      return `Enrich handler '${info.name}' only copies members of the loop value — read them directly${reads ? ` (${reads})` : \"\"} and remove the '@enrich-with'`;\n    }\n    case \"REDUNDANT_TEMPLATE_STRING\":\n      return `Redundant string template — '{${info.simpler}}' should be just '${info.simpler}'${fmtOriginSuffix(info)}`;\n    case \"PLACEHOLDERLESS_TEMPLATE_STRING\":\n      return `String template has no dynamic parts — use the string literal ${info.literal} instead${fmtOriginSuffix(info)}`;\n    case \"CONSTANT_CONDITION\":\n      return `Condition is the constant literal ${info.literal} — it never changes; reference a field ('.name') or a method ('$name') instead${fmtOriginSuffix(info)}`;\n    case \"UNKNOWN_COMPONENT_SPEC_KEY\":\n      return `Unknown component spec key '${info.key}' — value will be ignored at runtime`;\n    case \"COMP_FIELD_BAD_SHAPE\":\n      return info.kind === \"args-not-object\" ? `Field '${info.fieldName}': in { component, args }, 'args' must be a plain object, got ${info.got}` : `Field '${info.fieldName}': in { component, args }, 'component' must be the component name as a string, got ${info.gotName ? `the ${info.gotName} class` : info.got}`;\n    case \"HTML_TAG_NAME_HAS_UPPERCASE\":\n      return `Tag <${info.raw}> will be lowercased to <${info.lowercased}>${fmtLocationSuffix(info)}`;\n    case \"HTML_SVG_TAG_WILL_LOWERCASE\":\n      return `SVG tag <${info.raw}> is not in the WHATWG case-correction list — will be lowercased to <${info.lowercased}>${fmtLocationSuffix(info)}`;\n    case \"HTML_TAG_NOT_ALLOWED_IN_PARENT\":\n      return `<${info.tag}> not allowed under <${info.parent ?? \"?\"}> in ${info.mode} — ${htmlActionPhrase(info.action, info.tag, info.parent)}${fmtLocationSuffix(info)}`;\n    case \"HTML_TEXT_NOT_ALLOWED_IN_PARENT\":\n      return `Non-whitespace text not allowed in ${info.mode}: ${JSON.stringify(info.snippet)}${fmtLocationSuffix(info)}`;\n    case \"HTML_VOID_ELEMENT_HAS_CLOSE_TAG\":\n      return `Void element <${info.tag}> has an explicit close tag${fmtLocationSuffix(info)}`;\n    case \"HTML_DUPLICATE_FORM\":\n      return `Nested <form> — the inner form will be dropped by the parser${fmtLocationSuffix(info)}`;\n    case \"HTML_NESTED_INTERACTIVE\":\n      return `<${info.tag}> nested inside another <${info.tag}> — adoption agency will reorder${fmtLocationSuffix(info)}`;\n    case \"HTML_MISNESTED_FORMATTING\":\n      return `Misnested formatting tag </${info.tag}> — adoption agency will reorder nodes${fmtLocationSuffix(info)}`;\n    case \"HTML_UNEXPECTED_END_TAG\":\n      return `Unexpected end tag </${info.tag}>${fmtLocationSuffix(info)}`;\n    case \"HTML_UNCLOSED_BEFORE_END\":\n      return `<${info.unclosed}> still open when </${info.tag}> was seen — implicitly closed${fmtLocationSuffix(info)}`;\n    case \"HTML_DUPLICATE_ATTRIBUTE\":\n      return `Duplicate attribute '${info.name}' — second occurrence dropped${fmtLocationSuffix(info)}`;\n    case \"HTML_ATTRIBUTES_ON_END_TAG\":\n      return `Attributes on end tag </${info.tag}> — dropped by the parser${fmtLocationSuffix(info)}`;\n    case \"HTML_SELF_CLOSING_END_TAG\":\n      return `Self-closing end tag </${info.tag}/> — trailing '/' is meaningless${fmtLocationSuffix(info)}`;\n    case \"HTML_MISSING_ATTRIBUTE_VALUE\":\n      return `Attribute '${info.name}' is missing a value${fmtLocationSuffix(info)}`;\n    case \"HTML_CDATA_IN_HTML_NAMESPACE\":\n      return `CDATA section in HTML namespace — reinterpreted as a bogus comment${fmtLocationSuffix(info)}`;\n    case \"HTML_BOGUS_COMMENT\":\n      return `Bogus comment — content dropped by the parser${fmtLocationSuffix(info)}`;\n    case \"HTML_SVG_ATTR_WILL_LOWERCASE\":\n      return `SVG attribute '${info.raw}' will be rewritten to '${info.canonical}'${fmtLocationSuffix(info)}`;\n    case \"HTML_MATHML_ATTR_WILL_LOWERCASE\":\n      return `MathML attribute '${info.raw}' will be rewritten to '${info.canonical}'${fmtLocationSuffix(info)}`;\n    case \"ASYNC_HANDLER\":\n      return `Handler '${info.name}' in '${info.channel}' is an async function — handlers must be synchronous and return the updated state (an async function returns a Promise the framework won't await)`;\n    case \"TOP_LEVEL_AT_RULE_IN_SCOPED_STYLE\":\n      return `'@${info.atRule}' is a top-level-only at-rule, but '${info.key}' is wrapped in a component-scoped selector ([data-cid=…]{…}) where it is invalid and silently dropped — move it to 'globalStyle'${fmtLocationSuffix(info)}`;\n    case \"GLOBAL_SELECTOR_IN_SCOPED_STYLE\":\n      return `Selector '${info.selector}' targets the document root, but '${info.key}' is wrapped in a component-scoped selector, so it becomes a descendant selector that never matches — move it to 'globalStyle'${fmtLocationSuffix(info)}`;\n    case \"LINT_ERROR\":\n      return info.message;\n    default:\n      return id;\n  }\n}\nfunction suggestionToMessage(suggestion) {\n  if (!suggestion) return null;\n  switch (suggestion.kind) {\n    case \"replace-name\":\n      return `did you mean '${suggestion.to}'?`;\n    case \"drop-prefix\":\n      return `did you mean '${suggestion.to}'? (drop the leading '${suggestion.from.slice(0, suggestion.from.length - suggestion.to.length)}')`;\n    case \"add-prefix\":\n      return `did you mean '${suggestion.to}'? (add the leading '${suggestion.to.slice(0, suggestion.to.length - suggestion.from.length)}')`;\n    case \"remove\":\n      return `remove ${suggestion.what}`;\n    case \"rewrite\":\n      return `use '${suggestion.to}' instead of '${suggestion.from}'`;\n    case \"wrap\":\n      return `wrap it in ${suggestion.to}`;\n    case \"rephrase\":\n      return suggestion.text ?? null;\n    default:\n      return null;\n  }\n}\nfunction fmtLocationSuffix(info) {\n  const loc = info?.location;\n  if (!loc) return \"\";\n  return ` at line ${loc.line}, col ${loc.column}`;\n}\nfunction htmlActionPhrase(action, tag, parent) {\n  switch (action) {\n    case \"ignored\":\n      return `the parser will drop this <${tag}>`;\n    case \"drop\":\n      return `the parser will drop this <${tag}>`;\n    case \"auto-close-implicit\":\n      return `the parser will close <${parent ?? \"?\"}> first, then place <${tag}> as a sibling`;\n    case \"foster-parent\":\n      return `the parser will move <${tag}> outside <${parent ?? \"?\"}> (foster-parenting)`;\n    case \"foreign-breakout\":\n      return `the parser will exit foreign content and re-process <${tag}> in HTML mode`;\n    default:\n      return `parser action: ${action}`;\n  }\n}\n\n// src/app.js\nvar _evs = \"dragstart dragover dragend touchstart touchmove touchend touchcancel\".split(\" \");\nvar App = class {\n  constructor(rootNode, comps, renderer, ParseContext2) {\n    this.rootNode = rootNode;\n    this.comps = comps;\n    this.compStack = new ComponentStack(comps);\n    this.transactor = new Transactor(comps, null);\n    this.ParseContext = ParseContext2;\n    this.renderer = renderer;\n    this._transactNextBatchId = this._evictCacheId = null;\n    this._eventNames = new Set(_evs);\n    this.dragInfo = this.curDragOver = null;\n    this._touch = null;\n    this.transactor.onTransactionPushed = (_transaction) => {\n      if (this._transactNextBatchId === null) this._scheduleNextTransactionBatchExecution();\n    };\n    this._compiled = false;\n    this._renderOpts = { document: rootNode.ownerDocument };\n    this._renderState = null;\n    this.rootViewName = null;\n  }\n  get state() {\n    return this.transactor.state;\n  }\n  handleEvent(e) {\n    const { type: type3 } = e;\n    if (type3[0] === \"t\" && type3.startsWith(\"touch\")) {\n      this._handleTouchEvent(e);\n      return;\n    }\n    this._dispatchEvent(e);\n  }\n  _dispatchEvent(e) {\n    const { type: type3 } = e;\n    const isDrag = type3 === \"dragover\" || type3 === \"dragstart\" || type3 === \"dragend\" || type3 === \"drop\";\n    const { rootNode, comps, transactor } = this;\n    const [path2, handlers] = DispatchPath.fromNodeAndEventName(\n      e.target,\n      type3,\n      rootNode,\n      comps,\n      !isDrag\n    );\n    if (isDrag) this._handleDragEvent(e, type3, path2);\n    if (path2 !== null && handlers !== null)\n      for (const handler of handlers) transactor.transactInputNow(path2, e, handler, this.dragInfo);\n  }\n  _handleTouchEvent(e) {\n    const { type: type3 } = e;\n    if (type3 === \"touchstart\") {\n      if (this._touch !== null || e.touches.length !== 1) return;\n      const t = e.touches[0];\n      const draggable = t.target?.closest?.('[draggable=\"true\"]');\n      if (!draggable) return;\n      this._touch = makeTouchInfo(t.identifier, t.clientX, t.clientY, draggable, false);\n      return;\n    }\n    if (this._touch === null) return;\n    const touch = findTouch(e, this._touch.id);\n    if (touch === null) return;\n    const { rootNode, _touch } = this;\n    const { clientX, clientY } = touch;\n    const fire = (type4, target) => {\n      const e2 = { type: type4, target, clientX, clientY, preventDefault: NOOP };\n      this._dispatchEvent(e2);\n    };\n    if (type3 === \"touchmove\") {\n      if (!_touch.active) {\n        const dx = clientX - _touch.startX;\n        const dy = clientY - _touch.startY;\n        if (dx * dx + dy * dy < 100) return;\n        _touch.active = true;\n        e.preventDefault();\n        fire(\"dragstart\", _touch.target);\n      } else {\n        e.preventDefault();\n        fire(\"dragover\", hitTest(rootNode, clientX, clientY));\n      }\n      return;\n    }\n    if (type3 === \"touchend\" || type3 === \"touchcancel\") {\n      if (_touch.active) {\n        if (type3 === \"touchend\") fire(\"drop\", hitTest(rootNode, clientX, clientY));\n        fire(\"dragend\", _touch.target);\n      }\n      this._touch = null;\n    }\n  }\n  _handleDragEvent(e, type3, path2) {\n    if (type3 === \"dragover\") {\n      const dropTarget = getClosestDropTarget(e.target, this.rootNode, Infinity);\n      if (dropTarget !== null) {\n        e.preventDefault();\n        this._cleanDragOverAttrs();\n        this.curDragOver = dropTarget;\n        dropTarget.dataset.draggingover = this.dragInfo?.type ?? \"_external\";\n      }\n    } else if (type3 === \"dragstart\") {\n      e.target.dataset.dragging = 1;\n      const rootValue = this.state.val;\n      const txnPath = path2.compact().toTransactionPath();\n      const value = txnPath.lookup(rootValue);\n      const dragType = e.target.dataset.dragtype ?? \"?\";\n      const stack = path2.buildStack(this.makeStack(rootValue));\n      this.dragInfo = new DragInfo(stack, value, dragType, e.target);\n    } else if (type3 === \"drop\") {\n      e.preventDefault();\n      this._cleanDragOverAttrs();\n    } else {\n      if (this.dragInfo !== null) {\n        delete this.dragInfo.node.dataset.dragging;\n        this.dragInfo = null;\n      }\n      this._cleanDragOverAttrs();\n    }\n  }\n  makeStack(rootValue) {\n    return Stack.root(this.comps, rootValue);\n  }\n  _cleanDragOverAttrs() {\n    if (this.curDragOver !== null) {\n      delete this.curDragOver.dataset.draggingover;\n      this.curDragOver = null;\n    }\n  }\n  render() {\n    const root = this.state.val;\n    const stack = this.makeStack(root);\n    const { renderer, rootNode, _renderOpts, _renderState } = this;\n    const newState = render(\n      renderer.renderRoot(stack, root, this.rootViewName),\n      rootNode,\n      _renderOpts,\n      _renderState\n    );\n    this._renderState = newState;\n    return newState.dom;\n  }\n  onChange(callback) {\n    this.transactor.state.onChange(callback);\n  }\n  // Subscribe to a normalized record for every handler invocation. Returns an\n  // unsubscribe function. See Transactor.observe.\n  observe(callback) {\n    return this.transactor.observe(callback);\n  }\n  compile() {\n    for (const Comp of this.comps.byId.values()) {\n      Comp.compile(this.ParseContext);\n      for (const key in Comp.views)\n        for (const name of Comp.views[key].ctx.genEventNames()) this._eventNames.add(name);\n    }\n    this._compiled = true;\n  }\n  subscribeToEvents(eventNames) {\n    for (const name of eventNames) this.rootNode.addEventListener(name, this, listenerOpts(name));\n  }\n  recompileStyles(opts) {\n    injectCss(\"tutuca-app\", this.comps.compileStyles(), opts?.head ?? document.head);\n  }\n  start(opts) {\n    if (!this._compiled) this.compile();\n    this.subscribeToEvents(this._eventNames);\n    this.onChange((info) => {\n      if (info.val !== info.old) this.render();\n    });\n    this.recompileStyles(opts);\n    if (opts?.noCache) this.renderer.setNullCache();\n    else this.startCacheEvictionInterval();\n    this.render();\n  }\n  stop() {\n    this.stopCacheEvictionInterval();\n    clearTimeout(this._transactNextBatchId);\n    this._transactNextBatchId = null;\n    for (const name of this._eventNames)\n      this.rootNode.removeEventListener(name, this, listenerOpts(name));\n  }\n  sendAtRoot(name, args) {\n    this.transactor.pushSend(new DispatchPath(), name, args);\n  }\n  registerComponents(comps, opts) {\n    const scope = this.compStack.enter();\n    scope.registerComponents(comps, opts);\n    return scope;\n  }\n  _transactNextBatch(maxRunTimeMs = 10) {\n    this._transactNextBatchId = null;\n    const startTs = Date.now();\n    const t = this.transactor;\n    while (t.hasPendingTransactions && Date.now() - startTs < maxRunTimeMs) t.transactNext();\n    if (t.hasPendingTransactions) this._scheduleNextTransactionBatchExecution();\n  }\n  _scheduleNextTransactionBatchExecution() {\n    this._transactNextBatchId = setTimeout(() => this._transactNextBatch(), 0);\n  }\n  startCacheEvictionInterval(intervalMs = 3e4) {\n    this._evictCacheId = setInterval(() => this.renderer.cache.evict(), intervalMs);\n  }\n  stopCacheEvictionInterval() {\n    clearInterval(this._evictCacheId);\n    this._evictCacheId = null;\n  }\n};\nfunction injectCss(nodeId, style, styleTarget = document.head) {\n  const styleNode = document.createElement(\"style\");\n  const currentNodeWithId = styleTarget.querySelector(`#${nodeId}`);\n  if (currentNodeWithId) styleTarget.removeChild(currentNodeWithId);\n  styleNode.id = nodeId;\n  styleNode.innerHTML = style;\n  styleTarget.appendChild(styleNode);\n}\nvar NOOP = () => {\n};\nfunction findTouch(e, id) {\n  for (const t of e.changedTouches) if (t.identifier === id) return t;\n  for (const t of e.touches) if (t.identifier === id) return t;\n  return null;\n}\nvar listenerOpts = (name) => name === \"touchmove\" ? { passive: false } : void 0;\nfunction makeTouchInfo(id, startX, startY, target, active) {\n  return { id, startX, startY, target, active };\n}\nfunction hitTest(rootNode, x, y) {\n  const root = rootNode.getRootNode();\n  let el = root.elementFromPoint?.(x, y) ?? null;\n  while (el?.shadowRoot) {\n    const next = el.shadowRoot.elementFromPoint(x, y);\n    if (next === null || next === el) break;\n    el = next;\n  }\n  return el ?? rootNode;\n}\nfunction getClosestDropTarget(target, rootNode, count) {\n  let node = target;\n  while (count-- > 0 && node !== rootNode) {\n    if (node.dataset?.droptarget !== void 0) return node;\n    node = node.parentNode;\n  }\n  return null;\n}\nvar DragInfo = class {\n  constructor(stack, val, type3, node) {\n    this.stack = stack;\n    this.val = val;\n    this.type = type3;\n    this.node = node;\n  }\n  lookupBind(name) {\n    return this.stack.lookupBind(name);\n  }\n};\n\n// src/cache.js\nvar isWeakKey = (k) => k !== null && (typeof k === \"object\" || typeof k === \"function\");\nvar NullDomCache = class {\n  get(_keys, _cacheKey) {\n  }\n  set(_keys, _cacheKey, _v) {\n  }\n  evict() {\n  }\n};\nvar WeakMapDomCache = class {\n  constructor() {\n    this.keysByLen = /* @__PURE__ */ new Map();\n  }\n  get(keys, cacheKey) {\n    const len = keys.length;\n    let cur = this.keysByLen.get(len);\n    if (!cur) return void 0;\n    for (let i = 0; i < len - 1; i++) {\n      cur = cur.get(keys[i]);\n      if (!cur) return void 0;\n    }\n    return cur.get(keys[len - 1])?.[cacheKey];\n  }\n  set(keys, cacheKey, v) {\n    const len = keys.length;\n    let cur = this.keysByLen.get(len);\n    if (!cur) {\n      cur = /* @__PURE__ */ new WeakMap();\n      this.keysByLen.set(len, cur);\n    }\n    for (let i = 0; i < len - 1; i++) {\n      const key = keys[i];\n      let next = cur.get(key);\n      if (!next) {\n        if (!isWeakKey(key)) return;\n        next = /* @__PURE__ */ new WeakMap();\n        cur.set(key, next);\n      }\n      cur = next;\n    }\n    const lastKey = keys[len - 1];\n    const leaf = cur.get(lastKey);\n    if (leaf) leaf[cacheKey] = v;\n    else if (isWeakKey(lastKey)) cur.set(lastKey, { [cacheKey]: v });\n  }\n  evict() {\n    this.keysByLen = /* @__PURE__ */ new Map();\n  }\n};\n\n// src/renderer.js\nfunction stampRenderBase(vdom, text) {\n  if (vdom instanceof VNode)\n    return new VNode(\n      vdom.tag,\n      { ...vdom.attrs, \"data-rp\": text },\n      vdom.childs,\n      vdom.key,\n      vdom.namespace\n    );\n  if (vdom instanceof VFragment)\n    return new VFragment(vdom.childs.map((c) => stampRenderBase(c, text)));\n  return vdom;\n}\nvar Renderer = class {\n  constructor(comps) {\n    this.comps = comps;\n    this.cache = new WeakMapDomCache();\n  }\n  // Parse nodes build their VDOM through the renderer, never by importing vdom.js\n  // themselves: a component may have been compiled by ANOTHER copy of the library\n  // (a docs example imports the dist bundle while the host app runs from src), and\n  // `render()` recognizes VNodes by `instanceof` against ITS copy's classes. Going\n  // through `rx` guarantees the rendering copy makes them.\n  renderTag(tag, attrs, childs, namespace) {\n    return h(tag, attrs, childs, namespace);\n  }\n  renderFragment(childs) {\n    return new VFragment(childs);\n  }\n  renderComment(text) {\n    return new VComment(text);\n  }\n  setNullCache() {\n    this.cache = new NullDomCache();\n  }\n  renderRoot(stack, val, viewName = null) {\n    const comp = this.comps.getCompFor(val);\n    if (comp === null) return null;\n    return this._rValComp(stack, val, comp, comp.getView(viewName).anode, \"ROOT\", viewName);\n  }\n  // Render `stack.it` at a `<x render*>` site (`node`). `base` is the absolute\n  // path the site resumed at, when it rendered a `*name` (see _rValComp).\n  renderIt(stack, node, viewName, base = null) {\n    const comp = this.comps.getCompFor(stack.it);\n    return comp ? this._rValComp(stack, stack.it, comp, node, \"\", viewName, base) : null;\n  }\n  // `node` is the parse node of the render site (`<x render>` / `render-it` /\n  // `render-each`, or the view's root anode for the app root). It keys the\n  // cache as a globally-unique object: node ids alone are unique only within a\n  // single view, so the same value rendered by two components (e.g. through a\n  // shared dynamic-var sequence) would otherwise collide in the cache.\n  _rValComp(stack, val, comp, node, key, viewName, base = null) {\n    const cacheKey = `${viewName ?? \"\"}\u001f${stack.viewsId ?? \"\"}\u001f${key}\u001f${stack.renderPath.addressKey}`;\n    const cachePath = [node, val];\n    stack._pushDynBindValuesToArray(cachePath, comp);\n    const cachedNode = this.cache.get(cachePath, cacheKey);\n    if (cachedNode) return cachedNode;\n    const view = viewName ? comp.getView(viewName) : stack.lookupBestView(comp.views, \"main\");\n    const body = this.renderView(view, stack);\n    if (body == null) return null;\n    const baseJson = base === null ? null : pathToJson(base);\n    const meta = this._renderMetadata({\n      $: \"Comp\",\n      nid: node?.nodeId ?? null,\n      cid: comp.id,\n      vid: view.name,\n      ...baseJson === null ? null : { base: baseJson }\n    });\n    const dom = new VFragment([\n      meta,\n      baseJson === null ? body : stampRenderBase(body, JSON.stringify(baseJson))\n    ]);\n    this.cache.set(cachePath, cacheKey, dom);\n    return dom;\n  }\n  pushEachEntry(r, nid, attrName, key, dom) {\n    r.push(this._renderMetadata({ $: \"Each\", nid, [attrName]: key }), dom);\n  }\n  renderEachWhen(stack, each2) {\n    const { val: seqVal, node: view, nodeId: nid } = each2;\n    const { seq, filter, loopWith, enricher } = each2.evalIter(stack);\n    const seqPath = seqVal instanceof DynVal ? stack.lookupDynamicLocated(seqVal.name)?.path ?? null : null;\n    const r = [];\n    const it = stack.it;\n    const renderOne = (key, value, attrName, binds) => {\n      const itemBase = seqPath === null ? null : keyedPath(seqPath, key);\n      const itemStep = itemBase === null ? each2.itemStep(key) : null;\n      const itemPath = itemBase !== null ? stack.renderPath.pushFrame(itemBase) : itemStep !== null ? stack.renderPath.pushItem(itemStep) : stack.renderPath;\n      const cachePath = enricher ? [view, it, value] : [view, value];\n      const cacheKey = `${stack.viewsId ?? \"\"}\u001f${nid}\u001f${key}\u001f${itemPath.addressKey}`;\n      const cachedNode = this.cache.get(cachePath, cacheKey);\n      if (cachedNode) this.pushEachEntry(r, nid, attrName, key, cachedNode);\n      else {\n        const dom = this.renderView(\n          view,\n          stack.enter(value, binds, false, itemPath, itemBase !== null)\n        );\n        if (dom != null) this.pushEachEntry(r, nid, attrName, key, dom);\n        this.cache.set(cachePath, cacheKey, dom);\n      }\n    };\n    walkLoopBindings(\n      { seq, it, filter, loopWith, enricher, ctx: makeLoopCtx(stack, filter) },\n      renderOne\n    );\n    return r;\n  }\n  renderView(view, stack) {\n    let n = stack.binds[1];\n    while (n !== null) {\n      const b = n[0];\n      if (b.isFrame) {\n        if (stack.it !== b.it) break;\n        console.error(\"recursion detected\", stack.it, b.it);\n        return new VComment(\"RECURSION AVOIDED\");\n      }\n      n = n[1];\n    }\n    return view.render(stack, this);\n  }\n  _renderMetadata(info) {\n    return new VComment(`§${JSON.stringify(info)}§`);\n  }\n  // Prefix a loop-less @enrich-with subtree with a boundary meta so event-path\n  // reconstruction replays its binds (mirrors the §Each§ / §Comp§ metas).\n  renderScopeMeta(nid, dom) {\n    return new VFragment([this._renderMetadata({ $: \"Scope\", nid }), dom]);\n  }\n};\n\n// index.js\nvar css = String.raw;\nvar html = String.raw;\nvar macro = (defaults, rawView) => new Macro(defaults, rawView);\nfunction tutuca(nodeOrSelector) {\n  const rootNode = typeof nodeOrSelector === \"string\" ? document.querySelector(nodeOrSelector) : nodeOrSelector;\n  const comps = new Components();\n  const renderer = new Renderer(comps);\n  return new App(rootNode, comps, renderer, ParseContext);\n}\n\n// extra.js\nasync function compileClassesToStyle(app, compileClasses, styleId = \"margaui-css\") {\n  const t1 = performance.now();\n  const css2 = await compileClassesToStyleText(app, compileClasses);\n  const t2 = performance.now();\n  injectCss(styleId, css2);\n  return t2 - t1;\n}\nasync function compileClassesToStyleText(app, compileClasses, Ctx = ParseCtxClassSetCollector) {\n  app.ParseContext = Ctx;\n  app.compile();\n  return await compileClasses(Array.from(collectAppClassesInSet(app)));\n}\n\n// src/util/testing.js\nfunction resolveAlter(Comp, name) {\n  if (name == null) return null;\n  const fn = Comp.alter?.[name];\n  if (typeof fn !== \"function\") {\n    throw new Error(`alter handler '${name}' not found on component '${Comp.name}'`);\n  }\n  return fn;\n}\nfunction collectIterBindings(Comp, compInstance, seq, opts = {}) {\n  const whenFn = resolveAlter(Comp, opts.when) ?? filterAlwaysTrue;\n  const loopWithFn = resolveAlter(Comp, opts.loopWith) ?? nullLoopWith;\n  const enrichFn = resolveAlter(Comp, opts.enrichWith);\n  const scopeEnrichFn = resolveAlter(Comp, opts.scopeEnrich);\n  const it = compInstance;\n  const scope = scopeEnrichFn ? scopeEnrichFn.call(it) ?? {} : opts.scope ?? {};\n  const ctx = {\n    lookup: (name) => scope[name],\n    filter: (key, value, iterData) => whenFn.call(it, key, value, iterData)\n  };\n  const out = [];\n  walkLoopBindings(\n    { seq, it, filter: whenFn, loopWith: loopWithFn, enricher: enrichFn, ctx },\n    (_key, _value, _attrName, binds) => out.push(binds)\n  );\n  return out;\n}\n\n// tools/core/docs.js\nfunction getSignature(name, fn) {\n  const s = fn.toString();\n  const m = s.match(/^(?:\\w+|function\\s*\\w*)\\s*\\(([^)]*)\\)/);\n  const params = m ? m[1].trim() : \"\";\n  return `${name}(${params})`;\n}\nfunction serializeDefault(v) {\n  if (v === null || v === void 0) return v;\n  if (v instanceof Map) return Object.fromEntries(v);\n  if (v instanceof Set) return [...v];\n  return v;\n}\nfunction getComponentDoc(comp) {\n  const { fields, name, methods } = comp;\n  const userMethods = Object.keys(methods).map((k) => ({\n    name: k,\n    sig: getSignature(k, methods[k])\n  }));\n  const sigs = (bucket) => Object.keys(bucket ?? {}).map((k) => ({ name: k, sig: getSignature(k, bucket[k]) }));\n  const receiveHandlers = sigs(comp.receive);\n  const intentHandlers = sigs(comp.intent);\n  const fieldDocs = [];\n  for (const fieldName in fields) {\n    const field = fields[fieldName];\n    fieldDocs.push({\n      name: fieldName,\n      type: field.type,\n      default: serializeDefault(field.defaultValue),\n      methods: []\n    });\n  }\n  return {\n    name,\n    methods: userMethods,\n    receive: receiveHandlers,\n    intent: intentHandlers,\n    fields: fieldDocs\n  };\n}\nfunction docComponents(normalized, { name = null } = {}) {\n  const comps = normalized.components;\n  const picked = name === null ? comps : comps.filter((c) => c.name === name);\n  return new ComponentDocs({ items: picked.map((comp) => getComponentDoc(comp)) });\n}\n\n// dev.js\nasync function test2(opts = {}) {\n  const report = await runTests({ expect, ...opts });\n  reportTestReportToConsole(report);\n  return report;\n}\nfunction shadowCheckComponent(Comp) {\n  const shadowViews = {};\n  for (const name in Comp.views) {\n    const rawView = Comp.views[name].rawView;\n    const ctx = new LintParseContext();\n    ANode.parse(rawView, ctx);\n    ctx.compile(Comp.scope);\n    shadowViews[name] = { name, ctx, rawView };\n  }\n  const shadowComp = Object.create(Comp);\n  shadowComp.views = shadowViews;\n  return checkComponent(shadowComp).reports;\n}\nfunction check(app) {\n  const counts = { error: 0, warn: 0, hint: 0 };\n  for (const Comp of app.comps.byId.values()) {\n    const reports = shadowCheckComponent(Comp);\n    if (reports.length === 0) continue;\n    console.group(Comp.name);\n    for (const r of reports) {\n      counts[r.level]++;\n      const tail = suggestionToMessage(r.suggestion);\n      const suffix = tail ? ` — ${tail}` : \"\";\n      const line = `[${r.level}] ${lintIdToMessage(r.id, r.info)}${suffix}`;\n      if (r.level === \"error\") console.error(line);\n      else if (r.level === \"warn\") console.warn(line);\n      else console.log(line);\n    }\n    console.groupEnd();\n  }\n  const total = counts.error + counts.warn + counts.hint;\n  console.log(\n    total === 0 ? \"check: no issues\" : `check: ${counts.error} error, ${counts.warn} warn, ${counts.hint} hint`\n  );\n  return counts;\n}\nexport {\n  ALT_HANDLER_NOT_DEFINED,\n  ALT_HANDLER_NOT_REFERENCED,\n  ASYNC_HANDLER,\n  BAD_VALUE,\n  BINDING_MEMBER_TOO_DEEP,\n  COMPONENT,\n  COMP_FIELD_BAD_SHAPE,\n  CONSTANT_CONDITION,\n  ComponentDocs,\n  ComponentList,\n  ComponentSummary,\n  DUPLICATE_ATTR_DEFINITION,\n  DYN_ALIAS_NOT_REFERENCED,\n  DYN_VAL_NOT_DEFINED,\n  Describe,\n  DescribeResult,\n  EVENT_HANDLER_METHOD_NOT_ALLOWED,\n  ExampleIndex,\n  FIELD_METHOD_NAME_COLLISION,\n  FIELD_VAL_IS_METHOD,\n  FIELD_VAL_NOT_DEFINED,\n  GLOBAL_SELECTOR_IN_SCOPED_STYLE,\n  HANDLER_NAME_COLLISION,\n  IF_NO_BRANCH_SET,\n  LOOKUP_BAD_SHAPE,\n  LOOKUP_NO_PROVIDER,\n  LintComponentResult,\n  LintContext,\n  LintFinding,\n  LintParseContext,\n  LintReport,\n  MAYBE_ADD_AT_PREFIX,\n  MAYBE_DROP_AT_PREFIX,\n  METHOD_VAL_IS_FIELD,\n  METHOD_VAL_NOT_DEFINED,\n  ModuleInfo,\n  ModuleTestReport,\n  ModuleTests,\n  ORPHAN_DIRECTIVE,\n  PASS,\n  PLACEHOLDERLESS_TEMPLATE_STRING,\n  PROVIDE_NOT_ADDRESSABLE,\n  PROVIDE_TYPE_BAD_SHAPE,\n  ParseContext,\n  RECEIVE_HANDLER_NOT_IMPLEMENTED,\n  REDUNDANT_TEMPLATE_STRING,\n  RENDER_IT_OUTSIDE_OF_LOOP,\n  RenderBatch,\n  RenderedExample,\n  RenderedSection,\n  SEQ_INFO,\n  SUGGEST_BINDING_MEMBER,\n  TOP_LEVEL_AT_RULE_IN_SCOPED_STYLE,\n  Test,\n  TestReport,\n  TestResult,\n  UNKNOWN_COMPONENT_NAME,\n  UNKNOWN_COMPONENT_SPEC_KEY,\n  UNKNOWN_DIRECTIVE,\n  UNKNOWN_EVENT_MODIFIER,\n  UNKNOWN_MACRO_ARG,\n  UNKNOWN_X_ATTR,\n  UNKNOWN_X_OP,\n  UNSUPPORTED_EXPR_SYNTAX,\n  X_OP_IGNORES_CHILDREN,\n  check,\n  checkComponent,\n  collectIterBindings,\n  compileClassesToStyle,\n  compileClassesToStyleText,\n  component,\n  css,\n  dispatchPhase,\n  docComponents,\n  drive,\n  expect,\n  html,\n  injectCss,\n  lintIdToMessage,\n  macro,\n  makeCollector,\n  path,\n  phaseOps,\n  reportTestReportToConsole,\n  resolveArgs,\n  rootDispatcher,\n  runTests,\n  shadowCheckComponent,\n  suggestionToMessage,\n  test2 as test,\n  tutuca\n};\n"]}