@libresign/pdf-elements 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -1
- package/dist/components/DraggableElement.vue.d.ts +240 -0
- package/dist/components/PDFElements.vue.d.ts +552 -0
- package/dist/components/PDFPage.vue.d.ts +40 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.mjs +1293 -0
- package/dist/pdf-uHvE5neP.mjs +17593 -0
- package/dist/pdf.worker.min-DmO9Xdfo.mjs +4 -0
- package/dist/types.d.ts +30 -0
- package/dist/utils/asyncReader.d.ts +10 -0
- package/dist/utils/geometry.d.ts +5 -0
- package/dist/utils/measurements.d.ts +12 -0
- package/dist/utils/objectStore.d.ts +5 -0
- package/dist/utils/pageBounds.d.ts +5 -0
- package/dist/utils/zoom.d.ts +2 -0
- package/package.json +46 -21
- package/src/components/DraggableElement.vue +18 -15
- package/src/components/PDFElements.vue +87 -60
- package/src/components/PDFPage.vue +11 -7
- package/src/index.ts +18 -0
- package/src/types.ts +35 -0
- package/src/utils/asyncReader.ts +103 -0
- package/src/utils/{geometry.js → geometry.ts} +16 -2
- package/src/utils/{measurements.js → measurements.ts} +20 -1
- package/src/utils/{objectStore.js → objectStore.ts} +15 -4
- package/src/utils/{pageBounds.js → pageBounds.ts} +2 -2
- package/src/utils/{zoom.js → zoom.ts} +3 -1
- package/dist/demo.html +0 -1
- package/dist/pdf-elements.common.js +0 -31760
- package/dist/pdf-elements.common.js.map +0 -1
- package/dist/pdf-elements.css +0 -1
- package/dist/pdf-elements.umd.js +0 -31772
- package/dist/pdf-elements.umd.js.map +0 -1
- package/dist/pdf-elements.umd.min.js +0 -2
- package/dist/pdf-elements.umd.min.js.map +0 -1
- package/dist/pdf.worker.min.mjs +0 -22
- package/src/index.js +0 -17
- package/src/utils/asyncReader.js +0 -44
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-elements.umd.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,kBAAZC,SAA0C,kBAAXC,OACxCA,OAAOD,QAAUD,IACQ,oBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,kBAAZC,QACdA,QAAQ,gBAAkBD,IAE1BD,EAAK,gBAAkBC,GACxB,EATD,CASoB,qBAATK,KAAuBA,KAAOC,KAAO,I,oCCRhD,IAAIC,EAAa,EAAQ,MAEzBL,EAAOD,QAAU,SAAUO,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAcD,EAAWC,EAC1D,C,YCJA,IAAIC,EAAO,EAAQ,MACfC,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBC,EAAc,EAAQ,MACtBC,EAAoB,EAAQ,KAE5BC,EAAaC,UAEjBb,EAAOD,QAAU,SAAUe,EAAUC,GACnC,IAAIC,EAAiBC,UAAUC,OAAS,EAAIP,EAAkBG,GAAYC,EAC1E,GAAIP,EAAUQ,GAAiB,OAAOP,EAASF,EAAKS,EAAgBF,IACpE,MAAM,IAAIF,EAAWF,EAAYI,GAAY,mBAC/C,C,aCZA,IAAIK,EAAI,EAAQ,MACZZ,EAAO,EAAQ,MACfa,EAAU,EAAQ,MAClBZ,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBY,EAAoB,EAAQ,MAC5BC,EAAgB,EAAQ,MACxBC,EAA2C,EAAQ,MAEnDC,EAAiCD,EAAyC,OAAQV,WAItFM,EAAE,CAAEM,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQJ,GAAkC,CACzFK,KAAM,SAAcC,GAClBrB,EAASL,MACT,IACEI,EAAUsB,EACZ,CAAE,MAAOC,GACPT,EAAclB,KAAM,QAAS2B,EAC/B,CAEA,GAAIP,EAAgC,OAAOjB,EAAKiB,EAAgCpB,KAAM0B,GAEtF,IAAIE,EAASX,EAAkBjB,MAC3B6B,EAAU,EACd,OAAOb,EAAQY,EAAQ,SAAUE,EAAOC,GACtC,GAAIL,EAAUI,EAAOD,KAAY,OAAOE,EAAKD,EAC/C,EAAG,CAAEE,WAAW,EAAMC,aAAa,IAAQC,MAC7C,G,aC7BF,IAAIC,EAAc,EAAQ,MACtBC,EAAQ,EAAQ,MAChBnC,EAAa,EAAQ,MACrBoC,EAAS,EAAQ,MACjBC,EAAc,EAAQ,MACtBC,EAA6B,oBAC7BC,EAAgB,EAAQ,MACxBC,EAAsB,EAAQ,MAE9BC,EAAuBD,EAAoBE,QAC3CC,EAAmBH,EAAoBI,IACvCC,EAAUC,OAEVC,EAAiBC,OAAOD,eACxBE,EAAcf,EAAY,GAAGgB,OAC7BC,EAAUjB,EAAY,GAAGiB,SACzBC,EAAOlB,EAAY,GAAGkB,MAEtBC,EAAsBhB,IAAgBF,EAAM,WAC9C,OAAsF,IAA/EY,EAAe,WAA0B,EAAG,SAAU,CAAElB,MAAO,IAAKhB,MAC7E,GAEIyC,EAAWR,OAAOA,QAAQS,MAAM,UAEhCC,EAAc7D,EAAOD,QAAU,SAAUmC,EAAO4B,EAAMC,GACf,YAArCT,EAAYJ,EAAQY,GAAO,EAAG,KAChCA,EAAO,IAAMN,EAAQN,EAAQY,GAAO,wBAAyB,MAAQ,KAEnEC,GAAWA,EAAQC,SAAQF,EAAO,OAASA,GAC3CC,GAAWA,EAAQE,SAAQH,EAAO,OAASA,KAC1CrB,EAAOP,EAAO,SAAYS,GAA8BT,EAAM4B,OAASA,KACtEpB,EAAaU,EAAelB,EAAO,OAAQ,CAAEA,MAAO4B,EAAMI,cAAc,IACvEhC,EAAM4B,KAAOA,GAEhBJ,GAAuBK,GAAWtB,EAAOsB,EAAS,UAAY7B,EAAMhB,SAAW6C,EAAQI,OACzFf,EAAelB,EAAO,SAAU,CAAEA,MAAO6B,EAAQI,QAEnD,IACMJ,GAAWtB,EAAOsB,EAAS,gBAAkBA,EAAQK,YACnD1B,GAAaU,EAAelB,EAAO,YAAa,CAAEmC,UAAU,IAEvDnC,EAAMoC,YAAWpC,EAAMoC,eAAYC,EAChD,CAAE,MAAOxC,GAAqB,CAC9B,IAAIyC,EAAQ1B,EAAqBZ,GAG/B,OAFGO,EAAO+B,EAAO,YACjBA,EAAMC,OAAShB,EAAKE,EAAyB,iBAARG,EAAmBA,EAAO,KACxD5B,CACX,EAIAwC,SAASJ,UAAUK,SAAWd,EAAY,WACxC,OAAOxD,EAAWD,OAAS4C,EAAiB5C,MAAMqE,QAAU7B,EAAcxC,KAC5E,EAAG,W,aCrDH,IAAIsC,EAAc,EAAQ,MACtBD,EAAS,EAAQ,MAEjBmC,EAAoBF,SAASJ,UAE7BO,EAAgBnC,GAAeW,OAAOyB,yBAEtCC,EAAStC,EAAOmC,EAAmB,QAEnCI,EAASD,GAA0D,cAAhD,WAAqC,EAAEjB,KAC1DmB,EAAeF,KAAYrC,GAAgBA,GAAemC,EAAcD,EAAmB,QAAQV,cAEvGlE,EAAOD,QAAU,CACfgF,OAAQA,EACRC,OAAQA,EACRC,aAAcA,E,aCfhB,IAAIC,EAAa,EAAQ,MAEzBlF,EAAOD,QAAUmF,EAAW,WAAY,kB,SCFxClF,EAAOD,QAAU,CAAC,C,aCAlB,IAAIoB,EAAI,EAAQ,MACZZ,EAAO,EAAQ,MACfC,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBY,EAAoB,EAAQ,MAC5B8D,EAAyB,EAAQ,MACjCC,EAAsB,EAAQ,MAC9B9D,EAAgB,EAAQ,MACxB+D,EAAU,EAAQ,MAClBC,EAAwC,EAAQ,KAChD/D,EAA2C,EAAQ,MAIvD,SAASgE,IACP,IAEE,IAAIjF,EAAKkF,SAASlB,UAAUmB,QAAQlF,KAAK,IAAImF,IAAI,CAAC,CAAC,EAAG,KAAKC,UAAW,SAAUC,GAAK,OAAOA,CAAG,GAC/FtF,EAAGuF,OACHvF,EAAG,WACL,CAAE,MAAOyB,GACP,OAAO,CACT,CACF,CAEA,IAAI+D,GAAiDT,IAC/CC,EAAsC,UAAW,WAA0B,GAC7ES,GAAqCV,IAAYS,GAChDvE,EAAyC,UAAWV,WAErDmF,EAASX,GAAWS,GAAiDC,GACpER,IAEDU,EAAgBb,EAAoB,WACtC,IAEI9C,EAAQ4D,EAFRC,EAAW/F,KAAK+F,SAChBC,EAAShG,KAAKgG,OAGlB,MAAO,EAAM,CACX,GAAIF,EAAQ9F,KAAK8F,MAAO,IAEtB,GADA5D,EAAS7B,EAASF,EAAK2F,EAAML,KAAMK,EAAMC,YACpC7D,EAAO+D,KAAM,OAAO/D,EAAOJ,MAChC9B,KAAK8F,MAAQ,IACf,CAAE,MAAOnE,GAAST,EAAc6E,EAAU,QAASpE,EAAQ,CAI3D,GAFAO,EAAS7B,EAASF,EAAKH,KAAKyF,KAAMM,IAE9B/F,KAAKiG,OAAS/D,EAAO+D,KAAM,OAE/B,IACEjG,KAAK8F,MAAQf,EAAuBiB,EAAO9D,EAAOJ,MAAO9B,KAAK6B,YAAY,EAC5E,CAAE,MAAOF,GAAST,EAAc6E,EAAU,QAASpE,EAAQ,CAC7D,CACF,GAIAZ,EAAE,CAAEM,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQoE,GAAU,CACjEP,QAAS,SAAiBW,GACxB3F,EAASL,MACT,IACEI,EAAU4F,EACZ,CAAE,MAAOrE,GACPT,EAAclB,KAAM,QAAS2B,EAC/B,CAEA,OAAIgE,EAA0CxF,EAAKwF,EAAmC3F,KAAMgG,GAErF,IAAIH,EAAc5E,EAAkBjB,MAAO,CAChDgG,OAAQA,EACRF,MAAO,MAEX,G,aCxEF,IAAI1D,EAAQ,EAAQ,MAEpBxC,EAAOD,SAAWyC,EAAM,WAEtB,IAAI8D,EAAO,WAA4B,EAAEC,OAEzC,MAAsB,mBAARD,GAAsBA,EAAKE,eAAe,YAC1D,E,aCPA,IAAIC,EAAgB,EAAQ,MAExB7F,EAAaC,UAEjBb,EAAOD,QAAU,SAAUO,EAAIoG,GAC7B,GAAID,EAAcC,EAAWpG,GAAK,OAAOA,EACzC,MAAM,IAAIM,EAAW,uBACvB,C,SCLAZ,EAAOD,QAAU,SAAU4G,EAAY7F,GAErC,IAAI8F,EAA4B,mBAAZpB,UAA0BA,SAASlB,UAAUqC,GACjE,GAAIC,EAAQ,IACVA,EAAOrG,KAAK,CAAEsF,KAAM,MAAQ/E,GAAU+E,MACxC,CAAE,MAAO9D,GACP,OAAO,CACT,CACF,C,SCVA,IAAI8E,EAAOC,KAAKD,KACZE,EAAQD,KAAKC,MAKjB/G,EAAOD,QAAU+G,KAAKE,OAAS,SAAeC,GAC5C,IAAIC,GAAKD,EACT,OAAQC,EAAI,EAAIH,EAAQF,GAAMK,EAChC,C,aCTA,IAAIhC,EAAa,EAAQ,MACrB7E,EAAa,EAAQ,MACrBoG,EAAgB,EAAQ,MACxBU,EAAoB,EAAQ,MAE5BC,EAAU/D,OAEdrD,EAAOD,QAAUoH,EAAoB,SAAU7G,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAI+G,EAAUnC,EAAW,UACzB,OAAO7E,EAAWgH,IAAYZ,EAAcY,EAAQ/C,UAAW8C,EAAQ9G,GACzE,C,aCZA,IAAIgH,EAAU,EAAQ,MAClBC,EAAY,EAAQ,MACpBC,EAAoB,EAAQ,MAC5BC,EAAY,EAAQ,MACpBC,EAAkB,EAAQ,MAE1BC,EAAWD,EAAgB,YAE/B1H,EAAOD,QAAU,SAAUO,GACzB,IAAKkH,EAAkBlH,GAAK,OAAOiH,EAAUjH,EAAIqH,IAC5CJ,EAAUjH,EAAI,eACdmH,EAAUH,EAAQhH,GACzB,C,cCZA,IAAIsH,EAAqB,EAAQ,MAC7BC,EAAc,EAAQ,MAK1B7H,EAAOD,QAAUsD,OAAOyE,MAAQ,SAAcC,GAC5C,OAAOH,EAAmBG,EAAGF,EAC/B,C,cCRA,IAYIG,EAAK/E,EAAKgF,EAZVC,EAAkB,EAAQ,MAC1BC,EAAa,EAAQ,MACrBC,EAAW,EAAQ,IACnBC,EAA8B,EAAQ,MACtC5F,EAAS,EAAQ,MACjB6F,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,KAErBC,EAA6B,6BAC7B5H,EAAYsH,EAAWtH,UACvB6H,EAAUP,EAAWO,QAGrB3F,EAAU,SAAUzC,GACtB,OAAO2H,EAAI3H,GAAM2C,EAAI3C,GAAM0H,EAAI1H,EAAI,CAAC,EACtC,EAEIqI,EAAY,SAAUC,GACxB,OAAO,SAAUtI,GACf,IAAIkE,EACJ,IAAK4D,EAAS9H,KAAQkE,EAAQvB,EAAI3C,IAAKuI,OAASD,EAC9C,MAAM,IAAI/H,EAAU,0BAA4B+H,EAAO,aACvD,OAAOpE,CACX,CACF,EAEA,GAAI0D,GAAmBI,EAAO9D,MAAO,CACnC,IAAIsE,EAAQR,EAAO9D,QAAU8D,EAAO9D,MAAQ,IAAIkE,GAEhDI,EAAM7F,IAAM6F,EAAM7F,IAClB6F,EAAMb,IAAMa,EAAMb,IAClBa,EAAMd,IAAMc,EAAMd,IAElBA,EAAM,SAAU1H,EAAIyI,GAClB,GAAID,EAAMb,IAAI3H,GAAK,MAAM,IAAIO,EAAU4H,GAGvC,OAFAM,EAASC,OAAS1I,EAClBwI,EAAMd,IAAI1H,EAAIyI,GACPA,CACT,EACA9F,EAAM,SAAU3C,GACd,OAAOwI,EAAM7F,IAAI3C,IAAO,CAAC,CAC3B,EACA2H,EAAM,SAAU3H,GACd,OAAOwI,EAAMb,IAAI3H,EACnB,CACF,KAAO,CACL,IAAI2I,EAAQV,EAAU,SACtBC,EAAWS,IAAS,EACpBjB,EAAM,SAAU1H,EAAIyI,GAClB,GAAItG,EAAOnC,EAAI2I,GAAQ,MAAM,IAAIpI,EAAU4H,GAG3C,OAFAM,EAASC,OAAS1I,EAClB+H,EAA4B/H,EAAI2I,EAAOF,GAChCA,CACT,EACA9F,EAAM,SAAU3C,GACd,OAAOmC,EAAOnC,EAAI2I,GAAS3I,EAAG2I,GAAS,CAAC,CAC1C,EACAhB,EAAM,SAAU3H,GACd,OAAOmC,EAAOnC,EAAI2I,EACpB,CACF,CAEAjJ,EAAOD,QAAU,CACfiI,IAAKA,EACL/E,IAAKA,EACLgF,IAAKA,EACLlF,QAASA,EACT4F,UAAWA,E,cCpEb,IAAI3B,EAAQ,EAAQ,KAIpBhH,EAAOD,QAAU,SAAUe,GACzB,IAAIoI,GAAUpI,EAEd,OAAOoI,IAAWA,GAAqB,IAAXA,EAAe,EAAIlC,EAAMkC,EACvD,C,cCRA,IAAI5H,EAAgB,EAAQ,MAE5BtB,EAAOD,QAAU,SAAUoJ,EAAOC,EAAMlH,GACtC,IAAK,IAAImH,EAAIF,EAAMjI,OAAS,EAAGmI,GAAK,EAAGA,IACrC,QAAiB9E,IAAb4E,EAAME,GACV,IACEnH,EAAQZ,EAAc6H,EAAME,GAAGlD,SAAUiD,EAAMlH,EACjD,CAAE,MAAOH,GACPqH,EAAO,QACPlH,EAAQH,CACV,CAEF,GAAa,UAATqH,EAAkB,MAAMlH,EAC5B,OAAOA,CACT,C,cCdA,IAAIiG,EAAa,EAAQ,MACrB3F,EAAQ,EAAQ,MAChB8G,EAAK,EAAQ,MACbC,EAAc,EAAQ,MAEtBC,EAAkBrB,EAAWqB,gBAEjCxJ,EAAOD,UAAYyJ,IAAoBhH,EAAM,WAG3C,GAAqB,SAAhB+G,GAA0BD,EAAK,IAAwB,SAAhBC,GAA0BD,EAAK,IAAwB,YAAhBC,GAA6BD,EAAK,GAAK,OAAO,EACjI,IAAIG,EAAS,IAAIC,YAAY,GACzBC,EAAQH,EAAgBC,EAAQ,CAAEG,SAAU,CAACH,KACjD,OAA6B,IAAtBA,EAAOI,YAAyC,IAArBF,EAAME,UAC1C,E,cCdA,IAAItH,EAAc,EAAQ,MAE1BvC,EAAOD,QAAUwC,EAAY,CAAC,EAAEkE,c,cCFhC,IAAItF,EAAI,EAAQ,MACZZ,EAAO,EAAQ,MACfC,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBY,EAAoB,EAAQ,MAC5B+D,EAAsB,EAAQ,MAC9B0E,EAA+B,EAAQ,MACvCxI,EAAgB,EAAQ,MACxBgE,EAAwC,EAAQ,KAChD/D,EAA2C,EAAQ,MACnD8D,EAAU,EAAQ,MAElB0E,GAA4C1E,IAAYC,EAAsC,MAAO,WAA0B,GAC/H0E,GAAiC3E,IAAY0E,GAC5CxI,EAAyC,MAAOV,WAEjDmF,EAASX,GAAW0E,GAA4CC,EAEhE/D,EAAgBb,EAAoB,WACtC,IAAIe,EAAW/F,KAAK+F,SAChB7D,EAAS7B,EAASF,EAAKH,KAAKyF,KAAMM,IAClCE,EAAOjG,KAAKiG,OAAS/D,EAAO+D,KAChC,IAAKA,EAAM,OAAOyD,EAA6B3D,EAAU/F,KAAKgG,OAAQ,CAAC9D,EAAOJ,MAAO9B,KAAK6B,YAAY,EACxG,GAIAd,EAAE,CAAEM,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQoE,GAAU,CACjEiE,IAAK,SAAa7D,GAChB3F,EAASL,MACT,IACEI,EAAU4F,EACZ,CAAE,MAAOrE,GACPT,EAAclB,KAAM,QAAS2B,EAC/B,CAEA,OAAIiI,EAAsCzJ,EAAKyJ,EAA+B5J,KAAMgG,GAE7E,IAAIH,EAAc5E,EAAkBjB,MAAO,CAChDgG,OAAQA,GAEZ,G,UCvCFpG,EAAOD,QAAU,SAAUmK,GACzB,MAAO,CACL/D,SAAU+D,EACVrE,KAAMqE,EAAIrE,KACVQ,MAAM,EAEV,C,cCRA,IAAI9D,EAAc,EAAQ,MACtBE,EAAS,EAAQ,MACjB0H,EAAkB,EAAQ,MAC1BC,EAAU,gBACV5B,EAAa,EAAQ,KAErB6B,EAAO9H,EAAY,GAAG8H,MAE1BrK,EAAOD,QAAU,SAAUuK,EAAQC,GACjC,IAGIC,EAHAzC,EAAIoC,EAAgBG,GACpBjB,EAAI,EACJ/G,EAAS,GAEb,IAAKkI,KAAOzC,GAAItF,EAAO+F,EAAYgC,IAAQ/H,EAAOsF,EAAGyC,IAAQH,EAAK/H,EAAQkI,GAE1E,MAAOD,EAAMrJ,OAASmI,EAAO5G,EAAOsF,EAAGyC,EAAMD,EAAMlB,SAChDe,EAAQ9H,EAAQkI,IAAQH,EAAK/H,EAAQkI,IAExC,OAAOlI,CACT,C,cCnBA,IAAIuB,EAAc,EAAQ,KACtBT,EAAiB,EAAQ,MAE7BpD,EAAOD,QAAU,SAAU0B,EAAQqC,EAAM2G,GAGvC,OAFIA,EAAWxH,KAAKY,EAAY4G,EAAWxH,IAAKa,EAAM,CAAEE,QAAQ,IAC5DyG,EAAWzC,KAAKnE,EAAY4G,EAAWzC,IAAKlE,EAAM,CAAEG,QAAQ,IACzDb,EAAesH,EAAEjJ,EAAQqC,EAAM2G,EACxC,C,cCPA,IAAI/C,EAAkB,EAAQ,MAE1BiD,EAAgBjD,EAAgB,eAChCpB,EAAO,CAAC,EAEZA,EAAKqE,GAAiB,IAEtB3K,EAAOD,QAA2B,eAAjBoD,OAAOmD,E,cCPxB,IAAI/D,EAAc,EAAQ,MAEtBoC,EAAWpC,EAAY,CAAC,EAAEoC,UAC1BrB,EAAcf,EAAY,GAAGgB,OAEjCvD,EAAOD,QAAU,SAAUO,GACzB,OAAOgD,EAAYqB,EAASrE,GAAK,GAAI,EACvC,C,cCPA,IAAIkC,EAAQ,EAAQ,MAEpBxC,EAAOD,SAAWyC,EAAM,WACtB,SAASoI,IAAkB,CAG3B,OAFAA,EAAEtG,UAAUF,YAAc,KAEnBf,OAAOwH,eAAe,IAAID,KAASA,EAAEtG,SAC9C,E,cCNA,IAoDIwG,EApDArK,EAAW,EAAQ,MACnBsK,EAAyB,EAAQ,MACjClD,EAAc,EAAQ,MACtBW,EAAa,EAAQ,KACrBwC,EAAO,EAAQ,KACfC,EAAwB,EAAQ,MAChC1C,EAAY,EAAQ,MAEpB2C,EAAK,IACLC,EAAK,IACLC,EAAY,YACZC,EAAS,SACTC,EAAW/C,EAAU,YAErBgD,EAAmB,WAA0B,EAE7CC,EAAY,SAAUC,GACxB,OAAON,EAAKE,EAASH,EAAKO,EAAUN,EAAK,IAAME,EAASH,CAC1D,EAGIQ,EAA4B,SAAUZ,GACxCA,EAAgBa,MAAMH,EAAU,KAChCV,EAAgBc,QAChB,IAAIC,EAAOf,EAAgBgB,aAAazI,OAGxC,OADAyH,EAAkB,KACXe,CACT,EAGIE,EAA2B,WAE7B,IAEIC,EAFAC,EAAShB,EAAsB,UAC/BiB,EAAK,OAASb,EAAS,IAU3B,OARAY,EAAOE,MAAMC,QAAU,OACvBpB,EAAKqB,YAAYJ,GAEjBA,EAAOK,IAAMnJ,OAAO+I,GACpBF,EAAiBC,EAAOM,cAAcC,SACtCR,EAAeS,OACfT,EAAeL,MAAMH,EAAU,sBAC/BQ,EAAeJ,QACRI,EAAepB,CACxB,EAQI8B,EAAkB,WACpB,IACE5B,EAAkB,IAAI6B,cAAc,WACtC,CAAE,MAAO5K,GAAsB,CAC/B2K,EAAqC,oBAAZF,SACrBA,SAASI,QAAU9B,EACjBY,EAA0BZ,GAC1BiB,IACFL,EAA0BZ,GAC9B,IAAI5J,EAAS2G,EAAY3G,OACzB,MAAOA,WAAiBwL,EAAgBtB,GAAWvD,EAAY3G,IAC/D,OAAOwL,GACT,EAEAlE,EAAW8C,IAAY,EAKvBtL,EAAOD,QAAUsD,OAAOwJ,QAAU,SAAgB9E,EAAG+E,GACnD,IAAIxK,EAQJ,OAPU,OAANyF,GACFwD,EAAiBH,GAAa3K,EAASsH,GACvCzF,EAAS,IAAIiJ,EACbA,EAAiBH,GAAa,KAE9B9I,EAAOgJ,GAAYvD,GACdzF,EAASoK,SACMnI,IAAfuI,EAA2BxK,EAASyI,EAAuBL,EAAEpI,EAAQwK,EAC9E,C,cCnFA,IAAI3L,EAAI,EAAQ,MACZZ,EAAO,EAAQ,MACfC,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBY,EAAoB,EAAQ,MAC5B+D,EAAsB,EAAQ,MAC9B0E,EAA+B,EAAQ,MACvCzE,EAAU,EAAQ,MAClB/D,EAAgB,EAAQ,MACxBgE,EAAwC,EAAQ,KAChD/D,EAA2C,EAAQ,MAEnDwL,GAA+C1H,IAAYC,EAAsC,SAAU,WAA0B,GACrI0H,GAAoC3H,IAAY0H,GAC/CxL,EAAyC,SAAUV,WAEpDmF,EAASX,GAAW0H,GAA+CC,EAEnE/G,EAAgBb,EAAoB,WACtC,IAGI9C,EAAQ+D,EAAMnE,EAHdiE,EAAW/F,KAAK+F,SAChBrE,EAAY1B,KAAK0B,UACjB+D,EAAOzF,KAAKyF,KAEhB,MAAO,EAAM,CAGX,GAFAvD,EAAS7B,EAASF,EAAKsF,EAAMM,IAC7BE,EAAOjG,KAAKiG,OAAS/D,EAAO+D,KACxBA,EAAM,OAEV,GADAnE,EAAQI,EAAOJ,MACX4H,EAA6B3D,EAAUrE,EAAW,CAACI,EAAO9B,KAAK6B,YAAY,GAAO,OAAOC,CAC/F,CACF,GAIAf,EAAE,CAAEM,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQoE,GAAU,CACjEiH,OAAQ,SAAgBnL,GACtBrB,EAASL,MACT,IACEI,EAAUsB,EACZ,CAAE,MAAOC,GACPT,EAAclB,KAAM,QAAS2B,EAC/B,CAEA,OAAIiL,EAAyCzM,EAAKyM,EAAkC5M,KAAM0B,GAEnF,IAAImE,EAAc5E,EAAkBjB,MAAO,CAChD0B,UAAWA,GAEf,G,UC9CF9B,EAAOD,QAAU,SAAUmC,EAAOmE,GAChC,MAAO,CAAEnE,MAAOA,EAAOmE,KAAMA,EAC/B,C,cCJA,IAAIE,EAAO,EAAQ,MACfhG,EAAO,EAAQ,MACfE,EAAW,EAAQ,MACnBC,EAAc,EAAQ,MACtBwM,EAAwB,EAAQ,MAChCC,EAAoB,EAAQ,MAC5B1G,EAAgB,EAAQ,MACxB2G,EAAc,EAAQ,IACtBzM,EAAoB,EAAQ,KAC5BW,EAAgB,EAAQ,MAExBV,EAAaC,UAEbwM,EAAS,SAAUC,EAAShL,GAC9BlC,KAAKkN,QAAUA,EACflN,KAAKkC,OAASA,CAChB,EAEIiL,EAAkBF,EAAO/I,UAE7BtE,EAAOD,QAAU,SAAUyN,EAAUC,EAAiB1J,GACpD,IAMIoC,EAAUuH,EAAQC,EAAOzM,EAAQoB,EAAQuD,EAAM+H,EAN/CC,EAAO9J,GAAWA,EAAQ8J,KAC1BC,KAAgB/J,IAAWA,EAAQ+J,YACnC1L,KAAe2B,IAAWA,EAAQ3B,WAClC2L,KAAiBhK,IAAWA,EAAQgK,aACpC1L,KAAiB0B,IAAWA,EAAQ1B,aACpC2L,EAAKzH,EAAKkH,EAAiBI,GAG3B1L,EAAO,SAAU8L,GAEnB,OADI9H,GAAU7E,EAAc6E,EAAU,UAC/B,IAAIkH,GAAO,EAAMY,EAC1B,EAEIC,EAAS,SAAUhM,GACrB,OAAI4L,GACFrN,EAASyB,GACFG,EAAc2L,EAAG9L,EAAM,GAAIA,EAAM,GAAIC,GAAQ6L,EAAG9L,EAAM,GAAIA,EAAM,KAChEG,EAAc2L,EAAG9L,EAAOC,GAAQ6L,EAAG9L,EAC9C,EAEA,GAAIE,EACF+D,EAAWqH,EAASrH,cACf,GAAI4H,EACT5H,EAAWqH,MACN,CAEL,GADAE,EAAS/M,EAAkB6M,IACtBE,EAAQ,MAAM,IAAI9M,EAAWF,EAAY8M,GAAY,oBAE1D,GAAIN,EAAsBQ,GAAS,CACjC,IAAKC,EAAQ,EAAGzM,EAASiM,EAAkBK,GAAWtM,EAASyM,EAAOA,IAEpE,GADArL,EAAS4L,EAAOV,EAASG,IACrBrL,GAAUmE,EAAc8G,EAAiBjL,GAAS,OAAOA,EAC7D,OAAO,IAAI+K,GAAO,EACtB,CACAlH,EAAWiH,EAAYI,EAAUE,EACnC,CAEA7H,EAAOzD,EAAYoL,EAAS3H,KAAOM,EAASN,KAC5C,QAAS+H,EAAOrN,EAAKsF,EAAMM,IAAWE,KAAM,CAC1C,IACE/D,EAAS4L,EAAON,EAAK1L,MACvB,CAAE,MAAOH,GACPT,EAAc6E,EAAU,QAASpE,EACnC,CACA,GAAqB,iBAAVO,GAAsBA,GAAUmE,EAAc8G,EAAiBjL,GAAS,OAAOA,CAC5F,CAAE,OAAO,IAAI+K,GAAO,EACtB,C,cCnEA,IAAI9M,EAAO,EAAQ,MACf6H,EAAW,EAAQ,IACnB+F,EAAW,EAAQ,KACnB5G,EAAY,EAAQ,MACpB6G,EAAsB,EAAQ,MAC9B1G,EAAkB,EAAQ,MAE1B9G,EAAaC,UACbwN,EAAe3G,EAAgB,eAInC1H,EAAOD,QAAU,SAAUuO,EAAOC,GAChC,IAAKnG,EAASkG,IAAUH,EAASG,GAAQ,OAAOA,EAChD,IACIhM,EADAkM,EAAejH,EAAU+G,EAAOD,GAEpC,GAAIG,EAAc,CAGhB,QAFajK,IAATgK,IAAoBA,EAAO,WAC/BjM,EAAS/B,EAAKiO,EAAcF,EAAOC,IAC9BnG,EAAS9F,IAAW6L,EAAS7L,GAAS,OAAOA,EAClD,MAAM,IAAI1B,EAAW,0CACvB,CAEA,YADa2D,IAATgK,IAAoBA,EAAO,UACxBH,EAAoBE,EAAOC,EACpC,C,cCxBA,IAAI9L,EAAS,EAAQ,MACjBpC,EAAa,EAAQ,MACrBoO,EAAW,EAAQ,MACnBlG,EAAY,EAAQ,MACpBmG,EAA2B,EAAQ,MAEnCpD,EAAW/C,EAAU,YACrBnB,EAAU/D,OACVsL,EAAkBvH,EAAQ9C,UAK9BtE,EAAOD,QAAU2O,EAA2BtH,EAAQyD,eAAiB,SAAU9C,GAC7E,IAAIuC,EAASmE,EAAS1G,GACtB,GAAItF,EAAO6H,EAAQgB,GAAW,OAAOhB,EAAOgB,GAC5C,IAAIlH,EAAckG,EAAOlG,YACzB,OAAI/D,EAAW+D,IAAgBkG,aAAkBlG,EACxCA,EAAYE,UACZgG,aAAkBlD,EAAUuH,EAAkB,IACzD,C,cCpBA,IAAInM,EAAQ,EAAQ,MAChBnC,EAAa,EAAQ,MAErBuO,EAAc,kBAEdC,EAAW,SAAUC,EAASC,GAChC,IAAI7M,EAAQ8M,EAAKC,EAAUH,IAC3B,OAAO5M,IAAUgN,GACbhN,IAAUiN,IACV9O,EAAW0O,GAAavM,EAAMuM,KAC5BA,EACR,EAEIE,EAAYJ,EAASI,UAAY,SAAUG,GAC7C,OAAOjM,OAAOiM,GAAQ5L,QAAQoL,EAAa,KAAKS,aAClD,EAEIL,EAAOH,EAASG,KAAO,CAAC,EACxBG,EAASN,EAASM,OAAS,IAC3BD,EAAWL,EAASK,SAAW,IAEnClP,EAAOD,QAAU8O,C,cCrBjB,IAAI1G,EAAa,EAAQ,MAErBmH,EAAYnH,EAAWmH,UACvBC,EAAYD,GAAaA,EAAUC,UAEvCvP,EAAOD,QAAUwP,EAAYpM,OAAOoM,GAAa,E,cCLjD,IAAIpH,EAAa,EAAQ,MACrBqH,EAAsB,EAAQ,MAC9BC,EAAwB,EAAQ,MAEhCC,EAAWvH,EAAWuH,SAE1B1P,EAAOD,QAAU,SAAUgI,GACzB,IAAKyH,GAAoD,IAA7BC,EAAsB1H,GAAU,OAAO,EACnE,IAGE,OADA,IAAI2H,EAAS3H,IACN,CACT,CAAE,MAAOhG,GACP,OAAO,CACT,CACF,C,cCfA,IAAIQ,EAAc,EAAQ,MAEtBoN,EAAK,EACLC,EAAU9I,KAAK+I,SACflL,EAAWpC,EAAY,IAAIoC,UAE/B3E,EAAOD,QAAU,SAAUyK,GACzB,MAAO,gBAAqBjG,IAARiG,EAAoB,GAAKA,GAAO,KAAO7F,IAAWgL,EAAKC,EAAS,GACtF,C,cCRA,IAAIzO,EAAI,EAAQ,MACZZ,EAAO,EAAQ,MACfa,EAAU,EAAQ,MAClBZ,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBY,EAAoB,EAAQ,MAC5BC,EAAgB,EAAQ,MACxBC,EAA2C,EAAQ,MAEnDuO,EAAiCvO,EAAyC,OAAQV,WAItFM,EAAE,CAAEM,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQkO,GAAkC,CACzFC,KAAM,SAAcjO,GAClBrB,EAASL,MACT,IACEI,EAAUsB,EACZ,CAAE,MAAOC,GACPT,EAAclB,KAAM,QAAS2B,EAC/B,CAEA,GAAI+N,EAAgC,OAAOvP,EAAKuP,EAAgC1P,KAAM0B,GAEtF,IAAIE,EAASX,EAAkBjB,MAC3B6B,EAAU,EACd,OAAOb,EAAQY,EAAQ,SAAUE,EAAOC,GACtC,GAAIL,EAAUI,EAAOD,KAAY,OAAOE,GAC1C,EAAG,CAAEC,WAAW,EAAMC,aAAa,IAAQiL,OAC7C,G,cC7BF,IAAI/K,EAAc,EAAQ,MACtBlC,EAAa,EAAQ,MACrByI,EAAQ,EAAQ,MAEhBkH,EAAmBzN,EAAYmC,SAASC,UAGvCtE,EAAWyI,EAAMlG,iBACpBkG,EAAMlG,cAAgB,SAAUtC,GAC9B,OAAO0P,EAAiB1P,EAC1B,GAGFN,EAAOD,QAAU+I,EAAMlG,a,YCZvB7C,EAAQ2K,EAAIrH,OAAO4M,qB,cCDnB,IAAIzN,EAAQ,EAAQ,MAGpBxC,EAAOD,SAAWyC,EAAM,WAEtB,OAA+E,IAAxEa,OAAOD,eAAe,CAAC,EAAG,EAAG,CAAEH,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,E,cCNA,IAAIkF,EAAa,EAAQ,MACrBC,EAAW,EAAQ,IAEnBoE,EAAWrE,EAAWqE,SAEtBzH,EAASqD,EAASoE,IAAapE,EAASoE,EAAS0D,eAErDlQ,EAAOD,QAAU,SAAUO,GACzB,OAAOyE,EAASyH,EAAS0D,cAAc5P,GAAM,CAAC,CAChD,C,cCTA,IAAIa,EAAI,EAAQ,MACZsN,EAAW,EAAQ,MACnBtB,EAAoB,EAAQ,MAC5BgD,EAAiB,EAAQ,MACzBC,EAA2B,EAAQ,MACnC5N,EAAQ,EAAQ,MAEhB6N,EAAsB7N,EAAM,WAC9B,OAAoD,aAA7C,GAAG6H,KAAK9J,KAAK,CAAEW,OAAQ,YAAe,EAC/C,GAIIoP,EAAiC,WACnC,IAEEjN,OAAOD,eAAe,GAAI,SAAU,CAAEiB,UAAU,IAASgG,MAC3D,CAAE,MAAOtI,GACP,OAAOA,aAAiBlB,SAC1B,CACF,EAEImF,EAASqK,IAAwBC,IAIrCnP,EAAE,CAAEM,OAAQ,QAASC,OAAO,EAAMyC,MAAO,EAAGvC,OAAQoE,GAAU,CAE5DqE,KAAM,SAAckG,GAClB,IAAIxI,EAAI0G,EAASrO,MACboQ,EAAMrD,EAAkBpF,GACxB0I,EAAWxP,UAAUC,OACzBkP,EAAyBI,EAAMC,GAC/B,IAAK,IAAIpH,EAAI,EAAGA,EAAIoH,EAAUpH,IAC5BtB,EAAEyI,GAAOvP,UAAUoI,GACnBmH,IAGF,OADAL,EAAepI,EAAGyI,GACXA,CACT,G,UCrCFxQ,EAAOD,QAAU,SAAUO,GACzB,OAAc,OAAPA,QAAsBiE,IAAPjE,CACxB,C,cCJA,IAAIoH,EAAkB,EAAQ,MAC1BD,EAAY,EAAQ,MAEpBE,EAAWD,EAAgB,YAC3BgJ,EAAiBC,MAAMrM,UAG3BtE,EAAOD,QAAU,SAAUO,GACzB,YAAciE,IAAPjE,IAAqBmH,EAAUkJ,QAAUrQ,GAAMoQ,EAAe/I,KAAcrH,EACrF,C,cCRA,IAAI6H,EAAa,EAAQ,MACrBoH,EAAY,EAAQ,MACpBjI,EAAU,EAAQ,MAElBsJ,EAAsB,SAAUxB,GAClC,OAAOG,EAAUhM,MAAM,EAAG6L,EAAOlO,UAAYkO,CAC/C,EAEApP,EAAOD,QAAU,WACf,OAAI6Q,EAAoB,QAAgB,MACpCA,EAAoB,sBAA8B,aAClDA,EAAoB,SAAiB,OACrCA,EAAoB,YAAoB,OACxCzI,EAAW0I,KAA6B,iBAAfA,IAAIC,QAA4B,MACzD3I,EAAW4I,MAA+B,iBAAhBA,KAAKD,QAA4B,OAC3B,YAAhCxJ,EAAQa,EAAW6I,SAA+B,OAClD7I,EAAW8I,QAAU9I,EAAWqE,SAAiB,UAC9C,MACR,CAVgB,E,cCTjB,IAAIjM,EAAO,EAAQ,MACfF,EAAa,EAAQ,MACrB+H,EAAW,EAAQ,IAEnBxH,EAAaC,UAIjBb,EAAOD,QAAU,SAAUuO,EAAOC,GAChC,IAAIP,EAAIkD,EACR,GAAa,WAAT3C,GAAqBlO,EAAW2N,EAAKM,EAAM3J,YAAcyD,EAAS8I,EAAM3Q,EAAKyN,EAAIM,IAAS,OAAO4C,EACrG,GAAI7Q,EAAW2N,EAAKM,EAAM6C,WAAa/I,EAAS8I,EAAM3Q,EAAKyN,EAAIM,IAAS,OAAO4C,EAC/E,GAAa,WAAT3C,GAAqBlO,EAAW2N,EAAKM,EAAM3J,YAAcyD,EAAS8I,EAAM3Q,EAAKyN,EAAIM,IAAS,OAAO4C,EACrG,MAAM,IAAItQ,EAAW,0CACvB,C,cCdA,IAAI0G,EAAU,EAAQ,MAKtBtH,EAAOD,QAAU4Q,MAAMS,SAAW,SAAiBtQ,GACjD,MAA6B,UAAtBwG,EAAQxG,EACjB,C,cCPA,IAQIuQ,EAAeC,EAAS7H,EAAQ8H,EARhCpJ,EAAa,EAAQ,MACrBqJ,EAAuB,EAAQ,MAC/BC,EAAmC,EAAQ,MAE3CjI,EAAkBrB,EAAWqB,gBAC7BkI,EAAevJ,EAAWuB,YAC1BiI,EAAkBxJ,EAAWyJ,eAC7BC,GAAS,EAGb,GAAIJ,EACFI,EAAS,SAAUC,GACjBtI,EAAgBsI,EAAc,CAAElI,SAAU,CAACkI,IAC7C,OACK,GAAIJ,EAAc,IAClBC,IACHN,EAAgBG,EAAqB,kBACjCH,IAAeM,EAAkBN,EAAcO,iBAGjDD,IACFL,EAAU,IAAIK,EACdlI,EAAS,IAAIiI,EAAa,GAE1BH,EAAU,SAAUO,GAClBR,EAAQS,MAAMC,YAAY,KAAM,CAACF,GACnC,EAE0B,IAAtBrI,EAAOI,aACT0H,EAAQ9H,GACkB,IAAtBA,EAAOI,aAAkBgI,EAASN,IAG5C,CAAE,MAAOxP,GAAqB,CAE9B/B,EAAOD,QAAU8R,C,cClCjB,IAAII,EAAa,EAAQ,MACrBzP,EAAQ,EAAQ,MAChB2F,EAAa,EAAQ,MAErBjF,EAAUiF,EAAWhF,OAGzBnD,EAAOD,UAAYsD,OAAO4M,wBAA0BzN,EAAM,WACxD,IAAI0P,EAASC,OAAO,oBAKpB,OAAQjP,EAAQgP,MAAa7O,OAAO6O,aAAmBC,UAEpDA,OAAOC,MAAQH,GAAcA,EAAa,EAC/C,E,cCjBA,IAAIvP,EAAc,EAAQ,MACtB0O,EAAU,EAAQ,MAElBxQ,EAAaC,UAEbiE,EAA2BzB,OAAOyB,yBAGlCuN,EAAoC3P,IAAgB,WAEtD,QAAa6B,IAATnE,KAAoB,OAAO,EAC/B,IAEEiD,OAAOD,eAAe,GAAI,SAAU,CAAEiB,UAAU,IAASnD,OAAS,CACpE,CAAE,MAAOa,GACP,OAAOA,aAAiBlB,SAC1B,CACF,CATwD,GAWxDb,EAAOD,QAAUsS,EAAoC,SAAUtK,EAAG7G,GAChE,GAAIkQ,EAAQrJ,KAAOjD,EAAyBiD,EAAG,UAAU1D,SACvD,MAAM,IAAIzD,EAAW,gCACrB,OAAOmH,EAAE7G,OAASA,CACtB,EAAI,SAAU6G,EAAG7G,GACf,OAAO6G,EAAE7G,OAASA,CACpB,C,cCzBA,IAAIiH,EAAa,EAAQ,MAGzBnI,EAAOD,QAAU,SAAUuS,EAAaC,GACtC,IAAI/M,EAAW2C,EAAW3C,SACtBgN,EAAoBhN,GAAYA,EAASlB,UACzCsC,EAAS4L,GAAqBA,EAAkBF,GAEhDG,GAAS,EAEb,GAAI7L,EAAQ,IACVA,EAAOrG,KAAK,CACVsF,KAAM,WAAc,MAAO,CAAEQ,MAAM,EAAQ,EAC3C,OAAU,WAAcoM,GAAS,CAAM,IACrC,EACN,CAAE,MAAO1Q,GAEDA,aAAiBwQ,IAAgBE,GAAS,EAClD,CAEA,IAAKA,EAAQ,OAAO7L,CACtB,C,UCrBA,IAAI8L,EAAQ,SAAUpS,GACpB,OAAOA,GAAMA,EAAGwG,OAASA,MAAQxG,CACnC,EAGAN,EAAOD,QAEL2S,EAA2B,iBAAdvK,YAA0BA,aACvCuK,EAAuB,iBAAVzB,QAAsBA,SAEnCyB,EAAqB,iBAARvS,MAAoBA,OACjCuS,EAAuB,iBAAV,YAAsB,aACnCA,EAAqB,iBAARtS,MAAoBA,OAEjC,WAAe,OAAOA,IAAO,CAA7B,IAAoCsE,SAAS,cAATA,E,cCdtC,IAAIhC,EAAc,EAAQ,MACtBiQ,EAAuB,EAAQ,MAC/BC,EAA2B,EAAQ,MAEvC5S,EAAOD,QAAU,SAAUuK,EAAQE,EAAKtI,GAClCQ,EAAaiQ,EAAqBjI,EAAEJ,EAAQE,EAAKoI,EAAyB,EAAG1Q,IAC5EoI,EAAOE,GAAOtI,CACrB,C,UCNA,IAAI2Q,EAAiC,iBAAZrG,UAAwBA,SAASsG,IAK1D9S,EAAOD,QAAgC,oBAAf8S,QAA8CtO,IAAhBsO,EAA4B,SAAU/R,GAC1F,MAA0B,mBAAZA,GAA0BA,IAAa+R,CACvD,EAAI,SAAU/R,GACZ,MAA0B,mBAAZA,CAChB,C,cCVA,IAAI4B,EAAc,EAAQ,MACtBqQ,EAAiB,EAAQ,MACzBC,EAA0B,EAAQ,MAClCvS,EAAW,EAAQ,MACnBwS,EAAgB,EAAQ,MAExBrS,EAAaC,UAEbqS,EAAkB7P,OAAOD,eAEzB+P,EAA4B9P,OAAOyB,yBACnCsO,EAAa,aACbnO,EAAe,eACfoO,EAAW,WAIftT,EAAQ2K,EAAIhI,EAAcsQ,EAA0B,SAAwBjL,EAAGuL,EAAGC,GAIhF,GAHA9S,EAASsH,GACTuL,EAAIL,EAAcK,GAClB7S,EAAS8S,GACQ,oBAANxL,GAA0B,cAANuL,GAAqB,UAAWC,GAAcF,KAAYE,IAAeA,EAAWF,GAAW,CAC5H,IAAIG,EAAUL,EAA0BpL,EAAGuL,GACvCE,GAAWA,EAAQH,KACrBtL,EAAEuL,GAAKC,EAAWrR,MAClBqR,EAAa,CACXrP,aAAce,KAAgBsO,EAAaA,EAAWtO,GAAgBuO,EAAQvO,GAC9EwO,WAAYL,KAAcG,EAAaA,EAAWH,GAAcI,EAAQJ,GACxE/O,UAAU,GAGhB,CAAE,OAAO6O,EAAgBnL,EAAGuL,EAAGC,EACjC,EAAIL,EAAkB,SAAwBnL,EAAGuL,EAAGC,GAIlD,GAHA9S,EAASsH,GACTuL,EAAIL,EAAcK,GAClB7S,EAAS8S,GACLR,EAAgB,IAClB,OAAOG,EAAgBnL,EAAGuL,EAAGC,EAC/B,CAAE,MAAOxR,GAAqB,CAC9B,GAAI,QAASwR,GAAc,QAASA,EAAY,MAAM,IAAI3S,EAAW,2BAErE,MADI,UAAW2S,IAAYxL,EAAEuL,GAAKC,EAAWrR,OACtC6F,CACT,C,cC1CA,IAAI7C,EAAa,EAAQ,MACrB3C,EAAc,EAAQ,MACtBmR,EAA4B,EAAQ,MACpCC,EAA8B,EAAQ,MACtClT,EAAW,EAAQ,MAEnBmT,EAASrR,EAAY,GAAGqR,QAG5B5T,EAAOD,QAAUmF,EAAW,UAAW,YAAc,SAAiB5E,GACpE,IAAIwH,EAAO4L,EAA0BhJ,EAAEjK,EAASH,IAC5C2P,EAAwB0D,EAA4BjJ,EACxD,OAAOuF,EAAwB2D,EAAO9L,EAAMmI,EAAsB3P,IAAOwH,CAC3E,C,cCbA,IAAI+L,EAAa,EAAQ,MAErBjT,EAAaC,UAEjBb,EAAOD,QAAU,SAAUO,GACzB,GAAIuT,EAAWvT,GAAK,MAAM,IAAIM,EAAW,2BACzC,OAAON,CACT,C,cCNA,IAAIwT,EAAgB,EAAQ,MACxBC,EAAyB,EAAQ,MAErC/T,EAAOD,QAAU,SAAUO,GACzB,OAAOwT,EAAcC,EAAuBzT,GAC9C,C,cCNA,IAAI0T,EAAsB,EAAQ,MAE9BC,EAAMnN,KAAKmN,IACXC,EAAMpN,KAAKoN,IAKflU,EAAOD,QAAU,SAAU4N,EAAOzM,GAChC,IAAIiT,EAAUH,EAAoBrG,GAClC,OAAOwG,EAAU,EAAIF,EAAIE,EAAUjT,EAAQ,GAAKgT,EAAIC,EAASjT,EAC/D,C,cCXA,IAAIiH,EAAa,EAAQ,MACrB5F,EAAc,EAAQ,MACtB6R,EAAsB,EAAQ,MAC9BC,EAAU,EAAQ,MAClBC,EAAc,EAAQ,MACtB7E,EAAwB,EAAQ,MAChC8E,EAAqB,EAAQ,MAC7B9C,EAAmC,EAAQ,MAE3CjI,EAAkBrB,EAAWqB,gBAC7BE,EAAcvB,EAAWuB,YACzBgG,EAAWvH,EAAWuH,SACtBwE,EAAMpN,KAAKoN,IACXM,EAAuB9K,EAAYpF,UACnCmQ,EAAoB/E,EAASpL,UAC7Bf,EAAQhB,EAAYiS,EAAqBjR,OACzCmR,EAAcN,EAAoBI,EAAsB,YAAa,OACrEG,EAAgBP,EAAoBI,EAAsB,gBAAiB,OAC3EI,EAAUrS,EAAYkS,EAAkBG,SACxCC,EAAUtS,EAAYkS,EAAkBI,SAE5C7U,EAAOD,SAAW0R,GAAoC8C,IAAuB,SAAUO,EAAaC,EAAWC,GAC7G,IAGIC,EAHApL,EAAa4F,EAAsBqF,GACnCI,OAA8B3Q,IAAdwQ,EAA0BlL,EAAawK,EAAQU,GAC/DI,GAAeT,IAAgBA,EAAYI,GAG/C,GADAR,EAAYQ,GACRrD,IACFqD,EAActL,EAAgBsL,EAAa,CAAElL,SAAU,CAACkL,KACpDjL,IAAeqL,IAAkBF,GAAwBG,IAAc,OAAOL,EAEpF,GAAIjL,GAAcqL,KAAmBF,GAAwBG,GAC3DF,EAAY1R,EAAMuR,EAAa,EAAGI,OAC7B,CACL,IAAInR,EAAUiR,IAAyBG,GAAeR,EAAgB,CAAEA,cAAeA,EAAcG,SAAiBvQ,EACtH0Q,EAAY,IAAIvL,EAAYwL,EAAenR,GAI3C,IAHA,IAAIqR,EAAI,IAAI1F,EAASoF,GACjBO,EAAI,IAAI3F,EAASuF,GACjBK,EAAapB,EAAIgB,EAAerL,GAC3BR,EAAI,EAAGA,EAAIiM,EAAYjM,IAAKwL,EAAQQ,EAAGhM,EAAGuL,EAAQQ,EAAG/L,GAChE,CAEA,OADKoI,GAAkC8C,EAAmBO,GACnDG,CACT,C,cC3CA,IAAInM,EAAQ,EAAQ,MAEpB9I,EAAOD,QAAU,SAAUyK,EAAKtI,GAC9B,OAAO4G,EAAM0B,KAAS1B,EAAM0B,GAAOtI,GAAS,CAAC,EAC/C,C,cCJA,IAAIQ,EAAc,EAAQ,MACtBF,EAAQ,EAAQ,MAChB0N,EAAgB,EAAQ,MAG5BlQ,EAAOD,SAAW2C,IAAgBF,EAAM,WAEtC,OAES,IAFFa,OAAOD,eAAe8M,EAAc,OAAQ,IAAK,CACtDjN,IAAK,WAAc,OAAO,CAAG,IAC5BmS,CACL,E,cCVA,IAAI5U,EAAY,EAAQ,MACpBgH,EAAoB,EAAQ,MAIhCxH,EAAOD,QAAU,SAAUwV,EAAGjC,GAC5B,IAAIkC,EAAOD,EAAEjC,GACb,OAAO9L,EAAkBgO,QAAQjR,EAAY/D,EAAUgV,EACzD,C,cCRA,IAAIjT,EAAc,EAAQ,MACtB/B,EAAY,EAAQ,MACpBiV,EAAc,EAAQ,KAEtBlP,EAAOhE,EAAYA,EAAYgE,MAGnCvG,EAAOD,QAAU,SAAUiO,EAAIH,GAE7B,OADArN,EAAUwN,QACMzJ,IAATsJ,EAAqBG,EAAKyH,EAAclP,EAAKyH,EAAIH,GAAQ,WAC9D,OAAOG,EAAG0H,MAAM7H,EAAM5M,UACxB,CACF,C,cCZA,IAAIqH,EAAS,EAAQ,MACjBqN,EAAM,EAAQ,MAEd7N,EAAOQ,EAAO,QAElBtI,EAAOD,QAAU,SAAUyK,GACzB,OAAO1C,EAAK0C,KAAS1C,EAAK0C,GAAOmL,EAAInL,GACvC,C,cCPA,IAAIjB,EAAc,EAAQ,MAE1BvJ,EAAOD,QAA0B,SAAhBwJ,C,cCFjB,IAAIqM,EAAW,EAAQ,MAIvB5V,EAAOD,QAAU,SAAUmK,GACzB,OAAO0L,EAAS1L,EAAIhJ,OACtB,C,UCNAlB,EAAOD,QAAU,CAAC,C,cCAlB,IAAI8V,EAAgB,EAAQ,MAE5B7V,EAAOD,QAAU,SAAU0B,EAAQ6K,EAAKvI,GACtC,IAAK,IAAIyG,KAAO8B,EAAKuJ,EAAcpU,EAAQ+I,EAAK8B,EAAI9B,GAAMzG,GAC1D,OAAOtC,CACT,C,cCLA,IAAIhB,EAAW,EAAQ,MACnBa,EAAgB,EAAQ,MAG5BtB,EAAOD,QAAU,SAAUoG,EAAU6H,EAAI9L,EAAO4T,GAC9C,IACE,OAAOA,EAAU9H,EAAGvN,EAASyB,GAAO,GAAIA,EAAM,IAAM8L,EAAG9L,EACzD,CAAE,MAAOH,GACPT,EAAc6E,EAAU,QAASpE,EACnC,CACF,C,UCVA/B,EAAOD,SAAU,C,cCAjB,IAAIoI,EAAa,EAAQ,MACrBrD,EAA2B,UAC3BuD,EAA8B,EAAQ,MACtCwN,EAAgB,EAAQ,MACxBE,EAAuB,EAAQ,MAC/BC,EAA4B,EAAQ,MACpCnH,EAAW,EAAQ,MAiBvB7O,EAAOD,QAAU,SAAUgE,EAASU,GAClC,IAGIuB,EAAQvE,EAAQ+I,EAAKyL,EAAgBC,EAAgBzL,EAHrD0L,EAASpS,EAAQtC,OACjB2U,EAASrS,EAAQsS,OACjBC,EAASvS,EAAQwS,KASrB,GANE9U,EADE2U,EACOjO,EACAmO,EACAnO,EAAWgO,IAAWJ,EAAqBI,EAAQ,CAAC,GAEpDhO,EAAWgO,IAAWhO,EAAWgO,GAAQ7R,UAEhD7C,EAAQ,IAAK+I,KAAO/F,EAAQ,CAQ9B,GAPAyR,EAAiBzR,EAAO+F,GACpBzG,EAAQyS,gBACV/L,EAAa3F,EAAyBrD,EAAQ+I,GAC9CyL,EAAiBxL,GAAcA,EAAWvI,OACrC+T,EAAiBxU,EAAO+I,GAC/BxE,EAAS6I,EAASuH,EAAS5L,EAAM2L,GAAUG,EAAS,IAAM,KAAO9L,EAAKzG,EAAQnC,SAEzEoE,QAA6BzB,IAAnB0R,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDD,EAA0BE,EAAgBD,EAC5C,EAEIlS,EAAQqO,MAAS6D,GAAkBA,EAAe7D,OACpD/J,EAA4B6N,EAAgB,QAAQ,GAEtDL,EAAcpU,EAAQ+I,EAAK0L,EAAgBnS,EAC7C,CACF,C,cCrDA,IAAIrB,EAAc,EAAQ,MACtB+T,EAAwB,EAAQ,MAChC5C,EAAa,EAAQ,MAErBW,EAAuB9K,YAAYpF,UAInC5B,KAAiB,aAAc8R,IACjCiC,EAAsBjC,EAAsB,WAAY,CACtDtQ,cAAc,EACdjB,IAAK,WACH,OAAO4Q,EAAWzT,KACpB,G,cCbJ,IAAIsC,EAAc,EAAQ,MACtBiQ,EAAuB,EAAQ,MAC/BC,EAA2B,EAAQ,MAEvC5S,EAAOD,QAAU2C,EAAc,SAAU4H,EAAQE,EAAKtI,GACpD,OAAOyQ,EAAqBjI,EAAEJ,EAAQE,EAAKoI,EAAyB,EAAG1Q,GACzE,EAAI,SAAUoI,EAAQE,EAAKtI,GAEzB,OADAoI,EAAOE,GAAOtI,EACPoI,CACT,C,cCTA,IAAI/H,EAAc,EAAQ,MACtB/B,EAAY,EAAQ,MAExBR,EAAOD,QAAU,SAAUuK,EAAQE,EAAK5D,GACtC,IAEE,OAAOrE,EAAY/B,EAAU6C,OAAOyB,yBAAyBwF,EAAQE,GAAK5D,IAC5E,CAAE,MAAO7E,GAAqB,CAChC,C,cCRA,IAAIW,EAAc,EAAQ,MACtBsQ,EAA0B,EAAQ,MAClCL,EAAuB,EAAQ,MAC/BlS,EAAW,EAAQ,MACnB0J,EAAkB,EAAQ,MAC1BuM,EAAa,EAAQ,MAKzB3W,EAAQ2K,EAAIhI,IAAgBsQ,EAA0B3P,OAAOsT,iBAAmB,SAA0B5O,EAAG+E,GAC3GrM,EAASsH,GACT,IAIIyC,EAJAoM,EAAQzM,EAAgB2C,GACxBhF,EAAO4O,EAAW5J,GAClB5L,EAAS4G,EAAK5G,OACdyM,EAAQ,EAEZ,MAAOzM,EAASyM,EAAOgF,EAAqBjI,EAAE3C,EAAGyC,EAAM1C,EAAK6F,KAAUiJ,EAAMpM,IAC5E,OAAOzC,CACT,C,UCnBA,IAAI7E,EAAUC,OAEdnD,EAAOD,QAAU,SAAUe,GACzB,IACE,OAAOoC,EAAQpC,EACjB,CAAE,MAAOiB,GACP,MAAO,QACT,CACF,C,UCRA,IAAInB,EAAaC,UACbgW,EAAmB,iBAEvB7W,EAAOD,QAAU,SAAUO,GACzB,GAAIA,EAAKuW,EAAkB,MAAMjW,EAAW,kCAC5C,OAAON,CACT,C,cCNA,IAAID,EAAa,EAAQ,MACrBsS,EAAuB,EAAQ,MAC/B9O,EAAc,EAAQ,KACtBkS,EAAuB,EAAQ,MAEnC/V,EAAOD,QAAU,SAAUgI,EAAGyC,EAAKtI,EAAO6B,GACnCA,IAASA,EAAU,CAAC,GACzB,IAAI+S,EAAS/S,EAAQ0P,WACjB3P,OAAwBS,IAAjBR,EAAQD,KAAqBC,EAAQD,KAAO0G,EAEvD,GADInK,EAAW6B,IAAQ2B,EAAY3B,EAAO4B,EAAMC,GAC5CA,EAAQsS,OACNS,EAAQ/O,EAAEyC,GAAOtI,EAChB6T,EAAqBvL,EAAKtI,OAC1B,CACL,IACO6B,EAAQgT,OACJhP,EAAEyC,KAAMsM,GAAS,UADE/O,EAAEyC,EAEhC,CAAE,MAAOzI,GAAqB,CAC1B+U,EAAQ/O,EAAEyC,GAAOtI,EAChByQ,EAAqBjI,EAAE3C,EAAGyC,EAAK,CAClCtI,MAAOA,EACPuR,YAAY,EACZvP,cAAeH,EAAQiT,gBACvB3S,UAAWN,EAAQkT,aAEvB,CAAE,OAAOlP,CACX,C,cC1BA,IAAImP,EAAwB,EAAQ,MAChC7W,EAAa,EAAQ,MACrB8W,EAAa,EAAQ,MACrBzP,EAAkB,EAAQ,MAE1BiD,EAAgBjD,EAAgB,eAChCN,EAAU/D,OAGV+T,EAAwE,cAApDD,EAAW,WAAc,OAAOlW,SAAW,CAAhC,IAG/BoW,EAAS,SAAU/W,EAAIkK,GACzB,IACE,OAAOlK,EAAGkK,EACZ,CAAE,MAAOzI,GAAqB,CAChC,EAGA/B,EAAOD,QAAUmX,EAAwBC,EAAa,SAAU7W,GAC9D,IAAIyH,EAAGuP,EAAKhV,EACZ,YAAciC,IAAPjE,EAAmB,YAAqB,OAAPA,EAAc,OAEO,iBAAjDgX,EAAMD,EAAOtP,EAAIX,EAAQ9G,GAAKqK,IAA8B2M,EAEpEF,EAAoBD,EAAWpP,GAEF,YAA5BzF,EAAS6U,EAAWpP,KAAoB1H,EAAW0H,EAAEwP,QAAU,YAAcjV,CACpF,C,cC5BA,IAAIkV,EAAc,EAAQ,MACtBrJ,EAAW,EAAQ,KAIvBnO,EAAOD,QAAU,SAAUe,GACzB,IAAI0J,EAAMgN,EAAY1W,EAAU,UAChC,OAAOqN,EAAS3D,GAAOA,EAAMA,EAAM,EACrC,C,UCRAxK,EAAOD,QAAU,SAAU0X,EAAQvV,GACjC,MAAO,CACLuR,aAAuB,EAATgE,GACdvT,eAAyB,EAATuT,GAChBpT,WAAqB,EAAToT,GACZvV,MAAOA,EAEX,C,cCNA,IAAIwV,EAAgB,EAAQ,MAE5B1X,EAAOD,QAAU2X,IACdvF,OAAOC,MACkB,iBAAnBD,OAAOhM,Q,cCLhB,IAAI5D,EAAc,EAAQ,MACtBC,EAAQ,EAAQ,MAChB8E,EAAU,EAAQ,MAElBF,EAAU/D,OACVO,EAAQrB,EAAY,GAAGqB,OAG3B5D,EAAOD,QAAUyC,EAAM,WAGrB,OAAQ4E,EAAQ,KAAKuQ,qBAAqB,EAC5C,GAAK,SAAUrX,GACb,MAAuB,WAAhBgH,EAAQhH,GAAmBsD,EAAMtD,EAAI,IAAM8G,EAAQ9G,EAC5D,EAAI8G,C,cCdJ,IAAI1E,EAAc,EAAQ,MACtBnC,EAAO,EAAQ,MACfqX,EAA6B,EAAQ,MACrChF,EAA2B,EAAQ,MACnCzI,EAAkB,EAAQ,MAC1B8I,EAAgB,EAAQ,MACxBxQ,EAAS,EAAQ,MACjBsQ,EAAiB,EAAQ,MAGzBI,EAA4B9P,OAAOyB,yBAIvC/E,EAAQ2K,EAAIhI,EAAcyQ,EAA4B,SAAkCpL,EAAGuL,GAGzF,GAFAvL,EAAIoC,EAAgBpC,GACpBuL,EAAIL,EAAcK,GACdP,EAAgB,IAClB,OAAOI,EAA0BpL,EAAGuL,EACtC,CAAE,MAAOvR,GAAqB,CAC9B,GAAIU,EAAOsF,EAAGuL,GAAI,OAAOV,GAA0BrS,EAAKqX,EAA2BlN,EAAG3C,EAAGuL,GAAIvL,EAAEuL,GACjG,C,cCrBA,IAAInL,EAAa,EAAQ,MACrBiM,EAAsB,EAAQ,MAC9B9M,EAAU,EAAQ,MAElBoC,EAAcvB,EAAWuB,YACzB7I,EAAYsH,EAAWtH,UAK3Bb,EAAOD,QAAU2J,GAAe0K,EAAoB1K,EAAYpF,UAAW,aAAc,QAAU,SAAUyD,GAC3G,GAAmB,gBAAfT,EAAQS,GAAsB,MAAM,IAAIlH,EAAU,wBACtD,OAAOkH,EAAE8B,UACX,C,cCbA,IAAIsN,EAAa,EAAQ,MACrB5U,EAAc,EAAQ,MAE1BvC,EAAOD,QAAU,SAAUiO,GAIzB,GAAuB,aAAnBmJ,EAAWnJ,GAAoB,OAAOzL,EAAYyL,EACxD,C,cCRA,IAAI7M,EAAI,EAAQ,MACZZ,EAAO,EAAQ,MACfa,EAAU,EAAQ,MAClBZ,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBY,EAAoB,EAAQ,MAC5BC,EAAgB,EAAQ,MACxBC,EAA2C,EAAQ,MAEnDsW,EAAoCtW,EAAyC,UAAWV,WAI5FM,EAAE,CAAEM,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQiW,GAAqC,CAC5FC,QAAS,SAAiB9J,GACxBvN,EAASL,MACT,IACEI,EAAUwN,EACZ,CAAE,MAAOjM,GACPT,EAAclB,KAAM,QAAS2B,EAC/B,CAEA,GAAI8V,EAAmC,OAAOtX,EAAKsX,EAAmCzX,KAAM4N,GAE5F,IAAIhM,EAASX,EAAkBjB,MAC3B6B,EAAU,EACdb,EAAQY,EAAQ,SAAUE,GACxB8L,EAAG9L,EAAOD,IACZ,EAAG,CAAEG,WAAW,GAClB,G,cC7BF,IAAIiD,EAAU,EAAQ,MAClB8C,EAAa,EAAQ,MACrB4N,EAAuB,EAAQ,MAE/BgC,EAAS,qBACTjP,EAAQ9I,EAAOD,QAAUoI,EAAW4P,IAAWhC,EAAqBgC,EAAQ,CAAC,IAEhFjP,EAAMkP,WAAalP,EAAMkP,SAAW,KAAK3N,KAAK,CAC7CyG,QAAS,SACTmH,KAAM5S,EAAU,OAAS,SACzB6S,UAAW,yGACXC,QAAS,2DACT1T,OAAQ,uC,cCZV,IAcI+N,EAAmB4F,EAAmCC,EAdtD7V,EAAQ,EAAQ,MAChBnC,EAAa,EAAQ,MACrB+H,EAAW,EAAQ,IACnByE,EAAS,EAAQ,MACjBhC,EAAiB,EAAQ,MACzBgL,EAAgB,EAAQ,MACxBnO,EAAkB,EAAQ,MAC1BrC,EAAU,EAAQ,MAElBsC,EAAWD,EAAgB,YAC3B4Q,GAAyB,EAOzB,GAAGxQ,OACLuQ,EAAgB,GAAGvQ,OAEb,SAAUuQ,GAEdD,EAAoCvN,EAAeA,EAAewN,IAC9DD,IAAsC/U,OAAOiB,YAAWkO,EAAoB4F,IAHlDE,GAAyB,GAO3D,IAAIC,GAA0BnQ,EAASoK,IAAsBhQ,EAAM,WACjE,IAAI8D,EAAO,CAAC,EAEZ,OAAOkM,EAAkB7K,GAAUpH,KAAK+F,KAAUA,CACpD,GAEIiS,EAAwB/F,EAAoB,CAAC,EACxCnN,IAASmN,EAAoB3F,EAAO2F,IAIxCnS,EAAWmS,EAAkB7K,KAChCkO,EAAcrD,EAAmB7K,EAAU,WACzC,OAAOvH,IACT,GAGFJ,EAAOD,QAAU,CACfyS,kBAAmBA,EACnB8F,uBAAwBA,E,cC9C1B,IAAItE,EAAsB,EAAQ,MAC9B4B,EAAW,EAAQ,MAEnB4C,EAAcC,WAIlBzY,EAAOD,QAAU,SAAUO,GACzB,QAAWiE,IAAPjE,EAAkB,OAAO,EAC7B,IAAI4I,EAAS8K,EAAoB1T,GAC7BY,EAAS0U,EAAS1M,GACtB,GAAIA,IAAWhI,EAAQ,MAAM,IAAIsX,EAAY,yBAC7C,OAAOtX,CACT,C,cCbA,IAAIuB,EAAS,EAAQ,MACjBiW,EAAU,EAAQ,MAClBC,EAAiC,EAAQ,MACzChG,EAAuB,EAAQ,MAEnC3S,EAAOD,QAAU,SAAU0B,EAAQgD,EAAQmU,GAIzC,IAHA,IAAI9Q,EAAO4Q,EAAQjU,GACfrB,EAAiBuP,EAAqBjI,EACtC5F,EAA2B6T,EAA+BjO,EACrDrB,EAAI,EAAGA,EAAIvB,EAAK5G,OAAQmI,IAAK,CACpC,IAAImB,EAAM1C,EAAKuB,GACV5G,EAAOhB,EAAQ+I,IAAUoO,GAAcnW,EAAOmW,EAAYpO,IAC7DpH,EAAe3B,EAAQ+I,EAAK1F,EAAyBL,EAAQ+F,GAEjE,CACF,C,cCfA,IAAIhD,EAAoB,EAAQ,MAE5B5G,EAAaC,UAIjBb,EAAOD,QAAU,SAAUO,GACzB,GAAIkH,EAAkBlH,GAAK,MAAM,IAAIM,EAAW,wBAA0BN,GAC1E,OAAOA,CACT,C,cCTA,IAAI6H,EAAa,EAAQ,MACrB9H,EAAa,EAAQ,MAErBwY,EAAY,SAAU/X,GACxB,OAAOT,EAAWS,GAAYA,OAAWyD,CAC3C,EAEAvE,EAAOD,QAAU,SAAU+Y,EAAWlS,GACpC,OAAO3F,UAAUC,OAAS,EAAI2X,EAAU1Q,EAAW2Q,IAAc3Q,EAAW2Q,IAAc3Q,EAAW2Q,GAAWlS,EAClH,C,UCRA5G,EAAOD,QAAgC,oBAAf2J,aAAiD,oBAAZgG,Q,cCD7D,IAAIvO,EAAI,EAAQ,MACZ4X,EAAY,EAAQ,MAIpBA,GAAW5X,EAAE,CAAEM,OAAQ,cAAeC,OAAO,GAAQ,CACvDsX,sBAAuB,WACrB,OAAOD,EAAU3Y,KAAMa,UAAUC,OAASD,UAAU,QAAKsD,GAAW,EACtE,G,cCRF,IAAIyP,EAAsB,EAAQ,MAE9BE,EAAMpN,KAAKoN,IAIflU,EAAOD,QAAU,SAAUe,GACzB,IAAI0P,EAAMwD,EAAoBlT,GAC9B,OAAO0P,EAAM,EAAI0D,EAAI1D,EAAK,kBAAoB,CAChD,C,cCTA,IAAIrP,EAAI,EAAQ,MACZ4X,EAAY,EAAQ,MAIpBA,GAAW5X,EAAE,CAAEM,OAAQ,cAAeC,OAAO,GAAQ,CACvDkI,SAAU,WACR,OAAOmP,EAAU3Y,KAAMa,UAAUC,OAASD,UAAU,QAAKsD,GAAW,EACtE,G,cCRF,IAAIpD,EAAI,EAAQ,MACZgH,EAAa,EAAQ,MACrB8Q,EAAa,EAAQ,KACrBxY,EAAW,EAAQ,MACnBJ,EAAa,EAAQ,MACrBwK,EAAiB,EAAQ,MACzB4L,EAAwB,EAAQ,MAChCyC,EAAiB,EAAQ,MACzB1W,EAAQ,EAAQ,MAChBC,EAAS,EAAQ,MACjBiF,EAAkB,EAAQ,MAC1B8K,EAAoB,0BACpB9P,EAAc,EAAQ,MACtB2C,EAAU,EAAQ,MAElB8T,EAAc,cACdxR,EAAW,WACXgD,EAAgBjD,EAAgB,eAEhC9G,EAAaC,UACbuY,EAAiBjR,EAAWR,GAG5B3B,EAASX,IACPhF,EAAW+Y,IACZA,EAAe9U,YAAckO,IAE5BhQ,EAAM,WAAc4W,EAAe,CAAC,EAAI,GAE1CC,EAAsB,WAExB,GADAJ,EAAW7Y,KAAMoS,GACb3H,EAAezK,QAAUoS,EAAmB,MAAM,IAAI5R,EAAW,qDACvE,EAEI0Y,EAAkC,SAAU9O,EAAKtI,GAC/CQ,EACF+T,EAAsBjE,EAAmBhI,EAAK,CAC5CtG,cAAc,EACdjB,IAAK,WACH,OAAOf,CACT,EACA8F,IAAK,SAAU4G,GAEb,GADAnO,EAASL,MACLA,OAASoS,EAAmB,MAAM,IAAI5R,EAAW,oCACjD6B,EAAOrC,KAAMoK,GAAMpK,KAAKoK,GAAOoE,EAC9BsK,EAAe9Y,KAAMoK,EAAKoE,EACjC,IAEG4D,EAAkBhI,GAAOtI,CAClC,EAEKO,EAAO+P,EAAmB7H,IAAgB2O,EAAgC3O,EAAehD,IAE1F3B,GAAWvD,EAAO+P,EAAmB2G,IAAgB3G,EAAkB2G,KAAiB9V,QAC1FiW,EAAgCH,EAAaE,GAG/CA,EAAoB/U,UAAYkO,EAIhCrR,EAAE,CAAEkV,QAAQ,EAAMjS,aAAa,EAAMxC,OAAQoE,GAAU,CACrDR,SAAU6T,G,cC9DZ,IAAIlR,EAAa,EAAQ,MACrBG,EAAS,EAAQ,MACjB7F,EAAS,EAAQ,MACjBkT,EAAM,EAAQ,MACd+B,EAAgB,EAAQ,MACxBvQ,EAAoB,EAAQ,MAE5BgL,EAAShK,EAAWgK,OACpBoH,EAAwBjR,EAAO,OAC/BkR,EAAwBrS,EAAoBgL,EAAO,QAAUA,EAASA,GAAUA,EAAOsH,eAAiB9D,EAE5G3V,EAAOD,QAAU,SAAU+D,GAKvB,OAJGrB,EAAO8W,EAAuBzV,KACjCyV,EAAsBzV,GAAQ4T,GAAiBjV,EAAO0P,EAAQrO,GAC1DqO,EAAOrO,GACP0V,EAAsB,UAAY1V,IAC/ByV,EAAsBzV,EACjC,C,cCjBA,IAAI8D,EAAqB,EAAQ,MAC7BC,EAAc,EAAQ,MAEtBW,EAAaX,EAAY+L,OAAO,SAAU,aAK9C7T,EAAQ2K,EAAIrH,OAAOqW,qBAAuB,SAA6B3R,GACrE,OAAOH,EAAmBG,EAAGS,EAC/B,C,cCVA,IAAIJ,EAAW,EAAQ,IAEnBlF,EAAUC,OACVvC,EAAaC,UAGjBb,EAAOD,QAAU,SAAUe,GACzB,GAAIsH,EAAStH,GAAW,OAAOA,EAC/B,MAAM,IAAIF,EAAWsC,EAAQpC,GAAY,oBAC3C,C,cCTA,IAAIqH,EAAa,EAAQ,MACrB9H,EAAa,EAAQ,MAErBqI,EAAUP,EAAWO,QAEzB1I,EAAOD,QAAUM,EAAWqI,IAAY,cAAcpC,KAAKnD,OAAOuF,G,cCLlE,IAAInI,EAAO,EAAQ,MACfE,EAAW,EAAQ,MACnBY,EAAoB,EAAQ,MAC5BV,EAAoB,EAAQ,KAEhCX,EAAOD,QAAU,SAAUmK,EAAKyP,GACzBA,GAAiC,kBAARzP,GAAkBzJ,EAASyJ,GACzD,IAAItD,EAASjG,EAAkBuJ,GAC/B,OAAO7I,EAAkBZ,OAAoB8D,IAAXqC,EAAuBrG,EAAKqG,EAAQsD,GAAOA,GAC/E,C,cCTA,IAAIxH,EAAc,EAAQ,MACtBF,EAAQ,EAAQ,MAIpBxC,EAAOD,QAAU2C,GAAeF,EAAM,WAEpC,OAGiB,KAHVa,OAAOD,eAAe,WAA0B,EAAG,YAAa,CACrElB,MAAO,GACPmC,UAAU,IACTC,SACL,E,UCVAtE,EAAOD,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,U,YCRF,IAAI6Z,EAAwB,CAAC,EAAEjC,qBAE3B7S,EAA2BzB,OAAOyB,yBAGlC+U,EAAc/U,IAA6B8U,EAAsBrZ,KAAK,CAAE,EAAG,GAAK,GAIpFR,EAAQ2K,EAAImP,EAAc,SAA8BtE,GACtD,IAAI9K,EAAa3F,EAAyB1E,KAAMmV,GAChD,QAAS9K,GAAcA,EAAWgJ,UACpC,EAAImG,C,cCZJ,IAAI7F,EAAyB,EAAQ,MAEjC3M,EAAU/D,OAIdrD,EAAOD,QAAU,SAAUe,GACzB,OAAOsG,EAAQ2M,EAAuBjT,GACxC,C,UCRAd,EAAOD,QAAU,SAAU+Z,GACzB,IACE,QAASA,GACX,CAAE,MAAO/X,GACP,OAAO,CACT,CACF,C,cCNA,IAAIQ,EAAc,EAAQ,MACtBkM,EAAW,EAAQ,MAEnBjI,EAAiBjE,EAAY,CAAC,EAAEiE,gBAKpCxG,EAAOD,QAAUsD,OAAOZ,QAAU,SAAgBnC,EAAIkK,GACpD,OAAOhE,EAAeiI,EAASnO,GAAKkK,EACtC,C,cCVA,IAAInK,EAAa,EAAQ,MACrBK,EAAc,EAAQ,MAEtBE,EAAaC,UAGjBb,EAAOD,QAAU,SAAUe,GACzB,GAAIT,EAAWS,GAAW,OAAOA,EACjC,MAAM,IAAIF,EAAWF,EAAYI,GAAY,qBAC/C,C,cCTA,IAAIqH,EAAa,EAAQ,MACrB4R,EAAU,EAAQ,MAEtB/Z,EAAOD,QAAU,SAAU+D,GACzB,GAAIiW,EAAS,CACX,IACE,OAAO5R,EAAW6I,QAAQgJ,iBAAiBlW,EAC7C,CAAE,MAAO/B,GAAqB,CAC9B,IAEE,OAAO2C,SAAS,mBAAqBZ,EAAO,KAArCY,EACT,CAAE,MAAO3C,GAAqB,CAChC,CACF,C,cCbA,IAAIoG,EAAa,EAAQ,MAGrB/E,EAAiBC,OAAOD,eAE5BpD,EAAOD,QAAU,SAAUyK,EAAKtI,GAC9B,IACEkB,EAAe+E,EAAYqC,EAAK,CAAEtI,MAAOA,EAAOgC,cAAc,EAAMG,UAAU,GAChF,CAAE,MAAOtC,GACPoG,EAAWqC,GAAOtI,CACpB,CAAE,OAAOA,CACX,C,cCXA,IAAI3B,EAAO,EAAQ,MACfsM,EAAS,EAAQ,MACjBxE,EAA8B,EAAQ,MACtC4R,EAAiB,EAAQ,MACzBvS,EAAkB,EAAQ,MAC1B7E,EAAsB,EAAQ,MAC9B0E,EAAY,EAAQ,MACpBiL,EAAoB,0BACpB0H,EAAyB,EAAQ,MACjC5Y,EAAgB,EAAQ,MACxB6Y,EAAmB,EAAQ,MAE3BxP,EAAgBjD,EAAgB,eAChC0S,EAAkB,iBAClBC,EAA0B,uBAC1BC,EAAS,SACTC,EAAQ,QACRC,EAAmB3X,EAAoBmF,IAEvCyS,EAA+B,SAAU1M,GAC3C,IAAI/K,EAAmBH,EAAoB8F,UAAUoF,EAAcsM,EAA0BD,GAE7F,OAAOH,EAAepN,EAAO2F,GAAoB,CAC/C3M,KAAM,WACJ,IAAIrB,EAAQxB,EAAiB5C,MAI7B,GAAI2N,EAAa,OAAOvJ,EAAMkW,cAC9B,GAAIlW,EAAM6B,KAAM,OAAO6T,OAAuB3V,GAAW,GACzD,IACE,IAAIjC,EAASkC,EAAMkW,cACnB,OAAOlW,EAAMmW,oBAAsBrY,EAAS4X,EAAuB5X,EAAQkC,EAAM6B,KACnF,CAAE,MAAOtE,GAEP,MADAyC,EAAM6B,MAAO,EACPtE,CACR,CACF,EACA,OAAU,WACR,IAAIyC,EAAQxB,EAAiB5C,MACzB+F,EAAW3B,EAAM2B,SAErB,GADA3B,EAAM6B,MAAO,EACT0H,EAAa,CACf,IAAI6M,EAAerT,EAAUpB,EAAU,UACvC,OAAOyU,EAAera,EAAKqa,EAAczU,GAAY+T,OAAuB3V,GAAW,EACzF,CACA,GAAIC,EAAM0B,MAAO,IACf5E,EAAckD,EAAM0B,MAAMC,SAAUmU,EACtC,CAAE,MAAOvY,GACP,OAAOT,EAAc6E,EAAUoU,EAAOxY,EACxC,CACA,GAAIyC,EAAMqW,UAAW,IACnBV,EAAiB3V,EAAMqW,UAAWP,EACpC,CAAE,MAAOvY,GACP,OAAOT,EAAc6E,EAAUoU,EAAOxY,EACxC,CAEA,OADIoE,GAAU7E,EAAc6E,EAAUmU,GAC/BJ,OAAuB3V,GAAW,EAC3C,GAEJ,EAEIuW,EAAgCL,GAA6B,GAC7DM,EAA0BN,GAA6B,GAE3DpS,EAA4B0S,EAAyBpQ,EAAe,mBAEpE3K,EAAOD,QAAU,SAAU2a,EAAa3M,EAAaiN,GACnD,IAAI/U,EAAgB,SAAkBjE,EAAQwC,GACxCA,GACFA,EAAM2B,SAAWnE,EAAOmE,SACxB3B,EAAMqB,KAAO7D,EAAO6D,MACfrB,EAAQxC,EACfwC,EAAMqE,KAAOkF,EAAcsM,EAA0BD,EACrD5V,EAAMmW,sBAAwBK,EAC9BxW,EAAMkW,YAAcA,EACpBlW,EAAMvC,QAAU,EAChBuC,EAAM6B,MAAO,EACbmU,EAAiBpa,KAAMoE,EACzB,EAIA,OAFAyB,EAAc3B,UAAYyJ,EAAc+M,EAAgCC,EAEjE9U,CACT,C,cCpFA,IAAIwP,EAAc,EAAQ,KAEtB7Q,EAAoBF,SAASJ,UAC7B/D,EAAOqE,EAAkBrE,KAEzB0a,EAAsBxF,GAAe7Q,EAAkB2B,KAAKA,KAAKhG,EAAMA,GAE3EP,EAAOD,QAAU0V,EAAcwF,EAAsB,SAAUjN,GAC7D,OAAO,WACL,OAAOzN,EAAKmV,MAAM1H,EAAI/M,UACxB,CACF,C,cCXA,IAOIia,EAAOpK,EAPP3I,EAAa,EAAQ,MACrBoH,EAAY,EAAQ,MAEpByB,EAAU7I,EAAW6I,QACrBD,EAAO5I,EAAW4I,KAClBiH,EAAWhH,GAAWA,EAAQgH,UAAYjH,GAAQA,EAAKD,QACvDqK,EAAKnD,GAAYA,EAASmD,GAG1BA,IACFD,EAAQC,EAAGvX,MAAM,KAGjBkN,EAAUoK,EAAM,GAAK,GAAKA,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7DpK,GAAWvB,IACd2L,EAAQ3L,EAAU2L,MAAM,iBACnBA,GAASA,EAAM,IAAM,MACxBA,EAAQ3L,EAAU2L,MAAM,iBACpBA,IAAOpK,GAAWoK,EAAM,MAIhClb,EAAOD,QAAU+Q,C,cC1BjB,IAAIvQ,EAAO,EAAQ,MACfE,EAAW,EAAQ,MACnB8G,EAAY,EAAQ,MAExBvH,EAAOD,QAAU,SAAUoG,EAAUiD,EAAMlH,GACzC,IAAIkZ,EAAaC,EACjB5a,EAAS0F,GACT,IAEE,GADAiV,EAAc7T,EAAUpB,EAAU,WAC7BiV,EAAa,CAChB,GAAa,UAAThS,EAAkB,MAAMlH,EAC5B,OAAOA,CACT,CACAkZ,EAAc7a,EAAK6a,EAAajV,EAClC,CAAE,MAAOpE,GACPsZ,GAAa,EACbD,EAAcrZ,CAChB,CACA,GAAa,UAATqH,EAAkB,MAAMlH,EAC5B,GAAImZ,EAAY,MAAMD,EAEtB,OADA3a,EAAS2a,GACFlZ,CACT,C,cCtBA,IAAIuT,EAAc,EAAQ,KAEtBlV,EAAOmE,SAASJ,UAAU/D,KAE9BP,EAAOD,QAAU0V,EAAclV,EAAKgG,KAAKhG,GAAQ,WAC/C,OAAOA,EAAKmV,MAAMnV,EAAMU,UAC1B,C,cCNA,IAAIkJ,EAAkB,EAAQ,MAC1BmR,EAAkB,EAAQ,MAC1BnO,EAAoB,EAAQ,MAG5BoO,EAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAOC,EAAIC,GAC1B,IAAI5T,EAAIoC,EAAgBsR,GACpBva,EAASiM,EAAkBpF,GAC/B,GAAe,IAAX7G,EAAc,OAAQsa,IAAgB,EAC1C,IACItZ,EADAyL,EAAQ2N,EAAgBK,EAAWza,GAIvC,GAAIsa,GAAeE,IAAOA,GAAI,MAAOxa,EAASyM,EAG5C,GAFAzL,EAAQ6F,EAAE4F,KAENzL,IAAUA,EAAO,OAAO,OAEvB,KAAMhB,EAASyM,EAAOA,IAC3B,IAAK6N,GAAe7N,KAAS5F,IAAMA,EAAE4F,KAAW+N,EAAI,OAAOF,GAAe7N,GAAS,EACnF,OAAQ6N,IAAgB,CAC5B,CACF,EAEAxb,EAAOD,QAAU,CAGf6b,SAAUL,GAAa,GAGvBnR,QAASmR,GAAa,G,GC/BpBM,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBxX,IAAjByX,EACH,OAAOA,EAAajc,QAGrB,IAAIC,EAAS6b,EAAyBE,GAAY,CAGjDhc,QAAS,CAAC,GAOX,OAHAkc,EAAoBF,GAAUxb,KAAKP,EAAOD,QAASC,EAAQA,EAAOD,QAAS+b,GAGpE9b,EAAOD,OACf,C,MCrBA+b,EAAoBI,EAAI,CAACnc,EAASoc,KACjC,IAAI,IAAI3R,KAAO2R,EACXL,EAAoBM,EAAED,EAAY3R,KAASsR,EAAoBM,EAAErc,EAASyK,IAC5EnH,OAAOD,eAAerD,EAASyK,EAAK,CAAEiJ,YAAY,EAAMxQ,IAAKkZ,EAAW3R,K,WCJ3EsR,EAAoBM,EAAI,CAAClS,EAAKmS,IAAUhZ,OAAOiB,UAAUkC,eAAejG,KAAK2J,EAAKmS,E,WCAlFP,EAAoBQ,EAAI,E,cCGxB,G,wBAAsB,qBAAXrL,OAAwB,CACjC,IAAIsL,EAAgBtL,OAAOzE,SAAS+P,cAWhCjQ,EAAMiQ,GAAiBA,EAAcjQ,IAAI4O,MAAM,2BAC/C5O,IACF,IAA0BA,EAAI,GAElC,CCnBA,IAAIkQ,EAAS,WAAkB,IAAIC,EAAIrc,KAAKsc,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,oBAAoBzQ,MAAO,CAAE0Q,MAAOJ,EAAII,MAAOC,OAAQL,EAAIK,SAAW,CAAEL,EAAIM,aAAa7b,OAAQwb,EAAG,MAAM,CAACE,YAAY,mBAAmBH,EAAIO,GAAIP,EAAIM,aAAc,SAASE,EAAOC,GAAU,OAAOR,EAAG,MAAM,CAAClS,IAAI0S,GAAUT,EAAIO,GAAIC,EAAOE,MAAO,SAASC,EAAKC,GAAQ,OAAOX,EAAG,MAAM,CAAClS,IAAI,GAAG0S,KAAYG,IAAST,YAAY,aAAa,CAACF,EAAG,MAAM,CAACE,YAAY,eAAeU,GAAG,CAAC,UAAY,SAASC,GAAQ,OAAOd,EAAIe,WAAWN,EAAUG,EAAO,EAAE,WAAa,SAASE,GAAQ,OAAOd,EAAIe,WAAWN,EAAUG,EAAO,IAAI,CAACX,EAAG,MAAM,CAACE,YAAY,cAAca,MAAM,CAAE,iBAAkBP,IAAaT,EAAIiB,kBAAoBL,IAAWZ,EAAIkB,oBAAqB,CAACjB,EAAG,UAAU,CAACkB,IAAI,OAAOV,KAAYG,IAASQ,UAAS,EAAKC,MAAM,CAAC,KAAOV,EAAK,MAAQX,EAAIsB,OAAOT,GAAG,CAAC,UAAY,SAASC,GAAQ,OAAOd,EAAIuB,UAAUT,EAAQL,EAAUG,EAAO,KAAKX,EAAG,MAAM,CAACE,YAAY,UAAUU,GAAG,CAAC,UAAYb,EAAIwB,gBAAgB,UAAYxB,EAAIwB,gBAAgB,MAAQ,SAASV,GAAQ,OAAOd,EAAIyB,mBAAmBhB,EAAUG,EAAQE,EAAO,EAAE,SAAW,SAASA,GAAQ,OAAOd,EAAIyB,mBAAmBhB,EAAUG,EAAQE,EAAO,IAAI,CAAEd,EAAI0B,cAAgB1B,EAAI2B,sBAAwBlB,GAAYT,EAAI4B,mBAAqBhB,GAAUZ,EAAI6B,gBAAkB7B,EAAI8B,eAAgB7B,EAAG,MAAM,CAACE,YAAY,kBAAkBzQ,MAAO,CACr1CqS,KAAS/B,EAAIgC,gBAAgBxX,EAAIwV,EAAIiC,aAAazX,EAA5C,KACN0X,IAAQlC,EAAIgC,gBAAgBG,EAAInC,EAAIiC,aAAaE,EAA5C,KACL/B,MAAUJ,EAAI6B,eAAezB,MAAQJ,EAAIiC,aAAazX,EAA/C,KACP6V,OAAWL,EAAI6B,eAAexB,OAASL,EAAIiC,aAAaE,EAAhD,OACN,CAACnC,EAAIoC,GAAGpC,EAAI6B,eAAezV,KAAO,WAAW4T,EAAI6B,eAAezV,OAAS,SAAS,WAAW,MAAO,CAAC4T,EAAIoC,GAAG,SAAS,KAAK,CAAC,OAASpC,EAAI6B,eAAe,YAAa,IAAQ,EAAE,CAAC,OAAS7B,EAAI6B,eAAe,YAAa,KAAS,GAAG7B,EAAIqC,KAAKrC,EAAIO,GAAIC,EAAO8B,WAAW1B,GAAS,SAAS/S,GAAQ,OAAOoS,EAAG,mBAAmB,CAAClS,IAAIF,EAAOqF,GAAGiO,IAAI,YAAYV,KAAYG,KAAU/S,EAAOqF,KAAKkO,UAAS,EAAKC,MAAM,CAAC,OAASxT,EAAO,cAAcmS,EAAIuC,sBAAsB9B,EAAUG,GAAQ,aAAaZ,EAAIwC,aAAa/B,EAAUG,GAAQ,cAAcZ,EAAIyC,cAAchC,EAAUG,GAAQ,YAAYZ,EAAI0C,SAAS,YAAaC,GAAY3C,EAAI4C,aAAanC,EAAU5S,EAAOqF,GAAIyP,GAAS,YAAYE,IAAM7C,EAAI8C,aAAarC,EAAU5S,EAAOqF,IAAI,eAAe6P,IAAM/C,EAAIgD,gBAAgBvC,EAAU5S,EAAOqF,IAAI,gBAAgB+P,CAACC,EAAQC,EAAQC,EAAeC,IAAcrD,EAAIsD,qBAAqB7C,EAAUG,EAAQ/S,EAAQqV,EAAQC,EAAQC,EAAeC,GAAW,eAAerD,EAAIuD,uBAAuB,cAAcvD,EAAIwD,oBAAoB,4BAA4BxD,EAAIyD,mBAAqBzD,EAAI0D,gBAAkB1D,EAAI0D,eAAexQ,KAAOrF,EAAOqF,GAAG,sBAAsB8M,EAAI2D,uBAAuB,oBAAoBlD,EAAS,qBAAqBG,EAAO,wBAAwBZ,EAAI4D,iBAAiB,yBAAyB5D,EAAI6D,kBAAkB,oBAAoB7D,EAAI8D,uBAAyB9D,EAAI+D,kBAAwC,IAArBlW,EAAOmW,UAAoB,uBAAuBhE,EAAIiE,qBAAuBjE,EAAI+D,gBAAgB,iCAAiC/D,EAAIkE,6BAA6BC,YAAYnE,EAAIoE,GAAG,CAAC,CAACrW,IAAI,UAAUwD,GAAG,SAAS8S,GAAW,MAAO,CAACrE,EAAIoC,GAAGiC,EAAUxW,OAAOzB,KAAO,WAAWiY,EAAUxW,OAAOzB,OAAS,SAAS,WAAW,MAAO,CAAC4T,EAAIoC,GAAG,SAAS,KAAK,CAAC,OAASiC,EAAUxW,OAAO,SAAWwW,EAAUC,SAAS,SAAWD,EAAUE,WAAW,EAAE,CAAC,OAASF,EAAUxW,OAAO,SAAWwW,EAAUC,SAAS,SAAWD,EAAUE,WAAW,GAAG,CAACxW,IAAI,UAAUwD,GAAG,SAAS8S,GAAW,MAAO,CAACrE,EAAIoC,GAAG,UAAU,KAAK,CAAC,OAASiC,EAAUxW,OAAO,SAAWwW,EAAUC,SAAS,YAAcD,EAAUG,cAAc,IAAI,MAAK,IAAO,IAAI,IAAI,GAAIxE,EAAIyE,eAAgBxE,EAAG,MAAM,CAACE,YAAY,eAAe,CAACF,EAAG,OAAO,CAACD,EAAI0E,GAAG1E,EAAI2E,GAAGnE,EAAOnZ,SAAS4Y,EAAG,OAAO,CAACD,EAAI0E,GAAG1E,EAAI2E,GAAG3E,EAAI4E,iBAAiBhE,EAAS,EAAGJ,EAAOqE,gBAAgB7E,EAAIqC,QAAQ,GAAG,EAAE,GAAG,GAAGrC,EAAIqC,KAAMrC,EAAIyD,mBAAqBzD,EAAI0D,eAAgBzD,EAAG,MAAM,CAACE,YAAY,cAAczQ,MAAO,CAC14EoV,SAAU,QACV/C,KAAM,GAAG/B,EAAI2D,uBAAuBnZ,MACpC0X,IAAK,GAAGlC,EAAI2D,uBAAuBxB,MACnC/B,MAAUJ,EAAI0D,eAAetD,MAAQJ,EAAI+E,cAAlC,KACP1E,OAAWL,EAAI0D,eAAerD,OAASL,EAAI+E,cAAnC,KACRC,cAAe,SACb,CAAChF,EAAIoC,GAAGpC,EAAI0D,eAAetX,KAAO,WAAW4T,EAAI0D,eAAetX,OAAS,SAAS,WAAW,MAAO,CAAC4T,EAAIoC,GAAG,SAAS,KAAK,CAAC,OAASpC,EAAI0D,eAAe,YAAa,IAAQ,EAAE,CAAC,OAAS1D,EAAI0D,eAAe,YAAa,KAAS,GAAG1D,EAAIqC,MAChP,EACI4C,EAAkB,GCdlBlF,G,8DAAS,WAAkB,IAAIC,EAAIrc,KAAKsc,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,SAAS,CAACkB,IAAI,UACpF,GACI8D,EAAkB,GCQtB,SACA5d,KAAA,UACA8S,MAAA,CACAwG,KAAA,CACAvU,KAAA8Y,QACAC,UAAA,GAEA7D,MAAA,CACAlV,KAAAgZ,OACAC,QAAA,IAGA9S,IAAAA,GACA,OACA+S,aAAA,KAAAhE,MACAiE,aAAA,EACAC,eAAA,EACAC,WAAA,KAEA,EACAC,MAAA,CACApE,KAAAA,CAAAqE,GACA,KAAAL,aAAAK,EACA,KAAA5F,QACA,GAEA6F,OAAAA,GACA,KAAA7F,QACA,EACA8F,aAAAA,GACA,QAAAJ,WAAA,CACA,IACA,KAAAA,WAAAK,QACA,OAAAC,GACA,CAEA,KAAAN,WAAA,IACA,CACA,EACAO,QAAA,CACAC,oBAAAA,GACA,OACAC,YAAA,KAAAC,MAAAC,OAAAhG,MACAiG,aAAA,KAAAF,MAAAC,OAAA/F,OAEA,EACAiG,OAAAA,GACA,KAAAC,MAAA,aACAjF,MAAA,KAAAgE,cAEA,EACA,YAAAvF,GACA,QAAAwF,YACA,KAAAC,eAAA,MADA,CAIA,KAAAD,aAAA,EACA,KAAAC,eAAA,EACA,IACA,MAAAgB,QAAA,KAAA7F,KACAyF,EAAA,KAAAD,MAAAC,OACA,IAAAA,EAAA,OACA,QAAAX,WAAA,CACA,IACA,KAAAA,WAAAK,QACA,OAAAC,GACA,CAEA,KAAAN,WAAA,IACA,CACA,MAAAgB,EAAAL,EAAAM,WAAA,MACAC,EAAAH,EAAAI,YAAA,CACAtF,MAAA,KAAAgE,eAEAc,EAAAhG,MAAAuG,EAAAvG,MACAgG,EAAA/F,OAAAsG,EAAAtG,OACA,KAAAoF,WAAAe,EAAAzG,OAAA,CACA8G,cAAAJ,EACAE,mBAEA,KAAAlB,WAAAqB,QACA,KAAAR,SACA,SACA,KAAAf,aAAA,EACA,KAAAE,WAAA,KACA,KAAAD,gBACA,KAAAA,eAAA,EACA,KAAAzF,SAEA,CAlCA,CAmCA,ICpGuP,ICMxO,SAASgH,EACtBC,EACAjH,EACAkF,EACAgC,EACAC,EACAC,EACAC,EACAC,GAGA,IAoBIC,EApBAhgB,EACuB,oBAAlB0f,EAA+BA,EAAc1f,QAAU0f,EAuDhE,GApDIjH,IACFzY,EAAQyY,OAASA,EACjBzY,EAAQ2d,gBAAkBA,EAC1B3d,EAAQigB,WAAY,GAIlBN,IACF3f,EAAQkgB,YAAa,GAInBL,IACF7f,EAAQmgB,SAAW,UAAYN,GAI7BC,GAEFE,EAAO,SAAUb,GAEfA,EACEA,GACC9iB,KAAK+jB,QAAU/jB,KAAK+jB,OAAOC,YAC3BhkB,KAAKikB,QAAUjkB,KAAKikB,OAAOF,QAAU/jB,KAAKikB,OAAOF,OAAOC,WAEtDlB,GAA0C,qBAAxBoB,sBACrBpB,EAAUoB,qBAGRX,GACFA,EAAapjB,KAAKH,KAAM8iB,GAGtBA,GAAWA,EAAQqB,uBACrBrB,EAAQqB,sBAAsBC,IAAIX,EAEtC,EAGA9f,EAAQ0gB,aAAeV,GACdJ,IACTI,EAAOD,EACH,WACEH,EAAapjB,KACXH,MACC2D,EAAQkgB,WAAa7jB,KAAKikB,OAASjkB,MAAMskB,MAAMC,SAASC,WAE7D,EACAjB,GAGFI,EACF,GAAIhgB,EAAQkgB,WAAY,CAGtBlgB,EAAQ8gB,cAAgBd,EAExB,IAAIe,EAAiB/gB,EAAQyY,OAC7BzY,EAAQyY,OAAS,SAAkCuI,EAAG7B,GAEpD,OADAa,EAAKxjB,KAAK2iB,GACH4B,EAAeC,EAAG7B,EAC3B,CACF,KAAO,CAEL,IAAI8B,EAAWjhB,EAAQkhB,aACvBlhB,EAAQkhB,aAAeD,EAAW,GAAGpR,OAAOoR,EAAUjB,GAAQ,CAACA,EACjE,CAGF,MAAO,CACLhkB,QAAS0jB,EACT1f,QAASA,EAEb,CCvFA,IAAImhB,EAAY,EACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,QAAeA,E,QCnBf,IAAI1I,EAAS,WAAkB,IAAIC,EAAIrc,KAAKsc,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAAEH,EAAI0I,aAAe1I,EAAI2I,wBAA0B3I,EAAI4I,iBAAmB5I,EAAI6I,mBAAoB5I,EAAG,MAAM,CAACE,YAAY,kBAAkBzQ,MAAOsQ,EAAI8I,cAAe,CAAC9I,EAAIoC,GAAG,UAAU,WAAW,MAAO,CAACnC,EAAG,SAAS,CAACE,YAAY,aAAakB,MAAM,CAAC,KAAO,SAAS,MAAQ,aAAaR,GAAG,CAAC,MAAQ,SAASC,GAAiC,OAAzBA,EAAOiI,kBAAyB/I,EAAIwE,YAAYvL,MAAM,KAAMzU,UAAU,IAAI,CAACyb,EAAG,MAAM,CAACoB,MAAM,CAAC,MAAQ,KAAK,OAAS,KAAK,QAAU,YAAY,KAAO,iBAAiB,CAACpB,EAAG,OAAO,CAACoB,MAAM,CAAC,EAAI,mIAAmIpB,EAAG,SAAS,CAACE,YAAY,aAAakB,MAAM,CAAC,KAAO,SAAS,MAAQ,UAAUR,GAAG,CAAC,MAAQ,SAASC,GAAiC,OAAzBA,EAAOiI,kBAAyB/I,EAAIsE,SAASrL,MAAM,KAAMzU,UAAU,IAAI,CAACyb,EAAG,MAAM,CAACoB,MAAM,CAAC,MAAQ,KAAK,OAAS,KAAK,QAAU,YAAY,KAAO,iBAAiB,CAACpB,EAAG,OAAO,CAACoB,MAAM,CAAC,EAAI,wQAAwQ,EAAE,CAAC,OAASrB,EAAInS,OAAO,SAAWmS,EAAIsE,SAAS,YAActE,EAAIwE,eAAe,GAAGxE,EAAIqC,KAAKpC,EAAG,MAAM,CAACE,YAAY,oBAAoBa,MAAM,CAAEgI,SAAUhJ,EAAI0I,YAAc1I,EAAI4I,iBAAkBlZ,MAAO,CAACsQ,EAAIiJ,aAAcjJ,EAAIkJ,kBAAmB7H,MAAM,CAAC,UAAY,SAASR,GAAG,CAAC,UAAY,SAASC,GAAQA,EAAOqI,gBAAiB,EAAE,UAAYnJ,EAAIoJ,mBAAmB,WAAapJ,EAAIoJ,qBAAqB,CAACpJ,EAAIoC,GAAG,UAAU,KAAK,CAAC,OAASpC,EAAInS,OAAO,WAAamS,EAAI0I,WAAW,SAAW1I,EAAIsE,SAAS,SAAWtE,EAAIqJ,sBAAuBrJ,EAAI0I,YAAc1I,EAAI4I,gBAAiB5I,EAAIO,GAAIP,EAAIsJ,iBAAkB,SAASC,GAAK,OAAOtJ,EAAG,SAAS,CAAClS,IAAIwb,EAAIpJ,YAAY,gBAAgBa,MAAM,UAAUuI,IAAMlI,MAAM,CAAC,KAAO,UAAUR,GAAG,CAAC,UAAY,SAASC,GAAyD,OAAjDA,EAAOiI,kBAAkBjI,EAAOqI,iBAAwBnJ,EAAIwJ,YAAYD,EAAKzI,EAAO,EAAE,WAAa,SAASA,GAAyD,OAAjDA,EAAOiI,kBAAkBjI,EAAOqI,iBAAwBnJ,EAAIwJ,YAAYD,EAAKzI,EAAO,IAAI,GAAGd,EAAIqC,MAAM,IAC5tE,EACI4C,EAAkB,GCuDtB,SACA5d,KAAA,mBACA8S,MAAA,CACAtM,OAAA,CACAzB,KAAAxF,OACAue,UAAA,GAEAsE,WAAA,CACArd,KAAAgZ,OACAC,QAAA,GAEAqE,UAAA,CACAtd,KAAAgZ,OACAD,UAAA,GAEAwE,WAAA,CACAvd,KAAAgZ,OACAD,UAAA,GAEAyE,SAAA,CACAxd,KAAAnE,SACAod,QAAAA,QAEAf,SAAA,CACAlY,KAAAnE,SACAod,QAAAA,QAEAb,YAAA,CACApY,KAAAnE,SACAod,QAAAA,QAEAwE,YAAA,CACAzd,KAAAnE,SACAod,QAAAA,QAEAyE,WAAA,CACA1d,KAAAnE,SACAod,QAAAA,QAEA0E,UAAA,CACA3d,KAAAnE,SACAod,QAAAA,QAEAsD,uBAAA,CACAvc,KAAA4d,QACA3E,SAAA,GAEA4E,kBAAA,CACA7d,KAAAxF,OACAye,QAAAA,KAAA,CAAA7a,EAAA,EAAA2X,EAAA,KAEA+H,gBAAA,CACA9d,KAAAgZ,OACAC,SAAA,GAEA8E,iBAAA,CACA/d,KAAAgZ,OACAC,SAAA,GAEA+E,mBAAA,CACAhe,KAAAgZ,OACAC,SAAA,GAEAgF,oBAAA,CACAje,KAAAgZ,OACAC,SAAA,GAEAuD,gBAAA,CACAxc,KAAA4d,QACA3E,SAAA,GAEAwD,mBAAA,CACAzc,KAAA4d,QACA3E,SAAA,GAEA3C,SAAA,CACAtW,KAAA4d,QACA3E,SAAA,GAEAnB,4BAAA,CACA9X,KAAA8H,MACAmR,QAAAA,IAAA,KAGA9S,IAAAA,GACA,OACAmW,YAAA,EACAlN,KAAA,OACA8O,UAAA,GACAC,OAAA,EACAC,OAAA,EACAC,UAAA,EACAC,SAAA,EACAC,WAAA,EACAC,YAAA,EACAC,QAAA,EACAC,QAAA,EACAC,cAAA,EACAC,cAAA,EACAC,cAAA,EACAC,cAAA,EACAC,YAAA,EACAC,WAAA,EACAC,WAAA,EACAC,iBAAA,CAAA9gB,EAAA,EAAA2X,EAAA,GACAoJ,gBAAA,KACAC,MAAA,KAEA,EACAC,SAAA,CACAnC,gBAAAA,GACA,2DACA,EACAL,YAAAA,GACA,MAAA3H,EAAA,KAAAmI,YAAA,EACAiC,EAAA,cAAAlQ,KACAmQ,EAAA,gBAAAnQ,KACAqP,EAAAa,EAAA,KAAAb,QAAA,EACAC,EAAAY,EAAA,KAAAZ,QAAA,EACAC,EAAAY,EAAA,KAAAZ,cAAA,EACAC,EAAAW,EAAA,KAAAX,cAAA,EACAC,EAAAU,EAAA,KAAAV,cAAA,EACAC,EAAAS,EAAA,KAAAT,cAAA,EACAU,EAAA,KAAA/d,OAAArD,EAAAqgB,EAAAE,EACAc,EAAA,KAAAhe,OAAAsU,EAAA2I,EAAAE,EACAc,EAAA,KAAAje,OAAAuS,MAAA6K,EACAc,EAAA,KAAAle,OAAAwS,OAAA6K,EACA,OACAnJ,KAAA6J,EAAAtK,EAAA,KACAY,IAAA2J,EAAAvK,EAAA,KACAlB,MAAA0L,EAAAxK,EAAA,KACAjB,OAAA0L,EAAAzK,EAAA,KACA0D,cAAA,KAAAtC,SAAA,cAEA,EACAoG,YAAAA,GACA,MAAAxH,EAAA,KAAAmI,YAAA,EACAiC,EAAA,cAAAlQ,KACAmQ,EAAA,gBAAAnQ,KACAqP,EAAAa,EAAA,KAAAb,QAAA,EACAC,EAAAY,EAAA,KAAAZ,QAAA,EACAC,EAAAY,EAAA,KAAAZ,cAAA,EACAC,EAAAW,EAAA,KAAAX,cAAA,EACAC,EAAAU,EAAA,KAAAV,cAAA,EACAzgB,EAAA,KAAAqD,OAAArD,EAAAqgB,EAAAE,EACA5I,EAAA,KAAAtU,OAAAsU,EAAA2I,EAAAE,EACA5K,EAAA,KAAAvS,OAAAuS,MAAA6K,EACAe,EAAA,GACAC,EAAA9J,EAAA6J,EACA9J,EAAA+J,EAAA,EAAA9J,EAAA,EAAA8J,EACA,OACAlK,MAAAvX,EAAA4V,EAAA,GAAAkB,EAAA,KACAY,IAAAA,EAAAZ,EAAA,KACA4K,UAAA,mBAEA,EACAhD,gBAAAA,GACA,YAAAP,wBAAA,KAAAsB,kBAGA,CACAkC,QAAA,EACAnH,cAAA,QAJA,EAMA,GAEAY,OAAAA,GACA,KAAAwG,mBAAA,KAAAA,mBAAAtiB,KAAA,MACA,KAAAuiB,gBAAA,KAAAC,WAAAxiB,KAAA,MACA,KAAAyiB,qBAAA,KAAAC,gBAAA1iB,KAAA,MACAiG,SAAA0c,iBAAA,iBAAAL,oBACArc,SAAA0c,iBAAA,kBAAAL,mBACA,EACAvG,aAAAA,GACA9V,SAAA2c,oBAAA,iBAAAN,oBACArc,SAAA2c,oBAAA,kBAAAN,oBACA5X,OAAAkY,oBAAA,iBAAAL,iBACA7X,OAAAkY,oBAAA,eAAAH,sBACA/X,OAAAkY,oBAAA,iBAAAL,iBACA7X,OAAAkY,oBAAA,gBAAAH,sBACA,KAAAf,OAAAmB,qBAAA,KAAAnB,MACA,EACAxF,QAAA,CACAoD,kBAAAA,CAAAwD,GACA,KAAAlK,UAGAkK,EAAA5nB,OAAA6nB,QAAA,mBAAAD,EAAA5nB,OAAA6nB,QAAA,qBAAAD,EAAA5nB,OAAA6nB,QAAA,sBAGAD,EAAAzD,iBACA,KAAAT,YAAA,EACA,KAAAoE,UAAAF,GACA,EACAR,kBAAAA,CAAAQ,GACA,MAAAG,EAAA7Y,MAAAS,QAAA,KAAAuP,6BACA,KAAAA,4BACA,GACA,UAAA8I,KAAAD,EACA,GAAAC,GAAAJ,GAAA5nB,QAAA6nB,UAAAG,GACA,OAGA,KAAAC,MAAA,KAAAA,IAAAC,SAAAN,EAAA5nB,UACA,KAAA0jB,YAAA,EAEA,EACAW,mBAAAA,CAAAiB,EAAAsC,GACAtC,GAAAsC,GACA,KAAApD,YAAAc,EAAAsC,EACA,EACAE,SAAAA,CAAAF,GACA,QAAAlK,SAAA,OACA,GAAAkK,EAAA5nB,OAAAmoB,UAAAD,SAAA,iBACA,GAAAN,EAAA5nB,OAAAmoB,UAAAD,SAAA,wBACA,KAAA1R,KAAA,OACA,KAAA+O,OAAAqC,EAAAxgB,KAAA+S,SAAA,SAAAyN,EAAAQ,QAAA,GAAAC,QAAAT,EAAAS,QACA,KAAA7C,OAAAoC,EAAAxgB,KAAA+S,SAAA,SAAAyN,EAAAQ,QAAA,GAAAE,QAAAV,EAAAU,QACA,KAAA7C,UAAA,KAAA5c,OAAArD,EACA,KAAAkgB,SAAA,KAAA7c,OAAAsU,EACA,KAAA0I,QAAA,EACA,KAAAC,QAAA,EACA,KAAAyC,qBAEA,MAAAC,EAAA,KAAAP,IAAAQ,cAAA,sBAAAC,wBAEA,KAAApC,iBAAA9gB,EAAA,KAAA+f,OAAAiD,EAAAzL,KACA,KAAAuJ,iBAAAnJ,EAAA,KAAAqI,OAAAgD,EAAAtL,IAEA,MAAAyL,EAAA,KAAAC,kBACA,KAAArC,gBAAAoC,EACA,IAAAE,EAAA,CAAArjB,EAAA,EAAA2X,EAAA,GACA,GAAAwL,EAAA,CACA,MAAAG,EAAAH,EAAA5L,KAAA,KAAAlU,OAAArD,EAAA,KAAAif,WACAsE,EAAAJ,EAAAzL,IAAA,KAAArU,OAAAsU,EAAA,KAAAsH,WACAoE,EAAA,CACArjB,EAAAgjB,EAAAzL,KAAA+L,EACA3L,EAAAqL,EAAAtL,IAAA6L,EAEA,CAEA,KAAAlE,YAAA,KAAAU,OAAA,KAAAC,OAAA,SAAAc,kBAAAuC,GAEArZ,OAAAiY,iBAAA,iBAAAJ,iBACA7X,OAAAiY,iBAAA,eAAAF,sBACA/X,OAAAiY,iBAAA,iBAAAJ,iBACA7X,OAAAiY,iBAAA,gBAAAF,qBACA,EACA/C,WAAAA,CAAAc,EAAAsC,GACA,KAAAlK,WACA,KAAAlH,KAAA,SACA,KAAA8O,UAAAA,EACA,KAAAC,OAAAqC,EAAAxgB,KAAA+S,SAAA,SAAAyN,EAAAQ,QAAA,GAAAC,QAAAT,EAAAS,QACA,KAAA7C,OAAAoC,EAAAxgB,KAAA+S,SAAA,SAAAyN,EAAAQ,QAAA,GAAAE,QAAAV,EAAAU,QACA,KAAA7C,UAAA,KAAA5c,OAAArD,EACA,KAAAkgB,SAAA,KAAA7c,OAAAsU,EACA,KAAAwI,WAAA,KAAA9c,OAAAuS,MACA,KAAAwK,YAAA,KAAA/c,OAAAwS,OACA,KAAA8K,YAAA,KAAAR,WAAA,KAAAC,YACA,KAAAC,QAAA,EACA,KAAAC,QAAA,EACA,KAAAyC,qBAEA/Y,OAAAiY,iBAAA,iBAAAJ,iBACA7X,OAAAiY,iBAAA,eAAAF,sBACA/X,OAAAiY,iBAAA,iBAAAJ,iBACA7X,OAAAiY,iBAAA,gBAAAF,sBACA,EACAD,UAAAA,CAAAM,GACA,cAAApR,OACAoR,EAAAzD,iBAEA,KAAAqC,QAEA,KAAAA,MAAAwC,sBAAA,KACA,MAAApC,EAAAgB,EAAAxgB,KAAA+S,SAAA,SAAAyN,EAAAQ,QAAA,IAAAC,QAAAT,EAAAS,QACAxB,EAAAe,EAAAxgB,KAAA+S,SAAA,SAAAyN,EAAAQ,QAAA,IAAAE,QAAAV,EAAAU,QAEA,QAAAxlB,IAAA8jB,QAAA9jB,IAAA+jB,EAAA,OAEA,KAAAT,WAAAQ,EACA,KAAAP,WAAAQ,EACA,MAAAoC,GAAArC,EAAA,KAAArB,QAAA,KAAAd,WACAyE,GAAArC,EAAA,KAAArB,QAAA,KAAAf,WAEA,iBAAAjO,KAAA,CACA,MAAAmS,EAAA,KAAApC,gBACA,GAAAoC,EAAA,CACA,MAAAQ,EAAAvC,EAAA,KAAAN,iBAAA9gB,EACA4jB,EAAAvC,EAAA,KAAAP,iBAAAnJ,EAEAkM,GAAAF,EAAAR,EAAA5L,MAAA,KAAA0H,WACA6E,GAAAF,EAAAT,EAAAzL,KAAA,KAAAuH,WAEA,KAAAoB,QAAAwD,EAAA,KAAAxgB,OAAArD,EACA,KAAAsgB,QAAAwD,EAAA,KAAAzgB,OAAAsU,CACA,MACA,KAAA0I,QAAAoD,EACA,KAAAnD,QAAAoD,EAWA,OATA,KAAApE,WAAA8B,EAAAC,GACA,KAAAlD,wBACA,KAAAiB,SAAA,CACA2E,aAAA,EACAC,QAAA5C,EACA6C,QAAA5C,SAGA,KAAAL,MAAA,KAEA,CAEA,MAAAkD,EAAA,SAAAjF,YAAA,GACA,IAAAkF,EAAA,KAAAhE,WACAiE,EAAA,KAAAhE,YACAiE,EAAA,KAAApE,UACAqE,EAAA,KAAApE,SAEA,MAAAqE,EAAA,KAAAzE,UAAAnL,SAAA,SAAA8O,EAAA,KAAA3D,UAAAnL,SAAA,SAAA8O,EAAA,EAKA,GAJAU,EAAA,KAAAhE,WAAAoE,EACAJ,EAAAD,IAAAC,EAAAD,GACAE,EAAAD,EAAA,KAAAxD,YAEA,KAAAb,UAAAnL,SAAA,UACA0P,EAAA,KAAApE,WAAA,KAAAE,WAAAgE,GACAE,EAAA,IACA,MAAAG,GAAAH,EACAA,EAAA,EACAF,GAAAK,EACAJ,EAAAD,EAAA,KAAAxD,WACA,CAGA,QAAAb,UAAAnL,SAAA,SACA2P,EAAA,KAAApE,UAAA,KAAAE,YAAAgE,GACAE,EAAA,IACA,MAAAE,GAAAF,EACAA,EAAA,EACAF,GAAAI,EACAL,EAAAC,EAAA,KAAAzD,YACA,KAAAb,UAAAnL,SAAA,UACA0P,EAAA,KAAApE,WAAA,KAAAE,WAAAgE,GAEA,CAGA,GAAAE,EAAAF,EAAA,KAAAjF,UAAA,CACA,MAAAuF,EAAAJ,EAAAF,EAAA,KAAAjF,UACAiF,GAAAM,EACAL,EAAAD,EAAA,KAAAxD,WACA,CACA,GAAA2D,EAAAF,EAAA,KAAAjF,WAAA,CACA,MAAAsF,EAAAH,EAAAF,EAAA,KAAAjF,WACAiF,GAAAK,EACAN,EAAAC,EAAA,KAAAzD,YACA,KAAAb,UAAAnL,SAAA,UACA0P,EAAA,KAAApE,WAAA,KAAAE,WAAAgE,GAEA,CAEA,KAAA5D,cAAA8D,EAAA,KAAAhhB,OAAArD,EACA,KAAAwgB,cAAA8D,EAAA,KAAAjhB,OAAAsU,EACA,KAAA8I,cAAA0D,EAAA,KAAA9gB,OAAAuS,MACA,KAAA8K,cAAA0D,EAAA,KAAA/gB,OAAAwS,OAEA,KAAAmL,MAAA,QAEA,EACAgB,eAAAA,GACA,iBAAAhR,KAAA,CAEA,iBAAAA,OAAA,SAAAqP,SAAA,SAAAC,SACA,QAAAnC,uBACA,KAAAiB,SAAA,CACA2E,aAAA,EACAC,QAAA,KAAApD,WACAqD,QAAA,KAAApD,iBAEA,CACA,MAAA7gB,EAAAH,KAAAmN,IAAA,EAAAnN,KAAAoN,IAAA,KAAA5J,OAAArD,EAAA,KAAAqgB,QAAA,KAAAnB,UAAA,KAAA7b,OAAAuS,QACA+B,EAAA9X,KAAAmN,IAAA,EAAAnN,KAAAoN,IAAA,KAAA5J,OAAAsU,EAAA,KAAA2I,QAAA,KAAAnB,WAAA,KAAA9b,OAAAwS,SACA,KAAAuJ,SAAA,CAAApf,IAAA2X,KACA,CAGA,mBAAA3G,OAAA,SAAAyP,eAAA,SAAAC,eAAA,SAAAH,eAAA,SAAAC,eAAA,CACA,MAAAxgB,EAAA,KAAAqD,OAAArD,EAAA,KAAAugB,cACA5I,EAAA,KAAAtU,OAAAsU,EAAA,KAAA6I,cACA5K,EAAA,KAAAvS,OAAAuS,MAAA,KAAA6K,cACA5K,EAAA,KAAAxS,OAAAwS,OAAA,KAAA6K,cACA,KAAAtB,SAAA,CAAApf,IAAA2X,IAAA/B,QAAAC,UACA,CAEA,KAAA6O,eACA,KAAAnF,YACAvV,OAAAkY,oBAAA,iBAAAL,iBACA7X,OAAAkY,oBAAA,eAAAH,sBACA/X,OAAAkY,oBAAA,iBAAAL,iBACA7X,OAAAkY,oBAAA,gBAAAH,qBA7BA,CA8BA,EACAqB,eAAAA,GACA,MAAAuB,EAAA,KAAAlC,IAAAJ,QAAA,iBACA,IAAAsC,EAAA,YACA,MAAA/I,EAAA+I,EAAA1B,cAAA,UACA,OAAArH,EAAAA,EAAAsH,wBAAA,IACA,EACAH,kBAAAA,GACA,KAAAxC,cAAA,EACA,KAAAC,cAAA,EACA,KAAAC,cAAA,EACA,KAAAC,cAAA,CACA,EACAgE,YAAAA,GACA,KAAA1T,KAAA,OACA,KAAAqP,QAAA,EACA,KAAAC,QAAA,EACA,KAAAyC,qBACA,KAAAjC,iBAAA,CAAA9gB,EAAA,EAAA2X,EAAA,GACA,KAAAoJ,gBAAA,IACA,IC5dgQ,ICQhQ,IAAI,EAAY,EACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIF,QAAe,E,oCCQF,EAAsB,CAAC,EAI3B,MAEC,EAAoB9L,EAAI,CAACnc,EAASoc,KACjC,IAAI,IAAI3R,KAAO2R,EACX,EAAoBC,EAAED,EAAY3R,KAAS,EAAoB4R,EAAErc,EAASyK,IAC5EnH,OAAOD,eAAerD,EAASyK,EAAK,CAAEiJ,YAAY,EAAMxQ,IAAKkZ,EAAW3R,KAI3E,EATD,GAYA,MACC,EAAoB4R,EAAI,CAAClS,EAAKmS,IAAUhZ,OAAOiB,UAAUkC,eAAejG,KAAK2J,EAAKmS,EAClF,EAFD,GAQT,MAAMwP,EAA8B,kBAAZ7a,SAAwBA,QAAU,KAAO,qBAAuBA,QAAQgH,SAAS8T,MAAQ9a,QAAQgH,SAAS+T,UAAY/a,QAAQnI,MAAyB,YAAjBmI,QAAQnI,MAChKmjB,EAAuB,CAAC,KAAO,EAAG,EAAG,KAAO,EAAG,GAC/CC,EAAc,KAGdC,EAAsB,CAC1BC,IAAK,EACLC,QAAS,EACTC,MAAO,EACPC,KAAM,EACNC,kBAAmB,GACnBC,oBAAqB,GACrBC,oBAAqB,GACrBC,WAAY,IACZC,OAAQ,KAEJC,EAAiB,CACrBC,QAAS,EACTC,OAAQ,EACRC,aAAc,EACdC,eAAgB,GAEZC,EAAyB,yBACzBC,EAAuB,CAC3BL,SAAU,EACVM,KAAM,EACNC,SAAU,EACVC,UAAW,EACXC,MAAO,GACPC,IAAK,GACLC,MAAO,GACPC,UAAW,IACXC,QAAS,KAELC,EAA6B,CACjCC,OAAQ,EACRC,OAAQ,EACRC,cAAe,GACfC,eAAgB,GAChBC,iBAAkB,GAClBC,UAAW,GACXC,cAAe,GACfC,YAAa,GACbC,gBAAiB,GACjBC,oBAAqB,GACrBC,eAAgB,GAChBC,mBAAoB,GACpBC,UAAW,IAEPC,EAAiB,CACrBpC,MAAO,EACPqC,gBAAiB,EACjBC,KAAM,GACNC,mBAAoB,GACpBC,uBAAwB,IACxBC,uBAAwB,IACxBC,SAAU,KACVC,mBAAoB,MAEhBC,EAAiB,CACrBC,UAAW,EACXC,QAAS,EACTC,MAAO,GAEHC,EAAoB,CACxBC,KAAM,EACNC,OAAQ,EACRC,YAAa,EACbC,UAAW,EACXC,iBAAkB,EAClBC,mBAAoB,EACpBC,wBAAyB,EACzBC,YAAa,EACbC,iBAAkB,EAClBC,iBAAkB,GAEdC,EAAiB,CACrBC,eAAgB,EAChBC,UAAW,EACXC,WAAY,GAERC,EAAiB,CACrBC,KAAM,EACNC,KAAM,EACNlD,SAAU,EACVmD,KAAM,EACNC,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACTC,SAAU,EACVtD,UAAW,EACXuD,UAAW,GACXC,SAAU,GACVC,UAAW,GACXxD,MAAO,GACPyD,MAAO,GACPxD,IAAK,GACLC,MAAO,GACPwD,eAAgB,GAChBC,MAAO,GACPC,MAAO,GACPC,OAAQ,GACRC,OAAQ,GACRC,YAAa,GACbC,QAAS,GACTC,UAAW,GACXC,OAAQ,GACRC,OAAQ,IAuCJC,EAA4B,CAChCC,MAAO,EACPC,OAAQ,EACRC,QAAS,EACTC,MAAO,EACPlB,UAAW,GA6BPmB,EAAiB,CACrBC,OAAQ,EACRC,SAAU,EACVC,MAAO,GAEHC,EAAM,CACVC,WAAY,EACZC,aAAc,EACdC,WAAY,EACZC,YAAa,EACbC,cAAe,EACfC,QAAS,EACTC,mBAAoB,EACpBC,YAAa,EACbC,UAAW,EACXC,KAAM,GACNC,QAAS,GACTnK,UAAW,GACXoK,OAAQ,GACRC,OAAQ,GACRC,QAAS,GACTC,SAAU,GACVC,SAAU,GACVC,UAAW,GACXC,UAAW,GACXC,OAAQ,GACRC,YAAa,GACbC,KAAM,GACNC,OAAQ,GACRC,WAAY,GACZC,aAAc,GACdC,gBAAiB,GACjBC,kBAAmB,GACnBC,QAAS,GACTC,KAAM,GACNC,OAAQ,GACRC,UAAW,GACXC,QAAS,GACTC,eAAgB,GAChBC,eAAgB,GAChBC,UAAW,GACXC,WAAY,GACZC,QAAS,GACTC,qBAAsB,GACtBC,YAAa,GACbC,SAAU,GACVC,mBAAoB,GACpBC,cAAe,GACfC,SAAU,GACVC,SAAU,GACVC,eAAgB,GAChBC,iBAAkB,GAClBC,2BAA4B,GAC5BC,aAAc,GACdC,sBAAuB,GACvBC,oBAAqB,GACrBC,kBAAmB,GACnBC,eAAgB,GAChBC,gBAAiB,GACjBC,aAAc,GACdC,cAAe,GACfC,cAAe,GACfC,YAAa,GACbC,kBAAmB,GACnBC,gBAAiB,GACjBC,mBAAoB,GACpBC,iBAAkB,GAClBC,YAAa,GACbC,iBAAkB,GAClBC,eAAgB,GAChBC,eAAgB,GAChBC,aAAc,GACdC,UAAW,GACXC,eAAgB,GAChBC,mBAAoB,GACpBC,wBAAyB,GACzBC,iBAAkB,GAClBC,YAAa,GACbC,UAAW,GACXC,sBAAuB,GACvBC,oBAAqB,GACrBC,WAAY,GACZC,SAAU,GACVC,gBAAiB,GACjBC,cAAe,GACfC,sBAAuB,GACvBC,2BAA4B,GAC5BC,kBAAmB,GACnBC,wBAAyB,GACzBC,6BAA8B,GAC9BC,wBAAyB,GACzBC,4BAA6B,GAC7BC,yBAA0B,GAC1BC,cAAe,GACfC,qBAAsB,GACtBC,mBAAoB,GACpBC,YAAa,IAETC,EAAU,CACd/E,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACT8E,iBAAkB,EAClB3E,UAAW,GAEP4E,EAAoB,CACxBC,cAAe,EACfC,mBAAoB,GAEtB,IAAIC,EAAYpG,EAAeE,SAC/B,SAASmG,EAAkBC,GACrBxW,OAAOyW,UAAUD,KACnBF,EAAYE,EAEhB,CACA,SAASE,IACP,OAAOJ,CACT,CACA,SAASK,EAAKC,GACRN,GAAapG,EAAeG,OAC9BwG,QAAQF,KAAK,SAASC,IAE1B,CACA,SAASE,EAAKF,GACRN,GAAapG,EAAeE,UAC9ByG,QAAQC,KAAK,YAAYF,IAE7B,CACA,SAASG,EAAYH,GACnB,MAAM,IAAII,MAAMJ,EAClB,CACA,SAASK,EAAOC,EAAMN,GACfM,GACHH,EAAYH,EAEhB,CACA,SAASO,EAAiBC,GACxB,OAAQA,GAAKC,UACX,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,OACH,OAAO,EACT,QACE,OAAO,EAEb,CACA,SAASC,EAAuBF,EAAKG,EAAU,KAAMr1B,EAAU,MAC7D,IAAKk1B,EACH,OAAO,KAET,GAAIl1B,GAA0B,kBAARk1B,EAAkB,CACtC,GAAIl1B,EAAQs1B,oBAAsBJ,EAAIK,WAAW,QAAS,CACxD,MAAMC,EAAON,EAAI/d,MAAM,OACnBqe,GAAMr4B,QAAU,IAClB+3B,EAAM,UAAUA,IAEpB,CACA,GAAIl1B,EAAQy1B,mBACV,IACEP,EAAMQ,GAAmBR,EAC3B,CAAE,MAAO,CAEb,CACA,MAAMS,EAAcN,EAAUO,IAAIC,MAAMX,EAAKG,GAAWO,IAAIC,MAAMX,GAClE,OAAOD,EAAiBU,GAAeA,EAAc,IACvD,CACA,SAASG,EAAcZ,EAAKa,EAAMC,GAAW,GAC3C,MAAMC,EAAML,IAAIC,MAAMX,GACtB,OAAIe,GACFA,EAAIF,KAAOA,EACJE,EAAIC,MAETF,GAAYZ,EAAuBF,EAAK,sBACnCA,EAAIr1B,MAAM,IAAK,GAAG,GAAK,IAAGk2B,EAAO,IAAIA,IAAS,IAEhD,EACT,CACA,SAASI,EAAOhwB,EAAKmS,EAAMna,EAAOi4B,GAAkB,GAOlD,OANA92B,OAAOD,eAAe8G,EAAKmS,EAAM,CAC/Bna,QACAuR,YAAa0mB,EACbj2B,cAAc,EACdG,UAAU,IAELnC,CACT,CACA,MAAMk4B,EAAgB,WACpB,SAASA,EAAcC,EAASv2B,GAC9B1D,KAAKi6B,QAAUA,EACfj6B,KAAK0D,KAAOA,CACd,CAGA,OAFAs2B,EAAc91B,UAAY,IAAIu0B,MAC9BuB,EAAch2B,YAAcg2B,EACrBA,CACT,CARsB,GAStB,MAAME,UAA0BF,EAC9B,WAAAh2B,CAAYq0B,EAAK8B,GACfC,MAAM/B,EAAK,qBACXr4B,KAAKm6B,KAAOA,CACd,EAEF,MAAME,UAA8BL,EAClC,WAAAh2B,CAAYq0B,EAAKiC,GACfF,MAAM/B,EAAK,yBACXr4B,KAAKs6B,QAAUA,CACjB,EAEF,MAAMC,WAA4BP,EAChC,WAAAh2B,CAAYq0B,GACV+B,MAAM/B,EAAK,sBACb,EAEF,MAAMmC,WAA0BR,EAC9B,WAAAh2B,CAAYq0B,EAAKoC,EAAQC,GACvBN,MAAM/B,EAAK,qBACXr4B,KAAKy6B,OAASA,EACdz6B,KAAK06B,QAAUA,CACjB,EAEF,MAAMC,WAAoBX,EACxB,WAAAh2B,CAAYq0B,GACV+B,MAAM/B,EAAK,cACb,EAEF,MAAMuC,WAAuBZ,EAC3B,WAAAh2B,CAAYq0B,GACV+B,MAAM/B,EAAK,iBACb,EAEF,SAASwC,GAAcC,GACA,kBAAVA,QAAwC32B,IAAlB22B,GAAOh6B,QACtC03B,EAAY,sCAEd,MAAM13B,EAASg6B,EAAMh6B,OACfi6B,EAAqB,KAC3B,GAAIj6B,EAASi6B,EACX,OAAOh4B,OAAOi4B,aAAa1lB,MAAM,KAAMwlB,GAEzC,MAAMG,EAAS,GACf,IAAK,IAAIhyB,EAAI,EAAGA,EAAInI,EAAQmI,GAAK8xB,EAAoB,CACnD,MAAMG,EAAWx0B,KAAKoN,IAAI7K,EAAI8xB,EAAoBj6B,GAC5Cq6B,EAAQL,EAAMM,SAASnyB,EAAGiyB,GAChCD,EAAOhxB,KAAKlH,OAAOi4B,aAAa1lB,MAAM,KAAM6lB,GAC9C,CACA,OAAOF,EAAO53B,KAAK,GACrB,CACA,SAASg4B,GAAcC,GACF,kBAARA,GACT9C,EAAY,sCAEd,MAAM13B,EAASw6B,EAAIx6B,OACbg6B,EAAQ,IAAIS,WAAWz6B,GAC7B,IAAK,IAAImI,EAAI,EAAGA,EAAInI,IAAUmI,EAC5B6xB,EAAM7xB,GAAyB,IAApBqyB,EAAIE,WAAWvyB,GAE5B,OAAO6xB,CACT,CACA,SAASW,GAAS35B,GAChB,OAAOiB,OAAOi4B,aAAal5B,GAAS,GAAK,IAAMA,GAAS,GAAK,IAAMA,GAAS,EAAI,IAAc,IAARA,EACxF,CAIA,SAAS45B,KACP,MAAMC,EAAU,IAAIJ,WAAW,GAC/BI,EAAQ,GAAK,EACb,MAAMC,EAAS,IAAIC,YAAYF,EAAQtyB,OAAQ,EAAG,GAClD,OAAqB,IAAduyB,EAAO,EAChB,CACA,SAASE,KACP,IAEE,OADA,IAAIx3B,SAAS,KACN,CACT,CAAE,MACA,OAAO,CACT,CACF,CACA,MAAMy3B,GACJ,yBAAWL,GACT,OAAO5B,EAAO95B,KAAM,iBAAkB07B,KACxC,CACA,0BAAWI,GACT,OAAOhC,EAAO95B,KAAM,kBAAmB87B,KACzC,CACA,qCAAWE,GACT,OAAOlC,EAAO95B,KAAM,6BAAyD,qBAApBi8B,gBAC3D,CACA,kCAAWC,GACT,OAAOpC,EAAO95B,KAAM,0BAAmD,qBAAjBm8B,aACxD,CACA,kCAAWC,GACT,OAAOtC,EAAO95B,KAAM,0BAAmD,qBAAjBq8B,aACxD,CACA,+BAAWC,GACT,OAAOxC,EAAO95B,KAAM,uBAA6C,qBAAdu8B,UACrD,CACA,mBAAWC,GACT,MAAM,SACJA,EAAQ,UACRrtB,GACED,UACJ,OAAO4qB,EAAO95B,KAAM,WAAY,CAC9By8B,UAAWttB,EAAUqM,SAAS,WAC9BkhB,QAASF,EAAShhB,SAAS,SAC3BmhB,MAAOH,EAAShhB,SAAS,OACzBohB,UAAWJ,EAAShhB,SAAS,OAC7BqhB,UAAW1tB,EAAUqM,SAAS,YAElC,CACA,8BAAWshB,GACT,OAAOhD,EAAO95B,KAAM,sBAAuB+H,WAAWg1B,KAAKC,WAAW,4BACxE,EAEF,MAAMC,GAAa1sB,MAAM2sB,KAAK3sB,MAAM,KAAK7I,OAAQZ,GAAKA,EAAEvC,SAAS,IAAI44B,SAAS,EAAG,MACjF,MAAMC,GACJ,mBAAOC,CAAaC,EAAGC,EAAGtoB,GACxB,MAAO,IAAIgoB,GAAWK,KAAKL,GAAWM,KAAKN,GAAWhoB,IACxD,CACA,2BAAOuoB,CAAqBC,GAC1B,MAAO,CAACA,EAAGzoB,EAAGyoB,EAAGxoB,EAAGwoB,EAAGC,EAAGD,EAAG3hB,EAAG2hB,EAAGrb,EAAGqb,EAAGnzB,EAC3C,CACA,kBAAOqzB,CAAYpV,EAAWqV,GAC5B,IAAInyB,EACA8c,EAAU,IACRA,EAAU,GAAK,IACjB9c,EAAOmyB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKnyB,GAEdmyB,EAAO,IAAMrV,EAAU,GACvBqV,EAAO,IAAMrV,EAAU,GACnBA,EAAU,GAAK,IACjB9c,EAAOmyB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKnyB,GAEdmyB,EAAO,IAAMrV,EAAU,GACvBqV,EAAO,IAAMrV,EAAU,KAEvB9c,EAAOmyB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKnyB,EACZA,EAAOmyB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKnyB,EACR8c,EAAU,GAAK,IACjB9c,EAAOmyB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKnyB,GAEdmyB,EAAO,IAAMrV,EAAU,GACvBqV,EAAO,IAAMrV,EAAU,GACnBA,EAAU,GAAK,IACjB9c,EAAOmyB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKnyB,GAEdmyB,EAAO,IAAMrV,EAAU,GACvBqV,EAAO,IAAMrV,EAAU,IAEzBqV,EAAO,IAAMrV,EAAU,GACvBqV,EAAO,IAAMrV,EAAU,GACvBqV,EAAO,IAAMrV,EAAU,GACvBqV,EAAO,IAAMrV,EAAU,EACzB,CACA,gBAAOA,CAAUsV,EAAIC,GACnB,MAAO,CAACD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAIA,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAChN,CACA,0BAAOE,CAAoBC,EAAGC,GAC5B,MAAO,CAACD,EAAE,GAAKC,EAAGjpB,EAAIgpB,EAAE,GAAKC,EAAGhpB,EAAG+oB,EAAE,GAAKC,EAAGjpB,EAAIgpB,EAAE,GAAKC,EAAGhpB,EAAG+oB,EAAE,GAAKC,EAAGP,EAAIM,EAAE,GAAKC,EAAGniB,EAAGkiB,EAAE,GAAKC,EAAGP,EAAIM,EAAE,GAAKC,EAAGniB,EAAGkiB,EAAE,GAAKC,EAAG7b,EAAI4b,EAAE,GAAKC,EAAG3zB,EAAI0zB,EAAE,GAAIA,EAAE,GAAKC,EAAG7b,EAAI4b,EAAE,GAAKC,EAAG3zB,EAAI0zB,EAAE,GACtL,CACA,qBAAOE,CAAehiB,EAAG8hB,EAAGG,EAAM,GAChC,MAAMC,EAAKliB,EAAEiiB,GACPE,EAAKniB,EAAEiiB,EAAM,GACnBjiB,EAAEiiB,GAAOC,EAAKJ,EAAE,GAAKK,EAAKL,EAAE,GAAKA,EAAE,GACnC9hB,EAAEiiB,EAAM,GAAKC,EAAKJ,EAAE,GAAKK,EAAKL,EAAE,GAAKA,EAAE,EACzC,CACA,6BAAOM,CAAuBpiB,EAAGqM,EAAW4V,EAAM,GAChD,MAAMI,EAAKhW,EAAU,GACfsV,EAAKtV,EAAU,GACfuV,EAAKvV,EAAU,GACfiW,EAAKjW,EAAU,GACfkW,EAAKlW,EAAU,GACfmW,EAAKnW,EAAU,GACrB,IAAK,IAAItf,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAC7B,MAAM01B,EAAKziB,EAAEiiB,EAAMl1B,GACb21B,EAAM1iB,EAAEiiB,EAAMl1B,EAAI,GACxBiT,EAAEiiB,EAAMl1B,GAAK01B,EAAKJ,EAAKK,EAAMd,EAAKW,EAClCviB,EAAEiiB,EAAMl1B,EAAI,GAAK01B,EAAKd,EAAKe,EAAMJ,EAAKE,CACxC,CACF,CACA,4BAAOG,CAAsB3iB,EAAG8hB,GAC9B,MAAMI,EAAKliB,EAAE,GACPmiB,EAAKniB,EAAE,GACPJ,EAAIkiB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACjC9hB,EAAE,IAAMkiB,EAAKJ,EAAE,GAAKK,EAAKL,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMliB,EAC7DI,EAAE,KAAOkiB,EAAKJ,EAAE,GAAKK,EAAKL,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMliB,CAChE,CACA,8BAAOgjB,CAAwBC,EAAMxW,EAAWyW,GAC9C,MAAMT,EAAKhW,EAAU,GACfsV,EAAKtV,EAAU,GACfuV,EAAKvV,EAAU,GACfiW,EAAKjW,EAAU,GACfkW,EAAKlW,EAAU,GACfmW,EAAKnW,EAAU,GACf0W,EAAKF,EAAK,GACVG,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GACVK,EAAKL,EAAK,GAChB,IAAIM,EAAKd,EAAKU,EAAKR,EACfa,EAAKD,EACLE,EAAKhB,EAAKY,EAAKV,EACfe,EAAKD,EACLE,EAAKjB,EAAKU,EAAKR,EACfgB,EAAKD,EACLE,EAAKnB,EAAKY,EAAKV,EACfkB,EAAKD,EACT,GAAW,IAAP9B,GAAmB,IAAPC,EAAU,CACxB,MAAM+B,EAAOhC,EAAKoB,EACZa,EAAOjC,EAAKsB,EACZY,EAAOjC,EAAKoB,EACZc,EAAOlC,EAAKsB,EAClBC,GAAMU,EACNP,GAAMO,EACNR,GAAMS,EACNV,GAAMU,EACNP,GAAMI,EACND,GAAMC,EACNF,GAAMG,EACNJ,GAAMI,CACR,CACAd,EAAO,GAAKt4B,KAAKoN,IAAIkrB,EAAO,GAAIK,EAAIE,EAAID,EAAIE,GAC5CR,EAAO,GAAKt4B,KAAKoN,IAAIkrB,EAAO,GAAIS,EAAIE,EAAID,EAAIE,GAC5CZ,EAAO,GAAKt4B,KAAKmN,IAAImrB,EAAO,GAAIK,EAAIE,EAAID,EAAIE,GAC5CR,EAAO,GAAKt4B,KAAKmN,IAAImrB,EAAO,GAAIS,EAAIE,EAAID,EAAIE,EAC9C,CACA,uBAAOK,CAAiBjC,GACtB,MAAMliB,EAAIkiB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACjC,MAAO,CAACA,EAAE,GAAKliB,GAAIkiB,EAAE,GAAKliB,GAAIkiB,EAAE,GAAKliB,EAAGkiB,EAAE,GAAKliB,GAAIkiB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMliB,GAAIkiB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMliB,EACnH,CACA,oCAAOokB,CAA8BC,EAAQnB,GAC3C,MAAMT,EAAK4B,EAAO,GACZtC,EAAKsC,EAAO,GACZrC,EAAKqC,EAAO,GACZ3B,EAAK2B,EAAO,GACZnrB,EAAIupB,GAAM,EAAIV,GAAM,EACpB5oB,EAAIspB,EAAKT,EAAKD,EAAKW,EACnBd,EAAII,GAAM,EAAIU,GAAM,EACpB4B,GAASprB,EAAI0oB,GAAK,EAClB2C,EAAS35B,KAAK45B,KAAKF,GAAS,GAAKprB,EAAI0oB,EAAIzoB,GAAK,IACpD+pB,EAAO,GAAKt4B,KAAK45B,KAAKF,EAAQC,GAAU,GACxCrB,EAAO,GAAKt4B,KAAK45B,KAAKF,EAAQC,GAAU,EAC1C,CACA,oBAAOE,CAAcxB,GACnB,MAAMzB,EAAIyB,EAAK57B,MAAM,GASrB,OARI47B,EAAK,GAAKA,EAAK,KACjBzB,EAAE,GAAKyB,EAAK,GACZzB,EAAE,GAAKyB,EAAK,IAEVA,EAAK,GAAKA,EAAK,KACjBzB,EAAE,GAAKyB,EAAK,GACZzB,EAAE,GAAKyB,EAAK,IAEPzB,CACT,CACA,gBAAOkD,CAAUC,EAAOC,GACtB,MAAMC,EAAOj6B,KAAKmN,IAAInN,KAAKoN,IAAI2sB,EAAM,GAAIA,EAAM,IAAK/5B,KAAKoN,IAAI4sB,EAAM,GAAIA,EAAM,KACvEE,EAAQl6B,KAAKoN,IAAIpN,KAAKmN,IAAI4sB,EAAM,GAAIA,EAAM,IAAK/5B,KAAKmN,IAAI6sB,EAAM,GAAIA,EAAM,KAC9E,GAAIC,EAAOC,EACT,OAAO,KAET,MAAMC,EAAOn6B,KAAKmN,IAAInN,KAAKoN,IAAI2sB,EAAM,GAAIA,EAAM,IAAK/5B,KAAKoN,IAAI4sB,EAAM,GAAIA,EAAM,KACvEI,EAAQp6B,KAAKoN,IAAIpN,KAAKmN,IAAI4sB,EAAM,GAAIA,EAAM,IAAK/5B,KAAKmN,IAAI6sB,EAAM,GAAIA,EAAM,KAC9E,OAAIG,EAAOC,EACF,KAEF,CAACH,EAAME,EAAMD,EAAOE,EAC7B,CACA,uBAAOC,CAAiBl6B,EAAG2X,EAAGof,GAC5BA,EAAO,GAAKl3B,KAAKoN,IAAI8pB,EAAO,GAAI/2B,GAChC+2B,EAAO,GAAKl3B,KAAKoN,IAAI8pB,EAAO,GAAIpf,GAChCof,EAAO,GAAKl3B,KAAKmN,IAAI+pB,EAAO,GAAI/2B,GAChC+2B,EAAO,GAAKl3B,KAAKmN,IAAI+pB,EAAO,GAAIpf,EAClC,CACA,sBAAOwiB,CAAgBC,EAAIC,EAAIC,EAAIC,EAAIxD,GACrCA,EAAO,GAAKl3B,KAAKoN,IAAI8pB,EAAO,GAAIqD,EAAIE,GACpCvD,EAAO,GAAKl3B,KAAKoN,IAAI8pB,EAAO,GAAIsD,EAAIE,GACpCxD,EAAO,GAAKl3B,KAAKmN,IAAI+pB,EAAO,GAAIqD,EAAIE,GACpCvD,EAAO,GAAKl3B,KAAKmN,IAAI+pB,EAAO,GAAIsD,EAAIE,EACtC,CACA,QAAO,CAAoBH,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,EAAIC,EAAG7D,GAC5D,GAAI6D,GAAK,GAAKA,GAAK,EACjB,OAEF,MAAMC,EAAK,EAAID,EACTE,EAAKF,EAAIA,EACTG,EAAMD,EAAKF,EACX56B,EAAI66B,GAAMA,GAAMA,EAAKT,EAAK,EAAIQ,EAAIN,GAAM,EAAIQ,EAAKN,GAAMO,EAAMN,EAC7D9iB,EAAIkjB,GAAMA,GAAMA,EAAKR,EAAK,EAAIO,EAAIL,GAAM,EAAIO,EAAKJ,GAAMK,EAAMJ,EACnE5D,EAAO,GAAKl3B,KAAKoN,IAAI8pB,EAAO,GAAI/2B,GAChC+2B,EAAO,GAAKl3B,KAAKoN,IAAI8pB,EAAO,GAAIpf,GAChCof,EAAO,GAAKl3B,KAAKmN,IAAI+pB,EAAO,GAAI/2B,GAChC+2B,EAAO,GAAKl3B,KAAKmN,IAAI+pB,EAAO,GAAIpf,EAClC,CACA,QAAO,CAAayiB,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,EAAIxsB,EAAGC,EAAGyoB,EAAGE,GAC3D,GAAIl3B,KAAKm7B,IAAI7sB,GAAK,MAIhB,YAHItO,KAAKm7B,IAAI5sB,IAAM,OACjBjV,MAAK,EAAoBihC,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,GAAK9D,EAAIzoB,EAAG2oB,IAIrE,MAAMkE,EAAQ7sB,GAAK,EAAI,EAAIyoB,EAAI1oB,EAC/B,GAAI8sB,EAAQ,EACV,OAEF,MAAMC,EAAYr7B,KAAK45B,KAAKwB,GACtBxC,EAAK,EAAItqB,EACfhV,MAAK,EAAoBihC,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,IAAMvsB,EAAI8sB,GAAazC,EAAI1B,GAChF59B,MAAK,EAAoBihC,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,IAAMvsB,EAAI8sB,GAAazC,EAAI1B,EAClF,CACA,wBAAOoE,CAAkBf,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,EAAID,EAAIE,EAAI5D,GACvDA,EAAO,GAAKl3B,KAAKoN,IAAI8pB,EAAO,GAAIqD,EAAIK,GACpC1D,EAAO,GAAKl3B,KAAKoN,IAAI8pB,EAAO,GAAIsD,EAAIM,GACpC5D,EAAO,GAAKl3B,KAAKmN,IAAI+pB,EAAO,GAAIqD,EAAIK,GACpC1D,EAAO,GAAKl3B,KAAKmN,IAAI+pB,EAAO,GAAIsD,EAAIM,GACpCxhC,MAAK,EAAaihC,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,EAAI,GAAW,GAAKL,EAAKE,GAAfJ,EAAqBK,GAAK,GAAKL,EAAK,EAAIE,EAAKE,GAAK,GAAKF,EAAKF,GAAKrD,GACzH59B,MAAK,EAAaihC,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,EAAI,GAAW,GAAKJ,EAAKG,GAAfL,EAAqBM,GAAK,GAAKN,EAAK,EAAIE,EAAKG,GAAK,GAAKH,EAAKF,GAAKtD,EAC3H,EA+CF,SAASvE,GAAmBiC,GAC1B,OAAO2G,mBAAmBC,OAAO5G,GACnC,CAsBA,IAAI6G,GAAiB,KACjBC,GAAmB,KACvB,SAASC,GAAiB/G,GAKxB,OAJK6G,KACHA,GAAiB,2UACjBC,GAAmB,IAAI98B,IAAI,CAAC,CAAC,IAAK,SAE7Bg2B,EAAIgH,WAAWH,GAAgB,CAACI,EAAGlE,EAAImE,IAAOnE,EAAKA,EAAGxvB,UAAU,QAAUuzB,GAAiBv/B,IAAI2/B,GACxG,CACA,SAASC,KACP,GAAiC,oBAAtBC,OAAOC,WAChB,OAAOD,OAAOC,aAEhB,MAAMC,EAAM,IAAIrH,WAAW,IAE3B,OADAmH,OAAOG,gBAAgBD,GAChB/H,GAAc+H,EACvB,CACA,MAAME,GAAmB,qBACzB,SAASC,GAAqBC,EAAUC,EAAWC,GACjD,IAAK3yB,MAAMS,QAAQkyB,IAASA,EAAKpiC,OAAS,EACxC,OAAO,EAET,MAAOkc,EAAMmmB,KAASC,GAAQF,EAC9B,IAAKF,EAAShmB,KAAUyE,OAAOyW,UAAUlb,GACvC,OAAO,EAET,IAAKimB,EAAUE,GACb,OAAO,EAET,MAAME,EAAUD,EAAKtiC,OACrB,IAAIwiC,GAAY,EAChB,OAAQH,EAAKz/B,MACX,IAAK,MACH,GAAI2/B,EAAU,GAAKA,EAAU,EAC3B,OAAO,EAET,MACF,IAAK,MACL,IAAK,OACH,OAAmB,IAAZA,EACT,IAAK,OACL,IAAK,QACL,IAAK,OACL,IAAK,QACH,GAAIA,EAAU,EACZ,OAAO,EAET,MACF,IAAK,OACH,GAAgB,IAAZA,EACF,OAAO,EAETC,GAAY,EACZ,MACF,QACE,OAAO,EAEX,IAAK,MAAMC,KAAOH,EAChB,KAAmB,kBAARG,GAAoBD,GAAqB,OAARC,GAG5C,OAAO,EAET,OAAO,CACT,CACA,SAASC,GAAUh+B,EAAGsO,EAAKD,GACzB,OAAOnN,KAAKoN,IAAIpN,KAAKmN,IAAIrO,EAAGsO,GAAMD,EACpC,CAOA,SAAS4vB,GAAaC,GACpB,OAAInI,WAAWr3B,UAAUy/B,SAChBD,EAAIC,WAENC,KAAK/I,GAAc6I,GAC5B,CACA,SAASG,GAAevI,GACtB,OAAIC,WAAWuI,WACNvI,WAAWuI,WAAWxI,GAExBD,GAAc0I,KAAKzI,GAC5B,CAC2B,oBAAhB/Z,QAAQyiB,MACjBziB,QAAQyiB,IAAM,SAAUp2B,KAAOw1B,GAC7B,OAAO,IAAI7hB,QAAQ0iB,IACjBA,EAAQr2B,KAAMw1B,KAElB,GAE6B,oBAApB18B,KAAKw9B,aACdx9B,KAAKw9B,WAAa,SAAUC,GAC1B,OAAOA,EAAQC,OAAO,CAACpvB,EAAGC,IAAMD,EAAIC,EAAG,EACzC,GAIF,MAAMovB,GACJ,kBAAOC,CAAYC,GACjB,MAAMC,EAAQ,GACRxF,EAAS,CACbwF,QACAC,OAAQxhC,OAAOwJ,OAAO,OAExB,SAASi4B,EAAKC,GACZ,IAAKA,EACH,OAEF,IAAIrJ,EAAM,KACV,MAAM53B,EAAOihC,EAAKjhC,KAClB,GAAa,UAATA,EACF43B,EAAMqJ,EAAK7iC,UACN,KAAKuiC,GAAQO,gBAAgBlhC,GAClC,OACSihC,GAAME,YAAYP,YAC3BhJ,EAAMqJ,EAAKE,WAAWP,YACbK,EAAK7iC,QACdw5B,EAAMqJ,EAAK7iC,MACb,CAMA,GALY,OAARw5B,GACFkJ,EAAMv6B,KAAK,CACTqxB,QAGCqJ,EAAKG,SAGV,IAAK,MAAMC,KAASJ,EAAKG,SACvBJ,EAAKK,EAET,CAEA,OADAL,EAAKH,GACEvF,CACT,CACA,sBAAO4F,CAAgBlhC,GACrB,QAAkB,aAATA,GAAgC,UAATA,GAA6B,WAATA,GAA8B,WAATA,EAC3E,EAKF,MAAMshC,GACJ,mBAAOC,CAAar6B,EAAM2E,EAAI21B,EAASC,EAASC,GAC9C,MAAMC,EAAaF,EAAQG,SAAS/1B,EAAI,CACtCzN,MAAO,OAET,OAAQojC,EAAQxhC,MACd,IAAK,WAIH,GAHyB,OAArB2hC,EAAWvjC,QACb8I,EAAK05B,YAAce,EAAWvjC,OAEjB,UAAXsjC,EACF,MAEFx6B,EAAKke,iBAAiB,QAASG,IAC7Bkc,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOmnB,EAAM5nB,OAAOS,UAGxB,MACF,IAAK,QACH,GAAgC,UAA5BojC,EAAQL,WAAWp8B,MAAgD,aAA5By8B,EAAQL,WAAWp8B,KAAqB,CAMjF,GALI48B,EAAWvjC,QAAUojC,EAAQL,WAAWW,MAC1C56B,EAAK66B,aAAa,WAAW,GACpBJ,EAAWvjC,QAAUojC,EAAQL,WAAWa,QACjD96B,EAAK+6B,gBAAgB,WAER,UAAXP,EACF,MAEFx6B,EAAKke,iBAAiB,SAAUG,IAC9Bkc,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOmnB,EAAM5nB,OAAOukC,QAAU3c,EAAM5nB,OAAOwkC,aAAa,SAAW5c,EAAM5nB,OAAOwkC,aAAa,aAGnG,KAAO,CAIL,GAHyB,OAArBR,EAAWvjC,OACb8I,EAAK66B,aAAa,QAASJ,EAAWvjC,OAEzB,UAAXsjC,EACF,MAEFx6B,EAAKke,iBAAiB,QAASG,IAC7Bkc,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOmnB,EAAM5nB,OAAOS,SAG1B,CACA,MACF,IAAK,SACH,GAAyB,OAArBujC,EAAWvjC,MAAgB,CAC7B8I,EAAK66B,aAAa,QAASJ,EAAWvjC,OACtC,IAAK,MAAMgkC,KAAUZ,EAAQJ,SACvBgB,EAAOjB,WAAW/iC,QAAUujC,EAAWvjC,MACzCgkC,EAAOjB,WAAWxf,UAAW,EACpBygB,EAAOjB,WAAWz+B,eAAe,oBACnC0/B,EAAOjB,WAAWxf,QAG/B,CACAza,EAAKke,iBAAiB,QAASG,IAC7B,MAAMtlB,EAAUslB,EAAM5nB,OAAOsC,QACvB7B,GAAmC,IAA3B6B,EAAQoiC,cAAuB,GAAKpiC,EAAQA,EAAQoiC,eAAejkC,MACjFqjC,EAAQI,SAASh2B,EAAI,CACnBzN,YAGJ,MAEN,CACA,oBAAOkkC,EAAc,KACnBp7B,EAAI,QACJs6B,EAAO,QACPC,EAAU,KAAI,OACdC,EAAM,YACNa,IAEA,MAAM,WACJpB,GACEK,EACEgB,EAAsBt7B,aAAgBu7B,kBACpB,UAApBtB,EAAWp8B,OACbo8B,EAAWnhC,KAAO,GAAGmhC,EAAWnhC,QAAQ0hC,KAE1C,IAAK,MAAOh7B,EAAKtI,KAAUmB,OAAOsC,QAAQs/B,GACxC,GAAc,OAAV/iC,QAA4BqC,IAAVrC,EAGtB,OAAQsI,GACN,IAAK,QACCtI,EAAMhB,QACR8J,EAAK66B,aAAar7B,EAAKtI,EAAMuB,KAAK,MAEpC,MACF,IAAK,SACH,MACF,IAAK,KACHuH,EAAK66B,aAAa,kBAAmB3jC,GACrC,MACF,IAAK,QACHmB,OAAOmjC,OAAOx7B,EAAKmB,MAAOjK,GAC1B,MACF,IAAK,cACH8I,EAAK05B,YAAcxiC,EACnB,MACF,UACOokC,GAA+B,SAAR97B,GAA0B,cAARA,IAC5CQ,EAAK66B,aAAar7B,EAAKtI,GAI3BokC,GACFD,EAAYI,kBAAkBz7B,EAAMi6B,EAAWhL,KAAMgL,EAAWyB,WAE9DnB,GAAWN,EAAW0B,QACxBvmC,KAAKilC,aAAar6B,EAAMi6B,EAAW0B,OAAQrB,EAASC,EAExD,CACA,aAAO/oB,CAAOoqB,GACZ,MAAMrB,EAAUqB,EAAWC,kBACrBR,EAAcO,EAAWP,YACzBxmC,EAAO+mC,EAAWE,QAClBtB,EAASoB,EAAWpB,QAAU,UAC9BuB,EAAWv6B,SAAS0D,cAAcrQ,EAAKiE,MACzCjE,EAAKolC,YACP7kC,KAAKgmC,cAAc,CACjBp7B,KAAM+7B,EACNzB,QAASzlC,EACT2lC,SACAa,gBAGJ,MAAMW,EAA8B,aAAXxB,EACnByB,EAAUL,EAAWM,IAE3B,GADAD,EAAQE,OAAOJ,GACXH,EAAWxjB,SAAU,CACvB,MAAMuF,EAAY,UAAUie,EAAWxjB,SAASuF,UAAUllB,KAAK,QAC/DwjC,EAAQ96B,MAAMwc,UAAYA,CAC5B,CACIqe,GACFC,EAAQpB,aAAa,QAAS,oBAEhC,MAAMuB,EAAW,GACjB,GAA6B,IAAzBvnC,EAAKqlC,SAAShkC,OAAc,CAC9B,GAAIrB,EAAKqC,MAAO,CACd,MAAM6iC,EAAOv4B,SAAS66B,eAAexnC,EAAKqC,OAC1C6kC,EAASI,OAAOpC,GACZiC,GAAoBvC,GAAQO,gBAAgBnlC,EAAKiE,OACnDsjC,EAAS/8B,KAAK06B,EAElB,CACA,MAAO,CACLqC,WAEJ,CACA,MAAME,EAAQ,CAAC,CAACznC,GAAO,EAAGknC,IAC1B,MAAOO,EAAMpmC,OAAS,EAAG,CACvB,MAAOmjB,EAAQhb,EAAG2B,GAAQs8B,EAAMC,IAAI,GACpC,GAAIl+B,EAAI,IAAMgb,EAAO6gB,SAAShkC,OAAQ,CACpComC,EAAME,MACN,QACF,CACA,MAAMrC,EAAQ9gB,EAAO6gB,WAAWoC,EAAMC,IAAI,GAAG,IAC7C,GAAc,OAAVpC,EACF,SAEF,MAAM,KACJrhC,GACEqhC,EACJ,GAAa,UAATrhC,EAAkB,CACpB,MAAMihC,EAAOv4B,SAAS66B,eAAelC,EAAMjjC,OAC3CklC,EAAS/8B,KAAK06B,GACd/5B,EAAKm8B,OAAOpC,GACZ,QACF,CACA,MAAM0C,EAAYtC,GAAOF,YAAYyC,MAAQl7B,SAASm7B,gBAAgBxC,EAAMF,WAAWyC,MAAO5jC,GAAQ0I,SAAS0D,cAAcpM,GAW7H,GAVAkH,EAAKm8B,OAAOM,GACRtC,EAAMF,YACR7kC,KAAKgmC,cAAc,CACjBp7B,KAAMy8B,EACNnC,QAASH,EACTI,UACAC,SACAa,gBAGAlB,EAAMD,UAAUhkC,OAAS,EAC3BomC,EAAMj9B,KAAK,CAAC86B,GAAQ,EAAGsC,SAClB,GAAItC,EAAMjjC,MAAO,CACtB,MAAM6iC,EAAOv4B,SAAS66B,eAAelC,EAAMjjC,OACvC8kC,GAAoBvC,GAAQO,gBAAgBlhC,IAC9CsjC,EAAS/8B,KAAK06B,GAEhB0C,EAAUN,OAAOpC,EACnB,CACF,CACA,IAAK,MAAMrpB,KAAMurB,EAAQW,iBAAiB,yDACxClsB,EAAGmqB,aAAa,YAAY,GAE9B,MAAO,CACLuB,WAEJ,CACA,aAAOS,CAAOjB,GACZ,MAAMje,EAAY,UAAUie,EAAWxjB,SAASuF,UAAUllB,KAAK,QAC/DmjC,EAAWM,IAAI/6B,MAAMwc,UAAYA,EACjCie,EAAWM,IAAIY,QAAS,CAC1B,EAMF,MAAMC,GAAS,6BACf,MAAMC,GACJC,WAAa,GACbA,WAAa,GACbA,wBAA0B7nC,KAAK+8B,IAAM/8B,KAAK8nC,IAE5CC,eAAeC,GAAUnP,EAAKpwB,EAAO,QACnC,GAAIw/B,GAAgBpP,EAAKzsB,SAAS87B,SAAU,CAC1C,MAAMC,QAAiBC,MAAMvP,GAC7B,IAAKsP,EAASE,GACZ,MAAM,IAAI5P,MAAM0P,EAASG,YAE3B,OAAQ7/B,GACN,IAAK,cACH,OAAO0/B,EAASzzB,cAClB,IAAK,OACH,OAAOyzB,EAASI,OAClB,IAAK,OACH,OAAOJ,EAASK,OAEpB,OAAOL,EAASM,MAClB,CACA,OAAO,IAAIlnB,QAAQ,CAAC0iB,EAASyE,KAC3B,MAAMC,EAAU,IAAIC,eACpBD,EAAQt8B,KAAK,MAAOwsB,GAAK,GACzB8P,EAAQE,aAAepgC,EACvBkgC,EAAQG,mBAAqB,KAC3B,GAAIH,EAAQI,aAAeH,eAAeI,KAG1C,GAAuB,MAAnBL,EAAQlO,QAAqC,IAAnBkO,EAAQlO,OAWtCiO,EAAO,IAAIjQ,MAAMkQ,EAAQL,iBAXzB,CACE,OAAQ7/B,GACN,IAAK,cACL,IAAK,OACL,IAAK,OAEH,YADAw7B,EAAQ0E,EAAQR,UAGpBlE,EAAQ0E,EAAQM,aAElB,GAGFN,EAAQO,KAAK,OAEjB,CACA,MAAMC,GACJ,WAAAnlC,EAAY,QACVolC,EAAO,SACPC,EAAQ,MACR1rB,EAAK,SACL2rB,EAAQ,QACRpiB,EAAU,EAAC,QACXC,EAAU,EAAC,SACXoiB,GAAW,IAEXvpC,KAAKopC,QAAUA,EACfppC,KAAKqpC,SAAWA,EAChBrpC,KAAK2d,MAAQA,EACb3d,KAAKspC,SAAWA,EAChBtpC,KAAKknB,QAAUA,EACflnB,KAAKmnB,QAAUA,EACfxJ,GAAS0rB,EACT,MAAMG,GAAWJ,EAAQ,GAAKA,EAAQ,IAAM,EACtCK,GAAWL,EAAQ,GAAKA,EAAQ,IAAM,EAC5C,IAAIM,EAASC,EAASC,EAASC,EAqC3BC,EAAeC,EACfttB,EAAOC,EAjCX,OAJA4sB,GAAY,IACRA,EAAW,IACbA,GAAY,KAENA,GACN,KAAK,IACHI,GAAW,EACXC,EAAU,EACVC,EAAU,EACVC,EAAU,EACV,MACF,KAAK,GACHH,EAAU,EACVC,EAAU,EACVC,EAAU,EACVC,EAAU,EACV,MACF,KAAK,IACHH,EAAU,EACVC,GAAW,EACXC,GAAW,EACXC,EAAU,EACV,MACF,KAAK,EACHH,EAAU,EACVC,EAAU,EACVC,EAAU,EACVC,GAAW,EACX,MACF,QACE,MAAM,IAAIpR,MAAM,qEAEhB8Q,IACFK,GAAWA,EACXC,GAAWA,GAIG,IAAZH,GACFI,EAAgBpjC,KAAKm7B,IAAI4H,EAAUL,EAAQ,IAAMzrB,EAAQuJ,EACzD6iB,EAAgBrjC,KAAKm7B,IAAI2H,EAAUJ,EAAQ,IAAMzrB,EAAQwJ,EACzD1K,GAAS2sB,EAAQ,GAAKA,EAAQ,IAAMzrB,EACpCjB,GAAU0sB,EAAQ,GAAKA,EAAQ,IAAMzrB,IAErCmsB,EAAgBpjC,KAAKm7B,IAAI2H,EAAUJ,EAAQ,IAAMzrB,EAAQuJ,EACzD6iB,EAAgBrjC,KAAKm7B,IAAI4H,EAAUL,EAAQ,IAAMzrB,EAAQwJ,EACzD1K,GAAS2sB,EAAQ,GAAKA,EAAQ,IAAMzrB,EACpCjB,GAAU0sB,EAAQ,GAAKA,EAAQ,IAAMzrB,GAEvC3d,KAAKuoB,UAAY,CAACmhB,EAAU/rB,EAAOgsB,EAAUhsB,EAAOisB,EAAUjsB,EAAOksB,EAAUlsB,EAAOmsB,EAAgBJ,EAAU/rB,EAAQ6rB,EAAUI,EAAUjsB,EAAQ8rB,EAASM,EAAgBJ,EAAUhsB,EAAQ6rB,EAAUK,EAAUlsB,EAAQ8rB,GAC3NzpC,KAAKyc,MAAQA,EACbzc,KAAK0c,OAASA,CAChB,CACA,WAAIstB,GACF,MAAMC,EAAOjqC,KAAKopC,QAClB,OAAOtP,EAAO95B,KAAM,UAAW,CAC7B+lB,UAAWkkB,EAAK,GAAKA,EAAK,GAC1BjkB,WAAYikB,EAAK,GAAKA,EAAK,GAC3BC,MAAOD,EAAK,GACZE,MAAOF,EAAK,IAEhB,CACA,KAAA1gC,EAAM,MACJoU,EAAQ3d,KAAK2d,MAAK,SAClB2rB,EAAWtpC,KAAKspC,SAAQ,QACxBpiB,EAAUlnB,KAAKknB,QAAO,QACtBC,EAAUnnB,KAAKmnB,QAAO,SACtBoiB,GAAW,GACT,CAAC,GACH,OAAO,IAAIJ,GAAa,CACtBC,QAASppC,KAAKopC,QAAQjmC,QACtBkmC,SAAUrpC,KAAKqpC,SACf1rB,QACA2rB,WACApiB,UACAC,UACAoiB,YAEJ,CACA,sBAAAa,CAAuBvjC,EAAG2X,GACxB,MAAMtC,EAAI,CAACrV,EAAG2X,GAEd,OADA4e,GAAKc,eAAehiB,EAAGlc,KAAKuoB,WACrBrM,CACT,CACA,0BAAAmuB,CAA2BtL,GACzB,MAAMuL,EAAU,CAACvL,EAAK,GAAIA,EAAK,IAC/B3B,GAAKc,eAAeoM,EAAStqC,KAAKuoB,WAClC,MAAMgiB,EAAc,CAACxL,EAAK,GAAIA,EAAK,IAEnC,OADA3B,GAAKc,eAAeqM,EAAavqC,KAAKuoB,WAC/B,CAAC+hB,EAAQ,GAAIA,EAAQ,GAAIC,EAAY,GAAIA,EAAY,GAC9D,CACA,iBAAAC,CAAkB3jC,EAAG2X,GACnB,MAAMtC,EAAI,CAACrV,EAAG2X,GAEd,OADA4e,GAAKyB,sBAAsB3iB,EAAGlc,KAAKuoB,WAC5BrM,CACT,EAEF,MAAMuuB,WAAoCzQ,EACxC,WAAAh2B,CAAYq0B,EAAKqS,EAAa,GAC5BtQ,MAAM/B,EAAK,+BACXr4B,KAAK0qC,WAAaA,CACpB,EAEF,SAASC,GAAa9R,GACpB,MAAM+R,EAAK/R,EAAI/3B,OACf,IAAImI,EAAI,EACR,MAAOA,EAAI2hC,GAAwB,KAAlB/R,EAAI5vB,GAAG4hC,OACtB5hC,IAEF,MAAiD,UAA1C4vB,EAAIiS,UAAU7hC,EAAGA,EAAI,GAAGgG,aACjC,CACA,SAAS87B,GAAUC,GACjB,MAA2B,kBAAbA,GAAyB,UAAU9kC,KAAK8kC,EACxD,CACA,SAASC,GAAmBpS,GAE1B,OADCA,GAAOA,EAAIr1B,MAAM,OAAQ,GACnBq1B,EAAIiS,UAAUjS,EAAIqS,YAAY,KAAO,EAC9C,CACA,SAASC,GAAsBtS,EAAKuS,EAAkB,gBACpD,GAAmB,kBAARvS,EACT,OAAOuS,EAET,GAAIT,GAAa9R,GAEf,OADAN,EAAK,sEACE6S,EAET,MAAMC,EAASC,IACb,IACE,OAAO,IAAI/R,IAAI+R,EACjB,CAAE,MACA,IACE,OAAO,IAAI/R,IAAI0I,mBAAmBqJ,GACpC,CAAE,MACA,IACE,OAAO,IAAI/R,IAAI+R,EAAW,kBAC5B,CAAE,MACA,IACE,OAAO,IAAI/R,IAAI0I,mBAAmBqJ,GAAY,kBAChD,CAAE,MACA,OAAO,IACT,CACF,CACF,CACF,GAEIC,EAASF,EAAOxS,GACtB,IAAK0S,EACH,OAAOH,EAET,MAAMI,EAAS9nC,IACb,IACE,IAAI+nC,EAAUxJ,mBAAmBv+B,GACjC,OAAI+nC,EAAQjwB,SAAS,MACnBiwB,EAAUA,EAAQjoC,MAAM,KAAK2jC,IAAI,GAC7BsE,EAAQvlC,KAAK,YACRulC,EAEF/nC,GAEF+nC,CACT,CAAE,MACA,OAAO/nC,CACT,GAEIgoC,EAAW,UACXV,EAAWO,EAAOI,SAASnoC,MAAM,KAAK2jC,IAAI,GAChD,GAAIuE,EAASxlC,KAAK8kC,GAChB,OAAOQ,EAAOR,GAEhB,GAAIO,EAAOK,aAAaC,KAAO,EAAG,CAChC,MAAMC,EAASv7B,MAAM2sB,KAAKqO,EAAOK,aAAaE,UAAUC,UACxD,IAAK,MAAMjqC,KAASgqC,EAClB,GAAIJ,EAASxlC,KAAKpE,GAChB,OAAO0pC,EAAO1pC,GAGlB,MAAM4F,EAAO6I,MAAM2sB,KAAKqO,EAAOK,aAAalkC,QAAQqkC,UACpD,IAAK,MAAM3hC,KAAO1C,EAChB,GAAIgkC,EAASxlC,KAAKkE,GAChB,OAAOohC,EAAOphC,EAGpB,CACA,GAAImhC,EAAO7R,KAAM,CACf,MAAMsS,EAAa,gCACbC,EAAeD,EAAWtyB,KAAK6xB,EAAO7R,MAC5C,GAAIuS,EACF,OAAOT,EAAOS,EAAa,GAE/B,CACA,OAAOb,CACT,CACA,MAAMc,GACJC,QAAUlpC,OAAOwJ,OAAO,MACxB2/B,MAAQ,GACR,IAAAC,CAAK3oC,GACCA,KAAQ1D,KAAKmsC,SACf5T,EAAK,gCAAgC70B,KAEvC1D,KAAKmsC,QAAQzoC,GAAQ4oC,KAAKC,KAC5B,CACA,OAAAC,CAAQ9oC,GACAA,KAAQ1D,KAAKmsC,SACjB5T,EAAK,kCAAkC70B,KAEzC1D,KAAKosC,MAAMniC,KAAK,CACdvG,OACA+oC,MAAOzsC,KAAKmsC,QAAQzoC,GACpBgpC,IAAKJ,KAAKC,eAELvsC,KAAKmsC,QAAQzoC,EACtB,CACA,QAAAa,GACE,MAAMooC,EAAS,GACf,IAAIC,EAAU,EACd,IAAK,MAAM,KACTlpC,KACG1D,KAAKosC,MACRQ,EAAUlmC,KAAKmN,IAAInQ,EAAK5C,OAAQ8rC,GAElC,IAAK,MAAM,KACTlpC,EAAI,MACJ+oC,EAAK,IACLC,KACG1sC,KAAKosC,MACRO,EAAO1iC,KAAK,GAAGvG,EAAKmpC,OAAOD,MAAYF,EAAMD,SAE/C,OAAOE,EAAOtpC,KAAK,GACrB,EAEF,SAAS4kC,GAAgBpP,EAAKG,GAC5B,MAAMY,EAAMZ,EAAUO,IAAIC,MAAMX,EAAKG,GAAWO,IAAIC,MAAMX,GAC1D,MAAyB,UAAlBe,GAAKd,UAA0C,WAAlBc,GAAKd,QAC3C,CACA,SAASgU,GAAc1qB,GACrBA,EAAEoD,gBACJ,CACA,SAASunB,GAAU3qB,GACjBA,EAAEoD,iBACFpD,EAAEgD,iBACJ,CACA,SAAS4nB,GAAW1S,GAClBhC,QAAQ2U,IAAI,yBAA2B3S,EACzC,CACA,MAAM4S,GACJrF,SACA,mBAAOsF,CAAaj/B,GAClB,GAAIA,aAAiBo+B,KACnB,OAAOp+B,EAET,IAAKA,GAA0B,kBAAVA,EACnB,OAAO,KAETlO,MAAK,IAAW,IAAIotC,OAAO,4FAC3B,MAAMC,EAAUrtC,MAAK,EAAO0Z,KAAKxL,GACjC,IAAKm/B,EACH,OAAO,KAET,MAAMC,EAAOC,SAASF,EAAQ,GAAI,IAClC,IAAIG,EAAQD,SAASF,EAAQ,GAAI,IACjCG,EAAQA,GAAS,GAAKA,GAAS,GAAKA,EAAQ,EAAI,EAChD,IAAIC,EAAMF,SAASF,EAAQ,GAAI,IAC/BI,EAAMA,GAAO,GAAKA,GAAO,GAAKA,EAAM,EACpC,IAAIC,EAAOH,SAASF,EAAQ,GAAI,IAChCK,EAAOA,GAAQ,GAAKA,GAAQ,GAAKA,EAAO,EACxC,IAAIC,EAASJ,SAASF,EAAQ,GAAI,IAClCM,EAASA,GAAU,GAAKA,GAAU,GAAKA,EAAS,EAChD,IAAItN,EAASkN,SAASF,EAAQ,GAAI,IAClChN,EAASA,GAAU,GAAKA,GAAU,GAAKA,EAAS,EAChD,MAAMuN,EAAwBP,EAAQ,IAAM,IAC5C,IAAIQ,EAAaN,SAASF,EAAQ,GAAI,IACtCQ,EAAaA,GAAc,GAAKA,GAAc,GAAKA,EAAa,EAChE,IAAIC,EAAeP,SAASF,EAAQ,GAAI,KAAO,EAS/C,OARAS,EAAeA,GAAgB,GAAKA,GAAgB,GAAKA,EAAe,EAC1C,MAA1BF,GACFF,GAAQG,EACRF,GAAUG,GACyB,MAA1BF,IACTF,GAAQG,EACRF,GAAUG,GAEL,IAAIxB,KAAKA,KAAKyB,IAAIT,EAAME,EAAOC,EAAKC,EAAMC,EAAQtN,GAC3D,EAEF,SAAS2N,GAAmBC,GAAS,MACnCtwB,EAAQ,EAAC,SACT2rB,EAAW,IAEX,MAAM,MACJ7sB,EAAK,OACLC,GACEuxB,EAAQpJ,WAAW94B,MACjBq9B,EAAU,CAAC,EAAG,EAAGmE,SAAS9wB,GAAQ8wB,SAAS7wB,IACjD,OAAO,IAAIysB,GAAa,CACtBC,UACAC,SAAU,EACV1rB,QACA2rB,YAEJ,CACA,SAAS4E,GAAOC,GACd,GAAIA,EAAMjV,WAAW,KAAM,CACzB,MAAMkV,EAAWb,SAASY,EAAMhrC,MAAM,GAAI,IAC1C,MAAO,EAAa,SAAXirC,IAAwB,IAAgB,MAAXA,IAAwB,EAAc,IAAXA,EACnE,CACA,OAAID,EAAMjV,WAAW,QACZiV,EAAMhrC,MAAM,GAAI,GAAGK,MAAM,KAAKqG,IAAIhD,GAAK0mC,SAAS1mC,IAErDsnC,EAAMjV,WAAW,SACZiV,EAAMhrC,MAAM,GAAI,GAAGK,MAAM,KAAKqG,IAAIhD,GAAK0mC,SAAS1mC,IAAI1D,MAAM,EAAG,IAEtEo1B,EAAK,8BAA8B4V,MAC5B,CAAC,EAAG,EAAG,GAChB,CACA,SAASE,GAAeC,GACtB,MAAMC,EAAOniC,SAAS0D,cAAc,QACpCy+B,EAAKxiC,MAAMyiC,WAAa,SACxBD,EAAKxiC,MAAM0iC,YAAc,aACzBriC,SAASsiC,KAAK3H,OAAOwH,GACrB,IAAK,MAAM7qC,KAAQ4qC,EAAO5mC,OAAQ,CAChC6mC,EAAKxiC,MAAMoiC,MAAQzqC,EACnB,MAAMirC,EAAgB99B,OAAO+9B,iBAAiBL,GAAMJ,MACpDG,EAAO1mC,IAAIlE,EAAMwqC,GAAOS,GAC1B,CACAJ,EAAKM,QACP,CACA,SAASC,GAAoBC,GAC3B,MAAM,EACJ/5B,EAAC,EACDC,EAAC,EACDyoB,EAAC,EACD5hB,EAAC,EACDsG,EAAC,EACD9X,GACEykC,EAAIC,eACR,MAAO,CAACh6B,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,EACzB,CACA,SAAS2kC,GAA2BF,GAClC,MAAM,EACJ/5B,EAAC,EACDC,EAAC,EACDyoB,EAAC,EACD5hB,EAAC,EACDsG,EAAC,EACD9X,GACEykC,EAAIC,eAAeE,aACvB,MAAO,CAACl6B,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,EACzB,CACA,SAAS6kC,GAAmBrI,EAAK9jB,EAAUosB,GAAW,EAAOC,GAAa,GACxE,GAAIrsB,aAAoBmmB,GAAc,CACpC,MAAM,UACJpjB,EAAS,WACTC,GACEhD,EAASgnB,SACP,MACJj+B,GACE+6B,EACEwI,EAAWvT,GAAiBe,oBAC5ByS,EAAI,+BAA+BxpB,MACvCpB,EAAI,+BAA+BqB,MAC/BwpB,EAAWF,EAAW,eAAeC,2BAA6B,QAAQA,KAC9EE,EAAYH,EAAW,eAAe3qB,2BAA6B,QAAQA,KACxEyqB,GAAYpsB,EAASsmB,SAAW,MAAQ,GAI3Cv9B,EAAM0Q,MAAQgzB,EACd1jC,EAAM2Q,OAAS8yB,IAJfzjC,EAAM0Q,MAAQ+yB,EACdzjC,EAAM2Q,OAAS+yB,EAKnB,CACIJ,GACFvI,EAAIrB,aAAa,qBAAsBziB,EAASsmB,SAEpD,CACA,MAAMoG,GACJ,WAAA1rC,GACE,MAAM,WACJ2rC,GACED,GACJ1vC,KAAK4vC,GAAKD,EACV3vC,KAAK6vC,GAAKF,CACZ,CACA,UAAIG,GACF,OAAmB,IAAZ9vC,KAAK4vC,IAAwB,IAAZ5vC,KAAK6vC,EAC/B,CACA,aAAIE,GACF,OAAO/vC,KAAK4vC,KAAO5vC,KAAK6vC,EAC1B,CACA,WAAAG,CAAYvzB,EAAOC,EAAQuzB,EAAWC,EAAQC,GAAgB,GAC5D,IAAIC,EAAeC,IACjBC,EAAgBD,IAChBE,EAAiBF,IACnBJ,EAAYP,GAAYc,UAAUP,EAAWE,GACzCF,EAAY,IACdG,EAAe1pC,KAAK45B,KAAK2P,GAAaxzB,EAAQC,MAEhC,IAAZwzB,IACFI,EAAgBJ,EAASzzB,EACzB8zB,EAAiBL,EAASxzB,GAE5B,MAAM+zB,EAAW/pC,KAAKoN,IAAIs8B,EAAcE,EAAeC,GACvD,OAAIvwC,KAAK4vC,GAAKa,GAAYzwC,KAAK6vC,GAAKY,KAClCzwC,KAAK4vC,GAAKa,EACVzwC,KAAK6vC,GAAKY,GACH,EAGX,CACA,qBAAWd,GACT,OAAO5nC,WAAW2oC,kBAAoB,CACxC,CACA,gBAAOF,CAAUP,EAAWE,GAC1B,GAAIA,GAAiB,EAAG,CACtB,MAAMQ,EAAYjqC,KAAKD,KAAKoK,OAAO+/B,OAAOC,WAAahgC,OAAO+/B,OAAOE,YAAc9wC,KAAK2vC,YAAc,GAAK,EAAIQ,EAAgB,MAC/H,OAAOF,EAAY,EAAIvpC,KAAKoN,IAAIm8B,EAAWU,GAAaA,CAC1D,CACA,OAAOV,CACT,EAEF,MAAMc,GAA0B,CAAC,aAAc,aAAc,YAAa,YAAa,aAAc,YAAa,gBAAiB,aAAc,gBACjJ,MAAMC,GACJ,qBAAWC,GACT,OAAOnX,EAAO95B,KAAM,eAAgB6Q,QAAQqgC,aAAa,gCAAgC7D,QAC3F,EAEF,MAAM8D,GACJ,iCAAWC,GACT,MAAMlM,EAAU94B,SAAS0D,cAAc,QACvCo1B,EAAQ1b,UAAUpF,IAAI,UAAW,WACjC,MAAM,MACJrY,GACEm5B,EACJn5B,EAAM0Q,MAAQ1Q,EAAM2Q,OAAS,IAC7B3Q,EAAMC,QAAU,OAChBD,EAAMoiC,MAAQ,0BACd/hC,SAASsiC,KAAK3H,OAAO7B,GACrB,MAAM,MACJiJ,GACEt9B,OAAO+9B,iBAAiB1J,GAE5B,OADAA,EAAQ2J,SACD/U,EAAO95B,KAAM,yBAA0BkuC,GAAOC,GACvD,EAEF,SAASkD,GAAa/T,EAAGC,EAAGtoB,EAAGuT,GAC7BA,EAAU9hB,KAAKoN,IAAIpN,KAAKmN,IAAI2U,GAAW,EAAG,GAAI,GAC9C,MAAM8oB,EAAQ,KAAO,EAAI9oB,GAIzB,OAHA8U,EAAI52B,KAAK6qC,MAAMjU,EAAI9U,EAAU8oB,GAC7B/T,EAAI72B,KAAK6qC,MAAMhU,EAAI/U,EAAU8oB,GAC7Br8B,EAAIvO,KAAK6qC,MAAMt8B,EAAIuT,EAAU8oB,GACtB,CAAChU,EAAGC,EAAGtoB,EAChB,CACA,SAASu8B,GAASC,EAAKzS,GACrB,MAAM1B,EAAImU,EAAI,GAAK,IACblU,EAAIkU,EAAI,GAAK,IACbx8B,EAAIw8B,EAAI,GAAK,IACb59B,EAAMnN,KAAKmN,IAAIypB,EAAGC,EAAGtoB,GACrBnB,EAAMpN,KAAKoN,IAAIwpB,EAAGC,EAAGtoB,GACrBy8B,GAAK79B,EAAMC,GAAO,EACxB,GAAID,IAAQC,EACVkrB,EAAO,GAAKA,EAAO,GAAK,MACnB,CACL,MAAMljB,EAAIjI,EAAMC,EAEhB,OADAkrB,EAAO,GAAK0S,EAAI,GAAM51B,GAAKjI,EAAMC,GAAOgI,GAAK,EAAIjI,EAAMC,GAC/CD,GACN,KAAKypB,EACH0B,EAAO,GAAuC,KAAhCzB,EAAItoB,GAAK6G,GAAKyhB,EAAItoB,EAAI,EAAI,IACxC,MACF,KAAKsoB,EACHyB,EAAO,GAAyB,KAAlB/pB,EAAIqoB,GAAKxhB,EAAI,GAC3B,MACF,KAAK7G,EACH+pB,EAAO,GAAyB,KAAlB1B,EAAIC,GAAKzhB,EAAI,GAC3B,MAEN,CACAkjB,EAAO,GAAK0S,CACd,CACA,SAASC,GAASC,EAAK5S,GACrB,MAAMra,EAAIitB,EAAI,GACRC,EAAID,EAAI,GACRF,EAAIE,EAAI,GACRlU,GAAK,EAAIh3B,KAAKm7B,IAAI,EAAI6P,EAAI,IAAMG,EAChChrC,EAAI62B,GAAK,EAAIh3B,KAAKm7B,IAAIld,EAAI,GAAK,EAAI,IACnCqZ,EAAI0T,EAAIhU,EAAI,EAClB,OAAQh3B,KAAKC,MAAMge,EAAI,KACrB,KAAK,EACHqa,EAAO,GAAKtB,EAAIM,EAChBgB,EAAO,GAAKn4B,EAAIm3B,EAChBgB,EAAO,GAAKhB,EACZ,MACF,KAAK,EACHgB,EAAO,GAAKn4B,EAAIm3B,EAChBgB,EAAO,GAAKtB,EAAIM,EAChBgB,EAAO,GAAKhB,EACZ,MACF,KAAK,EACHgB,EAAO,GAAKhB,EACZgB,EAAO,GAAKtB,EAAIM,EAChBgB,EAAO,GAAKn4B,EAAIm3B,EAChB,MACF,KAAK,EACHgB,EAAO,GAAKhB,EACZgB,EAAO,GAAKn4B,EAAIm3B,EAChBgB,EAAO,GAAKtB,EAAIM,EAChB,MACF,KAAK,EACHgB,EAAO,GAAKn4B,EAAIm3B,EAChBgB,EAAO,GAAKhB,EACZgB,EAAO,GAAKtB,EAAIM,EAChB,MACF,KAAK,EACL,KAAK,EACHgB,EAAO,GAAKtB,EAAIM,EAChBgB,EAAO,GAAKhB,EACZgB,EAAO,GAAKn4B,EAAIm3B,EAChB,MAEN,CACA,SAAS8T,GAAiBjrC,GACxB,OAAOA,GAAK,OAAUA,EAAI,QAAUA,EAAI,MAAS,QAAU,GAC7D,CACA,SAASkrC,GAAcC,EAAMC,EAAMjT,GACjC2S,GAASK,EAAMhT,GACfA,EAAOn1B,IAAIioC,IACX,MAAMI,EAAO,MAASlT,EAAO,GAAK,MAASA,EAAO,GAAK,MAASA,EAAO,GACvE2S,GAASM,EAAMjT,GACfA,EAAOn1B,IAAIioC,IACX,MAAMK,EAAO,MAASnT,EAAO,GAAK,MAASA,EAAO,GAAK,MAASA,EAAO,GACvE,OAAOkT,EAAOC,GAAQD,EAAO,MAASC,EAAO,MAASA,EAAO,MAASD,EAAO,IAC/E,CACA,MAAME,GAAgB,IAAI9sC,IAC1B,SAAS+sC,GAAkBC,EAAWC,GACpC,MAAMnoC,EAAMkoC,EAAU,GAAoB,IAAfA,EAAU,GAA4B,MAAfA,EAAU,GAA+B,SAAhBC,EAAW,GAAiC,WAAhBA,EAAW,GAAmC,cAAhBA,EAAW,GAChJ,IAAIC,EAAcJ,GAAcvvC,IAAIuH,GACpC,GAAIooC,EACF,OAAOA,EAET,MAAMC,EAAQ,IAAIC,aAAa,GACzB1T,EAASyT,EAAMrX,SAAS,EAAG,GAC3BuX,EAAUF,EAAMrX,SAAS,EAAG,GAClCoW,GAASc,EAAWK,GACpB,MAAMC,EAAWH,EAAMrX,SAAS,EAAG,GACnCoW,GAASe,EAAYK,GACrB,MAAMC,EAAmBD,EAAS,GAAK,GACjCE,EAAcD,EAAmB,GAAK,IAE5C,GADAF,EAAQ,GAAKE,EAAmBnsC,KAAK45B,KAAKqS,EAAQ,IAAM,EAAIjsC,KAAK45B,KAAK,EAAIqS,EAAQ,IAC9EZ,GAAcY,EAASC,EAAU5T,GAAU8T,EAAa,CAC1D,IAAIrG,EAAOC,EACPmG,GACFpG,EAAQkG,EAAQ,GAChBjG,EAAM,IAEND,EAAQ,EACRC,EAAMiG,EAAQ,IAEhB,MAAMI,EAAY,KAClB,MAAOrG,EAAMD,EAAQsG,EAAW,CAC9B,MAAMC,EAAML,EAAQ,IAAMlG,EAAQC,GAAO,EACrCmG,IAAqBd,GAAcY,EAASC,EAAU5T,GAAU8T,EAClErG,EAAQuG,EAERtG,EAAMsG,CAEV,CACAL,EAAQ,GAAKE,EAAmBnG,EAAMD,CACxC,CAIA,OAHAkF,GAASgB,EAAS3T,GAClBwT,EAAcpV,GAAKC,aAAa32B,KAAK6qC,MAAkB,IAAZvS,EAAO,IAAWt4B,KAAK6qC,MAAkB,IAAZvS,EAAO,IAAWt4B,KAAK6qC,MAAkB,IAAZvS,EAAO,KAC5GoT,GAAcxqC,IAAIwC,EAAKooC,GAChBA,CACT,CACA,SAASS,IAAe,KACtBroC,EAAI,IACJgb,EAAG,UACHstB,GACCC,GACD,MAAMC,EAAWhnC,SAASinC,yBAC1B,GAAoB,kBAATzoC,EAAmB,CAC5B,MAAMsR,EAAI9P,SAAS0D,cAAc,KACjCoM,EAAE0J,IAAMA,GAAO,OACf,MAAM0tB,EAAQ1oC,EAAKpH,MAAM,gBACzB,IAAK,IAAIyF,EAAI,EAAG2hC,EAAK0I,EAAMxyC,OAAQmI,EAAI2hC,IAAM3hC,EAAG,CAC9C,MAAMsqC,EAAOD,EAAMrqC,GACnBiT,EAAE6qB,OAAO36B,SAAS66B,eAAesM,IAC7BtqC,EAAI2hC,EAAK,GACX1uB,EAAE6qB,OAAO36B,SAAS0D,cAAc,MAEpC,CACAsjC,EAASrM,OAAO7qB,EAClB,MACE8oB,GAAS5oB,OAAO,CACdsqB,QAAS97B,EACTk8B,IAAKsM,EACLhO,OAAQ,aAGZgO,EAASI,kBAAkBhqB,UAAUpF,IAAI,WAAY8uB,GACrDC,EAAUpM,OAAOqM,EACnB,CACA,SAASK,GAAoB7kC,GAC3B,MAAM8kC,EAAO,IAAIC,OACjB,IAAK/kC,EACH,OAAO8kC,EAET,IAAK,IAAIzqC,EAAI,EAAG2hC,EAAKh8B,EAAK9N,OAAQmI,EAAI2hC,GACpC,OAAQh8B,EAAK3F,MACX,KAAKyuB,EAAQ/E,OACX+gB,EAAK/gB,OAAO/jB,EAAK3F,KAAM2F,EAAK3F,MAC5B,MACF,KAAKyuB,EAAQ9E,OACX8gB,EAAK9gB,OAAOhkB,EAAK3F,KAAM2F,EAAK3F,MAC5B,MACF,KAAKyuB,EAAQ7E,QACX6gB,EAAKE,cAAchlC,EAAK3F,KAAM2F,EAAK3F,KAAM2F,EAAK3F,KAAM2F,EAAK3F,KAAM2F,EAAK3F,KAAM2F,EAAK3F,MAC/E,MACF,KAAKyuB,EAAQC,iBACX+b,EAAK/b,iBAAiB/oB,EAAK3F,KAAM2F,EAAK3F,KAAM2F,EAAK3F,KAAM2F,EAAK3F,MAC5D,MACF,KAAKyuB,EAAQ1E,UACX0gB,EAAK1gB,YACL,MACF,QACEuF,EAAK,uCAAuC3pB,EAAK3F,EAAI,MACrD,MAGN,OAAOyqC,CACT,CAIA,MAAMG,GACJ,GAAW,KACX,GAAe,KACf,GACA,GAAW,KACX,GAAW,KACX,GAAW,KACX,GAAwB,KACxB,GAA8B,KAC9BhM,SAAqB,KACrB,WAAA7jC,CAAY8vC,GACV9zC,MAAK,EAAU8zC,EACfD,IAAc,IAAgB5wC,OAAO8wC,OAAO,CAC1CC,SAAU,sCACVC,UAAW,uCACXC,IAAK,iCACLC,MAAO,mCACPC,UAAW,wCAEf,CACA,MAAAh4B,GACE,MAAMi4B,EAAcr0C,MAAK,EAAWoM,SAAS0D,cAAc,OAC3DukC,EAAY7qB,UAAUpF,IAAI,cAAe,UACzCiwB,EAAY5O,aAAa,OAAQ,WACjC,MAAM6O,EAASt0C,MAAK,EAAQu0C,WAAWC,QACnCF,aAAkBG,cAAgBH,EAAOI,UAC3CL,EAAYvrB,iBAAiB,cAAegkB,GAAe,CACzDwH,WAEFD,EAAYvrB,iBAAiB,cAAe+qB,IAAc,EAAc,CACtES,YAGJ,MAAMK,EAAU30C,MAAK,EAAWoM,SAAS0D,cAAc,OACvD6kC,EAAQzB,UAAY,UACpBmB,EAAYtN,OAAO4N,GACnB,MAAMxzB,EAAWnhB,MAAK,EAAQ40C,gBAC9B,GAAIzzB,EAAU,CACZ,MAAM,MACJpV,GACEsoC,EACExtC,EAA0C,QAAtC7G,MAAK,EAAQu0C,WAAW5tB,UAAsB,EAAIxF,EAAS,GAAKA,EAAS,GACnFpV,EAAM8oC,eAAoB,IAAMhuC,EAAT,IACvBkF,EAAMwS,IAAM,QAAQ,IAAM4C,EAAS,0CACrC,CACA,OAAOkzB,CACT,CACA,OAAIvN,GACF,OAAO9mC,MAAK,CACd,CACA,QAAO,CAAaoiB,GAClBA,EAAEgD,iBACJ,CACA,GAAShD,GACPpiB,MAAK,EAAQ80C,qBAAsB,EACnC/H,GAAU3qB,EACZ,CACA,GAAUA,GACRpiB,MAAK,EAAQ80C,qBAAsB,EACnC/H,GAAU3qB,EACZ,CACA,GAAuB8iB,GACrB,MAAMoP,EAASt0C,MAAK,EAAQu0C,WAAWC,QACvC,OAAMF,aAAkBG,cAAgBH,EAAOI,UAG/CxP,EAAQpc,iBAAiB,UAAW9oB,MAAK,EAASmG,KAAKnG,MAAO,CAC5D+0C,SAAS,EACTT,WAEFpP,EAAQpc,iBAAiB,WAAY9oB,MAAK,EAAUmG,KAAKnG,MAAO,CAC9D+0C,SAAS,EACTT,WAEFpP,EAAQpc,iBAAiB,cAAegkB,GAAe,CACrDwH,YAEK,EACT,CACA,IAAAU,GACEh1C,MAAK,EAASwpB,UAAUpF,IAAI,UAC5BpkB,MAAK,GAAci1C,cACrB,CACA,IAAAC,GACEl1C,MAAK,EAASwpB,UAAUqlB,OAAO,UAC/B7uC,MAAK,GAAUm1C,QACfn1C,MAAK,GAAUm1C,OACjB,CACA,eAAAC,GACE,MAAM,WACJC,EAAU,WACVd,GACEv0C,MAAK,EACHs1C,EAASlpC,SAAS0D,cAAc,UACtCwlC,EAAO9rB,UAAUpF,IAAI,QAAS,gBAC9BkxB,EAAOC,SAAW,EAClBD,EAAO7P,aAAa,eAAgBoO,IAAc,EAAYwB,IAC1Dr1C,MAAK,EAAuBs1C,IAC9BA,EAAOxsB,iBAAiB,QAAS1G,IAC/BmyB,EAAWiB,UACV,CACDlB,OAAQC,EAAWC,UAGvBx0C,MAAK,EAAS+mC,OAAOuO,EACvB,CACA,KAAI,GACF,MAAMG,EAAUrpC,SAAS0D,cAAc,OAEvC,OADA2lC,EAAQvC,UAAY,UACbuC,CACT,CACA,gBAAMC,CAAWC,GACf,MAAML,QAAeK,EAAQv5B,SAC7Bpc,MAAK,EAAuBs1C,GAC5Bt1C,MAAK,EAAS+mC,OAAOuO,EAAQt1C,MAAK,GAClCA,MAAK,EAAW21C,CAClB,CACA,UAAAC,CAAWC,EAASC,EAAgB,MAClC,GAAI91C,MAAK,EACP,OAEF,MAAMs1C,EAASO,EAAQE,mBACvB,IAAKT,EACH,OAEFt1C,MAAK,EAAuBs1C,GAC5B,MAAMG,EAAUz1C,MAAK,EAAwBA,MAAK,EAC7C81C,GAGH91C,MAAK,EAASg2C,aAAaV,EAAQQ,GACnC91C,MAAK,EAASg2C,aAAaP,EAASK,IAHpC91C,MAAK,EAAS+mC,OAAOuO,EAAQG,GAK/Bz1C,MAAK,EAAW61C,EAChBA,EAAQI,QAAUj2C,IACpB,CACA,cAAAk2C,CAAeC,GACb,GAAIn2C,MAAK,EACP,OAEFA,MAAK,EAAem2C,EACpB,MAAMb,EAASa,EAAYC,eAC3Bp2C,MAAK,EAAuBs1C,GAC5Bt1C,MAAK,EAAS+mC,OAAOuO,EAAQt1C,MAAK,EACpC,CACA,4BAAMq2C,CAAuBC,GAC3B,MAAMhB,EAASt1C,MAAK,QAAoCs2C,EAAiBC,iBAAiBv2C,MAAK,GAC/FA,MAAK,EAAuBs1C,GAC5Bt1C,MAAK,EAAS+mC,OAAOuO,EAAQt1C,MAAK,EACpC,CACA,YAAAw2C,CAAa9yC,GACX,OAAQA,GACN,IAAK,UACH1D,MAAK,GAAUy2C,6BACfz2C,MAAK,EAAW,KAChBA,MAAK,GAAuB6uC,SAC5B7uC,MAAK,EAAwB,KAC7B,MAEN,CACA,eAAM02C,CAAUhzC,EAAMizC,GACpB,OAAQjzC,GACN,IAAK,cACCizC,GACF32C,KAAKk2C,eAAeS,GAEtB,MACF,IAAK,UACCA,SACI32C,KAAK01C,WAAWiB,GAExB,MACF,IAAK,gBACCA,SACI32C,KAAKq2C,uBAAuBM,GAEpC,MACF,IAAK,SACH32C,KAAKo1C,kBACL,MACF,IAAK,UACCuB,GACF32C,KAAK41C,WAAWe,GAElB,MAEN,CACA,qBAAMC,CAAgBlzC,EAAMizC,EAAME,GAChC,IAAKF,GAAiB,YAATjzC,EACX,OAEF,MAAMoyC,EAAgB91C,MAAK,EAAS8pB,cAAc+sB,GAC7Cf,GAGQ,YAATpyC,GACF1D,KAAK41C,WAAWe,EAAMb,EAE1B,CACA,yBAAAgB,CAA0BC,GACpB/2C,MAAK,IACPA,MAAK,EAA4Bg3C,MAAQD,EAE7C,CACA,MAAAlI,GACE7uC,MAAK,EAAS6uC,SACd7uC,MAAK,GAAci3C,UACnBj3C,MAAK,EAAe,IACtB,EAEF,MAAMk3C,GACJ,GAAW,KACX,GAAW,KACX,GACA,WAAAlzC,CAAYmzC,GACVn3C,MAAK,EAAam3C,CACpB,CACA,KACE,MAAM9C,EAAcr0C,MAAK,EAAWoM,SAAS0D,cAAc,OAC3DukC,EAAYnB,UAAY,cACxBmB,EAAY5O,aAAa,OAAQ,WACjC,MAAM6O,EAASt0C,MAAK,EAAWw0C,QAC3BF,aAAkBG,cAAgBH,EAAOI,SAC3CL,EAAYvrB,iBAAiB,cAAegkB,GAAe,CACzDwH,WAGJ,MAAMK,EAAU30C,MAAK,EAAWoM,SAAS0D,cAAc,OAWvD,OAVA6kC,EAAQzB,UAAY,UACpBmB,EAAYtN,OAAO4N,GACf30C,MAAK,EAAWo3C,qBAClBp3C,MAAK,EAAY,gBAAiB,gCAAiC,sCAAuC,KACxGA,MAAK,EAAWq3C,iBAAiB,qBAGrCr3C,MAAK,EAAY,kBAAmB,mCAAoC,wCAAyC,KAC/GA,MAAK,EAAWs3C,mBAAmB,qBAE9BjD,CACT,CACA,GAAckD,EAAOC,GACnB,IAAIC,EAAQ,EACRC,EAAQ,EACZ,IAAK,MAAMC,KAAOJ,EAAO,CACvB,MAAM/4B,EAAIm5B,EAAIn5B,EAAIm5B,EAAIj7B,OACtB,GAAI8B,EAAIi5B,EACN,SAEF,MAAM5wC,EAAI8wC,EAAI9wC,GAAK2wC,EAAQG,EAAIl7B,MAAQ,GACnC+B,EAAIi5B,GACNC,EAAQ7wC,EACR4wC,EAAQj5B,GAGNg5B,EACE3wC,EAAI6wC,IACNA,EAAQ7wC,GAEDA,EAAI6wC,IACbA,EAAQ7wC,EAEZ,CACA,MAAO,CAAC2wC,EAAQ,EAAIE,EAAQA,EAAOD,EACrC,CACA,IAAAvC,CAAKjxB,EAAQszB,EAAOC,GAClB,MAAO3wC,EAAG2X,GAAKxe,MAAK,EAAcu3C,EAAOC,IACnC,MACJzrC,GACE/L,MAAK,IAAaA,MAAK,IAC3BikB,EAAO8iB,OAAO/mC,MAAK,GACnB+L,EAAM8oC,eAAoB,IAAMhuC,EAAT,IACvBkF,EAAMwS,IAAM,QAAQ,IAAMC,yCAC5B,CACA,IAAAw2B,GACEh1C,MAAK,EAAS6uC,QAChB,CACA,GAAY+I,EAAaC,EAAQC,EAAaC,GAC5C,MAAMzC,EAASlpC,SAAS0D,cAAc,UACtCwlC,EAAO9rB,UAAUpF,IAAI,QAASwzB,GAC9BtC,EAAOC,SAAW,EAClBD,EAAO7P,aAAa,eAAgBoS,GACpC,MAAMtJ,EAAOniC,SAAS0D,cAAc,QACpCwlC,EAAOvO,OAAOwH,GACdA,EAAK2E,UAAY,iBACjB3E,EAAK9I,aAAa,eAAgBqS,GAClC,MAAMxD,EAASt0C,MAAK,EAAWw0C,QAC3BF,aAAkBG,cAAgBH,EAAOI,UAC3CY,EAAOxsB,iBAAiB,cAAegkB,GAAe,CACpDwH,WAEFgB,EAAOxsB,iBAAiB,QAASivB,EAAc,CAC7CzD,YAGJt0C,MAAK,EAAS+mC,OAAOuO,EACvB,EAOF,SAAS0C,GAAWluC,EAAKo7B,EAAS/6B,GAChC,IAAK,MAAMzG,KAAQyG,EACjB+6B,EAAQpc,iBAAiBplB,EAAMoG,EAAIpG,GAAMyC,KAAK2D,GAElD,CACA,MAAMmuC,GACJpQ,SAAoBqQ,IACpBrQ,SAAqB,KACrBA,SAAwBqQ,IACxBrQ,SAAsB,KACtB,gCAAOsQ,CAA0BC,IAC9BH,IAAgB,IAAgB,IAAII,KAAOj0B,IAAIg0B,EAClD,CACA,iBAAOE,CAAWC,EAAaH,GAC7BH,IAAgB,IAAeG,EAC/BH,IAAgB,IAAiBM,CACnC,CACA,mBAAOC,CAAaC,GAClBR,IAAgB,EAAiBQ,CACnC,CACA,sBAAOC,CAAgBN,GACrB,OAAOH,IAAgB,IAAeG,CACxC,CACA,8BAAOO,CAAwBP,GAC7B,OAAIH,IAAgB,IAAeG,IAGnCH,IAAgB,GAAazC,OAAO4C,IAC7B,EACT,CACA,wBAAOQ,CAAkBL,GACvB,OAAON,IAAgB,IAAiBM,CAC1C,CACA,2CAAOM,CAAqCN,GAC1C,OAAwC,OAAjCN,IAAgB,IAA0BA,GAAgBW,kBAAkBL,EACrF,CACA,sBAAOO,CAAgBL,GACrB,OAAOR,IAAgB,IAAmBQ,CAC5C,CACA,8BAAOM,GACL,OAAOd,IAAgB,GAAapM,MAAQ,CAC9C,CACA,uBAAOmN,GACLf,IAAgB,EAAe,IACjC,CACA,sBAAOgB,GACLhB,IAAgB,EAAaC,IAC7BD,IAAgB,EAAc,IAChC,CACA,qBAAOiB,GACLjB,IAAgB,EAAiBC,GACnC,EAEF,MAAMiB,GACJ,GAAM,EACN,MAAI5pC,GACF,MAAO,GAAGsd,IAAyB7sB,MAAK,KAC1C,EAEF,MAAMo5C,GACJ,GAAU3W,KACV,GAAM,EACN,GAAS,KACT,8BAAW4W,GACT,MAAMC,EAAM,uKACN72B,EAAS,IAAIwZ,gBAAgB,EAAG,GAChC8S,EAAMtsB,EAAOM,WAAW,KAAM,CAClCw2B,oBAAoB,IAEhBC,EAAQ,IAAIC,MAClBD,EAAMttC,IAAMotC,EACZ,MAAMn2B,EAAUq2B,EAAMhO,SAASkO,KAAK,KAClC3K,EAAI4K,UAAUH,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC8B,IAAjE,IAAI3d,YAAYkT,EAAI6K,aAAa,EAAG,EAAG,EAAG,GAAGhrC,KAAKvF,QAAQ,KAEnE,OAAOywB,EAAO95B,KAAM,sBAAuBmjB,EAC7C,CACA,OAAM,CAAK/Y,EAAKyvC,GACd75C,MAAK,IAAW,IAAIsF,IACpB,IAAIsJ,EAAO5O,MAAK,EAAO6C,IAAIuH,GAC3B,GAAa,OAATwE,EACF,OAAO,KAET,GAAIA,GAAMyI,OAER,OADAzI,EAAKkrC,YAAc,EACZlrC,EAET,IAOE,IAAI4qC,EASJ,GAfA5qC,IAAS,CACPyI,OAAQ,KACR9H,GAAI,SAASvP,MAAK,KAAWA,MAAK,MAClC85C,WAAY,EACZC,OAAO,GAGc,kBAAZF,GACTjrC,EAAKiqB,IAAMghB,EACXL,QAAcxR,GAAU6R,EAAS,SACxBA,aAAmBG,KAC5BR,EAAQ5qC,EAAKqrC,KAAOJ,EACXA,aAAmBK,OAC5BV,EAAQK,GAES,kBAAfL,EAAM/wC,KAA0B,CAClC,MAAM0xC,EAA+Bf,GAAaC,oBAC5Ce,EAAa,IAAIC,WACjBC,EAAe,IAAIb,MACnBc,EAAe,IAAIh5B,QAAQ,CAAC0iB,EAASyE,KACzC4R,EAAaE,OAAS,KACpB5rC,EAAKyI,OAASijC,EACd1rC,EAAKmrC,OAAQ,EACb9V,KAEFmW,EAAWI,OAASzS,UAClB,MAAMlP,EAAMjqB,EAAK6rC,OAASL,EAAWl4C,OACrCo4C,EAAapuC,UAAaiuC,EAAgC,GAAGthB,uCAA2CA,GAE1GyhB,EAAaI,QAAUN,EAAWM,QAAUhS,IAE9C0R,EAAWO,cAAcnB,SACnBe,CACR,MACE3rC,EAAKyI,aAAeujC,kBAAkBpB,GAExC5qC,EAAKkrC,WAAa,CACpB,CAAE,MAAO13B,GACPmW,EAAKnW,GACLxT,EAAO,IACT,CAKA,OAJA5O,MAAK,EAAO4H,IAAIwC,EAAKwE,GACjBA,GACF5O,MAAK,EAAO4H,IAAIgH,EAAKW,GAAIX,GAEpBA,CACT,CACA,iBAAMisC,CAAYZ,GAChB,MAAM,aACJa,EAAY,KACZp3C,EAAI,KACJmoC,EAAI,KACJpjC,GACEwxC,EACJ,OAAOj6C,MAAK,EAAK,GAAG86C,KAAgBp3C,KAAQmoC,KAAQpjC,IAAQwxC,EAC9D,CACA,gBAAMc,CAAWliB,GACf,OAAO74B,MAAK,EAAK64B,EAAKA,EACxB,CACA,iBAAMmiB,CAAYzrC,EAAI0rC,GACpB,MAAM1S,QAAa0S,EACnB,OAAOj7C,MAAK,EAAKuP,EAAIg5B,EACvB,CACA,eAAM2S,CAAU3rC,GACdvP,MAAK,IAAW,IAAIsF,IACpB,MAAMsJ,EAAO5O,MAAK,EAAO6C,IAAI0M,GAC7B,IAAKX,EACH,OAAO,KAET,GAAIA,EAAKyI,OAEP,OADAzI,EAAKkrC,YAAc,EACZlrC,EAET,GAAIA,EAAKqrC,KACP,OAAOj6C,KAAK66C,YAAYjsC,EAAKqrC,MAE/B,GAAIrrC,EAAKqsC,YAAa,CACpB,MAAM,YACJA,GACErsC,EAEJ,cADOA,EAAKqsC,YACLj7C,KAAKg7C,YAAYpsC,EAAKW,GAAI0rC,EACnC,CACA,OAAOj7C,KAAK+6C,WAAWnsC,EAAKiqB,IAC9B,CACA,aAAAsiB,CAAc5rC,EAAIkT,GAChBziB,MAAK,IAAW,IAAIsF,IACpB,IAAIsJ,EAAO5O,MAAK,EAAO6C,IAAI0M,GAC3B,GAAIX,GAAMyI,OAER,OADAzI,EAAKkrC,YAAc,EACZlrC,EAET,MAAMwsC,EAAY,IAAInf,gBAAgBxZ,EAAOhG,MAAOgG,EAAO/F,QACrDqyB,EAAMqM,EAAUr4B,WAAW,MAUjC,OATAgsB,EAAI4K,UAAUl3B,EAAQ,EAAG,GACzB7T,EAAO,CACLyI,OAAQ+jC,EAAUC,wBAClB9rC,GAAI,SAASvP,MAAK,KAAWA,MAAK,MAClC85C,WAAY,EACZC,OAAO,GAET/5C,MAAK,EAAO4H,IAAI2H,EAAIX,GACpB5O,MAAK,EAAO4H,IAAIgH,EAAKW,GAAIX,GAClBA,CACT,CACA,SAAA0sC,CAAU/rC,GACR,MAAMX,EAAO5O,MAAK,EAAO6C,IAAI0M,GAC7B,OAAKX,GAAMmrC,MAGJnrC,EAAK6rC,OAFH,IAGX,CACA,QAAAc,CAAShsC,GACPvP,MAAK,IAAW,IAAIsF,IACpB,MAAMsJ,EAAO5O,MAAK,EAAO6C,IAAI0M,GAC7B,IAAKX,EACH,OAGF,GADAA,EAAKkrC,YAAc,EACK,IAApBlrC,EAAKkrC,WACP,OAEF,MAAM,OACJziC,GACEzI,EACJ,IAAKA,EAAKiqB,MAAQjqB,EAAKqrC,KAAM,CAC3B,MAAMx3B,EAAS,IAAIwZ,gBAAgB5kB,EAAOoF,MAAOpF,EAAOqF,QAClDqyB,EAAMtsB,EAAOM,WAAW,kBAC9BgsB,EAAIyM,wBAAwBnkC,GAC5BzI,EAAKqsC,YAAcx4B,EAAOg5B,eAC5B,CACApkC,EAAO7L,UACPoD,EAAKyI,OAAS,IAChB,CACA,SAAAqkC,CAAUnsC,GACR,OAAOA,EAAG2pB,WAAW,SAASl5B,MAAK,KACrC,EAEF,MAAM27C,GACJ,GAAY,GACZ,IAAU,EACV,GACA,IAAa,EACb,WAAA33C,CAAY43C,EAAU,KACpB57C,MAAK,EAAW47C,CAClB,CACA,GAAAx3B,EAAI,IACFy3B,EAAG,KACHC,EAAI,KACJC,EAAI,SACJC,EAAQ,KACRvzC,EAAOyvC,IAAG,oBACV+D,GAAsB,EAAK,SAC3BC,GAAW,IAKX,GAHIF,GACFH,IAEE77C,MAAK,EACP,OAEF,MAAMyyB,EAAO,CACXopB,MACAC,OACAC,OACAtzC,QAEF,IAAwB,IAApBzI,MAAK,EAMP,OALIA,MAAK,EAAUc,OAAS,IAC1Bd,MAAK,EAAUc,OAAS,GAE1Bd,MAAK,EAAY,OACjBA,MAAK,EAAUiK,KAAKwoB,GAGtB,GAAIwpB,GAAuBj8C,MAAK,EAAUA,MAAK,GAAWyI,OAASA,EAKjE,OAJIyzC,IACFzpB,EAAKqpB,KAAO97C,MAAK,EAAUA,MAAK,GAAW87C,WAE7C97C,MAAK,EAAUA,MAAK,GAAayyB,GAGnC,MAAMhtB,EAAOzF,MAAK,EAAY,EAC1ByF,IAASzF,MAAK,EAChBA,MAAK,EAAUm8C,OAAO,EAAG,IAEzBn8C,MAAK,EAAYyF,EACbA,EAAOzF,MAAK,EAAUc,QACxBd,MAAK,EAAUm8C,OAAO12C,IAG1BzF,MAAK,EAAUiK,KAAKwoB,EACtB,CACA,IAAAqpB,GACE,IAAwB,IAApB97C,MAAK,EACP,OAEFA,MAAK,GAAU,EACf,MAAM,KACJ87C,EAAI,KACJC,GACE/7C,MAAK,EAAUA,MAAK,GACxB87C,IACAC,MACA/7C,MAAK,GAAU,EACfA,MAAK,GAAa,CACpB,CACA,IAAAo8C,GACE,GAAIp8C,MAAK,EAAYA,MAAK,EAAUc,OAAS,EAAG,CAC9Cd,MAAK,GAAa,EAClBA,MAAK,GAAU,EACf,MAAM,IACJ67C,EAAG,KACHE,GACE/7C,MAAK,EAAUA,MAAK,GACxB67C,IACAE,MACA/7C,MAAK,GAAU,CACjB,CACF,CACA,kBAAAq8C,GACE,OAA2B,IAApBr8C,MAAK,CACd,CACA,kBAAAs8C,GACE,OAAOt8C,MAAK,EAAYA,MAAK,EAAUc,OAAS,CAClD,CACA,SAAAy7C,CAAU9zC,GACR,IAAwB,IAApBzI,MAAK,EAAT,CAGA,IAAK,IAAIiJ,EAAIjJ,MAAK,EAAWiJ,GAAK,EAAGA,IACnC,GAAIjJ,MAAK,EAAUiJ,GAAGR,OAASA,EAG7B,OAFAzI,MAAK,EAAUm8C,OAAOlzC,EAAI,EAAGjJ,MAAK,EAAYiJ,QAC9CjJ,MAAK,EAAYiJ,GAIrBjJ,MAAK,EAAUc,OAAS,EACxBd,MAAK,GAAa,CATlB,CAUF,CACA,OAAAi3C,GACEj3C,MAAK,EAAY,IACnB,EAEF,MAAMw8C,GACJ,WAAAx4C,CAAYy4C,GACVz8C,KAAKqJ,OAAS,GACdrJ,KAAKy8C,UAAY,IAAIn3C,IACrBtF,KAAK08C,QAAU,IAAIrE,IACnB,MAAM,MACJ1b,GACEZ,GAAiBS,SACrB,IAAK,MAAO90B,EAAMi1C,EAAUh5C,EAAU,CAAC,KAAM84C,EAC3C,IAAK,MAAMryC,KAAO1C,EAAM,CACtB,MAAMk1C,EAAWxyC,EAAI8uB,WAAW,QAC5ByD,GAASigB,GACX58C,KAAKy8C,UAAU70C,IAAIwC,EAAIjH,MAAM,GAAI,CAC/Bw5C,WACAh5C,YAEF3D,KAAK08C,QAAQt4B,IAAIha,EAAI5G,MAAM,KAAK2jC,IAAI,KAC1BxK,GAAUigB,IACpB58C,KAAKy8C,UAAU70C,IAAIwC,EAAK,CACtBuyC,WACAh5C,YAEF3D,KAAK08C,QAAQt4B,IAAIha,EAAI5G,MAAM,KAAK2jC,IAAI,IAExC,CAEJ,CACA,GAAWle,GACLA,EAAM4zB,QACR78C,KAAKqJ,OAAOY,KAAK,OAEfgf,EAAM6zB,SACR98C,KAAKqJ,OAAOY,KAAK,QAEfgf,EAAM8zB,SACR/8C,KAAKqJ,OAAOY,KAAK,QAEfgf,EAAM+zB,UACRh9C,KAAKqJ,OAAOY,KAAK,SAEnBjK,KAAKqJ,OAAOY,KAAKgf,EAAM7e,KACvB,MAAMkxB,EAAMt7B,KAAKqJ,OAAOhG,KAAK,KAE7B,OADArD,KAAKqJ,OAAOvI,OAAS,EACdw6B,CACT,CACA,IAAA5hB,CAAK3Z,EAAMkpB,GACT,IAAKjpB,KAAK08C,QAAQ70C,IAAIohB,EAAM7e,KAC1B,OAEF,MAAMguB,EAAOp4B,KAAKy8C,UAAU55C,IAAI7C,MAAK,EAAWipB,IAChD,IAAKmP,EACH,OAEF,MAAM,SACJukB,EACAh5C,SAAS,QACPs5C,GAAU,EAAK,KACf7Z,EAAO,GAAE,QACT8Z,EAAU,OAEV9kB,EACA8kB,IAAYA,EAAQn9C,EAAMkpB,KAG9B0zB,EAASx2C,KAAKpG,KAASqjC,EAAMna,EAA7B0zB,GACKM,GACHlQ,GAAU9jB,GAEd,EAEF,MAAMk0B,GACJtV,sBAAwB,IAAIviC,IAAI,CAAC,CAAC,aAAc,CAAC,EAAG,EAAG,IAAK,CAAC,SAAU,CAAC,IAAK,IAAK,QAClF,WAAI83C,GACF,MAAM9O,EAAS,IAAIhpC,IAAI,CAAC,CAAC,aAAc,MAAO,CAAC,SAAU,QAEzD,OADA+oC,GAAeC,GACRxU,EAAO95B,KAAM,UAAWsuC,EACjC,CACA,OAAA+O,CAAQlP,GACN,MAAMsD,EAAMvD,GAAOC,GACnB,IAAKt9B,OAAOqgC,WAAW,2BAA2B7D,QAChD,OAAOoE,EAET,IAAK,MAAO/tC,EAAM45C,KAAQt9C,KAAKo9C,QAC7B,GAAIE,EAAIC,MAAM,CAAC12C,EAAGoC,IAAMpC,IAAM4qC,EAAIxoC,IAChC,OAAOk0C,GAAaK,eAAe36C,IAAIa,GAG3C,OAAO+tC,CACT,CACA,UAAAgM,CAAW/5C,GACT,MAAM+tC,EAAMzxC,KAAKo9C,QAAQv6C,IAAIa,GAC7B,OAAK+tC,EAGErU,GAAKC,gBAAgBoU,GAFnB/tC,CAGX,EAEF,MAAMg6C,GACJ,GAAmB,IAAIC,gBACvB,GAAgB,KAChB,GAA0B,KAC1B,GAAc,IAAIr4C,IAClB,GAAa,IAAIA,IACjB,GAAkB,KAClB,GAAqB,KACrB,GAA8B,KAC9B,GAAkB,IAAIq2C,GACtB,GAAkB,KAClB,GAAe,KACf,GAAyB,KACzB,GAAoB,EACpB,GAAgC,IAAItD,IACpC,GAAmB,KACnB,GAAe,KACf,GAAoB,IAAIA,IACxBuF,eAAiB,KACjB,IAAiC,EACjC,IAAyB,EACzB,IAAmC,EACnC,IAAiB,KACjB,IAA+B,KAC/B,IAAkB,KAClB,IAAmB,KACnB,KAAwB,EACxB,IAAmB,KACnB,IAAa,IAAIzE,GACjB,KAAa,EACb,KAAiB,EACjB,KAAa,EACb,IAAqB,KACrB,IAAqB,KACrB,IAA4B,KAC5B,IAAmB,KACnB,IAAa,KACb,IAAQrsB,EAAqBC,KAC7B,IAAmB,IAAIsrB,IACvB,IAAoB,KACpB,IAAoB,KACpB,IAAc,KACd,IAAiB,KACjB,IAAe,KACf,IAAkB,CAChBwF,WAAW,EACXC,SAAS,EACTzB,oBAAoB,EACpBC,oBAAoB,EACpByB,mBAAmB,EACnBC,iBAAiB,GAEnB,IAAe,CAAC,EAAG,GACnB,IAAwB,KACxB,IAAa,KACb,IAAU,KACV,IAAe,KACf,IAAwB,KACxBnW,uBAAyB,EACzBA,qBAAuB,GACvB,2BAAWoW,GACT,MAAM38C,EAAQo8C,GAA0Bx5C,UAClCg6C,EAAen+C,GAAQA,GAAK,GAAWwpB,SAASnd,SAAS+xC,gBAAqD,WAAnC/xC,SAAS+xC,cAAcC,SAAwBr+C,EAAKs+C,wBAC/HC,EAAmB,CAAC/hC,GACxBlb,OAAQia,MAER,GAAIA,aAAcijC,iBAAkB,CAClC,MAAM,KACJ91C,GACE6S,EACJ,MAAgB,SAAT7S,GAA4B,WAATA,CAC5B,CACA,OAAO,GAEH+1C,EAAQx+C,KAAKy+C,gBACbC,EAAM1+C,KAAK2+C,cACjB,OAAO7kB,EAAO95B,KAAM,mBAAoB,IAAIw8C,GAAgB,CAAC,CAAC,CAAC,SAAU,cAAel7C,EAAMs9C,UAAW,CACvG1B,QAASoB,IACP,CAAC,CAAC,SAAU,cAAeh9C,EAAMw6C,KAAM,CACzCoB,QAASoB,IACP,CAAC,CAAC,SAAU,eAAgB,mBAAoB,eAAgB,oBAAqBh9C,EAAM86C,KAAM,CACnGc,QAASoB,IACP,CAAC,CAAC,YAAa,gBAAiB,iBAAkB,kBAAmB,gBAAiB,oBAAqB,qBAAsB,SAAU,cAAe,eAAgB,cAAeh9C,EAAMk0C,OAAQ,CACzM0H,QAASoB,IACP,CAAC,CAAC,QAAS,aAAch9C,EAAMu9C,yBAA0B,CAC3D3B,QAAS,CAACn9C,GACRsB,OAAQia,OACFA,aAAcwjC,oBAAsB/+C,GAAK,GAAWwpB,SAASjO,KAAQvb,EAAKg/C,iBAChF,CAAC,CAAC,IAAK,SAAUz9C,EAAMu9C,yBAA0B,CACnD3B,QAAS,CAACn9C,GACRsB,OAAQia,OACFA,aAAcwjC,oBAAsB/+C,GAAK,GAAWwpB,SAASnd,SAAS+xC,iBAC5E,CAAC,CAAC,SAAU,cAAe78C,EAAM09C,aAAc,CAAC,CAAC,YAAa,iBAAkB19C,EAAM29C,yBAA0B,CAClH7b,KAAM,EAAEob,EAAO,GACftB,QAASgB,IACP,CAAC,CAAC,iBAAkB,uBAAwB58C,EAAM29C,yBAA0B,CAC9E7b,KAAM,EAAEsb,EAAK,GACbxB,QAASgB,IACP,CAAC,CAAC,aAAc,kBAAmB58C,EAAM29C,yBAA0B,CACrE7b,KAAM,CAACob,EAAO,GACdtB,QAASgB,IACP,CAAC,CAAC,kBAAmB,wBAAyB58C,EAAM29C,yBAA0B,CAChF7b,KAAM,CAACsb,EAAK,GACZxB,QAASgB,IACP,CAAC,CAAC,UAAW,eAAgB58C,EAAM29C,yBAA0B,CAC/D7b,KAAM,CAAC,GAAIob,GACXtB,QAASgB,IACP,CAAC,CAAC,eAAgB,qBAAsB58C,EAAM29C,yBAA0B,CAC1E7b,KAAM,CAAC,GAAIsb,GACXxB,QAASgB,IACP,CAAC,CAAC,YAAa,iBAAkB58C,EAAM29C,yBAA0B,CACnE7b,KAAM,CAAC,EAAGob,GACVtB,QAASgB,IACP,CAAC,CAAC,iBAAkB,uBAAwB58C,EAAM29C,yBAA0B,CAC9E7b,KAAM,CAAC,EAAGsb,GACVxB,QAASgB,MAEb,CACA,WAAAl6C,CAAYmvC,EAAW+L,EAAQC,EAAaC,EAAgBC,EAAgB/I,EAAkBgJ,EAAUC,EAAaC,EAAYC,EAAiBC,EAA+BC,EAAuBC,EAAiCC,EAAWC,EAAeC,GACjQ,MAAMzL,EAASt0C,KAAKw0C,QAAUx0C,MAAK,EAAiBs0C,OACpDt0C,MAAK,GAAamzC,EAClBnzC,MAAK,GAAUk/C,EACfl/C,MAAK,GAAem/C,EACpBn/C,MAAK,EAAkBo/C,EACvBp/C,MAAK,EAAkBq/C,EACvBr/C,MAAK,GAAoBs2C,EACzBt2C,MAAK,GAAeu/C,EACpBv/C,KAAKggD,UAAYV,EACjBA,EAASW,IAAI,gBAAiBjgD,KAAKkgD,gBAAgB/5C,KAAKnG,MAAO,CAC7Ds0C,WAEFgL,EAASW,IAAI,eAAgBjgD,KAAKmgD,eAAeh6C,KAAKnG,MAAO,CAC3Ds0C,WAEFgL,EAASW,IAAI,gBAAiBjgD,KAAKogD,gBAAgBj6C,KAAKnG,MAAO,CAC7Ds0C,WAEFgL,EAASW,IAAI,mBAAoBjgD,KAAKqgD,mBAAmBl6C,KAAKnG,MAAO,CACnEs0C,WAEFgL,EAASW,IAAI,gBAAiBjgD,KAAKsgD,gBAAgBn6C,KAAKnG,MAAO,CAC7Ds0C,WAEFgL,EAASW,IAAI,+BAAgCM,GAAOvgD,KAAKwgD,aAAaD,EAAI93C,KAAM83C,EAAIz+C,OAAQ,CAC1FwyC,WAEFzjC,OAAOiY,iBAAiB,cAAe,KACrC9oB,MAAK,IAAiB,GACrB,CACD+0C,SAAS,EACTT,WAEFzjC,OAAOiY,iBAAiB,YAAa,KACnC9oB,MAAK,IAAiB,GACrB,CACD+0C,SAAS,EACTT,WAEFt0C,MAAK,KACLA,MAAK,KACLA,MAAK,KACLA,MAAK,EAAqBu/C,EAAY9Y,kBACtCzmC,MAAK,GAAiBu/C,EAAYkB,cAClCzgD,MAAK,GAAcw/C,EACnBx/C,MAAK,GAAmBy/C,GAAmB,KAC3Cz/C,MAAK,EAAiC0/C,EACtC1/C,MAAK,EAAyB2/C,EAC9B3/C,MAAK,EAAmC4/C,EACxC5/C,MAAK,GAAa6/C,GAAa,KAC/B7/C,KAAK0gD,eAAiB,CACpBC,UAAW/Y,GAAcgZ,iBACzBtX,SAAU,GAEZtpC,KAAK6gD,gBAAiB,EACtB7gD,KAAK49C,eAAiBkC,GAAiB,KACvC9/C,KAAK8gD,sBAA+C,IAAxBf,EAC5BV,GAAgB0B,oBAAoB/gD,KACtC,CACA,OAAAi3C,GACEj3C,MAAK,IAAuBikC,UAC5BjkC,MAAK,GAAwB,KAC7BA,MAAK,GAAkBghD,QACvBhhD,MAAK,EAAmB,KACxBA,KAAKw0C,QAAU,KACf,IAAK,MAAMyM,KAASjhD,MAAK,EAAW8rC,SAClCmV,EAAMhK,UAERj3C,MAAK,EAAWkhD,QAChBlhD,MAAK,EAAYkhD,QACjBlhD,MAAK,EAAkBkhD,QACvBlhD,MAAK,IAAkBkhD,QACvBlhD,MAAK,EAAgB,KACrBA,MAAK,GAAiBkhD,QACtBlhD,MAAK,EAAgBi3C,UACrBj3C,MAAK,GAAiBi3C,UACtBj3C,MAAK,GAAiBi3C,UACtBj3C,MAAK,IAAmBi3C,UACxBj3C,MAAK,IAAkBg1C,OACvBh1C,MAAK,GAAmB,KACxBA,MAAK,IAA2Bi3C,UAChCj3C,MAAK,GAA4B,KACjCA,MAAK,EAA0B,KAC3BA,MAAK,KACPmhD,aAAanhD,MAAK,IAClBA,MAAK,GAA+B,MAElCA,MAAK,KACPmhD,aAAanhD,MAAK,IAClBA,MAAK,GAAwB,MAE/BA,KAAK49C,gBAAgB3G,UACrBj3C,MAAK,GAAe,IACtB,CACA,cAAAohD,CAAeC,GACb,OAAO5M,YAAY6M,IAAI,CAACthD,KAAKw0C,QAAS6M,EAAG/M,QAC3C,CACA,aAAIuL,GACF,OAAO7/C,MAAK,EACd,CACA,qBAAIuhD,GACF,OAAOvhD,MAAK,CACd,CACA,gCAAIwhD,GACF,OAAOxhD,MAAK,CACd,CACA,aAAIyhD,GACF,OAAO3nB,EAAO95B,KAAM,YAAaA,MAAK,GAAcA,MAAK,GAAe0hD,aAAa1hD,MAAK,GAAY2hD,WAAY3hD,MAAK,GAAY4hD,YAAc,OACnJ,CACA,aAAIj7B,GACF,OAAOmT,EAAO95B,KAAM,YAAa4uC,iBAAiB5uC,MAAK,IAAY2mB,UACrE,CACA,oBAAIk7B,GACF,OAAO/nB,EAAO95B,KAAM,mBAAoBA,MAAK,GAAmB,IAAIsF,IAAItF,MAAK,GAAiBwD,MAAM,KAAKqG,IAAIi4C,IAC3GA,EAAOA,EAAKt+C,MAAM,KAAKqG,IAAIhD,GAAKA,EAAEgkC,QAClCiX,EAAK,GAAKA,EAAK,GAAGC,cACXD,KACH,KACR,CACA,mBAAIrC,GACF,MAAM,iBACJoC,GACE7hD,KACJ,IAAK6hD,EACH,OAAO/nB,EAAO95B,KAAM,kBAAmB,MAEzC,MAAM6J,EAAM,IAAIvE,IACV08C,IAAWhiD,MAAK,GACtB,IAAK,MAAO0D,EAAMyqC,KAAU0T,EAAkB,CAC5C,MAAMI,EAAev+C,EAAKw+C,SAAS,QAC/BF,GAAUC,EACZp4C,EAAIjC,IAAIlE,EAAKN,QAAQ,OAAQ,IAAK+qC,GAG/B6T,GAAWC,GACdp4C,EAAIjC,IAAIlE,EAAMyqC,EAElB,CACA,OAAOrU,EAAO95B,KAAM,kBAAmB6J,EACzC,CACA,uBAAIs4C,GACF,OAAOroB,EAAO95B,KAAM,sBAAuBA,KAAKy/C,gBAAkB,IAAIn6C,IAAIiL,MAAM2sB,KAAKl9B,KAAKy/C,gBAAiBr9B,GAAKA,EAAE2pB,YAAc,KAClI,CACA,cAAAqW,CAAejU,GACb,IAAKnuC,KAAK6hD,iBACR,OAAO1T,EAET,MAAMkU,EAAYriD,KAAKmiD,oBAAoBt/C,IAAIsrC,GAC/C,OAAOnuC,KAAK6hD,iBAAiBh/C,IAAIw/C,IAAclU,CACjD,CACA,kBAAAmU,CAAmBnU,GACjB,OAAOnuC,KAAKmiD,oBAAoBt/C,IAAIsrC,IAAUA,CAChD,CACA,wBAAAoU,CAAyBtB,GACnBA,GACFjhD,KAAKg/C,cACLh/C,KAAKwiD,mBAAkB,IAEvBxiD,KAAKwiD,mBAAkB,GAEzBxiD,MAAK,EAAyBihD,CAChC,CACA,2BAAAwB,CAA4BtM,GAC1Bn2C,MAAK,GAA4Bm2C,CACnC,CACA,WAAAuM,CAAY5O,EAAQ6O,GAAY,GAC9B3iD,MAAK,GAAiB0iD,YAAY1iD,KAAM8zC,EAAQ6O,EAClD,CACA,iBAAAvL,GACE,QAASp3C,MAAK,CAChB,CACA,WAAA4iD,CAAY9O,EAAQ+O,EAAMC,EAAMn/C,GAC9B3D,MAAK,GAAiB+iD,WAAW/iD,KAAM8zC,EAAQ+O,EAAMC,EAAMn/C,EAC7D,CACA,aAAAq/C,CAAcC,EAAW1tC,GACvB,MAAM0rC,EAAQjhD,MAAK,EAAW6C,IAAIogD,GAC5BnP,EAASmN,GAAOiC,eAAe3tC,GACrCu+B,GAAQqP,eAAc,GAAM,EAC9B,CACA,aAAAC,CAActP,GACZ9zC,MAAK,GAAiBojD,cAActP,EAAOuP,UAC7C,CACA,gBAAAC,CAAiBxP,GACf9zC,MAAK,GAAiBsjD,iBAAiBxP,EACzC,CACA,aAAAyP,CAAczP,GACZ9zC,MAAK,GAAiBwjD,eAAe,CAAC1P,EAAOv+B,KAC/C,CACA,aAAA4tC,CAAcrP,EAAQ/uB,EAAYypB,OAAarqC,GAC7CnE,MAAK,GAAiByjD,mBAAmB3P,EAAQ/uB,EAAYypB,EAC/D,CACA,gBAAAkV,CAAiBvV,EAAO3lB,GACtB,OAAO2lB,GAASnuC,MAAK,GAAiB0jD,iBAAiBvV,EAAO3lB,IAAY,IAC5E,CACA,uBAAAm7B,GACE,OAAO3jD,MAAK,GAAiB4jD,eAAiB,IAChD,CACA,4BAAMC,CAAuBC,GAC3B,GAAI9jD,MAAK,EAAW6H,IAAIi8C,EAAa,GACnC,OAEF,MAAM,QACJ7f,EAAO,QACP9gB,GACE5B,QAAQwiC,gBACNC,EAAoBzD,IACpBA,EAAIuD,aAAeA,IACrB9jD,KAAKggD,UAAUiE,KAAK,kBAAmBD,GACvC/f,MAGJjkC,KAAKggD,UAAU9iC,GAAG,kBAAmB8mC,SAC/B7gC,CACR,CACA,YAAA+gC,CAAapQ,GACX9zC,MAAK,IAAmBkkD,aAAa,CACnC/M,UAAWn3C,KACX8zC,UAEJ,CACA,oBAAIwC,GACF,OAAOt2C,MAAK,EACd,CACA,YAAAmkD,CAAatsC,EAAM8kC,GACjB38C,KAAKggD,UAAU9iC,GAAG,8BAA+By/B,EAAU,CACzDyH,MAAM,EACN9P,OAAQt0C,KAAKw0C,UAEfx0C,KAAKggD,UAAUqE,SAAS,yBAA0B,CAChDhgD,OAAQrE,KACR6X,QAEJ,CACA,aAAAysC,CAAc5gD,EAAM5B,GAClB9B,KAAKggD,UAAUqE,SAAS,gBAAiB,CACvChgD,OAAQrE,KACR0D,OACA5B,SAEJ,CACA,eAAAw+C,EAAgB,KACd58C,EAAI,MACJ5B,IAEA,OAAQ4B,GACN,IAAK,kCACH1D,MAAK,EAAmC8B,EACxC,MAEN,CACA,cAAAq+C,EAAe,WACb2D,IAEA9jD,MAAK,EAAoB8jD,EAAa,CACxC,CACA,kBAAAS,GACEvkD,MAAK,GAAWwkD,OAClB,CACA,UAAAC,CAAW59C,EAAG2X,GACZ,IAAK,MAAMyiC,KAASjhD,MAAK,EAAW8rC,SAAU,CAC5C,MACEjlC,EAAG69C,EACHlmC,EAAGmmC,EAAM,MACTloC,EAAK,OACLC,GACEukC,EAAMna,IAAI/c,wBACd,GAAIljB,GAAK69C,GAAU79C,GAAK69C,EAASjoC,GAAS+B,GAAKmmC,GAAUnmC,GAAKmmC,EAASjoC,EACrE,OAAOukC,CAEX,CACA,OAAO,IACT,CACA,iBAAAuB,CAAkB1gD,GAAQ,GACxB9B,MAAK,GAAQwpB,UAAUo7B,OAAO,eAAgB9iD,EAChD,CACA,gBAAA+iD,CAAiB/Q,GACf9zC,MAAK,EAAkBokB,IAAI0vB,EAC7B,CACA,mBAAAgR,CAAoBhR,GAClB9zC,MAAK,EAAkBw1C,OAAO1B,EAChC,CACA,eAAAsM,EAAgB,MACdziC,IAEA3d,KAAK+kD,iBACL/kD,KAAK0gD,eAAeC,UAAYhjC,EAAQiqB,GAAcgZ,iBACtD,IAAK,MAAM9M,KAAU9zC,MAAK,EACxB8zC,EAAOsM,kBAETpgD,MAAK,GAAwBogD,iBAC/B,CACA,kBAAAC,EAAmB,cACjB2E,IAEAhlD,KAAK+kD,iBACL/kD,KAAK0gD,eAAepX,SAAW0b,CACjC,CACA,KAA8B,WAC5BC,IAEA,OAAOA,EAAWC,WAAaC,KAAKC,UAAYH,EAAWI,cAAgBJ,CAC7E,CACA,IAAsBK,GACpB,MAAM,aACJC,GACEvlD,KACJ,GAAIulD,EAAaC,aAAaF,GAC5B,OAAOC,EAET,IAAK,MAAMtE,KAASjhD,MAAK,EAAW8rC,SAClC,GAAImV,EAAMuE,aAAaF,GACrB,OAAOrE,EAGX,OAAO,IACT,CACA,kBAAA3J,CAAmBmO,EAAmB,GAAI5P,GAAU,GAClD,MAAM6P,EAAYt5C,SAASu5C,eAC3B,IAAKD,GAAaA,EAAUE,YAC1B,OAEF,MAAM,WACJX,EAAU,aACVY,EAAY,UACZC,EAAS,YACTC,GACEL,EACEjd,EAAOid,EAAUnhD,WACjByhD,EAAgBhmD,MAAK,GAA8B0lD,GACnDJ,EAAYU,EAAc98B,QAAQ,cAClCquB,EAAQv3C,KAAKimD,kBAAkBX,GACrC,IAAK/N,EACH,OAEFmO,EAAUQ,QACV,MAAMjF,EAAQjhD,MAAK,GAAsBslD,GACnCa,EAAanmD,MAAK,KAAU8sB,EAAqBC,KACjD4vB,EAAW,KACf,MAAM7I,EAASmN,GAAOmF,sBAAsB,CAC1Cv/C,EAAG,EACH2X,EAAG,IACF,EAAO,CACRinC,mBACAlO,QACA0N,aACAY,eACAC,YACAC,cACAtd,SAEE0d,GACFnmD,KAAKqmD,eAAe,aAAa,GAAM,GAErCxQ,GACF/B,GAAQ8O,eAGRuD,EACFnmD,KAAKmkD,aAAar3B,EAAqBG,UAAW0vB,GAGpDA,GACF,CACA,gBAAAtF,CAAiBoO,EAAmB,IAClCzlD,KAAKs3C,mBAAmBmO,GAAkB,EAC5C,CACA,MACE,MAAMC,EAAYt5C,SAASu5C,eAC3B,IAAKD,GAAaA,EAAUE,YAC1B,OAEF,MAAMI,EAAgBhmD,MAAK,GAA8B0lD,GACnDJ,EAAYU,EAAc98B,QAAQ,cAClCquB,EAAQv3C,KAAKimD,kBAAkBX,GAChC/N,IAGLv3C,MAAK,KAAqB,IAAIk3C,GAAgBl3C,MAC9CA,MAAK,GAAiBk1C,KAAKoQ,EAAW/N,EAA0B,QAAnBv3C,KAAK2mB,WACpD,CACA,qCAAA2/B,CAAsCC,GACpC,IAAKvmD,MAAK,EACR,OAAO,KAET,MAAMoK,EAAM,GAAGyiB,IAAyB05B,IAClCC,EAAcxmD,MAAK,EAAmBymD,YAAYr8C,GAIxD,OAHIo8C,GACFxmD,MAAK,EAAmB6uC,OAAOzkC,GAE1Bo8C,CACT,CACA,sBAAAE,CAAuB5S,GAChBA,EAAOgK,YAAa99C,MAAK,GAAuBA,MAAK,EAAmB6H,IAAIisC,EAAOvkC,KACtFvP,MAAK,EAAmBulC,SAASuO,EAAOvkC,GAAIukC,EAEhD,CACA,SAAA6S,CAAUC,EAAWxjB,EAAO,MAC1B,MAAM+b,EAAcn/C,MAAK,GACpBm/C,IAGLA,EAAY1Z,aAAa,eAAgBmhB,GACrCxjB,EACF+b,EAAY1Z,aAAa,iBAAkBohB,KAAKC,UAAU1jB,IAE1D+b,EAAYxZ,gBAAgB,kBAEhC,CACA,MACE,MAAM+f,EAAYt5C,SAASu5C,eAC3B,IAAKD,GAAaA,EAAUE,YAQ1B,YAPI5lD,MAAK,KACPA,MAAK,IAAkBg1C,OACvBh1C,MAAK,GAAoB,KACzBA,MAAK,GAAsB,CACzBg+C,iBAAiB,MAKvB,MAAM,WACJiH,GACES,EACJ,GAAIT,IAAejlD,MAAK,GACtB,OAEF,MAAMgmD,EAAgBhmD,MAAK,GAA8B0lD,GACnDJ,EAAYU,EAAc98B,QAAQ,cACxC,GAAKo8B,GAeL,GALAtlD,MAAK,IAAkBg1C,OACvBh1C,MAAK,GAAoBilD,EACzBjlD,MAAK,GAAsB,CACzBg+C,iBAAiB,KAEfh+C,MAAK,KAAU8sB,EAAqBG,WAAajtB,MAAK,KAAU8sB,EAAqBC,QAGrF/sB,MAAK,KAAU8sB,EAAqBG,WACtCjtB,KAAKqmD,eAAe,aAAa,GAAM,GAEzCrmD,MAAK,GAAwBA,KAAK6gD,gBAC7B7gD,KAAK6gD,gBAAgB,CACxB,MAAMkG,EAAc/mD,MAAK,KAAU8sB,EAAqBG,UAAYjtB,MAAK,GAAsBslD,GAAa,KAE5G,GADAyB,GAAaC,gBACThnD,MAAK,GAAgB,CACvB,MAAMqhD,EAAK,IAAI1D,gBACTrJ,EAASt0C,KAAKohD,eAAeC,GAC7B4F,EAAY7kC,IACD,cAAXA,EAAE3Z,MAAqC,IAAb2Z,EAAEkzB,SAGhC+L,EAAGL,QACH+F,GAAaC,eAAc,GACZ,cAAX5kC,EAAE3Z,MACJzI,MAAK,GAAa,kBAGtB6Q,OAAOiY,iBAAiB,YAAam+B,EAAW,CAC9C3S,WAEFzjC,OAAOiY,iBAAiB,OAAQm+B,EAAW,CACzC3S,UAEJ,MACEyS,GAAaC,eAAc,GAC3BhnD,MAAK,GAAa,eAEtB,OA/CMA,MAAK,KACPA,MAAK,IAAkBg1C,OACvBh1C,MAAK,GAAoB,KACzBA,MAAK,GAAsB,CACzBg+C,iBAAiB,IA4CzB,CACA,IAAayH,EAAmB,IAC1BzlD,MAAK,KAAU8sB,EAAqBG,UACtCjtB,KAAKs3C,mBAAmBmO,GACfzlD,MAAK,GACdA,MAAK,IAET,CACA,MACEoM,SAAS0c,iBAAiB,kBAAmB9oB,MAAK,GAAiBmG,KAAKnG,MAAO,CAC7Es0C,OAAQt0C,KAAKw0C,SAEjB,CACA,MACE,GAAIx0C,MAAK,GACP,OAEFA,MAAK,GAAkB,IAAI29C,gBAC3B,MAAMrJ,EAASt0C,KAAKohD,eAAephD,MAAK,IACxC6Q,OAAOiY,iBAAiB,QAAS9oB,KAAKwkD,MAAMr+C,KAAKnG,MAAO,CACtDs0C,WAEFzjC,OAAOiY,iBAAiB,OAAQ9oB,KAAKknD,KAAK/gD,KAAKnG,MAAO,CACpDs0C,UAEJ,CACA,MACEt0C,MAAK,IAAiBghD,QACtBhhD,MAAK,GAAkB,IACzB,CACA,IAAAknD,GAME,GALAlnD,KAAK6gD,gBAAiB,EAClB7gD,MAAK,KACPA,MAAK,IAAwB,EAC7BA,MAAK,GAAa,kBAEfA,KAAKmnD,aACR,OAEF,MAAM,cACJhJ,GACE/xC,SACJ,IAAK,MAAM0nC,KAAU9zC,MAAK,GACxB,GAAI8zC,EAAOhN,IAAIvd,SAAS40B,GAAgB,CACtCn+C,MAAK,GAAqB,CAAC8zC,EAAQqK,GACnCrK,EAAOgB,qBAAsB,EAC7B,KACF,CAEJ,CACA,KAAA0P,GACE,IAAKxkD,MAAK,GACR,OAEF,MAAOonD,EAAYC,GAAqBrnD,MAAK,GAC7CA,MAAK,GAAqB,KAC1BqnD,EAAkBv+B,iBAAiB,UAAW,KAC5Cs+B,EAAWtS,qBAAsB,GAChC,CACDsP,MAAM,EACN9P,OAAQt0C,KAAKw0C,UAEf6S,EAAkB7C,OACpB,CACA,MACE,GAAIxkD,MAAK,GACP,OAEFA,MAAK,GAAqB,IAAI29C,gBAC9B,MAAMrJ,EAASt0C,KAAKohD,eAAephD,MAAK,IACxC6Q,OAAOiY,iBAAiB,UAAW9oB,KAAKsnD,QAAQnhD,KAAKnG,MAAO,CAC1Ds0C,WAEFzjC,OAAOiY,iBAAiB,QAAS9oB,KAAKunD,MAAMphD,KAAKnG,MAAO,CACtDs0C,UAEJ,CACA,MACEt0C,MAAK,IAAoBghD,QACzBhhD,MAAK,GAAqB,IAC5B,CACA,MACE,GAAIA,MAAK,EACP,OAEFA,MAAK,EAAe,IAAI29C,gBACxB,MAAMrJ,EAASt0C,KAAKohD,eAAephD,MAAK,GACxCoM,SAAS0c,iBAAiB,OAAQ9oB,KAAKwnD,KAAKrhD,KAAKnG,MAAO,CACtDs0C,WAEFloC,SAAS0c,iBAAiB,MAAO9oB,KAAKynD,IAAIthD,KAAKnG,MAAO,CACpDs0C,WAEFloC,SAAS0c,iBAAiB,QAAS9oB,KAAK0nD,MAAMvhD,KAAKnG,MAAO,CACxDs0C,UAEJ,CACA,MACEt0C,MAAK,GAAcghD,QACnBhhD,MAAK,EAAe,IACtB,CACA,MACE,MAAMs0C,EAASt0C,KAAKw0C,QACpBpoC,SAAS0c,iBAAiB,WAAY9oB,KAAK2nD,SAASxhD,KAAKnG,MAAO,CAC9Ds0C,WAEFloC,SAAS0c,iBAAiB,OAAQ9oB,KAAK4nD,KAAKzhD,KAAKnG,MAAO,CACtDs0C,UAEJ,CACA,gBAAAuT,GACE7nD,MAAK,KACLA,KAAK8nD,iBAAgB,EACvB,CACA,mBAAAC,GACE/nD,MAAK,KACLA,KAAK8nD,iBAAgB,EACvB,CACA,QAAAH,CAAS1+B,GACP,IAAK,MAAM,KACTxgB,KACGwgB,EAAM++B,aAAaxjB,MACtB,IAAK,MAAM6Q,KAAcr1C,MAAK,EAC5B,GAAIq1C,EAAW4S,yBAAyBx/C,GAGtC,OAFAwgB,EAAM++B,aAAaE,WAAa,YAChCj/B,EAAMzD,gBAKd,CACA,IAAAoiC,CAAK3+B,GACH,IAAK,MAAM9Y,KAAQ8Y,EAAM++B,aAAaxjB,MACpC,IAAK,MAAM6Q,KAAcr1C,MAAK,EAC5B,GAAIq1C,EAAW4S,yBAAyB93C,EAAK1H,MAG3C,OAFA4sC,EAAWqS,MAAMv3C,EAAMnQ,KAAKulD,mBAC5Bt8B,EAAMzD,gBAKd,CACA,IAAAgiC,CAAKv+B,GAGH,GAFAA,EAAMzD,iBACNxlB,MAAK,GAAe+kD,kBACf/kD,KAAKmnD,aACR,OAEF,MAAMgB,EAAU,GAChB,IAAK,MAAMrU,KAAU9zC,MAAK,GAAkB,CAC1C,MAAMooD,EAAatU,EAAOuU,WAAU,GAChCD,GACFD,EAAQl+C,KAAKm+C,EAEjB,CACuB,IAAnBD,EAAQrnD,QAGZmoB,EAAMq/B,cAAcC,QAAQ,oBAAqB1B,KAAKC,UAAUqB,GAClE,CACA,GAAAV,CAAIx+B,GACFjpB,KAAKwnD,KAAKv+B,GACVjpB,KAAKw1C,QACP,CACA,WAAMkS,CAAMz+B,GACVA,EAAMzD,iBACN,MAAM,cACJ8iC,GACEr/B,EACJ,IAAK,MAAM9Y,KAAQm4C,EAAc9jB,MAC/B,IAAK,MAAM6Q,KAAcr1C,MAAK,EAC5B,GAAIq1C,EAAW4S,yBAAyB93C,EAAK1H,MAE3C,YADA4sC,EAAWqS,MAAMv3C,EAAMnQ,KAAKulD,cAKlC,IAAI32C,EAAO05C,EAAcjF,QAAQ,qBACjC,IAAKz0C,EACH,OAEF,IACEA,EAAOi4C,KAAKrtB,MAAM5qB,EACpB,CAAE,MAAO45C,GAEP,YADAjwB,EAAK,WAAWiwB,EAAGvuB,YAErB,CACA,IAAK1pB,MAAMS,QAAQpC,GACjB,OAEF5O,KAAKg/C,cACL,MAAMiC,EAAQjhD,KAAKulD,aACnB,IACE,MAAMkD,EAAa,GACnB,IAAK,MAAM3U,KAAUllC,EAAM,CACzB,MAAM85C,QAA2BzH,EAAM0H,YAAY7U,GACnD,IAAK4U,EACH,OAEFD,EAAWx+C,KAAKy+C,EAClB,CACA,MAAM7M,EAAM,KACV,IAAK,MAAM/H,KAAU2U,EACnBzoD,MAAK,GAAkB8zC,GAEzB9zC,MAAK,GAAeyoD,IAEhB3M,EAAO,KACX,IAAK,MAAMhI,KAAU2U,EACnB3U,EAAOjF,UAGX7uC,KAAK4oD,YAAY,CACf/M,MACAC,OACAE,UAAU,GAEd,CAAE,MAAOwM,GACPjwB,EAAK,WAAWiwB,EAAGvuB,YACrB,CACF,CACA,OAAAqtB,CAAQr+B,GACDjpB,KAAK6gD,gBAAgC,UAAd53B,EAAM7e,MAChCpK,KAAK6gD,gBAAiB,GAEpB7gD,MAAK,KAAU8sB,EAAqBC,MAAS/sB,KAAK6oD,0BACpDnL,GAA0BO,iBAAiBvkC,KAAK1Z,KAAMipB,EAE1D,CACA,KAAAs+B,CAAMt+B,GACAjpB,KAAK6gD,gBAAgC,UAAd53B,EAAM7e,MAC/BpK,KAAK6gD,gBAAiB,EAClB7gD,MAAK,KACPA,MAAK,IAAwB,EAC7BA,MAAK,GAAa,iBAGxB,CACA,eAAAkgD,EAAgB,KACdx8C,IAEA,OAAQA,GACN,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,YACH1D,KAAK0D,KACL,MACF,IAAK,qBACH1D,KAAKs3C,mBAAmB,gBACxB,MACF,IAAK,mBACHt3C,KAAKq3C,iBAAiB,gBACtB,MAEN,CACA,IAAsB/c,GACpB,MAAMwuB,EAAa7lD,OAAOsC,QAAQ+0B,GAAS3qB,KAAK,EAAEvF,EAAKtI,KAAW9B,MAAK,GAAgBoK,KAAStI,GAC5FgnD,IACF9oD,KAAKggD,UAAUqE,SAAS,gCAAiC,CACvDhgD,OAAQrE,KACRs6B,QAASr3B,OAAOmjC,OAAOpmC,MAAK,GAAiBs6B,KAE3Ct6B,MAAK,KAAU8sB,EAAqBG,YAA2C,IAA9BqN,EAAQyjB,mBAC3D/9C,MAAK,GAAkB,CAAC,CAACutB,EAA2BW,gBAAgB,KAG1E,CACA,IAAkBoM,GAChBt6B,KAAKggD,UAAUqE,SAAS,gCAAiC,CACvDhgD,OAAQrE,KACRs6B,WAEJ,CACA,eAAAwtB,CAAgBjK,GACVA,GACF79C,MAAK,KACLA,MAAK,KACLA,MAAK,GAAsB,CACzB69C,UAAW79C,MAAK,KAAU8sB,EAAqBC,KAC/C+wB,QAAS99C,MAAK,KACdq8C,mBAAoBr8C,MAAK,EAAgBq8C,qBACzCC,mBAAoBt8C,MAAK,EAAgBs8C,qBACzCyB,mBAAmB,MAGrB/9C,MAAK,KACLA,MAAK,KACLA,MAAK,GAAsB,CACzB69C,WAAW,IAEb79C,KAAKwiD,mBAAkB,GAE3B,CACA,mBAAAuG,CAAoBC,GAClB,IAAIhpD,MAAK,EAAT,CAGAA,MAAK,EAAegpD,EACpB,IAAK,MAAM3T,KAAcr1C,MAAK,EAC5BA,MAAK,GAAkBq1C,EAAW4T,0BAHpC,CAKF,CACA,KAAAC,GACE,OAAOlpD,MAAK,GAAWuP,EACzB,CACA,gBAAIg2C,GACF,OAAOvlD,MAAK,EAAW6C,IAAI7C,MAAK,EAClC,CACA,QAAAmpD,CAASlG,GACP,OAAOjjD,MAAK,EAAW6C,IAAIogD,EAC7B,CACA,oBAAIz8B,GACF,OAAOxmB,MAAK,CACd,CACA,QAAAopD,CAASnI,GACPjhD,MAAK,EAAW4H,IAAIq5C,EAAMgC,UAAWhC,GACjCjhD,MAAK,GACPihD,EAAMoI,SAENpI,EAAMqI,SAEV,CACA,WAAAC,CAAYtI,GACVjhD,MAAK,EAAWw1C,OAAOyL,EAAMgC,UAC/B,CACA,gBAAMuG,CAAW3xC,EAAM4xC,EAAS,KAAMC,GAAa,EAAOC,GAAiB,EAAOC,GAAsB,EAAOhH,GAAc,GAC3H,GAAI5iD,MAAK,KAAU6X,KAGf7X,MAAK,WACDA,MAAK,GAAsBmjB,QAC5BnjB,MAAK,KAFZ,CAaA,GAPAA,MAAK,GAAwBuhB,QAAQwiC,gBACrC/jD,MAAK,GAAwB+kD,iBACzB/kD,MAAK,KAAU8sB,EAAqBM,OACtCptB,MAAK,GAAiB6pD,cAExB7pD,MAAK,GAAiB8pD,eACtB9pD,MAAK,GAAQ6X,EACTA,IAASiV,EAAqBC,KAAM,CACtC/sB,KAAK8nD,iBAAgB,GACrB9nD,MAAK,KACL,IAAK,MAAM8zC,KAAU9zC,MAAK,EAAY8rC,SACpCgI,EAAOiW,8BAKT,OAHA/pD,KAAK49C,gBAAgB5I,OACrBh1C,KAAKmjD,cAAc,WACnBnjD,MAAK,GAAsBikC,SAE7B,CACA,IAAK,MAAM6P,KAAU9zC,MAAK,EAAY8rC,SACpCgI,EAAOkW,6BAELnyC,IAASiV,EAAqBO,iBAC1BrtB,MAAK,IAAmBiqD,kBAE5BP,GACFzR,GAAgBe,mBAElBh5C,KAAK8nD,iBAAgB,SACf9nD,MAAK,KACXA,KAAKg/C,cACL,IAAK,MAAMiC,KAASjhD,MAAK,EAAW8rC,SAClCmV,EAAMuI,WAAW3xC,GAEnB,GAAIA,IAASiV,EAAqBM,MAAO,CACvCptB,MAAK,UAAkCA,MAAK,GAAakqD,qBAAqB,IAAI7R,IAAIr4C,MAAK,EAAa6J,IAAIsgD,GAAeA,EAAYC,eACvI,MAAMC,EAAa,IAAIhS,IACjBiS,EAAc,GACpB,IAAK,MAAMxW,KAAU9zC,MAAK,EAAY8rC,SAAU,CAC9C,MAAM,oBACJye,EAAmB,WACnBC,EAAU,QACVC,GACE3W,EACAyW,GACFF,EAAWjmC,IAAImmC,GAEbC,IAAeC,GACjBH,EAAYrgD,KAAK6pC,EAAOuP,UAE5B,CACA,IAAK,MAAMqH,KAAc1qD,MAAK,EAAyB,CACrD,MAAM,GACJuP,EAAE,SACFo7C,EAAQ,YACRC,GACEF,EACAC,GAAYC,GAAatvB,MAAQ+uB,EAAWxiD,IAAI0H,KAAQvP,MAAK,EAA8B6H,IAAI0H,IACjG+6C,EAAYrgD,KAAKygD,EAErB,CACA1qD,MAAK,GAAiB6qD,YAAYP,EACpC,CACA,IAAKb,EAKH,OAJIE,GACF3pD,KAAK6+C,gCAEP7+C,MAAK,GAAsBikC,UAG7B,IAAK,MAAM6P,KAAU9zC,MAAK,EAAY8rC,SAChCgI,EAAOv+B,MAAQk0C,GACjBzpD,KAAK8qD,YAAYhX,GACb8O,EACF9O,EAAO8O,cACEgH,EACT9V,EAAOiX,kBAEPjX,EAAO0Q,SAGT1Q,EAAOkX,WAGXhrD,MAAK,GAAsBikC,SApF3B,CAqFF,CACA,wBAAA4a,GACM7+C,KAAKulD,aAAa0F,2BACpBjrD,KAAKulD,aAAa2F,cAEtB,CACA,aAAAC,CAAcxnD,GACRA,EAAQkU,OAAS7X,MAAK,IAG1BA,KAAKggD,UAAUqE,SAAS,6BAA8B,CACpDhgD,OAAQrE,QACL2D,GAEP,CACA,YAAA68C,CAAa/3C,EAAM3G,GACjB,GAAK9B,MAAK,EAAV,CAGA,OAAQyI,GACN,KAAK8kB,EAA2BE,OAE9B,YADAztB,KAAKulD,aAAa2F,aAAappD,GAEjC,KAAKyrB,EAA2BY,mBAC9BnuB,KAAKggD,UAAUqE,SAAS,kBAAmB,CACzChgD,OAAQrE,KACRs6B,QAAS,CACP7xB,KAAM,UACNmG,KAAM,CACJnG,KAAM,YACN2iD,OAAQ,yBAIbprD,MAAK,KAAmB,IAAIsF,KAAOsC,IAAIa,EAAM3G,GAC9C9B,KAAKqmD,eAAe,YAAavkD,GACjC,MAEJ,GAAI9B,KAAKmnD,aACP,IAAK,MAAMrT,KAAU9zC,MAAK,GACxB8zC,EAAO0M,aAAa/3C,EAAM3G,QAG5B,IAAK,MAAMuzC,KAAcr1C,MAAK,EAC5Bq1C,EAAWgW,oBAAoB5iD,EAAM3G,EA1BzC,CA6BF,CACA,cAAAukD,CAAe59C,EAAM6iD,EAASC,GAAe,GAC3C,IAAK,MAAMzX,KAAU9zC,MAAK,EAAY8rC,SAChCgI,EAAOuB,aAAe5sC,GACxBqrC,EAAOoB,KAAKoW,GAGhB,MAAMlnD,EAAQpE,MAAK,IAAgB6C,IAAI0qB,EAA2BY,sBAAuB,EACrF/pB,IAAUknD,GACZtrD,MAAK,GAAkB,CAAC,CAACutB,EAA2BY,mBAAoBm9B,IAE5E,CACA,aAAAE,CAAcC,GAAW,GACvB,GAAIzrD,MAAK,KAAeyrD,EAAxB,CAGAzrD,MAAK,GAAayrD,EAClB,IAAK,MAAMxK,KAASjhD,MAAK,EAAW8rC,SAC9B2f,EACFxK,EAAMyK,eAENzK,EAAM0K,cAER1K,EAAMna,IAAItd,UAAUo7B,OAAO,UAAW6G,EARxC,CAUF,CACA,QAAM,GACJ,IAAKzrD,MAAK,GAAY,CACpBA,MAAK,IAAa,EAClB,MAAM4rD,EAAW,GACjB,IAAK,MAAM3K,KAASjhD,MAAK,EAAW8rC,SAClC8f,EAAS3hD,KAAKg3C,EAAMoI,gBAEhB9nC,QAAQ7O,IAAIk5C,GAClB,IAAK,MAAM9X,KAAU9zC,MAAK,EAAY8rC,SACpCgI,EAAOuV,QAEX,CACF,CACA,MAEE,GADArpD,KAAKg/C,cACDh/C,MAAK,GAAY,CACnBA,MAAK,IAAa,EAClB,IAAK,MAAMihD,KAASjhD,MAAK,EAAW8rC,SAClCmV,EAAMqI,UAER,IAAK,MAAMxV,KAAU9zC,MAAK,EAAY8rC,SACpCgI,EAAOwV,SAEX,CACF,CACA,WAACuC,CAAW5I,GACV,IAAK,MAAMnP,KAAU9zC,MAAK,EAAY8rC,SAChCgI,EAAOmP,YAAcA,UACjBnP,EAGZ,CACA,SAAAgY,CAAUv8C,GACR,OAAOvP,MAAK,EAAY6C,IAAI0M,EAC9B,CACA,SAAAw8C,CAAUjY,GACR9zC,MAAK,EAAY4H,IAAIksC,EAAOvkC,GAAIukC,EAClC,CACA,YAAAkY,CAAalY,GACPA,EAAOhN,IAAIvd,SAASnd,SAAS+xC,iBAC3Bn+C,MAAK,IACPmhD,aAAanhD,MAAK,IAEpBA,MAAK,GAA+BisD,WAAW,KAC7CjsD,KAAKukD,qBACLvkD,MAAK,GAA+B,MACnC,IAELA,MAAK,EAAYw1C,OAAO1B,EAAOvkC,IAC3BukC,EAAOyW,qBACTvqD,MAAK,IAAkBw1C,OAAO1B,EAAOyW,qBAEvCvqD,KAAKgrD,SAASlX,GACTA,EAAOyW,qBAAwBvqD,MAAK,EAA8B6H,IAAIisC,EAAOyW,sBAChFvqD,MAAK,GAAoB6uC,OAAOiF,EAAOvkC,GAE3C,CACA,2BAAA28C,CAA4BpY,GAC1B9zC,MAAK,EAA8BokB,IAAI0vB,EAAOyW,qBAC9CvqD,KAAKmsD,6BAA6BrY,GAClCA,EAAO2W,SAAU,CACnB,CACA,0BAAA2B,CAA2B7B,GACzB,OAAOvqD,MAAK,EAA8B6H,IAAI0iD,EAChD,CACA,8BAAA8B,CAA+BvY,GAC7B9zC,MAAK,EAA8Bw1C,OAAO1B,EAAOyW,qBACjDvqD,KAAKssD,gCAAgCxY,GACrCA,EAAO2W,SAAU,CACnB,CACA,IAAkB3W,GAChB,MAAMmN,EAAQjhD,MAAK,EAAW6C,IAAIixC,EAAOmP,WACrChC,EACFA,EAAMsL,aAAazY,IAEnB9zC,KAAK+rD,UAAUjY,GACf9zC,KAAK0mD,uBAAuB5S,GAEhC,CACA,eAAA0Y,CAAgB1Y,GACV9zC,MAAK,IAAkB8zC,IAG3B9zC,MAAK,EAAgB8zC,EACjBA,GACF9zC,MAAK,GAAkB8zC,EAAO2Y,oBAElC,CACA,MAAI,GACF,IAAIC,EAAK,KACT,IAAKA,KAAM1sD,MAAK,IAChB,OAAO0sD,CACT,CACA,QAAAC,CAAS7Y,GACH9zC,MAAK,KAAwB8zC,GAC/B9zC,MAAK,GAAkB8zC,EAAO2Y,mBAElC,CACA,4BAAAG,CAA6BvX,GAC3Br1C,MAAK,GAAkBq1C,EAAW4T,0BACpC,CACA,cAAA4D,CAAe/Y,GACb,GAAI9zC,MAAK,GAAiB6H,IAAIisC,GAM5B,OALA9zC,MAAK,GAAiBw1C,OAAO1B,GAC7BA,EAAOkX,gBACPhrD,MAAK,GAAsB,CACzB+9C,kBAAmB/9C,KAAKmnD,eAI5BnnD,MAAK,GAAiBokB,IAAI0vB,GAC1BA,EAAOgZ,SACP9sD,MAAK,GAAkB8zC,EAAO2Y,oBAC9BzsD,MAAK,GAAsB,CACzB+9C,mBAAmB,GAEvB,CACA,WAAA+M,CAAYhX,GACV9zC,KAAKmrD,cAAc,CACjBtzC,KAAMi8B,EAAOj8B,KACb4xC,OAAQ3V,EAAOv+B,MAEjBvV,MAAK,GAAwB+kD,iBAC7B,IAAK,MAAM2H,KAAM1sD,MAAK,GAChB0sD,IAAO5Y,GACT4Y,EAAG1B,WAGPhrD,MAAK,GAAiBkhD,QACtBlhD,MAAK,GAAiBokB,IAAI0vB,GAC1BA,EAAOgZ,SACP9sD,MAAK,GAAkB8zC,EAAO2Y,oBAC9BzsD,MAAK,GAAsB,CACzB+9C,mBAAmB,GAEvB,CACA,UAAAh5B,CAAW+uB,GACT,OAAO9zC,MAAK,GAAiB6H,IAAIisC,EACnC,CACA,uBAAIiZ,GACF,OAAO/sD,MAAK,GAAiB8rC,SAASrmC,OAAO3D,KAC/C,CACA,QAAAkpD,CAASlX,GACPA,EAAOkX,WACPhrD,MAAK,GAAiBw1C,OAAO1B,GAC7B9zC,MAAK,GAAsB,CACzB+9C,kBAAmB/9C,KAAKmnD,cAE5B,CACA,gBAAIA,GACF,OAAsC,IAA/BnnD,MAAK,GAAiB6rC,IAC/B,CACA,kBAAIkT,GACF,OAAsC,IAA/B/+C,MAAK,GAAiB6rC,MAAc7rC,KAAK+sD,oBAAoBhO,cACtE,CACA,IAAAjD,GACE97C,MAAK,EAAgB87C,OACrB97C,MAAK,GAAsB,CACzBq8C,mBAAoBr8C,MAAK,EAAgBq8C,qBACzCC,oBAAoB,EACpBwB,QAAS99C,MAAK,OAEhBA,KAAK49C,gBAAgB5I,MACvB,CACA,IAAAoH,GACEp8C,MAAK,EAAgBo8C,OACrBp8C,MAAK,GAAsB,CACzBq8C,oBAAoB,EACpBC,mBAAoBt8C,MAAK,EAAgBs8C,qBACzCwB,QAAS99C,MAAK,MAElB,CACA,WAAA4oD,CAAYoE,GACVhtD,MAAK,EAAgBokB,IAAI4oC,GACzBhtD,MAAK,GAAsB,CACzBq8C,oBAAoB,EACpBC,oBAAoB,EACpBwB,QAAS99C,MAAK,MAElB,CACA,cAAAitD,CAAexkD,GACbzI,MAAK,EAAgBu8C,UAAU9zC,EACjC,CACA,MACE,GAA8B,IAA1BzI,MAAK,EAAY6rC,KACnB,OAAO,EAET,GAA8B,IAA1B7rC,MAAK,EAAY6rC,KACnB,IAAK,MAAMiI,KAAU9zC,MAAK,EAAY8rC,SACpC,OAAOgI,EAAOgK,UAGlB,OAAO,CACT,CACA,SACE99C,KAAK+kD,iBACL,MAAMmI,EAAgBltD,KAAKulD,cAAc4H,mBAAkB,GAC3D,IAAKntD,KAAKmnD,eAAiB+F,EACzB,OAEF,MAAM/E,EAAU+E,EAAgB,CAACA,GAAiB,IAAIltD,MAAK,IACrD67C,EAAM,KACV77C,KAAK49C,gBAAgB1I,KAAK4G,EAAyB,IAAnBqM,EAAQrnD,OAAeqnD,EAAQ,GAAG9S,WAAa8S,EAAQrnD,QACvF,IAAK,MAAMgzC,KAAUqU,EACnBrU,EAAOjF,UAGLiN,EAAO,KACX,IAAK,MAAMhI,KAAUqU,EACnBnoD,MAAK,GAAkB8zC,IAG3B9zC,KAAK4oD,YAAY,CACf/M,MACAC,OACAE,UAAU,GAEd,CACA,cAAA+I,GACE/kD,MAAK,GAAe+kD,gBACtB,CACA,qBAAA1G,GACE,OAAOr+C,MAAK,GAAiBA,KAAKmnD,YACpC,CACA,IAAegB,GACb,IAAK,MAAMrU,KAAU9zC,MAAK,GACxB8zC,EAAOkX,WAEThrD,MAAK,GAAiBkhD,QACtB,IAAK,MAAMpN,KAAUqU,EACfrU,EAAOgK,YAGX99C,MAAK,GAAiBokB,IAAI0vB,GAC1BA,EAAOgZ,UAET9sD,MAAK,GAAsB,CACzB+9C,kBAAmB/9C,KAAKmnD,cAE5B,CACA,SAAAvI,GACE,IAAK,MAAM9K,KAAU9zC,MAAK,GACxB8zC,EAAOsZ,SAETptD,MAAK,GAAeA,MAAK,EAAY8rC,SACvC,CACA,WAAAkT,GACE,KAAIh/C,MAAK,IACPA,MAAK,EAAc+kD,iBACf/kD,MAAK,KAAU8sB,EAAqBC,SAItC/sB,MAAK,GAAwB+kD,kBAG5B/kD,KAAKmnD,aAAV,CAGA,IAAK,MAAMrT,KAAU9zC,MAAK,GACxB8zC,EAAOkX,WAEThrD,MAAK,GAAiBkhD,QACtBlhD,MAAK,GAAsB,CACzB+9C,mBAAmB,GANrB,CAQF,CACA,wBAAAkB,CAAyBp4C,EAAG2X,EAAG6uC,GAAW,GAIxC,GAHKA,GACHrtD,KAAK+kD,kBAEF/kD,KAAKmnD,aACR,OAEFnnD,MAAK,GAAa,IAAM6G,EACxB7G,MAAK,GAAa,IAAMwe,EACxB,MAAO8uC,EAAQC,GAAUvtD,MAAK,GACxBmoD,EAAU,IAAInoD,MAAK,IACnBwtD,EAAe,IACjBxtD,MAAK,IACPmhD,aAAanhD,MAAK,IAEpBA,MAAK,GAAwBisD,WAAW,KACtCjsD,MAAK,GAAwB,KAC7BA,MAAK,GAAa,GAAKA,MAAK,GAAa,GAAK,EAC9CA,KAAK4oD,YAAY,CACf/M,IAAK,KACH,IAAK,MAAM/H,KAAUqU,EACfnoD,MAAK,EAAY6H,IAAIisC,EAAOvkC,MAC9BukC,EAAO2Z,gBAAgBH,EAAQC,GAC/BzZ,EAAO4Z,oBAIb5R,KAAM,KACJ,IAAK,MAAMhI,KAAUqU,EACfnoD,MAAK,EAAY6H,IAAIisC,EAAOvkC,MAC9BukC,EAAO2Z,iBAAiBH,GAASC,GACjCzZ,EAAO4Z,oBAIb1R,UAAU,KAEXwR,GACH,IAAK,MAAM1Z,KAAUqU,EACnBrU,EAAO2Z,gBAAgB5mD,EAAG2X,GAC1Bs1B,EAAO4Z,iBAEX,CACA,gBAAAC,GACE,GAAK3tD,KAAKmnD,aAAV,CAGAnnD,KAAKwiD,mBAAkB,GACvBxiD,MAAK,EAAmB,IAAIsF,IAC5B,IAAK,MAAMwuC,KAAU9zC,MAAK,GACxBA,MAAK,EAAiB4H,IAAIksC,EAAQ,CAChC8Z,OAAQ9Z,EAAOjtC,EACfgnD,OAAQ/Z,EAAOt1B,EACfsvC,eAAgBha,EAAOmP,UACvBv4B,KAAM,EACNC,KAAM,EACNojC,cAAe,GAVnB,CAaF,CACA,cAAAC,GACE,IAAKhuD,MAAK,EACR,OAAO,EAETA,KAAKwiD,mBAAkB,GACvB,MAAM34C,EAAM7J,MAAK,EACjBA,MAAK,EAAmB,KACxB,IAAIiuD,GAAyB,EAC7B,IAAK,OAAO,EACVpnD,EAAC,EACD2X,EAAC,UACDykC,GACCnhD,KAAU+H,EACX/H,EAAM4oB,KAAO7jB,EACb/E,EAAM6oB,KAAOnM,EACb1c,EAAMisD,aAAe9K,EACrBgL,IAA2BpnD,IAAM/E,EAAM8rD,QAAUpvC,IAAM1c,EAAM+rD,QAAU5K,IAAcnhD,EAAMgsD,eAE7F,IAAKG,EACH,OAAO,EAET,MAAMC,EAAO,CAACpa,EAAQjtC,EAAG2X,EAAGykC,KAC1B,GAAIjjD,MAAK,EAAY6H,IAAIisC,EAAOvkC,IAAK,CACnC,MAAM0U,EAASjkB,MAAK,EAAW6C,IAAIogD,GAC/Bh/B,EACF6vB,EAAOqa,sBAAsBlqC,EAAQpd,EAAG2X,IAExCs1B,EAAOmP,UAAYA,EACnBnP,EAAOjtC,EAAIA,EACXitC,EAAOt1B,EAAIA,EAEf,GAuBF,OArBAxe,KAAK4oD,YAAY,CACf/M,IAAK,KACH,IAAK,MAAO/H,GAAQ,KAClBppB,EAAI,KACJC,EAAI,aACJojC,MACIlkD,EACJqkD,EAAKpa,EAAQppB,EAAMC,EAAMojC,IAG7BjS,KAAM,KACJ,IAAK,MAAOhI,GAAQ,OAClB8Z,EAAM,OACNC,EAAM,eACNC,MACIjkD,EACJqkD,EAAKpa,EAAQ8Z,EAAQC,EAAQC,IAGjC9R,UAAU,KAEL,CACT,CACA,mBAAAoS,CAAoBC,EAAIC,GACtB,GAAKtuD,MAAK,EAGV,IAAK,MAAM8zC,KAAU9zC,MAAK,EAAiB0H,OACzCosC,EAAOya,KAAKF,EAAIC,EAEpB,CACA,OAAAE,CAAQ1a,GACN,GAAsB,OAAlBA,EAAO7vB,OAAiB,CAC1B,MAAMA,EAASjkB,KAAKmpD,SAASrV,EAAOmP,WAChCh/B,GACFA,EAAOwqC,aAAa3a,GACpB7vB,EAAOsoC,aAAazY,KAEpB9zC,KAAK+rD,UAAUjY,GACf9zC,KAAK0mD,uBAAuB5S,GAC5BA,EAAO0a,UAEX,MACE1a,EAAO7vB,OAAOsoC,aAAazY,EAE/B,CACA,4BAAI+U,GACF,OAAO7oD,KAAK0uD,aAAaC,2BAA4D,IAA/B3uD,MAAK,GAAiB6rC,MAAc7rC,KAAK+sD,oBAAoB4B,yBACrH,CACA,QAAAC,CAAS9a,GACP,OAAO9zC,MAAK,IAAkB8zC,CAChC,CACA,SAAA4a,GACE,OAAO1uD,MAAK,CACd,CACA,OAAA6uD,GACE,OAAO7uD,MAAK,EACd,CACA,aAAA8uD,GACE,OAAO9uD,MAAK,KAAU8sB,EAAqBC,IAC7C,CACA,gBAAIgiC,GACF,OAAOj1B,EAAO95B,KAAM,eAAgB,IAAIo5C,GAC1C,CACA,iBAAA6M,CAAkBX,GAChB,IAAKA,EACH,OAAO,KAET,MAAMI,EAAYt5C,SAASu5C,eAC3B,IAAK,IAAI18C,EAAI,EAAG2hC,EAAK8a,EAAUsJ,WAAY/lD,EAAI2hC,EAAI3hC,IACjD,IAAKq8C,EAAU/7B,SAASm8B,EAAUuJ,WAAWhmD,GAAGimD,yBAC9C,OAAO,KAGX,MACEroD,EAAG69C,EACHlmC,EAAGmmC,EACHloC,MAAO0yC,EACPzyC,OAAQ0yC,GACN9J,EAAUv7B,wBACd,IAAIslC,EACJ,OAAQ/J,EAAUzf,aAAa,uBAC7B,IAAK,KACHwpB,EAAU,CAACxoD,EAAG2X,EAAG+wB,EAAG5qB,KAAM,CACxB9d,GAAI2X,EAAImmC,GAAUyK,EAClB5wC,EAAG,GAAK3X,EAAI0oC,EAAImV,GAAUyK,EAC1B1yC,MAAOkI,EAAIyqC,EACX1yC,OAAQ6yB,EAAI4f,IAEd,MACF,IAAK,MACHE,EAAU,CAACxoD,EAAG2X,EAAG+wB,EAAG5qB,KAAM,CACxB9d,EAAG,GAAKA,EAAI0oC,EAAImV,GAAUyK,EAC1B3wC,EAAG,GAAKA,EAAImG,EAAIggC,GAAUyK,EAC1B3yC,MAAO8yB,EAAI4f,EACXzyC,OAAQiI,EAAIyqC,IAEd,MACF,IAAK,MACHC,EAAU,CAACxoD,EAAG2X,EAAG+wB,EAAG5qB,KAAM,CACxB9d,EAAG,GAAK2X,EAAImG,EAAIggC,GAAUyK,EAC1B5wC,GAAI3X,EAAI69C,GAAUyK,EAClB1yC,MAAOkI,EAAIyqC,EACX1yC,OAAQ6yB,EAAI4f,IAEd,MACF,QACEE,EAAU,CAACxoD,EAAG2X,EAAG+wB,EAAG5qB,KAAM,CACxB9d,GAAIA,EAAI69C,GAAUyK,EAClB3wC,GAAIA,EAAImmC,GAAUyK,EAClB3yC,MAAO8yB,EAAI4f,EACXzyC,OAAQiI,EAAIyqC,IAEd,MAEJ,MAAM7X,EAAQ,GACd,IAAK,IAAItuC,EAAI,EAAG2hC,EAAK8a,EAAUsJ,WAAY/lD,EAAI2hC,EAAI3hC,IAAK,CACtD,MAAMqmD,EAAQ5J,EAAUuJ,WAAWhmD,GACnC,IAAIqmD,EAAMC,UAGV,IAAK,MAAM,EACT1oD,EAAC,EACD2X,EAAC,MACD/B,EAAK,OACLC,KACG4yC,EAAME,iBACK,IAAV/yC,GAA0B,IAAXC,GAGnB66B,EAAMttC,KAAKolD,EAAQxoD,EAAG2X,EAAG/B,EAAOC,GAEpC,CACA,OAAwB,IAAjB66B,EAAMz2C,OAAe,KAAOy2C,CACrC,CACA,4BAAA4U,EAA6B,oBAC3B5B,EAAmB,GACnBh7C,KAECvP,MAAK,IAAgC,IAAIsF,KAAOsC,IAAI2iD,EAAqBh7C,EAC5E,CACA,+BAAA+8C,EAAgC,oBAC9B/B,IAEAvqD,MAAK,GAA6Bw1C,OAAO+U,EAC3C,CACA,uBAAAkF,CAAwB/E,GACtB,MAAMgF,EAAW1vD,MAAK,GAA6B6C,IAAI6nD,EAAW97C,KAAKW,IACvE,IAAKmgD,EACH,OAEF,MAAM5b,EAAS9zC,MAAK,EAAmBymD,YAAYiJ,GAC9C5b,IAGD9zC,MAAK,KAAU8sB,EAAqBC,MAAS+mB,EAAO6b,kBAGxD7b,EAAO2b,wBAAwB/E,EACjC,CACA,gBAAAkF,CAAiBrJ,EAAcgE,EAAqB9nC,GAClD,MAAMqxB,EAAS9zC,MAAK,IAAkB6C,IAAI0jD,GACrCzS,IAGLA,EAAO+b,UAAUtF,EAAqB9nC,GACtCziB,MAAK,GAAiBw1C,OAAO+Q,GAC/B,CACA,gBAAAuJ,CAAiBvJ,EAAczS,IAC5B9zC,MAAK,KAAqB,IAAIsF,KAAOsC,IAAI2+C,EAAczS,EAC1D,EAKF,MAAMic,GACJ,GAAW,KACX,KAAqB,EACrB,IAAiB,KACjB,IAAsB,KACtB,IAAkB,KAClB,IAAyB,KACzB,KAA0B,EAC1B,IAAS,KACT,GAAU,KACV,IAAe,KACf,IAAsB,KACtB,KAAqB,EACrBloB,UAAwB,KACxBA,aAAe,KACf,WAAA7jC,CAAY8vC,GACV9zC,MAAK,EAAU8zC,EACf9zC,MAAK,GAAqB8zC,EAAOS,WAAWgN,kBAC5CwO,IAAQ,KAAmB9sD,OAAO8wC,OAAO,CACvCic,MAAO,yCACP,cAAe,+CACft1B,QAAS,2CACT,gBAAiB,iDACjBu1B,OAAQ,6CACR,eAAgB,oDAEpB,CACA,iBAAOC,CAAWC,GAChBJ,GAAQK,QAAUD,CACpB,CACA,YAAM/zC,GACJ,MAAMu5B,EAAU31C,MAAK,GAAiBoM,SAAS0D,cAAc,UAC7D6lC,EAAQzC,UAAY,UACpByC,EAAQJ,SAAW,IACnB,MAAM8a,EAAQrwD,MAAK,GAAsBoM,SAAS0D,cAAc,QAChE6lC,EAAQ5O,OAAOspB,GACXrwD,MAAK,IACP21C,EAAQnsB,UAAUpF,IAAI,OACtBuxB,EAAQlQ,aAAa,eAAgBsqB,IAAQ,GAAer1B,SAC5D21B,EAAM5qB,aAAa,eAAgBsqB,IAAQ,GAAe,oBAE1Dpa,EAAQlQ,aAAa,eAAgB,gCACrC4qB,EAAM5qB,aAAa,eAAgB,uCAErC,MAAM6O,EAASt0C,MAAK,EAAQu0C,WAAWC,QACvCmB,EAAQ7sB,iBAAiB,cAAegkB,GAAe,CACrDwH,WAEFqB,EAAQ7sB,iBAAiB,cAAeG,GAASA,EAAM7D,kBAAmB,CACxEkvB,WAEF,MAAMgc,EAAUrnC,IACdA,EAAMzD,iBACNxlB,MAAK,EAAQu0C,WAAWmO,YAAY1iD,MAAK,GACrCA,MAAK,IACPA,MAAK,EAAQuwD,iBAAiB,CAC5BnF,OAAQ,kDACRx8C,KAAM,CACJyhD,MAAOrwD,MAAK,OAkBpB,OAbA21C,EAAQ7sB,iBAAiB,QAASwnC,EAAS,CACzCvb,SAAS,EACTT,WAEFqB,EAAQ7sB,iBAAiB,UAAWG,IAC9BA,EAAM5nB,SAAWs0C,GAAyB,UAAd1sB,EAAM7e,MACpCpK,MAAK,IAA0B,EAC/BswD,EAAQrnC,KAET,CACDqrB,iBAEIt0C,MAAK,KACJ21C,CACT,CACA,MAAI,GACF,OAAO31C,MAAK,EAAY,QAA6B,OAAlBA,MAAK,GAAqBA,KAAKwwD,aAAe,WAAY,SAC/F,CACA,MAAAC,GACOzwD,MAAK,KAGVA,MAAK,GAAewkD,MAAM,CACxBkM,aAAc1wD,MAAK,KAErBA,MAAK,IAA0B,EACjC,CACA,OAAA89C,GACE,OAAI99C,MAAK,GACkB,OAAlBA,MAAK,GAENA,MAAK,IAAaA,MAAK,EACjC,CACA,OAAA2wD,GACE,OAAI3wD,MAAK,GACkB,OAAlBA,MAAK,KAAuBA,MAAK,GAEnCA,KAAK89C,SACd,CACA,eAAI0S,GACF,OAAOxwD,MAAK,EACd,CACA,oBAAM4wD,CAAeJ,GACG,OAAlBxwD,MAAK,IAGTA,MAAK,GAAewwD,EACpBxwD,MAAK,SAA4B+vD,GAAQK,MAAMvtD,IAAI,+DAAgE,CACjHguD,iBAAkBL,IAEpBxwD,MAAK,KACP,CACA,kBAAA8wD,CAAmBtiB,GAAa,GAC9B,IAAKxuC,MAAK,IAAsBA,MAAK,EAGnC,OAFAA,MAAK,IAAQ6uC,cACb7uC,MAAK,GAAS,MAGhB,IAAKA,MAAK,GAAQ,CAChB,MAAM+wD,EAAQ/wD,MAAK,GAASoM,SAAS0D,cAAc,OACnDihD,EAAM7d,UAAY,iBAClBlzC,MAAK,EAAQ8mC,IAAIC,OAAOgqB,EAC1B,CACA/wD,MAAK,GAAOwpB,UAAUo7B,OAAO,UAAWpW,EAC1C,CACA,SAAA6Z,CAAU2I,GACR,IAAIrb,EAAU31C,MAAK,EAInB,OAHKgxD,GAAgBhxD,MAAK,KAAiB21C,IACzCA,EAAU31C,MAAK,IAEV,CACL21C,UACAsb,WAAYjxD,MAAK,GACjBwwD,YAAaxwD,MAAK,GAClBkxD,mBAAoBlxD,MAAK,GAE7B,CACA,QAAI4O,GACF,MAAO,CACL+mC,QAAS31C,MAAK,EACdixD,WAAYjxD,MAAK,GAErB,CACA,QAAI4O,EAAK,QACP+mC,EAAO,WACPsb,EAAU,YACVT,EAAW,mBACXU,EAAkB,OAClB/uC,GAAS,IAELquC,IACFxwD,MAAK,GAAewwD,EACpBxwD,MAAK,GAAsBkxD,GAEzBlxD,MAAK,IAAa21C,GAAW31C,MAAK,KAAuBixD,IAGxD9uC,IACHniB,MAAK,EAAW21C,EAChB31C,MAAK,GAAqBixD,GAE5BjxD,MAAK,KACP,CACA,MAAA4kD,CAAOuM,GAAU,GACVnxD,MAAK,MAGLmxD,GAAWnxD,MAAK,KACnBmhD,aAAanhD,MAAK,IAClBA,MAAK,GAAyB,MAEhCA,MAAK,GAAeoxD,UAAYD,EAClC,CACA,KAAAhc,GACEn1C,MAAK,EAAQuwD,iBAAiB,CAC5BnF,OAAQ,oDACRx8C,KAAM,CACJyhD,MAAOrwD,MAAK,KAGlB,CACA,OAAAi3C,GACEj3C,MAAK,IAAgB6uC,SACrB7uC,MAAK,GAAiB,KACtBA,MAAK,GAAsB,KAC3BA,MAAK,GAAkB,KACvBA,MAAK,IAAQ6uC,SACb7uC,MAAK,GAAS,IAChB,CACA,QAAM,GACJ,MAAMs1C,EAASt1C,MAAK,GACpB,IAAKs1C,EACH,OAEF,GAAIt1C,MAAK,IAIP,GAHAs1C,EAAO9rB,UAAUo7B,OAAO,SAAU5kD,MAAK,GACvCs1C,EAAO7P,aAAa,eAAgBsqB,IAAQ,GAAe/vD,MAAK,KAChEA,MAAK,IAAqBylC,aAAa,eAAgBsqB,IAAQ,GAAe,GAAG/vD,MAAK,cACjFA,MAAK,EAER,YADAA,MAAK,IAAiB6uC,aAGnB,CACL,IAAK7uC,MAAK,IAAaA,MAAK,GAG1B,OAFAs1C,EAAO9rB,UAAUqlB,OAAO,aACxB7uC,MAAK,IAAiB6uC,SAGxByG,EAAO9rB,UAAUpF,IAAI,QACrBkxB,EAAO7P,aAAa,eAAgB,oCACtC,CACA,IAAI4rB,EAAUrxD,MAAK,GACnB,IAAKqxD,EAAS,CACZrxD,MAAK,GAAkBqxD,EAAUjlD,SAAS0D,cAAc,QACxDuhD,EAAQne,UAAY,UACpBme,EAAQ5rB,aAAa,OAAQ,WAC7B4rB,EAAQ9hD,GAAK,oBAAoBvP,MAAK,EAAQuP,KAC9C,MAAM+hD,EAAwB,IACxBhd,EAASt0C,MAAK,EAAQu0C,WAAWC,QACvCF,EAAOxrB,iBAAiB,QAAS,KAC/Bq4B,aAAanhD,MAAK,IAClBA,MAAK,GAAyB,MAC7B,CACDokD,MAAM,IAER9O,EAAOxsB,iBAAiB,aAAc,KACpC9oB,MAAK,GAAyBisD,WAAW,KACvCjsD,MAAK,GAAyB,KAC9BA,MAAK,GAAgBwpB,UAAUpF,IAAI,QACnCpkB,MAAK,EAAQuwD,iBAAiB,CAC5BnF,OAAQ,sBAETkG,IACF,CACDhd,WAEFgB,EAAOxsB,iBAAiB,aAAc,KAChC9oB,MAAK,KACPmhD,aAAanhD,MAAK,IAClBA,MAAK,GAAyB,MAEhCA,MAAK,IAAiBwpB,UAAUqlB,OAAO,SACtC,CACDyF,UAEJ,CACIt0C,MAAK,GACPqxD,EAAQ5rB,aAAa,eAAgB,6CAErC4rB,EAAQ1rB,gBAAgB,gBACxB0rB,EAAQ/sB,YAActkC,MAAK,GAExBqxD,EAAQE,YACXjc,EAAOvO,OAAOsqB,GAEhB,MAAMnsB,EAAUllC,MAAK,EAAQwxD,uBAC7BtsB,GAASO,aAAa,mBAAoB4rB,EAAQ9hD,GACpD,EAKF,MAAMkiD,GACJ,IAA2B,KAC3B,IAAwB,KACxB,KAA0B,EAC1B,GAAU,KACV,IAAe,KACf,IAAY,KACZ,IAAQ,KACR,IAAQ,KACR,KAAW,EACX,IAAiB,KACjB,WAAAztD,CAAY8vC,GACV9zC,MAAK,EAAU8zC,CACjB,CACA,gBAAAiC,GACE,MAAMT,EAASt1C,MAAK,GAAwBoM,SAAS0D,cAAc,UAEnE,OADAwlC,EAAOpC,UAAY,UACZlzC,MAAK,EAAQs1C,GAAQ,EAC9B,CACA,mBAAAoc,GACE,MAAMpc,EAASt1C,MAAK,GAA2BoM,SAAS0D,cAAc,UACtEwlC,EAAOpC,UAAY,0BACnB,MAAM/xB,EAAWnhB,MAAK,EAAQ2xD,sBAC9B,GAAIxwC,EAAU,CACZ,MAAM,MACJpV,GACEupC,EACJvpC,EAAM8oC,eAAiB,QAAQ,KAA6C,QAAtC70C,MAAK,EAAQu0C,WAAW5tB,UAAsB,EAAIxF,EAAS,GAAKA,EAAS,oCAC/GpV,EAAMwS,IAAM,QAAQ,IAAM4C,EAAS,mCACnC,MAAMgtB,EAAQnuC,MAAK,EAAQ4xD,mBACvBzjB,IACFpiC,EAAM8lD,gBAAkB1jB,EAE5B,CACA,OAAOnuC,MAAK,EAAQs1C,GAAQ,EAC9B,CACA,WAAAwc,GACE7F,WAAW,MACRjsD,MAAK,IAA4BA,MAAK,KAAwBwkD,SAC9D,EACL,CACA,cAAAuN,GACE,IAAK/xD,MAAK,GACR,OAEF,MAAMmuC,EAAQnuC,MAAK,EAAQ4xD,mBACvBzjB,IACFnuC,MAAK,GAAyB+L,MAAM8lD,gBAAkB1jB,GAExDnuC,MAAK,EAAQu0C,WAAW+O,iBAAiBtjD,MAAK,EAChD,CACA,sBAAIgyD,GACF,OAAQhyD,MAAK,IAA0B+pB,wBAAwBtN,OAAS,GAAKzc,MAAK,EAAQikB,OAAOguC,mBAAmBx1C,KACtH,CACA,+BAAIy1C,GACF,GAAIlyD,MAAK,GACP,OAAOA,MAAK,GAEd,IAAKA,MAAK,GACR,OAAO,KAET,MAAM,EACJ6G,EAAC,EACD2X,EAAC,OACD9B,GACE1c,MAAK,GAAyB+pB,yBAEhCljB,EAAGsrD,EACH3zC,EAAG4zC,EACH31C,MAAO0yC,EACPzyC,OAAQ0yC,GACNpvD,MAAK,EAAQikB,OAAOguC,mBACxB,MAAO,EAAEprD,EAAIsrD,GAAWhD,GAAc3wC,EAAI9B,EAAS01C,GAAWhD,EAChE,CACA,+BAAI8C,CAA4B/zB,GAC9Bn+B,MAAK,GAAiBm+B,CACxB,CACA,uBAAAk0B,GACE,OAA+B,OAAxBryD,MAAK,EACd,CACA,6BAAAsyD,GACEtyD,MAAK,IAA0B6uC,SAC/B7uC,MAAK,GAA2B,IAClC,CACA,0BAAAy2C,GACEz2C,MAAK,IAAuB6uC,SAC5B7uC,MAAK,GAAwB,IAC/B,CACA,sBAAAuyD,EAAuB,SACrBltC,EAAQ,SACRmtC,IAEKxyD,MAAK,KAGVA,MAAK,GAAyBwpB,UAAUo7B,OAAO,WAAYv/B,GAC3DrlB,MAAK,GAAyByyD,aAAeD,EAC/C,CACA,GAAQ3c,EAAS6c,GACf,IAAK1yD,MAAK,EAAQu0C,WAAW6C,oBAC3B,OAAO,KAETvB,EAAQN,SAAW,IACnBM,EAAQ8c,aAAe,SACnBD,GACF7c,EAAQ+c,aAAe,eACvB/c,EAAQpQ,aAAa,eAAgB,+BAErCoQ,EAAQgd,qBAAuB,CAAC7yD,MAAK,EAAQu0C,WAAWoP,2BACxD9N,EAAQpQ,aAAa,eAAgB,oCAEvC,MAAM6O,EAASt0C,MAAK,EAAQu0C,WAAWC,QACvC,KAAMF,aAAkBG,cAAgBH,EAAOI,QAC7C,OAAOmB,EAETA,EAAQ/sB,iBAAiB,cAAegkB,GAAe,CACrDwH,WAEEoe,IACF7c,EAAQ/sB,iBAAiB,UAAW1G,IAClCpiB,MAAK,EAAQ80C,qBAAsB,EACnC/H,GAAU3qB,IACT,CACD2yB,SAAS,EACTT,WAEFuB,EAAQ/sB,iBAAiB,WAAY1G,IACnCpiB,MAAK,EAAQ80C,qBAAsB,EACnC/H,GAAU3qB,IACT,CACD2yB,SAAS,EACTT,YAGJuB,EAAQ/sB,iBAAiB,cAAeG,GAASA,EAAM7D,kBAAmB,CACxEkvB,WAEF,MAAMgc,EAAUrnC,IACdA,EAAMzD,iBACFqwB,IAAY71C,MAAK,GACnBA,KAAK8yD,OAEL9yD,MAAK,EAAQmjD,eAAc,IAyB/B,OAtBAtN,EAAQ/sB,iBAAiB,QAASwnC,EAAS,CACzCvb,SAAS,EACTT,WAEFuB,EAAQ/sB,iBAAiB,UAAWG,IAC9BA,EAAM5nB,SAAWw0C,GAAyB,UAAd5sB,EAAM7e,MACpCpK,MAAK,IAA0B,EAC/BswD,EAAQrnC,KAET,CACDqrB,WAEFuB,EAAQ/sB,iBAAiB,eAAgB,KACvC9oB,MAAK,EAAQmjD,eAAc,GAAO,IACjC,CACD7O,WAEFuB,EAAQ/sB,iBAAiB,eAAgB,KACvC9oB,MAAK,EAAQmjD,eAAc,GAAO,IACjC,CACD7O,WAEKuB,CACT,CACA,IAAAid,CAAKnvD,GACH,MAAMwd,EAAWnhB,KAAKkyD,4BACtB,IAAIrP,EAAMC,EACV,GAAI3hC,GACD0hC,EAAMC,GAAQ3hC,MACV,EACJ0hC,EAAMC,GAAQ9iD,MAAK,EAAQ2xD,sBAC5B,MAAM,MACJl1C,EAAK,OACLC,EAAM,EACN7V,EAAC,EACD2X,GACExe,MAAK,EACT6iD,EAAOh8C,EAAIg8C,EAAOpmC,EAClBqmC,EAAOtkC,EAAIskC,EAAOpmC,CACpB,CACA,MAAMq2C,EAAmB/yD,MAAK,EAAQikB,OAAOguC,oBAE3CprD,EAAGsrD,EACH3zC,EAAG4zC,EACH31C,MAAO0yC,EACPzyC,OAAQ0yC,GACN2D,EACJ/yD,MAAK,EAAQu0C,WAAWqO,YAAY5iD,MAAK,EAASmyD,EAAUtP,EAAOsM,EAAaiD,EAAUtP,EAAOsM,EAAc,IAC1GzrD,EACHovD,oBAEJ,CACA,MAAAtC,GACOzwD,MAAK,KAGVA,MAAK,GAAsBwkD,MAAM,CAC/BkM,aAAc1wD,MAAK,KAErBA,MAAK,IAA0B,EACjC,CACA,SAAAgzD,GACE,OAAOhzD,MAAK,IAA2B,KAAfA,MAAK,EAC/B,CACA,OAAA89C,GACE,OAAsB,OAAf99C,MAAK,EACd,CACA,aAAAizD,GACE,OAAOjzD,KAAKgzD,aAAehzD,MAAK,KAAUA,MAAK,EACjD,CACA,SAAAqoD,GACE,OAAOroD,KAAK4O,IACd,CACA,QAAIA,GACF,MAAO,CACL65B,KAAMzoC,MAAK,GACXkzD,SAAUlzD,MAAK,GACfmzD,KAAMnzD,MAAK,GACXyqD,QAASzqD,KAAKgzD,YAElB,CACA,QAAIpkD,CAAK65B,GAIP,GAHIA,IAASzoC,MAAK,KAChBA,MAAK,GAAY,MAEN,OAATyoC,EAGF,OAFAzoC,MAAK,GAAQ,QACbA,MAAK,IAAW,GAGlBA,MAAK,GAAQyoC,EACbzoC,MAAK,GAAQ,IAAIssC,KACjBtsC,MAAK,IAAW,CAClB,CACA,cAAAozD,CAAe3qB,EAAMyqB,EAAW,MAC9BlzD,MAAK,GAAeyoC,EACpBzoC,KAAK4O,KAAO65B,EACZzoC,MAAK,GAAQ,KACbA,MAAK,GAAYkzD,CACnB,CACA,KAAA/d,GAAS,CACT,OAAA8B,GACEj3C,MAAK,IAAuB6uC,SAC5B7uC,MAAK,GAAwB,KAC7BA,MAAK,IAA0B6uC,SAC/B7uC,MAAK,GAA2B,KAChCA,MAAK,GAAQ,GACbA,MAAK,GAAY,KACjBA,MAAK,GAAQ,KACbA,MAAK,EAAU,KACfA,MAAK,IAA0B,EAC/BA,MAAK,IAAW,CAClB,EAKF,MAAMqzD,GACJ,IACA,KAAc,EACd,IAAqB,KACrB,IACA,IACA,IACA,IACA,IAAiB,KACjB,IACA,IAAa,KACb,IACA,IAAe,KACf,WAAArvD,EAAY,UACVmvC,EAAS,mBACTmgB,EAAqB,KAAI,kBACzBC,EAAoB,KAAI,aACxBC,EAAe,KAAI,WACnBC,EAAa,KAAI,WACjBC,EAAa,KAAI,OACjBpf,IAEAt0C,MAAK,GAAamzC,EAClBnzC,MAAK,GAAqBuzD,EAC1BvzD,MAAK,GAAsBszD,EAC3BtzD,MAAK,GAAgBwzD,EACrBxzD,MAAK,GAAcyzD,EACnBzzD,MAAK,GAAc0zD,EACnB1zD,MAAK,GAAkB,IAAI29C,gBAC3B39C,MAAK,GAAUy0C,YAAY6M,IAAI,CAAChN,EAAQt0C,MAAK,GAAgBs0C,SAC7DnB,EAAUrqB,iBAAiB,aAAc9oB,MAAK,GAAcmG,KAAKnG,MAAO,CACtE2zD,SAAS,EACTrf,OAAQt0C,MAAK,IAEjB,CACA,+BAAI4zD,GACF,OAAO,GAAKlkB,GAAYC,UAC1B,CACA,IAAc4Q,GACZ,GAAIvgD,MAAK,OACP,OAEF,GAA2B,IAAvBugD,EAAI92B,QAAQ3oB,OAAc,CAC5B,GAAId,MAAK,GACP,OAEF,MAAM6zD,EAAgB7zD,MAAK,GAAiB,IAAI29C,gBAC1CrJ,EAASG,YAAY6M,IAAI,CAACthD,MAAK,GAAS6zD,EAAcvf,SACtDnB,EAAYnzC,MAAK,GACjB8zD,EAAO,CACX/e,SAAS,EACTT,SACAqf,SAAS,GAELI,EAAoB3xC,IACF,UAAlBA,EAAEm2B,cACJv4C,MAAK,IAAgBghD,QACrBhhD,MAAK,GAAiB,OAW1B,OARAmzC,EAAUrqB,iBAAiB,cAAe1G,IAClB,UAAlBA,EAAEm2B,cACJxL,GAAU3qB,GACV2xC,EAAkB3xC,KAEnB0xC,GACH3gB,EAAUrqB,iBAAiB,YAAairC,EAAmBD,QAC3D3gB,EAAUrqB,iBAAiB,gBAAiBirC,EAAmBD,EAEjE,CACA,IAAK9zD,MAAK,GAAc,CACtBA,MAAK,GAAe,IAAI29C,gBACxB,MAAMrJ,EAASG,YAAY6M,IAAI,CAACthD,MAAK,GAASA,MAAK,GAAas0C,SAC1DnB,EAAYnzC,MAAK,GACjBg0D,EAAM,CACV1f,SACAS,SAAS,EACT4e,SAAS,GAEXxgB,EAAUrqB,iBAAiB,YAAa9oB,MAAK,GAAamG,KAAKnG,MAAOg0D,GACtE,MAAMC,EAAaj0D,MAAK,GAAYmG,KAAKnG,MACzCmzC,EAAUrqB,iBAAiB,WAAYmrC,EAAYD,GACnD7gB,EAAUrqB,iBAAiB,cAAemrC,EAAYD,GACtDA,EAAIjf,SAAU,EACd5B,EAAUrqB,iBAAiB,cAAeikB,GAAWinB,GACrD7gB,EAAUrqB,iBAAiB,cAAeikB,GAAWinB,GACrD7gB,EAAUrqB,iBAAiB,gBAAiBikB,GAAWinB,GACvD7gB,EAAUrqB,iBAAiB,YAAaikB,GAAWinB,GACnDh0D,MAAK,MACP,CAEA,GADA+sC,GAAUwT,GACiB,IAAvBA,EAAI92B,QAAQ3oB,QAAgBd,MAAK,OAEnC,YADAA,MAAK,GAAa,MAGpB,IAAKk0D,EAAQC,GAAU5T,EAAI92B,QACvByqC,EAAOE,WAAaD,EAAOC,cAC5BF,EAAQC,GAAU,CAACA,EAAQD,IAE9Bl0D,MAAK,GAAa,CAChBq0D,QAASH,EAAOI,QAChBC,QAASL,EAAOM,QAChBC,QAASN,EAAOG,QAChBI,QAASP,EAAOK,QAEpB,CACA,IAAajU,GACX,IAAKvgD,MAAK,IAAqC,IAAvBugD,EAAI92B,QAAQ3oB,OAClC,OAEFisC,GAAUwT,GACV,IAAK2T,EAAQC,GAAU5T,EAAI92B,QACvByqC,EAAOE,WAAaD,EAAOC,cAC5BF,EAAQC,GAAU,CAACA,EAAQD,IAE9B,MACEI,QAASK,EACTH,QAASI,GACPV,GAEFI,QAASO,EACTL,QAASM,GACPX,EACEY,EAAY/0D,MAAK,IAErBq0D,QAASW,EACTT,QAASU,EACTR,QAASS,EACTR,QAASS,GACPJ,EACEK,EAAWF,EAAWF,EACtBK,EAAWF,EAAWF,EACtBK,EAAWT,EAAWF,EACtBY,EAAWT,EAAWF,EACtBY,EAAW9uD,KAAK+uD,MAAMH,EAAUC,IAAa,EAC7CG,EAAYhvD,KAAK+uD,MAAML,EAAUC,IAAa,EACpD,IAAKr1D,MAAK,IAAe0G,KAAKm7B,IAAI6zB,EAAYF,IAAanC,GAAaO,4BACtE,OAMF,GAJAmB,EAAUV,QAAUM,EACpBI,EAAUR,QAAUK,EACpBG,EAAUN,QAAUI,EACpBE,EAAUL,QAAUI,GACf90D,MAAK,GAER,YADAA,MAAK,IAAc,GAGrB,MAAM21D,EAAS,EAAEhB,EAAWE,GAAY,GAAID,EAAWE,GAAY,GACnE90D,MAAK,KAAc21D,EAAQD,EAAWF,EACxC,CACA,IAAYjV,GACNA,EAAI92B,QAAQ3oB,QAAU,IAGtBd,MAAK,KACPA,MAAK,GAAaghD,QAClBhhD,MAAK,GAAe,KACpBA,MAAK,QAEFA,MAAK,KAGV+sC,GAAUwT,GACVvgD,MAAK,GAAa,KAClBA,MAAK,IAAc,GACrB,CACA,OAAAi3C,GACEj3C,MAAK,IAAiBghD,QACtBhhD,MAAK,GAAkB,KACvBA,MAAK,IAAgBghD,QACrBhhD,MAAK,GAAiB,IACxB,EAWF,MAAM41D,GACJ,IAAqB,KACrB,IAAkB,KAClB,GAAW,KACX,GAAW,KACX,IAA2B,KAC3B,KAAY,EACZ,IAAiB,KACjB,IAAmB,GACnB,IAAe,KACf,IAAqB,KACrB,IAAmB,KACnB,IAAkB,KAClB,IAAW,KACX,IAAsB,GACtB,KAAkB,EAClB,IAAe,KACf,KAAa,EACb,KAAgB,EAChB,KAA+B,EAC/B,IAAoB,KACpB,IAAa,EACb,IAAa,EACb,IAAqB,KACrB,IAAgB,KAChB7wC,YAAa,EACb8wC,SAAU,EACVC,aAAe,KACfC,gBAAkB9yD,OAAOwJ,OAAO,MAChCupD,aAAe,KACfC,YAAa,EACb1hB,WAAa,KACbO,qBAAsB,EACtBjN,aAAe,KACfA,oBAAsB,KACtB,KAAe,EACf,IAAU+tB,GAAiBM,UAC3BruB,yBAA2B,EAC3BA,qBAAuB,IAAIsV,GAC3BtV,eAAiB,EACjBA,yBAA2B,IAC3B,kCAAWsuB,GACT,MAAMC,EAASR,GAAiB1xD,UAAUmyD,oBACpC7X,EAAQd,GAA0Be,gBAClCC,EAAMhB,GAA0BiB,cACtC,OAAO7kB,EAAO95B,KAAM,0BAA2B,IAAIw8C,GAAgB,CAAC,CAAC,CAAC,YAAa,iBAAkB4Z,EAAQ,CAC3GhzB,KAAM,EAAEob,EAAO,KACb,CAAC,CAAC,iBAAkB,uBAAwB4X,EAAQ,CACtDhzB,KAAM,EAAEsb,EAAK,KACX,CAAC,CAAC,aAAc,kBAAmB0X,EAAQ,CAC7ChzB,KAAM,CAACob,EAAO,KACZ,CAAC,CAAC,kBAAmB,wBAAyB4X,EAAQ,CACxDhzB,KAAM,CAACsb,EAAK,KACV,CAAC,CAAC,UAAW,eAAgB0X,EAAQ,CACvChzB,KAAM,CAAC,GAAIob,KACT,CAAC,CAAC,eAAgB,qBAAsB4X,EAAQ,CAClDhzB,KAAM,CAAC,GAAIsb,KACT,CAAC,CAAC,YAAa,iBAAkB0X,EAAQ,CAC3ChzB,KAAM,CAAC,EAAGob,KACR,CAAC,CAAC,iBAAkB,uBAAwB4X,EAAQ,CACtDhzB,KAAM,CAAC,EAAGsb,KACR,CAAC,CAAC,SAAU,cAAekX,GAAiB1xD,UAAUoyD,6BAC5D,CACA,WAAAtyD,CAAYwiC,GACVxmC,KAAKikB,OAASuiB,EAAWviB,OACzBjkB,KAAKuP,GAAKi3B,EAAWj3B,GACrBvP,KAAKyc,MAAQzc,KAAK0c,OAAS,KAC3B1c,KAAKijD,UAAYzc,EAAWviB,OAAOg/B,UACnCjjD,KAAK0D,KAAO8iC,EAAW9iC,KACvB1D,KAAK8mC,IAAM,KACX9mC,KAAKu0C,WAAa/N,EAAW2Q,UAC7Bn3C,KAAKuqD,oBAAsB,KAC3BvqD,KAAKu2D,sBAAuB,EAC5Bv2D,KAAK+1D,gBAAgBS,WAAahwB,EAAWgwB,WAC7Cx2D,KAAKy2D,oBAAsB,KAC3Bz2D,KAAKuqD,oBAAsB/jB,EAAW+jB,qBAAuB,KAC7DvqD,KAAK02D,aAAelwB,EAAWkwB,cAAgB,IAAIpqB,KACnDtsC,KAAK22D,iBAAmBnwB,EAAWmwB,kBAAoB,KACvD32D,KAAK42D,eAAgB,EACrB,MAAM,SACJttB,EACAU,SAAS,UACPjkB,EAAS,WACTC,EAAU,MACVkkB,EAAK,MACLC,IAEAnqC,KAAKikB,OAAOjB,SAChBhjB,KAAKspC,SAAWA,EAChBtpC,KAAK62D,cAAgB,IAAMvtB,EAAWtpC,KAAKu0C,WAAWmM,eAAepX,UAAY,IACjFtpC,KAAK82D,eAAiB,CAAC/wC,EAAWC,GAClChmB,KAAK+2D,gBAAkB,CAAC7sB,EAAOC,GAC/B,MAAO1tB,EAAOC,GAAU1c,KAAK+yD,iBAC7B/yD,KAAK6G,EAAI2/B,EAAW3/B,EAAI4V,EACxBzc,KAAKwe,EAAIgoB,EAAWhoB,EAAI9B,EACxB1c,KAAKg3D,iBAAkB,EACvBh3D,KAAKyqD,SAAU,CACjB,CACA,cAAIpV,GACF,OAAOpyC,OAAOwH,eAAezK,MAAMgE,YAAYizD,KACjD,CACA,QAAIp/C,GACF,OAAO5U,OAAOwH,eAAezK,MAAMgE,YAAYomD,WACjD,CACA,mBAAW8M,GACT,OAAO,CACT,CACA,4BAAWC,GACT,OAAOr9B,EAAO95B,KAAM,oBAAqBA,KAAKo3D,cAAc3Z,WAAW,cACzE,CACA,8BAAO4Z,CAAwBvjB,GAC7B,MAAMwjB,EAAa,IAAIC,GAAW,CAChChoD,GAAIukC,EAAO7vB,OAAOuzC,YAClBvzC,OAAQ6vB,EAAO7vB,OACfkzB,UAAWrD,EAAOS,aAEpB+iB,EAAW/M,oBAAsBzW,EAAOyW,oBACxC+M,EAAW7M,SAAU,EACrB6M,EAAW/iB,WAAWmS,uBAAuB4Q,EAC/C,CACA,iBAAOpH,CAAWC,EAAM5b,GAYtB,GAXAqhB,GAAiBxF,QAAUD,EAC3ByF,GAAiB6B,eAAiBx0D,OAAO8wC,OAAO,CAC9CzJ,QAAS,gCACTotB,UAAW,kCACXC,SAAU,iCACVC,YAAa,oCACbrtB,YAAa,oCACbstB,aAAc,qCACdC,WAAY,mCACZC,WAAY,sCAE6B,IAAvCnC,GAAiBoC,iBACnB,OAEF,MAAMjsD,EAAQ6iC,iBAAiBxiC,SAAS6rD,iBACxCrC,GAAiBoC,iBAAmBE,WAAWnsD,EAAMosD,iBAAiB,qBAAuB,CAC/F,CACA,0BAAO9M,CAAoB4L,EAAOmB,GAAS,CAC3C,oCAAWnP,GACT,MAAO,EACT,CACA,+BAAOhB,CAAyBoQ,GAC9B,OAAO,CACT,CACA,YAAO3Q,CAAMv3C,EAAM8T,GACjBuU,EAAY,kBACd,CACA,sBAAIi0B,GACF,MAAO,EACT,CACA,gBAAI6L,GACF,OAAOt4D,MAAK,EACd,CACA,gBAAIs4D,CAAax2D,GACf9B,MAAK,GAAe8B,EACpB9B,KAAK8mC,KAAKtd,UAAUo7B,OAAO,YAAa9iD,EAC1C,CACA,OAAIyT,GACF,OAAOvV,KAAKuqD,qBAAuBvqD,KAAKuP,EAC1C,CACA,kBAAIwvC,GACF,OAAO,CACT,CACA,MAAAwZ,GACE,MAAOxyC,EAAWC,GAAchmB,KAAK82D,eACrC,OAAQ92D,KAAKw4D,gBACX,KAAK,GACHx4D,KAAK6G,GAAK7G,KAAK0c,OAASsJ,GAA0B,EAAZD,GACtC/lB,KAAKwe,GAAKxe,KAAKyc,MAAQsJ,GAA0B,EAAbC,GACpC,MACF,KAAK,IACHhmB,KAAK6G,GAAK7G,KAAKyc,MAAQ,EACvBzc,KAAKwe,GAAKxe,KAAK0c,OAAS,EACxB,MACF,KAAK,IACH1c,KAAK6G,GAAK7G,KAAK0c,OAASsJ,GAA0B,EAAZD,GACtC/lB,KAAKwe,GAAKxe,KAAKyc,MAAQsJ,GAA0B,EAAbC,GACpC,MACF,QACEhmB,KAAK6G,GAAK7G,KAAKyc,MAAQ,EACvBzc,KAAKwe,GAAKxe,KAAK0c,OAAS,EACxB,MAEJ1c,KAAKy4D,mBACP,CACA,WAAA7P,CAAYoE,GACVhtD,KAAKu0C,WAAWqU,YAAYoE,EAC9B,CACA,gBAAIzH,GACF,OAAOvlD,KAAKu0C,WAAWgR,YACzB,CACA,eAAAmT,GACE14D,KAAK8mC,IAAI/6B,MAAM4sD,OAAS,CAC1B,CACA,eAAAC,GACE54D,KAAK8mC,IAAI/6B,MAAM4sD,OAAS34D,MAAK,EAC/B,CACA,SAAA64D,CAAU50C,GACO,OAAXA,GACFjkB,KAAKijD,UAAYh/B,EAAOg/B,UACxBjjD,KAAK82D,eAAiB7yC,EAAO6yC,iBAE7B92D,MAAK,KACLA,MAAK,IAAiB6uC,SACtB7uC,MAAK,GAAkB,MAEzBA,KAAKikB,OAASA,CAChB,CACA,OAAA60C,CAAQ7vC,GACDjpB,KAAK80C,sBAGL90C,MAAK,GAGRA,MAAK,IAAkB,EAFvBA,KAAKikB,OAAO6mC,YAAY9qD,MAI5B,CACA,QAAA+4D,CAAS9vC,GACP,IAAKjpB,KAAK80C,oBACR,OAEF,IAAK90C,KAAKg3D,gBACR,OAEF,MAAM31D,EAAS4nB,EAAM+vC,cACjB33D,GAAQ6nB,QAAQ,IAAIlpB,KAAKuP,QAG7B0Z,EAAMzD,iBACDxlB,KAAKikB,QAAQg1C,qBAChBj5D,KAAK+kD,iBAET,CACA,cAAAA,GACM/kD,KAAK89C,UACP99C,KAAK6uC,SAEL7uC,KAAKotD,QAET,CACA,MAAAA,GACOptD,KAAKk5D,gBAGVl5D,KAAK0mD,wBACP,CACA,sBAAAA,GACE1mD,KAAKu0C,WAAWmS,uBAAuB1mD,KACzC,CACA,KAAAm5D,CAAMtyD,EAAG2X,EAAG6vC,EAAIC,GACd,MAAO7xC,EAAOC,GAAU1c,KAAK+yD,kBAC5B1E,EAAIC,GAAMtuD,KAAKo5D,wBAAwB/K,EAAIC,GAC5CtuD,KAAK6G,GAAKA,EAAIwnD,GAAM5xC,EACpBzc,KAAKwe,GAAKA,EAAI8vC,GAAM5xC,EACpB1c,KAAKy4D,mBACP,CACA,eAAAY,CAAgBC,EAAOC,GACrB,MAAOpK,EAAaC,GAAgBpvD,KAAK+yD,iBACzC/yD,KAAKm5D,MAAMG,EAAQnK,EAAaoK,EAAQnK,EAAcpvD,KAAKyc,MAAQ0yC,EAAanvD,KAAK0c,OAAS0yC,GAC9FpvD,KAAKw5D,eACP,CACA,KAAY/8C,EAAOC,GAAS7V,EAAG2X,IAC5B3X,EAAG2X,GAAKxe,KAAKo5D,wBAAwBvyD,EAAG2X,GACzCxe,KAAK6G,GAAKA,EAAI4V,EACdzc,KAAKwe,GAAKA,EAAI9B,EACd1c,KAAKy5D,eAAez5D,KAAK6G,EAAG7G,KAAKwe,GACjCxe,KAAKy4D,mBACP,CACA,SAAAiB,CAAU7yD,EAAG2X,GACXxe,MAAK,GAAWA,KAAK+yD,iBAAkBlsD,EAAG2X,EAC5C,CACA,eAAAivC,CAAgB5mD,EAAG2X,GACjBxe,MAAK,KAAiB,CAACA,KAAK6G,EAAG7G,KAAKwe,EAAGxe,KAAKyc,MAAOzc,KAAK0c,QACxD1c,MAAK,GAAWA,KAAK82D,eAAgBjwD,EAAG2X,GACxCxe,KAAK8mC,IAAI6yB,eAAe,CACtBC,MAAO,WAEX,CACA,eAAAlM,GACE1tD,KAAKw5D,cAAcx5D,KAAK6G,EAAG7G,KAAKwe,EAClC,CACA,IAAA+vC,CAAKF,EAAIC,GACPtuD,MAAK,KAAiB,CAACA,KAAK6G,EAAG7G,KAAKwe,EAAGxe,KAAKyc,MAAOzc,KAAK0c,QACxD,MAAM,IACJoqB,EACAisB,kBAAmB5D,EAAaC,IAC9BpvD,KAGJ,GAFAA,KAAK6G,GAAKwnD,EAAKc,EACfnvD,KAAKwe,GAAK8vC,EAAKc,EACXpvD,KAAKikB,SAAWjkB,KAAK6G,EAAI,GAAK7G,KAAK6G,EAAI,GAAK7G,KAAKwe,EAAI,GAAKxe,KAAKwe,EAAI,GAAI,CACzE,MAAM,EACJ3X,EAAC,EACD2X,GACExe,KAAK8mC,IAAI/c,wBACT/pB,KAAKikB,OAAO41C,cAAc75D,KAAM6G,EAAG2X,KACrCxe,KAAK6G,GAAKH,KAAKC,MAAM3G,KAAK6G,GAC1B7G,KAAKwe,GAAK9X,KAAKC,MAAM3G,KAAKwe,GAE9B,CACA,IAAI,EACF3X,EAAC,EACD2X,GACExe,KACJ,MAAO85D,EAAIC,GAAM/5D,KAAKg6D,qBACtBnzD,GAAKizD,EACLt7C,GAAKu7C,EACL,MAAM,MACJhuD,GACE+6B,EACJ/6B,EAAMqS,KAAO,IAAI,IAAMvX,GAAGozD,QAAQ,MAClCluD,EAAMwS,IAAM,IAAI,IAAMC,GAAGy7C,QAAQ,MACjCj6D,KAAKy5D,eAAe5yD,EAAG2X,GACvBsoB,EAAI6yB,eAAe,CACjBC,MAAO,WAEX,CACA,cAAAH,CAAe5yD,EAAG2X,GAAI,CACtB,aAAAg7C,CAAc3yD,EAAG2X,GAAI,CACrB,iBAAI07C,GACF,QAASl6D,MAAK,KAAiBA,MAAK,GAAa,KAAOA,KAAK6G,GAAK7G,MAAK,GAAa,KAAOA,KAAKwe,EAClG,CACA,mBAAI27C,GACF,QAASn6D,MAAK,KAAiBA,MAAK,GAAa,KAAOA,KAAKyc,OAASzc,MAAK,GAAa,KAAOA,KAAK0c,OACtG,CACA,kBAAAs9C,GACE,MAAO7K,EAAaC,GAAgBpvD,KAAK+yD,kBACnC,iBACJiF,GACEpC,GACE/uD,EAAImxD,EAAmB7I,EACvB3wC,EAAIw5C,EAAmB5I,EAC7B,OAAQpvD,KAAKspC,UACX,KAAK,GACH,MAAO,EAAEziC,EAAG2X,GACd,KAAK,IACH,MAAO,CAAC3X,EAAG2X,GACb,KAAK,IACH,MAAO,CAAC3X,GAAI2X,GACd,QACE,MAAO,EAAE3X,GAAI2X,GAEnB,CACA,oBAAI47C,GACF,OAAO,CACT,CACA,iBAAA3B,CAAkBnvB,EAAWtpC,KAAKspC,UAChC,MACExC,KAAK,MACH/6B,GAEF+qD,gBAAiB/wC,EAAWC,IAC1BhmB,KACJ,IAAI,EACF6G,EAAC,EACD2X,EAAC,MACD/B,EAAK,OACLC,GACE1c,KAKJ,GAJAyc,GAASsJ,EACTrJ,GAAUsJ,EACVnf,GAAKkf,EACLvH,GAAKwH,EACDhmB,KAAKo6D,iBACP,OAAQ9wB,GACN,KAAK,EACHziC,EAAI28B,GAAU38B,EAAG,EAAGkf,EAAYtJ,GAChC+B,EAAIglB,GAAUhlB,EAAG,EAAGwH,EAAatJ,GACjC,MACF,KAAK,GACH7V,EAAI28B,GAAU38B,EAAG,EAAGkf,EAAYrJ,GAChC8B,EAAIglB,GAAUhlB,EAAG/B,EAAOuJ,GACxB,MACF,KAAK,IACHnf,EAAI28B,GAAU38B,EAAG4V,EAAOsJ,GACxBvH,EAAIglB,GAAUhlB,EAAG9B,EAAQsJ,GACzB,MACF,KAAK,IACHnf,EAAI28B,GAAU38B,EAAG6V,EAAQqJ,GACzBvH,EAAIglB,GAAUhlB,EAAG,EAAGwH,EAAavJ,GACjC,MAGNzc,KAAK6G,EAAIA,GAAKkf,EACd/lB,KAAKwe,EAAIA,GAAKwH,EACd,MAAO8zC,EAAIC,GAAM/5D,KAAKg6D,qBACtBnzD,GAAKizD,EACLt7C,GAAKu7C,EACLhuD,EAAMqS,KAAO,IAAI,IAAMvX,GAAGozD,QAAQ,MAClCluD,EAAMwS,IAAM,IAAI,IAAMC,GAAGy7C,QAAQ,MACjCj6D,KAAKq6D,WACP,CACA,SAAO,CAAaxzD,EAAG2X,EAAG87C,GACxB,OAAQA,GACN,KAAK,GACH,MAAO,CAAC97C,GAAI3X,GACd,KAAK,IACH,MAAO,EAAEA,GAAI2X,GACf,KAAK,IACH,MAAO,EAAEA,EAAG3X,GACd,QACE,MAAO,CAACA,EAAG2X,GAEjB,CACA,uBAAA46C,CAAwBvyD,EAAG2X,GACzB,OAAOo3C,IAAiB,GAAa/uD,EAAG2X,EAAGxe,KAAKw4D,eAClD,CACA,uBAAA+B,CAAwB1zD,EAAG2X,GACzB,OAAOo3C,IAAiB,GAAa/uD,EAAG2X,EAAG,IAAMxe,KAAKw4D,eACxD,CACA,IAAmBlvB,GACjB,OAAQA,GACN,KAAK,GACH,CACE,MAAOvjB,EAAWC,GAAchmB,KAAK82D,eACrC,MAAO,CAAC,GAAI/wC,EAAYC,EAAYA,EAAaD,EAAW,EAC9D,CACF,KAAK,IACH,MAAO,EAAE,EAAG,EAAG,GAAI,GACrB,KAAK,IACH,CACE,MAAOA,EAAWC,GAAchmB,KAAK82D,eACrC,MAAO,CAAC,EAAG/wC,EAAYC,GAAaA,EAAaD,EAAW,EAC9D,CACF,QACE,MAAO,CAAC,EAAG,EAAG,EAAG,GAEvB,CACA,eAAIy0C,GACF,OAAOx6D,KAAKu0C,WAAWmM,eAAeC,SACxC,CACA,kBAAI6X,GACF,OAAQx4D,KAAKu0C,WAAWmM,eAAepX,SAAWtpC,KAAK62D,cAAgB,GACzE,CACA,oBAAI9D,GACF,MAAM,YACJyH,EACA1D,gBAAiB/wC,EAAWC,IAC1BhmB,KACJ,MAAO,CAAC+lB,EAAYy0C,EAAax0C,EAAaw0C,EAChD,CACA,OAAAC,GACE,MACE3zB,KAAK,MACH/6B,GACD,MACD0Q,EAAK,OACLC,GACE1c,KACJ+L,EAAM0Q,MAAQ,IAAI,IAAMA,GAAOw9C,QAAQ,MACvCluD,EAAM2Q,OAAS,IAAI,IAAMA,GAAQu9C,QAAQ,KAC3C,CACA,qBAAAS,GACE,MAAO,CAAC,EAAG,EACb,CACA,MACE,GAAI16D,MAAK,GACP,OAEFA,MAAK,GAAeoM,SAAS0D,cAAc,OAC3C9P,MAAK,GAAawpB,UAAUpF,IAAI,YAChC,MAAMu2C,EAAU36D,KAAKu2D,qBAAuB,CAAC,UAAW,WAAY,cAAe,cAAgB,CAAC,UAAW,YAAa,WAAY,cAAe,cAAe,eAAgB,aAAc,cAC9LjiB,EAASt0C,KAAKu0C,WAAWC,QAC/B,IAAK,MAAM9wC,KAAQi3D,EAAS,CAC1B,MAAM7zB,EAAM16B,SAAS0D,cAAc,OACnC9P,MAAK,GAAa+mC,OAAOD,GACzBA,EAAItd,UAAUpF,IAAI,UAAW1gB,GAC7BojC,EAAIrB,aAAa,oBAAqB/hC,GACtCojC,EAAIhe,iBAAiB,cAAe9oB,MAAK,GAAoBmG,KAAKnG,KAAM0D,GAAO,CAC7E4wC,WAEFxN,EAAIhe,iBAAiB,cAAegkB,GAAe,CACjDwH,WAEFxN,EAAIyO,UAAY,CAClB,CACAv1C,KAAK8mC,IAAI8zB,QAAQ56D,MAAK,GACxB,CACA,IAAoB0D,EAAMulB,GACxBA,EAAMzD,iBACN,MAAM,MACJmX,GACEZ,GAAiBS,SACrB,GAAqB,IAAjBvT,EAAMqsB,QAAgBrsB,EAAM6zB,SAAWngB,EACzC,OAEF38B,MAAK,GAAU4kD,QAAO,GACtB,MAAMiW,EAAiB76D,KAAKs4D,aAC5Bt4D,KAAKs4D,cAAe,EACpBt4D,MAAK,GAAqB,CAACipB,EAAMqrC,QAASrrC,EAAMurC,SAChD,MAAMnT,EAAK,IAAI1D,gBACTrJ,EAASt0C,KAAKu0C,WAAW6M,eAAeC,GAC9CrhD,KAAKikB,OAAO62C,qBAAoB,GAChCjqD,OAAOiY,iBAAiB,cAAe9oB,MAAK,GAAoBmG,KAAKnG,KAAM0D,GAAO,CAChFiwD,SAAS,EACT5e,SAAS,EACTT,WAEFzjC,OAAOiY,iBAAiB,YAAaikB,GAAW,CAC9C4mB,SAAS,EACTrf,WAEFzjC,OAAOiY,iBAAiB,cAAegkB,GAAe,CACpDwH,WAEFt0C,MAAK,GAAmB,CACtB4tD,OAAQ5tD,KAAK6G,EACbgnD,OAAQ7tD,KAAKwe,EACbu8C,WAAY/6D,KAAKyc,MACjBu+C,YAAah7D,KAAK0c,QAEpB,MAAMu+C,EAAoBj7D,KAAKikB,OAAO6iB,IAAI/6B,MAAMmvD,OAC1CC,EAAcn7D,KAAK8mC,IAAI/6B,MAAMmvD,OACnCl7D,KAAK8mC,IAAI/6B,MAAMmvD,OAASl7D,KAAKikB,OAAO6iB,IAAI/6B,MAAMmvD,OAASrqD,OAAO+9B,iBAAiB3lB,EAAM5nB,QAAQ65D,OAC7F,MAAME,EAAoB,KACxB/Z,EAAGL,QACHhhD,KAAKikB,OAAO62C,qBAAoB,GAChC96D,MAAK,GAAU4kD,QAAO,GACtB5kD,KAAKs4D,aAAeuC,EACpB76D,KAAKikB,OAAO6iB,IAAI/6B,MAAMmvD,OAASD,EAC/Bj7D,KAAK8mC,IAAI/6B,MAAMmvD,OAASC,EACxBn7D,MAAK,MAEP6Q,OAAOiY,iBAAiB,YAAasyC,EAAmB,CACtD9mB,WAEFzjC,OAAOiY,iBAAiB,OAAQsyC,EAAmB,CACjD9mB,UAEJ,CACA,IAAQztC,EAAG2X,EAAG/B,EAAOC,GACnB1c,KAAKyc,MAAQA,EACbzc,KAAK0c,OAASA,EACd1c,KAAK6G,EAAIA,EACT7G,KAAKwe,EAAIA,EACTxe,KAAKy6D,UACLz6D,KAAKy4D,oBACLz4D,KAAKq7D,YACP,CACA,UAAAA,GAAc,CACd,MACE,IAAKr7D,MAAK,GACR,OAEF,MAAM,OACJ4tD,EAAM,OACNC,EAAM,WACNkN,EAAU,YACVC,GACEh7D,MAAK,GACTA,MAAK,GAAmB,KACxB,MAAM0qB,EAAO1qB,KAAK6G,EACZ8jB,EAAO3qB,KAAKwe,EACZwM,EAAWhrB,KAAKyc,MAChBwO,EAAYjrB,KAAK0c,OACnBgO,IAASkjC,GAAUjjC,IAASkjC,GAAU7iC,IAAa+vC,GAAc9vC,IAAc+vC,GAGnFh7D,KAAK4oD,YAAY,CACf/M,IAAK77C,MAAK,GAAQmG,KAAKnG,KAAM0qB,EAAMC,EAAMK,EAAUC,GACnD6wB,KAAM97C,MAAK,GAAQmG,KAAKnG,KAAM4tD,EAAQC,EAAQkN,EAAYC,GAC1Dhf,UAAU,GAEd,CACA,aAAOsf,CAAOz0D,GACZ,OAAOH,KAAK6qC,MAAU,IAAJ1qC,GAAa,GACjC,CACA,IAAoBnD,EAAMulB,GACxB,MAAOkmC,EAAaC,GAAgBpvD,KAAK+yD,iBACnCnF,EAAS5tD,KAAK6G,EACdgnD,EAAS7tD,KAAKwe,EACdu8C,EAAa/6D,KAAKyc,MAClBu+C,EAAch7D,KAAK0c,OACnB6+C,EAAW3F,GAAiB4F,SAAWrM,EACvCsM,EAAY7F,GAAiB4F,SAAWpM,EACxCsM,EAAiB17D,MAAK,GAAmBA,KAAKspC,UAC9CqyB,EAAS,CAAC90D,EAAG2X,IAAM,CAACk9C,EAAe,GAAK70D,EAAI60D,EAAe,GAAKl9C,EAAGk9C,EAAe,GAAK70D,EAAI60D,EAAe,GAAKl9C,GAC/Go9C,EAAoB57D,MAAK,GAAmB,IAAMA,KAAKspC,UACvDuyB,EAAY,CAACh1D,EAAG2X,IAAM,CAACo9C,EAAkB,GAAK/0D,EAAI+0D,EAAkB,GAAKp9C,EAAGo9C,EAAkB,GAAK/0D,EAAI+0D,EAAkB,GAAKp9C,GACpI,IAAIs9C,EACAC,EACAC,GAAa,EACbC,GAAe,EACnB,OAAQv4D,GACN,IAAK,UACHs4D,GAAa,EACbF,EAAW,CAACvsB,EAAG5qB,IAAM,CAAC,EAAG,GACzBo3C,EAAc,CAACxsB,EAAG5qB,IAAM,CAAC4qB,EAAG5qB,GAC5B,MACF,IAAK,YACHm3C,EAAW,CAACvsB,EAAG5qB,IAAM,CAAC4qB,EAAI,EAAG,GAC7BwsB,EAAc,CAACxsB,EAAG5qB,IAAM,CAAC4qB,EAAI,EAAG5qB,GAChC,MACF,IAAK,WACHq3C,GAAa,EACbF,EAAW,CAACvsB,EAAG5qB,IAAM,CAAC4qB,EAAG,GACzBwsB,EAAc,CAACxsB,EAAG5qB,IAAM,CAAC,EAAGA,GAC5B,MACF,IAAK,cACHs3C,GAAe,EACfH,EAAW,CAACvsB,EAAG5qB,IAAM,CAAC4qB,EAAG5qB,EAAI,GAC7Bo3C,EAAc,CAACxsB,EAAG5qB,IAAM,CAAC,EAAGA,EAAI,GAChC,MACF,IAAK,cACHq3C,GAAa,EACbF,EAAW,CAACvsB,EAAG5qB,IAAM,CAAC4qB,EAAG5qB,GACzBo3C,EAAc,CAACxsB,EAAG5qB,IAAM,CAAC,EAAG,GAC5B,MACF,IAAK,eACHm3C,EAAW,CAACvsB,EAAG5qB,IAAM,CAAC4qB,EAAI,EAAG5qB,GAC7Bo3C,EAAc,CAACxsB,EAAG5qB,IAAM,CAAC4qB,EAAI,EAAG,GAChC,MACF,IAAK,aACHysB,GAAa,EACbF,EAAW,CAACvsB,EAAG5qB,IAAM,CAAC,EAAGA,GACzBo3C,EAAc,CAACxsB,EAAG5qB,IAAM,CAAC4qB,EAAG,GAC5B,MACF,IAAK,aACH0sB,GAAe,EACfH,EAAW,CAACvsB,EAAG5qB,IAAM,CAAC,EAAGA,EAAI,GAC7Bo3C,EAAc,CAACxsB,EAAG5qB,IAAM,CAAC4qB,EAAG5qB,EAAI,GAChC,MAEJ,MAAMu3C,EAAQJ,EAASf,EAAYC,GAC7BmB,EAAgBJ,EAAYhB,EAAYC,GAC9C,IAAIoB,EAAsBT,KAAUQ,GACpC,MAAME,EAAYzG,GAAiB0F,OAAO1N,EAASwO,EAAoB,IACjEE,EAAY1G,GAAiB0F,OAAOzN,EAASuO,EAAoB,IACvE,IAEI9xC,EAAQC,EAFRgyC,EAAS,EACTC,EAAS,EAEb,GAAKvzC,EAAMwzC,eAWPnyC,SACAC,UACEtB,OAbmB,CACvB,MAAM,QACJqrC,EAAO,QACPE,GACEvrC,GACGyzC,EAAaC,GAAe38D,MAAK,IACvCsqB,EAAQC,GAAUvqB,KAAKo5D,wBAAwB9E,EAAUoI,EAAalI,EAAUmI,GACjF38D,MAAK,GAAmB,GAAKs0D,EAC7Bt0D,MAAK,GAAmB,GAAKw0D,CAC/B,CAOA,IADClqC,EAAQC,GAAUsxC,EAAUvxC,EAAS6kC,EAAa5kC,EAAS6kC,GACxD4M,EAAY,CACd,MAAMY,EAAUl2D,KAAK+uD,MAAMsF,EAAYC,GACvCuB,EAASC,EAAS91D,KAAKmN,IAAInN,KAAKoN,IAAIpN,KAAK+uD,MAAM0G,EAAc,GAAKD,EAAM,GAAK5xC,EAAQ6xC,EAAc,GAAKD,EAAM,GAAK3xC,GAAUqyC,EAAS,EAAI7B,EAAY,EAAIC,GAAcO,EAAWR,EAAYU,EAAYT,EAC7M,MAAWiB,EACTM,EAAS/4B,GAAU98B,KAAKm7B,IAAIs6B,EAAc,GAAKD,EAAM,GAAK5xC,GAASixC,EAAU,GAAKR,EAElFyB,EAASh5B,GAAU98B,KAAKm7B,IAAIs6B,EAAc,GAAKD,EAAM,GAAK3xC,GAASkxC,EAAW,GAAKT,EAErF,MAAMhwC,EAAW4qC,GAAiB0F,OAAOP,EAAawB,GAChDtxC,EAAY2qC,GAAiB0F,OAAON,EAAcwB,GACxDJ,EAAsBT,KAAUI,EAAY/wC,EAAUC,IACtD,MAAMP,EAAO2xC,EAAYD,EAAoB,GACvCzxC,EAAO2xC,EAAYF,EAAoB,GAC7Cp8D,MAAK,KAAiB,CAACA,KAAK6G,EAAG7G,KAAKwe,EAAGxe,KAAKyc,MAAOzc,KAAK0c,QACxD1c,KAAKyc,MAAQuO,EACbhrB,KAAK0c,OAASuO,EACdjrB,KAAK6G,EAAI6jB,EACT1qB,KAAKwe,EAAImM,EACT3qB,KAAKy6D,UACLz6D,KAAKy4D,oBACLz4D,KAAK68D,aACP,CACA,WAAAA,GAAe,CACf,aAAAC,GACE98D,MAAK,GAAUywD,QACjB,CACA,kBAAIsM,GACF,OAAO,IACT,CACA,oBAAMC,GACJ,GAAIh9D,KAAK81D,cAAgB91D,MAAK,GAC5B,OAAOA,KAAK81D,aAEd91D,KAAK81D,aAAe,IAAIjiB,GAAc7zC,MACtCA,KAAK8mC,IAAIC,OAAO/mC,KAAK81D,aAAa15C,UAClC,MAAM,eACJ2gD,GACE/8D,KACJ,GAAI+8D,EACF,IAAK,MAAOr5D,EAAMizC,KAASomB,QACnB/8D,KAAK81D,aAAapf,UAAUhzC,EAAMizC,GAO5C,OAJK32C,KAAKwqD,YACRxqD,KAAK81D,aAAapf,UAAU,UAAW12C,KAAKi9D,oBAE9Cj9D,KAAK81D,aAAapf,UAAU,UACrB12C,KAAK81D,YACd,CACA,yBAAAoH,GACEl9D,KAAK81D,cAAclf,gBAAgB,UAAW52C,KAAKi9D,mBAAoB,gBACzE,CACA,8BAAAE,GACEn9D,KAAK81D,cAActf,aAAa,UAClC,CACA,iBAAA4mB,GACEp9D,KAAK81D,cAAcjnB,SACnB7uC,KAAK81D,aAAe,KACpB91D,MAAK,GAAUi3C,SACjB,CACA,YAAAomB,CAAalqB,GACX,MAAMmqB,EAAiBt9D,KAAK81D,cAAchvB,IACtCw2B,EACFA,EAAeC,OAAOpqB,GAEtBnzC,KAAK8mC,IAAIC,OAAOoM,EAEpB,CACA,mBAAAqqB,GACE,OAAOx9D,KAAK8mC,IAAI/c,uBAClB,CACA,aAAA0zC,GASE,OARKz9D,MAAK,IACR+vD,GAAQG,WAAW0F,GAAiBxF,OACpCpwD,MAAK,EAAW,IAAI+vD,GAAQ/vD,MACxBA,MAAK,KACPA,MAAK,EAAS4O,KAAO5O,MAAK,GAC1BA,MAAK,GAAqB,OAGvBA,MAAK,CACd,CACA,eAAI09D,GACF,OAAO19D,MAAK,GAAU4O,IACxB,CACA,eAAI8uD,CAAY9uD,GACT5O,MAAK,IAGVA,MAAK,EAAS4O,KAAOA,EACvB,CACA,kBAAI+uD,GACF,OAAO39D,MAAK,GAAUwwD,WACxB,CACA,uBAAMoN,CAAkBn1B,SAChBzoC,MAAK,GAAU4wD,eAAenoB,GACtC,CACA,gBAAAo1B,CAAiB7M,GACf,OAAOhxD,MAAK,GAAUqoD,UAAU2I,EAClC,CACA,UAAA8M,GACE,QAAS99D,MAAK,IAAaA,MAAK,EAAS89C,SAC3C,CACA,cAAAigB,GACE,OAAO/9D,MAAK,GAAU2wD,YAAa,CACrC,CACA,kBAAAqN,GACEh+D,MAAK,GAAU8xD,aACjB,CACA,gBAAAmL,GACE,OAAOj9D,KAAK42D,cAAgB52D,MAAK,IAAa,IAAIyxD,GAAQzxD,MAAQ,IACpE,CACA,0BAAAgqD,GACOhqD,KAAKu0C,WAAW6C,sBAGjBp3C,MAAK,GACHA,KAAKu0C,WAAWua,iBAClB9uD,MAAK,GAAyBwpB,UAAUqlB,OAAO,UAI9C7uC,KAAKwqD,aAGVxqD,MAAK,GAA2BA,MAAK,EAAS0xD,sBAC9C1xD,KAAK8mC,IAAIC,OAAO/mC,MAAK,KACvB,CACA,6BAAAsyD,GACEtyD,MAAK,EAASsyD,gCACdtyD,MAAK,GAA2B,IAClC,CACA,2BAAA+pD,GACE/pD,MAAK,IAA0BwpB,UAAUpF,IAAI,SAC/C,CACA,WAAIyxB,GACF,MACEjnC,MAAM,SACJskD,EAAQ,KACRzqB,EAAI,KACJ0qB,EAAI,QACJ1I,IAEAzqD,MAAK,EACT,MAAO,CACLyoC,OACAyqB,WACAC,OACA1I,UACAtc,MAAOnuC,KAAKoiD,iBACZ55B,QAASxoB,KAAKwoB,SAAW,EAE7B,CACA,WAAIqtB,CAAQpN,GACVzoC,MAAK,IAAa,IAAIyxD,GAAQzxD,MAC9BA,MAAK,EAAS4O,KAAO65B,EACjBzoC,KAAKwqD,YACPxqD,KAAKm9D,iCACLn9D,KAAKgqD,6BACLhqD,KAAKu0C,WAAW6O,cAAcpjD,QAE9BA,KAAKk9D,4BACLl9D,KAAKsyD,gCACLtyD,KAAKu0C,WAAWgP,cAAcvjD,MAElC,CACA,cAAAi+D,EAAe,QACbpoB,EAAO,SACP8U,EAAQ,SACRuI,IAEA,IAAKvI,EACH,OAIF,GAFA3qD,MAAK,IAAa,IAAIyxD,GAAQzxD,MAC9BA,MAAK,EAASozD,eAAevd,EAASqd,IACjClzD,KAAKuqD,oBACR,OAEF,MAAMllB,EAAarlC,KAAKu0C,WAAW+R,sCAAsCtmD,KAAKuqD,qBAC1EllB,GACFrlC,KAAKk+D,0BAA0B74B,EAEnC,CACA,oBAAI84B,GACF,OAAOn+D,MAAK,GAAUizD,eACxB,CACA,qBAAImL,GACF,OAAOp+D,MAAK,GAAUgzD,WACxB,CACA,cAAIxI,GACF,QAASxqD,MAAK,IAAaA,MAAK,EAAS89C,YAAc99C,MAAK,EAASgzD,WACvE,CACA,iBAAMpQ,CAAYj/C,GAChB3D,MAAK,IAAa,IAAIyxD,GAAQzxD,MAC9BA,MAAK,EAAS8yD,KAAKnvD,EACrB,CACA,aAAAw/C,CAAcp+B,EAAYypB,OAAarqC,GACjCnE,KAAKwqD,YACPxqD,KAAKu0C,WAAW4O,cAAcnjD,KAAM+kB,EAAYypB,EAEpD,CACA,wBAAA6vB,CAAyBh5C,GACvBrlB,MAAK,EAASs+D,kBAAkBj5C,EAClC,CACA,UAAAuwB,CAAWwS,GACT,GAAIpoD,KAAKm+D,iBAAkB,CACzB,MAAMI,EAAsB,IACtBC,EAAuB,KACtB,CAAC,CAAC,CAAEC,GAAOrW,EAAWrpB,MACtBhZ,GAAa/lB,KAAK82D,gBAClB5sB,GAASlqC,KAAK+2D,gBACf2H,EAAMx0B,EAAQnkB,EAAY,EAC1B44C,EAAMF,EAAMD,EACZI,EAAMF,EAAMH,EAClBnW,EAAWyW,MAAQ,CACjBC,SAAU9+D,KAAK61C,QAAQpN,KACvBgiB,QAASzqD,KAAK61C,QAAQ4U,QACtB1rB,KAAM,CAAC2/B,EAAKC,EAAKC,EAAKH,GAE1B,CACF,CACA,yBAAAP,EACEW,OAAO,SACLC,EAAQ,QACRrU,KAGFzqD,MAAK,EAAS4O,KAAO67C,EAAU,KAAOqU,CACxC,CACA,4BAAIC,GACF,OAAO/+D,KAAKikB,OAAOguC,kBACrB,CACA,MAAA71C,GACE,MAAM0qB,EAAM9mC,KAAK8mC,IAAM16B,SAAS0D,cAAc,OAC9Cg3B,EAAIrB,aAAa,wBAAyB,IAAMzlC,KAAKspC,UAAY,KACjExC,EAAIoM,UAAYlzC,KAAK0D,KACrBojC,EAAIrB,aAAa,KAAMzlC,KAAKuP,IAC5Bu3B,EAAIyO,SAAWv1C,MAAK,IAAa,EAAI,EACrC8mC,EAAIrB,aAAa,OAAQ,eACrBzlC,KAAKg/D,eACPl4B,EAAIrB,aAAa,eAAgBzlC,KAAKg/D,eAEnCh/D,KAAKi2D,YACRnvB,EAAItd,UAAUpF,IAAI,UAEpBpkB,KAAK44D,kBACL54D,MAAK,KACL,MAAOmvD,EAAaC,GAAgBpvD,KAAK+yD,iBACrC/yD,KAAKw4D,eAAiB,MAAQ,IAChC1xB,EAAI/6B,MAAMkzD,SAAW,IAAI,IAAM7P,EAAeD,GAAa8K,QAAQ,MACnEnzB,EAAI/6B,MAAMmzD,UAAY,IAAI,IAAM/P,EAAcC,GAAc6K,QAAQ,OAEtE,MAAO5L,EAAIC,GAAMtuD,KAAK06D,wBAetB,OAdA16D,KAAK05D,UAAUrL,EAAIC,GACnBtW,GAAWh4C,KAAM8mC,EAAK,CAAC,UAAW,cAAe,aAC7C9mC,KAAKsU,aAAetU,KAAKu0C,WAAWuM,uBACtC9gD,MAAK,KAAkB,IAAIqzD,GAAa,CACtClgB,UAAWrM,EACXwsB,mBAAoB,KAAOtzD,KAAK+kB,WAChCyuC,aAAcxzD,MAAK,GAAyBmG,KAAKnG,MACjDyzD,WAAYzzD,MAAK,GAAoBmG,KAAKnG,MAC1C0zD,WAAY1zD,MAAK,GAAuBmG,KAAKnG,MAC7Cs0C,OAAQt0C,KAAKu0C,WAAWC,WAG5Bx0C,KAAKgqD,6BACLhqD,KAAKu0C,WAAWqJ,gBAAgB5I,OACzBlO,CACT,CACA,MACE9mC,MAAK,GAAmB,CACtB4tD,OAAQ5tD,KAAK6G,EACbgnD,OAAQ7tD,KAAKwe,EACbu8C,WAAY/6D,KAAKyc,MACjBu+C,YAAah7D,KAAK0c,QAEpB1c,MAAK,GAAU4kD,QAAO,GACtB5kD,KAAKikB,OAAO62C,qBAAoB,EAClC,CACA,IAAoBqE,EAASC,EAAc5J,GACzC,MAAM6J,EAAiB,GACvB,IAAIC,EAASD,GAAkB7J,EAAW4J,GAAgB,EAAIC,EAC9D,GAAe,IAAXC,EACF,OAEF,MAAM5D,EAAiB17D,MAAK,GAAmBA,KAAKspC,UAC9CqyB,EAAS,CAAC90D,EAAG2X,IAAM,CAACk9C,EAAe,GAAK70D,EAAI60D,EAAe,GAAKl9C,EAAGk9C,EAAe,GAAK70D,EAAI60D,EAAe,GAAKl9C,IAC9G2wC,EAAaC,GAAgBpvD,KAAK+yD,iBACnCnF,EAAS5tD,KAAK6G,EACdgnD,EAAS7tD,KAAKwe,EACdu8C,EAAa/6D,KAAKyc,MAClBu+C,EAAch7D,KAAK0c,OACnB6+C,EAAW3F,GAAiB4F,SAAWrM,EACvCsM,EAAY7F,GAAiB4F,SAAWpM,EAC9CkQ,EAAS54D,KAAKmN,IAAInN,KAAKoN,IAAIwrD,EAAQ,EAAIvE,EAAY,EAAIC,GAAcO,EAAWR,EAAYU,EAAYT,GACxG,MAAMhwC,EAAW4qC,GAAiB0F,OAAOP,EAAauE,GAChDr0C,EAAY2qC,GAAiB0F,OAAON,EAAcsE,GACxD,GAAIt0C,IAAa+vC,GAAc9vC,IAAc+vC,EAC3C,OAEFh7D,MAAK,KAAiB,CAAC4tD,EAAQC,EAAQkN,EAAYC,GACnD,MAAMuE,EAAoB5D,EAAOZ,EAAa,EAAGC,EAAc,GACzDxxB,EAAUosB,GAAiB0F,OAAO1N,EAAS2R,EAAkB,IAC7D91B,EAAUmsB,GAAiB0F,OAAOzN,EAAS0R,EAAkB,IAC7DC,EAAuB7D,EAAO3wC,EAAW,EAAGC,EAAY,GAC9DjrB,KAAK6G,EAAI2iC,EAAUg2B,EAAqB,GACxCx/D,KAAKwe,EAAIirB,EAAU+1B,EAAqB,GACxCx/D,KAAKyc,MAAQuO,EACbhrB,KAAK0c,OAASuO,EACdjrB,KAAKy6D,UACLz6D,KAAKy4D,oBACLz4D,KAAK68D,aACP,CACA,MACE78D,MAAK,GAAU4kD,QAAO,GACtB5kD,KAAKikB,OAAO62C,qBAAoB,GAChC96D,MAAK,IACP,CACA,WAAAy/D,CAAYx2C,GACV,MAAM,MACJ0T,GACEZ,GAAiBS,SACA,IAAjBvT,EAAMqsB,QAAgBrsB,EAAM6zB,SAAWngB,EACzC1T,EAAMzD,kBAGRxlB,MAAK,IAAkB,EACnBA,KAAKs4D,aACPt4D,MAAK,GAAkBipB,GAGzBjpB,MAAK,GAAsBipB,GAC7B,CACA,IAAsBA,GACpB,MAAM,MACJ0T,GACEZ,GAAiBS,SACjBvT,EAAM6zB,UAAYngB,GAAS1T,EAAM+zB,UAAY/zB,EAAM8zB,SAAWpgB,EAChE38B,KAAKikB,OAAO4oC,eAAe7sD,MAE3BA,KAAKikB,OAAO6mC,YAAY9qD,KAE5B,CACA,IAAkBipB,GAChB,MAAM,WACJlE,GACE/kB,KACJA,KAAKu0C,WAAWoZ,mBAChB,IAAI+R,GAAqB,EACzB,MAAMre,EAAK,IAAI1D,gBACTrJ,EAASt0C,KAAKu0C,WAAW6M,eAAeC,GACxCyS,EAAO,CACX/e,SAAS,EACT4e,SAAS,EACTrf,UAEIqrB,EAAav9C,IACjBi/B,EAAGL,QACHhhD,MAAK,GAAiB,KACtBA,MAAK,IAAkB,EAClBA,KAAKu0C,WAAWyZ,kBACnBhuD,MAAK,GAAsBoiB,GAEzBs9C,GACF1/D,KAAK4/D,mBAGL76C,IACF/kB,MAAK,GAAaipB,EAAMS,QACxB1pB,MAAK,GAAaipB,EAAMU,QACxB3pB,MAAK,GAAiBipB,EAAMmvB,UAC5Bp4C,MAAK,GAAmBipB,EAAMsvB,YAC9B1nC,OAAOiY,iBAAiB,cAAe1G,IAChCs9C,IACHA,GAAqB,EACrB1/D,KAAKu0C,WAAW4O,cAAcnjD,MAAM,GAAM,GAC1CA,KAAK6/D,oBAEP,MACEn2C,QAAS7iB,EACT8iB,QAASnL,EAAC,UACV45B,GACEh2B,EACJ,GAAIg2B,IAAcp4C,MAAK,GAErB,YADA+sC,GAAU3qB,GAGZ,MAAOisC,EAAIC,GAAMtuD,KAAKo5D,wBAAwBvyD,EAAI7G,MAAK,GAAYwe,EAAIxe,MAAK,IAC5EA,MAAK,GAAa6G,EAClB7G,MAAK,GAAawe,EAClBxe,KAAKu0C,WAAW6Z,oBAAoBC,EAAIC,IACvCwF,GACHjjD,OAAOiY,iBAAiB,YAAaikB,GAAW+mB,GAChDjjD,OAAOiY,iBAAiB,cAAe1G,IACjCA,EAAEm2B,cAAgBv4C,MAAK,KACrBA,MAAK,IAAiBoiB,EAAE09C,YAC1BH,EAAWv9C,GAGf2qB,GAAU3qB,IACT0xC,IAEL,MAAMsH,EAAoBh5C,IACnBpiB,MAAK,IAAkBA,MAAK,KAAmBoiB,EAAEg2B,UAItDrL,GAAU3qB,GAHRu9C,EAAWv9C,IAKfvR,OAAOiY,iBAAiB,YAAasyC,EAAmB,CACtD9mB,WAEFzjC,OAAOiY,iBAAiB,OAAQsyC,EAAmB,CACjD9mB,UAEJ,CACA,gBAAAurB,GAAoB,CACpB,eAAAD,GAAmB,CACnB,SAAAvF,GACMr6D,MAAK,IACPmhD,aAAanhD,MAAK,IAEpBA,MAAK,GAAoBisD,WAAW,KAClCjsD,MAAK,GAAoB,KACzBA,KAAKikB,QAAQ87C,gBAAgB//D,OAC5B,EACL,CACA,qBAAAmuD,CAAsBlqC,EAAQpd,EAAG2X,GAC/ByF,EAAOwqC,aAAazuD,MACpBA,KAAK6G,EAAIA,EACT7G,KAAKwe,EAAIA,EACTxe,KAAKy4D,oBACLz4D,KAAKw5D,eACP,CACA,OAAAwG,CAAQ3R,EAAIC,EAAIhlB,EAAWtpC,KAAKspC,UAC9B,MAAM3rB,EAAQ3d,KAAKw6D,aACZz0C,EAAWC,GAAchmB,KAAK82D,gBAC9B5sB,EAAOC,GAASnqC,KAAK+2D,gBACtBkJ,EAAS5R,EAAK1wC,EACduiD,EAAS5R,EAAK3wC,EACd9W,EAAI7G,KAAK6G,EAAIkf,EACbvH,EAAIxe,KAAKwe,EAAIwH,EACbvJ,EAAQzc,KAAKyc,MAAQsJ,EACrBrJ,EAAS1c,KAAK0c,OAASsJ,EAC7B,OAAQsjB,GACN,KAAK,EACH,MAAO,CAACziC,EAAIo5D,EAAS/1B,EAAOlkB,EAAaxH,EAAI0hD,EAASxjD,EAASytB,EAAOtjC,EAAIo5D,EAASxjD,EAAQytB,EAAOlkB,EAAaxH,EAAI0hD,EAAS/1B,GAC9H,KAAK,GACH,MAAO,CAACtjC,EAAIq5D,EAASh2B,EAAOlkB,EAAaxH,EAAIyhD,EAAS91B,EAAOtjC,EAAIq5D,EAASxjD,EAASwtB,EAAOlkB,EAAaxH,EAAIyhD,EAASxjD,EAAQ0tB,GAC9H,KAAK,IACH,MAAO,CAACtjC,EAAIo5D,EAASxjD,EAAQytB,EAAOlkB,EAAaxH,EAAI0hD,EAAS/1B,EAAOtjC,EAAIo5D,EAAS/1B,EAAOlkB,EAAaxH,EAAI0hD,EAASxjD,EAASytB,GAC9H,KAAK,IACH,MAAO,CAACtjC,EAAIq5D,EAASxjD,EAASwtB,EAAOlkB,EAAaxH,EAAIyhD,EAASxjD,EAAQ0tB,EAAOtjC,EAAIq5D,EAASh2B,EAAOlkB,EAAaxH,EAAIyhD,EAAS91B,GAC9H,QACE,MAAM,IAAI1R,MAAM,oBAEtB,CACA,sBAAA0nC,CAAuBphC,EAAM/Y,GAC3B,MAAOmb,EAAIC,EAAIC,EAAIE,GAAMxC,EACnBtiB,EAAQ4kB,EAAKF,EACbzkB,EAAS6kB,EAAKH,EACpB,OAAQphC,KAAKspC,UACX,KAAK,EACH,MAAO,CAACnI,EAAInb,EAAaub,EAAI9kB,EAAOC,GACtC,KAAK,GACH,MAAO,CAACykB,EAAInb,EAAaob,EAAI1kB,EAAQD,GACvC,KAAK,IACH,MAAO,CAAC4kB,EAAIrb,EAAaob,EAAI3kB,EAAOC,GACtC,KAAK,IACH,MAAO,CAAC2kB,EAAIrb,EAAaub,EAAI7kB,EAAQD,GACvC,QACE,MAAM,IAAIgc,MAAM,oBAEtB,CACA,UAAA2nC,GACE,OAAOpgE,KAAKggE,QAAQ,EAAG,EACzB,CACA,cAAA5d,GACE,OAAOpiD,KAAKmuC,OAASynB,GAAiBwB,cAAc/Z,QAAQr9C,KAAKu0C,WAAW6N,eAAepiD,KAAKmuC,OAClG,CACA,cAAA4jB,GACE/xD,MAAK,GAAU+xD,gBACjB,CACA,OAAA1O,GACE,MACExN,SACEpN,KAAMnN,EAAG,MACT6S,EAAK,KACLglB,EAAI,QACJ3qC,EAAO,QACPiiC,EAAO,SACPyI,GAEF39C,IAAKhG,EAAE,UACP0zC,EAAS,aACTyT,EAAY,iBACZC,GACE32D,KACJ,MAAO,CACLuP,KACA0zC,YACAlkB,KAAM/+B,KAAKogE,aACXlN,WACAtI,YAAa,CACXtvB,OAEFo7B,eACAC,iBAAkBxD,GAAQwD,EAC1BhM,UAAWF,EACXtc,QACA3lB,UAEJ,CACA,SAAA63C,CAAU7b,GAAQ,CAClB,OAAA1G,GACE,OAAO,CACT,CACA,cAAAwiB,GACE,OAAItgE,KAAKk5D,iBAGTl5D,KAAKikB,OAAO6jC,iBAAgB,GAC5B9nD,MAAK,IAAgB,GACd,EACT,CACA,eAAAugE,GACE,QAAKvgE,KAAKk5D,iBAGVl5D,KAAKikB,OAAO6jC,iBAAgB,GAC5B9nD,MAAK,IAAgB,GACd,EACT,CACA,YAAAk5D,GACE,OAAOl5D,MAAK,EACd,CACA,uBAAA2uD,GACE,OAAO3uD,MAAK,EACd,CACA,gBAAAwgE,GACE,OAAOxgE,KAAK8mC,MAAQ9mC,KAAKg3D,eAC3B,CACA,cAAIyJ,GACF,MAAM,IACJliD,EAAG,KACHH,EAAI,OACJsiD,EAAM,MACNC,GACE3gE,KAAKw9D,uBACH,YACJoD,EAAW,WACXC,GACEhwD,OACJ,OAAOuN,EAAOyiD,GAAcF,EAAQ,GAAKpiD,EAAMqiD,GAAeF,EAAS,CACzE,CACA,MACE,GAAI1gE,MAAK,KAAaA,KAAK8mC,IACzB,OAEF9mC,MAAK,GAAW,IAAI29C,gBACpB,MAAMrJ,EAASt0C,KAAKu0C,WAAW6M,eAAephD,MAAK,IACnDA,KAAK8mC,IAAIhe,iBAAiB,UAAW9oB,KAAK84D,QAAQ3yD,KAAKnG,MAAO,CAC5Ds0C,WAEFt0C,KAAK8mC,IAAIhe,iBAAiB,WAAY9oB,KAAK+4D,SAAS5yD,KAAKnG,MAAO,CAC9Ds0C,UAEJ,CACA,OAAAka,GACExuD,MAAK,IACP,CACA,MAAA8gE,CAAOC,GAAS,CAChB,MAAA3K,GAAU,CACV,gBAAA4K,GACE,MAAO,CACLzxD,GAAIvP,KAAKuqD,oBACTE,SAAS,EACTxH,UAAWjjD,KAAKijD,UAChB0H,SAAU3qD,KAAKg2D,cAAcrL,UAAY,GAE7C,CACA,SAAAtC,CAAU2I,GAAe,EAAOluC,EAAU,MACxC,MAAO,CACLm+C,eAAgBjhE,KAAK6X,KACrBorC,UAAWjjD,KAAKijD,UAChBlkB,KAAM/+B,KAAKogE,aACX92B,SAAUtpC,KAAKspC,SACf43B,mBAAoBlhE,KAAKy2D,oBACzB9L,SAAU3qD,KAAKg2D,cAAcrL,UAAY,GAE7C,CACA,wBAAahC,CAAY/5C,EAAMqV,EAAQkzB,GACrC,MAAMrD,EAAS,IAAI9zC,KAAKkE,UAAUF,YAAY,CAC5CigB,SACA1U,GAAI0U,EAAOuzC,YACXrgB,YACAoT,oBAAqB37C,EAAK27C,oBAC1BmM,aAAc9nD,EAAK8nD,aACnBC,iBAAkB/nD,EAAK+nD,mBAEzB7iB,EAAOxK,SAAW16B,EAAK06B,SACvBwK,GAAO,GAAqBllC,EAAKuyD,kBACjCrtB,EAAO+hB,QAAUjnD,EAAKwyD,SAAU,EAChC,MAAOr7C,EAAWC,GAAc8tB,EAAOgjB,gBAChCjwD,EAAG2X,EAAG/B,EAAOC,GAAUo3B,EAAOqsB,uBAAuBvxD,EAAKmwB,KAAM/Y,GAKvE,OAJA8tB,EAAOjtC,EAAIA,EAAIkf,EACf+tB,EAAOt1B,EAAIA,EAAIwH,EACf8tB,EAAOr3B,MAAQA,EAAQsJ,EACvB+tB,EAAOp3B,OAASA,EAASsJ,EAClB8tB,CACT,CACA,mBAAI6b,GACF,QAAS3vD,KAAKuqD,sBAAwBvqD,KAAKyqD,SAAgC,OAArBzqD,KAAKqoD,YAC7D,CACA,MAAAxZ,GAkBE,GAjBA7uC,MAAK,IAAUghD,QACfhhD,MAAK,GAAW,KACXA,KAAK89C,WACR99C,KAAKotD,SAEHptD,KAAKikB,OACPjkB,KAAKikB,OAAO4qB,OAAO7uC,MAEnBA,KAAKu0C,WAAWyX,aAAahsD,MAE/BA,KAAKqhE,mBACDrhE,MAAK,KACPmhD,aAAanhD,MAAK,IAClBA,MAAK,GAAoB,MAE3BA,MAAK,KACLA,KAAKo9D,oBACDp9D,MAAK,GAAoB,CAC3B,IAAK,MAAMshE,KAAWthE,MAAK,GAAmB8rC,SAC5CqV,aAAamgB,GAEfthE,MAAK,GAAqB,IAC5B,CACAA,KAAKikB,OAAS,KACdjkB,MAAK,IAAei3C,UACpBj3C,MAAK,GAAgB,KACrBA,MAAK,IAAiB6uC,SACtB7uC,MAAK,GAAkB,IACzB,CACA,eAAIsU,GACF,OAAO,CACT,CACA,aAAAitD,GACMvhE,KAAKsU,cACPtU,MAAK,KACLA,MAAK,GAAawpB,UAAUqlB,OAAO,UAEvC,CACA,mBAAI+F,GACF,OAAO,IACT,CACA,yBAAI+c,GACF,MAAqC,QAA9B3xD,KAAKu0C,WAAW5tB,UAAsB,CAAC,EAAG,GAAK,CAAC,EAAG,EAC5D,CACA,+BAAI66C,GACF,MACE7P,uBAAwB9O,EAAMC,IAC5B9iD,MACG0+D,EAAKC,EAAKC,EAAKH,GAAOz+D,KAAKogE,aAClC,MAAO,CAACxK,GAAiB0F,OAAOoD,GAAOE,EAAMF,GAAO7b,GAAO+S,GAAiB0F,OAAOqD,GAAOF,EAAME,IAAQ,EAAI7b,IAC9G,CACA,sBAAI8O,GACF,OAAO5xD,KAAKu0C,WAAWmP,iBAAiB1jD,KAAKoiD,iBAAkBpiD,KAAKwoB,QACtE,CACA,wBAAIi5C,GACF,OAAOzhE,MAAK,EAASkyD,2BACvB,CACA,wBAAIuP,CAAqBtjC,GACvBn+B,MAAK,EAASkyD,4BAA8B/zB,CAC9C,CACA,uBAAAk0B,GACE,OAAOryD,MAAK,EAASqyD,yBACvB,CACA,sBAAIL,GACF,OAAOhyD,MAAK,EAASgyD,kBACvB,CACA,sBAAI0P,GACF,OAAO1hE,KAAK8mC,GACd,CACA,sBAAAyrB,CAAuB5uD,GACrB3D,MAAK,GAAUuyD,uBAAuB5uD,EACxC,CACA,OAAA2jD,CAAQr+B,GACN,IAAKjpB,KAAKsU,aAAe2U,EAAM5nB,SAAWrB,KAAK8mC,KAAqB,UAAd7d,EAAM7e,IAC1D,OAEFpK,KAAKu0C,WAAWuW,YAAY9qD,MAC5BA,MAAK,GAAmB,CACtB4tD,OAAQ5tD,KAAK6G,EACbgnD,OAAQ7tD,KAAKwe,EACbu8C,WAAY/6D,KAAKyc,MACjBu+C,YAAah7D,KAAK0c,QAEpB,MAAMooB,EAAW9kC,MAAK,GAAa8kC,SACnC,IAAK9kC,MAAK,GAAiB,CACzBA,MAAK,GAAkBuQ,MAAM2sB,KAAK4H,GAClC,MAAM68B,EAAsB3hE,MAAK,GAAgBmG,KAAKnG,MAChD4hE,EAAmB5hE,MAAK,GAAamG,KAAKnG,MAC1Cs0C,EAASt0C,KAAKu0C,WAAWC,QAC/B,IAAK,MAAM1N,KAAO9mC,MAAK,GAAiB,CACtC,MAAM0D,EAAOojC,EAAIjB,aAAa,qBAC9BiB,EAAIrB,aAAa,OAAQ,cACzBqB,EAAIhe,iBAAiB,UAAW64C,EAAqB,CACnDrtB,WAEFxN,EAAIhe,iBAAiB,OAAQ84C,EAAkB,CAC7CttB,WAEFxN,EAAIhe,iBAAiB,QAAS9oB,MAAK,GAAcmG,KAAKnG,KAAM0D,GAAO,CACjE4wC,WAEFxN,EAAIrB,aAAa,eAAgBmwB,GAAiB6B,aAAa/zD,GACjE,CACF,CACA,MAAM08B,EAAQpgC,MAAK,GAAgB,GACnC,IAAI6hE,EAAgB,EACpB,IAAK,MAAM/6B,KAAOhC,EAAU,CAC1B,GAAIgC,IAAQ1G,EACV,MAEFyhC,GACF,CACA,MAAMC,GAAqB,IAAM9hE,KAAKspC,SAAWtpC,KAAKw4D,gBAAkB,IAAM,IAAMx4D,MAAK,GAAgBc,OAAS,GAClH,GAAIghE,IAAsBD,EAAe,CACvC,GAAIC,EAAoBD,EACtB,IAAK,IAAI54D,EAAI,EAAGA,EAAI44D,EAAgBC,EAAmB74D,IACrDjJ,MAAK,GAAa+mC,OAAO/mC,MAAK,GAAawzC,wBAExC,GAAIsuB,EAAoBD,EAC7B,IAAK,IAAI54D,EAAI,EAAGA,EAAI64D,EAAoBD,EAAe54D,IACrDjJ,MAAK,GAAawzC,kBAAkB+pB,OAAOv9D,MAAK,GAAa+hE,kBAGjE,IAAI94D,EAAI,EACR,IAAK,MAAM87B,KAASD,EAAU,CAC5B,MAAMgC,EAAM9mC,MAAK,GAAgBiJ,KAC3BvF,EAAOojC,EAAIjB,aAAa,qBAC9Bd,EAAMU,aAAa,eAAgBmwB,GAAiB6B,aAAa/zD,GACnE,CACF,CACA1D,MAAK,GAAoB,GACzBA,MAAK,IAA+B,EACpCA,MAAK,GAAawzC,kBAAkBgR,MAAM,CACxCkM,cAAc,IAEhBznC,EAAMzD,iBACNyD,EAAM+4C,0BACR,CACA,IAAgB/4C,GACd2sC,GAAiBO,wBAAwBz8C,KAAK1Z,KAAMipB,EACtD,CACA,IAAaA,GACPjpB,MAAK,IAAgCipB,EAAM+vC,eAAezH,aAAevxD,MAAK,IAChFA,MAAK,IAET,CACA,IAAc0D,GACZ1D,MAAK,GAAsBA,MAAK,GAA+B0D,EAAO,EACxE,CACA,IAAoB5B,GAClB,GAAK9B,MAAK,GAGV,IAAK,MAAM8mC,KAAO9mC,MAAK,GACrB8mC,EAAIyO,SAAWzzC,CAEnB,CACA,mBAAAu0D,CAAoBxvD,EAAG2X,GAChBxe,MAAK,IAGVA,MAAK,GAAoBA,MAAK,GAAqB,CACjDsqB,OAAQzjB,EACR0jB,OAAQ/L,EACRi+C,cAAc,GAElB,CACA,MACEz8D,MAAK,IAA+B,EACpCA,MAAK,IAAqB,GAC1BA,MAAK,IACP,CACA,yBAAAs2D,GACEt2D,MAAK,KACLA,KAAK8mC,IAAI0d,OACX,CACA,MAAAsI,GACM9sD,KAAK+kB,YAAc/kB,KAAK81D,aAC1B91D,KAAK81D,aAAa5gB,QAGpBl1C,KAAK+kB,YAAa,EAClB/kB,KAAKuhE,gBACLvhE,KAAK8mC,KAAKtd,UAAUpF,IAAI,kBACnBpkB,KAAK81D,cAQV91D,KAAK81D,cAAc5gB,OACnBl1C,MAAK,GAAU8wD,oBAAmB,IARhC9wD,KAAKg9D,iBAAiBtjB,KAAK,KACrB15C,KAAK8mC,KAAKtd,UAAUD,SAAS,mBAC/BvpB,KAAK81D,cAAc5gB,SAO3B,CACA,KAAAsP,GACMxkD,KAAK8mC,MAAQ9mC,KAAK8mC,IAAIvd,SAASnd,SAAS+xC,gBAC1C8N,WAAW,IAAMjsD,KAAK8mC,KAAK0d,MAAM,CAC/Byd,eAAe,IACb,EAER,CACA,QAAAjX,GACOhrD,KAAK+kB,aAGV/kB,KAAK+kB,YAAa,EAClB/kB,MAAK,IAAcwpB,UAAUpF,IAAI,UACjCpkB,KAAK8mC,KAAKtd,UAAUqlB,OAAO,kBACvB7uC,KAAK8mC,KAAKvd,SAASnd,SAAS+xC,gBAC9Bn+C,KAAKu0C,WAAWgR,aAAaze,IAAI0d,MAAM,CACrCyd,eAAe,IAGnBjiE,KAAK81D,cAAc9gB,OACnBh1C,MAAK,GAAU8wD,oBAAmB,GAClC9wD,KAAKqhE,mBACP,CACA,gBAAAA,GACMrhE,KAAKwqD,YACPxqD,KAAKu0C,WAAW4O,cAAc,KAElC,CACA,YAAA3C,CAAa/3C,EAAM3G,GAAQ,CAC3B,cAAAogE,GAAkB,CAClB,aAAAC,GAAiB,CACjB,oBAAIC,GACF,OAAO,CACT,CACA,eAAArX,GACO/qD,KAAKoiE,mBAGVpiE,KAAKsgE,iBACLtgE,KAAK8mC,IAAI0d,QACX,CACA,QAAA6d,CAASp5C,GACuB,WAA1BA,EAAM5nB,OAAOihE,WAGjBtiE,KAAK+qD,kBACL/qD,KAAKikB,OAAOknC,cAAc,CACxBtzC,KAAM7X,KAAKgE,YAAYomD,YACvBX,OAAQzpD,KAAKuV,MAEjB,CACA,oBAAAi8C,GACE,OAAOxxD,KAAK8mC,GACd,CACA,cAAIy7B,GACF,OAAOviE,KAAK8mC,GACd,CACA,aAAI+W,GACF,OAAO79C,MAAK,EACd,CACA,aAAI69C,CAAU/7C,GACZ9B,MAAK,GAAa8B,EACb9B,KAAKikB,SAGNniB,GACF9B,KAAKikB,OAAO6mC,YAAY9qD,MACxBA,KAAKikB,OAAOuoC,gBAAgBxsD,OAE5BA,KAAKikB,OAAOuoC,gBAAgB,MAEhC,CACA,mBAAWgP,GACT,OAAO,EACT,CACA,8BAAOvQ,GACL,OAAO,CACT,CACA,wBAAIuX,GACF,MAAO,CACLpX,OAAQ,QAEZ,CACA,sBAAIqX,GACF,OAAO,IACT,CACA,gBAAAlS,CAAiB3hD,EAAM68C,GAAW,GAChC,GAAIA,EAAU,CACZzrD,MAAK,KAAuB,IAAIsF,IAChC,MAAM,OACJ8lD,GACEx8C,EACJ,IAAI0yD,EAAUthE,MAAK,GAAmB6C,IAAIuoD,GAY1C,OAXIkW,GACFngB,aAAamgB,GAEfA,EAAUrV,WAAW,KACnBjsD,KAAKuwD,iBAAiB3hD,GACtB5O,MAAK,GAAmBw1C,OAAO4V,GACM,IAAjCprD,MAAK,GAAmB6rC,OAC1B7rC,MAAK,GAAqB,OAE3B41D,GAAiB8M,wBACpB1iE,MAAK,GAAmB4H,IAAIwjD,EAAQkW,EAEtC,CACA1yD,EAAKnG,OAASzI,KAAKq1C,WACnBr1C,KAAKu0C,WAAWyL,UAAUqE,SAAS,kBAAmB,CACpDhgD,OAAQrE,KACRs6B,QAAS,CACP7xB,KAAM,UACNmG,SAGN,CACA,IAAAsmC,CAAKoW,EAAUtrD,KAAKi2D,YAClBj2D,KAAK8mC,IAAItd,UAAUo7B,OAAO,UAAW0G,GACrCtrD,KAAKi2D,WAAa3K,CACpB,CACA,MAAAjC,GACMrpD,KAAK8mC,MACP9mC,KAAK8mC,IAAIyO,SAAW,GAEtBv1C,MAAK,IAAY,CACnB,CACA,OAAAspD,GACMtpD,KAAK8mC,MACP9mC,KAAK8mC,IAAIyO,UAAY,GAEvBv1C,MAAK,IAAY,CACnB,CACA,2BAAA2iE,CAA4BC,GAC1B,GAAK5iE,MAAK,IAAoBA,KAAKyqD,QAInC,OAAIzqD,KAAKyqD,SACPzqD,MAAK,GAAgB6uC,cACrB7uC,MAAK,GAAkB,aAGrBA,KAAKm+D,kBAAoBn+D,KAAKk6D,eAAiBl6D,KAAKm6D,kBACtDn6D,MAAK,GAAgB6iE,aAAa,CAChC9jC,KAAM/+B,KAAKogE,aACXvB,MAAO7+D,KAAK61C,WAXd71C,MAAK,GAAkB4iE,EAAgBE,kBAAkB9iE,KAc7D,CACA,uBAAAyvD,CAAwB/E,GACtB,GAAI1qD,KAAKyqD,QAEP,OADAC,EAAW1V,OACJ,KAET,IAAI3pC,EAAUq/C,EAAWvX,UAAUrpB,cAAc,sBACjD,GAAKze,GAIE,GAAyB,WAArBA,EAAQi3D,SAAuB,CACxC,MAAM7/C,EAASpX,EACfA,EAAUe,SAAS0D,cAAc,OACjCzE,EAAQme,UAAUpF,IAAI,oBAAqBpkB,KAAKq1C,YAChD5yB,EAAO86C,OAAOlyD,EAChB,OAREA,EAAUe,SAAS0D,cAAc,OACjCzE,EAAQme,UAAUpF,IAAI,oBAAqBpkB,KAAKq1C,YAChDqV,EAAWvX,UAAUynB,QAAQvvD,GAO/B,OAAOA,CACT,CACA,sBAAA03D,CAAuBrY,GACrB,MAAM,kBACJlX,GACEkX,EAAWvX,UACqB,QAAhCK,GAAmB8uB,UAAsB9uB,EAAkBhqB,UAAUD,SAAS,sBAChFiqB,EAAkB3E,QAEtB,EAEF,MAAM0oB,WAAmB3B,GACvB,WAAA5xD,CAAYgpD,GACV5yB,MAAM4yB,GACNhtD,KAAKuqD,oBAAsByC,EAAOzC,oBAClCvqD,KAAKyqD,SAAU,CACjB,CACA,SAAApC,GACE,OAAOroD,KAAKghE,kBACd,EAIF,MAAMgC,GAAO,WACPC,GAAY,WACZC,GAAW,MACjB,MAAMC,GACJ,WAAAn/D,CAAYo/D,GACVpjE,KAAKqjE,GAAKD,EAAc,WAAPA,EAAoBJ,GACrChjE,KAAKsjE,GAAKF,EAAc,WAAPA,EAAoBJ,EACvC,CACA,MAAAv7B,CAAOv5B,GACL,IAAIU,EAAM9N,EACV,GAAqB,kBAAVoN,EAAoB,CAC7BU,EAAO,IAAI2sB,WAA0B,EAAfrtB,EAAMpN,QAC5BA,EAAS,EACT,IAAK,IAAImI,EAAI,EAAG2hC,EAAK18B,EAAMpN,OAAQmI,EAAI2hC,EAAI3hC,IAAK,CAC9C,MAAMkxB,EAAOjsB,EAAMstB,WAAWvyB,GAC1BkxB,GAAQ,IACVvrB,EAAK9N,KAAYq5B,GAEjBvrB,EAAK9N,KAAYq5B,IAAS,EAC1BvrB,EAAK9N,KAAmB,IAAPq5B,EAErB,CACF,KAAO,KAAI7wB,YAAYi6D,OAAOr1D,GAI5B,MAAM,IAAIuqB,MAAM,wDAHhB7pB,EAAOV,EAAM/K,QACbrC,EAAS8N,EAAKnF,UAGhB,CACA,MAAM+5D,EAAc1iE,GAAU,EACxB2iE,EAAa3iE,EAAuB,EAAd0iE,EACtBE,EAAa,IAAI7nC,YAAYjtB,EAAKvF,OAAQ,EAAGm6D,GACnD,IAAIG,EAAK,EACPC,EAAK,EACHP,EAAKrjE,KAAKqjE,GACZC,EAAKtjE,KAAKsjE,GACZ,MAAMO,EAAK,WACTC,EAAK,UACDC,EAASF,EAAKX,GAClBc,EAASF,EAAKZ,GAChB,IAAK,IAAIj6D,EAAI,EAAGA,EAAIu6D,EAAav6D,IACvB,EAAJA,GACF06D,EAAKD,EAAWz6D,GAChB06D,EAAKA,EAAKE,EAAKZ,GAAYU,EAAKI,EAASb,GACzCS,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKG,EAAKb,GAAYU,EAAKK,EAASd,GACzCG,GAAMM,EACNN,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAU,EAALA,EAAS,aAEdO,EAAKF,EAAWz6D,GAChB26D,EAAKA,EAAKC,EAAKZ,GAAYW,EAAKG,EAASb,GACzCU,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKE,EAAKb,GAAYW,EAAKI,EAASd,GACzCI,GAAMM,EACNN,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAU,EAALA,EAAS,YAIlB,OADAK,EAAK,EACGF,GACN,KAAK,EACHE,GAAM/0D,EAAmB,EAAd40D,EAAkB,IAAM,GACrC,KAAK,EACHG,GAAM/0D,EAAmB,EAAd40D,EAAkB,IAAM,EACrC,KAAK,EACHG,GAAM/0D,EAAmB,EAAd40D,GACXG,EAAKA,EAAKE,EAAKZ,GAAYU,EAAKI,EAASb,GACzCS,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKG,EAAKb,GAAYU,EAAKK,EAASd,GACvB,EAAdM,EACFH,GAAMM,EAENL,GAAMK,EAGZ3jE,KAAKqjE,GAAKA,EACVrjE,KAAKsjE,GAAKA,CACZ,CACA,SAAAW,GACE,IAAIZ,EAAKrjE,KAAKqjE,GACZC,EAAKtjE,KAAKsjE,GAQZ,OAPAD,GAAMC,IAAO,EACbD,EAAU,WAALA,EAAkBJ,GAAiB,MAALI,EAAcH,GACjDI,EAAU,WAALA,EAAkBL,IAAsC,YAAxBK,GAAM,GAAKD,IAAO,IAAmBJ,MAAe,GACzFI,GAAMC,IAAO,EACbD,EAAU,UAALA,EAAkBJ,GAAiB,MAALI,EAAcH,GACjDI,EAAU,WAALA,EAAkBL,IAAsC,YAAxBK,GAAM,GAAKD,IAAO,IAAmBJ,MAAe,GACzFI,GAAMC,IAAO,GACLD,IAAO,GAAG9+D,SAAS,IAAI44B,SAAS,EAAG,MAAQmmC,IAAO,GAAG/+D,SAAS,IAAI44B,SAAS,EAAG,IACxF,EAOF,MAAM+mC,GAAoBjhE,OAAO8wC,OAAO,CACtClqC,IAAK,KACL6vB,KAAM,GACNlwB,cAAUrF,IAEZ,MAAMggE,GACJ,KAAY,EACZ,IAAe,KACf,IAAc,KACd,IAAW,IAAI7+D,IACf,WAAAtB,GACEhE,KAAKokE,cAAgB,KACrBpkE,KAAKqkE,gBAAkB,KACvBrkE,KAAKskE,mBAAqB,IAC5B,CACA,QAAAh/B,CAASl7B,EAAKm6D,GACZ,MAAMziE,EAAQ9B,MAAK,GAAS6C,IAAIuH,GAChC,YAAcjG,IAAVrC,EACKyiE,EAEFthE,OAAOmjC,OAAOm+B,EAAcziE,EACrC,CACA,WAAA2kD,CAAYr8C,GACV,OAAOpK,MAAK,GAAS6C,IAAIuH,EAC3B,CACA,MAAAykC,CAAOzkC,GACL,MAAMo8C,EAAcxmD,MAAK,GAAS6C,IAAIuH,GACtC,QAAoBjG,IAAhBqiD,IAGAA,aAAuBoP,IACzB51D,MAAK,GAAYw1C,OAAOgR,EAAY+D,qBAEtCvqD,MAAK,GAASw1C,OAAOprC,GACM,IAAvBpK,MAAK,GAAS6rC,MAChB7rC,KAAKwkE,gBAEgC,oBAA5BxkE,KAAKskE,oBAAmC,CACjD,IAAK,MAAMxiE,KAAS9B,MAAK,GAAS8rC,SAChC,GAAIhqC,aAAiB8zD,GACnB,OAGJ51D,KAAKskE,mBAAmB,KAC1B,CACF,CACA,QAAA/+B,CAASn7B,EAAKtI,GACZ,MAAMgI,EAAM9J,MAAK,GAAS6C,IAAIuH,GAC9B,IAAIq6D,GAAW,EACf,QAAYtgE,IAAR2F,EACF,IAAK,MAAO46D,EAAO5zD,KAAQ7N,OAAOsC,QAAQzD,GACpCgI,EAAI46D,KAAW5zD,IACjB2zD,GAAW,EACX36D,EAAI46D,GAAS5zD,QAIjB2zD,GAAW,EACXzkE,MAAK,GAAS4H,IAAIwC,EAAKtI,GAErB2iE,GACFzkE,MAAK,KAEH8B,aAAiB8zD,MAClB51D,MAAK,KAAgB,IAAIsF,KAAOsC,IAAI9F,EAAMyoD,oBAAqBzoD,GACzB,oBAA5B9B,KAAKskE,oBACdtkE,KAAKskE,mBAAmBxiE,EAAMkC,YAAYizD,OAGhD,CACA,GAAApvD,CAAIuC,GACF,OAAOpK,MAAK,GAAS6H,IAAIuC,EAC3B,CACA,QAAIyhC,GACF,OAAO7rC,MAAK,GAAS6rC,IACvB,CACA,MACO7rC,MAAK,KACRA,MAAK,IAAY,EACiB,oBAAvBA,KAAKokE,eACdpkE,KAAKokE,gBAGX,CACA,aAAAI,GACMxkE,MAAK,KACPA,MAAK,IAAY,EACmB,oBAAzBA,KAAKqkE,iBACdrkE,KAAKqkE,kBAGX,CACA,SAAIM,GACF,OAAO,IAAIC,GAAuB5kE,KACpC,CACA,gBAAI6kE,GACF,GAA2B,IAAvB7kE,MAAK,GAAS6rC,KAChB,OAAOq4B,GAET,MAAMr6D,EAAM,IAAIvE,IACdo0B,EAAO,IAAIypC,GACX35D,EAAW,GACPsZ,EAAU7f,OAAOwJ,OAAO,MAC9B,IAAIq4D,GAAY,EAChB,IAAK,MAAO16D,EAAK0G,KAAQ9Q,MAAK,GAAU,CACtC,MAAMooD,EAAat3C,aAAe8kD,GAAmB9kD,EAAIu3C,WAAU,EAAOvlC,GAAWhS,EACjFs3C,IACFv+C,EAAIjC,IAAIwC,EAAKg+C,GACb1uB,EAAK+N,OAAO,GAAGr9B,KAAOy8C,KAAKC,UAAUsB,MACrC0c,MAAgB1c,EAAW/wC,OAE/B,CACA,GAAIytD,EACF,IAAK,MAAMhjE,KAAS+H,EAAIiiC,SAClBhqC,EAAMuV,QACR7N,EAASS,KAAKnI,EAAMuV,QAI1B,OAAOxN,EAAIgiC,KAAO,EAAI,CACpBhiC,MACA6vB,KAAMA,EAAKuqC,YACXz6D,YACE06D,EACN,CACA,eAAIa,GACF,IAAIC,EAAQ,KACZ,MAAMC,EAAe,IAAI3/D,IACzB,IAAI4/D,EAAyB,EACzBC,EAA0B,EAC9B,IAAK,MAAMrjE,KAAS9B,MAAK,GAAS8rC,SAAU,CAC1C,KAAMhqC,aAAiB8zD,IAAmB,CACpC9zD,EAAM+8D,QACJ/8D,EAAM+8D,MAAMpU,QACd0a,GAA2B,EAE3BD,GAA0B,GAG9B,QACF,CACIpjE,EAAMsjE,iBACRD,GAA2B,EAClBrjE,EAAMq8D,mBACf+G,GAA0B,GAE5B,MAAMH,EAAcjjE,EAAM2gE,mBAC1B,IAAKsC,EACH,SAEF,MAAM,KACJt8D,GACEs8D,EACCE,EAAap9D,IAAIY,IACpBw8D,EAAar9D,IAAIa,EAAMxF,OAAOwH,eAAe3I,GAAOkC,aAEtDghE,IAAU/hE,OAAOwJ,OAAO,MACxB,MAAM5C,EAAMm7D,EAAMv8D,KAAU,IAAInD,IAChC,IAAK,MAAO8E,EAAK0G,KAAQ7N,OAAOsC,QAAQw/D,GAAc,CACpD,GAAY,SAAR36D,EACF,SAEF,IAAIi7D,EAAWx7D,EAAIhH,IAAIuH,GAClBi7D,IACHA,EAAW,IAAI//D,IACfuE,EAAIjC,IAAIwC,EAAKi7D,IAEf,MAAMC,EAAQD,EAASxiE,IAAIiO,IAAQ,EACnCu0D,EAASz9D,IAAIkJ,EAAKw0D,EAAQ,EAC5B,CACF,CAQA,IAPIH,EAA0B,GAAKD,EAAyB,KAC1DF,IAAU/hE,OAAOwJ,OAAO,MACxBu4D,EAAMO,SAAW,CACf9a,QAAS0a,EACTK,OAAQN,KAGPF,EACH,OAAO,KAET,IAAK,MAAOv8D,EAAMqrC,KAAWmxB,EAC3BD,EAAMv8D,GAAQqrC,EAAO2xB,0BAA0BT,EAAMv8D,IAEvD,OAAOu8D,CACT,CACA,gBAAAU,GACE1lE,MAAK,GAAe,IACtB,CACA,YAAA2lE,CAAapf,EAAc33C,GACzB,MAAM9M,EAAQ9B,MAAK,IAAa6C,IAAI0jD,GACpC,QAAIzkD,IACFA,EAAMo8D,0BAA0BtvD,IACzB,EAGX,CACA,SAAAk9C,CAAUvF,GACR,OAAOvmD,MAAK,IAAa6C,IAAI0jD,IAAiB,IAChD,CACA,eAAIqf,GACF,GAAI5lE,MAAK,GACP,OAAOA,MAAK,GAEd,MAAM6lE,EAAM,GACZ,GAAI7lE,MAAK,GACP,IAAK,MAAM8B,KAAS9B,MAAK,GAAY8rC,SAC9BhqC,EAAMumD,aAGXwd,EAAI57D,KAAKnI,EAAMyoD,qBAGnB,OAAOvqD,MAAK,GAAe,CACzB6lE,IAAK,IAAIxtB,IAAIwtB,GACbnsC,KAAMmsC,EAAIxiE,KAAK,KAEnB,CACA,CAAC0O,OAAOhM,YACN,OAAO/F,MAAK,GAASuF,SACvB,EAEF,MAAMq/D,WAA+BT,GACnC,IACA,WAAAngE,CAAYigB,GACVmW,QACA,MAAM,IACJvwB,EAAG,KACH6vB,EAAI,SACJlwB,GACEya,EAAO4gD,aACLt7D,EAAQH,gBAAgBS,EAAKL,EAAW,CAC5CA,YACE,MACJxJ,MAAK,GAAgB,CACnB6J,IAAKN,EACLmwB,OACAlwB,WAEJ,CACA,SAAIm7D,GACFnsC,EAAY,+CACd,CACA,gBAAIqsC,GACF,OAAO7kE,MAAK,EACd,CACA,eAAI4lE,GACF,OAAO9rC,EAAO95B,KAAM,cAAe,CACjC6lE,IAAK,IAAIxtB,IACT3e,KAAM,IAEV,EAMF,MAAMosC,GACJ,IAAe,IAAIztB,IACnB,WAAAr0C,EAAY,cACV+hE,EAAgBh+D,WAAWqE,SAAQ,aACnC45D,EAAe,OAEfhmE,KAAKimE,UAAYF,EACjB/lE,KAAKkmE,gBAAkB,IAAI7tB,IAC3Br4C,KAAKgmE,aAAe,KACpBhmE,KAAKmmE,gBAAkB,GACvBnmE,KAAKomE,eAAiB,CACxB,CACA,iBAAAC,CAAkBC,GAChBtmE,KAAKkmE,gBAAgB9hD,IAAIkiD,GACzBtmE,KAAKimE,UAAUM,MAAMniD,IAAIkiD,EAC3B,CACA,oBAAAE,CAAqBF,GACnBtmE,KAAKkmE,gBAAgB1wB,OAAO8wB,GAC5BtmE,KAAKimE,UAAUM,MAAM/wB,OAAO8wB,EAC9B,CACA,UAAAG,CAAWC,GACJ1mE,KAAKgmE,eACRhmE,KAAKgmE,aAAehmE,KAAKimE,UAAUn2D,cAAc,SACjD9P,KAAKimE,UAAUhO,gBAAgB0O,qBAAqB,QAAQ,GAAG5/B,OAAO/mC,KAAKgmE,eAE7E,MAAMY,EAAa5mE,KAAKgmE,aAAaa,MACrCD,EAAWH,WAAWC,EAAME,EAAWE,SAAShmE,OAClD,CACA,KAAAogD,GACE,IAAK,MAAMolB,KAAkBtmE,KAAKkmE,gBAChClmE,KAAKimE,UAAUM,MAAM/wB,OAAO8wB,GAE9BtmE,KAAKkmE,gBAAgBhlB,QACrBlhD,MAAK,GAAakhD,QACdlhD,KAAKgmE,eACPhmE,KAAKgmE,aAAan3B,SAClB7uC,KAAKgmE,aAAe,KAExB,CACA,oBAAMe,EACJC,eAAgB5uC,EAAI,gBACpB6uC,EAAe,aACfC,IAEA,GAAK9uC,IAAQp4B,MAAK,GAAa6H,IAAIuwB,EAAK+uC,YAAxC,CAIA,GADAzuC,GAAQuuC,EAAiB,qEACrBjnE,KAAKonE,0BAA2B,CAClC,MAAM,WACJD,EAAU,IACVj7D,EAAG,MACHH,GACEqsB,EACEivC,EAAW,IAAIC,SAASH,EAAYj7D,EAAKH,GAC/C/L,KAAKqmE,kBAAkBgB,GACvB,UACQA,EAASE,OACfvnE,MAAK,GAAaokB,IAAI+iD,GACtBD,IAAe9uC,EACjB,CAAE,MACAG,EAAK,4BAA4BH,EAAKovC,oEACtCxnE,KAAKwmE,qBAAqBa,EAC5B,CACA,MACF,CACA7uC,EAAY,gEApBZ,CAqBF,CACA,UAAMryB,CAAKshE,GACT,GAAIA,EAAKC,UAAYD,EAAKE,cAAgBF,EAAKT,eAC7C,OAGF,GADAS,EAAKC,UAAW,EACZD,EAAKT,eAEP,kBADMhnE,KAAK+mE,eAAeU,GAG5B,GAAIznE,KAAKonE,0BAA2B,CAClC,MAAMd,EAAiBmB,EAAKG,uBAC5B,GAAItB,EAAgB,CAClBtmE,KAAKqmE,kBAAkBC,GACvB,UACQA,EAAeuB,MACvB,CAAE,MAAOrf,GAGP,MAFAjwB,EAAK,wBAAwB+tC,EAAewB,aAAatf,OACzDif,EAAKR,iBAAkB,EACjBze,CACR,CACF,CACA,MACF,CACA,MAAMke,EAAOe,EAAKM,qBAClB,GAAIrB,EAAM,CAER,GADA1mE,KAAKymE,WAAWC,GACZ1mE,KAAKgoE,2BACP,aAEI,IAAIzmD,QAAQ0iB,IAChB,MAAM0E,EAAU3oC,KAAKioE,sBAAsBhkC,GAC3CjkC,KAAKkoE,sBAAsBT,EAAM9+B,IAErC,CACF,CACA,6BAAIy+B,GACF,MAAMe,IAAanoE,KAAKimE,WAAWM,MACnC,OAAOzsC,EAAO95B,KAAM,4BAA6BmoE,EACnD,CACA,8BAAIH,GACF,OAAOluC,EAAO95B,KAAM,6BAA8ByrB,GAAYsQ,GAAiBS,SAASK,UAC1F,CACA,qBAAAorC,CAAsBtrB,GACpB,SAASyrB,IACP1vC,GAAQiQ,EAAQ1iC,KAAM,6CACtB0iC,EAAQ1iC,MAAO,EACf,MAAOkgE,EAAgBrlE,OAAS,GAAKqlE,EAAgB,GAAGlgE,KAAM,CAC5D,MAAMoiE,EAAelC,EAAgBmC,QACrCrc,WAAWoc,EAAa1rB,SAAU,EACpC,CACF,CACA,MAAM,gBACJwpB,GACEnmE,KACE2oC,EAAU,CACd1iC,MAAM,EACNsiE,SAAUH,EACVzrB,YAGF,OADAwpB,EAAgBl8D,KAAK0+B,GACdA,CACT,CACA,iBAAI6/B,GACF,MAAMC,EAAW1kC,KAAK,49CACtB,OAAOjK,EAAO95B,KAAM,gBAAiByoE,EACvC,CACA,qBAAAP,CAAsBT,EAAM9+B,GAC1B,SAAS+/B,EAAM95D,EAAM+5D,GACnB,OAAO/5D,EAAK4sB,WAAWmtC,IAAW,GAAK/5D,EAAK4sB,WAAWmtC,EAAS,IAAM,GAAK/5D,EAAK4sB,WAAWmtC,EAAS,IAAM,EAAkC,IAA9B/5D,EAAK4sB,WAAWmtC,EAAS,EACzI,CACA,SAASC,EAAa/2B,EAAG82B,EAAQ95B,EAAQg6B,GACvC,MAAMC,EAASj3B,EAAE/G,UAAU,EAAG69B,GACxBI,EAASl3B,EAAE/G,UAAU69B,EAAS95B,GACpC,OAAOi6B,EAASD,EAASE,CAC3B,CACA,IAAI9/D,EAAG2hC,EACP,MAAMnoB,EAASziB,KAAKimE,UAAUn2D,cAAc,UAC5C2S,EAAOhG,MAAQ,EACfgG,EAAO/F,OAAS,EAChB,MAAMqyB,EAAMtsB,EAAOM,WAAW,MAC9B,IAAIimD,EAAS,EACb,SAASC,EAAYvlE,EAAMi5C,GACzB,KAAMqsB,EAAS,GAGb,OAFAzwC,EAAK,qCACLokB,IAGF5N,EAAI04B,KAAO,QAAU/jE,EACrBqrC,EAAIm6B,SAAS,IAAK,EAAG,IACrB,MAAMC,EAAYp6B,EAAI6K,aAAa,EAAG,EAAG,EAAG,GACxCuvB,EAAUv6D,KAAK,GAAK,EACtB+tC,IAGFsP,WAAWgd,EAAY9iE,KAAK,KAAMzC,EAAMi5C,GAC1C,CACA,MAAMypB,EAAiB,KAAK95B,KAAKC,QAAQvsC,KAAKomE,mBAC9C,IAAIx3D,EAAO5O,KAAKwoE,cAChB,MAAMY,EAAiB,IACvBx6D,EAAOg6D,EAAah6D,EAAMw6D,EAAgBhD,EAAetlE,OAAQslE,GACjE,MAAMiD,EAAsB,GACtBC,EAAa,WACnB,IAAIC,EAAWb,EAAM95D,EAAMy6D,GAC3B,IAAKpgE,EAAI,EAAG2hC,EAAKw7B,EAAetlE,OAAS,EAAGmI,EAAI2hC,EAAI3hC,GAAK,EACvDsgE,EAAWA,EAAWD,EAAaZ,EAAMtC,EAAgBn9D,GAAK,EAE5DA,EAAIm9D,EAAetlE,SACrByoE,EAAWA,EAAWD,EAAaZ,EAAMtC,EAAiB,MAAOn9D,GAAK,GAExE2F,EAAOg6D,EAAah6D,EAAMy6D,EAAqB,EAAG5tC,GAAS8tC,IAC3D,MAAM1wC,EAAM,iCAAiC+K,KAAKh1B,OAC5C83D,EAAO,4BAA4BN,UAAuBvtC,KAChE74B,KAAKymE,WAAWC,GAChB,MAAM5/B,EAAM9mC,KAAKimE,UAAUn2D,cAAc,OACzCg3B,EAAI/6B,MAAMyiC,WAAa,SACvB1H,EAAI/6B,MAAM0Q,MAAQqqB,EAAI/6B,MAAM2Q,OAAS,OACrCoqB,EAAI/6B,MAAMoV,SAAW,WACrB2lB,EAAI/6B,MAAMwS,IAAMuoB,EAAI/6B,MAAMqS,KAAO,MACjC,IAAK,MAAM1a,IAAQ,CAAC+jE,EAAKN,WAAYf,GAAiB,CACpD,MAAM73B,EAAOvuC,KAAKimE,UAAUn2D,cAAc,QAC1Cy+B,EAAKjK,YAAc,KACnBiK,EAAKxiC,MAAMy9D,WAAa9lE,EACxBojC,EAAIC,OAAOwH,EACb,CACAvuC,KAAKimE,UAAUv3B,KAAK3H,OAAOD,GAC3BmiC,EAAY7C,EAAgB,KAC1Bt/B,EAAI+H,SACJlG,EAAQ4/B,YAEZ,EAEF,MAAMkB,GACJ,IACA,WAAAzlE,CAAY0lE,EAAgBC,EAAc,KAAMC,EAAOC,GACrD7pE,KAAK8pE,eAAiB7mE,OAAOwJ,OAAO,MACpCzM,MAAK,GAAY0pE,EACjB1pE,KAAKknE,aAAeyC,EAChBC,GACF3mE,OAAOmjC,OAAOpmC,KAAM4pE,GAElBC,IACF7pE,KAAK6pE,qBAAuBA,EAEhC,CACA,oBAAAjC,GACE,IAAK5nE,KAAK4O,MAAQ5O,KAAKinE,gBACrB,OAAO,KAET,IAAIX,EACJ,GAAKtmE,KAAK+pE,YAEH,CACL,MAAMC,EAAM,CACVC,OAAQjqE,KAAK+pE,YAAYG,YAEvBlqE,KAAK+pE,YAAYI,cACnBH,EAAIj+D,MAAQ,WAAW/L,KAAK+pE,YAAYI,kBAE1C7D,EAAiB,IAAIgB,SAAStnE,KAAK+pE,YAAYP,WAAYxpE,KAAK4O,KAAMo7D,EACxE,MATE1D,EAAiB,IAAIgB,SAAStnE,KAAKmnE,WAAYnnE,KAAK4O,KAAM,CAAC,GAW7D,OADA5O,KAAKknE,eAAelnE,MACbsmE,CACT,CACA,kBAAAyB,GACE,IAAK/nE,KAAK4O,MAAQ5O,KAAKinE,gBACrB,OAAO,KAET,MAAMpuC,EAAM,YAAY74B,KAAKoqE,mBAAmB3mC,GAAazjC,KAAK4O,UAClE,IAAI83D,EACJ,GAAK1mE,KAAK+pE,YAEH,CACL,IAAIC,EAAM,gBAAgBhqE,KAAK+pE,YAAYG,cACvClqE,KAAK+pE,YAAYI,cACnBH,GAAO,uBAAuBhqE,KAAK+pE,YAAYI,mBAEjDzD,EAAO,4BAA4B1mE,KAAK+pE,YAAYP,eAAeQ,QAAUnxC,IAC/E,MAPE6tC,EAAO,4BAA4B1mE,KAAKmnE,mBAAmBtuC,KAS7D,OADA74B,KAAKknE,eAAelnE,KAAM64B,GACnB6tC,CACT,CACA,gBAAA2D,CAAiBC,EAAMC,GACrB,QAAuCpmE,IAAnCnE,KAAK8pE,eAAeS,GACtB,OAAOvqE,KAAK8pE,eAAeS,GAE7B,MAAMC,EAAQxqE,KAAKmnE,WAAa,SAAWoD,EAC3C,IAAIE,EACJ,IACEA,EAAOH,EAAKznE,IAAI2nE,EAClB,CAAE,MAAOhiB,GACPjwB,EAAK,2CAA2CiwB,MAClD,CACA,MAAM9U,EAAOD,GAAoBg3B,GAAM/2B,MAIvC,OAHK1zC,KAAK0qE,qBACRJ,EAAK90B,OAAOg1B,GAEPxqE,KAAK8pE,eAAeS,GAAa72B,CAC1C,CACA,SAAIi3B,GACF,OAAO3qE,MAAK,GAAU2qE,KACxB,CACA,QAAIC,GACF,OAAO5qE,MAAK,GAAU4qE,IACxB,CACA,mBAAI3D,GACF,OAAOjnE,MAAK,GAAUinE,kBAAmB,CAC3C,CACA,mBAAIA,CAAgBnlE,GAClBg4B,EAAO95B,KAAM,oBAAqB8B,EACpC,CACA,uBAAI4oE,GACF,OAAO1qE,MAAK,GAAU0qE,sBAAuB,CAC/C,CACA,sBAAIG,GACF,OAAO7qE,MAAK,GAAU6qE,kBACxB,CACA,eAAIC,GACF,OAAO9qE,MAAK,GAAU8qE,WACxB,CACA,UAAIC,GACF,OAAO/qE,MAAK,GAAU+qE,MACxB,CACA,eAAIpD,GACF,OAAO3nE,MAAK,GAAU2nE,WACxB,CACA,aAAIqD,GACF,OAAOhrE,MAAK,GAAUgrE,SACxB,CACA,YAAIC,GACF,OAAOjrE,MAAK,GAAUirE,QACxB,CACA,UAAIC,GACF,OAAOlrE,MAAK,GAAUkrE,MACxB,CACA,gBAAIC,GACF,OAAOnrE,MAAK,GAAUmrE,YACxB,CACA,WAAIC,GACF,OAAOprE,MAAK,GAAUorE,OACxB,CACA,QAAIC,GACF,OAAOrrE,MAAK,GAAUqrE,IACxB,CACA,QAAIA,CAAKA,GACPvxC,EAAO95B,KAAM,OAAQqrE,EACvB,CACA,cAAIC,GACF,OAAOtrE,MAAK,GAAUsrE,UACxB,CACA,gBAAIC,GACF,OAAOvrE,MAAK,GAAUurE,YACxB,CACA,cAAIpE,GACF,OAAOnnE,MAAK,GAAUmnE,UACxB,CACA,YAAIiD,GACF,OAAOpqE,MAAK,GAAUoqE,QACxB,CACA,QAAI1mE,GACF,OAAO1D,MAAK,GAAU0D,IACxB,CACA,QAAIkL,GACF,OAAO5O,MAAK,GAAU4O,IACxB,CACA,SAAA48D,GACExrE,MAAK,GAAUwrE,WACjB,CACA,eAAIzB,GACF,OAAO/pE,MAAK,GAAU+pE,WACxB,CACA,kBAAI/C,GACF,OAAOhnE,MAAK,GAAUgnE,cACxB,CACA,mBAAIyE,GACF,OAAOzrE,MAAK,GAAUyrE,eACxB,EAKF,MAAMC,GACJ,IACA,IACA,IACA7jC,eAAiB,CAAC,aAAc,aAAc,eAC9C,YAAOt8B,CAAM6sB,GACX,MAAMuzC,EAAU,IAAIC,YACdC,EAAiB,CAAC,EACxB,IAAIC,EAAgB,EACpB,IAAK,MAAM7vD,KAAQyvD,GAAYK,QAAS,CACtC,MAAMC,EAAUL,EAAQM,OAAO7zC,EAAKnc,IACpC4vD,EAAe5vD,GAAQ+vD,EACvBF,GAAiB,EAAIE,EAAQlrE,MAC/B,CACA,MAAMuI,EAAS,IAAIC,YAAYwiE,GACzBl9D,EAAO,IAAI2sB,WAAWlyB,GACtB6iE,EAAO,IAAI58D,SAASjG,GAC1B,IAAIs/D,EAAS,EACb,IAAK,MAAM1sD,KAAQyvD,GAAYK,QAAS,CACtC,MAAMC,EAAUH,EAAe5vD,GACzBnb,EAASkrE,EAAQlrE,OACvBorE,EAAKC,UAAUxD,EAAQ7nE,GACvB8N,EAAKhH,IAAIokE,EAASrD,EAAS,GAC3BA,GAAU,EAAI7nE,CAChB,CAEA,OADA43B,EAAOiwC,IAAWt/D,EAAOI,WAAY,sCAC9BJ,CACT,CACA,WAAArF,CAAYqF,GACVrJ,MAAK,GAAUqJ,EACfrJ,MAAK,GAAQ,IAAIsP,SAAStP,MAAK,IAC/BA,MAAK,GAAW,IAAIosE,WACtB,CACA,IAAY7+D,GACVmrB,EAAOnrB,EAAQm+D,GAAYK,QAAQjrE,OAAQ,wBAC3C,IAAI6nE,EAAS,EACb,IAAK,IAAI1/D,EAAI,EAAGA,EAAIsE,EAAOtE,IACzB0/D,GAAU3oE,MAAK,GAAMqsE,UAAU1D,GAAU,EAE3C,MAAM7nE,EAASd,MAAK,GAAMqsE,UAAU1D,GACpC,OAAO3oE,MAAK,GAASwrC,OAAO,IAAIjQ,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAG7nE,GACvE,CACA,cAAI0oE,GACF,OAAOxpE,MAAK,GAAY,EAC1B,CACA,cAAIkqE,GACF,OAAOlqE,MAAK,GAAY,EAC1B,CACA,eAAImqE,GACF,OAAOnqE,MAAK,GAAY,EAC1B,EAEF,MAAMssE,GACJ,IACA,IACA,IACAzkC,eAAiB,CAAC,MAAO,aAAc,eAAgB,OACvD,YAAOt8B,CAAM6sB,GACX,MAAMuzC,EAAU,IAAIC,YACdC,EAAiB,CAAC,EACxB,IAAIC,EAAgB,EACpB,IAAK,MAAM7vD,KAAQqwD,GAAeP,QAAS,CACzC,MAAMC,EAAUL,EAAQM,OAAO7zC,EAAKnc,IACpC4vD,EAAe5vD,GAAQ+vD,EACvBF,GAAiB,EAAIE,EAAQlrE,MAC/B,CACAgrE,GAAiB,EACjB,IAAIS,EACFC,EACAC,EAAiB,EAAIX,EACnB1zC,EAAKrsB,QACPwgE,EAAoBZ,EAAQM,OAAO7zC,EAAKrsB,MAAMA,OAC9CygE,EAAqBb,EAAQM,OAAO7zC,EAAKrsB,MAAMk+D,QAC/CwC,GAAkB,EAAIF,EAAkBzrE,OAAS,EAAI0rE,EAAmB1rE,QAE1E,MAAMuI,EAAS,IAAIC,YAAYmjE,GACzB79D,EAAO,IAAI2sB,WAAWlyB,GACtB6iE,EAAO,IAAI58D,SAASjG,GAC1B,IAAIs/D,EAAS,EACbuD,EAAKQ,SAAS/D,IAAUvwC,EAAKu0C,cAAgB,EAAI,GACjDT,EAAKC,UAAUxD,EAAQ,GACvBA,GAAU,EACVmD,EAAgB,EAChB,IAAK,MAAM7vD,KAAQqwD,GAAeP,QAAS,CACzC,MAAMC,EAAUH,EAAe5vD,GACzBnb,EAASkrE,EAAQlrE,OACvBgrE,GAAiB,EAAIhrE,EACrBorE,EAAKC,UAAUxD,EAAQ7nE,GACvB8N,EAAKhH,IAAIokE,EAASrD,EAAS,GAC3BA,GAAU,EAAI7nE,CAChB,CAWA,OAVAorE,EAAKC,UAAUxD,EAASmD,EAAgB,EAAGA,GACvC1zC,EAAKrsB,QACPmgE,EAAKC,UAAUxD,EAAQ4D,EAAkBzrE,QACzC8N,EAAKhH,IAAI2kE,EAAmB5D,EAAS,GACrCA,GAAU,EAAI4D,EAAkBzrE,OAChCorE,EAAKC,UAAUxD,EAAQ6D,EAAmB1rE,QAC1C8N,EAAKhH,IAAI4kE,EAAoB7D,EAAS,GACtCA,GAAU,EAAI6D,EAAmB1rE,QAEnC43B,EAAOiwC,GAAUt/D,EAAOI,WAAY,yCAC7BJ,EAAOuP,sBAAsB+vD,EACtC,CACA,WAAA3kE,CAAYqF,GACVrJ,MAAK,GAAUqJ,EACfrJ,MAAK,GAAQ,IAAIsP,SAAStP,MAAK,IAC/BA,MAAK,GAAW,IAAIosE,WACtB,CACA,iBAAIO,GACF,OAAkC,IAA3B3sE,MAAK,GAAM4sE,SAAS,EAC7B,CACA,IAAYr/D,GACVmrB,EAAOnrB,EAAQ++D,GAAeP,QAAQjrE,OAAQ,wBAC9C,IAAI6nE,EAAS,EACb,IAAK,IAAI1/D,EAAI,EAAGA,EAAIsE,EAAOtE,IACzB0/D,GAAU3oE,MAAK,GAAMqsE,UAAU1D,GAAU,EAE3C,MAAM7nE,EAASd,MAAK,GAAMqsE,UAAU1D,GACpC,OAAO3oE,MAAK,GAASwrC,OAAO,IAAIjQ,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAG7nE,GACvE,CACA,OAAIkpE,GACF,OAAOhqE,MAAK,GAAY,EAC1B,CACA,cAAImnE,GACF,OAAOnnE,MAAK,GAAY,EAC1B,CACA,gBAAIwnE,GACF,OAAOxnE,MAAK,GAAY,EAC1B,CACA,OAAIkM,GACF,OAAOlM,MAAK,GAAY,EAC1B,CACA,SAAI+L,GACF,IAAI48D,EAAS,EACbA,GAAU,EAAI3oE,MAAK,GAAMqsE,UAAU1D,GACnC,MAAMkE,EAAc7sE,MAAK,GAAMqsE,UAAU1D,GACnC58D,EAAQ/L,MAAK,GAASwrC,OAAO,IAAIjQ,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAGkE,IAC5ElE,GAAU,EAAIkE,EACd,MAAMC,EAAe9sE,MAAK,GAAMqsE,UAAU1D,GACpCsB,EAASjqE,MAAK,GAASwrC,OAAO,IAAIjQ,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAGmE,IAC7E,MAAO,CACL/gE,QACAk+D,SAEJ,EAEF,MAAM8C,GACJllC,aAAe,CAAC,QAAS,OAAQ,kBAAmB,sBAAuB,qBAAsB,cAAe,SAAU,cAAe,YAAa,YACtJA,eAAiB,CAAC,SAAU,eAAgB,WAC5CA,eAAiB,CAAC,eAAgB,aAAc,WAAY,QAC5DA,UAAyBnhC,KAAKD,KAAyB,EAApBzG,KAAKgtE,MAAMlsE,OAAa,GAC3D+mC,UAAsB7nC,MAAK,GAAwC,EAAtBA,KAAKmkC,QAAQrjC,OAC1D+mC,UAA6B7nC,MAAK,GAAe,EAAI,EACrD6nC,UAAkC7nC,MAAK,GAAsB,EAAI,GACjE6nC,UAAyB7nC,MAAK,GAA2B,EAAI,EAC7D,IACA,IACA,IACA,WAAAgE,EAAY,KACV4K,EAAI,MACJg7D,IAEA5pE,MAAK,GAAU4O,EACf5O,MAAK,GAAW,IAAIosE,YACpBpsE,MAAK,GAAQ,IAAIsP,SAAStP,MAAK,IAC3B4pE,GACF3mE,OAAOmjC,OAAOpmC,KAAM4pE,EAExB,CACA,IAAar8D,GACXmrB,EAAOnrB,EAAQw/D,GAASC,MAAMlsE,OAAQ,yBACtC,MAAMmsE,EAAavmE,KAAKC,MAAM4G,EAAQ,GAChC2/D,EAAoB,EAAR3/D,EAAY,EACxBzL,EAAQ9B,MAAK,GAAM4sE,SAASK,IAAeC,EAAY,EAC7D,OAAiB,IAAVprE,OAAiBqC,EAAsB,IAAVrC,CACtC,CACA,SAAI6oE,GACF,OAAO3qE,MAAK,GAAa,EAC3B,CACA,QAAI4qE,GACF,OAAO5qE,MAAK,GAAa,EAC3B,CACA,mBAAIinE,GACF,OAAOjnE,MAAK,GAAa,EAC3B,CACA,uBAAI0qE,GACF,OAAO1qE,MAAK,GAAa,EAC3B,CACA,sBAAI6qE,GACF,OAAO7qE,MAAK,GAAa,EAC3B,CACA,eAAI8qE,GACF,OAAO9qE,MAAK,GAAa,EAC3B,CACA,UAAI+qE,GACF,OAAO/qE,MAAK,GAAa,EAC3B,CACA,eAAI2nE,GACF,OAAO3nE,MAAK,GAAa,EAC3B,CACA,aAAIgrE,GACF,OAAOhrE,MAAK,GAAa,EAC3B,CACA,YAAIirE,GACF,OAAOjrE,MAAK,GAAa,EAC3B,CACA,IAAYuN,GAEV,OADAmrB,EAAOnrB,EAAQw/D,GAAS5oC,QAAQrjC,OAAQ,wBACjCd,MAAK,GAAMmtE,WAAWJ,IAAS,GAA0B,EAARx/D,EAC1D,CACA,UAAI29D,GACF,OAAOlrE,MAAK,GAAY,EAC1B,CACA,gBAAImrE,GACF,OAAOnrE,MAAK,GAAY,EAC1B,CACA,WAAIorE,GACF,OAAOprE,MAAK,GAAY,EAC1B,CACA,QAAIqrE,GACF,IAAI1C,EAASoE,IAAS,GACtB,MAAMK,EAAYptE,MAAK,GAAM4sE,SAASjE,GACtC,GAAkB,IAAdyE,EACF,OAEFzE,GAAU,EACV,MAAM0C,EAAO,GACb,IAAK,IAAIpiE,EAAI,EAAGA,EAAI,EAAGA,IACrBoiE,EAAKphE,KAAKjK,MAAK,GAAMqtE,SAAS1E,GAAQ,IACtCA,GAAU,EAEZ,OAAO0C,CACT,CACA,cAAIC,GACF,IAAI3C,EAASoE,IAAS,GACtB,MAAMO,EAAYttE,MAAK,GAAM4sE,SAASjE,GACtC,GAAkB,IAAd2E,EACF,OAEF3E,GAAU,EACV,MAAM2C,EAAa,GACnB,IAAK,IAAIriE,EAAI,EAAGA,EAAI,EAAGA,IACrBqiE,EAAWrhE,KAAKjK,MAAK,GAAMmtE,WAAWxE,GAAQ,IAC9CA,GAAU,EAEZ,OAAO2C,CACT,CACA,mBAAIG,GACF,IAAI9C,EAASoE,IAAS,GACtB,MAAMQ,EAAavtE,MAAK,GAAM4sE,SAASjE,GACvC,GAAmB,IAAf4E,EACF,OAEF5E,GAAU,EACV,MAAM8C,EAAkB,GACxB,IAAK,IAAIxiE,EAAI,EAAGA,EAAI,EAAGA,IACrBwiE,EAAgBxhE,KAAKjK,MAAK,GAAMqtE,SAAS1E,GAAQ,IACjDA,GAAU,EAEZ,OAAO8C,CACT,CACA,IAAYl+D,GACVmrB,EAAOnrB,EAAQw/D,GAAShB,QAAQjrE,OAAQ,wBACxC,IAAI6nE,EAASoE,IAAS,GAAkB,EACxC,IAAK,IAAI9jE,EAAI,EAAGA,EAAIsE,EAAOtE,IACzB0/D,GAAU3oE,MAAK,GAAMqsE,UAAU1D,GAAU,EAE3C,MAAM7nE,EAASd,MAAK,GAAMqsE,UAAU1D,GAC9B6E,EAAa,IAAIjyC,WAAWz6B,GAElC,OADA0sE,EAAW5lE,IAAI,IAAI2zB,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAG7nE,IACjDd,MAAK,GAASwrC,OAAOgiC,EAC9B,CACA,gBAAIjC,GACF,OAAOvrE,MAAK,GAAY,EAC1B,CACA,cAAImnE,GACF,OAAOnnE,MAAK,GAAY,EAC1B,CACA,YAAIoqE,GACF,OAAOpqE,MAAK,GAAY,EAC1B,CACA,QAAI0D,GACF,OAAO1D,MAAK,GAAY,EAC1B,CACA,QAAI4O,GACF,IAAI+5D,EAASoE,IAAS,GACtB,MAAMjB,EAAgB9rE,MAAK,GAAMqsE,UAAU1D,GAC3CA,GAAU,EAAImD,EACd,MAAM2B,EAAuBztE,MAAK,GAAMqsE,UAAU1D,GAClDA,GAAU,EAAI8E,EACd,MAAMC,EAAoB1tE,MAAK,GAAMqsE,UAAU1D,GAC/CA,GAAU,EAAI+E,EACd,MAAM5sE,EAASd,MAAK,GAAMqsE,UAAU1D,GACpC,GAAe,IAAX7nE,EAGJ,OAAO,IAAIy6B,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAG7nE,EAClD,CACA,SAAA0qE,GACE,IAAI7C,EAASoE,IAAS,GACtB,MAAMjB,EAAgB9rE,MAAK,GAAMqsE,UAAU1D,GAC3CA,GAAU,EAAImD,EACd,MAAM2B,EAAuBztE,MAAK,GAAMqsE,UAAU1D,GAClDA,GAAU,EAAI8E,EACd,MAAMC,EAAoB1tE,MAAK,GAAMqsE,UAAU1D,GAC/CA,GAAU,EAAI+E,EACd,MAAM5sE,EAASd,MAAK,GAAMqsE,UAAU1D,GAC9B/5D,EAAO,IAAI2sB,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAG7nE,GACtD8N,EAAKwkB,KAAK,GACVpzB,MAAK,GAAMmsE,UAAUxD,EAAQ,EAC/B,CACA,eAAIoB,GACF,IAAIpB,EAASoE,IAAS,GACtB,MAAMjB,EAAgB9rE,MAAK,GAAMqsE,UAAU1D,GAC3CA,GAAU,EAAImD,EACd,MAAM2B,EAAuBztE,MAAK,GAAMqsE,UAAU1D,GAClDA,GAAU,EAAI8E,EACd,MAAMC,EAAoB1tE,MAAK,GAAMqsE,UAAU1D,GAC/C,GAA0B,IAAtB+E,EACF,OAAO,KAET,MAAMC,EAAkB,IAAIpyC,WAAWmyC,GAEvC,OADAC,EAAgB/lE,IAAI,IAAI2zB,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAG+E,IACtD,IAAIhC,GAAYiC,EAAgBtkE,OACzC,CACA,kBAAI29D,GACF,IAAI2B,EAASoE,IAAS,GACtB,MAAMjB,EAAgB9rE,MAAK,GAAMqsE,UAAU1D,GAC3CA,GAAU,EAAImD,EACd,MAAM2B,EAAuBztE,MAAK,GAAMqsE,UAAU1D,GAClD,GAA6B,IAAzB8E,EACF,OAAO,KAET,MAAMG,EAAqB,IAAIryC,WAAWkyC,GAE1C,OADAG,EAAmBhmE,IAAI,IAAI2zB,WAAWv7B,MAAK,GAAS2oE,EAAS,EAAG8E,IACzD,IAAInB,GAAesB,EAAmBvkE,OAC/C,CACA,YAAOkC,CAAMk8D,GACX,MAAMoG,EAAuBpG,EAAKT,eAAiBsF,GAAe/gE,MAAMk8D,EAAKT,gBAAkB,KACzF8G,EAAoBrG,EAAKsC,YAAc2B,GAAYngE,MAAMk8D,EAAKsC,aAAe,KAC7E4B,EAAU,IAAIC,YACdC,EAAiB,CAAC,EACxB,IAAIC,EAAgB,EACpB,IAAK,MAAM7vD,KAAQ8wD,GAAShB,QAC1BF,EAAe5vD,GAAQ0vD,EAAQM,OAAOxE,EAAKxrD,IAC3C6vD,GAAiB,EAAID,EAAe5vD,GAAMnb,OAE5C,MAAM2rE,EAAiBM,IAAS,GAAkB,EAAIjB,EAAgB,GAAK+B,EAAuBA,EAAqBpkE,WAAa,GAAK,GAAKqkE,EAAoBA,EAAkBrkE,WAAa,GAAK,GAAKg+D,EAAK74D,KAAO64D,EAAK74D,KAAK9N,OAAS,GACpOuI,EAAS,IAAIC,YAAYmjE,GACzB79D,EAAO,IAAI2sB,WAAWlyB,GACtB6iE,EAAO,IAAI58D,SAASjG,GAC1B,IAAIs/D,EAAS,EACb,MAAMoF,EAAWhB,GAASC,MAAMlsE,OAChC,IAAIktE,EAAW,EACbC,EAAU,EACZ,IAAK,IAAIhlE,EAAI,EAAGA,EAAI8kE,EAAU9kE,IAAK,CACjC,MAAMnH,EAAQ2lE,EAAKsF,GAASC,MAAM/jE,IAC5BilE,OAAiB/pE,IAAVrC,EAAsB,EAAOA,EAAQ,EAAO,EACzDksE,GAAYE,GAAQD,EACpBA,GAAW,EACK,IAAZA,GAAiBhlE,IAAM8kE,EAAW,IACpC7B,EAAKQ,SAAS/D,IAAUqF,GACxBA,EAAW,EACXC,EAAU,EAEd,CACAv1C,EAAOiwC,IAAWoE,IAAS,GAAiB,sDAC5C,IAAK,MAAM9wD,KAAQ8wD,GAAS5oC,QAC1B+nC,EAAKiC,WAAWxF,EAAQlB,EAAKxrD,IAC7B0sD,GAAU,EAGZ,GADAjwC,EAAOiwC,IAAWoE,IAAS,GAAc,qDACrCtF,EAAK4D,KAAM,CACba,EAAKQ,SAAS/D,IAAU,GACxB,IAAK,MAAMyF,KAAS3G,EAAK4D,KACvBa,EAAKmC,SAAS1F,EAAQyF,GAAO,GAC7BzF,GAAU,CAEd,MACEuD,EAAKQ,SAAS/D,IAAU,GACxBA,GAAU,EAGZ,GADAjwC,EAAOiwC,IAAWoE,IAAS,GAAqB,mDAC5CtF,EAAK6D,WAAY,CACnBY,EAAKQ,SAAS/D,IAAU,GACxB,IAAK,MAAMzM,KAASuL,EAAK6D,WACvBY,EAAKiC,WAAWxF,EAAQzM,GAAO,GAC/ByM,GAAU,CAEd,MACEuD,EAAKQ,SAAS/D,IAAU,GACxBA,GAAU,GAGZ,GADAjwC,EAAOiwC,IAAWoE,IAAS,GAA0B,yDACjDtF,EAAKgE,gBAAiB,CACxBS,EAAKQ,SAAS/D,IAAU,GACxB,IAAK,MAAM2F,KAAU7G,EAAKgE,gBACxBS,EAAKmC,SAAS1F,EAAQ2F,GAAQ,GAC9B3F,GAAU,CAEd,MACEuD,EAAKQ,SAAS/D,IAAU,GACxBA,GAAU,EAEZjwC,EAAOiwC,IAAWoE,IAAS,GAAiB,8DAC5Cb,EAAKC,UAAUY,IAAS,GAAiB,GACzCpE,GAAU,EACV,IAAK,MAAM1sD,KAAQ8wD,GAAShB,QAAS,CACnC,MAAMC,EAAUH,EAAe5vD,GACzBnb,EAASkrE,EAAQlrE,OACvBorE,EAAKC,UAAUxD,EAAQ7nE,GACvB8N,EAAKhH,IAAIokE,EAASrD,EAAS,GAC3BA,GAAU,EAAI7nE,CAChB,CAEA,GADAorE,EAAKC,UAAUY,IAAS,GAAiBpE,EAASoE,IAAS,GAAkB,GACxEc,EAGE,CACL,MAAM/sE,EAAS+sE,EAAqBpkE,WACpCyiE,EAAKC,UAAUxD,EAAQ7nE,GACvB43B,EAAOiwC,EAAS,EAAI7nE,GAAUuI,EAAOI,WAAY,qDACjDmF,EAAKhH,IAAI,IAAI2zB,WAAWsyC,GAAuBlF,EAAS,GACxDA,GAAU,EAAI7nE,CAChB,MAREorE,EAAKC,UAAUxD,EAAQ,GACvBA,GAAU,EAQZ,GAAKmF,EAGE,CACL,MAAMhtE,EAASgtE,EAAkBrkE,WACjCyiE,EAAKC,UAAUxD,EAAQ7nE,GACvB43B,EAAOiwC,EAAS,EAAI7nE,GAAUuI,EAAOI,WAAY,kDACjDmF,EAAKhH,IAAI,IAAI2zB,WAAWuyC,GAAoBnF,EAAS,GACrDA,GAAU,EAAI7nE,CAChB,MAREorE,EAAKC,UAAUxD,EAAQ,GACvBA,GAAU,EAiBZ,YATkBxkE,IAAdsjE,EAAK74D,MACPs9D,EAAKC,UAAUxD,EAAQ,GACvBA,GAAU,IAEVuD,EAAKC,UAAUxD,EAAQlB,EAAK74D,KAAK9N,QACjC8N,EAAKhH,IAAI6/D,EAAK74D,KAAM+5D,EAAS,GAC7BA,GAAU,EAAIlB,EAAK74D,KAAK9N,QAE1B43B,EAAOiwC,GAAUt/D,EAAOI,WAAY,mCAC7BJ,EAAOuP,sBAAsB+vD,EACtC,EAEF,MAAM4F,GACJ1mC,UAAe,EACfA,UAAmB,EACnBA,UAAyB,EACzBA,UAAuB,EACvBA,UAAkB,EAClBA,UAAkB,EAClBA,UAAiB,GACjBA,UAAoB,GACpB,WAAA7jC,CAAYqF,GACVrJ,KAAKqJ,OAASA,EACdrJ,KAAKksE,KAAO,IAAI58D,SAASjG,GACzBrJ,KAAK4O,KAAO,IAAI2sB,WAAWlyB,EAC7B,CACA,YAAOkC,CAAMijE,GACX,IAAIxlE,EACFqiE,EAAO,KACPoD,EAAS,GACTngC,EAAS,GACTogC,EAAa,GACbC,EAAU,GACVC,EAAc,KACdhtB,EAAa,KACf,OAAQ4sB,EAAG,IACT,IAAK,cACHxlE,EAAiB,UAAVwlE,EAAG,GAAiB,EAAI,EAC/BnD,EAAOmD,EAAG,GACVE,EAAaF,EAAG,GACH,IAATxlE,EACFylE,EAAOxkE,QAAQukE,EAAG,MAAOA,EAAG,IAE5BC,EAAOxkE,KAAKukE,EAAG,GAAG,GAAIA,EAAG,GAAG,GAAIA,EAAG,GAAIA,EAAG,GAAG,GAAIA,EAAG,GAAG,GAAIA,EAAG,IAEhE,MACF,IAAK,OACHxlE,EAAO,EACP4lE,EAAcJ,EAAG,GACjBC,EAASD,EAAG,GACZlgC,EAASkgC,EAAG,GACZG,EAAUH,EAAG,IAAM,GACnBnD,EAAOmD,EAAG,GACV5sB,EAAa4sB,EAAG,GAChB,MACF,QACE,MAAM,IAAI/1C,MAAM,6BAA6B+1C,EAAG,MAEpD,MAAMK,EAASnoE,KAAKC,MAAM8nE,EAAO3tE,OAAS,GACpCguE,EAASpoE,KAAKC,MAAM2nC,EAAOxtC,OAAS,GACpCiuE,EAAQL,EAAW5tE,OACnBkuE,EAAWL,EAAQ7tE,OACzB,IAAImuE,EAAc,EAClB,IAAK,MAAMC,KAAUP,EACnBM,GAAe,EACfA,EAA2C,EAA7BvoE,KAAKD,KAAKwoE,EAAc,GACtCA,GAAe,EAA2B,EAAvBC,EAAOT,OAAO3tE,OACjCmuE,GAAe,EAA2B,EAAvBC,EAAO5gC,OAAOxtC,YACHqD,IAA1B+qE,EAAOC,iBACTF,GAAe,GAGnB,MAAMG,EAAU,GAAc,EAATP,EAAsB,EAATC,EAAqB,EAARC,GAAa1D,EAAO,GAAK,IAAMzpB,EAAa,EAAI,GAAKqtB,EAC9F5lE,EAAS,IAAIC,YAAY8lE,GACzBC,EAAW,IAAI//D,SAASjG,GACxBimE,EAAS,IAAI/zC,WAAWlyB,GAC9BgmE,EAAS3C,SAAS6B,IAAY,GAAOvlE,GACrCqmE,EAAS3C,SAAS6B,IAAY,GAAWlD,EAAO,EAAI,GACpDgE,EAAS3C,SAAS6B,IAAY,GAAiB3sB,EAAa,EAAI,GAChEytB,EAAS3C,SAAS6B,IAAY,GAAeK,GAC7CS,EAASlD,UAAUoC,IAAY,GAAUM,GAAQ,GACjDQ,EAASlD,UAAUoC,IAAY,GAAUO,GAAQ,GACjDO,EAASlD,UAAUoC,IAAY,GAASQ,GAAO,GAC/CM,EAASlD,UAAUoC,IAAY,GAAYS,GAAU,GACrD,IAAIrG,EAAS,GACb,MAAM4G,EAAa,IAAI78B,aAAarpC,EAAQs/D,EAAiB,EAATkG,GACpDU,EAAW3nE,IAAI6mE,GACf9F,GAAmB,EAATkG,EACVS,EAAO1nE,IAAI0mC,EAAQq6B,GACnBA,GAAmB,EAATmG,EACV,IAAK,MAAO3wC,EAAKqxC,KAAQd,EACvBW,EAASI,WAAW9G,EAAQxqC,GAAK,GACjCwqC,GAAU,EACV0G,EAASlD,UAAUxD,EAAQp7B,SAASiiC,EAAIrsE,MAAM,GAAI,KAAK,GACvDwlE,GAAU,EAEZ,GAAI0C,EACF,IAAK,MAAM7lE,KAAK6lE,EACdgE,EAASI,WAAW9G,EAAQnjE,GAAG,GAC/BmjE,GAAU,EAGV/mB,IACF0tB,EAAO1nE,IAAIg6C,EAAY+mB,GACvBA,GAAU,GAEZ,IAAK,IAAI1/D,EAAI,EAAGA,EAAI0lE,EAAQ7tE,OAAQmI,IAAK,CACvC,MAAMimE,EAASP,EAAQ1lE,GACvBomE,EAAS3C,SAAS/D,EAAQuG,EAAOzmE,MACjCkgE,GAAU,EACVA,EAAiC,EAAxBjiE,KAAKD,KAAKkiE,EAAS,GAC5B0G,EAASlD,UAAUxD,EAAQuG,EAAOT,OAAO3tE,QAAQ,GACjD6nE,GAAU,EACV,MAAM+G,EAAmB,IAAIC,WAAWtmE,EAAQs/D,EAAQuG,EAAOT,OAAO3tE,QACtE4uE,EAAiB9nE,IAAIsnE,EAAOT,QAC5B9F,GAAiC,EAAvBuG,EAAOT,OAAO3tE,OACxBuuE,EAASlD,UAAUxD,EAAQuG,EAAO5gC,OAAOxtC,QAAQ,GACjD6nE,GAAU,EACV,MAAMiH,EAAa,IAAID,WAAWtmE,EAAQs/D,EAAQuG,EAAO5gC,OAAOxtC,QAChE8uE,EAAWhoE,IAAIsnE,EAAO5gC,QACtBq6B,GAAiC,EAAvBuG,EAAO5gC,OAAOxtC,YACMqD,IAA1B+qE,EAAOC,iBACTE,EAASlD,UAAUxD,EAAQuG,EAAOC,gBAAgB,GAClDxG,GAAU,EAEd,CACA,OAAOt/D,CACT,CACA,KAAAwmE,GACE,MAAMR,EAAWrvE,KAAKksE,KAChBljE,EAAOhJ,KAAK4O,KAAK2/D,IAAY,IAC7BuB,IAAY9vE,KAAK4O,KAAK2/D,IAAY,IAClCwB,IAAkB/vE,KAAK4O,KAAK2/D,IAAY,IACxCM,EAASQ,EAAShD,UAAUkC,IAAY,IAAU,GAClDO,EAASO,EAAShD,UAAUkC,IAAY,IAAU,GAClDQ,EAAQM,EAAShD,UAAUkC,IAAY,IAAS,GAChDS,EAAWK,EAAShD,UAAUkC,IAAY,IAAY,GAC5D,IAAI5F,EAAS,GACb,MAAM8F,EAAS,IAAI/7B,aAAa1yC,KAAKqJ,OAAQs/D,EAAiB,EAATkG,GACrDlG,GAAmB,EAATkG,EACV,MAAMvgC,EAAS,IAAI/S,WAAWv7B,KAAKqJ,OAAQs/D,EAAiB,EAATmG,GACnDnG,GAAmB,EAATmG,EACV,MAAMkB,EAAQ,GACd,IAAK,IAAI/mE,EAAI,EAAGA,EAAI8lE,IAAS9lE,EAAG,CAC9B,MAAMiT,EAAImzD,EAASY,WAAWtH,GAAQ,GACtCA,GAAU,EACV,MAAMl3B,EAAM49B,EAAShD,UAAU1D,GAAQ,GACvCA,GAAU,EACVqH,EAAM/lE,KAAK,CAACiS,EAAG,IAAIu1B,EAAIltC,SAAS,IAAI44B,SAAS,EAAG,QAClD,CACA,IAAIkuC,EAAO,KACX,GAAIyE,EAAS,CACXzE,EAAO,GACP,IAAK,IAAIpiE,EAAI,EAAGA,EAAI,IAAKA,EACvBoiE,EAAKphE,KAAKolE,EAASY,WAAWtH,GAAQ,IACtCA,GAAU,CAEd,CACA,IAAI/mB,EAAa,KACbmuB,IACFnuB,EAAa,IAAIrmB,WAAWv7B,KAAKqJ,OAAQs/D,EAAQ,GACjDA,GAAU,GAEZ,MAAMgG,EAAU,GAChB,IAAK,IAAI1lE,EAAI,EAAGA,EAAI+lE,IAAY/lE,EAAG,CACjC,MAAMR,EAAO4mE,EAASzC,SAASjE,GAC/BA,GAAU,EACVA,EAAiC,EAAxBjiE,KAAKD,KAAKkiE,EAAS,GAC5B,MAAMuH,EAAeb,EAAShD,UAAU1D,GAAQ,GAChDA,GAAU,EACV,MAAMwH,EAAe,IAAIR,WAAW3vE,KAAKqJ,OAAQs/D,EAAQuH,GACzDvH,GAAyB,EAAfuH,EACV,MAAME,EAAef,EAAShD,UAAU1D,GAAQ,GAChDA,GAAU,EACV,MAAM0H,EAAe,IAAIV,WAAW3vE,KAAKqJ,OAAQs/D,EAAQyH,GACzDzH,GAAyB,EAAfyH,EACV,MAAMlB,EAAS,CACbzmE,OACAgmE,OAAQ0B,EACR7hC,OAAQ+hC,GAEN5nE,IAASomB,EAAeE,UAC1BmgD,EAAOC,eAAiBE,EAAShD,UAAU1D,GAAQ,GACnDA,GAAU,GAEZgG,EAAQ1kE,KAAKilE,EACf,CACA,GAAa,IAATlmE,EACF,MAAO,CAAC,cAAe,QAASqiE,EAAM2E,EAAOz/D,MAAM2sB,KAAKuxC,EAAOtrE,MAAM,EAAG,IAAKoN,MAAM2sB,KAAKuxC,EAAOtrE,MAAM,EAAG,IAAK,KAAM,MAErH,GAAa,IAAT6F,EACF,MAAO,CAAC,cAAe,SAAUqiE,EAAM2E,EAAO,CAACvB,EAAO,GAAIA,EAAO,IAAK,CAACA,EAAO,GAAIA,EAAO,IAAKA,EAAO,GAAIA,EAAO,IAElH,GAAa,IAATzlE,EAAY,CACd,MAAM4lE,EAAc5uE,KAAK4O,KAAK2/D,IAAY,IAC1C,IAAI+B,EAAS,KACb,GAAI7B,EAAO3tE,OAAS,EAAG,CACrB,IAAIyvE,EAAO9B,EAAO,GAChB+B,EAAO/B,EAAO,GACZgC,EAAOhC,EAAO,GAChBiC,EAAOjC,EAAO,GAChB,IAAK,IAAIxlE,EAAI,EAAGA,EAAIwlE,EAAO3tE,OAAQmI,GAAK,EAAG,CACzC,MAAMpC,EAAI4nE,EAAOxlE,GACfuV,EAAIiwD,EAAOxlE,EAAI,GACjBsnE,EAAOA,EAAO1pE,EAAIA,EAAI0pE,EACtBE,EAAOA,EAAOjyD,EAAIA,EAAIiyD,EACtBD,EAAOA,EAAO3pE,EAAIA,EAAI2pE,EACtBE,EAAOA,EAAOlyD,EAAIA,EAAIkyD,CACxB,CACAJ,EAAS,CAACC,EAAME,EAAMD,EAAME,EAC9B,CACA,MAAO,CAAC,OAAQ9B,EAAaH,EAAQngC,EAAQqgC,EAAS2B,EAAQjF,EAAMzpB,EACtE,CACA,MAAM,IAAInpB,MAAM,6BAA6BzvB,IAC/C,EAEF,MAAM2nE,GACJ,YAAOplE,CAAMmoC,GACX,IAAI9kC,EACAvF,EASJ,OARI0yB,GAAiBK,yBACnB/yB,EAAS,IAAIC,YAA0B,EAAdoqC,EAAK5yC,QAC9B8N,EAAO,IAAIytB,aAAahzB,KAExBA,EAAS,IAAIC,YAA0B,EAAdoqC,EAAK5yC,QAC9B8N,EAAO,IAAI8jC,aAAarpC,IAE1BuF,EAAKhH,IAAI8rC,GACFrqC,CACT,CACA,IACA,WAAArF,CAAYqF,GACVrJ,MAAK,GAAUqJ,CACjB,CACA,QAAIqqC,GACF,OAAI3X,GAAiBK,wBACZ,IAAIC,aAAar8B,MAAK,IAExB,IAAI0yC,aAAa1yC,MAAK,GAC/B,EAKF,SAAS4wE,GAAW9/D,GAClB,GAAIA,aAAeyoB,IACjB,OAAOzoB,EAAI+oB,KAEb,GAAmB,kBAAR/oB,EAAkB,CAC3B,GAAI2a,EACF,OAAO3a,EAET,MAAM+nB,EAAMU,IAAIC,MAAM1oB,EAAKD,OAAOggE,UAClC,GAAIh4C,EACF,OAAOA,EAAIgB,IAEf,CACA,MAAM,IAAIpB,MAAM,qFAClB,CACA,SAASq4C,GAAYhgE,GACnB,GAAI2a,GAA8B,qBAAXslD,QAA0BjgE,aAAeigE,OAC9D,MAAM,IAAIt4C,MAAM,qEAElB,GAAI3nB,aAAeyqB,YAAczqB,EAAIrH,aAAeqH,EAAIzH,OAAOI,WAC7D,OAAOqH,EAET,GAAmB,kBAARA,EACT,OAAOuqB,GAAcvqB,GAEvB,GAAIA,aAAexH,aAAeA,YAAYi6D,OAAOzyD,IAAuB,kBAARA,IAAqBkgE,MAAMlgE,GAAKhQ,QAClG,OAAO,IAAIy6B,WAAWzqB,GAExB,MAAM,IAAI2nB,MAAM,6GAClB,CACA,SAASw4C,GAAkBngE,GACzB,GAAmB,kBAARA,EACT,OAAO,KAET,GAAIA,EAAIoxC,SAAS,KACf,OAAOpxC,EAET,MAAM,IAAI2nB,MAAM,yBAAyB3nB,kCAC3C,CACA,MAAMogE,GAAa1rE,GAAkB,kBAANA,GAAkBic,OAAOyW,UAAU1yB,GAAG2rE,MAAQ3rE,EAAE2rE,KAAO,GAAK1vD,OAAOyW,UAAU1yB,GAAG4rE,MAAQ5rE,EAAE4rE,KAAO,EAC1HC,GAAc7rE,GAAkB,kBAANA,GAAqC,kBAAZA,GAAG9B,KACtD4tE,GAAsBvuC,GAAqB58B,KAAK,KAAM+qE,GAAYG,IACxE,MAAME,GACJ,IAAa,IAAIjsE,IACjB,IAAYic,QAAQ0iB,UACpB,WAAAryB,CAAY9H,EAAKN,GACf,MAAMyf,EAAQ,CACZra,KAAMxF,gBAAgBU,EAAKN,EAAW,CACpCA,YACE,OAENxJ,MAAK,GAAU05C,KAAK,KAClB,IAAK,MAAO83B,KAAaxxE,MAAK,GAC5BwxE,EAASrxE,KAAKH,KAAMipB,IAG1B,CACA,gBAAAH,CAAiBplB,EAAM8tE,EAAU7tE,EAAU,MACzC,IAAI8tE,EAAU,KACd,GAAI9tE,GAAS2wC,kBAAkBG,YAAa,CAC1C,MAAM,OACJH,GACE3wC,EACJ,GAAI2wC,EAAOI,QAET,YADAnc,EAAK,kDAGP,MAAMm5C,EAAU,IAAM1xE,KAAK+oB,oBAAoBrlB,EAAM8tE,GACrDC,EAAU,IAAMn9B,EAAOvrB,oBAAoB,QAAS2oD,GACpDp9B,EAAOxrB,iBAAiB,QAAS4oD,EACnC,CACA1xE,MAAK,GAAW4H,IAAI4pE,EAAUC,EAChC,CACA,mBAAA1oD,CAAoBrlB,EAAM8tE,GACxB,MAAMC,EAAUzxE,MAAK,GAAW6C,IAAI2uE,GACpCC,MACAzxE,MAAK,GAAWw1C,OAAOg8B,EACzB,CACA,SAAAG,GACE,IAAK,MAAO,CAAEF,KAAYzxE,MAAK,GAC7ByxE,MAEFzxE,MAAK,GAAWkhD,OAClB,EAKF,MAAM0wB,GAAe,CACnBC,KAAM,EACNC,MAAO,GAEHC,GAAa,CACjBC,OAAQ,EACRC,gBAAiB,EACjBC,MAAO,EACPC,QAAS,EACTL,MAAO,EACPM,KAAM,EACNC,cAAe,EACfC,eAAgB,GAElB,SAASC,KAAQ,CACjB,SAASC,GAAWhqB,GAClB,GAAIA,aAAc5tB,IAAkB4tB,aAAcjuB,IAAuBiuB,aAActuB,GAAqBsuB,aAAchuB,IAAqBguB,aAAcnuB,EAC3J,OAAOmuB,EAKT,OAHMA,aAAc/vB,OAAuB,kBAAP+vB,GAA0B,OAAPA,GACrDhwB,EAAY,kEAENgwB,EAAG9kD,MACT,IAAK,iBACH,OAAO,IAAIk3B,GAAe4tB,EAAGvuB,SAC/B,IAAK,sBACH,OAAO,IAAIM,GAAoBiuB,EAAGvuB,SACpC,IAAK,oBACH,OAAO,IAAIC,EAAkBsuB,EAAGvuB,QAASuuB,EAAGruB,MAC9C,IAAK,oBACH,OAAO,IAAIK,GAAkBguB,EAAGvuB,QAASuuB,EAAG/tB,OAAQ+tB,EAAG9tB,SACzD,IAAK,wBACH,OAAO,IAAIL,EAAsBmuB,EAAGvuB,QAASuuB,EAAGluB,SAEpD,OAAO,IAAID,EAAsBmuB,EAAGvuB,QAASuuB,EAAGjkD,WAClD,CACA,MAAMkuE,GACJ,IAAa,IAAI90B,gBACjB,WAAA35C,CAAY0uE,EAAYC,EAAYC,GAClC5yE,KAAK0yE,WAAaA,EAClB1yE,KAAK2yE,WAAaA,EAClB3yE,KAAK4yE,OAASA,EACd5yE,KAAK6yE,WAAa,EAClB7yE,KAAK8yE,SAAW,EAChB9yE,KAAK+yE,YAAc9vE,OAAOwJ,OAAO,MACjCzM,KAAKgzE,kBAAoB/vE,OAAOwJ,OAAO,MACvCzM,KAAKizE,qBAAuBhwE,OAAOwJ,OAAO,MAC1CzM,KAAKkzE,cAAgBjwE,OAAOwJ,OAAO,MACnCmmE,EAAO9pD,iBAAiB,UAAW9oB,MAAK,GAAWmG,KAAKnG,MAAO,CAC7Ds0C,OAAQt0C,MAAK,GAAWs0C,QAE5B,CACA,KAAW,KACT1lC,IAEA,GAAIA,EAAK+jE,aAAe3yE,KAAK0yE,WAC3B,OAEF,GAAI9jE,EAAKukE,OAEP,YADAnzE,MAAK,GAAsB4O,GAG7B,GAAIA,EAAK+tC,SAAU,CACjB,MAAMk2B,EAAajkE,EAAKikE,WAClBO,EAAapzE,KAAKizE,qBAAqBJ,GAC7C,IAAKO,EACH,MAAM,IAAI36C,MAAM,2BAA2Bo6C,KAG7C,UADO7yE,KAAKizE,qBAAqBJ,GAC7BjkE,EAAK+tC,WAAai1B,GAAaC,KACjCuB,EAAWnvC,QAAQr1B,EAAKA,UACnB,IAAIA,EAAK+tC,WAAai1B,GAAaE,MAGxC,MAAM,IAAIr5C,MAAM,4BAFhB26C,EAAW1qC,OAAO8pC,GAAW5jE,EAAKykE,QAGpC,CACA,MACF,CACA,MAAMjoB,EAASprD,KAAKkzE,cAActkE,EAAKw8C,QACvC,IAAKA,EACH,MAAM,IAAI3yB,MAAM,+BAA+B7pB,EAAKw8C,UAEtD,GAAIx8C,EAAKikE,WAAY,CACnB,MAAMH,EAAa1yE,KAAK0yE,WACtBC,EAAa/jE,EAAK8jE,WAClBE,EAAS5yE,KAAK4yE,OAkBhB,YAjBArxD,QAAQyiB,IAAIonB,EAAQx8C,EAAKA,MAAM8qC,KAAK,SAAUx3C,GAC5C0wE,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAh2B,SAAUi1B,GAAaC,KACvBgB,WAAYjkE,EAAKikE,WACjBjkE,KAAM1M,GAEV,EAAG,SAAUmxE,GACXT,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAh2B,SAAUi1B,GAAaE,MACvBe,WAAYjkE,EAAKikE,WACjBQ,OAAQb,GAAWa,IAEvB,EAEF,CACIzkE,EAAKkkE,SACP9yE,MAAK,GAAkB4O,GAGzBw8C,EAAOx8C,EAAKA,KACd,CACA,EAAAsO,CAAGo2D,EAAYC,GACb,MAAMC,EAAKxzE,KAAKkzE,cAChB,GAAIM,EAAGF,GACL,MAAM,IAAI76C,MAAM,0CAA0C66C,MAE5DE,EAAGF,GAAcC,CACnB,CACA,IAAArqC,CAAKoqC,EAAY1kE,EAAM6kE,GACrBzzE,KAAK4yE,OAAOhhE,YAAY,CACtB8gE,WAAY1yE,KAAK0yE,WACjBC,WAAY3yE,KAAK2yE,WACjBvnB,OAAQkoB,EACR1kE,QACC6kE,EACL,CACA,eAAAC,CAAgBJ,EAAY1kE,EAAM6kE,GAChC,MAAMZ,EAAa7yE,KAAK6yE,aAClBO,EAAa7xD,QAAQwiC,gBAC3B/jD,KAAKizE,qBAAqBJ,GAAcO,EACxC,IACEpzE,KAAK4yE,OAAOhhE,YAAY,CACtB8gE,WAAY1yE,KAAK0yE,WACjBC,WAAY3yE,KAAK2yE,WACjBvnB,OAAQkoB,EACRT,aACAjkE,QACC6kE,EACL,CAAE,MAAOjrB,GACP4qB,EAAW1qC,OAAO8f,EACpB,CACA,OAAO4qB,EAAWjwD,OACpB,CACA,cAAAwwD,CAAeL,EAAY1kE,EAAMglE,EAAkBH,GACjD,MAAMX,EAAW9yE,KAAK8yE,WACpBJ,EAAa1yE,KAAK0yE,WAClBC,EAAa3yE,KAAK2yE,WAClBC,EAAS5yE,KAAK4yE,OAChB,OAAO,IAAIiB,eAAe,CACxBpnC,MAAOqnC,IACL,MAAMC,EAAkBxyD,QAAQwiC,gBAgBhC,OAfA/jD,KAAKgzE,kBAAkBF,GAAY,CACjCgB,aACAE,UAAWD,EACXE,SAAU,KACVC,WAAY,KACZC,UAAU,GAEZvB,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAvnB,OAAQkoB,EACRR,WACAlkE,OACAwlE,YAAaN,EAAWM,aACvBX,GACIM,EAAgB5wD,SAEzBkxD,KAAMP,IACJ,MAAMQ,EAAiB/yD,QAAQwiC,gBAS/B,OARA/jD,KAAKgzE,kBAAkBF,GAAUmB,SAAWK,EAC5C1B,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWK,KACnBU,WACAsB,YAAaN,EAAWM,cAEnBE,EAAenxD,SAExBhB,OAAQkxD,IACN36C,EAAO26C,aAAkB56C,MAAO,mCAChC,MAAM87C,EAAmBhzD,QAAQwiC,gBAUjC,OATA/jD,KAAKgzE,kBAAkBF,GAAUoB,WAAaK,EAC9Cv0E,KAAKgzE,kBAAkBF,GAAUqB,UAAW,EAC5CvB,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWC,OACnBc,WACAO,OAAQb,GAAWa,KAEdkB,EAAiBpxD,UAEzBywD,EACL,CACA,IAAkBhlE,GAChB,MAAMkkE,EAAWlkE,EAAKkkE,SACpBJ,EAAa1yE,KAAK0yE,WAClBC,EAAa/jE,EAAK8jE,WAClBE,EAAS5yE,KAAK4yE,OACV7yE,EAAOC,KACXorD,EAASprD,KAAKkzE,cAActkE,EAAKw8C,QAC7BopB,EAAa,CACjB,OAAAC,CAAQt5C,EAAO0Q,EAAO,EAAG4nC,GACvB,GAAIzzE,KAAK00E,YACP,OAEF,MAAMC,EAAkB30E,KAAKo0E,YAC7Bp0E,KAAKo0E,aAAevoC,EAChB8oC,EAAkB,GAAK30E,KAAKo0E,aAAe,IAC7Cp0E,KAAK40E,eAAiBrzD,QAAQwiC,gBAC9B/jD,KAAK60E,MAAQ70E,KAAK40E,eAAezxD,SAEnCyvD,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWI,QACnBW,WACA33C,SACCs4C,EACL,EACA,KAAAjoE,GACMxL,KAAK00E,cAGT10E,KAAK00E,aAAc,EACnB9B,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWG,MACnBY,oBAEK/yE,EAAKgzE,YAAYD,GAC1B,EACA,KAAAnxE,CAAM0xE,GACJ36C,EAAO26C,aAAkB56C,MAAO,kCAC5Bz4B,KAAK00E,cAGT10E,KAAK00E,aAAc,EACnB9B,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWD,MACnBgB,WACAO,OAAQb,GAAWa,KAEvB,EACAuB,eAAgBrzD,QAAQwiC,gBACxB+wB,OAAQ,KACRC,SAAU,KACVL,aAAa,EACbN,YAAaxlE,EAAKwlE,YAClBS,MAAO,MAETL,EAAWI,eAAe3wC,UAC1BuwC,EAAWK,MAAQL,EAAWI,eAAezxD,QAC7CnjB,KAAK+yE,YAAYD,GAAY0B,EAC7BjzD,QAAQyiB,IAAIonB,EAAQx8C,EAAKA,KAAM4lE,GAAY96B,KAAK,WAC9Ck5B,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWO,eACnBQ,WACAkC,SAAS,GAEb,EAAG,SAAU3B,GACXT,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWO,eACnBQ,WACAO,OAAQb,GAAWa,IAEvB,EACF,CACA,IAAsBzkE,GACpB,MAAMkkE,EAAWlkE,EAAKkkE,SACpBJ,EAAa1yE,KAAK0yE,WAClBC,EAAa/jE,EAAK8jE,WAClBE,EAAS5yE,KAAK4yE,OACVqC,EAAmBj1E,KAAKgzE,kBAAkBF,GAC9C0B,EAAax0E,KAAK+yE,YAAYD,GAChC,OAAQlkE,EAAKukE,QACX,KAAKpB,GAAWO,eACV1jE,EAAKomE,QACPC,EAAiBjB,UAAU/vC,UAE3BgxC,EAAiBjB,UAAUtrC,OAAO8pC,GAAW5jE,EAAKykE,SAEpD,MACF,KAAKtB,GAAWM,cACVzjE,EAAKomE,QACPC,EAAiBhB,SAAShwC,UAE1BgxC,EAAiBhB,SAASvrC,OAAO8pC,GAAW5jE,EAAKykE,SAEnD,MACF,KAAKtB,GAAWK,KACd,IAAKoC,EAAY,CACf5B,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWM,cACnBS,WACAkC,SAAS,IAEX,KACF,CACIR,EAAWJ,aAAe,GAAKxlE,EAAKwlE,YAAc,GACpDI,EAAWI,eAAe3wC,UAE5BuwC,EAAWJ,YAAcxlE,EAAKwlE,YAC9B7yD,QAAQyiB,IAAIwwC,EAAWM,QAAUvC,IAAM74B,KAAK,WAC1Ck5B,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWM,cACnBS,WACAkC,SAAS,GAEb,EAAG,SAAU3B,GACXT,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWM,cACnBS,WACAO,OAAQb,GAAWa,IAEvB,GACA,MACF,KAAKtB,GAAWI,QAEd,GADAz5C,EAAOu8C,EAAkB,yCACrBA,EAAiBd,SACnB,MAEFc,EAAiBnB,WAAWW,QAAQ7lE,EAAKusB,OACzC,MACF,KAAK42C,GAAWG,MAEd,GADAx5C,EAAOu8C,EAAkB,uCACrBA,EAAiBd,SACnB,MAEFc,EAAiBd,UAAW,EAC5Bc,EAAiBnB,WAAWtoE,QAC5BxL,MAAK,GAAwBi1E,EAAkBnC,GAC/C,MACF,KAAKf,GAAWD,MACdp5C,EAAOu8C,EAAkB,uCACzBA,EAAiBnB,WAAWnyE,MAAM6wE,GAAW5jE,EAAKykE,SAClDrzE,MAAK,GAAwBi1E,EAAkBnC,GAC/C,MACF,KAAKf,GAAWE,gBACVrjE,EAAKomE,QACPC,EAAiBf,WAAWjwC,UAE5BgxC,EAAiBf,WAAWxrC,OAAO8pC,GAAW5jE,EAAKykE,SAErDrzE,MAAK,GAAwBi1E,EAAkBnC,GAC/C,MACF,KAAKf,GAAWC,OACd,IAAKwC,EACH,MAEF,MAAMU,EAAa1C,GAAW5jE,EAAKykE,QACnC9xD,QAAQyiB,IAAIwwC,EAAWO,UAAYxC,GAAM2C,GAAYx7B,KAAK,WACxDk5B,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWE,gBACnBa,WACAkC,SAAS,GAEb,EAAG,SAAU3B,GACXT,EAAOhhE,YAAY,CACjB8gE,aACAC,aACAQ,OAAQpB,GAAWE,gBACnBa,WACAO,OAAQb,GAAWa,IAEvB,GACAmB,EAAWI,eAAelsC,OAAOwsC,GACjCV,EAAWE,aAAc,SAClB10E,KAAK+yE,YAAYD,GACxB,MACF,QACE,MAAM,IAAIr6C,MAAM,0BAEtB,CACA,QAAM,CAAwBw8C,EAAkBnC,SACxCvxD,QAAQ4zD,WAAW,CAACF,EAAiBjB,WAAW7wD,QAAS8xD,EAAiBhB,UAAU9wD,QAAS8xD,EAAiBf,YAAY/wD,iBACzHnjB,KAAKgzE,kBAAkBF,EAChC,CACA,OAAA77B,GACEj3C,MAAK,IAAYghD,QACjBhhD,MAAK,GAAa,IACpB,EAKF,MAAMo1E,GACJ,KAAa,EACb,WAAApxE,EAAY,UACVqxE,GAAY,IAEZr1E,MAAK,GAAaq1E,CACpB,CACA,MAAA5oE,CAAOgQ,EAAOC,GACZ,GAAID,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAI+b,MAAM,uBAElB,MAAMhW,EAASziB,KAAKs1E,cAAc74D,EAAOC,GACzC,MAAO,CACL+F,SACAK,QAASL,EAAOM,WAAW,KAAM,CAC/Bw2B,oBAAqBv5C,MAAK,KAGhC,CACA,KAAAu1E,CAAMC,EAAkB/4D,EAAOC,GAC7B,IAAK84D,EAAiB/yD,OACpB,MAAM,IAAIgW,MAAM,2BAElB,GAAIhc,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAI+b,MAAM,uBAElB+8C,EAAiB/yD,OAAOhG,MAAQA,EAChC+4D,EAAiB/yD,OAAO/F,OAASA,CACnC,CACA,OAAAu6B,CAAQu+B,GACN,IAAKA,EAAiB/yD,OACpB,MAAM,IAAIgW,MAAM,2BAElB+8C,EAAiB/yD,OAAOhG,MAAQ,EAChC+4D,EAAiB/yD,OAAO/F,OAAS,EACjC84D,EAAiB/yD,OAAS,KAC1B+yD,EAAiB1yD,QAAU,IAC7B,CACA,aAAAwyD,CAAc74D,EAAOC,GACnB8b,EAAY,0CACd,EAEF,MAAMi9C,WAAyBL,GAC7B,WAAApxE,EAAY,cACV+hE,EAAgBh+D,WAAWqE,SAAQ,UACnCipE,GAAY,IAEZj7C,MAAM,CACJi7C,cAEFr1E,KAAKimE,UAAYF,CACnB,CACA,aAAAuP,CAAc74D,EAAOC,GACnB,MAAM+F,EAASziB,KAAKimE,UAAUn2D,cAAc,UAG5C,OAFA2S,EAAOhG,MAAQA,EACfgG,EAAO/F,OAASA,EACT+F,CACT,EAMF,MAAMizD,GACJ,WAAA1xE,EAAY,QACVg1B,EAAU,KAAI,aACd28C,GAAe,IAEf31E,KAAKg5B,QAAUA,EACfh5B,KAAK21E,aAAeA,CACtB,CACA,WAAMvtC,EAAM,KACV1kC,IAEA,IAAK1D,KAAKg5B,QACR,MAAM,IAAIP,MAAM,2EAElB,IAAK/0B,EACH,MAAM,IAAI+0B,MAAM,gCAElB,MAAMI,EAAM74B,KAAKg5B,QAAUt1B,GAAQ1D,KAAK21E,aAAe,SAAW,IAClE,OAAO31E,KAAK41E,OAAO/8C,GAAK6gB,KAAKm8B,IAAY,CACvCA,WACAF,aAAc31E,KAAK21E,gBACjBG,MAAMzC,IACR,MAAM,IAAI56C,MAAM,kBAAkBz4B,KAAK21E,aAAe,UAAY,cAAc98C,MAEpF,CACA,YAAM+8C,CAAO/8C,GACXL,EAAY,mCACd,EAEF,MAAMu9C,WAA6BL,GACjC,YAAME,CAAO/8C,GACX,MAAMjqB,QAAao5B,GAAUnP,EAAK74B,KAAK21E,aAAe,cAAgB,QACtE,OAAO/mE,aAAgBtF,YAAc,IAAIiyB,WAAW3sB,GAAQysB,GAAczsB,EAC5E,EAMF,MAAMonE,GACJ,SAAAC,CAAUC,GACR,MAAO,MACT,CACA,YAAAx0B,CAAay0B,EAASC,GACpB,MAAO,MACT,CACA,cAAAC,CAAexsE,GACb,MAAO,MACT,CACA,mBAAAysE,CAAoBzsE,GAClB,MAAO,MACT,CACA,qBAAA0sE,CAAsBC,EAAYL,EAASC,EAASK,EAAYC,GAC9D,MAAO,MACT,CACA,OAAAz/B,CAAQ0/B,GAAU,GAAQ,EAE5B,MAAMC,WAAyBZ,GAC7B,IACA,IACA,IACA,IACA,IACA,IACA,GAAM,EACN,WAAAhyE,EAAY,MACV6yE,EAAK,cACL9Q,EAAgBh+D,WAAWqE,WAE3BguB,QACAp6B,MAAK,GAAS62E,EACd72E,MAAK,GAAY+lE,CACnB,CACA,KAAI,GACF,OAAO/lE,MAAK,KAAY,IAAIsF,GAC9B,CACA,MAAI,GACF,OAAOtF,MAAK,KAAe,IAAIsF,GACjC,CACA,MAAI,GACF,IAAKtF,MAAK,GAAQ,CAChB,MAAM8mC,EAAM9mC,MAAK,GAAU8P,cAAc,QACnC,MACJ/D,GACE+6B,EACJ/6B,EAAMyiC,WAAa,SACnBziC,EAAM+qE,QAAU,SAChB/qE,EAAM0Q,MAAQ1Q,EAAM2Q,OAAS,EAC7B3Q,EAAMoV,SAAW,WACjBpV,EAAMwS,IAAMxS,EAAMqS,KAAO,EACzBrS,EAAM4sD,QAAU,EAChB,MAAMrf,EAAMt5C,MAAK,GAAUunC,gBAAgBI,GAAQ,OACnD2R,EAAI7T,aAAa,QAAS,GAC1B6T,EAAI7T,aAAa,SAAU,GAC3BzlC,MAAK,GAASA,MAAK,GAAUunC,gBAAgBI,GAAQ,QACrDb,EAAIC,OAAOuS,GACXA,EAAIvS,OAAO/mC,MAAK,IAChBA,MAAK,GAAU0uC,KAAK3H,OAAOD,EAC7B,CACA,OAAO9mC,MAAK,EACd,CACA,IAAck2E,GACZ,GAAoB,IAAhBA,EAAKp1E,OAAc,CACrB,MAAMi2E,EAAOb,EAAK,GACZ7sE,EAAS,IAAIkH,MAAM,KACzB,IAAK,IAAItH,EAAI,EAAGA,EAAI,IAAKA,IACvBI,EAAOJ,GAAK8tE,EAAK9tE,GAAK,IAExB,MAAM+tE,EAAQ3tE,EAAOhG,KAAK,KAC1B,MAAO,CAAC2zE,EAAOA,EAAOA,EACxB,CACA,MAAOD,EAAME,EAAMC,GAAQhB,EACrBiB,EAAU,IAAI5mE,MAAM,KACpB6mE,EAAU,IAAI7mE,MAAM,KACpB8mE,EAAU,IAAI9mE,MAAM,KAC1B,IAAK,IAAItH,EAAI,EAAGA,EAAI,IAAKA,IACvBkuE,EAAQluE,GAAK8tE,EAAK9tE,GAAK,IACvBmuE,EAAQnuE,GAAKguE,EAAKhuE,GAAK,IACvBouE,EAAQpuE,GAAKiuE,EAAKjuE,GAAK,IAEzB,MAAO,CAACkuE,EAAQ9zE,KAAK,KAAM+zE,EAAQ/zE,KAAK,KAAMg0E,EAAQh0E,KAAK,KAC7D,CACA,IAAWkM,GACT,QAAsBpL,IAAlBnE,MAAK,GAAwB,CAC/BA,MAAK,GAAW,GAChB,MAAM64B,EAAM74B,MAAK,GAAUu5B,IACvBV,IAAQ74B,MAAK,GAAUkoC,UACrByC,GAAa9R,GACfN,EAAK,2DAELv4B,MAAK,GAAWy5B,EAAcZ,EAAK,IAGzC,CACA,MAAO,OAAO74B,MAAK,MAAYuP,IACjC,CACA,SAAA0mE,CAAUC,GACR,IAAKA,EACH,MAAO,OAET,IAAIp0E,EAAQ9B,MAAK,EAAO6C,IAAIqzE,GAC5B,GAAIp0E,EACF,OAAOA,EAET,MAAOw1E,EAAQC,EAAQC,GAAUx3E,MAAK,GAAck2E,GAC9C9rE,EAAsB,IAAhB8rE,EAAKp1E,OAAew2E,EAAS,GAAGA,IAASC,IAASC,IAE9D,GADA11E,EAAQ9B,MAAK,EAAO6C,IAAIuH,GACpBtI,EAEF,OADA9B,MAAK,EAAO4H,IAAIsuE,EAAMp0E,GACfA,EAET,MAAMyN,EAAK,KAAKvP,MAAK,mBAAuBA,MAAK,MAC3C64B,EAAM74B,MAAK,GAAWuP,GAC5BvP,MAAK,EAAO4H,IAAIsuE,EAAMr9C,GACtB74B,MAAK,EAAO4H,IAAIwC,EAAKyuB,GACrB,MAAMhsB,EAAS7M,MAAK,GAAcuP,GAElC,OADAvP,MAAK,GAA0Bs3E,EAAQC,EAAQC,EAAQ3qE,GAChDgsB,CACT,CACA,YAAA6oB,CAAay0B,EAASC,GACpB,MAAMhsE,EAAM,GAAG+rE,KAAWC,IACpBI,EAAa,OACnB,IAAIp+C,EAAOp4B,MAAK,GAAU6C,IAAI2zE,GAC9B,GAAIp+C,GAAMhuB,MAAQA,EAChB,OAAOguB,EAAKS,IAed,GAbIT,GACFA,EAAKvrB,QAAQgiC,SACbzW,EAAKhuB,IAAMA,EACXguB,EAAKS,IAAM,OACXT,EAAKvrB,OAAS,OAEdurB,EAAO,CACLhuB,MACAyuB,IAAK,OACLhsB,OAAQ,MAEV7M,MAAK,GAAU4H,IAAI4uE,EAAYp+C,KAE5B+9C,IAAYC,EACf,OAAOh+C,EAAKS,IAEd,MAAM4+C,EAAQz3E,MAAK,GAAQm2E,GAC3BA,EAAU/4C,GAAKC,gBAAgBo6C,GAC/B,MAAMC,EAAQ13E,MAAK,GAAQo2E,GAG3B,GAFAA,EAAUh5C,GAAKC,gBAAgBq6C,GAC/B13E,MAAK,GAAM+L,MAAMoiC,MAAQ,GACT,YAAZgoC,GAAqC,YAAZC,GAAyBD,IAAYC,EAChE,OAAOh+C,EAAKS,IAEd,MAAMhvB,EAAM,IAAI0G,MAAM,KACtB,IAAK,IAAItH,EAAI,EAAGA,GAAK,IAAKA,IAAK,CAC7B,MAAMpC,EAAIoC,EAAI,IACdY,EAAIZ,GAAKpC,GAAK,OAAUA,EAAI,QAAUA,EAAI,MAAS,QAAU,GAC/D,CACA,MAAMmwE,EAAQntE,EAAIxG,KAAK,KACjBkM,EAAK,KAAKvP,MAAK,gBACf6M,EAASurB,EAAKvrB,OAAS7M,MAAK,GAAcuP,GAChDvP,MAAK,GAA0Bg3E,EAAOA,EAAOA,EAAOnqE,GACpD7M,MAAK,GAAmB6M,GACxB,MAAM8qE,EAAW,CAACj6C,EAAG52B,KACnB,MAAM2lC,EAAQgrC,EAAM/5C,GAAK,IACnBgP,EAAMgrC,EAAMh6C,GAAK,IACjBgG,EAAM,IAAInzB,MAAMzJ,EAAI,GAC1B,IAAK,IAAImC,EAAI,EAAGA,GAAKnC,EAAGmC,IACtBy6B,EAAIz6B,GAAKwjC,EAAQxjC,EAAInC,GAAK4lC,EAAMD,GAElC,OAAO/I,EAAIrgC,KAAK,MAIlB,OAFArD,MAAK,GAA0B23E,EAAS,EAAG,GAAIA,EAAS,EAAG,GAAIA,EAAS,EAAG,GAAI9qE,GAC/EurB,EAAKS,IAAM74B,MAAK,GAAWuP,GACpB6oB,EAAKS,GACd,CACA,cAAAw9C,CAAexsE,GACb,IAAI/H,EAAQ9B,MAAK,EAAO6C,IAAIgH,GAC5B,GAAI/H,EACF,OAAOA,EAET,MAAO81E,GAAU53E,MAAK,GAAc,CAAC6J,IAC/BO,EAAM,SAASwtE,IAErB,GADA91E,EAAQ9B,MAAK,EAAO6C,IAAIuH,GACpBtI,EAEF,OADA9B,MAAK,EAAO4H,IAAIiC,EAAK/H,GACdA,EAET,MAAMyN,EAAK,KAAKvP,MAAK,gBAAoBA,MAAK,MACxC64B,EAAM74B,MAAK,GAAWuP,GAC5BvP,MAAK,EAAO4H,IAAIiC,EAAKgvB,GACrB74B,MAAK,EAAO4H,IAAIwC,EAAKyuB,GACrB,MAAMhsB,EAAS7M,MAAK,GAAcuP,GAElC,OADAvP,MAAK,GAA+B43E,EAAQ/qE,GACrCgsB,CACT,CACA,mBAAAy9C,CAAoBzsE,GAClB,IAII+tE,EAAQxtE,EAJRtI,EAAQ9B,MAAK,EAAO6C,IAAIgH,GAAO,cACnC,GAAI/H,EACF,OAAOA,EAUT,GAPI+H,IACD+tE,GAAU53E,MAAK,GAAc,CAAC6J,IAC/BO,EAAM,cAAcwtE,KAEpBxtE,EAAM,aAERtI,EAAQ9B,MAAK,EAAO6C,IAAIuH,GACpBtI,EAEF,OADA9B,MAAK,EAAO4H,IAAIiC,EAAK/H,GACdA,EAET,MAAMyN,EAAK,KAAKvP,MAAK,qBAAyBA,MAAK,MAC7C64B,EAAM74B,MAAK,GAAWuP,GAC5BvP,MAAK,EAAO4H,IAAIiC,EAAKgvB,GACrB74B,MAAK,EAAO4H,IAAIwC,EAAKyuB,GACrB,MAAMhsB,EAAS7M,MAAK,GAAcuP,GAKlC,OAJAvP,MAAK,GAAyB6M,GAC1BhD,GACF7J,MAAK,GAA+B43E,EAAQ/qE,GAEvCgsB,CACT,CACA,qBAAA09C,CAAsBC,EAAYL,EAASC,EAASK,EAAYC,GAC9D,MAAMtsE,EAAM,GAAG+rE,KAAWC,KAAWK,KAAcC,IACnD,IAAIt+C,EAAOp4B,MAAK,GAAU6C,IAAI2zE,GAC9B,GAAIp+C,GAAMhuB,MAAQA,EAChB,OAAOguB,EAAKS,IAed,GAbIT,GACFA,EAAKvrB,QAAQgiC,SACbzW,EAAKhuB,IAAMA,EACXguB,EAAKS,IAAM,OACXT,EAAKvrB,OAAS,OAEdurB,EAAO,CACLhuB,MACAyuB,IAAK,OACLhsB,OAAQ,MAEV7M,MAAK,GAAU4H,IAAI4uE,EAAYp+C,KAE5B+9C,IAAYC,EACf,OAAOh+C,EAAKS,IAEd,MAAO4+C,EAAOC,GAAS,CAACvB,EAASC,GAASvsE,IAAI7J,MAAK,GAAQmG,KAAKnG,OAChE,IAAI63E,EAASnxE,KAAK6qC,MAAM,MAASkmC,EAAM,GAAK,MAASA,EAAM,GAAK,MAASA,EAAM,IAC3EK,EAASpxE,KAAK6qC,MAAM,MAASmmC,EAAM,GAAK,MAASA,EAAM,GAAK,MAASA,EAAM,KAC1EK,EAAUC,GAAY,CAACvB,EAAYC,GAAY7sE,IAAI7J,MAAK,GAAQmG,KAAKnG,OACtE83E,EAASD,KACVA,EAAQC,EAAQC,EAAUC,GAAY,CAACF,EAAQD,EAAQG,EAAUD,IAEpE/3E,MAAK,GAAM+L,MAAMoiC,MAAQ,GACzB,MAAMwpC,EAAW,CAACM,EAAIC,EAAIpxE,KACxB,MAAM48B,EAAM,IAAInzB,MAAM,KAChB/C,GAAQsqE,EAASD,GAAU/wE,EAC3BqxE,EAAWF,EAAK,IAChBG,GAAWF,EAAKD,IAAO,IAAMnxE,GACnC,IAAIuxE,EAAO,EACX,IAAK,IAAIpvE,EAAI,EAAGA,GAAKnC,EAAGmC,IAAK,CAC3B,MAAMqvE,EAAI5xE,KAAK6qC,MAAMsmC,EAAS5uE,EAAIuE,GAC5B1L,EAAQq2E,EAAWlvE,EAAImvE,EAC7B,IAAK,IAAIG,EAAIF,EAAME,GAAKD,EAAGC,IACzB70C,EAAI60C,GAAKz2E,EAEXu2E,EAAOC,EAAI,CACb,CACA,IAAK,IAAIrvE,EAAIovE,EAAMpvE,EAAI,IAAKA,IAC1By6B,EAAIz6B,GAAKy6B,EAAI20C,EAAO,GAEtB,OAAO30C,EAAIrgC,KAAK,MAEZkM,EAAK,KAAKvP,MAAK,UAAcw2E,WAC7B3pE,EAASurB,EAAKvrB,OAAS7M,MAAK,GAAcuP,GAIhD,OAHAvP,MAAK,GAAmB6M,GACxB7M,MAAK,GAA0B23E,EAASI,EAAS,GAAIC,EAAS,GAAI,GAAIL,EAASI,EAAS,GAAIC,EAAS,GAAI,GAAIL,EAASI,EAAS,GAAIC,EAAS,GAAI,GAAInrE,GACpJurB,EAAKS,IAAM74B,MAAK,GAAWuP,GACpB6oB,EAAKS,GACd,CACA,OAAAoe,CAAQ0/B,GAAU,GACZA,GAAW32E,MAAK,IAAY6rC,OAGhC7rC,MAAK,IAAQuxD,WAAWA,WAAW1iB,SACnC7uC,MAAK,GAAS,KACdA,MAAK,IAASkhD,QACdlhD,MAAK,GAAU,KACfA,MAAK,IAAYkhD,QACjBlhD,MAAK,GAAa,KAClBA,MAAK,EAAM,EACb,CACA,IAAyB6M,GACvB,MAAM2rE,EAAgBx4E,MAAK,GAAUunC,gBAAgBI,GAAQ,iBAC7D6wC,EAAc/yC,aAAa,OAAQ,UACnC+yC,EAAc/yC,aAAa,SAAU,mDACrC54B,EAAOk6B,OAAOyxC,EAChB,CACA,IAAmB3rE,GACjB,MAAM2rE,EAAgBx4E,MAAK,GAAUunC,gBAAgBI,GAAQ,iBAC7D6wC,EAAc/yC,aAAa,OAAQ,UACnC+yC,EAAc/yC,aAAa,SAAU,wFACrC54B,EAAOk6B,OAAOyxC,EAChB,CACA,IAAcjpE,GACZ,MAAM1C,EAAS7M,MAAK,GAAUunC,gBAAgBI,GAAQ,UAItD,OAHA96B,EAAO44B,aAAa,8BAA+B,QACnD54B,EAAO44B,aAAa,KAAMl2B,GAC1BvP,MAAK,GAAM+mC,OAAOl6B,GACXA,CACT,CACA,IAAc4rE,EAAqBrjE,EAAM4hE,GACvC,MAAM0B,EAAS14E,MAAK,GAAUunC,gBAAgBI,GAAQvyB,GACtDsjE,EAAOjzC,aAAa,OAAQ,YAC5BizC,EAAOjzC,aAAa,cAAeuxC,GACnCyB,EAAoB1xC,OAAO2xC,EAC7B,CACA,IAA0BC,EAAQC,EAAQC,EAAQhsE,GAChD,MAAM4rE,EAAsBz4E,MAAK,GAAUunC,gBAAgBI,GAAQ,uBACnE96B,EAAOk6B,OAAO0xC,GACdz4E,MAAK,GAAcy4E,EAAqB,UAAWE,GACnD34E,MAAK,GAAcy4E,EAAqB,UAAWG,GACnD54E,MAAK,GAAcy4E,EAAqB,UAAWI,EACrD,CACA,IAA+BC,EAAQjsE,GACrC,MAAM4rE,EAAsBz4E,MAAK,GAAUunC,gBAAgBI,GAAQ,uBACnE96B,EAAOk6B,OAAO0xC,GACdz4E,MAAK,GAAcy4E,EAAqB,UAAWK,EACrD,CACA,IAAQ3qC,GAEN,OADAnuC,MAAK,GAAM+L,MAAMoiC,MAAQA,EAClBD,GAAOU,iBAAiB5uC,MAAK,IAAOm4D,iBAAiB,SAC9D,EAMF,MAAM4gB,GACJ,WAAA/0E,EAAY,QACVg1B,EAAU,OAEVh5B,KAAKg5B,QAAUA,CACjB,CACA,WAAMoP,EAAM,SACV4C,IAEA,IAAKhrC,KAAKg5B,QACR,MAAM,IAAIP,MAAM,oEAElB,IAAKuS,EACH,MAAM,IAAIvS,MAAM,oCAElB,MAAMI,EAAM,GAAG74B,KAAKg5B,UAAUgS,IAC9B,OAAOhrC,KAAK41E,OAAO/8C,GAAKi9C,MAAMzC,IAC5B,MAAM,IAAI56C,MAAM,gCAAgCI,MAEpD,CACA,YAAM+8C,CAAO/8C,GACXL,EAAY,mCACd,EAEF,MAAMwgD,WAAmCD,GACvC,YAAMnD,CAAO/8C,GACX,MAAMjqB,QAAao5B,GAAUnP,EAAK,eAClC,OAAO,IAAI0C,WAAW3sB,EACxB,EAMF,MAAMqqE,GACJ,WAAAj1E,EAAY,QACVg1B,EAAU,OAEVh5B,KAAKg5B,QAAUA,CACjB,CACA,WAAMoP,EAAM,SACV4C,IAEA,IAAKhrC,KAAKg5B,QACR,MAAM,IAAIP,MAAM,wDAElB,IAAKuS,EACH,MAAM,IAAIvS,MAAM,oCAElB,MAAMI,EAAM,GAAG74B,KAAKg5B,UAAUgS,IAC9B,OAAOhrC,KAAK41E,OAAO/8C,GAAKi9C,MAAMzC,IAC5B,MAAM,IAAI56C,MAAM,gCAAgCI,MAEpD,CACA,YAAM+8C,CAAO/8C,GACXL,EAAY,mCACd,EAEF,MAAM0gD,WAAuBD,GAC3B,YAAMrD,CAAO/8C,GACX,MAAMjqB,QAAao5B,GAAUnP,EAAK,eAClC,OAAO,IAAI0C,WAAW3sB,EACxB,EAaFm5B,eAAeoxC,GAAqBtgD,GAClC,MAAMugD,EAAKxoE,QAAQgJ,iBAAiB,MAC9BhL,QAAawqE,EAAGxtB,SAASytB,SAASxgD,GACxC,OAAO,IAAI0C,WAAW3sB,EACxB,CAPI6c,GACF8M,EAAK,0DAOP,MAAM+gD,WAA0BtD,IAChC,MAAMuD,WAA0BnE,GAC9B,aAAAE,CAAc74D,EAAOC,GACnB,MAAM88D,EAAU5oE,QAAQgJ,iBAAiB,UAAU6/D,cAAc,4FAC3Dh3D,EAAS+2D,EAAQ,mBACvB,OAAO/2D,EAAOi3D,aAAaj9D,EAAOC,EACpC,EAEF,MAAMi9D,WAA8BjE,GAClC,YAAME,CAAO/8C,GACX,OAAOsgD,GAAqBtgD,EAC9B,EAEF,MAAM+gD,WAAoCb,GACxC,YAAMnD,CAAO/8C,GACX,OAAOsgD,GAAqBtgD,EAC9B,EAEF,MAAMghD,WAAwBZ,GAC5B,YAAMrD,CAAO/8C,GACX,OAAOsgD,GAAqBtgD,EAC9B,EAKF,MAAMihD,GAA0B,sBAC1B,MACJnzE,GAAK,KACLF,IACEC,KACJ,SAASqzE,GAAWtnC,EAAOllC,EAAOgjE,EAAME,EAAMD,EAAME,GAClDj+B,EAAc,EAARllC,EAAY,GAAK7G,KAAKoN,IAAI2+B,EAAc,EAARllC,EAAY,GAAIgjE,GACtD99B,EAAc,EAARllC,EAAY,GAAK7G,KAAKoN,IAAI2+B,EAAc,EAARllC,EAAY,GAAIkjE,GACtDh+B,EAAc,EAARllC,EAAY,GAAK7G,KAAKmN,IAAI4+B,EAAc,EAARllC,EAAY,GAAIijE,GACtD/9B,EAAc,EAARllC,EAAY,GAAK7G,KAAKmN,IAAI4+B,EAAc,EAARllC,EAAY,GAAImjE,EACxD,CACA,MAAMsJ,GAAa,IAAIn+C,YAAY,IAAIN,WAAW,CAAC,IAAK,IAAK,EAAG,IAAIlyB,QAAQ,GAC5E,MAAM4wE,GACJ,IACA,IACA,WAAAj2E,CAAYk2E,EAAQzL,GAClBzuE,MAAK,GAAUk6E,EACfl6E,MAAK,GAAUyuE,CACjB,CACA,UAAI3tE,GACF,OAAOd,MAAK,GAAQc,MACtB,CACA,OAAAg9C,CAAQ70C,GACN,OAAOjJ,MAAK,GAAQiJ,KAAO+wE,EAC7B,CACA,IAAAzJ,CAAKtnE,GACH,OAAOjJ,MAAK,GAAY,EAAJiJ,EAAQ,GAAK,GACnC,CACA,IAAAwnE,CAAKxnE,GACH,OAAOjJ,MAAK,GAAY,EAAJiJ,EAAQ,GAAK,GACnC,CACA,IAAAunE,CAAKvnE,GACH,OAAQjJ,MAAK,GAAY,EAAJiJ,EAAQ,GAAK,GAAK,GACzC,CACA,IAAAynE,CAAKznE,GACH,OAAQjJ,MAAK,GAAY,EAAJiJ,EAAQ,GAAK,GAAK,GACzC,EAEF,MAAMkxE,GAAsB,CAACtwE,EAAKO,KAChC,IAAKP,EACH,OAEF,IAAI/H,EAAQ+H,EAAIhH,IAAIuH,GAQpB,OAPKtI,IACHA,EAAQ,CACNs4E,aAAc,IAAI/hC,IAClBgiC,sBAAsB,GAExBxwE,EAAIjC,IAAIwC,EAAKtI,IAERA,GAET,MAAMw4E,GACJ,IAAU,CACRC,UAAW,MAEb,IAAe,CACbA,UAAW,KACXhyD,UAAW,GACX+L,SAAU,GACVkmD,aAAc,GACd,CAACV,IAA0B,IAE7B,IAAqB,IAAIx0E,IACzB,IAAc,GACd,IAAsB,GACtB,IAAsB,CAAC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACvC,IAAW,EAAE+qC,KAAWA,IAAUA,IAAUA,KAC5C,IAAe,IAAIoqC,aAAa,CAACpqC,IAAUA,KAAWA,KAAWA,MACjE,KAAmB,EACnB,IAAuB,IAAIgI,IAC3B,IAAc,IAAI/yC,IAClB,IAAuB,IAAIA,IAC3B,IACA,IACA,IACA,IACA,IACA,WAAAtB,CAAYye,EAAQi4D,EAAiBC,GAAsB,GACzD36E,MAAK,GAAeyiB,EAAOhG,MAC3Bzc,MAAK,GAAgByiB,EAAO/F,OAC5B1c,MAAK,GAAkB06E,GACnBC,IACF36E,MAAK,GAAiB,IAAIsF,IAE9B,CACA,mBAAAs1E,CAAoBF,GACdA,GAAmB16E,MAAK,GAAQc,QAClCd,MAAK,GAAkB06E,EAAiB16E,MAAK,GAEjD,CACA,IAAkB06E,EAAiBG,GACjC,MAAMxxE,EAAS,IAAIC,YAA8B,EAAlBoxE,GAC/B16E,MAAK,GAAgB,IAAI86E,kBAAkBzxE,GAC3CrJ,MAAK,GAAU,IAAI67B,YAAYxyB,GAC3BwxE,GAAaA,EAAU/5E,OAAS,GAClCd,MAAK,GAAQ4H,IAAIizE,GACjB76E,MAAK,GAAQozB,KAAK4mD,GAAYa,EAAU/5E,SAExCd,MAAK,GAAQozB,KAAK4mD,GAEtB,CACA,IAAAvnD,CAAKsoD,GAuBH,OAtBA/6E,MAAK,GAAU,CACbu6E,UAAWv6E,MAAK,IAElBA,MAAK,GAAe,CAClBu6E,UAAWv6E,MAAK,GAChBuoB,UAAW,CACTgyD,UAAWv6E,MAAK,GAAauoB,WAE/B+L,SAAU,CACRimD,UAAWv6E,MAAK,GAAas0B,UAE/BkmD,aAAc,CACZD,UAAWv6E,MAAK,GAAaw6E,cAE/B,CAACV,IAA0B,CACzBS,UAAWv6E,MAAK,GAAa85E,MAGjC95E,MAAK,GAAW,CACdu6E,UAAWv6E,MAAK,IAElBA,MAAK,GAAYiK,KAAK8wE,GACf/6E,IACT,CACA,OAAA0yB,CAAQqoD,GACN,MAAMC,EAAW/3E,OAAOwH,eAAezK,MAAK,IAC5C,GAAiB,OAAbg7E,EACF,OAAOh7E,KAETA,MAAK,GAAUg7E,EACfh7E,MAAK,GAAeiD,OAAOwH,eAAezK,MAAK,IAC/CA,MAAK,GAAWiD,OAAOwH,eAAezK,MAAK,IAC3C,MAAMi7E,EAAWj7E,MAAK,GAAYonC,MAKlC,YAJiBjjC,IAAb82E,IACFd,GAAoBn6E,MAAK,GAAgB+6E,IAAQX,aAAah2D,IAAI62D,GAClEj7E,MAAK,GAAQ+6E,GAAS/6E,MAAK,GAAQi7E,IAE9Bj7E,IACT,CACA,gBAAAk7E,CAAiBC,GAEf,OADAn7E,MAAK,GAAYiK,KAAKkxE,GACfn7E,IACT,CACA,aAAAo7E,GACE,OAAgC,IAA5Bp7E,MAAK,GAAYc,OACZ,KAEFd,MAAK,GAAYmnC,IAAI,EAC9B,CACA,iBAAAk0C,CAAkBN,GAChB,MAAME,EAAWj7E,MAAK,GAAYonC,MAKlC,YAJiBjjC,IAAb82E,IACFd,GAAoBn6E,MAAK,GAAgB+6E,IAAQX,aAAah2D,IAAI62D,GAClEj7E,MAAK,GAAQ+6E,GAAS/6E,MAAK,GAAQi7E,IAE9Bj7E,IACT,CACA,kBAAAm2B,CAAmB4kD,GAEjB,OADA/6E,MAAK,GAAoBiK,KAAK8wE,GACvB/6E,IACT,CACA,gBAAAq2B,CAAiB0kD,GACf,MAAME,EAAWj7E,MAAK,GAAoBonC,MAK1C,YAJiBjjC,IAAb82E,IACFd,GAAoBn6E,MAAK,GAAgB+6E,IAAQX,aAAah2D,IAAI62D,GAClEj7E,MAAK,GAAQ+6E,GAAS/6E,MAAK,GAAQi7E,IAE9Bj7E,IACT,CACA,iBAAAs7E,CAAkBvsC,GAEhB,OADA/uC,MAAK,GAAoBiK,KAAKmzB,GAAKW,oBAAoB/9B,MAAK,GAAoBmnC,IAAI,GAAI4H,EAAIC,iBACrFhvC,IACT,CACA,gBAAAu7E,GAIE,OAHIv7E,MAAK,GAAoBc,OAAS,GACpCd,MAAK,GAAoBonC,MAEpBpnC,IACT,CACA,gBAAAw7E,CAAiB93E,EAAMy3E,GAErB,OADAn7E,MAAK,GAAQ0D,GAAQy3E,EACdn7E,IACT,CACA,qBAAAy7E,CAAsB/3E,EAAMy3E,GAE1B,OADAn7E,MAAK,GAAa0D,GAAMuG,KAAKkxE,GACtBn7E,IACT,CACA,oBAAA07E,CAAqBh4E,EAAMy3E,GAEzB,OADAn7E,MAAK,GAAa0D,GAAM5C,OAAS,EAC1Bd,IACT,CACA,eAAA27E,CAAgBj4E,EAAMy3E,GAEpB,OADAn7E,MAAK,GAAmB4H,IAAIlE,EAAMy3E,GAC3Bn7E,IACT,CACA,yBAAA47E,CAA0Bl4E,EAAMm4E,EAASC,GACvC97E,MAAK,GAAQ0D,GAAQ1D,MAAK,GAAmB6C,IAAIg5E,IAAYC,CAC/D,CACA,4BAAAC,CAA6Br4E,EAAMy3E,GAEjC,OADAn7E,KAAKy7E,sBAAsB3B,GAAyBqB,GAC7Cn7E,IACT,CACA,2CAAAg8E,CAA4C7xE,GAC1C,IAAK,MAAMzG,KAAQyG,EACbzG,KAAQ1D,MAAK,IACfA,KAAK+7E,6BAA6Br4E,EAAM1D,MAAK,GAAQ0D,IAGzD,OAAO1D,IACT,CACA,oDAAAi8E,GACE,IAAK,MAAMC,KAAOl8E,MAAK,GACrBA,KAAK+7E,6BAA6BjC,GAAyBoC,GAE7D,OAAOl8E,IACT,CACA,SAAAm8E,CAAUhB,GAQR,OAPIn7E,MAAK,KAAoBm7E,IAC3Bn7E,MAAK,GAAkBm7E,EACvBn7E,MAAK,GAAa,GAAKqwC,IACvBrwC,MAAK,GAAa,GAAKqwC,IACvBrwC,MAAK,GAAa,IAAMqwC,IACxBrwC,MAAK,GAAa,IAAMqwC,KAEnBrwC,IACT,CACA,aAAAo8E,CAAcjB,EAAKpsC,EAAKwhC,EAAMC,EAAMC,EAAMC,GACxC,MAAMnoD,EAAY6U,GAAKW,oBAAoB/9B,MAAK,GAAoBmnC,IAAI,GAAI4H,EAAIC,gBAC1EqtC,EAAU,CAAChsC,IAAUA,KAAWA,KAAWA,KACjDjT,GAAK0B,wBAAwB,CAACyxC,EAAME,EAAMD,EAAME,GAAOnoD,EAAW8zD,GAClE,MAAMC,EAAel/C,GAAKoD,UAAUxgC,MAAK,GAAUq8E,GAUnD,OATIC,GACFt8E,MAAK,GAAS,GAAKs8E,EAAa,GAChCt8E,MAAK,GAAS,GAAKs8E,EAAa,GAChCt8E,MAAK,GAAS,GAAKs8E,EAAa,GAChCt8E,MAAK,GAAS,GAAKs8E,EAAa,KAEhCt8E,MAAK,GAAS,GAAKA,MAAK,GAAS,GAAKqwC,IACtCrwC,MAAK,GAAS,GAAKA,MAAK,GAAS,IAAMqwC,KAElCrwC,IACT,CACA,UAAAu8E,CAAWpB,EAAKpsC,EAAKwhC,EAAMC,EAAMC,EAAMC,GACrC,MAAM2L,EAAUr8E,MAAK,GACrB,GAAIq8E,EAAQ,KAAOhsC,IACjB,OAAOrwC,KAET,MAAMuoB,EAAY6U,GAAKW,oBAAoB/9B,MAAK,GAAoBmnC,IAAI,GAAI4H,EAAIC,gBAChF,GAAIqtC,EAAQ,MAAQhsC,IAElB,OADAjT,GAAK0B,wBAAwB,CAACyxC,EAAME,EAAMD,EAAME,GAAOnoD,EAAWvoB,MAAK,IAChEA,KAET,MAAMqrE,EAAO,CAACh7B,IAAUA,KAAWA,KAAWA,KAM9C,OALAjT,GAAK0B,wBAAwB,CAACyxC,EAAME,EAAMD,EAAME,GAAOnoD,EAAW8iD,GAClErrE,MAAK,GAAa,GAAK0G,KAAKoN,IAAI9T,MAAK,GAAa,GAAI0G,KAAKmN,IAAIw3D,EAAK,GAAIgR,EAAQ,KAChFr8E,MAAK,GAAa,GAAK0G,KAAKoN,IAAI9T,MAAK,GAAa,GAAI0G,KAAKmN,IAAIw3D,EAAK,GAAIgR,EAAQ,KAChFr8E,MAAK,GAAa,GAAK0G,KAAKmN,IAAI7T,MAAK,GAAa,GAAI0G,KAAKoN,IAAIu3D,EAAK,GAAIgR,EAAQ,KAChFr8E,MAAK,GAAa,GAAK0G,KAAKmN,IAAI7T,MAAK,GAAa,GAAI0G,KAAKoN,IAAIu3D,EAAK,GAAIgR,EAAQ,KACzEr8E,IACT,CACA,mBAAAw8E,CAAoBrB,EAAKpsC,EAAK04B,EAAM9pD,EAAQ,EAAG9W,EAAI,EAAG2X,EAAI,EAAGi+D,GAC3D,MAAMC,EAAWjV,EAAK4D,KACtB,IAAIsR,EACAC,EACJ,GAAIF,IACFC,EAAoBD,EAAS,KAAOA,EAAS,IAAMA,EAAS,KAAOA,EAAS,IAAM18E,MAAK,GAAqB6C,IAAI4kE,IACtF,IAAtBkV,IACFC,EAAe,CAAC,EAAG,EAAG,EAAG,GACzBx/C,GAAK0B,wBAAwB49C,EAAUjV,EAAK6D,WAAYsR,GAC1C,IAAVj/D,GAAqB,IAAN9W,GAAiB,IAAN2X,GAC5B4e,GAAKO,YAAY,CAAChgB,EAAO,EAAG,GAAIA,EAAO9W,EAAG2X,GAAIo+D,GAE5CD,IACF,OAAO38E,KAAKu8E,WAAWpB,EAAKpsC,EAAK6tC,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,IAIvG,IAAKH,EACH,OAAOz8E,KAAK68E,mBAAmB1B,GAEjC,MAAMx4D,EAAU85D,IAChB,OAAIC,GAAYE,QAAsCz4E,IAAtBw4E,IAC9BA,EAAoBC,EAAa,IAAM/1E,EAAI8b,EAAQm6D,uBAAyBF,EAAa,IAAM/1E,EAAI8b,EAAQo6D,wBAA0BH,EAAa,IAAMp+D,EAAImE,EAAQq6D,yBAA2BJ,EAAa,IAAMp+D,EAAImE,EAAQs6D,yBAC9Nj9E,MAAK,GAAqB4H,IAAI6/D,EAAMkV,GAChCA,GACK38E,KAAKu8E,WAAWpB,EAAKpsC,EAAK6tC,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,IAG9F58E,KAAKu8E,WAAWpB,EAAKpsC,EAAKloC,EAAI8b,EAAQm6D,sBAAuBj2E,EAAI8b,EAAQo6D,uBAAwBv+D,EAAImE,EAAQq6D,wBAAyBx+D,EAAImE,EAAQs6D,yBAC3J,CACA,kBAAAJ,CAAmB1B,GAKjB,OAJAn7E,MAAK,GAAa,GAAK0G,KAAKmN,IAAI,EAAG7T,MAAK,GAAS,IACjDA,MAAK,GAAa,GAAK0G,KAAKmN,IAAI,EAAG7T,MAAK,GAAS,IACjDA,MAAK,GAAa,GAAK0G,KAAKoN,IAAI9T,MAAK,GAAcA,MAAK,GAAS,IACjEA,MAAK,GAAa,GAAK0G,KAAKoN,IAAI9T,MAAK,GAAeA,MAAK,GAAS,IAC3DA,IACT,CACA,cAAAk9E,CAAeC,GACb,OAAOn9E,MAAK,GAAQm9E,EACtB,CACA,kBAAAC,CAAmBjC,EAAKkC,GACtB,MAAMC,EAAsBt9E,MAAK,GAC3B0W,EAAS1W,MAAK,GACdu9E,EAAcv9E,MAAK,GACzB,IAAK,MAAM0D,KAAQ25E,EACb35E,KAAQ1D,MAAK,GACfs9E,EAAoBl5D,IAAI1N,EAAOhT,IACtBA,KAAQ65E,GACjBA,EAAY75E,GAAMgU,QAAQ4lE,EAAoBl5D,IAAKk5D,GAGvD,OAAOt9E,IACT,CACA,qBAAAw9E,CAAsBrC,EAAKz3E,GAIzB,OAHI1D,MAAK,GAAmB6H,IAAInE,IAC9B1D,MAAK,GAAqBokB,IAAIpkB,MAAK,GAAmB6C,IAAIa,IAErD1D,IACT,CACA,eAAAy9E,CAAgBtC,EAAKuC,GAAW,GAE9B,GADA19E,KAAKo9E,mBAAmBjC,EAAK,CAACrB,KAC1B95E,MAAK,GAAgB,CACvB,MAAM2I,EAAWwxE,GAAoBn6E,MAAK,GAAgBm7E,IACpD,aACJf,GACEzxE,EACJ3I,MAAK,GAAqB0X,QAAQ0iE,EAAah2D,IAAKg2D,GACpDp6E,MAAK,GAAY0X,QAAQ0iE,EAAah2D,IAAKg2D,GAC3Cp6E,MAAK,GAAoB0X,QAAQ0iE,EAAah2D,IAAKg2D,GACnDA,EAAa5kC,OAAO2lC,GACpBxyE,EAAS0xE,sBAAuB,CAClC,CACA,GAAIr6E,MAAK,KAAoBm7E,EAAK,CAChC,MAAM5K,EAAO5pE,GAA6B,IAAvB3G,MAAK,GAAa,GAAWA,MAAK,IAC/CywE,EAAO9pE,GAA6B,IAAvB3G,MAAK,GAAa,GAAWA,MAAK,IAC/CwwE,EAAO/pE,GAA4B,IAAvBzG,MAAK,GAAa,GAAWA,MAAK,IAC9C0wE,EAAOjqE,GAA4B,IAAvBzG,MAAK,GAAa,GAAWA,MAAK,IACpD+5E,GAAW/5E,MAAK,GAAem7E,EAAK5K,EAAME,EAAMD,EAAME,GACtD,IAAK,MAAMiN,KAAU39E,MAAK,GACpB29E,IAAWxC,GACbpB,GAAW/5E,MAAK,GAAe29E,EAAQpN,EAAME,EAAMD,EAAME,GAG7D,IAAK,MAAMkN,KAAW59E,MAAK,GACrB49E,IAAYzC,GACdpB,GAAW/5E,MAAK,GAAe49E,EAASrN,EAAME,EAAMD,EAAME,GAG9D,IAAK,MAAMkN,KAAW59E,MAAK,GACrB49E,IAAYzC,GACdpB,GAAW/5E,MAAK,GAAe49E,EAASrN,EAAME,EAAMD,EAAME,GAGzDgN,IACH19E,MAAK,GAAqBkhD,QAC1BlhD,MAAK,IAAmB,EAE5B,CACA,OAAOA,IACT,CACA,uBAAA69E,CAAwB1C,EAAKuC,GAAW,GACtC,MAAMI,EAAOvtE,MAAM2sB,KAAKl9B,MAAK,IAC7BA,KAAKy9E,gBAAgBtC,EAAKuC,GAC1B19E,KAAKy7E,sBAAsB,eAAgBN,GAC3C,IAAK,MAAMe,KAAO4B,EAChB99E,KAAKy7E,sBAAsB,eAAgBS,GAE7C,OAAOl8E,IACT,CACA,0BAAA+9E,CAA2B5C,EAAKuC,GAAW,GAWzC,OAVI19E,MAAK,KAAoBm7E,IAC3Bn7E,MAAK,IAAmB,EACxBA,MAAK,GAAS,GAAK0G,KAAKmN,IAAI7T,MAAK,GAAS,GAAIA,MAAK,GAAa,IAChEA,MAAK,GAAS,GAAK0G,KAAKmN,IAAI7T,MAAK,GAAS,GAAIA,MAAK,GAAa,IAChEA,MAAK,GAAS,GAAK0G,KAAKoN,IAAI9T,MAAK,GAAS,GAAIA,MAAK,GAAa,IAChEA,MAAK,GAAS,GAAK0G,KAAKoN,IAAI9T,MAAK,GAAS,GAAIA,MAAK,GAAa,IAC3D09E,GACH19E,MAAK,GAAqBkhD,SAGvBlhD,IACT,CACA,wBAAAg+E,GACE,MAAMV,EAAsBt9E,MAAK,GAEjC,OADAA,MAAK,GAAuB,IAAIq4C,IACzBilC,CACT,CACA,iBAAAW,CAAkB9C,GAChB,MAAM+C,EAAYl+E,MAAK,GAAY6C,IAAIs4E,GAEvC,OADAn7E,MAAK,GAAYw1C,OAAO2lC,GACjB+C,CACT,CACA,wBAAAC,CAAyB/D,GACvB,IAAK,MAAM8B,KAAO9B,EAChBp6E,MAAK,GAAqBokB,IAAI83D,EAElC,CACA,IAAAkC,GAEE,OADAp+E,MAAK,GAAqBkhD,QACnB,IAAI+4B,GAAWj6E,MAAK,GAASA,MAAK,GAC3C,CACA,iBAAAq+E,GACE,OAAOr+E,MAAK,EACd,EAEF,MAAMs+E,GACJ,IACA,IACA,IACA,IAAgB,EAChB,IAAc,EACd,WAAAt6E,CAAYu6E,EAAmBxD,EAAOyD,GACpC,GAAID,aAA6BD,IAAiCC,GAAkB,OAAoBC,EACtG,OAAOD,EAETv+E,MAAK,GAAqBu+E,EAC1Bv+E,MAAK,GAAS+6E,EACd/6E,MAAK,KAAkBw+E,CACzB,CACA,mBAAA5D,GACE,MAAM,IAAIniD,MAAM,cAClB,CACA,IAAAhG,CAAKsoD,GAGH,OAFA/6E,MAAK,KACLA,MAAK,GAAmByyB,KAAKzyB,MAAK,IAC3BA,IACT,CACA,OAAA0yB,CAAQqoD,GAKN,OAJI/6E,MAAK,GAAc,IACrBA,MAAK,GAAmB0yB,QAAQ1yB,MAAK,IACrCA,MAAK,MAEAA,IACT,CACA,gBAAAk7E,CAAiBC,GAEf,OADAn7E,MAAK,KACEA,IACT,CACA,aAAAo7E,GACE,OAAOp7E,MAAK,GAAgB,EAAIA,MAAK,GAASA,MAAK,GAAmBo7E,eACxE,CACA,iBAAAC,CAAkBF,GAEhB,OADAn7E,MAAK,KACEA,IACT,CACA,kBAAAm2B,CAAmB4kD,GACjB,OAAO/6E,IACT,CACA,gBAAAq2B,CAAiB0kD,GACf,OAAO/6E,IACT,CACA,iBAAAs7E,CAAkBvsC,GAEhB,OADA/uC,MAAK,GAAmBs7E,kBAAkBvsC,GACnC/uC,IACT,CACA,gBAAAu7E,GAEE,OADAv7E,MAAK,GAAmBu7E,mBACjBv7E,IACT,CACA,gBAAAw7E,CAAiB93E,EAAMy3E,GAErB,OADAn7E,MAAK,GAAmBw7E,iBAAiB93E,EAAM1D,MAAK,IAC7CA,IACT,CACA,qBAAAy7E,CAAsB/3E,EAAMy3E,GAE1B,OADAn7E,MAAK,GAAmBy7E,sBAAsB/3E,EAAM1D,MAAK,IAClDA,IACT,CACA,oBAAA07E,CAAqBh4E,EAAMy3E,GAEzB,OADAn7E,MAAK,GAAmB07E,qBAAqBh4E,EAAM1D,MAAK,IACjDA,IACT,CACA,eAAA27E,CAAgBj4E,EAAMy3E,GACpB,OAAOn7E,IACT,CACA,yBAAA47E,CAA0Bl4E,EAAMm4E,EAASC,GAEvC,OADA97E,MAAK,GAAmB47E,0BAA0Bl4E,EAAMm4E,EAAS77E,MAAK,IAC/DA,IACT,CACA,4BAAA+7E,CAA6Br4E,EAAMy3E,GAEjC,OADAn7E,MAAK,GAAmB+7E,6BAA6Br4E,EAAM1D,MAAK,IACzDA,IACT,CACA,2CAAAg8E,CAA4C7xE,GAE1C,OADAnK,MAAK,GAAmBg8E,4CAA4C7xE,GAC7DnK,IACT,CACA,oDAAAi8E,GAEE,OADAj8E,MAAK,GAAmBi8E,uDACjBj8E,IACT,CACA,SAAAm8E,CAAUhB,GAIR,OAHKn7E,MAAK,IACRA,MAAK,GAAmBm8E,UAAUn8E,MAAK,IAElCA,IACT,CACA,aAAAo8E,CAAcjB,EAAKpsC,EAAKwhC,EAAMC,EAAMC,EAAMC,GAIxC,OAHK1wE,MAAK,IACRA,MAAK,GAAmBo8E,cAAcp8E,MAAK,GAAQ+uC,EAAKwhC,EAAMC,EAAMC,EAAMC,GAErE1wE,IACT,CACA,UAAAu8E,CAAWpB,EAAKpsC,EAAKwhC,EAAMC,EAAMC,EAAMC,GAIrC,OAHK1wE,MAAK,IACRA,MAAK,GAAmBu8E,WAAWv8E,MAAK,GAAQ+uC,EAAKwhC,EAAMC,EAAMC,EAAMC,GAElE1wE,IACT,CACA,mBAAAw8E,CAAoBrB,EAAKpsC,EAAK04B,EAAM9pD,EAAO9W,EAAG2X,EAAGi+D,GAI/C,OAHKz8E,MAAK,IACRA,MAAK,GAAmBw8E,oBAAoBx8E,MAAK,GAAQ+uC,EAAK04B,EAAM9pD,EAAO9W,EAAG2X,EAAGi+D,GAE5Ez8E,IACT,CACA,kBAAA68E,CAAmB1B,GAIjB,OAHKn7E,MAAK,IACRA,MAAK,GAAmB68E,mBAAmB78E,MAAK,IAE3CA,IACT,CACA,cAAAk9E,CAAeC,GACb,OAAOn9E,MAAK,GAAmBk9E,eAAeC,EAChD,CACA,kBAAAC,CAAmBjC,EAAKkC,GAEtB,OADAr9E,MAAK,GAAmBo9E,mBAAmBp9E,MAAK,GAAQq9E,GACjDr9E,IACT,CACA,qBAAAw9E,CAAsBrC,EAAKz3E,GAEzB,OADA1D,MAAK,GAAmBw9E,sBAAsBx9E,MAAK,GAAQ0D,GACpD1D,IACT,CACA,eAAAy9E,CAAgBtC,GAEd,OADAn7E,MAAK,GAAmBy9E,gBAAgBz9E,MAAK,IAAQ,GAC9CA,IACT,CACA,uBAAA69E,CAAwB1C,GAEtB,OADAn7E,MAAK,GAAmB69E,wBAAwB79E,MAAK,IAAQ,GACtDA,IACT,CACA,0BAAA+9E,CAA2B5C,GAIzB,OAHKn7E,MAAK,IACRA,MAAK,GAAmB+9E,2BAA2B/9E,MAAK,IAAQ,GAE3DA,IACT,CACA,IAAAo+E,GACE,MAAM,IAAI3lD,MAAM,cAClB,CACA,iBAAA4lD,GACE,MAAM,IAAI5lD,MAAM,cAClB,EAEF,MAAMgmD,GAAe,CACnBvrD,OAAQ,CAAC,OAAQ,YAAa,SAAU,cAAe,cAAe,YAAa,UAAW,WAAY,aAAc,QACxHE,KAAM,CAAC,OAAQ,YAAa,SAAU,YAAa,YAAa,2BAA4B,SAC5FsrD,aAAc,CAAC,YAAa,QAAS,SAAU,YAAa,cAAe,4BAC3EjnD,YAAa,CAAC,SAAU,YAAa,aACrC/C,SAAU,CAAC,YAAa,UAAW,cAAe,cAAe,SAAU,WAAY,WAAY,aAAc,OAAQ,UAAW,SAAU,YAAa,oBAAqB,QAAS,YAAa,cAAe,2BAA4B,gBACjPnM,UAAW,CAAC,aACZo2D,iBAAkB,CAAC,YAAa,cAM5BC,GAAW,CACf1vD,KAAM,OACNC,OAAQ,SACR0vD,QAAS,WAEX,SAASC,GAAiB/vC,EAAKs8B,GAC7B,IAAKA,EACH,OAEF,MAAM5uD,EAAQ4uD,EAAK,GAAKA,EAAK,GACvB3uD,EAAS2uD,EAAK,GAAKA,EAAK,GACxB0T,EAAS,IAAIprC,OACnBorC,EAAOhgD,KAAKssC,EAAK,GAAIA,EAAK,GAAI5uD,EAAOC,GACrCqyB,EAAIpb,KAAKorD,EACX,CACA,MAAMC,GACJ,2BAAAC,GACE,OAAO,CACT,CACA,UAAAC,GACE1mD,EAAY,uCACd,EAEF,MAAM2mD,WAAkCH,GACtC,WAAAh7E,CAAYo7E,GACVhlD,QACAp6B,KAAKi3D,MAAQmoB,EAAG,GAChBp/E,KAAKq/E,MAAQD,EAAG,GAChBp/E,KAAKs/E,YAAcF,EAAG,GACtBp/E,KAAKu/E,IAAMH,EAAG,GACdp/E,KAAKw/E,IAAMJ,EAAG,GACdp/E,KAAKy/E,IAAML,EAAG,GACdp/E,KAAK0/E,IAAMN,EAAG,GACdp/E,KAAKmgC,OAAS,IAChB,CACA,aAAAw/C,GACE,OAAuB,IAAhB3/E,KAAKu/E,IAAI,IAA4B,IAAhBv/E,KAAKu/E,IAAI,MAAcv/E,KAAK4/E,YAA8B,IAAhB5/E,KAAKw/E,IAAI,IAA4B,IAAhBx/E,KAAKw/E,IAAI,GACtG,CACA,QAAAI,GACE,MAAsB,WAAf5/E,KAAKi3D,KACd,CACA,eAAA4oB,CAAgB9wC,EAAKxmB,EAAY,MAC/B,IAAIu3D,EACAC,EAAa//E,KAAKu/E,IAClBS,EAAchgF,KAAKw/E,IAOvB,GANIj3D,IACFw3D,EAAaA,EAAW58E,QACxB68E,EAAcA,EAAY78E,QAC1Bi6B,GAAKc,eAAe6hD,EAAYx3D,GAChC6U,GAAKc,eAAe8hD,EAAaz3D,IAEhB,UAAfvoB,KAAKi3D,MACP6oB,EAAO/wC,EAAIkxC,qBAAqBF,EAAW,GAAIA,EAAW,GAAIC,EAAY,GAAIA,EAAY,SACrF,GAAmB,WAAfhgF,KAAKi3D,MAAoB,CAClC,IAAIh4B,EAAKj/B,KAAKy/E,IACVvgD,EAAKl/B,KAAK0/E,IACd,GAAIn3D,EAAW,CACb,MAAM5K,EAAQ,IAAI+0B,aAAa,GAC/BtV,GAAK8C,8BAA8B3X,EAAW5K,GAC9CshB,GAAMthB,EAAM,GACZuhB,GAAMvhB,EAAM,EACd,CACAmiE,EAAO/wC,EAAImxC,qBAAqBH,EAAW,GAAIA,EAAW,GAAI9gD,EAAI+gD,EAAY,GAAIA,EAAY,GAAI9gD,EACpG,CACA,IAAK,MAAMihD,KAAangF,KAAKs/E,YAC3BQ,EAAKM,aAAaD,EAAU,GAAIA,EAAU,IAE5C,OAAOL,CACT,CACA,UAAAZ,CAAWnwC,EAAKsxC,EAAOC,EAASC,GAC9B,IAAIC,EACJ,GAAID,IAAa3B,GAASzvD,QAAUoxD,IAAa3B,GAAS1vD,KAAM,CAC9D,GAAIlvB,KAAK2/E,gBAAiB,CACxB,IAAIhkB,EAASv+B,GAAK7U,UAAU+3D,EAASD,EAAMI,eACvCzgF,KAAKmgC,SACPw7B,EAASv+B,GAAK7U,UAAUozC,EAAQ37D,KAAKmgC,SAEvC,MAAMugD,EAAY,KACZC,EAAKj6E,KAAK+uD,MAAMkG,EAAO,GAAIA,EAAO,IAClCilB,EAAKl6E,KAAK+uD,MAAMkG,EAAO,GAAIA,EAAO,IAClCklB,GAAMllB,EAAO,GAAKA,EAAO,GAAKA,EAAO,GAAKA,EAAO,KAAOglB,EAAKC,GACnE,GAAIl6E,KAAKm7B,IAAIg/C,GAAMH,EAAW,CAC5B,IAAI1gF,KAAK4/E,WAKP,OAAO5/E,KAAK6/E,gBAAgB9wC,EAAK4sB,GAJjC,GAAIj1D,KAAKm7B,IAAI8+C,EAAKC,GAAMF,EACtB,OAAO1gF,KAAK6/E,gBAAgB9wC,EAAK4sB,EAKvC,CACF,CACA,MAAMmlB,EAAYT,EAAMjtE,QAAQ2tE,0BAA0BR,EAAUzxC,GAAoBC,KAAS,CAAC,EAAG,EAAG,EAAG,GACrGtyB,EAAQ/V,KAAKD,KAAKq6E,EAAU,GAAKA,EAAU,KAAO,EAClDpkE,EAAShW,KAAKD,KAAKq6E,EAAU,GAAKA,EAAU,KAAO,EACnDE,EAAYX,EAAMY,eAAeC,UAAU,UAAWzkE,EAAOC,GAC7DykE,EAASH,EAAUl+D,QACzBq+D,EAAOC,UAAU,EAAG,EAAGD,EAAO1+D,OAAOhG,MAAO0kE,EAAO1+D,OAAO/F,QAC1DykE,EAAOE,YACPF,EAAOpiD,KAAK,EAAG,EAAGoiD,EAAO1+D,OAAOhG,MAAO0kE,EAAO1+D,OAAO/F,QACrDykE,EAAOznB,WAAWonB,EAAU,IAAKA,EAAU,IAC3CR,EAAUljD,GAAK7U,UAAU+3D,EAAS,CAAC,EAAG,EAAG,EAAG,EAAGQ,EAAU,GAAIA,EAAU,KACvEK,EAAO54D,aAAa83D,EAAMI,eACtBzgF,KAAKmgC,QACPghD,EAAO54D,aAAavoB,KAAKmgC,QAE3B2+C,GAAiBqC,EAAQnhF,KAAKq/E,OAC9B8B,EAAOG,UAAYthF,KAAK6/E,gBAAgBsB,GACxCA,EAAO/tD,OACPotD,EAAUzxC,EAAIwyC,cAAcP,EAAUv+D,OAAQ,aAC9C,MAAM++D,EAAY,IAAIC,UAAUnB,GAChCE,EAAQkB,aAAaF,EACvB,MACE1C,GAAiB/vC,EAAK/uC,KAAKq/E,OAC3BmB,EAAUxgF,KAAK6/E,gBAAgB9wC,GAEjC,OAAOyxC,CACT,EAEF,SAASmB,GAAa/yE,EAAMkU,EAASub,EAAImE,EAAIo/C,EAAIC,EAAIC,EAAIC,GACvD,MAAMtT,EAAS3rD,EAAQ2rD,OACrBngC,EAASxrB,EAAQwrB,OACbxT,EAAQlsB,EAAKA,KACjBozE,EAAuB,EAAbpzE,EAAK6N,MACjB,IAAIwlE,EACAxT,EAAOpwC,EAAK,GAAKowC,EAAOjsC,EAAK,KAC/By/C,EAAM5jD,EACNA,EAAKmE,EACLA,EAAKy/C,EACLA,EAAMJ,EACNA,EAAKC,EACLA,EAAKG,GAEHxT,EAAOjsC,EAAK,GAAKisC,EAAOmT,EAAK,KAC/BK,EAAMz/C,EACNA,EAAKo/C,EACLA,EAAKK,EACLA,EAAMH,EACNA,EAAKC,EACLA,EAAKE,GAEHxT,EAAOpwC,EAAK,GAAKowC,EAAOjsC,EAAK,KAC/By/C,EAAM5jD,EACNA,EAAKmE,EACLA,EAAKy/C,EACLA,EAAMJ,EACNA,EAAKC,EACLA,EAAKG,GAEP,MAAM9gD,GAAMstC,EAAOpwC,GAAMvb,EAAQoE,SAAWpE,EAAQo/D,OAC9C9gD,GAAMqtC,EAAOpwC,EAAK,GAAKvb,EAAQqE,SAAWrE,EAAQq/D,OAClD9gD,GAAMotC,EAAOjsC,GAAM1f,EAAQoE,SAAWpE,EAAQo/D,OAC9C3gD,GAAMktC,EAAOjsC,EAAK,GAAK1f,EAAQqE,SAAWrE,EAAQq/D,OAClD7gD,GAAMmtC,EAAOmT,GAAM9+D,EAAQoE,SAAWpE,EAAQo/D,OAC9C1gD,GAAMitC,EAAOmT,EAAK,GAAK9+D,EAAQqE,SAAWrE,EAAQq/D,OACxD,GAAI/gD,GAAMI,EACR,OAEF,MAAM4gD,EAAM9zC,EAAOuzC,GACjBQ,EAAM/zC,EAAOuzC,EAAK,GAClBS,EAAMh0C,EAAOuzC,EAAK,GACdU,EAAMj0C,EAAOwzC,GACjBU,EAAMl0C,EAAOwzC,EAAK,GAClBW,EAAMn0C,EAAOwzC,EAAK,GACdY,EAAMp0C,EAAOyzC,GACjBY,EAAMr0C,EAAOyzC,EAAK,GAClBa,EAAMt0C,EAAOyzC,EAAK,GACdtR,EAAO/pE,KAAK6qC,MAAMnQ,GACtBsvC,EAAOhqE,KAAK6qC,MAAM/P,GACpB,IAAIqhD,EAAIC,EAAKC,EAAKC,EACdC,EAAIC,EAAKC,EAAKC,EAClB,IAAK,IAAI5kE,EAAIiyD,EAAMjyD,GAAKkyD,EAAMlyD,IAAK,CACjC,GAAIA,EAAI+iB,EAAI,CACV,MAAM+2C,EAAI95D,EAAI4iB,EAAK,GAAKA,EAAK5iB,IAAM4iB,EAAKG,GACxCshD,EAAK1hD,GAAMA,EAAKE,GAAMi3C,EACtBwK,EAAMV,GAAOA,EAAMG,GAAOjK,EAC1ByK,EAAMV,GAAOA,EAAMG,GAAOlK,EAC1B0K,EAAMV,GAAOA,EAAMG,GAAOnK,CAC5B,KAAO,CACL,IAAIA,EAEFA,EADE95D,EAAIgjB,EACF,EACKD,IAAOC,EACZ,GAECD,EAAK/iB,IAAM+iB,EAAKC,GAEvBqhD,EAAKxhD,GAAMA,EAAKC,GAAMg3C,EACtBwK,EAAMP,GAAOA,EAAMG,GAAOpK,EAC1ByK,EAAMP,GAAOA,EAAMG,GAAOrK,EAC1B0K,EAAMP,GAAOA,EAAMG,GAAOtK,CAC5B,CACA,IAAIA,EAEFA,EADE95D,EAAI4iB,EACF,EACK5iB,EAAIgjB,EACT,GAECJ,EAAK5iB,IAAM4iB,EAAKI,GAEvByhD,EAAK9hD,GAAMA,EAAKG,GAAMg3C,EACtB4K,EAAMd,GAAOA,EAAMM,GAAOpK,EAC1B6K,EAAMd,GAAOA,EAAMM,GAAOrK,EAC1B8K,EAAMd,GAAOA,EAAMM,GAAOtK,EAC1B,MAAM+K,EAAM38E,KAAK6qC,MAAM7qC,KAAKoN,IAAI+uE,EAAII,IAC9BK,EAAM58E,KAAK6qC,MAAM7qC,KAAKmN,IAAIgvE,EAAII,IACpC,IAAI1K,EAAIyJ,EAAUxjE,EAAU,EAAN6kE,EACtB,IAAK,IAAIx8E,EAAIw8E,EAAKx8E,GAAKy8E,EAAKz8E,IAC1ByxE,GAAKuK,EAAKh8E,IAAMg8E,EAAKI,GACjB3K,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAENx9C,EAAMy9C,KAAOuK,GAAOA,EAAMI,GAAO5K,EAAI,EACrCx9C,EAAMy9C,KAAOwK,GAAOA,EAAMI,GAAO7K,EAAI,EACrCx9C,EAAMy9C,KAAOyK,GAAOA,EAAMI,GAAO9K,EAAI,EACrCx9C,EAAMy9C,KAAO,GAEjB,CACF,CACA,SAASgL,GAAW30E,EAAMsgE,EAAQpsD,GAChC,MAAM+9D,EAAK3R,EAAOT,OACZ+U,EAAKtU,EAAO5gC,OAClB,IAAIrlC,EAAG2hC,EACP,OAAQskC,EAAOzmE,MACb,KAAKomB,EAAeE,QAClB,MAAMogD,EAAiBD,EAAOC,eACxBsU,EAAO/8E,KAAKC,MAAMk6E,EAAG//E,OAASquE,GAAkB,EAChDuU,EAAOvU,EAAiB,EAC9B,IAAKlmE,EAAI,EAAGA,EAAIw6E,EAAMx6E,IAAK,CACzB,IAAI06E,EAAI16E,EAAIkmE,EACZ,IAAK,IAAIoJ,EAAI,EAAGA,EAAImL,EAAMnL,IAAKoL,IAC7BhC,GAAa/yE,EAAMkU,EAAS+9D,EAAG8C,GAAI9C,EAAG8C,EAAI,GAAI9C,EAAG8C,EAAIxU,GAAiBqU,EAAGG,GAAIH,EAAGG,EAAI,GAAIH,EAAGG,EAAIxU,IAC/FwS,GAAa/yE,EAAMkU,EAAS+9D,EAAG8C,EAAIxU,EAAiB,GAAI0R,EAAG8C,EAAI,GAAI9C,EAAG8C,EAAIxU,GAAiBqU,EAAGG,EAAIxU,EAAiB,GAAIqU,EAAGG,EAAI,GAAIH,EAAGG,EAAIxU,GAE7I,CACA,MACF,KAAKtgD,EAAeC,UAClB,IAAK7lB,EAAI,EAAG2hC,EAAKi2C,EAAG//E,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EACvC04E,GAAa/yE,EAAMkU,EAAS+9D,EAAG53E,GAAI43E,EAAG53E,EAAI,GAAI43E,EAAG53E,EAAI,GAAIu6E,EAAGv6E,GAAIu6E,EAAGv6E,EAAI,GAAIu6E,EAAGv6E,EAAI,IAEpF,MACF,QACE,MAAM,IAAIwvB,MAAM,kBAEtB,CACA,MAAMmrD,WAA2B5E,GAC/B,WAAAh7E,CAAYo7E,GACVhlD,QACAp6B,KAAK6jF,QAAUzE,EAAG,GAClBp/E,KAAKo9C,QAAUgiC,EAAG,GAClBp/E,KAAK8jF,SAAW1E,EAAG,GACnBp/E,KAAK+jF,QAAU3E,EAAG,GAClBp/E,KAAKq/E,MAAQD,EAAG,GAChBp/E,KAAKgkF,YAAc5E,EAAG,GACtBp/E,KAAKmgC,OAAS,IAChB,CACA,iBAAA8jD,CAAkBC,EAAeryB,EAAiBovB,GAChD,MAAMkD,EAAiB,IACjBC,EAAmB,IACnBC,EAAc,EACdn9D,EAAUxgB,KAAKC,MAAM3G,KAAK+jF,QAAQ,IAClC58D,EAAUzgB,KAAKC,MAAM3G,KAAK+jF,QAAQ,IAClCO,EAAc59E,KAAKD,KAAKzG,KAAK+jF,QAAQ,IAAM78D,EAC3Cq9D,EAAe79E,KAAKD,KAAKzG,KAAK+jF,QAAQ,IAAM58D,EAC5C1K,EAAQ/V,KAAKoN,IAAIpN,KAAKD,KAAKC,KAAKm7B,IAAIyiD,EAAcJ,EAAc,GAAKC,IAAkBC,GACvF1nE,EAAShW,KAAKoN,IAAIpN,KAAKD,KAAKC,KAAKm7B,IAAI0iD,EAAeL,EAAc,GAAKC,IAAkBC,GACzFlC,EAASoC,EAAc7nE,EACvB0lE,EAASoC,EAAe7nE,EACxBoG,EAAU,CACd2rD,OAAQzuE,KAAK6jF,QACbv1C,OAAQtuC,KAAKo9C,QACbl2B,SAAUA,EACVC,SAAUA,EACV+6D,OAAQ,EAAIA,EACZC,OAAQ,EAAIA,GAERqC,EAAc/nE,EAAsB,EAAd4nE,EACtBI,EAAe/nE,EAAuB,EAAd2nE,EACxBrD,EAAYC,EAAeC,UAAU,OAAQsD,EAAaC,GAC1DtD,EAASH,EAAUl+D,QACnBlU,EAAOuyE,EAAOuD,gBAAgBjoE,EAAOC,GAC3C,GAAIm1C,EAAiB,CACnB,MAAM/2B,EAAQlsB,EAAKA,KACnB,IAAK,IAAI3F,EAAI,EAAG2hC,EAAK9P,EAAMh6B,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAC9C6xB,EAAM7xB,GAAK4oD,EAAgB,GAC3B/2B,EAAM7xB,EAAI,GAAK4oD,EAAgB,GAC/B/2B,EAAM7xB,EAAI,GAAK4oD,EAAgB,GAC/B/2B,EAAM7xB,EAAI,GAAK,GAEnB,CACA,IAAK,MAAMimE,KAAUlvE,KAAK8jF,SACxBP,GAAW30E,EAAMsgE,EAAQpsD,GAE3Bq+D,EAAOwD,aAAa/1E,EAAMy1E,EAAaA,GACvC,MAAM5hE,EAASu+D,EAAUv+D,OACzB,MAAO,CACLA,SACAyE,QAASA,EAAUm9D,EAAcnC,EACjC/6D,QAASA,EAAUk9D,EAAclC,EACjCD,SACAC,SAEJ,CACA,2BAAAlD,GACE,OAAO,CACT,CACA,UAAAC,CAAWnwC,EAAKsxC,EAAOC,EAASC,GAC9BzB,GAAiB/vC,EAAK/uC,KAAKq/E,OAC3B,MAAM1hE,EAAQ,IAAI+0B,aAAa,GAC/B,GAAI6tC,IAAa3B,GAASC,QACxBzhD,GAAK8C,8BAA8B4O,GAAoBC,GAAMpxB,QACxD,GAAI3d,KAAKmgC,OAAQ,CACtB/C,GAAK8C,8BAA8BlgC,KAAKmgC,OAAQxiB,GAChD,MAAOinE,EAAcC,GAAgBlnE,EACrCyf,GAAK8C,8BAA8BmgD,EAAMI,cAAe9iE,GACxDA,EAAM,IAAMinE,EACZjnE,EAAM,IAAMknE,CACd,MACEznD,GAAK8C,8BAA8BmgD,EAAMI,cAAe9iE,GAE1D,MAAMmnE,EAAyB9kF,KAAKikF,kBAAkBtmE,EAAO4iE,IAAa3B,GAASC,QAAU,KAAO7+E,KAAKgkF,YAAa3D,EAAMY,gBAS5H,OARIV,IAAa3B,GAASC,UACxB9vC,EAAI2yC,gBAAgBrB,EAAMI,eACtBzgF,KAAKmgC,QACP4O,EAAIxmB,aAAavoB,KAAKmgC,SAG1B4O,EAAI2qB,UAAUorB,EAAuB59D,QAAS49D,EAAuB39D,SACrE4nB,EAAIpxB,MAAMmnE,EAAuB5C,OAAQ4C,EAAuB3C,QACzDpzC,EAAIwyC,cAAcuD,EAAuBriE,OAAQ,YAC1D,EAEF,MAAMsiE,WAA4B/F,GAChC,UAAAE,GACE,MAAO,SACT,EAEF,SAAS8F,GAAkB5F,GACzB,OAAQA,EAAG,IACT,IAAK,cACH,OAAO,IAAID,GAA0BC,GACvC,IAAK,OACH,OAAO,IAAIwE,GAAmBxE,GAChC,IAAK,QACH,OAAO,IAAI2F,GAEf,MAAM,IAAItsD,MAAM,oBAAoB2mD,EAAG,KACzC,CACA,MAAM6F,GAAY,CAChBC,QAAS,EACTC,UAAW,GAEb,MAAMC,GACJv9C,wBAA0B,IAC1B,WAAA7jC,CAAYo7E,EAAIrwC,EAAKs2C,EAAuB5E,GAC1CzgF,KAAKmuC,MAAQixC,EAAG,GAChBp/E,KAAKslF,aAAelG,EAAG,GACvBp/E,KAAKmgC,OAASi/C,EAAG,GACjBp/E,KAAKqrE,KAAO+T,EAAG,GACfp/E,KAAKulF,MAAQnG,EAAG,GAChBp/E,KAAKwlF,MAAQpG,EAAG,GAChBp/E,KAAKylF,UAAYrG,EAAG,GACpBp/E,KAAK0lF,WAAatG,EAAG,GACrBp/E,KAAK+uC,IAAMA,EACX/uC,KAAKqlF,sBAAwBA,EAC7BrlF,KAAKygF,cAAgBA,CACvB,CACA,mBAAAkF,CAAoBtF,EAAOtF,GACzB,MAAM,KACJ1P,EAAI,aACJia,EAAY,UACZG,EAAS,WACTC,EAAU,MACVv3C,EAAK,sBACLk3C,GACErlF,KACJ,IAAI,MACFulF,EAAK,MACLC,GACExlF,KACJulF,EAAQ7+E,KAAKm7B,IAAI0jD,GACjBC,EAAQ9+E,KAAKm7B,IAAI2jD,GACjBptD,EAAK,eAAiBstD,GACtB,MAAMzkD,EAAKoqC,EAAK,GACdnqC,EAAKmqC,EAAK,GACVlqC,EAAKkqC,EAAK,GACVjqC,EAAKiqC,EAAK,GACN5uD,EAAQ0kB,EAAKF,EACbvkB,EAAS0kB,EAAKF,EACdvjB,EAAQ,IAAI+0B,aAAa,GAC/BtV,GAAK8C,8BAA8BlgC,KAAKmgC,OAAQxiB,GAChD,MAAOinE,EAAcC,GAAgBlnE,EACrCyf,GAAK8C,8BAA8BlgC,KAAKygF,cAAe9iE,GACvD,MAAMioE,EAAiBhB,EAAejnE,EAAM,GACtCkoE,EAAiBhB,EAAelnE,EAAM,GAC5C,IAAI4E,EAAc9F,EAChBiG,EAAehG,EACfopE,GAAqB,EACrBC,GAAmB,EACrB,MAAMC,EAAct/E,KAAKD,KAAK8+E,EAAQK,GAChCK,EAAcv/E,KAAKD,KAAK++E,EAAQK,GAChCK,EAAex/E,KAAKD,KAAKgW,EAAQmpE,GACjCO,EAAgBz/E,KAAKD,KAAKiW,EAASmpE,GACrCG,GAAeE,EACjB3jE,EAAcgjE,EAEdO,GAAqB,EAEnBG,GAAeE,EACjBzjE,EAAe8iE,EAEfO,GAAmB,EAErB,MAAMK,EAAOpmF,KAAKqmF,gBAAgB9jE,EAAaviB,KAAK+uC,IAAItsB,OAAOhG,MAAOmpE,GAChEU,EAAOtmF,KAAKqmF,gBAAgB3jE,EAAc1iB,KAAK+uC,IAAItsB,OAAO/F,OAAQmpE,GAClE7E,EAAYX,EAAMY,eAAeC,UAAU,UAAWkF,EAAKv6C,KAAMy6C,EAAKz6C,MACtEs1C,EAASH,EAAUl+D,QACnByjE,EAAWlB,EAAsBmB,qBAAqBrF,EAAQpG,GAapE,GAZAwL,EAASE,WAAapG,EAAMoG,WAC5BzmF,KAAK0mF,+BAA+BH,EAAUd,EAAWt3C,GACzDgzC,EAAOznB,WAAW0sB,EAAKzoE,MAAQsjB,GAAKqlD,EAAK3oE,MAAQujB,GACjDqlD,EAASh+D,UAAU,EAAG69D,EAAKzoE,MAAO,EAAG,EAAG2oE,EAAK3oE,MAAO,EAAG,GACvDwjE,EAAO1uD,OACP8zD,EAAShI,mBAAmB9rD,OAC5BzyB,KAAK2mF,SAASJ,EAAUtlD,EAAIC,EAAIC,EAAIC,GACpCmlD,EAAS9F,cAAgB3xC,GAAoBy3C,EAASx3C,KACtDw3C,EAASK,oBAAoBtB,GAC7BiB,EAASM,aACTN,EAAShI,mBAAmB7rD,UAC5ByuD,EAAOzuD,UACHozD,GAAsBC,EAAkB,CAC1C,MAAMvsC,EAAQwnC,EAAUv+D,OACpBqjE,IACFvjE,EAAcgjE,GAEZQ,IACFrjE,EAAe8iE,GAEjB,MAAMsB,EAAQ9mF,KAAKqmF,gBAAgB9jE,EAAaviB,KAAK+uC,IAAItsB,OAAOhG,MAAOmpE,GACjEmB,EAAQ/mF,KAAKqmF,gBAAgB3jE,EAAc1iB,KAAK+uC,IAAItsB,OAAO/F,OAAQmpE,GACnEmB,EAAQF,EAAMj7C,KACdo7C,EAAQF,EAAMl7C,KACdq7C,EAAa7G,EAAMY,eAAeC,UAAU,qBAAsB8F,EAAOC,GACzEE,EAAUD,EAAWpkE,QACrB8nB,EAAKk7C,EAAqBp/E,KAAKC,MAAM8V,EAAQ8oE,GAAS,EACtD6B,EAAKrB,EAAmBr/E,KAAKC,MAAM+V,EAAS8oE,GAAS,EAC3D,IAAK,IAAIv8E,EAAI,EAAGA,GAAK2hC,EAAI3hC,IACvB,IAAK,IAAIsvE,EAAI,EAAGA,GAAK6O,EAAI7O,IACvB4O,EAAQxtC,UAAUH,EAAOwtC,EAAQ/9E,EAAGg+E,EAAQ1O,EAAGyO,EAAOC,EAAO,EAAG,EAAGD,EAAOC,GAG9E,MAAO,CACLxkE,OAAQykE,EAAWzkE,OACnBy/D,OAAQ4E,EAAMnpE,MACdwkE,OAAQ4E,EAAMppE,MACduJ,QAAS+Z,EACT9Z,QAAS+Z,EAEb,CACA,MAAO,CACLze,OAAQu+D,EAAUv+D,OAClBy/D,OAAQkE,EAAKzoE,MACbwkE,OAAQmE,EAAK3oE,MACbuJ,QAAS+Z,EACT9Z,QAAS+Z,EAEb,CACA,eAAAmlD,CAAgB74E,EAAM65E,EAAgB1pE,GACpC,MAAMi+B,EAAUl1C,KAAKmN,IAAIuxE,GAAchB,iBAAkBiD,GACzD,IAAIx7C,EAAOnlC,KAAKD,KAAK+G,EAAOmQ,GAM5B,OALIkuB,GAAQ+P,EACV/P,EAAO+P,EAEPj+B,EAAQkuB,EAAOr+B,EAEV,CACLmQ,QACAkuB,OAEJ,CACA,QAAA86C,CAASJ,EAAUtlD,EAAIC,EAAIC,EAAIC,GAC7B,MAAMkmD,EAAYnmD,EAAKF,EACjBsmD,EAAanmD,EAAKF,EACxBqlD,EAASx3C,IAAIhQ,KAAKkC,EAAIC,EAAIomD,EAAWC,GACrCnqD,GAAK0B,wBAAwB,CAACmC,EAAIC,EAAIC,EAAIC,GAAK0N,GAAoBy3C,EAASx3C,KAAMw3C,EAASnzE,QAAQwqB,QACnG2oD,EAAS5yD,OACT4yD,EAAS7yD,SACX,CACA,8BAAAgzD,CAA+BH,EAAUd,EAAWt3C,GAClD,MAAMrrB,EAAUyjE,EAASx3C,IACvB37B,EAAUmzE,EAASnzE,QACrB,OAAQqyE,GACN,KAAKR,GAAUC,QACb,MAAM,UACJ5D,EAAS,YACTkG,GACExnF,KAAK+uC,IACTjsB,EAAQw+D,UAAYluE,EAAQq0E,UAAYnG,EACxCx+D,EAAQ0kE,YAAcp0E,EAAQs0E,YAAcF,EAC5C,MACF,KAAKvC,GAAUE,UACbriE,EAAQw+D,UAAYx+D,EAAQ0kE,YAAcr5C,EAC1C/6B,EAAQq0E,UAAYr0E,EAAQs0E,YAAcv5C,EAC1C,MACF,QACE,MAAM,IAAIxT,GAAY,2BAA2B8qD,KAEvD,CACA,2BAAAxG,GACE,OAAO,CACT,CACA,UAAAC,CAAWnwC,EAAKsxC,EAAOC,EAASC,EAAUxF,GACxC,IAAI56C,EAASmgD,EACTC,IAAa3B,GAASC,UACxB1+C,EAAS/C,GAAK7U,UAAU4X,EAAQkgD,EAAMI,eAClCzgF,KAAKmgC,SACPA,EAAS/C,GAAK7U,UAAU4X,EAAQngC,KAAKmgC,UAGzC,MAAM2kD,EAAyB9kF,KAAK2lF,oBAAoBtF,EAAOtF,GAC/D,IAAIyG,EAAY,IAAIC,UAAUthD,GAC9BqhD,EAAYA,EAAU9nB,UAAUorB,EAAuB59D,QAAS49D,EAAuB39D,SACvFq6D,EAAYA,EAAU7jE,MAAM,EAAImnE,EAAuB5C,OAAQ,EAAI4C,EAAuB3C,QAC1F,MAAM3B,EAAUzxC,EAAIwyC,cAAcuD,EAAuBriE,OAAQ,UAEjE,OADA+9D,EAAQkB,aAAaF,GACdhB,CACT,EAcF,SAASmH,IAA2B,IAClCz7E,EAAG,OACH07E,EAAS,EAAC,KACV1kD,EAAI,MACJzmB,EAAK,OACLC,EAAM,cACNmrE,EAAgB,WAAU,cAC1BC,GAAgB,IAEhB,MAAMnd,EAAQ5uC,GAAiBL,eAAiB,WAAa,KACtDqsD,EAAaC,GAAcF,EAAgB,CAACD,EAAeld,GAAS,CAACA,EAAOkd,GAC7EI,EAAgBxrE,GAAS,EACzByrE,EAAyB,EAARzrE,EACjB0rE,EAAYj8E,EAAIpL,OACtBoiC,EAAO,IAAIrH,YAAYqH,EAAK75B,QAC5B,IAAI++E,EAAU,EACd,IAAK,IAAIn/E,EAAI,EAAGA,EAAIyT,EAAQzT,IAAK,CAC/B,IAAK,MAAM4K,EAAM+zE,EAASK,EAAeL,EAAS/zE,EAAK+zE,IAAU,CAC/D,MAAMS,EAAOT,EAASO,EAAYj8E,EAAI07E,GAAU,IAChD1kD,EAAKklD,KAAoB,IAAPC,EAAoBL,EAAaD,EACnD7kD,EAAKklD,KAAoB,GAAPC,EAAmBL,EAAaD,EAClD7kD,EAAKklD,KAAoB,GAAPC,EAAkBL,EAAaD,EACjD7kD,EAAKklD,KAAoB,GAAPC,EAAiBL,EAAaD,EAChD7kD,EAAKklD,KAAoB,EAAPC,EAAgBL,EAAaD,EAC/C7kD,EAAKklD,KAAoB,EAAPC,EAAeL,EAAaD,EAC9C7kD,EAAKklD,KAAoB,EAAPC,EAAcL,EAAaD,EAC7C7kD,EAAKklD,KAAoB,EAAPC,EAAaL,EAAaD,CAC9C,CACA,GAAuB,IAAnBG,EACF,SAEF,MAAMG,EAAOT,EAASO,EAAYj8E,EAAI07E,KAAY,IAClD,IAAK,IAAIrP,EAAI,EAAGA,EAAI2P,EAAgB3P,IAClCr1C,EAAKklD,KAAaC,EAAO,GAAK,EAAI9P,EAAIyP,EAAaD,CAEvD,CACA,MAAO,CACLH,SACAQ,UAEJ,CA+DA,MAAME,GAAgB,GAChBC,GAAgB,IAChBC,GAAiB,GACjBC,GAAkB,GAClBC,GAAoB,GACpBC,GAAe,IAAIlH,UACnBmH,GAAK,IAAIl2C,aAAa,GACtBm2C,GAAe,IAAIn2C,aAAa,CAACrC,IAAUA,KAAWA,KAAWA,MACvE,SAASy4C,GAAwB/5C,EAAKg6C,GACpC,GAAIh6C,EAAIi6C,iBACN,MAAM,IAAIvwD,MAAM,6CAElBsW,EAAIk6C,eAAiBl6C,EAAItc,KACzBsc,EAAIm6C,kBAAoBn6C,EAAIrc,QAC5Bqc,EAAIo6C,iBAAmBp6C,EAAI+xB,OAC3B/xB,EAAIq6C,gBAAkBr6C,EAAIpxB,MAC1BoxB,EAAIs6C,oBAAsBt6C,EAAI2qB,UAC9B3qB,EAAIu6C,oBAAsBv6C,EAAIxmB,UAC9BwmB,EAAIw6C,uBAAyBx6C,EAAI2yC,aACjC3yC,EAAIy6C,yBAA2Bz6C,EAAI06C,eACnC16C,EAAI26C,eAAiB36C,EAAIpb,KACzBob,EAAI46C,iBAAmB56C,EAAIpc,OAC3Boc,EAAI66C,iBAAmB76C,EAAInc,OAC3Bmc,EAAI86C,wBAA0B96C,EAAI6E,cAClC7E,EAAI+6C,eAAiB/6C,EAAIhQ,KACzBgQ,EAAIg7C,oBAAsBh7C,EAAI/b,UAC9B+b,EAAIi7C,oBAAsBj7C,EAAIsyC,UAC9BtyC,EAAIi6C,iBAAmB,KACrBj6C,EAAItc,KAAOsc,EAAIk6C,eACfl6C,EAAIrc,QAAUqc,EAAIm6C,kBAClBn6C,EAAI+xB,OAAS/xB,EAAIo6C,iBACjBp6C,EAAIpxB,MAAQoxB,EAAIq6C,gBAChBr6C,EAAI2qB,UAAY3qB,EAAIs6C,oBACpBt6C,EAAIxmB,UAAYwmB,EAAIu6C,oBACpBv6C,EAAI2yC,aAAe3yC,EAAIw6C,uBACvBx6C,EAAI06C,eAAiB16C,EAAIy6C,yBACzBz6C,EAAIpb,KAAOob,EAAI26C,eACf36C,EAAIpc,OAASoc,EAAI46C,iBACjB56C,EAAInc,OAASmc,EAAI66C,iBACjB76C,EAAI6E,cAAgB7E,EAAI86C,wBACxB96C,EAAIhQ,KAAOgQ,EAAI+6C,eACf/6C,EAAI/b,UAAY+b,EAAIg7C,oBACpBh7C,EAAIsyC,UAAYtyC,EAAIi7C,2BACbj7C,EAAIi6C,kBAEbj6C,EAAItc,KAAO,WACTs2D,EAAQt2D,OACRzyB,KAAKipF,gBACP,EACAl6C,EAAIrc,QAAU,WACZq2D,EAAQr2D,UACR1yB,KAAKkpF,mBACP,EACAn6C,EAAI2qB,UAAY,SAAU7yD,EAAG2X,GAC3BuqE,EAAQrvB,UAAU7yD,EAAG2X,GACrBxe,KAAKqpF,oBAAoBxiF,EAAG2X,EAC9B,EACAuwB,EAAIpxB,MAAQ,SAAU9W,EAAG2X,GACvBuqE,EAAQprE,MAAM9W,EAAG2X,GACjBxe,KAAKopF,gBAAgBviF,EAAG2X,EAC1B,EACAuwB,EAAIxmB,UAAY,SAAUvT,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,GACvCy+E,EAAQxgE,UAAUvT,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,GACjCtK,KAAKspF,oBAAoBt0E,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,EAC1C,EACAykC,EAAI2yC,aAAe,SAAU1sE,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,GAC1Cy+E,EAAQrH,aAAa1sE,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,GACpCtK,KAAKupF,uBAAuBv0E,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,EAC7C,EACAykC,EAAI06C,eAAiB,WACnBV,EAAQU,iBACRzpF,KAAKwpF,0BACP,EACAz6C,EAAI+xB,OAAS,SAAUxG,GACrByuB,EAAQjoB,OAAOxG,GACft6D,KAAKmpF,iBAAiB7uB,EACxB,EACAvrB,EAAIpb,KAAO,SAAU+yC,GACnBqiB,EAAQp1D,KAAK+yC,GACb1mE,KAAK0pF,eAAehjB,EACtB,EACA33B,EAAIpc,OAAS,SAAU9rB,EAAG2X,GACxBuqE,EAAQp2D,OAAO9rB,EAAG2X,GAClBxe,KAAK2pF,iBAAiB9iF,EAAG2X,EAC3B,EACAuwB,EAAInc,OAAS,SAAU/rB,EAAG2X,GACxBuqE,EAAQn2D,OAAO/rB,EAAG2X,GAClBxe,KAAK4pF,iBAAiB/iF,EAAG2X,EAC3B,EACAuwB,EAAI6E,cAAgB,SAAUq2C,EAAMC,EAAMC,EAAMC,EAAMvjF,EAAG2X,GACvDuqE,EAAQn1C,cAAcq2C,EAAMC,EAAMC,EAAMC,EAAMvjF,EAAG2X,GACjDxe,KAAK6pF,wBAAwBI,EAAMC,EAAMC,EAAMC,EAAMvjF,EAAG2X,EAC1D,EACAuwB,EAAIhQ,KAAO,SAAUl4B,EAAG2X,EAAG/B,EAAOC,GAChCqsE,EAAQhqD,KAAKl4B,EAAG2X,EAAG/B,EAAOC,GAC1B1c,KAAK8pF,eAAejjF,EAAG2X,EAAG/B,EAAOC,EACnC,EACAqyB,EAAI/b,UAAY,WACd+1D,EAAQ/1D,YACRhzB,KAAK+pF,qBACP,EACAh7C,EAAIsyC,UAAY,WACd0H,EAAQ1H,YACRrhF,KAAKgqF,qBACP,CACF,CACA,MAAMK,GACJ,WAAArmF,CAAYsmF,GACVtqF,KAAKsqF,cAAgBA,EACrBtqF,KAAKuqF,MAAQtnF,OAAOwJ,OAAO,KAC7B,CACA,SAAAy0E,CAAU3xE,EAAIkN,EAAOC,GACnB,IAAI8tE,EAQJ,YAPuBrmF,IAAnBnE,KAAKuqF,MAAMh7E,IACbi7E,EAAcxqF,KAAKuqF,MAAMh7E,GACzBvP,KAAKsqF,cAAc/U,MAAMiV,EAAa/tE,EAAOC,KAE7C8tE,EAAcxqF,KAAKsqF,cAAc79E,OAAOgQ,EAAOC,GAC/C1c,KAAKuqF,MAAMh7E,GAAMi7E,GAEZA,CACT,CACA,OAAOj7E,UACEvP,KAAKuqF,MAAMh7E,EACpB,CACA,KAAA2xC,GACE,IAAK,MAAM3xC,KAAMvP,KAAKuqF,MAAO,CAC3B,MAAMC,EAAcxqF,KAAKuqF,MAAMh7E,GAC/BvP,KAAKsqF,cAAcrzC,QAAQuzC,UACpBxqF,KAAKuqF,MAAMh7E,EACpB,CACF,EAEF,SAASk7E,GAAyB17C,EAAK27C,EAAQC,EAAMC,EAAMC,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,GAC1F,MAAOl2E,EAAGC,EAAGyoB,EAAG5hB,EAAGuyC,EAAIC,GAAMxf,GAAoBC,GACjD,GAAU,IAAN95B,GAAiB,IAANyoB,EAAS,CACtB,MAAMytD,EAAMJ,EAAQ/1E,EAAIq5C,EAClB+8B,EAAO1kF,KAAK6qC,MAAM45C,GAClBE,EAAML,EAAQlvE,EAAIwyC,EAClBg9B,EAAO5kF,KAAK6qC,MAAM85C,GAClBE,GAAOR,EAAQE,GAASj2E,EAAIq5C,EAC5Bm9B,EAAS9kF,KAAKm7B,IAAIn7B,KAAK6qC,MAAMg6C,GAAOH,IAAS,EAC7CK,GAAOT,EAAQE,GAASpvE,EAAIwyC,EAC5Bo9B,EAAUhlF,KAAKm7B,IAAIn7B,KAAK6qC,MAAMk6C,GAAOH,IAAS,EAIpD,OAHAv8C,EAAI2yC,aAAah7E,KAAKilF,KAAK32E,GAAI,EAAG,EAAGtO,KAAKilF,KAAK7vE,GAAIsvE,EAAME,GACzDv8C,EAAI4K,UAAU+wC,EAAQC,EAAMC,EAAMC,EAAMC,EAAM,EAAG,EAAGU,EAAQE,GAC5D38C,EAAI2yC,aAAa1sE,EAAGC,EAAGyoB,EAAG5hB,EAAGuyC,EAAIC,GAC1B,CAACk9B,EAAQE,EAClB,CACA,GAAU,IAAN12E,GAAiB,IAAN8G,EAAS,CACtB,MAAMqvE,EAAMH,EAAQttD,EAAI2wB,EAClB+8B,EAAO1kF,KAAK6qC,MAAM45C,GAClBE,EAAMN,EAAQ91E,EAAIq5C,EAClBg9B,EAAO5kF,KAAK6qC,MAAM85C,GAClBE,GAAOP,EAAQE,GAASxtD,EAAI2wB,EAC5Bm9B,EAAS9kF,KAAKm7B,IAAIn7B,KAAK6qC,MAAMg6C,GAAOH,IAAS,EAC7CK,GAAOV,EAAQE,GAASh2E,EAAIq5C,EAC5Bo9B,EAAUhlF,KAAKm7B,IAAIn7B,KAAK6qC,MAAMk6C,GAAOH,IAAS,EAIpD,OAHAv8C,EAAI2yC,aAAa,EAAGh7E,KAAKilF,KAAK12E,GAAIvO,KAAKilF,KAAKjuD,GAAI,EAAG0tD,EAAME,GACzDv8C,EAAI4K,UAAU+wC,EAAQC,EAAMC,EAAMC,EAAMC,EAAM,EAAG,EAAGY,EAASF,GAC7Dz8C,EAAI2yC,aAAa1sE,EAAGC,EAAGyoB,EAAG5hB,EAAGuyC,EAAIC,GAC1B,CAACo9B,EAASF,EACnB,CACAz8C,EAAI4K,UAAU+wC,EAAQC,EAAMC,EAAMC,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,GACnE,MAAMhJ,EAASx7E,KAAK+uD,MAAMzgD,EAAGC,GACvBktE,EAASz7E,KAAK+uD,MAAM/3B,EAAG5hB,GAC7B,MAAO,CAAComE,EAAS+I,EAAO9I,EAAS+I,EACnC,CACA,MAAMU,GACJC,cAAe,EACfC,SAAW,EACXC,cAAgB,EAChBC,WAAa,KACbC,gBAAkB,EAClB3gB,WAAa1/C,EACbsgE,QAAU,EACVrlF,EAAI,EACJ2X,EAAI,EACJ2tE,MAAQ,EACRC,MAAQ,EACRC,YAAc,EACdC,YAAc,EACdC,WAAa,EACbC,kBAAoBv9D,EAAkBC,KACtCu9D,SAAW,EACXhF,UAAY,UACZC,YAAc,UACdgF,aAAc,EACdC,eAAgB,EAChBC,UAAY,EACZC,YAAc,EACdC,UAAY,EACZC,YAAc,KACdC,aAAe,OACf,WAAAhpF,CAAYyY,EAAOC,EAAQuwE,GACzBA,IAAUjtF,MACVA,KAAKq8E,QAAU,IAAI3pC,aAAa,CAAC,EAAG,EAAGj2B,EAAOC,IAC9C1c,KAAK49B,OAASirD,GAAa1lF,OAC7B,CACA,KAAAoG,GACE,MAAMA,EAAQtG,OAAOwJ,OAAOzM,MAG5B,OAFAuJ,EAAM8yE,QAAUr8E,KAAKq8E,QAAQl5E,QAC7BoG,EAAMq0B,OAAS59B,KAAK49B,OAAOz6B,QACpBoG,CACT,CACA,kBAAA2jF,CAAmB3M,EAAW3B,GAAS1vD,KAAM3G,EAAY,MACvD,MAAMovB,EAAM33C,KAAK49B,OAAOz6B,QACxB,GAAIo9E,IAAa3B,GAASzvD,OAAQ,CAC3B5G,GACHiQ,EAAY,+CAEd4E,GAAK8C,8BAA8B3X,EAAWqgE,IAC9C,MAAMuE,EAAavE,GAAG,GAAK5oF,KAAK8sF,UAAY,EACtCM,EAAaxE,GAAG,GAAK5oF,KAAK8sF,UAAY,EAC5Cn1C,EAAI,IAAMw1C,EACVx1C,EAAI,IAAMy1C,EACVz1C,EAAI,IAAMw1C,EACVx1C,EAAI,IAAMy1C,CACZ,CACA,OAAOz1C,CACT,CACA,kBAAA01C,GACE,MAAM7sD,EAAYpD,GAAKoD,UAAUxgC,KAAKq8E,QAASr8E,KAAKktF,sBACpDltF,KAAKstF,uBAAuB9sD,GAAa,CAAC,EAAG,EAAG,EAAG,GACrD,CACA,WAAA+sD,GACE,OAAOvtF,KAAK49B,OAAO,KAAOyS,GAC5B,CACA,sBAAAi9C,CAAuB31C,GACrB33C,KAAKq8E,QAAQz0E,IAAI+vC,EAAK,GACtB33C,KAAK49B,OAAOh2B,IAAIihF,GAAc,EAChC,CACA,yBAAA9H,CAA0BR,EAAW3B,GAAS1vD,KAAM3G,EAAY,MAC9D,OAAO6U,GAAKoD,UAAUxgC,KAAKq8E,QAASr8E,KAAKktF,mBAAmB3M,EAAUh4D,GACxE,EAEF,SAASilE,GAAmBz+C,EAAK0+C,GAC/B,GAAIA,aAAmBC,UAErB,YADA3+C,EAAI41C,aAAa8I,EAAS,EAAG,GAG/B,MAAM/wE,EAAS+wE,EAAQ/wE,OACrBD,EAAQgxE,EAAQhxE,MACZkxE,EAAqBjxE,EAASgsE,GAC9BkF,GAAclxE,EAASixE,GAAsBjF,GAC7CmF,EAAqC,IAAvBF,EAA2BC,EAAaA,EAAa,EACnEE,EAAe/+C,EAAI21C,gBAAgBjoE,EAAOisE,IAChD,IACEN,EADER,EAAS,EAEb,MAAM17E,EAAMuhF,EAAQ7+E,KACds0B,EAAO4qD,EAAal/E,KAC1B,IAAI3F,EAAGsvE,EAAGwV,EAAiBC,EAC3B,GAAIP,EAAQzkF,OAAS4mB,EAAeC,eAAgB,CAClD,MAAMs4D,EAAYj8E,EAAIzC,WAChBwkF,EAAS,IAAIpyD,YAAYqH,EAAK75B,OAAQ,EAAG65B,EAAKz5B,YAAc,GAC5DykF,EAAmBD,EAAOntF,OAC1BqtF,EAAc1xE,EAAQ,GAAK,EAC3B60B,EAAQ,WACRq5B,EAAQ5uC,GAAiBL,eAAiB,WAAa,IAC7D,IAAKzyB,EAAI,EAAGA,EAAI4kF,EAAa5kF,IAAK,CAGhC,IAFA8kF,EAAkB9kF,EAAI2kF,EAAalF,GAAoBiF,EACvDvF,EAAU,EACL7P,EAAI,EAAGA,EAAIwV,EAAiBxV,IAAK,CACpC,MAAM6V,EAAUjG,EAAYP,EAC5B,IAAItP,EAAI,EACR,MAAM+V,EAAOD,EAAUD,EAAc1xE,EAAkB,EAAV2xE,EAAc,EACrDE,GAAsB,EAAPD,EACrB,IAAIE,EAAO,EACPC,EAAU,EACd,KAAOlW,EAAIgW,EAAchW,GAAK,EAC5BkW,EAAUtiF,EAAI07E,KACdqG,EAAO7F,KAAuB,IAAVoG,EAAgBl9C,EAAQq5B,EAC5CsjB,EAAO7F,KAAuB,GAAVoG,EAAel9C,EAAQq5B,EAC3CsjB,EAAO7F,KAAuB,GAAVoG,EAAel9C,EAAQq5B,EAC3CsjB,EAAO7F,KAAuB,GAAVoG,EAAel9C,EAAQq5B,EAC3CsjB,EAAO7F,KAAuB,EAAVoG,EAAcl9C,EAAQq5B,EAC1CsjB,EAAO7F,KAAuB,EAAVoG,EAAcl9C,EAAQq5B,EAC1CsjB,EAAO7F,KAAuB,EAAVoG,EAAcl9C,EAAQq5B,EAC1CsjB,EAAO7F,KAAuB,EAAVoG,EAAcl9C,EAAQq5B,EAE5C,KAAO2N,EAAI+V,EAAM/V,IACF,IAATiW,IACFC,EAAUtiF,EAAI07E,KACd2G,EAAO,KAETN,EAAO7F,KAAaoG,EAAUD,EAAOj9C,EAAQq5B,EAC7C4jB,IAAS,CAEb,CACA,MAAOnG,EAAU8F,EACfD,EAAO7F,KAAa,EAEtBr5C,EAAI41C,aAAamJ,EAAc,EAAG7kF,EAAIy/E,GACxC,CACF,MAAO,GAAI+E,EAAQzkF,OAAS4mB,EAAeG,WAAY,CAGrD,IAFAwoD,EAAI,EACJyV,EAAmBvxE,EAAQisE,GAAoB,EAC1Cz/E,EAAI,EAAGA,EAAI2kF,EAAY3kF,IAC1Bi6B,EAAKt7B,IAAIsE,EAAIkvB,SAASwsD,EAAQA,EAASoG,IACvCpG,GAAUoG,EACVj/C,EAAI41C,aAAamJ,EAAc,EAAGvV,GAClCA,GAAKmQ,GAEHz/E,EAAI4kF,IACNG,EAAmBvxE,EAAQkxE,EAAqB,EAChDzqD,EAAKt7B,IAAIsE,EAAIkvB,SAASwsD,EAAQA,EAASoG,IACvCj/C,EAAI41C,aAAamJ,EAAc,EAAGvV,GAEtC,KAAO,IAAIkV,EAAQzkF,OAAS4mB,EAAeE,UAkBzC,MAAM,IAAI2I,MAAM,mBAAmBg1D,EAAQzkF,QAf3C,IAFA+kF,EAAkBrF,GAClBsF,EAAmBvxE,EAAQsxE,EACtB9kF,EAAI,EAAGA,EAAI4kF,EAAa5kF,IAAK,CAMhC,IALIA,GAAK2kF,IACPG,EAAkBJ,EAClBK,EAAmBvxE,EAAQsxE,GAE7B3F,EAAU,EACL7P,EAAIyV,EAAkBzV,KACzBr1C,EAAKklD,KAAal8E,EAAI07E,KACtB1kD,EAAKklD,KAAal8E,EAAI07E,KACtB1kD,EAAKklD,KAAal8E,EAAI07E,KACtB1kD,EAAKklD,KAAa,IAEpBr5C,EAAI41C,aAAamJ,EAAc,EAAG7kF,EAAIy/E,GACxC,CAGF,CACF,CACA,SAAS+F,GAAmB1/C,EAAK0+C,GAC/B,GAAIA,EAAQp2E,OAEV,YADA03B,EAAI4K,UAAU8zC,EAAQp2E,OAAQ,EAAG,GAGnC,MAAMqF,EAAS+wE,EAAQ/wE,OACrBD,EAAQgxE,EAAQhxE,MACZkxE,EAAqBjxE,EAASgsE,GAC9BkF,GAAclxE,EAASixE,GAAsBjF,GAC7CmF,EAAqC,IAAvBF,EAA2BC,EAAaA,EAAa,EACnEE,EAAe/+C,EAAI21C,gBAAgBjoE,EAAOisE,IAChD,IAAId,EAAS,EACb,MAAM17E,EAAMuhF,EAAQ7+E,KACds0B,EAAO4qD,EAAal/E,KAC1B,IAAK,IAAI3F,EAAI,EAAGA,EAAI4kF,EAAa5kF,IAAK,CACpC,MAAM8kF,EAAkB9kF,EAAI2kF,EAAalF,GAAoBiF,IAE3D/F,UACED,GAA2B,CAC7Bz7E,MACA07E,SACA1kD,OACAzmB,QACAC,OAAQqxE,EACRlG,cAAe,KAEjB94C,EAAI41C,aAAamJ,EAAc,EAAG7kF,EAAIy/E,GACxC,CACF,CACA,SAASgG,GAAaC,EAAW5F,GAC/B,MAAM6F,EAAa,CAAC,cAAe,YAAa,WAAY,cAAe,YAAa,UAAW,WAAY,aAAc,2BAA4B,OAAQ,UACjK,IAAK,MAAMC,KAAYD,OACOzqF,IAAxBwqF,EAAUE,KACZ9F,EAAQ8F,GAAYF,EAAUE,SAGJ1qF,IAA1BwqF,EAAUG,cACZ/F,EAAQ+F,YAAYH,EAAUI,eAC9BhG,EAAQiG,eAAiBL,EAAUK,eAEvC,CACA,SAASC,GAAkBlgD,GACzBA,EAAIy4C,YAAcz4C,EAAIuyC,UAAY,UAClCvyC,EAAImgD,SAAW,UACfngD,EAAIogD,YAAc,EAClBpgD,EAAI+9C,UAAY,EAChB/9C,EAAIqgD,QAAU,OACdrgD,EAAIsgD,SAAW,QACftgD,EAAIugD,WAAa,GACjBvgD,EAAIwgD,yBAA2B,cAC/BxgD,EAAI04B,KAAO,uBACatjE,IAApB4qC,EAAI+/C,cACN//C,EAAI+/C,YAAY,IAChB//C,EAAIigD,eAAiB,GAEvB,MAAM,OACJniF,GACEkiC,EACW,SAAXliC,GAAgC,KAAXA,IACvBkiC,EAAIliC,OAAS,OAEjB,CACA,SAAS2iF,GAAyBjnE,EAAWknE,GAC3C,GAAIA,EACF,OAAO,EAETryD,GAAK8C,8BAA8B3X,EAAWqgE,IAC9C,MAAM8G,EAAchpF,KAAKipF,OAAOjgD,GAAYC,WAAa/H,GAAcgZ,kBACvE,OAAOgoC,GAAG,IAAM8G,GAAe9G,GAAG,IAAM8G,CAC1C,CACA,MAAME,GAAkB,CAAC,OAAQ,QAAS,UACpCC,GAAmB,CAAC,QAAS,QAAS,SACtCC,GAAc,CAAC,EACfC,GAAU,CAAC,EACjB,MAAMC,GACJ,WAAAhsF,CAAYisF,EAAWC,EAAY5lB,EAAMggB,EAAe7pC,GAAe,sBACrE0vC,EAAqB,mBACrBC,EAAqB,MACpBC,EAAqB7wC,EAAY++B,GAClCv+E,KAAK+uC,IAAMkhD,EACXjwF,KAAKoT,QAAU,IAAIw4E,GAAiB5rF,KAAK+uC,IAAItsB,OAAOhG,MAAOzc,KAAK+uC,IAAItsB,OAAO/F,QAC3E1c,KAAKswF,WAAa,GAClBtwF,KAAKuwF,YAAc,KACnBvwF,KAAKwwF,eAAgB,EACrBxwF,KAAK45B,IAAM,KACX55B,KAAKywF,MAAQ,KACbzwF,KAAKkwF,WAAaA,EAClBlwF,KAAKsqE,KAAOA,EACZtqE,KAAKsqF,cAAgBA,EACrBtqF,KAAKygD,cAAgBA,EACrBzgD,KAAK0wF,WAAa,GAClB1wF,KAAKygF,cAAgB,KACrBzgF,KAAK2wF,mBAAqB,GAC1B3wF,KAAKymF,WAAa,EAClBzmF,KAAK4wF,WAAa,GAClB5wF,KAAK6wF,aAAe,EACpB7wF,KAAK8wF,UAAY,KACjB9wF,KAAK+wF,aAAe,KACpB/wF,KAAKgxF,gBAAiB,EACtBhxF,KAAKowF,mBAAqBA,GAAsB,GAChDpwF,KAAKmwF,sBAAwBA,EAC7BnwF,KAAKihF,eAAiB,IAAIoJ,GAAerqF,KAAKsqF,eAC9CtqF,KAAKixF,eAAiB,IAAI3rF,IAC1BtF,KAAKqwF,oBAAsBA,EAC3BrwF,KAAKkxF,cAAgB,EACrBlxF,KAAKmxF,aAAe,EACpBnxF,KAAKoxF,aAAe,EACpBpxF,KAAKw/C,WAAaA,EAClBx/C,KAAKqxF,wBAA0B,EAAE,EAAG,GACpCrxF,KAAKsxF,2BAA6B,KAClCtxF,KAAKuxF,kBAAoB,IAAIjsF,IAC7BtF,KAAKu+E,kBAAoBA,GAAqB,IAChD,CACA,SAAAiT,CAAUzW,EAAOnsE,EAAM6iF,EAAW,MAChC,MAAoB,kBAAT7iF,GACT5O,KAAKu+E,mBAAmBf,sBAAsBzC,EAAOnsE,GAC9CA,EAAKsqB,WAAW,MAAQl5B,KAAKkwF,WAAWrtF,IAAI+L,GAAQ5O,KAAKsqE,KAAKznE,IAAI+L,IAEpE6iF,CACT,CACA,YAAAC,EAAa,UACXnpE,EAAS,SACTvF,EAAQ,aACR2uE,GAAe,EAAK,WACpB/vC,EAAa,OAEb,MAAMnlC,EAAQzc,KAAK+uC,IAAItsB,OAAOhG,MACxBC,EAAS1c,KAAK+uC,IAAItsB,OAAO/F,OACzBk1E,EAAiB5xF,KAAK+uC,IAAIuyC,UAIhC,GAHAthF,KAAK+uC,IAAIuyC,UAAY1/B,GAAc,UACnC5hD,KAAK+uC,IAAI8iD,SAAS,EAAG,EAAGp1E,EAAOC,GAC/B1c,KAAK+uC,IAAIuyC,UAAYsQ,EACjBD,EAAc,CAChB,MAAMG,EAAoB9xF,KAAKihF,eAAeC,UAAU,cAAezkE,EAAOC,GAC9E1c,KAAK+xF,aAAe/xF,KAAK+uC,IACzB/uC,KAAK8xF,kBAAoBA,EAAkBrvE,OAC3CziB,KAAK+uC,IAAM+iD,EAAkBhvE,QAC7B9iB,KAAK+uC,IAAItc,OACTzyB,KAAK+uC,IAAIxmB,aAAaumB,GAAoB9uC,KAAK+xF,cACjD,CACA/xF,KAAK+uC,IAAItc,OACTw8D,GAAkBjvF,KAAK+uC,KACnBxmB,IACFvoB,KAAK+uC,IAAIxmB,aAAaA,GACtBvoB,KAAKmxF,aAAe5oE,EAAU,GAC9BvoB,KAAKoxF,aAAe7oE,EAAU,IAEhCvoB,KAAK+uC,IAAIxmB,aAAavF,EAASuF,WAC/BvoB,KAAKkxF,cAAgBluE,EAASrF,MAC9B3d,KAAKygF,cAAgB3xC,GAAoB9uC,KAAK+uC,IAChD,CACA,mBAAA63C,CAAoBtB,EAAc0M,EAAmBC,EAAkBC,EAASC,GAC9E,MAAMC,EAAY9M,EAAa8M,UACzBC,EAAU/M,EAAa+M,QAC7B,IAAIppF,EAAI+oF,GAAqB,EAC7B,MAAMM,EAAeF,EAAUtxF,OAC/B,GAAIwxF,IAAiBrpF,EACnB,OAAOA,EAET,MAAMspF,EAAkBD,EAAerpF,EAAIw/E,IAA+C,oBAArBwJ,EAC/DO,EAAUD,EAAkBjmD,KAAKC,MAAQi8C,GAAiB,EAChE,IAAIiK,EAAQ,EACZ,MAAMvC,EAAalwF,KAAKkwF,WAClB5lB,EAAOtqE,KAAKsqE,KAClB,IAAIooB,EAAMC,EACV,MAAO,EAAM,CACX,QAAgBxuF,IAAZ+tF,GAAyBjpF,IAAMipF,EAAQU,eAEzC,OADAV,EAAQW,QAAQ5pF,EAAGgpF,GACZhpF,EAET,IAAKkpF,GAAoBA,EAAiBlpF,GAGxC,GAFAypF,EAAOL,EAAQppF,GACf0pF,EAASP,EAAUnpF,IAAM,KACrBypF,IAAS3gE,EAAIC,WACA,OAAX2gE,EACF3yF,KAAK0yF,GAAMzpF,GAEXjJ,KAAK0yF,GAAMzpF,KAAM0pF,QAGnB,IAAK,MAAMG,KAAYH,EAAQ,CAC7B3yF,KAAKu+E,mBAAmB5C,gBAAgBmX,EAAU7pF,GAClD,MAAM8pF,EAAWD,EAAS55D,WAAW,MAAQg3D,EAAa5lB,EAC1D,IAAKyoB,EAASlrF,IAAIirF,GAEhB,OADAC,EAASlwF,IAAIiwF,EAAUb,GAChBhpF,CAEX,CAIJ,GADAA,IACIA,IAAMqpF,EACR,OAAOrpF,EAET,GAAIspF,KAAqBE,EAAQhK,GAAiB,CAChD,GAAIn8C,KAAKC,MAAQimD,EAEf,OADAP,IACOhpF,EAETwpF,EAAQ,CACV,CACF,CACF,CACA,MACE,MAAOzyF,KAAKswF,WAAWxvF,QAAUd,KAAKgzF,YACpChzF,KAAK0yB,UAEP1yB,KAAKoT,QAAQ25E,YAAc,KAC3B/sF,KAAK+uC,IAAIrc,UACL1yB,KAAK8xF,oBACP9xF,KAAK+uC,IAAM/uC,KAAK+xF,aAChB/xF,KAAK+uC,IAAItc,OACTzyB,KAAK+uC,IAAI2yC,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACrC1hF,KAAK+uC,IAAI4K,UAAU35C,KAAK8xF,kBAAmB,EAAG,GAC9C9xF,KAAK+uC,IAAIrc,UACT1yB,KAAK8xF,kBAAoB,KAE7B,CACA,UAAAjL,GACE7mF,MAAK,KACLA,KAAKihF,eAAe//B,QACpBlhD,KAAKixF,eAAe/vC,QACpB,IAAK,MAAMqpC,KAASvqF,KAAKuxF,kBAAkBzlD,SAAU,CACnD,IAAK,MAAMrpB,KAAU8nE,EAAMz+C,SACQ,qBAAtBmnD,mBAAqCxwE,aAAkBwwE,oBAChExwE,EAAOhG,MAAQgG,EAAO/F,OAAS,GAGnC6tE,EAAMrpC,OACR,CACAlhD,KAAKuxF,kBAAkBrwC,QACvBlhD,MAAK,IACP,CACA,MACE,GAAIA,KAAKw/C,WAAY,CACnB,MAAM0zC,EAAclzF,KAAKygD,cAAciB,aAAa1hD,KAAKw/C,WAAWmC,WAAY3hD,KAAKw/C,WAAWoC,YAChG,GAAoB,SAAhBsxC,EAAwB,CAC1B,MAAMC,EAAcnzF,KAAK+uC,IAAIliC,OAC7B7M,KAAK+uC,IAAIliC,OAASqmF,EAClBlzF,KAAK+uC,IAAI4K,UAAU35C,KAAK+uC,IAAItsB,OAAQ,EAAG,GACvCziB,KAAK+uC,IAAIliC,OAASsmF,CACpB,CACF,CACF,CACA,WAAAC,CAAYC,EAAKpzD,GACf,MAAMxjB,EAAQ42E,EAAI52E,OAAS42E,EAAIC,aACzB52E,EAAS22E,EAAI32E,QAAU22E,EAAIE,cACjC,IAKIvS,EAAWG,EALXqS,EAAa9sF,KAAKmN,IAAInN,KAAK+uD,MAAMx1B,EAAiB,GAAIA,EAAiB,IAAK,GAC5EwzD,EAAc/sF,KAAKmN,IAAInN,KAAK+uD,MAAMx1B,EAAiB,GAAIA,EAAiB,IAAK,GAC7EyzD,EAAaj3E,EACfk3E,EAAcj3E,EACZk3E,EAAc,YAElB,MAAOJ,EAAa,GAAKE,EAAa,GAAKD,EAAc,GAAKE,EAAc,EAAG,CAC7E,IAAI3oE,EAAW0oE,EACbzoE,EAAY0oE,EACVH,EAAa,GAAKE,EAAa,IACjC1oE,EAAW0oE,GAAc,MAAQhtF,KAAKC,MAAM+sF,EAAa,GAAK,GAAK,EAAIhtF,KAAKD,KAAKitF,EAAa,GAC9FF,GAAcE,EAAa1oE,GAEzByoE,EAAc,GAAKE,EAAc,IACnC1oE,EAAY0oE,GAAe,MAAQjtF,KAAKC,MAAMgtF,EAAc,GAAK,GAAK,EAAIjtF,KAAKD,KAAKktF,GAAe,EACnGF,GAAeE,EAAc1oE,GAE/B+1D,EAAYhhF,KAAKihF,eAAeC,UAAU0S,EAAa5oE,EAAUC,GACjEk2D,EAASH,EAAUl+D,QACnBq+D,EAAOC,UAAU,EAAG,EAAGp2D,EAAUC,GACjCk2D,EAAOxnC,UAAU05C,EAAK,EAAG,EAAGK,EAAYC,EAAa,EAAG,EAAG3oE,EAAUC,GACrEooE,EAAMrS,EAAUv+D,OAChBixE,EAAa1oE,EACb2oE,EAAc1oE,EACd2oE,EAA8B,cAAhBA,EAA8B,YAAc,WAC5D,CACA,MAAO,CACLP,MACAK,aACAC,cAEJ,CACA,iBAAAE,CAAkB9Y,EAAOsY,GACvB,MAAMtkD,EAAM/uC,KAAK+uC,KACX,MACJtyB,EAAK,OACLC,GACE22E,EACE5L,EAAYznF,KAAKoT,QAAQq0E,UACzBqM,EAAgB9zF,KAAKoT,QAAQs5E,YAC7BqH,EAAmBjlD,GAAoBC,GAC7C,IAAIw7C,EAAOyJ,EAAUlkD,EAAQmkD,EAC7B,IAAKZ,EAAIh8E,QAAUg8E,EAAIzkF,OAASykF,EAAI/tB,MAAQ,EAAG,CAC7C,MAAM4uB,EAAUb,EAAIh8E,QAAUg8E,EAAIzkF,KAAKvF,OACvC2qF,EAAWntC,KAAKC,UAAUgtC,EAAgBC,EAAmB,CAACA,EAAiB5wF,MAAM,EAAG,GAAIskF,IAC5F8C,EAAQvqF,KAAKuxF,kBAAkB1uF,IAAIqxF,GAC9B3J,IACHA,EAAQ,IAAIjlF,IACZtF,KAAKuxF,kBAAkB3pF,IAAIssF,EAAS3J,IAEtC,MAAM4J,EAAc5J,EAAM1nF,IAAImxF,GAC9B,GAAIG,IAAgBL,EAAe,CACjC,MAAM5sE,EAAUxgB,KAAK6qC,MAAM7qC,KAAKoN,IAAIigF,EAAiB,GAAIA,EAAiB,IAAMA,EAAiB,IAC3F5sE,EAAUzgB,KAAK6qC,MAAM7qC,KAAKoN,IAAIigF,EAAiB,GAAIA,EAAiB,IAAMA,EAAiB,IAEjG,OADA/zF,KAAKu+E,mBAAmBnB,mBAAmBrC,EAAO0D,GAAaE,kBACxD,CACLl8D,OAAQ0xE,EACRjtE,UACAC,UAEJ,CACA2oB,EAASqkD,CACX,CACKrkD,IACHmkD,EAAaj0F,KAAKihF,eAAeC,UAAU,aAAczkE,EAAOC,GAChE+xE,GAAmBwF,EAAWnxE,QAASuwE,IAEzC,IAAIe,EAAeh3D,GAAK7U,UAAUwrE,EAAkB,CAAC,EAAIt3E,EAAO,EAAG,GAAI,EAAIC,EAAQ,EAAG,IACtF03E,EAAeh3D,GAAK7U,UAAU6rE,EAAc,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI13E,IAC7D,MAAMkhB,EAASirD,GAAa1lF,QAC5Bi6B,GAAK0B,wBAAwB,CAAC,EAAG,EAAGriB,EAAOC,GAAS03E,EAAcx2D,GAClE,MAAO2yC,EAAME,EAAMD,EAAME,GAAQ9yC,EAC3By2D,EAAa3tF,KAAK6qC,MAAMi/B,EAAOD,IAAS,EACxC+jB,EAAc5tF,KAAK6qC,MAAMm/B,EAAOD,IAAS,EACzC8jB,EAAav0F,KAAKihF,eAAeC,UAAU,aAAcmT,EAAYC,GACrEE,EAAUD,EAAWzxE,QACrBoE,EAAUqpD,EACVppD,EAAUspD,EAChB+jB,EAAQ96B,WAAWxyC,GAAUC,GAC7BqtE,EAAQjsE,aAAa6rE,GAChBtkD,IACHA,EAAS9vC,KAAKozF,YAAYa,EAAWxxE,OAAQwsB,GAA2BulD,IACxE1kD,EAASA,EAAOujD,IACZ9I,GAASuJ,GACXvJ,EAAM3iF,IAAIosF,EAAUlkD,IAGxB0kD,EAAQC,sBAAwBjF,GAAyB1gD,GAAoB0lD,GAAUnB,EAAI5D,aAC3FhF,GAAyB+J,EAAS1kD,EAAQ,EAAG,EAAGA,EAAOrzB,MAAOqzB,EAAOpzB,OAAQ,EAAG,EAAGD,EAAOC,GAC1F83E,EAAQjF,yBAA2B,YACnC,MAAMjP,EAAUljD,GAAK7U,UAAU0mB,GAA2BulD,GAAU,CAAC,EAAG,EAAG,EAAG,GAAIttE,GAAUC,IAQ5F,OAPAqtE,EAAQlT,UAAYwS,EAAgBrM,EAAUvI,WAAWnwC,EAAK/uC,KAAMsgF,EAAS1B,GAAS1vD,KAAM6rD,GAAS0M,EACrG+M,EAAQ3C,SAAS,EAAG,EAAGp1E,EAAOC,GAC1B6tE,IAAUuJ,IACZ9zF,KAAKihF,eAAezrC,OAAO,cAC3B+0C,EAAM3iF,IAAIosF,EAAUO,EAAW9xE,SAEjCziB,KAAKu+E,mBAAmBnB,mBAAmBrC,EAAO0D,GAAaE,kBACxD,CACLl8D,OAAQ8xE,EAAW9xE,OACnByE,QAASxgB,KAAK6qC,MAAMrqB,GACpBC,QAASzgB,KAAK6qC,MAAMpqB,GAExB,CACA,YAAA8K,CAAa8oD,EAAOt+D,GAClBzc,KAAKu+E,mBAAmB/C,iBAAiB,YAAaT,GAClDt+D,IAAUzc,KAAKoT,QAAQ05E,YACzB9sF,KAAKqxF,wBAAwB,IAAM,GAErCrxF,KAAKoT,QAAQ05E,UAAYrwE,EACzBzc,KAAK+uC,IAAI+9C,UAAYrwE,CACvB,CACA,UAAAyV,CAAW6oD,EAAOhvE,GAChB/L,KAAKu+E,mBAAmB/C,iBAAiB,UAAWT,GACpD/6E,KAAK+uC,IAAIqgD,QAAUQ,GAAgB7jF,EACrC,CACA,WAAAomB,CAAY4oD,EAAOhvE,GACjB/L,KAAKu+E,mBAAmB/C,iBAAiB,WAAYT,GACrD/6E,KAAK+uC,IAAIsgD,SAAWQ,GAAiB9jF,EACvC,CACA,aAAAqmB,CAAc2oD,EAAO2Z,GACnB10F,KAAKu+E,mBAAmB/C,iBAAiB,aAAcT,GACvD/6E,KAAK+uC,IAAIugD,WAAaoF,CACxB,CACA,OAAAriE,CAAQ0oD,EAAO4Z,EAAWC,GACxB50F,KAAKu+E,mBAAmB/C,iBAAiB,OAAQT,GACjD,MAAMhsC,EAAM/uC,KAAK+uC,SACO5qC,IAApB4qC,EAAI+/C,cACN//C,EAAI+/C,YAAY6F,GAChB5lD,EAAIigD,eAAiB4F,EAEzB,CACA,kBAAAtiE,CAAmByoD,EAAO31C,GAAS,CACnC,WAAA7S,CAAYwoD,EAAO8Z,GAAW,CAC9B,SAAAriE,CAAUuoD,EAAO+Z,GACf,IAAK,MAAO1qF,EAAKtI,KAAUgzF,EACzB,OAAQ1qF,GACN,IAAK,KACHpK,KAAKiyB,aAAa8oD,EAAOj5E,GACzB,MACF,IAAK,KACH9B,KAAKkyB,WAAW6oD,EAAOj5E,GACvB,MACF,IAAK,KACH9B,KAAKmyB,YAAY4oD,EAAOj5E,GACxB,MACF,IAAK,KACH9B,KAAKoyB,cAAc2oD,EAAOj5E,GAC1B,MACF,IAAK,IACH9B,KAAKqyB,QAAQ0oD,EAAOj5E,EAAM,GAAIA,EAAM,IACpC,MACF,IAAK,KACH9B,KAAKsyB,mBAAmByoD,EAAOj5E,GAC/B,MACF,IAAK,KACH9B,KAAKuyB,YAAYwoD,EAAOj5E,GACxB,MACF,IAAK,OACH9B,KAAKm0B,QAAQ4mD,EAAOj5E,EAAM,GAAIA,EAAM,IACpC,MACF,IAAK,KACH9B,KAAKu+E,mBAAmB/C,iBAAiB,cAAeT,GACxD/6E,KAAKoT,QAAQy5E,YAAc/qF,EAC3B,MACF,IAAK,KACH9B,KAAKu+E,mBAAmB/C,iBAAiB,YAAaT,GACtD/6E,KAAK+uC,IAAIogD,YAAcnvF,KAAKoT,QAAQw5E,UAAY9qF,EAChD,MACF,IAAK,KACH9B,KAAKu+E,mBAAmB/C,iBAAiB,2BAA4BT,GACrE/6E,KAAK+uC,IAAIwgD,yBAA2BztF,EACpC,MACF,IAAK,QACH9B,KAAKu+E,mBAAmB/C,iBAAiB,QAAST,GAClD/6E,KAAKoT,QAAQ25E,YAAcjrF,EAAQ9B,KAAK8wF,UAAY,KACpD9wF,KAAK8wF,UAAY,KACjB9wF,KAAK+0F,kBACL,MACF,IAAK,KACH/0F,KAAKu+E,mBAAmB/C,iBAAiB,SAAUT,GACnD/6E,KAAK+uC,IAAIliC,OAAS7M,KAAKoT,QAAQ45E,aAAehtF,KAAKygD,cAAcw1B,UAAUn0E,GAC3E,MAGR,CACA,eAAIkxF,GACF,QAAShzF,KAAK+wF,YAChB,CACA,eAAAgE,GACE,MAAM/B,EAAchzF,KAAKgzF,YACrBhzF,KAAKoT,QAAQ25E,cAAgBiG,EAC/BhzF,KAAKg1F,kBACKh1F,KAAKoT,QAAQ25E,aAAeiG,GACtChzF,KAAKi1F,cAET,CACA,cAAAD,CAAeja,GACb,GAAI/6E,KAAKgzF,YACP,MAAM,IAAIv6D,MAAM,qDAElB,MAAM47D,EAAar0F,KAAK+uC,IAAItsB,OAAOhG,MAC7B63E,EAAct0F,KAAK+uC,IAAItsB,OAAO/F,OAC9Bw4E,EAAU,eAAiBl1F,KAAKymF,WAChC0O,EAAgBn1F,KAAKihF,eAAeC,UAAUgU,EAASb,EAAYC,GACzEt0F,KAAK+wF,aAAe/wF,KAAK+uC,IACzB,MAAMA,EAAM/uC,KAAK+uC,IAAMomD,EAAcryE,QACrCisB,EAAI2yC,aAAa1hF,KAAK+wF,aAAa/hD,gBACnC0/C,GAAa1uF,KAAK+wF,aAAchiD,GAChC+5C,GAAwB/5C,EAAK/uC,KAAK+wF,cAClC/wF,KAAKwyB,UAAUuoD,EAAO,CAAC,CAAC,KAAM,gBAChC,CACA,YAAAka,GACE,IAAKj1F,KAAKgzF,YACR,MAAM,IAAIv6D,MAAM,+CAElBz4B,KAAK+uC,IAAIi6C,mBACT0F,GAAa1uF,KAAK+uC,IAAK/uC,KAAK+wF,cAC5B/wF,KAAK+uC,IAAM/uC,KAAK+wF,aAChB/wF,KAAK+wF,aAAe,IACtB,CACA,OAAAqE,CAAQC,GACN,IAAKr1F,KAAKoT,QAAQ25E,YAChB,OAEGsI,GAGHA,EAAS,GAAK3uF,KAAKC,MAAM0uF,EAAS,IAClCA,EAAS,GAAK3uF,KAAKC,MAAM0uF,EAAS,IAClCA,EAAS,GAAK3uF,KAAKD,KAAK4uF,EAAS,IACjCA,EAAS,GAAK3uF,KAAKD,KAAK4uF,EAAS,KALjCA,EAAW,CAAC,EAAG,EAAGr1F,KAAK+uC,IAAItsB,OAAOhG,MAAOzc,KAAK+uC,IAAItsB,OAAO/F,QAO3D,MAAM44E,EAAQt1F,KAAKoT,QAAQ25E,YACrBgE,EAAe/wF,KAAK+wF,aAC1B/wF,KAAKu1F,aAAaxE,EAAcuE,EAAOt1F,KAAK+uC,IAAKsmD,GACjDr1F,KAAK+uC,IAAItc,OACTzyB,KAAK+uC,IAAI2yC,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACrC1hF,KAAK+uC,IAAIqyC,UAAU,EAAG,EAAGphF,KAAK+uC,IAAItsB,OAAOhG,MAAOzc,KAAK+uC,IAAItsB,OAAO/F,QAChE1c,KAAK+uC,IAAIrc,SACX,CACA,YAAA6iE,CAAaxmD,EAAKumD,EAAOE,EAAUC,GACjC,MAAMC,EAAeD,EAAS,GACxBE,EAAeF,EAAS,GACxBG,EAAaH,EAAS,GAAKC,EAC3BG,EAAcJ,EAAS,GAAKE,EACf,IAAfC,GAAoC,IAAhBC,IAGxB71F,KAAK81F,oBAAoBR,EAAMxyE,QAAS0yE,EAAUI,EAAYC,EAAaP,EAAMS,QAAST,EAAMU,SAAUV,EAAMW,YAAaP,EAAcC,EAAcL,EAAMpuE,QAASouE,EAAMnuE,SAC9K4nB,EAAItc,OACJsc,EAAIogD,YAAc,EAClBpgD,EAAIwgD,yBAA2B,cAC/BxgD,EAAI2yC,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChC3yC,EAAI4K,UAAU67C,EAAS/yE,OAAQ,EAAG,GAClCssB,EAAIrc,UACN,CACA,mBAAAojE,CAAoBI,EAASV,EAAU/4E,EAAOC,EAAQq5E,EAASC,EAAUC,EAAaP,EAAcC,EAAcQ,EAAaC,GAC7H,IAAInC,EAAaiC,EAAQzzE,OACrB4zE,EAAQX,EAAeS,EACvBG,EAAQX,EAAeS,EAC3B,GAAIJ,EACF,GAAIK,EAAQ,GAAKC,EAAQ,GAAKD,EAAQ55E,EAAQw3E,EAAWx3E,OAAS65E,EAAQ55E,EAASu3E,EAAWv3E,OAAQ,CACpG,MAAM+F,EAASziB,KAAKihF,eAAeC,UAAU,gBAAiBzkE,EAAOC,GAC/DqyB,EAAMtsB,EAAOK,QACnBisB,EAAI4K,UAAUs6C,GAAaoC,GAAQC,GACnCvnD,EAAIwgD,yBAA2B,mBAC/BxgD,EAAIuyC,UAAY0U,EAChBjnD,EAAI8iD,SAAS,EAAG,EAAGp1E,EAAOC,GAC1BqyB,EAAIwgD,yBAA2B,cAC/B0E,EAAaxxE,EAAOA,OACpB4zE,EAAQC,EAAQ,CAClB,KAAO,CACLJ,EAAQzjE,OACRyjE,EAAQ/G,YAAc,EACtB+G,EAAQxU,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACpC,MAAM/tD,EAAO,IAAIggB,OACjBhgB,EAAKoL,KAAKs3D,EAAOC,EAAO75E,EAAOC,GAC/Bw5E,EAAQviE,KAAKA,GACbuiE,EAAQ3G,yBAA2B,mBACnC2G,EAAQ5U,UAAY0U,EACpBE,EAAQrE,SAASwE,EAAOC,EAAO75E,EAAOC,GACtCw5E,EAAQxjE,SACV,CAEF8iE,EAAS/iE,OACT+iE,EAASrG,YAAc,EACvBqG,EAAS9T,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACrB,UAAZqU,GAAuBE,EACzBT,EAAS3oF,OAAS7M,KAAKygD,cAAc41B,eAAe4f,GAC/B,eAAZF,IACTP,EAAS3oF,OAAS7M,KAAKygD,cAAc61B,oBAAoB2f,IAE3D,MAAMtiE,EAAO,IAAIggB,OACjBhgB,EAAKoL,KAAK22D,EAAcC,EAAcl5E,EAAOC,GAC7C84E,EAAS7hE,KAAKA,GACd6hE,EAASjG,yBAA2B,iBACpCiG,EAAS77C,UAAUs6C,EAAYoC,EAAOC,EAAO75E,EAAOC,EAAQg5E,EAAcC,EAAcl5E,EAAOC,GAC/F84E,EAAS9iE,SACX,CACA,IAAAD,CAAKsoD,GACC/6E,KAAKgzF,aACPtE,GAAa1uF,KAAK+uC,IAAK/uC,KAAK+wF,cAE9B/wF,KAAK+uC,IAAItc,OACT,MAAM8jE,EAAMv2F,KAAKoT,QACjBpT,KAAKswF,WAAWrmF,KAAKssF,GACrBv2F,KAAKoT,QAAUmjF,EAAIhtF,QACnBvJ,KAAKu+E,mBAAmB9rD,KAAKsoD,EAC/B,CACA,OAAAroD,CAAQqoD,GACN/6E,KAAKu+E,mBAAmB7rD,QAAQqoD,GACD,IAA3B/6E,KAAKswF,WAAWxvF,QAMpBd,KAAKoT,QAAUpT,KAAKswF,WAAWlpD,MAC/BpnC,KAAK+uC,IAAIrc,UACL1yB,KAAKgzF,aACPtE,GAAa1uF,KAAK+wF,aAAc/wF,KAAK+uC,KAEvC/uC,KAAK+0F,kBACL/0F,KAAKuwF,YAAc,KACnBvwF,KAAKqxF,wBAAwB,IAAM,EACnCrxF,KAAKsxF,2BAA6B,MAb5BtxF,KAAKgzF,aACPhzF,KAAKi1F,cAaX,CACA,SAAA1sE,CAAUwyD,EAAO/lE,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,GAC9BtK,KAAKu+E,mBAAmB9C,sBAAsB,YAAaV,GAC3D/6E,KAAK+uC,IAAIxmB,UAAUvT,EAAGC,EAAGyoB,EAAG5hB,EAAGsG,EAAG9X,GAClCtK,KAAKqxF,wBAAwB,IAAM,EACnCrxF,KAAKsxF,2BAA6B,IACpC,CACA,aAAAh6D,CAAcyjD,EAAOyb,EAAI5nF,EAAMgvB,GAC7B,IAAK8V,GAAQ9kC,EACb,IAAKgvB,EAGH,OAFA8V,IAAS9kC,EAAK,GAAK,IAAI+kC,YACvB3zC,KAAKw2F,GAAIzb,EAAOrnC,GAGlB,GAA+B,OAA3B1zC,KAAKu+E,kBAA4B,CACnC,MAAMkY,EAAiBD,IAAOzkE,EAAImB,OAASlzB,KAAKoT,QAAQ05E,UAAY,EAAI,EACxE9sF,KAAKu+E,kBAAkBpC,UAAUpB,GAAOwB,WAAWxB,EAAO/6E,KAAK+uC,IAAKnR,EAAO,GAAK64D,EAAgB74D,EAAO,GAAK64D,EAAgB74D,EAAO,GAAK64D,EAAgB74D,EAAO,GAAK64D,GAAgBrZ,mBAAmBrC,EAAO,CAAC,aACjN,CACMrnC,aAAgBC,SACpBD,EAAO9kC,EAAK,GAAK6kC,GAAoBC,IAEvCtW,GAAK0B,wBAAwBlB,EAAQkR,GAAoB9uC,KAAK+uC,KAAM/uC,KAAKoT,QAAQwqB,QACjF59B,KAAKw2F,GAAIzb,EAAOrnC,GAChB1zC,KAAK02F,cAAgB3b,CACvB,CACA,SAAA/nD,CAAU+nD,GACR/6E,KAAK+uC,IAAI/b,WACX,CACA,MAAAE,CAAO6nD,EAAOrnC,EAAMijD,GAAc,GAChC,MAAM5nD,EAAM/uC,KAAK+uC,IACX24C,EAAc1nF,KAAKoT,QAAQs0E,YAEjC,GADA34C,EAAIogD,YAAcnvF,KAAKoT,QAAQy5E,YAC3B7sF,KAAKgxF,eACP,GAA2B,kBAAhBtJ,GAA4BA,GAAaxI,WAAY,CAC9D,MAAMuB,EAAgBiH,EAAYzI,8BAAgClwC,EAAIC,eAAiB,KAGvF,GAFAD,EAAItc,OACJsc,EAAIy4C,YAAcE,EAAYxI,WAAWnwC,EAAK/uC,KAAMivC,GAA2BF,GAAM6vC,GAASzvD,OAAQ4rD,GAClG0F,EAAe,CACjB,MAAMmW,EAAU,IAAIjjD,OACpBijD,EAAQC,QAAQnjD,EAAM3E,EAAIC,eAAeE,aAAa4nD,aAAarW,IACnE/sC,EAAOkjD,CACT,CACA52F,KAAK+2F,iBAAiBrjD,GAAM,GAC5B3E,EAAIrc,SACN,MACE1yB,KAAK+2F,iBAAiBrjD,GAAM,GAGhC1zC,KAAKu+E,mBAAmBnB,mBAAmBrC,EAAO0D,GAAavrD,QAC3DyjE,GACF32F,KAAK22F,YAAY5b,EAAOrnC,EAAM1zC,KAAKoT,QAAQ2tE,0BAA0BnC,GAASzvD,OAAQ2f,GAAoB9uC,KAAK+uC,OAEjHA,EAAIogD,YAAcnvF,KAAKoT,QAAQw5E,SACjC,CACA,WAAAz5D,CAAY4nD,EAAOrnC,GACjB1zC,KAAKkzB,OAAO6nD,EAAOrnC,EACrB,CACA,IAAAtgB,CAAK2nD,EAAOrnC,EAAMijD,GAAc,GAC9B,MAAM5nD,EAAM/uC,KAAK+uC,IACX04C,EAAYznF,KAAKoT,QAAQq0E,UACzBqM,EAAgB9zF,KAAKoT,QAAQs5E,YACnC,IAAIsK,GAAc,EAClB,GAAIlD,EAAe,CACjB,MAAMrT,EAAgBgH,EAAUxI,8BAAgClwC,EAAIC,eAAiB,KAIrF,GAHAhvC,KAAKu+E,mBAAmB9rD,KAAKsoD,GAC7BhsC,EAAItc,OACJsc,EAAIuyC,UAAYmG,EAAUvI,WAAWnwC,EAAK/uC,KAAMivC,GAA2BF,GAAM6vC,GAAS1vD,KAAM6rD,GAC5F0F,EAAe,CACjB,MAAMmW,EAAU,IAAIjjD,OACpBijD,EAAQC,QAAQnjD,EAAM3E,EAAIC,eAAeE,aAAa4nD,aAAarW,IACnE/sC,EAAOkjD,CACT,CACAI,GAAc,CAChB,CACA,MAAMx2D,EAAYxgC,KAAKoT,QAAQ2tE,4BAC3B/gF,KAAKgxF,gBAAgC,OAAdxwD,IACrBxgC,KAAKwwF,eACPzhD,EAAI3b,KAAKsgB,EAAM,WACf1zC,KAAKwwF,eAAgB,GAErBzhD,EAAI3b,KAAKsgB,IAGb1zC,KAAKu+E,mBAAmBnB,mBAAmBrC,EAAO0D,GAAarrD,MAC3D4jE,IACFjoD,EAAIrc,UACJ1yB,KAAKu+E,mBAAmB7rD,QAAQqoD,IAE9B4b,GACF32F,KAAK22F,YAAY5b,EAAOrnC,EAAMlT,EAElC,CACA,MAAAnN,CAAO0nD,EAAOrnC,GACZ1zC,KAAKwwF,eAAgB,EACrBxwF,KAAKozB,KAAK2nD,EAAOrnC,EACnB,CACA,UAAApgB,CAAWynD,EAAOrnC,GAChB1zC,KAAKozB,KAAK2nD,EAAOrnC,GAAM,GACvB1zC,KAAKkzB,OAAO6nD,EAAOrnC,GAAM,GACzB1zC,KAAK22F,YAAY5b,EAAOrnC,EAC1B,CACA,YAAAngB,CAAawnD,EAAOrnC,GAClB1zC,KAAKwwF,eAAgB,EACrBxwF,KAAKszB,WAAWynD,EAAOrnC,EACzB,CACA,eAAAlgB,CAAgBunD,EAAOrnC,GACrB1zC,KAAKszB,WAAWynD,EAAOrnC,EACzB,CACA,iBAAAjgB,CAAkBsnD,EAAOrnC,GACvB1zC,KAAKwwF,eAAgB,EACrBxwF,KAAKszB,WAAWynD,EAAOrnC,EACzB,CACA,OAAAhgB,CAAQqnD,EAAOrnC,GACb1zC,KAAK22F,YAAY5b,EAAOrnC,EAC1B,CACA,WAAAjc,CAAYsjD,EAAOrnC,GACjB1zC,KAAK+uC,IAAI3b,KAAKsgB,GACd1zC,KAAKu+E,mBAAmBnB,mBAAmBrC,EAAO0D,GAAahnD,aAAagmD,gBAAgB1C,EAC9F,CACA,IAAApnD,CAAKonD,GACH/6E,KAAKu+E,mBAAmBxC,6BAA6B,WAAYhB,GACjE/6E,KAAKuwF,YAAcT,EACrB,CACA,MAAAl8D,CAAOmnD,GACL/6E,KAAKu+E,mBAAmBxC,6BAA6B,WAAYhB,GACjE/6E,KAAKuwF,YAAcR,EACrB,CACA,SAAAl8D,CAAUknD,GACR/6E,KAAKoT,QAAQ44E,WAAa,KAC1BhsF,KAAKoT,QAAQ64E,gBAAkB,EAC/BjsF,KAAKoT,QAAQvM,EAAI7G,KAAKoT,QAAQ+4E,MAAQ,EACtCnsF,KAAKoT,QAAQoL,EAAIxe,KAAKoT,QAAQg5E,MAAQ,EACtCpsF,KAAKu+E,mBAAmBrD,iBAAiBH,GAAOW,qBAAqB,gBAAgBA,qBAAqB,WAAYX,EACxH,CACA,OAAAjnD,CAAQinD,GACN,MAAMkc,EAAQj3F,KAAKk3F,iBACbnoD,EAAM/uC,KAAK+uC,IACjB,GAAI/uC,KAAKu+E,kBAAmB,CAC1B,MAAM,kBACJA,GACEv+E,UACUmE,IAAV8yF,GACF1Y,EAAkBxC,6BAA6B,WAAYwC,EAAkBnD,iBAAiBW,6BAA6B,WAAYhB,GAEzIwD,EAAkBlD,kBAAkBN,EACtC,CACA,QAAc52E,IAAV8yF,EAAqB,CACvB,MAAML,EAAU,IAAIjjD,OACdkoB,EAAY9sB,EAAIC,eAAeE,aACrC,IAAK,MAAM,UACT3mB,EAAS,EACT1hB,EAAC,EACD2X,EAAC,SACDstE,EAAQ,KACRp4C,KACGujD,EACEvjD,GAGLkjD,EAAQC,QAAQnjD,EAAM,IAAI+tC,UAAUl5D,GAAW4uE,gBAAgBt7B,GAAWnC,UAAU7yD,EAAG2X,GAAGb,MAAMmuE,GAAWA,IAE7G/8C,EAAIpb,KAAKijE,EACX,QACO52F,KAAKk3F,gBACd,CACA,cAAAnjE,CAAegnD,EAAOqc,GACpBp3F,KAAKu+E,mBAAmB/C,iBAAiB,cAAeT,GACxD/6E,KAAKoT,QAAQi5E,YAAc+K,CAC7B,CACA,cAAApjE,CAAe+mD,EAAOqc,GACpBp3F,KAAKu+E,mBAAmB/C,iBAAiB,cAAeT,GACxD/6E,KAAKoT,QAAQk5E,YAAc8K,CAC7B,CACA,SAAAnjE,CAAU8mD,EAAOp9D,GACf3d,KAAKu+E,mBAAmB/C,iBAAiB,SAAUT,GACnD/6E,KAAKoT,QAAQm5E,WAAa5uE,EAAQ,GACpC,CACA,UAAAuW,CAAW6mD,EAAOmR,GAChBlsF,KAAKu+E,mBAAmB/C,iBAAiB,UAAWT,GACpD/6E,KAAKoT,QAAQ84E,SAAWA,CAC1B,CACA,OAAA/3D,CAAQ4mD,EAAOsc,EAAaxrD,GAC1B7rC,KAAKu+E,mBAAmB/C,iBAAiB,OAAQT,GAAOa,0BAA0B,UAAWyb,EAAatc,GAC1G,MAAMuc,EAAUt3F,KAAKkwF,WAAWrtF,IAAIw0F,GAC9BjkF,EAAUpT,KAAKoT,QACrB,IAAKkkF,EACH,MAAM,IAAI7+D,MAAM,uBAAuB4+D,KAczC,GAZAjkF,EAAQk4D,WAAagsB,EAAQhsB,YAAc1/C,EACb,IAA1BxY,EAAQk4D,WAAW,IAAsC,IAA1Bl4D,EAAQk4D,WAAW,IACpD/yC,EAAK,gCAAkC8+D,GAErCxrD,EAAO,GACTA,GAAQA,EACRz4B,EAAQmkF,eAAiB,GAEzBnkF,EAAQmkF,cAAgB,EAE1Bv3F,KAAKoT,QAAQq0D,KAAO6vB,EACpBt3F,KAAKoT,QAAQ04E,SAAWjgD,EACpByrD,EAAQxsB,YACV,OAEF,MAAMpnE,EAAO4zF,EAAQnwB,YAAc,aAC7BqwB,EAAWF,EAAQtwB,gBAAgBgD,KAAO,IAAItmE,OAAU4zF,EAAQ/rB,eACtE,IAAIX,EAAO,SACP0sB,EAAQ3sB,MACVC,EAAO,MACE0sB,EAAQ1sB,OACjBA,EAAO,QAET,MAAMG,EAASusB,EAAQvsB,OAAS,SAAW,SAC3C,IAAI0sB,EAAkB5rD,EAClBA,EAAOy8C,GACTmP,EAAkBnP,GACTz8C,EAAO08C,KAChBkP,EAAkBlP,IAEpBvoF,KAAKoT,QAAQ24E,cAAgBlgD,EAAO4rD,EACpCz3F,KAAK+uC,IAAI04B,KAAO,GAAGsD,KAAUH,KAAQ6sB,OAAqBD,GAC5D,CACA,oBAAApjE,CAAqB2mD,EAAOljE,GAC1B7X,KAAKu+E,mBAAmB/C,iBAAiB,oBAAqBT,GAC9D/6E,KAAKoT,QAAQo5E,kBAAoB30E,CACnC,CACA,WAAAwc,CAAY0mD,EAAO2c,GACjB13F,KAAKu+E,mBAAmB/C,iBAAiB,WAAYT,GACrD/6E,KAAKoT,QAAQq5E,SAAWiL,CAC1B,CACA,QAAApjE,CAASymD,EAAOl0E,EAAG2X,GACjBxe,KAAKu+E,mBAAmB7C,qBAAqB,gBAAgBD,sBAAsB,WAAYV,GAC/F/6E,KAAKoT,QAAQvM,EAAI7G,KAAKoT,QAAQ+4E,OAAStlF,EACvC7G,KAAKoT,QAAQoL,EAAIxe,KAAKoT,QAAQg5E,OAAS5tE,CACzC,CACA,kBAAA+V,CAAmBwmD,EAAOl0E,EAAG2X,GAC3Bxe,KAAKk0B,WAAW6mD,GAAQv8D,GACxBxe,KAAKs0B,SAASymD,EAAOl0E,EAAG2X,EAC1B,CACA,aAAAgW,CAAcumD,EAAO56C,GACnBngC,KAAKu+E,mBAAmB7C,qBAAqB,gBAAgBF,iBAAiB,aAAcT,GAC5F,MAAM,QACJ3nE,GACEpT,KACJoT,EAAQ44E,WAAa7rD,EACrB/sB,EAAQ64E,gBAAkBvlF,KAAK+uD,MAAMt1B,EAAO,GAAIA,EAAO,IACvD/sB,EAAQvM,EAAIuM,EAAQ+4E,MAAQ,EAC5B/4E,EAAQoL,EAAIpL,EAAQg5E,MAAQ,CAC9B,CACA,QAAA33D,CAASsmD,GACP/6E,KAAKs0B,SAASymD,EAAO,EAAG/6E,KAAKoT,QAAQ84E,SACrClsF,KAAKu+E,mBAAmB9C,sBAAsB,WAAYz7E,KAAKu+E,kBAAkBrB,eAAe,YAAcnC,EAChH,CACA,IAAernC,EAAMqgD,EAAkBxrE,GACrC,MAAMquE,EAAU,IAAIjjD,OAEpB,OADAijD,EAAQC,QAAQnjD,EAAM,IAAI+tC,UAAUl5D,GAAW2mB,aAAa4nD,aAAa/C,IAClE6C,CACT,CACA,SAAAe,CAAU5c,EAAOxQ,EAAW1jE,EAAG2X,EAAGo5E,EAAsBC,GACtD,MAAM9oD,EAAM/uC,KAAK+uC,IACX37B,EAAUpT,KAAKoT,QACfq0D,EAAOr0D,EAAQq0D,KACf+kB,EAAoBp5E,EAAQo5E,kBAC5BV,EAAW14E,EAAQ04E,SAAW14E,EAAQ24E,cACtC+L,EAAiBtL,EAAoBv9D,EAAkBS,iBACvDqoE,KAAoBvL,EAAoBv9D,EAAkBU,kBAC1D+8D,EAAct5E,EAAQs5E,cAAgBjlB,EAAKE,YAC3CglB,EAAgBv5E,EAAQu5E,gBAAkBllB,EAAKE,YACrD,IAAIj0B,EAIJ,IAHK+zB,EAAKR,iBAAmB8wB,GAAkBrL,GAAeC,KAAmBllB,EAAKE,cACpFj0B,EAAO+zB,EAAK4C,iBAAiBrqE,KAAKkwF,WAAY3lB,IAE5C72B,IAAS+zB,EAAKR,iBAAmBylB,GAAeC,GAAgB,CAKlE,IAAIoH,EACJ,GALAhlD,EAAItc,OACJsc,EAAI2qB,UAAU7yD,EAAG2X,GACjBuwB,EAAIpxB,MAAMmuE,GAAWA,GACrB9rF,KAAKu+E,mBAAmB/B,oBAAoBzB,EAAOhsC,EAAK04B,GAEpDqwB,IAAmB7oE,EAAkBC,MAAQ4oE,IAAmB7oE,EAAkBG,YACpF,GAAIwoE,EAAsB,CACxB7D,EAAmBhlD,EAAIC,eACvBD,EAAI2yC,gBAAgBkW,GACpB,MAAMI,EAAah4F,MAAK,GAAe0zC,EAAMqgD,EAAkB6D,GAC/D7oD,EAAI3b,KAAK4kE,EACX,MACEjpD,EAAI3b,KAAKsgB,GAGb,GAAIokD,IAAmB7oE,EAAkBE,QAAU2oE,IAAmB7oE,EAAkBG,YACtF,GAAIyoE,EAAwB,CAC1B9D,IAAqBhlD,EAAIC,eACzBD,EAAI2yC,gBAAgBmW,GACpB,MAAM,EACJ7iF,EAAC,EACDC,EAAC,EACDyoB,EAAC,EACD5hB,GACEi4E,EACEkE,EAAsB76D,GAAK6C,iBAAiB43D,GAC5Cl8B,EAASv+B,GAAK7U,UAAU,CAACvT,EAAGC,EAAGyoB,EAAG5hB,EAAG,EAAG,GAAIm8E,GAClD76D,GAAK8C,8BAA8By7B,EAAQitB,IAC3C75C,EAAI+9C,WAAapmF,KAAKmN,IAAI+0E,GAAG,GAAIA,GAAG,IAAMkD,EAC1C/8C,EAAI7b,OAAOlzB,MAAK,GAAe0zC,EAAMqgD,EAAkB8D,GACzD,MACE9oD,EAAI+9C,WAAahB,EACjB/8C,EAAI7b,OAAOwgB,GAGf3E,EAAIrc,SACN,MACMolE,IAAmB7oE,EAAkBC,MAAQ4oE,IAAmB7oE,EAAkBG,cACpF2f,EAAIm6B,SAASqB,EAAW1jE,EAAG2X,GAC3Bxe,KAAKu+E,mBAAmB/B,oBAAoBzB,EAAOhsC,EAAK04B,EAAMqkB,EAAUjlF,EAAG2X,EAAG,IAAMuwB,EAAImpD,YAAY3tB,KAElGutB,IAAmB7oE,EAAkBE,QAAU2oE,IAAmB7oE,EAAkBG,cAClFpvB,KAAKu+E,mBACPv+E,KAAKu+E,mBAAmB/B,oBAAoBzB,EAAOhsC,EAAK04B,EAAMqkB,EAAUjlF,EAAG2X,EAAG,IAAMuwB,EAAImpD,YAAY3tB,IAAY6S,mBAAmBrC,EAAO0D,GAAavrD,QAEzJ6b,EAAIopD,WAAW5tB,EAAW1jE,EAAG2X,IAGjC,GAAIu5E,EAAgB,CAClB,MAAMd,EAAQj3F,KAAKk3F,mBAAqB,GACxCD,EAAMhtF,KAAK,CACTse,UAAWumB,GAAoBC,GAC/BloC,IACA2X,IACAstE,WACAp4C,SAEF1zC,KAAKu+E,mBAAmB/B,oBAAoBzB,EAAOhsC,EAAK04B,EAAMqkB,EAAUjlF,EAAG2X,EAC7E,CACF,CACA,2BAAI45E,GACF,MACEt1E,QAASisB,GACP/uC,KAAKihF,eAAeC,UAAU,0BAA2B,GAAI,IACjEnyC,EAAIpxB,MAAM,IAAK,GACfoxB,EAAIm6B,SAAS,IAAK,EAAG,IACrB,MAAMt6D,EAAOmgC,EAAI6K,aAAa,EAAG,EAAG,GAAI,IAAIhrC,KAC5C,IAAIuiD,GAAU,EACd,IAAK,IAAIloD,EAAI,EAAGA,EAAI2F,EAAK9N,OAAQmI,GAAK,EACpC,GAAI2F,EAAK3F,GAAK,GAAK2F,EAAK3F,GAAK,IAAK,CAChCkoD,GAAU,EACV,KACF,CAEF,OAAOr3B,EAAO95B,KAAM,0BAA2BmxD,EACjD,CACA,QAAAz8B,CAASqmD,EAAOsd,GACVr4F,KAAKu+E,oBACPv+E,KAAKu+E,kBAAkBnB,mBAAmBrC,EAAO0D,GAAa/pD,UAAUynD,UAAUpB,GAC9E/6E,KAAKoT,QAAQo5E,kBAAoBv9D,EAAkBU,kBACrD3vB,KAAKu+E,kBAAkBxC,6BAA6B,WAAYhB,GAAOkB,wDAG3E,MAAM7oE,EAAUpT,KAAKoT,QACfq0D,EAAOr0D,EAAQq0D,KACrB,GAAIA,EAAKqD,YAGP,OAFA9qE,KAAKs4F,cAAcvd,EAAOsd,QAC1Br4F,KAAKu+E,mBAAmBV,wBAAwB9C,GAGlD,MAAM+Q,EAAW14E,EAAQ04E,SACzB,GAAiB,IAAbA,EAEF,YADA9rF,KAAKu+E,mBAAmBd,gBAAgB1C,GAG1C,MAAMhsC,EAAM/uC,KAAK+uC,IACXg9C,EAAgB34E,EAAQ24E,cACxBM,EAAcj5E,EAAQi5E,YACtBC,EAAcl5E,EAAQk5E,YACtBiL,EAAgBnkF,EAAQmkF,cACxBhL,EAAan5E,EAAQm5E,WAAagL,EAClCgB,EAAeF,EAAOv3F,OACtBmqE,EAAWxD,EAAKwD,SAChButB,EAAavtB,EAAW,GAAK,EAC7BQ,EAAkBhE,EAAKgE,gBACvBgtB,EAAoB3M,EAAW14E,EAAQk4D,WAAW,GAClDotB,EAAiBtlF,EAAQo5E,oBAAsBv9D,EAAkBC,OAASu4C,EAAKR,kBAAoB7zD,EAAQs5E,YAWjH,IAAIkL,EAAsBC,EAV1B9oD,EAAItc,OACArf,EAAQ44E,YACVj9C,EAAIxmB,aAAanV,EAAQ44E,YAE3Bj9C,EAAI2qB,UAAUtmD,EAAQvM,EAAGuM,EAAQoL,EAAIpL,EAAQq5E,UACzC8K,EAAgB,EAClBxoD,EAAIpxB,MAAM4uE,GAAa,GAEvBx9C,EAAIpxB,MAAM4uE,EAAY,GAGxB,MAAMuL,EAAiB1kF,EAAQo5E,kBAAoBv9D,EAAkBS,iBAC/DipE,EAAYb,IAAmB7oE,EAAkBC,MAAQ4oE,IAAmB7oE,EAAkBG,YAC9FwpE,EAAcd,IAAmB7oE,EAAkBE,QAAU2oE,IAAmB7oE,EAAkBG,YACxG,GAAIupE,GAAavlF,EAAQs5E,YAAa,CACpC39C,EAAItc,OACJ,MAAM+tD,EAAUptE,EAAQq0E,UAAUvI,WAAWnwC,EAAK/uC,KAAMivC,GAA2BF,GAAM6vC,GAAS1vD,KAAM6rD,GACxG6c,EAAuB9oD,GAAoBC,GAC3CA,EAAIrc,UACJqc,EAAIuyC,UAAYd,CAClB,CACA,GAAIoY,GAAexlF,EAAQu5E,cAAe,CACxC59C,EAAItc,OACJ,MAAM+tD,EAAUptE,EAAQs0E,YAAYxI,WAAWnwC,EAAK/uC,KAAMivC,GAA2BF,GAAM6vC,GAASzvD,OAAQ4rD,GAC5G8c,EAAyB/oD,GAAoBC,GAC7CA,EAAIrc,UACJqc,EAAIy4C,YAAchH,CACpB,CACA,IAAIsM,EAAY15E,EAAQ05E,UACxB,MAAMnvE,EAAQvK,EAAQ64E,gBAatB,GAZc,IAAVtuE,GAA6B,IAAdmvE,EACb8L,IACF9L,EAAY9sF,KAAK64F,uBAGnB/L,GAAanvE,EAEO,IAAlBouE,IACFh9C,EAAIpxB,MAAMouE,EAAeA,GACzBe,GAAaf,GAEfh9C,EAAI+9C,UAAYA,EACZrlB,EAAKoD,mBAAoB,CAC3B,MAAMiuB,EAAQ,GACd,IAAIr8E,EAAQ,EACZ,IAAK,MAAMs8E,KAASV,EAClBS,EAAM7uF,KAAK8uF,EAAMC,SACjBv8E,GAASs8E,EAAMt8E,MAEjB,MAAMw8E,EAAcH,EAAMz1F,KAAK,IAE/B,GADA0rC,EAAIm6B,SAAS+vB,EAAa,EAAG,GACE,OAA3Bj5F,KAAKu+E,kBAA4B,CACnC,MAAM57D,EAAUosB,EAAImpD,YAAYe,GAChCj5F,KAAKu+E,kBAAkBhC,WAAWxB,EAAO/6E,KAAK+uC,KAAMpsB,EAAQm6D,sBAAuBn6D,EAAQo6D,wBAAyBp6D,EAAQq6D,wBAAyBr6D,EAAQs6D,0BAA0BY,wBAAwB9C,EACjN,CAIA,OAHA3nE,EAAQvM,GAAK4V,EAAQg8E,EAAoBlM,EACzCx9C,EAAIrc,eACJ1yB,KAAKo1F,SAEP,CACA,IACEnsF,EADEpC,EAAI,EAER,IAAKoC,EAAI,EAAGA,EAAIsvF,IAAgBtvF,EAAG,CACjC,MAAM8vF,EAAQV,EAAOpvF,GACrB,GAAqB,kBAAV8vF,EAAoB,CAC7BlyF,GAAK2xF,EAAaO,EAAQjN,EAAW,IACrC,QACF,CACA,IAAIoN,GAAgB,EACpB,MAAM9B,GAAW2B,EAAMI,QAAU7M,EAAc,GAAKD,EAC9C9hB,EAAYwuB,EAAMK,SAClBC,EAASN,EAAMM,OACrB,IAAIC,EAASC,EAaT52E,EAZAlG,EAAQs8E,EAAMt8E,MAClB,GAAIwuD,EAAU,CACZ,MAAMuuB,EAAUT,EAAMS,SAAW/tB,EAC3BguB,IAAOV,EAAMS,QAAUA,EAAQ,GAAa,GAAR/8E,GAAeg8E,EACnDiB,EAAKF,EAAQ,GAAKf,EACxBh8E,EAAQ+8E,GAAWA,EAAQ,GAAK/8E,EAChC68E,EAAUG,EAAK1N,EACfwN,GAAW1yF,EAAI6yF,GAAM3N,CACvB,MACEuN,EAAUzyF,EAAIklF,EACdwN,EAAU,EAGZ,GAAI9xB,EAAKuD,WAAavuD,EAAQ,EAAG,CAC/BkG,EAAUosB,EAAImpD,YAAY3tB,GAC1B,MAAMovB,EAAgC,IAAhBh3E,EAAQlG,MAAeqvE,EAAWC,EACxD,GAAItvE,EAAQk9E,GAAiB35F,KAAKo4F,wBAAyB,CACzD,MAAMwB,EAAkBn9E,EAAQk9E,EAChCT,GAAgB,EAChBnqD,EAAItc,OACJsc,EAAIpxB,MAAMi8E,EAAiB,GAC3BN,GAAWM,CACb,MAAWn9E,IAAUk9E,IACnBL,IAAY78E,EAAQk9E,GAAiB,IAAO7N,EAAWC,EAE3D,CACA,GAAI/rF,KAAKgxF,iBAAmB+H,EAAMc,UAAYpyB,EAAKE,aACjD,GAAI+wB,IAAmBW,EACrBtqD,EAAIm6B,SAASqB,EAAW+uB,EAASC,GACjCv5F,KAAKu+E,mBAAmB/B,oBAAoBzB,EAAOhsC,EAAKpsB,EAAU,CAChE0oD,KAAM,MACJ5D,EAAMqkB,EAAWC,EAAeuN,EAASC,EAAS,IAAM52E,GAAWosB,EAAImpD,YAAY3tB,SAGvF,GADAvqE,KAAK23F,UAAU5c,EAAOxQ,EAAW+uB,EAASC,EAAS3B,EAAsBC,GACrEwB,EAAQ,CACV,MAAMS,EAAgBR,EAAUxN,EAAWuN,EAAO1wB,OAAO9hE,EAAIklF,EACvDgO,EAAgBR,EAAUzN,EAAWuN,EAAO1wB,OAAOnqD,EAAIutE,EAC7D/rF,KAAK23F,UAAU5c,EAAOse,EAAOD,SAAUU,EAAeC,EAAenC,EAAsBC,EAC7F,CAGJ,MAAMmC,EAAY/uB,EAAWxuD,EAAQg8E,EAAoBrB,EAAUG,EAAgB96E,EAAQg8E,EAAoBrB,EAAUG,EACzH1wF,GAAKmzF,EACDd,GACFnqD,EAAIrc,SAER,CACIu4C,EACF73D,EAAQoL,GAAK3X,EAEbuM,EAAQvM,GAAKA,EAAI0lF,EAEnBx9C,EAAIrc,UACJ1yB,KAAKo1F,UACLp1F,KAAKu+E,mBAAmBV,wBAAwB9C,EAElD,CACA,aAAAud,CAAcvd,EAAOsd,GACnB,MAAMtpD,EAAM/uC,KAAK+uC,IACX37B,EAAUpT,KAAKoT,QACfq0D,EAAOr0D,EAAQq0D,KACfqkB,EAAW14E,EAAQ04E,SACnByL,EAAgBnkF,EAAQmkF,cACxBiB,EAAa/wB,EAAKwD,SAAW,GAAK,EAClCohB,EAAcj5E,EAAQi5E,YACtBC,EAAcl5E,EAAQk5E,YACtBC,EAAan5E,EAAQm5E,WAAagL,EAClCjsB,EAAal4D,EAAQk4D,YAAc1/C,EACnC2sE,EAAeF,EAAOv3F,OACtBm5F,EAAkB7mF,EAAQo5E,oBAAsBv9D,EAAkBI,UACxE,IAAIpmB,EAAG8vF,EAAOt8E,EAAOy9E,EACrB,GAAID,GAAgC,IAAbnO,EACrB,OAEF9rF,KAAKqxF,wBAAwB,IAAM,EACnCrxF,KAAKsxF,2BAA6B,KAClCviD,EAAItc,OACArf,EAAQ44E,YACVj9C,EAAIxmB,aAAanV,EAAQ44E,YAE3Bj9C,EAAI2qB,UAAUtmD,EAAQvM,EAAGuM,EAAQoL,EAAIpL,EAAQq5E,UAC7C19C,EAAIpxB,MAAM4uE,EAAYgL,GACtB,MAAMhZ,EAAoBv+E,KAAKu+E,kBAE/B,IADAv+E,KAAKu+E,kBAAoBA,EAAoB,IAAID,GAA8BC,EAAmBxD,GAAS,KACtG9xE,EAAI,EAAGA,EAAIsvF,IAAgBtvF,EAAG,CAEjC,GADA8vF,EAAQV,EAAOpvF,GACM,kBAAV8vF,EAAoB,CAC7BmB,EAAgB1B,EAAaO,EAAQjN,EAAW,IAChD9rF,KAAK+uC,IAAI2qB,UAAUwgC,EAAe,GAClC9mF,EAAQvM,GAAKqzF,EAAgB3N,EAC7B,QACF,CACA,MAAM6K,GAAW2B,EAAMI,QAAU7M,EAAc,GAAKD,EAC9C/G,EAAe7d,EAAKoC,qBAAqBkvB,EAAMoB,gBAChD7U,EAEMtlF,KAAKgxF,iBACdhxF,KAAKyyB,OACLsc,EAAIpxB,MAAMmuE,EAAUA,GACpB/8C,EAAIxmB,aAAa+iD,GACjBtrE,KAAK4mF,oBAAoBtB,GACzBtlF,KAAK0yB,WANL6F,EAAK,oBAAoBwgE,EAAMoB,qCAQjC,MAAMj+E,EAAI,CAAC68E,EAAMt8E,MAAO,GACxB2gB,GAAKc,eAAehiB,EAAGovD,GACvB7uD,EAAQP,EAAE,GAAK4vE,EAAWsL,EAC1BroD,EAAI2qB,UAAUj9C,EAAO,GACrBrJ,EAAQvM,GAAK4V,EAAQ8vE,CACvB,CACAx9C,EAAIrc,UACA6rD,IACFv+E,KAAKu+E,kBAAoBA,EAE7B,CACA,YAAAzpD,CAAaimD,EAAOqf,EAAQC,GAAS,CACrC,qBAAAtlE,CAAsBgmD,EAAOqf,EAAQC,EAAQC,EAAKC,EAAKC,EAAKC,GAC1D,MAAM9mE,EAAO,IAAIggB,OACjBhgB,EAAKoL,KAAKu7D,EAAKC,EAAKC,EAAMF,EAAKG,EAAMF,GACrCv6F,KAAK+uC,IAAIpb,KAAKA,GACd3zB,KAAKu+E,mBAAmBhC,WAAWxB,EAAO/6E,KAAK+uC,IAAKurD,EAAKE,EAAKD,EAAKE,GAAKre,cAAcrB,EAAO/6E,KAAK+uC,IAAKurD,EAAKE,EAAKD,EAAKE,GACtHz6F,KAAK0zB,QAAQqnD,EACf,CACA,iBAAA2f,CAAkB3f,EAAOqE,GACvB,IAAIoB,EACJ,GAAc,kBAAVpB,EAAG,GAAwB,CAC7B,MAAMqB,EAAgBzgF,KAAKygF,eAAiB3xC,GAAoB9uC,KAAK+uC,KAC/Ds2C,EAAwB,CAC5BmB,qBAAsB,CAACz3C,EAAK4rD,IAAmB,IAAI3K,GAAejhD,EAAK/uC,KAAKkwF,WAAYlwF,KAAKsqE,KAAMtqE,KAAKsqF,cAAetqF,KAAKygD,cAAe,CACzI0vC,sBAAuBnwF,KAAKmwF,sBAC5BC,mBAAoBpwF,KAAKowF,yBACxBjsF,OAAWA,EAAWnE,KAAKu+E,kBAAoB,IAAID,GAA8Bt+E,KAAKu+E,kBAAmBoc,GAAgB,GAAQ,OAEtIna,EAAU,IAAI4E,GAAchG,EAAIp/E,KAAK+uC,IAAKs2C,EAAuB5E,EACnE,MACED,EAAUxgF,KAAK46F,YAAY7f,EAAOqE,EAAG,GAAIA,EAAG,IAE9C,OAAOoB,CACT,CACA,eAAArrD,CAAgB4lD,KAAU33C,GACxBpjC,KAAKu+E,mBAAmB/C,iBAAiB,cAAeT,GACxD/6E,KAAKoT,QAAQs0E,YAAc1nF,KAAK06F,kBAAkB3f,EAAO33C,GACzDpjC,KAAKoT,QAAQu5E,eAAgB,CAC/B,CACA,aAAAt3D,CAAc0lD,KAAU33C,GACtBpjC,KAAKu+E,mBAAmB/C,iBAAiB,YAAaT,GACtD/6E,KAAKoT,QAAQq0E,UAAYznF,KAAK06F,kBAAkB3f,EAAO33C,GACvDpjC,KAAKoT,QAAQs5E,aAAc,CAC7B,CACA,iBAAAl3D,CAAkBulD,EAAO5sC,GACvBnuC,KAAKu+E,mBAAmB/C,iBAAiB,cAAeT,GACxD/6E,KAAK+uC,IAAIy4C,YAAcxnF,KAAKoT,QAAQs0E,YAAcv5C,EAClDnuC,KAAKoT,QAAQu5E,eAAgB,CAC/B,CACA,oBAAAp1D,CAAqBwjD,GACnB/6E,KAAKu+E,mBAAmB/C,iBAAiB,cAAeT,GACxD/6E,KAAK+uC,IAAIy4C,YAAcxnF,KAAKoT,QAAQs0E,YAAc,cAClD1nF,KAAKoT,QAAQu5E,eAAgB,CAC/B,CACA,eAAAl3D,CAAgBslD,EAAO5sC,GACrBnuC,KAAKu+E,mBAAmB/C,iBAAiB,YAAaT,GACtD/6E,KAAK+uC,IAAIuyC,UAAYthF,KAAKoT,QAAQq0E,UAAYt5C,EAC9CnuC,KAAKoT,QAAQs5E,aAAc,CAC7B,CACA,kBAAAl1D,CAAmBujD,GACjB/6E,KAAKu+E,mBAAmB/C,iBAAiB,YAAaT,GACtD/6E,KAAK+uC,IAAIuyC,UAAYthF,KAAKoT,QAAQq0E,UAAY,cAC9CznF,KAAKoT,QAAQs5E,aAAc,CAC7B,CACA,WAAAkO,CAAY7f,EAAOvQ,EAAOrqC,EAAS,MACjC,IAAIqgD,EAUJ,OATIxgF,KAAKixF,eAAeppF,IAAI2iE,GAC1BgW,EAAUxgF,KAAKixF,eAAepuF,IAAI2nE,IAElCgW,EAAUwE,GAAkBhlF,KAAKwxF,UAAUzW,EAAOvQ,IAClDxqE,KAAKixF,eAAerpF,IAAI4iE,EAAOgW,IAE7BrgD,IACFqgD,EAAQrgD,OAASA,GAEZqgD,CACT,CACA,WAAA5qD,CAAYmlD,EAAOvQ,GACjB,IAAKxqE,KAAKgxF,eACR,OAEF,MAAMjiD,EAAM/uC,KAAK+uC,IACjB/uC,KAAKyyB,KAAKsoD,GACV,MAAMyF,EAAUxgF,KAAK46F,YAAY7f,EAAOvQ,GACxCz7B,EAAIuyC,UAAYd,EAAQtB,WAAWnwC,EAAK/uC,KAAMivC,GAA2BF,GAAM6vC,GAASC,QAAS9D,GACjG,MAAM8f,EAAM5rD,GAA2BF,GACvC,GAAI8rD,EAAK,CACP,MAAM,MACJp+E,EAAK,OACLC,GACEqyB,EAAItsB,OACFmb,EAASirD,GAAa1lF,QAC5Bi6B,GAAK0B,wBAAwB,CAAC,EAAG,EAAGriB,EAAOC,GAASm+E,EAAKj9D,GACzD,MAAOqD,EAAIC,EAAIC,EAAIC,GAAMxD,EACzB59B,KAAK+uC,IAAI8iD,SAAS5wD,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,EAC1C,MACElhC,KAAK+uC,IAAI8iD,UAAU,MAAO,KAAM,KAAM,MAExC7xF,KAAKu+E,mBAAmBpC,UAAUpB,GAAO8B,mBAAmB9B,GAAOqC,mBAAmBrC,EAAO0D,GAAal2D,WAAW60D,mBAAmBrC,EAAO0D,GAAarrD,MAAMqqD,gBAAgB1C,GAClL/6E,KAAKo1F,QAAQp1F,KAAKoT,QAAQ2tE,6BAC1B/gF,KAAK0yB,QAAQqoD,EACf,CACA,gBAAAllD,GACE2C,EAAY,mCACd,CACA,cAAA1C,GACE0C,EAAY,iCACd,CACA,qBAAAhC,CAAsBukD,EAAO56C,EAAQkrC,GACnC,GAAKrrE,KAAKgxF,iBAGVhxF,KAAKyyB,KAAKsoD,GACV/6E,KAAK2wF,mBAAmB1mF,KAAKjK,KAAKygF,eAC9BtgD,GACFngC,KAAKuoB,UAAUwyD,KAAU56C,GAE3BngC,KAAKygF,cAAgB3xC,GAAoB9uC,KAAK+uC,KAC1Cs8B,GAAM,CACRjuC,GAAK0B,wBAAwBusC,EAAMrrE,KAAKygF,cAAezgF,KAAKoT,QAAQwqB,QACpE,MAAOqD,EAAIC,EAAIC,EAAIC,GAAMiqC,EACnB13C,EAAO,IAAIggB,OACjBhgB,EAAKoL,KAAKkC,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,GAChClhC,KAAK+uC,IAAIpb,KAAKA,GACd3zB,KAAKu+E,mBAAmBnC,cAAcrB,EAAO/6E,KAAK+uC,IAAK9N,EAAIE,EAAID,EAAIE,GACnEphC,KAAK0zB,QAAQqnD,EACf,CACF,CACA,mBAAAtkD,CAAoBskD,GACb/6E,KAAKgxF,iBAGVhxF,KAAK0yB,QAAQqoD,GACb/6E,KAAKygF,cAAgBzgF,KAAK2wF,mBAAmBvpD,MAC/C,CACA,UAAA1Q,CAAWqkD,EAAO+f,GAChB,IAAK96F,KAAKgxF,eACR,OAEFhxF,KAAKyyB,KAAKsoD,GACN/6E,KAAKgzF,cACPhzF,KAAKi1F,eACLj1F,KAAKoT,QAAQ25E,YAAc,MAE7B,MAAMgO,EAAa/6F,KAAK+uC,IACnB+rD,EAAME,UACT5iE,EAAK,sCAEH0iE,EAAMG,UACR1iE,EAAK,kCAEP,MAAMw7D,EAAmBjlD,GAAoBisD,GAI7C,GAHID,EAAM36D,QACR46D,EAAWxyE,aAAauyE,EAAM36D,SAE3B26D,EAAMzvB,KACT,MAAM,IAAI5yC,MAAM,6BAElB,IAAI63C,EAASuY,GAAa1lF,QAC1Bi6B,GAAK0B,wBAAwBg8D,EAAMzvB,KAAMv8B,GAAoBisD,GAAazqB,GAC1E,MAAM4qB,EAAe,CAAC,EAAG,EAAGH,EAAWt4E,OAAOhG,MAAOs+E,EAAWt4E,OAAO/F,QACvE4zD,EAASlzC,GAAKoD,UAAU8vC,EAAQ4qB,IAAiB,CAAC,EAAG,EAAG,EAAG,GAC3D,MAAMh0E,EAAUxgB,KAAKC,MAAM2pE,EAAO,IAC5BnpD,EAAUzgB,KAAKC,MAAM2pE,EAAO,IAC5B+jB,EAAa3tF,KAAKmN,IAAInN,KAAKD,KAAK6pE,EAAO,IAAMppD,EAAS,GACtDotE,EAAc5tF,KAAKmN,IAAInN,KAAKD,KAAK6pE,EAAO,IAAMnpD,EAAS,GAC7DnnB,KAAKoT,QAAQk6E,uBAAuB,CAAC,EAAG,EAAG+G,EAAYC,IACvD,IAAIY,EAAU,UAAYl1F,KAAKymF,WAC3BqU,EAAMxF,QACRJ,GAAW,UAAYl1F,KAAK6wF,eAAiB,GAE/C,MAAMsE,EAAgBn1F,KAAKihF,eAAeC,UAAUgU,EAASb,EAAYC,GACnE6G,EAAWhG,EAAcryE,QAC/Bq4E,EAASzhC,WAAWxyC,GAAUC,GAC9Bg0E,EAAS5yE,aAAawrE,GACtB,IAAIpgE,EAAO,IAAIggB,OACf,MAAO1S,EAAIC,EAAIC,EAAIC,GAAM05D,EAAMzvB,KAE/B,GADA13C,EAAKoL,KAAKkC,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,GAC5B45D,EAAM36D,OAAQ,CAChB,MAAMuT,EAAO,IAAIC,OACjBD,EAAKmjD,QAAQljE,EAAM,IAAI8tD,UAAUqZ,EAAM36D,SACvCxM,EAAO+f,CACT,CACAynD,EAASxnE,KAAKA,GACVmnE,EAAMxF,OACRt1F,KAAK4wF,WAAW3mF,KAAK,CACnBwY,OAAQ0yE,EAAc1yE,OACtBK,QAASq4E,EACTj0E,UACAC,UACA4uE,QAAS+E,EAAMxF,MAAMS,QACrBC,SAAU8E,EAAMxF,MAAMU,SACtBC,YAAa6E,EAAMxF,MAAMW,aAAe,KACxCmF,sBAAuB,OAGtBN,EAAMxF,QAASt1F,KAAKu+E,oBACvBwc,EAAWrZ,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACvCqZ,EAAWrhC,UAAUxyC,EAASC,GAC9B4zE,EAAWtoE,QAEbi8D,GAAaqM,EAAYI,GACzBn7F,KAAK+uC,IAAMosD,EACXn7F,KAAKu+E,mBAAmBvC,4CAA4C,CAAC,YAAa,cAAe,6BAA6BV,kBAAkByf,GAChJ/6F,KAAKwyB,UAAUuoD,EAAO,CAAC,CAAC,KAAM,eAAgB,CAAC,KAAM,GAAI,CAAC,KAAM,KAChE/6E,KAAK0wF,WAAWzmF,KAAK8wF,GACrB/6F,KAAKymF,YACP,CACA,QAAA9vD,CAASokD,EAAO+f,GACd,IAAK96F,KAAKgxF,eACR,OAEFhxF,KAAKymF,aACL,MAAM0U,EAAWn7F,KAAK+uC,IAChBA,EAAM/uC,KAAK0wF,WAAWtpD,MAI5B,GAHApnC,KAAK+uC,IAAMA,EACX/uC,KAAK+uC,IAAI0lD,uBAAwB,EACjCz0F,KAAKu+E,mBAAmBhD,mBACpBuf,EAAMxF,MACRt1F,KAAK8wF,UAAY9wF,KAAK4wF,WAAWxpD,MACjCpnC,KAAK0yB,QAAQqoD,GACT/6E,KAAKu+E,mBACPv+E,KAAK+uC,IAAIrc,cAEN,CACL1yB,KAAK+uC,IAAIrc,UACT,MAAM2oE,EAAavsD,GAAoB9uC,KAAK+uC,KAC5C/uC,KAAK0yB,QAAQqoD,GACb/6E,KAAK+uC,IAAItc,OACTzyB,KAAK+uC,IAAI2yC,gBAAgB2Z,GACzB,MAAMhG,EAAWxM,GAAa1lF,QAC9Bi6B,GAAK0B,wBAAwB,CAAC,EAAG,EAAGq8D,EAAS14E,OAAOhG,MAAO0+E,EAAS14E,OAAO/F,QAAS2+E,EAAYhG,GAChGr1F,KAAK+uC,IAAI4K,UAAUwhD,EAAS14E,OAAQ,EAAG,GACvCziB,KAAK+uC,IAAIrc,UACT1yB,KAAKo1F,QAAQC,EACf,CACF,CACA,eAAAz+D,CAAgBmkD,EAAOxrE,EAAIwvB,EAAMxW,EAAW4X,EAAQm7D,GAQlD,GAPAt7F,MAAK,KACLivF,GAAkBjvF,KAAK+uC,KACvB/uC,KAAK+uC,IAAItc,OACTzyB,KAAKyyB,KAAKsoD,GACN/6E,KAAKygF,eACPzgF,KAAK+uC,IAAI2yC,gBAAgB1hF,KAAKygF,eAE5B1hD,EAAM,CACR,MAAMtiB,EAAQsiB,EAAK,GAAKA,EAAK,GACvBriB,EAASqiB,EAAK,GAAKA,EAAK,GAC9B,GAAIu8D,GAAgBt7F,KAAKqwF,oBAAqB,CAC5C9nE,EAAYA,EAAUplB,QACtBolB,EAAU,IAAMwW,EAAK,GACrBxW,EAAU,IAAMwW,EAAK,GACrBA,EAAOA,EAAK57B,QACZ47B,EAAK,GAAKA,EAAK,GAAK,EACpBA,EAAK,GAAKtiB,EACVsiB,EAAK,GAAKriB,EACV0gB,GAAK8C,8BAA8B4O,GAAoB9uC,KAAK+uC,KAAM65C,IAClE,MAAM,cACJsI,GACElxF,KACEuiB,EAAc7b,KAAKD,KAAKgW,EAAQzc,KAAKmxF,aAAeD,GACpDxuE,EAAehc,KAAKD,KAAKiW,EAAS1c,KAAKoxF,aAAeF,GAC5DlxF,KAAKu7F,iBAAmBv7F,KAAKsqF,cAAc79E,OAAO8V,EAAaG,GAC/D,MAAM,OACJD,EAAM,QACNK,GACE9iB,KAAKu7F,iBACTv7F,KAAKqwF,oBAAoBzoF,IAAI2H,EAAIkT,GACjCziB,KAAKu7F,iBAAiBC,SAAWx7F,KAAK+uC,IACtC/uC,KAAK+uC,IAAMjsB,EACX9iB,KAAK+uC,IAAItc,OACTzyB,KAAK+uC,IAAI2yC,aAAakH,GAAG,GAAI,EAAG,GAAIA,GAAG,GAAI,EAAGlsE,EAASksE,GAAG,IAC1DqG,GAAkBjvF,KAAK+uC,IACzB,KAAO,CACLkgD,GAAkBjvF,KAAK+uC,KACvB/uC,KAAK0zB,QAAQqnD,GACb,MAAMpnD,EAAO,IAAIggB,OACjBhgB,EAAKoL,KAAKA,EAAK,GAAIA,EAAK,GAAItiB,EAAOC,GACnC1c,KAAK+uC,IAAIpb,KAAKA,EAChB,CACF,CACA3zB,KAAKoT,QAAU,IAAIw4E,GAAiB5rF,KAAK+uC,IAAItsB,OAAOhG,MAAOzc,KAAK+uC,IAAItsB,OAAO/F,QAC3E1c,KAAKuoB,UAAUwyD,KAAUxyD,GACzBvoB,KAAKuoB,UAAUwyD,KAAU56C,EAC3B,CACA,aAAAtJ,CAAckkD,GACR/6E,KAAKu7F,mBACPv7F,KAAK+uC,IAAIrc,UACT1yB,MAAK,KACLA,KAAK+uC,IAAM/uC,KAAKu7F,iBAAiBC,gBAC1Bx7F,KAAKu7F,iBAAiBC,gBACtBx7F,KAAKu7F,iBAEhB,CACA,qBAAAzkE,CAAsBikD,EAAOsY,GAC3B,IAAKrzF,KAAKgxF,eACR,OAEF,MAAM1rB,EAAQ+tB,EAAI/tB,MAClB+tB,EAAMrzF,KAAKwxF,UAAUzW,EAAOsY,EAAIzkF,KAAMykF,GACtCA,EAAI/tB,MAAQA,EACZ,MAAMv2B,EAAM/uC,KAAK+uC,IACXw/C,EAAOvuF,KAAK6zF,kBAAkB9Y,EAAOsY,GACrCY,EAAa1F,EAAK9rE,OACxBssB,EAAItc,OACJsc,EAAI2yC,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChC3yC,EAAI4K,UAAUs6C,EAAY1F,EAAKrnE,QAASqnE,EAAKpnE,SAC7CnnB,KAAKu+E,mBAAmBpC,UAAUpB,GAAOwB,WAAWxB,EAAO/6E,KAAK+uC,IAAKw/C,EAAKrnE,QAASqnE,EAAKrnE,QAAU+sE,EAAWx3E,MAAO8xE,EAAKpnE,QAASonE,EAAKpnE,QAAU8sE,EAAWv3E,QAAQ+gE,gBAAgB1C,GACpLhsC,EAAIrc,UACJ1yB,KAAKo1F,SACP,CACA,2BAAAh+D,CAA4B2jD,EAAOsY,EAAKnR,EAAQuZ,EAAQ,EAAGC,EAAQ,EAAGvZ,EAAQwZ,GAC5E,IAAK37F,KAAKgxF,eACR,OAEFqC,EAAMrzF,KAAKwxF,UAAUzW,EAAOsY,EAAIzkF,KAAMykF,GACtC,MAAMtkD,EAAM/uC,KAAK+uC,IACjBA,EAAItc,OACJ,MAAMshE,EAAmBjlD,GAAoBC,GAC7CA,EAAIxmB,UAAU25D,EAAQuZ,EAAOC,EAAOvZ,EAAQ,EAAG,GAC/C,MAAMoM,EAAOvuF,KAAK6zF,kBAAkB9Y,EAAOsY,GAC3CtkD,EAAI2yC,aAAa,EAAG,EAAG,EAAG,EAAG6M,EAAKrnE,QAAU6sE,EAAiB,GAAIxF,EAAKpnE,QAAU4sE,EAAiB,IACjG/zF,KAAKu+E,mBAAmBpC,UAAUpB,GAClC,IAAK,IAAI9xE,EAAI,EAAG2hC,EAAK+wD,EAAU76F,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAAG,CACrD,MAAM2yF,EAAQx+D,GAAK7U,UAAUwrE,EAAkB,CAAC7R,EAAQuZ,EAAOC,EAAOvZ,EAAQwZ,EAAU1yF,GAAI0yF,EAAU1yF,EAAI,KAC1G8lC,EAAI4K,UAAU40C,EAAK9rE,OAAQm5E,EAAM,GAAIA,EAAM,IAC3C57F,KAAKu+E,mBAAmBhC,WAAWxB,EAAO/6E,KAAK+uC,IAAK6sD,EAAM,GAAIA,EAAM,GAAKrN,EAAK9rE,OAAOhG,MAAOm/E,EAAM,GAAIA,EAAM,GAAKrN,EAAK9rE,OAAO/F,OAC/H,CACAqyB,EAAIrc,UACJ1yB,KAAKo1F,UACLp1F,KAAKu+E,mBAAmBd,gBAAgB1C,EAC1C,CACA,0BAAAhkD,CAA2BgkD,EAAO8gB,GAChC,IAAK77F,KAAKgxF,eACR,OAEF,MAAMjiD,EAAM/uC,KAAK+uC,IACX04C,EAAYznF,KAAKoT,QAAQq0E,UACzBqM,EAAgB9zF,KAAKoT,QAAQs5E,YACnC1sF,KAAKu+E,mBAAmBpC,UAAUpB,GAAOqC,mBAAmBrC,EAAO0D,GAAaE,kBAChF,IAAK,MAAMnlC,KAASqiD,EAAQ,CAC1B,MAAM,KACJjtF,EAAI,MACJ6N,EAAK,OACLC,EAAM,UACN6L,GACEixB,EACEy6C,EAAaj0F,KAAKihF,eAAeC,UAAU,aAAczkE,EAAOC,GAChEw5E,EAAUjC,EAAWnxE,QAC3BozE,EAAQzjE,OACR,MAAM4gE,EAAMrzF,KAAKwxF,UAAUzW,EAAOnsE,EAAM4qC,GACxCi1C,GAAmByH,EAAS7C,GAC5B6C,EAAQ3G,yBAA2B,YACnC2G,EAAQ5U,UAAYwS,EAAgBrM,EAAUvI,WAAWgX,EAASl2F,KAAMivC,GAA2BF,GAAM6vC,GAAS1vD,KAAM6rD,GAAS0M,EACjIyO,EAAQrE,SAAS,EAAG,EAAGp1E,EAAOC,GAC9Bw5E,EAAQxjE,UACRqc,EAAItc,OACJsc,EAAIxmB,aAAaA,GACjBwmB,EAAIpxB,MAAM,GAAI,GACd8sE,GAAyB17C,EAAKklD,EAAWxxE,OAAQ,EAAG,EAAGhG,EAAOC,EAAQ,GAAI,EAAG,EAAG,GAChF1c,KAAKu+E,mBAAmBhC,WAAWxB,EAAOhsC,EAAK,EAAGtyB,EAAO,EAAGC,GAC5DqyB,EAAIrc,SACN,CACA1yB,KAAKo1F,UACLp1F,KAAKu+E,mBAAmBd,gBAAgB1C,EAC1C,CACA,iBAAA/jD,CAAkB+jD,EAAOvQ,GACvB,IAAKxqE,KAAKgxF,eACR,OAEF,MAAMvD,EAAUztF,KAAKwxF,UAAUzW,EAAOvQ,GACjCijB,EAILztF,KAAKi3B,wBAAwB8jD,EAAO0S,GAHlCl1D,EAAK,kCAIT,CACA,uBAAApB,CAAwB4jD,EAAOvQ,EAAO0X,EAAQC,EAAQwZ,GACpD,IAAK37F,KAAKgxF,eACR,OAEF,MAAMvD,EAAUztF,KAAKwxF,UAAUzW,EAAOvQ,GACtC,IAAKijB,EAEH,YADAl1D,EAAK,mCAGP,MAAM9b,EAAQgxE,EAAQhxE,MAChBC,EAAS+wE,EAAQ/wE,OACjB7S,EAAM,GACZ,IAAK,IAAIZ,EAAI,EAAG2hC,EAAK+wD,EAAU76F,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAClDY,EAAII,KAAK,CACPse,UAAW,CAAC25D,EAAQ,EAAG,EAAGC,EAAQwZ,EAAU1yF,GAAI0yF,EAAU1yF,EAAI,IAC9DpC,EAAG,EACH2X,EAAG,EACH+wB,EAAG9yB,EACHkI,EAAGjI,IAGP1c,KAAKk3B,6BAA6B6jD,EAAO0S,EAAS5jF,EACpD,CACA,yBAAAiyF,CAA0B/sD,GAMxB,MALkC,SAA9B/uC,KAAKoT,QAAQ45E,eACfj+C,EAAIliC,OAAS7M,KAAKoT,QAAQ45E,aAC1Bj+C,EAAI4K,UAAU5K,EAAItsB,OAAQ,EAAG,GAC7BssB,EAAIliC,OAAS,QAERkiC,EAAItsB,MACb,CACA,yBAAAs5E,CAA0BtO,GACxB,GAAkC,SAA9BztF,KAAKoT,QAAQ45E,aACf,OAAOS,EAAQp2E,OAEjB,MAAM,OACJA,EAAM,MACNoF,EAAK,OACLC,GACE+wE,EACEzM,EAAYhhF,KAAKihF,eAAeC,UAAU,cAAezkE,EAAOC,GAChEykE,EAASH,EAAUl+D,QAIzB,OAHAq+D,EAAOt0E,OAAS7M,KAAKoT,QAAQ45E,aAC7B7L,EAAOxnC,UAAUtiC,EAAQ,EAAG,GAC5B8pE,EAAOt0E,OAAS,OACTm0E,EAAUv+D,MACnB,CACA,uBAAAwU,CAAwB8jD,EAAO0S,GAC7B,IAAKztF,KAAKgxF,eACR,OAEF,MAAMv0E,EAAQgxE,EAAQhxE,MAChBC,EAAS+wE,EAAQ/wE,OACjBqyB,EAAM/uC,KAAK+uC,IACjB/uC,KAAKyyB,KAAKsoD,GACV,MAAM,OACJluE,GACEkiC,EAKJ,IAAIitD,EACJ,GALe,SAAXnvF,GAAgC,KAAXA,IACvBkiC,EAAIliC,OAAS,QAEfkiC,EAAIpxB,MAAM,EAAIlB,GAAQ,EAAIC,GAEtB+wE,EAAQp2E,OACV2kF,EAAah8F,KAAK+7F,0BAA0BtO,QACvC,GAA2B,oBAAhBwO,aAA8BxO,aAAmBwO,cAAgBxO,EAAQ7+E,KACzFotF,EAAavO,MACR,CACL,MAAMzM,EAAYhhF,KAAKihF,eAAeC,UAAU,cAAezkE,EAAOC,GAChEykE,EAASH,EAAUl+D,QACzB0qE,GAAmBrM,EAAQsM,GAC3BuO,EAAah8F,KAAK87F,0BAA0B3a,EAC9C,CACA,MAAMrxC,EAAS9vC,KAAKozF,YAAY4I,EAAY/sD,GAA2BF,IACvEA,EAAI0lD,sBAAwBjF,GAAyB1gD,GAAoBC,GAAM0+C,EAAQgC,aACvFzvF,KAAKu+E,mBAAmBpC,UAAUpB,GAAOwB,WAAWxB,EAAOhsC,EAAK,EAAGtyB,GAAQC,EAAQ,GAAG0gE,mBAAmBrC,EAAO0D,GAAaC,cAAcjB,gBAAgB1C,GAC3J0P,GAAyB17C,EAAKe,EAAOujD,IAAK,EAAG,EAAGvjD,EAAO4jD,WAAY5jD,EAAO6jD,YAAa,GAAIj3E,EAAQD,EAAOC,GAC1G1c,KAAKo1F,UACLp1F,KAAK0yB,QAAQqoD,EACf,CACA,4BAAA7jD,CAA6B6jD,EAAO0S,EAAS5jF,GAC3C,IAAK7J,KAAKgxF,eACR,OAEF,MAAMjiD,EAAM/uC,KAAK+uC,IACjB,IAAIitD,EACJ,GAAIvO,EAAQp2E,OACV2kF,EAAavO,EAAQp2E,WAChB,CACL,MAAMk4B,EAAIk+C,EAAQhxE,MACZkI,EAAI8oE,EAAQ/wE,OACZskE,EAAYhhF,KAAKihF,eAAeC,UAAU,cAAe3xC,EAAG5qB,GAC5Dw8D,EAASH,EAAUl+D,QACzB0qE,GAAmBrM,EAAQsM,GAC3BuO,EAAah8F,KAAK87F,0BAA0B3a,EAC9C,CACAnhF,KAAKu+E,mBAAmBpC,UAAUpB,GAClC,IAAK,MAAMrW,KAAS76D,EAClBklC,EAAItc,OACJsc,EAAIxmB,aAAam8C,EAAMn8C,WACvBwmB,EAAIpxB,MAAM,GAAI,GACd8sE,GAAyB17C,EAAKitD,EAAYt3B,EAAM79D,EAAG69D,EAAMlmD,EAAGkmD,EAAMn1B,EAAGm1B,EAAM//C,EAAG,GAAI,EAAG,EAAG,GACxF3kB,KAAKu+E,mBAAmBhC,WAAWxB,EAAOhsC,EAAK,EAAG,GAAI,EAAG,GACzDA,EAAIrc,UAEN1yB,KAAKu+E,mBAAmBd,gBAAgB1C,GACxC/6E,KAAKo1F,SACP,CACA,wBAAA/9D,CAAyB0jD,GAClB/6E,KAAKgxF,iBAGVhxF,KAAKu+E,mBAAmBpC,UAAUpB,GAAOwB,WAAWxB,EAAO/6E,KAAK+uC,IAAK,EAAG,EAAG,EAAG,GAAGquC,mBAAmBrC,EAAO0D,GAAarrD,MAAMqqD,gBAAgB1C,GAC9I/6E,KAAK+uC,IAAI8iD,SAAS,EAAG,EAAG,EAAG,GAC3B7xF,KAAKo1F,UACP,CACA,SAAAn/D,CAAU8kD,EAAO7jE,GAAM,CACvB,cAAAgf,CAAe6kD,EAAO7jE,EAAK03E,GAAa,CACxC,kBAAAz4D,CAAmB4kD,EAAO7jE,GACxBlX,KAAKu+E,mBAAmBpoD,mBAAmB4kD,GAC3C/6E,KAAKowF,mBAAmBnmF,KAAK,CAC3BqhD,SAAS,GAEb,CACA,uBAAAl1B,CAAwB2kD,EAAO7jE,EAAK03E,GAClC5uF,KAAKu+E,mBAAmBpoD,mBAAmB4kD,GAC/B,OAAR7jE,EACFlX,KAAKowF,mBAAmBnmF,KAAK,CAC3BqhD,QAAStrD,KAAKmwF,sBAAsB+L,UAAUtN,KAGhD5uF,KAAKowF,mBAAmBnmF,KAAK,CAC3BqhD,SAAS,IAGbtrD,KAAKgxF,eAAiBhxF,KAAKm8F,kBAC7B,CACA,gBAAA9lE,CAAiB0kD,GACf/6E,KAAKu+E,mBAAmBloD,iBAAiB0kD,GACzC/6E,KAAKowF,mBAAmBhpD,MACxBpnC,KAAKgxF,eAAiBhxF,KAAKm8F,kBAC7B,CACA,WAAA7lE,CAAYykD,GAAQ,CACpB,SAAAxkD,CAAUwkD,GAAQ,CAClB,WAAA4b,CAAY5b,EAAOrnC,EAAM2oC,GACvB,MAAMv+B,EAAU99C,KAAKoT,QAAQm6E,cACzBvtF,KAAKuwF,aACPvwF,KAAKoT,QAAQi6E,qBAEVrtF,KAAKuwF,aACRvwF,KAAKo1F,QAAQ/Y,GAEf,MAAMttC,EAAM/uC,KAAK+uC,IACb/uC,KAAKuwF,aACFzyC,IACC99C,KAAKuwF,cAAgBR,GACvBhhD,EAAIpb,KAAK+f,EAAM,WAEf3E,EAAIpb,KAAK+f,IAGb1zC,KAAKuwF,YAAc,KACnBvwF,KAAKu+E,mBAAmBR,2BAA2BhD,GAAOgB,6BAA6B,WAAYhB,IAEnG/6E,KAAKu+E,mBAAmBd,gBAAgB1C,GAE1C/6E,KAAKoT,QAAQk6E,uBAAuBttF,KAAKoT,QAAQipE,QACnD,CACA,mBAAAwc,GACE,IAAK74F,KAAKsxF,2BAA4B,CACpC,MAAMtzD,EAAI8Q,GAAoB9uC,KAAK+uC,KACnC,GAAa,IAAT/Q,EAAE,IAAqB,IAATA,EAAE,GAClBh+B,KAAKsxF,2BAA6B,EAAI5qF,KAAKoN,IAAIpN,KAAKm7B,IAAI7D,EAAE,IAAKt3B,KAAKm7B,IAAI7D,EAAE,SACrE,CACL,MAAMo+D,EAAS11F,KAAKm7B,IAAI7D,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACzCq+D,EAAQ31F,KAAK+uD,MAAMz3B,EAAE,GAAIA,EAAE,IAC3Bs+D,EAAQ51F,KAAK+uD,MAAMz3B,EAAE,GAAIA,EAAE,IACjCh+B,KAAKsxF,2BAA6B5qF,KAAKmN,IAAIwoF,EAAOC,GAASF,CAC7D,CACF,CACA,OAAOp8F,KAAKsxF,0BACd,CACA,mBAAAiL,GACE,IAAyC,IAArCv8F,KAAKqxF,wBAAwB,GAAW,CAC1C,MAAM,UACJvE,GACE9sF,KAAKoT,SACH,EACJ4B,EAAC,EACDC,EAAC,EACDyoB,EAAC,EACD5hB,GACE9b,KAAK+uC,IAAIC,eACb,IAAIkzC,EAAQC,EACZ,GAAU,IAANltE,GAAiB,IAANyoB,EAAS,CACtB,MAAM2+D,EAAQ31F,KAAKm7B,IAAI7sB,GACjBsnF,EAAQ51F,KAAKm7B,IAAI/lB,GACvB,GAAIugF,IAAUC,EACZ,GAAkB,IAAdxP,EACF5K,EAASC,EAAS,EAAIka,MACjB,CACL,MAAMG,EAAkBH,EAAQvP,EAChC5K,EAASC,EAASqa,EAAkB,EAAI,EAAIA,EAAkB,CAChE,MACK,GAAkB,IAAd1P,EACT5K,EAAS,EAAIma,EACbla,EAAS,EAAIma,MACR,CACL,MAAMG,EAAmBJ,EAAQvP,EAC3B4P,EAAmBJ,EAAQxP,EACjC5K,EAASua,EAAmB,EAAI,EAAIA,EAAmB,EACvDta,EAASua,EAAmB,EAAI,EAAIA,EAAmB,CACzD,CACF,KAAO,CACL,MAAMN,EAAS11F,KAAKm7B,IAAI7sB,EAAI8G,EAAI7G,EAAIyoB,GAC9B2+D,EAAQ31F,KAAK+uD,MAAMzgD,EAAGC,GACtBqnF,EAAQ51F,KAAK+uD,MAAM/3B,EAAG5hB,GAC5B,GAAkB,IAAdgxE,EACF5K,EAASoa,EAAQF,EACjBja,EAASka,EAAQD,MACZ,CACL,MAAMO,EAAW7P,EAAYsP,EAC7Bla,EAASoa,EAAQK,EAAWL,EAAQK,EAAW,EAC/Cxa,EAASka,EAAQM,EAAWN,EAAQM,EAAW,CACjD,CACF,CACA38F,KAAKqxF,wBAAwB,GAAKnP,EAClCliF,KAAKqxF,wBAAwB,GAAKlP,CACpC,CACA,OAAOniF,KAAKqxF,uBACd,CACA,gBAAA0F,CAAiBrjD,EAAMkpD,GACrB,MAAM,IACJ7tD,EACA37B,SAAS,UACP05E,IAEA9sF,MACGkiF,EAAQC,GAAUniF,KAAKu8F,sBAC9B,GAAIra,IAAWC,EAGb,OAFApzC,EAAI+9C,WAAaA,GAAa,GAAK5K,OACnCnzC,EAAI7b,OAAOwgB,GAGb,MAAMmpD,EAAS9tD,EAAIggD,cACf6N,GACF7tD,EAAItc,OAENsc,EAAIpxB,MAAMukE,EAAQC,GAClBwG,GAAa3zE,EAAI,EAAIktE,EACrByG,GAAa7sE,EAAI,EAAIqmE,EACrB,MAAMyU,EAAU,IAAIjjD,OAEpB,GADAijD,EAAQC,QAAQnjD,EAAMi1C,IAClBkU,EAAO/7F,OAAS,EAAG,CACrB,MAAM6c,EAAQjX,KAAKmN,IAAIquE,EAAQC,GAC/BpzC,EAAI+/C,YAAY+N,EAAOhzF,IAAIhD,GAAKA,EAAI8W,IACpCoxB,EAAIigD,gBAAkBrxE,CACxB,CACAoxB,EAAI+9C,UAAYA,GAAa,EAC7B/9C,EAAI7b,OAAO0jE,GACPgG,GACF7tD,EAAIrc,SAER,CACA,gBAAAypE,GACE,IAAK,IAAIlzF,EAAIjJ,KAAKowF,mBAAmBtvF,OAAS,EAAGmI,GAAK,EAAGA,IACvD,IAAKjJ,KAAKowF,mBAAmBnnF,GAAGqiD,QAC9B,OAAO,EAGX,OAAO,CACT,EAEF,IAAK,MAAMkrC,MAAMzkE,OACsB5tB,IAAjC6rF,GAAe9rF,UAAUsyF,MAC3BxG,GAAe9rF,UAAU6tB,EAAIykE,KAAOxG,GAAe9rF,UAAUsyF,KAKjE,MAAM,GACJ3uD,UAAe,KACfA,UAAc,GACd,qBAAWi1D,GACT,OAAO98F,MAAK,EACd,CACA,qBAAW88F,CAAWhsF,GACpB,KAAwB,qBAAXisF,QAA0BjsF,aAAeisF,SAAmB,OAARjsF,EAC/D,MAAM,IAAI2nB,MAAM,8BAElBz4B,MAAK,GAAQ8Q,CACf,CACA,oBAAWksF,GACT,OAAOh9F,MAAK,EACd,CACA,oBAAWg9F,CAAUlsF,GACnB,GAAmB,kBAARA,EACT,MAAM,IAAI2nB,MAAM,6BAElBz4B,MAAK,GAAO8Q,CACd,EAIF,MAAMmsF,GACJ,IACA,IACA,WAAAj5F,EAAY,WACVk5F,EAAU,QACVrjD,IAEA75C,MAAK,GAAOk9F,EACZl9F,MAAK,GAAQ65C,CACf,CACA,MAAAsjD,GACE,OAAOn9F,MAAK,EACd,CACA,GAAA6C,CAAIa,GACF,OAAO1D,MAAK,GAAK6C,IAAIa,IAAS,IAChC,CACA,CAACqO,OAAOhM,YACN,OAAO/F,MAAK,GAAKuF,SACnB,EAMF,MAAM63F,GAAWrrF,OAAO,YACxB,MAAMsrF,GACJ,KAAa,EACb,KAAW,EACX,KAAW,EACX,KAAW,EACX,WAAAr5F,CAAYs5F,GAAiB,KAC3B55F,EAAI,OACJ0hC,EAAM,MACNm4D,EAAK,SACLC,IAEAx9F,MAAK,MAAgBs9F,EAAkBxxE,EAAoBE,SAC3DhsB,MAAK,MAAcs9F,EAAkBxxE,EAAoBG,OACzDjsB,KAAK0D,KAAOA,EACZ1D,KAAKolC,OAASA,EACdplC,KAAKu9F,MAAQA,EACbv9F,KAAKw9F,SAAWA,CAClB,CACA,WAAIlyC,GACF,GAAItrD,MAAK,GACP,OAAOA,MAAK,GAEd,IAAKA,MAAK,GACR,OAAO,EAET,MAAM,MACJ2kE,EAAK,KACLuH,GACElsE,KAAKu9F,MACT,OAAIv9F,MAAK,GACoB,QAApBksE,GAAMuxB,WACJz9F,MAAK,IACe,QAAtB2kE,GAAO+4B,UAGlB,CACA,WAAAC,CAAYC,EAAUtyC,EAASuyC,GAAU,GACnCD,IAAaR,IACf5kE,EAAY,yCAEdx4B,MAAK,GAAW69F,EAChB79F,MAAK,GAAWsrD,CAClB,EAEF,MAAMwyC,GACJ,IAAiB,KACjB,IAAU,IAAIx4F,IACd,IAAe,KACf,IAAS,KACT,WAAAtB,CAAY4K,EAAM0uF,EAAkBxxE,EAAoBE,SAItD,GAHAhsB,KAAKs9F,gBAAkBA,EACvBt9F,KAAK0D,KAAO,KACZ1D,KAAK+9F,QAAU,KACF,OAATnvF,EAAJ,CAGA5O,KAAK0D,KAAOkL,EAAKlL,KACjB1D,KAAK+9F,QAAUnvF,EAAKmvF,QACpB/9F,MAAK,GAAS4O,EAAKovF,MACnB,IAAK,MAAMlD,KAASlsF,EAAKqvF,OACvBj+F,MAAK,GAAQ4H,IAAIkzF,EAAMvrF,GAAI,IAAI8tF,GAAqBC,EAAiBxC,IAEvE,GAAuB,QAAnBlsF,EAAKsvF,UACP,IAAK,MAAMpD,KAAS96F,MAAK,GAAQ8rC,SAC/BgvD,EAAM6C,YAAYP,IAAU,GAGhC,IAAK,MAAMlgF,KAAMtO,EAAKsO,GACpBld,MAAK,GAAQ6C,IAAIqa,GAAIygF,YAAYP,IAAU,GAE7C,IAAK,MAAMe,KAAOvvF,EAAKuvF,IACrBn+F,MAAK,GAAQ6C,IAAIs7F,GAAKR,YAAYP,IAAU,GAE9Cp9F,MAAK,GAAeA,KAAKo+F,SAlBzB,CAmBF,CACA,IAA8B3rD,GAC5B,MAAM3xC,EAAS2xC,EAAM3xC,OACrB,GAAIA,EAAS,EACX,OAAO,EAET,MAAMu9F,EAAW5rD,EAAM,GACvB,IAAK,IAAIxpC,EAAI,EAAGA,EAAInI,EAAQmI,IAAK,CAC/B,MAAMi8B,EAAUuN,EAAMxpC,GACtB,IAAI7E,EACJ,GAAImM,MAAMS,QAAQk0B,GAChB9gC,EAAQpE,MAAK,GAA8BklC,OACtC,KAAIllC,MAAK,GAAQ6H,IAAIq9B,GAI1B,OADA3M,EAAK,qCAAqC2M,MACnC,EAHP9gC,EAAQpE,MAAK,GAAQ6C,IAAIqiC,GAASomB,OAIpC,CACA,OAAQ+yC,GACN,IAAK,MACH,IAAKj6F,EACH,OAAO,EAET,MACF,IAAK,KACH,GAAIA,EACF,OAAO,EAET,MACF,IAAK,MACH,OAAQA,EACV,QACE,OAAO,EAEb,CACA,MAAoB,QAAbi6F,CACT,CACA,SAAAnC,CAAUpB,GACR,GAA0B,IAAtB96F,MAAK,GAAQ6rC,KACf,OAAO,EAET,IAAKivD,EAEH,OADA1iE,EAAK,wCACE,EAET,GAAmB,QAAf0iE,EAAMryF,KACR,OAAKzI,MAAK,GAAQ6H,IAAIizF,EAAMvrF,IAIrBvP,MAAK,GAAQ6C,IAAIi4F,EAAMvrF,IAAI+7C,SAHhC/yB,EAAK,qCAAqCuiE,EAAMvrF,OACzC,GAGJ,GAAmB,SAAfurF,EAAMryF,KAAiB,CAChC,GAAIqyF,EAAMwD,WACR,OAAOt+F,MAAK,GAA8B86F,EAAMwD,YAElD,IAAKxD,EAAMyD,QAA2B,UAAjBzD,EAAMyD,OAAoB,CAC7C,IAAK,MAAMhvF,KAAMurF,EAAMj1B,IAAK,CAC1B,IAAK7lE,MAAK,GAAQ6H,IAAI0H,GAEpB,OADAgpB,EAAK,qCAAqChpB,MACnC,EAET,GAAIvP,MAAK,GAAQ6C,IAAI0M,GAAI+7C,QACvB,OAAO,CAEX,CACA,OAAO,CACT,CAAO,GAAqB,UAAjBwvC,EAAMyD,OAAoB,CACnC,IAAK,MAAMhvF,KAAMurF,EAAMj1B,IAAK,CAC1B,IAAK7lE,MAAK,GAAQ6H,IAAI0H,GAEpB,OADAgpB,EAAK,qCAAqChpB,MACnC,EAET,IAAKvP,MAAK,GAAQ6C,IAAI0M,GAAI+7C,QACxB,OAAO,CAEX,CACA,OAAO,CACT,CAAO,GAAqB,WAAjBwvC,EAAMyD,OAAqB,CACpC,IAAK,MAAMhvF,KAAMurF,EAAMj1B,IAAK,CAC1B,IAAK7lE,MAAK,GAAQ6H,IAAI0H,GAEpB,OADAgpB,EAAK,qCAAqChpB,MACnC,EAET,IAAKvP,MAAK,GAAQ6C,IAAI0M,GAAI+7C,QACxB,OAAO,CAEX,CACA,OAAO,CACT,CAAO,GAAqB,WAAjBwvC,EAAMyD,OAAqB,CACpC,IAAK,MAAMhvF,KAAMurF,EAAMj1B,IAAK,CAC1B,IAAK7lE,MAAK,GAAQ6H,IAAI0H,GAEpB,OADAgpB,EAAK,qCAAqChpB,MACnC,EAET,GAAIvP,MAAK,GAAQ6C,IAAI0M,GAAI+7C,QACvB,OAAO,CAEX,CACA,OAAO,CACT,CAEA,OADA/yB,EAAK,mCAAmCuiE,EAAMyD,YACvC,CACT,CAEA,OADAhmE,EAAK,sBAAsBuiE,EAAMryF,UAC1B,CACT,CACA,aAAA+1F,CAAcjvF,EAAI+7C,GAAU,EAAMmzC,GAAa,GAC7C,MAAM3D,EAAQ96F,MAAK,GAAQ6C,IAAI0M,GAC/B,GAAKurF,EAAL,CAIA,GAAI2D,GAAcnzC,GAAWwvC,EAAM0C,SAAS18F,OAC1C,IAAK,MAAM49F,KAAW5D,EAAM0C,SAC1B,IAAK,MAAMmB,KAAWD,EAChBC,IAAYpvF,GACdvP,MAAK,GAAQ6C,IAAI87F,IAAUhB,YAAYP,IAAU,GAAO,GAKhEtC,EAAM6C,YAAYP,KAAY9xC,GAAS,GACvCtrD,MAAK,GAAiB,IAXtB,MAFEu4B,EAAK,qCAAqChpB,IAc9C,CACA,WAAAqvF,EAAY,MACVx6F,EAAK,WACLq6F,IAEA,IAAIJ,EACJ,IAAK,MAAMhW,KAAQjkF,EAAO,CACxB,OAAQikF,GACN,IAAK,KACL,IAAK,MACL,IAAK,SACHgW,EAAWhW,EACX,SAEJ,MAAMyS,EAAQ96F,MAAK,GAAQ6C,IAAIwlF,GAC/B,GAAKyS,EAGL,OAAQuD,GACN,IAAK,KACHr+F,KAAKw+F,cAAcnW,GAAM,EAAMoW,GAC/B,MACF,IAAK,MACHz+F,KAAKw+F,cAAcnW,GAAM,EAAOoW,GAChC,MACF,IAAK,SACHz+F,KAAKw+F,cAAcnW,GAAOyS,EAAMxvC,QAASmzC,GACzC,MAEN,CACAz+F,MAAK,GAAiB,IACxB,CACA,wBAAI6+F,GACF,OAA6B,OAAtB7+F,MAAK,IAAyBA,KAAKo+F,YAAcp+F,MAAK,EAC/D,CACA,QAAA8+F,GACE,OAAK9+F,MAAK,GAAQ6rC,KAGd7rC,MAAK,GACAA,MAAK,GAAOmD,QAEd,IAAInD,MAAK,GAAQ0H,QALf,IAMX,CACA,QAAAq3F,CAASxvF,GACP,OAAOvP,MAAK,GAAQ6C,IAAI0M,IAAO,IACjC,CACA,OAAA6uF,GACE,GAA4B,OAAxBp+F,MAAK,GACP,OAAOA,MAAK,GAEd,MAAM05B,EAAO,IAAIypC,GACjB,IAAK,MAAO5zD,EAAIurF,KAAU96F,MAAK,GAC7B05B,EAAK+N,OAAO,GAAGl4B,KAAMurF,EAAMxvC,WAE7B,OAAOtrD,MAAK,GAAiB05B,EAAKuqC,WACpC,CACA,CAAClyD,OAAOhM,YACN,OAAO/F,MAAK,GAAQuF,SACtB,EAMF,MAAMy5F,GACJ,WAAAh7F,CAAYi7F,GAAuB,aACjCC,GAAe,EAAK,cACpBC,GAAgB,IAEhBzmE,EAAOumE,EAAuB,+EAC9B,MAAM,OACJn+F,EAAM,YACNs+F,EAAW,gBACXC,EAAe,2BACfC,GACEL,EAIJ,GAHAj/F,KAAKu/F,cAAgB,GACrBv/F,KAAKw/F,iBAAmBH,EACxBr/F,KAAKy/F,4BAA8BH,EAC/BF,GAAat+F,OAAS,EAAG,CAC3B,MAAMuI,EAAS+1F,aAAuB7jE,YAAc6jE,EAAY31F,aAAe21F,EAAY/1F,OAAOI,WAAa21F,EAAY/1F,OAAS,IAAIkyB,WAAW6jE,GAAa/1F,OAChKrJ,KAAKu/F,cAAct1F,KAAKZ,EAC1B,CACArJ,KAAK0/F,uBAAyBT,EAC9Bj/F,KAAK2/F,uBAAyBR,EAC9Bn/F,KAAK4/F,mBAAqBV,EAC1Bl/F,KAAK6/F,eAAiB/+F,EACtBd,KAAK8/F,mBAAqB,KAC1B9/F,KAAK+/F,cAAgB,GACrBd,EAAsBe,iBAAiB,CAACC,EAAO9kE,KAC7Cn7B,KAAKkgG,eAAe,CAClBD,QACA9kE,YAGJ8jE,EAAsBkB,oBAAoB,CAACt4B,EAAQu4B,KACjDpgG,KAAKqgG,YAAY,CACfx4B,SACAu4B,YAGJnB,EAAsBqB,2BAA2BnlE,IAC/Cn7B,KAAKkgG,eAAe,CAClB/kE,YAGJ8jE,EAAsBsB,2BAA2B,KAC/CvgG,KAAKwgG,uBAEPvB,EAAsBwB,gBACxB,CACA,cAAAP,EAAe,MACbD,EAAK,MACL9kE,IAEA,MAAM9xB,EAAS8xB,aAAiBI,YAAcJ,EAAM1xB,aAAe0xB,EAAM9xB,OAAOI,WAAa0xB,EAAM9xB,OAAS,IAAIkyB,WAAWJ,GAAO9xB,OAClI,QAAclF,IAAV87F,EACEjgG,KAAK8/F,mBACP9/F,KAAK8/F,mBAAmBY,SAASr3F,GAEjCrJ,KAAKu/F,cAAct1F,KAAKZ,OAErB,CACL,MAAMs3F,EAAQ3gG,KAAK+/F,cAAcpwF,KAAK,SAAUixF,GAC9C,OAAIA,EAAYC,SAAWZ,IAG3BW,EAAYF,SAASr3F,IACd,EACT,GACAqvB,EAAOioE,EAAO,0EAChB,CACF,CACA,0BAAIG,GACF,OAAO9gG,KAAK8/F,oBAAoBiB,SAAW,CAC7C,CACA,WAAAV,CAAY9/C,QACQp8C,IAAdo8C,EAAI6/C,MACNpgG,KAAK+/F,cAAc,IAAIiB,aAAa,CAClCn5B,OAAQtnB,EAAIsnB,SAGd7nE,KAAK8/F,oBAAoBkB,aAAa,CACpCn5B,OAAQtnB,EAAIsnB,OACZu4B,MAAO7/C,EAAI6/C,OAGjB,CACA,kBAAAI,GACExgG,KAAK8/F,oBAAoBT,kBACzBr/F,KAAKw/F,kBAAmB,CAC1B,CACA,kBAAAyB,CAAmBC,GACjB,MAAMj4F,EAAIjJ,KAAK+/F,cAAc/1F,QAAQk3F,GACjCj4F,GAAK,GACPjJ,KAAK+/F,cAAc5jD,OAAOlzC,EAAG,EAEjC,CACA,aAAAk4F,GACEzoE,GAAQ14B,KAAK8/F,mBAAoB,iEACjC,MAAMsB,EAAephG,KAAKu/F,cAE1B,OADAv/F,KAAKu/F,cAAgB,KACd,IAAI8B,GAA6BrhG,KAAMohG,EAAcphG,KAAKw/F,iBAAkBx/F,KAAKy/F,4BAC1F,CACA,cAAA6B,CAAerB,EAAOvzD,GACpB,GAAIA,GAAO1sC,KAAK8gG,uBACd,OAAO,KAET,MAAMI,EAAS,IAAIK,GAAkCvhG,KAAMigG,EAAOvzD,GAGlE,OAFA1sC,KAAK0/F,uBAAuB8B,iBAAiBvB,EAAOvzD,GACpD1sC,KAAK+/F,cAAc91F,KAAKi3F,GACjBA,CACT,CACA,iBAAAO,CAAkBpuB,GAChBrzE,KAAK8/F,oBAAoB39E,OAAOkxD,GAChC,IAAK,MAAM6tB,KAAUlhG,KAAK+/F,cAAc58F,MAAM,GAC5C+9F,EAAO/+E,OAAOkxD,GAEhBrzE,KAAK0/F,uBAAuB1+C,OAC9B,EAEF,MAAMqgD,GACJ,WAAAr9F,CAAYmvE,EAAQiuB,EAAc/B,GAAkB,EAAOC,EAA6B,MACtFt/F,KAAK0hG,QAAUvuB,EACfnzE,KAAK2hG,MAAQtC,IAAmB,EAChCr/F,KAAK4hG,UAAY72D,GAAUu0D,GAA8BA,EAA6B,KACtFt/F,KAAKu/F,cAAgB6B,GAAgB,GACrCphG,KAAK+gG,QAAU,EACf,IAAK,MAAM5lE,KAASn7B,KAAKu/F,cACvBv/F,KAAK+gG,SAAW5lE,EAAM1xB,WAExBzJ,KAAK6hG,UAAY,GACjB7hG,KAAK8hG,cAAgBvgF,QAAQ0iB,UAC7BkvC,EAAO2sB,mBAAqB9/F,KAC5BA,KAAKghG,WAAa,IACpB,CACA,QAAAN,CAASvlE,GACP,IAAIn7B,KAAK2hG,MAAT,CAGA,GAAI3hG,KAAK6hG,UAAU/gG,OAAS,EAAG,CAC7B,MAAMihG,EAAoB/hG,KAAK6hG,UAAUv5B,QACzCy5B,EAAkB99D,QAAQ,CACxBniC,MAAOq5B,EACPl1B,MAAM,GAEV,MACEjG,KAAKu/F,cAAct1F,KAAKkxB,GAE1Bn7B,KAAK+gG,SAAW5lE,EAAM1xB,UAVtB,CAWF,CACA,gBAAIu4F,GACF,OAAOhiG,KAAK8hG,aACd,CACA,YAAI92D,GACF,OAAOhrC,KAAK4hG,SACd,CACA,oBAAIK,GACF,OAAOjiG,KAAK0hG,QAAQ9B,iBACtB,CACA,wBAAIsC,GACF,OAAOliG,KAAK0hG,QAAQ/B,qBACtB,CACA,iBAAIwC,GACF,OAAOniG,KAAK0hG,QAAQ7B,cACtB,CACA,UAAMuC,GACJ,GAAIpiG,KAAKu/F,cAAcz+F,OAAS,EAAG,CACjC,MAAMq6B,EAAQn7B,KAAKu/F,cAAcj3B,QACjC,MAAO,CACLxmE,MAAOq5B,EACPl1B,MAAM,EAEV,CACA,GAAIjG,KAAK2hG,MACP,MAAO,CACL7/F,WAAOqC,EACP8B,MAAM,GAGV,MAAM87F,EAAoBxgF,QAAQwiC,gBAElC,OADA/jD,KAAK6hG,UAAU53F,KAAK83F,GACbA,EAAkB5+E,OAC3B,CACA,MAAAhB,CAAOkxD,GACLrzE,KAAK2hG,OAAQ,EACb,IAAK,MAAMI,KAAqB/hG,KAAK6hG,UACnCE,EAAkB99D,QAAQ,CACxBniC,WAAOqC,EACP8B,MAAM,IAGVjG,KAAK6hG,UAAU/gG,OAAS,CAC1B,CACA,eAAAu+F,GACMr/F,KAAK2hG,QAGT3hG,KAAK2hG,OAAQ,EACf,EAEF,MAAMJ,GACJ,WAAAv9F,CAAYmvE,EAAQ8sB,EAAOvzD,GACzB1sC,KAAK0hG,QAAUvuB,EACfnzE,KAAK6gG,OAASZ,EACdjgG,KAAKqiG,KAAO31D,EACZ1sC,KAAKsiG,aAAe,KACpBtiG,KAAK6hG,UAAY,GACjB7hG,KAAK2hG,OAAQ,EACb3hG,KAAKghG,WAAa,IACpB,CACA,QAAAN,CAASvlE,GACP,IAAIn7B,KAAK2hG,MAAT,CAGA,GAA8B,IAA1B3hG,KAAK6hG,UAAU/gG,OACjBd,KAAKsiG,aAAennE,MACf,CACL,MAAMonE,EAAqBviG,KAAK6hG,UAAUv5B,QAC1Ci6B,EAAmBt+D,QAAQ,CACzBniC,MAAOq5B,EACPl1B,MAAM,IAER,IAAK,MAAM87F,KAAqB/hG,KAAK6hG,UACnCE,EAAkB99D,QAAQ,CACxBniC,WAAOqC,EACP8B,MAAM,IAGVjG,KAAK6hG,UAAU/gG,OAAS,CAC1B,CACAd,KAAK2hG,OAAQ,EACb3hG,KAAK0hG,QAAQT,mBAAmBjhG,KAlBhC,CAmBF,CACA,wBAAIkiG,GACF,OAAO,CACT,CACA,UAAME,GACJ,GAAIpiG,KAAKsiG,aAAc,CACrB,MAAMnnE,EAAQn7B,KAAKsiG,aAEnB,OADAtiG,KAAKsiG,aAAe,KACb,CACLxgG,MAAOq5B,EACPl1B,MAAM,EAEV,CACA,GAAIjG,KAAK2hG,MACP,MAAO,CACL7/F,WAAOqC,EACP8B,MAAM,GAGV,MAAM87F,EAAoBxgF,QAAQwiC,gBAElC,OADA/jD,KAAK6hG,UAAU53F,KAAK83F,GACbA,EAAkB5+E,OAC3B,CACA,MAAAhB,CAAOkxD,GACLrzE,KAAK2hG,OAAQ,EACb,IAAK,MAAMI,KAAqB/hG,KAAK6hG,UACnCE,EAAkB99D,QAAQ,CACxBniC,WAAOqC,EACP8B,MAAM,IAGVjG,KAAK6hG,UAAU/gG,OAAS,EACxBd,KAAK0hG,QAAQT,mBAAmBjhG,KAClC,EAKF,SAASwiG,GAAwCC,GAC/C,IAAIC,GAAqB,EACrBzgB,EAAM0gB,EAAc,cAAe,KAAKjpF,KAAK+oF,GACjD,GAAIxgB,EAAK,CACPA,EAAMA,EAAI,GACV,IAAIj3C,EAAW43D,EAAe3gB,GAI9B,OAHAj3C,EAAW63D,SAAS73D,GACpBA,EAAW83D,EAAc93D,GACzBA,EAAW+3D,EAAc/3D,GAClBg4D,EAAch4D,EACvB,CAEA,GADAi3C,EAAMghB,EAAgBR,GAClBxgB,EAAK,CACP,MAAMj3C,EAAW+3D,EAAc9gB,GAC/B,OAAO+gB,EAAch4D,EACvB,CAEA,GADAi3C,EAAM0gB,EAAc,WAAY,KAAKjpF,KAAK+oF,GACtCxgB,EAAK,CACPA,EAAMA,EAAI,GACV,IAAIj3C,EAAW43D,EAAe3gB,GAE9B,OADAj3C,EAAW+3D,EAAc/3D,GAClBg4D,EAAch4D,EACvB,CACA,SAAS23D,EAAcO,EAAkBC,GACvC,OAAO,IAAI/1D,OAAO,cAAgB81D,EAAhB,sDAAmHC,EACvI,CACA,SAASC,EAAWC,EAAUvhG,GAC5B,GAAIuhG,EAAU,CACZ,IAAK,iBAAiBn9F,KAAKpE,GACzB,OAAOA,EAET,IACE,MAAMwhG,EAAU,IAAIl3B,YAAYi3B,EAAU,CACxCE,OAAO,IAEHl6F,EAASgyB,GAAcv5B,GAC7BA,EAAQwhG,EAAQ93D,OAAOniC,GACvBq5F,GAAqB,CACvB,CAAE,MAAO,CACX,CACA,OAAO5gG,CACT,CACA,SAASkhG,EAAclhG,GAOrB,OANI4gG,GAAsB,cAAcx8F,KAAKpE,KAC3CA,EAAQshG,EAAW,QAASthG,GACxB4gG,IACF5gG,EAAQshG,EAAW,aAActhG,KAG9BA,CACT,CACA,SAASmhG,EAAgBO,GACvB,MAAMn2D,EAAU,GAChB,IAAIvyB,EACJ,MAAM2oF,EAAOd,EAAc,kCAAmC,MAC9D,MAAsD,QAA9C7nF,EAAQ2oF,EAAK/pF,KAAK8pF,IAAkC,CAC1D,IAAK,CAAE18F,EAAG48F,EAAMC,GAAQ7oF,EAExB,GADAhU,EAAIymC,SAASzmC,EAAG,IACZA,KAAKumC,GACP,GAAU,IAANvmC,EACF,WAIJumC,EAAQvmC,GAAK,CAAC48F,EAAMC,EACtB,CACA,MAAMC,EAAQ,GACd,IAAK,IAAI98F,EAAI,EAAGA,EAAIumC,EAAQvsC,SAAUgG,EAAG,CACvC,KAAMA,KAAKumC,GACT,MAEF,IAAKq2D,EAAMC,GAAQt2D,EAAQvmC,GAC3B68F,EAAOf,EAAee,GAClBD,IACFC,EAAOd,SAASc,GACN,IAAN78F,IACF68F,EAAOb,EAAca,KAGzBC,EAAM35F,KAAK05F,EACb,CACA,OAAOC,EAAMvgG,KAAK,GACpB,CACA,SAASu/F,EAAe9gG,GACtB,GAAIA,EAAMo3B,WAAW,KAAM,CACzB,MAAM0qE,EAAQ9hG,EAAMqB,MAAM,GAAGK,MAAM,OACnC,IAAK,IAAIyF,EAAI,EAAGA,EAAI26F,EAAM9iG,SAAUmI,EAAG,CACrC,MAAM46F,EAAYD,EAAM36F,GAAGe,QAAQ,MAChB,IAAf65F,IACFD,EAAM36F,GAAK26F,EAAM36F,GAAG9F,MAAM,EAAG0gG,GAC7BD,EAAM9iG,OAASmI,EAAI,GAErB26F,EAAM36F,GAAK26F,EAAM36F,GAAGq5B,WAAW,SAAU,KAC3C,CACAxgC,EAAQ8hG,EAAMvgG,KAAK,IACrB,CACA,OAAOvB,CACT,CACA,SAASghG,EAAcgB,GACrB,MAAMC,EAAcD,EAAS95F,QAAQ,KACrC,IAAqB,IAAjB+5F,EACF,OAAOD,EAET,MAAMT,EAAWS,EAAS3gG,MAAM,EAAG4gG,GAC7BC,EAAYF,EAAS3gG,MAAM4gG,EAAc,GACzCjiG,EAAQkiG,EAAU5gG,QAAQ,UAAW,IAC3C,OAAOggG,EAAWC,EAAUvhG,EAC9B,CACA,SAASihG,EAAcjhG,GACrB,OAAKA,EAAMo3B,WAAW,OAAS,uBAAuBhzB,KAAKpE,GAClDA,EAEFA,EAAMwgC,WAAW,iDAAkD,SAAU+K,EAAS42D,EAASZ,EAAU56D,GAC9G,GAAiB,MAAb46D,GAAiC,MAAbA,EAKtB,OAJA56D,EAAOA,EAAKnG,WAAW,IAAK,KAC5BmG,EAAOA,EAAKnG,WAAW,qBAAsB,SAAUxnB,EAAO00D,GAC5D,OAAOzsE,OAAOi4B,aAAauS,SAASiiC,EAAK,IAC3C,GACO4zB,EAAWa,EAASx7D,GAE7B,IACEA,EAAO1E,KAAK0E,EACd,CAAE,MAAO,CACT,OAAO26D,EAAWa,EAASx7D,EAC7B,EACF,CACA,MAAO,EACT,CAMA,SAASy7D,GAAcC,EAAQC,GAC7B,MAAMC,EAAU,IAAIC,QACpB,IAAKH,IAAWC,GAAsC,kBAAhBA,EACpC,OAAOC,EAET,IAAK,MAAMj6F,KAAOg6F,EAAa,CAC7B,MAAMtzF,EAAMszF,EAAYh6F,QACZjG,IAAR2M,GACFuzF,EAAQt9D,OAAO38B,EAAK0G,EAExB,CACA,OAAOuzF,CACT,CACA,SAASE,GAAkB1rE,GACzB,OAAOU,IAAIC,MAAMX,IAAM88B,QAAU,IACnC,CACA,SAAS6uC,IAAiC,gBACxCC,EAAe,OACfN,EAAM,eACNO,EAAc,aACdxF,IAEA,MAAMyF,EAAe,CACnBC,oBAAoB,EACpBC,qBAAiB1gG,GAEbrD,EAASysC,SAASk3D,EAAgB5hG,IAAI,kBAAmB,IAC/D,IAAK4e,OAAOyW,UAAUp3B,GACpB,OAAO6jG,EAGT,GADAA,EAAaE,gBAAkB/jG,EAC3BA,GAAU,EAAI4jG,EAChB,OAAOC,EAET,GAAIzF,IAAiBiF,EACnB,OAAOQ,EAET,GAA6C,UAAzCF,EAAgB5hG,IAAI,iBACtB,OAAO8hG,EAET,MAAMG,EAAkBL,EAAgB5hG,IAAI,qBAAuB,WACnE,MAAwB,aAApBiiG,IAGJH,EAAaC,oBAAqB,GAFzBD,CAIX,CACA,SAASI,GAA0BN,GACjC,MAAMhC,EAAqBgC,EAAgB5hG,IAAI,uBAC/C,GAAI4/F,EAAoB,CACtB,IAAIz3D,EAAWw3D,GAAwCC,GACvD,GAAIz3D,EAASxvB,SAAS,KACpB,IACEwvB,EAAW/I,mBAAmB+I,EAChC,CAAE,MAAO,CAEX,GAAID,GAAUC,GACZ,OAAOA,CAEX,CACA,OAAO,IACT,CACA,SAASg6D,GAAoBvqE,EAAQ5B,GACnC,OAAO,IAAI2B,GAAkB,+BAA+BC,4BAAiC5B,MAAS4B,EAAmB,MAAXA,GAA6B,IAAXA,GAAgB5B,EAAIK,WAAW,SACjK,CACA,SAAS+rE,GAAuBxqE,GAC9B,OAAkB,MAAXA,GAA6B,MAAXA,CAC3B,CAKA,SAASyqE,GAAmBb,EAASc,EAAiBC,GACpD,MAAO,CACL5+F,OAAQ,MACR69F,UACA/vD,OAAQ8wD,EAAgB9wD,OACxBz8B,KAAM,OACNwtF,YAAaF,EAAkB,UAAY,cAC3CG,SAAU,SAEd,CACA,SAASC,GAAez0F,GACtB,OAAIA,aAAeyqB,WACVzqB,EAAIzH,OAETyH,aAAexH,YACVwH,GAETynB,EAAK,4CAA4CznB,KAC1C,IAAIyqB,WAAWzqB,GAAKzH,OAC7B,CACA,MAAMm8F,GACJC,gBAAkB,KAClB,WAAAzhG,CAAYK,GACVrE,KAAKqE,OAASA,EACdrE,KAAKmkG,OAAS,YAAYj+F,KAAK7B,EAAOw0B,KACtC74B,KAAKqkG,QAAUH,GAAclkG,KAAKmkG,OAAQ9/F,EAAO+/F,aACjDpkG,KAAK8/F,mBAAqB,KAC1B9/F,KAAK0lG,qBAAuB,EAC9B,CACA,0BAAI5E,GACF,OAAO9gG,KAAK8/F,oBAAoBiB,SAAW,CAC7C,CACA,aAAAI,GAGE,OAFAzoE,GAAQ14B,KAAK8/F,mBAAoB,yDACjC9/F,KAAK8/F,mBAAqB,IAAI6F,GAAqB3lG,MAC5CA,KAAK8/F,kBACd,CACA,cAAAwB,CAAerB,EAAOvzD,GACpB,GAAIA,GAAO1sC,KAAK8gG,uBACd,OAAO,KAET,MAAMI,EAAS,IAAI0E,GAA0B5lG,KAAMigG,EAAOvzD,GAE1D,OADA1sC,KAAK0lG,qBAAqBz7F,KAAKi3F,GACxBA,CACT,CACA,iBAAAO,CAAkBpuB,GAChBrzE,KAAK8/F,oBAAoB39E,OAAOkxD,GAChC,IAAK,MAAM6tB,KAAUlhG,KAAK0lG,qBAAqBviG,MAAM,GACnD+9F,EAAO/+E,OAAOkxD,EAElB,EAEF,MAAMsyB,GACJ,WAAA3hG,CAAYmvE,GACVnzE,KAAK0hG,QAAUvuB,EACfnzE,KAAK6lG,QAAU,KACf7lG,KAAK+gG,QAAU,EACf/gG,KAAK4hG,UAAY,KACjB,MAAMv9F,EAAS8uE,EAAO9uE,OACtBrE,KAAK8lG,iBAAmBzhG,EAAO8gG,kBAAmB,EAClDnlG,KAAK6/F,eAAiBx7F,EAAOvD,OAC7Bd,KAAK+lG,mBAAqBxkF,QAAQwiC,gBAClC/jD,KAAKgmG,cAAgB3hG,EAAO66F,eAAgB,EAC5Cl/F,KAAKimG,gBAAkB5hG,EAAOqgG,eACzB1kG,KAAKimG,iBAAoBjmG,KAAKgmG,gBACjChmG,KAAKgmG,eAAgB,GAEvBhmG,KAAKkmG,iBAAmB,IAAIvoD,gBAC5B39C,KAAK2/F,uBAAyBt7F,EAAO86F,cACrCn/F,KAAK4/F,mBAAqBv7F,EAAO66F,aACjC,MAAMmF,EAAU,IAAIC,QAAQnxB,EAAOkxB,SAC7BxrE,EAAMx0B,EAAOw0B,IACnBuP,MAAMvP,EAAKqsE,GAAmBb,EAASrkG,KAAK8lG,iBAAkB9lG,KAAKkmG,mBAAmBxsD,KAAKvR,IAEzF,GADAgrC,EAAOsyB,gBAAkBlB,GAAkBp8D,EAAStP,MAC/CosE,GAAuB98D,EAAS1N,QACnC,MAAMuqE,GAAoB78D,EAAS1N,OAAQ5B,GAE7C74B,KAAK6lG,QAAU19D,EAASuG,KAAKy3D,YAC7BnmG,KAAK+lG,mBAAmB9hE,UACxB,MAAMwgE,EAAkBt8D,EAASk8D,SAC3B,mBACJO,EAAkB,gBAClBC,GACEL,GAAiC,CACnCC,kBACAN,OAAQhxB,EAAOgxB,OACfO,eAAgB1kG,KAAKimG,gBACrB/G,aAAcl/F,KAAKgmG,gBAErBhmG,KAAK4/F,kBAAoBgF,EACzB5kG,KAAK6/F,eAAiBgF,GAAmB7kG,KAAK6/F,eAC9C7/F,KAAK4hG,UAAYmD,GAA0BN,IACtCzkG,KAAK2/F,uBAAyB3/F,KAAK4/F,mBACtC5/F,KAAKmiB,OAAO,IAAIyY,GAAe,6BAEhCk7C,MAAM91E,KAAK+lG,mBAAmBr9D,QACjC1oC,KAAKghG,WAAa,IACpB,CACA,gBAAIgB,GACF,OAAOhiG,KAAK+lG,mBAAmB5iF,OACjC,CACA,YAAI6nB,GACF,OAAOhrC,KAAK4hG,SACd,CACA,iBAAIO,GACF,OAAOniG,KAAK6/F,cACd,CACA,oBAAIoC,GACF,OAAOjiG,KAAK4/F,iBACd,CACA,wBAAIsC,GACF,OAAOliG,KAAK2/F,qBACd,CACA,UAAMyC,SACEpiG,KAAK+lG,mBAAmB5iF,QAC9B,MAAM,MACJrhB,EAAK,KACLmE,SACQjG,KAAK6lG,QAAQzD,OACvB,OAAIn8F,EACK,CACLnE,QACAmE,SAGJjG,KAAK+gG,SAAWj/F,EAAM2H,WACtBzJ,KAAKghG,aAAa,CAChBn5B,OAAQ7nE,KAAK+gG,QACbX,MAAOpgG,KAAK6/F,iBAEP,CACL/9F,MAAOyjG,GAAezjG,GACtBmE,MAAM,GAEV,CACA,MAAAkc,CAAOkxD,GACLrzE,KAAK6lG,SAAS1jF,OAAOkxD,GACrBrzE,KAAKkmG,iBAAiBllD,OACxB,EAEF,MAAM4kD,GACJ,WAAA5hG,CAAYmvE,EAAQ8sB,EAAOvzD,GACzB1sC,KAAK0hG,QAAUvuB,EACfnzE,KAAK6lG,QAAU,KACf7lG,KAAK+gG,QAAU,EACf,MAAM18F,EAAS8uE,EAAO9uE,OACtBrE,KAAK8lG,iBAAmBzhG,EAAO8gG,kBAAmB,EAClDnlG,KAAKomG,gBAAkB7kF,QAAQwiC,gBAC/B/jD,KAAK2/F,uBAAyBt7F,EAAO86F,cACrCn/F,KAAKkmG,iBAAmB,IAAIvoD,gBAC5B,MAAM0mD,EAAU,IAAIC,QAAQnxB,EAAOkxB,SACnCA,EAAQt9D,OAAO,QAAS,SAASk5D,KAASvzD,EAAM,KAChD,MAAM7T,EAAMx0B,EAAOw0B,IACnBuP,MAAMvP,EAAKqsE,GAAmBb,EAASrkG,KAAK8lG,iBAAkB9lG,KAAKkmG,mBAAmBxsD,KAAKvR,IACzF,MAAMk+D,EAAiB9B,GAAkBp8D,EAAStP,KAClD,GAAIwtE,IAAmBlzB,EAAOsyB,gBAC5B,MAAM,IAAIhtE,MAAM,mCAAmC4tE,gBAA6BlzB,EAAOsyB,qBAEzF,IAAKR,GAAuB98D,EAAS1N,QACnC,MAAMuqE,GAAoB78D,EAAS1N,OAAQ5B,GAE7C74B,KAAKomG,gBAAgBniE,UACrBjkC,KAAK6lG,QAAU19D,EAASuG,KAAKy3D,cAC5BrwB,MAAM91E,KAAKomG,gBAAgB19D,QAC9B1oC,KAAKghG,WAAa,IACpB,CACA,wBAAIkB,GACF,OAAOliG,KAAK2/F,qBACd,CACA,UAAMyC,SACEpiG,KAAKomG,gBAAgBjjF,QAC3B,MAAM,MACJrhB,EAAK,KACLmE,SACQjG,KAAK6lG,QAAQzD,OACvB,OAAIn8F,EACK,CACLnE,QACAmE,SAGJjG,KAAK+gG,SAAWj/F,EAAM2H,WACtBzJ,KAAKghG,aAAa,CAChBn5B,OAAQ7nE,KAAK+gG,UAER,CACLj/F,MAAOyjG,GAAezjG,GACtBmE,MAAM,GAEV,CACA,MAAAkc,CAAOkxD,GACLrzE,KAAK6lG,SAAS1jF,OAAOkxD,GACrBrzE,KAAKkmG,iBAAiBllD,OACxB,EAMF,MAAMslD,GAAc,IACdC,GAA2B,IACjC,SAASC,GAAuBC,GAC9B,MAAM73F,EAAO63F,EAAIt+D,SACjB,MAAoB,kBAATv5B,EACFA,EAEFysB,GAAczsB,GAAMvF,MAC7B,CACA,MAAMq9F,GACJjB,gBAAkB,KAClB,WAAAzhG,EAAY,IACV60B,EAAG,YACHurE,EAAW,gBACXe,IAEAnlG,KAAK64B,IAAMA,EACX74B,KAAKmkG,OAAS,YAAYj+F,KAAK2yB,GAC/B74B,KAAKqkG,QAAUH,GAAclkG,KAAKmkG,OAAQC,GAC1CpkG,KAAKmlG,gBAAkBA,IAAmB,EAC1CnlG,KAAK2mG,UAAY,EACjB3mG,KAAK4mG,gBAAkB3jG,OAAOwJ,OAAO,KACvC,CACA,OAAAk8B,CAAQvF,GACN,MAAMqjE,EAAM,IAAI79D,eACVi+D,EAAQ7mG,KAAK2mG,YACbG,EAAiB9mG,KAAK4mG,gBAAgBC,GAAS,CACnDJ,OAEFA,EAAIp6F,KAAK,MAAOrM,KAAK64B,KACrB4tE,EAAItB,gBAAkBnlG,KAAKmlG,gBAC3B,IAAK,MAAO/6F,EAAK0G,KAAQ9Q,KAAKqkG,QAC5BoC,EAAIM,iBAAiB38F,EAAK0G,GAoB5B,OAlBI9Q,KAAKmkG,QAAU,UAAW/gE,GAAQ,QAASA,GAC7CqjE,EAAIM,iBAAiB,QAAS,SAAS3jE,EAAK68D,SAAS78D,EAAKsJ,IAAM,KAChEo6D,EAAeE,eAAiBT,IAEhCO,EAAeE,eAAiBV,GAElCG,EAAI59D,aAAe,cACnBnQ,EAAO0K,EAAK6jE,QAAS,+CACrBR,EAAI/rD,QAAU,KACZtX,EAAK6jE,QAAQR,EAAIhsE,SAEnBgsE,EAAI39D,mBAAqB9oC,KAAKknG,cAAc/gG,KAAKnG,KAAM6mG,GACvDJ,EAAIU,WAAannG,KAAKghG,WAAW76F,KAAKnG,KAAM6mG,GAC5CC,EAAeM,kBAAoBhkE,EAAKgkE,kBACxCN,EAAeO,OAASjkE,EAAKikE,OAC7BP,EAAeG,QAAU7jE,EAAK6jE,QAC9BH,EAAe9F,WAAa59D,EAAK49D,WACjCyF,EAAIv9D,KAAK,MACF29D,CACT,CACA,UAAA7F,CAAW6F,EAAOtmD,GAChB,MAAMumD,EAAiB9mG,KAAK4mG,gBAAgBC,GACvCC,GAGLA,EAAe9F,aAAazgD,EAC9B,CACA,aAAA2mD,CAAcL,EAAOtmD,GACnB,MAAMumD,EAAiB9mG,KAAK4mG,gBAAgBC,GAC5C,IAAKC,EACH,OAEF,MAAML,EAAMK,EAAeL,IAK3B,GAJIA,EAAI19D,YAAc,GAAK+9D,EAAeM,oBACxCN,EAAeM,2BACRN,EAAeM,mBAED,IAAnBX,EAAI19D,WACN,OAEF,KAAM89D,KAAS7mG,KAAK4mG,iBAClB,OAGF,UADO5mG,KAAK4mG,gBAAgBC,GACT,IAAfJ,EAAIhsE,QAAgBz6B,KAAKmkG,OAE3B,YADA2C,EAAeG,QAAQR,EAAIhsE,QAG7B,MAAM6sE,EAAYb,EAAIhsE,QAAU6rE,GAC1BiB,EAA+BD,IAAchB,IAAeQ,EAAeE,iBAAmBT,GACpG,IAAKgB,GAAgCD,IAAcR,EAAeE,eAEhE,YADAF,EAAeG,QAAQR,EAAIhsE,QAG7B,MAAMU,EAAQqrE,GAAuBC,GACrC,GAAIa,IAAcf,GAA0B,CAC1C,MAAMiB,EAAcf,EAAIgB,kBAAkB,iBACpCp6D,EAAU,2BAA2B3zB,KAAK8tF,GAC5Cn6D,EACFy5D,EAAeO,OAAO,CACpBpH,MAAO1yD,SAASF,EAAQ,GAAI,IAC5BlS,WAGF5C,EAAK,8CACLuuE,EAAeG,QAAQ,GAE3B,MAAW9rE,EACT2rE,EAAeO,OAAO,CACpBpH,MAAO,EACP9kE,UAGF2rE,EAAeG,QAAQR,EAAIhsE,OAE/B,CACA,aAAAitE,CAAcb,GACZ,OAAO7mG,KAAK4mG,gBAAgBC,GAAOJ,GACrC,CACA,gBAAAkB,CAAiBd,GACf,OAAOA,KAAS7mG,KAAK4mG,eACvB,CACA,YAAAgB,CAAaf,GACX,MAAMJ,EAAMzmG,KAAK4mG,gBAAgBC,GAAOJ,WACjCzmG,KAAK4mG,gBAAgBC,GAC5BJ,EAAIzlD,OACN,EAEF,MAAM6mD,GACJ,WAAA7jG,CAAYK,GACVrE,KAAK8nG,QAAUzjG,EACfrE,KAAK+nG,SAAW,IAAIrB,GAAeriG,GACnCrE,KAAKimG,gBAAkB5hG,EAAOqgG,eAC9B1kG,KAAK8/F,mBAAqB,KAC1B9/F,KAAK0lG,qBAAuB,EAC9B,CACA,2BAAAsC,CAA4B9G,GAC1B,MAAMj4F,EAAIjJ,KAAK0lG,qBAAqB17F,QAAQk3F,GACxCj4F,GAAK,GACPjJ,KAAK0lG,qBAAqBvpD,OAAOlzC,EAAG,EAExC,CACA,aAAAk4F,GAGE,OAFAzoE,GAAQ14B,KAAK8/F,mBAAoB,2DACjC9/F,KAAK8/F,mBAAqB,IAAImI,GAAkCjoG,KAAK+nG,SAAU/nG,KAAK8nG,SAC7E9nG,KAAK8/F,kBACd,CACA,cAAAwB,CAAerB,EAAOvzD,GACpB,MAAMw0D,EAAS,IAAIgH,GAAmCloG,KAAK+nG,SAAU9H,EAAOvzD,GAG5E,OAFAw0D,EAAOiH,SAAWnoG,KAAKgoG,4BAA4B7hG,KAAKnG,MACxDA,KAAK0lG,qBAAqBz7F,KAAKi3F,GACxBA,CACT,CACA,iBAAAO,CAAkBpuB,GAChBrzE,KAAK8/F,oBAAoB39E,OAAOkxD,GAChC,IAAK,MAAM6tB,KAAUlhG,KAAK0lG,qBAAqBviG,MAAM,GACnD+9F,EAAO/+E,OAAOkxD,EAElB,EAEF,MAAM40B,GACJ,WAAAjkG,CAAYokG,EAAS/jG,GACnBrE,KAAK+nG,SAAWK,EAChBpoG,KAAKqoG,KAAOhkG,EAAOw0B,IACnB74B,KAAKsoG,eAAiBF,EAAQz/D,QAAQ,CACpCy+D,kBAAmBpnG,KAAKuoG,mBAAmBpiG,KAAKnG,MAChDqnG,OAAQrnG,KAAKwoG,QAAQriG,KAAKnG,MAC1BinG,QAASjnG,KAAKyoG,SAAStiG,KAAKnG,MAC5BghG,WAAYhhG,KAAKqgG,YAAYl6F,KAAKnG,QAEpCA,KAAK+lG,mBAAqBxkF,QAAQwiC,gBAClC/jD,KAAKgmG,cAAgB3hG,EAAO66F,eAAgB,EAC5Cl/F,KAAK6/F,eAAiBx7F,EAAOvD,OAC7Bd,KAAKimG,gBAAkB5hG,EAAOqgG,eACzB1kG,KAAKimG,iBAAoBjmG,KAAKgmG,gBACjChmG,KAAKgmG,eAAgB,GAEvBhmG,KAAK2/F,uBAAwB,EAC7B3/F,KAAK4/F,mBAAoB,EACzB5/F,KAAK0oG,cAAgB,GACrB1oG,KAAK6hG,UAAY,GACjB7hG,KAAK2hG,OAAQ,EACb3hG,KAAK2oG,kBAAexkG,EACpBnE,KAAK4hG,UAAY,KACjB5hG,KAAKghG,WAAa,IACpB,CACA,kBAAAuH,GACE,MAAMK,EAAmB5oG,KAAKsoG,eACxBO,EAAiB7oG,KAAK+nG,SAASL,cAAckB,GACnD5oG,KAAK+nG,SAAStC,gBAAkBlB,GAAkBsE,EAAeC,aACjE,MAAMC,EAAqBF,EAAeG,wBACpCvE,EAAkB,IAAIH,QAAQyE,EAAqBA,EAAmBE,YAAY7lG,QAAQ,WAAY,IAAII,MAAM,WAAWqG,IAAIhD,IACnI,MAAOuD,KAAQ0G,GAAOjK,EAAErD,MAAM,MAC9B,MAAO,CAAC4G,EAAK0G,EAAIzN,KAAK,SACnB,KACC,mBACJuhG,EAAkB,gBAClBC,GACEL,GAAiC,CACnCC,kBACAN,OAAQnkG,KAAK+nG,SAAS5D,OACtBO,eAAgB1kG,KAAKimG,gBACrB/G,aAAcl/F,KAAKgmG,gBAEjBpB,IACF5kG,KAAK4/F,mBAAoB,GAE3B5/F,KAAK6/F,eAAiBgF,GAAmB7kG,KAAK6/F,eAC9C7/F,KAAK4hG,UAAYmD,GAA0BN,GACvCzkG,KAAK4/F,mBACP5/F,KAAK+nG,SAASH,aAAagB,GAE7B5oG,KAAK+lG,mBAAmB9hE,SAC1B,CACA,OAAAukE,CAAQ55F,GACN,GAAIA,EACF,GAAI5O,KAAK6hG,UAAU/gG,OAAS,EAAG,CAC7B,MAAMihG,EAAoB/hG,KAAK6hG,UAAUv5B,QACzCy5B,EAAkB99D,QAAQ,CACxBniC,MAAO8M,EAAKusB,MACZl1B,MAAM,GAEV,MACEjG,KAAK0oG,cAAcz+F,KAAK2E,EAAKusB,OAIjC,GADAn7B,KAAK2hG,OAAQ,IACT3hG,KAAK0oG,cAAc5nG,OAAS,GAAhC,CAGA,IAAK,MAAMihG,KAAqB/hG,KAAK6hG,UACnCE,EAAkB99D,QAAQ,CACxBniC,WAAOqC,EACP8B,MAAM,IAGVjG,KAAK6hG,UAAU/gG,OAAS,CAPxB,CAQF,CACA,QAAA2nG,CAAShuE,GACPz6B,KAAK2oG,aAAe3D,GAAoBvqE,EAAQz6B,KAAKqoG,MACrDroG,KAAK+lG,mBAAmBr9D,OAAO1oC,KAAK2oG,cACpC,IAAK,MAAM5G,KAAqB/hG,KAAK6hG,UACnCE,EAAkBr5D,OAAO1oC,KAAK2oG,cAEhC3oG,KAAK6hG,UAAU/gG,OAAS,EACxBd,KAAK0oG,cAAc5nG,OAAS,CAC9B,CACA,WAAAu/F,CAAY9/C,GACVvgD,KAAKghG,aAAa,CAChBn5B,OAAQtnB,EAAIsnB,OACZu4B,MAAO7/C,EAAI2oD,iBAAmB3oD,EAAI6/C,MAAQpgG,KAAK6/F,gBAEnD,CACA,YAAI70D,GACF,OAAOhrC,KAAK4hG,SACd,CACA,oBAAIK,GACF,OAAOjiG,KAAK4/F,iBACd,CACA,wBAAIsC,GACF,OAAOliG,KAAK2/F,qBACd,CACA,iBAAIwC,GACF,OAAOniG,KAAK6/F,cACd,CACA,gBAAImC,GACF,OAAOhiG,KAAK+lG,mBAAmB5iF,OACjC,CACA,UAAMi/E,GAEJ,SADMpiG,KAAK+lG,mBAAmB5iF,QAC1BnjB,KAAK2oG,aACP,MAAM3oG,KAAK2oG,aAEb,GAAI3oG,KAAK0oG,cAAc5nG,OAAS,EAAG,CACjC,MAAMq6B,EAAQn7B,KAAK0oG,cAAcpgC,QACjC,MAAO,CACLxmE,MAAOq5B,EACPl1B,MAAM,EAEV,CACA,GAAIjG,KAAK2hG,MACP,MAAO,CACL7/F,WAAOqC,EACP8B,MAAM,GAGV,MAAM87F,EAAoBxgF,QAAQwiC,gBAElC,OADA/jD,KAAK6hG,UAAU53F,KAAK83F,GACbA,EAAkB5+E,OAC3B,CACA,MAAAhB,CAAOkxD,GACLrzE,KAAK2hG,OAAQ,EACb3hG,KAAK+lG,mBAAmBr9D,OAAO2qC,GAC/B,IAAK,MAAM0uB,KAAqB/hG,KAAK6hG,UACnCE,EAAkB99D,QAAQ,CACxBniC,WAAOqC,EACP8B,MAAM,IAGVjG,KAAK6hG,UAAU/gG,OAAS,EACpBd,KAAK+nG,SAASJ,iBAAiB3nG,KAAKsoG,iBACtCtoG,KAAK+nG,SAASH,aAAa5nG,KAAKsoG,gBAElCtoG,KAAK8/F,mBAAqB,IAC5B,EAEF,MAAMoI,GACJ,WAAAlkG,CAAYokG,EAASnI,EAAOvzD,GAC1B1sC,KAAK+nG,SAAWK,EAChBpoG,KAAKqoG,KAAOD,EAAQvvE,IACpB74B,KAAKmpG,WAAaf,EAAQz/D,QAAQ,CAChCs3D,QACAvzD,MACA06D,kBAAmBpnG,KAAKuoG,mBAAmBpiG,KAAKnG,MAChDqnG,OAAQrnG,KAAKwoG,QAAQriG,KAAKnG,MAC1BinG,QAASjnG,KAAKyoG,SAAStiG,KAAKnG,MAC5BghG,WAAYhhG,KAAKqgG,YAAYl6F,KAAKnG,QAEpCA,KAAK6hG,UAAY,GACjB7hG,KAAKsiG,aAAe,KACpBtiG,KAAK2hG,OAAQ,EACb3hG,KAAK2oG,kBAAexkG,EACpBnE,KAAKghG,WAAa,KAClBhhG,KAAKmoG,SAAW,IAClB,CACA,kBAAAI,GACE,MAAMlC,EAAiB9B,GAAkBvkG,KAAK+nG,SAASL,cAAc1nG,KAAKmpG,aAAaL,aACnFzC,IAAmBrmG,KAAK+nG,SAAStC,kBACnCzlG,KAAK2oG,aAAe,IAAIlwE,MAAM,mCAAmC4tE,gBAA6BrmG,KAAK+nG,SAAStC,qBAC5GzlG,KAAKyoG,SAAS,GAElB,CACA,MAAAW,GACEppG,KAAKmoG,WAAWnoG,KAClB,CACA,OAAAwoG,CAAQ55F,GACN,MAAMusB,EAAQvsB,EAAKusB,MACnB,GAAIn7B,KAAK6hG,UAAU/gG,OAAS,EAAG,CAC7B,MAAMihG,EAAoB/hG,KAAK6hG,UAAUv5B,QACzCy5B,EAAkB99D,QAAQ,CACxBniC,MAAOq5B,EACPl1B,MAAM,GAEV,MACEjG,KAAKsiG,aAAennE,EAEtBn7B,KAAK2hG,OAAQ,EACb,IAAK,MAAMI,KAAqB/hG,KAAK6hG,UACnCE,EAAkB99D,QAAQ,CACxBniC,WAAOqC,EACP8B,MAAM,IAGVjG,KAAK6hG,UAAU/gG,OAAS,EACxBd,KAAKopG,QACP,CACA,QAAAX,CAAShuE,GACPz6B,KAAK2oG,eAAiB3D,GAAoBvqE,EAAQz6B,KAAKqoG,MACvD,IAAK,MAAMtG,KAAqB/hG,KAAK6hG,UACnCE,EAAkBr5D,OAAO1oC,KAAK2oG,cAEhC3oG,KAAK6hG,UAAU/gG,OAAS,EACxBd,KAAKsiG,aAAe,IACtB,CACA,WAAAjC,CAAY9/C,GACLvgD,KAAKkiG,sBACRliG,KAAKghG,aAAa,CAChBn5B,OAAQtnB,EAAIsnB,QAGlB,CACA,wBAAIq6B,GACF,OAAO,CACT,CACA,UAAME,GACJ,GAAIpiG,KAAK2oG,aACP,MAAM3oG,KAAK2oG,aAEb,GAA0B,OAAtB3oG,KAAKsiG,aAAuB,CAC9B,MAAMnnE,EAAQn7B,KAAKsiG,aAEnB,OADAtiG,KAAKsiG,aAAe,KACb,CACLxgG,MAAOq5B,EACPl1B,MAAM,EAEV,CACA,GAAIjG,KAAK2hG,MACP,MAAO,CACL7/F,WAAOqC,EACP8B,MAAM,GAGV,MAAM87F,EAAoBxgF,QAAQwiC,gBAElC,OADA/jD,KAAK6hG,UAAU53F,KAAK83F,GACbA,EAAkB5+E,OAC3B,CACA,MAAAhB,CAAOkxD,GACLrzE,KAAK2hG,OAAQ,EACb,IAAK,MAAMI,KAAqB/hG,KAAK6hG,UACnCE,EAAkB99D,QAAQ,CACxBniC,WAAOqC,EACP8B,MAAM,IAGVjG,KAAK6hG,UAAU/gG,OAAS,EACpBd,KAAK+nG,SAASJ,iBAAiB3nG,KAAKmpG,aACtCnpG,KAAK+nG,SAASH,aAAa5nG,KAAKmpG,YAElCnpG,KAAKopG,QACP,EAMF,MAAMC,GAAW,wBACjB,SAASC,GAAeC,GACtB,GAAIF,GAASnjG,KAAKqjG,GAChB,OAAO,IAAIhwE,IAAIgwE,GAEjB,MAAM1wE,EAAMjoB,QAAQgJ,iBAAiB,OACrC,OAAO,IAAI2f,IAAIV,EAAI2wE,cAAcD,GACnC,CACA,MAAME,GACJ,WAAAzlG,CAAYK,GACVrE,KAAKqE,OAASA,EACdrE,KAAK64B,IAAMywE,GAAejlG,EAAOw0B,KACjCH,EAA6B,UAAtB14B,KAAK64B,IAAIC,SAAsB,6CACtC94B,KAAK8/F,mBAAqB,KAC1B9/F,KAAK0lG,qBAAuB,EAC9B,CACA,0BAAI5E,GACF,OAAO9gG,KAAK8/F,oBAAoBiB,SAAW,CAC7C,CACA,aAAAI,GAGE,OAFAzoE,GAAQ14B,KAAK8/F,mBAAoB,wDACjC9/F,KAAK8/F,mBAAqB,IAAI4J,GAA0B1pG,MACjDA,KAAK8/F,kBACd,CACA,cAAAwB,CAAe70D,EAAOC,GACpB,GAAIA,GAAO1sC,KAAK8gG,uBACd,OAAO,KAET,MAAMF,EAAc,IAAI+I,GAA2B3pG,KAAMysC,EAAOC,GAEhE,OADA1sC,KAAK0lG,qBAAqBz7F,KAAK22F,GACxBA,CACT,CACA,iBAAAa,CAAkBpuB,GAChBrzE,KAAK8/F,oBAAoB39E,OAAOkxD,GAChC,IAAK,MAAM6tB,KAAUlhG,KAAK0lG,qBAAqBviG,MAAM,GACnD+9F,EAAO/+E,OAAOkxD,EAElB,EAEF,MAAMq2B,GACJ,WAAA1lG,CAAYmvE,GACVnzE,KAAKqoG,KAAOl1B,EAAOt6C,IACnB74B,KAAK2hG,OAAQ,EACb3hG,KAAK2oG,aAAe,KACpB3oG,KAAKghG,WAAa,KAClB,MAAM38F,EAAS8uE,EAAO9uE,OACtBrE,KAAK6/F,eAAiBx7F,EAAOvD,OAC7Bd,KAAK+gG,QAAU,EACf/gG,KAAK4hG,UAAY,KACjB5hG,KAAKgmG,cAAgB3hG,EAAO66F,eAAgB,EAC5Cl/F,KAAKimG,gBAAkB5hG,EAAOqgG,eACzB1kG,KAAKimG,iBAAoBjmG,KAAKgmG,gBACjChmG,KAAKgmG,eAAgB,GAEvBhmG,KAAK2/F,uBAAyBt7F,EAAO86F,cACrCn/F,KAAK4/F,mBAAqBv7F,EAAO66F,aACjCl/F,KAAK4pG,gBAAkB,KACvB5pG,KAAKomG,gBAAkB7kF,QAAQwiC,gBAC/B/jD,KAAK+lG,mBAAqBxkF,QAAQwiC,gBAClC,MAAMq1B,EAAKxoE,QAAQgJ,iBAAiB,MACpCw/D,EAAGxtB,SAASi+C,MAAM7pG,KAAKqoG,MAAM3uD,KAAKvjC,IAChCnW,KAAK6/F,eAAiB1pF,EAAK01B,KAC3B7rC,KAAK8pG,mBAAmB1wB,EAAG2wB,iBAAiB/pG,KAAKqoG,OACjDroG,KAAK+lG,mBAAmB9hE,WACvBtiC,IACkB,WAAfA,EAAMw4B,OACRx4B,EAAQqjG,GAAoB,EAAGhlG,KAAKqoG,KAAKxuE,OAE3C75B,KAAK2oG,aAAehnG,EACpB3B,KAAK+lG,mBAAmBr9D,OAAO/mC,IAEnC,CACA,gBAAIqgG,GACF,OAAOhiG,KAAK+lG,mBAAmB5iF,OACjC,CACA,YAAI6nB,GACF,OAAOhrC,KAAK4hG,SACd,CACA,iBAAIO,GACF,OAAOniG,KAAK6/F,cACd,CACA,oBAAIoC,GACF,OAAOjiG,KAAK4/F,iBACd,CACA,wBAAIsC,GACF,OAAOliG,KAAK2/F,qBACd,CACA,UAAMyC,GAEJ,SADMpiG,KAAKomG,gBAAgBjjF,QACvBnjB,KAAK2hG,MACP,MAAO,CACL7/F,WAAOqC,EACP8B,MAAM,GAGV,GAAIjG,KAAK2oG,aACP,MAAM3oG,KAAK2oG,aAEb,MAAMxtE,EAAQn7B,KAAK4pG,gBAAgBxH,OACnC,GAAc,OAAVjnE,EAEF,OADAn7B,KAAKomG,gBAAkB7kF,QAAQwiC,gBACxB/jD,KAAKoiG,OAEdpiG,KAAK+gG,SAAW5lE,EAAMr6B,OACtBd,KAAKghG,aAAa,CAChBn5B,OAAQ7nE,KAAK+gG,QACbX,MAAOpgG,KAAK6/F,iBAEd,MAAMx2F,EAAS,IAAIkyB,WAAWJ,GAAO9xB,OACrC,MAAO,CACLvH,MAAOuH,EACPpD,MAAM,EAEV,CACA,MAAAkc,CAAOkxD,GACArzE,KAAK4pG,gBAIV5pG,KAAK4pG,gBAAgB3yD,QAAQo8B,GAH3BrzE,KAAKgqG,OAAO32B,EAIhB,CACA,MAAA22B,CAAO32B,GACLrzE,KAAK2oG,aAAet1B,EACpBrzE,KAAKomG,gBAAgBniE,SACvB,CACA,kBAAA6lE,CAAmBG,GACjBjqG,KAAK4pG,gBAAkBK,EACvBA,EAAe/sF,GAAG,WAAY,KAC5Bld,KAAKomG,gBAAgBniE,YAEvBgmE,EAAe/sF,GAAG,MAAO,KACvB+sF,EAAehzD,UACfj3C,KAAK2hG,OAAQ,EACb3hG,KAAKomG,gBAAgBniE,YAEvBgmE,EAAe/sF,GAAG,QAASm2D,IACzBrzE,KAAKgqG,OAAO32B,MAETrzE,KAAK2/F,uBAAyB3/F,KAAK4/F,mBACtC5/F,KAAKgqG,OAAO,IAAIpvE,GAAe,0BAE7B56B,KAAK2oG,cACP3oG,KAAK4pG,gBAAgB3yD,QAAQj3C,KAAK2oG,aAEtC,EAEF,MAAMgB,GACJ,WAAA3lG,CAAYmvE,EAAQ1mC,EAAOC,GACzB1sC,KAAKqoG,KAAOl1B,EAAOt6C,IACnB74B,KAAK2hG,OAAQ,EACb3hG,KAAK2oG,aAAe,KACpB3oG,KAAKghG,WAAa,KAClBhhG,KAAK+gG,QAAU,EACf/gG,KAAK4pG,gBAAkB,KACvB5pG,KAAKomG,gBAAkB7kF,QAAQwiC,gBAC/B,MAAM1/C,EAAS8uE,EAAO9uE,OACtBrE,KAAK2/F,uBAAyBt7F,EAAO86F,cACrC,MAAM/lB,EAAKxoE,QAAQgJ,iBAAiB,MACpC5Z,KAAK8pG,mBAAmB1wB,EAAG2wB,iBAAiB/pG,KAAKqoG,KAAM,CACrD57D,QACAC,IAAKA,EAAM,IAEf,CACA,wBAAIw1D,GACF,OAAOliG,KAAK2/F,qBACd,CACA,UAAMyC,GAEJ,SADMpiG,KAAKomG,gBAAgBjjF,QACvBnjB,KAAK2hG,MACP,MAAO,CACL7/F,WAAOqC,EACP8B,MAAM,GAGV,GAAIjG,KAAK2oG,aACP,MAAM3oG,KAAK2oG,aAEb,MAAMxtE,EAAQn7B,KAAK4pG,gBAAgBxH,OACnC,GAAc,OAAVjnE,EAEF,OADAn7B,KAAKomG,gBAAkB7kF,QAAQwiC,gBACxB/jD,KAAKoiG,OAEdpiG,KAAK+gG,SAAW5lE,EAAMr6B,OACtBd,KAAKghG,aAAa,CAChBn5B,OAAQ7nE,KAAK+gG,UAEf,MAAM13F,EAAS,IAAIkyB,WAAWJ,GAAO9xB,OACrC,MAAO,CACLvH,MAAOuH,EACPpD,MAAM,EAEV,CACA,MAAAkc,CAAOkxD,GACArzE,KAAK4pG,gBAIV5pG,KAAK4pG,gBAAgB3yD,QAAQo8B,GAH3BrzE,KAAKgqG,OAAO32B,EAIhB,CACA,MAAA22B,CAAO32B,GACLrzE,KAAK2oG,aAAet1B,EACpBrzE,KAAKomG,gBAAgBniE,SACvB,CACA,kBAAA6lE,CAAmBG,GACjBjqG,KAAK4pG,gBAAkBK,EACvBA,EAAe/sF,GAAG,WAAY,KAC5Bld,KAAKomG,gBAAgBniE,YAEvBgmE,EAAe/sF,GAAG,MAAO,KACvB+sF,EAAehzD,UACfj3C,KAAK2hG,OAAQ,EACb3hG,KAAKomG,gBAAgBniE,YAEvBgmE,EAAe/sF,GAAG,QAASm2D,IACzBrzE,KAAKgqG,OAAO32B,KAEVrzE,KAAK2oG,cACP3oG,KAAK4pG,gBAAgB3yD,QAAQj3C,KAAK2oG,aAEtC,EAIF,MAAMuB,GAAen4F,OAAO,gBAC5B,MAAMo4F,GACJ,IAAQlnG,OAAOwJ,OAAO,MACtB,IAAW+9D,GACT,OAAOxqE,MAAK,GAAMwqE,KAAW,IACxBjpD,QAAQwiC,gBACXn1C,KAAMs7F,GAEV,CACA,GAAArnG,CAAI2nE,EAAO7tB,EAAW,MACpB,GAAIA,EAAU,CACZ,MAAM7yC,EAAM9J,MAAK,GAAWwqE,GAE5B,OADA1gE,EAAIqZ,QAAQu2B,KAAK,IAAMiD,EAAS7yC,EAAI8E,OAC7B,IACT,CACA,MAAM9E,EAAM9J,MAAK,GAAMwqE,GACvB,IAAK1gE,GAAOA,EAAI8E,OAASs7F,GACvB,MAAM,IAAIzxE,MAAM,6CAA6C+xC,MAE/D,OAAO1gE,EAAI8E,IACb,CACA,GAAA/G,CAAI2iE,GACF,MAAM1gE,EAAM9J,MAAK,GAAMwqE,GACvB,QAAS1gE,GAAOA,EAAI8E,OAASs7F,EAC/B,CACA,OAAO1/B,GACL,MAAM1gE,EAAM9J,MAAK,GAAMwqE,GACvB,SAAK1gE,GAAOA,EAAI8E,OAASs7F,aAGlBlqG,MAAK,GAAMwqE,IACX,EACT,CACA,OAAAvmC,CAAQumC,EAAO57D,EAAO,MACpB,MAAM9E,EAAM9J,MAAK,GAAWwqE,GAC5B1gE,EAAI8E,KAAOA,EACX9E,EAAIm6B,SACN,CACA,KAAAid,GACE,IAAK,MAAMspB,KAASxqE,MAAK,GAAO,CAC9B,MAAM,KACJ4O,GACE5O,MAAK,GAAMwqE,GACf57D,GAAMyI,QAAQ7L,OAChB,CACAxL,MAAK,GAAQiD,OAAOwJ,OAAO,KAC7B,CACA,EAAEsF,OAAOhM,YACP,IAAK,MAAMykE,KAASxqE,MAAK,GAAO,CAC9B,MAAM,KACJ4O,GACE5O,MAAK,GAAMwqE,GACX57D,IAASs7F,UAGP,CAAC1/B,EAAO57D,GAChB,CACF,EAMF,MAAMw7F,GAA0B,IAC1BC,GAAoB,GAC1B,MAAMC,GACJ,IAAc/oF,QAAQwiC,gBACtB,IAAa,KACb,KAAuB,EACvB,MAA0Bh8C,WAAWwiG,eAAep5C,QACpD,IAAQ,KACR,IAAoB,KACpB,IAAc,EACd,IAAa,EACb,IAAU,KACV,IAAiB,KACjB,IAAY,EACZ,IAAS,EACT,IAAcluD,OAAOwJ,OAAO,MAC5B,IAAuB,GACvB,IAAqB,KACrB,IAAY,GACZ,IAAqB,IAAInE,QACzB,IAAa,KACbu/B,UAAsB,IAAIviC,IAC1BuiC,UAAyB,IAAIviC,IAC7BuiC,UAAyB,IAAIv/B,QAC7Bu/B,UAAsB,KACtBA,UAA4B,IAAIwQ,IAChC,WAAAr0C,EAAY,kBACVwmG,EAAiB,UACjBr3D,EAAS,SACTnwB,IAEA,GAAIwnF,aAA6B32B,eAC/B7zE,MAAK,GAAqBwqG,MACrB,IAAiC,kBAAtBA,EAQhB,MAAM,IAAI/xE,MAAM,+CAPhBz4B,MAAK,GAAqB,IAAI6zE,eAAe,CAC3C,KAAApnC,CAAMqnC,GACJA,EAAWW,QAAQ+1B,GACnB12B,EAAWtoE,OACb,GAIJ,CACAxL,MAAK,GAAaA,MAAK,GAAiBmzC,EACxCnzC,MAAK,GAASgjB,EAASrF,MAAQ+xB,GAAYC,WAC3C3vC,MAAK,GAAYgjB,EAASsmB,SAC1BtpC,MAAK,GAAoB,CACvB8mC,IAAK,KACL8nD,WAAY,KACZ7/C,IAAK,MAEP,MAAM,UACJhpB,EAAS,WACTC,EAAU,MACVkkB,EAAK,MACLC,GACEnnB,EAASgnB,QACbhqC,MAAK,GAAa,CAAC,EAAG,EAAG,GAAI,GAAIkqC,EAAOC,EAAQnkB,GAChDhmB,MAAK,GAAa+lB,EAClB/lB,MAAK,GAAcgmB,EACnBskF,IAAU,KACVn3D,EAAUpnC,MAAM0+F,YAAY,kBAAmBH,IAAU,IACzDn7D,GAAmBgE,EAAWnwB,GAC9BhjB,MAAK,GAAYmjB,QAAQunF,QAAQ,KAC/BJ,IAAU,GAAmB90D,OAAOx1C,MACpCA,MAAK,GAAoB,KACzBA,MAAK,GAAc,OAClB81E,MAAM,OACX,CACA,wBAAW60B,GACT,MAAM,UACJ/tE,EAAS,UACTC,GACEd,GAAiBS,SACrB,OAAO1C,EAAO95B,KAAM,gBAAiB,IAAIsF,IAAI,CAAC,CAAC,cAAiBs3B,GAAaC,EAAY,YAAc,IAA1C,cAA2D,CAAC,aAAgBD,GAAaC,EAAY,mBAAqB,IAAjD,eACxI,CACA,MAAAzgB,GACE,MAAMwuF,EAAO,KACX5qG,MAAK,GAAQoiG,OAAO1oD,KAAK,EACvB53C,QACAmE,WAEIA,EACFjG,MAAK,GAAYikC,WAGnBjkC,MAAK,KAAU8B,EAAM+oG,KACrB5nG,OAAOmjC,OAAOpmC,MAAK,GAAa8B,EAAM2iC,QACtCzkC,MAAK,GAAc8B,EAAM0iC,OACzBomE,MACC5qG,MAAK,GAAY0oC,SAKtB,OAHA1oC,MAAK,GAAUA,MAAK,GAAmBmmG,YACvCmE,IAAU,GAAmBlmF,IAAIpkB,MACjC4qG,IACO5qG,MAAK,GAAYmjB,OAC1B,CACA,MAAAskB,EAAO,SACLzkB,EAAQ,SACR8nF,EAAW,OAEX,MAAMntF,EAAQqF,EAASrF,MAAQ+xB,GAAYC,WACrCrG,EAAWtmB,EAASsmB,SAQ1B,GAPIA,IAAatpC,MAAK,KACpB8qG,MACA9qG,MAAK,GAAYspC,EACjB6F,GAAmBnvC,MAAK,GAAgB,CACtCspC,cAGA3rB,IAAU3d,MAAK,GAAQ,CACzB8qG,MACA9qG,MAAK,GAAS2d,EACd,MAAMqvC,EAAS,CACblmB,IAAK,KACL8nD,WAAY,KACZ7/C,IAAKu7D,IAAU,GAAQtqG,MAAK,KAE9B,IAAK,MAAM8mC,KAAO9mC,MAAK,GACrBgtD,EAAO4hC,WAAa5uF,MAAK,GAAmB6C,IAAIikC,GAChDkmB,EAAOlmB,IAAMA,EACb9mC,MAAK,GAAQgtD,EAEjB,CACF,CACA,MAAA7qC,GACE,MAAM4oF,EAAU,IAAInwE,GAAe,6BACnC56B,MAAK,IAASmiB,OAAO4oF,GAASj1B,MAAM,QACpC91E,MAAK,GAAU,KACfA,MAAK,GAAY0oC,OAAOqiE,EAC1B,CACA,YAAI/jE,GACF,OAAOhnC,MAAK,EACd,CACA,uBAAIgrG,GACF,OAAOhrG,MAAK,EACd,CACA,IAAcwkC,GACZ,GAAIxkC,MAAK,GACP,OAEFA,MAAK,GAAkB+uC,MAAQu7D,IAAU,GAAQtqG,MAAK,IACtD,MAAMgnC,EAAWhnC,MAAK,GACpBgrG,EAAsBhrG,MAAK,GAC7B,IAAK,MAAMmQ,KAAQq0B,EAAO,CACxB,GAAIwC,EAASlmC,OAASspG,GAGpB,OAFA7xE,EAAK,8DACLv4B,MAAK,IAAuB,GAG9B,QAAiBmE,IAAbgM,EAAKmrB,IAcT0vE,EAAoB/gG,KAAKkG,EAAKmrB,KAC9Bt7B,MAAK,GAAYmQ,QAdf,GAAkB,4BAAdA,EAAK1H,MAAoD,uBAAd0H,EAAK1H,KAA+B,CACjF,MAAMwb,EAASjkB,MAAK,GACpBA,MAAK,GAAaoM,SAAS0D,cAAc,QACzC9P,MAAK,GAAWwpB,UAAUpF,IAAI,iBAC1BjU,EAAKZ,IACPvP,MAAK,GAAWylC,aAAa,KAAM,GAAGt1B,EAAKZ,MAE7C0U,EAAO8iB,OAAO/mC,MAAK,GACrB,KAAyB,qBAAdmQ,EAAK1H,OACdzI,MAAK,GAAaA,MAAK,GAAWuxD,WAMxC,CACF,CACA,IAAY05C,GACV,MAAMC,EAAU9+F,SAAS0D,cAAc,QACjCq7F,EAAoB,CACxB7wC,MAAO,EACP/3C,YAAa,EACb6oF,QAAsB,KAAbH,EAAK3vE,IACd+vE,OAAQJ,EAAKI,OACbvf,SAAU,GAEZ9rF,MAAK,GAAUiK,KAAKihG,GACpB,MAAM78C,EAAKjxB,GAAK7U,UAAUvoB,MAAK,GAAYirG,EAAK1iF,WAChD,IAAI+xC,EAAQ5zD,KAAK4kG,MAAMj9C,EAAG,GAAIA,EAAG,IACjC,MAAMtiD,EAAQ/L,MAAK,GAAYirG,EAAKM,UAChCx/F,EAAMk/D,WACR3Q,GAAS5zD,KAAK8kG,GAAK,GAErB,IAAIhiC,EAAaxpE,MAAK,IAAyB+L,EAAM0/F,kBAAoB1/F,EAAMy9D,WAC/EA,EAAa8gC,GAAUK,cAAc9nG,IAAI2mE,IAAeA,EACxD,MAAMkiC,EAAahlG,KAAK+uD,MAAMpH,EAAG,GAAIA,EAAG,IAClCs9C,EAAaD,EAAapB,IAAU,GAAW9gC,EAAYz9D,EAAO/L,MAAK,IAC7E,IAAIoe,EAAMG,EACI,IAAV+7C,GACFl8C,EAAOiwC,EAAG,GACV9vC,EAAM8vC,EAAG,GAAKs9C,IAEdvtF,EAAOiwC,EAAG,GAAKs9C,EAAajlG,KAAKklG,IAAItxC,GACrC/7C,EAAM8vC,EAAG,GAAKs9C,EAAajlG,KAAKmlG,IAAIvxC,IAEtC,MAAMwxC,EAAWZ,EAAQn/F,MACzB+/F,EAAS1tF,KAAO,IAAI,IAAMA,EAAOpe,MAAK,IAAYi6D,QAAQ,MAC1D6xC,EAASvtF,IAAM,IAAI,IAAMA,EAAMve,MAAK,IAAai6D,QAAQ,MACzD6xC,EAASrB,YAAY,gBAAiB,GAAGiB,EAAWzxC,QAAQ,QAC5D6xC,EAAStiC,WAAaA,EACtB2hC,EAAkBrf,SAAW4f,EAC7BR,EAAQzlE,aAAa,OAAQ,gBAC7BylE,EAAQ5mE,YAAc2mE,EAAK3vE,IAC3B4vE,EAAQtlF,IAAMqlF,EAAKrlF,IACf5lB,MAAK,KACPkrG,EAAQa,QAAQR,SAAWx/F,EAAMigG,4BAA8Bf,EAAKM,UAExD,IAAVjxC,IACF6wC,EAAkB7wC,MAAQA,GAAS,IAAM5zD,KAAK8kG,KAEhD,IAAIS,GAAkB,EACtB,GAAIhB,EAAK3vE,IAAIx6B,OAAS,EACpBmrG,GAAkB,OACb,GAAiB,MAAbhB,EAAK3vE,KAAe2vE,EAAK1iF,UAAU,KAAO0iF,EAAK1iF,UAAU,GAAI,CACtE,MAAM2jF,EAAYxlG,KAAKm7B,IAAIopE,EAAK1iF,UAAU,IACxC4jF,EAAYzlG,KAAKm7B,IAAIopE,EAAK1iF,UAAU,IAClC2jF,IAAcC,GAAazlG,KAAKmN,IAAIq4F,EAAWC,GAAazlG,KAAKoN,IAAIo4F,EAAWC,GAAa,MAC/FF,GAAkB,EAEtB,CAWA,GAVIA,IACFd,EAAkB5oF,YAAcxW,EAAMk/D,SAAWggC,EAAKvuF,OAASuuF,EAAKxuF,OAEtEzc,MAAK,GAAmB4H,IAAIsjG,EAASC,GACrCnrG,MAAK,GAAkB8mC,IAAMokE,EAC7BlrG,MAAK,GAAkB4uF,WAAauc,EACpCnrG,MAAK,GAAQA,MAAK,IACdmrG,EAAkBC,SACpBprG,MAAK,GAAW+mC,OAAOmkE,GAErBC,EAAkBE,OAAQ,CAC5B,MAAMe,EAAKhgG,SAAS0D,cAAc,MAClCs8F,EAAG3mE,aAAa,OAAQ,gBACxBzlC,MAAK,GAAW+mC,OAAOqlE,EACzB,CACF,CACA,IAAQp/C,GACN,MAAM,IACJlmB,EAAG,WACH8nD,EAAU,IACV7/C,GACEie,GACE,MACJjhD,GACE+6B,EACJ,GAA+B,IAA3B8nD,EAAWrsE,aAAqBqsE,EAAWwc,QAAS,CACtD,MAAM,WACJ5hC,GACEz9D,GACE,YACJwW,EAAW,SACXupE,GACE8C,EACJ0b,IAAU,GAAev7D,EAAK+8C,EAAW9rF,MAAK,GAAQwpE,GACtD,MAAM,MACJ/sD,GACEsyB,EAAImpD,YAAYpxD,EAAIxC,aACpB7nB,EAAQ,GACV1Q,EAAM0+F,YAAY,YAAaloF,EAAcviB,MAAK,GAASyc,EAE/D,CACyB,IAArBmyE,EAAWt0B,OACbvuD,EAAM0+F,YAAY,WAAY,GAAG7b,EAAWt0B,WAEhD,CACA,cAAO+xC,GACL,KAAIrsG,MAAK,GAAmB6rC,KAAO,GAAnC,CAGA7rC,MAAK,GAAakhD,QAClB,IAAK,MAAM,OACTz+B,KACGziB,MAAK,GAAgB8rC,SACxBrpB,EAAOosB,SAET7uC,MAAK,GAAgBkhD,OAPrB,CAQF,CACA,SAAO,CAAQ2pD,EAAO,MACpB,IAAI97D,EAAM/uC,MAAK,GAAgB6C,IAAIgoG,IAAS,IAC5C,IAAK97D,EAAK,CACR,MAAMtsB,EAASrW,SAAS0D,cAAc,UACtC2S,EAAOywB,UAAY,sBACnBzwB,EAAOooF,KAAOA,EACdz+F,SAASsiC,KAAK3H,OAAOtkB,GACrBssB,EAAMtsB,EAAOM,WAAW,KAAM,CAC5BupF,OAAO,EACP/yD,oBAAoB,IAEtBv5C,MAAK,GAAgB4H,IAAIijG,EAAM97D,GAC/B/uC,MAAK,GAAgB4H,IAAImnC,EAAK,CAC5BlD,KAAM,EACNi8B,OAAQ,IAEZ,CACA,OAAO/4B,CACT,CACA,SAAO,CAAeA,EAAKlD,EAAMi8B,GAC/B,MAAMykC,EAASvsG,MAAK,GAAgB6C,IAAIksC,GACpClD,IAAS0gE,EAAO1gE,MAAQi8B,IAAWykC,EAAOzkC,SAG9C/4B,EAAI04B,KAAO,GAAG57B,OAAUi8B,IACxBykC,EAAO1gE,KAAOA,EACd0gE,EAAOzkC,OAASA,EAClB,CACA,SAAO,GACL,GAA0B,OAAtB9nE,MAAK,GACP,OAEF,MAAM8mC,EAAM16B,SAAS0D,cAAc,OACnCg3B,EAAI/6B,MAAMyc,QAAU,EACpBse,EAAI/6B,MAAMygG,WAAa,EACvB1lE,EAAI/6B,MAAM+/E,SAAW,MACrBhlD,EAAI/6B,MAAMoV,SAAW,WACrB2lB,EAAIxC,YAAc,IAClBl4B,SAASsiC,KAAK3H,OAAOD,GACrB9mC,MAAK,GAAe8mC,EAAI/c,wBAAwBrN,OAChDoqB,EAAI+H,QACN,CACA,SAAO,CAAW26B,EAAYz9D,EAAO8+F,GACnC,MAAM4B,EAAezsG,MAAK,GAAa6C,IAAI2mE,GAC3C,GAAIijC,EACF,OAAOA,EAET,MAAM19D,EAAM/uC,MAAK,GAAQ6qG,GACzB97D,EAAItsB,OAAOhG,MAAQsyB,EAAItsB,OAAO/F,OAAS2tF,GACvCrqG,MAAK,GAAe+uC,EAAKs7D,GAAmB7gC,GAC5C,MAAMkjC,EAAU39D,EAAImpD,YAAY,IAC1BhtB,EAASwhC,EAAQC,sBACjBvhC,EAAU1kE,KAAKm7B,IAAI6qE,EAAQE,wBACjC79D,EAAItsB,OAAOhG,MAAQsyB,EAAItsB,OAAO/F,OAAS,EACvC,IAAImwF,EAAQ,GAcZ,OAbI3hC,EACF2hC,EAAQ3hC,GAAUA,EAASE,IAEvBrvC,GAAiBS,SAASK,WAC5BtE,EAAK,qHAEHxsB,EAAMm/D,OACR2hC,EAAQ9gG,EAAMm/D,OACLn/D,EAAMq/D,UACfyhC,EAAQ,EAAI9gG,EAAMq/D,UAGtBprE,MAAK,GAAa4H,IAAI4hE,EAAYqjC,GAC3BA,CACT,EA6BF,MAAMC,GAA8B,IACpC,SAASC,GAAY7gG,EAAM,CAAC,GACP,kBAARA,GAAoBA,aAAeqtB,IAC5CrtB,EAAM,CACJ2sB,IAAK3sB,IAEEA,aAAe5C,aAAeA,YAAYi6D,OAAOr3D,MAC1DA,EAAM,CACJ0C,KAAM1C,IAGV,MAAM8gG,EAAO,IAAIC,IACX,MACJp2B,GACEm2B,EACEn0E,EAAM3sB,EAAI2sB,IAAM+3C,GAAW1kE,EAAI2sB,KAAO,KACtCjqB,EAAO1C,EAAI0C,KAAOkiE,GAAY5kE,EAAI0C,MAAQ,KAC1Cw1F,EAAcl4F,EAAIk4F,aAAe,KACjCe,GAA0C,IAAxBj5F,EAAIi5F,gBACtB+H,EAAWhhG,EAAIghG,UAAY,KAC3BC,EAAiBjhG,EAAIojD,iBAAiB89C,GAAwBlhG,EAAIojD,MAAQ,KAC1Eo1C,EAAiBjjF,OAAOyW,UAAUhsB,EAAIw4F,iBAAmBx4F,EAAIw4F,eAAiB,EAAIx4F,EAAIw4F,eAAiB,MAC7G,IAAI2I,EAASnhG,EAAImhG,kBAAkBC,GAAYphG,EAAImhG,OAAS,KAC5D,MAAMt1E,EAAY7rB,EAAI6rB,UAChBw1E,EAAuC,kBAAnBrhG,EAAIqhG,YAA4B5iE,GAAaz+B,EAAIqhG,YAA+B,KAAjBrhG,EAAIqhG,WACvFC,EAAUv8B,GAAkB/kE,EAAIshG,SAChCC,GAAgC,IAAnBvhG,EAAIuhG,WACjBC,EAAoBxhG,EAAIwhG,oBAAsBjiF,EAAWkuD,GAAwB5D,IACjF43B,EAAS18B,GAAkB/kE,EAAIyhG,QAC/BC,EAAsB38B,GAAkB/kE,EAAI0hG,qBAC5CC,EAA0B3hG,EAAI2hG,0BAA4BpiF,EAAWmuD,GAA8BZ,IACnG80B,EAAU78B,GAAkB/kE,EAAI4hG,SAChCC,EAAc7hG,EAAI6hG,cAAgBtiF,EAAWouD,GAAkBX,IAC/D80B,GAAoC,IAArB9hG,EAAI+hG,aACnBC,EAAezsF,OAAOyW,UAAUhsB,EAAIgiG,eAAiBhiG,EAAIgiG,cAAgB,EAAIhiG,EAAIgiG,cAAgB,EACjGpyE,GAA0C,IAAxB5vB,EAAI4vB,gBACtBE,EAAuE,mBAAnC9vB,EAAI8vB,2BAA2C9vB,EAAI8vB,4BAA8BvQ,EACrHyQ,EAAiE,mBAAhChwB,EAAIgwB,wBAAwChwB,EAAIgwB,yBAA2BzQ,IAAasQ,GAAiBS,SAASK,YAAc90B,WAAWomG,QAC5KC,EAAuB3sF,OAAOyW,UAAUhsB,EAAIkiG,sBAAwBliG,EAAIkiG,sBAAwB,EAChGnnC,EAAiD,mBAAxB/6D,EAAI+6D,gBAAgC/6D,EAAI+6D,gBAAkBx7C,EACnFi/C,GAAkD,IAA5Bx+D,EAAIw+D,oBAC1B2jC,GAA8B,IAAlBniG,EAAImiG,UAChBtoC,EAAgB75D,EAAI65D,eAAiBh+D,WAAWqE,SAChD8yF,GAAoC,IAArBhzF,EAAIgzF,aACnBC,GAAsC,IAAtBjzF,EAAIizF,cACpBmP,GAA4C,IAAzBpiG,EAAIoiG,iBACvBC,GAAwB,IAAfriG,EAAIqiG,OACbC,EAAgBtiG,EAAIsiG,gBAAkB/iF,EAAW8tD,GAAoB9D,IACrEg5B,EAAgBviG,EAAIuiG,gBAAkBhjF,EAAW6tD,GAAoB1C,IACrEvB,GAA8B,IAAlBnpE,EAAImpE,UAChBq5B,GAA0B,IAAhBxiG,EAAIwiG,QACd5tG,EAASqsG,EAAiBA,EAAersG,OAASoL,EAAIpL,QAAUo3C,IAChEy2D,EAA+C,mBAAvBziG,EAAIyiG,eAA+BziG,EAAIyiG,gBAAkBljF,IAAaw7C,EAC9F2nC,EAA+C,mBAAvB1iG,EAAI0iG,eAA+B1iG,EAAI0iG,kBAAoBlB,IAAsB33B,IAAwB83B,IAA4B70B,IAA8B+0B,IAAgB70B,IAAkBs0B,GAAWI,GAAuBE,GAAW7lE,GAAgBulE,EAASphG,SAAS87B,UAAYD,GAAgB2lE,EAAqBxhG,SAAS87B,UAAYD,GAAgB6lE,EAAS1hG,SAAS87B,UACpZ89B,EAAe,KACrBhuC,EAAkBD,GAClB,MAAM82E,EAAmB,CACvBvkB,cAAe,IAAIkkB,EAAc,CAC/BzoC,gBACAsP,cAEF50B,cAAe,IAAIguD,EAAc,CAC/B53B,QACA9Q,kBAEF+oC,kBAAmBF,EAAiB,KAAO,IAAIlB,EAAkB,CAC/D10E,QAASw0E,EACT73B,aAAc83B,IAEhBsB,wBAAyBH,EAAiB,KAAO,IAAIf,EAAwB,CAC3E70E,QAAS40E,IAEXoB,YAAaJ,EAAiB,KAAO,IAAIb,EAAY,CACnD/0E,QAAS80E,KAGRT,IACHA,EAASC,GAAU7gG,OAAO,CACxBsrB,YACAk3E,KAAM,GAAoBnS,aAE5BkQ,EAAKkC,QAAU7B,GAEjB,MAAM8B,EAAY,CAChBt4B,QACAu4B,WAAY,UACZxgG,OACAs+F,WACAoB,mBACA5J,iBACA5jG,SACAysG,aACAc,YACAgB,iBAAkB,CAChBnB,eACAjnC,kBACA+mC,eACAlyE,kBACAE,6BACAE,0BACAkyE,uBACA1jC,sBACAikC,iBACAD,UACAE,iBACApB,UACAG,SACAC,sBACAE,YAGEwB,EAAkB,CACtBvpC,gBACAwoC,SACAvoC,eACAupC,cAAe,CACbjB,mBACAD,cA6CJ,OA1CAhB,EAAOlqF,QAAQu2B,KAAK,WAClB,GAAIszD,EAAKwC,UACP,MAAM,IAAI/2E,MAAM,mBAElB,GAAI40E,EAAOmC,UACT,MAAM,IAAI/2E,MAAM,wBAElB,MAAMg3E,EAAkBpC,EAAOqC,eAAeh8B,gBAAgB,gBAAiBy7B,EAAWvgG,EAAO,CAACA,EAAKvF,QAAU,MACjH,IAAIsmG,EACJ,GAAIxC,EACFwC,EAAgB,IAAI3Q,GAAuBmO,EAAgB,CACzDjO,eACAC,uBAEG,IAAKvwF,EAAM,CAChB,IAAKiqB,EACH,MAAM,IAAIJ,MAAM,8CAElB,MAAMm3E,EAAgB3nE,GAAgBpP,GAAO2sE,GAAiB/5E,EAAWg+E,GAAgB5B,GACzF8H,EAAgB,IAAIC,EAAc,CAChC/2E,MACA/3B,SACAsjG,cACAe,kBACAT,iBACAxF,eACAC,iBAEJ,CACA,OAAOsQ,EAAgB/1D,KAAKm2D,IAC1B,GAAI7C,EAAKwC,UACP,MAAM,IAAI/2E,MAAM,mBAElB,GAAI40E,EAAOmC,UACT,MAAM,IAAI/2E,MAAM,wBAElB,MAAMi3E,EAAiB,IAAIj9B,GAAeoE,EAAOg5B,EAAUxC,EAAO4B,MAC5Da,EAAY,IAAIC,GAAgBL,EAAgB1C,EAAM2C,EAAeL,EAAiBT,EAAkBx5B,GAC9G23B,EAAKgD,WAAaF,EAClBJ,EAAexmE,KAAK,QAAS,OAEjC,GAAG4sC,MAAMk3B,EAAKiD,YAAYvnE,QACnBskE,CACT,CACA,MAAMC,GACJplE,UAAgB,EAChBooE,YAAc1uF,QAAQwiC,gBACtBisD,WAAa,KACbd,QAAU,KACVr4B,MAAQ,IAAIo2B,IAAuB,KACnCuC,WAAY,EACZU,WAAa,KACblP,WAAa,KACb,WAAI79E,GACF,OAAOnjB,KAAKiwG,YAAY9sF,OAC1B,CACA,aAAM8zB,GACJj3C,KAAKwvG,WAAY,EACjB,IACMxvG,KAAKkvG,SAASD,OAChBjvG,KAAKkvG,QAAQiB,iBAAkB,SAE3BnwG,KAAKgwG,YAAY/4D,UACzB,CAAE,MAAOuR,GAIP,MAHIxoD,KAAKkvG,SAASD,aACTjvG,KAAKkvG,QAAQiB,gBAEhB3nD,CACR,CACAxoD,KAAKgwG,WAAa,KAClBhwG,KAAKkvG,SAASj4D,UACdj3C,KAAKkvG,QAAU,IACjB,CACA,aAAM7rD,GACJ,OAAOrjD,KAAKgwG,WAAW3sD,SACzB,EAEF,MAAM+pD,GACJ,IAAc7rF,QAAQwiC,gBACtB,IAA4B,GAC5B,IAA4B,GAC5B,IAAqB,GACrB,IAAkB,GAClB,WAAA//C,CAAYlD,EAAQs+F,EAAaC,GAAkB,EAAOC,EAA6B,MACrFt/F,KAAKc,OAASA,EACdd,KAAKo/F,YAAcA,EACnBp/F,KAAKq/F,gBAAkBA,EACvBr/F,KAAKs/F,2BAA6BA,CACpC,CACA,gBAAAU,CAAiBxuB,GACfxxE,MAAK,GAAgBiK,KAAKunE,EAC5B,CACA,mBAAA2uB,CAAoB3uB,GAClBxxE,MAAK,GAAmBiK,KAAKunE,EAC/B,CACA,0BAAA8uB,CAA2B9uB,GACzBxxE,MAAK,GAA0BiK,KAAKunE,EACtC,CACA,0BAAA+uB,CAA2B/uB,GACzBxxE,MAAK,GAA0BiK,KAAKunE,EACtC,CACA,WAAA4+B,CAAYnQ,EAAO9kE,GACjB,IAAK,MAAMq2C,KAAYxxE,MAAK,GAC1BwxE,EAASyuB,EAAO9kE,EAEpB,CACA,cAAAk1E,CAAexoC,EAAQu4B,GACrBpgG,MAAK,GAAYmjB,QAAQu2B,KAAK,KAC5B,IAAK,MAAM83B,KAAYxxE,MAAK,GAC1BwxE,EAAS3J,EAAQu4B,IAGvB,CACA,qBAAAkQ,CAAsBn1E,GACpBn7B,MAAK,GAAYmjB,QAAQu2B,KAAK,KAC5B,IAAK,MAAM83B,KAAYxxE,MAAK,GAC1BwxE,EAASr2C,IAGf,CACA,qBAAAo1E,GACEvwG,MAAK,GAAYmjB,QAAQu2B,KAAK,KAC5B,IAAK,MAAM83B,KAAYxxE,MAAK,GAC1BwxE,KAGN,CACA,cAAAivB,GACEzgG,MAAK,GAAYikC,SACnB,CACA,gBAAAu9D,CAAiBvB,EAAOvzD,GACtBlU,EAAY,yDACd,CACA,KAAAwoB,GAAS,EAEX,MAAMwvD,GACJ,WAAAxsG,CAAYysG,EAASX,GACnB9vG,KAAK0wG,SAAWD,EAChBzwG,KAAKgwG,WAAaF,CACpB,CACA,qBAAIrpE,GACF,OAAOzmC,KAAKgwG,WAAWvpE,iBACzB,CACA,iBAAI6jD,GACF,OAAOtqF,KAAKgwG,WAAW1lB,aACzB,CACA,iBAAI7pC,GACF,OAAOzgD,KAAKgwG,WAAWvvD,aACzB,CACA,YAAIv/B,GACF,OAAOlhB,KAAK0wG,SAASxvF,QACvB,CACA,gBAAIyvF,GACF,OAAO3wG,KAAK0wG,SAASC,YACvB,CACA,aAAIC,GACF,OAAO92E,EAAO95B,KAAM,cAAeA,KAAKgwG,WAAWa,YACrD,CACA,cAAIC,GACF,OAAO9wG,KAAKgwG,WAAWa,WACzB,CACA,OAAAE,CAAQjtD,GACN,OAAO9jD,KAAKgwG,WAAWe,QAAQjtD,EACjC,CACA,YAAAktD,CAAaxzF,GACX,OAAOxd,KAAKgwG,WAAWgB,aAAaxzF,EACtC,CACA,eAAAyzF,GACE,OAAOjxG,KAAKgwG,WAAWiB,iBACzB,CACA,cAAAC,CAAe3hG,GACb,OAAOvP,KAAKgwG,WAAWkB,eAAe3hG,EACxC,CACA,aAAA4hG,GACE,OAAOnxG,KAAKgwG,WAAWmB,eACzB,CACA,aAAAC,GACE,OAAOpxG,KAAKgwG,WAAWoB,eACzB,CACA,WAAAC,GACE,OAAOrxG,KAAKgwG,WAAWqB,aACzB,CACA,oBAAAC,GACE,OAAOtxG,KAAKgwG,WAAWsB,sBACzB,CACA,aAAAC,GACE,OAAOvxG,KAAKgwG,WAAWuB,eACzB,CACA,cAAAC,GACE,OAAOxxG,KAAKgwG,WAAWwB,gBACzB,CACA,oBAAAtnD,CAAqBlB,EAAOyoD,GAC1B,OAAOzxG,KAAKgwG,WAAW9lD,qBAAqBlB,EAAOyoD,EACrD,CACA,YAAAC,GACE,OAAO1xG,KAAKgwG,WAAW2B,iBACzB,CACA,UAAAC,GACE,OAAO5xG,KAAKgwG,WAAW4B,YACzB,CACA,wBAAAC,EAAyB,OACvBzsE,EAAS,WACP,CAAC,GACH,MAAM,gBACJk4D,GACEt9F,KAAKgwG,WAAW8B,mBAAmB1sE,GACvC,OAAOplC,KAAKgwG,WAAW6B,yBAAyBvU,EAClD,CACA,cAAAyU,GACE,OAAO/xG,KAAKgwG,WAAW+B,gBACzB,CACA,WAAAC,GACE,OAAOhyG,KAAKgwG,WAAWgC,aACzB,CACA,WAAAC,GACE,OAAOjyG,KAAKgwG,WAAWiC,aACzB,CACA,OAAA5uD,GACE,OAAOrjD,KAAKgwG,WAAW3sD,SACzB,CACA,YAAA6uD,GACE,OAAOlyG,KAAKgwG,WAAWkC,cACzB,CACA,YAAAC,CAAaC,GACX,OAAOpyG,KAAKgwG,WAAWmC,aAAaC,EACtC,CACA,eAAAC,GACE,OAAOryG,KAAKgwG,WAAWsC,uBAAuBnvF,OAChD,CACA,OAAAkpF,CAAQkG,GAAkB,GACxB,OAAOvyG,KAAKgwG,WAAWwC,aAAaD,GAAmBvyG,KAAK4wG,UAC9D,CACA,OAAA35D,GACE,OAAOj3C,KAAKyyG,YAAYx7D,SAC1B,CACA,gBAAAy7D,CAAiBl1F,GACf,OAAOxd,KAAKgwG,WAAW0C,iBAAiBl1F,EAC1C,CACA,iBAAI+xF,GACF,OAAOvvG,KAAKgwG,WAAWT,aACzB,CACA,eAAIkD,GACF,OAAOzyG,KAAKgwG,WAAWyC,WACzB,CACA,eAAAE,GACE,OAAO3yG,KAAKgwG,WAAW2C,iBACzB,CACA,YAAAC,GACE,OAAO5yG,KAAKgwG,WAAW4C,cACzB,CACA,sBAAAC,GACE,OAAO7yG,KAAKgwG,WAAW6C,wBACzB,EAEF,MAAMC,GACJ,KAAkB,EAClB,WAAA9uG,CAAYi/C,EAAW8vD,EAAUjD,EAAWvB,GAAS,GACnDvuG,KAAKgzG,WAAa/vD,EAClBjjD,KAAKizG,UAAYF,EACjB/yG,KAAKgwG,WAAaF,EAClB9vG,KAAKkzG,OAAS3E,EAAS,IAAIriE,GAAc,KACzClsC,KAAKmzG,QAAU5E,EACfvuG,KAAKkwF,WAAa4f,EAAU5f,WAC5BlwF,KAAKsqE,KAAO,IAAI6/B,GAChBnqG,KAAKozG,cAAgB,IAAI9tG,IACzBtF,KAAKwvG,WAAY,EACjBxvG,KAAKqzG,eAAiB,IACxB,CACA,cAAIvvD,GACF,OAAO9jD,KAAKgzG,WAAa,CAC3B,CACA,UAAIlyC,GACF,OAAO9gE,KAAKizG,UAAUnyC,MACxB,CACA,OAAItjD,GACF,OAAOxd,KAAKizG,UAAUz1F,GACxB,CACA,YAAI6rB,GACF,OAAOrpC,KAAKizG,UAAU5pE,QACxB,CACA,QAAI6iC,GACF,OAAOlsE,KAAKizG,UAAU/mC,IACxB,CACA,WAAAjpD,EAAY,MACVtF,EAAK,SACL2rB,EAAWtpC,KAAK8gE,OAAM,QACtB55C,EAAU,EAAC,QACXC,EAAU,EAAC,SACXoiB,GAAW,GACT,CAAC,GACH,OAAO,IAAIJ,GAAa,CACtBC,QAASppC,KAAKksE,KACd7iC,SAAUrpC,KAAKqpC,SACf1rB,QACA2rB,WACApiB,UACAC,UACAoiB,YAEJ,CACA,cAAA+pE,EAAe,OACbluE,EAAS,WACP,CAAC,GACH,MAAM,gBACJk4D,GACEt9F,KAAKgwG,WAAW8B,mBAAmB1sE,GACvC,OAAOplC,KAAKgwG,WAAWsD,eAAetzG,KAAKgzG,WAAY1V,EACzD,CACA,YAAAoU,GACE,OAAO1xG,KAAKgwG,WAAWuD,iBAAiBvzG,KAAKgzG,WAC/C,CACA,iBAAIvyD,GACF,OAAOzgD,KAAKgwG,WAAWvvD,aACzB,CACA,aAAImwD,GACF,OAAO92E,EAAO95B,KAAM,cAAeA,KAAKgwG,WAAWa,YACrD,CACA,YAAM2C,GACJ,OAAOxzG,KAAKgwG,WAAWa,aAAa/rE,SAAS9kC,KAAKgzG,aAAe,IACnE,CACA,MAAA52F,EAAO,cACL8G,EAAa,OACbT,EAASS,EAAcT,OAAM,SAC7BO,EAAQ,OACRoiB,EAAS,UAAS,eAClBquE,EAAiBjnF,EAAeE,OAAM,UACtCnE,EAAY,KAAI,WAChBq5B,EAAa,KAAI,6BACjB8xD,EAA+B,KAAI,oBACnCrjB,EAAsB,KAAI,WAC1B7wC,EAAa,KAAI,uBACjBm0D,EAAyB,KAAI,UAC7B91D,GAAY,EAAK,iBACjB+1D,GAAmB,EAAK,iBACxBzhB,EAAmB,OAEnBnyF,KAAKkzG,QAAQ7mE,KAAK,WAClB,MAAMwnE,EAAa7zG,KAAKgwG,WAAW8B,mBAAmB1sE,EAAQquE,EAAgBE,EAAwB91D,IAChG,gBACJy/C,EAAe,SACftJ,GACE6f,EACJ7zG,MAAK,IAAkB,EACvB0zG,IAAiC1zG,KAAKgwG,WAAW6B,yBAAyBvU,GAC1E,IAAIwW,EAAc9zG,KAAKozG,cAAcvwG,IAAImxF,GACpC8f,IACHA,EAAc7wG,OAAOwJ,OAAO,MAC5BzM,KAAKozG,cAAcxrG,IAAIosF,EAAU8f,IAE/BA,EAAYC,4BACd5yD,aAAa2yD,EAAYC,2BACzBD,EAAYC,0BAA4B,MAE1C,MAAMC,KAAiB1W,EAAkBxxE,EAAoBG,OACxD6nF,EAAYG,yBACfH,EAAYG,uBAAyB1yF,QAAQwiC,gBAC7C+vD,EAAYxuB,aAAe,CACzB+M,QAAS,GACTD,UAAW,GACX8hB,WAAW,EACXC,eAAgB,MAElBn0G,KAAKkzG,QAAQ7mE,KAAK,gBAClBrsC,KAAKo0G,kBAAkBP,IAEzB,MAAMQ,EAAoBhuF,QAAQrmB,KAAKmzG,SAAWprG,WAAWusG,gBAAgBnjD,SACvEojD,GAA0Bv0G,KAAKqzG,iBAAmBO,GAAoBS,GACtE9rC,EAAW5mE,IAEf,GADAmyG,EAAYU,YAAYh/D,OAAOi/D,GAC3BF,EAAwB,CAC1B,MAAMlB,EAAiBoB,EAAmBC,KAAKn2B,kBAAkBH,OAC7Di1B,IACEoB,EAAmBviB,SACrBuiB,EAAmBviB,QAAQyiB,kBAAkBtB,EAAgBoB,EAAmBC,IAAIn2B,kBAAkBF,qBAEpGu1B,IACF5zG,KAAKqzG,eAAiBA,GAG5B,CACIW,IACFh0G,MAAK,IAAkB,GAEzBA,MAAK,KACD2B,GACF8yG,EAAmBrhC,WAAW1qC,OAAO/mC,GACrC3B,KAAK40G,mBAAmB,CACtBd,cACAzgC,OAAQ1xE,aAAiB82B,MAAQ92B,EAAQ,IAAI82B,MAAM92B,MAGrD8yG,EAAmBrhC,WAAWnvC,UAE5BjkC,KAAKkzG,SACPlzG,KAAKkzG,OAAO1mE,QAAQ,aACpBxsC,KAAKkzG,OAAO1mE,QAAQ,WAChBzkC,WAAW8sG,OAAO1jD,SACpBppD,WAAW8sG,MAAMzwF,IAAIpkB,KAAK8jD,WAAY9jD,KAAKkzG,UAI3CuB,EAAqB,IAAIK,GAAmB,CAChDn4D,SAAU4rB,EACVvb,OAAQ,CACNvqC,SACAS,gBACAq7D,kBAAmBg2B,EAAyB,IAAIj6B,GAAwB73D,EAAQqxF,EAAYxuB,aAAaxkF,OAAQuzG,GAAqB,KACtIrxF,WACAuF,YACAq5B,cAEF0oB,KAAMtqE,KAAKsqE,KACX4lB,WAAYlwF,KAAKkwF,WACjBG,sBACA/K,aAAcwuB,EAAYxuB,aAC1BriC,UAAWjjD,KAAKgzG,WAChB1oB,cAAetqF,KAAKgwG,WAAW1lB,cAC/B7pC,cAAezgD,KAAKgwG,WAAWvvD,cAC/Bs0D,0BAA2Bf,EAC3BzF,OAAQvuG,KAAKmzG,QACb3zD,aACA61B,UAAWr1E,KAAKgwG,WAAW36B,UAC3B8c,sBAED2hB,EAAYU,cAAgB,IAAIn8D,KAAOj0B,IAAIqwF,GAC5C,MAAM3yF,EAAa2yF,EAAmBzH,KAgBtC,OAfAzrF,QAAQ7O,IAAI,CAACohG,EAAYG,uBAAuB9wF,QAASuwF,IAA+Bh6D,KAAK,EAAEi4C,EAAcxB,MAC3G,GAAInwF,KAAKwvG,UACPjnC,QADF,CAKA,GADAvoE,KAAKkzG,QAAQ7mE,KAAK,eACZ8jD,EAAsBmN,gBAAkBA,GAC5C,MAAM,IAAI7kE,MAAM,uIAElBg8E,EAAmBO,mBAAmB,CACpCrjB,eACAxB,0BAEFskB,EAAmBQ,qBATnB,IAUCn/B,MAAMvN,GACFzmD,CACT,CACA,eAAAozF,EAAgB,OACd9vE,EAAS,UAAS,eAClBquE,EAAiBjnF,EAAeE,OAAM,uBACtCinF,EAAyB,KAAI,UAC7B91D,GAAY,GACV,CAAC,GACH,SAASo3D,IACHnB,EAAYxuB,aAAa4uB,YAC3BJ,EAAYqB,qBAAqBlxE,QAAQ6vE,EAAYxuB,cACrDwuB,EAAYU,YAAYh/D,OAAO4/D,GAEnC,CACA,MAAMvB,EAAa7zG,KAAKgwG,WAAW8B,mBAAmB1sE,EAAQquE,EAAgBE,EAAwB91D,GAAW,GACjH,IAKIu3D,EALAtB,EAAc9zG,KAAKozG,cAAcvwG,IAAIgxG,EAAW7f,UAoBpD,OAnBK8f,IACHA,EAAc7wG,OAAOwJ,OAAO,MAC5BzM,KAAKozG,cAAcxrG,IAAIisG,EAAW7f,SAAU8f,IAGzCA,EAAYqB,uBACfC,EAAanyG,OAAOwJ,OAAO,MAC3B2oG,EAAWH,oBAAsBA,EACjCnB,EAAYqB,qBAAuB5zF,QAAQwiC,iBAC1C+vD,EAAYU,cAAgB,IAAIn8D,KAAOj0B,IAAIgxF,GAC5CtB,EAAYxuB,aAAe,CACzB+M,QAAS,GACTD,UAAW,GACX8hB,WAAW,EACXC,eAAgB,MAElBn0G,KAAKkzG,QAAQ7mE,KAAK,gBAClBrsC,KAAKo0G,kBAAkBP,IAElBC,EAAYqB,qBAAqBhyF,OAC1C,CACA,iBAAAkyF,EAAkB,qBAChBC,GAAuB,EAAK,qBAC5BC,GAAuB,GACrB,CAAC,GACH,MAAMC,EAA0B,IAChC,OAAOx1G,KAAKgwG,WAAWN,eAAe/7B,eAAe,iBAAkB,CACrE1wB,UAAWjjD,KAAKgzG,WAChBsC,sBAA+C,IAAzBA,EACtBC,sBAA+C,IAAzBA,GACrB,CACDE,cAAeD,EACf,IAAA3pE,CAAKvH,GACH,OAAOA,EAAYE,MAAM1jC,MAC3B,GAEJ,CACA,cAAA40G,CAAe1oD,EAAS,CAAC,GACvB,GAAIhtD,KAAKgwG,WAAWa,YAClB,OAAO7wG,KAAKwzG,SAAS95D,KAAKnV,GAAOF,GAAQC,YAAYC,IAEvD,MAAM0lE,EAAiBjqG,KAAKq1G,kBAAkBroD,GAC9C,OAAO,IAAIzrC,QAAQ,SAAU0iB,EAASyE,GACpC,SAASkiE,IACP1J,EAAOkB,OAAO1oD,KAAK,UAAU,MAC3B53C,EAAK,KACLmE,IAEIA,EACFg+B,EAAQK,IAGVA,EAAYumE,OAAS/oG,EAAM+oG,KAC3B5nG,OAAOmjC,OAAO9B,EAAYG,OAAQ3iC,EAAM2iC,QACxCH,EAAYE,MAAMv6B,QAAQnI,EAAM0iC,OAChComE,IACF,EAAGliE,EACL,CACA,MAAMw4D,EAAS+I,EAAe9D,YACxB7hE,EAAc,CAClBE,MAAO,GACPC,OAAQxhC,OAAOwJ,OAAO,MACtBo+F,KAAM,MAERD,GACF,EACF,CACA,aAAA+K,GACE,OAAO31G,KAAKgwG,WAAW2F,cAAc31G,KAAKgzG,WAC5C,CACA,QAAA4C,GACE51G,KAAKwvG,WAAY,EACjB,MAAMqG,EAAS,GACf,IAAK,MAAM/B,KAAe9zG,KAAKozG,cAActnE,SAM3C,GALA9rC,KAAK40G,mBAAmB,CACtBd,cACAzgC,OAAQ,IAAI56C,MAAM,uBAClBq9E,OAAO,KAELhC,EAAYqB,qBAGhB,IAAK,MAAMV,KAAsBX,EAAYU,YAC3CqB,EAAO5rG,KAAKwqG,EAAmBsB,WAC/BtB,EAAmBtyF,SAKvB,OAFAniB,KAAKsqE,KAAKppB,QACVlhD,MAAK,IAAkB,EAChBuhB,QAAQ7O,IAAImjG,EACrB,CACA,OAAAxJ,CAAQ2J,GAAa,GACnBh2G,MAAK,IAAkB,EACvB,MAAMg1E,EAAUh1E,MAAK,KAIrB,OAHIg2G,GAAchhC,IAChBh1E,KAAKkzG,SAAW,IAAIhnE,IAEf8oC,CACT,CACA,MACE,IAAKh1E,MAAK,IAAmBA,KAAKwvG,UAChC,OAAO,EAET,IAAK,MAAM,YACTgF,EAAW,aACXlvB,KACGtlF,KAAKozG,cAActnE,SACtB,GAAI0oE,EAAY3oE,KAAO,IAAMy5C,EAAa4uB,UACxC,OAAO,EAMX,OAHAl0G,KAAKozG,cAAclyD,QACnBlhD,KAAKsqE,KAAKppB,QACVlhD,MAAK,IAAkB,GAChB,CACT,CACA,gBAAAi2G,CAAiBtkB,EAAcqC,GAC7B,MAAM8f,EAAc9zG,KAAKozG,cAAcvwG,IAAImxF,GACtC8f,IAGL9zG,KAAKkzG,QAAQ1mE,QAAQ,gBACrBsnE,EAAYG,wBAAwBhwE,QAAQ0tD,GAC9C,CACA,gBAAAukB,CAAiBC,EAAmBrC,GAClC,IAAK,IAAI7qG,EAAI,EAAG2hC,EAAKurE,EAAkBr1G,OAAQmI,EAAI2hC,EAAI3hC,IACrD6qG,EAAYxuB,aAAa+M,QAAQpoF,KAAKksG,EAAkB9jB,QAAQppF,IAChE6qG,EAAYxuB,aAAa8M,UAAUnoF,KAAKksG,EAAkB/jB,UAAUnpF,IAEtE6qG,EAAYxuB,aAAa4uB,UAAYiC,EAAkBjC,UACvDJ,EAAYxuB,aAAa6uB,eAAiBgC,EAAkBhC,eAC5D,IAAK,MAAMM,KAAsBX,EAAYU,YAC3CC,EAAmBQ,sBAEjBkB,EAAkBjC,WACpBl0G,MAAK,IAET,CACA,iBAAAo0G,EAAkB,gBAChB9W,EAAe,SACftJ,EAAQ,8BACRoiB,EAA6B,YAC7BxwC,IAEA,MAAM,IACJ/7D,EAAG,SACHL,GACE4sG,EACEnM,EAAiBjqG,KAAKgwG,WAAWN,eAAe/7B,eAAe,kBAAmB,CACtF1wB,UAAWjjD,KAAKgzG,WAChB5tE,OAAQk4D,EACRtJ,WACAvtD,kBAAmB58B,EACnB+7D,eACCp8D,GACG03F,EAAS+I,EAAe9D,YACxB2N,EAAc9zG,KAAKozG,cAAcvwG,IAAImxF,GAC3C8f,EAAYuC,aAAenV,EAC3B,MAAM0J,EAAO,KACX1J,EAAOkB,OAAO1oD,KAAK,EACjB53C,QACAmE,WAEIA,EACF6tG,EAAYuC,aAAe,KAGzBr2G,KAAKgwG,WAAWR,YAGpBxvG,KAAKk2G,iBAAiBp0G,EAAOgyG,GAC7BlJ,MACCv3B,IAED,GADAygC,EAAYuC,aAAe,MACvBr2G,KAAKgwG,WAAWR,UAApB,CAGA,GAAIsE,EAAYxuB,aAAc,CAC5BwuB,EAAYxuB,aAAa4uB,WAAY,EACrC,IAAK,MAAMO,KAAsBX,EAAYU,YAC3CC,EAAmBQ,sBAErBj1G,MAAK,IACP,CACA,GAAI8zG,EAAYG,uBACdH,EAAYG,uBAAuBvrE,OAAO2qC,OACrC,KAAIygC,EAAYqB,qBAGrB,MAAM9hC,EAFNygC,EAAYqB,qBAAqBzsE,OAAO2qC,EAG1C,CAdA,KAiBJu3B,GACF,CACA,kBAAAgK,EAAmB,YACjBd,EAAW,OACXzgC,EAAM,MACNyiC,GAAQ,IAER,GAAKhC,EAAYuC,aAAjB,CAOA,GAJIvC,EAAYC,4BACd5yD,aAAa2yD,EAAYC,2BACzBD,EAAYC,0BAA4B,OAErC+B,EAAO,CACV,GAAIhC,EAAYU,YAAY3oE,KAAO,EACjC,OAEF,GAAIwnC,aAAkB5oC,GAA6B,CACjD,IAAI6rE,EAAQxJ,GAYZ,OAXIz5B,EAAO3oC,WAAa,GAAK2oC,EAAO3oC,WAAa,MAC/C4rE,GAASjjC,EAAO3oC,iBAElBopE,EAAYC,0BAA4B9nD,WAAW,KACjD6nD,EAAYC,0BAA4B,KACxC/zG,KAAK40G,mBAAmB,CACtBd,cACAzgC,SACAyiC,OAAO,KAERQ,GAEL,CACF,CAGA,GAFAxC,EAAYuC,aAAal0F,OAAO,IAAIyY,GAAey4C,EAAOp5C,UAAU67C,MAAM,QAC1Eg+B,EAAYuC,aAAe,MACvBr2G,KAAKgwG,WAAWR,UAApB,CAGA,IAAK,MAAO+G,EAAaC,KAAmBx2G,KAAKozG,cAC/C,GAAIoD,IAAmB1C,EAAa,CAClC9zG,KAAKozG,cAAc59D,OAAO+gE,GAC1B,KACF,CAEFv2G,KAAKqsG,SAPL,CA7BA,CAqCF,CACA,SAAIrnC,GACF,OAAOhlE,KAAKkzG,MACd,EAEF,MAAM5F,GACJ,IAAc/rF,QAAQwiC,gBACtB,IAAkB,KAClB,IAAQ,KACR,IAAa,KACblc,UAAuB,EACvBA,WAA2B,EAC3BA,UAAsB,IAAIv/B,eAEpBmjB,IACFzrB,MAAK,IAAoB,EACzB,GAAoBg9F,YAAc,oBAEpCh9F,KAAKy2G,cAAgB,CAACz9E,EAAS09E,KAC7B,MAAMC,EAAOp9E,IAAIC,MAAMR,GACvB,IAAK29E,GAAMhhD,QAA0B,SAAhBghD,EAAKhhD,OACxB,OAAO,EAET,MAAMihD,EAAQ,IAAIr9E,IAAIm9E,EAAUC,GAChC,OAAOA,EAAKhhD,SAAWihD,EAAMjhD,QAE/B31D,KAAK62G,kBAAoBh+E,IACvB,MAAMrN,EAAU,iBAAiBqN,OACjC,OAAOU,IAAIu9E,gBAAgB,IAAI58D,KAAK,CAAC1uB,GAAU,CAC7C/iB,KAAM,sBAGVzI,KAAK+2G,SAAW/pD,IAEd,GADAhgB,GAAW,kEACNggB,GAAQiiD,KACX,MAAM,IAAIx2E,MAAM,kDAElB,OAAOz4B,KAAKyM,OAAOugD,GAEvB,CACA,WAAAhpD,EAAY,KACVN,EAAO,KAAI,KACXurG,EAAO,KAAI,UACXl3E,EAAYI,KACV,CAAC,GAIH,GAHAn4B,KAAK0D,KAAOA,EACZ1D,KAAKwvG,WAAY,EACjBxvG,KAAK+3B,UAAYA,EACbk3E,EAAM,CACR,GAAI3B,IAAU,GAAazlG,IAAIonG,GAC7B,MAAM,IAAIx2E,MAAM,gDAElB60E,IAAU,GAAa1lG,IAAIqnG,EAAMjvG,MACjCA,MAAK,GAAoBivG,EAC3B,MACEjvG,MAAK,IAET,CACA,WAAImjB,GACF,OAAOnjB,MAAK,GAAYmjB,OAC1B,CACA,MACEnjB,MAAK,GAAYikC,UACjBjkC,MAAK,GAAgBkpC,KAAK,YAAa,CACrCnR,UAAW/3B,KAAK+3B,WAEpB,CACA,QAAIk3E,GACF,OAAOjvG,MAAK,EACd,CACA,kBAAI0vG,GACF,OAAO1vG,MAAK,EACd,CACA,IAAoBivG,GAClBjvG,MAAK,GAAQivG,EACbjvG,MAAK,GAAkB,IAAIyyE,GAAe,OAAQ,SAAUw8B,GAC5DjvG,MAAK,GAAgBkd,GAAG,QAAS,QACjCld,MAAK,IACP,CACA,MACE,GAAIstG,IAAU,IAAqBA,IAAU,GAE3C,YADAttG,MAAK,KAGP,IAAI,UACFg9F,GACEsQ,GACJ,IACOA,GAAUmJ,cAAc5lG,OAAOggE,SAAUmsB,KAC5CA,EAAYsQ,GAAUuJ,kBAAkB,IAAIt9E,IAAIyjE,EAAWnsF,OAAOggE,UAAUh3C,OAE9E,MAAMwzE,EAAS,IAAItQ,OAAOC,EAAW,CACnCv0F,KAAM,WAEFinG,EAAiB,IAAIj9B,GAAe,OAAQ,SAAU46B,GACtD2J,EAAiB,KACrB31D,EAAGL,QACH0uD,EAAez4D,UACfo2D,EAAO17B,YACH3xE,KAAKwvG,UACPxvG,MAAK,GAAY0oC,OAAO,IAAIjQ,MAAM,yBAElCz4B,MAAK,MAGHqhD,EAAK,IAAI1D,gBACf0vD,EAAOvkF,iBAAiB,QAAS,KAC1B9oB,MAAK,IACRg3G,KAED,CACD1iE,OAAQ+M,EAAG/M,SAEbo7D,EAAexyF,GAAG,OAAQtO,IACxByyC,EAAGL,SACChhD,KAAKwvG,WAAc5gG,GAIvB5O,MAAK,GAAkB0vG,EACvB1vG,MAAK,GAAQqtG,EACbrtG,MAAK,GAAaqtG,EAClBrtG,MAAK,MANHg3G,MAQJtH,EAAexyF,GAAG,QAAStO,IAEzB,GADAyyC,EAAGL,QACChhD,KAAKwvG,UACPwH,SAGF,IACEC,GACF,CAAE,MACAj3G,MAAK,IACP,IAEF,MAAMi3G,EAAW,KACf,MAAMC,EAAU,IAAI37E,WACpBm0E,EAAexmE,KAAK,OAAQguE,EAAS,CAACA,EAAQ7tG,UAGhD,YADA4tG,GAEF,CAAE,MACA7+E,EAAK,gCACP,CACAp4B,MAAK,IACP,CACA,MACOstG,IAAU,KACb/0E,EAAK,2BACL+0E,IAAU,IAAoB,GAEhCA,GAAU6J,uBAAuBz9D,KAAK09D,IACpC,GAAIp3G,KAAKwvG,UAEP,YADAxvG,MAAK,GAAY0oC,OAAO,IAAIjQ,MAAM,yBAGpC,MAAMw2E,EAAO,IAAI19B,GACjBvxE,MAAK,GAAQivG,EACb,MAAM1/F,EAAK,OAAO+9F,IAAU,KACtB+J,EAAgB,IAAI5kC,GAAeljE,EAAK,UAAWA,EAAI0/F,GAC7DmI,EAAqBE,MAAMD,EAAepI,GAC1CjvG,MAAK,GAAkB,IAAIyyE,GAAeljE,EAAIA,EAAK,UAAW0/F,GAC9DjvG,MAAK,OACJ81E,MAAMzC,IACPrzE,MAAK,GAAY0oC,OAAO,IAAIjQ,MAAM,mCAAmC46C,EAAOp5C,eAEhF,CACA,OAAAgd,GACEj3C,KAAKwvG,WAAY,EACjBxvG,MAAK,IAAY2xE,YACjB3xE,MAAK,GAAa,KAClBstG,IAAU,GAAa93D,OAAOx1C,MAAK,IACnCA,MAAK,GAAQ,KACbA,MAAK,IAAiBi3C,UACtBj3C,MAAK,GAAkB,IACzB,CACA,aAAOyM,CAAOugD,GACZ,MAAMuqD,EAAav3G,MAAK,GAAa6C,IAAImqD,GAAQiiD,MACjD,GAAIsI,EAAY,CACd,GAAIA,EAAWpH,gBACb,MAAM,IAAI13E,MAAM,yHAElB,OAAO8+E,CACT,CACA,OAAO,IAAIjK,GAAUtgD,EACvB,CACA,oBAAWgwC,GACT,GAAI,GAAoBA,UACtB,OAAO,GAAoBA,UAE7B,MAAM,IAAIvkE,MAAM,gDAClB,CACA,aAAW,GACT,IACE,OAAO1wB,WAAWyvG,aAAaJ,sBAAwB,IACzD,CAAE,MACA,OAAO,IACT,CACF,CACA,iCAAWD,GACT,MAAMM,EAAS1vE,UACb,GAAI/nC,MAAK,GACP,OAAOA,MAAK,GAEd,MAAMqtG,QAAeqK,OAGrB13G,KAAKg9F,WACL,OAAOqQ,EAAO+J,sBAEhB,OAAOt9E,EAAO95B,KAAM,yBAA0By3G,IAChD,EAEF,MAAM1H,GACJ,IAAkB,IAAIzqG,IACtB,IAAa,IAAIA,IACjB,IAAgB,IAAIA,IACpB,IAAgB,IAAIA,IACpB,IAAsB,KACtB,WAAAtB,CAAY0rG,EAAgB+C,EAAa9C,EAAe3iD,EAAQttD,EAAS21E,GACvEr1E,KAAK0vG,eAAiBA,EACtB1vG,KAAKyyG,YAAcA,EACnBzyG,KAAKkwF,WAAa,IAAIia,GACtBnqG,KAAK23G,WAAa,IAAI7xC,GAAW,CAC/BC,cAAe/Y,EAAO+Y,cACtBC,aAAchZ,EAAOgZ,eAEvBhmE,KAAKuvG,cAAgBviD,EAAOuiD,cAC5BvvG,KAAK43G,QAAU5qD,EACfhtD,KAAKsqF,cAAgB5qF,EAAQ4qF,cAC7BtqF,KAAKygD,cAAgB/gD,EAAQ+gD,cAC7BzgD,KAAK8uG,kBAAoBpvG,EAAQovG,kBACjC9uG,KAAK+uG,wBAA0BrvG,EAAQqvG,wBACvC/uG,KAAKgvG,YAActvG,EAAQsvG,YAC3BhvG,KAAKwvG,WAAY,EACjBxvG,KAAK63G,kBAAoB,KACzB73G,KAAK83G,eAAiBnI,EACtB3vG,KAAK+3G,YAAc,KACnB/3G,KAAKg4G,cAAgB,KACrBh4G,KAAKsyG,uBAAyB/wF,QAAQwiC,gBACtC/jD,KAAKq1E,UAAYA,EACjBr1E,KAAKi4G,qBACP,CACA,IAAmBv0G,EAAMkL,EAAO,MAC9B,MAAMspG,EAAgBl4G,MAAK,GAAgB6C,IAAIa,GAC/C,GAAIw0G,EACF,OAAOA,EAET,MAAM/0F,EAAUnjB,KAAK0vG,eAAeh8B,gBAAgBhwE,EAAMkL,GAE1D,OADA5O,MAAK,GAAgB4H,IAAIlE,EAAMyf,GACxBA,CACT,CACA,qBAAIsjB,GACF,OAAO3M,EAAO95B,KAAM,oBAAqB,IAAImkE,GAC/C,CACA,kBAAA2tC,CAAmB1sE,EAAQquE,EAAiBjnF,EAAeE,OAAQinF,EAAyB,KAAM91D,GAAY,EAAOs6D,GAAW,GAC9H,IAAI7a,EAAkBxxE,EAAoBE,QACtCoqF,EAAgClyC,GACpC,OAAQ9+B,GACN,IAAK,MACHk4D,EAAkBxxE,EAAoBC,IACtC,MACF,IAAK,UACH,MACF,IAAK,QACHuxE,EAAkBxxE,EAAoBG,MACtC,MACF,QACEsM,EAAK,wCAAwC6M,KAEjD,MAAMqB,EAAoB62D,EAAkBxxE,EAAoBG,OAAS0nF,aAAkC/uC,GAAyB+uC,EAAyB3zG,KAAKymC,kBAClK,OAAQgtE,GACN,KAAKjnF,EAAeC,QAClB6wE,GAAmBxxE,EAAoBO,oBACvC,MACF,KAAKG,EAAeE,OAClB,MACF,KAAKF,EAAeG,aAClB2wE,GAAmBxxE,EAAoBK,kBACvC,MACF,KAAKK,EAAeI,eAClB0wE,GAAmBxxE,EAAoBM,oBACvCgqF,EAAgC3vE,EAAkBo+B,aAClD,MACF,QACEtsC,EAAK,gDAAgDk7E,KAErD51D,IACFy/C,GAAmBxxE,EAAoBQ,YAErC6rF,IACF7a,GAAmBxxE,EAAoBS,QAEzC,MACEs5C,IAAKD,EACLlsC,KAAM0+E,GACJ3xE,EAAkBm/B,YAChByyC,EAAc,CAAC/a,EAAiB8Y,EAA8B18E,KAAM0+E,GAC1E,MAAO,CACL9a,kBACAtJ,SAAUqkB,EAAYh1G,KAAK,KAC3B+yG,gCACAxwC,cAEJ,CACA,OAAA3uB,GACE,GAAIj3C,KAAK63G,kBACP,OAAO73G,KAAK63G,kBAAkB10F,QAEhCnjB,KAAKwvG,WAAY,EACjBxvG,KAAK63G,kBAAoBt2F,QAAQwiC,gBACjC/jD,MAAK,IAAqB0oC,OAAO,IAAIjQ,MAAM,oDAC3C,MAAMo9E,EAAS,GACf,IAAK,MAAM74F,KAAQhd,MAAK,GAAW8rC,SACjC+pE,EAAO5rG,KAAK+S,EAAK44F,YAEnB51G,MAAK,GAAWkhD,QAChBlhD,MAAK,GAAckhD,QACnBlhD,MAAK,GAAckhD,QACflhD,KAAKoG,eAAe,sBACtBpG,KAAKymC,kBAAkB+9B,gBAEzB,MAAM8zC,EAAat4G,KAAK0vG,eAAeh8B,gBAAgB,YAAa,MAapE,OAZAmiC,EAAO5rG,KAAKquG,GACZ/2F,QAAQ7O,IAAImjG,GAAQn8D,KAAK,KACvB15C,KAAKkwF,WAAWhvC,QAChBlhD,KAAK23G,WAAWz2D,QAChBlhD,MAAK,GAAgBkhD,QACrBlhD,KAAKygD,cAAcxJ,UACnBqzD,GAAU+B,UACVrsG,KAAK83G,gBAAgBrW,kBAAkB,IAAI7mE,GAAe,2BAC1D56B,KAAK0vG,gBAAgBz4D,UACrBj3C,KAAK0vG,eAAiB,KACtB1vG,KAAK63G,kBAAkB5zE,WACtBjkC,KAAK63G,kBAAkBnvE,QACnB1oC,KAAK63G,kBAAkB10F,OAChC,CACA,mBAAA80F,GACE,MAAM,eACJvI,EAAc,YACd+C,GACEzyG,KACJ0vG,EAAexyF,GAAG,YAAa,CAACtO,EAAM2pG,KACpC7/E,EAAO14B,KAAK83G,eAAgB,mDAC5B93G,KAAK+3G,YAAc/3G,KAAK83G,eAAe3W,gBACvCnhG,KAAK+3G,YAAY/W,WAAazgD,IAC5BvgD,KAAKg4G,cAAgB,CACnBnwC,OAAQtnB,EAAIsnB,OACZu4B,MAAO7/C,EAAI6/C,QAGfmY,EAAKzjC,OAAS,KACZ90E,KAAK+3G,YAAY3V,OAAO1oD,KAAK,UAAU,MACrC53C,EAAK,KACLmE,IAEIA,EACFsyG,EAAK/sG,SAGPktB,EAAO52B,aAAiBwH,YAAa,wCACrCivG,EAAK9jC,QAAQ,IAAIl5C,WAAWz5B,GAAQ,EAAG,CAACA,IAC1C,GAAGg0E,MAAMzC,IACPklC,EAAK52G,MAAM0xE,MAGfklC,EAAKxjC,SAAW1B,IACdrzE,KAAK+3G,YAAY51F,OAAOkxD,GACxBklC,EAAK1jC,MAAMiB,MAAM0iC,IACf,IAAIx4G,KAAKwvG,UAGT,MAAMgJ,OAIZ9I,EAAexyF,GAAG,qBAAsB6qB,gBAChC/nC,KAAK+3G,YAAY/V,aACvB,MAAM,qBACJE,EAAoB,iBACpBD,EAAgB,cAChBE,GACEniG,KAAK+3G,YAYT,OAXK7V,GAAyBD,IACxBjiG,KAAKg4G,eACPvF,EAAYzR,aAAahhG,KAAKg4G,eAEhCh4G,KAAK+3G,YAAY/W,WAAazgD,IAC5BkyD,EAAYzR,aAAa,CACvBn5B,OAAQtnB,EAAIsnB,OACZu4B,MAAO7/C,EAAI6/C,UAIV,CACL8B,uBACAD,mBACAE,mBAGJuN,EAAexyF,GAAG,iBAAkB,CAACtO,EAAM2pG,KACzC7/E,EAAO14B,KAAK83G,eAAgB,wDAC5B,MAAMlX,EAAc5gG,KAAK83G,eAAexW,eAAe1yF,EAAKqxF,MAAOrxF,EAAK89B,KACnEk0D,GAIL2X,EAAKzjC,OAAS,KACZ8rB,EAAYwB,OAAO1oD,KAAK,UAAU,MAChC53C,EAAK,KACLmE,IAEIA,EACFsyG,EAAK/sG,SAGPktB,EAAO52B,aAAiBwH,YAAa,6CACrCivG,EAAK9jC,QAAQ,IAAIl5C,WAAWz5B,GAAQ,EAAG,CAACA,IAC1C,GAAGg0E,MAAMzC,IACPklC,EAAK52G,MAAM0xE,MAGfklC,EAAKxjC,SAAW1B,IACdutB,EAAYz+E,OAAOkxD,GACnBklC,EAAK1jC,MAAMiB,MAAM0iC,IACf,IAAIx4G,KAAKwvG,UAGT,MAAMgJ,MAxBRD,EAAK/sG,UA4BTkkG,EAAexyF,GAAG,SAAU,EAC1BuzF,cAEAzwG,KAAKy4G,UAAYhI,EAAQvvF,SACzBlhB,KAAK6wG,YAAcJ,EAAQiI,kBACpBjI,EAAQiI,WACfjG,EAAYxC,YAAYhsE,QAAQ,IAAIusE,GAAiBC,EAASzwG,SAEhE0vG,EAAexyF,GAAG,eAAgBsrC,IAChCiqD,EAAYxC,YAAYvnE,OAAO8pC,GAAWhqB,MAE5CknD,EAAexyF,GAAG,kBAAmBsrC,IACnCxoD,MAAK,GAAsBuhB,QAAQwiC,gBACnC,IACE,IAAK0uD,EAAYvC,WACf,MAAM19B,GAAWhqB,GAEnB,MAAMmwD,EAAiBzL,IACjBA,aAAoBz0E,MACtBz4B,MAAK,GAAoB0oC,OAAOwkE,GAEhCltG,MAAK,GAAoBikC,QAAQ,CAC/BipE,cAINuF,EAAYvC,WAAWyI,EAAgBnwD,EAAGruB,KAC5C,CAAE,MAAOy+E,GACP54G,MAAK,GAAoB0oC,OAAOkwE,EAClC,CACA,OAAO54G,MAAK,GAAoBmjB,UAElCusF,EAAexyF,GAAG,aAActO,IAC9B6jG,EAAYzR,aAAa,CACvBn5B,OAAQj5D,EAAK9N,OACbs/F,MAAOxxF,EAAK9N,SAEdd,KAAKsyG,uBAAuBruE,QAAQr1B,KAEtC8gG,EAAexyF,GAAG,kBAAmBtO,IACnC,GAAI5O,KAAKwvG,UACP,OAEF,MAAMxyF,EAAOhd,MAAK,GAAW6C,IAAI+L,EAAKq0C,WACtCjmC,EAAKi5F,iBAAiBrnG,EAAK+iF,aAAc/iF,EAAKolF,YAEhD0b,EAAexyF,GAAG,YAAa,EAAE3N,EAAI9G,EAAMowG,MACzC,GAAI74G,KAAKwvG,UACP,OAAO,KAET,GAAIxvG,KAAKkwF,WAAWroF,IAAI0H,GACtB,OAAO,KAET,OAAQ9G,GACN,IAAK,OACH,GAAI,UAAWowG,EAAc,CAC3B,MAAMC,EAAgBD,EAAal3G,MACnC42B,EAAK,8BAA8BugF,KACnC94G,KAAKkwF,WAAWjsD,QAAQ10B,EAAIupG,GAC5B,KACF,CACA,MAAMC,EAAW,IAAIhsC,GAAS8rC,GACxBlvC,EAAc3pE,KAAK43G,QAAQrJ,QAAUxmG,WAAWwiG,eAAep5C,QAAU,CAACsW,EAAM5uC,IAAQ9wB,WAAWwiG,cAAcyO,UAAUvxC,EAAM5uC,GAAO,KACxI4uC,EAAO,IAAIgC,GAAesvC,EAAUpvC,EAAakvC,EAAajvC,MAAOivC,EAAahvC,sBACxF7pE,KAAK23G,WAAWxxG,KAAKshE,GAAMqO,MAAM,IAAM45B,EAAeh8B,gBAAgB,eAAgB,CACpFnkE,QACEm7F,QAAQ,MACLjjC,EAAKiD,qBAAuBjD,EAAK74D,MACpC64D,EAAK+D,YAEPxrE,KAAKkwF,WAAWjsD,QAAQ10B,EAAIk4D,KAE9B,MACF,IAAK,iBACH,MAAM,SACJwxC,GACEJ,EACJngF,EAAOugF,EAAU,iCACjB,IAAK,MAAMC,KAAal5G,MAAK,GAAW8rC,SACtC,IAAK,MAAO,CAAEl9B,KAASsqG,EAAU5uC,KAC/B,GAAI17D,GAAM4O,MAAQy7F,EAGlB,OAAKrqG,EAAKuqG,SAGVn5G,KAAKkwF,WAAWjsD,QAAQ10B,EAAInG,gBAAgBwF,IACrCA,EAAKuqG,SAHH,KAMb,MACF,IAAK,WACHn5G,KAAKkwF,WAAWjsD,QAAQ10B,EAAI,IAAIohE,GAAakoC,IAC7C,MACF,IAAK,QACH74G,KAAKkwF,WAAWjsD,QAAQ10B,EAAIspG,GAC5B,MACF,IAAK,UACH,MAAMr4B,EAAU,IAAIjS,GAAYsqC,GAChC74G,KAAKkwF,WAAWjsD,QAAQ10B,EAAIixE,EAAQ3Q,SACpC,MACF,QACE,MAAM,IAAIp3C,MAAM,kCAAkChwB,KAEtD,OAAO,OAETinG,EAAexyF,GAAG,MAAO,EAAE3N,EAAI0zC,EAAWx6C,EAAM0gE,MAC9C,GAAInpE,KAAKwvG,UACP,OAEF,MAAM0J,EAAYl5G,MAAK,GAAW6C,IAAIogD,GACtC,IAAIi2D,EAAU5uC,KAAKziE,IAAI0H,GAGvB,GAAqC,IAAjC2pG,EAAU9F,cAAcvnE,KAI5B,OAAQpjC,GACN,IAAK,QACL,IAAK,UACHywG,EAAU5uC,KAAKrmC,QAAQ10B,EAAI45D,GAC3B,MACF,QACE,MAAM,IAAI1wC,MAAM,2BAA2BhwB,UAT7C0gE,GAAW9xD,QAAQ7L,UAYvBkkG,EAAexyF,GAAG,cAAetO,IAC3B5O,KAAKwvG,WAGTiD,EAAYzR,aAAa,CACvBn5B,OAAQj5D,EAAKi5D,OACbu4B,MAAOxxF,EAAKwxF,UAGhBsP,EAAexyF,GAAG,kBAAmB6qB,UACnC,GAAI/nC,KAAKwvG,UACP,MAAM,IAAI/2E,MAAM,yBAElB,MAAM/4B,EAAUM,KAAK4O,EAAKnG,MAC1B,IAAK/I,EACH,MAAM,IAAI+4B,MAAM,GAAG7pB,EAAKnG,+DAE1B,OAAO/I,EAAQ0oC,MAAMx5B,IAEzB,CACA,OAAAy0C,GACE,OAAOrjD,KAAK0vG,eAAeh8B,gBAAgB,UAAW,KACxD,CACA,YAAAw+B,GACMlyG,KAAKymC,kBAAkBoF,MAAQ,GACjCtT,EAAK,kGAEP,MAAM,IACJ1uB,EAAG,SACHL,GACExJ,KAAKymC,kBAAkBo+B,aAC3B,OAAO7kE,KAAK0vG,eAAeh8B,gBAAgB,eAAgB,CACzDk9B,YAAa5wG,KAAK6wG,YAClB3vF,SAAUlhB,KAAKy4G,UACfhyE,kBAAmB58B,EACnBmhC,SAAUhrC,KAAK+3G,aAAa/sE,UAAY,MACvCxhC,GAAUkhG,QAAQ,KACnB1qG,KAAKymC,kBAAkB+9B,iBAE3B,CACA,YAAA2tC,CAAaC,GACX,OAAOpyG,KAAK0vG,eAAeh8B,gBAAgB,eAAgB,CACzD0+B,aAEJ,CACA,OAAArB,CAAQjtD,GACN,IAAKriC,OAAOyW,UAAU4rB,IAAeA,GAAc,GAAKA,EAAa9jD,KAAKy4G,UACxE,OAAOl3F,QAAQmnB,OAAO,IAAIjQ,MAAM,0BAElC,MAAMwqB,EAAYa,EAAa,EAC7Bo0D,EAAgBl4G,MAAK,GAAc6C,IAAIogD,GACzC,GAAIi1D,EACF,OAAOA,EAET,MAAM/0F,EAAUnjB,KAAK0vG,eAAeh8B,gBAAgB,UAAW,CAC7DzwB,cACCvJ,KAAKq5D,IACN,GAAI/yG,KAAKwvG,UACP,MAAM,IAAI/2E,MAAM,uBAEds6E,EAASqG,QACXp5G,MAAK,GAAc4H,IAAImrG,EAASqG,OAAQt1D,GAE1C,MAAM9mC,EAAO,IAAI81F,GAAa7vD,EAAW8vD,EAAU/yG,KAAMA,KAAK43G,QAAQrJ,QAEtE,OADAvuG,MAAK,GAAW4H,IAAIq7C,EAAWjmC,GACxBA,IAGT,OADAhd,MAAK,GAAc4H,IAAIq7C,EAAW9/B,GAC3BA,CACT,CACA,YAAA6tF,CAAaxzF,GACX,OAAK0zD,GAAW1zD,GAGTxd,KAAK0vG,eAAeh8B,gBAAgB,eAAgB,CACzDvC,IAAK3zD,EAAI2zD,IACTC,IAAK5zD,EAAI4zD,MAJF7vD,QAAQmnB,OAAO,IAAIjQ,MAAM,8BAMpC,CACA,cAAA66E,CAAerwD,EAAW7d,GACxB,OAAOplC,KAAK0vG,eAAeh8B,gBAAgB,iBAAkB,CAC3DzwB,YACA7d,UAEJ,CACA,eAAAutE,GACE,OAAO3yG,MAAK,GAAmB,kBACjC,CACA,YAAA4yG,GACE,OAAO5yG,MAAK,GAAmB,eACjC,CACA,sBAAA6yG,GACE,OAAO7yG,KAAK0vG,eAAeh8B,gBAAgB,yBAA0B,KACvE,CACA,eAAAu9B,GACE,OAAOjxG,KAAK0vG,eAAeh8B,gBAAgB,kBAAmB,KAChE,CACA,cAAAw9B,CAAe3hG,GACb,MAAkB,kBAAPA,EACFgS,QAAQmnB,OAAO,IAAIjQ,MAAM,iCAE3Bz4B,KAAK0vG,eAAeh8B,gBAAgB,iBAAkB,CAC3DnkE,MAEJ,CACA,aAAA4hG,GACE,OAAOnxG,KAAK0vG,eAAeh8B,gBAAgB,gBAAiB,KAC9D,CACA,aAAA09B,GACE,OAAOpxG,KAAK0vG,eAAeh8B,gBAAgB,gBAAiB,KAC9D,CACA,WAAA29B,GACE,OAAOrxG,KAAK0vG,eAAeh8B,gBAAgB,cAAe,KAC5D,CACA,oBAAA49B,GACE,OAAOtxG,KAAK0vG,eAAeh8B,gBAAgB,uBAAwB,KACrE,CACA,aAAA69B,GACE,OAAOvxG,KAAK0vG,eAAeh8B,gBAAgB,gBAAiB,KAC9D,CACA,cAAA89B,GACE,OAAOxxG,KAAK0vG,eAAeh8B,gBAAgB,iBAAkB,KAC/D,CACA,oBAAAxpB,CAAqBlB,EAAOyoD,GAC1B,OAAOzxG,KAAK0vG,eAAeh8B,gBAAgB,uBAAwB,CACjE1qB,QACAyoD,qBAEJ,CACA,eAAAE,GACE,OAAO3xG,MAAK,GAAmB,kBACjC,CACA,gBAAAuzG,CAAiBtwD,GACf,OAAOjjD,KAAK0vG,eAAeh8B,gBAAgB,mBAAoB,CAC7DzwB,aAEJ,CACA,aAAA0yD,CAAc1yD,GACZ,OAAOjjD,KAAK0vG,eAAeh8B,gBAAgB,gBAAiB,CAC1DzwB,aAEJ,CACA,UAAA2uD,GACE,OAAO5xG,KAAK0vG,eAAeh8B,gBAAgB,aAAc,KAC3D,CACA,wBAAAm+B,CAAyBvU,GACvB,OAAOt9F,MAAK,GAAmB,4BAA4B05C,KAAK9qC,GAAQ,IAAIkvF,GAAsBlvF,EAAM0uF,GAC1G,CACA,cAAAyU,GACE,OAAO/xG,KAAK0vG,eAAeh8B,gBAAgB,iBAAkB,KAC/D,CACA,WAAAs+B,GACE,MAAMtuG,EAAO,cACXw0G,EAAgBl4G,MAAK,GAAgB6C,IAAIa,GAC3C,GAAIw0G,EACF,OAAOA,EAET,MAAM/0F,EAAUnjB,KAAK0vG,eAAeh8B,gBAAgBhwE,EAAM,MAAMg2C,KAAK2/D,IAAW,CAC9EjhF,KAAMihF,EAAQ,GACd1wG,SAAU0wG,EAAQ,GAAK,IAAIpc,GAASoc,EAAQ,IAAM,KAClD/Z,2BAA4Bt/F,KAAK+3G,aAAa/sE,UAAY,KAC1Dm3D,cAAeniG,KAAK+3G,aAAa5V,eAAiB,KAClDmX,cAAeD,EAAQ,MAGzB,OADAr5G,MAAK,GAAgB4H,IAAIlE,EAAMyf,GACxBA,CACT,CACA,WAAA8uF,GACE,OAAOjyG,KAAK0vG,eAAeh8B,gBAAgB,cAAe,KAC5D,CACA,kBAAM8+B,CAAaD,GAAkB,GACnC,IAAIvyG,KAAKwvG,UAAT,OAGMxvG,KAAK0vG,eAAeh8B,gBAAgB,UAAW,MACrD,IAAK,MAAM12D,KAAQhd,MAAK,GAAW8rC,SAAU,CAC3C,MAAMytE,EAAoBv8F,EAAKqvF,UAC/B,IAAKkN,EACH,MAAM,IAAI9gF,MAAM,sBAAsBzb,EAAK8mC,qCAE/C,CACA9jD,KAAKkwF,WAAWhvC,QACXqxD,GACHvyG,KAAK23G,WAAWz2D,QAElBlhD,MAAK,GAAgBkhD,QACrBlhD,KAAKygD,cAAcxJ,SAAQ,GAC3BqzD,GAAU+B,SAdV,CAeF,CACA,gBAAAqG,CAAiBl1F,GACf,IAAK0zD,GAAW1zD,GACd,OAAO,KAET,MAAM47F,EAAqB,IAAZ57F,EAAI4zD,IAAY,GAAG5zD,EAAI2zD,OAAS,GAAG3zD,EAAI2zD,OAAO3zD,EAAI4zD,MACjE,OAAOpxE,MAAK,GAAc6C,IAAIu2G,IAAW,IAC3C,EAEF,MAAMI,GACJ,IAAsB,KACtBC,WAAa,KACbxS,QAAU,KACV,WAAAjjG,CAAYywG,GACVz0G,MAAK,GAAsBy0G,CAC7B,CACA,WAAItxF,GACF,OAAOnjB,MAAK,GAAoBozE,WAAWjwD,OAC7C,CACA,MAAAhB,CAAOuoB,EAAa,GAClB1qC,MAAK,GAAoBmiB,OAAO,KAAMuoB,EACxC,CACA,kBAAIypE,GACF,MAAM,eACJA,GACEn0G,MAAK,GAAoBslF,aAC7B,IAAK6uB,EACH,OAAO,EAET,MAAM,oBACJ9jB,GACErwF,MAAK,GACT,OAAOm0G,EAAeuF,MAAQvF,EAAe1xF,QAAU4tE,GAAqBxkD,KAAO,CACrF,EAEF,MAAMipE,GACJ,IAAO,KACPjtE,UAAsB,IAAI8xE,QAC1B,WAAA31G,EAAY,SACV24C,EAAQ,OACRqQ,EAAM,KACNsd,EAAI,WACJ4lB,EAAU,oBACVG,EAAmB,aACnB/K,EAAY,UACZriC,EAAS,cACTqnC,EAAa,cACb7pC,EAAa,yBACbs0D,GAA2B,EAAK,OAChCxG,GAAS,EAAK,WACd/uD,EAAa,KAAI,UACjB61B,GAAY,EAAK,iBACjB8c,EAAmB,OAEnBnyF,KAAK28C,SAAWA,EAChB38C,KAAKgtD,OAASA,EACdhtD,KAAKsqE,KAAOA,EACZtqE,KAAKkwF,WAAaA,EAClBlwF,KAAKqwF,oBAAsBA,EAC3BrwF,KAAK45G,gBAAkB,KACvB55G,KAAKslF,aAAeA,EACpBtlF,KAAKgzG,WAAa/vD,EAClBjjD,KAAKsqF,cAAgBA,EACrBtqF,KAAKygD,cAAgBA,EACrBzgD,KAAKmzG,QAAU5E,EACfvuG,KAAKw/C,WAAaA,EAClBx/C,KAAK65G,SAAU,EACf75G,KAAK85G,sBAAwB,KAC7B95G,KAAK+5G,eAAgB,EACrB/5G,KAAKg6G,2BAAyD,IAA7BjF,GAAuD,qBAAXlkG,OAC7E7Q,KAAKi6G,WAAY,EACjBj6G,KAAKozE,WAAa7xD,QAAQwiC,gBAC1B/jD,KAAKgtG,KAAO,IAAIwM,GAAWx5G,MAC3BA,KAAKk6G,aAAel6G,KAAKmiB,OAAOhc,KAAKnG,MACrCA,KAAKm6G,eAAiBn6G,KAAKo6G,UAAUj0G,KAAKnG,MAC1CA,KAAKq6G,mBAAqBr6G,KAAKs6G,cAAcn0G,KAAKnG,MAClDA,KAAKu6G,WAAav6G,KAAKw6G,MAAMr0G,KAAKnG,MAClCA,KAAKy6G,QAAUztD,EAAOvqC,OACtBziB,KAAK06G,eAAiB1tD,EAAOvqC,OAAS,KAAOuqC,EAAO9pC,cACpDljB,KAAK26G,WAAatlC,EAClBr1E,KAAK46G,mBAAqB5tD,EAAOuxB,kBACjCv+E,KAAK66G,kBAAoB1oB,CAC3B,CACA,aAAI4jB,GACF,OAAO/1G,KAAKozE,WAAWjwD,QAAQ2yD,MAAM,WAAa,EACpD,CACA,kBAAAk/B,EAAmB,aACjBrjB,GAAe,EAAK,sBACpBxB,IAEA,GAAInwF,KAAKi6G,UACP,OAEF,GAAIj6G,KAAKy6G,QAAS,CAChB,GAAI3F,IAAmB,GAAajtG,IAAI7H,KAAKy6G,SAC3C,MAAM,IAAIhiF,MAAM,mJAElBq8E,IAAmB,GAAa1wF,IAAIpkB,KAAKy6G,QAC3C,CACIz6G,KAAKmzG,SAAWprG,WAAWusG,gBAAgBnjD,UAC7CnxD,KAAKkyF,QAAUnqF,WAAWusG,eAAe7nG,OAAOzM,KAAKgzG,YACrDhzG,KAAKkyF,QAAQ4oB,KAAK96G,KAAKslF,cACvBtlF,KAAKkyF,QAAQU,eAAiB5yF,KAAKkyF,QAAQ6oB,qBAE7C,MAAM,SACJ/3F,EAAQ,UACRuF,EAAS,WACTq5B,EAAU,kBACV28B,GACEv+E,KAAKgtD,OACH9pC,EAAgBljB,KAAK06G,gBAAkB16G,KAAKy6G,QAAQ13F,WAAW,KAAM,CACzEupF,OAAO,EACP/yD,oBAAqBv5C,KAAK26G,aAE5B36G,KAAK00G,IAAM,IAAI1kB,GAAe9sE,EAAeljB,KAAKkwF,WAAYlwF,KAAKsqE,KAAMtqE,KAAKsqF,cAAetqF,KAAKygD,cAAe,CAC/G0vC,yBACCnwF,KAAKqwF,oBAAqBrwF,KAAKw/C,WAAY++B,GAC9Cv+E,KAAK00G,IAAIhjB,aAAa,CACpBnpE,YACAvF,WACA2uE,eACA/vC,eAEF5hD,KAAK45G,gBAAkB,EACvB55G,KAAK+5G,eAAgB,EACrB/5G,KAAK85G,yBACP,CACA,MAAA33F,CAAOxgB,EAAQ,KAAM+oC,EAAa,GAChC1qC,KAAK65G,SAAU,EACf75G,KAAKi6G,WAAY,EACjBj6G,KAAK00G,KAAK7tB,aACN7mF,MAAK,KACP6Q,OAAOmY,qBAAqBhpB,MAAK,IACjCA,MAAK,GAAO,MAEd80G,IAAmB,GAAat/D,OAAOx1C,KAAKy6G,SAC5C94G,IAAU,IAAI8oC,GAA4B,6BAA6BzqC,KAAKgzG,WAAa,IAAKtoE,GAC9F1qC,KAAK28C,SAASh7C,GACd3B,KAAKgtG,KAAK/F,UAAUtlG,EACtB,CACA,mBAAAszG,GACOj1G,KAAK+5G,eAIV/5G,KAAK00G,IAAIn2B,mBAAmB3D,oBAAoB56E,KAAKslF,aAAa+M,QAAQvxF,QAC1Ed,KAAKkyF,SAAS8oB,mBAAmBh7G,KAAKslF,cAClCtlF,KAAK65G,SAGT75G,KAAKo6G,aARHp6G,KAAK85G,wBAA0B95G,KAAKm6G,cASxC,CACA,SAAAC,GACEp6G,KAAK65G,SAAU,EACX75G,KAAKi6G,YAGLj6G,KAAKgtG,KAAKyM,WACZz5G,KAAKgtG,KAAKyM,WAAWz5G,KAAKq6G,oBAE1Br6G,KAAKs6G,gBAET,CACA,aAAAA,GACMt6G,KAAKg6G,0BACPh6G,MAAK,GAAO6Q,OAAOwZ,sBAAsB,KACvCrqB,MAAK,GAAO,KACZA,KAAKu6G,aAAazkC,MAAM91E,KAAKk6G,gBAG/B34F,QAAQ0iB,UAAUyV,KAAK15C,KAAKu6G,YAAYzkC,MAAM91E,KAAKk6G,aAEvD,CACA,WAAMM,GACAx6G,KAAKi6G,YAGTj6G,KAAK45G,gBAAkB55G,KAAK00G,IAAI9tB,oBAAoB5mF,KAAKslF,aAActlF,KAAK45G,gBAAiB55G,KAAKm6G,eAAgBn6G,KAAKkyF,QAASlyF,KAAK66G,mBACjI76G,KAAK45G,kBAAoB55G,KAAKslF,aAAa8M,UAAUtxF,SACvDd,KAAK65G,SAAU,EACX75G,KAAKslF,aAAa4uB,YACpBl0G,KAAK00G,IAAI7tB,aACTiuB,IAAmB,GAAat/D,OAAOx1C,KAAKy6G,SAC5Cz6G,KAAK28C,aAGX,EAEF,MAAMjsC,GAAU,UACVuqG,GAAQ,YAMd,MAAMC,GACJ,IAAU,KACV,IAAgB,KAChB,IACA,IAAY,KACZ,KAA2B,EAC3B,KAAqB,EACrB,GAAU,KACV,IACA,IAAkB,KAClB,GAAa,KACbrzE,UAAoB,KACpB,2BAAWoW,GACT,OAAOnkB,EAAO95B,KAAM,mBAAoB,IAAIw8C,GAAgB,CAAC,CAAC,CAAC,SAAU,cAAe0+D,GAAYh3G,UAAUi3G,2BAA4B,CAAC,CAAC,IAAK,SAAUD,GAAYh3G,UAAUk3G,0BAA2B,CAAC,CAAC,YAAa,aAAc,gBAAiB,kBAAmBF,GAAYh3G,UAAUm3G,aAAc,CAAC,CAAC,UAAW,YAAa,cAAe,iBAAkBH,GAAYh3G,UAAUo3G,iBAAkB,CAAC,CAAC,OAAQ,YAAaJ,GAAYh3G,UAAUq3G,kBAAmB,CAAC,CAAC,MAAO,WAAYL,GAAYh3G,UAAUs3G,cACjgB,CACA,WAAAx3G,EAAY,OACV8vC,EAAS,KAAI,UACbqD,EAAY,OAERrD,GACF9zC,MAAK,IAAqB,EAC1BA,MAAK,EAAU8zC,GAEf9zC,MAAK,IAAqB,EAE5BA,MAAK,EAAa8zC,GAAQS,YAAc4C,EACxCn3C,MAAK,GAAYA,MAAK,EAAWggD,UACjChgD,MAAK,GAAgB8zC,GAAQ3F,OAAO4T,eAAiB/hD,MAAK,GAAYy/C,gBAAgB3T,SAASrmC,OAAO3D,OAAS,UAC/Go5G,IAAY,KAAej4G,OAAO8wC,OAAO,CACvC0nE,KAAM,gCACNC,MAAO,iCACPC,KAAM,gCACNC,IAAK,+BACLC,OAAQ,mCAEZ,CACA,YAAAzlE,GACE,MAAMd,EAASt1C,MAAK,GAAUoM,SAAS0D,cAAc,UACrDwlC,EAAOpC,UAAY,cACnBoC,EAAOC,SAAW,IAClBD,EAAO7P,aAAa,eAAgB,mCACpC6P,EAAOqd,aAAe,OAClB3yD,MAAK,IACPs1C,EAAOsd,aAAe,GAAG5yD,MAAK,EAAQuP,2BAExC,MAAM+kC,EAASt0C,MAAK,EAAWw0C,QAC/Bc,EAAOxsB,iBAAiB,QAAS9oB,MAAK,GAAcmG,KAAKnG,MAAO,CAC9Ds0C,WAEFgB,EAAOxsB,iBAAiB,UAAW9oB,MAAK,GAASmG,KAAKnG,MAAO,CAC3Ds0C,WAEF,MAAMwnE,EAAS97G,MAAK,GAAgBoM,SAAS0D,cAAc,QAK3D,OAJAgsG,EAAO5oE,UAAY,SACnB4oE,EAAOC,WAAa,OACpBD,EAAO/vG,MAAM8lD,gBAAkB7xD,MAAK,GACpCs1C,EAAOvO,OAAO+0E,GACPxmE,CACT,CACA,kBAAA0mE,GACE,MAAMC,EAAWj8G,MAAK,GAAYA,MAAK,KAGvC,OAFAi8G,EAASC,gBAAkB,aAC3BD,EAASE,eAAiB,4BACnBF,CACT,CACA,MACE,MAAMn1E,EAAM16B,SAAS0D,cAAc,OAC7BwkC,EAASt0C,MAAK,EAAWw0C,QAC/B1N,EAAIhe,iBAAiB,cAAegkB,GAAe,CACjDwH,WAEFxN,EAAIoM,UAAY,WAChBpM,EAAIs1E,KAAO,UACXt1E,EAAIu1E,oBAAsB,QAC1Bv1E,EAAIo1E,gBAAkB,WACtBp1E,EAAIrB,aAAa,eAAgB,qCAC7BzlC,MAAK,IACP8mC,EAAIv3B,GAAK,GAAGvP,MAAK,EAAQuP,2BAE3B,IAAK,MAAO7L,EAAMyqC,KAAUnuC,MAAK,EAAWy/C,gBAAiB,CAC3D,MAAMnK,EAASlpC,SAAS0D,cAAc,UACtCwlC,EAAOC,SAAW,IAClBD,EAAO8mE,KAAO,SACd9mE,EAAO7P,aAAa,aAAc0I,GAClCmH,EAAO0B,MAAQtzC,EACf4xC,EAAO7P,aAAa,eAAgBy1E,IAAY,GAAWx3G,IAC3D,MAAMo4G,EAAS1vG,SAAS0D,cAAc,QACtCwlC,EAAOvO,OAAO+0E,GACdA,EAAO5oE,UAAY,SACnB4oE,EAAO/vG,MAAM8lD,gBAAkB1jB,EAC/BmH,EAAOgnE,aAAenuE,IAAUnuC,MAAK,GACrCs1C,EAAOxsB,iBAAiB,QAAS9oB,MAAK,GAAamG,KAAKnG,KAAMmuC,GAAQ,CACpEmG,WAEFxN,EAAIC,OAAOuO,EACb,CAIA,OAHAxO,EAAIhe,iBAAiB,UAAW9oB,MAAK,GAASmG,KAAKnG,MAAO,CACxDs0C,WAEKxN,CACT,CACA,IAAaqH,EAAOllB,GAClBA,EAAM7D,kBACNplB,MAAK,GAAUqkD,SAAS,+BAAgC,CACtDhgD,OAAQrE,KACRyI,KAAM8kB,EAA2BS,gBACjClsB,MAAOqsC,IAETnuC,KAAKu8G,YAAYpuE,EACnB,CACA,wBAAAitE,CAAyBnyF,GACvB,GAAIA,EAAM5nB,SAAWrB,MAAK,GAExB,YADAA,MAAK,GAAcipB,GAGrB,MAAMklB,EAAQllB,EAAM5nB,OAAOwkC,aAAa,cACnCsI,GAGLnuC,MAAK,GAAamuC,EAAOllB,EAC3B,CACA,WAAAoyF,CAAYpyF,GACLjpB,MAAK,GAINipB,EAAM5nB,SAAWrB,MAAK,GAI1BipB,EAAM5nB,OAAOm7G,aAAah4D,QAHxBxkD,MAAK,GAAUwzC,mBAAmBgR,QAJlCxkD,MAAK,GAAcipB,EAQvB,CACA,eAAAqyF,CAAgBryF,GACVA,EAAM5nB,SAAWrB,MAAK,IAAWwzC,mBAAqBvqB,EAAM5nB,SAAWrB,MAAK,IAM3EA,MAAK,IACRA,MAAK,GAAcipB,GAErBA,EAAM5nB,OAAOo7G,iBAAiBj4D,SARxBxkD,MAAK,IACPA,KAAKm7G,2BAQX,CACA,gBAAAI,CAAiBtyF,GACVjpB,MAAK,GAIVA,MAAK,GAAUwzC,mBAAmBgR,QAHhCxkD,MAAK,GAAcipB,EAIvB,CACA,UAAAuyF,CAAWvyF,GACJjpB,MAAK,GAIVA,MAAK,GAAU+hE,kBAAkBvd,QAH/BxkD,MAAK,GAAcipB,EAIvB,CACA,IAASA,GACPiyF,GAAYj9D,iBAAiBvkC,KAAK1Z,KAAMipB,EAC1C,CACA,IAAcA,GACZ,GAAIjpB,MAAK,GAEP,YADAA,KAAKi1C,eAWP,GARAj1C,MAAK,GAA4C,IAAjBipB,EAAMyzF,OACjC18G,MAAK,KACRA,MAAK,GAAkB,IAAI29C,gBAC3B9sC,OAAOiY,iBAAiB,cAAe9oB,MAAK,EAAamG,KAAKnG,MAAO,CACnEs0C,OAAQt0C,MAAK,EAAWohD,eAAephD,MAAK,OAGhDA,MAAK,GAAQyyD,aAAe,OACxBzyD,MAAK,GAEP,YADAA,MAAK,GAAUwpB,UAAUqlB,OAAO,UAGlC,MAAMpvC,EAAOO,MAAK,GAAYA,MAAK,KACnCA,MAAK,GAAQ+mC,OAAOtnC,EACtB,CACA,GAAawpB,GACPjpB,MAAK,IAAWupB,SAASN,EAAM5nB,SAGnCrB,KAAKi1C,cACP,CACA,YAAAA,GACEj1C,MAAK,IAAWwpB,UAAUpF,IAAI,UAC9BpkB,MAAK,GAAQyyD,aAAe,QAC5BzyD,MAAK,IAAiBghD,QACtBhhD,MAAK,GAAkB,IACzB,CACA,MAAI,GACF,OAAOA,MAAK,KAAcA,MAAK,GAAUwpB,UAAUD,SAAS,SAC9D,CACA,yBAAA4xF,GACMn7G,MAAK,KAGJA,MAAK,IAIVA,KAAKi1C,eACLj1C,MAAK,GAAQwkD,MAAM,CACjByd,eAAe,EACfvR,aAAc1wD,MAAK,MANnBA,MAAK,GAASgrD,WAQlB,CACA,WAAAuxD,CAAYpuE,GAIV,GAHInuC,MAAK,KACPA,MAAK,GAAc+L,MAAM8lD,gBAAkB1jB,IAExCnuC,MAAK,GACR,OAEF,MAAMiJ,EAAIjJ,MAAK,EAAWy/C,gBAAgB3T,SAC1C,IAAK,MAAM/G,KAAS/kC,MAAK,GAAU8kC,SACjCC,EAAMu3E,aAAerzG,EAAExD,OAAO3D,QAAUqsC,EAAM4T,aAElD,CACA,OAAA9K,GACEj3C,MAAK,IAAS6uC,SACd7uC,MAAK,GAAU,KACfA,MAAK,GAAgB,KACrBA,MAAK,IAAW6uC,SAChB7uC,MAAK,GAAY,IACnB,EAEF,MAAM28G,GACJ,IAAS,KACT,GAAU,KACV,GAAa,KACb90E,UAAoB,KACpB,WAAA7jC,CAAY8vC,GACV9zC,MAAK,EAAU8zC,EACf9zC,MAAK,EAAa8zC,EAAOS,WACzBooE,IAAiB,KAAe15G,OAAO8wC,OAAO,CAC5CC,SAAU,4CACVE,IAAK,uCAET,CACA,YAAAkC,GACE,GAAIp2C,MAAK,GACP,OAAOA,MAAK,GAEd,MAAM,WACJq1C,EAAU,UACVunE,EAAS,MACTzuE,GACEnuC,MAAK,EACHkO,EAAQlO,MAAK,GAASoM,SAAS0D,cAAc,SAWnD,OAVA5B,EAAMzF,KAAO,QACbyF,EAAMpM,MAAQqsC,GAAS,UACvBjgC,EAAMglC,UAAY,mBAClBhlC,EAAMqnC,SAAW,EACjBrnC,EAAMu3B,aAAa,eAAgBk3E,IAAiB,GAAWtnE,IAC/DnnC,EAAM4a,iBAAiB,QAAS,KAC9B9oB,MAAK,EAAWwgD,aAAao8D,EAAW1uG,EAAMpM,QAC7C,CACDwyC,OAAQt0C,MAAK,EAAWw0C,UAEnBtmC,CACT,CACA,MAAAu5B,CAAO3lC,GACA9B,MAAK,KAGVA,MAAK,GAAO8B,MAAQA,EACtB,CACA,OAAAm1C,GACEj3C,MAAK,IAAQ6uC,SACb7uC,MAAK,GAAS,IAChB,CACA,YAAAi1C,GAAgB,EAIlB,SAAS4nE,GAAc/1G,GACrB,OAAOJ,KAAKC,MAAoC,IAA9BD,KAAKmN,IAAI,EAAGnN,KAAKoN,IAAI,EAAGhN,KAAWvC,SAAS,IAAI44B,SAAS,EAAG,IAChF,CACA,SAAS2/E,GAAcj2G,GACrB,OAAOH,KAAKmN,IAAI,EAAGnN,KAAKoN,IAAI,IAAK,IAAMjN,GACzC,CACA,MAAMk2G,GACJ,aAAOC,EAAQt/E,EAAGlf,EAAGwf,EAAGs6C,IACtB,MAAO,CAAC,IAAK,EAAI5xE,KAAKoN,IAAI,EAAG,GAAM4pB,EAAI,IAAOM,EAAI,IAAOxf,EAAI85D,GAC/D,CACA,aAAO2kC,EAAQ1/E,IACb,MAAO,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAIA,EAC/B,CACA,YAAO2/E,EAAO3/E,IACZ,MAAO,CAAC,MAAOA,EAAGA,EAAGA,EACvB,CACA,YAAO4/E,EAAO5/E,IAEZ,OADAA,EAAIu/E,GAAcv/E,GACX,CAACA,EAAGA,EAAGA,EAChB,CACA,aAAO6/E,EAAQ7/E,IACb,MAAM8/E,EAAIR,GAAct/E,GACxB,MAAO,IAAI8/E,IAAIA,IAAIA,GACrB,CACA,YAAOC,EAAOhgF,EAAGC,EAAGtoB,IAClB,MAAO,CAAC,IAAK,GAAMqoB,EAAI,IAAOC,EAAI,IAAOtoB,EAC3C,CACA,cAAOsoG,CAAQpvE,GACb,OAAOA,EAAMtkC,IAAIizG,GACnB,CACA,eAAOU,CAASrvE,GACd,MAAO,IAAIA,EAAMtkC,IAAIgzG,IAAex5G,KAAK,KAC3C,CACA,aAAOo6G,GACL,MAAO,WACT,CACA,YAAOC,GACL,MAAO,CAAC,KACV,CACA,eAAOC,EAAUjgF,EAAGlf,EAAGwf,EAAGs6C,IACxB,MAAO,CAAC,MAAO,EAAI5xE,KAAKoN,IAAI,EAAG4pB,EAAI46C,GAAI,EAAI5xE,KAAKoN,IAAI,EAAGkqB,EAAIs6C,GAAI,EAAI5xE,KAAKoN,IAAI,EAAG0K,EAAI85D,GACrF,CACA,eAAOslC,EAAUlgF,EAAGlf,EAAGwf,EAAGs6C,IACxB,MAAO,CAACwkC,GAAc,EAAIp2G,KAAKoN,IAAI,EAAG4pB,EAAI46C,IAAKwkC,GAAc,EAAIp2G,KAAKoN,IAAI,EAAGkqB,EAAIs6C,IAAKwkC,GAAc,EAAIp2G,KAAKoN,IAAI,EAAG0K,EAAI85D,IAC1H,CACA,gBAAOulC,CAAUC,GACf,MAAMrsE,EAAMzxC,KAAK29G,SAASG,GAAY36G,MAAM,GAC5C,OAAOnD,KAAKw9G,SAAS/rE,EACvB,CACA,eAAOssE,EAAUzgF,EAAGC,EAAGtoB,IACrB,MAAMyoB,EAAI,EAAIJ,EACRU,EAAI,EAAIT,EACR/e,EAAI,EAAIvJ,EACRqjE,EAAI5xE,KAAKoN,IAAI4pB,EAAGM,EAAGxf,GACzB,MAAO,CAAC,OAAQkf,EAAGM,EAAGxf,EAAG85D,EAC3B,EAQF,MAAM0lC,GACJ,MAAAvxG,CAAOgQ,EAAOC,EAAQuhG,GAAiB,GACrC,GAAIxhG,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAI+b,MAAM,0BAElB,MAAM6gB,EAAMt5C,KAAKk+G,WAAW,WAQ5B,OAPA5kE,EAAI7T,aAAa,UAAW,OACvBw4E,IACH3kE,EAAI7T,aAAa,QAAS,GAAGhpB,OAC7B68B,EAAI7T,aAAa,SAAU,GAAG/oB,QAEhC48B,EAAI7T,aAAa,sBAAuB,QACxC6T,EAAI7T,aAAa,UAAW,OAAOhpB,KAASC,KACrC48B,CACT,CACA,aAAAxpC,CAAcrH,GACZ,GAAoB,kBAATA,EACT,MAAM,IAAIgwB,MAAM,4BAElB,OAAOz4B,KAAKk+G,WAAWz1G,EACzB,CACA,UAAAy1G,CAAWz1G,GACT+vB,EAAY,uCACd,EAEF,MAAM2lF,WAAsBH,GAC1B,UAAAE,CAAWz1G,GACT,OAAO2D,SAASm7B,gBAAgBI,GAAQl/B,EAC1C,EASF,MAAM21G,GAAqC,EACrCC,GAAuB,IAAI1E,QAC3B2E,GAAmD,IAAjC,IAAIhyE,MAAOiyE,oBAA2B,IAC9D,MAAMC,GACJ,aAAO/xG,CAAO+5B,GACZ,MAAMuvD,EAAUvvD,EAAW53B,KAAKqyD,eAChC,OAAQ80B,GACN,KAAK/lE,EAAeE,KAClB,OAAO,IAAIuuF,GAAsBj4E,GACnC,KAAKxW,EAAeC,KAClB,OAAO,IAAIyuF,GAAsBl4E,GACnC,KAAKxW,EAAee,OAClB,MAAM4tF,EAAYn4E,EAAW53B,KAAK+vG,UAClC,OAAQA,GACN,IAAK,KACH,OAAO,IAAIC,GAA4Bp4E,GACzC,IAAK,MACH,OAAIA,EAAW53B,KAAKiwG,YACX,IAAIC,GAAmCt4E,GACrCA,EAAW53B,KAAKmwG,SAClB,IAAIC,GAAgCx4E,GAEtC,IAAIy4E,GAAkCz4E,GAC/C,IAAK,KACH,OAAO,IAAI04E,GAA8B14E,GAC3C,IAAK,MACH,OAAO,IAAI24E,GAAiC34E,GAEhD,OAAO,IAAI44E,GAAwB54E,GACrC,KAAKxW,EAAe5C,MAClB,OAAO,IAAIiyF,GAAuB74E,GACpC,KAAKxW,EAAehD,SAClB,OAAO,IAAIsyF,GAA0B94E,GACvC,KAAKxW,EAAeG,KAClB,OAAO,IAAIovF,GAAsB/4E,GACnC,KAAKxW,EAAeI,OAClB,OAAO,IAAIovF,GAAwBh5E,GACrC,KAAKxW,EAAeK,OAClB,OAAO,IAAIovF,GAAwBj5E,GACrC,KAAKxW,EAAeO,SAClB,OAAO,IAAImvF,GAA0Bl5E,GACvC,KAAKxW,EAAeW,MAClB,OAAO,IAAIgvF,GAAuBn5E,GACpC,KAAKxW,EAAe7C,IAClB,OAAO,IAAIyyF,GAAqBp5E,GAClC,KAAKxW,EAAeM,QAClB,OAAO,IAAIuvF,GAAyBr5E,GACtC,KAAKxW,EAAe/C,UAClB,OAAO,IAAI6yF,GAA2Bt5E,GACxC,KAAKxW,EAAeQ,UAClB,OAAO,IAAIuvF,GAA2Bv5E,GACxC,KAAKxW,EAAeS,SAClB,OAAO,IAAIuvF,GAA0Bx5E,GACvC,KAAKxW,EAAeU,UAClB,OAAO,IAAIuvF,GAA2Bz5E,GACxC,KAAKxW,EAAe9C,MAClB,OAAO,IAAIgzF,GAAuB15E,GACpC,KAAKxW,EAAeY,eAClB,OAAO,IAAIuvF,GAAgC35E,GAC7C,QACE,OAAO,IAAI45E,GAAkB55E,GAEnC,EAEF,MAAM45E,GACJ,IAAW,KACX,KAAa,EACb,IAAgB,KAChB,WAAAp8G,CAAYwiC,GAAY,aACtB65E,GAAe,EAAK,aACpBC,GAAe,EAAK,qBACpBC,GAAuB,GACrB,CAAC,GACHvgH,KAAKqgH,aAAeA,EACpBrgH,KAAK4O,KAAO43B,EAAW53B,KACvB5O,KAAKihD,MAAQza,EAAWya,MACxBjhD,KAAKimC,YAAcO,EAAWP,YAC9BjmC,KAAKwgH,gBAAkBh6E,EAAWg6E,gBAClCxgH,KAAKygH,mBAAqBj6E,EAAWi6E,mBACrCzgH,KAAK0gH,YAAcl6E,EAAWk6E,YAC9B1gH,KAAK2gH,WAAan6E,EAAWm6E,WAC7B3gH,KAAKymC,kBAAoBD,EAAWC,kBACpCzmC,KAAK4gH,cAAgBp6E,EAAWo6E,cAChC5gH,KAAK6gH,gBAAkBr6E,EAAWq6E,gBAClC7gH,KAAK4yG,aAAepsE,EAAWosE,aAC/B5yG,KAAK8gH,cAAgBt6E,EAAWu6E,aAChC/gH,KAAKikB,OAASuiB,EAAWviB,OACzBjkB,KAAKghH,qBAAsB,EACvBX,IACFrgH,KAAKihH,eAAiBjhH,KAAKmzC,UAAYnzC,KAAKkhH,iBAAiBZ,IAE3DC,GACFvgH,KAAKmhH,uBAET,CACA,oBAAOC,EAAc,YACnBx2D,EAAW,SACXsI,IAEA,SAAUtI,GAAatvB,MAAO43B,GAAU53B,IAC1C,CACA,eAAI+lF,GACF,OAAOrhH,KAAK4O,KAAK0yG,UACnB,CACA,gBAAIC,GACF,OAAOnB,GAAkBgB,cAAcphH,KAAK4O,OAAS5O,KAAK4gH,iBAAmB5gH,KAAKwhH,WACpF,CACA,eAAIC,GACF,MAAM,KACJ7yG,GACE5O,KACE8zC,EAAS9zC,KAAKymC,mBAAmBqlB,UAAUl9C,EAAKW,IACtD,OAAIukC,EACKA,EAAOuP,UAETz0C,CACT,CACA,oBAAI8yG,GACF,OAAO1hH,KAAK4gH,eAAiB5gH,KAAK2hH,eACpC,CACA,yBAAIhwD,GACF,MAAM7d,EAAS9zC,KAAKymC,mBAAmBqlB,UAAU9rD,KAAK4O,KAAKW,IAC3D,GAAIukC,EACF,OAAOA,EAAO0tB,4BAEhB,MAAM,WACJogD,EAAU,SACVC,EAAQ,KACR9iF,GACE/+B,KAAK4O,KACT,IAAI4hE,GAAQngC,IACRqgC,GAAQrgC,IACZ,GAAIuxE,GAAY9gH,QAAU,EAAG,CAC3B,IAAK,IAAImI,EAAI,EAAGA,EAAI24G,EAAW9gH,OAAQmI,GAAK,EACtC24G,EAAW34G,EAAI,GAAKynE,GACtBA,EAAOkxC,EAAW34G,EAAI,GACtBunE,EAAOoxC,EAAW34G,EAAI,IACb24G,EAAW34G,EAAI,KAAOynE,IAC/BF,EAAO9pE,KAAKmN,IAAI28D,EAAMoxC,EAAW34G,EAAI,KAGzC,MAAO,CAACunE,EAAME,EAChB,CACA,GAAImxC,GAAU/gH,QAAU,EAAG,CACzB,IAAK,MAAMghH,KAAWD,EACpB,IAAK,IAAI54G,EAAI,EAAG2hC,EAAKk3E,EAAQhhH,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAC5C64G,EAAQ74G,EAAI,GAAKynE,GACnBA,EAAOoxC,EAAQ74G,EAAI,GACnBunE,EAAOsxC,EAAQ74G,IACN64G,EAAQ74G,EAAI,KAAOynE,IAC5BF,EAAO9pE,KAAKmN,IAAI28D,EAAMsxC,EAAQ74G,KAIpC,GAAIunE,IAASngC,IACX,MAAO,CAACmgC,EAAME,EAElB,CACA,OAAI3xC,EACK,CAACA,EAAK,GAAIA,EAAK,IAEjB,IACT,CACA,eAAAgjF,CAAgB7lD,GACd,MACEl/C,MAAM,KACJkvD,GAEFlpD,UACEgnB,SAAS,UACPjkB,EAAS,WACTC,EAAU,MACVkkB,EAAK,MACLC,KAGFnqC,KAAKikB,OAIT,OAHAi4C,EAAM,GAAKgQ,EAAK,GAAKhQ,EAAM,GAAKgQ,EAAK,GACrChQ,EAAM,GAAK,KAAOA,EAAM,GAAKhyB,GAASnkB,EACtCm2C,EAAM,GAAK,KAAOA,EAAM,GAAK/xB,GAASnkB,EAC/Bk2C,CACT,CACA,eAAIslD,GACF,MAAM,KACJ5yG,GACE5O,KACJ,OAAOA,KAAKymC,kBAAkBggB,YAAY,GAAG55B,IAAyBje,EAAKW,OAAOsvD,OAAOC,UAAYlwD,EAAKg8C,aAAatvB,KAAO,EAChI,CACA,eAAIkmF,CAAY/4E,GACd,MAAM,KACJ75B,GACE5O,KACE6+D,EAAQ,CACZpU,SAAUhiB,EACVq2B,SAAUr2B,GAAQ,IAEfzoC,KAAKymC,kBAAkBk/B,aAAa/2D,EAAKW,GAAI,CAChDsvD,WAEA7+D,KAAKymC,kBAAkBlB,SAAS,GAAG1Y,IAAyBje,EAAKW,KAAM,CACrEA,GAAIX,EAAKW,GACT0xD,eAAgBryD,EAAKqyD,eACrBhe,UAAWjjD,KAAKikB,OAAOjH,KAAKg2F,WAC5Bn0C,QACAlU,SAAU/7C,EAAK+7C,SACfgM,iBAAkB,IAAIrqB,OAGrB7D,GACHzoC,KAAKgiH,aAET,CACA,WAAAA,IACGhiH,MAAK,IAAe6+D,OAAS7+D,KAAK6+D,QAAQhwB,SAC3C7uC,MAAK,GAAgBA,KAAK6+D,MAAQ,IACpC,CACA,YAAAgE,CAAa7V,GACX,IAAKhtD,KAAKmzC,UACR,OAEE6Z,EAAOjuB,OACT/+B,MAAK,KAAa,CAChB++B,KAAM/+B,KAAK4O,KAAKmwB,KAAK57B,MAAM,KAG/B,MAAM,KACJ47B,EACA8/B,MAAOojD,GACLj1D,EACAjuB,GACF/+B,MAAK,GAAe++B,GAEtB,IAAI8/B,EAAQ7+D,MAAK,IAAe6+D,OAAS7+D,KAAK6+D,OACzCA,GAASojD,GAAUx5E,OACtBzoC,KAAKkiH,aAAaD,GAClBpjD,EAAQ7+D,MAAK,GAAc6+D,OAExBA,IAGLA,EAAMgE,aAAa7V,GACfi1D,GAAUx3D,UACZoU,EAAMhwB,SACN7uC,MAAK,GAAgB,KACrBA,KAAK6+D,MAAQ,MAEjB,CACA,WAAAsjD,GACOniH,MAAK,KAGVA,MAAK,GAAeA,MAAK,GAAS++B,MAClC/+B,MAAK,IAAe6+D,MAAMsjD,cAC1BniH,MAAK,GAAW,KAClB,CACA,IAAe++B,GACb,MACEoU,WAAW,MACTpnC,GAEF6C,MACEmwB,KAAMqjF,EAAW,SACjB94E,GAEFrlB,QACEjB,UACEgnB,SAAS,UACPjkB,EAAS,WACTC,EAAU,MACVkkB,EAAK,MACLC,MAIJnqC,KACJoiH,GAAajmE,OAAO,EAAG,KAAMpd,GAC7BhzB,EAAMqS,KAAU,KAAO2gB,EAAK,GAAKmL,GAASnkB,EAA7B,IACbha,EAAMwS,IAAS,KAAOyH,EAAa+Y,EAAK,GAAKoL,GAASnkB,EAA1C,IACK,IAAbsjB,GACFv9B,EAAM0Q,MAAW,KAAOsiB,EAAK,GAAKA,EAAK,IAAMhZ,EAA/B,IACdha,EAAM2Q,OAAY,KAAOqiB,EAAK,GAAKA,EAAK,IAAM/Y,EAA/B,KAEfhmB,KAAKqiH,YAAY/4E,EAErB,CACA,gBAAA43E,CAAiBZ,GACf,MAAM,KACJ1xG,EACAqV,QAAQ,KACNjH,EAAI,SACJgG,IAEAhjB,KACEmzC,EAAY/mC,SAAS0D,cAAc,WACzCqjC,EAAU1N,aAAa,qBAAsB72B,EAAKW,IAC5CvP,gBAAgBo/G,IAA8Bp/G,gBAAgBy+G,KAClEtrE,EAAUoC,SAAW,GAEvB,MAAM,MACJxpC,GACEonC,EASJ,GARApnC,EAAM4sD,OAAS34D,KAAKikB,OAAO00C,OAC3B34D,KAAKikB,OAAO00C,QAAU,EAClB/pD,EAAK0zG,kBACPnvE,EAAU6D,MAAQpoC,EAAK0zG,iBAErB1zG,EAAK2zG,UACPpvE,EAAU3pB,UAAUpF,IAAI,aAErBxV,EAAKmwB,MAAQ/+B,gBAAgBq/G,GAAwB,CACxD,MAAM,SACJ/1E,GACE16B,EAIJ,OAHKA,EAAK0sF,cAA6B,IAAbhyD,GACxBtpC,KAAKqiH,YAAY/4E,EAAU6J,GAEtBA,CACT,CACA,MAAM,MACJ12B,EAAK,OACLC,GACE1c,KACJ,IAAKsgH,GAAgB1xG,EAAK4zG,YAAY/lG,MAAQ,EAAG,CAC/C1Q,EAAM02G,YAAc,GAAG7zG,EAAK4zG,YAAY/lG,UACxC,MAAMimG,EAAmB9zG,EAAK4zG,YAAYG,uBACpCC,EAAiBh0G,EAAK4zG,YAAYK,qBACxC,GAAIH,EAAmB,GAAKE,EAAiB,EAAG,CAC9C,MAAME,EAAS,QAAQJ,2CAA0DE,mCACjF72G,EAAMg3G,aAAeD,CACvB,MAAO,GAAI9iH,gBAAgB8+G,GAAoC,CAC7D,MAAMgE,EAAS,QAAQrmG,2CAA+CC,mCACtE3Q,EAAMg3G,aAAeD,CACvB,CACA,OAAQl0G,EAAK4zG,YAAYz2G,OACvB,KAAKulB,EAA0BC,MAC7BxlB,EAAMy2G,YAAc,QACpB,MACF,KAAKlxF,EAA0BE,OAC7BzlB,EAAMy2G,YAAc,SACpB,MACF,KAAKlxF,EAA0BG,QAC7B8G,EAAK,uCACL,MACF,KAAKjH,EAA0BI,MAC7B6G,EAAK,qCACL,MACF,KAAKjH,EAA0Bd,UAC7BzkB,EAAMi3G,kBAAoB,QAC1B,MACF,QACE,MAEJ,MAAMC,EAAcr0G,EAAKq0G,aAAe,KACpCA,GACFjjH,MAAK,IAAa,EAClB+L,EAAMk3G,YAAc7lF,GAAKC,aAA8B,EAAjB4lF,EAAY,GAAyB,EAAjBA,EAAY,GAAyB,EAAjBA,EAAY,KAE1Fl3G,EAAM02G,YAAc,CAExB,CACA,MAAM1jF,EAAO3B,GAAKmD,cAAc,CAAC3xB,EAAKmwB,KAAK,GAAI/hB,EAAKkvD,KAAK,GAAKt9D,EAAKmwB,KAAK,GAAK/hB,EAAKkvD,KAAK,GAAIt9D,EAAKmwB,KAAK,GAAI/hB,EAAKkvD,KAAK,GAAKt9D,EAAKmwB,KAAK,GAAK/hB,EAAKkvD,KAAK,MAC3I,UACJnmD,EAAS,WACTC,EAAU,MACVkkB,EAAK,MACLC,GACEnnB,EAASgnB,QACbj+B,EAAMqS,KAAU,KAAO2gB,EAAK,GAAKmL,GAASnkB,EAA7B,IACbha,EAAMwS,IAAS,KAAOwgB,EAAK,GAAKoL,GAASnkB,EAA7B,IACZ,MAAM,SACJsjB,GACE16B,EAOJ,OANIA,EAAK0sF,cAA6B,IAAbhyD,GACvBv9B,EAAM0Q,MAAW,IAAMA,EAAQsJ,EAAjB,IACdha,EAAM2Q,OAAY,IAAMA,EAASsJ,EAAlB,KAEfhmB,KAAKqiH,YAAY/4E,EAAU6J,GAEtBA,CACT,CACA,WAAAkvE,CAAY/nD,EAAOnnB,EAAYnzC,KAAKmzC,WAClC,IAAKnzC,KAAK4O,KAAKmwB,KACb,OAEF,MAAM,UACJhZ,EAAS,WACTC,GACEhmB,KAAKikB,OAAOjB,SAASgnB,QACzB,IAAI,MACFvtB,EAAK,OACLC,GACE1c,KACAs6D,EAAQ,MAAQ,KACjB79C,EAAOC,GAAU,CAACA,EAAQD,IAE7B02B,EAAUpnC,MAAM0Q,MAAW,IAAMA,EAAQsJ,EAAjB,IACxBotB,EAAUpnC,MAAM2Q,OAAY,IAAMA,EAASsJ,EAAlB,IACzBmtB,EAAU1N,aAAa,sBAAuB,IAAM60B,GAAS,IAC/D,CACA,kBAAI4oD,GACF,MAAMC,EAAW,CAACC,EAAQC,EAAWp6F,KACnC,MAAMklB,EAAQllB,EAAMyzF,OAAO0G,GACrBxG,EAAYzuE,EAAM,GAClBm1E,EAAan1E,EAAMhrC,MAAM,GAC/B8lB,EAAM5nB,OAAO0K,MAAMs3G,GAAatG,GAAgB,GAAGH,UAAkB0G,GACrEtjH,KAAKymC,kBAAkBlB,SAASvlC,KAAK4O,KAAKW,GAAI,CAC5C,CAAC8zG,GAAYtG,GAAgB,GAAGH,SAAiB0G,MAGrD,OAAOxpF,EAAO95B,KAAM,iBAAkB,CACpCgM,QAASid,IACP,MAAM,QACJjd,GACEid,EAAMyzF,OACJh1E,EAAS17B,EAAU,IAAM,EAC/BhM,KAAKmzC,UAAUpnC,MAAMyiC,WAAa9G,EAAS,SAAW,UACtD1nC,KAAKymC,kBAAkBlB,SAASvlC,KAAK4O,KAAKW,GAAI,CAC5Cg0G,OAAQ77E,EACR87E,QAAqB,IAAZx3G,GAA6B,IAAZA,KAG9B24D,MAAO17C,IACLjpB,KAAKymC,kBAAkBlB,SAASvlC,KAAK4O,KAAKW,GAAI,CAC5Ci0G,SAAUv6F,EAAMyzF,OAAO/3C,SAG3Bj9B,OAAQze,IACN,MAAM,OACJye,GACEze,EAAMyzF,OACV18G,KAAKmzC,UAAUpnC,MAAMyiC,WAAa9G,EAAS,SAAW,UACtD1nC,KAAKymC,kBAAkBlB,SAASvlC,KAAK4O,KAAKW,GAAI,CAC5Ci0G,QAAS97E,EACT67E,OAAQ77E,KAGZ8c,MAAOv7B,IACLgjC,WAAW,IAAMhjC,EAAM5nB,OAAOmjD,MAAM,CAClCyd,eAAe,IACb,IAENwhD,SAAUx6F,IACRA,EAAM5nB,OAAO21C,MAAQ/tB,EAAMyzF,OAAO+G,UAEpCC,SAAUz6F,IACRA,EAAM5nB,OAAO+vD,SAAWnoC,EAAMyzF,OAAOgH,UAEvCliG,SAAUyH,IACRjpB,KAAK2jH,aAAa16F,EAAM5nB,OAAQ4nB,EAAMyzF,OAAOl7F,WAE/C40D,QAASntD,IACPk6F,EAAS,UAAW,kBAAmBl6F,IAEzCw+D,UAAWx+D,IACTk6F,EAAS,YAAa,kBAAmBl6F,IAE3CktD,QAASltD,IACPk6F,EAAS,UAAW,QAASl6F,IAE/B26F,UAAW36F,IACTk6F,EAAS,YAAa,QAASl6F,IAEjCg6F,YAAah6F,IACXk6F,EAAS,cAAe,cAAel6F,IAEzCy+D,YAAaz+D,IACXk6F,EAAS,cAAe,cAAel6F,IAEzCqgB,SAAUrgB,IACR,MAAMqxC,EAAQrxC,EAAMyzF,OAAOpzE,SAC3BtpC,KAAKqiH,YAAY/nD,GACjBt6D,KAAKymC,kBAAkBlB,SAASvlC,KAAK4O,KAAKW,GAAI,CAC5C+5B,SAAUgxB,MAIlB,CACA,yBAAAupD,CAA0BC,EAASC,GACjC,MAAMC,EAAgBhkH,KAAKkjH,eAC3B,IAAK,MAAMx/G,KAAQT,OAAOyE,KAAKq8G,EAAQrH,QAAS,CAC9C,MAAMtxD,EAAS04D,EAAQpgH,IAASsgH,EAActgH,GAC9C0nD,IAAS24D,EACX,CACF,CACA,2BAAAE,CAA4B/+E,GAC1B,IAAKllC,KAAK6gH,gBACR,OAEF,MAAMx7E,EAAarlC,KAAKymC,kBAAkBggB,YAAYzmD,KAAK4O,KAAKW,IAChE,IAAK81B,EACH,OAEF,MAAM2+E,EAAgBhkH,KAAKkjH,eAC3B,IAAK,MAAO5vC,EAAYopC,KAAWz5G,OAAOsC,QAAQ8/B,GAAa,CAC7D,MAAM+lB,EAAS44D,EAAc1wC,GAC7B,GAAIloB,EAAQ,CACV,MAAM84D,EAAa,CACjBxH,OAAQ,CACN,CAACppC,GAAaopC,GAEhBr7G,OAAQ6jC,GAEVkmB,EAAO84D,UACA7+E,EAAWiuC,EACpB,CACF,CACF,CACA,qBAAA6tC,GACE,IAAKnhH,KAAKmzC,UACR,OAEF,MAAM,WACJyuE,GACE5hH,KAAK4O,KACT,IAAKgzG,EACH,OAEF,MAAOuC,EAASC,EAASC,EAASC,GAAWtkH,KAAK4O,KAAKmwB,KAAKl1B,IAAIhD,GAAKH,KAAKipF,OAAO9oF,IACjF,GAA0B,IAAtB+6G,EAAW9gH,OAAc,CAC3B,MAAO89D,EAAKH,EAAKC,EAAKC,GAAOijD,EAAWxmF,SAAS,EAAG,GACpD,GAAIipF,IAAYzlD,GAAO0lD,IAAY7lD,GAAO0lD,IAAYzlD,GAAO0lD,IAAYzlD,EACvE,MAEJ,CACA,MAAM,MACJ5yD,GACE/L,KAAKmzC,UACT,IAAIoxE,EACJ,GAAIvkH,MAAK,GAAY,CACnB,MAAM,YACJijH,EAAW,YACXR,GACE12G,EACJA,EAAM02G,YAAc,EACpB8B,EAAY,CAAC,gCAAiC,0CAA2C,iDAAkD,iCAAiCtB,oBAA8BR,OAC1MziH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,YAC/B,CACA,MAAM3H,EAAQ4nG,EAAUF,EAClBznG,EAAS4nG,EAAUF,GACnB,WACJzD,GACE3gH,KACEs5C,EAAMqnE,EAAW7wG,cAAc,OACrCwpC,EAAI9vB,UAAUpF,IAAI,2BAClBk1B,EAAI7T,aAAa,QAAS,GAC1B6T,EAAI7T,aAAa,SAAU,GAC3B6T,EAAI8iE,KAAO,OACX,MAAMoI,EAAO7D,EAAW7wG,cAAc,QACtCwpC,EAAIvS,OAAOy9E,GACX,MAAMC,EAAW9D,EAAW7wG,cAAc,YACpCP,EAAK,YAAYvP,KAAK4O,KAAKW,KACjCk1G,EAASh/E,aAAa,KAAMl2B,GAC5Bk1G,EAASh/E,aAAa,gBAAiB,qBACvC++E,EAAKz9E,OAAO09E,GACZ,IAAK,IAAIx7G,EAAI,EAAG2hC,EAAKg3E,EAAW9gH,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAAG,CACtD,MAAM21D,EAAMgjD,EAAW34G,GACjBw1D,EAAMmjD,EAAW34G,EAAI,GACrBy1D,EAAMkjD,EAAW34G,EAAI,GACrB01D,EAAMijD,EAAW34G,EAAI,GACrB81B,EAAO4hF,EAAW7wG,cAAc,QAChCjJ,GAAK63D,EAAMylD,GAAW1nG,EACtB+B,GAAK8lG,EAAU7lD,GAAO/hD,EACtBgoG,GAAa9lD,EAAMF,GAAOjiD,EAC1BkoG,GAAclmD,EAAME,GAAOjiD,EACjCqiB,EAAK0G,aAAa,IAAK5+B,GACvBk4B,EAAK0G,aAAa,IAAKjnB,GACvBugB,EAAK0G,aAAa,QAASi/E,GAC3B3lF,EAAK0G,aAAa,SAAUk/E,GAC5BF,EAAS19E,OAAOhI,GAChBwlF,GAAWt6G,KAAK,+CAA+CpD,SAAS2X,aAAakmG,cAAsBC,OAC7G,CACI3kH,MAAK,KACPukH,EAAUt6G,KAAK,gBACf8B,EAAM64G,gBAAkBL,EAAUlhH,KAAK,KAEzCrD,KAAKmzC,UAAUpM,OAAOuS,GACtBt5C,KAAKmzC,UAAUpnC,MAAM04G,SAAW,QAAQl1G,IAC1C,CACA,YAAA2yG,CAAa2C,EAAY,MACvB,MAAM,KACJj2G,GACE5O,KACJ,IAAI4qD,EAAa+L,EACbkuD,GACFj6D,EAAc,CACZtvB,IAAKupF,EAAUp8E,MAEjBkuB,EAAmBkuD,EAAU1xD,OAE7BvI,EAAch8C,EAAKg8C,YACnB+L,EAAmB/nD,EAAK+nD,kBAE1B32D,MAAK,GAAgB,IAAIq/G,GAAuB,CAC9CzwG,KAAM,CACJu/B,MAAOv/B,EAAKu/B,MACZ22E,SAAUl2G,EAAKk2G,SACfnuD,mBACA/L,cACAsI,SAAUtkD,EAAKskD,SACf6xD,WAAYn2G,EAAKmwB,KACjByjF,YAAa,EACbjzG,GAAI,SAASX,EAAKW,KAClB+5B,SAAU16B,EAAK06B,SACfi5E,UAAU,GAEZt8E,YAAajmC,KAAKimC,YAClBhiB,OAAQjkB,KAAKikB,OACb+gG,SAAU,CAAChlH,OAEf,CACA,mBAAI2hH,GACF,SAAU3hH,MAAK,IAAiBA,KAAK6+D,OAAS7+D,KAAK4O,KAAK+7C,SAC1D,CACA,qBAAIs6D,GACF,OAAOjlH,MAAK,EACd,CACA,MAAAoc,GACEoc,EAAY,oDACd,CACA,kBAAA0sF,CAAmBxhH,EAAMyhH,EAAS,MAChC,MAAMC,EAAS,GACf,GAAIplH,KAAK8gH,cAAe,CACtB,MAAMuE,EAAWrlH,KAAK8gH,cAAcp9G,GACpC,GAAI2hH,EACF,IAAK,MAAM,KACTroG,EAAI,GACJzN,EAAE,aACF+1G,KACGD,EAAU,CACb,IAAc,IAAVroG,EACF,SAEF,GAAIzN,IAAO41G,EACT,SAEF,MAAMI,EAAsC,kBAAjBD,EAA4BA,EAAe,KAChEE,EAAap5G,SAAS0d,cAAc,qBAAqBva,QAC3Di2G,GAAenH,GAAqBx2G,IAAI29G,GAI5CJ,EAAOn7G,KAAK,CACVsF,KACAg2G,cACAC,eANAjtF,EAAK,6CAA6ChpB,IAQtD,CAEF,OAAO61G,CACT,CACA,IAAK,MAAMI,KAAcp5G,SAASq5G,kBAAkB/hH,GAAO,CACzD,MAAM,YACJ6hH,GACEC,EACEj2G,EAAKi2G,EAAW3/E,aAAa,mBAC/Bt2B,IAAO41G,IAGN9G,GAAqBx2G,IAAI29G,IAG9BJ,EAAOn7G,KAAK,CACVsF,KACAg2G,cACAC,eAEJ,CACA,OAAOJ,CACT,CACA,IAAAlwE,GACMl1C,KAAKmzC,YACPnzC,KAAKmzC,UAAUzL,QAAS,GAE1B1nC,KAAK6+D,OAAO6mD,WACd,CACA,IAAA1wE,GACMh1C,KAAKmzC,YACPnzC,KAAKmzC,UAAUzL,QAAS,GAE1B1nC,KAAK6+D,OAAO8mD,WACd,CACA,yBAAAC,GACE,OAAO5lH,KAAKmzC,SACd,CACA,gBAAA0yE,GACE,MAAMC,EAAW9lH,KAAK4lH,4BACtB,GAAIr1G,MAAMS,QAAQ80G,GAChB,IAAK,MAAM5gF,KAAW4gF,EACpB5gF,EAAQ1b,UAAUpF,IAAI,sBAGxB0hG,EAASt8F,UAAUpF,IAAI,gBAE3B,CACA,kBAAA2hG,GACE,IAAK/lH,KAAKqhH,YACR,OAEF,MACE2E,qBAAsBnuG,EACtBjJ,MACEW,GAAIk6C,IAEJzpD,KACJA,KAAKmzC,UAAUrqB,iBAAiB,WAAY,KAC1C9oB,KAAKimC,YAAYqZ,UAAU+E,SAAS,6BAA8B,CAChEhgD,OAAQrE,KACR6X,OACA4xC,SACAG,qBAAqB,KAG3B,CACA,SAAIntC,GACF,OAAOzc,KAAK4O,KAAKmwB,KAAK,GAAK/+B,KAAK4O,KAAKmwB,KAAK,EAC5C,CACA,UAAIriB,GACF,OAAO1c,KAAK4O,KAAKmwB,KAAK,GAAK/+B,KAAK4O,KAAKmwB,KAAK,EAC5C,EAEF,MAAMknF,WAAgC7F,GACpC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,IAEhBtgH,KAAK8zC,OAAStN,EAAWsN,MAC3B,CACA,MAAA13B,GAEE,OADApc,KAAKmzC,UAAUD,UAAY,mBACpBlzC,KAAKmzC,SACd,CACA,mBAAA+yE,GACE,MAAM,OACJpyE,GACE9zC,KACC8zC,EAAO0W,YAGZxqD,KAAKkiH,aAAapuE,EAAO+B,QAC3B,CACA,oBAAI6rE,GACF,OAAO1hH,KAAK4gH,eAAiB5gH,KAAK8zC,OAAO0W,UAC3C,CACA,yBAAImH,GACF,OAAO3xD,KAAK8zC,OAAO0tB,2BACrB,CACA,eAAIggD,GACF,OAAOxhH,KAAK8zC,OAAO+B,QAAQpN,IAC7B,CACA,eAAI+4E,CAAY/4E,GACdzoC,KAAK8zC,OAAO+B,QAAUpN,EACjBA,GACHzoC,KAAKgiH,aAET,CACA,eAAIP,GACF,OAAOzhH,KAAK8zC,OAAOuP,SACrB,CACA,MAAAxU,GACE7uC,KAAKikB,OAAOkiG,iBAAiBnmH,KAAK4O,KAAKW,IACvCvP,KAAKmzC,UAAUtE,SACf7uC,KAAKmzC,UAAY,KACjBnzC,KAAKgiH,aACP,EAEF,MAAMvD,WAA8B2B,GAClC,WAAAp8G,CAAYwiC,EAAY7iC,EAAU,MAChCy2B,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,eAAgB38G,GAAS28G,aACzBC,sBAAsB,IAExBvgH,KAAKomH,cAAgB5/E,EAAW53B,KAAKw3G,aACvC,CACA,MAAAhqG,GACE,MAAM,KACJxN,EAAI,YACJq3B,GACEjmC,KACEqmH,EAAOj6G,SAAS0D,cAAc,KACpCu2G,EAAK5gF,aAAa,kBAAmB72B,EAAKW,IAC1C,IAAI+2G,GAAU,EAkCd,OAjCI13G,EAAKiqB,KACPoN,EAAYI,kBAAkBggF,EAAMz3G,EAAKiqB,IAAKjqB,EAAK03B,WACnDggF,GAAU,GACD13G,EAAKw8C,QACdprD,KAAKumH,iBAAiBF,EAAMz3G,EAAKw8C,OAAQx8C,EAAK43G,cAC9CF,GAAU,GACD13G,EAAK63G,YACdzmH,MAAK,GAAgBqmH,EAAMz3G,EAAK63G,WAAY73G,EAAK43G,aAAc53G,EAAK83G,gBACpEJ,GAAU,GACD13G,EAAKgwF,aACd5+F,MAAK,GAAiBqmH,EAAMz3G,EAAKgwF,YAAahwF,EAAK43G,cACnDF,GAAU,GACD13G,EAAKs0B,MACdljC,KAAK2mH,UAAUN,EAAMz3G,EAAKs0B,KAAMt0B,EAAK43G,cACrCF,GAAU,IAEN13G,EAAKk1G,UAAYl1G,EAAKk1G,QAAQ8C,QAAUh4G,EAAKk1G,QAAQ,aAAel1G,EAAKk1G,QAAQ,gBAAkB9jH,KAAK6gH,iBAAmB7gH,KAAK4yG,eAClI5yG,KAAK6mH,cAAcR,EAAMz3G,GACzB03G,GAAU,GAER13G,EAAKk4G,WACP9mH,KAAK+mH,qBAAqBV,EAAMz3G,EAAKk4G,WACrCR,GAAU,GACDtmH,KAAKomH,gBAAkBE,IAChCtmH,KAAK2mH,UAAUN,EAAM,IACrBC,GAAU,IAGdtmH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,kBACzBkiG,IACFtmH,KAAKihH,eAAiBoF,EACtBrmH,KAAKmzC,UAAUpM,OAAOs/E,IAEjBrmH,KAAKmzC,SACd,CACA,MACEnzC,KAAKmzC,UAAU1N,aAAa,qBAAsB,GACpD,CACA,SAAAkhF,CAAUN,EAAMW,EAAaR,EAAe,IAC1CH,EAAKxsF,KAAO75B,KAAKimC,YAAYghF,mBAAmBD,GAChDX,EAAKa,QAAU,KACTF,GACFhnH,KAAKimC,YAAYkhF,gBAAgBH,IAE5B,IAELA,GAA+B,KAAhBA,IACjBhnH,MAAK,KAEHwmH,IACFH,EAAKrvE,MAAQwvE,EAEjB,CACA,gBAAAD,CAAiBF,EAAMj7D,EAAQo7D,EAAe,IAC5CH,EAAKxsF,KAAO75B,KAAKimC,YAAYmhF,aAAa,IAC1Cf,EAAKa,QAAU,KACblnH,KAAKimC,YAAYohF,mBAAmBj8D,IAC7B,GAELo7D,IACFH,EAAKrvE,MAAQwvE,GAEfxmH,MAAK,IACP,CACA,IAAgBqmH,EAAMI,EAAYD,EAAe,GAAItjF,EAAO,MAC1DmjF,EAAKxsF,KAAO75B,KAAKimC,YAAYmhF,aAAa,IACtCX,EAAW1vE,YACbsvE,EAAKrvE,MAAQyvE,EAAW1vE,YACfyvE,IACTH,EAAKrvE,MAAQwvE,GAEfH,EAAKa,QAAU,KACblnH,KAAKwgH,iBAAiB8G,mBAAmBb,EAAWp7G,QAASo7G,EAAWz7E,SAAU9H,IAC3E,GAETljC,MAAK,IACP,CACA,IAAiBqmH,EAAMj7D,EAAQo7D,EAAe,IAC5CH,EAAKxsF,KAAO75B,KAAKimC,YAAYmhF,aAAa,IAC1Cf,EAAKa,QAAU,KACblnH,KAAKimC,YAAYshF,mBAAmBn8D,IAC7B,GAELo7D,IACFH,EAAKrvE,MAAQwvE,GAEfxmH,MAAK,IACP,CACA,aAAA6mH,CAAcR,EAAMz3G,GAClBy3G,EAAKxsF,KAAO75B,KAAKimC,YAAYmhF,aAAa,IAC1C,MAAMv9G,EAAM,IAAIvE,IAAI,CAAC,CAAC,SAAU,WAAY,CAAC,WAAY,aAAc,CAAC,aAAc,iBACtF,IAAK,MAAM5B,KAAQT,OAAOyE,KAAKkH,EAAKk1G,SAAU,CAC5C,MAAMV,EAASv5G,EAAIhH,IAAIa,GAClB0/G,IAGLiD,EAAKjD,GAAU,KACbpjH,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,GAAIX,EAAKW,GACT7L,WAGG,GAEX,CACIkL,EAAK43G,eACPH,EAAKrvE,MAAQpoC,EAAK43G,cAEfH,EAAKa,UACRb,EAAKa,QAAU,KAAM,GAEvBlnH,MAAK,IACP,CACA,oBAAA+mH,CAAqBV,EAAMS,GACzB,MAAMU,EAAmBnB,EAAKa,QAK9B,GAJKM,IACHnB,EAAKxsF,KAAO75B,KAAKimC,YAAYmhF,aAAa,KAE5CpnH,MAAK,MACAA,KAAK8gH,cAKR,OAJAvoF,EAAK,uHACAivF,IACHnB,EAAKa,QAAU,KAAM,IAIzBb,EAAKa,QAAU,KACbM,MACA,MACEpC,OAAQqC,EACRC,KAAMC,EAAa,QACnBC,GACEd,EACEe,EAAY,GAClB,GAA+B,IAA3BJ,EAAgB3mH,QAAyC,IAAzB6mH,EAAc7mH,OAAc,CAC9D,MAAMgnH,EAAW,IAAIzvE,IAAIsvE,GACzB,IAAK,MAAMI,KAAaN,EAAiB,CACvC,MAAMrC,EAASplH,KAAK8gH,cAAciH,IAAc,GAChD,IAAK,MAAM,GACTx4G,KACG61G,EACH0C,EAAS1jG,IAAI7U,EAEjB,CACA,IAAK,MAAM61G,KAAUniH,OAAO6oC,OAAO9rC,KAAK8gH,eACtC,IAAK,MAAMkH,KAAS5C,EACd0C,EAASjgH,IAAImgH,EAAMz4G,MAAQq4G,GAC7BC,EAAU59G,KAAK+9G,EAIvB,MACE,IAAK,MAAM5C,KAAUniH,OAAO6oC,OAAO9rC,KAAK8gH,eACtC+G,EAAU59G,QAAQm7G,GAGtB,MAAMjgF,EAAUnlC,KAAKymC,kBACfwhF,EAAS,GACf,IAAK,MAAMD,KAASH,EAAW,CAC7B,MAAM,GACJt4G,GACEy4G,EAEJ,OADAC,EAAOh+G,KAAKsF,GACJy4G,EAAMv/G,MACZ,IAAK,OACH,CACE,MAAM3G,EAAQkmH,EAAMzjD,cAAgB,GACpCp/B,EAAQI,SAASh2B,EAAI,CACnBzN,UAEF,KACF,CACF,IAAK,WACL,IAAK,cACH,CACE,MAAMA,EAAQkmH,EAAMzjD,eAAiByjD,EAAM1C,aAC3CngF,EAAQI,SAASh2B,EAAI,CACnBzN,UAEF,KACF,CACF,IAAK,WACL,IAAK,UACH,CACE,MAAMA,EAAQkmH,EAAMzjD,cAAgB,GACpCp/B,EAAQI,SAASh2B,EAAI,CACnBzN,UAEF,KACF,CACF,QACE,SAEJ,MAAM0jH,EAAap5G,SAAS0d,cAAc,qBAAqBva,OAC1Di2G,IAEOnH,GAAqBx2G,IAAI29G,GAIrCA,EAAW0C,cAAc,IAAIC,MAAM,cAHjC5vF,EAAK,+CAA+ChpB,KAIxD,CAWA,OAVIvP,KAAK6gH,iBACP7gH,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,GAAI,MACJs2D,IAAKoiD,EACLvkH,KAAM,gBAIL,EAEX,EAEF,MAAMg7G,WAA8B0B,GAClC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,GAElB,CACA,MAAAjkG,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,kBAC7B,MAAMo1B,EAAQptC,SAAS0D,cAAc,OAWrC,OAVA0pC,EAAMttC,IAAMlM,KAAKygH,mBAAqB,cAAgBzgH,KAAK4O,KAAKlL,KAAKuL,cAAgB,OACrFuqC,EAAM/T,aAAa,eAAgB,8BACnC+T,EAAM/T,aAAa,iBAAkBohB,KAAKC,UAAU,CAClDr+C,KAAMzI,KAAK4O,KAAKlL,SAEb1D,KAAK4O,KAAK+7C,UAAY3qD,KAAKuhH,eAC9BvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEPliH,KAAKmzC,UAAUpM,OAAOyS,GACfx5C,KAAKmzC,SACd,EAEF,MAAMisE,WAAgCgB,GACpC,MAAAhkG,GACE,OAAOpc,KAAKmzC,SACd,CACA,wBAAAi1E,CAAyBljF,GACnBllC,KAAK4O,KAAK0sF,eAC8B,WAAtCp2D,EAAQu3E,iBAAiBn6C,WAC3Bp9B,EAAQu3E,gBAAgB/0E,QAAS,GAEnCxC,EAAQwC,QAAS,EAErB,CACA,eAAA2gF,CAAgBp/F,GACd,OAAO8S,GAAiBS,SAASG,MAAQ1T,EAAM8zB,QAAU9zB,EAAM6zB,OACjE,CACA,iBAAAwrE,CAAkBpjF,EAASqjF,EAAaC,EAAUC,EAAWC,GACvDF,EAAShtG,SAAS,SACpB0pB,EAAQpc,iBAAiB0/F,EAAUv/F,IACjCjpB,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,GAAIvP,KAAK4O,KAAKW,GACd7L,KAAM+kH,EACN3mH,MAAO4mH,EAAYz/F,GACnBq/C,MAAOr/C,EAAM+zB,SACb2rE,SAAU3oH,KAAKqoH,gBAAgBp/F,QAKrCic,EAAQpc,iBAAiB0/F,EAAUv/F,IACjC,GAAiB,SAAbu/F,EAAqB,CACvB,IAAKD,EAAYK,UAAY3/F,EAAM+vC,cACjC,OAEFuvD,EAAYK,SAAU,CACxB,MAAO,GAAiB,UAAbJ,EAAsB,CAC/B,GAAID,EAAYK,QACd,OAEFL,EAAYK,SAAU,CACxB,CACKF,GAGL1oH,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,GAAIvP,KAAK4O,KAAKW,GACd7L,KAAM+kH,EACN3mH,MAAO4mH,EAAYz/F,OAK7B,CACA,kBAAA4/F,CAAmB3jF,EAASqjF,EAAap+G,EAAOvG,GAC9C,IAAK,MAAO4kH,EAAUC,KAAct+G,GAChB,WAAds+G,GAA0BzoH,KAAK4O,KAAKk1G,UAAU2E,MAC9B,UAAdA,GAAuC,SAAdA,IAC3BF,IAAgB,CACdK,SAAS,IAGb5oH,KAAKsoH,kBAAkBpjF,EAASqjF,EAAaC,EAAUC,EAAW7kH,GAChD,UAAd6kH,GAA0BzoH,KAAK4O,KAAKk1G,SAASgF,KAExB,SAAdL,GAAyBzoH,KAAK4O,KAAKk1G,SAASiF,OACrD/oH,KAAKsoH,kBAAkBpjF,EAASqjF,EAAa,QAAS,QAAS,MAF/DvoH,KAAKsoH,kBAAkBpjF,EAASqjF,EAAa,OAAQ,OAAQ,MAMrE,CACA,mBAAAS,CAAoB9jF,GAClB,MAAMiJ,EAAQnuC,KAAK4O,KAAKijD,iBAAmB,KAC3C3sB,EAAQn5B,MAAM8lD,gBAA4B,OAAV1jB,EAAiB,cAAgB/Q,GAAKC,aAAa8Q,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAC/G,CACA,aAAA86E,CAAc/jF,GACZ,MAAMgkF,EAAiB,CAAC,OAAQ,SAAU,UACpC,UACJC,GACEnpH,KAAK4O,KAAKw6G,sBACRt9B,EAAW9rF,KAAK4O,KAAKw6G,sBAAsBt9B,UAAYsyB,GACvDryG,EAAQm5B,EAAQn5B,MACtB,IAAIs9G,EACJ,MAAMhlC,EAAc,EACdilC,EAAoBziH,GAAKH,KAAK6qC,MAAM,GAAK1qC,GAAK,GACpD,GAAI7G,KAAK4O,KAAK26G,UAAW,CACvB,MAAM7sG,EAAShW,KAAKm7B,IAAI7hC,KAAK4O,KAAKmwB,KAAK,GAAK/+B,KAAK4O,KAAKmwB,KAAK,GAAKslD,GAC1DmlC,EAAgB9iH,KAAK6qC,MAAM70B,GAAUmP,EAAcigE,KAAc,EACjE0gB,EAAa9vF,EAAS8sG,EAC5BH,EAAmB3iH,KAAKoN,IAAIg4E,EAAUw9B,EAAkB9c,EAAa3gF,GACvE,KAAO,CACL,MAAMnP,EAAShW,KAAKm7B,IAAI7hC,KAAK4O,KAAKmwB,KAAK,GAAK/+B,KAAK4O,KAAKmwB,KAAK,GAAKslD,GAChEglC,EAAmB3iH,KAAKoN,IAAIg4E,EAAUw9B,EAAkB5sG,EAASmP,GACnE,CACA9f,EAAM+/E,SAAW,QAAQu9B,mCACzBt9G,EAAMoiC,MAAQ/Q,GAAKC,aAAa8rF,EAAU,GAAIA,EAAU,GAAIA,EAAU,IACtC,OAA5BnpH,KAAK4O,KAAK66G,gBACZ19G,EAAM29G,UAAYR,EAAelpH,KAAK4O,KAAK66G,eAE/C,CACA,YAAA9F,CAAaz+E,EAASykF,GAChBA,EACFzkF,EAAQO,aAAa,YAAY,GAEjCP,EAAQS,gBAAgB,YAE1BT,EAAQO,aAAa,gBAAiBkkF,EACxC,EAEF,MAAM/K,WAAoCQ,GACxC,WAAAp7G,CAAYwiC,GACV,MAAM65E,EAAe75E,EAAWk6E,aAAel6E,EAAW53B,KAAK0sF,eAAiB90D,EAAW53B,KAAKg7G,iBAAmBpjF,EAAW53B,KAAKi7G,WACnIzvF,MAAMoM,EAAY,CAChB65E,gBAEJ,CACA,qBAAAyJ,CAAsBnT,EAAMvsG,EAAKtI,EAAOioH,GACtC,MAAM5kF,EAAUnlC,KAAKymC,kBACrB,IAAK,MAAMvB,KAAWllC,KAAKklH,mBAAmBvO,EAAKjzG,KAAMizG,EAAKpnG,IACxD21B,EAAQsgF,aACVtgF,EAAQsgF,WAAWp7G,GAAOtI,GAE5BqjC,EAAQI,SAASL,EAAQ31B,GAAI,CAC3B,CAACw6G,GAAejoH,GAGtB,CACA,MAAAsa,GACE,MAAM+oB,EAAUnlC,KAAKymC,kBACfl3B,EAAKvP,KAAK4O,KAAKW,GACrBvP,KAAKmzC,UAAU3pB,UAAUpF,IAAI,wBAC7B,IAAI8gB,EAAU,KACd,GAAIllC,KAAK0gH,YAAa,CACpB,MAAMr7E,EAAaF,EAAQG,SAAS/1B,EAAI,CACtCzN,MAAO9B,KAAK4O,KAAKi7G,aAEnB,IAAIvlF,EAAce,EAAWvjC,OAAS,GACtC,MAAMkoH,EAAS7kF,EAAQG,SAAS/1B,EAAI,CAClC06G,UAAWjqH,KAAK4O,KAAKo7G,SACpBC,UACCD,GAAU1lF,EAAYxjC,OAASkpH,IACjC1lF,EAAcA,EAAYnhC,MAAM,EAAG6mH,IAErC,IAAIE,EAAuB7kF,EAAW8kF,gBAAkBnqH,KAAK4O,KAAK01B,aAAajhC,KAAK,OAAS,KACzF6mH,GAAwBlqH,KAAK4O,KAAKw7G,OACpCF,EAAuBA,EAAqB5nF,WAAW,OAAQ,KAEjE,MAAMimF,EAAc,CAClB8B,UAAW/lF,EACX6lF,eAAgBD,EAChBI,mBAAoB,KACpBC,UAAW,EACX3B,SAAS,GAEP5oH,KAAK4O,KAAK26G,WACZrkF,EAAU94B,SAAS0D,cAAc,YACjCo1B,EAAQZ,YAAc4lF,GAAwB5lF,EAC1CtkC,KAAK4O,KAAK47G,cACZtlF,EAAQn5B,MAAM0+G,UAAY,YAG5BvlF,EAAU94B,SAAS0D,cAAc,SACjCo1B,EAAQz8B,KAAOzI,KAAK4O,KAAKs+F,SAAW,WAAa,OACjDhoE,EAAQO,aAAa,QAASykF,GAAwB5lF,GAClDtkC,KAAK4O,KAAK47G,cACZtlF,EAAQn5B,MAAM2+G,UAAY,WAG1B1qH,KAAK4O,KAAK0sF,eACZp2D,EAAQwC,QAAS,GAEnB22E,GAAqBj6F,IAAI8gB,GACzBllC,KAAKihH,eAAiB/7E,EACtBA,EAAQO,aAAa,kBAAmBl2B,GACxC21B,EAAQksB,SAAWpxD,KAAK4O,KAAKmQ,SAC7BmmB,EAAQxhC,KAAO1D,KAAK4O,KAAKm5G,UACzB7iF,EAAQqQ,SAAW,EACnB,MAAM,eACJo1E,EAAc,aACdC,EAAY,SACZC,GACE7qH,KAAK4O,KACHk8G,IAAkBF,GAAgB5qH,KAAK6gH,gBACzC8J,IACFzlF,EAAQ8R,MAAQ2zE,GAElB3qH,KAAK2jH,aAAaz+E,EAASllC,KAAK4O,KAAK4S,UACjCwoG,IACF9kF,EAAQ6lF,UAAYf,GAEtB9kF,EAAQpc,iBAAiB,QAASG,IAChCkc,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOmnB,EAAM5nB,OAAOS,QAEtB9B,KAAK8pH,sBAAsB5kF,EAAS,QAASjc,EAAM5nB,OAAOS,MAAO,SACjEymH,EAAY4B,eAAiB,OAE/BjlF,EAAQpc,iBAAiB,YAAaG,IACpC,MAAMs7C,EAAevkE,KAAK4O,KAAKo8G,mBAAqB,GACpD9lF,EAAQpjC,MAAQymH,EAAY8B,UAAY9lD,EACxCgkD,EAAY4B,eAAiB,OAE/B,IAAIc,EAAehiG,IACjB,MAAM,eACJkhG,GACE5B,EACmB,OAAnB4B,QAA8ChmH,IAAnBgmH,IAC7BlhG,EAAM5nB,OAAOS,MAAQqoH,GAEvBlhG,EAAM5nB,OAAO6pH,WAAa,GAE5B,GAAIlrH,KAAK6gH,iBAAmB7gH,KAAK4yG,aAAc,CAC7C1tE,EAAQpc,iBAAiB,QAASG,IAChC,GAAIs/F,EAAYK,QACd,OAEF,MAAM,OACJvnH,GACE4nB,EAOJ,GANI6hG,IACFzpH,EAAOoH,KAAOmiH,EACVC,IACFxpH,EAAOmM,KAAOq9G,IAGdtC,EAAY8B,UAAW,CACzB,MAAMvoH,EAAQymH,EAAY8B,UAC1B,GAAIS,EACF,GAAqB,SAAjBF,EAAyB,CAC3B,MAAMz3D,EAAO,IAAI7mB,KAAKxqC,GAChB8hG,EAAQ,CAACzwC,EAAKg4D,WAAYh4D,EAAKi4D,aAAcj4D,EAAKk4D,cACxDhqH,EAAOS,MAAQ8hG,EAAM/5F,IAAIrE,GAAKA,EAAEjB,WAAW44B,SAAS,EAAG,MAAM95B,KAAK,IACpE,MACEhC,EAAOS,MAAQ,IAAIwqC,KAAKxqC,EAAQw8G,IAAiBgN,cAAc9nH,MAAuB,SAAjBonH,EAA0B,IAAM,IAAK,GAAG,QAG/GvpH,EAAOS,MAAQA,CAEnB,CACAymH,EAAY+B,mBAAqBjpH,EAAOS,MACxCymH,EAAYgC,UAAY,EACnBvqH,KAAK4O,KAAKk1G,SAASiF,QACtBR,EAAYK,SAAU,KAG1B1jF,EAAQpc,iBAAiB,oBAAqBi7F,IAC5C/jH,KAAKooH,yBAAyBrE,EAAQ1iH,QACtC,MAAMyiH,EAAU,CACd,KAAAhiH,CAAMmnB,GACJs/F,EAAY8B,UAAYphG,EAAMyzF,OAAO56G,OAAS,GACzCgpH,GACH3lF,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOymH,EAAY8B,UAAU9lH,aAGjC0kB,EAAM5nB,OAAOS,MAAQymH,EAAY8B,SACnC,EACA,cAAAF,CAAelhG,GACb,MAAM,eACJkhG,GACElhG,EAAMyzF,OACV6L,EAAY4B,eAAiBA,EACN,OAAnBA,QAA8ChmH,IAAnBgmH,GAAgClhG,EAAM5nB,SAAW+K,SAAS+xC,gBACvFl1B,EAAM5nB,OAAOS,MAAQqoH,GAEvB,MAAMv7G,EAAO,CACXu7G,kBAEEW,IACFl8G,EAAK9M,MAAQqoH,GAEfhlF,EAAQI,SAASh2B,EAAIX,EACvB,EACA,QAAA28G,CAAStiG,GACPA,EAAM5nB,OAAOmqH,qBAAqBviG,EAAMyzF,OAAO6O,SACjD,EACAtB,UAAWhhG,IACT,MAAM,UACJghG,GACEhhG,EAAMyzF,QACJ,OACJr7G,GACE4nB,EACJ,GAAkB,IAAdghG,EAEF,YADA5oH,EAAOskC,gBAAgB,aAGzBtkC,EAAOokC,aAAa,YAAawkF,GACjC,IAAInoH,EAAQymH,EAAY8B,WACnBvoH,GAASA,EAAMhB,QAAUmpH,IAG9BnoH,EAAQA,EAAMqB,MAAM,EAAG8mH,GACvB5oH,EAAOS,MAAQymH,EAAY8B,UAAYvoH,EACvCqjC,EAAQI,SAASh2B,EAAI,CACnBzN,UAEF9B,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,KACA7L,KAAM,YACN5B,QACA2pH,YAAY,EACZlB,UAAW,EACXmB,SAAUrqH,EAAOsqH,eACjBC,OAAQvqH,EAAOwqH,mBAKvB7rH,KAAK6jH,0BAA0BC,EAASC,KAE1C7+E,EAAQpc,iBAAiB,UAAWG,IAClCs/F,EAAYgC,UAAY,EACxB,IAAIA,GAAa,EAQjB,GAPkB,WAAdthG,EAAM7e,IACRmgH,EAAY,EACW,UAAdthG,EAAM7e,KAAoBpK,KAAK4O,KAAK26G,UAEtB,QAAdtgG,EAAM7e,MACfm+G,EAAYgC,UAAY,GAFxBA,EAAY,GAIK,IAAfA,EACF,OAEF,MAAM,MACJzoH,GACEmnB,EAAM5nB,OACNknH,EAAY+B,qBAAuBxoH,IAGvCymH,EAAY+B,mBAAqBxoH,EACjCymH,EAAY8B,UAAYvoH,EACxB9B,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,KACA7L,KAAM,YACN5B,QACA2pH,YAAY,EACZlB,YACAmB,SAAUziG,EAAM5nB,OAAOsqH,eACvBC,OAAQ3iG,EAAM5nB,OAAOwqH,mBAI3B,MAAMC,EAAgBb,EACtBA,EAAe,KACf/lF,EAAQpc,iBAAiB,OAAQG,IAC/B,IAAKs/F,EAAYK,UAAY3/F,EAAM+vC,cACjC,OAEGh5D,KAAK4O,KAAKk1G,SAASgF,OACtBP,EAAYK,SAAU,GAExB,MAAM,OACJvnH,GACE4nB,EACJ,IAAI,MACFnnB,GACET,EACJ,GAAIypH,EAAe,CACjB,GAAIhpH,GAA0B,SAAjB8oH,EAAyB,CACpC,MAAMhnB,EAAQ9hG,EAAM0B,MAAM,KAAKqG,IAAIrE,GAAK+nC,SAAS/nC,EAAG,KACpD1D,EAAQ,IAAIwqC,KAAK,IAAM,EAAG,EAAGs3D,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAM,GAAG7yF,UAChE1P,EAAOmM,KAAO,EAChB,MACO1L,EAAM0Z,SAAS,OAClB1Z,EAAQ,GAAGA,WAEbA,EAAQ,IAAIwqC,KAAKxqC,GAAOiP,UAE1B1P,EAAOoH,KAAO,MAChB,CACA8/G,EAAY8B,UAAYvoH,EACpBymH,EAAY+B,qBAAuBxoH,GACrC9B,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,KACA7L,KAAM,YACN5B,QACA2pH,YAAY,EACZlB,UAAWhC,EAAYgC,UACvBmB,SAAUziG,EAAM5nB,OAAOsqH,eACvBC,OAAQ3iG,EAAM5nB,OAAOwqH,gBAI3BC,EAAc7iG,KAEZjpB,KAAK4O,KAAKk1G,SAASiI,WACrB7mF,EAAQpc,iBAAiB,cAAeG,IACtCs/F,EAAY+B,mBAAqB,KACjC,MAAM,KACJ17G,EAAI,OACJvN,GACE4nB,GACE,MACJnnB,EAAK,eACL6pH,EAAc,aACdE,GACExqH,EACJ,IAAIqqH,EAAWC,EACbC,EAASC,EACX,OAAQ5iG,EAAM+iG,WACZ,IAAK,qBACH,CACE,MAAMlxG,EAAQhZ,EAAMgpC,UAAU,EAAG6gF,GAAgB7wG,MAAM,cACnDA,IACF4wG,GAAY5wG,EAAM,GAAGha,QAEvB,KACF,CACF,IAAK,oBACH,CACE,MAAMga,EAAQhZ,EAAMgpC,UAAU6gF,GAAgB7wG,MAAM,cAChDA,IACF8wG,GAAU9wG,EAAM,GAAGha,QAErB,KACF,CACF,IAAK,wBACC6qH,IAAmBE,IACrBH,GAAY,GAEd,MACF,IAAK,uBACCC,IAAmBE,IACrBD,GAAU,GAEZ,MAEJ3iG,EAAMzD,iBACNxlB,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,KACA7L,KAAM,YACN5B,QACAmqH,OAAQr9G,GAAQ,GAChB68G,YAAY,EACZC,WACAE,cAKR5rH,KAAK6oH,mBAAmB3jF,EAASqjF,EAAa,CAAC,CAAC,QAAS,SAAU,CAAC,OAAQ,QAAS,CAAC,YAAa,cAAe,CAAC,aAAc,eAAgB,CAAC,aAAc,cAAe,CAAC,UAAW,aAAct/F,GAASA,EAAM5nB,OAAOS,MACjO,CAIA,GAHImpH,GACF/lF,EAAQpc,iBAAiB,OAAQmiG,GAE/BjrH,KAAK4O,KAAKw7G,KAAM,CAClB,MAAM8B,EAAalsH,KAAK4O,KAAKmwB,KAAK,GAAK/+B,KAAK4O,KAAKmwB,KAAK,GAChDotF,EAAYD,EAAalC,EAC/B9kF,EAAQ1b,UAAUpF,IAAI,QACtB8gB,EAAQn5B,MAAMqgH,cAAgB,QAAQD,wCACxC,CACF,MACEjnF,EAAU94B,SAAS0D,cAAc,OACjCo1B,EAAQZ,YAActkC,KAAK4O,KAAKi7G,WAChC3kF,EAAQn5B,MAAMsgH,cAAgB,SAC9BnnF,EAAQn5B,MAAMC,QAAU,aACpBhM,KAAK4O,KAAK0sF,eACZp2D,EAAQwC,QAAS,GAOrB,OAJA1nC,KAAKipH,cAAc/jF,GACnBllC,KAAKgpH,oBAAoB9jF,GACzBllC,KAAKikH,4BAA4B/+E,GACjCllC,KAAKmzC,UAAUpM,OAAO7B,GACfllC,KAAKmzC,SACd,EAEF,MAAMgsE,WAAyCC,GAC7C,WAAAp7G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,eAAgB75E,EAAW53B,KAAK0sF,cAEpC,EAEF,MAAM0jB,WAAwCI,GAC5C,WAAAp7G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,aAAc75E,EAAWk6E,aAE7B,CACA,MAAAtkG,GACE,MAAM+oB,EAAUnlC,KAAKymC,kBACf73B,EAAO5O,KAAK4O,KACZW,EAAKX,EAAKW,GAChB,IAAIzN,EAAQqjC,EAAQG,SAAS/1B,EAAI,CAC/BzN,MAAO8M,EAAK22G,cAAgB32G,EAAKi7G,aAChC/nH,MACkB,kBAAVA,IACTA,EAAkB,QAAVA,EACRqjC,EAAQI,SAASh2B,EAAI,CACnBzN,WAGJ9B,KAAKmzC,UAAU3pB,UAAUpF,IAAI,yBAA0B,YACvD,MAAM8gB,EAAU94B,SAAS0D,cAAc,SAmDvC,OAlDAuuG,GAAqBj6F,IAAI8gB,GACzBA,EAAQO,aAAa,kBAAmBl2B,GACxC21B,EAAQksB,SAAWxiD,EAAKmQ,SACxB/e,KAAK2jH,aAAaz+E,EAASllC,KAAK4O,KAAK4S,UACrC0jB,EAAQz8B,KAAO,WACfy8B,EAAQxhC,KAAOkL,EAAKm5G,UAChBjmH,GACFojC,EAAQO,aAAa,WAAW,GAElCP,EAAQO,aAAa,cAAe72B,EAAK22G,aACzCrgF,EAAQqQ,SAAW,EACnBrQ,EAAQpc,iBAAiB,SAAUG,IACjC,MAAM,KACJvlB,EAAI,QACJkiC,GACE3c,EAAM5nB,OACV,IAAK,MAAMirH,KAAYtsH,KAAKklH,mBAAmBxhH,EAAM6L,GAAK,CACxD,MAAMg9G,EAAa3mF,GAAW0mF,EAAS/G,cAAgB32G,EAAK22G,YACxD+G,EAAS9G,aACX8G,EAAS9G,WAAW5/E,QAAU2mF,GAEhCpnF,EAAQI,SAAS+mF,EAAS/8G,GAAI,CAC5BzN,MAAOyqH,GAEX,CACApnF,EAAQI,SAASh2B,EAAI,CACnBzN,MAAO8jC,MAGXV,EAAQpc,iBAAiB,YAAaG,IACpC,MAAMs7C,EAAe31D,EAAKo8G,mBAAqB,MAC/C/hG,EAAM5nB,OAAOukC,QAAU2+B,IAAiB31D,EAAK22G,cAE3CvlH,KAAK6gH,iBAAmB7gH,KAAK4yG,eAC/B1tE,EAAQpc,iBAAiB,oBAAqBi7F,IAC5C,MAAMD,EAAU,CACd,KAAAhiH,CAAMmnB,GACJA,EAAM5nB,OAAOukC,QAAiC,QAAvB3c,EAAMyzF,OAAO56G,MACpCqjC,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOmnB,EAAM5nB,OAAOukC,SAExB,GAEF5lC,KAAK6jH,0BAA0BC,EAASC,KAE1C/jH,KAAK6oH,mBAAmB3jF,EAAS,KAAM,CAAC,CAAC,SAAU,YAAa,CAAC,SAAU,UAAW,CAAC,QAAS,SAAU,CAAC,OAAQ,QAAS,CAAC,YAAa,cAAe,CAAC,aAAc,eAAgB,CAAC,aAAc,cAAe,CAAC,UAAW,aAAcjc,GAASA,EAAM5nB,OAAOukC,UAExQ5lC,KAAKgpH,oBAAoB9jF,GACzBllC,KAAKikH,4BAA4B/+E,GACjCllC,KAAKmzC,UAAUpM,OAAO7B,GACfllC,KAAKmzC,SACd,EAEF,MAAM2rE,WAA2CM,GAC/C,WAAAp7G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,aAAc75E,EAAWk6E,aAE7B,CACA,MAAAtkG,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,yBAA0B,eACvD,MAAM+gB,EAAUnlC,KAAKymC,kBACf73B,EAAO5O,KAAK4O,KACZW,EAAKX,EAAKW,GAChB,IAAIzN,EAAQqjC,EAAQG,SAAS/1B,EAAI,CAC/BzN,MAAO8M,EAAKi7G,aAAej7G,EAAK49G,cAC/B1qH,MAOH,GANqB,kBAAVA,IACTA,EAAQA,IAAU8M,EAAK49G,YACvBrnF,EAAQI,SAASh2B,EAAI,CACnBzN,WAGAA,EACF,IAAK,MAAM2qH,KAASzsH,KAAKklH,mBAAmBt2G,EAAKm5G,UAAWx4G,GAC1D41B,EAAQI,SAASknF,EAAMl9G,GAAI,CACzBzN,OAAO,IAIb,MAAMojC,EAAU94B,SAAS0D,cAAc,SA6BvC,GA5BAuuG,GAAqBj6F,IAAI8gB,GACzBA,EAAQO,aAAa,kBAAmBl2B,GACxC21B,EAAQksB,SAAWxiD,EAAKmQ,SACxB/e,KAAK2jH,aAAaz+E,EAASllC,KAAK4O,KAAK4S,UACrC0jB,EAAQz8B,KAAO,QACfy8B,EAAQxhC,KAAOkL,EAAKm5G,UAChBjmH,GACFojC,EAAQO,aAAa,WAAW,GAElCP,EAAQqQ,SAAW,EACnBrQ,EAAQpc,iBAAiB,SAAUG,IACjC,MAAM,KACJvlB,EAAI,QACJkiC,GACE3c,EAAM5nB,OACV,IAAK,MAAMorH,KAASzsH,KAAKklH,mBAAmBxhH,EAAM6L,GAChD41B,EAAQI,SAASknF,EAAMl9G,GAAI,CACzBzN,OAAO,IAGXqjC,EAAQI,SAASh2B,EAAI,CACnBzN,MAAO8jC,MAGXV,EAAQpc,iBAAiB,YAAaG,IACpC,MAAMs7C,EAAe31D,EAAKo8G,kBAC1B/hG,EAAM5nB,OAAOukC,QAA2B,OAAjB2+B,QAA0CpgE,IAAjBogE,GAA8BA,IAAiB31D,EAAK49G,cAElGxsH,KAAK6gH,iBAAmB7gH,KAAK4yG,aAAc,CAC7C,MAAM8Z,EAAiB99G,EAAK49G,YAC5BtnF,EAAQpc,iBAAiB,oBAAqBi7F,IAC5C,MAAMD,EAAU,CACdhiH,MAAOmnB,IACL,MAAM2c,EAAU8mF,IAAmBzjG,EAAMyzF,OAAO56G,MAChD,IAAK,MAAM2qH,KAASzsH,KAAKklH,mBAAmBj8F,EAAM5nB,OAAOqC,MAAO,CAC9D,MAAM6oH,EAAa3mF,GAAW6mF,EAAMl9G,KAAOA,EACvCk9G,EAAMjH,aACRiH,EAAMjH,WAAW5/E,QAAU2mF,GAE7BpnF,EAAQI,SAASknF,EAAMl9G,GAAI,CACzBzN,MAAOyqH,GAEX,IAGJvsH,KAAK6jH,0BAA0BC,EAASC,KAE1C/jH,KAAK6oH,mBAAmB3jF,EAAS,KAAM,CAAC,CAAC,SAAU,YAAa,CAAC,SAAU,UAAW,CAAC,QAAS,SAAU,CAAC,OAAQ,QAAS,CAAC,YAAa,cAAe,CAAC,aAAc,eAAgB,CAAC,aAAc,cAAe,CAAC,UAAW,aAAcjc,GAASA,EAAM5nB,OAAOukC,QACxQ,CAIA,OAHA5lC,KAAKgpH,oBAAoB9jF,GACzBllC,KAAKikH,4BAA4B/+E,GACjCllC,KAAKmzC,UAAUpM,OAAO7B,GACfllC,KAAKmzC,SACd,EAEF,MAAM8rE,WAA0CR,GAC9C,WAAAz6G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB85E,aAAc95E,EAAW53B,KAAKg7G,eAElC,CACA,MAAAxtG,GACE,MAAM+2B,EAAY/Y,MAAMhe,SACxB+2B,EAAU3pB,UAAUpF,IAAI,yBAA0B,cAClD,MAAMuoG,EAAcx5E,EAAUy5E,UAO9B,OANI5sH,KAAK6gH,iBAAmB7gH,KAAK4yG,cAAgB+Z,IAC/C3sH,KAAKikH,4BAA4B0I,GACjCA,EAAY7jG,iBAAiB,oBAAqBi7F,IAChD/jH,KAAK6jH,0BAA0B,CAAC,EAAGE,MAGhC5wE,CACT,EAEF,MAAM+rE,WAAsCE,GAC1C,WAAAp7G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,aAAc75E,EAAWk6E,aAE7B,CACA,MAAAtkG,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,0BAC7B,MAAM+gB,EAAUnlC,KAAKymC,kBACfl3B,EAAKvP,KAAK4O,KAAKW,GACf81B,EAAaF,EAAQG,SAAS/1B,EAAI,CACtCzN,MAAO9B,KAAK4O,KAAKi7G,aAEbgD,EAAgBzgH,SAAS0D,cAAc,UAC7CuuG,GAAqBj6F,IAAIyoG,GACzBA,EAAcpnF,aAAa,kBAAmBl2B,GAC9Cs9G,EAAcz7D,SAAWpxD,KAAK4O,KAAKmQ,SACnC/e,KAAK2jH,aAAakJ,EAAe7sH,KAAK4O,KAAK4S,UAC3CqrG,EAAcnpH,KAAO1D,KAAK4O,KAAKm5G,UAC/B8E,EAAct3E,SAAW,EACzB,IAAIu3E,EAAkB9sH,KAAK4O,KAAKm+G,OAAS/sH,KAAK4O,KAAKjL,QAAQ7C,OAAS,EAC/Dd,KAAK4O,KAAKm+G,QACbF,EAAchhF,KAAO7rC,KAAK4O,KAAKjL,QAAQ7C,OACnCd,KAAK4O,KAAKo+G,cACZH,EAAcI,UAAW,IAG7BJ,EAAc/jG,iBAAiB,YAAaG,IAC1C,MAAMs7C,EAAevkE,KAAK4O,KAAKo8G,kBAC/B,IAAK,MAAMllF,KAAU+mF,EAAclpH,QACjCmiC,EAAOzgB,SAAWygB,EAAOhkC,QAAUyiE,IAGvC,IAAK,MAAMz+B,KAAU9lC,KAAK4O,KAAKjL,QAAS,CACtC,MAAMupH,EAAgB9gH,SAAS0D,cAAc,UAC7Co9G,EAAc5oF,YAAcwB,EAAOqnF,aACnCD,EAAcprH,MAAQgkC,EAAOy/E,YACzBlgF,EAAWvjC,MAAM0Z,SAASsqB,EAAOy/E,eACnC2H,EAAcznF,aAAa,YAAY,GACvCqnF,GAAkB,GAEpBD,EAAc9lF,OAAOmmF,EACvB,CACA,IAAIE,EAAmB,KACvB,GAAIN,EAAiB,CACnB,MAAMO,EAAoBjhH,SAAS0D,cAAc,UACjDu9G,EAAkBvrH,MAAQ,IAC1BurH,EAAkB5nF,aAAa,UAAU,GACzC4nF,EAAkB5nF,aAAa,YAAY,GAC3ConF,EAAcjyD,QAAQyyD,GACtBD,EAAmB,KACjBC,EAAkBx+E,SAClBg+E,EAAc9jG,oBAAoB,QAASqkG,GAC3CA,EAAmB,MAErBP,EAAc/jG,iBAAiB,QAASskG,EAC1C,CACA,MAAM9nF,EAAWgoF,IACf,MAAM5pH,EAAO4pH,EAAW,QAAU,eAC5B,QACJ3pH,EAAO,SACPspH,GACEJ,EACJ,OAAKI,EAGE18G,MAAMrM,UAAU2I,OAAO1M,KAAKwD,EAASmiC,GAAUA,EAAOzgB,UAAUxb,IAAIi8B,GAAUA,EAAOpiC,KAFxD,IAA3BC,EAAQoiC,cAAuB,KAAOpiC,EAAQA,EAAQoiC,eAAeriC,IAIhF,IAAI6pH,EAAiBjoF,GAAS,GAC9B,MAAMkoF,EAAWvkG,IACf,MAAMtlB,EAAUslB,EAAM5nB,OAAOsC,QAC7B,OAAO4M,MAAMrM,UAAU2F,IAAI1J,KAAKwD,EAASmiC,IAAU,CACjDqnF,aAAcrnF,EAAOxB,YACrBihF,YAAaz/E,EAAOhkC,UAkJxB,OA/II9B,KAAK6gH,iBAAmB7gH,KAAK4yG,cAC/Bia,EAAc/jG,iBAAiB,oBAAqBi7F,IAClD,MAAMD,EAAU,CACd,KAAAhiH,CAAMmnB,GACJmkG,MACA,MAAMtrH,EAAQmnB,EAAMyzF,OAAO56G,MACrBgqC,EAAS,IAAIuM,IAAI9nC,MAAMS,QAAQlP,GAASA,EAAQ,CAACA,IACvD,IAAK,MAAMgkC,KAAU+mF,EAAclpH,QACjCmiC,EAAOzgB,SAAWymB,EAAOjkC,IAAIi+B,EAAOhkC,OAEtCqjC,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOwjC,GAAS,KAElBioF,EAAiBjoF,GAAS,EAC5B,EACA,iBAAAmoF,CAAkBxkG,GAChB4jG,EAAcI,UAAW,CAC3B,EACA,MAAAp+E,CAAO5lB,GACL,MAAMtlB,EAAUkpH,EAAclpH,QACxB4J,EAAQ0b,EAAMyzF,OAAO7tE,OAG3B,GAFAlrC,EAAQ4J,GAAO8X,UAAW,EAC1BwnG,EAAch+E,OAAOthC,GACjB5J,EAAQ7C,OAAS,EAAG,CACtB,MAAMmI,EAAIsH,MAAMrM,UAAUwpH,UAAUvtH,KAAKwD,EAASmiC,GAAUA,EAAOzgB,WACxD,IAAPpc,IACFtF,EAAQ,GAAG0hB,UAAW,EAE1B,CACA8f,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOwjC,GAAS,GAChBd,MAAOgpF,EAASvkG,KAElBskG,EAAiBjoF,GAAS,EAC5B,EACA,KAAA4b,CAAMj4B,GACJ,MAAgC,IAAzB4jG,EAAc/rH,OACnB+rH,EAAch+E,OAAO,GAEvB1J,EAAQI,SAASh2B,EAAI,CACnBzN,MAAO,KACP0iC,MAAO,KAET+oF,EAAiBjoF,GAAS,EAC5B,EACA,MAAAujC,CAAO5/C,GACL,MAAM,MACJ1b,EAAK,aACL4/G,EAAY,YACZ5H,GACEt8F,EAAMyzF,OAAO7zC,OACX8kD,EAAcd,EAAc/nF,SAASv3B,GACrC2/G,EAAgB9gH,SAAS0D,cAAc,UAC7Co9G,EAAc5oF,YAAc6oF,EAC5BD,EAAcprH,MAAQyjH,EAClBoI,EACFA,EAAYpwD,OAAO2vD,GAEnBL,EAAc9lF,OAAOmmF,GAEvB/nF,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOwjC,GAAS,GAChBd,MAAOgpF,EAASvkG,KAElBskG,EAAiBjoF,GAAS,EAC5B,EACA,KAAAd,CAAMvb,GACJ,MAAM,MACJub,GACEvb,EAAMyzF,OACV,MAAgC,IAAzBmQ,EAAc/rH,OACnB+rH,EAAch+E,OAAO,GAEvB,IAAK,MAAM1+B,KAAQq0B,EAAO,CACxB,MAAM,aACJ2oF,EAAY,YACZ5H,GACEp1G,EACE+8G,EAAgB9gH,SAAS0D,cAAc,UAC7Co9G,EAAc5oF,YAAc6oF,EAC5BD,EAAcprH,MAAQyjH,EACtBsH,EAAc9lF,OAAOmmF,EACvB,CACIL,EAAclpH,QAAQ7C,OAAS,IACjC+rH,EAAclpH,QAAQ,GAAG0hB,UAAW,GAEtC8f,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOwjC,GAAS,GAChBd,MAAOgpF,EAASvkG,KAElBskG,EAAiBjoF,GAAS,EAC5B,EACA,OAAAsoF,CAAQ3kG,GACN,MAAM2kG,EAAU,IAAIv1E,IAAIpvB,EAAMyzF,OAAOkR,SACrC,IAAK,MAAM9nF,KAAU7c,EAAM5nB,OAAOsC,QAChCmiC,EAAOzgB,SAAWuoG,EAAQ/lH,IAAIi+B,EAAOv4B,OAEvC43B,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOwjC,GAAS,KAElBioF,EAAiBjoF,GAAS,EAC5B,EACA,QAAAuoF,CAAS5kG,GACPA,EAAM5nB,OAAO+vD,UAAYnoC,EAAMyzF,OAAOmR,QACxC,GAEF7tH,KAAK6jH,0BAA0BC,EAASC,KAE1C8I,EAAc/jG,iBAAiB,QAASG,IACtC,MAAMs8F,EAAcjgF,GAAS,GACvB2mF,EAAS3mF,GAAS,GACxBH,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOyjH,IAETt8F,EAAMzD,iBACNxlB,KAAKimC,YAAYqZ,UAAU+E,SAAS,yBAA0B,CAC5DhgD,OAAQrE,KACR08G,OAAQ,CACNntG,KACA7L,KAAM,YACN5B,MAAOyrH,EACPtB,SACA6B,SAAUvI,EACVkG,YAAY,EACZlB,UAAW,EACXwD,SAAS,OAIf/tH,KAAK6oH,mBAAmBgE,EAAe,KAAM,CAAC,CAAC,QAAS,SAAU,CAAC,OAAQ,QAAS,CAAC,YAAa,cAAe,CAAC,aAAc,eAAgB,CAAC,aAAc,cAAe,CAAC,UAAW,YAAa,CAAC,QAAS,UAAW,CAAC,QAAS,aAAc5jG,GAASA,EAAM5nB,OAAOS,QAE1Q+qH,EAAc/jG,iBAAiB,QAAS,SAAUG,GAChDkc,EAAQI,SAASh2B,EAAI,CACnBzN,MAAOwjC,GAAS,IAEpB,GAEEtlC,KAAK4O,KAAKm+G,OACZ/sH,KAAKipH,cAAc4D,GAErB7sH,KAAKgpH,oBAAoB6D,GACzB7sH,KAAKikH,4BAA4B4I,GACjC7sH,KAAKmzC,UAAUpM,OAAO8lF,GACf7sH,KAAKmzC,SACd,EAEF,MAAMksE,WAA+Be,GACnC,WAAAp8G,CAAYwiC,GACV,MAAM,KACJ53B,EAAI,SACJo2G,EAAQ,OACR/gG,GACEuiB,EACE4Q,IAAsBnzB,EAAO+pG,gBAKnC,GAJA5zF,MAAMoM,EAAY,CAChB65E,cAAejpE,GAAqBgpE,GAAkBgB,cAAcxyG,KAEtE5O,KAAKglH,SAAWA,EACZ5tE,GAAqBgpE,GAAkBgB,cAAcxyG,GAAO,CAC9D,MAAMiwD,EAAQ7+D,KAAK6+D,MAAQ7+D,MAAK,KAChC,IAAK,MAAMklC,KAAW8/E,EACpB9/E,EAAQ25B,MAAQA,CAEpB,MACE7+D,KAAK6+D,MAAQ,IAEjB,CACA,MACE,OAAO,IAAIovD,GAAa,CACtB96E,UAAWnzC,KAAKmzC,UAChBhF,MAAOnuC,KAAK4O,KAAKu/B,MACjB22E,SAAU9kH,KAAK4O,KAAKk2G,SACpBnuD,iBAAkB32D,KAAK4O,KAAK+nD,kBAAoB32D,KAAK4O,KAAK8nD,aAC1D9L,YAAa5qD,KAAK4O,KAAKg8C,YACvBsI,SAAUlzD,KAAK4O,KAAKskD,SACpBn0B,KAAM/+B,KAAK4O,KAAKmwB,KAChBgmF,WAAY/kH,KAAK4O,KAAKm2G,YAAc,KACpC9gG,OAAQjkB,KAAKikB,OACb+gG,SAAUhlH,KAAKglH,SACf34G,KAAMrM,KAAK4O,KAAKvC,KAChBgzC,eAAgBr/C,KAAKikB,OAAO+pG,iBAEhC,CACA,MAAA5xG,GACE,MAAM,UACJ+2B,GACEnzC,KACJmzC,EAAU3pB,UAAUpF,IAAI,mBACxB+uB,EAAUipE,KAAO,UACjB,MAAMv9C,EAAQ7+D,KAAK6+D,MAAQ7+D,MAAK,KAC1BqqD,EAAa,GACnB,IAAK,MAAMnlB,KAAWllC,KAAKglH,SACzB9/E,EAAQ25B,MAAQA,EAChB35B,EAAQiO,UAAUwf,aAAe,SACjCtI,EAAWpgD,KAAKi7B,EAAQt2B,KAAKW,IAC7B21B,EAAQ2gF,mBAGV,OADA7lH,KAAKmzC,UAAU1N,aAAa,gBAAiB4kB,EAAWxgD,IAAI0F,GAAM,GAAGuzB,KAAmBvzB,KAAMlM,KAAK,MAC5FrD,KAAKmzC,SACd,EAEF,MAAM86E,GACJ,GAAkB,KAClB,IAAgBjuH,MAAK,GAASmG,KAAKnG,MACnC,IAAaA,MAAK,GAAMmG,KAAKnG,MAC7B,IAAaA,MAAK,GAAMmG,KAAKnG,MAC7B,IAAeA,MAAK,GAAQmG,KAAKnG,MACjC,IAAS,KACT,IAAa,KACb,IAAe,KACf,IAAW,KACX,IAAY,KACZ,IAAU,KACV,IAAc,KACd,KAAU,EACV,IAAS,KACT,IAAwB,KACxB,GAAY,KACZ,IAAiB,KACjB,IAAyB,KACzB,IAAiB,KACjB,IAAQ,KACR,IAAY,KACZ,IAAY,KACZ,IAAW,KACX,KAAc,EACd,IAAgB,KAChB,IAAe,KACf,WAAAgE,EAAY,UACVmvC,EAAS,MACThF,EAAK,SACL62E,EAAQ,SACRF,EAAQ,iBACRnuD,EAAgB,YAChB/L,EAAW,SACXsI,EAAQ,OACRjvC,EAAM,KACN8a,EAAI,WACJgmF,EAAU,KACV14G,EAAI,eACJgzC,EAAiB,OAEjBr/C,MAAK,GAAamzC,EAClBnzC,MAAK,GAAY8kH,EACjB9kH,MAAK,GAAe4qD,EACpB5qD,MAAK,GAAYkzD,EACjBlzD,MAAK,GAAUikB,EACfjkB,MAAK,GAASmuC,EACdnuC,MAAK,GAAQ++B,EACb/+B,MAAK,GAAc+kH,EACnB/kH,MAAK,GAAYglH,EACjBhlH,MAAK,EAAkBq/C,EACvBr/C,MAAK,GAAgBglH,EAAS,GAC9BhlH,MAAK,GAAWktC,GAAcC,aAAawpB,GAC3C32D,KAAKkuH,QAAUlJ,EAAS3/G,QAAQ+c,GAAKA,EAAEwjG,6BAClCvmE,IACHr/C,MAAK,KACLA,MAAK,GAAW0nC,QAAS,EACrBr7B,GACFrM,MAAK,KAGX,CACA,MACE,GAAIA,MAAK,GACP,OAEFA,MAAK,GAAwB,IAAI29C,gBACjC,MAAM,OACJrJ,GACEt0C,MAAK,GACT,IAAK,MAAMklC,KAAWllC,KAAKkuH,QACzBhpF,EAAQpc,iBAAiB,QAAS9oB,MAAK,GAAc,CACnDs0C,WAEFpP,EAAQpc,iBAAiB,eAAgB9oB,MAAK,GAAY,CACxDs0C,WAEFpP,EAAQpc,iBAAiB,eAAgB9oB,MAAK,GAAY,CACxDs0C,WAEFpP,EAAQ1b,UAAUpF,IAAI,oBAExB,IAAK,MAAM8gB,KAAWllC,MAAK,GACzBklC,EAAQiO,WAAWrqB,iBAAiB,UAAW9oB,MAAK,GAAe,CACjEs0C,UAGN,CACA,MACE,MAAMpP,EAAUllC,MAAK,GAAUyB,KAAK2gB,GAAKA,EAAEs/F,kBACtCx8E,IAGLllC,MAAK,GAAyBklC,EAAQ68E,gBAAgB78E,EAAQysB,uBAChE,CACA,mBAAAw8D,GACE,GAAInuH,MAAK,GAIP,YAHKA,MAAK,GAAeuxD,YACvBvxD,MAAK,GAAcmzC,UAAUi7E,MAAMpuH,MAAK,KAO5C,GAHKA,MAAK,IACRA,MAAK,MAEFA,MAAK,GACR,OAEF,MAAM,OACJs0C,GACEt0C,MAAK,GAAwB,IAAI29C,gBAC/B0wE,EAAeruH,MAAK,GAAcghH,oBAClCsN,EAAc,KAClBtuH,MAAK,EAAgByjD,mBAAmBzjD,MAAM,OAAMmE,GAAYkqH,IAE5DE,EAAY,KAChBvuH,MAAK,EAAgByjD,mBAAmBzjD,MAAM,GAAO,GAAOquH,IAExDG,EAAY,KAChBxuH,MAAK,EAAgByjD,mBAAmBzjD,MAAM,GAAO,IAEvD,GAAKquH,EAwBE,CACLruH,MAAK,GAAiBA,MAAK,GAAcmzC,UACzC,IAAK,MAAMjO,KAAWllC,KAAKkuH,QACzBhpF,EAAQytB,aAAe,SACvBztB,EAAQ0tB,aAAe,eACvB1tB,EAAQpc,iBAAiB,UAAW9oB,MAAK,GAAe,CACtDs0C,WAEFpP,EAAQpc,iBAAiB,QAASwlG,EAAa,CAC7Ch6E,WAEFpP,EAAQpc,iBAAiB,eAAgBylG,EAAW,CAClDj6E,WAEFpP,EAAQpc,iBAAiB,eAAgB0lG,EAAW,CAClDl6E,WAEFpP,EAAQ1b,UAAUpF,IAAI,mBAE1B,KA3CmB,CACjB,MAAMkxB,EAASt1C,MAAK,GAAiBoM,SAAS0D,cAAc,UAC5DwlC,EAAOpC,UAAY,0BACnB,MAAMu7E,EAAkBzuH,MAAK,GAAcmzC,UAC3CmC,EAAOvpC,MAAM4sD,OAAS81D,EAAgB1iH,MAAM4sD,OAAS,EACrDrjB,EAAOC,SAAW,EAClBD,EAAOqd,aAAe,SACtBrd,EAAOsd,aAAe,eACtBtd,EAAO7P,aAAa,eAAgB,6BACpCzlC,MAAK,KACLA,MAAK,KACLs1C,EAAOxsB,iBAAiB,UAAW9oB,MAAK,GAAe,CACrDs0C,WAEFgB,EAAOxsB,iBAAiB,QAASwlG,EAAa,CAC5Ch6E,WAEFgB,EAAOxsB,iBAAiB,eAAgBylG,EAAW,CACjDj6E,WAEFgB,EAAOxsB,iBAAiB,eAAgB0lG,EAAW,CACjDl6E,WAEFm6E,EAAgBL,MAAM94E,EACxB,CAoBF,CACA,MACE,GAAIt1C,MAAK,GAAcilH,oBAAsBjlH,MAAK,GAAc8zC,OAC9D,OAEG9zC,MAAK,IACRA,KAAKmuH,sBAEP,MAAOtnH,EAAG2X,GAAKxe,MAAK,IACd,MACJ+L,GACE/L,MAAK,GACT+L,EAAMqS,KAAO,QAAQvX,MACrBkF,EAAMwS,IAAM,QAAQC,iCACtB,CACA,MACMxe,MAAK,GAAcilH,oBAGlBjlH,MAAK,IACRA,KAAKmuH,sBAEPnuH,MAAK,GAAe+L,MAAM8lD,gBAAkB7xD,KAAK4xD,oBAAsB,GACzE,CACA,sBAAIA,GACF,MAAM,MACJzjB,EAAK,QACL3lB,GACExoB,MAAK,GAAcyhH,YACvB,OAAKtzE,EAGEnuC,MAAK,GAAQguH,gBAAgBtqE,iBAAiBvV,EAAO3lB,GAFnD,IAGX,CACA,kBAAAw1C,GACE/R,WAAW,KACTjsD,MAAK,IAAgBwkD,SACpB,EACL,CACA,OAAAnB,GACE,MAAM,SACJ6P,EAAQ,MACR/kB,EAAK,QACL3lB,EAAO,aACPkuC,EAAY,iBACZC,GACE32D,MAAK,GAAcyhH,YACvB,MAAO,CACL72D,YAAa,CACXtvB,IAAKt7B,KAAK61C,SAEZqd,WACA/kB,QACA3lB,UACAkuC,eACAC,mBAEJ,CACA,sBAAI+K,GACF,OAAO1hE,MAAK,EACd,CACA,WAAI61C,GAEF,OADA71C,MAAK,KAAiBA,MAAK,GAAcwhH,YAClCxhH,MAAK,EACd,CACA,WAAI61C,CAAQpN,GACNA,IAASzoC,KAAK61C,UAGlB71C,MAAK,GAAcwhH,YAAcxhH,MAAK,GAAeyoC,EACvD,CACA,KAAA+b,GACExkD,MAAK,GAAcmzC,WAAWqR,OAChC,CACA,4BAAIua,GACF,OAAO/+D,MAAK,GAAcihD,MAAMl3B,uBAClC,CACA,sBAAAwoC,EAAuB,SACrBltC,EAAQ,SACRmtC,IAEKxyD,MAAK,KAGVA,MAAK,GAAewpB,UAAUo7B,OAAO,WAAYv/B,GACjDrlB,MAAK,GAAeyyD,aAAeD,EACrC,CACA,wBAAA6L,CAAyBh5C,GACvBrlB,MAAK,GAAewpB,UAAUo7B,OAAO,WAAYv/B,EACnD,CACA,wBAAIo8C,GACF,GAAIzhE,MAAK,GACP,OAAOA,MAAK,GAEd,MAAM,EACJ6G,EAAC,EACD2X,EAAC,OACD9B,GACE1c,MAAK,GAAe+pB,yBAEtBljB,EAAGsrD,EACH3zC,EAAG4zC,EACH31C,MAAO0yC,EACPzyC,OAAQ0yC,GACNpvD,MAAK,GAAcihD,MAAMl3B,wBAC7B,MAAO,EAAEljB,EAAIsrD,GAAWhD,GAAc3wC,EAAI9B,EAAS01C,GAAWhD,EAChE,CACA,wBAAIqS,CAAqBtjC,GACvBn+B,MAAK,GAAiBm+B,CACxB,CACA,uBAAAk0B,GACE,OAA+B,OAAxBryD,MAAK,EACd,CACA,yBAAI2xD,GACF,OAAO3xD,MAAK,EACd,CACA,sBAAIgyD,GACF,OAAOhyD,MAAK,GAAe+pB,wBAAwBtN,MAAQzc,KAAK++D,yBAAyBtiD,KAC3F,CACA,WAAAmmC,CAAYj/C,GACV,MAAOk/C,EAAMC,GAAQ9iD,MAAK,IAAkBA,KAAK2xD,sBAAsB9nD,IAAIhD,GAAKA,EAAI,KAC9EksD,EAAmB/yD,KAAK++D,0BAE5Bl4D,EAAGsrD,EACH3zC,EAAG4zC,EACH31C,MAAO0yC,EACPzyC,OAAQ0yC,GACN2D,EACJ/yD,MAAK,EAAgB+iD,WAAW,KAAM/iD,KAAMmyD,EAAUtP,EAAOsM,EAAaiD,EAAUtP,EAAOsM,EAAc,IACpGzrD,EACHovD,oBAEJ,CACA,MAAA32C,GACE,GAAIpc,MAAK,GACP,OAEF,MAAM6+D,EAAQ7+D,MAAK,GAASoM,SAAS0D,cAAc,OAEnD,GADA+uD,EAAM3rB,UAAY,QACdlzC,MAAK,GAAQ,CACf,MAAMsyC,EAAYusB,EAAM9yD,MAAM2iH,aAAetxF,GAAKC,gBAAgBr9B,MAAK,IACvE6+D,EAAM9yD,MAAM8lD,gBAAkB,sBAAsBvf,eACtD,CACA,MAAMq8E,EAASviH,SAAS0D,cAAc,QAEtC,GADA6+G,EAAOz7E,UAAY,SACflzC,MAAK,IAAWs7B,IAAK,CACvB,MAAM0b,EAAQ5qC,SAAS0D,cAAc,QACrCknC,EAAM9D,UAAY,QAClBy7E,EAAO5nF,OAAOiQ,KAEZpxB,IAAKoxB,EAAMpxB,IACX0V,IAAK0b,EAAM1S,aACTtkC,MAAK,GACX,CAEA,GADA6+D,EAAM93B,OAAO4nF,GACT3uH,MAAK,GAAU,CACjB,MAAM22D,EAAmBvqD,SAAS0D,cAAc,QAChD6mD,EAAiBzjB,UAAY,YAC7ByjB,EAAiBlxB,aAAa,eAAgB,qCAC9CkxB,EAAiBlxB,aAAa,iBAAkBohB,KAAKC,UAAU,CAC7D8nE,QAAS5uH,MAAK,GAAS+Q,aAEzB4lD,EAAiBk4D,SAAW7uH,MAAK,GAASsrH,cAC1CqD,EAAO5nF,OAAO4vB,EAChB,CACA1jB,GAAe,CACbroC,KAAM5K,MAAK,IAASA,MAAK,GAAas7B,IACtC1V,IAAK5lB,MAAK,IAAc4lB,IACxBstB,UAAW,gBACV2rB,GACH7+D,MAAK,GAAW+mC,OAAO83B,EACzB,CACA,MAAI,GACF,MAAM3L,EAAWlzD,MAAK,GAChB4qD,EAAc5qD,MAAK,GACzB,OAAIkzD,GAAU53B,KAASsvB,GAAatvB,KAAOsvB,EAAYtvB,MAAQ43B,EAAS53B,IAGjE,KAFEt7B,MAAK,GAAU4K,MAAQ,IAGlC,CACA,MAAI,GACF,OAAO5K,MAAK,IAAO6kC,YAAY94B,OAAO+/E,UAAY,CACpD,CACA,MAAI,GACF,OAAO9rF,MAAK,IAAO6kC,YAAY94B,OAAOoiC,OAAS,IACjD,CACA,IAAkB1F,GAChB,MAAMqmF,EAAa,GACbC,EAAe,CACnBzzF,IAAKmN,EACL79B,KAAM,CACJlH,KAAM,MACNmhC,WAAY,CACVjf,IAAK,QAEPkf,SAAU,CAAC,CACTphC,KAAM,IACNohC,SAAUgqF,MAIVE,EAAiB,CACrBjjH,MAAO,CACLoiC,MAAOnuC,MAAK,GACZ8rF,SAAU9rF,MAAK,GAAY,QAAQA,MAAK,oCAA6C,KAGzF,IAAK,MAAMuzC,KAAQ9K,EAAKjlC,MAAM,MAC5BsrH,EAAW7kH,KAAK,CACdvG,KAAM,OACN5B,MAAOyxC,EACP1O,WAAYmqF,IAGhB,OAAOD,CACT,CACA,IAAS9lG,GACHA,EAAM4zB,QAAU5zB,EAAM+zB,UAAY/zB,EAAM6zB,SAAW7zB,EAAM8zB,UAG3C,UAAd9zB,EAAM7e,KAAiC,WAAd6e,EAAM7e,KAAoBpK,MAAK,KAC1DA,MAAK,IAET,CACA,YAAA6iE,EAAa,KACX9jC,EAAI,MACJ8/B,EAAK,QACLpU,IAEA,GAAIzqD,MAAK,EAiBP,OAhBIyqD,GACFzqD,KAAK6uC,SACL7uC,MAAK,GAAe,MACX6+D,IACLA,EAAMpU,QACRzqD,KAAK6uC,UAEL7uC,MAAK,KACLA,MAAK,GAAe6+D,EAAMp2B,YAG1B1J,IACF/+B,MAAK,GAAyB,KAC9BA,MAAK,KACLA,MAAK,OAILyqD,GAAWoU,GAAOpU,QACpBzqD,KAAK6uC,UAGP7uC,MAAK,KACLA,MAAK,KAAa,CAChB4qD,YAAa5qD,MAAK,GAClBkzD,SAAUlzD,MAAK,IAEb++B,IACF/+B,MAAK,EAAY,MAEf6+D,GAASA,EAAMp2B,OACjBzoC,MAAK,GAAYA,MAAK,GAAkB6+D,EAAMp2B,MAC9CzoC,MAAK,GAAWktC,GAAcC,aAAa0xB,EAAM1L,MACjDnzD,MAAK,GAAe,MAEtBA,MAAK,IAAQ6uC,SACb7uC,MAAK,GAAS,KAChB,CACA,WAAAmiH,GACOniH,MAAK,OAIR4qD,YAAa5qD,MAAK,GAClBkzD,SAAUlzD,MAAK,IACbA,MAAK,IACTA,MAAK,GAAW,KAChBA,MAAK,IAAQ6uC,SACb7uC,MAAK,GAAS,KACdA,MAAK,EAAY,KACnB,CACA,MAAA6uC,GASE,GARA7uC,MAAK,IAAuBghD,QAC5BhhD,MAAK,GAAwB,KAC7BA,MAAK,IAAQ6uC,SACb7uC,MAAK,GAAS,KACdA,MAAK,IAAc,EACnBA,MAAK,IAAU,EACfA,MAAK,IAAgB6uC,SACrB7uC,MAAK,GAAiB,KAClBA,KAAKkuH,QACP,IAAK,MAAMhpF,KAAWllC,KAAKkuH,QACzBhpF,EAAQ1b,UAAUqlB,OAAO,mBAG/B,CACA,MACE,GAAuB,OAAnB7uC,MAAK,EACP,OAEF,MACEgd,MAAM,KACJkvD,GAEFlpD,UACEgnB,SAAS,UACPjkB,EAAS,WACTC,EAAU,MACVkkB,EAAK,MACLC,KAGFnqC,MAAK,GACT,IAAIivH,IAAkBjvH,MAAK,GACvB++B,EAAOkwF,EAAgBjvH,MAAK,GAAcA,MAAK,GACnD,IAAK,MAAMklC,KAAWllC,MAAK,GACzB,IAAK++B,GAAoD,OAA5C3B,GAAKoD,UAAU0E,EAAQt2B,KAAKmwB,KAAMA,GAAgB,CAC7DA,EAAOmG,EAAQt2B,KAAKmwB,KACpBkwF,GAAgB,EAChB,KACF,CAEF,MAAMC,EAAiB9xF,GAAKmD,cAAc,CAACxB,EAAK,GAAImtC,EAAK,GAAKntC,EAAK,GAAKmtC,EAAK,GAAIntC,EAAK,GAAImtC,EAAK,GAAKntC,EAAK,GAAKmtC,EAAK,KAC7GijD,EAAoC,EACpChgE,EAAc8/D,EAAgBlwF,EAAK,GAAKA,EAAK,GAAKowF,EAAoC,EACtFC,EAAYF,EAAe,GAAK//D,EAChCkgE,EAAWH,EAAe,GAChClvH,MAAK,EAAY,CAAC,KAAOovH,EAAYllF,GAASnkB,EAAW,KAAOspG,EAAWllF,GAASnkB,GACpF,MAAM,MACJja,GACE/L,MAAK,GACT+L,EAAMqS,KAAO,GAAGpe,MAAK,EAAU,MAC/B+L,EAAMwS,IAAM,GAAGve,MAAK,EAAU,KAChC,CACA,MACMA,MAAK,EACPA,MAAK,EAAgByjD,mBAAmBzjD,MAAM,IAGhDA,MAAK,IAAWA,MAAK,GACjBA,MAAK,IACPA,MAAK,KACLA,MAAK,GAAW8oB,iBAAiB,QAAS9oB,MAAK,IAC/CA,MAAK,GAAW8oB,iBAAiB,UAAW9oB,MAAK,MAEjDA,MAAK,KACLA,MAAK,GAAW+oB,oBAAoB,QAAS/oB,MAAK,IAClDA,MAAK,GAAW+oB,oBAAoB,UAAW/oB,MAAK,KAExD,CACA,MACOA,MAAK,IACRA,KAAKoc,SAEFpc,KAAKk8F,UAICl8F,MAAK,IACdA,MAAK,GAAWwpB,UAAUpF,IAAI,YAJ9BpkB,MAAK,KACLA,MAAK,GAAW0nC,QAAS,EACzB1nC,MAAK,GAAW+L,MAAM4sD,OAASprB,SAASvtC,MAAK,GAAW+L,MAAM4sD,QAAU,IAI5E,CACA,MACE34D,MAAK,GAAWwpB,UAAUqlB,OAAO,YAC7B7uC,MAAK,IAAYA,KAAKk8F,YAG1Bl8F,MAAK,GAAW0nC,QAAS,EACzB1nC,MAAK,GAAW+L,MAAM4sD,OAASprB,SAASvtC,MAAK,GAAW+L,MAAM4sD,QAAU,IAC1E,CACA,SAAAgtD,GACE3lH,MAAK,GAAcA,KAAKk8F,UACnBl8F,MAAK,KAGVA,MAAK,GAAW0nC,QAAS,EAC3B,CACA,SAAAg+E,GACM1lH,MAAK,IAGTA,MAAK,KACAA,MAAK,KAGLA,MAAK,IACRA,MAAK,KAEPA,MAAK,IAAc,EACnBA,MAAK,GAAW0nC,QAAS,GAC3B,CACA,aAAIw0D,GACF,OAAIl8F,MAAK,IAGyB,IAA3BA,MAAK,GAAW0nC,MACzB,EAEF,MAAM43E,WAAkCc,GACtC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,IAEhBtgH,KAAKskC,YAAckC,EAAW53B,KAAK01B,YACnCtkC,KAAKsvH,aAAe9oF,EAAW53B,KAAK0gH,aACpCtvH,KAAKgmH,qBAAuBl5F,EAAqBE,QACnD,CACA,MAAA5Q,GAEE,GADApc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,sBACzBpkB,KAAKskC,YAAa,CACpB,MAAMj5B,EAAUrL,KAAKihH,eAAiB70G,SAAS0D,cAAc,OAC7DzE,EAAQme,UAAUpF,IAAI,yBACtB/Y,EAAQo6B,aAAa,OAAQ,WAC7B,IAAK,MAAM8N,KAAQvzC,KAAKskC,YAAa,CACnC,MAAMirF,EAAWnjH,SAAS0D,cAAc,QACxCy/G,EAASjrF,YAAciP,EACvBloC,EAAQ07B,OAAOwoF,EACjB,CACAvvH,KAAKmzC,UAAUpM,OAAO17B,EACxB,CAMA,OALKrL,KAAK4O,KAAK+7C,UAAY3qD,KAAKuhH,eAC9BvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEPliH,KAAK+lH,qBACE/lH,KAAKmzC,SACd,EAEF,MAAMosE,WAA8Ba,GAClC,IAAQ,KACR,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,GAElB,CACA,MAAAlkG,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,kBAC7B,MAAM,KACJxV,EAAI,MACJ6N,EAAK,OACLC,GACE1c,KACEs5C,EAAMt5C,KAAK2gH,WAAWl0G,OAAOgQ,EAAOC,GAAQ,GAC5C62B,EAAOvzC,MAAK,GAAQA,KAAK2gH,WAAW7wG,cAAc,YAcxD,OAbAyjC,EAAK9N,aAAa,KAAM72B,EAAKmwB,KAAK,GAAKnwB,EAAK4gH,gBAAgB,IAC5Dj8E,EAAK9N,aAAa,KAAM72B,EAAKmwB,KAAK,GAAKnwB,EAAK4gH,gBAAgB,IAC5Dj8E,EAAK9N,aAAa,KAAM72B,EAAKmwB,KAAK,GAAKnwB,EAAK4gH,gBAAgB,IAC5Dj8E,EAAK9N,aAAa,KAAM72B,EAAKmwB,KAAK,GAAKnwB,EAAK4gH,gBAAgB,IAC5Dj8E,EAAK9N,aAAa,eAAgB72B,EAAK4zG,YAAY/lG,OAAS,GAC5D82B,EAAK9N,aAAa,SAAU,eAC5B8N,EAAK9N,aAAa,OAAQ,eAC1B6T,EAAIvS,OAAOwM,GACXvzC,KAAKmzC,UAAUpM,OAAOuS,IACjB1qC,EAAK+7C,UAAY3qD,KAAKuhH,eACzBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEAliH,KAAKmzC,SACd,CACA,yBAAAyyE,GACE,OAAO5lH,MAAK,EACd,CACA,gBAAA6lH,GACE7lH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,gBAC/B,EAEF,MAAMo7F,WAAgCY,GACpC,IAAU,KACV,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,GAElB,CACA,MAAAlkG,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,oBAC7B,MAAM,KACJxV,EAAI,MACJ6N,EAAK,OACLC,GACE1c,KACEs5C,EAAMt5C,KAAK2gH,WAAWl0G,OAAOgQ,EAAOC,GAAQ,GAC5C+lG,EAAc7zG,EAAK4zG,YAAY/lG,MAC/BgzG,EAASzvH,MAAK,GAAUA,KAAK2gH,WAAW7wG,cAAc,YAc5D,OAbA2/G,EAAOhqF,aAAa,IAAKg9E,EAAc,GACvCgN,EAAOhqF,aAAa,IAAKg9E,EAAc,GACvCgN,EAAOhqF,aAAa,QAAShpB,EAAQgmG,GACrCgN,EAAOhqF,aAAa,SAAU/oB,EAAS+lG,GACvCgN,EAAOhqF,aAAa,eAAgBg9E,GAAe,GACnDgN,EAAOhqF,aAAa,SAAU,eAC9BgqF,EAAOhqF,aAAa,OAAQ,eAC5B6T,EAAIvS,OAAO0oF,GACXzvH,KAAKmzC,UAAUpM,OAAOuS,IACjB1qC,EAAK+7C,UAAY3qD,KAAKuhH,eACzBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEAliH,KAAKmzC,SACd,CACA,yBAAAyyE,GACE,OAAO5lH,MAAK,EACd,CACA,gBAAA6lH,GACE7lH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,gBAC/B,EAEF,MAAMq7F,WAAgCW,GACpC,IAAU,KACV,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,GAElB,CACA,MAAAlkG,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,oBAC7B,MAAM,KACJxV,EAAI,MACJ6N,EAAK,OACLC,GACE1c,KACEs5C,EAAMt5C,KAAK2gH,WAAWl0G,OAAOgQ,EAAOC,GAAQ,GAC5C+lG,EAAc7zG,EAAK4zG,YAAY/lG,MAC/BizG,EAAS1vH,MAAK,GAAUA,KAAK2gH,WAAW7wG,cAAc,eAc5D,OAbA4/G,EAAOjqF,aAAa,KAAMhpB,EAAQ,GAClCizG,EAAOjqF,aAAa,KAAM/oB,EAAS,GACnCgzG,EAAOjqF,aAAa,KAAMhpB,EAAQ,EAAIgmG,EAAc,GACpDiN,EAAOjqF,aAAa,KAAM/oB,EAAS,EAAI+lG,EAAc,GACrDiN,EAAOjqF,aAAa,eAAgBg9E,GAAe,GACnDiN,EAAOjqF,aAAa,SAAU,eAC9BiqF,EAAOjqF,aAAa,OAAQ,eAC5B6T,EAAIvS,OAAO2oF,GACX1vH,KAAKmzC,UAAUpM,OAAOuS,IACjB1qC,EAAK+7C,UAAY3qD,KAAKuhH,eACzBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEAliH,KAAKmzC,SACd,CACA,yBAAAyyE,GACE,OAAO5lH,MAAK,EACd,CACA,gBAAA6lH,GACE7lH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,gBAC/B,EAEF,MAAMs7F,WAAkCU,GACtC,IAAY,KACZ,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,IAEhBtgH,KAAK2vH,mBAAqB,qBAC1B3vH,KAAK4vH,eAAiB,cACxB,CACA,MAAAxzG,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAIpkB,KAAK2vH,oBAClC,MACE/gH,MAAM,KACJmwB,EAAI,SACJ8wF,EAAQ,YACRrN,EAAW,SACX73D,GACD,MACDluC,EAAK,OACLC,GACE1c,KACJ,IAAK6vH,EACH,OAAO7vH,KAAKmzC,UAEd,MAAMmG,EAAMt5C,KAAK2gH,WAAWl0G,OAAOgQ,EAAOC,GAAQ,GAClD,IAAIozG,EAAS,GACb,IAAK,IAAI7mH,EAAI,EAAG2hC,EAAKilF,EAAS/uH,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAAG,CACpD,MAAMpC,EAAIgpH,EAAS5mH,GAAK81B,EAAK,GACvBvgB,EAAIugB,EAAK,GAAK8wF,EAAS5mH,EAAI,GACjC6mH,EAAO7lH,KAAK,GAAGpD,KAAK2X,IACtB,CACAsxG,EAASA,EAAOzsH,KAAK,KACrB,MAAM0sH,EAAW/vH,MAAK,GAAYA,KAAK2gH,WAAW7wG,cAAc9P,KAAK4vH,gBAWrE,OAVAG,EAAStqF,aAAa,SAAUqqF,GAChCC,EAAStqF,aAAa,eAAgB+8E,EAAY/lG,OAAS,GAC3DszG,EAAStqF,aAAa,SAAU,eAChCsqF,EAAStqF,aAAa,OAAQ,eAC9B6T,EAAIvS,OAAOgpF,GACX/vH,KAAKmzC,UAAUpM,OAAOuS,IACjBqR,GAAY3qD,KAAKuhH,eACpBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEAliH,KAAKmzC,SACd,CACA,yBAAAyyE,GACE,OAAO5lH,MAAK,EACd,CACA,gBAAA6lH,GACE7lH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,gBAC/B,EAEF,MAAMy7F,WAAiCH,GACrC,WAAA17G,CAAYwiC,GACVpM,MAAMoM,GACNxmC,KAAK2vH,mBAAqB,oBAC1B3vH,KAAK4vH,eAAiB,aACxB,EAEF,MAAMjQ,WAA+BS,GACnC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,GAElB,CACA,MAAAlkG,GAME,OALApc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,oBACxBpkB,KAAK4O,KAAK+7C,UAAY3qD,KAAKuhH,eAC9BvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEAliH,KAAKmzC,SACd,EAEF,MAAMysE,WAA6BQ,GACjC,IAAyB,KACzB,IAAa,GACb,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,IAEhBtgH,KAAK2vH,mBAAqB,gBAC1B3vH,KAAK4vH,eAAiB,eACtB5vH,KAAKgmH,qBAAwC,iBAAjBhmH,KAAK4O,KAAK1O,GAAwB4sB,EAAqBG,UAAYH,EAAqBK,GACtH,CACA,IAAcmc,EAAUvK,GACtB,OAAQuK,GACN,KAAK,GACH,MAAO,CACL/gB,UAAW,yBAAyBwW,EAAK,MAAMA,EAAK,kBACpDtiB,MAAOsiB,EAAK,GAAKA,EAAK,GACtBriB,OAAQqiB,EAAK,GAAKA,EAAK,IAE3B,KAAK,IACH,MAAO,CACLxW,UAAW,0BAA0BwW,EAAK,MAAMA,EAAK,kBACrDtiB,MAAOsiB,EAAK,GAAKA,EAAK,GACtBriB,OAAQqiB,EAAK,GAAKA,EAAK,IAE3B,KAAK,IACH,MAAO,CACLxW,UAAW,0BAA0BwW,EAAK,MAAMA,EAAK,kBACrDtiB,MAAOsiB,EAAK,GAAKA,EAAK,GACtBriB,OAAQqiB,EAAK,GAAKA,EAAK,IAE3B,QACE,MAAO,CACLxW,UAAW,cAAcwW,EAAK,MAAMA,EAAK,kBACzCtiB,MAAOsiB,EAAK,GAAKA,EAAK,GACtBriB,OAAQqiB,EAAK,GAAKA,EAAK,IAG/B,CACA,MAAA3iB,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAIpkB,KAAK2vH,oBAClC,MACE/gH,MAAM,KACJmwB,EAAI,SACJuK,EAAQ,SACRu4E,EAAQ,YACRW,EAAW,SACX73D,IAEA3qD,MACE,UACJuoB,EAAS,MACT9L,EAAK,OACLC,GACE1c,MAAK,GAAcspC,EAAUvK,GAC3Bua,EAAMt5C,KAAK2gH,WAAWl0G,OAAOgQ,EAAOC,GAAQ,GAC5C6gB,EAAIv9B,MAAK,GAAyBA,KAAK2gH,WAAW7wG,cAAc,SACtEwpC,EAAIvS,OAAOxJ,GACXA,EAAEkI,aAAa,eAAgB+8E,EAAY/lG,OAAS,GACpD8gB,EAAEkI,aAAa,iBAAkB,SACjClI,EAAEkI,aAAa,kBAAmB,SAClClI,EAAEkI,aAAa,oBAAqB,IACpClI,EAAEkI,aAAa,SAAU,eACzBlI,EAAEkI,aAAa,OAAQ,eACvBlI,EAAEkI,aAAa,YAAald,GAC5B,IAAK,IAAItf,EAAI,EAAG2hC,EAAKi3E,EAAS/gH,OAAQmI,EAAI2hC,EAAI3hC,IAAK,CACjD,MAAM8mH,EAAW/vH,KAAK2gH,WAAW7wG,cAAc9P,KAAK4vH,gBACpD5vH,MAAK,GAAWiK,KAAK8lH,GACrBA,EAAStqF,aAAa,SAAUo8E,EAAS54G,GAAG5F,KAAK,MACjDk6B,EAAEwJ,OAAOgpF,EACX,CAOA,OANKplE,GAAY3qD,KAAKuhH,eACpBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEPliH,KAAKmzC,UAAUpM,OAAOuS,GACtBt5C,KAAK+lH,qBACE/lH,KAAKmzC,SACd,CACA,YAAA0vB,CAAa7V,GACX5yB,MAAMyoC,aAAa7V,GACnB,MAAM,UACJgjE,EAAS,OACTF,EAAM,KACN/wF,GACEiuB,EACEzvB,EAAIv9B,MAAK,GAIf,GAHIgwH,GAAa,GACfzyF,EAAEkI,aAAa,eAAgBuqF,GAAa,GAE1CF,EACF,IAAK,IAAI7mH,EAAI,EAAG2hC,EAAK5qC,MAAK,GAAWc,OAAQmI,EAAI2hC,EAAI3hC,IACnDjJ,MAAK,GAAWiJ,GAAGw8B,aAAa,SAAUqqF,EAAO7mH,GAAG5F,KAAK,MAG7D,GAAI07B,EAAM,CACR,MAAM,UACJxW,EAAS,MACT9L,EAAK,OACLC,GACE1c,MAAK,GAAcA,KAAK4O,KAAK06B,SAAUvK,GACrCt/B,EAAO89B,EAAE8nB,cACf5lD,EAAKgmC,aAAa,UAAW,OAAOhpB,KAASC,KAC7C6gB,EAAEkI,aAAa,YAAald,EAC9B,CACF,CACA,yBAAAq9F,GACE,OAAO5lH,MAAK,EACd,CACA,gBAAA6lH,GACE7lH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,gBAC/B,EAEF,MAAM07F,WAAmCM,GACvC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,EACdC,sBAAsB,IAExBvgH,KAAKgmH,qBAAuBl5F,EAAqBG,SACnD,CACA,MAAA7Q,GACE,MACExN,MAAM,aACJ43G,EAAY,SACZ77D,IAEA3qD,KAOJ,IANK2qD,GAAY3qD,KAAKuhH,eACpBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEPliH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,uBAC7BpkB,KAAK+lH,qBACDS,EAAc,CAChB,MAAMyJ,EAAO7jH,SAAS0D,cAAc,QACpCmgH,EAAKzmG,UAAUpF,IAAI,gBACnB6rG,EAAK3rF,YAAckiF,EACnBxmH,KAAKmzC,UAAUpM,OAAOkpF,EACxB,CACA,OAAOjwH,KAAKmzC,SACd,EAEF,MAAM4sE,WAAmCK,GACvC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAE1B,CACA,MAAAnkG,GACE,MACExN,MAAM,aACJ43G,EAAY,SACZ77D,IAEA3qD,KAMJ,IALK2qD,GAAY3qD,KAAKuhH,eACpBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEPliH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,uBACzBoiG,EAAc,CAChB,MAAM0J,EAAY9jH,SAAS0D,cAAc,KACzCogH,EAAU1mG,UAAUpF,IAAI,gBACxB8rG,EAAU5rF,YAAckiF,EACxBxmH,KAAKmzC,UAAUpM,OAAOmpF,EACxB,CACA,OAAOlwH,KAAKmzC,SACd,EAEF,MAAM6sE,WAAkCI,GACtC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAE1B,CACA,MAAAnkG,GACE,MACExN,MAAM,aACJ43G,EAAY,SACZ77D,IAEA3qD,KAMJ,IALK2qD,GAAY3qD,KAAKuhH,eACpBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEPliH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,sBACzBoiG,EAAc,CAChB,MAAM0J,EAAY9jH,SAAS0D,cAAc,KACzCogH,EAAU1mG,UAAUpF,IAAI,gBACxB8rG,EAAU5rF,YAAckiF,EACxBxmH,KAAKmzC,UAAUpM,OAAOmpF,EACxB,CACA,OAAOlwH,KAAKmzC,SACd,EAEF,MAAM8sE,WAAmCG,GACvC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAE1B,CACA,MAAAnkG,GACE,MACExN,MAAM,aACJ43G,EAAY,SACZ77D,IAEA3qD,KAMJ,IALK2qD,GAAY3qD,KAAKuhH,eACpBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEPliH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,uBACzBoiG,EAAc,CAChB,MAAM2J,EAAY/jH,SAAS0D,cAAc,KACzCqgH,EAAU3mG,UAAUpF,IAAI,gBACxB+rG,EAAU7rF,YAAckiF,EACxBxmH,KAAKmzC,UAAUpM,OAAOopF,EACxB,CACA,OAAOnwH,KAAKmzC,SACd,EAEF,MAAM+sE,WAA+BE,GACnC,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,EACdC,cAAc,IAEhBtgH,KAAKgmH,qBAAuBl5F,EAAqBI,KACnD,CACA,MAAA9Q,GAQE,OAPApc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,mBAC7BpkB,KAAKmzC,UAAU1N,aAAa,OAAQ,QAC/BzlC,KAAK4O,KAAK+7C,UAAY3qD,KAAKuhH,eAC9BvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAEPliH,KAAK+lH,qBACE/lH,KAAKmzC,SACd,EAEF,MAAMgtE,WAAwCC,GAC5C,IAAW,KACX,WAAAp8G,CAAYwiC,GACVpM,MAAMoM,EAAY,CAChB65E,cAAc,IAEhB,MAAM,KACJpmE,GACEj6C,KAAK4O,KACT5O,KAAKgrC,SAAWiP,EAAKjP,SACrBhrC,KAAKqL,QAAU4uC,EAAK5uC,QACpBrL,KAAKimC,YAAYqZ,UAAU+E,SAAS,2BAA4B,CAC9DhgD,OAAQrE,QACLi6C,GAEP,CACA,MAAA79B,GACEpc,KAAKmzC,UAAU3pB,UAAUpF,IAAI,4BAC7B,MAAM,UACJ+uB,EAAS,KACTvkC,GACE5O,KACJ,IAAIkuH,EACAt/G,EAAKg7G,eAAoC,IAAnBh7G,EAAKg+E,UAC7BshC,EAAU9hH,SAAS0D,cAAc,QAEjCo+G,EAAU9hH,SAAS0D,cAAc,OACjCo+G,EAAQhiH,IAAM,GAAGlM,KAAKygH,gCAAgC,aAAav6G,KAAK0I,EAAKlL,MAAQ,YAAc,gBAC/FkL,EAAKg+E,WAAah+E,EAAKg+E,UAAY,IACrCshC,EAAQniH,MAAQ,mBAAmBrF,KAAK6qC,MAAuB,IAAjB3iC,EAAKg+E,kBAGvDshC,EAAQplG,iBAAiB,WAAY9oB,MAAK,GAAUmG,KAAKnG,OACzDA,MAAK,GAAWkuH,EAChB,MAAM,MACJvxF,GACEZ,GAAiBS,SAarB,OAZA2W,EAAUrqB,iBAAiB,UAAWy3B,IACpB,UAAZA,EAAIn2C,MAAoBuyB,EAAQ4jB,EAAIxD,QAAUwD,EAAIzD,UACpD98C,MAAK,QAGJ4O,EAAK+7C,UAAY3qD,KAAKuhH,cACzBvhH,KAAKghH,qBAAsB,EAC3BhhH,KAAKkiH,gBAELgM,EAAQ1kG,UAAUpF,IAAI,oBAExB+uB,EAAUpM,OAAOmnF,GACV/6E,CACT,CACA,yBAAAyyE,GACE,OAAO5lH,MAAK,EACd,CACA,gBAAA6lH,GACE7lH,KAAKmzC,UAAU3pB,UAAUpF,IAAI,gBAC/B,CACA,MACEpkB,KAAKwgH,iBAAiB8G,mBAAmBtnH,KAAKqL,QAASrL,KAAKgrC,SAC9D,EAEF,MAAMolF,GACJ,IAAwB,KACxB,IAAuB,KACvB,GAAqB,KACrB,IAAuB,IAAI9qH,IAC3B,IAAmB,KACnB,IAAe,KACf,IAAY,GACZ,KAAmC,EACnC,WAAAtB,EAAY,IACV8iC,EAAG,qBACHupF,EAAoB,oBACpBhgC,EAAmB,0BACnBigC,EAAyB,KACzBtzG,EAAI,SACJgG,EAAQ,gBACRutG,EAAe,eACflxE,EAAc,YACdpZ,EAAW,kBACXQ,IAEAzmC,KAAK8mC,IAAMA,EACX9mC,MAAK,GAAwBqwH,EAC7BrwH,MAAK,GAAuBqwF,EAC5BrwF,MAAK,GAAmBuwH,GAAmB,KAC3CvwH,MAAK,GAAeimC,GAAe,KACnCjmC,MAAK,EAAqBymC,GAAqB,IAAI09B,GACnDnkE,KAAKgd,KAAOA,EACZhd,KAAKgjB,SAAWA,EAChBhjB,KAAK24D,OAAS,EACd34D,KAAKwwH,2BAA6BF,EAClCtwH,KAAKguH,gBAAkB3uE,GAAkB,IAC3C,CACA,sBAAAoxE,GACE,OAAOzwH,MAAK,GAAqB6rC,KAAO,CAC1C,CACA,YAAMzvB,CAAO4wC,GACX,MAAM,YACJ0jE,GACE1jE,EACE/L,EAAQjhD,KAAK8mC,IACnBqI,GAAmB8R,EAAOjhD,KAAKgjB,UAC/B,MAAM2tG,EAAkB,IAAIrrH,IACtBsrH,EAAmB,GACnBC,EAAgB,CACpBjiH,KAAM,KACNqyC,QACAhb,YAAajmC,MAAK,GAClBwgH,gBAAiBxzD,EAAOwzD,gBACxBC,mBAAoBzzD,EAAOyzD,oBAAsB,GACjDC,aAAoC,IAAvB1zD,EAAO0zD,YACpBC,WAAY,IAAIxC,GAChB13E,kBAAmBzmC,MAAK,EACxB4gH,eAAwC,IAAzB5zD,EAAO4zD,cACtBC,iBAA4C,IAA3B7zD,EAAO6zD,gBACxBjO,aAAc5lD,EAAO4lD,aACrBmO,aAAc/zD,EAAO+zD,aACrB98F,OAAQjkB,KACRglH,SAAU,MAEZ,IAAK,MAAMp2G,KAAQ8hH,EAAa,CAC9B,GAAI9hH,EAAKkiH,OACP,SAEF,MAAMC,EAAoBniH,EAAKqyD,iBAAmBjxC,EAAe5C,MACjE,GAAK2jG,EAIE,CACL,MAAM/L,EAAW2L,EAAgB9tH,IAAI+L,EAAKW,IAC1C,IAAKy1G,EACH,SAEF,IAAKhlH,KAAKguH,gBAAiB,CACzB4C,EAAiB3mH,KAAK2E,GACtB,QACF,CACAiiH,EAAc7L,SAAWA,CAC3B,MAbE,GAAIp2G,EAAKmwB,KAAK,KAAOnwB,EAAKmwB,KAAK,IAAMnwB,EAAKmwB,KAAK,KAAOnwB,EAAKmwB,KAAK,GAC9D,SAaJ8xF,EAAcjiH,KAAOA,EACrB,MAAMs2B,EAAUs5E,GAAyB/xG,OAAOokH,GAChD,IAAK3rF,EAAQm7E,aACX,SAEF,IAAK0Q,IACH/wH,MAAK,GAAUiK,KAAKi7B,GAChBt2B,EAAK+7C,UAAU,CACjB,MAAMq6D,EAAW2L,EAAgB9tH,IAAI+L,EAAK+7C,UACrCq6D,EAGHA,EAAS/6G,KAAKi7B,GAFdyrF,EAAgB/oH,IAAIgH,EAAK+7C,SAAU,CAACzlB,GAIxC,CAEF,MAAM8rF,EAAW9rF,EAAQ9oB,SACrBxN,EAAK84B,SACPspF,EAASjlH,MAAMyiC,WAAa,UAE1BtJ,EAAQm8E,cACVrhH,MAAK,GAAqB4H,IAAIs9B,EAAQt2B,KAAKW,GAAI21B,GAC/CllC,KAAKwwH,4BAA4B/gE,wBAAwBvqB,GAE7D,OACMllC,MAAK,KACX,IAAK,MAAM4O,KAAQgiH,EAAkB,CACnC,MAAM5L,EAAW6L,EAAc7L,SAAW2L,EAAgB9tH,IAAI+L,EAAKW,IACnEshH,EAAcjiH,KAAOA,EACrB,MAAMs2B,EAAUs5E,GAAyB/xG,OAAOokH,GAChD,IAAK3rF,EAAQm7E,aACX,SAEF,MAAM2Q,EAAW9rF,EAAQ9oB,SACzB8oB,EAAQ+7E,eAAe1xG,GAAK,GAAGuzB,KAAmBl0B,EAAKW,KACnDX,EAAK84B,SACPspF,EAASjlH,MAAMyiC,WAAa,UAE9Bw2E,EAAS79E,IAAI,GAAGgM,UAAUi7E,MAAM4C,EAClC,CACAhxH,MAAK,IACP,CACA,QAAM,GACJ,GAA8B,IAA1BA,MAAK,GAAUc,OACjB,OAEFd,KAAK8mC,IAAImqF,kBACT,MAAMrlE,EAAW,GACjB,IAAK5rD,MAAK,GAAkC,CAC1CA,MAAK,IAAmC,EACxC,IAAK,MAAM,eACTihH,EACAryG,MAAM,GACJW,MAECvP,MAAK,GAAW,CACnB,MAAMumD,EAAe06D,EAAe1xG,GAAK,GAAGuzB,KAAmBvzB,IAC/Dq8C,EAAS3hD,KAAKjK,MAAK,IAAkBkxH,kBAAkB3qE,GAAc7M,KAAKy3E,IACxE,GAAIA,EACF,IAAK,MAAO/mH,EAAKtI,KAAUqvH,EACzBlQ,EAAex7E,aAAar7B,EAAKtI,KAIzC,CACF,CACA9B,MAAK,GAAUoxH,KAAK,EAClBxiH,MACEmwB,MAAOM,EAAIE,EAAID,EAAIE,MAGrB5wB,MACEmwB,MAAOU,EAAIE,EAAID,EAAIE,QAGrB,GAAIP,IAAOC,GAAMC,IAAOC,EACtB,OAAO,EAET,GAAIC,IAAOC,GAAMC,IAAOC,EACtB,OAAQ,EAEV,MAAMyxF,EAAO7xF,EACP8xF,EAAO/xF,EACPgyF,GAAQhyF,EAAKC,GAAM,EACnBgyF,EAAO5xF,EACP6xF,EAAO9xF,EACP+xF,GAAQ/xF,EAAKC,GAAM,EACzB,GAAI2xF,GAAQC,GAAQE,GAAQJ,EAC1B,OAAQ,EAEV,GAAII,GAAQL,GAAQE,GAAQE,EAC1B,OAAO,EAET,MAAME,GAAYtyF,EAAKC,GAAM,EACvBsyF,GAAYnyF,EAAKC,GAAM,EAC7B,OAAOiyF,EAAWC,IAEpB,MAAMx+E,EAAWhnC,SAASinC,yBAC1B,IAAK,MAAMnO,KAAWllC,MAAK,GACzBozC,EAASrM,OAAO7B,EAAQiO,WACpBnzC,KAAKguH,iBACN9oF,EAAQ+/E,mBAAmBpmD,OAAS35B,EAAQ25B,QAAQsvD,sBAC5CjpF,EAAQ+/E,mBACjB7xE,EAASrM,OAAO7B,EAAQ+/E,kBAAkB7oG,UAK9C,GAFApc,KAAK8mC,IAAIC,OAAOqM,SACV7xB,QAAQ7O,IAAIk5C,GACd5rD,MAAK,GACP,IAAK,MAAMklC,KAAWllC,MAAK,GACzBA,MAAK,GAAsB6xH,sBAAsB3sF,EAAQ+7E,gBAAgB,EAG/E,CACA,wBAAM6Q,CAAmBpB,GACvB,MAAMG,EAAgB,CACpBjiH,KAAM,KACNqyC,MAAOjhD,KAAK8mC,IACZb,YAAajmC,MAAK,GAClB2gH,WAAY,IAAIxC,GAChBl6F,OAAQjkB,MAEV,IAAK,MAAM4O,KAAQ8hH,EAAa,CAC9B9hH,EAAK4zG,cAAgB4N,GAAgB2B,oBACrClB,EAAcjiH,KAAOA,EACrB,MAAMs2B,EAAUs5E,GAAyB/xG,OAAOokH,GAC3C3rF,EAAQm7E,eAGbn7E,EAAQ9oB,SACR8oB,EAAQ+7E,eAAe1xG,GAAK,GAAGuzB,KAAmBl0B,EAAKW,KACvDvP,MAAK,GAAUiK,KAAKi7B,GACtB,OACMllC,MAAK,IACb,CACA,MAAAynC,EAAO,SACLzkB,IAEA,MAAMi+B,EAAQjhD,KAAK8mC,IACnB9mC,KAAKgjB,SAAWA,EAChBmsB,GAAmB8R,EAAO,CACxB3X,SAAUtmB,EAASsmB,WAErBtpC,MAAK,KACLihD,EAAMvZ,QAAS,CACjB,CACA,MACE,IAAK1nC,MAAK,GACR,OAEF,MAAMihD,EAAQjhD,KAAK8mC,IACnB,IAAK,MAAOv3B,EAAIkT,KAAWziB,MAAK,GAAsB,CACpD,MAAMklC,EAAU+b,EAAMn3B,cAAc,wBAAwBva,OAC5D,IAAK21B,EACH,SAEFziB,EAAOywB,UAAY,oBACnB,MAAM,WACJ8+E,GACE9sF,EACC8sF,EAE8B,WAAxBA,EAAW1vD,SACpB0vD,EAAWC,YAAYxvG,GACbuvG,EAAWxoG,UAAUD,SAAS,qBAGxCyoG,EAAW5D,MAAM3rG,GAFjBuvG,EAAWz0D,OAAO96C,GAJlByiB,EAAQ6B,OAAOtkB,GAQjB,MAAMyvG,EAAqBlyH,MAAK,GAAqB6C,IAAI0M,GACpD2iH,IAGDA,EAAmBC,cACrBnyH,KAAKwwH,4BAA4B5gE,iBAAiBrgD,EAAI21B,EAAQ31B,GAAIkT,GAClEyvG,EAAmBC,cAAe,GAElCD,EAAmBzvG,OAASA,EAEhC,CACAziB,MAAK,GAAqBkhD,OAC5B,CACA,sBAAAkxE,GACE,OAAO7hH,MAAM2sB,KAAKl9B,MAAK,GAAqB8rC,SAC9C,CACA,qBAAAumF,CAAsB9iH,GACpB,OAAOvP,MAAK,GAAqB6C,IAAI0M,EACvC,CACA,iBAAAuzD,CAAkBhvB,GAChB,MAAM,IACJhN,GACE9mC,MACE,GACJuP,EAAE,SACF+5B,GACEwK,EACE5O,EAAU,IAAI+gF,GAAwB,CAC1Cr3G,KAAM,CACJW,KACAwvB,KAAM+U,EAAOssB,aACb92B,YAEFwK,SACAmN,MAAOna,EACP7iB,OAAQjkB,KACR4gH,gBAAiB5gH,KAAKguH,gBACtB/nF,YAAajmC,MAAK,GAClBymC,kBAAmBzmC,MAAK,IAM1B,OAJAklC,EAAQ9oB,SACR8oB,EAAQ+7E,eAAe1xG,GAAK,GAAGuzB,KAAmBvzB,IAClD21B,EAAQghF,sBACRlmH,MAAK,GAAUiK,KAAKi7B,GACbA,CACT,CACA,gBAAAihF,CAAiB52G,GACf,MAAMhC,EAAQvN,MAAK,GAAU0tH,UAAUpyG,GAAMA,EAAG1M,KAAKW,KAAOA,GAC5D,GAAIhC,EAAQ,EACV,OAEF,MAAO23B,GAAWllC,MAAK,GAAUm8C,OAAO5uC,EAAO,GAC/CvN,MAAK,IAAuBsyH,yBAAyBptF,EAAQ+7E,eAC/D,CACA,qBAAAsR,CAAsBpqE,GACpB,GAAuB,IAAnBA,EAAQrnD,OAAZ,CAGA,IAAK,MAAMgzC,KAAUqU,EACnBrU,EAAO6uB,4BAA4B3iE,MAErCA,MAAK,IAJL,CAKF,CACA,mBAAA86D,CAAoB3J,GAAU,GAC5BnxD,KAAK8mC,IAAItd,UAAUo7B,OAAO,YAAauM,EACzC,CACA,8BAAW4gE,GACT,OAAOj4F,EAAO95B,KAAM,sBAAuBiD,OAAO8wC,OAAO,CACvDt3B,MAAO,EACP+1G,SAAU,EACVzmH,MAAOulB,EAA0BC,MACjCojE,UAAW,CAAC,GACZguB,uBAAwB,EACxBE,qBAAsB,IAE1B,EASF,MAAM4P,GAAc,YACpB,MAAMC,WAAuB98D,GAC3B,IAAW,GACX,IAAe,GAAG51D,KAAKuP,YACvB,IAAc,KACd,IACAojH,aAAe,KACf9qF,+BAAiC,GACjCA,wBAA0B,EAC1BA,qBAAuB,KACvBA,wBAA0B,GAC1B,2BAAWoW,GACT,MAAM38C,EAAQoxH,GAAexuH,UACvBg6C,EAAen+C,GAAQA,EAAK+9C,UAC5BU,EAAQd,GAA0Be,gBAClCC,EAAMhB,GAA0BiB,cACtC,OAAO7kB,EAAO95B,KAAM,mBAAoB,IAAIw8C,GAAgB,CAAC,CAAC,CAAC,SAAU,aAAc,SAAU,cAAel7C,EAAMyjD,eAAgB,CACpI9H,SAAS,IACP,CAAC,CAAC,aAAc,iBAAkB,SAAU,cAAe37C,EAAMyjD,gBAAiB,CAAC,CAAC,YAAa,iBAAkBzjD,EAAMsxH,gBAAiB,CAC5IxvF,KAAM,EAAEob,EAAO,GACftB,QAASgB,IACP,CAAC,CAAC,iBAAkB,uBAAwB58C,EAAMsxH,gBAAiB,CACrExvF,KAAM,EAAEsb,EAAK,GACbxB,QAASgB,IACP,CAAC,CAAC,aAAc,kBAAmB58C,EAAMsxH,gBAAiB,CAC5DxvF,KAAM,CAACob,EAAO,GACdtB,QAASgB,IACP,CAAC,CAAC,kBAAmB,wBAAyB58C,EAAMsxH,gBAAiB,CACvExvF,KAAM,CAACsb,EAAK,GACZxB,QAASgB,IACP,CAAC,CAAC,UAAW,eAAgB58C,EAAMsxH,gBAAiB,CACtDxvF,KAAM,CAAC,GAAIob,GACXtB,QAASgB,IACP,CAAC,CAAC,eAAgB,qBAAsB58C,EAAMsxH,gBAAiB,CACjExvF,KAAM,CAAC,GAAIsb,GACXxB,QAASgB,IACP,CAAC,CAAC,YAAa,iBAAkB58C,EAAMsxH,gBAAiB,CAC1DxvF,KAAM,CAAC,EAAGob,GACVtB,QAASgB,IACP,CAAC,CAAC,iBAAkB,uBAAwB58C,EAAMsxH,gBAAiB,CACrExvF,KAAM,CAAC,EAAGsb,GACVxB,QAASgB,MAEb,CACArW,aAAe,WACfA,mBAAqB/a,EAAqBE,SAC1C,WAAAhpB,CAAYgpD,GACV5yB,MAAM,IACD4yB,EACHtpD,KAAM,mBAER1D,KAAKmuC,MAAQ6e,EAAO7e,OAASukF,GAAeG,eAAiBj9D,GAAiBuB,kBAC9En3D,MAAK,GAAYgtD,EAAO8+B,UAAY4mC,GAAeI,iBAC9C9yH,KAAKuqD,qBACRvqD,KAAKu0C,WAAWoS,UAAU,qCAE5B3mD,KAAK42D,eAAgB,CACvB,CACA,iBAAO1G,CAAWC,EAAMhZ,GACtBye,GAAiB1F,WAAWC,EAAMhZ,GAClC,MAAMprC,EAAQ6iC,iBAAiBxiC,SAAS6rD,iBACxCj4D,KAAK+yH,iBAAmB76D,WAAWnsD,EAAMosD,iBAAiB,sBAC5D,CACA,0BAAO9M,CAAoB5iD,EAAM3G,GAC/B,OAAQ2G,GACN,KAAK8kB,EAA2BG,cAC9BglG,GAAeI,iBAAmBhxH,EAClC,MACF,KAAKyrB,EAA2BI,eAC9B+kG,GAAeG,cAAgB/wH,EAC/B,MAEN,CACA,YAAA0+C,CAAa/3C,EAAM3G,GACjB,OAAQ2G,GACN,KAAK8kB,EAA2BG,cAC9B1tB,MAAK,GAAgB8B,GACrB,MACF,KAAKyrB,EAA2BI,eAC9B3tB,MAAK,GAAa8B,GAClB,MAEN,CACA,oCAAWmnD,GACT,MAAO,CAAC,CAAC17B,EAA2BG,cAAeglG,GAAeI,kBAAmB,CAACvlG,EAA2BI,eAAgB+kG,GAAeG,eAAiBj9D,GAAiBuB,mBACpL,CACA,sBAAI1K,GACF,MAAO,CAAC,CAACl/B,EAA2BG,cAAe1tB,MAAK,IAAY,CAACutB,EAA2BI,eAAgB3tB,KAAKmuC,OACvH,CACA,kBAAI4uB,GAEF,OADA/8D,KAAK2yH,eAAiB,IAAIhW,GAAiB38G,MACpC,CAAC,CAAC,cAAeA,KAAK2yH,cAC/B,CACA,aAAI/V,GACF,OAAOrvF,EAA2BI,cACpC,CACA,IAAgBm+D,GACd,MAAMknC,EAAcnnF,IAClB7rC,KAAKizH,UAAUlnH,MAAM+/E,SAAW,QAAQjgD,mCACxC7rC,KAAK05D,UAAU,IAAK7tB,EAAO7rC,MAAK,IAAaA,KAAKw6D,aAClDx6D,MAAK,GAAY6rC,EACjB7rC,MAAK,MAEDkzH,EAAgBlzH,MAAK,GAC3BA,KAAK4oD,YAAY,CACf/M,IAAKm3E,EAAY7sH,KAAKnG,KAAM8rF,GAC5BhwC,KAAMk3E,EAAY7sH,KAAKnG,KAAMkzH,GAC7Bn3E,KAAM/7C,KAAKu0C,WAAWoY,SAASxmD,KAAKnG,KAAKu0C,WAAYv0C,MACrDg8C,UAAU,EACVvzC,KAAM8kB,EAA2BG,cACjCuuB,qBAAqB,EACrBC,UAAU,GAEd,CACA,cAAA6V,GACE/xD,KAAKizH,UAAUlnH,MAAMoiC,MAAQnuC,KAAKmuC,MAClCnuC,KAAK2yH,cAAclrF,OAAOznC,KAAKmuC,OAC/B/T,MAAM23B,gBACR,CACA,IAAa5jB,GACX,MAAMg1E,EAAWgQ,IACfnzH,KAAKmuC,MAAQglF,EACbnzH,KAAK+xD,kBAEDqhE,EAAapzH,KAAKmuC,MACxBnuC,KAAK4oD,YAAY,CACf/M,IAAKsnE,EAASh9G,KAAKnG,KAAMmuC,GACzB2N,KAAMqnE,EAASh9G,KAAKnG,KAAMozH,GAC1Br3E,KAAM/7C,KAAKu0C,WAAWoY,SAASxmD,KAAKnG,KAAKu0C,WAAYv0C,MACrDg8C,UAAU,EACVvzC,KAAM8kB,EAA2BI,eACjCsuB,qBAAqB,EACrBC,UAAU,GAEd,CACA,eAAA02E,CAAgB/rH,EAAG2X,GACjBxe,KAAKu0C,WAAW0K,yBAAyBp4C,EAAG2X,GAAG,EACjD,CACA,qBAAAk8C,GACE,MAAM/8C,EAAQ3d,KAAKw6D,YACnB,MAAO,EAAEk4D,GAAeK,iBAAmBp1G,IAAS+0G,GAAeK,iBAAmB/yH,MAAK,IAAa2d,EAC1G,CACA,OAAA6wC,GACOxuD,KAAKikB,SAGVmW,MAAMo0B,UACW,OAAbxuD,KAAK8mC,MAGJ9mC,KAAKg3D,iBACRh3D,KAAKikB,OAAOG,IAAIpkB,OAEpB,CACA,cAAAsgE,GACE,IAAKlmC,MAAMkmC,iBACT,OAAO,EAETtgE,KAAKqzH,WAAW7pG,UAAUqlB,OAAO,WACjC7uC,KAAKizH,UAAUK,iBAAkB,EACjCtzH,KAAKs4D,cAAe,EACpBt4D,KAAK8mC,IAAInB,gBAAgB,yBACzB3lC,MAAK,GAAc,IAAI29C,gBACvB,MAAMrJ,EAASt0C,KAAKu0C,WAAW6M,eAAephD,MAAK,IAgBnD,OAfAA,KAAKizH,UAAUnqG,iBAAiB,UAAW9oB,KAAKuzH,iBAAiBptH,KAAKnG,MAAO,CAC3Es0C,WAEFt0C,KAAKizH,UAAUnqG,iBAAiB,QAAS9oB,KAAKwzH,eAAertH,KAAKnG,MAAO,CACvEs0C,WAEFt0C,KAAKizH,UAAUnqG,iBAAiB,OAAQ9oB,KAAKyzH,cAActtH,KAAKnG,MAAO,CACrEs0C,WAEFt0C,KAAKizH,UAAUnqG,iBAAiB,QAAS9oB,KAAK0zH,eAAevtH,KAAKnG,MAAO,CACvEs0C,WAEFt0C,KAAKizH,UAAUnqG,iBAAiB,QAAS9oB,KAAK2zH,eAAextH,KAAKnG,MAAO,CACvEs0C,YAEK,CACT,CACA,eAAAisB,GACE,QAAKnmC,MAAMmmC,oBAGXvgE,KAAKqzH,WAAW7pG,UAAUpF,IAAI,WAC9BpkB,KAAKizH,UAAUK,iBAAkB,EACjCtzH,KAAK8mC,IAAIrB,aAAa,wBAAyBzlC,MAAK,IACpDA,KAAKs4D,cAAe,EACpBt4D,MAAK,IAAaghD,QAClBhhD,MAAK,GAAc,KACnBA,KAAK8mC,IAAI0d,MAAM,CACbyd,eAAe,IAEjBjiE,KAAK69C,WAAY,EACjB79C,KAAKikB,OAAO6iB,IAAItd,UAAUpF,IAAI,oBACvB,EACT,CACA,OAAA00C,CAAQ7vC,GACDjpB,KAAK80C,sBAGV1a,MAAM0+B,QAAQ7vC,GACVA,EAAM5nB,SAAWrB,KAAKizH,WACxBjzH,KAAKizH,UAAUzuE,QAEnB,CACA,SAAA6b,CAAU7b,GACJxkD,KAAKyc,QAGTzc,KAAKsgE,iBACD9b,GACFxkD,KAAKizH,UAAUzuE,QAEbxkD,KAAK+1D,iBAAiBS,YACxBx2D,KAAKu4D,SAEPv4D,KAAK+1D,gBAAkB,KACzB,CACA,OAAAjY,GACE,OAAQ99C,KAAKizH,WAAiD,KAApCjzH,KAAKizH,UAAUW,UAAU/oF,MACrD,CACA,MAAAgE,GACE7uC,KAAK69C,WAAY,EACb79C,KAAKikB,SACPjkB,KAAKikB,OAAO6jC,iBAAgB,GAC5B9nD,KAAKikB,OAAO6iB,IAAItd,UAAUpF,IAAI,oBAEhCgW,MAAMyU,QACR,CACA,MACE,MAAMxlC,EAAS,GACfrJ,KAAKizH,UAAUpkH,YACf,IAAIglH,EAAY,KAChB,IAAK,MAAM9uF,KAAS/kC,KAAKizH,UAAUa,WAC7BD,GAAW3uE,WAAaC,KAAKC,WAAgC,OAAnBrgB,EAAMu9B,WAGpDj5D,EAAOY,KAAKyoH,IAAe,GAAgB3tF,IAC3C8uF,EAAY9uF,GAEd,OAAO17B,EAAOhG,KAAK,KACrB,CACA,MACE,MAAO8rD,EAAaC,GAAgBpvD,KAAK+yD,iBACzC,IAAIh0B,EACJ,GAAI/+B,KAAKg3D,gBACPj4B,EAAO/+B,KAAK8mC,IAAI/c,4BACX,CACL,MAAM,aACJw7B,EAAY,IACZze,GACE9mC,KACE+zH,EAAejtF,EAAI/6B,MAAMC,QACzBgoH,EAAkBltF,EAAItd,UAAUD,SAAS,UAC/Cud,EAAItd,UAAUqlB,OAAO,UACrB/H,EAAI/6B,MAAMC,QAAU,SACpBu5C,EAAaze,IAAIC,OAAO/mC,KAAK8mC,KAC7B/H,EAAO+H,EAAI/c,wBACX+c,EAAI+H,SACJ/H,EAAI/6B,MAAMC,QAAU+nH,EACpBjtF,EAAItd,UAAUo7B,OAAO,SAAUovE,EACjC,CACIh0H,KAAKspC,SAAW,MAAQtpC,KAAKw4D,eAAiB,KAChDx4D,KAAKyc,MAAQsiB,EAAKtiB,MAAQ0yC,EAC1BnvD,KAAK0c,OAASqiB,EAAKriB,OAAS0yC,IAE5BpvD,KAAKyc,MAAQsiB,EAAKriB,OAASyyC,EAC3BnvD,KAAK0c,OAASqiB,EAAKtiB,MAAQ2yC,GAE7BpvD,KAAKy4D,mBACP,CACA,MAAArL,GACE,IAAKptD,KAAKk5D,eACR,OAEF9+B,MAAMgzB,SACNptD,KAAKugE,kBACL,MAAM0zD,EAAYj0H,MAAK,GACjBk0H,EAAUl0H,MAAK,GAAWA,MAAK,KAAem0H,UACpD,GAAIF,IAAcC,EAChB,OAEF,MAAME,EAAU3rF,IACdzoC,MAAK,GAAWyoC,EACXA,GAILzoC,MAAK,KACLA,KAAKu0C,WAAWia,QAAQxuD,MACxBA,MAAK,MALHA,KAAK6uC,UAOT7uC,KAAK4oD,YAAY,CACf/M,IAAK,KACHu4E,EAAQF,IAEVp4E,KAAM,KACJs4E,EAAQH,IAEVj4E,UAAU,IAEZh8C,MAAK,IACP,CACA,uBAAA2uD,GACE,OAAO3uD,KAAKk5D,cACd,CACA,eAAAnO,GACE/qD,KAAKsgE,iBACLtgE,KAAKizH,UAAUzuE,OACjB,CACA,OAAA8C,CAAQr+B,GACFA,EAAM5nB,SAAWrB,KAAK8mC,KAAqB,UAAd7d,EAAM7e,MACrCpK,KAAK+qD,kBACL9hC,EAAMzD,iBAEV,CACA,gBAAA+tG,CAAiBtqG,GACfypG,GAAez0E,iBAAiBvkC,KAAK1Z,KAAMipB,EAC7C,CACA,cAAAuqG,CAAevqG,GACbjpB,KAAK69C,WAAY,CACnB,CACA,aAAA41E,CAAcxqG,GACZjpB,KAAK69C,WAAY,CACnB,CACA,cAAA61E,CAAezqG,GACbjpB,KAAKikB,OAAO6iB,IAAItd,UAAUo7B,OAAO,kBAAmB5kD,KAAK89C,UAC3D,CACA,cAAAokB,GACEliE,KAAKizH,UAAUxtF,aAAa,OAAQ,WACpCzlC,KAAKizH,UAAUttF,gBAAgB,iBACjC,CACA,aAAAw8B,GACEniE,KAAKizH,UAAUxtF,aAAa,OAAQ,WACpCzlC,KAAKizH,UAAUxtF,aAAa,kBAAkB,EAChD,CACA,oBAAI28B,GACF,OAAO,CACT,CACA,MAAAhmD,GACE,GAAIpc,KAAK8mC,IACP,OAAO9mC,KAAK8mC,IAEd,IAAIwyB,EAAOC,GACPv5D,KAAK61D,SAAW71D,KAAKuqD,uBACvB+O,EAAQt5D,KAAK6G,EACb0yD,EAAQv5D,KAAKwe,GAEf4b,MAAMhe,SACNpc,KAAKizH,UAAY7mH,SAAS0D,cAAc,OACxC9P,KAAKizH,UAAU//E,UAAY,WAC3BlzC,KAAKizH,UAAUxtF,aAAa,KAAMzlC,MAAK,IACvCA,KAAKizH,UAAUxtF,aAAa,eAAgB,oBAC5CzlC,KAAKizH,UAAUxtF,aAAa,kBAAmB,mBAC/CzlC,KAAKmiE,gBACLniE,KAAKizH,UAAUK,iBAAkB,EACjC,MAAM,MACJvnH,GACE/L,KAAKizH,UAOT,GANAlnH,EAAM+/E,SAAW,QAAQ9rF,MAAK,oCAC9B+L,EAAMoiC,MAAQnuC,KAAKmuC,MACnBnuC,KAAK8mC,IAAIC,OAAO/mC,KAAKizH,WACrBjzH,KAAKqzH,WAAajnH,SAAS0D,cAAc,OACzC9P,KAAKqzH,WAAW7pG,UAAUpF,IAAI,UAAW,WACzCpkB,KAAK8mC,IAAIC,OAAO/mC,KAAKqzH,YACjBrzH,KAAK61D,SAAW71D,KAAKuqD,oBAAqB,CAC5C,MAAO4E,EAAaC,GAAgBpvD,KAAK+yD,iBACzC,GAAI/yD,KAAKuqD,oBAAqB,CAC5B,MAAM,SACJppC,GACEnhB,KAAKg2D,aACT,IAAK3H,EAAIC,GAAMtuD,KAAK06D,yBACnBrM,EAAIC,GAAMtuD,KAAKu6D,wBAAwBlM,EAAIC,GAC5C,MAAOvoC,EAAWC,GAAchmB,KAAK82D,gBAC9B5sB,EAAOC,GAASnqC,KAAK+2D,gBAC5B,IAAIlU,EAAMC,EACV,OAAQ9iD,KAAKspC,UACX,KAAK,EACHuZ,EAAOyW,GAASn4C,EAAS,GAAK+oB,GAASnkB,EACvC+8B,EAAOyW,EAAQv5D,KAAK0c,QAAUyE,EAAS,GAAKgpB,GAASnkB,EACrD,MACF,KAAK,GACH68B,EAAOyW,GAASn4C,EAAS,GAAK+oB,GAASnkB,EACvC+8B,EAAOyW,GAASp4C,EAAS,GAAKgpB,GAASnkB,GACtCqoC,EAAIC,GAAM,CAACA,GAAKD,GACjB,MACF,KAAK,IACHxL,EAAOyW,EAAQt5D,KAAKyc,OAAS0E,EAAS,GAAK+oB,GAASnkB,EACpD+8B,EAAOyW,GAASp4C,EAAS,GAAKgpB,GAASnkB,GACtCqoC,EAAIC,GAAM,EAAED,GAAKC,GAClB,MACF,KAAK,IACHzL,EAAOyW,GAASn4C,EAAS,GAAK+oB,EAAQlqC,KAAK0c,OAASsJ,GAAcD,EAClE+8B,EAAOyW,GAASp4C,EAAS,GAAKgpB,EAAQnqC,KAAKyc,MAAQsJ,GAAaC,GAC/DqoC,EAAIC,GAAM,EAAEA,EAAID,GACjB,MAEJruD,KAAKm5D,MAAMtW,EAAOsM,EAAarM,EAAOsM,EAAcf,EAAIC,EAC1D,MACEtuD,KAAKq5D,gBAAgBC,EAAOC,GAE9Bv5D,MAAK,KACLA,KAAKs4D,cAAe,EACpBt4D,KAAKizH,UAAUK,iBAAkB,CACnC,MACEtzH,KAAKs4D,cAAe,EACpBt4D,KAAKizH,UAAUK,iBAAkB,EAEnC,OAAOtzH,KAAK8mC,GACd,CACA,SAAO,CAAgBnC,GACrB,OAAQA,EAAKugB,WAAaC,KAAKC,UAAYzgB,EAAK0vF,UAAY1vF,EAAKivF,WAAWtxF,WAAWmwF,GAAa,GACtG,CACA,cAAAkB,CAAe1qG,GACb,MAAMq/B,EAAgBr/B,EAAMq/B,eAAiBz3C,OAAOy3C,eAC9C,MACJU,GACEV,EACJ,GAAqB,IAAjBU,EAAMloD,QAA6B,eAAbkoD,EAAM,GAC9B,OAEF//B,EAAMzD,iBACN,MAAMkiC,EAAQgrE,IAAe,GAAoBpqE,EAAcjF,QAAQ,SAAW,IAAI/gB,WAAWmwF,GAAa,MAC9G,IAAK/qE,EACH,OAEF,MAAMhC,EAAY70C,OAAO80C,eACzB,IAAKD,EAAUsJ,WACb,OAEFhvD,KAAKizH,UAAUpkH,YACf62C,EAAU4uE,qBACV,MAAMhlE,EAAQ5J,EAAUuJ,WAAW,GACnC,IAAKvH,EAAMlsC,SAAS,MAIlB,OAHA8zC,EAAMilE,WAAWnoH,SAAS66B,eAAeygB,IACzC1nD,KAAKizH,UAAUpkH,iBACf62C,EAAU8uE,kBAGZ,MAAM,eACJC,EAAc,YACdC,GACEplE,EACEqlE,EAAe,GACfC,EAAc,GACpB,GAAIH,EAAevvE,WAAaC,KAAKC,UAAW,CAC9C,MAAMnhC,EAASwwG,EAAepvE,cAE9B,GADAuvE,EAAY3qH,KAAKwqH,EAAeJ,UAAUlxH,MAAMuxH,GAAapyF,WAAWmwF,GAAa,KACjFxuG,IAAWjkB,KAAKizH,UAAW,CAC7B,IAAI5pH,EAASsrH,EACb,IAAK,MAAM5vF,KAAS/kC,KAAKizH,UAAUa,WAC7B/uF,IAAU9gB,EAId5a,EAAOY,KAAKyoH,IAAe,GAAgB3tF,IAHzC17B,EAASurH,CAKf,CACAD,EAAa1qH,KAAKwqH,EAAeJ,UAAUlxH,MAAM,EAAGuxH,GAAapyF,WAAWmwF,GAAa,IAC3F,MAAO,GAAIgC,IAAmBz0H,KAAKizH,UAAW,CAC5C,IAAI5pH,EAASsrH,EACT1rH,EAAI,EACR,IAAK,MAAM87B,KAAS/kC,KAAKizH,UAAUa,WAC7B7qH,MAAQyrH,IACVrrH,EAASurH,GAEXvrH,EAAOY,KAAKyoH,IAAe,GAAgB3tF,GAE/C,CACA/kC,MAAK,GAAW,GAAG20H,EAAatxH,KAAK,QAAQqkD,IAAQktE,EAAYvxH,KAAK,QACtErD,MAAK,KACL,MAAM60H,EAAW,IAAIC,MACrB,IAAIC,EAAeruH,KAAKw9B,WAAWywF,EAAa9qH,IAAI0pC,GAAQA,EAAKzyC,SACjE,IAAK,MAAM,WACTkxH,KACGhyH,KAAKizH,UAAUa,WAClB,GAAI9B,EAAW9sE,WAAaC,KAAKC,UAAW,CAC1C,MAAMtkD,EAASkxH,EAAWqC,UAAUvzH,OACpC,GAAIi0H,GAAgBj0H,EAAQ,CAC1B+zH,EAASG,SAAShD,EAAY+C,GAC9BF,EAASI,OAAOjD,EAAY+C,GAC5B,KACF,CACAA,GAAgBj0H,CAClB,CAEF4kD,EAAUwvE,kBACVxvE,EAAUyvE,SAASN,EACrB,CACA,MAEE,GADA70H,KAAKizH,UAAUhC,kBACVjxH,MAAK,GAGV,IAAK,MAAMuzC,KAAQvzC,MAAK,GAASwD,MAAM,MAAO,CAC5C,MAAMsjC,EAAM16B,SAAS0D,cAAc,OACnCg3B,EAAIC,OAAOwM,EAAOnnC,SAAS66B,eAAesM,GAAQnnC,SAAS0D,cAAc,OACzE9P,KAAKizH,UAAUlsF,OAAOD,EACxB,CACF,CACA,MACE,OAAO9mC,MAAK,GAASsiC,WAAW,IAAQ,IAC1C,CACA,SAAO,CAAoBj3B,GACzB,OAAOA,EAAQi3B,WAAW,IAAK,IACjC,CACA,cAAIigC,GACF,OAAOviE,KAAKizH,SACd,CACA,UAAA7yD,GACE,MAAMg1D,EAAU1C,GAAeK,iBAAmB/yH,KAAKw6D,YACvD,OAAOx6D,KAAKggE,QAAQo1D,EAASA,EAC/B,CACA,wBAAazsE,CAAY/5C,EAAMqV,EAAQkzB,GACrC,IAAIioD,EAAc,KAClB,GAAIxwF,aAAgB0wG,GAA2B,CAC7C,MACE1wG,MACEw6G,uBAAuB,SACrBt9B,EAAQ,UACRq9B,GACD,KACDpqF,EAAI,SACJuK,EAAQ,GACR/5B,EAAE,SACFo7C,EAAQ,SACRuI,EAAQ,YACRtI,EAAW,aACX8L,EAAY,iBACZC,GACD,YACDryB,EAAW,aACXgrF,EACArrG,QACEjH,MAAM,WACJ8mC,KAGFl1C,EACJ,IAAK01B,GAAsC,IAAvBA,EAAYxjC,OAC9B,OAAO,KAETs+F,EAAcxwF,EAAO,CACnBqyD,eAAgBn0C,EAAqBE,SACrCmhB,MAAO59B,MAAM2sB,KAAKisF,GAClBr9B,WACAhqF,MAAOwiC,EAAYjhC,KAAK,MACxB8d,SAAUmuG,EACVrsE,UAAWa,EAAa,EACxB/kB,KAAMA,EAAK57B,MAAM,GACjBmmC,WACAihB,oBAAqBh7C,EACrBA,KACAk7C,SAAS,EACTE,WACA9U,QAAS+U,GAAatvB,KAAO,KAC7B43B,WACAwD,eACAC,mBAEJ,CACA,MAAM7iB,QAAe1Z,MAAMuuB,YAAY/5C,EAAMqV,EAAQkzB,GAQrD,OAPArD,GAAO,GAAYllC,EAAKk9E,SACxBh4C,EAAO3F,MAAQ/Q,GAAKC,gBAAgBzuB,EAAKu/B,OACzC2F,GAAO,GAAW4+E,IAAe,GAAoB9jH,EAAK9M,OAC1DgyC,EAAOkiB,aAAeopC,EAClBxwF,EAAKinC,SACP/B,EAAOmqB,eAAervD,GAEjBklC,CACT,CACA,SAAAuU,CAAU2I,GAAe,GACvB,GAAIhxD,KAAK89C,UACP,OAAO,KAET,GAAI99C,KAAKyqD,QACP,OAAOzqD,KAAKghE,mBAEd,MAAM7yB,EAAQynB,GAAiBwB,cAAc/Z,QAAQr9C,KAAKg3D,gBAAkBpoB,iBAAiB5uC,KAAKizH,WAAW9kF,MAAQnuC,KAAKmuC,OACpHia,EAAanlD,OAAOmjC,OAAOhM,MAAMiuB,UAAU2I,GAAe,CAC9D7iB,QACA29C,SAAU9rF,MAAK,GACf8B,MAAO9B,MAAK,OAGd,OADAA,KAAK41C,WAAWwS,GACZ4I,GACF5I,EAAWgZ,QAAS,EACbhZ,GAELpoD,KAAKuqD,sBAAwBvqD,MAAK,GAAmBooD,GAChD,MAETA,EAAW74C,GAAKvP,KAAKuqD,oBACdnC,EACT,CACA,IAAmBA,GACjB,MAAM,MACJtmD,EAAK,SACLgqF,EAAQ,MACR39C,EAAK,UACL8U,GACEjjD,KAAKg2D,aACT,OAAOh2D,KAAKm+D,kBAAoBn+D,KAAKk6D,eAAiB9R,EAAWtmD,QAAUA,GAASsmD,EAAW0jC,WAAaA,GAAY1jC,EAAWja,MAAMx+B,KAAK,CAAC+tB,EAAGz0B,IAAMy0B,IAAMyQ,EAAMllC,KAAOm/C,EAAWnF,YAAcA,CACtM,CACA,uBAAAwM,CAAwB/E,GACtB,MAAMr/C,EAAU+uB,MAAMq1B,wBAAwB/E,GAC9C,IAAKr/C,EACH,OAAO,KAET,MAAM,MACJU,GACEV,EACJU,EAAM+/E,SAAW,QAAQ9rF,MAAK,oCAC9B+L,EAAMoiC,MAAQnuC,KAAKmuC,MACnB9iC,EAAQ4lH,kBACR,IAAK,MAAM19E,KAAQvzC,MAAK,GAASwD,MAAM,MAAO,CAC5C,MAAMsjC,EAAM16B,SAAS0D,cAAc,OACnCg3B,EAAIC,OAAOwM,EAAOnnC,SAAS66B,eAAesM,GAAQnnC,SAAS0D,cAAc,OACzEzE,EAAQ07B,OAAOD,EACjB,CAOA,OANA4jB,EAAWmY,aAAa,CACtB9jC,KAAM/+B,KAAKogE,aACXvB,MAAO7+D,KAAKu0C,WAAW6C,qBAAuBp3C,KAAKm+D,iBAAmBn+D,KAAK61C,QAAU,CACnFpN,KAAMzoC,MAAK,MAGRqL,CACT,CACA,sBAAA03D,CAAuBrY,GACrBtwB,MAAM2oC,uBAAuBrY,GAC7BA,EAAWy3D,aACb,EAKF,MAAMkT,GACJxtF,iBAAmB,KACnB,SAAAytF,GACE98F,EAAY,mDACd,CACA,OAAImf,GACFnf,EAAY,6CACd,CACA,SAAA6vB,CAAUg3B,EAAOk2C,GACf/8F,EAAY,mDACd,CACA,eAAOg9F,CAAStpH,EAAKmiD,EAAIC,EAAI1e,EAAIC,EAAI3M,GACnCA,IAAS,IAAIwP,aAAaxmC,EAAIpL,QAC9B,IAAK,IAAImI,EAAI,EAAG2hC,EAAK1+B,EAAIpL,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAC5Ci6B,EAAKj6B,GAAKolD,EAAKniD,EAAIjD,GAAK2mC,EACxB1M,EAAKj6B,EAAI,GAAKqlD,EAAKpiD,EAAIjD,EAAI,GAAK4mC,EAElC,OAAO3M,CACT,CACA,sBAAOuyF,CAAgBvpH,EAAKmiD,EAAIC,EAAI1e,EAAIC,EAAI3M,GAC1CA,IAAS,IAAIwP,aAAaxmC,EAAIpL,QAC9B,IAAK,IAAImI,EAAI,EAAG2hC,EAAK1+B,EAAIpL,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAC5Ci6B,EAAKj6B,GAAKolD,EAAKniD,EAAIjD,EAAI,GAAK2mC,EAC5B1M,EAAKj6B,EAAI,GAAKqlD,EAAKpiD,EAAIjD,GAAK4mC,EAE9B,OAAO3M,CACT,CACA,iBAAOwyF,CAAWxpH,EAAKmiD,EAAIC,EAAIprB,GAC7BA,IAAS,IAAIwP,aAAaxmC,EAAIpL,QAC9B,IAAK,IAAImI,EAAI,EAAG2hC,EAAK1+B,EAAIpL,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAC5Ci6B,EAAKj6B,GAAKolD,EAAKniD,EAAIjD,GACnBi6B,EAAKj6B,EAAI,GAAKqlD,EAAKpiD,EAAIjD,EAAI,GAE7B,OAAOi6B,CACT,CACA,eAAOyyF,CAAS9uH,GACd,OAAOH,KAAK6qC,MAAU,IAAJ1qC,EACpB,CACA,sBAAOk7G,CAAgBl7G,EAAG2X,EAAG2wC,EAAaC,EAAc9lB,GACtD,OAAQA,GACN,KAAK,GACH,MAAO,CAAC,EAAI9qB,EAAI2wC,EAAatoD,EAAIuoD,GACnC,KAAK,IACH,MAAO,CAAC,EAAIvoD,EAAIsoD,EAAa,EAAI3wC,EAAI4wC,GACvC,KAAK,IACH,MAAO,CAAC5wC,EAAI2wC,EAAa,EAAItoD,EAAIuoD,GACnC,QACE,MAAO,CAACvoD,EAAIsoD,EAAa3wC,EAAI4wC,GAEnC,CACA,0BAAOwmE,CAAoB/uH,EAAG2X,EAAG8qB,GAC/B,OAAQA,GACN,KAAK,GACH,MAAO,CAAC,EAAI9qB,EAAG3X,GACjB,KAAK,IACH,MAAO,CAAC,EAAIA,EAAG,EAAI2X,GACrB,KAAK,IACH,MAAO,CAACA,EAAG,EAAI3X,GACjB,QACE,MAAO,CAACA,EAAG2X,GAEjB,CACA,yBAAOq3G,CAAmB10F,EAAIC,EAAIC,EAAIE,EAAID,EAAIE,GAC5C,MAAO,EAAEL,EAAK,EAAIE,GAAM,GAAID,EAAK,EAAIG,GAAM,GAAI,EAAIF,EAAKC,GAAM,GAAI,EAAIC,EAAKC,GAAM,GAAIH,EAAKC,GAAM,GAAIC,EAAKC,GAAM,EACjH,EAMF,MAAMs0F,GACJ,IACA,IAAU,GACV,IACA,IACA,IAAO,GACP,IAAQ,IAAIpjF,aAAa,IACzB,IACA,IACA,IACA,IACA,IACA,IACA,IAAU,GACV7K,UAAmB,EACnBA,UAAmB,EACnBA,UAAciuF,IAAiB,GAAYA,IAAiB,GAC5D,WAAA9xH,EAAY,EACV6C,EAAC,EACD2X,GACCm5B,EAAKo+E,EAAa/F,EAAWx4E,EAAOw+E,EAAc,GACnDh2H,MAAK,GAAO23C,EACZ33C,MAAK,GAAagwH,EAAY+F,EAC9B/1H,MAAK,GAASw3C,EACdx3C,MAAK,GAAM4H,IAAI,CAACswC,IAAKA,IAAKA,IAAKA,IAAKrxC,EAAG2X,GAAI,GAC3Cxe,MAAK,GAAeg2H,EACpBh2H,MAAK,GAAY81H,IAAiB,GAAYC,EAC9C/1H,MAAK,GAAO81H,IAAiB,GAAOC,EACpC/1H,MAAK,GAAe+1H,EACpB/1H,MAAK,GAAQiK,KAAKpD,EAAG2X,EACvB,CACA,OAAAs/B,GACE,OAAOkzB,MAAMhxE,MAAK,GAAM,GAC1B,CACA,MACE,MAAMi2H,EAAUj2H,MAAK,GAAMo7B,SAAS,EAAG,GACjC86F,EAAal2H,MAAK,GAAMo7B,SAAS,GAAI,KACpCv0B,EAAG2X,EAAG/B,EAAOC,GAAU1c,MAAK,GACnC,MAAO,EAAEA,MAAK,IAAUi2H,EAAQ,GAAKC,EAAW,IAAM,EAAIrvH,GAAK4V,GAAQzc,MAAK,IAAUi2H,EAAQ,GAAKC,EAAW,IAAM,EAAI13G,GAAK9B,GAAS1c,MAAK,IAAUk2H,EAAW,GAAKD,EAAQ,IAAM,EAAIpvH,GAAK4V,GAAQzc,MAAK,IAAUk2H,EAAW,GAAKD,EAAQ,IAAM,EAAIz3G,GAAK9B,EAC5P,CACA,GAAA0H,EAAI,EACFvd,EAAC,EACD2X,IAEAxe,MAAK,GAAS6G,EACd7G,MAAK,GAASwe,EACd,MAAOkmC,EAAQC,EAAQixC,EAAYC,GAAe71F,MAAK,GACvD,IAAKmhC,EAAIC,EAAIC,EAAIE,GAAMvhC,MAAK,GAAMo7B,SAAS,EAAG,IAC9C,MAAM+6F,EAAQtvH,EAAIw6B,EACZ+0F,EAAQ53G,EAAI+iB,EACZzlB,EAAIpV,KAAK+uD,MAAM0gE,EAAOC,GAC5B,GAAIt6G,EAAI9b,MAAK,GACX,OAAO,EAET,MAAMq2H,EAAQv6G,EAAI9b,MAAK,GACjBs2H,EAAID,EAAQv6G,EACZmkD,EAASq2D,EAAIH,EACbj2D,EAASo2D,EAAIF,EACnB,IAAIn1F,EAAKE,EACLD,EAAKE,EACTD,EAAKE,EACLD,EAAKG,EACLF,GAAM4+B,EACN1+B,GAAM2+B,EACNlgE,MAAK,IAASiK,KAAKpD,EAAG2X,GACtB,MAAM+3G,GAAMr2D,EAASm2D,EACfG,EAAKv2D,EAASo2D,EACdI,EAAMF,EAAKv2H,MAAK,GAChB02H,EAAMF,EAAKx2H,MAAK,GAKtB,GAJAA,MAAK,GAAM4H,IAAI5H,MAAK,GAAMo7B,SAAS,EAAG,GAAI,GAC1Cp7B,MAAK,GAAM4H,IAAI,CAACy5B,EAAKo1F,EAAKl1F,EAAKm1F,GAAM,GACrC12H,MAAK,GAAM4H,IAAI5H,MAAK,GAAMo7B,SAAS,GAAI,IAAK,IAC5Cp7B,MAAK,GAAM4H,IAAI,CAACy5B,EAAKo1F,EAAKl1F,EAAKm1F,GAAM,IACjC1lD,MAAMhxE,MAAK,GAAM,IAQnB,OAPyB,IAArBA,MAAK,GAAKc,SACZd,MAAK,GAAM4H,IAAI,CAACu5B,EAAKs1F,EAAKr1F,EAAKs1F,GAAM,GACrC12H,MAAK,GAAKiK,KAAKiuC,IAAKA,IAAKA,IAAKA,KAAM/W,EAAKs1F,EAAM/xE,GAAUkxC,GAAax0D,EAAKs1F,EAAM/xE,GAAUkxC,GAC3F71F,MAAK,GAAM4H,IAAI,CAACu5B,EAAKs1F,EAAKr1F,EAAKs1F,GAAM,IACrC12H,MAAK,GAAQiK,KAAKiuC,IAAKA,IAAKA,IAAKA,KAAM/W,EAAKs1F,EAAM/xE,GAAUkxC,GAAax0D,EAAKs1F,EAAM/xE,GAAUkxC,IAEhG71F,MAAK,GAAM4H,IAAI,CAACq5B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GAAK,IACjCvhC,KAAK89C,UAEf99C,MAAK,GAAM4H,IAAI,CAACq5B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GAAK,GACzC,MAAM+4B,EAAQ5zD,KAAKm7B,IAAIn7B,KAAK4kG,MAAMpqE,EAAKE,EAAIH,EAAKE,GAAMz6B,KAAK4kG,MAAMprC,EAAQD,IACzE,OAAI3F,EAAQ5zD,KAAK8kG,GAAK,IACnBrqE,EAAIC,EAAIC,EAAIE,GAAMvhC,MAAK,GAAMo7B,SAAS,EAAG,GAC1Cp7B,MAAK,GAAKiK,KAAKiuC,IAAKA,IAAKA,IAAKA,MAAO/W,EAAKE,GAAM,EAAIqjB,GAAUkxC,IAAcx0D,EAAKG,GAAM,EAAIojB,GAAUkxC,IACpG10D,EAAIC,EAAIH,EAAIC,GAAMlhC,MAAK,GAAMo7B,SAAS,GAAI,IAC3Cp7B,MAAK,GAAQiK,KAAKiuC,IAAKA,IAAKA,IAAKA,MAAOjX,EAAKE,GAAM,EAAIujB,GAAUkxC,IAAc10D,EAAKE,GAAM,EAAIujB,GAAUkxC,IACjG,KAER50D,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GAAMvhC,MAAK,GAAMo7B,SAAS,EAAG,GAClDp7B,MAAK,GAAKiK,OAAOg3B,EAAK,EAAIE,GAAM,EAAIujB,GAAUkxC,IAAc10D,EAAK,EAAIE,GAAM,EAAIujB,GAAUkxC,IAAe,EAAI10D,EAAKE,GAAM,EAAIqjB,GAAUkxC,IAAc,EAAIx0D,EAAKG,GAAM,EAAIojB,GAAUkxC,IAAe10D,EAAKE,GAAM,EAAIqjB,GAAUkxC,IAAcx0D,EAAKG,GAAM,EAAIojB,GAAUkxC,IAC9Px0D,EAAIE,EAAIJ,EAAIC,EAAIH,EAAIC,GAAMlhC,MAAK,GAAMo7B,SAAS,GAAI,IACnDp7B,MAAK,GAAQiK,OAAOg3B,EAAK,EAAIE,GAAM,EAAIujB,GAAUkxC,IAAc10D,EAAK,EAAIE,GAAM,EAAIujB,GAAUkxC,IAAe,EAAI10D,EAAKE,GAAM,EAAIqjB,GAAUkxC,IAAc,EAAIx0D,EAAKG,GAAM,EAAIojB,GAAUkxC,IAAe10D,EAAKE,GAAM,EAAIqjB,GAAUkxC,IAAcx0D,EAAKG,GAAM,EAAIojB,GAAUkxC,IAC3P,EACT,CACA,SAAAy/B,GACE,GAAIt1H,KAAK89C,UACP,MAAO,GAET,MAAMv/B,EAAMve,MAAK,GACX0gE,EAAS1gE,MAAK,GACpB,GAAIgxE,MAAMhxE,MAAK,GAAM,MAAQA,KAAK89C,UAChC,OAAO99C,MAAK,KAEd,MAAMqJ,EAAS,GACfA,EAAOY,KAAK,IAAIsU,EAAI,MAAMA,EAAI,MAC9B,IAAK,IAAItV,EAAI,EAAGA,EAAIsV,EAAIzd,OAAQmI,GAAK,EAC/B+nE,MAAMzyD,EAAItV,IACZI,EAAOY,KAAK,IAAIsU,EAAItV,EAAI,MAAMsV,EAAItV,EAAI,MAEtCI,EAAOY,KAAK,IAAIsU,EAAItV,MAAMsV,EAAItV,EAAI,MAAMsV,EAAItV,EAAI,MAAMsV,EAAItV,EAAI,MAAMsV,EAAItV,EAAI,MAAMsV,EAAItV,EAAI,MAG9FjJ,MAAK,GAAcqJ,GACnB,IAAK,IAAIJ,EAAIy3D,EAAO5/D,OAAS,EAAGmI,GAAK,EAAGA,GAAK,EACvC+nE,MAAMtQ,EAAOz3D,IACfI,EAAOY,KAAK,IAAIy2D,EAAOz3D,EAAI,MAAMy3D,EAAOz3D,EAAI,MAE5CI,EAAOY,KAAK,IAAIy2D,EAAOz3D,MAAMy3D,EAAOz3D,EAAI,MAAMy3D,EAAOz3D,EAAI,MAAMy3D,EAAOz3D,EAAI,MAAMy3D,EAAOz3D,EAAI,MAAMy3D,EAAOz3D,EAAI,MAIhH,OADAjJ,MAAK,GAAgBqJ,GACdA,EAAOhG,KAAK,IACrB,CACA,MACE,MAAOwD,EAAG2X,EAAG/B,EAAOC,GAAU1c,MAAK,IAC5B22H,EAAUC,EAAUC,EAAaC,GAAe92H,MAAK,KAC5D,MAAO,KAAKA,MAAK,GAAM,GAAK6G,GAAK4V,MAAUzc,MAAK,GAAM,GAAKwe,GAAK9B,OAAY1c,MAAK,GAAM,GAAK6G,GAAK4V,MAAUzc,MAAK,GAAM,GAAKwe,GAAK9B,MAAWi6G,KAAYC,MAAaC,KAAeC,OAAiB92H,MAAK,GAAM,IAAM6G,GAAK4V,MAAUzc,MAAK,GAAM,IAAMwe,GAAK9B,OAAY1c,MAAK,GAAM,IAAM6G,GAAK4V,MAAUzc,MAAK,GAAM,IAAMwe,GAAK9B,KAC9T,CACA,IAAgBrT,GACd,MAAMq3D,EAAS1gE,MAAK,GACpBqJ,EAAOY,KAAK,IAAIy2D,EAAO,MAAMA,EAAO,OACtC,CACA,IAAcr3D,GACZ,MAAOxC,EAAG2X,EAAG/B,EAAOC,GAAU1c,MAAK,GAC7Bi2H,EAAUj2H,MAAK,GAAMo7B,SAAS,EAAG,GACjC86F,EAAal2H,MAAK,GAAMo7B,SAAS,GAAI,KACpCu7F,EAAUC,EAAUC,EAAaC,GAAe92H,MAAK,KAC5DqJ,EAAOY,KAAK,KAAKgsH,EAAQ,GAAKpvH,GAAK4V,MAAUw5G,EAAQ,GAAKz3G,GAAK9B,MAAWi6G,KAAYC,MAAaC,KAAeC,OAAiBZ,EAAW,GAAKrvH,GAAK4V,MAAUy5G,EAAW,GAAK13G,GAAK9B,IACzL,CACA,kBAAAq6G,CAAmBC,EAASlH,EAAQn4E,EAAKo+E,EAAaC,EAAax+E,GACjE,OAAO,IAAIy/E,GAAgBD,EAASlH,EAAQn4E,EAAKo+E,EAAaC,EAAax+E,EAC7E,CACA,WAAA0/E,GACE,MAAM34G,EAAMve,MAAK,GACX0gE,EAAS1gE,MAAK,GACdm3H,EAAOn3H,MAAK,IACX0kD,EAAQC,EAAQixC,EAAYC,GAAe71F,MAAK,GACjD8vH,EAAS,IAAIp9E,cAAc1yC,MAAK,IAASc,QAAU,GAAK,GAC9D,IAAK,IAAImI,EAAI,EAAG2hC,EAAKklF,EAAOhvH,OAAS,EAAGmI,EAAI2hC,EAAI3hC,GAAK,EACnD6mH,EAAO7mH,IAAMjJ,MAAK,GAAQiJ,GAAKy7C,GAAUkxC,EACzCk6B,EAAO7mH,EAAI,IAAMjJ,MAAK,GAAQiJ,EAAI,GAAK07C,GAAUkxC,EAInD,GAFAi6B,EAAOA,EAAOhvH,OAAS,IAAMd,MAAK,GAAS0kD,GAAUkxC,EACrDk6B,EAAOA,EAAOhvH,OAAS,IAAMd,MAAK,GAAS2kD,GAAUkxC,EACjD7kB,MAAMmmD,EAAK,MAAQn3H,KAAK89C,UAC1B,OAAO99C,MAAK,GAAqB8vH,GAEnC,MAAMkH,EAAU,IAAItkF,aAAa1yC,MAAK,GAAKc,OAAS,GAAKd,MAAK,GAAQc,QACtE,IAAIs2H,EAAI74G,EAAIzd,OACZ,IAAK,IAAImI,EAAI,EAAGA,EAAImuH,EAAGnuH,GAAK,EACtB+nE,MAAMzyD,EAAItV,IACZ+tH,EAAQ/tH,GAAK+tH,EAAQ/tH,EAAI,GAAKivC,KAGhC8+E,EAAQ/tH,GAAKsV,EAAItV,GACjB+tH,EAAQ/tH,EAAI,GAAKsV,EAAItV,EAAI,IAE3BmuH,EAAIp3H,MAAK,GAAeg3H,EAASI,GACjC,IAAK,IAAInuH,EAAIy3D,EAAO5/D,OAAS,EAAGmI,GAAK,EAAGA,GAAK,EAC3C,IAAK,IAAIsvE,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtBvH,MAAMtQ,EAAOz3D,EAAIsvE,KACnBy+C,EAAQI,GAAKJ,EAAQI,EAAI,GAAKl/E,IAC9Bk/E,GAAK,IAGPJ,EAAQI,GAAK12D,EAAOz3D,EAAIsvE,GACxBy+C,EAAQI,EAAI,GAAK12D,EAAOz3D,EAAIsvE,EAAI,GAChC6+C,GAAK,GAIT,OADAp3H,MAAK,GAAiBg3H,EAASI,GACxBp3H,KAAK+2H,mBAAmBC,EAASlH,EAAQ9vH,MAAK,GAAMA,MAAK,GAAcA,MAAK,GAAcA,MAAK,GACxG,CACA,IAAqB8vH,GACnB,MAAMqH,EAAOn3H,MAAK,IACX0kD,EAAQC,EAAQixC,EAAYC,GAAe71F,MAAK,IAChD22H,EAAUC,EAAUC,EAAaC,GAAe92H,MAAK,KACtDg3H,EAAU,IAAItkF,aAAa,IAEjC,OADAskF,EAAQpvH,IAAI,CAACswC,IAAKA,IAAKA,IAAKA,KAAMi/E,EAAK,GAAKzyE,GAAUkxC,GAAauhC,EAAK,GAAKxyE,GAAUkxC,EAAa39C,IAAKA,IAAKA,IAAKA,KAAMi/E,EAAK,GAAKzyE,GAAUkxC,GAAauhC,EAAK,GAAKxyE,GAAUkxC,EAAa39C,IAAKA,IAAKA,IAAKA,IAAKy+E,EAAUC,EAAU1+E,IAAKA,IAAKA,IAAKA,IAAK2+E,EAAaC,EAAa5+E,IAAKA,IAAKA,IAAKA,KAAMi/E,EAAK,IAAMzyE,GAAUkxC,GAAauhC,EAAK,IAAMxyE,GAAUkxC,EAAa39C,IAAKA,IAAKA,IAAKA,KAAMi/E,EAAK,IAAMzyE,GAAUkxC,GAAauhC,EAAK,IAAMxyE,GAAUkxC,GAAc,GAC7b71F,KAAK+2H,mBAAmBC,EAASlH,EAAQ9vH,MAAK,GAAMA,MAAK,GAAcA,MAAK,GAAcA,MAAK,GACxG,CACA,IAAiBg3H,EAAS74F,GACxB,MAAMuiC,EAAS1gE,MAAK,GAEpB,OADAg3H,EAAQpvH,IAAI,CAACswC,IAAKA,IAAKA,IAAKA,IAAKwoB,EAAO,GAAIA,EAAO,IAAKviC,GACjDA,EAAO,CAChB,CACA,IAAe64F,EAAS74F,GACtB,MAAM83F,EAAUj2H,MAAK,GAAMo7B,SAAS,EAAG,GACjC86F,EAAal2H,MAAK,GAAMo7B,SAAS,GAAI,KACpCspB,EAAQC,EAAQixC,EAAYC,GAAe71F,MAAK,IAChD22H,EAAUC,EAAUC,EAAaC,GAAe92H,MAAK,KAE5D,OADAg3H,EAAQpvH,IAAI,CAACswC,IAAKA,IAAKA,IAAKA,KAAM+9E,EAAQ,GAAKvxE,GAAUkxC,GAAaqgC,EAAQ,GAAKtxE,GAAUkxC,EAAa39C,IAAKA,IAAKA,IAAKA,IAAKy+E,EAAUC,EAAU1+E,IAAKA,IAAKA,IAAKA,IAAK2+E,EAAaC,EAAa5+E,IAAKA,IAAKA,IAAKA,KAAMg+E,EAAW,GAAKxxE,GAAUkxC,GAAasgC,EAAW,GAAKvxE,GAAUkxC,GAAc13D,GAC7RA,EAAO,EAChB,EAEF,MAAM84F,WAAwB5B,GAC5B,IACA,IAAQ,IAAI3iF,aAAa,GACzB,IACA,IACA,IACA,IACA,IACA,WAAA1uC,CAAYgzH,EAASlH,EAAQn4E,EAAKo+E,EAAaC,EAAax+E,GAC1Dpd,QACAp6B,MAAK,GAAWg3H,EAChBh3H,MAAK,GAAU8vH,EACf9vH,MAAK,GAAO23C,EACZ33C,MAAK,GAAe+1H,EACpB/1H,MAAK,GAAeg2H,EACpBh2H,MAAK,GAASw3C,EACdx3C,KAAK+/E,WAAa,CAAC7nC,IAAKA,KACxBl4C,KAAKq3H,UAAY,CAACn/E,IAAKA,KACvBl4C,MAAK,GAAew3C,GACpB,MAAO3wC,EAAG2X,EAAG/B,EAAOC,GAAU1c,MAAK,GACnC,IAAK,IAAIiJ,EAAI,EAAG2hC,EAAKosF,EAAQl2H,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAChD+tH,EAAQ/tH,IAAM+tH,EAAQ/tH,GAAKpC,GAAK4V,EAChCu6G,EAAQ/tH,EAAI,IAAM+tH,EAAQ/tH,EAAI,GAAKuV,GAAK9B,EAE1C,IAAK,IAAIzT,EAAI,EAAG2hC,EAAKklF,EAAOhvH,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAC/C6mH,EAAO7mH,IAAM6mH,EAAO7mH,GAAKpC,GAAK4V,EAC9BqzG,EAAO7mH,EAAI,IAAM6mH,EAAO7mH,EAAI,GAAKuV,GAAK9B,CAE1C,CACA,SAAA44G,GACE,MAAMjsH,EAAS,CAAC,IAAIrJ,MAAK,GAAS,MAAMA,MAAK,GAAS,MACtD,IAAK,IAAIiJ,EAAI,EAAG2hC,EAAK5qC,MAAK,GAASc,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAClD+nE,MAAMhxE,MAAK,GAASiJ,IACtBI,EAAOY,KAAK,IAAIjK,MAAK,GAASiJ,EAAI,MAAMjJ,MAAK,GAASiJ,EAAI,MAG5DI,EAAOY,KAAK,IAAIjK,MAAK,GAASiJ,MAAMjJ,MAAK,GAASiJ,EAAI,MAAMjJ,MAAK,GAASiJ,EAAI,MAAMjJ,MAAK,GAASiJ,EAAI,MAAMjJ,MAAK,GAASiJ,EAAI,MAAMjJ,MAAK,GAASiJ,EAAI,MAGxJ,OADAI,EAAOY,KAAK,KACLZ,EAAOhG,KAAK,IACrB,CACA,SAAAglD,EAAWqW,EAAKC,EAAKC,EAAKH,GAAMn1B,GAC9B,MAAM7sB,EAAQmiD,EAAMF,EACdhiD,EAAS+hD,EAAME,EACrB,IAAIq4D,EACAlH,EACJ,OAAQxmF,GACN,KAAK,EACH0tF,EAAU3B,GAAQG,SAASx1H,MAAK,GAAU0+D,EAAKD,EAAKhiD,GAAQC,GAC5DozG,EAASuF,GAAQG,SAASx1H,MAAK,GAAS0+D,EAAKD,EAAKhiD,GAAQC,GAC1D,MACF,KAAK,GACHs6G,EAAU3B,GAAQI,gBAAgBz1H,MAAK,GAAU0+D,EAAKC,EAAKliD,EAAOC,GAClEozG,EAASuF,GAAQI,gBAAgBz1H,MAAK,GAAS0+D,EAAKC,EAAKliD,EAAOC,GAChE,MACF,KAAK,IACHs6G,EAAU3B,GAAQG,SAASx1H,MAAK,GAAU4+D,EAAKD,GAAMliD,EAAOC,GAC5DozG,EAASuF,GAAQG,SAASx1H,MAAK,GAAS4+D,EAAKD,GAAMliD,EAAOC,GAC1D,MACF,KAAK,IACHs6G,EAAU3B,GAAQI,gBAAgBz1H,MAAK,GAAU4+D,EAAKH,GAAMhiD,GAAQC,GACpEozG,EAASuF,GAAQI,gBAAgBz1H,MAAK,GAAS4+D,EAAKH,GAAMhiD,GAAQC,GAClE,MAEJ,MAAO,CACLs6G,QAASzmH,MAAM2sB,KAAK85F,GACpBlH,OAAQ,CAACv/G,MAAM2sB,KAAK4yF,IAExB,CACA,IAAet4E,GACb,MAAMw/E,EAAUh3H,MAAK,GACrB,IAAI03C,EAAQs/E,EAAQ,GAChBv/E,EAAQu/E,EAAQ,GACpB,MAAMp5F,EAAS,CAAC8Z,EAAOD,EAAOC,EAAOD,GACrC,IAAI6/E,EAAc5/E,EACd6/E,EAAc9/E,EACd+/E,EAAa9/E,EACb+/E,EAAahgF,EACjB,MAAMigF,EAAclgF,EAAQ9wC,KAAKmN,IAAMnN,KAAKoN,IACtC6jH,EAAa,IAAIjlF,aAAa,GACpC,IAAK,IAAIzpC,EAAI,EAAG2hC,EAAKosF,EAAQl2H,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAAG,CACnD,MAAMpC,EAAImwH,EAAQ/tH,EAAI,GACpBuV,EAAIw4G,EAAQ/tH,EAAI,GACd+nE,MAAMgmD,EAAQ/tH,KAChBm0B,GAAK2D,iBAAiBl6B,EAAG2X,EAAGof,GACxB25F,EAAc/4G,GAChB84G,EAAczwH,EACd0wH,EAAc/4G,GACL+4G,IAAgB/4G,IACzB84G,EAAcI,EAAYJ,EAAazwH,IAErC4wH,EAAaj5G,GACfg5G,EAAa3wH,EACb4wH,EAAaj5G,GACJi5G,IAAej5G,IACxBg5G,EAAaE,EAAYF,EAAY3wH,MAGvC8wH,EAAW,GAAKA,EAAW,GAAKtnF,IAChCsnF,EAAW,GAAKA,EAAW,IAAMtnF,IACjCjT,GAAK4E,kBAAkB0V,EAAOD,KAAUu/E,EAAQ7zH,MAAM8F,EAAGA,EAAI,GAAI0uH,GACjEv6F,GAAK4D,gBAAgB22F,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAI/5F,GAC7E25F,EAAcI,EAAW,IAC3BL,EAAcK,EAAW,GACzBJ,EAAcI,EAAW,IAChBJ,IAAgBI,EAAW,KACpCL,EAAcI,EAAYJ,EAAaK,EAAW,KAEhDF,EAAaE,EAAW,IAC1BH,EAAaG,EAAW,GACxBF,EAAaE,EAAW,IACfF,IAAeE,EAAW,KACnCH,EAAaE,EAAYF,EAAYG,EAAW,MAGpDjgF,EAAQ7wC,EACR4wC,EAAQj5B,CACV,CACA,MAAM6sD,EAAOrrE,MAAK,GAClBqrE,EAAK,GAAKztC,EAAO,GAAK59B,MAAK,GAC3BqrE,EAAK,GAAKztC,EAAO,GAAK59B,MAAK,GAC3BqrE,EAAK,GAAKztC,EAAO,GAAKA,EAAO,GAAK,EAAI59B,MAAK,GAC3CqrE,EAAK,GAAKztC,EAAO,GAAKA,EAAO,GAAK,EAAI59B,MAAK,GAC3CA,KAAK+/E,WAAa,CAACu3C,EAAaC,GAChCv3H,KAAKq3H,UAAY,CAACG,EAAYC,EAChC,CACA,OAAI9/E,GACF,OAAO33C,MAAK,EACd,CACA,WAAA43H,CAAY17D,EAAOvkB,EAAKo+E,EAAa/F,EAAWx4E,EAAOw+E,EAAc,GACnE,OAAO,IAAIF,GAAiB55D,EAAOvkB,EAAKo+E,EAAa/F,EAAWx4E,EAAOw+E,EACzE,CACA,aAAA6B,CAAc7H,EAAWgG,GACvB,MAAOnvH,EAAG2X,EAAG/B,EAAOC,GAAU1c,MAAK,IAC5B0kD,EAAQC,EAAQixC,EAAYC,GAAe71F,MAAK,GACjD4vC,EAAKnzB,EAAQm5E,EACb/lD,EAAKnzB,EAASm5E,EACdxnC,EAAKxnD,EAAI+uF,EAAalxC,EACtB4J,EAAK9vC,EAAIq3E,EAAclxC,EACvBmzE,EAAW93H,KAAK43H,YAAY,CAChC/wH,EAAG7G,MAAK,GAAQ,GAAK4vC,EAAKye,EAC1B7vC,EAAGxe,MAAK,GAAQ,GAAK6vC,EAAKye,GACzBtuD,MAAK,GAAMA,MAAK,GAAcgwH,EAAWhwH,MAAK,GAAQg2H,GAAeh2H,MAAK,IAC7E,IAAK,IAAIiJ,EAAI,EAAGA,EAAIjJ,MAAK,GAAQc,OAAQmI,GAAK,EAC5C6uH,EAAS1zG,IAAI,CACXvd,EAAG7G,MAAK,GAAQiJ,GAAK2mC,EAAKye,EAC1B7vC,EAAGxe,MAAK,GAAQiJ,EAAI,GAAK4mC,EAAKye,IAGlC,OAAOwpE,EAASZ,aAClB,EAOF,MAAMa,GACJ,IACA,IACA,IACA,IAAiB,GACjB,IAAa,GACb,WAAA/zH,CAAYuzC,EAAOkrE,EAAc,EAAGuT,EAAc,EAAGx+E,GAAQ,GAC3D,MAAM5Z,EAAS,CAACyS,IAAUA,KAAWA,KAAWA,KAC1C2nF,EAAmB,EACnBC,EAAU,KAAOD,EACvB,IAAK,MAAM,EACTnxH,EAAC,EACD2X,EAAC,MACD/B,EAAK,OACLC,KACG66B,EAAO,CACV,MAAMpW,EAAKz6B,KAAKC,OAAOE,EAAI47G,GAAewV,GAAWA,EAC/C52F,EAAK36B,KAAKD,MAAMI,EAAI4V,EAAQgmG,GAAewV,GAAWA,EACtD72F,EAAK16B,KAAKC,OAAO6X,EAAIikG,GAAewV,GAAWA,EAC/C12F,EAAK76B,KAAKD,MAAM+X,EAAI9B,EAAS+lG,GAAewV,GAAWA,EACvD75G,EAAO,CAAC+iB,EAAIC,EAAIG,GAAI,GACpBo/B,EAAQ,CAACt/B,EAAID,EAAIG,GAAI,GAC3BvhC,MAAK,GAAeiK,KAAKmU,EAAMuiD,GAC/BvjC,GAAK4D,gBAAgBG,EAAIC,EAAIC,EAAIE,EAAI3D,EACvC,CACA,MAAM0pD,EAAY1pD,EAAO,GAAKA,EAAO,GAAK,EAAIo4F,EACxCzuC,EAAa3pD,EAAO,GAAKA,EAAO,GAAK,EAAIo4F,EACzCkC,EAAct6F,EAAO,GAAKo4F,EAC1BmC,EAAcv6F,EAAO,GAAKo4F,EAChC,IAAIsB,EAAc9/E,GAASnH,IAAWA,IAClCknF,EAAclnF,IAClB,MAAM+nF,EAAWp4H,MAAK,GAAemnC,GAAGqQ,GAAS,GAAK,GAChD6/E,EAAY,CAACe,EAAS,GAAIA,EAAS,IACzC,IAAK,MAAMC,KAAQr4H,MAAK,GAAgB,CACtC,MAAO6G,EAAGu6B,EAAIG,EAAInjB,GAAQi6G,GACrBj6G,GAAQo5B,EACPpW,EAAKm2F,GACPA,EAAcn2F,EACdk2F,EAAczwH,GACLu6B,IAAOm2F,IAChBD,EAAc5wH,KAAKmN,IAAIyjH,EAAazwH,IAE7BuX,IAASo5B,IACdpW,EAAKm2F,GACPA,EAAcn2F,EACdk2F,EAAczwH,GACLu6B,IAAOm2F,IAChBD,EAAc5wH,KAAKoN,IAAIwjH,EAAazwH,KAGxCwxH,EAAK,IAAMxxH,EAAIqxH,GAAe5wC,EAC9B+wC,EAAK,IAAMj3F,EAAK+2F,GAAe5wC,EAC/B8wC,EAAK,IAAM92F,EAAK42F,GAAe5wC,CACjC,CACAvnF,MAAK,GAAO,IAAI0yC,aAAa,CAACwlF,EAAaC,EAAa7wC,EAAWC,IACnEvnF,MAAK,GAAc,CAACs3H,EAAaC,GACjCv3H,MAAK,GAAaq3H,CACpB,CACA,WAAAH,GACEl3H,MAAK,GAAeoxH,KAAK,CAACp8G,EAAGC,IAAMD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,IAC1E,MAAMqjH,EAAuB,GAC7B,IAAK,MAAMD,KAAQr4H,MAAK,GAClBq4H,EAAK,IACPC,EAAqBruH,QAAQjK,MAAK,GAAWq4H,IAC7Cr4H,MAAK,GAAQq4H,KAEbr4H,MAAK,GAAQq4H,GACbC,EAAqBruH,QAAQjK,MAAK,GAAWq4H,KAGjD,OAAOr4H,MAAK,GAAas4H,EAC3B,CACA,IAAaA,GACX,MAAMC,EAAQ,GACRC,EAAW,IAAIngF,IACrB,IAAK,MAAMggF,KAAQC,EAAsB,CACvC,MAAOzxH,EAAGu6B,EAAIG,GAAM82F,EACpBE,EAAMtuH,KAAK,CAACpD,EAAGu6B,EAAIi3F,GAAO,CAACxxH,EAAG06B,EAAI82F,GACpC,CACAE,EAAMnH,KAAK,CAACp8G,EAAGC,IAAMD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,IAC7C,IAAK,IAAIhM,EAAI,EAAG2hC,EAAK2tF,EAAMz3H,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAAG,CACjD,MAAMwvH,EAAQF,EAAMtvH,GAAG,GACjByvH,EAAQH,EAAMtvH,EAAI,GAAG,GAC3BwvH,EAAMxuH,KAAKyuH,GACXA,EAAMzuH,KAAKwuH,GACXD,EAASp0G,IAAIq0G,GACbD,EAASp0G,IAAIs0G,EACf,CACA,MAAMC,EAAW,GACjB,IAAI3B,EACJ,MAAOwB,EAAS3sF,KAAO,EAAG,CACxB,MAAMwsF,EAAOG,EAAS1sF,SAASrmC,OAAO3D,MACtC,IAAK+E,EAAGu6B,EAAIG,EAAIk3F,EAAOC,GAASL,EAChCG,EAAShjF,OAAO6iF,GAChB,IAAIb,EAAa3wH,EACb4wH,EAAar2F,EACjB41F,EAAU,CAACnwH,EAAG06B,GACdo3F,EAAS1uH,KAAK+sH,GACd,MAAO,EAAM,CACX,IAAI50G,EACJ,GAAIo2G,EAAS3wH,IAAI4wH,GACfr2G,EAAIq2G,MACC,KAAID,EAAS3wH,IAAI6wH,GAGtB,MAFAt2G,EAAIs2G,CAGN,CACAF,EAAShjF,OAAOpzB,IACfvb,EAAGu6B,EAAIG,EAAIk3F,EAAOC,GAASt2G,EACxBo1G,IAAe3wH,IACjBmwH,EAAQ/sH,KAAKutH,EAAYC,EAAY5wH,EAAG4wH,IAAer2F,EAAKA,EAAKG,GACjEi2F,EAAa3wH,GAEf4wH,EAAaA,IAAer2F,EAAKG,EAAKH,CACxC,CACA41F,EAAQ/sH,KAAKutH,EAAYC,EAC3B,CACA,OAAO,IAAImB,GAAiBD,EAAU34H,MAAK,GAAMA,MAAK,GAAaA,MAAK,GAC1E,CACA,IAAcwe,GACZ,MAAMi0B,EAAQzyC,MAAK,GACnB,IAAIysC,EAAQ,EACRC,EAAM+F,EAAM3xC,OAAS,EACzB,MAAO2rC,GAASC,EAAK,CACnB,MAAMmsF,EAASpsF,EAAQC,GAAO,EACxBtL,EAAKqR,EAAMomF,GAAQ,GACzB,GAAIz3F,IAAO5iB,EACT,OAAOq6G,EAELz3F,EAAK5iB,EACPiuB,EAAQosF,EAAS,EAEjBnsF,EAAMmsF,EAAS,CAEnB,CACA,OAAOnsF,EAAM,CACf,CACA,KAAS,CAAEtL,EAAIG,IACb,MAAMh0B,EAAQvN,MAAK,GAAcohC,GACjCphC,MAAK,GAAWm8C,OAAO5uC,EAAO,EAAG,CAAC6zB,EAAIG,GACxC,CACA,KAAS,CAAEH,EAAIG,IACb,MAAMh0B,EAAQvN,MAAK,GAAcohC,GACjC,IAAK,IAAIn4B,EAAIsE,EAAOtE,EAAIjJ,MAAK,GAAWc,OAAQmI,IAAK,CACnD,MAAOwjC,EAAOC,GAAO1sC,MAAK,GAAWiJ,GACrC,GAAIwjC,IAAUrL,EACZ,MAEF,GAAIqL,IAAUrL,GAAMsL,IAAQnL,EAE1B,YADAvhC,MAAK,GAAWm8C,OAAOlzC,EAAG,EAG9B,CACA,IAAK,IAAIA,EAAIsE,EAAQ,EAAGtE,GAAK,EAAGA,IAAK,CACnC,MAAOwjC,EAAOC,GAAO1sC,MAAK,GAAWiJ,GACrC,GAAIwjC,IAAUrL,EACZ,MAEF,GAAIqL,IAAUrL,GAAMsL,IAAQnL,EAE1B,YADAvhC,MAAK,GAAWm8C,OAAOlzC,EAAG,EAG9B,CACF,CACA,IAAWovH,GACT,MAAOxxH,EAAGu6B,EAAIG,GAAM82F,EACdhf,EAAU,CAAC,CAACxyG,EAAGu6B,EAAIG,IACnBh0B,EAAQvN,MAAK,GAAcuhC,GACjC,IAAK,IAAIt4B,EAAI,EAAGA,EAAIsE,EAAOtE,IAAK,CAC9B,MAAOwjC,EAAOC,GAAO1sC,MAAK,GAAWiJ,GACrC,IAAK,IAAIsvE,EAAI,EAAG6O,EAAKiyB,EAAQv4G,OAAQy3E,EAAI6O,EAAI7O,IAAK,CAChD,MAAO,CAAE/2C,EAAIs3F,GAAMzf,EAAQ9gC,GAC3B,KAAI7rC,GAAOlL,GAAMs3F,GAAMrsF,GAGvB,GAAIjL,GAAMiL,EACR,GAAIqsF,EAAKpsF,EACP2sE,EAAQ9gC,GAAG,GAAK7rC,MACX,CACL,GAAW,IAAP06C,EACF,MAAO,GAETiyB,EAAQl9D,OAAOo8B,EAAG,GAClBA,IACA6O,GACF,MAGFiyB,EAAQ9gC,GAAG,GAAK9rC,EACZqsF,EAAKpsF,GACP2sE,EAAQpvG,KAAK,CAACpD,EAAG6lC,EAAKosF,GAE1B,CACF,CACA,OAAOzf,CACT,EAEF,MAAMuf,WAAyBvD,GAC7B,IACA,IACA,WAAArxH,CAAY20H,EAAUhhF,EAAKooC,EAAYs3C,GACrCj9F,QACAp6B,MAAK,GAAY24H,EACjB34H,MAAK,GAAO23C,EACZ33C,KAAK+/E,WAAaA,EAClB//E,KAAKq3H,UAAYA,CACnB,CACA,SAAA/B,GACE,MAAMjsH,EAAS,GACf,IAAK,MAAM0vH,KAAW/4H,MAAK,GAAW,CACpC,IAAKg5H,EAAOC,GAASF,EACrB1vH,EAAOY,KAAK,IAAI+uH,KAASC,KACzB,IAAK,IAAIhwH,EAAI,EAAGA,EAAI8vH,EAAQj4H,OAAQmI,GAAK,EAAG,CAC1C,MAAMpC,EAAIkyH,EAAQ9vH,GACZuV,EAAIu6G,EAAQ9vH,EAAI,GAClBpC,IAAMmyH,GACR3vH,EAAOY,KAAK,IAAIuU,KAChBy6G,EAAQz6G,GACCA,IAAMy6G,IACf5vH,EAAOY,KAAK,IAAIpD,KAChBmyH,EAAQnyH,EAEZ,CACAwC,EAAOY,KAAK,IACd,CACA,OAAOZ,EAAOhG,KAAK,IACrB,CACA,SAAAglD,EAAWqW,EAAKC,EAAKC,EAAKH,GAAM82D,GAC9B,MAAMoD,EAAW,GACXl8G,EAAQmiD,EAAMF,EACdhiD,EAAS+hD,EAAME,EACrB,IAAK,MAAMq4D,KAAWh3H,MAAK,GAAW,CACpC,MAAM8vH,EAAS,IAAIv/G,MAAMymH,EAAQl2H,QACjC,IAAK,IAAImI,EAAI,EAAGA,EAAI+tH,EAAQl2H,OAAQmI,GAAK,EACvC6mH,EAAO7mH,GAAKy1D,EAAMs4D,EAAQ/tH,GAAKwT,EAC/BqzG,EAAO7mH,EAAI,GAAKw1D,EAAMu4D,EAAQ/tH,EAAI,GAAKyT,EAEzCi8G,EAAS1uH,KAAK6lH,EAChB,CACA,OAAO6I,CACT,CACA,OAAIhhF,GACF,OAAO33C,MAAK,EACd,CACA,0BAAIk5H,GACF,MAAO,CAAC,mBACV,EAEF,MAAMC,WAA8BrD,GAClC,kBAAAiB,CAAmBC,EAASlH,EAAQn4E,EAAKo+E,EAAaC,EAAax+E,GACjE,OAAO,IAAI4hF,GAAqBpC,EAASlH,EAAQn4E,EAAKo+E,EAAaC,EAAax+E,EAClF,EAEF,MAAM4hF,WAA6BnC,GACjC,WAAAW,CAAY17D,EAAOvkB,EAAKo+E,EAAa/F,EAAWx4E,EAAOw+E,EAAc,GACnE,OAAO,IAAImD,GAAsBj9D,EAAOvkB,EAAKo+E,EAAa/F,EAAWx4E,EAAOw+E,EAC9E,EAWF,MAAMqD,WAAwBzjE,GAC5B,IAAc,KACd,IAAgB,EAChB,IACA,IAAc,KACd,GAAe,KACf,IAAiB,KACjB,IAAa,KACb,IAAe,EACf,IAAgB,KAChB,IAAqB,KACrB,GAAM,KACN,KAAmB,EACnB,IAAc,KACd,IAAa,KACb,IAAa,KACb,IAAQ,GACR,IACA,IAAoB,GACpB/tB,qBAAuB,KACvBA,uBAAyB,EACzBA,yBAA2B,GAC3BA,aAAe,YACfA,mBAAqB/a,EAAqBG,UAC1C4a,yBAA2B,EAC3BA,sBAAwB,KACxBA,4BAA8B,GAC9B,2BAAWoW,GACT,MAAM38C,EAAQ+3H,GAAgBn1H,UAC9B,OAAO41B,EAAO95B,KAAM,mBAAoB,IAAIw8C,GAAgB,CAAC,CAAC,CAAC,YAAa,iBAAkBl7C,EAAMg4H,WAAY,CAC9Gl2F,KAAM,CAAC,KACL,CAAC,CAAC,aAAc,kBAAmB9hC,EAAMg4H,WAAY,CACvDl2F,KAAM,CAAC,KACL,CAAC,CAAC,UAAW,eAAgB9hC,EAAMg4H,WAAY,CACjDl2F,KAAM,CAAC,KACL,CAAC,CAAC,YAAa,iBAAkB9hC,EAAMg4H,WAAY,CACrDl2F,KAAM,CAAC,OAEX,CACA,WAAAp/B,CAAYgpD,GACV5yB,MAAM,IACD4yB,EACHtpD,KAAM,oBAER1D,KAAKmuC,MAAQ6e,EAAO7e,OAASkrF,GAAgBxG,cAC7C7yH,MAAK,GAAagtD,EAAOgjE,WAAaqJ,GAAgBE,kBACtDv5H,KAAKwoB,QAAUwkC,EAAOxkC,SAAW6wG,GAAgBG,gBACjDx5H,MAAK,GAASgtD,EAAOzV,OAAS,KAC9Bv3C,MAAK,GAAoBgtD,EAAOvH,kBAAoB,GACpDzlD,MAAK,GAAQgtD,EAAOvkB,MAAQ,GAC5BzoC,KAAKs4D,cAAe,EACpBt4D,KAAKg/D,cAAgB,gCACjBhS,EAAOysE,aAAe,GACxBz5H,MAAK,IAAmB,EACxBA,MAAK,GAAoBgtD,GACzBhtD,MAAK,MACIA,MAAK,KACdA,MAAK,GAAcgtD,EAAO/H,WAC1BjlD,MAAK,GAAgBgtD,EAAOnH,aAC5B7lD,MAAK,GAAagtD,EAAOlH,UACzB9lD,MAAK,GAAegtD,EAAOjH,YAC3B/lD,MAAK,KACLA,MAAK,KACLA,KAAK8gE,OAAO9gE,KAAKspC,WAEdtpC,KAAKuqD,qBACRvqD,KAAKu0C,WAAWoS,UAAU,qCAE9B,CACA,wBAAI6b,GACF,MAAO,CACLpX,OAAQ,QACR3iD,KAAMzI,MAAK,GAAmB,iBAAmB,YACjDmuC,MAAOnuC,KAAKu0C,WAAW+N,mBAAmBtiD,KAAKmuC,OAC/C6hF,UAAWhwH,MAAK,GAChBylD,iBAAkBzlD,MAAK,GAE3B,CACA,sBAAIyiE,GACF,MAAO,CACLh6D,KAAM,YACN0lC,MAAOnuC,KAAKu0C,WAAW+N,mBAAmBtiD,KAAKmuC,OAEnD,CACA,gCAAOs3B,CAA0B72D,GAC/B,MAAO,CACL8qH,eAAgB9qH,EAAK/L,IAAI,SAASgpC,KAEtC,CACA,MACE,MAAMisF,EAAW,IAAIC,GAAkB/3H,MAAK,GAAQ,MACpDA,MAAK,GAAqB83H,EAASZ,eAClCl3H,KAAK6G,EAAG7G,KAAKwe,EAAGxe,KAAKyc,MAAOzc,KAAK0c,QAAU1c,MAAK,GAAmB23C,IACpE,MAAMgiF,EAAqB,IAAI5B,GAAkB/3H,MAAK,GAAQ,MAAQ,KAAqC,QAA9BA,KAAKu0C,WAAW5tB,WAC7F3mB,MAAK,GAAiB25H,EAAmBzC,cACzC,MAAM,WACJn3C,GACE//E,MAAK,GACTA,MAAK,GAAc,EAAE+/E,EAAW,GAAK//E,KAAK6G,GAAK7G,KAAKyc,OAAQsjE,EAAW,GAAK//E,KAAKwe,GAAKxe,KAAK0c,QAC3F,MAAM,UACJ26G,GACEr3H,MAAK,GACTA,MAAK,GAAa,EAAEq3H,EAAU,GAAKr3H,KAAK6G,GAAK7G,KAAKyc,OAAQ46G,EAAU,GAAKr3H,KAAKwe,GAAKxe,KAAK0c,OAC1F,CACA,KAAoB,kBAClBk9G,EAAiB,YACjBH,EAAW,WACXI,IAEA75H,MAAK,GAAqB45H,EAC1B,MAAME,EAAiB,IAEvB,GADA95H,MAAK,GAAiB45H,EAAkB/B,cAAc73H,MAAK,GAAa,EAAI85H,EAAgB,OACxFL,GAAe,EACjBz5H,MAAK,EAAMy5H,EACXz5H,MAAK,GAAc65H,EACnB75H,KAAKikB,OAAO81G,UAAUC,aAAaP,EAAa,CAC9CpuD,KAAMuuD,EAAkBjiF,IACxBjE,KAAM,CACJ53B,EAAG89G,EAAkBtE,eAGzBt1H,MAAK,GAAaA,KAAKikB,OAAO81G,UAAUE,YAAY,CAClDC,UAAW,CACTC,kBAAkB,EAClBC,MAAM,GAER/uD,KAAMrrE,MAAK,GAAe23C,IAC1BjE,KAAM,CACJ53B,EAAG9b,MAAK,GAAes1H,eAExB,QACE,GAAIt1H,KAAKikB,OAAQ,CACtB,MAAMq2C,EAAQt6D,KAAKikB,OAAOjB,SAASsmB,SACnCtpC,KAAKikB,OAAO81G,UAAUM,iBAAiBr6H,MAAK,EAAK,CAC/CqrE,KAAMguD,IAAgB,GAAYr5H,MAAK,GAAmB23C,KAAM2iB,EAAQt6D,KAAKspC,SAAW,KAAO,KAC/FoK,KAAM,CACJ53B,EAAG89G,EAAkBtE,eAGzBt1H,KAAKikB,OAAO81G,UAAUM,iBAAiBr6H,MAAK,GAAY,CACtDqrE,KAAMguD,IAAgB,GAAYr5H,MAAK,GAAe23C,IAAK2iB,GAC3D5mB,KAAM,CACJ53B,EAAG9b,MAAK,GAAes1H,cAG7B,CACA,MAAOzuH,EAAG2X,EAAG/B,EAAOC,GAAUk9G,EAAkBjiF,IAChD,OAAQ33C,KAAKspC,UACX,KAAK,EACHtpC,KAAK6G,EAAIA,EACT7G,KAAKwe,EAAIA,EACTxe,KAAKyc,MAAQA,EACbzc,KAAK0c,OAASA,EACd,MACF,KAAK,GACH,CACE,MAAOqJ,EAAWC,GAAchmB,KAAK+yD,iBACrC/yD,KAAK6G,EAAI2X,EACTxe,KAAKwe,EAAI,EAAI3X,EACb7G,KAAKyc,MAAQA,EAAQuJ,EAAaD,EAClC/lB,KAAK0c,OAASA,EAASqJ,EAAYC,EACnC,KACF,CACF,KAAK,IACHhmB,KAAK6G,EAAI,EAAIA,EACb7G,KAAKwe,EAAI,EAAIA,EACbxe,KAAKyc,MAAQA,EACbzc,KAAK0c,OAASA,EACd,MACF,KAAK,IACH,CACE,MAAOqJ,EAAWC,GAAchmB,KAAK+yD,iBACrC/yD,KAAK6G,EAAI,EAAI2X,EACbxe,KAAKwe,EAAI3X,EACT7G,KAAKyc,MAAQA,EAAQuJ,EAAaD,EAClC/lB,KAAK0c,OAASA,EAASqJ,EAAYC,EACnC,KACF,EAEJ,MAAM,WACJ+5D,GACE65C,EACJ55H,MAAK,GAAc,EAAE+/E,EAAW,GAAKl5E,GAAK4V,GAAQsjE,EAAW,GAAKvhE,GAAK9B,GACvE,MAAM,UACJ26G,GACEr3H,MAAK,GACTA,MAAK,GAAa,EAAEq3H,EAAU,GAAKxwH,GAAK4V,GAAQ46G,EAAU,GAAK74G,GAAK9B,EACtE,CACA,iBAAOwzC,CAAWC,EAAMhZ,GACtBye,GAAiB1F,WAAWC,EAAMhZ,GAClCkiF,GAAgBxG,gBAAkB17E,EAAUsI,iBAAiB3T,SAASrmC,OAAO3D,OAAS,SACxF,CACA,0BAAOupD,CAAoB5iD,EAAM3G,GAC/B,OAAQ2G,GACN,KAAK8kB,EAA2BS,gBAC9BqrG,GAAgBxG,cAAgB/wH,EAChC,MACF,KAAKyrB,EAA2BU,oBAC9BorG,GAAgBE,kBAAoBz3H,EACpC,MAEN,CACA,eAAA2rD,CAAgB5mD,EAAG2X,GAAI,CACvB,mBAAIo2B,GACF,OAAO50C,MAAK,EACd,CACA,yBAAI2xD,GACF,OAAO3xD,MAAK,EACd,CACA,YAAAwgD,CAAa/3C,EAAM3G,GACjB,OAAQ2G,GACN,KAAK8kB,EAA2BS,gBAC9BhuB,MAAK,GAAa8B,GAClB,MACF,KAAKyrB,EAA2BU,oBAC9BjuB,MAAK,GAAiB8B,GACtB,MAEN,CACA,oCAAWmnD,GACT,MAAO,CAAC,CAAC17B,EAA2BS,gBAAiBqrG,GAAgBxG,eAAgB,CAACtlG,EAA2BU,oBAAqBorG,GAAgBE,mBACxJ,CACA,sBAAI9sE,GACF,MAAO,CAAC,CAACl/B,EAA2BS,gBAAiBhuB,KAAKmuC,OAASkrF,GAAgBxG,eAAgB,CAACtlG,EAA2BU,oBAAqBjuB,MAAK,IAAcq5H,GAAgBE,mBAAoB,CAAChsG,EAA2BW,eAAgBluB,MAAK,IAC9P,CACA,cAAA+xD,GACE/xD,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,MAAK,EAAK,CAChDP,KAAM,CACJ2zB,KAAMpzB,KAAKmuC,MACX,eAAgBnuC,KAAKwoB,WAGzBxoB,MAAK,GAAcu8G,YAAYv8G,KAAKmuC,OACpC/T,MAAM23B,gBACR,CACA,IAAa5jB,GACX,MAAMmsF,EAAqB,CAACnH,EAAKoH,KAC/Bv6H,KAAKmuC,MAAQglF,EACbnzH,KAAKwoB,QAAU+xG,EACfv6H,KAAK+xD,kBAEDqhE,EAAapzH,KAAKmuC,MAClBqsF,EAAex6H,KAAKwoB,QAC1BxoB,KAAK4oD,YAAY,CACf/M,IAAKy+E,EAAmBn0H,KAAKnG,KAAMmuC,EAAOkrF,GAAgBG,iBAC1D19E,KAAMw+E,EAAmBn0H,KAAKnG,KAAMozH,EAAYoH,GAChDz+E,KAAM/7C,KAAKu0C,WAAWoY,SAASxmD,KAAKnG,KAAKu0C,WAAYv0C,MACrDg8C,UAAU,EACVvzC,KAAM8kB,EAA2BS,gBACjCiuB,qBAAqB,EACrBC,UAAU,IAEZl8C,KAAKuwD,iBAAiB,CACpBnF,OAAQ,gBACRjd,MAAOnuC,KAAKu0C,WAAW+N,mBAAmBnU,KACzC,EACL,CACA,IAAiB6hF,GACf,MAAMyK,EAAiBz6H,MAAK,GACtB06H,EAAeC,IACnB36H,MAAK,GAAa26H,EAClB36H,MAAK,GAAiB26H,IAExB36H,KAAK4oD,YAAY,CACf/M,IAAK6+E,EAAav0H,KAAKnG,KAAMgwH,GAC7Bl0E,KAAM4+E,EAAav0H,KAAKnG,KAAMy6H,GAC9B1+E,KAAM/7C,KAAKu0C,WAAWoY,SAASxmD,KAAKnG,KAAKu0C,WAAYv0C,MACrDg8C,UAAU,EACVvzC,KAAM8kB,EAA2BO,cACjCmuB,qBAAqB,EACrBC,UAAU,IAEZl8C,KAAKuwD,iBAAiB,CACpBnF,OAAQ,oBACR4kE,cACC,EACL,CACA,kBAAIjzD,GACF,GAAI/8D,KAAKu0C,WAAWkL,gBAAiB,CACnC,MAAMtJ,EAAcn2C,MAAK,EAAe,IAAIk7G,GAAY,CACtDpnE,OAAQ9zC,OAEV,MAAO,CAAC,CAAC,cAAem2C,GAC1B,CACA,OAAO/b,MAAM2iC,cACf,CACA,cAAAmF,GACE9nC,MAAM8nC,iBACNliE,KAAK8mC,IAAItd,UAAUo7B,OAAO,YAAY,EACxC,CACA,aAAAud,GACE/nC,MAAM+nC,gBACNniE,KAAK8mC,IAAItd,UAAUo7B,OAAO,YAAY,EACxC,CACA,iBAAA6T,GACE,OAAOr+B,MAAMq+B,kBAAkBz4D,MAAK,KACtC,CACA,kBAAAg6D,GACE,MAAO,CAAC,EAAG,EACb,CACA,OAAAgG,CAAQ3R,EAAIC,GACV,OAAOl0B,MAAM4lC,QAAQ3R,EAAIC,EAAItuD,MAAK,KACpC,CACA,SAAAqgE,CAAU7b,GACHxkD,KAAKuqD,qBACRvqD,KAAKikB,OAAO22G,kBAAkB56H,MAE5BwkD,GACFxkD,KAAK8mC,IAAI0d,OAEb,CACA,MAAA3V,GACE7uC,MAAK,KACLA,KAAKuwD,iBAAiB,CACpBnF,OAAQ,YAEVhxB,MAAMyU,QACR,CACA,OAAA2f,GACOxuD,KAAKikB,SAGVmW,MAAMo0B,UACW,OAAbxuD,KAAK8mC,MAGT9mC,MAAK,KACAA,KAAKg3D,iBACRh3D,KAAKikB,OAAOG,IAAIpkB,OAEpB,CACA,SAAA64D,CAAU50C,GACR,IAAI42G,GAAiB,EACjB76H,KAAKikB,SAAWA,EAClBjkB,MAAK,KACIikB,IACTjkB,MAAK,GAAgBikB,GACrB42G,GAAkB76H,KAAKikB,QAAUjkB,KAAK8mC,KAAKtd,UAAUD,SAAS,mBAEhE6Q,MAAMy+B,UAAU50C,GAChBjkB,KAAKk1C,KAAKl1C,KAAKi2D,YACX4kE,GACF76H,KAAK8sD,QAET,CACA,IAAiBkjE,GACVhwH,MAAK,KAGVA,MAAK,GAAoB,CACvB45H,kBAAmB55H,MAAK,GAAmB63H,cAAc7H,EAAY,KAEvEhwH,KAAKy4D,oBACLz4D,KAAKy6D,UACP,CACA,MACmB,OAAbz6D,MAAK,GAAiBA,KAAKikB,SAG/BjkB,KAAKikB,OAAO81G,UAAUlrF,OAAO7uC,MAAK,GAClCA,MAAK,EAAM,KACXA,KAAKikB,OAAO81G,UAAUlrF,OAAO7uC,MAAK,IAClCA,MAAK,GAAa,KACpB,CACA,IAAgBikB,EAASjkB,KAAKikB,QACX,OAAbjkB,MAAK,MAIPuP,GAAIvP,MAAK,EACT65H,WAAY75H,MAAK,IACfikB,EAAO81G,UAAUe,KAAK,CACxBzvD,KAAMrrE,MAAK,GAAmB23C,IAC9Bl4C,KAAM,CACJ2pC,QAAS,UACThW,KAAMpzB,KAAKmuC,MACX,eAAgBnuC,KAAKwoB,SAEvB0xG,UAAW,CACTjmF,WAAW,EACXmmF,KAAMp6H,MAAK,IAEb0zC,KAAM,CACJ53B,EAAG9b,MAAK,GAAmBs1H,eAE5B,GAAO,IACVt1H,MAAK,GAAaikB,EAAO81G,UAAUE,YAAY,CAC7CC,UAAW,CACTC,kBAAkB,EAClBC,KAAMp6H,MAAK,IAEbqrE,KAAMrrE,MAAK,GAAe23C,IAC1BjE,KAAM,CACJ53B,EAAG9b,MAAK,GAAes1H,cAExBt1H,MAAK,IACJA,MAAK,KACPA,MAAK,GAAc+L,MAAM04G,SAAWzkH,MAAK,IAE7C,CACA,SAAO,EAAa6G,EAAG2X,EAAG/B,EAAOC,GAAS49C,GACxC,OAAQA,GACN,KAAK,GACH,MAAO,CAAC,EAAI97C,EAAI9B,EAAQ7V,EAAG6V,EAAQD,GACrC,KAAK,IACH,MAAO,CAAC,EAAI5V,EAAI4V,EAAO,EAAI+B,EAAI9B,EAAQD,EAAOC,GAChD,KAAK,IACH,MAAO,CAAC8B,EAAG,EAAI3X,EAAI4V,EAAOC,EAAQD,GAEtC,MAAO,CAAC5V,EAAG2X,EAAG/B,EAAOC,EACvB,CACA,MAAAokD,CAAOxG,GACL,MAAM,UACJy/D,GACE/5H,KAAKikB,OACT,IAAI0zB,EACA33C,MAAK,IACPs6D,GAASA,EAAQt6D,KAAKspC,SAAW,KAAO,IACxCqO,EAAM0hF,IAAgB,GAAYr5H,MAAK,GAAmB23C,IAAK2iB,IAE/D3iB,EAAM0hF,IAAgB,GAAY,CAACr5H,KAAK6G,EAAG7G,KAAKwe,EAAGxe,KAAKyc,MAAOzc,KAAK0c,QAAS49C,GAE/Ey/D,EAAUM,iBAAiBr6H,MAAK,EAAK,CACnCqrE,KAAM1zB,EACNl4C,KAAM,CACJ,qBAAsB66D,KAG1By/D,EAAUM,iBAAiBr6H,MAAK,GAAY,CAC1CqrE,KAAMguD,IAAgB,GAAYr5H,MAAK,GAAe23C,IAAK2iB,GAC3D76D,KAAM,CACJ,qBAAsB66D,IAG5B,CACA,MAAAl+C,GACE,GAAIpc,KAAK8mC,IACP,OAAO9mC,KAAK8mC,IAEd,MAAMA,EAAM1M,MAAMhe,SACdpc,MAAK,KACP8mC,EAAIrB,aAAa,aAAczlC,MAAK,IACpC8mC,EAAIrB,aAAa,OAAQ,SAEvBzlC,MAAK,GACP8mC,EAAItd,UAAUpF,IAAI,QAElBpkB,KAAK8mC,IAAIhe,iBAAiB,UAAW9oB,MAAK,GAASmG,KAAKnG,MAAO,CAC7Ds0C,OAAQt0C,KAAKu0C,WAAWC,UAG5B,MAAMumF,EAAe/6H,MAAK,GAAgBoM,SAAS0D,cAAc,OAQjE,OAPAg3B,EAAIC,OAAOg0F,GACXA,EAAat1F,aAAa,cAAe,QACzCs1F,EAAa7nF,UAAY,WACzB6nF,EAAahvH,MAAM04G,SAAWzkH,MAAK,GACnCA,KAAKy6D,UACLziB,GAAWh4C,KAAMA,MAAK,GAAe,CAAC,cAAe,iBACrDA,KAAKmiE,gBACEr7B,CACT,CACA,WAAAk0F,GACOh7H,KAAK+kB,YACR/kB,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,MAAK,GAAY,CACvDk6H,UAAW,CACTe,SAAS,IAIjB,CACA,YAAAC,GACOl7H,KAAK+kB,YACR/kB,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,MAAK,GAAY,CACvDk6H,UAAW,CACTe,SAAS,IAIjB,CACA,IAAShyG,GACPowG,GAAgBp7E,iBAAiBvkC,KAAK1Z,KAAMipB,EAC9C,CACA,UAAAqwG,CAAW3yG,GAET,OADA3mB,KAAKikB,OAAO+mC,SAAShrD,MACb2mB,GACN,KAAK,EACL,KAAK,EACH3mB,MAAK,IAAU,GACf,MACF,KAAK,EACL,KAAK,EACHA,MAAK,IAAU,GACf,MAEN,CACA,IAAUysC,GACR,IAAKzsC,MAAK,GACR,OAEF,MAAM0lD,EAAY70C,OAAO80C,eACrBlZ,EACFiZ,EAAUy1E,YAAYn7H,MAAK,GAAaA,MAAK,IAE7C0lD,EAAUy1E,YAAYn7H,MAAK,GAAYA,MAAK,GAEhD,CACA,MAAA8sD,GACE1yB,MAAM0yB,SACD9sD,MAAK,IAGVA,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,MAAK,GAAY,CACvDk6H,UAAW,CACTe,SAAS,EACT51G,UAAU,IAGhB,CACA,QAAA2lC,GACE5wB,MAAM4wB,WACDhrD,MAAK,KAGVA,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,MAAK,GAAY,CACvDk6H,UAAW,CACT70G,UAAU,KAGTrlB,MAAK,IACRA,MAAK,IAAU,GAEnB,CACA,oBAAIo6D,GACF,OAAQp6D,MAAK,EACf,CACA,IAAAk1C,CAAKoW,EAAUtrD,KAAKi2D,YAClB77B,MAAM8a,KAAKoW,GACPtrD,KAAKikB,SACPjkB,KAAKikB,OAAO81G,UAAUM,iBAAiBr6H,MAAK,EAAK,CAC/Ck6H,UAAW,CACTxyF,QAAS4jB,KAGbtrD,KAAKikB,OAAO81G,UAAUM,iBAAiBr6H,MAAK,GAAY,CACtDk6H,UAAW,CACTxyF,QAAS4jB,KAIjB,CACA,MACE,OAAOtrD,MAAK,GAAmBA,KAAKspC,SAAW,CACjD,CACA,MACE,GAAItpC,MAAK,GACP,OAAO,KAET,MAAO+lB,EAAWC,GAAchmB,KAAK82D,gBAC9B5sB,EAAOC,GAASnqC,KAAK+2D,gBACtBxf,EAAQv3C,MAAK,GACb4hH,EAAa,IAAIlvE,aAA4B,EAAf6E,EAAMz2C,QAC1C,IAAImI,EAAI,EACR,IAAK,MAAM,EACTpC,EAAC,EACD2X,EAAC,MACD/B,EAAK,OACLC,KACG66B,EAAO,CACV,MAAM3H,EAAK/oC,EAAIkf,EAAYmkB,EACrB2F,GAAM,EAAIrxB,GAAKwH,EAAamkB,EAClCy3E,EAAW34G,GAAK24G,EAAW34G,EAAI,GAAK2mC,EACpCgyE,EAAW34G,EAAI,GAAK24G,EAAW34G,EAAI,GAAK4mC,EACxC+xE,EAAW34G,EAAI,GAAK24G,EAAW34G,EAAI,GAAK2mC,EAAKnzB,EAAQsJ,EACrD67F,EAAW34G,EAAI,GAAK24G,EAAW34G,EAAI,GAAK4mC,EAAKnzB,EAASsJ,EACtD/c,GAAK,CACP,CACA,OAAO24G,CACT,CACA,IAAmB7iF,GACjB,OAAO/+B,MAAK,GAAmBqoD,UAAUtpB,EAAM/+B,MAAK,KACtD,CACA,wBAAOo7H,CAAkBn3G,EAAQuzB,GAC/Bn2C,OAAQikD,EAAS,EACjBz+C,EAAC,EACD2X,IAEA,MACE3X,EAAG69C,EACHlmC,EAAGmmC,EACHloC,MAAO0yC,EACPzyC,OAAQ0yC,GACN9J,EAAUv7B,wBACRs3B,EAAK,IAAI1D,gBACTrJ,EAASrwB,EAAOm9B,eAAeC,GAC/B+Z,EAAoBh5C,IACxBi/B,EAAGL,QACHhhD,MAAK,GAAcikB,EAAQ7B,IAE7BvR,OAAOiY,iBAAiB,OAAQsyC,EAAmB,CACjD9mB,WAEFzjC,OAAOiY,iBAAiB,YAAasyC,EAAmB,CACtD9mB,WAEFzjC,OAAOiY,iBAAiB,cAAeikB,GAAW,CAChDgI,SAAS,EACT4e,SAAS,EACTrf,WAEFzjC,OAAOiY,iBAAiB,cAAegkB,GAAe,CACpDwH,WAEFgR,EAAUx8B,iBAAiB,cAAe9oB,MAAK,GAAemG,KAAKnG,KAAMikB,GAAS,CAChFqwB,WAEFt0C,KAAKq7H,eAAiB,IAAIlC,GAAsB,CAC9CtyH,IACA2X,KACC,CAACkmC,EAAQC,EAAQwK,EAAaC,GAAenrC,EAAOtG,MAAO3d,KAAKu5H,kBAAoB,EAAG/hF,EAAO,QAE/FjoC,GAAIvP,KAAKs7H,iBACTzB,WAAY75H,KAAKu7H,sBACft3G,EAAO81G,UAAUe,KAAK,CACxBzvD,KAAM,CAAC,EAAG,EAAG,EAAG,GAChB5rE,KAAM,CACJ2pC,QAAS,UACThW,KAAMpzB,KAAK6yH,cACX,eAAgB7yH,KAAKw5H,iBAEvBU,UAAW,CACTjmF,WAAW,EACXmmF,MAAM,GAER1mF,KAAM,CACJ53B,EAAG9b,KAAKq7H,eAAe/F,eAExB,GAAM,GACX,CACA,SAAO,CAAerxG,EAAQgF,GACxBjpB,KAAKq7H,eAAej3G,IAAI6E,IAC1BhF,EAAO81G,UAAUM,iBAAiBr6H,KAAKs7H,iBAAkB,CACvD5nF,KAAM,CACJ53B,EAAG9b,KAAKq7H,eAAe/F,cAI/B,CACA,SAAO,CAAcrxG,EAAQgF,GACtBjpB,KAAKq7H,eAAev9E,UAQvB75B,EAAO81G,UAAUlrF,OAAO7uC,KAAKs7H,kBAP7Br3G,EAAOmiC,sBAAsBn9B,GAAO,EAAO,CACzCwwG,YAAaz5H,KAAKs7H,iBAClB1B,kBAAmB55H,KAAKq7H,eAAenE,cACvC2C,WAAY75H,KAAKu7H,qBACjB91E,iBAAkB,iBAKtBzlD,KAAKs7H,kBAAoB,EACzBt7H,KAAKq7H,eAAiB,KACtBr7H,KAAKu7H,qBAAuB,EAC9B,CACA,wBAAa5yE,CAAY/5C,EAAMqV,EAAQkzB,GACrC,IAAIioD,EAAc,KAClB,GAAIxwF,aAAgBkxG,GAA4B,CAC9C,MACElxG,MAAM,WACJgzG,EAAU,KACV7iF,EAAI,SACJuK,EAAQ,GACR/5B,EAAE,MACF4+B,EAAK,QACL3lB,EAAO,SACPmiC,EAAQ,SACRuI,EAAQ,YACRtI,EAAW,aACX8L,EAAY,iBACZC,GAEF1yC,QACEjH,MAAM,WACJ8mC,KAGFl1C,EACJwwF,EAAcxwF,EAAO,CACnBqyD,eAAgBn0C,EAAqBG,UACrCkhB,MAAO59B,MAAM2sB,KAAKiR,GAClB3lB,UACAo5F,aACArqE,MAAO,KACP0L,UAAWa,EAAa,EACxB/kB,KAAMA,EAAK57B,MAAM,GACjBmmC,WACAihB,oBAAqBh7C,EACrBA,KACAk7C,SAAS,EACTE,WACAuI,WACArd,QAAS+U,GAAatvB,KAAO,KAC7Bo7B,eACAC,mBAEJ,MAAO,GAAI/nD,aAAgBgxG,GAAsB,CAC/C,MACEhxG,MAAM,SACJizG,EAAQ,KACR9iF,EAAI,SACJuK,EAAQ,GACR/5B,EAAE,MACF4+B,EACAq0E,aACEgQ,SAAUxC,GACX,SACDrlE,EAAQ,SACRuI,EAAQ,YACRtI,EAAW,aACX8L,EAAY,iBACZC,GAEF1yC,QACEjH,MAAM,WACJ8mC,KAGFl1C,EACJwwF,EAAcxwF,EAAO,CACnBqyD,eAAgBn0C,EAAqBG,UACrCkhB,MAAO59B,MAAM2sB,KAAKiR,GAClB6hF,YACAnO,WACAtqE,MAAO,KACP0L,UAAWa,EAAa,EACxB/kB,KAAMA,EAAK57B,MAAM,GACjBmmC,WACAihB,oBAAqBh7C,EACrBA,KACAk7C,SAAS,EACTE,WACAuI,WACArd,QAAS+U,GAAatvB,KAAO,KAC7Bo7B,eACAC,mBAEJ,CACA,MAAM,MACJxoB,EAAK,WACLyzE,EAAU,SACVC,EAAQ,QACRr5F,GACE5Z,EACEklC,QAAe1Z,MAAMuuB,YAAY/5C,EAAMqV,EAAQkzB,GACrDrD,EAAO3F,MAAQ/Q,GAAKC,gBAAgB8Q,GACpC2F,EAAOtrB,QAAUA,GAAW,EACxBq5F,IACF/tE,GAAO,GAAallC,EAAKohH,WAE3Bl8E,EAAOkiB,aAAeopC,EAClBxwF,EAAKinC,SACP/B,EAAOmqB,eAAervD,GAExB,MAAOmX,EAAWC,GAAc8tB,EAAOgjB,gBAChC5sB,EAAOC,GAAS2J,EAAOijB,gBAC9B,GAAI6qD,EAAY,CACd,MAAMrqE,EAAQzD,GAAO,GAAS,GAC9B,IAAK,IAAI7qC,EAAI,EAAGA,EAAI24G,EAAW9gH,OAAQmI,GAAK,EAC1CsuC,EAAMttC,KAAK,CACTpD,GAAI+6G,EAAW34G,GAAKihC,GAASnkB,EAC7BvH,EAAG,GAAKojG,EAAW34G,EAAI,GAAKkhC,GAASnkB,EACrCvJ,OAAQmlG,EAAW34G,EAAI,GAAK24G,EAAW34G,IAAM8c,EAC7CrJ,QAASklG,EAAW34G,EAAI,GAAK24G,EAAW34G,EAAI,IAAM+c,IAGtD8tB,GAAO,KACPA,GAAO,KACPA,EAAOgtB,OAAOhtB,EAAOxK,SACvB,MAAO,GAAIu4E,EAAU,CACnB/tE,GAAO,IAAmB,EAC1B,MAAMg8E,EAASjO,EAAS,GAClB3lD,EAAQ,CACZr1D,EAAGipH,EAAO,GAAK5lF,EACf1rB,EAAGwH,GAAc8pG,EAAO,GAAK3lF,IAEzB2tF,EAAW,IAAIqB,GAAsBj9D,EAAO,CAAC,EAAG,EAAGn2C,EAAWC,GAAa,EAAG8tB,GAAO,GAAa,GAAG,EAAM,MACjH,IAAK,IAAI7qC,EAAI,EAAG2hC,EAAKklF,EAAOhvH,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAC/CizD,EAAMr1D,EAAIipH,EAAO7mH,GAAKihC,EACtBgyB,EAAM19C,EAAIwH,GAAc8pG,EAAO7mH,EAAI,GAAKkhC,GACxC2tF,EAAS1zG,IAAI83C,GAEf,MAAM,GACJ3sD,EAAE,WACFsqH,GACE51G,EAAO81G,UAAUe,KAAK,CACxBzvD,KAAM,CAAC,EAAG,EAAG,EAAG,GAChB5rE,KAAM,CACJ2pC,QAAS,UACThW,KAAM0gB,EAAO3F,MACb,eAAgB2F,EAAO0lF,iBAEzBU,UAAW,CACTjmF,WAAW,EACXmmF,MAAM,GAER1mF,KAAM,CACJ53B,EAAGg8G,EAASxC,eAEb,GAAM,GACTxhF,GAAO,GAAoB,CACzB8lF,kBAAmB9B,EAASZ,cAC5BuC,YAAalqH,EACbsqH,eAEF/lF,GAAO,KACPA,EAAOgtB,OAAOhtB,EAAO0kB,eACvB,CACA,OAAO1kB,CACT,CACA,SAAAuU,CAAU2I,GAAe,GACvB,GAAIhxD,KAAK89C,WAAakT,EACpB,OAAO,KAET,GAAIhxD,KAAKyqD,QACP,OAAOzqD,KAAKghE,mBAEd,MAAM7yB,EAAQynB,GAAiBwB,cAAc/Z,QAAQr9C,KAAKu0C,WAAW6N,eAAepiD,KAAKmuC,QACnFia,EAAahuB,MAAMiuB,UAAU2I,GASnC,OARA/tD,OAAOmjC,OAAOgiB,EAAY,CACxBja,QACA3lB,QAASxoB,KAAKwoB,QACdwnG,UAAWhwH,MAAK,GAChB4hH,WAAY5hH,MAAK,KACjB24H,SAAU34H,MAAK,GAAmBooD,EAAWrpB,QAE/C/+B,KAAK41C,WAAWwS,GACZpoD,KAAKuqD,sBAAwBvqD,MAAK,GAAmBooD,GAChD,MAETA,EAAW74C,GAAKvP,KAAKuqD,oBACdnC,EACT,CACA,IAAmBA,GACjB,MAAM,MACJja,GACEnuC,KAAKg2D,aACT,OAAOh2D,KAAKm+D,kBAAoB/V,EAAWja,MAAMx+B,KAAK,CAAC+tB,EAAGz0B,IAAMy0B,IAAMyQ,EAAMllC,GAC9E,CACA,uBAAAwmD,CAAwB/E,GACtB,OAAI1qD,KAAKyqD,SACPC,EAAW1V,OACJ,OAET0V,EAAWmY,aAAa,CACtB9jC,KAAM/+B,KAAKogE,aACXvB,MAAO7+D,KAAK61C,UAEP,KACT,CACA,8BAAOoV,GACL,OAAO,CACT,EAQF,MAAMuwE,GACJ,IAAiBv4H,OAAOwJ,OAAO,MAC/B,cAAAgvH,CAAe/3H,EAAM5B,GACnB9B,KAAK0D,GAAQ5B,EACb9B,KAAK07H,kBAAkBh4H,EAAM5B,EAC/B,CACA,gBAAAu4H,CAAiBzrC,GACf,GAAKA,EAGL,IAAK,MAAOlrF,EAAM5B,KAAUmB,OAAOsC,QAAQqpF,GACpClrF,EAAKw1B,WAAW,MACnBl5B,KAAKy7H,eAAe/3H,EAAM5B,EAGhC,CACA,iBAAA45H,CAAkBh4H,EAAM5B,GACtB9B,MAAK,GAAe0D,GAAQ5B,CAC9B,CACA,eAAA65H,GACE,MAAMl8H,EAAOO,MAAK,GAElB,OADAA,MAAK,GAAiBiD,OAAOwJ,OAAO,MAC7B,CACLhN,OAEJ,CACA,KAAA81E,GACEv1E,MAAK,GAAiBiD,OAAOwJ,OAAO,KACtC,CACA,SAAAmvH,CAAUj4H,EAAU3D,MAClBA,KAAKq6H,iBAAiB12H,EACxB,CACA,KAAA4F,GACEivB,EAAY,kBACd,EAEF,MAAMqjG,WAAsBjmE,GAC1B,IAAgB,KAChB,IACA+8D,aAAe,KACfmJ,QAAU,KACVj0F,uBAAyB,EACzBA,sBAAwB,KACxBA,UAAsB,KACtBA,UAA2B,KAC3BA,UAAgC,KAChCA,qBAAuB,EACvB,WAAA7jC,CAAYgpD,GACV5yB,MAAM4yB,GACNhtD,MAAK,GAAmBgtD,EAAO+uE,kBAAmB,EAClD/7H,KAAKg8H,aAAahvE,EACpB,CACA,cAAA+E,GACE/xD,KAAK2yH,cAAclrF,OAAOznC,KAAKmuC,OAC/B/T,MAAM23B,gBACR,CACA,YAAAiqE,CAAahvE,GACPA,EAAOivE,eACTj8H,MAAK,GAAoBgtD,GACzBhtD,MAAK,KAET,CACA,KAAoB,aAClBi8H,EAAY,OACZC,EAAM,eACNC,IAEAn8H,MAAK,GAAgBi8H,EACrBj8H,KAAKo8H,kBAAoBD,EACpBn8H,KAAKuqD,qBACRvqD,KAAKu0C,WAAWoS,UAAU,gBAAgB3mD,KAAKq1C,0BAE7C6mF,GAAU,GACZl8H,KAAK87H,QAAUI,EACfl8H,KAAKikB,OAAO81G,UAAUC,aAAakC,EAAQD,EAAaI,oBAExDr8H,KAAK87H,QAAU97H,MAAK,GAAei8H,EAAcj8H,KAAKikB,QAExDjkB,MAAK,GAAYi8H,EAAatkF,IAChC,CACA,IAAeskF,EAAch4G,GAC3B,MAAM,GACJ1U,GACE0U,EAAO81G,UAAUe,KAAKe,GAAcS,oBAAoBt8H,KAAKo8H,gBAAgBT,kBAAmBM,EAAaM,uBAAuB,GAAO,GAC/I,OAAOhtH,CACT,CACA,0BAAO+sH,CAAoBj+F,EAAImE,GAC7B,MAAMg6F,EAAS,IAAInkF,IAAIp1C,OAAOyE,KAAK22B,IACnC,IAAK,MAAOj0B,EAAKtI,KAAUmB,OAAOsC,QAAQi9B,GACpCg6F,EAAO30H,IAAIuC,GACbnH,OAAOmjC,OAAO/H,EAAGj0B,GAAMtI,GAEvBu8B,EAAGj0B,GAAOtI,EAGd,OAAOu8B,CACT,CACA,+BAAOo+F,CAAyBC,GAC9BlkG,EAAY,kBACd,CACA,mBAAWmkG,GACTnkG,EAAY,kBACd,CACA,mBAAW0+B,GACT,OAAO,CACT,CACA,kCAAW0lE,GACT,OAAO,CACT,CACA,0BAAOvxE,CAAoB5iD,EAAM3G,GAC/B,MAAM+6H,EAAe78H,KAAK28H,SAAS95H,IAAI4F,GACnCo0H,GACF78H,KAAK88H,uBAAuBrB,eAAeoB,EAAc/6H,GAEvD9B,KAAK+8H,iBACPlB,IAAc,GAAaJ,eAAeoB,EAAc/6H,GACxD9B,KAAK+8H,eAAehD,UAAUM,iBAAiBr6H,KAAKg9H,eAAgBh9H,KAAK88H,uBAAuBnB,mBAEpG,CACA,YAAAn7E,CAAa/3C,EAAM3G,GACjB,MAAM+6H,EAAe78H,KAAKgE,YAAY24H,SAAS95H,IAAI4F,GAC/Co0H,GACF78H,KAAKi9H,gBAAgBx0H,EAAMo0H,EAAc/6H,EAE7C,CACA,oCAAWmnD,GACT,MAAM2lC,EAAa,GACbjrF,EAAU3D,KAAK88H,uBACrB,IAAK,MAAOr0H,EAAM/E,KAAS1D,KAAK28H,SAC9B/tC,EAAW3kF,KAAK,CAACxB,EAAM9E,EAAQD,KAEjC,OAAOkrF,CACT,CACA,sBAAIniC,GACF,MAAMmiC,EAAa,IACb,gBACJwtC,GACEp8H,KACJ,IAAK,MAAOyI,EAAM/E,KAAS1D,KAAKgE,YAAY24H,SAC1C/tC,EAAW3kF,KAAK,CAACxB,EAAM2zH,EAAgB14H,KAEzC,OAAOkrF,CACT,CACA,eAAAquC,CAAgBx0H,EAAM/E,EAAM5B,GAC1B,MAAM6B,EAAU3D,KAAKo8H,gBACfc,EAAav5H,EAAQD,GACrBG,EAASiN,IACbnN,EAAQ83H,eAAe/3H,EAAMoN,GAC7B,MAAMu6D,EAAOrrE,MAAK,GAAcy7H,eAAe/3H,EAAMoN,GACjDu6D,GACFrrE,MAAK,GAAYqrE,GAEnBrrE,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,KAAK87H,QAASn4H,EAAQg4H,mBAC1DlzH,IAASzI,KAAK48G,WAChB58G,KAAK+xD,kBAGT/xD,KAAK4oD,YAAY,CACf/M,IAAKh4C,EAAOsC,KAAKnG,KAAM8B,GACvBg6C,KAAMj4C,EAAOsC,KAAKnG,KAAMk9H,GACxBnhF,KAAM/7C,KAAKu0C,WAAWoY,SAASxmD,KAAKnG,KAAKu0C,WAAYv0C,MACrDg8C,UAAU,EACVvzC,OACAwzC,qBAAqB,EACrBC,UAAU,GAEd,CACA,WAAA2gB,GACE78D,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,KAAK87H,QAASD,GAAcS,oBAAoBt8H,MAAK,GAAcm9H,6BAA6Bn9H,MAAK,MAAwB,CACnKqrE,KAAMrrE,MAAK,OAEf,CACA,UAAAq7D,GACEr7D,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,KAAK87H,QAASD,GAAcS,oBAAoBt8H,MAAK,GAAco9H,4BAA4Bp9H,MAAK,MAAwB,CAClKqrE,KAAMrrE,MAAK,OAEf,CACA,cAAAy5D,CAAe4jE,EAAIC,GACjBt9H,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,KAAK87H,QAAS,CACpDzwD,KAAMrrE,MAAK,MAEf,CACA,aAAAw5D,GACEx5D,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,KAAK87H,QAASD,GAAcS,oBAAoBt8H,MAAK,GAAcu9H,+BAA+Bv9H,MAAK,KAAuBA,KAAK+yD,kBAAmB,CAC5LsY,KAAMrrE,MAAK,OAEf,CACA,gBAAA6/D,GACE7/D,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,KAAK87H,QAAS,CACpD5B,UAAW,CACTsD,QAAQ,IAGd,CACA,eAAA59D,GACE5/D,KAAKikB,QAAQ81G,UAAUM,iBAAiBr6H,KAAK87H,QAAS,CACpD5B,UAAW,CACTsD,QAAQ,IAGd,CACA,MAAApwE,GACEhzB,MAAMgzB,SACNptD,KAAKugE,kBACLvgE,KAAKkiE,gBACP,CACA,cAAAA,GACE9nC,MAAM8nC,iBACNliE,KAAK8mC,IAAItd,UAAUo7B,OAAO,YAAY,EACxC,CACA,aAAAud,GACE/nC,MAAM+nC,gBACNniE,KAAK8mC,IAAItd,UAAUo7B,OAAO,YAAY,EACxC,CACA,kBAAAoV,GACE,MAAO,CAAC,EAAG,EACb,CACA,eAAI1lD,GACF,OAAO,CACT,CACA,SAAA+rD,CAAU7b,GACHxkD,KAAKuqD,qBACRvqD,KAAKikB,OAAO22G,kBAAkB56H,MAEhCA,KAAKs4D,cAAe,EAChBt4D,MAAK,KACPA,MAAK,IAAmB,EACxBA,KAAKotD,SACLptD,KAAKikB,OAAO6mC,YAAY9qD,MACpBwkD,GAASxkD,KAAKygE,YAChBzgE,KAAK8mC,IAAI0d,QAGf,CACA,MAAA3V,GACE7uC,MAAK,KACLo6B,MAAMyU,QACR,CACA,OAAA2f,GACOxuD,KAAKikB,SAGVmW,MAAMo0B,UACW,OAAbxuD,KAAK8mC,MAGT9mC,MAAK,KACLA,MAAK,GAAYA,MAAK,GAAc23C,KAC/B33C,KAAKg3D,iBACRh3D,KAAKikB,OAAOG,IAAIpkB,OAEpB,CACA,SAAA64D,CAAU50C,GACR,IAAI42G,GAAiB,EACjB76H,KAAKikB,SAAWA,GAClBjkB,KAAKu0C,WAAWuQ,oBAAoB9kD,MACpCA,MAAK,MACIikB,IACTjkB,KAAKu0C,WAAWsQ,iBAAiB7kD,MACjCA,MAAK,GAAgBikB,GACrB42G,GAAkB76H,KAAKikB,QAAUjkB,KAAK8mC,KAAKtd,UAAUD,SAAS,mBAEhE6Q,MAAMy+B,UAAU50C,GACZ42G,GACF76H,KAAK8sD,QAET,CACA,MACuB,OAAjB9sD,KAAK87H,SAAqB97H,KAAKikB,SAGnCjkB,KAAKikB,OAAO81G,UAAUlrF,OAAO7uC,KAAK87H,SAClC97H,KAAK87H,QAAU,KACf97H,KAAKo8H,gBAAgB7mD,QACvB,CACA,IAAgBtxD,EAASjkB,KAAKikB,QACP,OAAjBjkB,KAAK87H,SAAoB97H,KAAKikB,SAAWA,IAGxB,OAAjBjkB,KAAK87H,SAIT97H,KAAKo8H,gBAAgBR,YACrB57H,KAAK87H,QAAU97H,MAAK,GAAeA,MAAK,GAAeikB,IAJrDjkB,KAAKikB,OAAO81G,UAAU0D,aAAaz9H,KAAK87H,QAAS73G,EAAO81G,WAK5D,CACA,KAAuBlzH,EAAG2X,EAAG/B,EAAOC,IAClC,MACEq2C,kBAAmB2qE,EAAIC,GAAG,SAC1Br0F,GACEtpC,KACJ,OAAQspC,GACN,KAAK,GACH,MAAO,CAAC9qB,EAAG,EAAI3X,EAAG4V,GAASkhH,EAAKD,GAAKhhH,GAAUghH,EAAKC,IACtD,KAAK,IACH,MAAO,CAAC,EAAI92H,EAAG,EAAI2X,EAAG/B,EAAOC,GAC/B,KAAK,IACH,MAAO,CAAC,EAAI8B,EAAG3X,EAAG4V,GAASkhH,EAAKD,GAAKhhH,GAAUghH,EAAKC,IACtD,QACE,MAAO,CAAC92H,EAAG2X,EAAG/B,EAAOC,GAE3B,CACA,MACE,MAAM,EACJ7V,EAAC,EACD2X,EAAC,MACD/B,EAAK,OACLC,EACAq2C,kBAAmB2qE,EAAIC,GAAG,SAC1Br0F,GACEtpC,KACJ,OAAQspC,GACN,KAAK,GACH,MAAO,CAAC,EAAI9qB,EAAG3X,EAAG4V,GAASihH,EAAKC,GAAKjhH,GAAUihH,EAAKD,IACtD,KAAK,IACH,MAAO,CAAC,EAAI72H,EAAG,EAAI2X,EAAG/B,EAAOC,GAC/B,KAAK,IACH,MAAO,CAAC8B,EAAG,EAAI3X,EAAG4V,GAASihH,EAAKC,GAAKjhH,GAAUihH,EAAKD,IACtD,QACE,MAAO,CAAC72H,EAAG2X,EAAG/B,EAAOC,GAE3B,CACA,IAAY2uD,IACTrrE,KAAK6G,EAAG7G,KAAKwe,EAAGxe,KAAKyc,MAAOzc,KAAK0c,QAAU1c,MAAK,GAAsBqrE,GACnErrE,KAAK8mC,MACP9mC,KAAKy4D,oBACLz4D,KAAKy6D,WAEPz6D,KAAKq7D,YACP,CACA,MACE,MAAM,EACJx0D,EAAC,EACD2X,EAAC,MACD/B,EAAK,OACLC,EAAM,SACN4sB,EAAQ,eACRkvB,EACAzF,kBAAmB2qE,EAAIC,IACrB39H,KACJ,QAAoB,EAAXspC,EAAekvB,GAAkB,IACxC,KAAK,EACH,MAAO,CAAC,EAAIh6C,EAAI9B,EAAQ7V,EAAG6V,EAAQD,GACrC,KAAK,EACH,MAAO,CAAC,EAAI5V,EAAI4V,EAAO,EAAI+B,EAAI9B,EAAQD,EAAOC,GAChD,KAAK,EACH,MAAO,CAAC8B,EAAG,EAAI3X,EAAI4V,EAAOC,EAAQD,GACpC,KAAK,EACH,MAAO,CAAC5V,EAAG2X,EAAI/B,GAASihH,EAAKC,GAAKjhH,GAAUihH,EAAKD,GAAKjhH,GAASihH,EAAKC,IACtE,KAAK,EACH,MAAO,CAAC,EAAIn/G,EAAG3X,EAAG4V,GAASihH,EAAKC,GAAKjhH,GAAUihH,EAAKD,IACtD,KAAK,EACH,MAAO,CAAC,EAAI72H,EAAI6V,GAAUihH,EAAKD,GAAK,EAAIl/G,EAAG9B,GAAUihH,EAAKD,GAAKjhH,GAASihH,EAAKC,IAC/E,KAAK,EACH,MAAO,CAACn/G,EAAI/B,GAASihH,EAAKC,GAAK,EAAI92H,EAAI6V,GAAUihH,EAAKD,GAAKjhH,GAASihH,EAAKC,GAAKjhH,GAAUihH,EAAKD,IAC/F,KAAK,EACH,MAAO,CAAC72H,EAAI4V,EAAO+B,EAAI9B,EAAQD,EAAOC,GACxC,KAAK,EACH,MAAO,CAAC,EAAI8B,EAAG3X,EAAI4V,EAAOC,EAAQD,GACpC,KAAK,GACH,MAAO,CAAC,EAAI5V,EAAG,EAAI2X,EAAG/B,EAAOC,GAC/B,KAAK,GACH,MAAO,CAAC8B,EAAI9B,EAAQ,EAAI7V,EAAG6V,EAAQD,GACrC,KAAK,GACH,MAAO,CAAC5V,EAAI6V,GAAUihH,EAAKD,GAAKl/G,EAAG9B,GAAUihH,EAAKD,GAAKjhH,GAASihH,EAAKC,IACvE,KAAK,GACH,MAAO,CAAC,EAAIn/G,EAAI/B,GAASihH,EAAKC,GAAK92H,EAAI6V,GAAUihH,EAAKD,GAAKjhH,GAASihH,EAAKC,GAAKjhH,GAAUihH,EAAKD,IAC/F,KAAK,GACH,MAAO,CAAC,EAAI72H,EAAG,EAAI2X,EAAI/B,GAASihH,EAAKC,GAAKjhH,GAAUihH,EAAKD,GAAKjhH,GAASihH,EAAKC,IAC9E,KAAK,GACH,MAAO,CAACn/G,EAAG,EAAI3X,EAAG4V,GAASihH,EAAKC,GAAKjhH,GAAUihH,EAAKD,IACtD,QACE,MAAO,CAAC72H,EAAG2X,EAAG/B,EAAOC,GAE3B,CACA,MAAAokD,GACO9gE,KAAKikB,QAGVjkB,KAAKikB,OAAO81G,UAAUM,iBAAiBr6H,KAAK87H,QAASD,GAAcS,oBAAoB,CACrFjxD,KAAMrrE,MAAK,MACVA,MAAK,GAAc49H,gBAAgB59H,KAAKw4D,eAAiBx4D,KAAKspC,SAAW,KAAO,MACrF,CACA,eAAA8W,GACOpgD,KAAKikB,QAGVjkB,MAAK,GAAYA,MAAK,GAAc69H,uBAAuB79H,KAAK+yD,iBAAkB/yD,KAAKikB,OAAOtG,OAChG,CACA,iCAAOmgH,GAA8B,CACrC,MAAA1hH,GACE,GAAIpc,KAAK8mC,IACP,OAAO9mC,KAAK8mC,IAEd,IAAIwyB,EAAOC,EACPv5D,KAAK61D,UACPyD,EAAQt5D,KAAK6G,EACb0yD,EAAQv5D,KAAKwe,GAEf,MAAMsoB,EAAM1M,MAAMhe,SAClB0qB,EAAItd,UAAUpF,IAAI,QAClB,MAAM25G,EAAU3xH,SAAS0D,cAAc,OAUvC,OATAg3B,EAAIC,OAAOg3F,GACXA,EAAQt4F,aAAa,cAAe,QACpCs4F,EAAQ7qF,UAAY,WACpBlzC,KAAKy6D,UACLz6D,KAAKu0C,WAAWsQ,iBAAiB7kD,MACjCA,KAAKkiE,iBACDliE,KAAK61D,SACP71D,KAAKq5D,gBAAgBC,EAAOC,GAEvBzyB,CACT,CACA,2BAAOk3F,CAAqBX,EAAIC,EAAIW,EAAcC,EAAe3I,GAC/D/8F,EAAY,kBACd,CACA,mBAAO2lG,CAAal6G,EAAQkzB,EAAWinF,EAAQn1G,GAC7C,MAAM,OACJ5nB,EACA6lB,QAASrgB,EACTsgB,QAAS3I,EAAC,UACV45B,EAAS,YACTG,GACEtvB,EACJ,GAAIgvB,GAAgBY,qCAAqCN,GACvD,OAEF,MACEv1B,UAAU,SACRsmB,IAEArlB,GAEFxH,MAAO0yC,EACPzyC,OAAQ0yC,GACN/tD,EAAO0oB,wBACLs3B,EAAKw6E,IAAc,GAAoB,IAAIl+E,gBAC3CrJ,EAASrwB,EAAOm9B,eAAeC,GACrCpJ,GAAgBK,WAAWC,EAAaH,GACxCvnC,OAAOiY,iBAAiB,YAAa1G,IAC/B61B,GAAgBU,wBAAwBv2B,EAAEg2B,YAC5Cp4C,KAAKq+H,SAASj8G,IAEf,CACDkyB,WAEFzjC,OAAOiY,iBAAiB,gBAAiB1G,IACnC61B,GAAgBU,wBAAwBv2B,EAAEg2B,YAC5Cp4C,KAAK+8H,eAAe5vE,qBAErB,CACD7Y,WAEFzjC,OAAOiY,iBAAiB,cAAe1G,IAChC61B,GAAgBW,kBAAkBx2B,EAAEm2B,eAGzCN,GAAgBE,0BAA0B/1B,EAAEg2B,WACxCyjF,IAAc,GAAayC,kBAC7BzC,IAAc,GAAa0C,oBACvB1C,IAAc,GAAa/9E,UAC7B99C,KAAK+8H,eAAe5vE,mBAAkB,GAEtCntD,KAAKq+H,SAAS,SAGjB,CACDtpF,SAAS,EACT4e,SAAS,EACTrf,WAEFzjC,OAAOiY,iBAAiB,cAAegkB,GAAe,CACpDwH,WAEFjzC,EAAOynB,iBAAiB,cAAe9oB,KAAKw+H,UAAUr4H,KAAKnG,MAAO,CAChEs0C,WAEFjzC,EAAOynB,iBAAiB,YAAa1G,IAC/B61B,GAAgBa,gBAAgB12B,EAAEq2B,YACpC1L,GAAU3qB,IAEX,CACDkyB,WAEFrwB,EAAO+iC,gBACP7P,EAAUyG,gBAAgB5I,OACtB6mF,IAAc,GAChB53G,EAAO81G,UAAUM,iBAAiBr6H,KAAKg9H,eAAgBnB,IAAc,GAAa4C,SAAS53H,EAAG2X,EAAG2wC,EAAaC,EAAc9lB,KAG9H6N,EAAUyV,6BAA6B5sD,MACvC67H,IAAc,GAAe77H,KAAKg+H,qBAAqBn3H,EAAG2X,EAAG2wC,EAAaC,EAAc9lB,GACxFuyF,IAAc,GAAyB77H,KAAKy8H,2BAC5Cz8H,KAAK+8H,eAAiB94G,IAEpB1U,GAAIvP,KAAKg9H,gBACP/4G,EAAO81G,UAAUe,KAAK96H,KAAKs8H,oBAAoBT,IAAc,GAAuBF,kBAAmBE,IAAc,GAAaU,uBAAuB,GAAM,IACrK,CACA,gBAAOiC,CAAUv1G,GAEf,GADAgvB,GAAgBa,gBAAgB7vB,EAAMwvB,YACjCojF,IAAc,GACjB,OAEF,MAAM,QACJ30G,EAAO,QACPC,EAAO,UACPixB,GACEnvB,EACCgvB,GAAgBS,gBAAgBN,KAGjCH,GAAgBc,0BAClB/4C,KAAKq+H,SAASp1G,IAGhBjpB,KAAK+8H,eAAehD,UAAUM,iBAAiBr6H,KAAKg9H,eAAgBnB,IAAc,GAAaz3G,IAAI8C,EAASC,IAC5G8wB,GAAgBO,aAAavvB,EAAMwvB,WACnC1L,GAAU9jB,IACZ,CACA,eAAOy1G,CAAShsH,GACVA,IACF1S,KAAKg9H,gBAAkB,EACvBh9H,KAAK+8H,eAAiB,KACtBlB,IAAc,GAAe,KAC7BA,IAAc,GAAyB,KACvC5jF,GAAgBiB,kBAEd2iF,IAAc,KAChBA,IAAc,GAAkB76E,QAChC66E,IAAc,GAAoB,KAClC5jF,GAAgBgB,kBAEpB,CACA,eAAOolF,CAASp1G,GACd,MAAMhF,EAASjkB,KAAK+8H,eACpB,GAAK94G,EAAL,CAQA,GALAA,EAAO+iC,eAAc,GACrBhnD,KAAK0+H,UAAS,GACVz1G,GAAO5nB,SAAW4iB,EAAO6iB,KAC3B7iB,EAAO81G,UAAUM,iBAAiBr6H,KAAKg9H,eAAgBnB,IAAc,GAAanvF,IAAIzjB,EAAM/B,QAAS+B,EAAM9B,UAEzGnnB,KAAK48H,wBAAyB,CAChC,MAAM9B,EAAOe,IAAc,GACrBK,EAASl8H,KAAKg9H,eACd2B,EAAc7D,EAAK8D,iBAWzB,YAVA36G,EAAO2kC,YAAY,CACjB/M,IAAK,KACH53B,EAAO81G,UAAUM,iBAAiB6B,EAAQpB,EAAK+D,eAAeF,KAEhE7iF,KAAM,KACJ73B,EAAO81G,UAAUM,iBAAiB6B,EAAQpB,EAAKyD,sBAEjDviF,UAAU,EACVvzC,KAAM8kB,EAA2Ba,WAGrC,CACApuB,KAAK6mF,YAAW,EAtBhB,CAuBF,CACA,iBAAOA,CAAWi4C,GAChB,MAAM76G,EAASjkB,KAAK+8H,eACpB,IAAK94G,EACH,OAAO,KAIT,GAFAA,EAAO+iC,eAAc,GACrB/iC,EAAOgpC,eAAe1/B,EAA2Ba,YAC5CytG,IAAc,GAAa/9E,UAAW,CACzC,MACEgZ,gBAAiB/wC,EAAWC,GAAW,MACvCrI,GACEsG,EACE6vB,EAAS7vB,EAAOmiC,sBAAsB,CAC1Cl/B,QAAS,EACTC,QAAS,IACR,EAAO,CACR+0G,OAAQl8H,KAAKg9H,eACbf,aAAcJ,IAAc,GAAa3E,YAAYnxG,EAAYpI,EAAOqI,EAAarI,EAAOA,EAAO3d,KAAK++H,eACxG5C,eAAgBN,IAAc,GAC9BE,iBAAkB+C,IAGpB,OADA9+H,KAAK0+H,UAAS,GACP5qF,CACT,CAGA,OAFA7vB,EAAO81G,UAAUlrF,OAAO7uC,KAAKg9H,gBAC7Bh9H,KAAK0+H,UAAS,GACP,IACT,CACA,oBAAAM,CAAqBC,GAAQ,CAC7B,sBAAOC,CAAgBC,EAAQC,EAAQC,EAAYC,EAAaC,EAAaN,GAC3EzmG,EAAY,kBACd,CACA,wBAAamwB,CAAY/5C,EAAMqV,EAAQkzB,GACrC,MACEnN,SAAS,UACPjkB,EAAS,WACTC,EAAU,MACVkkB,EAAK,MACLC,IAEAlmB,EAAOjB,SACLi5G,EAAej8H,KAAKk/H,gBAAgBh1F,EAAOC,EAAOpkB,EAAWC,EAAYhmB,KAAK++H,cAAenwH,GAC7FklC,QAAe1Z,MAAMuuB,YAAY/5C,EAAMqV,EAAQkzB,GAQrD,OAPArD,EAAOkrF,qBAAqBpwH,GAC5BklC,GAAO,GAAoB,CACzBmoF,iBAEFnoF,GAAO,KACPA,EAAOsM,kBACPtM,EAAOgtB,SACAhtB,CACT,CACA,aAAA0rF,CAAcxuE,GACZ,MAAO9mB,EAAOC,GAASnqC,KAAK+2D,iBACrBhxC,EAAWC,GAAchmB,KAAK82D,eACrC,OAAO92D,MAAK,GAAcqoD,UAAU,CAACne,EAAOC,EAAOpkB,EAAWC,GAAagrC,EAC7E,CACA,uBAAAvB,CAAwB/E,GAItB,OAHAA,EAAWmY,aAAa,CACtB9jC,KAAM/+B,KAAKogE,eAEN,IACT,CACA,8BAAOnV,GACL,OAAO,CACT,EAMF,MAAMw0E,GACJ,IAAQ,IAAIhlD,aAAa,GACzB,IACA,IACA,IACA,IACA,IACA,IAAe,GACf,IAAa,EACb,IAAY,IAAIilD,GAChB,IACA,IACA,WAAA17H,CAAY6C,EAAG2X,EAAG2wC,EAAaC,EAAc9lB,EAAU0mF,GACrDhwH,MAAK,GAAemvD,EACpBnvD,MAAK,GAAgBovD,EACrBpvD,MAAK,GAAYspC,EACjBtpC,MAAK,GAAagwH,GACjBnpH,EAAG2X,GAAKxe,MAAK,GAAgB6G,EAAG2X,GACjC,MAAM+0B,EAAOvzC,MAAK,GAAQ,CAACk4C,IAAKA,IAAKA,IAAKA,IAAKrxC,EAAG2X,GAClDxe,MAAK,GAAU,CAAC6G,EAAG2X,GACnBxe,MAAK,GAAS,CAAC,CACbuzC,OACAu8E,OAAQ9vH,MAAK,KAEfA,MAAK,GAAM4H,IAAI2rC,EAAM,EACvB,CACA,cAAAkoF,CAAe/3H,EAAM5B,GACN,iBAAT4B,IACF1D,MAAK,GAAa8B,EAEtB,CACA,IAAgB+E,EAAG2X,GACjB,OAAO62G,GAAQtT,gBAAgBl7G,EAAG2X,EAAGxe,MAAK,GAAcA,MAAK,GAAeA,MAAK,GACnF,CACA,OAAA89C,GACE,OAAQ99C,MAAK,IAAiC,IAAvBA,MAAK,GAAOc,MACrC,CACA,aAAAw9H,GACE,OAAOt+H,MAAK,GAAQc,QAAU,EAChC,CACA,GAAAsjB,CAAIvd,EAAG2X,IACJ3X,EAAG2X,GAAKxe,MAAK,GAAgB6G,EAAG2X,GACjC,MAAO2iB,EAAIC,EAAIC,EAAIE,GAAMvhC,MAAK,GAAMo7B,SAAS,EAAG,GAC1C+6F,EAAQtvH,EAAIw6B,EACZ+0F,EAAQ53G,EAAI+iB,EACZzlB,EAAIpV,KAAK+uD,MAAMz1D,MAAK,GAAem2H,EAAOn2H,MAAK,GAAgBo2H,GACrE,OAAIt6G,GAAK,EACA,MAET9b,MAAK,GAAQiK,KAAKpD,EAAG2X,GACjBwyD,MAAM7vC,IACRnhC,MAAK,GAAM4H,IAAI,CAACy5B,EAAIE,EAAI16B,EAAG2X,GAAI,GAC/Bxe,MAAK,GAAMiK,KAAKiuC,IAAKA,IAAKA,IAAKA,IAAKrxC,EAAG2X,GAChC,CACLk1B,KAAM,CACJ53B,EAAG9b,KAAKs1H,gBAIVtkD,MAAMhxE,MAAK,GAAM,KACnBA,MAAK,GAAMm8C,OAAO,EAAG,GAEvBn8C,MAAK,GAAM4H,IAAI,CAACu5B,EAAIC,EAAIC,EAAIE,EAAI16B,EAAG2X,GAAI,GACvCxe,MAAK,GAAMiK,QAAQorH,GAAQQ,mBAAmB10F,EAAIC,EAAIC,EAAIE,EAAI16B,EAAG2X,IAC1D,CACLk1B,KAAM,CACJ53B,EAAG9b,KAAKs1H,eAGd,CACA,GAAA5oF,CAAI7lC,EAAG2X,GACL,MAAMytG,EAASjsH,KAAKokB,IAAIvd,EAAG2X,GAC3B,OAAIytG,IAGwB,IAAxBjsH,MAAK,GAAQc,OACR,CACL4yC,KAAM,CACJ53B,EAAG9b,KAAKs1H,cAIP,KACT,CACA,QAAAmJ,CAAS53H,EAAG2X,EAAG2wC,EAAaC,EAAc9lB,GACxCtpC,MAAK,GAAemvD,EACpBnvD,MAAK,GAAgBovD,EACrBpvD,MAAK,GAAYspC,GAChBziC,EAAG2X,GAAKxe,MAAK,GAAgB6G,EAAG2X,GACjC,MAAM+0B,EAAOvzC,MAAK,GAAQ,CAACk4C,IAAKA,IAAKA,IAAKA,IAAKrxC,EAAG2X,GAClDxe,MAAK,GAAU,CAAC6G,EAAG2X,GACnB,MAAM24G,EAAOn3H,MAAK,GAAOmnC,IAAI,GAY7B,OAXIgwF,IACFA,EAAK5jF,KAAO,IAAIb,aAAaykF,EAAK5jF,MAClC4jF,EAAKrH,OAAS,IAAIp9E,aAAaykF,EAAKrH,SAEtC9vH,MAAK,GAAOiK,KAAK,CACfspC,OACAu8E,OAAQ9vH,MAAK,KAEfA,MAAK,GAAM4H,IAAI2rC,EAAM,GACrBvzC,MAAK,GAAa,EAClBA,KAAKs1H,YACE,IACT,CACA,cAAAsJ,GACE,OAAO5+H,MAAK,GAAOmnC,IAAI,EACzB,CACA,cAAA03F,CAAe35F,GACb,OAAKllC,MAAK,IAGVA,MAAK,GAAOiK,KAAKi7B,GACjBllC,MAAK,GAAQklC,EAAQqO,KACrBvzC,MAAK,GAAUklC,EAAQ4qF,OACvB9vH,MAAK,GAAa,EACX,CACL0zC,KAAM,CACJ53B,EAAG9b,KAAKs1H,eARHt1H,MAAK,GAAU6+H,eAAe35F,EAWzC,CACA,iBAAAq5F,GACE,IAAKv+H,MAAK,GACR,OAAOA,MAAK,GAAUu+H,oBAExBv+H,MAAK,GAAOonC,MACZpnC,MAAK,GAAe,GACpB,IAAK,IAAIiJ,EAAI,EAAG2hC,EAAK5qC,MAAK,GAAOc,OAAQmI,EAAI2hC,EAAI3hC,IAAK,CACpD,MAAM,KACJsqC,EAAI,OACJu8E,GACE9vH,MAAK,GAAOiJ,GAChBjJ,MAAK,GAAQuzC,EACbvzC,MAAK,GAAU8vH,EACf9vH,MAAK,GAAa,EAClBA,KAAKs1H,WACP,CACA,MAAO,CACL5hF,KAAM,CACJ53B,EAAG9b,MAAK,IAGd,CACA,SAAAs1H,GACE,MAAMqK,EAAStK,GAAQM,SAAS31H,MAAK,GAAM,IACrC4/H,EAASvK,GAAQM,SAAS31H,MAAK,GAAM,IAC3C,GAA4B,IAAxBA,MAAK,GAAQc,OAEf,OADAd,MAAK,GAAe,GAAGA,MAAK,QAAkB2/H,KAAUC,MACjD5/H,MAAK,GAEd,GAAIA,MAAK,GAAQc,QAAU,EAAG,CAC5B,MAAMmI,EAAIjJ,MAAK,GAAakrC,YAAY,KACxClrC,MAAK,GAAe,GAAGA,MAAK,GAAamD,MAAM,EAAG8F,QAAQ02H,KAAUC,IACpE5/H,MAAK,GAAa,CACpB,CACA,GAA4B,IAAxBA,MAAK,GAAQc,OAAc,CAC7B,MAAM++H,EAAUxK,GAAQM,SAAS31H,MAAK,GAAM,KACtC8/H,EAAUzK,GAAQM,SAAS31H,MAAK,GAAM,KAG5C,OAFAA,MAAK,GAAe,GAAGA,MAAK,QAAkB6/H,KAAWC,IACzD9/H,MAAK,GAAa,GACXA,MAAK,EACd,CACA,MAAMqJ,EAAS,GACS,IAApBrJ,MAAK,KACPqJ,EAAOY,KAAK,KAAK01H,KAAUC,KAC3B5/H,MAAK,GAAa,GAEpB,IAAK,IAAIiJ,EAAIjJ,MAAK,GAAY4qC,EAAK5qC,MAAK,GAAMc,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAAG,CACpE,MAAO82H,EAAKC,EAAKC,EAAKC,EAAKr5H,EAAG2X,GAAKxe,MAAK,GAAMmD,MAAM8F,EAAGA,EAAI,GAAGY,IAAIwrH,GAAQM,UAC1EtsH,EAAOY,KAAK,IAAI81H,KAAOC,KAAOC,KAAOC,KAAOr5H,KAAK2X,IACnD,CAGA,OAFAxe,MAAK,IAAgBqJ,EAAOhG,KAAK,KACjCrD,MAAK,GAAaA,MAAK,GAAMc,OACtBd,MAAK,EACd,CACA,WAAAk3H,CAAY/nE,EAAaC,EAAczxC,EAAOq4G,GAC5C,MAAMmB,EAAOn3H,MAAK,GAAOmnC,IAAI,GAQ7B,OAPAgwF,EAAK5jF,KAAO,IAAIb,aAAaykF,EAAK5jF,MAClC4jF,EAAKrH,OAAS,IAAIp9E,aAAaykF,EAAKrH,QACpC9vH,MAAK,GAAUi7G,MAAMj7G,MAAK,GAAQmvD,EAAaC,EAAczxC,EAAO3d,MAAK,GAAWA,MAAK,GAAYg2H,GACrGh2H,MAAK,GAAQ,KACbA,MAAK,GAAQ,KACbA,MAAK,GAAS,KACdA,MAAK,GAAe,KACbA,MAAK,EACd,CACA,wBAAIu8H,GACF,MAAO,CACL98H,KAAM,CACJ2pC,QAAS,mBAEX8wF,UAAW,CACTY,MAAM,GAERzvD,KAAM,CAAC,EAAG,EAAG,EAAG,GAEpB,EAEF,MAAMq0D,WAAuBrK,GAC3B,IACA,IAAmB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAAApa,CAAM3nE,EAAO6b,EAAaC,EAAcoL,EAAalxB,EAAU0mF,EAAWgG,GACxEh2H,MAAK,GAAemvD,EACpBnvD,MAAK,GAAgBovD,EACrBpvD,MAAK,GAAew6D,EACpBx6D,MAAK,GAAYspC,EACjBtpC,MAAK,GAAagwH,EAClBhwH,MAAK,GAAeg2H,GAAe,EACnCh2H,MAAK,GAASszC,EACdtzC,MAAK,IACP,CACA,aAAIgwH,GACF,OAAOhwH,MAAK,EACd,CACA,cAAA6+H,CAAe35F,GAEb,OADAllC,MAAK,GAAOiK,KAAKi7B,GACV,CACLwO,KAAM,CACJ53B,EAAG9b,KAAKs1H,aAGd,CACA,iBAAAiJ,GAEE,OADAv+H,MAAK,GAAOonC,MACL,CACLsM,KAAM,CACJ53B,EAAG9b,KAAKs1H,aAGd,CACA,SAAAA,GACE,MAAMjsH,EAAS,GACf,IAAK,MAAM,KACTkqC,KACGvzC,MAAK,GAER,GADAqJ,EAAOY,KAAK,IAAIorH,GAAQM,SAASpiF,EAAK,OAAO8hF,GAAQM,SAASpiF,EAAK,OAC/C,IAAhBA,EAAKzyC,OAIT,GAAoB,KAAhByyC,EAAKzyC,QAAiBkwE,MAAMz9B,EAAK,IACnClqC,EAAOY,KAAK,IAAIorH,GAAQM,SAASpiF,EAAK,QAAQ8hF,GAAQM,SAASpiF,EAAK,aAGtE,IAAK,IAAItqC,EAAI,EAAG2hC,EAAK2I,EAAKzyC,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAAG,CAChD,MAAO82H,EAAKC,EAAKC,EAAKC,EAAKr5H,EAAG2X,GAAK+0B,EAAKnY,SAASnyB,EAAGA,EAAI,GAAGY,IAAIwrH,GAAQM,UACvEtsH,EAAOY,KAAK,IAAI81H,KAAOC,KAAOC,KAAOC,KAAOr5H,KAAK2X,IACnD,MAVEnV,EAAOY,KAAK,KAYhB,OAAOZ,EAAOhG,KAAK,GACrB,CACA,SAAAglD,EAAWne,EAAOC,EAAOpkB,EAAWC,GAAagrC,GAC/C,MAAMmvE,EAAkB,GAClBC,EAAmB,IAClBv5H,EAAG2X,EAAG/B,EAAOC,GAAU1c,MAAK,KACnC,IAAIquD,EAAIC,EAAI1e,EAAIC,EAAI1O,EAAIC,EAAIC,EAAIE,EAAI8+F,EACpC,OAAQrgI,MAAK,IACX,KAAK,EACHqgI,EAAYhL,GAAQG,SACpBnnE,EAAKnkB,EACLokB,EAAKnkB,EAAQnkB,EACb4pB,EAAK7pB,EACL8pB,GAAM7pB,EACNmb,EAAK+I,EAAQrjC,EAAIkf,EACjBqb,EAAK+I,GAAS,EAAI3rB,EAAI9B,GAAUsJ,EAChCqb,EAAK6I,GAASrjC,EAAI4V,GAASsJ,EAC3Bwb,EAAK4I,GAAS,EAAI3rB,GAAKwH,EACvB,MACF,KAAK,GACHq6G,EAAYhL,GAAQI,gBACpBpnE,EAAKnkB,EACLokB,EAAKnkB,EACLyF,EAAK7pB,EACL8pB,EAAK7pB,EACLmb,EAAK+I,EAAQ1rB,EAAIuH,EACjBqb,EAAK+I,EAAQtjC,EAAImf,EACjBqb,EAAK6I,GAAS1rB,EAAI9B,GAAUqJ,EAC5Bwb,EAAK4I,GAAStjC,EAAI4V,GAASuJ,EAC3B,MACF,KAAK,IACHq6G,EAAYhL,GAAQG,SACpBnnE,EAAKnkB,EAAQnkB,EACbuoC,EAAKnkB,EACLyF,GAAM7pB,EACN8pB,EAAK7pB,EACLmb,EAAK+I,GAAS,EAAIrjC,EAAI4V,GAASsJ,EAC/Bqb,EAAK+I,EAAQ3rB,EAAIwH,EACjBqb,EAAK6I,GAAS,EAAIrjC,GAAKkf,EACvBwb,EAAK4I,GAAS3rB,EAAI9B,GAAUsJ,EAC5B,MACF,KAAK,IACHq6G,EAAYhL,GAAQI,gBACpBpnE,EAAKnkB,EAAQnkB,EACbuoC,EAAKnkB,EAAQnkB,EACb4pB,GAAM7pB,EACN8pB,GAAM7pB,EACNmb,EAAK+I,GAAS,EAAI1rB,EAAI9B,GAAUqJ,EAChCqb,EAAK+I,GAAS,EAAItjC,EAAI4V,GAASuJ,EAC/Bqb,EAAK6I,GAAS,EAAI1rB,GAAKuH,EACvBwb,EAAK4I,GAAS,EAAItjC,GAAKmf,EACvB,MAEJ,IAAK,MAAM,KACTutB,EAAI,OACJu8E,KACG9vH,MAAK,GACRmgI,EAAgBl2H,KAAKo2H,EAAU9sF,EAAM8a,EAAIC,EAAI1e,EAAIC,EAAImhB,EAAe,IAAIzgD,MAAMgjC,EAAKzyC,QAAU,OAC7Fs/H,EAAiBn2H,KAAKo2H,EAAUvQ,EAAQzhE,EAAIC,EAAI1e,EAAIC,EAAImhB,EAAe,IAAIzgD,MAAMu/G,EAAOhvH,QAAU,OAEpG,MAAO,CACLwyC,MAAO6sF,EACPrQ,OAAQsQ,EACRrhG,KAAM,CAACoC,EAAIC,EAAIC,EAAIE,GAEvB,CACA,kBAAOonB,CAAYze,EAAOC,EAAOpkB,EAAWC,EAAYgwG,GACtD/+B,OAAO,MACL3jD,EAAK,OACLw8E,GACD,SACDxmF,EAAQ,UACR0mF,IAEA,MAAMsQ,EAAW,GACjB,IAAIjyE,EAAIC,EAAI1e,EAAIC,EAAIwwF,EACpB,OAAQ/2F,GACN,KAAK,EACH+2F,EAAYhL,GAAQG,SACpBnnE,GAAMnkB,EAAQnkB,EACduoC,EAAKnkB,EAAQnkB,EAAa,EAC1B4pB,EAAK,EAAI7pB,EACT8pB,GAAM,EAAI7pB,EACV,MACF,KAAK,GACHq6G,EAAYhL,GAAQI,gBACpBpnE,GAAMlkB,EAAQnkB,EACdsoC,GAAMpkB,EAAQnkB,EACd6pB,EAAK,EAAI5pB,EACT6pB,EAAK,EAAI9pB,EACT,MACF,KAAK,IACHs6G,EAAYhL,GAAQG,SACpBnnE,EAAKnkB,EAAQnkB,EAAY,EACzBuoC,GAAMnkB,EAAQnkB,EACd4pB,GAAM,EAAI7pB,EACV8pB,EAAK,EAAI7pB,EACT,MACF,KAAK,IACHq6G,EAAYhL,GAAQI,gBACpBpnE,EAAKlkB,EAAQnkB,EAAa,EAC1BsoC,EAAKpkB,EAAQnkB,EAAY,EACzB6pB,GAAM,EAAI5pB,EACV6pB,GAAM,EAAI9pB,EACV,MAEJ,IAAKutB,EAAO,CACVA,EAAQ,GACR,IAAK,MAAM4oB,KAAS4zD,EAAQ,CAC1B,MAAM1/G,EAAM8rD,EAAMp7D,OAClB,GAAY,IAARsP,EAAW,CACbkjC,EAAMrpC,KAAK,IAAIyoC,aAAa,CAACwF,IAAKA,IAAKA,IAAKA,IAAKgkB,EAAM,GAAIA,EAAM,MACjE,QACF,CACA,GAAY,IAAR9rD,EAAW,CACbkjC,EAAMrpC,KAAK,IAAIyoC,aAAa,CAACwF,IAAKA,IAAKA,IAAKA,IAAKgkB,EAAM,GAAIA,EAAM,GAAIhkB,IAAKA,IAAKA,IAAKA,IAAKgkB,EAAM,GAAIA,EAAM,MACzG,QACF,CACA,MAAM3oB,EAAO,IAAIb,aAAa,GAAKtiC,EAAM,IACzCkjC,EAAMrpC,KAAKspC,GACX,IAAKpS,EAAIC,EAAIC,EAAIE,GAAM26B,EAAM9gC,SAAS,EAAG,GACzCmY,EAAK3rC,IAAI,CAACswC,IAAKA,IAAKA,IAAKA,IAAK/W,EAAIC,GAAK,GACvC,IAAK,IAAIn4B,EAAI,EAAGA,EAAImH,EAAKnH,GAAK,EAAG,CAC/B,MAAMpC,EAAIq1D,EAAMjzD,GACVuV,EAAI09C,EAAMjzD,EAAI,GACpBsqC,EAAK3rC,IAAIytH,GAAQQ,mBAAmB10F,EAAIC,EAAIC,EAAIE,EAAI16B,EAAG2X,GAAc,GAATvV,EAAI,KAC/Dk4B,EAAIC,EAAIC,EAAIE,GAAM,CAACF,EAAIE,EAAI16B,EAAG2X,EACjC,CACF,CACF,CACA,IAAK,IAAIvV,EAAI,EAAG2hC,EAAK0I,EAAMxyC,OAAQmI,EAAI2hC,EAAI3hC,IACzCq3H,EAASr2H,KAAK,CACZspC,KAAM8sF,EAAU/sF,EAAMrqC,GAAGY,IAAIhD,GAAKA,GAAKqxC,KAAMmW,EAAIC,EAAI1e,EAAIC,GACzDigF,OAAQuQ,EAAUvQ,EAAO7mH,GAAGY,IAAIhD,GAAKA,GAAKqxC,KAAMmW,EAAIC,EAAI1e,EAAIC,KAGhE,MAAM8oF,EAAW,IAAI34H,KAAKkE,UAAUF,YAEpC,OADA20H,EAAS1d,MAAMqlB,EAAUv6G,EAAWC,EAAY,EAAGsjB,EAAU0mF,EAAWgG,GACjE2C,CACT,CACA,IAAqB3I,EAAYhwH,MAAK,IACpC,MAAMugI,EAASvgI,MAAK,GAAegwH,EAAY,EAAIhwH,MAAK,GACxD,OAAOA,MAAK,GAAY,MAAQ,EAAI,CAACugI,EAASvgI,MAAK,GAAcugI,EAASvgI,MAAK,IAAiB,CAACugI,EAASvgI,MAAK,GAAeugI,EAASvgI,MAAK,GAC9I,CACA,MACE,MAAO6G,EAAG2X,EAAG/B,EAAOC,GAAU1c,MAAK,IAC5BwgI,EAASC,GAAWzgI,MAAK,GAAqB,GACrD,MAAO,CAAC6G,EAAI25H,EAAShiH,EAAIiiH,EAAShkH,EAAQ,EAAI+jH,EAAS9jH,EAAS,EAAI+jH,EACtE,CACA,MACE,MAAMp1D,EAAOrrE,MAAK,GAAQ,IAAI0yC,aAAa,CAACrC,IAAUA,KAAWA,KAAWA,MAC5E,IAAK,MAAM,KACTkD,KACGvzC,MAAK,GAAQ,CAChB,GAAIuzC,EAAKzyC,QAAU,GAAI,CACrB,IAAK,IAAImI,EAAI,EAAG2hC,EAAK2I,EAAKzyC,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAC7Cm0B,GAAK2D,iBAAiBwS,EAAKtqC,GAAIsqC,EAAKtqC,EAAI,GAAIoiE,GAE9C,QACF,CACA,IAAI3zB,EAAQnE,EAAK,GACfkE,EAAQlE,EAAK,GACf,IAAK,IAAItqC,EAAI,EAAG2hC,EAAK2I,EAAKzyC,OAAQmI,EAAI2hC,EAAI3hC,GAAK,EAAG,CAChD,MAAO82H,EAAKC,EAAKC,EAAKC,EAAKr5H,EAAG2X,GAAK+0B,EAAKnY,SAASnyB,EAAGA,EAAI,GACxDm0B,GAAK4E,kBAAkB0V,EAAOD,EAAOsoF,EAAKC,EAAKC,EAAKC,EAAKr5H,EAAG2X,EAAG6sD,GAC/D3zB,EAAQ7wC,EACR4wC,EAAQj5B,CACV,CACF,CACA,MAAOgiH,EAASC,GAAWzgI,MAAK,KAChCqrE,EAAK,GAAK7nC,GAAU6nC,EAAK,GAAKm1D,EAAS,EAAG,GAC1Cn1D,EAAK,GAAK7nC,GAAU6nC,EAAK,GAAKo1D,EAAS,EAAG,GAC1Cp1D,EAAK,GAAK7nC,GAAU6nC,EAAK,GAAKm1D,EAAS,EAAG,GAC1Cn1D,EAAK,GAAK7nC,GAAU6nC,EAAK,GAAKo1D,EAAS,EAAG,GAC1Cp1D,EAAK,IAAMA,EAAK,GAChBA,EAAK,IAAMA,EAAK,EAClB,CACA,OAAI1zB,GACF,OAAO33C,MAAK,EACd,CACA,cAAAy7H,CAAe/3H,EAAM5B,GACnB,MAAa,iBAAT4B,EACK1D,MAAK,GAAiB8B,GAExB,IACT,CACA,IAAiBkuH,GACf,MAAO0Q,EAAYC,GAAc3gI,MAAK,KACtCA,MAAK,GAAagwH,EAClB,MAAO4Q,EAAYC,GAAc7gI,MAAK,MAC/B8gI,EAAaC,GAAe,CAACH,EAAaF,EAAYG,EAAaF,GACpEt1D,EAAOrrE,MAAK,GAKlB,OAJAqrE,EAAK,IAAMy1D,EACXz1D,EAAK,IAAM01D,EACX11D,EAAK,IAAM,EAAIy1D,EACfz1D,EAAK,IAAM,EAAI01D,EACR11D,CACT,CACA,sBAAAwyD,EAAwBphH,EAAOC,GAASiB,GACtC,MAAO+iH,EAAYC,GAAc3gI,MAAK,KACtCA,MAAK,GAAeyc,EACpBzc,MAAK,GAAgB0c,EACrB1c,MAAK,GAAe2d,EACpB,MAAOijH,EAAYC,GAAc7gI,MAAK,KAChC8gI,EAAcF,EAAaF,EAC3BK,EAAcF,EAAaF,EAC3Bt1D,EAAOrrE,MAAK,GAKlB,OAJAqrE,EAAK,IAAMy1D,EACXz1D,EAAK,IAAM01D,EACX11D,EAAK,IAAM,EAAIy1D,EACfz1D,EAAK,IAAM,EAAI01D,EACR11D,CACT,CACA,cAAAuyD,CAAet0F,GAEb,OADAtpC,MAAK,GAAmBspC,EACjB,CACLoK,KAAM,CACJnrB,UAAWvoB,KAAKghI,mBAGtB,CACA,WAAI53F,GACF,OAAOppC,MAAK,GAAM6J,IAAIwrH,GAAQM,UAAUtyH,KAAK,IAC/C,CACA,qBAAIg5H,GACF,MAAOx1H,EAAG2X,GAAKxe,MAAK,GACpB,MAAO,CACLP,KAAM,CACJ2pC,QAASppC,KAAKopC,SAEhBsK,KAAM,CACJ,mBAAoB,GAAG2hF,GAAQM,SAAS9uH,MAAMwuH,GAAQM,SAASn3G,MAGrE,CACA,qBAAIwiH,GACF,MAAO,CAAC,CAAEvkH,EAAOC,GAAU1c,MAAK,GAChC,IAAIgV,EAAI,EACNC,EAAI,EACJyoB,EAAI,EACJ5hB,EAAI,EACJsG,EAAI,EACJ9X,EAAI,EACN,OAAQtK,MAAK,IACX,KAAK,GACHiV,EAAIyH,EAASD,EACbihB,GAAKjhB,EAAQC,EACb0F,EAAI3F,EACJ,MACF,KAAK,IACHzH,GAAK,EACL8G,GAAK,EACLsG,EAAI3F,EACJnS,EAAIoS,EACJ,MACF,KAAK,IACHzH,GAAKyH,EAASD,EACdihB,EAAIjhB,EAAQC,EACZpS,EAAIoS,EACJ,MACF,QACE,MAAO,GAEX,MAAO,UAAU1H,KAAKC,KAAKyoB,KAAK5hB,KAAKu5G,GAAQM,SAASvzG,MAAMizG,GAAQM,SAASrrH,KAC/E,CACA,4BAAA6yH,EAA8BzyG,EAAMC,EAAMK,EAAUC,IAClD,MAAOu1G,EAASC,GAAWzgI,MAAK,MACzB6G,EAAG2X,EAAG/B,EAAOC,GAAU1c,MAAK,GACnC,GAAI0G,KAAKm7B,IAAIplB,EAAQ+jH,IAAYnL,GAAQtiF,WAAarsC,KAAKm7B,IAAInlB,EAAS+jH,IAAYpL,GAAQtiF,UAAW,CACrG,MAAMsb,EAAK3jC,EAAOM,EAAW,GAAKnkB,EAAI4V,EAAQ,GACxC6xC,EAAK3jC,EAAOM,EAAY,GAAKzM,EAAI9B,EAAS,GAChD,MAAO,CACLg3B,KAAM,CACJ,mBAAoB,GAAG2hF,GAAQM,SAASjrG,MAAS2qG,GAAQM,SAAShrG,KAClEpC,UAAW,GAAGvoB,KAAKghI,+BAA+B3yE,KAAMC,MAG9D,CACA,MAAM2yE,GAAOj2G,EAAW,EAAIw1G,IAAY/jH,EAAQ,EAAI+jH,GAC9CU,GAAOj2G,EAAY,EAAIw1G,IAAY/jH,EAAS,EAAI+jH,GAChDU,EAAM1kH,EAAQuO,EACdo2G,EAAM1kH,EAASuO,EACrB,MAAO,CACLyoB,KAAM,CACJ,mBAAoB,GAAG2hF,GAAQM,SAAS9uH,MAAMwuH,GAAQM,SAASn3G,KAC/D+J,UAAW,GAAGvoB,KAAKghI,2BAA2BG,KAAOC,gBAAuB/L,GAAQM,SAAS6K,MAAYnL,GAAQM,SAAS8K,aAAmBQ,KAAOC,gBAAuB7L,GAAQM,UAAU6K,MAAYnL,GAAQM,UAAU8K,OAGjO,CACA,2BAAArD,EAA6B1yG,EAAMC,EAAMK,EAAUC,IACjD,MAAOu1G,EAASC,GAAWzgI,MAAK,KAC1BqrE,EAAOrrE,MAAK,IACX6G,EAAG2X,EAAG/B,EAAOC,GAAU2uD,EAK9B,GAJAA,EAAK,GAAK3gD,EACV2gD,EAAK,GAAK1gD,EACV0gD,EAAK,GAAKrgD,EACVqgD,EAAK,GAAKpgD,EACNvkB,KAAKm7B,IAAIplB,EAAQ+jH,IAAYnL,GAAQtiF,WAAarsC,KAAKm7B,IAAInlB,EAAS+jH,IAAYpL,GAAQtiF,UAAW,CACrG,MAAMsb,EAAK3jC,EAAOM,EAAW,GAAKnkB,EAAI4V,EAAQ,GACxC6xC,EAAK3jC,EAAOM,EAAY,GAAKzM,EAAI9B,EAAS,GAChD,IAAK,MAAM,KACT62B,EAAI,OACJu8E,KACG9vH,MAAK,GACRq1H,GAAQK,WAAWniF,EAAM8a,EAAIC,EAAI/a,GACjC8hF,GAAQK,WAAW5F,EAAQzhE,EAAIC,EAAIwhE,GAErC,MAAO,CACLrwH,KAAM,CACJ2pC,QAASppC,KAAKopC,SAEhBsK,KAAM,CACJ,mBAAoB,GAAG2hF,GAAQM,SAASjrG,MAAS2qG,GAAQM,SAAShrG,KAClEpC,UAAWvoB,KAAKghI,mBAAqB,KACrCllH,EAAG9b,KAAKs1H,aAGd,CACA,MAAM2L,GAAOj2G,EAAW,EAAIw1G,IAAY/jH,EAAQ,EAAI+jH,GAC9CU,GAAOj2G,EAAY,EAAIw1G,IAAY/jH,EAAS,EAAI+jH,GAChDpyE,GAAM4yE,GAAOp6H,EAAI25H,GAAW91G,EAAO81G,EACnClyE,GAAM4yE,GAAO1iH,EAAIiiH,GAAW91G,EAAO81G,EACzC,GAAY,IAARQ,GAAqB,IAARC,GAAoB,IAAP7yE,GAAmB,IAAPC,EACxC,IAAK,MAAM,KACT/a,EAAI,OACJu8E,KACG9vH,MAAK,GACRq1H,GAAQG,SAASjiF,EAAM8a,EAAIC,EAAI2yE,EAAKC,EAAK3tF,GACzC8hF,GAAQG,SAAS1F,EAAQzhE,EAAIC,EAAI2yE,EAAKC,EAAKpR,GAG/C,MAAO,CACLrwH,KAAM,CACJ2pC,QAASppC,KAAKopC,SAEhBsK,KAAM,CACJ,mBAAoB,GAAG2hF,GAAQM,SAASjrG,MAAS2qG,GAAQM,SAAShrG,KAClEpC,UAAWvoB,KAAKghI,mBAAqB,KACrCllH,EAAG9b,KAAKs1H,aAGd,CACA,8BAAAiI,EAAgC7yG,EAAMC,GAAOooC,GAC3C,MAAOsuE,EAAgBC,GAAmBvuE,EACpCsY,EAAOrrE,MAAK,GACZquD,EAAK3jC,EAAO2gD,EAAK,GACjB/c,EAAK3jC,EAAO0gD,EAAK,GACvB,GAAIrrE,MAAK,KAAiBqhI,GAAkBrhI,MAAK,KAAkBshI,EACjE,IAAK,MAAM,KACT/tF,EAAI,OACJu8E,KACG9vH,MAAK,GACRq1H,GAAQK,WAAWniF,EAAM8a,EAAIC,EAAI/a,GACjC8hF,GAAQK,WAAW5F,EAAQzhE,EAAIC,EAAIwhE,OAEhC,CACL,MAAMlgF,EAAK5vC,MAAK,GAAeqhI,EACzBxxF,EAAK7vC,MAAK,GAAgBshI,EAChCthI,MAAK,GAAeqhI,EACpBrhI,MAAK,GAAgBshI,EACrB,IAAK,MAAM,KACT/tF,EAAI,OACJu8E,KACG9vH,MAAK,GACRq1H,GAAQG,SAASjiF,EAAM8a,EAAIC,EAAI1e,EAAIC,EAAI0D,GACvC8hF,GAAQG,SAAS1F,EAAQzhE,EAAIC,EAAI1e,EAAIC,EAAIigF,GAE3CzkD,EAAK,IAAMz7B,EACXy7B,EAAK,IAAMx7B,CACb,CAGA,OAFAw7B,EAAK,GAAK3gD,EACV2gD,EAAK,GAAK1gD,EACH,CACLlrB,KAAM,CACJ2pC,QAASppC,KAAKopC,SAEhBsK,KAAM,CACJ53B,EAAG9b,KAAKs1H,YACR,mBAAoB,GAAGD,GAAQM,SAASjrG,MAAS2qG,GAAQM,SAAShrG,MAGxE,CACA,wBAAI4xG,GACF,MAAMlxD,EAAOrrE,MAAK,GAClB,MAAO,CACLP,KAAM,CACJ2pC,QAASppC,KAAKopC,SAEhB8wF,UAAW,CACTY,MAAM,GAERpnF,KAAM,CACJ53B,EAAG9b,KAAKs1H,YACR,mBAAoB,GAAGD,GAAQM,SAAStqD,EAAK,OAAOgqD,GAAQM,SAAStqD,EAAK,MAC1E9iD,UAAWvoB,KAAKghI,mBAAqB,MAEvC31D,OAEJ,EAUF,MAAMk2D,WAA0B/F,GAC9B,WAAAx3H,CAAYw9H,GACVpnG,QACAp6B,KAAKyhI,gBAAkBD,EACvBpnG,MAAMigG,iBAAiB,CACrBjnG,KAAM,OACNF,OAAQ0iC,GAAiBuB,kBACzB,iBAAkB,EAClB,eAAgB,EAChB,iBAAkB,QAClB,kBAAmB,QACnB,oBAAqB,IAEzB,CACA,iBAAAukE,CAAkBh4H,EAAM5B,GACT,iBAAT4B,IACF5B,IAAU9B,KAAK,gBACf8B,GAAS9B,KAAKyhI,gBAAgB9gF,WAEhCvmB,MAAMshG,kBAAkBh4H,EAAM5B,EAChC,CACA,KAAAyH,GACE,MAAMA,EAAQ,IAAIg4H,GAAkBvhI,KAAKyhI,iBAEzC,OADAl4H,EAAMqyH,UAAU57H,MACTuJ,CACT,EAEF,MAAMm4H,WAAkB7F,GACtBh0F,aAAe,MACfA,mBAAqB/a,EAAqBK,IAC1C0a,8BAAgC,KAChC,WAAA7jC,CAAYgpD,GACV5yB,MAAM,IACD4yB,EACHtpD,KAAM,cAER1D,KAAKu2D,sBAAuB,EAC5Bv2D,KAAKg/D,cAAgB,yBACvB,CACA,iBAAO9O,CAAWC,EAAMhZ,GACtBye,GAAiB1F,WAAWC,EAAMhZ,GAClCn3C,KAAK88H,uBAAyB,IAAIyE,GAAkBpqF,EAAUuJ,eAChE,CACA,+BAAO+7E,CAAyB94H,GAC9B,MAAM4F,EAAQvJ,KAAK88H,uBAAuBvzH,QAE1C,OADAA,EAAM8wH,iBAAiB12H,GAChB4F,CACT,CACA,kCAAWqzH,GACT,OAAO,CACT,CACA,mBAAWD,GACT,OAAO7iG,EAAO95B,KAAM,WAAY,IAAIsF,IAAI,CAAC,CAACioB,EAA2BO,cAAe,gBAAiB,CAACP,EAA2BM,UAAW,UAAW,CAACN,EAA2BQ,YAAa,oBAClM,CACA,2BAAOiwG,CAAqBn3H,EAAG2X,EAAG2wC,EAAaC,EAAc9lB,GAC3D,OAAO,IAAIm2F,GAAgB54H,EAAG2X,EAAG2wC,EAAaC,EAAc9lB,EAAUtpC,KAAK88H,uBAAuB,gBACpG,CACA,sBAAOoC,CAAgBh1F,EAAOC,EAAOpkB,EAAWC,EAAYgwG,EAAapnH,GACvE,OAAO8wH,GAAe/2E,YAAYze,EAAOC,EAAOpkB,EAAWC,EAAYgwG,EAAapnH,EACtF,CACA,wBAAa+5C,CAAY/5C,EAAMqV,EAAQkzB,GACrC,IAAIioD,EAAc,KAClB,GAAIxwF,aAAgBgxG,GAAsB,CACxC,MACEhxG,MAAM,SACJizG,EAAQ,KACR9iF,EAAI,SACJuK,EAAQ,GACR/5B,EAAE,MACF4+B,EAAK,QACL3lB,EACAg6F,aACEgQ,SAAUxC,GACX,SACDrlE,EAAQ,SACRuI,EAAQ,YACRtI,EAAW,aACX8L,EAAY,iBACZC,GAEF1yC,QACEjH,MAAM,WACJ8mC,KAGFl1C,EACJwwF,EAAcxwF,EAAO,CACnBqyD,eAAgBn0C,EAAqBK,IACrCghB,MAAO59B,MAAM2sB,KAAKiR,GAClB6hF,YACAxnG,UACAyuE,MAAO,CACL64B,OAAQjO,GAEVtqE,MAAO,KACP0L,UAAWa,EAAa,EACxB/kB,KAAMA,EAAK57B,MAAM,GACjBmmC,WACAihB,oBAAqBh7C,EACrBA,KACAk7C,SAAS,EACTE,WACAuI,WACArd,QAAS+U,GAAatvB,KAAO,KAC7Bo7B,eACAC,mBAEJ,CACA,MAAM7iB,QAAe1Z,MAAMuuB,YAAY/5C,EAAMqV,EAAQkzB,GAKrD,OAJArD,EAAOkiB,aAAeopC,EAClBxwF,EAAKinC,SACP/B,EAAOmqB,eAAervD,GAEjBklC,CACT,CACA,kBAAIipB,GAEF,OADA/8D,KAAK2yH,eAAiB,IAAIhW,GAAiB38G,MACpC,CAAC,CAAC,cAAeA,KAAK2yH,cAC/B,CACA,aAAI/V,GACF,OAAOrvF,EAA2BM,SACpC,CACA,SAAIsgB,GACF,OAAOnuC,KAAKo8H,gBAAgBlpG,MAC9B,CACA,WAAI1K,GACF,OAAOxoB,KAAKo8H,gBAAgB,iBAC9B,CACA,eAAAh8E,GACE,IAAKpgD,KAAKikB,OACR,OAEFmW,MAAMgmB,kBACN,MAAM,QACJ07E,EAAO,gBACPM,EAAe,OACfn4G,GACEjkB,KACJo8H,EAAgBV,kBAAkB,gBAClCz3G,EAAO81G,UAAUM,iBAAiByB,EAASM,EAAgBT,kBAC7D,CACA,iCAAOmC,GACL,MAAM75G,EAASjkB,KAAK+8H,eACf94G,IAGLmW,MAAM0jG,6BACN99H,KAAK88H,uBAAuBpB,kBAAkB,gBAC9Cz3G,EAAO81G,UAAUM,iBAAiBr6H,KAAKg9H,eAAgBh9H,KAAK88H,uBAAuBnB,mBACrF,CACA,oBAAAqD,EAAqB,MACnB7wF,EAAK,UACL6hF,EAAS,QACTxnG,IAEAxoB,KAAKo8H,gBAAkBsF,GAAUjF,yBAAyB,CACxDvpG,OAAQkK,GAAKC,gBAAgB8Q,GAC7B,eAAgB6hF,EAChB,iBAAkBxnG,GAEtB,CACA,SAAA6/B,CAAU2I,GAAe,GACvB,GAAIhxD,KAAK89C,UACP,OAAO,KAET,GAAI99C,KAAKyqD,QACP,OAAOzqD,KAAKghE,mBAEd,MAAM,MACJ1tB,EAAK,OACLw8E,GACE9vH,KAAKw/H,cAAcxuE,IAErBorE,iBAAiB,OACflpG,EACA,iBAAkB1K,EAClB,eAAgBwnG,IAEhBhwH,KACEooD,EAAanlD,OAAOmjC,OAAOhM,MAAMiuB,UAAU2I,GAAe,CAC9D7iB,MAAOynB,GAAiBwB,cAAc/Z,QAAQnqB,GAC9C1K,UACAwnG,YACA/4B,MAAO,CACL3jD,QACAw8E,YAIJ,OADA9vH,KAAK41C,WAAWwS,GACZ4I,GACF5I,EAAWgZ,QAAS,EACbhZ,GAELpoD,KAAKuqD,sBAAwBvqD,MAAK,GAAmBooD,GAChD,MAETA,EAAW74C,GAAKvP,KAAKuqD,oBACdnC,EACT,CACA,IAAmBA,GACjB,MAAM,MACJja,EAAK,UACL6hF,EAAS,QACTxnG,EAAO,UACPy6B,GACEjjD,KAAKg2D,aACT,OAAOh2D,KAAKm+D,kBAAoBn+D,KAAKk6D,eAAiBl6D,KAAKm6D,iBAAmB/R,EAAWja,MAAMx+B,KAAK,CAAC+tB,EAAGz0B,IAAMy0B,IAAMyQ,EAAMllC,KAAOm/C,EAAW4nE,YAAcA,GAAa5nE,EAAW5/B,UAAYA,GAAW4/B,EAAWnF,YAAcA,CACpO,CACA,uBAAAwM,CAAwB/E,GACtB,GAAI1qD,KAAKyqD,QAEP,OADAC,EAAW1V,OACJ,KAET,MAAM,OACJ86E,EAAM,KACN/wF,GACE/+B,KAAKw/H,eAAc,GAOvB,OANA90E,EAAWmY,aAAa,CACtB9jC,OACAixF,UAAWhwH,KAAKo8H,gBAAgB,gBAChCtM,SACAjxD,MAAO7+D,KAAK61C,UAEP,IACT,EAKF,MAAM8rF,WAA2BjC,GAC/B,SAAApK,GACE,IAAI5hF,EAAOtZ,MAAMk7F,YAIjB,OAHK5hF,EAAKwO,SAAS,OACjBxO,GAAQ,KAEHA,CACT,EAQF,MAAMkuF,GAAqB,EACrBC,GAA2B,EACjC,MAAMC,GACJj6F,UAAqB,CACnBqI,OAAQ,IACR6xF,aAAc,IACdC,OAAQ,GACRC,WAAY,IAEd,SAAO,CAAmBC,EAAIC,EAAIl5H,EAAGsvE,GAGnC,OAFAtvE,GAAKi5H,EACL3pD,GAAK4pD,EACK,IAANl5H,EACKsvE,EAAI,EAAI,EAAI,EAEX,IAANtvE,EACKsvE,EAAI,EAEN,EAAIA,CACb,CACA1wC,UAA4B,IAAI8nC,WAAW,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAC/F,SAAO,CAAkB/sC,EAAKnmB,EAAOylH,EAAIC,EAAIl5H,EAAGsvE,EAAG5P,GACjD,MAAMp5D,EAAKvP,MAAK,GAAmBkiI,EAAIC,EAAIl5H,EAAGsvE,GAC9C,IAAK,IAAID,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM8pD,IAAO9pD,EAAI/oE,EAAKo5D,EAAS,IAAM,EAC/B05D,EAASriI,MAAK,GAAmB,EAAIoiI,GACrCE,EAAStiI,MAAK,GAAmB,EAAIoiI,EAAK,GAChD,GAAmD,IAA/Cx/F,GAAKs/F,EAAKG,GAAU5lH,GAAS0lH,EAAKG,IACpC,OAAOF,CAEX,CACA,OAAQ,CACV,CACA,SAAO,CAAyBx/F,EAAKnmB,EAAOylH,EAAIC,EAAIl5H,EAAGsvE,EAAG5P,GACxD,MAAMp5D,EAAKvP,MAAK,GAAmBkiI,EAAIC,EAAIl5H,EAAGsvE,GAC9C,IAAK,IAAID,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM8pD,GAAM9pD,EAAI/oE,EAAKo5D,EAAS,IAAM,EAC9B05D,EAASriI,MAAK,GAAmB,EAAIoiI,GACrCE,EAAStiI,MAAK,GAAmB,EAAIoiI,EAAK,GAChD,GAAmD,IAA/Cx/F,GAAKs/F,EAAKG,GAAU5lH,GAAS0lH,EAAKG,IACpC,OAAOF,CAEX,CACA,OAAQ,CACV,CACA,SAAO,CAAcx/F,EAAKnmB,EAAOC,EAAQ6lH,GACvC,MAAMnL,EAAIx0F,EAAI9hC,OACRkoD,EAAQ,IAAI2mB,WAAWynD,GAC7B,IAAK,IAAInuH,EAAI,EAAGA,EAAImuH,EAAGnuH,IACrB+/C,EAAM//C,GAAK25B,EAAI35B,IAAMs5H,EAAY,EAAI,EAEvC,IAAK,IAAIt5H,EAAI,EAAGA,EAAIyT,EAAS,EAAGzT,IAC9B+/C,EAAM//C,EAAIwT,GAASusC,EAAM//C,EAAIwT,EAAQA,EAAQ,GAAK,EAEpD,IAAK,IAAIxT,EAAI,EAAGA,EAAIwT,EAAOxT,IACzB+/C,EAAM//C,GAAK+/C,EAAMvsC,EAAQC,EAAS,EAAIzT,GAAK,EAE7C,IACIu5H,EADAC,EAAM,EAEV,MAAMC,EAAW,GACjB,IAAK,IAAIz5H,EAAI,EAAGA,EAAIyT,EAAS,EAAGzT,IAAK,CACnCu5H,EAAO,EACP,IAAK,IAAIjqD,EAAI,EAAGA,EAAI97D,EAAQ,EAAG87D,IAAK,CAClC,MAAMoqD,EAAK15H,EAAIwT,EAAQ87D,EACjBqqD,EAAM55E,EAAM25E,GAClB,GAAY,IAARC,EACF,SAEF,IAAIC,EAAK55H,EACL65H,EAAKvqD,EACT,GAAY,IAARqqD,GAA+B,IAAlB55E,EAAM25E,EAAK,GAC1BF,GAAO,EACPK,GAAM,MACD,MAAIF,GAAO,GAAuB,IAAlB55E,EAAM25E,EAAK,IAM3B,CACO,IAARC,IACFJ,EAAO97H,KAAKm7B,IAAI+gG,IAElB,QACF,CAVEH,GAAO,EACPK,GAAM,EACFF,EAAM,IACRJ,EAAOI,EAOX,CACA,MAAM9S,EAAS,CAACv3C,EAAGtvE,GACb85H,EAASD,IAAOvqD,EAAI,EACpByqD,EAAU,CACdD,SACAjT,SACAvgH,GAAIkzH,EACJx+G,OAAQ,GAGV,IAAIg/G,EADJP,EAASz4H,KAAK+4H,GAEd,IAAK,MAAMtlG,KAAKglG,EACd,GAAIhlG,EAAEnuB,KAAOizH,EAAM,CACjBS,EAAWvlG,EACX,KACF,CAEGulG,EAEMA,EAASF,OAClBC,EAAQ/+G,OAAS8+G,EAASE,EAASh/G,OAASu+G,EAE5CQ,EAAQ/+G,OAAS8+G,EAASP,EAAOS,EAASh/G,OAJ1C++G,EAAQ/+G,OAAS8+G,EAASP,EAAO,EAMnC,MAAMlqD,EAAIt4E,MAAK,GAAkBgpD,EAAOvsC,EAAOxT,EAAGsvE,EAAGsqD,EAAIC,EAAI,GAC7D,IAAW,IAAPxqD,EAAU,CACZtvB,EAAM25E,IAAOF,EACK,IAAdz5E,EAAM25E,KACRH,EAAO97H,KAAKm7B,IAAImnB,EAAM25E,KAExB,QACF,CACA,IAAIN,EAASriI,MAAK,GAAmB,EAAIs4E,GACrCgqD,EAAStiI,MAAK,GAAmB,EAAIs4E,EAAI,GAC7C,MAAM4qD,EAAKj6H,EAAIo5H,EACTc,EAAK5qD,EAAI+pD,EACfO,EAAKK,EACLJ,EAAKK,EACL,IAAIC,EAAKn6H,EACLo6H,EAAK9qD,EACT,MAAO,EAAM,CACX,MAAM6pD,EAAKpiI,MAAK,GAAyBgpD,EAAOvsC,EAAO2mH,EAAIC,EAAIR,EAAIC,EAAI,GACvET,EAASriI,MAAK,GAAmB,EAAIoiI,GACrCE,EAAStiI,MAAK,GAAmB,EAAIoiI,EAAK,GAC1C,MAAMkB,EAAKF,EAAKf,EACVkB,EAAKF,EAAKf,EAChBxS,EAAO7lH,KAAKs5H,EAAID,GAChB,MAAME,EAAMJ,EAAK3mH,EAAQ4mH,EAMzB,GALuB,IAAnBr6E,EAAMw6E,EAAM,GACdx6E,EAAMw6E,IAAQf,EACU,IAAfz5E,EAAMw6E,KACfx6E,EAAMw6E,GAAOf,GAEXa,IAAOr6H,GAAKs6H,IAAOhrD,GAAK6qD,IAAOF,GAAMG,IAAOF,EAAI,CAChC,IAAdn6E,EAAM25E,KACRH,EAAO97H,KAAKm7B,IAAImnB,EAAM25E,KAExB,KACF,CACEE,EAAKO,EACLN,EAAKO,EACLD,EAAKE,EACLD,EAAKE,CAET,CACF,CACF,CACA,OAAOb,CACT,CACA,SAAO,CAAsB5S,EAAQrjF,EAAOC,EAAK1N,GAC/C,GAAI0N,EAAMD,GAAS,EAAG,CACpB,IAAK,IAAIxjC,EAAIwjC,EAAOxjC,EAAIyjC,EAAM,EAAGzjC,GAAK,EACpC+1B,EAAO/0B,KAAK6lH,EAAO7mH,GAAI6mH,EAAO7mH,EAAI,IAEpC,MACF,CACA,MAAMw6H,EAAK3T,EAAOrjF,GACZi3F,EAAK5T,EAAOrjF,EAAQ,GACpBk3F,EAAM7T,EAAOpjF,EAAM,GAAK+2F,EACxBG,EAAM9T,EAAOpjF,EAAM,GAAKg3F,EACxBG,EAAOn9H,KAAK+uD,MAAMkuE,EAAKC,GACvBE,EAAOH,EAAME,EACbE,EAAOH,EAAMC,EACbG,EAAKF,EAAOJ,EAAKK,EAAON,EACxBzlG,EAAI4lG,EAAMD,EACVM,EAAO,EAAIJ,EACXK,EAAMx9H,KAAKy9H,KAAKnmG,GAChBomG,EAAS19H,KAAKmlG,IAAIq4B,GAClBG,EAAS39H,KAAKklG,IAAIs4B,GAClBI,EAAOL,GAAQv9H,KAAKm7B,IAAIuiG,GAAU19H,KAAKm7B,IAAIwiG,IAC3CE,EAAON,GAAQ,EAAIK,EAAOA,GAAQ,GAClCE,EAAa99H,KAAKmN,IAAInN,KAAKy9H,KAAKz9H,KAAKm7B,IAAIwiG,EAASD,GAAUG,GAAO79H,KAAKy9H,KAAKz9H,KAAKm7B,IAAIwiG,EAASD,GAAUG,IAC/G,IAAIE,EAAO,EACPl3H,EAAQk/B,EACZ,IAAK,IAAIxjC,EAAIwjC,EAAQ,EAAGxjC,EAAIyjC,EAAM,EAAGzjC,GAAK,EAAG,CAC3C,MAAM6S,EAAIpV,KAAKm7B,IAAImiG,EAAKF,EAAOhU,EAAO7mH,EAAI,GAAK86H,EAAOjU,EAAO7mH,IACzD6S,EAAI2oH,IACNl3H,EAAQtE,EACRw7H,EAAO3oH,EAEX,CACI2oH,GAAQZ,EAAOW,IAAe,GAChCxkI,MAAK,GAAsB8vH,EAAQrjF,EAAOl/B,EAAQ,EAAGyxB,GACrDh/B,MAAK,GAAsB8vH,EAAQviH,EAAOm/B,EAAK1N,IAE/CA,EAAO/0B,KAAKw5H,EAAIC,EAEpB,CACA,SAAO,CAAgB5T,GACrB,MAAM9wF,EAAS,GACT5uB,EAAM0/G,EAAOhvH,OAGnB,OAFAd,MAAK,GAAsB8vH,EAAQ,EAAG1/G,EAAK4uB,GAC3CA,EAAO/0B,KAAK6lH,EAAO1/G,EAAM,GAAI0/G,EAAO1/G,EAAM,IACnC4uB,EAAOl+B,QAAU,EAAI,KAAOk+B,CACrC,CACA,SAAO,CAAiB4D,EAAKnmB,EAAOC,EAAQgoH,EAAQ1C,EAAQC,GAC1D,MAAM0C,EAAS,IAAIjyF,aAAauvF,GAAc,GACxC2C,GAAW,EAAIF,GAAU,EACzBG,EAAW5C,GAAc,EAC/B,IAAK,IAAIh5H,EAAI,EAAGA,EAAIg5H,EAAYh5H,IAAK,CACnC,MAAMpC,GAAKoC,EAAI47H,IAAa,EAC5B,IAAK,IAAItsD,EAAI,EAAGA,EAAI0pD,EAAY1pD,IAC9BosD,EAAO17H,EAAIg5H,EAAa1pD,GAAK7xE,KAAKo+H,KAAKj+H,GAAK0xE,EAAIssD,IAAa,GAAKD,EAEtE,CACA,MAAMG,EAAc,IAAIryF,aAAa,KAC/BsyF,GAAW,EAAIhD,GAAU,EAC/B,IAAK,IAAI/4H,EAAI,EAAGA,EAAI,IAAKA,IACvB87H,EAAY97H,GAAKvC,KAAKo+H,IAAI77H,GAAK,EAAI+7H,GAErC,MAAM5N,EAAIx0F,EAAI9hC,OACRmkI,EAAM,IAAI1pG,WAAW67F,GACrB8N,EAAY,IAAIrpG,YAAY,KAClC,IAAK,IAAI5yB,EAAI,EAAGA,EAAIyT,EAAQzT,IAC1B,IAAK,IAAIsvE,EAAI,EAAGA,EAAI97D,EAAO87D,IAAK,CAC9B,MAAMoqD,EAAK15H,EAAIwT,EAAQ87D,EACjBhgB,EAAS31B,EAAI+/F,GACnB,IAAIwC,EAAM,EACNC,EAAO,EACX,IAAK,IAAI9sD,EAAI,EAAGA,EAAI2pD,EAAY3pD,IAAK,CACnC,MAAM95D,EAAIvV,EAAIqvE,EAAIusD,EAClB,KAAIrmH,EAAI,GAAKA,GAAK9B,GAGlB,IAAK,IAAIg1B,EAAI,EAAGA,EAAIuwF,EAAYvwF,IAAK,CACnC,MAAM7qC,EAAI0xE,EAAI7mC,EAAImzF,EAClB,GAAIh+H,EAAI,GAAKA,GAAK4V,EAChB,SAEF,MAAM4oH,EAAYziG,EAAIpkB,EAAI/B,EAAQ5V,GAC5B0oC,EAAIo1F,EAAOrsD,EAAI2pD,EAAavwF,GAAKqzF,EAAYr+H,KAAKm7B,IAAIwjG,EAAY9sE,IACxE4sE,GAAOE,EAAY91F,EACnB61F,GAAQ71F,CACV,CACF,CACA,MAAMqzF,EAAMqC,EAAItC,GAAMj8H,KAAK6qC,MAAM4zF,EAAMC,GACvCF,EAAUtC,IACZ,CAEF,MAAO,CAACqC,EAAKC,EACf,CACA,SAAO,CAActiG,GACnB,MAAMsiG,EAAY,IAAIrpG,YAAY,KAClC,IAAK,MAAM0B,KAAKqF,EACdsiG,EAAU3nG,KAEZ,OAAO2nG,CACT,CACA,SAAO,CAAStiG,GACd,MAAMw0F,EAAIx0F,EAAI9hC,OACRmkI,EAAM,IAAInqD,kBAAkBs8C,GAAK,GACvC,IAAIvjH,GAAOw8B,IACPv8B,EAAMu8B,IACV,IAAK,IAAIpnC,EAAI,EAAG2hC,EAAKq6F,EAAInkI,OAAQmI,EAAI2hC,EAAI3hC,IAAK,CAC5C,MAAM25H,EAAMqC,EAAIh8H,GAAK25B,EAAI35B,GAAK,GAC9B4K,EAAMnN,KAAKmN,IAAIA,EAAK+uH,GACpB9uH,EAAMpN,KAAKoN,IAAIA,EAAK8uH,EACtB,CACA,MAAM/1B,EAAQ,KAAOh5F,EAAMC,GAC3B,IAAK,IAAI7K,EAAI,EAAG2hC,EAAKq6F,EAAInkI,OAAQmI,EAAI2hC,EAAI3hC,IACvCg8H,EAAIh8H,IAAMg8H,EAAIh8H,GAAK6K,GAAO+4F,EAE5B,OAAOo4B,CACT,CACA,SAAO,CAAgBC,GACrB,IAAIj8H,EACAq8H,GAAKj1F,IACLk1F,GAAKl1F,IACT,MAAMv8B,EAAMoxH,EAAUxX,UAAUloH,GAAW,IAANA,GACrC,IAAI24B,EAAMrqB,EACN0xH,EAAO1xH,EACX,IAAK7K,EAAI6K,EAAK7K,EAAI,IAAKA,IAAK,CAC1B,MAAMzD,EAAI0/H,EAAUj8H,GAChBzD,EAAI8/H,IACFr8H,EAAIk1B,EAAMonG,IACZA,EAAIt8H,EAAIk1B,EACRqnG,EAAOv8H,EAAI,GAEbq8H,EAAI9/H,EACJ24B,EAAMl1B,EAEV,CACA,IAAKA,EAAIu8H,EAAO,EAAGv8H,GAAK,EAAGA,IACzB,GAAIi8H,EAAUj8H,GAAKi8H,EAAUj8H,EAAI,GAC/B,MAGJ,OAAOA,CACT,CACA,SAAO,CAAeoO,GACpB,MAAMouH,EAAiBpuH,GACjB,MACJoF,EAAK,OACLC,GACErF,GACE,OACJ64B,GACElwC,MAAK,GACT,IAAIgrB,EAAWvO,EACXwO,EAAYvO,EAChB,GAAID,EAAQyzB,GAAUxzB,EAASwzB,EAAQ,CACrC,IAAIw1F,EAAYjpH,EACZkpH,EAAajpH,EACb+1E,EAAQ/rF,KAAKk/H,KAAKl/H,KAAKmN,IAAI4I,EAAOC,GAAUwzB,GAChD,MAAM21F,EAASn/H,KAAKC,MAAM8rF,GAC1BA,EAAQA,IAAUozC,EAASA,EAAS,EAAIA,EACxC,IAAK,IAAI58H,EAAI,EAAGA,EAAIwpF,EAAOxpF,IAAK,CAC9B+hB,EAAWtkB,KAAKD,KAAKi/H,EAAY,GACjCz6G,EAAYvkB,KAAKD,KAAKk/H,EAAa,GACnC,MAAMvqF,EAAY,IAAInf,gBAAgBjR,EAAUC,GAC1C8jB,EAAMqM,EAAUr4B,WAAW,MACjCgsB,EAAI4K,UAAUtiC,EAAQ,EAAG,EAAGquH,EAAWC,EAAY,EAAG,EAAG36G,EAAUC,GACnEy6G,EAAY16G,EACZ26G,EAAa16G,EACT5T,IAAWouH,GACbpuH,EAAO7L,QAET6L,EAAS+jC,EAAUC,uBACrB,CACA,MAAMwxD,EAAQnmG,KAAKoN,IAAIo8B,EAASllB,EAAUklB,EAASjlB,GACnDD,EAAWtkB,KAAK6qC,MAAMvmB,EAAW6hF,GACjC5hF,EAAYvkB,KAAK6qC,MAAMtmB,EAAY4hF,EACrC,CACA,MAAMzxD,EAAY,IAAInf,gBAAgBjR,EAAUC,GAC1C8jB,EAAMqM,EAAUr4B,WAAW,KAAM,CACrCw2B,oBAAoB,IAEtBxK,EAAIuyC,UAAY,QAChBvyC,EAAI8iD,SAAS,EAAG,EAAG7mE,EAAUC,GAC7B8jB,EAAIliC,OAAS,eACbkiC,EAAI4K,UAAUtiC,EAAQ,EAAG,EAAGA,EAAOoF,MAAOpF,EAAOqF,OAAQ,EAAG,EAAGsO,EAAUC,GACzE,MAAM66G,EAAY/2F,EAAI6K,aAAa,EAAG,EAAG5uB,EAAUC,GAAWrc,KACxDm3H,EAAW/lI,MAAK,GAAS8lI,GAC/B,MAAO,CAACC,EAAU/6G,EAAUC,EAC9B,CACA,8BAAO+6G,CAAwBv9F,GAAM,WACnC+gC,EAAU,UACVy8D,EAAS,WACT/7D,GACCnkD,EAAWC,EAAYsjB,EAAU0sF,GAClC,IAAIvzG,EAAS,IAAIwZ,gBAAgB,EAAG,GAChC8S,EAAMtsB,EAAOM,WAAW,KAAM,CAChCupF,OAAO,IAET,MAAMxgB,EAAW,IACXrkB,EAAO14B,EAAI04B,KAAO,GAAGw+D,KAAa/7D,KAAc4hB,OAActiB,KAC9D,sBACJsT,EAAqB,uBACrBC,EAAsB,wBACtBC,EAAuB,yBACvBC,EAAwB,sBACxB0vB,EAAqB,uBACrBC,EAAsB,MACtBnwF,GACEsyB,EAAImpD,YAAYzvD,GACdy9F,EAAQ,IACR3jH,EAAc7b,KAAKD,KAAKC,KAAKmN,IAAInN,KAAKm7B,IAAIi7C,GAAyBp2E,KAAKm7B,IAAIk7C,IAA2B,EAAGtgE,GAASypH,GACnHxjH,EAAehc,KAAKD,KAAKC,KAAKmN,IAAInN,KAAKm7B,IAAIm7C,GAA2Bt2E,KAAKm7B,IAAIo7C,IAA6B6O,EAAUplF,KAAKm7B,IAAI8qE,GAAyBjmG,KAAKm7B,IAAI+qE,IAA2B9gB,GAAYo6C,GAC9MzjH,EAAS,IAAIwZ,gBAAgB1Z,EAAaG,GAC1CqsB,EAAMtsB,EAAOM,WAAW,KAAM,CAC5BupF,OAAO,EACP/yD,oBAAoB,IAEtBxK,EAAI04B,KAAOA,EACX14B,EAAIliC,OAAS,eACbkiC,EAAIuyC,UAAY,QAChBvyC,EAAI8iD,SAAS,EAAG,EAAGtvE,EAAaG,GAChCqsB,EAAIuyC,UAAY,QAChBvyC,EAAIm6B,SAASzgC,EAAMlmB,GAAe2jH,EAAQ,GAAK,EAAGxjH,GAAgB,EAAIwjH,GAAS,GAC/E,MAAMH,EAAW/lI,MAAK,GAAS+uC,EAAI6K,aAAa,EAAG,EAAGr3B,EAAaG,GAAc9T,MAC3Es2H,EAAYllI,MAAK,GAAc+lI,GAC/BxD,EAAYviI,MAAK,GAAgBklI,GACjCiB,EAAcnmI,MAAK,GAAc+lI,EAAUxjH,EAAaG,EAAc6/G,GAC5E,OAAOviI,KAAKomI,kBAAkB,CAC5B9yF,MAAO,CACL+yF,OAAQF,EACR1pH,MAAO8F,EACP7F,OAAQgG,GAEVqD,YACAC,aACAsjB,WACA0sF,cACAsQ,YAAY,EACZC,aAAa,GAEjB,CACA,cAAO31H,CAAQyG,EAAQ0O,EAAWC,EAAYsjB,EAAU0sF,GACtD,MAAO+P,EAAUtpH,EAAOC,GAAU1c,MAAK,GAAeqX,IAC/ChO,EAAQ67H,GAAallI,MAAK,GAAiB+lI,EAAUtpH,EAAOC,EAAQhW,KAAK+uD,MAAMh5C,EAAOC,GAAU1c,MAAK,GAAY+hI,aAAc/hI,MAAK,GAAYgiI,OAAQhiI,MAAK,GAAYiiI,YAC1KM,EAAYviI,MAAK,GAAgBklI,GACjCiB,EAAcnmI,MAAK,GAAcqJ,EAAQoT,EAAOC,EAAQ6lH,GAC9D,OAAOviI,KAAKomI,kBAAkB,CAC5B9yF,MAAO,CACL+yF,OAAQF,EACR1pH,QACAC,UAEFqJ,YACAC,aACAsjB,WACA0sF,cACAsQ,YAAY,EACZC,aAAa,GAEjB,CACA,wBAAOH,EAAkB,MACvB9yF,EAAK,UACLvtB,EAAS,WACTC,EAAU,SACVsjB,EAAQ,YACR0sF,EAAW,WACXsQ,EAAU,YACVC,IAEIj9F,EAAW,MAAQ,KACpBvjB,EAAWC,GAAc,CAACA,EAAYD,IAEzC,MAAM,OACJsgH,EAAM,MACN5pH,EAAK,OACLC,GACE42B,EACE08E,EAAY18E,EAAM08E,WAAa,EAC/BwW,EAAiB,GACjB35B,EAAQnmG,KAAKoN,IAAIiS,EAAYtJ,EAAOuJ,EAAatJ,GACjD+pH,EAAS55B,EAAQ9mF,EACjB2gH,EAAS75B,EAAQ7mF,EACjB2gH,EAAY,GAClB,IAAK,MAAM,OACT7W,KACGuW,EAAQ,CACX,MAAMO,EAAgBN,EAAatmI,MAAK,GAAgB8vH,GAAUA,EAClE,IAAK8W,EACH,SAEFD,EAAU18H,KAAK28H,GACf,MAAMx2H,EAAMw2H,EAAc9lI,OACpB+lI,EAAY,IAAIn0F,aAAatiC,GAC7BmjC,EAAO,IAAIb,aAAa,GAAa,IAARtiC,EAAY,EAAIA,EAAM,IAKzD,GAJAo2H,EAAev8H,KAAK,CAClBspC,OACAu8E,OAAQ+W,IAEE,IAARz2H,EAAW,CACby2H,EAAU,GAAKD,EAAc,GAAKH,EAClCI,EAAU,GAAKD,EAAc,GAAKF,EAClCnzF,EAAK3rC,IAAI,CAACswC,IAAKA,IAAKA,IAAKA,IAAK2uF,EAAU,GAAIA,EAAU,IAAK,GAC3D,QACF,CACA,IAAK1lG,EAAIC,EAAIC,EAAIE,GAAMqlG,EACvBzlG,GAAMslG,EACNrlG,GAAMslG,EACNrlG,GAAMolG,EACNllG,GAAMmlG,EACNG,EAAUj/H,IAAI,CAACu5B,EAAIC,EAAIC,EAAIE,GAAK,GAChCgS,EAAK3rC,IAAI,CAACswC,IAAKA,IAAKA,IAAKA,IAAK/W,EAAIC,GAAK,GACvC,IAAK,IAAIn4B,EAAI,EAAGA,EAAImH,EAAKnH,GAAK,EAAG,CAC/B,MAAMpC,EAAIggI,EAAU59H,GAAK29H,EAAc39H,GAAKw9H,EACtCjoH,EAAIqoH,EAAU59H,EAAI,GAAK29H,EAAc39H,EAAI,GAAKy9H,EACpDnzF,EAAK3rC,IAAIytH,GAAQQ,mBAAmB10F,EAAIC,EAAIC,EAAIE,EAAI16B,EAAG2X,GAAc,GAATvV,EAAI,KAC/Dk4B,EAAIC,EAAIC,EAAIE,GAAM,CAACF,EAAIE,EAAI16B,EAAG2X,EACjC,CACF,CACA,GAA8B,IAA1BgoH,EAAe1lI,OACjB,OAAO,KAET,MAAMk2H,EAAUuP,EAAc,IAAI5E,GAAuB,IAAIjC,GAE7D,OADA1I,EAAQ/b,MAAMurB,EAAgBzgH,EAAWC,EAAY,EAAGsjB,EAAUi9F,EAAc,EAAIvW,EAAWgG,GACxF,CACLgB,UACA2P,YACAJ,cACAvW,YACAvzG,QACAC,SAEJ,CACA,8BAAaoqH,EAAkB,SAC7BnO,EAAQ,YACR4N,EAAW,UACXvW,EAAS,MACTvzG,EAAK,OACLC,IAEA,IAWIqqH,EAXAC,EAAU32F,IACV42F,GAAW52F,IACX62F,EAAiB,EACrB,IAAK,MAAMpX,KAAU6I,EAAU,CAC7BuO,GAAkBpX,EAAOhvH,OACzB,IAAK,IAAImI,EAAI,EAAG2hC,EAAKklF,EAAOhvH,OAAQmI,EAAI2hC,EAAI3hC,IAAK,CAC/C,MAAMk+H,EAAKrX,EAAO7mH,GAAK6mH,EAAO7mH,EAAI,GAClC+9H,EAAUtgI,KAAKoN,IAAIkzH,EAASG,GAC5BF,EAAUvgI,KAAKmN,IAAIozH,EAASE,EAC9B,CACF,CAGEJ,EADEC,IAAY,KAAOC,GAAW,IACnBG,UACJJ,IAAY,OAASC,GAAW,MAC5BI,WAEA13D,WAEf,MAAMv/D,EAAMuoH,EAAS73H,OACfwmI,EAAe1F,GAAqBC,GAA2BzxH,EAC/Du+G,EAAS,IAAI9yF,YAAYyrG,GAC/B,IAAI3+D,EAAS,EACbgmD,EAAOhmD,KAAY2+D,EAAezrG,YAAY0rG,mBAAqBL,EAAiB,EAAI92H,GAAO22H,EAAWQ,kBAC1G5Y,EAAOhmD,KAAY,EACnBgmD,EAAOhmD,KAAYlsD,EACnBkyG,EAAOhmD,KAAYjsD,EACnBiyG,EAAOhmD,KAAY49D,EAAc,EAAI,EACrC5X,EAAOhmD,KAAYjiE,KAAKmN,IAAI,EAAGnN,KAAKC,MAAMqpH,GAAa,IACvDrB,EAAOhmD,KAAYv4D,EACnBu+G,EAAOhmD,KAAYo+D,EAAWQ,kBAC9B,IAAK,MAAMzX,KAAU6I,EACnBhK,EAAOhmD,KAAYmnD,EAAOhvH,OAAS,EACnC6tH,EAAOhmD,KAAYmnD,EAAO,GAC1BnB,EAAOhmD,KAAYmnD,EAAO,GAE5B,MAAMtsC,EAAK,IAAIgkD,kBAAkB,eAC3BC,EAASjkD,EAAGv/E,SAASyjI,kBACrBD,EAAO5yD,MACb4yD,EAAOl8H,MAAMojH,GACb,MAAMgZ,EAAaZ,EAAW7iI,UAAUF,YACxC,IAAK,MAAM8rH,KAAU6I,EAAU,CAC7B,MAAMiP,EAAQ,IAAID,EAAW7X,EAAOhvH,OAAS,GAC7C,IAAK,IAAImI,EAAI,EAAG2hC,EAAKklF,EAAOhvH,OAAQmI,EAAI2hC,EAAI3hC,IAC1C2+H,EAAM3+H,EAAI,GAAK6mH,EAAO7mH,GAAK6mH,EAAO7mH,EAAI,GAExCw+H,EAAOl8H,MAAMq8H,EACf,CACAH,EAAOj8H,QACP,MAAMo3B,QAAY,IAAIilG,SAASrkD,EAAGskD,UAAUpzH,cACtComB,EAAQ,IAAIS,WAAWqH,GAC7B,OAAOa,GAAa3I,EACtB,CACA,gCAAaitG,CAAoBC,GAC/B,IACE,MAAMltG,EAAQ+I,GAAemkG,IACvB,SACJF,EAAQ,SACR7jI,GACE,IAAIgkI,oBAAoB,eACtBR,EAASxjI,EAASyjI,kBAClBD,EAAO5yD,MACb4yD,EAAOl8H,MAAMuvB,GAAO4e,KAAK3R,gBACjB0/F,EAAO5yD,YACP4yD,EAAOj8H,UACZsqE,MAAM,QACT,IAAIlnE,EAAO,KACP+5D,EAAS,EACb,UAAW,MAAMxtC,KAAS2sG,EACxBl5H,IAAS,IAAI2sB,WAAW,IAAIM,YAAYV,EAAM9xB,OAAQ,EAAG,GAAG,IAC5DuF,EAAKhH,IAAIuzB,EAAOwtC,GAChBA,GAAUxtC,EAAMr6B,OAElB,MAAM6tH,EAAS,IAAI9yF,YAAYjtB,EAAKvF,OAAQ,EAAGuF,EAAK9N,QAAU,GACxD4P,EAAUi+G,EAAO,GACvB,GAAgB,IAAZj+G,EACF,MAAM,IAAI+nB,MAAM,oBAAoB/nB,KAEtC,MAAM+L,EAAQkyG,EAAO,GACfjyG,EAASiyG,EAAO,GAChB4X,EAA4B,IAAd5X,EAAO,GACrBqB,EAAYrB,EAAO,GACnBuZ,EAAmBvZ,EAAO,GAC1BoY,EAAapY,EAAO,GACpBgK,EAAW,GACXwP,GAAevG,GAAqBC,GAA2BqG,GAAoBrsG,YAAY0rG,kBACrG,IAAIK,EACJ,OAAQb,GACN,KAAKK,UAAUG,kBACbK,EAAQ,IAAIR,UAAUx4H,EAAKvF,OAAQ8+H,GACnC,MACF,KAAKd,WAAWE,kBACdK,EAAQ,IAAIP,WAAWz4H,EAAKvF,OAAQ8+H,GACpC,MACF,KAAKx4D,WAAW43D,kBACdK,EAAQ,IAAIj4D,WAAW/gE,EAAKvF,OAAQ8+H,GACpC,MAEJx/D,EAAS,EACT,IAAK,IAAI1/D,EAAI,EAAGA,EAAIi/H,EAAkBj/H,IAAK,CACzC,MAAMmH,EAAMu+G,EAAOkT,GAA2B54H,EAAI24H,IAC5C9R,EAAS,IAAIp9E,aAAatiC,EAAM,GACtCuoH,EAAS1uH,KAAK6lH,GACd,IAAK,IAAIv3C,EAAI,EAAGA,EAAIspD,GAA2B,EAAGtpD,IAChDu3C,EAAOv3C,GAAKo2C,EAAOkT,GAA2B54H,EAAI24H,GAAqBrpD,EAAI,GAE7E,IAAK,IAAIA,EAAI,EAAGA,EAAInoE,EAAKmoE,IACvBu3C,EAAOv3C,EAAI,GAAKu3C,EAAOv3C,GAAKqvD,EAAMj/D,IAEtC,CACA,MAAO,CACL49D,cACAvW,YACA2I,WACAl8G,QACAC,SAEJ,CAAE,MAAO0F,GAEP,OADAmW,EAAK,wBAAwBnW,KACtB,IACT,CACF,EAWF,MAAMgmH,WAAyB5M,GAC7B,WAAAx3H,GACEo2B,QACAA,MAAMigG,iBAAiB,CACrBjnG,KAAMwiC,GAAiBuB,kBACvB,eAAgB,GAEpB,CACA,KAAA5tD,GACE,MAAMA,EAAQ,IAAI6+H,GAElB,OADA7+H,EAAMqyH,UAAU57H,MACTuJ,CACT,EAEF,MAAM8+H,WAA8B9G,GAClC,WAAAv9H,CAAYw9H,GACVpnG,MAAMonG,GACNpnG,MAAMigG,iBAAiB,CACrBnnG,OAAQ0iC,GAAiBuB,kBACzB,eAAgB,GAEpB,CACA,KAAA5tD,GACE,MAAMA,EAAQ,IAAI8+H,GAAsBroI,KAAKyhI,iBAE7C,OADAl4H,EAAMqyH,UAAU57H,MACTuJ,CACT,EAEF,MAAM++H,WAAwBzM,GAC5B,KAAe,EACf,IAAe,KACf,IAAiB,KACjB,IAAiB,KACjBh0F,aAAe,YACfA,mBAAqB/a,EAAqBO,UAC1Cwa,8BAAgC,KAChC,WAAA7jC,CAAYgpD,GACV5yB,MAAM,IACD4yB,EACH+uE,iBAAiB,EACjBr4H,KAAM,oBAER1D,KAAKu2D,sBAAuB,EAC5Bv2D,MAAK,GAAiBgtD,EAAOg7E,eAAiB,KAC9ChoI,MAAK,GAAe,KACpBA,KAAKg/D,cAAgB,gCACvB,CACA,iBAAO9O,CAAWC,EAAMhZ,GACtBye,GAAiB1F,WAAWC,EAAMhZ,GAClCn3C,KAAK88H,uBAAyB,IAAIsL,GAClCpoI,KAAKuoI,8BAAgC,IAAIF,GAAsBlxF,EAAUuJ,eAC3E,CACA,+BAAO+7E,CAAyB94H,GAC9B,MAAM4F,EAAQvJ,KAAK88H,uBAAuBvzH,QAE1C,OADAA,EAAM8wH,iBAAiB12H,GAChB4F,CACT,CACA,kCAAWqzH,GACT,OAAO,CACT,CACA,mBAAWD,GACT,OAAO7iG,EAAO95B,KAAM,WAAY,IAAIsF,IACtC,CACA,mBAAW4xD,GACT,OAAO,CACT,CACA,sBAAIuL,GACF,MAAO,CACLh6D,KAAM,YACN+/H,iBAAkBxoI,MAAK,GAE3B,CACA,gCAAOylE,CAA0B72D,GAC/B,MAAM65H,EAAsB75H,EAAK/L,IAAI,kBACrC,MAAO,CACLi7D,WAAY2qE,EAAoB5lI,KAAI,IAAS,EAC7C6lI,aAAcD,EAAoB5lI,KAAI,IAAU,EAEpD,CACA,eAAIyR,GACF,OAAO,CACT,CACA,eAAA8rC,GACuB,OAAjBpgD,KAAK87H,SAGT1hG,MAAMgmB,iBACR,CACA,MAAAhkC,GACE,GAAIpc,KAAK8mC,IACP,OAAO9mC,KAAK8mC,IAEd,IAAIwyB,EAAOC,EACX,MAAM,QACJ1D,GACE71D,KAOJ,GANI61D,IACF71D,KAAK61D,SAAU,EACfyD,EAAQt5D,KAAK6G,EACb0yD,EAAQv5D,KAAKwe,GAEf4b,MAAMhe,SACe,OAAjBpc,KAAK87H,QACP,GAAI97H,MAAK,GAAgB,CACvB,MAAM,MACJszC,EAAK,WACLgzF,EAAU,YACVC,EAAW,YACXxvF,EAAW,KACX4xF,EAAI,aACJC,GACE5oI,MAAK,IAEPgqC,SAAS,UACPjkB,EAAS,WACTC,GACD,SACDsjB,GACEtpC,KAAKikB,OAAOjB,SACVg0G,EAAU8K,GAAmBsE,kBAAkB,CACnD9yF,QACAvtB,YACAC,aACAsjB,WACA0sF,YAAasS,GAAgBvJ,cAC7BuH,aACAC,gBAEFvmI,KAAK6oI,aAAa7R,EAAS4R,EAAc7xF,EAAa4xF,EACxD,MACE3oI,KAAK8mC,IAAIrB,aAAa,iBAAkBohB,KAAKC,UAAU,CACrD/P,YAAa,MAEf/2C,KAAK8mC,IAAIY,QAAS,EAClB1nC,KAAKu0C,WAAW2P,aAAalkD,WAG/BA,KAAK8mC,IAAIrB,aAAa,iBAAkBohB,KAAKC,UAAU,CACrD/P,YAAa/2C,MAAK,IAAgB,MAOtC,OAJI61D,IACF71D,KAAK61D,SAAU,EACf71D,KAAKq5D,gBAAgBC,EAAOC,IAEvBv5D,KAAK8mC,GACd,CACA,OAAAgiG,CAAQH,GACN3oI,MAAK,GAAiB2oI,EACtB3oI,KAAKg9D,gBACP,CACA,OAAAv6B,GACE,OAAOziC,MAAK,EACd,CACA,eAAI+2C,GACF,OAAO/2C,MAAK,EACd,CACA,eAAI+2C,CAAYA,GACd/2C,MAAK,GAAe+2C,EACf/2C,KAAK8mC,MAGV9mC,KAAK8mC,IAAIrB,aAAa,iBAAkBohB,KAAKC,UAAU,CACrD/P,iBAEF3c,MAAM4iC,iBAAiBtjB,KAAKzD,IAC1BA,GAASa,0BAA0BC,KAEvC,CACA,mBAAAgyF,GACE,MAAM,UACJpC,EAAS,YACTJ,EAAW,UACXvW,EAAS,MACTvzG,EAAK,OACLC,GACE1c,MAAK,GACHkwC,EAASxpC,KAAKmN,IAAI4I,EAAOC,GACzBssH,EAAclH,GAAmBsE,kBAAkB,CACvD9yF,MAAO,CACL+yF,OAAQM,EAAU98H,IAAIimH,IAAU,CAC9BA,YAEFE,YACAvzG,QACAC,UAEFqJ,UAAWmqB,EACXlqB,WAAYkqB,EACZ5G,SAAU,EACV0sF,YAAa,EACbsQ,YAAY,EACZC,gBAEF,MAAO,CACLA,cACAvP,QAASgS,EAAYhS,QAEzB,CACA,kBAAIj6D,GACF,OAAI/8D,KAAKu0C,WAAW+B,iBACX,CAAC,CAAC,gBAAiBt2C,KAAKu0C,WAAW+B,mBAErClc,MAAM2iC,cACf,CACA,YAAA8rE,CAAaj6H,EAAMg6H,EAAc7xF,EAAa4xF,GAC5C,MACE9hI,EAAG+mD,EACHpvC,EAAGqvC,GACD7tD,MACE,QACJg3H,GACEh3H,MAAK,GAAiB4O,EAG1B,IAAIutH,EAFJn8H,MAAK,GAAeg3H,aAAmB2K,GACvC3hI,KAAK+2C,YAAcA,EAEf/2C,MAAK,GACPm8H,EAAiBmM,GAAgB7L,4BAEjCN,EAAiBmM,GAAgBC,8BAA8Bh/H,QAC/D4yH,EAAe9B,iBAAiB,CAC9B,eAAgBrD,EAAQhH,aAG5BhwH,KAAKg8H,aAAa,CAChBC,aAAcjF,EACdmF,mBAEF,MAAO,CAAEn2G,GAAchmB,KAAK82D,eAC5B,IAAI7rC,EAAY29G,EAAe5iH,EAC/BiF,EAAYA,GAAa,EAAI,GAAMA,EACnCjrB,KAAKyc,OAASwO,EAAYjrB,KAAK0c,OAC3B1c,KAAKyc,OAAS,IAChBwO,GAAa,GAAMjrB,KAAKyc,MACxBzc,KAAKyc,MAAQ,IAEfzc,KAAK0c,OAASuO,EACdjrB,KAAKy6D,UACLz6D,KAAK6G,EAAI+mD,EACT5tD,KAAKwe,EAAIqvC,EACT7tD,KAAKu4D,SACLv4D,KAAKq7D,aACLr7D,KAAKogD,kBACLpgD,KAAK8gE,SACL9gE,KAAKu0C,WAAWmS,uBAAuB1mD,MACvCA,KAAK8oI,QAAQH,GACb3oI,KAAKuwD,iBAAiB,CACpBnF,OAAQ,2BACRx8C,KAAM,CACJq6H,eAAgBN,EAChBH,iBAAkBzxF,KAGtB/2C,KAAK8mC,IAAIY,QAAS,CACpB,CACA,YAAAwhG,CAAa7xH,GACX,MACE2yB,SAAS,UACPjkB,EAAS,WACTC,GACD,SACDsjB,GACEtpC,KAAKikB,OAAOjB,SAChB,OAAO8+G,GAAmBlxH,QAAQyG,EAAQ0O,EAAWC,EAAYsjB,EAAUg/F,GAAgBvJ,cAC7F,CACA,WAAAoK,CAAY1gG,EAAM2gG,GAChB,MACEp/F,SAAS,UACPjkB,EAAS,WACTC,GACD,SACDsjB,GACEtpC,KAAKikB,OAAOjB,SAChB,OAAO8+G,GAAmBkE,wBAAwBv9F,EAAM2gG,EAAUrjH,EAAWC,EAAYsjB,EAAUg/F,GAAgBvJ,cACrH,CACA,iBAAAsK,CAAkBhD,GAChB,MACEr8F,SAAS,UACPjkB,EAAS,WACTC,GACD,SACDsjB,GACEtpC,KAAKikB,OAAOjB,SAChB,OAAO8+G,GAAmBsE,kBAAkB,CAC1C9yF,MAAO+yF,EACPtgH,YACAC,aACAsjB,WACA0sF,YAAasS,GAAgBvJ,cAC7BuH,YAAY,EACZC,aAAa,GAEjB,CACA,oBAAAvH,EAAqB,YACnBuH,EAAW,UACXvW,IAEIuW,EACFvmI,KAAKo8H,gBAAkBkM,GAAgB7L,4BAEvCz8H,KAAKo8H,gBAAkBkM,GAAgBC,8BAA8Bh/H,QACrEvJ,KAAKo8H,gBAAgB/B,iBAAiB,CACpC,eAAgBrK,IAGtB,CACA,SAAA3nE,CAAU2I,GAAe,GACvB,GAAIhxD,KAAK89C,UACP,OAAO,KAET,MAAM,MACJxK,EAAK,OACLw8E,GACE9vH,KAAKw/H,cAAcxuE,IAErBorE,iBACE,eAAgBpM,IAEhBhwH,KACEooD,EAAanlD,OAAOmjC,OAAOhM,MAAMiuB,UAAU2I,GAAe,CAC9Ds4E,aAAa,EACb/C,YAAavmI,MAAK,GAClBmuC,MAAO,CAAC,EAAG,EAAG,GACd6hF,UAAWhwH,MAAK,GAAe,EAAIgwH,IAmBrC,OAjBAhwH,KAAK41C,WAAWwS,GACZ4I,GACF5I,EAAW6uC,MAAQ,CACjB3jD,QACAw8E,UAEF1nE,EAAWugF,KAAO3oI,MAAK,GACvBooD,EAAWgZ,QAAS,GAEpBhZ,EAAW9U,MAAQA,EAEjBtzC,MAAK,KACPooD,EAAW+Y,kBAAoB,CAC7B14D,KAAM,SACN8gI,IAAKvpI,MAAK,KAGPooD,CACT,CACA,sBAAO82E,CAAgBh1F,EAAOC,EAAOpkB,EAAWC,EAAYgwG,EAAapnH,GACvE,OAAIA,EAAK23H,YACA5E,GAAmBh5E,YAAYze,EAAOC,EAAOpkB,EAAWC,EAAYgwG,EAAapnH,GAEnF8wH,GAAe/2E,YAAYze,EAAOC,EAAOpkB,EAAWC,EAAYgwG,EAAapnH,EACtF,CACA,wBAAa+5C,CAAY/5C,EAAMqV,EAAQkzB,GACrC,MAAMrD,QAAe1Z,MAAMuuB,YAAY/5C,EAAMqV,EAAQkzB,GAIrD,OAHArD,GAAO,GAAellC,EAAK23H,YAC3BzyF,EAAOiD,YAAcnoC,EAAKuyD,mBAAmBooE,KAAO,GACpDz1F,GAAO,GAAiBllC,EAAK+5H,KACtB70F,CACT,EAQF,MAAM01F,WAAoB5zE,GACxB,IAAU,KACV,IAAY,KACZ,IAAiB,KACjB,IAAa,KACb,IAAc,KACd,IAAkB,GAClB,IAAU,KACV,KAAiB,EACjB,IAAmB,KACnB,KAAS,EACT,KAA2B,EAC3B/tB,aAAe,QACfA,mBAAqB/a,EAAqBI,MAC1C,WAAAlpB,CAAYgpD,GACV5yB,MAAM,IACD4yB,EACHtpD,KAAM,gBAER1D,MAAK,GAAagtD,EAAOy8E,UACzBzpI,MAAK,GAAcgtD,EAAO08E,WAC1B1pI,KAAKg/D,cAAgB,2BACvB,CACA,iBAAO9O,CAAWC,EAAMhZ,GACtBye,GAAiB1F,WAAWC,EAAMhZ,EACpC,CACA,+BAAO8Q,CAAyBoQ,GAC9B,OAAOtnB,GAAwBv1B,SAAS68C,EAC1C,CACA,YAAO3Q,CAAMv3C,EAAM8T,GACjBA,EAAO0lH,YAAY,CACjB9xH,KAAMiV,EAAqBI,OAC1B,CACDw8G,WAAYv5H,EAAKy5H,aAErB,CACA,aAAA9sE,GACM98D,KAAKu0C,WAAWgN,oBAClBvhD,KAAK8mC,IAAIY,QAAS,GAEpBtN,MAAM0iC,eACR,CACA,sBAAI2F,GACF,MAAO,CACLh6D,KAAM,QACNq1D,aAAc99D,KAAK09D,aAAa/nB,QAEpC,CACA,gCAAO8vB,CAA0B72D,GAC/B,MAAMi7H,EAAkBj7H,EAAK/L,IAAI,cACjC,MAAO,CACLi7D,WAAY+rE,EAAgBhnI,KAAI,IAAS,EACzC6lI,aAAcmB,EAAgBhnI,KAAI,IAAU,EAEhD,CACA,IAAkB+L,EAAMk7H,GAAS,GAC1Bl7H,GAIL5O,MAAK,GAAU4O,EAAKyI,OACfyyH,IACH9pI,MAAK,GAAY4O,EAAKW,GACtBvP,MAAK,GAAS4O,EAAKmrC,OAEjBnrC,EAAKqrC,OACPj6C,MAAK,GAAkB4O,EAAKqrC,KAAKv2C,MAEnC1D,MAAK,MAXHA,KAAK6uC,QAYT,CACA,MAGE,GAFA7uC,MAAK,GAAiB,KACtBA,KAAKu0C,WAAWiX,eAAc,GACzBxrD,MAAK,GAGV,GAAIA,KAAKu0C,WAAWiN,8BAAgCxhD,KAAKu0C,WAAWgN,mBAAqBvhD,MAAK,GAC5FA,KAAKg9D,iBAAiBtjB,KAAK,KACzB15C,KAAK81D,aAAa9gB,OAClBh1C,KAAKu0C,WAAWmO,YAAY1iD,MAAM,SAHtC,CAOA,IAAKA,KAAKu0C,WAAWiN,8BAAgCxhD,KAAKu0C,WAAWgN,mBAAqBvhD,MAAK,GAAS,CACtGA,KAAKuwD,iBAAiB,CACpBnF,OAAQ,0BACRx8C,KAAM,CACJm7H,gBAAgB,EAChBC,cAAe,WAGnB,IACEhqI,KAAKiqI,gBACP,CAAE,MAAO,CACX,CACAjqI,KAAK8mC,IAAI0d,OAbT,CAcF,CACA,oBAAMylF,CAAe9gE,EAAY,KAAM+gE,GAAoB,GACzD,GAAIlqI,KAAK+9D,iBACP,OAAO,KAET,MAAM,UACJle,GACE7/C,KAAKu0C,WACT,IAAKsL,EACH,MAAM,IAAIpnB,MAAM,UAElB,UAAYonB,EAAUsqF,aAAa,WACjC,MAAM,IAAI1xG,MAAM,kCAElB,MAAM,KACJ7pB,EAAI,MACJ6N,EAAK,OACLC,GACEysD,GAAanpE,KAAKoqI,WAAW,KAAM,MAAM,GAAMjhE,UAC7ChhC,QAAiB0X,EAAUwqF,MAAM,CACrC3mI,KAAM,UACNilC,QAAS,CACP/5B,OACA6N,QACAC,SACA4tH,SAAU17H,EAAK9N,QAAU2b,EAAQC,MAGrC,IAAKyrB,EACH,MAAM,IAAI1P,MAAM,oCAElB,GAAI0P,EAASxmC,MACX,MAAM,IAAI82B,MAAM,8BAElB,GAAI0P,EAAShmB,OACX,OAAO,KAET,IAAKgmB,EAASnJ,OACZ,MAAM,IAAIvG,MAAM,0CAElB,MAAMkd,EAAUxN,EAASnJ,OAQzB,aAPMh/B,KAAK49D,kBAAkBjoB,GACzBu0F,IAAsBlqI,KAAK+9D,mBAC7B/9D,KAAK09D,YAAc,CACjB6rE,IAAK5zF,EACLsb,YAAY,IAGTtb,CACT,CACA,MACE,GAAI31C,MAAK,GAGP,OAFAA,KAAKu0C,WAAWiX,eAAc,QAC9BxrD,KAAKu0C,WAAWwa,aAAa7T,UAAUl7C,MAAK,IAAW05C,KAAK9qC,GAAQ5O,MAAK,GAAkB4O,GAAM,IAAO87F,QAAQ,IAAM1qG,MAAK,MAG7H,GAAIA,MAAK,GAAY,CACnB,MAAM64B,EAAM74B,MAAK,GAIjB,OAHAA,MAAK,GAAa,KAClBA,KAAKu0C,WAAWiX,eAAc,QAC9BxrD,MAAK,GAAiBA,KAAKu0C,WAAWwa,aAAahU,WAAWliB,GAAK6gB,KAAK9qC,GAAQ5O,MAAK,GAAkB4O,IAAO87F,QAAQ,IAAM1qG,MAAK,MAEnI,CACA,GAAIA,MAAK,GAAa,CACpB,MAAMi6C,EAAOj6C,MAAK,GAIlB,OAHAA,MAAK,GAAc,KACnBA,KAAKu0C,WAAWiX,eAAc,QAC9BxrD,MAAK,GAAiBA,KAAKu0C,WAAWwa,aAAalU,YAAYZ,GAAMP,KAAK9qC,GAAQ5O,MAAK,GAAkB4O,IAAO87F,QAAQ,IAAM1qG,MAAK,MAErI,CACA,MAAMkO,EAAQ9B,SAAS0D,cAAc,SACrC5B,EAAMzF,KAAO,OACbyF,EAAMq8H,OAASx5F,GAAwB1tC,KAAK,KAC5C,MAAMixC,EAASt0C,KAAKu0C,WAAWC,QAC/Bx0C,MAAK,GAAiB,IAAIuhB,QAAQ0iB,IAChC/1B,EAAM4a,iBAAiB,SAAUif,UAC/B,GAAK75B,EAAMs8H,OAAgC,IAAvBt8H,EAAMs8H,MAAM1pI,OAEzB,CACLd,KAAKu0C,WAAWiX,eAAc,GAC9B,MAAM58C,QAAa5O,KAAKu0C,WAAWwa,aAAalU,YAAY3sC,EAAMs8H,MAAM,IACxExqI,KAAKuwD,iBAAiB,CACpBnF,OAAQ,6BACRx8C,KAAM,CACJm7H,eAAgB/pI,KAAKu0C,WAAWgN,qBAGpCvhD,MAAK,GAAkB4O,EACzB,MAXE5O,KAAK6uC,SAYP5K,KACC,CACDqQ,WAEFpmC,EAAM4a,iBAAiB,SAAU,KAC/B9oB,KAAK6uC,SACL5K,KACC,CACDqQ,aAEDo2D,QAAQ,IAAM1qG,MAAK,MACtBkO,EAAMu8H,OACR,CACA,MAAA57F,GACM7uC,MAAK,KACPA,MAAK,GAAU,KACfA,KAAKu0C,WAAWwa,aAAaxT,SAASv7C,MAAK,IAC3CA,MAAK,IAAS6uC,SACd7uC,MAAK,GAAU,KACXA,MAAK,KACPmhD,aAAanhD,MAAK,IAClBA,MAAK,GAAmB,OAG5Bo6B,MAAMyU,QACR,CACA,OAAA2f,GACOxuD,KAAKikB,QAMVmW,MAAMo0B,UACW,OAAbxuD,KAAK8mC,MAGL9mC,MAAK,IAA8B,OAAjBA,MAAK,IACzBA,MAAK,KAEFA,KAAKg3D,iBACRh3D,KAAKikB,OAAOG,IAAIpkB,QAbZA,MAAK,IACPA,MAAK,IAcX,CACA,SAAAqgE,CAAU7b,GACRxkD,KAAKs4D,cAAe,EAChB9T,GACFxkD,KAAK8mC,IAAI0d,OAEb,CACA,OAAA1G,GACE,QAAS99C,MAAK,IAAkBA,MAAK,IAAWA,MAAK,IAAcA,MAAK,IAAeA,MAAK,IAAaA,MAAK,GAChH,CACA,kBAAI+8D,GACF,MAAO,CAAC,CAAC,UAAW/8D,KAAKy9D,iBAC3B,CACA,eAAInpD,GACF,OAAO,CACT,CACA,MAAA8H,GACE,GAAIpc,KAAK8mC,IACP,OAAO9mC,KAAK8mC,IAEd,IAAIwyB,EAAOC,EAmBX,OAlBIv5D,KAAK61D,UACPyD,EAAQt5D,KAAK6G,EACb0yD,EAAQv5D,KAAKwe,GAEf4b,MAAMhe,SACNpc,KAAK8mC,IAAIY,QAAS,EAClB1nC,KAAKy9D,gBACAz9D,MAAK,KACJA,MAAK,GACPA,MAAK,KAELA,MAAK,MAGLA,KAAK61D,SACP71D,KAAKq5D,gBAAgBC,EAAOC,GAE9Bv5D,KAAKu0C,WAAWsQ,iBAAiB7kD,MAC1BA,KAAK8mC,GACd,CACA,SAAA+oB,CAAUtF,EAAqB9nC,GAC7B,MACElT,GAAIm7H,EAAQ,OACZrzH,GACErX,KAAKu0C,WAAWwa,aAAa5T,cAAcoP,EAAqB9nC,GACpEA,EAAOosB,SACH67F,GAAY1qI,KAAKu0C,WAAWwa,aAAarT,UAAUgvF,KACrD1qI,MAAK,GAAY0qI,EACbrzH,IACFrX,MAAK,GAAUqX,GAEjBrX,MAAK,IAAiB,EACtBA,MAAK,KAET,CACA,UAAAq7D,GACEr7D,KAAKogD,iBACP,CACA,eAAAA,GACE,IAAKpgD,KAAKikB,OACR,OAE4B,OAA1BjkB,MAAK,IACPmhD,aAAanhD,MAAK,IAEpB,MAAMwtD,EAAe,IACrBxtD,MAAK,GAAmBisD,WAAW,KACjCjsD,MAAK,GAAmB,KACxBA,MAAK,MACJwtD,EACL,CACA,MACE,MAAM,IACJ1mB,GACE9mC,KACJ,IAAI,MACFyc,EAAK,OACLC,GACE1c,MAAK,GACT,MAAO+lB,EAAWC,GAAchmB,KAAK82D,eAC/B6zE,EAAY,IAClB,GAAI3qI,KAAKyc,MACPA,EAAQzc,KAAKyc,MAAQsJ,EACrBrJ,EAAS1c,KAAK0c,OAASsJ,OAClB,GAAIvJ,EAAQkuH,EAAY5kH,GAAarJ,EAASiuH,EAAY3kH,EAAY,CAC3E,MAAMs5C,EAAS54D,KAAKoN,IAAI62H,EAAY5kH,EAAYtJ,EAAOkuH,EAAY3kH,EAAatJ,GAChFD,GAAS6iD,EACT5iD,GAAU4iD,CACZ,CACAt/D,KAAKu0C,WAAWiX,eAAc,GAC9B,MAAM/oC,EAASziB,MAAK,GAAUoM,SAAS0D,cAAc,UACrD2S,EAAOgjB,aAAa,OAAQ,OAC5BzlC,KAAKq9D,aAAa56C,GAClBziB,KAAKyc,MAAQA,EAAQsJ,EACrB/lB,KAAK0c,OAASA,EAASsJ,EACvBhmB,KAAKy6D,UACDz6D,KAAK+1D,iBAAiBS,WACxBx2D,KAAKu4D,SAELv4D,KAAKy4D,oBAEPz4D,KAAK+1D,gBAAkB,KAClB/1D,KAAKu0C,WAAWiN,8BAAiCxhD,KAAKu0C,WAAWgN,oBAAqBvhD,KAAKuqD,sBAC9FzjB,EAAIY,QAAS,GAEf1nC,MAAK,KACAA,MAAK,KACRA,KAAKikB,OAAO22G,kBAAkB56H,MAC9BA,MAAK,IAA2B,GAElCA,KAAKuwD,iBAAiB,CACpBnF,OAAQ,mBAENprD,MAAK,IACPA,KAAK8mC,IAAIrB,aAAa,mBAAoBzlC,MAAK,IAE5CA,KAAKuqD,qBACRvqD,KAAKu0C,WAAWoS,UAAU,iCAE9B,CACA,UAAAyjF,CAAWQ,EAAkBC,EAAqBnmD,GAAkB,GAC7DkmD,IACHA,EAAmB,KAErB,MACEnuH,MAAOquH,EACPpuH,OAAQquH,GACN/qI,MAAK,GACHgrI,EAAc,IAAIt7F,GACxB,IAAIr4B,EAASrX,MAAK,GACdyc,EAAQquH,EACVpuH,EAASquH,EACPtoH,EAAS,KACb,GAAIooH,EAAqB,CACvB,GAAIC,EAAcD,GAAuBE,EAAeF,EAAqB,CAC3E,MAAMh+B,EAAQnmG,KAAKoN,IAAI+2H,EAAsBC,EAAaD,EAAsBE,GAChFtuH,EAAQ/V,KAAKC,MAAMmkI,EAAcj+B,GACjCnwF,EAAShW,KAAKC,MAAMokI,EAAel+B,EACrC,CACApqF,EAASrW,SAAS0D,cAAc,UAChC,MAAMm7H,EAAcxoH,EAAOhG,MAAQ/V,KAAKD,KAAKgW,EAAQuuH,EAAYp7F,IAC3Ds7F,EAAezoH,EAAO/F,OAAShW,KAAKD,KAAKiW,EAASsuH,EAAYn7F,IAC/D7vC,MAAK,KACRqX,EAASrX,MAAK,GAAairI,EAAaC,IAE1C,MAAMn8F,EAAMtsB,EAAOM,WAAW,MAC9BgsB,EAAIliC,OAAS7M,KAAKu0C,WAAWkN,UAC7B,IAAInQ,EAAQ,QACVq5B,EAAQ,UACwB,SAA9B3qE,KAAKu0C,WAAWkN,UAClBkpB,EAAQ,QACC35B,GAAYC,aACrBK,EAAQ,UACRq5B,EAAQ,WAEV,MAAMwgE,EAAS,GACTC,EAAcD,EAASH,EAAYp7F,GACnCy7F,EAAeF,EAASH,EAAYn7F,GACpC2wC,EAAU,IAAIvkD,gBAA8B,EAAdmvG,EAAgC,EAAfC,GAC/CC,EAAa9qD,EAAQz9D,WAAW,MACtCuoH,EAAWhqD,UAAYhwC,EACvBg6F,EAAWz5C,SAAS,EAAG,EAAiB,EAAdu5C,EAAgC,EAAfC,GAC3CC,EAAWhqD,UAAY3W,EACvB2gE,EAAWz5C,SAAS,EAAG,EAAGu5C,EAAaC,GACvCC,EAAWz5C,SAASu5C,EAAaC,EAAcD,EAAaC,GAC5Dt8F,EAAIuyC,UAAYvyC,EAAIwyC,cAAcf,EAAS,UAC3CzxC,EAAI8iD,SAAS,EAAG,EAAGo5C,EAAaC,GAChCn8F,EAAI4K,UAAUtiC,EAAQ,EAAG,EAAGA,EAAOoF,MAAOpF,EAAOqF,OAAQ,EAAG,EAAGuuH,EAAaC,EAC9E,CACA,IAAI/hE,EAAY,KAChB,GAAIub,EAAiB,CACnB,IAAI6mD,EAAWC,EACf,GAAIR,EAAYj7F,WAAa14B,EAAOoF,MAAQmuH,GAAoBvzH,EAAOqF,OAASkuH,EAC9EW,EAAYl0H,EAAOoF,MACnB+uH,EAAan0H,EAAOqF,YAGpB,GADArF,EAASrX,MAAK,GACV8qI,EAAcF,GAAoBG,EAAeH,EAAkB,CACrE,MAAM/9B,EAAQnmG,KAAKoN,IAAI82H,EAAmBE,EAAaF,EAAmBG,GAC1EQ,EAAY7kI,KAAKC,MAAMmkI,EAAcj+B,GACrC2+B,EAAa9kI,KAAKC,MAAMokI,EAAel+B,GAClC7sG,MAAK,KACRqX,EAASrX,MAAK,GAAaurI,EAAWC,GAE1C,CAEF,MAAMpwF,EAAY,IAAInf,gBAAgBsvG,EAAWC,GAC3CC,EAAerwF,EAAUr4B,WAAW,KAAM,CAC9Cw2B,oBAAoB,IAEtBkyF,EAAa9xF,UAAUtiC,EAAQ,EAAG,EAAGA,EAAOoF,MAAOpF,EAAOqF,OAAQ,EAAG,EAAG6uH,EAAWC,GACnFriE,EAAY,CACV1sD,MAAO8uH,EACP7uH,OAAQ8uH,EACR58H,KAAM68H,EAAa7xF,aAAa,EAAG,EAAG2xF,EAAWC,GAAY58H,KAEjE,CACA,MAAO,CACL6T,SACAhG,QACAC,SACAysD,YAEJ,CACA,IAAa1sD,EAAOC,GAClB,MACED,MAAOquH,EACPpuH,OAAQquH,GACN/qI,MAAK,GACT,IAAIgrB,EAAW8/G,EACX7/G,EAAY8/G,EACZ1zH,EAASrX,MAAK,GAClB,MAAOgrB,EAAW,EAAIvO,GAASwO,EAAY,EAAIvO,EAAQ,CACrD,MAAMgpH,EAAY16G,EACZ26G,EAAa16G,EACfD,EAAW,EAAIvO,IACjBuO,EAAWA,GAAY,MAAQtkB,KAAKC,MAAMqkB,EAAW,GAAK,EAAItkB,KAAKD,KAAKukB,EAAW,IAEjFC,EAAY,EAAIvO,IAClBuO,EAAYA,GAAa,MAAQvkB,KAAKC,MAAMskB,EAAY,GAAK,EAAIvkB,KAAKD,KAAKwkB,EAAY,IAEzF,MAAMmwB,EAAY,IAAInf,gBAAgBjR,EAAUC,GAC1C8jB,EAAMqM,EAAUr4B,WAAW,MACjCgsB,EAAI4K,UAAUtiC,EAAQ,EAAG,EAAGquH,EAAWC,EAAY,EAAG,EAAG36G,EAAUC,GACnE5T,EAAS+jC,EAAUC,uBACrB,CACA,OAAOhkC,CACT,CACA,MACE,MAAO83C,EAAaC,GAAgBpvD,KAAK+yD,kBACnC,MACJt2C,EAAK,OACLC,GACE1c,KACEgrI,EAAc,IAAIt7F,GAClBu7F,EAAcvkI,KAAKD,KAAKgW,EAAQ0yC,EAAc67E,EAAYp7F,IAC1Ds7F,EAAexkI,KAAKD,KAAKiW,EAAS0yC,EAAe47E,EAAYn7F,IAC7DptB,EAASziB,MAAK,GACpB,IAAKyiB,GAAUA,EAAOhG,QAAUwuH,GAAexoH,EAAO/F,SAAWwuH,EAC/D,OAEFzoH,EAAOhG,MAAQwuH,EACfxoH,EAAO/F,OAASwuH,EAChB,MAAM7zH,EAASrX,MAAK,GAASA,MAAK,GAAUA,MAAK,GAAairI,EAAaC,GACrEn8F,EAAMtsB,EAAOM,WAAW,MAC9BgsB,EAAIliC,OAAS7M,KAAKu0C,WAAWkN,UAC7B1S,EAAI4K,UAAUtiC,EAAQ,EAAG,EAAGA,EAAOoF,MAAOpF,EAAOqF,OAAQ,EAAG,EAAGuuH,EAAaC,EAC9E,CACA,IAAiBQ,GACf,GAAIA,EAAO,CACT,GAAI1rI,MAAK,GAAQ,CACf,MAAM64B,EAAM74B,KAAKu0C,WAAWwa,aAAazT,UAAUt7C,MAAK,IACxD,GAAI64B,EACF,OAAOA,CAEX,CACA,MAAMpW,EAASrW,SAAS0D,cAAc,YAEpC2M,MAAOgG,EAAOhG,MACdC,OAAQ+F,EAAO/F,QACb1c,MAAK,IACT,MAAM+uC,EAAMtsB,EAAOM,WAAW,MAE9B,OADAgsB,EAAI4K,UAAU35C,MAAK,GAAS,EAAG,GACxByiB,EAAOkpH,WAChB,CACA,GAAI3rI,MAAK,GAAQ,CACf,MAAO+lB,EAAWC,GAAchmB,KAAK82D,eAC/Br6C,EAAQ/V,KAAK6qC,MAAMvxC,KAAKyc,MAAQsJ,EAAY6hB,GAAcgZ,kBAC1DlkC,EAAShW,KAAK6qC,MAAMvxC,KAAK0c,OAASsJ,EAAa4hB,GAAcgZ,kBAC7DxF,EAAY,IAAInf,gBAAgBxf,EAAOC,GACvCqyB,EAAMqM,EAAUr4B,WAAW,MAEjC,OADAgsB,EAAI4K,UAAU35C,MAAK,GAAS,EAAG,EAAGA,MAAK,GAAQyc,MAAOzc,MAAK,GAAQ0c,OAAQ,EAAG,EAAGD,EAAOC,GACjF0+B,EAAUC,uBACnB,CACA,OAAOjyC,gBAAgBpJ,MAAK,GAC9B,CACA,wBAAa2oD,CAAY/5C,EAAMqV,EAAQkzB,GACrC,IAAIioD,EAAc,KACdwsC,GAAgB,EACpB,GAAIh9H,aAAgBsxG,GAAwB,CAC1C,MACEtxG,MAAM,KACJmwB,EAAI,SACJuK,EAAQ,GACR/5B,EAAE,aACFs8H,EAAY,SACZlhF,EAAQ,SACRuI,EAAQ,YACRtI,EAAW,aACX8L,EAAY,iBACZC,GACD,UACDxjB,EACAlvB,QACEjH,MAAM,WACJ8mC,IAEH,OACDrhC,GACE7T,EACJ,IAAI87H,EAAUrzH,EACVoL,UACK7T,EAAK6T,SAEVlT,GAAIm7H,EACJrzH,UACE8/B,EAAU4X,aAAa5T,cAAchI,EAAU5jC,GAAIkT,IACvDA,EAAOosB,WAEP+8F,GAAgB,EAChBh9H,EAAKujH,cAAe,GAEtB,MAAMx8E,SAAiB1xB,EAAO6nH,YAAY5a,kBAAkB,GAAGpuF,KAAmBvzB,OAAQ1M,IAAI,eAAiB,GAC/Gu8F,EAAcxwF,EAAO,CACnBqyD,eAAgBn0C,EAAqBI,MACrCw9G,WACArzH,SACA4rC,UAAWa,EAAa,EACxB/kB,KAAMA,EAAK57B,MAAM,GACjBmmC,WACAihB,oBAAqBh7C,EACrBA,KACAk7C,SAAS,EACT0W,kBAAmB,CACjBlQ,YAAY,EACZtb,WAEFoE,OAAO,EACP8xF,eACAlhF,WACAuI,WACArd,QAAS+U,GAAatvB,KAAO,KAC7Bo7B,eACAC,mBAEJ,CACA,MAAM7iB,QAAe1Z,MAAMuuB,YAAY/5C,EAAMqV,EAAQkzB,IAC/C,KACJpY,EAAI,OACJ1nB,EAAM,UACNoyH,EAAS,SACTiB,EAAQ,MACR3wF,EAAK,kBACLonB,GACEvyD,EACAg9H,GACFz0F,EAAU2Y,iBAAiBlhD,EAAKW,GAAIukC,GACpCA,GAAO,IAAiB,GACf42F,GAAYvzF,EAAU4X,aAAarT,UAAUgvF,IACtD52F,GAAO,GAAY42F,EACfrzH,IACFy8B,GAAO,GAAUz8B,IAGnBy8B,GAAO,GAAa21F,EAEtB31F,GAAO,GAASiG,EAChB,MAAOoV,EAAaC,GAAgBtb,EAAOgjB,eAW3C,OAVAhjB,EAAOr3B,OAASsiB,EAAK,GAAKA,EAAK,IAAMowB,EACrCrb,EAAOp3B,QAAUqiB,EAAK,GAAKA,EAAK,IAAMqwB,EAClC+R,IACFrtB,EAAO4pB,YAAcyD,GAEvBrtB,EAAOkiB,aAAeopC,EAClBxwF,EAAKinC,SACP/B,EAAOmqB,eAAervD,GAExBklC,GAAO,KAA6BsrD,EAC7BtrD,CACT,CACA,SAAAuU,CAAU2I,GAAe,EAAOluC,EAAU,MACxC,GAAI9iB,KAAK89C,UACP,OAAO,KAET,GAAI99C,KAAKyqD,QACP,OAAOzqD,KAAKghE,mBAEd,MAAM5Y,EAAanlD,OAAOmjC,OAAOhM,MAAMiuB,UAAU2I,GAAe,CAC9D05E,SAAU1qI,MAAK,GACf+5C,MAAO/5C,MAAK,KAGd,GADAA,KAAK41C,WAAWwS,GACZ4I,EAIF,OAHA5I,EAAWqhF,UAAYzpI,MAAK,IAAiB,GAC7CooD,EAAW+Y,kBAAoBnhE,KAAK69D,kBAAiB,GACrDzV,EAAWgZ,QAAS,EACbhZ,EAET,MAAM,WACJ6I,EAAU,QACVtb,GACE31C,KAAK69D,kBAAiB,GAO1B,IANK5M,GAActb,IACjByS,EAAW+Y,kBAAoB,CAC7B14D,KAAM,SACN8gI,IAAK5zF,IAGL31C,KAAKuqD,oBAAqB,CAC5B,MAAMwhF,EAAU/rI,MAAK,GAAmBooD,GACxC,OAAI2jF,EAAQC,OACH,MAELD,EAAQE,qBACH7jF,EAAW+Y,kBAElB/Y,EAAW+Y,kBAAkB0qE,aAAe7rI,KAAKg2D,aAAa61E,eAAiB,EAEjFzjF,EAAW74C,GAAKvP,KAAKuqD,2BACdnC,EAAWsiF,SACXtiF,EACT,CACA,GAAgB,OAAZtlC,EACF,OAAOslC,EAETtlC,EAAQopH,SAAW,IAAI5mI,IACvB,MAAM6mI,EAAOnsI,MAAK,IAAUooD,EAAWrpB,KAAK,GAAKqpB,EAAWrpB,KAAK,KAAOqpB,EAAWrpB,KAAK,GAAKqpB,EAAWrpB,KAAK,IAAM,KACnH,GAAKjc,EAAQopH,OAAOrkI,IAAI7H,MAAK,KAMtB,GAAIA,MAAK,GAAQ,CACtB,MAAMosI,EAAWtpH,EAAQopH,OAAOrpI,IAAI7C,MAAK,IACrCmsI,EAAOC,EAASD,OAClBC,EAASD,KAAOA,EAChBC,EAAShkF,WAAW/wC,OAAO7L,QAC3B4gI,EAAShkF,WAAW/wC,OAASrX,MAAK,IAAiB,GAEvD,OAZE8iB,EAAQopH,OAAOtkI,IAAI5H,MAAK,GAAW,CACjCmsI,OACA/jF,eAEFA,EAAW/wC,OAASrX,MAAK,IAAiB,GAS5C,OAAOooD,CACT,CACA,IAAmBA,GACjB,MAAM,UACJnF,EACAke,mBAAmB,QACjBxrB,IAEA31C,KAAKg2D,aACHq2E,EAAkBjkF,EAAWnF,YAAcA,EAC3CgpF,GAAiB7jF,EAAW+Y,mBAAmBooE,KAAO,MAAQ5zF,EACpE,MAAO,CACLq2F,QAAShsI,KAAKm+D,mBAAqBn+D,KAAKk6D,gBAAkBl6D,KAAKm6D,iBAAmBkyE,GAAmBJ,EACrGA,gBAEJ,CACA,uBAAAx8E,CAAwB/E,GACtB,OAAI1qD,KAAKyqD,SACPC,EAAW1V,OACJ,OAET0V,EAAWmY,aAAa,CACtB9jC,KAAM/+B,KAAKogE,aACXvB,MAAO7+D,KAAK61C,UAEP,KACT,EAYF,MAAMy2F,GACJ,IACA,KAAc,EACd,IAAmB,KACnB,IAAW,KACX,IAAwB,KACxB,IAAW,IAAIhnI,IACf,KAAkB,EAClB,KAAe,EACf,KAAc,EACd,IAAa,KACb,IAAkB,KAClB,IAAa,KACb,IAAmB,KACnB,IAAuB,KACvB,KAA6B,EAC7B,GACAuiC,qBAAsB,EACtBA,SAAsB,IAAIviC,IAAI,CAACotH,GAAgBgP,GAAW8H,GAAanQ,GAAiBiP,IAAiBz+H,IAAIpB,GAAQ,CAACA,EAAK2hD,YAAa3hD,KACxI,WAAAzE,EAAY,UACVmzC,EAAS,UACT8L,EAAS,IACTnc,EAAG,gBACHypF,EAAe,qBACfF,EAAoB,gBACpBztD,EAAe,UACfm3D,EAAS,UACTz0E,EAAS,SACTtiC,EAAQ,KACRmtC,IAEA,MAAMo8E,EAAc,IAAID,IAAsB,EAAaxgG,UAC3D,IAAKwgG,GAAsBE,aAAc,CACvCF,GAAsBE,cAAe,EACrC,IAAK,MAAMn3F,KAAck3F,EACvBl3F,EAAW6a,WAAWC,EAAMhZ,EAEhC,CACAA,EAAU4R,oBAAoBwjF,GAC9BvsI,MAAK,EAAam3C,EAClBn3C,KAAKijD,UAAYA,EACjBjjD,KAAK8mC,IAAMA,EACX9mC,MAAK,GAAwBqwH,EAC7BrwH,MAAK,GAAmB4iE,EACxB5iE,KAAKgjB,SAAWA,EAChBhjB,MAAK,GAAaslD,EAClBtlD,KAAK+5H,UAAYA,EACjB/5H,KAAK8rI,YAAcvb,EACnBvwH,MAAK,EAAWopD,SAASppD,KAC3B,CACA,WAAI89C,GACF,OAA8B,IAAvB99C,MAAK,GAAS6rC,IACvB,CACA,eAAI4gG,GACF,OAAOzsI,KAAK89C,SAAW99C,MAAK,EAAW6uD,YAAc/hC,EAAqBC,IAC5E,CACA,aAAAo+B,CAAcxnD,GACZ3D,MAAK,EAAWmrD,cAAcxnD,EAChC,CACA,UAAA6lD,CAAW3xC,EAAO7X,MAAK,EAAW6uD,WAEhC,OADA7uD,MAAK,KACG6X,GACN,KAAKiV,EAAqBC,KAMxB,OALA/sB,KAAK8mC,IAAItd,UAAUo7B,OAAO,cAAc,GACxC5kD,KAAK0sI,uBACL1sI,KAAK86D,qBAAoB,GACzB96D,KAAK2sI,oCAAmC,QACxC3sI,KAAK0rD,eAEP,KAAK5+B,EAAqBK,IACxBntB,KAAK0sI,uBACL1sI,KAAK86D,qBAAoB,GACzB96D,KAAK2rD,cACL,MACF,KAAK7+B,EAAqBG,UACxBjtB,KAAK4sI,sBACL5sI,KAAK86D,qBAAoB,GACzB96D,KAAK0rD,eACL,MACF,QACE1rD,KAAK0sI,uBACL1sI,KAAK86D,qBAAoB,GACzB96D,KAAK2rD,cAET3rD,KAAK2sI,oCAAmC,GACxC,MAAM,UACJnjH,GACExpB,KAAK8mC,IAET,GADAtd,EAAUo7B,OAAO,cAAc,GAC3B/sC,IAASiV,EAAqBM,MAChC5D,EAAUo7B,OAAO,kBAAkB,OAC9B,CACLp7B,EAAUo7B,OAAO,kBAAkB,GACnC,IAAK,MAAMvP,KAAci3F,IAAsB,EAAaxgG,SAC1DtiB,EAAUo7B,OAAO,GAAGvP,EAAW4hB,eAAgBp/C,IAASw9B,EAAW+U,YAEvE,CACApqD,KAAK8mC,IAAIY,QAAS,CACpB,CACA,YAAA8d,CAAaF,GACX,OAAOA,IAActlD,MAAK,IAAY8mC,GACxC,CACA,eAAAghB,CAAgBjK,GACd79C,MAAK,EAAW8nD,gBAAgBjK,EAClC,CACA,WAAA+K,CAAYoE,GACVhtD,MAAK,EAAW4oD,YAAYoE,EAC9B,CACA,cAAAC,CAAexkD,GACbzI,MAAK,EAAWitD,eAAexkD,EACjC,CACA,aAAAu+C,CAAcmK,GAAU,GACtBnxD,KAAK8mC,IAAItd,UAAUo7B,OAAO,WAAYuM,EACxC,CACA,mBAAA2J,CAAoB3J,GAAU,GAC5BnxD,KAAK8mC,IAAItd,UAAUo7B,OAAO,YAAauM,EACzC,CACA,kCAAAw7E,CAAmCx7E,GAAU,GAC3CnxD,MAAK,IAAkB86D,oBAAoB3J,EAC7C,CACA,MAAI,GACF,OAA8B,IAAvBnxD,MAAK,GAAS6rC,KAAa7rC,MAAK,GAAS8rC,SAAW9rC,MAAK,EAAW6rD,WAAW7rD,KAAKijD,UAC7F,CACA,YAAMoG,GACJrpD,MAAK,IAAc,EACnBA,KAAK8mC,IAAIyO,SAAW,EACpBv1C,KAAK86D,qBAAoB,GACzB96D,KAAK8mC,IAAItd,UAAUo7B,OAAO,cAAc,GACxC5kD,MAAK,IAAsBghD,QAC3BhhD,MAAK,GAAuB,KAC5B,MAAM6sI,EAAuB,IAAIx0F,IACjC,IAAK,MAAMvE,KAAU9zC,MAAK,GACxB8zC,EAAOquB,gBACPruB,EAAOoB,MAAK,GACRpB,EAAOyW,sBACTvqD,MAAK,EAAWssD,gCAAgCxY,GAChD+4F,EAAqBzoH,IAAI0vB,EAAOyW,sBAGpC,MAAMqY,EAAkB5iE,MAAK,GAC7B,GAAI4iE,EACF,IAAK,MAAMirD,KAAYjrD,EAAgBwvD,yBAA0B,CAE/D,GADAvE,EAAS74E,OACLh1C,MAAK,EAAWosD,2BAA2ByhE,EAASj/G,KAAKW,IAC3D,SAEF,GAAIs9H,EAAqBhlI,IAAIgmH,EAASj/G,KAAKW,IACzC,SAEF,MAAMukC,QAAe9zC,KAAK2oD,YAAYklE,GACjC/5E,IAGL9zC,KAAKusD,aAAazY,GAClBA,EAAOquB,gBACT,CAEFniE,MAAK,IAAc,EACnBA,MAAK,EAAWggD,UAAUqE,SAAS,kBAAmB,CACpDhgD,OAAQrE,KACR8jD,WAAY9jD,KAAKijD,UAAY,GAEjC,CACA,OAAAqG,GAKE,GAJAtpD,MAAK,IAAe,EACpBA,KAAK8mC,IAAIyO,UAAY,EACrBv1C,KAAK86D,qBAAoB,GACzB96D,KAAK8mC,IAAItd,UAAUo7B,OAAO,cAAc,GACpC5kD,MAAK,KAAeA,MAAK,GAAsB,CACjDA,MAAK,GAAuB,IAAI29C,gBAChC,MAAMrJ,EAASt0C,MAAK,EAAWohD,eAAephD,MAAK,IACnDA,MAAK,GAAW8mC,IAAIhe,iBAAiB,cAAe1G,IAClD,MAAM0qH,EAAsB,KACtB,QACJpjH,EAAO,QACPC,EAAO,UACP8uB,GACEr2B,EACE2qH,EAA2B/sI,MAAK,GACtC,GAAIy4C,EAAYs0F,EAA2BD,EAEzC,YADA9sI,MAAK,GAA4By4C,GAGnCz4C,MAAK,IAA6B,EAClC,MAAM,UACJwpB,GACExpB,KAAK8mC,IACTtd,EAAUo7B,OAAO,eAAe,GAChC,MAAMogE,EAAW54G,SAAS4gI,kBAAkBtjH,EAASC,GAErD,GADAH,EAAUo7B,OAAO,eAAe,IAC3B5kD,KAAK8mC,IAAIvd,SAASy7F,EAAS,IAC9B,OAEF,IAAIz1G,EACJ,MAAM09H,EAAQ,IAAI7/F,OAAO,IAAIvgB,YAC7B,IAAK,MAAMqY,KAAW8/E,EACpB,GAAIioB,EAAM/mI,KAAKg/B,EAAQ31B,IAAK,CAC1BA,EAAK21B,EAAQ31B,GACb,KACF,CAEF,IAAKA,EACH,OAEF,MAAMukC,EAAS9zC,MAAK,GAAS6C,IAAI0M,GACG,OAAhCukC,GAAQyW,sBACVnoC,EAAEgD,kBACFhD,EAAEoD,iBACFsuB,EAAOuuB,SAASjgD,KAEjB,CACDkyB,SACAS,SAAS,GAEb,CACA,MAAM6tB,EAAkB5iE,MAAK,GACvBktI,EAAqB,GAC3B,GAAItqE,EAAiB,CACnB,MAAMuqE,EAAqB,IAAI7nI,IACzB8nI,EAAmB,IAAI9nI,IAC7B,IAAK,MAAMwuC,KAAU9zC,MAAK,GACxB8zC,EAAOouB,iBACFpuB,EAAOyW,oBAIe,OAAvBzW,EAAOuU,aAIT+kF,EAAiBxlI,IAAIksC,EAAOyW,oBAAqBzW,GAEnD9zC,KAAKqyH,sBAAsBv+E,EAAOyW,sBAAsBrV,OACxDpB,EAAOjF,UANLs+F,EAAmBvlI,IAAIksC,EAAOyW,oBAAqBzW,GAJnDo5F,EAAmBjjI,KAAK6pC,GAY5B,MAAMu5F,EAAYzqE,EAAgBwvD,yBAClC,IAAK,MAAMvE,KAAYwf,EAAW,CAChC,MAAM,GACJ99H,GACEs+G,EAASj/G,KACb,GAAI5O,MAAK,EAAWosD,2BAA2B78C,GAAK,CAClDs+G,EAAShrD,aAAa,CACpBpY,SAAS,IAEX,QACF,CACA,IAAI3W,EAASs5F,EAAiBvqI,IAAI0M,GAC9BukC,GACFA,EAAOivB,uBAAuB8qD,GAC9B/5E,EAAOoB,MAAK,GACZ24E,EAAS34E,SAGXpB,EAASq5F,EAAmBtqI,IAAI0M,GAC5BukC,IACF9zC,MAAK,EAAWmsD,6BAA6BrY,GACzCA,EAAO2b,wBAAwBo+D,IACjC/5E,EAAOoB,MAAK,IAGhB24E,EAAS34E,OACX,CACF,CACAl1C,MAAK,KACDA,KAAK89C,UACP99C,KAAK8mC,IAAIY,QAAS,GAEpB,MAAM,UACJle,GACExpB,KAAK8mC,IACT,IAAK,MAAMuO,KAAci3F,IAAsB,EAAaxgG,SAC1DtiB,EAAUqlB,OAAO,GAAGwG,EAAW4hB,gBAEjCj3D,KAAK0sI,uBACL1sI,KAAK2sI,oCAAmC,GACxC/pE,GAAiB2vD,sBAAsB2a,GACvCltI,MAAK,IAAe,CACtB,CACA,qBAAAqyH,CAAsB9iH,GACpB,OAAOvP,MAAK,IAAkBqyH,sBAAsB9iH,IAAO,IAC7D,CACA,eAAAi9C,CAAgB1Y,GACd,MAAMw5F,EAAgBttI,MAAK,EAAW0uD,YAClC4+E,IAAkBx5F,GAGtB9zC,MAAK,EAAWwsD,gBAAgB1Y,EAClC,CACA,mBAAA84F,GAEE,GADA5sI,KAAK8mC,IAAIyO,UAAY,EACjBv1C,MAAK,IAAY8mC,MAAQ9mC,MAAK,GAAkB,CAClDA,MAAK,GAAmB,IAAI29C,gBAC5B,MAAMrJ,EAASt0C,MAAK,EAAWohD,eAAephD,MAAK,IACnDA,MAAK,GAAW8mC,IAAIhe,iBAAiB,cAAe9oB,MAAK,GAAsBmG,KAAKnG,MAAO,CACzFs0C,WAEFt0C,MAAK,GAAW8mC,IAAItd,UAAUpF,IAAI,eACpC,CACF,CACA,oBAAAsoH,GACE1sI,KAAK8mC,IAAIyO,SAAW,EAChBv1C,MAAK,IAAY8mC,KAAO9mC,MAAK,KAC/BA,MAAK,GAAiBghD,QACtBhhD,MAAK,GAAmB,KACxBA,MAAK,GAAW8mC,IAAItd,UAAUqlB,OAAO,gBAEzC,CACA,IAAsB5lB,GACpBjpB,MAAK,EAAWg/C,cAChB,MAAM,OACJ39C,GACE4nB,EACJ,GAAI5nB,IAAWrB,MAAK,GAAW8mC,MAAwC,QAAhCzlC,EAAOwkC,aAAa,SAAqBxkC,EAAOmoB,UAAUD,SAAS,kBAAoBvpB,MAAK,GAAW8mC,IAAIvd,SAASloB,GAAS,CAClK,MAAM,MACJs7B,GACEZ,GAAiBS,SACrB,GAAqB,IAAjBvT,EAAMqsB,QAAgBrsB,EAAM6zB,SAAWngB,EACzC,OAEF38B,MAAK,EAAWqmD,eAAe,aAAa,GAAM,GAClDrmD,MAAK,GAAW8mC,IAAItd,UAAUpF,IAAI,QAClCpkB,KAAKgnD,gBACLqyE,GAAgB+B,kBAAkBp7H,KAAoC,QAA9BA,MAAK,EAAW2mB,UAAqB,CAC3EtlB,OAAQrB,MAAK,GAAW8mC,IACxBjgC,EAAGoiB,EAAMpiB,EACT2X,EAAGyK,EAAMzK,IAEXxe,MAAK,GAAW8mC,IAAIhe,iBAAiB,YAAa,KAChD9oB,MAAK,GAAW8mC,IAAItd,UAAUqlB,OAAO,QACrC7uC,KAAKgnD,eAAc,IAClB,CACD5C,MAAM,EACN9P,OAAQt0C,MAAK,EAAWw0C,UAE1BvrB,EAAMzD,gBACR,CACF,CACA,WAAAmmC,GACE,GAAI3rD,MAAK,GACP,OAEFA,MAAK,GAAW,IAAI29C,gBACpB,MAAMrJ,EAASt0C,MAAK,EAAWohD,eAAephD,MAAK,IACnDA,KAAK8mC,IAAIhe,iBAAiB,cAAe9oB,KAAKy/D,YAAYt5D,KAAKnG,MAAO,CACpEs0C,WAEF,MAAM2S,EAAYjnD,KAAKinD,UAAU9gD,KAAKnG,MACtCA,KAAK8mC,IAAIhe,iBAAiB,YAAam+B,EAAW,CAChD3S,WAEFt0C,KAAK8mC,IAAIhe,iBAAiB,gBAAiBm+B,EAAW,CACpD3S,UAEJ,CACA,YAAAoX,GACE1rD,MAAK,IAAUghD,QACfhhD,MAAK,GAAW,IAClB,CACA,MAAAutI,CAAOz5F,GACL9zC,MAAK,GAAS4H,IAAIksC,EAAOvkC,GAAIukC,GAC7B,MAAM,oBACJyW,GACEzW,EACAyW,GAAuBvqD,MAAK,EAAWosD,2BAA2B7B,IACpEvqD,MAAK,EAAWqsD,+BAA+BvY,EAEnD,CACA,MAAAriC,CAAOqiC,GACL9zC,MAAK,GAASw1C,OAAO1B,EAAOvkC,IAC5BvP,MAAK,IAAuBsyH,yBAAyBx+E,EAAOyuB,aACvDviE,MAAK,IAAgB8zC,EAAOyW,qBAC/BvqD,MAAK,EAAWksD,4BAA4BpY,EAEhD,CACA,MAAAjF,CAAOiF,GACL9zC,KAAKyR,OAAOqiC,GACZ9zC,MAAK,EAAWgsD,aAAalY,GAC7BA,EAAOhN,IAAI+H,SACXiF,EAAOkjB,iBAAkB,CAC3B,CACA,YAAAvI,CAAa3a,GACPA,EAAO7vB,SAAWjkB,OAGlB8zC,EAAO7vB,QAAU6vB,EAAOyW,sBAC1BvqD,MAAK,EAAWksD,4BAA4BpY,GAC5C8hB,GAAiByB,wBAAwBvjB,GACzCA,EAAOyW,oBAAsB,MAE/BvqD,KAAKutI,OAAOz5F,GACZA,EAAO7vB,QAAQxS,OAAOqiC,GACtBA,EAAO+kB,UAAU74D,MACb8zC,EAAOhN,KAAOgN,EAAOkjB,kBACvBljB,EAAOhN,IAAI+H,SACX7uC,KAAK8mC,IAAIC,OAAO+M,EAAOhN,MAE3B,CACA,GAAA1iB,CAAI0vB,GACF,GAAIA,EAAO7vB,SAAWjkB,OAAQ8zC,EAAOkjB,gBAArC,CAMA,GAHAh3D,KAAKyuD,aAAa3a,GAClB9zC,MAAK,EAAW+rD,UAAUjY,GAC1B9zC,KAAKutI,OAAOz5F,IACPA,EAAOkjB,gBAAiB,CAC3B,MAAMlwB,EAAMgN,EAAO13B,SACnBpc,KAAK8mC,IAAIC,OAAOD,GAChBgN,EAAOkjB,iBAAkB,CAC3B,CACAljB,EAAO2kB,oBACP3kB,EAAOusB,WAAWrgE,MAAK,IACvBA,MAAK,EAAW0mD,uBAAuB5S,GACvCA,EAAOyc,iBAAiBzc,EAAO0uB,qBAZ/B,CAaF,CACA,eAAAzC,CAAgBjsB,GACd,IAAKA,EAAOkjB,gBACV,OAEF,MAAM,cACJ7Y,GACE/xC,SACA0nC,EAAOhN,IAAIvd,SAAS40B,KAAmBn+C,MAAK,KAC9C8zC,EAAOgB,qBAAsB,EAC7B90C,MAAK,GAAwBisD,WAAW,KACtCjsD,MAAK,GAAwB,KACxB8zC,EAAOhN,IAAIvd,SAASnd,SAAS+xC,eAShCrK,EAAOgB,qBAAsB,GAR7BhB,EAAOhN,IAAIhe,iBAAiB,UAAW,KACrCgrB,EAAOgB,qBAAsB,GAC5B,CACDsP,MAAM,EACN9P,OAAQt0C,MAAK,EAAWw0C,UAE1B2J,EAAcqG,UAIf,IAEL1Q,EAAO2iB,oBAAsBz2D,MAAK,IAAuBwtI,iBAAiBxtI,KAAK8mC,IAAKgN,EAAOhN,IAAKgN,EAAOyuB,YAAY,EACrH,CACA,YAAAhW,CAAazY,GACPA,EAAO0sB,oBACT1sB,EAAO7vB,SAAWjkB,KAClB8zC,EAAO0a,UACP1a,EAAOoB,QAEPl1C,KAAKokB,IAAI0vB,EAEb,CACA,iBAAA8mF,CAAkB9mF,GAChB,MAAM+H,EAAM,IAAM/H,EAAOS,WAAWia,QAAQ1a,GACtCgI,EAAO,KACXhI,EAAOjF,UAET7uC,KAAK4oD,YAAY,CACf/M,MACAC,OACAE,UAAU,GAEd,CACA,cAAAkH,CAAe3tC,GACb,IAAK,MAAMu+B,KAAU9zC,MAAK,GAAS8rC,SACjC,GAAIgI,EAAOv+B,MAAQA,EACjB,OAAOu+B,EAGX,OAAO,IACT,CACA,SAAA0jB,GACE,OAAOx3D,MAAK,EAAWkpD,OACzB,CACA,MAAI,GACF,OAAOojF,IAAsB,EAAazpI,IAAI7C,MAAK,EAAW6uD,UAChE,CACA,cAAAzN,CAAeC,GACb,OAAOrhD,MAAK,EAAWohD,eAAeC,EACxC,CACA,IAAiB2L,GACf,MAAM3X,EAAar1C,MAAK,GACxB,OAAOq1C,EAAa,IAAIA,EAAWnxC,UAAUF,YAAYgpD,GAAU,IACrE,CACA,uBAAA/B,GACE,OAAOjrD,MAAK,IAAoBirD,yBAClC,CACA,iBAAM0+E,CAAYhmI,EAASqpD,GACzBhtD,KAAKmrD,cAAcxnD,SACb3D,MAAK,EAAWwpD,WAAW7lD,EAAQkU,MACzC,MAAM,QACJqP,EAAO,QACPC,GACEnnB,MAAK,KACHuP,EAAKvP,KAAKw3D,YACV1jB,EAAS9zC,MAAK,GAAiB,CACnCikB,OAAQjkB,KACRuP,KACA1I,EAAGqgB,EACH1I,EAAG2I,EACHgwB,UAAWn3C,MAAK,EAChBw2D,YAAY,KACTxJ,IAEDlZ,GACF9zC,KAAKokB,IAAI0vB,EAEb,CACA,iBAAM6U,CAAY/5C,GAChB,aAAc09H,IAAsB,EAAazpI,IAAI+L,EAAKqyD,gBAAkBryD,EAAKo3G,uBAAuBr9D,YAAY/5C,EAAM5O,KAAMA,MAAK,KAAgB,IACvJ,CACA,qBAAAomD,CAAsBn9B,EAAOutC,EAAY5nD,EAAO,CAAC,GAC/C,MAAMW,EAAKvP,KAAKw3D,YACV1jB,EAAS9zC,MAAK,GAAiB,CACnCikB,OAAQjkB,KACRuP,KACA1I,EAAGoiB,EAAM/B,QACT1I,EAAGyK,EAAM9B,QACTgwB,UAAWn3C,MAAK,EAChBw2D,gBACG5nD,IAKL,OAHIklC,GACF9zC,KAAKokB,IAAI0vB,GAEJA,CACT,CACA,sBAAIme,GACF,OAAOjyD,KAAK8mC,IAAI/c,uBAClB,CACA,MACE,MAAM,EACJljB,EAAC,EACD2X,EAAC,MACD/B,EAAK,OACLC,GACE1c,KAAKiyD,mBACHk5B,EAAMzkF,KAAKmN,IAAI,EAAGhN,GAClBwkF,EAAM3kF,KAAKmN,IAAI,EAAG2K,GAClB+sE,EAAM7kF,KAAKoN,IAAIjD,OAAOgwD,WAAYh6D,EAAI4V,GACtCgvE,EAAM/kF,KAAKoN,IAAIjD,OAAO+vD,YAAapiD,EAAI9B,GACvC8sB,GAAW2hD,EAAMI,GAAO,EAAI1kF,EAC5B4iC,GAAW4hD,EAAMI,GAAO,EAAIjtE,GAC3B0I,EAASC,GAAWnnB,KAAKgjB,SAASsmB,SAAW,MAAQ,EAAI,CAACE,EAASC,GAAW,CAACA,EAASD,GAC/F,MAAO,CACLtiB,UACAC,UAEJ,CACA,YAAA+jC,CAAat8C,EAAO,CAAC,GACnB5O,KAAKomD,sBAAsBpmD,MAAK,MAAmB,EAAM4O,EAC3D,CACA,WAAAk8C,CAAYhX,GACV9zC,MAAK,EAAW8qD,YAAYhX,EAC9B,CACA,cAAA+Y,CAAe/Y,GACb9zC,MAAK,EAAW6sD,eAAe/Y,EACjC,CACA,QAAAkX,CAASlX,GACP9zC,MAAK,EAAWgrD,SAASlX,EAC3B,CACA,SAAAmT,CAAUh+B,GACR,MAAM,MACJ0T,GACEZ,GAAiBS,SACrB,GAAqB,IAAjBvT,EAAMqsB,QAAgBrsB,EAAM6zB,SAAWngB,EACzC,OAEF,GAAI1T,EAAM5nB,SAAWrB,KAAK8mC,IACxB,OAEF,IAAK9mC,MAAK,GACR,OAGF,GADAA,MAAK,IAAkB,EACnBA,MAAK,IAAoBk3D,UAAYl3D,MAAK,GAAmB48H,wBAC/D,OAEF,IAAK58H,MAAK,GAER,YADAA,MAAK,IAAc,GAGrB,MAAMytI,EAAcztI,MAAK,EAAW6uD,UAChC4+E,IAAgB3gH,EAAqBI,OAASugH,IAAgB3gH,EAAqBO,UAIvFrtB,KAAKomD,sBAAsBn9B,GAAO,GAHhCjpB,MAAK,EAAWg/C,aAIpB,CACA,WAAAygB,CAAYx2C,GAIV,GAHIjpB,MAAK,EAAW6uD,YAAc/hC,EAAqBG,WACrDjtB,KAAK4sI,sBAEH5sI,MAAK,GAEP,YADAA,MAAK,IAAkB,GAGzB,MAAM,MACJ28B,GACEZ,GAAiBS,SACrB,GAAqB,IAAjBvT,EAAMqsB,QAAgBrsB,EAAM6zB,SAAWngB,EACzC,OAEF,GAAI1T,EAAM5nB,SAAWrB,KAAK8mC,IACxB,OAGF,GADA9mC,MAAK,IAAkB,EACnBA,MAAK,IAAoBk3D,SAE3B,YADAl3D,KAAK0tI,oBAAoBzkH,GAG3B,MAAM6qB,EAAS9zC,MAAK,EAAW0uD,YAC/B1uD,MAAK,IAAe8zC,GAAUA,EAAOgK,SACvC,CACA,mBAAA4vF,CAAoBzkH,GAIlB,GAHAjpB,KAAK8mC,IAAI0d,MAAM,CACbyd,eAAe,IAEbjiE,MAAK,GAEP,YADAA,MAAK,GAAmBm+H,aAAan+H,KAAMA,MAAK,GAAY,EAAOipB,GAGrEjpB,MAAK,EAAWuiD,yBAAyBviD,MACzCA,MAAK,GAAa,IAAI29C,gBACtB,MAAMrJ,EAASt0C,MAAK,EAAWohD,eAAephD,MAAK,IACnDA,KAAK8mC,IAAIhe,iBAAiB,OAAQ,EAChCkwC,oBAEIA,IAAkBh5D,KAAK8mC,IAAIvd,SAASyvC,KACtCh5D,MAAK,GAAkB,KACvBA,KAAK+kD,mBAEN,CACDzQ,WAEFt0C,MAAK,GAAmBm+H,aAAan+H,KAAMA,MAAK,GAAY,EAAOipB,EACrE,CACA,KAAA0kH,CAAMzwH,GACJ,GAAIA,EAAI,CACN,MAAM,cACJihC,GACE/xC,SAIJ,YAHIpM,KAAK8mC,IAAIvd,SAAS40B,KACpBn+C,MAAK,GAAkBm+C,GAG3B,CACIn+C,MAAK,IACPisD,WAAW,KACTjsD,MAAK,IAAiBwkD,QACtBxkD,MAAK,GAAkB,MACtB,EAEP,CACA,iBAAAmtD,CAAkB2xE,GAAY,GAC5B,OAAK9+H,MAAK,IAGVA,MAAK,EAAWuiD,yBAAyB,MACzCviD,MAAK,GAAWghD,QAChBhhD,MAAK,GAAa,KAClBA,MAAK,GAAkB,KAChBA,MAAK,GAAmB6mF,WAAWi4C,IANjC,IAOX,CACA,aAAAjlE,CAAc/lB,EAAQjtC,EAAG2X,GACvB,MAAMyiC,EAAQjhD,MAAK,EAAWykD,WAAW59C,EAAG2X,GAC5C,OAAc,OAAVyiC,GAAkBA,IAAUjhD,OAGhCihD,EAAMwN,aAAa3a,IACZ,EACT,CACA,cAAAiR,GACE,QAAI/kD,MAAK,KACPA,KAAKmtD,qBACE,EAGX,CACA,eAAA/M,GACOpgD,MAAK,IAGVA,MAAK,GAAmB89H,2BAA2B99H,KACrD,CACA,OAAAi3C,GACEj3C,KAAK+kD,iBACD/kD,MAAK,EAAW0uD,aAAazqC,SAAWjkB,OAC1CA,MAAK,EAAW+kD,iBAChB/kD,MAAK,EAAWwsD,gBAAgB,OAE9BxsD,MAAK,KACPmhD,aAAanhD,MAAK,IAClBA,MAAK,GAAwB,MAE/B,IAAK,MAAM8zC,KAAU9zC,MAAK,GAAS8rC,SACjC9rC,MAAK,IAAuBsyH,yBAAyBx+E,EAAOyuB,YAC5DzuB,EAAO+kB,UAAU,MACjB/kB,EAAOkjB,iBAAkB,EACzBljB,EAAOhN,IAAI+H,SAEb7uC,KAAK8mC,IAAM,KACX9mC,MAAK,GAASkhD,QACdlhD,MAAK,EAAWupD,YAAYvpD,KAC9B,CACA,MACE,IAAK,MAAM8zC,KAAU9zC,MAAK,GAAS8rC,SAC7BgI,EAAOgK,WACThK,EAAOjF,QAGb,CACA,MAAAzyB,EAAO,SACL4G,IAEAhjB,KAAKgjB,SAAWA,EAChBmsB,GAAmBnvC,KAAK8mC,IAAK9jB,GAC7B,IAAK,MAAM8wB,KAAU9zC,MAAK,EAAW6rD,WAAW7rD,KAAKijD,WACnDjjD,KAAKokB,IAAI0vB,GACTA,EAAO0a,UAETxuD,KAAKwpD,YACP,CACA,MAAA/hB,EAAO,SACLzkB,IAEAhjB,MAAK,EAAW+kD,iBAChB/kD,MAAK,KACL,MAAM4tI,EAAc5tI,KAAKgjB,SAASsmB,SAC5BA,EAAWtmB,EAASsmB,SAK1B,GAJAtpC,KAAKgjB,SAAWA,EAChBmsB,GAAmBnvC,KAAK8mC,IAAK,CAC3BwC,aAEEskG,IAAgBtkG,EAClB,IAAK,MAAMwK,KAAU9zC,MAAK,GAAS8rC,SACjCgI,EAAOgtB,OAAOx3B,EAGpB,CACA,kBAAIwtB,GACF,MAAM,UACJ/wC,EAAS,WACTC,GACEhmB,KAAKgjB,SAASgnB,QAClB,MAAO,CAACjkB,EAAWC,EACrB,CACA,SAAIrI,GACF,OAAO3d,MAAK,EAAW0gD,eAAeC,SACxC,EAMF,MAAMktF,GACJ,IAAU,KACV,IAAW,IAAIvoI,IACf,IAAY,IAAIA,IAChBuiC,SAAa,EACb,WAAA7jC,EAAY,UACVi/C,IAEAjjD,KAAKijD,UAAYA,CACnB,CACA,SAAA4V,CAAU50C,GACR,GAAKjkB,MAAK,IAIV,GAAIA,MAAK,KAAYikB,EAAQ,CAC3B,GAAIjkB,MAAK,GAAS6rC,KAAO,EACvB,IAAK,MAAMpsC,KAAQO,MAAK,GAAS8rC,SAC/BrsC,EAAKovC,SACL5qB,EAAO8iB,OAAOtnC,GAGlBO,MAAK,GAAUikB,CACjB,OAXEjkB,MAAK,GAAUikB,CAYnB,CACA,sBAAW6pH,GACT,OAAOh0G,EAAO95B,KAAM,cAAe,IAAIm+G,GACzC,CACA,SAAO,CAAQj5E,GAAUr+B,EAAG2X,EAAG/B,EAAOC,IACpC,MAAM,MACJ3Q,GACEm5B,EACJn5B,EAAMwS,IAAS,IAAMC,EAAT,IACZzS,EAAMqS,KAAU,IAAMvX,EAAT,IACbkF,EAAM0Q,MAAW,IAAMA,EAAT,IACd1Q,EAAM2Q,OAAY,IAAMA,EAAT,GACjB,CACA,MACE,MAAM48B,EAAMu0F,GAAUC,YAAYrhI,OAAO,EAAG,GAAG,GAG/C,OAFAzM,MAAK,GAAQ+mC,OAAOuS,GACpBA,EAAI7T,aAAa,eAAe,GACzB6T,CACT,CACA,IAAgBkrE,EAAMupB,GACpB,MAAMtpB,EAAWopB,GAAUC,YAAYh+H,cAAc,YACrD00G,EAAKz9E,OAAO09E,GACZ,MAAMoV,EAAa,QAAQkU,IAC3BtpB,EAASh/E,aAAa,KAAMo0F,GAC5BpV,EAASh/E,aAAa,gBAAiB,qBACvC,MAAMuoG,EAAcH,GAAUC,YAAYh+H,cAAc,OAIxD,OAHA20G,EAAS19E,OAAOinG,GAChBA,EAAYvoG,aAAa,OAAQ,IAAIsoG,KACrCC,EAAYxkH,UAAUpF,IAAI,QACnBy1G,CACT,CACA,IAAkB30F,EAAS0pD,GACzB,IAAK,MAAOxkF,EAAKtI,KAAUmB,OAAOsC,QAAQqpF,GAC1B,OAAV9sF,EACFojC,EAAQS,gBAAgBv7B,GAExB86B,EAAQO,aAAar7B,EAAKtI,EAGhC,CACA,IAAAg5H,CAAKlsC,EAAYq/C,GAAkB,EAAOC,GAAU,GAClD,MAAM3+H,EAAKs+H,IAAU,IACfpuI,EAAOO,MAAK,KACZwkH,EAAOqpB,GAAUC,YAAYh+H,cAAc,QACjDrQ,EAAKsnC,OAAOy9E,GACZ,MAAM9wE,EAAOm6F,GAAUC,YAAYh+H,cAAc,QACjD00G,EAAKz9E,OAAO2M,GACZ,MAAMq6F,EAAS,SAAS/tI,KAAKijD,aAAa1zC,IAC1CmkC,EAAKjO,aAAa,KAAMsoG,GACxBr6F,EAAKjO,aAAa,gBAAiB,sBAC/BwoG,GACFjuI,MAAK,GAAU4H,IAAI2H,EAAImkC,GAEzB,MAAMmmF,EAAaqU,EAAUluI,MAAK,GAAgBwkH,EAAMupB,GAAU,KAC5DI,EAAMN,GAAUC,YAAYh+H,cAAc,OAKhD,OAJArQ,EAAKsnC,OAAOonG,GACZA,EAAI1oG,aAAa,OAAQ,IAAIsoG,KAC7B/tI,KAAKq6H,iBAAiB56H,EAAMmvF,GAC5B5uF,MAAK,GAAS4H,IAAI2H,EAAI9P,GACf,CACL8P,KACAsqH,WAAY,QAAQA,KAExB,CACA,WAAAI,CAAYrrC,EAAYw/C,GACtB,MAAM7+H,EAAKs+H,IAAU,IACfpuI,EAAOO,MAAK,KACZwkH,EAAOqpB,GAAUC,YAAYh+H,cAAc,QACjDrQ,EAAKsnC,OAAOy9E,GACZ,MAAM9wE,EAAOm6F,GAAUC,YAAYh+H,cAAc,QACjD00G,EAAKz9E,OAAO2M,GACZ,MAAMq6F,EAAS,SAAS/tI,KAAKijD,aAAa1zC,IAG1C,IAAI8+H,EACJ,GAHA36F,EAAKjO,aAAa,KAAMsoG,GACxBr6F,EAAKjO,aAAa,gBAAiB,sBAE/B2oG,EAA6B,CAC/B,MAAM7/C,EAAOs/C,GAAUC,YAAYh+H,cAAc,QACjD00G,EAAKz9E,OAAOwnD,GACZ8/C,EAAS,SAASruI,KAAKijD,aAAa1zC,IACpCg/E,EAAK9oD,aAAa,KAAM4oG,GACxB9/C,EAAK9oD,aAAa,YAAa,qBAC/B,MAAM1G,EAAO8uG,GAAUC,YAAYh+H,cAAc,QACjDy+E,EAAKxnD,OAAOhI,GACZA,EAAK0G,aAAa,QAAS,KAC3B1G,EAAK0G,aAAa,SAAU,KAC5B1G,EAAK0G,aAAa,OAAQ,SAC1B,MAAM0oG,EAAMN,GAAUC,YAAYh+H,cAAc,OAChDy+E,EAAKxnD,OAAOonG,GACZA,EAAI1oG,aAAa,OAAQ,IAAIsoG,KAC7BI,EAAI1oG,aAAa,SAAU,QAC3B0oG,EAAI1oG,aAAa,OAAQ,SACzB0oG,EAAI1oG,aAAa,YAAa,WAC9B0oG,EAAI3kH,UAAUpF,IAAI,OACpB,CACA,MAAMkqH,EAAOT,GAAUC,YAAYh+H,cAAc,OACjDrQ,EAAKsnC,OAAOunG,GACZA,EAAK7oG,aAAa,OAAQ,IAAIsoG,KAC1BM,GACFC,EAAK7oG,aAAa,OAAQ,QAAQ4oG,MAEpC,MAAME,EAAOD,EAAKE,YAMlB,OALA/uI,EAAKsnC,OAAOwnG,GACZD,EAAK9kH,UAAUpF,IAAI,eACnBmqH,EAAK/kH,UAAUpF,IAAI,oBACnBpkB,KAAKq6H,iBAAiB56H,EAAMmvF,GAC5B5uF,MAAK,GAAS4H,IAAI2H,EAAI9P,GACf8P,CACT,CACA,YAAAyqH,CAAazqH,EAAIq/E,GACf5uF,MAAK,GAAUw1C,OAAOjmC,GACtBvP,KAAKq6H,iBAAiB9qH,EAAIq/E,EAC5B,CACA,gBAAAyrC,CAAiBoU,EAAa7/C,GAC5B,IAAKA,EACH,OAEF,MAAM,KACJnvF,EAAI,KACJ4rE,EAAI,UACJ6uD,EAAS,KACTxmF,GACEk7C,EACE1pD,EAAiC,kBAAhBupG,EAA2BzuI,MAAK,GAAS6C,IAAI4rI,GAAeA,EACnF,GAAKvpG,EAAL,CASA,GANIzlC,GACFO,MAAK,GAAkBklC,EAASzlC,GAE9B4rE,GACFwiE,IAAU,GAAQ3oG,EAASmmC,GAEzB6uD,EAAW,CACb,MAAM,UACJ1wG,GACE0b,EACJ,IAAK,MAAOgO,EAAWpxC,KAAUmB,OAAOsC,QAAQ20H,GAC9C1wG,EAAUo7B,OAAO1R,EAAWpxC,EAEhC,CACA,GAAI4xC,EAAM,CACR,MAAM8wE,EAAOt/E,EAAQsO,kBACfk7F,EAAclqB,EAAKhxE,kBACzBxzC,MAAK,GAAkB0uI,EAAah7F,EACtC,CAnBA,CAoBF,CACA,YAAA+pF,CAAaluH,EAAI0xC,GACf,GAAIA,IAAUjhD,KACZ,OAEF,MAAMP,EAAOO,MAAK,GAAS6C,IAAI0M,GAC1B9P,IAGLwhD,GAAM,GAAQla,OAAOtnC,GACrBO,MAAK,GAASw1C,OAAOjmC,GACrB0xC,GAAM,GAASr5C,IAAI2H,EAAI9P,GACzB,CACA,MAAAovC,CAAOt/B,GACLvP,MAAK,GAAUw1C,OAAOjmC,GACD,OAAjBvP,MAAK,KAGTA,MAAK,GAAS6C,IAAI0M,GAAIs/B,SACtB7uC,MAAK,GAASw1C,OAAOjmC,GACvB,CACA,OAAA0nC,GACEj3C,MAAK,GAAU,KACf,IAAK,MAAMP,KAAQO,MAAK,GAAS8rC,SAC/BrsC,EAAKovC,SAEP7uC,MAAK,GAASkhD,QACdlhD,MAAK,GAAUkhD,OACjB,EAqBAn5C,WAAW4mI,mBAAqB,CAC9B5W,kBAAmBA,IAGvBhwH,WAAW6mI,SAAW,CACpBh0G,eAAgBA,GAChB0xG,sBAAuBA,GACvB/+G,2BAA4BA,EAC5BT,qBAAsBA,EACtB4wB,0BAA2BA,GAC3B0yE,gBAAiBA,GACjB5jG,eAAgBA,EAChBwD,eAAgBA,EAChBqhB,aAAcA,GACd4pE,MAAOA,GACPC,YAAaA,GACbniF,uBAAwBA,EACxBoY,aAAcA,GACdgtE,cAAeA,GACf0vB,UAAWA,GACXgB,YAAa9yG,GACbiM,UAAWA,GACXqK,kBAAmBA,GACnB06D,YAAaA,GACb9hE,mBAAoBA,GACpBE,sBAAuBA,GACvB+C,OAAQA,GACRzL,QAASA,GACTuL,mBAAoBA,GACpB8gG,oBAAqB,GACrBC,UAAWn/G,EACX2K,oBAAqBA,GACrBoQ,aAAcA,GACdI,UAAWA,GACXumC,oBAAqBA,GACrB9tC,UAAWA,GACXsJ,cAAeA,GACfzK,iBAAkBA,GAClBtQ,IAAKA,EACL2d,YAAaA,GACb9X,kBAAmBA,EACnBw1E,sBAAuBA,GACvBlgE,cAAeA,GACfogE,UAAWA,GACXj/E,eAAgBA,EAChBuZ,cAAeA,GACf6C,4BAA6BA,GAC7BwI,eAAgBA,GAChBzY,kBAAmBA,GACnB2U,mBAAoBA,GACpBrV,OAAQA,EACRgoG,mBAAoBA,GACpB/0F,UAAWA,GACXgE,wBAAyBA,GACzBu5D,UAAWA,GACXj3C,aAAcA,GACd55B,cAAeA,EACf2D,KAAMA,GACNzL,eAAgBA,EAChBjhB,QAASA,GACTs0B,SAAUA,I,kCC3wzBZ8pG,GAAoB9xC,UAAYgyC,GAEhC,IAAIC,GAAe,KAEnB,SAASC,KAIP,OAHKD,KACHA,GAAe,IAAI3hC,GAAU,CAAE5pG,KAAM,0BAEhCurI,EACT,CAMO,SAASE,GAAkBl1F,GAChC,OAAO,IAAI14B,QAAQ,CAAC0iB,EAASyE,KAC3B,MAAMw4D,EAAS,IAAI7mD,WACnB6mD,EAAO1mD,OAAS,IAAMvW,EAAQi9D,EAAOh/F,QACrCg/F,EAAOxmD,QAAUhS,EACjBw4D,EAAOiuC,kBAAkBl1F,IAE7B,CAEO,SAASm1F,GAAUn1F,GACxB,MAAMozD,EAAS6hC,KACTG,EAAgBp1F,aAAgB3wC,YAChCi6D,EAASj6D,YAAYi6D,OAAOtpB,GAC5Bq1F,EAAyB,qBAATp1F,MAAwBD,aAAgBC,KAE9D,OAAID,GAAwB,kBAATA,GAAsBo1F,GAAkB9rE,GAAW+rE,EAGlD,kBAATr1F,EACF8yD,GAAY,CAAEl0E,IAAKohB,EAAMozD,WAAUlqF,QAErC4pF,GAAY,CAAEn+F,KAAMqrC,EAAMozD,WAAUlqF,QALlC4pF,GAAY,IAAK9yD,EAAMozD,WAAUlqF,OAM5C,CCxCO,SAASosH,GAAc1oI,EAAG2X,EAAG/B,EAAOC,EAAQqJ,EAAWC,GAC5D,MAAO,CACLnf,EAAGH,KAAKmN,IAAI,EAAGnN,KAAKoN,IAAIjN,EAAGkf,EAAYtJ,IACvC+B,EAAG9X,KAAKmN,IAAI,EAAGnN,KAAKoN,IAAI0K,EAAGwH,EAAatJ,IAE5C,CAEO,SAAS8yH,GAAe9kH,EAAMC,EAAM8kH,EAAUC,EAAW3pH,EAAWC,GACzE,MAAM2pH,EAAcjpI,KAAKmN,IAAI,EAAG6W,GAC1BklH,EAAalpI,KAAKmN,IAAI,EAAG8W,GACzBklH,EAAenpI,KAAKoN,IAAIiS,EAAW2E,EAAO+kH,GAC1CK,EAAgBppI,KAAKoN,IAAIkS,EAAY2E,EAAO+kH,GAClD,OAAIG,GAAgBF,GAAeG,GAAiBF,EAC3C,GAEDC,EAAeF,IAAgBG,EAAgBF,EACzD,CChBO,SAASG,GAAkBC,EAAWC,EAAY1P,EAAS,KAChE,MAAO,CACL9vD,KAAM/pE,KAAKmN,IAAI,EAAGm8H,EAAYzP,GAC9B7vD,KAAMs/D,EAAYC,EAAa1P,EAEnC,CAEO,SAAS2P,GAAiBC,EAAWC,EAAc3/D,EAAMC,GAC9D,QAASy/D,EAAYC,EAAe3/D,GAAQ0/D,EAAYz/D,EAC1D,CCTO,SAAS2/D,GAAiBC,EAAM3yH,GACrC2yH,EAAK54H,QAAS64H,IACZA,EAAIzqH,WAAayqH,EAAIzqH,WAAWjc,IAAI,IAAM8T,IAE9C,CCJO,SAAS6yH,GAAoBD,EAAKE,GACvC,SAAKF,IAAQE,IACNF,EAAI5xH,WAAWhP,KAAM+gI,GAAYA,EAAQ/gI,KAAM7F,GAAQA,EAAIyF,KAAOkhI,GAC3E,CAEO,SAASE,GAAoBJ,EAAKE,GACvC,GAAKF,GAAQE,EACb,IAAK,IAAIxtF,EAAY,EAAGA,EAAYstF,EAAI5xH,WAAW7d,OAAQmiD,IACzD,GAAIstF,EAAI5xH,WAAWskC,GAAWtzC,KAAM7F,GAAQA,EAAIyF,KAAOkhI,GACrD,OAAOxtF,CAIb,CAEO,SAAS2tF,GAAkBL,EAAKttF,EAAWwtF,EAAUzxH,GAC1D,MAAM0xH,EAAUH,GAAK5xH,aAAaskC,GAClC,IAAKytF,EAAS,OAAO,EACrB,MAAMG,EAAcH,EAAQhjB,UAAW5jH,GAAQA,EAAIyF,KAAOkhI,GAC1D,OAAqB,IAAjBI,IACJH,EAAQv0F,OAAO00F,EAAa,EAAG,IAAKH,EAAQG,MAAiB7xH,KACtD,EACT,CAEO,SAAS8xH,GAAoBP,EAAKttF,EAAWwtF,GAClD,MAAMC,EAAUH,GAAK5xH,aAAaskC,GAClC,IAAKytF,EAAS,OAAO,EACrB,MAAMG,EAAcH,EAAQhjB,UAAW5jH,GAAQA,EAAIyF,KAAOkhI,GAC1D,OAAqB,IAAjBI,IACJH,EAAQv0F,OAAO00F,EAAa,IACrB,EACT,CC/BO,SAASE,GAAqBxmD,EAAOyJ,EAAUg9C,EAASlrH,GAC7D,MAAMymF,EAAShiB,EAAMyJ,GACrB,GAAIuY,EACF,OAAOA,EAET,MAAM0kC,EAAcD,EAAQ1uH,uBACtB4uH,EAAa,CACjBz0H,MAAOw0H,EAAY1uH,YAAcuD,EACjCpJ,OAAQu0H,EAAYvuH,aAAeoD,GAGrC,OADAykE,EAAMyJ,GAAYk9C,EACXA,CACT,CCwIA,UACAxtI,KAAA,cACAo6G,WAAA,CACAqzB,QAAA,EACAC,iBAAAA,GAEA56H,MAAA,CACAiG,MAAA,CACAhU,KAAA1F,OACA2e,QAAA,QAEAhF,OAAA,CACAjU,KAAA1F,OACA2e,QAAA,QAEA2vH,UAAA,CACA5oI,KAAA8H,MACAmR,QAAAA,IAAA,IAEA4vH,cAAA,CACA7oI,KAAA8H,MACAmR,QAAAA,IAAA,IAEA6vH,aAAA,CACA9oI,KAAAgZ,OACAC,QAAA,GAEAZ,eAAA,CACArY,KAAA4d,QACA3E,SAAA,GAEAtB,gBAAA,CACA3X,KAAA4d,QACA3E,SAAA,GAEAvB,qBAAA,CACA1X,KAAA4d,QACA3E,SAAA,GAEApB,mBAAA,CACA7X,KAAA4d,QACA3E,SAAA,GAEA3C,SAAA,CACAtW,KAAA4d,QACA3E,SAAA,GAEA8vH,gBAAA,CACA/oI,KAAA4d,QACA3E,SAAA,GAEAnB,4BAAA,CACA9X,KAAA8H,MACAmR,QAAAA,IAAA,IAEA+vH,gBAAA,CACAhpI,KAAA1F,OACA2e,QAAA,iCAEAgwH,YAAA,CACAjpI,KAAA4d,QACA3E,SAAA,IAGA9S,IAAAA,GACA,OACA+O,MAAA,KAAA4zH,aACA50H,aAAA,GACAW,kBAAA,EACAC,mBAAA,EACAQ,cAAA,EACAG,eAAA,KACAG,gBAAA,CAAAxX,EAAA,EAAA2X,EAAA,GACAF,aAAA,CAAAzX,EAAA,EAAA2X,EAAA,GACAR,qBAAA,EACAC,kBAAA,EACAE,gBAAA,EACAwzH,WAAA,EACAC,sBAAA,KACAC,cAAA,KACAC,yBAAA,EACAC,UAAA,EACAC,qBAAA,KACAC,kBAAA,EACAC,cAAA,EACAC,gBAAA,EACAC,kBAAA,EACAtyH,mBAAA,EACAC,eAAA,KACAE,kBAAA,EACAC,mBAAA,EACAF,uBAAA,CAAAnZ,EAAA,EAAA2X,EAAA,GACA4C,cAAA,EACAixH,2BAAA,CAAAxrI,EAAA,EAAA2X,EAAA,GACA8zH,qBAAA,CAAAzrI,EAAA,EAAA2X,EAAA,GACA+zH,mBAAA,CAAA1rI,EAAA,EAAA2X,EAAA,GACAg0H,cAAA,EACAC,iBAAA,GACAC,UAAA,KACAC,eAAA,KACAC,iBAAA,KACAC,YAAA,KAAAtB,aACAuB,gBAAA,EACAC,mBAAA,EAEA,EACAC,OAAAA,GACA,KAAAC,oBAAA,GACA,KAAAC,wBAAA,GACA,KAAAC,sBAAA,GACA,KAAAC,yBAAA,EACA,KAAAC,4BAAA,CACA,EACApxH,OAAAA,GACA,KAAA2wH,iBAAA,KAAAU,YAAAntI,KAAA,MACA,KAAA20G,OACAjqG,OAAAiY,iBAAA,cAAAyqH,iBAAA,CAAA5/E,SAAA,IACA9iD,OAAAiY,iBAAA,cAAAyqH,kBACA,KAAAjqH,KAAAR,iBAAA,cAAAyqH,iBAAA,CAAA5/E,SAAA,IACA,KAAArqC,KAAAR,iBAAA,aAAA8pH,iBAAA,CAAAj/E,SAAA,GACA,EACAzxC,aAAAA,GACA,KAAAwwH,WACA1pH,qBAAA,KAAA0pH,WAEA,KAAAC,iBACA3pH,qBAAA,KAAA2pH,gBACA,KAAAA,eAAA,MAEA,KAAAC,kBACA,KAAAtpH,KAAAP,oBAAA,aAAA6pH,kBAEA,KAAAY,wBACA3iI,OAAAkY,oBAAA,cAAAwqH,kBACA1iI,OAAAkY,oBAAA,cAAAwqH,kBACA,KAAAjqH,KAAAP,oBAAA,cAAAwqH,kBACA,KAAAf,gBACA3hI,OAAAmY,qBAAA,KAAAwpH,eACA,KAAAA,cAAA,GAEA,KAAAb,aACA9gI,OAAAmY,qBAAA,KAAA2oH,YACA,KAAAA,WAAA,GAEA,KAAAI,YACAlhI,OAAAmY,qBAAA,KAAA+oH,WACA,KAAAA,UAAA,EAEA,EACA1vH,QAAA,CACA,UAAAy4F,GACA,SAAAu2B,WAAA,SAAAA,UAAAvwI,OAAA,OACA,MAAAwvI,EAAA,GACA,KAAAwC,gBAAA,EAEA,QAAA7pI,EAAA,EAAAA,EAAA,KAAAooI,UAAAvwI,OAAAmI,IAAA,CACA,MAAAgxC,EAAA,KAAAo3F,UAAApoI,GACAvF,EAAA,KAAA4tI,cAAAroI,IAAA,YAAAA,EAAA,QAEA,IAAA4T,EACA,GAAAo9B,aAAAC,KAAA,CACA,MAAA7wC,QAAA8lI,GAAAl1F,GACAp9B,QAAAuyH,GAAA,CAAAxgI,KAAAvF,GACA,MACAwT,QAAAuyH,GAAAn1F,GAGA,MAAAl9B,EAAA,GACA02H,EAAAljI,MAAAsM,EAAAqE,UAAAkS,KAAA,GACA,QAAAlX,EAAA,EAAAA,GAAAW,EAAAqE,SAAAhF,IAAA,CACA,MAAAw3H,EAAA72H,EAAAk0F,QAAA70F,GACAw3H,EAAAh6F,KAAA18B,IACAy2H,EAAAt3F,OAAAjgC,EAAA,IAAAc,EAAAiG,YAAA,CAAAtF,MAAA,IAAAlB,OACA,KAAAi1H,aACA,KAAAiC,wBAGA52H,EAAA9S,KAAAypI,EACA,CAEApD,EAAArmI,KAAA,CACAvG,OACAu2C,OACAp9B,SACAqE,SAAArE,EAAAqE,SACAnE,QACA02H,aACA3tH,WAAAvV,MAAAsM,EAAAqE,UAAAkS,KAAA,KAAAzV,OACAgB,WAAApO,MAAAsM,EAAAqE,UAAAkS,KAAA,GAAAvpB,IAAA,SAEA,CAEA,KAAA8S,aAAA2zH,EACA,KAAA6C,sBAAA,GACA7C,EAAAxvI,SACA,KAAAwc,iBAAA,EACA,KAAAC,kBAAA,EACA,KAAAqF,MAAA,yBAAAgxH,UAAAtD,EAAAxvI,SACA,KAAA+yI,UAAA,KACA,KAAAnC,aACA,KAAAiC,wBAIA,EAEAv2H,UAAAA,CAAAN,EAAAmmC,GACA,KAAA3lC,iBAAAR,EACA,KAAAS,kBAAA0lC,CACA,EAEAtjC,oBAAAA,CAAA7C,EAAAmmC,EAAA/4C,EAAAqV,EAAAC,EAAAC,EAAAC,GACA,KAAAI,mBAAA,EACA,KAAAC,eAAA,IAAA7V,GACA,KAAA+V,iBAAAnD,EACA,KAAAoD,kBAAA+iC,EACA,KAAA7hC,cAAA,KAAAxC,sBAAA9B,EAAAmmC,GACA,KAAAsvF,mBAAA1rI,EAAA0Y,EACA,KAAAgzH,mBAAA/zH,EAAAgB,EACA,KAAA8yH,qBAAA5yH,GAAA,kBAAAA,EAAA7Y,GAAA,kBAAA6Y,EAAAlB,EACAkB,EACA,CAAA7Y,EAAA,EAAA2X,EAAA,GAEA,KAAAs1H,kBACA,MAAA9pH,EAAA,KAAA+pH,YAAAj3H,EAAAmmC,GACA,GAAAxjC,GAAA,kBAAAA,EAAA5Y,GAAA,kBAAA4Y,EAAAjB,EACA,KAAA6zH,2BAAAxrI,EAAA4Y,EAAA5Y,EACA,KAAAwrI,2BAAA7zH,EAAAiB,EAAAjB,EACA,KAAAwB,uBAAAnZ,EAAA0Y,EAAA,KAAA8yH,2BAAAxrI,EACA,KAAAmZ,uBAAAxB,EAAAgB,EAAA,KAAA6yH,2BAAA7zH,OACA,GAAAwL,EAAA,CACA,MAAAgqH,EAAAhqH,EAAA5L,KAAAlU,EAAArD,EAAA,KAAAua,cACA6yH,EAAAjqH,EAAAzL,IAAArU,EAAAsU,EAAA,KAAA4C,cACA,KAAAixH,2BAAAxrI,EAAA0Y,EAAAy0H,EACA,KAAA3B,2BAAA7zH,EAAAgB,EAAAy0H,EAEA,KAAAj0H,uBAAAnZ,EAAA0Y,EAAA,KAAA8yH,2BAAAxrI,EACA,KAAAmZ,uBAAAxB,EAAAgB,EAAA,KAAA6yH,2BAAA7zH,CACA,CAEA,EAEAoB,sBAAAA,CAAA8J,EAAAC,GACA,KAAA7J,oBAEA,KAAAkyH,qBAAA,CAAAnrI,EAAA6iB,EAAAlL,EAAAmL,GACA,KAAAooH,YACA,KAAAA,UAAAlhI,OAAAwZ,sBAAA,KACA,KAAA0nH,UAAA,EACA,MAAAmC,EAAA,KAAAlC,qBACAkC,IACA,KAAA3B,mBAAA1rI,EAAAqtI,EAAArtI,EACA,KAAA0rI,mBAAA/zH,EAAA01H,EAAA11H,EACA,KAAAwB,uBAAAnZ,EAAAqtI,EAAArtI,EAAA,KAAAwrI,2BAAAxrI,EACA,KAAAmZ,uBAAAxB,EAAA01H,EAAA11H,EAAA,KAAA6zH,2BAAA7zH,MAEA,EAEAqB,mBAAAA,GACA,QAAAE,eAAA,CACA,MAAA0wH,EAAA,KAAA1wH,eAAAxQ,GACA4kI,EAAA,KAAAl0H,iBAEAm0H,EAAA,KAAAC,uBACA,KAAAp0H,iBACAwwH,EACA,KAAA8B,mBAAA1rI,EACA,KAAA0rI,mBAAA/zH,QAGAra,IAAAiwI,GACA,KAAAP,UAAA,KACA,KAAAz2H,WAAA+2H,EAAAC,GAEA,MAAAE,EAAA,YAAAH,KAAAC,KAAA3D,IACA8D,EAAA,KAAA/xH,MAAA8xH,GACAC,GAAAhkI,MAAAS,QAAAujI,IAAAA,EAAA,KACAA,EAAA,GAAAxvH,YAAA,IAIA,CACA,KAAAjF,mBAAA,EACA,KAAAC,eAAA,KACA,KAAAE,kBAAA,EACA,KAAAC,mBAAA,EACA,KAAAoyH,qBAAA,CAAAzrI,EAAA,EAAA2X,EAAA,GACA,KAAAwzH,qBAAA,IACA,EAEAwC,kBAAAA,CAAAC,GACA,KAAA93H,aAAA7b,SACA,KAAA4zI,wBACA,KAAA32H,cAAA,EACA,KAAAG,eAAA,IAAAu2H,GACA,KAAAz2H,oBAAA,EACA,KAAAC,iBAAA,EACA,KAAAE,gBAAA,EACA,KAAAG,aAAA,CAAAzX,EAAA,EAAA2X,EAAA,GACA,KAAAs1H,kBACA,EAEAA,eAAAA,GACA,MAAAa,EAAA,GACAxhG,EAAA,KAAA7pB,IACA0mH,EAAA78F,GAAA68F,WAAA,EACAC,EAAA98F,GAAAyhG,cAAA,EACA,SAAA72H,eAAA,KAAA+B,mBACAkwH,IAAA,KAAAoD,0BACAnD,IAAA,KAAAoD,4BACA,OAEA,KAAAD,yBAAApD,EACA,KAAAqD,4BAAApD,EACA,WAAAx/D,EAAA,KAAAC,GAAAq/D,GAAAC,EAAAC,GACA,QAAA4E,EAAA,EAAAA,EAAA,KAAAl4H,aAAA7b,OAAA+zI,IACA,QAAAC,EAAA,EAAAA,EAAA,KAAAn4H,aAAAk4H,GAAA93H,MAAAjc,OAAAg0I,IAAA,CACA,MAAAryH,EAAA,KAAAsyH,qBAAAF,EAAAC,GACA,IAAAryH,EAAA,SACA,GAAAwtH,EAAA,CACA,MAAAzkH,EAAA/I,EAAAyG,QAAA,kBAAAzG,EACA0tH,EAAA3kH,EAAA2kH,WAAA,EACAC,EAAA5kH,EAAA4kH,cAAA,EACA,IAAAF,GAAAC,EAAAC,EAAA3/D,EAAAC,GACA,QAEA,CACA,MAAA3xC,EAAAtc,EAAAsH,wBACA4qH,EAAA,GAAAE,KAAAC,KAAA,CACAh4H,SAAA+3H,EACA5xF,UAAA6xF,EACA/1G,OAEA,CAEA,KAAAk0G,oBAAA0B,EACA,KAAAzB,wBAAAjwI,OAAA6oC,OAAA6oG,GACA,KAAA1C,mBACA,EACA+C,sBAAAA,CAAAl4H,EAAAmmC,GACA,MAAAxgC,EAAA,KAAAsyH,qBAAAj4H,EAAAmmC,GACA,IAAAxgC,EAAA,OACA,MAAAsc,EAAAtc,EAAAsH,wBACA,KAAAkpH,oBAAA,IACA,KAAAA,oBACA,IAAAn2H,KAAAmmC,KAAA,CACAnmC,WACAmmC,YACAlkB,SAGA,KAAAm0G,wBAAAjwI,OAAA6oC,OAAA,KAAAmnG,qBACA,KAAAhB,mBACA,EACAgD,gBAAAA,GACA,YAAAhC,qBAAA,EACA,EACAiC,iBAAAA,GACA,YAAAhC,yBAAA,EACA,EACAa,WAAAA,CAAAj3H,EAAAmmC,GACA,YAAAgyF,mBAAA,GAAAn4H,KAAAmmC,MAAAlkB,MAAA,IACA,EACAo2G,kBAAAA,CAAAlsH,GACA,OAAAA,GAAAxgB,MAAA+S,WAAA,SACA,CACA3U,EAAAoiB,EAAAQ,UAAA,IAAAC,QACAlL,EAAAyK,EAAAQ,UAAA,IAAAE,SAGA,CACA9iB,EAAAoiB,GAAAS,QACAlL,EAAAyK,GAAAU,QAEA,EAEA/K,qBAAAA,CAAA9B,EAAAmmC,GACA,KAAAgvF,kBACA,MAAA1B,EAAA,KAAA5zH,aAAAG,GACA,IAAAyzH,EAAA,SACA,MAAA6E,EAAA7E,EAAAkD,aAAAxwF,IAAA,EACAoyF,EAAA,KAAAJ,mBACAI,EAAA,GAAAv4H,KAAAmmC,MACA,KAAA+xF,uBAAAl4H,EAAAmmC,GAEA,MAAAyhE,EAAA,KAAAuwB,mBAAA,GAAAn4H,KAAAmmC,MAAAlkB,MAAAtiB,OAAA,EACA,GAAAioG,GAAA0wB,EACA,OAAA1wB,EAAA0wB,EAEA,QAAAr3H,cAAA,KAAA+B,kBAAA,CACA,MAAA2C,EAAA,KAAAsyH,qBAAAj4H,EAAAmmC,GACAqyF,EAAA7yH,GAAAsH,0BAAAtN,OAAA,EACA,GAAA64H,GAAAF,EACA,OAAAE,EAAAF,CAEA,CACA,MAAAz+B,EAAA45B,EAAAzqH,WAAAm9B,IAAA,EACAqc,EAAA,KAAAuzE,aAAA,KAAAl1H,MAAA,KAAAk1H,YAAA,KAAAl1H,MAAA,EACA,OAAAg5F,EAAAr3C,CACA,EACAi2E,gBAAAA,CAAAz4H,EAAAmmC,GACA,MAAA+tF,EAAA,KAAAxuH,MAAA,OAAA1F,KAAAmmC,KACA,OAAA+tF,GAAAzgI,MAAAS,QAAAggI,IAAAA,EAAA,GAAAA,EAAA,OACA,EACA+D,oBAAAA,CAAAj4H,EAAAmmC,GACA,MAAAuyF,EAAA,KAAAD,iBAAAz4H,EAAAmmC,GACA,OAAAuyF,EAAAA,EAAAlsH,KAAAksH,EAAA,IACA,EAEAjC,gBAAAA,GACA,KAAAf,gBACA,KAAAA,cAAA3hI,OAAAwZ,sBAAA,KACA,MAAA8oB,EAAA,KAAA7pB,IACA0mH,EAAA78F,GAAA68F,WAAA,EACAyF,EAAAtiG,GAAAsiG,aAAA,EACAC,EAAA1F,IAAA,KAAAkC,cACAyD,EAAAF,IAAA,KAAAtD,gBACA,KAAAD,cAAAlC,EACA,KAAAmC,gBAAAsD,GAEA,KAAA13H,cAAA,KAAA+B,qBACA41H,GAAAC,IACA,KAAA7B,mBAGA,KAAApC,aAAA,KAAA3zH,cAAA,KAAA+B,mBACA21H,GAAAE,IACA,KAAA5C,mBAAA0C,EACA,KAAA3C,gBAAA,EACA,KAAAa,uBAGA,KAAAnB,cAAA,IAEA,EAEA30H,eAAAA,CAAAoL,GACA,SAAAlL,eAAA,KAAAG,eAAA,OACA,QAAArX,EAAA,EAAA2X,GAAA,KAAA22H,mBAAAlsH,QACA9kB,IAAA0C,QAAA1C,IAAAqa,IACA,KAAAozH,sBAAA,CAAA/qI,IAAA2X,KACA,KAAAmzH,aACA,KAAAA,WAAA9gI,OAAAwZ,sBAAA,KACA,KAAAsnH,WAAA,EACA,MAAAuC,EAAA,KAAAtC,sBACA,IAAAsC,EAAA,OAEA,MAAA0B,EAAA1B,EAAArtI,EACAgvI,EAAA3B,EAAA11H,EACA,IAAAnd,EAAA,KAEA,QAAAwwI,eACA+D,GAAA,KAAA/D,cAAAzzH,MAAAw3H,GAAA,KAAA/D,cAAAlxE,OACAk1E,GAAA,KAAAhE,cAAAtzH,KAAAs3H,GAAA,KAAAhE,cAAAnxE,OACAr/D,EAAA,CACAyb,SAAA,KAAAkB,oBACAilC,UAAA,KAAAhlC,iBACA8gB,KAAA,KAAA8yG,mBAEA,CACA,MAAAiE,EAAA,KAAAZ,oBAAAp0I,OACA,KAAAo0I,oBACAjyI,OAAA6oC,OAAA,KAAAmpG,oBACA,QAAAhsI,EAAA,EAAAA,EAAA6sI,EAAAh1I,OAAAmI,IAAA,CACA,MAAAy7D,EAAAoxE,EAAA7sI,GACA81B,EAAA2lC,EAAA3lC,KACA,GAAA62G,GAAA72G,EAAA3gB,MAAAw3H,GAAA72G,EAAA4hC,OACAk1E,GAAA92G,EAAAxgB,KAAAs3H,GAAA92G,EAAA2hC,OAAA,CACAr/D,EAAAqjE,EACA,KACA,CACA,CACA,CAEA,IAAArjE,EAIA,OAHA,KAAA8c,gBAAA,EACA,KAAAG,aAAA,CAAAzX,EAAA,EAAA2X,EAAA,QACA,KAAAqzH,cAAA,MAIA,KAAA7zH,oBAAA3c,EAAAyb,SACA,KAAAmB,iBAAA5c,EAAA4hD,UACA,KAAA4uF,cAAAxwI,EAAA09B,KACA,MAAAg3G,EAAA,KAAAhB,qBAAA1zI,EAAAyb,SAAAzb,EAAA4hD,WACAn9B,EAAA,KAAAnJ,aAAAtb,EAAAyb,WAAAgJ,aAAAzkB,EAAA4hD,YAAA,EACA+yF,EAAAD,GAAAt5H,OAAApb,EAAA09B,KAAAtiB,MACAw5H,EAAAF,GAAAr5H,QAAArb,EAAA09B,KAAAriB,OACAw5H,EAAAF,EAAA30I,EAAA09B,KAAAtiB,MAAAu5H,EAAA,EACAG,EAAAF,EAAA50I,EAAA09B,KAAAriB,OAAAu5H,EAAA,EACAG,GAAAR,EAAAv0I,EAAA09B,KAAA3gB,MAAA83H,EAAApwH,EACAuwH,GAAAR,EAAAx0I,EAAA09B,KAAAxgB,KAAA43H,EAAArwH,EAEAC,EAAAiwH,EAAAlwH,EACAE,EAAAiwH,EAAAnwH,EACA,KAAAxH,aAAAzX,EAAAif,EACA,KAAAxH,aAAAE,EAAAsH,EACA,IAAAjf,EAAAuvI,EAAA,KAAAl4H,eAAAzB,MAAA,EACA+B,EAAA63H,EAAA,KAAAn4H,eAAAxB,OAAA,EAEA7V,EAAAH,KAAAmN,IAAA,EAAAnN,KAAAoN,IAAAjN,EAAAkf,EAAA,KAAA7H,eAAAzB,QACA+B,EAAA9X,KAAAmN,IAAA,EAAAnN,KAAAoN,IAAA0K,EAAAwH,EAAA,KAAA9H,eAAAxB,SAEA,KAAA2B,gBAAAxX,EAAAA,EACA,KAAAwX,gBAAAG,EAAAA,EACA,KAAAL,gBAAA,KAEA,EACAL,kBAAAA,CAAAhB,EAAAmmC,EAAAh6B,GACA,SAAAuoH,gBAAA,OAEA,MAAA3qI,EAAA6iB,EAAAlL,EAAAmL,GAAA,KAAAwrH,mBAAAlsH,GACA,IAAAxH,OAAA60H,SAAA5sH,KAAAjI,OAAA60H,SAAA3sH,GAAA,OAEA,KAAAqrH,uBAAAl4H,EAAAmmC,GACA,MAAAj5B,EAAA,KAAA+pH,YAAAj3H,EAAAmmC,GACA,IAAAj5B,EAAA,OAEA,MAAAlE,EAAA,KAAAlH,sBAAA9B,EAAAmmC,IAAA,EACAmzF,GAAA1sH,EAAAM,EAAA5L,MAAA0H,EACAuwH,GAAA1sH,EAAAK,EAAAzL,KAAAuH,EAEAyqH,EAAA,KAAA5zH,eAAAG,GACAy5H,EAAAhG,GAAA5xH,aAAAskC,IAAA,GACA,IAAAuzF,EAAA,KAEA,QAAAvtI,EAAAstI,EAAAz1I,OAAA,EAAAmI,GAAA,EAAAA,IAAA,CACA,MAAAiB,EAAAqsI,EAAAttI,GACApC,EAAA4a,OAAAvX,EAAArD,GACA2X,EAAAiD,OAAAvX,EAAAsU,GACA/B,EAAAgF,OAAAvX,EAAAuS,OACAC,EAAA+E,OAAAvX,EAAAwS,QACA,IAAA7V,EAAA2X,EAAA/B,EAAAC,GAAA6gC,MAAA97B,OAAA60H,YAGAF,GAAAvvI,GAAAuvI,GAAAvvI,EAAA4V,GAAA45H,GAAA73H,GAAA63H,GAAA73H,EAAA9B,GAAA,CACA85H,EAAAtsI,EACA,KACA,CACA,CAEAssI,GAEA,KAAA5zH,MAAA,6BACA9F,WACAmmC,YACA/4C,OAAAssI,EACAvtH,SAEA,EAEAwtH,aAAAA,CAAAxtH,GACA,WAAAA,EAAA7e,KAAA,KAAA2T,cACA,KAAA24H,cAEA,EAEApD,WAAAA,CAAArqH,GACA,IAAAA,EAAA6zB,QAAA,OACA7zB,EAAAzD,iBAEA,MAAA85C,EAAA,OAAAr2C,EAAAsB,OACAosH,EAAAjwI,KAAAmN,IAAA,GAAAnN,KAAAoN,IAAA,OAAA++H,YAAAvzE,IACA,KAAAuzE,YAAA8D,EACA,KAAAhE,iBACA,KAAAA,eAAA9hI,OAAAwZ,sBAAA,KACA,KAAAsoH,eAAA,KACA,KAAAiE,eAEA,EAEAA,UAAAA,GACA,MAAA50H,EAAA,KAAA6wH,YAEA,KAAAl1H,MAAAqE,EAEAquH,GAAA,KAAA1zH,aAAA,KAAAgB,OAEA,KAAAw1H,sBAAA,GACA,KAAAW,iBACA,EAEA+C,YAAAA,GACA,SAAA94H,eAAA,KAAAG,eAAA,OACA,SAAAC,eAAA,OAEA,MAAA24H,EAAA,IACA,KAAA54H,eACA3O,GAAA,KAAAwnI,mBACAlwI,EAAAH,KAAA6qC,MAAA,KAAAlzB,gBAAAxX,GACA2X,EAAA9X,KAAA6qC,MAAA,KAAAlzB,gBAAAG,IAGA+xH,EAAA,KAAA5zH,aAAA,KAAAqB,qBACA+H,EAAA,KAAAlH,aAAA,KAAAb,oBAAA,KAAAC,kBACA+H,EAAA,KAAAlH,cAAA,KAAAd,oBAAA,KAAAC,kBAEA,GAAA64H,EAAAjwI,EAAA,GAAAiwI,EAAAt4H,EAAA,GACAs4H,EAAAjwI,EAAAiwI,EAAAr6H,MAAAsJ,GACA+wH,EAAAt4H,EAAAs4H,EAAAp6H,OAAAsJ,EAEA,YADA,KAAA0wH,eAIAnG,EAAA5xH,WAAA,KAAAV,kBAAAhU,KAAA6sI,GAEA,MAAA7zF,EAAA,KAAAhlC,iBACAnB,EAAA,KAAAkB,oBACAyyH,EAAAqG,EAAAvnI,GAEA,KAAAmnI,eAEA,KAAA7C,UAAA,KACA,MAAAS,EAAA,YAAAx3H,KAAAmmC,KAAAwtF,IACA8D,EAAA,KAAA/xH,MAAA8xH,GACAC,GAAAhkI,MAAAS,QAAAujI,IAAAA,EAAA,KACAA,EAAA,GAAAxvH,YAAA,IAGA,EAEA2xH,YAAAA,GACA,KAAA34H,cAAA,EACA,KAAAG,eAAA,KACA,KAAAC,gBAAA,EACA,KAAAq1H,uBACA,EACAuD,gBAAAA,GACA,MAAAl1I,EAAA,KAAAuwI,oBACA4E,EAAAtwI,KAAA+I,SAAAlL,SAAA,IAAApB,MAAA,KACA,aAAAmpC,KAAAC,SAAA1qC,KAAAm1I,GACA,EACAtC,qBAAAA,GACA,KAAA5C,0BACA,KAAAA,yBAAA,EACA1lI,SAAA0c,iBAAA,iBAAAjL,iBACAzR,SAAA0c,iBAAA,iBAAAjL,gBAAA,CAAA81C,SAAA,IACAvnD,SAAA0c,iBAAA,eAAA+tH,cACAzqI,SAAA0c,iBAAA,gBAAA+tH,cACAzqI,SAAA0c,iBAAA,eAAA2tH,eACA,EACAjD,qBAAAA,GACA,KAAA1B,0BACA,KAAAA,yBAAA,EACA1lI,SAAA2c,oBAAA,iBAAAlL,iBACAzR,SAAA2c,oBAAA,iBAAAlL,gBAAA,CAAA81C,SAAA,IACAvnD,SAAA2c,oBAAA,eAAA8tH,cACAzqI,SAAA2c,oBAAA,gBAAA8tH,cACAzqI,SAAA2c,oBAAA,eAAA0tH,eACA,EAEAQ,eAAAA,CAAA/sI,EAAA+4C,EAAA,KAAA1lC,kBAAAT,EAAA,KAAAQ,kBACA,GAAAR,EAAA,GAAAA,GAAA,KAAAH,aAAA7b,OAAA,SACA,GAAAmiD,EAAA,GAAAA,GAAA,KAAAtmC,aAAAG,GAAAC,MAAAjc,OAAA,SAEA,MAAAyvI,EAAA,KAAA5zH,aAAAG,GACAk0H,EAAA,KAAAuE,iBAAAz4H,EAAAmmC,GACA,IAAA+tF,EAAA,SAEA,IAAA8F,EAAA5sI,EACA4sI,EAAAvnI,KAAA,KAAA2nI,eAAAp6H,EAAAg6H,EAAAvnI,MACAunI,EAAA,IAAAA,EAAAvnI,GAAA,KAAAwnI,qBAGA,MAAAhxH,EAAA,KAAAlH,aAAA/B,EAAAmmC,GACAj9B,EAAA,KAAAlH,cAAAhC,EAAAmmC,GAEA,QAAA6zF,EAAAjwI,EAAA,GAAAiwI,EAAAt4H,EAAA,GACAs4H,EAAAjwI,EAAAiwI,EAAAr6H,MAAAsJ,GACA+wH,EAAAt4H,EAAAs4H,EAAAp6H,OAAAsJ,KAIAuqH,EAAA5xH,WAAAskC,GAAAh5C,KAAA6sI,GACA,KAAArE,iBAAA,GAAA31H,KAAAg6H,EAAAvnI,MAAA0zC,GACA,EACA,EACAi0F,cAAAA,CAAAp6H,EAAA2zH,GACA,IAAAA,EAAA,SACA,MAAAz8C,EAAA,GAAAl3E,KAAA2zH,IACA,QAAAtsI,IAAA,KAAAsuI,iBAAAz+C,GAAA,SACA,MAAAu8C,EAAA,KAAA5zH,aAAAG,GACA,OAAA0zH,GAAAD,EAAAE,EACA,EACA0G,kBAAAA,CAAAr6H,EAAAmmC,EAAAwtF,EAAAzxH,GACA,MAAAuxH,EAAA,KAAA5zH,aAAAG,GACA8zH,GAAAL,EAAAttF,EAAAwtF,EAAAzxH,EACA,EACAo4H,oBAAAA,CAAAt6H,EAAAmmC,EAAAwtF,GACA,MAAAF,EAAA,KAAA5zH,aAAAG,GACAg0H,GAAAP,EAAAttF,EAAAwtF,EACA,EAEA4G,aAAAA,CAAAv6H,EAAA,KAAAQ,kBACA,GAAAR,EAAA,GAAAA,GAAA,KAAAH,aAAA7b,OAAA,SAEA,MAAAyvI,EAAA,KAAA5zH,aAAAG,GACA5a,EAAA,GA0BA,OAxBAquI,EAAA5xH,WAAAjH,QAAA,CAAA6+H,EAAAtzF,KACA,MAAA+tF,EAAA,KAAAuE,iBAAAz4H,EAAAmmC,GACA,IAAA+tF,EAAA,OACA,MAAAC,EAAA,KAAAF,qBAAAj0H,EAAAmmC,EAAA+tF,GACAsG,EAAArG,EAAAv0H,OACAoJ,EAAAyqH,EAAAzqH,WAAAm9B,IAAA,EAEAszF,EAAA7+H,QAAAxN,IACAhI,EAAA+H,KAAA,IACAC,EACA+4C,YACAa,WAAAb,EAAA,EACAtlC,MAAAmI,EACAyxH,sBAAA,CACAj9C,IAAA/sD,SAAArjC,EAAArD,EAAA,IACA0zF,IAAAhtD,SAAA+pG,EAAAptI,EAAAsU,EAAA,IACAi8E,IAAAltD,SAAA+pG,EAAAptI,EAAAsU,EAAAtU,EAAAwS,OAAA,IACAD,MAAA8wB,SAAArjC,EAAAuS,MAAA,IACAC,OAAA6wB,SAAArjC,EAAAwS,OAAA,WAMAxa,CACA,EAEA+c,YAAAA,CAAAnC,EAAA2zH,EAAAzxH,GACA,GAAAlC,EAAA,GAAAA,GAAA,KAAAH,aAAA7b,OAAA,OACA,MAAAyvI,EAAA,KAAA5zH,aAAAG,GAEAk3E,EAAA,GAAAl3E,KAAA2zH,IACA,IAAAjqH,EAAA,KAAAisH,iBAAAz+C,GASA,QAPA7vF,IAAAqiB,IACAA,EAAAmqH,GAAAJ,EAAAE,QACAtsI,IAAAqiB,IACA,KAAAisH,iBAAAz+C,GAAAxtE,SAIAriB,IAAAqiB,EAAA,OAEA,MAAAgxH,EAAAjH,EAAA5xH,WAAA6H,IAAA/kB,KAAAua,GAAAA,EAAAzM,KAAAkhI,GACA,GAAA+G,EAAA,CAEA,GAAAx4H,EAAA4L,kBAAAzmB,IAAA6a,EAAA6L,cAAA1mB,IAAA6a,EAAA8L,QAAA,CACA,MAAAvL,EAAAP,EAAA6L,QACArL,EAAAR,EAAA8L,QAEAuqH,EAAA,KAAAJ,mBACAI,GAAA,IAAApyI,OAAAyE,KAAA2tI,GAAAv0I,QACA,KAAAgzI,kBAGA,MAAAlsH,EAAA,KAAAmsH,YAAAj3H,EAAA0J,GACA,GAAAoB,EAAA,CACA,MAAA9B,EAAA,KAAAlH,sBAAA9B,EAAA0J,GACA4vH,GAAA72H,EAAAqI,EAAAxJ,KAAA,KAAAk0H,qBAAAzrI,GAAAif,EAAA,KAAAusH,2BAAAxrI,EAAAif,EACAuwH,GAAA72H,EAAAoI,EAAArJ,IAAA,KAAA+zH,qBAAA9zH,GAAAsH,EAAA,KAAAusH,2BAAA7zH,EAAAsH,EAEA,KAAAqxH,mBAAAr6H,EAAA0J,EAAAiqH,EAAA,CAAA5pI,EAAAuvI,EAAA53H,EAAA63H,GACA,CACA,MACA,CAEA,QAAAlyI,IAAA6a,EAAAnY,QAAA1C,IAAA6a,EAAAR,EAAA,CACA,MAAAkM,OAAAvmB,IAAA6a,EAAAnY,EAAAmY,EAAAnY,EAAA2wI,EAAA3wI,EACA8jB,OAAAxmB,IAAA6a,EAAAR,EAAAQ,EAAAR,EAAAg5H,EAAAh5H,EACAixH,OAAAtrI,IAAA6a,EAAAvC,MAAAuC,EAAAvC,MAAA+6H,EAAA/6H,MACAizH,OAAAvrI,IAAA6a,EAAAtC,OAAAsC,EAAAtC,OAAA86H,EAAA96H,QAEAD,MAAAg7H,EAAA/6H,OAAAg7H,GAAA,KAAAC,YAAA76H,EAAA0J,GACA,GAAAkE,GAAA,GAAAC,GAAA,GACAD,EAAA+kH,GAAAgI,GACA9sH,EAAA+kH,GAAAgI,EAEA,YADA,KAAAP,mBAAAr6H,EAAA0J,EAAAiqH,EAAAzxH,GAIA,IAAA44H,EAAApxH,EACAqxH,EAAA,EAEA,QAAA56H,EAAA,EAAAA,EAAAszH,EAAAxzH,MAAAjc,OAAAmc,IAAA,CACA,MAAA8I,EAAA,KAAAlH,aAAA/B,EAAAG,GACA+I,EAAA,KAAAlH,cAAAhC,EAAAG,GAEA66H,EAAAtI,GAAA9kH,EAAAC,EAAA8kH,EAAAC,EAAA3pH,EAAAC,GACA8xH,EAAAD,IACAA,EAAAC,EACAF,EAAA36H,EAEA,CAEA,GAAA26H,IAAApxH,EAAA,CACA,MAAA/J,MAAAsJ,EAAArJ,OAAAsJ,GAAA,KAAA2xH,YAAA76H,EAAA86H,IACA/wI,EAAAkxI,EAAAv5H,EAAAw5H,GAAAzI,GAAA7kH,EAAAC,EAAA8kH,EAAAC,EAAA3pH,EAAAC,GAEA,KAAAoxH,qBAAAt6H,EAAA0J,EAAAiqH,GACA,MAAAwH,EAAA,IACAT,KACAx4H,EACAnY,EAAAkxI,EACAv5H,EAAAw5H,GAIA,OAFAzH,EAAA5xH,WAAAi5H,GAAA3tI,KAAAguI,QACA,KAAAxF,iBAAA,GAAA31H,KAAA2zH,KAAAmH,EAEA,CAEA,MAAAn7H,MAAAsJ,EAAArJ,OAAAsJ,GAAA,KAAA2xH,YAAA76H,EAAA0J,GAEA,GAAAkE,EAAA,GAAAC,EAAA,GACAD,EAAA+kH,EAAA1pH,GACA4E,EAAA+kH,EAAA1pH,EACA,MAEA,CAEA,KAAAmxH,mBAAAr6H,EAAA0J,EAAAiqH,EAAAzxH,EA3EA,CA4EA,EAEAG,YAAAA,CAAArC,EAAA2zH,GACA,GAAA3zH,EAAA,GAAAA,GAAA,KAAAH,aAAA7b,OAAA,OACA,MAAAyvI,EAAA,KAAA5zH,aAAAG,GACA,IAAAo7H,EAAA,KACAC,GAAA,EAEA5H,EAAA5xH,WAAAhP,KAAA,CAAA+gI,EAAAztF,KACA,MAAA4tF,EAAAH,EAAAhjB,UAAAxjH,GAAAA,EAAAqF,KAAAkhI,GACA,WAAAI,IAGAqH,EAAAxH,EAAAG,GACAsH,EAAAl1F,EACAytF,EAAAv0F,OAAA00F,EAAA,IACA,YAEA,KAAA4B,iBAAA,GAAA31H,KAAA2zH,KACAyH,GACA,KAAAt1H,MAAA,8BACA1Y,OAAAguI,EACAp7H,WACAmmC,UAAAk1F,GAGA,EACA94H,eAAAA,CAAAvC,EAAA2zH,GACA,GAAA3zH,EAAA,GAAAA,GAAA,KAAAH,aAAA7b,OAAA,OACA,MAAAyvI,EAAA,KAAA5zH,aAAAG,GAEAk3E,EAAA,GAAAl3E,KAAA2zH,IACA,IAAAxtF,EAAA,KAAAwvF,iBAAAz+C,GASA,QAPA7vF,IAAA8+C,IACAA,EAAA0tF,GAAAJ,EAAAE,QACAtsI,IAAA8+C,IACA,KAAAwvF,iBAAAz+C,GAAA/wC,SAIA9+C,IAAA8+C,EAAA,OAEA,MAAAm1F,EAAA7H,EAAA5xH,WAAAskC,IAAAxhD,KAAAua,GAAAA,EAAAzM,KAAAkhI,GACA,IAAA2H,EAAA,OAEA,MAAA37H,MAAAsJ,EAAArJ,OAAAsJ,GAAA,KAAA2xH,YAAA76H,EAAAmmC,GACA0lB,EAAA,IACA,EAAA9hE,EAAA,EAAA2X,GAAA+wH,GACA6I,EAAAvxI,EAAA8hE,EACAyvE,EAAA55H,EAAAmqD,EACAyvE,EAAA37H,MACA27H,EAAA17H,OACAqJ,EACAC,GAGA,IAAAqyH,EAAAD,EAAAE,OACAD,GAAAnzG,SAAAjiC,OAAAiB,UAAAkC,eAAAjG,KAAAk4I,EAAAnzG,QAAA,eACAmzG,EAAA,IACAA,EACAnzG,QAAA,IAAAmzG,EAAAnzG,iBAEAmzG,EAAAnzG,QAAAqzG,WAGA,MAAAC,EAAA,IACAJ,EACA7oI,GAAA,KAAAwnI,mBACAlwI,IACA2X,IACA85H,OAAAD,GAGA9H,EAAA5xH,WAAAskC,GAAAh5C,KAAAuuI,GACA,KAAA/F,iBAAA,GAAA31H,KAAA07H,EAAAjpI,MAAA0zC,EAEA,KAAA4wF,UAAA,KACA,MAAAS,EAAA,YAAAx3H,KAAAmmC,KAAAu1F,EAAAjpI,KACAglI,EAAA,KAAA/xH,MAAA8xH,GACAC,GAAAhkI,MAAAS,QAAAujI,IAAAA,EAAA,KACAA,EAAA,GAAAxvH,YAAA,IAGA,EAEAsvH,sBAAAA,CAAAv3H,EAAA2zH,EAAAlxH,EAAAC,GACA,GAAA1C,EAAA,GAAAA,GAAA,KAAAH,aAAA7b,OAAA,OACA,MAAAyvI,EAAA,KAAA5zH,aAAAG,GAEAk3E,EAAA,GAAAl3E,KAAA2zH,IACA,IAAAjqH,EAAA,KAAAisH,iBAAAz+C,GASA,QAPA7vF,IAAAqiB,IACAA,EAAAmqH,GAAAJ,EAAAE,QACAtsI,IAAAqiB,IACA,KAAAisH,iBAAAz+C,GAAAxtE,SAIAriB,IAAAqiB,EAAA,OAEA,MAAAgxH,EAAAjH,EAAA5xH,WAAA6H,IAAA/kB,KAAAua,GAAAA,EAAAzM,KAAAkhI,GACA,IAAA+G,EAAA,OAAAhxH,EAEA,IAAAiyH,EAAAjyH,EACA,MAAA6uH,EAAA,KAAAJ,mBACA,UAAA7qI,KAAAirI,EAAA,CACA,MAAAv4H,SAAA47H,EAAA,UAAAz1F,EAAA,KAAAlkB,GAAAs2G,EAAAjrI,GACA,GAAAsuI,IAAA57H,GACAyC,GAAAwf,EAAA3gB,MAAAmB,GAAAwf,EAAA4hC,OACAnhD,GAAAuf,EAAAxgB,KAAAiB,GAAAuf,EAAA2hC,OAAA,CACA+3E,EAAAx1F,EACA,KACA,CACA,CAEA,MAAA01F,EAAA,KAAA5E,YAAAj3H,EAAA27H,GACA,IAAAE,EAAA,OAAAnyH,EAEA,MAAAV,EAAA,KAAAlH,sBAAA9B,EAAA27H,GACArC,GAAA72H,EAAAo5H,EAAAv6H,KAAA,KAAAk0H,qBAAAzrI,GAAAif,EAAA,KAAAusH,2BAAAxrI,EAAAif,EACAuwH,GAAA72H,EAAAm5H,EAAAp6H,IAAA,KAAA+zH,qBAAA9zH,GAAAsH,EAAA,KAAAusH,2BAAA7zH,EAAAsH,GAEArJ,MAAAsJ,EAAArJ,OAAAsJ,GAAA,KAAA2xH,YAAA76H,EAAA27H,IACA5xI,EAAA+xI,EAAAp6H,EAAAq6H,GAAAtJ,GACA6G,EACAC,EACAmB,EAAA/6H,MACA+6H,EAAA96H,OACAqJ,EACAC,GAeA,OAZAyyH,IAAAjyH,GACA,KAAA4wH,qBAAAt6H,EAAA0J,EAAAiqH,GACAF,EAAA5xH,WAAA85H,GAAAxuI,KAAA,IACAutI,EACA3wI,EAAA+xI,EACAp6H,EAAAq6H,IAEA,KAAApG,iBAAAz+C,GAAAykD,GACAG,IAAApB,EAAA3wI,GAAAgyI,IAAArB,EAAAh5H,GACA,KAAA24H,mBAAAr6H,EAAA0J,EAAAiqH,EAAA,CAAA5pI,EAAA+xI,EAAAp6H,EAAAq6H,IAGAJ,CACA,EAEA76H,SAAAA,CAAAwE,EAAAtF,EAAAmmC,GACAnmC,EAAA,GAAAA,GAAA,KAAAH,aAAA7b,SACA,KAAA6b,aAAAG,GAAAgJ,WAAAq2B,OAAA8G,EAAA,EAAA7gC,EAAAzE,OACA,KAAAw1H,sBAAA,GAAAr2H,KAAAmmC,KAAA,KACA,KAAA+xF,uBAAAl4H,EAAAmmC,GACA,KAAAyuF,aACA,KAAAiC,sBAEA,EAEA1yH,gBAAAA,CAAA63H,EAAAC,GACA,YAAAtH,gBACAruI,QAAA,gBAAA01I,GACA11I,QAAA,eAAA21I,EACA,EACAl6H,YAAAA,CAAA/B,EAAAmmC,GACA,MAAA+tF,EAAA,KAAAuE,iBAAAz4H,EAAAmmC,GACA,IAAA+tF,EAAA,SACA,MAAAC,EAAA,KAAAF,qBAAAj0H,EAAAmmC,EAAA+tF,GACA,OAAAC,EAAAx0H,KACA,EACAqC,aAAAA,CAAAhC,EAAAmmC,GACA,MAAA+tF,EAAA,KAAAuE,iBAAAz4H,EAAAmmC,GACA,IAAA+tF,EAAA,SACA,MAAAC,EAAA,KAAAF,qBAAAj0H,EAAAmmC,EAAA+tF,GACA,OAAAC,EAAAv0H,MACA,EACAi7H,WAAAA,CAAA76H,EAAAmmC,GACA,OACAxmC,MAAA,KAAAoC,aAAA/B,EAAAmmC,GACAvmC,OAAA,KAAAoC,cAAAhC,EAAAmmC,GAEA,EACA8tF,oBAAAA,CAAAj0H,EAAAmmC,EAAA+tF,GACA,MAAAh9C,EAAA,GAAAl3E,KAAAmmC,IACAstF,EAAA,KAAA5zH,aAAAG,GACAgJ,EAAAyqH,EAAAzqH,WAAAm9B,IAAA,EACA,OAAA8tF,GAAA,KAAAoC,sBAAAn/C,EAAAg9C,EAAAlrH,EACA,EACAkzH,qBAAAA,CAAAC,GACA,MAAAC,EAAA,KAAA5vH,KAAAmsH,aAAA,EACA,IAAAyD,IAAAD,EAAA,SAEA,MAAAE,EAAAD,EAAA,GACA,OAAAxyI,KAAAmN,IAAA,GAAAnN,KAAAoN,IAAA,EAAAqlI,EAAAF,GACA,EACAtF,mBAAAA,GACA,KAAAb,gBACA,KAAAJ,YACA,KAAAA,UAAA7hI,OAAAwZ,sBAAA,KACA,KAAAqoH,UAAA,EACA,KAAA0G,oBAEA,EACAA,eAAAA,GACA,SAAA1H,aAAA,KAAAoB,iBAAA,KAAAn2H,aAAA7b,OAAA,OAEA,MAAAu4I,EAAA,KAAA18H,aACAtX,QAAAkrI,GAAAA,EAAAkD,YAAA,IACA5mI,OAAA4P,GAAAA,EAAA,GAEA,IAAA68H,EAAA,EACA,GAAAD,EAAAv4I,OACAw4I,EAAA5yI,KAAAmN,OAAAwlI,OACA,CACA,QAAA3H,YAEA,YADA,KAAAiC,sBAGA,MAAA4F,EAAA,KAAAjwH,KAAAke,iBAAA,UACA,IAAA+xG,GAAAz4I,OAAA,OACAw4I,EAAA5yI,KAAAmN,OAAAtD,MAAA2sB,KAAAq8G,GAAA1vI,IAAA4Y,GACAA,EAAAhG,OAAA,KAAAkB,OAAA,IAEA,CAEA,MAAA67H,EAAA,KAAAR,sBAAAM,GACA,KAAAxG,gBAAA,EACApsI,KAAAm7B,IAAA23G,EAAA,KAAA77H,OAAA,MACA,KAAAA,MAAA67H,EACA,KAAA3G,YAAA2G,EACAnJ,GAAA,KAAA1zH,aAAA,KAAAgB,OACA,KAAAw1H,sBAAA,GACA,KAAAW,kBAEA,ICprC2P,MCQ3P,IAAI,GAAY,EACd,GACA13H,EACAkF,GACA,EACA,KACA,WACA,MAIF,SAAe,G,QCbfm4H,GAAYC,QAAU,SAASC,GACzBF,GAAYC,QAAQE,WACxBD,EAAI70H,UAAU20H,GAAY/1I,KAAM+1I,GAClC,EAEsB,qBAAX5oI,QAA0BA,OAAO8oI,KAC1CF,GAAYC,QAAQ7oI,OAAO8oI,KAG7B,YCbA,M","sources":["webpack://pdf-elements/webpack/universalModuleDefinition","webpack://pdf-elements/./node_modules/core-js/internals/is-object.js","webpack://pdf-elements/./node_modules/core-js/internals/get-iterator.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.find.js","webpack://pdf-elements/./node_modules/core-js/internals/make-built-in.js","webpack://pdf-elements/./node_modules/core-js/internals/function-name.js","webpack://pdf-elements/./node_modules/core-js/internals/html.js","webpack://pdf-elements/./node_modules/core-js/internals/hidden-keys.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.flat-map.js","webpack://pdf-elements/./node_modules/core-js/internals/function-bind-native.js","webpack://pdf-elements/./node_modules/core-js/internals/an-instance.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-helper-throws-on-invalid-iterator.js","webpack://pdf-elements/./node_modules/core-js/internals/math-trunc.js","webpack://pdf-elements/./node_modules/core-js/internals/is-symbol.js","webpack://pdf-elements/./node_modules/core-js/internals/get-iterator-method.js","webpack://pdf-elements/./node_modules/core-js/internals/object-keys.js","webpack://pdf-elements/./node_modules/core-js/internals/internal-state.js","webpack://pdf-elements/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-close-all.js","webpack://pdf-elements/./node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack://pdf-elements/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.map.js","webpack://pdf-elements/./node_modules/core-js/internals/get-iterator-direct.js","webpack://pdf-elements/./node_modules/core-js/internals/object-keys-internal.js","webpack://pdf-elements/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://pdf-elements/./node_modules/core-js/internals/to-string-tag-support.js","webpack://pdf-elements/./node_modules/core-js/internals/classof-raw.js","webpack://pdf-elements/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://pdf-elements/./node_modules/core-js/internals/object-create.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.filter.js","webpack://pdf-elements/./node_modules/core-js/internals/create-iter-result-object.js","webpack://pdf-elements/./node_modules/core-js/internals/iterate.js","webpack://pdf-elements/./node_modules/core-js/internals/to-primitive.js","webpack://pdf-elements/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://pdf-elements/./node_modules/core-js/internals/is-forced.js","webpack://pdf-elements/./node_modules/core-js/internals/environment-user-agent.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-is-detached.js","webpack://pdf-elements/./node_modules/core-js/internals/uid.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.some.js","webpack://pdf-elements/./node_modules/core-js/internals/inspect-source.js","webpack://pdf-elements/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://pdf-elements/./node_modules/core-js/internals/descriptors.js","webpack://pdf-elements/./node_modules/core-js/internals/document-create-element.js","webpack://pdf-elements/./node_modules/core-js/modules/es.array.push.js","webpack://pdf-elements/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://pdf-elements/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://pdf-elements/./node_modules/core-js/internals/environment.js","webpack://pdf-elements/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://pdf-elements/./node_modules/core-js/internals/is-array.js","webpack://pdf-elements/./node_modules/core-js/internals/detach-transferable.js","webpack://pdf-elements/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://pdf-elements/./node_modules/core-js/internals/array-set-length.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-helper-without-closing-on-early-error.js","webpack://pdf-elements/./node_modules/core-js/internals/global-this.js","webpack://pdf-elements/./node_modules/core-js/internals/create-property.js","webpack://pdf-elements/./node_modules/core-js/internals/is-callable.js","webpack://pdf-elements/./node_modules/core-js/internals/object-define-property.js","webpack://pdf-elements/./node_modules/core-js/internals/own-keys.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-not-detached.js","webpack://pdf-elements/./node_modules/core-js/internals/to-indexed-object.js","webpack://pdf-elements/./node_modules/core-js/internals/to-absolute-index.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-transfer.js","webpack://pdf-elements/./node_modules/core-js/internals/shared.js","webpack://pdf-elements/./node_modules/core-js/internals/ie8-dom-define.js","webpack://pdf-elements/./node_modules/core-js/internals/get-method.js","webpack://pdf-elements/./node_modules/core-js/internals/function-bind-context.js","webpack://pdf-elements/./node_modules/core-js/internals/shared-key.js","webpack://pdf-elements/./node_modules/core-js/internals/environment-is-node.js","webpack://pdf-elements/./node_modules/core-js/internals/length-of-array-like.js","webpack://pdf-elements/./node_modules/core-js/internals/iterators.js","webpack://pdf-elements/./node_modules/core-js/internals/define-built-ins.js","webpack://pdf-elements/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://pdf-elements/./node_modules/core-js/internals/is-pure.js","webpack://pdf-elements/./node_modules/core-js/internals/export.js","webpack://pdf-elements/./node_modules/core-js/modules/es.array-buffer.detached.js","webpack://pdf-elements/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://pdf-elements/./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack://pdf-elements/./node_modules/core-js/internals/object-define-properties.js","webpack://pdf-elements/./node_modules/core-js/internals/try-to-string.js","webpack://pdf-elements/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://pdf-elements/./node_modules/core-js/internals/define-built-in.js","webpack://pdf-elements/./node_modules/core-js/internals/classof.js","webpack://pdf-elements/./node_modules/core-js/internals/to-property-key.js","webpack://pdf-elements/./node_modules/core-js/internals/create-property-descriptor.js","webpack://pdf-elements/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://pdf-elements/./node_modules/core-js/internals/indexed-object.js","webpack://pdf-elements/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-byte-length.js","webpack://pdf-elements/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.for-each.js","webpack://pdf-elements/./node_modules/core-js/internals/shared-store.js","webpack://pdf-elements/./node_modules/core-js/internals/iterators-core.js","webpack://pdf-elements/./node_modules/core-js/internals/to-index.js","webpack://pdf-elements/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://pdf-elements/./node_modules/core-js/internals/require-object-coercible.js","webpack://pdf-elements/./node_modules/core-js/internals/get-built-in.js","webpack://pdf-elements/./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://pdf-elements/./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js","webpack://pdf-elements/./node_modules/core-js/internals/to-length.js","webpack://pdf-elements/./node_modules/core-js/modules/es.array-buffer.transfer.js","webpack://pdf-elements/./node_modules/core-js/modules/es.iterator.constructor.js","webpack://pdf-elements/./node_modules/core-js/internals/well-known-symbol.js","webpack://pdf-elements/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://pdf-elements/./node_modules/core-js/internals/an-object.js","webpack://pdf-elements/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://pdf-elements/./node_modules/core-js/internals/get-iterator-flattenable.js","webpack://pdf-elements/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://pdf-elements/./node_modules/core-js/internals/enum-bug-keys.js","webpack://pdf-elements/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://pdf-elements/./node_modules/core-js/internals/to-object.js","webpack://pdf-elements/./node_modules/core-js/internals/fails.js","webpack://pdf-elements/./node_modules/core-js/internals/has-own-property.js","webpack://pdf-elements/./node_modules/core-js/internals/a-callable.js","webpack://pdf-elements/./node_modules/core-js/internals/get-built-in-node-module.js","webpack://pdf-elements/./node_modules/core-js/internals/define-global-property.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-create-proxy.js","webpack://pdf-elements/./node_modules/core-js/internals/function-uncurry-this.js","webpack://pdf-elements/./node_modules/core-js/internals/environment-v8-version.js","webpack://pdf-elements/./node_modules/core-js/internals/iterator-close.js","webpack://pdf-elements/./node_modules/core-js/internals/function-call.js","webpack://pdf-elements/./node_modules/core-js/internals/array-includes.js","webpack://pdf-elements/webpack/bootstrap","webpack://pdf-elements/webpack/runtime/define property getters","webpack://pdf-elements/webpack/runtime/hasOwnProperty shorthand","webpack://pdf-elements/webpack/runtime/publicPath","webpack://pdf-elements/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://pdf-elements/./src/components/PDFElements.vue","webpack://pdf-elements/./src/components/PDFPage.vue","webpack://pdf-elements/src/components/PDFPage.vue","webpack://pdf-elements/./src/components/PDFPage.vue?9f3a","webpack://pdf-elements/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://pdf-elements/./src/components/PDFPage.vue?84e5","webpack://pdf-elements/./src/components/DraggableElement.vue","webpack://pdf-elements/src/components/DraggableElement.vue","webpack://pdf-elements/./src/components/DraggableElement.vue?1ce3","webpack://pdf-elements/./src/components/DraggableElement.vue?7502","webpack://pdf-elements/./node_modules/pdfjs-dist/build/pdf.mjs","webpack://pdf-elements/./src/utils/asyncReader.js","webpack://pdf-elements/./src/utils/geometry.js","webpack://pdf-elements/./src/utils/pageBounds.js","webpack://pdf-elements/./src/utils/zoom.js","webpack://pdf-elements/./src/utils/objectStore.js","webpack://pdf-elements/./src/utils/measurements.js","webpack://pdf-elements/src/components/PDFElements.vue","webpack://pdf-elements/./src/components/PDFElements.vue?b26b","webpack://pdf-elements/./src/components/PDFElements.vue?32d4","webpack://pdf-elements/./src/index.js","webpack://pdf-elements/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdf-elements\"] = factory();\n\telse\n\t\troot[\"pdf-elements\"] = factory();\n})((typeof self !== 'undefined' ? self : this), () => {\nreturn ","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar findWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('find', TypeError);\n\n// `Iterator.prototype.find` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.find\n$({ target: 'Iterator', proto: true, real: true, forced: findWithoutClosingOnEarlyError }, {\n find: function find(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (findWithoutClosingOnEarlyError) return call(findWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop(value);\n }, { IS_RECORD: true, INTERRUPTED: true }).result;\n }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorFlattenable = require('../internals/get-iterator-flattenable');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar iteratorClose = require('../internals/iterator-close');\nvar IS_PURE = require('../internals/is-pure');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\n// Should not throw an error for an iterator without `return` method. Fixed in Safari 26.2\n// https://bugs.webkit.org/show_bug.cgi?id=297532\nfunction throwsOnIteratorWithoutReturn() {\n try {\n // eslint-disable-next-line es/no-map, es/no-iterator, es/no-iterator-prototype-flatmap -- required for testing\n var it = Iterator.prototype.flatMap.call(new Map([[4, 5]]).entries(), function (v) { return v; });\n it.next();\n it['return']();\n } catch (error) {\n return true;\n }\n}\n\nvar FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE\n && !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });\nvar flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\n\nvar FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError\n || throwsOnIteratorWithoutReturn();\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var mapper = this.mapper;\n var result, inner;\n\n while (true) {\n if (inner = this.inner) try {\n result = anObject(call(inner.next, inner.iterator));\n if (!result.done) return result.value;\n this.inner = null;\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n result = anObject(call(this.next, iterator));\n\n if (this.done = !!result.done) return;\n\n try {\n this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n flatMap: function flatMap(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper,\n inner: null\n });\n }\n});\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\n// Should throw an error on invalid iterator\n// https://issues.chromium.org/issues/336839115\nmodule.exports = function (methodName, argument) {\n // eslint-disable-next-line es/no-iterator -- required for testing\n var method = typeof Iterator == 'function' && Iterator.prototype[methodName];\n if (method) try {\n method.call({ next: null }, argument).next();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar iteratorClose = require('../internals/iterator-close');\n\nmodule.exports = function (iters, kind, value) {\n for (var i = iters.length - 1; i >= 0; i--) {\n if (iters[i] === undefined) continue;\n try {\n value = iteratorClose(iters[i].iterator, kind, value);\n } catch (error) {\n kind = 'throw';\n value = error;\n }\n }\n if (kind === 'throw') throw value;\n return value;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\nvar V8 = require('../internals/environment-v8-version');\nvar ENVIRONMENT = require('../internals/environment');\n\nvar structuredClone = globalThis.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\nvar IS_PURE = require('../internals/is-pure');\n\nvar MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('map', function () { /* empty */ });\nvar mapWithoutClosingOnEarlyError = !IS_PURE && !MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n\nvar FORCED = IS_PURE || MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || mapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.map\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n map: function map(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper\n });\n }\n});\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/ecma262/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('filter', function () { /* empty */ });\nvar filterWithoutClosingOnEarlyError = !IS_PURE && !FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n\nvar FORCED = IS_PURE || FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR || filterWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n});\n\n// `Iterator.prototype.filter` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.filter\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n filter: function filter(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n\n return new IteratorProxy(getIteratorDirect(this), {\n predicate: predicate\n });\n }\n});\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal');\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n try {\n // eslint-disable-next-line no-new -- thrower\n new DataView(O);\n return false;\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n some: function some(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getBuiltInNodeModule = require('../internals/get-built-in-node-module');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar $ArrayBuffer = globalThis.ArrayBuffer;\nvar $MessageChannel = globalThis.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function (transferable) {\n structuredClone(transferable, { transfer: [transferable] });\n };\n} else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = getBuiltInNodeModule('worker_threads');\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n\n $detach = function (transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// https://github.com/tc39/ecma262/pull/3467\nmodule.exports = function (METHOD_NAME, ExpectedError) {\n var Iterator = globalThis.Iterator;\n var IteratorPrototype = Iterator && Iterator.prototype;\n var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n\n var CLOSED = false;\n\n if (method) try {\n method.call({\n next: function () { return { done: true }; },\n 'return': function () { CLOSED = true; }\n }, -1);\n } catch (error) {\n // https://bugs.webkit.org/show_bug.cgi?id=291195\n if (!(error instanceof ExpectedError)) CLOSED = false;\n }\n\n if (!CLOSED) return method;\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n return it;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar notDetached = require('../internals/array-buffer-not-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n notDetached(arrayBuffer);\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\n// `ArrayBuffer.prototype.detached` getter\n// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar classof = require('../internals/classof-raw');\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar TypeError = globalThis.TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n return O.byteLength;\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');\n\nvar forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\n\n// `Iterator.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.foreach\n$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\n forEach: function forEach(fn) {\n anObject(this);\n try {\n aCallable(fn);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function (value) {\n fn(value, counter++);\n }, { IS_RECORD: true });\n }\n});\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.48.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',\n license: 'https://github.com/zloirock/core-js/blob/v3.48.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (obj, stringHandling) {\n if (!stringHandling || typeof obj !== 'string') anObject(obj);\n var method = getIteratorMethod(obj);\n return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar IS_NODE = require('../internals/environment-is-node');\n\nmodule.exports = function (name) {\n if (IS_NODE) {\n try {\n return globalThis.process.getBuiltinModule(name);\n } catch (error) { /* empty */ }\n try {\n // eslint-disable-next-line no-new-func -- safe\n return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\nvar iteratorCloseAll = require('../internals/iterator-close-all');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar NORMAL = 'normal';\nvar THROW = 'throw';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n // for simplification:\n // for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n // for `%IteratorHelperPrototype%.next` - just a value\n if (IS_ITERATOR) return state.nextHandler();\n if (state.done) return createIterResultObject(undefined, true);\n try {\n var result = state.nextHandler();\n return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n 'return': function () {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, 'return');\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (state.openIters) try {\n iteratorCloseAll(state.openIters, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (iterator) iteratorClose(iterator, NORMAL);\n return createIterResultObject(undefined, true);\n }\n });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n var IteratorProxy = function Iterator(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n return IteratorProxy;\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"pdf-elements-root\",style:({ width: _vm.width, height: _vm.height })},[(_vm.pdfDocuments.length)?_c('div',{staticClass:\"pages-container\"},_vm._l((_vm.pdfDocuments),function(pdfDoc,docIndex){return _c('div',{key:docIndex},_vm._l((pdfDoc.pages),function(page,pIndex){return _c('div',{key:`${docIndex}-${pIndex}`,staticClass:\"page-slot\"},[_c('div',{staticClass:\"page-wrapper\",on:{\"mousedown\":function($event){return _vm.selectPage(docIndex, pIndex)},\"touchstart\":function($event){return _vm.selectPage(docIndex, pIndex)}}},[_c('div',{staticClass:\"page-canvas\",class:{ 'shadow-outline': docIndex === _vm.selectedDocIndex && pIndex === _vm.selectedPageIndex }},[_c('PDFPage',{ref:`page${docIndex}-${pIndex}`,refInFor:true,attrs:{\"page\":page,\"scale\":_vm.scale},on:{\"onMeasure\":function($event){return _vm.onMeasure($event, docIndex, pIndex)}}}),_c('div',{staticClass:\"overlay\",on:{\"mousemove\":_vm.handleMouseMove,\"touchmove\":_vm.handleMouseMove,\"click\":function($event){return _vm.handleOverlayClick(docIndex, pIndex, $event)},\"touchend\":function($event){return _vm.handleOverlayClick(docIndex, pIndex, $event)}}},[(_vm.isAddingMode && _vm.previewPageDocIndex === docIndex && _vm.previewPageIndex === pIndex && _vm.previewElement && _vm.previewVisible)?_c('div',{staticClass:\"preview-element\",style:({\n left: `${_vm.previewPosition.x * _vm.previewScale.x}px`,\n top: `${_vm.previewPosition.y * _vm.previewScale.y}px`,\n width: `${_vm.previewElement.width * _vm.previewScale.x}px`,\n height: `${_vm.previewElement.height * _vm.previewScale.y}px`,\n })},[_vm._t(_vm.previewElement.type ? `element-${_vm.previewElement.type}` : 'custom',function(){return [_vm._t(\"custom\",null,{\"object\":_vm.previewElement,\"isSelected\":false})]},{\"object\":_vm.previewElement,\"isSelected\":false})],2):_vm._e(),_vm._l((pdfDoc.allObjects[pIndex]),function(object){return _c('DraggableElement',{key:object.id,ref:`draggable${docIndex}-${pIndex}-${object.id}`,refInFor:true,attrs:{\"object\":object,\"pages-scale\":_vm.getDisplayedPageScale(docIndex, pIndex),\"page-width\":_vm.getPageWidth(docIndex, pIndex),\"page-height\":_vm.getPageHeight(docIndex, pIndex),\"read-only\":_vm.readOnly,\"on-update\":(payload) => _vm.updateObject(docIndex, object.id, payload),\"on-delete\":() => _vm.deleteObject(docIndex, object.id),\"on-duplicate\":() => _vm.duplicateObject(docIndex, object.id),\"on-drag-start\":(mouseX, mouseY, pointerOffset, dragShift) => _vm.startDraggingElement(docIndex, pIndex, object, mouseX, mouseY, pointerOffset, dragShift),\"on-drag-move\":_vm.updateDraggingPosition,\"on-drag-end\":_vm.stopDraggingElement,\"is-being-dragged-globally\":_vm.isDraggingElement && _vm.draggingObject && _vm.draggingObject.id === object.id,\"dragging-client-pos\":_vm.draggingClientPosition,\"current-doc-index\":docIndex,\"current-page-index\":pIndex,\"global-drag-doc-index\":_vm.draggingDocIndex,\"global-drag-page-index\":_vm.draggingPageIndex,\"show-selection-ui\":_vm.showSelectionHandles && !_vm.hideSelectionUI && object.resizable !== false,\"show-default-actions\":_vm.showElementActions && !_vm.hideSelectionUI,\"ignore-click-outside-selectors\":_vm.ignoreClickOutsideSelectors},scopedSlots:_vm._u([{key:\"default\",fn:function(slotProps){return [_vm._t(slotProps.object.type ? `element-${slotProps.object.type}` : 'custom',function(){return [_vm._t(\"custom\",null,{\"object\":slotProps.object,\"onDelete\":slotProps.onDelete,\"onResize\":slotProps.onResize})]},{\"object\":slotProps.object,\"onDelete\":slotProps.onDelete,\"onResize\":slotProps.onResize})]}},{key:\"actions\",fn:function(slotProps){return [_vm._t(\"actions\",null,{\"object\":slotProps.object,\"onDelete\":slotProps.onDelete,\"onDuplicate\":slotProps.onDuplicate})]}}],null,true)})})],2)],1),(_vm.showPageFooter)?_c('div',{staticClass:\"page-footer\"},[_c('span',[_vm._v(_vm._s(pdfDoc.name))]),_c('span',[_vm._v(_vm._s(_vm.formatPageNumber(pIndex + 1, pdfDoc.numPages)))])]):_vm._e()])])}),0)}),0):_vm._e(),(_vm.isDraggingElement && _vm.draggingObject)?_c('div',{staticClass:\"drag-portal\",style:({\n position: 'fixed',\n left: `${_vm.draggingClientPosition.x}px`,\n top: `${_vm.draggingClientPosition.y}px`,\n width: `${_vm.draggingObject.width * _vm.draggingScale}px`,\n height: `${_vm.draggingObject.height * _vm.draggingScale}px`,\n pointerEvents: 'none',\n })},[_vm._t(_vm.draggingObject.type ? `element-${_vm.draggingObject.type}` : 'custom',function(){return [_vm._t(\"custom\",null,{\"object\":_vm.draggingObject,\"isSelected\":false})]},{\"object\":_vm.draggingObject,\"isSelected\":false})],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('canvas',{ref:\"canvas\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\nSPDX-FileCopyrightText: 2026 LibreCode coop and contributors\nSPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n <canvas ref=\"canvas\" />\n</template>\n\n<script>\nexport default {\n name: 'PDFPage',\n props: {\n page: {\n type: Promise,\n required: true,\n },\n scale: {\n type: Number,\n default: 1,\n },\n },\n data() {\n return {\n dynamicScale: this.scale,\n isRendering: false,\n pendingRender: false,\n renderTask: null,\n }\n },\n watch: {\n scale(newScale) {\n this.dynamicScale = newScale\n this.render()\n },\n },\n mounted() {\n this.render()\n },\n beforeUnmount() {\n if (this.renderTask) {\n try {\n this.renderTask.cancel()\n } catch (e) {\n // Ignore render cancellation errors.\n }\n this.renderTask = null\n }\n },\n methods: {\n getCanvasMeasurement() {\n return {\n canvasWidth: this.$refs.canvas.width,\n canvasHeight: this.$refs.canvas.height,\n }\n },\n measure() {\n this.$emit('onMeasure', {\n scale: this.dynamicScale,\n })\n },\n async render() {\n if (this.isRendering) {\n this.pendingRender = true\n return\n }\n this.isRendering = true\n this.pendingRender = false\n try {\n const _page = await this.page\n const canvas = this.$refs.canvas\n if (!canvas) return\n if (this.renderTask) {\n try {\n this.renderTask.cancel()\n } catch (e) {\n // Ignore render cancellation errors.\n }\n this.renderTask = null\n }\n const context = canvas.getContext('2d')\n const viewport = _page.getViewport({\n scale: this.dynamicScale,\n })\n canvas.width = viewport.width\n canvas.height = viewport.height\n this.renderTask = _page.render({\n canvasContext: context,\n viewport,\n })\n await this.renderTask.promise\n this.measure()\n } finally {\n this.isRendering = false\n this.renderTask = null\n if (this.pendingRender) {\n this.pendingRender = false\n this.render()\n }\n }\n },\n },\n}\n</script>\n\n<style scoped>\ncanvas {\n display: block;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PDFPage.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PDFPage.vue?vue&type=script&lang=js\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./PDFPage.vue?vue&type=template&id=acf7a444&scoped=true\"\nimport script from \"./PDFPage.vue?vue&type=script&lang=js\"\nexport * from \"./PDFPage.vue?vue&type=script&lang=js\"\nimport style0 from \"./PDFPage.vue?vue&type=style&index=0&id=acf7a444&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"acf7a444\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"draggable-wrapper\"},[(_vm.isSelected && !_vm.isBeingDraggedGlobally && _vm.showSelectionUi && _vm.showDefaultActions)?_c('div',{staticClass:\"actions-toolbar\",style:(_vm.toolbarStyle)},[_vm._t(\"actions\",function(){return [_c('button',{staticClass:\"action-btn\",attrs:{\"type\":\"button\",\"title\":\"Duplicate\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onDuplicate.apply(null, arguments)}}},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\"}},[_c('path',{attrs:{\"d\":\"M16 1H6a2 2 0 0 0-2 2v12h2V3h10V1zm3 4H10a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H10V7h9v14z\"}})])]),_c('button',{staticClass:\"action-btn\",attrs:{\"type\":\"button\",\"title\":\"Delete\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onDelete.apply(null, arguments)}}},[_c('svg',{attrs:{\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"}},[_c('path',{attrs:{\"d\":\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.5a.5.5 0 0 0 0 1h.5v10.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V3.5h.5a.5.5 0 0 0 0-1H11Zm1 1v10.5a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5V3.5h8Z\"}})])])]},{\"object\":_vm.object,\"onDelete\":_vm.onDelete,\"onDuplicate\":_vm.onDuplicate})],2):_vm._e(),_c('div',{staticClass:\"draggable-element\",class:{ selected: _vm.isSelected && _vm.showSelectionUi },style:([_vm.elementStyle, _vm.dragElementStyle]),attrs:{\"draggable\":\"false\"},on:{\"dragstart\":function($event){$event.preventDefault();},\"mousedown\":_vm.handleElementClick,\"touchstart\":_vm.handleElementClick}},[_vm._t(\"default\",null,{\"object\":_vm.object,\"isSelected\":_vm.isSelected,\"onDelete\":_vm.onDelete,\"onResize\":_vm.startResizeFromSlot}),(_vm.isSelected && _vm.showSelectionUi)?_vm._l((_vm.resizeDirections),function(dir){return _c('button',{key:dir,staticClass:\"resize-handle\",class:`handle-${dir}`,attrs:{\"type\":\"button\"},on:{\"mousedown\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.startResize(dir, $event)},\"touchstart\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.startResize(dir, $event)}}})}):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\nSPDX-FileCopyrightText: 2026 LibreCode coop and contributors\nSPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n <div class=\"draggable-wrapper\">\n <div\n v-if=\"isSelected && !isBeingDraggedGlobally && showSelectionUi && showDefaultActions\"\n class=\"actions-toolbar\"\n :style=\"toolbarStyle\"\n >\n <slot name=\"actions\" :object=\"object\" :onDelete=\"onDelete\" :onDuplicate=\"onDuplicate\">\n <button class=\"action-btn\" type=\"button\" title=\"Duplicate\" @click.stop=\"onDuplicate\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M16 1H6a2 2 0 0 0-2 2v12h2V3h10V1zm3 4H10a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H10V7h9v14z\"/>\n </svg>\n </button>\n <button class=\"action-btn\" type=\"button\" title=\"Delete\" @click.stop=\"onDelete\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.5a.5.5 0 0 0 0 1h.5v10.5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5V3.5h.5a.5.5 0 0 0 0-1H11Zm1 1v10.5a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5V3.5h8Z\"/>\n </svg>\n </button>\n </slot>\n </div>\n <div\n class=\"draggable-element\"\n draggable=\"false\"\n @dragstart.prevent\n :class=\"{ selected: isSelected && showSelectionUi }\"\n :style=\"[elementStyle, dragElementStyle]\"\n @mousedown=\"handleElementClick\"\n @touchstart=\"handleElementClick\"\n >\n <slot\n :object=\"object\"\n :isSelected=\"isSelected\"\n :onDelete=\"onDelete\"\n :onResize=\"startResizeFromSlot\"\n />\n\n <template v-if=\"isSelected && showSelectionUi\">\n <button\n v-for=\"dir in resizeDirections\"\n :key=\"dir\"\n class=\"resize-handle\"\n :class=\"`handle-${dir}`\"\n type=\"button\"\n @mousedown.stop.prevent=\"startResize(dir, $event)\"\n @touchstart.stop.prevent=\"startResize(dir, $event)\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'DraggableElement',\n props: {\n object: {\n type: Object,\n required: true,\n },\n pagesScale: {\n type: Number,\n default: 1,\n },\n pageWidth: {\n type: Number,\n required: true,\n },\n pageHeight: {\n type: Number,\n required: true,\n },\n onUpdate: {\n type: Function,\n default: () => {},\n },\n onDelete: {\n type: Function,\n default: () => {},\n },\n onDuplicate: {\n type: Function,\n default: () => {},\n },\n onDragStart: {\n type: Function,\n default: () => {},\n },\n onDragMove: {\n type: Function,\n default: () => {},\n },\n onDragEnd: {\n type: Function,\n default: () => {},\n },\n isBeingDraggedGlobally: {\n type: Boolean,\n default: false,\n },\n draggingClientPos: {\n type: Object,\n default: () => ({ x: 0, y: 0 }),\n },\n currentDocIndex: {\n type: Number,\n default: -1,\n },\n currentPageIndex: {\n type: Number,\n default: -1,\n },\n globalDragDocIndex: {\n type: Number,\n default: -1,\n },\n globalDragPageIndex: {\n type: Number,\n default: -1,\n },\n showSelectionUi: {\n type: Boolean,\n default: true,\n },\n showDefaultActions: {\n type: Boolean,\n default: true,\n },\n readOnly: {\n type: Boolean,\n default: false,\n },\n ignoreClickOutsideSelectors: {\n type: Array,\n default: () => [],\n },\n },\n data() {\n return {\n isSelected: false,\n mode: 'idle',\n direction: '',\n startX: 0,\n startY: 0,\n startLeft: 0,\n startTop: 0,\n startWidth: 0,\n startHeight: 0,\n offsetX: 0,\n offsetY: 0,\n resizeOffsetX: 0,\n resizeOffsetY: 0,\n resizeOffsetW: 0,\n resizeOffsetH: 0,\n aspectRatio: 1,\n lastMouseX: 0,\n lastMouseY: 0,\n pointerOffsetDoc: { x: 0, y: 0 },\n currentPageRect: null,\n rafId: null,\n }\n },\n computed: {\n resizeDirections() {\n return ['top-left', 'top-right', 'bottom-left', 'bottom-right']\n },\n elementStyle() {\n const scale = this.pagesScale || 1\n const isDragging = this.mode === 'drag'\n const isResizing = this.mode === 'resize'\n const offsetX = isDragging ? this.offsetX : 0\n const offsetY = isDragging ? this.offsetY : 0\n const resizeOffsetX = isResizing ? this.resizeOffsetX : 0\n const resizeOffsetY = isResizing ? this.resizeOffsetY : 0\n const resizeOffsetW = isResizing ? this.resizeOffsetW : 0\n const resizeOffsetH = isResizing ? this.resizeOffsetH : 0\n const currentX = this.object.x + offsetX + resizeOffsetX\n const currentY = this.object.y + offsetY + resizeOffsetY\n const currentWidth = this.object.width + resizeOffsetW\n const currentHeight = this.object.height + resizeOffsetH\n return {\n left: `${currentX * scale}px`,\n top: `${currentY * scale}px`,\n width: `${currentWidth * scale}px`,\n height: `${currentHeight * scale}px`,\n pointerEvents: this.readOnly ? 'none' : 'auto',\n }\n },\n toolbarStyle() {\n const scale = this.pagesScale || 1\n const isDragging = this.mode === 'drag'\n const isResizing = this.mode === 'resize'\n const offsetX = isDragging ? this.offsetX : 0\n const offsetY = isDragging ? this.offsetY : 0\n const resizeOffsetX = isResizing ? this.resizeOffsetX : 0\n const resizeOffsetY = isResizing ? this.resizeOffsetY : 0\n const resizeOffsetW = isResizing ? this.resizeOffsetW : 0\n const x = this.object.x + offsetX + resizeOffsetX\n const y = this.object.y + offsetY + resizeOffsetY\n const width = this.object.width + resizeOffsetW\n const toolbarOffset = 60\n const nextTop = y - toolbarOffset\n const top = nextTop < 0 ? (y + 8) : nextTop\n return {\n left: `${(x + width / 2) * scale}px`,\n top: `${top * scale}px`,\n transform: 'translateX(-50%)',\n }\n },\n dragElementStyle() {\n if (!this.isBeingDraggedGlobally || !this.draggingClientPos) {\n return {}\n }\n return {\n opacity: 0,\n pointerEvents: 'none',\n }\n },\n },\n mounted() {\n this.handleClickOutside = this.handleClickOutside.bind(this)\n this.boundHandleMove = this.handleMove.bind(this)\n this.boundStopInteraction = this.stopInteraction.bind(this)\n document.addEventListener('mousedown', this.handleClickOutside)\n document.addEventListener('touchstart', this.handleClickOutside)\n },\n beforeUnmount() {\n document.removeEventListener('mousedown', this.handleClickOutside)\n document.removeEventListener('touchstart', this.handleClickOutside)\n window.removeEventListener('mousemove', this.boundHandleMove)\n window.removeEventListener('mouseup', this.boundStopInteraction)\n window.removeEventListener('touchmove', this.boundHandleMove)\n window.removeEventListener('touchend', this.boundStopInteraction)\n if (this.rafId) cancelAnimationFrame(this.rafId)\n },\n methods: {\n handleElementClick(event) {\n if (this.readOnly) {\n return\n }\n if (event.target.closest('.delete-handle') || event.target.closest('[data-stop-drag]') || event.target.closest('.actions-toolbar')) {\n return\n }\n event.preventDefault()\n this.isSelected = true\n this.startDrag(event)\n },\n handleClickOutside(event) {\n const selectors = Array.isArray(this.ignoreClickOutsideSelectors)\n ? this.ignoreClickOutsideSelectors\n : []\n for (const selector of selectors) {\n if (selector && event?.target?.closest?.(selector)) {\n return\n }\n }\n if (this.$el && !this.$el.contains(event.target)) {\n this.isSelected = false\n }\n },\n startResizeFromSlot(direction, event) {\n if (!direction || !event) return\n this.startResize(direction, event)\n },\n startDrag(event) {\n if (this.readOnly) return\n if (event.target.classList.contains('delete')) return\n if (event.target.classList.contains('resize-handle')) return\n this.mode = 'drag'\n this.startX = event.type.includes('touch') ? event.touches[0].clientX : event.clientX\n this.startY = event.type.includes('touch') ? event.touches[0].clientY : event.clientY\n this.startLeft = this.object.x\n this.startTop = this.object.y\n this.offsetX = 0\n this.offsetY = 0\n this.resetResizeOffsets()\n\n const elementRect = this.$el.querySelector('.draggable-element').getBoundingClientRect()\n\n this.pointerOffsetDoc.x = this.startX - elementRect.left\n this.pointerOffsetDoc.y = this.startY - elementRect.top\n\n const pageRect = this.capturePageRect()\n this.currentPageRect = pageRect\n let dragElementShift = { x: 0, y: 0 }\n if (pageRect) {\n const expectedLeft = pageRect.left + (this.object.x * this.pagesScale)\n const expectedTop = pageRect.top + (this.object.y * this.pagesScale)\n dragElementShift = {\n x: elementRect.left - expectedLeft,\n y: elementRect.top - expectedTop,\n }\n }\n\n this.onDragStart(this.startX, this.startY, { ...this.pointerOffsetDoc }, dragElementShift)\n\n window.addEventListener('mousemove', this.boundHandleMove)\n window.addEventListener('mouseup', this.boundStopInteraction)\n window.addEventListener('touchmove', this.boundHandleMove)\n window.addEventListener('touchend', this.boundStopInteraction)\n },\n startResize(direction, event) {\n if (this.readOnly) return\n this.mode = 'resize'\n this.direction = direction\n this.startX = event.type.includes('touch') ? event.touches[0].clientX : event.clientX\n this.startY = event.type.includes('touch') ? event.touches[0].clientY : event.clientY\n this.startLeft = this.object.x\n this.startTop = this.object.y\n this.startWidth = this.object.width\n this.startHeight = this.object.height\n this.aspectRatio = this.startWidth / this.startHeight\n this.offsetX = 0\n this.offsetY = 0\n this.resetResizeOffsets()\n\n window.addEventListener('mousemove', this.boundHandleMove)\n window.addEventListener('mouseup', this.boundStopInteraction)\n window.addEventListener('touchmove', this.boundHandleMove)\n window.addEventListener('touchend', this.boundStopInteraction)\n },\n handleMove(event) {\n if (this.mode === 'idle') return\n event.preventDefault()\n\n if (this.rafId) return\n\n this.rafId = requestAnimationFrame(() => {\n const currentX = event.type.includes('touch') ? event.touches[0]?.clientX : event.clientX\n const currentY = event.type.includes('touch') ? event.touches[0]?.clientY : event.clientY\n\n if (currentX === undefined || currentY === undefined) return\n\n this.lastMouseX = currentX\n this.lastMouseY = currentY\n const deltaX = (currentX - this.startX) / this.pagesScale\n const deltaY = (currentY - this.startY) / this.pagesScale\n\n if (this.mode === 'drag') {\n const pageRect = this.currentPageRect\n if (pageRect) {\n const newElementLeft = currentX - this.pointerOffsetDoc.x\n const newElementTop = currentY - this.pointerOffsetDoc.y\n\n const newX = (newElementLeft - pageRect.left) / this.pagesScale\n const newY = (newElementTop - pageRect.top) / this.pagesScale\n\n this.offsetX = newX - this.object.x\n this.offsetY = newY - this.object.y\n } else {\n this.offsetX = deltaX\n this.offsetY = deltaY\n }\n this.onDragMove(currentX, currentY)\n if (this.isBeingDraggedGlobally) {\n this.onUpdate({\n _globalDrag: true,\n _mouseX: currentX,\n _mouseY: currentY,\n })\n }\n this.rafId = null\n return\n }\n\n const minSize = 16 / (this.pagesScale || 1)\n let newWidth = this.startWidth\n let newHeight = this.startHeight\n let newLeft = this.startLeft\n let newTop = this.startTop\n\n const widthChange = this.direction.includes('right') ? deltaX : this.direction.includes('left') ? -deltaX : 0\n newWidth = this.startWidth + widthChange\n if (newWidth < minSize) newWidth = minSize\n newHeight = newWidth / this.aspectRatio\n\n if (this.direction.includes('left')) {\n newLeft = this.startLeft + (this.startWidth - newWidth)\n if (newLeft < 0) {\n const overflow = -newLeft\n newLeft = 0\n newWidth = newWidth - overflow\n newHeight = newWidth / this.aspectRatio\n }\n }\n\n if (this.direction.includes('top')) {\n newTop = this.startTop + (this.startHeight - newHeight)\n if (newTop < 0) {\n const overflow = -newTop\n newTop = 0\n newHeight = newHeight - overflow\n newWidth = newHeight * this.aspectRatio\n if (this.direction.includes('left')) {\n newLeft = this.startLeft + (this.startWidth - newWidth)\n }\n }\n }\n\n if (newLeft + newWidth > this.pageWidth) {\n const excess = newLeft + newWidth - this.pageWidth\n newWidth -= excess\n newHeight = newWidth / this.aspectRatio\n }\n if (newTop + newHeight > this.pageHeight) {\n const excess = newTop + newHeight - this.pageHeight\n newHeight -= excess\n newWidth = newHeight * this.aspectRatio\n if (this.direction.includes('left')) {\n newLeft = this.startLeft + (this.startWidth - newWidth)\n }\n }\n\n this.resizeOffsetX = newLeft - this.object.x\n this.resizeOffsetY = newTop - this.object.y\n this.resizeOffsetW = newWidth - this.object.width\n this.resizeOffsetH = newHeight - this.object.height\n\n this.rafId = null\n })\n },\n stopInteraction() {\n if (this.mode === 'idle') return\n\n if (this.mode === 'drag' && (this.offsetX !== 0 || this.offsetY !== 0)) {\n if (this.isBeingDraggedGlobally) {\n this.onUpdate({\n _globalDrag: true,\n _mouseX: this.lastMouseX,\n _mouseY: this.lastMouseY,\n })\n } else {\n const x = Math.max(0, Math.min(this.object.x + this.offsetX, this.pageWidth - this.object.width))\n const y = Math.max(0, Math.min(this.object.y + this.offsetY, this.pageHeight - this.object.height))\n this.onUpdate({ x, y })\n }\n }\n\n if (this.mode === 'resize' && (this.resizeOffsetW !== 0 || this.resizeOffsetH !== 0 || this.resizeOffsetX !== 0 || this.resizeOffsetY !== 0)) {\n const x = this.object.x + this.resizeOffsetX\n const y = this.object.y + this.resizeOffsetY\n const width = this.object.width + this.resizeOffsetW\n const height = this.object.height + this.resizeOffsetH\n this.onUpdate({ x, y, width, height })\n }\n\n this.resetOffsets()\n this.onDragEnd()\n window.removeEventListener('mousemove', this.boundHandleMove)\n window.removeEventListener('mouseup', this.boundStopInteraction)\n window.removeEventListener('touchmove', this.boundHandleMove)\n window.removeEventListener('touchend', this.boundStopInteraction)\n },\n capturePageRect() {\n const wrapper = this.$el.closest('.page-wrapper')\n if (!wrapper) return null\n const canvas = wrapper.querySelector('canvas')\n return canvas ? canvas.getBoundingClientRect() : null\n },\n resetResizeOffsets() {\n this.resizeOffsetX = 0\n this.resizeOffsetY = 0\n this.resizeOffsetW = 0\n this.resizeOffsetH = 0\n },\n resetOffsets() {\n this.mode = 'idle'\n this.offsetX = 0\n this.offsetY = 0\n this.resetResizeOffsets()\n this.pointerOffsetDoc = { x: 0, y: 0 }\n this.currentPageRect = null\n },\n },\n}\n</script>\n\n<style scoped>\n.draggable-wrapper {\n position: relative;\n}\n.actions-toolbar {\n position: absolute;\n display: flex;\n gap: 4px;\n background: #1f2937;\n border-radius: 6px;\n padding: 6px 8px;\n box-shadow: 0 4px 12px -2px rgba(0, 0, 0, 0.15), 0 2px 6px -2px rgba(0, 0, 0, 0.1);\n z-index: 5;\n white-space: nowrap;\n}\n.action-btn {\n border: none;\n background: transparent;\n color: #ffffff;\n padding: 4px;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 120ms ease;\n}\n.action-btn:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n.draggable-element {\n position: absolute;\n cursor: move;\n user-select: none;\n border-radius: 6px;\n overflow: visible;\n}\n.draggable-element.selected {\n box-shadow: inset 0 0 0 2px #2563eb;\n}\n.resize-handle {\n all: unset;\n position: absolute;\n width: 12px;\n height: 12px;\n min-width: 0;\n min-height: 0;\n background: #2563eb;\n border: 1px solid #ffffff;\n border-radius: 3px;\n padding: 0;\n margin: 0;\n line-height: 0;\n font-size: 0;\n box-sizing: border-box;\n display: block;\n appearance: none;\n cursor: pointer;\n z-index: 5;\n}\n.handle-top-left {\n top: -7px;\n left: -7px;\n cursor: nwse-resize;\n}\n.handle-top-right {\n top: -7px;\n right: -7px;\n cursor: nesw-resize;\n}\n.handle-bottom-left {\n bottom: -7px;\n left: -7px;\n cursor: nesw-resize;\n}\n.handle-bottom-right {\n bottom: -7px;\n right: -7px;\n cursor: nwse-resize;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DraggableElement.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DraggableElement.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DraggableElement.vue?vue&type=template&id=9f1fd9e4&scoped=true\"\nimport script from \"./DraggableElement.vue?vue&type=script&lang=js\"\nexport * from \"./DraggableElement.vue?vue&type=script&lang=js\"\nimport style0 from \"./DraggableElement.vue?vue&type=style&index=0&id=9f1fd9e4&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9f1fd9e4\",\n null\n \n)\n\nexport default component.exports","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 5.4.530\n * pdfjsBuild = 50cc4adac\n */\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = {};\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst MeshFigureType = {\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static domMatrixToTransform(dm) {\n return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n Promise.try = function (fn, ...args) {\n return new Promise(resolve => {\n resolve(fn(...args));\n });\n };\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function (numbers) {\n return numbers.reduce((a, b) => a + b, 0);\n };\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/display_utils.js\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {\n return null;\n }\n }\n }\n }\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = decoded.split(\"/\").at(-1);\n if (decoded.test(/^\\.pdf$/i)) {\n return decoded;\n }\n return name;\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = newURL.pathname.split(\"/\").at(-1);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const values = Array.from(newURL.searchParams.values()).reverse();\n for (const value of values) {\n if (pdfRegex.test(value)) {\n return decode(value);\n }\n }\n const keys = Array.from(newURL.searchParams.keys()).reverse();\n for (const key of keys) {\n if (pdfRegex.test(key)) {\n return decode(key);\n }\n }\n }\n if (newURL.hash) {\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const hashFilename = reFilename.exec(newURL.hash);\n if (hashFilename) {\n return decode(hashFilename[0]);\n }\n }\n return defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (input instanceof Date) {\n return input;\n }\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(r, g, b, opacity) {\n opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n const white = 255 * (1 - opacity);\n r = Math.round(r * opacity + white);\n g = Math.round(g * opacity + white);\n b = Math.round(b * opacity + white);\n return [r, g, b];\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 0x100 + baseColor[2] * 0x10000 + fixedColor[0] * 0x1000000 + fixedColor[1] * 0x100000000 + fixedColor[2] * 0x10000000000;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 0.005;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstElementChild.classList.add(\"richText\", className);\n container.append(fragment);\n}\nfunction makePathFromDrawOPS(data) {\n const path = new Path2D();\n if (!data) {\n return path;\n }\n for (let i = 0, ii = data.length; i < ii;) {\n switch (data[i++]) {\n case DrawOPS.moveTo:\n path.moveTo(data[i++], data[i++]);\n break;\n case DrawOPS.lineTo:\n path.lineTo(data[i++], data[i++]);\n break;\n case DrawOPS.curveTo:\n path.bezierCurveTo(data[i++], data[i++], data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.quadraticCurveTo:\n path.quadraticCurveTo(data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.closePath:\n path.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${data[i - 1]}`);\n break;\n }\n }\n return path;\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n return true;\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n }\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n if (tool) {\n this.addColorPicker(tool);\n }\n break;\n case \"altText\":\n if (tool) {\n await this.addAltText(tool);\n }\n break;\n case \"editSignature\":\n if (tool) {\n await this.addEditSignatureButton(tool);\n }\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n if (tool) {\n this.addComment(tool);\n }\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n if (!tool && name === \"comment\") {\n return;\n }\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\n }\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass CurrentPointers {\n static #pointerId = NaN;\n static #pointerIds = null;\n static #moveTimestamp = NaN;\n static #pointerType = null;\n static initializeAndAddPointerId(pointerId) {\n (CurrentPointers.#pointerIds ||= new Set()).add(pointerId);\n }\n static setPointer(pointerType, pointerId) {\n CurrentPointers.#pointerId ||= pointerId;\n CurrentPointers.#pointerType ??= pointerType;\n }\n static setTimeStamp(timeStamp) {\n CurrentPointers.#moveTimestamp = timeStamp;\n }\n static isSamePointerId(pointerId) {\n return CurrentPointers.#pointerId === pointerId;\n }\n static isSamePointerIdOrRemove(pointerId) {\n if (CurrentPointers.#pointerId === pointerId) {\n return true;\n }\n CurrentPointers.#pointerIds?.delete(pointerId);\n return false;\n }\n static isSamePointerType(pointerType) {\n return CurrentPointers.#pointerType === pointerType;\n }\n static isInitializedAndDifferentPointerType(pointerType) {\n return CurrentPointers.#pointerType !== null && !CurrentPointers.isSamePointerType(pointerType);\n }\n static isSameTimeStamp(timeStamp) {\n return CurrentPointers.#moveTimestamp === timeStamp;\n }\n static isUsingMultiplePointers() {\n return CurrentPointers.#pointerIds?.size >= 1;\n }\n static clearPointerType() {\n CurrentPointers.#pointerType = null;\n }\n static clearPointerIds() {\n CurrentPointers.#pointerId = NaN;\n CurrentPointers.#pointerIds = null;\n }\n static clearTimeStamp() {\n CurrentPointers.#moveTimestamp = NaN;\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditableAnnotations = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #viewerAlert = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, viewerAlert, altTextManager, commentManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n commentManager?.setSidebarUiManager(this);\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n this.#pdfDocument = null;\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get _highlightColors() {\n return shadow(this, \"_highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n toggleComment(editor, isSelected, visibility = undefined) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = evt => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\", comment = false) {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n const editor = layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n #displayFloatingToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n if (this.#isPointerDown) {\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.setEditingState(true);\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.setEditingState(false);\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n case \"commentSelection\":\n this.commentSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromUser = false, isFromKeyboard = false, mustEnterInEditMode = false, editComment = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n if (isFromUser) {\n CurrentPointers.clearPointerType();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map(editorClass => editorClass._editorType)));\n const elementIds = new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n *getEditors(pageIndex) {\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.uid\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/comment.js\n\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", e => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", e => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", event => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = new Date();\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {}\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || new Date();\n this.modificationDate = parameters.modificationDate || null;\n this.canAddComment = true;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get uid() {\n return this.annotationElementId || this.id;\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n this.setDims();\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\n this._editToolbar?.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n createAltText() {\n if (!this.#altText) {\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n }\n return this.#altText;\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.canAddComment ? this.#comment ||= new Comment(this) : null;\n }\n addStandaloneCommentButton() {\n if (!this._uiManager.hasCommentManager()) {\n return;\n }\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(text) {\n this.#comment ||= new Comment(this);\n this.#comment.data = text;\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = undefined) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [,,, trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._uiManager.toggleComment(this, true, false);\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n this.hideCommentPopup();\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment?.setCommentButtonStates(options);\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstElementChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstElementChild.before(this.#resizersDiv.lastElementChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstElementChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n this.hideCommentPopup();\n }\n hideCommentPopup() {\n if (this.hasComment) {\n this._uiManager.toggleComment(null);\n }\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.uid\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstElementChild\n } = annotation.container;\n if (firstElementChild?.nodeName === \"DIV\" && firstElementChild.classList.contains(\"annotationContent\")) {\n firstElementChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #editorsMap = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n const storedValue = this.#storage.get(key);\n if (storedValue === undefined) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor) {\n (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n if (typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n #fontData;\n constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n this.compiledGlyphs = Object.create(null);\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (extra) {\n Object.assign(this, extra);\n }\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = makePathFromDrawOPS(cmds?.path);\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace ?? false;\n }\n set disableFontFace(value) {\n shadow(this, \"disableFontFace\", !!value);\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties ?? false;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n set bbox(bbox) {\n shadow(this, \"bbox\", bbox);\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\n\n;// ./src/shared/obj-bin-transform.js\n\nclass CssFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n return buffer;\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n #readString(index) {\n assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle,\n encodedStyleWeight,\n lengthEstimate = 1 + stringsLength;\n if (info.style) {\n encodedStyleStyle = encoder.encode(info.style.style);\n encodedStyleWeight = encoder.encode(info.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"SubstitionInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static #OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n #buffer;\n #decoder;\n #view;\n constructor({\n data,\n extra\n }) {\n this.#buffer = data;\n this.#decoder = new TextDecoder();\n this.#view = new DataView(this.#buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 0x03;\n return value === 0x00 ? undefined : value === 0x02;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FontInfo.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n get bbox() {\n let offset = FontInfo.#OFFSET_BBOX;\n const numCoords = this.#view.getUint8(offset);\n if (numCoords === 0) {\n return undefined;\n }\n offset += 1;\n const bbox = [];\n for (let i = 0; i < 4; i++) {\n bbox.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return bbox;\n }\n get fontMatrix() {\n let offset = FontInfo.#OFFSET_FONT_MATRIX;\n const numPoints = this.#view.getUint8(offset);\n if (numPoints === 0) {\n return undefined;\n }\n offset += 1;\n const fontMatrix = [];\n for (let i = 0; i < 6; i++) {\n fontMatrix.push(this.#view.getFloat64(offset, true));\n offset += 8;\n }\n return fontMatrix;\n }\n get defaultVMetrics() {\n let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n const numMetrics = this.#view.getUint8(offset);\n if (numMetrics === 0) {\n return undefined;\n }\n offset += 1;\n const defaultVMetrics = [];\n for (let i = 0; i < 3; i++) {\n defaultVMetrics.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return defaultVMetrics;\n }\n #readString(index) {\n assert(index < FontInfo.strings.length, \"Invalid string index\");\n let offset = FontInfo.#OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n const stringData = new Uint8Array(length);\n stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n return this.#decoder.decode(stringData);\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n get data() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n if (length === 0) {\n return undefined;\n }\n return new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n const data = new Uint8Array(this.#buffer, offset + 4, length);\n data.fill(0);\n this.#view.setUint32(offset, 0);\n }\n get cssFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n static write(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? SystemFontInfo.write(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? CssFontInfo.write(font.cssFontInfo) : null;\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FontInfo.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FontInfo.#OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) + 4 + (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) + 4 + (font.data ? font.data.length : 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FontInfo.bools.length;\n let boolByte = 0,\n boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FontInfo.bools[i]];\n const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FontInfo.#OFFSET_NUMBERS, \"FontInfo.write: Boolean properties offset mismatch\");\n for (const prop of FontInfo.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FontInfo.#OFFSET_BBOX, \"FontInfo.write: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FontInfo.#OFFSET_FONT_MATRIX, \"FontInfo.write: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FontInfo.#OFFSET_DEFAULT_VMETRICS, \"FontInfo.write: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 1);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FontInfo.#OFFSET_STRINGS, \"FontInfo.write: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FontInfo.#OFFSET_STRINGS, offset - FontInfo.#OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === undefined) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n}\nclass PatternInfo {\n static #KIND = 0;\n static #HAS_BBOX = 1;\n static #HAS_BACKGROUND = 2;\n static #SHADING_TYPE = 3;\n static #N_COORD = 4;\n static #N_COLOR = 8;\n static #N_STOP = 12;\n static #N_FIGURES = 16;\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer);\n this.data = new Uint8Array(buffer);\n }\n static write(ir) {\n let kind,\n bbox = null,\n coords = [],\n colors = [],\n colorStops = [],\n figures = [],\n shadingType = null,\n background = null;\n switch (ir[0]) {\n case \"RadialAxial\":\n kind = ir[1] === \"axial\" ? 1 : 2;\n bbox = ir[2];\n colorStops = ir[3];\n if (kind === 1) {\n coords.push(...ir[4], ...ir[5]);\n } else {\n coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]);\n }\n break;\n case \"Mesh\":\n kind = 3;\n shadingType = ir[1];\n coords = ir[2];\n colors = ir[3];\n figures = ir[4] || [];\n bbox = ir[6];\n background = ir[7];\n break;\n default:\n throw new Error(`Unsupported pattern type: ${ir[0]}`);\n }\n const nCoord = Math.floor(coords.length / 2);\n const nColor = Math.floor(colors.length / 3);\n const nStop = colorStops.length;\n const nFigures = figures.length;\n let figuresSize = 0;\n for (const figure of figures) {\n figuresSize += 1;\n figuresSize = Math.ceil(figuresSize / 4) * 4;\n figuresSize += 4 + figure.coords.length * 4;\n figuresSize += 4 + figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n figuresSize += 4;\n }\n }\n const byteLen = 20 + nCoord * 8 + nColor * 3 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0) + figuresSize;\n const buffer = new ArrayBuffer(byteLen);\n const dataView = new DataView(buffer);\n const u8data = new Uint8Array(buffer);\n dataView.setUint8(PatternInfo.#KIND, kind);\n dataView.setUint8(PatternInfo.#HAS_BBOX, bbox ? 1 : 0);\n dataView.setUint8(PatternInfo.#HAS_BACKGROUND, background ? 1 : 0);\n dataView.setUint8(PatternInfo.#SHADING_TYPE, shadingType);\n dataView.setUint32(PatternInfo.#N_COORD, nCoord, true);\n dataView.setUint32(PatternInfo.#N_COLOR, nColor, true);\n dataView.setUint32(PatternInfo.#N_STOP, nStop, true);\n dataView.setUint32(PatternInfo.#N_FIGURES, nFigures, true);\n let offset = 20;\n const coordsView = new Float32Array(buffer, offset, nCoord * 2);\n coordsView.set(coords);\n offset += nCoord * 8;\n u8data.set(colors, offset);\n offset += nColor * 3;\n for (const [pos, hex] of colorStops) {\n dataView.setFloat32(offset, pos, true);\n offset += 4;\n dataView.setUint32(offset, parseInt(hex.slice(1), 16), true);\n offset += 4;\n }\n if (bbox) {\n for (const v of bbox) {\n dataView.setFloat32(offset, v, true);\n offset += 4;\n }\n }\n if (background) {\n u8data.set(background, offset);\n offset += 3;\n }\n for (let i = 0; i < figures.length; i++) {\n const figure = figures[i];\n dataView.setUint8(offset, figure.type);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n dataView.setUint32(offset, figure.coords.length, true);\n offset += 4;\n const figureCoordsView = new Int32Array(buffer, offset, figure.coords.length);\n figureCoordsView.set(figure.coords);\n offset += figure.coords.length * 4;\n dataView.setUint32(offset, figure.colors.length, true);\n offset += 4;\n const colorsView = new Int32Array(buffer, offset, figure.colors.length);\n colorsView.set(figure.colors);\n offset += figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n dataView.setUint32(offset, figure.verticesPerRow, true);\n offset += 4;\n }\n }\n return buffer;\n }\n getIR() {\n const dataView = this.view;\n const kind = this.data[PatternInfo.#KIND];\n const hasBBox = !!this.data[PatternInfo.#HAS_BBOX];\n const hasBackground = !!this.data[PatternInfo.#HAS_BACKGROUND];\n const nCoord = dataView.getUint32(PatternInfo.#N_COORD, true);\n const nColor = dataView.getUint32(PatternInfo.#N_COLOR, true);\n const nStop = dataView.getUint32(PatternInfo.#N_STOP, true);\n const nFigures = dataView.getUint32(PatternInfo.#N_FIGURES, true);\n let offset = 20;\n const coords = new Float32Array(this.buffer, offset, nCoord * 2);\n offset += nCoord * 8;\n const colors = new Uint8Array(this.buffer, offset, nColor * 3);\n offset += nColor * 3;\n const stops = [];\n for (let i = 0; i < nStop; ++i) {\n const p = dataView.getFloat32(offset, true);\n offset += 4;\n const rgb = dataView.getUint32(offset, true);\n offset += 4;\n stops.push([p, `#${rgb.toString(16).padStart(6, \"0\")}`]);\n }\n let bbox = null;\n if (hasBBox) {\n bbox = [];\n for (let i = 0; i < 4; ++i) {\n bbox.push(dataView.getFloat32(offset, true));\n offset += 4;\n }\n }\n let background = null;\n if (hasBackground) {\n background = new Uint8Array(this.buffer, offset, 3);\n offset += 3;\n }\n const figures = [];\n for (let i = 0; i < nFigures; ++i) {\n const type = dataView.getUint8(offset);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n const coordsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureCoords = new Int32Array(this.buffer, offset, coordsLength);\n offset += coordsLength * 4;\n const colorsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureColors = new Int32Array(this.buffer, offset, colorsLength);\n offset += colorsLength * 4;\n const figure = {\n type,\n coords: figureCoords,\n colors: figureColors\n };\n if (type === MeshFigureType.LATTICE) {\n figure.verticesPerRow = dataView.getUint32(offset, true);\n offset += 4;\n }\n figures.push(figure);\n }\n if (kind === 1) {\n return [\"RadialAxial\", \"axial\", bbox, stops, Array.from(coords.slice(0, 2)), Array.from(coords.slice(2, 4)), null, null];\n }\n if (kind === 2) {\n return [\"RadialAxial\", \"radial\", bbox, stops, [coords[0], coords[1]], [coords[3], coords[4]], coords[2], coords[5]];\n }\n if (kind === 3) {\n const shadingType = this.data[PatternInfo.#SHADING_TYPE];\n let bounds = null;\n if (coords.length > 0) {\n let minX = coords[0],\n maxX = coords[0];\n let minY = coords[1],\n maxY = coords[1];\n for (let i = 0; i < coords.length; i += 2) {\n const x = coords[i],\n y = coords[i + 1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n bounds = [minX, minY, maxX, maxY];\n }\n return [\"Mesh\", shadingType, coords, colors, figures, bounds, bbox, background];\n }\n throw new Error(`Unsupported pattern kind: ${kind}`);\n }\n}\nclass FontPathInfo {\n static write(path) {\n let data;\n let buffer;\n if (util_FeatureTest.isFloat16ArraySupported) {\n buffer = new ArrayBuffer(path.length * 2);\n data = new Float16Array(buffer);\n } else {\n buffer = new ArrayBuffer(path.length * 4);\n data = new Float32Array(buffer);\n }\n data.set(path);\n return buffer;\n }\n #buffer;\n constructor(buffer) {\n this.#buffer = buffer;\n }\n get path() {\n if (util_FeatureTest.isFloat16ArraySupported) {\n return new Float16Array(this.#buffer);\n }\n return new Float32Array(this.#buffer);\n }\n}\n\n;// ./src/display/api_utils.js\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/wasm_factory.js\n\n\nclass BaseWasmFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\nif (isNodeJS) {\n warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/canvas_dependency_tracker.js\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => {\n if (!map) {\n return undefined;\n }\n let value = map.get(key);\n if (!value) {\n value = {\n dependencies: new Set(),\n isRenderingOperation: false\n };\n map.set(key, value);\n }\n return value;\n};\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = new Map();\n #savesStack = [];\n #markedContentStack = [];\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n #pendingBBoxIdx = -1;\n #pendingDependencies = new Set();\n #operations = new Map();\n #fontBBoxTrustworthy = new Map();\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n #debugMetadata;\n constructor(canvas, operationsCount, recordDebugMetadata = false) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n }\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this.#savesStack.push(opIdx);\n return this;\n }\n restore(opIdx) {\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n if (this.#savesStack.length === 0) {\n return null;\n }\n return this.#savesStack.at(-1);\n }\n recordCloseMarker(opIdx) {\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n const lastSave = this.#markedContentStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n if (this.#pendingBBoxIdx !== idx) {\n this.#pendingBBoxIdx = idx;\n this.#pendingBBox[0] = Infinity;\n this.#pendingBBox[1] = Infinity;\n this.#pendingBBox[2] = -Infinity;\n this.#pendingBBox[3] = -Infinity;\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = Math.min(this.#pendingBBox[0], Math.max(bbox[0], clipBox[0]));\n this.#pendingBBox[1] = Math.min(this.#pendingBBox[1], Math.max(bbox[1], clipBox[1]));\n this.#pendingBBox[2] = Math.max(this.#pendingBBox[2], Math.min(bbox[2], clipBox[2]));\n this.#pendingBBox[3] = Math.max(this.#pendingBBox[3], Math.min(bbox[3], clipBox[3]));\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#savesStack.forEach(dependencies.add, dependencies);\n this.#markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n if (this.#pendingBBoxIdx === idx) {\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n for (const depIdx of this.#pendingDependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#savesStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#markedContentStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n if (!preserve) {\n this.#pendingDependencies.clear();\n this.#pendingBBoxIdx = -1;\n }\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n if (this.#pendingBBoxIdx === idx) {\n this.#pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n if (!preserve) {\n this.#pendingDependencies.clear();\n }\n }\n return this;\n }\n _takePendingDependencies() {\n const pendingDependencies = this.#pendingDependencies;\n this.#pendingDependencies = new Set();\n return pendingDependencies;\n }\n _extractOperation(idx) {\n const operation = this.#operations.get(idx);\n this.#operations.delete(idx);\n return operation;\n }\n _pushPendingDependencies(dependencies) {\n for (const dep of dependencies) {\n this.#pendingDependencies.add(dep);\n }\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\n};\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n isOriginBased() {\n return this._p0[0] === 0 && this._p0[1] === 0 && (!this.isRadial() || this._p1[0] === 0 && this._p1[1] === 0);\n }\n isRadial() {\n return this._type === \"radial\";\n }\n _createGradient(ctx, transform = null) {\n let grad;\n let firstPoint = this._p0;\n let secondPoint = this._p1;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(firstPoint[0], firstPoint[1], secondPoint[0], secondPoint[1]);\n } else if (this._type === \"radial\") {\n let r0 = this._r0;\n let r1 = this._r1;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n if (this.isOriginBased()) {\n let transf = Util.transform(inverse, owner.baseTransform);\n if (this.matrix) {\n transf = Util.transform(transf, this.matrix);\n }\n const precision = 1e-3;\n const n1 = Math.hypot(transf[0], transf[1]);\n const n2 = Math.hypot(transf[2], transf[3]);\n const ps = (transf[0] * transf[2] + transf[1] * transf[3]) / (n1 * n2);\n if (Math.abs(ps) < precision) {\n if (this.isRadial()) {\n if (Math.abs(n1 - n2) < precision) {\n return this._createGradient(ctx, transf);\n }\n } else {\n return this._createGradient(ctx, transf);\n }\n }\n }\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case MeshFigureType.LATTICE:\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case MeshFigureType.TRIANGLES:\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner, opIdx) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function () {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function () {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function (x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function (x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function (a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function (a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function () {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function (angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function (rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height, preInit) {\n preInit?.(this);\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors, dependencyTracker) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n this.dependencyTracker = dependencyTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper, operationsFilter) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId, fnArgs;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, i);\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(opIdx, img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {}\n setFlatness(opIdx, flatness) {}\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode(opIdx) {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdrop;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdrop;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n path = data[0] = makePathFromDrawOPS(path);\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== undefined) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== undefined) {\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(opIdx, character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if ((font.disableFontFace || isAddToPathSet || patternFill || patternStroke) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const needsFill = fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n const needsStroke = fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n if (needsFill && current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (needsStroke && current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n if (needsStroke) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(opIdx, accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n showType3Text(opIdx, glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {}\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, undefined, undefined, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(opIdx, objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(opIdx, objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n }\n if (!group.smask || this.dependencyTracker) {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n }\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n }\n endAnnotation(opIdx) {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageMaskXObjectGroup(opIdx, images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(opIdx, imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(opIdx, imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore(opIdx);\n }\n paintInlineImageXObjectGroup(opIdx, imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n this.dependencyTracker?.resetBBox(opIdx);\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(opIdx, tag) {}\n markPointProps(opIdx, tag, properties) {}\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {}\n endCompat(opIdx) {}\n consumePath(opIdx, path, clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/pdf_objects.js\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n container.style.setProperty(\"--min-font-size\", TextLayer.#minFontSize);\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const divStyle = textDiv.style;\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n divStyle.setProperty(\"--font-height\", `${fontHeight.toFixed(2)}px`);\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n style.setProperty(\"--scale-x\", canvasWidth * this.#scale / width);\n }\n }\n if (properties.angle !== 0) {\n style.setProperty(\"--rotate\", `${properties.angle}deg`);\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.4.530\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory, enableHWA);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n addRangeListener(listener) {\n this.#rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this.#progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this.#progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this.#progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this.#rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n extractPages(pageInfos) {\n return this._transport.extractPages(pageInfos);\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n canvas = canvasContext.canvas,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false,\n recordOperations = false,\n operationsFilter = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const recordForDebugger = Boolean(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n if (internalRenderTask.stepper) {\n internalRenderTask.stepper.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n }\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvas,\n canvasContext,\n dependencyTracker: shouldRecordOperations ? new CanvasDependencyTracker(canvas, intentState.operatorList.length, recordForDebugger) : null,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n enableHWA: this._transport.enableHWA,\n operationsFilter\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n this.fromPort = params => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return this.create(params);\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.resolve();\n this.#messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this.#port;\n }\n get messageHandler() {\n return this.#messageHandler;\n }\n #initializeFromPort(port) {\n this.#port = port;\n this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this.#messageHandler.on(\"ready\", () => {});\n this.#resolve();\n }\n #initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this.#setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this.#setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this.#webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this.#messageHandler = messageHandler;\n this.#port = worker;\n this.#webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this.#setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this.#setupFakeWorker();\n }\n #setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this.#port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory, enableHWA) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.wasmFactory = factory.wasmFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.enableHWA = enableHWA;\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.extra, exportedData.charProcOperatorList);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.clearData();\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n this.commonObjs.resolve(id, new FontPathInfo(exportedData));\n break;\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n case \"Pattern\":\n const pattern = new PatternInfo(exportedData);\n this.commonObjs.resolve(id, pattern.getIR());\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n extractPages(pageInfos) {\n return this.messageHandler.sendWithPromise(\"ExtractPages\", {\n pageInfos\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n hasStructTree: results[2]\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n enableHWA = false,\n operationsFilter = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._operationsFilter = operationsFilter;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n viewport,\n transform,\n background,\n dependencyTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper, this._operationsFilter);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"5.4.530\";\nconst build = \"50cc4adac\";\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.ariaHidden = \"true\";\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.ariaSelected = color === this.#defaultColor;\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.updateColor(color);\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstElementChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstElementChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstElementChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastElementChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n this.#button.ariaExpanded = \"true\";\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#button.ariaExpanded = \"false\";\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.ariaSelected = i.next().value === color.toUpperCase();\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\nclass BasicColorPicker {\n #input = null;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n color\n } = this.#editor;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n input.value = color || \"#000000\";\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n this.#uiManager.updateParams(colorType, input.value);\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n this.#input.value = value;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableComment = parameters.enableComment;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n this.hasOwnCommentButton = false;\n if (isRenderable) {\n this.contentElement = this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.parent;\n point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n pageIndex: this.parent.page._pageIndex,\n popup,\n popupRef: data.popupRef,\n modificationDate: new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement) && !(this instanceof LinkAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n svg.role = \"none\";\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n mustEnterInEditMode: true\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.parent.removeAnnotation(this.data.id);\n this.container.remove();\n this.container = null;\n this.removePopup();\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.contentElement = link;\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination, overlaidText = \"\") {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (data.overlaidText) {\n link.title = data.overlaidText;\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n this.contentElement = element;\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map(v => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n }\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map(v => parseInt(v, 10));\n value = new Date(2000, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = 0;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements,\n parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #commentManager = null;\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n commentManager = null\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n if (!commentManager) {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find(e => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n if (!this.#commentButton.parentNode) {\n this.#firstElement.container.after(this.#commentButton);\n }\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = this.#firstElement.hasOwnCommentButton;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, undefined, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parentContainer.style.zIndex + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n focus() {\n this.#firstElement.container?.focus();\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"popupDate\";\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (this.#commentManager) {\n return;\n }\n this.#addEventListeners();\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n if (this.#commentManager) {\n return false;\n }\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = this.contentElement = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #annotationStorage = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n #linkService = null;\n #elements = [];\n #hasAriaAttributesFromStructTree = false;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const popupAnnotations = [];\n const elementParams = {\n data: null,\n layer,\n linkService: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n if (!this._commentManager) {\n popupAnnotations.push(data);\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation) {\n this.#elements.push(element);\n if (data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n await this.#addElementsToDOM();\n for (const data of popupAnnotations) {\n const elements = elementParams.elements = popupToElements.get(data.id);\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n elements.at(-1).container.after(rendered);\n }\n this.#setAnnotationCanvasMap();\n }\n async #addElementsToDOM() {\n if (this.#elements.length === 0) {\n return;\n }\n this.div.replaceChildren();\n const promises = [];\n if (!this.#hasAriaAttributesFromStructTree) {\n this.#hasAriaAttributesFromStructTree = true;\n for (const {\n contentElement,\n data: {\n id\n }\n } of this.#elements) {\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n promises.push(this.#structTreeLayer?.getAriaAttributes(annotationId).then(ariaAttributes => {\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n }));\n }\n }\n this.#elements.sort(({\n data: {\n rect: [a0, a1, a2, a3]\n }\n }, {\n data: {\n rect: [b0, b1, b2, b3]\n }\n }) => {\n if (a0 === a2 && a1 === a3) {\n return +1;\n }\n if (b0 === b2 && b1 === b3) {\n return -1;\n }\n const top1 = a3;\n const bot1 = a1;\n const mid1 = (a1 + a3) / 2;\n const top2 = b3;\n const bot2 = b1;\n const mid2 = (b1 + b3) / 2;\n if (mid1 >= top2 && mid2 <= bot1) {\n return -1;\n }\n if (mid2 >= top1 && mid1 <= bot2) {\n return +1;\n }\n const centerX1 = (a0 + a2) / 2;\n const centerX2 = (b0 + b2) / 2;\n return centerX1 - centerX2;\n });\n const fragment = document.createDocumentFragment();\n for (const element of this.#elements) {\n fragment.append(element.container);\n if (this._commentManager) {\n (element.extraPopupElement?.popup || element.popup)?.renderCommentButton();\n } else if (element.extraPopupElement) {\n fragment.append(element.extraPopupElement.render());\n }\n }\n this.div.append(fragment);\n await Promise.all(promises);\n if (this.#accessibilityManager) {\n for (const element of this.#elements) {\n this.#accessibilityManager.addPointerInTextLayer(element.contentElement, false);\n }\n }\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n this.#elements.push(element);\n }\n await this.#addElementsToDOM();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${id}`;\n element.createOrUpdatePopup();\n this.#elements.push(element);\n return element;\n }\n removeAnnotation(id) {\n const index = this.#elements.findIndex(el => el.data.id === id);\n if (index < 0) {\n return;\n }\n const [element] = this.#elements.splice(index, 1);\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n updateFakeAnnotations(editors) {\n if (editors.length === 0) {\n return;\n }\n for (const editor of editors) {\n editor.updateFakeAnnotationElement(this);\n }\n this.#addElementsToDOM();\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n }\n this.canAddComment = false;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.color]];\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.firstPoint = [NaN, NaN];\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox[0] = bezierBbox[1] = Infinity;\n bezierBbox[2] = bezierBbox[3] = -Infinity;\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(bezierBbox[0], bezierBbox[1], bezierBbox[2], bezierBbox[3], minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#firstPoint = [firstPointX, firstPointY];\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#firstPoint, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #firstPoint = null;\n #lastPoint = null;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n firstPoint\n } = this.#highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - this.x) / this.width, (firstPoint[1] - this.y) / this.height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n firstPoint\n } = highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - x) / width, (firstPoint[1] - y) / height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n get commentButtonPosition() {\n return this.#firstPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n onUpdatedColor() {\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: this.color,\n \"fill-opacity\": this.opacity\n }\n });\n this.#colorPicker?.updateColor(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.opacity = opa;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.getNonHCMColorName(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n const colorPicker = this.#colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", colorPicker]];\n }\n return super.toolbarButtons;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n this.setDims();\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n this.setDims();\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n editor.rotate(editor.parentRotation);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color,\n opacity: this.opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(serialized.rect)\n });\n this.addComment(serialized);\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _colorPicker = null;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n if (type === this.colorType) {\n this.onUpdatedColor();\n }\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n this.setDims();\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (CurrentPointers.isInitializedAndDifferentPointerType(pointerType)) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n CurrentPointers.setPointer(pointerType, pointerId);\n window.addEventListener(\"pointerup\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDraw(e);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._currentParent.endDrawingSession();\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (!CurrentPointers.isSamePointerType(e.pointerType)) {\n return;\n }\n CurrentPointers.initializeAndAddPointerId(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (CurrentPointers.isSameTimeStamp(e.timeStamp)) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n CurrentPointers.isSameTimeStamp(event.timeStamp);\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (!CurrentPointers.isSamePointerId(pointerId)) {\n return;\n }\n if (CurrentPointers.isUsingMultiplePointers()) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n CurrentPointers.setTimeStamp(event.timeStamp);\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n CurrentPointers.clearTimeStamp();\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n CurrentPointers.clearPointerIds();\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getPDFRect()\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n if (this._uiManager.signatureManager) {\n return [[\"editSignature\", this._uiManager.signatureManager]];\n }\n return super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n this.setDims();\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (ColorScheme.isDarkMode) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.togglePointerEvents(enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n e.stopPropagation();\n e.preventDefault();\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n const needFakeAnnotation = [];\n if (annotationLayer) {\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n needFakeAnnotation.push(editor);\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n const editables = annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n annotationLayer?.updateFakeAnnotations(needFakeAnnotation);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstElementChild;\n const pathElement = defs.firstElementChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n applyOpacity: applyOpacity,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n CSSConstants: CSSConstants,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n renderRichText: renderRichText,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport { getDocument, GlobalWorkerOptions, PDFWorker } from 'pdfjs-dist'\nimport pdfWorkerCode from 'pdfjs-dist/build/pdf.worker.min.mjs'\n\nGlobalWorkerOptions.workerSrc = pdfWorkerCode\n\nlet sharedWorker = null\n\nfunction getSharedWorker() {\n if (!sharedWorker) {\n sharedWorker = new PDFWorker({ name: 'libresign-pdf-worker' })\n }\n return sharedWorker\n}\n\nexport function setWorkerPath(path) {\n GlobalWorkerOptions.workerSrc = path\n}\n\nexport function readAsArrayBuffer(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => resolve(reader.result)\n reader.onerror = reject\n reader.readAsArrayBuffer(file)\n })\n}\n\nexport function readAsPDF(file) {\n const worker = getSharedWorker()\n const isArrayBuffer = file instanceof ArrayBuffer\n const isView = ArrayBuffer.isView(file)\n const isBlob = typeof Blob !== 'undefined' && file instanceof Blob\n\n if (file && typeof file === 'object' && !isArrayBuffer && !isView && !isBlob) {\n return getDocument({ ...file, worker }).promise\n }\n if (typeof file === 'string') {\n return getDocument({ url: file, worker }).promise\n }\n return getDocument({ data: file, worker }).promise\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function clampPosition(x, y, width, height, pageWidth, pageHeight) {\n return {\n x: Math.max(0, Math.min(x, pageWidth - width)),\n y: Math.max(0, Math.min(y, pageHeight - height)),\n }\n}\n\nexport function getVisibleArea(newX, newY, objWidth, objHeight, pageWidth, pageHeight) {\n const visibleLeft = Math.max(0, newX)\n const visibleTop = Math.max(0, newY)\n const visibleRight = Math.min(pageWidth, newX + objWidth)\n const visibleBottom = Math.min(pageHeight, newY + objHeight)\n if (visibleRight <= visibleLeft || visibleBottom <= visibleTop) {\n return 0\n }\n return (visibleRight - visibleLeft) * (visibleBottom - visibleTop)\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function getViewportWindow(scrollTop, viewHeight, margin = 300) {\n return {\n minY: Math.max(0, scrollTop - margin),\n maxY: scrollTop + viewHeight + margin,\n }\n}\n\nexport function isPageInViewport(offsetTop, offsetHeight, minY, maxY) {\n return !(offsetTop + offsetHeight < minY || offsetTop > maxY)\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function applyScaleToDocs(docs, scale) {\n docs.forEach((doc) => {\n doc.pagesScale = doc.pagesScale.map(() => scale)\n })\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function objectIdExistsInDoc(doc, objectId) {\n if (!doc || !objectId) return false\n return doc.allObjects.some((objects) => objects.some((obj) => obj.id === objectId))\n}\n\nexport function findObjectPageIndex(doc, objectId) {\n if (!doc || !objectId) return undefined\n for (let pageIndex = 0; pageIndex < doc.allObjects.length; pageIndex++) {\n if (doc.allObjects[pageIndex].some((obj) => obj.id === objectId)) {\n return pageIndex\n }\n }\n return undefined\n}\n\nexport function updateObjectInDoc(doc, pageIndex, objectId, payload) {\n const objects = doc?.allObjects?.[pageIndex]\n if (!objects) return false\n const objectIndex = objects.findIndex((obj) => obj.id === objectId)\n if (objectIndex === -1) return false\n objects.splice(objectIndex, 1, { ...objects[objectIndex], ...payload })\n return true\n}\n\nexport function removeObjectFromDoc(doc, pageIndex, objectId) {\n const objects = doc?.allObjects?.[pageIndex]\n if (!objects) return false\n const objectIndex = objects.findIndex((obj) => obj.id === objectId)\n if (objectIndex === -1) return false\n objects.splice(objectIndex, 1)\n return true\n}\n","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nexport function getCachedMeasurement(cache, cacheKey, pageRef, pagesScale) {\n const cached = cache[cacheKey]\n if (cached) {\n return cached\n }\n const measurement = pageRef.getCanvasMeasurement()\n const normalized = {\n width: measurement.canvasWidth / pagesScale,\n height: measurement.canvasHeight / pagesScale,\n }\n cache[cacheKey] = normalized\n return normalized\n}\n","<!--\nSPDX-FileCopyrightText: 2026 LibreCode coop and contributors\nSPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n <div :style=\"{ width, height }\" class=\"pdf-elements-root\">\n <div\n v-if=\"pdfDocuments.length\"\n class=\"pages-container\"\n >\n <div v-for=\"(pdfDoc, docIndex) in pdfDocuments\" :key=\"docIndex\">\n <div v-for=\"(page, pIndex) in pdfDoc.pages\" :key=\"`${docIndex}-${pIndex}`\" class=\"page-slot\">\n <div class=\"page-wrapper\"\n @mousedown=\"selectPage(docIndex, pIndex)\"\n @touchstart=\"selectPage(docIndex, pIndex)\">\n <div class=\"page-canvas\" :class=\"{ 'shadow-outline': docIndex === selectedDocIndex && pIndex === selectedPageIndex }\">\n <PDFPage\n :ref=\"`page${docIndex}-${pIndex}`\"\n :page=\"page\"\n :scale=\"scale\"\n @onMeasure=\"onMeasure($event, docIndex, pIndex)\"\n />\n <div\n class=\"overlay\"\n @mousemove=\"handleMouseMove\"\n @touchmove=\"handleMouseMove\"\n @click=\"handleOverlayClick(docIndex, pIndex, $event)\"\n @touchend=\"handleOverlayClick(docIndex, pIndex, $event)\"\n >\n <div\n v-if=\"isAddingMode && previewPageDocIndex === docIndex && previewPageIndex === pIndex && previewElement && previewVisible\"\n class=\"preview-element\"\n :style=\"{\n left: `${previewPosition.x * previewScale.x}px`,\n top: `${previewPosition.y * previewScale.y}px`,\n width: `${previewElement.width * previewScale.x}px`,\n height: `${previewElement.height * previewScale.y}px`,\n }\"\n >\n <slot\n :name=\"previewElement.type ? `element-${previewElement.type}` : 'custom'\"\n :object=\"previewElement\"\n :isSelected=\"false\"\n >\n <slot\n name=\"custom\"\n :object=\"previewElement\"\n :isSelected=\"false\"\n />\n </slot>\n </div>\n\n <DraggableElement\n v-for=\"object in pdfDoc.allObjects[pIndex]\"\n :key=\"object.id\"\n :ref=\"`draggable${docIndex}-${pIndex}-${object.id}`\"\n :object=\"object\"\n :pages-scale=\"getDisplayedPageScale(docIndex, pIndex)\"\n :page-width=\"getPageWidth(docIndex, pIndex)\"\n :page-height=\"getPageHeight(docIndex, pIndex)\"\n :read-only=\"readOnly\"\n :on-update=\"(payload) => updateObject(docIndex, object.id, payload)\"\n :on-delete=\"() => deleteObject(docIndex, object.id)\"\n :on-duplicate=\"() => duplicateObject(docIndex, object.id)\"\n :on-drag-start=\"(mouseX, mouseY, pointerOffset, dragShift) => startDraggingElement(docIndex, pIndex, object, mouseX, mouseY, pointerOffset, dragShift)\"\n :on-drag-move=\"updateDraggingPosition\"\n :on-drag-end=\"stopDraggingElement\"\n :is-being-dragged-globally=\"isDraggingElement && draggingObject && draggingObject.id === object.id\"\n :dragging-client-pos=\"draggingClientPosition\"\n :current-doc-index=\"docIndex\"\n :current-page-index=\"pIndex\"\n :global-drag-doc-index=\"draggingDocIndex\"\n :global-drag-page-index=\"draggingPageIndex\"\n :show-selection-ui=\"showSelectionHandles && !hideSelectionUI && object.resizable !== false\"\n :show-default-actions=\"showElementActions && !hideSelectionUI\"\n :ignore-click-outside-selectors=\"ignoreClickOutsideSelectors\"\n >\n <template #default=\"slotProps\">\n <slot\n :name=\"slotProps.object.type ? `element-${slotProps.object.type}` : 'custom'\"\n :object=\"slotProps.object\"\n :onDelete=\"slotProps.onDelete\"\n :onResize=\"slotProps.onResize\"\n >\n <slot\n name=\"custom\"\n :object=\"slotProps.object\"\n :onDelete=\"slotProps.onDelete\"\n :onResize=\"slotProps.onResize\"\n />\n </slot>\n </template>\n <template #actions=\"slotProps\">\n <slot\n name=\"actions\"\n :object=\"slotProps.object\"\n :onDelete=\"slotProps.onDelete\"\n :onDuplicate=\"slotProps.onDuplicate\"\n />\n </template>\n </DraggableElement>\n </div>\n </div>\n <div v-if=\"showPageFooter\" class=\"page-footer\">\n <span>{{ pdfDoc.name }}</span>\n <span>{{ formatPageNumber(pIndex + 1, pdfDoc.numPages) }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n v-if=\"isDraggingElement && draggingObject\"\n class=\"drag-portal\"\n :style=\"{\n position: 'fixed',\n left: `${draggingClientPosition.x}px`,\n top: `${draggingClientPosition.y}px`,\n width: `${draggingObject.width * draggingScale}px`,\n height: `${draggingObject.height * draggingScale}px`,\n pointerEvents: 'none',\n }\"\n >\n <slot\n :name=\"draggingObject.type ? `element-${draggingObject.type}` : 'custom'\"\n :object=\"draggingObject\"\n :isSelected=\"false\"\n >\n <slot\n name=\"custom\"\n :object=\"draggingObject\"\n :isSelected=\"false\"\n />\n </slot>\n </div>\n\n </div>\n</template>\n\n<script>\nimport PDFPage from './PDFPage.vue'\nimport DraggableElement from './DraggableElement.vue'\nimport { readAsPDF, readAsArrayBuffer } from '../utils/asyncReader.js'\nimport { clampPosition, getVisibleArea } from '../utils/geometry.js'\nimport { getViewportWindow, isPageInViewport } from '../utils/pageBounds.js'\nimport { applyScaleToDocs } from '../utils/zoom.js'\nimport { objectIdExistsInDoc, findObjectPageIndex, updateObjectInDoc, removeObjectFromDoc } from '../utils/objectStore.js'\nimport { getCachedMeasurement } from '../utils/measurements.js'\n\nexport default {\n name: 'PDFElements',\n components: {\n PDFPage,\n DraggableElement,\n },\n props: {\n width: {\n type: String,\n default: '100%',\n },\n height: {\n type: String,\n default: '100%',\n },\n initFiles: {\n type: Array,\n default: () => [],\n },\n initFileNames: {\n type: Array,\n default: () => [],\n },\n initialScale: {\n type: Number,\n default: 1,\n },\n showPageFooter: {\n type: Boolean,\n default: true,\n },\n hideSelectionUI: {\n type: Boolean,\n default: false,\n },\n showSelectionHandles: {\n type: Boolean,\n default: true,\n },\n showElementActions: {\n type: Boolean,\n default: true,\n },\n readOnly: {\n type: Boolean,\n default: false,\n },\n emitObjectClick: {\n type: Boolean,\n default: false,\n },\n ignoreClickOutsideSelectors: {\n type: Array,\n default: () => [],\n },\n pageCountFormat: {\n type: String,\n default: '{currentPage} of {totalPages}',\n },\n autoFitZoom: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n scale: this.initialScale,\n pdfDocuments: [],\n selectedDocIndex: -1,\n selectedPageIndex: -1,\n isAddingMode: false,\n previewElement: null,\n previewPosition: { x: 0, y: 0 },\n previewScale: { x: 1, y: 1 },\n previewPageDocIndex: -1,\n previewPageIndex: -1,\n previewVisible: false,\n hoverRafId: 0,\n pendingHoverClientPos: null,\n lastHoverRect: null,\n addingListenersAttached: false,\n dragRafId: 0,\n pendingDragClientPos: null,\n pageBoundsVersion: 0,\n lastScrollTop: 0,\n lastClientWidth: 0,\n nextObjectCounter: 0,\n isDraggingElement: false,\n draggingObject: null,\n draggingDocIndex: -1,\n draggingPageIndex: -1,\n draggingClientPosition: { x: 0, y: 0 },\n draggingScale: 1,\n draggingInitialMouseOffset: { x: 0, y: 0 },\n draggingElementShift: { x: 0, y: 0 },\n lastMouseClientPos: { x: 0, y: 0 },\n viewportRafId: 0,\n objectIndexCache: {},\n zoomRafId: null,\n wheelZoomRafId: null,\n boundHandleWheel: null,\n visualScale: this.initialScale,\n autoFitApplied: false,\n lastContainerWidth: 0,\n }\n },\n created() {\n this._pagesBoundingRects = {}\n this._pagesBoundingRectsList = []\n this._pageMeasurementCache = {}\n this._lastPageBoundsScrollTop = 0\n this._lastPageBoundsClientHeight = 0\n },\n mounted() {\n this.boundHandleWheel = this.handleWheel.bind(this)\n this.init()\n window.addEventListener('scroll', this.onViewportScroll, { passive: true })\n window.addEventListener('resize', this.onViewportScroll)\n this.$el?.addEventListener('scroll', this.onViewportScroll, { passive: true })\n this.$el?.addEventListener('wheel', this.boundHandleWheel, { passive: false })\n },\n beforeUnmount() {\n if (this.zoomRafId) {\n cancelAnimationFrame(this.zoomRafId)\n }\n if (this.wheelZoomRafId) {\n cancelAnimationFrame(this.wheelZoomRafId)\n this.wheelZoomRafId = null\n }\n if (this.boundHandleWheel) {\n this.$el?.removeEventListener('wheel', this.boundHandleWheel)\n }\n this.detachAddingListeners()\n window.removeEventListener('scroll', this.onViewportScroll)\n window.removeEventListener('resize', this.onViewportScroll)\n this.$el?.removeEventListener('scroll', this.onViewportScroll)\n if (this.viewportRafId) {\n window.cancelAnimationFrame(this.viewportRafId)\n this.viewportRafId = 0\n }\n if (this.hoverRafId) {\n window.cancelAnimationFrame(this.hoverRafId)\n this.hoverRafId = 0\n }\n if (this.dragRafId) {\n window.cancelAnimationFrame(this.dragRafId)\n this.dragRafId = 0\n }\n },\n methods: {\n async init() {\n if (!this.initFiles || this.initFiles.length === 0) return\n const docs = []\n this.autoFitApplied = false\n\n for (let i = 0; i < this.initFiles.length; i++) {\n const file = this.initFiles[i]\n const name = this.initFileNames[i] || `document-${i + 1}.pdf`\n\n let pdfDoc\n if (file instanceof Blob) {\n const buffer = await readAsArrayBuffer(file)\n pdfDoc = await readAsPDF({ data: buffer })\n } else {\n pdfDoc = await readAsPDF(file)\n }\n\n const pages = []\n const pageWidths = Array(pdfDoc.numPages).fill(0)\n for (let p = 1; p <= pdfDoc.numPages; p++) {\n const pagePromise = pdfDoc.getPage(p)\n pagePromise.then((page) => {\n pageWidths.splice(p - 1, 1, page.getViewport({ scale: 1 }).width)\n if (this.autoFitZoom) {\n this.scheduleAutoFitZoom()\n }\n })\n pages.push(pagePromise)\n }\n\n docs.push({\n name,\n file,\n pdfDoc,\n numPages: pdfDoc.numPages,\n pages,\n pageWidths,\n pagesScale: Array(pdfDoc.numPages).fill(this.scale),\n allObjects: Array(pdfDoc.numPages).fill(0).map(() => []),\n })\n }\n\n this.pdfDocuments = docs\n this._pageMeasurementCache = {}\n if (docs.length) {\n this.selectedDocIndex = 0\n this.selectedPageIndex = 0\n this.$emit('pdf-elements:end-init', { docsCount: docs.length })\n this.$nextTick(() => {\n if (this.autoFitZoom) {\n this.scheduleAutoFitZoom()\n }\n })\n }\n },\n\n selectPage(docIndex, pageIndex) {\n this.selectedDocIndex = docIndex\n this.selectedPageIndex = pageIndex\n },\n\n startDraggingElement(docIndex, pageIndex, object, mouseX, mouseY, pointerOffset, dragShift) {\n this.isDraggingElement = true\n this.draggingObject = { ...object }\n this.draggingDocIndex = docIndex\n this.draggingPageIndex = pageIndex\n this.draggingScale = this.getDisplayedPageScale(docIndex, pageIndex)\n this.lastMouseClientPos.x = mouseX\n this.lastMouseClientPos.y = mouseY\n this.draggingElementShift = dragShift && typeof dragShift.x === 'number' && typeof dragShift.y === 'number'\n ? dragShift\n : { x: 0, y: 0 }\n\n this.cachePageBounds()\n const pageRect = this.getPageRect(docIndex, pageIndex)\n if (pointerOffset && typeof pointerOffset.x === 'number' && typeof pointerOffset.y === 'number') {\n this.draggingInitialMouseOffset.x = pointerOffset.x\n this.draggingInitialMouseOffset.y = pointerOffset.y\n this.draggingClientPosition.x = mouseX - this.draggingInitialMouseOffset.x\n this.draggingClientPosition.y = mouseY - this.draggingInitialMouseOffset.y\n } else if (pageRect) {\n const elementScreenX = pageRect.left + (object.x * this.draggingScale)\n const elementScreenY = pageRect.top + (object.y * this.draggingScale)\n this.draggingInitialMouseOffset.x = mouseX - elementScreenX\n this.draggingInitialMouseOffset.y = mouseY - elementScreenY\n\n this.draggingClientPosition.x = mouseX - this.draggingInitialMouseOffset.x\n this.draggingClientPosition.y = mouseY - this.draggingInitialMouseOffset.y\n }\n\n },\n\n updateDraggingPosition(clientX, clientY) {\n if (!this.isDraggingElement) return\n\n this.pendingDragClientPos = { x: clientX, y: clientY }\n if (this.dragRafId) return\n this.dragRafId = window.requestAnimationFrame(() => {\n this.dragRafId = 0\n const pending = this.pendingDragClientPos\n if (!pending) return\n this.lastMouseClientPos.x = pending.x\n this.lastMouseClientPos.y = pending.y\n this.draggingClientPosition.x = pending.x - this.draggingInitialMouseOffset.x\n this.draggingClientPosition.y = pending.y - this.draggingInitialMouseOffset.y\n })\n },\n\n stopDraggingElement() {\n if (this.draggingObject) {\n const objectId = this.draggingObject.id\n const originalDocIndex = this.draggingDocIndex\n\n const finalPageIndex = this.checkAndMoveObjectPage(\n this.draggingDocIndex,\n objectId,\n this.lastMouseClientPos.x,\n this.lastMouseClientPos.y\n )\n\n if (finalPageIndex !== undefined) {\n this.$nextTick(() => {\n this.selectPage(originalDocIndex, finalPageIndex)\n\n const refKey = `draggable${originalDocIndex}-${finalPageIndex}-${objectId}`\n const draggableRefs = this.$refs[refKey]\n if (draggableRefs && Array.isArray(draggableRefs) && draggableRefs[0]) {\n draggableRefs[0].isSelected = true\n }\n })\n }\n }\n this.isDraggingElement = false\n this.draggingObject = null\n this.draggingDocIndex = -1\n this.draggingPageIndex = -1\n this.draggingElementShift = { x: 0, y: 0 }\n this.pendingDragClientPos = null\n },\n\n startAddingElement(templateObject) {\n if (!this.pdfDocuments.length) return\n this.attachAddingListeners()\n this.isAddingMode = true\n this.previewElement = { ...templateObject }\n this.previewPageDocIndex = 0\n this.previewPageIndex = 0\n this.previewVisible = false\n this.previewScale = { x: 1, y: 1 }\n this.cachePageBounds()\n },\n\n cachePageBounds() {\n const nextRects = {}\n const container = this.$el\n const scrollTop = container?.scrollTop || 0\n const viewHeight = container?.clientHeight || 0\n if (!this.isAddingMode && !this.isDraggingElement &&\n scrollTop === this._lastPageBoundsScrollTop &&\n viewHeight === this._lastPageBoundsClientHeight) {\n return\n }\n this._lastPageBoundsScrollTop = scrollTop\n this._lastPageBoundsClientHeight = viewHeight\n const { minY, maxY } = getViewportWindow(scrollTop, viewHeight)\n for (let docIdx = 0; docIdx < this.pdfDocuments.length; docIdx++) {\n for (let pageIdx = 0; pageIdx < this.pdfDocuments[docIdx].pages.length; pageIdx++) {\n const canvas = this.getPageCanvasElement(docIdx, pageIdx)\n if (!canvas) continue\n if (viewHeight) {\n const wrapper = canvas.closest('.page-wrapper') || canvas\n const offsetTop = wrapper.offsetTop || 0\n const offsetHeight = wrapper.offsetHeight || 0\n if (!isPageInViewport(offsetTop, offsetHeight, minY, maxY)) {\n continue\n }\n }\n const rect = canvas.getBoundingClientRect()\n nextRects[`${docIdx}-${pageIdx}`] = {\n docIndex: docIdx,\n pageIndex: pageIdx,\n rect,\n }\n }\n }\n this._pagesBoundingRects = nextRects\n this._pagesBoundingRectsList = Object.values(nextRects)\n this.pageBoundsVersion++\n },\n cachePageBoundsForPage(docIndex, pageIndex) {\n const canvas = this.getPageCanvasElement(docIndex, pageIndex)\n if (!canvas) return\n const rect = canvas.getBoundingClientRect()\n this._pagesBoundingRects = {\n ...this._pagesBoundingRects,\n [`${docIndex}-${pageIndex}`]: {\n docIndex,\n pageIndex,\n rect,\n },\n }\n this._pagesBoundingRectsList = Object.values(this._pagesBoundingRects)\n this.pageBoundsVersion++\n },\n getPageBoundsMap() {\n return this._pagesBoundingRects || {}\n },\n getPageBoundsList() {\n return this._pagesBoundingRectsList || []\n },\n getPageRect(docIndex, pageIndex) {\n return this.getPageBoundsMap()[`${docIndex}-${pageIndex}`]?.rect || null\n },\n getPointerPosition(event) {\n if (event?.type?.includes?.('touch')) {\n return {\n x: event.touches?.[0]?.clientX,\n y: event.touches?.[0]?.clientY,\n }\n }\n return {\n x: event?.clientX,\n y: event?.clientY,\n }\n },\n\n getDisplayedPageScale(docIndex, pageIndex) {\n this.pageBoundsVersion\n const doc = this.pdfDocuments[docIndex]\n if (!doc) return 1\n const baseWidth = doc.pageWidths?.[pageIndex] || 0\n const pageBoundsMap = this.getPageBoundsMap()\n if (!pageBoundsMap[`${docIndex}-${pageIndex}`]) {\n this.cachePageBoundsForPage(docIndex, pageIndex)\n }\n const rectWidth = this.getPageBoundsMap()[`${docIndex}-${pageIndex}`]?.rect?.width || 0\n if (rectWidth && baseWidth) {\n return rectWidth / baseWidth\n }\n if (this.isAddingMode || this.isDraggingElement) {\n const canvas = this.getPageCanvasElement(docIndex, pageIndex)\n const fallbackRectWidth = canvas?.getBoundingClientRect?.().width || 0\n if (fallbackRectWidth && baseWidth) {\n return fallbackRectWidth / baseWidth\n }\n }\n const base = doc.pagesScale[pageIndex] || 1\n const factor = this.visualScale && this.scale ? (this.visualScale / this.scale) : 1\n return base * factor\n },\n getPageComponent(docIndex, pageIndex) {\n const pageRef = this.$refs[`page${docIndex}-${pageIndex}`]\n return pageRef && Array.isArray(pageRef) && pageRef[0] ? pageRef[0] : null\n },\n getPageCanvasElement(docIndex, pageIndex) {\n const pageComponent = this.getPageComponent(docIndex, pageIndex)\n return pageComponent ? (pageComponent.$el || pageComponent) : null\n },\n\n onViewportScroll() {\n if (this.viewportRafId) return\n this.viewportRafId = window.requestAnimationFrame(() => {\n const container = this.$el\n const scrollTop = container?.scrollTop || 0\n const clientWidth = container?.clientWidth || 0\n const scrollChanged = scrollTop !== this.lastScrollTop\n const widthChanged = clientWidth !== this.lastClientWidth\n this.lastScrollTop = scrollTop\n this.lastClientWidth = clientWidth\n\n if (this.isAddingMode || this.isDraggingElement) {\n if (scrollChanged || widthChanged) {\n this.cachePageBounds()\n }\n }\n if (this.autoFitZoom && !this.isAddingMode && !this.isDraggingElement) {\n if (clientWidth && widthChanged) {\n this.lastContainerWidth = clientWidth\n this.autoFitApplied = false\n this.scheduleAutoFitZoom()\n }\n }\n this.viewportRafId = 0\n })\n },\n\n handleMouseMove(event) {\n if (!this.isAddingMode || !this.previewElement) return\n const { x, y } = this.getPointerPosition(event)\n if (x === undefined || y === undefined) return\n this.pendingHoverClientPos = { x, y }\n if (this.hoverRafId) return\n this.hoverRafId = window.requestAnimationFrame(() => {\n this.hoverRafId = 0\n const pending = this.pendingHoverClientPos\n if (!pending) return\n\n const cursorX = pending.x\n const cursorY = pending.y\n let target = null\n\n if (this.lastHoverRect &&\n cursorX >= this.lastHoverRect.left && cursorX <= this.lastHoverRect.right &&\n cursorY >= this.lastHoverRect.top && cursorY <= this.lastHoverRect.bottom) {\n target = {\n docIndex: this.previewPageDocIndex,\n pageIndex: this.previewPageIndex,\n rect: this.lastHoverRect,\n }\n } else {\n const rects = this.getPageBoundsList().length\n ? this.getPageBoundsList()\n : Object.values(this.getPageBoundsMap())\n for (let i = 0; i < rects.length; i++) {\n const entry = rects[i]\n const rect = entry.rect\n if (cursorX >= rect.left && cursorX <= rect.right &&\n cursorY >= rect.top && cursorY <= rect.bottom) {\n target = entry\n break\n }\n }\n }\n\n if (!target) {\n this.previewVisible = false\n this.previewScale = { x: 1, y: 1 }\n this.lastHoverRect = null\n return\n }\n\n this.previewPageDocIndex = target.docIndex\n this.previewPageIndex = target.pageIndex\n this.lastHoverRect = target.rect\n const canvasEl = this.getPageCanvasElement(target.docIndex, target.pageIndex)\n const pagesScale = this.pdfDocuments[target.docIndex]?.pagesScale?.[target.pageIndex] || 1\n const renderWidth = canvasEl?.width || target.rect.width\n const renderHeight = canvasEl?.height || target.rect.height\n const layoutScaleX = renderWidth ? target.rect.width / renderWidth : 1\n const layoutScaleY = renderHeight ? target.rect.height / renderHeight : 1\n const relX = (cursorX - target.rect.left) / layoutScaleX / pagesScale\n const relY = (cursorY - target.rect.top) / layoutScaleY / pagesScale\n\n const pageWidth = renderWidth / pagesScale\n const pageHeight = renderHeight / pagesScale\n this.previewScale.x = pagesScale\n this.previewScale.y = pagesScale\n let x = relX - this.previewElement.width / 2\n let y = relY - this.previewElement.height / 2\n\n x = Math.max(0, Math.min(x, pageWidth - this.previewElement.width))\n y = Math.max(0, Math.min(y, pageHeight - this.previewElement.height))\n\n this.previewPosition.x = x\n this.previewPosition.y = y\n this.previewVisible = true\n })\n },\n handleOverlayClick(docIndex, pageIndex, event) {\n if (!this.emitObjectClick) return\n\n const { x: clientX, y: clientY } = this.getPointerPosition(event)\n if (!Number.isFinite(clientX) || !Number.isFinite(clientY)) return\n\n this.cachePageBoundsForPage(docIndex, pageIndex)\n const pageRect = this.getPageRect(docIndex, pageIndex)\n if (!pageRect) return\n\n const pagesScale = this.getDisplayedPageScale(docIndex, pageIndex) || 1\n const relX = (clientX - pageRect.left) / pagesScale\n const relY = (clientY - pageRect.top) / pagesScale\n\n const doc = this.pdfDocuments?.[docIndex]\n const pageObjects = doc?.allObjects?.[pageIndex] || []\n let hitObject = null\n\n for (let i = pageObjects.length - 1; i >= 0; i--) {\n const object = pageObjects[i]\n const x = Number(object.x)\n const y = Number(object.y)\n const width = Number(object.width)\n const height = Number(object.height)\n if (![x, y, width, height].every(Number.isFinite)) {\n continue\n }\n if (relX >= x && relX <= x + width && relY >= y && relY <= y + height) {\n hitObject = object\n break\n }\n }\n\n if (!hitObject) return\n\n this.$emit('pdf-elements:object-click', {\n docIndex,\n pageIndex,\n object: hitObject,\n event,\n })\n },\n\n handleKeyDown(event) {\n if (event.key === 'Escape' && this.isAddingMode) {\n this.cancelAdding()\n }\n },\n\n handleWheel(event) {\n if (!event.ctrlKey) return\n event.preventDefault()\n\n const factor = 1 - (event.deltaY * 0.002)\n const nextVisual = Math.max(0.5, Math.min(3.0, this.visualScale * factor))\n this.visualScale = nextVisual\n if (this.wheelZoomRafId) return\n this.wheelZoomRafId = window.requestAnimationFrame(() => {\n this.wheelZoomRafId = null\n this.commitZoom()\n })\n },\n\n commitZoom() {\n const newScale = this.visualScale\n\n this.scale = newScale\n\n applyScaleToDocs(this.pdfDocuments, this.scale)\n\n this._pageMeasurementCache = {}\n this.cachePageBounds()\n },\n\n finishAdding() {\n if (!this.isAddingMode || !this.previewElement) return\n if (!this.previewVisible) return\n\n const objectToAdd = {\n ...this.previewElement,\n id: this.generateObjectId(),\n x: Math.round(this.previewPosition.x),\n y: Math.round(this.previewPosition.y),\n }\n\n const doc = this.pdfDocuments[this.previewPageDocIndex]\n const pageWidth = this.getPageWidth(this.previewPageDocIndex, this.previewPageIndex)\n const pageHeight = this.getPageHeight(this.previewPageDocIndex, this.previewPageIndex)\n\n if (objectToAdd.x < 0 || objectToAdd.y < 0 ||\n objectToAdd.x + objectToAdd.width > pageWidth ||\n objectToAdd.y + objectToAdd.height > pageHeight) {\n this.cancelAdding()\n return\n }\n\n doc.allObjects[this.previewPageIndex].push(objectToAdd)\n\n const pageIndex = this.previewPageIndex\n const docIndex = this.previewPageDocIndex\n const objectId = objectToAdd.id\n\n this.cancelAdding()\n\n this.$nextTick(() => {\n const refKey = `draggable${docIndex}-${pageIndex}-${objectId}`\n const draggableRefs = this.$refs[refKey]\n if (draggableRefs && Array.isArray(draggableRefs) && draggableRefs[0]) {\n draggableRefs[0].isSelected = true\n }\n })\n },\n\n cancelAdding() {\n this.isAddingMode = false\n this.previewElement = null\n this.previewVisible = false\n this.detachAddingListeners()\n },\n generateObjectId() {\n const counter = this.nextObjectCounter++\n const rand = Math.random().toString(36).slice(2, 8)\n return `obj-${Date.now()}-${counter}-${rand}`\n },\n attachAddingListeners() {\n if (this.addingListenersAttached) return\n this.addingListenersAttached = true\n document.addEventListener('mousemove', this.handleMouseMove)\n document.addEventListener('touchmove', this.handleMouseMove, { passive: true })\n document.addEventListener('mouseup', this.finishAdding)\n document.addEventListener('touchend', this.finishAdding)\n document.addEventListener('keydown', this.handleKeyDown)\n },\n detachAddingListeners() {\n if (!this.addingListenersAttached) return\n this.addingListenersAttached = false\n document.removeEventListener('mousemove', this.handleMouseMove)\n document.removeEventListener('touchmove', this.handleMouseMove, { passive: true })\n document.removeEventListener('mouseup', this.finishAdding)\n document.removeEventListener('touchend', this.finishAdding)\n document.removeEventListener('keydown', this.handleKeyDown)\n },\n\n addObjectToPage(object, pageIndex = this.selectedPageIndex, docIndex = this.selectedDocIndex) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return false\n if (pageIndex < 0 || pageIndex >= this.pdfDocuments[docIndex].pages.length) return false\n\n const doc = this.pdfDocuments[docIndex]\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return false\n\n let objectToAdd = object\n if (!objectToAdd.id || this.objectIdExists(docIndex, objectToAdd.id)) {\n objectToAdd = { ...objectToAdd, id: this.generateObjectId() }\n }\n\n const pageWidth = this.getPageWidth(docIndex, pageIndex)\n const pageHeight = this.getPageHeight(docIndex, pageIndex)\n\n if (objectToAdd.x < 0 || objectToAdd.y < 0 ||\n objectToAdd.x + objectToAdd.width > pageWidth ||\n objectToAdd.y + objectToAdd.height > pageHeight) {\n return false\n }\n\n doc.allObjects[pageIndex].push(objectToAdd)\n this.objectIndexCache[`${docIndex}-${objectToAdd.id}`] = pageIndex\n return true\n },\n objectIdExists(docIndex, objectId) {\n if (!objectId) return false\n const cacheKey = `${docIndex}-${objectId}`\n if (this.objectIndexCache[cacheKey] !== undefined) return true\n const doc = this.pdfDocuments[docIndex]\n return objectIdExistsInDoc(doc, objectId)\n },\n updateObjectInPage(docIndex, pageIndex, objectId, payload) {\n const doc = this.pdfDocuments[docIndex]\n updateObjectInDoc(doc, pageIndex, objectId, payload)\n },\n removeObjectFromPage(docIndex, pageIndex, objectId) {\n const doc = this.pdfDocuments[docIndex]\n removeObjectFromDoc(doc, pageIndex, objectId)\n },\n\n getAllObjects(docIndex = this.selectedDocIndex) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return []\n\n const doc = this.pdfDocuments[docIndex]\n const result = []\n\n doc.allObjects.forEach((pageObjects, pageIndex) => {\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return\n const measurement = this.getCachedMeasurement(docIndex, pageIndex, pageRef)\n const normalizedCanvasHeight = measurement.height\n const pagesScale = doc.pagesScale[pageIndex] || 1\n\n pageObjects.forEach(object => {\n result.push({\n ...object,\n pageIndex,\n pageNumber: pageIndex + 1,\n scale: pagesScale,\n normalizedCoordinates: {\n llx: parseInt(object.x, 10),\n lly: parseInt(normalizedCanvasHeight - object.y, 10),\n ury: parseInt(normalizedCanvasHeight - object.y - object.height, 10),\n width: parseInt(object.width, 10),\n height: parseInt(object.height, 10),\n },\n })\n })\n })\n\n return result\n },\n\n updateObject(docIndex, objectId, payload) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n const doc = this.pdfDocuments[docIndex]\n\n const cacheKey = `${docIndex}-${objectId}`\n let currentPageIndex = this.objectIndexCache[cacheKey]\n\n if (currentPageIndex === undefined) {\n currentPageIndex = findObjectPageIndex(doc, objectId)\n if (currentPageIndex !== undefined) {\n this.objectIndexCache[cacheKey] = currentPageIndex\n }\n }\n\n if (currentPageIndex === undefined) return\n\n const targetObject = doc.allObjects[currentPageIndex]?.find(o => o.id === objectId)\n if (!targetObject) return\n\n if (payload._globalDrag && payload._mouseX !== undefined && payload._mouseY !== undefined) {\n const mouseX = payload._mouseX\n const mouseY = payload._mouseY\n\n const pageBoundsMap = this.getPageBoundsMap()\n if (!pageBoundsMap || Object.keys(pageBoundsMap).length === 0) {\n this.cachePageBounds()\n }\n\n const currentPageRect = this.getPageRect(docIndex, currentPageIndex)\n if (currentPageRect) {\n const pagesScale = this.getDisplayedPageScale(docIndex, currentPageIndex)\n const relX = (mouseX - currentPageRect.left - this.draggingElementShift.x) / pagesScale - (this.draggingInitialMouseOffset.x / pagesScale)\n const relY = (mouseY - currentPageRect.top - this.draggingElementShift.y) / pagesScale - (this.draggingInitialMouseOffset.y / pagesScale)\n\n this.updateObjectInPage(docIndex, currentPageIndex, objectId, { x: relX, y: relY })\n }\n return\n }\n\n if (payload.x !== undefined || payload.y !== undefined) {\n const newX = payload.x !== undefined ? payload.x : targetObject.x\n const newY = payload.y !== undefined ? payload.y : targetObject.y\n const objWidth = payload.width !== undefined ? payload.width : targetObject.width\n const objHeight = payload.height !== undefined ? payload.height : targetObject.height\n\n const { width: currentPageWidth, height: currentPageHeight } = this.getPageSize(docIndex, currentPageIndex)\n if (newX >= 0 && newY >= 0 &&\n newX + objWidth <= currentPageWidth &&\n newY + objHeight <= currentPageHeight) {\n this.updateObjectInPage(docIndex, currentPageIndex, objectId, payload)\n return\n }\n\n let bestPageIndex = currentPageIndex\n let maxVisibleArea = 0\n\n for (let pIndex = 0; pIndex < doc.pages.length; pIndex++) {\n const pageWidth = this.getPageWidth(docIndex, pIndex)\n const pageHeight = this.getPageHeight(docIndex, pIndex)\n\n const visibleArea = getVisibleArea(newX, newY, objWidth, objHeight, pageWidth, pageHeight)\n if (visibleArea > maxVisibleArea) {\n maxVisibleArea = visibleArea\n bestPageIndex = pIndex\n }\n }\n\n if (bestPageIndex !== currentPageIndex) {\n const { width: pageWidth, height: pageHeight } = this.getPageSize(docIndex, bestPageIndex)\n const { x: adjustedX, y: adjustedY } = clampPosition(newX, newY, objWidth, objHeight, pageWidth, pageHeight)\n\n this.removeObjectFromPage(docIndex, currentPageIndex, objectId)\n const updatedObject = {\n ...targetObject,\n ...payload,\n x: adjustedX,\n y: adjustedY,\n }\n doc.allObjects[bestPageIndex].push(updatedObject)\n this.objectIndexCache[`${docIndex}-${objectId}`] = bestPageIndex\n return\n }\n\n const { width: pageWidth, height: pageHeight } = this.getPageSize(docIndex, currentPageIndex)\n\n if (newX < 0 || newY < 0 ||\n newX + objWidth > pageWidth ||\n newY + objHeight > pageHeight) {\n return\n }\n }\n\n this.updateObjectInPage(docIndex, currentPageIndex, objectId, payload)\n },\n\n deleteObject(docIndex, objectId) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n const doc = this.pdfDocuments[docIndex]\n let deletedObject = null\n let deletedPageIndex = -1\n\n doc.allObjects.some((objects, pageIndex) => {\n const objectIndex = objects.findIndex(object => object.id === objectId)\n if (objectIndex === -1) {\n return false\n }\n deletedObject = objects[objectIndex]\n deletedPageIndex = pageIndex\n objects.splice(objectIndex, 1)\n return true\n })\n delete this.objectIndexCache[`${docIndex}-${objectId}`]\n if (deletedObject) {\n this.$emit('pdf-elements:delete-object', {\n object: deletedObject,\n docIndex,\n pageIndex: deletedPageIndex,\n })\n }\n },\n duplicateObject(docIndex, objectId) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n const doc = this.pdfDocuments[docIndex]\n\n const cacheKey = `${docIndex}-${objectId}`\n let pageIndex = this.objectIndexCache[cacheKey]\n\n if (pageIndex === undefined) {\n pageIndex = findObjectPageIndex(doc, objectId)\n if (pageIndex !== undefined) {\n this.objectIndexCache[cacheKey] = pageIndex\n }\n }\n\n if (pageIndex === undefined) return\n\n const sourceObject = doc.allObjects[pageIndex]?.find(o => o.id === objectId)\n if (!sourceObject) return\n\n const { width: pageWidth, height: pageHeight } = this.getPageSize(docIndex, pageIndex)\n const offset = 12\n const { x, y } = clampPosition(\n sourceObject.x + offset,\n sourceObject.y + offset,\n sourceObject.width,\n sourceObject.height,\n pageWidth,\n pageHeight,\n )\n\n let duplicatedSigner = sourceObject.signer\n if (duplicatedSigner?.element && Object.prototype.hasOwnProperty.call(duplicatedSigner.element, 'elementId')) {\n duplicatedSigner = {\n ...duplicatedSigner,\n element: { ...duplicatedSigner.element },\n }\n delete duplicatedSigner.element.elementId\n }\n\n const duplicatedObject = {\n ...sourceObject,\n id: this.generateObjectId(),\n x,\n y,\n signer: duplicatedSigner,\n }\n\n doc.allObjects[pageIndex].push(duplicatedObject)\n this.objectIndexCache[`${docIndex}-${duplicatedObject.id}`] = pageIndex\n\n this.$nextTick(() => {\n const refKey = `draggable${docIndex}-${pageIndex}-${duplicatedObject.id}`\n const draggableRefs = this.$refs[refKey]\n if (draggableRefs && Array.isArray(draggableRefs) && draggableRefs[0]) {\n draggableRefs[0].isSelected = true\n }\n })\n },\n\n checkAndMoveObjectPage(docIndex, objectId, mouseX, mouseY) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return undefined\n const doc = this.pdfDocuments[docIndex]\n\n const cacheKey = `${docIndex}-${objectId}`\n let currentPageIndex = this.objectIndexCache[cacheKey]\n\n if (currentPageIndex === undefined) {\n currentPageIndex = findObjectPageIndex(doc, objectId)\n if (currentPageIndex !== undefined) {\n this.objectIndexCache[cacheKey] = currentPageIndex\n }\n }\n\n if (currentPageIndex === undefined) return undefined\n\n const targetObject = doc.allObjects[currentPageIndex]?.find(o => o.id === objectId)\n if (!targetObject) return currentPageIndex\n\n let targetPageIndex = currentPageIndex\n const pageBoundsMap = this.getPageBoundsMap()\n for (const key in pageBoundsMap) {\n const { docIndex: rectDocIndex, pageIndex, rect } = pageBoundsMap[key]\n if (rectDocIndex === docIndex &&\n mouseX >= rect.left && mouseX <= rect.right &&\n mouseY >= rect.top && mouseY <= rect.bottom) {\n targetPageIndex = pageIndex\n break\n }\n }\n\n const targetPageRect = this.getPageRect(docIndex, targetPageIndex)\n if (!targetPageRect) return currentPageIndex\n\n const pagesScale = this.getDisplayedPageScale(docIndex, targetPageIndex)\n const relX = (mouseX - targetPageRect.left - this.draggingElementShift.x) / pagesScale - (this.draggingInitialMouseOffset.x / pagesScale)\n const relY = (mouseY - targetPageRect.top - this.draggingElementShift.y) / pagesScale - (this.draggingInitialMouseOffset.y / pagesScale)\n\n const { width: pageWidth, height: pageHeight } = this.getPageSize(docIndex, targetPageIndex)\n const { x: clampedX, y: clampedY } = clampPosition(\n relX,\n relY,\n targetObject.width,\n targetObject.height,\n pageWidth,\n pageHeight,\n )\n\n if (targetPageIndex !== currentPageIndex) {\n this.removeObjectFromPage(docIndex, currentPageIndex, objectId)\n doc.allObjects[targetPageIndex].push({\n ...targetObject,\n x: clampedX,\n y: clampedY,\n })\n this.objectIndexCache[cacheKey] = targetPageIndex\n } else if (clampedX !== targetObject.x || clampedY !== targetObject.y) {\n this.updateObjectInPage(docIndex, currentPageIndex, objectId, { x: clampedX, y: clampedY })\n }\n\n return targetPageIndex\n },\n\n onMeasure(e, docIndex, pageIndex) {\n if (docIndex < 0 || docIndex >= this.pdfDocuments.length) return\n this.pdfDocuments[docIndex].pagesScale.splice(pageIndex, 1, e.scale)\n this._pageMeasurementCache[`${docIndex}-${pageIndex}`] = null\n this.cachePageBoundsForPage(docIndex, pageIndex)\n if (this.autoFitZoom) {\n this.scheduleAutoFitZoom()\n }\n },\n\n formatPageNumber(currentPage, totalPages) {\n return this.pageCountFormat\n .replace('{currentPage}', currentPage)\n .replace('{totalPages}', totalPages)\n },\n getPageWidth(docIndex, pageIndex) {\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return 0\n const measurement = this.getCachedMeasurement(docIndex, pageIndex, pageRef)\n return measurement.width\n },\n getPageHeight(docIndex, pageIndex) {\n const pageRef = this.getPageComponent(docIndex, pageIndex)\n if (!pageRef) return 0\n const measurement = this.getCachedMeasurement(docIndex, pageIndex, pageRef)\n return measurement.height\n },\n getPageSize(docIndex, pageIndex) {\n return {\n width: this.getPageWidth(docIndex, pageIndex),\n height: this.getPageHeight(docIndex, pageIndex),\n }\n },\n getCachedMeasurement(docIndex, pageIndex, pageRef) {\n const cacheKey = `${docIndex}-${pageIndex}`\n const doc = this.pdfDocuments[docIndex]\n const pagesScale = doc.pagesScale[pageIndex] || 1\n return getCachedMeasurement(this._pageMeasurementCache, cacheKey, pageRef, pagesScale)\n },\n calculateOptimalScale(maxPageWidth) {\n const containerWidth = this.$el?.clientWidth || 0\n if (!containerWidth || !maxPageWidth) return 1\n\n const availableWidth = containerWidth - 40\n return Math.max(0.1, Math.min(2, availableWidth / maxPageWidth))\n },\n scheduleAutoFitZoom() {\n if (this.autoFitApplied) return\n if (this.zoomRafId) return\n this.zoomRafId = window.requestAnimationFrame(() => {\n this.zoomRafId = 0\n this.adjustZoomToFit()\n })\n },\n adjustZoomToFit() {\n if (!this.autoFitZoom || this.autoFitApplied || !this.pdfDocuments.length) return\n\n const widths = this.pdfDocuments\n .flatMap(doc => doc.pageWidths || [])\n .filter(width => width > 0)\n\n let maxCanvasWidth = 0\n if (widths.length) {\n maxCanvasWidth = Math.max(...widths)\n } else {\n if (this.autoFitZoom) {\n this.scheduleAutoFitZoom()\n return\n }\n const canvases = this.$el?.querySelectorAll('canvas')\n if (!canvases?.length) return\n maxCanvasWidth = Math.max(...Array.from(canvases).map(canvas =>\n canvas.width / (this.scale || 1),\n ))\n }\n\n const optimalScale = this.calculateOptimalScale(maxCanvasWidth)\n this.autoFitApplied = true\n if (Math.abs(optimalScale - this.scale) > 0.01) {\n this.scale = optimalScale\n this.visualScale = optimalScale\n applyScaleToDocs(this.pdfDocuments, this.scale)\n this._pageMeasurementCache = {}\n this.cachePageBounds()\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.pdf-elements-root {\n width: 100%;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n.pages-container {\n width: 100%;\n padding: 20px 0 0 0;\n text-align: center;\n background: #f7fafc;\n overflow: hidden;\n}\n.page-slot {\n margin: 0 auto;\n}\n.page-wrapper {\n display: inline-block;\n margin-bottom: 0;\n}\n.page-canvas {\n position: relative;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\n}\n.shadow-outline {\n box-shadow: 0 0 0 3px rgb(66 153 225 / 50%);\n}\n.preview-element {\n position: absolute;\n opacity: 0.7;\n pointer-events: none;\n}\n.overlay {\n position: absolute;\n top: 0;\n left: 0;\n transform-origin: top left;\n width: 100%;\n height: 100%;\n}\n.page-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 20px 20px 20px;\n color: #4b5563;\n font-size: 14px;\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PDFElements.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-126.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PDFElements.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PDFElements.vue?vue&type=template&id=4b0138d1&scoped=true\"\nimport script from \"./PDFElements.vue?vue&type=script&lang=js\"\nexport * from \"./PDFElements.vue?vue&type=script&lang=js\"\nimport style0 from \"./PDFElements.vue?vue&type=style&index=0&id=4b0138d1&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b0138d1\",\n null\n \n)\n\nexport default component.exports","// SPDX-FileCopyrightText: 2026 LibreCode coop and contributors\n// SPDX-License-Identifier: AGPL-3.0-or-later\n\nimport PDFElements from './components/PDFElements.vue'\nexport { setWorkerPath } from './utils/asyncReader.js'\n\nPDFElements.install = function(Vue) {\n if (PDFElements.install.installed) return\n Vue.component(PDFElements.name, PDFElements)\n}\n\nif (typeof window !== 'undefined' && window.Vue) {\n PDFElements.install(window.Vue)\n}\n\nexport default PDFElements\nexport { PDFElements }\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["root","factory","exports","module","define","amd","self","this","isCallable","it","call","aCallable","anObject","tryToString","getIteratorMethod","$TypeError","TypeError","argument","usingIterator","iteratorMethod","arguments","length","$","iterate","getIteratorDirect","iteratorClose","iteratorHelperWithoutClosingOnEarlyError","findWithoutClosingOnEarlyError","target","proto","real","forced","find","predicate","error","record","counter","value","stop","IS_RECORD","INTERRUPTED","result","uncurryThis","fails","hasOwn","DESCRIPTORS","CONFIGURABLE_FUNCTION_NAME","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","get","$String","String","defineProperty","Object","stringSlice","slice","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","split","makeBuiltIn","name","options","getter","setter","configurable","arity","constructor","writable","prototype","undefined","state","source","Function","toString","FunctionPrototype","getDescriptor","getOwnPropertyDescriptor","EXISTS","PROPER","CONFIGURABLE","getBuiltIn","getIteratorFlattenable","createIteratorProxy","IS_PURE","iteratorHelperThrowsOnInvalidIterator","throwsOnIteratorWithoutReturn","Iterator","flatMap","Map","entries","v","next","FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","flatMapWithoutClosingOnEarlyError","FORCED","IteratorProxy","inner","iterator","mapper","done","test","bind","hasOwnProperty","isPrototypeOf","Prototype","methodName","method","ceil","Math","floor","trunc","x","n","USE_SYMBOL_AS_UID","$Object","$Symbol","classof","getMethod","isNullOrUndefined","Iterators","wellKnownSymbol","ITERATOR","internalObjectKeys","enumBugKeys","keys","O","set","has","NATIVE_WEAK_MAP","globalThis","isObject","createNonEnumerableProperty","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","getterFor","TYPE","type","store","metadata","facade","STATE","number","iters","kind","i","V8","ENVIRONMENT","structuredClone","buffer","ArrayBuffer","clone","transfer","byteLength","callWithSafeIterationClosing","MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","mapWithoutClosingOnEarlyError","map","obj","toIndexedObject","indexOf","push","object","names","key","descriptor","f","TO_STRING_TAG","F","getPrototypeOf","activeXDocument","definePropertiesModule","html","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","style","display","appendChild","src","contentWindow","document","open","NullProtoObject","ActiveXObject","domain","create","Properties","FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR","filterWithoutClosingOnEarlyError","filter","isArrayIteratorMethod","lengthOfArrayLike","getIterator","Result","stopped","ResultPrototype","iterable","unboundFunction","iterFn","index","step","that","AS_ENTRIES","IS_ITERATOR","fn","condition","callFn","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","input","pref","exoticToPrim","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","navigator","userAgent","NATIVE_ARRAY_BUFFER","arrayBufferByteLength","DataView","id","postfix","random","someWithoutClosingOnEarlyError","some","functionToString","getOwnPropertySymbols","createElement","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","item","len","argCount","ArrayPrototype","Array","userAgentStartsWith","Bun","version","Deno","process","window","val","valueOf","isArray","WorkerThreads","channel","$detach","getBuiltInNodeModule","PROPER_STRUCTURED_CLONE_TRANSFER","$ArrayBuffer","$MessageChannel","MessageChannel","detach","transferable","port1","postMessage","V8_VERSION","symbol","Symbol","sham","SILENT_ON_NON_WRITABLE_LENGTH_SET","METHOD_NAME","ExpectedError","IteratorPrototype","CLOSED","check","definePropertyModule","createPropertyDescriptor","documentAll","all","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","P","Attributes","current","enumerable","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","isDetached","IndexedObject","requireObjectCoercible","toIntegerOrInfinity","max","min","integer","uncurryThisAccessor","toIndex","notDetached","detachTransferable","ArrayBufferPrototype","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","arrayBuffer","newLength","preserveResizability","newBuffer","newByteLength","fixedLength","a","b","copyLength","V","func","NATIVE_BIND","apply","uid","toLength","defineBuiltIn","ENTRIES","defineGlobalProperty","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","global","STATIC","stat","dontCallGetSet","defineBuiltInAccessor","objectKeys","defineProperties","props","MAX_SAFE_INTEGER","simple","unsafe","nonConfigurable","nonWritable","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","tag","callee","toPrimitive","bitmap","NATIVE_SYMBOL","propertyIsEnumerable","propertyIsEnumerableModule","forEachWithoutClosingOnEarlyError","forEach","SHARED","versions","mode","copyright","license","PrototypeOfArrayIteratorPrototype","arrayIterator","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","$RangeError","RangeError","ownKeys","getOwnPropertyDescriptorModule","exceptions","aFunction","namespace","$transfer","transferToFixedLength","anInstance","createProperty","CONSTRUCTOR","NativeIterator","IteratorConstructor","defineIteratorPrototypeAccessor","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","getOwnPropertyNames","stringHandling","$propertyIsEnumerable","NASHORN_BUG","exec","IS_NODE","getBuiltinModule","defineBuiltIns","createIterResultObject","iteratorCloseAll","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","NORMAL","THROW","setInternalState","createIteratorProxyPrototype","nextHandler","returnHandlerResult","returnMethod","openIters","WrapForValidIteratorPrototype","IteratorHelperPrototype","RETURN_HANDLER_RESULT","uncurryThisWithBind","match","v8","innerResult","innerError","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","includes","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","prop","p","currentScript","render","_vm","_c","_self","staticClass","width","height","pdfDocuments","_l","pdfDoc","docIndex","pages","page","pIndex","on","$event","selectPage","class","selectedDocIndex","selectedPageIndex","ref","refInFor","attrs","scale","onMeasure","handleMouseMove","handleOverlayClick","isAddingMode","previewPageDocIndex","previewPageIndex","previewElement","previewVisible","left","previewPosition","previewScale","top","y","_t","_e","allObjects","getDisplayedPageScale","getPageWidth","getPageHeight","readOnly","payload","updateObject","on-delete","deleteObject","on-duplicate","duplicateObject","on-drag-start","mouseX","mouseY","pointerOffset","dragShift","startDraggingElement","updateDraggingPosition","stopDraggingElement","isDraggingElement","draggingObject","draggingClientPosition","draggingDocIndex","draggingPageIndex","showSelectionHandles","hideSelectionUI","resizable","showElementActions","ignoreClickOutsideSelectors","scopedSlots","_u","slotProps","onDelete","onResize","onDuplicate","showPageFooter","_v","_s","formatPageNumber","numPages","position","draggingScale","pointerEvents","staticRenderFns","Promise","required","Number","default","dynamicScale","isRendering","pendingRender","renderTask","watch","newScale","mounted","beforeUnmount","cancel","e","methods","getCanvasMeasurement","canvasWidth","$refs","canvas","canvasHeight","measure","$emit","_page","context","getContext","viewport","getViewport","canvasContext","promise","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","component","isSelected","isBeingDraggedGlobally","showSelectionUi","showDefaultActions","toolbarStyle","stopPropagation","selected","elementStyle","dragElementStyle","preventDefault","handleElementClick","startResizeFromSlot","resizeDirections","dir","startResize","pagesScale","pageWidth","pageHeight","onUpdate","onDragStart","onDragMove","onDragEnd","Boolean","draggingClientPos","currentDocIndex","currentPageIndex","globalDragDocIndex","globalDragPageIndex","direction","startX","startY","startLeft","startTop","startWidth","startHeight","offsetX","offsetY","resizeOffsetX","resizeOffsetY","resizeOffsetW","resizeOffsetH","aspectRatio","lastMouseX","lastMouseY","pointerOffsetDoc","currentPageRect","rafId","computed","isDragging","isResizing","currentX","currentY","currentWidth","currentHeight","toolbarOffset","nextTop","transform","opacity","handleClickOutside","boundHandleMove","handleMove","boundStopInteraction","stopInteraction","addEventListener","removeEventListener","cancelAnimationFrame","event","closest","startDrag","selectors","selector","$el","contains","classList","touches","clientX","clientY","resetResizeOffsets","elementRect","querySelector","getBoundingClientRect","pageRect","capturePageRect","dragElementShift","expectedLeft","expectedTop","requestAnimationFrame","deltaX","deltaY","newElementLeft","newElementTop","newX","newY","_globalDrag","_mouseX","_mouseY","minSize","newWidth","newHeight","newLeft","newTop","widthChange","overflow","excess","resetOffsets","wrapper","isNodeJS","nw","electron","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","ANY","DISPLAY","PRINT","SAVE","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","IS_EDITING","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","POPUP","SIGNATURE","COMMENT","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","DRAW_STEP","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","MeshFigureType","TRIANGLES","LATTICE","PATCH","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","VerbosityLevel","ERRORS","WARNINGS","INFOS","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","setStrokeTransparent","setFillTransparent","rawFillPath","DrawOPS","quadraticCurveTo","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","isInteger","getVerbosityLevel","info","msg","console","warn","unreachable","Error","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","addDefaultProtocol","startsWith","dots","tryConvertEncoding","stringToUTF8String","absoluteUrl","URL","parse","updateUrlHash","hash","allowRel","res","href","shadow","nonSerializable","BaseException","message","PasswordException","code","super","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","MAX_ARGUMENT_COUNT","fromCharCode","strBuf","chunkEnd","chunk","subarray","stringToBytes","str","Uint8Array","charCodeAt","string32","isLittleEndian","buffer8","view32","Uint32Array","isEvalSupported","util_FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","isFloat16ArraySupported","Float16Array","isSanitizerSupported","Sanitizer","platform","isAndroid","isLinux","isMac","isWindows","isFirefox","isCSSRoundSupported","CSS","supports","hexNumbers","from","padStart","Util","makeHexColor","r","g","domMatrixToTransform","dm","c","scaleMinMax","minMax","m1","m2","multiplyByDOMMatrix","m","md","applyTransform","pos","p0","p1","applyTransformToBezier","m0","m3","m4","m5","pI","pI1","applyInverseTransform","axialAlignedBoundingBox","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","inverseTransform","singularValueDecompose2dScale","matrix","first","second","sqrt","normalizeRect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","pointBoundingBox","rectBoundingBox","x0","y0","x1","y1","x2","x3","y2","y3","t","mt","tt","ttt","abs","delta","sqrtDelta","bezierBoundingBox","decodeURIComponent","escape","NormalizeRegex","NormalizationMap","normalizeUnicode","replaceAll","_","p2","getUuid","crypto","randomUUID","buf","getRandomValues","AnnotationPrefix","_isValidExplicitDest","validRef","validName","dest","zoom","args","argsLen","allowNull","arg","MathClamp","toBase64Util","arr","toBase64","btoa","fromBase64Util","fromBase64","atob","try","resolve","sumPrecise","numbers","reduce","XfaText","textContent","xfa","items","styles","walk","node","shouldBuildText","attributes","children","child","XfaLayer","setupStorage","element","storage","intent","storedData","getValue","setValue","xfaOn","setAttribute","xfaOff","removeAttribute","checked","getAttribute","option","selectedIndex","setAttributes","linkService","isHTMLAnchorElement","HTMLAnchorElement","assign","addLinkAttributes","newWindow","dataId","parameters","annotationStorage","xfaHtml","rootHtml","isNotForRichText","rootDiv","div","append","textDivs","createTextNode","stack","at","pop","childHtml","xmlns","createElementNS","querySelectorAll","update","hidden","SVG_NS","PixelsPerInch","static","PDF","async","fetchData","isValidFetchUrl","baseURI","response","fetch","ok","statusText","blob","json","text","reject","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","send","PageViewport","viewBox","userUnit","rotation","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","rawDims","dims","pageX","pageY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","RenderingCancelledException","extraDelay","isDataScheme","ii","trim","substring","isPdfFile","filename","getFilenameFromUrl","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","getURL","urlString","newURL","decode","decoded","pdfRegex","pathname","searchParams","size","values","reverse","reFilename","hashFilename","StatTimer","started","times","time","Date","now","timeEnd","start","end","outBuf","longest","padEnd","noContextMenu","stopEvent","deprecated","log","PDFDateString","toDateObject","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","visibility","colorScheme","body","computedColor","getComputedStyle","remove","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","setLayerDimensions","mustFlip","mustRotate","useRound","w","widthStr","heightStr","OutputScale","pixelRatio","sx","sy","scaled","symmetric","limitCanvas","maxPixels","maxDim","capAreaFactor","maxAreaScale","Infinity","maxWidthScale","maxHeightScale","capPixels","maxScale","devicePixelRatio","winPixels","screen","availWidth","availHeight","SupportedImageMimeTypes","ColorScheme","isDarkMode","matchMedia","CSSConstants","commentForegroundColor","applyOpacity","white","round","RGBToHSL","rgb","l","HSLToRGB","hsl","s","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","array","Float32Array","baseHSL","fixedHSL","isFixedColorDark","minContrast","PRECISION","mid","renderRichText","className","container","fragment","createDocumentFragment","lines","line","firstElementChild","makePathFromDrawOPS","path","Path2D","bezierCurveTo","EditorToolbar","editor","freeze","freetext","highlight","ink","stamp","signature","editToolbar","signal","_uiManager","_signal","AbortSignal","aborted","buttons","toolbarPosition","insetInlineEnd","_focusEventsAllowed","capture","hide","hideDropdown","show","shown","addDeleteButton","editorType","button","tabIndex","delete","divider","addAltText","altText","addComment","comment","beforeElement","renderForToolbar","insertBefore","toolbar","addColorPicker","colorPicker","renderButton","addEditSignatureButton","signatureManager","renderEditButton","removeButton","removeToolbarCommentButton","addButton","tool","addButtonBefore","beforeSelector","updateEditSignatureButton","description","title","destroy","FloatingToolbar","uiManager","hasCommentManager","commentSelection","highlightSelection","boxes","isLTR","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","bindEvents","CurrentPointers","NaN","initializeAndAddPointerId","pointerId","Set","setPointer","pointerType","setTimeStamp","timeStamp","isSamePointerId","isSamePointerIdOrRemove","isSamePointerType","isInitializedAndDifferentPointerType","isSameTimeStamp","isUsingMultiplePointers","clearPointerType","clearPointerIds","clearTimeStamp","IdManager","ImageManager","_isSVGFittingCanvas","svg","willReadFrequently","image","Image","then","drawImage","getImageData","rawData","refCounter","isSvg","File","file","Blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","onerror","readAsDataURL","createImageBitmap","getFromFile","lastModified","getFromUrl","getFromBlob","blobPromise","getFromId","getFromCanvas","offscreen","transferToImageBitmap","getSvgUrl","deleteId","transferFromImageBitmap","convertToBlob","isValidId","CommandManager","maxSize","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","splice","redo","hasSomethingToUndo","hasSomethingToRedo","cleanType","KeyboardManager","callbacks","allKeys","callback","isMacKey","altKey","ctrlKey","metaKey","shiftKey","bubbles","checker","ColorManager","_colors","convert","RGB","every","_colorsMapping","getHexCode","AnnotationEditorUIManager","AbortController","_editorUndoBar","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","_keyboardManager","arrowChecker","activeElement","tagName","hasSomethingToControl","textInputChecker","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","viewer","viewerAlert","altTextManager","commentManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_eventBus","_on","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","onSetPreference","evt","updateParams","filterFactory","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","_supportsPinchToZoom","setSidebarUiManager","abort","layer","clear","clearTimeout","combinedSignal","ac","any","useNewAltTextFlow","useNewAltTextWhenAddingImage","hcmFilter","addHCMFilter","foreground","background","_highlightColors","pair","toUpperCase","hasHCM","isNameForHCM","endsWith","highlightColorNames","getNonHCMColor","colorName","getNonHCMColorName","setCurrentDrawingSession","disableUserSelect","setMainHighlightColorPicker","editAltText","firstTime","editComment","posX","posY","showDialog","selectComment","pageIndex","getEditorByUID","toggleComment","updateComment","getData","updatePopupColor","removeComment","removeComments","toggleCommentPopup","makeCommentColor","getCommentDialogElement","dialogElement","waitForEditorsRendered","pageNumber","withResolvers","onEditorsRendered","_off","getSignature","switchToMode","once","dispatch","setPreference","focusMainContainer","focus","findParent","layerX","layerY","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","anchorNode","nodeType","Node","TEXT_NODE","parentElement","textLayer","currentLayer","hasTextLayer","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","anchorElement","getSelectionBoxes","empty","isNoneMode","createAndAddNewEditor","showAllEditors","getAndRemoveDataFromAnnotationStorage","annotationId","storedValue","getRawValue","addToAnnotationStorage","a11yAlert","messageId","JSON","stringify","activeLayer","toggleDrawing","pointerup","blur","hasSelection","lastEditor","lastActiveElement","keydown","keyup","copy","cut","paste","dragOver","drop","addEditListeners","setEditingState","removeEditListeners","dataTransfer","isHandlingMimeForPasting","dropEffect","editors","serialized","serialize","clipboardData","setData","ex","newEditors","deserializedEditor","deserialize","addCommands","isEditorHandlingKeyboard","hasChanged","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","addLayer","enable","disable","removeLayer","updateMode","editId","isFromUser","isFromKeyboard","mustEnterInEditMode","hideSidebar","destroyPopup","hideStandaloneCommentButton","addStandaloneCommentButton","loadSignatures","getAnnotationsByType","editorClass","_editorType","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","showSidebar","setSelected","enterInEditMode","unselect","canCreateNewEmptyEditor","addNewEditor","updateToolbar","action","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","promises","getEditors","getEditor","addEditor","removeEditor","setTimeout","addDeletedAnnotationElement","addChangedExistingAnnotation","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","ed","updateUI","updateUIForDefaultProperties","toggleSelected","select","firstSelectedEditor","params","cleanUndoStack","drawingEditor","endDrawingSession","commit","noCommit","totalX","totalY","TIME_TO_WAIT","translateInPage","translationDone","setUpDragSession","savedX","savedY","savedPageIndex","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","isEditingMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","range","collapsed","getClientRects","renderAnnotationElement","editorId","hasBeenModified","setMissingCanvas","setCanvas","addMissingCanvas","AltText","added","review","initialize","l10n","_l10n","label","onClick","_reportTelemetry","guessedText","finish","focusVisible","hasData","setGuessedText","generatedAltText","toggleAltTextBadge","badge","isForCopying","decorative","textWithDisclaimer","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","parentNode","getElementForAltText","Comment","renderForStandalone","commentButtonPosition","commentButtonColor","backgroundColor","focusButton","onUpdatedColor","commentButtonWidth","boundingClientRect","commentPopupPositionInLayer","parentX","parentY","hasDefaultPopupPosition","removeStandaloneCommentButton","setCommentButtonStates","hasPopup","ariaExpanded","isStandalone","ariaHasPopup","ariaControls","ariaControlsElements","edit","parentDimensions","isDeleted","hasBeenEdited","richText","date","setInitialText","TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","passive","MIN_TOUCH_DISTANCE_TO_PINCH","pointerDownAC","opts","cancelPointerDown","opt","onTouchEnd","touch0","touch1","identifier","touch0X","screenX","touch0Y","screenY","touch1X","touch1Y","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","hypot","pDistance","origin","AnnotationEditor","_isCopy","_editToolbar","_initialOptions","_initialData","_isVisible","_zIndex","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","_willKeepAspectRatio","isCentered","_structTreeParentId","creationDate","modificationDate","canAddComment","pageRotation","pageDimensions","pageTranslation","isAttachedToDOM","_type","isDrawer","_defaultLineColor","_colorManager","deleteAnnotationElement","fakeEditor","FakeEditor","getNextId","_l10nResizer","topMiddle","topRight","middleRight","bottomMiddle","bottomLeft","middleLeft","_borderLineWidth","documentElement","parseFloat","getPropertyValue","_value","mime","_isDraggable","center","parentRotation","fixAndSetPosition","setInBackground","zIndex","setInForeground","setParent","focusin","focusout","relatedTarget","isMultipleSelection","isInEditMode","setAt","screenToPageTranslation","_moveAfterPaste","baseX","baseY","_onTranslated","_onTranslating","translate","scrollIntoView","block","findNewParent","bx","by","getBaseTranslation","toFixed","_hasBeenMoved","_hasBeenResized","_mustFixPosition","moveInDOM","angle","pageTranslationToScreen","parentScale","setDims","getInitialTranslation","classes","prepend","savedDraggable","togglePointerEvents","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","_onResized","_round","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","fromKeyboard","lastScreenX","lastScreenY","oldDiag","_onResizing","altTextFinish","toolbarButtons","addEditToolbar","addCommentButton","addCommentButtonInToolbar","removeCommentButtonFromToolbar","removeEditToolbar","addContainer","editToolbarDiv","before","getClientDimensions","createAltText","altTextData","guessedAltText","setGuessedAltText","serializeAltText","hasAltText","hasAltTextData","focusCommentButton","setCommentData","updateFromAnnotationLayer","hasEditedComment","hasDeletedComment","setSelectedCommentButton","setSelectedButton","DEFAULT_POPUP_WIDTH","DEFAULT_POPUP_HEIGHT","trY","blX","blY","trX","popup","contents","parentBoundingClientRect","defaultL10nId","maxWidth","maxHeight","_origin","prevDistance","slowDownFactor","factor","transfCenterPoint","newTransfCenterPoint","pointerdown","hasDraggingStarted","cancelDrag","_onStopDragging","_onStartDragging","isPrimary","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","getPDFRect","onceAdded","enableEditMode","disableEditMode","needsToBeRebuilt","isOnScreen","bottom","right","innerHeight","innerWidth","rotate","_angle","serializeDeleted","annotationType","structTreeParentId","accessibilityData","isCopy","hideCommentPopup","timeout","makeResizable","commentButtonPositionInPage","commentPopupPosition","elementBeforePopup","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","lastElementChild","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","canChangeContent","dblclick","nodeName","contentDiv","telemetryInitialData","telemetryFinalData","_telemetryTimeout","updateFakeAnnotationElement","annotationLayer","updateEdited","addFakeAnnotation","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","isView","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","AnnotationStorage","onSetModified","onResetModified","onAnnotationEditor","defaultValue","resetModified","modified","entry","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","isCommentDeleted","counters","count","comments","edited","computeTelemetryFinalData","resetModifiedIds","updateEditor","modifiedIds","ids","FontLoader","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","disableFontFace","_inspectFont","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","font","attached","missingFile","createNativeFontFace","loaded","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","completeRequest","otherRequest","shift","complete","_loadTestFont","testFont","int32","offset","spliceString","insert","chunk1","chunk2","called","isFontReady","fillText","imageData","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","fontFamily","FontFaceObject","translatedData","inspectFont","extra","charProcOperatorList","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","objs","character","objId","cmds","fontExtraProperties","black","bold","isInvalidPDFjsFont","isType3Font","italic","remeasure","vertical","ascent","defaultWidth","descent","bbox","fontMatrix","fallbackName","clearData","defaultVMetrics","CssFontInfo","encoder","TextEncoder","encodedStrings","stringsLength","strings","encoded","encode","view","setUint32","TextDecoder","getUint32","SystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","setUint8","guessFallback","getUint8","styleLength","weightLength","FontInfo","bools","byteOffset","bitOffset","getFloat64","numCoords","getInt16","numPoints","numMetrics","stringData","systemFontInfoLength","cssFontInfoLength","cssFontInfoData","systemFontInfoData","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","bits","setFloat64","coord","setInt16","metric","PatternInfo","ir","coords","colorStops","figures","shadingType","nCoord","nColor","nStop","nFigures","figuresSize","figure","verticesPerRow","byteLen","dataView","u8data","coordsView","hex","setFloat32","figureCoordsView","Int32Array","colorsView","getIR","hasBBox","hasBackground","stops","getFloat32","coordsLength","figureCoords","colorsLength","figureColors","bounds","minX","maxX","minY","maxY","FontPathInfo","getUrlProp","location","getDataProp","Buffer","isNaN","getFactoryUrlProp","isRefProxy","num","gen","isNameProxy","isValidExplicitDest","LoopbackPort","listener","rmAbort","onAbort","terminate","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","onFn","wrapReason","MessageHandler","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","stream","capability","reason","actionName","handler","ah","transfers","sendWithPromise","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","enqueue","isCancelled","lastDesiredSize","sinkCapability","ready","onPull","onCancel","success","streamController","dataReason","allSettled","BaseCanvasFactory","enableHWA","_createCanvas","reset","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","_fetch","cMapData","catch","DOMCMapReaderFactory","BaseFilterFactory","addFilter","maps","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","contain","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","tableR","tableG","tableB","fgRGB","bgRGB","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","k","j","feColorMatrix","feComponentTransfer","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","node_utils_fetchData","fs","readFile","NodeFilterFactory","NodeCanvasFactory","require","createRequire","createCanvas","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","FORCED_DEPENDENCY_LABEL","expandBBox","EMPTY_BBOX","BBoxReader","bboxes","ensureDebugMetadata","dependencies","isRenderingOperation","CanvasDependencyTracker","__proto__","sameLineText","Float64Array","operationsCount","recordDebugMetadata","growOperationsCount","oldBBoxes","Uint8ClampedArray","opIdx","previous","lastSave","recordOpenMarker","idx","getOpenMarker","recordCloseMarker","pushBaseTransform","popBaseTransform","recordSimpleData","recordIncrementalData","resetIncrementalData","recordNamedData","recordSimpleDataFromNamed","depName","fallbackIdx","recordFutureForcedDependency","inheritSimpleDataAsFutureForcedDependencies","inheritPendingDependenciesAsFutureForcedDependencies","dep","resetBBox","recordClipBox","clipBox","intersection","recordBBox","recordCharacterBBox","getMeasure","fontBBox","isBBoxTrustworthy","computedBBox","recordFullPageBBox","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","getSimpleIndex","dependencyName","recordDependencies","dependencyNames","pendingDependencies","incremental","recordNamedDependency","recordOperation","preserve","depIdx","saveIdx","recordShowTextOperation","deps","bboxToClipBoxDropOperation","_takePendingDependencies","_extractOperation","operation","_pushPendingDependencies","take","takeDebugMetadata","CanvasNestedDependencyTracker","dependencyTracker","ignoreBBoxes","Dependencies","imageXObject","transformAndFill","PathType","SHADING","applyBoundingBox","region","BaseShadingPattern","isModifyingCurrentTransform","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","isOriginBased","isRadial","_createGradient","grad","firstPoint","secondPoint","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","baseTransform","precision","n1","n2","ps","ownerBBox","getClippedPathBoundingBox","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","fillStyle","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","p3","c1","c2","c3","rowSize","tmp","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","cs","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","createImageData","putImageData","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","COLORED","UNCOLORED","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","combinedScaleX","combinedScaleY","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","clipBbox","executeOperatorList","endDrawing","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","strokeStyle","fillColor","strokeColor","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","FULL_CHUNK_HEIGHT","SCALE_MATRIX","XY","MIN_MAX_INIT","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","patternStroke","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","preInit","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","startNewPathAndClipBox","isEmptyClip","putBinaryImageData","imgData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","getImageSmoothingEnabled","interpolate","actualScale","fround","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","markedContentStack","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","nextBreakPoint","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","hcmFilterId","savedFilter","_scaleImage","img","displayWidth","displayHeight","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","_createMaskCanvas","isPatternFill","currentTransform","cacheKey","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","limit","dashArray","dashPhase","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","old","op","outerExtraSize","_pathStartIdx","consumePath","newPath","addPath","multiplySelf","rescaleAndStroke","needRestore","paths","pendingTextPaths","preMultiplySelf","spacing","fontRefName","fontObj","fontDirection","typeface","browserFontSize","rise","paintChar","patternFillTransform","patternStrokeTransform","fillStrokeMode","isAddToPathSet","scaledPath","invPatternTransform","measureText","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","spacingDir","widthAdvanceScale","simpleFillText","needsFill","needsStroke","getSinglePixelWidth","chars","glyph","unicode","joinedChars","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","renderingOpIdx","_getPattern","inv","group","currentCtx","isolated","knockout","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","annotationCanvas","savedCtx","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","workerPort","Worker","workerSrc","Metadata","parsedData","getRaw","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","viewState","printState","_setVisible","internal","userSet","OptionalContentConfig","creator","order","groups","baseState","off","getHash","operator","expression","policy","setVisibility","preserveRB","rbGroup","otherId","setOCGState","hasInitialVisibility","getOrder","getGroup","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","begin","_onReceiveData","addProgressListener","total","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","found","rangeReader","_begin","_progressiveDataLength","_loaded","onProgress","_removeRangeReader","reader","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","requestCapability","headersReady","isRangeSupported","isStreamingSupported","contentLength","read","_end","_queuedChunk","requestsCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","fatal","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","createHeaders","isHttp","httpHeaders","headers","Headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","contentEncoding","extractFilenameFromHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","credentials","redirect","getArrayBuffer","PDFFetchStream","_responseOrigin","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","getReader","_readCapability","responseOrigin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","xhr","NetworkManager","currXhrId","pendingRequests","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getResponseHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_url","_fullRequestId","_onHeadersReceived","_onDone","_onError","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","responseURL","rawResponseHeaders","getAllResponseHeaders","trimStart","lengthComputable","_requestId","_close","urlRegex","parseUrlOrPath","sourceUrl","pathToFileURL","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","_readableStream","lstat","_setReadableStream","createReadStream","_error","readableStream","INITIAL_DATA","PDFObjects","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","TextLayer","FontInspector","textContentSource","setProperty","finally","fontFamilyMap","pump","lang","onBefore","abortEx","textContentItemsStr","geom","textDiv","textDivProperties","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","sin","cos","divStyle","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","cleanup","alpha","cached","lineHeight","cachedAscent","metrics","fontBoundingBoxAscent","fontBoundingBoxDescent","ratio","RENDERING_CANCELLED_TIMEOUT","getDocument","task","PDFDocumentLoadingTask","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","stopAtErrors","maxImageSize","chrome","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","wasmFactory","port","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","NetworkStream","workerId","transport","WorkerTransport","_transport","_capability","onPassword","_pendingDestroy","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","pageIndexesToSkip","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","extractPages","pageInfos","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","_intentStates","recordedBBoxes","getAnnotations","getPageJSActions","getXfa","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordOperations","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","recordForDebugger","StepperManager","shouldRecordOperations","renderTasks","internalRenderTask","gfx","setOperatorBBoxes","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","includeMarkedContent","disableNormalization","TEXT_CONTENT_CHUNK_SIZE","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","_isSameOrigin","otherUrl","base","other","_createCDNWrapper","createObjectURL","fromPort","terminateEarly","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","loader","import","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","isOpList","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","_numPages","htmlForXfa","updatePassword","err","exportedData","exportedError","fontData","fontAdded","imageRef","pageProxy","dataLen","refStr","results","hasStructTree","cleanupSuccessful","RenderTask","onContinue","form","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","_canvasContext","_enableHWA","_dependencyTracker","_operationsFilter","init","getNextBreakPoint","updateOperatorList","build","ColorPicker","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","blue","green","pink","red","yellow","swatch","ariaHidden","renderMainDropdown","dropdown","ariaOrientation","ariaLabelledBy","role","ariaMultiSelectable","ariaSelected","updateColor","nextSibling","previousSibling","detail","BasicColorPicker","colorType","makeColorComp","scaleAndClamp","ColorConverters","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","BaseSVGFactory","skipDimensions","_createSVG","DOMSVGFactory","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","TIMEZONE_OFFSET","getTimezoneOffset","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","downloadManager","imageResourcesPath","renderForms","svgFactory","enableComment","enableScripting","_fieldObjects","fieldObjects","hasOwnCommentButton","contentElement","_createContainer","_createQuadrilaterals","_hasPopupData","_isEditable","isEditable","hasPopupData","commentText","commentData","hasCommentButton","hasPopupElement","quadPoints","inkLists","inkList","_normalizePoint","removePopup","newPopup","_createPopup","resetEdited","currentRect","setRotation","alternativeText","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","_commonActions","setColor","jsName","styleName","colorArray","noView","noPrint","userName","readonly","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","eventProxy","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","defs","clipPath","rectWidth","rectHeight","backgroundImage","popupData","titleObj","parentRect","elements","extraPopupElement","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","annotationEditorType","EditorAnnotationElement","createOrUpdatePopup","removeAnnotation","isTooltipOnly","link","isBound","_bindNamedAction","overlaidText","attachment","attachmentDest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","showElementAndHideCanvas","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","Blur","Focus","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","numberOfLines","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","datetimeFormat","datetimeType","timeStep","hasDateOrTime","maxLength","defaultFieldValue","blurListener","scrollLeft","getHours","getMinutes","getSeconds","toISOString","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","fieldWidth","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","lastChild","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","findIndex","selectChild","indices","editable","changeEx","keyDown","_commentManager","PopupElement","trigger","renderCommentButton","after","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","outlineColor","header","dateObj","dateTime","popupLines","popupContent","lineAttributes","useParentRect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","vertices","points","polyline","thickness","mark","underline","strikeout","AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","_annotationEditorUIManager","hasEditableAnnotations","annotations","popupToElements","popupAnnotations","elementParams","noHTML","isPopupAnnotation","rendered","replaceChildren","getAriaAttributes","ariaAttributes","sort","top1","bot1","mid1","top2","bot2","mid2","centerX1","centerX2","addPointerInTextLayer","addLinkAnnotations","_defaultBorderStyle","firstChild","replaceWith","editableAnnotation","_hasNoCanvas","getEditableAnnotations","getEditableAnnotation","removePointerInTextLayer","updateFakeAnnotations","rawWidth","EOL_PATTERN","FreeTextEditor","_colorPicker","_translateEmpty","_defaultColor","_defaultFontSize","_internalPadding","setFontsize","editorDiv","savedFontsize","col","savedColor","overlayDiv","contentEditable","editorDivKeydown","editorDivFocus","editorDivBlur","editorDivInput","editorDivPaste","innerText","prevChild","childNodes","savedDisplay","savedVisibility","savedText","newText","trimEnd","setText","nodeValue","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","Range","beforeLength","setStart","setEnd","removeAllRanges","addRange","padding","Outline","toSVGPath","_rotation","_rescale","_rescaleAndSwap","_translate","svgRound","_normalizePagePoint","createBezierPoints","FreeDrawOutliner","scaleFactor","innerMargin","lastTop","lastBottom","diffX","diffY","diffD","K","nX","nY","thX","thY","lastTopX","lastTopY","lastBottomX","lastBottomY","newFreeDrawOutline","outline","FreeDrawOutline","getOutlines","last","N","lastPoint","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","newOutliner","getNewOutline","outliner","HighlightOutliner","NUMBER_OF_DIGITS","EPSILON","shiftedMinX","shiftedMinY","lastEdge","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","polygon","prevX","prevY","classNamesForOutlining","FreeHighlightOutliner","FreeHighlightOutline","HighlightEditor","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","numberOfColors","outlinerForOutline","highlightOutlines","clipPathId","extraThickness","drawLayer","finalizeDraw","drawOutline","rootClass","highlightOutline","free","updateProperties","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","addUndoableEditor","mustBeSelected","draw","highlightDiv","pointerover","hovered","pointerleave","setPosition","startHighlighting","_freeHighlight","_freeHighlightId","_freeHighlightClipId","DrawingOptions","updateProperty","updateSVGProperty","toSVGProperties","updateAll","DrawingEditor","_drawId","mustBeCommitted","_addOutlines","drawOutlines","drawId","drawingOptions","_drawingOptions","defaultProperties","_mergeSVGProperties","defaultSVGProperties","p1Keys","getDefaultDrawingOptions","_options","typesMap","supportMultipleDrawings","propertyName","_defaultDrawingOptions","_currentParent","_currentDrawId","_updateProperty","savedValue","getPathResizingSVGProperties","getPathResizedSVGProperties","_x","_y","getPathTranslatedSVGProperties","moving","updateParent","pW","pH","updateRotation","updateParentDimensions","onScaleChangingWhenDrawing","drawDiv","createDrawerInstance","_parentWidth","_parentHeight","startDrawing","_isLTR","_endDraw","isCancellable","removeLastElement","_drawMove","startNew","_cleanup","lastElement","getLastElement","setLastElement","isAborted","_INNER_MARGIN","createDrawingOptions","_data","deserializeDraw","_pageX","_pageY","_pageWidth","_pageHeight","_innerWidth","serializeDraw","InkDrawOutliner","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","serializedLines","serializedPoints","rescaleFn","newLines","margin","marginX","marginY","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","rotationTransform","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","_viewParameters","InkEditor","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","SignatureExtractor","sigmaSFactor","sigmaR","kernelSize","i0","j0","kk","shiftI","shiftJ","threshold","lnbd","nbd","contours","ij","pix","i2","j2","isHole","contour","contour0","i1","j1","i3","j3","i4","j4","ij3","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","atan","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","kernel","sigmaS2","halfSize","exp","rangeValues","sigmaR2","out","histogram","sum","norm","neighbour","M","L","spos","originalBitmap","prevWidth","prevHeight","log2","isteps","grayImage","uint8Buf","extractContoursFromText","fontStyle","SCALE","contourList","processDrawnLines","curves","mustSmooth","areContours","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","compressSignature","bufferType","minDiff","maxDiff","outlinesLength","dx","Int8Array","Int16Array","headerLength","BYTES_PER_ELEMENT","CompressionStream","writer","getWriter","BufferCtor","diffs","Response","readable","decompressSignature","signatureData","DecompressionStream","numberOfDrawings","diffsOffset","SignatureOptions","DrawnSignatureOptions","SignatureEditor","_defaultDrawnSignatureOptions","hasDescription","hasDescriptionStats","hasNoAltText","uuid","heightInPage","addSignature","setUuid","getSignaturePreview","outlineData","hasBeenSaved","getFromImage","getFromText","fontInfo","getDrawnSignature","isSignature","alt","StampEditor","bitmapUrl","bitmapFile","pasteEditor","getAsFile","hasAltTextStats","fromId","alt_text_modal","alt_text_type","mlGuessAltText","updateAltTextData","isEnabledFor","copyCanvas","guess","channels","accept","files","click","bitmapId","MAX_RATIO","maxDataDimension","maxPreviewDimension","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","toUrl","toDataURL","missingCanvas","structParent","_structTree","changes","isSame","isSameAltText","stamps","area","prevData","isSamePageIndex","AnnotationEditorLayer","editorTypes","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","annotationElementIds","DBL_CLICK_THRESHOLD","lastPointerDownTimestamp","elementsFromPoint","regex","needFakeAnnotation","changedAnnotations","resetAnnotations","editables","currentActive","attach","moveElementInDOM","currentMode","startDrawingSession","pause","oldRotation","DrawLayer","_svgFactory","pathId","clipPathUse","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","cloneNode","elementOrId","pathElement","_pdfjsTestingUtils","pdfjsLib","FeatureTest","GlobalWorkerOptions","ImageKind","pdfWorkerCode","sharedWorker","getSharedWorker","readAsArrayBuffer","readAsPDF","isArrayBuffer","isBlob","clampPosition","getVisibleArea","objWidth","objHeight","visibleLeft","visibleTop","visibleRight","visibleBottom","getViewportWindow","scrollTop","viewHeight","isPageInViewport","offsetTop","offsetHeight","applyScaleToDocs","docs","doc","objectIdExistsInDoc","objectId","objects","findObjectPageIndex","updateObjectInDoc","objectIndex","removeObjectFromDoc","getCachedMeasurement","pageRef","measurement","normalized","PDFPage","DraggableElement","initFiles","initFileNames","initialScale","emitObjectClick","pageCountFormat","autoFitZoom","hoverRafId","pendingHoverClientPos","lastHoverRect","addingListenersAttached","dragRafId","pendingDragClientPos","pageBoundsVersion","lastScrollTop","lastClientWidth","nextObjectCounter","draggingInitialMouseOffset","draggingElementShift","lastMouseClientPos","viewportRafId","objectIndexCache","zoomRafId","wheelZoomRafId","boundHandleWheel","visualScale","autoFitApplied","lastContainerWidth","created","_pagesBoundingRects","_pagesBoundingRectsList","_pageMeasurementCache","_lastPageBoundsScrollTop","_lastPageBoundsClientHeight","handleWheel","onViewportScroll","detachAddingListeners","pageWidths","pagePromise","scheduleAutoFitZoom","docsCount","$nextTick","cachePageBounds","getPageRect","elementScreenX","elementScreenY","pending","originalDocIndex","finalPageIndex","checkAndMoveObjectPage","refKey","draggableRefs","startAddingElement","templateObject","attachAddingListeners","nextRects","clientHeight","docIdx","pageIdx","getPageCanvasElement","cachePageBoundsForPage","getPageBoundsMap","getPageBoundsList","getPointerPosition","baseWidth","pageBoundsMap","fallbackRectWidth","getPageComponent","pageComponent","clientWidth","scrollChanged","widthChanged","cursorX","cursorY","rects","canvasEl","renderWidth","renderHeight","layoutScaleX","layoutScaleY","relX","relY","isFinite","pageObjects","hitObject","handleKeyDown","cancelAdding","nextVisual","commitZoom","finishAdding","objectToAdd","generateObjectId","rand","addObjectToPage","objectIdExists","updateObjectInPage","removeObjectFromPage","getAllObjects","normalizedCanvasHeight","normalizedCoordinates","targetObject","currentPageWidth","currentPageHeight","getPageSize","bestPageIndex","maxVisibleArea","visibleArea","adjustedX","adjustedY","updatedObject","deletedObject","deletedPageIndex","sourceObject","duplicatedSigner","signer","elementId","duplicatedObject","targetPageIndex","rectDocIndex","targetPageRect","clampedX","clampedY","currentPage","totalPages","calculateOptimalScale","maxPageWidth","containerWidth","availableWidth","adjustZoomToFit","widths","maxCanvasWidth","canvases","optimalScale","PDFElements","install","Vue","installed"],"ignoreList":[],"sourceRoot":""}
|