{"version":3,"file":"js/app.17d92852.js","mappings":"yFAESA,GAAG,O,4FADVC,EAAAA,EAAAA,IAKM,aAJJC,EAAAA,EAAAA,GAEM,MAFNC,EAEM,EADJC,EAAAA,EAAAA,IAAkCC,EAAA,CAArBC,GAAG,SAElBF,EAAAA,EAAAA,IAAeG,I,gBCJnB,MAAMC,EAAS,CAAC,EAKVC,GAA2B,OAAgBD,EAAQ,CAAC,CAAC,SAASE,KAEpE,Q,iquBCPSV,GAAG,YAAYW,IAAI,Q,SACfX,GAAG,e,UACJE,EAAAA,EAAAA,GAAyE,OAApEU,IAAAC,EAA2CC,IAAI,GAAGC,KAAK,Y,cAA5DC,G,GAECC,MAAM,Y,GAIFA,MAAM,Y,GACFA,MAAM,U,UACPf,EAAAA,EAAAA,GAAwD,SAAjDgB,KAAK,SAASC,KAAK,OAAOnB,GAAG,OAAOoB,MAAM,Q,cAC1CC,IAAI,OAEPJ,MAAM,M,UACNf,EAAAA,EAAAA,GAAsE,OAAjEU,IAAAU,EAAsDR,IAAI,Q,cAA/DS,G,UAKArB,EAAAA,EAAAA,GAAsE,OAAjEU,IALAU,EAKsDR,IAAI,Q,cAA/DU,G,UAGJtB,EAAAA,EAAAA,GAAwD,SAAjDgB,KAAK,SAASC,KAAK,OAAOnB,GAAG,OAAOoB,MAAM,Q,cAC1CC,IAAI,OACPJ,MAAM,M,UACNf,EAAAA,EAAAA,GAAsE,OAAjEU,IAAAa,EAAsDR,MAAM,M,eAAjES,G,WAIAxB,EAAAA,EAAAA,GAAsE,OAAjEU,IAJAa,EAIsDR,MAAM,M,eAAjEU,I,WAEJzB,EAAAA,EAAAA,GAAwB,OAAnBe,MAAM,QAAM,W,qCAKbf,EAAAA,EAAAA,GAA8E,OAAzEU,IAAAgB,EAAgDd,IAAI,GAAGG,MAAM,a,eAAlEY,I,qCAMA3B,EAAAA,EAAAA,GAA8E,OAAzEU,IAAAkB,EAAgDhB,IAAI,GAAGG,MAAM,a,eAAlEc,I,WAIJ7B,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,OAAOW,MAAM,uB,EACpB9B,EAAAA,EAAAA,GAA2D,OAAtDU,IAAAqB,EAA+CnB,IAAI,O,gBAE5DZ,EAAAA,EAAAA,GAAwB,OAAnBe,MAAM,QAAM,W,0BAKbf,EAAAA,EAAAA,GAAgE,OAA3DU,IAAAsB,EAAoDpB,IAAI,I,eAA7DqB,I,0BAMAjC,EAAAA,EAAAA,GAA8D,OAAzDU,IAAAwB,EAAkDtB,IAAI,I,eAA3DuB,I,0BAMAnC,EAAAA,EAAAA,GAA8D,OAAzDU,IAAA0B,EAAkDxB,IAAI,I,eAA3DyB,I,0BAMArC,EAAAA,EAAAA,GAAgE,OAA3DU,IAAA4B,EAAoD1B,IAAI,I,eAA7D2B,I,IAIHxB,MAAM,gB,WAQHf,EAAAA,EAAAA,GAA+D,OAA1DU,IAAA8B,EAAmD5B,IAAI,I,eAQ3DG,MAAM,Y,WACPf,EAAAA,EAAAA,GAA+D,SAAxDgB,KAAK,SAASC,KAAK,OAAOnB,GAAG,UAAUiB,MAAM,Y,sBAEhDf,EAAAA,EAAAA,GAA0D,OAArDU,IAAA+B,EAA8C7B,IAAI,I,eAAvD8B,I,IAGC3B,MAAM,Y,IACFA,MAAM,kB,WACPf,EAAAA,EAAAA,GAAsB,UAAlB,iBAAa,K,IACbe,MAAM,Y,IAEGA,MAAM,iB,yBAGEA,MAAM,sB,IACFA,MAAM,W,eAINA,MAAM,iB,IAMVA,MAAM,kB,WACPf,EAAAA,EAAAA,GAAmD,OAA9CU,IAAAiC,EAAuC/B,IAAI,I,sBAChDZ,EAAAA,EAAAA,GAA2B,UAAvB,sBAAkB,K,IAElBe,MAAM,gB,yBAatBA,MAAM,qB,WACNf,EAAAA,EAAAA,GAEM,OAFDe,MAAM,WAAS,EAChBf,EAAAA,EAAAA,GAAkD,OAA7CU,IAAAkC,EAAsChC,IAAI,O,SAE9CG,MAAM,iB,IAUxBI,IAAI,YAAYJ,MAAM,KAAKe,MAAM,M,WACpC9B,EAAAA,EAAAA,GAA8D,OAAzDU,IAAAmC,EAAkDjC,IAAI,I,eACtDd,GAAG,gB,IACCA,GAAG,e,WACJE,EAAAA,EAAAA,GAAiC,KAA9B8C,MAAA,kBAAqB,SAAK,K,WAC7B9C,EAAAA,EAAAA,GAAmC,KAAhC8C,MAAA,kBAAqB,WAAO,K,IAC1B/B,MAAM,oBAAoB+B,MAAA,kB,WAG3B9C,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,kBAAkB2B,MAAA,mB,EACzB9C,EAAAA,EAAAA,GAAa,e,IAGhBe,MAAM,oBAAoB+B,MAAA,kB,WAG3B9C,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,mBAAmB2B,MAAA,mB,EAC1B9C,EAAAA,EAAAA,GAAa,e,IAYpCe,MAAM,Y,IACFA,MAAM,kB,WAEPf,EAAAA,EAAAA,GAA8C,SAAvCmB,IAAI,YAAYJ,MAAM,U,sBAG7Bf,EAAAA,EAAAA,GAA0C,SAAnCmB,IAAI,UAAUJ,MAAM,Q,sBAG3Bf,EAAAA,EAAAA,GAA0C,SAAnCmB,IAAI,UAAUJ,MAAM,Q,sBAG3Bf,EAAAA,EAAAA,GAA0C,SAAnCmB,IAAI,UAAUJ,MAAM,Q,sBAG3Bf,EAAAA,EAAAA,GAA8C,SAAvCmB,IAAI,YAAYJ,MAAM,U,sBAG7Bf,EAAAA,EAAAA,GAA0C,SAAnCmB,IAAI,UAAUJ,MAAM,Q,eAK9BA,MAAM,c,IACFA,MAAM,c,WACqFf,EAAAA,EAAAA,GAChE,SAAxBmB,IAAI,UAAS,OAAG,K,IAanBJ,MAAM,kB,uDAKMA,MAAM,e,yBAQlBA,MAAM,e,eAEFA,MAAM,e,IACHA,MAAM,O,IACLA,MAAM,a,WAUnBf,EAAAA,EAAAA,GAKM,OALDe,MAAM,sBAAoB,EAC3Bf,EAAAA,EAAAA,GAAmB,OAAdU,IAAI,GAAGE,IAAI,MAChBZ,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAS,e,IAIZe,MAAM,c,0DAYVA,MAAM,iB,IACFA,MAAM,Y,WACmFf,EAAAA,EAAAA,GAC7D,SAAzBmB,IAAI,WAAU,OAAG,K,IASpBJ,MAAM,gB,uDAKMA,MAAM,a,yBAQlBA,MAAM,a,eAEFA,MAAM,e,IACHA,MAAM,O,IACLA,MAAM,a,IAUdA,MAAM,c,0DAYVA,MAAM,iB,IACFA,MAAM,gB,IACFA,MAAM,e,WAGPf,EAAAA,EAAAA,GAGQ,SAHDmB,IAAI,aAAaJ,MAAM,S,EAC1Bf,EAAAA,EAAAA,GAA2C,OAAtCU,IAAAqC,KACL/C,EAAAA,EAAAA,GAAY,SAAT,WAAK,K,WAKZA,EAAAA,EAAAA,GAGQ,SAHDmB,IAAI,gBAAgBJ,MAAM,S,EAC7Bf,EAAAA,EAAAA,GAA2C,OAAtCU,IAAAsC,KACLhD,EAAAA,EAAAA,GAAe,SAAZ,cAAQ,K,IAKlBe,MAAM,a,WACPf,EAAAA,EAAAA,GAAW,sB,WACXA,EAAAA,EAAAA,GAIK,MAJDe,MAAM,aAAW,EACjBf,EAAAA,EAAAA,GAA0B,MAAtBe,MAAM,OAAM,UAChBf,EAAAA,EAAAA,GAAkC,UAA9B,+BAAyB,K,IAHjCiD,GACAC,I,IAOCnC,MAAM,oB,WACPf,EAAAA,EAAAA,GAAW,sB,IACPe,MAAM,oB,WACNf,EAAAA,EAAAA,GAA6B,MAAzBe,MAAM,OAAM,YAAQ,K,WACxBf,EAAAA,EAAAA,GAAmC,UAA/B,8BAA0B,K,IASrCe,MAAM,iB,IACFA,MAAM,Y,WAEOf,EAAAA,EAAAA,GAAgC,SAAzBmB,IAAI,WAAU,OAAG,K,IAYrCJ,MAAM,gB,4EAMMA,MAAM,a,IAINA,MAAM,a,IAOlBA,MAAM,a,eAEFA,MAAM,e,IACHA,MAAM,O,IACLA,MAAM,a,WAMnBf,EAAAA,EAAAA,GAKM,OALDe,MAAM,sBAAoB,EAC3Bf,EAAAA,EAAAA,GAAmB,OAAdU,IAAI,GAAGE,IAAI,MAChBZ,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAS,e,IAIZe,MAAM,c,0DAaVA,MAAM,mB,IACFA,MAAM,c,WAEOf,EAAAA,EAAAA,GAAgC,SAAzBmB,IAAI,WAAU,OAAG,K,IAUrCJ,MAAM,kB,4EAOMA,MAAM,e,IAINA,MAAM,e,IAOlBA,MAAM,e,eAEFA,MAAM,e,IACHA,MAAM,O,IACLA,MAAM,a,WAMnBf,EAAAA,EAAAA,GAKM,OALDe,MAAM,sBAAoB,EAC3Bf,EAAAA,EAAAA,GAAmB,OAAdU,IAAI,GAAGE,IAAI,MAChBZ,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAS,e,IAIZe,MAAM,c,0DAiDVA,MAAM,iB,IACFA,MAAM,gB,IACFA,MAAM,e,w2BAgDff,EAAAA,EAAAA,GAKM,OALDe,MAAM,sBAAoB,EAC3Bf,EAAAA,EAAAA,GAAmB,OAAdU,IAAI,GAAGE,IAAI,MAChBZ,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAS,e,IAOhBF,GAAG,qB,IACCA,GAAG,kBAAkBiB,MAAM,iB,IAO/BA,MAAM,uB,IAEFA,MAAM,6B,IACFA,MAAM,uB,IAKNA,MAAM,iC,IAIFA,MAAM,0B,qBAE0BA,MAAM,wB,2IAnlB/DhB,EAAAA,EAAAA,IAkmBM,MAlmBNE,EAkmBM,CAjmB2BkD,EAAAC,UAEvB,iBAF+B,WAArCrD,EAAAA,EAAAA,IAEM,MAFNsD,EAEMC,KACNtD,EAAAA,EAAAA,GA4lBM,MA5lBNuD,EA4lBM,EA1lBFrD,EAAAA,EAAAA,IAAUsD,IAEVxD,EAAAA,EAAAA,GAoKM,MApKNyD,EAoKM,EAnKFzD,EAAAA,EAAAA,GAiEM,MAjEN0D,EAiEM,CAhEFC,GAAwD,SACxD3D,EAAAA,EAAAA,GAIQ,QAJR4D,EAIQC,EAAA,iBAHSC,aAAaC,eAAiB,GAAKC,KAAKF,aAAaG,QAAQC,OAAS,MAAH,SAIpFlE,EAAAA,EAAAA,GAIQ,SAJDmB,IAAI,OAENgD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAC,gBAAAD,EAAAC,kBAAAF,K,mBADKP,aAAaC,cAAgB,GAAKC,KAAKF,aAAaG,QAAQC,OAAS,KAKtFM,GAAwD,SACxDxE,EAAAA,EAAAA,GAGQ,QAHRyE,EAGQC,GAAA,iBAHuBZ,aAAaG,QAAQC,QAAUF,KAAKF,aAAaC,aAAe,MAAH,SAI5F/D,EAAAA,EAAAA,GAGQ,SAHDmB,IAAI,OACNgD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAK,gBAAAL,EAAAK,kBAAAN,K,oBADmBP,aAAaG,QAAQC,OAASF,KAAKF,aAAaC,aAAe,KAI9Fa,IAAwB,SAExB5E,EAAAA,EAAAA,GACkD,SAD3CgB,KAAK,WAAWC,KAAK,WAAWnB,GAAG,WAAWoB,MAAM,W,qCAAoBiC,EAAA0B,WAAUC,GACpFC,QAAS5B,EAAA0B,WAAaG,UAAW7B,EAAA8B,Y,kBADyC9B,EAAA0B,eAE/E7E,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,WAAWJ,MAAM,aAAcoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEa,EAAAC,iBAAAD,EAAAC,mBAAAd,IAAiBvC,MAAM,mB,cAIxE9B,EAAAA,EAAAA,GACkD,SAD3CgB,KAAK,WAAWC,KAAK,WAAWnB,GAAG,WAAWoB,MAAM,W,qCAAoBiC,EAAA8B,WAAUH,GACpFC,QAAS5B,EAAA8B,WAAaD,UAAW7B,EAAA0B,Y,kBADyC1B,EAAA8B,eAE/EjF,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,WAAYgD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEa,EAAAE,iBAAAF,EAAAE,mBAAAf,IAAiBtD,MAAM,YAAYe,MAAM,mB,KAIvE9B,EAAAA,EAAAA,GAA+E,SAAxEgB,KAAK,WAAWC,KAAK,OAAOnB,GAAG,OAAOoB,MAAM,OAAQiD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAe,aAAAf,EAAAe,eAAAhB,MAClEiB,GAGAC,IAAwB,SAExBvF,EAAAA,EAAAA,GACiF,SAD1EgB,KAAK,WAAWC,KAAK,YAAYnB,GAAG,YAAYoB,MAAM,Y,qCAChDgE,EAAApB,aAAa0B,eAAcV,GAAGC,QAASG,EAAApB,aAAa0B,gB,kBAApDN,EAAApB,aAAa0B,mBAC1BxF,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,YAAagD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEa,EAAAO,oBAAAP,EAAAO,sBAAApB,IAAoBtD,MAAM,KAAKe,MAAM,0B,cAIpE9B,EAAAA,EAAAA,GAC+E,SADxEgB,KAAK,WAAWC,KAAK,aAAanB,GAAG,aAAaoB,MAAM,a,qCAClDgE,EAAApB,aAAa4B,cAAaZ,GAAGC,QAASG,EAAApB,aAAa4B,e,kBAAnDR,EAAApB,aAAa4B,kBAC1B1F,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,aAAcgD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAS,qBAAAT,EAAAS,uBAAAtB,IAAqBtD,MAAM,KAAKe,MAAM,yB,cAItE9B,EAAAA,EAAAA,GAC+E,SADxEgB,KAAK,WAAWC,KAAK,WAAWnB,GAAG,WAAWoB,MAAM,W,uCAC9CgE,EAAApB,aAAa8B,cAAad,GAAGC,QAASG,EAAApB,aAAa8B,e,kBAAnDV,EAAApB,aAAa8B,kBAC1B5F,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,WAAYgD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAW,mBAAAX,EAAAW,qBAAAxB,IAAmBtD,MAAM,KAAKe,MAAM,yB,cAIlE9B,EAAAA,EAAAA,GACmF,SAD5EgB,KAAK,WAAWC,KAAK,aAAanB,GAAG,aAAaoB,MAAM,a,uCAClDgE,EAAApB,aAAagC,gBAAehB,GAAGC,QAASG,EAAApB,aAAagC,iB,kBAArDZ,EAAApB,aAAagC,oBAC1B9F,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,aAAcgD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAa,qBAAAb,EAAAa,uBAAA1B,IAAqBtD,MAAM,KAAKe,MAAM,0B,OAK1E9B,EAAAA,EAAAA,GA+FM,MA/FNgG,GA+FM,EAxFF9F,EAAAA,EAAAA,IAEcC,EAAA,CAFDC,GAAG,YAAY0C,MAAA,gB,mBACxB,IAA+D,CAA/DmD,M,OAQJjG,EAAAA,EAAAA,GAqDM,MArDNkG,GAqDM,CApDFC,IACAnG,EAAAA,EAAAA,GAEQ,SAFDmB,IAAI,UAAUJ,MAAM,KAAKe,MAAM,OAAQqC,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA8B,iBAAA9B,EAAA8B,mBAAA/B,K,cAIrDrE,EAAAA,EAAAA,GA8CM,MA9CNqG,GA8CM,EA7CFrG,EAAAA,EAAAA,GA4CM,MA5CNsG,GA4CM,CA3CFC,IACAvG,EAAAA,EAAAA,GAyCK,KAzCLwG,GAyCK,gBAxCDzG,EAAAA,EAAAA,IA8BK0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IA9B8CvD,EAAAwD,UAAQ,CAApBC,EAAMC,M,WAA7C9G,EAAAA,EAAAA,IA8BK,MA9BDgB,MAAM,qBAAoD+F,IAAKD,G,EAC/D7G,EAAAA,EAAAA,GA4BM,MA5BN+G,GA4BM,EA3BF/G,EAAAA,EAAAA,GAAuE,SAAhEgB,KAAK,SAAUlB,GAAE,mBAAqB+G,IAAK9F,MAAM,gB,YACxDf,EAAAA,EAAAA,GAyBQ,SAzBAmB,IAAG,mBAAqB0F,K,EAC5B7G,EAAAA,EAAAA,GASM,MATNgH,GASM,EARFhH,EAAAA,EAAAA,GAEM,MAFNiH,GAEM,EADFjH,EAAAA,EAAAA,GAAkC,OAA5BU,IAAKkG,EAAKM,UAAWtG,IAAI,I,cAGnCZ,EAAAA,EAAAA,GAGM,MAHNmH,GAGM,EAFFnH,EAAAA,EAAAA,GAA6B,WAAAoH,EAAAA,EAAAA,IAAtBR,EAAKS,WAAS,IACrBrH,EAAAA,EAAAA,GAA6B,UAAAoH,EAAAA,EAAAA,IAAvBR,EAAKU,aAAW,QAI9BtH,EAAAA,EAAAA,GAYM,MAZNuH,GAYM,CAXFC,GACAC,IAEAzH,EAAAA,EAAAA,GAOK,KAPL0H,GAOK,EAND1H,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAiD,UAAxCmE,QAAKW,GAAER,EAAAqD,WAAWf,EAAKgB,MAAM,KAAE,EAAAC,OAE5C7H,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAkC,UAAzBmE,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA4C,OAAA5C,EAAA4C,SAAAzD,KAAO,aAAE,a,MAQblB,EAAAwD,SAASzC,OAAS,IAAH,WAAnDnE,EAAAA,EAAAA,IAOK,KAPLgI,GAOK,CANDC,IAGAhI,EAAAA,EAAAA,GAEM,MAFNiI,GAEM,EADFjI,EAAAA,EAAAA,GAAiC,MAA5BmE,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA4D,UAAA5D,EAAA4D,YAAA7D,KAAU,gBAAM,gCAzClBlB,EAAAgF,aAAM,SAiDxCnI,EAAAA,EAAAA,GAA0F,SAAnFgB,KAAK,WAAWC,KAAK,SAASnB,GAAG,YAAYoB,MAAM,S,uCAAkBiC,EAAAiF,aAAYtD,I,iBAAZ3B,EAAAiF,iBAC5EpI,EAAAA,EAAAA,GAsBQ,QAtBRqI,GAsBQ,CArBJC,IAA8D,SAC9DtI,EAAAA,EAAAA,GAmBM,MAnBNuI,GAmBM,EAlBFvI,EAAAA,EAAAA,GAiBM,MAjBNwI,GAiBM,CAhBFC,GACAC,IACA1I,EAAAA,EAAAA,GAMM,MANN2I,GAMM,WALF3I,EAAAA,EAAAA,GACsB,SADfgB,KAAK,WAAWlB,GAAG,kB,4CAAgCgE,aAAa8E,WAAU9D,GAC5EX,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAuE,UAAAvE,EAAAuE,YAAAxE,K,sBAD8CP,aAAa8E,cAEvEE,MAIJ9I,EAAAA,EAAAA,GAMM,MANN+I,GAMM,WALF/I,EAAAA,EAAAA,GACiE,SAD1DgB,KAAK,WAAWlB,GAAG,mB,4CACRgE,aAAakF,eAAclE,GAAGX,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAuE,UAAAvE,EAAAuE,YAAAxE,K,sBAArCP,aAAakF,kBAC/BC,QAEQ,YAhBW9F,EAAAiF,uBA2B3CpI,EAAAA,EAAAA,GAoBM,MApBNkJ,GAoBM,EAnBFlJ,EAAAA,EAAAA,GAkBM,MAlBNmJ,GAkBM,WAjBFnJ,EAAAA,EAAAA,GAAqF,SAA9EgB,KAAK,QAAQC,KAAK,WAAWnB,GAAG,YAAYoB,MAAM,S,uCAAkBiC,EAAAiG,SAAQtE,I,iBAAR3B,EAAAiG,YAC3EC,IAA8C,SAE9CrJ,EAAAA,EAAAA,GAAiF,SAA1EgB,KAAK,QAAQC,KAAK,WAAWnB,GAAG,UAAUoB,MAAM,O,uCAAgBiC,EAAAiG,SAAQtE,I,iBAAR3B,EAAAiG,YACvEE,IAA0C,SAE1CtJ,EAAAA,EAAAA,GAAiF,SAA1EgB,KAAK,QAAQC,KAAK,WAAWnB,GAAG,UAAUoB,MAAM,O,uCAAgBiC,EAAAiG,SAAQtE,I,iBAAR3B,EAAAiG,YACvEG,IAA0C,SAE1CvJ,EAAAA,EAAAA,GAAiF,SAA1EgB,KAAK,QAAQC,KAAK,WAAWnB,GAAG,UAAUoB,MAAM,O,uCAAgBiC,EAAAiG,SAAQtE,I,iBAAR3B,EAAAiG,YACvEI,IAA0C,SAE1CxJ,EAAAA,EAAAA,GAAqF,SAA9EgB,KAAK,QAAQC,KAAK,WAAWnB,GAAG,YAAYoB,MAAM,S,uCAAkBiC,EAAAiG,SAAQtE,I,iBAAR3B,EAAAiG,YAC3EK,IAA8C,SAE9CzJ,EAAAA,EAAAA,GAAiF,SAA1EgB,KAAK,QAAQC,KAAK,WAAWnB,GAAG,UAAUoB,MAAM,O,uCAAgBiC,EAAAiG,SAAQtE,I,iBAAR3B,EAAAiG,YACvEM,QAA0C,SAKlD1J,EAAAA,EAAAA,GA0DM,MA1DN2J,GA0DM,EAzDF3J,EAAAA,EAAAA,GAaM,MAbN4J,GAaM,WAZF5J,EAAAA,EAAAA,GAA4F,SAArFgB,KAAK,QAAQC,KAAK,MAAMnB,GAAG,SAASoB,MAAM,M,uCAAeiC,EAAA0G,iBAAgB/E,GAAEC,QAAA,I,iBAAlB5B,EAAA0G,oBAA4BC,IAChE,SAC5B9J,EAAAA,EAAAA,GAAqF,SAA9EgB,KAAK,QAAQC,KAAK,MAAMnB,GAAG,UAAUoB,MAAM,M,uCAAeiC,EAAA0G,iBAAgB/E,I,iBAAhB3B,EAAA0G,qBAAoB7J,EAAAA,EAAAA,GACM,SAAvFmB,IAAI,UAAW4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA8E,SAAA9E,EAAA8E,WAAA3F,IAAU4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAgF,MAAAhF,EAAAgF,QAAA7F,IAAMvC,MAAM,iBAAgB,MAAG,cACnF9B,EAAAA,EAAAA,GAAoF,SAA7EgB,KAAK,QAAQC,KAAK,MAAMnB,GAAG,UAAUoB,MAAM,O,uCAAgBiC,EAAA0G,iBAAgB/E,I,iBAAhB3B,EAAA0G,qBAAkB7J,EAAAA,EAAAA,GACD,SAA/EmB,IAAI,UAAW4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAiF,UAAAjF,EAAAiF,YAAA9F,IAAW4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAkF,OAAAlF,EAAAkF,SAAA/F,IAAOvC,MAAM,MAAK,OAAI,cAC3E9B,EAAAA,EAAAA,GAAsF,SAA/EgB,KAAK,QAAQC,KAAK,MAAMnB,GAAG,UAAUoB,MAAM,O,uCAAgBiC,EAAA0G,iBAAgB/E,I,iBAAhB3B,EAAA0G,qBAAoB7J,EAAAA,EAAAA,GACK,SAAvFmB,IAAI,UAAW4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAmF,UAAAnF,EAAAmF,YAAAhG,IAAW4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAoF,OAAApF,EAAAoF,SAAAjG,IAAOvC,MAAM,cAAa,OAAI,cACnF9B,EAAAA,EAAAA,GAAqF,SAA9EgB,KAAK,QAAQC,KAAK,MAAMnB,GAAG,UAAUoB,MAAM,M,uCAAeiC,EAAA0G,iBAAgB/E,I,iBAAhB3B,EAAA0G,qBAAoB7J,EAAAA,EAAAA,GACD,SAAhFmB,IAAI,UAAW4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAqF,SAAArF,EAAAqF,WAAAlG,IAAU4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAsF,OAAAtF,EAAAsF,SAAAnG,IAAOvC,MAAM,SAAQ,MAAG,cAC5E9B,EAAAA,EAAAA,GAAuF,SAAhFgB,KAAK,QAAQC,KAAK,MAAMnB,GAAG,UAAUoB,MAAM,Q,uCAAiBiC,EAAA0G,iBAAgB/E,I,iBAAhB3B,EAAA0G,qBAAoB7J,EAAAA,EAAAA,GACE,SAArFmB,IAAI,UAAW4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAuF,WAAAvF,EAAAuF,aAAApG,IAAY4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAwF,OAAAxF,EAAAwF,SAAArG,IAAOvC,MAAM,UAAS,QAAK,OAGrF9B,EAAAA,EAAAA,GAWM,MAXN2K,GAWM,gBAVF5K,EAAAA,EAAAA,IASM0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAT0CpC,EAAAsG,kBAAgB,CAA7BC,EAAGC,M,WAAtC/K,EAAAA,EAAAA,IASM,OATDgB,MAAM,gBAAwD+F,IAAKgE,G,EACpE9K,EAAAA,EAAAA,GACuB,SADhBgB,KAAK,QAASlB,GAAI+K,EAAE/K,GAAKiF,QAAS8F,EAAEE,QAAU5G,SAAK6G,EAAAA,EAAAA,KAAAlG,GAAOR,EAAA2G,YAAYJ,IAAC,UAC1E5J,KAAK,e,YACTjB,EAAAA,EAAAA,GAKQ,SALAmB,IAAK0J,EAAE/K,GAAKqE,QAAKW,GAAER,EAAA4G,cAAcL,I,EACrC7K,EAAAA,EAAAA,GAEM,MAFNmL,GAEM,cADFpL,EAAAA,EAAAA,IAAiC,KAA7B+G,IAAK+D,EAAEO,O,QAASP,EAAEO,MAAI,OAE9BpL,EAAAA,EAAAA,GAAyD,OAAnDU,IAAKmK,EAAEQ,OAAQzK,IAAI,GAAIuD,QAAKW,GAAER,EAAAgH,iBAAiBT,I,yCAKjE7K,EAAAA,EAAAA,GAYM,MAZNuL,GAYM,EAXFvL,EAAAA,EAAAA,GAA2C,OAArCU,IAAKyC,EAAAqI,iBAAiBH,OAAQzK,IAAI,I,YACxCZ,EAAAA,EAAAA,GASM,MATNyL,GASM,EARFzL,EAAAA,EAAAA,GAAuD,KAAvD0L,IAAuDtE,EAAAA,EAAAA,IAApCjE,EAAAqI,iBAAiBG,aAAW,IAC/C3L,EAAAA,EAAAA,GAMM,MANN4L,GAMM,EALF5L,EAAAA,EAAAA,GAAsE,UAAAoH,EAAAA,EAAAA,IAAhEjE,EAAAqI,iBAAiBK,QAAS,QAAIzE,EAAAA,EAAAA,IAAGjE,EAAAqI,iBAAiBM,MAAO,MAAG,IAClE9L,EAAAA,EAAAA,GAC0C,SADvC,QAAIoH,EAAAA,EAAAA,IAAGjE,EAAAqI,iBAAiBO,YAAa,eACpC3E,EAAAA,EAAAA,IAAGjE,EAAAqI,iBAAiBQ,aAAW,IACnChM,EAAAA,EAAAA,GAC0C,SADvC,SAAKoH,EAAAA,EAAAA,IAAGjE,EAAAqI,iBAAiBS,YAAa,iBACrC7E,EAAAA,EAAAA,IAAGjE,EAAAqI,iBAAiBU,UAAW,MAAG,oBATjB/I,EAAAqI,iBAAiBT,WAclDoB,IAOAnM,EAAAA,EAAAA,GAOM,MAPNoM,GAOM,EANFpM,EAAAA,EAAAA,GACkC,OAD7BU,IAAA2L,EAAsCtL,MAAM,OAAQoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAgI,cAAAhI,EAAAgI,gBAAAjI,IAC3DW,SAA0B,IAAhB7B,EAAAoJ,a,WACHjI,EAAAkI,gBAAgBtI,OAASf,EAAAsJ,eAAY,WAAjD1M,EAAAA,EAAAA,IAA8F,OAAA2M,IAAAtF,EAAAA,EAAAA,IAAxCjE,EAAAoJ,aAAc,OAAGnF,EAAAA,EAAAA,IAAG9C,EAAAqI,YAAU,iBACpF5M,EAAAA,EAAAA,IAAyB,OAAA6M,GAAZ,WACb5M,EAAAA,EAAAA,GAC2C,OADtCU,IAJA2L,EAIsCtL,MAAM,OAAQoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAuI,UAAAvI,EAAAuI,YAAAxI,IAC3DW,SAAU7B,EAAAoJ,cAAgBjI,EAAAqI,Y,0BAxDM,WAAbxJ,EAAAiG,aAAQ,SA8DxCpJ,EAAAA,EAAAA,GA+CM,MA/CN8M,GA+CM,EA9CF9M,EAAAA,EAAAA,GASM,MATN+M,GASM,WARF/M,EAAAA,EAAAA,GAA0F,SAAnFgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,UAAUoB,MAAM,M,uCAAeiC,EAAA6J,qBAAoBlI,I,iBAApB3B,EAAA6J,wBAAwBC,IAC7D,SAC7BjN,EAAAA,EAAAA,GAA6F,SAAtFgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,Q,uCAAiBiC,EAAA6J,qBAAoBlI,I,iBAApB3B,EAAA6J,yBAAwBhN,EAAAA,EAAAA,GACL,SAApFmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAgI,WAAAhI,EAAAgI,aAAA7I,IAAY4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAiI,SAAAjI,EAAAiI,WAAA9I,IAASvC,MAAM,MAAK,QAAK,cAChF9B,EAAAA,EAAAA,GAA4F,SAArFgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,O,uCAAgBiC,EAAA6J,qBAAoBlI,I,iBAApB3B,EAAA6J,yBAAwBhN,EAAAA,EAAAA,GACJ,SAApFmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAkI,UAAAlI,EAAAkI,YAAA/I,IAAW4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAmI,UAAAnI,EAAAmI,YAAAhJ,IAAUvC,MAAM,OAAM,OAAI,cAChF9B,EAAAA,EAAAA,GAA8F,SAAvFgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,S,uCAAkBiC,EAAA6J,qBAAoBlI,I,iBAApB3B,EAAA6J,yBAAwBhN,EAAAA,EAAAA,GACA,SAA1FmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAoI,YAAApI,EAAAoI,cAAAjJ,IAAa4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAqI,YAAArI,EAAAqI,cAAAlJ,IAAYvC,MAAM,OAAM,SAAM,OAG1F9B,EAAAA,EAAAA,GAWM,MAXNwN,GAWM,gBAVFzN,EAAAA,EAAAA,IASM0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IATwCpC,EAAAmJ,gBAAc,CAA3B5C,EAAGC,M,WAApC/K,EAAAA,EAAAA,IASM,OATDgB,MAAM,cAAoD+F,IAAKgE,G,EAChE9K,EAAAA,EAAAA,GACqB,SADdgB,KAAK,QAASlB,GAAI+K,EAAE/K,GAAKiF,QAAS8F,EAAEE,QAAU5G,SAAK6G,EAAAA,EAAAA,KAAAlG,GAAOR,EAAA2G,YAAYJ,IAAC,UAC1E5J,KAAK,a,YACTjB,EAAAA,EAAAA,GAKQ,SALAmB,IAAK0J,EAAE/K,GAAKqE,QAAKW,GAAER,EAAAoJ,YAAY7C,I,EACnC7K,EAAAA,EAAAA,GAEM,MAFN2N,GAEM,cADF5N,EAAAA,EAAAA,IAAiC,KAA7B+G,IAAK+D,EAAEO,O,QAASP,EAAEO,MAAI,OAE9BpL,EAAAA,EAAAA,GAAyD,OAAnDU,IAAKmK,EAAEQ,OAAQzK,IAAI,GAAIuD,QAAKW,GAAER,EAAAgH,iBAAiBT,I,yCAKjE7K,EAAAA,EAAAA,GAYM,MAZN4N,GAYM,EAXF5N,EAAAA,EAAAA,GAAyC,OAAnCU,IAAKyC,EAAA0K,eAAexC,OAAQzK,IAAI,I,YACtCZ,EAAAA,EAAAA,GASM,MATN8N,GASM,EARF9N,EAAAA,EAAAA,GAA8C,KAA9C+N,IAA8C3G,EAAAA,EAAAA,IAA3BjE,EAAA0K,eAAe5M,MAAI,IACtCjB,EAAAA,EAAAA,GAMM,MANNgO,GAMM,EALFhO,EAAAA,EAAAA,GAAkE,UAAAoH,EAAAA,EAAAA,IAA5DjE,EAAA0K,eAAehC,QAAS,QAAIzE,EAAAA,EAAAA,IAAGjE,EAAA0K,eAAe/B,MAAO,MAAG,IAG9D9L,EAAAA,EAAAA,GACwC,SADrC,SAAKoH,EAAAA,EAAAA,IAAGjE,EAAA0K,eAAe5B,YAAa,iBACnC7E,EAAAA,EAAAA,IAAGjE,EAAA0K,eAAe3B,UAAW,MAAG,oBATjB/I,EAAA0K,eAAe9C,YAc9C/K,EAAAA,EAAAA,GAOM,MAPNiO,GAOM,EANFjO,EAAAA,EAAAA,GACsC,OADjCU,IAnDA2L,EAmDsCtL,MAAM,OAAQoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA4J,kBAAA5J,EAAA4J,oBAAA7J,IAC3DW,SAA8B,IAApB7B,EAAAgL,iB,WACH7J,EAAA8J,cAAclK,OAASf,EAAAkL,cAAW,WAA9CtO,EAAAA,EAAAA,IAAmG,OAAAuO,IAAAlH,EAAAA,EAAAA,IAAhDjE,EAAAgL,iBAAkB,OAAG/G,EAAAA,EAAAA,IAAG9C,EAAAiK,gBAAc,iBACzFxO,EAAAA,EAAAA,IAAyB,OAAAyO,GAAZ,WACbxO,EAAAA,EAAAA,GACmD,OAD9CU,IAvDA2L,EAuDsCtL,MAAM,OAAQoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAmK,cAAAnK,EAAAmK,gBAAApK,IAC3DW,SAAU7B,EAAAgL,kBAAoB7J,EAAAiK,gB,0BA7CK,SAAbpL,EAAAiG,aAAQ,SAmD3CpJ,EAAAA,EAAAA,GAqCM,MArCN0O,GAqCM,EApCF1O,EAAAA,EAAAA,GAgBM,MAhBN2O,GAgBM,EAfF3O,EAAAA,EAAAA,GAcM,MAdN4O,GAcM,WAbF5O,EAAAA,EAAAA,GACwB,SADjBgB,KAAK,QAAQlB,GAAG,aAAamB,KAAK,O,uCAAgBkC,EAAA0L,WAAU/J,GAAE5D,MAAM,cACtEiD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAwK,YAAAxK,EAAAwK,cAAAzK,K,iBAD6ClB,EAAA0L,cAEzDE,IAGQ,SAER/O,EAAAA,EAAAA,GAC2B,SADpBgB,KAAK,QAAQlB,GAAG,gBAAgBmB,KAAK,O,uCAAgBkC,EAAA0L,WAAU/J,GAAE5D,MAAM,gBACzEiD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA0K,eAAA1K,EAAA0K,iBAAA3K,K,iBADgDlB,EAAA0L,cAE5DI,QAGQ,SAIhBjP,EAAAA,EAAAA,GAOM,MAPNkP,GAOMC,GAAA,YAPwC,gBAAfhM,EAAA0L,eAAU,SASzC7O,EAAAA,EAAAA,GAQM,MARNoP,GAQM,CAPFC,IACArP,EAAAA,EAAAA,GAKK,KALLsP,GAKK,CAJDC,GACAC,IACAxP,EAAAA,EAAAA,GACK,YADDA,EAAAA,EAAAA,GAA0F,OAArFU,IAAA+O,EAAuC7O,IAAI,YAAauD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAoL,sBAAApL,EAAAoL,wBAAArL,W,YAL3B,kBAAflB,EAAA0L,eAAU,YA5BJ,SAAb1L,EAAAiG,aAAQ,SAyC3CpJ,EAAAA,EAAAA,GA0DM,MA1DN2P,GA0DM,EAzDF3P,EAAAA,EAAAA,GAYM,MAZN4P,GAYM,WAXF5P,EAAAA,EAAAA,GACc,SADPgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,UAAUoB,MAAM,M,uCAAeiC,EAAA0M,qBAAoB/K,GAClFC,QAAA,I,iBAD8D5B,EAAA0M,wBACpDC,IAAgC,SAC9C9P,EAAAA,EAAAA,GACqC,SAD9BgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,W,uCACvCiC,EAAA0M,qBAAoB/K,I,iBAApB3B,EAAA0M,yBAAwB7P,EAAAA,EAAAA,GACsB,SADfmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA6K,cAAA7K,EAAA6K,gBAAA1L,IAClE4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA8K,cAAA9K,EAAA8K,gBAAA3L,IAAcvC,MAAM,OAAM,WAAQ,cACnD9B,EAAAA,EAAAA,GACqC,SAD9BgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,W,uCACvCiC,EAAA0M,qBAAoB/K,I,iBAApB3B,EAAA0M,yBAAwB7P,EAAAA,EAAAA,GACsB,SADfmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA+K,cAAA/K,EAAA+K,gBAAA5L,IAClE4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAgL,cAAAhL,EAAAgL,gBAAA7L,IAAcvC,MAAM,OAAM,WAAQ,cACnD9B,EAAAA,EAAAA,GACqC,SAD9BgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,MAAMY,MAAM,K,uCACnDqB,EAAA0M,qBAAoB/K,I,iBAApB3B,EAAA0M,yBAAwB7P,EAAAA,EAAAA,GACC,SADMmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAiL,UAAAjL,EAAAiL,YAAA9L,IAClE4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAAkL,UAAAlL,EAAAkL,YAAA/L,KAAU,MAAG,OAGlCrE,EAAAA,EAAAA,GAeM,MAfNqQ,GAeM,gBAdFtQ,EAAAA,EAAAA,IAaM0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAbwCpC,EAAAgM,gBAAc,CAA3BzF,EAAGC,M,WAApC/K,EAAAA,EAAAA,IAaM,OAbDgB,MAAM,cAAoD+F,IAAKgE,G,EAChE9K,EAAAA,EAAAA,GACqB,SADdgB,KAAK,QAASlB,GAAI+K,EAAE/K,GAAKiF,QAAS8F,EAAEE,QAAU5G,SAAK6G,EAAAA,EAAAA,KAAAlG,GAAOR,EAAA2G,YAAYJ,IAAC,UAC1E5J,KAAK,a,YACTjB,EAAAA,EAAAA,GASQ,SATAmB,IAAK0J,EAAE/K,GAAKqE,QAAKW,GAAER,EAAAiM,YAAY1F,I,EACnC7K,EAAAA,EAAAA,GAAyD,OAAnDU,IAAKmK,EAAEQ,OAAQzK,IAAI,GAAIuD,QAAKW,GAAER,EAAAgH,iBAAiBT,I,YACrD7K,EAAAA,EAAAA,GAEM,MAFNwQ,GAEM,cADFzQ,EAAAA,EAAAA,IAAiC,KAA7B+G,IAAK+D,EAAEO,O,QAASP,EAAEO,MAAI,OAG9BpL,EAAAA,EAAAA,GAEM,MAFNyQ,GAEM,EADFzQ,EAAAA,EAAAA,GAA4C,UAAAoH,EAAAA,EAAAA,IAAtCyD,EAAEoB,YAAa,OAAG7E,EAAAA,EAAAA,IAAGyD,EAAEqB,UAAQ,iB,kBAMrDlM,EAAAA,EAAAA,GAQM,MARN0Q,GAQM,EAPF1Q,EAAAA,EAAAA,GAAyC,OAAnCU,IAAKyC,EAAAwN,eAAetF,OAAQzK,IAAI,I,YACtCZ,EAAAA,EAAAA,GAKM,MALN4Q,GAKM,EAJF5Q,EAAAA,EAAAA,GAAqD,KAArD6Q,IAAqDzJ,EAAAA,EAAAA,IAAlCjE,EAAAwN,eAAehF,aAAW,IAC7C3L,EAAAA,EAAAA,GAEM,MAFN8Q,GAEM,EADF9Q,EAAAA,EAAAA,GAAyE,UAAAoH,EAAAA,EAAAA,IAAnEjE,EAAAwN,eAAe1E,YAAa,OAAG7E,EAAAA,EAAAA,IAAGjE,EAAAwN,eAAezE,UAAW,MAAG,oBALlD/I,EAAAwN,eAAe5F,WAU9CgG,IAOA/Q,EAAAA,EAAAA,GAQM,MARNgR,GAQM,EAPFhR,EAAAA,EAAAA,GACuC,OADlCU,IAzJA2L,EAyJsCtL,MAAM,OAAQoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA2M,uBAAA3M,EAAA2M,yBAAA5M,IAC3DW,SAA+B,IAArB7B,EAAA+N,kB,WACH5M,EAAA6M,cAAcjN,OAASf,EAAAsJ,eAAY,WAA/C1M,EAAAA,EAAAA,IACa,OAAAqR,IAAAhK,EAAAA,EAAAA,IADuCjE,EAAA+N,kBAAmB,OAAG9J,EAAAA,EAAAA,IAAG9C,EAAA+M,gBAAc,iBAE3FtR,EAAAA,EAAAA,IAAyB,OAAAuR,GAAZ,WACbtR,EAAAA,EAAAA,GACoD,OAD/CU,IA9JA2L,EA8JsCtL,MAAM,OAAQoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAiN,mBAAAjN,EAAAiN,qBAAAlN,IAC3DW,SAAU7B,EAAA+N,mBAAqB5M,EAAA+M,gB,0BAxDI,SAAblO,EAAAiG,aAAQ,SA8D3CpJ,EAAAA,EAAAA,GAyDM,MAzDNwR,GAyDM,EAxDFxR,EAAAA,EAAAA,GAUM,MAVNyR,GAUM,WATFzR,EAAAA,EAAAA,GACc,SADPgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,UAAUoB,MAAM,M,uCAAeiC,EAAAuO,uBAAsB5M,GACpFC,QAAA,I,iBAD8D5B,EAAAuO,0BACpDC,IAAgC,SAC9C3R,EAAAA,EAAAA,GAA6F,SAAtFgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,M,uCAAeiC,EAAAuO,uBAAsB5M,I,iBAAtB3B,EAAAuO,2BAA0B1R,EAAAA,EAAAA,GAEtD,SADnCmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA0M,YAAA1M,EAAA0M,cAAAvN,IAAa4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA2M,YAAA3M,EAAA2M,cAAAxN,IACpDvC,MAAM,mBAAkB,MAAG,cAC/B9B,EAAAA,EAAAA,GAA8F,SAAvFgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,O,uCAAgBiC,EAAAuO,uBAAsB5M,I,iBAAtB3B,EAAAuO,2BAA0B1R,EAAAA,EAAAA,GACC,SAA3FmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA4M,aAAA5M,EAAA4M,eAAAzN,IAAc4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA6M,aAAA7M,EAAA6M,eAAA1N,IAAavC,MAAM,QAAO,OAAI,cACvF9B,EAAAA,EAAAA,GAA8F,SAAvFgB,KAAK,QAAQC,KAAK,OAAOnB,GAAG,WAAWoB,MAAM,O,uCAAgBiC,EAAAuO,uBAAsB5M,I,iBAAtB3B,EAAAuO,2BAA0B1R,EAAAA,EAAAA,GACE,SAA5FmB,IAAI,WAAY4I,YAAS3F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA8M,aAAA9M,EAAA8M,eAAA3N,IAAc4F,aAAU7F,EAAA,MAAAA,EAAA,QAAAC,IAAEa,EAAA+M,aAAA/M,EAAA+M,eAAA5N,IAAavC,MAAM,SAAQ,OAAI,OAG5F9B,EAAAA,EAAAA,GAgBM,MAhBNkS,GAgBM,gBAfFnS,EAAAA,EAAAA,IAcM0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAd0CpC,EAAA6N,kBAAgB,CAA7BtH,EAAGC,M,WAAtC/K,EAAAA,EAAAA,IAcM,OAdDgB,MAAM,gBAAwD+F,IAAKgE,G,EACpE9K,EAAAA,EAAAA,GACuB,SADhBgB,KAAK,QAASlB,GAAI+K,EAAE/K,GAAKiF,QAAS8F,EAAEE,QAAU5G,SAAK6G,EAAAA,EAAAA,KAAAlG,GAAOR,EAAA2G,YAAYJ,IAAC,UAC1E5J,KAAK,e,YACTjB,EAAAA,EAAAA,GAUQ,SAVAmB,IAAK0J,EAAE/K,GAAKqE,QAAKW,GAAER,EAAA8N,cAAcvH,GACpC/H,OAAKuP,EAAAA,EAAAA,IAAA,CAAAC,gBAAqBzH,EAAEE,QAAU,UAAY,M,EACnD/K,EAAAA,EAAAA,GAAyD,OAAnDU,IAAKmK,EAAEQ,OAAQzK,IAAI,GAAIuD,QAAKW,GAAER,EAAAgH,iBAAiBT,I,YACrD7K,EAAAA,EAAAA,GAEM,MAFNuS,GAEM,cADFxS,EAAAA,EAAAA,IAAiC,KAA7B+G,IAAK+D,EAAEO,O,QAASP,EAAEO,MAAI,OAG9BpL,EAAAA,EAAAA,GAEM,MAFNwS,GAEM,EADFxS,EAAAA,EAAAA,GAA4C,UAAAoH,EAAAA,EAAAA,IAAtCyD,EAAEoB,YAAa,OAAG7E,EAAAA,EAAAA,IAAGyD,EAAEqB,UAAQ,kB,kBAMrDlM,EAAAA,EAAAA,GAQM,MARNyS,GAQM,EAPFzS,EAAAA,EAAAA,GAA2C,OAArCU,IAAKyC,EAAAuP,iBAAiBrH,OAAQzK,IAAI,I,YACxCZ,EAAAA,EAAAA,GAKM,MALN2S,GAKM,EAJF3S,EAAAA,EAAAA,GAAuD,KAAvD4S,IAAuDxL,EAAAA,EAAAA,IAApCjE,EAAAuP,iBAAiB/G,aAAW,IAC/C3L,EAAAA,EAAAA,GAEM,MAFN6S,GAEM,EADF7S,EAAAA,EAAAA,GAA6E,UAAAoH,EAAAA,EAAAA,IAAvEjE,EAAAuP,iBAAiBzG,YAAa,OAAG7E,EAAAA,EAAAA,IAAGjE,EAAAuP,iBAAiBxG,UAAW,MAAG,oBALpD/I,EAAAuP,iBAAiB3H,WAUlD+H,IAOA9S,EAAAA,EAAAA,GAQM,MARN+S,GAQM,EAPF/S,EAAAA,EAAAA,GACyC,OADpCU,IAtNA2L,EAsNsCtL,MAAM,OAAQoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA0O,yBAAA1O,EAAA0O,2BAAA3O,IAC3DW,SAAiC,IAAvB7B,EAAA8P,oB,WACH3O,EAAA4O,gBAAgBhP,OAASf,EAAAsJ,eAAY,WAAjD1M,EAAAA,EAAAA,IACa,OAAAoT,IAAA/L,EAAAA,EAAAA,IADyCjE,EAAA8P,oBAAqB,OAAG7L,EAAAA,EAAAA,IAAG9C,EAAA8O,kBAAgB,iBAEjGrT,EAAAA,EAAAA,IAAyB,OAAAsT,GAAZ,WACbrT,EAAAA,EAAAA,GACwD,OADnDU,IA3NA2L,EA2NsCtL,MAAM,OAAQoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAgP,qBAAAhP,EAAAgP,uBAAAjP,IAC3DW,SAAU7B,EAAA8P,qBAAuB3O,EAAA8O,kB,0BAvDI,WAAbjQ,EAAAiG,aAAQ,SAiG7CpJ,EAAAA,EAAAA,GAwDM,MAxDNuT,GAwDM,EAvDFvT,EAAAA,EAAAA,GAsCM,MAtCNwT,GAsCM,EArCFxT,EAAAA,EAAAA,GAoCM,MApCNyT,GAoCM,WAnCFzT,EAAAA,EAAAA,GACsD,SAD/CgB,KAAK,WAAWlB,GAAG,iBAAiBmB,KAAK,OAAOC,MAAM,U,uCAAmBiC,EAAAuQ,eAAc5O,GACzFC,QAAS5B,EAAAuQ,eAAiBvP,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAqP,gBAAArP,EAAAqP,kBAAAtP,K,kBAD0ClB,EAAAuQ,kBAEhFE,OA6CRC,IAKM,YAvDsC,SAAb1Q,EAAAiG,aA4DnCpJ,EAAAA,EAAAA,GAIM,MAJN8T,GAIM,EAHF9T,EAAAA,EAAAA,GAEM,MAFN+T,GAEM,EADF7T,EAAAA,EAAAA,IAAqF8T,EAAA,CAArEC,QAAS9Q,EAAA8Q,QAAiBC,SAAU/Q,EAAAgR,U,qCAAAhR,EAAAgR,UAASrP,GAAErE,IAAI,iB,6CAM3ET,EAAAA,EAAAA,GAyBM,MAzBNoU,GAyBM,EAxBFpU,EAAAA,EAAAA,GAA4C,QAArCmE,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA+P,sBAAA/P,EAAA+P,wBAAAhQ,KAAsB,MACpCrE,EAAAA,EAAAA,GAsBM,MAtBNsU,GAsBM,EArBFtU,EAAAA,EAAAA,GAGM,MAHNuU,GAGM,EAFFvU,EAAAA,EAAAA,GAAkC,WAAAoH,EAAAA,EAAAA,IAA3BjE,EAAAqR,YAAYrR,EAAAsR,SAAM,IACzBzU,EAAAA,EAAAA,GAAkC,UAAAoH,EAAAA,EAAAA,IAA5BjE,EAAAuR,cAAcvR,EAAAsR,SAAM,MAG9BzU,EAAAA,EAAAA,GAeM,MAfN2U,GAeM,EAdF3U,EAAAA,EAAAA,GACuB,OADlBU,IAnVJ2L,EAmV0CzL,IAAI,cAAcG,MAAM,cAC9DoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAsQ,WAAAtQ,EAAAsQ,aAAAvQ,OAEZrE,EAAAA,EAAAA,GAOM,MAPN6U,GAOM,EANF7U,EAAAA,EAAAA,GAA+D,OAA1De,MAAM,QAASL,IAAK4D,EAAAwQ,gBAAiBlU,IAAI,gB,WACnCuC,EAAA4R,UAAU7Q,OAAS,IAAH,WAA3BnE,EAAAA,EAAAA,IAIM,MAJNiV,GAIM,gBAHFjV,EAAAA,EAAAA,IAEM0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAFgDvD,EAAA4R,WAAS,CAA7BE,EAAUnK,M,WAA5C/K,EAAAA,EAAAA,IAEM,OAFDgB,OAAKmU,EAAAA,EAAAA,IAAA,CAAC,eAAc,CAAAC,UACArK,IAAU3H,EAAAsR,UAD+B3N,IAAKmO,EAASnK,MAClC3G,QAAKW,GAAER,EAAA8Q,YAAYtK,I,2CAKzE9K,EAAAA,EAAAA,GACuB,OADlBU,IA/VJ2L,EA+V0CzL,IAAI,cAAcG,MAAM,cAC9DoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA+Q,WAAA/Q,EAAA+Q,aAAAhR,W,YAtBiBlB,EAAAmS,0BAAmB,I,s7BCnjB7DvU,MAAM,c,IACJA,MAAM,uB,sCAETf,EAAAA,EAAAA,GAAkF,SAA3Ee,MAAM,kBAAkB,cAAY,KAAK,aAAW,KAAKI,IAAI,O,eAEjEJ,MAAM,uB,sCAETf,EAAAA,EAAAA,GAAkF,SAA3Ee,MAAM,kBAAkB,cAAY,KAAK,aAAW,KAAKI,IAAI,O,eAOnEJ,MAAM,c,IACJA,MAAM,uB,sCAETf,EAAAA,EAAAA,GAAkF,SAA3Ee,MAAM,kBAAkB,cAAY,KAAK,aAAW,KAAKI,IAAI,O,eAEjEJ,MAAM,uB,sCAETf,EAAAA,EAAAA,GAAkF,SAA3Ee,MAAM,kBAAkB,cAAY,KAAK,aAAW,KAAKI,IAAI,O,eAEjEJ,MAAM,uB,2BAETf,EAAAA,EAAAA,GAA4F,SAArFe,MAAM,4BAA4B,cAAY,KAAK,aAAW,KAAKI,IAAI,O,sDA3CtFpB,EAAAA,EAAAA,IAuDM,OAvDDD,GAAG,gBAAgBW,IAAI,gBACvBqC,OAAKuP,EAAAA,EAAAA,IAAA,CAAAkD,iBAAA,cAAoCpS,EAAAqS,8BAA8BrS,EAAAqS,kBAAYC,oBAAA,cAA2CtS,EAAAuS,8BAA8BvS,EAAAuS,qB,EAE/J1V,EAAAA,EAAAA,GAYM,OAZDF,GAAG,WACL6V,YAASvR,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAsR,uBAAuB9Q,K,EACnC9E,EAAAA,EAAAA,GAGM,OAHDF,GAAG,iBAAkBgD,OAAKuP,EAAAA,EAAAA,IAAA,CAAAwD,KAAA,uBAAiC1S,EAAAuS,kBAAYI,QAAe3S,EAAA4S,wBAC1FC,YAAS5R,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAA2R,6BAA6BnR,IACxCoR,UAAO9R,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAA6R,2BAA2BrR,K,UAErC9E,EAAAA,EAAAA,GAKM,OALDF,GAAG,eAAgBgD,OAAKuP,EAAAA,EAAAA,IAAA,CAAA+D,IAAA,uBAAgCjT,EAAAqS,kBAAYM,QAAe3S,EAAAkT,sBACrFL,YAAS5R,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAgS,2BAA2BxR,IACtCoR,UAAO9R,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAiS,yBAAyBzR,K,EACnC9E,EAAAA,EAAAA,GAA2L,OAAtLF,GAAG,eAAeiB,MAAM,cAAe+B,OAAKuP,EAAAA,EAAAA,IAAA,CAAAwD,KAAA,QAAkB1S,EAAA8B,WAAU,YAAa9B,EAAAuS,aAAY,mBAAqBvR,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAkS,cAAAlS,EAAAkS,gBAAAnS,IAAc3D,IAAAC,I,QACnHwC,EAAA8B,aAAU,WAAvClF,EAAAA,EAAAA,IAA4L,O,MAAvLD,GAAG,eAAiCiB,MAAM,cAAe+B,OAAKuP,EAAAA,EAAAA,IAAA,CAAAwD,KAAA,cAAwB1S,EAAAuS,aAAY,mBAAqBvR,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAkS,cAAAlS,EAAAkS,gBAAAnS,IAAc3D,IADDC,I,oCAKpJX,EAAAA,EAAAA,GAaM,OAbDF,GAAG,oBAAoBW,IAAI,MAAOqC,OAAKuP,EAAAA,EAAAA,IAAA,CAAAyD,QAAa3S,EAAAsT,WAAUlB,iBAAA,cAAkCpS,EAAAqS,8BAA8BrS,EAAAqS,kBAAYkB,WAAA,GAAwBvT,EAAAwT,uBAAuBxT,EAAAyT,uB,EAC5L5W,EAAAA,EAAAA,GASM,MATNC,GASM,EARJD,EAAAA,EAAAA,GAGM,MAHNqD,GAGM,WAFJrD,EAAAA,EAAAA,GAA+G,SAAxGe,MAAM,eAAejB,GAAG,MAAMkB,KAAK,W,qCAAoBmC,EAAA0T,OAAM/R,GAAGC,QAAS5B,EAAA0T,OAAS7R,UAAW7B,EAAA2T,Q,kBAAtC3T,EAAA0T,UAC9DvT,MAEFtD,EAAAA,EAAAA,GAGM,MAHNuD,GAGM,WAFJvD,EAAAA,EAAAA,GAA+G,SAAxGe,MAAM,eAAejB,GAAG,MAAMkB,KAAK,W,qCAAoBmC,EAAA2T,OAAMhS,GAAGC,QAAS5B,EAAA2T,OAAS9R,UAAW7B,EAAA0T,Q,kBAAtC1T,EAAA2T,UAC9DpT,QAGJ1D,EAAAA,EAAAA,GAAuM,UAA/LF,GAAG,YAAa6V,YAASvR,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAsR,uBAAuB9Q,IAAUhC,OAAKuP,EAAAA,EAAAA,IAAA,CAAA0E,QAAA,GAAgB5T,EAAA6T,sBAAsB7T,EAAA8T,mBAAgBnB,QAAY3S,EAAA+T,eAAe,eAAa,OAAOzW,IAAI,a,UAClLT,EAAAA,EAAAA,GAAuM,UAA/LF,GAAG,YAAa6V,YAASvR,EAAA,MAAAA,EAAA,IAAAU,GAAER,EAAAsR,uBAAuB9Q,IAAUhC,OAAKuP,EAAAA,EAAAA,IAAA,CAAA0E,QAAA,GAAgB5T,EAAAgU,sBAAsBhU,EAAAiU,mBAAgBtB,QAAY3S,EAAAkU,eAAe,eAAa,OAAO5W,IAAI,a,cAEpLT,EAAAA,EAAAA,GAgBM,OAhBDF,GAAG,oBAAqBgD,OAAKuP,EAAAA,EAAAA,IAAA,CAAAyD,QAAa3S,EAAAmU,WAAUZ,WAAA,GAAgBvT,EAAAoU,uBAAuBpU,EAAAqU,uB,EAC9FxX,EAAAA,EAAAA,GAaM,MAbN2D,GAaM,EAZJ3D,EAAAA,EAAAA,GAGM,MAHN4D,GAGM,WAFJ5D,EAAAA,EAAAA,GAA+G,SAAxGe,MAAM,eAAejB,GAAG,MAAMkB,KAAK,W,uCAAoBmC,EAAAsU,OAAM3S,GAAGC,QAAS5B,EAAAsU,OAASzS,UAAW7B,EAAAuU,Q,kBAAtCvU,EAAAsU,UAC9D5T,MAEF7D,EAAAA,EAAAA,GAGM,MAHNsB,GAGM,WAFJtB,EAAAA,EAAAA,GAA8G,SAAvGe,MAAM,eAAejB,GAAG,MAAMkB,KAAK,W,uCAAoBmC,EAAAuU,OAAM5S,GAAGC,QAAS5B,EAAAuU,OAAS1S,UAAW7B,EAAAsU,Q,kBAAtCtU,EAAAuU,UAC9DlT,MAEFxE,EAAAA,EAAAA,GAGM,MAHNyE,GAGM,WAFJzE,EAAAA,EAAAA,GAAqH,SAA9Ge,MAAM,eAAejB,GAAG,MAAMkB,KAAK,W,uCAAoBmC,EAAAwU,WAAU7S,GAAGC,QAAS5B,EAAAwU,WAAaxT,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAsT,YAAAtT,EAAAsT,cAAAvT,K,kBAA1ClB,EAAAwU,cAC9DjT,QAGJ1E,EAAAA,EAAAA,GAA4G,UAApGF,GAAG,UAAW6V,YAASvR,EAAA,MAAAA,EAAA,IAAAU,GAAER,EAAAsR,uBAAuB9Q,IAAS,eAAa,OAAOrE,IAAI,W,kBAwN/F,QACEQ,KAAM,gBACN4W,MAAO,CACL5D,QAAU,CAAC,EACXC,UAAS,GAEX4D,OACE,MAAO,CACLH,YAAW,EACXjE,gBAAe,EACfqE,aAAc,EACdrC,aAAe,EACfsC,gBAAkB,EAClBC,aAAc,EACdzC,aAAe,EACf0C,gBAAkB,EAClBrB,QAAS,EACTC,QAAS,EACTW,QAAS,EACTC,QAAS,EACTS,YAAc,UACdC,YAAc,UACdzB,cAAgB,EAChB0B,oBAAsB,EACtBzB,kBAAoB,EACpBO,aAAe,EACfC,iBAAmB,EACnBC,aAAe,QACfL,aAAe,EACfC,iBAAmB,EACnBqB,oBAAsB,EACtBpB,aAAe,QACfI,WAAa,QACbC,cAAgB,EAChBC,kBAAoB,EACpBe,oBAAsB,EACtBC,YAAc,GACd/B,WAAa,OACbV,sBAAwB,QACxBM,oBAAsB,QACtBoC,eAAiB,GACjBxT,YAAa,EACbyT,MAAQ,GACRC,QAAU,GAEd,EAEAC,MAAM,CACJ3E,UAE2B,iBAAtBjQ,KAAKiQ,QAAQ4E,KAEX7U,KAAKiQ,QAAQ6E,YAAc9U,KAAKyU,iBAEjCzU,KAAKyU,eAAiBzU,KAAKiQ,QAAQ6E,WACnC9U,KAAKF,aAAaiV,YAAYC,wBAC9BhV,KAAKF,aAAamV,aAAajV,KAAKiQ,QAAQ6E,WAAW9U,KAAKiQ,QAAQiF,KAAKlV,KAAKiQ,QAAQhI,WAAWjI,KAAKiQ,QAAQ/H,WAGpF,iBAAtBlI,KAAKiQ,QAAQ4E,KAEhB7U,KAAKiQ,QAAQhT,MAAQ+C,KAAKyU,iBAE3BzU,KAAKyU,eAAiBzU,KAAKiQ,QAAQ6D,KAAK7W,KACxC+C,KAAKF,aAAaiV,YAAYC,wBAC9BhV,KAAKF,aAAaqV,aAAanV,KAAKiQ,QAAQ6D,OAGlB,eAAtB9T,KAAKiQ,QAAQ4E,KAEhB7U,KAAKiQ,QAAQ6D,KAAK7W,MAAQ+C,KAAKyU,iBAEhCzU,KAAKyU,eAAiBzU,KAAKiQ,QAAQ6D,KAAK7W,KACxC+C,KAAKF,aAAaiV,YAAYC,wBAC9BhV,KAAKF,aAAasV,WAAWpV,KAAKiQ,QAAQ6D,OAGhB,eAAtB9T,KAAKiQ,QAAQ4E,KAEhB7U,KAAKiQ,QAAQhT,MAAQ+C,KAAKyU,iBAE3BzU,KAAKyU,eAAiBzU,KAAKiQ,QAAQhT,KACnC+C,KAAKF,aAAaiV,YAAYC,wBAC9BhV,KAAKF,aAAauV,WAAWrV,KAAKiQ,QAAQhT,KAAK+C,KAAKiQ,QAAQiF,OAGlC,kBAAtBlV,KAAKiQ,QAAQ4E,KAEhB7U,KAAKiQ,QAAQhT,MAAQ+C,KAAKyU,iBAE3BzU,KAAKyU,eAAiBzU,KAAKiQ,QAAQhT,KACnC+C,KAAKF,aAAaiV,YAAYC,wBAC9BhV,KAAKF,aAAawV,iBAGQ,eAAtBtV,KAAKiQ,QAAQ4E,MAEnB7U,KAAKuV,WAAWvV,KAAKiQ,SACrBjQ,KAAKwV,WAAU,KACbxV,KAAKF,aAAa2V,QAAQ,KAGA,kBAAtBzV,KAAKiQ,QAAQ4E,MAEnB7U,KAAK0V,WAAW1V,KAAKiQ,SACrBjQ,KAAKwV,WAAU,KACbxV,KAAKF,aAAa2V,QAAQ,KAGA,eAAtBzV,KAAKiQ,QAAQ4E,MAEnB7U,KAAKF,aAAaiV,YAAYC,wBAC9BhV,KAAKF,aAAa6V,cAEW,mBAAtB3V,KAAKiQ,QAAQ4E,OAEpB7U,KAAK0P,eAAiB1P,KAAKiQ,QAAQP,eACnC1P,KAAK4T,aAET,EACAf,OAAO+C,EAAUC,GAEZD,GAED5V,KAAKqT,aAAe,QACpBrT,KAAKqS,oBAAsB,QAC3BrS,KAAKgT,aAAe,EACpBhT,KAAKiT,iBAAmB,IAIxBjT,KAAKqT,aAAe,OACpBrT,KAAKgT,aAAe,EACpBhT,KAAKiT,iBAAmB,EACxBjT,KAAKqS,oBAAsB,QAE7BrS,KAAKwV,WAAU,KACbxV,KAAKF,aAAa2V,QAAQ,GAE9B,EACA3C,OAAO8C,EAAUC,GAEZD,GAED5V,KAAKkT,aAAe,QACpBlT,KAAKqS,oBAAsB,QAC3BrS,KAAKmT,aAAe,EACpBnT,KAAKoT,iBAAmB,IAIxBpT,KAAKkT,aAAe,OACpBlT,KAAKmT,aAAe,EACpBnT,KAAKoT,iBAAmB,EACxBpT,KAAKqS,oBAAsB,QAE7BrS,KAAKwV,WAAU,KACbxV,KAAKF,aAAa2V,QAAQ,GAE9B,EACAhC,OAAOmC,EAAUC,GAEf,MAAMC,EAAU9V,KAAKF,aAAaiW,aAAaC,QAAQC,QAAOC,GAAoB,OAAjBA,EAAEC,KAAKC,QACxEN,EAAQO,SAAQC,IACdA,EAAOC,aAAaC,WAAWZ,EAAS,IAE1Ca,YAAW,KACTzW,KAAKF,aAAaiV,YAAY2B,YAAY,GACzC,IACL,EACAhD,OAAOkC,EAAUC,GAEf,MAAMC,EAAU9V,KAAKF,aAAaiW,aAAaC,QAAQC,QAAOC,GAAoB,OAAjBA,EAAEC,KAAKC,QACxEN,EAAQO,SAAQC,IACdA,EAAOC,aAAaC,WAAWZ,EAAS,IAE1Ca,YAAW,KACTzW,KAAKF,aAAaiV,YAAY2B,YAAY,GACzC,IACL,GAEFC,UACE3W,KAAKwV,WAAU,KACbxV,KAAK4W,eAAe,GAExB,EACAC,QAAS,CACPjD,aACE5T,KAAKwV,WAAU,KACbiB,YAAW,KACPzW,KAAKF,aAAa6T,WAAa3T,KAAK0P,gBAAkB1P,KAAK2T,WAC3D3T,KAAKF,aAAagX,iBAAiB,GACnC,IAAI,GAEZ,EACAF,iBAEK5W,KAAKF,aAAaiV,aAAe/U,KAAKF,aAAaiX,aAAe/W,KAAKF,aAAakX,YAErFC,SAASC,SAEXlX,KAAKF,aAAaiV,YAAc/U,KAAKF,aAAaqX,WAAU,EAAKnX,KAAKoX,MAAMC,UAAUrX,KAAK,MAC3FA,KAAKF,aAAaiX,YAAc/W,KAAKF,aAAaqX,WAAU,EAAKnX,KAAKoX,MAAME,UAAUtX,KAAK,MAC3FA,KAAKF,aAAakX,UAAYhX,KAAKF,aAAaqX,WAAU,EAAMnX,KAAKoX,MAAMG,QAAQvX,MACnFA,KAAKF,aAAa0X,iBAClBC,OAAOC,iBAAiB,UAAS,KAC/B1X,KAAKwV,WAAU,KACbxV,KAAKF,aAAa2V,SAClBzV,KAAKgU,gBAAkB,EACvBhU,KAAKkU,gBAAkB,CAAC,GACxB,GAEN,EACAyD,YAAY7D,GAEV9T,KAAK0U,MAAQ,IAAIZ,EACnB,EACA8D,cAAc9D,GAEZ9T,KAAK2U,QAAU,IAAIb,EACrB,EACA7B,6BAA6B4F,GAI3B,GAFAA,EAAEC,iBACF9X,KAAK+T,aAAc,EACS,IAAzB/T,KAAKgU,gBACR,CACE,MAAM+D,EAAO/X,KAAKoX,MAAMY,cAAcC,wBACtCjY,KAAKgU,gBAAkB+D,EAAKG,MAAM,EAAIH,EAAKlG,IAC7C,CACF,EACAM,2BAA2B0F,GAEzBA,EAAEC,iBACC9X,KAAK+T,cAEN/T,KAAK+T,aAAc,EAEvB,EACAzB,2BAA2BuF,GAIzB,GAFAA,EAAEC,iBACF9X,KAAKiU,aAAc,EACS,IAAzBjU,KAAKkU,gBACR,CACE,MAAM6D,EAAO/X,KAAKoX,MAAMY,cAAcC,wBACtCjY,KAAKkU,gBAAkB6D,EAAKI,OAAO,EAAIJ,EAAK3F,GAC9C,CACF,EACAG,yBAAyBsF,GAEvBA,EAAEC,iBACC9X,KAAKiU,cAENjU,KAAKiU,aAAc,EAEvB,EACArC,uBAAuBiG,GAErBA,EAAEC,iBACC9X,KAAK+T,cAEH8D,EAAEO,QAAU,IAAK,KAKZP,EAAEO,QAAU,IAAMpY,KAAKgU,gBAAiB,KAH9ChU,KAAK0R,aAAe1R,KAAK0R,aACzB1R,KAAK+T,aAAc,GASnB/T,KAAK0R,aAAgBmG,EAAEO,QAAUpY,KAAKgU,gBAExChU,KAAKF,aAAa2V,UAEjBzV,KAAKiU,cAgBNjU,KAAKwR,aAAgBqG,EAAEQ,QAAUrY,KAAKkU,gBACtClU,KAAKF,aAAa2V,SAEtB,EACAF,WAAWtF,GAET,MAAMpP,EAAaoP,EAAQpP,WACrBI,EAAagP,EAAQhP,WAE3BjB,KAAKiB,WAAaA,GAAYJ,EAE3BA,GAAcI,GAEfjB,KAAKyS,WAAa,OAClBzS,KAAKsT,WAAa,QAClBtT,KAAK2S,cAAgB3S,KAAKqU,oBAC1BrU,KAAKuT,cAAgBvT,KAAKuU,oBAC1BvU,KAAK4S,kBAAoB,EACzB5S,KAAKwT,kBAAoB,EACzBxT,KAAK+R,sBAAwB,SAEvBlR,EAE0B,IAA7Bb,KAAKqU,qBAENrU,KAAKyS,WAAa,OAClBzS,KAAKsT,WAAa,OAClBtT,KAAKuT,cAAgB,EACrBvT,KAAK4S,kBAAoB,EACzB5S,KAAKwT,kBAAoB,EACzBxT,KAAK+R,sBAAwB,SAI7B/R,KAAKyS,WAAa,OAClBzS,KAAKsT,WAAa,QAClBtT,KAAKuT,cAAgB,EACrBvT,KAAK4S,kBAAoB,EACzB5S,KAAKwT,kBAAoB,EACzBxT,KAAK+R,sBAAwB,QAGzB9Q,IAE0B,IAA7BjB,KAAKqU,qBAENrU,KAAKyS,WAAa,OAClBzS,KAAKsT,WAAa,QAClBtT,KAAKuT,cAAgB,EACrBvT,KAAK4S,kBAAoB,EACzB5S,KAAKwT,kBAAoB,EACzBxT,KAAK+R,sBAAwB,SAI7B/R,KAAKyS,WAAa,OAClBzS,KAAKsT,WAAa,OAClBtT,KAAKuT,cAAgB,EACrBvT,KAAK4S,kBAAoB,EACzB5S,KAAK2S,cAAgB,EACrB3S,KAAKwT,kBAAoB,EACzBxT,KAAK+R,sBAAwB,QAGnC,EACA2D,WAAWzF,GAETjQ,KAAKqU,oBAAsBpE,EAAQqI,MACnCtY,KAAKuU,oBAAsBtE,EAAQsI,MACnCvY,KAAK2S,cAAgB3S,KAAKqU,oBAC1BrU,KAAKuT,cAAgBvT,KAAKuU,mBAC5B,EACA/B,eAEE,MAAMgG,EAAUxY,KAAKgT,aACrBhT,KAAKgT,aAAehT,KAAKmT,aACzBnT,KAAKmT,aAAeqF,EAEpBxY,KAAKwV,WAAU,KACbxV,KAAKF,aAAa2V,QAAQ,GAE9B,ICvnBJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,mjLCRS3Z,GAAG,kB,IACCiB,MAAM,e,IAEFA,MAAM,kB,YACPf,EAAAA,EAAAA,GAIM,aAHFA,EAAAA,EAAAA,GAAY,UAAR,QACJA,EAAAA,EAAAA,GACwC,mBADrC,yBAAoBA,EAAAA,EAAAA,GAAI,wDACS,K,IAGnCe,MAAM,e,IAIII,IAAI,YAAYJ,MAAM,iB,YAGzBf,EAAAA,EAAAA,GAAoB,WAAf,aAAS,K,IAKjBe,MAAM,iB,gBAEFA,MAAM,a,4BAMVA,MAAM,Y,YACPf,EAAAA,EAAAA,GAAqB,UAAjB,gBAAY,K,YAEZA,EAAAA,EAAAA,GAA6D,OAAxDU,IAAAC,GAAiDC,IAAI,I,uBAI9DZ,EAAAA,EAAAA,GAAsD,OAAjDF,GAAG,iBAAiBgD,MAAA,kB,uBACzB9C,EAAAA,EAAAA,GAGO,QAHDF,GAAG,cAAY,EACjBE,EAAAA,EAAAA,GAAsD,OAAjDU,IAAAU,GAA0CR,IAAI,M,QAAG,kBAE1D,K,gCAzCWuC,EAAAsZ,YAAS,WAAxC1c,EAAAA,EAAAA,IA8CM,MA9CNE,GA8CM,EA7CFD,EAAAA,EAAAA,GA4CM,MA5CNqD,GA4CM,EA3CFrD,EAAAA,EAAAA,GAA6D,UAArDe,MAAM,eAAgBoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAoY,cAAApY,EAAAoY,gBAAArY,KAAc,MACnDrE,EAAAA,EAAAA,GAyCM,MAzCNc,GAyCM,CAxCFwC,IAMAtD,EAAAA,EAAAA,GAiCM,MAjCNuD,GAiCM,EAhCFvD,EAAAA,EAAAA,GASO,QATI2c,SAAMvY,EAAA,KAAAA,EAAA,IAAA4G,EAAAA,EAAAA,KAAX,QAAmB,e,WACrBhL,EAAAA,EAAAA,GAAyF,SAAlFgB,KAAK,OAAOC,KAAK,SAASF,MAAM,aAAa6b,YAAY,S,qCAAkBzZ,EAAA0Z,MAAK/X,I,iBAAL3B,EAAA0Z,UAAK,SACvF7c,EAAAA,EAAAA,GAAmG,SAA5FgB,KAAK,WAAWC,KAAK,WAAWF,MAAM,aAAa6b,YAAY,U,qCAAmBzZ,EAAA2Z,SAAQhY,I,iBAAR3B,EAAA2Z,aACzF9c,EAAAA,EAAAA,GAIQ,QAJRyD,GAIQ,EAHJzD,EAAAA,EAAAA,GACwB,SADjBgB,KAAK,WAAWlB,GAAG,YAAYmB,KAAK,YAAYF,MAAM,iBACxDgc,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA0Y,WAAA1Y,EAAA0Y,aAAA3Y,K,SACbX,MAEJ1D,EAAAA,EAAAA,GAAqE,UAA7DkB,MAAM,MAAOiD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA2Y,UAAA3Y,EAAA2Y,YAAA5Y,IAAUtD,MAAM,cAAa,QAAG,KAGhEf,EAAAA,EAAAA,GAMM,MANN2D,GAMM,EALF3D,EAAAA,EAAAA,GAA0E,KAAtEkd,KAAI,KAAQC,WAAa,mBAAoBpc,MAAM,YAAW,OAAI,EAAA6C,KACtE5D,EAAAA,EAAAA,GAGM,MAHNqB,GAGM,EAFFrB,EAAAA,EAAAA,GAAyE,KAArEkd,KAAI,KAAOC,WAAa,mBAAoBpc,MAAM,UAAS,SAAM,EAAA8C,KACrE7D,EAAAA,EAAAA,GAA0E,KAAtEkd,KAAI,KAAOC,WAAa,mBAAoBpc,MAAM,UAAS,UAAO,EAAAO,SAI9EtB,EAAAA,EAAAA,GAYM,MAZNod,GAYM,CAXF5Y,IACAxE,EAAAA,EAAAA,GAGO,QAHDe,MAAM,WAAYoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA+Y,WAAA/Y,EAAA+Y,aAAAhZ,K,CAC3BI,IAA6D,0BAIjEjD,GACAkD,eAGO,c,oDAiB/B,MAAM4Y,GAAY,uBAElB,QACIxF,OACI,MAAO,CACHyF,MAAO,GACPV,MAAO,GACPC,SAAU,GACVU,MAAO,GACPC,aAAc,GACdC,YAAa,KACbC,cAAe,GACf1c,KAAM,GACN2c,MAAO,GACPC,MAAO,GACPC,OAAQ,GACRC,SAAU,GACVC,WAAY,GACZlX,IAAK,GACL+D,EAAG,GACHoT,WAAY,GACZ7S,KAAM,GACN8S,SAAU,GACVC,QAAS,GACTC,KAAM,GACNC,SAAU,GACVC,OAAQ,GACRC,YAAY,EACZ9B,WAAY,EAEpB,EACA9B,UACI3W,KAAK0Z,YAAc,IAAIjC,OAAO+C,eAC1BlB,GACAtZ,KAAKmZ,WAAa,YAGtB,IAAIsB,EAAQza,KAAK0Z,YAAYgB,eAC7B1a,KAAK0Z,YAAYiB,UAAU,QAAS,EAAG,IACvC3a,KAAK0Z,YAAYkB,UAAU5a,KAAKmZ,YAChCnZ,KAAK0Z,YAAYmB,SAASJ,GAC1Bza,KAAK0Z,YAAYoB,WACjB9a,KAAK0Z,YAAYqB,sBACjB/a,KAAKgb,YAAchb,KAAK0Z,YAAYuB,YAAYC,aAChDC,QAAQC,IAAIpb,KAAKgb,aAEjBK,EAAEC,UAAUC,GAAG,QAAS,eAAe,WACnC,IAAIC,EAAgBF,SAASG,eAAe,kBAAkBC,WAC9DF,EAAcG,OAClB,GACJ,EACA9E,QAAS,CACLmC,YACI,IAAI4C,EAAMN,SAASG,eAAe,aAC9BG,EAAI7a,QAEJf,KAAKua,YAAa,EAIlBva,KAAKua,YAAa,CAE1B,EAEAlB,YAGI5B,OAAOoE,MAAMC,KAAKC,MAAM,CACpBC,MAAO,6GACPC,QAASjc,KAAKkc,iBAEtB,EACAC,wBACIhB,QAAQC,IAAI,KACZ3D,OAAOoE,MAAMO,IAAIC,QAAQ,CACrBC,IAAK,cACLL,QAASE,UACL,MAAMI,EAAgBC,EAAID,cACpBxC,EAAWwC,EAAcE,QAAQ1C,SACjClB,EAAQ0D,EAAc1D,MAC5B,IAAI6D,EAAaH,EAAcI,SAC/B,MAAMC,EAAQnF,OAAOoE,MAAMC,KAAKe,iBAChC,IAAIC,EAAQ,IAAIC,KACZjJ,EAAO,CACPhR,IAAK,EACL7F,KAAMsf,EAActf,KACpB+f,UAAWT,EAAcU,UAAY,IAAMP,EAAWQ,MAAM,EAAG,GAAK,IAAMR,EAAWQ,MAAM,GAC3FC,aAAc,IAAMZ,EAAca,aAAaC,MAAM,KAAK,IAAIC,QAAQ,KAAM,IAC5EzE,MAAO0D,EAAc1D,MACrBiB,OAAQyC,EAAczC,OACtBC,SAAUwC,EAAcE,QAAQ1C,SAChC3S,KAAM,EACN+S,QAAS,GACTC,KAAM,GACNC,SAAU,GACVvB,SAAU,GACV8D,MAAOA,EACPW,WAAYT,EAAMU,cAAgB,IAAMV,EAAMW,WAAa,IAAMX,EAAMY,SACvEpD,OAAQ,GACRqD,UAAW,GACXC,UAAW,IAIXC,EAAa,IAAId,KAClB/c,KAAKua,WACJsD,EAAWC,QAAQD,EAAWE,UAAa,SAG3CF,EAAWC,QAAQD,EAAWE,UAAa,OAE/CC,GAAAA,EAAQC,IAAI,QAASrB,EAAO,CAAEsB,QAASL,EAAYM,OAAQne,KAAKoe,QAAShE,KAAM,YACzEiE,GAAAA,EAAMC,KAAK,uBAAwBC,KAAKC,UAAU1K,GAAO,CAC3D2K,QAAS,CACL,eAAgB,sBAErBC,MAAKlC,IAC4B,GAA5BA,EAAI1I,KAAK6K,MAAM,WACf3e,KAAKka,SAAW,EAChB0E,MAAM,WAE4B,GAA7BpC,EAAI1I,KAAK6K,MAAM,GAAG,SACvB3e,KAAKka,SAAW,EAChB0E,MAAM,WAE4B,GAA7BpC,EAAI1I,KAAK6K,MAAM,GAAG,UACvB3e,KAAKka,SAAW,EAChB0E,MAAM,qBACN5e,KAAK6e,cACT,IAEJ1D,QAAQC,IAAIpb,KAAKka,UACI,GAAjBla,KAAKka,gBACCmE,GAAAA,EAAMC,KAAK,oBAAqBC,KAAKC,UAAU1K,GAAO,CACxD2K,QAAS,CACL,eAAgB,sBAM5BtD,QAAQC,IAAI,WAAYrB,GACxBoB,QAAQC,IAAI,QAASvC,GACrBsC,QAAQC,IAAI,QAASwB,GAEA,GAAjB5c,KAAKka,gBACCmE,GAAAA,EAAMC,KAAK,qBAAsBC,KAAKC,UAAU1K,GAAO,CACzD2K,QAAS,CACL,eAAgB,sBAErBC,MAAKlC,IACJxc,KAAKyY,WAAY,EACjBzY,KAAK8e,MAAM,aAAa,IAGhC3D,QAAQC,IAAItH,EAAK,EAGrBiL,KAAOC,IACH7D,QAAQC,IAAI4D,EAAM,GAG9B,EACAH,cACIpH,OAAOoE,MAAMO,IAAIC,QAAQ,CACrBC,IAAK,kBACLL,QAAS,SAAUgD,GACf9D,QAAQC,IAAI6D,GACZ3D,SAAS4D,OAAS,QAEtB,EACAH,KAAM,SAAUC,GACZ7D,QAAQC,IAAI4D,EAChB,GAER,EACA7C,mBAEuBkC,GAAAA,EAAMc,IAAI,iBAAiBT,MAAMO,IAChDjf,KAAKuZ,MAAQ0F,EAASnL,KACtBqH,QAAQC,IAAIpb,KAAKuZ,MAAM,IAGtB6F,OAAMJ,IACH7D,QAAQ6D,MAAMA,EAAM,GAEhC,EACA/F,WACI,IAAInF,EAAO,CACP+E,MAAO7Y,KAAK6Y,MACZC,SAAU9Y,KAAK8Y,SACf8D,MAAO,GACPxV,KAAM,IACNkT,OAAQ+E,KAAAA,OAAgBrf,KAAK8Y,UAAUwG,YAE3CjB,GAAAA,EAAMC,KAAK,qBAAsBC,KAAKC,UAAU1K,GAAO,CACnD2K,QAAS,CACL,eAAgB,sBAErBC,MAAMO,IACL,IAAIrC,EAAQqC,EAASnL,KACrB,GAAa,GAAT8I,EAAgB,CAEhB,IAAIiB,EAAa,IAAId,KAClB/c,KAAKua,WACJsD,EAAWC,QAAQD,EAAWE,UAAa,SAG3CF,EAAWC,QAAQD,EAAWE,UAAa,OAE/CC,GAAAA,EAAQC,IAAI,QAASrB,EAAO,CAAEsB,QAASL,EAAYM,OAAQne,KAAKoe,QAAShE,KAAM,MAC/Ee,QAAQC,IAAIwB,GACZgC,MAAM,UACN5e,KAAKyY,WAAY,EAKjBzY,KAAK8e,MAAM,aACf,MAEIF,MAAM,oBACV,IAECQ,OAAOJ,IACJ7D,QAAQ6D,MAAMA,EAAM,GAEhC,EACAtG,eACI1Y,KAAKyY,WAAY,EACjBzY,KAAK8e,MAAM,cACf,IC3RR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,i4LCRShjB,GAAG,e,IACCiB,MAAM,Y,YACPf,EAAAA,EAAAA,GAA+C,OAA1CU,IAAAC,GAAmCC,IAAI,I,uBAC5CZ,EAAAA,EAAAA,GAAwB,SAArB,qBAAiB,K,YAIZA,EAAAA,EAAAA,GAA4E,OAAvEU,IAAAU,GAA6CR,IAAI,GAAGG,MAAM,c,eAA/DwC,I,YAIAvD,EAAAA,EAAAA,GAAqB,KAAlBe,MAAM,SAAO,W,IAERA,MAAM,Q,0EAb9BhB,EAAAA,EAAAA,IAyCM,MAzCNE,GAyCM,EAxCFD,EAAAA,EAAAA,GAsCM,MAtCNqD,GAsCM,CArCFvC,GACAwC,IAEAtD,EAAAA,EAAAA,GAiCM,OAjCDe,MAAM,iBAAiBN,IAAI,gBAAiBwJ,aAAU7F,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAif,YAAAjf,EAAAif,cAAAlf,K,EACzDrE,EAAAA,EAAAA,GAES,UAFAmE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAkf,aAAAlf,EAAAkf,eAAAnf,IAAarD,KAAK,U,IAIHmC,EAAAsgB,aAAU,WAAzC1jB,EAAAA,EAAAA,IA2BM,O,MA3BDgB,OAAKmU,EAAAA,EAAAA,IAAA,CAAC,cAAa,OAAuC/R,EAAAsgB,e,CAC3D/f,IACA1D,EAAAA,EAAAA,GAwBK,YAvBDA,EAAAA,EAAAA,GAA4D,KAA5D2D,GAA4D,EAA3C3D,EAAAA,EAAAA,GAAoC,eAAAoH,EAAAA,EAAAA,IAAA,KAApBsc,UAAQ,YAAY,SACrD1jB,EAAAA,EAAAA,GAOK,YAHDA,EAAAA,EAAAA,GAEI,KAFAmE,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAqf,eAAe,WAAY5iB,OAAKmU,EAAAA,EAAAA,IAAA,UAAgB5Q,EAAAsf,cAAc,aAAc9jB,GAAG,UAAS,UAEnG,MAEJE,EAAAA,EAAAA,GAOK,YAHDA,EAAAA,EAAAA,GAEI,KAFAmE,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAqf,eAAe,WAAY5iB,OAAKmU,EAAAA,EAAAA,IAAA,UAAgB5Q,EAAAsf,cAAc,aAAc9jB,GAAG,UAAS,aAEnG,MAOJE,EAAAA,EAAAA,GAA6B,MAAxBmE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAuf,QAAAvf,EAAAuf,UAAAxf,KAAQ,WAAI,4BAK4BlB,EAAA2gB,eAAiB3gB,EAAA4gB,UAAO,WAA5FC,EAAAA,EAAAA,IAAgGC,EAAA,C,MAAnFC,aAAY5f,EAAA6f,SAAWC,cAAa9f,EAAA+f,a,4DAgIrD,QACIC,WAAa,CACTC,WAAUA,IAEdzM,OACI,MAAO,CACHgM,cAAc,EACdlD,MAAO,CAAC,EACR8C,SAAU,GACVc,UAAW,GACXC,QAAS,GACTV,SAAS,EACTN,YAAW,EAEnB,EACAtD,sBACUnc,KAAKmgB,UACf,EACAtJ,QAAU,CACNsF,iBACI,MAAM+C,EAASlB,GAAAA,EAAQmB,IAAI,SAC3B,IAAIrL,EAAO,CACP8I,WAAiB8D,GAAVxB,EAAsB,GAAKA,GAGtC,MAAM1C,QAAY6B,GAAAA,EAAMC,KACpB,sBACAC,KAAKC,UAAU1K,GACf,CACI2K,QAAS,CAAE,eAAgB,sBAGjB,IAAd3K,EAAK8I,MAEL5c,KAAK+f,SAAU,EACoB,GAA5BvD,EAAI1I,KAAK6K,MAAM,WACtBC,MAAM,4BACNZ,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YAEtD3C,OAAOR,SAASC,UACK,KAAdsF,EAAIoE,SAEX5gB,KAAKwgB,UAAYhE,EAAI1I,KAAK6K,MAAM,GAAG,cACnC3e,KAAK0f,SAAWlD,EAAI1I,KAAK6K,MAAM,GAAG,QAClC3e,KAAKygB,QAAUjE,EAAI1I,KAAK6K,MAAM,GAAG,OACjC3e,KAAK+f,SAAU,EAEvB,EACA5D,oBACI,MAAMK,QAAY6B,GAAAA,EAAMC,KAAK,oBACxB,+BAA8Bte,KAAKygB,aAAa,CACjDhC,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAGvB,KAAdjC,EAAIoE,SACJ5gB,KAAK2C,SAAW,IAAI6Z,EAAI1I,KAAK6K,OAC7BxD,QAAQC,IAAIpb,KAAK2C,UAEzB,EACAkd,SACIjB,MAAM,YACe,GAAjB5e,KAAK6gB,WACL1F,QAAQC,IAAI,WACZpb,KAAK6e,eAETb,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YAGtD3C,OAAOR,SAASC,SAChBlX,KAAK+f,SAAU,CACnB,EACAe,gBAAgBC,GACZC,aAAaC,QAAQ,OAAQF,EAAKG,WAClCF,aAAaC,QAAQ,UAAWF,EAAKnd,IACzC,EAUA4b,cACQxf,KAAK+f,QACL/f,KAAKyf,YAAczf,KAAKyf,WAExBzf,KAAK8f,cAAgB9f,KAAK8f,YAElC,EAEAP,WAAW4B,GACFnhB,KAAKoX,MAAMgK,cAAcC,SAASF,EAAMG,iBACzCthB,KAAKyf,YAAa,EAE1B,EACAY,cACIrgB,KAAK8f,cAAe,CACxB,EACAH,eAAe4B,GAKX9J,OAAOR,SAASiC,KAAOlZ,KAAKmZ,WAAaoI,CAC7C,EACA3B,cAAc2B,GACV,OAAOvhB,KAAKwhB,OAAOpH,OAASmH,CAChC,EACAE,qBACI,MAAMC,EAASpG,SAASG,eAAe,UACjCkG,EAASrG,SAASG,eAAe,UAKvC,GAHIiG,IAAQA,EAAO3gB,SAAU,GACzB4gB,IAAQA,EAAO5gB,SAAU,GAEzBf,KAAK4f,cAAc,WAAY,CAC/B,MAAM8B,EAASpG,SAASG,eAAe,UACnCiG,IAAQA,EAAO3gB,SAAU,EACjC,MAAO,GAAIf,KAAK4f,cAAc,WAAY,CACtC,MAAM+B,EAASrG,SAASG,eAAe,UACnCkG,IAAQA,EAAO5gB,SAAU,EACjC,CACJ,EACA8d,cACID,MAAM,WACVnH,OAAOoE,MAAMO,IAAIC,QAAQ,CACrBC,IAAK,kBACLL,QAAS,SAAUgD,GACf9D,QAAQC,IAAI6D,GACZ3D,SAAS4D,OAAS,QAEtB,EACAH,KAAM,SAAUC,GACZ7D,QAAQC,IAAI4D,EAChB,GAER,GAEA4C,SAAU,CACNC,eACI,OAAO7hB,KAAKwhB,OAAOpH,IACvB,ICvTZ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,YNmnBA,IAEI0H,MAAO,CAAC,UACRhO,OACI,MAAO,CACHrD,OAAQ,EACRa,qBAAqB,EACrBP,UAAW,CACPgR,GACAC,GACAC,GACAC,IAIJ1R,YAAa,CACT,cACA,iBACA,cACA,eAIJE,cAAe,CACX,qCACA,8CACA,oDACA,mDAEJhB,gBAAgB,EAChByS,WAAY,KACZ/c,SAAU,SACVyF,WAAY,GACZzG,cAAc,EAEdge,mBAAoB,KACpBC,iBAAkB,KAClBC,mBAAoB,KACpBC,iBAAkB,KAClBC,cAAc,EACdC,cAAc,EACdC,gBAAgB,EAChBC,kBAAmB,KACnBC,QAASC,EAAQ,OACjBC,OAAQD,EAAQ,OAChBE,SAAU,GACVC,YAAa,OACbC,aAAc,OACdhT,QAAS,CAAC,EACViT,QAAQ,EACRC,QAAQ,EAERC,WAAW,EACXC,eAAe,EACfC,eAAe,EACfziB,YAAY,EACZI,YAAY,EACZsiB,gBAAgB,EAChBC,UAAW,wBACXjb,YAAa,EACbE,aAAc,EACdgb,aAAc,EACdtZ,gBAAiB,EACjBE,YAAa,EACb6C,iBAAkB,EAClBwW,eAAgB,EAChBzU,mBAAoB,EACpBkB,WAAW,EACXtK,iBAAkB,MAClBmD,qBAAsB,MACtB6C,qBAAsB,MACtB6B,uBAAwB,MACxBiW,eAAe,EACfC,UAAW,KACX5N,QAAS,GACTrB,QAAS,GACTD,MAAO,GACPmP,MAAO,GACPrc,iBAAkB,CAAC,EACnBkH,iBAAkB,CAAC,EACnB/B,eAAgB,CAAC,EACjB9C,eAAgB,CAAC,EACjBia,UAAW,SACX1kB,UAAU,EACVwd,MAAO,CAAC,EACR8C,SAAU,GACVc,UAAW,GACXC,QAAS,GACTsD,aAAa,EACbphB,SAAU,GACVmd,cAAc,EACdL,YAAY,EACZtb,QAAO,EAEf,EACAgY,sBAGUnc,KAAKmgB,iBACLngB,KAAKgkB,oBACLhkB,KAAKikB,mBACLjkB,KAAKkkB,mBACLlkB,KAAKmkB,iBACLnkB,KAAKokB,iBACLpkB,KAAKqkB,WACX/I,SAASgJ,KAAK5M,iBAAiB,QAAS1X,KAAKukB,wBAC7CvkB,KAAKZ,UAAW,QACVY,KAAKwkB,UACf,EACA5P,MAAO,CACH/T,WAAW+U,EAAUC,GACjB7V,KAAKiQ,QAAU,CACX4E,KAAM,aACNhU,WAAYb,KAAKa,WACjBI,WAAYjB,KAAKiB,WAEzB,EACAA,WAAW2U,EAAUC,GACjB7V,KAAKiQ,QAAU,CACX4E,KAAM,aACNhU,WAAYb,KAAKa,WACjBI,WAAYjB,KAAKiB,WAEzB,EACAmE,WACI,MAAMqf,EAAWzkB,KAAKF,cAAciV,aAAa2P,gBAAgBvO,KAAKwO,SAChEC,EAAW5kB,KAAKF,cAAciX,aAAa2N,gBAAgBvO,KAAKwO,UAClEF,GAAYG,IACR5kB,KAAKoF,WAAaqf,EAAWG,GAAUtH,QAAQ,YAAa,IAAIuH,gBAChE7kB,KAAKF,cAAciV,YAAYC,wBAC/BhV,KAAKF,cAAciX,YAAY/B,wBAG3C,GAEJsL,WAAY,CACRwE,cAAa,GACbvE,WAAU,GACVwE,OAAMA,IAEVpO,UACI3W,KAAK+iB,SAAW/iB,KAAKwhB,OAAOwD,OAAOjC,SAEnC,MAAMkC,EAAqBjE,aAAakE,QAAQ,iBAChD,GAA2B,OAAvBD,EAA6B,CAC7B,MAAME,EAAgBnlB,KAAK4G,iBAAiBwe,MACvCC,GAAWA,EAAOvpB,KAAOmpB,IAE1BE,IACAA,EAAcpe,SAAU,EAEhC,CAEA/G,KAAKwV,WAAU2G,UACXnc,KAAKF,aAAaiW,aAAaC,QAAQK,SAAQiP,IAC3CA,EAAEC,SAAS,IAGM,QAAjBvlB,KAAK+iB,eAAuCrC,GAAjB1gB,KAAK+iB,SAChCzH,SAASxd,MAAQ,gDAGjBwd,SAASxd,MAAS,GAAEkC,KAAK+iB,8CAC7B,GAWR,EAEAlM,QAAS,CACLsF,iBACI,MAAM+C,EAASlB,GAAAA,EAAQmB,IAAI,SAC3B,IAAIrL,EAAO,CACP8I,WAAiB8D,GAAVxB,EAAsB,GAAKA,GAEtC,MAAM1C,QAAY6B,GAAAA,EAAMC,KAAM,sBAAuBC,KAAKC,UAAU1K,GAAO,CACvE2K,QAAS,CAAE,eAAgB,sBAEb,IAAd3K,EAAK8I,QAG4B,GAA5BJ,EAAI1I,KAAK6K,MAAM,WACpBC,MAAM,4BACNZ,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YACtDpa,KAAKwlB,QAAQC,KAAK,kBAEC,KAAdjJ,EAAIoE,SACT5gB,KAAKygB,QAAUjE,EAAI1I,KAAK6K,MAAM,GAAG,aAC3B3e,KAAKgkB,eAGnB,EACA7H,oBACI,MAAMK,QAAY6B,GAAAA,EAAMC,KAAK,oBACxB,+BAA8Bte,KAAKygB,aAAa,CAC7ChC,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAG3B,KAAdjC,EAAIoE,SACJ5gB,KAAK2C,SAAW,IAAI6Z,EAAI1I,KAAK6K,OAGrC,EAaA+G,wBACI1lB,KAAKwQ,YAAcxQ,KAAKwQ,YAAYxQ,KAAKyQ,SAAW,EACxD,EACA5L,WACI7E,KAAKwV,WAAU,KACXiB,YAAW,KACPzW,KAAKF,aAAaiV,YAAY4Q,QAC9B3lB,KAAKF,aAAaiX,YAAY4O,QAC9B3lB,KAAKF,aAAakX,UAAU4O,cAAc,GAC3C,IAAI,GAEf,EACAxU,YAAYtK,GACR9G,KAAKyQ,OAAS3J,CAElB,EAEA4E,uBACI1L,KAAKsR,qBAAuBtR,KAAKsR,mBACrC,EAEAjB,uBACIrQ,KAAKsR,qBAAsB,CAC/B,EAEAV,YACQ5Q,KAAKyQ,OAAS,GACdzQ,KAAKyQ,QAEb,EAEAY,YACQrR,KAAKyQ,OAASzQ,KAAK+Q,UAAU7Q,OAAS,GACtCF,KAAKyQ,QAEb,EAEAd,iBACI3P,KAAKwV,WAAU,KACXiB,YAAW,KACPzW,KAAKiQ,QAAU,CACX4E,KAAM,iBACNnF,eAAgB1P,KAAK0P,eACxB,GACF,IAAI,GAGf,EAGAmW,eAAeC,GACX9lB,KAAK6F,iBAAmBigB,CAC5B,EAEAC,mBAAmBD,GACf9lB,KAAKgJ,qBAAuB8c,CAChC,EACA3J,iBAAiB6J,GACbhF,aAAaC,QAAQ,UAAW+E,SAC1BhmB,KAAKF,aAAammB,KAAKjmB,KAAKygB,QAASzgB,KAAK+iB,UAChDtM,YAAW,KACPzW,KAAKgkB,cACLpF,MAAM,KAAK,GACZ,IACP,EACAzC,iBACI6E,aAAaC,QAAQ,UAAW,UAC1BjhB,KAAKF,aAAammB,KAAKjmB,KAAKygB,QAASzgB,KAAK+iB,UAChDtM,YAAW,KACPzW,KAAKgkB,cACLpF,MAAM,KAAK,GACZ,IACP,EACAsH,YACI,MAAMtjB,EAAO5C,KAAKoX,MAAM+O,UAAUC,MAAM,GAElCC,EAAS,IAAIC,WAEnBD,EAAOE,OAASpK,UACZ,IAAKgF,GAAO7K,QAAQkQ,OAChB,OACJ,MAAMC,EAActF,EAAM7K,OAAOkQ,OACjCxmB,KAAKZ,UAAW,QACVY,KAAKF,aAAa4mB,KAAKD,GAC7B,MAAME,EAAWC,aAAY,MACe,KAApC5mB,KAAKF,aAAa+mB,gBAClB7mB,KAAKZ,UAAW,EAChB0nB,cAAcH,GAClB,GACD,IAAI,EAIXN,EAAOU,WAAWnkB,EACtB,EACAgR,aACI5T,KAAKmQ,WAAanQ,KAAKmQ,UACvBnQ,KAAKoX,MAAMY,cAAcpE,WAAW5T,KAAKmQ,UAC7C,EAGAgM,6BAA6BgF,SACnB1K,YAAW,KACb,MAAMuQ,EAAiB7F,EAAM7K,OAE7B,IACK0Q,EAAeC,QAAQ,0BACvBD,EAAeC,QAAQ,wBACvBD,EAAeC,QAAQ,wBACvBD,EAAeC,QAAQ,wBAC1B,CACEjG,aAAaC,QAAQ,gBAAiB,MAEtC,MAAMiG,EAAelnB,KAAKF,aAAaiV,YAAY2P,eAAiB1kB,KAAKF,aAAaiV,YAAY2P,eAAiB1kB,KAAKF,aAAaiX,YAAY2N,eAQjJ,GAPK1kB,KAAKF,cAAciV,YAAYoS,eAChCnnB,KAAKwH,iBAAiBT,SAAU,EAChC/G,KAAK6J,eAAe9C,SAAU,EAC9B/G,KAAK0O,iBAAiB3H,SAAU,EAChC/G,KAAK2M,eAAe5F,SAAU,EAC9B/G,KAAK6K,WAAa,MAElBqc,EAAc,CACd,MAAM/Q,EAAO+Q,EAAa/Q,KACpBwO,EAAWuC,EAAa/Q,MAAMwO,SACpC,OAAQA,GACJ,IAAK,SACD3kB,KAAKoF,SAAW,SAChBpF,KAAKwH,iBAAmB,IACjBxH,KAAKgW,QAAQoP,MAAKlP,GAAKA,EAAEjZ,OAASkZ,EAAKlZ,QAE9C+C,KAAKwH,iBAAiBT,SAAU,EAChC,MAAMqgB,EAAOF,EAAaG,UAE1BrnB,KAAKwH,iBAAiBS,YAAcqf,KAAKC,MAAe,IAATH,EAAKlR,GAAY,KAAKsR,iBACrExnB,KAAKwH,iBAAiBU,UAAYof,KAAKC,MAAe,IAATH,EAAKK,GAAY,KAAKD,iBACnExnB,KAAKwH,iBAAiBK,SAAWuf,EAAKlR,EAAI,MAASkR,EAAKK,EAAI,MAAOC,QAAQ,GAC3E1nB,KAAKwH,iBAAiBM,MAAuC,MAA/B9H,KAAKwH,iBAAiBK,QAAiB6f,QAAQ,GAC7E,MACJ,IAAK,OACD1nB,KAAKoF,SAAW,OAChBpF,KAAK6J,eAAiB,IACf7J,KAAK6jB,MAAMuB,MAAKlP,GAAKA,EAAEjZ,OAASkZ,EAAKlZ,QAE5C+C,KAAK6J,eAAe9C,SAAU,EAE9B,MAAM4gB,EAAQT,EAAaG,UAC3BrnB,KAAK6J,eAAe5B,YAAcqf,KAAKC,MAAgB,IAAVI,EAAMzR,GAAY,IAAIsR,iBACnExnB,KAAK6J,eAAe3B,UAAYof,KAAKC,MAAgB,IAAVI,EAAMF,GAAY,IAAID,iBACjExnB,KAAK6J,eAAehC,SAAW8f,EAAMzR,EAAI,MAASyR,EAAMF,EAAI,MAAOC,QAAQ,GAC3E1nB,KAAK6J,eAAe/B,MAAqC,MAA7B9H,KAAK6J,eAAehC,QAAiB6f,QAAQ,GACzE,MACJ,IAAK,OACD1nB,KAAKoF,SAAW,OAChBpF,KAAK2M,eAAiB,IACf3M,KAAK0U,MAAM0Q,MAAKlP,GAAKA,EAAEjZ,OAAUkZ,EAAKwO,SAAWxO,EAAK4M,SAASzF,QAAQ,SAAU,OAExFtd,KAAK2M,eAAe5F,SAAU,EAC9B,MACJ,IAAK,SACD/G,KAAKoF,SAAW,SAChB,MAAMwiB,EAAU,mCACVC,EAAUD,EAAQE,KAAK3R,EAAK4M,UAClC/iB,KAAK0O,iBAAmB,IACjB1O,KAAK2U,QAAQyQ,MAAKlP,GAAKA,EAAEjZ,OAAUkZ,EAAKwO,SAAWkD,EAAQ,MAElE7nB,KAAK0O,iBAAiB3H,SAAU,EAChC,MAEZ,CACJ,IACD,IACP,EAEAE,YAAYJ,GACHA,EAAEE,UACH/G,KAAK+nB,kBAAkBlhB,GACvB7G,KAAKgoB,mBAAqBnhB,EAAE/K,IAG3B+K,EAAEE,UACH/G,KAAKioB,gBAAgBphB,GACrB7G,KAAKgoB,mBAAqBnhB,EAAE/K,IAG3B+K,EAAEE,UACH/G,KAAKkoB,gBAAgBrhB,GACrB7G,KAAKgoB,mBAAqBnhB,EAAE/K,IAG3B+K,EAAEE,UACH/G,KAAKmoB,kBAAkBthB,GACvB7G,KAAKgoB,mBAAqBnhB,EAAE/K,GAGpC,EACAwL,iBAAiBT,GACRA,EAAEE,SACH/G,KAAK+nB,kBAAkBlhB,GAEtBA,EAAEE,SACH/G,KAAKioB,gBAAgBphB,GAEpBA,EAAEE,SACH/G,KAAKmoB,kBAAkBthB,GAEtBA,EAAEE,SACH/G,KAAKkoB,gBAAgBrhB,EAE7B,EACAkhB,kBAAkB5C,EAAere,GAE7B9G,KAAKooB,mBAELjD,EAAcpe,SAAU,EAGxB/G,KAAKoiB,mBAAqBtb,EAC1Bka,aAAaC,QAAQ,gBAAiBkE,EAAcrpB,GAExD,EAEAmsB,gBAAgBI,EAAavhB,GACzB9G,KAAKooB,mBAELC,EAAYthB,SAAU,EAEtB/G,KAAKqiB,iBAAmBvb,EACxBka,aAAaC,QAAQ,gBAAiBoH,EAAYvsB,GACtD,EAEAqsB,kBAAkBG,EAAgBxhB,GAE9B9G,KAAKooB,mBAGLE,EAAevhB,SAAU,EAGzB/G,KAAKsiB,mBAAqBxb,EAC1Bka,aAAaC,QAAQ,gBAAiBqH,EAAexsB,GACzD,EAEAosB,gBAAgBK,EAAazhB,GAEzB9G,KAAKooB,mBAGLG,EAAYxhB,SAAU,EAGtB/G,KAAKuiB,iBAAmBzb,EACxBka,aAAaC,QAAQ,gBAAiBsH,EAAYzsB,GACtD,EAEAssB,mBACIpoB,KAAKwI,gBAAgB6N,SAAQgP,IACzBA,EAAOte,SAAU,CAAK,IAG1B/G,KAAKoK,cAAciM,SAAQmS,IACvBA,EAAKzhB,SAAU,CAAK,IAGxB/G,KAAKkP,gBAAgBmH,SAAQoB,IACzBA,EAAO1Q,SAAU,CAAK,IAG1B/G,KAAKmN,cAAckJ,SAAQoS,IACvBA,EAAK1hB,SAAU,CAAK,GAE5B,EAEAqd,WACI3M,OAAOiR,UAAa7Q,IAChB,GAAiB,IAAd7X,KAAKygB,QAGR,GAAc,WAAV5I,EAAE/U,IACF9C,KAAKF,aAAa6oB,eACb3oB,KAAKF,cAAciV,YAAYoS,eAChCnnB,KAAKwH,iBAAiBT,SAAU,EAChC/G,KAAK6J,eAAe9C,SAAU,EAC9B/G,KAAK0O,iBAAiB3H,SAAU,EAChC/G,KAAK2M,eAAe5F,SAAU,EAC9B/G,KAAK6K,WAAa,KAClB7K,KAAKF,cAAciV,YAAYC,wBAC/BhV,KAAKF,cAAciX,YAAY/B,8BAEhC,GAAc,WAAV6C,EAAE/U,IACT9C,KAAKF,aAAa8oB,sBACf,GAAI/Q,EAAE/U,IAAI+lB,SAAS,SAAU,CAChC,MAAMC,EAAK9oB,KAAKF,cAAciV,YAAY2P,eACpCqE,EAAK/oB,KAAKF,cAAciX,YAAY2N,eAEpCsE,EAAIF,GAAUC,EAEpB,GAAIC,EAAG,CACH,MAAMC,EAAMpR,EAAE/U,IAAIwa,QAAQ,QAAS,IACnC,IAAI4L,EAAMC,GAAAA,QAAQC,OAClB,OAAQH,GACJ,IAAK,QACDC,EAAIhT,GAAK,GACT,MACJ,IAAK,OACDgT,EAAIhT,GAAK,GACT,MACJ,IAAK,KACDgT,EAAIzB,GAAK,GACT,MACJ,IAAK,OACDyB,EAAIzB,GAAK,GACT,MAGR,GAAIuB,EAAE7S,KAAKwO,SAASkE,SAAS,WAAaG,EAAE7S,KAAKwO,SAASkE,SAAS,QAAS,CACxE,GAAIG,EAAE7S,KAAKwO,SAASkE,SAAS,QAAS,CAClC,MAAMQ,EAAKL,EAAEM,aAAa/S,aAAagT,QAAQC,QAC/CN,EAAMA,EAAIO,SAASJ,EACvB,CACAL,EAAEU,eAAeC,SAAWX,EAAEU,eAAeC,SAASC,IAAIV,GAC1DF,EAAEa,eAAeF,SAAWX,EAAEa,eAAeF,SAASC,IAAIV,GAC1DF,EAAEzS,aAAaoT,SAAWX,EAAEzS,aAAaoT,SAASC,IAAIV,EAC1D,CACJ,CACJ,GAEJzR,OAAOqS,QAAWjS,IACG,IAAd7X,KAAKygB,SAGJ5I,EAAE/U,IAAI+lB,SAAS,UACfpS,YAAW0F,UACPnc,KAAKF,cAAciV,YAAY2B,YAAY,GAC5C,IACP,CAER,EAGAzP,YAAY8iB,GACR/pB,KAAKgW,QAAQK,SAAQgP,IACjBA,EAAOte,QAAUse,IAAW0E,CAAc,GAElD,EAEA9iB,YAAY+iB,GACRhqB,KAAK6jB,MAAMxN,SAAQwN,IACfA,EAAM9c,QAAUyhB,OAASwB,CAAY,GAE7C,EAEA/iB,YAAYgjB,GACRjqB,KAAK2U,QAAQ0B,SAAQoB,IACjBA,EAAO1Q,QAAU0Q,IAAWwS,CAAc,GAElD,EAEAhjB,YAAYijB,GACRlqB,KAAK0U,MAAM2B,SAAQoS,IACfA,EAAK1hB,QAAU0hB,IAAS0B,YAAY,GAE5C,EAEAjjB,cAAckjB,GACVpqB,KAAKwH,iBAAmB4iB,EACxBpqB,KAAKqqB,cACT,EACA3gB,YAAY0gB,GACRpqB,KAAK6J,eAAiBugB,EACtBpqB,KAAKsqB,YACT,EACAlc,cAAcgc,GACVpqB,KAAK0O,iBAAmB0b,EACxBpqB,KAAKuqB,cACT,EACAhe,YAAY6d,GACRpqB,KAAK2M,eAAiByd,EACtBpqB,KAAKwqB,YACT,EACAnpB,cAEI,IAAIiX,EAAQ,EACRC,EAAQ,EACU,MAAlBvY,KAAK4jB,WACLtL,EAAQ,EACRC,EAAQ,EACRvY,KAAK4jB,UAAY,OAEjBtL,EAAQ,EACRC,EAAQ,EACRvY,KAAK4jB,UAAY,MAErB5jB,KAAKiQ,QAAU,CACX4E,KAAM,gBACNyD,MAAOA,EACPC,MAAOA,EAEf,EACA8R,eACI,MAAMvV,EAAa9U,KAAKwH,iBAAiBvK,KAAKqgB,QAAQ,IAAK,IAC3Dtd,KAAKiQ,QAAU,CACX4E,KAAM,eACNC,WAAYA,EACZI,KAAMlV,KAAKyqB,aAAgB,GAAE3V,SAC7B7M,WAAYjI,KAAK0O,iBAAiBgc,KAClCxiB,SAAUlI,KAAK0O,iBAAiBic,KAExC,EACAJ,eACI,MAAMttB,EAAO+C,KAAK0O,iBAAiBzR,KAAKqgB,QAAQ,IAAK,IACrDtd,KAAKiQ,QAAU,CACX4E,KAAM,eACN5X,KAAMA,EACN6W,KAAM9T,KAAK0O,iBAEnB,EACA8b,aACI,MAAMvtB,EAAO+C,KAAK2M,eAAe1P,KAAKqgB,QAAQ,IAAK,IACnDtd,KAAKiQ,QAAU,CACX4E,KAAM,aACN5X,KAAMA,EACN6W,KAAM9T,KAAK2M,eAEnB,EACA2d,aACI,MAAMrtB,EAAO+C,KAAK6J,eAAe5M,KAAKqgB,QAAQ,IAAK,IACnDtd,KAAKiQ,QAAU,CACX4E,KAAM,aACN5X,KAAMA,EACNiY,KAAMlV,KAAK4qB,WAAc,GAAE3tB,SAEnC,EACA+N,gBACIhL,KAAKiQ,QAAU,CACX4E,KAAM,gBACN5X,KAAM,UAEd,EACA4tB,WAAW/jB,GACH9G,KAAK2iB,oBAAsB7b,EAC3B9G,KAAK2iB,kBAAoB,KAGzB3iB,KAAK2iB,kBAAoB7b,CAEjC,EACAgkB,eACI9qB,KAAKF,aAAagC,gBAAkB9B,KAAKojB,WAAapjB,KAAKojB,SAC/D,EACA2H,mBACI/qB,KAAKF,aAAa8B,cAAgB5B,KAAKqjB,eAAiBrjB,KAAKqjB,aACjE,EACA2H,mBACIhrB,KAAKF,aAAa4B,cAAgB1B,KAAKsjB,eAAiBtjB,KAAKsjB,aACjE,EACAnH,uBACInc,KAAKZ,UAAW,QACVY,KAAKF,aAAamrB,OACxBjrB,KAAKZ,UAAW,CACpB,EACA+c,uBACInc,KAAKZ,UAAW,QACVY,KAAKF,aAAaorB,OACxBlrB,KAAKZ,UAAW,CACpB,EACA+c,mBACI,MAAMgP,QAAmB9M,GAAAA,EAAMc,IAAI,qBACnCnf,KAAKgW,QAAUmV,EAAWrX,KAC1B9T,KAAKgW,QAAQK,SAAQxP,IACjBA,EAAE6jB,KAAOU,OAAOvkB,EAAEoB,YAClBpB,EAAE8jB,KAAOS,OAAOvkB,EAAEqB,UAClBrB,EAAEoB,YAAcmjB,OAAOvkB,EAAEoB,YAAc,KAAKuf,iBAC5C3gB,EAAEqB,UAAYkjB,OAAOvkB,EAAEqB,UAAY,KAAKsf,iBACxC3gB,EAAEgB,SAAYujB,OAAOvkB,EAAE6jB,MAAQ,MAAQU,OAAOvkB,EAAE8jB,MAAQ,KAAQ,KAASjD,QAAQ,GACjF7gB,EAAEiB,MAAmB,MAAXjB,EAAEgB,QAAiB6f,QAAQ,EAAE,GAE/C,EACAvL,mBACI,MAAMgP,QAAmB9M,GAAAA,EAAMc,IAAI,qBACnCnf,KAAK2U,QAAUwW,EAAWrX,KAE1B9T,KAAK2U,QAAQ0B,SAAQxP,IACjBA,EAAEsR,OAASiT,OAAOvkB,EAAEsR,QAAUiT,OAAOvkB,EAAEqB,UAAY,EAAI,IACvDrB,EAAEoB,WAAamjB,OAAOvkB,EAAEoB,YAAYuf,iBACpC3gB,EAAEqB,SAAWkjB,OAAOvkB,EAAEqB,UAAUsf,gBAAgB,IAEpDxnB,KAAKoX,MAAMY,cAAcJ,cAAc5X,KAAK2U,QAChD,EACAwH,iBACI,MAAMgP,QAAmB9M,GAAAA,EAAMc,IAAI,mBACnCnf,KAAK0U,MAAQyW,EAAWrX,KACxB9T,KAAK0U,MAAM2B,SAAQxP,IACfA,EAAEsR,OAASiT,OAAOvkB,EAAEqB,UAAY,EAAI,IACpCrB,EAAEwkB,GAAKD,OAAOvkB,EAAEykB,WAChBzkB,EAAEoB,WAAamjB,OAAOvkB,EAAEoB,YAAYuf,iBACpC3gB,EAAEqB,SAAWkjB,OAAOvkB,EAAEqB,UAAUsf,gBAAgB,IAEpDxnB,KAAKoX,MAAMY,cAAcL,YAAY3X,KAAK0U,MAC9C,EACAyH,iBACI,MAAMgP,QAAmB9M,GAAAA,EAAMc,IAAI,mBACnCnf,KAAK6jB,MAAQsH,EAAWrX,KACxB9T,KAAK6jB,MAAMxN,SAAQxP,IACfA,EAAE6jB,KAAOU,OAAOvkB,EAAEoB,YAClBpB,EAAE8jB,KAAOS,OAAOvkB,EAAEqB,UAClBrB,EAAEoB,WAAamjB,OAAOvkB,EAAEoB,YAAYuf,iBACpC3gB,EAAEqB,SAAWkjB,OAAOvkB,EAAEqB,UAAUsf,iBAChC3gB,EAAEgB,SAAYujB,OAAOvkB,EAAE6jB,MAAQ,MAAQU,OAAOvkB,EAAE8jB,MAAQ,KAAQ,KAASjD,QAAQ,GACjF7gB,EAAEiB,MAAmB,MAAXjB,EAAEgB,QAAiB6f,QAAQ,EAAE,GAE/C,EACAvL,iBACInc,KAAK+iB,SAAW/iB,KAAKwhB,OAAOwD,OAAOjC,SACnC,IACI,MAAMwI,QAAkBlN,GAAAA,EAAMc,IAAK,UAASnf,KAAK+iB,gBACjD,IAAIyI,EAAOjN,KAAKC,UAAU+M,EAAUzX,MACpC,GAAI0X,EAAK3C,SAAS,gBACd,KAAO,iBAEX7oB,KAAKZ,UAAW,QACVY,KAAKF,aAAa4mB,KAAK8E,GAC7B,MAAM7E,EAAWC,aAAY,MACe,KAApC5mB,KAAKF,aAAa+mB,gBAClB7mB,KAAKZ,UAAW,EAChB0nB,cAAcH,GAClB,GACD,IACP,CACA,MAAO8E,GACH,MAAMF,QAAkBlN,GAAAA,EAAMc,IAAI,mBAC5BuM,EAAQH,EAAUzX,KACxB,GAAI9T,KAAK+iB,SAAU,CACf,MAAM4I,EAAaD,EAAMtG,MAAKlP,GAAKA,EAAEjZ,OAAS+C,KAAK+iB,WACnD,GAAI4I,EAAY,CACZ3rB,KAAKF,aAAa8rB,SAASD,EAAY3rB,KAAKyqB,cAC5CzqB,KAAKZ,UAAW,EAChB,MAAMunB,EAAWC,aAAY,MACe,KAApC5mB,KAAKF,aAAa+mB,gBAClB7mB,KAAKZ,UAAW,EAChB0nB,cAAcH,GAClB,GACD,IACP,KACK,CACDxL,QAAQC,IAAI,QACZ,MAAMyQ,EAAY7K,aAAakE,QAAQ,QACvC,GAAiB,IAAb2G,GAAgC,MAAbA,EAAmB,OAC1C7rB,KAAKZ,UAAW,QACVY,KAAKF,aAAa4mB,KAAKmF,GAC7B,MAAMlF,EAAWC,aAAY,MACe,KAApC5mB,KAAKF,aAAa+mB,gBAClB7mB,KAAKZ,UAAW,EAChB0nB,cAAcH,GAClB,GACD,IACP,CACJ,CACJ,CACJ,EAEAxK,gBACI,MAAMrI,QAAauK,GAAAA,EAAMc,IAAI,cAC7BhE,QAAQC,IAAItH,EAChB,EAEAjL,WACI,MAAMF,EAAa2e,KAAKwE,KAAK9rB,KAAKwI,gBAAgBtI,OAASF,KAAKyI,cAC5DzI,KAAKuI,YAAcI,GACnB3I,KAAKuI,aAEb,EACAD,eACQtI,KAAKuI,YAAc,GACnBvI,KAAKuI,aAGb,EAEA2B,mBACQlK,KAAKmK,gBAAkB,GACvBnK,KAAKmK,iBAEb,EAEAM,eACI,MAAMshB,EAAiBzE,KAAKwE,KAAK9rB,KAAKoK,cAAclK,OAASF,KAAKqK,aAC9DrK,KAAKmK,gBAAkB4hB,GACvB/rB,KAAKmK,iBAEb,EAEA8C,wBACQjN,KAAKiP,mBAAqB,GAC1BjP,KAAKiP,oBAEb,EAEA1B,oBACI,MAAMye,EAAkB1E,KAAKwE,KAAK9rB,KAAKmN,cAAcjN,OAASF,KAAKyjB,cAC/DzjB,KAAKkN,iBAAmB8e,GACxBhsB,KAAKkN,kBAEb,EAEA8B,0BACQhP,KAAKiP,mBAAqB,GAC1BjP,KAAKiP,oBAEb,EAEAK,sBACI,MAAM2c,EAAoB3E,KAAKwE,KAAK9rB,KAAKkP,gBAAgBhP,OAASF,KAAK0jB,gBACnE1jB,KAAKiP,mBAAqBgd,GAC1BjsB,KAAKiP,oBAEb,EAEAnE,aACI9K,KAAKiQ,QAAU,CACX4E,KAAM,aACN5X,KAAM,QAEd,EAEAivB,SAAS3K,GACLvhB,KAAKmsB,iBACD5K,GAAQ,GAAKA,GAAQvhB,KAAK2I,aAC1B3I,KAAKuI,YAAcgZ,EAE3B,EACAjZ,eACQtI,KAAKuI,YAAc,GACnBvI,KAAKuI,aAEb,EACAM,WACQ7I,KAAKuI,YAAcvI,KAAK2I,YACxB3I,KAAKuI,aAEb,EAEA4T,kBACI,MAAM8C,QAAiBmN,MAAM,qBAC7BpsB,KAAKgW,cAAgBiJ,EAASuM,MAClC,EACAljB,eACQtI,KAAKuI,YAAc,GACnBvI,KAAKuI,aAEb,EACAM,WACQ7I,KAAKuI,YAAcvI,KAAK2I,YACxB3I,KAAKuI,aAEb,EACA8jB,kBACIrsB,KAAK0iB,gBAAkB1iB,KAAK0iB,cAChC,EACA4J,kBACItsB,KAAK0iB,gBAAiB,CAC1B,EACA7D,cACIpH,OAAOoE,MAAMO,IAAIC,QAAQ,CACrBC,IAAK,kBACLL,QAAS,SAAUgD,GACf9D,QAAQC,IAAI6D,GACZ3D,SAAS4D,OAAS,QAEtB,EACAH,KAAM,SAAUC,GACZ7D,QAAQC,IAAI4D,EAChB,GAER,EASA5c,kBACwB,IAAhBpC,KAAKygB,SAELtF,QAAQC,IAAIpb,KAAKygB,QAASzgB,KAAK8f,cAC/B9f,KAAK8f,cAAe,EACpB9f,KAAKmE,QAAUnE,KAAKmE,OACpBgX,QAAQC,IAAIpb,KAAKmE,UAGjBnE,KAAK8f,cAAe,EACpB9f,KAAKmE,QAAS,EAEtB,GAEJyd,SAAU,CAEN2K,kBACI,EAEJC,sBACI,OAAOxsB,KAAK0Q,cAAc1Q,KAAKyQ,SAAW,EAC9C,EACAK,kBACI,OAAO9Q,KAAK+Q,UAAU/Q,KAAKyQ,OAC/B,EAEAjI,kBAQI,GANAxI,KAAKuI,YAAc,EAEnBvI,KAAKgW,QAAQK,SAAQgP,IACjBA,EAAOte,SAAU,CAAK,IAGI,QAA1B/G,KAAK6F,iBACL,OAAO7F,KAAKgW,QAAQC,QAAOoP,GAAUA,EAAO5M,YACzC,CACH,MAAMgU,EAAoBzsB,KAAK6F,iBAAiBgf,cAChD,OAAO7kB,KAAKgW,QAAQC,QAAOpP,GAAKA,EAAEO,KAAKyd,gBAAkB4H,GAAqB5lB,EAAE4R,WACpF,CACJ,EACArO,gBAOI,GANApK,KAAKmK,gBAAkB,EAEvBnK,KAAK6jB,MAAMxN,SAAQmS,IACfA,EAAKzhB,SAAU,CAAK,IAGU,QAA9B/G,KAAKgJ,qBAEL,OAAOhJ,KAAK6jB,MAAM5N,QAAOuS,GAAQA,EAAK/P,YACnC,CACH,MAAMgU,EAAoBzsB,KAAKgJ,qBAAqB6b,cACpD,OAAO7kB,KAAK6jB,MAAM5N,QAAOpP,GAAKA,EAAEO,KAAKyd,gBAAkB4H,GAAqB5lB,EAAE4R,WAClF,CACJ,EAEAtL,gBAOI,GANAnN,KAAKkN,iBAAmB,EAExBlN,KAAK0U,MAAM2B,SAAQoS,IACfA,EAAK1hB,SAAU,CAAK,IAGU,QAA9B/G,KAAK6L,qBACL,OAAO7L,KAAK0U,MACT,CACH,MAAM+X,EAAoBzsB,KAAK6L,qBAAqBgZ,cACpD,OAAO7kB,KAAK0U,MAAMuB,QAAOwS,GAAQA,EAAKrhB,KAAKyd,gBAAkB4H,GACjE,CACJ,EAEAvd,kBAOI,GANAlP,KAAKuI,YAAc,EAEnBvI,KAAK2U,QAAQ0B,SAAQoB,IACjBA,EAAO1Q,SAAU,CAAK,IAGU,QAAhC/G,KAAK0N,uBACL,OAAO1N,KAAK2U,QACT,CACH,MAAM8X,EAAoBzsB,KAAK0N,uBAAuBmX,cACtD,OAAO7kB,KAAK2U,QAAQsB,QAAOwB,GAAUA,EAAOrQ,KAAKyd,gBAAkB4H,GACvE,CACJ,EAEA9jB,aACI,MAAM+jB,EAAuB1sB,KAAKwI,gBAAgBtI,OAClD,OAA6B,IAAzBwsB,EACO,EAEApF,KAAKwE,KAAKY,EAAuB1sB,KAAKyI,aAErD,EAEA8B,iBACI,MAAMoiB,EAAqB3sB,KAAKoK,cAAclK,OAC9C,OAA2B,IAAvBysB,EACO,EAEArF,KAAKwE,KAAKa,EAAqB3sB,KAAKqK,YAEnD,EAEAgD,iBACI,MAAMuf,EAAqB5sB,KAAKmN,cAAcjN,OAC9C,OAA2B,IAAvB0sB,EACO,EAEAtF,KAAKwE,KAAKc,EAAqB5sB,KAAKyjB,aAEnD,EAEArU,mBACI,MAAMyd,EAAuB7sB,KAAKkP,gBAAgBhP,OAClD,OAA6B,IAAzB2sB,EACO,EAEAvF,KAAKwE,KAAKe,EAAuB7sB,KAAK0jB,eAErD,EAEA9c,mBACI,MAAMkmB,GAAc9sB,KAAKuI,YAAc,GAAKvI,KAAKyI,aAC3CskB,EAAWD,EAAa9sB,KAAKyI,aAEnC,OAAOzI,KAAKwI,gBAAgB0U,MAAM4P,EAAYC,GAAUC,KAAI,CAAC3H,EAAQve,KAC7DA,IAAU9G,KAAKoiB,qBACfiD,EAAOte,SAAU,GAEdse,IAEf,EAEA5b,iBACI,MAAMqjB,GAAc9sB,KAAKmK,gBAAkB,GAAKnK,KAAKqK,YAC/C0iB,EAAWD,EAAa9sB,KAAKqK,YAEnC,OAAOrK,KAAKoK,cAAc8S,MAAM4P,EAAYC,GAAUC,KAAI,CAACxE,EAAM1hB,KACzDA,IAAU9G,KAAKqiB,mBACfmG,EAAKzhB,SAAU,GAEZyhB,IAEf,EAEAra,mBACI,MAAM2e,GAAc9sB,KAAKiP,mBAAqB,GAAKjP,KAAK0jB,eAClDqJ,EAAWD,EAAa9sB,KAAK0jB,eAEnC,OAAO1jB,KAAKkP,gBAAgBgO,MAAM4P,EAAYC,GAAUC,KAAI,CAACvV,EAAQ3Q,KAC7DA,IAAU9G,KAAKsiB,qBACf7K,EAAO1Q,SAAU,GAEd0Q,IAEf,EAEAnL,iBACI,MAAMwgB,GAAc9sB,KAAKkN,iBAAmB,GAAKlN,KAAKyjB,aAChDsJ,EAAWD,EAAa9sB,KAAKyjB,aAEnC,OAAOzjB,KAAKmN,cAAc+P,MAAM4P,EAAYC,GAAUC,KAAI,CAACtY,EAAO5N,KAC1DA,IAAU9G,KAAKuiB,mBACf7N,EAAM3N,SAAU,GAEb2N,IAEf,IO3qDR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,2CCRI3Y,EAAAA,EAAAA,IAAW,M,CAOf,QACI4a,UACI3W,KAAKwV,WAAU,KACXiB,YAAW,KACPzW,KAAKwlB,QAAQC,KAAK,QAAQ,GAC5B,IAAI,GAEd,GCVJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,8mPCNS3pB,GAAG,e,UAGCiB,MAAM,c,IAEFA,MAAM,gB,UAEEA,MAAM,kB,IAIHf,EAAAA,EAAAA,GAA0C,SAAnCgB,KAAK,QAAQlB,GAAG,KAAKmB,KAAK,U,aAC1BE,IAAI,M,eAKVJ,MAAM,c,UAEyBA,MAAM,gB,qBAI1BA,MAAM,e,8CAKfA,MAAM,a,IAENA,MAAM,Q,IAEJA,MAAM,c,IACPf,EAAAA,EAAAA,GAAmD,OAA9CU,IAAAC,GAAuCC,IAAI,I,aAGhDZ,EAAAA,EAAAA,GAAiD,OAA5CU,IAAAU,GAAqCR,IAAI,I,aAcjDG,MAAM,W,yBAGHf,EAAAA,EAAAA,GAAkD,OAA7CU,IAAAa,GAAsCX,IAAI,I,aAA/Ce,I,cAQY3B,EAAAA,EAAAA,GAA0D,SAAnDgB,KAAK,QAAQC,KAAK,UAAUnB,GAAG,OAAOoB,MAAM,Q,aACnDlB,EAAAA,EAAAA,GAA4B,SAArBmB,IAAI,QAAO,MAAE,G,mBAMxBnB,EAAAA,EAAAA,GAAgE,SAAzDgB,KAAK,QAAQC,KAAK,UAAUnB,GAAG,WAAWoB,MAAM,U,aACvDlB,EAAAA,EAAAA,GAAkC,SAA3BmB,IAAI,UAAS,UAAM,G,IAD1BoE,GACA0rB,I,mBAGAjxB,EAAAA,EAAAA,GAA8D,SAAvDgB,KAAK,QAAQC,KAAK,UAAUnB,GAAG,WAAWoB,MAAM,Q,aACvDlB,EAAAA,EAAAA,GAA4B,SAArBmB,IAAI,QAAO,MAAE,G,IADpB+vB,GACA/uB,I,mBAGAnC,EAAAA,EAAAA,GAA+D,SAAxDgB,KAAK,QAAQC,KAAK,UAAUnB,GAAG,UAAUoB,MAAM,U,aACtDlB,EAAAA,EAAAA,GAA8B,SAAvBmB,IAAI,UAAS,MAAE,G,IADtBkB,GACA8uB,I,IAOXpwB,MAAM,S,IACPf,EAAAA,EAAAA,GAYM,OAZDe,MAAM,iBAAe,EACtBf,EAAAA,EAAAA,GAIM,OAJDe,MAAM,mBAAiB,EACxBf,EAAAA,EAAAA,GAAyD,OAApDU,IAAAgB,GAA6Cd,IAAI,MACtDZ,EAAAA,EAAAA,GAC6B,mBAD1B,iBAAYA,EAAAA,EAAAA,GAAI,8CAIvBA,EAAAA,EAAAA,GAGM,OAHDe,MAAM,sBAAiB,G,IAPhCqwB,I,eA2BJpxB,EAAAA,EAAAA,GAA+D,OAA1DU,IAAAkB,EAAuChB,IAAI,GAAGG,MAAM,O,mBAKlCA,MAAM,a,IACjCf,EAAAA,EAAAA,GAAoD,OAA/CU,IAAAqB,GAAwCnB,IAAI,I,mBAQxDd,GAAG,e,IACCiB,MAAM,kB,IACFA,MAAM,kB,IACFA,MAAM,oB,IACPf,EAAAA,EAAAA,GAAe,UAAX,UAAM,G,IACLe,MAAM,kB,IACPf,EAAAA,EAAAA,GAKK,YAJDA,EAAAA,EAAAA,GAAY,UAAR,QACJA,EAAAA,EAAAA,GAAW,UAAP,OACJA,EAAAA,EAAAA,GAAa,UAAT,SACJA,EAAAA,EAAAA,GAAe,UAAX,YAAM,G,UAoBjBe,MAAM,sB,IACFA,MAAM,kB,IACPf,EAAAA,EAAAA,GAAgB,UAAZ,WAAO,G,IACNe,MAAM,iB,IACPf,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAAgB,UAAZ,YACJA,EAAAA,EAAAA,GAAe,UAAX,WACJA,EAAAA,EAAAA,GAAkB,UAAd,eAAS,G,IAYhBe,MAAM,e,gJA/KnChB,EAAAA,EAAAA,IAyLM,MAzLNE,GAyLM,EAxLFC,EAAAA,EAAAA,IAAUsD,GAEoC,WAAhBL,EAAAoJ,cAAW,WAAzCxM,EAAAA,EAAAA,IAyHM,MAzHNsD,GAyHM,EAvHFrD,EAAAA,EAAAA,GAqHM,MArHNc,GAqHM,gBApHFf,EAAAA,EAAAA,IAqGM0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IArGuBvD,EAAAwD,UAAQ,CAAxBoe,EAAMja,M,WAAnB/K,EAAAA,EAAAA,IAqGM,OArGkC+G,IAAKgE,GAAK,CACXia,EAAKsM,SA6EU,iBA7EH,WAA/CtxB,EAAAA,EAAAA,IA6FM,MA7FNuD,GA6FM,EA5FFpD,EAAAA,EAAAA,IAOcC,EAAA,CAPAgE,QAAKW,GAAER,EAAAwgB,gBAAgBC,GAChC3kB,GAAE,CAAAa,KAAA,aAAA+nB,OAAA,CAAAjC,SAA4CziB,EAAAgtB,kBAAkBvM,GAAM1d,WAAa,OAAS0d,GAAM1d,YACnGtG,MAAM,e,mBACN,IAA0C,CAA1CwC,IACAvD,EAAAA,EAAAA,GAEQ,QAFRyD,GAEQ,EADJzD,EAAAA,EAAAA,GAA4D,OAAtDU,IAAKqkB,EAAK7d,UAAWtG,IAAI,GAAGkC,MAAA,wB,6CAI1C9C,EAAAA,EAAAA,GA4BM,MA5BN2D,GA4BM,CA1BUohB,EAAKwM,gBAC+B,WAGhDxxB,EAAAA,EAAAA,IAGM,MAHN8D,GAGM,WAFF7D,EAAAA,EAAAA,GAA4C,SAArCgB,KAAK,O,yBAAgB+jB,EAAK1d,UAASvC,G,kBAAdigB,EAAK1d,cACjCrH,EAAAA,EAAAA,GAA4D,UAAnDmE,QAAKW,GAAER,EAAAktB,SAASzM,GAAOhkB,MAAM,YAAW,KAAE,EAAAqc,SANzB,WAA9Brd,EAAAA,EAAAA,IAEM,MAFN6D,GAEM,CADSmhB,EAAK0M,WAA4B,iBAAnB,WAAzB1xB,EAAAA,EAAAA,IAAoD,KAAAsB,IAAA+F,EAAAA,EAAAA,IAAtB2d,EAAK1d,WAAS,QAQhDrH,EAAAA,EAAAA,GAAyC,IAAzCwE,IAAyC4C,EAAAA,EAAAA,IAAjB2d,GAAM2M,MAAI,IAElC1xB,EAAAA,EAAAA,GAA0C,IAA1CyE,IAA0C2C,EAAAA,EAAAA,IAAvB2d,EAAKzd,aAAW,IAEnCtH,EAAAA,EAAAA,GAYM,MAZNwB,GAYM,CAXFkD,IACA1E,EAAAA,EAAAA,GAAuB,UAAAoH,EAAAA,EAAAA,IAAjB2d,EAAK4M,MAAO,IAAC,GAEnBlwB,IACAzB,EAAAA,EAAAA,GAAwB,UAAAoH,EAAAA,EAAAA,IAAlB2d,EAAK6M,OAAQ,IAAC,QAa5B5xB,EAAAA,EAAAA,GA+BM,MA/BN6xB,GA+BM,EA9BF7xB,EAAAA,EAAAA,GAA+E,SAAxEgB,KAAK,SAASC,KAAK,YAAanB,GAAE,YAAcgL,IAAS5J,MAAM,U,YACtElB,EAAAA,EAAAA,GAEQ,SAFAmB,IAAG,YAAc2J,K,UAIzB9K,EAAAA,EAAAA,GAwBM,OAxBDe,MAAM,gBAAiBjB,GAAE,YAAcgL,K,EACxC9K,EAAAA,EAAAA,GAsBK,YArBDA,EAAAA,EAAAA,GAQK,MARAmE,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAwtB,aAAahtB,K,EACrB5E,EAAAA,EAAAA,IAIcC,EAAA,CAJAgE,QAAKW,GAAER,EAAAwgB,gBAAgBC,GAChC3kB,GAAE,CAAAa,KAAA,aAAA+nB,OAAA,CAAAjC,SAA4CziB,EAAAgtB,kBAAkBvM,GAAM1d,WAAa,OAAS0d,GAAM1d,a,mBACnG,IAA0D,CAA1DxF,GACAkwB,M,+BAKR/xB,EAAAA,EAAAA,GAGK,MAHAmE,QAAKW,GAAER,EAAA0tB,iBAAiBjN,I,UAI7B/kB,EAAAA,EAAAA,GAGK,MAHAmE,QAAKW,GAAER,EAAA2tB,UAAUlN,I,UAItB/kB,EAAAA,EAAAA,GAGK,MAHAmE,QAAKW,GAAER,EAAA4tB,gBAAgBnN,EAAKnd,M,8BAS7C5H,EAAAA,EAAAA,GAcM,MAdNuC,GAcMyD,GAAA,YAdqB+e,EAAKoN,0B,MA0B7BhvB,EAAAwD,SAASzC,OAAS,IAAH,WAA1BnE,EAAAA,EAAAA,IAKM,MAAAkG,GAAA,EAJF/F,EAAAA,EAAAA,IAGcC,EAAA,CAHDC,GAAG,QAAQW,MAAM,Y,mBAC1B,IAA+D,CAA/DmF,IAA+D,uB,yBAK5D/C,EAAAivB,qBAAkB,WAA7BryB,EAAAA,EAAAA,IAGM,MAHNoG,GAGM,CAFFzD,IAAoD,8BAExD,qCAKRxC,EAAAA,EAAAA,IAAYmyB,GACgC,WAAhBlvB,EAAAoJ,cAAW,WAAvCxM,EAAAA,EAAAA,IAyDM,MAzDNuyB,GAyDM,EAxDFtyB,EAAAA,EAAAA,GAuDM,MAvDNqG,GAuDM,EAtDFrG,EAAAA,EAAAA,GAoDM,MApDNsG,GAoDM,EAnDFtG,EAAAA,EAAAA,GAwBM,MAxBNuG,GAwBM,CAvBFC,IACAxG,EAAAA,EAAAA,GAkBM,MAlBN+G,GAkBM,CAjBFwrB,IAOAvyB,EAAAA,EAAAA,GASK,YARDA,EAAAA,EAAAA,GAA0D,qBAAtDA,EAAAA,EAAAA,GAAiD,SAA1CgB,KAAK,QAAQwxB,SAAA,G,qCAAkBrvB,EAAAqhB,UAAS1f,I,iBAAT3B,EAAAqhB,gBAC1CxkB,EAAAA,EAAAA,GAAwD,qBAApDA,EAAAA,EAAAA,GAA+C,SAAxCgB,KAAK,OAAOwxB,SAAA,G,qCAAkBrvB,EAAAugB,SAAQ5e,I,iBAAR3B,EAAAugB,eACzC1jB,EAAAA,EAAAA,GAIK,qBAHDA,EAAAA,EAAAA,GAAgD,SAAzCgB,KAAK,MAAMwxB,SAAA,G,qCAAkBrvB,EAAAsvB,WAAU3tB,I,iBAAV3B,EAAAsvB,eAAU,SAC9CzyB,EAAAA,EAAAA,GAAgD,SAAzCgB,KAAK,MAAMwxB,SAAA,G,qCAAkBrvB,EAAAuvB,WAAU5tB,I,iBAAV3B,EAAAuvB,eAAU,SAC9C1yB,EAAAA,EAAAA,GAAgD,SAAzCgB,KAAK,MAAMwxB,SAAA,G,qCAAkBrvB,EAAAwvB,WAAU7tB,I,iBAAV3B,EAAAwvB,iBAExC3yB,EAAAA,EAAAA,GAAwD,qBAApDA,EAAAA,EAAAA,GAA+C,SAAxCgB,KAAK,O,qCAAgBmC,EAAAyvB,SAAQ9tB,GAAE0tB,SAAA,I,iBAAVrvB,EAAAyvB,oBASM,GAAZzvB,EAAA0hB,WAAQ,WAA9C9kB,EAAAA,EAAAA,IAuBM,MAvBN8yB,GAuBM,EAtBF7yB,EAAAA,EAAAA,GAqBM,MArBNgH,GAqBM,CApBFC,IACAjH,EAAAA,EAAAA,GAeM,MAfN8yB,GAeM,CAdF3rB,IAMAnH,EAAAA,EAAAA,GAOK,YANDA,EAAAA,EAAAA,GACoC,qBADhCA,EAAAA,EAAAA,GAC2B,SADpBgB,KAAK,WAAW4b,YAAY,8B,qCACtBzZ,EAAA4vB,aAAYjuB,I,iBAAZ3B,EAAA4vB,mBACjB/yB,EAAAA,EAAAA,GACoC,qBADhCA,EAAAA,EAAAA,GAC2B,SADpBgB,KAAK,WAAW4b,YAAY,8B,qCACtBzZ,EAAA6vB,aAAYluB,I,iBAAZ3B,EAAA6vB,mBACjBhzB,EAAAA,EAAAA,GAC2C,qBADvCA,EAAAA,EAAAA,GACkC,SAD3BgB,KAAK,WAAW4b,YAAY,8B,qCACtBzZ,EAAA8vB,oBAAmBnuB,I,iBAAnB3B,EAAA8vB,8BAGzBjzB,EAAAA,EAAAA,GAEM,MAFNuH,GAEM,EADFvH,EAAAA,EAAAA,GAA2C,UAAlCmE,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA4uB,gBAAA5uB,EAAA4uB,kBAAA7uB,KAAgB,cAAE,sCAQflB,EAAAgwB,iBAAc,WAAzDnP,EAAAA,EAAAA,IAA4DoP,EAAA,C,MAA/ClP,aAAY5f,EAAA+uB,Y,mHCxLxBvzB,GAAG,uB,IACCiB,MAAM,oB,IAEFA,MAAM,uB,YACPf,EAAAA,EAAAA,GAAkB,SAAf,eAAW,K,IACTe,MAAM,oB,gCALaoC,EAAAsZ,YAAS,WAA7C1c,EAAAA,EAAAA,IAWM,MAXNE,GAWM,EAVFD,EAAAA,EAAAA,GASM,MATNqD,GASM,EARFrD,EAAAA,EAAAA,GAA6D,UAArDe,MAAM,eAAgBoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAoY,cAAApY,EAAAoY,gBAAArY,KAAc,MACnDrE,EAAAA,EAAAA,GAMM,MANNc,GAMM,CALFwC,IACAtD,EAAAA,EAAAA,GAGM,MAHNuD,GAGM,WAFFvD,EAAAA,EAAAA,GAAmG,SAA5FgB,KAAK,WAAWC,KAAK,WAAWF,MAAM,aAAa6b,YAAY,U,qCAAmBzZ,EAAA2Z,SAAQhY,I,iBAAR3B,EAAA2Z,aACzF9c,EAAAA,EAAAA,GAAgD,UAAxCkB,MAAM,KAAMiD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA2Y,UAAA3Y,EAAA2Y,YAAA5Y,KAAU,gBAAE,c,CAgB3D,QACIyT,OACI,MAAO,CACH2E,WAAW,EACXK,SAAU,GACV8D,MAAO,GAEf,EACAjG,UACI3W,KAAK4c,MAAQoB,GAAAA,EAAQmB,IAAI,QAC7B,EACAtI,QAAS,CACL6B,eACI1Y,KAAKyY,WAAY,EACjBzY,KAAK8e,MAAM,cAAc,EAC7B,EACA3C,iBACI,IAAIrI,EAAO,CACPwb,QAAS,cACTxW,SAAU9Y,KAAK8Y,SACfwB,OAAQ+E,KAAAA,OAAgBrf,KAAK8Y,UAAUwG,WACvC1C,MAAO5c,KAAK4c,MACZ2S,QAAS,GACTC,UAAW,GACXC,QAAS,GACTzJ,IAAK,IAGT,MAAMxJ,QAAY6B,GAAAA,EAAMC,KAAK,wBAAyBC,KAAKC,UAAU1K,GAAO,CACxE2K,QAAS,CACL,eAAgB,sBAGQ,GAA5BjC,EAAI1I,KAAK6K,MAAM,UACfC,MAAM,iBAGNA,MAAM,qBACN5e,KAAKyY,WAAY,EACjBuF,GAAAA,EAAQC,IAAI,eAAgBje,KAAK4c,OACjCnF,OAAOR,SAASiC,KAAOlZ,KAAKmZ,WAAa,SAEjD,IC3DR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,iECRSrd,GAAG,iB,IACCiB,MAAM,kB,mBAGAI,IAAI,M,mBAQJA,IAAI,M,YAMXnB,EAAAA,EAAAA,GAA6C,SAAtCgB,KAAK,QAAQC,KAAK,YAAYnB,GAAG,M,eACjCqB,IAAI,M,qCAGJA,IAAI,M,oGAtBnBpB,EAAAA,EAAAA,IA2BM,MA3BNE,GA2BM,EA1BFD,EAAAA,EAAAA,GAwBM,MAxBNqD,GAwBM,EAvBFrD,EAAAA,EAAAA,GACwC,SADjCgB,KAAK,QAAQC,KAAK,YAAYnB,GAAG,KAAMqE,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAqf,eAAe,YAC/D5e,QAAST,EAAAsf,cAAc,Y,YAC5B5jB,EAAAA,EAAAA,GAIQ,QAJRsD,GAIQ,EAHJpD,EAAAA,EAAAA,IAEcC,EAAA,CAFDC,GAAG,WAAS,C,kBAAC,IAE1B,UAF0B,c,SAK9BJ,EAAAA,EAAAA,GACwC,SADjCgB,KAAK,QAAQC,KAAK,YAAYnB,GAAG,KAAMqE,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAAqf,eAAe,YAC/D5e,QAAST,EAAAsf,cAAc,Y,YAC5B5jB,EAAAA,EAAAA,GAIQ,QAJRyD,GAIQ,EAHJvD,EAAAA,EAAAA,IAEcC,EAAA,CAFDC,GAAG,WAAS,C,kBAAC,IAE1B,UAF0B,iB,QAK9BsD,IACA1D,EAAAA,EAAAA,GAAmF,QAAnF2D,GAAmF,EAAnE3D,EAAAA,EAAAA,GAA2D,KAAvDkd,KAAI,QAAUwW,4BAA4B,YAAS,EAAA9vB,MAE0CT,EAAAwwB,cAAW,WAA5H5zB,EAAAA,EAAAA,IAA8H,S,MAAvHiB,KAAK,QAAQC,KAAK,YAAYnB,GAAG,KAAMqE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAsvB,kBAAAtvB,EAAAsvB,oBAAAvvB,IAAmBU,QAAST,EAAAsf,cAAc,Y,4BACzEzgB,EAAAwwB,cAAW,WAAjC5zB,EAAAA,EAAAA,IAEQ,QAFR8D,GAAmC,aAEnC,iBAE6CV,EAAAgwB,iBAAc,WAA/DnP,EAAAA,EAAAA,IAAmEoP,EAAA,C,MAAtDlP,aAAY5f,EAAAuvB,kB,4CAajC,QACIhc,MAAO,CACH8b,YAAaG,QACbC,gBAAiBD,SAErBxP,WAAY,CACR0P,WAAUA,IAEdlc,OACI,MAAO,CACHqb,gBAAgB,EAChBzP,SAAU,GACVe,QAAS,GACTwP,aAAc,GACdN,aAAa,EACbO,uBAAwB,KAEhC,EACAtO,SAAU,CACNC,eACI,OAAO7hB,KAAKwhB,OAAOpH,IACvB,GAEJxF,MAAO,CACH,cAAe,SAASub,EAAQC,GACvBpwB,KAAKmvB,gBACNnvB,KAAKyhB,oBAEb,EACA0N,eAAegB,GACPA,IACAnwB,KAAKkwB,uBAAyBlwB,KAAKwhB,OAAOpH,KAC1Ce,QAAQC,IAAK,+BAA8Bpb,KAAKkwB,0BAExD,GAEJ/T,sBACUnc,KAAKmgB,UACf,EACAtJ,QAAS,CACLgZ,iBAAiB5T,GACbjc,KAAKmvB,gBAAiB,EAClBlT,EACIjc,KAAKkwB,yBACL/U,QAAQC,IAAK,uBAAsBpb,KAAKkwB,0BACxClwB,KAAKwlB,QAAQC,KAAKzlB,KAAKkwB,wBAAwBxR,MAAK,KAChD1e,KAAKkwB,uBAAyB,KAC9BlwB,KAAKyhB,oBAAoB,KAIjCzhB,KAAKyhB,oBAEb,EACA9B,eAAe4B,GACXvhB,KAAK8e,MAAM,WAAYyC,GACvBvhB,KAAKwlB,QAAQC,KAAKlE,GAAM7C,MAAK,KACzB1e,KAAKyhB,oBAAoB,GAEjC,EACA7B,cAAc2B,GACV,OAAOvhB,KAAKwhB,OAAOpH,OAASmH,CAChC,EACAqO,mBACI5vB,KAAKyY,WAAY,EACjBzY,KAAKyhB,qBAEDzhB,KAAK+vB,gBACL/vB,KAAKwlB,QAAQC,KAAK,WAAW/G,MAAK,KAC9B1e,KAAKyhB,oBAAoB,KAG7BzhB,KAAKkwB,uBAAyBlwB,KAAKwhB,OAAOpH,KAC1Ce,QAAQC,IAAK,yCAAwCpb,KAAKkwB,0BAC1DlwB,KAAKmvB,gBAAiB,EAE9B,EACA1N,qBACItG,QAAQC,IAAK,oCAAmCpb,KAAKwhB,OAAOpH,QAC5D,MAAMiW,EAAc/U,SAASG,eAAe,MACtC6U,EAAchV,SAASG,eAAe,MACtC8U,EAAcjV,SAASG,eAAe,MAM5C,GAJI4U,IAAaA,EAAYtvB,SAAU,GACnCuvB,IAAaA,EAAYvvB,SAAU,GACnCwvB,IAAaA,EAAYxvB,SAAU,GAEnCf,KAAK4f,cAAc,WAAY,CAC/B,MAAMyQ,EAAc/U,SAASG,eAAe,MACxC4U,IAAaA,EAAYtvB,SAAU,EAC3C,MAAO,GAAIf,KAAK4f,cAAc,WAAY,CACtC,MAAM0Q,EAAchV,SAASG,eAAe,MACxC6U,IAAaA,EAAYvvB,SAAU,EAC3C,MAAO,GAAIf,KAAK4f,cAAc,WAAY,CACtC,MAAM2Q,EAAcjV,SAASG,eAAe,MACxC8U,IAAaA,EAAYxvB,SAAU,EAC3C,CACJ,EACAob,iBACI,MAAM+C,EAASlB,GAAAA,EAAQmB,IAAI,SAC3B,IAAIrL,EAAO,CACP8I,WAAkB8D,IAAXxB,EAAuB,GAAKA,GAEvC,MAAM1C,QAAY6B,GAAAA,EAAMC,KAAK,sBAAuBC,KAAKC,UAAU1K,GAAO,CACtE2K,QAAS,CAAE,eAAgB,sBAEZ,KAAf3K,EAAK8I,MAEL5c,KAAK2vB,aAAc,EACc,IAA1BnT,EAAI1I,KAAK6K,MAAMze,QACtB0e,MAAM,4BACNZ,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YACtDpa,KAAKwlB,QAAQC,KAAK,kBACI,MAAfjJ,EAAIoE,QACX5gB,KAAKygB,QAAUjE,EAAI1I,KAAK6K,MAAM,GAAGqH,IACjChmB,KAAK2vB,YAAcnT,EAAI1I,KAAK6K,MAAM,GAAG6R,SAErCxwB,KAAK2vB,aAAc,CAG3B,IC1JR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UJgMA,IACI9b,MAAO,CACHkN,KAAM0P,QAEVnQ,WAAY,CACR0P,WAAU,GACVU,SAAQ,GACR3L,OAAMA,IAEVjR,OACI,MAAO,CACHqb,gBAAgB,EAChBwB,MAAO,GACPC,WAAY,KACZC,QAAS,CAAC,EACVtD,eAAe,EACfuD,QAAS,GACT3C,gBAAgB,EAChBC,oBAAoB,EAEpBxR,MAAO,CAAC,EACRja,SAAU,GACV4F,YAAa,SACbiY,UAAW,GACXd,SAAU,GACVqR,UAAW,GACXnC,SAAU,GACVH,WAAY,GACZC,WAAY,GACZC,WAAY,GACZ9N,SAAU,GACVkO,aAAc,GACdC,aAAc,GACdC,oBAAqB,GACrBxO,QAAS,GACTuQ,UAAW,GAEnB,EACA7U,sBACUnc,KAAKmgB,iBAELngB,KAAKixB,aACf,EACAta,UACI2E,SAAS5D,iBAAiB,QAAS1X,KAAKkxB,oBACxClQ,aAAaC,QAAQ,OAAQ,IAC7BD,aAAaC,QAAQ,UAAW,GACpC,EACApK,QAAS,CACLsa,cAAcC,GACd,MAAMtuB,EAAMuc,KAAAA,IAAagS,KAAKC,MAAM,oBAG9BC,EAAKlS,KAAAA,IAAagS,KAAKC,MAAM,oBAG7BE,EAAYnS,KAAAA,IAAaoS,QAAQL,EAAMtuB,EAAK,CAC9CyuB,GAAIA,EACJG,KAAMrS,KAAAA,KAAcsS,IACpBC,QAASvS,KAAAA,IAAawS,QAG1B,OAAOL,CACX,EAEIxB,aACIhwB,KAAKmvB,gBAAiB,CAC1B,EACAE,aACIrvB,KAAKmvB,gBAAiB,CAC1B,EACAhT,iBACI,MAAM+C,EAASlB,GAAAA,EAAQmB,IAAI,SAC3B,IAAIrL,EAAO,CACP8I,WAAiB8D,GAAVxB,EAAsB,GAAKA,GAEtC,MAAM1C,QAAY6B,GAAAA,EAAMC,KAAK,sBAAuBC,KAAKC,UAAU1K,GAAO,CACtE2K,QAAS,CAAE,eAAgB,sBAEb,IAAd3K,EAAK8I,QAG4B,GAA5BJ,EAAI1I,KAAK6K,MAAM,WACpBC,MAAM,4BACNZ,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YACtDpa,KAAKwlB,QAAQC,KAAK,kBAEC,KAAdjJ,EAAIoE,SACT5gB,KAAKygB,QAAUjE,EAAI1I,KAAK6K,MAAM,GAAG,aAC3B3e,KAAKgkB,oBACLhkB,KAAKixB,eAEnB,EAEA9U,oBACI,MAAMK,QAAY6B,GAAAA,EAAMC,KAAK,oBACxB,+BAA8Bte,KAAKygB,aAAa,CAC7ChC,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAG3B,KAAdjC,EAAIoE,SACJ5gB,KAAK2C,SAAW,IAAI6Z,EAAI1I,KAAK6K,OAC7B3e,KAAKgxB,UAAYxU,EAAI1I,KAAK6K,MAAM,UAChCxD,QAAQC,IAAIpb,KAAKgxB,WAEzB,EACA7U,oBACI,MAAMK,QAAY6B,GAAAA,EAAMC,KAAK,qBACxB,iBAAgBte,KAAKygB,aAAa,CAC/BhC,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAG7Cze,KAAK0f,SAAWlD,EAAI1I,KAAK6K,MAAM,GAAG,QAClC3e,KAAKwgB,UAAYhE,EAAI1I,KAAK6K,MAAM,GAAG,cACnC3e,KAAK+wB,UAAYvU,EAAI1I,KAAK6K,MAAM,GAAG,SACnC3e,KAAKyuB,WAAazuB,KAAK+wB,UAAU7T,MAAM,EAAG,GAC1Cld,KAAK0uB,WAAa1uB,KAAK+wB,UAAU7T,MAAM,EAAG,GAC1Cld,KAAK2uB,WAAa3uB,KAAK+wB,UAAU7T,MAAM,GACvCld,KAAK4uB,SAAWpS,EAAI1I,KAAK6K,MAAM,GAAG,WAAWtB,MAAM,KAAK,GACxDrd,KAAK6gB,SAAWrE,EAAI1I,KAAK6K,MAAM,GAAG,OAEtC,EACAmC,gBAAgBC,GACZC,aAAaC,QAAQ,OAAQF,EAAKG,WAClCF,aAAaC,QAAQ,UAAWF,EAAKnd,IACzC,EAEAuY,sBAAsB6J,GAElB,MAAMxJ,QAAY6B,GAAAA,EAAMC,KAAK,sBACxB,sDAEI0H,oBACN,CACKvH,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAG3B,KAAdjC,EAAIoE,cACE5gB,KAAKgkB,aAEnB,EACA8N,aAAahrB,GACT9G,KAAK2wB,MAAM7pB,GAAOqnB,gBAAiB,CACvC,EAEAhS,gBAAgB4E,GAEZ,IAAIgR,EAAc/xB,KAAKmxB,cAAcpQ,EAAKG,WACtC8Q,EAAchyB,KAAKmxB,cAAcpQ,EAAK1d,UAAU,QAChD4uB,EAAcjyB,KAAKmxB,cAAcpQ,EAAK7d,WAE1C,MAAMgvB,EAAY,mEAEAlyB,KAAKygB,sEAEJsR,qCACAC,gCACLjR,EAAK2M,8GAGAuE,gCACLlR,EAAK4M,mCACJ5M,EAAK6M,uBAGpB,IAAIuE,EAAaD,EAASE,WAAW,KAAK,eAAeA,WAAW,KAAK,eAAeA,WAAW,MAAM,eAAeA,WAAW,MAAM,eAAeA,WAAW,IAAI,gBACvK,GAAIpyB,KAAKgxB,UAAY,EAAG,CACpB,MAAMxU,QAAY6B,GAAAA,EAAMC,KAAK,oBAAqB6T,EAAW,CACzD1T,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAIvB,KAAdjC,EAAIoE,cACE5gB,KAAKgkB,aAEnB,MAEIpF,MAAM,sBAEd,EAEAoP,iBAAiBjN,GACbA,EAAKwM,eAAiBxM,EAAKwM,aAC/B,EAGApR,eAAe4E,GAEXA,EAAKwM,eAAgB,EAErBpS,QAAQC,IAAI2F,GAEZ,IAAIgR,EAAc/xB,KAAKmxB,cAAcpQ,EAAKG,WACtC8Q,EAAchyB,KAAKmxB,cAAcpQ,EAAK1d,WACtC4uB,EAAcjyB,KAAKmxB,cAAcpQ,EAAK7d,WAE1C,MAAMgvB,EAAY,mEAEAlyB,KAAKygB,qCACVM,EAAKnd,uCACCmuB,qCACAC,gCACLjR,EAAK2M,8GAGAuE,gCACLlR,EAAK4M,mCACJ5M,EAAK6M,uBAEpB,IAAIuE,EAAaD,EAASE,WAAW,KAAK,eAAeA,WAAW,KAAK,eAAeA,WAAW,MAAM,eAAeA,WAAW,MAAM,eAAeA,WAAW,IAAI,gBACvK,MAAM5V,QAAY6B,GAAAA,EAAMC,KAAK,oBAAoB6T,EAAW,CACpD1T,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAG3B,KAAdjC,EAAIoE,cACE5gB,KAAKgkB,aAEnB,EAEA8J,aAAauE,EAAQtR,GAEF,SAAXsR,GACAryB,KAAKguB,iBAAiBjN,EAE9B,EAIAuR,8BACI,MAAMC,EAAW,EACXC,EAAgBxyB,KAAK2wB,MAAM1a,QAAOC,IAAMA,EAAEmX,UAAYnX,EAAEuc,mBAAkBvyB,OAC1EwyB,EAA2B1yB,KAAK2wB,MAAM1a,QAAOC,GAAKA,EAAEmX,SAAWnX,EAAEuc,mBAAkBvyB,OAEzF,GAAIsyB,GAAiBD,GAAYG,GAA4B,EAAG,CAC5D,MAAMC,EAAgB3yB,KAAK2wB,MAAMiC,WAAU1c,GAAKA,EAAEmX,SAAWnX,EAAEuc,mBAC/DzyB,KAAK2wB,MAAMkC,OAAOF,EAAe,EACrC,CACJ,EACA9S,SACIjB,MAAM,YACc,GAAjB5e,KAAK6gB,WACJ1F,QAAQC,IAAI,WACZpb,KAAK6e,eAETb,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YAKtDpa,KAAKwlB,QAAQC,KAAK,gBACtB,EACA9F,eAAe4B,GACXvhB,KAAKuI,YAAcgZ,CACvB,EACAuR,aACI,IAAI71B,EAAO+C,KAAK0f,SACZvC,EAAcnd,KAAKyuB,WAAazuB,KAAK0uB,WAAa1uB,KAAK2uB,WAC3DtQ,GAAAA,EAAMC,KAAK,sBACN,iBAAgBte,KAAKygB,sBAAsBxjB,sBAAyBkgB,QAAkBuB,MAAKlC,IACjD,KAAnCA,EAAI1I,KAAKif,QAAQ,GAAG,aACpBnU,MAAM,gBACV,GAEZ,EACAsQ,iBACI,IAAI8D,EAAW3T,KAAAA,OAAgBrf,KAAK+uB,cAAczP,WAC9C2T,EAAW5T,KAAAA,OAAgBrf,KAAKgvB,cAAc1P,WAC9Ctf,KAAKgvB,cAAgBhvB,KAAKivB,oBAC1BrQ,MAAM,uBAGNP,GAAAA,EAAMC,KAAK,0BACN,iBAAgBte,KAAKygB,4BAA4BuS,qBAA4BC,OAAc,CAC5FxU,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAEtCC,MAAKlC,IACuC,KAAnCA,EAAI1I,KAAKif,QAAQ,GAAG,YACpBnU,MAAM,mBACoC,KAAnCpC,EAAI1I,KAAKif,QAAQ,GAAG,aAC3BnU,MAAM,gBACV,GAGhB,EACA0O,kBAAkBpwB,GACd,MAAgB,IAATA,QAAwBwjB,GAATxjB,GAA+B,MAATA,CAChD,EACA2hB,cACIpH,OAAOoE,MAAMO,IAAIC,QAAQ,CACrBC,IAAK,kBACLL,QAAS,SAAUgD,GACf9D,QAAQC,IAAI6D,GACZ3D,SAAS4D,OAAS,QAEtB,EACAH,KAAM,SAAUC,GACZ7D,QAAQC,IAAI4D,EAChB,GAER,GAEJkU,gBACI5X,SAAS6X,oBAAoB,QAASnzB,KAAKkxB,mBAC/C,EACAtP,SAAU,CACNwR,qBACI,MAAMb,EAAW,EACjB,OAAOA,EAAWvyB,KAAK2wB,MAAM1a,QAAOC,IAAMA,EAAEmX,UAAYnX,EAAEuc,mBAAkBvyB,MAChF,IKhhBR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,iyBCRSpE,GAAG,iB,IACCiB,MAAM,c,IAEFA,MAAM,iB,IACFA,MAAM,uB,YAEHf,EAAAA,EAAAA,GAA4D,OAAvDU,IAAAC,GAAyCC,IAAI,W,eAAlD2C,I,YAEJvD,EAAAA,EAAAA,GAAY,UAAR,OAAG,K,YAEXA,EAAAA,EAAAA,GAGS,gBAFLA,EAAAA,EAAAA,GACwC,mBADrC,yBAAoBA,EAAAA,EAAAA,GAAI,wDACS,K,IAGnCe,MAAM,c,IAKII,IAAI,YAAYJ,MAAM,gB,YAGzBf,EAAAA,EAAAA,GAAoB,WAAf,aAAS,K,kUAajBe,MAAM,W,YACPf,EAAAA,EAAAA,GAAqB,UAAjB,gBAAY,K,YAEZA,EAAAA,EAAAA,GAA6D,OAAxDU,IAAAU,GAAiDR,IAAI,I,uBAI9DZ,EAAAA,EAAAA,GAAsD,OAAjDF,GAAG,iBAAiBgD,MAAA,kB,uBACzB9C,EAAAA,EAAAA,GAGO,QAHDF,GAAG,cAAY,EACjBE,EAAAA,EAAAA,GAAsD,OAAjDU,IAAAa,GAA0CX,IAAI,M,QAAG,kBAE1D,K,+FA/CpBb,EAAAA,EAAAA,IAwDM,MAxDNE,GAwDM,EAvDFD,EAAAA,EAAAA,GAmDM,MAnDNqD,GAmDM,EAjDFrD,EAAAA,EAAAA,GAgDM,MAhDNc,GAgDM,EA/CFd,EAAAA,EAAAA,GAKM,MALNsD,GAKM,EAJFtD,EAAAA,EAAAA,GAEI,KAFAmE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA+yB,gBAAA/yB,EAAA+yB,kBAAAhzB,K,IAGXX,KAEJC,IAKA3D,EAAAA,EAAAA,GAmCM,MAnCN4D,GAmCM,EAlCF5D,EAAAA,EAAAA,GAUO,QAVI2c,SAAMvY,EAAA,KAAAA,EAAA,IAAA4G,EAAAA,EAAAA,KAAX,QAAmB,e,WACrBhL,EAAAA,EAAAA,GAAyF,SAAlFgB,KAAK,OAAOC,KAAK,SAASF,MAAM,aAAa6b,YAAY,S,qCAAkBzZ,EAAA0Z,MAAK/X,I,iBAAL3B,EAAA0Z,UAAK,SACvF7c,EAAAA,EAAAA,GACuB,SADhBgB,KAAK,WAAWC,KAAK,WAAWF,MAAM,aAAa6b,YAAY,U,qCACzDzZ,EAAA2Z,SAAQhY,I,iBAAR3B,EAAA2Z,aACb9c,EAAAA,EAAAA,GAIQ,QAJRqB,GAIQ,EAHJrB,EAAAA,EAAAA,GACwB,SADjBgB,KAAK,WAAWlB,GAAG,YAAYmB,KAAK,YAAYF,MAAM,iBACxDgc,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA0Y,WAAA1Y,EAAA0Y,aAAA3Y,K,SACbR,MAEJ7D,EAAAA,EAAAA,GAAqE,UAA7DkB,MAAM,MAAOiD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA2Y,UAAA3Y,EAAA2Y,YAAA5Y,IAAUtD,MAAM,cAAa,QAAG,IAGhEO,IAQAtB,EAAAA,EAAAA,GAaM,MAbNod,GAaM,CAZF5Y,IACAxE,EAAAA,EAAAA,GAGO,QAHDe,MAAM,WAAYoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA+Y,WAAA/Y,EAAA+Y,aAAAhZ,K,CAC3BI,IAA6D,0BAIjEjD,GACAkD,YAUhBxE,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,I,WCvDTx2B,MAAM,c,qtCACPsC,I,mCADJtD,EAAAA,EAAAA,IAyCM,MAzCNE,GAyCMa,G,CCzCV,MAAM,GAAS,CAAC,EAKV,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,63KCNahB,GAAG,iB,IACCiB,MAAM,mB,IACFA,MAAM,e,YACPf,EAAAA,EAAAA,GAAgD,OAA3CU,IAAAC,GAAoCC,IAAI,I,uBAGzCZ,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAsF,KAAnFkd,KAAK,8CAA8Cpa,MAAA,gBAAmB,eAAS,K,YAEtF9C,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAwD,KAArDkd,KAAK,yCAAwC,UAAI,K,IAIhDnc,MAAM,mB,YACNf,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAA0B,KAAvBkd,KAAK,IAAG,iBAAW,K,YAoB9Bld,EAAAA,EAAAA,GAA2B,KAAxBkd,KAAK,KAAI,eAAW,K,YAK/Bld,EAAAA,EAAAA,GAKM,OALDe,MAAM,gBAAc,EACrBf,EAAAA,EAAAA,GAAgB,SAAb,cACHA,EAAAA,EAAAA,GAAkB,SAAf,gBACHA,EAAAA,EAAAA,GAAe,SAAZ,aACHA,EAAAA,EAAAA,GAA8B,SAA3B,6BAAuB,K,YAOtCA,EAAAA,EAAAA,GAGM,OAHDe,MAAM,mBAAiB,EACxBf,EAAAA,EAAAA,GAAuE,KAApEkd,KAAK,8DACRld,EAAAA,EAAAA,GAAoD,SAAjD,mDAA6C,K,2CAvD5DD,EAAAA,EAAAA,IA4DS,gBA3DLC,EAAAA,EAAAA,GAyDM,MAzDNC,GAyDM,EAxDFD,EAAAA,EAAAA,GAuDM,MAvDNqD,GAuDM,EAtDFrD,EAAAA,EAAAA,GA6CM,MA7CNc,GA6CM,CA5CFwC,IAEAtD,EAAAA,EAAAA,GAkCK,WAjCDuD,GAGAE,IAIAzD,EAAAA,EAAAA,GAyBK,qBAxBDA,EAAAA,EAAAA,GAoBK,KApBL0D,GAoBK,CAnBDC,IAIA3D,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAmE,KAAhEkd,KAAK,wBAAyB/Y,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAEI,EAAAsyB,aAAe,OAAM,SAGjEx3B,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAwE,KAArEkd,KAAK,yBAA0B/Y,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAEI,EAAAsyB,aAAe,SAAQ,WAGpEx3B,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAsE,KAAnEkd,KAAK,qBAAsB/Y,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAEI,EAAAsyB,aAAe,UAAS,YAGjEx3B,EAAAA,EAAAA,GAEK,YADDA,EAAAA,EAAAA,GAAoF,KAAjFkd,KAAK,qCAAsC/Y,QAAKC,EAAA,KAAAA,EAAA,GAAAU,GAAEI,EAAAsyB,aAAe,SAAQ,WAAI,YAlBpDr0B,EAAAs0B,oBAsBpC7zB,IACA5D,EAAAA,EAAAA,GAAyF,OAApFU,IAAAU,GAAkDR,IAAI,GAAIuD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAozB,mBAAApzB,EAAAozB,qBAAArzB,UAI9EhD,KAWRwC,Q,CAgBR,QACIiU,OACI,MAAO,CACH2f,kBAAiB,EAEzB,EAEA5c,QAAS,CACL6c,oBACI1zB,KAAKyzB,kBAAoBzzB,KAAKyzB,gBAClC,ICzEZ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UJ8FA,MAAMna,GAAY,uBAElB,QACIxF,OACI,MAAO,CACHyF,MAAO,GACPV,MAAO,GACPC,SAAU,GACVU,MAAO,GACPC,aAAc,GACdka,WAAY,KACZha,cAAe,GACf1c,KAAM,GACN2c,MAAO,GACPC,MAAO,GACPC,OAAQ,GACRC,SAAU,GACVC,WAAY,GACZlX,IAAK,GACL+D,EAAG,GACHoT,WAAY,GACZ7S,KAAM,GACN8S,SAAU,GACVC,QAAS,GACTC,KAAM,GACNC,SAAU,GACVC,OAAQ,GACRC,YAAY,EACZE,MAAO,GACPmZ,YAAa,GAErB,EACAjd,UACI3W,KAAK2zB,WAAa,IAAIlc,OAAO+C,eACzBlB,GACAtZ,KAAKmZ,WAAa,YAEtB,IAAIsB,EAAQza,KAAK2zB,WAAWjZ,eAC5B1a,KAAK2zB,WAAWhZ,UAAU,QAAS,EAAG,IACtC3a,KAAK2zB,WAAW/Y,UAAU5a,KAAKmZ,YAC/BnZ,KAAK2zB,WAAW9Y,SAASJ,GACzBza,KAAK2zB,WAAW7Y,WAChB9a,KAAK2zB,WAAW5Y,sBAEhBM,EAAEC,UAAUC,GAAG,QAAS,eAAe,WACnC,IAAIC,EAAgBF,SAASG,eAAe,kBAAkBC,WAC9DF,EAAcG,OAClB,GACJ,EACA9E,QAAS,CACLmC,YACI,IAAI4C,EAAMN,SAASG,eAAe,aAC9BG,EAAI7a,QAEJf,KAAKua,YAAa,EAIlBva,KAAKua,YAAa,CAE1B,EAEAlB,YAEI5B,OAAOoE,MAAMC,KAAKC,MAAM,CACpBC,MAAO,6GACPC,QAASjc,KAAKkc,iBAEtB,EACAC,wBACIhB,QAAQC,IAAI,KACZ3D,OAAOoE,MAAMO,IAAIC,QAAQ,CACrBC,IAAK,cACLL,QAASE,UACL,MAAMI,EAAgBC,EAAID,cACpBxC,EAAWwC,EAAcE,QAAQ1C,SACjClB,EAAQ0D,EAAc1D,MAC5B,IAAI6D,EAAaH,EAAcI,SAC/B,MAAMC,EAAQnF,OAAOoE,MAAMC,KAAKe,iBAChC,IAAIC,EAAQ,IAAIC,KACZjJ,EAAO,CACPhR,IAAK,EACL7F,KAAMsf,EAActf,KACpB+f,UAAWT,EAAcU,UAAY,IAAMP,EAAWQ,MAAM,EAAG,GAAK,IAAMR,EAAWQ,MAAM,GAC3FC,aAAc,IAAMZ,EAAca,aAAaC,MAAM,KAAK,IAAIC,QAAQ,KAAM,IAC5EzE,MAAO0D,EAAc1D,MACrBiB,OAAQyC,EAAczC,OACtBC,SAAUwC,EAAcE,QAAQ1C,SAChC3S,KAAM,EACN+S,QAAS,GACTC,KAAM,GACNC,SAAU,GACVvB,SAAU,GACV8D,MAAOA,EACPW,WAAYT,EAAMU,cAAgB,IAAMV,EAAMW,WAAa,IAAMX,EAAMY,SACvEpD,OAAQ,GACRqD,UAAW,GACXC,UAAW,IAGXC,EAAa,IAAId,KACjB/c,KAAKua,WACLsD,EAAWC,QAAQD,EAAWE,UAAa,SAG3CF,EAAWC,QAAQD,EAAWE,UAAa,OAE/CC,GAAAA,EAAQC,IAAI,QAASrB,EAAO,CAAEsB,QAASL,EAAYM,OAAQne,KAAKoe,QAAShE,KAAM,YACzEiE,GAAAA,EAAMC,KAAK,uBAAwBC,KAAKC,UAAU1K,GAAO,CAC3D2K,QAAS,CACL,eAAgB,sBAErBC,MAAKlC,IAC4B,GAA5BA,EAAI1I,KAAK6K,MAAM,WACf3e,KAAKka,SAAW,EAChB0E,MAAM,WAE4B,GAA7BpC,EAAI1I,KAAK6K,MAAM,GAAG,SACvB3e,KAAKka,SAAW,EAChB0E,MAAM,WAE4B,GAA7BpC,EAAI1I,KAAK6K,MAAM,GAAG,UACvB3e,KAAKka,SAAW,EAChB0E,MAAM,qBACN5e,KAAK6e,cACT,IAEJ1D,QAAQC,IAAIpb,KAAKka,UACI,GAAjBla,KAAKka,gBACCmE,GAAAA,EAAMC,KAAK,oBAAqBC,KAAKC,UAAU1K,GAAO,CACxD2K,QAAS,CACL,eAAgB,sBAM5BtD,QAAQC,IAAI,WAAYrB,GACxBoB,QAAQC,IAAI,QAASvC,GACrBsC,QAAQC,IAAI,QAASwB,GAEA,GAAjB5c,KAAKka,gBACCmE,GAAAA,EAAMC,KAAK,qBAAsBC,KAAKC,UAAU1K,GAAO,CACzD2K,QAAS,CACL,eAAgB,sBAErBC,MAAKlC,IACJvF,SAASiC,KAAOlZ,KAAKmZ,WAAa,QAAQ,IAGlDgC,QAAQC,IAAItH,EAAK,EAGrBiL,KAAOC,IACH7D,QAAQC,IAAI4D,EAAM,GAG9B,EACAH,cACIpH,OAAOoE,MAAMO,IAAIC,QAAQ,CACrBC,IAAK,kBACLL,QAAS,SAAUgD,GACf9D,QAAQC,IAAI6D,GACZ3D,SAAS4D,OAAS,QAEtB,EACAH,KAAM,SAAUC,GACZ7D,QAAQC,IAAI4D,EAChB,GAER,EACA7C,mBAEuBkC,GAAAA,EAAMc,IAAI,iBAAiBT,MAAMO,IAChDjf,KAAKuZ,MAAQ0F,EAASnL,KACtBqH,QAAQC,IAAIpb,KAAKuZ,MAAM,IAGtB6F,OAAMJ,IACH7D,QAAQ6D,MAAMA,EAAM,GAEhC,EACA/F,WACI,IAAInF,EAAO,CACP+E,MAAO7Y,KAAK6Y,MACZC,SAAU9Y,KAAK8Y,SACf8D,MAAO,GACPxV,KAAM,IACNkT,OAAQ+E,KAAAA,OAAgBrf,KAAK8Y,UAAUwG,YAE3CjB,GAAAA,EAAMC,KAAK,qBAAsBC,KAAKC,UAAU1K,GAAO,CACnD2K,QAAS,CACL,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAE1CC,MAAMO,IACL,IAAIrC,EAAQqC,EAASnL,KACrB,GAAa,GAAT8I,EAAgB,CAEhB,IAAIiB,EAAa,IAAId,KACjB/c,KAAKua,WACLsD,EAAWC,QAAQD,EAAWE,UAAa,SAG3CF,EAAWC,QAAQD,EAAWE,UAAa,OAE/CC,GAAAA,EAAQC,IAAI,QAASrB,EAAO,CAAEsB,QAASL,EAAYM,OAAQne,KAAKoe,QAAShE,KAAM,MAC/Ee,QAAQC,IAAIwB,GACZgC,MAAM,UACN3H,SAASiC,KAAOlZ,KAAKmZ,WAAa,QAItC,MAEIyF,MAAM,oBACV,IAECQ,OAAOJ,IACJ7D,QAAQ6D,MAAMA,EAAM,GAEhC,EACA6U,cACI,MAAM7Y,EAAchb,KAAK2zB,WAAW1Y,YAAYC,aAC1CoB,EAAO,0GAAyGtB,2BAEtHqD,GAAAA,EAAMc,IAAI7C,GAAKoC,MAAMlC,IACjBrB,QAAQC,IAAIoB,EAAI1I,KAAK,GAG7B,EACAuf,iBAEI5b,OAAOR,SAASiC,KAAOlZ,KAAK0vB,WAChC,GAGJpP,WAAY,CACRwT,WAAYA,GACZC,OAAQA,KKjVhB,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,iECRSj4B,GAAG,qB,IACCA,GAAG,kB,IACKA,GAAG,WAAWiB,MAAM,uB,8qBA4BnBs1B,OAAO,GAAGv2B,GAAG,e,IACRqB,IAAI,Y,YAGPnB,EAAAA,EAAAA,GAA0D,OAArDe,MAAM,aAAY,iCAA6B,K,IAI/CA,MAAM,oB,YACPf,EAAAA,EAAAA,GAAqB,YAAf,YAAQ,K,IACPmB,IAAI,qBAAqBJ,MAAM,oB,YAElCf,EAAAA,EAAAA,GAA+B,OAA1Be,MAAM,aAAY,MAAE,K,IAKxBA,MAAM,uB,IAGHA,MAAM,W,IAEPA,MAAM,e,sCAYNA,MAAM,e,IAGLA,MAAM,W,0GA6BPA,MAAM,e,IAGLA,MAAM,W,sCASNA,MAAM,W,wEAkBPA,MAAM,e,IAINA,MAAM,e,qBAQNA,MAAM,e,IAGLA,MAAM,W,qBAKNA,MAAM,W,sCAUPA,MAAM,e,IAGLA,MAAM,W,IACPA,MAAM,e,IAYZA,MAAM,oB,YACPf,EAAAA,EAAAA,GAA+B,YAAzB,sBAAkB,K,IACjBmB,IAAI,wBAAwBJ,MAAM,oB,YAGrCf,EAAAA,EAAAA,GAA+B,OAA1Be,MAAM,aAAY,MAAE,K,IAKxBA,MAAM,uB,IAGHA,MAAM,W,IAGLjB,GAAG,oB,IACGiB,MAAM,gB,YACTf,EAAAA,EAAAA,GAKW,kBAJPA,EAAAA,EAAAA,GAAmB,OAAdkc,MAAM,WACXlc,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,SACXlc,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,SACXlc,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,UAAK,K,qBAeR8b,QAAQ,K,2HA6DxBj3B,MAAM,W,qBAGLjB,GAAG,oB,IACGiB,MAAM,gB,YACTf,EAAAA,EAAAA,GAIW,kBAHPA,EAAAA,EAAAA,GAAmB,OAAdkc,MAAM,WACXlc,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,SACXlc,EAAAA,EAAAA,GAAmB,OAAdkc,MAAM,YAAO,K,sCAuCtBnb,MAAM,W,qBAMVA,MAAM,W,qBAGLjB,GAAG,oB,IACGiB,MAAM,gB,YACTf,EAAAA,EAAAA,GAIW,kBAHPA,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,SACXlc,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,SACXlc,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,UAAK,K,IAYRnb,MAAM,OAAOi3B,QAAQ,IAAIC,QAAQ,K,qSAyD5Cn4B,GAAG,oB,IACGiB,MAAM,gB,YACTf,EAAAA,EAAAA,GAIW,kBAHPA,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,SACXlc,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,SACXlc,EAAAA,EAAAA,GAAiB,OAAZkc,MAAM,UAAK,K,4IAiDvCnb,MAAM,Y,YACPf,EAAAA,EAAAA,GAAiC,UAA7B,4BAAwB,K,IACvBe,MAAM,gB,YAEHf,EAAAA,EAAAA,GAAmE,SAA5DgB,KAAK,WAAWlB,GAAG,aAAamB,KAAK,aAAaC,MAAM,K,uBAC/DlB,EAAAA,EAAAA,GAA0C,OAArCe,MAAM,aAAY,iBAAa,K,IADpC6M,GACAsqB,I,YAIAl4B,EAAAA,EAAAA,GAAuE,SAAhEgB,KAAK,WAAWlB,GAAG,eAAemB,KAAK,eAAeC,MAAM,K,uBACnElB,EAAAA,EAAAA,GAAqC,OAAhCe,MAAM,aAAY,YAAQ,K,IAD/BgN,GACAC,I,IAaV/M,KAAK,WAAWk3B,OAAO,Q,YAEzBn4B,EAAAA,EAAAA,GAAuD,SAAhDgB,KAAK,SAASC,KAAK,IAAIC,MAAM,oB,uBAEpClB,EAAAA,EAAAA,GAA+D,SAAxDgB,KAAK,SAASC,KAAK,aAAaC,MAAM,mB,eAGxCH,MAAM,iB,yHApe3BhB,EAAAA,EAAAA,IAgfM,MAhfNE,GAgfM,EA/eFD,EAAAA,EAAAA,GA0eM,MA1eNqD,GA0eM,EAzeFrD,EAAAA,EAAAA,GAweU,UAxeVc,GAweU,CAveNwC,IA2BAtD,EAAAA,EAAAA,GAwbO,OAxbPyD,GAwbO,EAvbHzD,EAAAA,EAAAA,GAIQ,QAJR0D,GAIQ,WAHJ1D,EAAAA,EAAAA,GACgC,SADzBgB,KAAK,WAAWlB,GAAG,WAAWmB,KAAK,W,qCAAoBkC,EAAAi1B,SAAQtzB,GACjEiY,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA+zB,mBAAA/zB,EAAA+zB,qBAAAh0B,K,iBADiDlB,EAAAi1B,YAE9Dz0B,MAGJ3D,EAAAA,EAAAA,GAoIM,aAnIFA,EAAAA,EAAAA,GAMM,MANN4D,GAMM,CALFvC,IACArB,EAAAA,EAAAA,GAGQ,QAHR6D,GAGQ,EAFJ7D,EAAAA,EAAAA,GAAwF,SAAjFgB,KAAK,WAAWlB,GAAG,qBAAqBmB,KAAK,YAAa8b,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAg0B,eAAAh0B,EAAAg0B,iBAAAj0B,K,SACzE/C,SAA+B,aAIvCvB,EAAAA,EAAAA,IA0HM0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IA1H0CvD,EAAAo1B,WAAS,CAAzBC,EAAM1tB,M,WAAtC/K,EAAAA,EAAAA,IA0HM,OA1HDgB,MAAM,aAAiD+F,IAAKgE,G,EAC7D9K,EAAAA,EAAAA,GAmHM,MAnHNod,GAmHM,EAlHFpd,EAAAA,EAAAA,GAAuB,UAAAoH,EAAAA,EAAAA,IAAjBoxB,EAAKC,OAAK,IAChBz4B,EAAAA,EAAAA,GAAsB,UAAAoH,EAAAA,EAAAA,IAAhBoxB,EAAKE,MAAI,IACf14B,EAAAA,EAAAA,GAAyC,KAAzCwE,IAAyC4C,EAAAA,EAAAA,IAAlBoxB,EAAK12B,OAAK,IACjC9B,EAAAA,EAAAA,GAA0B,UAAAoH,EAAAA,EAAAA,IAApBoxB,EAAKG,UAAQ,IACnB34B,EAAAA,EAAAA,GAA8C,IAA9CyE,IAA8C2C,EAAAA,EAAAA,IAAnBoxB,EAAKI,SAAO,IAGvC54B,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArBoxB,EAAKK,WAAS,IACpB74B,EAAAA,EAAAA,GAAkD,KAA/Ce,MAAM,cAAc+3B,UAAQN,EAAKO,U,YAGpC/4B,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArBoxB,EAAKQ,WAAS,IACpBh5B,EAAAA,EAAAA,GAAkD,KAA/C84B,UAAQN,EAAKS,SAAUl4B,MAAM,e,YAGhCf,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArBoxB,EAAKU,WAAS,IACpBl5B,EAAAA,EAAAA,GAA8C,IAA9CyB,IAA8C2F,EAAAA,EAAAA,IAApBoxB,EAAKW,UAAQ,IAGvCn5B,EAAAA,EAAAA,GAA0C,KAA1C6xB,IAA0CzqB,EAAAA,EAAAA,IAAnBoxB,EAAKY,QAAM,IAClCp5B,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArBoxB,EAAKa,WAAS,IACpBr5B,EAAAA,EAAAA,GAAkD,KAA/C84B,UAAQN,EAAKc,SAAUv4B,MAAM,e,YAGhCf,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArBoxB,EAAKe,WAAS,IACpBv5B,EAAAA,EAAAA,GAAkD,KAA/C84B,UAAQN,EAAKgB,SAAUz4B,MAAM,e,YAGhCf,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArBoxB,EAAKiB,WAAS,IACpBz5B,EAAAA,EAAAA,GAAkD,KAA/C84B,UAAQN,EAAKkB,SAAU34B,MAAM,e,YAIhCf,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArBoxB,EAAKmB,WAAS,IACpB35B,EAAAA,EAAAA,GAEI,KAFD84B,UAAQN,EAAKoB,SAAU74B,MAAM,e,YAKhCf,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArBoxB,EAAKqB,WAAS,IACpB75B,EAAAA,EAAAA,GAAkD,KAA/C84B,UAAQN,EAAKsB,SAAU/4B,MAAM,e,YAGhCf,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKuB,YAAU,IACrB/5B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQN,EAAKwB,UAAWj5B,MAAM,e,YAGjCf,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKyB,YAAU,IACrBj6B,EAAAA,EAAAA,GAA+C,IAA/C+xB,IAA+C3qB,EAAAA,EAAAA,IAArBoxB,EAAK0B,WAAS,IAGxCl6B,EAAAA,EAAAA,GAA0C,KAA1CsF,IAA0C8B,EAAAA,EAAAA,IAAnBoxB,EAAK2B,QAAM,IAClCn6B,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAK4B,YAAU,IACrBp6B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQN,EAAK6B,UAAWt5B,MAAM,e,YAGjCf,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAK8B,YAAU,IACrBt6B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQN,EAAK+B,UAAWx5B,MAAM,e,YAGjCf,EAAAA,EAAAA,GAA0C,KAA1CiC,IAA0CmF,EAAAA,EAAAA,IAAnBoxB,EAAKgC,QAAM,IAClCx6B,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKiC,YAAU,IACrBz6B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQN,EAAKkC,UAAW35B,MAAM,e,YAGjCf,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKmC,YAAU,IACrB36B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQN,EAAKoC,UAAW75B,MAAM,e,YAGjCf,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKqC,YAAU,IACrB76B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQN,EAAKsC,UAAW/5B,MAAM,e,YAGjCf,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKuC,YAAU,IACrB/6B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQN,EAAKwC,UAAWj6B,MAAM,e,YAGjCf,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKyC,YAAU,IACrBj7B,EAAAA,EAAAA,GAA+C,IAA/Ck7B,IAA+C9zB,EAAAA,EAAAA,IAArBoxB,EAAK2C,WAAS,IAGxCn7B,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAK4C,YAAU,IACrBp7B,EAAAA,EAAAA,GAA+C,IAA/CqC,IAA+C+E,EAAAA,EAAAA,IAArBoxB,EAAK6C,WAAS,IAGxCr7B,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAK8C,YAAU,IACrBt7B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQN,EAAK+C,UAAWx6B,MAAM,e,YAGjCf,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKgD,YAAU,IACrBx7B,EAAAA,EAAAA,GAA+C,IAA/Cy7B,IAA+Cr0B,EAAAA,EAAAA,IAArBoxB,EAAKkD,WAAS,IAGxC17B,EAAAA,EAAAA,GAA0C,KAA1CuC,IAA0C6E,EAAAA,EAAAA,IAAnBoxB,EAAKmD,QAAM,IAClC37B,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKoD,YAAU,IACrB57B,EAAAA,EAAAA,GAAmD,KAAhDe,MAAM,cAAc+3B,UAAQN,EAAKqD,W,YAGpC77B,EAAAA,EAAAA,GAA0C,KAA1CgG,IAA0CoB,EAAAA,EAAAA,IAAnBoxB,EAAKsD,QAAM,IAClC97B,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKuD,YAAU,IACrB/7B,EAAAA,EAAAA,GAAmD,KAAhDe,MAAM,cAAc+3B,UAAQN,EAAKwD,W,YAGpCh8B,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAKyD,YAAU,IACrBj8B,EAAAA,EAAAA,GAAmD,KAAhDe,MAAM,cAAc+3B,UAAQN,EAAK0D,W,YAGpCl8B,EAAAA,EAAAA,GAA4B,UAAAoH,EAAAA,EAAAA,IAAtBoxB,EAAK2D,YAAU,IACrBn8B,EAAAA,EAAAA,GAA+C,IAA/CmG,IAA+CiB,EAAAA,EAAAA,IAArBoxB,EAAK4D,WAAS,IAGxCp8B,EAAAA,EAAAA,GAA0C,KAA1C0C,IAA0C0E,EAAAA,EAAAA,IAAnBoxB,EAAK6D,QAAM,IAClCr8B,EAAAA,EAAAA,GAA+C,IAA/CsyB,IAA+ClrB,EAAAA,EAAAA,IAArBoxB,EAAK8D,WAAS,U,SAWpDt8B,EAAAA,EAAAA,GAyRM,aAxRFA,EAAAA,EAAAA,GAOM,MAPNqG,GAOM,CANFC,IACAtG,EAAAA,EAAAA,GAIQ,QAJRuG,GAIQ,EAHJvG,EAAAA,EAAAA,GAC4B,SADrBgB,KAAK,WAAWlB,GAAG,wBAAwBmB,KAAK,YAClD8b,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAg0B,eAAAh0B,EAAAg0B,iBAAAj0B,K,SACbmC,SAA+B,aAIvCzG,EAAAA,EAAAA,IA8QM0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IA9Q0CvD,EAAAo5B,UAAQ,CAAxBpiB,EAAMrP,M,WAAtC/K,EAAAA,EAAAA,IA8QM,OA9QDgB,MAAM,aAAgD+F,IAAKgE,G,EAC5D9K,EAAAA,EAAAA,GA4QM,MA5QN+G,GA4QM,EA3QF/G,EAAAA,EAAAA,GAAsB,UAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKA,MAAI,IACfna,EAAAA,EAAAA,GAAsB,UAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKue,MAAI,IACf14B,EAAAA,EAAAA,GAAyC,KAAzCuyB,IAAyCnrB,EAAAA,EAAAA,IAAlB+S,EAAKrY,OAAK,IACjC9B,EAAAA,EAAAA,GAA0B,UAAAoH,EAAAA,EAAAA,IAApB+S,EAAKwe,UAAQ,IAEnB34B,EAAAA,EAAAA,GA8EM,MA9EN6yB,GA8EM,EA7EF7yB,EAAAA,EAAAA,GA4EQ,QA5ERgH,GA4EQ,CA3EJC,IAOAjH,EAAAA,EAAAA,GAKQ,eAJJA,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKqiB,KAAG,IACfx8B,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKsiB,KAAG,IACfz8B,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKuiB,KAAG,IACf18B,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKwiB,KAAG,MAInB38B,EAAAA,EAAAA,GA2DQ,eA1DJA,EAAAA,EAAAA,GAKK,YAJDA,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKyiB,OAAK,IACjB58B,EAAAA,EAAAA,GAA6B,MAAzB84B,UAAQ3e,EAAK0iB,O,YACjB78B,EAAAA,EAAAA,GAAqC,KAArCmH,IAAqCC,EAAAA,EAAAA,IAAlB+S,EAAK2iB,OAAK,IAC7B98B,EAAAA,EAAAA,GAA0C,MAAtC84B,UAAQ3e,EAAK4iB,MAAO/E,QAAQ,M,cAGpCh4B,EAAAA,EAAAA,GAGK,YAFDA,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAK6iB,OAAK,IACjBh9B,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAK8iB,OAAK,MAGrBj9B,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAK+iB,OAAK,IACjBl9B,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKgjB,OAAK,IACjBn9B,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKijB,OAAK,MAGrBp9B,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKkjB,OAAK,IACjBr9B,EAAAA,EAAAA,GAA6B,MAAzB84B,UAAQ3e,EAAKmjB,O,YACjBt9B,EAAAA,EAAAA,GAAyC,MAArC84B,UAAQ3e,EAAKojB,MAAOvF,QAAQ,K,cAGpCh4B,EAAAA,EAAAA,GAKK,YAJDA,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKqjB,OAAK,IACjBx9B,EAAAA,EAAAA,GAA6B,MAAzB84B,UAAQ3e,EAAKsjB,O,cAKrBz9B,EAAAA,EAAAA,GAGK,YAFDA,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKujB,OAAK,IACjB19B,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKwjB,OAAK,MAGrB39B,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKyjB,OAAK,IACjB59B,EAAAA,EAAAA,GAA6B,MAAzB84B,UAAQ3e,EAAK0jB,O,YACjB79B,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAK2jB,OAAK,MAGrB99B,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAA6B,MAAzB84B,UAAQ3e,EAAK4jB,O,YACjB/9B,EAAAA,EAAAA,GAA6B,MAAzB84B,UAAQ3e,EAAK6jB,O,YACjBh+B,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAK8jB,OAAK,MAGrBj+B,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAK+jB,OAAK,IACjBl+B,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKgkB,OAAK,IACjBn+B,EAAAA,EAAAA,GAAyB,WAAAoH,EAAAA,EAAAA,IAAlB+S,EAAKikB,OAAK,MAGrBp+B,EAAAA,EAAAA,GAGK,YAFDA,EAAAA,EAAAA,GAA0B,WAAAoH,EAAAA,EAAAA,IAAnB+S,EAAKkkB,QAAM,IAClBr+B,EAAAA,EAAAA,GAA0B,WAAAoH,EAAAA,EAAAA,IAAnB+S,EAAKmkB,QAAM,YAQlCt+B,EAAAA,EAAAA,GAA0C,KAA1CiI,IAA0Cb,EAAAA,EAAAA,IAAnB+S,EAAKif,QAAM,IAClCp5B,EAAAA,EAAAA,GAAkD,KAA/Ce,MAAM,cAAc+3B,UAAQ3e,EAAK4e,U,YAEpC/4B,EAAAA,EAAAA,GAwCM,MAxCNsI,GAwCM,EAvCFtI,EAAAA,EAAAA,GAsCQ,QAtCRuI,GAsCQ,CArCJC,IAMAxI,EAAAA,EAAAA,GAIQ,eAHJA,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKokB,KAAG,IACfv+B,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKqkB,KAAG,IACfx+B,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKskB,KAAG,MAGnBz+B,EAAAA,EAAAA,GAwBQ,eAvBJA,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAKukB,SAAO,IACnB1+B,EAAAA,EAAAA,GAA+B,MAA3B84B,UAAQ3e,EAAKwkB,S,YACjB3+B,EAAAA,EAAAA,GAA+B,MAA3B84B,UAAQ3e,EAAKykB,S,cAGrB5+B,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAK0kB,SAAO,IACnB7+B,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAK2kB,SAAO,IACnB9+B,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAK4kB,SAAO,MAGvB/+B,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAK6kB,SAAO,IACnBh/B,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAK8kB,SAAO,IACnBj/B,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAK+kB,SAAO,MAGvBl/B,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAKglB,SAAO,IACnBn/B,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAKilB,SAAO,IACnBp/B,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAKklB,SAAO,YAOnCr/B,EAAAA,EAAAA,GAGM,aAFFA,EAAAA,EAAAA,GAA0C,KAA1C2I,IAA0CvB,EAAAA,EAAAA,IAAnB+S,EAAKggB,QAAM,IAClCn6B,EAAAA,EAAAA,GAAkD,KAA/Ce,MAAM,cAAc+3B,UAAQ3e,EAAK8e,U,cAKxCj5B,EAAAA,EAAAA,GAA0C,KAA1C+I,IAA0C3B,EAAAA,EAAAA,IAAnB+S,EAAKqgB,QAAM,IAClCx6B,EAAAA,EAAAA,GAA+B,KAA5B84B,UAAQ3e,EAAKmlB,W,YAEhBt/B,EAAAA,EAAAA,GA+BM,MA/BNkJ,GA+BM,EA9BFlJ,EAAAA,EAAAA,GA6BQ,QA7BRmJ,GA6BQ,CA5BJE,IAKArJ,EAAAA,EAAAA,GAIQ,eAHJA,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAKolB,SAAO,IACnBv/B,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAKqlB,SAAO,IACnBx/B,EAAAA,EAAAA,GAA2B,WAAAoH,EAAAA,EAAAA,IAApB+S,EAAKslB,SAAO,MAGvBz/B,EAAAA,EAAAA,GAgBQ,eAfJA,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAKulB,UAAQ,IACpB1/B,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAKwlB,UAAQ,IACpB3/B,EAAAA,EAAAA,GAAiE,KAAjEsJ,IAAiElC,EAAAA,EAAAA,IAArB+S,EAAKylB,UAAQ,MAG7D5/B,EAAAA,EAAAA,GAGK,YAFDA,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAK0lB,UAAQ,IACpB7/B,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAK2lB,UAAQ,MAGxB9/B,EAAAA,EAAAA,GAGK,YAFDA,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAK4lB,UAAQ,IACpB//B,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAK6lB,UAAQ,YAKpChgC,EAAAA,EAAAA,GAA+B,KAA5B84B,UAAQ3e,EAAK8lB,W,YAChBjgC,EAAAA,EAAAA,GAA+B,KAA5B84B,UAAQ3e,EAAK+lB,W,YAGhBlgC,EAAAA,EAAAA,GAIM,aAHFA,EAAAA,EAAAA,GAA8C,MAA1Ce,MAAM,UAAU+3B,UAAQ3e,EAAKwhB,Q,YACjC37B,EAAAA,EAAAA,GAA+B,KAA5B84B,UAAQ3e,EAAKmlB,W,YAChBt/B,EAAAA,EAAAA,GAAkD,KAA/Ce,MAAM,cAAc+3B,UAAQ3e,EAAKmf,U,cAIxCt5B,EAAAA,EAAAA,GAIM,aAHFA,EAAAA,EAAAA,GAA8C,MAA1Ce,MAAM,UAAU+3B,UAAQ3e,EAAK2hB,Q,YACjC97B,EAAAA,EAAAA,GAA2B,UAAAoH,EAAAA,EAAAA,IAArB+S,EAAKof,WAAS,IACpBv5B,EAAAA,EAAAA,GAA8B,KAA3B84B,UAAQ3e,EAAKqf,U,cAIpBx5B,EAAAA,EAAAA,GAIM,aAHFA,EAAAA,EAAAA,GAA8C,MAA1Ce,MAAM,UAAU+3B,UAAQ3e,EAAKkiB,Q,YACjCr8B,EAAAA,EAAAA,GAA+B,KAA5B84B,UAAQ3e,EAAKsf,W,YAChBz5B,EAAAA,EAAAA,GAA8B,KAA3B84B,UAAQ3e,EAAKuf,U,cAIpB15B,EAAAA,EAAAA,GAIM,aAHFA,EAAAA,EAAAA,GAA8C,MAA1Ce,MAAM,UAAU+3B,UAAQ3e,EAAKgmB,Q,YACjCngC,EAAAA,EAAAA,GAA+B,KAA5B84B,UAAQ3e,EAAKwf,W,YAChB35B,EAAAA,EAAAA,GAA8B,KAA3B84B,UAAQ3e,EAAKyf,U,cAIpB55B,EAAAA,EAAAA,GAGM,aAFFA,EAAAA,EAAAA,GAA8C,MAA1Ce,MAAM,UAAU+3B,UAAQ3e,EAAKimB,Q,YACjCpgC,EAAAA,EAAAA,GAA8B,KAA3B84B,UAAQ3e,EAAK2f,U,cAIpB95B,EAAAA,EAAAA,GAmCM,aAlCFA,EAAAA,EAAAA,GAA+C,MAA3Ce,MAAM,UAAU+3B,UAAQ3e,EAAKkmB,S,YACjCrgC,EAAAA,EAAAA,GAAgC,KAA7B84B,UAAQ3e,EAAKmmB,Y,YAEhBtgC,EAAAA,EAAAA,GA2BM,MA3BNmM,GA2BM,EA1BFnM,EAAAA,EAAAA,GAyBQ,QAzBRoM,GAyBQ,CAxBJm0B,IAKAvgC,EAAAA,EAAAA,GAIQ,eAHJA,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKqmB,KAAG,IACfxgC,EAAAA,EAAAA,GAAuB,WAAAoH,EAAAA,EAAAA,IAAhB+S,EAAKsmB,KAAG,IACfzgC,EAAAA,EAAAA,GAAwB,WAAAoH,EAAAA,EAAAA,IAAjB+S,EAAKumB,MAAI,MAEpB1gC,EAAAA,EAAAA,GAaQ,eAXJA,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAKwmB,UAAQ,IACpB3gC,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAKymB,UAAQ,IACpB5gC,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAK0mB,UAAQ,MAGxB7gC,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAK2mB,UAAQ,IACpB9gC,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAK4mB,UAAQ,IACpB/gC,EAAAA,EAAAA,GAA4B,WAAAoH,EAAAA,EAAAA,IAArB+S,EAAK6mB,UAAQ,YAMpChhC,EAAAA,EAAAA,GAAgC,KAA7B84B,UAAQ3e,EAAK8mB,Y,cAKpBjhC,EAAAA,EAAAA,GAIM,aAHFA,EAAAA,EAAAA,GAA+C,MAA3Ce,MAAM,UAAU+3B,UAAQ3e,EAAK+mB,S,YACjClhC,EAAAA,EAAAA,GAAgC,KAA7B84B,UAAQ3e,EAAK8f,Y,YAChBj6B,EAAAA,EAAAA,GAAmD,KAAhD84B,UAAQ3e,EAAK+f,UAAWn5B,MAAM,e,cAIrCf,EAAAA,EAAAA,GAGM,aAFFA,EAAAA,EAAAA,GAA+C,MAA3Ce,MAAM,UAAU+3B,UAAQ3e,EAAKgnB,S,YACjCnhC,EAAAA,EAAAA,GAA+B,KAA5B84B,UAAQ3e,EAAKkgB,W,cAIpBr6B,EAAAA,EAAAA,GAA+C,MAA3Ce,MAAM,UAAU+3B,UAAQ3e,EAAK+mB,S,YACjClhC,EAAAA,EAAAA,GAAgC,KAA7B84B,UAAQ3e,EAAKmgB,Y,2BAM5Bt6B,EAAAA,EAAAA,GAcM,MAdNohC,GAcM,CAbFzzB,IACA3N,EAAAA,EAAAA,GAUM,MAVNqhC,GAUM,EATFrhC,EAAAA,EAAAA,GAGQ,SAHDmB,IAAI,aAAarB,GAAG,WAAYid,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAg0B,eAAAh0B,EAAAg0B,iBAAAj0B,K,QAK/CrE,EAAAA,EAAAA,GAGQ,SAHDmB,IAAI,eAAerB,GAAG,WAAYid,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAg0B,eAAAh0B,EAAAg0B,iBAAAj0B,K,cAe7DrE,EAAAA,EAAAA,GAYO,OAZPshC,GAYO,CAVHhzB,GAEAE,IAGAxO,EAAAA,EAAAA,GAIM,MAJNuhC,GAIM,EAHFvhC,EAAAA,EAAAA,GAES,UAFDgB,KAAK,SAASD,MAAM,gBAAiBoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAk9B,SAAAl9B,EAAAk9B,WAAAn9B,KAAS,mBAQ7EnE,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,IACVr3B,EAAAA,EAAAA,IAAeuhC,I,CChfhB,MAAMlJ,GAAY,CACrB,CACIE,MAAO,UACPC,KAAM,aACN52B,MAAO,SACP62B,SAAU,WACVC,QAAU,qIACVC,UAAW,cACXE,SAAW,47BAYXC,UAAU,oBACVC,SAAU,6RAKVC,UAAU,gBACVC,SACC,2IAEDC,OAAO,mBACPC,UAAU,oBACVC,SACC,kQAKDC,UAAU,aACVC,SACC,yMAGDC,UAAU,gBACVC,SACC,4gBAQDC,UAAU,gBACVC,SACC,irBAKDC,UAAU,uBACVC,SAAU,qtBAOVC,WAAW,kBACXC,UAAW,wmCAsBXC,WAAW,kBACXC,UAAU,kFACVC,OAAQ,gBACRC,WAAW,mBACXC,UAAW,4ZAGXC,WAAW,gBACXC,UAAW,iqCAmBXC,OAAO,aACPC,WAAW,yCACXC,UAAW,wIAGXC,WAAW,kBACXC,UAAW,0YAMXC,WAAW,oBACXC,UAAW,upCAiBXC,WAAW,iBACXC,UAAW,w5BAeXC,WAAW,kBACXE,UAAW,+HAGXC,WAAW,mBACXC,UAAW,gOAEXC,WAAW,oBACXC,UAAW,4gBAUXC,WAAW,YACXE,UAAW,iUAEXC,OAAO,kBACPC,WAAW,qBACXC,UAAW,6lEAqCXC,OAAO,aACPC,WAAW,cACXC,UAAW,yRAEXC,WAAW,cACXC,UAAW,mWAKXC,WAAW,cACXC,UAAU,0EACVC,OAAQ,OACRC,UAAW,uCC7ONC,GAAW,CACpB,CACIpiB,KAAK,YACLrC,KAAK,aACL4pB,IAAK,oHACL5/B,MAAM,iBACN62B,SAAS,yIACT6D,IAAI,OACJC,IAAI,OACJC,IAAI,YACJC,IAAI,YACJC,MAAM,OACNC,MAAO,sFAEPC,MAAM,gDAENE,MAAM,OACNC,MAAM,sBACNC,MAAM,UACNC,MAAM,UACNC,MAAM,6BAENC,MAAM,WACNC,MAAO,8DAGPE,MAAM,WACNC,MAAO,2FAEPF,MAAO,4EACPR,MAAM,2BAENW,MAAM,UACNC,MAAM,cAENC,MAAM,OACNC,MAAO,+DAGPE,MAAO,4CAEPC,MAAO,wDAEPC,MAAM,cAENC,MAAM,aACNC,MAAM,iCACNC,MAAM,YAENC,OAAO,WACPC,OAAO,8BAEPlF,OAAO,sBACPL,SAAU,w6BAYVwF,IAAI,KACJC,IAAI,KACJC,IAAI,KACJC,QAAQ,0BACRC,QAAS,+GAGTC,QAAS,qDAITC,QAAQ,yBACRC,QAAQ,gBACRC,QAAQ,MAERC,QAAQ,UACRC,QAAQ,iBACRC,QAAQ,KAERC,QAAQ,UACRC,QAAQ,uBACRC,QAAQ,KAERlF,OAAO,mBACPlB,SAAU,8SAMVuB,OAAO,kBACP8E,UAAU,2DACVC,QAAQ,aACRC,QAAQ,WACRC,QAAQ,kBACRC,SAAS,UACTC,SAAS,2BACTC,SAAS,wBACTC,SAAS,cACTC,SAAS,8BACTC,SAAS,aACTC,SAAS,OAGTC,UAAU,mKACVC,UAAU,kEACVvE,OAAQ,yBACRrC,SAAU,0+BAcVwC,OAAO,iCACPvC,UAAU,oHACVC,SAAU,o6BAeV6C,OAAO,eACP5C,UAAW,6IAEXC,SAAU,6SAKVyG,OAAO,qBACPxG,UAAW,2MAEXC,SAAU,wzDAsBVwG,OAAO,uCACPtG,SAAU,g5BAUVuG,QAAQ,kBACRC,WAAW,uGACXE,IAAI,WACJC,IAAI,WACJC,KAAK,kBACLC,SAAS,WACTC,SAAS,cACTC,SAAS,aACTC,SAAS,KACTC,SAAS,WACTC,SAAS,eACTC,WAAW,yJACXC,QAAQ,iBACRjH,WAAW,kGACXC,UAAW,kgBAUXiH,QAAQ,iBACR9G,UAAW,o5CAyBfsH,QAAQ,mBACRrH,WAAW,oC,UC7ONv5B,MAAM,yB,IAEHf,EAAAA,EAAAA,GAAmB,OAAdU,IAAI,GAAGE,IAAI,I,aAAhByC,I,gCAFiCF,EAAAy+B,gBAAa,WAAtD7hC,EAAAA,EAAAA,IAIM,MAJNE,GAIM,EAHFD,EAAAA,EAAAA,GAES,UAFDe,MAAM,SAAUoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAu9B,WAAAv9B,EAAAu9B,aAAAx9B,K,uBAmCvC,QACIyT,OACI,MAAO,CACH8pB,eAAc,EAEtB,EACAjnB,UACIc,OAAOC,iBAAiB,SAAU1X,KAAK89B,aAC3C,EACAC,YACItmB,OAAO0b,oBAAoB,SAAUnzB,KAAK89B,aAC9C,EACAjnB,QAAS,CACLgnB,YACIpmB,OAAOumB,SAAS,CACZ5rB,IAAK,EACL6rB,SAAU,UAElB,EACAH,eACI99B,KAAK49B,cAAgBnmB,OAAOymB,QAAU,EAC1C,ICnDR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,UJ4fA,IACIpqB,OACI,MAAO,CACHygB,UAAWA,GACXgE,SAAUA,GACVnE,UAAU,EACV+J,gBAAiB,GAEzB,EACA7d,WAAY,CACRyT,OAAM,GACND,WAAU,GACVsK,YAAWA,IAEfvnB,QAAS,CAELwd,oBACI,MAAMgK,EAAkB/iB,SAASgjB,iBAAiB,yCAE9Ct+B,KAAKo0B,SACLiK,EAAgBhoB,SAAQkoB,IACpBA,EAASx9B,SAAU,CAAI,IAG3Bs9B,EAAgBhoB,SAAQkoB,IACpBA,EAASx9B,SAAU,CAAK,GAGpC,EAGAuzB,gBACI,MAAMkK,EAAqBljB,SAASG,eAAe,sBAC7CgjB,EAAwBnjB,SAASG,eAAe,yBAChDijB,EAAapjB,SAASG,eAAe,cACrCkjB,EAAerjB,SAASG,eAAe,gBAEzC+iB,EAAmBz9B,SAAW09B,EAAsB19B,SAAW29B,EAAW39B,SAAW49B,EAAa59B,QAClGf,KAAKo0B,UAAW,EAEhBp0B,KAAKo0B,UAAW,CAGxB,EACAoJ,UACI,IAAIoB,EAAM,GACPtjB,SAASG,eAAe,sBAAsB1a,SAAWua,SAASG,eAAe,yBAAyB1a,SACtGua,SAASG,eAAe,cAAc1a,UAAYua,SAASG,eAAe,gBAAgB1a,QACzF69B,GAAO,aAEFtjB,SAASG,eAAe,cAAc1a,SAAWua,SAASG,eAAe,gBAAgB1a,QAC9F69B,GAAO,YAEHtjB,SAASG,eAAe,cAAc1a,SAAWua,SAASG,eAAe,gBAAgB1a,QAC7F69B,GAAO,YAEPA,GAAO,YAGXnnB,OAAOonB,KAAK,sBAAuBD,EAAK,GAAI,wIAE5ChgB,MAAM,gBAGd,IK9jBR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,63ECRS9iB,GAAG,qB,IACCA,GAAG,kB,IACKA,GAAG,WAAWiB,MAAM,uB,kqBA4BnBs1B,OAAO,GAAGv2B,GAAG,Y,IACRqB,IAAI,GAAGJ,MAAM,kB,YAUhBf,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAAU,SAAP,SAAG,K,IAGLF,GAAG,c,YAIAE,EAAAA,EAAAA,GAAkB,cAAV,KAAC,K,IAKRe,MAAM,gB,ibAGHO,I,YAQJtB,EAAAA,EAAAA,GAA+D,KAA5Dkd,KAAK,IAAInc,MAAM,gBAAgBe,MAAM,oB,eAQ7CX,IAAI,GAAGJ,MAAM,kB,YAChBf,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAAW,SAAR,UAAI,K,IAORmB,IAAI,aAAaJ,MAAM,kB,YAC1Bf,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAAc,SAAX,aAAO,K,IAQXmB,IAAI,WAAWJ,MAAM,kB,YACxBf,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAAS,SAAN,QAAE,K,IAGJF,GAAG,a,YAKAE,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAAS,SAAN,QAAE,K,IAEFmB,IAAI,Y,YAEPnB,EAAAA,EAAAA,GAAQ,SAAL,KAAC,K,IAGDmB,IAAI,c,YAEPnB,EAAAA,EAAAA,GAAQ,SAAL,KAAC,K,YAShBA,EAAAA,EAAAA,GAIM,OAJDe,MAAM,eAAa,W,IAOrBA,MAAM,UAAUI,IAAI,Y,YACvBnB,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAAW,SAAR,UAAI,K,IAMRe,MAAM,UAAUI,IAAI,a,YACvBnB,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAAY,SAAT,WAAK,K,IAoCTmB,IAAI,UAAUJ,MAAM,U,YACvBf,EAAAA,EAAAA,GAAe,YAAT,MAAE,K,IACHF,GAAG,gB,IAMLqB,IAAI,e,YACPnB,EAAAA,EAAAA,GAAa,uB,IAIVmB,IAAI,c,YACPnB,EAAAA,EAAAA,GAAa,uB,YAGjBA,EAAAA,EAAAA,GAAI,qB,IACCe,MAAM,qB,YACPf,EAAAA,EAAAA,GAAiB,UAAb,YAAQ,K,IAGDmB,IAAI,a,uBAIPnB,EAAAA,EAAAA,GAAU,SAAP,OAAG,K,IAIHmB,IAAI,e,uBAKPnB,EAAAA,EAAAA,GAAW,SAAR,QAAI,K,IAKde,MAAM,qB,YACPf,EAAAA,EAAAA,GAAiB,UAAb,YAAQ,K,IAGDmB,IAAI,e,uBAKPnB,EAAAA,EAAAA,GAAW,SAAR,QAAI,K,IAGJmB,IAAI,gB,uBAKPnB,EAAAA,EAAAA,GAAa,SAAV,UAAM,K,IAGNmB,IAAI,Q,uBAIPnB,EAAAA,EAAAA,GAAa,SAAV,UAAM,K,IAKpBe,MAAM,e,YACPf,EAAAA,EAAAA,GAAuD,UAA/CgB,KAAK,SAASD,MAAM,iBAAgB,MAAE,K,yHApP9DhB,EAAAA,EAAAA,IA8PM,MA9PNE,GA8PM,EA7PFD,EAAAA,EAAAA,GAwPM,MAxPNqD,GAwPM,EAvPFrD,EAAAA,EAAAA,GAqPU,UArPVc,GAqPU,CApPNwC,IA2BAtD,EAAAA,EAAAA,GAoNO,OApNPyD,GAoNO,EAnNHzD,EAAAA,EAAAA,GAwCQ,QAxCR0D,GAwCQ,CA9BJC,IAIA3D,EAAAA,EAAAA,GAwBM,MAxBN4D,GAwBM,EAvBF5D,EAAAA,EAAAA,GAMM,sBALFA,EAAAA,EAAAA,GACiF,SAD1EgB,KAAK,OAAOlB,GAAG,UAAUmB,KAAK,UAAUa,MAAM,QAAQ8a,YAAY,S,qCAC5DzZ,EAAA2/B,YAAWh+B,GAAGi+B,OAAI3+B,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA0+B,oBAAA1+B,EAAA0+B,sBAAA3+B,IAAqB0Y,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA2+B,mBAAA3+B,EAAA2+B,qBAAA5+B,K,iBAAjDlB,EAAA2/B,eACbzhC,IAAkB,SAClBrB,EAAAA,EAAAA,GAC0B,SADnBgB,KAAK,OAAOlB,GAAG,cAAcmB,KAAK,cAAca,MAAM,aAAa0wB,SAAA,G,qCAC7DrvB,EAAA+/B,YAAWp+B,I,iBAAX3B,EAAA+/B,kBAGjBljC,EAAAA,EAAAA,GAcM,MAdN6D,GAcM,WAbF7D,EAAAA,EAAAA,GASS,UATDiB,KAAK,cAAcnB,GAAG,c,qCAAuBqD,EAAAggC,WAAUr+B,GAC1DiY,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA2+B,mBAAA3+B,EAAA2+B,qBAAA5+B,K,eADwClB,EAAAggC,cAUrDv+B,IAEA5E,EAAAA,EAAAA,GAAmE,UAA3DgB,KAAK,SAAUmD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA8+B,YAAA9+B,EAAA8+B,cAAA/+B,IAAYtD,MAAM,OAAM,eAMlEf,EAAAA,EAAAA,GAOQ,QAPRqjC,GAOQ,CANJ1hC,IAEO,SAEP3B,EAAAA,EAAAA,GACmE,SAD5DgB,KAAK,WAAWlB,GAAG,UAAUmB,KAAK,UAAU2b,YAAY,iCAC3D0mB,aAAa,M,qCAAengC,EAAA2Z,SAAQhY,GAAGi+B,OAAI3+B,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAi/B,kBAAAj/B,EAAAi/B,oBAAAl/B,K,iBAAjBlB,EAAA2Z,eAGpC9c,EAAAA,EAAAA,GAQQ,QARRwjC,GAQQ,CAPJC,IAEO,SAEPzjC,EAAAA,EAAAA,GAEkC,SAF3BgB,KAAK,WAAWlB,GAAG,aAAamB,KAAK,aACxC2b,YAAY,iCAAiC0mB,aAAa,M,qCAAengC,EAAAugC,gBAAe5+B,GACvFi+B,OAAI3+B,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAq/B,uBAAAr/B,EAAAq/B,yBAAAt/B,K,iBADkElB,EAAAugC,sBAIjF1jC,EAAAA,EAAAA,GAkCQ,QAlCR6B,GAkCQ,CAjCJkwB,IAIA/xB,EAAAA,EAAAA,GAmBM,MAnBNsF,GAmBM,WAlBFtF,EAAAA,EAAAA,GACyB,SADlBgB,KAAK,OAAOlB,GAAG,WAAWmB,KAAK,WAAW2b,YAAY,Q,uCAAiBzZ,EAAAlC,KAAI6D,GAC7Ei+B,OAAI3+B,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAs/B,cAAAt/B,EAAAs/B,gBAAAv/B,K,iBADmElB,EAAAlC,SAG9EjB,EAAAA,EAAAA,GAaM,YAZFuF,IAGAvF,EAAAA,EAAAA,GAGQ,QAHRixB,GAGQ,WAFJjxB,EAAAA,EAAAA,GAAiF,SAA1EgB,KAAK,QAAQlB,GAAG,WAAWmB,KAAK,WAAWC,MAAM,I,uCAAaiC,EAAA0gC,WAAU/+B,I,iBAAV3B,EAAA0gC,cACrE5hC,MAGJjC,EAAAA,EAAAA,GAGQ,QAHR8jC,GAGQ,WAFJ9jC,EAAAA,EAAAA,GAAmF,SAA5EgB,KAAK,QAAQlB,GAAG,aAAamB,KAAK,WAAWC,MAAM,I,uCAAaiC,EAAA0gC,WAAU/+B,I,iBAAV3B,EAAA0gC,cACvE3S,SASZ/uB,MAOJnC,EAAAA,EAAAA,GAMQ,QANR+jC,GAMQ,CALJ7I,IAEO,SACPl7B,EAAAA,EAAAA,GAC8B,SADvBgB,KAAK,OAAOlB,GAAG,WAAW8c,YAAY,2B,uCAAoCzZ,EAAA6d,UAASlc,GACrFi+B,OAAI3+B,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA0/B,mBAAA1/B,EAAA0/B,qBAAA3/B,K,iBADsElB,EAAA6d,gBAIrFhhB,EAAAA,EAAAA,GAMQ,QANRqC,GAMQ,CALJ8uB,IAEO,SACPnxB,EAAAA,EAAAA,GACgC,SADzBgB,KAAK,MAAMlB,GAAG,YAAY8c,YAAY,uB,uCAAgCzZ,EAAAge,YAAWrc,GACnFi+B,OAAI3+B,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA2/B,qBAAA3/B,EAAA2/B,uBAAA5/B,K,iBADkElB,EAAAge,kBAkCjFnhB,EAAAA,EAAAA,GAMQ,QANRy7B,GAMQ,CALJl5B,IACAvC,EAAAA,EAAAA,GAGM,MAHNoxB,GAGM,WAFFpxB,EAAAA,EAAAA,GAA4D,SAArDgB,KAAK,OAAOlB,GAAG,UAAU0yB,SAAA,G,uCAAkBrvB,EAAA+gC,SAAQp/B,I,iBAAR3B,EAAA+gC,aAClDlkC,EAAAA,EAAAA,GAAwE,UAAhEgB,KAAK,SAASD,MAAM,MAAOoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA6/B,cAAA7/B,EAAA6/B,gBAAA9/B,KAAc,gBAIhErE,EAAAA,EAAAA,GAGQ,QAHRgG,GAGQ,CAFJC,IAAa,SACbjG,EAAAA,EAAAA,GAAwF,SAAjFgB,KAAK,OAAOlB,GAAG,eAAemB,KAAK,eAAeuxB,SAAA,G,uCAAkBrvB,EAAAihC,YAAWt/B,I,iBAAX3B,EAAAihC,kBAG/EpkC,EAAAA,EAAAA,GAGQ,QAHRkG,GAGQ,CAFJC,IAAa,SACbnG,EAAAA,EAAAA,GAA6E,SAAtEgB,KAAK,OAAOlB,GAAG,aAAamB,KAAK,a,uCAAsBkC,EAAAkhC,cAAav/B,I,iBAAb3B,EAAAkhC,mBAElE3hC,IACA1C,EAAAA,EAAAA,GAoBM,MApBNsyB,GAoBM,CAnBFjsB,IAEArG,EAAAA,EAAAA,GAgBM,aAfFA,EAAAA,EAAAA,GAKQ,QALRsG,GAKQ,WAJJtG,EAAAA,EAAAA,GACuD,SADhDgB,KAAK,WAAWlB,GAAG,YAAYoB,MAAM,Y,uCAAqBiC,EAAAmhC,YAAYC,UAASz/B,GACjFiY,SAAM3Y,EAAA,MAAAA,EAAA,QAAQE,EAAAkgC,sBAAsB,e,iBADwBrhC,EAAAmhC,YAAYC,cAE7EvkC,EAAAA,EAAAA,GAAoF,OAA9EU,IAAKyC,EAAAmhC,YAAYC,UAAYphC,EAAAshC,cAAc1/B,QAAU5B,EAAAshC,cAAcC,W,WACzEl+B,MAIJxG,EAAAA,EAAAA,GAMQ,QANR+G,GAMQ,WALJ/G,EAAAA,EAAAA,GAEyD,SAFlDgB,KAAK,WAAWlB,GAAG,cAAcoB,MAAM,c,uCACjCiC,EAAAmhC,YAAYK,YAAW7/B,GAC/BiY,SAAM3Y,EAAA,MAAAA,EAAA,QAAQE,EAAAkgC,sBAAsB,iB,iBAD5BrhC,EAAAmhC,YAAYK,gBAEzB3kC,EAAAA,EAAAA,GAAsF,OAAhFU,IAAKyC,EAAAmhC,YAAYK,YAAcxhC,EAAAshC,cAAc1/B,QAAU5B,EAAAshC,cAAcC,W,WAC3E7R,UAKZ7yB,EAAAA,EAAAA,GA2BM,MA3BNgH,GA2BM,CA1BFC,IAEAjH,EAAAA,EAAAA,GAuBM,aAtBFA,EAAAA,EAAAA,GAMQ,QANR8yB,GAMQ,WALJ9yB,EAAAA,EAAAA,GAEyD,SAFlDgB,KAAK,WAAWlB,GAAG,cAAcoB,MAAM,c,uCACjCiC,EAAAyhC,YAAYC,YAAW//B,GAC/BiY,SAAM3Y,EAAA,MAAAA,EAAA,QAAQE,EAAAkgC,sBAAsB,iB,iBAD5BrhC,EAAAyhC,YAAYC,gBAEzB7kC,EAAAA,EAAAA,GAAsF,OAAhFU,IAAKyC,EAAAyhC,YAAYC,YAAc1hC,EAAAshC,cAAc1/B,QAAU5B,EAAAshC,cAAcC,W,WAC3En9B,MAGJvH,EAAAA,EAAAA,GAMQ,QANRwH,GAMQ,WALJxH,EAAAA,EAAAA,GAE0D,SAFnDgB,KAAK,WAAWlB,GAAG,eAAeoB,MAAM,e,uCAClCiC,EAAAyhC,YAAYE,aAAYhgC,GAChCiY,SAAM3Y,EAAA,MAAAA,EAAA,QAAQE,EAAAkgC,sBAAsB,kB,iBAD5BrhC,EAAAyhC,YAAYE,iBAEzB9kC,EAAAA,EAAAA,GAAuF,OAAjFU,IAAKyC,EAAAyhC,YAAYE,aAAe3hC,EAAAshC,cAAc1/B,QAAU5B,EAAAshC,cAAcC,W,WAC5Eh9B,MAGJ1H,EAAAA,EAAAA,GAKQ,QALR6H,GAKQ,WAJJ7H,EAAAA,EAAAA,GACkD,SAD3CgB,KAAK,WAAWlB,GAAG,OAAOoB,MAAM,O,uCAAgBiC,EAAAyhC,YAAYG,KAAIjgC,GAClEiY,SAAM3Y,EAAA,MAAAA,EAAA,QAAQE,EAAAkgC,sBAAsB,U,iBADcrhC,EAAAyhC,YAAYG,SAEnE/kC,EAAAA,EAAAA,GAA+E,OAAzEU,IAAKyC,EAAAyhC,YAAYG,KAAO5hC,EAAAshC,cAAc1/B,QAAU5B,EAAAshC,cAAcC,W,WACpE18B,YAKhBhI,EAAAA,EAAAA,GAGM,MAHNiI,GAGM,CAFFI,IACArI,EAAAA,EAAAA,GAA+E,UAAvEgB,KAAK,SAASD,MAAM,gBAAiBoD,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA0gC,gBAAA1gC,EAAA0gC,kBAAA3gC,KAAgB,aAMhFnE,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,IACVr3B,EAAAA,EAAAA,IAAeuhC,I,CAcvB,QACInd,WAAY,CACRyT,OAAM,GACND,WAAU,GACVsK,YAAWA,IAEftqB,OACI,MAAO,CACHmtB,OAAQ,GACRnoB,SAAU,GACV4mB,gBAAiB,GACjBziC,KAAM,GACN+f,UAAW,GACXG,YAAa,GACb2hB,YAAa,GACbK,WAAY,GACZD,YAAa,GACbrmB,MAAO,GACPqnB,SAAU,GACVE,YAAa,GACbC,cAAe,GACfR,WAAY,GACZqB,aAAc,QACd/mB,QAAS,GACTC,KAAM,GACNC,SAAU,GACVvX,IAAK,GACLiX,SAAU,GACV3S,KAAM,GACNkT,OAAQ,GACR6mB,OAAQ,GACRzC,WAAY,GACZC,aAAc,GAGd2B,YAAa,CACTC,WAAW,EACXI,aAAa,GAEjBC,YAAa,CACTC,aAAa,EACbC,cAAc,EACdC,MAAM,GAEVN,cAAe,CACX1/B,QAAS8hB,EAAQ,OACjB6d,UAAW7d,EAAQ,QAG/B,EAEAjB,SAAU,CACNwf,eACI,OAAOphC,KAAKygC,cAAczgC,KAAKqhC,UAAY,UAAY,YAC3D,GAGJ1qB,UACI3W,KAAKmhC,OAASnhC,KAAKwhB,OAAO8f,MAAMH,YACdzgB,GAAf1gB,KAAKmhC,QACJviB,MAAM,gBAEN5e,KAAKwlB,QAAQC,KAAK,sBAEA,KAAfzlB,KAAKmhC,QACJnhC,KAAK0+B,WAAY,IACjB1+B,KAAK2+B,aAAe,KACC,KAAf3+B,KAAKmhC,QACXnhC,KAAK0+B,WAAY,IACjB1+B,KAAK2+B,aAAe,KACC,KAAf3+B,KAAKmhC,QACXnhC,KAAK0+B,WAAY,IACjB1+B,KAAK2+B,aAAe,KACC,KAAf3+B,KAAKmhC,SACXnhC,KAAK0+B,WAAY,IACjB1+B,KAAK2+B,aAAe,IAGhC,EACA9nB,QAAS,CACLmqB,iBACI,GAAIhhC,KAAKuhC,aAAc,CACnB,IAAIzkB,EAAQ,IAAIC,KACb/c,KAAKsgC,YAAYC,YAChBvgC,KAAKoa,MAAQ,QAEdpa,KAAKsgC,YAAYK,cAChB3gC,KAAKoa,MAAQ,SAEdpa,KAAK4gC,YAAYC,cAChB7gC,KAAKqa,UAAY,SAElBra,KAAK4gC,YAAYE,eAChB9gC,KAAKqa,UAAY,WAElBra,KAAK4gC,YAAYG,OAChB/gC,KAAKqa,UAAY,WAGL,IAAbra,KAAKoa,OACJpa,KAAKoa,KAAOpa,KAAKoa,KAAK8C,MAAM,GAAI,IAEhB,IAAjBld,KAAKqa,WACJra,KAAKqa,SAAWra,KAAKqa,SAAS6C,MAAM,GAAI,IAE5C,IAAIpJ,EAAO,CACP+E,MAAO7Y,KAAK6Y,MACZC,SAAU9Y,KAAK8Y,SACfwB,OAAQ+E,KAAAA,OAAgBrf,KAAK8Y,UAAUwG,WACvCriB,KAAM+C,KAAK/C,KACX+f,UAAWhd,KAAKgd,UAAUE,MAAM,EAAE,GAAK,IAAMld,KAAKgd,UAAUE,MAAM,EAAE,GAAK,IAAMld,KAAKgd,UAAUE,MAAM,GACpGC,YAAand,KAAKmd,YAClBrD,OAA2B,KAAnB9Z,KAAK6/B,WAAoB,OAAS,SAC1C1lB,QAASna,KAAKogC,YAAc,IAAMpgC,KAAKqgC,cACvCjmB,KAAMpa,KAAKoa,KACXC,SAAUra,KAAKqa,SACfvX,IAAK,EACLiX,SAAU/Z,KAAK+Z,SACf3S,KAAM,EACNmW,WAAYT,EAAMU,cAAgB,IAAMV,EAAMW,WAAa,IAAMX,EAAMY,SACvEC,UAAW3d,KAAK0+B,WAChB9gB,UAAW5d,KAAK2+B,cAEpBxjB,QAAQC,IAAIpb,KAAK2d,WACjBxC,QAAQC,IAAIpb,KAAK4d,WACjBS,GAAAA,EAAMC,KAAK,oBAAqBC,KAAKC,UAAU1K,GAAO,CAClD2K,QAAS,CACL,eAAgB,sBAErBC,MAAMO,IAELL,MAAM,iBACN3H,SAASiC,KAAO,eAAc,IAC/BkG,OAAOJ,IACN7D,QAAQ6D,MAAM,SAAUA,EAAM,GAEtC,CAEJ,EACAmhB,eACI,IAAI1oB,OAAO+pB,KAAKC,SAAS,CACrBC,WAAa5tB,IACT9T,KAAKkgC,SAAWpsB,EAAKosB,SACrBlgC,KAAKogC,YAActsB,EAAKssB,WAAW,IAExCvB,MACP,EACAO,aAGI,GAFAp/B,KAAKi/B,oBACL9jB,QAAQC,IAAIpb,KAAK6Y,OACM,IAApB7Y,KAAK8+B,aAAyC,IAApB9+B,KAAKk/B,YAE9B,YADAtgB,MAAM,cAGV,IAAI9K,EAAO,CACPhR,IAAK,EACL+V,MAAO7Y,KAAK6Y,MACZzR,KAAM,GAEViX,GAAAA,EAAMC,KAAK,oBAAqBC,KAAKC,UAAU1K,GAAO,CAClD2K,QAAS,CACL,eAAgB,sBAErBC,MAAKlC,IACJrB,QAAQC,IAAIoB,GACmB,GAA5BA,EAAI1I,KAAK6K,MAAM,WACd3e,KAAKkhC,cAAe,EACpBtiB,MAAM,kBAC6B,KAA7BpC,EAAI1I,KAAK6K,MAAM,GAAG,QACxBC,MAAM,uBAC6B,KAA7BpC,EAAI1I,KAAK6K,MAAM,GAAG,QACxBC,MAAM,uBAC4B,GAA5BpC,EAAI1I,KAAK6K,MAAM,WACrBC,MAAM,gBACV,GAER,EACA2iB,aACI,OAAyB,GAArBvhC,KAAKkhC,cACLtiB,MAAM,kBACC,GAEO,IAAd5e,KAAK6Y,OAAgC,IAAjB7Y,KAAK8Y,UAA0C,IAAxB9Y,KAAK0/B,iBAAsC,IAAb1/B,KAAK/C,MAAgC,IAAlB+C,KAAKgd,WAAuC,IAApBhd,KAAKmd,aAAwC,IAAnBnd,KAAK6/B,aACnJjhB,MAAM,iBACC,EAGf,EACA+iB,YACI,IAAI7tB,EAAO,CACPhY,GAAI,MAORuiB,GAAAA,EAAMC,KAAK,oBAAqBC,KAAKC,UAAU1K,GAAO,CAClD2K,QAAS,CACL,eAAgB,sBAErBC,MAAMO,IACLL,MAAMK,EAASnL,MACfqH,QAAQC,IAAI6D,EAASnL,KAAK,GAElC,EAGA8tB,iBACI,MAAMC,EAAQ,mBACTA,EAAMC,KAAK9hC,KAAKihC,UACG,KAAhBjhC,KAAKihC,QACLriB,MAAM,mBAEV5e,KAAKihC,OAAS,GAEtB,EAGA1B,mBACI,MAAMsC,EAAQ,uGACd1mB,QAAQC,IAAIpb,KAAK8Y,UACZ+oB,EAAMC,KAAK9hC,KAAK8Y,YACK,KAAlB9Y,KAAK8Y,UACL8F,MAAM,yBAEV5e,KAAK8Y,SAAW,GAChB9Y,KAAK0/B,gBAAkB,GAE/B,EAGAC,wBACQ3/B,KAAK8Y,WAAa9Y,KAAK0/B,kBACvB9gB,MAAM,qBACN5e,KAAK8Y,SAAW,GAChB9Y,KAAK0/B,gBAAkB,GAE/B,EAEAE,eACI,MAAMiC,EAAQ,sBACTA,EAAMC,KAAK9hC,KAAK/C,QACC,KAAd+C,KAAK/C,MACL2hB,MAAM,mBAEV5e,KAAK/C,KAAO,GAEpB,EAGA+iC,oBACI,MAAM6B,EAAQ,oEAERE,EAAOC,SAAShiC,KAAKgd,UAAUilB,UAAU,EAAG,IAC5CC,EAAQF,SAAShiC,KAAKgd,UAAUilB,UAAU,EAAG,IAC7CE,EAAMH,SAAShiC,KAAKgd,UAAUilB,UAAU,EAAG,IAG3CG,EAAcL,EAAO,IAAM,GAAKA,EAAO,MAAQ,GAAOA,EAAO,MAAQ,EAErEM,EAAc,CAAC,GAAID,EAAa,GAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE7EE,EAAaH,EAAM,GAAKA,GAAOE,EAAYH,EAAQ,GACpDL,EAAMC,KAAK9hC,KAAKgd,YAAeslB,IACT,KAAnBtiC,KAAKgd,WACL4B,MAAM,wBAEV5e,KAAKgd,UAAY,GAEzB,EAGAijB,sBACI,MAAM4B,EAAQ,aACTA,EAAMC,KAAK9hC,KAAKmd,eACQ,KAArBnd,KAAKmd,aACLyB,MAAM,yBAEV5e,KAAKmd,YAAc,GAE3B,EAGA6hB,qBACI,MAAM6C,EAAQ,sBACTA,EAAMC,KAAK9hC,KAAK8+B,eACQ,KAArB9+B,KAAK8+B,aACLlgB,MAAM,uBAEV5e,KAAK8+B,YAAc,GAE3B,EAGAG,oBACIj/B,KAAKkhC,cAAe,EACpBlhC,KAAKk/B,YAAcl/B,KAAKm/B,WACxBn/B,KAAK6Y,MAAQ7Y,KAAK8+B,YAAc,IAAM9+B,KAAKk/B,WAC/C,EAEAsB,wBACIxgC,KAAKqhC,WAAarhC,KAAKqhC,SAC3B,ICpjBR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,UCRSvlC,GAAG,qB,kxGAARC,EAAAA,EAAAA,IAiHM,MAjHNE,GAiHM,CAhHFoD,IA8GAnD,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,I,CAWd,QAEIjT,WAAY,CACRwT,WAAaA,GACbC,OAASA,KCzHrB,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,UCRSj4B,GAAG,wB,i6CAARC,EAAAA,EAAAA,IA0DM,MA1DNE,GA0DM,CAzDFoD,IAsDAnD,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,IACVr3B,EAAAA,EAAAA,IAAeuhC,I,CAYnB,QACInd,WAAY,CACRwT,WAAU,GACVC,OAAM,GACNqK,YAAWA,KCnEvB,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,iECRStiC,GAAG,kB,IACCA,GAAG,e,IACCiB,MAAM,oB,YACPf,EAAAA,EAAAA,GAIS,gBAHLA,EAAAA,EAAAA,GAAoB,UAAhB,gBACJA,EAAAA,EAAAA,GAC8B,mBAD3B,gBAAWA,EAAAA,EAAAA,GAAI,kDACQ,K,IAGzBe,MAAM,Y,IAWLs1B,OAAO,GAAGv2B,GAAG,Y,YACfE,EAAAA,EAAAA,GAAmC,SAA5BgB,KAAK,SAASC,KAAK,U,eACrBF,MAAM,qB,IACAI,IAAI,Y,YAEPnB,EAAAA,EAAAA,GAAqB,WAAhB,cAAU,K,IAGZmB,IAAI,Y,YAEPnB,EAAAA,EAAAA,GAAkB,WAAb,WAAO,K,IAMlBq2B,OAAO,GAAGv2B,GAAG,WAAWiB,MAAM,a,+dAChCyD,I,IAeE6xB,OAAO,GAAGv2B,GAAG,WAA2CiB,MAAM,e,8vCAChEU,I,IAiCCV,MAAM,W,IACCjB,GAAG,U,IACHA,GAAG,UAAUiB,MAAM,c,yHAxF3ChB,EAAAA,EAAAA,IAgGM,MAhGNE,GAgGM,EA/FFD,EAAAA,EAAAA,GA4FM,MA5FNqD,GA4FM,EA3FFrD,EAAAA,EAAAA,GA0FM,MA1FNc,GA0FM,CAzFFwC,IAMAtD,EAAAA,EAAAA,GASM,MATNuD,GASM,EARFvD,EAAAA,EAAAA,GAOK,YANDA,EAAAA,EAAAA,GAEK,MAFDe,MAAM,KAAMoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEa,EAAAqhC,aAAArhC,EAAAqhC,eAAAliC,K,EACnBnE,EAAAA,EAAAA,IAAqDC,EAAA,CAAxCC,GAAG,kBAAgB,C,kBAAC,IAAM,UAAN,a,SAErCJ,EAAAA,EAAAA,GAEK,MAFAmE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEa,EAAAshC,aAAAthC,EAAAshC,eAAAniC,K,EACRnE,EAAAA,EAAAA,IAAsDC,EAAA,CAAzCC,GAAG,kBAAgB,C,kBAAC,IAAO,UAAP,c,aAK7CJ,EAAAA,EAAAA,GAaO,OAbPyD,GAaO,CAZHC,IACA1D,EAAAA,EAAAA,GAUM,MAVN2D,GAUM,EATF3D,EAAAA,EAAAA,GAGQ,QAHR4D,GAGQ,WAFJ5D,EAAAA,EAAAA,GAAiH,SAA1GgB,KAAK,QAAQlB,GAAG,WAAWmB,KAAK,S,qCAAkBkC,EAAAiG,SAAQtE,GAAE5D,MAAM,UAAU6D,QAAA,GAASgY,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAe,aAAAf,EAAAe,eAAAhB,K,iBAA3ClB,EAAAiG,YACzD/H,MAGJrB,EAAAA,EAAAA,GAGQ,QAHR6D,GAGQ,WAFJ7D,EAAAA,EAAAA,GAAyG,SAAlGgB,KAAK,QAAQlB,GAAG,WAAWmB,KAAK,S,qCAAkBkC,EAAAiG,SAAQtE,GAAE5D,MAAM,UAAW6b,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAe,aAAAf,EAAAe,eAAAhB,K,iBAAnClB,EAAAiG,YACzD9H,UAAkB,SAM9BtB,EAAAA,EAAAA,GAaO,OAbPod,GAaO5b,GAAA,YAb8D,YAAb2B,EAAAiG,aAAQ,SAgBhEpJ,EAAAA,EAAAA,GAgCO,OAhCP0E,GAgCOE,GAAA,YAhC4C,YAAbzB,EAAAiG,aAkCtCpJ,EAAAA,EAAAA,GAKM,MALNqjC,GAKM,EAJFrjC,EAAAA,EAAAA,GAA6E,SAA7E2B,GAA6E,EAAzDzB,EAAAA,EAAAA,IAAgDC,EAAA,CAAnCC,GAAG,iBAAe,C,kBAAC,IAAE,UAAF,S,SACpDJ,EAAAA,EAAAA,GAES,SAFTwjC,GAES,EADLtjC,EAAAA,EAAAA,IAAuDC,EAAA,CAA1CC,GAAG,wBAAsB,C,kBAAC,IAAE,UAAF,S,eAKvDF,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,I,CAYlB,QACIjT,WAAY,CACRwT,WAAaA,GACbC,OAASA,IAEbjgB,OACI,MAAO,CACH1O,SAAS,UAEjB,EACAyR,QAAS,CACLxV,YAAY8f,GACRnhB,KAAKoF,SAAW+b,EAAM7K,OAAOpZ,KAEjC,ICnHR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,iECRSpB,GAAG,kB,IACCA,GAAG,e,IACCiB,MAAM,oB,YACPf,EAAAA,EAAAA,GAIS,gBAHLA,EAAAA,EAAAA,GAAoB,UAAhB,gBACJA,EAAAA,EAAAA,GAC8B,mBAD3B,gBAAWA,EAAAA,EAAAA,GAAI,kDACQ,K,IAGzBe,MAAM,Y,IAWLs1B,OAAO,GAAGv2B,GAAG,Y,YACfE,EAAAA,EAAAA,GAAmC,SAA5BgB,KAAK,SAASC,KAAK,U,eACrBF,MAAM,qB,IACAI,IAAI,Y,YAGPnB,EAAAA,EAAAA,GAAqB,WAAhB,cAAU,K,IAGZmB,IAAI,Y,YAEPnB,EAAAA,EAAAA,GAAkB,WAAb,WAAO,K,IAMlBq2B,OAAO,GAAGv2B,GAAG,WAA2CiB,MAAM,a,u8BAChEyD,I,IA4BE6xB,OAAO,GAAGv2B,GAAG,WAA2CiB,MAAM,e,4yDAChE6D,I,IAiDC7D,MAAM,W,IACCjB,GAAG,U,IACHA,GAAG,UAAUiB,MAAM,c,mJAtH3ChB,EAAAA,EAAAA,IA+HM,MA/HNE,GA+HM,EA9HFD,EAAAA,EAAAA,GA0HM,MA1HNqD,GA0HM,EAzHFrD,EAAAA,EAAAA,GAwHM,MAxHNc,GAwHM,CAvHFwC,IAMAtD,EAAAA,EAAAA,GASM,MATNuD,GASM,EARFvD,EAAAA,EAAAA,GAOK,YANDA,EAAAA,EAAAA,GAEK,MAFAmE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEa,EAAAqhC,aAAArhC,EAAAqhC,eAAAliC,K,EACRnE,EAAAA,EAAAA,IAAqDC,EAAA,CAAxCC,GAAG,kBAAgB,C,kBAAC,IAAM,UAAN,a,SAErCJ,EAAAA,EAAAA,GAEK,MAFDe,MAAM,KAAOoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEa,EAAAshC,aAAAthC,EAAAshC,eAAAniC,K,EACpBnE,EAAAA,EAAAA,IAAsDC,EAAA,CAAzCC,GAAG,kBAAgB,C,kBAAC,IAAO,UAAP,c,aAK7CJ,EAAAA,EAAAA,GAcO,OAdPyD,GAcO,CAbHC,IACA1D,EAAAA,EAAAA,GAWM,MAXN2D,GAWM,EAVF3D,EAAAA,EAAAA,GAIQ,QAJR4D,GAIQ,WAFJ5D,EAAAA,EAAAA,GAAiH,SAA1GgB,KAAK,QAAQlB,GAAG,WAAWmB,KAAK,S,qCAAkBkC,EAAAiG,SAAQtE,GAAE5D,MAAM,UAAU6D,QAAA,GAASgY,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAe,aAAAf,EAAAe,eAAAhB,K,iBAA3ClB,EAAAiG,YACzD/H,MAGJrB,EAAAA,EAAAA,GAGQ,QAHR6D,GAGQ,WAFJ7D,EAAAA,EAAAA,GAAyG,SAAlGgB,KAAK,QAAQlB,GAAG,WAAWmB,KAAK,S,qCAAkBkC,EAAAiG,SAAQtE,GAAE5D,MAAM,UAAW6b,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAe,aAAAf,EAAAe,eAAAhB,K,iBAAnClB,EAAAiG,YACzD9H,UAAkB,SAM9BtB,EAAAA,EAAAA,GA0BO,OA1BPod,GA0BO3b,GAAA,YA1B4C,YAAb0B,EAAAiG,aAAQ,SA6B9CpJ,EAAAA,EAAAA,GAgDO,OAhDP6xB,GAgDO4R,GAAA,YAhD4C,YAAbtgC,EAAAiG,aAkDtCpJ,EAAAA,EAAAA,GAKM,MALN6B,GAKM,EAJF7B,EAAAA,EAAAA,GAA6E,SAA7E+xB,GAA6E,EAAzD7xB,EAAAA,EAAAA,IAAgDC,EAAA,CAAnCC,GAAG,iBAAe,C,kBAAC,IAAE,UAAF,S,SACpDJ,EAAAA,EAAAA,GAES,SAFTsF,GAES,EADLpF,EAAAA,EAAAA,IAAuDC,EAAA,CAA1CC,GAAG,wBAAsB,C,kBAAC,IAAE,UAAF,S,eAKvDF,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,IACVr3B,EAAAA,EAAAA,IAAeuhC,I,CAavB,QACInd,WAAY,CACRwT,WAAU,GACVC,OAAM,GACNqK,YAAWA,IAEftqB,OACI,MAAO,CACH1O,SAAS,UAEjB,EACAyR,QAAS,CACLxV,YAAY8f,GACRnhB,KAAKyiC,QAAUthB,EAAM7K,OAAOpZ,KAChC,ICnJR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,iECRSpB,GAAG,kB,IACCA,GAAG,e,IACCiB,MAAM,oB,YACPf,EAAAA,EAAAA,GAIS,gBAHLA,EAAAA,EAAAA,GAAoB,UAAhB,gBACJA,EAAAA,EAAAA,GAC8B,mBAD3B,gBAAWA,EAAAA,EAAAA,GAAI,kDACQ,K,YAG9BA,EAAAA,EAAAA,GASM,aARFA,EAAAA,EAAAA,GAII,WAHAA,EAAAA,EAAAA,GAEO,sBAFD,cAASA,EAAAA,EAAAA,GAAI,OACfA,EAAAA,EAAAA,GAAqB,cAAb,aAGhBA,EAAAA,EAAAA,GAEO,sBAFD,QAAGA,EAAAA,EAAAA,GAAI,OACTA,EAAAA,EAAAA,GAA2B,cAAnB,kBAAU,K,IAIrBe,MAAM,iB,yHApBvBhB,EAAAA,EAAAA,IA8BM,MA9BNE,GA8BM,EA7BFD,EAAAA,EAAAA,GA0BM,MA1BNqD,GA0BM,EAzBFrD,EAAAA,EAAAA,GAwBM,MAxBNc,GAwBM,CAvBFwC,GAMAC,IAWAvD,EAAAA,EAAAA,GAKM,MALNyD,GAKM,EAJFzD,EAAAA,EAAAA,GAES,gBADLE,EAAAA,EAAAA,IAAiDC,EAAA,CAApCC,GAAG,iBAAe,C,kBAAC,IAAG,UAAH,U,SAEpCF,EAAAA,EAAAA,IAA2EC,EAAA,CAA9DC,GAAG,iBAAiBW,MAAM,gB,mBAAe,IAAO,UAAP,c,aAIlEb,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,I,CAYlB,QACIjT,WAAY,CACRwT,WAAaA,GACbC,OAASA,KCtCjB,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,qCCcA,MAAMza,GAAY,uBACZopB,GAAgB,aAGtB,QACE5uB,OACE,MAAO,CACLkH,YAAa,GACbnC,MAAO,GACPkB,SAAU,GACVje,GAAI,GACJmB,KAAM,GACN6c,OAAQ,GACR6oB,IAAK,GACLhmB,SAAU,GACVM,UAAW,GACX2lB,OAAQ,GACR9pB,SAAU,GACVsB,KAAM,GACNC,SAAU,GACVF,QAAS,GACTgD,YAAa,GACb/V,KAAM,GACN8S,SAAU,GACV2oB,aAAc,GACdllB,UAAW,GACXC,UAAW,GACX+V,WAAY,KACZ7W,MAAO,IAAIC,KAEf,EACApG,UACE3W,KAAK2zB,WAAa,IAAIlc,OAAO+C,eAAelB,GAAWtZ,KAAKmZ,WAAa,YACzEnZ,KAAKgb,YAAchb,KAAK2zB,WAAW1Y,YAAYC,aAC/CC,QAAQC,IAAI,sBAAuBpb,KAAKgb,aACxC,IAAI6C,EAAa,IAAId,KACrBc,EAAWC,QAAQD,EAAWE,UAAa,OAE3C/d,KAAK8iC,UACP,EACAjsB,QAAS,CACPksB,MACE/iC,KAAK2zB,WAAWqP,sBAAsBhjC,KAAKijC,sBAC7C,EACAA,sBACErkB,MAAM5e,KAAK2zB,WAAWuP,eAAe,UACrCtkB,MAAM5e,KAAK2zB,WAAWuP,eAAe,YACvC,EAGA/mB,uBAiBQkC,GAAAA,EAAMC,KAAK,qBAAsBte,KAAKgb,YAAa,CACvDyD,QAAS,CACP,eAAgB,mBAChB,8BAA+B,IAC/B,+BAAgC,yCAChC,mCAAoC,UAItCC,MAAKlC,IACLrB,QAAQC,IAAI,WAAYoB,EAAI1I,KAAK,OACjCqH,QAAQC,WAAWoB,GAEnBwB,GAAAA,EAAQC,IAAI,QAASje,KAAKgb,YAAa,CAAEkD,QAASle,KAAK6d,WAAYM,OAAQne,KAAKoe,QAAShE,KAAM,MAE/Fpa,KAAK/C,KAAOuf,EAAI1I,KAAK,QACrB9T,KAAK6Y,MAAQ2D,EAAI1I,KAAK,SACtB9T,KAAK8Z,OAA+B,KAAtB0C,EAAI1I,KAAK,UAAmB,SAAW,OACrD9T,KAAK2iC,IAAMnmB,EAAI1I,KAAK,OACpB9T,KAAK+Z,SAAWyC,EAAI1I,KAAK,YACzB9T,KAAKmd,YAAcX,EAAI1I,KAAK,UAAUwJ,QAAQ,KAAM,IACpDtd,KAAKgd,UAAYR,EAAI1I,KAAK,aAAe,IAAM0I,EAAI1I,KAAK,WAAW,IAGrEqH,QAAQC,IAAIpb,KAAKmd,aAEjB,IAAIgmB,EAAQ,CACVrgC,IAAK,EACL7F,KAAM+C,KAAK/C,KACX+f,UAAWhd,KAAKgd,UAChBG,YAAand,KAAKmd,YAClBtE,MAAO7Y,KAAK6Y,MACZiB,OAAQ9Z,KAAK8Z,OACbC,SAAU/Z,KAAK+Z,SACfjB,SAAU9Y,KAAK8Y,SACfsB,KAAMpa,KAAKoa,KACXC,SAAUra,KAAKqa,SACfF,QAASna,KAAKma,QACd/S,KAAM,EACNwV,MAAO5c,KAAKgb,YACZuC,WAAYvd,KAAK8c,MAAMU,cAAgB,IAAMxd,KAAK8c,MAAMW,WAAa,IAAMzd,KAAK8c,MAAMY,SACtFpD,OAAQ,GACRqD,UAAW,GACXC,UAAW,IAGTwlB,EAAQ,CACVh8B,KAAM,EACNyR,MAAO7Y,KAAK6Y,aAGRwF,GAAAA,EAAMC,KAAK,uBAAwBC,KAAKC,UAAU4kB,GAAQ,CAC9D3kB,QAAS,CACP,eAAgB,sBAEjBC,MAAKlC,IACNrB,QAAQC,IAAIoB,EAAI1I,MACgB,GAA5B0I,EAAI1I,KAAK6K,MAAM,UACjB3e,KAAKka,SAAW,EAGoB,GAA7BsC,EAAI1I,KAAK6K,MAAM,GAAG,QACzB3e,KAAKka,SAAW,EAGoB,GAA7BsC,EAAI1I,KAAK6K,MAAM,GAAG,UACzB3e,KAAKka,SAAW,EAChB0E,MAAM,qBACN5e,KAAK6e,cACP,IAEmB,GAAjB7e,KAAKka,gBACDmE,GAAAA,EAAMC,KAAK,oBAAqBC,KAAKC,UAAU2kB,GAAQ,CAC3D1kB,QAAS,CACP,eAAgB,sBAEjBC,MAAKlC,IAEJ,IAIe,GAAjBxc,KAAKka,gBACDmE,GAAAA,EAAMC,KAAK,qBAAsBC,KAAKC,UAAU2kB,GAAQ,CAC5D1kB,QAAS,CACP,eAAgB,sBAEjBC,MAAKlC,IACNoC,MAAM,UACNnH,OAAO3T,QACPu/B,OAAOpsB,SAASC,QAAQ,GAM9B,EACAosB,MAAMja,GAAM,MAAMka,EAAaxmB,KAAKymB,MAAQna,EAAI,MAAOtM,KAAKymB,MAAQD,GAAgB,EAEpF1jB,SACE,MAAMvD,EAAO,+CAA8ChD,oBAA2BopB,mBAA8B1iC,KAAKgb,qCAEzHqD,GAAAA,EAAMc,IAAI7C,GAAKoC,MAAMlC,IACnBrB,QAAQC,IAAIoB,EAAI1I,MAChBwH,SAAS4D,OAAS,SAClBukB,GAAOhe,KAAK,CAAErL,KAAM,gBAAiB,GAEzC,IChMJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,UCNIpe,EAAAA,EAAAA,GAAa,SAAV,UAAM,G,8DAATC,IACAD,EAAAA,EAAAA,GAAiD,UAAxCmE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAojC,kBAAApjC,EAAAojC,oBAAArjC,KAAkB,WAAM,G,CAI5C,QAEIyT,OACI,MAAO,CACH6vB,OAAQ,GACRjnB,WAAY,GACZknB,WAAY,GACZC,YAAa,GACbC,WAAY,GACZlqB,MAAO,GACPC,MAAO,GACP/W,IAAK,GAEb,EACA6T,UAEI3W,KAAK2jC,OAAS3jC,KAAKwhB,OAAO8f,MAAMqC,OAChC,IAAI/E,EAAM5+B,KAAK2jC,OAAOtmB,MAAM,KAC5BlC,QAAQC,IAAIpb,KAAK2jC,QAEjB3jC,KAAK0c,WAAakiB,EAAI,GACtB5+B,KAAK4jC,WAAa5jC,KAAK0c,WAAWulB,UAAU,EAAG,GAC/CjiC,KAAK6jC,YAAc7jC,KAAK0c,WAAWulB,UAAU,EAAG,GAChDjiC,KAAK8jC,WAAa9jC,KAAK0c,WAAWulB,UAAU,EAAG,GAC/CjiC,KAAK4Z,MAAQ5Z,KAAK4jC,WAAa,IAAM5jC,KAAK6jC,YAAc,IAAM7jC,KAAK8jC,WAEnE9jC,KAAK6Z,MAAQ+kB,EAAI,GAEjBzjB,QAAQC,IAAIpb,KAAK4Z,OACjBuB,QAAQC,IAAIpb,KAAK6Z,MAqBrB,EACAhD,QAAS,CAQL6sB,mBAEI1jC,KAAK8e,MAAM,aAAc,QAC7B,IC/DR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,qCCFA,QAEIhL,OACI,MAAO,CACH6vB,OAAQ,GAEhB,EACAhtB,UAEI3W,KAAKmhC,OAASnhC,KAAKwhB,OAAO8f,MAAMH,OAChChmB,QAAQC,IAAIpb,KAAKmhC,QAEjB1pB,OAAOR,SAASiC,KAAOlZ,KAAK+jC,SAAW,kCAAoC/jC,KAAKmhC,MAKpF,EACAtqB,QAAS,CACLsF,iBACI,ICpBZ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,iECNSrgB,GAAG,kB,IACCA,GAAG,e,IACCiB,MAAM,oB,YACPf,EAAAA,EAAAA,GAIS,gBAHLA,EAAAA,EAAAA,GAAe,UAAX,WACJA,EAAAA,EAAAA,GACiC,mBAD9B,WAAMA,EAAAA,EAAAA,GAAI,iDACgB,K,IAK5Be,MAAM,W,IACCjB,GAAG,U,yHAZ3BC,EAAAA,EAAAA,IAoBM,MApBNE,GAoBM,EAnBFD,EAAAA,EAAAA,GAgBM,MAhBNqD,GAgBM,EAfFrD,EAAAA,EAAAA,GAcM,MAdNc,GAcM,CAbFwC,IAQAtD,EAAAA,EAAAA,GAIM,MAJNuD,GAIM,EAHFvD,EAAAA,EAAAA,GAA6E,SAA7EyD,GAA6E,EAAzDvD,EAAAA,EAAAA,IAAgDC,EAAA,CAAnCC,GAAG,iBAAe,C,kBAAC,IAAE,UAAF,S,SACpDJ,EAAAA,EAAAA,GACS,UADDF,GAAG,UAAUiB,MAAM,aAAcoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAk9B,SAAAl9B,EAAAk9B,WAAAn9B,KAAS,gBAKrEnE,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,I,CAalB,QACIjT,WAAY,CACRwT,WAAYA,GACZC,OAAQA,GACRiQ,UAASA,IAEblwB,OACI,MAAO,CACH1O,SAAU,UACV6+B,aAAc,GAEtB,EACAptB,QAAS,CACLxV,YAAY8f,GACRnhB,KAAKoF,SAAW+b,EAAM7K,OAAOpZ,KAEjC,EACAsgC,UACI/lB,OAAOonB,KAAK,uBAAwB,GAAI,sIAE5C,EACAqF,iBAAiBC,GACbhpB,QAAQC,IAAI,QACZpb,KAAKikC,aAAeE,CACxB,IClDR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,iECRSroC,GAAG,kB,IACCA,GAAG,e,IACCiB,MAAM,oB,YACPf,EAAAA,EAAAA,GAIS,gBAHLA,EAAAA,EAAAA,GAAe,UAAX,WACJA,EAAAA,EAAAA,GACiC,mBAD9B,WAAMA,EAAAA,EAAAA,GAAI,iDACgB,K,uBAI7BA,EAAAA,EAAAA,GAEI,SAFD,sBAEH,K,IAFAyD,I,uBAOmBzD,EAAAA,EAAAA,GAAI,qB,YAQVA,EAAAA,EAAAA,GAAI,qB,IAMhBe,MAAM,iB,YAWvBf,EAAAA,EAAAA,GAGM,sB,6IA7CNA,EAAAA,EAAAA,GAyCM,MAzCNC,GAyCM,EAxCFD,EAAAA,EAAAA,GAqCM,MArCNqD,GAqCM,EApCFrD,EAAAA,EAAAA,GAmCM,MAnCNc,GAmCM,CAlCFwC,GAMoB,IAATH,EAAA0Z,QAAK,WAAhB9c,EAAAA,EAAAA,IAIM,MAAAwD,GAAAG,MAAA,eAEc,IAATP,EAAA0Z,QAAK,WAAhB9c,EAAAA,EAAAA,IAcM,MAAA4D,GAAA,EAbF3D,EAAAA,EAAAA,GAII,WAHAA,EAAAA,EAAAA,GAEO,sBAFD,aAAS4D,IACX5D,EAAAA,EAAAA,GAAiC,eAAAoH,EAAAA,EAAAA,IAAtBjE,EAAA0Z,OAAQ,QAAK,QAGhC7c,EAAAA,EAAAA,GAOI,WAHAA,EAAAA,EAAAA,GAEO,sBAFD,OAAGqB,IACLrB,EAAAA,EAAAA,GAA+B,eAAAoH,EAAAA,EAAAA,IAApBjE,EAAAilC,UAAQ,2BAK/BpoC,EAAAA,EAAAA,GAKM,MALN6D,GAKM,EAJF7D,EAAAA,EAAAA,GAES,gBADLE,EAAAA,EAAAA,IAAiDC,EAAA,CAApCC,GAAG,iBAAe,C,kBAAC,IAAG,UAAH,U,QAEoC,IAAT+C,EAAA0Z,QAAK,WAApEmH,EAAAA,EAAAA,IAAiG7jB,EAAA,C,MAApFC,GAAG,oBAAoBW,MAAM,gB,mBAAkC,IAAO,UAAP,c,8BAIxFb,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,KAEdj2B,IAGM,G,CAcV,QACIgjB,WAAY,CACRwT,WAAYA,GACZC,OAAQA,GACRiQ,UAASA,IAEblwB,OACI,MAAO,CACH+E,MAAO,GACPgB,MAAO,GACP8pB,OAAQ,GACRxC,OAAQ,GACRiD,SAAU,GACVh9B,KAAM,GAEd,EACAuP,UAEI3W,KAAK2jC,OAAS3jC,KAAKwhB,OAAO8f,MAAMqC,OAChC3jC,KAAKmhC,OAASnhC,KAAKwhB,OAAO8f,MAAMH,OAEhChmB,QAAQC,IAAIpb,KAAK2jC,QACjBxoB,QAAQC,IAAIpb,KAAKmhC,QAEjBnhC,KAAKqkC,WACT,EACAxtB,QAAS,CAELwtB,YAEI,IAAIvwB,EAAO,CACPkJ,UAAWhd,KAAK2jC,OAChBxmB,YAAand,KAAKmhC,OAClB/5B,KAAM,GAEViX,GAAAA,EAAMC,KAAK,qBAAsBC,KAAKC,UAAU1K,GAAO,CAEnD2K,QAAS,CACL,eAAgB,sBAErBC,MAAKlC,IACJrB,QAAQC,IAAIoB,EAAI1I,KAAK6K,OACU,GAA5BnC,EAAI1I,KAAK6K,MAAM,WACd3e,KAAK6Y,MAAQ2D,EAAI1I,KAAK6K,MAAM,GAAG,cAC/B3e,KAAK6Z,MAAQ2C,EAAI1I,KAAK6K,MAAM,GAAG,SAC/B3e,KAAKokC,SAAW5nB,EAAI1I,KAAK6K,MAAM,GAAG,WAAWtB,MAAM,KAAK,IAEvDrd,KAAK6Y,MAAQ,GAClBsC,QAAQC,IAAIpb,KAAK6Y,OACjBsC,QAAQC,IAAIpb,KAAK6Z,OACjBsB,QAAQC,IAAIpb,KAAKokC,SAAS,GAElC,ICzGR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,iECRStoC,GAAG,kB,IACCA,GAAG,e,IAECiB,MAAM,oB,YACPf,EAAAA,EAAAA,GAIS,gBAHLA,EAAAA,EAAAA,GAAgB,UAAZ,YACJA,EAAAA,EAAAA,GACoB,SADjB,mBACa,K,uBAIhBA,EAAAA,EAAAA,GAEI,SAFD,sBAEH,K,IAFAyD,I,UAME4yB,OAAO,GAAGv2B,GAAG,WAAWiB,MAAM,a,IACzBI,IAAI,SAASrB,GAAG,SAASmB,KAAK,U,YACjCjB,EAAAA,EAAAA,GAAgB,YAAV,OAAG,K,IAGNmB,IAAI,SAASrB,GAAG,SAASmB,KAAK,U,YACjCjB,EAAAA,EAAAA,GAAmB,YAAb,UAAM,K,IAITmB,IAAI,SAASrB,GAAG,SAASmB,KAAK,U,YACjCjB,EAAAA,EAAAA,GAAsB,YAAhB,aAAS,K,IAOlBe,MAAM,W,IACCjB,GAAG,U,mJApC3BC,EAAAA,EAAAA,IA8CM,MA9CNE,GA8CM,EA7CFD,EAAAA,EAAAA,GAyCM,MAzCNqD,GAyCM,EAvCFrD,EAAAA,EAAAA,GAsCM,MAtCNc,GAsCM,CArCFwC,GAMoB,IAATH,EAAA0Z,QAAK,WAAhB9c,EAAAA,EAAAA,IAIM,MAAAwD,GAAAG,MAAA,eAGyD,IAATP,EAAA0Z,QAAK,WAA3D9c,EAAAA,EAAAA,IAgBO,OAhBP4D,GAgBO,EAfH3D,EAAAA,EAAAA,GAGQ,QAHR4D,GAGQ,CAFJvC,IAAgB,SAChBrB,EAAAA,EAAAA,GAAsE,SAA/DgB,KAAK,OAAOlB,GAAG,SAASmB,KAAK,S,qCAAkBkC,EAAA0Z,MAAK/X,GAAE0tB,SAAA,I,iBAAPrvB,EAAA0Z,YAE1D7c,EAAAA,EAAAA,GAGQ,QAHR6D,GAGQ,CAFJvC,IAAmB,SACnBtB,EAAAA,EAAAA,GAAoE,SAA7DgB,KAAK,WAAWlB,GAAG,SAASmB,KAAK,S,qCAAkBkC,EAAA2Z,SAAQhY,I,iBAAR3B,EAAA2Z,eAG9D9c,EAAAA,EAAAA,GAGQ,QAHRod,GAGQ,CAFJ5Y,IAAsB,SACtBxE,EAAAA,EAAAA,GAA2E,SAApEgB,KAAK,WAAWlB,GAAG,SAASmB,KAAK,S,qCAAkBkC,EAAAugC,gBAAe5+B,I,iBAAf3B,EAAAugC,yBAAe,gBAMjF1jC,EAAAA,EAAAA,GAKM,MALNyE,GAKM,EAJFzE,EAAAA,EAAAA,GAA6E,SAA7EwB,GAA6E,EAAzDtB,EAAAA,EAAAA,IAAgDC,EAAA,CAAnCC,GAAG,iBAAe,C,kBAAC,IAAE,UAAF,S,QAC0B,IAAT+C,EAAA0Z,QAAK,WAA1E9c,EAAAA,EAAAA,IAES,U,MAFDD,GAAG,UAAUiB,MAAM,aAAcoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAgkC,eAAAhkC,EAAAgkC,iBAAAjkC,KAAkC,eAElF,sBAIZnE,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,IACVr3B,EAAAA,EAAAA,IAAeuhC,I,CAevB,QACInd,WAAY,CACRwT,WAAU,GACVC,OAAM,GACNqK,YAAWA,IAEftqB,OACI,MAAO,CACH+E,MAAO,GACPC,SAAU,GACV4mB,gBAAiB,GACjBiE,OAAQ,GACRxC,OAAQ,GAEhB,EACAxqB,UACI3W,KAAKixB,aACT,EACApa,QAAS,CACLoa,cACIjxB,KAAK2jC,OAAS3jC,KAAKwhB,OAAO8f,MAAMqC,OAChC3jC,KAAKmhC,OAASnhC,KAAKwhB,OAAO8f,MAAMH,OAGhC9iB,GAAAA,EAAMC,KAAK,qBACN,mBAAkBte,KAAK2jC,4BAA4B3jC,KAAKmhC,yBAAyBziB,MAAKlC,IACnF,GAAgC,GAA5BA,EAAI1I,KAAK6K,MAAM,UAAgB,CAC/B,IAAI4lB,EAAa/nB,EAAI1I,KAAK6K,MAAM,GAAG,cAActB,MAAM,KAAK,GACxDmnB,EAAahoB,EAAI1I,KAAK6K,MAAM,GAAG,cAActB,MAAM,KAAK,GAC5Drd,KAAK6Y,MAAQ0rB,EAAWrnB,MAAM,EAAG,GAAK,YAAcsnB,EAAWtnB,MAAM,EAAG,GAAK,SAAWsnB,EAAWtnB,OAAO,EAC9G,MAEIld,KAAK6Y,MAAQ,EACjB,GAEZ,EACAyrB,gBACI,GAAItkC,KAAK8Y,UAAY9Y,KAAK0/B,gBACtB9gB,MAAM,uBAEL,CACD,IAAI9K,EAAO,CACPwG,OAAQ+E,KAAAA,OAAgBrf,KAAK8Y,UAAUwG,WACvCtC,UAAWhd,KAAK2jC,OAChBxmB,YAAand,KAAKmhC,QAEtB9iB,GAAAA,EAAMC,KAAK,wBAAyBC,KAAKC,UAAU1K,GAAO,CAEtD2K,QAAS,CACL,eAAgB,sBAErBC,MAAKlC,IACJrB,QAAQC,IAAIoB,EAAI1I,MACiB,KAA7B0I,EAAI1I,KAAK6K,MAAM,GAAG,SAClBC,MAAM,iBACNnH,OAAOR,SAASiC,KAAO,iBACa,KAA7BsD,EAAI1I,KAAK6K,MAAM,GAAG,QACzBC,MAAM,qCAC8B,KAA7BpC,EAAI1I,KAAK6K,MAAM,GAAG,SACzBC,MAAM,oCACV,GAGR,CAEJ,ICvHR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,qCCDA,QACI9K,OACI,MAAO,CACH6vB,OAAQ,GACRxC,OAAQ,GACRzkB,WAAY,GACZknB,WAAY,GACZC,YAAa,GACbC,WAAY,GACZlqB,MAAO,GACPC,MAAO,GACP/W,IAAK,GAEb,EACA6T,UACI3W,KAAK2jC,OAAS3jC,KAAKwhB,OAAO8f,MAAMqC,OAChC3jC,KAAKmhC,OAASnhC,KAAKwhB,OAAO8f,MAAMH,OAEhC,IAAIvC,EAAM5+B,KAAK2jC,OAAOtmB,MAAM,KAC5BlC,QAAQC,IAAI,YAAYpb,KAAK2jC,QAC7BxoB,QAAQC,IAAI,YAAYpb,KAAKmhC,QAC7BnhC,KAAK0c,WAAakiB,EAAI,GACtB5+B,KAAK4jC,WAAa5jC,KAAK0c,WAAWulB,UAAU,EAAG,GAC/CjiC,KAAK6jC,YAAc7jC,KAAK0c,WAAWulB,UAAU,EAAG,GAChDjiC,KAAK8jC,WAAa9jC,KAAK0c,WAAWulB,UAAU,EAAG,GAC/CjiC,KAAK4Z,MAAQ5Z,KAAK4jC,WAAa,IAAM5jC,KAAK6jC,YAAc,IAAM7jC,KAAK8jC,WAEnE9jC,KAAK6Z,MAAQ+kB,EAAI,GAEjB,IAAI9qB,EAAO,CACPkJ,UAAWhd,KAAK4Z,MAChBuD,YAAand,KAAK6Z,MAClB/W,IAAK,GAETqY,QAAQC,IAAItH,GACZuK,GAAAA,EAAMC,KAAK,oBAAqBC,KAAKC,UAAU1K,GAAO,CAClD2K,QAAS,CACL,eAAgB,sBAErBC,MAAKlC,IACJrB,QAAQC,IAAIoB,EAAI1I,KAAK6K,MAAM,WACK,GAA5BnC,EAAI1I,KAAK6K,MAAM,WACfC,MAAM,kBACNnH,OAAO3T,QAEPu/B,OAAOpsB,SAASiC,KAAOlZ,KAAKmZ,WAAa,2BAA6BnZ,KAAKmhC,SAE3EviB,MAAM,mBACNnH,OAAO3T,QAEPu/B,OAAOpsB,SAASiC,KAAOlZ,KAAKmZ,WAAa,eAC7C,GAIR,GC1DJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,qCCFA,QAEArF,OAEA,EACA6C,UAEIc,OAAOR,SAASiC,KAAOlZ,KAAK+jC,SAAW,yBAC3C,EACAltB,QAAS,CACT,GCVA,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,qCCAA,QACI/C,OACI,MAAO,CACH6vB,OAAQ,GACRjnB,WAAY,GACZknB,WAAY,GACZC,YAAa,GACbC,WAAY,GACZlqB,MAAO,GACPC,MAAO,GACP/W,IAAK,GAEb,EACA6T,UACIiI,MAAM,kBACNnH,OAAO3T,QAGP9D,KAAK2jC,OAAS3jC,KAAKwhB,OAAO8f,MAAMqC,OAChC,IAAI/E,EAAM5+B,KAAK2jC,OAAOtmB,MAAM,KAC5BlC,QAAQC,IAAIpb,KAAK2jC,QAEjB3jC,KAAK0c,WAAakiB,EAAI,GACtB5+B,KAAK4jC,WAAa5jC,KAAK0c,WAAWulB,UAAU,EAAG,GAC/CjiC,KAAK6jC,YAAc7jC,KAAK0c,WAAWulB,UAAU,EAAG,GAChDjiC,KAAK8jC,WAAa9jC,KAAK0c,WAAWulB,UAAU,EAAG,GAC/CjiC,KAAK4Z,MAAQ5Z,KAAK4jC,WAAa,IAAM5jC,KAAK6jC,YAAc,IAAM7jC,KAAK8jC,WAEnE9jC,KAAK6Z,MAAQ+kB,EAAI,GAEjBzjB,QAAQC,IAAIpb,KAAK4Z,OACjBuB,QAAQC,IAAIpb,KAAK6Z,OAIjBwpB,OAAOpsB,SAASiC,KAAOlZ,KAAKmZ,WAAa,iCAAmCsrB,mBAAmBzkC,KAAK4Z,OAAS,WAAa6qB,mBAAmBzkC,KAAK6Z,MACtJ,EACAhD,QAAS,CAET,GCzCJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,iECNS/a,GAAG,kB,IACCA,GAAG,e,IACCiB,MAAM,oB,YACPf,EAAAA,EAAAA,GAIS,gBAHLA,EAAAA,EAAAA,GAAgB,UAAZ,YACJA,EAAAA,EAAAA,GACmC,mBADhC,YAAOA,EAAAA,EAAAA,GAAI,mDACiB,K,IAK9Be,MAAM,W,IACCjB,GAAG,U,yHAZ3BC,EAAAA,EAAAA,IAoBM,MApBNE,GAoBM,EAnBFD,EAAAA,EAAAA,GAgBM,MAhBNqD,GAgBM,EAfFrD,EAAAA,EAAAA,GAcM,MAdNc,GAcM,CAbFwC,IAQAtD,EAAAA,EAAAA,GAIM,MAJNuD,GAIM,EAHFvD,EAAAA,EAAAA,GAA6E,SAA7EyD,GAA6E,EAAzDvD,EAAAA,EAAAA,IAAgDC,EAAA,CAAnCC,GAAG,iBAAe,C,kBAAC,IAAE,UAAF,S,SACpDJ,EAAAA,EAAAA,GACS,UADDF,GAAG,UAAUiB,MAAM,aAAcoD,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAk9B,SAAAl9B,EAAAk9B,WAAAn9B,KAAS,gBAKrEnE,EAAAA,EAAAA,IAAco3B,IACdp3B,EAAAA,EAAAA,IAAUq3B,I,CAalB,QACIjT,WAAY,CACRwT,WAAYA,GACZC,OAAQA,GACRiQ,UAASA,IAEblwB,OACI,MAAO,CACH1O,SAAU,UACV6+B,aAAc,GAEtB,EACAptB,QAAS,CACLxV,YAAY8f,GACRnhB,KAAKoF,SAAW+b,EAAM7K,OAAOpZ,KAEjC,EACAsgC,UACI/lB,OAAOonB,KAAK,sBAAuB,GAAI,sIAE3C,EACAqF,iBAAiBC,GACbhpB,QAAQC,IAAI,QACZpb,KAAKikC,aAAeE,CACxB,IClDR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,qCCJA,QAEArwB,OAEA,EACA6C,UAEIc,OAAOR,SAASiC,KAAOlZ,KAAK+jC,SAAW,2BAC3C,EACAltB,QAAS,CACT,GCVA,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,qCCAA,QACI/C,OACI,MAAO,CACH6vB,OAAQ,GACRjnB,WAAY,GACZknB,WAAY,GACZC,YAAa,GACbC,WAAY,GACZlqB,MAAO,GACPC,MAAO,GACP/W,IAAK,GAEb,EACA6T,UACIiI,MAAM,kBACNnH,OAAO3T,QAGP9D,KAAK2jC,OAAS3jC,KAAKwhB,OAAO8f,MAAMqC,OAChC,IAAI/E,EAAM5+B,KAAK2jC,OAAOtmB,MAAM,KAC5BlC,QAAQC,IAAIpb,KAAK2jC,QAEjB3jC,KAAK0c,WAAakiB,EAAI,GACtB5+B,KAAK4jC,WAAa5jC,KAAK0c,WAAWulB,UAAU,EAAG,GAC/CjiC,KAAK6jC,YAAc7jC,KAAK0c,WAAWulB,UAAU,EAAG,GAChDjiC,KAAK8jC,WAAa9jC,KAAK0c,WAAWulB,UAAU,EAAG,GAC/CjiC,KAAK4Z,MAAQ5Z,KAAK4jC,WAAa,IAAM5jC,KAAK6jC,YAAc,IAAM7jC,KAAK8jC,WAEnE9jC,KAAK6Z,MAAQ+kB,EAAI,GAEjBzjB,QAAQC,IAAIpb,KAAK4Z,OACjBuB,QAAQC,IAAIpb,KAAK6Z,OAGjBwpB,OAAOpsB,SAASiC,KAAOlZ,KAAKmZ,WAAa,2BAA6BsrB,mBAAmBzkC,KAAK4Z,OAAS,WAAa6qB,mBAAmBzkC,KAAK6Z,MAChJ,EACAhD,QAAS,CAET,GCxCJ,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,UCNS/a,GAAG,e,IAGCA,GAAG,e,IACCiB,MAAM,kB,IACFA,MAAM,kB,IACFA,MAAM,oB,IACPf,EAAAA,EAAAA,GAAe,UAAX,UAAM,G,IACLe,MAAM,kB,IACPf,EAAAA,EAAAA,GAKK,YAJDA,EAAAA,EAAAA,GAAY,UAAR,QACJA,EAAAA,EAAAA,GAAW,UAAP,OACJA,EAAAA,EAAAA,GAAa,UAAT,SACJA,EAAAA,EAAAA,GAAe,UAAX,YAAM,G,UAoBjBe,MAAM,sB,IACFA,MAAM,kB,IACPf,EAAAA,EAAAA,GAAgB,UAAZ,WAAO,G,IACNe,MAAM,iB,IACPf,EAAAA,EAAAA,GAIK,YAHDA,EAAAA,EAAAA,GAAgB,UAAZ,YACJA,EAAAA,EAAAA,GAAe,UAAX,WACJA,EAAAA,EAAAA,GAAkB,UAAd,eAAS,G,IAYhBe,MAAM,e,sHApDnChB,EAAAA,EAAAA,IA8DM,MA9DNE,GA8DM,EA7DFC,EAAAA,EAAAA,IAAUsD,IACVtD,EAAAA,EAAAA,IAAiFmyB,EAAA,CAAtE0B,gBAAiB5wB,EAAA4wB,gBAAkB2U,sBAAqBpkC,EAAA0vB,Y,qDACnEh0B,EAAAA,EAAAA,GAyDM,MAzDNqD,GAyDM,EAxDFrD,EAAAA,EAAAA,GAuDM,MAvDNc,GAuDM,EAtDFd,EAAAA,EAAAA,GAoDM,MApDNsD,GAoDM,EAnDFtD,EAAAA,EAAAA,GAwBM,MAxBNuD,GAwBM,CAvBFE,IACAzD,EAAAA,EAAAA,GAkBM,MAlBN0D,GAkBM,CAjBFC,IAOA3D,EAAAA,EAAAA,GASK,YARDA,EAAAA,EAAAA,GAA0D,qBAAtDA,EAAAA,EAAAA,GAAiD,SAA1CgB,KAAK,QAAQwxB,SAAA,G,qCAAkBrvB,EAAAqhB,UAAS1f,I,iBAAT3B,EAAAqhB,gBAC1CxkB,EAAAA,EAAAA,GAAwD,qBAApDA,EAAAA,EAAAA,GAA+C,SAAxCgB,KAAK,OAAOwxB,SAAA,G,qCAAkBrvB,EAAAugB,SAAQ5e,I,iBAAR3B,EAAAugB,eACzC1jB,EAAAA,EAAAA,GAIK,qBAHDA,EAAAA,EAAAA,GAAgD,SAAzCgB,KAAK,MAAMwxB,SAAA,G,qCAAkBrvB,EAAAsvB,WAAU3tB,I,iBAAV3B,EAAAsvB,eAAU,SAC9CzyB,EAAAA,EAAAA,GAAgD,SAAzCgB,KAAK,MAAMwxB,SAAA,G,qCAAkBrvB,EAAAuvB,WAAU5tB,I,iBAAV3B,EAAAuvB,eAAU,SAC9C1yB,EAAAA,EAAAA,GAAgD,SAAzCgB,KAAK,MAAMwxB,SAAA,G,qCAAkBrvB,EAAAwvB,WAAU7tB,I,iBAAV3B,EAAAwvB,iBAExC3yB,EAAAA,EAAAA,GAAwD,qBAApDA,EAAAA,EAAAA,GAA+C,SAAxCgB,KAAK,O,qCAAgBmC,EAAAyvB,SAAQ9tB,GAAE0tB,SAAA,I,iBAAVrvB,EAAAyvB,oBASM,GAAZzvB,EAAA0hB,WAAQ,WAA9C9kB,EAAAA,EAAAA,IAuBM,MAvBN6D,GAuBM,EAtBF5D,EAAAA,EAAAA,GAqBM,MArBNqB,GAqBM,CApBFwC,IACA7D,EAAAA,EAAAA,GAeM,MAfNsB,GAeM,CAdF8b,IAMApd,EAAAA,EAAAA,GAOK,YANDA,EAAAA,EAAAA,GACoC,qBADhCA,EAAAA,EAAAA,GAC2B,SADpBgB,KAAK,WAAW4b,YAAY,8B,qCACtBzZ,EAAA4vB,aAAYjuB,I,iBAAZ3B,EAAA4vB,mBACjB/yB,EAAAA,EAAAA,GAC6D,qBADzDA,EAAAA,EAAAA,GACoD,SAD7CgB,KAAK,WAAW4b,YAAY,8B,qCACtBzZ,EAAA6vB,aAAYluB,GAAGi+B,OAAI3+B,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAi/B,kBAAAj/B,EAAAi/B,oBAAAl/B,K,iBAArBlB,EAAA6vB,mBACjBhzB,EAAAA,EAAAA,GACyE,qBADrEA,EAAAA,EAAAA,GACgE,SADzDgB,KAAK,WAAW4b,YAAY,8B,qCACtBzZ,EAAA8vB,oBAAmBnuB,GAAGi+B,OAAI3+B,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAAq/B,uBAAAr/B,EAAAq/B,yBAAAt/B,K,iBAA5BlB,EAAA8vB,8BAGzBjzB,EAAAA,EAAAA,GAEM,MAFNwE,GAEM,EADFxE,EAAAA,EAAAA,GAA2C,UAAlCmE,QAAKC,EAAA,MAAAA,EAAA,QAAAC,IAAEC,EAAA4uB,gBAAA5uB,EAAA4uB,kBAAA7uB,KAAgB,cAAE,qBAQflB,EAAAgwB,iBAAc,WAAzDnP,EAAAA,EAAAA,IAA4DoP,EAAA,C,MAA/ClP,aAAY5f,EAAA+uB,Y,0JAkBjC,IACIxb,MAAO,CACHkN,KAAM0P,QAEVnQ,WAAY,CACR0P,WAAU,GACVU,SAAQ,GACR3L,OAAMA,IAGVjR,OACI,MAAO,CACHqb,gBAAgB,EAChBY,iBAAiB,EACjBJ,aAAY,EACZgB,MAAO,CACH,CACI1zB,KAAM,KACN8lB,SAAU,WACVwK,eAAe,EACfuD,QAAS,GACT6T,YAAY,EACZC,IAAKC,GACLC,eAAgB,GAChBC,UAAW,EACX1X,SAAS,EACToF,kBAAkB,GAEtB,CACIx1B,KAAM,KACN8lB,SAAU,WACVwK,eAAe,EACfuD,QAAS,GACT6T,YAAY,EACZC,IAAKI,GACLF,eAAgB,GAChBC,UAAW,EACX1X,SAAS,EACToF,kBAAkB,GAEtB,CACIx1B,KAAM,KACN8lB,SAAU,YACVwK,eAAe,EACfuD,QAAS,GACT6T,YAAY,EACZC,IAAKK,GACLH,eAAgB,GAChBC,UAAW,EACX1X,SAAS,EACToF,kBAAkB,GAEtB,CACIpF,SAAS,EACToF,kBAAkB,GAEtB,CACIpF,SAAS,EACToF,kBAAkB,IAG1BhT,YAAY,EACZklB,YAAY,EACZ/T,WAAY,KACZ7N,SAAU,GACV8N,QAAS,CAAC,EACV9N,SAAU,WACVwK,eAAe,EACfuD,QAAS,GACT3C,gBAAgB,EAChBC,oBAAoB,EAEpBxR,MAAO,CAAC,EACRja,SAAU,GACV4F,YAAa,SACbiY,UAAW,GACXd,SAAU,GACVqR,UAAW,GACXnC,SAAU,GACVH,WAAY,GACZC,WAAY,GACZC,WAAY,GACZ9N,SAAU,GACVkO,aAAc,GACdC,aAAc,GACdC,oBAAqB,GACrBxO,QAAS,GAEjB,EACAtE,yBAEA,EACAA,sBAEUnc,KAAKmgB,iBACLngB,KAAKixB,aACf,EACAta,UACI2E,SAAS5D,iBAAiB,QAAS1X,KAAKkxB,mBAC5C,EACAra,QAAS,CACLmZ,aACIhwB,KAAKmvB,gBAAiB,CAC1B,EACAhT,iBACI,MAAM+C,EAASlB,GAAAA,EAAQmB,IAAI,SAC3B,IAAIrL,EAAO,CACP8I,WAAiB8D,GAAVxB,EAAsB,GAAKA,GAEtC,MAAM1C,QAAY6B,GAAAA,EAAMC,KAAK,sBAAuBC,KAAKC,UAAU1K,GAAO,CACtE2K,QAAS,CAAE,eAAgB,sBAEb,IAAd3K,EAAK8I,QAG4B,GAA5BJ,EAAI1I,KAAK6K,MAAM,WACpBC,MAAM,4BACNZ,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YACtDpa,KAAKwlB,QAAQC,KAAK,kBAEC,KAAdjJ,EAAIoE,SACT5gB,KAAKygB,QAAUjE,EAAI1I,KAAK6K,MAAM,GAAG,aAC3B3e,KAAKgkB,oBACLhkB,KAAKixB,cACX9V,QAAQC,IAAI,QAAUpb,KAAKygB,UAEnC,EACAykB,iBAAiBjpB,GACbjc,KAAKmvB,gBAAiB,EAClBlT,IACAjc,KAAK+vB,iBAAkB,EACvB/vB,KAAKwlB,QAAQC,KAAK,WAE1B,EACAtJ,oBACI,MAAMK,QAAY6B,GAAAA,EAAMC,KAAK,oBACxB,+BAA8Bte,KAAKygB,aAAa,CAC7ChC,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAG3B,KAAdjC,EAAIoE,SACJ5gB,KAAK2C,SAAW,IAAI6Z,EAAI1I,KAAK6K,OAC7BxD,QAAQC,IAAIpb,KAAK2C,UAEzB,EACAwZ,oBACIhB,QAAQC,IAAI,eACZ,MAAMoB,QAAY6B,GAAAA,EAAMC,KAAK,qBACxB,iBAAgBte,KAAKygB,aAAa,CAC/BhC,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAI7Cze,KAAK0f,SAAWlD,EAAI1I,KAAK6K,MAAM,GAAG,QAClC3e,KAAKwgB,UAAYhE,EAAI1I,KAAK6K,MAAM,GAAG,cACnC3e,KAAK+wB,UAAYvU,EAAI1I,KAAK6K,MAAM,GAAG,SACnC3e,KAAKyuB,WAAazuB,KAAK+wB,UAAU7T,MAAM,EAAG,GAC1Cld,KAAK0uB,WAAa1uB,KAAK+wB,UAAU7T,MAAM,EAAG,GAC1Cld,KAAK2uB,WAAa3uB,KAAK+wB,UAAU7T,MAAM,GACvCld,KAAK4uB,SAAWpS,EAAI1I,KAAK6K,MAAM,GAAG,WAAWtB,MAAM,KAAK,GACxDrd,KAAK6gB,SAAWrE,EAAI1I,KAAK6K,MAAM,GAAG,OAEtC,EACAwmB,kBAAkBpkB,GACd,GAAIA,EAAK0M,UAAW,CAChB,MAAM2X,EAAYrkB,EAAK9jB,KAAKogB,MAAM,WAClC,OAAI+nB,EAAUllC,OAAS,EAAI,EAChBklC,EAAU,GAEVrkB,EAAK9jB,IAEpB,CACI,OAAO8jB,EAAK9jB,IAEpB,EAEAixB,gBAAgBpnB,GAEZ9G,KAAK2wB,MAAM7pB,GAAOqnB,gBAAiB,CACvC,EACAkX,cAAcv+B,GACV,GAAqB,qBAAVA,EAAuB,CAC9B,MAAMw+B,EAAetlC,KAAK2wB,MAAM7pB,GAChC,IAAIy+B,EAAiBvlC,KAAK2wB,MAAM1a,QAAOC,IAAMA,EAAEmX,UAASntB,OACxD,GAAIolC,EAAa7X,UAAW,CAExB,MAAM+X,EAAoBxlC,KAAK2wB,MAAMiC,WAAU7R,GAAQA,EAAKgC,WAAauiB,EAAaviB,YAC3D,IAAvByiB,IAEAxlC,KAAK2wB,MAAM6U,GAAmB/X,WAAY,EAC1CztB,KAAK2wB,MAAM6U,GAAmBjY,eAAgB,EAC9CvtB,KAAK2wB,MAAM6U,GAAmB1U,QAAU,GACxC9wB,KAAK2wB,MAAM6U,GAAmBb,YAAa,EAC3C3kC,KAAK2wB,MAAM6U,GAAmBT,YAE9B/kC,KAAKouB,oBAAqB,EAElC,MAUQmX,GAAkB,IAElBvlC,KAAKouB,oBAAqB,GAIlC,MAAMqX,EAAiB,CACnBpY,SAAS,EACToF,kBAAkB,GAEtBzyB,KAAK2wB,MAAMkC,OAAO/rB,EAAO,EAAG2+B,GAC5BzlC,KAAK2wB,MAAM7pB,GAAOqnB,gBAAiB,CACvC,CACJ,EACA2D,aAAahrB,GACT9G,KAAK2wB,MAAM7pB,GAAOqnB,gBAAiB,CACvC,EAEAF,UAAUnnB,EAAOia,GACb,MAAMwR,EAAW,EACXgT,EAAiBvlC,KAAK2wB,MAAM1a,QAAOC,IAAMA,EAAEmX,UAASntB,OAE1D,GAAIqlC,GAAkBhT,EAClBvyB,KAAKouB,oBAAqB,OAI9B,GAAIrN,EAAM,CACe/gB,KAAK2wB,MAAM+U,QAAQ3kB,GAAxC,MACM4kB,EAAa,IAAK5kB,GACxB4kB,EAAWpY,eAAgB,EAC3BoY,EAAW7U,QAAU,GACrB6U,EAAWhB,YAAa,EACxBgB,EAAWtY,SAAU,EACrBsY,EAAWlT,kBAAmB,EAEzB1R,EAAK0M,WACN1M,EAAKgkB,YAIc,IAAnBhkB,EAAKgkB,UACLY,EAAW1oC,KAAQ,GAAE8jB,EAAK9jB,aAE1B0oC,EAAW1oC,KAAQ,GAAE8jB,EAAK9jB,cAAc8jB,EAAKgkB,UAAY,IAK7D,MAAMa,EAAoB5lC,KAAK2wB,MAAMvL,MAAKlP,GAAKA,EAAEmX,SAAWnX,EAAEuc,mBAC9D,GAAImT,EAAmB,CACnB,MAAMC,EAAW7lC,KAAK2wB,MAAM+U,QAAQE,GACpC5lC,KAAK2wB,MAAMkC,OAAOgT,EAAW,EAAG,EAAGF,EACvC,MACI3lC,KAAK2wB,MAAMlL,KAAKkgB,GAGpB3lC,KAAKsyB,6BACT,CACJ,EAEAtE,iBAAiBjN,GACbA,EAAKwM,eAAiBxM,EAAKwM,aAC/B,EACAuY,YAAY/kB,GACRA,EAAK4jB,YAAc5jB,EAAK4jB,WAExB3kC,KAAK2wB,MAAMta,SAAS0vB,IACZA,IAAMhlB,IAENglB,EAAEpB,YAAa,EACnB,GAER,EAEAnX,SAASzM,GAELA,EAAKwM,eAAgB,EACrBxM,EAAK4jB,YAAa,CACtB,EAEA7W,aAAa3M,EAAOkR,EAAQtR,GACpB/gB,KAAK4wB,YACL5wB,KAAK4wB,WAAWoV,UAAUrlB,OAAO,UAErCQ,EAAM7K,OAAO0vB,UAAUpc,IAAI,UAC3B5pB,KAAK4wB,WAAazP,EAAM7K,OAGT,SAAX+b,GACAryB,KAAKguB,iBAAiBjN,EAE9B,EAEAklB,aAAan/B,GACT9G,KAAK2wB,MAAM7pB,GAAO69B,YAAc3kC,KAAK2wB,MAAM7pB,GAAO69B,UACtD,EAEAzT,mBAAmB/P,GACVA,EAAM7K,OAAO2Q,QAAQ,aAAgB9F,EAAM7K,OAAO2Q,QAAQ,mBAC3DjnB,KAAK2wB,MAAMta,SAAS0K,IAChBA,EAAK4jB,YAAa,CAAK,GAGnC,EAEArS,8BACI,MAAMC,EAAW,EACXC,EAAgBxyB,KAAK2wB,MAAM1a,QAAOC,IAAMA,EAAEmX,UAAYnX,EAAEuc,mBAAkBvyB,OAC1EwyB,EAA2B1yB,KAAK2wB,MAAM1a,QAAOC,GAAKA,EAAEmX,SAAWnX,EAAEuc,mBAAkBvyB,OAEzF,GAAIsyB,GAAiBD,GAAYG,GAA4B,EAAG,CAC5D,MAAMC,EAAgB3yB,KAAK2wB,MAAMiC,WAAU1c,GAAKA,EAAEmX,SAAWnX,EAAEuc,mBAC/DzyB,KAAK2wB,MAAMkC,OAAOF,EAAe,EACrC,CACJ,EACA9S,SACIjB,MAAM,YACe,GAAjB5e,KAAK6gB,WACL1F,QAAQC,IAAI,WACZpb,KAAK6e,eAETb,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YAEtDpa,KAAKwlB,QAAQC,KAAK,iBAClBtK,QAAQC,IAAI,UAChB,EACAuE,eAAe4B,GACXvhB,KAAKuI,YAAcgZ,CACvB,EACAuR,aACI,IAAI71B,EAAO+C,KAAK0f,SACZvC,EAAcnd,KAAKyuB,WAAazuB,KAAK0uB,WAAa1uB,KAAK2uB,WAC3DtQ,GAAAA,EAAMC,KAAK,sBACN,iBAAgBte,KAAKygB,sBAAsBxjB,sBAAyBkgB,QAAkBuB,MAAKlC,IACjD,KAAnCA,EAAI1I,KAAKif,QAAQ,GAAG,aACpBnU,MAAM,gBACV,GAEZ,EACAsQ,iBACI,IAAI8D,EAAW3T,KAAAA,OAAgBrf,KAAK+uB,cAAczP,WAC9C2T,EAAW5T,KAAAA,OAAgBrf,KAAKgvB,cAAc1P,WAC9Ctf,KAAKgvB,cAAgBhvB,KAAKivB,qBAC1BrQ,MAAM,uBACN5e,KAAKgvB,aAAe,GACpBhvB,KAAKivB,oBAAsB,IAG3B5Q,GAAAA,EAAMC,KAAK,0BACN,iBAAgBte,KAAKygB,4BAA4BuS,qBAA4BC,OAAc,CAC5FxU,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAEtCC,MAAKlC,IACuC,KAAnCA,EAAI1I,KAAKif,QAAQ,GAAG,YACpBnU,MAAM,mBACoC,KAAnCpC,EAAI1I,KAAKif,QAAQ,GAAG,cAC3BnU,MAAM,iBACN5e,KAAKgvB,aAAe,GACpBhvB,KAAKivB,oBAAsB,GAC3BjvB,KAAK+uB,aAAe,GACxB,GAGhB,EACAlQ,cACIpH,OAAOoE,MAAMO,IAAIC,QAAQ,CACrBC,IAAK,kBACLL,QAAS,SAAUgD,GACf9D,QAAQC,IAAI6D,GACZ3D,SAAS4D,OAAS,QAEtB,EACAH,KAAM,SAAUC,GACZ7D,QAAQC,IAAI4D,EAChB,GAER,EACAugB,mBACI,MAAMsC,EAAQ,uGACd1mB,QAAQC,IAAIpb,KAAKgvB,cACZ6S,EAAMC,KAAK9hC,KAAKgvB,gBACS,KAAtBhvB,KAAKgvB,cACLpQ,MAAM,yBAEV5e,KAAKgvB,aAAe,GACpBhvB,KAAKivB,oBAAsB,GAEnC,EAGA0Q,wBACQ3/B,KAAKgvB,eAAiBhvB,KAAKivB,sBAC3BrQ,MAAM,qBACN5e,KAAKgvB,aAAe,GACpBhvB,KAAKivB,oBAAsB,GAEnC,EACAI,aACIrvB,KAAKmvB,gBAAiB,CAC1B,GAGJ+W,gBACI5qB,SAAS6X,oBAAoB,QAASnzB,KAAKkxB,mBAC/C,EACAtP,SAAU,CACNwR,qBACI,MAAMb,EAAW,EACjB,OAAOA,EAAWvyB,KAAK2wB,MAAM1a,QAAOC,IAAMA,EAAEmX,UAAYnX,EAAEuc,mBAAkBvyB,MAChF,ICxfR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,MAEpE,U,iECRSpE,GAAG,e,IAGCiB,MAAM,e,IACFA,MAAM,kB,IACFA,MAAM,kB,IACFA,MAAM,sB,YACPf,EAAAA,EAAAA,GAAc,UAAV,SAAK,K,IACJe,MAAM,c,IACFA,MAAM,iB,IAINA,MAAM,a,uBAEPf,EAAAA,EAAAA,GAAgB,aAAT,KAAC,K,eAGPe,MAAM,c,YAEPf,EAAAA,EAAAA,GAAyC,SAAlCmB,IAAI,iBAAgB,UAAM,K,YAmBrCnB,EAAAA,EAAAA,GAcQ,eAbJA,EAAAA,EAAAA,GAAsB,MAAlBkc,MAAM,UACVlc,EAAAA,EAAAA,GAA0B,MAAtBkc,MAAM,SAAQ,QAClBlc,EAAAA,EAAAA,GAAyB,MAArBkc,MAAM,SAAQ,OAClBlc,EAAAA,EAAAA,GAA2B,MAAvBkc,MAAM,SAAQ,SAClBlc,EAAAA,EAAAA,GAA2B,MAAvBkc,MAAM,SAAQ,SAClBlc,EAAAA,EAAAA,GAAyB,MAArBkc,MAAM,SAAQ,OAClBlc,EAAAA,EAAAA,GAAyB,MAArBkc,MAAM,SAAQ,OAClBlc,EAAAA,EAAAA,GAAyB,MAArBkc,MAAM,SAAQ,OAClBlc,EAAAA,EAAAA,GAAyB,MAArBkc,MAAM,SAAQ,OAClBlc,EAAAA,EAAAA,GAA2B,MAAvBkc,MAAM,QAAO,UACjBlc,EAAAA,EAAAA,GAA0B,MAAtBkc,MAAM,QAAO,SACjBlc,EAAAA,EAAAA,GAA4B,MAAxBkc,MAAM,SAAQ,UAClBlc,EAAAA,EAAAA,GAA4B,MAAxBkc,MAAM,SAAQ,WAAK,K,uLAsB1Bnb,MAAM,c,sHA1E/BhB,EAAAA,EAAAA,IAkFM,MAlFNE,GAkFM,EAjFFC,EAAAA,EAAAA,IAAUsD,IACVtD,EAAAA,EAAAA,IAAYmyB,IACZryB,EAAAA,EAAAA,GA8EM,MA9ENqD,GA8EM,EA7EFrD,EAAAA,EAAAA,GA4EM,MA5ENc,GA4EM,EA3EFd,EAAAA,EAAAA,GA0EM,MA1ENsD,GA0EM,EAzEFtD,EAAAA,EAAAA,GAwEM,MAxENuD,GAwEM,CAvEFE,IACAzD,EAAAA,EAAAA,GAcM,MAdN0D,GAcM,EAbF1D,EAAAA,EAAAA,GAGM,MAHN2D,GAGM,EAFF3D,EAAAA,EAAAA,GAA+B,SAA5B,UAAMoH,EAAAA,EAAAA,IAAGjE,EAAA8wB,cAAY,IACxBj0B,EAAAA,EAAAA,GAAoE,SAA7DgB,KAAK,SAAS4b,YAAY,KAAMutB,QAAK/lC,EAAA,KAAAA,EAAA,GAAAU,GAAER,EAAA8lC,aAAatlC,K,YAE/D9E,EAAAA,EAAAA,GAIM,MAJN4D,GAIM,WAHF5D,EAAAA,EAAAA,GAA4E,SAArEgB,KAAK,O,qCAAgBkE,EAAAsuB,UAAS1uB,GAAGiY,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAA+lC,iBAAA/lC,EAAA+lC,mBAAAhmC,IAAkBimC,IAAInnC,EAAA2d,O,mBAA1C5b,EAAAsuB,aAC5B3vB,IAAgB,SAChB7D,EAAAA,EAAAA,GAAwE,SAAjEgB,KAAK,O,qCAAgBkE,EAAAuuB,QAAO3uB,GAAGiY,SAAM3Y,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAimC,eAAAjmC,EAAAimC,iBAAAlmC,IAAgBimC,IAAInnC,EAAA2d,O,mBAAtC5b,EAAAuuB,cAEhCzzB,EAAAA,EAAAA,GAGM,MAHNod,GAGM,EAFFpd,EAAAA,EAAAA,GAAkE,SAA3DgB,KAAK,SAASlB,GAAG,gBAAiBqE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAkmC,kBAAAlmC,EAAAkmC,oBAAAnmC,MAChDG,QAGRxE,EAAAA,EAAAA,GAkDQ,cAlCJyE,KAcQ,aACR1E,EAAAA,EAAAA,IAkBQ0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAjBkBvD,EAAAsnC,cAAcvpB,MAAM5c,EAAAomC,aAAcpmC,EAAAomC,aAAevnC,EAAAwnC,gBAAa,CAA5EC,EAAM5gB,M,WADlBjqB,EAAAA,EAAAA,IAkBQ,SAhBH+G,IAAKkjB,GAAG,EACThqB,EAAAA,EAAAA,GAcK,YAbDA,EAAAA,EAAAA,GAA2E,MAAtEmE,QAAKW,GAAER,EAAAumC,WAAWD,GAAQ9oC,MAAO8oC,EAAKE,U,QAAYF,EAAKE,SAAO,EAAAtpC,KACnExB,EAAAA,EAAAA,GAA6C,MAAxC8B,MAAO8oC,EAAK/tB,Q,QAAU+tB,EAAK/tB,OAAK,EAAAnY,KACrC1E,EAAAA,EAAAA,GAA2C,MAAtC8B,MAAO8oC,EAAK3pC,O,QAAS2pC,EAAK3pC,MAAI,EAAAQ,KACnCzB,EAAAA,EAAAA,GAA6C,MAAxC8B,MAAO8oC,EAAKhtB,Q,QAAUgtB,EAAKhtB,OAAK,EAAAiU,KACrC7xB,EAAAA,EAAAA,GAA6C,MAAxC8B,MAAO8oC,EAAK/sB,Q,QAAU+sB,EAAK/sB,OAAK,EAAAjZ,KACrC5E,EAAAA,EAAAA,GAAmE,MAA/De,MAAM,YAAae,MAAO8oC,EAAKzsB,U,QAAYysB,EAAKzsB,SAAO,EAAAklB,KAC3DrjC,EAAAA,EAAAA,GAA2C,MAAtC8B,MAAO8oC,EAAKx/B,O,QAASw/B,EAAKx/B,MAAI,EAAAzJ,KACnC3B,EAAAA,EAAAA,GAA0D,MAAtDe,MAAM,SAAUe,MAAO8oC,EAAKxsB,O,QAASwsB,EAAKxsB,MAAI,EAAAolB,KAClDxjC,EAAAA,EAAAA,GAAsE,MAAlEe,MAAM,aAAce,MAAO8oC,EAAKvsB,W,QAAausB,EAAKvsB,UAAQ,EAAAolB,KAC9DzjC,EAAAA,EAAAA,GAAqD,MAAhD8B,MAAO8oC,EAAKjpB,Y,QAAcipB,EAAKjpB,WAAS,EAAA9f,KAC7C7B,EAAAA,EAAAA,GAAqD,MAAhD8B,MAAO8oC,EAAKhpB,Y,QAAcgpB,EAAKhpB,WAAS,EAAAmQ,KAC7C/xB,EAAAA,EAAAA,GAAiD,MAA5C8B,MAAO8oC,EAAKG,U,QAAYH,EAAKG,SAAO,EAAAzlC,KACzCtF,EAAAA,EAAAA,GAAuD,MAAlD8B,MAAO8oC,EAAKI,a,QAAeJ,EAAKI,YAAU,EAAAzlC,W,SAI3DvF,EAAAA,EAAAA,GAGM,MAHNixB,GAGM,EAFF/wB,EAAAA,EAAAA,IACkC+qC,GADlCC,EAAAA,EAAAA,IACkC,CADrBC,KAAMhoC,EAAAsnC,cAAY,CAAAE,cAAYxnC,EAAAwnC,cAAaS,iBAAEjoC,EAAAioC,kBAAgB,CACrEC,aAAa/mC,EAAA+mC,eAAY,4C,WC5EjDvoC,MAAA,+EAA4E/B,MAAM,kB,0DAAvFhB,EAAAA,EAAAA,IAYM,MAZNE,GAYM,EAXFD,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAAiC,KAA7BmE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAgnC,cAAAhnC,EAAAgnC,gBAAAjnC,KAAc,SAAI,aAEjCtE,EAAAA,EAAAA,IAIO0G,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAJ2BpC,EAAAinC,mBAAmBpoC,EAAAqoC,eAA3BjmB,K,WAA1BxlB,EAAAA,EAAAA,IAIO,QAJDgB,MAAM,OAAyD+F,IAAKye,G,EACtEvlB,EAAAA,EAAAA,GAEI,KAFAe,OAAKmU,EAAAA,EAAAA,IAAA,CAAAqK,GAAQgG,IAASpiB,EAAAsoC,UAAYtnC,QAAKW,GAAER,EAAAonC,gBAAgBnmB,K,QACtDA,GAAI,GAAAliB,S,OAGfrD,EAAAA,EAAAA,GAEO,cADHA,EAAAA,EAAAA,GAA6B,KAAzBmE,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAqnC,UAAArnC,EAAAqnC,YAAAtnC,KAAU,Q,CAMjC,QACIwT,MAAO,CACHszB,KAAM,CACFnqC,KAAM4qC,MACNC,UAAU,GAEdlB,cAAe,CACX3pC,KAAMouB,OACNyc,UAAU,GAEdT,iBAAkB,CACdpqC,KAAMouB,OACNyc,UAAU,IAGlB/zB,OACI,MAAO,CACH2zB,QAAS,EACTD,aAAc,EAEtB,EACA5lB,SAAU,CACNkmB,YACI,OAAOxgB,KAAKwE,KAAK9rB,KAAKmnC,KAAKjnC,OAASF,KAAK2mC,cAC7C,GAEJ9vB,QAAS,CACL0wB,mBAAmB11B,GACf,MAAM2K,EAAM,GACZ,IAAK,IAAI3Z,EAAIgP,EAAMhP,EAAIykB,KAAKygB,IAAI/nC,KAAK8nC,UAAY,EAAGj2B,EAAO7R,KAAKonC,kBAAmBvkC,IAC/E2Z,EAAIiJ,KAAK5iB,GAEb,OAAO2Z,CACX,EACAkrB,gBAAgBnmB,GACZvhB,KAAKynC,QAAUlmB,EACfvhB,KAAK8e,MAAM,cAAeyC,GACtBA,EAAOvhB,KAAKwnC,aACZxnC,KAAKwnC,aAAejmB,EACbA,GAAQvhB,KAAKwnC,aAAexnC,KAAKonC,mBACxCpnC,KAAKwnC,aAAejmB,EAAOvhB,KAAKonC,iBAAmB,EAE3D,EACAE,eACQtnC,KAAKynC,QAAU,GACfznC,KAAK0nC,gBAAgB1nC,KAAKynC,QAAU,EAE5C,EACAE,WACQ3nC,KAAKynC,QAAUznC,KAAK8nC,WACpB9nC,KAAK0nC,gBAAgB1nC,KAAKynC,QAAU,EAE5C,IC9DR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,U,mCF4FA,IACInnB,WAAY,CAAE0nB,WAAU,GAAEtX,SAAQ,GAAE3L,OAAMA,IAC1CkjB,SACIC,EAAAA,EAAAA,KAAmB,CAAC9rC,EAAI+rC,KACpBnqB,GAAAA,EAAQ2C,OAAO,eAAe,GAEtC,EACA7M,OACI,MAAO,CACH4L,SAAU,GACVe,QAAS,GACTwP,aAAc,GACdwW,aAAc,GACdE,cAAe,GACfS,iBAAkB,EAClBK,QAAS,EACT3qB,MAAO,IAAIC,KACXwS,QAAS,GAEjB,EACA3N,SAAU,CACN8kB,eACI,OAAQ1mC,KAAKynC,QAAU,GAAKznC,KAAK2mC,aACrC,GAEJxqB,sBACUnc,KAAKooC,kBAAkB,GAAI,GAAI,GACzC,EACAjsB,gBACI,IAAIuY,EAAO,IAAI3X,KACXglB,EAAOrN,EAAKlX,cACZ0kB,GAAS,KAAO,EAAIxN,EAAKjX,aAAaP,OAAO,GAC7CilB,GAAO,IAAMzN,EAAK2T,WAAWnrB,OAAO,GACxCld,KAAK8c,MAAQilB,EAAO,IAAMG,EAAQ,IAAMC,CAC5C,EACAtrB,QAAS,CACLwvB,uBACwB3lB,GAAhB1gB,KAAKyvB,UAEEzvB,KAAKwvB,UAAYxvB,KAAKyvB,QAC7B7Q,MAAM,kBAGN5e,KAAKooC,kBAAkBpoC,KAAKuvB,QAASvvB,KAAKwvB,UAAWxvB,KAAKyvB,SAElE,EACA8W,qBAC0B7lB,GAAlB1gB,KAAKwvB,UACL5Q,MAAM,gBACC5e,KAAKwvB,UAAYxvB,KAAKyvB,SAC7B7Q,MAAM,kBACN5e,KAAKyvB,QAAU,IAGfzvB,KAAKooC,kBAAkBpoC,KAAKuvB,QAASvvB,KAAKwvB,UAAWxvB,KAAKyvB,QAElE,EACA2W,aAAajlB,GACTnhB,KAAKuvB,QAAUpO,EAAM7K,OAAOpZ,MAC5Bie,QAAQC,IAAI,YAAapb,KAAKwvB,UAAWxvB,KAAKyvB,SAC9CzvB,KAAKooC,kBAAkBpoC,KAAKuvB,QAASvvB,KAAKwvB,UAAWxvB,KAAKyvB,QAC9D,EACA9P,eAAe4B,GACXvhB,KAAKuI,YAAcgZ,CACvB,EACA8lB,aAAavzB,GACT9T,KAAKynC,QAAU3zB,CACnB,EACAqI,oBACIhB,QAAQC,IAAI,eACZ,MAAMoB,QAAY6B,GAAAA,EAAMC,KAAK,qBACxB,iBAAgBte,KAAKygB,aAAa,CAC/BhC,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAI7Cze,KAAK0f,SAAWlD,EAAI1I,KAAK6K,MAAM,GAAG,QAClC3e,KAAKwgB,UAAYhE,EAAI1I,KAAK6K,MAAM,GAAG,cACnC3e,KAAK+wB,UAAYvU,EAAI1I,KAAK6K,MAAM,GAAG,SACnC3e,KAAKyuB,WAAazuB,KAAK+wB,UAAU7T,MAAM,EAAG,GAC1Cld,KAAK0uB,WAAa1uB,KAAK+wB,UAAU7T,MAAM,EAAG,GAC1Cld,KAAK2uB,WAAa3uB,KAAK+wB,UAAU7T,MAAM,GACvCld,KAAK4uB,SAAWpS,EAAI1I,KAAK6K,MAAM,GAAG,WAAWtB,MAAM,KAAK,GACxDrd,KAAK6gB,SAAWrE,EAAI1I,KAAK6K,MAAM,GAAG,OAEtC,EACAxC,wBAAwBoT,EAASC,EAAWC,GAExC,IAAI3b,EAAO,CACPwb,QAAS,kBACT1S,MAAO,GACPtC,OAAQ,GACRiV,QAAoB,IAAXA,EAAgB,GAAKA,EAC9BC,eAA0B9O,IAAd8O,GAAyC,KAAdA,EAAoB,aAAeA,EAC1EC,aAAsB/O,IAAZ+O,GAAqC,KAAZA,EAAkBzvB,KAAK8c,MAAQ2S,EAClEzJ,IAAK,IAET,MAAMxJ,QAAY6B,GAAAA,EAAMC,KAAK,wBAAyBC,KAAKC,UAAU1K,GAAO,CACxE2K,QAAS,CAAE,eAAgB,sBAE/Bze,KAAKiwB,aAAezT,EAAI1I,KAAK6K,MAAM,UAEnC,IADA,IAAI2pB,EAAU,IAAIV,MAAM5nC,KAAKiwB,cACpBptB,EAAI,EAAGA,EAAIylC,EAAQpoC,OAAQ2C,IAChCylC,EAAQzlC,GAAK,IAAI+kC,MAAM,GAE3B,IAAK,IAAI/kC,EAAI,EAAGA,EAAI7C,KAAKiwB,aAAcptB,IACnCylC,EAAQzlC,GAAG,SAA8C,IAAnC2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,cAAsB,IAAM2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,cACtFylC,EAAQzlC,GAAG,QAAU2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,QACvCylC,EAAQzlC,GAAG,SAAW2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,SACxCylC,EAAQzlC,GAAG,SAAW2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,SACP,GAA7B2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,QAClBylC,EAAQzlC,GAAG,QAAU,KAEa,GAA7B2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,QACvBylC,EAAQzlC,GAAG,QAAU,MAGrBylC,EAAQzlC,GAAG,QAAU,MAEzBylC,EAAQzlC,GAAG,UAAY2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,UACzCylC,EAAQzlC,GAAG,WAAa2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,WAC1CylC,EAAQzlC,GAAG,aAAe2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,aAC5CylC,EAAQzlC,GAAG,aAAe2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,aAC5CylC,EAAQzlC,GAAG,WAAa2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,WAC1CylC,EAAQzlC,GAAG,cAAgB2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,cAC7CylC,EAAQzlC,GAAG,QAAU2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,QACvCylC,EAAQzlC,GAAG,YAAc2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,YAC3CylC,EAAQzlC,GAAG,WAA6C,GAAhC2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,WAAkB,IAAM,GAClEylC,EAAQzlC,GAAG,OAAS2Z,EAAI1I,KAAK6K,MAAM9b,GAAG,OAE1C7C,KAAKymC,aAAe6B,CAExB,EACAzoB,SACIjB,MAAM,YACe,GAAjB5e,KAAK6gB,WACL1F,QAAQC,IAAI,WACZpb,KAAK6e,eAETb,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,MACtD4D,GAAAA,EAAQ2C,OAAO,QAAS,CAAExC,OAAQne,KAAKoe,QAAShE,KAAM,YACtDpa,KAAKwlB,QAAQC,KAAK,iBAClBtK,QAAQC,IAAI,UAChB,EACAe,yBACI,MAAMosB,EAAW,IAAIC,KAAAA,UACfC,EAAYF,EAASG,aAAa,SAExCD,EAAUE,QAAU,CAChB,CAAEC,OAAQ,MAAO9lC,IAAK,QAASoV,MAAO,IACtC,CAAE0wB,OAAQ,KAAM9lC,IAAK,OAAQoV,MAAO,IACpC,CAAE0wB,OAAQ,OAAQ9lC,IAAK,QAASoV,MAAO,IACvC,CAAE0wB,OAAQ,OAAQ9lC,IAAK,QAASoV,MAAO,IACvC,CAAE0wB,OAAQ,KAAM9lC,IAAK,OAAQoV,MAAO,IACpC,CAAE0wB,OAAQ,KAAM9lC,IAAK,OAAQoV,MAAO,IACpC,CAAE0wB,OAAQ,QAAS9lC,IAAK,UAAWoV,MAAO,IAC1C,CAAE0wB,OAAQ,QAAS9lC,IAAK,aAAcoV,MAAO,KAGjD,IAAK,IAAIrV,EAAI,EAAGA,EAAI7C,KAAKiwB,aAAcptB,IACnC4lC,EAAUI,OAAO,CAAEhwB,MAAO7Y,KAAKymC,aAAa5jC,GAAG,SAAU5F,KAAM+C,KAAKymC,aAAa5jC,GAAG,QAAS+W,MAAO5Z,KAAKymC,aAAa5jC,GAAG,SAAUgX,MAAO7Z,KAAKymC,aAAa5jC,GAAG,SAAUuE,KAAMpH,KAAKymC,aAAa5jC,GAAG,QAASuX,KAAMpa,KAAKymC,aAAa5jC,GAAG,QAASkkC,QAAS/mC,KAAKymC,aAAa5jC,GAAG,WAAYmkC,WAAYhnC,KAAKymC,aAAa5jC,GAAG,gBAIhU,IAAIimC,EAAW,wFACTP,EAASQ,KAAKC,cAActqB,MAAK5K,IACnC,MAAMm1B,EAAO,IAAIC,KAAK,CAACp1B,GAAO,CAAE9W,KAAM8rC,IAChChsB,EAAQ,IAAIC,KACZglB,EAAOjlB,EAAMU,cACb0kB,GAASplB,EAAMW,WAAa,GAAG6B,WAAW6pB,SAAS,EAAG,KACtDhH,EAAMrlB,EAAMurB,UAAU/oB,WAAW6pB,SAAS,EAAG,KAC7CzU,EAAQ,GAAEqN,KAAQG,KAASC,IAC3BiH,EAAW1U,EAAM,SAEvB2U,EAAAA,GAAAA,QAAOJ,EAAMG,EAAS,QAAQ,GAEtC,EACAjtB,iBAAiByqB,GACb,GAAmB,IAAhBA,EAAKE,SACJ,GAAGwC,QAAQ,IAAM1C,EAAK3pC,KAAM,wBAAyB,CAEjD,IAAI6W,EAAO,CACPwb,QAAS,aACT1S,MAAO,GACPtC,OAAQ,GACRiV,QAAS,GACTC,UAAW,GACXC,QAAS,GACTzJ,IAAK4gB,EAAK5gB,KAEd,MAAMxJ,QAAY6B,GAAAA,EAAMC,KAAK,wBAAyBC,KAAKC,UAAU1K,GAAO,CACxE2K,QAAS,CAAE,eAAgB,sBAEO,KAAnCjC,EAAI1I,KAAKif,QAAQ,GAAG,cACnBnU,MAAM,uBACA5e,KAAKooC,kBAAkB,GAAI,GAAI,IAE7C,OAEA,GAAGkB,QAAQ,IAAM1C,EAAK3pC,KAAM,yBAA0B,CAElD,IAAI6W,EAAO,CACPwb,QAAS,aACT1S,MAAO,GACPtC,OAAQ,GACRiV,QAAS,GACTC,UAAW,GACXC,QAAS,GACTzJ,IAAK4gB,EAAK5gB,KAEV,MAAMxJ,QAAY6B,GAAAA,EAAMC,KAAK,wBAAyBC,KAAKC,UAAU1K,GAAO,CAC5E2K,QAAS,CAAE,eAAgB,sBAEO,KAAnCjC,EAAI1I,KAAKif,QAAQ,GAAG,cACnBnU,MAAM,uBACA5e,KAAKooC,kBAAkB,GAAI,GAAI,IAE7C,CAER,IG7TR,MAAM,IAA2B,OAAgB,GAAQ,CAAC,CAAC,SAAS,IAAQ,CAAC,YAAY,qBAEzF,UCmEA,MAAMmB,GAAeA,IAAM,CAACntC,EAAI+rC,EAAMqB,UACN9oB,GAAxB1C,GAAAA,EAAQmB,IAAI,SACZqqB,IAGA/F,GAAOhe,KAAK,CAAErL,KAAM,iBAExB,EAWEqvB,GAAWA,IAAM,CAACrtC,EAAI+rC,EAAMqB,UACH9oB,GAAxB1C,GAAAA,EAAQmB,IAAI,SACXqqB,IAEA/F,GAAOhe,KAAK,CAACrL,KAAM,WACvB,EAEEsvB,GAAS,CACX,CACItvB,KAAM,UACNnd,KAAM,SACN0sC,UAAWC,GACXC,YAAaN,MAEjB,CACInvB,KAAM,aACNnd,KAAM,aACN0sC,UAAWG,IAEf,CACI1vB,KAAM,YACNnd,KAAM,WACN0sC,UAAWI,IAEf,CACI3vB,KAAM,IACNnd,KAAM,OACN0sC,UAAWG,IAIf,CACI1vB,KAAM,gBACNnd,KAAM,QACN0sC,UAAWK,GACXH,YAAaJ,MAGjB,CACIrvB,KAAM,oBACNnd,KAAM,YACN0sC,UAAWM,IAEf,CACI7vB,KAAM,oBACNnd,KAAM,YACN0sC,UAAWO,IAGf,CACI9vB,KAAM,qBACNnd,KAAM,kBACN0sC,UAAWQ,IAEf,CACI/vB,KAAM,oBACNnd,KAAM,YACN0sC,UAAWS,IAEf,CACIhwB,KAAM,iBACNnd,KAAM,SACN0sC,UAAWU,IAEf,CACIjwB,KAAM,iBACNnd,KAAM,SACN0sC,UAAWW,IAEf,CACIlwB,KAAM,uBACNnd,KAAM,eACN0sC,UAAWY,IAEf,CACInwB,KAAM,YACNnd,KAAM,iBACN0sC,UAAWa,IAEf,CACIpwB,KAAM,oBACNnd,KAAM,YACN0sC,UAAW3F,IAEf,CACI5pB,KAAM,sBACNnd,KAAM,cACN0sC,UAAWc,IAEf,CACIrwB,KAAM,oBACNnd,KAAM,YACN0sC,UAAWtF,IAEf,CACIjqB,KAAM,0BACNnd,KAAM,kBACN0sC,UAAWe,IAGf,CACItwB,KAAM,oBACNnd,KAAM,YACN0sC,UAAWgB,IAEf,CACIvwB,KAAM,oBACNnd,KAAM,YACN0sC,UAAWiB,IAEf,CACIxwB,KAAM,uBACNnd,KAAM,eACN0sC,UAAWkB,IAEf,CACIzwB,KAAM,oBACNnd,KAAM,YACN0sC,UAAWmB,IAEf,CACI1wB,KAAM,oBACNnd,KAAM,YACN0sC,UAAWoB,IAEf,CACI3wB,KAAM,sBACNnd,KAAM,cACN0sC,UAAWqB,IAEf,CACI5wB,KAAM,sBACNnd,KAAM,cACN0sC,UAAWsB,IAEf,CACI7wB,KAAM,UACNnd,KAAM,SACN0sC,UAAWuB,GACXrB,YAAaN,MAGjB,CACInvB,KAAM,UACNnd,KAAM,eACN0sC,UAAWwB,KAIb1H,IAAS2H,EAAAA,EAAAA,IAAa,CACxBnrC,SAASorC,EAAAA,EAAAA,MACT3B,YAGJ,U,YCtPA,MAAM4B,IAAQC,EAAAA,GAAAA,IAAY,CACtB9wB,QACI,MAAO,CACH+Y,aAAa,GAErB,EACAgY,UAAW,CACPC,gBAAgBhxB,EAAOixB,GACnBjxB,EAAMkxB,aAAeD,CACzB,GAEJE,QAAS,CACLH,iBAAgB,OAAEI,GAAUH,GACxBG,EAAO,kBAAmBH,EAC9B,GAEJI,QAAS,CACLH,aAAalxB,GAASA,EAAMkxB,gBAIpC,U,uBCvBe,MAAMI,GAGjBC,8BAA8BC,EAAOC,EAAOC,GACxC,IAAIC,GAASF,EAAMh2B,EAAI+1B,EAAM/1B,IAAMg2B,EAAMh2B,EAAI+1B,EAAM/1B,IAAQg2B,EAAMzkB,EAAIwkB,EAAMxkB,IAAMykB,EAAMzkB,EAAIwkB,EAAMxkB,GACjG,GAAS,GAAN2kB,EAAS,OAAO,EACnB,IAAIC,IAAQF,EAAIj2B,EAAI+1B,EAAM/1B,IAAMg2B,EAAMh2B,EAAI+1B,EAAM/1B,IAAQi2B,EAAI1kB,EAAIwkB,EAAMxkB,IAAMykB,EAAMzkB,EAAIwkB,EAAMxkB,IAAQ2kB,EAEpG,OAAO,IAAIE,QAAQnjB,QAAQ8iB,EAAM/1B,EAAKm2B,GAAKH,EAAMh2B,EAAI+1B,EAAM/1B,GAAK,EAAG+1B,EAAMxkB,EAAK4kB,GAAKH,EAAMzkB,EAAIwkB,EAAMxkB,GACvG,CAGAukB,+BAA+BC,EAAOC,EAAOC,GACzC,IAAIC,GAASF,EAAMh2B,EAAI+1B,EAAM/1B,IAAMg2B,EAAMh2B,EAAI+1B,EAAM/1B,IAAQg2B,EAAMzkB,EAAIwkB,EAAMxkB,IAAMykB,EAAMzkB,EAAIwkB,EAAMxkB,GACjG,GAAS,GAAN2kB,EAAS,OAAO,EACnB,IAAIpjB,IAAOijB,EAAMxkB,EAAI0kB,EAAI1kB,IAAMykB,EAAMh2B,EAAI+1B,EAAM/1B,IAAQ+1B,EAAM/1B,EAAIi2B,EAAIj2B,IAAMg2B,EAAMzkB,EAAIwkB,EAAMxkB,IAAO2kB,EAClG,OAAO9kB,KAAKilB,IAAIvjB,GAAK1B,KAAKklB,KAAKJ,EACnC,CAGAJ,+BAA+BC,EAAOC,EAAOC,GACzC,IAAIC,GAASF,EAAMh2B,EAAI+1B,EAAM/1B,IAAMg2B,EAAMh2B,EAAI+1B,EAAM/1B,IAAQg2B,EAAMzkB,EAAIwkB,EAAMxkB,IAAMykB,EAAMzkB,EAAIwkB,EAAMxkB,GACjG,GAAS,GAAN2kB,EAAS,OAAO,EACnB,IAAIC,IAAQF,EAAIj2B,EAAI+1B,EAAM/1B,IAAMg2B,EAAMh2B,EAAI+1B,EAAM/1B,IAAQi2B,EAAI1kB,EAAIwkB,EAAMxkB,IAAMykB,EAAMzkB,EAAIwkB,EAAMxkB,IAAQ2kB,EAEpG,OAAQ,GAAKC,GAAOA,GAAK,CAC7B,CAGAL,oCAAoCC,EAAOC,EAAOC,EAAKM,GACnD,IAAIL,GAASF,EAAMh2B,EAAI+1B,EAAM/1B,IAAMg2B,EAAMh2B,EAAI+1B,EAAM/1B,IAAQg2B,EAAMzkB,EAAIwkB,EAAMxkB,IAAMykB,EAAMzkB,EAAIwkB,EAAMxkB,GACjG,GAAS,GAAN2kB,EAAS,OAAO,EACnB,IAAIC,IAAQF,EAAIj2B,EAAI+1B,EAAM/1B,IAAMg2B,EAAMh2B,EAAI+1B,EAAM/1B,IAAQi2B,EAAI1kB,EAAIwkB,EAAMxkB,IAAMykB,EAAMzkB,EAAIwkB,EAAMxkB,IAAQ2kB,EAGpG,GAAGC,EAAI,EAEH,OAAQ/kB,KAAKklB,MAAQP,EAAM/1B,EAAIi2B,EAAIj2B,IAAM+1B,EAAM/1B,EAAIi2B,EAAIj2B,IAAU+1B,EAAMxkB,EAAI0kB,EAAI1kB,IAAMwkB,EAAMxkB,EAAI0kB,EAAI1kB,KAASglB,EACzG,GAAI,GAAKJ,GAAOA,GAAK,EAAI,CAE5B,IAAIrjB,IAAOijB,EAAMxkB,EAAI0kB,EAAI1kB,IAAMykB,EAAMh2B,EAAI+1B,EAAM/1B,IAAQ+1B,EAAM/1B,EAAIi2B,EAAIj2B,IAAMg2B,EAAMzkB,EAAIwkB,EAAMxkB,IAAO2kB,EAClG,OAAQ9kB,KAAKilB,IAAIvjB,GAAK1B,KAAKklB,KAAKJ,IAAOK,CAC3C,CAEI,OAAQnlB,KAAKklB,MAAQN,EAAMh2B,EAAIi2B,EAAIj2B,IAAMg2B,EAAMh2B,EAAIi2B,EAAIj2B,IAAUg2B,EAAMzkB,EAAI0kB,EAAI1kB,IAAMykB,EAAMzkB,EAAI0kB,EAAI1kB,KAASglB,CAEpH,CAEAT,sBAAsBU,EAAOC,EAAaC,GAEtC,IAAIC,EAAYH,EAAMI,SAASH,GAC3BI,EAAeT,QAAQnjB,QAAQ6jB,QAAQH,EAAWD,GACtD,OAAOG,EAAanjB,IAAI+iB,EAC5B,CAEAX,0BAA0BiB,EAAQC,GAG9B,IADA,IAAIplC,EAAO,EACFjF,EAAI,EAAGA,EAAIoqC,EAAO/sC,OAAQ2C,IAC/BiF,IAASmlC,EAAOpqC,GAAGqT,EAAI+2B,GAAQpqC,EAAI,GAAKoqC,EAAO/sC,QAAQunB,EAAIwlB,GAAQpqC,EAAI,GAAKoqC,EAAO/sC,QAAQgW,EAAI+2B,EAAOpqC,GAAG4kB,GAAK,EAGlHwlB,EAAOxnB,KAAK,IAAI6mB,QAAQnjB,QAAQ8jB,EAAO,GAAG/2B,EAAGg3B,EAAGD,EAAO,GAAGxlB,IAG1D,IAEI0lB,EAFAj3B,EAAI,EACJuR,EAAI,EAGR,IAAS5kB,EAAI,EAAGA,EAAIoqC,EAAO/sC,OAAS,EAAG2C,IACnCsqC,EAAOF,EAAOpqC,GAAGqT,EAAI+2B,EAAOpqC,EAAI,GAAG4kB,EAAIwlB,EAAOpqC,EAAI,GAAGqT,EAAI+2B,EAAOpqC,GAAG4kB,EACnEvR,IAAM+2B,EAAOpqC,GAAGqT,EAAI+2B,EAAOpqC,EAAI,GAAGqT,GAAKi3B,EACvC1lB,IAAMwlB,EAAOpqC,GAAG4kB,EAAIwlB,EAAOpqC,EAAI,GAAG4kB,GAAK0lB,EAM3C,OAHAj3B,GAAM,EAAIpO,EACV2f,GAAM,EAAI3f,EAEH,IAAIwkC,QAAQnjB,QAAQjT,EAAGg3B,EAAGzlB,EACrC,CAEAukB,qBAAqBiB,GAEjB,IAAIG,EAAO,EACPC,EAAO,EAQX,OANAJ,EAAO52B,SAAQiP,IAEZ8nB,GAAQ9nB,EAAEpP,EACVm3B,GAAQ/nB,EAAE4nB,CAAC,IAGP,CAACh3B,EAAEk3B,EAAKH,EAAO/sC,OAAQgtC,EAAEG,EAAKJ,EAAO/sC,OAChD,CAEA8rC,kBAAkBsB,EAASC,EAASC,EAAY,MAE5C,OAAOF,EAAQG,kBAAkBF,EAASC,IAAcF,EAAQI,SAASD,kBAAkBF,EAASC,EACxG,CAEAxB,mBAAmBU,GAEf,IAAIxsC,EAASonB,KAAKklB,KAAKE,EAAMx2B,EAAEw2B,EAAMx2B,EAAEw2B,EAAMQ,EAAER,EAAMQ,GACrD,MAAO,CAACh3B,EAAEw2B,EAAMx2B,EAAEhW,EAAQgtC,EAAER,EAAMQ,EAAEhtC,EACxC,CAEA8rC,aAAa2B,EAAQC,GAEjB,MAAO,CAAC13B,EAAEy3B,EAAOz3B,EAAI03B,EAAO13B,EAAGg3B,EAAES,EAAOT,EAAIU,EAAOV,EACvD,CAEAlB,kBAAkB2B,EAAQC,GAEtB,MAAO,CAAC13B,EAAEy3B,EAAOz3B,EAAI03B,EAAO13B,EAAGg3B,EAAES,EAAOT,EAAIU,EAAOV,EACvD,CAEAlB,eAAeU,EAAOxvC,GAElB,MAAO,CAACgZ,EAAEw2B,EAAMx2B,EAAIhZ,EAAOgwC,EAAER,EAAMQ,EAAIhwC,EAC3C,CAEA8uC,WAAW6B,GAEP,OAAO,IAAIvB,QAAQnjB,QAAQ7B,KAAKilB,IAAIsB,EAAO33B,GAAIoR,KAAKilB,IAAIsB,EAAOX,GAAI5lB,KAAKilB,IAAIsB,EAAOpmB,GACvF,EC5HW,MAAMqmB,GAEjB9B,sBAAsB+B,GAElB,IAAIC,GAAyB,EACzBC,EAAWF,EAAKG,cAChBD,IAEAF,EAAKI,uBACLJ,EAAKK,WAAa,EAClBJ,GAAyB,EACzBC,EAAWF,EAAKG,eAGpB,IAAIG,EAAQ,GACZ,IAAK,IAAIxrC,EAAI,EAAGA,EAAIorC,EAASK,eAAepuC,OAAQ2C,GAAG,GAAK,CACxD,MAAMgV,EAAI,IAAIy0B,QAAQnjB,QAClB8kB,EAASK,eAAezrC,GACxBorC,EAASK,eAAezrC,EAAE,GAC1BorC,EAASK,eAAezrC,EAAE,IAExB0rC,EAAK,IAAIjC,QAAQnjB,QACnB8kB,EAASK,eAAezrC,EAAE,GAC1BorC,EAASK,eAAezrC,EAAE,EAAE,GAC5BorC,EAASK,eAAezrC,EAAE,EAAE,IAGhCwrC,EAAM5oB,KAAK,CAAC+oB,MAAM32B,EAAG42B,IAAIF,GAC7B,CAIA,GAFAF,EAAQA,EAAMp4B,QAAOqP,GAAKgC,KAAKilB,IAAIjnB,EAAEkpB,MAAMtB,EAAI5nB,EAAEmpB,IAAIvB,GAAK,OAEvDmB,EAAMnuC,QAAU,EACf,OAAO,KAEX,IAAIwuC,EAAOL,EAAMM,QAAO,CAACC,EAAMC,IAASD,EAAKJ,MAAMtB,EAAI2B,EAAKL,MAAMtB,EAAI0B,EAAOC,IAAML,MAAMtB,EACzFmB,EAAQA,EAAMp4B,QAAOqP,GAAKgC,KAAKilB,IAAIjnB,EAAEkpB,MAAMtB,EAAIwB,GAAQ,OAEpDV,GACCD,EAAKe,wBAET,IAAIC,EAAc,GACdC,EAAYX,EAAMY,MACtB,MAAMZ,EAAMnuC,OAAS,EACrB,CACI,IAAIgvC,EAAWb,EAAMjpB,MAAKE,GAAKA,EAAEkpB,MAAMf,kBAAkBuB,EAAUP,IAAK,OAAUnpB,EAAEmpB,IAAIhB,kBAAkBuB,EAAUP,IAAK,QACzH,IAAIS,EACA,MAEJH,EAAYtpB,KAAKupB,GACjB,IAAIG,EAAgBd,EAAM3I,QAAQwJ,GAG9BF,EADDE,EAAST,IAAIhB,kBAAkBuB,EAAUP,IAAK,MACjC,CAACD,MAAMU,EAAST,IAAKA,IAAIS,EAASV,OAElCU,EAEhBb,EAAMxb,OAAOsc,EAAe,EAChC,CAGA,OAFAJ,EAAYtpB,KAAKupB,GAEVD,CACX,CAEA/C,2BAA2B+B,GAEvB,IAAIC,GAAyB,EACzBC,EAAWF,EAAKG,cAChBD,IAEAF,EAAKI,uBACLJ,EAAKK,WAAa,EAClBJ,GAAyB,EACzBC,EAAWF,EAAKG,eAGpB,IAAIG,EAAQ,GACZ,IAAK,IAAIxrC,EAAI,EAAGA,EAAIorC,EAASK,eAAepuC,OAAQ2C,GAAG,GAAK,CACxD,MAAMgV,EAAI,IAAIy0B,QAAQnjB,QAClB8kB,EAASK,eAAezrC,GACxBorC,EAASK,eAAezrC,EAAE,GAC1BorC,EAASK,eAAezrC,EAAE,IAExB0rC,EAAK,IAAIjC,QAAQnjB,QACnB8kB,EAASK,eAAezrC,EAAE,GAC1BorC,EAASK,eAAezrC,EAAE,EAAE,GAC5BorC,EAASK,eAAezrC,EAAE,EAAE,IAGhCwrC,EAAM5oB,KAAK,CAAC+oB,MAAM32B,EAAG42B,IAAIF,GAC7B,CAIA,GAFAF,EAAQA,EAAMp4B,QAAOqP,GAAKgC,KAAKilB,IAAIjnB,EAAEkpB,MAAMtB,EAAI5nB,EAAEmpB,IAAIvB,GAAK,OAEvDmB,EAAMnuC,QAAU,EACf,OAAO,KAEX,IAAIwuC,EAAOL,EAAMM,QAAO,CAACC,EAAMC,IAASD,EAAKJ,MAAMtB,EAAI2B,EAAKL,MAAMtB,EAAI0B,EAAOC,IAAML,MAAMtB,EACzFmB,EAAQA,EAAMp4B,QAAOqP,GAAKgC,KAAKilB,IAAIjnB,EAAEkpB,MAAMtB,EAAIwB,GAAQ,OAEvD,IAAIU,EAAerB,EAAKsB,OAAOC,iBAC3BC,EAASjD,QAAQkD,OAAOC,QAAQ1B,EAAKsB,OAAO9lB,QAAQrT,EAAG63B,EAAKsB,OAAO9lB,QAAQ2jB,EAAGa,EAAKsB,OAAO9lB,QAAQ9B,GAAGgC,SAAS6iB,QAAQkD,OAAOE,aAAapD,QAAQqD,KAAKC,EAAG7B,EAAKsB,OAAOQ,SAAS3C,IAC/K4C,EAAUxD,QAAQnjB,QAAQ4mB,qBAAqBhC,EAAKpkB,SAAU4lB,GAClElB,EAAQA,EAAMrhB,KAAI1H,IAAK,CAAEkpB,MAAMlC,QAAQnjB,QAAQ4mB,qBAAqBzqB,EAAEkpB,MAAOY,GAAcxlB,IAAIkmB,GAAUrB,IAAInC,QAAQnjB,QAAQ4mB,qBAAqBzqB,EAAEmpB,IAAKW,GAAcxlB,IAAIkmB,OAEvK9B,GAEAD,EAAKe,wBAGT,IAAIC,EAAc,GACdC,EAAYX,EAAMY,MACtB,MAAMZ,EAAMnuC,OAAS,EACrB,CACI,IAAIgvC,EAAWb,EAAMjpB,MAAKE,GAAKA,EAAEkpB,MAAMf,kBAAkBuB,EAAUP,IAAK,OAAUnpB,EAAEmpB,IAAIhB,kBAAkBuB,EAAUP,IAAK,QACzH,IAAIS,EACA,MAEJH,EAAYtpB,KAAKupB,GACjB,IAAIG,EAAgBd,EAAM3I,QAAQwJ,GAG9BF,EADDE,EAAST,IAAIhB,kBAAkBuB,EAAUP,IAAK,MACjC,CAACD,MAAMU,EAAST,IAAKA,IAAIS,EAASV,OAElCU,EAEhBb,EAAMxb,OAAOsc,EAAe,EAChC,CAGA,OAFAJ,EAAYtpB,KAAKupB,GAEVD,CACX,CAEA/C,4BAA4BgE,GAExB,IAAIC,EAAO3oB,KAAKgf,OAAO0J,EAAShjB,KAAI1H,GAAKA,EAAEpP,KACvCg6B,EAAeF,EAAS/5B,QAAOqP,GAAKgC,KAAKilB,IAAIjnB,EAAEpP,EAAI+5B,GAAQ,OAC3DE,EAAW7oB,KAAKygB,OAAOmI,EAAaljB,KAAI1H,GAAKA,EAAEmC,KAC/C2oB,EAAcF,EAAa9qB,MAAKE,GAAKgC,KAAKilB,IAAIjnB,EAAEmC,EAAI0oB,GAAY,OAEhErpC,EAAQkpC,EAAStK,QAAQ0K,GACzBC,EAAYvpC,EAAQ,GAAKkpC,EAAS9vC,OAAS,EAAI4G,EAAQ,EACvDwpC,EAAaN,EAASK,GAEtBpnB,EAAMqjB,QAAQnjB,QAAQonB,UAAUD,EAAWxD,SAASsD,IAExD,OAAGnnB,EAAI/S,EAAI,GAAK+S,EAAIxB,EAAI,EACbuoB,EAASQ,UAETR,CACf,E,4BCnJW,MAAMS,GACjBC,YAAYC,EAAOC,GAEf5wC,KAAK6wC,cAAgBF,EACrB3wC,KAAK4wC,OAASA,EACd5wC,KAAKmnB,aAAe,KACpBnnB,KAAK8wC,UAAY,GACjB9wC,KAAK+wC,OAAS,IAAIzE,GAAAA,IAAeqE,GAAQ,EAAM,CAAEK,SAAS,IAC1DhxC,KAAKixC,SAAWjxC,KAAKkxC,cACrBlxC,KAAKZ,UAAW,CACpB,CAEA8xC,cAEI,MAAMC,EAAQ,IAAI7E,GAAAA,IAActsC,KAAK+wC,QACrCI,EAAMC,WAAa,IAAI9E,GAAAA,IAAe,EAAG,EAAG,EAAG,GAC/C6E,EAAME,mBAAoB,EAE1B,MAAMC,EAAS,IAAIhF,GAAAA,IAAwB,SAAU,EAAG,EAAG,EAAG,IAAIA,GAAAA,IAAgB,EAAG,EAAG,GAAI6E,GAC5FG,EAAOC,YAAY,IAAIjF,GAAAA,IAAgB,EAAG,IAAK,KAC/CgF,EAAOE,UAAUlF,GAAAA,IAAgBljB,QACjCkoB,EAAOG,cAAczxC,KAAK6wC,eAAe,GACzCS,EAAOI,iBAAmB,GAC1BJ,EAAOK,iBAAmB,IAC1BL,EAAO5C,KAAO,EAEd,MAAMkD,EAAQ,IAAItF,GAAAA,IAAyB,QAAS,IAAInjB,GAAAA,EAAQ,EAAG,EAAG,GAAIgoB,GAwB1E,OAvBAS,EAAMC,UAAY,EAElB7xC,KAAK+wC,OAAOe,YAAY,IAAIxF,GAAAA,IAAiB,EAAG,EAAG,EAAG,IACtDgF,EAAOS,SAAW,IAAIzF,GAAAA,IAAiB,EAAG,EAAG,EAAG,GAKhDtsC,KAAKgyC,sBAAwB,IAAI1F,GAAAA,IAAuB,YAAa6E,EAAO,CACxEc,qBAAsB,EACtBC,iBAAkB,EAClBC,kBAAmB7F,GAAAA,IAAe8F,iBAEtCpyC,KAAKqyC,eAAiB,IAAI/F,GAAAA,IAAuB,iBAAkB6E,EAAO,CACtEc,qBAAsB,EACtBC,iBAAkB,EAClBC,kBAAmB7F,GAAAA,IAAe8F,iBAGtCpyC,KAAK+wC,OAAOuB,eAAc,KACtBnB,EAAM30C,QAAQ,IAGX20C,CACX,CAEAoB,eAEI,MAAMr6B,EAAQ,IACRC,EAAS,IACTq6B,EAAe,IACfC,EAASnG,GAAAA,IAAoBoG,aAAa,SAAU,CAAEx6B,QAAOC,SAAQq6B,gBAAgBxyC,KAAKixC,UAAU,GAC1GwB,EAAO9oB,SAAW,IAAIR,GAAAA,EAAQ,EAAE,EAAE,GAClCspB,EAAOE,SAAW3yC,KAAKixC,SAAS2B,kBAAkB,gBAClDH,EAAOI,kBAEP7yC,KAAKqyC,eAAeS,gBAAgBL,GACpCzyC,KAAKgyC,sBAAsBc,gBAAgBL,GAE3C,MAAMM,EAAUzG,GAAAA,IAAoB0G,UAAU,UAAU,CAAC5rB,KAAK,GAAGpnB,KAAKixC,UACtE8B,EAAQt6B,WAAY,CACxB,E,gBCnEJ,MAAMw6B,GAEFC,cAAcnF,GAEV,MAAMoF,EAAMpF,EAAKpkB,SAASH,QACpB6lB,EAAStB,EAAKsB,OACd+D,EAAOrF,EAAKsF,kBAAkBC,YAC9BC,EAAkBjH,GAAAA,IAAekH,aAAaJ,EAAKK,OAAOv9B,GAAIk9B,EAAKK,OAAOvG,GAAIkG,EAAKK,OAAOhsB,GAChGsmB,EAAKpkB,SAAWR,GAAAA,EAAQC,OACxB2kB,EAAKsB,OAAS,KACdtB,EAAK2F,0BAA0BH,GAC/BxF,EAAKpkB,SAAWwpB,EAChBpF,EAAKsB,OAASA,CAClB,CAEAsE,iBAAiB5F,GAEb,MAAMsB,EAAStB,EAAKsB,OACjBA,IAECtB,EAAK6F,UAAU,MACf5zC,KAAKkzC,cAAcnF,GAE3B,CAEA8F,cAAc9F,GAEV/tC,KAAK2zC,iBAAiB5F,GAEtB,MAAMoF,EAAMpF,EAAKpkB,SAASH,QAC1BukB,EAAKpkB,SAAWR,GAAAA,EAAQC,OACxB2kB,EAAK+F,mCACL/F,EAAKpkB,SAAWwpB,EAEhBpF,EAAK8B,SAAWvD,GAAAA,IAAgBljB,OAChC2kB,EAAKxkB,QAAU,IAAI+iB,GAAAA,IAAgB,EAAE,EAAE,GACvCyB,EAAKgG,oBACT,CAEAjH,SAASkH,EAAGC,EAAGhD,GAEX,MAAMiD,EAAKF,EAAG3E,OACR8E,EAAKF,EAAG5E,OAER+E,EAAQp0C,KAAKq0C,kBAAkBL,GAC/BM,EAAQt0C,KAAKq0C,kBAAkBJ,GAE/BM,EAASP,EAAGQ,iBACZC,EAASR,EAAGO,iBAElBD,EAAOl+B,SAAQq+B,GAAGA,EAAEd,UAAU,QAC9Ba,EAAOp+B,SAAQq+B,GAAGA,EAAEd,UAAU,QAE9B5zC,KAAK6zC,cAAcG,GACnBh0C,KAAK6zC,cAAcI,GAEnB,MAAMU,EAAOrI,GAAAA,IAAYsI,SAASZ,GAC5Ba,EAAOvI,GAAAA,IAAYsI,SAASX,GAE5Ba,EAASH,EAAK7H,SAAS+H,GACvB9G,EAAO+G,EAAOC,OAAO,KAAKf,EAAGrB,SAAS1B,GAAS,GA2BrD,OA1BA+C,EAAGzuB,UAEHgvB,EAAOl+B,SAAQq+B,IACX10C,KAAKkzC,cAAcwB,GACnBA,EAAEd,UAAU7F,EAAK,IAGrB0G,EAAOp+B,SAAQq+B,IACX10C,KAAKkzC,cAAcwB,GACnBA,EAAEd,UAAUK,EAAG,IAGhBC,IAECnG,EAAKsB,OAAS6E,EACdnG,EAAK8B,SAAS3C,EAAIkH,EAClBp0C,KAAKg1C,0BAA0BjH,EAAKmG,IAGrCC,IAECF,EAAG5E,OAAS8E,EACZF,EAAGpE,SAAS3C,EAAIoH,EAChBt0C,KAAKg1C,0BAA0Bf,EAAGE,IAG/BpG,CACX,CAEAiH,0BAA0BjH,EAAKsB,GAE3B,GAAGA,EACH,CACItB,EAAKpkB,SAAWokB,EAAKpkB,SAASmjB,SAASuC,EAAO1lB,UAC9CokB,EAAKxkB,QAAUwkB,EAAKxkB,QAAQE,SAAS4lB,EAAO9lB,SAC5CwkB,EAAKpkB,SAAWokB,EAAKpkB,SAASF,SAASskB,EAAKxkB,SAE5C,MAAM0rB,EAAM3tB,KAAK2tB,KAAK5F,EAAOQ,SAAS3C,GAChCgI,EAAM5tB,KAAK4tB,KAAK7F,EAAOQ,SAAS3C,GAChCiI,EAAIpH,EAAKpkB,SAASH,QACxBukB,EAAKpkB,SAASzT,EAAIi/B,EAAEj/B,EAAE++B,EAAME,EAAE1tB,EAAEytB,EAChCnH,EAAKpkB,SAASlC,EAAI0tB,EAAEj/B,EAAEg/B,EAAMC,EAAE1tB,EAAEwtB,EAE7B5F,EAAOA,QAENrvC,KAAKg1C,0BAA0BjH,EAAKsB,EAAOA,OAEnD,CACJ,CAEA+F,0BAA0BrH,GAEtB,MAAMvkB,EAAQukB,EAAKvkB,QACnBxpB,KAAKg1C,0BAA0BxrB,EAAMA,EAAM6lB,QAC3C,IAAI8D,EAAM3pB,EAAMG,SAASH,QAEzB,OADAA,EAAMjE,UACC4tB,CACX,CAEAkC,eAAetH,GAEX,IAAIuH,EAAQvH,EAAKxkB,QAAQC,QAUzB,OATGukB,EAAKsB,SAEJiG,EAAQvH,EAAKxkB,QAAQE,SAASskB,EAAKsB,OAAO9lB,UAE3CwkB,EAAKsB,QAAQA,SAEZiG,EAAQvH,EAAKxkB,QAAQE,SAASzpB,KAAKq0C,kBAAkBtG,EAAKsB,OAAOA,UAG9DiG,CACX,CAEAjB,kBAAkBtG,GAEd,IAAIwH,EAAM,EAUV,OATGxH,EAAKsB,SAEJkG,GAAOxH,EAAKsB,OAAOQ,SAAS3C,GAE7Ba,EAAKsB,QAAQA,SAEZkG,GAAOv1C,KAAKq0C,kBAAkBtG,EAAKsB,SAGhCkG,CACX,CAEAC,YAAYzH,GAER,MAAM0H,EAAU1H,EAAKsF,kBACrB,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCiC,EAA4C,EAAnCs9B,EAAQnC,YAAYoC,WAAWxI,EACxCyI,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,MAAO,CAACvP,MAAQA,EAAOC,OAASA,EAAQw9B,MAAQA,EACpD,EAGJ,WAAmB1C,G,oCCnKnB92B,eAAey5B,GAAmBC,EAAO/hC,EAAKgiC,GAE1C,MAAMjvC,EAAIivC,EAAY//B,aAAaC,QAAQoP,MAAKlP,GAAGA,EAAE6/B,OAASjiC,EAAKiiC,OAE7DC,QAAkBF,EAAYG,eAAeniC,GACnD,GAAG+hC,EAAOK,SAENL,EAASG,OAIT,IAAI,IAAIn+B,KAAKm+B,EAAUG,SAEnB,GAAGt+B,EAAE1B,KAAK4/B,OAASF,EAAO1/B,KAAK4/B,KAC/B,CACIF,EAASh+B,EACT,KACJ,CAIR,MAAMu+B,EAAqBN,EAAY71C,QAAQgW,QAAOC,GAAGA,EAAE2/B,QAAQE,OAASjiC,EAAKiiC,OACjF,IAAI,IAAIrB,KAAK0B,EAET1B,EAAEmB,OAASG,EAGf,MAAMK,EAA2BP,EAAY71C,QAAQgW,QAAOC,IAAIA,EAAE2/B,OAAOK,WAAUjgC,QAAOC,GAAGA,EAAE2/B,QAAQvsB,aAAaysB,OAASjiC,EAAKiiC,OAClI,IAAI,IAAIrB,KAAK2B,EAET,IAAI,IAAIx+B,KAAKm+B,EAAUG,SAEnB,GAAGt+B,EAAE1B,KAAK4/B,OAASrB,EAAEmB,OAAO1/B,KAAK4/B,KACjC,CACIrB,EAAEmB,OAASh+B,EACX,KACJ,CAGLhR,GAECA,EAAE0e,UAENuwB,EAAY/gC,YAAY2B,YAC5B,CAEA,SAAS4/B,GAAgBT,GAErB,OAAGA,EAAOK,SAECL,EAAOU,aAEXV,EAAOvsB,aAAaitB,YAC/B,CAEO,MAAMC,GACT9F,YAAYmF,EAAO/hC,GAEf9T,KAAK61C,OAASA,EACd71C,KAAK8T,KAAOA,EACZ9T,KAAK81C,YAAcD,EAAO7+B,UAAU45B,OAAO9wC,YAC/C,CAEAqc,aAEInc,KAAK61C,OAAOtwB,SAChB,CAEApJ,mBAEUy5B,GAAmB51C,KAAK61C,OAAO71C,KAAK8T,KAAK9T,KAAK81C,YACxD,EAGG,MAAMW,GACT/F,YAAYmF,EAAO/hC,GAEf9T,KAAK61C,OAASA,EACd71C,KAAK8T,KAAOA,EACZ9T,KAAK81C,YAAcD,EAAO7+B,UAAU45B,OAAO9wC,YAC/C,CAEAqc,mBAEUy5B,GAAmB51C,KAAK61C,OAAO71C,KAAK8T,KAAK9T,KAAK81C,YACxD,CAEA35B,aAEInc,KAAK61C,OAAOtwB,SAChB,EAGG,MAAMmxB,GACThG,YAAYmF,EAAOc,GAEf32C,KAAK61C,OAASA,EACd71C,KAAK22C,MAAQA,EACb32C,KAAK42C,MAAQ,KACb52C,KAAK81C,YAAcD,EAAO7+B,UAAU45B,OAAO9wC,YAC/C,CAEAqc,mBAEUy5B,GAAmB51C,KAAK61C,OAAO71C,KAAK22C,MAAM32C,KAAK81C,aACrDQ,GAAgBt2C,KAAK61C,QAAQ7gC,uBACjC,CAEAmH,mBAEUy5B,GAAmB51C,KAAK61C,OAAO71C,KAAK42C,MAAM52C,KAAK81C,aACrDQ,GAAgBt2C,KAAK61C,QAAQ7gC,uBACjC,EAGG,MAAM6hC,GACTnG,YAAYmF,GAER71C,KAAK61C,OAASA,CAClB,CAEA15B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAOkB,UAAUT,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACxDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,CAEA36B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAOmB,OAAOV,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACrDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,EAGG,MAAMG,GACTvG,YAAYmF,GAER71C,KAAK61C,OAASA,CAClB,CAEA15B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAOmB,OAAOV,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACrDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,CAEA36B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAOkB,UAAUT,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACxDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,EAGG,MAAMI,GACTxG,YAAYmF,GAER71C,KAAK61C,OAASA,CAClB,CAEA15B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAOsB,QAAQb,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACtDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,CAEA36B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAOsB,QAAQb,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACtDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,EAGG,MAAMM,GACT1G,YAAYmF,GAER71C,KAAK61C,OAASA,CAClB,CAEA15B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAOwB,QAAQf,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACtDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,CAEA36B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAOwB,QAAQf,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACtDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,EAGG,MAAMQ,GACT5G,YAAYmF,GAER71C,KAAK61C,OAASA,CAClB,CAEA15B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAO0B,SAASjB,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACvDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,CAEA36B,aAEInc,KAAK61C,OAAOiB,eAAgB,EAC5B92C,KAAK61C,OAAO0B,SAASjB,GAAgBt2C,KAAK61C,QAAQ71C,KAAK61C,QACvDS,GAAgBt2C,KAAK61C,QAAQ7gC,wBAC7BhV,KAAK61C,OAAOiB,eAAgB,CAChC,E,MC9NW,MAAMU,GACjB9G,cAEI1wC,KAAKy3C,cAAgB,GACrBz3C,KAAK03C,mBAAqB,GAC1B13C,KAAK23C,qBAAuB,GAC5B33C,KAAK43C,SAAW,EACpB,CAEAC,sBAEI73C,KAAKy3C,cAAcphC,SAAQyhC,IAEvBA,EAAQvyB,SAAS,IAErBvlB,KAAKy3C,cAAgB,GACrBz3C,KAAK03C,mBAAmBrhC,SAAQ03B,IAE5BA,EAAKxoB,SAAS,IAElBvlB,KAAK03C,mBAAqB,GAC1B13C,KAAK23C,qBAAqBthC,SAAQyhC,IAE9BA,EAAQvyB,SAAS,IAErBvlB,KAAK23C,qBAAuB,EAChC,CAEAI,mBAAmB5G,GAEf,OAAO,IACX,CAEA6G,cAAcC,GAEV,IAAIC,EAAU,IAAIC,GAAAA,GAAc,WAChCD,EAAQE,WAAc,IAAI9L,QAAQ+L,OAAO,EAAG,EAAG,EAAG,IAAMC,cACxDJ,EAAQK,MAAQ,QAChBL,EAAQM,sBAAuB,EAC/BN,EAAQO,uBAAwB,EAChCP,EAAQQ,OAAS,IACjBR,EAAQz/B,WAAY,EACpBw/B,EAAIU,WAAWT,GACf,IAAIU,EAAY,IAAIT,GAAAA,GAAc,cAAe,IACjDS,EAAUhB,SAAW53C,KAAK43C,SAC1BgB,EAAUC,aAAc,EACxBD,EAAUE,WAAa,MACvBF,EAAUG,YAAc,OACxBH,EAAUI,aAAe,OACzBJ,EAAUK,cAAgB,MAC1Bf,EAAQS,WAAWC,GAEnB54C,KAAKy3C,cAAchyB,KAAKyyB,EAC5B,CAEAgB,mBAAmBC,GAEf,OAAOhB,GAAAA,MAA2BiB,mBAAmB,MAAM,EAAMD,EACrE,CAEAE,yBAEI,IAAIC,EAAUt5C,KAAKu5C,uBAEnB,MAAO,CACHD,QAASA,EAEjB,CAEAE,gBAEI,MAAO,EACX,CAEAC,8BAA8BC,EAAiBvI,EAAOwI,EAAMC,GAExD,KAAGD,EAAKz5C,QAAU,GAKlB,IAFA,IAAI25C,EAAM75C,KAAK85C,iBAAiB3I,EAAO,CAAC,UAEhCtuC,EAAE,EAAGA,EAAE82C,EAAKz5C,OAAQ2C,IAC5B,CACI,IAAIgrC,EAAS8L,EAAK92C,GAEdk3C,EAAW,KACf/5C,KAAKg6C,MAAM3jC,SAAQ4jC,IAEf,IAAIA,EAAK9jC,KAAK4M,SAAS8F,SAAS,YAChC,CACI,IAAIqxB,EAAOD,EAAKE,mBACZC,EAAU9N,QAAQnjB,QAAQonB,UAAU2J,EAAKzL,IAAI3B,SAASoN,EAAK1L,QAC/D,GAAG4L,EAAQ3wB,SAASokB,GAAQJ,kBAAkBnB,QAAQnjB,QAAQC,OAAQ,MACtE,CACI,IAAIixB,EAAatO,GAAauO,uBAAuBJ,EAAK1L,MAAO0L,EAAKzL,IAAKoL,EAAIpG,QAC3E8G,EAAWjO,QAAQnjB,QAAQonB,UAAU8J,EAAWvN,SAAS+M,EAAIpG,SACjE,GAAG8G,EAAS9M,kBAAkBI,EAAQ,MAElC,GAAe,MAAZkM,EACCA,EAAWE,MAEf,CACI,IAAIO,EAAUT,EAASD,iBAAiB3I,GACpCsJ,EAAY1O,GAAauO,uBAAuBJ,EAAK1L,MAAO0L,EAAKzL,IAAK+L,EAAQ/G,QAC9ExqB,EAAMqjB,QAAQnjB,QAAQonB,UAAUkK,EAAU3N,SAAS0N,EAAQ/G,SAC5DxqB,EAAIwkB,kBAAkBI,EAAQ,QAC7BkM,EAAWE,EACnB,CAER,CACJ,KAGJ,IAAItwB,EAAWkwB,EAAIpG,OAAO7pB,IAAIikB,EAAOpkB,SAASowB,EAAInE,aAElD,GAAe,MAAZqE,EACH,CACI,IAAIW,EAAWX,EAASY,cACpBC,EAAa7O,GAAauO,uBAAuBI,EAASlM,MAAM5kB,IAAIiwB,EAAIpG,QAASiH,EAASjM,IAAI7kB,IAAIiwB,EAAIpG,QAASoG,EAAIpG,QACnHoH,EAAcvO,QAAQnjB,QAAQonB,UAAUqK,EAAW9N,SAAS+M,EAAIpG,SAEpEzzC,KAAK86C,iBAAiBpB,EAAiBvI,EAAOxnB,EAAUowB,EAAUH,EAAoB/L,EAAQgN,EAClG,CACJ,CACJ,CAEAC,iBAAiBpB,EAAiBvI,EAAOsC,EAAQwG,EAAML,EAAoBmB,EAAUF,GAEjF,IAAIG,EAAW,IAAI1O,QAAQ2O,KAAK,WAAY9J,EAAMF,UAClD+J,EAASrxB,SAAW8pB,EAEpB,IAAIyH,EAAQ,IAAI/C,GAAAA,GAChB+C,EAAM1C,sBAAuB,EAC7B0C,EAAMzC,uBAAwB,EAC9ByC,EAAMC,QAAU,EAEhB,IAAIC,EAAW,GACXC,EAAc,GACD,GAAdN,EAAStzB,GAER4zB,EAAc/O,QAAQqD,KAAK2L,EAC3BF,EAAS31B,KAAK,CAACjM,MAAO,eAAgB+hC,UAAWR,EAAU9xB,IAAK4xB,EAAa79C,KAAM,aACnFo+C,EAAS31B,KAAK,CAACjM,MAAO,iBAAkB+hC,UAAWR,EAAU9xB,IAAK4xB,EAAYnN,SAAU1wC,KAAM,aAC9Fk+C,EAAMM,YAAa,IAEA,GAAfT,EAAStzB,GAEb4zB,EAAc/O,QAAQqD,KAAK2L,EAC3BF,EAAS31B,KAAK,CAACjM,MAAO,eAAgB+hC,UAAWR,EAAU9xB,IAAK4xB,EAAYnN,SAAU1wC,KAAM,aAC5Fo+C,EAAS31B,KAAK,CAACjM,MAAO,iBAAkB+hC,UAAWR,EAAU9xB,IAAK4xB,EAAa79C,KAAM,aACrFk+C,EAAMM,YAAa,GAED,GAAdT,EAAS7kC,GAEbmlC,EAAc/O,QAAQqD,KAAK8L,EAC3BL,EAAS31B,KAAK,CAACjM,MAAO,iBAAkB+hC,UAAWR,EAAU9xB,IAAK4xB,EAAYnN,SAAU1wC,KAAM,aAC9Fo+C,EAAS31B,KAAK,CAACjM,MAAO,kBAAmB+hC,UAAWR,EAAU9xB,IAAK4xB,EAAa79C,KAAM,aACtFk+C,EAAMM,YAAa,IAEA,GAAfT,EAAS7kC,IAEbmlC,EAAc/O,QAAQqD,KAAK8L,EAC3BL,EAAS31B,KAAK,CAACjM,MAAO,iBAAkB+hC,UAAWR,EAAU9xB,IAAK4xB,EAAa79C,KAAM,aACrFo+C,EAAS31B,KAAK,CAACjM,MAAO,kBAAmB+hC,UAAWR,EAAU9xB,IAAK4xB,EAAYnN,SAAU1wC,KAAM,aAC/Fk+C,EAAMM,YAAa,GAGvB,IAAIE,EAAW9B,EAAmBx0B,MAAKu2B,GAA8C,GAAzCA,EAAEC,KAAKnyB,SAAS4xB,GAAan7C,WACzE,GAAIw7C,EAAJ,CAGAN,EAAWA,EAASnlC,QAAOqP,GAAKo2B,EAASG,eAAeC,MAAKH,GAAKA,GAAKr2B,EAAEtoB,SAEzE,IAAIqoB,EAASrlB,KACbo7C,EAAS/kC,SAAQ0lC,IAEb,IAAIR,EAAYQ,EAAQR,UACpBtyB,EAAM8yB,EAAQ9yB,IACdjsB,EAAO++C,EAAQ/+C,KACfg/C,EAASh8C,KAAKi8C,kBAAkBvC,EAAiBvI,EAAO4K,EAAQviC,MAAO,KAAM,KAAK,GAAO,SAAS0iC,GAE5E,GAAnBA,EAAIC,cAGP92B,EAAO+2B,YAAYjL,EAAO8I,EAAMsB,EAAWtyB,EAAKjsB,GAEhDqoB,EAAOwyB,sBACPphC,YAAW,KACJ06B,EAAMzsB,gBAAkBW,GACvBA,EAAO0yB,mBAAmB5G,EAAM,GACrC,KACP,IACA+J,EAAMvC,WAAWqD,EAAO,IAG5BtC,EAAgBf,WAAWuC,GAC3BA,EAAMmB,aAAarB,GAEnBh7C,KAAK03C,mBAAmBjyB,KAAKu1B,GAC7Bh7C,KAAK23C,qBAAqBlyB,KAAKy1B,EA9BrB,CA+Bd,CAEAoB,mBAAmBlrB,GAEf,IAAIrZ,EAAO,IAAIogC,GAAAA,GACfpgC,EAAKygC,sBAAuB,EAC5BzgC,EAAK0gC,uBAAwB,EAC7B1gC,EAAKwkC,aAAe,GACpBxkC,EAAKuT,UAAY,EACjBvT,EAAKqgC,WAAa,QAClBrgC,EAAKykC,YAAc,OACnBzkC,EAAK0kC,WAAa,EAClB1kC,EAAK+gC,WAAa,MAClB/gC,EAAKghC,YAAc,MACnBhhC,EAAKihC,aAAe,MACpBjhC,EAAKkhC,cAAgB,MAErB,IAAIyD,EAAU,IAAIvE,GAAAA,GAWlB,OAVAuE,EAAQtrB,KAAOA,EACfsrB,EAAQnE,MAAQ,QAChBmE,EAAQ7D,aAAc,EACtB6D,EAAQ9E,SAAW53C,KAAK43C,SACxB8E,EAAQ5D,WAAa,MACrB4D,EAAQ3D,YAAc,MACtB2D,EAAQ1D,aAAe,MACvB0D,EAAQzD,cAAgB,MACxBlhC,EAAK4gC,WAAW+D,GAET3kC,CACX,CAEAwhC,uBAEI,IAAIoD,EAAc,IAAIxE,GAAAA,GAStB,OARAwE,EAAYnE,sBAAuB,EACnCmE,EAAYlE,uBAAwB,EACpCkE,EAAYC,oBAAsBzE,GAAAA,GAAY0E,4BAC9CF,EAAYG,kBAAoB3E,GAAAA,GAAY4E,0BAC5CJ,EAAYxB,QAAU,EACtBwB,EAAYnB,YAAa,EACzBmB,EAAY1D,cAAgB,OAErB0D,CACX,CAEAK,kBAAkBtD,EAAiBvI,EAAOl0C,EAAMggD,GAE5C,IAAI/B,EAAQ,IAAI/C,GAAAA,GAChB+C,EAAM1C,sBAAuB,EAC7B0C,EAAMzC,uBAAwB,EAC9ByC,EAAM0B,oBAAsBzE,GAAAA,GAAY0E,4BACxC3B,EAAMM,YAAa,EAEnB,IAAI0B,EAAWl9C,KAAKs8C,mBAAmBr/C,GA6FvC,OA5FAi+C,EAAMvC,WAAWuE,GAEjBD,EAAQ5mC,SAAQvC,IAEZ,IAAI9W,EAAO8W,EAAK9W,KACZwc,EAAQ,KACR0+B,EAAU,KACV90B,GAAY,EAIhB,OAHGtP,EAAKsP,YACJA,EAAYtP,EAAKsP,WAEdpmB,GAEH,IAAK,SACDwc,EAAQ,aACR0+B,EAAU,QACV,MACJ,IAAK,SACD1+B,EAAQ,aACR0+B,EAAU,WACV,MACJ,IAAK,aACD1+B,EAAQ,iBACR0+B,EAAU,UACV,MACJ,IAAK,UACD1+B,EAAQ,cACR0+B,EAAU,SACV,MACJ,IAAK,MACD1+B,EAAQ,eACR0+B,EAAU,KACV,MACJ,IAAK,WACD1+B,EAAQ,eACR0+B,EAAU,UACV,MACJ,IAAK,WACD1+B,EAAQ,eACR0+B,EAAU,UACV,MACJ,IAAK,gBACD1+B,EAAQ,oBACR0+B,EAAU,cACV,MACJ,IAAK,YACD1+B,EAAQ,gBACR0+B,EAAU,SACV,MACJ,IAAK,gBACD1+B,EAAQ,oBACR0+B,EAAU,cACV,MACJ,IAAK,OACD1+B,EAAQ,WACR0+B,EAAU,KACV,MACJ,IAAK,YACD1+B,EAAQ,gBACR0+B,EAAU,OACV,MACJ,IAAK,SACD1+B,EAAQ,aACR0+B,EAAU,KACV,MACJ,QACI,MAGR,GAAY,MAAT1+B,EACH,CACI,IAAIq8B,EAAS71C,KACTg8C,EAASh8C,KAAKi8C,kBAAkBvC,EAAiBvI,EAAO33B,EAAO0+B,EAAS,EAAG90B,GAAW,SAAS84B,GAEzE,GAAnBA,EAAIC,cAGProC,EAAKqpC,MAAMhM,EAAO0E,GAClBA,EAAOgC,uBAEJ/jC,EAAK9W,KAAK6rB,SAAS,WAAa/U,EAAK9W,KAAK6rB,SAAS,WAAa/U,EAAK9W,KAAK6rB,SAAS,eAElFpS,YAAW,KACJ06B,EAAMzsB,gBAAkBmxB,GACvBA,EAAOkC,mBAAmB5G,EAAM,GACrC,KAEX,IACA+J,EAAMvC,WAAWqD,EACrB,KAGGd,CACX,CAEAe,kBAAkBvC,EAAiBvI,EAAOiM,EAAUlF,EAASqE,EAAcn5B,EAAWi6B,GAElF,IAAIC,EAAa,eAEbtB,EAAS,IAAI7D,GAAAA,GACjB6D,EAAOxD,sBAAuB,EAC9BwD,EAAOvD,uBAAwB,EAC/BuD,EAAOzD,MAAQ,mBAEf,IAAIxgC,EAAO,IAAIogC,GAAAA,GACfpgC,EAAKygC,sBAAuB,EAC5BzgC,EAAK0gC,uBAAwB,EAC7B1gC,EAAKwkC,aAAeA,EACpBxkC,EAAKuT,UAAY,EACjBvT,EAAKykC,YAAc,OACnBzkC,EAAK0kC,WAAa,EAClB1kC,EAAKqgC,WAAah1B,EAAY,UAAY,QAC1CrL,EAAK+gC,WAAa,MAClB/gC,EAAKghC,YAAc,MACnBhhC,EAAKihC,aAAe,MACpBjhC,EAAKkhC,cAAgB,MAErB,IAAIz/B,EAAQ,IAAI2+B,GAAAA,GAAU,QAASmF,EAAaF,GA6ChD,OA5CA5jC,EAAMtB,MAAQ,OACdsB,EAAMrB,OAAS,OACfqB,EAAMs/B,WAAa,MACnBt/B,EAAMu/B,YAAc,MACpBv/B,EAAMw/B,aAAe,MACrBx/B,EAAMy/B,cAAgB,MAEtB+C,EAAOuB,yBAAyB3zB,KAAI,WAEhC,GAAY,MAATunB,EACH,CACI,IAAIqM,EAAWrM,EAAMa,sBACrBwL,EAASC,iBACb,CAEA,GAAc,MAAXvF,EACH,CACI,IAAIwF,EAAchE,EAAgBiE,iBAAiB,WACnDD,EAAYjlC,WAAY,EAExB,IAAImlC,EAAYlE,EAAgBiE,iBAAiB,eACjDC,EAAUxsB,KAAO8mB,EAEjB,IAAIhgC,EAAQi5B,EAAMJ,OAAO8M,iBACrB1lC,EAASg5B,EAAMJ,OAAO+M,kBAE1BJ,EAAYK,aAAe/B,EAAOgC,QAAW9lC,EAAQ,EACrDwlC,EAAYO,YAAcjC,EAAOkC,QAAW/lC,EAAS,EAAOulC,EAAYS,cAC5E,CACJ,IACAnC,EAAOoC,uBAAuBx0B,KAAI,WAE9B,IAAIsuB,EAAUwB,EAAgBiE,iBAAiB,WAC/CzF,EAAQz/B,WAAY,CACxB,IACAujC,EAAOqC,yBAAyBz0B,IAAIyzB,GACpCrB,EAAOsC,kBAAkB10B,KAAI,SAASikB,GAElCsD,EAAMoN,kBAAkB1Q,EAAOX,EACnC,IAEA8O,EAAOrD,WAAW5gC,GAClBA,EAAK4gC,WAAWn/B,GAETwiC,CACX,CAEAwC,iBAAiBrN,EAAO0E,EAAQzkB,EAAMmrB,EAAckC,EAAmBpB,GAEnE,IAAIrB,EAAS,IAAI7D,GAAAA,GACjB6D,EAAOxD,sBAAuB,EAC9BwD,EAAOvD,uBAAwB,EAC/BuD,EAAOzD,MAAQ,mBAEf,IAAIxgC,EAAO,IAAIogC,GAAAA,GACfpgC,EAAKygC,sBAAuB,EAC5BzgC,EAAK0gC,uBAAwB,EAC7B1gC,EAAKwkC,aAAeA,EACpBxkC,EAAKuT,UAAY,EACjBvT,EAAKykC,YAAc,OACnBzkC,EAAK0kC,WAAa,EAClB1kC,EAAKqgC,WAAa,QAClBrgC,EAAK+gC,WAAa,MAClB/gC,EAAKghC,YAAc,MACnBhhC,EAAKihC,aAAe,MACpBjhC,EAAKkhC,cAAgB,MAErB,IAAIyD,EAAU,IAAIvE,GAAAA,GAiClB,OAhCAuE,EAAQtrB,KAAOA,EACfsrB,EAAQnE,MAAQ,QAChBmE,EAAQ7D,aAAc,EACtB6D,EAAQ9E,SAAW53C,KAAK43C,SACxB8E,EAAQ5D,WAAa,MACrB4D,EAAQ3D,YAAc0F,EACtB/B,EAAQ1D,aAAeyF,EACvB/B,EAAQzD,cAAgB,MACxBlhC,EAAK4gC,WAAW+D,GAEhBV,EAAOuB,yBAAyB3zB,KAAI,WAEhC,GAAY,MAATunB,EACH,CACI,IAAIqM,EAAWrM,EAAMa,sBACrBwL,EAASC,iBACb,CACJ,IACAzB,EAAOqC,yBAAyBz0B,KAAI,SAASsyB,GAEnB,GAAnBA,EAAIC,aAGPkB,EAAclM,EAAO0E,EACzB,IACAmG,EAAOsC,kBAAkB10B,KAAI,SAASikB,GAElCsD,EAAMoN,kBAAkB1Q,EAAOX,EACnC,IAEA8O,EAAOrD,WAAW5gC,GAEXikC,CACX,CAEA0C,aAAavN,EAAO0E,GAEhB1E,EAAMjqB,aAAa2uB,EAAOvsB,aAC9B,CAEA0tB,OAAO7F,EAAO0E,GAENA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA6B/I,IAC3E,IAAIgJ,EAAWhJ,EAAOiJ,qBAClBC,EAAWlJ,EAAOmJ,qBAEtBH,EAASxoC,SAAQiP,IAEb,IAAIuqB,EAAWvqB,EAAEuqB,SAAS3C,GACvB2C,GAAqB,GAARvoB,KAAK23B,IAAQpP,GAAoB,EAARvoB,KAAK23B,MAC1CpP,EAAW,GAEfvqB,EAAEuqB,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,UAAU,GAAG,IAEzDJ,EAAS1oC,SAAQiP,IAEb,IAAIuqB,EAAWvqB,EAAEuqB,SAAS3C,GACvB2C,GAAqB,GAARvoB,KAAK23B,IAAQpP,GAAoB,EAARvoB,KAAK23B,MAC1CpP,EAAW,GAEfvqB,EAAEuqB,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,UAAU,GAAG,IAGzDhO,EAAMiO,mBACN3oC,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEAqgC,UAAU5F,EAAO0E,GAETA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAAgC/I,IAC9E,IAAIgJ,EAAWhJ,EAAOiJ,qBAClBC,EAAWlJ,EAAOmJ,qBAEtBH,EAASxoC,SAAQiP,IAEb,IAAIuqB,EAAWvqB,EAAEuqB,SAAS3C,GACvB2C,GAAqB,GAARvoB,KAAK23B,IAAQpP,GAAoB,EAARvoB,KAAK23B,MAC1CpP,EAAW,GAEfvqB,EAAEuqB,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,WAAW,GAAG,IAE1DJ,EAAS1oC,SAAQiP,IAEb,IAAIuqB,EAAWvqB,EAAEuqB,SAAS3C,GACvB2C,GAAqB,GAARvoB,KAAK23B,IAAQpP,GAAoB,EAARvoB,KAAK23B,MAC1CpP,EAAW,GAEfvqB,EAAEuqB,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,WAAW,GAAG,IAG1DhO,EAAMiO,mBACN3oC,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEA2oC,IAAIlO,EAAO0E,GAGX,CAEAsB,QAAQhG,EAAO0E,GAEPA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA8B/I,IAC5E,IAAIgJ,EAAWhJ,EAAOiJ,qBAClBC,EAAWlJ,EAAOmJ,qBAEtB,GAAGnJ,EAAOK,SACV,CACI,MAAMoJ,EAAS,CAACzJ,EAAOt/B,aAAcs/B,EAAOnsB,eAAgBmsB,EAAOhsB,gBAC7D0rB,EAAMM,EAAOt/B,aAAas5B,SAAS3C,EACnCgI,EAAM5tB,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,GAAK7tB,QAAQ,IAEhC,IAARwtB,EAECoK,EAAOjpC,SAAQiP,IAEXA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,CAAC,IAK9BopC,EAAOjpC,SAAQiP,IAEXA,EAAEiE,QAAQ9B,GAAKnC,EAAEiE,QAAQ9B,CAAC,GAGtC,MAGIo3B,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQ9B,GAAKnC,EAAEiE,QAAQ9B,CAAC,IAE9Bs3B,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQ9B,GAAKnC,EAAEiE,QAAQ9B,CAAC,IAIlC0pB,EAAMiO,mBACN3oC,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEA2gC,QAAQlG,EAAO0E,GAEPA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA8B/I,IAC5E,IAAIgJ,EAAWhJ,EAAOiJ,qBAClBC,EAAWlJ,EAAOmJ,qBAEtB,GAAGnJ,EAAOK,SACV,CACI,MAAMoJ,EAAS,CAACzJ,EAAOt/B,aAAcs/B,EAAOnsB,eAAgBmsB,EAAOhsB,gBAC7D0rB,EAAMM,EAAOt/B,aAAas5B,SAAS3C,EACnCgI,EAAM5tB,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,GAAK7tB,QAAQ,IAEhC,IAARwtB,EAECoK,EAAOjpC,SAAQiP,IAEXA,EAAEiE,QAAQ9B,GAAKnC,EAAEiE,QAAQ9B,CAAC,IAK9B63B,EAAOjpC,SAAQiP,IAEXA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,CAAC,GAGtC,MAGI2oC,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,CAAC,IAE9B6oC,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,CAAC,IAIlCi7B,EAAMiO,mBACN3oC,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEA6oC,KAAKpO,EAAO0E,GAGZ,CAEA0B,SAASpG,EAAO0E,GAGhB,CAEA2J,OAAOrO,EAAO0E,GAGd,CAEA4J,YAAYC,EAAOC,EAAUC,EAAaC,EAAcC,EAAQC,EAAQC,GAEhEA,IACAA,EAAgB,CAAC,IAAK,MAG1B,IAAIC,EAAS,GACTC,EAAa,GAEbC,EAAe,GACA,MAAhBN,IAEsB,MAAlBA,EAAapE,GAEZ0E,EAAa16B,KAAK,KACD,MAAlBo6B,EAAavE,GACZ6E,EAAa16B,KAAK,MAG1B,IAAI,IAAI26B,EAAE,EAAGA,EAAEV,EAAMx/C,OAAQkgD,IAC7B,CACI,IAAIvG,EAAM6F,EAAMU,GAEZC,EAAY,GACbL,EAAcn3B,SAAS,OAEtBw3B,EAAU56B,KAAK,CAACvoB,MAAM28C,EAAIyG,aAAapqC,EAAGqqC,SAAUT,EAAQlE,KAAK,MACjEyE,EAAU56B,KAAK,CAACvoB,MAAM28C,EAAI2G,aAAatqC,EAAGqqC,SAAUT,EAAQlE,KAAK,OAElEoE,EAAcn3B,SAAS,OAEtBw3B,EAAU56B,KAAK,CAACvoB,MAAM28C,EAAIyG,aAAa74B,EAAG84B,SAAUR,EAAQnE,KAAK,MACjEyE,EAAU56B,KAAK,CAACvoB,MAAM28C,EAAI2G,aAAa/4B,EAAG84B,SAAUR,EAAQnE,KAAK,OAGrE,IAAI,IAAI/4C,EAAE,EAAGA,EAAE88C,EAASz/C,OAAQ2C,IAChC,CACI,IAAIgzC,EAAS8J,EAAS98C,GAClBsT,EAAO0/B,EAAO1/B,KAElB,GAAoB,UAAjBA,EAAKwO,UAEJ,IAAIi7B,EAAYhP,OAAO9wC,aAAagC,gBAChC,cAEH,GAAoB,SAAjBqU,EAAKwO,UAET,IAAIi7B,EAAYhP,OAAO9wC,aAAa0B,eAChC,cAEH,GAAoB,QAAjB2U,EAAKwO,UAET,IAAIi7B,EAAYhP,OAAO9wC,aAAa4B,cAChC,aAEH,IAAoB,QAAjByU,EAAKwO,SAMT,SAJA,IAAIi7B,EAAYhP,OAAO9wC,aAAa8B,cAChC,QAGI,CAEZ,IAAI6+C,EAAY5K,EAAOiE,iBAAiB8F,GACxCS,EAAUhqC,SAAQsT,IAEd,IAAI+2B,EAAS,GACTC,EAAU,GACd,GAAoB,KAAjBh3B,EAASiyB,KACZ,CACI8E,EAAOj7B,KAAKg7B,EAAUG,QAAQn5B,GAC9Bi5B,EAAOj7B,KAAKg7B,EAAUI,QAAQp5B,GAC9B,IAAI2yB,EAAU9N,QAAQnjB,QAAQonB,UAAU,IAAIjE,QAAQnjB,QAAQs3B,EAAUG,QAAQ1qC,EAAI2jC,EAAI2G,aAAatqC,EAAG,EAAG,IACzGyqC,EAAQl7B,KAAKg7B,EAAUK,YAAY5qC,EAAKkkC,EAAQlkC,GAAKuqC,EAAU/K,WAAWx/B,EAAI,KAC9EyqC,EAAQl7B,KAAKo0B,EAAIiH,YAAY5qC,EAAKkkC,EAAQlkC,GAAK2jC,EAAInE,WAAWx/B,EAAI,IACtE,KAEA,CACIwqC,EAAOj7B,KAAKg7B,EAAUG,QAAQ1qC,GAC9BwqC,EAAOj7B,KAAKg7B,EAAUI,QAAQ3qC,GAC1BkkC,EAAU9N,QAAQnjB,QAAQonB,UAAU,IAAIjE,QAAQnjB,QAAQ,EAAG,EAAGs3B,EAAUG,QAAQn5B,EAAIoyB,EAAI2G,aAAa/4B,IACzGk5B,EAAQl7B,KAAKg7B,EAAUK,YAAYr5B,EAAK2yB,EAAQ3yB,GAAKg5B,EAAU/K,WAAWjuB,EAAI,KAC9Ek5B,EAAQl7B,KAAKo0B,EAAIiH,YAAYr5B,EAAK2yB,EAAQ3yB,GAAKoyB,EAAInE,WAAWjuB,EAAI,IACtE,CAEAi5B,EAAOrqC,SAAQnZ,IAEX,IAAI6jD,EAAUp3B,EAASzsB,MAAQA,EAC3B8jD,EAAU15B,KAAKilB,IAAIwU,IACpBZ,EAAat3B,SAASc,EAASiyB,MAAQoF,GAAW,GAAMA,GAAWf,KAE3C,MAApBt2B,EAASs3B,SAAmBt3B,EAASs3B,SAAWD,KAE/Cr3B,EAASu3B,OAAShkD,EAClBysB,EAASo3B,QAAUA,EACnBp3B,EAASs3B,QAAUD,EACnBr3B,EAASg3B,QAAUA,EAE3B,GACF,GAEV,CAEA,IAAIQ,EAAUd,EAAUpqC,QAAOqP,GAAkB,MAAbA,EAAE27B,UACnCE,EAAQjhD,OAAS,GAGhBggD,EAAWz6B,QAAQ07B,EAC3B,CAEA,KAAGjB,EAAWhgD,OAAS,GAAvB,CAGA,IAAIsmB,EAAS,CAAC,EACV46B,EAASC,GAAAA,EAAWlZ,KAAK+X,EAAWjqC,QAAOqP,GAAe,KAAVA,EAAEs2B,QAClD0F,EAASD,GAAAA,EAAWlZ,KAAK+X,EAAWjqC,QAAOqP,GAAe,KAAVA,EAAEs2B,QACtD,GAAGwF,EAAOG,QAAU,EACpB,CACI,IAAIC,EAAWJ,EAAOK,SAAQn8B,GAAKA,EAAE27B,UAASS,SAAQp8B,GAAKA,EAAExiB,MAAK6+C,QAClEn7B,EAAOo7B,KAAOJ,EAAS1+C,MACvB0jB,EAAO46B,OAASI,EAASK,SAC7B,CACA,GAAGP,EAAOC,QAAU,EACpB,CACQC,EAAWF,EAAOG,SAAQn8B,GAAKA,EAAE27B,UAASS,SAAQp8B,GAAKA,EAAExiB,MAAK6+C,QAClEn7B,EAAOs7B,KAAON,EAAS1+C,MACvB0jB,EAAO86B,OAASE,EAASK,SAC7B,CAEA,OAAOr7B,CAlBG,CAmBd,EC/wBW,MAAMu7B,WAAmBvK,GACpC9G,cACIsR,QACAhiD,KAAKmW,KAAO,KAEZnW,KAAKiiD,aAAe,GACpBjiD,KAAKkiD,aAAe,GACpBliD,KAAKmiD,WAAa,GAElBniD,KAAK+U,YAAc,KACnB/U,KAAK+W,YAAc,KACnB/W,KAAKgX,UAAY,KAEjBhX,KAAKspB,aAAe,KACpBtpB,KAAKoiD,SAAU,EACfpiD,KAAKk2C,UAAW,EAChBl2C,KAAKqvC,OAAS,KACdrvC,KAAKu2C,aAAe,KACpBv2C,KAAK82C,eAAgB,CACzB,CAEAuL,gBAAgBpR,GAEZ,MAAMqR,EAAS,CAACtiD,KAAK+U,YAAY/U,KAAK+W,YAAY/W,KAAKgX,WACvD,OAAOsrC,EAAOl9B,MAAKlP,GAAGA,EAAE+6B,WAAaA,GACzC,CAEAsR,iBAAiBtR,GAEb,MAAMqO,EAASt/C,KAAKwiD,gBAAgBC,OAAOziD,KAAKmiD,YAChD,OAAO7C,EAAOrpC,QAAOC,GAAGA,EAAEwsC,SAAWzR,GACzC,CAEAuR,gBAEI,OAAOxiD,KAAKiiD,aAAaQ,OAAOziD,KAAKkiD,aACzC,CAEAS,iBAAiBxR,GAEb,OAAO,IACX,CAEAyR,mBAEI,OAAO5iD,IACX,CAEA6iD,eAAe1R,GAEX,OAAGA,EAAM2R,KAEc,OAAhB3R,EAAM/6B,MAEEpW,KAAKiiD,aAILjiD,KAAKkiD,aAKTliD,KAAKmiD,UAEpB,CAEAY,aAAanD,EAAaoD,EAAS9sC,EAAGuR,EAAGzR,GAErC,OAAO,IACX,CAEAitC,eAEIjjD,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,MAAMmV,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAK9D,GAHAmS,EAAIjtC,KAAO43B,EAAK53B,KAChBktC,EAAIltC,KAAO43B,EAAK53B,KAEb43B,EAAK4E,SAAS2Q,eACjB,CACI,MAAMC,EAAUxV,EAAK4E,SAAS2Q,eAAermD,KAAKogB,MAAM,KAAKH,OAAO,GAAG,GAEjEsmC,EAAQxjD,KAAK+U,YAAYk8B,SAAS2B,kBAAkB2Q,GAC1D,GAAIC,EAWAJ,EAAIzQ,SAAW6Q,MAVnB,CACI,MAAMC,EAAS,IAAInX,QAAQoX,iBAAiBH,EAAQvjD,KAAK+U,YAAYk8B,UAC/D0S,EAAS,IAAIrX,QAAQsX,QAAQ7V,EAAK4E,SAAS2Q,eAAermD,KAAK+C,KAAK+U,YAAYk8B,UACtFwS,EAAOH,eAAiBK,EACxBF,EAAOI,cAAgB,IAAIvX,QAAQwX,OAAO,EAAG,EAAG,GAChDL,EAAOM,cAAgB,EACvBX,EAAIzQ,SAAW8Q,CACnB,CAMA,MAAMO,EAAQhkD,KAAK+W,YAAYk6B,SAAS2B,kBAAkB2Q,GAC1D,GAAIS,EAWAX,EAAI1Q,SAAWqR,MAVnB,CACI,MAAMP,EAAS,IAAInX,QAAQoX,iBAAiBH,EAAQvjD,KAAK+W,YAAYk6B,UAC/D0S,EAAS,IAAIrX,QAAQsX,QAAQ7V,EAAK4E,SAAS2Q,eAAermD,KAAK+C,KAAK+W,YAAYk6B,UACtFwS,EAAOH,eAAiBK,EACxBF,EAAOI,cAAgB,IAAIvX,QAAQwX,OAAO,EAAG,EAAG,GAChDL,EAAOM,cAAgB,EACvBV,EAAI1Q,SAAW8Q,CACnB,CAKJ,CACAzjD,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,EAAI,GAEnC,CAEAY,UAAUhT,EAAS/zC,GAEf,MAAMoiD,EAASt/C,KAAKwiD,gBAAgBC,OAAOziD,KAAKmiD,YAC1CrsC,EAAUwpC,EAAOrpC,QAAOC,GAAGA,EAAEwsC,SAAWzR,IAC9Cn7B,EAAQO,SAAQ03B,IACZA,EAAKv3B,WAAWtZ,EAAM,GAE9B,CAEAq0C,YAAYN,EAAS/zC,GAEjB,MAAMoiD,EAASt/C,KAAKwiD,gBACd1sC,EAAUwpC,EAAOrpC,QAAOC,GAAGA,EAAEwsC,SAAWzR,IAC9Cn7B,EAAQO,SAAQ03B,IACZA,EAAKpkB,SAAWzsB,EAAMssB,OAAO,IAGjCxpB,KAAKmiD,WAAW9rC,SAAQ03B,IACpBA,EAAKpkB,SAAWzsB,EAAMssB,OAAO,GAErC,CAEAswB,iBAAiB3I,GAEb,IAAImC,EAAc,KAClB,GAAY,MAATnC,EAEC,IAAImO,EAASt/C,KAAKmiD,gBAIlB,GAAkB,MAAfhR,EAAM/6B,MACDkpC,EAASt/C,KAAKiiD,kBAEd3C,EAASt/C,KAAKkiD,aAqB1B,OAlBA5C,EAAOjpC,SAAQ03B,IACX,MAAM8L,EAAM9L,EAAKsF,kBAAkBC,YAEnC,IAAIkN,EAAe3G,EAAI2G,aACnBF,EAAezG,EAAIyG,aAIvB,GAHAE,EAAatT,EAAI,EACjBoT,EAAapT,EAAI,EAEC,MAAfoG,EACH,CACI,IAAI4Q,EAAS5X,QAAQnjB,QAAQg7B,SAAS7Q,EAAYsN,QAASJ,GACvD4D,EAAS9X,QAAQnjB,QAAQk7B,SAAS/Q,EAAYuN,QAASP,GAE3DhN,EAAYgR,YAAYJ,EAAQE,EACpC,MAEI9Q,EAAc,IAAIhH,QAAQiY,YAAY/D,EAAcF,EAAa,IAElEhN,CACX,CAEAkR,uBAAuBrT,GAEnB,IAAImC,EAAc,KAClB,GAAkB,MAAfnC,EAAM/6B,MACL,IAAIkpC,EAASt/C,KAAKiiD,kBAEd3C,EAASt/C,KAAKkiD,aAoBtB,OAlBA5C,EAAOjpC,SAAQ03B,IACX,MAAM8L,EAAM9L,EAAKsF,kBAAkBC,YAEnC,IAAIsN,EAAU/G,EAAI+G,QAAQh3B,IAAImkB,EAAKpkB,UAC/Bk3B,EAAUhH,EAAIgH,QAAQj3B,IAAImkB,EAAKpkB,UAInC,GAHAi3B,EAAQ1T,EAAI,EACZ2T,EAAQ3T,EAAI,EAEM,MAAfoG,EACH,CACI,IAAI4Q,EAAS5X,QAAQnjB,QAAQg7B,SAAS7Q,EAAYsN,QAASA,GACvDwD,EAAS9X,QAAQnjB,QAAQk7B,SAAS/Q,EAAYuN,QAASA,GAE3DvN,EAAYgR,YAAYJ,EAAQE,EACpC,MAEI9Q,EAAc,IAAIhH,QAAQiY,YAAY3D,EAASC,EAAQ,IAExDvN,CACX,CAEAwL,qBAEI,OAAO9+C,KAAKwiD,eAChB,CACAxD,qBAEI,MAAO,IAAIh/C,KAAKmiD,WACpB,CAEAsC,gBAAgB5W,EAAQ3wC,GAEpB8C,KAAKmiD,WAAWM,OAAOziD,KAAKiiD,cAAcQ,OAAOziD,KAAKkiD,cAAc7rC,SAAQ03B,IAExEA,EAAK2W,oBAAoB3W,EAAK4W,iBAAiB/6B,IAAI,IAAI0iB,QAAQnjB,QAAQjsB,EAAOA,EAAOA,GAAOusB,SAASokB,IAAS,GAEtH,CAEA+W,YAAYC,EAAYC,EAAaC,EAAWC,GAE5ChlD,KAAKmiD,WAAWM,OAAOziD,KAAKiiD,cAAcQ,OAAOziD,KAAKkiD,cAAc7rC,SAAQ03B,IAExE,IAAI8L,EAAM9L,EAAKsF,kBAAkBC,YAC7BlsB,EAAO,IAAIklB,QAAQnjB,QAAQ67B,EAAYA,EAAYA,GAAYC,OAAOpL,EAAInE,YAAYjsB,SAASq7B,GACnG19B,EAAK8lB,EAAI,EAET,IAAIgY,EAAUnX,EAAK4W,iBAAiBn7B,QAChC27B,EAAapX,EAAKsB,OAElB+V,EAASrX,EAAKyG,iBAClBzG,EAAK6F,UAAU,MACfwR,EAAO/uC,SAAQgvC,IAEXtX,EAAKuX,YAAYD,EAAM,IAG3BtX,EAAKxkB,QAAUwkB,EAAKxkB,QAAQK,IAAIxC,GAChC2mB,EAAK6F,UAAUuR,GACfC,EAAO/uC,SAAQgvC,IAEXtX,EAAKwX,SAASF,EAAM,IAGxBtX,EAAK2W,oBAAoBQ,EAAQt7B,IAAIi7B,EAAWvP,MAAMyP,IAAY,GAE1E,CAEAvF,OAAOrO,EAAO0E,GAEV1E,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA4B/I,EAAO2P,GAAWC,aAAa5P,EAAOvsB,gBAC5GusB,EAAO6P,aAAavU,EAAO0E,GAC3B1E,EAAMz6B,YACV,CAEAgvC,aAAavU,EAAO0E,GAEhBA,EAAOvsB,aAAaq8B,YAAYxU,EAAO0E,GACvCA,EAAOvsB,aAAas8B,SAAU,EAC9B/P,EAAOtwB,SACX,EC1QW,MAAMsgC,WAAmB9D,GACpCrR,cAEIsR,QACAhiD,KAAK8lD,SAAW,KAChB9lD,KAAK+lD,eAAiB,KACtB/lD,KAAKgmD,aAAe,IACxB,CAEAC,mBAEI,IAAIhM,EAAOj6C,KAAKiiD,aAAa,GACzBpI,EAAMI,EAAK5G,kBAAkBC,YACjC,MAAqB,aAAlBtzC,KAAK8lD,SAEsB,EAAnBjM,EAAInE,WAAWx/B,EAII,EAAnB2jC,EAAInE,WAAWjuB,CAE9B,CAEAy+B,mBAEI,IAAI3Q,EAAM,EACPv1C,KAAKspB,cAAc/S,aAAas5B,SAAS3C,IAExCqI,EAAMv1C,KAAKspB,aAAa/S,aAAas5B,SAAS3C,GAGlD,MAAMa,EAAO/tC,KAAKmiD,WAAW,GACvBjN,EAAM5tB,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,GAAK7tB,QAAQ,IACrCutB,EAAM3tB,KAAKilB,IAAIjlB,KAAK2tB,IAAIM,GAAK7tB,QAAQ,IACrC0rB,EAAOrF,EAAKsF,kBAAkBC,YAC9BlsB,EAAOgsB,EAAKsC,WAAWjsB,SAAS,IAAIN,GAAAA,QAAQ,EAAE,EAAE,IAChDjR,EAAQkP,EAAKlR,EAAI++B,EAAM7tB,EAAKK,EAAIytB,EAChCS,EAAQvuB,EAAKK,EAAIwtB,EAAM7tB,EAAKlR,EAAIg/B,EAEtC,OAAGh9B,EAAMy9B,EAEE,CAAC34C,KAAO,WAAYkb,MAAQA,EAAOy9B,MAAQA,GAI3C,CAAC34C,KAAO,aAAckb,MAAQA,EAAOy9B,MAAQA,EAE5D,CAEAgF,cAEI,IAAIV,EAAOj6C,KAAKiiD,aAAa,GACzBkE,EAAUlM,EAAK5G,kBAAkBC,YACrC,GAAoB,YAAjBtzC,KAAK8lD,SAEJ,IAAIM,EAAe,IAAI9Z,QAAQnjB,QAAQg9B,EAAQ1S,OAAOv9B,EAAI+jC,EAAKtwB,SAASzT,EAAG,EAAGiwC,EAAQvF,QAAQn5B,EAAIwyB,EAAKtwB,SAASlC,GAC5G4+B,EAAe,IAAI/Z,QAAQnjB,QAAQg9B,EAAQ1S,OAAOv9B,EAAI+jC,EAAKtwB,SAASzT,EAAG,EAAGiwC,EAAQtF,QAAQp5B,EAAIwyB,EAAKtwB,SAASlC,QAI5G2+B,EAAe,IAAI9Z,QAAQnjB,QAAQg9B,EAAQvF,QAAQ1qC,EAAI+jC,EAAKtwB,SAASzT,EAAG,EAAGiwC,EAAQ1S,OAAOhsB,EAAIwyB,EAAKtwB,SAASlC,GAC5G4+B,EAAe,IAAI/Z,QAAQnjB,QAAQg9B,EAAQtF,QAAQ3qC,EAAI+jC,EAAKtwB,SAASzT,EAAG,EAAGiwC,EAAQ1S,OAAOhsB,EAAIwyB,EAAKtwB,SAASlC,GAGpH,MAAO,CACH+mB,MAAO4X,EACP3X,IAAK4X,EAEb,CAEAlM,mBAEI,IAAIF,EAAOj6C,KAAKiiD,aAAa,GACzBkE,EAAUlM,EAAK5G,kBAAkBC,YACrC,GAAmC,YAAhCtzC,KAAKkmD,mBAAmBlpD,KAEvB,IAAIopD,EAAe,IAAI9Z,QAAQnjB,QAAQg9B,EAAQrF,YAAY5qC,EAAG,EAAGiwC,EAAQ3F,aAAa/4B,GAClF4+B,EAAe,IAAI/Z,QAAQnjB,QAAQg9B,EAAQrF,YAAY5qC,EAAG,EAAGiwC,EAAQ7F,aAAa74B,QAIlF2+B,EAAe,IAAI9Z,QAAQnjB,QAAQg9B,EAAQ3F,aAAatqC,EAAG,EAAGiwC,EAAQrF,YAAYr5B,GAClF4+B,EAAe,IAAI/Z,QAAQnjB,QAAQg9B,EAAQ7F,aAAapqC,EAAG,EAAGiwC,EAAQrF,YAAYr5B,GAG1F,MAAO,CACH+mB,MAAO4X,EACP3X,IAAK4X,EAEb,CAEApD,eAEIjjD,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,MAAMmV,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAC9DmS,EAAI3qC,WAAY,EAChB4qC,EAAI5qC,WAAY,EAEhB2qC,EAAIjtC,KAAO43B,EAAK53B,KAChBktC,EAAIltC,KAAO43B,EAAK53B,KAEhBitC,EAAIzQ,SAAW3yC,KAAK+U,YAAYk8B,SAAS2B,kBAAkB,WAC3DyQ,EAAI1Q,SAAW3yC,KAAK+W,YAAYk6B,SAAS2B,kBAAkB,WAE3D5yC,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,EAAI,GAEnC,CAEAiD,qBAEI,MAAM7Q,EAAUz1C,KAAK6+C,SAAS,GAAGxL,kBACjC,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCiC,EAA4C,EAAnCs9B,EAAQnC,YAAYoC,WAAWxI,EACxCyI,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,MAAM8+B,EAAcja,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAMA,EAAMC,OAAOA,EAAOw9B,MAAMA,GAAO31C,KAAKymD,UAAUxV,UAC9GsV,EAAY58B,SAAW3pB,KAAK0mD,YAAYC,UAAUn9B,QAClD+8B,EAAYI,UAAY3mD,KAAK0mD,YAAYC,UAAUn9B,QAEnDxpB,KAAK6+C,SAAS,GAAGt5B,UACjBvlB,KAAK6+C,SAAS,GAAK0H,CACvB,CAEAK,qBAEI,MAAMnR,EAAUz1C,KAAKs/C,OAAO,GAAGjM,kBAC/B,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCiC,EAA4C,EAAnCs9B,EAAQnC,YAAYoC,WAAWxI,EACxCyI,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,MAAM8+B,EAAcja,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAMA,EAAMC,OAAOA,EAAOw9B,MAAMA,GAAO31C,KAAKgX,UAAUi6B,UAC9GsV,EAAY58B,SAAW3pB,KAAK6mD,YAAYF,UAAUn9B,QAClD+8B,EAAYI,UAAY3mD,KAAK6mD,YAAYF,UAAUn9B,QACnD+8B,EAAY5T,SAAW3yC,KAAKs/C,OAAO,GAAG3M,SAEtC3yC,KAAKs/C,OAAO,GAAG/5B,UACfvlB,KAAKs/C,OAAO,GAAKiH,CACrB,CAGAO,cAEI,MAAM/Y,EAAO/tC,KAAKmiD,WAAW,GACvB4E,EAAehZ,EAAKsF,kBACpBn7B,EAAgD,EAAxC6uC,EAAazT,YAAYoC,WAAWx/B,EAC5Cy/B,EAAgD,EAAxCoR,EAAazT,YAAYoC,WAAWjuB,EAI9CznB,KAAK8lD,SAFN5tC,EAAMy9B,EAEW,WAIA,YAExB,CAEAqR,eAEI,MAAMjZ,EAAO/tC,KAAKmiD,WAAW,GACvBhP,EAAMpF,EAAKpkB,SAASH,QACpBy9B,EAAWlZ,EAAKsB,OAAO1lB,SAASH,QACtC,OAAIy9B,EAEG9T,EAAIvpB,IAAIq9B,GADJ9T,CAEf,CAEAqG,gBAEI,IAAI0N,EAAc,CAAC,CACflqD,KAAK,SACLmgD,MAAMn9C,KAAK0+C,eAWf,OARI1+C,KAAKmW,KAAKlZ,KAAK4rB,SAAS,aAExBq+B,EAAYzhC,KAAK,CACbzoB,KAAK,SACLmgD,MAAMn9C,KAAKw/C,SAIZ0H,CACX,CAEAnP,mBAAmB5G,GAEf,IAAIuI,EAAkB15C,KAAKk5C,mBAAmB/H,EAAMF,UAChDkW,EAASnnD,KAAKq5C,yBAEd+N,EAAYpnD,KAAKg9C,kBAAkBtD,EAAiBvI,EAAOnxC,KAAKmW,KAAKwO,SAAU3kB,KAAKw5C,iBACxF2N,EAAO7N,QAAQX,WAAWyO,GAE1BpnD,KAAKy3C,cAAchyB,KAAK0hC,EAAO7N,SAE/B,IAAIO,EAAM75C,KAAK85C,iBAAiB3I,GAC5BkW,EAAU,IAAI/a,QAAQ2O,KAAK,WAAY9J,EAAMF,UAWjD,OAVAoW,EAAQ19B,SAAWkwB,EAAIpG,OACvBzzC,KAAK03C,mBAAmBjyB,KAAK4hC,GAE7BrnD,KAAKy3C,cAAcphC,SAAQ6kC,IAEvBxB,EAAgBf,WAAWuC,EAAM,IAGrCl7C,KAAKg4C,cAAc0B,GAEZ15C,KAAKy3C,aAChB,CAEA6P,SAASrW,GAEL,MAAMsW,EAASvnD,KAAK+U,YAAYk8B,SAC1BuW,EAASxnD,KAAK+W,YAAYk6B,SAEhC,IAAIwW,EAAUznD,KAAKmiD,WAAW,GAC3BlR,IAAasW,EAEZE,EAAUznD,KAAKiiD,aAAa,GAExBhR,IAAauW,IAEjBC,EAAUznD,KAAKkiD,aAAa,IAGhC,IAAIwF,EAASD,EAAQpU,kBAClBoU,EAAQE,qBAEPD,EAASD,EAAQE,oBAGrB,MAAMlS,EAAUiS,EAChB,IAAIxvC,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCiC,EAA4C,EAAnCs9B,EAAQnC,YAAYoC,WAAWxI,EACxCyI,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,MAAMmgC,EAAUtb,QAAQka,YAAYxT,UAAU,KAAK,CAAE96B,MAAOA,EAAOC,OAAQA,EAAOw9B,MAAMA,GAAS1E,GACjG2W,EAAQj+B,SAAW89B,EAAQ99B,SAASH,QACpCo+B,EAAQ/X,SAAW4X,EAAQ5X,SAASrmB,QACpCo+B,EAAQr+B,QAAUk+B,EAAQl+B,QAAQC,QAClCo+B,EAAQvY,OAASoY,EAAQpY,OACzBuY,EAAQzxC,KAAOsxC,EAAQtxC,KACvByxC,EAAQ/R,OAAS4R,EAAQ5R,OACzB+R,EAAQjV,SAAW8U,EAAQ9U,SAC3BiV,EAAQD,mBAAqBF,EAAQE,mBAErCF,EAAQliC,UACL0rB,IAAasW,EAEZvnD,KAAKiiD,aAAa,GAAK2F,EAEnB3W,IAAauW,EAEjBxnD,KAAKkiD,aAAa,GAAK0F,EAIvB5nD,KAAKmiD,WAAW,GAAKyF,CAE7B,CAEAC,eAEI,MAAMJ,EAAUznD,KAAKmiD,WAAW,GAC1B1M,EAAUgS,EAAQpU,kBACxB,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCiC,EAA4C,EAAnCs9B,EAAQnC,YAAYoC,WAAWxI,EACxCyI,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,MAAMmgC,EAAUtb,QAAQka,YAAYxT,UAAU,KAAK,CAAE96B,MAAOA,EAAOC,OAAQA,EAAOw9B,MAAMA,GAAS31C,KAAKgX,UAAUi6B,UAChH2W,EAAQj+B,SAAW89B,EAAQ99B,SAASH,QACpCo+B,EAAQ/X,SAAW4X,EAAQ5X,SAASrmB,QACpCo+B,EAAQr+B,QAAUk+B,EAAQl+B,QAAQC,QAClCo+B,EAAQvY,OAASoY,EAAQpY,OACzBuY,EAAQzxC,KAAOsxC,EAAQtxC,KACvByxC,EAAQ/R,OAAS4R,EAAQ5R,OACzB+R,EAAQjV,SAAW8U,EAAQ9U,SAE3B8U,EAAQliC,UACRvlB,KAAKmiD,WAAW,GAAKyF,CACzB,CAEAE,iBAEI,MAAML,EAAUznD,KAAKiiD,aAAa,GAC5BxM,EAAUgS,EAAQpU,kBACxB,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCiC,EAA4C,EAAnCs9B,EAAQnC,YAAYoC,WAAWxI,EACxCyI,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,MAAMmgC,EAAUtb,QAAQka,YAAYxT,UAAU,KAAK,CAAE96B,MAAOA,EAAOC,OAAQA,EAAOw9B,MAAMA,GAAS31C,KAAK+U,YAAYk8B,UAClH2W,EAAQj+B,SAAW89B,EAAQ99B,SAASH,QACpCo+B,EAAQ/X,SAAW4X,EAAQ5X,SAASrmB,QACpCo+B,EAAQr+B,QAAUk+B,EAAQl+B,QAAQC,QAClCo+B,EAAQvY,OAASoY,EAAQpY,OACzBuY,EAAQ/R,OAAS4R,EAAQ5R,OACzB+R,EAAQzxC,KAAOsxC,EAAQtxC,KACvByxC,EAAQjV,SAAW8U,EAAQ9U,SAE3B8U,EAAQliC,UACRvlB,KAAKiiD,aAAa,GAAK2F,CAC3B,CAEAG,iBAEI,MAAMN,EAAUznD,KAAKkiD,aAAa,GAC5BzM,EAAUgS,EAAQpU,kBACxB,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCiC,EAA4C,EAAnCs9B,EAAQnC,YAAYoC,WAAWxI,EACxCyI,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,MAAMmgC,EAAUtb,QAAQka,YAAYxT,UAAU,KAAK,CAAE96B,MAAOA,EAAOC,OAAQA,EAAOw9B,MAAMA,GAAS31C,KAAK+W,YAAYk6B,UAClH2W,EAAQj+B,SAAW89B,EAAQ99B,SAASH,QACpCo+B,EAAQ/X,SAAW4X,EAAQ5X,SAASrmB,QACpCo+B,EAAQr+B,QAAUk+B,EAAQl+B,QAAQC,QAClCo+B,EAAQvY,OAASoY,EAAQpY,OACzBuY,EAAQ/R,OAAS4R,EAAQ5R,OACzB+R,EAAQzxC,KAAOsxC,EAAQtxC,KACvByxC,EAAQjV,SAAW8U,EAAQ9U,SAE3B8U,EAAQliC,UACRvlB,KAAKkiD,aAAa,GAAK0F,CAC3B,CAGA7E,aAAanD,EAAaoD,EAAS9sC,EAAGuR,EAAGzR,GAErC,IAAIxN,EAAkBwN,EAAQC,QAAOqP,GAAKA,EAAEixB,cAAgBqJ,IAExD7R,EAAO/tC,KAAKmiD,WAAW,GACvBtI,EAAM9L,EAAKsF,kBAAkBC,YAC7BoM,EAAQ,CAAC,IAAIpT,QAAQiY,YAAY,IAAIjY,QAAQnjB,QAAQjT,EAAI2jC,EAAImO,gBAAgB9xC,EAAG,EAAGuR,EAAIoyB,EAAImO,gBAAgBvgC,GAAI,IAAI6kB,QAAQnjB,QAAQjT,EAAI2jC,EAAImO,gBAAgB9xC,EAAG,EAAGuR,EAAIoyB,EAAImO,gBAAgBvgC,KAEzLu4B,EAAgB,GAMpB,MALmC,YAAhChgD,KAAKkmD,mBAAmBlpD,KACvBgjD,EAAcv6B,KAAK,KAEnBu6B,EAAcv6B,KAAK,KAEhBzlB,KAAKy/C,YAAYC,EAAOl3C,EAAgBy/C,SAAQ3iC,GAAKA,EAAE6wB,WAAUlgC,QAAOqP,GAAKA,GAAKtlB,OAAO4/C,EAAaoD,EAAS9sC,EAAGuR,EAAGu4B,EAChI,CAEAkI,eAAeC,EAAWxB,GAEtB,IAAIyB,EAAWpoD,KAAKmiD,WAAW,GAE3BkG,EAAOF,EAAUrb,SAAS6Z,GAC9B0B,EAAKnb,EAAI,EAET,IAAI+S,EAASoI,EAAKnoD,SACd+oB,EAAMqjB,QAAQnjB,QAAQonB,UAAU8X,GAChCxN,EAAcvO,QAAQnjB,QAAQm/B,gBAAgBr/B,EAAKm/B,EAAS/Y,OAAOC,kBAEnE6W,EAAUiC,EAAS/U,kBAAkBC,YACrCiV,EAASjc,QAAQnjB,QAAQg7B,SAASwC,EAAU/8B,IAAIu8B,EAAQ6B,iBAAkBrB,EAAU7Z,SAASqZ,EAAQ6B,kBACrGQ,EAASlc,QAAQnjB,QAAQk7B,SAASsC,EAAU/8B,IAAIu8B,EAAQ6B,iBAAkBrB,EAAU7Z,SAASqZ,EAAQ6B,kBAEzGO,EAAOrb,EAAI,EACXsb,EAAOtb,EAAI,EAEX,IAAI2M,EAAM,IAAIvN,QAAQiY,YAAYgE,EAAQC,GACtCl/B,EAAetpB,KAAKspB,aACpBm/B,EAAazoD,KAAKm6C,mBACtBsO,EAAWja,MAAQia,EAAWja,MAAM5kB,IAAIX,EAAIqsB,MAAM2K,IAClDwI,EAAWha,IAAMga,EAAWha,IAAI7kB,IAAIX,EAAIqsB,MAAM2K,IAE9C,IAAIyI,EAAe,GAGnBp/B,EAAa0wB,MAAM3jC,SAAQC,IAEvB,IAAImqC,EAAYnqC,EAAOwjC,iBAAiBxwB,EAAaitB,cACjDoS,EAAaryC,EAAO6jC,mBACpByO,EAAYtc,QAAQnjB,QAAQonB,UAAUoY,EAAWla,IAAI3B,SAAS6b,EAAWna,QAC7E,GAAGl4B,EAAOH,KAAK4M,SAAS8F,SAAS,aAE1BkjB,GAAa8c,WAAWD,EAAW3/B,GACtC,CACI,IAAI6/B,EAAe/c,GAAauO,uBAAuBmO,EAAWja,MAAOia,EAAWha,IAAKka,EAAWna,OACpG,GAAGlC,QAAQnjB,QAAQ4/B,SAASD,EAAcL,EAAWja,OAAS,KAAQlC,QAAQnjB,QAAQ4/B,SAASD,EAAcL,EAAWha,KAAO,IAC/H,CAEI,IAAI1G,EAAMuE,QAAQnjB,QAAQg7B,SAAS1D,EAAUG,QAASH,EAAUG,QAAQh3B,IAAIX,EAAIqsB,MAAM,OAClFhP,EAAMgG,QAAQnjB,QAAQk7B,SAAS5D,EAAUI,QAASJ,EAAUI,QAAQj3B,IAAIX,EAAIqsB,MAAM,OAEtF,GAAGuE,EAAImP,iBAAiBjhB,EAAKzB,GAC7B,CACI,IAAI2iB,EAAW3c,QAAQnjB,QAAQ+/B,IAAInhB,EAAK6gB,GACpCO,EAAW7c,QAAQnjB,QAAQ+/B,IAAI5iB,EAAKsiB,GACpCQ,EAAW9c,QAAQnjB,QAAQ+/B,IAAIf,EAAWS,GAC3CK,GAAYG,GAAYA,GAAYD,GAEhC7hC,KAAKilB,IAAI4c,EAAWF,EAAWhJ,EAAS3T,QAAQnjB,QAAQ+/B,IAAI/C,EAAQ6B,gBAAiBY,KAAe,IAEnGF,EAAajjC,KAAKnP,GAStBA,EAAOsuC,YAAY37B,EAAK4xB,EAAaoF,EAAS,EAAGA,EAAS,EAElE,CACJ,CACJ,CACJ,IAGJ,IAAIhG,EAAOj6C,KAEXspB,EAAa+/B,MAAM5G,OAAOn5B,EAAaggC,SAAS7G,OAAOn5B,EAAaigC,UAAUlzC,SAAQuwB,IAElF,GAAGA,EAAKyI,QAAU4K,EAClB,CACIrT,EAAK6d,gBAAgBx7B,EAAKg3B,GAE1BrZ,EAAK4iB,UAAU7/B,SAAWid,EAAKub,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBgF,SAASH,QACtFod,EAAK6iB,YAAY9/B,SAAWid,EAAKqb,aAAa78B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBgF,SAASH,QAC1Fod,EAAK8iB,YAAY//B,SAAWid,EAAKsb,aAAa98B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBgF,SAASH,QAE1F,MAAMmgC,EAAO3pD,KAAKmiD,WAAW,GAAGx4B,SACX,eAAlB3pB,KAAK8lD,UAEJlf,EAAK4iB,UAAU7/B,SAASlC,EAAIkiC,EAAKliC,EACjCmf,EAAK6iB,YAAY9/B,SAASlC,EAAIkiC,EAAKliC,EACnCmf,EAAK8iB,YAAY//B,SAASlC,EAAIkiC,EAAKliC,IAInCmf,EAAK4iB,UAAU7/B,SAASzT,EAAIyzC,EAAKzzC,EACjC0wB,EAAK6iB,YAAY9/B,SAASzT,EAAIyzC,EAAKzzC,EACnC0wB,EAAK8iB,YAAY//B,SAASzT,EAAIyzC,EAAKzzC,EAE3C,KAGJwyC,EAAaryC,SAAQuwB,IAEjBA,EAAK8e,aAAap8B,EAAaitB,aAAc3P,EAAK,GAE1D,CAEA2K,YAAYN,EAAU/zC,GAElB,IAAIkrD,EAAWpoD,KAAKmiD,WAAW,GAE3BhP,EAAMj2C,EAAMssB,QACmB,YAAhCxpB,KAAKkmD,mBAAmBlpD,KAEvBm2C,EAAI1rB,EAAI2gC,EAASzD,iBAAiBl9B,EAIlC0rB,EAAIj9B,EAAIkyC,EAASzD,iBAAiBzuC,EAGtClW,KAAKiiD,aAAa5rC,SAAQ03B,IAEtB,IAAI6b,EAAQzW,EAAI3pB,QAChBogC,EAAM1c,EAAIa,EAAK4W,iBAAiBzX,EAChCa,EAAK2W,oBAAoBkF,EAAM,IAGnC5pD,KAAKkiD,aAAa7rC,SAAQ03B,IAEtB,IAAI8b,EAAQ1W,EAAI3pB,QAChBqgC,EAAM3c,EAAIa,EAAK4W,iBAAiBzX,EAChCa,EAAK2W,oBAAoBmF,EAAM,IAGnC,IAAIC,EAAU3W,EAAI3pB,QAClBsgC,EAAQ5c,EAAIkb,EAASzD,iBAAiBzX,EACtCkb,EAAS1D,oBAAoBoF,EACjC,CAEAC,iBAAiB9Y,GAEb,MAAMlD,EAAO/tC,KAAKmiD,WAAW,GACvBlV,EAASjtC,KAAKm6C,mBACpBlN,EAAOuB,MAAMtB,EAAI,EACjBD,EAAOwB,IAAIvB,EAAI,EACf,MAAMgN,EAAO,CAACjN,EAAOuB,MAAOvB,EAAOwB,KAE7Bv2B,EAA0D,EAAlD61B,EAAKsF,kBAAkBC,YAAYoC,WAAWx/B,EACtDiC,EAA2D,EAAlD41B,EAAKsF,kBAAkBC,YAAYoC,WAAWxI,EAE7D,IAAI8c,EAAS,GACb,MAAMC,EAAW,GAGbD,EAFD9xC,EAAQC,EAEED,EAAM+xC,EAIN9xC,EAAO8xC,EAGpB,MAAMC,EAAW5d,QAAQka,YAAY2D,kBAAkB,KAAM,CAACld,OAAQiN,EAAM8P,OAAQA,EAAOI,SAAU,EAAGC,QAAS,GAAIpZ,GAGrH,OAFAiZ,EAAS3R,MAAQjM,QAAQwX,OAAOwG,QAEzBJ,CACX,CAEAK,iBAAiBC,EAAOvZ,GAYpB,GAVGjxC,KAAKyqD,YAEJzqD,KAAKyqD,WAAWllC,UAGjBvlB,KAAKgmD,cAEJhmD,KAAKgmD,aAAazgC,UAGnBilC,EACH,CACI,MAAME,EAAezZ,EAAS2B,kBAAkB,qBAC1C+X,EAAW,IACX1d,EAASjtC,KAAKm6C,mBACpBlN,EAAOuB,MAAMtB,EAAI,EACjBD,EAAOwB,IAAIvB,EAAI,EACfltC,KAAK+lD,eAAiBzZ,QAAQka,YAAYoE,aAAa,YAAY,CAACD,SAAUA,EAAUE,SAAU,IAAI5Z,GACtGjxC,KAAK+lD,eAAep8B,SAAWsjB,EAAOuB,MAAMhlB,QAC5CxpB,KAAK+lD,eAAepT,SAAW+X,EAE/B1qD,KAAKgmD,aAAe1Z,QAAQka,YAAYoE,aAAa,YAAY,CAACD,SAAUA,EAAUE,SAAU,IAAI5Z,GACpGjxC,KAAKgmD,aAAar8B,SAAWsjB,EAAOwB,IAAIjlB,QACxCxpB,KAAKgmD,aAAarT,SAAW+X,CACjC,CACJ,CAEA5L,qBAEI,MAAO,CAAC9+C,KAAK0pB,eAAgB1pB,KAAK6pB,eACtC,CACAm1B,qBAEI,MAAO,CAACh/C,KAAKuW,aACjB,CAEAmvC,aAAavU,EAAO0E,GAEhB,IAAIxwB,EAASwwB,EAAOvsB,aAChBwhC,EAAczlC,EAAOgkC,MAAM5G,OAAOp9B,EAAOikC,SAAS7G,OAAOp9B,EAAOkkC,UAAUtzC,QAAOqP,GAAKA,EAAE+pB,QAAUwG,IACtGiV,EAAYz0C,SAAQuwB,IAEhBA,EAAK8e,aAAavU,EAAOvK,EAAK,IAGlCvhB,EAAOsgC,YAAYxU,EAAO0E,GAC1BxwB,EAAOugC,SAAU,EACjB/P,EAAOtwB,SACX,CAEAwlC,aAAaC,EAAEtW,GAEX,GAAGsW,EAAE70C,KAAKlZ,MAAM4rB,SAAS,SAAWmiC,EAAE70C,KAAKlZ,MAAM4rB,SAAS,QAEtD,OAGJ,MAAMoiC,EAAOD,EAAE3X,kBAAkBC,YAE3B4X,EAAkC,EAAzBD,EAAKjD,gBAAgB9xC,EAC9Bi1C,EAAkC,EAAzBF,EAAKjD,gBAAgBvgC,EAEpC,IAAI8tB,EAAMyV,EAAEnV,OAAOvsB,aAAa/S,aAAas5B,SAAS3C,EAEtD,MAAMke,EAAO1W,EAAErB,kBAAkBC,YAC3B+X,EAA6B,EAApBD,EAAK1V,WAAWx/B,EACzBo1C,EAA8B,EAApBF,EAAK1V,WAAWxI,EAG1Bqe,GAFSH,EAAK1V,WAAWjuB,EAEjB,KAEd,IAAGitB,EAAEmB,OAAO1/B,KAAKq1C,WAAW3iC,SAAS,QAKrC,GAAmC,YAAhC7oB,KAAKkmD,mBAAmBlpD,KAC3B,CACI,MAAMyuD,EAAOnf,QAAQka,YAAYxT,UAAU,WACvC,CAAE96B,MAAOgzC,EAAQ/yC,OAAQmzC,EAAQ3V,MAAO0V,GAASL,EAAEtI,QACvD+I,EAAKpc,OAAS2b,EACdS,EAAK9Y,SAAW,KAChB8Y,EAAK9Y,SAAWqY,EAAEtI,OAAO9P,kBAAkB,eAC3C6Y,EAAKliC,QAAQ9B,GAAK4jC,EAAOE,GAAOF,EAChCI,EAAKliC,QAAQ2jB,EAAI,KACjBue,EAAK5b,SAAS3C,EAAIqI,EAClB,MAAMpC,EAAMuB,EAAEgX,sBAAsBliC,QACpCiiC,EAAKpc,OAAS2b,EACdS,EAAK/G,oBAAoBvR,GACzBsY,EAAK9hC,SAAW8hC,EAAK9hC,SAASF,SAAS,IAAIN,GAAAA,QAAQ7B,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,GAAK7tB,QAAQ,IAAI,EAAEJ,KAAKilB,IAAIjlB,KAAK2tB,IAAIM,GAAK7tB,QAAQ,MACvHurB,GAAUY,cAAc4X,GACxBA,EAAKE,WAAU,GACfF,EAAKG,iBAAkB,EACvBH,EAAK5V,OAAS71C,KACdyrD,EAAKT,EAAIA,CACb,KAEA,CACI,MAAMS,EAAOnf,QAAQka,YAAYxT,UAAU,WACvC,CAAE96B,MAAOmzC,EAAQlzC,OAAQmzC,EAAQ3V,MAAOwV,GAASH,EAAEtI,QACvD+I,EAAKpc,OAAS2b,EACdS,EAAK9Y,SAAW,KAChB8Y,EAAK9Y,SAAWqY,EAAEtI,OAAO9P,kBAAkB,eAC3C6Y,EAAKliC,QAAQrT,GAAKm1C,EAAOE,GAAOF,EAChCI,EAAKliC,QAAQ2jB,EAAI,KACjBue,EAAK5b,SAAS3C,EAAIqI,EAClB,MAAMpC,EAAMuB,EAAEgX,sBAAsBliC,QACpCiiC,EAAKpc,OAAS2b,EACdS,EAAK/G,oBAAoBvR,GACzBsY,EAAK9hC,SAAW8hC,EAAK9hC,SAASF,SAAS,IAAIN,GAAAA,QAAQ7B,KAAKilB,IAAIjlB,KAAK2tB,IAAIM,GAAK7tB,QAAQ,IAAI,EAAEJ,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,GAAK7tB,QAAQ,MACvHurB,GAAUY,cAAc4X,GACxBA,EAAKE,WAAU,GACfF,EAAKG,iBAAkB,EACvBH,EAAK5V,OAAS71C,KACdyrD,EAAKT,EAAIA,CACb,CACJ,CAEAzlC,UAEI,IAAI,IAAI1e,KAAK7G,KAAKiiD,aAEdp7C,EAAE0e,UAEN,IAAI,IAAI1e,KAAK7G,KAAKkiD,aAEdr7C,EAAE0e,UAEN,IAAI,IAAI1e,KAAK7G,KAAKmiD,WAEdt7C,EAAE0e,UAGHvlB,KAAKspB,eAEJtpB,KAAKspB,aAAa6sB,SAAWn2C,KAAKspB,aAAa6sB,SAASlgC,QAAOC,GAAKA,GAAKlW,OACzEA,KAAKspB,aAAa0wB,MAAQh6C,KAAKspB,aAAa0wB,MAAM/jC,QAAOC,GAAKA,GAAKlW,OAE3E,EC5oBW,MAAMwlD,GAEjBxZ,oBAAoB6f,GAEhB,MAAMC,EAAQD,EAAU7R,MAClB+R,EAAY/rD,KAAKgsD,aAAaF,GAC9Bn3C,EAAUk3C,EAAUvC,QACpB2C,EAAcjsD,KAAKksD,eAAev3C,GAClCw3C,EAAWN,EAAUtC,SACrB6C,EAAepsD,KAAKqsD,gBAAgBF,GACpCtoC,EAAQgoC,EAAUS,MAClBC,EAAYvsD,KAAKwsD,aAAa3oC,GAC9BnP,EAAQm3C,EAAUxC,MAClBoD,EAAYzsD,KAAK0sD,aAAah4C,GAG9Bi4C,EAAQ,CACV1vD,KAAO4uD,EAAU11C,KAAKlZ,KACtB0sB,SAAWkiC,EAAUt1C,aAAaoT,SAASH,QAC3CqmB,SAAWgc,EAAUt1C,aAAas5B,SAAS3C,EAC3C3jB,QAAUsiC,EAAUt1C,aAAagT,QAAQC,QACzCpC,KAAOykC,EAAUxkC,UACjBlR,KAAO01C,EAAU11C,KACjBy2C,UAAYf,EAAU7R,MAAM/jC,QAAOC,GAAGA,EAAEC,KAAKlZ,KAAK4rB,SAAS,cAAamE,KAAI9W,GAAGA,EAAEisC,WAAW,GAAGx4B,SAASH,UACxGqjC,eAAiBhB,EAAU7R,MAAM/jC,QAAOC,GAAGA,EAAEC,KAAKlZ,KAAK4rB,SAAS,cAAamE,KAAI9W,GAAGA,EAAEisC,WAAW,GAAG54B,QAAQC,UAC5GsjC,YAAcjB,EAAU7R,MAAM/jC,QAAOC,GAAGA,EAAEC,KAAKlZ,KAAK4rB,SAAS,UAASmE,KAAI9W,GAAGA,EAAEisC,WAAWn1B,KAAIkgB,GAAGA,EAAEvjB,SAASH,YAC5GujC,gBAAkBlB,EAAU7R,MAAM/jC,QAAOC,GAAGA,EAAEC,KAAKlZ,KAAK4rB,SAAS,UAASmE,KAAI9W,GAAGA,EAAE+rC,aAAaj1B,KAAIkgB,GAAGA,EAAEvjB,SAASH,YAClHwjC,eAAiBnB,EAAU7R,MAAM/jC,QAAOC,GAAGA,EAAEC,KAAKlZ,KAAK4rB,SAAS,UAASmE,KAAI9W,GAAGA,EAAEC,KAAKlZ,OACvF6uD,MAAQC,EACRp3C,QAAUs3C,EACVE,SAAWC,EACXvoC,MAAQ0oC,EACR73C,MAAQ+3C,EACR1W,KAAO8V,EAAU9V,MAGrB,OAAO4W,CACX,CAEA3gB,oBAAoB8f,GAEhB,MAAMtlC,EAAS,GACf,IAAI,IAAIwkC,KAAKc,EACb,CACI,GAAGd,EAAE70C,MAAM4M,SAAS8F,SAAS,aAAemiC,EAAE70C,MAAM4M,SAAS8F,SAAS,QAClE,SACJ,MAAMklB,EAAOid,EAAE7I,WAAW,GACpB8K,EAAKlf,EAAKsF,kBAAkBC,YAC5Bp7B,EAA0B,EAAlB+0C,EAAGvX,WAAWx/B,EACtBy/B,EAA0B,EAAlBsX,EAAGvX,WAAWjuB,EAEtB3T,EAAO,CACT6V,SAAWokB,EAAKpkB,SAASH,QACzBtR,MAAQA,EACRy9B,MAAQA,EACRx/B,KAAO60C,EAAE70C,KACTnZ,KAAOguD,EAAElF,SACTxQ,MAAQvH,EAAKxkB,QAAQC,SAGzBhD,EAAOf,KAAK3R,EAChB,CACA,OAAO0S,CACX,CAEAwlB,sBAAsBr3B,GAElB,MAAM6R,EAAS,GACf,IAAI,IAAIwkC,KAAKr2C,EACb,CACI,MAAM0rC,EAAY2K,EAAE7I,WAAWn1B,KAAI9W,GAAKA,EAAEyT,SAASH,UAC7C0jC,EAAoBlC,EAAE/I,aAAaj1B,KAAI9W,GAAKA,EAAEyT,SAASH,UACvD2jC,EAAoBnC,EAAE9I,aAAal1B,KAAI9W,GAAKA,EAAEyT,SAASH,UACvD4jC,EAAYpC,EAAE7I,WAAWn1B,KAAI9W,GAAKA,EAAE25B,SAASrmB,UAC7C6jC,EAAoBrC,EAAE/I,aAAaj1B,KAAI9W,GAAKA,EAAE25B,SAASrmB,UACvD8jC,EAAoBtC,EAAE9I,aAAal1B,KAAI9W,GAAKA,EAAE25B,SAASrmB,UACvD+jC,EAAWvC,EAAE7I,WAAWn1B,KAAI9W,GAAKA,EAAEqT,QAAQC,UAC3CgkC,EAAmBxC,EAAE/I,aAAaj1B,KAAI9W,GAAKA,EAAEqT,QAAQC,UACrDikC,EAAmBzC,EAAE9I,aAAal1B,KAAI9W,GAAKA,EAAEqT,QAAQC,UAErD1V,EAAO,CACTusC,UAAYA,EACZ6M,kBAAoBA,EACpBC,kBAAoBA,EACpBC,UAAYA,EACZC,kBAAoBA,EACpBC,kBAAoBA,EACpBC,SAAWA,EACXC,iBAAmBA,EACnBC,iBAAmBA,EACnBt3C,KAAO60C,EAAE70C,MAGbqQ,EAAOf,KAAK3R,EAChB,CACA,OAAO0S,CACX,CAEAwlB,uBAAuBmgB,GAEnB,MAAM3lC,EAAS,GACf,IAAI,IAAIlB,KAAK6mC,EACb,CACI,MAAMpe,EAAOzoB,EAAE68B,WAAW,GACpBx4B,EAAWokB,EAAKpkB,SAASH,QACzBqmB,EAAW9B,EAAK8B,SAASrmB,QACzByjC,EAAKlf,EAAKsF,kBAAkBC,YAC5Bp7B,EAA0B,EAAlB+0C,EAAGvX,WAAWx/B,EACtBiC,EAA2B,EAAlB80C,EAAGvX,WAAWxI,EACvByI,EAA0B,EAAlBsX,EAAGvX,WAAWjuB,EAEtB3T,EAAO,CACToE,MAAQA,EAAMwP,QAAQ,GACtBvP,OAASA,EAAOuP,QAAQ,GACxBiuB,MAAQA,EAAMjuB,QAAQ,GACtBiC,SAAWA,EACXkmB,SAAWA,EACX15B,KAAOmP,EAAEnP,MAEbqQ,EAAOf,KAAK3R,EAChB,CAEA,OAAO0S,CACX,CAEAwlB,oBAAoBnoB,GAEhB,MAAM2C,EAAS,GACf,IAAI,IAAIlB,KAAKzB,EACb,CACI,MAAM/P,EAAM,CACRqC,KAAOmP,EAAEnP,KACTwT,SAAWrE,EAAE/O,aAAaoT,SAASH,QACnCqmB,SAAWvqB,EAAE/O,aAAas5B,SAASrmB,QACnCD,QAAUjE,EAAE/O,aAAagT,QAAQC,QACjCkkC,eAAiBpoC,EAAEooC,eACnBC,WAAaroC,EAAEqoC,YAGnBnnC,EAAOf,KAAK3R,EAChB,CAEA,OAAO0S,CACX,CAEAwlB,oBAAoBt3B,GAEhB,MAAM8R,EAAS,GACf,IAAI,IAAIlB,KAAK5Q,EACb,CACI,MAAM2rC,EAAY/6B,EAAE68B,WAAWn1B,KAAI9W,GAAKA,EAAEyT,SAASH,UAC7C4jC,EAAY9nC,EAAE68B,WAAWn1B,KAAI9W,GAAKA,EAAE25B,SAASrmB,UAC7CD,EAAUjE,EAAE68B,WAAWn1B,KAAI9W,GAAKA,EAAEqT,QAAQC,UAE1C0jC,EAAoB5nC,EAAE28B,aAAaj1B,KAAI9W,GAAKA,EAAEyT,SAASH,UACvD2jC,EAAoB7nC,EAAE48B,aAAal1B,KAAI9W,GAAKA,EAAEyT,SAASH,UAEvD6jC,EAAoB/nC,EAAE28B,aAAaj1B,KAAI9W,GAAKA,EAAE25B,SAASrmB,UACvD8jC,EAAoBhoC,EAAE48B,aAAal1B,KAAI9W,GAAKA,EAAE25B,SAASrmB,UAEvDokC,EAAiBtoC,EAAE28B,aAAaj1B,KAAI9W,GAAKA,EAAEqT,QAAQC,UACnDqkC,EAAiBvoC,EAAE48B,aAAal1B,KAAI9W,GAAKA,EAAEqT,QAAQC,UAEnD1V,EAAO,CACTusC,UAAYA,EACZ+M,UAAYA,EACZ7jC,QAAUA,EACV2jC,kBAAoBA,EACpBC,kBAAoBA,EACpBE,kBAAoBA,EACpBC,kBAAoBA,EACpBM,eAAiBA,EACjBC,eAAiBA,EACjB13C,KAAOmP,EAAEnP,MAGbqQ,EAAOf,KAAK3R,EAChB,CAEA,OAAO0S,CACX,CAEAwlB,gBAAgB3mB,EAAOymC,GAEnB,IAAI,IAAIgC,KAAShC,EACjB,CACI,MAAMiC,EAAM,IAAIlI,GAChBkI,EAAIh5C,YAAcsQ,EAAOtQ,YACzBg5C,EAAIh3C,YAAcsO,EAAOtO,YACzBg3C,EAAI/2C,UAAYqO,EAAOrO,UAEvB,MAAMg3C,EAAQD,EAAIh5C,YAAYk8B,SACxBgd,EAAQF,EAAIh3C,YAAYk6B,SACxBid,EAAUH,EAAI/2C,UAAUi6B,SAExBkd,EAAS7hB,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAQ41C,EAAM51C,MAAOC,OAAS,MAAOw9B,MAAQmY,EAAMnY,OAAOqY,GACvGI,EAAS9hB,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAQ41C,EAAM51C,MAAOC,OAAS,MAAOw9B,MAAQmY,EAAMnY,OAAOsY,GACvG7F,EAAW9b,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAQ41C,EAAM51C,MAAOC,OAAS,MAAOw9B,MAAQmY,EAAMnY,OAAOuY,GAqB/G,GAnBAC,EAAOxb,SAAWqb,EAAMpb,kBAAkB,WAC1Cwb,EAAOzb,SAAWsb,EAAMrb,kBAAkB,WAC1CwV,EAASzV,SAAWub,EAAQtb,kBAAkB,WAE9Cub,EAAOxkC,SAAW,IAAIR,GAAAA,QAAQ2kC,EAAMnkC,SAAS0kC,GAAGP,EAAMnkC,SAAS2kC,GAAGR,EAAMnkC,SAAS4kC,IACjFH,EAAOzkC,SAAW,IAAIR,GAAAA,QAAQ2kC,EAAMnkC,SAAS0kC,GAAGP,EAAMnkC,SAAS2kC,GAAGR,EAAMnkC,SAAS4kC,IACjFnG,EAASz+B,SAAW,IAAIR,GAAAA,QAAQ2kC,EAAMnkC,SAAS0kC,GAAGP,EAAMnkC,SAAS2kC,GAAGR,EAAMnkC,SAAS4kC,IAEnFJ,EAAO5kC,QAAU,IAAIJ,GAAAA,QAAQ2kC,EAAMxY,MAAM+Y,GAAGP,EAAMxY,MAAMgZ,GAAGR,EAAMxY,MAAMiZ,IACvEH,EAAO7kC,QAAU,IAAIJ,GAAAA,QAAQ2kC,EAAMxY,MAAM+Y,GAAGP,EAAMxY,MAAMgZ,GAAGR,EAAMxY,MAAMiZ,IACvEnG,EAAS7+B,QAAU,IAAIJ,GAAAA,QAAQ2kC,EAAMxY,MAAM+Y,GAAGP,EAAMxY,MAAMgZ,GAAGR,EAAMxY,MAAMiZ,IAEzEJ,EAAO9e,OAAShqB,EAAOqE,eACvB0kC,EAAO/e,OAAShqB,EAAOwE,eACvBu+B,EAAS/Y,OAAShqB,EAAO9O,aAEzB43C,EAAOtY,OAASkY,EAChBK,EAAOvY,OAASkY,EAChB3F,EAASvS,OAASkY,EACfD,EAAM33C,KAAKq1C,WAAW3iC,SAAS,SAClC,CACI,MAAMssB,EAAI9vB,EAAOmpC,OAAOppC,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAAS6wD,EAAM33C,KAAKq1C,aAC3D2C,EAAO9e,OAAS8F,EAAE8M,aAAa,GAC/BmM,EAAO/e,OAAS8F,EAAE+M,aAAa,GAC/BkG,EAAS/Y,OAAS8F,EAAEgN,WAAW,EACnC,CAEA4L,EAAI53C,KAAO,IAAI23C,EAAM33C,MACrB43C,EAAIzkC,aAAejE,EACnB0oC,EAAI9L,aAAax8B,KAAK0oC,GACtBJ,EAAI7L,aAAaz8B,KAAK2oC,GACtBL,EAAI5L,WAAW18B,KAAK2iC,GAEpB+F,EAAOh4C,KAAO43C,EAAI53C,KAClBi4C,EAAOj4C,KAAO43C,EAAI53C,KAClBiyC,EAASjyC,KAAO43C,EAAI53C,KAEpB43C,EAAIjI,SAAWgI,EAAM9wD,KAErBqoB,EAAO20B,MAAMv0B,KAAKsoC,GAClB1oC,EAAO8wB,SAAS1wB,KAAKsoC,EACzB,CACJ,ECtOW,MAAMU,WAAgBhe,GACjCC,YAAYC,EAAOC,EAAOx6B,GAEtB4rC,MAAMrR,EAAOC,GACb5wC,KAAK0uD,SAAW,GAChB1uD,KAAK8iD,MAAO,EACZ9iD,KAAKoW,MAAQA,EACbpW,KAAKmnB,aAAe,KACpBnnB,KAAK2uD,cAAgBxlC,GAAAA,EAAQC,OAC7BppB,KAAK4uD,UAAY,GACjB5uD,KAAK6/C,aAAe,KACpB7/C,KAAK6uD,UAAY,KACjB7uD,KAAK8uD,UAAY,KACjB9uD,KAAK+uD,YAAc,GACnB/uD,KAAK+wC,OAAOie,wBAAwB,GACpChvD,KAAK+wC,OAAOke,sBAAuB,EACnCjvD,KAAKkvD,QAAU,EACflvD,KAAKmvD,eAAgB,EACrBnvD,KAAK05C,gBAAkB0V,GAAAA,MAAuBhW,mBAAmB,MACjEp5C,KAAKqvD,aAAc,EACnBrvD,KAAKsvD,WACT,CAEAC,mBAEI,OAAOvvD,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOC,GAAGA,EAAEqgC,eAAiBv2C,MACtF,CAEAsvD,YAEI,MAAMhe,EAAStxC,KAAKixC,SAASue,gBAAgB,UAC7Cle,EAAO3nB,SAAW,IAAIR,GAAAA,EAAQ,EAAE,GAAG,GACnCmoB,EAAO5f,KAAO4a,GAAAA,IAAemjB,oBAC7Bne,EAAOoe,gBAA4B,EAAVpoC,KAAK23B,GAAS,EACvC3N,EAAOqe,gBAA4B,EAAVroC,KAAK23B,GAAS,EACvC3N,EAAOse,eAAiB,EACxBte,EAAOue,eAAiB,EACxB7vD,KAAK8vD,aAAaxe,GAClBA,EAAOye,SAEP/vD,KAAKgwD,YACLhwD,KAAK2lB,OACT,CAEAA,QAEI3lB,KAAK4lB,eACL5lB,KAAKiwD,cACT,CAEArqC,eAEQ5lB,KAAK6uD,YAEL7uD,KAAK6uD,UAAY,IAAIqB,GAAAA,IAEzB,IAAIroD,EAAS,EACTC,EAAO,EAEX9H,KAAKuvD,mBAAmBl5C,SAAQxP,IAC5B,MAAMspD,EAAQtpD,EAAEupD,SAAQ,GACxBvoD,GAAUujB,OAAO+kC,EAAMtoD,QACvBC,GAAQsjB,OAAO+kC,EAAMroD,KAAK,IAG9B9H,KAAK6uD,UAAUz9B,KAAQ,GAAEpxB,KAAKoW,MAAM,MACjCpW,KAAK4wC,OAAO9wC,aAAa8E,aAExB5E,KAAK6uD,UAAUz9B,MAAS,WAAUvpB,EAAO6f,QAAQ,QAAQ5f,EAAK4f,QAAQ,QAE1E1nB,KAAK6uD,UAAUtW,MAAQ,sBACvBv4C,KAAK6uD,UAAUjX,SAAW,GAC1B53C,KAAK6uD,UAAUz8C,IAAO,IAAGpS,KAAK6wC,cAAcwf,aAAa,EAAI,QAC7DrwD,KAAK6uD,UAAUh9C,KAAQ,IAAG7R,KAAK6wC,cAAcyf,YAAY,EAAiC,EAA7BtwD,KAAK6uD,UAAUz9B,KAAKlxB,YAC7EF,KAAK4wC,OAAO9wC,aAAa8E,aAEzB5E,KAAK6uD,UAAUh9C,KAAQ,IAAG7R,KAAK6wC,cAAcyf,YAAY,EAAiC,GAA7BtwD,KAAK6uD,UAAUz9B,KAAKlxB,aAErFF,KAAK05C,gBAAgBf,WAAW34C,KAAK6uD,UACzC,CAEAoB,eAEI,IAAIjwD,KAAK8uD,UACT,CACI,MAAMyB,EAAO,4WAMbvwD,KAAK8uD,UAAY,IAAI0B,GAAAA,GAAM,QAAS,6BAA+BC,KAAKF,IACxEvwD,KAAK05C,gBAAgBf,WAAW34C,KAAK8uD,WAErC,MAAMlX,EAAY,OAElB,IAAI,IAAI/0C,EAAE,EAAGA,EAAE,EAAGA,IAClB,CACI,MAAM6tD,EAAI,IAAIR,GAAAA,GACdQ,EAAEt/B,KAAOvuB,EACT6tD,EAAE9Y,SAAWA,EACb8Y,EAAEnY,MAAQ,sBACD,IAAN11C,IAEC6tD,EAAEt/B,MAAQ,KAEdpxB,KAAK+uD,YAAYtpC,KAAKirC,EAC1B,CAEA1wD,KAAK+uD,YAAY14C,SAAQq6C,IACrB1wD,KAAK05C,gBAAgBf,WAAW+X,EAAE,GAE1C,CAEA,MAAMrF,EAASrrD,KAAK6wC,cAAcyf,YAC5BhF,EAAUtrD,KAAK6wC,cAAcwf,aAC7BM,EAAQtF,EAAOC,EACfsF,GAAS5wD,KAAK0uD,SAAWiC,EAAQ3wD,KAAK0uD,UAAU,EAEhDmC,EAAQ,WACRC,EAA4C,EAAhCxpC,KAAKilB,IAAIvsC,KAAK0uD,SAAWkC,GAE3C5wD,KAAK8uD,UAAU52C,MAAS,GAAG,EAAE44C,EAC7B9wD,KAAK8uD,UAAU32C,OAAS,MAExB,MAAMD,EAAQkT,OAAOprB,KAAK8uD,UAAU52C,MAAMoF,QAAQuzC,EAAM,KACxD7wD,KAAK8uD,UAAU18C,IAASpS,KAAK6wC,cAAcwf,aAAa,EAAI,GAAtC,MACtBrwD,KAAK8uD,UAAUj9C,KAAgBqG,EAAM,EAAX,GAAH,IACvBlY,KAAK8uD,UAAUr2C,UAAYzY,KAAK4wC,OAAO9wC,aAAakF,eAEpD,IAAI,IAAInC,EAAI,EAAGA,EAAE,EAAGA,IACpB,CACI,MAAM6tD,EAAI1wD,KAAK+uD,YAAYlsD,GAC3B6tD,EAAEt+C,IAASpS,KAAK6wC,cAAcwf,aAAa,EAAI,GAAtC,MACTK,EAAE7+C,KAAiBqG,EAAM,EAAGrV,EAAf,GAAkB,GAArB,IACV6tD,EAAEj4C,UAAYzY,KAAK4wC,OAAO9wC,aAAakF,eACpC0rD,EAAEt/B,KAAKlxB,OAAS,IAEfwwD,EAAE7+C,KAAiBqG,EAAM,EAAGrV,EAAf,GAAmB,GAAtB,IAElB,CACJ,CAEAitD,aAAaxe,GAETtxC,KAAK+wC,OAAOggB,SAEZ,MAAM74C,EAAQlY,KAAK6wC,cAAcyf,YAC3Bn4C,EAASnY,KAAK6wC,cAAcwf,aAC5BM,EAAQz4C,EAAMC,EACd64C,EAAQ74C,EAAOD,EACf04C,GAAS5wD,KAAK0uD,SAAWiC,EAAQ3wD,KAAK0uD,UAAU,EAChDuC,GAASjxD,KAAK0uD,SAAWsC,EAAQhxD,KAAK0uD,UAAU,EACtDpd,EAAO4f,SAAWlxD,KAAK0uD,SAAWuC,EAClC3f,EAAO6f,aAAe,EAAEnxD,KAAK0uD,SAAWuC,EACxC3f,EAAO8f,WAAa,EAAEpxD,KAAK0uD,SAAWkC,EACtCtf,EAAO+f,WAAarxD,KAAK0uD,SAAWkC,EACpC5wD,KAAK2lB,OACT,CAEAqqC,YAEIhwD,KAAKixC,SAASqgB,oBAAoB1nC,KAAIsyB,IAElC,IAAI/6B,EAAQ+6B,EAAI/6B,MACZowC,EAAQpwC,EAAMqwC,aAAerwC,EAAMswC,OACvCzxD,KAAKu+C,iBAAiBgT,EAAM,GAC7BjlB,GAAAA,IAA0BolB,cAC7B1xD,KAAKixC,SAAS0gB,cAAgB,CAACzV,EAAK0V,KAAgB5xD,KAAK2xD,cAAczV,EAAK0V,EAAW,EACvF5xD,KAAKixC,SAAS4gB,YAAc,CAAC3V,EAAK0V,KAAgB5xD,KAAK6xD,YAAY3V,EAAK0V,EAAW,EACnF5xD,KAAKixC,SAAS6gB,cAAiB5V,IAASl8C,KAAK8xD,cAAc5V,EAAI,EAC/Dl8C,KAAK6wC,cAAcn5B,iBAAiB,cAAcyJ,IAC3CnhB,KAAKmnB,eAEJnnB,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1CjxC,KAAK+xD,kBACT,GAMR,CAEAJ,cAAczV,EAAK0V,GAEf,GAAiB,GAAd1V,EAAIF,OAQH,GALAh8C,KAAKgyD,oBAAsB,IAAI7oC,GAAAA,EAAQnpB,KAAK2uD,cAAcz4C,EAAG,EAAGlW,KAAK2uD,cAAclnC,GACjE,OAAfznB,KAAKoW,QAEJpW,KAAKgyD,oBAAoB9kB,EAAI,KAE9BltC,KAAK0kB,eACR,CACI,IAAIpO,EAASs7C,EAAWK,WAAWpc,OAEnC,GAAGv/B,IAE4B,SAAxBA,EAAOH,KAAKwO,WACXrO,EAASA,EAAOgT,cAEjBtpB,KAAK0kB,gBAAkBpO,GAC1B,CACI,IAAI47C,EAAalyD,KAAK0kB,eAAei+B,iBAAiB3iD,MACtD,MAAM6rD,EAAY7rD,KAAK0kB,eAAewxB,SAAWl2C,KAAK0kB,eAAiB1kB,KAAK0kB,eAAe4E,aAG3F,GAFAtpB,KAAK4wC,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA2BiN,EAAUrG,GAAWC,aAAaoG,KAErF,MAAdqG,EAEClyD,KAAK0kB,eAAemzB,sBACpB73C,KAAKkyD,WAAaA,EAClBlyD,KAAKmyD,0BAA4BnyD,KAAK0kB,eAAenO,aAAaouC,iBAAiBn7B,YAGvF,CACI,IAAI4oC,EAAWR,EAAWK,WAC1B,GAAGG,EAASj8C,MAAMwO,SAClB,CACI,GAAGytC,EAASj8C,KAAKwO,SAASkE,SAAS,SAAWupC,EAASj8C,KAAKlZ,KAAK4rB,SAAS,YACtE,OAEJ7oB,KAAK0kB,eAAemzB,sBACpB73C,KAAKkyD,WAAaE,EAClBpyD,KAAKmyD,0BAA4BC,EAASzN,iBAAiBn7B,OAC/D,CACJ,CACJ,CAER,MAGQlT,EAASs7C,EAAWK,UAIpC,CAEAJ,YAAY3V,EAAK0V,GAEb,GAAiB,GAAd1V,EAAIF,OAKH,GAHAh8C,KAAKgyD,oBAAsB,KAC3BhyD,KAAK6/C,aAAe,KAEjB7/C,KAAKmnB,aACR,CACI,MAAMkrC,EAAaryD,KAAK4wC,OAAO9wC,aAAawyD,WAAWltC,MAAKlP,GAAKA,GAAGlW,OACpE,GAAGA,KAAKmnB,aAAa+uB,SAEjBl2C,KAAKuyD,0BAGL,GAAwC,WAArCvyD,KAAKmnB,cAAchR,KAAKwO,UAEvB,IAAI3kB,KAAKwyD,qBAEL,YAGH,GAAwC,SAArCxyD,KAAKmnB,cAAchR,KAAKwO,UAE5B,IAAI3kB,KAAKyyD,mBAEL,YAGH,GAAwC,SAArCzyD,KAAKmnB,cAAchR,KAAKwO,SAChC,CACI,MAAM+tC,EAA0B,OAAf1yD,KAAKoW,MAAiBpW,KAAKmnB,aAAauC,eAAiB1pB,KAAKmnB,aAAa0C,eACtFgwB,EAAM75C,KAAKmnB,aAAa86B,aAAaQ,OAAOziD,KAAKmnB,aAAa+6B,cAAcjsC,QAAOC,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WAAU7rB,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,UAAsBzO,EAAEC,KAAKq1C,WAAWluC,QAAQ,IAAI,IAAIuL,SAAS7oB,KAAKmnB,aAAahR,KAAKlZ,QAC/N,GAAyB,qBAAtB48C,EAAIlH,SAAS11C,KA6EZ,OA5EJ,CACI+C,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMghB,EAAYjyD,KAAKixC,SAAS0hB,KAAK3yD,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAUZ,WACrFjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAM3nB,EAAe2oC,EAAWpc,QAAQvsB,aACxC,IAAGA,EAkEC,OAjEJ,CACIuwB,EAAIphC,WAAY,EAChB,IAAI06B,EAAMuf,EAAS/oC,SAASH,QAC5B2pB,EAAIjG,EAAI,IACR,IAAI4lB,EAAW3f,EAAI3pB,QACnBspC,EAAS5lB,EAAI,EAEbltC,KAAKmnB,aAAaoqB,YAAYvxC,KAAKixC,SAASkC,GAE5C,MAAM4f,EAAkB/yD,KAAKmnB,aAAa5Q,aAAa+4B,iBAAiB9lB,QAClEwpC,EAAiBhzD,KAAKmnB,aAAauC,eAAe4lB,iBAAiB9lB,QACnEypC,EAAiBjzD,KAAKmnB,aAAa0C,eAAeylB,iBAAiB9lB,QAEzExpB,KAAKmnB,aAAa5Q,aAAa84B,OAAS/lB,EAAa/S,aACrDvW,KAAKmnB,aAAauC,eAAe2lB,OAAS/lB,EAAaI,eACvD1pB,KAAKmnB,aAAa0C,eAAewlB,OAAS/lB,EAAaO,eAEvD7pB,KAAKmnB,aAAa5Q,aAAaw9B,oBAAmB,GAClD/zC,KAAKmnB,aAAa5Q,aAAamuC,oBAAoBqO,EAAgBG,kBACnElzD,KAAKmnB,aAAa5Q,aAAagT,QAAUD,EAAa/S,aAAagT,QAAQC,QAC3ExpB,KAAKmnB,aAAa5Q,aAAas5B,SAAS3C,EAAI5jB,EAAa/S,aAAas5B,SAAS3C,EAC/EltC,KAAKmnB,aAAa5Q,aAAaC,YAAW,GAE1CxW,KAAKmnB,aAAauC,eAAeqqB,oBAAmB,GACpD/zC,KAAKmnB,aAAauC,eAAeg7B,oBAAoBsO,EAAeE,kBACpElzD,KAAKmnB,aAAauC,eAAeH,QAAUD,EAAa/S,aAAagT,QAAQC,QAC7ExpB,KAAKmnB,aAAauC,eAAemmB,SAAS3C,EAAI5jB,EAAa/S,aAAas5B,SAAS3C,EACjFltC,KAAKmnB,aAAauC,eAAeC,SAASujB,EAAI,GAE9CltC,KAAKmnB,aAAa0C,eAAekqB,oBAAmB,GACpD/zC,KAAKmnB,aAAa0C,eAAe66B,oBAAoBuO,EAAeC,kBACpElzD,KAAKmnB,aAAa0C,eAAeN,QAAUD,EAAa/S,aAAagT,QAAQC,QAC7ExpB,KAAKmnB,aAAa0C,eAAegmB,SAAS3C,EAAI5jB,EAAa/S,aAAas5B,SAAS3C,EACjFltC,KAAKmnB,aAAa0C,eAAeF,SAASujB,EAAI,GAE9CltC,KAAKmnB,aAAamC,aAAeA,EACjCtpB,KAAKmnB,aAAagsC,QAAQ98C,SAAQH,IAC9BA,EAAEoT,aAAeA,CAAY,IAEjCtpB,KAAKmnB,aAAaisC,QAAQ/8C,SAAQH,IAC9BA,EAAEoT,aAAeA,EACjBpT,EAAEm9C,sBAAsB,IAE5BrzD,KAAKmnB,aAAamsC,SAASj9C,SAAQH,IAC/BA,EAAEoT,aAAeA,EACjBpT,EAAEm9C,sBAAsB,IAG5BrzD,KAAKmnB,aAAaosC,kBAIlBlB,EAAWlrC,aAAai7B,SAAU,EAClCiQ,EAAWlrC,aAAaumC,eAAiB2E,EAAWj8C,MACpDi8C,EAAWlrC,aAAaqsC,iBAAiBnB,EAAWj8C,OAEpDi8C,EAAWlrC,aAAe,KAC1BmC,EAAas8B,SAAU,EACvBt8B,EAAa6sB,SAAS1wB,KAAKzlB,KAAKmnB,cAChCmC,EAAagjC,MAAM7mC,KAAKzlB,KAAKmnB,cAE7BnnB,KAAK4wC,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA6B5+C,KAAKmnB,aAAaq+B,GAAWC,aAAan8B,IACpH,CAKJ,CAKJ,KAC6C,SAArCtpB,KAAKmnB,cAAchR,KAAKwO,SAE5B3kB,KAAKyzD,mBAEoC,YAArCzzD,KAAKmnB,cAAchR,KAAKwO,UAE5B3kB,KAAK0zD,sBAIT1zD,KAAKmvD,gBAELnvD,KAAKmnB,aAAe,KACpBnnB,KAAK4wC,OAAOn8B,eAAiB,KAC7BzU,KAAK+xD,kBAELt7C,YAAW,KACPzW,KAAK0W,YAAY,GAClB,KAEX,MAGO1W,KAAKkyD,aAEqC,UAAtClyD,KAAK0kB,eAAevO,MAAMwO,WAEtB3kB,KAAKqvD,cAEJrvD,KAAK0kB,eAAenO,aAAaoT,SAAW3pB,KAAKmyD,0BAA0B3oC,QAC3ExpB,KAAK0kB,eAAegF,eAAeC,SAASzT,EAAIlW,KAAKmyD,0BAA0Bj8C,EAC/ElW,KAAK0kB,eAAegF,eAAeC,SAASlC,EAAIznB,KAAKmyD,0BAA0B1qC,EAC/EznB,KAAK0kB,eAAemF,eAAeF,SAASzT,EAAIlW,KAAKmyD,0BAA0Bj8C,EAC/ElW,KAAK0kB,eAAemF,eAAeF,SAASlC,EAAIznB,KAAKmyD,0BAA0B1qC,EAC/EznB,KAAK4wC,OAAO9wC,aAAaG,QAAQgvC,MACjCjvC,KAAK4wC,OAAO9wC,aAAaC,aAAeC,KAAK4wC,OAAO9wC,aAAa6zD,kBAGrE3zD,KAAKo/C,mBACLp/C,KAAK4zD,iBAE6B,SAAnC5zD,KAAKkyD,WAAW/7C,MAAMwO,UAErB3kB,KAAKkyD,WAAWrc,QAAQqS,eAAeloD,KAAKkyD,WAAWvN,iBAAkB3kD,KAAKmyD,4BAI1D,MAAzBP,EAAWK,YAEPL,EAAWK,WAAWpc,OAErBp/B,YAAW,KACPzW,KAAK6zD,WAAWjC,EAAWK,WAAW,GACvC,IAMPjyD,KAAKgV,wBAETyB,YAAW,KACPzW,KAAK0W,YAAY,GAClB,UAGY,IAAfwlC,EAAIF,QAEgC,SAArCh8C,KAAKmnB,cAAchR,KAAKwO,WAEvB3kB,KAAKkvD,UAAY,EACjBlvD,KAAK8xD,cAAc,MAG/B,CAEAA,cAAc5V,GAEVl8C,KAAK+xD,kBAEL,IAAI5e,EAAMnzC,KAAK2uD,cACXmF,EAAc9zD,KAAKixC,SAAS0hB,KAAK3yD,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAE3E,GAAIiB,EAAYC,IAAhB,CAEI5gB,EAAIj9B,EAAI49C,EAAYE,YAAY99C,EAChCi9B,EAAIjG,EAAI,IACRiG,EAAI1rB,EAAIqsC,EAAYE,YAAYvsC,EAKpC,IAAIN,EAAennB,KAAKmnB,aACpB+qC,EAAalyD,KAAKkyD,WACtB,IACI,GAAG/qC,EAEC,GAAGA,EAAa+uB,SAEZl2C,KAAKi0D,qBAAqB9gB,QAI1B,GAAwC,WAArCnzC,KAAKmnB,cAAchR,KAAKwO,SAEvB3kB,KAAKk0D,qBAAqB/gB,QAEzB,GAAwC,SAArCnzC,KAAKmnB,cAAchR,KAAKwO,SAE5B3kB,KAAKm0D,mBAAmBhhB,QAEvB,GAAwC,SAArCnzC,KAAKmnB,cAAchR,KAAKwO,SAChC,CACIwuB,EAAIjG,EAAI,IACR,IAAIknB,EAAkBjhB,EAAI3pB,QAC1BxpB,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,IAAIojB,EAAkBr0D,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOqP,IAAMA,EAAE88B,UACnFpiD,KAAKs0D,iBAAiBF,EAAiBp0D,KAAKmnB,aAAcktC,GAC1Dr0D,KAAKo0D,gBAAkBA,EACvB,MAAMva,EAAM75C,KAAKmnB,aAAa86B,aAAaQ,OAAOziD,KAAKmnB,aAAa+6B,cAAcjsC,QAAOC,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WAAU7rB,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,UAAsBzO,EAAEC,KAAKq1C,WAAWluC,QAAQ,IAAI,IAAIuL,SAAS7oB,KAAKmnB,aAAahR,KAAKlZ,QAC/N48C,EAAIphC,WAAY,EAChBohC,EAAIlH,SAAW3yC,KAAKixC,SAAS2B,kBAAkB,kBAC/C5yC,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,IAAI6iB,EAAc9zD,KAAKixC,SAAS0hB,KAAK3yD,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAC3E7yD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GACT,WAA9B6iB,EAAY7B,WAAWn2D,GAEtB+9C,EAAIlH,SAAW3yC,KAAKixC,SAAS2B,kBAAkB,kBAI/CiH,EAAIlH,SAAW3yC,KAAKixC,SAAS2B,kBAAkB,mBAEvD,KAC6C,SAArC5yC,KAAKmnB,cAAchR,KAAKwO,SAE5B3kB,KAAKu0D,mBAAmBphB,GAEiB,YAArCnzC,KAAKmnB,cAAchR,KAAKwO,UAE5B3kB,KAAKw0D,sBAAsBrhB,QAIlC,GAAG+e,EACR,CACI,IAAIxtC,EAAiB1kB,KAAK0kB,eAG1B,GAAoC,QAAjCA,EAAevO,MAAMwO,UAAsB3kB,KAAKgyD,oBACnD,CACI,IAAI3J,EAAOlV,EAAIrG,SAAS9sC,KAAKgyD,qBACzByC,EAAUz0D,KAAKmyD,0BAA0BvoC,IAAIy+B,GAE7CgM,EAAkBr0D,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOqP,GAAKA,GAAKZ,IACrF1kB,KAAKs0D,iBAAiBG,EAAS/vC,EAAgB2vC,GAE/Cr0D,KAAKo0D,gBAAkBK,EAAQjrC,OACnC,MACK,GAAoC,UAAjC9E,EAAevO,MAAMwO,UAAyD,QAAjCD,EAAevO,MAAMwO,UAAuD,WAAjCD,EAAevO,MAAMwO,SACrH,CACI,MAAMwuC,EAAUzuC,EAAe2qB,OAC/B,IAAI8jB,EACA,OACJ,MAAMjJ,EAAWiJ,EAAQpJ,iBAAiB/pD,KAAKixC,UAC/CjxC,KAAK4uD,UAAUnpC,KAAKykC,GAEhB7B,EAAOlV,EAAIrG,SAAS9sC,KAAKgyD,qBACzByC,EAAUz0D,KAAKmyD,0BAA0BvoC,IAAIy+B,GACjD3jC,EAAegwC,SAASD,EAC5B,MACK,GAAoC,UAAjC/vC,EAAevO,MAAMwO,UAAyD,QAAjCD,EAAevO,MAAMwO,SAC1E,CACI,IAAI3kB,KAAKgyD,oBACL,OAEA3J,EAAOlV,EAAIrG,SAAS9sC,KAAKgyD,qBACzByC,EAAUz0D,KAAKmyD,0BAA0BvoC,IAAIy+B,GAE7CgM,EAAkBr0D,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOqP,GAAKA,GAAKZ,IAKrF,GAJA1kB,KAAKs0D,iBAAiBG,EAAS/vC,EAAgB2vC,GAE/Cr0D,KAAKo0D,gBAAkBK,EAAQjrC,QAEK,UAAjC9E,EAAevO,MAAMwO,SACxB,CACI,MAAMgwC,EAAQjwC,EAAekwC,aAAa50D,KAAKixC,UACzC4jB,EAAe70D,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOC,GAAGA,EAAEqgC,cAAgBv2C,OAAMgtB,KAAI9W,GAAGA,EAAE0+C,aAAa50D,KAAKixC,YAAWh7B,QAAOC,GAAKA,GAAKy+C,IAE5J30D,KAAKqvD,aAAc,EACnB,IAAI,IAAI/pC,KAAKuvC,EACb,CACI,MAAMC,EAAUH,EAAMI,eAAezvC,GAAE,GACvC,GAAGwvC,EACH,CACI90D,KAAKqvD,aAAc,EACnB,KACJ,CACJ,CAEA,MAAMhd,EAAiBryC,KAAKqyC,eAE5B,GADAA,EAAeoL,kBACZz9C,KAAKqvD,YACR,CACI,MAAM/P,EAAS56B,EAAe8pC,OAAOxhC,KAAI9W,GAAGA,EAAEssC,gBAAgBp9B,MAAKE,GAAGA,EAAEo9B,SAAW1iD,KAAKixC,aACxF,IAAI,IAAIpqC,KAAKy4C,EACTjN,EAAe2iB,QAAQnuD,EAAG,IAAIylC,GAAAA,IAAe,EAAE,EAAE,IACzD,CACJ,CACJ,CAEA,MAAMuf,EAAY7rD,KAAK0kB,eAAewxB,SAAWl2C,KAAK0kB,eAAiB1kB,KAAK0kB,eAAe4E,aACrF2rC,EAAUpJ,EAAU1V,SAASlgC,QAAOC,GAAGA,EAAEszC,YAAWx8B,KAAI9W,GAAGA,EAAEszC,YAClE/G,OAAOoJ,EAAU1V,SAASlgC,QAAOC,GAAGA,EAAEuzC,cAAaz8B,KAAI9W,GAAGA,EAAEuzC,eAC5DhH,OAAOoJ,EAAU1V,SAASlgC,QAAOC,GAAGA,EAAEwzC,cAAa18B,KAAI9W,GAAGA,EAAEwzC,eAC7DuL,EAAQ5+C,SAAQ8F,UACTu4B,EAAEwgB,MAEDxgB,EAAEwgB,KAAKnF,OAAOrb,EAClB,IAEJ10C,KAAK4wC,OAAO9wC,aAAaG,QAAQid,OAAO,GAAG,GAAG05B,MAAQ4O,GAAWC,aAAaoG,EAClF,KAEA,CACI,IAAIiI,EAAc9zD,KAAKixC,SAAS0hB,KAAK3yD,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAC3E,GAAIiB,EAAYC,IAChB,CACI,IAAIvW,EAAWx9C,KAAKgyC,sBACpBwL,EAASC,kBAET,IAAI1P,EAAO+lB,EAAY7B,WACvB,GAAGjyD,KAAKmvD,cAEJ,GAA2B,SAAxBphB,EAAK53B,MAAMwO,SACd,CACI,MAAMwwC,EAAapnB,EAAK8H,OAClBqU,EAAWiL,EAAWpL,iBAAiB/pD,KAAKixC,UAClDjxC,KAAK4uD,UAAUnpC,KAAKykC,GACpBiL,EAAW5K,kBAAiB,EAAKvqD,KAAKixC,SAC1C,MAGIjxC,KAAKixC,SAASmkB,cAAc,aAAa/+C,SAAQ20C,IAC7CA,EAAEzlC,SAAS,SAIfwoB,GAAQA,EAAK8H,QAAU9H,EAAK8H,QAAQvsB,cAAcitB,cAAgBv2C,OAElEA,KAAKqyC,eAAegjB,QAAQtnB,KAE5BA,EAAKunB,cAAgB,IAAIhpB,GAAAA,IAAsBtsC,KAAKixC,UAEpDuM,EAASwX,QAAQjnB,EAAMzB,GAAAA,IAAeipB,UAEtCxnB,EAAKunB,cAAcE,eAAe,IAAIlpB,GAAAA,IAA0BA,GAAAA,IAAsBmpB,qBAAqB,SAASC,GAChHlY,EAASmY,WAAW5nB,EACxB,KACiC,UAA9BA,EAAK8H,OAAO1/B,KAAKwO,WAEhBopB,EAAKunB,cAAcM,YAAY,SAI/C,CACJ,CACJ,CACA,MAAMnqC,GAEFtQ,QAAQ6D,MAAMyM,EAClB,CArLU,CAsLd,CAEAtP,yBAEI,IAAI25B,EAAc91C,KAAK4wC,OAAO9wC,aAC1BkX,EAAY8+B,EAAY9+B,UACxB6+C,EAAS/f,EAAY//B,aAUzB,GARG8/C,EAAOC,OAEND,EAAOC,MAAMz/C,SAAQiP,IAEjBA,EAAEC,SAAS,KAIfvlB,KAAK4wC,OAAO9wC,aAAa6T,WACzB,OAEJ,MAAMoiD,QAAgBC,GAAAA,kCAClBA,GAAAA,gCAA2CC,uBAG/C,IAAIC,EAAkB,GAClBC,EAAiB,IACjBC,EAAgB,IAEhBC,EAAa,GACbC,EAAY,GACZC,EAAa,GAEjBV,EAAO7/C,QAAQK,SAAQiP,IAEnB,IAAIkxC,EAAYlxC,EAAEmxC,gBAClBD,EAAUngD,SAAQvC,IAEVwR,EAAEoxC,YAEFJ,EAAU7wC,KAAK,CACX4oB,MAAO9vB,KAAK+S,MAAM/S,KAAKC,UAAU1K,EAAKu6B,QACtCl2B,OAAQrE,EAAKqE,OAAS,IACtBw+C,QAAS7iD,EAAK6iD,UAItBN,EAAW5wC,KAAK,CACZ4oB,MAAO9vB,KAAK+S,MAAM/S,KAAKC,UAAU1K,EAAKu6B,QACtCl2B,OAAQrE,EAAKqE,OAAS,IACtBw+C,QAAS7iD,EAAK6iD,SAChB,GACJ,IAGN,MAAML,EAAUp2D,OAAS,EACzB,CACI,IAAI02D,EAAWN,EAAUrnB,MACrB4nB,EAAOD,EAASvoB,MAChByoB,EAAmBR,EAAUrgD,QAAOqP,GAAKA,EAAEqxC,SAAWC,EAASD,UACnE,MAAM,EACN,CAEI,IADA,IAAII,GAAY,EACRl0D,EAAE,EAAGA,EAAEi0D,EAAiB52D,OAAQ2C,IACxC,CACI,IAAIm0D,EAAaF,EAAiBj0D,GAC9ByT,EAAS0gD,EAAW3oB,MAEpB4oB,EAAYlB,EAAQmB,YAAY,CAChCC,SAAUnB,GAAAA,SAAoBoB,MAC9BC,gBAAiBrB,GAAAA,aAAwBsB,QACzCC,WAAY,CAAC,CAACzjD,KAAM+iD,IACpBW,cAAe,CAAC,CAAC1jD,KAAMwC,MAG3B,GAAuB,GAApB2gD,EAAU/2D,OACb,CACI22D,EAAOI,EAAU,GACjBF,GAAY,EAEZD,EAAiBjkC,OAAOhwB,EAAG,GAE3B,IAAI40D,EAAYnB,EAAU5wB,QAAQsxB,GAC/BS,GAAa,GACZnB,EAAUzjC,OAAO4kC,EAAW,GAEhC,KACJ,CACJ,CAEA,IAAIV,EACA,KACR,CAEAH,EAASvoB,MAAQ,CAACwoB,GAClBD,EAASc,YAAcb,EACvBN,EAAW9wC,KAAKmxC,EACpB,CAGA,IAAIe,EAAWtB,EAAWpgD,QAAOqP,GAAkB,MAAbA,EAAEqxC,UACxCJ,EAAWtgD,QAAOqP,GAAkB,MAAbA,EAAEqxC,UAAiBtgD,SAAQiP,IAI9C,IAFA,IAAIuxC,EAAOvxC,EAAE+oB,MAELxrC,EAAE,EAAGA,EAAE80D,EAASz3D,OAAQ2C,IAChC,CACI,IAAI+0D,EAAYD,EAAS90D,GACrBuT,EAAQwhD,EAAUvpB,MAElBwpB,EAAgB9B,EAAQmB,YAAY,CACpCC,SAAUnB,GAAAA,SAAoB8B,aAC9BT,gBAAiBrB,GAAAA,aAAwBsB,QACzCC,WAAYV,EAAK7pC,KAAI1H,IAAK,CAAExR,KAAMwR,MAClCkyC,cAAe,CAAC,CAAC1jD,KAAMsC,MAG3B,KAAGyhD,EAAc33D,QAAU,GAA3B,CAGA,IAAI63D,EAAWhC,EAAQmB,YAAY,CAC/BC,SAAUnB,GAAAA,SAAoBgC,WAC9BX,gBAAiBrB,GAAAA,aAAwBsB,QACzCC,WAAYM,EAAc7qC,KAAI1H,IAAK,CAAExR,KAAMwR,MAC3CkyC,cAAeX,EAAK7pC,KAAI1H,IAAK,CAAExR,KAAMwR,QAGrC2yC,EAAkBlC,EAAQmC,cAAc,CACxC3G,OAAQ,GACR4G,aAAc,CAAC,CACXrkD,KAAMikD,EACNK,SAAUpC,GAAAA,SAAoBqC,MAC9BC,QAAStC,GAAAA,QAAmBuC,kBAKpC,GADA1B,EAAOkB,EACJE,EAAgB/3D,QAAU,EAC7B,CACI22D,EAAO,KACP,KACJ,CAvBY,CAwBhB,CAEAvxC,EAAE+oB,MAAQwoB,CAAI,IAIlBN,EAAaA,EAAWtgD,QAAOqP,GAAKA,EAAE+oB,QAEtC,IAAImqB,EAA8B,IAAhBpC,EAClBG,EAAWlgD,SAAQiP,IAEf,IAAIoyC,EAAcpyC,EAAEoyC,YAEhBe,EAAkB1C,EAAQmC,cAAc,CACxC3G,OAAQiH,EACRL,aAAc,CAAC,CACXrkD,KAAM4jD,EACNU,SAAUpC,GAAAA,SAAoBqC,MAC9BC,QAAStC,GAAAA,QAAmBuC,kBAIpC,GAAGE,EAAgBv4D,QAAU,EAEzBolB,EAAE+oB,MAAQ,SAGd,CACI,IAAIqqB,EAAYD,EAAgBE,OAChCrzC,EAAEozC,UAAYA,CAClB,KAGJnC,EAAaA,EAAWtgD,QAAOqP,GAAKA,EAAE+oB,QAGtCkoB,EAAWlgD,SAAQiP,IAEf,IAAIgxC,EAAYhxC,EAAE+oB,MACdqqB,EAAYpzC,EAAEozC,UACdvgD,EAASmN,EAAEnN,OAEfm+C,EAAUjgD,SAAQuiD,IAEd,IAAIC,EAAqB/qB,GAAWgrB,qBAAqBF,EAAS5rC,KAAI+rC,GAAK,IAAIzsB,GAAAA,IAAgBysB,EAAE7iD,EAAI,IAAMiC,EAAQ4gD,EAAE7rB,EAAI,QAErH2pB,EAAOvqB,GAAAA,IAAoB0sB,eAAe,OAAQ,CAACC,MAAMJ,EAAoBljB,MAAOugB,EAAkBC,GAAiBn/C,EAAUi6B,SAAUioB,IAC3IC,EAAU7sB,GAAAA,IAAYsI,SAASiiB,GAGnC,GAFAA,EAAKtxC,UAEFmzC,EACH,CACI,IAAIU,EAAqBtrB,GAAWgrB,qBAAqBJ,EAAU1rC,KAAI+rC,GAAK,IAAIzsB,GAAAA,IAAgBysB,EAAE7iD,EAAI,IAAMiC,EAAQ4gD,EAAE7rB,EAAI,QAEtHmsB,EAAqB/sB,GAAAA,IAAoB0sB,eAAe,UAAW,CAACC,MAAMG,EAAoBzjB,MAAOugB,EAAkBC,GAAiBn/C,EAAUi6B,SAAUioB,IAChKG,EAAmB1vC,SAAW0vC,EAAmB1vC,SAASC,IAAI,IAAI0iB,GAAAA,IAAgB,EAAG4pB,EAAiB,IACtG,IAAIoD,EAAkBhtB,GAAAA,IAAYsI,SAASykB,GAE3CF,EAAUA,EAAQrsB,SAASwsB,GAC3BD,EAAmB9zC,SACvB,CAEAsxC,EAAOsC,EAAQpkB,OAAO,OAAQ,KAAM/9B,EAAUi6B,UAAU,GACxD4lB,EAAKltC,SAAWktC,EAAKltC,SAASC,IAAI,IAAI0iB,GAAAA,IAAgB,EAAGn0B,EAAS+9C,EAAkBC,EAAgB,IACpG,MAAMoD,EAAW,IAAIjtB,GAAAA,IAAsB,QAASuqB,EAAKnU,QACzD6W,EAASC,aAAa/zC,KAAKzO,EAAUi6B,SAAS2B,kBAAkB,YAChE2mB,EAASC,aAAa/zC,KAAKzO,EAAUi6B,SAAS2B,kBAAkB,aAEhEikB,EAAKlkB,SAAW4mB,EAChB1D,EAAOC,MAAMrwC,KAAKoxC,EAAK,GACzB,GAEV,CAEA16C,qBAAqB80B,EAASmP,GAE1B,MAAM8N,EAAUluD,KAAK4wC,OAAO9wC,aAAakX,UAAUi6B,SAC7C6a,EAAQ7a,EAASqO,OAAOrpC,QAAOC,GAAsB,SAAnBA,EAAEC,MAAMwO,WAAmB1O,QAAOC,GAAe,MAAZA,EAAE2/B,SACzE4jB,EAASxoB,EAASqO,OAAOrpC,QAAOC,GAAsB,UAAnBA,EAAEC,MAAMwO,WAAoB1O,QAAOC,GAAe,MAAZA,EAAE2/B,SAAgB5/B,QAAOC,IAAIA,EAAEC,MAAM4M,SAAS8F,SAAS,UAChI6wC,EAASzoB,EAASqO,OAAOrpC,QAAOC,GAAsB,UAAnBA,EAAEC,MAAMwO,WAAoB1O,QAAOC,GAAe,MAAZA,EAAE2/B,SAC3E8jB,EAAQ1oB,EAASqO,OAAOrpC,QAAOC,GAAsB,SAAnBA,EAAEC,MAAMwO,WAAmB1O,QAAOC,GAAe,MAAZA,EAAE2/B,SACzEof,EAAUhkB,EAASmkB,cAAc,aACjCwE,EAAa3oB,EAASmkB,cAAc,gBACpCyE,EAAa5oB,EAASmkB,cAAc,YACpC0E,EAAc7oB,EAASmkB,cAAc,cAmH3C,GAjHAyE,EAAWxjD,SAAQ0jD,GAAGA,EAAEx0C,YACxBu0C,EAAYzjD,SAAQ0jD,GAAGA,EAAEx0C,YAEzB0vC,EAAQ5+C,SAAQq+B,IACZ,GAAGA,EAAEwgB,KACL,CACI,MAAM8E,EAAa,IAAItlB,EAAEwgB,KAAK+E,oBACxBC,EAAW,GACjBF,EAAW3jD,SAAQiP,IACf40C,EAASz0C,KAAKH,EAAEo9B,OAAO9P,kBAAkBttB,EAAEqtB,UAAU11C,OACrDqoB,EAAEqtB,SAAW,IAAI,IAErB+B,EAAEwgB,KAAK+E,mBAAqB,CAAChpB,EAASkpB,cAAc,YACpD,IAAI,IAAIt3D,EAAI,EAAGA,EAAIm3D,EAAW95D,OAAQ2C,IAElCm3D,EAAWn3D,GAAG8vC,SAAWunB,EAASr3D,EAE1C,KAGJ+2D,EAAWvjD,SAAQq+B,IACf,GAAGA,EAAEwgB,KACL,CACI,MAAM8E,EAAa,IAAItlB,EAAEwgB,KAAK+E,oBACxBC,EAAW,GACjBF,EAAW3jD,SAAQiP,IACf40C,EAASz0C,KAAKH,EAAEo9B,OAAO9P,kBAAkBttB,EAAEqtB,UAAU11C,OACrDqoB,EAAEqtB,SAAW,IAAI,IAErB+B,EAAEwgB,KAAK+E,mBAAqB,CAAChpB,EAASkpB,cAAc,YACpD,IAAI,IAAIt3D,EAAI,EAAGA,EAAIm3D,EAAW95D,OAAQ2C,IAElCm3D,EAAWn3D,GAAG8vC,SAAWunB,EAASr3D,EAE1C,KAGJoyD,EAAQ5+C,SAAQq+B,IACTA,EAAEwgB,OAEDxgB,EAAEX,qBACFW,EAAEwgB,KAAKnF,OAAOrb,GAClB,IAGJklB,EAAWvjD,SAAQq+B,IACZA,EAAEwgB,OAEDxgB,EAAEX,qBACFW,EAAEwgB,KAAKnF,OAAOrb,GAClB,IAGJoX,EAAMz1C,SAAQ20C,IACV,IAAIA,EAAEoP,WAAU,GAEZ,OAGJ,MAAM3O,EAAOT,EAAErY,SACfqY,EAAErY,SAAW,KACbM,GAAUC,cAAc8X,GACxBA,EAAEjX,qBACFkhB,EAAQ5+C,SAAQq+B,IACZ,IAAIA,EAAEwgB,KAEF,OAEJ,MAAMA,EAAOxgB,EAAEwgB,KAEf,IAAIlK,EAAEnV,SAAWqf,EACb,OAEJ,GAAgC,YAA7BxgB,EAAEmB,QAAQ1/B,MAAMwO,SAEf,GAAGqmC,EAAEnV,OAAO1/B,MAAMq1C,WAAW3iC,SAAS,cAIjC,GAAG6rB,EAAEmB,OAAOxG,QAAU2b,EAAEnV,OAEzB,OAIR,MAAMwkB,EAAUrP,EAAE+J,eAAergB,GAAE,GACnC,GAAG2lB,EACH,CACI,MAAMC,EAAO5lB,EAAErB,kBAAkBC,YAC3Bp7B,EAA4B,EAApBoiD,EAAK5kB,WAAWx/B,EACxBy/B,EAA4B,EAApB2kB,EAAK5kB,WAAWjuB,EAExB8yC,EAAajuB,GAAAA,IAAoB0G,UAAU,KAAK,CAAE96B,MAAa,GAANA,EAAUC,OAAO,IAAKw9B,MAAa,GAANA,GAAa1E,GACzGspB,EAAW1qB,SAAW,IAAIvD,GAAAA,IAAgBhlB,KAAK23B,GAAK,EAAG,EAAG,GAC1Dsb,EAAW5wC,SAAW+qB,EAAE/qB,SAASH,QACjC+wC,EAAW1qB,SAAS3C,EAAIwH,EAAE7E,SAAS3C,EACnCqtB,EAAWlrB,OAASqF,EAAErF,OACtBkrB,EAAWxmB,qBAERiX,EAAE+J,eAAewF,GAAW,KAE3BrF,EAAK+E,mBAAmBx0C,KAAKulC,GAC1B/Z,IAAaid,GAEZlD,EAAEnV,OAAOkV,aAAaC,EAAEtW,IAGhC6lB,EAAWh1C,SACf,KAEJylC,EAAErY,SAAW8Y,CAAI,IAGlBxa,IAAaid,EAEZ,IAAI,IAAIxZ,KAAKugB,EAET,IAAI,IAAIvE,KAAKzf,EAASmkB,cAAc,YACpC,CACI,GAAgC,YAA7B1gB,EAAEmB,QAAQ1/B,MAAMwO,SAEf,GAAG+rC,EAAE7a,QAAQ1/B,MAAMq1C,WAAW3iC,SAAS,cAIlC,GAAG6nC,EAAE1F,EAAEnV,QAAUnB,EAAEmB,OAAOxG,OAC3B,SAGLqF,EAAEqgB,eAAerE,GAAE,IAElBhc,EAAEwgB,KAAK+E,mBAAmBx0C,KAAKirC,EAEvC,CAIR+I,EAAOpjD,SAAQ+pC,IACX,IAAIA,EAAEga,WAAU,GAEZ,OAEJ,MAAM3O,EAAOrL,EAAEsC,OAAO9P,kBAAkBwN,GAAGzN,UAAU11C,MACrDmjD,EAAEzN,SAAW,KAEbM,GAAUC,cAAckN,GACxBA,EAAErM,qBAEF6lB,EAAWvjD,SAAQq+B,IACf,MAAMwgB,EAAOxgB,EAAEwgB,KAEf,GAA6B,QAA1BxgB,EAAEmB,OAAO1/B,KAAKwO,SACjB,CACI,IAAIuwC,EAAKsF,gBAAkBpa,EAAE92B,cAAgBorB,EAAEprB,aAE3C,OAGJ,GAAG4rC,EAAKsF,gBAAkBpa,EAAE92B,cAAgBorB,EAAEprB,aAE1C,MAER,CAEA,MAAM+wC,EAAUja,EAAE2U,eAAergB,GAAE,GAChC2lB,GACCnF,EAAK+E,mBAAmBx0C,KAAK26B,EACjC,IAGJA,EAAEzN,SAAW8Y,CAAI,IAGlBxa,IAAaid,IAEZwL,EAAOrjD,SAAQ8F,UACX6M,EAAE6sB,OAAOkV,aAAa9Z,EAAS,IAEnC0oB,EAAMtjD,SAAQ8F,UACV48C,EAAEljB,OAAOkV,aAAa9Z,EAAS,IAG3C,CAEAv6B,aAEI,IAAI1W,KAAKZ,SACL,OACJ,MAAM8uD,EAAUluD,KAAK4wC,OAAO9wC,aAAakX,UAAUi6B,SAC7CsW,EAASvnD,KAAK4wC,OAAO9wC,aAAaiV,YAAYk8B,SAC9CuW,EAASxnD,KAAK4wC,OAAO9wC,aAAaiX,YAAYk6B,SAEpDjxC,KAAKy6D,eAAelT,EAAO,MAC3BvnD,KAAKy6D,eAAejT,EAAO,MAC3BxnD,KAAKy6D,eAAevM,EAAQ,MAE5BluD,KAAK4zD,gBACL5zD,KAAK4wC,OAAO9wC,aAAakX,UAAU4O,eACnC5lB,KAAK4wC,OAAO9wC,aAAaiV,YAAY6Q,eACrC5lB,KAAK4wC,OAAO9wC,aAAaiX,YAAY6O,cACzC,CAEAguC,gBAEI,IAAI8G,EAAW,GACX/C,EAAW,GAEf33D,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOqP,IAAMA,EAAE88B,UAAS/rC,SAAQiP,IAE/C,MAAxBA,EAAEixB,aAAangC,MACduhD,EAASlyC,KAAKH,GAEdo1C,EAASj1C,KAAKH,EAAE,IAGxBqyC,EAASthD,SAAQiP,GAAKA,EAAEq1C,cAAcD,IAC1C,CAEApG,iBAAiBnhB,EAAK0C,EAAQwe,GAE1B,IAAIuG,EAAUznB,EAAIjG,EACS,UAAxB2I,EAAO1/B,KAAKwO,WACXi2C,EAAwB,MAAd56D,KAAKoW,MAAgB,IAAM,GAEzC,IAAIoQ,EAASqvB,EAAOkN,aAAa/iD,KAAMA,KAAK6/C,aAAc1M,EAAIj9B,EAAGi9B,EAAI1rB,EAAG4sC,GACxE,GAAa,MAAV7tC,EACH,CACI,IAAIq0C,EAAc,CAAC,EACfC,EAAQ,GACM,MAAft0C,EAAOo7B,MAENzO,EAAIj9B,EAAIi9B,EAAIj9B,EAAIsQ,EAAO46B,OAAO,GAAGL,QACjCv6B,EAAO46B,OAAO/qC,SAAQuwB,IAElBk0B,EAAMr1C,KAAK,CAAC,IAAI6mB,GAAAA,IAAgB1F,EAAKsa,OAAQ,EAAGta,EAAK+Z,QAAQ,IAAK,IAAIrU,GAAAA,IAAgB1F,EAAKsa,OAAQ,EAAGta,EAAK+Z,QAAQ,KAAK,IAG5Hka,EAAYpf,EAAIj1B,EAAO46B,OAAO,GAAGF,QAGjC/N,EAAIj9B,EAAIi9B,EAAIj9B,EAChBi9B,EAAIjG,EAAI0tB,EAEU,MAAfp0C,EAAOs7B,MAEN3O,EAAI1rB,EAAI0rB,EAAI1rB,EAAIjB,EAAO86B,OAAO,GAAGP,QACjCv6B,EAAO86B,OAAOjrC,SAAQuwB,IAElBk0B,EAAMr1C,KAAK,CAAC,IAAI6mB,GAAAA,IAAgB1F,EAAK+Z,QAAQ,GAAI,EAAG/Z,EAAKsa,QAAS,IAAI5U,GAAAA,IAAgB1F,EAAK+Z,QAAQ,GAAI,EAAG/Z,EAAKsa,SAAS,IAG5H2Z,EAAYvf,EAAI90B,EAAO86B,OAAO,GAAGJ,QAGjC/N,EAAI1rB,EAAI0rB,EAAI1rB,EAEhB,IAAI,IAAI5kB,EAAE,EAAGA,EAAEi4D,EAAM56D,OAAQ2C,IAC7B,CACI,IAAIq3C,EAAO4gB,EAAMj4D,GACbqnD,EAAW5d,GAAAA,IAAoB6d,kBAAkB,KAAM,CAACld,OAAQiN,EAAM8P,OAAQ1d,GAAAA,IAAgByc,SAAS7O,EAAK,GAAIA,EAAK,IAAMl6C,KAAK0uD,SAAW,GAAI1uD,KAAKixC,UACxJiZ,EAAS3R,MAAQjM,GAAAA,IAAege,QAEhCtqD,KAAK4uD,UAAUnpC,KAAKykC,EACxB,CAEAlqD,KAAK6/C,aAAegb,CACxB,MAEI76D,KAAK6/C,aAAe,KAExB,GAA2B,UAAxBhK,EAAO1/B,KAAKwO,SACf,CACI,IAAIU,EAASwwB,EAAOvsB,aACpB,GAAa,MAAVjE,EACH,CACI,IAAI01C,EAAY11C,EAAOy0B,iBAAiB95C,KAAM,CAAC,UAE3CklD,EAAU/R,EAAI3pB,QAElB,GADA07B,EAAQhY,EAAI,GACR6tB,EAAUC,gBAAgB9V,GAG1B,YADAllD,KAAK+xD,kBAIT,IAAIjG,EAAQzmC,EAAO20B,MAAM/jC,QAAOqP,GAAKA,EAAEnP,KAAKlZ,KAAK4rB,SAAS,cAC1D,IAAQhmB,EAAE,EAAGA,EAAEipD,EAAM5rD,OAAQ2C,IAC7B,CACI,IAAIo3C,EAAO6R,EAAMjpD,GACbsjD,EAAUlM,EAAKH,iBAAiB95C,MAEpC,GAAGmmD,EAAQ6U,gBAAgB9V,GAGvB,YADAllD,KAAK+xD,iBAGb,CACJ,CACJ,CAEAlc,EAAOtE,YAAYvxC,KAAKixC,SAAUkC,EACtC,CAEA4e,kBAEO/xD,KAAK4uD,UAAU1uD,OAAS,IAEvBF,KAAK4uD,UAAUv4C,SAAQ6jC,IAEnBA,EAAK30B,SAAS,IAElBvlB,KAAK4uD,UAAY,GAEzB,CAEAiF,WAAW9lB,GAEP,GAAGA,EAAK8H,OAAOvsB,aAAaitB,cAAgBv2C,KAA5C,CAGAA,KAAKgV,wBAEL,IAAIm8B,EAAQnxC,KACRsW,EAASy3B,EAAK8H,OAAO+M,mBAErBtD,EAAShpC,EAAOusC,eAAe1R,GAE/B+J,EAAQ5kC,EAAOyhC,mBAAmB/3C,MACtC,GAAY,MAATk7C,EACH,CACI,IAAI7I,EAAiBryC,KAAKqyC,eAC1BiN,EAAOjpC,SAAQiP,IAGX+sB,EAAe2iB,QAAQ1vC,EAAGgnB,GAAAA,IAAeipB,SAAS,IAEtDv1D,KAAKgyC,sBAAsByL,kBAC3Bz9C,KAAK0kB,eAAiBpO,EACtBtW,KAAKi7D,gBAAkB3b,CAC3B,CArBU,CAsBd,CAEAp4B,aAAa2uB,GAET71C,KAAKgV,wBAEL,IAAIm8B,EAAQnxC,KACRs/C,EAASzJ,EAAOgN,eAAe1R,GAE/B+J,EAAQrF,EAAOkC,mBAAmB/3C,MACtC,GAAY,MAATk7C,EACH,CACI,IAAI7I,EAAiBryC,KAAKqyC,eAC1BiN,EAAOjpC,SAAQiP,IAEX+sB,EAAe2iB,QAAQ1vC,EAAGgnB,GAAAA,IAAeipB,SAAS,IAEtDv1D,KAAK0kB,eAAiBmxB,EACtB71C,KAAKi7D,gBAAkB3b,CAC3B,CACJ,CAEAtqC,wBAEIhV,KAAKk7D,qBAEL,MAAM7I,EAAaryD,KAAK4wC,OAAO9wC,aAAawyD,WAAWltC,MAAKlP,GAAKA,GAAGlW,OACpEqyD,EAAW6I,oBACf,CAEAA,qBAKI,GAHGl7D,KAAKkyD,aACJlyD,KAAKkyD,WAAa,MAEI,MAAvBlyD,KAAK0kB,eACR,CACI1kB,KAAK0kB,eAAemzB,sBACpB73C,KAAK0kB,eAAiB,KAEtB,IAAI2tB,EAAiBryC,KAAKqyC,eACtBmL,EAAWx9C,KAAKgyC,sBACpBhyC,KAAKi7D,gBAAgB5kD,SAAQiP,IAEzBk4B,EAAS2d,mBAAmB71C,GAC5B+sB,EAAesjB,WAAWrwC,EAAE,GAEpC,CACJ,CAEAi5B,iBAAiBgT,GACb,MAAMjgB,EAAStxC,KAAKixC,SAASue,gBAAgB,UACvCre,EAAQnxC,KAAKixC,SACbwB,EAAStB,EAAMgpB,cAAc,UAEnC7oB,EAAO8pB,mBAAqB,IAASp7D,KAAK0uD,SAGtC6C,EAAQ,EACLvxD,KAAK0uD,SAAW,IAEf1uD,KAAK0uD,UAAY,GAGlB1uD,KAAK0uD,SAAW,KAEf1uD,KAAK0uD,UAAY,GAIzB1uD,KAAK8vD,aAAaxe,GACfmB,IAEIzyC,KAAK0uD,SAAS,GAEbjc,EAAOE,SAAWxB,EAAMyB,kBAAkB,cAEtC5yC,KAAK0uD,SAAS,GAElBjc,EAAOE,SAAWxB,EAAMyB,kBAAkB,gBAI1CH,EAAOE,SAAWxB,EAAMyB,kBAAkB,iBAGlD5yC,KAAK4lB,cACT,CAEA2uC,mBAAmBphB,GAEfnzC,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMoqB,EAAar7D,KAAKixC,SAASqqB,UAAUt7D,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAU7lC,KAAI9W,GAAGA,EAAE+7C,aACpGjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAE1C,MAAMsqB,EAAWF,EAAYplD,QAAOC,GAAGA,EAAE2/B,SACZ5/B,QAAOC,GAAGA,EAAE2/B,QAAQvsB,eACpBrT,QAAOC,GAAGA,EAAE2/B,OAAOvsB,aAAaokC,gBAAkB1tD,KAAKoW,QACvD4W,KAAI9W,GAAGA,EAAE2/B,SAChC2lB,EAAYD,EAAStlD,QAAOC,GAAGA,EAAEC,OAAM6W,KAAI9W,GAAGA,EAAEC,KAAKwO,WAErDwwC,EAAaoG,EAASn2C,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WACrC82C,EAAWtG,GAAY3S,gBAAgBp9B,MAAKlP,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WAEvE,GAAIjxC,KAAKmnB,aAAasjC,WA8DtB,CACI,MAAMiR,EAAaH,EAAStlD,QAAOC,GAAGA,EAAEoT,eAAiBtpB,KAAKmnB,aAAaw0C,eAE3E,GAAGD,EAAWx7D,OAAS,EAEnB,OAGJF,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAM2qB,EAASzoB,EAAI3pB,QAEnB,GAAG2rC,GAAcsG,EACjB,CACI,MAAMvR,EAAWiL,EAAWpL,iBAAiB/pD,KAAKixC,UAClDjxC,KAAK4uD,UAAUnpC,KAAKykC,GACpBiL,EAAW5K,kBAAiB,EAAKvqD,KAAKixC,UAEtC,MAAM4qB,EAAcJ,EAASnsB,iBACvBwsB,EAAgBxvB,GAAAA,IAAgByD,qBAAqBzD,GAAAA,IAAgBljB,OAAQyyC,GAE7EtmB,EAAMtC,GAAUoB,kBAAkBonB,GAClCvmB,EAAM5tB,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,IACxBN,EAAM3tB,KAAKilB,IAAIjlB,KAAK2tB,IAAIM,IAEH,eAAxB4f,EAAWrP,UAEV8V,EAAO1lD,EAAI4lD,EAAc5lD,EAAIg/B,EAAM/B,EAAIj9B,EAAI++B,EAC3C2mB,EAAOn0C,EAAIq0C,EAAcr0C,EAAIwtB,EAAM9B,EAAI1rB,EAAIytB,IAI3C0mB,EAAO1lD,EAAI4lD,EAAc5lD,EAAI++B,EAAM9B,EAAIj9B,EAAIg/B,EAC3C0mB,EAAOn0C,EAAIq0C,EAAcr0C,EAAIytB,EAAM/B,EAAI1rB,EAAIwtB,EAEnD,MAGIj1C,KAAKixC,SAASmkB,cAAc,aAAa/+C,SAAQ20C,IAC7CA,EAAEzlC,SAAS,IAInB,MAAMw2C,EAAO/7D,KAAKmnB,aAAasjC,WACzBuR,EAAW,IAAI7yC,GAAAA,EAAQyyC,EAAO1lD,EAAE6lD,EAAK7uB,EAAE6uB,EAAKt0C,GAC5Cw0C,EAAW,IAAI9yC,GAAAA,EAAQ4yC,EAAK7lD,EAAE6lD,EAAK7uB,EAAE0uB,EAAOn0C,GAE5Cy0C,EAAQ/yC,GAAAA,EAAQ4/B,SAASgT,EAAKC,GAC9BG,EAAQhzC,GAAAA,EAAQ4/B,SAASgT,EAAKE,GAEjCC,EAAMC,EAELn8D,KAAKmnB,aAAai1C,eAAeJ,EAASE,EAAM,KAIhDl8D,KAAKmnB,aAAai1C,eAAeH,EAASE,EAAM,IAExD,KAtHA,CAKI,GAJAn8D,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1CkC,EAAIjG,GAAK,IACTltC,KAAKmnB,aAAaoqB,YAAYvxC,KAAKixC,SAASkC,KAEzCqoB,EAAUt7D,OAAS,GAYlB,YADAF,KAAKmnB,aAAak1C,WAAU,GAVhC,CACI,MAAMC,EAAUf,EAASn2C,MAAKlP,GAAGA,EAAEC,KAAKlZ,KAAK4rB,SAAS,oBACtD,GAAGyzC,EAGC,YADAt8D,KAAKmnB,aAAak1C,WAAU,EAGpC,CAQA,GAFAr8D,KAAKmnB,aAAak1C,WAAU,GAEzBlH,GAAcsG,EACjB,CACI,MAAMvR,EAAWiL,EAAWpL,iBAAiB/pD,KAAKixC,UAClDjxC,KAAK4uD,UAAUnpC,KAAKykC,GACpBiL,EAAW5K,kBAAiB,EAAKvqD,KAAKixC,UAEtC,MAAM4qB,EAAcJ,EAASnsB,iBACvBwsB,EAAgBxvB,GAAAA,IAAgByD,qBAAqBzD,GAAAA,IAAgBljB,OAAQyyC,GAEnF,GAA2B,eAAxB1G,EAAWrP,SACd,CACI,MAAMj/C,EAAI7G,KAAKmnB,aAAao1C,mBAAmBv8D,KAAKixC,UACpDpqC,EAAEgpC,SAAS3C,EAAIioB,EAAW7rC,aAAa/S,aAAas5B,SAAS3C,EAC7D,MAAMqI,EAAMtC,GAAUoB,kBAAkBonB,GAClCvmB,EAAM5tB,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,IACxBN,EAAM3tB,KAAKilB,IAAIjlB,KAAK2tB,IAAIM,IAE9B1uC,EAAE8iB,SAASzT,EAAI4lD,EAAc5lD,EAAIg/B,EAAMruC,EAAE8iB,SAASzT,EAAI++B,EACtDpuC,EAAE8iB,SAASlC,EAAIq0C,EAAcr0C,EAAIwtB,EAAMpuC,EAAE8iB,SAASlC,EAAIytB,CAC1D,KAEA,CACI,MAAMruC,EAAI7G,KAAKmnB,aAAao1C,mBAAmBv8D,KAAKixC,UACpDpqC,EAAEgpC,SAAS3C,EAAIioB,EAAW7rC,aAAa/S,aAAas5B,SAAS3C,EAC7D,MAAMqI,EAAMtC,GAAUoB,kBAAkBonB,GAClCvmB,EAAM5tB,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,IACxBN,EAAM3tB,KAAKilB,IAAIjlB,KAAK2tB,IAAIM,IAE9B1uC,EAAE8iB,SAASzT,EAAI4lD,EAAc5lD,EAAI++B,EAAMpuC,EAAE8iB,SAASzT,EAAIg/B,EACtDruC,EAAE8iB,SAASlC,EAAIq0C,EAAcr0C,EAAIytB,EAAMruC,EAAE8iB,SAASlC,EAAIwtB,CAC1D,CACJ,MAGIj1C,KAAKixC,SAASmkB,cAAc,aAAa/+C,SAAQ20C,IAC7CA,EAAEzlC,SAAS,GAGvB,CA4DJ,CAEAkuC,mBAEI,IAAIzzD,KAAKmnB,aAAavG,OAElB,OAGJ5gB,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMoqB,EAAar7D,KAAKixC,SAASqqB,UAAUt7D,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAU7lC,KAAI9W,GAAGA,EAAE+7C,aACpGjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAE1C,MAAMsqB,EAAWF,EAAYplD,QAAOC,GAAGA,EAAE2/B,SACZ5/B,QAAOC,GAAGA,EAAE2/B,OAAOvsB,eACnBrT,QAAOC,GAAGA,EAAE2/B,OAAOvsB,aAAaokC,gBAAkB1tD,KAAKoW,QACvD4W,KAAI9W,GAAGA,EAAE2/B,SAEtC,KAAG0lB,EAASr7D,OAAS,GAKrB,GAAIF,KAAKmnB,aAAasjC,WAQtB,CACI,MAAMsD,EAAM/tD,KAAKmnB,aAAaA,eAG3BnnB,KAAK4uD,UAAU1uD,OAAS,IAKvBF,KAAKmnB,aAAasjC,WAAa,MAEnCzqD,KAAK4wC,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA6BmP,EAAIvI,GAAWC,aAAasI,EAAIzkC,eAC1G,KAnBA,CACI,MAAMqyC,EAAeJ,EAAS,GAAGjyC,aAC3BkzC,EAAUx8D,KAAKmnB,aAAao1C,mBAAmBv8D,KAAKixC,UAC1DjxC,KAAKmnB,aAAasjC,WAAa+R,EAAQ7yC,SAASH,QAChDxpB,KAAKmnB,aAAaw0C,aAAeA,CACrC,CAeJ,CAEAnH,sBAAsBrhB,GAElB,IAAIspB,EAAa,IAEjBz8D,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMoqB,EAAar7D,KAAKixC,SAASqqB,UAAUt7D,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAU7lC,KAAI9W,GAAGA,EAAE+7C,aACpGjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAE1C,MAAMsqB,EAAWF,EAAYplD,QAAOC,GAAGA,EAAE2/B,SACZ5/B,QAAOC,GAAGA,EAAE2/B,QAAQvsB,eACpBrT,QAAOC,GAAGA,EAAE2/B,OAAOvsB,aAAaokC,gBAAkB1tD,KAAKoW,QACvD4W,KAAI9W,GAAGA,EAAE2/B,SAEhCsf,EAAaoG,EAASn2C,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WACrC82C,EAAWtG,GAAY3S,gBAAgBp9B,MAAKlP,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WAKvE,GAHAjxC,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1CkC,EAAIjG,GAAK,KAELioB,EAMA,OAJAn1D,KAAKmnB,aAAak1C,WAAU,QAC5Br8D,KAAKixC,SAASmkB,cAAc,aAAa/+C,SAAQ20C,IAC7CA,EAAEzlC,SAAS,IAId,GAAGvlB,KAAKmnB,aAAasjC,YAEnBzqD,KAAKmnB,aAAau1C,YAAcjB,EAM/B,OAJAz7D,KAAKmnB,aAAak1C,WAAU,QAC5Br8D,KAAKixC,SAASmkB,cAAc,aAAa/+C,SAAQ20C,IAC7CA,EAAEzlC,SAAS,IAKvBvlB,KAAKmnB,aAAak1C,WAAU,GAE5B,MAAMnS,EAAWiL,EAAWpL,iBAAiB/pD,KAAKixC,UAClDjxC,KAAK4uD,UAAUnpC,KAAKykC,GACpBiL,EAAW5K,kBAAiB,EAAKvqD,KAAKixC,UAOtC,IAJA,IAAI0rB,EAAkB38D,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOqP,IAAMA,EAAE88B,SAAW98B,EAAEixB,cAAgBv2C,OAAMioD,SAAQ3iC,GAAKA,EAAEikC,WACjIqT,EAAU,KACVC,EAAW,KACXC,EAAgB3H,EAAWjP,mBACvBrjD,EAAE,EAAGA,EAAE85D,EAAgBz8D,OAAQ2C,IACvC,CACI,IAAIk6D,EAAUJ,EAAgB95D,GAC1Bg3C,EAAMkjB,EAAQjjB,iBAAiB95C,MACnC,GAAqB,eAAlB88D,GAEC,GAAGjjB,EAAInE,WAAWjuB,GAAKoyB,EAAInE,WAAWx/B,EAClC,cAIJ,GAAG2jC,EAAInE,WAAWx/B,GAAK2jC,EAAInE,WAAWjuB,EAClC,SAGR,IAAIu1C,EAAa,CAACnjB,EAAI+G,QAAS/G,EAAIgH,SACnCmc,EAAW3mD,SAAQiP,IAEf,IAAI23C,EAEAA,EADiB,eAAlBH,EACQx1C,KAAKilB,IAAIjnB,EAAEpP,EAAIi9B,EAAIj9B,GAEnBoR,KAAKilB,IAAIjnB,EAAEmC,EAAI0rB,EAAI1rB,GAE3Bw1C,GAAQR,IAEO,MAAXG,GAAmBK,EAAOJ,KAEzBD,EAAUt3C,EACVu3C,EAAWI,EAEnB,GAER,CAEA,IAAIC,EAAc/H,EAAW7rC,aAAa0wB,MAAM/jC,QAAOqP,GAAKA,EAAEwgC,UAAYqP,EAAWrP,WAEjFpL,GADAsiB,EAAa,GACF7H,EAAWhb,oBA6D1B,GA5DA+iB,EAAY7mD,SAAQiP,IAEhB,IAAIqjC,EAAarjC,EAAE60B,mBACfgjB,EAAYziB,EAASlM,MACrB4uB,EAAU1iB,EAASjM,IAEnBjoB,EAASulB,GAAauO,uBAAuB6iB,EAAWC,EAASzU,EAAWna,OAC5EnN,GAAY,EAEhB,GAAG0K,GAAasxB,wBAAwBF,EAAWC,EAAS52C,GACxD6a,GAAY,MAEhB,CACI,IAAI47B,EAAO31C,KAAKygB,IAAIuE,GAAAA,IAAgByc,SAASoU,EAAW32C,GAAS8lB,GAAAA,IAAgByc,SAASqU,EAAS52C,IAChGy2C,GAAQ,KACP57B,GAAY,EACpB,CAEA,GAAGA,EACH,CACI,IAAIi8B,EAAS3U,EAAWna,MACrBlC,GAAAA,IAAgByc,SAASJ,EAAWla,IAAKjoB,GAAU8lB,GAAAA,IAAgByc,SAASJ,EAAWna,MAAOhoB,KAC7F82C,EAAS3U,EAAWla,KAExB,IAAIoL,EAAMv0B,EAAEw0B,iBAAiB95C,MACzB+nC,EAAMu1B,EAAO9zC,QACb8c,EAAMg3B,EAAO9zC,QACI,eAAlBszC,GAEC/0B,EAAI7xB,EAAI2jC,EAAI2G,aAAatqC,EACzBowB,EAAIpwB,EAAI2jC,EAAIyG,aAAapqC,IAIzB6xB,EAAItgB,EAAIoyB,EAAI2G,aAAa/4B,EACzB6e,EAAI7e,EAAIoyB,EAAIyG,aAAa74B,GAG7Bu1C,EAAWv3C,KAAKsiB,GAChBi1B,EAAWv3C,KAAK6gB,EACpB,KAEJ02B,EAAW3mD,SAAQiP,IAEf,IAAI23C,EAEAA,EADiB,eAAlBH,EACQx1C,KAAKilB,IAAIjnB,EAAEpP,EAAIi9B,EAAIj9B,GAEnBoR,KAAKilB,IAAIjnB,EAAEmC,EAAI0rB,EAAI1rB,GAE3Bw1C,GAAQR,IAEO,MAAXG,GAAmBK,EAAOJ,KAEzBD,EAAUt3C,EACVu3C,EAAWI,EAEnB,IAGU,MAAXL,EACH,CACI,IAAI1iB,EAAO,GACU,eAAlB4iB,EACC3pB,EAAIj9B,EAAI0mD,EAAQ1mD,EAEhBi9B,EAAI1rB,EAAIm1C,EAAQn1C,EAEpB,IAAIwB,EAAMqjB,GAAAA,IAAgBiE,UAAUqsB,EAAQ9vB,SAASqG,IACjDoqB,EAAWpqB,EAAIrG,SAAS7jB,EAAIqsB,MAAMt1C,KAAK0uD,SAAW,IAClDkN,EAASgB,EAAQhzC,IAAIX,EAAIqsB,MAAMt1C,KAAK0uD,SAAW,IACnD6O,EAASrwB,EAAI,EACb0uB,EAAO1uB,EAAI,EACXgN,EAAO,CAACqjB,EAAU3B,GAElB,IAAI4B,EAAelxB,GAAAA,IAAgByc,SAASwU,EAAU3B,GAElD6B,EAAWnxB,GAAAA,IAAoB6d,kBAAkB,KAAM,CAACld,OAAQiN,EAAM8P,OAAuB,GAAfwT,EAAmBpT,SAAU,EAAGC,QAAS,GAAIrqD,KAAKixC,UACpIwsB,EAASllB,MAAQjM,GAAAA,IAAege,QAEhCtqD,KAAK4uD,UAAUnpC,KAAKg4C,EACxB,CAEAz9D,KAAKmnB,aAAaoqB,YAAYvxC,KAAKixC,SAASkC,GAE5C,MAAM0oB,EAAcJ,EAASnsB,iBACvBwsB,EAAgBxvB,GAAAA,IAAgByD,qBAAqBzD,GAAAA,IAAgBljB,OAAQyyC,GAEnF,GAA2B,eAAxB1G,EAAWrP,SACd,CACI,MAAMj/C,EAAI7G,KAAKmnB,aAAao1C,mBAAmBv8D,KAAKixC,UACpDpqC,EAAEgpC,SAAS3C,EAAIioB,EAAW7rC,aAAa/S,aAAas5B,SAAS3C,EAC7D,MAAMqI,EAAMtC,GAAUoB,kBAAkBonB,GAClCvmB,EAAM5tB,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,IACxBN,EAAM3tB,KAAKilB,IAAIjlB,KAAK2tB,IAAIM,IAE9B1uC,EAAE8iB,SAASzT,EAAI4lD,EAAc5lD,EAAIg/B,EAAMruC,EAAE8iB,SAASzT,EAAI++B,EACtDpuC,EAAE8iB,SAASlC,EAAIq0C,EAAcr0C,EAAIwtB,EAAMpuC,EAAE8iB,SAASlC,EAAIytB,CAC1D,KAEA,CACI,MAAMruC,EAAI7G,KAAKmnB,aAAao1C,mBAAmBv8D,KAAKixC,UACpDpqC,EAAEgpC,SAAS3C,EAAIioB,EAAW7rC,aAAa/S,aAAas5B,SAAS3C,EAC7D,MAAMqI,EAAMtC,GAAUoB,kBAAkBonB,GAClCvmB,EAAM5tB,KAAKilB,IAAIjlB,KAAK4tB,IAAIK,IACxBN,EAAM3tB,KAAKilB,IAAIjlB,KAAK2tB,IAAIM,IAE9B1uC,EAAE8iB,SAASzT,EAAI4lD,EAAc5lD,EAAI++B,EAAMpuC,EAAE8iB,SAASzT,EAAIg/B,EACtDruC,EAAE8iB,SAASlC,EAAIq0C,EAAcr0C,EAAIytB,EAAMruC,EAAE8iB,SAASlC,EAAIwtB,CAC1D,CAEA,GAAGj1C,KAAKmnB,aAAasjC,WACrB,CACI,MAAMsR,EAAO/7D,KAAKmnB,aAAasjC,WACzBuR,EAAW,IAAI7yC,GAAAA,EAAQgqB,EAAIj9B,EAAE6lD,EAAK7uB,EAAE6uB,EAAKt0C,GACzCw0C,EAAW,IAAI9yC,GAAAA,EAAQ4yC,EAAK7lD,EAAE6lD,EAAK7uB,EAAEiG,EAAI1rB,GAEzCy0C,EAAQ/yC,GAAAA,EAAQ4/B,SAASgT,EAAKC,GAC9BG,EAAQhzC,GAAAA,EAAQ4/B,SAASgT,EAAKE,GAEjCC,EAAMC,EAELn8D,KAAKmnB,aAAai1C,eAAeJ,EAASE,EAAM,KAIhDl8D,KAAKmnB,aAAai1C,eAAeH,EAASE,EAAM,IAExD,CACJ,CAEAzI,sBAEI,IAAI1zD,KAAKmnB,aAAavG,OAElB,OAGJ5gB,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMoqB,EAAar7D,KAAKixC,SAASqqB,UAAUt7D,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAU7lC,KAAI9W,GAAGA,EAAE+7C,aACpGjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAE1C,MAAMysB,EAAWrC,EAAYplD,QAAOC,GAAGA,EAAEC,OAAMF,QAAOC,GAAGA,GAAG2/B,QAAQvsB,eAE9DiyC,EAAWF,EAAYplD,QAAOC,GAAGA,EAAE2/B,SACZ5/B,QAAOC,GAAGA,EAAE2/B,QAAQvsB,eACpBrT,QAAOC,GAAGA,EAAE2/B,OAAOvsB,aAAaokC,gBAAkB1tD,KAAKoW,QACvD4W,KAAI9W,GAAGA,EAAE2/B,SAEhCsf,EAAaoG,EAASn2C,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WACrC82C,EAAWtG,GAAY3S,gBAAgBp9B,MAAKlP,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WAEvE,KAAGysB,EAASx9D,OAAS,GAKrB,GAAIF,KAAKmnB,aAAasjC,WAUtB,CACI,GAAGzqD,KAAKmnB,aAAajnB,OAAS,IAC1B,OACJ,MAAM6tD,EAAM/tD,KAAKmnB,aAAaA,eAC9BnnB,KAAK4wC,OAAO9wC,aAAa6oB,eACzB3oB,KAAK4wC,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA6BmP,EAAIvI,GAAWC,aAAasI,EAAIzkC,eAC1G,KAfA,CACI,MAAMqyC,EAAexG,EAAW7rC,aAC1BkzC,EAAUx8D,KAAKmnB,aAAao1C,mBAAmBv8D,KAAKixC,UAC1DurB,EAAQ/jD,WAAY,EACpBzY,KAAKmnB,aAAasjC,WAAa+R,EAAQ7yC,SAASH,QAChDxpB,KAAKmnB,aAAaw0C,aAAeA,EACjC37D,KAAKmnB,aAAau1C,WAAajB,CACnC,CASJ,CAEAxH,qBAAqB9gB,GAEjB,MAAMhsB,EAAennB,KAAKmnB,aAC1B,GAAGA,EAAai7B,QAChB,CACI,IAAIgS,EAAkBjhB,EAAI3pB,QAC1BxpB,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,IAAIojB,EAAkBr0D,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOqP,IAAMA,EAAE88B,UACnFpiD,KAAKs0D,iBAAiBF,EAAiBp0D,KAAKmnB,aAAcktC,GAE1Dr0D,KAAKo0D,gBAAkBA,EACvB,MAAMuJ,EAAc39D,KAAKixC,SAAS2B,kBAAkB,oBAC9CgrB,EAAY59D,KAAKixC,SAAS2B,kBAAkB,kBAC5CirB,EAAO79D,KAAKmnB,aAAa22C,WAAW14C,MAAKlP,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WACpE4sB,EAAKplD,WAAY,EACjB,MAAM3C,EAAU+nD,EAAKnb,OAAO0S,cAAcyI,EAAK5gE,MAAMgZ,QAAOC,GAAIA,GAAK2nD,IAErE/nD,EAAQgmC,MAAK4U,GACNA,EAAEqN,aAAarQ,iBAAmB1tD,KAAKoW,QAIvCynD,EAAK9I,eAAerE,IAEnBmN,EAAKlrB,SAAWirB,GACT,QAIPC,EAAKlrB,SAAWgrB,KAG5B,CACJ,CAEApL,qBAEI,MAAMF,EAAaryD,KAAK4wC,OAAO9wC,aAAawyD,WAAWltC,MAAKlP,GAAKA,GAAGlW,OAC9D69D,EAAO79D,KAAKmnB,aAAa22C,WAAW14C,MAAKlP,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WACpE,GAA0B,mBAAvB4sB,EAAKlrB,SAAS11C,KAGb,YADA+C,KAAK4wC,OAAO9wC,aAAa6oB,eAG7B,IAAIwqB,EAAM,IAAIhqB,GAAAA,EAAQnpB,KAAKo0D,gBAAgBl+C,EAAE,IAAIlW,KAAKo0D,gBAAgB3sC,GAClEqrC,EAAW,IAAI3pC,GAAAA,EAAQnpB,KAAKo0D,gBAAgBl+C,EAAE,EAAElW,KAAKo0D,gBAAgB3sC,GAEzEznB,KAAKmnB,aAAaoqB,YAAY8gB,EAAWphB,SAAS6hB,GAClD9yD,KAAKmnB,aAAaoqB,YAAYvxC,KAAKixC,SAASkC,GAC5C,MAAM6qB,EAAYh+D,KAAKmnB,aAAa82C,cAAc74C,MAAKlP,GAAGA,EAAEwsC,SAAW2P,EAAWphB,WAClF+sB,EAAUr0C,SAASujB,EAAI,EAEvBltC,KAAKo0D,gBAAkB,KACvBp0D,KAAKmnB,aAAahR,KAAKC,MAAQpW,KAAKoW,MACpCpW,KAAKmnB,aAAai7B,SAAU,EAC5BpiD,KAAKmnB,aAAaovB,aAAev2C,KAEjCA,KAAKmnB,aAAa+2C,cAAa,GAC/Bl+D,KAAKmnB,aAAay+B,SAAU,EAC5ByM,EAAWlrC,aAAennB,KAAKmnB,aAC/BkrC,EAAWlrC,aAAai7B,SAAU,EAClCiQ,EAAWlrC,aAAaumC,eAAiB2E,EAAWj8C,MACpDi8C,EAAWlrC,aAAaqsC,iBAAiBnB,EAAWj8C,OAEpDpW,KAAKmnB,aAAa22C,WAAWznD,SAAQwnD,GAAMA,EAAKplD,WAAY,IAC5DzY,KAAKmnB,aAAag3C,cAAa,GAC/Bn+D,KAAKo/C,mBAELiT,EAAWlrC,aAAay+B,SAAU,EAElCyM,EAAWlrC,aAAe,KAE1BnnB,KAAK4wC,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA6B5+C,KAAKmnB,aAAaq+B,GAAWC,aAAazlD,KAAKmnB,eACzH,CAEA+sC,qBAAqB/gB,GAEjB,MAAMkf,EAAaryD,KAAK4wC,OAAO9wC,aAAawyD,WAAWltC,MAAKlP,GAAKA,GAAGlW,OACpEA,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1CkC,EAAIjG,GAAK,IACTltC,KAAKmnB,aAAaoqB,YAAYvxC,KAAKixC,SAASkC,GAC5CnzC,KAAKmnB,aAAaoqB,YAAY8gB,EAAWphB,SAASkC,GAElD,MAAMwqB,EAAc39D,KAAKixC,SAAS2B,kBAAkB,oBAC9CgrB,EAAY59D,KAAKixC,SAAS2B,kBAAkB,kBAC5CwrB,EAASp+D,KAAKmnB,aAAa86B,aAAa78B,MAAKlP,GAAqB,OAAlBA,EAAEC,KAAKwO,WACvD05C,EAASr+D,KAAKmnB,aAAa+6B,aAAa98B,MAAKlP,GAAqB,OAAlBA,EAAEC,KAAKwO,WAE7D3kB,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMoqB,EAAar7D,KAAKixC,SAASqqB,UAAUt7D,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAU7lC,KAAI9W,GAAGA,EAAE+7C,aACpGjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAE1C,MAAMsqB,EAAWF,EAAYplD,QAAOC,GAAGA,EAAE2/B,SACxB5/B,QAAOC,GAAGA,EAAE2/B,QAAQvsB,eACpBrT,QAAOC,GAAGA,EAAE2/B,OAAOvsB,aAAaokC,gBAAkB1tD,KAAKoW,QACvD4W,KAAI9W,GAAGA,EAAE2/B,SAEpBsf,EAAaoG,EAASn2C,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WACrC82C,EAAWtG,GAAY3S,gBAAgBp9B,MAAKlP,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WAEvE,GAAGwqB,EACH,CACI,IAAIA,GAAU5lB,QAAQvsB,cAAcokC,eAEhC,OAEJ,GAAG+N,EAAS5lB,OAAOvsB,aAAaokC,iBAAmB1tD,KAAKoW,MAEpD,OAEJ,MAAM8zC,EAAWiL,EAAWpL,iBAAiB/pD,KAAKixC,UAClDjxC,KAAK4uD,UAAUnpC,KAAKykC,GAEpBmU,EAAO1rB,SAAWgrB,EAClBS,EAAOzrB,SAAWgrB,EAElB,MAAM7X,EAAWqP,EAAWjP,mBACtBoY,EAAU7C,EAAS/P,sBAEzB,GAAqB,aAAlB5F,EAAS9oD,KAER,IAAI,IAAI6J,KAAK7G,KAAKmnB,aAAaq7B,gBAE3B37C,EAAEgpC,SAAS3C,EAAI5lB,KAAK23B,GAAI,EACxBp4C,EAAE8iB,SAASzT,EAAIooD,EAAQpoD,OAK3B,IAAI,IAAIrP,KAAK7G,KAAKmnB,aAAaq7B,gBAE3B37C,EAAEgpC,SAAS3C,EAAI,EACfrmC,EAAE8iB,SAASlC,EAAI62C,EAAQ72C,CAGnC,MAGI42C,EAAO1rB,SAAWirB,EAClBQ,EAAOzrB,SAAWirB,CAE1B,CAEApL,qBAEI,MAAMH,EAAaryD,KAAK4wC,OAAO9wC,aAAawyD,WAAWltC,MAAKlP,GAAKA,GAAGlW,OAC9Du+D,EAASv+D,KAAKmnB,aACdq3C,EAAYD,EAAO/b,gBAAgBvsC,QAAOC,GAAsB,UAAnBA,EAAEC,KAAKwO,WAC1D,GAAkC,qBAA/B65C,EAAU,GAAG7rB,SAAS11C,KAyDrB,OAAO,EAxDX,CACIuhE,EAAUnoD,SAAQH,GAAGA,EAAEy8B,SAAWz8B,EAAEwsC,OAAO9P,kBAAkB,iBAE7D5yC,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMoqB,EAAar7D,KAAKixC,SAASqqB,UAAUt7D,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAU7lC,KAAI9W,GAAGA,EAAE+7C,aACpGjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAE1C,MAAMsqB,EAAWF,EAAYplD,QAAOC,GAAGA,EAAE2/B,SACxB5/B,QAAOC,GAAGA,EAAE2/B,QAAQvsB,eACpBrT,QAAOC,GAAGA,EAAE2/B,OAAOvsB,aAAaokC,gBAAkB1tD,KAAKoW,QACvD4W,KAAI9W,GAAGA,EAAE2/B,SAEpBsf,EAAaoG,EAASn2C,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WACrCknC,EAAYsJ,EAAW7rC,aACvBm1C,EAAQ5S,EAAUoS,cACxBM,EAAOj1C,aAAeuiC,EACtB0S,EAAOlvB,OAAS8lB,EAEhB,IAAI,IAAItuD,KAAK03D,EAAO/b,gBACpB,CACI,MAAMkc,EAAS73D,EAAE6kD,sBACjB7kD,EAAEwoC,OAASovB,EAAMr5C,MAAKlP,GAAGA,EAAEwsC,SAAW77C,EAAE67C,SACxC77C,EAAE69C,oBAAoBga,GACtB73D,EAAEgpC,SAAS3C,GAAK+F,GAAUoB,kBAAkBxtC,GAC5CA,EAAE2P,YAAW,GAC6B,aAAvC2+C,EAAWjP,mBAAmBlpD,MAE7B6J,EAAE0iB,QAAQrT,EAAIuoD,EAAM,GAAGl1C,QAAQ9B,EAC/B5gB,EAAE0iB,QAAQ2jB,EAAIuxB,EAAM,GAAGl1C,QAAQrT,IAI/BrP,EAAE0iB,QAAQ2jB,EAAIuxB,EAAM,GAAGl1C,QAAQ9B,EAC/B5gB,EAAE0iB,QAAQrT,EAAIuoD,EAAM,GAAGl1C,QAAQrT,GAEZ,QAApBrP,EAAEsP,KAAKwO,WAEN9d,EAAE8iB,SAASujB,EAAI,IACfrmC,EAAE2P,YAAW,GACb3P,EAAE4R,WAAY,EAEtB,CACA8lD,EAAOpoD,KAAKq1C,WAAa2J,EAAWh/C,KAAKlZ,KACzCshE,EAAOI,6BACPJ,EAAOhL,kBACPgL,EAAOpc,WAAW9rC,SAAQH,GAAGA,EAAEM,YAAW,KAC1Cq1C,EAAUvC,QAAQ7jC,KAAK84C,GACvB1S,EAAU1V,SAAS1wB,KAAK84C,GACxB1S,EAAU2H,iBAAiBnB,EAAWj8C,OACtCpW,KAAK4wC,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA6B5+C,KAAKmnB,aAAaq+B,GAAWC,aAAaoG,KAEhH7rD,KAAKmnB,aAAe,KACpBkrC,EAAWlrC,aAAe,IAC9B,CAMA,OAAO,CACX,CAEAgtC,mBAAmBhhB,GAEf,MAAMkf,EAAaryD,KAAK4wC,OAAO9wC,aAAawyD,WAAWltC,MAAKlP,GAAKA,GAAGlW,OACpEA,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1CkC,EAAIjG,GAAK,IACTltC,KAAKmnB,aAAaoqB,YAAYvxC,KAAKixC,SAASkC,GAC5CnzC,KAAKmnB,aAAaoqB,YAAY8gB,EAAWphB,SAASkC,GAElD,MAAMyrB,EAAY5+D,KAAKmnB,aAAahR,KAAKwO,SAAS3kB,KAAKmnB,aAAahR,KAAK4M,SAASzF,QAAQ,SAAS,IAC7FqgD,EAAc39D,KAAKixC,SAAS2B,kBAAkBgsB,IAAWp1C,QAC/Dm0C,EAAY1gE,KAAO,uBACnB0gE,EAAYkB,aAAgB,IAAIvyB,GAAAA,IAAe,IAAK,KAAM,KAC1D,MAAMsxB,EAAY59D,KAAKixC,SAAS2B,kBAAkBgsB,GAAUp1C,QAC5Do0C,EAAU3gE,KAAO,qBACjB2gE,EAAUiB,aAAgB,IAAIvyB,GAAAA,IAAe,KAAM,IAAK,KACxD,MAAM8xB,EAASp+D,KAAKmnB,aAAa86B,aAAa78B,MAAKlP,GAAqB,OAAlBA,EAAEC,KAAKwO,WACvD05C,EAASr+D,KAAKmnB,aAAa+6B,aAAa98B,MAAKlP,GAAqB,OAAlBA,EAAEC,KAAKwO,WAE7D3kB,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMoqB,EAAar7D,KAAKixC,SAASqqB,UAAUt7D,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAU7lC,KAAI9W,GAAGA,EAAE+7C,aACpGjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAE1C,MAAMsqB,EAAWF,EAAYplD,QAAOC,GAAGA,EAAE2/B,SACxB5/B,QAAOC,GAAGA,EAAE2/B,QAAQvsB,eACpBrT,QAAOC,GAAGA,EAAE2/B,OAAOvsB,aAAaokC,gBAAkB1tD,KAAKoW,QACvD4W,KAAI9W,GAAGA,EAAE2/B,SAEpBsf,EAAaoG,EAASn2C,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WACrC82C,EAAWtG,GAAY3S,gBAAgBp9B,MAAKlP,GAAGA,EAAEwsC,SAAW1iD,KAAKixC,WAEvE,GAAGwqB,EACH,CACI,IAAIA,GAAU5lB,QAAQvsB,cAAcokC,eAEhC,OAEJ,GAAG+N,EAAS5lB,OAAOvsB,aAAaokC,iBAAmB1tD,KAAKoW,MAEpD,OAEJ,MAAM8zC,EAAWiL,EAAWpL,iBAAiB/pD,KAAKixC,UAClDjxC,KAAK4uD,UAAUnpC,KAAKykC,GAEpBmU,EAAO1rB,SAAWgrB,EAClBS,EAAOzrB,SAAWgrB,EAClB,MAAM7X,EAAWqP,EAAWjP,mBACtBoY,EAAU7C,EAAS/P,sBACnBoT,EAAU3J,EAAWlP,mBAC3B,GAAoB,YAAjBH,EAAS9oD,KAER,IAAI,IAAI6J,KAAK7G,KAAKmnB,aAAaq7B,gBAC/B,CACI,MAAMuc,EAAQl4D,EAAEwsC,kBAAkBC,YAC5B0rB,EAAQD,EAAMrpB,WAAWjsB,SAAS,IAAIN,GAAAA,EAAQ,EAAE,EAAE,IAExDtiB,EAAEgpC,SAAS3C,EAAI5lB,KAAK23B,GAAI,EACxBp4C,EAAE8iB,SAASzT,EAAIooD,EAAQpoD,GAAK8oD,EAAM9xB,EAAE,EAAI4xB,EAAQ,GAAG9+D,KAAKkvD,SACnC,IAAlBlvD,KAAKkvD,UAEJroD,EAAEgpC,SAAS3C,GAAK5lB,KAAK23B,GAE7B,MAIA,IAAI,IAAIp4C,KAAK7G,KAAKmnB,aAAaq7B,gBAC/B,CACI,MAAMuc,EAAQl4D,EAAEwsC,kBAAkBC,YAC5B0rB,EAAQD,EAAMrpB,WAAWjsB,SAAS,IAAIN,GAAAA,EAAQ,EAAE,EAAE,IAExDtiB,EAAEgpC,SAAS3C,EAAI,EACfrmC,EAAE8iB,SAASlC,EAAI62C,EAAQ72C,GAAKu3C,EAAM9xB,EAAE,EAAI4xB,EAAQ,GAAG9+D,KAAKkvD,SACnC,IAAlBlvD,KAAKkvD,UAEJroD,EAAEgpC,SAAS3C,GAAK5lB,KAAK23B,GAE7B,CAER,MAGIof,EAAO1rB,SAAWirB,EAClBQ,EAAOzrB,SAAWirB,CAE1B,CAEAnL,mBAEI,MAAMJ,EAAaryD,KAAK4wC,OAAO9wC,aAAawyD,WAAWltC,MAAKlP,GAAKA,GAAGlW,OAC9DozD,EAAUpzD,KAAKmnB,aACf83C,EAAa7L,EAAQ5Q,gBAAgBvsC,QAAOC,GAAsB,QAAnBA,EAAEC,KAAKwO,WAE5D,GAAmC,yBAAhCs6C,EAAW,GAAGtsB,SAAS11C,KAqEtB,OAAO,EApEX,CACI,MAAM2hE,EAAY5+D,KAAKmnB,aAAahR,KAAKwO,SAAS3kB,KAAKmnB,aAAahR,KAAK4M,SAASzF,QAAQ,SAAS,IACnG2hD,EAAW5oD,SAAQH,GAAGA,EAAEy8B,SAAWz8B,EAAEwsC,OAAO9P,kBAAkBgsB,KAE9D5+D,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAC1C,MAAMoqB,EAAar7D,KAAKixC,SAASqqB,UAAUt7D,KAAKixC,SAAS2hB,SAAU5yD,KAAKixC,SAAS4hB,UAAU7lC,KAAI9W,GAAGA,EAAE+7C,aACpGjyD,KAAKmnB,aAAa88B,UAAUjkD,KAAKixC,UAAS,GAE1C,MAAMsqB,EAAWF,EAAYplD,QAAOC,GAAGA,EAAE2/B,SACxB5/B,QAAOC,GAAGA,EAAE2/B,QAAQvsB,eACpBrT,QAAOC,GAAGA,EAAE2/B,OAAOvsB,aAAaokC,gBAAkB1tD,KAAKoW,QACvD4W,KAAI9W,GAAGA,EAAE2/B,SAEpBsf,EAAaoG,EAASn2C,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WACrCknC,EAAYsJ,EAAW7rC,aACvBm1C,EAAQ5S,EAAUoS,cAClBiB,EAAQ53C,KAAKilB,IAAInhB,OAAO9D,KAAK4tB,IAAI2W,EAAUt1C,aAAas5B,SAAS3C,GAAGxlB,QAAQ,KAClF0rC,EAAQ9pC,aAAeuiC,EACvBuH,EAAQ/jB,OAAS8lB,EAEjB,IAAI,IAAItuD,KAAKusD,EAAQ5Q,gBACrB,CACI,MAAMkc,EAAS73D,EAAE6kD,sBACjB7kD,EAAEwoC,OAASovB,EAAMr5C,MAAKlP,GAAGA,EAAEwsC,SAAW77C,EAAE67C,SACxC77C,EAAE69C,oBAAoBga,GACtB73D,EAAE8iB,SAASujB,EAAI,IACfrmC,EAAEgpC,SAAS3C,GAAK+F,GAAUoB,kBAAkBxtC,GAC5CA,EAAE2P,YAAW,GAE6B,aAAvC2+C,EAAWjP,mBAAmBlpD,MAE7B6J,EAAE0iB,QAAQrT,EAAIuoD,EAAM,GAAGl1C,QAAQ9B,EAC/B5gB,EAAE0iB,QAAQ2jB,EAAIuxB,EAAM,GAAGl1C,QAAQrT,EACnB,GAATgpD,IAECr4D,EAAE0iB,QAAQrT,GAAwB,EAApBuoD,EAAM,GAAGl1C,QAAQrT,EAC/BrP,EAAE0iB,QAAQ2jB,GAAwB,EAApBuxB,EAAM,GAAGl1C,QAAQ9B,KAKnC5gB,EAAE0iB,QAAQ2jB,EAAIuxB,EAAM,GAAGl1C,QAAQ9B,EAC/B5gB,EAAE0iB,QAAQrT,EAAIuoD,EAAM,GAAGl1C,QAAQrT,EACnB,GAATgpD,IAECr4D,EAAE0iB,QAAQ2jB,GAAwB,EAApBuxB,EAAM,GAAGl1C,QAAQrT,EAC/BrP,EAAE0iB,QAAQrT,GAAwB,EAApBuoD,EAAM,GAAGl1C,QAAQ9B,IAGhB,QAApB5gB,EAAEsP,KAAKwO,WAEN9d,EAAE8iB,SAASujB,EAAI,IAEvB,CACAkmB,EAAQj9C,KAAKq1C,WAAa2J,EAAWh/C,KAAKlZ,KAC1Cm2D,EAAQuL,6BACRvL,EAAQG,kBACRH,EAAQjR,WAAW9rC,SAAQH,GAAGA,EAAEM,YAAW,KAC3Cq1C,EAAUxC,MAAM5jC,KAAK2tC,GACrBvH,EAAU1V,SAAS1wB,KAAK2tC,GACxBvH,EAAU2H,iBAAiBnB,EAAWj8C,OACtCpW,KAAK4wC,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA6B5+C,KAAKmnB,aAAaq+B,GAAWC,aAAaoG,KAEhH7rD,KAAKmnB,aAAe,KACpBkrC,EAAWlrC,aAAe,IAC9B,CAKA,OAAO,CACX,E,gBCzjEW,MAAMg4C,WAAgB1uB,GACjCC,YAAYC,EAAOC,GAEfoR,MAAMrR,EAAOC,GACb5wC,KAAK8iD,MAAO,EACZ9iD,KAAK05C,gBAAkB0V,GAAAA,MAAuBhW,mBAAmB,MACjEp5C,KAAKgwD,YACLhwD,KAAKo/D,WACLp/D,KAAK4lB,eACL5lB,KAAKq/D,aACT,CAEAz5C,eAEQ5lB,KAAK6uD,YAEL7uD,KAAK6uD,UAAY,IAAIqB,GAAAA,IAEzB,IAAIroD,EAAS,EACTC,EAAO,EAEX9H,KAAK4wC,OAAO9wC,aAAaiW,aAAaC,QAAQK,SAAQxP,IAClD,MAAMspD,EAAQtpD,EAAEupD,SAAQ,GACxBvoD,GAAUujB,OAAO+kC,EAAMtoD,QACvBC,GAAQsjB,OAAO+kC,EAAMroD,KAAK,IAG9B9H,KAAK6uD,UAAUz9B,KAAQ,iBAAgBvpB,EAAO6f,QAAQ,QAAQ5f,EAAK4f,QAAQ,OAC3E1nB,KAAK6uD,UAAUtW,MAAQ,sBACvBv4C,KAAK6uD,UAAUjX,SAAW,GAC1B53C,KAAK6uD,UAAUyQ,wBAA0BnnB,GAAAA,GAAYonB,0BACrDv/D,KAAK6uD,UAAUz8C,IAAO,IAAGpS,KAAK6wC,cAAcwf,aAAa,EAAI,QAC7DrwD,KAAK6uD,UAAUh9C,KAAU7R,KAAK6wC,cAAcyf,YAAY,GAAjC,MACvBtwD,KAAK6uD,UAAUp2C,UAAYzY,KAAK4wC,OAAO9wC,aAAa8E,WACpD5E,KAAK05C,gBAAgBf,WAAW34C,KAAK6uD,UACzC,CAEAwQ,cAEIr/D,KAAKw/D,SAAW,IAAItP,GAAAA,GACpBlwD,KAAKw/D,SAASviE,KAAO,WACrB+C,KAAKw/D,SAASpuC,KAAO,2FACrBpxB,KAAKw/D,SAASptD,IAASpS,KAAK6wC,cAAcwf,aAAa,EAAI,GAAtC,MACrBrwD,KAAKw/D,SAAS3tD,KAAQ,IAAG7R,KAAK6wC,cAAcyf,YAAY,QACxDtwD,KAAKw/D,SAASjnB,MAAQ,qBACtBv4C,KAAKw/D,SAAS5nB,SAAW,KACzB53C,KAAKw/D,SAASF,wBAA0BnnB,GAAAA,GAAYsnB,2BACpDz/D,KAAK05C,gBAAgBf,WAAW34C,KAAKw/D,SACzC,CAEAJ,WAEI,MAAMvtB,EAAY,GACZ6tB,EAAS,IAAIpzB,GAAAA,IAAyB,SAAU,IAAInjB,GAAAA,EAAQ,EAAG,EAAG,GAAInpB,KAAKixC,UACjFyuB,EAAO7tB,UAAYA,EACnB6tB,EAAOC,UAAY,IAAIrzB,GAAAA,IAAgB,IAAM,GAAK,GAElD,MAAMszB,EAAS,IAAItzB,GAAAA,IAAyB,SAAU,IAAInjB,GAAAA,GAAS,EAAG,EAAG,GAAInpB,KAAKixC,UAClF2uB,EAAO/tB,UAAYA,EAAY,GAC/B+tB,EAAOD,UAAY,IAAIrzB,GAAAA,KAAiB,IAAM,IAAM,GAEpD,MAAMuzB,EAAS,IAAIvzB,GAAAA,IAAyB,SAAU,IAAInjB,GAAAA,EAAQ,GAAI,EAAG,GAAInpB,KAAKixC,UAClF4uB,EAAOhuB,UAAYA,EAAY,IAC/BguB,EAAOF,UAAY,IAAIrzB,GAAAA,IAAgB,EAAG,EAAG,EAOjD,CAEA0jB,YAEIhwD,KAAKixC,SAASqgB,oBAAoB1nC,KAAIsyB,IAAQl8C,KAAKu+C,iBAAiBrC,EAAI,GAAG5P,GAAAA,IAA0BolB,aACzG,CAEAnT,iBAAiBrC,GAEb,MAAM/K,EAAQnxC,KAAKixC,SACbK,EAAStxC,KAAKixC,SAASue,gBAAgB,UACvC/c,EAAStB,EAAMgpB,cAAc,UAC7BzL,GAAapd,EAAOwuB,OAASxuB,EAAO5C,OAAS4C,EAAOyuB,KAAOzuB,EAAO5C,MAAO,IAG/E4C,EAAO8pB,mBAAqB,IAAU1M,EAIlCjc,EAAOE,SAFR+b,EAAS,GAEUvd,EAAMyB,kBAAkB,gBAEtC8b,EAAS,GAEKvd,EAAMyB,kBAAkB,cAIxBzB,EAAMyB,kBAAkB,eAElD,ECvGW,MAAMotB,GACjBtvB,cAGA,CAEAuvB,oBAAoB9uB,GAEhB,MAAM+uB,EAAe,IAAI5zB,GAAAA,IAAyB,eAAe6E,GAC3DgvB,EAAmB,IAAI7zB,GAAAA,IAAgB,iCAAiC6E,GAC9EgvB,EAAiBC,OAAS,IAC1BD,EAAiBE,OAAS,IAC1BH,EAAa5c,eAAiB6c,EAC9BD,EAAarc,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACtD4zB,EAAanc,cAAgB,EAE7B,MAAMuc,EAAe,IAAIh0B,GAAAA,IAAyB,eAAe6E,GAC3DovB,EAAmB,IAAIj0B,GAAAA,IAAgB,iCAAiC6E,GAC9EovB,EAAiBH,OAAS,IAC1BG,EAAiBF,OAAS,IAC1BC,EAAahd,eAAiBid,EAC9BD,EAAazc,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACtDg0B,EAAavc,cAAgB,EAE7B,MAAMyc,EAAa,IAAIl0B,GAAAA,IAAyB,aAAa6E,GACvDsvB,EAAiB,IAAIn0B,GAAAA,IAAgB,+BAA+B6E,GAC1EsvB,EAAeL,OAAS,IACxBK,EAAeJ,OAAS,IACxBG,EAAWld,eAAiBmd,EAC5BD,EAAW3c,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACpDk0B,EAAWzc,cAAgB,EAE3B,MAAM2c,EAAmB,IAAIp0B,GAAAA,IAAyB,mBAAoB6E,GAC1EuvB,EAAiB7B,aAAgB,IAAIvyB,GAAAA,IAAe,EAAE,EAAE,GACxDo0B,EAAiBC,MAAQ,GACzBD,EAAiB7c,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GAC1Do0B,EAAiB3c,cAAgB,EACjC2c,EAAiBE,iBAAkB,EAEnC,MAAMC,EAAiB,IAAIv0B,GAAAA,IAAyB,iBAAkB6E,GACtE0vB,EAAehC,aAAgB,IAAIvyB,GAAAA,IAAe,EAAE,EAAE,GACtDu0B,EAAeF,MAAQ,GACvBE,EAAehd,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACxDu0B,EAAe9c,cAAgB,EAC/B8c,EAAeD,iBAAkB,EAEjC,MAAME,EAAkB,IAAIx0B,GAAAA,IAAyB,kBAAmB6E,GACxE2vB,EAAgBjC,aAAgB,IAAIvyB,GAAAA,IAAe,EAAE,EAAE,GACvDw0B,EAAgBH,MAAQ,GACxBG,EAAgBjd,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACzDw0B,EAAgB/c,cAAgB,EAChC+c,EAAgBF,iBAAkB,EAElC,MAAMG,EAAc,IAAIz0B,GAAAA,IAAyB,cAAc6E,GAC/D4vB,EAAYlC,aAAgB,IAAIvyB,GAAAA,IAAe,EAAG,EAAG,GACrDy0B,EAAYld,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACrDy0B,EAAYhd,cAAgB,EAC5Bgd,EAAYJ,MAAQ,EAEpB,MAAMK,EAAc,IAAIC,GAAAA,GAA2B,cAAc9vB,GAC3D+vB,EAAkB,IAAI50B,GAAAA,IAAgB,oDAAoD6E,GAGhG6vB,EAAYG,cAAgBD,EAC5BF,EAAYI,YAAcF,EAC1BF,EAAYK,SAAW,EACvBL,EAAYM,UAAY,EACxBN,EAAYnd,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACrD00B,EAAYO,sBAAwB,IACpCP,EAAYQ,oBAAoBxhE,KAAKyhE,cAActwB,GACvD,CAEAuwB,kBAAkBvwB,GAEd,MAAMwwB,EAAY,IAAIr1B,GAAAA,IAAyB,YAAY6E,GACrDywB,EAAgB,IAAIt1B,GAAAA,IAAgB,yCAAyC6E,GACnFwwB,EAAUre,eAAiBse,EAC3BD,EAAU9d,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACnDq1B,EAAU5d,cAAgB,EAC1B4d,EAAUf,iBAAkB,EAC5Be,EAAUre,eAAeue,UAAW,EAEpC,MAAMC,EAAU,mlBAeVC,EAAc,IAAIz1B,GAAAA,IAAyB,cAAc6E,GACzD6wB,EAAkB,IAAI11B,GAAAA,IAAgB,6BAA+BmkB,KAAKqR,GAAQ3wB,GACxF4wB,EAAYze,eAAiB0e,EAC7BD,EAAYle,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACrDy1B,EAAYhe,cAAgB,EAC5Bge,EAAYnB,iBAAkB,EAE9B,MAAMlW,EAAe,IAAIpe,GAAAA,IAAyB,eAAgB6E,GAClEuZ,EAAamU,aAAgB,IAAIvyB,GAAAA,IAAe,mBAAoB,kBAAmB,GACvFoe,EAAaiW,MAAQ,GACrBjW,EAAa7G,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACtDoe,EAAa3G,cAAgB,EAE7B,MAAMke,EAAkB,IAAI31B,GAAAA,IAAyB,kBAAmB6E,GACxE8wB,EAAgBpD,aAAgB,IAAIvyB,GAAAA,IAAe,EAAE,EAAE,GACvD21B,EAAgBtB,MAAQ,GACxBsB,EAAgBpe,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACzD21B,EAAgBle,cAAgB,EAEhC,MAAMme,EAAoB,IAAI51B,GAAAA,IAAyB,oBAAqB6E,GAC5E+wB,EAAkBrD,aAAgB,IAAIvyB,GAAAA,IAAe,EAAE,EAAE,GACzD41B,EAAkBvB,MAAQ,EAC1BuB,EAAkBre,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GAC3D41B,EAAkBne,cAAgB,EAElC,MAAMoe,EAAU,IAAIlB,GAAAA,GAA2B,UAAU9vB,GACzDgxB,EAAQC,YAAe,IAAI91B,GAAAA,IAAe,MAAQ,MAAQ,OAC1D61B,EAAQd,SAAW,EACnBc,EAAQb,UAAY,EACpBa,EAAQte,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACjD61B,EAAQZ,sBAAwB,IAChCY,EAAQX,oBAAoBxhE,KAAKyhE,cAActwB,IAC/CgxB,EAAQvB,iBAAkB,EAE1B,MAAMyB,EAAe,IAAIpB,GAAAA,GAA2B,eAAe9vB,GACnEkxB,EAAaD,YAAe,IAAI91B,GAAAA,IAAe,MAAQ,MAAQ,OAC/D+1B,EAAahB,SAAW,EACxBgB,EAAaf,UAAY,EACzBe,EAAa1B,MAAQ,GACrB0B,EAAaxe,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACtD+1B,EAAad,sBAAwB,IACrCc,EAAab,oBAAoBxhE,KAAKyhE,cAActwB,IACpDkxB,EAAazB,iBAAkB,EAE/B,MAAM0B,EAAc,IAAIrB,GAAAA,GAA2B,cAAc9vB,GACjEmxB,EAAYF,YAAe,IAAI91B,GAAAA,IAAe,MAAQ,MAAQ,OAC9Dg2B,EAAYjB,SAAW,EACvBiB,EAAYhB,UAAY,EACxBgB,EAAYze,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACrDg2B,EAAYf,sBAAwB,IACpCe,EAAYd,oBAAoBxhE,KAAKyhE,cAActwB,IACnDmxB,EAAY1B,iBAAkB,CAClC,CAEA2B,kBAAkBpxB,GAEd,MAAMgxB,EAAU,IAAIlB,GAAAA,GAA2B,UAAU9vB,GACzDgxB,EAAQd,SAAW,EACnBc,EAAQb,UAAY,EACpBa,EAAQte,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACjD61B,EAAQZ,sBAAwB,IAChCY,EAAQvB,iBAAkB,EAC1BuB,EAAQX,oBAAoBxhE,KAAKyhE,cAActwB,IAC/CgxB,EAAQK,kBAAmB,EAE3B,MAAMF,EAAc,IAAIrB,GAAAA,GAA2B,cAAc9vB,GACjEmxB,EAAYjB,SAAW,EACvBiB,EAAYhB,UAAY,EACxBgB,EAAYze,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACrDg2B,EAAYf,sBAAwB,IACpCe,EAAYd,oBAAoBxhE,KAAKyhE,cAActwB,IACnDmxB,EAAY1B,iBAAkB,EAC9B0B,EAAYG,aAAc,EAE1B,MAAMC,EAAW,IAAIzB,GAAAA,GAA2B,WAAW9vB,GAK3DuxB,EAASrB,SAAW,EACpBqB,EAASpB,UAAY,EACrBoB,EAASN,YAAe,IAAI91B,GAAAA,IAAe,KAAO,KAAO,KAC7D,CAEAm1B,cAActwB,GAEV,MAAMJ,EAASI,EAAMwxB,YACfC,EAAe,IACrB,IAAIC,EAAa,GACjB,IAAI,IAAIhgE,EAAI,EAAGA,EAAG+/D,EAAc//D,IAE5BggE,GAAc,0EAEyBhgE,yDACCA,4KAEyE,IAAnBkuC,EAAO+xB,SAAiC,UAAhB/xB,EAAO9zC,KAAmB,KAAO,4BAA4B4F,oOAUvL,MAAQ,iHAGEggE,oBAEd,EC/MW,MAAME,WAAiBz2B,GAAAA,IAElCoE,YAAYp6B,EAAO26B,EAAS6U,EAAShD,GAAO,GAExC,MAAMkgB,EAAU,IAAI12B,GAAAA,IAAgB,EAAG,EAAG,GAC1C,IAAI22B,EAAU,IAAI95C,GAAAA,IAAqB,eAAb28B,EAA4B,EAAI,EAAG,EAAgB,eAAbA,GAA6B,EAAI,GAC9FxvC,EAAO+4B,OAAOQ,SAAS3C,EAAI5lB,KAAK23B,IAAM,IAErCgkB,EAAU,IAAI95C,GAAAA,IAAqB,eAAb28B,EAA4B,EAAI,EAAG,EAAgB,eAAbA,EAA4B,GAAK,IAEjG9D,MAAM,KAAMghB,EAASC,EAAS,EAAG,EAAGhyB,GACpCjxC,KAAKsW,OAASA,EACdtW,KAAK8lD,SAAWA,EAChB9lD,KAAKixC,SAAWA,EAChBjxC,KAAKkjE,cAAe,EACpBljE,KAAK8iD,KAAOA,EACZ9iD,KAAKmjE,+BAELnjE,KAAKojE,kBAAoBpjE,KAAKqjE,gBAC9BrjE,KAAKi6D,mBAAqB,CAAChpB,EAASkpB,cAAc,YAClDn6D,KAAK6xC,UAAY,CAErB,CAEAsxB,+BACI,MAAM9d,EAAQ,IAAIrlD,KAAKsW,OAAOk+B,kBAC9B6Q,EAAMhvC,SAAQq+B,GAAGA,EAAErF,OAAS,OAC5B,MAAM4d,EAAKjtD,KAAKsW,OAAOgtD,8BACvBje,EAAMhvC,SAAQq+B,GAAGA,EAAErF,OAASrvC,KAAKsW,SACjC,MAAM8Q,EAAO6lC,EAAG3mB,IAAIwG,SAASmgB,EAAGllB,KAC7B/nC,KAAK8iD,OAEJ17B,EAAK8lB,EAAI,GAEb,MAAMuG,EAASzzC,KAAKsW,OAAO+8B,kBAAkBC,YAAYwN,YAAYt3B,QAElEypB,GAAUoB,kBAAkBr0C,KAAKsW,QAAUgR,KAAK23B,KAAO,EAEjC,eAAlBj/C,KAAK8lD,SAEJ9lD,KAAKujE,MAAMn8C,EAAKqsB,GAIhBzzC,KAAKwjE,MAAMp8C,EAAKqsB,GAKC,eAAlBzzC,KAAK8lD,SAEJ9lD,KAAKwjE,MAAMp8C,EAAKqsB,GAIhBzzC,KAAKujE,MAAMn8C,EAAKqsB,GAKxBzzC,KAAKyjE,wCAAyC,EAC9CzjE,KAAK0jE,yBAA0B,CACnC,CAEAH,MAAMn8C,EAAKqsB,GAEPzzC,KAAK2jE,wCAA0Cr3B,GAAAA,IAAes3B,kBACzDx8C,EAAKlR,EAAE,EAAIu9B,EAAOv9B,EACnBkR,EAAKlR,EAAE,EAAIu9B,EAAOv9B,GACjBkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,EACnB9lB,EAAK8lB,EAAE,EAAIuG,EAAOvG,EAAG,EAAG,GAI5B,MAAMgH,EAAK,IAAI5H,GAAAA,KAAiBllB,EAAKlR,EAAE,EAAIu9B,EAAOv9B,GAAIkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,EAAGuG,EAAOhsB,GAC5E0sB,EAAK,IAAI7H,GAAAA,IAAgBllB,EAAKlR,EAAE,EAAIu9B,EAAOv9B,GAAIkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,EAAGuG,EAAOhsB,GAC3Eo8C,EAAK,IAAIv3B,GAAAA,IAAgBllB,EAAKlR,EAAE,EAAIu9B,EAAOv9B,EAAGkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,EAAGuG,EAAOhsB,GAC1Eq8C,EAAK,IAAIx3B,GAAAA,KAAiBllB,EAAKlR,EAAE,EAAIu9B,EAAOv9B,EAAGkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,EAAGuG,EAAOhsB,GAC3EwlB,EAAS,CAACiH,EAAGC,EAAG0vB,EAAGC,EAAG5vB,GACtBgG,EAAO5N,GAAAA,IAAoBy3B,YAAY,QAAS,CAAE92B,UAAUjtC,KAAKixC,UACvEiJ,EAAK3B,MAAQ,IAAIjM,GAAAA,IAAe,EAAE,EAAE,GACpC4N,EAAK3wB,QAAQrT,GAAK,EAClBgkC,EAAKvwB,SAASlC,GAAK,GACnByyB,EAAKzhC,UAAYzY,KAAKkjE,aAEnBljE,KAAKgkE,WAEJhkE,KAAKgkE,UAAUz+C,UAEnBvlB,KAAKgkE,UAAY9pB,CACrB,CAEAspB,MAAMp8C,EAAKqsB,GAEPzzC,KAAK2jE,wCAA0Cr3B,GAAAA,IAAes3B,kBACzDx8C,EAAKK,EAAE,EAAIgsB,EAAOhsB,EACnBL,EAAKK,EAAE,EAAIgsB,EAAOhsB,GACjBL,EAAK8lB,EAAE,EAAIuG,EAAOvG,EACnB9lB,EAAK8lB,EAAE,EAAIuG,EAAOvG,EAAI,EAAE,GAI5B,MAAMgH,EAAK,IAAI5H,GAAAA,IAAgBmH,EAAOv9B,GAAIkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,GAAI9lB,EAAKK,EAAE,EAAIgsB,EAAOhsB,GAC5E0sB,EAAK,IAAI7H,GAAAA,IAAgBmH,EAAOv9B,GAAIkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,EAAG9lB,EAAKK,EAAE,EAAIgsB,EAAOhsB,GAC3Eo8C,EAAK,IAAIv3B,GAAAA,IAAgBmH,EAAOv9B,EAAGkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,EAAG9lB,EAAKK,EAAE,EAAIgsB,EAAOhsB,GAC1Eq8C,EAAK,IAAIx3B,GAAAA,IAAgBmH,EAAOv9B,EAAGkR,EAAK8lB,EAAE,EAAIuG,EAAOvG,GAAI9lB,EAAKK,EAAE,EAAIgsB,EAAOhsB,GAC3EwlB,EAAS,CAACiH,EAAGC,EAAG0vB,EAAGC,EAAG5vB,GACtBgG,EAAO5N,GAAAA,IAAoBy3B,YAAY,QAAS,CAAE92B,UAAUjtC,KAAKixC,UACvEiJ,EAAK3B,MAAQ,IAAIjM,GAAAA,IAAe,EAAE,EAAE,GACpC4N,EAAK3wB,QAAQ9B,GAAK,EAClByyB,EAAKvwB,SAASzT,GAAK,GACnBgkC,EAAKzhC,UAAYzY,KAAKkjE,aAEnBljE,KAAKgkE,WAEJhkE,KAAKgkE,UAAUz+C,UAEnBvlB,KAAKgkE,UAAY9pB,CACrB,CAEAmpB,gBACI,MAAMY,EAAc,KAEdC,EAAiB,IAAI53B,GAAAA,IAAuB,iBAAkB23B,EAAajkE,KAAKixC,UAAU,EAAO3E,GAAAA,IAAkB63B,8BACnHrsB,EAAUosB,EAAeE,aAO/B,OALAtsB,EAAQusB,UAAY,iBACpBvsB,EAAQwsB,SAAS,EAAG,EAAGL,EAAaA,GAEpCC,EAAenU,SAERmU,CACX,CAEAnU,OAAOz5C,GAEHtW,KAAKsW,OAASA,EACd,IAAI2sD,EAAU,IAAI95C,GAAAA,IAA0B,eAAlBnpB,KAAK8lD,SAA4B,EAAI,EAAG,EAAqB,eAAlB9lD,KAAK8lD,UAA6B,EAAI,GACxG7S,GAAUoB,kBAAkB/9B,GAAUgR,KAAK23B,IAAM,IAEhDgkB,EAAU,IAAI95C,GAAAA,IAA0B,eAAlBnpB,KAAK8lD,SAA4B,EAAI,EAAG,EAAqB,eAAlB9lD,KAAK8lD,SAA4B,GAAK,IAE3G9lD,KAAK2/D,UAAYsD,EACjBjjE,KAAKgkE,WAAWz+C,UAChBvlB,KAAKmjE,8BACT,CAEA3jB,SAEI,MAAMwa,EAAa,IAAIh6D,KAAKi6D,oBACtBC,EAAW,GACjBl6D,KAAKgkE,WAAWz+C,UAEhBy0C,EAAW3jD,SAAQiP,IACf40C,EAASz0C,KAAKH,EAAEo9B,OAAO9P,kBAAkBttB,EAAEqtB,UAAU11C,OACrDqoB,EAAEqtB,SAAW,IAAI,IAGrB3yC,KAAKi6D,mBAAqB,CAACj6D,KAAKixC,SAASkpB,cAAc,YACvDn6D,MAAMulB,UAEN,IAAI,IAAI1iB,EAAI,EAAGA,EAAIm3D,EAAW95D,OAAQ2C,IAElCm3D,EAAWn3D,GAAG8vC,SAAWunB,EAASr3D,EAE1C,ECpKW,MAAM0hE,WAAsBxiB,GACvCrR,cAEIsR,QACAhiD,KAAKwpD,UAAY,KACjBxpD,KAAKypD,YAAc,KACnBzpD,KAAK0pD,YAAc,KACnB1pD,KAAKwkE,QAAS,CAClB,CAEAC,iBAEI,MAAO,CAACzkE,KAAKwpD,UAAUxpD,KAAKypD,YAAYzpD,KAAK0pD,YACjD,CAEAgb,UAAU7Y,GAEN7rD,KAAKspB,aAAeuiC,EACpB7rD,KAAKiiD,aAAa5rC,SAAQiP,GAAGA,EAAE+pB,OAASwc,EAAUniC,iBAClD1pB,KAAKkiD,aAAa7rC,SAAQiP,GAAGA,EAAE+pB,OAASwc,EAAUhiC,iBAClD7pB,KAAKmiD,WAAW9rC,SAAQiP,GAAGA,EAAE+pB,OAASwc,EAAUt1C,cACpD,CAEA88C,uBAEIrzD,KAAKwpD,UAAUlgC,aAAetpB,KAAKspB,aACnCtpB,KAAKypD,YAAYngC,aAAetpB,KAAKspB,aACrCtpB,KAAK0pD,YAAYpgC,aAAetpB,KAAKspB,YACzC,CAEAiqC,gBAAgBoR,EAAO,MAEnB,IAAIC,EAAUD,GAAc3kE,KAAKspB,aAC9BtpB,KAAKwpD,WAEJxpD,KAAKwpD,UAAUjkC,UAEnB,MAAMikC,EAAYxpD,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,YAAqB6E,QACtE,IAAIggC,EACA,OACJA,EAAU7W,SAAW3yC,KAAKgX,UAAUi6B,SAAS2B,kBAAkB,kBAC/D5yC,KAAKwpD,UAAYxpD,KAAK6kE,iBAAiBrb,EAAUob,EAAQruD,cAEtDvW,KAAKypD,aAEJzpD,KAAKypD,YAAYlkC,UAErB,MAAMkkC,EAAczpD,KAAKiiD,aAAa78B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,YAAqB6E,QAC1E,IAAIigC,EACA,OACJA,EAAY9W,SAAW3yC,KAAK+U,YAAYk8B,SAAS2B,kBAAkB,kBACnE5yC,KAAKypD,YAAczpD,KAAK6kE,iBAAiBpb,EAAYmb,EAAQl7C,gBAE1D1pB,KAAK0pD,aAEJ1pD,KAAK0pD,YAAYnkC,UAErB,MAAMmkC,EAAc1pD,KAAKkiD,aAAa98B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,YAAqB6E,QACtEkgC,IAEJA,EAAY/W,SAAW3yC,KAAK+W,YAAYk6B,SAAS2B,kBAAkB,kBACnE5yC,KAAK0pD,YAAc1pD,KAAK6kE,iBAAiBnb,EAAYkb,EAAQ/6C,gBACjE,CAEAg7C,iBAAiBrb,EAAUkJ,GAEvB,MAAMoS,EAAO7xB,GAAUoB,kBAAkBmV,GACnCpiC,EAAO,IACPquB,EAAU+T,EAAUnW,kBAC1B,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCiC,EAA4C,EAAnCs9B,EAAQnC,YAAYoC,WAAWxI,EACxCyI,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAC3C,MAAMvnB,EAASgY,EAAQy9B,EAAQz9B,EAAQy9B,EACjCovB,EAASz4B,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAQhY,EAAQiY,OAASA,EAAQw9B,MAAQvuB,GAAMoiC,EAAU9G,QAE5GqiB,EAAOp7C,SAAW6/B,EAAU7/B,SAASH,QACrCu7C,EAAOl1B,SAAW2Z,EAAU3Z,SAASrmB,QACrCu7C,EAAOx7C,QAAUigC,EAAUjgC,QAAQC,QACnCu7C,EAAOpyB,SAAW6W,EAAU7W,SAE5B6W,EAAUjkC,UACVikC,EAAYub,EACZvb,EAAUna,OAAS,KACnBma,EAAU1tD,GAAK,YAEf,MAAMkpE,EAAchlE,KAAKqvC,OAAO8S,WAAWM,OAAOziD,KAAKqvC,OAAOmT,iBACxDiZ,EAAWuJ,EAAY5/C,MAAKlP,GAAGA,EAAEwsC,SAAW8G,EAAU9G,SAC5D,IAAI4b,EAAW7C,EAAS/P,sBAAsBliC,QAC9C,MAAMy7C,EAAYzb,EAAUhgC,QAC5By7C,EAAU51B,OAASqjB,EACnBuS,EAAUvgB,oBAAoB4Z,GAC9BA,EAAU2G,EAAUt7C,SAASH,QAC7By7C,EAAU1/C,UAEV,MAAMugC,EAAW9lD,KAAKqvC,OAAO6W,mBAAmBlpD,KAC1Ck4C,EAAM5tB,KAAKilB,IAAInhB,OAAO9D,KAAK4tB,IAAIwd,EAAS7iB,SAAS3C,GAAGxlB,QAAQ,KAC5DutB,EAAM3tB,KAAKilB,IAAInhB,OAAO9D,KAAK2tB,IAAIyd,EAAS7iB,SAAS3C,GAAGxlB,QAAQ,KA4BlE,MA1BgB,eAAbo+B,GAEC0D,EAAU7/B,SAASzT,EAAIooD,EAAQpoD,EAAIg/B,EAAMsU,EAAU7/B,SAASzT,EAAI++B,EAChEuU,EAAU7/B,SAASlC,EAAI62C,EAAQ72C,EAAIwtB,EAAMuU,EAAU7/B,SAASlC,EAAIytB,EAChEsU,EAAU3Z,SAAS3C,EAAI,EAAI43B,IAI3Btb,EAAU7/B,SAASzT,EAAIooD,EAAQpoD,EAAI++B,EAAMuU,EAAU7/B,SAASzT,EAAIg/B,EAChEsU,EAAU7/B,SAASlC,EAAI62C,EAAQ72C,EAAIytB,EAAMsU,EAAU7/B,SAASlC,EAAIwtB,EAChEuU,EAAU3Z,SAAS3C,EAAI5lB,KAAK23B,GAAG,EAAI6lB,GAIvCtb,EAAUoC,iBAAkB,EAC5BpC,EAAU7C,UAAY6C,EAAU7/B,SAASH,QACzCggC,EAAUlgC,aAAetpB,KAAKspB,aAC9BkgC,EAAUkJ,SAAWA,EACrBlJ,EAAUna,OAASqjB,EACnBlJ,EAAU/wC,WAAY,EACtB+wC,EAAU3T,OAAS71C,KACnBwpD,EAAUhzC,YAAW,GACrBgzC,EAAU0L,KAAO,IAAI6N,GAASvZ,EAAUA,EAAU9G,OAAO1iD,KAAKqvC,OAAOyW,SAAU4M,EAAShQ,QAAU1iD,KAAKgX,UAAUi6B,UACjHuY,EAAU0L,KAAK+E,mBAAmBx0C,KAAKg2C,GAGhCjS,CACX,CAEAjkC,UAEOvlB,KAAKwpD,YAEJxpD,KAAKwpD,UAAU0L,KAAK1V,SACpBx/C,KAAKwpD,UAAUjkC,WAEhBvlB,KAAKypD,cAEJzpD,KAAKypD,YAAYyL,KAAK1V,SACtBx/C,KAAKypD,YAAYlkC,WAElBvlB,KAAK0pD,cAEJ1pD,KAAK0pD,YAAYwL,KAAK1V,SACtBx/C,KAAK0pD,YAAYnkC,WAErBvlB,KAAKiiD,aAAa5rC,SAAQxP,GAAGA,EAAE0e,YAC/BvlB,KAAKkiD,aAAa7rC,SAAQxP,GAAGA,EAAE0e,YAC/BvlB,KAAKmiD,WAAW9rC,SAAQxP,GAAGA,EAAE0e,YAE1BvlB,KAAKspB,eAEJtpB,KAAKspB,aAAa6sB,SAAWn2C,KAAKspB,aAAa6sB,SAASlgC,QAAOC,GAAKA,GAAKlW,OACzEA,KAAKspB,aAAa+/B,MAAQrpD,KAAKspB,aAAa+/B,MAAMpzC,QAAOC,GAAKA,GAAKlW,OACnEA,KAAKspB,aAAaigC,SAAWvpD,KAAKspB,aAAaigC,SAAStzC,QAAOC,GAAKA,GAAKlW,OACzEA,KAAKspB,aAAaggC,QAAUtpD,KAAKspB,aAAaggC,QAAQrzC,QAAOC,GAAKA,GAAKlW,OAE/E,CAEA00D,SAASvhB,GAEL,MAAMmM,EAASt/C,KAAKmiD,WAAWM,OAAOziD,KAAKwiD,iBAAiBC,OAAOziD,KAAKykE,kBAExE,IAAI,IAAI59D,KAAKy4C,EACb,CACI,MAAM4lB,EAAOr+D,EAAE6kD,sBAE2B,YAAvC1rD,KAAKqvC,OAAO6W,mBAAmBlpD,KAE9BkoE,EAAKz9C,EAAI0rB,EAAI1rB,EAIby9C,EAAKhvD,EAAIi9B,EAAIj9B,EAEjBrP,EAAE69C,oBAAoBwgB,EAC1B,CACJ,CAEAxf,aAAavU,EAAO0E,GAEhBA,EAAOvsB,aAAaq8B,YAAYxU,EAAO0E,GACvCA,EAAOvsB,aAAas8B,SAAU,EAC9B/P,EAAOtwB,SACX,ECnLW,MAAM4/C,WAAmBZ,GACpC7zB,cAEIsR,QACAhiD,KAAKolE,UAAW,EAChBplE,KAAKwpD,UAAY,KACjBxpD,KAAKypD,YAAc,KACnBzpD,KAAK0pD,YAAc,IACvB,CAEAzF,UAAUhT,EAAS/zC,GAEf,MAAMoiD,EAASt/C,KAAKwiD,gBAAgBC,OAAOziD,KAAKmiD,YAC1CrsC,EAAUwpC,EAAOrpC,QAAOC,GAAGA,EAAEwsC,SAAWzR,IAC9Cn7B,EAAQO,SAAQ03B,IACZA,EAAKv3B,WAAWtZ,EAAM,IAG1B8C,KAAKwpD,WAAWhzC,WAAWtZ,GAC3B8C,KAAKypD,aAAajzC,WAAWtZ,GAC7B8C,KAAK0pD,aAAalzC,WAAWtZ,GAE7B8C,KAAKwpD,WAAW0L,MAAM1+C,WAAWtZ,GACjC8C,KAAKypD,aAAayL,MAAM1+C,WAAWtZ,GACnC8C,KAAK0pD,aAAawL,MAAM1+C,WAAWtZ,EACvC,CAEA+oD,mBAEI,OAAOjmD,KAAKqvC,OAAO4W,kBACvB,CAEA9pC,qBAEInc,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,MAAM53B,EAAO43B,EAAK53B,KAClB,GAAqB,QAAlBA,EAAKwO,SACR,CACI,MAAMu+B,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAC9DmS,EAAIjtC,KAAOA,EACXktC,EAAIltC,KAAOA,EACXnW,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,GACvBD,EAAIz5B,SAASujB,EAAG,IAChBmW,EAAI15B,SAASujB,EAAG,GACpB,KAGJ,MAAMm4B,QAAYrlE,KAAKslE,aAAatlE,KAAK+U,YAAYk8B,SAASjxC,KAAKiiD,cACnEojB,EAAIlvD,KAAOnW,KAAKmW,KAChBkvD,EAAIxvB,OAAS71C,KACbqlE,EAAI7uD,YAAW,GACf,MAAM+uD,QAAYvlE,KAAKslE,aAAatlE,KAAK+W,YAAYk6B,SAASjxC,KAAKkiD,cACnEqjB,EAAIpvD,KAAOnW,KAAKmW,KAChBovD,EAAI1vB,OAAS71C,KACbulE,EAAI/uD,YAAW,GACfxW,KAAKiiD,aAAax8B,KAAK4/C,GACvBrlE,KAAKkiD,aAAaz8B,KAAK8/C,EAC3B,CAEAC,UAAUlpD,GACN,OAAO,IAAImpD,SAAQ,CAACC,EAASC,KACzB,MAAMnsD,EAAQ,IAAIg3C,MAElBh3C,EAAM+M,OAAS,KACXm/C,EAAQlsD,EAAM,EAGlBA,EAAMosD,QAAW5mD,IACb2mD,EAAO3mD,EAAM,EAGjBxF,EAAM9c,IAAM4f,CAAG,GAEvB,CAEAH,mBAAmB0pD,EAASvmB,GAExB,MAAMsf,EAAY5+D,KAAKmW,KAAKwO,SAAS3kB,KAAKmW,KAAK4M,SAASzF,QAAQ,SAAS,IACnEwoD,EAAe,GAAE9lE,KAAKgX,UAAU45B,OAAOm1B,aAAanH,oBACpDplD,QAAcxZ,KAAKwlE,UAAUM,GAE7BjsB,EAAMyF,EAAOl6B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAClCk1B,EAAIphC,WAAY,EAChB,MAAMg9B,EAAUoE,EAAIxG,kBACpB,IAAIn7B,GAA4C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,GAAOwR,QAAQ,GACvDiuB,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,MAAMu+C,EAAQhmE,KAAKmW,KAAK8vD,SAAS,GAC3BC,EAAQlmE,KAAKmW,KAAK8vD,SAAS,GAE3BE,EAAU,IAAI75B,QAAQoX,iBAAiBkb,EAASiH,GAChDO,EAAc,IAAI95B,QAAQsX,QAAQkiB,EAAYD,GAQpD,GAPAO,EAAYC,UAAY/5B,QAAQsX,QAAQ0iB,uBACxCH,EAAQ7iB,eAAiB8iB,EACzBD,EAAQtiB,cAAgB,IAAIvX,QAAQwX,OAAO,EAAG,EAAG,GACjDqiB,EAAQpiB,cAAgB,EACxBoiB,EAAQvF,iBAAkB,EAC1BuF,EAAQ7iB,eAAeue,UAAW,EAE/B7hE,KAAKqvC,OACR,CACI,MAAM/jB,EAAYtrB,KAAKqvC,OAAO4W,mBAAqB,EACnD,GAA2B,cAAxBjmD,KAAKqvC,OAAOyW,SACf,CACI,MAAM3tC,EAAUqB,EAAMrB,OAAOD,EAAOsB,EAAMtB,MACpCquD,EAAYj6B,QAAQka,YAAYggB,YAAY,YAAY,CAAEtuD,MAAOA,EAAOC,OAAQA,GAAU0tD,GA6BhG,OA5BAU,EAAU5zB,SAAWwzB,EACrBI,EAAU12B,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAG,EAAG,GACzDsnB,EAAU58C,SAAWkwB,EAAIlwB,SAASH,QAClC+8C,EAAU58C,SAASujB,EAAI,IACvBq5B,EAAU58C,SAASlC,EAAIznB,KAAKqvC,OAAO2X,eAAev/B,EAErC,MAAVu+C,EAECO,EAAU58C,SAASlC,GAAKtP,EAAO,EAAEmT,EAIjCi7C,EAAU58C,SAASlC,GAAKtP,EAAO,EAAEmT,EAGxB,MAAV06C,GAA2B,MAAVE,GAEhBK,EAAUh9C,QAAQrT,GAAK,EACvBqwD,EAAUh9C,QAAQ2jB,GAAK,GAET,MAAVg5B,EAEJK,EAAUh9C,QAAQrT,GAAK,EAET,MAAV8vD,IAEJO,EAAUh9C,QAAQ2jB,GAAK,GAEpBq5B,CACX,CAEA,CACI,MAAMpuD,EAAUqB,EAAMrB,OAAOw9B,EAAOn8B,EAAMtB,MACpCquD,EAAYj6B,QAAQka,YAAYggB,YAAY,YAAY,CAAEtuD,MAAOy9B,EAAOx9B,OAAQA,GAAU0tD,GA6BhG,OA5BAU,EAAU5zB,SAAWwzB,EACrBI,EAAU12B,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAG33B,KAAK23B,GAAK,EAAG,GACnEsnB,EAAU58C,SAAWkwB,EAAIlwB,SAASH,QAClC+8C,EAAU58C,SAASujB,EAAI,IACvBq5B,EAAU58C,SAASzT,EAAIlW,KAAKqvC,OAAO2X,eAAe9wC,EAErC,MAAV8vD,EAECO,EAAU58C,SAASzT,GAAKiC,EAAO,EAAEmT,EAIjCi7C,EAAU58C,SAASzT,GAAKiC,EAAO,EAAEmT,EAGxB,MAAV06C,GAA2B,MAAVE,GAEhBK,EAAUh9C,QAAQrT,GAAK,EACvBqwD,EAAUh9C,QAAQ2jB,GAAK,GAET,MAAVg5B,EAEJK,EAAUh9C,QAAQrT,GAAK,EAET,MAAV8vD,IAEJO,EAAUh9C,QAAQ2jB,GAAK,GAEpBq5B,CACX,CACJ,CAEA,CACI,MAAMpuD,EAAUqB,EAAMrB,OAAOD,EAAOsB,EAAMtB,MACpCquD,EAAYj6B,QAAQka,YAAYggB,YAAY,YAAY,CAAEtuD,MAAOA,EAAOC,OAAQA,GAAU0tD,GAKhG,OAJAU,EAAU5zB,SAAWwzB,EACrBI,EAAU12B,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAG,EAAG,GACzDsnB,EAAU58C,SAAWkwB,EAAIlwB,SAASH,QAClC+8C,EAAU58C,SAASujB,EAAI,IAChBq5B,CACX,CACJ,CAEAE,eAAetzB,EAAM,MAEjB,IAEI,MAAMmM,EAAS,GACft/C,KAAKmiD,WAAWlsC,QAAOC,GAAsB,OAAnBA,EAAEC,KAAKwO,WAAmBtO,SAAQiP,IACxD2tB,GAAUC,cAAc5tB,GACxBg6B,EAAO75B,KAAKH,EAAE,IAGlB,MAAMohD,EAAYp6B,QAAQ2O,KAAK0rB,YAAYrnB,GAAQ,GAAM,OAAM5+B,GAAW,GAAO,GAEjFgmD,EAAUvwD,KAAOnW,KAAKmW,KACtBuwD,EAAUp9C,aAAetpB,KAAKspB,aAC9Bo9C,EAAUr3B,OAASrvC,KAAKspB,cAAc/S,aAEtC08B,GAAUC,cAAcwzB,GAExB,MAAM7sB,EAAM75C,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAC3C+hD,EAAU/8C,SAAWkwB,EAAIlwB,SAASH,QAClCk9C,EAAUE,0BAA2B,EAGlCzzB,IAECuzB,EAAU/8C,SAAWwpB,GAMzBnzC,KAAKmiD,WAAa,GAClBniD,KAAKmiD,WAAW18B,KAAKihD,GACrB1mE,KAAKmiD,WAAW18B,KAAKo0B,EACzB,CACA,MAAMpuB,GAEFtQ,QAAQ6D,MAAMyM,EAClB,CACJ,CAEA+tB,gBAEI,MAAO,CACH,CACIx8C,KAAK,SACLmgD,MAAMn9C,KAAK0+C,cACb,CACE1hD,KAAK,gBACLmgD,MAAMn9C,KAAKq3C,SACb,CACEr6C,KAAK,gBACLmgD,MAAMn9C,KAAKm3C,SAMf,CACIn6C,KAAK,SACLmgD,MAAMn9C,KAAKw/C,QAGvB,CAEAzH,mBAAmB5G,GAEf,IAAIuI,EAAkB15C,KAAKk5C,mBAAmB/H,EAAMF,UAChDkW,EAASnnD,KAAKq5C,yBAEd+N,EAAYpnD,KAAKg9C,kBAAkBtD,EAAiBvI,EAAOnxC,KAAKmW,KAAKwO,SAAU3kB,KAAKw5C,iBACxF2N,EAAO7N,QAAQX,WAAWyO,GAE1BpnD,KAAKy3C,cAAchyB,KAAK0hC,EAAO7N,SAE/B,IAAIO,EAAM75C,KAAK85C,iBAAiB3I,GAC5BkW,EAAU,IAAI/a,QAAQ2O,KAAK,WAAY9J,EAAMF,UAWjD,OAVAoW,EAAQ19B,SAAWkwB,EAAIpG,OACvBzzC,KAAK03C,mBAAmBjyB,KAAK4hC,GAE7BrnD,KAAKy3C,cAAcphC,SAAQ6kC,IAEvBxB,EAAgBf,WAAWuC,EAAM,IAGrCl7C,KAAKg4C,cAAc0B,GAEZ15C,KAAKy3C,aAChB,CAEAN,QAAQhG,EAAO0E,GAEPA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA8B/I,IAC5E,IAAIgJ,EAAWhJ,EAAOiJ,qBAClBC,EAAWlJ,EAAOmJ,qBAElB8G,EAAWjQ,EAAOxG,OAAO6W,mBAAmBlpD,KAC5C09C,EAAW7E,EAAOxG,OAAOsL,cAEd,YAAZmL,GAECjH,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQ2jB,GAAK5nB,EAAEiE,QAAQ2jB,EAEzB,IAAI50B,EAAQgN,EAAEqE,SAASH,QACvBlR,EAAM40B,EAAI,EAEV,IAAI25B,EAAkB96B,GAAauO,uBAAuBI,EAASlM,MAAOkM,EAASjM,IAAKn2B,GACpF2Q,EAAMqjB,QAAQnjB,QAAQonB,UAAUs2B,EAAgB/5B,SAASx0B,IAC7DgN,EAAEqE,SAAWoiB,GAAa+6B,eAAexhD,EAAEqE,SAAUk9C,EAAiB59C,EAAI,IAE9E81B,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQ9B,GAAKnC,EAAEiE,QAAQ9B,EAEzB,IAAInP,EAAQgN,EAAEqE,SAASH,QACvBlR,EAAM40B,EAAI,EAEV,IAAI25B,EAAkB96B,GAAauO,uBAAuBI,EAASlM,MAAOkM,EAASjM,IAAKn2B,GACpF2Q,EAAMqjB,QAAQnjB,QAAQonB,UAAUs2B,EAAgB/5B,SAASx0B,IAC7DgN,EAAEqE,SAAWoiB,GAAa+6B,eAAexhD,EAAEqE,SAAUk9C,EAAiB59C,EAAI,MAK9E41B,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQ2jB,GAAK5nB,EAAEiE,QAAQ2jB,EAEzB,IAAI50B,EAAQgN,EAAEqE,SAASH,QACvBlR,EAAM40B,EAAI,EAEV,IAAI25B,EAAkB96B,GAAauO,uBAAuBI,EAASlM,MAAOkM,EAASjM,IAAKn2B,GACpF2Q,EAAMqjB,QAAQnjB,QAAQonB,UAAUs2B,EAAgB/5B,SAASx0B,IAC7DgN,EAAEqE,SAAWoiB,GAAa+6B,eAAexhD,EAAEqE,SAAUk9C,EAAiB59C,EAAI,IAE9E81B,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQ9B,GAAKnC,EAAEiE,QAAQ9B,EAEzB,IAAInP,EAAQgN,EAAEqE,SAASH,QACvBlR,EAAM40B,EAAI,EAEV,IAAI25B,EAAkB96B,GAAauO,uBAAuBI,EAASlM,MAAOkM,EAASjM,IAAKn2B,GACpF2Q,EAAMqjB,QAAQnjB,QAAQonB,UAAUs2B,EAAgB/5B,SAASx0B,IAC7DgN,EAAEqE,SAAWoiB,GAAa+6B,eAAexhD,EAAEqE,SAAUk9C,EAAiB59C,EAAI,IAGtF,CAEAouB,QAAQlG,EAAO0E,GAEPA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA8B/I,IAC5E,IAAIgJ,EAAWhJ,EAAOiJ,qBAClBC,EAAWlJ,EAAOmJ,qBAElB8G,EAAWjQ,EAAOxG,OAAO6W,mBAAmBlpD,KAC5C+pE,EAAelxB,EAAOgN,eAAe1R,GAAO,GAAGxnB,SAASH,QAE7C,YAAZs8B,GAECjH,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,EAEzB,IAAI8wD,EAAcj7B,GAAa+6B,eAAexhD,EAAEqE,SAASH,QAASu9C,EAAc,IAAIz6B,QAAQnjB,QAAQ,EAAG,EAAG,IAC1G7D,EAAEqE,SAAWq9C,CAAW,IAE5BjoB,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,EAEP61B,GAAa+6B,eAAexhD,EAAEqE,SAASH,QAASu9C,EAAc,IAAIz6B,QAAQnjB,QAAQ,EAAG,EAAG,GAAG,MAMjH01B,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,EAEzB,IAAI8wD,EAAcj7B,GAAa+6B,eAAexhD,EAAEqE,SAASH,QAASu9C,EAAc,IAAIz6B,QAAQnjB,QAAQ,EAAG,EAAG,IAC1G7D,EAAEqE,SAAWq9C,CAAW,IAE5BjoB,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,EAEP61B,GAAa+6B,eAAexhD,EAAEqE,SAASH,QAASu9C,EAAc,IAAIz6B,QAAQnjB,QAAQ,EAAG,EAAG,GAAG,IAIzH,CAEA89C,kBAEI,MAAMlO,EAAI3tC,OAAOprB,KAAKmW,KAAK8vD,SAAS,IAC9BlgC,EAAI3a,OAAOprB,KAAKmW,KAAK8vD,SAAS,IAEpC,IAAI,IAAIiB,KAAMlnE,KAAKwiD,gBAEN,IAANuW,IAECmO,EAAG39C,QAAQ2jB,IAAM,GAEZ,IAANnH,IAECmhC,EAAG39C,QAAQrT,IAAM,EAG7B,CAEAixD,kBAEI,MAAMpO,EAAI3tC,OAAOprB,KAAKmW,KAAK8vD,SAAS,IAC9BlgC,EAAI3a,OAAOprB,KAAKmW,KAAK8vD,SAAS,IAEpC,IAAI,IAAIiB,KAAMlnE,KAAKmiD,WAEN,IAAN4W,IAECmO,EAAG39C,QAAQ9B,IAAM,GAEZ,IAANse,IAECmhC,EAAG39C,QAAQrT,IAAM,EAG7B,CAEAkxD,kBAEQpnE,KAAKspB,eAGTtpB,KAAKiiD,aAAa5rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAKspB,aAAaI,iBAC1D1pB,KAAKkiD,aAAa7rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAKspB,aAAaO,iBAC1D7pB,KAAKmiD,WAAW9rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAKspB,aAAa/S,eAE5D,CAEA8wD,6BAEI,MAAMC,EAAiBtnE,KAAKwiD,gBAAgBvsC,QAAOqP,GAAY,cAATA,EAAExpB,KAClDyrE,EAAgBvnE,KAAKwiD,gBAAgBvsC,QAAOqP,GAAuB,QAApBA,EAAEnP,KAAKwO,WACtDyjC,EAAWpoD,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WAC1C6iD,EAAcxnE,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAE7C8iD,EAAOrf,EAAS/U,kBAAkBC,YAClCo0B,EAAyB,EAApBD,EAAK/xB,WAAWjuB,EAE3B,IAAI,IAAIkgD,KAAgBL,EACxB,CACIK,EAAah+C,SAASzT,EAAIkyC,EAASz+B,SAASzT,EAC5CyxD,EAAah+C,SAASlC,EAAI2gC,EAASz+B,SAASlC,EAC5CkgD,EAAa93B,SAAS3C,EAAIkb,EAASvY,SAAS3C,EAE5C,MAAM06B,EAAOD,EAAat0B,kBAAkBC,YACtCu0B,EAAwB,EAAnBD,EAAKlyB,WAAWxI,EAErB46B,EAAMJ,EAAKG,EACc,IAA5BF,EAAa93B,SAAS3C,EAErBy6B,EAAah+C,SAASlC,GAAKqgD,EAAI,EAAIH,EAAap+C,QAAQ2jB,EAAIltC,KAAKspB,aAAa/S,aAAagT,QAAQ9B,EAInGkgD,EAAah+C,SAASzT,GAAK4xD,EAAI,EAAIH,EAAap+C,QAAQ2jB,EAAIltC,KAAKspB,aAAa/S,aAAagT,QAAQrT,CAE3G,CAEA,IAAI,IAAI6xD,KAAeR,EAEnBQ,EAAYp+C,SAASzT,EAAIsxD,EAAY79C,SAASzT,EAC9C6xD,EAAYp+C,SAASlC,EAAI+/C,EAAY79C,SAASlC,EAC9CsgD,EAAYl4B,SAAS3C,EAAIs6B,EAAY33B,SAAS3C,CAEtD,CAEAyxB,6BAEI,MAAMgJ,EAAe3nE,KAAKwiD,gBAAgBp9B,MAAKE,GAAY,cAATA,EAAExpB,KAC9CisE,EAAc/nE,KAAKwiD,gBAAgBp9B,MAAKE,GAAuB,QAApBA,EAAEnP,KAAKwO,WAClDyjC,EAAWpoD,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,SAApBA,EAAEC,KAAKwO,WAC1C6iD,EAAcxnE,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAC7C8iD,EAAOrf,EAAS/U,kBAAkBC,YAClCo0B,EAAyB,EAApBD,EAAK/xB,WAAWjuB,EACrBmgD,EAAOD,EAAat0B,kBAAkBC,YACtCu0B,EAAwB,EAAnBD,EAAKlyB,WAAWxI,EACrB46B,EAAMJ,EAAKG,EAEjBzf,EAAS7+B,QAAQrT,EAAIyxD,EAAap+C,QAAQrT,EAC1CkyC,EAAS7+B,QAAQ9B,EAAIkgD,EAAap+C,QAAQ2jB,EAC1Cs6B,EAAYj+C,QAAUw+C,EAAYx+C,QAClC6+B,EAASvY,SAAS3C,EAAIy6B,EAAa93B,SAAS3C,EAC5Cs6B,EAAY33B,SAAS3C,EAAI66B,EAAYl4B,SAAS3C,EAC9Ckb,EAASz+B,SAAWg+C,EAAah+C,SAASH,QAC1C4+B,EAASz+B,SAASujB,EAAIltC,KAAKmW,KAAKgC,OAAO,IACvCqvD,EAAY79C,SAAWo+C,EAAYp+C,SAASH,QAC5Cg+C,EAAY79C,SAASujB,EAAIltC,KAAKmW,KAAKgC,OAAO,IAE1C,MAAM+8B,EAAM9pB,OAAO9D,KAAK4tB,IAAIkT,EAASvY,SAAS3C,GAAGxlB,QAAQ,IACnDutB,EAAM7pB,OAAO9D,KAAK2tB,IAAImT,EAASvY,SAAS3C,GAAGxlB,QAAQ,IAEnDo+B,EAAW9lD,KAAKqvC,OAAO6W,mBAAmBlpD,KAC1CgrE,EAAYhoE,KAAKqvC,OAAO/lB,aAAa/S,aAAagT,QAAQC,QACrB,aAAxCxpB,KAAKqvC,OAAO6W,mBAAmBlpD,KAE3BgD,KAAKqvC,OAAOyW,UAAYA,EAEvBsC,EAASz+B,SAASlC,IAAOqgD,EAAI,EAAI9nE,KAAKmW,KAAKkV,GAAG,MAAS4pB,EAAK+yB,EAAUvgD,EAItE2gC,EAASz+B,SAASzT,IAAO4xD,EAAI,EAAI9nE,KAAKmW,KAAKkV,GAAG,KAAQ6pB,EAAK8yB,EAAU9xD,EAKtElW,KAAKqvC,OAAOyW,UAAYA,EAEvBsC,EAASz+B,SAASzT,IAAO4xD,EAAI,EAAI9nE,KAAKmW,KAAKkV,GAAG,MAAS6pB,EAAK8yB,EAAU9xD,EAItEkyC,EAASz+B,SAASlC,IAAOqgD,EAAI,EAAI9nE,KAAKmW,KAAKkV,GAAG,KAAQ4pB,EAAK+yB,EAAUvgD,EAI7EznB,KAAKmiD,WAAW9rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAKspB,aAAa/S,cAC5D,EC3gBW,MAAM0xD,WAAoBlmB,GACrCrR,cAEIsR,OACJ,CAEAY,mBAEI,OAAO5iD,KAAKspB,YAChB,CAEAm9C,eAAeyB,EAAaj3B,EAASsH,GAEjC,IAEI,MAAM+G,EAAS,GACf,IAAI8F,EAAS,GAETrd,EAAMmgC,EAAa,GAAG70B,kBAAkBC,YAAYkN,aACpDla,EAAM4hC,EAAa,GAAG70B,kBAAkBC,YAAYgN,aAExD4nB,EAAajyD,QAAOC,GAAsB,OAAnBA,EAAEC,KAAKwO,WAAmBtO,SAAQiP,IACrD,MAAM6iD,EAAK7iD,EAAEkvB,iBACb2zB,EAAG9xD,SAAQq+B,GAAGA,EAAEd,UAAU,QAE1B0L,EAAO75B,KAAKH,GACZ8/B,EAASA,EAAO3C,OAAO0lB,GAEvB,IAAIC,EAAU9iD,EAAE+tB,kBAAkBC,YAAYkN,aAC1C6nB,EAAU/iD,EAAE+tB,kBAAkBC,YAAYgN,aAE9CvY,EAAMuE,QAAQnjB,QAAQg7B,SAASpc,EAAKqgC,GACpC9hC,EAAMgG,QAAQnjB,QAAQk7B,SAAS/d,EAAK+hC,EAAQ,IAGhD,MAAM3B,EAAYp6B,QAAQ2O,KAAK0rB,YAAYrnB,GAAQ,GAAM,OAAM5+B,GAAW,GAAO,GAEjFgmD,EAAUvwD,KAAOnW,KAAKmW,KACtBuwD,EAAUp9C,aAAetpB,KAAKspB,aAC9Bo9C,EAAUr3B,OAASrvC,KAAKspB,aAAa/S,aAErC,MAAM+xD,EAAU,IAAIh8B,QAAQi8B,aAAaxgC,EAAKzB,GACxCkiC,EAASF,EAAQh1B,YAAYG,OAAOjqB,QACpCi/C,EAASD,EAAO17B,SAAS45B,EAAUr3B,OAAO1lB,UAE1CypB,EAAOszB,EAAUrzB,kBAAkBC,YACnCC,EAAkBjH,QAAQkD,OAAOgE,aAAaJ,EAAKK,OAAOv9B,GAAIk9B,EAAKK,OAAOvG,GAAIkG,EAAKK,OAAOhsB,GAChGi/C,EAAUhzB,0BAA0BH,GACpCmzB,EAAU/8C,SAAW8+C,EAAOj/C,QAC5Bk9C,EAAUE,0BAA2B,EACrCF,EAAU7wB,OAAS71C,KAEnBolD,EAAO/uC,SAAQq+B,IACXA,EAAEd,UAAU8yB,EAAU,IAGvBz1B,IAAajxC,KAAKgX,UAAUi6B,UAE3BjxC,KAAKmiD,WAAa,GAClBniD,KAAKmiD,WAAW18B,KAAKihD,IAEjBz1B,IAAajxC,KAAK+U,YAAYk8B,UAElCjxC,KAAKiiD,aAAe,GACpBjiD,KAAKiiD,aAAax8B,KAAKihD,KAIvB1mE,KAAKkiD,aAAe,GACpBliD,KAAKkiD,aAAaz8B,KAAKihD,IAG3B1mE,KAAK0oE,eAAehC,EAAUnuB,GAC9BtF,GAAUC,cAAcwzB,EAC5B,CACA,MAAMj7C,GAEFtQ,QAAQ6D,MAAMyM,EAClB,CACJ,CAEAi9C,eAAehC,EAAUnuB,GAErB,MAAMr4C,EAASwmE,EAAU/zB,UAAU6mB,cAAct5D,OACjD,KAAGyoE,SAASzoE,GAAQ,GAApB,CAIA,IAAI,IAAI2C,EAAE,EAAGA,EAAE3C,EAAQ2C,IACvB,CACI,MAAM+lE,EAAMlC,EAAU/zB,UAAU6mB,aAAa32D,GAC7C,GAAG+lE,EAAItlB,eACP,CACI,MAAMrmD,EAAO2rE,EAAItlB,eAAermD,KAAKogB,MAAM,KAAKH,OAAO,GAAG,GAAGG,MAAM,KAAK,GAClEwrD,EAASnC,EAAUhkB,OAAO9P,kBAAkB31C,GAClD,GAAG4rE,EAECnC,EAAU/zB,SAAS6mB,aAAa32D,GAAKgmE,MAGzC,CACI,MAAMC,EAAS,IAAI7H,GAAAA,GAA4B,GAAEhkE,IAAOypE,EAAUhkB,QAClEomB,EAAO1G,YAAe,IAAI91B,QAAQwX,OAAOvL,EAAMA,EAAMA,GACrDuwB,EAAOzH,SAAW,EAClByH,EAAOxH,UAAY,EACnBwH,EAAOjlB,cAAgB,IAAIvX,QAAQwX,OAAO,EAAG,EAAG,GAChDglB,EAAOvH,sBAAwB,IAC/BuH,EAAO/kB,cAAgB,EACvB+kB,EAAO3H,cAAgByH,EAAItlB,eAC3BojB,EAAU/zB,SAAS6mB,aAAa32D,GAAKimE,EACrCA,EAAOtH,oBAAoBxhE,KAAKgX,UAAU45B,OAAO9wC,aAAaipE,eAAetH,cAAciF,EAAUhkB,QACzG,CACJ,CACJ,CACAgkB,EAAU/zB,SAAS11C,KAAQ,WAAU+C,KAAKmiD,WAAW,GAAG6mB,WAEpDtC,EAAUhkB,OAAO9P,kBAAkB8zB,EAAU/zB,SAAS11C,OAEtDypE,EAAUhkB,OAAOumB,YAAYvC,EAAU/zB,SA/B3C,CAiCJ,CAEAptB,UAEI,IAAI,IAAI1e,KAAK7G,KAAKiiD,aAEdp7C,EAAE0e,UAEN,IAAI,IAAI1e,KAAK7G,KAAKkiD,aAEdr7C,EAAE0e,UAEN,IAAI,IAAI1e,KAAK7G,KAAKmiD,WAEdt7C,EAAE0e,UAGHvlB,KAAKspB,eAEJtpB,KAAKspB,aAAa6sB,SAAWn2C,KAAKspB,aAAa6sB,SAASlgC,QAAOC,GAAKA,GAAKlW,OACzEA,KAAKspB,aAAaklC,OAASxuD,KAAKspB,aAAaklC,OAAOv4C,QAAOC,GAAKA,GAAKlW,OAE7E,EC/IW,MAAMkpE,WAAoBnG,GAErCryB,YAAYp6B,EAAO26B,EAAS6U,EAAShD,GAAO,GAExCd,MAAM1rC,EAAO26B,EAAS6U,EAAShD,GAC/B9iD,KAAK2/D,UAAY,IAAIx2C,GAAAA,IAAQ,EAAE,EAAE,GACjCnpB,KAAKkjE,cAAe,EACpBljE,KAAKi6D,mBAAqB,CAAChpB,EAASkpB,cAAc,YAClDn6D,KAAKw6D,gBAAiB,CAC1B,CAEA2I,+BACI,MAAMlW,EAAKjtD,KAAKsW,OAAOgtD,8BACjBl8C,EAAO6lC,EAAG3mB,IAAIwG,SAASmgB,EAAGllB,KAC7B/nC,KAAK8iD,OAEJ17B,EAAK8lB,EAAI,GAEb,MAAMuG,EAASzzC,KAAKsW,OAAO+8B,kBAAkBC,YAAYwN,YAAYt3B,QAErExpB,KAAK2jE,wCAA0Cr3B,GAAAA,IAAes3B,iBAC1Dx8C,EAAKlR,EAAE,EAAIu9B,EAAOv9B,GACjBkR,EAAKlR,EAAE,EAAIu9B,EAAOv9B,EACnBkR,EAAKK,EAAE,EAAIgsB,EAAOhsB,GACjBL,EAAKK,EAAE,EAAIgsB,EAAOhsB,EAAG,EAAE,GAI5B,MAAMysB,EAAK,IAAI5H,GAAAA,KAAiBllB,EAAKlR,EAAE,EAAIu9B,EAAOv9B,EAAGu9B,EAAOvG,GAAI9lB,EAAKK,EAAE,EAAIgsB,EAAOhsB,GAC5E0sB,EAAK,IAAI7H,GAAAA,KAAiBllB,EAAKlR,EAAE,EAAIu9B,EAAOv9B,EAAGu9B,EAAOvG,EAAG9lB,EAAKK,EAAE,EAAIgsB,EAAOhsB,GAC3Eo8C,EAAK,IAAIv3B,GAAAA,IAAgBllB,EAAKlR,EAAE,EAAIu9B,EAAOv9B,EAAIu9B,EAAOvG,EAAG9lB,EAAKK,EAAE,EAAIgsB,EAAOhsB,GAC3Eq8C,EAAK,IAAIx3B,GAAAA,IAAgBllB,EAAKlR,EAAE,EAAIu9B,EAAOv9B,EAAIu9B,EAAOvG,GAAI9lB,EAAKK,EAAE,EAAIgsB,EAAOhsB,GAC5EwlB,EAAS,CAACiH,EAAGC,EAAG0vB,EAAGC,EAAG5vB,GACtBgG,EAAO5N,GAAAA,IAAoBy3B,YAAY,QAAS,CAAE92B,UAAUjtC,KAAKixC,UACvEiJ,EAAK3B,MAAQ,IAAIjM,GAAAA,IAAe,EAAE,EAAE,GACpC4N,EAAK3wB,QAAQ9B,GAAK,EAClByyB,EAAKzhC,UAAYzY,KAAKkjE,aACtBhpB,EAAKvwB,SAASujB,EAAI,EAElBltC,KAAKgkE,UAAY9pB,EAEjBl6C,KAAKyjE,wCAAyC,EAC9CzjE,KAAK0jE,yBAA0B,CACnC,CAEA3T,OAAOz5C,GAEHtW,KAAKsW,OAASA,EACdtW,KAAKgkE,WAAWz+C,UAChBvlB,KAAKmjE,8BACT,ECjDW,MAAMgG,WAAqB5E,GACtC7zB,cAEIsR,QACAhiD,KAAKopE,WAAa,GAClBppE,KAAKqpE,aAAe,GACpBrpE,KAAKspE,aAAe,EACxB,CAEArmB,eAEIjjD,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,MAAMmV,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAK9D,GAHAmS,EAAIjtC,KAAO43B,EAAK53B,KAChBktC,EAAIltC,KAAO43B,EAAK53B,KAEb43B,EAAK4E,SAAS2Q,eACjB,CACI,MAAMC,EAAUxV,EAAK4E,SAAS2Q,eAAermD,KAAKogB,MAAM,KAAKH,OAAO,GAAG,GAEjEsmC,EAAQxjD,KAAK+U,YAAYk8B,SAAS2B,kBAAkB2Q,GAC1D,GAAIC,EAWAJ,EAAIzQ,SAAW6Q,MAVnB,CACI,MAAMC,EAAS,IAAInX,QAAQoX,iBAAiBH,EAAQvjD,KAAK+U,YAAYk8B,UAC/D0S,EAAS,IAAIrX,QAAQsX,QAAQ7V,EAAK4E,SAAS2Q,eAAermD,KAAK+C,KAAK+U,YAAYk8B,UACtFwS,EAAOH,eAAiBK,EACxBF,EAAOI,cAAgB,IAAIvX,QAAQwX,OAAO,EAAG,EAAG,GAChDL,EAAOM,cAAgB,EACvBX,EAAIzQ,SAAW8Q,CACnB,CAMA,MAAMO,EAAQhkD,KAAK+W,YAAYk6B,SAAS2B,kBAAkB2Q,GAC1D,GAAIS,EAWAX,EAAI1Q,SAAWqR,MAVnB,CACI,MAAMP,EAAS,IAAInX,QAAQoX,iBAAiBH,EAAQvjD,KAAK+W,YAAYk6B,UAC/D0S,EAAS,IAAIrX,QAAQsX,QAAQ7V,EAAK4E,SAAS2Q,eAAermD,KAAK+C,KAAK+W,YAAYk6B,UACtFwS,EAAOH,eAAiBK,EACxBF,EAAOI,cAAgB,IAAIvX,QAAQwX,OAAO,EAAG,EAAG,GAChDL,EAAOM,cAAgB,EACvBV,EAAI1Q,SAAW8Q,CACnB,CAKJ,CAEAL,EAAIjV,uBACJiV,EAAIhV,WAAa,EACjBgV,EAAImmB,WAAa,IAAIj9B,QAAQ+L,OAAO,KAAO,KAAO,KAAO,GAEzDgL,EAAIlV,uBACJkV,EAAIjV,WAAa,EACjBiV,EAAIkmB,WAAa,IAAIj9B,QAAQ+L,OAAO,KAAO,KAAO,KAAO,GAEzDr4C,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,GAEG,QAAvBtV,EAAK53B,KAAKwO,WAETy+B,EAAI3qC,WAAY,EAChB4qC,EAAI5qC,WAAY,EACpB,GAER,CAEA86C,kBAGOvzD,KAAKopE,WAAWlpE,OAAS,GAExBF,KAAKwpD,UAAUnzC,SAAQq+B,GAAGA,EAAEnvB,YAEhC,MAAM6jD,EAAa,GAInB,GAHAppE,KAAKmiD,WAAWlsC,QAAOC,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBtO,SAAQH,IACzDkzD,EAAW3jD,KAAKvP,EAAEsT,QAAQ,IAE3B4/C,EAAWlpE,OAAS,EACnB,OAOJ,GANAkpE,EAAW/yD,SAAQH,GAAGA,EAAEy8B,SAAW3yC,KAAKgX,UAAUi6B,SAAS2B,kBAAkB,oBAC7E5yC,KAAK6kE,iBAAiBuE,EAAWA,EAAW,GAAG/5B,QAC/CrvC,KAAKopE,WAAaA,EAIfppE,KAAKqpE,aAAanpE,OAAS,EAE1B,OAEJ,MAAMmpE,EAAe,GAIrB,GAHArpE,KAAKiiD,aAAahsC,QAAOC,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBtO,SAAQH,IAC3DmzD,EAAa5jD,KAAKvP,EAAEsT,QAAQ,IAE7B6/C,EAAanpE,OAAS,EACrB,OAOJ,GANAmpE,EAAahzD,SAAQH,GAAGA,EAAEy8B,SAAW3yC,KAAK+U,YAAYk8B,SAAS2B,kBAAkB,oBACjF5yC,KAAK6kE,iBAAiBwE,EAAaA,EAAa,GAAGh6B,QACnDrvC,KAAKqpE,aAAeA,EAIjBrpE,KAAKspE,aAAappE,OAAS,EAE1B,OAEJ,MAAMopE,EAAe,GACrBtpE,KAAKkiD,aAAajsC,QAAOC,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBtO,SAAQH,IAC3DozD,EAAa7jD,KAAKvP,EAAEsT,QAAQ,IAE7B8/C,EAAappE,OAAS,IAEzBopE,EAAajzD,SAAQH,GAAGA,EAAEy8B,SAAW3yC,KAAK+W,YAAYk6B,SAAS2B,kBAAkB,oBACjF5yC,KAAK6kE,iBAAiByE,EAAaA,EAAa,GAAGj6B,QACnDrvC,KAAKspE,aAAeA,EAExB,CAEAzE,iBAAiBuE,EAAW1W,GAErB0W,EAAWlpE,OAAS,GAGvBkpE,EAAW/yD,SAAQmzC,IACfvW,GAAUY,cAAc2V,GACxBvW,GAAU+B,0BAA0BwU,EAAUkJ,GAC9ClJ,EAAUna,OAAS,KACnBma,EAAU1tD,GAAK,eACf0tD,EAAU7C,UAAY6C,EAAU7/B,SAASH,QACzCggC,EAAUlgC,aAAetpB,KAAKspB,aAC9BkgC,EAAUkJ,SAAWA,EACrBlJ,EAAUna,OAASqjB,EACnBlJ,EAAU3T,OAAS71C,KACnBwpD,EAAU/wC,WAAY,EACtB+wC,EAAUhzC,YAAW,GACrBgzC,EAAU0L,KAAO,IAAIgU,GAAY1f,EAAWA,EAAU9G,OAAO,KAAMgQ,EAAShQ,QAAU1iD,KAAKgX,UAAUi6B,UACrGuY,EAAUzV,oBAAoB,GAOtC,CAEAsf,uBAEIrzD,KAAKopE,WAAW/yD,SAAQq+B,IACpBA,EAAEprB,aAAetpB,KAAKspB,YAAY,IAEtCtpB,KAAKqpE,aAAahzD,SAAQq+B,IACtBA,EAAEprB,aAAetpB,KAAKspB,YAAY,IAEtCtpB,KAAKspE,aAAajzD,SAAQq+B,IACtBA,EAAEprB,aAAetpB,KAAKspB,YAAY,GAE1C,CAEAnN,mBAAmB80B,GAEMjxC,KAAKqiD,gBAAgBpR,GAA1C,MACMu4B,EAAgBxpE,KAAKuiD,iBAAiBtR,GACtCw4B,EAAgBzpE,KAAKopE,WACrBM,EAAU,GAChB,IAAIrP,GAAU,EACd,MAAMsP,EAAcF,EAAc,IAAIlgD,QAAQC,QAC9C,IAAImgD,EACA,OACJ,IAAI,IAAIj1B,KAAK+0B,EACb,CACI/0B,EAAEnrB,QAAQrT,GAAK,OACfw+B,EAAEnrB,QAAQ9B,GAAK,OACf,MAAMmiD,EAAMt9B,QAAQ6W,IAAIvO,SAASF,GACjCg1B,EAAQjkD,KAAKmkD,GACVl1B,EAAEwgB,KAAK+E,mBAAmB/5D,OAAS,IAClCm6D,GAAU,EAClB,CAEA,IAAIA,EACA,OAEJ,MAAMwP,EAAQ,GACd,IAAI,IAAID,KAAOF,EAEXG,EAAMpkD,KAAKmkD,EAAI70B,OAAO,WAAW,KAAK9D,GAAS,IAEnD,MAAM23B,EAAM33B,EAAS2B,kBAAkB,eACjCpsB,EAAS8lB,QAAQ2O,KAAK0rB,YAAYkD,GAAO,GAAM,OAAMnpD,GAAW,GAAO,GAC7E8F,EAAO6oB,OAASm6B,EAAc,GAAGn6B,OACjC7oB,EAAO1qB,GAAK,WACZ0qB,EAAOmsB,SAAWi2B,EAElB,MAAM3b,EAAKzmC,EAAO6sB,kBAAkBC,YAC9Bw2B,EAAU,KAChB,IAAI3xD,EAA2B,EAAlB80C,EAAGvX,WAAWxI,EAE3B,MAAM68B,EAAKD,EAAQ3xD,EAAO,IAC1BqO,EAAO+C,QAAQ2jB,EAAI68B,EACnBvjD,EAAOmD,SAASujB,EAAI,IAAM48B,EAAQ,EAAI,IACtCtjD,EAAOmlC,WAAU,GACjBnlC,EAAOolC,iBAAkB,EAEzB,IAAI,IAAIlX,KAAK+0B,EACb,CACI/0B,EAAEnrB,QAAUogD,EAAYngD,QACxB,MAAM0rC,EAAOxgB,EAAEwgB,KACfA,EAAK+E,mBAAmBx0C,KAAKe,EACjC,CACJ,CAEAjB,UAEOvlB,KAAKopE,YACJppE,KAAKopE,WAAW/yD,SAAQiP,IACpBA,EAAE4vC,MAAM1V,SACRl6B,EAAEC,SAAS,IAIhBvlB,KAAKqpE,cACJrpE,KAAKqpE,aAAahzD,SAAQiP,IACtBA,EAAE4vC,MAAM1V,SACRl6B,EAAEC,SAAS,IAIhBvlB,KAAKspE,cACJtpE,KAAKspE,aAAajzD,SAAQiP,IACtBA,EAAE4vC,MAAM1V,SACRl6B,EAAEC,SAAS,IAInBvlB,KAAKiiD,aAAa5rC,SAAQxP,GAAGA,EAAE0e,YAC/BvlB,KAAKkiD,aAAa7rC,SAAQxP,GAAGA,EAAE0e,YAC/BvlB,KAAKmiD,WAAW9rC,SAAQxP,GAAGA,EAAE0e,WACjC,EC3OW,MAAMykD,WAAmBxyB,GACpC9G,cAEIsR,QACAhiD,KAAKiiD,aAAe,GACpBjiD,KAAKkiD,aAAe,GACpBliD,KAAKmiD,WAAa,GAElBniD,KAAK+U,YAAc,KACnB/U,KAAK+W,YAAc,KACnB/W,KAAKgX,UAAY,KAEjBhX,KAAKuW,aAAe,KACpBvW,KAAK0pB,eAAiB,KACtB1pB,KAAK6pB,eAAiB,KAEtB7pB,KAAKoiD,SAAU,EACfpiD,KAAK0tD,eAAiB,KACtB1tD,KAAKspB,aAAe,KACpBtpB,KAAK2tD,WAAa,EAClB3tD,KAAK82C,eAAgB,EAErB92C,KAAKmzD,QAAU,GACfnzD,KAAKozD,QAAU,GACfpzD,KAAKszD,SAAW,EACpB,CAEAjsC,UAEI,MAAM4lC,EAAKjtD,KAAKmiD,WAAW/8B,MAAKlP,GAAwB,UAArBA,EAAEC,MAAMwO,WAAsB2+C,8BAC3Dl8C,EAAO6lC,EAAG3mB,IAAIwG,SAASmgB,EAAGllB,KAChC,OAAO3gB,CACX,CAEA6iD,mBAEI,MAAMC,EAAYlqE,KAAKozD,QAAQn9C,QAAOC,GAAGA,EAAEC,KAAK4M,SAAS8F,SAAS,UAC/DqhD,EAAUhqE,OAAS,IAKtBgqE,EAAU7zD,SAAQ8zD,IACdA,EAAKlmB,UAAUjkD,KAAK+U,YAAYk8B,UAAS,GACzCk5B,EAAKlmB,UAAUjkD,KAAK+W,YAAYk6B,UAAS,GACzCk5B,EAAKlmB,UAAUjkD,KAAKgX,UAAUi6B,UAAS,EAAM,IAG9CjxC,KAAKozD,QAAQlzD,OAAS,IAErBgqE,EAAUlqE,KAAK2tD,YAAY1J,UAAUjkD,KAAK+U,YAAYk8B,UAAS,GAC/Di5B,EAAUlqE,KAAK2tD,YAAY1J,UAAUjkD,KAAK+W,YAAYk6B,UAAS,GAC/Di5B,EAAUlqE,KAAK2tD,YAAY1J,UAAUjkD,KAAKgX,UAAUi6B,UAAS,IAErE,CAEAm5B,aAEI,MAAMC,EAAY/9B,QAAQka,YAAYxT,UAAU,KAAM,CAAC5rB,KAAO,GAAGpnB,KAAK+U,YAAYk8B,UAClFo5B,EAAU5xD,WAAY,EACtB4xD,EAAUx0B,OAAS71C,KACnBqqE,EAAU7zD,YAAW,GACrB,MAAM8zD,EAAYh+B,QAAQka,YAAYxT,UAAU,KAAM,CAAC5rB,KAAO,GAAGpnB,KAAK+W,YAAYk6B,UAClFq5B,EAAU7xD,WAAY,EACtB6xD,EAAUz0B,OAAS71C,KACnBsqE,EAAU9zD,YAAW,GAErBxW,KAAK0pB,eAAiB2gD,EACtBrqE,KAAK6pB,eAAiBygD,CAC1B,CAEAnuD,qBAEI,MAAM2vC,EAAQ9rD,KAAKmiD,WAAWlsC,QAAOC,GAAwB,SAArBA,EAAEC,MAAMwO,WAC1CjQ,EAAQ1U,KAAKmiD,WAAWlsC,QAAOC,GAAwB,SAArBA,EAAEC,MAAMwO,WAC1C+0C,EAAS15D,KAAKmiD,WAAWlsC,QAAOC,GAAwB,UAArBA,EAAEC,MAAMwO,WAEjDmnC,EAAMz1C,SAAQ20C,IACV,MAAM+C,EAAM,IAAIlI,GAChBkI,EAAI53C,KAAO60C,EAAE70C,KACb43C,EAAI5L,WAAW18B,KAAKulC,GACpB+C,EAAI/2C,UAAYhX,KAAKgX,UACrB+2C,EAAIh5C,YAAc/U,KAAK+U,YACvBg5C,EAAIh3C,YAAc/W,KAAK+W,YACvBg3C,EAAIzkC,aAAetpB,KAAKspB,aACxBykC,EAAIjH,cACJiH,EAAI9K,eAEJ8K,EAAI9L,aAAa5rC,SAAQH,IACrBA,EAAEm5B,OAASrvC,KAAK0pB,eAChBxT,EAAE2/B,OAASkY,EACX73C,EAAEC,KAAO60C,EAAE70C,KACXD,EAAEuC,WAAY,CAAI,IAEtBs1C,EAAI7L,aAAa7rC,SAAQH,IACrBA,EAAEm5B,OAASrvC,KAAK6pB,eAChB3T,EAAE2/B,OAASkY,EACX73C,EAAEC,KAAO60C,EAAE70C,KACXD,EAAEuC,WAAY,CAAI,IAGtBzY,KAAKiiD,aAAejiD,KAAKiiD,aAAaQ,OAAOsL,EAAI9L,cACjDjiD,KAAKkiD,aAAeliD,KAAKkiD,aAAaO,OAAOsL,EAAI7L,cACjD8I,EAAEnV,OAASkY,EAEX/tD,KAAKmzD,QAAQ1tC,KAAKsoC,EAAI,IAE1B,IAAI,IAAIlrD,EAAI,EAAGA,EAAE6R,EAAMxU,OAAQ2C,IAC/B,CACI,MAAMkrD,EAAM,IAAIoX,GACVtrB,EAAM75C,KAAKmiD,WAAW/8B,MAAKlP,GAAGA,EAAEC,KAAKq1C,aAAe92C,EAAM7R,GAAGsT,KAAKlZ,OACxE8wD,EAAI53C,KAAOzB,EAAM7R,GAAGsT,KACpB43C,EAAI5L,WAAW18B,KAAK/Q,EAAM7R,IAC1BkrD,EAAI5L,WAAW18B,KAAKo0B,GACpBkU,EAAI/2C,UAAYhX,KAAKgX,UACrB+2C,EAAIh5C,YAAc/U,KAAK+U,YACvBg5C,EAAIh3C,YAAc/W,KAAK+W,YACvBg3C,EAAIzkC,aAAetpB,KAAKspB,aACxB5U,EAAM7R,GAAGgzC,OAASkY,EAClB,MAAM1e,EAASrvC,KAAKmzD,QAAQ/tC,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAAS8wD,EAAI53C,KAAKq1C,aAC7DuC,EAAI1e,OAASA,QAEP0e,EAAI9K,eACV8K,EAAI9L,aAAa5rC,SAAQH,IACrBA,EAAEm5B,OAASrvC,KAAK0pB,eAChBxT,EAAE2/B,OAAS71C,IAAI,IAEnB+tD,EAAI7L,aAAa7rC,SAAQH,IACrBA,EAAEm5B,OAASrvC,KAAK6pB,eAChB3T,EAAE2/B,OAAS71C,IAAI,IAGnB+tD,EAAIwF,gBAAgBvzD,MACpBA,KAAKiiD,aAAejiD,KAAKiiD,aAAaQ,OAAOsL,EAAI9L,cACjDjiD,KAAKkiD,aAAeliD,KAAKkiD,aAAaO,OAAOsL,EAAI7L,cAEjDliD,KAAKozD,QAAQ3tC,KAAKsoC,EACtB,CACA2L,EAAOrjD,SAAQ2S,IACX,MAAM+kC,EAAM,IAAIob,GACVoB,EAAOvqE,KAAKmiD,WAAWlsC,QAAOC,GAAGA,EAAEC,KAAKq1C,aAAexiC,EAAE7S,KAAKlZ,OACpE8wD,EAAI53C,KAAO6S,EAAE7S,KACb43C,EAAI5L,WAAW18B,KAAKuD,GACpB+kC,EAAI5L,WAAa4L,EAAI5L,WAAWM,OAAO8nB,GACvCxc,EAAI/2C,UAAYhX,KAAKgX,UACrB+2C,EAAIh5C,YAAc/U,KAAK+U,YACvBg5C,EAAIh3C,YAAc/W,KAAK+W,YACvBg3C,EAAIzkC,aAAetpB,KAAKspB,aACxBN,EAAE6sB,OAASkY,EAEXA,EAAI9K,eACJ8K,EAAI9L,aAAa5rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAK0pB,iBAC5CqkC,EAAI7L,aAAa7rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAK6pB,iBAC5CkkC,EAAI9L,aAAa5rC,SAAQH,GAAGA,EAAE2/B,OAAS71C,OACvC+tD,EAAI7L,aAAa7rC,SAAQH,GAAGA,EAAE2/B,OAAS71C,OAEvC+tD,EAAIwF,kBACJvzD,KAAKiiD,aAAejiD,KAAKiiD,aAAaQ,OAAOsL,EAAI9L,cACjDjiD,KAAKkiD,aAAeliD,KAAKkiD,aAAaO,OAAOsL,EAAI7L,cAEjDliD,KAAKszD,SAAS7tC,KAAKsoC,EAAI,IAE3B/tD,KAAKiqE,kBAET,CAGAlnB,aAAanD,EAAaoD,EAAS9sC,EAAGuR,EAAGzR,GAErC,IAAIxN,EAAkBwN,EAAQC,QAAOqP,GAAKA,EAAEixB,cAAgBqJ,IAGxDF,EAAQ,GACZ,MAAM+Z,EAASz5D,KAAKmiD,WAAWlsC,QAAOC,GAAwB,QAArBA,EAAEC,MAAMwO,UAAsBzO,EAAEC,MAAMq1C,WAAW3iC,SAAS,WAOnG,OANA4wC,EAAOpjD,SAAQiP,IAEX,IAAIu0B,EAAMv0B,EAAE+tB,kBAAkBC,YAC9BoM,EAAMj6B,KAAK,IAAI6mB,QAAQiY,YAAY,IAAIjY,QAAQnjB,QAAQjT,EAAI2jC,EAAImO,gBAAgB9xC,EAAG,EAAGuR,EAAIoyB,EAAImO,gBAAgBvgC,GAAI,IAAI6kB,QAAQnjB,QAAQjT,EAAI2jC,EAAImO,gBAAgB9xC,EAAG,EAAGuR,EAAIoyB,EAAImO,gBAAgBvgC,IAAI,IAG5LznB,KAAKy/C,YAAYC,EAAOl3C,EAAgBy/C,SAAQ3iC,GAAKA,EAAE6wB,WAAWyJ,EAAaoD,EAAS9sC,EAAGuR,EACtG,CAEAm7B,mBAEI,OAAO5iD,IACX,CAEA6iD,eAAe1R,GAEX,OAAGA,EAAM2R,KAEc,OAAhB3R,EAAM/6B,MAEEpW,KAAKiiD,aAILjiD,KAAKkiD,aAKTliD,KAAKmiD,UAEpB,CAEA3I,gBAEI,OAAGx5C,KAAKozD,QAAQn9C,QAAOC,GAAGA,EAAEC,KAAK4M,SAAS8F,SAAS,UAAS3oB,OAAS,EAE1D,CACH,CACIlD,KAAK,SACLmgD,MAAMn9C,KAAK0+C,cACb,CACE1hD,KAAK,SACLmgD,MAAOn9C,KAAKg3C,QACd,CACEh6C,KAAK,aACLmgD,MAAMn9C,KAAK+2C,WACb,CACE/5C,KAAK,WACLmgD,MAAMn9C,KAAKq3C,SACb,CACEr6C,KAAK,WACLmgD,MAAMn9C,KAAKm3C,SACb,CACEn6C,KAAK,YACLmgD,MAAMn9C,KAAKu3C,UACb,CACEv6C,KAAK,SACLmgD,MAAMn9C,KAAKw/C,SAMZ,CACH,CACIxiD,KAAK,SACLmgD,MAAMn9C,KAAK0+C,cACb,CACE1hD,KAAK,SACLmgD,MAAOn9C,KAAKg3C,QACd,CACEh6C,KAAK,aACLmgD,MAAMn9C,KAAK+2C,WACb,CACE/5C,KAAK,WACLmgD,MAAMn9C,KAAKq3C,SACb,CACEr6C,KAAK,WACLmgD,MAAMn9C,KAAKm3C,SACb,CACEn6C,KAAK,SACLmgD,MAAMn9C,KAAKw/C,QAI3B,CAEAzH,mBAAmB5G,GAEf,IAAIuI,EAAkB15C,KAAKk5C,mBAAmB/H,EAAMF,UAChDkW,EAASnnD,KAAKq5C,yBAEd+N,EAAYpnD,KAAKg9C,kBAAkBtD,EAAiBvI,EAAOnxC,KAAKmW,KAAKwO,SAAU3kB,KAAKw5C,iBACxF2N,EAAO7N,QAAQX,WAAWyO,GAE1BpnD,KAAKy3C,cAAchyB,KAAK0hC,EAAO7N,SAE/B,IAAIO,EAAM75C,KAAK85C,iBAAiB3I,GAC5BkW,EAAU,IAAI/a,QAAQ2O,KAAK,WAAY9J,EAAMF,UAWjD,OAVAoW,EAAQ19B,SAAWkwB,EAAIpG,OACvBzzC,KAAK03C,mBAAmBjyB,KAAK4hC,GAE7BrnD,KAAKy3C,cAAcphC,SAAQ6kC,IAEvBxB,EAAgBf,WAAWuC,EAAM,IAGrCl7C,KAAKg4C,cAAc0B,GAEZ15C,KAAKy3C,aAChB,CAEA+H,OAAOrO,EAAO0E,GAEV1E,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA4B/I,EAAO2P,GAAWC,aAAa5P,EAAOvsB,gBAC5GusB,EAAOtwB,SACX,CAEAyxB,OAAO7F,EAAO0E,GAENA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA6B/I,IAC3E,IAAIhG,EAAWgG,EAAOnsB,eAAemmB,SAAS3C,EAC9C2I,EAAOnsB,eAAemmB,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,WAAW,IACvEtJ,EAAOhsB,eAAegmB,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,WAAW,IACvEtJ,EAAOt/B,aAAas5B,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,WAAW,IAErEhO,EAAMiO,mBACN3oC,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEAqgC,UAAU5F,EAAO0E,GAETA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAAgC/I,IAC9E,IAAIhG,EAAWgG,EAAOnsB,eAAemmB,SAAS3C,EAC9C2I,EAAOnsB,eAAemmB,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,UAAU,IACtEtJ,EAAOhsB,eAAegmB,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,UAAU,IACtEtJ,EAAOt/B,aAAas5B,SAAS3C,EAAI2C,EAAWvD,QAAQ4S,MAAMC,UAAU,IAEpEhO,EAAMiO,mBACN3oC,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEAygC,QAAQhG,EAAO0E,GAEPA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA8B/I,IAC5EA,EAAOnsB,eAAeH,QAAQ9B,IAAM,EACpCouB,EAAOhsB,eAAeN,QAAQ9B,IAAM,EACpCouB,EAAOt/B,aAAagT,QAAQ9B,IAAM,EAElC0pB,EAAMiO,mBACN3oC,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEA2gC,QAAQlG,EAAO0E,GAEPA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA8B/I,IAC5EA,EAAOnsB,eAAeH,QAAQrT,IAAM,EACpC2/B,EAAOhsB,eAAeN,QAAQrT,IAAM,EACpC2/B,EAAOt/B,aAAagT,QAAQrT,IAAM,EAElCi7B,EAAMiO,mBACN3oC,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEA6gC,SAASpG,EAAO0E,GAERA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA+B/I,IAC7E,MAAMq0B,EAAYr0B,EAAOud,QAAQn9C,QAAOC,GAAGA,EAAEC,KAAK4M,SAAS8F,SAAS,UACjEqhD,EAAUhqE,OAAS,IAElB21C,EAAO8X,YAAc9X,EAAO8X,WAAW,GAAIuc,EAAUhqE,QAEzD21C,EAAOo0B,mBACPxzD,YAAW,KACP06B,EAAMz6B,YAAY,GACnB,IACP,CAEAusC,eACIjjD,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,GAA0B,SAAvBA,EAAK53B,KAAKwO,UAA8C,SAAvBopB,EAAK53B,KAAKwO,UAAuBopB,EAAK53B,KAAKq1C,WAAW3iC,SAAS,SAAkC,UAAvBklB,EAAK53B,KAAKwO,SAEpH,OAEJ,MAAMu+B,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAW9D,GATAmS,EAAIjtC,KAAO43B,EAAK53B,KAChBktC,EAAIltC,KAAO43B,EAAK53B,KAEhBitC,EAAIvN,OAAS71C,KACbqjD,EAAIxN,OAAS71C,KAEbojD,EAAI/T,OAASrvC,KAAK0pB,eAClB25B,EAAIhU,OAASrvC,KAAK6pB,eAEfkkB,EAAK4E,SAAS2Q,eACjB,CACI,MAAMC,EAAUxV,EAAK4E,SAAS2Q,eAAermD,KAAKogB,MAAM,KAAKH,OAAO,GAAG,GAEjEsmC,EAAQxjD,KAAK+U,YAAYk8B,SAAS2B,kBAAkB2Q,GAC1D,GAAIC,EAWAJ,EAAIzQ,SAAW6Q,MAVnB,CACI,MAAMC,EAAS,IAAInX,QAAQoX,iBAAiBH,EAAQvjD,KAAK+U,YAAYk8B,UAC/D0S,EAAS,IAAIrX,QAAQsX,QAAQ7V,EAAK4E,SAAS2Q,eAAermD,KAAK+C,KAAK+U,YAAYk8B,UACtFwS,EAAOH,eAAiBK,EACxBF,EAAOI,cAAgB,IAAIvX,QAAQwX,OAAO,EAAG,EAAG,GAChDL,EAAOM,cAAgB,EACvBX,EAAIzQ,SAAW8Q,CACnB,CAMA,MAAMO,EAAQhkD,KAAK+W,YAAYk6B,SAAS2B,kBAAkB2Q,GAC1D,GAAIS,EAWAX,EAAI1Q,SAAWqR,MAVnB,CACI,MAAMP,EAAS,IAAInX,QAAQoX,iBAAiBH,EAAQvjD,KAAK+W,YAAYk6B,UAC/D0S,EAAS,IAAIrX,QAAQsX,QAAQ7V,EAAK4E,SAAS2Q,eAAermD,KAAK+C,KAAK+W,YAAYk6B,UACtFwS,EAAOH,eAAiBK,EACxBF,EAAOI,cAAgB,IAAIvX,QAAQwX,OAAO,EAAG,EAAG,GAChDL,EAAOM,cAAgB,EACvBV,EAAI1Q,SAAW8Q,CACnB,CAKJ,CAE0B,WAAvB1V,EAAK53B,KAAKwO,WAETy+B,EAAIzQ,SAAW3yC,KAAK+U,YAAYk8B,SAAS2B,kBAAkB,WAC3DyQ,EAAI1Q,SAAW3yC,KAAK+W,YAAYk6B,SAAS2B,kBAAkB,YAGrC,QAAvB7E,EAAK53B,KAAKwO,WAETy+B,EAAI3qC,WAAY,EAChB4qC,EAAI5qC,WAAY,GAGpBzY,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,EAAI,GAEnC,CAEA9R,YAAYN,EAAS/zC,GAEjB,GAAG8C,KAAKoiD,SAEJ,GAAGnR,IAAajxC,KAAK+U,YAAYk8B,SACjC,CACI,IAAI2Y,EAAQ1sD,EAAMssB,QAClBogC,EAAM1c,EAAI,IACVltC,KAAK0pB,eAAeg7B,oBAAoBkF,EAC5C,MACK,GAAG3Y,IAAajxC,KAAK+W,YAAYk6B,SACtC,CACI,IAAI4Y,EAAQ3sD,EAAMssB,QAClBqgC,EAAM3c,EAAI,IACVltC,KAAK6pB,eAAe66B,oBAAoBmF,EAC5C,MAGJ,CACQD,EAAQ1sD,EAAMssB,QAClBogC,EAAM1c,EAAIltC,KAAK0pB,eAAei7B,iBAAiBzX,EAC/CltC,KAAK0pB,eAAeg7B,oBAAoBkF,GACpCC,EAAQ3sD,EAAMssB,QAClBqgC,EAAM3c,EAAIltC,KAAK6pB,eAAe86B,iBAAiBzX,EAC/CltC,KAAK6pB,eAAe66B,oBAAoBmF,EAC5C,CACA3sD,EAAMgwC,EAAI+D,IAAajxC,KAAK+U,YAAYk8B,SAAW,EAAI,IACvDjxC,KAAKuW,aAAamuC,oBAAoBxnD,EAAMssB,QAChD,CAEAy6B,UAAUhT,EAAS/zC,GAEZ+zC,IAAajxC,KAAK+U,YAAYk8B,SAE7BjxC,KAAK0pB,eAAelT,WAAWtZ,GAE3B+zC,IAAajxC,KAAK+W,YAAYk6B,SAElCjxC,KAAK6pB,eAAerT,WAAWtZ,GAI/B8C,KAAKuW,aAAaC,WAAWtZ,EAErC,CAEAq2D,kBAEI,GAAGvzD,KAAKwpD,UAEJ,OAEJ,MAAMA,EAAYxpD,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,UAAsBzO,EAAEC,KAAKq1C,WAAWluC,QAAQ,IAAI,IAAIuL,SAAS7oB,KAAKmW,KAAKlZ,SAAQusB,QACpI,IAAIggC,EACA,OAKJ,GAJAA,EAAU7W,SAAW3yC,KAAKgX,UAAUi6B,SAAS2B,kBAAkB,kBAC/D5yC,KAAK6kE,iBAAiBrb,EAAUxpD,KAAKuW,cACrCvW,KAAKwpD,UAAYA,EAEdxpD,KAAKypD,YAEJ,OAEJ,MAAMA,EAAczpD,KAAKiiD,aAAa78B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,UAAsBzO,EAAEC,KAAKq1C,WAAWluC,QAAQ,IAAI,IAAIuL,SAAS7oB,KAAKmW,KAAKlZ,SAAQusB,QACxI,IAAIigC,EACA,OAKJ,GAJAA,EAAY9W,SAAW3yC,KAAK+U,YAAYk8B,SAAS2B,kBAAkB,kBACnE5yC,KAAK6kE,iBAAiBpb,EAAYzpD,KAAK0pB,gBACvC1pB,KAAKypD,YAAcA,EAEhBzpD,KAAK0pD,YAEJ,OAEJ,MAAMA,EAAc1pD,KAAKkiD,aAAa98B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,UAAsBzO,EAAEC,KAAKq1C,WAAWluC,QAAQ,IAAI,IAAIuL,SAAS7oB,KAAKmW,KAAKlZ,SAAQusB,QACpIkgC,IAEJA,EAAY/W,SAAW3yC,KAAK+W,YAAYk6B,SAAS2B,kBAAkB,kBACnE5yC,KAAK6kE,iBAAiBnb,EAAY1pD,KAAK6pB,gBACvC7pB,KAAK0pD,YAAcA,EACvB,CAEAmb,iBAAiBrb,EAAUkJ,GAEvBlJ,EAAUna,OAAS,KACnBma,EAAU1tD,GAAK,eACf0tD,EAAU7C,UAAY6C,EAAU7/B,SAASH,QACzCggC,EAAUlgC,aAAetpB,KAAKspB,aAC9BkgC,EAAUkJ,SAAWA,EACrBlJ,EAAUna,OAASqjB,EACnBlJ,EAAU3T,OAAS71C,KACnBwpD,EAAU/wC,WAAY,EACtB+wC,EAAUhzC,YAAW,GACrBgzC,EAAU0L,KAAO,IAAIgU,GAAY1f,EAAWA,EAAU9G,OAAO,KAAMgQ,GAAY1yD,KAAKspB,aAAa/S,cACjGizC,EAAU0L,KAAKsF,gBAAiB,CACpC,CAGAhH,iBAAiBp9C,GAEA,OAAVA,GAECpW,KAAK6pB,eAAerT,YAAW,GAC/BxW,KAAK6pB,eAAeF,SAAW3pB,KAAK0pB,eAAeC,SAASH,QAC5DxpB,KAAK6pB,eAAeF,SAASujB,EAAI,IAIjCltC,KAAK0pB,eAAelT,YAAW,GAC/BxW,KAAK0pB,eAAeC,SAAW3pB,KAAK6pB,eAAeF,SAASH,QAC5DxpB,KAAK0pB,eAAeC,SAASujB,EAAI,GAGrC,IAAIoS,EAASt/C,KAAKiiD,aACL,OAAV7rC,IAECkpC,EAASt/C,KAAKkiD,cAElB5C,EAAOjpC,SAAQ03B,IAKX,GAJyB,QAAtBA,EAAK53B,KAAKwO,UAA4C,QAAtBopB,EAAK53B,KAAKwO,UAA4C,SAAtBopB,EAAK53B,KAAKwO,WAEzEopB,EAAKt1B,WAAY,GAElBs1B,EAAK4E,SACR,CACI,MAAM63B,EAAUz8B,EAAK4E,SAASnpB,QAC9BghD,EAAQ7J,MAAQ,GAChB5yB,EAAK4E,SAAW63B,EAChBz8B,EAAKw7B,WAAa,IAAIj9B,QAAQ+L,OAAO,EAAG,EAAG,EAAG,GAClD,IAER,CAEA9yB,UAEOvlB,KAAKwpD,YAEJxpD,KAAKwpD,UAAU0L,KAAK1V,SACpBx/C,KAAKwpD,UAAUjkC,WAEhBvlB,KAAKypD,cAEJzpD,KAAKypD,YAAYyL,KAAK1V,SACtBx/C,KAAKypD,YAAYlkC,WAElBvlB,KAAK0pD,cAEJ1pD,KAAK0pD,YAAYwL,KAAK1V,SACtBx/C,KAAK0pD,YAAYnkC,WAGrBvlB,KAAKozD,QAAQ/8C,SAAQiP,GAAGA,EAAEC,YAC1BvlB,KAAKszD,SAASj9C,SAAQiP,GAAGA,EAAEC,YAE3BvlB,KAAKuW,cAAcgP,UACnBvlB,KAAK0pB,gBAAgBnE,UACrBvlB,KAAK6pB,gBAAgBtE,UAElBvlB,KAAKspB,eAEJtpB,KAAKspB,aAAa6sB,SAAWn2C,KAAKspB,aAAa6sB,SAASlgC,QAAOC,GAAKA,GAAKlW,OACzEA,KAAKspB,aAAagjC,MAAQtsD,KAAKspB,aAAagjC,MAAMr2C,QAAOC,GAAKA,GAAKlW,OAE3E,CAEA85C,iBAAiB3I,GAEb,IAAImC,EAAc,KAClB,GAAY,MAATnC,EAEC,IAAImO,EAASt/C,KAAKmiD,gBAIlB,GAAkB,MAAfhR,EAAM/6B,MACDkpC,EAASt/C,KAAKiiD,kBAEd3C,EAASt/C,KAAKkiD,aAqB1B,OAlBA5C,EAAOjpC,SAAQ03B,IACX,MAAM8L,EAAM9L,EAAKsF,kBAAkBC,YAEnC,IAAIkN,EAAe3G,EAAI2G,aACnBF,EAAezG,EAAIyG,aAIvB,GAHAE,EAAatT,EAAI,EACjBoT,EAAapT,EAAI,EAEC,MAAfoG,EACH,CACI,IAAI4Q,EAAS5X,QAAQnjB,QAAQg7B,SAAS7Q,EAAYsN,QAASJ,GACvD4D,EAAS9X,QAAQnjB,QAAQk7B,SAAS/Q,EAAYuN,QAASP,GAE3DhN,EAAYgR,YAAYJ,EAAQE,EACpC,MAEI9Q,EAAc,IAAIhH,QAAQiY,YAAY/D,EAAcF,EAAa,IAElEhN,CACX,CAEAkR,uBAAuBrT,GAEnB,IAAImC,EAAc,KAClB,GAAkB,MAAfnC,EAAM/6B,MACL,IAAIkpC,EAASt/C,KAAKiiD,kBAEd3C,EAASt/C,KAAKkiD,aAoBtB,OAlBA5C,EAAOjpC,SAAQ03B,IACX,MAAM8L,EAAM9L,EAAKsF,kBAAkBC,YAEnC,IAAIsN,EAAU/G,EAAI+G,QAAQh3B,IAAImkB,EAAKpkB,UAC/Bk3B,EAAUhH,EAAIgH,QAAQj3B,IAAImkB,EAAKpkB,UAInC,GAHAi3B,EAAQ1T,EAAI,EACZ2T,EAAQ3T,EAAI,EAEM,MAAfoG,EACH,CACI,IAAI4Q,EAAS5X,QAAQnjB,QAAQg7B,SAAS7Q,EAAYsN,QAASA,GACvDwD,EAAS9X,QAAQnjB,QAAQk7B,SAAS/Q,EAAYuN,QAASA,GAE3DvN,EAAYgR,YAAYJ,EAAQE,EACpC,MAEI9Q,EAAc,IAAIhH,QAAQiY,YAAY3D,EAASC,EAAQ,IAExDvN,CACX,CAEAqP,iBAAiBxR,GAEb,OAAGA,EAAM2R,KAEc,OAAhB3R,EAAM/6B,MAEEpW,KAAK0pB,eAIL1pB,KAAK6pB,eAKT7pB,KAAKuW,YAEpB,CAEAuoC,qBAEI,OAAO9+C,KAAKwiD,eAChB,CACAxD,qBAEI,MAAO,IAAIh/C,KAAKmiD,WACpB,CAEAK,gBAEI,OAAOxiD,KAAKiiD,aAAaQ,OAAOziD,KAAKkiD,aACzC,CAEAwD,aAAavU,EAAO0E,GAEhBA,EAAOvsB,aAAaq8B,YAAYxU,EAAO0E,GACvCA,EAAOvsB,aAAas8B,SAAU,EAC9B/P,EAAOtwB,SACX,CAEAk/B,gBAAgB5W,EAAQ3wC,GAEpB8C,KAAKmiD,WAAWM,OAAOziD,KAAKiiD,cAAcQ,OAAOziD,KAAKkiD,cAAc7rC,SAAQ03B,IAExEA,EAAK2W,oBAAoB3W,EAAK4W,iBAAiB/6B,IAAI,IAAI0iB,QAAQnjB,QAAQjsB,EAAOA,EAAOA,GAAOusB,SAASokB,IAAS,IAGlH7tC,KAAKwpD,UAAU7/B,SAAW3pB,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,UAAsBzO,EAAEC,KAAKq1C,WAAWluC,QAAQ,IAAI,IAAIuL,SAAS7oB,KAAKmW,KAAKlZ,QAAO0sB,SAASH,QACpJxpB,KAAKypD,YAAY9/B,SAAW3pB,KAAKiiD,aAAa78B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,UAAsBzO,EAAEC,KAAKq1C,WAAWluC,QAAQ,IAAI,IAAIuL,SAAS7oB,KAAKmW,KAAKlZ,QAAO0sB,SAASH,QACxJxpB,KAAK0pD,YAAY//B,SAAW3pB,KAAKkiD,aAAa98B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,UAAsBzO,EAAEC,KAAKq1C,WAAWluC,QAAQ,IAAI,IAAIuL,SAAS7oB,KAAKmW,KAAKlZ,QAAO0sB,SAASH,QAExJ,IAAI,IAAIR,KAAKhpB,KAAKszD,SAEd,IAAI,IAAIzwD,EAAI,EAAGA,EAAEmmB,EAAEogD,WAAWlpE,OAAQ2C,IACtC,CACI,MAAMswC,EAAMnqB,EAAEogD,WAAWvmE,GAAG8hD,iBAAiB/6B,IAAI,IAAI0iB,QAAQnjB,QAAQjsB,EAAOA,EAAOA,GAAOusB,SAASokB,IACnG7kB,EAAEogD,WAAWvmE,GAAG6hD,oBAAoBvR,EAAI3pB,SACxCR,EAAEqgD,aAAaxmE,GAAG6hD,oBAAoBvR,EAAI3pB,SAC1CR,EAAEsgD,aAAazmE,GAAG6hD,oBAAoBvR,EAAI3pB,QAC9C,CAGR,ECnuBW,MAAMihD,WAAqB1oB,GACtCrR,cAEIsR,OACJ,CAEAz8B,UAEIvlB,KAAKiiD,aAAaQ,OAAOziD,KAAKmiD,YAAY9rC,SAAQiP,IAE/CA,EAAEC,SAAS,GAElB,CAEAmlD,WAAW7e,EAAWliC,GAElB3pB,KAAKmW,KAAO,CAACwO,SAAW,UACxB3kB,KAAKgX,UAAY60C,EAAU70C,UAC3BhX,KAAK+U,YAAc82C,EAAU92C,YAC7B/U,KAAK+W,YAAc80C,EAAU90C,YAC7B/W,KAAKspB,aAAeuiC,EAEpB,IAAIvJ,EAAS,CAAC,CAACnR,MAAMnxC,KAAKgX,UAAWk2B,EAAE,MAAO,CAACiE,MAAMnxC,KAAK+U,YAAam4B,EAAE,MACrEoS,EAAS,GACTqrB,EAAS3qE,KACbsiD,EAAOjsC,SAAQiP,IAEX,IAAI6rB,EAAQ7rB,EAAE6rB,MAAMF,SAChBlD,EAAOzB,QAAQka,YAAYxT,UAAU,KAAM,CAAC96B,MAAQ,IAAMC,OAAS,IAAKw9B,MAAQ,KAAOxE,GACvFgC,EAAMxpB,EAASH,QACnB2pB,EAAIjG,EAAI5nB,EAAE4nB,EAEVa,EAAKpkB,SAAWwpB,EAChBpF,EAAK53B,KAAOw0D,EAAOx0D,KACnB43B,EAAK8H,OAAS80B,EACd58B,EAAK4E,SAAWxB,EAAMyB,kBAAkB,WAExC0M,EAAO75B,KAAKsoB,EAAK,IAGrB/tC,KAAKmiD,WAAW18B,KAAK65B,EAAO,IAC5Bt/C,KAAKiiD,aAAax8B,KAAK65B,EAAO,GAClC,CAEA/N,YAAYN,EAAU/zC,GAElB,IAAI0sD,EAAQ1sD,EAAMssB,QAClBogC,EAAM1c,EAA+B,MAA3BltC,KAAKu2C,aAAangC,MAAgB,IAAM,EAClDpW,KAAK0pB,eAAeC,SAAWigC,EAE/B,IAAIC,EAAQ3sD,EAAMssB,QAClBqgC,EAAM3c,EAA+B,MAA3BltC,KAAKu2C,aAAangC,MAAgB,IAAM,EAClDpW,KAAK6pB,eAAeF,SAAWkgC,EAE/B,IAAI+gB,EAAU1tE,EAAMssB,QACpBohD,EAAQ19B,EAAI+D,IAAajxC,KAAK+U,YAAYk8B,SAAW,EAAI,IACzDjxC,KAAKuW,aAAaoT,SAAWihD,EAAQphD,OACzC,EChDJ,MAAMqhD,GAA2B,CAAC,KAAK,KAAK,KAAK,KAAK,KAAM,KAAM,IAAK,KAAM,KAAM,MAC7EC,GAA2B,CAAC,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,MAC/DC,GAAsB,CAAC,KAAM,KAAM,MAE1B,MAAMhN,WAAqBvmB,GAEtC9G,cAEIsR,QACAhiD,KAAKmW,KAAO,CAAC,EACbnW,KAAK+1C,KAAO,KACZ/1C,KAAKm2C,SAAW,GAChBn2C,KAAKg6C,MAAQ,GACbh6C,KAAKspD,QAAU,GACftpD,KAAKqpD,MAAQ,GACbrpD,KAAKgrE,QAAU,GACfhrE,KAAKupD,SAAW,GAChBvpD,KAAKwuD,OAAS,GACdxuD,KAAKirE,MAAQ,GACbjrE,KAAKkrE,OAAS,GACdlrE,KAAKmrE,QAAU,GACfnrE,KAAKssD,MAAQ,GAEbtsD,KAAK+U,YAAc,KACnB/U,KAAK+W,YAAc,KACnB/W,KAAKgX,UAAY,KAEjBhX,KAAKuW,aAAe,KACpBvW,KAAK0pB,eAAiB,KACtB1pB,KAAK6pB,eAAiB,KAEtB7pB,KAAK89D,WAAa,GAClB99D,KAAKk2C,UAAW,EAChBl2C,KAAKoiD,SAAU,EACfpiD,KAAK4lD,SAAU,EACf5lD,KAAK0tD,eAAiB,KACtB1tD,KAAKu2C,aAAe,KAEpBv2C,KAAKiI,WAAa,EAClBjI,KAAKkI,SAAW,EAChBlI,KAAK02D,YAAa,EAClB12D,KAAK82C,eAAgB,CACzB,CACAmnB,cAEI,MAAO,CAACj+D,KAAKuW,aAAavW,KAAK0pB,eAAe1pB,KAAK6pB,eACvD,CAEA+qC,aAAa3jB,GAET,OAAOjxC,KAAK89D,WAAW14C,MAAKlP,GAAGA,EAAEwsC,SAAWzR,GAChD,CAEA5pB,QAAQ+jD,GAAe,GAEnB,IAAIC,EAAMliD,GAAAA,QAAQC,OAClB,IAAI,IAAIvmB,EAAI,EAAGA,EAAE7C,KAAKwuD,OAAOtuD,OAAQ2C,IACrC,CACI,IAAIuoE,EACJ,CACI,MAAME,EAAMtrE,KAAKwuD,OAAOppC,MAAKlP,GAAGA,EAAEC,KAAKlZ,KAAK4rB,SAAS,cACrD,GAAG7oB,KAAKwuD,OAAO3rD,KAAOyoE,EAClB,QACR,CACA,MAAMre,EAAKjtD,KAAKwuD,OAAO3rD,GAAGs/C,WAAW,GAAGmhB,8BAClCl8C,EAAO6lC,EAAG3mB,IAAIwG,SAASmgB,EAAGllB,KAC7BsjC,EAAIn1D,EAAEwR,QAAQ,IAAMN,EAAKlR,EAAEwR,QAAQ,KAElC2jD,EAAIn1D,GAAKkR,EAAKlR,GAEfm1D,EAAI5jD,EAAEC,QAAQ,IAAMN,EAAKK,EAAEC,QAAQ,KAElC2jD,EAAI5jD,GAAKL,EAAKK,EAEtB,CAEA,GAAGznB,KAAKuW,aAAas5B,SAAS3C,EAAI5lB,KAAK23B,IAAM,EAC7C,CACI,MAAMwM,EAAO4f,EAAIn1D,EACjBm1D,EAAIn1D,EAAIm1D,EAAI5jD,EACZ4jD,EAAI5jD,EAAIgkC,CACZ,CAKA,OAHA4f,EAAIn1D,EAAIkV,OAAOigD,EAAIn1D,EAAEwR,QAAQ,IAC7B2jD,EAAI5jD,EAAI2D,OAAOigD,EAAI5jD,EAAEC,QAAQ,IAEtB2jD,CACX,CAEAE,QAAQC,GAEJA,EAAYn1D,SAAQvC,IAEhB,IAAImV,EAAMnV,EAAKmV,IACX7B,EAAOtT,EAAKsT,KACZqkD,EAA2F,GAAzEzrE,KAAKwuD,OAAOv4C,QAAOqP,IAAMA,EAAEnP,KAAK4M,SAAS8F,SAAS,cAAa3oB,OAEjF66D,EAAY/6D,KAAK85C,iBAAiB,KAAM,CAAC,UAIzC4xB,GAHwB3Q,EAAUtnB,OAAO7pB,IAAIX,EAAIykB,SAASjkB,SAASsxC,EAAUrlB,aACvDqlB,EAAUtnB,OAAO7pB,IAAIX,EAAIQ,SAASsxC,EAAUrlB,aAEzD,IAAIpJ,QAAQnjB,QAAQ7B,KAAKilB,IAAItjB,EAAI/S,GAAIoR,KAAKilB,IAAItjB,EAAIikB,GAAI5lB,KAAKilB,IAAItjB,EAAIxB,KAC5EkkD,GAAYD,EAAOj+B,kBAAkBxkB,EAAK,MAG9CjpB,KAAKg6C,MAAM3jC,SAAQC,IAEf,IAAIqyC,EAAaryC,EAAO6jC,mBACpByO,EAAYtc,QAAQnjB,QAAQonB,UAAUoY,EAAWla,IAAI3B,SAAS6b,EAAWna,QAE7E,GAAGi9B,EAEC,GAAI1/B,GAAa8c,WAAWD,EAAW3/B,GASnC3S,EAAOsuC,YAAY37B,EAAKA,EAAK,EAAG7B,OARpC,CACI,IAAIq5B,EAAYnqC,EAAOwjC,iBAAiB,MACpC8O,EAAYtc,QAAQnjB,QAAQonB,UAAUkQ,EAAUhN,OAAO3G,SAASiuB,EAAUtnB,QAAQhqB,SAASiiD,IAE/Fp1D,EAAOmuC,gBAAgBknB,EAAY/iB,EAAUlb,SAAWkb,EAAWxhC,EACvE,MAQG9Q,EAAOH,KAAK4M,SAAS8F,SAAS,YAI9BkjB,GAAa8c,WAAWD,EAAW3/B,IAClC3S,EAAOsuC,YAAY37B,EAAKA,EAAK,EAAG7B,EACxC,IAIJpnB,KAAKgrE,QAAQ30D,SAAQC,IAEjB,IAAImqC,EAAYnqC,EAAOwjC,iBAAiB,MACpC8O,EAAYtc,QAAQnjB,QAAQonB,UAAUkQ,EAAUhN,OAAO3G,SAASiuB,EAAUtnB,QAAQhqB,SAASiiD,IAE/Fp1D,EAAOmuC,gBAAgBknB,EAAY/iB,EAAUlb,SAAWkb,EAAWxhC,EAAK,GAC1E,IAGNokD,EAAYn1D,SAAQvC,IAEhB,IAAImV,EAAMnV,EAAKmV,IACX7B,EAAOtT,EAAKsT,KAGhBpnB,KAAKwuD,OAAOn4C,SAAQuwB,IAEhBA,EAAKge,YAAY37B,EAAKA,EAAK,EAAG7B,EAAK,GACrC,GAEV,CAEAgpC,QAAQgb,GAAe,GAEnB,MAAMhkD,EAAOpnB,KAAKqnB,QAAQ+jD,GACpBvjE,IAAWuf,EAAKlR,EAAE,MAASkR,EAAKK,EAAE,MAAOC,QAAQ,GACjD5f,GAAiB,MAATD,GAAiB6f,QAAQ,GACvC,MAAO,CAAC7f,OAASA,EAAQC,KAAOA,EACpC,CAEA66C,iBAAiBxR,GAEb,OAAGA,EAAM2R,KAEc,OAAhB3R,EAAM/6B,MAEEpW,KAAK0pB,eAIL1pB,KAAK6pB,eAKT7pB,KAAKuW,YAEpB,CAEAssC,eAAe1R,GAEX,OAAOkQ,GAAAA,EAAWlZ,KAAKnoC,KAAKm2C,UAAUy1B,YAAWtmD,GAAKA,EAAEu9B,eAAe1R,KAAQ0Q,SACnF,CAEAqc,aAAahhE,GAET8C,KAAKuW,aAAaC,WAAWtZ,EACjC,CAEAu5D,gBAEI,IAAIgD,EAAS,GACT9C,EAAU32D,KAAKu2C,aAAangC,MAQhC,OANApW,KAAKwuD,OAAOvG,SAAQ3iC,GAAKA,EAAE68B,WAAWlsC,QAAO0lC,GAAwB,SAAnBA,EAAExlC,KAAKwO,aAAsBtO,SAAQD,IAEnF,IAAIigD,EAAavoB,GAAW+9B,oBAAoBz1D,GAAO4W,KAAI1H,GAAKA,EAAEkpB,QAClEirB,EAAOh0C,KAAK,CAAC4oB,MAAMgoB,EAAWrpC,KAAI1H,IAAK,CAAEpP,EAAEoR,KAAKC,MAAY,IAANjC,EAAEpP,GAAWg3B,EAAE5lB,KAAKC,MAAa,IAAPjC,EAAEmC,OAAetP,OAAO/B,EAAMi5B,OAAO1lB,SAASujB,EAAGypB,QAAQA,GAAS,IAG/I8C,CACX,CAEAkB,cAAcD,GAEV16D,KAAKmrE,QAAQ90D,SAAQiP,IAEjBA,EAAEC,SAAS,IAGf,IAAIumD,EAAW,GAEXjyB,EAAM75C,KAAK85C,iBAAiB,KAAM,CAAC,UAEnCiyB,EAAUlyB,EAAI+G,QAAQp3B,QACtBwiD,EAAUnyB,EAAI+G,QAAQp3B,QAC1BuiD,EAAQ71D,EAAI2jC,EAAIgH,QAAQ3qC,EACxB81D,EAAQvkD,EAAIoyB,EAAIgH,QAAQp5B,EAExB,IAAIwkD,EAAoB,CACpBpyB,EAAI+G,QAAQh3B,IAAI,IAAI0iB,QAAQnjB,QAAQ,KAAO,EAAG,MAAOmsB,MAAqB,KAAfhuB,KAAKklB,KAAK,KACrEu/B,EAAQniD,IAAI,IAAI0iB,QAAQnjB,SAAS,KAAO,EAAG,MAAOmsB,MAAqB,KAAfhuB,KAAKklB,KAAK,KAClEqN,EAAIgH,QAAQj3B,IAAI,IAAI0iB,QAAQnjB,SAAS,KAAO,GAAI,MAAOmsB,MAAqB,KAAfhuB,KAAKklB,KAAK,KACvEw/B,EAAQpiD,IAAI,IAAI0iB,QAAQnjB,QAAQ,KAAO,GAAI,MAAOmsB,MAAqB,KAAfhuB,KAAKklB,KAAK,MAItEy/B,EAAkBj/C,KAAI1H,IAEnBA,EAAE4nB,EAAI,IACC5nB,KAKV,IAFA,IAAI47B,EAAS+qB,EAAkB,GAEvBppE,EAAE,EAAGA,EAAEopE,EAAkB/rE,OAAQ2C,IACzC,CACI,IAAIyT,EAAS21D,EAAkBppE,GAC/B,IAAGq+C,EAAOzT,kBAAkBn3B,EAAQ,MAApC,CAGA,IAAI2S,EAAMqjB,QAAQnjB,QAAQonB,UAAUj6B,EAAOw2B,SAASoU,IAEpD,GAAGnV,GAAa8c,WAAW5/B,EAAKqjB,QAAQqD,KAAK8L,IAAM1P,GAAa8c,WAAW5/B,EAAKqjB,QAAQqD,KAAK2L,GAC7F,CACI,IAAI4wB,EAAW5/B,QAAQnjB,QAAQ4/B,SAAS7H,EAAQ5qC,GAChDw1D,EAASrmD,KAAK,CAACwD,IAAKA,EAAKU,SAAUrT,EAAQ41D,SAAUA,GACzD,CARY,CAShB,CAEA,GAAsB,GAAnBJ,EAAS5rE,OAAZ,CAGA,IAAIisE,EAAUL,EAAS,GACnBM,EAAYN,EAAS,GACtBA,EAAS,GAAGI,SAAWJ,EAAS,GAAGI,WAElCC,EAAUL,EAAS,GACnBM,EAAYN,EAAS,IAGzB,IAAIO,EAAYnrB,EAAOt3B,IAAIuiD,EAAQxiD,UAAU2rB,MAAM,IAC/Cg3B,EAAiBD,EAAUziD,IAAIwiD,EAAUnjD,IAAIqsB,MAAM82B,EAAUF,WAEjED,EAAkBxmD,KAAK4mD,GACvBJ,EAAkBxmD,KAAK6mD,GAEvB,IAAIzgB,EAAY7rD,KAEZusE,EAAa7R,EAASzS,SAAQ3iC,GAAKA,EAAEkpC,OAAOxhC,KAAI2uB,GAAKA,EAAE7B,uBAC3DmyB,EAAkB51D,SAAQiP,IAYtB,IAVA,IAAIknD,EAAOlnD,EAAEpP,EAAI,KACbw4B,EAAOppB,EAAEmC,EAAI,KACbwoB,EAAO3qB,EAAEpP,EAAI,KACb6pD,EAAOz6C,EAAEmC,EAAI,KAEbsgB,EAAM,IAAIuE,QAAQnjB,QAAQqjD,EAAM,EAAG99B,GACnCpI,EAAM,IAAIgG,QAAQnjB,QAAQ8mB,EAAM,EAAG8vB,GACnC0M,EAAW,IAAIngC,QAAQiY,YAAYxc,EAAKzB,GAExComC,GAAgB,EACZ7pE,EAAE,EAAGA,EAAE0pE,EAAWrsE,OAAQ2C,IAClC,CACI,IAAI8pE,EAAWJ,EAAW1pE,GAC1B,GAAG4pE,EAASzjB,iBAAiB2jB,EAAS/rB,QAAS+rB,EAAS9rB,SACxD,CACI6rB,GAAgB,EAChB,KACJ,CACJ,CAEA,IAAIA,EACJ,CACI,IAAI/B,EAAS,IAAIF,GACjBE,EAAOD,WAAW7e,EAAWvmC,GAE7BumC,EAAUsf,QAAQ1lD,KAAKklD,EAC3B,IA/CM,CAiDd,CAEAxuD,mBAEI,IAEInc,KAAKg6C,MAAM3jC,SAAQ03C,IACfA,EAAI9K,cAAc,IAEtB,IAAI,IAAIpgD,EAAG,EAAGA,EAAE7C,KAAKqpD,MAAMnpD,OAAQ2C,UAEzB7C,KAAKqpD,MAAMxmD,GAAGogD,eAExBjjD,KAAKm2C,SAAS9/B,SAAQ03C,IACO,SAAtBA,EAAI53C,KAAKwO,UAA6C,SAAtBopC,EAAI53C,KAAKwO,UAA6C,YAAtBopC,EAAI53C,KAAKwO,UAE5EopC,EAAI9K,cAAc,GAE1B,CACA,MAAMx3B,GAEFtQ,QAAQ6D,MAAMyM,EAClB,CACA,MAAMmhD,EAAStgC,QAAQka,YAAYxT,UAAU,KAAM,CAAC5rB,KAAO,GAAGpnB,KAAK+U,YAAYk8B,UAC/E27B,EAAOn0D,WAAY,EACnBm0D,EAAOjjD,SAAW,IAAIR,GAAAA,QAAQ,EAAE,EAAE,GAElC,MAAM0jD,EAASvgC,QAAQka,YAAYxT,UAAU,KAAM,CAAC5rB,KAAO,GAAGpnB,KAAK+W,YAAYk6B,UAC/E47B,EAAOp0D,WAAY,EACnBo0D,EAAOljD,SAAW,IAAIR,GAAAA,QAAQ,EAAE,EAAE,GAElCyjD,EAAOp2D,YAAW,GAClBq2D,EAAOr2D,YAAW,GAElBxW,KAAKm2C,SAAS9/B,SAAQ03C,IAClBA,EAAI9L,aAAa5rC,SAAQ03B,IACrBA,EAAK8H,OAASkY,CAAG,IAErBA,EAAI7L,aAAa7rC,SAAQ03B,IACrBA,EAAK8H,OAASkY,CAAG,GACnB,IAGN/tD,KAAKspD,QAAQjzC,SAAQ20C,IACjBA,EAAEyb,gBAAgB,IAEtBzmE,KAAKqpD,MAAMhzC,SAAQy2D,IACfA,EAAErG,gBAAgB,IAEtBzmE,KAAKwuD,OAAOn4C,SAAQ+pC,IAChBA,EAAEqmB,eAAermB,EAAE+B,WAAWniD,KAAKgX,UAAUi6B,SAAS,KACtDmP,EAAEqmB,eAAermB,EAAE6B,aAAajiD,KAAK+U,YAAYk8B,SAAS,GAC1DmP,EAAEqmB,eAAermB,EAAE8B,aAAaliD,KAAK+W,YAAYk6B,SAAS,EAAE,IAEhE,IAAI87B,EAAQ,GACRC,EAAQ,GACRC,EAAU,GACdjtE,KAAKm2C,SAAS9/B,SAAQ03C,IAClB,MAAMmf,EAAOnf,EAAI9L,aACXkrB,EAAOpf,EAAI7L,aACXkrB,EAAQrf,EAAI5L,WAClB4qB,EAAQA,EAAMtqB,OAAOyqB,GACrBF,EAAQA,EAAMvqB,OAAO0qB,GACrBF,EAAUA,EAAQxqB,OAAO2qB,EAAM,IAGnCL,EAAM12D,SAAQ03B,IACV,MAAM53B,EAAO43B,EAAK53B,KAElB,GADA43B,EAAKsB,OAASu9B,EACXz2D,EAAKq1C,WAAW3iC,SAAS,SAC5B,CACI,MAAMwmB,EAAS09B,EAAM3nD,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAASkZ,EAAKq1C,aAClDzd,EAAKsB,OAASA,CAClB,CACqB,QAAlBl5B,EAAKwO,SAEJopB,EAAKt1B,WAAY,EAIjBs1B,EAAKt1B,WAAY,CACrB,IAGJu0D,EAAM32D,SAAQ03B,IACV,MAAM53B,EAAO43B,EAAK53B,KAElB,GADA43B,EAAKsB,OAASw9B,EACX12D,EAAKq1C,WAAW3iC,SAAS,SAC5B,CACI,MAAMwmB,EAAS29B,EAAM5nD,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAASkZ,EAAKq1C,aAClDzd,EAAKsB,OAASA,CAClB,CACqB,QAAlBl5B,EAAKwO,SAEJopB,EAAKt1B,WAAY,EAIjBs1B,EAAKt1B,WAAY,CACrB,IAGJm0D,EAAOrjD,QAAQ9B,GAAK,EACpBolD,EAAOtjD,QAAQ9B,GAAK,EACpBznB,KAAKuW,aAAagT,QAAQ9B,GAAK,EAE/BmlD,EAAO/2B,OAAS71C,KAChB6sE,EAAOh3B,OAAS71C,KAEhBA,KAAK0pB,eAAiBkjD,EACtB5sE,KAAK6pB,eAAiBgjD,CAC1B,CAEAt7B,YAAYN,EAAS/zC,GAEjB,GAAG8C,KAAKu2C,aACR,CACI,IAAIqT,EAAQ1sD,EAAMssB,QAClBogC,EAAM1c,EAA+B,MAA3BltC,KAAKu2C,aAAangC,MAAgB,IAAM,EAClDpW,KAAK0pB,eAAeC,SAAWigC,EAE/B,IAAIC,EAAQ3sD,EAAMssB,QAClBqgC,EAAM3c,EAA+B,MAA3BltC,KAAKu2C,aAAangC,MAAgB,IAAM,EAClDpW,KAAK6pB,eAAeF,SAAWkgC,CACnC,KAEA,CACI,IAAI1W,EAAMj2C,EAAMssB,QAChB2pB,EAAIjG,EAAI,IACL+D,IAAajxC,KAAK+U,YAAYk8B,SAE7BjxC,KAAK0pB,eAAeC,SAAWwpB,EAE3BlC,IAAajxC,KAAK+W,YAAYk6B,WAElCjxC,KAAK6pB,eAAeF,SAAWwpB,EAEvC,CAEA,IAAIy3B,EAAU1tE,EAAMssB,QACpBohD,EAAQ19B,EAAI+D,IAAajxC,KAAK+U,YAAYk8B,SAAW,EAAI,IACzDjxC,KAAKuW,aAAaoT,SAAWihD,EAAQphD,OACzC,CAEAy6B,UAAUhT,EAAS/zC,GAEZ+zC,IAAajxC,KAAK+U,YAAYk8B,SAE7BjxC,KAAK0pB,eAAelT,WAAWtZ,GAE3B+zC,IAAajxC,KAAK+W,YAAYk6B,SAElCjxC,KAAK6pB,eAAerT,WAAWtZ,GAI/B8C,KAAKuW,aAAaC,WAAWtZ,GAEjC8C,KAAKm+D,aAAajhE,EACtB,CAEAihE,aAAajhE,GAET8C,KAAKm2C,SAAS9/B,SAAQ03C,IAClBA,EAAI9L,aAAa5rC,SAAQxP,IACrBA,EAAE2P,WAAWtZ,EAAM,IAEvB6wD,EAAI7L,aAAa7rC,SAAQxP,IACrBA,EAAE2P,WAAWtZ,EAAM,IAEvB6wD,EAAI5L,WAAW9rC,SAAQxP,IACnBA,EAAE2P,WAAWtZ,EAAM,IAEE,SAAtB6wD,EAAI53C,KAAKwO,UAERopC,EAAIkc,kBACR,GAER,CAEAzW,iBAAiBp9C,GAEA,OAAVA,EAECpW,KAAK6pB,eAAerT,YAAW,GAM/BxW,KAAK0pB,eAAelT,YAAW,GAKnCxW,KAAKm2C,SAAS9/B,SAAQ03C,IAClB,IAAIzO,EAASyO,EAAI9L,aAKjB,GAJa,OAAV7rC,IAECkpC,EAASyO,EAAI7L,cAEQ,SAAtB6L,EAAI53C,KAAKwO,UAA6C,UAAtBopC,EAAI53C,KAAKwO,UAA8C,WAAtBopC,EAAI53C,KAAKwO,UAAyBopC,EAAIqX,SAEtG,IAAI,IAAIviE,KAAKy8C,EACb,CACI,MAAMvR,EAAOuR,EAAOz8C,GACpB,GAAGkrC,EAAK4E,SACR,CACI,GAAyB,SAAtBob,EAAI53C,KAAKwO,UAA6C,WAAtBopC,EAAI53C,KAAKwO,SAExCopB,EAAK4E,SAAW5E,EAAK2U,OAAO9P,kBAAkB,qBAE7C,GAAyB,SAAtBmb,EAAI53C,KAAKwO,SACjB,CACI,MAAMwwB,EAAIpH,EAAKsB,OACftB,EAAKxoB,UACL,MAAM8nD,EAAOtf,EAAIuf,eAAev/B,EAAK2U,QACrC2qB,EAAKl3D,KAAO43C,EAAI53C,KAChBk3D,EAAKx3B,OAASkY,EACdsf,EAAKh+B,OAAS8F,EACD,OAAV/+B,GAECi3D,EAAK1jD,SAASujB,EAAI,IAClB6gB,EAAI9L,aAAap/C,GAAKwqE,GAItBtf,EAAI7L,aAAar/C,GAAKwqE,CAE9B,KAEA,CACI,MAAM7C,EAAUz8B,EAAK4E,SAASnpB,QAC9BghD,EAAQ7J,MAAQ,GAChB5yB,EAAK4E,SAAW63B,CACpB,CACAz8B,EAAKw7B,WAAa,IAAIj9B,QAAQ+L,OAAO,EAAG,EAAG,EAAG,GAClD,CACJ,KAE0B,SAAtB0V,EAAI53C,KAAKwO,SAEbopC,EAAIyF,iBAAiBp9C,GAIrBkpC,EAAOjpC,SAAQ03B,IACXA,EAAKt1B,WAAW,CAAK,GAE7B,GAER,CAGAsqC,aAAanD,EAAaC,EAAc3pC,EAAGuR,EAAGzR,GAE1C,IAAI0pC,EAAQ,GACRvO,EAAQyO,EACR2tB,EAAUvtE,KAAK2iD,iBAAiB/C,GAAaj2B,SAC7C6jD,EAAUt3D,EAAIq3D,EAAQr3D,EACtBu3D,EAAUhmD,EAAI8lD,EAAQ9lD,EAQ1B,OANAznB,KAAKwuD,OAAOn4C,SAAQiP,IAEhB,IAAIu0B,EAAMv0B,EAAEw0B,iBAAiB3I,GAC7BuO,EAAMj6B,KAAK,IAAI6mB,QAAQiY,YAAY,IAAIjY,QAAQnjB,QAAQ0wB,EAAI+G,QAAQ1qC,EAAIs3D,EAAS,EAAG3zB,EAAI+G,QAAQn5B,EAAIgmD,GAAU,IAAInhC,QAAQnjB,QAAQ0wB,EAAIgH,QAAQ3qC,EAAIs3D,EAAS,EAAG3zB,EAAIgH,QAAQp5B,EAAIgmD,IAAU,IAGpLztE,KAAKy/C,YAAYC,EAAO1pC,EAAQiyC,SAAQ3iC,GAAKA,EAAE6wB,WAAWyJ,EAAaC,EAAc3pC,EAAGuR,EACnG,CAEAimD,QAAQz8B,EAAS76B,GAEb,MAAMyjC,EAAM75C,KAAKqnB,UAEjB,IAAInP,EAAQ2hC,EAAI3jC,EACZy/B,EAAQkE,EAAIpyB,EAChB,MAAMszC,EAAYzuB,QAAQka,YAAYxT,UAAU,YAAY,CAAC96B,MAAOA,EAAMC,OAAO,IAAKw9B,MAAMA,GAAQ1E,GACpG8pB,EAAUxxC,QAAU,IAAIJ,GAAAA,QAAQ,IAAK,KAAM,KAC3C4xC,EAAUpoB,SAAW1B,EAAS2B,kBAAkB,oBAEhD5yC,KAAK89D,WAAWr4C,KAAKs1C,GACrBA,EAAUtiD,WAAY,EACtBsiD,EAAUgD,aAAe/9D,KAIrB+6D,EAAU1rB,OAFD,OAAVj5B,EAEoBpW,KAAK0pB,eAIL1pB,KAAK6pB,eAE5BkxC,EAAUpxC,SAAWR,GAAAA,QAAQC,OAC7B2xC,EAAUpxC,SAASujB,EAAI,IAC3B,CAEA4M,iBAAiB3I,EAAOw8B,GAGpB,IADA,IAAIr6B,EAAc,KACVzwC,EAAE,EAAGA,EAAE7C,KAAKm2C,SAASj2C,OAAQ2C,IACrC,CACI,IAAIgzC,EAAS71C,KAAKm2C,SAAStzC,GAC3B,GAAgB,MAAb8qE,EACH,CACI,IAAIC,EAAiB/3B,EAAO1/B,KAAKwO,SAEjC,IAAIgpD,EAAU7xB,MAAKx2B,GAAKA,GAAKsoD,IACzB,QACR,CACA,IAAI/zB,EAAMhE,EAAOiE,iBAAiB3I,GAElC,GAAU,MAAP0I,EACH,CACI,GAAGA,EAAInE,WAAWx1C,UAAY2tE,IAC1B,SAEJ,GAAkB,MAAfv6B,EACH,CACI,IAAI4Q,EAAS5X,QAAQnjB,QAAQg7B,SAAS7Q,EAAYsN,QAAS/G,EAAI+G,SAC3DwD,EAAS9X,QAAQnjB,QAAQk7B,SAAS/Q,EAAYuN,QAAShH,EAAIgH,SAE/DvN,EAAYgR,YAAYJ,EAAQE,EACpC,MAEI9Q,EAAc,IAAIhH,QAAQiY,YAAY1K,EAAI+G,QAAS/G,EAAIgH,QAC/D,CACJ,CACA,OAAOvN,CACX,CAEAkR,uBAAuBrT,EAAOw8B,GAE1B,IAAIr6B,EAAc,KAClB,IAAI,IAAIuC,KAAU71C,KAAKm2C,SACvB,CACI,GAAgB,MAAbw3B,EACH,CACI,IAAIC,EAAiB/3B,EAAO1/B,KAAKwO,SAEjC,IAAIgpD,EAAU7xB,MAAKx2B,GAAKA,GAAKsoD,IAEzB,QAER,CACA,IAAI/zB,EAAMhE,EAAO2O,uBAAuBrT,GACxC,GAAU,MAAP0I,EACH,CACI,GAAGA,EAAInE,WAAWx1C,UAAY2tE,IAC1B,SAEJ,GAAkB,MAAfv6B,EACH,CACI,IAAI4Q,EAAS5X,QAAQnjB,QAAQg7B,SAAS7Q,EAAYsN,QAAS/G,EAAI+G,SAC3DwD,EAAS9X,QAAQnjB,QAAQk7B,SAAS/Q,EAAYuN,QAAShH,EAAIgH,SAE/DvN,EAAYgR,YAAYJ,EAAQE,EACpC,MAEI9Q,EAAc,IAAIhH,QAAQiY,YAAY1K,EAAI+G,QAAS/G,EAAIgH,QAC/D,CACJ,CACA,OAAOvN,CACX,CAEAkG,gBAEI,IAAIs0B,EAAQ,CACZ,CACI9wE,KAAK,SACLmgD,MAAOn9C,KAAKg3C,QACd,CACEh6C,KAAK,aACLmgD,MAAMn9C,KAAK+2C,WACb,CACE/5C,KAAK,WACLmgD,MAAMn9C,KAAKq3C,SACb,CACEr6C,KAAK,WACLmgD,MAAMn9C,KAAKm3C,UAGXs0B,EAA2F,GAAzEzrE,KAAKwuD,OAAOv4C,QAAOqP,IAAMA,EAAEnP,KAAK4M,SAAS8F,SAAS,cAAa3oB,OAMrF,OALGurE,GACCqC,EAAMroD,KAAK,CAACzoB,KAAK,YAAamgD,MAAMn9C,KAAK+tE,SAAU3qD,UAAWpjB,KAAK02D,aAEvEoX,EAAMroD,KAAK,CAACzoB,KAAK,SAAUmgD,MAAMn9C,KAAKw/C,SAE/BsuB,CACX,CAEA/1B,mBAAmB5G,GAEfnxC,KAAK63C,sBAEL,IAAI6B,EAAkB15C,KAAKk5C,mBAAmB/H,EAAMF,UAChDkW,EAASnnD,KAAKq5C,yBAEd+N,EAAYpnD,KAAKg9C,kBAAkBtD,EAAiBvI,EAAOnxC,KAAKmW,KAAKwO,SAAU3kB,KAAKw5C,iBACxF2N,EAAO7N,QAAQX,WAAWyO,GAE1B,IAAIvN,EAAM75C,KAAK85C,iBAAiB3I,EAAO,CAAC,UACpC68B,EAAe1hC,QAAQkD,OAAOE,aAAapD,QAAQqD,KAAKC,GAAI5vC,KAAK2iD,iBAAiBxR,GAAOtB,SAAS3C,GAClG+gC,EAAa3hC,QAAQnjB,QAAQ4mB,qBAAqB8J,EAAInE,WAAYs4B,GACtEhuE,KAAKiI,WAAaqf,KAAKC,MAA+B,IAAzBD,KAAKilB,IAAI0hC,EAAW/3D,IAAY,IAC7DlW,KAAKkI,SAAWof,KAAKC,MAA+B,IAAzBD,KAAKilB,IAAI0hC,EAAWxmD,IAAY,IAG3D,IAAIgkD,EAA2F,GAAzEzrE,KAAKwuD,OAAOv4C,QAAOqP,IAAMA,EAAEnP,KAAK4M,SAAS8F,SAAS,cAAa3oB,OACrF,IAAIF,KAAKwuD,OAAO1S,MAAKx2B,GAAKA,EAAEnP,KAAK4M,SAAS8F,SAAS,eAAgB4iD,EACnE,CACI,IAAIyC,EAAoBpD,GACrBW,IACCyC,EAAoBrD,IAExB,IAAIjxB,EAAqB,GACrBu0B,EAAgBD,EAAkBxoC,QAAQ1lC,KAAKkI,UAC/CkmE,EAAkBrD,GAAoBrlC,QAAQ1lC,KAAKiI,YACvD,GAAGkmE,GAAiB,EACpB,CACI,IAAItyB,EAAiB,GAClBsyB,EAAgB,GACftyB,EAAep2B,KAAK,YACrB0oD,EAAgBD,EAAkBhuE,OAAS,GAC1C27C,EAAep2B,KAAK,YAExBm0B,EAAmBn0B,KAAK,CAACm2B,KAAKtP,QAAQnjB,QAAQm/B,gBAAgBhc,QAAQqD,KAAK2L,EAAG0yB,GAAenyB,eAAgBA,GACjH,CACA,GAAGuyB,GAAmB,EACtB,CACQvyB,EAAiB,GAClBuyB,EAAkB,GACjBvyB,EAAep2B,KAAK,YACrB2oD,EAAkBrD,GAAoB7qE,OAAS,GAC9C27C,EAAep2B,KAAK,YAExBm0B,EAAmBn0B,KAAK,CAACm2B,KAAKtP,QAAQnjB,QAAQm/B,gBAAgBhc,QAAQqD,KAAK8L,EAAGuyB,GAAenyB,eAAgBA,GACjH,CAEA,IAAIlC,EAAO,CACP,IAAIrN,QAAQnjB,SAAS,EAAG,EAAG,GAC3B,IAAImjB,QAAQnjB,QAAQ,EAAG,EAAG,GAC1B,IAAImjB,QAAQnjB,QAAQ,EAAG,GAAI,GAC3B,IAAImjB,QAAQnjB,QAAQ,EAAG,EAAG,IAG9BnpB,KAAKy5C,8BAA8BC,EAAiBvI,EAAOwI,EAAMC,EACrE,CAEA55C,KAAKy3C,cAAchyB,KAAK0hC,EAAO7N,SAE/B,IAAI+N,EAAU,IAAI/a,QAAQ2O,KAAK,WAAY9J,EAAMF,UAWjD,OAVAoW,EAAQ19B,SAAWkwB,EAAIpG,OACvBzzC,KAAK03C,mBAAmBjyB,KAAK4hC,GAE7BrnD,KAAKy3C,cAAcphC,SAAQ6kC,IAEvBxB,EAAgBf,WAAWuC,EAAM,IAGrCl7C,KAAKg4C,cAAc0B,GAEZ15C,KAAKy3C,aAChB,CAEA2E,YAAYjL,EAAO8I,EAAMsB,EAAWtyB,EAAKjsB,GAEjCgD,KAAK82C,eACL3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA2B5+C,KAAKwlD,GAAWC,aAAazlD,QACtG,IAAI0yD,EAAW1yD,KAAK2iD,iBAAiBxR,GACjC4pB,EAAY/6D,KAAK85C,iBAAiB3I,EAAO,CAAC,UAE1C+8B,EAAoBpD,GACpBW,EAA2F,GAAzEzrE,KAAKwuD,OAAOv4C,QAAOqP,IAAMA,EAAEnP,KAAK4M,SAAS8F,SAAS,cAAa3oB,OAIrF,GAHGurE,IACCyC,EAAoBrD,IAEb,YAAR7tE,EAEC,IAAIqxE,EAAa,IAAI/hC,QAAQnjB,QAAQ7B,KAAKilB,IAAItjB,EAAI/S,GAAIoR,KAAKilB,IAAItjB,EAAIikB,GAAI5lB,KAAKilB,IAAItjB,EAAIxB,IAChFw4B,EAAS,OAITouB,EAAa,IAAI/hC,QAAQnjB,SAAS7B,KAAKilB,IAAItjB,EAAI/S,IAAKoR,KAAKilB,IAAItjB,EAAIikB,IAAK5lB,KAAKilB,IAAItjB,EAAIxB,IACnFw4B,GAAU,EAGlB,GAAGh3B,EAAIQ,SAAS6iB,QAAQqD,KAAK8L,GAAGhO,kBAAkBnB,QAAQnjB,QAAQC,OAAQ,MAEtE,IAAIklD,EAAiBJ,EAAkBxoC,QAAQ1lC,KAAKkI,UAAY+3C,EAC5DsuB,EAAWL,EAAkBI,GAE7BE,EAAalnD,KAAKilB,IAAIgiC,EAAWvuE,KAAKkI,UAAY,OAIlDomE,EAAiBvD,GAAoBrlC,QAAQ1lC,KAAKiI,YAAcg4C,EAChEsuB,EAAWxD,GAAoBuD,GAE/BE,EAAalnD,KAAKilB,IAAIgiC,EAAWvuE,KAAKiI,YAAc,EAG5DumE,EAAalnD,KAAKC,MAAmB,IAAbinD,GAAqB,IAE7C,IAAIC,EAAYD,EAEZzzB,EAAWzO,QAAQnjB,QAAQm/B,gBAAgBr/B,EAAKypC,EAASpjB,kBACzDo/B,EAAY,IAAIpiC,QAAQnjB,QAAQ7B,KAAKilB,IAAIwO,EAAS7kC,GAAIoR,KAAKilB,IAAIwO,EAAS7N,GAAI5lB,KAAKilB,IAAIwO,EAAStzB,IAC9FknD,EAAkB,IAAIriC,QAAQnjB,QAAQ7B,KAAKilB,IAAIgP,EAAUrlC,GAAIoR,KAAKilB,IAAIgP,EAAUrO,GAAI5lB,KAAKilB,IAAIgP,EAAU9zB,IACvGmnD,EAAwB7T,EAAUtnB,OAAO7pB,IAAImxB,EAASrN,SAASjkB,SAASsxC,EAAUrlB,aAClFm5B,EAAsB9T,EAAUtnB,OAAO7pB,IAAImxB,EAAStxB,SAASsxC,EAAUrlB,aAGvEpqB,EAAY,EACb2uB,IACC3uB,EAAY2uB,EAAKgM,oBAErB,IAAI6oB,EAAcxiC,QAAQnjB,QAAQ4lD,MAAML,EAAWpiC,QAAQqD,KAAKC,EAAElC,UAC9DshC,EAAoBjjC,GAAaQ,IAAID,QAAQnjB,QAAQ4lD,MAAMJ,EAAiBriC,QAAQqD,KAAKC,EAAElC,WAC3FuhC,EAAiB,IAAI3iC,QAAQnjB,QAAQ7B,KAAKilB,IAAIuiC,EAAY54D,GAAIoR,KAAKilB,IAAIuiC,EAAY5hC,GAAI5lB,KAAKilB,IAAIuiC,EAAYrnD,IAC5GynD,EAAsB3zB,EAAUjG,MAAM2K,GAAQx2B,SAAS,IAAI6iB,QAAQnjB,QAAQmC,EAAYmjD,EAAWnjD,EAAYmjD,EAAWnjD,EAAYmjD,IACrIU,EAAkBpU,EAAUtnB,OAAO7pB,IAAI2xB,EAAU9xB,SAASsxC,EAAUrlB,aAAa9rB,IAAIslD,EAAoB55B,MAAM,KAC/G85B,EAAqB9iC,QAAQnjB,QAAQonB,UAAU4+B,EAAgBriC,SAASiuB,EAAUtnB,SAElF47B,EAAsBH,EAAoBtlD,IAAIolD,EAAkBvlD,SAASsxC,EAAUrlB,aAAa9rB,IAAI2xB,EAAUjG,MAAM2K,GAAQx2B,SAAS,IAAI6iB,QAAQnjB,QAAQ,IAAM,IAAM,OAErKmmD,EAAkBH,EAAgBvlD,IAAIylD,GACtCE,EAAkBJ,EAAgBvlD,IAAIylD,EAAoB3hC,UAC1D8hC,EAAe,IAAIljC,QAAQiY,YAAYjY,QAAQnjB,QAAQg7B,SAASmrB,EAAiBC,GAAkBjjC,QAAQnjB,QAAQk7B,SAASirB,EAAiBC,IAE7I7mB,EAAe,GAGnB1oD,KAAKg6C,MAAM3jC,SAAQC,IAEf,IAAImqC,EAAYnqC,EAAOwjC,iBAAiB3I,GACpCwX,EAAaryC,EAAO6jC,mBACpByO,EAAYtc,QAAQnjB,QAAQonB,UAAUoY,EAAWla,IAAI3B,SAAS6b,EAAWna,QAC7E,GAAGl4B,EAAOH,KAAK4M,SAAS8F,SAAS,YACjC,CAEI,IAAIkf,EAAMuE,QAAQnjB,QAAQg7B,SAAS1D,EAAUG,QAASH,EAAUG,QAAQh3B,IAAI8kD,EAAUp5B,MAAM,OACxFhP,EAAMgG,QAAQnjB,QAAQk7B,SAAS5D,EAAUI,QAASJ,EAAUI,QAAQj3B,IAAI8kD,EAAUp5B,MAAM,OAE5F,GAAGvJ,GAAa8c,WAAWD,EAAW7N,GAElC,GAAGy0B,EAAaxmB,iBAAiBjhB,EAAKzB,GACtC,CACI,IAAImpC,EAAanoD,KAAKilB,IAAID,QAAQnjB,QAAQ+/B,IAAIzI,EAAU/K,WAAYqF,IACjE00B,EAAahB,EAAYxuB,GAAU,EAElCyI,EAAajjC,KAAKnP,GAIlBA,EAAOsuC,YAAY7J,EAAUszB,EAAY,EAAGI,EAEpD,MAGIn4D,EAAOmuC,gBAAgB1J,EAASrN,SAAU+gC,OAGlC,YAARzxE,GAEDwyE,EAAaxmB,iBAAiBjhB,EAAKzB,GAClCoiB,EAAajjC,KAAKnP,GAQtBA,EAAOmuC,gBAAgB1J,EAASrN,SAAU+gC,EAElD,MACK,GAAGn4D,EAAOH,KAAK4M,SAAS8F,SAAS,aAAe4iD,EACrD,CAEI,IAAIiE,EAA6BjB,EACjC,GAAI1iC,GAAa8c,WAAWD,EAAW7N,GAenCzkC,EAAOsuC,YAAY7J,EAASrN,SAAU2gC,EAAY,EAAGI,OAdzD,CACI,IAAI/hC,EAAQX,GAAauO,uBAAuBs0B,EAAuBC,EAAqBpuB,EAAUhN,QAClGmV,EAAYtc,QAAQnjB,QAAQonB,UAAU7D,EAAMI,SAASiuB,EAAUtnB,SAChEmV,EAAUnb,kBAAkB2hC,EAAoB,MAE/C94D,EAAOmuC,gBAAgB1J,EAAU20B,GAIjCp5D,EAAOmuC,gBAAgB1J,EAASrN,SAAUgiC,EAElD,CAKJ,KAIJ1vE,KAAKgrE,QAAQ30D,SAAQC,IAEjB,IAAImqC,EAAYnqC,EAAOwjC,iBAAiB3I,GACpCzE,EAAQX,GAAauO,uBAAuBs0B,EAAuBC,EAAqBpuB,EAAUhN,QAClGmV,EAAYtc,QAAQnjB,QAAQonB,UAAU7D,EAAMI,SAASiuB,EAAUtnB,SAEhEmV,EAAUnb,kBAAkB2hC,EAAoB,MAE/C94D,EAAOmuC,gBAAgB1J,EAAU0zB,GAIjCn4D,EAAOmuC,gBAAgB1J,EAASrN,SAAU+gC,EAC9C,IAIJzuE,KAAKwuD,OAAOn4C,SAAQuwB,KAEZA,EAAKzwB,KAAK4M,SAAS8F,SAAS,aAAe4iD,EAE3C7kC,EAAKge,YAAY7J,EAAUszB,EAAY,EAAGI,GAI1C7nC,EAAK6d,gBAAgB1J,EAAU0zB,EACnC,IAGJzuE,KAAK4lD,SAAU,EAEf5lD,KAAKssD,MAAMj2C,SAAQmS,IAEf,IAAImnD,EAAUnnD,EAAKsxB,iBAAiB3I,GAEhCpJ,EAAM4nC,EAAQ/uB,QAAQh3B,IAAIqlD,EAAevhC,SAAS4H,MAAM,MACxDhP,EAAMqpC,EAAQ9uB,QAAQj3B,IAAIqlD,EAAe35B,MAAM,MAEhDk6B,EAAaxmB,iBAAiBjhB,EAAKzB,GAElCoiB,EAAajjC,KAAK+C,GAIlBA,EAAKi8B,gBAAgB1J,EAASrN,SAAU+gC,EAC5C,IAGJzuE,KAAKqpD,MAAM5G,OAAOziD,KAAKspD,SAAS7G,OAAOziD,KAAKupD,UAAUlzC,SAAQuwB,IAE1D,GAAIqT,GAAQrT,EAAKyI,QAAU4K,EAiBvBrT,EAAK6d,gBAAgB1J,EAAU0zB,OAhBnC,CACI,IAAImB,EAAUhpC,EAAKkT,iBAAiB3I,GAEhCpJ,EAAM6nC,EAAQhvB,QAAQh3B,IAAIqlD,EAAevhC,SAAS4H,MAAM,MACxDhP,EAAMspC,EAAQ/uB,QAAQj3B,IAAIqlD,EAAe35B,MAAM,MAEhDk6B,EAAaxmB,iBAAiBjhB,EAAKzB,GAElCoiB,EAAajjC,KAAKmhB,GAIlBA,EAAK6d,gBAAgB1J,EAASrN,SAAU+gC,EAEhD,CAKA7nC,EAAK4iB,UAAU7/B,SAAWid,EAAKub,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBgF,SAASH,QACtFod,EAAK6iB,YAAY9/B,SAAWid,EAAKqb,aAAa78B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBgF,SAASH,QAC1Fod,EAAK8iB,YAAY//B,SAAWid,EAAKsb,aAAa98B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAAoBgF,SAASH,OAAO,IAGrGk/B,EAAaryC,SAAQuwB,IAElBA,EAAK8e,aAAavU,EAAOvK,EAAK,IAIjC,IAAIipC,EAAa,CAAC7vE,KAAKuW,aAAcvW,KAAK0pB,eAAgB1pB,KAAK6pB,gBAC/DgmD,EAAWx5D,SAAQq8C,IAEfA,EAAS/oC,SAAW+oC,EAAS/oC,SAASC,IAAI,IAAI0iB,QAAQnjB,QAAQslD,EAAWA,EAAWA,GAAWhlD,SAASsxB,GAAU,IAItH/6C,KAAK4lD,SAAU,EAEfzU,EAAMiO,mBAENp/C,KAAK89D,WAAWznD,SAAQwnD,GAAQA,EAAKt4C,YACrCvlB,KAAK89D,WAAa,GAElBrnD,YAAW,KACPzW,KAAK0tE,QAAQ1tE,KAAK+U,YAAYk8B,SAAU,MACxCjxC,KAAK0tE,QAAQ1tE,KAAK+W,YAAYk6B,SAAU,MACxCE,EAAMz6B,aACF1W,KAAK82C,gBACL92C,KAAK+U,YAAY67B,OAAO9wC,aAAaG,QAAQid,OAAO,GAAG,GAAG05B,MAAQ4O,GAAWC,aAAazlD,MAAK,GACpG,IACP,CAEA8+C,qBAEI,MAAO,CAAC9+C,KAAK0pB,eAAgB1pB,KAAK6pB,eACtC,CACAm1B,qBAEI,MAAO,CAACh/C,KAAKuW,aACjB,CAEAgP,UAEI,MAAM6/B,EAASplD,KAAK0pB,eAAe8qB,iBACdiO,OAAOziD,KAAK6pB,eAAe2qB,kBAC3BiO,OAAOziD,KAAKuW,aAAai+B,kBAE9C4Q,EAAO/uC,SAAQq+B,IACC,cAATA,EAAE54C,IAED44C,EAAEwgB,KAAK1V,SAEX9K,EAAEnvB,SAAS,IAGfvlB,KAAKmrE,QAAQ90D,SAAQiP,IAEjBA,EAAEC,SAAS,IAEfvlB,KAAK89D,WAAWznD,SAAQwnD,GAAQA,EAAKt4C,YACrCvlB,KAAK0pB,eAAenE,UACpBvlB,KAAK6pB,eAAetE,UACpBvlB,KAAKuW,aAAagP,UAClBvlB,KAAKgX,UAAU45B,OAAO9wC,aAAaiW,aAAaC,QAAUhW,KAAKgX,UAAU45B,OAAO9wC,aAAaiW,aAAaC,QAAQC,QAAOC,GAAGA,GAAKlW,MACrI,CAEA2lD,YAAYxU,EAAO0E,GAEfA,EAAOsM,WAAWM,OAAO5M,EAAOoM,cAAcQ,OAAO5M,EAAOqM,cAAc7rC,SAAQxP,IAE9EA,EAAE2tC,iBAAiBn+B,SAAQgvC,IAExBA,EAAM9/B,SAAS,IAElB1e,EAAE0e,SAAS,IAGZswB,EAAO2T,WAEN3T,EAAO2T,UAAUjkC,UAElBswB,EAAO4T,aAEN5T,EAAO4T,YAAYlkC,UAEpBswB,EAAO6T,aAEN7T,EAAO6T,YAAYnkC,UAGvB,IAAIuqD,EAAc,GAClB,OAAOj6B,EAAO1/B,KAAKwO,UAEf,IAAK,OACDmrD,EAAc9vE,KAAKg6C,MACnB,MACJ,IAAK,OACD81B,EAAc9vE,KAAKqpD,MACnB,MACJ,IAAK,SACDymB,EAAc9vE,KAAKspD,QACnB,MACJ,IAAK,UACDwmB,EAAc9vE,KAAKupD,SACnB,MACJ,IAAK,QACDumB,EAAc9vE,KAAKkrE,OACnB,MACJ,IAAK,SACD4E,EAAc9vE,KAAKgrE,QACnB,MACJ,IAAK,QACD8E,EAAc9vE,KAAKwuD,OACnB,MAGR,IAAIuhB,EAAcD,EAAYpqC,QAAQmQ,GACnCk6B,GAAe,GACdD,EAAYj9C,OAAOk9C,EAAa,GAEpC,IAAIC,EAAsBhwE,KAAKm2C,SAASzQ,QAAQmQ,GAC7Cm6B,GAAuB,GACtBhwE,KAAKm2C,SAAStjB,OAAOm9C,EAAqB,EAClD,CAEAxwB,OAAOrO,EAAO0E,GAEV1E,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA4B/I,EAAO2P,GAAWC,aAAa5P,KAErG,IAAI/uC,EAAQqqC,EAAMP,OAAO9wC,aAAaiW,aAAaC,QAAQ0vB,QAAQmQ,GAChE/uC,GAAS,GACRqqC,EAAMP,OAAO9wC,aAAaiW,aAAaC,QAAQ6c,OAAO/rB,EAAO,GAEjE+uC,EAAOyT,QAAQjzC,SAAQH,IACnBA,EAAEqP,SAAS,IAGfswB,EAAOwT,MAAMhzC,SAAQH,IACjBA,EAAEqP,SAAS,IAGfswB,EAAO0T,SAASlzC,SAAQH,IACpBA,EAAEqP,SAAS,IAGfswB,EAAOq1B,OAAO70D,SAAQH,IAClBA,EAAEqP,SAAS,IAGfswB,EAAOyW,MAAMj2C,SAAQH,IACjBA,EAAEqP,SAAS,IAGf4rB,EAAM+pB,qBACN/pB,EAAMiO,mBACNjO,EAAMz6B,aACNm/B,EAAOtwB,SACX,CAEAwoD,SAAS58B,EAAO0E,GAEZA,EAAO6gB,YAAc7gB,EAAO6gB,WAC5BvlB,EAAMiO,kBACV,EC7nCW,MAAM6wB,WAAqB1L,GACtC7zB,cAEIsR,QACAhiD,KAAKolE,UAAW,EAChBplE,KAAKkwE,cAAgB,KACrBlwE,KAAKuW,aAAe,KACpBvW,KAAKwpD,UAAY,IACrB,CAEAvG,eAEIjjD,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,MAAM53B,EAAO43B,EAAK53B,KAClB,GAAqB,QAAlBA,EAAKwO,SACR,CACI,MAAMu+B,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAC9DmS,EAAIjtC,KAAOA,EACXktC,EAAIltC,KAAOA,EACXnW,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,GACvBD,EAAIzQ,SAAW,KACf0Q,EAAI1Q,SAAW,IACnB,KAGJ,MAAMw9B,EAAMnwE,KAAKslE,aAAatlE,KAAK+U,YAAYk8B,SAASjxC,KAAKiiD,cAC7DkuB,EAAIh6D,KAAOnW,KAAKmW,KAChBg6D,EAAIt6B,OAAS71C,KACbmwE,EAAI35D,YAAW,GACf,MAAM45D,EAAMpwE,KAAKslE,aAAatlE,KAAK+W,YAAYk6B,SAASjxC,KAAKkiD,cAC7DkuB,EAAIj6D,KAAOnW,KAAKmW,KAChBi6D,EAAIv6B,OAAS71C,KACbowE,EAAI55D,YAAW,GACfxW,KAAKiiD,aAAax8B,KAAK0qD,GACvBnwE,KAAKkiD,aAAaz8B,KAAK2qD,EAC3B,CAEA9K,aAAaO,EAASvmB,GAElB,MAAMzF,EAAMyF,EAAOl6B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAClCk1B,EAAIphC,WAAY,EAChB,MAAMg9B,EAAUoE,EAAIxG,kBACpB,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCy/B,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAE3C,GAAGznB,KAAKqvC,OACR,CACI,GAA2B,cAAxBrvC,KAAKqvC,OAAOyW,SACf,CACI,MAAMuqB,EAAc/jC,QAAQka,YAAYggB,YAAY,KAAK,CAAEtuD,MAAOA,EAAOC,OAAQ,KAAQ0tD,GASzF,OARAwK,EAAY19B,SAAWkzB,EAASjzB,kBAAkB,eAClDy9B,EAAYxgC,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAG,EAAG,GAC3DoxB,EAAY1mD,SAAWkwB,EAAIlwB,SAASH,QACpC6mD,EAAY1mD,SAASujB,EAAI,IACzBmjC,EAAY1mD,SAASlC,EAAIznB,KAAKqvC,OAAO2X,eAAev/B,EACpD4oD,EAAYliC,uBACZkiC,EAAYjiC,WAAa,EACzBiiC,EAAY9G,WAAa,IAAIj9B,QAAQ+L,OAAO,KAAO,KAAO,KAAO,GAC1Dg4B,CACX,CAEA,CACI,MAAMA,EAAc/jC,QAAQka,YAAYggB,YAAY,KAAK,CAAEtuD,MAAOy9B,EAAOx9B,OAAQ,KAAQ0tD,GASzF,OARAwK,EAAY19B,SAAWkzB,EAASjzB,kBAAkB,eAClDy9B,EAAYxgC,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAG33B,KAAK23B,GAAK,EAAG,GACrEoxB,EAAY1mD,SAAWkwB,EAAIlwB,SAASH,QACpC6mD,EAAY1mD,SAASujB,EAAI,IACzBmjC,EAAY1mD,SAASzT,EAAIlW,KAAKqvC,OAAO2X,eAAe9wC,EACpDm6D,EAAYliC,uBACZkiC,EAAYjiC,WAAa,EACzBiiC,EAAY9G,WAAa,IAAIj9B,QAAQ+L,OAAO,KAAO,KAAO,KAAO,GAC1Dg4B,CACX,CACJ,CAEA,CACI,MAAMA,EAAc/jC,QAAQka,YAAYggB,YAAY,KAAK,CAAEtuD,MAAOA,EAAOC,OAAQ,KAAQ0tD,GAQzF,OAPAwK,EAAY19B,SAAWkzB,EAASjzB,kBAAkB,eAClDy9B,EAAY1mD,SAAWkwB,EAAIlwB,SAASH,QACpC6mD,EAAYxgC,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAG,EAAG,GAC3DoxB,EAAY1mD,SAASujB,EAAI,IACzBmjC,EAAYliC,uBACZkiC,EAAYjiC,WAAa,EACzBiiC,EAAY9G,WAAa,IAAIj9B,QAAQ+L,OAAO,KAAO,KAAO,KAAO,GAC1Dg4B,CACX,CACJ,CAEA5J,iBAEI,IAEI,MAAMnnB,EAAS,GACft/C,KAAKmiD,WAAWlsC,QAAOC,GAAsB,OAAnBA,EAAEC,KAAKwO,WAAmBtO,SAAQiP,IACxD2tB,GAAUC,cAAc5tB,GACxBg6B,EAAO75B,KAAKH,EAAE,IAGlB,MAAMohD,EAAYp6B,QAAQ2O,KAAK0rB,YAAYrnB,GAAQ,GAAM,OAAM5+B,GAAW,GAAO,GAEjFgmD,EAAUvwD,KAAOnW,KAAKmW,KACtBuwD,EAAUp9C,aAAetpB,KAAKspB,aAC9Bo9C,EAAUr3B,OAASrvC,KAAKspB,cAAc/S,aAEtC08B,GAAUC,cAAcwzB,GAExB,MAAM7sB,EAAM75C,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAC3C+hD,EAAU/8C,SAAWkwB,EAAIlwB,SAASH,QAClCk9C,EAAUE,0BAA2B,EAErC5mE,KAAKmiD,WAAa,GAClBniD,KAAKmiD,WAAW18B,KAAKihD,GACrB1mE,KAAKmiD,WAAW18B,KAAKo0B,EACzB,CACA,MAAMpuB,GAEFtQ,QAAQ6D,MAAMyM,EAClB,CACJ,CAEA8lB,YAAYN,EAAS/zC,GAEjB,MAAMoiD,EAASt/C,KAAKwiD,gBACd1sC,EAAUwpC,EAAOrpC,QAAOC,GAAGA,EAAEwsC,SAAWzR,IAC9Cn7B,EAAQO,SAAQ03B,IACZA,EAAKpkB,SAAWzsB,EAAMssB,OAAO,IAGjCxpB,KAAKmiD,WAAW9rC,SAAQH,IACpBA,EAAEyT,SAAWzsB,EAAMssB,OAAO,GAElC,CAEAgwB,gBAEI,MAAM,CACF,CACIx8C,KAAK,SACLmgD,MAAMn9C,KAAK0+C,cACb,CACE1hD,KAAK,gBACLmgD,MAAMn9C,KAAKq3C,SACb,CACEr6C,KAAK,gBACLmgD,MAAMn9C,KAAKm3C,SAMf,CACIn6C,KAAK,SACLmgD,MAAMn9C,KAAKw/C,QAGvB,CAEAzH,mBAAmB5G,GAEf,IAAIuI,EAAkB15C,KAAKk5C,mBAAmB/H,EAAMF,UAChDkW,EAASnnD,KAAKq5C,yBAEd+N,EAAYpnD,KAAKg9C,kBAAkBtD,EAAiBvI,EAAOnxC,KAAKmW,KAAKwO,SAAU3kB,KAAKw5C,iBACxF2N,EAAO7N,QAAQX,WAAWyO,GAE1BpnD,KAAKy3C,cAAchyB,KAAK0hC,EAAO7N,SAE/B,IAAIO,EAAM75C,KAAK85C,iBAAiB3I,GAC5BkW,EAAU,IAAI/a,QAAQ2O,KAAK,WAAY9J,EAAMF,UAWjD,OAVAoW,EAAQ19B,SAAWkwB,EAAIpG,OACvBzzC,KAAK03C,mBAAmBjyB,KAAK4hC,GAE7BrnD,KAAKy3C,cAAcphC,SAAQ6kC,IAEvBxB,EAAgBf,WAAWuC,EAAM,IAGrCl7C,KAAKg4C,cAAc0B,GAEZ15C,KAAKy3C,aAChB,CAEAN,QAAQhG,EAAO0E,GAEPA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA8B/I,IAC5E,IAAIgJ,EAAWhJ,EAAOiJ,qBAClBC,EAAWlJ,EAAOmJ,qBAElB8G,EAAWjQ,EAAOxG,OAAOyW,SACd,YAAZA,GAECjH,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,CAAC,IAE9B6oC,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQ9B,GAAKnC,EAAEiE,QAAQ9B,CAAC,MAK9Bo3B,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQ2jB,GAAK5nB,EAAEiE,QAAQ2jB,CAAC,IAE9B6R,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQ9B,GAAKnC,EAAEiE,QAAQ9B,CAAC,IAGtC,CAEA4vB,QAAQlG,EAAO0E,GAEPA,EAAOiB,eACP3F,EAAMP,OAAO9wC,aAAa6+C,YAAY,IAAIC,GAA8B/I,IAC5E,IAAIgJ,EAAWhJ,EAAOiJ,qBAClBC,EAAWlJ,EAAOmJ,qBAElB8G,EAAWjQ,EAAOxG,OAAOyW,SACd,YAAZA,GAECjH,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQ2jB,GAAK5nB,EAAEiE,QAAQ2jB,CAAC,IAE9B6R,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,CAAC,MAK9B2oC,EAASxoC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,CAAC,IAE9B6oC,EAAS1oC,SAAQiP,IAEbA,EAAEiE,QAAQrT,GAAKoP,EAAEiE,QAAQrT,CAAC,IAGtC,CAEA4oC,qBAEI,OAAO9+C,KAAKwiD,eAChB,CACAxD,qBAEI,OAAOh/C,KAAKmiD,UAChB,CAEA8kB,kBAEI,MAAMlO,EAAI3tC,OAAOprB,KAAKmW,KAAK8vD,SAAS,IAC9BlgC,EAAI3a,OAAOprB,KAAKmW,KAAK8vD,SAAS,IAEpC,IAAI,IAAIiB,KAAMlnE,KAAKwiD,gBAEN,IAANuW,IAECmO,EAAG39C,QAAQ2jB,IAAM,GAEZ,IAANnH,IAECmhC,EAAG39C,QAAQrT,IAAM,EAG7B,CAEAixD,kBAEI,MAAMpO,EAAI3tC,OAAOprB,KAAKmW,KAAK8vD,SAAS,IAC9BlgC,EAAI3a,OAAOprB,KAAKmW,KAAK8vD,SAAS,IAEpC,IAAI,IAAIiB,KAAMlnE,KAAKmiD,WAEN,IAAN4W,IAECmO,EAAG39C,QAAQ9B,IAAM,GAEZ,IAANse,IAECmhC,EAAG39C,QAAQrT,IAAM,EAG7B,CAEAkxD,kBAEQpnE,KAAKspB,eAGTtpB,KAAKiiD,aAAa5rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAKspB,aAAaI,iBAC1D1pB,KAAKkiD,aAAa7rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAKspB,aAAaO,iBAC1D7pB,KAAKmiD,WAAW9rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAKspB,aAAa/S,eAE5D,CAEA8wD,6BAEI,MAAMiJ,EAAmBtwE,KAAKwiD,gBAAgBvsC,QAAOqP,GAAuB,WAApBA,EAAEnP,KAAKwO,WACzD4iD,EAAgBvnE,KAAKwiD,gBAAgBvsC,QAAOqP,GAAuB,QAApBA,EAAEnP,KAAKwO,WACtDyjC,EAAWpoD,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,WAApBA,EAAEC,KAAKwO,WAC1C6iD,EAAcxnE,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAE7C8iD,EAAOrf,EAAS/U,kBAAkBC,YAClCo0B,EAAyB,EAApBD,EAAK/xB,WAAWjuB,EAE3B,IAAI,IAAI8oD,KAAkBD,EAC1B,CACIC,EAAe5mD,SAASzT,EAAIkyC,EAASz+B,SAASzT,EAC9Cq6D,EAAe5mD,SAASlC,EAAI2gC,EAASz+B,SAASlC,EAC9C8oD,EAAe1gC,SAAS3C,EAAIkb,EAASvY,SAAS3C,EAE9C,MAAM06B,EAAO2I,EAAel9B,kBAAkBC,YACxCu0B,EAAwB,EAAnBD,EAAKlyB,WAAWxI,EAErB46B,EAAMJ,EAAKG,EACgB,IAA9B0I,EAAe1gC,SAAS3C,EAEvBqjC,EAAe5mD,SAASlC,GAAKqgD,EAAI,EAAIyI,EAAehnD,QAAQ2jB,EAAIltC,KAAKspB,aAAa/S,aAAagT,QAAQ9B,EAIvG8oD,EAAe5mD,SAASzT,GAAK4xD,EAAI,EAAIyI,EAAehnD,QAAQ2jB,EAAIltC,KAAKspB,aAAa/S,aAAagT,QAAQrT,CAE/G,CAEA,IAAI,IAAI6xD,KAAeR,EAEnBQ,EAAYp+C,SAASzT,EAAIsxD,EAAY79C,SAASzT,EAC9C6xD,EAAYp+C,SAASlC,EAAI+/C,EAAY79C,SAASlC,EAC9CsgD,EAAYl4B,SAAS3C,EAAIs6B,EAAY33B,SAAS3C,CAEtD,CAEAyxB,6BAEI,MAAM4R,EAAiBvwE,KAAKwiD,gBAAgBp9B,MAAKE,GAAuB,WAApBA,EAAEnP,KAAKwO,WACrDojD,EAAc/nE,KAAKwiD,gBAAgBp9B,MAAKE,GAAuB,QAApBA,EAAEnP,KAAKwO,WAClDyjC,EAAWpoD,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,WAApBA,EAAEC,KAAKwO,WAC1C6iD,EAAcxnE,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,WAEnDyjC,EAAS7+B,QAAQrT,EAAIq6D,EAAehnD,QAAQrT,EAC5CkyC,EAAS7+B,QAAQ9B,EAAI8oD,EAAehnD,QAAQ2jB,EAC5Cs6B,EAAYj+C,QAAUw+C,EAAYx+C,QAClC6+B,EAASvY,SAAS3C,EAAIqjC,EAAe1gC,SAAS3C,EAC9Cs6B,EAAY33B,SAAS3C,EAAI66B,EAAYl4B,SAAS3C,EAC9Ckb,EAASz+B,SAAW4mD,EAAe5mD,SAASH,QAC5C4+B,EAASz+B,SAASujB,EAAIltC,KAAKmW,KAAKgC,OAAO,IACvCqvD,EAAY79C,SAAWo+C,EAAYp+C,SAASH,QAC5Cg+C,EAAY79C,SAASujB,EAAIltC,KAAKmW,KAAKgC,OAAO,IAE1CnY,KAAKmiD,WAAW9rC,SAAQH,GAAGA,EAAEm5B,OAASrvC,KAAKspB,aAAa/S,cAC5D,EC5WW,MAAMi6D,WAAsBjM,GACvC7zB,cAEIsR,QACAhiD,KAAKolE,UAAW,CACpB,CAEA5rB,gBAEI,MAAO,CACH,CACIx8C,KAAK,SACLmgD,MAAMn9C,KAAK0+C,cACb,CACE1hD,KAAK,SACLmgD,MAAMn9C,KAAKw/C,QAGvB,CAEAzH,mBAAmB5G,GAEf,IAAIuI,EAAkB15C,KAAKk5C,mBAAmB/H,EAAMF,UAChDkW,EAASnnD,KAAKq5C,yBAEd+N,EAAYpnD,KAAKg9C,kBAAkBtD,EAAiBvI,EAAOnxC,KAAKmW,KAAKwO,SAAU3kB,KAAKw5C,iBACxF2N,EAAO7N,QAAQX,WAAWyO,GAE1BpnD,KAAKy3C,cAAchyB,KAAK0hC,EAAO7N,SAE/B,IAAIO,EAAM75C,KAAK85C,iBAAiB3I,GAC5BkW,EAAU,IAAI/a,QAAQ2O,KAAK,WAAY9J,EAAMF,UAWjD,OAVAoW,EAAQ19B,SAAWkwB,EAAIpG,OACvBzzC,KAAK03C,mBAAmBjyB,KAAK4hC,GAE7BrnD,KAAKy3C,cAAcphC,SAAQ6kC,IAEvBxB,EAAgBf,WAAWuC,EAAM,IAGrCl7C,KAAKg4C,cAAc0B,GAEZ15C,KAAKy3C,aAChB,CAEAwL,eAEIjjD,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,MAAM53B,EAAO43B,EAAK53B,KACZ+sC,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAC9DmS,EAAIjtC,KAAOA,EACXktC,EAAIltC,KAAOA,EACXitC,EAAI3qC,WAAY,EAChB4qC,EAAI5qC,WAAY,EAChBzY,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,EAAI,IAG/B,MAAMotB,EAAMzwE,KAAKslE,aAAatlE,KAAK+U,YAAYk8B,SAASjxC,KAAKiiD,cAC7DwuB,EAAIp6D,SAAQH,GAAGA,EAAEC,KAAOnW,KAAKmW,OAE7B,MAAMu6D,EAAM1wE,KAAKslE,aAAatlE,KAAK+W,YAAYk6B,SAASjxC,KAAKkiD,cAC7DwuB,EAAIr6D,SAAQH,GAAGA,EAAEC,KAAOnW,KAAKmW,OAG7BnW,KAAKiiD,aAAa,GAAG18B,UAErBvlB,KAAKiiD,aAAa,GAAKwuB,EAAI,GAC3BzwE,KAAKiiD,aAAax8B,KAAKgrD,EAAI,IAE3BzwE,KAAKkiD,aAAa,GAAG38B,UAErBvlB,KAAKkiD,aAAa,GAAKwuB,EAAI,GAC3B1wE,KAAKkiD,aAAaz8B,KAAKirD,EAAI,IAE3B1wE,KAAK2wE,WAAW,GAChB3wE,KAAK2wE,WAAa3wE,KAAKiiD,aAAaQ,OAAOziD,KAAKkiD,aACpD,CAEAojB,aAAaO,EAASvmB,GAElB,MAAMzF,EAAMyF,EAAO,GACnBzF,EAAIphC,WAAY,EAChB,MAAMg9B,EAAUoE,EAAIxG,kBACpB,IAAIn7B,EAA2C,EAAnCu9B,EAAQnC,YAAYoC,WAAWx/B,EACvCy/B,EAA2C,EAAnCF,EAAQnC,YAAYoC,WAAWjuB,EAC3C,MAAMvnB,EAASgY,EAAQy9B,EAAQz9B,EAAQy9B,EAEjCi7B,EAAUtkC,QAAQka,YAAYggB,YAAY,KAAK,CAAEtuD,MAAOhY,EAAQiY,OAAQ,KAAQ0tD,GACtF+K,EAAQj+B,SAAWkzB,EAASjzB,kBAAkB,eAC9Cg+B,EAAQ/gC,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAGpF,EAAIhK,SAAS3C,EAAG,GACpE0jC,EAAQjnD,SAAWkwB,EAAIlwB,SAASH,QAChConD,EAAQjnD,SAASujB,EAAI,IAGrB,MAAM2jC,EAAU7wE,KAAK8wE,cAAcF,EAAQ/K,GAC3C,OAAOgL,CACX,CAEAC,cAAcC,EAAMlL,GAEhB,MAAM3tD,EAA2D,EAAnD64D,EAAM19B,kBAAkBC,YAAYoC,WAAWx/B,EACvDiC,EAA4D,EAAnD44D,EAAM19B,kBAAkBC,YAAYoC,WAAWxI,EAExDgH,EAAK,IAAI5H,QAAQnjB,SAASjR,EAAM,EAAEC,EAAO,EAAG,GAC5Cg8B,EAAK,IAAI7H,QAAQnjB,QAAQjR,EAAM,EAAEC,EAAO,EAAG,GAC3C0rD,EAAK,IAAIv3B,QAAQnjB,QAAQjR,EAAM,GAAGC,EAAO,EAAG,GAC5C2rD,EAAK,IAAIx3B,QAAQnjB,SAASjR,EAAM,GAAGC,EAAO,EAAG,GAEnD,IAAI6xC,EAAS,GACb,MAAMC,EAAW,GAIbD,EAFD9xC,EAAQC,EAEED,EAAM+xC,EAIN9xC,EAAO8xC,EAGpB,MAAM+mB,EAAc1kC,QAAQka,YAAY2D,kBAAkB,KAAK,CAACld,OAAQ,CAACiH,EAAGC,EAAG0vB,EAAGC,EAAG5vB,GAAKkW,SAAU,EAAGC,QAAS,EAAGL,OAAQA,GAAS6b,GAOpI,OANAmL,EAAYz4B,MAAQ,IAAIjM,QAAQ+L,OAAO,KAAO,KAAO,KAAO,GAE5D24B,EAAYnhC,SAAWkhC,EAAMlhC,SAASrmB,QACtCwnD,EAAYrnD,SAAWonD,EAAMpnD,SAASH,QACtCwnD,EAAYn7B,OAAS71C,KACrB+wE,EAAMl7B,OAAS71C,KACR,CAAC+wE,EAAMC,EAClB,EChIW,MAAMC,WAAmBlvB,GACpCrR,cAEIsR,QACAhiD,KAAKwpD,UAAY,KACjBxpD,KAAKypD,YAAc,KACnBzpD,KAAK0pD,YAAc,KACnB1pD,KAAKolE,UAAW,CACpB,CAEAniB,eAEIjjD,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,MAAM53B,EAAO43B,EAAK53B,KAClB,GAAqB,QAAlBA,EAAKwO,SACR,CACI,MAAMu+B,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAC9DmS,EAAIjtC,KAAOA,EACXktC,EAAIltC,KAAOA,EACXitC,EAAI3qC,WAAY,EAChB4qC,EAAI5qC,WAAY,EAChBzY,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,EAC3B,KAGJ,MAAM6tB,EAAMlxE,KAAKslE,aAAatlE,KAAK+U,YAAYk8B,UAC/CigC,EAAI/6D,KAAOnW,KAAKmW,KAChB+6D,EAAIr7B,OAAS71C,KACbkxE,EAAI16D,YAAW,GACf,MAAM26D,EAAMnxE,KAAKslE,aAAatlE,KAAK+W,YAAYk6B,UAC/CkgC,EAAIh7D,KAAOnW,KAAKmW,KAChBg7D,EAAIt7B,OAAS71C,KACbmxE,EAAI36D,YAAW,GACfxW,KAAKiiD,aAAax8B,KAAKyrD,GACvBlxE,KAAKkiD,aAAaz8B,KAAK0rD,EAC3B,CAEA7L,aAAaO,GAET,OAAO7lE,KAAKoxE,WAAWvL,EAC3B,CAEAuL,WAAWvL,GAEP,MAAM5Y,EAAKjtD,KAAKmiD,WAAW,GAAG9O,kBAAkBC,YAC1Cp7B,EAAyB,EAAjB+0C,EAAGvX,WAAWx/B,EACtBiC,EAA0B,EAAjB80C,EAAGvX,WAAWjuB,EAEvBysB,EAAK,IAAI5H,QAAQnjB,SAASjR,EAAM,EAAEC,EAAO,EAAG,GAC5Cg8B,EAAK,IAAI7H,QAAQnjB,QAAQjR,EAAM,EAAEC,EAAO,EAAG,GAC3C0rD,EAAK,IAAIv3B,QAAQnjB,QAAQjR,EAAM,GAAGC,EAAO,EAAG,GAC5C2rD,EAAK,IAAIx3B,QAAQnjB,SAASjR,EAAM,GAAGC,EAAO,EAAG,GAE7C+hC,EAAO5N,QAAQka,YAAYud,YAAY,KAAK,CAAC92B,OAAQ,CAACiH,EAAGC,EAAG0vB,EAAG3vB,EAAG4vB,EAAG3vB,EAAG0vB,EAAGC,IAAM+B,GAKvF,OAJA3rB,EAAK3B,MAAQ,IAAIjM,QAAQ+L,OAAO,KAAO,KAAO,KAAO,GACrD6B,EAAKrK,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAG,EAAG,GACpD/E,EAAKvwB,SAAW3pB,KAAKmiD,WAAW,GAAGx4B,SAASH,QAErC0wB,CACX,CAEAozB,eAAezH,GAEX,MAAM5Y,EAAKjtD,KAAKmiD,WAAW,GAAG9O,kBAAkBC,YAC1Cp7B,EAAyB,EAAjB+0C,EAAGvX,WAAWx/B,EACtBiC,EAA0B,EAAjB80C,EAAGvX,WAAWjuB,EAE7B,IAAIuiC,EAAS,GACb,MAAMC,EAAW,GAIbD,EAFD9xC,EAAQC,EAEED,EAAM+xC,EAIN9xC,EAAO8xC,EAGpB,MAAM/V,EAAK,IAAI5H,QAAQnjB,SAASjR,EAAM,EAAEC,EAAO,EAAG,GAC5Cg8B,EAAK,IAAI7H,QAAQnjB,QAAQjR,EAAM,EAAEC,EAAO,EAAG,GAC3C0rD,EAAK,IAAIv3B,QAAQnjB,QAAQjR,EAAM,GAAGC,EAAO,EAAG,GAC5C2rD,EAAK,IAAIx3B,QAAQnjB,SAASjR,EAAM,GAAGC,EAAO,EAAG,GAE7C+hC,EAAO5N,QAAQka,YAAY2D,kBAAkB,KAAK,CAACld,OAAQ,CAACiH,EAAGC,EAAG0vB,EAAG3vB,EAAG4vB,EAAG3vB,EAAG0vB,EAAGC,GAAK1Z,SAAU,EAAGC,QAAS,EAAGL,OAAQA,GAAS6b,GAItI,OAHA3rB,EAAK3B,MAAQ,IAAIjM,QAAQ+L,OAAO,KAAO,KAAO,KAAO,IACrD6B,EAAKrK,SAAW,IAAIvD,QAAQnjB,QAAQ7B,KAAK23B,GAAK,EAAG,EAAG,GACpD/E,EAAKvwB,SAAW3pB,KAAKmiD,WAAW,GAAGx4B,SAASH,QACrC0wB,CACX,CAEA0I,mBAEI,OAAO5iD,KAAKspB,YAChB,CAEAiqC,gBAAgBoR,EAAO,MAEnB,IAAIC,EAAUD,GAAc3kE,KAAKspB,aACjC,GAAGtpB,KAAKwpD,UAEJ,OAEJ,MAAMA,EAAYxpD,KAAKmiD,WAAW/8B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,YAAqB6E,QACtE,IAAIggC,EACA,OAIJ,GAHAA,EAAU7W,SAAW3yC,KAAKgX,UAAUi6B,SAAS2B,kBAAkB,kBAC/D5yC,KAAKwpD,UAAYxpD,KAAK6kE,iBAAiBrb,EAAUob,EAAQruD,cAEtDvW,KAAKypD,YAEJ,OAEJ,MAAMA,EAAczpD,KAAKiiD,aAAa78B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,YAAqB6E,QAC1E,IAAIigC,EACA,OAIJ,GAHAA,EAAY9W,SAAW3yC,KAAK+U,YAAYk8B,SAAS2B,kBAAkB,kBACnE5yC,KAAKypD,YAAczpD,KAAK6kE,iBAAiBpb,EAAYmb,EAAQl7C,gBAE1D1pB,KAAK0pD,YAEJ,OAEJ,MAAMA,EAAc1pD,KAAKkiD,aAAa98B,MAAKlP,GAAuB,QAApBA,EAAEC,KAAKwO,YAAqB6E,QACtEkgC,IAEJA,EAAY/W,SAAW3yC,KAAK+W,YAAYk6B,SAAS2B,kBAAkB,kBACnE5yC,KAAK0pD,YAAc1pD,KAAK6kE,iBAAiBnb,EAAYkb,EAAQ/6C,gBACjE,CAEAg7C,iBAAiBrb,EAAUkJ,GAEvB,GAAIlJ,EAiBJ,OAdAvW,GAAUY,cAAc2V,GACxBvW,GAAU+B,0BAA0BwU,EAAUkJ,GAC9ClJ,EAAUna,OAAS,KACnBma,EAAU1tD,GAAK,eACf0tD,EAAU7C,UAAY6C,EAAU7/B,SAASH,QACzCggC,EAAUlgC,aAAetpB,KAAKspB,aAC9BkgC,EAAUkJ,SAAWA,EACrBlJ,EAAUna,OAASqjB,EACnBlJ,EAAU3T,OAAS71C,KACnBwpD,EAAU/wC,WAAY,EACtB+wC,EAAUhzC,YAAW,GACrBgzC,EAAU0L,KAAO,IAAIgU,GAAY1f,EAAWA,EAAU9G,OAAO,KAAMgQ,EAAShQ,QAAU1iD,KAAKgX,UAAUi6B,UACrGuY,EAAUzV,qBAEHyV,CACX,CAEArtC,mBAAmB80B,GAEf,IAAIopB,GAAU,EACd,MAAMsP,EAAc3pE,KAAKwpD,UAAUjgC,QAAQC,QAC3C,IAAImgD,EACA,OAEJ3pE,KAAKwpD,UAAUjgC,QAAQrT,GAAK,OAC5BlW,KAAKwpD,UAAUjgC,QAAQ9B,GAAK,OAC5BznB,KAAKwpD,UAAUzV,qBAEf,MAAM61B,EAAMt9B,QAAQ6W,IAAIvO,SAAS50C,KAAKwpD,WAKtC,GAHGxpD,KAAKwpD,UAAU0L,KAAK+E,mBAAmB/5D,OAAS,IAC/Cm6D,GAAU,IAEVA,EACA,OAEJ,MAAMuO,EAAM33B,EAAS2B,kBAAkB,eACjCpsB,EAASojD,EAAI70B,OAAO,WAAW6zB,EAAI33B,GAAS,GAClDzqB,EAAO6oB,OAASrvC,KAAKwpD,UAAUna,OAC/B7oB,EAAOmlC,WAAU,GAEjB3rD,KAAKwpD,UAAUjgC,QAAUogD,EAAYngD,QACrC,MAAM0rC,EAAOl1D,KAAKwpD,UAAU0L,KAC5BA,EAAK+E,mBAAmBx0C,KAAKe,EACjC,EC1LW,MAAM6qD,WAAqBtvB,GACtCrR,cAEIsR,OACJ,CAEAiB,eAEIjjD,KAAKmiD,WAAW9rC,SAAQ03B,IACpB,MAAMmV,EAAS5W,QAAQ6W,IAAIvO,SAAS7G,GAC9BqV,EAAMF,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+U,YAAYk8B,UAAS,GACxDoS,EAAMH,EAAOnO,OAAO,KAAK,KAAK/0C,KAAK+W,YAAYk6B,UAAS,GAE9DmS,EAAIjtC,KAAO43B,EAAK53B,KAChBktC,EAAIltC,KAAO43B,EAAK53B,KAEhBitC,EAAIzQ,SAAW3yC,KAAK+U,YAAYk8B,SAAS2B,kBAAkB,WAC3DyQ,EAAI1Q,SAAW3yC,KAAK+W,YAAYk6B,SAAS2B,kBAAkB,WAE3D5yC,KAAKiiD,aAAax8B,KAAK29B,GACvBpjD,KAAKkiD,aAAaz8B,KAAK49B,EAAI,GAEnC,CAEAiuB,kBAEI,OAAOtxE,KAAKmiD,WAAW,GAAGwC,gBAC9B,CAEAp/B,UAEI,IAAI,IAAI1e,KAAK7G,KAAKiiD,aAEdp7C,EAAE0e,UAEN,IAAI,IAAI1e,KAAK7G,KAAKkiD,aAEdr7C,EAAE0e,UAEN,IAAI,IAAI1e,KAAK7G,KAAKmiD,WAEdt7C,EAAE0e,UAGHvlB,KAAKspB,eAEJtpB,KAAKspB,aAAa6sB,SAAWn2C,KAAKspB,aAAa6sB,SAASlgC,QAAOC,GAAKA,GAAKlW,OACzEA,KAAKspB,aAAa0hD,QAAUhrE,KAAKspB,aAAa0hD,QAAQ/0D,QAAOC,GAAKA,GAAKlW,OAE/E,EC/CW,MAAMuxE,GACjB7gC,cAEI1wC,KAAKmW,KAAO,CAACwO,SAAW,QACxB3kB,KAAKwxE,QAAU,KACfxxE,KAAKyxE,QAAU,KACfzxE,KAAK0xE,WAAa,KAClB1xE,KAAK2xE,WAAa,KAClB3xE,KAAK4xE,UAAY,KACjB5xE,KAAKyqD,WAAa,KAClBzqD,KAAK6xE,SAAW,KAChB7xE,KAAK4gB,QAAS,EACd5gB,KAAK27D,aAAe,KAEpB37D,KAAK+U,YAAc,KACnB/U,KAAK+W,YAAc,KACnB/W,KAAKgX,UAAY,IACrB,CAEAqlD,UAAUn/D,GAEN,MAAM40E,EAAQ9xE,KAAK0xE,WAAWhvB,OAAO9P,kBAAkB,gBACjDm/B,EAAQ/xE,KAAK0xE,WAAWhvB,OAAO9P,kBAAkB,mBACjDo/B,EAAQhyE,KAAK2xE,WAAWjvB,OAAO9P,kBAAkB,gBACjDq/B,EAAQjyE,KAAK2xE,WAAWjvB,OAAO9P,kBAAkB,mBAEvD5yC,KAAK0xE,WAAW/+B,SAAWz1C,EAAQ40E,EAAQC,EAC3C/xE,KAAK2xE,WAAWh/B,SAAWz1C,EAAQ80E,EAAQC,EAC3CjyE,KAAK4gB,OAAS1jB,CAClB,CAEA+mD,UAAUhT,EAAS/zC,GAEZ+zC,IAAajxC,KAAK0xE,WAAWhvB,OAE5B1iD,KAAK0xE,WAAWl7D,WAAWtZ,GAI3B8C,KAAK2xE,WAAWn7D,WAAWtZ,EAEnC,CAEAq0C,YAAYN,EAASkC,GAEdlC,IAAajxC,KAAK0xE,WAAWhvB,OAE5B1iD,KAAK0xE,WAAW/nD,SAAWwpB,EAAI3pB,QAI/BxpB,KAAK2xE,WAAWhoD,SAAWwpB,EAAI3pB,OAEvC,CAEA+yC,mBAAmBtrB,GAEf,OAAGA,IAAajxC,KAAK0xE,WAAWhvB,OAErB1iD,KAAK0xE,WAIL1xE,KAAK2xE,UAEpB,CAEAvV,eAAeyV,EAAS3xE,EAAO07C,GAE3B57C,KAAK6xE,SAAWA,EAEhB,MAAMK,EAAU,IACVC,EAAUnyE,KAAK0xE,WAAWhvB,OAC1B0vB,EAAUpyE,KAAK2xE,WAAWjvB,OAC1BjP,EAASzzC,KAAKyqD,WAAW7gC,IAAIioD,GAAU5sB,OAAO,IAAI97B,GAAAA,QAAQ,EAAE,EAAE,IAEpEnpB,KAAKwxE,SAASjsD,UACdvlB,KAAKyxE,SAASlsD,UAEd,MAAM8sD,EAAsB,MAATz2B,EAAe,EAAI,EAChC02B,EAAsB,MAAT12B,EAAe,EAAI,EAChC1jC,GAAShY,EAASgyE,GAAWG,EAAaH,EAAUI,EACpD38B,GAASz1C,EAASgyE,GAAWI,EAAaJ,EAAUG,EAEpDE,EAAavyE,KAAKwyE,UAAUt6D,EAAMy9B,EAAMw8B,EAAQ1+B,GAChDg/B,EAAazyE,KAAKwyE,UAAUt6D,EAAMy9B,EAAMy8B,EAAQ3+B,GAEtDzzC,KAAKwxE,QAAUe,EACfvyE,KAAKyxE,QAAUgB,EAEfzyE,KAAKwxE,QAAQh7D,YAAW,GACxBxW,KAAKyxE,QAAQj7D,YAAW,EAC5B,CAEAg8D,UAAUt6D,EAAMy9B,EAAM1E,EAASkC,GAE3B,MAAM0G,EAAMvN,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAQA,EAAOC,OAAS,MAAOw9B,MAAQA,GAAO1E,GAG9F,OAFA4I,EAAIlH,SAAW1B,EAAS2B,kBAAkB,gBAC1CiH,EAAIlwB,SAAWwpB,EAAI3pB,QACZqwB,CACX,CAEA1yB,eAEI,IAAInnB,KAAK6xE,SACL,OAEJ,MAAM9jB,EAAM,IAAIlI,GAChBkI,EAAIh5C,YAAc/U,KAAK+U,YACvBg5C,EAAIh3C,YAAc/W,KAAK+W,YACvBg3C,EAAI/2C,UAAYhX,KAAKgX,UAErB,MAAMg3C,EAAQhuD,KAAK+U,YAAYk8B,SACzBgd,EAAQjuD,KAAK+W,YAAYk6B,SACzBid,EAAUluD,KAAKgX,UAAUi6B,SAEzBkd,EAASnuD,KAAK0yE,eAAe1kB,EAAM,WACnCI,EAASpuD,KAAK0yE,eAAezkB,EAAM,WACnC7F,EAAWpoD,KAAK0yE,eAAexkB,EAAQ,WAEvCykB,EAAS3yE,KAAK27D,aAAa3hB,MAAMhtB,KAAI9W,GAAGA,EAAEC,OAAMF,QAAOC,GAAGA,EAAE6M,SAAS8F,SAAS,cAC9E+pD,EAAUtrD,KAAKgf,OAAOqsC,EAAO3lD,KAAI9W,GAAGA,EAAEjZ,KAAKogB,MAAM,YAAY,KAAIpH,QAAOC,GAAGA,IAAG8W,KAAI9W,GAAGkV,OAAOlV,MAC5F28D,EAAUlK,SAASiK,GAAWA,EAAS,EAAI,EAC3CpnB,EAAaxrD,KAAK27D,aAAaxlD,KAAKlZ,KAAO,IAAM+C,KAAK27D,aAAaxlD,KAAKwO,SACxExO,EAAO,CAACwO,SAAS,OAAQshD,SAAS,KAAMhpE,KAAK,gBAAgB41E,EAAQ9vD,SAAS,WAAW8vD,EAASrnB,WAAWA,GACnHuC,EAAI53C,KAAOA,EACX43C,EAAIzkC,aAAetpB,KAAK27D,aAExBxN,EAAOh4C,KAAOA,EACdi4C,EAAOj4C,KAAOA,EACdiyC,EAASjyC,KAAOA,EAEhBg4C,EAAOtY,OAASkY,EAChBK,EAAOvY,OAASkY,EAChB3F,EAASvS,OAASkY,EAElBA,EAAI9L,aAAax8B,KAAK0oC,GACtBJ,EAAI7L,aAAaz8B,KAAK2oC,GACtBL,EAAI5L,WAAW18B,KAAK2iC,GAEpB,MAAM7S,EAAMv1C,KAAK27D,aAAajyC,eAAemmB,SAAS3C,EACtDihB,EAAOte,SAAS3C,GAAKqI,EACrB6Y,EAAOve,SAAS3C,GAAKqI,EACrB6S,EAASvY,SAAS3C,GAAKqI,EAEvB4Y,EAAOxkC,SAASujB,EAAI,OAAaltC,KAAK27D,aAAajyC,eAAeC,SAASujB,EAC3EkhB,EAAOzkC,SAASujB,EAAI,OAAaltC,KAAK27D,aAAa9xC,eAAeF,SAASujB,EAC3Ekb,EAASz+B,SAASujB,EAAI,OAAaltC,KAAK27D,aAAaplD,aAAaoT,SAASujB,EAE3E+F,GAAUY,cAAcsa,GACxBlb,GAAUY,cAAcua,GACxBnb,GAAUY,cAAcuU,GAMxB,MAAM0qB,EAAQ3kB,EAAOzC,sBACfqnB,EAAQ3kB,EAAO1C,sBACfsnB,EAAO5qB,EAASsD,sBAuBtB,OArBAyC,EAAO9e,OAASrvC,KAAK27D,aAAajyC,eAClC0kC,EAAO/e,OAASrvC,KAAK27D,aAAa9xC,eAClCu+B,EAAS/Y,OAASrvC,KAAK27D,aAAaplD,aAEpC43C,EAAOzJ,oBAAoBouB,GAC3B1kB,EAAO1J,oBAAoBquB,GAC3B3qB,EAAS1D,oBAAoBsuB,GAE7BjlB,EAAIjH,cACJiH,EAAIzkC,aAAetpB,KAAK27D,aACxB37D,KAAK27D,aAAaxlB,SAAS1wB,KAAKsoC,GAChC/tD,KAAK27D,aAAa3hB,MAAMv0B,KAAKsoC,GAE7B/tD,KAAKyqD,WAAazqD,KAAK6xE,SAASroD,QAChCxpB,KAAK6xE,SAAW,KAChB7xE,KAAKuxC,YAAYyc,EAAMhuD,KAAKyqD,YAC5BzqD,KAAKuxC,YAAY0c,EAAMjuD,KAAKyqD,YAE5BzqD,KAAK27D,aAAanI,iBAAiBxzD,KAAK27D,aAAajO,gBAErDK,EAAI53C,KAAK4/B,KAAO/1C,KAAKgX,UAAU45B,OAAO9wC,aAAamzE,aAC5CllB,CACX,CAEA2kB,eAAezhC,EAASsS,GAEpB,MAAMqmB,EAAMt9B,QAAQ6W,IAAIvO,SAAS50C,KAAKwxE,SAChC5I,EAAM33B,EAAS2B,kBAAkB2Q,GAEjCqE,EAAUgiB,EAAI70B,OAAO,KAAK6zB,EAAI33B,GAAS,GAC7C,OAAO2W,CACX,CAGAriC,UAEIvlB,KAAKwxE,SAASjsD,UACdvlB,KAAKyxE,SAASlsD,UACdvlB,KAAK0xE,YAAYnsD,UACjBvlB,KAAK2xE,YAAYpsD,UAEjBvlB,KAAK+U,YAAYo6C,eAAgB,EACjCnvD,KAAK+W,YAAYo4C,eAAgB,EAEjC,MAAMnB,EAAQhuD,KAAK+U,YAAYk8B,SACzBgd,EAAQjuD,KAAK+W,YAAYk6B,SAE/B+c,EAAMoH,cAAc,aAAa/+C,SAAQ20C,IACrCA,EAAEzlC,SAAS,IAGf0oC,EAAMmH,cAAc,aAAa/+C,SAAQ20C,IACrCA,EAAEzlC,SAAS,GAEnB,ECvNW,MAAM2tD,GACjBxiC,cAEI1wC,KAAKmW,KAAO,CAACwO,SAAW,WACxB3kB,KAAKwxE,QAAU,KACfxxE,KAAKyxE,QAAU,KACfzxE,KAAKmzE,SAAW,KAChBnzE,KAAK0xE,WAAa,KAClB1xE,KAAK2xE,WAAa,KAClB3xE,KAAK4xE,UAAY,KACjB5xE,KAAKyqD,WAAa,KAClBzqD,KAAK6xE,SAAW,KAChB7xE,KAAK4gB,QAAS,EACd5gB,KAAK27D,aAAe,KACpB37D,KAAK08D,WAAa,KAClB18D,KAAKE,OAAS,EAEdF,KAAK+U,YAAc,KACnB/U,KAAK+W,YAAc,KACnB/W,KAAKgX,UAAY,IACrB,CAEAqlD,UAAUn/D,GAEN,MAAM40E,EAAQ9xE,KAAK0xE,WAAWhvB,OAAO9P,kBAAkB,gBACjDm/B,EAAQ/xE,KAAK0xE,WAAWhvB,OAAO9P,kBAAkB,mBACjDo/B,EAAQhyE,KAAK2xE,WAAWjvB,OAAO9P,kBAAkB,gBACjDq/B,EAAQjyE,KAAK2xE,WAAWjvB,OAAO9P,kBAAkB,mBAEvD5yC,KAAK0xE,WAAW/+B,SAAWz1C,EAAQ40E,EAAQC,EAC3C/xE,KAAK2xE,WAAWh/B,SAAWz1C,EAAQ80E,EAAQC,EAC3CjyE,KAAK4gB,OAAS1jB,CAClB,CAEA+mD,UAAUhT,EAAS/zC,GAEZ+zC,IAAajxC,KAAK0xE,WAAWhvB,OAE5B1iD,KAAK0xE,WAAWl7D,WAAWtZ,GAI3B8C,KAAK2xE,WAAWn7D,WAAWtZ,EAEnC,CAEAq0C,YAAYN,EAASkC,GAEdlC,IAAajxC,KAAK0xE,WAAWhvB,OAE5B1iD,KAAK0xE,WAAW/nD,SAAWwpB,EAAI3pB,QAI/BxpB,KAAK2xE,WAAWhoD,SAAWwpB,EAAI3pB,OAEvC,CAEA+yC,mBAAmBtrB,GAEf,OAAGA,IAAajxC,KAAK0xE,WAAWhvB,OAErB1iD,KAAK0xE,WAIL1xE,KAAK2xE,UAEpB,CAEAxqD,eAEI,MAAM4mC,EAAM,IAAIyiB,GAChBziB,EAAIh5C,YAAc/U,KAAK+U,YACvBg5C,EAAIh3C,YAAc/W,KAAK+W,YACvBg3C,EAAI/2C,UAAYhX,KAAKgX,UAErB,MAAMk3C,EAAUluD,KAAKgX,UAAUi6B,SAEzBmX,EAAWpoD,KAAK0yE,eAAexkB,EAAQ,oBACvCklB,EAAUpzE,KAAK0yE,eAAexkB,EAAQ,mBAEtCykB,EAAS3yE,KAAK27D,aAAapS,SAASv8B,KAAI9W,GAAGA,EAAEC,OAAMF,QAAOC,GAAGA,EAAE6M,SAAS8F,SAAS,gBACjF+pD,EAAUtrD,KAAKgf,OAAOqsC,EAAO3lD,KAAI9W,GAAGA,EAAEjZ,KAAKogB,MAAM,cAAc,KAAIpH,QAAOC,GAAGA,IAAG8W,KAAI9W,GAAGkV,OAAOlV,MAC9F28D,EAAUlK,SAASiK,GAAWA,EAAS,EAAI,EAC3CpnB,EAAaxrD,KAAK08D,WAAWvmD,KAAKwO,SAAW,IAAM3kB,KAAK08D,WAAWvmD,KAAK4M,SACxE5M,EAAO,CAACwO,SAAS,UAAWshD,SAAS,KAAMhpE,KAAK,aAAa41E,EAAQ9vD,SAAS,MAAM8vD,EAASrnB,WAAWA,GAC9GuC,EAAI53C,KAAOA,EACX43C,EAAI1e,OAASrvC,KAAK08D,WAAW7mB,OAC7BkY,EAAIzkC,aAAetpB,KAAK27D,aAExB,MAAMlmB,EAAU,CAAC9wB,SAAS,MAAOshD,SAAS,KAAMhpE,KAAK,MAAM8lB,SAAS,MAAOyoC,WAAWr1C,EAAKlZ,MAC3Fm2E,EAAQj9D,KAAOs/B,EACf2S,EAASjyC,KAAOA,EAChBiyC,EAASvS,OAASkY,EAElB,MAAMxY,EAAMv1C,KAAK27D,aAAajyC,eAAemmB,SAAS3C,EACtDkb,EAASvY,SAAS3C,GAAKqI,EACvB69B,EAAQvjC,SAAS3C,GAAKqI,EAEtB6S,EAASz+B,SAASujB,EAAI,OAAaltC,KAAK27D,aAAaplD,aAAaoT,SAASujB,EAC3EkmC,EAAQzpD,SAASujB,EAAI,OAAaltC,KAAK27D,aAAaplD,aAAaoT,SAASujB,EAE1E6gB,EAAI5L,WAAW18B,KAAK2iC,GACpB2F,EAAI5L,WAAW18B,KAAK2tD,GAQpB,MAAMluB,EAAUkD,EAASsD,sBAEzBtD,EAAS/Y,OAASrvC,KAAK27D,aAAaplD,aACpC68D,EAAQ/jC,OAASrvC,KAAK27D,aAAaplD,aAEnC6xC,EAAS1D,oBAAoBQ,GAC7BkuB,EAAQ1uB,oBAAoBQ,GAE5BkD,EAASz+B,SAASujB,EAAI,KACtBkmC,EAAQzpD,SAASujB,EAAI,KAErB6gB,EAAIzkC,aAAetpB,KAAK27D,aACxB37D,KAAK27D,aAAaxlB,SAAS1wB,KAAKsoC,GAChC/tD,KAAK27D,aAAapS,SAAS9jC,KAAKsoC,GAIhCA,EAAI9K,eACJ8K,EAAI9L,aAAa5rC,SAAQH,IACrBA,EAAEm5B,OAASrvC,KAAK27D,aAAajyC,eAC7BxT,EAAEwuC,oBAAoBQ,GACtBhvC,EAAEyT,SAASujB,EAAIgY,EAAQhY,GAAK,IAAM,IAAM,IACxCh3B,EAAE25B,SAAS3C,EAAIkb,EAASvY,SAAS3C,EAGjCh3B,EAAE2/B,OAASkY,CAAG,IAElBA,EAAI7L,aAAa7rC,SAAQH,IACrBA,EAAEm5B,OAASrvC,KAAK27D,aAAa9xC,eAC7B3T,EAAEwuC,oBAAoBQ,GACtBhvC,EAAEyT,SAASujB,EAAIgY,EAAQhY,EAAI,IAAM,IAAM,IACvCh3B,EAAE25B,SAAS3C,EAAIkb,EAASvY,SAAS3C,EAGjCh3B,EAAE2/B,OAASkY,CAAG,IAGlBA,EAAIwF,kBACJ,MAAM8f,EAAStlB,EAAI5L,WAAW/8B,MAAKlP,GAAuB,OAApBA,EAAEC,MAAMwO,WAAmBgF,SAASH,QAO1E,OANAukC,EAAItE,YAAY9/B,SAAW0pD,EAAO7pD,QAClCukC,EAAIrE,YAAY//B,SAAW0pD,EAAO7pD,QAElCxpB,KAAK27D,aAAanI,iBAAiBxzD,KAAK27D,aAAajO,gBAErDK,EAAI53C,KAAK4/B,KAAO/1C,KAAKgX,UAAU45B,OAAO9wC,aAAamzE,aAC5CllB,CACX,CAEA2kB,eAAezhC,EAASsS,GAEpB,MAAM+vB,EAAY,CAACtzE,KAAKwxE,QAAQxxE,KAAKyxE,QAAQzxE,KAAKmzE,UAC5C1nB,EAAO6nB,EAAUluD,MAAKlP,GAAGA,EAAEwsC,SAAWzR,IACtC24B,EAAMt9B,QAAQ6W,IAAIvO,SAAS6W,GAC3Bmd,EAAM33B,EAAS2B,kBAAkB2Q,GAEjCqE,EAAUgiB,EAAI70B,OAAO,KAAK6zB,EAAI33B,GAAS,GAC7C2W,EAAQnvC,WAAY,EACpBmvC,EAAQpxC,YAAW,GAEnB,MAAM48B,EAAOwU,EAAQvU,kBAAkBC,YACjClsB,EAAOgsB,EAAKsC,WAAWjsB,SAAS,IAAIN,GAAAA,QAAQ,EAAE,EAAE,IAE1CnpB,KAAK27D,aAAajyC,eAAemmB,SAAS3C,EAUtD,OARG9lB,EAAKlR,EAAIkR,EAAKK,IAEbmgC,EAAQ/X,SAAS3C,EAAI5lB,KAAK23B,GAAG,EAC7BhM,GAAUY,cAAc+T,GACxBA,EAAQ/X,SAAS3C,EAAI5lB,KAAK23B,GAAG,GAI1B2I,CACX,CAEAwU,eAAeyV,EAAS3xE,EAAO07C,GAE3B57C,KAAK6xE,SAAWA,EAChB7xE,KAAKE,OAASA,EAEd,MAAMgyE,EAAUlyE,KAAK08D,WAAW7mB,OAAO1/B,KAAK4M,SAAS8F,SAAS,YAAc,IAAO,IAC7EspD,EAAUnyE,KAAK0xE,WAAWhvB,OAC1B0vB,EAAUpyE,KAAK2xE,WAAWjvB,OAC1BjP,EAASzzC,KAAKyqD,WAAW7gC,IAAIioD,GAAU5sB,OAAO,IAAI97B,GAAAA,QAAQ,EAAE,EAAE,IAEpEnpB,KAAKwxE,SAASjsD,UACdvlB,KAAKyxE,SAASlsD,UACdvlB,KAAKmzE,UAAU5tD,UAEf,MAAM8sD,EAAsB,MAATz2B,EAAe,EAAI,EAChC02B,EAAsB,MAAT12B,EAAe,EAAI,EAChC1jC,EAAShY,EAAUmyE,EAAaH,EAAUI,EAC1C38B,EAASz1C,EAAUoyE,EAAaJ,EAAUG,EAE1CE,EAAavyE,KAAKwyE,UAAUt6D,EAAMy9B,EAAMw8B,EAAQ1+B,GAChDg/B,EAAazyE,KAAKwyE,UAAUt6D,EAAMy9B,EAAMy8B,EAAQ3+B,GAChD8/B,EAAevzE,KAAKwyE,UAAUt6D,EAAMy9B,EAAM31C,KAAKgX,UAAUi6B,SAASwC,GAExEzzC,KAAKwxE,QAAUe,EACfvyE,KAAKyxE,QAAUgB,EACfzyE,KAAKmzE,SAAWI,EAEhBvzE,KAAKwxE,QAAQh7D,YAAW,GACxBxW,KAAKyxE,QAAQj7D,YAAW,GACxBxW,KAAKmzE,SAAS38D,YAAW,GACzBxW,KAAKmzE,SAAS16D,WAAY,CAC9B,CAEA+5D,UAAUt6D,EAAMy9B,EAAM1E,EAASkC,GAE3B,IAAIh7B,EAAS,MACV84B,IAAajxC,KAAKgX,UAAUi6B,WAE3B94B,EAAS,OAEb,MAAM0hC,EAAMvN,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAQA,EAAOC,OAASA,EAAQw9B,MAAQA,GAAO1E,GAG/F,OAFA4I,EAAIlH,SAAW1B,EAAS2B,kBAAkB,oBAC1CiH,EAAIlwB,SAAWwpB,EAAI3pB,QACZqwB,CACX,CAEAt0B,UAEIvlB,KAAKwxE,SAASjsD,UACdvlB,KAAKyxE,SAASlsD,UACdvlB,KAAKmzE,UAAU5tD,UACfvlB,KAAK0xE,YAAYnsD,UACjBvlB,KAAK2xE,YAAYpsD,UAEjBvlB,KAAK+U,YAAYo6C,eAAgB,EACjCnvD,KAAK+W,YAAYo4C,eAAgB,EAEjC,MAAMnB,EAAQhuD,KAAK+U,YAAYk8B,SACzBgd,EAAQjuD,KAAK+W,YAAYk6B,SAE/B+c,EAAMoH,cAAc,aAAa/+C,SAAQ20C,IACrCA,EAAEzlC,SAAS,IAGf0oC,EAAMmH,cAAc,aAAa/+C,SAAQ20C,IACrCA,EAAEzlC,SAAS,GAEnB,E,SC/OW,MAAMxP,GACjB26B,YAAYoF,GAER91C,KAAKgW,QAAU,GACfhW,KAAK81D,MAAQ,GACb91D,KAAK61D,OAAS/f,CAClB,CAEA35B,iBAAiBrH,EAAWsF,EAAK2rB,EAAEgzB,EAAEhkD,EAAYgC,EAAYC,EAAU++B,GAEnE,MAAMy9B,QAAkBlnC,GAAAA,IAAoBmnC,wBAAwBr5D,EAAO,GAAEtF,SACvEwqC,EAASk0B,EAAUl0B,OACnByb,EAAYzuB,GAAAA,IAAoB0G,UAAU,KAAM,CAAC5rB,KAAO,GAAGpQ,EAAUi6B,UACrEL,EAAS55B,EAAU45B,OACzBmqB,EAAUtiD,WAAY,EACtBsiD,EAAUvkD,YAAW,GAErB,IAAI,IAAI3T,EAAI,EAAGA,EAAEy8C,EAAOp/C,OAAQ2C,IAChC,CACI,MAAMkrC,EAAOuR,EAAOz8C,GAEd6wE,EAAU3lC,EAAKsF,kBAAkBC,YACjC4R,EAAU/7B,GAAAA,QAAQwqD,OAAOD,EAAQ9yB,QAAS8yB,EAAQ7yB,SAElD1qC,EAAOnW,KAAK4zE,YAAY7lC,EAAKjyC,IACnCqa,EAAK4/B,KAAO/1C,KAAK61D,OAAOod,aACxBj8D,EAAUi6B,SAAS+jB,QAAQjnB,GAC3BkF,GAAUC,cAAcnF,GACxBA,EAAKpkB,SAAWu7B,EAChBnX,EAAK4E,SAASkR,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACvDyB,EAAK4E,SAASoR,cAAgB,EAC9BhW,EAAK53B,KAAOA,EACZ43B,EAAKsB,OAAS0rB,CAClB,CACA,IAEI/6D,KAAK6zE,eAAev0B,GACpB,MAAMuM,EAAY7rD,KAAKmnB,aAAam4B,EAAOtoC,EAAUjC,EAAYgC,EAAYjC,EAAWihC,GACxF/1C,KAAK8zE,SAASx0B,EAAOuM,GACrBA,EAAUt1C,aAAewkD,EACzBlP,EAAU92C,YAAcA,EACxB82C,EAAU90C,YAAcA,EACxB80C,EAAU70C,UAAYA,EACtB60C,EAAU5jD,WAAa89B,EACvB8lB,EAAU3jD,SAAW6wD,EACrBgC,EAAUllB,OAASgW,EACnB7rD,KAAK+zE,iBAAiBloB,SAChBA,EAAUmoB,aAgBhB,IAAI,IAAIlH,KAAKjhB,EAAUxC,MACvB,CACI,MAAM4qB,EAAQnH,EAAE32D,KACV+9D,EAAWtjC,EAAOl8B,MAAM0Q,MAAKlP,GAAG+9D,EAAMh3E,KAAKqgB,QAAQ,IAAI,IAAIuL,SAAS3S,EAAEjZ,QAEtEm2D,QAAgBpzD,KAAKm0E,SAASD,GACpC9gB,EAAQj9C,KAAO89D,EACf7gB,EAAQ/jB,OAASy9B,EAAEz9B,OACnB+jB,EAAQ9pC,aAAeuiC,EACvBA,EAAUxC,MAAM5jC,KAAK2tC,GACrBvH,EAAU1V,SAAS1wB,KAAK2tC,GAExB,IAAI,IAAIvwD,KAAKuwD,EAAQjR,WAEjBiR,EAAQjR,WAAWt/C,GAAG8mB,SAAWmjD,EAAE3qB,WAAWt/C,GAAG8mB,SAASH,QAC1D4pC,EAAQjR,WAAWt/C,GAAGwsC,OAASy9B,EAAE3qB,WAAWt/C,GAAGwsC,OAC/C+jB,EAAQjR,WAAWt/C,GAAG2T,YAAW,GAEF,aAA5B48C,EAAQ/jB,OAAOyW,WAEdsN,EAAQjR,WAAWt/C,GAAGgtC,SAAS3C,EAAI5lB,KAAK23B,GAAG,GAGnDmU,EAAQgU,kBACRhU,EAAQ+T,kBACR/T,EAAQ6T,kBACR7T,EAAQiU,6BACRjU,EAAQG,kBACRuZ,EAAEvnD,SACN,CAEA,IAAI,IAAIylC,KAAKa,EAAUvC,QACvB,CACI,MAAM8qB,EAAQppB,EAAE70C,KACVk+D,EAAUzjC,EAAOj8B,QAAQyQ,MAAKlP,GAAGk+D,EAAMn3E,KAAKqgB,QAAQ,IAAI,IAAIuL,SAAS3S,EAAEjZ,QAEvEshE,QAAev+D,KAAKs0E,WAAWD,GACrC9V,EAAOpoD,KAAOi+D,EACd7V,EAAOlvB,OAAS2b,EAAE3b,OAClBkvB,EAAOj1C,aAAeuiC,EACtBA,EAAUvC,QAAQ7jC,KAAK84C,GACvB1S,EAAU1V,SAAS1wB,KAAK84C,GAExB,IAAI,IAAI17D,KAAK07D,EAAOpc,WAEhBoc,EAAOpc,WAAWt/C,GAAG8mB,SAAWqhC,EAAE7I,WAAWt/C,GAAG8mB,SAASH,QACzD+0C,EAAOpc,WAAWt/C,GAAGwsC,OAAQ2b,EAAE7I,WAAWt/C,GAAGwsC,OAC7CkvB,EAAOpc,WAAWt/C,GAAG2T,YAAW,GAEF,aAA3B+nD,EAAOlvB,OAAOyW,WAEbyY,EAAOpc,WAAWt/C,GAAGgtC,SAAS3C,EAAI5lB,KAAK23B,GAAG,GAGlDsf,EAAO6I,kBACP7I,EAAO4I,kBACP5I,EAAO0I,kBACP1I,EAAO8I,6BACP9I,EAAOhL,kBACPvI,EAAEzlC,SACN,CAEA,IAAI,IAAID,KAAKumC,EAAUtC,SAEqB,aAArCjkC,EAAE+pB,OAAO6W,mBAAmBlpD,MAE3BsoB,EAAE68B,WAAW9rC,SAAQH,IACjB,MAAMi/B,EAAIj/B,EAAEm5B,OACN8D,EAAMj9B,EAAEyT,SAASH,QAEvBtT,EAAEm5B,OAAS,KACXn5B,EAAEyT,SAAWR,GAAAA,QAAQC,OACrBlT,EAAE25B,SAAS3C,EAAI5lB,KAAK23B,GAAG,EACvBhM,GAAUY,cAAc39B,GACxBA,EAAEm5B,OAAS8F,EACXj/B,EAAEyT,SAAWwpB,EACbj9B,EAAE25B,SAAS3C,EAAI5lB,KAAK23B,GAAG,CAAC,IAGhC35B,EAAE29B,eACF39B,EAAE28B,aAAa5rC,SAAQH,IACnBA,EAAEm5B,OAASwc,EAAUniC,cAAc,IAEvCpE,EAAE48B,aAAa7rC,SAAQH,IACnBA,EAAEm5B,OAASwc,EAAUhiC,cAAc,IAEvCvE,EAAEiuC,kBAGN1H,EAAUqf,OAAO70D,SAAQ2S,IACrBA,EAAEuqC,iBAAiB,IAGvB1H,EAAUof,MAAM50D,SAAQ2S,IACpBA,EAAEuqC,iBAAiB,IAGvB1H,EAAUiS,WAAWznD,SAAQ0kD,IACzBA,EAAUx1C,SAAS,IAEvBsmC,EAAUiS,WAAa,GAEvBjS,EAAU6hB,QAAQ34D,EAAYk8B,SAAS,MACvC4a,EAAU6hB,QAAQ32D,EAAYk6B,SAAS,MAEvCl8B,EAAYoS,aAAe0kC,EAC3B90C,EAAYoQ,aAAe0kC,EAE3B7rD,KAAKgW,QAAQyP,KAAKomC,EACtB,CACA,MAAMpgC,GAEFtQ,QAAQ6D,MAAMyM,EAClB,CACJ,CAEAooD,eAAev0B,GAEXA,EAAOjpC,SAAQ03B,IACX,MAAM53B,EAAO43B,EAAK53B,KAClB,GAAGA,EAAKq1C,WAAW3iC,SAAS,SAC5B,CACI,MAAMwmB,EAASiQ,EAAOl6B,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAASkZ,EAAKq1C,aACnDzd,EAAKsB,OAASA,EACdtB,EAAKpkB,SAASzT,GAAKm5B,EAAO1lB,SAASzT,EACnC63B,EAAKpkB,SAASujB,GAAKmC,EAAO1lB,SAASujB,EACnCa,EAAKpkB,SAASlC,GAAK4nB,EAAO1lB,SAASlC,CACvC,IAER,CAEAssD,iBAAiBloB,GAEbA,EAAU1V,SAAS9/B,SAAQ03C,IACvB,MAAM1e,EAASwc,EAAU1V,SAAS/wB,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAAS8wD,EAAI53C,KAAKq1C,aAChEnc,IAEC0e,EAAI1e,OAASA,EACjB,GAER,CAEAykC,SAASx0B,EAAOuM,GAEZ,MAAM0e,EAAOjrB,EAAOrpC,QAAOC,GAAuB,QAApBA,EAAEC,KAAKwO,WACrC4lD,EAAKl0D,SAAQwjC,IACT,IAEI,MAAMqwB,EAAYre,EAAU1V,SAAS/wB,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAAS48C,EAAI1jC,KAAKq1C,aACtE3R,EAAI1jC,KAAKo+D,OAASrK,EAClBA,EAAU/nB,WAAW18B,KAAKo0B,GAC1BA,EAAIphC,WAAY,CACpB,CACA,MAAMgT,GAEFtQ,QAAQ6D,MAAMyM,EAClB,IAER,CAEAtE,aAAam4B,EAAOtoC,EAAUjC,EAAYgC,EAAYjC,EAAWihC,GAE7D,MAAM8V,EAAY,IAAIkS,GACtBlS,EAAU11C,KAAKlZ,KAAO6X,EACtB+2C,EAAU11C,KAAKwO,SAAW,SAC1BknC,EAAU9V,KAAOA,EAEjB,IAAIgY,EAAM,KA+EV,OA9EAzO,EAAOjpC,SAAQ03B,IACX,MAAM53B,EAAO43B,EAAK53B,KAClB,GAAqB,OAAlBA,EAAKwO,SAEJopB,EAAK8H,OAASkY,EACdA,EAAI5L,WAAW18B,KAAKsoB,OAGxB,CACI,GAAqB,SAAlB53B,EAAKwO,SAcJ,OAZAopC,EAAM,IAAIlI,GACVgG,EAAU7R,MAAMv0B,KAAKsoC,GACrBA,EAAI53C,KAAOA,EACX43C,EAAI5L,WAAW18B,KAAKsoB,GACpBggB,EAAI/2C,UAAYA,EAChB+2C,EAAIh5C,YAAcA,EAClBg5C,EAAIh3C,YAAcA,EAClBg3C,EAAIzkC,aAAeuiC,EACnB9d,EAAK8H,OAASkY,EACdhgB,EAAK4E,SAAW37B,EAAUi6B,SAAS2B,kBAAkB,WACrDmb,EAAIjH,mBACJ+E,EAAU1V,SAAS1wB,KAAKsoC,GAGvB,GAAqB,WAAlB53C,EAAKwO,SAETopC,EAAM,IAAIkiB,GACVpkB,EAAUvC,QAAQ7jC,KAAKsoC,QAEtB,GAAqB,SAAlB53C,EAAKwO,SAETopC,EAAM,IAAIoX,GACVtZ,EAAUxC,MAAM5jC,KAAKsoC,QAEpB,GAAqB,WAAlB53C,EAAKwO,SAETopC,EAAM,IAAIsjB,GACVtjC,EAAK4E,SAAW37B,EAAUi6B,SAAS2B,kBAAkB,WACrDiZ,EAAUmf,QAAQvlD,KAAKsoC,QAEtB,GAAqB,UAAlB53C,EAAKwO,SAETopC,EAAM,IAAIka,GACVl6B,EAAK4E,SAAW37B,EAAUi6B,SAAS2B,kBAAkB,WACrDiZ,EAAU2C,OAAO/oC,KAAKsoC,QAErB,GAAqB,SAAlB53C,EAAKwO,SAETopC,EAAM,IAAIkjB,GACVplB,EAAUof,MAAMxlD,KAAKsoC,GACrBhgB,EAAKt1B,WAAY,OAEhB,GAAqB,YAAlBtC,EAAKwO,SAETopC,EAAM,IAAIyiB,GACV3kB,EAAUtC,SAAS9jC,KAAKsoC,QAEvB,GAAqB,UAAlB53C,EAAKwO,SAETopC,EAAM,IAAIob,GACVtd,EAAUqf,OAAOzlD,KAAKsoC,QAErB,GAAqB,QAAlB53C,EAAKwO,SAET,OAEJopB,EAAK8H,OAASkY,EACdA,EAAI53C,KAAOA,EACX43C,EAAI5L,WAAW18B,KAAKsoB,GACpBggB,EAAI/2C,UAAYA,EAChB+2C,EAAIh5C,YAAcA,EAClBg5C,EAAIh3C,YAAcA,EAClBg3C,EAAIzkC,aAAeuiC,EACnBA,EAAU1V,SAAS1wB,KAAKsoC,EAC5B,KAGGlC,CACX,CAEA+nB,YAAY93E,GAER,MAAM04E,EAAM14E,EAAGuhB,MAAM,KACrB,IAAIpgB,EAAQ,GAAEu3E,EAAI,MAAMA,EAAI,KACxB7vD,EAAW6vD,EAAI,GAAGl3D,QAAQ,OAAQ,IAClCyF,EAAWyxD,EAAI,GACfvO,EAAWuO,EAAI,GACfhpB,EAAc,GAAEgpB,EAAI,MAAMA,EAAI,KAElC,MAAM3jB,EAAQ,wBACXA,EAAM/uB,KAAKmkC,IAEVhpE,EAAQ,GAAEu3E,EAAI,MAAMA,EAAI,KAAKA,EAAI,KACjChpB,EAAc,GAAEgpB,EAAI,MAAMA,EAAI,MAI9BvO,EAAW,KAGC,QAAbthD,GAAmC,QAAbA,IAErB1nB,EAAOu3E,EAAI,GACXzxD,EAAW4B,EAGP6mC,EAFU,YAAXgpB,EAAI,IAA+B,UAAXA,EAAI,IAA6B,SAAXA,EAAI,GAEnC,GAAEA,EAAI,MAAMA,EAAI,KAIhB,GAAEA,EAAI,MAAMA,EAAI,KAAKA,EAAI,MAI/C,MAAMC,EAAS,CAACx3E,KAAOA,EAAM0nB,SAASA,EAAU5B,SAASA,EAASkjD,SAASA,EAASza,aAAWA,cAC/F,OAAOipB,CACX,CAEAt4D,iBAAiBrI,GAEb,MAAM7W,EAAO6W,EAAK7W,KACZu2E,QAAkBlnC,GAAAA,IAAoBmnC,wBAAyB,oBAAmBx2E,SAAc,GAAEA,SAClGqiD,EAASk0B,EAAUl0B,OACnByO,EAAM,IAAIkiB,GACVj5D,EAAYhX,KAAK61D,OAAO7+C,UACxBjC,EAAc/U,KAAK61D,OAAO9gD,YAC1BgC,EAAc/W,KAAK61D,OAAO9+C,YAEhC,IAAI,IAAIlU,EAAI,EAAGA,EAAEy8C,EAAOp/C,OAAQ2C,IAChC,CACI,MAAMkrC,EAAOuR,EAAOz8C,GACd6wE,EAAUp0B,EAAOz8C,GAAGwwC,kBAAkBC,YACtC4R,EAAU/7B,GAAAA,QAAQwqD,OAAOD,EAAQ9yB,QAAS8yB,EAAQ7yB,SAElD1qC,EAAOnW,KAAK4zE,YAAYt0B,EAAOz8C,GAAG/G,IACxCkb,EAAUi6B,SAAS+jB,QAAQjnB,GAC3BkF,GAAUC,cAAcnF,GACxBA,EAAKpkB,SAAWu7B,EAChBnX,EAAK4E,SAASkR,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACvDyB,EAAK4E,SAASoR,cAAgB,EAC9BhW,EAAK53B,KAAOA,EACZ43B,EAAK53B,KAAKgC,OAASrE,EAAKqE,OACxB41B,EAAK8H,OAASkY,EACdA,EAAI5L,WAAW18B,KAAKsoB,GACpBA,EAAKv3B,YAAW,EACpB,CAaA,OAZAu3C,EAAI53C,KAAOmpC,EAAOl6B,MAAKve,GAAuB,WAApBA,EAAEsP,KAAKwO,WAAuBxO,KACxD43C,EAAI/2C,UAAYA,EAChB+2C,EAAIh5C,YAAcA,EAClBg5C,EAAIh3C,YAAcA,EAElBg3C,EAAI9K,eACJ8K,EAAI0Y,iBAEJ1Y,EAAI5L,WAAW9rC,SAAQxP,IACnBA,EAAE2P,YAAW,EAAM,IAGhBu3C,CACX,CAEA5xC,eAAerI,GAEX,MAAM7W,EAAO6W,EAAK7W,KACZu2E,QAAkBlnC,GAAAA,IAAoBmnC,wBAAyB,kBAAiBx2E,SAAc,GAAEA,SAChGqiD,EAASk0B,EAAUl0B,OACnByO,EAAM,IAAIoX,GACVnuD,EAAYhX,KAAK61D,OAAO7+C,UACxBjC,EAAc/U,KAAK61D,OAAO9gD,YAC1BgC,EAAc/W,KAAK61D,OAAO9+C,YAEhC,IAAI,IAAIlU,EAAI,EAAGA,EAAEy8C,EAAOp/C,OAAQ2C,IAChC,CACI,MAAMkrC,EAAOuR,EAAOz8C,GACd6wE,EAAUp0B,EAAOz8C,GAAGwwC,kBAAkBC,YACtC4R,EAAUwuB,EAAQ5yB,YAAYt3B,QAE9BrT,EAAOnW,KAAK4zE,YAAYt0B,EAAOz8C,GAAG/G,IACxCkb,EAAUi6B,SAAS+jB,QAAQjnB,GAC3BkF,GAAUC,cAAcnF,GACxBA,EAAKpkB,SAAWu7B,EAAQ17B,QACxBukB,EAAK4E,SAASkR,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACvDyB,EAAK4E,SAASoR,cAAgB,EAC9BhW,EAAK53B,KAAOA,EACZ43B,EAAK53B,KAAKgC,OAASrE,EAAKqE,OACxB41B,EAAK53B,KAAKkV,GAAKvX,EAAKuX,GACpB0iB,EAAK53B,KAAK8vD,SAAW,QACrBl4B,EAAK8H,OAASkY,EACdA,EAAI5L,WAAW18B,KAAKsoB,GACpBA,EAAKv3B,YAAW,EACpB,CAaA,OAZAu3C,EAAI53C,KAAOmpC,EAAOl6B,MAAKve,GAAuB,SAApBA,EAAEsP,KAAKwO,WAAqBxO,KACtD43C,EAAI/2C,UAAYA,EAChB+2C,EAAIh5C,YAAcA,EAClBg5C,EAAIh3C,YAAcA,QAEZg3C,EAAI9K,eACV8K,EAAI0Y,iBAEJ1Y,EAAI5L,WAAW9rC,SAAQxP,IACnBA,EAAE2P,YAAW,EAAM,IAGhBu3C,CACX,CAEA5xC,eAAelf,EAAKmd,EAAKrF,EAAYgC,EAAYC,EAAU++B,GAEvD,MAAMy9B,QAAkBlnC,GAAAA,IAAoBmnC,wBAAwBr5D,EAAO,GAAEnd,SACvEqiD,EAASk0B,EAAUl0B,OACnByO,EAAM,IAAIic,GACV2F,EAAUrjC,GAAAA,IAAoB0G,UAAU,KAAM,CAAC5rB,KAAO,GAAGpQ,EAAUi6B,UACzE0+B,EAAQl3D,WAAY,EACpBk3D,EAAQx5D,KAAO,CAACwO,SAAW,OAAO1nB,KAAKA,EAAK84C,KAAOA,GACnD45B,EAAQ95B,OAASkY,EACjBA,EAAIx3C,aAAeo5D,EACnBA,EAAQn5D,YAAW,GAEnB,IAAI,IAAI3T,EAAI,EAAGA,EAAEy8C,EAAOp/C,OAAQ2C,IAChC,CACI,MAAMkrC,EAAOuR,EAAOz8C,GACd6wE,EAAUp0B,EAAOz8C,GAAGwwC,kBAAkBC,YACtC4R,EAAU/7B,GAAAA,QAAQwqD,OAAOD,EAAQ9yB,QAAS8yB,EAAQ7yB,SAElD1qC,EAAOnW,KAAK4zE,YAAYt0B,EAAOz8C,GAAG/G,IAexC,GAdAkb,EAAUi6B,SAAS+jB,QAAQjnB,GAC3BkF,GAAUC,cAAcnF,GACxBA,EAAKpkB,SAAWu7B,EAAQ17B,QACxBukB,EAAK4E,SAASkR,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GACvDyB,EAAK4E,SAASoR,cAAgB,EAC9BhW,EAAK53B,KAAOA,EACZ43B,EAAKsB,OAASsgC,EACd5hC,EAAK8H,OAASkY,EAGXhgB,EAAK4E,SAAS11C,KAAK4rB,SAAS,gBAE3BklB,EAAK4E,SAAW37B,EAAUi6B,SAAS2B,kBAAkB,YAE/B,SAAvB7E,EAAK53B,KAAKwO,SAET,GAA0B,SAAvBopB,EAAK53B,KAAK4M,SAETgrB,EAAK4E,SAAW5E,EAAK2U,OAAO9P,kBAAkB,eAGlD,CACI,MAAMg2B,EAAM76B,EAAK4E,SACjB,GAAGi2B,EAAItlB,eACP,CACI,MAAMoxB,EAAc9L,EAAItlB,eAAermD,KACjCsmD,EAAUmxB,EAAYr3D,MAAM,KAAKq3D,EAAYr3D,MAAM,KAAKnd,OAAO,GAAGmd,MAAM,KAAK,GAC7Es3D,EAAU5mC,EAAK2U,OAAO9P,kBAAkB2Q,GAExCwlB,GADSh7B,EAAK4E,UAAU6mB,cAAct5D,OACrB8W,EAAU45B,OAAO9wC,aAAaipE,gBAErD,GAAG4L,EAEC5mC,EAAK4E,SAAWgiC,MAGpB,CACI,MAAM7L,EAAS,IAAI7H,GAAAA,GAA2B1d,EAAQxV,EAAK2U,QAC3DomB,EAAOzH,SAAW,EAClByH,EAAOxH,UAAY,EACnBwH,EAAOjlB,cAAgB,IAAIvX,GAAAA,IAAe,EAAG,EAAG,GAChDw8B,EAAOvH,sBAAwB,IAC/BuH,EAAO/kB,cAAgB,EACvB+kB,EAAO3H,cAAgByH,EAAItlB,eAC3BwlB,EAAOtH,oBAAoBuH,EAAetH,cAAc1zB,EAAK2U,SAC7D3U,EAAK4E,SAAWm2B,CACpB,CACJ,MAGI/6B,EAAK4E,SAAW5E,EAAK2U,OAAO9P,kBAAkB,UAEtD,CAEJmb,EAAI5L,WAAW18B,KAAKsoB,GACpBA,EAAKv3B,YAAW,EACpB,CACAu3C,EAAI53C,KAAO,IAAIw5D,EAAQx5D,MACvB43C,EAAI/2C,UAAYA,EAChB+2C,EAAIh5C,YAAcA,EAClBg5C,EAAIh3C,YAAcA,EAElBg3C,EAAIqc,aACJrc,EAAI9K,qBACE8K,EAAI5mC,eAEVpS,EAAYoS,aAAe4mC,EAC3Bh3C,EAAYoQ,aAAe4mC,CAC/B,CAEA5xC,iBAAiBpH,EAAYgC,EAAYC,GAErC,MAAM+2C,EAAM,IAAIwjB,GACV5mB,EAAW,GACX+mB,EAAaplC,GAAAA,IAAoBse,aAAa,KAAK,CAACD,SAAUA,EAAUE,SAAU,IAAI91C,EAAYk8B,UACxGygC,EAAW/+B,SAAW59B,EAAYk8B,SAAS2B,kBAAkB,gBAE7D,MAAM++B,EAAarlC,GAAAA,IAAoBse,aAAa,KAAK,CAACD,SAAUA,EAAUE,SAAU,IAAI9zC,EAAYk6B,UACxG0gC,EAAWh/B,SAAW57B,EAAYk6B,SAAS2B,kBAAkB,gBAE7Dmb,EAAI2jB,WAAaA,EACjB3jB,EAAI4jB,WAAaA,EAEjBD,EAAWl7D,YAAW,GACtBm7D,EAAWn7D,YAAW,GAEtBu3C,EAAIh5C,YAAcA,EAClBg5C,EAAIh3C,YAAcA,EAClBg3C,EAAI/2C,UAAYA,EAEhBjC,EAAYoS,aAAe4mC,EAC3Bh3C,EAAYoQ,aAAe4mC,CAC/B,CAEA5xC,oBAAoBpH,EAAYgC,EAAYC,GAExC,MAAM+2C,EAAM,IAAImlB,GACVvoB,EAAW,GAEX+mB,EAAaplC,GAAAA,IAAoBse,aAAa,KAAK,CAACD,SAAUA,EAAUE,SAAU,IAAI91C,EAAYk8B,UACxGygC,EAAW/+B,SAAW59B,EAAYk8B,SAAS2B,kBAAkB,gBAE7D,MAAM++B,EAAarlC,GAAAA,IAAoBse,aAAa,KAAK,CAACD,SAAUA,EAAUE,SAAU,IAAI9zC,EAAYk6B,UACxG0gC,EAAWh/B,SAAW57B,EAAYk6B,SAAS2B,kBAAkB,gBAE7Dmb,EAAI2jB,WAAaA,EACjB3jB,EAAI4jB,WAAaA,EAEjBD,EAAWl7D,YAAW,GACtBm7D,EAAWn7D,YAAW,GAEtBu3C,EAAIh5C,YAAcA,EAClBg5C,EAAIh3C,YAAcA,EAClBg3C,EAAI/2C,UAAYA,EAEhBjC,EAAYoS,aAAe4mC,EAC3Bh3C,EAAYoQ,aAAe4mC,CAC/B,ECrkBW,MAAM6mB,GACjBlkC,cAEI1wC,KAAKgX,UAAY,KACjBhX,KAAK+U,YAAc,KACnB/U,KAAK+W,YAAc,KACnB/W,KAAKsyD,WAAY,GACjBtyD,KAAK+oE,eAAiB,IAAI/I,GAC1BhgE,KAAK+V,aAAe,IAAIA,GAAa/V,MACrCA,KAAKwB,gBAAiB,EACtBxB,KAAK8B,iBAAkB,EACvB9B,KAAK4B,eAAgB,EACrB5B,KAAK0B,eAAgB,EACrB1B,KAAK2T,YAAa,EAClB3T,KAAK60E,SAAW,KAChB70E,KAAK4E,YAAa,EAClB5E,KAAKgF,gBAAiB,EACtBhF,KAAKC,QAAU,GACfD,KAAKD,aAAe,EACpBC,KAAK2zD,kBAAoB,EACzB3zD,KAAK6mB,cAAgB,CACzB,CAEAsK,cAAcC,GACV,MAAMtuB,EAAMuc,KAAAA,IAAagS,KAAKC,MAAM,oBAG9BC,EAAKlS,KAAAA,IAAagS,KAAKC,MAAM,oBAG7BE,EAAYnS,KAAAA,IAAaoS,QAAQL,EAAMtuB,EAAK,CAC9CyuB,GAAIA,EACJG,KAAMrS,KAAAA,KAAcsS,IACpBC,QAASvS,KAAAA,IAAawS,QAsB1B,OADA1W,QAAQC,IAAI,UAAWoW,GAChBA,CACX,CACArV,WAAW6J,EAAI/oB,GAEX,MAAM63E,EAAc,GACdriC,EAASzyC,KAAKgX,UAAUi6B,SAASkpB,cAAc,UACrD1nB,EAAOh6B,WAAY,EACnB,IAAIs8D,EAAa,cACTC,EAAMD,EAAW3iD,WAAW,IAAK,KACrCjX,QAAQC,IAAI,SAAU45D,GAE1Bh1E,KAAKgX,UAAU63C,UAAUp2C,WAAY,EACrCzY,KAAKgX,UAAUwoD,SAAS/mD,WAAY,EAEpC,IAAIrC,EAAQ,EACZ,IAAI,IAAIiP,KAAUrlB,KAAK+V,aAAaC,QAEH,OAA1BqP,EAAOqoC,iBAENt3C,EAAQ,GAEZ0+D,EAAYrvD,KAAK+/B,GAAWC,aAAapgC,IAASlK,QAAQC,IAAIiK,GAGlE,IAAIxd,EAAS,EACTC,EAAO,EAEX9H,KAAK+V,aAAaC,QAAQK,SAAQxP,IAC9B,MAAMspD,EAAQtpD,EAAEupD,SAAQ,GACxBvoD,GAAUujB,OAAO+kC,EAAMtoD,QACvBC,GAAQsjB,OAAO+kC,EAAMroD,KAAK,IAE9BqT,QAAQC,IAAI4F,aAAakE,QAAQ,YACjCllB,KAAK60E,SAAWt2D,KAAKC,UAAUs2D,SAIzBxoC,QAAQ4S,MAAM+1B,iBAAiBj1E,KAAKgX,UAAU+5B,OAAO/wC,KAAKgX,UAAUi6B,SAASue,gBAAgB,UAAW,CAAC0lB,UAAW,IAC1H/4D,UACIhB,QAAQC,IAAI,KAAMne,GAclB,IAAI80B,EAAc/xB,KAAKmxB,cAAcnxB,KAAK60E,UACtC7iD,EAAchyB,KAAKmxB,cAAcl0B,GACjCg1B,EAAcjyB,KAAKmxB,cAAcyT,GAErC,MAAM1S,EAAY,mEAEAlM,+BACLhF,aAAakE,QAAQ,YAAY,sCAC3B6M,qCACAC,gCACL/0B,GAAM4rB,SAAS,SAAS5rB,EAAO,4GAG1Bg1B,gCACLpqB,gCACCuO,mBAGf,IAAI+b,EAAaD,EAASE,WAAW,KAAK,eAAeA,WAAW,KAAK,eAAeA,WAAW,MAAM,eAAeA,WAAW,MAAM,eAAeA,WAAW,IAAI,gBAEvK,MAAM5V,QAAY6B,GAAAA,EAAMC,KAAK,oBAAoB6T,EAAW,CACxD1T,QAAS,CACT,eAAgB,mBAChB,8BAAgC,IAChC,+BAAiC,yCACjC,mCAAqC,UAGzCg0B,EAAOh6B,WAAY,EACnBzY,KAAKgX,UAAU63C,UAAUp2C,WAAY,EACrCzY,KAAKgX,UAAUwoD,SAAS/mD,WAAY,EACpC0C,QAAQC,IAAIoB,EAAI,GAExB,CAEAmiC,YAAY1uC,GAERjQ,KAAKC,QAAUD,KAAKC,QAAQid,MAAM,EAAEld,KAAKD,aAAa,GACtDC,KAAKC,QAAQwlB,KAAKxV,GAElBjQ,KAAK2zD,iBAAmB3zD,KAAKD,aAC7BC,KAAKD,aAAeC,KAAKC,QAAQC,OAAS,CAC9C,CAEAic,WAAWsK,GAEPzmB,KAAKC,QAAU,GACfD,KAAKD,cAAgB,EACrBC,KAAK6mB,cAAgB,EAErB7mB,KAAK+V,aAAaC,QAAQK,SAAQiP,IAC9BA,EAAEC,SAAS,IAEf,MAAMsvD,EAAWt2D,KAAK+S,MAAM7K,GAEtB0uD,EAAUN,EAAS30E,OACzB,IAAI,IAAIysD,KAASkoB,EAEb70E,KAAKi2C,eAAe0W,GAGxB,MAAMyoB,EAAgBxuD,aAAY,KAC3BuuD,IAAYn1E,KAAK6mB,gBAEhB7mB,KAAK+U,YAAY2B,aACjB1W,KAAK+U,YAAY67B,OAAOxxC,UAAW,EACnCY,KAAK6mB,eAAiB,IACtBC,cAAcsuD,GAClB,GACF,IACN,CAEAt+D,kBAEI9W,KAAK+U,YAAYqqC,kBACrB,CAEA5nC,iBAEIxX,KAAKsyD,WAAW7sC,KAAKzlB,KAAK+U,aAC1B/U,KAAKsyD,WAAW7sC,KAAKzlB,KAAK+W,YAC9B,CAEAI,UAAU2rC,EAAKnS,EAAOC,EAAOx6B,EAAQ,MAEjC,IAAI+6B,EAAQ,KAgBZ,OAfG2R,GAEC3R,EAAQ,IAAIsd,GAAQ9d,EAAOC,EAAOx6B,GAClCpW,KAAK+oE,eAAe9I,oBAAoB9uB,EAAMF,UAC9CjxC,KAAK+oE,eAAerH,kBAAkBvwB,EAAMF,UAC5CE,EAAMoB,iBAINpB,EAAQ,IAAIguB,GAAQxuB,EAAOC,GAC3B5wC,KAAK+oE,eAAe9I,oBAAoB9uB,EAAMF,UAC9CjxC,KAAK+oE,eAAexG,kBAAkBpxB,EAAMF,UAC5CE,EAAMoB,gBAGHpB,CACX,CAEAh1B,qBAAqBwwC,GAGjB,MAAM/b,EAAS5wC,KAAKgX,UAAU45B,OACxBsd,EAAUluD,KAAKgX,UAAUi6B,eACzBjxC,KAAKiV,aAAa03C,EAAM1vD,KAAM,oBAAmB0vD,EAAM1vD,aAC7D,MAAMmZ,EAAQu2C,EAAMx2C,KAAKC,MACnBi/D,EAAiB,OAAVj/D,EACPk/D,EAAUt1E,KAAK+U,YAAYoS,aAEjCmuD,EAAQn/D,KAAO,IAAIw2C,EAAMx2C,MACzBm/D,EAAQlzB,SAAU,EAClBkzB,EAAQ/+B,aAAe8+B,EAAOr1E,KAAK+U,YAAc/U,KAAK+W,YAGtD,IAAI,IAAIg3C,KAAOunB,EAAQn/B,SAEO,UAAvB4X,EAAI53C,MAAMwO,UAA+C,WAAvBopC,EAAI53C,MAAMwO,UAAgD,UAAvBopC,EAAI53C,MAAMwO,UAA+C,SAAvBopC,EAAI53C,MAAMwO,WAE1F,SAAvBopC,EAAI53C,MAAMwO,WAAwBopC,EAAI53C,MAAM4M,SAAS8F,SAAS,aAAeklC,EAAI53C,MAAM4M,SAAS8F,SAAS,UAE5GklC,EAAIxoC,WAIR,GAA6B,IAA1B+vD,EAAQ9mB,OAAOtuD,OAClB,CACI,MAAMq1E,EAAUD,EAAQjuD,UAAUmC,QAC5BgsD,EAAW,IAAIrsD,GAAAA,QAAQwjC,EAAMvlC,KAAKinC,GAAG1B,EAAMvlC,KAAKknC,GAAG3B,EAAMvlC,KAAKmnC,IAEpE,IAAIknB,EAAYD,EAAS1oC,SAASyoC,GAC9BG,EAAY,CAACppC,QAAQqD,KAAK8L,EAAGnP,QAAQqD,KAAK2L,GAC1CkwB,EAAc,GAClBkK,EAAUr/D,SAAQiP,IAEd,IAAIqwD,EAAYF,EAAUhsD,SAASnE,GACnC,GAAGqwD,EAAUz1E,SAAW,EACxB,CACI,IAAI+oB,EAAMqjB,QAAQnjB,QAAQonB,UAAUolC,GAChCvuD,EAAOuuD,EAAUz1E,SAAW,EAEhCsrE,EAAY/lD,KAAK,CAACwD,IAAIA,EAAK7B,KAAMA,GACrC,KAGJkuD,EAAQ/J,QAAQC,GAEhB,MAAMoK,EAAQN,EAAQt7B,MAAM/jC,QAAOC,GAAGA,EAAEC,MAAM4M,SAAS8F,SAAS,UAChE,GAAG+sD,EAAM11E,OAAS,EAClB,CACI,IAAIy7C,EAAI,EACR,IAAI,MAAM94C,KAAK+yE,EAEX,GAAGjpB,EAAMK,eAAenqD,EAAE84C,IAAMi6B,EAAM/yE,GAAGsT,KAAKlZ,KAA9C,CAMA,IAAI,MAAM44E,KAAKD,EAAM/yE,GAAGs/C,WAEpByzB,EAAM/yE,GAAGs/C,WAAW0zB,GAAGlsD,SAASzT,EAAIy2C,EAAMG,YAAYjqD,EAAE84C,GAAGk6B,GAAGxnB,GAC9DunB,EAAM/yE,GAAGs/C,WAAW0zB,GAAGlsD,SAASlC,EAAIklC,EAAMG,YAAYjqD,EAAE84C,GAAGk6B,GAAGtnB,GAGlE,IAAI,MAAMsnB,KAAKD,EAAM/yE,GAAGo/C,aAEpB2zB,EAAM/yE,GAAGo/C,aAAa4zB,GAAGlsD,SAASzT,EAAIy2C,EAAMI,gBAAgBlqD,EAAE84C,GAAGk6B,GAAGxnB,GACpEunB,EAAM/yE,GAAGo/C,aAAa4zB,GAAGlsD,SAASlC,EAAIklC,EAAMI,gBAAgBlqD,EAAE84C,GAAGk6B,GAAGtnB,GACpEqnB,EAAM/yE,GAAGq/C,aAAa2zB,GAAGlsD,SAASzT,EAAIy2C,EAAMI,gBAAgBlqD,EAAE84C,GAAGk6B,GAAGxnB,GACpEunB,EAAM/yE,GAAGq/C,aAAa2zB,GAAGlsD,SAASlC,EAAIklC,EAAMI,gBAAgBlqD,EAAE84C,GAAGk6B,GAAGtnB,EAZxE,MAHIqnB,EAAM/yE,GAAG0iB,UACTo2B,GAiBZ,CACJ,CAEA,MAAMm6B,EAAUR,EAAQtK,QACxB,IAAI,MAAMnoE,KAAKizE,EACf,CACI,MAAMphC,EAAIohC,EAAQjzE,GAClB6xC,EAAEuN,aAAa,GAAGt4B,SAASzT,EAAIw+B,EAAEyN,WAAW,GAAGx4B,SAASzT,EACxDw+B,EAAEuN,aAAa,GAAGt4B,SAASlC,EAAIitB,EAAEyN,WAAW,GAAGx4B,SAASlC,EAExDitB,EAAEwN,aAAa,GAAGv4B,SAASzT,EAAIw+B,EAAEyN,WAAW,GAAGx4B,SAASzT,EACxDw+B,EAAEwN,aAAa,GAAGv4B,SAASlC,EAAIitB,EAAEyN,WAAW,GAAGx4B,SAASlC,CAC5D,CAEA,MAAMvR,EAAIy2C,EAAMhjC,SAAS0kC,GACnB5mC,EAAIklC,EAAMhjC,SAAS4kC,GACnB8D,EAAagjB,EAAOr1E,KAAK+W,YAAc/W,KAAK+U,YAClDugE,EAAQ/jC,YAAY8gB,EAAWphB,SAAS,IAAI9nB,GAAAA,QAAQiC,OAAOlV,GAAIm/D,EAAO,IAAM,EAAGjqD,OAAO3D,KACtF6tD,EAAQ/jC,YAAY+jC,EAAQ/+B,aAAatF,SAAS,IAAI9nB,GAAAA,QAAQiC,OAAOlV,GAAIm/D,EAAO,EAAI,IAAKjqD,OAAO3D,KAEhG6tD,EAAQpX,cAAa,GACrBoX,EAAQlzB,SAAU,EAClBkzB,EAAQ5nB,eAAiB2E,EAAWj8C,MAEpC,MAAMy5B,EAAWzkB,OAAOuhC,EAAM9c,UACf,GAAZA,IAECylC,EAAQ/+D,aAAas5B,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,GACvDylC,EAAQ5rD,eAAemmB,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,GACzDylC,EAAQzrD,eAAegmB,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,IAG7D,MAAMkmC,EAAQppB,EAAMpjC,QAAQ8kC,GACtB2nB,EAAQrpB,EAAMpjC,QAAQglC,IAEd,IAAXwnB,IAECT,EAAQ/+D,aAAagT,QAAQrT,IAAM,EACnCo/D,EAAQ5rD,eAAeH,QAAQrT,IAAM,EACrCo/D,EAAQzrD,eAAeN,QAAQrT,IAAM,GAE5B,IAAV8/D,IAECV,EAAQ/+D,aAAagT,QAAQ9B,IAAM,EACnC6tD,EAAQ5rD,eAAeH,QAAQ9B,IAAM,EACrC6tD,EAAQzrD,eAAeN,QAAQ9B,IAAM,GAGzC6tD,EAAQxX,WAAWznD,SAAQwnD,GAAMA,EAAKplD,WAAY,IAElDzY,KAAK+U,YAAYoS,aAAe,KAChCnnB,KAAK+W,YAAYoQ,aAAe,KAEhCq+B,GAAWywB,SAASX,EAAQ3oB,EAAMb,OAElC,MAAMoqB,EAASZ,EAAQt7B,MAAM/jC,QAAOC,GAAGA,EAAEC,KAAKlZ,KAAK4rB,SAAS,cAC5D,IAAI,IAAIhmB,KAAKqzE,EACb,CACI,IAAIC,EAAOxpB,EAAMC,UAAU/pD,GAAGwrD,GAC1B+nB,EAAOzpB,EAAMC,UAAU/pD,GAAG0rD,GAC1B8nB,EAAY,IAAIltD,GAAAA,QAAQwjC,EAAME,eAAehqD,GAAGwrD,GAAG1B,EAAME,eAAehqD,GAAGyrD,GAAG3B,EAAME,eAAehqD,GAAG0rD,IAE1G2nB,EAAOrzE,GAAGs/C,WAAW,GAAGx4B,SAASzT,EAAIigE,EACrCD,EAAOrzE,GAAGs/C,WAAW,GAAGx4B,SAASlC,EAAI2uD,EACrCF,EAAOrzE,GAAGs/C,WAAW,GAAG54B,QAAU8sD,EAAU7sD,QAC5C0sD,EAAOrzE,GAAGs/C,WAAW,GAAGtM,OAASqgC,EAAOrzE,GAExCqzE,EAAOrzE,GAAGo/C,aAAa,GAAGt4B,SAASzT,EAAIigE,EACvCD,EAAOrzE,GAAGo/C,aAAa,GAAGt4B,SAASlC,EAAI2uD,EACvCF,EAAOrzE,GAAGo/C,aAAa,GAAG14B,QAAU8sD,EAAU7sD,QAC9C0sD,EAAOrzE,GAAGo/C,aAAa,GAAGpM,OAASqgC,EAAOrzE,GAE1CqzE,EAAOrzE,GAAGq/C,aAAa,GAAGv4B,SAASzT,EAAIigE,EACvCD,EAAOrzE,GAAGq/C,aAAa,GAAGv4B,SAASlC,EAAI2uD,EACvCF,EAAOrzE,GAAGq/C,aAAa,GAAG34B,QAAU8sD,EAAU7sD,QAC9C0sD,EAAOrzE,GAAGq/C,aAAa,GAAGrM,OAASqgC,EAAOrzE,EAC9C,CAEA,IAAI,IAAImoD,KAAK2B,EAAMh4C,QACnB,CACI,MAAMy/D,EAAQppB,EAAE70C,KACVk+D,EAAUzjC,EAAOj8B,QAAQyQ,MAAKlP,GAAGk+D,EAAMn3E,KAAKqgB,QAAQ,IAAI,IAAIuL,SAAS3S,EAAEjZ,QACvE8wD,QAAY/tD,KAAK+V,aAAau+D,WAAWD,GAC/CtmB,EAAI53C,KAAO,IAAI60C,EAAE70C,MACjB43C,EAAI1e,OAASimC,EAAQt7B,MAAM50B,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAAS8wD,EAAI53C,KAAKq1C,aAC5DuC,EAAIzkC,aAAegsD,EAEnB,IAAI,IAAIzyE,KAAKkrD,EAAI9L,aACjB,CACI,MAAMlU,EAAOggB,EAAI9L,aAAap/C,GACxByzE,EAAQtrB,EAAEkC,kBAAkBrqD,GAC5B0zE,EAAQvrB,EAAEqC,kBAAkBxqD,GAC5B2zE,EAAQxrB,EAAEwC,iBAAiB3qD,GACjCkrC,EAAKpkB,SAAW,IAAIR,GAAAA,QAAQmtD,EAAMjoB,GAAGioB,EAAMhoB,GAAGgoB,EAAM/nB,IACpDxgB,EAAK8B,SAAW,IAAI1mB,GAAAA,QAAQotD,EAAMloB,GAAGkoB,EAAMjoB,GAAGioB,EAAMhoB,IACpDxgB,EAAKxkB,QAAU,IAAIJ,GAAAA,QAAQqtD,EAAMnoB,GAAGmoB,EAAMloB,GAAGkoB,EAAMjoB,IACnDxgB,EAAKsB,OAASimC,EAAQ5rD,eACtBqkB,EAAKv3B,YAAW,EACpB,CACA,IAAI,IAAI3T,KAAKkrD,EAAI7L,aACjB,CACI,MAAMnU,EAAOggB,EAAI7L,aAAar/C,GACxByzE,EAAQtrB,EAAEmC,kBAAkBtqD,GAC5B0zE,EAAQvrB,EAAEsC,kBAAkBzqD,GAC5B2zE,EAAQxrB,EAAEyC,iBAAiB5qD,GACjCkrC,EAAKpkB,SAAW,IAAIR,GAAAA,QAAQmtD,EAAMjoB,GAAGioB,EAAMhoB,GAAGgoB,EAAM/nB,IACpDxgB,EAAK8B,SAAW,IAAI1mB,GAAAA,QAAQotD,EAAMloB,GAAGkoB,EAAMjoB,GAAGioB,EAAMhoB,IACpDxgB,EAAKxkB,QAAU,IAAIJ,GAAAA,QAAQqtD,EAAMnoB,GAAGmoB,EAAMloB,GAAGkoB,EAAMjoB,IACnDxgB,EAAKsB,OAASimC,EAAQzrD,eACtBkkB,EAAKv3B,YAAW,EACpB,CACA,IAAI,IAAI3T,KAAKkrD,EAAI5L,WACjB,CACI,MAAMpU,EAAOggB,EAAI5L,WAAWt/C,GACtByzE,EAAQtrB,EAAE3K,UAAUx9C,GACpB0zE,EAAQvrB,EAAEoC,UAAUvqD,GACpB2zE,EAAQxrB,EAAEuC,SAAS1qD,GACzBkrC,EAAKpkB,SAAW,IAAIR,GAAAA,QAAQmtD,EAAMjoB,GAAGioB,EAAMhoB,GAAGgoB,EAAM/nB,IACpDxgB,EAAK8B,SAAW,IAAI1mB,GAAAA,QAAQotD,EAAMloB,GAAGkoB,EAAMjoB,GAAGioB,EAAMhoB,IACpDxgB,EAAKxkB,QAAU,IAAIJ,GAAAA,QAAQqtD,EAAMnoB,GAAGmoB,EAAMloB,GAAGkoB,EAAMjoB,IACnDxgB,EAAKsB,OAASimC,EAAQ/+D,aACtBw3B,EAAKv3B,YAAW,EACpB,CACA8+D,EAAQn/B,SAAS1wB,KAAKsoC,GACtBunB,EAAQhsB,QAAQ7jC,KAAKsoC,GACrBA,EAAIwF,iBACR,CAEA,IAAI,IAAIjuC,KAAKqnC,EAAMR,SACnB,CACI,MAAM/D,EAAW9b,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAQoN,EAAEpN,MAAOC,OAASmN,EAAEnN,OAAQw9B,MAAQrwB,EAAEqwB,OAAOuY,GACpGuoB,EAAUnqC,QAAQka,YAAYxT,UAAU,KAAK,CAAC96B,MAAQoN,EAAEpN,MAAOC,OAASmN,EAAEnN,OAAQw9B,MAAQrwB,EAAEqwB,OAAOuY,GAEzG9F,EAASz+B,SAAW,IAAIR,GAAAA,QAAQ7D,EAAEqE,SAAS0kC,GAAG/oC,EAAEqE,SAAS2kC,GAAGhpC,EAAEqE,SAAS4kC,IACvEkoB,EAAQ9sD,SAAW,IAAIR,GAAAA,QAAQ7D,EAAEqE,SAAS0kC,GAAG/oC,EAAEqE,SAAS2kC,GAAGhpC,EAAEqE,SAAS4kC,IACtEkoB,EAAQ9jC,SAAWub,EAAQtb,kBAAkB,kBAE7CwV,EAAS3vC,WAAY,EACrBg+D,EAAQh+D,WAAY,EAEpB2vC,EAASvY,SAAW,IAAI1mB,GAAAA,QAAQ7D,EAAEuqB,SAASwe,GAAG/oC,EAAEuqB,SAASye,GAAGhpC,EAAEuqB,SAAS0e,IACvEkoB,EAAQ5mC,SAAW,IAAI1mB,GAAAA,QAAQ7D,EAAEuqB,SAASwe,GAAG/oC,EAAEuqB,SAASye,GAAGhpC,EAAEuqB,SAAS0e,IAEtEnG,EAASjyC,KAAO,IAAImP,EAAEnP,MACtBsgE,EAAQtgE,KAAO,CAAClZ,KAAO,MAAM0nB,SAAW,MAAM5B,SAAW,MAAMyoC,WAAapD,EAASjyC,KAAKwO,SAAWyjC,EAASjyC,KAAK4M,UAEnHqlC,EAAS/Y,OAASimC,EAAQ/+D,aAC1BkgE,EAAQpnC,OAASimC,EAAQ/+D,aAEzB,MAAMw3C,EAAM,IAAIyiB,GAChBziB,EAAIh5C,YAAc/U,KAAK+U,YACvBg5C,EAAIh3C,YAAc/W,KAAK+W,YACvBg3C,EAAI/2C,UAAYhX,KAAKgX,UACrB+2C,EAAI53C,KAAO,IAAImP,EAAEnP,MACjB43C,EAAI5L,WAAW18B,KAAK2iC,GACpB2F,EAAI5L,WAAW18B,KAAKgxD,GACpB1oB,EAAI1e,OAASimC,EAAQt7B,MAAM50B,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAAS8wD,EAAI53C,KAAKq1C,aAC5DpD,EAASvS,OAASkY,EAClB0oB,EAAQ5gC,OAASkY,EACjBA,EAAI9K,eAEJ8K,EAAI9L,aAAa5rC,SAAQH,IACrBA,EAAEyT,SAAWy+B,EAASz+B,SAASH,QAC/BtT,EAAEm5B,OAASimC,EAAQ5rD,eACnBxT,EAAE2/B,OAASkY,EACX73C,EAAEyT,SAASujB,EAAI,GAAG,IAEtB6gB,EAAI7L,aAAa7rC,SAAQH,IACrBA,EAAEyT,SAAWy+B,EAASz+B,SAASH,QAC/BtT,EAAEm5B,OAASimC,EAAQzrD,eACnB3T,EAAE2/B,OAASkY,EACX73C,EAAEyT,SAASujB,EAAI,GAAG,IAEtB6gB,EAAIzkC,aAAegsD,EACnBvnB,EAAIwF,kBACJxF,EAAIvE,UAAU7/B,SAAWokC,EAAI5L,WAAW,GAAGx4B,SAASH,QACpDukC,EAAItE,YAAY9/B,SAAWokC,EAAI9L,aAAa,GAAGt4B,SAASH,QACxDukC,EAAIrE,YAAY//B,SAAWokC,EAAI7L,aAAa,GAAGv4B,SAASH,QAExD8rD,EAAQn/B,SAAS1wB,KAAKsoC,GACtBunB,EAAQ/rB,SAAS9jC,KAAKsoC,EAC1B,CAEA,IAAI,IAAIzoC,KAAKqnC,EAAMj4C,MACnB,CACI,MAAMu/D,EAAQ3uD,EAAEnP,KACV+9D,EAAWtjC,EAAOl8B,MAAM0Q,MAAKlP,GAAG+9D,EAAMh3E,KAAKqgB,QAAQ,IAAI,IAAIuL,SAAS3S,EAAEjZ,QACtEm2D,QAAgBpzD,KAAK+V,aAAao+D,SAASD,GACjD9gB,EAAQj9C,KAAO,IAAImP,EAAEnP,MACrBi9C,EAAQ/jB,OAASimC,EAAQt7B,MAAM50B,MAAKlP,GAAGA,EAAEC,KAAKlZ,OAASm2D,EAAQj9C,KAAKq1C,aACpE4H,EAAQ9pC,aAAegsD,EACvBA,EAAQjsB,MAAM5jC,KAAK2tC,GACnBkiB,EAAQn/B,SAAS1wB,KAAK2tC,GAEtB,IAAI,IAAIvwD,KAAKuwD,EAAQnR,aACrB,CACI,MAAMlU,EAAOqlB,EAAQnR,aAAap/C,GAC5ByzE,EAAQhxD,EAAE4nC,kBAAkBrqD,GAC5B0zE,EAAQjxD,EAAE+nC,kBAAkBxqD,GAC5B2zE,EAAQlxD,EAAEsoC,eAAe/qD,GAE/BkrC,EAAKsB,OAASimC,EAAQ5rD,eACtBqkB,EAAKpkB,SAAW,IAAIR,GAAAA,QAAQmtD,EAAMjoB,GAAGioB,EAAMhoB,GAAGgoB,EAAM/nB,IACpDxgB,EAAK8B,SAAW,IAAI1mB,GAAAA,QAAQotD,EAAMloB,GAAGkoB,EAAMjoB,GAAGioB,EAAMhoB,IACpDxgB,EAAKxkB,QAAU,IAAIJ,GAAAA,QAAQqtD,EAAMnoB,GAAGmoB,EAAMloB,GAAGkoB,EAAMjoB,GACvD,CAEA,IAAI,IAAI1rD,KAAKuwD,EAAQlR,aACrB,CACI,MAAMnU,EAAOqlB,EAAQlR,aAAar/C,GAC5ByzE,EAAQhxD,EAAE6nC,kBAAkBtqD,GAC5B0zE,EAAQjxD,EAAEgoC,kBAAkBzqD,GAC5B2zE,EAAQlxD,EAAEuoC,eAAehrD,GAE/BkrC,EAAKsB,OAASimC,EAAQzrD,eACtBkkB,EAAKpkB,SAAW,IAAIR,GAAAA,QAAQmtD,EAAMjoB,GAAGioB,EAAMhoB,GAAGgoB,EAAM/nB,IACpDxgB,EAAK8B,SAAW,IAAI1mB,GAAAA,QAAQotD,EAAMloB,GAAGkoB,EAAMjoB,GAAGioB,EAAMhoB,IACpDxgB,EAAKxkB,QAAU,IAAIJ,GAAAA,QAAQqtD,EAAMnoB,GAAGmoB,EAAMloB,GAAGkoB,EAAMjoB,GACvD,CAEA,IAAI,IAAI1rD,KAAKuwD,EAAQjR,WACrB,CACI,MAAMpU,EAAOqlB,EAAQjR,WAAWt/C,GAC1ByzE,EAAQhxD,EAAE+6B,UAAUx9C,GACpB0zE,EAAQjxD,EAAE8nC,UAAUvqD,GACpB2zE,EAAQlxD,EAAEiE,QAAQ1mB,GAExBkrC,EAAKpkB,SAAW,IAAIR,GAAAA,QAAQmtD,EAAMjoB,GAAGioB,EAAMhoB,GAAGgoB,EAAM/nB,IACpDxgB,EAAK8B,SAAW,IAAI1mB,GAAAA,QAAQotD,EAAMloB,GAAGkoB,EAAMjoB,GAAGioB,EAAMhoB,IACpDxgB,EAAKxkB,QAAU,IAAIJ,GAAAA,QAAQqtD,EAAMnoB,GAAGmoB,EAAMloB,GAAGkoB,EAAMjoB,IACnDxgB,EAAKsB,OAASimC,EAAQ/+D,aACtBw3B,EAAKv3B,YAAW,EACpB,CAEA48C,EAAQG,gBAAgB+hB,EAC5B,CAEAA,EAAQ9hB,iBAAiBnB,EAAWj8C,OAEpC,IAAI,IAAIkP,KAAKgwD,EAAQrK,MACrB,CACI,MAAMyL,EAAKpxD,EAAE28B,aAAa,GAAGt4B,SAASujB,EAChCypC,EAAKrxD,EAAE48B,aAAa,GAAGv4B,SAASujB,EACtC5nB,EAAE28B,aAAa,GAAGt4B,SAAWrE,EAAE28B,aAAa,GAAGt4B,SAASH,QACxDlE,EAAE48B,aAAa,GAAGv4B,SAAWrE,EAAE48B,aAAa,GAAGv4B,SAASH,QAExDlE,EAAE28B,aAAa,GAAGt4B,SAASujB,EAAGwpC,EAC9BpxD,EAAE48B,aAAa,GAAGv4B,SAASujB,EAAGypC,CAClC,CAEA,IAAI,IAAIrxD,KAAKqnC,EAAM9oC,YAET7jB,KAAKqV,WAAWiQ,EAAEnP,KAAKlZ,KAAM,kBAAiBqoB,EAAEnP,KAAKlZ,aAC3D+C,KAAK+U,YAAYoS,aAAamC,aAAegsD,EAC7Ct1E,KAAK+U,YAAYoS,aAAa5Q,aAAaoT,SAAW,IAAIR,GAAAA,QAAQ7D,EAAEqE,SAAS0kC,GAAG/oC,EAAEqE,SAAS2kC,GAAGhpC,EAAEqE,SAAS4kC,IACzGvuD,KAAK+U,YAAYoS,aAAa5Q,aAAas5B,SAAW,IAAI1mB,GAAAA,QAAQ7D,EAAEuqB,SAASwe,GAAG/oC,EAAEuqB,SAASye,GAAGhpC,EAAEuqB,SAAS0e,IACzGvuD,KAAK+U,YAAYoS,aAAa5Q,aAAagT,QAAU,IAAIJ,GAAAA,QAAQ7D,EAAEiE,QAAQ8kC,GAAG/oC,EAAEiE,QAAQ+kC,GAAGhpC,EAAEiE,QAAQglC,IACrGvuD,KAAK+U,YAAYoS,aAAa5Q,aAAa84B,OAASimC,EAAQ/+D,aAE5DvW,KAAK+U,YAAYoS,aAAauC,eAAeC,SAAW,IAAIR,GAAAA,QAAQ7D,EAAEqE,SAAS0kC,GAAG,EAAE/oC,EAAEqE,SAAS4kC,IAC/FvuD,KAAK+U,YAAYoS,aAAauC,eAAemmB,SAAW,IAAI1mB,GAAAA,QAAQ7D,EAAEuqB,SAASwe,GAAG/oC,EAAEuqB,SAASye,GAAGhpC,EAAEuqB,SAAS0e,IAC3GvuD,KAAK+U,YAAYoS,aAAauC,eAAeH,QAAU,IAAIJ,GAAAA,QAAQ7D,EAAEiE,QAAQ8kC,GAAG/oC,EAAEiE,QAAQ+kC,GAAGhpC,EAAEiE,QAAQglC,IACvGvuD,KAAK+U,YAAYoS,aAAauC,eAAe2lB,OAASimC,EAAQ5rD,eAE9D1pB,KAAK+U,YAAYoS,aAAa0C,eAAeF,SAAW,IAAIR,GAAAA,QAAQ7D,EAAEqE,SAAS0kC,GAAG,EAAE/oC,EAAEqE,SAAS4kC,IAC/FvuD,KAAK+U,YAAYoS,aAAa0C,eAAegmB,SAAW,IAAI1mB,GAAAA,QAAQ7D,EAAEuqB,SAASwe,GAAG/oC,EAAEuqB,SAASye,GAAGhpC,EAAEuqB,SAAS0e,IAC3GvuD,KAAK+U,YAAYoS,aAAa0C,eAAeN,QAAU,IAAIJ,GAAAA,QAAQ7D,EAAEiE,QAAQ8kC,GAAG/oC,EAAEiE,QAAQ+kC,GAAGhpC,EAAEiE,QAAQglC,IACvGvuD,KAAK+U,YAAYoS,aAAa0C,eAAewlB,OAASimC,EAAQzrD,eAE9D7pB,KAAK+U,YAAYoS,aAAagsC,QAAQ98C,SAAQH,IAC1CA,EAAEoT,aAAegsD,CAAO,IAE5Bt1E,KAAK+U,YAAYoS,aAAaisC,QAAQ/8C,SAAQH,IAC1CA,EAAEoT,aAAegsD,EACjBp/D,EAAEm9C,sBAAsB,IAE5BrzD,KAAK+U,YAAYoS,aAAamsC,SAASj9C,SAAQH,IAC3CA,EAAEoT,aAAegsD,EACjBp/D,EAAEm9C,sBAAsB,IAG5BrzD,KAAK+U,YAAYoS,aAAawmC,WAAaroC,EAAEqoC,WAC7C3tD,KAAK+U,YAAYoS,aAAa8iD,mBAE9BjqE,KAAK+U,YAAYoS,aAAaosC,kBAC9BvzD,KAAK+U,YAAYoS,aAAaumC,eAAiBpoC,EAAEooC,eACjD1tD,KAAK+W,YAAYoQ,aAAaqsC,iBAAiBluC,EAAEooC,gBAEjD1tD,KAAK+U,YAAYoS,aAAa88B,UAAUjkD,KAAK+U,YAAYk8B,UAAS,GAClEjxC,KAAK+W,YAAYoQ,aAAa88B,UAAUjkD,KAAK+W,YAAYk6B,UAAS,GAClEjxC,KAAK+W,YAAYoQ,aAAa88B,UAAU,MAAK,GAE7CjkD,KAAK+U,YAAYoS,aAAahR,KAAOmP,EAAEnP,KAEvCm/D,EAAQn/B,SAAS1wB,KAAKzlB,KAAK+U,YAAYoS,cACvCmuD,EAAQhpB,MAAM7mC,KAAKzlB,KAAK+U,YAAYoS,cAEpCnnB,KAAK+U,YAAYoS,aAAe,KAChCnnB,KAAK+W,YAAYoQ,aAAe,KAkBpC,MAfkB,IAAfwlC,GAAO5W,WAA6Br1B,GAAfisC,GAAO5W,MAAoC,MAAf4W,GAAO5W,OAEvDu/B,EAAQv/B,KAAO4W,EAAM5W,MAGzBu/B,EAAQxX,WAAWznD,SAAQ0kD,IACvBA,EAAUx1C,SAAS,IAEvB+vD,EAAQxX,WAAa,GAErBwX,EAAQ5H,QAAQ4H,EAAQvgE,YAAYk8B,SAAU,MAC9CqkC,EAAQ5H,QAAQ4H,EAAQv+D,YAAYk6B,SAAU,MAE9CqkC,EAAQrxB,UAAUqxB,EAAQ/+B,aAAatF,UAAS,GAChDjxC,KAAK6mB,gBACEyuD,CACX,CAEArC,aAEI,MAAM2D,EAAQA,IACHtvD,KAAKlR,MAA4B,OAArB,EAAIkR,KAAKuvD,WAC3Bv3D,SAAS,IACT2iB,UAAU,GAEf,OAAO20C,IAAUA,IAAU,IAAMA,IAAU,IAAMA,IAAU,IAC3DA,IAAU,IAAMA,IAAUA,IAAUA,GACxC,CAEAz6D,mBAAmBrH,EAAWsF,EAAK2rB,EAAEgzB,GAEjC/4D,KAAK2oB,eAEL,MAAMotB,EAAO/1C,KAAKizE,mBACZjzE,KAAK+V,aAAa+gE,WAAWhiE,EAAWsF,EAAK2rB,EAAEgzB,EAAE/4D,KAAK+U,YAAY/U,KAAK+W,YAAY/W,KAAKgX,UAAU++B,EAC5G,CAEA55B,mBAAmBrI,GAEf9T,KAAK2oB,eACL,MAAMouD,QAAkB/2E,KAAK+V,aAAau+D,WAAWxgE,GACrDijE,EAAU5gE,KAAK4/B,KAAO/1C,KAAKizE,aAC3BjzE,KAAK+U,YAAYoS,aAAe4vD,EAChC/2E,KAAK+W,YAAYoQ,aAAe4vD,CACpC,CAEA56D,iBAAiBrI,GAEb9T,KAAK2oB,eACL,MAAMyqC,QAAgBpzD,KAAK+V,aAAao+D,SAASrgE,GACjDs/C,EAAQj9C,KAAK4/B,KAAO/1C,KAAKizE,aACzBjzE,KAAK+U,YAAYoS,aAAeisC,EAChCpzD,KAAK+W,YAAYoQ,aAAeisC,CACpC,CAEAj3C,iBAAiBlf,EAAKmd,GAElBpa,KAAK2oB,eACL,MAAMotB,EAAO/1C,KAAKizE,mBACZjzE,KAAK+V,aAAaihE,SAAS/5E,EAAKmd,EAAKpa,KAAK+U,YAAY/U,KAAK+W,YAAY/W,KAAKgX,UAAU++B,EAChG,CAEA55B,sBAEInc,KAAK2oB,eACL3oB,KAAKsyD,WAAWj8C,SAAQy2D,IACpBA,EAAE3d,eAAgB,CAAI,UAGpBnvD,KAAK+V,aAAa/K,cAAchL,KAAK+U,YAAY/U,KAAK+W,YAAY/W,KAAKgX,UACjF,CAEA2R,eAEI,GAAmD,UAAhD3oB,KAAK+U,YAAYoS,cAAchR,KAAKwO,SACvC,CACI,MAAM7d,EAAQ9G,KAAK+V,aAAaC,QAAQ0vB,QAAQ1lC,KAAK+U,YAAYoS,cACjEnnB,KAAK+V,aAAaC,QAAQ6c,OAAO/rB,EAAM,GACvC9G,KAAK+U,YAAYoS,aAAa5B,UAC9BvlB,KAAK+U,YAAYoS,aAAe,KAChCnnB,KAAK+W,YAAYoQ,aAAe,KAChCnnB,KAAK+U,YAAY67B,OAAOn8B,eAAiB,EAC7C,MACQzU,KAAK+U,YAAYoS,eAErBnnB,KAAK+U,YAAYoS,aAAa5B,UAC9BvlB,KAAK+U,YAAYoS,aAAe,KAChCnnB,KAAK+W,YAAYoQ,aAAe,KAChCnnB,KAAK+U,YAAY67B,OAAOn8B,eAAiB,GAEjD,CAEAmU,iBAEI,IAAIuoB,EAAQnxC,KAAK+U,YACb2P,EAAiB1kB,KAAK+U,YAAY2P,eAClCA,IAEAysB,EAAQnxC,KAAK+W,YACb2N,EAAiB1kB,KAAK+W,YAAY2N,gBAGlCA,GAGDA,EAAe80B,gBAAgBsC,MAAKx2B,GAAe,UAAVA,EAAEtoB,SAE1C0nB,EAAe86B,OAAOrO,EAAOzsB,GAC7BA,EAAemzB,sBAEvB,CAEA17B,mBAEInc,KAAK2oB,eACL3oB,KAAKsyD,WAAWj8C,SAAQy2D,IACpBA,EAAE3d,eAAgB,CAAI,UAGpBnvD,KAAK+V,aAAalL,WAAW7K,KAAK+U,YAAY/U,KAAK+W,YAAY/W,KAAKgX,UAC9E,CAEAvB,SAEIzV,KAAKsyD,WAAWj8C,SAAQowC,IACpB,MAAMwwB,EAAMxwB,EAAUxV,SAASue,gBAAgB,UAC/C/I,EAAUqJ,aAAamnB,EAAI,IAE/Bj3E,KAAKgX,UAAU+5B,OAAOggB,SACtB/wD,KAAKgX,UAAU4O,cACnB,CAEAsxD,QAEI,MAAMC,EAAa7qC,QAAQka,YAAYxT,UAAU,KAAM,CAAC5rB,KAAO,GAAGpnB,KAAK+U,YAAYk8B,UACnFkmC,EAAW1+D,WAAY,EACvB0+D,EAAWxtD,SAAWR,GAAAA,QAAQC,OAE9B,MAAMguD,EAAa9qC,QAAQka,YAAYxT,UAAU,KAAM,CAAC5rB,KAAO,GAAGpnB,KAAK+U,YAAYk8B,UACnFmmC,EAAW3+D,WAAY,EACvB2+D,EAAWztD,SAAWR,GAAAA,QAAQC,OAE9B,MAAMiuD,EAAY/qC,QAAQka,YAAYxT,UAAU,KAAM,CAAC5rB,KAAO,GAAGpnB,KAAK+U,YAAYk8B,UAClFomC,EAAU5+D,WAAY,EACtB4+D,EAAU1tD,SAAWR,GAAAA,QAAQC,OAE7B,IAAI,IAAIviB,KAAK7G,KAAK+V,aAAaC,QAE3BnP,EAAE6iB,eAAe2lB,OAAS8nC,EAC1BtwE,EAAEgjB,eAAewlB,OAAS+nC,EAC1BvwE,EAAE0P,aAAa84B,OAASgoC,EAG5BF,EAAW5tD,QAAQrT,IAAM,EACzBkhE,EAAW7tD,QAAQrT,IAAM,EACzBmhE,EAAU9tD,QAAQrT,IAAM,EAExB,IAAI,IAAIrP,KAAK7G,KAAK+V,aAAaC,QAE3Bi9B,GAAUY,cAAchtC,EAAE6iB,gBAC1BupB,GAAUY,cAAchtC,EAAEgjB,gBAC1BopB,GAAUY,cAAchtC,EAAE0P,cAG9B4gE,EAAW5xD,UACX6xD,EAAW7xD,UACX8xD,EAAU9xD,SACd,CAEApJ,aAEI,GAAGnc,KAAKD,aAAe,EACnB,OACJ,MAAMu3E,EAASt3E,KAAKD,eAEdw3E,EAAiBv3E,KAAKC,QAAQq3E,SAC9BC,EAAetsD,MACzB,CAEA9O,aAEI,GAAGnc,KAAKD,aAAa,GAAKC,KAAKC,QAAQC,OACnC,OAEJ,MAAMo3E,IAAWt3E,KAAKD,aAEhBw3E,EAAiBv3E,KAAKC,QAAQq3E,SAC9BC,EAAersD,MACzB,CAEAU,SAASD,EAAWvR,GAEhBpa,KAAK+U,YAAY3V,UAAW,EAC5BY,KAAK+W,YAAY3X,UAAW,EAC5BY,KAAK6mB,cAAgB,EAErB8E,EAAW6rD,YAAYnhE,SAAQ8F,UAE3B,SADMnc,KAAKiV,aAAapO,EAAE5J,KAAKmd,EAAM,GAAEvT,EAAE5J,aAC1B,OAAZ4J,EAAEuP,MACL,CAiBI,GAhBApW,KAAK+U,YAAYoS,aAAahR,KAAKC,MAAQvP,EAAEuP,MAC7CpW,KAAK+U,YAAYoS,aAAai7B,SAAU,EACxCpiD,KAAK+U,YAAYoS,aAAa88B,UAAUjkD,KAAK+U,YAAYk8B,UAAS,GAElEjxC,KAAK+U,YAAYoS,aAAaovB,aAAev2C,KAAK+U,YAElD/U,KAAK+U,YAAYoS,aAAaoqB,YAAYvxC,KAAK+W,YAAYk6B,SAAS,IAAI9nB,GAAAA,QAAQiC,OAAOvkB,EAAE4wE,WAAW,EAAErsD,OAAOvkB,EAAE6wE,aAC/G13E,KAAK+U,YAAYoS,aAAaoqB,YAAYvxC,KAAK+U,YAAYk8B,SAAS,IAAI9nB,GAAAA,QAAQiC,OAAOvkB,EAAE4wE,WAAW,IAAIrsD,OAAOvkB,EAAE6wE,aACjH13E,KAAK+U,YAAYoS,aAAa0C,eAAeF,SAASujB,EAAI,EAE1DltC,KAAK+U,YAAYoS,aAAa+2C,cAAa,GAE3Cl+D,KAAK+W,YAAYoQ,aAAai7B,SAAU,EACxCpiD,KAAK+W,YAAYoQ,aAAaqsC,iBAAiBxzD,KAAK+W,YAAYX,OAChEpW,KAAK+W,YAAYoQ,aAAaumC,eAAiB1tD,KAAK+W,YAAYX,MAE/C,GAAdvP,EAAEgpC,SACL,CACI,MAAMA,EAAWzkB,OAAOvkB,EAAEgpC,UAAYvoB,KAAK23B,GAAK,IAChDj/C,KAAK+U,YAAYoS,aAAa5Q,aAAas5B,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,GAC7E7vC,KAAK+U,YAAYoS,aAAauC,eAAemmB,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,GAC/E7vC,KAAK+U,YAAYoS,aAAa0C,eAAegmB,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,EACnF,CAEGhpC,EAAEkvE,QAED/1E,KAAK+U,YAAYoS,aAAa5Q,aAAagT,QAAQrT,IAAM,EACzDlW,KAAK+U,YAAYoS,aAAauC,eAAeH,QAAQrT,IAAM,EAC3DlW,KAAK+U,YAAYoS,aAAa0C,eAAeN,QAAQrT,IAAM,GAE5DrP,EAAE8wE,QAED33E,KAAK+U,YAAYoS,aAAa5Q,aAAagT,QAAQ9B,IAAM,EACzDznB,KAAK+U,YAAYoS,aAAauC,eAAeH,QAAQ9B,IAAM,EAC3DznB,KAAK+U,YAAYoS,aAAa0C,eAAeN,QAAQ9B,IAAM,GAG/DznB,KAAK+U,YAAYoS,aAAa22C,WAAWznD,SAAQwnD,GAAMA,EAAKplD,WAAY,IACxEzY,KAAK+U,YAAYoS,aAAe,KAChCnnB,KAAK+W,YAAYoQ,aAAe,IACpC,KAEA,CAgBI,GAfAnnB,KAAK+W,YAAYoQ,aAAahR,KAAKC,MAAQvP,EAAEuP,MAC7CpW,KAAK+W,YAAYoQ,aAAai7B,SAAU,EACxCpiD,KAAK+W,YAAYoQ,aAAa88B,UAAUjkD,KAAK+W,YAAYk6B,UAAS,GAElEjxC,KAAK+W,YAAYoQ,aAAaovB,aAAev2C,KAAK+W,YAClD/W,KAAK+W,YAAYoQ,aAAaoqB,YAAYvxC,KAAK+U,YAAYk8B,SAAS,IAAI9nB,GAAAA,QAAQiC,OAAOvkB,EAAE4wE,WAAW,EAAErsD,OAAOvkB,EAAE6wE,aAC/G13E,KAAK+W,YAAYoQ,aAAaoqB,YAAYvxC,KAAK+W,YAAYk6B,SAAS,IAAI9nB,GAAAA,QAAQiC,OAAOvkB,EAAE4wE,WAAW,IAAIrsD,OAAOvkB,EAAE6wE,aACjH13E,KAAK+U,YAAYoS,aAAauC,eAAeC,SAASujB,EAAI,EAE1DltC,KAAK+W,YAAYoQ,aAAa+2C,cAAa,GAE3Cl+D,KAAK+U,YAAYoS,aAAai7B,SAAU,EACxCpiD,KAAK+U,YAAYoS,aAAaqsC,iBAAiBxzD,KAAK+U,YAAYqB,OAChEpW,KAAK+U,YAAYoS,aAAaumC,eAAiB1tD,KAAK+U,YAAYqB,MAE/C,GAAdvP,EAAEgpC,SACL,CACI,MAAMA,EAAWzkB,OAAOvkB,EAAEgpC,UAAYvoB,KAAK23B,GAAK,IAChDj/C,KAAK+U,YAAYoS,aAAa5Q,aAAas5B,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,GAC7E7vC,KAAK+U,YAAYoS,aAAauC,eAAemmB,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,GAC/E7vC,KAAK+U,YAAYoS,aAAa0C,eAAegmB,SAAW,IAAI1mB,GAAAA,QAAQ,EAAE0mB,EAAS,EACnF,CAEGhpC,EAAEkvE,QAED/1E,KAAK+U,YAAYoS,aAAa5Q,aAAagT,QAAQrT,IAAM,EACzDlW,KAAK+U,YAAYoS,aAAauC,eAAeH,QAAQrT,IAAM,EAC3DlW,KAAK+U,YAAYoS,aAAa0C,eAAeN,QAAQrT,IAAM,GAE5DrP,EAAE8wE,QAED33E,KAAK+U,YAAYoS,aAAa5Q,aAAagT,QAAQ9B,IAAM,EACzDznB,KAAK+U,YAAYoS,aAAauC,eAAeH,QAAQ9B,IAAM,EAC3DznB,KAAK+U,YAAYoS,aAAa0C,eAAeN,QAAQ9B,IAAM,GAG/DznB,KAAK+U,YAAYoS,aAAa22C,WAAWznD,SAAQwnD,GAAMA,EAAKplD,WAAY,IACxEzY,KAAK+U,YAAYoS,aAAe,KAChCnnB,KAAK+W,YAAYoQ,aAAe,IACpC,CACAnnB,KAAK6mB,eAAe,IAGxB7mB,KAAK+U,YAAY3V,UAAW,EAC5BY,KAAK+W,YAAY3X,UAAW,EAE5B,MAAMg2E,EAAgBxuD,aAAY,KAC3B+E,EAAW6rD,YAAYt3E,SAAWF,KAAK6mB,gBAEtC7mB,KAAK+U,YAAY2B,aACjB1W,KAAK6mB,eAAiB,IACtBC,cAAcsuD,GAClB,GACF,IACN,GC53BJwC,EAAAA,EAAAA,IAAUC,GAAKC,MAAM,QASrB,MAAMC,IAAMH,EAAAA,EAAAA,IAAUC,GACtBE,GAAIC,IAAI1sC,IACRysC,GAAIC,IAAIv0C,IAAQq0C,MAAM,QAGtBC,GAAIE,OAAOC,iBAAiBC,WAAa,yCAEzCJ,GAAIE,OAAOC,iBAAiBztD,aAAe,oBAC3CstD,GAAIE,OAAOC,iBAAiBE,aAAe,oBAC3CL,GAAIE,OAAOC,iBAAiBnS,WAAa,kBACzCgS,GAAIE,OAAOC,iBAAiBttD,WAAa,kBACzCmtD,GAAIE,OAAOC,iBAAiBp4E,aAAe,IAAI80E,GAG/CmD,GAAIE,OAAOC,iBAAiB/+D,WAAa,mCACzC4+D,GAAIE,OAAOC,iBAAiBxoD,YAAc,kCAC1CqoD,GAAIE,OAAOC,iBAAiBn0C,SAAW,6BACvCg0C,GAAIE,OAAOC,iBAAiB95D,QAAU,c,8mKC5BlCi6D,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB73D,IAAjB83D,EACH,OAAOA,EAAaC,QAGrB,IAAIpzD,EAASgzD,EAAyBE,GAAY,CAGjDE,QAAS,CAAC,GAOX,OAHAC,EAAoBH,GAAUI,KAAKtzD,EAAOozD,QAASpzD,EAAQA,EAAOozD,QAASH,GAGpEjzD,EAAOozD,OACf,CAGAH,EAAoBzxE,EAAI6xE,E,WCzBxB,IAAIE,EAAW,GACfN,EAAoBO,EAAI,SAASryD,EAAQsyD,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAepL,IACnB,IAAShrE,EAAI,EAAGA,EAAI+1E,EAAS14E,OAAQ2C,IAAK,CACrCi2E,EAAWF,EAAS/1E,GAAG,GACvBk2E,EAAKH,EAAS/1E,GAAG,GACjBm2E,EAAWJ,EAAS/1E,GAAG,GAE3B,IAJA,IAGIq2E,GAAY,EACPrD,EAAI,EAAGA,EAAIiD,EAAS54E,OAAQ21E,MACpB,EAAXmD,GAAsBC,GAAgBD,IAAavoD,OAAO0oD,KAAKb,EAAoBO,GAAGO,OAAM,SAASt2E,GAAO,OAAOw1E,EAAoBO,EAAE/1E,GAAKg2E,EAASjD,GAAK,IAChKiD,EAASjmD,OAAOgjD,IAAK,IAErBqD,GAAY,EACTF,EAAWC,IAAcA,EAAeD,IAG7C,GAAGE,EAAW,CACbN,EAAS/lD,OAAOhwB,IAAK,GACrB,IAAIwpC,EAAI0sC,SACEr4D,IAAN2rB,IAAiB7lB,EAAS6lB,EAC/B,CACD,CACA,OAAO7lB,CArBP,CAJCwyD,EAAWA,GAAY,EACvB,IAAI,IAAIn2E,EAAI+1E,EAAS14E,OAAQ2C,EAAI,GAAK+1E,EAAS/1E,EAAI,GAAG,GAAKm2E,EAAUn2E,IAAK+1E,EAAS/1E,GAAK+1E,EAAS/1E,EAAI,GACrG+1E,EAAS/1E,GAAK,CAACi2E,EAAUC,EAAIC,EAwB/B,C,eC5BAV,EAAoBe,EAAI,SAASh0D,GAChC,IAAIi0D,EAASj0D,GAAUA,EAAOk0D,WAC7B,WAAa,OAAOl0D,EAAO,UAAY,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAizD,EAAoBxL,EAAEwM,EAAQ,CAAEE,EAAGF,IAC5BA,CACR,C,eCNAhB,EAAoBxL,EAAI,SAAS2L,EAASgB,GACzC,IAAI,IAAI32E,KAAO22E,EACXnB,EAAoBhzD,EAAEm0D,EAAY32E,KAASw1E,EAAoBhzD,EAAEmzD,EAAS31E,IAC5E2tB,OAAOipD,eAAejB,EAAS31E,EAAK,CAAE62E,YAAY,EAAMx6D,IAAKs6D,EAAW32E,IAG3E,C,eCPAw1E,EAAoBsB,EAAI,WACvB,GAA0B,kBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO75E,MAAQ,IAAI85E,SAAS,cAAb,EAChB,CAAE,MAAOjiE,GACR,GAAsB,kBAAXJ,OAAqB,OAAOA,MACxC,CACA,CAPuB,E,eCAxB6gE,EAAoBhzD,EAAI,SAASy0D,EAAKC,GAAQ,OAAOvpD,OAAOwpD,UAAUC,eAAevB,KAAKoB,EAAKC,EAAO,C,eCCtG1B,EAAoBjsC,EAAI,SAASosC,GACX,qBAAX0B,QAA0BA,OAAOC,aAC1C3pD,OAAOipD,eAAejB,EAAS0B,OAAOC,YAAa,CAAEl9E,MAAO,WAE7DuzB,OAAOipD,eAAejB,EAAS,aAAc,CAAEv7E,OAAO,GACvD,C,eCNAo7E,EAAoBnjC,EAAI,G,eCKxB,IAAIklC,EAAkB,CACrB,IAAK,GAaN/B,EAAoBO,EAAEhD,EAAI,SAASyE,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4B1mE,GAC/D,IAKIykE,EAAU+B,EALVxB,EAAWhlE,EAAK,GAChB2mE,EAAc3mE,EAAK,GACnB4mE,EAAU5mE,EAAK,GAGIjR,EAAI,EAC3B,GAAGi2E,EAASh9B,MAAK,SAAShgD,GAAM,OAA+B,IAAxBu+E,EAAgBv+E,EAAW,IAAI,CACrE,IAAIy8E,KAAYkC,EACZnC,EAAoBhzD,EAAEm1D,EAAalC,KACrCD,EAAoBzxE,EAAE0xE,GAAYkC,EAAYlC,IAGhD,GAAGmC,EAAS,IAAIl0D,EAASk0D,EAAQpC,EAClC,CAEA,IADGkC,GAA4BA,EAA2B1mE,GACrDjR,EAAIi2E,EAAS54E,OAAQ2C,IACzBy3E,EAAUxB,EAASj2E,GAChBy1E,EAAoBhzD,EAAE+0D,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOhC,EAAoBO,EAAEryD,EAC9B,EAEIm0D,EAAqBC,KAAK,yBAA2BA,KAAK,0BAA4B,GAC1FD,EAAmBtkE,QAAQkkE,EAAqBM,KAAK,KAAM,IAC3DF,EAAmBl1D,KAAO80D,EAAqBM,KAAK,KAAMF,EAAmBl1D,KAAKo1D,KAAKF,G,IC/CvF,IAAIG,EAAsBxC,EAAoBO,OAAEn4D,EAAW,CAAC,MAAM,WAAa,OAAO43D,EAAoB,MAAQ,IAClHwC,EAAsBxC,EAAoBO,EAAEiC,E","sources":["webpack://xg_viewer/./src/App.vue","webpack://xg_viewer/./src/App.vue?7ccd","webpack://xg_viewer/./src/views/ModuleMake.vue","webpack://xg_viewer/./src/components/BabylonViewer.vue","webpack://xg_viewer/./src/components/BabylonViewer.vue?7990","webpack://xg_viewer/./src/components/Login/LogInModal.vue","webpack://xg_viewer/./src/components/Login/LogInModal.vue?06cf","webpack://xg_viewer/./src/components/essential/headerTemplate.vue","webpack://xg_viewer/./src/components/essential/headerTemplate.vue?67f6","webpack://xg_viewer/./src/views/ModuleMake.vue?42db","webpack://xg_viewer/./src/components/Edit.vue","webpack://xg_viewer/./src/components/Edit.vue?f26c","webpack://xg_viewer/./src/components/myHome.vue","webpack://xg_viewer/./src/components/Login/AdminLogin.vue","webpack://xg_viewer/./src/components/Login/AdminLogin.vue?ec01","webpack://xg_viewer/./src/components/essential/SideMenu.vue","webpack://xg_viewer/./src/components/essential/SideMenu.vue?0b08","webpack://xg_viewer/./src/components/myHome.vue?4796","webpack://xg_viewer/./src/components/Login/LogIn.vue","webpack://xg_viewer/./src/components/Login/bottomInfo.vue","webpack://xg_viewer/./src/components/Login/bottomInfo.vue?304c","webpack://xg_viewer/./src/components/Login/joinStep1Footer.vue","webpack://xg_viewer/./src/components/Login/joinStep1Footer.vue?8253","webpack://xg_viewer/./src/components/Login/LogIn.vue?0e9a","webpack://xg_viewer/./src/components/Login/joinStep1.vue","webpack://xg_viewer/./src/assets/js/LogIn/EssencialUse.js","webpack://xg_viewer/./src/assets/js/LogIn/PersonalInfo.js","webpack://xg_viewer/./src/components/Login/scrollToTop.vue","webpack://xg_viewer/./src/components/Login/scrollToTop.vue?5f90","webpack://xg_viewer/./src/components/Login/joinStep1.vue?a1e9","webpack://xg_viewer/./src/components/Login/joinStep2.vue","webpack://xg_viewer/./src/components/Login/joinStep2.vue?acef","webpack://xg_viewer/./src/components/Login/joinStep2Simple.vue","webpack://xg_viewer/./src/components/Login/joinStep2Simple.vue?249d","webpack://xg_viewer/./src/components/Login/joinStep3.vue","webpack://xg_viewer/./src/components/Login/joinStep3.vue?3888","webpack://xg_viewer/./src/components/Login/findID.vue","webpack://xg_viewer/./src/components/Login/findID.vue?87f5","webpack://xg_viewer/./src/components/Login/findPW.vue","webpack://xg_viewer/./src/components/Login/findPW.vue?c414","webpack://xg_viewer/./src/components/Login/findIDResult.vue","webpack://xg_viewer/./src/components/Login/findIDResult.vue?baf0","webpack://xg_viewer/./src/components/Login/LoginNCallback.vue","webpack://xg_viewer/./src/components/Login/LoginNCallback.vue?87b9","webpack://xg_viewer/./src/components/Login/childPage.vue","webpack://xg_viewer/./src/components/Login/childPage.vue?70ab","webpack://xg_viewer/./src/components/Login/joinStepSub.vue","webpack://xg_viewer/./src/components/Login/joinStepSub.vue?0bb4","webpack://xg_viewer/./src/components/Login/findEmail.vue","webpack://xg_viewer/./src/components/Login/findEmail.vue?599e","webpack://xg_viewer/./src/components/Login/findEmailResult.vue","webpack://xg_viewer/./src/components/Login/findEmailResult.vue?9165","webpack://xg_viewer/./src/components/Login/changePW2.vue","webpack://xg_viewer/./src/components/Login/changePW2.vue?5038","webpack://xg_viewer/./src/components/Login/joinChild.vue","webpack://xg_viewer/./src/components/Login/joinChild.vue?b448","webpack://xg_viewer/./src/components/Login/findEmailSub.vue","webpack://xg_viewer/./src/components/Login/findEmailSub.vue?77cc","webpack://xg_viewer/./src/components/Login/findChild.vue","webpack://xg_viewer/./src/components/Login/findChild.vue?c4c5","webpack://xg_viewer/./src/components/Login/changePW1.vue","webpack://xg_viewer/./src/components/Login/changePW1.vue?8e14","webpack://xg_viewer/./src/components/Login/changePWSub.vue","webpack://xg_viewer/./src/components/Login/changePWSub.vue?57cb","webpack://xg_viewer/./src/components/Login/changeChild.vue","webpack://xg_viewer/./src/components/Login/changeChild.vue?0eba","webpack://xg_viewer/./src/components/myPage.vue","webpack://xg_viewer/./src/components/myPage.vue?fec2","webpack://xg_viewer/./src/components/manageMenber.vue","webpack://xg_viewer/./src/components/essential/pagination.vue","webpack://xg_viewer/./src/components/essential/pagination.vue?87ef","webpack://xg_viewer/./src/components/manageMenber.vue?cf5c","webpack://xg_viewer/./src/router/index.js","webpack://xg_viewer/./src/assets/store/index.js","webpack://xg_viewer/./src/models/Helper/VectorHelper.js","webpack://xg_viewer/./src/models/Helper/MeshHelper.js","webpack://xg_viewer/./src/models/Scenes/SceneBase.js","webpack://xg_viewer/./src/models/Helper/CsgHelper.js","webpack://xg_viewer/./src/models/Entities/historyCommands.js","webpack://xg_viewer/./src/models/Entities/ContextItemBase.js","webpack://xg_viewer/./src/models/Entities/EntityBase.js","webpack://xg_viewer/./src/models/Entities/WallEntity.js","webpack://xg_viewer/./src/models/Helper/SaveHelper.js","webpack://xg_viewer/./src/models/Scenes/Scene2d.js","webpack://xg_viewer/./src/models/Scenes/Scene3d.js","webpack://xg_viewer/./src/models/Loaders/MaterialLoader.js","webpack://xg_viewer/./src/models/Items/SpotItem.js","webpack://xg_viewer/./src/models/Entities/DockingEntity.js","webpack://xg_viewer/./src/models/Entities/DoorEntity.js","webpack://xg_viewer/./src/models/Entities/FloorEntity.js","webpack://xg_viewer/./src/models/Items/TopSpotItem.js","webpack://xg_viewer/./src/models/Entities/StairsEntity.js","webpack://xg_viewer/./src/models/Entities/UnitEntity.js","webpack://xg_viewer/./src/models/Entities/ColumnEntity.js","webpack://xg_viewer/./src/models/Entities/ModuleEntity.js","webpack://xg_viewer/./src/models/Entities/WindowEntity.js","webpack://xg_viewer/./src/models/Entities/OpeningEntity.js","webpack://xg_viewer/./src/models/Entities/VoidEntity.js","webpack://xg_viewer/./src/models/Entities/CornerEntity.js","webpack://xg_viewer/./src/models/Entities/TempWallEntity.js","webpack://xg_viewer/./src/models/Entities/TempOpningEntity.js","webpack://xg_viewer/./src/models/Loaders/EntityLoader.js","webpack://xg_viewer/./src/models/Loaders/SceneLoader.js","webpack://xg_viewer/./src/main.js","webpack://xg_viewer/webpack/bootstrap","webpack://xg_viewer/webpack/runtime/chunk loaded","webpack://xg_viewer/webpack/runtime/compat get default export","webpack://xg_viewer/webpack/runtime/define property getters","webpack://xg_viewer/webpack/runtime/global","webpack://xg_viewer/webpack/runtime/hasOwnProperty shorthand","webpack://xg_viewer/webpack/runtime/make namespace object","webpack://xg_viewer/webpack/runtime/publicPath","webpack://xg_viewer/webpack/runtime/jsonp chunk loading","webpack://xg_viewer/webpack/startup"],"sourcesContent":["\r\n\r\n\r\n","import { render } from \"./App.vue?vue&type=template&id=dd64f022\"\nconst script = {}\n\nimport \"./App.vue?vue&type=style&index=0&id=dd64f022&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n","import { render } from \"./BabylonViewer.vue?vue&type=template&id=356d370c&scoped=true\"\nimport script from \"./BabylonViewer.vue?vue&type=script&lang=js\"\nexport * from \"./BabylonViewer.vue?vue&type=script&lang=js\"\n\nimport \"./BabylonViewer.vue?vue&type=style&index=0&id=356d370c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-356d370c\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./LogInModal.vue?vue&type=template&id=a7e2309e&scoped=true\"\nimport script from \"./LogInModal.vue?vue&type=script&lang=js\"\nexport * from \"./LogInModal.vue?vue&type=script&lang=js\"\n\nimport \"./LogInModal.vue?vue&type=style&index=0&id=a7e2309e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a7e2309e\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./headerTemplate.vue?vue&type=template&id=1aaef99d&scoped=true\"\nimport script from \"./headerTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./headerTemplate.vue?vue&type=script&lang=js\"\n\nimport \"./headerTemplate.vue?vue&type=style&index=0&id=1aaef99d&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1aaef99d\"]])\n\nexport default __exports__","import { render } from \"./ModuleMake.vue?vue&type=template&id=f808ef76&scoped=true\"\nimport script from \"./ModuleMake.vue?vue&type=script&lang=js\"\nexport * from \"./ModuleMake.vue?vue&type=script&lang=js\"\n\nimport \"./ModuleMake.vue?vue&type=style&index=0&id=f808ef76&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f808ef76\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./Edit.vue?vue&type=template&id=71dec950\"\nimport script from \"./Edit.vue?vue&type=script&lang=js\"\nexport * from \"./Edit.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import { render } from \"./AdminLogin.vue?vue&type=template&id=5ba6e394&scoped=true\"\nimport script from \"./AdminLogin.vue?vue&type=script&lang=js\"\nexport * from \"./AdminLogin.vue?vue&type=script&lang=js\"\n\nimport \"./AdminLogin.vue?vue&type=style&index=0&id=5ba6e394&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ba6e394\"]])\n\nexport default __exports__","\r\n \r\n\r\n \r\n\r\n ","import { render } from \"./SideMenu.vue?vue&type=template&id=ce38d8ba&scoped=true\"\nimport script from \"./SideMenu.vue?vue&type=script&lang=js\"\nexport * from \"./SideMenu.vue?vue&type=script&lang=js\"\n\nimport \"./SideMenu.vue?vue&type=style&index=0&id=ce38d8ba&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ce38d8ba\"]])\n\nexport default __exports__","import { render } from \"./myHome.vue?vue&type=template&id=41a0fdce\"\nimport script from \"./myHome.vue?vue&type=script&lang=js\"\nexport * from \"./myHome.vue?vue&type=script&lang=js\"\n\nimport \"./myHome.vue?vue&type=style&index=0&id=41a0fdce&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n","import { render } from \"./bottomInfo.vue?vue&type=template&id=63061e3a&scoped=true\"\nconst script = {}\n\nimport \"./bottomInfo.vue?vue&type=style&index=0&id=63061e3a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-63061e3a\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./joinStep1Footer.vue?vue&type=template&id=7eb6c7ad&scoped=true\"\nimport script from \"./joinStep1Footer.vue?vue&type=script&lang=js\"\nexport * from \"./joinStep1Footer.vue?vue&type=script&lang=js\"\n\nimport \"./joinStep1Footer.vue?vue&type=style&index=0&id=7eb6c7ad&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7eb6c7ad\"]])\n\nexport default __exports__","import { render } from \"./LogIn.vue?vue&type=template&id=9bf4e3bc&scoped=true\"\nimport script from \"./LogIn.vue?vue&type=script&lang=js\"\nexport * from \"./LogIn.vue?vue&type=script&lang=js\"\n\nimport \"./LogIn.vue?vue&type=style&index=0&id=9bf4e3bc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9bf4e3bc\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n","export const termsData = [\r\n {\r\n agree: '이용약관 동의',\r\n date: '2022-07-30',\r\n title: '제1장 총칙',\r\n subtitle: '제1조 (목적)',\r\n content: `본약관은 자이가이스트(이하 \\'회사\\')에서 운영하는 자이 인터넷 서비스(자이가이스트 브랜드 홈페이지 및 자이가이스트 관련 사이트들의 총칭으로, 이하 \\'서비스\\'라 한다)의 이용조건 및 절차에 관한 기본적인 사항을 정함을 목적으로 합니다.`,\r\n subtitle2: '제2조 (용어 정의)',\r\n content2: `\r\n ① '자이가이스트'란 회사가 이용자들에게 서비스를 제공하기 위하여 운영하는 인터넷 Web / Mobile 사이트를 의미하며, '회사'가 재화 또는 용역 (이하 '재화 등'이라함)을 이용자들에게 제공하기 위하여 컴퓨터 등 정보통신서립를 이용하여 '재화 등'을 거래할 수 있도록 설정한 가상의 영업장 및 사이버 몰로, 아룰러 이를 운영하는 사업자의 의미로도 사용합니다.
\r\n ② '이용자'란 '서비스'에 접속하여 이약관에 따라 '자이가이스트'이 제공하는 서비스을 받는 회원 및 비회원을 의미합니다.
\r\n ③ '회원'이라 함은 '사이트'에 접속하여 본 약관에 따라 '사이트'에 '회원'으로 가입하여 '사이트'가 제공하는 '서비스'를 받는 자를 말합니다.
\r\n ④ '비회원'이란 '회원'에 가입하지 않고 서비스를 이용하는 자를 말합니다.
\r\n ⑤ 이메일(E-Mail) : 회원 식별과 회원의 서비스 이용을 위하여 회원이 선정하고 회사가 승인하기 위한 전자메일주소
\r\n ⑥ 비밀번호 : 회원의 비밀 보호를 위해 회원 자신이 설정한 문자와 숫자의 조합
\r\n ⑦ '서비스'란 다양한 정보의 제공 및 상품(재화와 용역 포함)의 판매 또는 상품과 관련한 다양한 판촉행위 및, 기타 부가 '서비스'를 말합니다.
\r\n ⑧ 운영자 : 서비스의 전반적인 관리와 원활한 운영을 위하여 회사에서 선정한 사람
\r\n ⑨ 해지 : 회사 또는 회원이 서비스 개통 후 회원계약을 해약 하는 것
\r\n ⑩ '할인 쿠폰'이란 자이가이스트를 통하여 물품을 구매할 때 표시된 금액 또는 비율만큼 물품 대금에서 할인 받을 수 있는 회사 전용의 사이버 또는 오프라인 쿠폰을 말합니다.\r\n `,\r\n subtitle3:'제3조 (약관의 효력 및 변경)',\r\n content3:`\r\n ① 본 서비스를 이용하고자 하는 모든 이용자에 대하여 그 효력을 발생합니다.
\t \r\n ② 이 약관의 내용은 서비스의 일부 화면 또는 기타 방법 등에 의하여 그 내용을 게재함으로써 그 효력을 발생합니다.
\r\n ③ 회사는 운영 또는 영업상 중요한 사유가 있을 경우 본 약관을 임의로 변경할 수 있으며, 변경된 약관은 본 조 제2항과 같은 방법 기타 법령에 규정된 방법으로 공지함으로써 그 효력을 발생합니다.\r\n `,\r\n subtitle4:'제4조 (약관 외 준칙)',\r\n content4:\r\n `\r\n 이 약관에 명시되지 않은 사항은 전자상거래 등에서의 소비자 보호에 관한 법률, 약관의 규제에 관한 법률, 전기통신기본법, 전기통신사업법, 정보통신망 이용 촉진 및 정보 보호 등에 관한 법률 및 기타 관련법령의 규정에 의합니다.`,\r\n title2:'제 2장 서비스 회원가입 계약',\r\n subtitle5:'제5조 (회원가입 계약의 성립)',\r\n content5:\r\n `\r\n ① \"이용 약관 동의\" 에 체크 후 회원이 \"회원가입\" 단추를 누르면 이 약관에 동의하는 것으로 간주됩니다.
\t \r\n      \r\n 가. 단, 이경우 회원은 타인의 정보를 이용하는 등 행위를 통하여 회원가입을 해선 안됩니다.
\t \r\n ② 회원계약은 회원의 회원신청에 대하여 회사가 심사 후 승낙함으로써 성립합니다.`,\r\n subtitle6:'제6조 (회원신청)',\r\n content6:\r\n `\r\n ① 회원신청은 온라인으로 회사 소정의 가입신청 양식에서 요구하는 사항을 기록하여 신청합니다.
\t \r\n ② 온라인 가입신청 양식에 기재하는 모든 회원 정보는 실제 데이터인 것으로 간주하며 실명이나 실제 정보를 입력하지 않은 사용자는 법적인 보호를 받을 수 없으며, 서비스 사용의 제한을 받을 수 있습니다.`,\r\n subtitle7:'제7조 (회원 개인정보)',\r\n content7:\r\n `\r\n ① '사이트'는 이용자의 정보 수집시 '사이트'에 필요한 최소한의 정보를 수집합니다. 다음 사항을 필수사항으로 하며, 그 외 사항은 선택사항으로 합니다.
\t \r\n      가. ID
\t \r\n      나. 비밀번호
\t \r\n      다. 성명
\t \r\n      라. 휴대폰번호
\t \r\n ② 제공된 개인정보는 당해 이용자의 동의 없이 목적 외 이용이나 제3자에게 제공할 수 없으며, 이에대한 모든 책임은 '사이트'가 집니다.
\t \r\n ③ '사이트' 이용자의 개인식별이 가능한 개인정보를 수집하는 때에는 반드시 당해 이용자의 동의를 받습니다.`,\r\n subtitle8:'제8조 (회원정보 변경)',\r\n content8:\r\n `\r\n ① 회원은 언제든지 '사이트'에 탈퇴를 요청할 수 있으며, '사이트'는 즉시 탈퇴처리를 하여야 합니다. 탈퇴는 '회원' 본인이 직접 '사이트'에서 '회사'가 정한 방법에 의거하여 탈퇴요청을 하여야 합니다.
\t \r\n ② '회원' 스스로 탈퇴를 한 후 재가입, 재이용을 희망할 경우에는 회원 재가입, 임의해지 등을 반복적으로 행함으로써 회사가 제공하는 할인쿠폰, 이벤트 혜택 등의 경제상의 이익을 불·편법으로 수취하거나 이 과정에서 명의도용 등의 행위 우려가 있으므로 이러한 불·편법 행위 차단 등의 목적으로 회원탈퇴한 날로부터 30일이 경과해야 회원 재가입이 가능하며 본 약관이 정하는 회원가입절차와 관련 조항에 따라 재이용 의사가 회사에 통지되어 회사가 이용을 승낙한 이후에 서비스의 재이용이 가능합니다.
\t \r\n ③ '회원'이 탈퇴하는 경우 '회원'이 '사이트'에 작성하였던 게시물 중 본인계정에 등록된 게시물은 일체 삭제되나, 타인에 의해 퍼가기, 스크랩 등이 되어 재 게시되거나, 공용게시판에 등록된 게시물 등은 삭제되지 않으니 사전에 삭제 후 탈퇴하시기 바랍니다.
\t \r\n ④ 회사가 회원자격을 상실시킬 경우 회원에게 이를 사전에 통지한 후 탈퇴시킵니다. '회원' 본인의 의사로 재가입은 30일 이후에 가능합니다.`,\r\n subtitle9:'제9조 (회원정보 사용에 대한 동의)',\r\n content9:`\r\n ① 회원의 개인 정보에 대해서는 사이트의 개인정보 처리방침이 적용됩니다.
\t \r\n ② 회사가 제6조에 따라 신청서에 기재를 요구하는 회원의 개인정보는 본 회원계약의 이행과 본 회원계약상의 서비스제공을 위한 목적으로 이용합니다.
\t \t \r\n ③ 회원이 회사 및 회사와 제휴한 서비스들을 편리하게 이용할 수 있도록 하기 위해 회원 정보는 회사와 제휴한 업체에 제공될 수 있습니다. 단, 회사는 회원 정보 제공 이전에 제휴 업체, 제공 목적, 제공할 회원 정보의 내용 등을 사전에 공지하고 회원의 동의를 얻어야 합니다.
\t \r\n ④ 회원은 회원정보 수정을 통해 언제든지 개인 정보에 대한 열람 및 수정을 할 수 있습니다.
\t \r\n ⑤ 회원이 회원신청서에 회원정보를 기재하고, 회사에 본 약관에 따라 회원신청을 하는 것은 회사가 본 약관에 따라 회원신청서에 기재된 회원정보를 수집, 이용 및 제공하는 것에 동의하는 것으로 간주됩니다.
\t \t \r\n ⑥ 회원이 회사의 제품을 문의하기 위해 상담을 원하는 경우, 이를 위한 회원의 현장주소, 전화번호, 휴대폰 번호, 구입한 제품에 대한 정보(공사명, 계약일, 계약번호, 연락처, 계약서유무, 하자내용)를 필요로 할 수 있으며, 이는 회원에 대한 상담 및 A/S를 위한 자료로 쓰여집니다.`,\r\n subtitle10:'제10조 (회원신청의 승낙)',\r\n content10:`\r\n ① 회사는 회원이 제6조에서 정한 모든 사항을 정확히 기재하여 회원신청을 하였을 때 제2항, 제3항의 경우를 예외로 하여 승낙할 수 있습니다.
\r\n ② 회사는 다음 각 호의 1에 해당하는 회원신청에 대하여는 승낙을 유보할 수 있습니다.
\r\n      \r\n 가. 서비스 이용설비에 여유가 없는 경우
\t \r\n      \r\n 나. 기술상 지장이 있는 경우
\t \r\n      \r\n 다. 기타 회사의 사정상 이용승낙이 곤란한 경우
\t \r\n ③ 회사는 다음 각 호의 1에 해당하는 회원신청에 대하여는 이를 승낙하지 아니 할 수 있습니다.
\r\n      \r\n 가. 이름이 실명이 아닌 경우
\r\n      \r\n 나. 다른 사람의 명의를 사용하여 신청한 경우
\t \r\n      \r\n 다. 회원신청 시 필요내용을 허위로 기재하여 신청한 경우
\t \r\n      \r\n 라. 사회의 안녕질서 또는 미풍양속을 저해할 목적으로 신청한 경우
\t \r\n      \r\n 마. 법정 대리인의 동의가 필요한 만 14세 미만 아동
\t \r\n      \r\n 바. 기타 회사가 정한 회원신청요건이 미비 되었을 때`,\r\n subtitle11:'제11조 (계약사항의 변경)',\r\n content11:'회원은 회원신청 시 기재한 사항이 변경되었을 경우에는 온라인으로 수정을 해야 하고 미변경으로 인하여 발생되는 문제의 책임은 회원에게 있습니다.',\r\n title3: '제3장 계약당사자의 의무',\r\n subtitle12:'제12조 (계약당사자의 의무)',\r\n content12:`\r\n ① 회사는 서비스 제공과 관련해서 알고 있는 회원의 신상정보를 본인의 승낙 없이 제3자에게 누설, 배포하지 않습니다. 단, 전기통신기본법 등 법률의 규정에 의해 국가기관의 요구가 있는 경우, 범죄에 대한 수사상의 목적이 있거나 정보통신윤리 위원회의 요청이 있는 경우 또는 기타 관계법령에서 정한 절차에 따른 요청이 있는 경우에는 그러하지 않습니다.
\t \r\n ② 1항의 범위 내에서, 회사는 업무와 관련하여 회원 전체 또는 일부의 개인정보에 관한 통계 자료를 작성하여 이를 사용할 수 있고, 서비스를 통하여 회원의 컴퓨터에 쿠키를 전송할 수 있습니다. 이 경우 회원은 쿠키의 수신을 거부하거나 쿠키의 수신에 대하여 경고하도록 사용하는 컴퓨터의 브라우저의 설정을 변경할 수 있습니다.`,\r\n subtitle13:'제13조 (회원의 의무)',\r\n content13:`\r\n ① 회원은 서비스를 이용할 때 다음 각 호의 행위를 하지 않아야 합니다.
\r\n      \t \r\n 가. 다른 회원의 ID를 부정하게 사용하는 행위
\t \r\n      \r\n 나. 서비스에서 얻은 정보를 회사의 사전승낙 없이 회원의 이용 이외의 목적으로 복제하거나 이를 출판 및 방송 등에 사용하거나 제3자에게 제공하는 행위
\t \r\n      \r\n 다. 회사의 저작권, 제3자의 저작권 등 기타 권리를 침해하는 행위
\t \r\n       \r\n 라. 공공질서 및 미풍양속에 위반되는 내용의 정보, 문장, 도형 등을 타인에게 유포하는 행위
\t \t\r\n      \r\n 마. 범죄와 결부된다고 객관적으로 판단되는 행위
\t \t \r\n      \r\n 바. 기타 관계법령에 위배되는 행위
\t \t \r\n\r\n ② 회원은 이 약관에서 규정하는 사항과 서비스 이용안내 또는 주의사항을 준수하여야 합니다.
\t \t \r\n ③ 회원은 내용별로 회사가 서비스 공지사항에 게시하거나 별도로 공지한 이용제한 사항을 준수하여야 합니다.
\t \t \r\n ④ 회원은 회사의 사전 승낙 없이는 서비스를 이용하여 영업 활동을 할 수 없으며, 영업 활동의 결과와 회원이 약관에 위반한 영업 활동을 이용하여 발생한 결과에 대하여 회사는 책임을 지지 않습니다. 회원은 이와 같은 영업활동에 대하여 회사에 대하여 손해배상의무를 집니다.
\t \t \r\n ⑤ 회원은 회사의 명시적인 동의가 없는 한 서비스의 이용권한, 기타 이용계약 상 지위를 타인에게 양도,증여할 수 없으며, 이를 담보로 제공할 수 없습니다.`,\r\n title4:'제4장 서비스 이용',\r\n subtitle14:'제14조 (회원 아이디 (ID)와 비밀번호 관리에 대한 회원의 의무)',\r\n content14:`\r\n ① 아이디(ID)와 비밀번호에 관한 모든 관리책임은 회원에게 있습니다. 회원에게 부여된 아이디(ID)와 비밀번호의 관리소홀, 부정사용에 의하여 발생하는 모든 결과에 대한 책임은 회원에게 있습니다.\r\n `,\r\n subtitle15:'제15조 (게시물의 저작권)',\r\n content15:`\r\n 서비스에 게재된 자료에 대한 권리는 다음 각 호와 같습니다.
\t \t \t \t \t \t \t \t \r\n ① 게시물에 대한 권리와 책임은 게시자에게 있으며 회사는 게시자의 동의 없이는 이를 서비스 내 게재 이외에 영리적 목적으로 사용하지 않습니다. 단, 비영리적인 경우에는 그러하지 아니하며 또한 회사는 서비스내의 게재권을 갖습니다.
\t \r\n ② 회원은 서비스를 이용하여 얻은 정보를 가공, 판매하는 행위 등 서비스에 게재된 자료를 상업적으로 사용할 수 없습니다.\t
\r\n ③ 회원이 작성한 게시물은 사이트서치를 통해 브랜드사이트 및 포털사이트의 검색결과창에 공개될 수 있습니다.\r\n `,\r\n subtitle16:'제16조 (회원의 게시물 관리)',\r\n content16:`\r\n ① '회원'의 게시물이 정보통신망 이용촉진 및 정보보호 등에 관한 법률' 및 '저작권법' 등 관련법에 위반도는 내용을 포함하는 경우, 관리자는 관련법에 정한 절차에 따라 해당 게시물의 게시 중단 및 삭제 등을 요청할 수 있으며, '사이트'는 관련법에 따른 조치를 취해야 합니다.
\t \r\n ② '회원'의 공개 게시물의 내용이 다음의 경우에 해당 될 경우 해당 게세물에 대한 접근 제한 조치를 취할 수 있고, 작성 회원에게 삭제요청을 하거나 소명기회를 부여한 후 삭제할 수 있으며, 해당 이용자의 '회원' 자격을 제한하거나, 정지, 상실시킬 수 있습니다. 단, 긴급한 경우 우선 삭제 후 소명을 요청 할 수 있습니다.
\r\n      \r\n 가. 회사에서 규정한 게시 기간을 초과한 경우
\r\n      \t \r\n 나. 회사의 저작권, 제 3 자의 저작권 등 기타 권리를 침해하는 내용인 경우
\r\n       \r\n 다. 범죄적 행위에 결부된다고 인정되는 내용일 경우
\r\n      \r\n 라. 폭언, 협박, 음란한 언행 등 다른 회원 또는 제3자를 비방하거나 중상모략으로 명예를 손상시키는 내용인 경우\t
\r\n      \r\n 마. 회원이 자신의 홈페이지 및 SNS 등에 음란물을 게재하거나 음란사이트를 링크하는 경우
\r\n      \t \r\n 바. 다른 사람의 '사이트'이용을 방해하거나 그정보를 도용하는 등 전자상거래 질서를 위반되는 내용인 경우
\r\n       \r\n 사. 기타 관계법령, 회사에서 정한 규정에 위반된다고 판단되는 경우`,\r\n subtitle17:'제17조 (서비스의 제공)',\r\n content17:`\r\n ① '회사'는 다음과 같은 서비스를 제공합니다.
\t \t \t \t \t \t \t \t \r\n       \r\n 가. 재화 또는 용역에 대한 정보 제공 및 구매 계약의 체결
\r\n      \t \t \t \t \t \t \t \r\n 나. 구매 계약이 체결된 재화 또는 용역의 배송(시행)
\r\n       \t \t \t \t \t \t \r\n 다. 시행 된 서비스에 대한 결과물 제공
\r\n      \t \t \t \t \t \t \r\n 라. 시행한 서비스에 대한 하자보수
\r\n       \t \t \t \t \t \t \r\n 마. 기타 “회사”가 정하는 업무
\t \t \t \t \t \t \r\n ② '회사'가 재공하기로 이용자와 계약을 체결한 서비스의 내용을 기술적 사양의 변경 등의 사유로 변경 할 경우에 그 사유를 이용자에게 통보가능한 방법을 이용하여 즉시 통보하여야 합니다.
\r\n       \t \r\n 가. 통보가 늦거나 이뤄지지 않아 발생되는 이용자의 손해를 배상합니다. 다만, '회사'의 고의 도는 과실이 없음읗 입증 할 경우 아무런 책임을 부담하지 않습니다.`,\r\n subtitle18:'제18조 (서비스 이용시간)',\r\n content18:`\r\n ① 서비스의 이용은 회사의 업무상 또는 기술상 특별한 지장이 없는 한 연중무휴 1일 24시간을 원칙으로 합니다. 다만 정기 점검 등의 필요로 회사가 정한 날이나 시간은 그러하지 않습니다.\r\n `,\r\n subtitle19:'제19조 (서비스 이용 책임)',\r\n content19:`\r\n 회원은 회사에서 권한 있는 사원이 서명한 명시적인 서면에 구체적으로 허용한 경우를 제외하고는 서비스를 이용하여 불법 상품을 판매하는 영업활동을 할 수 없으며 특히 해킹, 돈벌기 광고,음란사이트를 통한 상업행위, 상용S/W 불법배포 등을 할 수 없습니다. 이를 어기고 발생한 영업활동의 결과 및 손실, 관계기관에 의한 구속 등 법적 조치등에 관해서는 회사가 책임을 지지 않습니다.`,\r\n subtitle20:'제20조 (서비스 제공의 중지)',\r\n content20:`\r\n ① 회사는 다음 각 호에 해당하는 경우 서비스 제공을 중지할 수 있습니다.
\t \t \t \t \r\n       \r\n 가. 서비스용 설비의 보수 등 공사로 인한 부득이한 경우
\t \t \r\n       \r\n 나. 전기통신사업법에 규정된 기간통신사업자가 전기통신 서비스를 중지했을 경우
\t \t \r\n       \r\n 다. 기타 불가항력적 사유가 있는 경우
\t \t \r\n ② 회사는 국가비상사태, 정전, 서비스 설비의 장애 또는 서비스 이용의 폭주 등으로 정상적인 서비스 이용에 지장이 있는 때에는 서비스의 전부 또는 일부를 제한하거나 정지할 있습니다.\r\n `,\r\n subtitle21:'제21조 (링크)',\r\n content21:`회사 혹은 서비스를 이용하는 제3자는 하이퍼링크(웹사이트 및 텍스트, 이미지 및 영상등)를 제공할 수 있습니다. 회사는 그러한 사이트 또는 자료에 대한 통제권을 가지지 못하므로 회원이 해당 하이퍼링크를 이용함에 따라 발생할 수 있는 상황에 대하여 회사의 고의, 과실이 없는 한 어떠한 책임도 갖지 않습니다.
\t \r\n 또한 회원이 하이퍼링크에서 제공하는 재화(콘텐츠, 상품 또는 서비스 등)를 이용함에 따라 야기되거나 야기되었다고 주장하는 어떠한 손해나 손실에 대해서도 회사는 회사의 고의, 과실이 없는 한 직접적 또는 간접적인 책임을 갖지 않습니다.`,\r\n title5:'제5장 계약해지 및 이용제한',\r\n subtitle22:'제22조 (계약해지 및 이용제한)',\r\n content22:`\r\n ① 회원이 회원계약을 해지하고자 하는 때에는 회원 본인이 온라인을 통해 회사에 해지 신청을 하여야 합니다.
\t \r\n ② 회사는 회원이 다음 각 호의 1에 해당하는 행위를 하였을 경우 사전통지 없이 회원계약을 해지하거나 또는 기간을 정하여 서비스 이용을 중지할 수 있습니다.
\t \r\n      \r\n 가. 타인의 서비스 ID 및 비밀번호를 도용한 경우
\t \r\n      \r\n 나. 서비스 운영을 고의로 방해한 경우
\t\r\n       \t \r\n 다. 가입한 이름이 실명이 아닌 경우
\t\r\n       \t \r\n 라. 같은 사용자가 다른 ID로 이중등록을 한 경우
\r\n       \t \t \r\n 마. 공공질서 및 미풍양속에 저해되는 내용을 고의로 유포시킨 경우
\r\n       \t \t \r\n 바. 회원이 국익 또는 사회적 공익을 저해할 목적으로 서비스이용을 계획 또는 실행하는 경우
\r\n       \t \r\n 사. 타인의 명예를 손상시키거나 불이익을 주는 행위를 한 경우
\t\r\n       \t \r\n 아. 서비스의 안정적 운영을 방해할 목적으로 다량의 정보를 전송하거나 광고성 정보를 전송하는 경우
\t\r\n       \t \r\n 자. 정보통신설비의 오작동이나 정보 등의 파괴를 유발시키는 컴퓨터 바이러스 프로그램 등을 유포하는 경우
\r\n       \t \t \r\n 차. 회사, 다른 회원 또는 제3자의 지적재산권을 침해하는 경우
\r\n       \t \t \r\n 카. 정보통신윤리위원회 등 외부기관의 시정요구가 있거나 불법선거운동과 관련하여 선거관리위원회의 유권해석을 받은 경우
\t \r\n       \t \r\n 타. 타인의 개인정보, 이용자ID 및 비빌 번호를 부정하게 사용하는 경우
\t\r\n       \t \r\n 파. 회사의 서비스 정보를 이용하여 얻은 정보를 회사의 사전 승낙 없이 복제 또는 유통시키거나 상업적으로 이용하는 경우
\t\r\n      \t \r\n 하. 회원이 자신의 홈페이지와 게시판에 음란물을 게재하거나 음란사이트 링크하는 경우
\t \t \r\n      \r\n 거. 본 약관을 포함하여 기타 회사가 정한 이용조건에 위반한 경우
\t \r\n       \r\n 너. 기타 관련 법령이나 회사가 정한 규정에 위배되는 경우
\t \r\n      \t \r\n 더. 범죄적 행위에 관련되는 경우`,\r\n title6:'제6장 손해배상 등',\r\n subtitle23:'제23조 (손해배상)',\r\n content23:`회사는 서비스 이용요금이 무료인 동안의 서비스 이용과 관련하여 회사의 고의ㆍ과실에 의한 것이 아닌 한 회원에게 발생한 어떠한 손해에 대하여도 책임을 지지 않습니다.\t
\r\n 회원이 서비스를 이용함에 있어 행한 불법행위로 인하여 회사가 당해 회원 이외의 제3자로부터 손해배상청구, 소송을 비롯한 각종의 이의제기를 받는 경우 당해 회원은 회사의 면책을 위하여 노력하여야 하며, 만일 회사가 면책되지 못한 경우는 당해 회원은 그로 인하여 회사에 발생한 모든 손해를 배상하여야 합니다.`,\r\n subtitle24:'제24조 (면책조항)',\r\n content24:`\r\n ① 회사는 천재지변 또는 이에 준하는 불가항력으로 인하여 서비스를 제공할 수 없는 경우에는 서비스 제공에 관한 책임이 면제됩니다.
\t \r\n ② 회사는 회원의 귀책사유로 인한 서비스 이용의 장애에 대하여 책임을 지지 않습니다.
\t \r\n ③ 회사는 회원이 서비스를 이용하여 기대하는 수익을 상실한 것에 대하여 책임을 지지않으며 그밖에 서비스를 통하여 얻은 자료로 인한 손해에 관하여 책임을 지지 않습니다.\t
\r\n ④ 회사는 회원이 서비스에 게재한 정보, 자료, 사실의 신뢰도, 정확성 등 내용에 관하여는 책임을 지지 않습니다.`,\r\n subtitle25:'제25조 (관할법원)',\r\n content25:'요금 등 서비스 이용으로 발생한 분쟁에 대해 소송이 제기될 경우 회사의 본사 소재지를 관할하는 법원을 전속 관할법원으로 합니다.',\r\n title7:`[부칙]`,\r\n content27:`(시행일) 이 약관은 2022년 07월 30일부터 시행합니다.`\r\n }\r\n];\r\n\r\n","export const infoData = [\r\n {\r\n info:'개인정보 처리방침',\r\n data:'2022-07-30',\r\n txt:`자이가이스트(이하 '회사'라 한다)은 개인정보보호법 제30조에 따라 정보주체의 개인정보를 보호하고, 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 다음과 같이 개인정보처리방침을 수립ㆍ공개합니다.`,\r\n title:'제1조 개인정보의 처리목적',\r\n subtitle:'회사는 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며, 이용 목적이 변경되는 경우에는 개인정보보호법 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다.',\r\n th1:'수집방법',\r\n th2:'수집항목',\r\n th3:'수집 및 이용목적',\r\n th4:'보유 및 이용기간',\r\n td1_1:'회원가입',\r\n td1_2:`필수정보 : 로그인ID,비밀번호,성명,성별,생년월일,휴대전화번호
\r\n 선택정보 : 이메일, 주소, 가입경로, 관심분야`,\r\n td1_3:'서비스 이용 및 상담, 고객문의 회신, 분쟁 조정을 위한 기록 보존, 민원처리 등',\r\n\r\n td2_1:'간편가입',\r\n td2_2:'이메일 주소, 이름, 휴대전화 번호',\r\n td3_1:'휴대전화 인증',\r\n td3_2:'휴대전화 번호',\r\n td3_3:'서비스 제공 시 절차 안내 및 마케팅 정보 수신',\r\n \r\n td4_1:'고객상담(간편)',\r\n td4_2:`필수정보 : 이름, 연락처, 비밀번호, 상담내용
\r\n 선택정보 : 첨부파일`,\r\n\r\n td5_1:'고객상담(견적)',\r\n td5_2:`필수정보 : 성명, 휴대전화번호, 비밀번호, 상담내용
\r\n 선택 정보: 건축예상평수, 건축예정시기, 건축예정금액, 토지소유여부`,\r\n td5_3:`회원관리, 본인여부확인, 서비스 상담, 견적서 제공, 서비스 개선을 위한 Data 분석, 문의자 확인, 문의에 대한 회신 등의 처리`,\r\n td5_4:'회원탈퇴 및 목적달성 후 지체없이 삭제합니다',\r\n\r\n td6_1:'전화 상담신청',\r\n td6_2:'이름, 연락처, 주소',\r\n \r\n td7_1:'방문예약',\r\n td7_2:`필수정보 : 성명, 연락처, 신청날짜, 신청시간
\r\n 선택정보 : 동행자 수`,\r\n\r\n td8_1:`사전점검(입주 전)
\r\n A/S(입주 후)`,\r\n td8_2:`필수정보 : 성명, 연락처, 단지
\r\n 선택정보 : 동/호수, 첨부파일`,\r\n td8_3:'하자 문의 내용 처리',\r\n\r\n td9_1:'계약서 열람, 조회',\r\n td9_2:'이름, 연락처, 주소, 계약 시 견적서 및 계약자 정보',\r\n td9_3:'계약서 열람 처리',\r\n\r\n td10_1:'자동 수집 항목',\r\n td10_2:'서비스 안내, 서비스 개선을 위한 Data분석 등',\r\n\r\n title2:'제2조 개인정보의 처리 및 보유기간',\r\n content2:`\r\n 1. 회사는 법령에 따른 개인정보의 보유ㆍ이용기간 또는 정보주체로부터 개인정보를 수집 시에 동의 받은 개인정보 보유ㆍ이용 기간 내에서 개인정보를 처리ㆍ보유합니다.
\t \r\n 2. 회원가입 및 서비스 이용 과정에서 이용자가 개인정보 수집에 대해 동의를 하고 직접 정보를 입력하는 경우, 해당 개인정보를 수집합니다.
\t \t \r\n 3. 고객센터를 통한 상담 과정에서 웹 페이지, 메일, 전화 등을 통해 이용자의 개인정보가 수집될 수 있습니다.
\t \t \r\n 4. 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다.
\r\n         \t \t \r\n 1) 회원정보 : 회원 탈퇴 후 1개월 일까지
\t \r\n         \t \r\n 2) 서비스 이용에 따른 채권∙채무관계 정산시 까지
\t \t \r\n 5. 1년 간 회원의 서비스 이용 기록이 없는 경우, 『정보통신망 이용촉진 및 정보보호등에 관한 법률』 제 39 조 6에 근거하여 회원에게 사전 통지하고, 별도 보관 5년 후 삭제합니다.
\t \t \r\n 6. 회원에서 탈퇴한 후 회원 재가입, 임의해지 등을 반복적으로 행하여 회사가 제공하는 이벤트 혜택 등으로 경제상의 이익을 취하거나 이 과정에서 명의를 무단으로 사용하는 편법과 불법행위를 하는 회원을 차단 하고자 회원 탈퇴 후 1개월 동안 보관합니다.
\t \t \r\n 7. 단, 전자상거래 등에서의 소비자보호 법률 등 관련 법령의 규정에 따라 거래 관계 확인을 위해 개인정보를 일정기간 보유 할 수 있습니다.`,\r\n th5:'법령',\r\n th6:'항목',\r\n th7:'기간',\r\n td5_1_1:'전자상거래 등에서의 소비자보호에 관한 법률',\r\n td5_1_2:`계약 또는 청약철회 등에 관한 기록
\r\n 대금결제 및 재화 등의 공급에 관한 기록
\r\n 소비자의 불만 또는 분쟁 처리에 관한 기록`,\r\n td5_1_3:`5년
\r\n 5년
\r\n 3년`,\r\n\r\n td6_1_1:'위치정보의 보호 및 이용 등에 관한 법률',\r\n td6_1_2:'개인위치정보에 관한 기록',\r\n td6_1_3:'6개월',\r\n\r\n td7_1_1:'전자금융거래법',\r\n td7_1_2:'전자금융 거래에 관한 기록',\r\n td7_1_3:'5년',\r\n\r\n td8_1_1:'통신비밀보호법',\r\n td8_1_2:'서비스 이용 관련 개인정보(로그기록)',\r\n td8_1_3:'3년',\r\n \r\n title3:'제3조 개인정보의 제3자 제공',\r\n content3:`회사는 이용자의 개인정보를 원칙적으로 외부에 제공하지 않습니다. 단, 아래의 경우에는 예외로 합니다.
\r\n         \r\n - 이용자들이 사전에 동의한 경우
\r\n         \t \t \t \t \t \t \t \r\n - 법령의 규정에 의거하거나, 수사 목적으로 법령에 정해진 절차와 방법에 따라 수사기관의 요구가 있는 경우`,\r\n\r\n title4:'제4조 개인정보의 처리 위탁',\r\n content4A:'\t1. 회사는 원활한 개인정보 업무처리를 위하여 다음과 같이 개인정보 처리업무를 위탁하고 있습니다.',\r\n td9_1_1:'위탁받는자(수탁자)',\r\n td9_1_2:'위탁 업무 내용',\r\n td9_1_3:'개인정보의 보유 및 이용기간',\r\n td10_1_1:'디엔아이(주)',\r\n td10_1_2:'정보 전산 처리 및 유지관리, 웹사이트 운영',\r\n td10_1_3:'회원탈퇴시 혹은 위탁계약 종료 시 까지',\r\n td11_1_1:'LG CNS, 톡드림',\r\n td11_1_2:'SMS/LMS/MMS/카카오비즈톡 등 메시지 전송',\r\n td12_1_1:'나이스평가정보(주)',\r\n td12_1_2:'본인인증',\r\n \r\n\r\n content4B:'2. 회사는 위탁계약 체결 시 개인정보보호법 제26조에 따라 위탁업무 수행목적 외 개인정보 처리금지, 기술적ㆍ관리적 보호조치, 재위탁제한, 수탁자에 대한 관리ㆍ감독, 손해배상 등 책임에 관한 사항을 계약서 등 문서에 명시하고, 수탁자가 개인정보를 안전하게 처리하는지를 감독하고 있습니다.',\r\n content4C:'\t3. 위탁업무의 내용이나 수탁자가 변경될 경우에는 지체없이 본 개인정보처리방침을 통하여 공개하도록 하겠습니다.',\r\n title5:`제5조 정보주체의 권리·의무 및 행사방법`,\r\n content5:`\r\n 1. 정보주체는 회사에 대해 언제든지 다음 각 호의 개인정보보호 관련 권리를 행사할 수 있습니다.
\r\n         \t \r\n 1) 개인정보 열람 요구
\r\n         \t \t \t \t \t \t \t \t \t \t \r\n 2) 오류 등이 있을 경우 정정 요구
\r\n         \t \t \t \t \t \t \t \t \t \t \r\n 3) 삭제 요구
\r\n         \t \t \t \t \t \t \t \t \t \t \r\n 4) 처리정지 요구
\t \t \t \t \t \t \t \t \t \t \r\n 2. 제1항에 따른 권리 행사는 회사에 대해 서면, 전화, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며, 회사는 이에 대해 지체없이 조치하겠습니다.
\t \r\n 3. 정보주체가 개인정보의 오류 등에 대한 정정 또는 삭제를 요구한 경우에는 회사는 정정 또는 삭제를 완료할 때까지 당해 개인정보를 이용하거나 제공하지 않습니다.
\t \r\n 4. 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보 처리 방법에 관한 고시 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다.
\t \r\n 5. 정보주체는 개인정보보호법 등 관계 법령을 위반하여 회사가 처리하고 있는 정보주체 본인이나 타인의 개인정보 및 사생활을 침해하여서는 안됩니다.`,\r\n title6:'제6조 자동으로 수집되는 개인정보 및 거부에 관한 사항',\r\n subtitle6:'회사는 이용자의 정보를 수시로 저장하고 찾아내는 쿠키(cookie) 등을 운용합니다. 쿠키는 웹사이트가 이용자의 컴퓨터 브라우저에 보내는 아주 작은 텍스트 파일로 이용자의 컴퓨터 하드디스크에 저장됩니다.',\r\n content6:`\r\n 1. 쿠키의 사용 목적
\t \r\n\t \r\n - 회원과 비회원의 접속 빈도나 방문 시간 등의 분석, 이용 형태 및 관심분야 파악, 자취 추적, 각종 이벤트 참여 정도, 방문 횟수 파악 등을 통한 타겟 마케팅 등 개인별 맞춤 서비스를 제공하기 위해 쿠키를 사용 합니다.

\t \r\n \t\r\n 2. 쿠키의 설치, 운영과 거부
\t\r\n - 이용자는 쿠키 설치에 대한 선택권을 가지고 있으며, 언제든지 이러한 쿠키의 저장을 거부하거나 삭제할 수 있습니다.
\t
\r\n - 쿠키의 설정은 웹브라우저별 옵션 선택을 통해
①모든 쿠키를 허용, ②쿠키가 저장될 때 마다 확인, ③모든 쿠키의 저장을 거부 할 수 있습니다.

\t \r\n - 이러한 쿠키의 설정 방법은 웹브라우저에 따라 차이가 있으므로, 자세한 사항은 각 브라우저별 도움말을 참고해 주시기 바랍니다.
\t \t \r\n - Chrome : 설정 메뉴 선택 > 고급 설정 표시 선택 > 개인정보-콘텐츠 설정 선택 > 쿠키 수준 설정
\t\r\n - firefox : 옵션 메뉴 선택 > 개인정보 선택 > 방문기록-사용자 정의 설정 > 쿠키 수준 설정
\t \t \r\n \t- safari : 환경설정 메뉴 선택 > 개인정보 탭 선택 > 쿠키 및 웹 사이트 데이터 수준 설정
\t \t \r\n \t- 단, 쿠키의 저장을 거부하였을 경우에는 로그인이 필요한 서비스 등 일부 서비스 이용에 어려움이 있을 수 있습니다.

\t\t \t \r\n \t3. 인터넷 서비스 이용 과정에서 아래 개인정보 항목이 자동으로 생성되어 수집될 수 있습니다.
\t \r\n \t- IP주소, 쿠키, MAC주소, 서비스 이용기록, 방문기록, 불량 이용기록 등`,\r\n title7:'제7조 개인정보의 파기',\r\n subtitle7:`회사는 원칙적으로 개인정보 수집 및 이용목적이 달성된 후에는 해당 정보를 지체없이 파기합니다.
다만, 다른 법률에 따라 보존하여야 하는 경우에는 그러하지 않습니다.\t \r\n 회사의 개인정보 파기 절차 및 방법은 다음과 같습니다.`,\r\n content7:`\r\n         \t \r\n - 파기절차: 회원가입 등을 위해 입력한 정보는 목적이 달성된 후 재생할 수 없는 방법에 의하여 완전히 삭제되며, 추후 열람이나 이용이 불가능한 상태로 파기됩니다.\t
\r\n         \t \r\n \t \t- 파기방법: 전자적 파일형태로 저장된 개인정보는 기록을 재생할 수 없는 기술적 방법을 사용하여 삭제합니다.`,\r\n title8:'제8조 개인정보의 안전성 확보조치',\r\n subtitle8:`회사는 고객의 개인정보를 처리함에 있어 개인정보가 분실, 도난, 누출, 변조 또는 훼손되지 않도록 개인정보보호법 제29조에 따라 다음과 같이 안전성 확보에 필요한 기술적, 관리적, 물리적\t \r\n 조치를 하고 있습니다. 단, 고객 개인의 부주의나 인터넷 상의 문제로 개인정보가 유출되어 발생한 문제에 대해서는 회사는 일체의 책임을 지지 않습니다.`,\r\n content8:`\r\n         \r\n 1. 개인정보의 안전한 관리를 위해 개인정보보호위원회의 개인정보보호법과 동법 시행령 및 표준 개인정보보호지침을 준수하여 시행하고 있습니다.
\r\n         \t \r\n 2. 개인정보취급담당자의 최소화 및 교육: 개인정보를 취급하는 담당자를 지정하고 최소화하며 담당자에 대한 수시 교육을 통해 개인정보를 안전하게 관리하고 있습니다.\t
\r\n          \r\n 3. 개인정보에 대한 접근: 개인정보를 처리하는 데이터 베이스 시스템에 대한 접근권한의 부여, 변경, 말소를 통하여 개인정보에 대한 접근통제에 필요한 조치를 하고 있으며 침입차단시스템을
\r\n         \r\n 이용하여 외부로부터의 무단 접근을 통제하고 있습니다.
\r\n         \t \r\n 4. 접속기록의 보관 및 위∙변조: 개인정보처리시스템에 접속한 기록(웹 로그, 요약정보 등)을 최소 1년 이상 보관, 관리하고 있으며, 접속 기록이 위∙변조 및 도난, 분실되지 않도록 보안기능을
\r\n         사용하고 있습니다.
\r\n         \t \r\n 5. 개인정보의 암호화: 고객님의 중요 개인정보는 암호화 되어 저장 및 관리되고 있습니다. 또한 중요한 데이터는 저장 및 전송 시 암호화하여 사용하는 등의 별도 보안기능을 사용하고 있습니다.
\r\n         \t \r\n 6. 해킹 등에 대비한 기술적 대책: 회사는 해킹이나 컴퓨터 바이러스 등에 의한 개인정보 유출 및 훼손을 막기 위하여 보안프로그램을 설치하고 주기적인 갱신 • 점검을 하며 외부로부터 접근이 통제된
\r\n         구역에 시스템을 설치하고 기술적/물리적으로 감시 및 차단하고 있습니다. 또한 네트워크 트래픽의 통제(Monitoring)는 물론 불법적으로 정보를 변경하는 등의 시도를 탐지하고 있습니다.
\r\n         \t \r\n 7. 개인정보의 안전한 보관을 위한 물리적 조치: 개인정보를 보관하고 있는 개인정보시스템의 물리적 보관 장소를 별도로 두고 이에 대해 출입통제 절차를 수립, 운영하고 있습니다. 또한 개인정보가
\r\n         기록된 문서의 안전한 보관을 위하여 잠금 장치의 설치 등 물리적 조치를 취하고 있습니다.
\r\n         \t \r\n 8. 개인정보보호 전담조직의 운영: 사내 개인정보보호 전담조직 등을 통해 개인정보보호조치의 이행사항 및 담당자의 준수여부를 확인하여 문제 발견 시 즉시 시정 조치하도록 하고 있습니다.`,\r\n title9:'제9조 개인정보 자동 수집 장치의 설치ㆍ운영 및 거부에 관한 사항',\r\n content9:`        \r\n 1. 회사는 이용자에게 개별적인 맞춤서비스를 제공하기 위해 이용정보를 저장하고 수시로 불러오는 ‘쿠키(cookie)’를 사용합니다.
\t \r\n         \r\n \t 2. 쿠키는 웹사이트를 운영하는데 이용되는 서버(http)가 이용자의 컴퓨터 브라우저에게 보내는 소량의 정보이며 이용자들의 PC 컴퓨터내의 하드디스크에 저장되기도 합니다.
\r\n                  \r\n \t \t - 쿠키의 사용목적: 이용자가 방문한 각 서비스와 웹 사이트들에 대한 방문 및 이용형태, 인기 검색어, 보안접속 여부, 등을 파악하여 이용자에게 최적화된 정보 제공을 위해 사용됩니다.
\t \r\n                  \r\n \t \t - 쿠키의 설치∙운영 및 거부: 웹 브라우저 상단의 도구>인터넷 옵션>개인정보 메뉴의 옵션 설정을 통해 쿠키 저장을 거부 할 수 있습니다.
\t \r\n                  \r\n \t \t - 쿠키 저장을 거부할 경우 맞춤형 서비스 이용에 어려움이 발생할 수 있습니다.`,\r\n title10:'제10조 개인정보보호 책임자',\r\n content10A:'1. 회사는 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 정보주체의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다',\r\n th8:'개인정보 책임자',\r\n th9:'개인정보 관리자',\r\n th10:'개인정보 민원 처리 담당부서',\r\n td13_1_1:'성명 : 남경호',\r\n td13_1_2:'성명 : 이준영 책임',\r\n td13_1_3:'부서명 : 고객센터',\r\n td14_1_1:'대표',\r\n td14_1_2:'소속 : PM팀',\r\n td14_1_3:'웹사이트 내 고객 문의',\r\n content10B:'\t2. 정보주체께서는 회사의 서비스(또는 사업)을 이용하시면서 발생한 모든 개인정보 보호 관련 문의, 불만처리, 피해구제 등에 관한 사항을 개인정보 보호책임자 및 담당부서로 문의하실 수 있습니다. 회사는 정보주체의 문의에 대해 지체 없이 답변 및 처리해드릴 것입니다.',\r\n title11:'제11조 개인정보 열람청구',\r\n subtitle11:'정보주체는 개인정보 보호법 제35조에 따른 개인정보의 열람 청구를 아래의 부서에 할 수 있습니다. 회사는 정보주체의 개인정보 열람청구가 신속하게 처리되도록 노력하겠습니다.',\r\n content11:`\r\n 1. 개인정보 열람청구 접수∙처리 부서
\t \t \t \t \t \t \t \t \t \r\n         \r\n 부서명: 자이가이스트 고객센터
\r\n         \t \t \t \t \t \t \t \t \t \t \r\n 연락처: 02-2154-4311 / xigeist.official@gmail.com
\t \t \t \t \t \t \t \t \t \r\n 2. 웹 사이트 고객 문의
\r\n         \t \t \t \t \t \t \t \t \t \t \t \r\n URL: https://www.xigeist.com >고객지원>1:1문의\r\n `,\r\n title12:'제12조 권익침해 구제방법',\r\n content12:`\r\n 정보주체는 아래의 기관에 대해 개인정보 침해에 대한 피해구제, 상담 등을 문의하실 수 있습니다.
\t \r\n 아래의 기관은 회사와는 별개의 기관으로서, 회사의 자체적인 개인정보 불만처리, 피해구제 결과에 만족하지 못하시거나 보다 자세한 도움이 필요하시면 문의하여 주시기 바랍니다.
\r\n 1. 개인정보 침해신고센터(한국인터넷진흥원 운영)
\t \r\n         \t \t \t \t \t \t \t \t \r\n - 소관업무: 개인정보 침해사실 신고, 상담 신청
\t \r\n         \t \t \t \t \t \t \t \r\n - 홈페이지: privacy.kisa.or.kr
\t\r\n          \t \t \t \t \t \t \t \t \t \r\n - 전화: (국번없이) 118
\t\r\n          \t \t \t \t \t \t \t \t \t \r\n - 주소: (58324) 전남 나주시 진흥길 9(빛가람동 301-2) 3층 개인정보침해신고센터
\t \r\n 2. 개인정보 분쟁조정위원회
\r\n        \t \t \t \t \t \t \t \t \t \r\n - 소관업무: 개인정보 분쟁조정신청, 집단분쟁조정 (민사적 해결)
\t\r\n        \t \r\n - 홈페이지: www.kopico.go.kr
\t\r\n        \t \t \t \t \t \t \t \t \t \t \t \t \r\n - 전화: (국번없이) 1833-6972
\r\n        \t\t \t \t \t \t \t \t \t \t \t \t \t \r\n - 주소: (03171)서울특별시 종로구 세종대로 209 정부서울청사 4층
\t \t \r\n 3. 대검찰청 사이버범죄수사단: 02-3480-3573 (www.spo.go.kr)
\t \t \r\n 4. 사이버범죄 신고시스템: 182 (http://ecrm.cyber.go.kr)
\t \r\n `,\r\n\r\n title13:'제13조 개인정보처리방침 변경',\r\n subtitle13:'이 개인정보처리방침은 2022.07.30부터 적용됩니다.'\r\n\r\n }\r\n]","\r\n\r\n\r\n\r\n","import { render } from \"./scrollToTop.vue?vue&type=template&id=d3310152\"\nimport script from \"./scrollToTop.vue?vue&type=script&lang=js\"\nexport * from \"./scrollToTop.vue?vue&type=script&lang=js\"\n\nimport \"./scrollToTop.vue?vue&type=style&index=0&id=d3310152&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./joinStep1.vue?vue&type=template&id=4af61ab8&scoped=true\"\nimport script from \"./joinStep1.vue?vue&type=script&lang=js\"\nexport * from \"./joinStep1.vue?vue&type=script&lang=js\"\n\nimport \"./joinStep1.vue?vue&type=style&index=0&id=4af61ab8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4af61ab8\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./joinStep2.vue?vue&type=template&id=27b6c9b4&scoped=true\"\nimport script from \"./joinStep2.vue?vue&type=script&lang=js\"\nexport * from \"./joinStep2.vue?vue&type=script&lang=js\"\n\nimport \"./joinStep2.vue?vue&type=style&index=0&id=27b6c9b4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-27b6c9b4\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./joinStep2Simple.vue?vue&type=template&id=4db5f655&scoped=true\"\nimport script from \"./joinStep2Simple.vue?vue&type=script&lang=js\"\nexport * from \"./joinStep2Simple.vue?vue&type=script&lang=js\"\n\nimport \"./joinStep2Simple.vue?vue&type=style&index=0&id=4db5f655&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4db5f655\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./joinStep3.vue?vue&type=template&id=2cde1ae4&scoped=true\"\nimport script from \"./joinStep3.vue?vue&type=script&lang=js\"\nexport * from \"./joinStep3.vue?vue&type=script&lang=js\"\n\nimport \"./joinStep3.vue?vue&type=style&index=0&id=2cde1ae4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2cde1ae4\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./findID.vue?vue&type=template&id=6442ae6c&scoped=true\"\nimport script from \"./findID.vue?vue&type=script&lang=js\"\nexport * from \"./findID.vue?vue&type=script&lang=js\"\n\nimport \"./findID.vue?vue&type=style&index=0&id=6442ae6c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6442ae6c\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./findPW.vue?vue&type=template&id=9ad5842a&scoped=true\"\nimport script from \"./findPW.vue?vue&type=script&lang=js\"\nexport * from \"./findPW.vue?vue&type=script&lang=js\"\n\nimport \"./findPW.vue?vue&type=style&index=0&id=9ad5842a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9ad5842a\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./findIDResult.vue?vue&type=template&id=1c8cc6fe&scoped=true\"\nimport script from \"./findIDResult.vue?vue&type=script&lang=js\"\nexport * from \"./findIDResult.vue?vue&type=script&lang=js\"\n\nimport \"./findIDResult.vue?vue&type=style&index=0&id=1c8cc6fe&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1c8cc6fe\"]])\n\nexport default __exports__","\r\n","import { render } from \"./LoginNCallback.vue?vue&type=template&id=cf4e3ff4\"\nimport script from \"./LoginNCallback.vue?vue&type=script&lang=js\"\nexport * from \"./LoginNCallback.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./childPage.vue?vue&type=template&id=dd4890d8\"\nimport script from \"./childPage.vue?vue&type=script&lang=js\"\nexport * from \"./childPage.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./joinStepSub.vue?vue&type=template&id=784fb4e6\"\nimport script from \"./joinStepSub.vue?vue&type=script&lang=js\"\nexport * from \"./joinStepSub.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./findEmail.vue?vue&type=template&id=2047d454&scoped=true\"\nimport script from \"./findEmail.vue?vue&type=script&lang=js\"\nexport * from \"./findEmail.vue?vue&type=script&lang=js\"\n\nimport \"./findEmail.vue?vue&type=style&index=0&id=2047d454&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2047d454\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./findEmailResult.vue?vue&type=template&id=d00a4396&scoped=true\"\nimport script from \"./findEmailResult.vue?vue&type=script&lang=js\"\nexport * from \"./findEmailResult.vue?vue&type=script&lang=js\"\n\nimport \"./findEmailResult.vue?vue&type=style&index=0&id=d00a4396&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d00a4396\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./changePW2.vue?vue&type=template&id=176a4eda&scoped=true\"\nimport script from \"./changePW2.vue?vue&type=script&lang=js\"\nexport * from \"./changePW2.vue?vue&type=script&lang=js\"\n\nimport \"./changePW2.vue?vue&type=style&index=0&id=176a4eda&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-176a4eda\"]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./joinChild.vue?vue&type=template&id=7c613d64\"\nimport script from \"./joinChild.vue?vue&type=script&lang=js\"\nexport * from \"./joinChild.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./findEmailSub.vue?vue&type=template&id=061c297c\"\nimport script from \"./findEmailSub.vue?vue&type=script&lang=js\"\nexport * from \"./findEmailSub.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./findChild.vue?vue&type=template&id=d39131f0\"\nimport script from \"./findChild.vue?vue&type=script&lang=js\"\nexport * from \"./findChild.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./changePW1.vue?vue&type=template&id=38eb97d6&scoped=true\"\nimport script from \"./changePW1.vue?vue&type=script&lang=js\"\nexport * from \"./changePW1.vue?vue&type=script&lang=js\"\n\nimport \"./changePW1.vue?vue&type=style&index=0&id=38eb97d6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-38eb97d6\"]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./changePWSub.vue?vue&type=template&id=34b866b8\"\nimport script from \"./changePWSub.vue?vue&type=script&lang=js\"\nexport * from \"./changePWSub.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./changeChild.vue?vue&type=template&id=28572cec\"\nimport script from \"./changeChild.vue?vue&type=script&lang=js\"\nexport * from \"./changeChild.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","import { render } from \"./myPage.vue?vue&type=template&id=0125f89a\"\nimport script from \"./myPage.vue?vue&type=script&lang=js\"\nexport * from \"./myPage.vue?vue&type=script&lang=js\"\n\nimport \"./myPage.vue?vue&type=style&index=0&id=0125f89a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import { render } from \"./pagination.vue?vue&type=template&id=02077f7a&scoped=true\"\nimport script from \"./pagination.vue?vue&type=script&lang=js\"\nexport * from \"./pagination.vue?vue&type=script&lang=js\"\n\nimport \"./pagination.vue?vue&type=style&index=0&id=02077f7a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-02077f7a\"]])\n\nexport default __exports__","import { render } from \"./manageMenber.vue?vue&type=template&id=aa221116&scoped=true\"\nimport script from \"./manageMenber.vue?vue&type=script&lang=js\"\nexport * from \"./manageMenber.vue?vue&type=script&lang=js\"\n\nimport \"./manageMenber.vue?vue&type=style&index=0&id=aa221116&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-aa221116\"]])\n\nexport default __exports__","import { createWebHistory, createRouter, onBeforeRouteLeave } from \"vue-router\";\r\nimport ModuleMake from \"../views/ModuleMake.vue\";\r\nimport Edit from \"../components/Edit.vue\";\r\nimport myHome from \"../components/myHome.vue\";\r\nimport LogIn from \"../components/Login/LogIn.vue\"\r\nimport joinStep1 from \"../components/Login/joinStep1.vue\"\r\nimport joinStep2 from \"../components/Login/joinStep2.vue\"\r\nimport joinStep2Simple from \"../components/Login/joinStep2Simple.vue\"\r\nimport joinStep3 from \"../components/Login/joinStep3.vue\"\r\nimport findID from \"../components/Login/findID.vue\"\r\nimport findPW from \"../components/Login/findPW.vue\"\r\nimport findIDResult from \"../components/Login/findIDResult.vue\"\r\nimport LoginNCallback from \"@/components/Login/LoginNCallback.vue\";\r\nimport childPage from \"@/components/Login/childPage.vue\";\r\nimport JoinStepSub from \"@/components/Login/joinStepSub.vue\";\r\nimport findEmail from \"../components/Login/findEmail.vue\"\r\nimport findEmailResult from \"@/components/Login/findEmailResult.vue\";\r\nimport changePW2 from \"@/components/Login/changePW2.vue\";\r\nimport joinChild from \"../components/Login/joinChild.vue\"\r\nimport findEmailSub from \"../components/Login/findEmailSub.vue\"\r\nimport findChild from \"../components/Login/findChild.vue\"\r\nimport changePW1 from \"@/components/Login/changePW1.vue\";\r\nimport changePWSub from \"@/components/Login/changePWSub.vue\";\r\nimport changeChild from \"@/components/Login/changeChild.vue\";\r\nimport Cookies from 'js-cookie';\r\nimport myPage from \"../components/myPage.vue\";\r\nimport manageMember from '../components/manageMenber.vue';\r\nimport AdminLogin from \"@/components/Login/AdminLogin.vue\";\r\nimport axios from \"axios\";\r\n\r\n\r\n\r\nfunction getToken() {\r\n const cookie = Cookies.get('token');\r\n let data = {\r\n token: cookie == undefined ? '' : cookie\r\n }\r\n const res = axios.post(\"/server/token_check\", JSON.stringify(data), {\r\n headers: { 'Content-Type': 'application/json' }\r\n });\r\n if (data.token == '') { //토큰 자체가 없으면 걍 로그인 안된거\r\n\r\n }\r\n else if (res.data._data[\"length\"] == 0) {\r\n alert(\"다른 계정 로그인으로 인해 로그아웃 됩니다.\");\r\n Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n this.$router.push('/member/login');\r\n }\r\n else if (res.status == 200) {\r\n this.userIdx = res.data._data[0][\"idx\"];\r\n this.getUserInfo();\r\n }\r\n}\r\nfunction getUserInfo() {\r\n console.log(\"getUserInfo\");\r\n const res = axios.post(\"/server/get_mypage\",{\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-origin' : '*',\r\n 'Access-Control-Allow-Methods' : 'GET, POST, OPTIONS, PUT, PATCH, DELETE',\r\n 'Access-Control-Allow-Credentials' : 'true'\r\n }\r\n },\r\n `{ \"user_idx\":\"${this.userIdx}\" }`)\r\n //(res => {\r\n this.userName = res.data._data[0][\"NAME\"];\r\n this.userEmail = res.data._data[0][\"USER_EMAIL\"];\r\n this.userPhone = res.data._data[0][\"PHONE\"];\r\n this.userPhone1 = this.userPhone.slice(0, 3);\r\n this.userPhone2 = this.userPhone.slice(3, 7);\r\n this.userPhone3 = this.userPhone.slice(7);\r\n this.userDate = res.data._data[0][\"REGDATE\"].split('T')[0];\r\n this.userCode = res.data._data[0][\"CODE\"];\r\n //})\r\n}\r\nconst requireLogin = () => (to, from, next) => {\r\n if (Cookies.get('token') != undefined) {\r\n next();\r\n } else {\r\n //alert('로그인 후 이용해주세요.');\r\n router.push({ path: '/member/login' })\r\n return;\r\n }\r\n};\r\nconst requireManageLogin = () => (to, from, next) => {\r\n if (Cookies.get('manage_token') == Cookies.get('token')) {\r\n next();\r\n } else {\r\n alert('잘못된 접근 경로입니다.');\r\n //router.push({ path: '/member/login' })\r\n return;\r\n }\r\n};\r\nconst loggedIn = () => (to, from, next) => {\r\n if(Cookies.get('token') == undefined) {\r\n next();\r\n } else {\r\n router.push({path: '/myhome'});\r\n }\r\n}\r\nconst routes = [\r\n {\r\n path: \"/myhome\",\r\n name: \"myHome\",\r\n component: myHome,\r\n beforeEnter: requireLogin(),\r\n },\r\n {\r\n path: \"/:typeName\",\r\n name: \"ModuleMake\",\r\n component: ModuleMake,\r\n },\r\n {\r\n path: \"/editTemp\",\r\n name: \"editTemp\",\r\n component: Edit,\r\n },\r\n {\r\n path: \"/\",\r\n name: \"edit\",\r\n component: ModuleMake,\r\n //beforeEnter: requireLogin(),\r\n },\r\n\r\n {\r\n path: \"/member/login\",\r\n name: \"LogIn\",\r\n component: LogIn,\r\n beforeEnter: loggedIn(),\r\n },\r\n //회원가입\r\n {\r\n path: \"/member/joinStep1\",\r\n name: \"joinStep1\",\r\n component: joinStep1,\r\n },\r\n {\r\n path: \"/member/joinStep2\",\r\n name: \"joinStep2\",\r\n component: joinStep2,\r\n },\r\n //joinStep2 양식 간략화 한 버전\r\n {\r\n path: \"/member/joinStep22\",\r\n name: \"joinStep2Simple\",\r\n component: joinStep2Simple,\r\n },\r\n {\r\n path: \"/member/joinStep3\",\r\n name: \"joinStep3\",\r\n component: joinStep3,\r\n },\r\n {\r\n path: \"/member/findID\",\r\n name: \"findID\",\r\n component: findID,\r\n },\r\n {\r\n path: \"/member/findPW\",\r\n name: \"findPW\",\r\n component: findPW,\r\n },\r\n {\r\n path: \"/member/findIDResult\",\r\n name: \"findIDResult\",\r\n component: findIDResult,\r\n },\r\n {\r\n path: \"/callback\",\r\n name: \"LoginNCallback\",\r\n component: LoginNCallback,\r\n },\r\n {\r\n path: \"/member/childPage\",\r\n name: \"childPage\",\r\n component: childPage\r\n },\r\n {\r\n path: \"/member/joinStepSub\",\r\n name: \"joinStepSub\",\r\n component: JoinStepSub\r\n },\r\n {\r\n path: \"/member/findEmail\",\r\n name: \"findEmail\",\r\n component: findEmail,\r\n },\r\n {\r\n path: \"/member/findEmailResult\",\r\n name: \"findEmailResult\",\r\n component: findEmailResult,\r\n\r\n },\r\n {\r\n path: \"/member/changePW2\",\r\n name: \"changePW2\",\r\n component: changePW2,\r\n },\r\n {\r\n path: \"/member/joinChild\",\r\n name: \"joinChild\",\r\n component: joinChild,\r\n },\r\n {\r\n path: \"/member/findEmailSub\",\r\n name: \"findEmailSub\",\r\n component: findEmailSub,\r\n },\r\n {\r\n path: \"/member/findChild\",\r\n name: \"findChild\",\r\n component: findChild,\r\n },\r\n {\r\n path: \"/member/changePW1\",\r\n name: \"changePW1\",\r\n component: changePW1,\r\n },\r\n {\r\n path: \"/member/changeChild\",\r\n name: \"changeChild\",\r\n component: changeChild,\r\n },\r\n {\r\n path: \"/member/changePWSub\",\r\n name: \"changePWSub\",\r\n component: changePWSub,\r\n },\r\n {\r\n path: \"/mypage\",\r\n name: \"myPage\",\r\n component: myPage,\r\n beforeEnter: requireLogin(),\r\n },\r\n // 240520 회원관리 페이지 추가\r\n {\r\n path: \"/manage\",\r\n name: \"manageMember\",\r\n component: manageMember,\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes,\r\n});\r\n\r\nexport default router;","import { createStore } from 'vuex';\r\n\r\nconst store = createStore({\r\n state() {\r\n return {\r\n selectedLink:''\r\n };\r\n },\r\n mutations: {\r\n setSelectedLink(state, link) {\r\n state.SelectedLink = link;\r\n }\r\n },\r\n actions: {\r\n setSelectedLink({ commit }, link) {\r\n commit('setSelectedLink', link);\r\n }\r\n },\r\n getters: {\r\n SelectedLink:state => state.SelectedLink\r\n }\r\n});\r\n\r\nexport default store;","export default class VectorHelper\r\n{\r\n //Returns {.x, .y}, a projected point perpendicular on the (infinite) line.\r\n static calcNearestPointOnLine(line1, line2, pnt) {\r\n var L2 = ( ((line2.x - line1.x) * (line2.x - line1.x)) + ((line2.z - line1.z) * (line2.z - line1.z)) );\r\n if(L2 == 0) return false;\r\n var r = ( ((pnt.x - line1.x) * (line2.x - line1.x)) + ((pnt.z - line1.z) * (line2.z - line1.z)) ) / L2;\r\n\r\n return new BABYLON.Vector3(line1.x + (r * (line2.x - line1.x)), 0, line1.z + (r * (line2.z - line1.z)));\r\n }\r\n\r\n //Returns float, the shortest distance to the (infinite) line.\r\n static calcDistancePointToLine(line1, line2, pnt) {\r\n var L2 = ( ((line2.x - line1.x) * (line2.x - line1.x)) + ((line2.z - line1.z) * (line2.z - line1.z)) );\r\n if(L2 == 0) return false;\r\n var s = (((line1.z - pnt.z) * (line2.x - line1.x)) - ((line1.x - pnt.x) * (line2.z - line1.z))) / L2;\r\n return Math.abs(s) * Math.sqrt(L2);\r\n }\r\n\r\n //Returns bool, whether the projected point is actually inside the (finite) line segment.\r\n static calcIsInsideLineSegment(line1, line2, pnt) {\r\n var L2 = ( ((line2.x - line1.x) * (line2.x - line1.x)) + ((line2.z - line1.z) * (line2.z - line1.z)) );\r\n if(L2 == 0) return false;\r\n var r = ( ((pnt.x - line1.x) * (line2.x - line1.x)) + ((pnt.z - line1.z) * (line2.z - line1.z)) ) / L2;\r\n\r\n return (0 <= r) && (r <= 1);\r\n }\r\n\r\n //The most useful function. Returns bool true, if the mouse point is actually inside the (finite) line, given a line thickness from the theoretical line away. It also assumes that the line end points are circular, not square.\r\n static calcIsInsideThickLineSegment(line1, line2, pnt, lineThickness) {\r\n var L2 = ( ((line2.x - line1.x) * (line2.x - line1.x)) + ((line2.z - line1.z) * (line2.z - line1.z)) );\r\n if(L2 == 0) return false;\r\n var r = ( ((pnt.x - line1.x) * (line2.x - line1.x)) + ((pnt.z - line1.z) * (line2.z - line1.z)) ) / L2;\r\n\r\n //Assume line thickness is circular\r\n if(r < 0) {\r\n //Outside line1\r\n return (Math.sqrt(( (line1.x - pnt.x) * (line1.x - pnt.x) ) + ( (line1.z - pnt.z) * (line1.z - pnt.z) )) <= lineThickness);\r\n } else if((0 <= r) && (r <= 1)) {\r\n //On the line segment\r\n var s = (((line1.z - pnt.z) * (line2.x - line1.x)) - ((line1.x - pnt.x) * (line2.z - line1.z))) / L2;\r\n return (Math.abs(s) * Math.sqrt(L2) <= lineThickness);\r\n } else {\r\n //Outside line2\r\n return (Math.sqrt(( (line2.x - pnt.x) * (line2.x - pnt.x) ) + ( (line2.z - pnt.z) * (line2.z - pnt.z) )) <= lineThickness);\r\n }\r\n }\r\n\r\n static reflectToPoint(point, planeOrigin, normal)\r\n {\r\n var zeroPoint = point.subtract(planeOrigin);\r\n var reflectPoint = BABYLON.Vector3.Reflect(zeroPoint, normal);\r\n return reflectPoint.add(planeOrigin);\r\n }\r\n\r\n static getPolygonCentroid(points, y) {\r\n\r\n var area = 0;\r\n for (var i = 0; i < points.length; i++) {\r\n area += (points[i].x * points[(i + 1) % points.length].z - points[(i + 1) % points.length].x * points[i].z) / 2;\r\n }\r\n\r\n points.push(new BABYLON.Vector3(points[0].x, y, points[0].z));\r\n\r\n // Get the centroid\r\n var x = 0;\r\n var z = 0;\r\n var m_sf;\r\n\r\n for (var i = 0; i < points.length - 2; i++) {\r\n m_sf = points[i].x * points[i + 1].z - points[i + 1].x * points[i].z;\r\n x += (points[i].x + points[i + 1].x) * m_sf;\r\n z += (points[i].z + points[i + 1].z) * m_sf;\r\n }\r\n\r\n x /= (6 * area);\r\n z /= (6 * area);\r\n\r\n return new BABYLON.Vector3(x, y, z);\r\n }\r\n\r\n static getCentroid2D(points)\r\n {\r\n var sumX = 0;\r\n var sumY = 0;\r\n\r\n points.forEach(o =>\r\n {\r\n sumX += o.x;\r\n sumY += o.y; \r\n });\r\n\r\n return {x:sumX/points.length, y:sumY/points.length};\r\n }\r\n\r\n static isParallel(vector1, vector2, tolerance = 0.0001)\r\n {\r\n return vector1.equalsWithEpsilon(vector2, tolerance) || vector1.negate().equalsWithEpsilon(vector2, tolerance);\r\n }\r\n\r\n static normalize2D(point)\r\n {\r\n var length = Math.sqrt(point.x*point.x+point.y*point.y);\r\n return {x:point.x/length, y:point.y/length};\r\n }\r\n\r\n static add2D(point1, point2)\r\n {\r\n return {x:point1.x + point2.x, y:point1.y + point2.y};\r\n }\r\n\r\n static subtract2D(point1, point2)\r\n {\r\n return {x:point1.x - point2.x, y:point1.y - point2.y};\r\n }\r\n\r\n static scale2D(point, value)\r\n {\r\n return {x:point.x * value, y:point.y * value};\r\n }\r\n\r\n static abs(vector)\r\n {\r\n return new BABYLON.Vector3(Math.abs(vector.x), Math.abs(vector.y), Math.abs(vector.z));\r\n }\r\n}","export default class MeshHelper\r\n{\r\n static GetBottomEdges(mesh)\r\n {\r\n var isCreatedEdgesRenderer = true;\r\n var renderer = mesh.edgesRenderer;\r\n if(!renderer)\r\n {\r\n mesh.enableEdgesRendering();\r\n mesh.edgesWidth = 0;\r\n isCreatedEdgesRenderer = false;\r\n renderer = mesh.edgesRenderer;\r\n }\r\n\r\n var edges = [];\r\n for (let i = 0; i < renderer.linesPositions.length; i+=3*4) {\r\n const e = new BABYLON.Vector3(\r\n renderer.linesPositions[i],\r\n renderer.linesPositions[i+1],\r\n renderer.linesPositions[i+2]\r\n )\r\n const e2 = new BABYLON.Vector3(\r\n renderer.linesPositions[i+6],\r\n renderer.linesPositions[i+6+1],\r\n renderer.linesPositions[i+6+2]\r\n )\r\n\r\n edges.push({start:e, end:e2});\r\n }\r\n\r\n edges = edges.filter(o => Math.abs(o.start.y - o.end.y) < 0.0001); // 수평 Edge 제거\r\n\r\n if(edges.length <= 0)\r\n return null;\r\n\r\n var minZ = edges.reduce((prev, curr) => prev.start.y < curr.start.y ? prev : curr).start.y;\r\n edges = edges.filter(o => Math.abs(o.start.y - minZ) < 0.0001);\r\n\r\n if(isCreatedEdgesRenderer)\r\n mesh.disableEdgesRendering();\r\n\r\n var sortedEdges = [];\r\n var checkEdge = edges.pop();\r\n while(edges.length > 0)\r\n {\r\n var nextEdge = edges.find(o => o.start.equalsWithEpsilon(checkEdge.end, 0.001) || o.end.equalsWithEpsilon(checkEdge.end, 0.001));\r\n if(!nextEdge)\r\n break;\r\n \r\n sortedEdges.push(checkEdge);\r\n var nextEdgeIndex = edges.indexOf(nextEdge);\r\n\r\n if(nextEdge.end.equalsWithEpsilon(checkEdge.end, 0.001))\r\n checkEdge = {start:nextEdge.end, end:nextEdge.start};\r\n else\r\n checkEdge = nextEdge;\r\n\r\n edges.splice(nextEdgeIndex, 1);\r\n }\r\n sortedEdges.push(checkEdge);\r\n\r\n return sortedEdges;\r\n }\r\n\r\n static GetWorldBottomEdges(mesh)\r\n {\r\n var isCreatedEdgesRenderer = true;\r\n var renderer = mesh.edgesRenderer;\r\n if(!renderer)\r\n {\r\n mesh.enableEdgesRendering();\r\n mesh.edgesWidth = 0;\r\n isCreatedEdgesRenderer = false;\r\n renderer = mesh.edgesRenderer;\r\n }\r\n\r\n var edges = [];\r\n for (let i = 0; i < renderer.linesPositions.length; i+=3*4) {\r\n const e = new BABYLON.Vector3(\r\n renderer.linesPositions[i],\r\n renderer.linesPositions[i+1],\r\n renderer.linesPositions[i+2]\r\n )\r\n const e2 = new BABYLON.Vector3(\r\n renderer.linesPositions[i+6],\r\n renderer.linesPositions[i+6+1],\r\n renderer.linesPositions[i+6+2]\r\n )\r\n\r\n edges.push({start:e, end:e2});\r\n }\r\n\r\n edges = edges.filter(o => Math.abs(o.start.y - o.end.y) < 0.0001); // 수평 Edge 제거\r\n\r\n if(edges.length <= 0)\r\n return null;\r\n\r\n var minZ = edges.reduce((prev, curr) => prev.start.y < curr.start.y ? prev : curr).start.y;\r\n edges = edges.filter(o => Math.abs(o.start.y - minZ) < 0.0001);\r\n\r\n var parentMatrix = mesh.parent.getWorldMatrix();\r\n var matrix = BABYLON.Matrix.Scaling(mesh.parent.scaling.x, mesh.parent.scaling.y, mesh.parent.scaling.z).multiply(BABYLON.Matrix.RotationAxis(BABYLON.Axis.Y, mesh.parent.rotation.y));\r\n var meshPos = BABYLON.Vector3.TransformCoordinates(mesh.position, matrix);\r\n edges = edges.map(o => ({start:BABYLON.Vector3.TransformCoordinates(o.start, parentMatrix).add(meshPos), end:BABYLON.Vector3.TransformCoordinates(o.end, parentMatrix).add(meshPos)}));\r\n\r\n if(!isCreatedEdgesRenderer)\r\n {\r\n mesh.disableEdgesRendering(); \r\n }\r\n\r\n var sortedEdges = [];\r\n var checkEdge = edges.pop();\r\n while(edges.length > 0)\r\n {\r\n var nextEdge = edges.find(o => o.start.equalsWithEpsilon(checkEdge.end, 0.001) || o.end.equalsWithEpsilon(checkEdge.end, 0.001));\r\n if(!nextEdge)\r\n break;\r\n \r\n sortedEdges.push(checkEdge);\r\n var nextEdgeIndex = edges.indexOf(nextEdge);\r\n\r\n if(nextEdge.end.equalsWithEpsilon(checkEdge.end, 0.001))\r\n checkEdge = {start:nextEdge.end, end:nextEdge.start};\r\n else\r\n checkEdge = nextEdge;\r\n\r\n edges.splice(nextEdgeIndex, 1);\r\n }\r\n sortedEdges.push(checkEdge);\r\n\r\n return sortedEdges;\r\n }\r\n\r\n static GetClockwiseVertices(vertices)\r\n {\r\n var maxX = Math.max(...vertices.map(o => o.x));\r\n var maxXVertices = vertices.filter(o => Math.abs(o.x - maxX) < 0.001);\r\n var maxXminZ = Math.min(...maxXVertices.map(o => o.z));\r\n var checkVertex = maxXVertices.find(o => Math.abs(o.z - maxXminZ) < 0.001);\r\n\r\n var index = vertices.indexOf(checkVertex);\r\n var nextIndex = index + 1 >= vertices.length ? 0 : index + 1;\r\n var nextVertex = vertices[nextIndex];\r\n\r\n var dir = BABYLON.Vector3.Normalize(nextVertex.subtract(checkVertex));\r\n\r\n if(dir.x < 0 || dir.z < 0)\r\n return vertices.reverse();\r\n else\r\n return vertices;\r\n }\r\n}","import { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport * as BABYLON from \"@babylonjs/core/Legacy/legacy\";\r\n\r\nexport default class SceneBase{\r\n constructor(canvas,viewer)\r\n {\r\n this.canvasElement = canvas;\r\n this.viewer = viewer;\r\n this.createEntity = null;\r\n this.colliders = [];\r\n this.engine = new BABYLON.Engine(canvas, true, { stencil: true });\r\n this.instance = this.createScene();\r\n this.isLoaded = true;\r\n }\r\n\r\n createScene()\r\n {\r\n const scene = new BABYLON.Scene(this.engine);\r\n scene.clearColor = new BABYLON.Color4(0, 0, 0, 0);\r\n scene.collisionsEnabled = true;\r\n\r\n const camera = new BABYLON.ArcRotateCamera(\"Camera\", 0, 0, 1, new BABYLON.Vector3(0, 0, 0), scene);\r\n camera.setPosition(new BABYLON.Vector3(0, 80, -50));\r\n camera.setTarget(BABYLON.Vector3.Zero());\r\n camera.attachControl(this.canvasElement, true);\r\n camera.lowerRadiusLimit = 10;\r\n camera.upperRadiusLimit = 200;\r\n camera.minZ = 0;\r\n\r\n const light = new BABYLON.HemisphericLight(\"light\", new Vector3(0, 1, 0), scene);\r\n light.intensity = 1;\r\n\r\n this.engine.setViewport(new BABYLON.Viewport(0, 0, 1, 1));\r\n camera.viewport = new BABYLON.Viewport(0, 0, 1, 1);\r\n \r\n //const axisViewer = new BABYLON.Debug.AxesViewer(scene,10);\r\n\r\n //Highlight layer\r\n this.previewHighlightLayer = new BABYLON.HighlightLayer(\"overLayer\", scene, {\r\n blurTextureSizeRatio: 1,\r\n mainTextureRatio: 1,\r\n alphaBlendingMode: BABYLON.Engine.ALPHA_SUBTRACT\r\n });\r\n this.highlightLayer = new BABYLON.HighlightLayer(\"highlightLayer\", scene, {\r\n blurTextureSizeRatio: 1,\r\n mainTextureRatio: 1,\r\n alphaBlendingMode: BABYLON.Engine.ALPHA_SUBTRACT\r\n });\r\n\r\n this.engine.runRenderLoop(() => {\r\n scene.render();\r\n });\r\n\r\n return scene;\r\n }\r\n\r\n createGround()\r\n {\r\n const width = 10000\r\n const height = 10000\r\n const subdivisions = 100\r\n const ground = BABYLON.MeshBuilder.CreateGround(\"ground\", { width, height, subdivisions }, this.instance, false);\r\n ground.position = new Vector3(0,0,0);\r\n ground.material = this.instance.getMaterialByName(\"nomalGridMat\");\r\n ground.updateFacetData();\r\n\r\n this.highlightLayer.addExcludedMesh(ground);\r\n this.previewHighlightLayer.addExcludedMesh(ground);\r\n\r\n const spotBox = BABYLON.MeshBuilder.CreateBox('spotBox',{size:1},this.instance);\r\n spotBox.isVisible = false;\r\n }\r\n}","import * as BABYLON from \"@babylonjs/core/Legacy/legacy\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport MeshHelper from \"./MeshHelper\";\r\n\r\nclass CsgHelper\r\n{\r\n bakeTransform(mesh)\r\n {\r\n const pos = mesh.position.clone();\r\n const parent = mesh.parent;\r\n const bbox = mesh.getBoundingInfo().boundingBox;\r\n const translateMatrix = BABYLON.Matrix.Translation(-bbox.center.x, -bbox.center.y, -bbox.center.z)\r\n mesh.position = Vector3.Zero()\r\n mesh.parent = null;\r\n mesh.bakeTransformIntoVertices(translateMatrix);\r\n mesh.position = pos;\r\n mesh.parent = parent;\r\n }\r\n\r\n extendsTransFrom(mesh)\r\n {\r\n const parent = mesh.parent;\r\n if(parent)\r\n {\r\n mesh.setParent(null)\r\n this.bakeTransform(mesh);\r\n }\r\n }\r\n\r\n initialMatrix(mesh)\r\n {\r\n this.extendsTransFrom(mesh);\r\n\r\n const pos = mesh.position.clone();\r\n mesh.position = Vector3.Zero();\r\n mesh.bakeCurrentTransformIntoVertices();\r\n mesh.position = pos;\r\n\r\n mesh.rotation = BABYLON.Vector3.Zero();\r\n mesh.scaling = new BABYLON.Vector3(1,1,1);\r\n mesh.computeWorldMatrix();\r\n }\r\n\r\n subtract(m1,m2,instance)\r\n {\r\n const p1 = m1.parent;\r\n const p2 = m2.parent;\r\n\r\n const pRot1 = this.getParentRotation(m1);\r\n const pRot2 = this.getParentRotation(m2);\r\n\r\n const child1 = m1.getChildMeshes();\r\n const child2 = m2.getChildMeshes();\r\n\r\n child1.forEach(c=>c.setParent(null));\r\n child2.forEach(c=>c.setParent(null));\r\n\r\n this.initialMatrix(m1);\r\n this.initialMatrix(m2);\r\n\r\n const csg1 = BABYLON.CSG.FromMesh(m1);\r\n const csg2 = BABYLON.CSG.FromMesh(m2);\r\n\r\n const retcsg = csg1.subtract(csg2);\r\n const mesh = retcsg.toMesh(null,m1.material,instance,true);\r\n m1.dispose();\r\n \r\n child1.forEach(c=>{\r\n this.bakeTransform(c)\r\n c.setParent(mesh);\r\n })\r\n\r\n child2.forEach(c=>{\r\n this.bakeTransform(c)\r\n c.setParent(m2);\r\n })\r\n\r\n if(p1)\r\n {\r\n mesh.parent = p1;\r\n mesh.rotation.y = pRot1;\r\n this.setParentSubtractLocation(mesh,p1);\r\n } \r\n \r\n if(p2)\r\n {\r\n m2.parent = p2;\r\n m2.rotation.y = pRot2;\r\n this.setParentSubtractLocation(m2,p2);\r\n }\r\n \r\n return mesh;\r\n }\r\n\r\n setParentSubtractLocation(mesh,parent)\r\n {\r\n if(parent)\r\n {\r\n mesh.position = mesh.position.subtract(parent.position);\r\n mesh.scaling = mesh.scaling.multiply(parent.scaling);\r\n mesh.position = mesh.position.multiply(mesh.scaling);\r\n\r\n const cos = Math.cos(-parent.rotation.y);\r\n const sin = Math.sin(-parent.rotation.y);\r\n const p = mesh.position.clone();\r\n mesh.position.x = p.x*cos - p.z*sin;\r\n mesh.position.z = p.x*sin + p.z*cos;\r\n\r\n if(parent.parent)\r\n {\r\n this.setParentSubtractLocation(mesh,parent.parent);\r\n }\r\n }\r\n }\r\n\r\n getParentSubtractLocation(mesh)\r\n {\r\n const clone = mesh.clone();\r\n this.setParentSubtractLocation(clone,clone.parent);\r\n let pos = clone.position.clone();\r\n clone.dispose();\r\n return pos;\r\n }\r\n\r\n getParentScale(mesh)\r\n {\r\n let scale = mesh.scaling.clone();\r\n if(mesh.parent)\r\n {\r\n scale = mesh.scaling.multiply(mesh.parent.scaling);\r\n }\r\n if(mesh.parent?.parent)\r\n {\r\n scale = mesh.scaling.multiply(this.getParentRotation(mesh.parent.parent));\r\n }\r\n\r\n return scale;\r\n }\r\n\r\n getParentRotation(mesh)\r\n {\r\n let rot = 0;\r\n if(mesh.parent)\r\n {\r\n rot += mesh.parent.rotation.y;\r\n }\r\n if(mesh.parent?.parent)\r\n {\r\n rot += this.getParentRotation(mesh.parent);\r\n }\r\n\r\n return rot;\r\n }\r\n\r\n getMeshSize(mesh)\r\n {\r\n const boxInfo = mesh.getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let height = boxInfo.boundingBox.extendSize.y * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n\r\n return {width : width, height : height, depth : depth};\r\n }\r\n}\r\n\r\nexport default new CsgHelper();","import { Vector3 } from \"@babylonjs/core\";\r\n\r\nasync function loadModuleFromData(entity,data,sceneLoader)\r\n{\r\n const m = sceneLoader.EntityLoader.modules.find(x=>x.guid === data.guid);\r\n \r\n const newModule = await sceneLoader.makeLoadModule(data);\r\n if(entity.isModule)\r\n {\r\n entity = newModule;\r\n }\r\n else\r\n {\r\n for(let e of newModule.Entities)\r\n {\r\n if(e.info.guid === entity.info.guid)\r\n {\r\n entity = e;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const equlModuleCommands = sceneLoader.history.filter(x=>x.entity?.guid === data.guid)\r\n for(let c of equlModuleCommands)\r\n {\r\n c.entity = newModule;\r\n }\r\n\r\n const equlModuleEntityCommands = sceneLoader.history.filter(x=>!x.entity.isModule).filter(x=>x.entity?.moduleEntity.guid === data.guid)\r\n for(let c of equlModuleEntityCommands)\r\n {\r\n for(let e of newModule.Entities)\r\n {\r\n if(e.info.guid === c.entity.info.guid)\r\n {\r\n c.entity = e;\r\n break;\r\n }\r\n }\r\n }\r\n if(m)\r\n {\r\n m.dispose();\r\n }\r\n sceneLoader.drawScene1f.updateWall();\r\n}\r\n\r\nfunction getLocatedScene(entity)\r\n{\r\n if(entity.isModule)\r\n {\r\n return entity.locatedScene; \r\n }\r\n return entity.moduleEntity.locatedScene;\r\n}\r\n\r\nexport class CreateCommand{\r\n constructor(entity,data)\r\n {\r\n this.entity = entity;\r\n this.data = data;\r\n this.sceneLoader = entity.viewScene.viewer.$SceneLoader;\r\n }\r\n\r\n async undo()\r\n {\r\n this.entity.dispose();\r\n }\r\n\r\n async redo()\r\n {\r\n await loadModuleFromData(this.entity,this.data,this.sceneLoader)\r\n }\r\n}\r\n\r\nexport class DelteCommand{\r\n constructor(entity,data)\r\n {\r\n this.entity = entity;\r\n this.data = data;\r\n this.sceneLoader = entity.viewScene.viewer.$SceneLoader;\r\n }\r\n\r\n async undo()\r\n {\r\n await loadModuleFromData(this.entity,this.data,this.sceneLoader)\r\n }\r\n\r\n async redo()\r\n {\r\n this.entity.dispose();\r\n }\r\n}\r\n\r\nexport class MoveCommand{\r\n constructor(entity,dataA)\r\n {\r\n this.entity = entity;\r\n this.dataA = dataA;\r\n this.dataB = null;\r\n this.sceneLoader = entity.viewScene.viewer.$SceneLoader;\r\n }\r\n\r\n async undo()\r\n {\r\n await loadModuleFromData(this.entity,this.dataA,this.sceneLoader)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n }\r\n\r\n async redo()\r\n {\r\n await loadModuleFromData(this.entity,this.dataB,this.sceneLoader)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n }\r\n}\r\n\r\nexport class RotateCommand{\r\n constructor(entity)\r\n {\r\n this.entity = entity;\r\n }\r\n\r\n async undo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.rotateccw(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n\r\n async redo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.rotate(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n}\r\n\r\nexport class RotateccwCommand{\r\n constructor(entity)\r\n {\r\n this.entity = entity;\r\n }\r\n\r\n async undo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.rotate(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n\r\n async redo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.rotateccw(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n}\r\n\r\nexport class MirrorvCommand{\r\n constructor(entity)\r\n {\r\n this.entity = entity;\r\n }\r\n\r\n async undo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.mirrorv(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n\r\n async redo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.mirrorv(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n}\r\n\r\nexport class MirrorhCommand{\r\n constructor(entity)\r\n {\r\n this.entity = entity;\r\n }\r\n\r\n async undo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.mirrorh(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n\r\n async redo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.mirrorh(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n}\r\n\r\nexport class DoorSwapCommand{\r\n constructor(entity)\r\n {\r\n this.entity = entity;\r\n }\r\n\r\n async undo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.doorSwap(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n\r\n async redo()\r\n {\r\n this.entity.isHistoryWork = true;\r\n this.entity.doorSwap(getLocatedScene(this.entity),this.entity)\r\n getLocatedScene(this.entity).removeAllSelectedMesh()\r\n this.entity.isHistoryWork = false;\r\n }\r\n}\r\n\r\n","import * as GUI from '@babylonjs/gui/2D';\r\nimport VectorHelper from \"../Helper/VectorHelper\";\r\nimport Enumerable from 'linq'\r\nimport * as HistoryCommand from \"../Entities/historyCommands\"\r\nimport SaveHelper from \"../Helper/SaveHelper\";\r\nimport { mrdlSliderThumbPixelShader } from '@babylonjs/gui/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment';\r\n\r\nexport default class ContextItemBase{\r\n constructor()\r\n {\r\n this.contextPanels = [];\r\n this.boundingSideMeshes = [];\r\n this.boundingSideContexts = [];\r\n this.fontSize = 12;\r\n }\r\n\r\n disposeContextPanel()\r\n {\r\n this.contextPanels.forEach(context =>\r\n {\r\n context.dispose(); \r\n });\r\n this.contextPanels = [];\r\n this.boundingSideMeshes.forEach(mesh =>\r\n {\r\n mesh.dispose(); \r\n });\r\n this.boundingSideMeshes = [];\r\n this.boundingSideContexts.forEach(context =>\r\n {\r\n context.dispose();\r\n });\r\n this.boundingSideContexts = [];\r\n }\r\n\r\n createContextPanel(scene)\r\n {\r\n return null;\r\n }\r\n\r\n createToolTip(gui)\r\n {\r\n var tooltip = new GUI.Rectangle(\"tooltip\");\r\n tooltip.background = (new BABYLON.Color4(0, 0, 0, 0.7)).toHexString();\r\n tooltip.color = \"white\";\r\n tooltip.adaptWidthToChildren = true;\r\n tooltip.adaptHeightToChildren = true;\r\n tooltip.zIndex = 100;\r\n tooltip.isVisible = false;\r\n gui.addControl(tooltip);\r\n var textBlock = new GUI.TextBlock(\"textTooltip\", \"\");\r\n textBlock.fontSize = this.fontSize;\r\n textBlock.resizeToFit = true;\r\n textBlock.paddingTop = \"5px\";\r\n textBlock.paddingLeft = \"15px\";\r\n textBlock.paddingRight = \"15px\";\r\n textBlock.paddingBottom = \"5px\";\r\n tooltip.addControl(textBlock);\r\n\r\n this.contextPanels.push(tooltip);\r\n }\r\n\r\n getAdvancedTexture(sceneInstance)\r\n {\r\n return GUI.AdvancedDynamicTexture.CreateFullscreenUI(\"UI\", true, sceneInstance);\r\n }\r\n\r\n getContextDefaultPanel()\r\n {\r\n var toolbar = this.createPanelContainer();\r\n\r\n return {\r\n toolbar: toolbar\r\n };\r\n }\r\n\r\n getButtonData()\r\n {\r\n return [];\r\n }\r\n\r\n createEntityBoundingSidePanel(advancedTexture, scene, dirs, axisAvailableTypes)\r\n {\r\n if(dirs.length <= 0)\r\n return;\r\n\r\n var box = this.getBoundingBox2d(scene, [\"Floor\"]);\r\n\r\n for(var i=0; i\r\n {\r\n if(!wall.info.typeName.includes('Interior')) // 내벽은 제외\r\n {\r\n var line = wall.getWorldWallLine();\r\n var lineDir = BABYLON.Vector3.Normalize(line.end.subtract(line.start));\r\n if(lineDir.multiply(vector).equalsWithEpsilon(BABYLON.Vector3.Zero(), 0.0001))\r\n {\r\n var floorPoint = VectorHelper.calcNearestPointOnLine(line.start, line.end, box.center);\r\n var floorDir = BABYLON.Vector3.Normalize(floorPoint.subtract(box.center));\r\n if(floorDir.equalsWithEpsilon(vector, 0.0001))\r\n {\r\n if(nearWall == null)\r\n nearWall = wall;\r\n else\r\n {\r\n var nearBox = nearWall.getBoundingBox2d(scene);\r\n var wallPoint = VectorHelper.calcNearestPointOnLine(line.start, line.end, nearBox.center);\r\n var dir = BABYLON.Vector3.Normalize(wallPoint.subtract(nearBox.center));\r\n if(dir.equalsWithEpsilon(vector, 0.0001))\r\n nearWall = wall; \r\n }\r\n }\r\n }\r\n }\r\n })\r\n\r\n var position = box.center.add(vector.multiply(box.extendSize));\r\n\r\n if(nearWall != null)\r\n {\r\n var wallLine = nearWall.getWallLine();\r\n var lineCenter = VectorHelper.calcNearestPointOnLine(wallLine.start.add(box.center), wallLine.end.add(box.center), box.center);\r\n var internalDir = BABYLON.Vector3.Normalize(lineCenter.subtract(box.center));\r\n \r\n this.createSideButton(advancedTexture, scene, position, nearWall, axisAvailableTypes, vector, internalDir);\r\n }\r\n }\r\n }\r\n\r\n createSideButton(advancedTexture, scene, center, wall, axisAvailableTypes, worldDir, internalDir)\r\n {\r\n var tempMesh = new BABYLON.Mesh(\"tempMesh\", scene.instance);\r\n tempMesh.position = center;\r\n\r\n var panel = new GUI.StackPanel();\r\n panel.adaptWidthToChildren = true;\r\n panel.adaptHeightToChildren = true;\r\n panel.spacing = 1;\r\n \r\n var dirDatas = [];\r\n var currentAxis = '';\r\n if(worldDir.z == 1)\r\n {\r\n currentAxis = BABYLON.Axis.Z;\r\n dirDatas.push({image: \"arrow-up.png\", buttonDir: worldDir, dir: internalDir, type: \"increase\"});\r\n dirDatas.push({image: \"arrow-down.png\", buttonDir: worldDir, dir: internalDir.negate(), type: \"decrease\"});\r\n panel.isVertical = true;\r\n }\r\n else if(worldDir.z == -1)\r\n {\r\n currentAxis = BABYLON.Axis.Z;\r\n dirDatas.push({image: \"arrow-up.png\", buttonDir: worldDir, dir: internalDir.negate(), type: \"decrease\"});\r\n dirDatas.push({image: \"arrow-down.png\", buttonDir: worldDir, dir: internalDir, type: \"increase\"});\r\n panel.isVertical = true;\r\n }\r\n else if(worldDir.x == 1)\r\n {\r\n currentAxis = BABYLON.Axis.X;\r\n dirDatas.push({image: \"arrow-left.png\", buttonDir: worldDir, dir: internalDir.negate(), type: \"decrease\"});\r\n dirDatas.push({image: \"arrow-right.png\", buttonDir: worldDir, dir: internalDir, type: \"increase\"});\r\n panel.isVertical = false;\r\n }\r\n else if(worldDir.x == -1)\r\n {\r\n currentAxis = BABYLON.Axis.X;\r\n dirDatas.push({image: \"arrow-left.png\", buttonDir: worldDir, dir: internalDir, type: \"increase\"});\r\n dirDatas.push({image: \"arrow-right.png\", buttonDir: worldDir, dir: internalDir.negate(), type: \"decrease\"});\r\n panel.isVertical = false;\r\n }\r\n\r\n var axisData = axisAvailableTypes.find(k => k.axis.multiply(currentAxis).length() == 1);\r\n if(!axisData)\r\n return;\r\n\r\n dirDatas = dirDatas.filter(o => axisData.availableTypes.some(k => k == o.type));\r\n\r\n var module = this;\r\n dirDatas.forEach(dirData =>\r\n {\r\n var buttonDir = dirData.buttonDir;\r\n var dir = dirData.dir;\r\n var type = dirData.type;\r\n var button = this.createImageButton(advancedTexture, scene, dirData.image, null, 256, false, function(evt)\r\n {\r\n if(evt.buttonIndex != 0)\r\n return;\r\n \r\n module.scaleModule(scene, wall, buttonDir, dir, type);\r\n \r\n module.disposeContextPanel();\r\n setTimeout(() => {\r\n if(scene.selectedEntity == module)\r\n module.createContextPanel(scene);\r\n }, 200); // Wall이 모두 바뀔때까지 약간의 딜레이 필요\r\n });\r\n panel.addControl(button); \r\n });\r\n\r\n advancedTexture.addControl(panel);\r\n panel.linkWithMesh(tempMesh);\r\n\r\n this.boundingSideMeshes.push(tempMesh);\r\n this.boundingSideContexts.push(panel);\r\n }\r\n\r\n createShadowedText(text)\r\n {\r\n var rect = new GUI.Rectangle();\r\n rect.adaptWidthToChildren = true;\r\n rect.adaptHeightToChildren = true;\r\n rect.cornerRadius = 10;\r\n rect.thickness = 1;\r\n rect.background = \"white\";\r\n rect.shadowColor = \"gray\";\r\n rect.shadowBlur = 5;\r\n rect.paddingTop = \"5px\";\r\n rect.paddingLeft = \"5px\";\r\n rect.paddingRight = \"5px\";\r\n rect.paddingBottom = \"5px\";\r\n\r\n var txtName = new GUI.TextBlock();\r\n txtName.text = text;\r\n txtName.color = \"black\";\r\n txtName.resizeToFit = true;\r\n txtName.fontSize = this.fontSize;\r\n txtName.paddingTop = \"5px\";\r\n txtName.paddingLeft = \"5px\";\r\n txtName.paddingRight = \"5px\"\r\n txtName.paddingBottom = \"5px\";\r\n rect.addControl(txtName);\r\n\r\n return rect;\r\n }\r\n\r\n createPanelContainer()\r\n {\r\n var spContainer = new GUI.StackPanel();\r\n spContainer.adaptWidthToChildren = true;\r\n spContainer.adaptHeightToChildren = true;\r\n spContainer.horizontalAlignment = GUI.Control.HORIZONTAL_ALIGNMENT_CENTER;\r\n spContainer.verticalAlignment = GUI.Control.VERTICAL_ALIGNMENT_BOTTOM;\r\n spContainer.spacing = 5;\r\n spContainer.isVertical = true;\r\n spContainer.paddingBottom = \"15px\";\r\n\r\n return spContainer;\r\n }\r\n\r\n createButtonPanel(advancedTexture, scene, name, buttons)\r\n {\r\n var panel = new GUI.StackPanel();\r\n panel.adaptWidthToChildren = true;\r\n panel.adaptHeightToChildren = true;\r\n panel.horizontalAlignment = GUI.Control.HORIZONTAL_ALIGNMENT_CENTER;\r\n panel.isVertical = false;\r\n\r\n var nameText = this.createShadowedText(name);\r\n panel.addControl(nameText);\r\n\r\n buttons.forEach(data =>\r\n {\r\n var type = data.type;\r\n var image = null;\r\n var tooltip = null;\r\n var isToggled = false;\r\n if(data.isToggled)\r\n isToggled = data.isToggled;\r\n\r\n switch(type)\r\n {\r\n case \"module\":\r\n image = \"module.png\";\r\n tooltip = \"모듈 선택\";\r\n break;\r\n case \"rotate\":\r\n image = \"rotate.png\"\r\n tooltip = \"오른쪽으로 회전\";\r\n break;\r\n case \"rotate-ccw\":\r\n image = \"rotate-ccw.png\"\r\n tooltip = \"왼쪽으로 회전\";\r\n break;\r\n case \"opening\":\r\n image = \"opening.png\"\r\n tooltip = \"오프닝 선택\";\r\n break;\r\n case \"cut\":\r\n image = \"scissors.png\"\r\n tooltip = \"삭제\";\r\n break;\r\n case \"mirror-v\":\r\n image = \"mirror-v.png\";\r\n tooltip = \"세로로 뒤집기\";\r\n break;\r\n case \"mirror-h\":\r\n image = \"mirror-h.png\";\r\n tooltip = \"가로로 뒤집기\";\r\n break;\r\n case \"door-mirror-v\":\r\n image = \"door-mirror-v.png\";\r\n tooltip = \"벽을 기준으로 뒤집기\";\r\n break;\r\n case \"hide-roof\":\r\n image = \"hide-roof.png\";\r\n tooltip = \"지붕 숨기기\";\r\n break;\r\n case \"door-mirror-h\":\r\n image = \"door-mirror-h.png\";\r\n tooltip = \"객체 기준으로 뒤집기\";\r\n break;\r\n case \"copy\":\r\n image = \"copy.png\";\r\n tooltip = \"복사\";\r\n break;\r\n case \"door-swap\":\r\n image = \"door-swap.png\";\r\n tooltip = \"문 교체\";\r\n break;\r\n case \"delete\":\r\n image = \"delete.png\";\r\n tooltip = \"삭제\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if(image != null)\r\n {\r\n var entity = this;\r\n var button = this.createImageButton(advancedTexture, scene, image, tooltip, 5, isToggled, function(evt)\r\n {\r\n if(evt.buttonIndex != 0)\r\n return;\r\n \r\n data.press(scene, entity);\r\n entity.disposeContextPanel();\r\n\r\n if(data.type.includes(\"mirror\") || data.type.includes(\"rotate\") || data.type.includes('hide-roof'))\r\n {\r\n setTimeout(() => {\r\n if(scene.selectedEntity == entity)\r\n entity.createContextPanel(scene);\r\n }, 200); // Wall이 모두 바뀔때까지 약간의 딜레이 필요\r\n }\r\n });\r\n panel.addControl(button);\r\n }\r\n });\r\n\r\n return panel;\r\n }\r\n\r\n createImageButton(advancedTexture, scene, imageSrc, tooltip, cornerRadius, isToggled, pressFunction)\r\n {\r\n var defaultSrc = \"../../icons/\";\r\n\r\n var button = new GUI.Button();\r\n button.adaptWidthToChildren = true;\r\n button.adaptHeightToChildren = true;\r\n button.color = 'rgba(0, 0, 0, 0)'\r\n\r\n var rect = new GUI.Rectangle();\r\n rect.adaptWidthToChildren = true;\r\n rect.adaptHeightToChildren = true;\r\n rect.cornerRadius = cornerRadius\r\n rect.thickness = 0;\r\n rect.shadowColor = \"gray\";\r\n rect.shadowBlur = 5;\r\n rect.background = isToggled ? \"#d9d9d9\" : \"white\";\r\n rect.paddingTop = \"3px\";\r\n rect.paddingLeft = \"3px\";\r\n rect.paddingRight = \"3px\"\r\n rect.paddingBottom = \"3px\";\r\n\r\n var image = new GUI.Image(\"image\", defaultSrc + imageSrc);\r\n image.width = \"28px\";\r\n image.height = \"28px\";\r\n image.paddingTop = \"3px\";\r\n image.paddingLeft = \"3px\";\r\n image.paddingRight = \"3px\"\r\n image.paddingBottom = \"3px\";\r\n\r\n button.onPointerEnterObservable.add(function()\r\n {\r\n if(scene != null)\r\n {\r\n var phlLayer = scene.previewHighlightLayer;\r\n phlLayer.removeAllMeshes();\r\n }\r\n\r\n if(tooltip != null)\r\n {\r\n var rectTooltip = advancedTexture.getControlByName(\"tooltip\");\r\n rectTooltip.isVisible = true;\r\n \r\n var tbTooltip = advancedTexture.getControlByName(\"textTooltip\");\r\n tbTooltip.text = tooltip;\r\n\r\n var width = scene.engine.getRenderWidth();\r\n var height = scene.engine.getRenderHeight();\r\n\r\n rectTooltip.leftInPixels = button.centerX - (width / 2.0);\r\n rectTooltip.topInPixels = button.centerY - (height / 2.0) - rectTooltip.heightInPixels;\r\n }\r\n });\r\n button.onPointerOutObservable.add(function()\r\n {\r\n var tooltip = advancedTexture.getControlByName(\"tooltip\");\r\n tooltip.isVisible = false;\r\n });\r\n button.onPointerClickObservable.add(pressFunction);\r\n button.onWheelObservable.add(function(vector)\r\n {\r\n scene.handleMouseWheel(-vector.y);\r\n })\r\n\r\n button.addControl(rect);\r\n rect.addControl(image);\r\n\r\n return button;\r\n }\r\n\r\n createTextButton(scene, entity, text, cornerRadius, paddingHorizontal, pressFunction)\r\n {\r\n var button = new GUI.Button();\r\n button.adaptWidthToChildren = true;\r\n button.adaptHeightToChildren = true;\r\n button.color = 'rgba(0, 0, 0, 0)'\r\n\r\n var rect = new GUI.Rectangle();\r\n rect.adaptWidthToChildren = true;\r\n rect.adaptHeightToChildren = true;\r\n rect.cornerRadius = cornerRadius\r\n rect.thickness = 1;\r\n rect.shadowColor = \"gray\";\r\n rect.shadowBlur = 5;\r\n rect.background = \"white\";\r\n rect.paddingTop = \"3px\";\r\n rect.paddingLeft = \"5px\";\r\n rect.paddingRight = \"5px\"\r\n rect.paddingBottom = \"3px\";\r\n\r\n var txtName = new GUI.TextBlock();\r\n txtName.text = text;\r\n txtName.color = \"black\";\r\n txtName.resizeToFit = true;\r\n txtName.fontSize = this.fontSize;\r\n txtName.paddingTop = \"5px\";\r\n txtName.paddingLeft = paddingHorizontal;\r\n txtName.paddingRight = paddingHorizontal;\r\n txtName.paddingBottom = \"5px\";\r\n rect.addControl(txtName);\r\n\r\n button.onPointerEnterObservable.add(function()\r\n {\r\n if(scene != null)\r\n {\r\n var phlLayer = scene.previewHighlightLayer;\r\n phlLayer.removeAllMeshes();\r\n }\r\n });\r\n button.onPointerClickObservable.add(function(evt)\r\n {\r\n if(evt.buttonIndex != 0)\r\n return;\r\n \r\n pressFunction(scene, entity);\r\n });\r\n button.onWheelObservable.add(function(vector)\r\n {\r\n scene.handleMouseWheel(-vector.y);\r\n })\r\n\r\n button.addControl(rect);\r\n\r\n return button;\r\n }\r\n\r\n selectModule(scene, entity)\r\n {\r\n scene.selectEntity(entity.moduleEntity);\r\n }\r\n\r\n rotate(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.RotateCommand(entity));\r\n var meshes2d = entity.getAll2DRootMeshes();\r\n var meshes3d = entity.getAll3DRootMeshes();\r\n\r\n meshes2d.forEach(o => \r\n {\r\n var rotation = o.rotation.y;\r\n if(rotation <= -Math.PI*2 || rotation >= Math.PI*2)\r\n rotation = 0;\r\n\r\n o.rotation.y = rotation + BABYLON.Tools.ToRadians(90);\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n var rotation = o.rotation.y;\r\n if(rotation <= -Math.PI*2 || rotation >= Math.PI*2)\r\n rotation = 0;\r\n\r\n o.rotation.y = rotation + BABYLON.Tools.ToRadians(90);\r\n });\r\n\r\n scene.updateEntireRoof();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n rotateccw(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.RotateccwCommand(entity));\r\n var meshes2d = entity.getAll2DRootMeshes();\r\n var meshes3d = entity.getAll3DRootMeshes();\r\n\r\n meshes2d.forEach(o => \r\n {\r\n var rotation = o.rotation.y;\r\n if(rotation <= -Math.PI*2 || rotation >= Math.PI*2)\r\n rotation = 0;\r\n\r\n o.rotation.y = rotation + BABYLON.Tools.ToRadians(-90);\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n var rotation = o.rotation.y;\r\n if(rotation <= -Math.PI*2 || rotation >= Math.PI*2)\r\n rotation = 0;\r\n\r\n o.rotation.y = rotation + BABYLON.Tools.ToRadians(-90);\r\n });\r\n\r\n scene.updateEntireRoof();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n cut(scene, entity)\r\n {\r\n \r\n }\r\n\r\n mirrorv(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MirrorvCommand(entity));\r\n var meshes2d = entity.getAll2DRootMeshes();\r\n var meshes3d = entity.getAll3DRootMeshes();\r\n\r\n if(entity.isModule)\r\n {\r\n const meshes = [entity.viewRootMesh, entity.draw1fRootMesh, entity.draw2fRootMesh]\r\n const rot = entity.viewRootMesh.rotation.y;\r\n const sin = Math.abs(Math.sin(rot).toFixed(2))\r\n \r\n if(sin === 1)\r\n {\r\n meshes.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n });\r\n }\r\n else\r\n {\r\n meshes.forEach(o => \r\n {\r\n o.scaling.z = -o.scaling.z;\r\n });\r\n }\r\n }\r\n else\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.z = -o.scaling.z;\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.z = -o.scaling.z;\r\n });\r\n }\r\n \r\n scene.updateEntireRoof();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n mirrorh(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MirrorhCommand(entity));\r\n var meshes2d = entity.getAll2DRootMeshes();\r\n var meshes3d = entity.getAll3DRootMeshes();\r\n\r\n if(entity.isModule)\r\n {\r\n const meshes = [entity.viewRootMesh, entity.draw1fRootMesh, entity.draw2fRootMesh]\r\n const rot = entity.viewRootMesh.rotation.y;\r\n const sin = Math.abs(Math.sin(rot).toFixed(2))\r\n \r\n if(sin === 1)\r\n {\r\n meshes.forEach(o => \r\n {\r\n o.scaling.z = -o.scaling.z;\r\n });\r\n }\r\n else\r\n {\r\n meshes.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n });\r\n }\r\n }\r\n else\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n });\r\n }\r\n\r\n scene.updateEntireRoof();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n copy(scene, entity)\r\n {\r\n \r\n }\r\n\r\n doorSwap(scene, entity)\r\n {\r\n \r\n }\r\n\r\n delete(scene, entity)\r\n {\r\n \r\n }\r\n\r\n getSnapData(boxes, entities, sceneEntity, prevSnapData, mouseX, mouseZ, availableAxis)\r\n {\r\n if(!availableAxis)\r\n availableAxis = ['x', 'z'];\r\n\r\n //var offset = sceneEntity.zoomRate / 10;\r\n var offset = 0.3;\r\n var allResults = [];\r\n\r\n var prevSnapDirs = [];\r\n if(prevSnapData != null)\r\n {\r\n if(prevSnapData.X != null)\r\n //prevSnapDirs.push(BABYLON.Vector3.Normalize(new BABYLON.Vector3(prevSnapData.X - mouseX, 0, 0)));\r\n prevSnapDirs.push('x');\r\n if(prevSnapData.Z != null)\r\n prevSnapDirs.push('z');\r\n }\r\n\r\n for(var f=0; f\r\n {\r\n var values = [];\r\n var linePos = [];\r\n if(position.axis == 'x')\r\n {\r\n values.push(targetBox.minimum.z);\r\n values.push(targetBox.maximum.z);\r\n var lineDir = BABYLON.Vector3.Normalize(new BABYLON.Vector3(targetBox.minimum.x - box.minimumWorld.x, 0, 0));\r\n linePos.push(targetBox.centerWorld.x + (lineDir.x * (targetBox.extendSize.x + 0.3 * 2)));\r\n linePos.push(box.centerWorld.x - (lineDir.x * (box.extendSize.x + 0.3 * 2)));\r\n }\r\n else\r\n {\r\n values.push(targetBox.minimum.x);\r\n values.push(targetBox.maximum.x);\r\n var lineDir = BABYLON.Vector3.Normalize(new BABYLON.Vector3(0, 0, targetBox.minimum.z - box.minimumWorld.z));\r\n linePos.push(targetBox.centerWorld.z + (lineDir.z * (targetBox.extendSize.z + 0.3 * 2)));\r\n linePos.push(box.centerWorld.z - (lineDir.z * (box.extendSize.z + 0.3 * 2)));\r\n }\r\n \r\n values.forEach(value =>\r\n {\r\n var posDist = position.value - value;\r\n var absDist = Math.abs(posDist);\r\n if(prevSnapDirs.includes(position.axis) ? absDist <= 0.1 : absDist <= offset)\r\n {\r\n if(position.minDist == null || position.minDist >= absDist)\r\n {\r\n position.minPos = value;\r\n position.posDist = posDist;\r\n position.minDist = absDist;\r\n position.linePos = linePos;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n var results = positions.filter(o => o.minDist != null);\r\n if(results.length < 1)\r\n continue;\r\n else\r\n allResults.push(...results);\r\n }\r\n\r\n if(allResults.length < 1)\r\n return;\r\n\r\n var result = {};\r\n var xItems = Enumerable.from(allResults.filter(o => o.axis == 'z'));\r\n var zItems = Enumerable.from(allResults.filter(o => o.axis == 'x'));\r\n if(xItems.count() > 0)\r\n {\r\n var minGroup = xItems.groupBy(o => o.minDist).orderBy(o => o.key).first();\r\n result.minx = minGroup.key();\r\n result.xItems = minGroup.toArray();\r\n }\r\n if(zItems.count() > 0)\r\n {\r\n var minGroup = zItems.groupBy(o => o.minDist).orderBy(o => o.key).first();\r\n result.minz = minGroup.key();\r\n result.zItems = minGroup.toArray();\r\n }\r\n\r\n return result;\r\n }\r\n}","import { Vector3 } from \"@babylonjs/core\";\r\nimport VectorHelper from \"../Helper/VectorHelper\"\r\nimport ContextItemBase from \"./ContextItemBase\";\r\nimport * as HistoryCommand from \"../Entities/historyCommands\"\r\nimport SaveHelper from \"../Helper/SaveHelper\";\r\n\r\nexport default class EntityBase extends ContextItemBase{\r\n constructor(){\r\n super();\r\n this.info = null;\r\n //Meshes\r\n this.drawMeshes1f = [];\r\n this.drawMeshes2f = [];\r\n this.viewMeshes = [];\r\n //Scenes\r\n this.drawScene1f = null;\r\n this.drawScene2f = null;\r\n this.viewScene = null;\r\n //======\r\n this.moduleEntity = null;\r\n this.isGhost = true;\r\n this.isModule = false;\r\n this.parent = null;\r\n this.locatedScene = null;\r\n this.isHistoryWork = false;\r\n }\r\n\r\n getCurrentScene(instance)\r\n {\r\n const scenes = [this.drawScene1f,this.drawScene2f,this.viewScene]\r\n return scenes.find(x=>x.instance === instance);\r\n }\r\n\r\n getCurrentMeshes(instance)\r\n {\r\n const meshes = this.getDrawMeshes().concat(this.viewMeshes);\r\n return meshes.filter(x=>x._scene === instance);\r\n }\r\n\r\n getDrawMeshes()\r\n {\r\n return this.drawMeshes1f.concat(this.drawMeshes2f);\r\n }\r\n\r\n getSceneRootMesh(scene)\r\n {\r\n return null;\r\n }\r\n\r\n getContextEntity()\r\n {\r\n return this;\r\n }\r\n\r\n getSceneMeshes(scene)\r\n {\r\n if(scene.is2d)\r\n {\r\n if(scene.floor === \"1F\")\r\n {\r\n return this.drawMeshes1f;\r\n }\r\n else\r\n {\r\n return this.drawMeshes2f;\r\n }\r\n }\r\n else\r\n {\r\n return this.viewMeshes;\r\n }\r\n }\r\n\r\n snapEntities(sceneEntity, prevPos, x, z, modules)\r\n {\r\n return null;\r\n }\r\n\r\n drawViewMesh()\r\n {\r\n this.viewMeshes.forEach(mesh =>{\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n \r\n m1f.info = mesh.info;\r\n m2f.info = mesh.info;\r\n\r\n if(mesh.material.diffuseTexture)\r\n {\r\n const matName = mesh.material.diffuseTexture.name.split('/').slice(-1)[0];\r\n\r\n const mat1f = this.drawScene1f.instance.getMaterialByName(matName);\r\n if(!mat1f)\r\n {\r\n const oriMat = new BABYLON.StandardMaterial(matName,this.drawScene1f.instance);\r\n const oriTex = new BABYLON.Texture(mesh.material.diffuseTexture.name,this.drawScene1f.instance);\r\n oriMat.diffuseTexture = oriTex;\r\n oriMat.specularColor = new BABYLON.Color3(0, 0, 0); \r\n oriMat.specularPower = 0;\r\n m1f.material = oriMat;\r\n }\r\n else\r\n {\r\n m1f.material = mat1f;\r\n }\r\n\r\n const mat2f = this.drawScene2f.instance.getMaterialByName(matName);\r\n if(!mat2f)\r\n {\r\n const oriMat = new BABYLON.StandardMaterial(matName,this.drawScene2f.instance);\r\n const oriTex = new BABYLON.Texture(mesh.material.diffuseTexture.name,this.drawScene2f.instance);\r\n oriMat.diffuseTexture = oriTex;\r\n oriMat.specularColor = new BABYLON.Color3(0, 0, 0); \r\n oriMat.specularPower = 0;\r\n m2f.material = oriMat;\r\n }\r\n else\r\n {\r\n m2f.material = mat2f;\r\n }\r\n }\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n });\r\n }\r\n\r\n setEnable(instance,value)\r\n {\r\n const meshes = this.getDrawMeshes().concat(this.viewMeshes);\r\n const targets = meshes.filter(x=>x._scene === instance);\r\n targets.forEach(mesh=>{\r\n mesh.setEnabled(value);\r\n })\r\n }\r\n\r\n setPosition(instance,value)\r\n {\r\n const meshes = this.getDrawMeshes();\r\n const targets = meshes.filter(x=>x._scene === instance);\r\n targets.forEach(mesh=>{\r\n mesh.position = value.clone();\r\n })\r\n\r\n this.viewMeshes.forEach(mesh=>{\r\n mesh.position = value.clone();\r\n })\r\n }\r\n\r\n getBoundingBox2d(scene)\r\n {\r\n var boundingBox = null;\r\n if(scene == null)\r\n {\r\n var meshes = this.viewMeshes;\r\n }\r\n else\r\n {\r\n if(scene.floor == \"1F\")\r\n var meshes = this.drawMeshes1f;\r\n else\r\n var meshes = this.drawMeshes2f;\r\n }\r\n\r\n meshes.forEach(mesh => {\r\n const box = mesh.getBoundingInfo().boundingBox;\r\n\r\n var minimumWorld = box.minimumWorld;\r\n var maximumWorld = box.maximumWorld;\r\n minimumWorld.y = 0;\r\n maximumWorld.y = 0;\r\n\r\n if(boundingBox != null)\r\n {\r\n var newMin = BABYLON.Vector3.Minimize(boundingBox.minimum, minimumWorld);\r\n var newMax = BABYLON.Vector3.Maximize(boundingBox.maximum, maximumWorld);\r\n \r\n boundingBox.reConstruct(newMin, newMax);\r\n }\r\n else\r\n boundingBox = new BABYLON.BoundingBox(minimumWorld, maximumWorld);\r\n });\r\n return boundingBox;\r\n }\r\n\r\n getOriginBoundingBox2d(scene)\r\n {\r\n var boundingBox = null;\r\n if(scene.floor == \"1F\")\r\n var meshes = this.drawMeshes1f;\r\n else\r\n var meshes = this.drawMeshes2f;\r\n\r\n meshes.forEach(mesh => {\r\n const box = mesh.getBoundingInfo().boundingBox;\r\n\r\n var minimum = box.minimum.add(mesh.position);\r\n var maximum = box.maximum.add(mesh.position);\r\n minimum.y = 0;\r\n maximum.y = 0;\r\n\r\n if(boundingBox != null)\r\n {\r\n var newMin = BABYLON.Vector3.Minimize(boundingBox.minimum, minimum);\r\n var newMax = BABYLON.Vector3.Maximize(boundingBox.maximum, maximum);\r\n \r\n boundingBox.reConstruct(newMin, newMax);\r\n }\r\n else\r\n boundingBox = new BABYLON.BoundingBox(minimum, maximum);\r\n });\r\n return boundingBox;\r\n }\r\n\r\n getAll2DRootMeshes()\r\n {\r\n return this.getDrawMeshes();\r\n }\r\n getAll3DRootMeshes()\r\n {\r\n return [...this.viewMeshes];\r\n }\r\n\r\n translateEntity(vector, value)\r\n {\r\n this.viewMeshes.concat(this.drawMeshes1f).concat(this.drawMeshes2f).forEach(mesh =>\r\n {\r\n mesh.setAbsolutePosition(mesh.absolutePosition.add(new BABYLON.Vector3(value, value, value).multiply(vector)));\r\n });\r\n }\r\n\r\n scaleEntity(moveVector, scaleVector, moveValue, scaleValue)\r\n {\r\n this.viewMeshes.concat(this.drawMeshes1f).concat(this.drawMeshes2f).forEach(mesh =>\r\n {\r\n var box = mesh.getBoundingInfo().boundingBox;\r\n var size = new BABYLON.Vector3(scaleValue, scaleValue, scaleValue).divide(box.extendSize).multiply(scaleVector);\r\n size.y = 0;\r\n\r\n var tempPos = mesh.absolutePosition.clone(); \r\n var tempParent = mesh.parent;\r\n\r\n var childs = mesh.getChildMeshes();\r\n mesh.setParent(null);\r\n childs.forEach(child => \r\n {\r\n mesh.removeChild(child);\r\n });\r\n\r\n mesh.scaling = mesh.scaling.add(size);\r\n mesh.setParent(tempParent);\r\n childs.forEach(child => \r\n {\r\n mesh.addChild(child);\r\n });\r\n \r\n mesh.setAbsolutePosition(tempPos.add(moveVector.scale(moveValue)));\r\n });\r\n }\r\n\r\n delete(scene, entity)\r\n {\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.DelteCommand(entity,SaveHelper.makeSaveData(entity.moduleEntity)));\r\n entity.deleteEntity(scene, entity);\r\n scene.updateWall();\r\n }\r\n\r\n deleteEntity(scene, entity)\r\n {\r\n entity.moduleEntity.deleteChild(scene, entity);\r\n entity.moduleEntity.isFixed = true;\r\n entity.dispose();\r\n }\r\n}","import EntityBase from \"./EntityBase\";\r\nimport { Vector3, runCoroutine } from \"@babylonjs/core\";\r\nimport VectorHelper from \"../Helper/VectorHelper\"\r\nimport * as GUI from '@babylonjs/gui/2D';\r\nimport CsgHelper from \"../Helper/CsgHelper\";\r\n\r\nexport default class WallEntity extends EntityBase{\r\n constructor()\r\n {\r\n super();\r\n this.wallType = null;\r\n this.startPointMesh = null;\r\n this.endPointMesh = null; \r\n }\r\n\r\n getWallThickness()\r\n {\r\n var wall = this.drawMeshes1f[0];\r\n var box = wall.getBoundingInfo().boundingBox;\r\n if(this.wallType === \"Vertical\")\r\n {\r\n return box.extendSize.x * 2;\r\n }\r\n else\r\n {\r\n return box.extendSize.z * 2;\r\n }\r\n }\r\n \r\n getWorldWallType()\r\n {\r\n let rot = 0;\r\n if(this.moduleEntity?.viewRootMesh.rotation.y)\r\n {\r\n rot = this.moduleEntity.viewRootMesh.rotation.y;\r\n }\r\n\r\n const mesh = this.viewMeshes[0];\r\n const sin = Math.abs(Math.sin(rot).toFixed(6));\r\n const cos = Math.abs(Math.cos(rot).toFixed(6));\r\n const bbox = mesh.getBoundingInfo().boundingBox;\r\n const size = bbox.extendSize.multiply(new Vector3(2,2,2));\r\n const width = size.x * cos + size.z * sin;\r\n const depth = size.z * cos + size.x * sin;\r\n \r\n if(width{\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n m1f.isVisible = false;\r\n m2f.isVisible = false;\r\n \r\n m1f.info = mesh.info;\r\n m2f.info = mesh.info;\r\n\r\n m1f.material = this.drawScene1f.instance.getMaterialByName('WallMat');\r\n m2f.material = this.drawScene2f.instance.getMaterialByName('WallMat');\r\n\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n });\r\n }\r\n\r\n createDrawWallMesh()\r\n {\r\n const boxInfo = this.meshes2d[0].getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let height = boxInfo.boundingBox.extendSize.y * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n\r\n const newWallMesh = BABYLON.MeshBuilder.CreateBox(null,{width:width,height:height,depth:depth},this.drawScene.instance);\r\n newWallMesh.position = this.selectBox2d.originPos.clone();\r\n newWallMesh.originPos = this.selectBox2d.originPos.clone();\r\n\r\n this.meshes2d[0].dispose();\r\n this.meshes2d[0] = newWallMesh;\r\n }\r\n\r\n createViewWallMesh()\r\n {\r\n const boxInfo = this.meshes[0].getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let height = boxInfo.boundingBox.extendSize.y * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n\r\n const newWallMesh = BABYLON.MeshBuilder.CreateBox(null,{width:width,height:height,depth:depth},this.viewScene.instance);\r\n newWallMesh.position = this.selectBox3d.originPos.clone();\r\n newWallMesh.originPos = this.selectBox3d.originPos.clone();\r\n newWallMesh.material = this.meshes[0].material;\r\n\r\n this.meshes[0].dispose();\r\n this.meshes[0] = newWallMesh;\r\n }\r\n\r\n\r\n setWallType()\r\n {\r\n const mesh = this.viewMeshes[0];\r\n const boundingInfo = mesh.getBoundingInfo();\r\n const width = boundingInfo.boundingBox.extendSize.x * 2;\r\n const depth = boundingInfo.boundingBox.extendSize.z * 2;\r\n\r\n if(width\r\n {\r\n advancedTexture.addControl(panel);\r\n })\r\n\r\n this.createToolTip(advancedTexture);\r\n\r\n return this.contextPanels;\r\n }\r\n\r\n initMesh(instance)\r\n {\r\n const d1fIns = this.drawScene1f.instance;\r\n const d2fIns = this.drawScene2f.instance;\r\n\r\n let oldWall = this.viewMeshes[0];\r\n if(instance === d1fIns)\r\n {\r\n oldWall = this.drawMeshes1f[0];\r\n }\r\n else if(instance === d2fIns)\r\n {\r\n oldWall = this.drawMeshes2f[0];\r\n }\r\n\r\n let bbinfo = oldWall.getBoundingInfo();\r\n if(oldWall.originBoundingInfo)\r\n {\r\n bbinfo = oldWall.originBoundingInfo;\r\n }\r\n\r\n const boxInfo = bbinfo;\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let height = boxInfo.boundingBox.extendSize.y * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n\r\n const newWall = BABYLON.MeshBuilder.CreateBox(null,{ width: width, height: height,depth:depth }, instance);\r\n newWall.position = oldWall.position.clone();\r\n newWall.rotation = oldWall.rotation.clone();\r\n newWall.scaling = oldWall.scaling.clone();\r\n newWall.parent = oldWall.parent;\r\n newWall.info = oldWall.info;\r\n newWall.entity = oldWall.entity;\r\n newWall.material = oldWall.material;\r\n newWall.originBoundingInfo = oldWall.originBoundingInfo;\r\n\r\n oldWall.dispose();\r\n if(instance === d1fIns)\r\n {\r\n this.drawMeshes1f[0] = newWall;\r\n }\r\n else if(instance === d2fIns)\r\n {\r\n this.drawMeshes2f[0] = newWall;\r\n }\r\n else\r\n {\r\n this.viewMeshes[0] = newWall;\r\n }\r\n }\r\n\r\n initViewMesh()\r\n {\r\n const oldWall = this.viewMeshes[0];\r\n const boxInfo = oldWall.getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let height = boxInfo.boundingBox.extendSize.y * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n\r\n const newWall = BABYLON.MeshBuilder.CreateBox(null,{ width: width, height: height,depth:depth }, this.viewScene.instance);\r\n newWall.position = oldWall.position.clone();\r\n newWall.rotation = oldWall.rotation.clone();\r\n newWall.scaling = oldWall.scaling.clone();\r\n newWall.parent = oldWall.parent;\r\n newWall.info = oldWall.info;\r\n newWall.entity = oldWall.entity;\r\n newWall.material = oldWall.material;\r\n\r\n oldWall.dispose();\r\n this.viewMeshes[0] = newWall;\r\n }\r\n\r\n initDraw1fMesh()\r\n {\r\n const oldWall = this.drawMeshes1f[0];\r\n const boxInfo = oldWall.getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let height = boxInfo.boundingBox.extendSize.y * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n\r\n const newWall = BABYLON.MeshBuilder.CreateBox(null,{ width: width, height: height,depth:depth }, this.drawScene1f.instance);\r\n newWall.position = oldWall.position.clone();\r\n newWall.rotation = oldWall.rotation.clone();\r\n newWall.scaling = oldWall.scaling.clone();\r\n newWall.parent = oldWall.parent;\r\n newWall.entity = oldWall.entity;\r\n newWall.info = oldWall.info;\r\n newWall.material = oldWall.material;\r\n\r\n oldWall.dispose();\r\n this.drawMeshes1f[0] = newWall;\r\n }\r\n\r\n initDraw2fMesh()\r\n {\r\n const oldWall = this.drawMeshes2f[0];\r\n const boxInfo = oldWall.getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let height = boxInfo.boundingBox.extendSize.y * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n\r\n const newWall = BABYLON.MeshBuilder.CreateBox(null,{ width: width, height: height,depth:depth }, this.drawScene2f.instance);\r\n newWall.position = oldWall.position.clone();\r\n newWall.rotation = oldWall.rotation.clone();\r\n newWall.scaling = oldWall.scaling.clone();\r\n newWall.parent = oldWall.parent;\r\n newWall.entity = oldWall.entity;\r\n newWall.info = oldWall.info;\r\n newWall.material = oldWall.material;\r\n\r\n oldWall.dispose();\r\n this.drawMeshes2f[0] = newWall;\r\n }\r\n\r\n // minx, minz, maxx, maxz, center로만 판별\r\n snapEntities(sceneEntity, prevPos, x, z, modules)\r\n {\r\n var filteredModules = modules.filter(o => o.locatedScene == sceneEntity);\r\n\r\n var mesh = this.viewMeshes[0];\r\n var box = mesh.getBoundingInfo().boundingBox;\r\n var boxes = [new BABYLON.BoundingBox(new BABYLON.Vector3(x - box.extendSizeWorld.x, 0, z - box.extendSizeWorld.z), new BABYLON.Vector3(x + box.extendSizeWorld.x, 0, z + box.extendSizeWorld.z))];\r\n\r\n var availableAxis = [];\r\n if(this.getWorldWallType().type == 'Vertical')\r\n availableAxis.push('z');\r\n else\r\n availableAxis.push('x');\r\n\r\n return this.getSnapData(boxes, filteredModules.flatMap(o => o.Entities).filter(o => o != this), sceneEntity, prevPos, x, z, availableAxis);\r\n }\r\n\r\n moveNearEntity(resultPos, originPos)\r\n {\r\n var viewMesh = this.viewMeshes[0];\r\n\r\n var diff = resultPos.subtract(originPos);\r\n diff.y = 0;\r\n\r\n var offset = diff.length();\r\n var dir = BABYLON.Vector3.Normalize(diff);\r\n var internalDir = BABYLON.Vector3.TransformNormal(dir, viewMesh.parent.getWorldMatrix());\r\n\r\n var wallBox = viewMesh.getBoundingInfo().boundingBox;\r\n var boxMin = BABYLON.Vector3.Minimize(originPos.add(wallBox.extendSizeWorld), originPos.subtract(wallBox.extendSizeWorld));\r\n var boxMax = BABYLON.Vector3.Maximize(originPos.add(wallBox.extendSizeWorld), originPos.subtract(wallBox.extendSizeWorld));\r\n\r\n boxMin.y = 0;\r\n boxMax.y = 0;\r\n\r\n var box = new BABYLON.BoundingBox(boxMin, boxMax);\r\n var moduleEntity = this.moduleEntity;\r\n var resultLine = this.getWorldWallLine();\r\n resultLine.start = resultLine.start.add(dir.scale(offset));\r\n resultLine.end = resultLine.end.add(dir.scale(offset));\r\n\r\n var deletedItems = [];\r\n\r\n // 간섭되는 내벽 위치 조절 필요\r\n moduleEntity.Walls.forEach(target =>\r\n {\r\n var targetBox = target.getBoundingBox2d(moduleEntity.locatedScene);\r\n var targetLine = target.getWorldWallLine();\r\n var targetDir = BABYLON.Vector3.Normalize(targetLine.end.subtract(targetLine.start));\r\n if(target.info.typeName.includes(\"Interior\"))\r\n {\r\n if(VectorHelper.isParallel(targetDir, dir))\r\n {\r\n var projectPoint = VectorHelper.calcNearestPointOnLine(resultLine.start, resultLine.end, targetLine.start);\r\n if(BABYLON.Vector3.Distance(projectPoint, resultLine.start) > 0.01 && BABYLON.Vector3.Distance(projectPoint, resultLine.end) > 0.01)\r\n {\r\n // 약간의 공차 필요\r\n var min = BABYLON.Vector3.Minimize(targetBox.minimum, targetBox.minimum.add(dir.scale(0.01)));\r\n var max = BABYLON.Vector3.Maximize(targetBox.maximum, targetBox.maximum.add(dir.scale(0.01)));\r\n\r\n if(box.intersectsMinMax(min, max))\r\n {\r\n var minValue = BABYLON.Vector3.Dot(min, targetDir);\r\n var maxValue = BABYLON.Vector3.Dot(max, targetDir);\r\n var posValue = BABYLON.Vector3.Dot(resultPos, targetDir);\r\n if(minValue <= posValue && posValue <= maxValue)\r\n {\r\n if(Math.abs(maxValue - minValue - offset - BABYLON.Vector3.Dot(wallBox.extendSizeWorld, targetDir)) <= 0.02)\r\n {\r\n deletedItems.push(target);\r\n }\r\n else\r\n {\r\n target.scaleEntity(dir, internalDir, offset / 2, offset / 2);\r\n }\r\n }\r\n else\r\n {\r\n target.scaleEntity(dir, internalDir, offset / 2, offset / 2); \r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n var wall = this;\r\n\r\n moduleEntity.Doors.concat(moduleEntity.Windows).concat(moduleEntity.Openings).forEach(item =>\r\n {\r\n if(item.parent == wall)\r\n {\r\n item.translateEntity(dir, offset);\r\n\r\n item.crushMesh.position = item.viewMeshes.find(x=>x.info.ctgrName === 'Box').position.clone();\r\n item.crushMesh1f.position = item.drawMeshes1f.find(x=>x.info.ctgrName === 'Box').position.clone();\r\n item.crushMesh2f.position = item.drawMeshes2f.find(x=>x.info.ctgrName === 'Box').position.clone();\r\n \r\n const wPos = this.viewMeshes[0].position;\r\n if(this.wallType === 'Horizontal')\r\n {\r\n item.crushMesh.position.z = wPos.z;\r\n item.crushMesh1f.position.z = wPos.z;\r\n item.crushMesh2f.position.z = wPos.z;\r\n }\r\n else\r\n {\r\n item.crushMesh.position.x = wPos.x;\r\n item.crushMesh1f.position.x = wPos.x;\r\n item.crushMesh2f.position.x = wPos.x;\r\n }\r\n }\r\n });\r\n\r\n deletedItems.forEach(item =>\r\n {\r\n item.deleteEntity(moduleEntity.locatedScene, item); \r\n });\r\n }\r\n\r\n setPosition(instance, value)\r\n {\r\n var viewMesh = this.viewMeshes[0];\r\n\r\n var pos = value.clone();\r\n if(this.getWorldWallType().type == 'Vertical')\r\n {\r\n pos.z = viewMesh.absolutePosition.z;\r\n }\r\n else\r\n {\r\n pos.x = viewMesh.absolutePosition.x;\r\n }\r\n\r\n this.drawMeshes1f.forEach(mesh =>\r\n {\r\n var pos1f = pos.clone();\r\n pos1f.y = mesh.absolutePosition.y;\r\n mesh.setAbsolutePosition(pos1f); \r\n });\r\n\r\n this.drawMeshes2f.forEach(mesh =>\r\n {\r\n var pos2f = pos.clone();\r\n pos2f.y = mesh.absolutePosition.y;\r\n mesh.setAbsolutePosition(pos2f); \r\n });\r\n\r\n var viewpos = pos.clone();\r\n viewpos.y = viewMesh.absolutePosition.y;\r\n viewMesh.setAbsolutePosition(viewpos);\r\n }\r\n\r\n createCenterLine(instance)\r\n {\r\n const mesh = this.viewMeshes[0];\r\n const points = this.getWorldWallLine();\r\n points.start.y = 9;\r\n points.end.y = 9;\r\n const line = [points.start, points.end];\r\n\r\n const width = mesh.getBoundingInfo().boundingBox.extendSize.x * 2;\r\n const height = mesh.getBoundingInfo().boundingBox.extendSize.y * 2;\r\n \r\n let dashNb = 20;\r\n const dashRate = 20;\r\n if(width > height)\r\n {\r\n dashNb = width*dashRate;\r\n }\r\n else\r\n {\r\n dashNb = height*dashRate;\r\n }\r\n\r\n const dashLine = BABYLON.MeshBuilder.CreateDashedLines(\"dl\", {points: line, dashNb: dashNb,dashSize: 1, gapSize: 1}, instance);\r\n dashLine.color = BABYLON.Color3.Green();\r\n\r\n return dashLine;\r\n }\r\n\r\n showCenterVertex(isShow,instance)\r\n {\r\n if(this.startPoint)\r\n {\r\n this.startPoint.dispose();\r\n }\r\n\r\n if(this.endPointMesh)\r\n {\r\n this.endPointMesh.dispose();\r\n }\r\n\r\n if(isShow)\r\n {\r\n const wallPointMat = instance.getMaterialByName('WallOtherPointMat');\r\n const diameter = 0.05;\r\n const points = this.getWorldWallLine();\r\n points.start.y = 9;\r\n points.end.y = 9;\r\n this.startPointMesh = BABYLON.MeshBuilder.CreateSphere('wallPoint',{diameter: diameter, segments: 16},instance);\r\n this.startPointMesh.position = points.start.clone();\r\n this.startPointMesh.material = wallPointMat;\r\n\r\n this.endPointMesh = BABYLON.MeshBuilder.CreateSphere('wallPoint',{diameter: diameter, segments: 16},instance);\r\n this.endPointMesh.position = points.end.clone();\r\n this.endPointMesh.material = wallPointMat;\r\n }\r\n }\r\n\r\n getAll2DRootMeshes()\r\n {\r\n return [this.draw1fRootMesh, this.draw2fRootMesh];\r\n }\r\n getAll3DRootMeshes()\r\n {\r\n return [this.viewRootMesh];\r\n }\r\n\r\n deleteEntity(scene, entity)\r\n {\r\n var module = entity.moduleEntity;\r\n var deleteItems = module.Doors.concat(module.Windows).concat(module.Openings).filter(o => o.parent == entity);\r\n deleteItems.forEach(item =>\r\n {\r\n item.deleteEntity(scene, item); \r\n });\r\n\r\n module.deleteChild(scene, entity);\r\n module.isFixed = true;\r\n entity.dispose();\r\n }\r\n\r\n makeTempMesh(w,c)\r\n {\r\n if(w.info.name?.includes('Unit') || w.info.name?.includes('Tile'))\r\n {\r\n return;\r\n }\r\n\r\n const wBox = w.getBoundingInfo().boundingBox;\r\n \r\n const wWidth = wBox.extendSizeWorld.x * 2;\r\n const wDepth = wBox.extendSizeWorld.z * 2;\r\n\r\n let rot = w.entity.moduleEntity.viewRootMesh.rotation.y;\r\n \r\n const cBox = c.getBoundingInfo().boundingBox;\r\n const cWidth = cBox.extendSize.x * 2;\r\n const cHeight = cBox.extendSize.y * 2;\r\n const cDepth = cBox.extendSize.z * 2;\r\n\r\n const lengh = 0.01;\r\n \r\n if(c.entity.info.parentName.includes('Unit'))\r\n {\r\n return;\r\n }\r\n \r\n if(this.getWorldWallType().type == 'Vertical')\r\n {\r\n const temp = BABYLON.MeshBuilder.CreateBox('backMesh',\r\n { width: wWidth, height: cHeight,depth: cWidth}, w._scene);\r\n temp.parent = w;\r\n temp.material = null;\r\n temp.material = w._scene.getMaterialByName('WallBackMat'); // WallBackMat\r\n temp.scaling.z = (cWidth+lengh)/cWidth\r\n temp.scaling.y = 1.01\r\n temp.rotation.y = rot;\r\n const pos = c.getAbsolutePosition().clone();\r\n temp.parent = w;\r\n temp.setAbsolutePosition(pos);\r\n temp.position = temp.position.multiply(new Vector3(Math.abs(Math.sin(rot).toFixed(2)),1,Math.abs(Math.cos(rot).toFixed(2))))\r\n CsgHelper.initialMatrix(temp)\r\n temp.flipFaces(true);\r\n temp.showBoundingBox = false;\r\n temp.entity = this;\r\n temp.w = w;\r\n } \r\n else\r\n {\r\n const temp = BABYLON.MeshBuilder.CreateBox('backMesh',\r\n { width: cWidth, height: cHeight,depth: wDepth}, w._scene);\r\n temp.parent = w;\r\n temp.material = null;\r\n temp.material = w._scene.getMaterialByName('WallBackMat');\r\n temp.scaling.x = (cWidth+lengh)/cWidth\r\n temp.scaling.y = 1.01\r\n temp.rotation.y = rot;\r\n const pos = c.getAbsolutePosition().clone();\r\n temp.parent = w;\r\n temp.setAbsolutePosition(pos);\r\n temp.position = temp.position.multiply(new Vector3(Math.abs(Math.cos(rot).toFixed(2)),1,Math.abs(Math.sin(rot).toFixed(2))))\r\n CsgHelper.initialMatrix(temp)\r\n temp.flipFaces(true);\r\n temp.showBoundingBox = false;\r\n temp.entity = this;\r\n temp.w = w;\r\n }\r\n }\r\n\r\n dispose()\r\n {\r\n for(let m of this.drawMeshes1f)\r\n {\r\n m.dispose();\r\n }\r\n for(let m of this.drawMeshes2f)\r\n {\r\n m.dispose();\r\n }\r\n for(let m of this.viewMeshes)\r\n {\r\n m.dispose();\r\n }\r\n\r\n if(this.moduleEntity)\r\n {\r\n this.moduleEntity.Entities = this.moduleEntity.Entities.filter(x => x != this);\r\n this.moduleEntity.Walls = this.moduleEntity.Walls.filter(x => x != this);\r\n }\r\n }\r\n}","import { Vector3 } from \"@babylonjs/core\";\r\nimport WallEntity from \"../Entities/WallEntity\";\r\n\r\nexport default class SaveHelper\r\n{\r\n static makeSaveData(moduleEnt)\r\n {\r\n const walls = moduleEnt.Walls;\r\n const wallDatas = this.makeWallData(walls);\r\n const windows = moduleEnt.Windows;\r\n const windowDatas = this.makeWindowData(windows);\r\n const openings = moduleEnt.Openings;\r\n const openingDatas = this.makeOpeningData(openings);\r\n const units = moduleEnt.Units;\r\n const unitDatas = this.makeUnitData(units);\r\n const doors = moduleEnt.Doors;\r\n const doorDatas = this.makeDoorData(doors);\r\n\r\n\r\n const mData = {\r\n name : moduleEnt.info.name,\r\n position : moduleEnt.viewRootMesh.position.clone(),\r\n rotation : moduleEnt.viewRootMesh.rotation.y,\r\n scaling : moduleEnt.viewRootMesh.scaling.clone(),\r\n size : moduleEnt.getSize(),\r\n info : moduleEnt.info,\r\n wallexPos : moduleEnt.Walls.filter(x=>x.info.name.includes('Exterior')).map(x=>x.viewMeshes[0].position.clone()),\r\n wallexScailing : moduleEnt.Walls.filter(x=>x.info.name.includes('Exterior')).map(x=>x.viewMeshes[0].scaling.clone()),\r\n wallRailPos : moduleEnt.Walls.filter(x=>x.info.name.includes('Rail')).map(x=>x.viewMeshes.map(y=>y.position.clone())),\r\n wallRailDrawPos : moduleEnt.Walls.filter(x=>x.info.name.includes('Rail')).map(x=>x.drawMeshes1f.map(y=>y.position.clone())),\r\n wallRailNmData : moduleEnt.Walls.filter(x=>x.info.name.includes('Rail')).map(x=>x.info.name),\r\n walls : wallDatas,\r\n windows : windowDatas,\r\n openings : openingDatas,\r\n units : unitDatas,\r\n doors : doorDatas,\r\n guid : moduleEnt.guid\r\n }\r\n //moduleEnt.Walls.filter(x=>x.info.typeName.includes('Exterior')).map(x=>x.viewMeshes[0].position),\r\n return mData;\r\n }\r\n\r\n static makeWallData(walls)\r\n {\r\n const result = [];\r\n for(let w of walls)\r\n {\r\n if(w.info?.typeName.includes(\"Exterior\") || w.info?.typeName.includes(\"Rail\"))\r\n continue;\r\n const mesh = w.viewMeshes[0];\r\n const bb = mesh.getBoundingInfo().boundingBox;\r\n const width = bb.extendSize.x * 2;\r\n const depth = bb.extendSize.z * 2;\r\n\r\n const data = {\r\n position : mesh.position.clone(),\r\n width : width,\r\n depth : depth,\r\n info : w.info,\r\n type : w.wallType,\r\n scale : mesh.scaling.clone(),\r\n }\r\n\r\n result.push(data);\r\n }\r\n return result;\r\n }\r\n\r\n static makeWindowData(windows)\r\n {\r\n const result = [];\r\n for(let w of windows)\r\n {\r\n const positions = w.viewMeshes.map(x => x.position.clone());\r\n const simbol1fPositions = w.drawMeshes1f.map(x => x.position.clone());\r\n const simbol2fPositions = w.drawMeshes2f.map(x => x.position.clone());\r\n const rotations = w.viewMeshes.map(x => x.rotation.clone());\r\n const simbol1fRotations = w.drawMeshes1f.map(x => x.rotation.clone());\r\n const simbol2fRotations = w.drawMeshes2f.map(x => x.rotation.clone());\r\n const scalings = w.viewMeshes.map(x => x.scaling.clone());\r\n const simbol1fScalings = w.drawMeshes1f.map(x => x.scaling.clone());\r\n const simbol2fScalings = w.drawMeshes2f.map(x => x.scaling.clone());\r\n\r\n const data = {\r\n positions : positions,\r\n simbol1fPositions : simbol1fPositions,\r\n simbol2fPositions : simbol2fPositions,\r\n rotations : rotations,\r\n simbol1fRotations : simbol1fRotations,\r\n simbol2fRotations : simbol2fRotations,\r\n scalings : scalings,\r\n simbol1fScalings : simbol1fScalings,\r\n simbol2fScalings : simbol2fScalings,\r\n info : w.info\r\n }\r\n\r\n result.push(data);\r\n }\r\n return result;\r\n }\r\n\r\n static makeOpeningData(openings)\r\n {\r\n const result = [];\r\n for(let o of openings)\r\n {\r\n const mesh = o.viewMeshes[0];\r\n const position = mesh.position.clone();\r\n const rotation = mesh.rotation.clone();\r\n const bb = mesh.getBoundingInfo().boundingBox;\r\n const width = bb.extendSize.x * 2;\r\n const height = bb.extendSize.y * 2;\r\n const depth = bb.extendSize.z * 2;\r\n\r\n const data = {\r\n width : width.toFixed(4),\r\n height : height.toFixed(4),\r\n depth : depth.toFixed(4),\r\n position : position,\r\n rotation : rotation,\r\n info : o.info\r\n }\r\n result.push(data)\r\n }\r\n \r\n return result;\r\n }\r\n\r\n static makeUnitData(units)\r\n {\r\n const result = [];\r\n for(let o of units)\r\n {\r\n const data ={\r\n info : o.info,\r\n position : o.viewRootMesh.position.clone(),\r\n rotation : o.viewRootMesh.rotation.clone(),\r\n scaling : o.viewRootMesh.scaling.clone(),\r\n floorPenetrate : o.floorPenetrate,\r\n enableDoor : o.enableDoor\r\n }\r\n\r\n result.push(data)\r\n }\r\n\r\n return result;\r\n }\r\n\r\n static makeDoorData(doors)\r\n {\r\n const result = [];\r\n for(let o of doors)\r\n {\r\n const positions = o.viewMeshes.map(x => x.position.clone());\r\n const rotations = o.viewMeshes.map(x => x.rotation.clone());\r\n const scaling = o.viewMeshes.map(x => x.scaling.clone());\r\n\r\n const simbol1fPositions = o.drawMeshes1f.map(x => x.position.clone());\r\n const simbol2fPositions = o.drawMeshes2f.map(x => x.position.clone());\r\n\r\n const simbol1fRotations = o.drawMeshes1f.map(x => x.rotation.clone());\r\n const simbol2fRotations = o.drawMeshes2f.map(x => x.rotation.clone());\r\n\r\n const simbol1Scaling = o.drawMeshes1f.map(x => x.scaling.clone());\r\n const simbol2Scaling = o.drawMeshes2f.map(x => x.scaling.clone());\r\n\r\n const data = {\r\n positions : positions,\r\n rotations : rotations,\r\n scaling : scaling,\r\n simbol1fPositions : simbol1fPositions,\r\n simbol2fPositions : simbol2fPositions,\r\n simbol1fRotations : simbol1fRotations,\r\n simbol2fRotations : simbol2fRotations,\r\n simbol1Scaling : simbol1Scaling,\r\n simbol2Scaling : simbol2Scaling,\r\n info : o.info\r\n }\r\n\r\n result.push(data);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n static loadWall(module,walls)\r\n {\r\n for(let wData of walls)\r\n {\r\n const ent = new WallEntity();\r\n ent.drawScene1f = module.drawScene1f\r\n ent.drawScene2f = module.drawScene2f\r\n ent.viewScene = module.viewScene\r\n \r\n const d1Ins = ent.drawScene1f.instance;\r\n const d2Ins = ent.drawScene2f.instance;\r\n const viewIns = ent.viewScene.instance;\r\n \r\n const d1Mesh = BABYLON.MeshBuilder.CreateBox(null,{width : wData.width, height : 2.707, depth : wData.depth},d1Ins);\r\n const d2Mesh = BABYLON.MeshBuilder.CreateBox(null,{width : wData.width, height : 2.707, depth : wData.depth},d2Ins);\r\n const viewMesh = BABYLON.MeshBuilder.CreateBox(null,{width : wData.width, height : 2.707, depth : wData.depth},viewIns);\r\n\r\n d1Mesh.material = d1Ins.getMaterialByName('WallMat');\r\n d2Mesh.material = d2Ins.getMaterialByName('WallMat');\r\n viewMesh.material = viewIns.getMaterialByName('WallMat');\r\n\r\n d1Mesh.position = new Vector3(wData.position._x,wData.position._y,wData.position._z)\r\n d2Mesh.position = new Vector3(wData.position._x,wData.position._y,wData.position._z)\r\n viewMesh.position = new Vector3(wData.position._x,wData.position._y,wData.position._z)\r\n\r\n d1Mesh.scaling = new Vector3(wData.scale._x,wData.scale._y,wData.scale._z);\r\n d2Mesh.scaling = new Vector3(wData.scale._x,wData.scale._y,wData.scale._z);\r\n viewMesh.scaling = new Vector3(wData.scale._x,wData.scale._y,wData.scale._z);\r\n\r\n d1Mesh.parent = module.draw1fRootMesh;\r\n d2Mesh.parent = module.draw2fRootMesh;\r\n viewMesh.parent = module.viewRootMesh;\r\n\r\n d1Mesh.entity = ent;\r\n d2Mesh.entity = ent;\r\n viewMesh.entity = ent;\r\n if(wData.info.parentName.includes('Floor'))\r\n {\r\n const p = module.Floors.find(x=>x.info.name === wData.info.parentName);\r\n d1Mesh.parent = p.drawMeshes1f[0];\r\n d2Mesh.parent = p.drawMeshes2f[0];\r\n viewMesh.parent = p.viewMeshes[0];\r\n }\r\n\r\n ent.info = {...wData.info};\r\n ent.moduleEntity = module;\r\n ent.drawMeshes1f.push(d1Mesh);\r\n ent.drawMeshes2f.push(d2Mesh);\r\n ent.viewMeshes.push(viewMesh);\r\n\r\n d1Mesh.info = ent.info;\r\n d2Mesh.info = ent.info;\r\n viewMesh.info = ent.info;\r\n\r\n ent.wallType = wData.type;\r\n\r\n module.Walls.push(ent);\r\n module.Entities.push(ent);\r\n }\r\n }\r\n\r\n}","import { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport VectorHelper from \"../Helper/VectorHelper\"\r\nimport MeshHelper from \"../Helper/MeshHelper\"\r\nimport { AdvancedDynamicTexture,TextBlock,Image } from '@babylonjs/gui/2D';\r\nimport * as BABYLON from \"@babylonjs/core/Legacy/legacy\";\r\nimport SceneBase from \"./SceneBase\"\r\nimport Enumerable from 'linq'\r\nimport CsgHelper from \"../Helper/CsgHelper\"\r\nimport * as Material from '@babylonjs/materials'\r\nimport * as clipperLib from \"js-angusj-clipper/web\";\r\nimport * as earcut from \"earcut\";\r\nimport SaveHelper from \"../Helper/SaveHelper\";\r\nimport * as HistoryCommand from \"../Entities/historyCommands\"\r\n\r\nexport default class Scene2d extends SceneBase{\r\n constructor(canvas,viewer,floor)\r\n {\r\n super(canvas,viewer);\r\n this.zoomRate = 10;\r\n this.is2d = true;\r\n this.floor = floor;\r\n this.createEntity = null;\r\n this.mousePosition = Vector3.Zero();\r\n this.snapLines = [];\r\n this.prevSnapData = null;\r\n this.floorText = null;\r\n this.scaileBar = null;\r\n this.scaileTests = [];\r\n this.engine.setHardwareScalingLevel(1);\r\n this.engine.enableOfflineSupport = false;\r\n this.doorDir = 1;\r\n this.isAddWallMode = false;\r\n this.advancedTexture = AdvancedDynamicTexture.CreateFullscreenUI(\"UI\");\r\n this.movingInter = false;\r\n this.Set2dMode();\r\n }\r\n\r\n getLocatedModule()\r\n {\r\n return this.viewer.$SceneLoader.EntityLoader.modules.filter(x=>x.locatedScene === this);\r\n }\r\n\r\n Set2dMode()\r\n {\r\n const camera = this.instance.getCameraByName(\"Camera\")\r\n camera.position = new Vector3(0,10,0);\r\n camera.mode = BABYLON.Camera.ORTHOGRAPHIC_CAMERA;\r\n camera.lowerAlphaLimit = Math.PI * 3 / 2;\r\n camera.upperAlphaLimit = Math.PI * 3 / 2;\r\n camera.lowerBetaLimit = 0;\r\n camera.upperBetaLimit = 0;\r\n this.cameraRender(camera);\r\n camera.update();\r\n\r\n this.setEvents();\r\n this.setUI();\r\n }\r\n\r\n setUI()\r\n {\r\n this.setFloorText();\r\n this.setScaileBar();\r\n }\r\n\r\n setFloorText()\r\n {\r\n if(!this.floorText)\r\n {\r\n this.floorText = new TextBlock();\r\n }\r\n let areaMm = 0;\r\n let area = 0;\r\n\r\n this.getLocatedModule().forEach(m=>{\r\n const mArea = m.getArea(false);\r\n areaMm += Number(mArea.areaMm);\r\n area += Number(mArea.area);\r\n })\r\n\r\n this.floorText.text = `${this.floor[0]}층`;\r\n if(this.viewer.$SceneLoader.isShowArea)\r\n {\r\n this.floorText.text += ` 바닥면적 : ${areaMm.toFixed(2)}㎡ (${area.toFixed(1)}평)`;\r\n }\r\n this.floorText.color = \"rgba(0, 0, 0, 0.75)\";\r\n this.floorText.fontSize = 18;\r\n this.floorText.top = `-${this.canvasElement.clientHeight/2 - 22}rem`;\r\n this.floorText.left = `-${this.canvasElement.clientWidth/2 - this.floorText.text.length * 6}rem`;\r\n if(!this.viewer.$SceneLoader.isShowArea)\r\n {\r\n this.floorText.left = `-${this.canvasElement.clientWidth/2 - this.floorText.text.length * 16}rem`;\r\n }\r\n this.advancedTexture.addControl(this.floorText);\r\n }\r\n\r\n setScaileBar()\r\n {\r\n if(!this.scaileBar)\r\n {\r\n const svg = `\r\n \r\n \r\n \r\n \r\n `\r\n this.scaileBar = new Image('image', 'data:image/svg+xml;base64,' + btoa(svg));\r\n this.advancedTexture.addControl(this.scaileBar);\r\n \r\n const fontSize = `12px`;\r\n\r\n for(let i=0; i<4; i++)\r\n {\r\n const t = new TextBlock();\r\n t.text = i;\r\n t.fontSize = fontSize;\r\n t.color = \"rgba(0, 0, 0, 0.80)\";\r\n if(i === 3)\r\n {\r\n t.text += 'm'\r\n }\r\n this.scaileTests.push(t)\r\n }\r\n\r\n this.scaileTests.forEach(t=>{\r\n this.advancedTexture.addControl(t);\r\n })\r\n }\r\n\r\n const cWidth = this.canvasElement.clientWidth;\r\n const cHeight = this.canvasElement.clientHeight;\r\n const wRate = cWidth/cHeight;\r\n const wDump = (this.zoomRate * wRate - this.zoomRate)/2;\r\n\r\n const regex = /[^0-9.]/g;\r\n const tempWidth = Math.abs(this.zoomRate + wDump)*2;\r\n \r\n this.scaileBar.width = `${(3/tempWidth)}`;\r\n this.scaileBar.height = '8px';\r\n\r\n const width = Number(this.scaileBar.width.replace(regex,\"\"));\r\n this.scaileBar.top = `${this.canvasElement.clientHeight/2 - 30}rem`;\r\n this.scaileBar.left = `${-48 + width/2}%`;\r\n this.scaileBar.isVisible = this.viewer.$SceneLoader.isShowScailBar;\r\n\r\n for(let i = 0; i<4; i++)\r\n {\r\n const t = this.scaileTests[i];\r\n t.top = `${this.canvasElement.clientHeight/2 - 46}rem`;\r\n t.left = `${-48 + (width/3)*i -0.2}%`;\r\n t.isVisible = this.viewer.$SceneLoader.isShowScailBar;\r\n if(t.text.length > 1)\r\n {\r\n t.left = `${-48 + (width/3)*i + 0.6}%`;\r\n }\r\n }\r\n }\r\n\r\n cameraRender(camera)\r\n {\r\n this.engine.resize();\r\n\r\n const width = this.canvasElement.clientWidth;\r\n const height = this.canvasElement.clientHeight;\r\n const wRate = width/height;\r\n const hRate = height/width;\r\n const wDump = (this.zoomRate * wRate - this.zoomRate)/2;\r\n const hDump = (this.zoomRate * hRate - this.zoomRate)/2;\r\n camera.orthoTop = this.zoomRate + hDump; // 카메라 상단 경계\r\n camera.orthoBottom = -1*this.zoomRate - hDump; // 카메라 하단 경계\r\n camera.orthoLeft = -1*this.zoomRate - wDump; // 카메라 왼쪽 경계\r\n camera.orthoRight = this.zoomRate + wDump; // 카메라 오른쪽 경계\r\n this.setUI();\r\n }\r\n\r\n setEvents()\r\n {\r\n this.instance.onPointerObservable.add(evt =>\r\n {\r\n let event = evt.event;\r\n let delta = event.wheelDelta || -event.detail;\r\n this.handleMouseWheel(delta);\r\n }, BABYLON.PointerEventTypes.POINTERWHEEL);\r\n this.instance.onPointerDown = (evt, pickResult) =>{ this.onPointerDown(evt, pickResult); };\r\n this.instance.onPointerUp = (evt, pickResult) =>{ this.onPointerUp(evt, pickResult); };\r\n this.instance.onPointerMove = (evt) =>{ this.onPointerMove(evt); };\r\n this.canvasElement.addEventListener('mouseleave', event => {\r\n if(this.createEntity)\r\n {\r\n this.createEntity.setEnable(this.instance,false);\r\n this.removeSnapLines();\r\n }\r\n });\r\n\r\n // this.instance.onBeforeRenderObservable.add(() => {\r\n // this.updateViewWall(this.instance);\r\n // });\r\n }\r\n\r\n onPointerDown(evt, pickResult)\r\n {\r\n if(evt.button == 0) // 마우스 왼쪽 클릭\r\n { \r\n \r\n this.pointerDownPosition = new Vector3(this.mousePosition.x, 0, this.mousePosition.z);\r\n if(this.floor === '2F')\r\n {\r\n this.pointerDownPosition.y = 3.1;\r\n }\r\n if(this.selectedEntity)\r\n {\r\n var target = pickResult.pickedMesh.entity;\r\n \r\n if(target)\r\n {\r\n if(target.info.ctgrName == \"Floor\")\r\n target = target.moduleEntity;\r\n\r\n if(this.selectedEntity == target)\r\n {\r\n var movingMesh = this.selectedEntity.getSceneRootMesh(this);\r\n const moduleEnt = this.selectedEntity.isModule ? this.selectedEntity : this.selectedEntity.moduleEntity;\r\n this.viewer.$SceneLoader.makeHistory(new HistoryCommand.MoveCommand(moduleEnt,SaveHelper.makeSaveData(moduleEnt)));\r\n \r\n if(movingMesh != null)\r\n {\r\n this.selectedEntity.disposeContextPanel();\r\n this.movingMesh = movingMesh;\r\n this.pointerDownModulePosition = this.selectedEntity.viewRootMesh.absolutePosition.clone();\r\n }\r\n else\r\n {\r\n var pickMesh = pickResult.pickedMesh;\r\n if(pickMesh.info?.ctgrName)\r\n {\r\n if(pickMesh.info.ctgrName.includes('Wall') && pickMesh.info.name.includes('Exterior'))\r\n return;\r\n\r\n this.selectedEntity.disposeContextPanel();\r\n this.movingMesh = pickMesh;\r\n this.pointerDownModulePosition = pickMesh.absolutePosition.clone();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else\r\n {\r\n var target = pickResult.pickedMesh;\r\n //console.log(target) test용\r\n }\r\n }\r\n }\r\n\r\n onPointerUp(evt, pickResult)\r\n {\r\n if(evt.button == 0) // 마우스 왼쪽 클릭\r\n {\r\n this.pointerDownPosition = null;\r\n this.prevSnapData = null;\r\n\r\n if(this.createEntity)\r\n {\r\n const otherScene = this.viewer.$SceneLoader.drawScenes.find(x => x!=this);\r\n if(this.createEntity.isModule)\r\n {\r\n this.moduleMouseUpEvent();\r\n }\r\n else{\r\n if(this.createEntity?.info.ctgrName === 'Window')\r\n {\r\n if(!this.windowMouseUpEvnet())\r\n {\r\n return;\r\n }\r\n }\r\n else if(this.createEntity?.info.ctgrName === 'Door')\r\n {\r\n if(!this.doorMouseUpEvent())\r\n {\r\n return;\r\n }\r\n }\r\n else if(this.createEntity?.info.ctgrName === 'Unit')\r\n {\r\n const rootMesh = this.floor === '1F' ? this.createEntity.draw1fRootMesh : this.createEntity.draw2fRootMesh;\r\n const box = this.createEntity.drawMeshes1f.concat(this.createEntity.drawMeshes2f).filter(x=>x._scene === this.instance).find(x=>x.info.ctgrName === 'Box' && x.info.parentName.replace('-','').includes(this.createEntity.info.name));\r\n if(box.material.name === 'greenBoxMaterial')\r\n {\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMesh =this.instance.pick(this.instance.pointerX, this.instance.pointerY).pickedMesh;\r\n this.createEntity.setEnable(this.instance,true)\r\n const moduleEntity = pickedMesh.entity?.moduleEntity;\r\n if(moduleEntity)\r\n {\r\n box.isVisible = false;\r\n let pos = rootMesh.position.clone();\r\n pos.y = 3.1;\r\n let otherPos = pos.clone();\r\n otherPos.y = 0;\r\n\r\n this.createEntity.setPosition(this.instance,pos);\r\n\r\n const viewWorldMatrix = this.createEntity.viewRootMesh.getWorldMatrix().clone();\r\n const d1fWorldMatrix = this.createEntity.draw1fRootMesh.getWorldMatrix().clone();\r\n const d2fWorldMatrix = this.createEntity.draw2fRootMesh.getWorldMatrix().clone();\r\n ///\r\n this.createEntity.viewRootMesh.parent = moduleEntity.viewRootMesh;\r\n this.createEntity.draw1fRootMesh.parent = moduleEntity.draw1fRootMesh;\r\n this.createEntity.draw2fRootMesh.parent = moduleEntity.draw2fRootMesh;\r\n ////\r\n this.createEntity.viewRootMesh.computeWorldMatrix(true);\r\n this.createEntity.viewRootMesh.setAbsolutePosition(viewWorldMatrix.getTranslation());\r\n this.createEntity.viewRootMesh.scaling = moduleEntity.viewRootMesh.scaling.clone();\r\n this.createEntity.viewRootMesh.rotation.y = moduleEntity.viewRootMesh.rotation.y;\r\n this.createEntity.viewRootMesh.setEnabled(true);\r\n\r\n this.createEntity.draw1fRootMesh.computeWorldMatrix(true);\r\n this.createEntity.draw1fRootMesh.setAbsolutePosition(d1fWorldMatrix.getTranslation());\r\n this.createEntity.draw1fRootMesh.scaling = moduleEntity.viewRootMesh.scaling.clone();\r\n this.createEntity.draw1fRootMesh.rotation.y = moduleEntity.viewRootMesh.rotation.y;\r\n this.createEntity.draw1fRootMesh.position.y = 0.1;\r\n\r\n this.createEntity.draw2fRootMesh.computeWorldMatrix(true);\r\n this.createEntity.draw2fRootMesh.setAbsolutePosition(d2fWorldMatrix.getTranslation());\r\n this.createEntity.draw2fRootMesh.scaling = moduleEntity.viewRootMesh.scaling.clone();\r\n this.createEntity.draw2fRootMesh.rotation.y = moduleEntity.viewRootMesh.rotation.y;\r\n this.createEntity.draw2fRootMesh.position.y = 0.1;\r\n\r\n this.createEntity.moduleEntity = moduleEntity;\r\n this.createEntity.wallEnt.forEach(x=>{\r\n x.moduleEntity = moduleEntity;\r\n });\r\n this.createEntity.doorEnt.forEach(x=>{\r\n x.moduleEntity = moduleEntity;\r\n x.setCrushModuleEntity();\r\n });\r\n this.createEntity.stairEnt.forEach(x=>{\r\n x.moduleEntity = moduleEntity;\r\n x.setCrushModuleEntity();\r\n });\r\n\r\n this.createEntity.createCrushMesh();\r\n //this.createEntity.createEntity();\r\n //this.createEntity.sceneSubtract(this.createEntity.viewScene.instance);\r\n \r\n otherScene.createEntity.isGhost = false;\r\n otherScene.createEntity.floorPenetrate = otherScene.floor;\r\n otherScene.createEntity.setPenetrateMode(otherScene.floor)\r\n \r\n otherScene.createEntity = null;\r\n moduleEntity.isFixed = true;\r\n moduleEntity.Entities.push(this.createEntity);\r\n moduleEntity.Units.push(this.createEntity);\r\n\r\n this.viewer.$SceneLoader.makeHistory(new HistoryCommand.CreateCommand(this.createEntity,SaveHelper.makeSaveData(moduleEntity)));\r\n }\r\n else\r\n {\r\n return;\r\n }\r\n }\r\n else\r\n {\r\n return;\r\n }\r\n }\r\n else if(this.createEntity?.info.ctgrName === 'Wall')\r\n {\r\n this.wallMouseUpEvent();\r\n }\r\n else if(this.createEntity?.info.ctgrName === 'Opening')\r\n {\r\n this.openingMouseUpEvent();\r\n }\r\n }\r\n\r\n if(!this.isAddWallMode)\r\n {\r\n this.createEntity = null;\r\n this.viewer.loadModuleName = null;\r\n this.removeSnapLines();\r\n \r\n setTimeout(() => {\r\n this.updateWall();\r\n }, 300);\r\n }\r\n }\r\n else\r\n {\r\n if(this.movingMesh)\r\n {\r\n if(this.selectedEntity.info?.ctgrName == \"Module\")\r\n {\r\n if(this.movingInter)\r\n {\r\n this.selectedEntity.viewRootMesh.position = this.pointerDownModulePosition.clone();\r\n this.selectedEntity.draw1fRootMesh.position.x = this.pointerDownModulePosition.x;\r\n this.selectedEntity.draw1fRootMesh.position.z = this.pointerDownModulePosition.z;\r\n this.selectedEntity.draw2fRootMesh.position.x = this.pointerDownModulePosition.x;\r\n this.selectedEntity.draw2fRootMesh.position.z = this.pointerDownModulePosition.z;\r\n this.viewer.$SceneLoader.history.pop();\r\n this.viewer.$SceneLoader.historyIndex = this.viewer.$SceneLoader.historyIndexTemp;\r\n }\r\n \r\n this.updateEntireRoof();\r\n this.updateColumns();\r\n }\r\n if(this.movingMesh.info?.ctgrName === 'Wall')\r\n {\r\n this.movingMesh.entity?.moveNearEntity(this.movingMesh.absolutePosition, this.pointerDownModulePosition);\r\n }\r\n }\r\n\r\n if(pickResult.pickedMesh != null)\r\n { \r\n if(pickResult.pickedMesh.entity)\r\n {\r\n setTimeout(() => {\r\n this.selectMesh(pickResult.pickedMesh);\r\n }, 50); // Wall이 모두 바뀔때까지 약간의 딜레이 필요\r\n }\r\n else\r\n this.removeAllSelectedMesh();\r\n }\r\n else\r\n this.removeAllSelectedMesh();\r\n\r\n setTimeout(() => {\r\n this.updateWall();\r\n }, 200);\r\n }\r\n }\r\n else if(evt.button === 2)\r\n {\r\n if(this.createEntity?.info.ctgrName === 'Door')\r\n {\r\n this.doorDir *= -1;\r\n this.onPointerMove(null);\r\n }\r\n }\r\n }\r\n\r\n onPointerMove(evt)\r\n {\r\n this.removeSnapLines();\r\n\r\n let pos = this.mousePosition;\r\n let pickingInfo = this.instance.pick(this.instance.pointerX, this.instance.pointerY);\r\n\r\n if (pickingInfo.hit)\r\n {\r\n pos.x = pickingInfo.pickedPoint.x;\r\n pos.y = 3.2;\r\n pos.z = pickingInfo.pickedPoint.z;\r\n }\r\n else\r\n return;\r\n\r\n var createEntity = this.createEntity;\r\n var movingMesh = this.movingMesh;\r\n try{\r\n if(createEntity)\r\n {\r\n if(createEntity.isModule)\r\n {\r\n this.moduleMouseMoveEvent(pos)\r\n }\r\n else\r\n {\r\n if(this.createEntity?.info.ctgrName === 'Window')\r\n {\r\n this.windowMouseMoveEvent(pos)\r\n }\r\n else if(this.createEntity?.info.ctgrName === 'Door')\r\n {\r\n this.doorMouseMoveEvent(pos)\r\n }\r\n else if(this.createEntity?.info.ctgrName === 'Unit')\r\n {\r\n pos.y = 3.1;\r\n var snappedPosition = pos.clone();\r\n this.createEntity.setEnable(this.instance,true);\r\n var currentEntities = this.viewer.$SceneLoader.EntityLoader.modules.filter(o => !o.isGhost);\r\n this.createEntitySnap(snappedPosition, this.createEntity, currentEntities);\r\n this.snappedPosition = snappedPosition;\r\n const box = this.createEntity.drawMeshes1f.concat(this.createEntity.drawMeshes2f).filter(x=>x._scene === this.instance).find(x=>x.info.ctgrName === 'Box' && x.info.parentName.replace('-','').includes(this.createEntity.info.name));\r\n box.isVisible = true;\r\n box.material = this.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.createEntity.setEnable(this.instance,false);\r\n let pickingInfo = this.instance.pick(this.instance.pointerX, this.instance.pointerY);\r\n this.createEntity.setEnable(this.instance,true);\r\n if(pickingInfo.pickedMesh.id === \"ground\")\r\n {\r\n box.material = this.instance.getMaterialByName(\"redBoxMaterial\");\r\n }\r\n else\r\n {\r\n box.material = this.instance.getMaterialByName(\"greenBoxMaterial\");\r\n }\r\n }\r\n else if(this.createEntity?.info.ctgrName === 'Wall')\r\n {\r\n this.wallMouseMoveEvent(pos)\r\n }\r\n else if(this.createEntity?.info.ctgrName === 'Opening')\r\n {\r\n this.openingMouseMoveEvent(pos)\r\n }\r\n }\r\n }\r\n else if(movingMesh)\r\n {\r\n var selectedEntity = this.selectedEntity;\r\n \r\n // 객체 이동\r\n if(selectedEntity.info?.ctgrName == \"Wall\" && this.pointerDownPosition)\r\n {\r\n var diff = pos.subtract(this.pointerDownPosition);\r\n var movePos = this.pointerDownModulePosition.add(diff);\r\n \r\n var currentEntities = this.viewer.$SceneLoader.EntityLoader.modules.filter(o => o != selectedEntity);\r\n this.createEntitySnap(movePos, selectedEntity, currentEntities);\r\n \r\n this.snappedPosition = movePos.clone();\r\n }\r\n else if(selectedEntity.info?.ctgrName == \"Window\" || selectedEntity.info?.ctgrName == \"Door\" || selectedEntity.info?.ctgrName == \"Opening\")\r\n {\r\n const wallEnt = selectedEntity.parent;\r\n if(!wallEnt)\r\n return;\r\n const dashLine = wallEnt.createCenterLine(this.instance);\r\n this.snapLines.push(dashLine);\r\n\r\n var diff = pos.subtract(this.pointerDownPosition);\r\n var movePos = this.pointerDownModulePosition.add(diff);\r\n selectedEntity.snapMove(movePos)\r\n }\r\n else if(selectedEntity.info?.ctgrName == \"Module\" || selectedEntity.info?.ctgrName == \"Unit\") // Module\r\n {\r\n if(!this.pointerDownPosition)\r\n return;\r\n\r\n var diff = pos.subtract(this.pointerDownPosition);\r\n var movePos = this.pointerDownModulePosition.add(diff);\r\n \r\n var currentEntities = this.viewer.$SceneLoader.EntityLoader.modules.filter(o => o != selectedEntity);\r\n this.createEntitySnap(movePos, selectedEntity, currentEntities);\r\n \r\n this.snappedPosition = movePos.clone();\r\n\r\n if(selectedEntity.info?.ctgrName == \"Module\")\r\n {\r\n const myBox = selectedEntity.getModuleBox(this.instance);\r\n const otherModules = this.viewer.$SceneLoader.EntityLoader.modules.filter(x=>x.locatedScene == this).map(x=>x.getModuleBox(this.instance)).filter(x => x != myBox);\r\n \r\n this.movingInter = false;\r\n for(let o of otherModules)\r\n {\r\n const isInter = myBox.intersectsMesh(o,true);\r\n if(isInter)\r\n {\r\n this.movingInter = true;\r\n break;\r\n }\r\n }\r\n\r\n const highlightLayer = this.highlightLayer;\r\n highlightLayer.removeAllMeshes();\r\n if(this.movingInter)\r\n {\r\n const meshes = selectedEntity.Floors.map(x=>x.getDrawMeshes().find(o=>o._scene === this.instance))\r\n for(let m of meshes)\r\n highlightLayer.addMesh(m, new BABYLON.Color3(0,1,0.8));\r\n }\r\n }\r\n }\r\n\r\n const moduleEnt = this.selectedEntity.isModule ? this.selectedEntity : this.selectedEntity.moduleEntity;\r\n const crushes = moduleEnt.Entities.filter(x=>x.crushMesh).map(x=>x.crushMesh)\r\n .concat(moduleEnt.Entities.filter(x=>x.crushMesh1f).map(x=>x.crushMesh1f))\r\n .concat(moduleEnt.Entities.filter(x=>x.crushMesh2f).map(x=>x.crushMesh2f));\r\n crushes.forEach(async c=>{\r\n if(c.spot)\r\n {\r\n c.spot.update(c);\r\n }\r\n });\r\n this.viewer.$SceneLoader.history.slice(-1)[0].dataB = SaveHelper.makeSaveData(moduleEnt);\r\n }\r\n else\r\n {\r\n let pickingInfo = this.instance.pick(this.instance.pointerX, this.instance.pointerY);\r\n if (pickingInfo.hit)\r\n {\r\n let phlLayer = this.previewHighlightLayer;\r\n phlLayer.removeAllMeshes();\r\n\r\n let mesh = pickingInfo.pickedMesh;\r\n if(this.isAddWallMode)\r\n {\r\n if(mesh.info?.ctgrName === 'Wall')\r\n {\r\n const wallEntity = mesh.entity;\r\n const dashLine = wallEntity.createCenterLine(this.instance);\r\n this.snapLines.push(dashLine);\r\n wallEntity.showCenterVertex(true,this.instance)\r\n }\r\n else\r\n {\r\n this.instance.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n }\r\n }\r\n else if(mesh && mesh.entity && mesh.entity?.moduleEntity?.locatedScene == this)\r\n {\r\n if(!this.highlightLayer.hasMesh(mesh))\r\n {\r\n mesh.actionManager = new BABYLON.ActionManager(this.instance);\r\n\r\n phlLayer.addMesh(mesh, BABYLON.Color3.Purple());\r\n \r\n mesh.actionManager.registerAction(new BABYLON.ExecuteCodeAction(BABYLON.ActionManager.OnPointerOutTrigger, function(ev){\r\n phlLayer.removeMesh(mesh);\r\n }));\r\n if(mesh.entity.info.ctgrName === 'Floor')\r\n {\r\n mesh.actionManager.hoverCursor=\"Move\"\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n }\r\n }\r\n\r\n async updateEntireRoof()\r\n {\r\n var sceneLoader = this.viewer.$SceneLoader;\r\n var viewScene = sceneLoader.viewScene;\r\n var loader = sceneLoader.EntityLoader;\r\n\r\n if(loader.roofs)\r\n {\r\n loader.roofs.forEach(o =>\r\n {\r\n o.dispose(); \r\n });\r\n }\r\n\r\n if(!this.viewer.$SceneLoader.isShowRoof)\r\n return;\r\n\r\n const clipper = await clipperLib.loadNativeClipperLibInstanceAsync(\r\n clipperLib.NativeClipperLibRequestedFormat.WasmWithAsmJsFallback\r\n );\r\n\r\n var roofFloorHeight = 0.5;\r\n var roofRailHeight = 1.1;\r\n var roofRailWidth = 0.16;\r\n\r\n var floorEdges = [];\r\n var roofEdges = [];\r\n var mergeRoofs = [];\r\n\r\n loader.modules.forEach(o =>\r\n {\r\n var dataEdges = o.getFloorEdges();\r\n dataEdges.forEach(data =>\r\n {\r\n if(!o.isHideRoof)\r\n {\r\n roofEdges.push({\r\n edges: JSON.parse(JSON.stringify(data.edges)),\r\n height: data.height + 3.1,\r\n located: data.located\r\n });\r\n }\r\n\r\n floorEdges.push({\r\n edges: JSON.parse(JSON.stringify(data.edges)),\r\n height: data.height + 3.1,\r\n located: data.located\r\n });\r\n });\r\n });\r\n\r\n while(roofEdges.length > 0)\r\n {\r\n var roofData = roofEdges.pop();\r\n var roof = roofData.edges;\r\n var sameLocatedRoofs = roofEdges.filter(o => o.located == roofData.located);\r\n while(true)\r\n {\r\n var isUnioned = false;\r\n for(var i=0; i= 0)\r\n roofEdges.splice(roofIndex, 1);\r\n \r\n break;\r\n }\r\n }\r\n\r\n if(!isUnioned)\r\n break;\r\n }\r\n\r\n roofData.edges = [roof];\r\n roofData.originEdges = roof;\r\n mergeRoofs.push(roofData);\r\n }\r\n\r\n // 1층 지붕은 2층 Floor만큼 제외\r\n var floor2fs = floorEdges.filter(o => o.located == \"2F\");\r\n mergeRoofs.filter(o => o.located == \"1F\").forEach(o =>\r\n {\r\n var roof = o.edges;\r\n\r\n for(var i=0; i ({data: o})),\r\n subjectInputs: [{data: floor}],\r\n });\r\n\r\n if(intersectClip.length <= 0)\r\n continue;\r\n\r\n var diffClip = clipper.clipToPaths({\r\n clipType: clipperLib.ClipType.Difference,\r\n subjectFillType: clipperLib.PolyFillType.EvenOdd,\r\n clipInputs: intersectClip.map(o => ({data: o})),\r\n subjectInputs: roof.map(o => ({data: o})),\r\n });\r\n\r\n var checkOffsetClip = clipper.offsetToPaths({\r\n delta: -10,\r\n offsetInputs: [{\r\n data: diffClip,\r\n joinType: clipperLib.JoinType.Miter,\r\n endType: clipperLib.EndType.ClosedPolygon\r\n }]\r\n });\r\n\r\n roof = diffClip;\r\n if(checkOffsetClip.length <= 0) // 삭제됨.\r\n {\r\n roof = null;\r\n break;\r\n }\r\n }\r\n\r\n o.edges = roof;\r\n });\r\n\r\n // 삭제된 Roof 제거\r\n mergeRoofs = mergeRoofs.filter(o => o.edges);\r\n\r\n var widthOffset = roofRailWidth * 1000;\r\n mergeRoofs.forEach(o =>\r\n {\r\n var originEdges = o.originEdges;\r\n\r\n var clipperVertices = clipper.offsetToPaths({\r\n delta: -widthOffset,\r\n offsetInputs: [{\r\n data: originEdges,\r\n joinType: clipperLib.JoinType.Miter,\r\n endType: clipperLib.EndType.ClosedPolygon\r\n }]\r\n });\r\n\r\n if(clipperVertices.length <= 0)\r\n {\r\n o.edges = null;\r\n }\r\n else\r\n {\r\n var railEdges = clipperVertices.flat();\r\n o.railEdges = railEdges;\r\n }\r\n });\r\n\r\n mergeRoofs = mergeRoofs.filter(o => o.edges);\r\n\r\n // 지붕 만들기\r\n mergeRoofs.forEach(o =>\r\n {\r\n var roofEdges = o.edges;\r\n var railEdges = o.railEdges;\r\n var height = o.height;\r\n\r\n roofEdges.forEach(roofEdge =>\r\n {\r\n var clockwiseRoofEdges = MeshHelper.GetClockwiseVertices(roofEdge.map(v => new BABYLON.Vector3(v.x / 1000, height, v.y / 1000)));\r\n\r\n var roof = BABYLON.MeshBuilder.ExtrudePolygon(\"Roof\", {shape:clockwiseRoofEdges, depth: roofFloorHeight + roofRailHeight}, viewScene.instance, earcut);\r\n var roofCSG = BABYLON.CSG.FromMesh(roof);\r\n roof.dispose();\r\n \r\n if(railEdges)\r\n {\r\n var clockwiseRailEdges = MeshHelper.GetClockwiseVertices(railEdges.map(v => new BABYLON.Vector3(v.x / 1000, height, v.y / 1000)))\r\n \r\n var extrudeRoofRailing = BABYLON.MeshBuilder.ExtrudePolygon(\"Railing\", {shape:clockwiseRailEdges, depth: roofFloorHeight + roofRailHeight}, viewScene.instance, earcut);\r\n extrudeRoofRailing.position = extrudeRoofRailing.position.add(new BABYLON.Vector3(0, roofFloorHeight, 0));\r\n var roofRailAreaCSG = BABYLON.CSG.FromMesh(extrudeRoofRailing);\r\n \r\n roofCSG = roofCSG.subtract(roofRailAreaCSG);\r\n extrudeRoofRailing.dispose();\r\n }\r\n \r\n roof = roofCSG.toMesh(\"Roof\", null, viewScene.instance, true);\r\n roof.position = roof.position.add(new BABYLON.Vector3(0, height + roofFloorHeight + roofRailHeight, 0));\r\n const multimat = new BABYLON.MultiMaterial(\"multi\", roof._scene);\r\n multimat.subMaterials.push(viewScene.instance.getMaterialByName('WallMat'));\r\n multimat.subMaterials.push(viewScene.instance.getMaterialByName('paintMat'));\r\n \r\n roof.material = multimat;\r\n loader.roofs.push(roof); \r\n });\r\n });\r\n }\r\n\r\n async updateViewWall(instance,f)\r\n {\r\n const viewIns = this.viewer.$SceneLoader.viewScene.instance;\r\n const walls = instance.meshes.filter(x=>x.info?.ctgrName==='Wall').filter(x=>x.entity != null);\r\n const floors = instance.meshes.filter(x=>x.info?.ctgrName==='Floor').filter(x=>x.entity != null).filter(x=>!x.info?.typeName.includes('Unit'));\r\n const stairs = instance.meshes.filter(x=>x.info?.ctgrName==='Stair').filter(x=>x.entity != null);\r\n const voids = instance.meshes.filter(x=>x.info?.ctgrName==='Void').filter(x=>x.entity != null);\r\n const crushes = instance.getMeshesById(\"crushMesh\");\r\n const crusheTops = instance.getMeshesById(\"crushMeshTop\");\r\n const backMeshes = instance.getMeshesById(\"backMesh\");\r\n const CrushPoints = instance.getMeshesById(\"CrushPoint\");\r\n\r\n backMeshes.forEach(b=>b.dispose())\r\n CrushPoints.forEach(b=>b.dispose())\r\n\r\n crushes.forEach(c=>{\r\n if(c.spot)\r\n {\r\n const tempMeshes = [...c.spot.includedOnlyMeshes];\r\n const tempMats = [];\r\n tempMeshes.forEach(o=>{\r\n tempMats.push(o._scene.getMaterialByName(o.material?.name));\r\n o.material = null;\r\n })\r\n c.spot.includedOnlyMeshes = [instance.getMeshByName('spotBox')];\r\n for(let i = 0; i < tempMeshes.length; i++)\r\n {\r\n tempMeshes[i].material = tempMats[i];\r\n }\r\n }\r\n });\r\n\r\n crusheTops.forEach(c=>{\r\n if(c.spot)\r\n {\r\n const tempMeshes = [...c.spot.includedOnlyMeshes];\r\n const tempMats = [];\r\n tempMeshes.forEach(o=>{\r\n tempMats.push(o._scene.getMaterialByName(o.material?.name));\r\n o.material = null;\r\n })\r\n c.spot.includedOnlyMeshes = [instance.getMeshByName('spotBox')];\r\n for(let i = 0; i < tempMeshes.length; i++)\r\n {\r\n tempMeshes[i].material = tempMats[i];\r\n }\r\n }\r\n });\r\n\r\n crushes.forEach(c=>{\r\n if(c.spot)\r\n {\r\n c.computeWorldMatrix();\r\n c.spot.update(c);\r\n }\r\n });\r\n\r\n crusheTops.forEach(c=>{\r\n if(c.spot)\r\n {\r\n c.computeWorldMatrix();\r\n c.spot.update(c);\r\n }\r\n });\r\n\r\n walls.forEach(w=>{\r\n if(!w.isEnabled(true))\r\n {\r\n return;\r\n }\r\n\r\n const temp = w.material;\r\n w.material = null;\r\n CsgHelper.bakeTransform(w);\r\n w.computeWorldMatrix();\r\n crushes.forEach(c=>{\r\n if(!c.spot)\r\n {\r\n return;\r\n }\r\n const spot = c.spot;\r\n \r\n if(!w.entity || !spot)\r\n return;\r\n \r\n if(c.entity?.info?.ctgrName === 'Opening')\r\n {\r\n if(w.entity.info?.parentName.includes('Unit'))\r\n {\r\n //소형유닛의 벽일 경우 충돌 검사\r\n }\r\n else if(c.entity.parent != w.entity)\r\n {\r\n return;\r\n }\r\n }\r\n \r\n const isCrush = w.intersectsMesh(c,true);\r\n if(isCrush)\r\n {\r\n const cbox = c.getBoundingInfo().boundingBox;\r\n const width = cbox.extendSize.x * 2;\r\n const depth = cbox.extendSize.z * 2;\r\n\r\n const crushPlane = BABYLON.MeshBuilder.CreateBox(null,{ width: width*0.7,height:2.5, depth: depth*0.7 }, instance);\r\n crushPlane.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);\r\n crushPlane.position = c.position.clone();\r\n crushPlane.rotation.y = c.rotation.y;\r\n crushPlane.parent = c.parent;\r\n crushPlane.computeWorldMatrix();\r\n\r\n if(w.intersectsMesh(crushPlane,true))\r\n {\r\n spot.includedOnlyMeshes.push(w);\r\n if(instance === viewIns)\r\n {\r\n w.entity.makeTempMesh(w,c);\r\n }\r\n }\r\n crushPlane.dispose();\r\n }\r\n });\r\n w.material = temp;\r\n })\r\n\r\n if(instance === viewIns)\r\n {\r\n for(let c of crushes)\r\n {\r\n for(let t of instance.getMeshesById(\"backMesh\"))\r\n {\r\n if(c.entity?.info?.ctgrName === 'Opening')\r\n {\r\n if(t.entity?.info?.parentName.includes('Unit'))\r\n {\r\n //소형유닛의 벽일 경우 충돌 검사\r\n }\r\n else if(t.w.entity != c.entity.parent)\r\n continue;\r\n }\r\n \r\n if(c.intersectsMesh(t,true))\r\n {\r\n c.spot.includedOnlyMeshes.push(t);\r\n }\r\n }\r\n }\r\n }\r\n\r\n floors.forEach(f=>{\r\n if(!f.isEnabled(true))\r\n {\r\n return;\r\n }\r\n const temp = f._scene.getMaterialByName(f?.material?.name);\r\n f.material = null;\r\n \r\n CsgHelper.bakeTransform(f);\r\n f.computeWorldMatrix();\r\n \r\n crusheTops.forEach(c=>{\r\n const spot = c.spot;\r\n \r\n if(c.entity.info.ctgrName != 'Void')\r\n {\r\n if(!spot.isOtherThrough && f.moduleEntity != c.moduleEntity)\r\n {\r\n return;\r\n }\r\n \r\n if(spot.isOtherThrough && f.moduleEntity == c.moduleEntity)\r\n {\r\n return;\r\n }\r\n }\r\n \r\n const isCrush = f.intersectsMesh(c,true);\r\n if(isCrush){\r\n spot.includedOnlyMeshes.push(f);\r\n }\r\n })\r\n\r\n f.material = temp;\r\n })\r\n\r\n if(instance === viewIns)\r\n {\r\n stairs.forEach(async s=>{\r\n s.entity.makeTempMesh(instance);\r\n })\r\n voids.forEach(async v=>{\r\n v.entity.makeTempMesh(instance);\r\n })\r\n }\r\n }\r\n\r\n updateWall()\r\n {\r\n if(!this.isLoaded)\r\n return;\r\n const viewIns = this.viewer.$SceneLoader.viewScene.instance;\r\n const d1fIns = this.viewer.$SceneLoader.drawScene1f.instance;\r\n const d2fIns = this.viewer.$SceneLoader.drawScene2f.instance;\r\n \r\n this.updateViewWall(d1fIns,'1f');\r\n this.updateViewWall(d2fIns,'2f');\r\n this.updateViewWall(viewIns,'vf');\r\n\r\n this.updateColumns();\r\n this.viewer.$SceneLoader.viewScene.setFloorText();\r\n this.viewer.$SceneLoader.drawScene1f.setFloorText();\r\n this.viewer.$SceneLoader.drawScene2f.setFloorText();\r\n }\r\n\r\n updateColumns()\r\n {\r\n var floor1fs = [];\r\n var floor2fs = [];\r\n\r\n this.viewer.$SceneLoader.EntityLoader.modules.filter(o => !o.isGhost).forEach(o =>\r\n {\r\n if(o.locatedScene.floor == \"2F\")\r\n floor2fs.push(o);\r\n else\r\n floor1fs.push(o);\r\n });\r\n\r\n floor2fs.forEach(o => o.createColumns(floor1fs));\r\n }\r\n\r\n createEntitySnap(pos, entity, currentEntities)\r\n {\r\n var offsetY = pos.y;\r\n if(entity.info.ctgrName == \"Module\")\r\n offsetY = this.floor == '2F' ? 3.1 : 0;\r\n\r\n var result = entity.snapEntities(this, this.prevSnapData, pos.x, pos.z, currentEntities);\r\n if(result != null)\r\n {\r\n var newSnapData = {};\r\n var lines = [];\r\n if(result.minx != null)\r\n {\r\n pos.x = pos.x - result.xItems[0].posDist;\r\n result.xItems.forEach(item =>\r\n {\r\n lines.push([new BABYLON.Vector3(item.minPos, 9, item.linePos[0]), new BABYLON.Vector3(item.minPos, 9, item.linePos[1])])\r\n });\r\n\r\n newSnapData.X = result.xItems[0].minPos;\r\n }\r\n else\r\n pos.x = pos.x;\r\n pos.y = offsetY;\r\n\r\n if(result.minz != null)\r\n {\r\n pos.z = pos.z - result.zItems[0].posDist;\r\n result.zItems.forEach(item =>\r\n {\r\n lines.push([new BABYLON.Vector3(item.linePos[0], 9, item.minPos), new BABYLON.Vector3(item.linePos[1], 9, item.minPos)])\r\n });\r\n\r\n newSnapData.Z = result.zItems[0].minPos;\r\n }\r\n else\r\n pos.z = pos.z;\r\n\r\n for(var i=0; i o.info.name.includes(\"Exterior\"));\r\n for(var i=0; i 0)\r\n {\r\n this.snapLines.forEach(line =>\r\n {\r\n line.dispose();\r\n });\r\n this.snapLines = [];\r\n }\r\n }\r\n\r\n selectMesh(mesh)\r\n {\r\n if(mesh.entity.moduleEntity.locatedScene != this)\r\n return;\r\n\r\n this.removeAllSelectedMesh();\r\n\r\n var scene = this;\r\n var target = mesh.entity.getContextEntity();\r\n\r\n var meshes = target.getSceneMeshes(scene);\r\n\r\n var panel = target.createContextPanel(this);\r\n if(panel != null)\r\n {\r\n var highlightLayer = this.highlightLayer;\r\n meshes.forEach(o =>\r\n {\r\n //new BABYLON.Color3(0,1,0.8)\r\n highlightLayer.addMesh(o, BABYLON.Color3.Purple());\r\n });\r\n this.previewHighlightLayer.removeAllMeshes();\r\n this.selectedEntity = target;\r\n this.highlightMeshes = meshes;\r\n }\r\n }\r\n\r\n selectEntity(entity)\r\n {\r\n this.removeAllSelectedMesh();\r\n\r\n var scene = this;\r\n var meshes = entity.getSceneMeshes(scene);\r\n\r\n var panel = entity.createContextPanel(this);\r\n if(panel != null)\r\n {\r\n var highlightLayer = this.highlightLayer;\r\n meshes.forEach(o =>\r\n {\r\n highlightLayer.addMesh(o, BABYLON.Color3.Purple());\r\n });\r\n this.selectedEntity = entity;\r\n this.highlightMeshes = meshes;\r\n }\r\n }\r\n\r\n removeAllSelectedMesh()\r\n {\r\n this.removeSelectedMesh();\r\n\r\n const otherScene = this.viewer.$SceneLoader.drawScenes.find(x => x!=this);\r\n otherScene.removeSelectedMesh();\r\n }\r\n\r\n removeSelectedMesh()\r\n {\r\n if(this.movingMesh)\r\n this.movingMesh = null;\r\n\r\n if(this.selectedEntity != null)\r\n {\r\n this.selectedEntity.disposeContextPanel();\r\n this.selectedEntity = null;\r\n\r\n var highlightLayer = this.highlightLayer;\r\n var phlLayer = this.previewHighlightLayer;\r\n this.highlightMeshes.forEach(o =>\r\n {\r\n phlLayer.removeExcludedMesh(o);\r\n highlightLayer.removeMesh(o);\r\n });\r\n }\r\n }\r\n\r\n handleMouseWheel(delta) {\r\n const camera = this.instance.getCameraByName(\"Camera\")\r\n const scene = this.instance;\r\n const ground = scene.getMeshByName(\"ground\");\r\n\r\n camera.panningSensibility = 5000 * 1/this.zoomRate;\r\n\r\n // 마우스 휠의 방향에 따라 처리\r\n if (delta > 0) {\r\n if(this.zoomRate > 4)\r\n {\r\n this.zoomRate -= 1;\r\n }\r\n } else {\r\n if(this.zoomRate < 30)\r\n {\r\n this.zoomRate += 1;\r\n }\r\n }\r\n \r\n this.cameraRender(camera)\r\n if(ground)\r\n {\r\n if(this.zoomRate>25)\r\n {\r\n ground.material = scene.getMaterialByName(\"bigGridMat\");\r\n }\r\n else if(this.zoomRate<10)\r\n {\r\n ground.material = scene.getMaterialByName(\"smallGridMat\");\r\n }\r\n else\r\n {\r\n ground.material = scene.getMaterialByName(\"nomalGridMat\");\r\n }\r\n }\r\n this.setFloorText();\r\n }\r\n\r\n wallMouseMoveEvent(pos)\r\n {\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMeshs =this.instance.multiPick(this.instance.pointerX, this.instance.pointerY).map(x=>x.pickedMesh);\r\n this.createEntity.setEnable(this.instance,true)\r\n\r\n const pickEnts = pickedMeshs.filter(x=>x.entity)\r\n .filter(x=>x.entity?.moduleEntity)\r\n .filter(x=>x.entity.moduleEntity.floorPenetrate != this.floor)\r\n .map(x=>x.entity);\r\n const pickCtgrs = pickEnts.filter(x=>x.info).map(x=>x.info.ctgrName);\r\n\r\n const wallEntity = pickEnts.find(x=>x.info.ctgrName === 'Wall');\r\n const wallMesh = wallEntity?.getDrawMeshes().find(x=>x._scene === this.instance);\r\n\r\n if(!this.createEntity.startPoint)\r\n {\r\n this.createEntity.setEnable(this.instance,true)\r\n pos.y += 3.2;\r\n this.createEntity.setPosition(this.instance,pos)\r\n \r\n if(pickCtgrs.length > 0)\r\n {\r\n const terrace = pickEnts.find(x=>x.info.name.includes('Floor-Exterior'));\r\n if(terrace)\r\n {\r\n this.createEntity.setStatus(false);\r\n return;\r\n }\r\n }\r\n else\r\n {\r\n this.createEntity.setStatus(false);\r\n return;\r\n }\r\n this.createEntity.setStatus(true);\r\n \r\n if(wallEntity && wallMesh)\r\n {\r\n const dashLine = wallEntity.createCenterLine(this.instance);\r\n this.snapLines.push(dashLine);\r\n wallEntity.showCenterVertex(true,this.instance)\r\n \r\n const worldMatrix = wallMesh.getWorldMatrix();\r\n const worldPosition = BABYLON.Vector3.TransformCoordinates(BABYLON.Vector3.Zero(), worldMatrix);\r\n \r\n if(wallEntity.wallType === 'Horizontal')\r\n {\r\n const m = this.createEntity.getInstancePointer(this.instance);\r\n m.rotation.y = wallEntity.moduleEntity.viewRootMesh.rotation.y;\r\n const rot = CsgHelper.getParentRotation(wallMesh);\r\n const sin = Math.abs(Math.sin(rot)) \r\n const cos = Math.abs(Math.cos(rot)) \r\n \r\n m.position.x = worldPosition.x * sin + m.position.x * cos;\r\n m.position.z = worldPosition.z * cos + m.position.z * sin;\r\n }\r\n else\r\n {\r\n const m = this.createEntity.getInstancePointer(this.instance);\r\n m.rotation.y = wallEntity.moduleEntity.viewRootMesh.rotation.y;\r\n const rot = CsgHelper.getParentRotation(wallMesh);\r\n const sin = Math.abs(Math.sin(rot)) \r\n const cos = Math.abs(Math.cos(rot)) \r\n \r\n m.position.x = worldPosition.x * cos + m.position.x * sin;\r\n m.position.z = worldPosition.z * sin + m.position.z * cos;\r\n }\r\n }\r\n else\r\n {\r\n this.instance.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n }\r\n }\r\n else\r\n {\r\n const targetEnts = pickEnts.filter(x=>x.moduleEntity === this.createEntity.targetModule);\r\n \r\n if(targetEnts.length < 1)\r\n {\r\n return;\r\n }\r\n \r\n this.createEntity.setEnable(this.instance,true)\r\n const endPos = pos.clone();\r\n\r\n if(wallEntity && wallMesh)\r\n {\r\n const dashLine = wallEntity.createCenterLine(this.instance);\r\n this.snapLines.push(dashLine);\r\n wallEntity.showCenterVertex(true,this.instance)\r\n\r\n const worldMatrix = wallMesh.getWorldMatrix();\r\n const worldPosition = BABYLON.Vector3.TransformCoordinates(BABYLON.Vector3.Zero(), worldMatrix);\r\n \r\n const rot = CsgHelper.getParentRotation(wallMesh);\r\n const sin = Math.abs(Math.sin(rot)) \r\n const cos = Math.abs(Math.cos(rot)) \r\n\r\n if(wallEntity.wallType === 'Horizontal')\r\n {\r\n endPos.x = worldPosition.x * sin + pos.x * cos;\r\n endPos.z = worldPosition.z * cos + pos.z * sin;\r\n }\r\n else\r\n {\r\n endPos.x = worldPosition.x * cos + pos.x * sin;\r\n endPos.z = worldPosition.z * sin + pos.z * cos;\r\n }\r\n }\r\n else\r\n {\r\n this.instance.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n }\r\n\r\n const sPos = this.createEntity.startPoint;\r\n const xWallPos = new Vector3(endPos.x,sPos.y,sPos.z);\r\n const zWallPos = new Vector3(sPos.x,sPos.y,endPos.z);\r\n\r\n const xDist = Vector3.Distance(sPos,xWallPos);\r\n const zDist = Vector3.Distance(sPos,zWallPos);\r\n\r\n if(xDist>zDist)\r\n {\r\n this.createEntity.updateTempWall(xWallPos,xDist,'x');\r\n }\r\n else\r\n {\r\n this.createEntity.updateTempWall(zWallPos,zDist,'z');\r\n }\r\n }\r\n }\r\n\r\n wallMouseUpEvent()\r\n {\r\n if(!this.createEntity.status)\r\n {\r\n return;\r\n }\r\n\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMeshs =this.instance.multiPick(this.instance.pointerX, this.instance.pointerY).map(x=>x.pickedMesh);\r\n this.createEntity.setEnable(this.instance,true)\r\n\r\n const pickEnts = pickedMeshs.filter(x=>x.entity)\r\n .filter(x=>x.entity.moduleEntity)\r\n .filter(x=>x.entity.moduleEntity.floorPenetrate != this.floor)\r\n .map(x=>x.entity);\r\n\r\n if(pickEnts.length < 1)\r\n {\r\n return;\r\n }\r\n\r\n if(!this.createEntity.startPoint)\r\n {\r\n const targetModule = pickEnts[0].moduleEntity;\r\n const pointer = this.createEntity.getInstancePointer(this.instance)\r\n this.createEntity.startPoint = pointer.position.clone();\r\n this.createEntity.targetModule = targetModule;\r\n }\r\n else\r\n {\r\n const ent = this.createEntity.createEntity();\r\n\r\n // Snap된 상태에서 벽 배치시 종료\r\n if(this.snapLines.length > 0)\r\n {\r\n // this.createEntity.dispose();\r\n // this.createEntity = null;\r\n // this.removeSnapLines();\r\n this.createEntity.startPoint = null;\r\n }\r\n this.viewer.$SceneLoader.makeHistory(new HistoryCommand.CreateCommand(ent,SaveHelper.makeSaveData(ent.moduleEntity)));\r\n }\r\n }\r\n\r\n openingMouseMoveEvent(pos)\r\n {\r\n var snapOffset = 0.15;\r\n\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMeshs =this.instance.multiPick(this.instance.pointerX, this.instance.pointerY).map(x=>x.pickedMesh);\r\n this.createEntity.setEnable(this.instance,true)\r\n\r\n const pickEnts = pickedMeshs.filter(x=>x.entity)\r\n .filter(x=>x.entity?.moduleEntity)\r\n .filter(x=>x.entity.moduleEntity.floorPenetrate != this.floor)\r\n .map(x=>x.entity);\r\n \r\n const wallEntity = pickEnts.find(x=>x.info.ctgrName === 'Wall');\r\n const wallMesh = wallEntity?.getDrawMeshes().find(x=>x._scene === this.instance);\r\n \r\n this.createEntity.setEnable(this.instance,true)\r\n pos.y += 3.2;\r\n\r\n if(!wallEntity)\r\n {\r\n this.createEntity.setStatus(false);\r\n this.instance.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n return;\r\n }\r\n else if(this.createEntity.startPoint)\r\n {\r\n if(this.createEntity.targetWall != wallMesh)\r\n {\r\n this.createEntity.setStatus(false);\r\n this.instance.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n return;\r\n }\r\n }\r\n this.createEntity.setStatus(true);\r\n\r\n const dashLine = wallEntity.createCenterLine(this.instance);\r\n this.snapLines.push(dashLine);\r\n wallEntity.showCenterVertex(true,this.instance);\r\n\r\n // Snap\r\n var currentOpenings = this.viewer.$SceneLoader.EntityLoader.modules.filter(o => !o.isGhost && o.locatedScene == this).flatMap(o => o.Openings);\r\n var nearPos = null;\r\n var nearDist = null;\r\n var wallWorldType = wallEntity.getWorldWallType();\r\n for(var i=0; i= box.extendSize.x)\r\n continue;\r\n }\r\n else\r\n {\r\n if(box.extendSize.x >= box.extendSize.z)\r\n continue;\r\n }\r\n\r\n var checkValue = [box.minimum, box.maximum];\r\n checkValue.forEach(o =>\r\n {\r\n var dist;\r\n if(wallWorldType === 'Horizontal')\r\n dist = Math.abs(o.x - pos.x);\r\n else\r\n dist = Math.abs(o.z - pos.z);\r\n\r\n if(dist <= snapOffset)\r\n {\r\n if(nearPos == null || dist < nearDist)\r\n {\r\n nearPos = o;\r\n nearDist = dist;\r\n }\r\n }\r\n });\r\n }\r\n\r\n var moduleWalls = wallEntity.moduleEntity.Walls.filter(o => o.wallType != wallEntity.wallType);\r\n var checkValue = [];\r\n var wallLine = wallEntity.getWorldWallLine();\r\n moduleWalls.forEach(o =>\r\n {\r\n var targetLine = o.getWorldWallLine();\r\n var wallStart = wallLine.start;\r\n var wallEnd = wallLine.end;\r\n\r\n var result = VectorHelper.calcNearestPointOnLine(wallStart, wallEnd, targetLine.start);\r\n var isChecked = false;\r\n\r\n if(VectorHelper.calcIsInsideLineSegment(wallStart, wallEnd, result))\r\n isChecked = true;\r\n else\r\n {\r\n var dist = Math.min(BABYLON.Vector3.Distance(wallStart, result), BABYLON.Vector3.Distance(wallEnd, result));\r\n if(dist <= 0.1)\r\n isChecked = true;\r\n }\r\n\r\n if(isChecked)\r\n {\r\n var farPos = targetLine.start;\r\n if(BABYLON.Vector3.Distance(targetLine.end, result) > BABYLON.Vector3.Distance(targetLine.start, result))\r\n farPos = targetLine.end;\r\n\r\n var box = o.getBoundingBox2d(this);\r\n var min = farPos.clone();\r\n var max = farPos.clone();\r\n if(wallWorldType === 'Horizontal')\r\n {\r\n min.x = box.minimumWorld.x;\r\n max.x = box.maximumWorld.x;\r\n }\r\n else\r\n {\r\n min.z = box.minimumWorld.z;\r\n max.z = box.maximumWorld.z;\r\n }\r\n\r\n checkValue.push(min);\r\n checkValue.push(max);\r\n }\r\n });\r\n checkValue.forEach(o =>\r\n {\r\n var dist;\r\n if(wallWorldType === 'Horizontal')\r\n dist = Math.abs(o.x - pos.x);\r\n else\r\n dist = Math.abs(o.z - pos.z);\r\n\r\n if(dist <= snapOffset)\r\n {\r\n if(nearPos == null || dist < nearDist)\r\n {\r\n nearPos = o;\r\n nearDist = dist;\r\n }\r\n }\r\n });\r\n\r\n if(nearPos != null)\r\n {\r\n var line = [];\r\n if(wallWorldType === 'Horizontal')\r\n pos.x = nearPos.x;\r\n else\r\n pos.z = nearPos.z;\r\n\r\n var dir = BABYLON.Vector3.Normalize(nearPos.subtract(pos));\r\n var startPos = pos.subtract(dir.scale(this.zoomRate / 2));\r\n var endPos = nearPos.add(dir.scale(this.zoomRate / 2));\r\n startPos.y = 9;\r\n endPos.y = 9;\r\n line = [startPos, endPos];\r\n\r\n var lineDistance = BABYLON.Vector3.Distance(startPos, endPos);\r\n\r\n var snapLine = BABYLON.MeshBuilder.CreateDashedLines(\"dl\", {points: line, dashNb: lineDistance * 10, dashSize: 1, gapSize: 1}, this.instance);\r\n snapLine.color = BABYLON.Color3.Green();\r\n\r\n this.snapLines.push(snapLine);\r\n }\r\n\r\n this.createEntity.setPosition(this.instance,pos)\r\n\r\n const worldMatrix = wallMesh.getWorldMatrix();\r\n const worldPosition = BABYLON.Vector3.TransformCoordinates(BABYLON.Vector3.Zero(), worldMatrix);\r\n\r\n if(wallEntity.wallType === 'Horizontal')\r\n {\r\n const m = this.createEntity.getInstancePointer(this.instance);\r\n m.rotation.y = wallEntity.moduleEntity.viewRootMesh.rotation.y;\r\n const rot = CsgHelper.getParentRotation(wallMesh);\r\n const sin = Math.abs(Math.sin(rot)) \r\n const cos = Math.abs(Math.cos(rot)) \r\n\r\n m.position.x = worldPosition.x * sin + m.position.x * cos;\r\n m.position.z = worldPosition.z * cos + m.position.z * sin;\r\n }\r\n else\r\n {\r\n const m = this.createEntity.getInstancePointer(this.instance);\r\n m.rotation.y = wallEntity.moduleEntity.viewRootMesh.rotation.y;\r\n const rot = CsgHelper.getParentRotation(wallMesh);\r\n const sin = Math.abs(Math.sin(rot)) \r\n const cos = Math.abs(Math.cos(rot)) \r\n\r\n m.position.x = worldPosition.x * cos + m.position.x * sin;\r\n m.position.z = worldPosition.z * sin + m.position.z * cos;\r\n }\r\n\r\n if(this.createEntity.startPoint)\r\n {\r\n const sPos = this.createEntity.startPoint;\r\n const xWallPos = new Vector3(pos.x,sPos.y,sPos.z);\r\n const zWallPos = new Vector3(sPos.x,sPos.y,pos.z);\r\n\r\n const xDist = Vector3.Distance(sPos,xWallPos);\r\n const zDist = Vector3.Distance(sPos,zWallPos);\r\n\r\n if(xDist>zDist)\r\n {\r\n this.createEntity.updateTempWall(xWallPos,xDist,'x');\r\n }\r\n else\r\n {\r\n this.createEntity.updateTempWall(zWallPos,zDist,'z');\r\n }\r\n }\r\n }\r\n\r\n openingMouseUpEvent()\r\n {\r\n if(!this.createEntity.status)\r\n {\r\n return;\r\n }\r\n\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMeshs =this.instance.multiPick(this.instance.pointerX, this.instance.pointerY).map(x=>x.pickedMesh);\r\n this.createEntity.setEnable(this.instance,true)\r\n\r\n const infoMesh = pickedMeshs.filter(x=>x.info).filter(x=>x?.entity?.moduleEntity);\r\n\r\n const pickEnts = pickedMeshs.filter(x=>x.entity)\r\n .filter(x=>x.entity?.moduleEntity)\r\n .filter(x=>x.entity.moduleEntity.floorPenetrate != this.floor)\r\n .map(x=>x.entity);\r\n \r\n const wallEntity = pickEnts.find(x=>x.info.ctgrName === 'Wall');\r\n const wallMesh = wallEntity?.getDrawMeshes().find(x=>x._scene === this.instance);\r\n\r\n if(infoMesh.length < 1)\r\n {\r\n return;\r\n }\r\n\r\n if(!this.createEntity.startPoint)\r\n {\r\n const targetModule = wallEntity.moduleEntity;\r\n const pointer = this.createEntity.getInstancePointer(this.instance)\r\n pointer.isVisible = false;\r\n this.createEntity.startPoint = pointer.position.clone();\r\n this.createEntity.targetModule = targetModule;\r\n this.createEntity.targetWall = wallMesh;\r\n }\r\n else\r\n {\r\n if(this.createEntity.length < 0.15)\r\n return;\r\n const ent = this.createEntity.createEntity();\r\n this.viewer.$SceneLoader.CancelModule();\r\n this.viewer.$SceneLoader.makeHistory(new HistoryCommand.CreateCommand(ent,SaveHelper.makeSaveData(ent.moduleEntity)));\r\n }\r\n }\r\n\r\n moduleMouseMoveEvent(pos)\r\n {\r\n const createEntity = this.createEntity;\r\n if(createEntity.isGhost)\r\n {\r\n var snappedPosition = pos.clone();\r\n this.createEntity.setEnable(this.instance,true);\r\n var currentEntities = this.viewer.$SceneLoader.EntityLoader.modules.filter(o => !o.isGhost);\r\n this.createEntitySnap(snappedPosition, this.createEntity, currentEntities);\r\n\r\n this.snappedPosition = snappedPosition;\r\n const greenBoxMat = this.instance.getMaterialByName('greenBoxMaterial');\r\n const redBoxMat = this.instance.getMaterialByName('redBoxMaterial');\r\n const mbox = this.createEntity.moduleBoxs.find(x=>x._scene === this.instance);\r\n mbox.isVisible = true;\r\n const targets = mbox._scene.getMeshesById(mbox.name).filter(x=> x != mbox);\r\n \r\n targets.some(t=>{\r\n if(t.ModuleEntity.floorPenetrate === this.floor)\r\n {\r\n return false;\r\n }\r\n if(mbox.intersectsMesh(t))\r\n {\r\n mbox.material = redBoxMat;\r\n return true;\r\n }\r\n else\r\n {\r\n mbox.material = greenBoxMat;\r\n }\r\n })\r\n }\r\n }\r\n\r\n moduleMouseUpEvent()\r\n {\r\n const otherScene = this.viewer.$SceneLoader.drawScenes.find(x => x!=this);\r\n const mbox = this.createEntity.moduleBoxs.find(x=>x._scene === this.instance);\r\n if(mbox.material.name === 'redBoxMaterial')\r\n {\r\n this.viewer.$SceneLoader.CancelModule();\r\n return;\r\n }\r\n let pos = new Vector3(this.snappedPosition.x,3.1,this.snappedPosition.z);\r\n let otherPos = new Vector3(this.snappedPosition.x,0,this.snappedPosition.z);\r\n \r\n this.createEntity.setPosition(otherScene.instance,otherPos);\r\n this.createEntity.setPosition(this.instance,pos);\r\n const otherRoot = this.createEntity.getAllRoots().find(x=>x._scene === otherScene.instance);\r\n otherRoot.position.y = 0;\r\n\r\n this.snappedPosition = null;\r\n this.createEntity.info.floor = this.floor;\r\n this.createEntity.isGhost = false;\r\n this.createEntity.locatedScene = this;\r\n \r\n this.createEntity.setViewModel(true);\r\n this.createEntity.isFixed = true;\r\n otherScene.createEntity = this.createEntity;\r\n otherScene.createEntity.isGhost = false;\r\n otherScene.createEntity.floorPenetrate = otherScene.floor;\r\n otherScene.createEntity.setPenetrateMode(otherScene.floor)\r\n\r\n this.createEntity.moduleBoxs.forEach(mbox=>mbox.isVisible = false);\r\n this.createEntity.setAllEnable(true);\r\n this.updateEntireRoof();\r\n \r\n otherScene.createEntity.isFixed = false;\r\n\r\n otherScene.createEntity = null;\r\n\r\n this.viewer.$SceneLoader.makeHistory(new HistoryCommand.CreateCommand(this.createEntity,SaveHelper.makeSaveData(this.createEntity)));\r\n }\r\n\r\n windowMouseMoveEvent(pos)\r\n {\r\n const otherScene = this.viewer.$SceneLoader.drawScenes.find(x => x!=this);\r\n this.createEntity.setEnable(this.instance,true)\r\n pos.y += 3.2;\r\n this.createEntity.setPosition(this.instance,pos)\r\n this.createEntity.setPosition(otherScene.instance,pos)\r\n\r\n const greenBoxMat = this.instance.getMaterialByName('greenBoxMaterial');\r\n const redBoxMat = this.instance.getMaterialByName('redBoxMaterial');\r\n const mesh1f = this.createEntity.drawMeshes1f.find(x=>x.info.ctgrName!= 'Box')\r\n const mesh2f = this.createEntity.drawMeshes2f.find(x=>x.info.ctgrName!= 'Box')\r\n\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMeshs =this.instance.multiPick(this.instance.pointerX, this.instance.pointerY).map(x=>x.pickedMesh);\r\n this.createEntity.setEnable(this.instance,true)\r\n\r\n const pickEnts = pickedMeshs.filter(x=>x.entity)\r\n .filter(x=>x.entity?.moduleEntity)\r\n .filter(x=>x.entity.moduleEntity.floorPenetrate != this.floor)\r\n .map(x=>x.entity);\r\n\r\n const wallEntity = pickEnts.find(x=>x.info.ctgrName === 'Wall');\r\n const wallMesh = wallEntity?.getDrawMeshes().find(x=>x._scene === this.instance);\r\n\r\n if(wallMesh)\r\n {\r\n if(!wallMesh?.entity?.moduleEntity?.floorPenetrate)\r\n {\r\n return;\r\n }\r\n if(wallMesh.entity.moduleEntity.floorPenetrate === this.floor)\r\n {\r\n return;\r\n }\r\n const dashLine = wallEntity.createCenterLine(this.instance);\r\n this.snapLines.push(dashLine);\r\n\r\n mesh2f.material = greenBoxMat;\r\n mesh1f.material = greenBoxMat;\r\n\r\n const wallType = wallEntity.getWorldWallType();\r\n const wallPos = wallMesh.getAbsolutePosition();\r\n\r\n if(wallType.type === 'Vertical')\r\n {\r\n for(let m of this.createEntity.getDrawMeshes())\r\n {\r\n m.rotation.y = Math.PI /2;\r\n m.position.x = wallPos.x;\r\n }\r\n }\r\n else\r\n {\r\n for(let m of this.createEntity.getDrawMeshes())\r\n {\r\n m.rotation.y = 0;\r\n m.position.z = wallPos.z;\r\n }\r\n }\r\n }\r\n else\r\n {\r\n mesh2f.material = redBoxMat;\r\n mesh1f.material = redBoxMat;\r\n }\r\n }\r\n\r\n windowMouseUpEvnet()\r\n {\r\n const otherScene = this.viewer.$SceneLoader.drawScenes.find(x => x!=this);\r\n const winEnt = this.createEntity;\r\n const winMeshes = winEnt.getDrawMeshes().filter(x=>x.info.ctgrName == 'Window');\r\n if(winMeshes[0].material.name === 'greenBoxMaterial')\r\n {\r\n winMeshes.forEach(x=>x.material = x._scene.getMaterialByName('Window2dMat'));\r\n\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMeshs =this.instance.multiPick(this.instance.pointerX, this.instance.pointerY).map(x=>x.pickedMesh);\r\n this.createEntity.setEnable(this.instance,true)\r\n\r\n const pickEnts = pickedMeshs.filter(x=>x.entity)\r\n .filter(x=>x.entity?.moduleEntity)\r\n .filter(x=>x.entity.moduleEntity.floorPenetrate != this.floor)\r\n .map(x=>x.entity);\r\n\r\n const wallEntity = pickEnts.find(x=>x.info.ctgrName === 'Wall');\r\n const moduleEnt = wallEntity.moduleEntity;\r\n const roots = moduleEnt.getAllRoots();\r\n winEnt.moduleEntity = moduleEnt;\r\n winEnt.parent = wallEntity;\r\n \r\n for(let m of winEnt.getDrawMeshes())\r\n {\r\n const oriPos = m.getAbsolutePosition();\r\n m.parent = roots.find(x=>x._scene === m._scene);\r\n m.setAbsolutePosition(oriPos)\r\n m.rotation.y += CsgHelper.getParentRotation(m);\r\n m.setEnabled(true)\r\n if(wallEntity.getWorldWallType().type === 'Vertical')\r\n {\r\n m.scaling.x = roots[0].scaling.z;\r\n m.scaling.y = roots[0].scaling.x;\r\n }\r\n else\r\n {\r\n m.scaling.y = roots[0].scaling.z;\r\n m.scaling.x = roots[0].scaling.x;\r\n }\r\n if(m.info.ctgrName === 'Box')\r\n {\r\n m.position.y = 2.2;\r\n m.setEnabled(true)\r\n m.isVisible = true;\r\n }\r\n }\r\n winEnt.info.parentName = wallEntity.info.name;\r\n winEnt.drawMeshToViewMeshTrasfrom();\r\n winEnt.createCrushMesh();\r\n winEnt.viewMeshes.forEach(x=>x.setEnabled(true))\r\n moduleEnt.Windows.push(winEnt)\r\n moduleEnt.Entities.push(winEnt)\r\n moduleEnt.setPenetrateMode(otherScene.floor)\r\n this.viewer.$SceneLoader.makeHistory(new HistoryCommand.CreateCommand(this.createEntity,SaveHelper.makeSaveData(moduleEnt)));\r\n \r\n this.createEntity = null;\r\n otherScene.createEntity = null;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n \r\n return true;\r\n }\r\n\r\n doorMouseMoveEvent(pos)\r\n {\r\n const otherScene = this.viewer.$SceneLoader.drawScenes.find(x => x!=this);\r\n this.createEntity.setEnable(this.instance,true)\r\n pos.y += 3.2;\r\n this.createEntity.setPosition(this.instance,pos)\r\n this.createEntity.setPosition(otherScene.instance,pos)\r\n\r\n const doorName = (this.createEntity.info.ctgrName+this.createEntity.info.typeName.replace(/[0-9]/g,\"\"))\r\n const greenBoxMat = this.instance.getMaterialByName(doorName)?.clone();\r\n greenBoxMat.name = 'greenDoorBoxMaterial';\r\n greenBoxMat.diffuseColor = new BABYLON.Color3(0.35,0.855,0.35);\r\n const redBoxMat = this.instance.getMaterialByName(doorName).clone();\r\n redBoxMat.name = 'redDoorBoxMaterial'\r\n redBoxMat.diffuseColor = new BABYLON.Color3(0.855,0.35,0.35);\r\n const mesh1f = this.createEntity.drawMeshes1f.find(x=>x.info.ctgrName!= 'Box')\r\n const mesh2f = this.createEntity.drawMeshes2f.find(x=>x.info.ctgrName!= 'Box')\r\n\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMeshs =this.instance.multiPick(this.instance.pointerX, this.instance.pointerY).map(x=>x.pickedMesh);\r\n this.createEntity.setEnable(this.instance,true)\r\n\r\n const pickEnts = pickedMeshs.filter(x=>x.entity)\r\n .filter(x=>x.entity?.moduleEntity)\r\n .filter(x=>x.entity.moduleEntity.floorPenetrate != this.floor)\r\n .map(x=>x.entity);\r\n\r\n const wallEntity = pickEnts.find(x=>x.info.ctgrName === 'Wall');\r\n const wallMesh = wallEntity?.getDrawMeshes().find(x=>x._scene === this.instance);\r\n\r\n if(wallMesh)\r\n {\r\n if(!wallMesh?.entity?.moduleEntity?.floorPenetrate)\r\n {\r\n return;\r\n }\r\n if(wallMesh.entity.moduleEntity.floorPenetrate === this.floor)\r\n {\r\n return;\r\n }\r\n const dashLine = wallEntity.createCenterLine(this.instance);\r\n this.snapLines.push(dashLine);\r\n\r\n mesh2f.material = greenBoxMat;\r\n mesh1f.material = greenBoxMat;\r\n const wallType = wallEntity.getWorldWallType();\r\n const wallPos = wallMesh.getAbsolutePosition();\r\n const wallthk = wallEntity.getWallThickness();\r\n if(wallType.type == 'Vertical')\r\n {\r\n for(let m of this.createEntity.getDrawMeshes())\r\n {\r\n const mbbox = m.getBoundingInfo().boundingBox;\r\n const msize = mbbox.extendSize.multiply(new Vector3(2,2,2));\r\n \r\n m.rotation.y = Math.PI /2;\r\n m.position.x = wallPos.x - (msize.y/2 - wallthk/2)*this.doorDir;\r\n if(this.doorDir === -1)\r\n {\r\n m.rotation.y += Math.PI;\r\n }\r\n }\r\n }\r\n else\r\n {\r\n for(let m of this.createEntity.getDrawMeshes())\r\n {\r\n const mbbox = m.getBoundingInfo().boundingBox;\r\n const msize = mbbox.extendSize.multiply(new Vector3(2,2,2));\r\n \r\n m.rotation.y = 0;\r\n m.position.z = wallPos.z - (msize.y/2 - wallthk/2)*this.doorDir;\r\n if(this.doorDir === -1)\r\n {\r\n m.rotation.y += Math.PI;\r\n }\r\n }\r\n }\r\n }\r\n else\r\n {\r\n mesh2f.material = redBoxMat;\r\n mesh1f.material = redBoxMat;\r\n }\r\n }\r\n\r\n doorMouseUpEvent()\r\n {\r\n const otherScene = this.viewer.$SceneLoader.drawScenes.find(x => x!=this);\r\n const doorEnt = this.createEntity;\r\n const doorMeshes = doorEnt.getDrawMeshes().filter(x=>x.info.ctgrName == 'Door');\r\n \r\n if(doorMeshes[0].material.name === 'greenDoorBoxMaterial')\r\n {\r\n const doorName = (this.createEntity.info.ctgrName+this.createEntity.info.typeName.replace(/[0-9]/g,\"\"))\r\n doorMeshes.forEach(x=>x.material = x._scene.getMaterialByName(doorName));\r\n\r\n this.createEntity.setEnable(this.instance,false)\r\n const pickedMeshs =this.instance.multiPick(this.instance.pointerX, this.instance.pointerY).map(x=>x.pickedMesh);\r\n this.createEntity.setEnable(this.instance,true)\r\n\r\n const pickEnts = pickedMeshs.filter(x=>x.entity)\r\n .filter(x=>x.entity?.moduleEntity)\r\n .filter(x=>x.entity.moduleEntity.floorPenetrate != this.floor)\r\n .map(x=>x.entity);\r\n\r\n const wallEntity = pickEnts.find(x=>x.info.ctgrName === 'Wall');\r\n const moduleEnt = wallEntity.moduleEntity;\r\n const roots = moduleEnt.getAllRoots();\r\n const isRot = Math.abs(Number(Math.sin(moduleEnt.viewRootMesh.rotation.y).toFixed(2)));\r\n doorEnt.moduleEntity = moduleEnt;\r\n doorEnt.parent = wallEntity;\r\n\r\n for(let m of doorEnt.getDrawMeshes())\r\n {\r\n const oriPos = m.getAbsolutePosition();\r\n m.parent = roots.find(x=>x._scene === m._scene);\r\n m.setAbsolutePosition(oriPos);\r\n m.position.y = 3.3;\r\n m.rotation.y += CsgHelper.getParentRotation(m);\r\n m.setEnabled(true)\r\n \r\n if(wallEntity.getWorldWallType().type === 'Vertical')\r\n {\r\n m.scaling.x = roots[0].scaling.z;\r\n m.scaling.y = roots[0].scaling.x;\r\n if(isRot == 1)\r\n {\r\n m.scaling.x = roots[0].scaling.x*-1;\r\n m.scaling.y = roots[0].scaling.z*-1;\r\n }\r\n }\r\n else\r\n {\r\n m.scaling.y = roots[0].scaling.z;\r\n m.scaling.x = roots[0].scaling.x;\r\n if(isRot == 1)\r\n {\r\n m.scaling.y = roots[0].scaling.x*-1;\r\n m.scaling.x = roots[0].scaling.z*-1;\r\n }\r\n }\r\n if(m.info.ctgrName === 'Box')\r\n {\r\n m.position.y = 2.2;\r\n }\r\n }\r\n doorEnt.info.parentName = wallEntity.info.name;\r\n doorEnt.drawMeshToViewMeshTrasfrom();\r\n doorEnt.createCrushMesh();\r\n doorEnt.viewMeshes.forEach(x=>x.setEnabled(true))\r\n moduleEnt.Doors.push(doorEnt)\r\n moduleEnt.Entities.push(doorEnt)\r\n moduleEnt.setPenetrateMode(otherScene.floor)\r\n this.viewer.$SceneLoader.makeHistory(new HistoryCommand.CreateCommand(this.createEntity,SaveHelper.makeSaveData(moduleEnt)));\r\n \r\n this.createEntity = null;\r\n otherScene.createEntity = null;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}","import { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport * as BABYLON from \"@babylonjs/core/Legacy/legacy\";\r\nimport * as Material from '@babylonjs/materials'\r\nimport SceneBase from \"./SceneBase\"\r\nimport { AdvancedDynamicTexture,TextBlock } from '@babylonjs/gui/2D';\r\nimport * as GUI from '@babylonjs/gui';\r\n\r\nexport default class Scene3d extends SceneBase{\r\n constructor(canvas,viewer)\r\n {\r\n super(canvas,viewer);\r\n this.is2d = false;\r\n this.advancedTexture = AdvancedDynamicTexture.CreateFullscreenUI(\"UI\");\r\n this.setEvents();\r\n this.addLight();\r\n this.setFloorText();\r\n this.setGuidText();\r\n }\r\n\r\n setFloorText()\r\n {\r\n if(!this.floorText)\r\n {\r\n this.floorText = new TextBlock();\r\n }\r\n let areaMm = 0;\r\n let area = 0;\r\n\r\n this.viewer.$SceneLoader.EntityLoader.modules.forEach(m=>{\r\n const mArea = m.getArea(false);\r\n areaMm += Number(mArea.areaMm);\r\n area += Number(mArea.area);\r\n })\r\n\r\n this.floorText.text = `연면적 (1층+2층) : ${areaMm.toFixed(2)}㎡ (${area.toFixed(1)}평)`;\r\n this.floorText.color = \"rgba(0, 0, 0, 0.75)\";\r\n this.floorText.fontSize = 18;\r\n this.floorText.textHorizontalAlignment = GUI.Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n this.floorText.top = `-${this.canvasElement.clientHeight/2 - 22}rem`;\r\n this.floorText.left = `${this.canvasElement.clientWidth/50}rem`;\r\n this.floorText.isVisible = this.viewer.$SceneLoader.isShowArea;\r\n this.advancedTexture.addControl(this.floorText);\r\n }\r\n\r\n setGuidText()\r\n {\r\n this.guidText = new TextBlock();\r\n this.guidText.name = 'guidText';\r\n this.guidText.text =`※ 현재 표기되는 바닥면적 및 연면적은 단순 모듈 합계 면적이며, 본 설계시 면적 변경이 있을 수 있음\\n※ 테라스 및 베란다의 면적은 합계에서 제외 되었음.`;\r\n this.guidText.top = `${this.canvasElement.clientHeight/2 - 40}rem`;\r\n this.guidText.left = `-${this.canvasElement.clientWidth/50}rem`;\r\n this.guidText.color = \"rgba(0, 0, 0, 0.5)\";\r\n this.guidText.fontSize = '10';\r\n this.guidText.textHorizontalAlignment = GUI.Control.HORIZONTAL_ALIGNMENT_RIGHT;\r\n this.advancedTexture.addControl(this.guidText);\r\n }\r\n\r\n addLight()\r\n {\r\n const intensity = 0.3;\r\n const light1 = new BABYLON.HemisphericLight(\"light1\", new Vector3(1, 1, 0), this.instance);\r\n light1.intensity = intensity;\r\n light1.direction = new BABYLON.Vector3(0.3, -0.5, 1);\r\n \r\n const light2 = new BABYLON.HemisphericLight(\"light2\", new Vector3(-1, 1, 0), this.instance);\r\n light2.intensity = intensity - 0.1;\r\n light2.direction = new BABYLON.Vector3(-0.3, -0.5, -1);\r\n\r\n const light3 = new BABYLON.HemisphericLight(\"light3\", new Vector3(0, -1, 0), this.instance);\r\n light3.intensity = intensity - 0.05;\r\n light3.direction = new BABYLON.Vector3(0, 1, 0);\r\n\r\n // const line = BABYLON.MeshBuilder.CreateLines(\"lines\", { points:[new Vector3(1, 1, 0),new BABYLON.Vector3(0.3, -0.5, 1)] }, this.instance);\r\n // line.color = new BABYLON.Color3(0,0,1)\r\n\r\n // const line1= BABYLON.MeshBuilder.CreateLines(\"lines\", { points:[new Vector3(-1, 1, 0),new BABYLON.Vector3(-0.3, -0.5, -1)] }, this.instance);\r\n // line1.color = new BABYLON.Color3(1,0,0)\r\n }\r\n\r\n setEvents()\r\n {\r\n this.instance.onPointerObservable.add(evt => {this.handleMouseWheel(evt)}, BABYLON.PointerEventTypes.POINTERWHEEL);\r\n }\r\n\r\n handleMouseWheel(evt)\r\n {\r\n const scene = this.instance;\r\n const camera = this.instance.getCameraByName(\"Camera\");\r\n const ground = scene.getMeshByName(\"ground\");\r\n const zoomRate = ((camera.radius - camera.minZ) / (camera.maxZ - camera.minZ))*10000;\r\n \r\n //camera.panningSensibility = Math.sqrt(zoomRate-zoomRate/2)*0.1;\r\n camera.panningSensibility = 10000 * 1/zoomRate;\r\n\r\n if(zoomRate<20)\r\n {\r\n ground.material = scene.getMaterialByName(\"smallGridMat\");\r\n }\r\n else if(zoomRate>80)\r\n {\r\n ground.material = scene.getMaterialByName(\"bigGridMat\");\r\n }\r\n else\r\n {\r\n ground.material = scene.getMaterialByName(\"nomalGridMat\");\r\n }\r\n }\r\n}","import * as BABYLON from \"@babylonjs/core/Legacy/legacy\";\r\nimport * as Material from '@babylonjs/materials'\r\n\r\nexport default class MaterialLoader{\r\n constructor()\r\n {\r\n\r\n }\r\n\r\n LoadCommonMaterials(scene)\r\n {\r\n const smallGridMat = new BABYLON.StandardMaterial(\"smallGridMat\",scene);\r\n const smallGridTexture = new BABYLON.Texture(\"./materials/Grid/smallGrid.png\",scene);\r\n smallGridTexture.uScale = 2000;\r\n smallGridTexture.vScale = 2000;\r\n smallGridMat.diffuseTexture = smallGridTexture;\r\n smallGridMat.specularColor = new BABYLON.Color3(0, 0, 0);\r\n smallGridMat.specularPower = 0;\r\n\r\n const nomalGridMat = new BABYLON.StandardMaterial(\"nomalGridMat\",scene);\r\n const nomalGridTexture = new BABYLON.Texture(\"./materials/Grid/nomalGrid.png\",scene);\r\n nomalGridTexture.uScale = 2000;\r\n nomalGridTexture.vScale = 2000;\r\n nomalGridMat.diffuseTexture = nomalGridTexture;\r\n nomalGridMat.specularColor = new BABYLON.Color3(0, 0, 0);\r\n nomalGridMat.specularPower = 0;\r\n\r\n const bigGridMat = new BABYLON.StandardMaterial(\"bigGridMat\",scene);\r\n const bigGridTexture = new BABYLON.Texture(\"./materials/Grid/bigGrid.png\",scene);\r\n bigGridTexture.uScale = 2000;\r\n bigGridTexture.vScale = 2000;\r\n bigGridMat.diffuseTexture = bigGridTexture;\r\n bigGridMat.specularColor = new BABYLON.Color3(0, 0, 0);\r\n bigGridMat.specularPower = 0;\r\n\r\n const greenBoxMaterial = new BABYLON.StandardMaterial(\"greenBoxMaterial\", scene);\r\n greenBoxMaterial.diffuseColor = new BABYLON.Color3(0,5,0);\r\n greenBoxMaterial.alpha = 0.3;\r\n greenBoxMaterial.specularColor = new BABYLON.Color3(0, 0, 0);\r\n greenBoxMaterial.specularPower = 0;\r\n greenBoxMaterial.backFaceCulling = false;\r\n\r\n const redBoxMaterial = new BABYLON.StandardMaterial(\"redBoxMaterial\", scene);\r\n redBoxMaterial.diffuseColor = new BABYLON.Color3(5,0,0);\r\n redBoxMaterial.alpha = 0.1;\r\n redBoxMaterial.specularColor = new BABYLON.Color3(0, 0, 0);\r\n redBoxMaterial.specularPower = 0;\r\n redBoxMaterial.backFaceCulling = false;\r\n\r\n const blueBoxMaterial = new BABYLON.StandardMaterial(\"blueBoxMaterial\", scene);\r\n blueBoxMaterial.diffuseColor = new BABYLON.Color3(0,0,5);\r\n blueBoxMaterial.alpha = 0.1;\r\n blueBoxMaterial.specularColor = new BABYLON.Color3(0, 0, 0);\r\n blueBoxMaterial.specularPower = 0;\r\n blueBoxMaterial.backFaceCulling = false;\r\n\r\n const openningMat = new BABYLON.StandardMaterial(\"OpenningMat\",scene);\r\n openningMat.diffuseColor = new BABYLON.Color3(1, 1, 1);\r\n openningMat.specularColor = new BABYLON.Color3(0, 0, 0);\r\n openningMat.specularPower = 0;\r\n openningMat.alpha = 0;\r\n\r\n const wallTileMat = new Material.PBRCustomMaterial(\"WallTileMat\",scene);\r\n const wallTileTexture = new BABYLON.Texture(\"./materials/textures/Demountable_Ceiling_Tile.jpg\",scene);\r\n // wallTileTexture.uScale = 0.5;\r\n // wallTileTexture.vScale = 0.5;\r\n wallTileMat.albedoTexture = wallTileTexture;\r\n wallTileMat.bumpTexture = wallTileTexture;\r\n wallTileMat.metallic = 0.\r\n wallTileMat.roughness = 1.\r\n wallTileMat.specularColor = new BABYLON.Color3(0, 0, 0)\r\n wallTileMat.maxSimultaneousLights = 200;\r\n wallTileMat.Fragment_Before_Fog(this.getShaderCode(scene));\r\n }\r\n\r\n LoadDrawMaterials(scene)\r\n {\r\n const Door2dMat = new BABYLON.StandardMaterial(\"Door2dMat\",scene);\r\n const Door2dTexture = new BABYLON.Texture(\"./materials/2D/Doors/Door_900x2100.png\",scene);\r\n Door2dMat.diffuseTexture = Door2dTexture;\r\n Door2dMat.specularColor = new BABYLON.Color3(0, 0, 0); \r\n Door2dMat.specularPower = 0;\r\n Door2dMat.backFaceCulling = false;\r\n Door2dMat.diffuseTexture.hasAlpha = true;\r\n\r\n const winSvg = `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `\r\n const Window2dMat = new BABYLON.StandardMaterial(\"Window2dMat\",scene);\r\n const Window2dTexture = new BABYLON.Texture('data:image/svg+xml;base64,' + btoa(winSvg),scene);\r\n Window2dMat.diffuseTexture = Window2dTexture;\r\n Window2dMat.specularColor = new BABYLON.Color3(0, 0, 0);\r\n Window2dMat.specularPower = 0;\r\n Window2dMat.backFaceCulling = false;\r\n\r\n const wallPointMat = new BABYLON.StandardMaterial(\"WallPointMat\", scene);\r\n wallPointMat.diffuseColor = new BABYLON.Color3(0.47058823529411764,0.7450980392156863,1);\r\n wallPointMat.alpha = 0.8;\r\n wallPointMat.specularColor = new BABYLON.Color3(0, 0, 0);\r\n wallPointMat.specularPower = 0;\r\n\r\n const wallRedPointMat = new BABYLON.StandardMaterial(\"WallRedPointMat\", scene);\r\n wallRedPointMat.diffuseColor = new BABYLON.Color3(1,0,0);\r\n wallRedPointMat.alpha = 0.8;\r\n wallRedPointMat.specularColor = new BABYLON.Color3(0, 0, 0);\r\n wallRedPointMat.specularPower = 0;\r\n\r\n const wallOtherPointMat = new BABYLON.StandardMaterial(\"WallOtherPointMat\", scene);\r\n wallOtherPointMat.diffuseColor = new BABYLON.Color3(1,1,1);\r\n wallOtherPointMat.alpha = 1;\r\n wallOtherPointMat.specularColor = new BABYLON.Color3(0, 0, 0);\r\n wallOtherPointMat.specularPower = 0;\r\n\r\n const wallMat = new Material.PBRCustomMaterial(\"WallMat\",scene);\r\n wallMat.albedoColor = new BABYLON.Color3(0.1137, 0.1529, 0.1922);\r\n wallMat.metallic = 0.\r\n wallMat.roughness = 1.\r\n wallMat.specularColor = new BABYLON.Color3(0, 0, 0)\r\n wallMat.maxSimultaneousLights = 200;\r\n wallMat.Fragment_Before_Fog(this.getShaderCode(scene));\r\n wallMat.backFaceCulling = true;\r\n\r\n const wallAlphaMat = new Material.PBRCustomMaterial(\"WallAlphaMat\",scene);\r\n wallAlphaMat.albedoColor = new BABYLON.Color3(0.1137, 0.1529, 0.1922);\r\n wallAlphaMat.metallic = 0.\r\n wallAlphaMat.roughness = 1.\r\n wallAlphaMat.alpha = 0.4\r\n wallAlphaMat.specularColor = new BABYLON.Color3(0, 0, 0)\r\n wallAlphaMat.maxSimultaneousLights = 200;\r\n wallAlphaMat.Fragment_Before_Fog(this.getShaderCode(scene));\r\n wallAlphaMat.backFaceCulling = true;\r\n\r\n const wallBackMat = new Material.PBRCustomMaterial(\"WallBackMat\",scene);\r\n wallBackMat.albedoColor = new BABYLON.Color3(0.1137, 0.1529, 0.1922);\r\n wallBackMat.metallic = 0.\r\n wallBackMat.roughness = 1.\r\n wallBackMat.specularColor = new BABYLON.Color3(0, 0, 0)\r\n wallBackMat.maxSimultaneousLights = 200;\r\n wallBackMat.Fragment_Before_Fog(this.getShaderCode(scene));\r\n wallBackMat.backFaceCulling = false;\r\n }\r\n\r\n LoadViewMaterials(scene)\r\n {\r\n const wallMat = new Material.PBRCustomMaterial(\"WallMat\",scene);\r\n wallMat.metallic = 0.\r\n wallMat.roughness = 1.\r\n wallMat.specularColor = new BABYLON.Color3(0, 0, 0)\r\n wallMat.maxSimultaneousLights = 200;\r\n wallMat.backFaceCulling = true;\r\n wallMat.Fragment_Before_Fog(this.getShaderCode(scene));\r\n wallMat.twoSidedLighting = false;\r\n\r\n const wallBackMat = new Material.PBRCustomMaterial(\"WallBackMat\",scene);\r\n wallBackMat.metallic = 0.\r\n wallBackMat.roughness = 1.\r\n wallBackMat.specularColor = new BABYLON.Color3(0, 0, 0)\r\n wallBackMat.maxSimultaneousLights = 200;\r\n wallBackMat.Fragment_Before_Fog(this.getShaderCode(scene));\r\n wallBackMat.backFaceCulling = true;\r\n wallBackMat.doubleSided = true;\r\n\r\n const paintMat = new Material.PBRCustomMaterial(\"paintMat\",scene);\r\n // const paintTexture = new BABYLON.Texture(\"./materials/textures/painted_concrete_diff.jpg\",scene);\r\n // const paintNomalTexture = new BABYLON.Texture(\"./materials/textures/painted_concrete_nor_gl.jpg\",scene);\r\n // paintMat.albedoTexture = paintTexture\r\n // paintMat.bumpTexture = paintNomalTexture\r\n paintMat.metallic = 0.\r\n paintMat.roughness = 1.\r\n paintMat.albedoColor = new BABYLON.Color3(0.333, 0.333, 0.333);\r\n }\r\n\r\n getShaderCode(scene)\r\n {\r\n const engine = scene.getEngine();\r\n const maxHoleCount = 100;\r\n let shaderCode = '';\r\n for(let i = 0; i< maxHoleCount; i++)\r\n {\r\n shaderCode +=`\r\n \\n\r\n #if defined(PROJECTEDLIGHTTEXTURE${i})\r\n strq = textureProjectionMatrix${i} * vec4(vPositionW, 1.0);\r\n strq /= strq.w;\r\n proj = strq.x < 0. || strq.x > 1. || strq.y < 0. || strq.y > 1. ? vec3(0.) : texture${engine.version === 1 && engine.name === \"WebGL\" ? \"2D\" : \"\"}(projectionLightSampler${i}, strq.xy).rgb;\r\n if (proj.r == 1. && proj.g == 0. && proj.b == 0.)\r\n {\r\n discard;\r\n }\r\n #endif\r\n \\n\r\n `\r\n }\r\n\r\n return `vec4 strq;\r\n vec3 proj;\r\n //finalColor = vec4(1., 0., 0., 1.);\r\n ${shaderCode}\r\n `;\r\n }\r\n}","import * as BABYLON from \"@babylonjs/core/Legacy/legacy\";\r\nimport { Vector3 } from '@babylonjs/core/Legacy/legacy';\r\nimport CsgHelper from '../Helper/CsgHelper'\r\n\r\nexport default class SpotItem extends BABYLON.SpotLight\r\n{\r\n constructor(target,instance,wallType,is2d = false)\r\n {\r\n const spotPos = new BABYLON.Vector3(0, 0, 0);\r\n let spotDir = new Vector3(wallType === 'Horizontal' ? 0 : 1 ,0 ,wallType === 'Horizontal' ? -1 : 0);\r\n if(target.parent.rotation.y % Math.PI != 0)\r\n {\r\n spotDir = new Vector3(wallType === 'Horizontal' ? 1 : 0 ,0 ,wallType === 'Horizontal' ? 0 : -1);\r\n }\r\n super(null, spotPos, spotDir, 1, 1, instance);\r\n this.target = target;\r\n this.wallType = wallType;\r\n this.instance = instance;\r\n this.guideVisible = false;\r\n this.is2d = is2d;\r\n this.setSpotLightProjectionMatrix();\r\n\r\n this.projectionTexture = this.createTexture()\r\n this.includedOnlyMeshes = [instance.getMeshByName('spotBox')]\r\n this.intensity = 0\r\n \r\n }\r\n\r\n setSpotLightProjectionMatrix(){\r\n const child = [...this.target.getChildMeshes()];\r\n child.forEach(c=>c.parent = null)\r\n const bb = this.target.getHierarchyBoundingVectors()\r\n child.forEach(c=>c.parent = this.target)\r\n const size = bb.max.subtract(bb.min)\r\n if(this.is2d)\r\n {\r\n size.y = 6\r\n }\r\n const center = this.target.getBoundingInfo().boundingBox.centerWorld.clone();\r\n\r\n if(CsgHelper.getParentRotation(this.target) % Math.PI === 0)\r\n {\r\n if(this.wallType === 'Horizontal')\r\n {\r\n this.makeH(size,center)\r\n }\r\n else\r\n {\r\n this.makeV(size,center)\r\n }\r\n }\r\n else\r\n {\r\n if(this.wallType === 'Horizontal')\r\n {\r\n this.makeV(size,center)\r\n }\r\n else\r\n {\r\n this.makeH(size,center)\r\n }\r\n }\r\n \r\n \r\n this._projectionTextureProjectionLightDirty = false;\r\n this._projectionTextureDirty = true;\r\n }\r\n\r\n makeH(size,center)\r\n {\r\n this._projectionTextureProjectionLightMatrix = BABYLON.Matrix.OrthoOffCenterLH(\r\n -size.x/2 - center.x,\r\n size.x/2 - center.x,\r\n -size.y/2 + center.y,\r\n size.y/2 + center.y, 0, 1\r\n );\r\n\r\n //가이드 라인\r\n const p1 = new BABYLON.Vector3(-size.x/2 - center.x, -size.y/2 + center.y, center.z);\r\n const p2 = new BABYLON.Vector3(size.x/2 - center.x, -size.y/2 + center.y, center.z);\r\n const p3 = new BABYLON.Vector3(size.x/2 - center.x, size.y/2 + center.y, center.z);\r\n const p4 = new BABYLON.Vector3(-size.x/2 - center.x, size.y/2 + center.y, center.z);\r\n const points = [p1,p2,p3,p4,p1];\r\n const line = BABYLON.MeshBuilder.CreateLines(\"lines\", { points }, this.instance);\r\n line.color = new BABYLON.Color3(0,0,1)\r\n line.scaling.x = -1;\r\n line.position.z -= 0.2\r\n line.isVisible = this.guideVisible;\r\n\r\n if(this.guideLine)\r\n {\r\n this.guideLine.dispose();\r\n }\r\n this.guideLine = line;\r\n }\r\n\r\n makeV(size,center)\r\n {\r\n this._projectionTextureProjectionLightMatrix = BABYLON.Matrix.OrthoOffCenterLH(\r\n -size.z/2 - center.z ,\r\n size.z/2 - center.z ,\r\n -size.y/2 + center.y ,\r\n size.y/2 + center.y , 0,1\r\n );\r\n\r\n //가이드 라인\r\n const p1 = new BABYLON.Vector3(center.x, -size.y/2 + center.y, -size.z/2 - center.z);\r\n const p2 = new BABYLON.Vector3(center.x, -size.y/2 + center.y, size.z/2 - center.z);\r\n const p3 = new BABYLON.Vector3(center.x, size.y/2 + center.y, size.z/2 - center.z);\r\n const p4 = new BABYLON.Vector3(center.x, size.y/2 + center.y, -size.z/2 - center.z);\r\n const points = [p1,p2,p3,p4,p1];\r\n const line = BABYLON.MeshBuilder.CreateLines(\"lines\", { points }, this.instance);\r\n line.color = new BABYLON.Color3(0,0,1)\r\n line.scaling.z = -1;\r\n line.position.x += 0.2;\r\n line.isVisible = this.guideVisible;\r\n\r\n if(this.guideLine)\r\n {\r\n this.guideLine.dispose();\r\n }\r\n this.guideLine = line;\r\n }\r\n\r\n createTexture(){\r\n const textureSize = 1024\r\n\r\n const dynamicTexture = new BABYLON.DynamicTexture(\"discardTexture\", textureSize, this.instance, false, BABYLON.Constants.TEXTURE_NEAREST_SAMPLINGMODE)\r\n const context = dynamicTexture.getContext()\r\n\r\n context.fillStyle = 'rgb(255, 0, 0)'\r\n context.fillRect(0, 0, textureSize, textureSize)\r\n\r\n dynamicTexture.update()\r\n\r\n return dynamicTexture\r\n }\r\n\r\n update(target)\r\n {\r\n this.target = target;\r\n let spotDir = new Vector3(this.wallType === 'Horizontal' ? 0 : 1 ,0 ,this.wallType === 'Horizontal' ? -1 : 0);\r\n if(CsgHelper.getParentRotation(target) % Math.PI != 0)\r\n {\r\n spotDir = new Vector3(this.wallType === 'Horizontal' ? 1 : 0 ,0 ,this.wallType === 'Horizontal' ? 0 : -1);\r\n }\r\n this.direction = spotDir;\r\n this.guideLine?.dispose();\r\n this.setSpotLightProjectionMatrix();\r\n }\r\n\r\n delete()\r\n {\r\n const tempMeshes = [...this.includedOnlyMeshes];\r\n const tempMats = [];\r\n this.guideLine?.dispose();\r\n\r\n tempMeshes.forEach(o=>{\r\n tempMats.push(o._scene.getMaterialByName(o.material?.name));\r\n o.material = null;\r\n })\r\n\r\n this.includedOnlyMeshes = [this.instance.getMeshByName('spotBox')];\r\n this?.dispose();\r\n \r\n for(let i = 0; i < tempMeshes.length; i++)\r\n {\r\n tempMeshes[i].material = tempMats[i];\r\n }\r\n }\r\n}","import EntityBase from \"./EntityBase\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport SpotItem from '../Items/SpotItem'\r\nimport CsgHelper from '../Helper/CsgHelper'\r\n\r\nexport default class DockingEntity extends EntityBase{\r\n constructor()\r\n {\r\n super();\r\n this.crushMesh = null;\r\n this.crushMesh1f = null;\r\n this.crushMesh2f = null;\r\n this.isDock = true;\r\n }\r\n\r\n getCrushMeshes()\r\n {\r\n return [this.crushMesh,this.crushMesh1f,this.crushMesh2f];\r\n }\r\n\r\n setModule(moduleEnt)\r\n {\r\n this.moduleEntity = moduleEnt;\r\n this.drawMeshes1f.forEach(o=>o.parent = moduleEnt.draw1fRootMesh);\r\n this.drawMeshes2f.forEach(o=>o.parent = moduleEnt.draw2fRootMesh);\r\n this.viewMeshes.forEach(o=>o.parent = moduleEnt.viewRootMesh);\r\n }\r\n\r\n setCrushModuleEntity()\r\n {\r\n this.crushMesh.moduleEntity = this.moduleEntity;\r\n this.crushMesh1f.moduleEntity = this.moduleEntity;\r\n this.crushMesh2f.moduleEntity = this.moduleEntity;\r\n }\r\n\r\n createCrushMesh(root = null)\r\n {\r\n let rootEnt = root ? root : this.moduleEntity;\r\n if(this.crushMesh)\r\n {\r\n this.crushMesh.dispose();\r\n }\r\n const crushMesh = this.viewMeshes.find(x=>x.info.ctgrName === \"Box\")?.clone();\r\n if(!crushMesh)\r\n return;\r\n crushMesh.material = this.viewScene.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMesh = this.crushMeshSetting(crushMesh,rootEnt.viewRootMesh);\r\n\r\n if(this.crushMesh1f)\r\n {\r\n this.crushMesh1f.dispose();\r\n }\r\n const crushMesh1f = this.drawMeshes1f.find(x=>x.info.ctgrName === \"Box\")?.clone();\r\n if(!crushMesh1f)\r\n return;\r\n crushMesh1f.material = this.drawScene1f.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMesh1f = this.crushMeshSetting(crushMesh1f,rootEnt.draw1fRootMesh);\r\n\r\n if(this.crushMesh2f)\r\n {\r\n this.crushMesh2f.dispose();\r\n }\r\n const crushMesh2f = this.drawMeshes2f.find(x=>x.info.ctgrName === \"Box\")?.clone();\r\n if(!crushMesh2f)\r\n return;\r\n crushMesh2f.material = this.drawScene2f.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMesh2f = this.crushMeshSetting(crushMesh2f,rootEnt.draw2fRootMesh);\r\n }\r\n\r\n crushMeshSetting(crushMesh,rootMesh)\r\n {\r\n const pRot = CsgHelper.getParentRotation(crushMesh);\r\n const size = 0.45;\r\n const boxInfo = crushMesh.getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let height = boxInfo.boundingBox.extendSize.y * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n const length = width > depth ? width : depth;\r\n const newBox = BABYLON.MeshBuilder.CreateBox(null,{width : length, height : height, depth : size},crushMesh._scene);\r\n\r\n newBox.position = crushMesh.position.clone();\r\n newBox.rotation = crushMesh.rotation.clone();\r\n newBox.scaling = crushMesh.scaling.clone();\r\n newBox.material = crushMesh.material;\r\n\r\n crushMesh.dispose();\r\n crushMesh = newBox;\r\n crushMesh.parent = null;\r\n crushMesh.id = \"crushMesh\";\r\n \r\n const allWallMesh = this.parent.viewMeshes.concat(this.parent.getDrawMeshes())\r\n const wallMesh = allWallMesh.find(x=>x._scene === crushMesh._scene);\r\n let wallPos = wallMesh.getAbsolutePosition().clone();\r\n const tempCrush = crushMesh.clone();\r\n tempCrush.parent = rootMesh;\r\n tempCrush.setAbsolutePosition(wallPos);\r\n wallPos = tempCrush.position.clone();\r\n tempCrush.dispose();\r\n\r\n const wallType = this.parent.getWorldWallType().type;\r\n const sin = Math.abs(Number(Math.sin(rootMesh.rotation.y).toFixed(2)));\r\n const cos = Math.abs(Number(Math.cos(rootMesh.rotation.y).toFixed(2)));\r\n \r\n if(wallType === \"Horizontal\")\r\n {\r\n crushMesh.position.x = wallPos.x * sin + crushMesh.position.x * cos;\r\n crushMesh.position.z = wallPos.z * cos + crushMesh.position.z * sin;\r\n crushMesh.rotation.y = 0 - pRot\r\n }\r\n else\r\n {\r\n crushMesh.position.x = wallPos.x * cos + crushMesh.position.x * sin;\r\n crushMesh.position.z = wallPos.z * sin + crushMesh.position.z * cos;\r\n crushMesh.rotation.y = Math.PI/2 - pRot\r\n }\r\n // CsgHelper.initialMatrix(crushMesh)\r\n\r\n crushMesh.showBoundingBox = true;\r\n crushMesh.originPos = crushMesh.position.clone();\r\n crushMesh.moduleEntity = this.moduleEntity;\r\n crushMesh.rootMesh = rootMesh;\r\n crushMesh.parent = rootMesh;\r\n crushMesh.isVisible = false;\r\n crushMesh.entity = this;\r\n crushMesh.setEnabled(true); \r\n crushMesh.spot = new SpotItem(crushMesh,crushMesh._scene,this.parent.wallType, rootMesh._scene != this.viewScene.instance)\r\n crushMesh.spot.includedOnlyMeshes.push(wallMesh);\r\n //crushMesh.spot.parent = rootMesh;\r\n\r\n return crushMesh;\r\n }\r\n\r\n dispose()\r\n {\r\n if(this.crushMesh)\r\n {\r\n this.crushMesh.spot.delete();\r\n this.crushMesh.dispose();\r\n }\r\n if(this.crushMesh1f)\r\n {\r\n this.crushMesh1f.spot.delete();\r\n this.crushMesh1f.dispose();\r\n }\r\n if(this.crushMesh2f)\r\n {\r\n this.crushMesh2f.spot.delete();\r\n this.crushMesh2f.dispose();\r\n }\r\n this.drawMeshes1f.forEach(m=>m.dispose());\r\n this.drawMeshes2f.forEach(m=>m.dispose());\r\n this.viewMeshes.forEach(m=>m.dispose());\r\n\r\n if(this.moduleEntity)\r\n {\r\n this.moduleEntity.Entities = this.moduleEntity.Entities.filter(x => x != this);\r\n this.moduleEntity.Doors = this.moduleEntity.Doors.filter(x => x != this);\r\n this.moduleEntity.Openings = this.moduleEntity.Openings.filter(x => x != this);\r\n this.moduleEntity.Windows = this.moduleEntity.Windows.filter(x => x != this);\r\n }\r\n }\r\n\r\n snapMove(pos)\r\n {\r\n const meshes = this.viewMeshes.concat(this.getDrawMeshes()).concat(this.getCrushMeshes());\r\n \r\n for(let m of meshes)\r\n {\r\n const mPos = m.getAbsolutePosition();\r\n\r\n if(this.parent.getWorldWallType().type == \"Vertical\")\r\n {\r\n mPos.z = pos.z;\r\n }\r\n else\r\n {\r\n mPos.x = pos.x;\r\n }\r\n m.setAbsolutePosition(mPos);\r\n }\r\n }\r\n\r\n deleteEntity(scene, entity)\r\n {\r\n entity.moduleEntity.deleteChild(scene, entity);\r\n entity.moduleEntity.isFixed = true;\r\n entity.dispose();\r\n }\r\n\r\n // updateBox()\r\n // {\r\n // this.crushMesh.spot.guidLine.dispose();\r\n // this.crushMesh.spot.dispose();\r\n // this.crushMesh.dispose();\r\n \r\n // const m = this.viewMeshes.find(x=>x.info.ctgrName === this.info.ctgrName);\r\n // var pos = m.position.clone();\r\n // this.viewMeshes.concat(this.drawMeshes1f).concat(this.drawMeshes2f).forEach(mesh =>\r\n // {\r\n // if(mesh.info.ctgrName === 'Box')\r\n // mesh.position = pos;\r\n // });\r\n \r\n // this.createCrushMesh();\r\n // }\r\n}","import DockingEntity from \"./DockingEntity\";\r\nimport VectorHelper from \"../Helper/VectorHelper\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport * as GUI from '@babylonjs/gui/2D';\r\nimport SpotItem from '../Items/SpotItem'\r\nimport * as HistoryCommand from \"../Entities/historyCommands\"\r\nimport CsgHelper from '../Helper/CsgHelper'\r\n\r\nexport default class DoorEntity extends DockingEntity{\r\n constructor()\r\n {\r\n super();\r\n this.isSimbol = true;\r\n this.crushMesh = null;\r\n this.crushMesh1f = null;\r\n this.crushMesh2f = null;\r\n }\r\n\r\n setEnable(instance,value)\r\n {\r\n const meshes = this.getDrawMeshes().concat(this.viewMeshes);\r\n const targets = meshes.filter(x=>x._scene === instance);\r\n targets.forEach(mesh=>{\r\n mesh.setEnabled(value);\r\n })\r\n\r\n this.crushMesh?.setEnabled(value);\r\n this.crushMesh1f?.setEnabled(value);\r\n this.crushMesh2f?.setEnabled(value);\r\n\r\n this.crushMesh?.spot?.setEnabled(value);\r\n this.crushMesh1f?.spot?.setEnabled(value);\r\n this.crushMesh2f?.spot?.setEnabled(value);\r\n }\r\n\r\n getWallThickness()\r\n {\r\n return this.parent.getWallThickness();\r\n }\r\n\r\n async drawViewMesh()\r\n {\r\n this.viewMeshes.forEach(mesh =>{\r\n const info = mesh.info; \r\n if(info.ctgrName === 'Box')\r\n {\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n m1f.info = info;\r\n m2f.info = info;\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n m1f.position.y =2.2;\r\n m2f.position.y =2.2;\r\n }\r\n });\r\n\r\n const d1f = await this.createSimbol(this.drawScene1f.instance,this.drawMeshes1f);\r\n d1f.info = this.info;\r\n d1f.entity = this;\r\n d1f.setEnabled(true);\r\n const d2f = await this.createSimbol(this.drawScene2f.instance,this.drawMeshes2f);\r\n d2f.info = this.info;\r\n d2f.entity = this;\r\n d2f.setEnabled(true);\r\n this.drawMeshes1f.push(d1f);\r\n this.drawMeshes2f.push(d2f);\r\n }\r\n\r\n loadImage(url) {\r\n return new Promise((resolve, reject) => {\r\n const image = new Image();\r\n \r\n image.onload = () => {\r\n resolve(image);\r\n };\r\n \r\n image.onerror = (error) => {\r\n reject(error);\r\n };\r\n \r\n image.src = url;\r\n });\r\n }\r\n\r\n async createSimbol(sceneIns,meshes)\r\n {\r\n const doorName = (this.info.ctgrName+this.info.typeName.replace(/[0-9]/g,\"\"))\r\n const texturePath = `${this.viewScene.viewer.$DOOR_PATH}${doorName}/img/texture.png`;\r\n const image = await this.loadImage(texturePath);\r\n\r\n const box = meshes.find(x=>x.info.ctgrName === 'Box');\r\n box.isVisible = false;\r\n const boxInfo = box.getBoundingInfo();\r\n let width = (boxInfo.boundingBox.extendSize.x * 2).toFixed(2);\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n\r\n const vFlip = this.info.flipType[1];\r\n const hFlip = this.info.flipType[3];\r\n\r\n const doorMat = new BABYLON.StandardMaterial(doorName,sceneIns);\r\n const doorTexture = new BABYLON.Texture(texturePath,sceneIns);\r\n doorTexture.minFilter = BABYLON.Texture.TRILINEAR_SAMPLINGMODE;\r\n doorMat.diffuseTexture = doorTexture;\r\n doorMat.specularColor = new BABYLON.Color3(0, 0, 0); \r\n doorMat.specularPower = 0;\r\n doorMat.backFaceCulling = false;\r\n doorMat.diffuseTexture.hasAlpha = true;\r\n\r\n if(this.parent)\r\n {\r\n const thickness = this.parent.getWallThickness() / 2;\r\n if(this.parent.wallType == \"Horizontal\")\r\n {\r\n const height = (image.height*width)/image.width;\r\n const doorPlane = BABYLON.MeshBuilder.CreatePlane('doorPlane',{ width: width, height: height }, sceneIns);\r\n doorPlane.material = doorMat;\r\n doorPlane.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);\r\n doorPlane.position = box.position.clone();\r\n doorPlane.position.y = 3.2;\r\n doorPlane.position.z = this.parent.getOriginPos().z;\r\n \r\n if(vFlip === '1')\r\n {\r\n doorPlane.position.z += height/2-thickness;\r\n }\r\n else\r\n {\r\n doorPlane.position.z -= height/2-thickness;\r\n }\r\n \r\n if(vFlip === '1' && hFlip === '1')\r\n {\r\n doorPlane.scaling.x = -1;\r\n doorPlane.scaling.y = -1;\r\n }\r\n else if(hFlip === '1')\r\n {\r\n doorPlane.scaling.x = -1;\r\n }\r\n else if(vFlip === '1')\r\n {\r\n doorPlane.scaling.y = -1;\r\n }\r\n return doorPlane;\r\n }\r\n else\r\n {\r\n const height = (image.height*depth)/image.width;\r\n const doorPlane = BABYLON.MeshBuilder.CreatePlane('doorPlane',{ width: depth, height: height }, sceneIns);\r\n doorPlane.material = doorMat;\r\n doorPlane.rotation = new BABYLON.Vector3(Math.PI / 2, Math.PI / 2, 0);\r\n doorPlane.position = box.position.clone();\r\n doorPlane.position.y = 3.2;\r\n doorPlane.position.x = this.parent.getOriginPos().x;\r\n \r\n if(vFlip === '1')\r\n {\r\n doorPlane.position.x += height/2-thickness;\r\n }\r\n else\r\n {\r\n doorPlane.position.x -= height/2-thickness;\r\n }\r\n \r\n if(vFlip === '1' && hFlip === '1')\r\n {\r\n doorPlane.scaling.x = -1;\r\n doorPlane.scaling.y = -1;\r\n }\r\n else if(hFlip === '1')\r\n {\r\n doorPlane.scaling.x = -1;\r\n }\r\n else if(vFlip === '1')\r\n {\r\n doorPlane.scaling.y = -1;\r\n }\r\n return doorPlane;\r\n }\r\n }\r\n else\r\n {\r\n const height = (image.height*width)/image.width;\r\n const doorPlane = BABYLON.MeshBuilder.CreatePlane('doorPlane',{ width: width, height: height }, sceneIns);\r\n doorPlane.material = doorMat;\r\n doorPlane.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);\r\n doorPlane.position = box.position.clone();\r\n doorPlane.position.y = 3.2;\r\n return doorPlane;\r\n }\r\n }\r\n\r\n createRootMesh(pos = null)\r\n {\r\n try\r\n {\r\n const meshes = [];\r\n this.viewMeshes.filter(x=>x.info.ctgrName != 'Box').forEach(o=>{\r\n CsgHelper.bakeTransform(o);\r\n meshes.push(o);\r\n });\r\n \r\n const mergeMesh = BABYLON.Mesh.MergeMeshes(meshes, true, true, undefined, false, true);\r\n\r\n mergeMesh.info = this.info;\r\n mergeMesh.moduleEntity = this.moduleEntity;\r\n mergeMesh.parent = this.moduleEntity?.viewRootMesh;\r\n \r\n CsgHelper.bakeTransform(mergeMesh);\r\n\r\n const box = this.viewMeshes.find(x=>x.info.ctgrName === 'Box');\r\n mergeMesh.position = box.position.clone();\r\n mergeMesh.alwaysSelectAsActiveMesh = true;\r\n //mergeMesh.showBoundingBox = true;\r\n\r\n if(pos)\r\n {\r\n mergeMesh.position = pos;\r\n }\r\n\r\n // CsgHelper.initialMatrix(mergeMesh)\r\n // mergeMesh.parent = this.moduleEntity?.viewRootMesh;\r\n\r\n this.viewMeshes = [];\r\n this.viewMeshes.push(mergeMesh)\r\n this.viewMeshes.push(box)\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n }\r\n }\r\n\r\n getButtonData()\r\n {\r\n return [\r\n {\r\n type:'module',\r\n press:this.selectModule\r\n },{\r\n type:'door-mirror-h',\r\n press:this.mirrorh\r\n },{\r\n type:'door-mirror-v',\r\n press:this.mirrorv\r\n },\r\n // {\r\n // type:'copy',\r\n // press:this.copy\r\n // },\r\n {\r\n type:'delete',\r\n press:this.delete\r\n },\r\n ];\r\n }\r\n\r\n createContextPanel(scene)\r\n {\r\n var advancedTexture = this.getAdvancedTexture(scene.instance);\r\n var panels = this.getContextDefaultPanel();\r\n\r\n var pnButtons = this.createButtonPanel(advancedTexture, scene, this.info.ctgrName, this.getButtonData());\r\n panels.toolbar.addControl(pnButtons);\r\n\r\n this.contextPanels.push(panels.toolbar);\r\n\r\n var box = this.getBoundingBox2d(scene);\r\n var posMesh = new BABYLON.Mesh(\"tempMesh\", scene.instance);\r\n posMesh.position = box.center;\r\n this.boundingSideMeshes.push(posMesh);\r\n\r\n this.contextPanels.forEach(panel =>\r\n {\r\n advancedTexture.addControl(panel);\r\n })\r\n\r\n this.createToolTip(advancedTexture);\r\n\r\n return this.contextPanels;\r\n }\r\n\r\n mirrorv(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MirrorvCommand(entity));\r\n var meshes2d = entity.getAll2DRootMeshes();\r\n var meshes3d = entity.getAll3DRootMeshes();\r\n\r\n var wallType = entity.parent.getWorldWallType().type;\r\n var wallLine = entity.parent.getWallLine();\r\n\r\n if(wallType == \"Vertical\")\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.y = -o.scaling.y;\r\n\r\n var pos2d = o.position.clone();\r\n pos2d.y = 0;\r\n\r\n var projectPosition = VectorHelper.calcNearestPointOnLine(wallLine.start, wallLine.end, pos2d);\r\n var dir = BABYLON.Vector3.Normalize(projectPosition.subtract(pos2d));\r\n o.position = VectorHelper.reflectToPoint(o.position, projectPosition, dir);\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.z = -o.scaling.z;\r\n\r\n var pos2d = o.position.clone();\r\n pos2d.y = 0;\r\n\r\n var projectPosition = VectorHelper.calcNearestPointOnLine(wallLine.start, wallLine.end, pos2d);\r\n var dir = BABYLON.Vector3.Normalize(projectPosition.subtract(pos2d));\r\n o.position = VectorHelper.reflectToPoint(o.position, projectPosition, dir);\r\n });\r\n }\r\n else\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.y = -o.scaling.y;\r\n\r\n var pos2d = o.position.clone();\r\n pos2d.y = 0;\r\n\r\n var projectPosition = VectorHelper.calcNearestPointOnLine(wallLine.start, wallLine.end, pos2d);\r\n var dir = BABYLON.Vector3.Normalize(projectPosition.subtract(pos2d));\r\n o.position = VectorHelper.reflectToPoint(o.position, projectPosition, dir);\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.z = -o.scaling.z;\r\n\r\n var pos2d = o.position.clone();\r\n pos2d.y = 0;\r\n\r\n var projectPosition = VectorHelper.calcNearestPointOnLine(wallLine.start, wallLine.end, pos2d);\r\n var dir = BABYLON.Vector3.Normalize(projectPosition.subtract(pos2d));\r\n o.position = VectorHelper.reflectToPoint(o.position, projectPosition, dir);\r\n });\r\n }\r\n }\r\n\r\n mirrorh(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MirrorhCommand(entity));\r\n var meshes2d = entity.getAll2DRootMeshes();\r\n var meshes3d = entity.getAll3DRootMeshes();\r\n\r\n var wallType = entity.parent.getWorldWallType().type;\r\n var entityCenter = entity.getSceneMeshes(scene)[1].position.clone();\r\n\r\n if(wallType == \"Vertical\")\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n\r\n var rotatePoint = VectorHelper.reflectToPoint(o.position.clone(), entityCenter, new BABYLON.Vector3(0, 0, 1));\r\n o.position = rotatePoint;\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n\r\n var rotatePoint = VectorHelper.reflectToPoint(o.position.clone(), entityCenter, new BABYLON.Vector3(0, 0, 1));\r\n //o.position = rotatePoint;\r\n });\r\n }\r\n else\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n\r\n var rotatePoint = VectorHelper.reflectToPoint(o.position.clone(), entityCenter, new BABYLON.Vector3(1, 0, 0));\r\n o.position = rotatePoint;\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n\r\n var rotatePoint = VectorHelper.reflectToPoint(o.position.clone(), entityCenter, new BABYLON.Vector3(1, 0, 0));\r\n //o.position = rotatePoint;\r\n });\r\n }\r\n }\r\n\r\n setDrawFlipType()\r\n {\r\n const v = Number(this.info.flipType[1]);\r\n const h = Number(this.info.flipType[3]);\r\n\r\n for(let vm of this.getDrawMeshes())\r\n {\r\n if(v === 1)\r\n {\r\n vm.scaling.y *= -1;\r\n }\r\n if(h === 1)\r\n {\r\n vm.scaling.x *= -1;\r\n }\r\n }\r\n }\r\n\r\n setViewFlipType()\r\n {\r\n const v = Number(this.info.flipType[1]);\r\n const h = Number(this.info.flipType[3]);\r\n\r\n for(let vm of this.viewMeshes)\r\n {\r\n if(v === 1)\r\n {\r\n vm.scaling.z *= -1;\r\n }\r\n if(h === 1)\r\n {\r\n vm.scaling.x *= -1;\r\n }\r\n }\r\n }\r\n\r\n setModuleParent()\r\n {\r\n if(!this.moduleEntity)\r\n return;\r\n\r\n this.drawMeshes1f.forEach(x=>x.parent = this.moduleEntity.draw1fRootMesh);\r\n this.drawMeshes2f.forEach(x=>x.parent = this.moduleEntity.draw2fRootMesh);\r\n this.viewMeshes.forEach(x=>x.parent = this.moduleEntity.viewRootMesh);\r\n \r\n }\r\n\r\n viewMeshToDrawMeshTrasfrom()\r\n {\r\n const drawDoorMeshes = this.getDrawMeshes().filter(o=>o.id === 'doorPlane');\r\n const drawBoxMeshes = this.getDrawMeshes().filter(o=>o.info.ctgrName === 'Box');\r\n const viewMesh = this.viewMeshes.find(x=>x.info.ctgrName === 'Door')\r\n const viewBoxMesh = this.viewMeshes.find(x=>x.info.ctgrName === 'Box')\r\n\r\n const vbox = viewMesh.getBoundingInfo().boundingBox;\r\n const vz = vbox.extendSize.z * 2;\r\n\r\n for(let drawDoorMesh of drawDoorMeshes)\r\n {\r\n drawDoorMesh.position.x = viewMesh.position.x;\r\n drawDoorMesh.position.z = viewMesh.position.z;\r\n drawDoorMesh.rotation.y = viewMesh.rotation.y;\r\n\r\n const dbox = drawDoorMesh.getBoundingInfo().boundingBox;\r\n const dy = dbox.extendSize.y *2;\r\n \r\n const gap = vz - dy;\r\n if(drawDoorMesh.rotation.y === 0)\r\n {\r\n drawDoorMesh.position.z -= gap/2 * drawDoorMesh.scaling.y * this.moduleEntity.viewRootMesh.scaling.z;\r\n }\r\n else\r\n {\r\n drawDoorMesh.position.x += gap/2 * drawDoorMesh.scaling.y * this.moduleEntity.viewRootMesh.scaling.x;\r\n }\r\n }\r\n\r\n for(let drawBoxMesh of drawBoxMeshes)\r\n {\r\n drawBoxMesh.position.x = viewBoxMesh.position.x;\r\n drawBoxMesh.position.z = viewBoxMesh.position.z;\r\n drawBoxMesh.rotation.y = viewBoxMesh.rotation.y;\r\n }\r\n }\r\n\r\n drawMeshToViewMeshTrasfrom()\r\n {\r\n const drawDoorMesh = this.getDrawMeshes().find(o=>o.id === 'doorPlane');\r\n const drawBoxMesh = this.getDrawMeshes().find(o=>o.info.ctgrName === 'Box');\r\n const viewMesh = this.viewMeshes.find(x=>x.info.ctgrName === 'Door')\r\n const viewBoxMesh = this.viewMeshes.find(x=>x.info.ctgrName === 'Box')\r\n const vbox = viewMesh.getBoundingInfo().boundingBox;\r\n const vz = vbox.extendSize.z * 2;\r\n const dbox = drawDoorMesh.getBoundingInfo().boundingBox;\r\n const dy = dbox.extendSize.y *2;\r\n const gap = vz - dy;\r\n\r\n viewMesh.scaling.x = drawDoorMesh.scaling.x;\r\n viewMesh.scaling.z = drawDoorMesh.scaling.y;\r\n viewBoxMesh.scaling = drawBoxMesh.scaling;\r\n viewMesh.rotation.y = drawDoorMesh.rotation.y;\r\n viewBoxMesh.rotation.y = drawBoxMesh.rotation.y;\r\n viewMesh.position = drawDoorMesh.position.clone();\r\n viewMesh.position.y = this.info.height/1000;\r\n viewBoxMesh.position = drawBoxMesh.position.clone();\r\n viewBoxMesh.position.y = this.info.height/1000;\r\n \r\n const sin = Number(Math.sin(viewMesh.rotation.y).toFixed(2));\r\n const cos = Number(Math.cos(viewMesh.rotation.y).toFixed(2));\r\n\r\n const wallType = this.parent.getWorldWallType().type;\r\n const rootScale = this.parent.moduleEntity.viewRootMesh.scaling.clone();\r\n if(this.parent.getWorldWallType().type === 'Vertical')\r\n {\r\n if(this.parent.wallType != wallType)\r\n {\r\n viewMesh.position.z -= ((gap/2 + this.info.vh/4000) * -cos)*rootScale.z;\r\n }\r\n else\r\n {\r\n viewMesh.position.x -= ((gap/2 + this.info.vh/4000) * sin)*rootScale.x;\r\n }\r\n }\r\n else\r\n {\r\n if(this.parent.wallType != wallType)\r\n {\r\n viewMesh.position.x -= ((gap/2 + this.info.vh/4000) * -sin)*rootScale.x;\r\n }\r\n else\r\n {\r\n viewMesh.position.z -= ((gap/2 + this.info.vh/4000) * cos)*rootScale.z;\r\n }\r\n }\r\n \r\n this.viewMeshes.forEach(x=>x.parent = this.moduleEntity.viewRootMesh)\r\n }\r\n}","import EntityBase from \"./EntityBase\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport * as Material from '@babylonjs/materials'\r\nimport CsgHelper from \"../Helper/CsgHelper\"\r\n\r\nexport default class FloorEntity extends EntityBase{\r\n constructor()\r\n {\r\n super();\r\n }\r\n\r\n getContextEntity()\r\n {\r\n return this.moduleEntity;\r\n }\r\n\r\n createRootMesh(targetMeshes,instance,color)\r\n {\r\n try\r\n {\r\n const meshes = [];\r\n let childs = [];\r\n\r\n let min = targetMeshes[0].getBoundingInfo().boundingBox.minimumWorld;\r\n let max = targetMeshes[0].getBoundingInfo().boundingBox.maximumWorld;\r\n \r\n targetMeshes.filter(x=>x.info.ctgrName != 'Box').forEach(o=>{\r\n const ch = o.getChildMeshes();\r\n ch.forEach(c=>c.setParent(null));\r\n\r\n meshes.push(o);\r\n childs = childs.concat(ch);\r\n\r\n let meshMin = o.getBoundingInfo().boundingBox.minimumWorld;\r\n let meshMax = o.getBoundingInfo().boundingBox.maximumWorld;\r\n\r\n min = BABYLON.Vector3.Minimize(min, meshMin);\r\n max = BABYLON.Vector3.Maximize(max, meshMax);\r\n });\r\n \r\n const mergeMesh = BABYLON.Mesh.MergeMeshes(meshes, true, true, undefined, false, true);\r\n \r\n mergeMesh.info = this.info;\r\n mergeMesh.moduleEntity = this.moduleEntity;\r\n mergeMesh.parent = this.moduleEntity.viewRootMesh;\r\n\r\n const newInfo = new BABYLON.BoundingInfo(min, max);\r\n const newPos = newInfo.boundingBox.center.clone();\r\n const retPos = newPos.subtract(mergeMesh.parent.position);\r\n \r\n const bbox = mergeMesh.getBoundingInfo().boundingBox;\r\n const translateMatrix = BABYLON.Matrix.Translation(-bbox.center.x, -bbox.center.y, -bbox.center.z)\r\n mergeMesh.bakeTransformIntoVertices(translateMatrix);\r\n mergeMesh.position = retPos.clone();\r\n mergeMesh.alwaysSelectAsActiveMesh = true\r\n mergeMesh.entity = this;\r\n\r\n childs.forEach(c=>{\r\n c.setParent(mergeMesh);\r\n })\r\n\r\n if(instance === this.viewScene.instance)\r\n {\r\n this.viewMeshes = [];\r\n this.viewMeshes.push(mergeMesh)\r\n }\r\n else if(instance === this.drawScene1f.instance)\r\n {\r\n this.drawMeshes1f = [];\r\n this.drawMeshes1f.push(mergeMesh)\r\n }\r\n else\r\n {\r\n this.drawMeshes2f = [];\r\n this.drawMeshes2f.push(mergeMesh)\r\n }\r\n\r\n this.updateMaterial(mergeMesh,color);\r\n CsgHelper.bakeTransform(mergeMesh)\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n }\r\n }\r\n\r\n updateMaterial(mergeMesh,color)\r\n {\r\n const length = mergeMesh.material?.subMaterials?.length;\r\n if(isFinite(length)<1)\r\n {\r\n return;\r\n }\r\n for(let i=0; i x != this);\r\n this.moduleEntity.Floors = this.moduleEntity.Floors.filter(x => x != this);\r\n }\r\n }\r\n}","import * as BABYLON from \"@babylonjs/core/Legacy/legacy\";\r\nimport { Vector3 } from '@babylonjs/core/Legacy/legacy';\r\nimport SpotItem from './SpotItem'\r\n\r\nexport default class TopSpotItem extends SpotItem\r\n{\r\n constructor(target,instance,wallType,is2d = false)\r\n {\r\n super(target,instance,wallType,is2d);\r\n this.direction = new Vector3(0,1,0);\r\n this.guideVisible = false;\r\n this.includedOnlyMeshes = [instance.getMeshByName('spotBox')]\r\n this.isOtherThrough = true;\r\n }\r\n\r\n setSpotLightProjectionMatrix(){\r\n const bb = this.target.getHierarchyBoundingVectors()\r\n const size = bb.max.subtract(bb.min)\r\n if(this.is2d)\r\n {\r\n size.y = 6\r\n }\r\n const center = this.target.getBoundingInfo().boundingBox.centerWorld.clone();\r\n\r\n this._projectionTextureProjectionLightMatrix = BABYLON.Matrix.OrthoOffCenterLH(\r\n size.x/2 + center.x ,\r\n -size.x/2 + center.x,\r\n size.z/2 - center.z ,\r\n -size.z/2 - center.z, 0,1\r\n );\r\n\r\n //가이드 라인\r\n const p1 = new BABYLON.Vector3(-size.x/2 + center.x, center.y, -size.z/2 - center.z);\r\n const p2 = new BABYLON.Vector3(-size.x/2 + center.x, center.y, size.z/2 - center.z);\r\n const p3 = new BABYLON.Vector3(size.x/2 + center.x, center.y, size.z/2 - center.z);\r\n const p4 = new BABYLON.Vector3(size.x/2 + center.x, center.y, -size.z/2 - center.z);\r\n const points = [p1,p2,p3,p4,p1];\r\n const line = BABYLON.MeshBuilder.CreateLines(\"lines\", { points }, this.instance);\r\n line.color = new BABYLON.Color3(0,0,1)\r\n line.scaling.z = -1;\r\n line.isVisible = this.guideVisible;\r\n line.position.y = 4;\r\n\r\n this.guideLine = line;\r\n \r\n this._projectionTextureProjectionLightDirty = false;\r\n this._projectionTextureDirty = true;\r\n }\r\n\r\n update(target)\r\n {\r\n this.target = target;\r\n this.guideLine?.dispose();\r\n this.setSpotLightProjectionMatrix();\r\n }\r\n}","import DockingEntity from \"./DockingEntity\";\r\nimport TopSpotItem from './../Items/TopSpotItem';\r\nimport { Vector3 } from \"@babylonjs/core\";\r\nimport CsgHelper from \"../Helper/CsgHelper\";\r\n\r\nexport default class StairsEntity extends DockingEntity{\r\n constructor()\r\n {\r\n super();\r\n this.crushMeshs = [];\r\n this.crushMesh1fs = [];\r\n this.crushMesh2fs = [];\r\n }\r\n\r\n drawViewMesh()\r\n {\r\n this.viewMeshes.forEach(mesh =>{\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n \r\n m1f.info = mesh.info;\r\n m2f.info = mesh.info;\r\n\r\n if(mesh.material.diffuseTexture)\r\n {\r\n const matName = mesh.material.diffuseTexture.name.split('/').slice(-1)[0];\r\n\r\n const mat1f = this.drawScene1f.instance.getMaterialByName(matName);\r\n if(!mat1f)\r\n {\r\n const oriMat = new BABYLON.StandardMaterial(matName,this.drawScene1f.instance);\r\n const oriTex = new BABYLON.Texture(mesh.material.diffuseTexture.name,this.drawScene1f.instance);\r\n oriMat.diffuseTexture = oriTex;\r\n oriMat.specularColor = new BABYLON.Color3(0, 0, 0); \r\n oriMat.specularPower = 0;\r\n m1f.material = oriMat;\r\n }\r\n else\r\n {\r\n m1f.material = mat1f;\r\n }\r\n\r\n const mat2f = this.drawScene2f.instance.getMaterialByName(matName);\r\n if(!mat2f)\r\n {\r\n const oriMat = new BABYLON.StandardMaterial(matName,this.drawScene2f.instance);\r\n const oriTex = new BABYLON.Texture(mesh.material.diffuseTexture.name,this.drawScene2f.instance);\r\n oriMat.diffuseTexture = oriTex;\r\n oriMat.specularColor = new BABYLON.Color3(0, 0, 0); \r\n oriMat.specularPower = 0;\r\n m2f.material = oriMat;\r\n }\r\n else\r\n {\r\n m2f.material = mat2f;\r\n }\r\n }\r\n\r\n m1f.enableEdgesRendering();\r\n m1f.edgesWidth = 4.0;\r\n m1f.edgesColor = new BABYLON.Color4(0.439, 0.447, 0.455, 1);\r\n\r\n m2f.enableEdgesRendering();\r\n m2f.edgesWidth = 4.0;\r\n m2f.edgesColor = new BABYLON.Color4(0.439, 0.447, 0.455, 1);\r\n\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n\r\n if(mesh.info.ctgrName === 'Box')\r\n {\r\n m1f.isVisible = false;\r\n m2f.isVisible = false;\r\n }\r\n });\r\n }\r\n\r\n createCrushMesh()\r\n {\r\n ////////////////////////\r\n if(this.crushMeshs.length > 0)\r\n {\r\n this.crushMesh.forEach(c=>c.dispose())\r\n }\r\n const crushMeshs = [];\r\n this.viewMeshes.filter(x=>x.info.ctgrName === \"Box\").forEach(x=>{\r\n crushMeshs.push(x.clone());\r\n })\r\n if(crushMeshs.length < 1)\r\n return;\r\n crushMeshs.forEach(x=>x.material = this.viewScene.instance.getMaterialByName(\"redBoxMaterial\"));\r\n this.crushMeshSetting(crushMeshs,crushMeshs[0].parent);\r\n this.crushMeshs = crushMeshs;\r\n ///////////////////////////\r\n\r\n ///////////////////////////\r\n if(this.crushMesh1fs.length > 0)\r\n {\r\n return;\r\n }\r\n const crushMesh1fs = [];\r\n this.drawMeshes1f.filter(x=>x.info.ctgrName === \"Box\").forEach(x=>{\r\n crushMesh1fs.push(x.clone());\r\n })\r\n if(crushMesh1fs.length < 1)\r\n return;\r\n crushMesh1fs.forEach(x=>x.material = this.drawScene1f.instance.getMaterialByName(\"redBoxMaterial\"));\r\n this.crushMeshSetting(crushMesh1fs,crushMesh1fs[0].parent);\r\n this.crushMesh1fs = crushMesh1fs;\r\n ////////////////////////////\r\n\r\n ///////////////////////////\r\n if(this.crushMesh2fs.length > 0)\r\n {\r\n return;\r\n }\r\n const crushMesh2fs = [];\r\n this.drawMeshes2f.filter(x=>x.info.ctgrName === \"Box\").forEach(x=>{\r\n crushMesh2fs.push(x.clone());\r\n })\r\n if(crushMesh2fs.length < 1)\r\n return;\r\n crushMesh2fs.forEach(x=>x.material = this.drawScene2f.instance.getMaterialByName(\"redBoxMaterial\"));\r\n this.crushMeshSetting(crushMesh2fs,crushMesh2fs[0].parent);\r\n this.crushMesh2fs = crushMesh2fs;\r\n ////////////////////////////////////\r\n }\r\n\r\n crushMeshSetting(crushMeshs,rootMesh)\r\n {\r\n if(crushMeshs.length < 1)\r\n return;\r\n\r\n crushMeshs.forEach(crushMesh=>{\r\n CsgHelper.initialMatrix(crushMesh)\r\n CsgHelper.setParentSubtractLocation(crushMesh,rootMesh)\r\n crushMesh.parent = null;\r\n crushMesh.id = \"crushMeshTop\";\r\n crushMesh.originPos = crushMesh.position.clone();\r\n crushMesh.moduleEntity = this.moduleEntity;\r\n crushMesh.rootMesh = rootMesh;\r\n crushMesh.parent = rootMesh;\r\n crushMesh.entity = this;\r\n crushMesh.isVisible = false;\r\n crushMesh.setEnabled(true);\r\n crushMesh.spot = new TopSpotItem(crushMesh, crushMesh._scene,null, rootMesh._scene != this.viewScene.instance)\r\n crushMesh.computeWorldMatrix();\r\n })\r\n\r\n // if(crushMeshs[0]._scene === this.viewScene.instance)\r\n // {\r\n // this.mergeCrushMesh(crushMeshs); \r\n // }\r\n }\r\n\r\n setCrushModuleEntity()\r\n {\r\n this.crushMeshs.forEach(c=>{\r\n c.moduleEntity = this.moduleEntity;\r\n })\r\n this.crushMesh1fs.forEach(c=>{\r\n c.moduleEntity = this.moduleEntity;\r\n })\r\n this.crushMesh2fs.forEach(c=>{\r\n c.moduleEntity = this.moduleEntity;\r\n })\r\n }\r\n\r\n async makeTempMesh(instance)\r\n {\r\n const currentScene = this.getCurrentScene(instance);\r\n const currentMeshes = this.getCurrentMeshes(instance);\r\n const crushMeshTops = this.crushMeshs;\r\n const csgList = []\r\n let isCrush = false;\r\n const tempScaling = crushMeshTops[0]?.scaling.clone();\r\n if(!tempScaling)\r\n return;\r\n for(let c of crushMeshTops)\r\n {\r\n c.scaling.x *= 1.0001;\r\n c.scaling.z *= 1.0001;\r\n const csg = BABYLON.CSG.FromMesh(c);\r\n csgList.push(csg)\r\n if(c.spot.includedOnlyMeshes.length > 1)\r\n isCrush = true;\r\n }\r\n\r\n if(!isCrush)\r\n return;\r\n\r\n const mList = [];\r\n for(let csg of csgList)\r\n {\r\n mList.push(csg.toMesh('backMesh',null,instance,true))\r\n }\r\n const mat = instance.getMaterialByName('WallBackMat');\r\n const result = BABYLON.Mesh.MergeMeshes(mList, true, true, undefined, false, true);\r\n result.parent = currentMeshes[0].parent;\r\n result.id = 'backMesh'\r\n result.material = mat;\r\n\r\n const bb = result.getBoundingInfo().boundingBox;\r\n const fHeight = 0.393;\r\n let height = bb.extendSize.y * 2;\r\n \r\n const sY = fHeight/height+0.01;\r\n result.scaling.y = sY;\r\n result.position.y = 3.1 - fHeight/2 + 0.09// - fHeight/2 -0.01;\r\n result.flipFaces(true)\r\n result.showBoundingBox = false;\r\n\r\n for(let c of crushMeshTops)\r\n {\r\n c.scaling = tempScaling.clone();\r\n const spot = c.spot;\r\n spot.includedOnlyMeshes.push(result);\r\n }\r\n }\r\n\r\n dispose()\r\n {\r\n if(this.crushMeshs){\r\n this.crushMeshs.forEach(o=>{\r\n o.spot?.delete();\r\n o.dispose();\r\n })\r\n }\r\n \r\n if(this.crushMesh1fs){\r\n this.crushMesh1fs.forEach(o=>{\r\n o.spot?.delete();\r\n o.dispose();\r\n })\r\n }\r\n\r\n if(this.crushMesh2fs){\r\n this.crushMesh2fs.forEach(o=>{\r\n o.spot?.delete();\r\n o.dispose();\r\n })\r\n }\r\n\r\n this.drawMeshes1f.forEach(m=>m.dispose());\r\n this.drawMeshes2f.forEach(m=>m.dispose());\r\n this.viewMeshes.forEach(m=>m.dispose());\r\n }\r\n}","import ContextItemBase from \"./ContextItemBase\";\r\nimport { Vector3 } from \"@babylonjs/core\";\r\nimport FloorEntity from \"./FloorEntity\";\r\nimport CsgHelper from \"../Helper/CsgHelper\"\r\nimport WallEntity from \"../Entities/WallEntity\"\r\nimport DoorEntity from \"../Entities/DoorEntity\"\r\nimport StairsEntity from \"../Entities/StairsEntity\"\r\nimport Enumerable from 'linq'\r\nimport TopSpotItem from './../Items/TopSpotItem';\r\nimport * as HistoryCommand from \"../Entities/historyCommands\"\r\nimport SaveHelper from \"../Helper/SaveHelper\";\r\n\r\nexport default class UnitEntity extends ContextItemBase {\r\n constructor()\r\n {\r\n super();\r\n this.drawMeshes1f = [];\r\n this.drawMeshes2f = [];\r\n this.viewMeshes = [];\r\n\r\n this.drawScene1f = null;\r\n this.drawScene2f = null;\r\n this.viewScene = null;\r\n\r\n this.viewRootMesh = null;\r\n this.draw1fRootMesh = null;\r\n this.draw2fRootMesh = null;\r\n\r\n this.isGhost = true;\r\n this.floorPenetrate = '1F'\r\n this.moduleEntity = null;\r\n this.enableDoor = 0;\r\n this.isHistoryWork = false;\r\n\r\n this.wallEnt = [];\r\n this.doorEnt = [];\r\n this.stairEnt = [];\r\n }\r\n\r\n getSize()\r\n {\r\n const bb = this.viewMeshes.find(x=>x.info?.ctgrName === 'Floor').getHierarchyBoundingVectors()\r\n const size = bb.max.subtract(bb.min)\r\n return size;\r\n }\r\n\r\n updateDoorEnable()\r\n {\r\n const targetEnt = this.doorEnt.filter(x=>x.info.typeName.includes('Swap'));\r\n if(targetEnt.length < 1)\r\n {\r\n return;\r\n }\r\n\r\n targetEnt.forEach(dEnt=>{\r\n dEnt.setEnable(this.drawScene1f.instance,false);\r\n dEnt.setEnable(this.drawScene2f.instance,false);\r\n dEnt.setEnable(this.viewScene.instance,false);\r\n })\r\n\r\n if(this.doorEnt.length > 0)\r\n {\r\n targetEnt[this.enableDoor].setEnable(this.drawScene1f.instance,true);\r\n targetEnt[this.enableDoor].setEnable(this.drawScene2f.instance,true);\r\n targetEnt[this.enableDoor].setEnable(this.viewScene.instance,true);\r\n }\r\n }\r\n\r\n createRoot()\r\n {\r\n const unitBox1f = BABYLON.MeshBuilder.CreateBox(null, {size : 1},this.drawScene1f.instance);\r\n unitBox1f.isVisible = false;\r\n unitBox1f.entity = this;\r\n unitBox1f.setEnabled(false)\r\n const unitBox2f = BABYLON.MeshBuilder.CreateBox(null, {size : 1},this.drawScene2f.instance);\r\n unitBox2f.isVisible = false;\r\n unitBox2f.entity = this;\r\n unitBox2f.setEnabled(false)\r\n\r\n this.draw1fRootMesh = unitBox1f;\r\n this.draw2fRootMesh = unitBox2f;\r\n }\r\n\r\n async createEntity()\r\n {\r\n const walls = this.viewMeshes.filter(x=>x.info?.ctgrName === 'Wall');\r\n const doors = this.viewMeshes.filter(x=>x.info?.ctgrName === 'Door');\r\n const stairs = this.viewMeshes.filter(x=>x.info?.ctgrName === 'Stair');\r\n \r\n walls.forEach(w=>{\r\n const ent = new WallEntity();\r\n ent.info = w.info;\r\n ent.viewMeshes.push(w);\r\n ent.viewScene = this.viewScene;\r\n ent.drawScene1f = this.drawScene1f;\r\n ent.drawScene2f = this.drawScene2f;\r\n ent.moduleEntity = this.moduleEntity;\r\n ent.setWallType();\r\n ent.drawViewMesh();\r\n\r\n ent.drawMeshes1f.forEach(x=>{\r\n x.parent = this.draw1fRootMesh;\r\n x.entity = ent;\r\n x.info = w.info;\r\n x.isVisible = true;\r\n });\r\n ent.drawMeshes2f.forEach(x=>{\r\n x.parent = this.draw2fRootMesh;\r\n x.entity = ent;\r\n x.info = w.info;\r\n x.isVisible = true;\r\n });\r\n\r\n this.drawMeshes1f = this.drawMeshes1f.concat(ent.drawMeshes1f); \r\n this.drawMeshes2f = this.drawMeshes2f.concat(ent.drawMeshes2f); \r\n w.entity = ent;\r\n\r\n this.wallEnt.push(ent);\r\n });\r\n for(let i = 0; ix.info.parentName === doors[i].info.name);\r\n ent.info = doors[i].info;\r\n ent.viewMeshes.push(doors[i]);\r\n ent.viewMeshes.push(box);\r\n ent.viewScene = this.viewScene;\r\n ent.drawScene1f = this.drawScene1f;\r\n ent.drawScene2f = this.drawScene2f;\r\n ent.moduleEntity = this.moduleEntity;\r\n doors[i].entity = ent;\r\n const parent = this.wallEnt.find(x=>x.info.name === ent.info.parentName);\r\n ent.parent = parent;\r\n \r\n await ent.drawViewMesh();\r\n ent.drawMeshes1f.forEach(x=>{\r\n x.parent = this.draw1fRootMesh\r\n x.entity = this;\r\n });\r\n ent.drawMeshes2f.forEach(x=>{\r\n x.parent = this.draw2fRootMesh\r\n x.entity = this;\r\n });\r\n\r\n ent.createCrushMesh(this);\r\n this.drawMeshes1f = this.drawMeshes1f.concat(ent.drawMeshes1f); \r\n this.drawMeshes2f = this.drawMeshes2f.concat(ent.drawMeshes2f); \r\n \r\n this.doorEnt.push(ent);\r\n }\r\n stairs.forEach(s=>{\r\n const ent = new StairsEntity();\r\n const boxs = this.viewMeshes.filter(x=>x.info.parentName === s.info.name);\r\n ent.info = s.info;\r\n ent.viewMeshes.push(s);\r\n ent.viewMeshes = ent.viewMeshes.concat(boxs);\r\n ent.viewScene = this.viewScene;\r\n ent.drawScene1f = this.drawScene1f;\r\n ent.drawScene2f = this.drawScene2f;\r\n ent.moduleEntity = this.moduleEntity;\r\n s.entity = ent;\r\n\r\n ent.drawViewMesh();\r\n ent.drawMeshes1f.forEach(x=>x.parent = this.draw1fRootMesh);\r\n ent.drawMeshes2f.forEach(x=>x.parent = this.draw2fRootMesh);\r\n ent.drawMeshes1f.forEach(x=>x.entity = this);\r\n ent.drawMeshes2f.forEach(x=>x.entity = this);\r\n\r\n ent.createCrushMesh();\r\n this.drawMeshes1f = this.drawMeshes1f.concat(ent.drawMeshes1f); \r\n this.drawMeshes2f = this.drawMeshes2f.concat(ent.drawMeshes2f); \r\n\r\n this.stairEnt.push(ent);\r\n })\r\n this.updateDoorEnable()\r\n\r\n }\r\n\r\n // minx, minz, maxx, maxz, center로만 판별\r\n snapEntities(sceneEntity, prevPos, x, z, modules)\r\n {\r\n var filteredModules = modules.filter(o => o.locatedScene == sceneEntity);\r\n var scene = sceneEntity;\r\n \r\n var boxes = [];\r\n const floors = this.viewMeshes.filter(x=>x.info?.ctgrName === 'Box' && x.info?.parentName.includes('Unit-'));\r\n floors.forEach(o =>\r\n {\r\n var box = o.getBoundingInfo().boundingBox;\r\n boxes.push(new BABYLON.BoundingBox(new BABYLON.Vector3(x - box.extendSizeWorld.x, 0, z - box.extendSizeWorld.z), new BABYLON.Vector3(x + box.extendSizeWorld.x, 0, z + box.extendSizeWorld.z)));\r\n })\r\n\r\n return this.getSnapData(boxes, filteredModules.flatMap(o => o.Entities), sceneEntity, prevPos, x, z);\r\n }\r\n\r\n getContextEntity()\r\n {\r\n return this;\r\n }\r\n\r\n getSceneMeshes(scene)\r\n {\r\n if(scene.is2d)\r\n {\r\n if(scene.floor === \"1F\")\r\n {\r\n return this.drawMeshes1f;\r\n }\r\n else\r\n {\r\n return this.drawMeshes2f;\r\n }\r\n }\r\n else\r\n {\r\n return this.viewMeshes;\r\n }\r\n }\r\n\r\n getButtonData()\r\n {\r\n if(this.doorEnt.filter(x=>x.info.typeName.includes('Swap')).length > 1)\r\n {\r\n return [\r\n {\r\n type:'module',\r\n press:this.selectModule\r\n },{\r\n type:'rotate',\r\n press: this.rotate\r\n },{\r\n type:'rotate-ccw',\r\n press:this.rotateccw\r\n },{\r\n type:'mirror-h',\r\n press:this.mirrorh\r\n },{\r\n type:'mirror-v',\r\n press:this.mirrorv\r\n },{\r\n type:'door-swap',\r\n press:this.doorSwap\r\n },{\r\n type:'delete',\r\n press:this.delete\r\n },\r\n ];\r\n }\r\n else\r\n {\r\n return [\r\n {\r\n type:'module',\r\n press:this.selectModule\r\n },{\r\n type:'rotate',\r\n press: this.rotate\r\n },{\r\n type:'rotate-ccw',\r\n press:this.rotateccw\r\n },{\r\n type:'mirror-h',\r\n press:this.mirrorh\r\n },{\r\n type:'mirror-v',\r\n press:this.mirrorv\r\n },{\r\n type:'delete',\r\n press:this.delete\r\n },\r\n ];\r\n }\r\n }\r\n\r\n createContextPanel(scene)\r\n {\r\n var advancedTexture = this.getAdvancedTexture(scene.instance);\r\n var panels = this.getContextDefaultPanel();\r\n\r\n var pnButtons = this.createButtonPanel(advancedTexture, scene, this.info.ctgrName, this.getButtonData());\r\n panels.toolbar.addControl(pnButtons);\r\n\r\n this.contextPanels.push(panels.toolbar);\r\n\r\n var box = this.getBoundingBox2d(scene);\r\n var posMesh = new BABYLON.Mesh(\"tempMesh\", scene.instance);\r\n posMesh.position = box.center;\r\n this.boundingSideMeshes.push(posMesh);\r\n\r\n this.contextPanels.forEach(panel =>\r\n {\r\n advancedTexture.addControl(panel);\r\n })\r\n\r\n this.createToolTip(advancedTexture);\r\n\r\n return this.contextPanels;\r\n }\r\n\r\n delete(scene, entity)\r\n {\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.DelteCommand(entity,SaveHelper.makeSaveData(entity.moduleEntity)));\r\n entity.dispose();\r\n }\r\n\r\n rotate(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.RotateCommand(entity));\r\n let rotation = entity.draw1fRootMesh.rotation.y;\r\n entity.draw1fRootMesh.rotation.y = rotation + BABYLON.Tools.ToRadians(-90);\r\n entity.draw2fRootMesh.rotation.y = rotation + BABYLON.Tools.ToRadians(-90);\r\n entity.viewRootMesh.rotation.y = rotation + BABYLON.Tools.ToRadians(-90);\r\n \r\n scene.updateEntireRoof();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n rotateccw(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.RotateccwCommand(entity));\r\n let rotation = entity.draw1fRootMesh.rotation.y;\r\n entity.draw1fRootMesh.rotation.y = rotation + BABYLON.Tools.ToRadians(90);\r\n entity.draw2fRootMesh.rotation.y = rotation + BABYLON.Tools.ToRadians(90);\r\n entity.viewRootMesh.rotation.y = rotation + BABYLON.Tools.ToRadians(90);\r\n \r\n scene.updateEntireRoof();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n mirrorv(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MirrorvCommand(entity));\r\n entity.draw1fRootMesh.scaling.z *= -1;\r\n entity.draw2fRootMesh.scaling.z *= -1;\r\n entity.viewRootMesh.scaling.z *= -1;\r\n \r\n scene.updateEntireRoof();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n mirrorh(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MirrorhCommand(entity));\r\n entity.draw1fRootMesh.scaling.x *= -1;\r\n entity.draw2fRootMesh.scaling.x *= -1;\r\n entity.viewRootMesh.scaling.x *= -1;\r\n \r\n scene.updateEntireRoof();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n doorSwap(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.DoorSwapCommand(entity));\r\n const targetEnt = entity.doorEnt.filter(x=>x.info.typeName.includes('Swap'));\r\n if(targetEnt.length > 1)\r\n {\r\n entity.enableDoor = (entity.enableDoor+1)%(targetEnt.length)\r\n }\r\n entity.updateDoorEnable();\r\n setTimeout(() => {\r\n scene.updateWall()\r\n }, 200);\r\n }\r\n\r\n drawViewMesh(){\r\n this.viewMeshes.forEach(mesh =>{\r\n if(mesh.info.ctgrName === 'Wall' || mesh.info.ctgrName === 'Door' || mesh.info.parentName.includes('Door') || mesh.info.ctgrName === 'Stair')\r\n {\r\n return;\r\n }\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n \r\n m1f.info = mesh.info;\r\n m2f.info = mesh.info;\r\n\r\n m1f.entity = this;\r\n m2f.entity = this;\r\n\r\n m1f.parent = this.draw1fRootMesh;\r\n m2f.parent = this.draw2fRootMesh;\r\n\r\n if(mesh.material.diffuseTexture)\r\n {\r\n const matName = mesh.material.diffuseTexture.name.split('/').slice(-1)[0];\r\n\r\n const mat1f = this.drawScene1f.instance.getMaterialByName(matName);\r\n if(!mat1f)\r\n {\r\n const oriMat = new BABYLON.StandardMaterial(matName,this.drawScene1f.instance);\r\n const oriTex = new BABYLON.Texture(mesh.material.diffuseTexture.name,this.drawScene1f.instance);\r\n oriMat.diffuseTexture = oriTex;\r\n oriMat.specularColor = new BABYLON.Color3(0, 0, 0); \r\n oriMat.specularPower = 0;\r\n m1f.material = oriMat;\r\n }\r\n else\r\n {\r\n m1f.material = mat1f;\r\n }\r\n\r\n const mat2f = this.drawScene2f.instance.getMaterialByName(matName);\r\n if(!mat2f)\r\n {\r\n const oriMat = new BABYLON.StandardMaterial(matName,this.drawScene2f.instance);\r\n const oriTex = new BABYLON.Texture(mesh.material.diffuseTexture.name,this.drawScene2f.instance);\r\n oriMat.diffuseTexture = oriTex;\r\n oriMat.specularColor = new BABYLON.Color3(0, 0, 0); \r\n oriMat.specularPower = 0;\r\n m2f.material = oriMat;\r\n }\r\n else\r\n {\r\n m2f.material = mat2f;\r\n }\r\n }\r\n\r\n if(mesh.info.ctgrName === 'Corner')\r\n {\r\n m1f.material = this.drawScene1f.instance.getMaterialByName('WallMat');\r\n m2f.material = this.drawScene2f.instance.getMaterialByName('WallMat');\r\n }\r\n\r\n if(mesh.info.ctgrName === 'Box')\r\n {\r\n m1f.isVisible = false;\r\n m2f.isVisible = false;\r\n }\r\n\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n });\r\n }\r\n\r\n setPosition(instance,value)\r\n {\r\n if(this.isGhost)\r\n {\r\n if(instance === this.drawScene1f.instance)\r\n {\r\n var pos1f = value.clone();\r\n pos1f.y = 3.1;\r\n this.draw1fRootMesh.setAbsolutePosition(pos1f);\r\n }\r\n else if(instance === this.drawScene2f.instance)\r\n {\r\n var pos2f = value.clone();\r\n pos2f.y = 3.1;\r\n this.draw2fRootMesh.setAbsolutePosition(pos2f);\r\n }\r\n }\r\n else\r\n {\r\n var pos1f = value.clone();\r\n pos1f.y = this.draw1fRootMesh.absolutePosition.y;\r\n this.draw1fRootMesh.setAbsolutePosition(pos1f);\r\n var pos2f = value.clone();\r\n pos2f.y = this.draw2fRootMesh.absolutePosition.y;\r\n this.draw2fRootMesh.setAbsolutePosition(pos2f);\r\n }\r\n value.y = instance === this.drawScene1f.instance ? 0 : 3.1;\r\n this.viewRootMesh.setAbsolutePosition(value.clone());\r\n }\r\n\r\n setEnable(instance,value)\r\n {\r\n if(instance === this.drawScene1f.instance)\r\n {\r\n this.draw1fRootMesh.setEnabled(value);\r\n }\r\n else if(instance === this.drawScene2f.instance)\r\n {\r\n this.draw2fRootMesh.setEnabled(value);\r\n }\r\n else\r\n {\r\n this.viewRootMesh.setEnabled(value);\r\n }\r\n }\r\n\r\n createCrushMesh()\r\n {\r\n if(this.crushMesh)\r\n {\r\n return;\r\n }\r\n const crushMesh = this.viewMeshes.find(x=>x.info.ctgrName === \"Box\" && x.info.parentName.replace('-','').includes(this.info.name))?.clone();\r\n if(!crushMesh)\r\n return;\r\n crushMesh.material = this.viewScene.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMeshSetting(crushMesh,this.viewRootMesh);\r\n this.crushMesh = crushMesh;\r\n\r\n if(this.crushMesh1f)\r\n {\r\n return;\r\n }\r\n const crushMesh1f = this.drawMeshes1f.find(x=>x.info.ctgrName === \"Box\" && x.info.parentName.replace('-','').includes(this.info.name))?.clone();\r\n if(!crushMesh1f)\r\n return;\r\n crushMesh1f.material = this.drawScene1f.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMeshSetting(crushMesh1f,this.draw1fRootMesh);\r\n this.crushMesh1f = crushMesh1f;\r\n\r\n if(this.crushMesh2f)\r\n {\r\n return;\r\n }\r\n const crushMesh2f = this.drawMeshes2f.find(x=>x.info.ctgrName === \"Box\" && x.info.parentName.replace('-','').includes(this.info.name))?.clone();\r\n if(!crushMesh2f)\r\n return;\r\n crushMesh2f.material = this.drawScene2f.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMeshSetting(crushMesh2f,this.draw2fRootMesh);\r\n this.crushMesh2f = crushMesh2f;\r\n }\r\n\r\n crushMeshSetting(crushMesh,rootMesh)\r\n {\r\n crushMesh.parent = null;\r\n crushMesh.id = \"crushMeshTop\";\r\n crushMesh.originPos = crushMesh.position.clone();\r\n crushMesh.moduleEntity = this.moduleEntity;\r\n crushMesh.rootMesh = rootMesh;\r\n crushMesh.parent = rootMesh;\r\n crushMesh.entity = this;\r\n crushMesh.isVisible = false;\r\n crushMesh.setEnabled(true);\r\n crushMesh.spot = new TopSpotItem(crushMesh, crushMesh._scene,null, rootMesh != this.moduleEntity.viewRootMesh)\r\n crushMesh.spot.isOtherThrough = false;\r\n }\r\n\r\n\r\n setPenetrateMode(floor)\r\n {\r\n if(floor === '2F')\r\n {\r\n this.draw2fRootMesh.setEnabled(true);\r\n this.draw2fRootMesh.position = this.draw1fRootMesh.position.clone();\r\n this.draw2fRootMesh.position.y = 0;\r\n }\r\n else\r\n {\r\n this.draw1fRootMesh.setEnabled(true);\r\n this.draw1fRootMesh.position = this.draw2fRootMesh.position.clone();\r\n this.draw1fRootMesh.position.y = 0;\r\n }\r\n\r\n let meshes = this.drawMeshes1f;\r\n if(floor === '2F')\r\n {\r\n meshes = this.drawMeshes2f;\r\n }\r\n meshes.forEach(mesh =>{\r\n if(mesh.info.ctgrName != 'Wall' && mesh.info.ctgrName != 'Door' && mesh.info.ctgrName != 'Stair')\r\n {\r\n mesh.isVisible = false;\r\n }\r\n if(mesh.material)\r\n {\r\n const tempmat = mesh.material.clone();\r\n tempmat.alpha = 0.4;\r\n mesh.material = tempmat;\r\n mesh.edgesColor = new BABYLON.Color4(0, 0, 0, 0.4);\r\n }\r\n })\r\n }\r\n\r\n dispose()\r\n {\r\n if(this.crushMesh)\r\n {\r\n this.crushMesh.spot.delete();\r\n this.crushMesh.dispose();\r\n }\r\n if(this.crushMesh1f)\r\n {\r\n this.crushMesh1f.spot.delete();\r\n this.crushMesh1f.dispose();\r\n }\r\n if(this.crushMesh2f)\r\n {\r\n this.crushMesh2f.spot.delete();\r\n this.crushMesh2f.dispose();\r\n }\r\n\r\n this.doorEnt.forEach(o=>o.dispose());\r\n this.stairEnt.forEach(o=>o.dispose());\r\n \r\n this.viewRootMesh?.dispose();\r\n this.draw1fRootMesh?.dispose();\r\n this.draw2fRootMesh?.dispose();\r\n\r\n if(this.moduleEntity)\r\n {\r\n this.moduleEntity.Entities = this.moduleEntity.Entities.filter(x => x != this);\r\n this.moduleEntity.Units = this.moduleEntity.Units.filter(x => x != this);\r\n }\r\n }\r\n\r\n getBoundingBox2d(scene)\r\n {\r\n var boundingBox = null;\r\n if(scene == null)\r\n {\r\n var meshes = this.viewMeshes;\r\n }\r\n else\r\n {\r\n if(scene.floor == \"1F\")\r\n var meshes = this.drawMeshes1f;\r\n else\r\n var meshes = this.drawMeshes2f;\r\n }\r\n\r\n meshes.forEach(mesh => {\r\n const box = mesh.getBoundingInfo().boundingBox;\r\n\r\n var minimumWorld = box.minimumWorld;\r\n var maximumWorld = box.maximumWorld;\r\n minimumWorld.y = 0;\r\n maximumWorld.y = 0;\r\n\r\n if(boundingBox != null)\r\n {\r\n var newMin = BABYLON.Vector3.Minimize(boundingBox.minimum, minimumWorld);\r\n var newMax = BABYLON.Vector3.Maximize(boundingBox.maximum, maximumWorld);\r\n \r\n boundingBox.reConstruct(newMin, newMax);\r\n }\r\n else\r\n boundingBox = new BABYLON.BoundingBox(minimumWorld, maximumWorld);\r\n });\r\n return boundingBox;\r\n }\r\n\r\n getOriginBoundingBox2d(scene)\r\n {\r\n var boundingBox = null;\r\n if(scene.floor == \"1F\")\r\n var meshes = this.drawMeshes1f;\r\n else\r\n var meshes = this.drawMeshes2f;\r\n\r\n meshes.forEach(mesh => {\r\n const box = mesh.getBoundingInfo().boundingBox;\r\n\r\n var minimum = box.minimum.add(mesh.position);\r\n var maximum = box.maximum.add(mesh.position);\r\n minimum.y = 0;\r\n maximum.y = 0;\r\n\r\n if(boundingBox != null)\r\n {\r\n var newMin = BABYLON.Vector3.Minimize(boundingBox.minimum, minimum);\r\n var newMax = BABYLON.Vector3.Maximize(boundingBox.maximum, maximum);\r\n \r\n boundingBox.reConstruct(newMin, newMax);\r\n }\r\n else\r\n boundingBox = new BABYLON.BoundingBox(minimum, maximum);\r\n });\r\n return boundingBox;\r\n }\r\n\r\n getSceneRootMesh(scene)\r\n {\r\n if(scene.is2d)\r\n {\r\n if(scene.floor === \"1F\")\r\n {\r\n return this.draw1fRootMesh;\r\n }\r\n else\r\n {\r\n return this.draw2fRootMesh;\r\n }\r\n }\r\n else\r\n {\r\n return this.viewRootMesh;\r\n }\r\n }\r\n\r\n getAll2DRootMeshes()\r\n {\r\n return this.getDrawMeshes();\r\n }\r\n getAll3DRootMeshes()\r\n {\r\n return [...this.viewMeshes];\r\n }\r\n\r\n getDrawMeshes()\r\n {\r\n return this.drawMeshes1f.concat(this.drawMeshes2f);\r\n }\r\n\r\n deleteEntity(scene, entity)\r\n {\r\n entity.moduleEntity.deleteChild(scene, entity);\r\n entity.moduleEntity.isFixed = true;\r\n entity.dispose();\r\n }\r\n\r\n translateEntity(vector, value)\r\n {\r\n this.viewMeshes.concat(this.drawMeshes1f).concat(this.drawMeshes2f).forEach(mesh =>\r\n {\r\n mesh.setAbsolutePosition(mesh.absolutePosition.add(new BABYLON.Vector3(value, value, value).multiply(vector)));\r\n });\r\n\r\n this.crushMesh.position = this.viewMeshes.find(x=>x.info.ctgrName === 'Box' && x.info.parentName.replace('-','').includes(this.info.name)).position.clone();\r\n this.crushMesh1f.position = this.drawMeshes1f.find(x=>x.info.ctgrName === 'Box' && x.info.parentName.replace('-','').includes(this.info.name)).position.clone();\r\n this.crushMesh2f.position = this.drawMeshes2f.find(x=>x.info.ctgrName === 'Box' && x.info.parentName.replace('-','').includes(this.info.name)).position.clone();\r\n \r\n for(let s of this.stairEnt)\r\n {\r\n for(let i = 0; i\r\n {\r\n o.dispose(); \r\n });\r\n }\r\n\r\n initialize(moduleEnt, position)\r\n {\r\n this.info = {ctgrName : \"Column\"};\r\n this.viewScene = moduleEnt.viewScene;\r\n this.drawScene1f = moduleEnt.drawScene1f;\r\n this.drawScene2f = moduleEnt.drawScene2f;\r\n this.moduleEntity = moduleEnt;\r\n\r\n var scenes = [{scene:this.viewScene, y:1.55}, {scene:this.drawScene1f, y:3.1}];\r\n var meshes = [];\r\n var column = this;\r\n scenes.forEach(o =>\r\n {\r\n var scene = o.scene.instance;\r\n var mesh = BABYLON.MeshBuilder.CreateBox(null, {width : 0.14, height : 3.1, depth : 0.14}, scene); \r\n var pos = position.clone();;\r\n pos.y = o.y;\r\n\r\n mesh.position = pos;\r\n mesh.info = column.info;\r\n mesh.entity = column;\r\n mesh.material = scene.getMaterialByName('WallMat');\r\n\r\n meshes.push(mesh);\r\n });\r\n\r\n this.viewMeshes.push(meshes[0]);\r\n this.drawMeshes1f.push(meshes[1]);\r\n }\r\n\r\n setPosition(instance, value)\r\n {\r\n var pos1f = value.clone();\r\n pos1f.y = this.locatedScene.floor == \"1F\" ? 3.1 : 0;\r\n this.draw1fRootMesh.position = pos1f;\r\n\r\n var pos2f = value.clone();\r\n pos2f.y = this.locatedScene.floor == \"2F\" ? 3.1 : 0;\r\n this.draw2fRootMesh.position = pos2f;\r\n\r\n var viewPos = value.clone();\r\n viewPos.y = instance === this.drawScene1f.instance ? 0 : 3.1;\r\n this.viewRootMesh.position = viewPos.clone();\r\n }\r\n}","import ContextItemBase from \"./ContextItemBase\";\r\nimport VectorHelper from \"../Helper/VectorHelper\"\r\nimport MeshHelper from \"../Helper/MeshHelper\"\r\nimport Enumerable from 'linq'\r\nimport { FluidRenderingObjectCustomParticles, Vector3 } from \"@babylonjs/core\";\r\nimport { mrdlSliderThumbPixelShader } from \"@babylonjs/gui/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment\";\r\nimport ColumnEntity from \"./ColumnEntity\";\r\nimport * as HistoryCommand from \"../Entities/historyCommands\"\r\nimport SaveHelper from \"../Helper/SaveHelper\";\r\nimport CsgHelper from \"../Helper/CsgHelper\";\r\n\r\nconst balconyVecticalSizeArray = [2.44,3.05,3.66,4.27,4.88, 5.02, 6.1, 7.32, 8.54, 9.15];\r\nconst defaultVerticalSizeArray = [5.02, 6.1, 6.67, 7.32, 7.93, 8.54, 9.15];\r\nconst horizontalSizeArray = [1.83, 2.44, 3.34];\r\n\r\nexport default class ModuleEntity extends ContextItemBase{\r\n\r\n constructor()\r\n {\r\n super();\r\n this.info = {};\r\n this.guid = null;\r\n this.Entities = [];\r\n this.Walls = [];\r\n this.Windows = [];\r\n this.Doors = [];\r\n this.Corners = [];\r\n this.Openings = [];\r\n this.Floors = [];\r\n this.Voids = [];\r\n this.Stairs = [];\r\n this.Columns = [];\r\n this.Units = [];\r\n //뷰어=============\r\n this.drawScene1f = null;\r\n this.drawScene2f = null;\r\n this.viewScene = null;\r\n //각 뷰어 모듈 루트 메쉬=============\r\n this.viewRootMesh = null;\r\n this.draw1fRootMesh = null;\r\n this.draw2fRootMesh = null;\r\n\r\n this.moduleBoxs = [];\r\n this.isModule = true;\r\n this.isGhost = true;\r\n this.isFixed = false; // 사용안함\r\n this.floorPenetrate = \"1F\";\r\n this.locatedScene = null;\r\n\r\n this.horizontal = 0;\r\n this.vertical = 0;\r\n this.isHideRoof = false;\r\n this.isHistoryWork = false;\r\n }\r\n getAllRoots()\r\n {\r\n return [this.viewRootMesh,this.draw1fRootMesh,this.draw2fRootMesh];\r\n }\r\n\r\n getModuleBox(instance)\r\n {\r\n return this.moduleBoxs.find(x=>x._scene === instance)\r\n }\r\n\r\n getSize(isCombineTrr = true)\r\n {\r\n let ret = Vector3.Zero();\r\n for(let i = 0; ix.info.name.includes('Exterior'))\r\n if(this.Floors[i] === trr)\r\n continue;\r\n }\r\n const bb = this.Floors[i].viewMeshes[0].getHierarchyBoundingVectors()\r\n const size = bb.max.subtract(bb.min);\r\n if(ret.x.toFixed(2) != size.x.toFixed(2))\r\n {\r\n ret.x += size.x;\r\n }\r\n if(ret.z.toFixed(2) != size.z.toFixed(2))\r\n {\r\n ret.z += size.z;\r\n }\r\n }\r\n\r\n if(this.viewRootMesh.rotation.y % Math.PI != 0)\r\n {\r\n const temp = ret.x;\r\n ret.x = ret.z;\r\n ret.z = temp;\r\n }\r\n\r\n ret.x = Number(ret.x.toFixed(2));\r\n ret.z = Number(ret.z.toFixed(2));\r\n \r\n return ret;\r\n }\r\n\r\n setSize(resultDatas)\r\n {\r\n resultDatas.forEach(data =>\r\n {\r\n var dir = data.dir;\r\n var size = data.size;\r\n var isBalconyModule = this.Floors.filter(o => !o.info.typeName.includes(\"Exterior\")).length == 0;\r\n\r\n var moduleBox = this.getBoundingBox2d(null, [\"Floor\"]);\r\n var moduleCenterLineStart = moduleBox.center.add(dir.negate().multiply(moduleBox.extendSize));\r\n var moduleCenterLineEnd = moduleBox.center.add(dir.multiply(moduleBox.extendSize));\r\n \r\n var absDir = new BABYLON.Vector3(Math.abs(dir.x), Math.abs(dir.y), Math.abs(dir.z));\r\n var isShirink = absDir.equalsWithEpsilon(dir, 0.0001) ? false : true;\r\n \r\n // 내벽 및 외벽 위치 조절 필요\r\n this.Walls.forEach(target =>\r\n {\r\n var targetLine = target.getWorldWallLine();\r\n var targetDir = BABYLON.Vector3.Normalize(targetLine.end.subtract(targetLine.start));\r\n \r\n if(isBalconyModule)\r\n {\r\n if(!VectorHelper.isParallel(targetDir, dir))\r\n {\r\n var targetBox = target.getBoundingBox2d(null);\r\n var targetDir = BABYLON.Vector3.Normalize(targetBox.center.subtract(moduleBox.center).multiply(absDir));\r\n\r\n target.translateEntity(isShirink ? targetDir.negate() : targetDir, size);\r\n }\r\n else\r\n {\r\n target.scaleEntity(dir, dir, 0, size);\r\n }\r\n }\r\n else\r\n {\r\n if(target.info.typeName.includes(\"Interior\"))\r\n {\r\n debugger;\r\n }\r\n if(VectorHelper.isParallel(targetDir, dir))\r\n target.scaleEntity(dir, dir, 0, size);\r\n }\r\n });\r\n\r\n // 코너 위치 조절 필요\r\n this.Corners.forEach(target =>\r\n {\r\n var targetBox = target.getBoundingBox2d(null);\r\n var targetDir = BABYLON.Vector3.Normalize(targetBox.center.subtract(moduleBox.center).multiply(absDir));\r\n\r\n target.translateEntity(isShirink ? targetDir.negate() : targetDir, size);\r\n });\r\n });\r\n\r\n resultDatas.forEach(data =>\r\n {\r\n var dir = data.dir;\r\n var size = data.size;\r\n\r\n // 바닥 크기 조절\r\n this.Floors.forEach(item =>\r\n {\r\n item.scaleEntity(dir, dir, 0, size);\r\n }); \r\n });\r\n }\r\n\r\n getArea(isCombineTrr = true)\r\n {\r\n const size = this.getSize(isCombineTrr);\r\n const areaMm = ((size.x-0.14) * (size.z-0.14)).toFixed(2);\r\n const area = (areaMm * 0.3025).toFixed(2);\r\n return {areaMm : areaMm, area : area};\r\n }\r\n\r\n getSceneRootMesh(scene)\r\n {\r\n if(scene.is2d)\r\n {\r\n if(scene.floor === \"1F\")\r\n {\r\n return this.draw1fRootMesh;\r\n }\r\n else\r\n {\r\n return this.draw2fRootMesh;\r\n }\r\n }\r\n else\r\n {\r\n return this.viewRootMesh;\r\n }\r\n }\r\n\r\n getSceneMeshes(scene)\r\n {\r\n return Enumerable.from(this.Entities).selectMany(o => o.getSceneMeshes(scene)).toArray();\r\n }\r\n\r\n setViewModel(value)\r\n {\r\n this.viewRootMesh.setEnabled(value);\r\n }\r\n\r\n getFloorEdges()\r\n {\r\n var floors = [];\r\n var located = this.locatedScene.floor;\r\n \r\n this.Floors.flatMap(o => o.viewMeshes.filter(k => k.info.ctgrName == \"Floor\")).forEach(floor =>\r\n {\r\n var floorEdges = MeshHelper.GetWorldBottomEdges(floor).map(o => o.start);\r\n floors.push({edges:floorEdges.map(o => ({x:Math.round(o.x * 1000), y:Math.round(o.z * 1000)})), height:floor.parent.position.y, located:located});\r\n });\r\n\r\n return floors;\r\n }\r\n\r\n createColumns(floor1fs)\r\n {\r\n this.Columns.forEach(o =>\r\n {\r\n o.dispose();\r\n });\r\n\r\n var dirItems = [];\r\n\r\n var box = this.getBoundingBox2d(null, [\"Floor\"]);\r\n \r\n var minXPos = box.minimum.clone();\r\n var minZPos = box.minimum.clone();\r\n minXPos.x = box.maximum.x;\r\n minZPos.z = box.maximum.z;\r\n\r\n var boundingPositions = [\r\n box.minimum.add(new BABYLON.Vector3(0.707, 0, 0.707).scale(Math.sqrt(2) * 0.065)),\r\n minXPos.add(new BABYLON.Vector3(-0.707, 0, 0.707).scale(Math.sqrt(2) * 0.065)),\r\n box.maximum.add(new BABYLON.Vector3(-0.707, 0, -0.707).scale(Math.sqrt(2) * 0.065)),\r\n minZPos.add(new BABYLON.Vector3(0.707, 0, -0.707).scale(Math.sqrt(2) * 0.065))\r\n ];\r\n\r\n // Corner처럼 살짝 안으로 이동 필요\r\n boundingPositions.map(o =>\r\n {\r\n o.y = 3.1;\r\n return o;\r\n });\r\n\r\n var minPos = boundingPositions[0];\r\n \r\n for(var i=1; i dirItems[0].distance)\r\n {\r\n dirItem = dirItems[1];\r\n otherItem = dirItems[0];\r\n }\r\n\r\n var centerPos = minPos.add(dirItem.position).scale(0.5);\r\n var otherCenterPos = centerPos.add(otherItem.dir.scale(otherItem.distance));\r\n\r\n boundingPositions.push(centerPos);\r\n boundingPositions.push(otherCenterPos);\r\n\r\n var moduleEnt = this;\r\n\r\n var floorBoxes = floor1fs.flatMap(o => o.Floors.map(k => k.getBoundingBox2d()));\r\n boundingPositions.forEach(o =>\r\n {\r\n var minX = o.x - 0.065;\r\n var minZ = o.z - 0.065;\r\n var maxX = o.x + 0.065;\r\n var maxZ = o.z + 0.065;\r\n\r\n var min = new BABYLON.Vector3(minX, 0, minZ);\r\n var max = new BABYLON.Vector3(maxX, 0, maxZ);\r\n var checkBox = new BABYLON.BoundingBox(min, max);\r\n\r\n var isIntersected = false;\r\n for(var i=0; i {\r\n ent.drawViewMesh()\r\n });\r\n for(let i =0; i {\r\n if(ent.info.ctgrName === 'Wall' || ent.info.ctgrName === 'Door' || ent.info.ctgrName === 'Opening')\r\n return;\r\n ent.drawViewMesh()\r\n });\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n }\r\n const root1f = BABYLON.MeshBuilder.CreateBox(null, {size : 1},this.drawScene1f.instance);\r\n root1f.isVisible = false;\r\n root1f.position = new Vector3(0,0,0);\r\n \r\n const root2f = BABYLON.MeshBuilder.CreateBox(null, {size : 1},this.drawScene2f.instance);\r\n root2f.isVisible = false;\r\n root2f.position = new Vector3(0,0,0);\r\n\r\n root1f.setEnabled(false);\r\n root2f.setEnabled(false);\r\n \r\n this.Entities.forEach(ent=>{\r\n ent.drawMeshes1f.forEach(mesh=>{\r\n mesh.entity = ent;\r\n });\r\n ent.drawMeshes2f.forEach(mesh=>{\r\n mesh.entity = ent;\r\n });\r\n });\r\n\r\n this.Windows.forEach(w=>{\r\n w.createRootMesh();\r\n });\r\n this.Doors.forEach(d=>{\r\n d.createRootMesh();\r\n })\r\n this.Floors.forEach(f=>{\r\n f.createRootMesh(f.viewMeshes,this.viewScene.instance,0.82);\r\n f.createRootMesh(f.drawMeshes1f,this.drawScene1f.instance,1);\r\n f.createRootMesh(f.drawMeshes2f,this.drawScene2f.instance,1);\r\n })\r\n let mM1fs = [];//하위 엔티티의 모든 1층 draw뷰의 메쉬;\r\n let mM2fs = [];//하위 엔티티의 모든 2층 draw뷰의 메쉬;\r\n let vMeshes = [];\r\n this.Entities.forEach(ent=>{\r\n const m1fs = ent.drawMeshes1f;\r\n const m2fs = ent.drawMeshes2f;\r\n const vMesh = ent.viewMeshes;\r\n mM1fs = mM1fs.concat(m1fs);\r\n mM2fs = mM2fs.concat(m2fs);\r\n vMeshes = vMeshes.concat(vMesh);\r\n });\r\n\r\n mM1fs.forEach(mesh=>{\r\n const info = mesh.info;\r\n mesh.parent = root1f;\r\n if(info.parentName.includes('Floor'))\r\n {\r\n const parent = mM1fs.find(x=>x.info.name === info.parentName);\r\n mesh.parent = parent;\r\n }\r\n if(info.ctgrName === 'Box')\r\n {\r\n mesh.isVisible = false;\r\n }\r\n else\r\n {\r\n mesh.isVisible = true;\r\n }\r\n });\r\n\r\n mM2fs.forEach(mesh=>{\r\n const info = mesh.info;\r\n mesh.parent = root2f;\r\n if(info.parentName.includes('Floor'))\r\n {\r\n const parent = mM2fs.find(x=>x.info.name === info.parentName);\r\n mesh.parent = parent;\r\n }\r\n if(info.ctgrName === 'Box')\r\n {\r\n mesh.isVisible = false;\r\n }\r\n else\r\n {\r\n mesh.isVisible = true;\r\n }\r\n });\r\n\r\n root1f.scaling.z = -1;\r\n root2f.scaling.z = -1;\r\n this.viewRootMesh.scaling.z = -1;\r\n\r\n root1f.entity = this; \r\n root2f.entity = this;\r\n\r\n this.draw1fRootMesh = root1f;\r\n this.draw2fRootMesh = root2f;\r\n }\r\n\r\n setPosition(instance,value)\r\n {\r\n if(this.locatedScene)\r\n {\r\n var pos1f = value.clone();\r\n pos1f.y = this.locatedScene.floor == \"1F\" ? 3.1 : 0;\r\n this.draw1fRootMesh.position = pos1f;\r\n\r\n var pos2f = value.clone();\r\n pos2f.y = this.locatedScene.floor == \"2F\" ? 3.1 : 0;\r\n this.draw2fRootMesh.position = pos2f;\r\n }\r\n else\r\n {\r\n var pos = value.clone();\r\n pos.y = 3.1;\r\n if(instance === this.drawScene1f.instance)\r\n {\r\n this.draw1fRootMesh.position = pos;\r\n }\r\n else if(instance === this.drawScene2f.instance)\r\n {\r\n this.draw2fRootMesh.position = pos;\r\n }\r\n }\r\n\r\n var viewPos = value.clone();\r\n viewPos.y = instance === this.drawScene1f.instance ? 0 : 3.1;\r\n this.viewRootMesh.position = viewPos.clone();\r\n }\r\n\r\n setEnable(instance,value)\r\n {\r\n if(instance === this.drawScene1f.instance)\r\n {\r\n this.draw1fRootMesh.setEnabled(value);\r\n }\r\n else if(instance === this.drawScene2f.instance)\r\n {\r\n this.draw2fRootMesh.setEnabled(value);\r\n }\r\n else\r\n {\r\n this.viewRootMesh.setEnabled(value);\r\n }\r\n this.setAllEnable(value)\r\n }\r\n\r\n setAllEnable(value)\r\n {\r\n this.Entities.forEach(ent=>{\r\n ent.drawMeshes1f.forEach(m => {\r\n m.setEnabled(value);\r\n });\r\n ent.drawMeshes2f.forEach(m => {\r\n m.setEnabled(value);\r\n });\r\n ent.viewMeshes.forEach(m => {\r\n m.setEnabled(value);\r\n });\r\n if(ent.info.ctgrName === 'Unit')\r\n {\r\n ent.updateDoorEnable()\r\n }\r\n })\r\n }\r\n\r\n setPenetrateMode(floor)\r\n {\r\n if(floor === '2F')\r\n {\r\n this.draw2fRootMesh.setEnabled(true);\r\n // this.draw2fRootMesh.position = this.draw1fRootMesh.position.clone();\r\n // this.draw2fRootMesh.position.y = 0;\r\n }\r\n else\r\n {\r\n this.draw1fRootMesh.setEnabled(true);\r\n // this.draw1fRootMesh.position = this.draw2fRootMesh.position.clone();\r\n // this.draw1fRootMesh.position.y = -3;\r\n }\r\n\r\n this.Entities.forEach(ent=>{\r\n let meshes = ent.drawMeshes1f;\r\n if(floor === '2F')\r\n {\r\n meshes = ent.drawMeshes2f;\r\n }\r\n if(ent.info.ctgrName === \"Wall\" || ent.info.ctgrName === \"Stair\" || ent.info.ctgrName === \"Corner\" || ent.isSimbol)\r\n {\r\n for(let i in meshes)\r\n {\r\n const mesh = meshes[i];\r\n if(mesh.material)\r\n {\r\n if(ent.info.ctgrName === \"Wall\" || ent.info.ctgrName === \"Corner\")\r\n {\r\n mesh.material = mesh._scene.getMaterialByName('WallAlphaMat');\r\n }\r\n else if(ent.info.ctgrName === \"Void\")\r\n {\r\n const p = mesh.parent;\r\n mesh.dispose();\r\n const dash = ent.createDashLine(mesh._scene);\r\n dash.info = ent.info;\r\n dash.entity = ent;\r\n dash.parent = p;\r\n if(floor === '1F')\r\n {\r\n dash.position.y = 4.1;\r\n ent.drawMeshes1f[i] = dash;\r\n }\r\n else\r\n {\r\n ent.drawMeshes2f[i] = dash;\r\n }\r\n }\r\n else\r\n {\r\n const tempmat = mesh.material.clone();\r\n tempmat.alpha = 0.4;\r\n mesh.material = tempmat;\r\n }\r\n mesh.edgesColor = new BABYLON.Color4(0, 0, 0, 0.4);\r\n }\r\n }\r\n }\r\n else if(ent.info.ctgrName === \"Unit\")\r\n {\r\n ent.setPenetrateMode(floor)\r\n }\r\n else\r\n {\r\n meshes.forEach(mesh =>{\r\n mesh.isVisible =false;\r\n })\r\n }\r\n });\r\n }\r\n\r\n // minx, minz, maxx, maxz, center로만 판별\r\n snapEntities(sceneEntity, prevSnapData, x, z, modules)\r\n {\r\n var boxes = [];\r\n var scene = sceneEntity;\r\n var rootPos = this.getSceneRootMesh(sceneEntity).position;\r\n var offsetX = x - rootPos.x;\r\n var offsetZ = z - rootPos.z;\r\n\r\n this.Floors.forEach(o =>\r\n {\r\n var box = o.getBoundingBox2d(scene);\r\n boxes.push(new BABYLON.BoundingBox(new BABYLON.Vector3(box.minimum.x + offsetX, 0, box.minimum.z + offsetZ), new BABYLON.Vector3(box.maximum.x + offsetX, 0, box.maximum.z + offsetZ)));\r\n })\r\n\r\n return this.getSnapData(boxes, modules.flatMap(o => o.Entities), sceneEntity, prevSnapData, x, z);\r\n }\r\n\r\n makeBox(instance,floor)\r\n {\r\n const box = this.getSize();\r\n \r\n let width = box.x;\r\n let depth = box.z;\r\n const moduleBox = BABYLON.MeshBuilder.CreateBox('moduleBox',{width: width,height:3.1, depth:depth}, instance);\r\n moduleBox.scaling = new Vector3(0.99,0.99,-0.99);\r\n moduleBox.material = instance.getMaterialByName('greenBoxMaterial');\r\n \r\n this.moduleBoxs.push(moduleBox);\r\n moduleBox.isVisible = false;\r\n moduleBox.ModuleEntity = this;\r\n\r\n if(floor === '1F')\r\n {\r\n moduleBox.parent = this.draw1fRootMesh;\r\n }\r\n else\r\n {\r\n moduleBox.parent = this.draw2fRootMesh;\r\n }\r\n moduleBox.position = Vector3.Zero();\r\n moduleBox.position.y = 1.65;\r\n }\r\n\r\n getBoundingBox2d(scene, ctgrNames)\r\n {\r\n var boundingBox = null;\r\n for(var i=0; i o == entityCategory))\r\n continue;\r\n }\r\n var box = entity.getBoundingBox2d(scene);\r\n\r\n if(box != null)\r\n {\r\n if(box.extendSize.length() == Infinity)\r\n continue;\r\n\r\n if(boundingBox != null)\r\n {\r\n var newMin = BABYLON.Vector3.Minimize(boundingBox.minimum, box.minimum);\r\n var newMax = BABYLON.Vector3.Maximize(boundingBox.maximum, box.maximum);\r\n \r\n boundingBox.reConstruct(newMin, newMax);\r\n }\r\n else\r\n boundingBox = new BABYLON.BoundingBox(box.minimum, box.maximum);\r\n }\r\n }\r\n return boundingBox;\r\n }\r\n\r\n getOriginBoundingBox2d(scene, ctgrNames)\r\n {\r\n let boundingBox = null;\r\n for(let entity of this.Entities)\r\n {\r\n if(ctgrNames != null)\r\n {\r\n let entityCategory = entity.info.ctgrName;\r\n\r\n if(!ctgrNames.some(o => o == entityCategory))\r\n {\r\n continue;\r\n }\r\n }\r\n let box = entity.getOriginBoundingBox2d(scene);\r\n if(box != null)\r\n {\r\n if(box.extendSize.length() == Infinity)\r\n continue;\r\n\r\n if(boundingBox != null)\r\n {\r\n let newMin = BABYLON.Vector3.Minimize(boundingBox.minimum, box.minimum);\r\n let newMax = BABYLON.Vector3.Maximize(boundingBox.maximum, box.maximum);\r\n \r\n boundingBox.reConstruct(newMin, newMax);\r\n }\r\n else\r\n boundingBox = new BABYLON.BoundingBox(box.minimum, box.maximum);\r\n }\r\n }\r\n return boundingBox;\r\n }\r\n\r\n getButtonData()\r\n {\r\n var datas = [\r\n {\r\n type:'rotate',\r\n press: this.rotate\r\n },{\r\n type:'rotate-ccw',\r\n press:this.rotateccw\r\n },{\r\n type:'mirror-h',\r\n press:this.mirrorh\r\n },{\r\n type:'mirror-v',\r\n press:this.mirrorv\r\n }];\r\n\r\n var isBalconyModule = this.Floors.filter(o => !o.info.typeName.includes(\"Exterior\")).length == 0;\r\n if(isBalconyModule)\r\n datas.push({type:'hide-roof', press:this.hideroof, isToggled: this.isHideRoof});\r\n\r\n datas.push({type:'delete', press:this.delete});\r\n\r\n return datas;\r\n }\r\n\r\n createContextPanel(scene)\r\n {\r\n this.disposeContextPanel();\r\n\r\n var advancedTexture = this.getAdvancedTexture(scene.instance);\r\n var panels = this.getContextDefaultPanel();\r\n\r\n var pnButtons = this.createButtonPanel(advancedTexture, scene, this.info.ctgrName, this.getButtonData());\r\n panels.toolbar.addControl(pnButtons);\r\n\r\n var box = this.getBoundingBox2d(scene, [\"Floor\"]);\r\n var rotateMatrix = BABYLON.Matrix.RotationAxis(BABYLON.Axis.Y, -this.getSceneRootMesh(scene).rotation.y);\r\n var originSize = BABYLON.Vector3.TransformCoordinates(box.extendSize, rotateMatrix)\r\n this.horizontal = Math.round(Math.abs(originSize.x) * 200) / 100;\r\n this.vertical = Math.round(Math.abs(originSize.z) * 200) / 100;\r\n\r\n // 발코니만 존재하는 모듈이거나 여러개의 Floor가 있을 때 발코니가 없을 경우만\r\n var isBalconyModule = this.Floors.filter(o => !o.info.typeName.includes(\"Exterior\")).length == 0;\r\n if(!this.Floors.some(o => o.info.typeName.includes(\"Exterior\")) || isBalconyModule)\r\n {\r\n var verticalSizeArray = defaultVerticalSizeArray;\r\n if(isBalconyModule)\r\n verticalSizeArray = balconyVecticalSizeArray;\r\n\r\n var axisAvailableTypes = [];\r\n var verticalIndex = verticalSizeArray.indexOf(this.vertical);\r\n var horizontalIndex = horizontalSizeArray.indexOf(this.horizontal);\r\n if(verticalIndex >= 0)\r\n {\r\n var availableTypes = [];\r\n if(verticalIndex > 0)\r\n availableTypes.push(\"decrease\");\r\n if(verticalIndex < verticalSizeArray.length - 1)\r\n availableTypes.push(\"increase\");\r\n\r\n axisAvailableTypes.push({axis:BABYLON.Vector3.TransformNormal(BABYLON.Axis.Z, rotateMatrix), availableTypes: availableTypes});\r\n }\r\n if(horizontalIndex >= 0)\r\n {\r\n var availableTypes = [];\r\n if(horizontalIndex > 0)\r\n availableTypes.push(\"decrease\");\r\n if(horizontalIndex < horizontalSizeArray.length - 1)\r\n availableTypes.push(\"increase\");\r\n\r\n axisAvailableTypes.push({axis:BABYLON.Vector3.TransformNormal(BABYLON.Axis.X, rotateMatrix), availableTypes: availableTypes});\r\n }\r\n\r\n var dirs = [\r\n new BABYLON.Vector3(-1, 0, 0),\r\n new BABYLON.Vector3(1, 0, 0),\r\n new BABYLON.Vector3(0, 0, -1),\r\n new BABYLON.Vector3(0, 0, 1),\r\n ];\r\n\r\n this.createEntityBoundingSidePanel(advancedTexture, scene, dirs, axisAvailableTypes);\r\n }\r\n\r\n this.contextPanels.push(panels.toolbar);\r\n\r\n var posMesh = new BABYLON.Mesh(\"tempMesh\", scene.instance);\r\n posMesh.position = box.center;\r\n this.boundingSideMeshes.push(posMesh);\r\n\r\n this.contextPanels.forEach(panel =>\r\n {\r\n advancedTexture.addControl(panel);\r\n })\r\n\r\n this.createToolTip(advancedTexture);\r\n\r\n return this.contextPanels;\r\n }\r\n\r\n scaleModule(scene, wall, buttonDir, dir, type)\r\n { \r\n if(!this.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MoveCommand(this,SaveHelper.makeSaveData(this)));\r\n var rootMesh = this.getSceneRootMesh(scene);\r\n var moduleBox = this.getBoundingBox2d(scene, [\"Floor\"]);\r\n\r\n var verticalSizeArray = defaultVerticalSizeArray;\r\n var isBalconyModule = this.Floors.filter(o => !o.info.typeName.includes(\"Exterior\")).length == 0;\r\n if(isBalconyModule)\r\n verticalSizeArray = balconyVecticalSizeArray;\r\n\r\n if(type == \"increase\")\r\n {\r\n var sizeVector = new BABYLON.Vector3(Math.abs(dir.x), Math.abs(dir.y), Math.abs(dir.z));\r\n var offset = 1;\r\n }\r\n else\r\n {\r\n var sizeVector = new BABYLON.Vector3(-Math.abs(dir.x), -Math.abs(dir.y), -Math.abs(dir.z));\r\n var offset = -1;\r\n }\r\n\r\n if(dir.multiply(BABYLON.Axis.X).equalsWithEpsilon(BABYLON.Vector3.Zero(), 0.0001)) // Z축\r\n {\r\n var nextSizeOffset = verticalSizeArray.indexOf(this.vertical) + offset;\r\n var nextSize = verticalSizeArray[nextSizeOffset];\r\n\r\n var sizeOffset = Math.abs(nextSize - this.vertical) / 2;\r\n }\r\n else // X축\r\n {\r\n var nextSizeOffset = horizontalSizeArray.indexOf(this.horizontal) + offset;\r\n var nextSize = horizontalSizeArray[nextSizeOffset];\r\n\r\n var sizeOffset = Math.abs(nextSize - this.horizontal) / 2;\r\n }\r\n\r\n sizeOffset = Math.round(sizeOffset * 1000) / 1000;\r\n\r\n var sizeValue = sizeOffset;\r\n \r\n var worldDir = BABYLON.Vector3.TransformNormal(dir, rootMesh.getWorldMatrix());\r\n var absVector = new BABYLON.Vector3(Math.abs(worldDir.x), Math.abs(worldDir.y), Math.abs(worldDir.z));\r\n var buttonAbsVector = new BABYLON.Vector3(Math.abs(buttonDir.x), Math.abs(buttonDir.y), Math.abs(buttonDir.z));\r\n var moduleCenterLineStart = moduleBox.center.add(worldDir.negate().multiply(moduleBox.extendSize));\r\n var moduleCenterLineEnd = moduleBox.center.add(worldDir.multiply(moduleBox.extendSize));\r\n\r\n // 충돌 체크용 박스\r\n var thickness = 0;\r\n if(wall)\r\n thickness = wall.getWallThickness();\r\n\r\n var crossVector = BABYLON.Vector3.Cross(absVector, BABYLON.Axis.Y.negate());\r\n var buttonCrossVector = VectorHelper.abs(BABYLON.Vector3.Cross(buttonAbsVector, BABYLON.Axis.Y.negate()));\r\n var absCrossVector = new BABYLON.Vector3(Math.abs(crossVector.x), Math.abs(crossVector.y), Math.abs(crossVector.z));\r\n var thicknessSizeVector = buttonDir.scale(offset).multiply(new BABYLON.Vector3(thickness + sizeValue, thickness + sizeValue, thickness + sizeValue));\r\n var collisionCenter = moduleBox.center.add(buttonDir.multiply(moduleBox.extendSize)).add(thicknessSizeVector.scale(0.5));\r\n var collisionCenterDir = BABYLON.Vector3.Normalize(collisionCenter.subtract(moduleBox.center));\r\n\r\n var collisionSizeVector = thicknessSizeVector.add(buttonCrossVector.multiply(moduleBox.extendSize)).add(buttonDir.scale(offset).multiply(new BABYLON.Vector3(0.01, 0.01, 0.01)));\r\n\r\n var collisionPoint1 = collisionCenter.add(collisionSizeVector);\r\n var collisionPoint2 = collisionCenter.add(collisionSizeVector.negate());\r\n var collisionBox = new BABYLON.BoundingBox(BABYLON.Vector3.Minimize(collisionPoint1, collisionPoint2), BABYLON.Vector3.Maximize(collisionPoint1, collisionPoint2));\r\n\r\n var deletedItems = [];\r\n\r\n // 내벽 및 외벽 위치 조절 필요\r\n this.Walls.forEach(target =>\r\n {\r\n var targetBox = target.getBoundingBox2d(scene);\r\n var targetLine = target.getWorldWallLine();\r\n var targetDir = BABYLON.Vector3.Normalize(targetLine.end.subtract(targetLine.start));\r\n if(target.info.typeName.includes(\"Interior\"))\r\n {\r\n // 약간의 공차 필요\r\n var min = BABYLON.Vector3.Minimize(targetBox.minimum, targetBox.minimum.add(absVector.scale(0.01)));\r\n var max = BABYLON.Vector3.Maximize(targetBox.maximum, targetBox.maximum.add(absVector.scale(0.01)));\r\n\r\n if(VectorHelper.isParallel(targetDir, worldDir))\r\n {\r\n if(collisionBox.intersectsMinMax(min, max))\r\n {\r\n var targetSize = Math.abs(BABYLON.Vector3.Dot(targetBox.extendSize, worldDir));\r\n if(targetSize + sizeValue * offset <= 0)\r\n {\r\n deletedItems.push(target);\r\n }\r\n else\r\n {\r\n target.scaleEntity(worldDir, sizeVector, 0, sizeValue);\r\n }\r\n }\r\n else\r\n {\r\n target.translateEntity(worldDir.negate(), sizeValue);\r\n }\r\n }\r\n else if(type == \"decrease\")\r\n {\r\n if(collisionBox.intersectsMinMax(min, max))\r\n deletedItems.push(target);\r\n else\r\n {\r\n target.translateEntity(worldDir.negate(), sizeValue);\r\n }\r\n }\r\n else\r\n {\r\n target.translateEntity(worldDir.negate(), sizeValue);\r\n }\r\n }\r\n else if(target.info.typeName.includes(\"Exterior\") || isBalconyModule)\r\n {\r\n // 발코니 모듈은 Floor를 옮겨도 같이 따라가지 않아서 수치를 더해줘야함\r\n var tempSize = isBalconyModule ? sizeValue : sizeValue;\r\n if(!VectorHelper.isParallel(targetDir, worldDir))\r\n {\r\n var point = VectorHelper.calcNearestPointOnLine(moduleCenterLineStart, moduleCenterLineEnd, targetBox.center);\r\n var targetDir = BABYLON.Vector3.Normalize(point.subtract(moduleBox.center));\r\n if(targetDir.equalsWithEpsilon(collisionCenterDir, 0.0001))\r\n {\r\n target.translateEntity(worldDir, tempSize);\r\n }\r\n else\r\n {\r\n target.translateEntity(worldDir.negate(), tempSize);\r\n }\r\n }\r\n else\r\n {\r\n target.scaleEntity(worldDir.negate(), sizeVector, 0, sizeValue);\r\n }\r\n }\r\n });\r\n\r\n // 코너 위치 조절 필요\r\n this.Corners.forEach(target =>\r\n {\r\n var targetBox = target.getBoundingBox2d(scene);\r\n var point = VectorHelper.calcNearestPointOnLine(moduleCenterLineStart, moduleCenterLineEnd, targetBox.center);\r\n var targetDir = BABYLON.Vector3.Normalize(point.subtract(moduleBox.center));\r\n\r\n if(targetDir.equalsWithEpsilon(collisionCenterDir, 0.0001))\r\n {\r\n target.translateEntity(worldDir, sizeValue);\r\n }\r\n else\r\n {\r\n target.translateEntity(worldDir.negate(), sizeValue);\r\n }\r\n });\r\n\r\n // 바닥 크기 조절\r\n this.Floors.forEach(item =>\r\n {\r\n if(!item.info.typeName.includes(\"Exterior\") || isBalconyModule)\r\n {\r\n item.scaleEntity(worldDir, sizeVector, 0, sizeValue);\r\n }\r\n else\r\n {\r\n item.translateEntity(worldDir, sizeValue);\r\n }\r\n });\r\n\r\n this.isFixed = true;\r\n\r\n this.Units.forEach(unit =>\r\n {\r\n var unitBox = unit.getBoundingBox2d(scene);\r\n // 약간의 공차 필요\r\n var min = unitBox.minimum.add(absCrossVector.negate().scale(0.01));\r\n var max = unitBox.maximum.add(absCrossVector.scale(0.01));\r\n\r\n if(collisionBox.intersectsMinMax(min, max))\r\n {\r\n deletedItems.push(unit);\r\n }\r\n else\r\n {\r\n unit.translateEntity(worldDir.negate(), sizeValue);\r\n }\r\n });\r\n\r\n this.Doors.concat(this.Windows).concat(this.Openings).forEach(item =>\r\n {\r\n if(!wall || item.parent != wall)\r\n {\r\n var itemBox = item.getBoundingBox2d(scene);\r\n // 약간의 공차 필요\r\n var min = itemBox.minimum.add(absCrossVector.negate().scale(0.01));\r\n var max = itemBox.maximum.add(absCrossVector.scale(0.01));\r\n\r\n if(collisionBox.intersectsMinMax(min, max))\r\n {\r\n deletedItems.push(item);\r\n }\r\n else\r\n {\r\n item.translateEntity(worldDir.negate(), sizeValue);\r\n }\r\n }\r\n else{\r\n item.translateEntity(worldDir, sizeValue);\r\n }\r\n\r\n item.crushMesh.position = item.viewMeshes.find(x=>x.info.ctgrName === 'Box').position.clone();\r\n item.crushMesh1f.position = item.drawMeshes1f.find(x=>x.info.ctgrName === 'Box').position.clone();\r\n item.crushMesh2f.position = item.drawMeshes2f.find(x=>x.info.ctgrName === 'Box').position.clone();\r\n });\r\n\r\n deletedItems.forEach(item =>\r\n {\r\n item.deleteEntity(scene, item); \r\n });\r\n\r\n // 중심점으로 이동 필요\r\n var rootMeshes = [this.viewRootMesh, this.draw1fRootMesh, this.draw2fRootMesh];\r\n rootMeshes.forEach(rootMesh =>\r\n {\r\n rootMesh.position = rootMesh.position.add(new BABYLON.Vector3(sizeValue, sizeValue, sizeValue).multiply(worldDir)); \r\n });\r\n\r\n\r\n this.isFixed = true;\r\n \r\n scene.updateEntireRoof();\r\n\r\n this.moduleBoxs.forEach(mbox => mbox.dispose());\r\n this.moduleBoxs = [];\r\n\r\n setTimeout(() => {\r\n this.makeBox(this.drawScene1f.instance, '1F')\r\n this.makeBox(this.drawScene2f.instance, '2F')\r\n scene.updateWall();\r\n if(!this.isHistoryWork)\r\n this.drawScene1f.viewer.$SceneLoader.history.slice(-1)[0].dataB = SaveHelper.makeSaveData(this);\r\n }, 200); // Wall이 모두 바뀔때까지 약간의 딜레이 필요\r\n }\r\n\r\n getAll2DRootMeshes()\r\n {\r\n return [this.draw1fRootMesh, this.draw2fRootMesh];\r\n }\r\n getAll3DRootMeshes()\r\n {\r\n return [this.viewRootMesh];\r\n }\r\n\r\n dispose()\r\n {\r\n const childs = this.draw1fRootMesh.getChildMeshes()\r\n .concat(this.draw2fRootMesh.getChildMeshes())\r\n .concat(this.viewRootMesh.getChildMeshes())\r\n\r\n childs.forEach(c=>{\r\n if(c.id === 'crushMesh')\r\n {\r\n c.spot.delete();\r\n }\r\n c.dispose();\r\n });\r\n\r\n this.Columns.forEach(o =>\r\n {\r\n o.dispose();\r\n });\r\n this.moduleBoxs.forEach(mbox => mbox.dispose());\r\n this.draw1fRootMesh.dispose();\r\n this.draw2fRootMesh.dispose();\r\n this.viewRootMesh.dispose();\r\n this.viewScene.viewer.$SceneLoader.EntityLoader.modules = this.viewScene.viewer.$SceneLoader.EntityLoader.modules.filter(x=>x != this);\r\n }\r\n\r\n deleteChild(scene, entity)\r\n {\r\n entity.viewMeshes.concat(entity.drawMeshes1f).concat(entity.drawMeshes2f).forEach(m=>\r\n {\r\n m.getChildMeshes().forEach(child =>\r\n {\r\n child.dispose(); \r\n });\r\n m.dispose();\r\n });\r\n \r\n if(entity.crushMesh)\r\n {\r\n entity.crushMesh.dispose();\r\n }\r\n if(entity.crushMesh1f)\r\n {\r\n entity.crushMesh1f.dispose();\r\n }\r\n if(entity.crushMesh2f)\r\n {\r\n entity.crushMesh2f.dispose();\r\n }\r\n\r\n var targetArray = [];\r\n switch(entity.info.ctgrName)\r\n {\r\n case \"Wall\":\r\n targetArray = this.Walls;\r\n break;\r\n case \"Door\":\r\n targetArray = this.Doors;\r\n break;\r\n case \"Window\":\r\n targetArray = this.Windows;\r\n break;\r\n case \"Opening\":\r\n targetArray = this.Openings;\r\n break;\r\n case \"Stair\":\r\n targetArray = this.Stairs;\r\n break;\r\n case \"Corner\":\r\n targetArray = this.Corners;\r\n break;\r\n case \"Floor\":\r\n targetArray = this.Floors;\r\n break;\r\n }\r\n\r\n var targetIndex = targetArray.indexOf(entity);\r\n if(targetIndex >= 0)\r\n targetArray.splice(targetIndex, 1);\r\n\r\n var targetEntitiesIndex = this.Entities.indexOf(entity);\r\n if(targetEntitiesIndex >= 0)\r\n this.Entities.splice(targetEntitiesIndex, 1);\r\n }\r\n\r\n delete(scene, entity)\r\n {\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.DelteCommand(entity,SaveHelper.makeSaveData(entity)));\r\n\r\n var index = scene.viewer.$SceneLoader.EntityLoader.modules.indexOf(entity);\r\n if(index >= 0)\r\n scene.viewer.$SceneLoader.EntityLoader.modules.splice(index, 1);\r\n\r\n entity.Windows.forEach(x=>{\r\n x.dispose();\r\n })\r\n\r\n entity.Doors.forEach(x=>{\r\n x.dispose();\r\n })\r\n\r\n entity.Openings.forEach(x=>{\r\n x.dispose();\r\n })\r\n\r\n entity.Stairs.forEach(x=>{\r\n x.dispose();\r\n })\r\n\r\n entity.Units.forEach(x=>{\r\n x.dispose();\r\n })\r\n\r\n scene.removeSelectedMesh();\r\n scene.updateEntireRoof();\r\n scene.updateWall();\r\n entity.dispose();\r\n }\r\n\r\n hideroof(scene, entity)\r\n {\r\n entity.isHideRoof = !entity.isHideRoof;\r\n scene.updateEntireRoof();\r\n }\r\n}","import { CurrentScreenBlock } from \"@babylonjs/core\";\r\nimport DockingEntity from \"./DockingEntity\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport CsgHelper from '../Helper/CsgHelper'\r\nimport * as HistoryCommand from \"../Entities/historyCommands\"\r\n\r\nexport default class WindowEntity extends DockingEntity{\r\n constructor()\r\n {\r\n super();\r\n this.isSimbol = true;\r\n this.crushCollider = null;\r\n this.viewRootMesh = null;\r\n this.crushMesh = null;\r\n }\r\n\r\n drawViewMesh()\r\n {\r\n this.viewMeshes.forEach(mesh =>{\r\n const info = mesh.info;\r\n if(info.ctgrName === 'Box')\r\n {\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n m1f.info = info;\r\n m2f.info = info;\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n m1f.material = null;\r\n m2f.material = null;\r\n }\r\n });\r\n\r\n const w1f = this.createSimbol(this.drawScene1f.instance,this.drawMeshes1f);\r\n w1f.info = this.info;\r\n w1f.entity = this;\r\n w1f.setEnabled(false);\r\n const w2f = this.createSimbol(this.drawScene2f.instance,this.drawMeshes2f);\r\n w2f.info = this.info;\r\n w2f.entity = this;\r\n w2f.setEnabled(false);\r\n this.drawMeshes1f.push(w1f);\r\n this.drawMeshes2f.push(w2f);\r\n }\r\n\r\n createSimbol(sceneIns,meshes)\r\n {\r\n const box = meshes.find(x=>x.info.ctgrName === 'Box');\r\n box.isVisible = false;\r\n const boxInfo = box.getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n \r\n if(this.parent)\r\n {\r\n if(this.parent.wallType == \"Horizontal\")\r\n {\r\n const windowPlane = BABYLON.MeshBuilder.CreatePlane(null,{ width: width, height: 0.14 }, sceneIns);\r\n windowPlane.material = sceneIns.getMaterialByName('Window2dMat');\r\n windowPlane.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);\r\n windowPlane.position = box.position.clone();\r\n windowPlane.position.y = 3.2;\r\n windowPlane.position.z = this.parent.getOriginPos().z;\r\n windowPlane.enableEdgesRendering();\r\n windowPlane.edgesWidth = 4.0;\r\n windowPlane.edgesColor = new BABYLON.Color4(0.439, 0.447, 0.455, 1);\r\n return windowPlane;\r\n }\r\n else\r\n {\r\n const windowPlane = BABYLON.MeshBuilder.CreatePlane(null,{ width: depth, height: 0.14 }, sceneIns);\r\n windowPlane.material = sceneIns.getMaterialByName('Window2dMat');\r\n windowPlane.rotation = new BABYLON.Vector3(Math.PI / 2, Math.PI / 2, 0);\r\n windowPlane.position = box.position.clone();\r\n windowPlane.position.y = 3.2;\r\n windowPlane.position.x = this.parent.getOriginPos().x;\r\n windowPlane.enableEdgesRendering();\r\n windowPlane.edgesWidth = 4.0;\r\n windowPlane.edgesColor = new BABYLON.Color4(0.439, 0.447, 0.455, 1);\r\n return windowPlane;\r\n }\r\n }\r\n else\r\n {\r\n const windowPlane = BABYLON.MeshBuilder.CreatePlane(null,{ width: width, height: 0.14 }, sceneIns);\r\n windowPlane.material = sceneIns.getMaterialByName('Window2dMat');\r\n windowPlane.position = box.position.clone();\r\n windowPlane.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);\r\n windowPlane.position.y = 3.2;\r\n windowPlane.enableEdgesRendering();\r\n windowPlane.edgesWidth = 4.0;\r\n windowPlane.edgesColor = new BABYLON.Color4(0.439, 0.447, 0.455, 1);\r\n return windowPlane;\r\n }\r\n }\r\n\r\n createRootMesh()\r\n {\r\n try\r\n {\r\n const meshes = [];\r\n this.viewMeshes.filter(x=>x.info.ctgrName != 'Box').forEach(o=>{\r\n CsgHelper.bakeTransform(o);\r\n meshes.push(o);\r\n });\r\n \r\n const mergeMesh = BABYLON.Mesh.MergeMeshes(meshes, true, true, undefined, false, true);\r\n\r\n mergeMesh.info = this.info;\r\n mergeMesh.moduleEntity = this.moduleEntity;\r\n mergeMesh.parent = this.moduleEntity?.viewRootMesh;\r\n\r\n CsgHelper.bakeTransform(mergeMesh);\r\n\r\n const box = this.viewMeshes.find(x=>x.info.ctgrName === 'Box');\r\n mergeMesh.position = box.position.clone();\r\n mergeMesh.alwaysSelectAsActiveMesh = true\r\n\r\n this.viewMeshes = [];\r\n this.viewMeshes.push(mergeMesh)\r\n this.viewMeshes.push(box)\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n }\r\n }\r\n\r\n setPosition(instance,value)\r\n {\r\n const meshes = this.getDrawMeshes();\r\n const targets = meshes.filter(x=>x._scene === instance);\r\n targets.forEach(mesh=>{\r\n mesh.position = value.clone();\r\n })\r\n\r\n this.viewMeshes.forEach(x=>{\r\n x.position = value.clone();\r\n })\r\n }\r\n\r\n getButtonData()\r\n {\r\n return[\r\n {\r\n type:'module',\r\n press:this.selectModule\r\n },{\r\n type:'door-mirror-h',\r\n press:this.mirrorh\r\n },{\r\n type:'door-mirror-v',\r\n press:this.mirrorv\r\n },\r\n // {\r\n // type:'copy',\r\n // press:this.copy\r\n // },\r\n {\r\n type:'delete',\r\n press:this.delete\r\n },\r\n ];\r\n }\r\n\r\n createContextPanel(scene)\r\n {\r\n var advancedTexture = this.getAdvancedTexture(scene.instance);\r\n var panels = this.getContextDefaultPanel();\r\n\r\n var pnButtons = this.createButtonPanel(advancedTexture, scene, this.info.ctgrName, this.getButtonData());\r\n panels.toolbar.addControl(pnButtons);\r\n\r\n this.contextPanels.push(panels.toolbar);\r\n\r\n var box = this.getBoundingBox2d(scene);\r\n var posMesh = new BABYLON.Mesh(\"tempMesh\", scene.instance);\r\n posMesh.position = box.center;\r\n this.boundingSideMeshes.push(posMesh);\r\n\r\n this.contextPanels.forEach(panel =>\r\n {\r\n advancedTexture.addControl(panel);\r\n })\r\n\r\n this.createToolTip(advancedTexture);\r\n\r\n return this.contextPanels;\r\n }\r\n\r\n mirrorv(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MirrorvCommand(entity));\r\n var meshes2d = entity.getAll2DRootMeshes();\r\n var meshes3d = entity.getAll3DRootMeshes();\r\n\r\n var wallType = entity.parent.wallType;\r\n if(wallType == \"Vertical\")\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.z = -o.scaling.z;\r\n });\r\n }\r\n else\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.y = -o.scaling.y;\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.z = -o.scaling.z;\r\n });\r\n }\r\n }\r\n\r\n mirrorh(scene, entity)\r\n {\r\n if(!entity.isHistoryWork)\r\n scene.viewer.$SceneLoader.makeHistory(new HistoryCommand.MirrorhCommand(entity));\r\n var meshes2d = entity.getAll2DRootMeshes();\r\n var meshes3d = entity.getAll3DRootMeshes();\r\n\r\n var wallType = entity.parent.wallType;\r\n if(wallType == \"Vertical\")\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.y = -o.scaling.y;\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n });\r\n }\r\n else\r\n {\r\n meshes2d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n });\r\n meshes3d.forEach(o => \r\n {\r\n o.scaling.x = -o.scaling.x;\r\n });\r\n }\r\n }\r\n\r\n getAll2DRootMeshes()\r\n {\r\n return this.getDrawMeshes();\r\n }\r\n getAll3DRootMeshes()\r\n {\r\n return this.viewMeshes;\r\n }\r\n\r\n setDrawFlipType()\r\n {\r\n const v = Number(this.info.flipType[1]);\r\n const h = Number(this.info.flipType[3]);\r\n\r\n for(let vm of this.getDrawMeshes())\r\n {\r\n if(v === 1)\r\n {\r\n vm.scaling.y *= -1;\r\n }\r\n if(h === 1)\r\n {\r\n vm.scaling.x *= -1;\r\n }\r\n }\r\n }\r\n\r\n setViewFlipType()\r\n {\r\n const v = Number(this.info.flipType[1]);\r\n const h = Number(this.info.flipType[3]);\r\n\r\n for(let vm of this.viewMeshes)\r\n {\r\n if(v === 1)\r\n {\r\n vm.scaling.z *= -1;\r\n }\r\n if(h === 1)\r\n {\r\n vm.scaling.x *= -1;\r\n }\r\n }\r\n }\r\n\r\n setModuleParent()\r\n {\r\n if(!this.moduleEntity)\r\n return;\r\n\r\n this.drawMeshes1f.forEach(x=>x.parent = this.moduleEntity.draw1fRootMesh);\r\n this.drawMeshes2f.forEach(x=>x.parent = this.moduleEntity.draw2fRootMesh);\r\n this.viewMeshes.forEach(x=>x.parent = this.moduleEntity.viewRootMesh);\r\n \r\n }\r\n\r\n viewMeshToDrawMeshTrasfrom()\r\n {\r\n const drawWindowMeshes = this.getDrawMeshes().filter(o=>o.info.ctgrName === 'Window');\r\n const drawBoxMeshes = this.getDrawMeshes().filter(o=>o.info.ctgrName === 'Box');\r\n const viewMesh = this.viewMeshes.find(x=>x.info.ctgrName === 'Window')\r\n const viewBoxMesh = this.viewMeshes.find(x=>x.info.ctgrName === 'Box')\r\n\r\n const vbox = viewMesh.getBoundingInfo().boundingBox;\r\n const vz = vbox.extendSize.z * 2;\r\n\r\n for(let drawWindowMesh of drawWindowMeshes)\r\n {\r\n drawWindowMesh.position.x = viewMesh.position.x;\r\n drawWindowMesh.position.z = viewMesh.position.z;\r\n drawWindowMesh.rotation.y = viewMesh.rotation.y;\r\n\r\n const dbox = drawWindowMesh.getBoundingInfo().boundingBox;\r\n const dy = dbox.extendSize.y *2;\r\n \r\n const gap = vz - dy;\r\n if(drawWindowMesh.rotation.y === 0)\r\n {\r\n drawWindowMesh.position.z -= gap/2 * drawWindowMesh.scaling.y * this.moduleEntity.viewRootMesh.scaling.z;\r\n }\r\n else\r\n {\r\n drawWindowMesh.position.x += gap/2 * drawWindowMesh.scaling.y * this.moduleEntity.viewRootMesh.scaling.x;\r\n }\r\n }\r\n\r\n for(let drawBoxMesh of drawBoxMeshes)\r\n {\r\n drawBoxMesh.position.x = viewBoxMesh.position.x;\r\n drawBoxMesh.position.z = viewBoxMesh.position.z;\r\n drawBoxMesh.rotation.y = viewBoxMesh.rotation.y;\r\n }\r\n }\r\n\r\n drawMeshToViewMeshTrasfrom()\r\n {\r\n const drawWindowMesh = this.getDrawMeshes().find(o=>o.info.ctgrName === 'Window');\r\n const drawBoxMesh = this.getDrawMeshes().find(o=>o.info.ctgrName === 'Box');\r\n const viewMesh = this.viewMeshes.find(x=>x.info.ctgrName === 'Window')\r\n const viewBoxMesh = this.viewMeshes.find(x=>x.info.ctgrName === 'Box')\r\n\r\n viewMesh.scaling.x = drawWindowMesh.scaling.x;\r\n viewMesh.scaling.z = drawWindowMesh.scaling.y;\r\n viewBoxMesh.scaling = drawBoxMesh.scaling;\r\n viewMesh.rotation.y = drawWindowMesh.rotation.y;\r\n viewBoxMesh.rotation.y = drawBoxMesh.rotation.y;\r\n viewMesh.position = drawWindowMesh.position.clone();\r\n viewMesh.position.y = this.info.height/1000;\r\n viewBoxMesh.position = drawBoxMesh.position.clone();\r\n viewBoxMesh.position.y = this.info.height/1000;\r\n \r\n this.viewMeshes.forEach(x=>x.parent = this.moduleEntity.viewRootMesh)\r\n }\r\n}","import DockingEntity from \"./DockingEntity\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\n\r\nexport default class OpeningEntity extends DockingEntity{\r\n constructor()\r\n {\r\n super();\r\n this.isSimbol = true;\r\n }\r\n\r\n getButtonData()\r\n {\r\n return [\r\n {\r\n type:'module',\r\n press:this.selectModule\r\n },{\r\n type:'delete',\r\n press:this.delete\r\n },\r\n ];\r\n }\r\n\r\n createContextPanel(scene)\r\n {\r\n var advancedTexture = this.getAdvancedTexture(scene.instance);\r\n var panels = this.getContextDefaultPanel();\r\n\r\n var pnButtons = this.createButtonPanel(advancedTexture, scene, this.info.ctgrName, this.getButtonData());\r\n panels.toolbar.addControl(pnButtons);\r\n\r\n this.contextPanels.push(panels.toolbar);\r\n\r\n var box = this.getBoundingBox2d(scene);\r\n var posMesh = new BABYLON.Mesh(\"tempMesh\", scene.instance);\r\n posMesh.position = box.center;\r\n this.boundingSideMeshes.push(posMesh);\r\n\r\n this.contextPanels.forEach(panel =>\r\n {\r\n advancedTexture.addControl(panel);\r\n })\r\n\r\n this.createToolTip(advancedTexture);\r\n\r\n return this.contextPanels;\r\n }\r\n\r\n drawViewMesh()\r\n {\r\n this.viewMeshes.forEach(mesh =>{\r\n const info = mesh.info;\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n m1f.info = info;\r\n m2f.info = info;\r\n m1f.isVisible = false;\r\n m2f.isVisible = false;\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n });\r\n\r\n const o1f = this.createSimbol(this.drawScene1f.instance,this.drawMeshes1f);\r\n o1f.forEach(x=>x.info = this.info)\r\n //o1f.info = this.info;\r\n const o2f = this.createSimbol(this.drawScene2f.instance,this.drawMeshes2f);\r\n o2f.forEach(x=>x.info = this.info)\r\n //o2f.info = this.info;\r\n\r\n this.drawMeshes1f[0].dispose();\r\n //this.drawMeshes1f[0] = o1f;\r\n this.drawMeshes1f[0] = o1f[0];\r\n this.drawMeshes1f.push(o1f[1]);\r\n\r\n this.drawMeshes2f[0].dispose();\r\n //this.drawMeshes2f[0] = o2f;\r\n this.drawMeshes2f[0] = o2f[0];\r\n this.drawMeshes2f.push(o2f[1]);\r\n\r\n this.drawMeshes=[];\r\n this.drawMeshes = this.drawMeshes1f.concat(this.drawMeshes2f);\r\n }\r\n\r\n createSimbol(sceneIns,meshes)\r\n {\r\n const box = meshes[0];\r\n box.isVisible = false;\r\n const boxInfo = box.getBoundingInfo();\r\n let width = boxInfo.boundingBox.extendSize.x * 2;\r\n let depth = boxInfo.boundingBox.extendSize.z * 2;\r\n const length = width > depth ? width : depth;\r\n \r\n const opPlane = BABYLON.MeshBuilder.CreatePlane(null,{ width: length, height: 0.14 }, sceneIns);\r\n opPlane.material = sceneIns.getMaterialByName('OpenningMat');\r\n opPlane.rotation = new BABYLON.Vector3(Math.PI / 2, box.rotation.y, 0);\r\n opPlane.position = box.position.clone();\r\n opPlane.position.y = 3.2;\r\n // opPlane.showBoundingBox = true;\r\n \r\n const dashBox = this.createDashBox(opPlane,sceneIns);\r\n return dashBox;\r\n }\r\n\r\n createDashBox(plane,sceneIns)\r\n {\r\n const width = plane.getBoundingInfo().boundingBox.extendSize.x * 2;\r\n const height = plane.getBoundingInfo().boundingBox.extendSize.y * 2;\r\n \r\n const p1 = new BABYLON.Vector3(-width/2,height/2, 0);\r\n const p2 = new BABYLON.Vector3(width/2,height/2, 0);\r\n const p3 = new BABYLON.Vector3(width/2,-height/2, 0);\r\n const p4 = new BABYLON.Vector3(-width/2,-height/2, 0);\r\n\r\n let dashNb = 20;\r\n const dashRate = 30;\r\n\r\n if(width > height)\r\n {\r\n dashNb = width*dashRate;\r\n }\r\n else\r\n {\r\n dashNb = height*dashRate;\r\n }\r\n\r\n const dashedLines = BABYLON.MeshBuilder.CreateDashedLines(null,{points: [p1,p2,p3,p4,p1], dashSize: 1, gapSize: 1, dashNb: dashNb}, sceneIns);\r\n dashedLines.color = new BABYLON.Color4(0.439, 0.447, 0.455, 1);\r\n //dashedLines.color = new BABYLON.Color4(1, 0, 0, 1);\r\n dashedLines.rotation = plane.rotation.clone();\r\n dashedLines.position = plane.position.clone();\r\n dashedLines.entity = this;\r\n plane.entity = this;\r\n return [plane,dashedLines];\r\n }\r\n}","import EntityBase from \"./EntityBase\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport * as Material from '@babylonjs/materials'\r\nimport CsgHelper from \"../Helper/CsgHelper\"\r\nimport TopSpotItem from './../Items/TopSpotItem';\r\n\r\nexport default class VoidEntity extends EntityBase{\r\n constructor()\r\n {\r\n super();\r\n this.crushMesh = null;\r\n this.crushMesh1f = null;\r\n this.crushMesh2f = null;\r\n this.isSimbol = true;\r\n }\r\n\r\n drawViewMesh()\r\n {\r\n this.viewMeshes.forEach(mesh =>{\r\n const info = mesh.info;\r\n if(info.ctgrName === 'Box')\r\n {\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n m1f.info = info;\r\n m2f.info = info;\r\n m1f.isVisible = false;\r\n m2f.isVisible = false;\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n }\r\n });\r\n\r\n const v1f = this.createSimbol(this.drawScene1f.instance);\r\n v1f.info = this.info;\r\n v1f.entity = this;\r\n v1f.setEnabled(false);\r\n const v2f = this.createSimbol(this.drawScene2f.instance);\r\n v2f.info = this.info;\r\n v2f.entity = this;\r\n v2f.setEnabled(false);\r\n this.drawMeshes1f.push(v1f);\r\n this.drawMeshes2f.push(v2f);\r\n }\r\n\r\n createSimbol(sceneIns)\r\n {\r\n return this.createLine(sceneIns);\r\n }\r\n\r\n createLine(sceneIns)\r\n {\r\n const bb = this.viewMeshes[0].getBoundingInfo().boundingBox;\r\n const width = bb.extendSize.x *2;\r\n const height = bb.extendSize.z *2;\r\n\r\n const p1 = new BABYLON.Vector3(-width/2,height/2, 0);\r\n const p2 = new BABYLON.Vector3(width/2,height/2, 0);\r\n const p3 = new BABYLON.Vector3(width/2,-height/2, 0);\r\n const p4 = new BABYLON.Vector3(-width/2,-height/2, 0);\r\n\r\n const line = BABYLON.MeshBuilder.CreateLines(null,{points: [p1,p2,p3,p1,p4,p2,p3,p4]}, sceneIns);\r\n line.color = new BABYLON.Color4(0.439, 0.447, 0.455, 1);\r\n line.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);\r\n line.position = this.viewMeshes[0].position.clone();\r\n \r\n return line;\r\n }\r\n\r\n createDashLine(sceneIns)\r\n {\r\n const bb = this.viewMeshes[0].getBoundingInfo().boundingBox;\r\n const width = bb.extendSize.x *2;\r\n const height = bb.extendSize.z *2;\r\n\r\n let dashNb = 20;\r\n const dashRate = 30;\r\n\r\n if(width > height)\r\n {\r\n dashNb = width*dashRate;\r\n }\r\n else\r\n {\r\n dashNb = height*dashRate;\r\n }\r\n\r\n const p1 = new BABYLON.Vector3(-width/2,height/2, 0);\r\n const p2 = new BABYLON.Vector3(width/2,height/2, 0);\r\n const p3 = new BABYLON.Vector3(width/2,-height/2, 0);\r\n const p4 = new BABYLON.Vector3(-width/2,-height/2, 0);\r\n\r\n const line = BABYLON.MeshBuilder.CreateDashedLines(null,{points: [p1,p2,p3,p1,p4,p2,p3,p4], dashSize: 1, gapSize: 1, dashNb: dashNb}, sceneIns);\r\n line.color = new BABYLON.Color4(0.439, 0.447, 0.455, 0.4);\r\n line.rotation = new BABYLON.Vector3(Math.PI / 2, 0, 0);\r\n line.position = this.viewMeshes[0].position.clone();\r\n return line;\r\n }\r\n\r\n getContextEntity()\r\n {\r\n return this.moduleEntity;\r\n }\r\n\r\n createCrushMesh(root = null)\r\n {\r\n let rootEnt = root ? root : this.moduleEntity;\r\n if(this.crushMesh)\r\n {\r\n return;\r\n }\r\n const crushMesh = this.viewMeshes.find(x=>x.info.ctgrName === \"Box\")?.clone();\r\n if(!crushMesh)\r\n return;\r\n crushMesh.material = this.viewScene.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMesh = this.crushMeshSetting(crushMesh,rootEnt.viewRootMesh);\r\n\r\n if(this.crushMesh1f)\r\n {\r\n return;\r\n }\r\n const crushMesh1f = this.drawMeshes1f.find(x=>x.info.ctgrName === \"Box\")?.clone();\r\n if(!crushMesh1f)\r\n return;\r\n crushMesh1f.material = this.drawScene1f.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMesh1f = this.crushMeshSetting(crushMesh1f,rootEnt.draw1fRootMesh);\r\n\r\n if(this.crushMesh2f)\r\n {\r\n return;\r\n }\r\n const crushMesh2f = this.drawMeshes2f.find(x=>x.info.ctgrName === \"Box\")?.clone();\r\n if(!crushMesh2f)\r\n return;\r\n crushMesh2f.material = this.drawScene2f.instance.getMaterialByName(\"redBoxMaterial\");\r\n this.crushMesh2f = this.crushMeshSetting(crushMesh2f,rootEnt.draw2fRootMesh);\r\n }\r\n\r\n crushMeshSetting(crushMesh,rootMesh)\r\n {\r\n if(!crushMesh)\r\n return;\r\n\r\n CsgHelper.initialMatrix(crushMesh)\r\n CsgHelper.setParentSubtractLocation(crushMesh,rootMesh)\r\n crushMesh.parent = null;\r\n crushMesh.id = \"crushMeshTop\";\r\n crushMesh.originPos = crushMesh.position.clone();\r\n crushMesh.moduleEntity = this.moduleEntity;\r\n crushMesh.rootMesh = rootMesh;\r\n crushMesh.parent = rootMesh;\r\n crushMesh.entity = this;\r\n crushMesh.isVisible = false;\r\n crushMesh.setEnabled(true);\r\n crushMesh.spot = new TopSpotItem(crushMesh, crushMesh._scene,null, rootMesh._scene != this.viewScene.instance)\r\n crushMesh.computeWorldMatrix();\r\n\r\n return crushMesh;\r\n }\r\n\r\n async makeTempMesh(instance)\r\n {\r\n let isCrush = false;\r\n const tempScaling = this.crushMesh.scaling.clone();\r\n if(!tempScaling)\r\n return;\r\n\r\n this.crushMesh.scaling.x *= 1.0001;\r\n this.crushMesh.scaling.z *= 1.0001;\r\n this.crushMesh.computeWorldMatrix();\r\n\r\n const csg = BABYLON.CSG.FromMesh(this.crushMesh)\r\n \r\n if(this.crushMesh.spot.includedOnlyMeshes.length > 1)\r\n isCrush = true;\r\n\r\n if(!isCrush)\r\n return;\r\n\r\n const mat = instance.getMaterialByName('WallBackMat');\r\n const result = csg.toMesh('backMesh',mat,instance,true);\r\n result.parent = this.crushMesh.parent;\r\n result.flipFaces(true)\r\n\r\n this.crushMesh.scaling = tempScaling.clone();\r\n const spot = this.crushMesh.spot;\r\n spot.includedOnlyMeshes.push(result);\r\n }\r\n}","import EntityBase from \"./EntityBase\";\r\n\r\nexport default class CornerEntity extends EntityBase{\r\n constructor()\r\n {\r\n super();\r\n }\r\n\r\n drawViewMesh()\r\n {\r\n this.viewMeshes.forEach(mesh =>{\r\n const oriCsg = BABYLON.CSG.FromMesh(mesh);\r\n const m1f = oriCsg.toMesh(null,null,this.drawScene1f.instance,true);\r\n const m2f = oriCsg.toMesh(null,null,this.drawScene2f.instance,true);\r\n \r\n m1f.info = mesh.info;\r\n m2f.info = mesh.info;\r\n \r\n m1f.material = this.drawScene1f.instance.getMaterialByName('WallMat');\r\n m2f.material = this.drawScene2f.instance.getMaterialByName('WallMat');\r\n\r\n this.drawMeshes1f.push(m1f);\r\n this.drawMeshes2f.push(m2f);\r\n });\r\n }\r\n\r\n getViewPosition()\r\n {\r\n return this.viewMeshes[0].absolutePosition;\r\n }\r\n\r\n dispose()\r\n {\r\n for(let m of this.drawMeshes1f)\r\n {\r\n m.dispose();\r\n }\r\n for(let m of this.drawMeshes2f)\r\n {\r\n m.dispose();\r\n }\r\n for(let m of this.viewMeshes)\r\n {\r\n m.dispose();\r\n }\r\n\r\n if(this.moduleEntity)\r\n {\r\n this.moduleEntity.Entities = this.moduleEntity.Entities.filter(x => x != this);\r\n this.moduleEntity.Corners = this.moduleEntity.Corners.filter(x => x != this);\r\n }\r\n }\r\n}","import { Vector3 } from \"@babylonjs/core\";\r\nimport WallEntity from \"./WallEntity\";\r\nimport CsgHelper from \"../Helper/CsgHelper\"\r\n\r\nexport default class TempWallEntity{\r\n constructor()\r\n {\r\n this.info = {ctgrName : 'Wall'};\r\n this.d1fWall = null;\r\n this.d2fWall = null;\r\n this.d1fPointer = null;\r\n this.d2fPointer = null;\r\n this.editPoint = null;\r\n this.startPoint = null;\r\n this.endPoint = null;\r\n this.status = false;\r\n this.targetModule = null;\r\n\r\n this.drawScene1f = null;\r\n this.drawScene2f = null;\r\n this.viewScene = null;\r\n }\r\n\r\n setStatus(value)\r\n {\r\n const sMat1 = this.d1fPointer._scene.getMaterialByName('WallPointMat');\r\n const fMat1 = this.d1fPointer._scene.getMaterialByName('WallRedPointMat');\r\n const sMat2 = this.d2fPointer._scene.getMaterialByName('WallPointMat');\r\n const fMat2 = this.d2fPointer._scene.getMaterialByName('WallRedPointMat');\r\n \r\n this.d1fPointer.material = value ? sMat1 : fMat1;\r\n this.d2fPointer.material = value ? sMat2 : fMat2;\r\n this.status = value;\r\n }\r\n\r\n setEnable(instance,value)\r\n {\r\n if(instance === this.d1fPointer._scene)\r\n {\r\n this.d1fPointer.setEnabled(value);\r\n }\r\n else\r\n {\r\n this.d2fPointer.setEnabled(value);\r\n }\r\n }\r\n\r\n setPosition(instance,pos)\r\n {\r\n if(instance === this.d1fPointer._scene)\r\n {\r\n this.d1fPointer.position = pos.clone();\r\n }\r\n else\r\n {\r\n this.d2fPointer.position = pos.clone();\r\n }\r\n }\r\n\r\n getInstancePointer(instance)\r\n {\r\n if(instance === this.d1fPointer._scene)\r\n {\r\n return this.d1fPointer;\r\n }\r\n else\r\n {\r\n return this.d2fPointer;\r\n }\r\n }\r\n\r\n updateTempWall(endPoint,length,axis)\r\n {\r\n this.endPoint = endPoint;\r\n\r\n const wallThk = 0.09;\r\n const d1Scene = this.d1fPointer._scene;\r\n const d2Scene = this.d2fPointer._scene;\r\n const center = this.startPoint.add(endPoint).divide(new Vector3(2,2,2))\r\n \r\n this.d1fWall?.dispose();\r\n this.d2fWall?.dispose();\r\n\r\n const axisXValue = axis === 'x' ? 1 : 0;\r\n const axisZValue = axis === 'z' ? 1 : 0;\r\n const width = (length + wallThk) * axisXValue + wallThk * axisZValue;\r\n const depth = (length + wallThk) * axisZValue + wallThk * axisXValue;\r\n \r\n const newD1fWall = this.createBox(width,depth,d1Scene,center);\r\n const newD2fWall = this.createBox(width,depth,d2Scene,center);\r\n \r\n this.d1fWall = newD1fWall;\r\n this.d2fWall = newD2fWall;\r\n\r\n this.d1fWall.setEnabled(true);\r\n this.d2fWall.setEnabled(true);\r\n }\r\n\r\n createBox(width,depth,instance,pos)\r\n {\r\n const box = BABYLON.MeshBuilder.CreateBox(null,{width : width, height : 2.707, depth : depth},instance);\r\n box.material = instance.getMaterialByName('WallAlphaMat');\r\n box.position = pos.clone();\r\n return box;\r\n }\r\n\r\n createEntity()\r\n {\r\n if(!this.endPoint)\r\n return;\r\n \r\n const ent = new WallEntity();\r\n ent.drawScene1f = this.drawScene1f\r\n ent.drawScene2f = this.drawScene2f\r\n ent.viewScene = this.viewScene\r\n\r\n const d1Ins = this.drawScene1f.instance;\r\n const d2Ins = this.drawScene2f.instance;\r\n const viewIns = this.viewScene.instance;\r\n \r\n const d1Mesh = this.createWallMesh(d1Ins,'WallMat');\r\n const d2Mesh = this.createWallMesh(d2Ins,'WallMat');\r\n const viewMesh = this.createWallMesh(viewIns,'WallMat');\r\n\r\n const mInfos = this.targetModule.Walls.map(x=>x.info).filter(x=>x.typeName.includes('Interior'));\r\n const lastNum = Math.max(...mInfos.map(x=>x.name.split('Interior')[1]).filter(x=>x).map(x=>Number(x)));\r\n const itemNum = isFinite(lastNum) ? lastNum +1 : 0;\r\n const parentName = this.targetModule.info.name + '-' + this.targetModule.info.ctgrName;\r\n const info = {ctgrName:\"Wall\", flipType:null, name:\"Wall-Interior\"+itemNum,typeName:\"Interior\"+itemNum, parentName:parentName};\r\n ent.info = info;\r\n ent.moduleEntity = this.targetModule;\r\n \r\n d1Mesh.info = info;\r\n d2Mesh.info = info;\r\n viewMesh.info = info;\r\n\r\n d1Mesh.entity = ent;\r\n d2Mesh.entity = ent;\r\n viewMesh.entity = ent;\r\n\r\n ent.drawMeshes1f.push(d1Mesh)\r\n ent.drawMeshes2f.push(d2Mesh)\r\n ent.viewMeshes.push(viewMesh)\r\n\r\n const rot = this.targetModule.draw1fRootMesh.rotation.y;\r\n d1Mesh.rotation.y -= rot;\r\n d2Mesh.rotation.y -= rot;\r\n viewMesh.rotation.y -= rot;\r\n\r\n d1Mesh.position.y = 0.393+1.3535+this.targetModule.draw1fRootMesh.position.y;\r\n d2Mesh.position.y = 0.393+1.3535+this.targetModule.draw2fRootMesh.position.y;\r\n viewMesh.position.y = 0.393+1.3535+this.targetModule.viewRootMesh.position.y;\r\n\r\n CsgHelper.initialMatrix(d1Mesh)\r\n CsgHelper.initialMatrix(d2Mesh)\r\n CsgHelper.initialMatrix(viewMesh)\r\n\r\n // CsgHelper.setParentSubtractLocation(d1Mesh,this.targetModule.draw1fRootMesh);\r\n // CsgHelper.setParentSubtractLocation(d2Mesh,this.targetModule.draw2fRootMesh);\r\n // CsgHelper.setParentSubtractLocation(viewMesh,this.targetModule.viewRootMesh);\r\n\r\n const d1Pos = d1Mesh.getAbsolutePosition();\r\n const d2Pos = d2Mesh.getAbsolutePosition();\r\n const vPos = viewMesh.getAbsolutePosition();\r\n\r\n d1Mesh.parent = this.targetModule.draw1fRootMesh;\r\n d2Mesh.parent = this.targetModule.draw2fRootMesh;\r\n viewMesh.parent = this.targetModule.viewRootMesh;\r\n\r\n d1Mesh.setAbsolutePosition(d1Pos);\r\n d2Mesh.setAbsolutePosition(d2Pos);\r\n viewMesh.setAbsolutePosition(vPos);\r\n\r\n ent.setWallType();\r\n ent.moduleEntity = this.targetModule;\r\n this.targetModule.Entities.push(ent);\r\n this.targetModule.Walls.push(ent);\r\n\r\n this.startPoint = this.endPoint.clone();\r\n this.endPoint = null;\r\n this.setPosition(d1Ins,this.startPoint)\r\n this.setPosition(d2Ins,this.startPoint)\r\n\r\n this.targetModule.setPenetrateMode(this.targetModule.floorPenetrate)\r\n \r\n ent.info.guid = this.viewScene.viewer.$SceneLoader.CreateGuid()\r\n return ent;\r\n }\r\n\r\n createWallMesh(instance,matName)\r\n {\r\n const csg = BABYLON.CSG.FromMesh(this.d1fWall);\r\n const mat = instance.getMaterialByName(matName);\r\n\r\n const newWall = csg.toMesh(null,mat,instance,true);\r\n return newWall;\r\n }\r\n\r\n\r\n dispose()\r\n {\r\n this.d1fWall?.dispose();\r\n this.d2fWall?.dispose();\r\n this.d1fPointer?.dispose();\r\n this.d2fPointer?.dispose();\r\n\r\n this.drawScene1f.isAddWallMode = false;\r\n this.drawScene2f.isAddWallMode = false;\r\n\r\n const d1Ins = this.drawScene1f.instance;\r\n const d2Ins = this.drawScene2f.instance;\r\n\r\n d1Ins.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n\r\n d2Ins.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n }\r\n}","import { Vector3 } from \"@babylonjs/core\";\r\nimport OpeningEntity from \"./OpeningEntity\";\r\nimport CsgHelper from \"../Helper/CsgHelper\"\r\n\r\nexport default class TempOpningEntity{\r\n constructor()\r\n {\r\n this.info = {ctgrName : 'Opening'};\r\n this.d1fWall = null;\r\n this.d2fWall = null;\r\n this.viewWall = null;\r\n this.d1fPointer = null;\r\n this.d2fPointer = null;\r\n this.editPoint = null;\r\n this.startPoint = null;\r\n this.endPoint = null;\r\n this.status = false;\r\n this.targetModule = null;\r\n this.targetWall = null;\r\n this.length = 0;\r\n\r\n this.drawScene1f = null;\r\n this.drawScene2f = null;\r\n this.viewScene = null;\r\n }\r\n\r\n setStatus(value)\r\n {\r\n const sMat1 = this.d1fPointer._scene.getMaterialByName('WallPointMat');\r\n const fMat1 = this.d1fPointer._scene.getMaterialByName('WallRedPointMat');\r\n const sMat2 = this.d2fPointer._scene.getMaterialByName('WallPointMat');\r\n const fMat2 = this.d2fPointer._scene.getMaterialByName('WallRedPointMat');\r\n \r\n this.d1fPointer.material = value ? sMat1 : fMat1;\r\n this.d2fPointer.material = value ? sMat2 : fMat2;\r\n this.status = value;\r\n }\r\n \r\n setEnable(instance,value)\r\n {\r\n if(instance === this.d1fPointer._scene)\r\n {\r\n this.d1fPointer.setEnabled(value);\r\n }\r\n else\r\n {\r\n this.d2fPointer.setEnabled(value);\r\n }\r\n }\r\n\r\n setPosition(instance,pos)\r\n {\r\n if(instance === this.d1fPointer._scene)\r\n {\r\n this.d1fPointer.position = pos.clone();\r\n }\r\n else\r\n {\r\n this.d2fPointer.position = pos.clone();\r\n }\r\n }\r\n\r\n getInstancePointer(instance)\r\n {\r\n if(instance === this.d1fPointer._scene)\r\n {\r\n return this.d1fPointer;\r\n }\r\n else\r\n {\r\n return this.d2fPointer;\r\n }\r\n }\r\n\r\n createEntity()\r\n {\r\n const ent = new OpeningEntity();\r\n ent.drawScene1f = this.drawScene1f\r\n ent.drawScene2f = this.drawScene2f\r\n ent.viewScene = this.viewScene\r\n\r\n const viewIns = this.viewScene.instance;\r\n\r\n const viewMesh = this.createWallMesh(viewIns,'greenBoxMaterial');\r\n const viewBox = this.createWallMesh(viewIns,'blueBoxMaterial');\r\n\r\n const mInfos = this.targetModule.Openings.map(x=>x.info).filter(x=>x.typeName.includes('OpeningNew'));\r\n const lastNum = Math.max(...mInfos.map(x=>x.name.split('OpeningNew')[1]).filter(x=>x).map(x=>Number(x)));\r\n const itemNum = isFinite(lastNum) ? lastNum +1 : 0;\r\n const parentName = this.targetWall.info.ctgrName + '-' + this.targetWall.info.typeName;\r\n const info = {ctgrName:\"Opening\", flipType:null, name:\"OpeningNew\"+itemNum,typeName:\"New\"+itemNum, parentName:parentName};\r\n ent.info = info;\r\n ent.parent = this.targetWall.entity;\r\n ent.moduleEntity = this.targetModule;\r\n\r\n const boxInfo = {ctgrName:\"Box\", flipType:null, name:\"Box\",typeName:\"Box\", parentName:info.name};\r\n viewBox.info = boxInfo;\r\n viewMesh.info = info;\r\n viewMesh.entity = ent;\r\n\r\n const rot = this.targetModule.draw1fRootMesh.rotation.y;\r\n viewMesh.rotation.y -= rot;\r\n viewBox.rotation.y -= rot;\r\n\r\n viewMesh.position.y = 0.393+1.2835+this.targetModule.viewRootMesh.position.y;\r\n viewBox.position.y = 0.393+1.2835+this.targetModule.viewRootMesh.position.y;\r\n\r\n ent.viewMeshes.push(viewMesh)\r\n ent.viewMeshes.push(viewBox)\r\n\r\n // CsgHelper.initialMatrix(viewMesh)\r\n // CsgHelper.initialMatrix(viewBox)\r\n\r\n // CsgHelper.setParentSubtractLocation(viewMesh,this.targetModule.viewRootMesh);\r\n // CsgHelper.setParentSubtractLocation(viewBox,this.targetModule.viewRootMesh);\r\n\r\n const tempPos = viewMesh.getAbsolutePosition();\r\n\r\n viewMesh.parent = this.targetModule.viewRootMesh;\r\n viewBox.parent = this.targetModule.viewRootMesh;\r\n\r\n viewMesh.setAbsolutePosition(tempPos)\r\n viewBox.setAbsolutePosition(tempPos)\r\n\r\n viewMesh.position.y = 3.1/2;\r\n viewBox.position.y = 3.1/2;\r\n\r\n ent.moduleEntity = this.targetModule;\r\n this.targetModule.Entities.push(ent);\r\n this.targetModule.Openings.push(ent);\r\n\r\n \r\n\r\n ent.drawViewMesh();\r\n ent.drawMeshes1f.forEach(x=>{\r\n x.parent = this.targetModule.draw1fRootMesh;\r\n x.setAbsolutePosition(tempPos)\r\n x.position.y = tempPos.y <= 3.2 ? 6.4 : 3.2;\r\n x.rotation.y = viewMesh.rotation.y;\r\n // CsgHelper.initialMatrix(x)\r\n //CsgHelper.setParentSubtractLocation(x,this.targetModule.draw1fRootMesh);\r\n x.entity = ent;\r\n })\r\n ent.drawMeshes2f.forEach(x=>{\r\n x.parent = this.targetModule.draw2fRootMesh;\r\n x.setAbsolutePosition(tempPos)\r\n x.position.y = tempPos.y > 3.2 ? 6.4 : 3.2;\r\n x.rotation.y = viewMesh.rotation.y;\r\n // CsgHelper.initialMatrix(x)\r\n //CsgHelper.setParentSubtractLocation(x,this.targetModule.draw2fRootMesh);\r\n x.entity = ent;\r\n })\r\n\r\n ent.createCrushMesh();\r\n const boxPos = ent.viewMeshes.find(x=>x.info?.ctgrName == 'Box').position.clone();\r\n ent.crushMesh1f.position = boxPos.clone();\r\n ent.crushMesh2f.position = boxPos.clone();\r\n\r\n this.targetModule.setPenetrateMode(this.targetModule.floorPenetrate)\r\n \r\n ent.info.guid = this.viewScene.viewer.$SceneLoader.CreateGuid()\r\n return ent;\r\n }\r\n\r\n createWallMesh(instance,matName)\r\n {\r\n const tempWalls = [this.d1fWall,this.d2fWall,this.viewWall];\r\n const temp = tempWalls.find(x=>x._scene === instance);\r\n const csg = BABYLON.CSG.FromMesh(temp);\r\n const mat = instance.getMaterialByName(matName);\r\n\r\n const newWall = csg.toMesh(null,mat,instance,true);\r\n newWall.isVisible = false;\r\n newWall.setEnabled(true);\r\n\r\n const bbox = newWall.getBoundingInfo().boundingBox;\r\n const size = bbox.extendSize.multiply(new Vector3(2,2,2));\r\n \r\n const rot = this.targetModule.draw1fRootMesh.rotation.y;\r\n\r\n if(size.x < size.z)\r\n {\r\n newWall.rotation.y = Math.PI/2;\r\n CsgHelper.initialMatrix(newWall);\r\n newWall.rotation.y = Math.PI/2;\r\n }\r\n \r\n\r\n return newWall;\r\n }\r\n\r\n updateTempWall(endPoint,length,axis)\r\n {\r\n this.endPoint = endPoint;\r\n this.length = length;\r\n \r\n const wallThk = this.targetWall.entity.info.typeName.includes('Exterior') ? 0.14 : 0.09;\r\n const d1Scene = this.d1fPointer._scene;\r\n const d2Scene = this.d2fPointer._scene;\r\n const center = this.startPoint.add(endPoint).divide(new Vector3(2,2,2))\r\n \r\n this.d1fWall?.dispose();\r\n this.d2fWall?.dispose();\r\n this.viewWall?.dispose();\r\n\r\n const axisXValue = axis === 'x' ? 1 : 0;\r\n const axisZValue = axis === 'z' ? 1 : 0;\r\n const width = (length) * axisXValue + wallThk * axisZValue;\r\n const depth = (length) * axisZValue + wallThk * axisXValue;\r\n \r\n const newD1fWall = this.createBox(width,depth,d1Scene,center);\r\n const newD2fWall = this.createBox(width,depth,d2Scene,center);\r\n const newViewfWall = this.createBox(width,depth,this.viewScene.instance,center);\r\n \r\n this.d1fWall = newD1fWall;\r\n this.d2fWall = newD2fWall;\r\n this.viewWall = newViewfWall;\r\n\r\n this.d1fWall.setEnabled(true);\r\n this.d2fWall.setEnabled(true);\r\n this.viewWall.setEnabled(false);\r\n this.viewWall.isVisible = false;\r\n }\r\n\r\n createBox(width,depth,instance,pos)\r\n {\r\n let height = 2.707;\r\n if(instance === this.viewScene.instance)\r\n {\r\n height = 2.567;\r\n }\r\n const box = BABYLON.MeshBuilder.CreateBox(null,{width : width, height : height, depth : depth},instance);\r\n box.material = instance.getMaterialByName('greenBoxMaterial');\r\n box.position = pos.clone();\r\n return box;\r\n }\r\n\r\n dispose()\r\n {\r\n this.d1fWall?.dispose();\r\n this.d2fWall?.dispose();\r\n this.viewWall?.dispose();\r\n this.d1fPointer?.dispose();\r\n this.d2fPointer?.dispose();\r\n\r\n this.drawScene1f.isAddWallMode = false;\r\n this.drawScene2f.isAddWallMode = false;\r\n\r\n const d1Ins = this.drawScene1f.instance;\r\n const d2Ins = this.drawScene2f.instance;\r\n\r\n d1Ins.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n\r\n d2Ins.getMeshesById('wallPoint').forEach(w=>{\r\n w.dispose();\r\n })\r\n }\r\n}","import DoorEntity from \"../Entities/DoorEntity\"\r\nimport UnitEntity from \"../Entities/UnitEntity\"\r\nimport ModuleEntity from \"../Entities/ModuleEntity\"\r\nimport WallEntity from \"../Entities/WallEntity\"\r\nimport WindowEntity from \"../Entities/WindowEntity\"\r\nimport OpeningEntity from \"../Entities/OpeningEntity\"\r\nimport FloorEntity from \"../Entities/FloorEntity\"\r\nimport VoidEntity from \"../Entities/VoidEntity\"\r\nimport CornerEntity from \"../Entities/CornerEntity\"\r\nimport StairsEntity from \"../Entities/StairsEntity\"\r\nimport TempWallEntity from \"../Entities/TempWallEntity\"\r\nimport TempOpningEntity from \"../Entities/TempOpningEntity\"\r\nimport * as BABYLON from \"@babylonjs/core/Legacy/legacy\";\r\nimport {SceneLoader} from \"@babylonjs/core\"\r\nimport { Vector3 } from \"@babylonjs/core\";\r\nimport '@babylonjs/loaders'\r\nimport * as Material from '@babylonjs/materials'\r\nimport CsgHelper from '../Helper/CsgHelper'\r\n\r\nexport default class EntityLoader{\r\n constructor(sceneLoader)\r\n {\r\n this.modules = [];\r\n this.roofs = [];\r\n this.loader = sceneLoader;\r\n }\r\n\r\n async LoadModule(moduleName,path,h,v,drawScene1f,drawScene2f,viewScene,guid)\r\n {\r\n const container = await BABYLON.SceneLoader.LoadAssetContainerAsync(path, `${moduleName}.obj`);\r\n const meshes = container.meshes;\r\n const moduleBox = BABYLON.MeshBuilder.CreateBox(null, {size : 1},viewScene.instance);\r\n const viewer = viewScene.viewer;\r\n moduleBox.isVisible = false;\r\n moduleBox.setEnabled(false);\r\n\r\n for(let i = 0; idInfo.name.replace('-','').includes(x.name));\r\n \r\n const doorEnt = await this.LoadDoor(doorData)\r\n doorEnt.info = dInfo;\r\n doorEnt.parent = d.parent;\r\n doorEnt.moduleEntity = moduleEnt;\r\n moduleEnt.Doors.push(doorEnt)\r\n moduleEnt.Entities.push(doorEnt)\r\n\r\n for(let i in doorEnt.viewMeshes)\r\n {\r\n doorEnt.viewMeshes[i].position = d.viewMeshes[i].position.clone();\r\n doorEnt.viewMeshes[i].parent = d.viewMeshes[i].parent;\r\n doorEnt.viewMeshes[i].setEnabled(true);\r\n\r\n if(doorEnt.parent.wallType === 'Vertical')\r\n {\r\n doorEnt.viewMeshes[i].rotation.y = Math.PI/2;\r\n }\r\n }\r\n doorEnt.setModuleParent();\r\n doorEnt.setViewFlipType();\r\n doorEnt.setDrawFlipType();\r\n doorEnt.viewMeshToDrawMeshTrasfrom();\r\n doorEnt.createCrushMesh();\r\n d.dispose();\r\n }\r\n\r\n for(let w of moduleEnt.Windows)\r\n {\r\n const wInfo = w.info;\r\n const winData = viewer.windows.find(x=>wInfo.name.replace('-','').includes(x.name));\r\n \r\n const winEnt = await this.LoadWindow(winData)\r\n winEnt.info = wInfo;\r\n winEnt.parent = w.parent;\r\n winEnt.moduleEntity = moduleEnt;\r\n moduleEnt.Windows.push(winEnt)\r\n moduleEnt.Entities.push(winEnt)\r\n\r\n for(let i in winEnt.viewMeshes)\r\n {\r\n winEnt.viewMeshes[i].position = w.viewMeshes[i].position.clone();\r\n winEnt.viewMeshes[i].parent =w.viewMeshes[i].parent;\r\n winEnt.viewMeshes[i].setEnabled(true);\r\n\r\n if(winEnt.parent.wallType === 'Vertical')\r\n {\r\n winEnt.viewMeshes[i].rotation.y = Math.PI/2;\r\n }\r\n }\r\n winEnt.setModuleParent();\r\n winEnt.setViewFlipType();\r\n winEnt.setDrawFlipType();\r\n winEnt.viewMeshToDrawMeshTrasfrom();\r\n winEnt.createCrushMesh();\r\n w.dispose();\r\n }\r\n\r\n for(let o of moduleEnt.Openings)\r\n {\r\n if(o.parent.getWorldWallType().type === 'Vertical')\r\n {\r\n o.viewMeshes.forEach(x=>{\r\n const p = x.parent;\r\n const pos = x.position.clone();\r\n\r\n x.parent = null;\r\n x.position = Vector3.Zero();\r\n x.rotation.y = Math.PI/2\r\n CsgHelper.initialMatrix(x);\r\n x.parent = p;\r\n x.position = pos;\r\n x.rotation.y = Math.PI/2\r\n })\r\n }\r\n o.drawViewMesh();\r\n o.drawMeshes1f.forEach(x=>{\r\n x.parent = moduleEnt.draw1fRootMesh;\r\n })\r\n o.drawMeshes2f.forEach(x=>{\r\n x.parent = moduleEnt.draw2fRootMesh;\r\n })\r\n o.createCrushMesh();\r\n }\r\n\r\n moduleEnt.Stairs.forEach(s=>{\r\n s.createCrushMesh();\r\n });\r\n\r\n moduleEnt.Voids.forEach(s=>{\r\n s.createCrushMesh();\r\n });\r\n\r\n moduleEnt.moduleBoxs.forEach(moduleBox => {\r\n moduleBox.dispose();\r\n });\r\n moduleEnt.moduleBoxs = [];\r\n\r\n moduleEnt.makeBox(drawScene1f.instance,'1F');\r\n moduleEnt.makeBox(drawScene2f.instance,'2F');\r\n\r\n drawScene1f.createEntity = moduleEnt;\r\n drawScene2f.createEntity = moduleEnt;\r\n \r\n this.modules.push(moduleEnt);\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n }\r\n }\r\n\r\n findMeshParent(meshes)\r\n {\r\n meshes.forEach(mesh=>{\r\n const info = mesh.info;\r\n if(info.parentName.includes('Floor'))\r\n {\r\n const parent = meshes.find(x=>x.info.name === info.parentName);\r\n mesh.parent = parent;\r\n mesh.position.x -= parent.position.x;\r\n mesh.position.y -= parent.position.y;\r\n mesh.position.z -= parent.position.z;\r\n }\r\n });\r\n }\r\n\r\n findEntityParent(moduleEnt)\r\n {\r\n moduleEnt.Entities.forEach(ent=>{\r\n const parent = moduleEnt.Entities.find(x=>x.info.name === ent.info.parentName);\r\n if(parent)\r\n {\r\n ent.parent = parent;\r\n }\r\n });\r\n }\r\n\r\n inputBox(meshes,moduleEnt)\r\n {\r\n const boxs = meshes.filter(x=>x.info.ctgrName === 'Box');\r\n boxs.forEach(box =>{\r\n try\r\n {\r\n const targetEnt = moduleEnt.Entities.find(x=>x.info.name === box.info.parentName);\r\n box.info.cutEnt = targetEnt;\r\n targetEnt.viewMeshes.push(box);\r\n box.isVisible = false;\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n }\r\n })\r\n }\r\n\r\n createEntity(meshes,viewScene,drawScene1f,drawScene2f,moduleName,guid)\r\n {\r\n const moduleEnt = new ModuleEntity();\r\n moduleEnt.info.name = moduleName;\r\n moduleEnt.info.ctgrName = \"Module\";\r\n moduleEnt.guid = guid;\r\n\r\n let ent = null;\r\n meshes.forEach(mesh=>{\r\n const info = mesh.info;\r\n if(info.ctgrName === 'mm')\r\n {\r\n mesh.entity = ent;\r\n ent.viewMeshes.push(mesh);\r\n }\r\n else\r\n {\r\n if(info.ctgrName === 'Wall')\r\n {\r\n ent = new WallEntity();\r\n moduleEnt.Walls.push(ent);\r\n ent.info = info;\r\n ent.viewMeshes.push(mesh);\r\n ent.viewScene = viewScene;\r\n ent.drawScene1f = drawScene1f;\r\n ent.drawScene2f = drawScene2f;\r\n ent.moduleEntity = moduleEnt;\r\n mesh.entity = ent;\r\n mesh.material = viewScene.instance.getMaterialByName('WallMat');\r\n ent.setWallType();\r\n moduleEnt.Entities.push(ent);\r\n return;\r\n }\r\n else if(info.ctgrName === 'Window')\r\n {\r\n ent = new WindowEntity();\r\n moduleEnt.Windows.push(ent);\r\n }\r\n else if(info.ctgrName === 'Door')\r\n {\r\n ent = new DoorEntity();\r\n moduleEnt.Doors.push(ent);\r\n }\r\n else if(info.ctgrName === 'Corner')\r\n {\r\n ent = new CornerEntity();\r\n mesh.material = viewScene.instance.getMaterialByName('WallMat');\r\n moduleEnt.Corners.push(ent);\r\n }\r\n else if(info.ctgrName === 'Floor')\r\n {\r\n ent = new FloorEntity();\r\n mesh.material = viewScene.instance.getMaterialByName('WallMat');\r\n moduleEnt.Floors.push(ent);\r\n }\r\n else if(info.ctgrName === 'Void')\r\n {\r\n ent = new VoidEntity();\r\n moduleEnt.Voids.push(ent);\r\n mesh.isVisible = false;\r\n }\r\n else if(info.ctgrName === 'Opening')\r\n {\r\n ent = new OpeningEntity();\r\n moduleEnt.Openings.push(ent);\r\n }\r\n else if(info.ctgrName === 'Stair')\r\n {\r\n ent = new StairsEntity();\r\n moduleEnt.Stairs.push(ent);\r\n }\r\n else if(info.ctgrName === 'Box')\r\n {\r\n return;\r\n }\r\n mesh.entity = ent;\r\n ent.info = info;\r\n ent.viewMeshes.push(mesh);\r\n ent.viewScene = viewScene;\r\n ent.drawScene1f = drawScene1f;\r\n ent.drawScene2f = drawScene2f;\r\n ent.moduleEntity = moduleEnt;\r\n moduleEnt.Entities.push(ent);\r\n }\r\n });\r\n\r\n return moduleEnt;\r\n }\r\n\r\n parsingInfo(id)\r\n {\r\n const ids = id.split('_');\r\n let name = `${ids[1]}-${ids[2]}`;\r\n let ctgrName = ids[1].replace(/\\d+/g, '');\r\n let typeName = ids[2];\r\n let flipType = ids[3];\r\n let parentName = `${ids[3]}-${ids[4]}`;\r\n\r\n const regex = /([V|v]\\d[H|h]\\d[R|r])/;\r\n if(regex.test(flipType))\r\n {\r\n name = `${ids[1]}-${ids[2]}${ids[3]}`\r\n parentName = `${ids[4]}-${ids[5]}`;\r\n }\r\n else\r\n {\r\n flipType = null;\r\n }\r\n\r\n if(ctgrName === 'Box' || ctgrName === 'box')\r\n {\r\n name = ids[1];\r\n typeName = ctgrName;\r\n if(ids[2] === 'Opening' || ids[2] === 'Stair' || ids[2] === 'Void')\r\n {\r\n parentName = `${ids[2]}-${ids[3]}`;\r\n }\r\n else\r\n {\r\n parentName = `${ids[2]}-${ids[3]}${ids[4]}`;\r\n }\r\n }\r\n\r\n const retObj = {name : name, ctgrName:ctgrName, typeName:typeName,flipType:flipType,parentName,parentName};\r\n return retObj;\r\n }\r\n\r\n async LoadWindow(data)\r\n {\r\n const name = data.name;\r\n const container = await BABYLON.SceneLoader.LoadAssetContainerAsync(`./models/windows/${name}/obj/`, `${name}.obj`);\r\n const meshes = container.meshes;\r\n const ent = new WindowEntity();\r\n const viewScene = this.loader.viewScene;\r\n const drawScene1f = this.loader.drawScene1f;\r\n const drawScene2f = this.loader.drawScene2f;\r\n\r\n for(let i = 0; im.info.ctgrName === 'Window').info;\r\n ent.viewScene = viewScene;\r\n ent.drawScene1f = drawScene1f;\r\n ent.drawScene2f = drawScene2f;\r\n\r\n ent.drawViewMesh();\r\n ent.createRootMesh();\r\n\r\n ent.viewMeshes.forEach(m=>{\r\n m.setEnabled(false);\r\n });\r\n\r\n return ent;\r\n }\r\n\r\n async LoadDoor(data)\r\n {\r\n const name = data.name;\r\n const container = await BABYLON.SceneLoader.LoadAssetContainerAsync(`./models/doors/${name}/obj/`, `${name}.obj`);\r\n const meshes = container.meshes;\r\n const ent = new DoorEntity();\r\n const viewScene = this.loader.viewScene;\r\n const drawScene1f = this.loader.drawScene1f;\r\n const drawScene2f = this.loader.drawScene2f;\r\n\r\n for(let i = 0; im.info.ctgrName === 'Door').info;\r\n ent.viewScene = viewScene;\r\n ent.drawScene1f = drawScene1f;\r\n ent.drawScene2f = drawScene2f;\r\n\r\n await ent.drawViewMesh();\r\n ent.createRootMesh();\r\n\r\n ent.viewMeshes.forEach(m=>{\r\n m.setEnabled(false);\r\n });\r\n\r\n return ent;\r\n }\r\n\r\n async LoadUnit(name,path,drawScene1f,drawScene2f,viewScene,guid)\r\n {\r\n const container = await BABYLON.SceneLoader.LoadAssetContainerAsync(path, `${name}.obj`);\r\n const meshes = container.meshes;\r\n const ent = new UnitEntity();\r\n const unitBox = BABYLON.MeshBuilder.CreateBox(null, {size : 1},viewScene.instance);\r\n unitBox.isVisible = false;\r\n unitBox.info = {ctgrName : 'Unit',name:name,guid : guid};\r\n unitBox.entity = ent;\r\n ent.viewRootMesh = unitBox;\r\n unitBox.setEnabled(false);\r\n\r\n for(let i = 0; i{\r\n const mArea = m.getArea(false);\r\n areaMm += Number(mArea.areaMm);\r\n area += Number(mArea.area);\r\n })\r\n console.log(localStorage.getItem('loadIdx'))\r\n this.saveJson = JSON.stringify(saveModules) \r\n\r\n //AES128로 암호화\r\n \r\n await BABYLON.Tools.CreateScreenshot(this.viewScene.engine,this.viewScene.instance.getCameraByName(\"Camera\"), {precision: 1.0},\r\n async (img)=>{\r\n console.log(\"이름\", name);\r\n // const saveData = `{\r\n // \"key\":\"INSERT\",\r\n // \"user_idx\":\"${idx}\",\r\n // \"idx\":\"${localStorage.getItem('loadIdx')??''}\",\r\n // \"file_data\":'${this.saveJson}',\r\n // \"file_name\":\"${name}\",\r\n // \"type\":\"${name?.includes('Proto')?name : ''}\",\r\n // \"create_date\":\"\",\r\n // \"update_date\":\"\",\r\n // \"thumb_img\":\"${img}\",\r\n // \"AREA\": ${areaMm},\r\n // \"FLOOR\": ${floor}\r\n // }`\r\n var Enfile_data = this.aesEncrypt128(this.saveJson);\r\n var Enfile_name = this.aesEncrypt128(name);\r\n var Enthumb_img = this.aesEncrypt128(img);\r\n\r\n const saveData = `{\r\n \"key\":\"INSERT\",\r\n \"user_idx\":\"${idx}\",\r\n \"idx\":\"${localStorage.getItem('loadIdx')??''}\",\r\n \"file_data\":\"${Enfile_data}\",\r\n \"file_name\":\"${Enfile_name}\",\r\n \"type\":\"${name?.includes('Proto')?name : ''}\",\r\n \"create_date\":\"\",\r\n \"update_date\":\"\",\r\n \"thumb_img\":\"${Enthumb_img}\",\r\n \"AREA\": ${areaMm},\r\n \"FLOOR\": ${floor}\r\n }`\r\n \r\n var saveResult = saveData.replaceAll(\"0x\",\"bimpeersyyy\").replaceAll(\"0X\",\"bimpeersYYY\").replaceAll(\"xor\",\"bimpeersxxx\").replaceAll(\"XOR\",\"bimpeersXXX\").replaceAll(\"+\",\"bimpeersplus\")\r\n\r\n const res = await axios.post('/server/save_file',saveResult,{\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Access-Control-Allow-origin' : '*',\r\n 'Access-Control-Allow-Methods' : 'GET, POST, OPTIONS, PUT, PATCH, DELETE',\r\n 'Access-Control-Allow-Credentials' : 'true'\r\n }\r\n })\r\n ground.isVisible = true;\r\n this.viewScene.floorText.isVisible = true;\r\n this.viewScene.guidText.isVisible = true;\r\n console.log(res)\r\n });\r\n }\r\n\r\n makeHistory(command)\r\n {\r\n this.history = this.history.slice(0,this.historyIndex+1)\r\n this.history.push(command);\r\n\r\n this.historyIndexTemp = this.historyIndex;\r\n this.historyIndex = this.history.length - 1;\r\n }\r\n\r\n async load(fileContent)\r\n {\r\n this.history = [];\r\n this.historyIndex = -1;\r\n this.loadedModules = 0;\r\n \r\n this.EntityLoader.modules.forEach(o=>{\r\n o.dispose()\r\n })\r\n const saveJson = JSON.parse(fileContent);\r\n\r\n const sLength = saveJson.length;\r\n for(let mData of saveJson)\r\n {\r\n this.makeLoadModule(mData)\r\n }\r\n \r\n const checkInterval = setInterval(()=>{\r\n if(sLength === this.loadedModules)\r\n {\r\n this.drawScene1f.updateWall();\r\n this.drawScene1f.viewer.isLoaded = true;\r\n this.loadedModules = -100;\r\n clearInterval(checkInterval)\r\n }\r\n },100);\r\n }\r\n\r\n updateSceneRoof()\r\n {\r\n this.drawScene1f.updateEntireRoof();\r\n }\r\n\r\n drawScenesInit()\r\n {\r\n this.drawScenes.push(this.drawScene1f);\r\n this.drawScenes.push(this.drawScene2f);\r\n }\r\n\r\n LoadScene(is2d,canvas,viewer,floor = null)\r\n {\r\n let scene = null;\r\n if(is2d)\r\n {\r\n scene = new Scene2d(canvas,viewer,floor);\r\n this.materialLoader.LoadCommonMaterials(scene.instance);\r\n this.materialLoader.LoadDrawMaterials(scene.instance);\r\n scene.createGround();\r\n }\r\n else\r\n {\r\n scene = new Scene3d(canvas,viewer);\r\n this.materialLoader.LoadCommonMaterials(scene.instance);\r\n this.materialLoader.LoadViewMaterials(scene.instance);\r\n scene.createGround();\r\n }\r\n\r\n return scene;\r\n }\r\n\r\n async makeLoadModule(mData)\r\n {\r\n // console.log('makeLoadModule')\r\n const viewer = this.viewScene.viewer;\r\n const viewIns = this.viewScene.instance;\r\n await this.CreateModule(mData.name,`./models/modules/${mData.name}/obj/`);\r\n const floor = mData.info.floor;\r\n const is1F = floor === '1F';\r\n const cModule = this.drawScene1f.createEntity;\r\n \r\n cModule.info = {...mData.info}\r\n cModule.isGhost = false;\r\n cModule.locatedScene = is1F ? this.drawScene1f : this.drawScene2f;\r\n \r\n //외벽 코너 바닥 제외 모두 삭제\r\n for(let ent of cModule.Entities)\r\n {\r\n if(ent.info?.ctgrName === 'Floor' || ent.info?.ctgrName === 'Corner' || ent.info?.ctgrName === 'Stair' || ent.info?.ctgrName === 'Void')\r\n continue;\r\n if(ent.info?.ctgrName === 'Wall' && (ent.info?.typeName.includes(\"Exterior\") || ent.info?.typeName.includes(\"Rail\")))\r\n continue;\r\n ent.dispose();\r\n }\r\n\r\n //단일 바닥 모듈만 크기 조절\r\n if(cModule.Floors.length === 1)\r\n {\r\n const curSize = cModule.getSize().clone();\r\n const loadSize = new Vector3(mData.size._x,mData.size._y,mData.size._z);\r\n \r\n var subVector = loadSize.subtract(curSize);\r\n var checkDirs = [BABYLON.Axis.X, BABYLON.Axis.Z];\r\n var resultDatas = [];\r\n checkDirs.forEach(o =>\r\n {\r\n var dirVector = subVector.multiply(o);\r\n if(dirVector.length() > 0)\r\n {\r\n var dir = BABYLON.Vector3.Normalize(dirVector);\r\n var size = dirVector.length() / 2;\r\n \r\n resultDatas.push({dir:dir, size: size});\r\n }\r\n });\r\n\r\n cModule.setSize(resultDatas);\r\n\r\n const rails = cModule.Walls.filter(x=>x.info?.typeName.includes(\"Rail\"))\r\n if(rails.length > 0)\r\n {\r\n let k = 0;\r\n for(const i in rails)\r\n {\r\n if(mData.wallRailNmData[i-k] != rails[i].info.name)\r\n {\r\n rails[i].dispose()\r\n k++;\r\n continue;\r\n }\r\n for(const j in rails[i].viewMeshes)\r\n {\r\n rails[i].viewMeshes[j].position.x = mData.wallRailPos[i-k][j]._x;\r\n rails[i].viewMeshes[j].position.z = mData.wallRailPos[i-k][j]._z;\r\n }\r\n\r\n for(const j in rails[i].drawMeshes1f)\r\n {\r\n rails[i].drawMeshes1f[j].position.x = mData.wallRailDrawPos[i-k][j]._x;\r\n rails[i].drawMeshes1f[j].position.z = mData.wallRailDrawPos[i-k][j]._z;\r\n rails[i].drawMeshes2f[j].position.x = mData.wallRailDrawPos[i-k][j]._x;\r\n rails[i].drawMeshes2f[j].position.z = mData.wallRailDrawPos[i-k][j]._z;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const corners = cModule.Corners;\r\n for(const i in corners)\r\n {\r\n const c = corners[i];\r\n c.drawMeshes1f[0].position.x = c.viewMeshes[0].position.x;\r\n c.drawMeshes1f[0].position.z = c.viewMeshes[0].position.z;\r\n\r\n c.drawMeshes2f[0].position.x = c.viewMeshes[0].position.x;\r\n c.drawMeshes2f[0].position.z = c.viewMeshes[0].position.z;\r\n }\r\n \r\n const x = mData.position._x;\r\n const z = mData.position._z;\r\n const otherScene = is1F ? this.drawScene2f : this.drawScene1f;\r\n cModule.setPosition(otherScene.instance,new Vector3(Number(x), is1F ? 3.1 : 0, Number(z)));\r\n cModule.setPosition(cModule.locatedScene.instance,new Vector3(Number(x), is1F ? 0 : 3.1, Number(z)));\r\n \r\n cModule.setViewModel(true);\r\n cModule.isGhost = false;\r\n cModule.floorPenetrate = otherScene.floor;\r\n\r\n const rotation = Number(mData.rotation);\r\n if(rotation != 0)\r\n {\r\n cModule.viewRootMesh.rotation = new Vector3(0,rotation,0);\r\n cModule.draw1fRootMesh.rotation = new Vector3(0,rotation,0);\r\n cModule.draw2fRootMesh.rotation = new Vector3(0,rotation,0);\r\n }\r\n\r\n const flipX = mData.scaling._x;\r\n const flipZ = mData.scaling._z;\r\n \r\n if(flipX === -1)\r\n {\r\n cModule.viewRootMesh.scaling.x *= -1;\r\n cModule.draw1fRootMesh.scaling.x *= -1;\r\n cModule.draw2fRootMesh.scaling.x *= -1;\r\n }\r\n if(flipZ === 1)\r\n {\r\n cModule.viewRootMesh.scaling.z *= -1;\r\n cModule.draw1fRootMesh.scaling.z *= -1;\r\n cModule.draw2fRootMesh.scaling.z *= -1;\r\n }\r\n\r\n cModule.moduleBoxs.forEach(mbox=>mbox.isVisible = false);\r\n\r\n this.drawScene1f.createEntity = null;\r\n this.drawScene2f.createEntity = null;\r\n\r\n SaveHelper.loadWall(cModule,mData.walls);\r\n\r\n const wallex = cModule.Walls.filter(x=>x.info.name.includes('Exterior'));\r\n for(let i in wallex)\r\n {\r\n let exex = mData.wallexPos[i]._x;\r\n let exez = mData.wallexPos[i]._z;\r\n let exScaling = new Vector3(mData.wallexScailing[i]._x,mData.wallexScailing[i]._y,mData.wallexScailing[i]._z);\r\n \r\n wallex[i].viewMeshes[0].position.x = exex;\r\n wallex[i].viewMeshes[0].position.z = exez;\r\n wallex[i].viewMeshes[0].scaling = exScaling.clone();\r\n wallex[i].viewMeshes[0].entity = wallex[i];\r\n\r\n wallex[i].drawMeshes1f[0].position.x = exex;\r\n wallex[i].drawMeshes1f[0].position.z = exez;\r\n wallex[i].drawMeshes1f[0].scaling = exScaling.clone();\r\n wallex[i].drawMeshes1f[0].entity = wallex[i];\r\n\r\n wallex[i].drawMeshes2f[0].position.x = exex;\r\n wallex[i].drawMeshes2f[0].position.z = exez;\r\n wallex[i].drawMeshes2f[0].scaling = exScaling.clone();\r\n wallex[i].drawMeshes2f[0].entity = wallex[i];\r\n }\r\n \r\n for(let w of mData.windows)\r\n {\r\n const wInfo = w.info;\r\n const winData = viewer.windows.find(x=>wInfo.name.replace('-','').includes(x.name));\r\n const ent = await this.EntityLoader.LoadWindow(winData);\r\n ent.info = {...w.info}\r\n ent.parent = cModule.Walls.find(x=>x.info.name === ent.info.parentName)\r\n ent.moduleEntity = cModule;\r\n\r\n for(let i in ent.drawMeshes1f)\r\n {\r\n const mesh = ent.drawMeshes1f[i];\r\n const pData = w.simbol1fPositions[i];\r\n const rData = w.simbol1fRotations[i];\r\n const sData = w.simbol1fScalings[i];\r\n mesh.position = new Vector3(pData._x,pData._y,pData._z)\r\n mesh.rotation = new Vector3(rData._x,rData._y,rData._z)\r\n mesh.scaling = new Vector3(sData._x,sData._y,sData._z)\r\n mesh.parent = cModule.draw1fRootMesh;\r\n mesh.setEnabled(true)\r\n }\r\n for(let i in ent.drawMeshes2f)\r\n {\r\n const mesh = ent.drawMeshes2f[i];\r\n const pData = w.simbol2fPositions[i];\r\n const rData = w.simbol2fRotations[i];\r\n const sData = w.simbol2fScalings[i];\r\n mesh.position = new Vector3(pData._x,pData._y,pData._z)\r\n mesh.rotation = new Vector3(rData._x,rData._y,rData._z)\r\n mesh.scaling = new Vector3(sData._x,sData._y,sData._z)\r\n mesh.parent = cModule.draw2fRootMesh;\r\n mesh.setEnabled(true)\r\n }\r\n for(let i in ent.viewMeshes)\r\n {\r\n const mesh = ent.viewMeshes[i];\r\n const pData = w.positions[i];\r\n const rData = w.rotations[i];\r\n const sData = w.scalings[i];\r\n mesh.position = new Vector3(pData._x,pData._y,pData._z)\r\n mesh.rotation = new Vector3(rData._x,rData._y,rData._z)\r\n mesh.scaling = new Vector3(sData._x,sData._y,sData._z)\r\n mesh.parent = cModule.viewRootMesh;\r\n mesh.setEnabled(true)\r\n }\r\n cModule.Entities.push(ent)\r\n cModule.Windows.push(ent)\r\n ent.createCrushMesh();\r\n }\r\n\r\n for(let o of mData.openings)\r\n {\r\n const viewMesh = BABYLON.MeshBuilder.CreateBox(null,{width : o.width, height : o.height, depth : o.depth},viewIns);\r\n const boxMesh = BABYLON.MeshBuilder.CreateBox(null,{width : o.width, height : o.height, depth : o.depth},viewIns);\r\n \r\n viewMesh.position = new Vector3(o.position._x,o.position._y,o.position._z)\r\n boxMesh.position = new Vector3(o.position._x,o.position._y,o.position._z)\r\n boxMesh.material = viewIns.getMaterialByName('redBoxMaterial');\r\n\r\n viewMesh.isVisible = false;\r\n boxMesh.isVisible = false;\r\n\r\n viewMesh.rotation = new Vector3(o.rotation._x,o.rotation._y,o.rotation._z)\r\n boxMesh.rotation = new Vector3(o.rotation._x,o.rotation._y,o.rotation._z)\r\n\r\n viewMesh.info = {...o.info};\r\n boxMesh.info = {name : 'Box',ctgrName : 'Box',typeName : 'Box',parentName : viewMesh.info.ctgrName + viewMesh.info.typeName};\r\n\r\n viewMesh.parent = cModule.viewRootMesh;\r\n boxMesh.parent = cModule.viewRootMesh;\r\n\r\n const ent = new OpeningEntity();\r\n ent.drawScene1f = this.drawScene1f;\r\n ent.drawScene2f = this.drawScene2f;\r\n ent.viewScene = this.viewScene;\r\n ent.info = {...o.info};\r\n ent.viewMeshes.push(viewMesh);\r\n ent.viewMeshes.push(boxMesh);\r\n ent.parent = cModule.Walls.find(x=>x.info.name === ent.info.parentName)\r\n viewMesh.entity = ent;\r\n boxMesh.entity = ent;\r\n ent.drawViewMesh();\r\n \r\n ent.drawMeshes1f.forEach(x=>{\r\n x.position = viewMesh.position.clone();\r\n x.parent = cModule.draw1fRootMesh\r\n x.entity = ent;\r\n x.position.y = 3.2;\r\n })\r\n ent.drawMeshes2f.forEach(x=>{\r\n x.position = viewMesh.position.clone();\r\n x.parent = cModule.draw2fRootMesh\r\n x.entity = ent;\r\n x.position.y = 3.2;\r\n })\r\n ent.moduleEntity = cModule;\r\n ent.createCrushMesh();\r\n ent.crushMesh.position = ent.viewMeshes[0].position.clone();\r\n ent.crushMesh1f.position = ent.drawMeshes1f[0].position.clone();\r\n ent.crushMesh2f.position = ent.drawMeshes2f[0].position.clone();\r\n\r\n cModule.Entities.push(ent)\r\n cModule.Openings.push(ent)\r\n }\r\n\r\n for(let o of mData.doors)\r\n {\r\n const dInfo = o.info;\r\n const doorData = viewer.doors.find(x=>dInfo.name.replace('-','').includes(x.name));\r\n const doorEnt = await this.EntityLoader.LoadDoor(doorData)\r\n doorEnt.info = {...o.info};\r\n doorEnt.parent = cModule.Walls.find(x=>x.info.name === doorEnt.info.parentName);\r\n doorEnt.moduleEntity = cModule;\r\n cModule.Doors.push(doorEnt)\r\n cModule.Entities.push(doorEnt)\r\n\r\n for(let i in doorEnt.drawMeshes1f)\r\n {\r\n const mesh = doorEnt.drawMeshes1f[i];\r\n const pData = o.simbol1fPositions[i];\r\n const rData = o.simbol1fRotations[i];\r\n const sData = o.simbol1Scaling[i];\r\n \r\n mesh.parent = cModule.draw1fRootMesh;\r\n mesh.position = new Vector3(pData._x,pData._y,pData._z)\r\n mesh.rotation = new Vector3(rData._x,rData._y,rData._z)\r\n mesh.scaling = new Vector3(sData._x,sData._y,sData._z)\r\n }\r\n\r\n for(let i in doorEnt.drawMeshes2f)\r\n {\r\n const mesh = doorEnt.drawMeshes2f[i];\r\n const pData = o.simbol2fPositions[i];\r\n const rData = o.simbol2fRotations[i];\r\n const sData = o.simbol2Scaling[i];\r\n\r\n mesh.parent = cModule.draw2fRootMesh;\r\n mesh.position = new Vector3(pData._x,pData._y,pData._z)\r\n mesh.rotation = new Vector3(rData._x,rData._y,rData._z)\r\n mesh.scaling = new Vector3(sData._x,sData._y,sData._z)\r\n }\r\n\r\n for(let i in doorEnt.viewMeshes)\r\n {\r\n const mesh = doorEnt.viewMeshes[i];\r\n const pData = o.positions[i];\r\n const rData = o.rotations[i];\r\n const sData = o.scaling[i];\r\n \r\n mesh.position = new Vector3(pData._x,pData._y,pData._z)\r\n mesh.rotation = new Vector3(rData._x,rData._y,rData._z)\r\n mesh.scaling = new Vector3(sData._x,sData._y,sData._z)\r\n mesh.parent = cModule.viewRootMesh;\r\n mesh.setEnabled(true)\r\n }\r\n\r\n doorEnt.createCrushMesh(cModule);\r\n }\r\n\r\n cModule.setPenetrateMode(otherScene.floor)\r\n\r\n for(let o of cModule.Voids)\r\n {\r\n const y1 = o.drawMeshes1f[1].position.y;\r\n const y2 = o.drawMeshes2f[1].position.y;\r\n o.drawMeshes1f[1].position = o.drawMeshes1f[0].position.clone();\r\n o.drawMeshes2f[1].position = o.drawMeshes2f[0].position.clone();\r\n\r\n o.drawMeshes1f[1].position.y =y1;\r\n o.drawMeshes2f[1].position.y =y2;\r\n }\r\n\r\n for(let o of mData.units)\r\n {\r\n await this.CreateUnit(o.info.name,`./models/units/${o.info.name}/obj/`); \r\n this.drawScene1f.createEntity.moduleEntity = cModule;\r\n this.drawScene1f.createEntity.viewRootMesh.position = new Vector3(o.position._x,o.position._y,o.position._z);\r\n this.drawScene1f.createEntity.viewRootMesh.rotation = new Vector3(o.rotation._x,o.rotation._y,o.rotation._z);\r\n this.drawScene1f.createEntity.viewRootMesh.scaling = new Vector3(o.scaling._x,o.scaling._y,o.scaling._z);\r\n this.drawScene1f.createEntity.viewRootMesh.parent = cModule.viewRootMesh;\r\n\r\n this.drawScene1f.createEntity.draw1fRootMesh.position = new Vector3(o.position._x,0,o.position._z);\r\n this.drawScene1f.createEntity.draw1fRootMesh.rotation = new Vector3(o.rotation._x,o.rotation._y,o.rotation._z);\r\n this.drawScene1f.createEntity.draw1fRootMesh.scaling = new Vector3(o.scaling._x,o.scaling._y,o.scaling._z);\r\n this.drawScene1f.createEntity.draw1fRootMesh.parent = cModule.draw1fRootMesh;\r\n\r\n this.drawScene1f.createEntity.draw2fRootMesh.position = new Vector3(o.position._x,0,o.position._z);\r\n this.drawScene1f.createEntity.draw2fRootMesh.rotation = new Vector3(o.rotation._x,o.rotation._y,o.rotation._z);\r\n this.drawScene1f.createEntity.draw2fRootMesh.scaling = new Vector3(o.scaling._x,o.scaling._y,o.scaling._z);\r\n this.drawScene1f.createEntity.draw2fRootMesh.parent = cModule.draw2fRootMesh;\r\n \r\n this.drawScene1f.createEntity.wallEnt.forEach(x=>{\r\n x.moduleEntity = cModule;\r\n });\r\n this.drawScene1f.createEntity.doorEnt.forEach(x=>{\r\n x.moduleEntity = cModule;\r\n x.setCrushModuleEntity();\r\n });\r\n this.drawScene1f.createEntity.stairEnt.forEach(x=>{\r\n x.moduleEntity = cModule;\r\n x.setCrushModuleEntity();\r\n });\r\n\r\n this.drawScene1f.createEntity.enableDoor = o.enableDoor;\r\n this.drawScene1f.createEntity.updateDoorEnable();\r\n\r\n this.drawScene1f.createEntity.createCrushMesh();\r\n this.drawScene1f.createEntity.floorPenetrate = o.floorPenetrate;\r\n this.drawScene2f.createEntity.setPenetrateMode(o.floorPenetrate)\r\n \r\n this.drawScene1f.createEntity.setEnable(this.drawScene1f.instance,true)\r\n this.drawScene2f.createEntity.setEnable(this.drawScene2f.instance,true)\r\n this.drawScene2f.createEntity.setEnable(null,true)\r\n\r\n this.drawScene1f.createEntity.info = o.info;\r\n\r\n cModule.Entities.push(this.drawScene1f.createEntity);\r\n cModule.Units.push(this.drawScene1f.createEntity);\r\n\r\n this.drawScene1f.createEntity = null;\r\n this.drawScene2f.createEntity = null;\r\n }\r\n\r\n if(mData?.guid != \"\" && mData?.guid != undefined && mData?.guid != null)\r\n {\r\n cModule.guid = mData.guid;\r\n }\r\n\r\n cModule.moduleBoxs.forEach(moduleBox => {\r\n moduleBox.dispose();\r\n });\r\n cModule.moduleBoxs = [];\r\n \r\n cModule.makeBox(cModule.drawScene1f.instance, '1F')\r\n cModule.makeBox(cModule.drawScene2f.instance, '2F')\r\n\r\n cModule.setEnable(cModule.locatedScene.instance,true);\r\n this.loadedModules++;\r\n return cModule;\r\n }\r\n\r\n CreateGuid()\r\n {\r\n const trNum = ()=>{\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return trNum() + trNum() + '-' + trNum() + '-' + trNum() + '-' +\r\n trNum() + '-' + trNum() + trNum() + trNum();\r\n }\r\n\r\n async CreateModule(moduleName,path,h,v)\r\n {\r\n this.CancelModule();\r\n \r\n const guid = this.CreateGuid();\r\n await this.EntityLoader.LoadModule(moduleName,path,h,v,this.drawScene1f,this.drawScene2f,this.viewScene,guid);\r\n }\r\n\r\n async CreateWindow(data)\r\n {\r\n this.CancelModule();\r\n const windowEnt = await this.EntityLoader.LoadWindow(data);\r\n windowEnt.info.guid = this.CreateGuid();\r\n this.drawScene1f.createEntity = windowEnt;\r\n this.drawScene2f.createEntity = windowEnt;\r\n }\r\n\r\n async CreateDoor(data)\r\n {\r\n this.CancelModule();\r\n const doorEnt = await this.EntityLoader.LoadDoor(data);\r\n doorEnt.info.guid = this.CreateGuid();\r\n this.drawScene1f.createEntity = doorEnt;\r\n this.drawScene2f.createEntity = doorEnt;\r\n }\r\n\r\n async CreateUnit(name,path)\r\n {\r\n this.CancelModule();\r\n const guid = this.CreateGuid();\r\n await this.EntityLoader.LoadUnit(name,path,this.drawScene1f,this.drawScene2f,this.viewScene,guid);\r\n }\r\n\r\n async CreateOpening()\r\n {\r\n this.CancelModule();\r\n this.drawScenes.forEach(d=>{\r\n d.isAddWallMode = true;\r\n });\r\n\r\n await this.EntityLoader.createOpening(this.drawScene1f,this.drawScene2f,this.viewScene);\r\n }\r\n\r\n CancelModule()\r\n {\r\n if(this.drawScene1f.createEntity?.info.ctgrName == \"Module\")\r\n {\r\n const index = this.EntityLoader.modules.indexOf(this.drawScene1f.createEntity);\r\n this.EntityLoader.modules.splice(index,1);\r\n this.drawScene1f.createEntity.dispose();\r\n this.drawScene1f.createEntity = null;\r\n this.drawScene2f.createEntity = null;\r\n this.drawScene1f.viewer.loadModuleName = '';\r\n }\r\n else if(this.drawScene1f.createEntity)\r\n {\r\n this.drawScene1f.createEntity.dispose();\r\n this.drawScene1f.createEntity = null;\r\n this.drawScene2f.createEntity = null;\r\n this.drawScene1f.viewer.loadModuleName = '';\r\n }\r\n }\r\n\r\n SelectedDelete()\r\n {\r\n var scene = this.drawScene1f;\r\n var selectedEntity = this.drawScene1f.selectedEntity;\r\n if(!selectedEntity)\r\n {\r\n scene = this.drawScene2f;\r\n selectedEntity = this.drawScene2f.selectedEntity;\r\n }\r\n\r\n if(!selectedEntity)\r\n return;\r\n\r\n if(selectedEntity.getButtonData().some(o => o.type == \"delete\"))\r\n {\r\n selectedEntity.delete(scene, selectedEntity);\r\n selectedEntity.disposeContextPanel();\r\n }\r\n }\r\n\r\n async CreateWall()\r\n {\r\n this.CancelModule();\r\n this.drawScenes.forEach(d=>{\r\n d.isAddWallMode = true;\r\n });\r\n\r\n await this.EntityLoader.createWall(this.drawScene1f,this.drawScene2f,this.viewScene);\r\n }\r\n\r\n Resize()\r\n {\r\n this.drawScenes.forEach(drawScene=>{\r\n const cam = drawScene.instance.getCameraByName(\"Camera\");\r\n drawScene.cameraRender(cam);\r\n });\r\n this.viewScene.engine.resize();\r\n this.viewScene.setFloorText();\r\n }\r\n\r\n flipH()\r\n {\r\n const d1wordRoot = BABYLON.MeshBuilder.CreateBox(null, {size : 1},this.drawScene1f.instance);\r\n d1wordRoot.isVisible = false;\r\n d1wordRoot.position = Vector3.Zero();\r\n\r\n const d2wordRoot = BABYLON.MeshBuilder.CreateBox(null, {size : 1},this.drawScene1f.instance);\r\n d2wordRoot.isVisible = false;\r\n d2wordRoot.position = Vector3.Zero();\r\n\r\n const vWordRoot = BABYLON.MeshBuilder.CreateBox(null, {size : 1},this.drawScene1f.instance);\r\n vWordRoot.isVisible = false;\r\n vWordRoot.position = Vector3.Zero();\r\n\r\n for(let m of this.EntityLoader.modules)\r\n {\r\n m.draw1fRootMesh.parent = d1wordRoot;\r\n m.draw2fRootMesh.parent = d2wordRoot;\r\n m.viewRootMesh.parent = vWordRoot;\r\n }\r\n\r\n d1wordRoot.scaling.x *= -1;\r\n d2wordRoot.scaling.x *= -1;\r\n vWordRoot.scaling.x *= -1;\r\n\r\n for(let m of this.EntityLoader.modules)\r\n {\r\n CsgHelper.initialMatrix(m.draw1fRootMesh)\r\n CsgHelper.initialMatrix(m.draw2fRootMesh)\r\n CsgHelper.initialMatrix(m.viewRootMesh)\r\n }\r\n\r\n d1wordRoot.dispose();\r\n d2wordRoot.dispose();\r\n vWordRoot.dispose();\r\n }\r\n\r\n async undo()\r\n {\r\n if(this.historyIndex < 0)\r\n return;\r\n const hIndex = this.historyIndex--;\r\n \r\n const currentHistory = this.history[hIndex];\r\n await currentHistory.undo();\r\n }\r\n\r\n async redo()\r\n {\r\n if(this.historyIndex+1 >= this.history.length)\r\n return;\r\n\r\n const hIndex = ++this.historyIndex;\r\n \r\n const currentHistory = this.history[hIndex];\r\n await currentHistory.redo();\r\n }\r\n\r\n LoadType(targetTpye,path)\r\n {\r\n this.drawScene1f.isLoaded = false;\r\n this.drawScene2f.isLoaded = false;\r\n this.loadedModules = 0;\r\n\r\n targetTpye.typeModules.forEach(async m=>{\r\n await this.CreateModule(m.name,path+`${m.name}/obj/`);\r\n if(m.floor === '1F')\r\n {\r\n this.drawScene1f.createEntity.info.floor = m.floor;\r\n this.drawScene1f.createEntity.isGhost = false;\r\n this.drawScene1f.createEntity.setEnable(this.drawScene1f.instance,true);\r\n\r\n this.drawScene1f.createEntity.locatedScene = this.drawScene1f;\r\n\r\n this.drawScene1f.createEntity.setPosition(this.drawScene2f.instance,new Vector3(Number(m.positionX),0,Number(m.positionY)));\r\n this.drawScene1f.createEntity.setPosition(this.drawScene1f.instance,new Vector3(Number(m.positionX),3.1,Number(m.positionY)));\r\n this.drawScene1f.createEntity.draw2fRootMesh.position.y = 0;\r\n\r\n this.drawScene1f.createEntity.setViewModel(true);\r\n \r\n this.drawScene2f.createEntity.isGhost = false;\r\n this.drawScene2f.createEntity.setPenetrateMode(this.drawScene2f.floor)\r\n this.drawScene2f.createEntity.floorPenetrate = this.drawScene2f.floor;\r\n\r\n if(m.rotation != 0)\r\n {\r\n const rotation = Number(m.rotation) * Math.PI / 180;\r\n this.drawScene1f.createEntity.viewRootMesh.rotation = new Vector3(0,rotation,0);\r\n this.drawScene1f.createEntity.draw1fRootMesh.rotation = new Vector3(0,rotation,0);\r\n this.drawScene1f.createEntity.draw2fRootMesh.rotation = new Vector3(0,rotation,0);\r\n }\r\n\r\n if(m.flipX)\r\n {\r\n this.drawScene1f.createEntity.viewRootMesh.scaling.x *= -1;\r\n this.drawScene1f.createEntity.draw1fRootMesh.scaling.x *= -1;\r\n this.drawScene1f.createEntity.draw2fRootMesh.scaling.x *= -1;\r\n }\r\n if(m.flipY)\r\n {\r\n this.drawScene1f.createEntity.viewRootMesh.scaling.z *= -1;\r\n this.drawScene1f.createEntity.draw1fRootMesh.scaling.z *= -1;\r\n this.drawScene1f.createEntity.draw2fRootMesh.scaling.z *= -1;\r\n }\r\n\r\n this.drawScene1f.createEntity.moduleBoxs.forEach(mbox=>mbox.isVisible = false);\r\n this.drawScene1f.createEntity = null;\r\n this.drawScene2f.createEntity = null;\r\n }\r\n else\r\n {\r\n this.drawScene2f.createEntity.info.floor = m.floor;\r\n this.drawScene2f.createEntity.isGhost = false;\r\n this.drawScene2f.createEntity.setEnable(this.drawScene2f.instance,true);\r\n \r\n this.drawScene2f.createEntity.locatedScene = this.drawScene2f;\r\n this.drawScene2f.createEntity.setPosition(this.drawScene1f.instance,new Vector3(Number(m.positionX),0,Number(m.positionY)));\r\n this.drawScene2f.createEntity.setPosition(this.drawScene2f.instance,new Vector3(Number(m.positionX),3.1,Number(m.positionY)));\r\n this.drawScene1f.createEntity.draw1fRootMesh.position.y = 0;\r\n\r\n this.drawScene2f.createEntity.setViewModel(true);\r\n \r\n this.drawScene1f.createEntity.isGhost = false;\r\n this.drawScene1f.createEntity.setPenetrateMode(this.drawScene1f.floor)\r\n this.drawScene1f.createEntity.floorPenetrate = this.drawScene1f.floor;\r\n\r\n if(m.rotation != 0)\r\n {\r\n const rotation = Number(m.rotation) * Math.PI / 180;\r\n this.drawScene1f.createEntity.viewRootMesh.rotation = new Vector3(0,rotation,0);\r\n this.drawScene1f.createEntity.draw1fRootMesh.rotation = new Vector3(0,rotation,0);\r\n this.drawScene1f.createEntity.draw2fRootMesh.rotation = new Vector3(0,rotation,0);\r\n }\r\n\r\n if(m.flipX)\r\n {\r\n this.drawScene1f.createEntity.viewRootMesh.scaling.x *= -1;\r\n this.drawScene1f.createEntity.draw1fRootMesh.scaling.x *= -1;\r\n this.drawScene1f.createEntity.draw2fRootMesh.scaling.x *= -1;\r\n }\r\n if(m.flipY)\r\n {\r\n this.drawScene1f.createEntity.viewRootMesh.scaling.z *= -1;\r\n this.drawScene1f.createEntity.draw1fRootMesh.scaling.z *= -1;\r\n this.drawScene1f.createEntity.draw2fRootMesh.scaling.z *= -1;\r\n }\r\n\r\n this.drawScene1f.createEntity.moduleBoxs.forEach(mbox=>mbox.isVisible = false);\r\n this.drawScene1f.createEntity = null;\r\n this.drawScene2f.createEntity = null;\r\n }\r\n this.loadedModules++;\r\n });\r\n\r\n this.drawScene1f.isLoaded = true;\r\n this.drawScene2f.isLoaded = true;\r\n\r\n const checkInterval = setInterval(()=>{\r\n if(targetTpye.typeModules.length === this.loadedModules)\r\n {\r\n this.drawScene1f.updateWall();\r\n this.loadedModules = -100;\r\n clearInterval(checkInterval)\r\n }\r\n },100);\r\n }\r\n}","//import { createApp } from 'vue'\r\n//import App from './App.vue'\r\n\r\ncreateApp(App).mount('#app')\r\n\r\nimport { createApp } from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './assets/store' //Vuex 스토어 import\r\nimport SceneLoader from \"./models/Loaders/SceneLoader\"\r\n//import LogInModal from \"./components/Login/LogInModal\"\r\n\r\nconst app = createApp(App)\r\napp.use(store)\r\napp.use(router).mount('#app')\r\n//app.component('LogInModal', LogInModal);\r\n\r\napp.config.globalProperties.$CLIENTURL = \"http://test-service.bimpeers.com:5010/\"\r\n\r\napp.config.globalProperties.$MODULE_PATH = \"./models/modules/\";\r\napp.config.globalProperties.$WINDOW_PATH = \"./models/windows/\";\r\napp.config.globalProperties.$DOOR_PATH = \"./models/doors/\";\r\napp.config.globalProperties.$UNIT_PATH = \"./models/units/\";\r\napp.config.globalProperties.$SceneLoader = new SceneLoader();\r\n\r\n//자이 서버 용\r\napp.config.globalProperties.$TARGETURL = \"https://self-design.xigeist.com/\"; //2차\r\napp.config.globalProperties.$TARGETURL2 = \"https://selfdesign.xigeist.com/\"; //1차\r\napp.config.globalProperties.$AUTHURL = \"https://xiapi.xigeist.com/\" //본인인증서버\r\napp.config.globalProperties.$DOMAIN = \".xigeist.com\" //쿠키 유지 최상위 도메인\r\n\r\n//app.config.globalProperties.$SERVERURL = \"https://xiapi.xigeist.com/\" //서버\r\n//app.config.globalProperties.$SERVERURL = \"http://localhost/\" //서버\r\n //app.config.globalProperties.$SERVERURL = \"http://10.130.2.41/\" //서버\r\n\r\n\r\n//빔피어스 서버 테스트 용\r\n //app.config.globalProperties.$TARGETURL = \"http://xiviewer.bimpeers.com/\"; //2차\r\n //app.config.globalProperties.$TARGETURL2 = \"http://xiclient.bimpeers.com/\"; //1차\r\n// app.config.globalProperties.$SERVERURL = \"http://xiapiserver.bimpeers.com:4486/\" //서버\r\n //app.config.globalProperties.$AUTHURL = \"http://test-service.bimpeers.com:4487/\" //본인인증서버\r\n //app.config.globalProperties.$DOMAIN = \".bimpeers.com\" //쿠키 유지 최상위 도메인\r\n\r\n\r\n//로컬 테스트 용\r\n//app.config.globalProperties.$TARGETURL = \"http://localhost:8080/\";\r\n//app.config.globalProperties.$TARGETURL2 = \"http://localhost:8081/\";\r\n// //app.config.globalProperties.$SERVERURL = \"http://xiapiserver.bimpeers.com:4486/\" //서버\r\n //app.config.globalProperties.$SERVERURL = \"http://localhost:12008/\"\r\n// app.config.globalProperties.$AUTHURL = \"http://localhost:55239/\"\r\n\r\n//app.config.globalProperties.$TARGETURL = \"http://test-service.bimpeers.com:5006/\";\r\n//app.config.globalProperties.$TARGETURL = \"http://1.214.117.116:5006/\";\r\n//app.config.globalProperties.$TARGETURL2 = \"http://1.214.117.116/\";\r\n//app.config.globalProperties.$TARGETURL2 = \"http://test-service.bimpeers.com/\";\r\n\r\n\r\n\r\n//window.Kakao.init(\"50721e897a5869296e050475ab6dd3ea\");\r\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// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkxg_viewer\"] = self[\"webpackChunkxg_viewer\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(87681); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["id","_createElementBlock","_createElementVNode","_hoisted_1","_createVNode","_component_router_link","to","_component_router_view","script","__exports__","render","ref","src","_imports_0","alt","loop","_hoisted_3","class","type","name","value","for","_imports_1","_hoisted_10","_hoisted_12","_imports_2","_hoisted_16","_hoisted_18","_imports_3","_hoisted_22","_imports_4","_hoisted_25","title","_imports_5","_imports_6","_hoisted_30","_imports_7","_hoisted_33","_imports_8","_hoisted_36","_imports_9","_hoisted_39","_imports_10","_imports_11","_hoisted_45","_imports_12","_imports_13","_imports_14","style","_imports_16","_imports_17","_hoisted_127","_hoisted_128","$data","isLoaded","_hoisted_2","_hoisted_4","_hoisted_5","_component_Header","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_11","$SceneLoader","historyIndex","this","history","length","onClick","_cache","args","$options","undoClickEvent","_hoisted_14","_hoisted_15","_hoisted_17","redoClickEvent","_hoisted_20","is2DActive","$event","checked","disabled","is3DActive","_ctx","toggleOpacity2D","toggleOpacity3D","toggleClick","_hoisted_27","_hoisted_28","isSnappedFloor","toggleOpacityFloor","isSnappedWall","toggleOpacityModule","isSnappedDoor","toggleOpacityDoor","isSnappedWindow","toggleOpacityWindow","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","clickSaveButton","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_Fragment","_renderList","fileList","file","i","key","_hoisted_51","_hoisted_54","_hoisted_55","THUMB_IMG","_hoisted_57","_toDisplayString","FILE_NAME","CREATE_DATE","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","fileUpdate","IDX","_hoisted_62","close","_hoisted_63","_hoisted_64","_hoisted_65","fileSave","IsSave","SettingValue","_hoisted_66","_hoisted_67","_hoisted_68","_hoisted_69","_hoisted_70","_hoisted_71","_hoisted_72","isShowArea","updateUi","_hoisted_73","_hoisted_74","isShowScailBar","_hoisted_75","_hoisted_76","_hoisted_77","tabValue","_hoisted_78","_hoisted_79","_hoisted_80","_hoisted_81","_hoisted_82","_hoisted_83","_hoisted_84","_hoisted_85","selectedCategory","_hoisted_86","onMouseover","showLDK","onMouseleave","hide","showRoom","hideR","showCore","hideC","showEtc","hideE","showBasic","hideB","_hoisted_87","paginatedModules","m","index","clicked","_withModifiers","handleClick","C_Module_info","_hoisted_90","code","imgUrl","handleImageClick","_hoisted_92","selectModuleInfo","_hoisted_94","_hoisted_95","displayName","_hoisted_96","areaMm","area","bedRoomCnt","bathRoomCnt","horizontal","vertical","_hoisted_97","_hoisted_98","_imports_15","PreviousPage","currentPage","filteredModules","itemsPerPage","_hoisted_100","totalPages","_hoisted_101","NextPage","_hoisted_103","_hoisted_104","selectedCategoryUnit","_hoisted_105","showEntry","hideEnt","showBath","hideBath","showStairs","hideStairs","_hoisted_106","paginatedUnits","C_Unit_info","_hoisted_109","_hoisted_111","selectUnitInfo","_hoisted_113","_hoisted_114","_hoisted_115","_hoisted_116","UnitPreviousPage","UnitCurrentPage","filteredUnits","UnitPerPage","_hoisted_118","totalUnitPages","_hoisted_119","UnitNextPage","_hoisted_121","_hoisted_122","_hoisted_123","createWall","clickWInfo","_hoisted_124","createOpening","_hoisted_125","_hoisted_126","_hoisted_129","_hoisted_130","_hoisted_131","_hoisted_132","_hoisted_133","_hoisted_134","_imports_18","clickCreateWallGuide","_hoisted_135","_hoisted_136","selectedCategoryDoor","_hoisted_137","showInterior","hideInterior","showExterior","hideExterior","showDEtc","hideDEtc","_hoisted_138","paginatedDoors","C_Door_info","_hoisted_142","_hoisted_143","_hoisted_144","selectDoorInfo","_hoisted_146","_hoisted_147","_hoisted_148","_hoisted_149","_hoisted_150","doorsGoToPreviousPage","doorsCurrentPage","filteredDoors","_hoisted_152","totalDoorPages","_hoisted_153","doorsGoToNextPage","_hoisted_155","_hoisted_156","selectedCategoryWindow","_hoisted_157","showWinLdk","hideWinLdk","showWinRoom","hideWinRoom","showWinBath","hideWinBath","_hoisted_158","paginatedWindows","C_Window_info","_normalizeStyle","backgroundColor","_hoisted_162","_hoisted_163","_hoisted_164","selectWindowInfo","_hoisted_166","_hoisted_167","_hoisted_168","_hoisted_169","_hoisted_170","windowsGoToPreviousPage","windowsCurrentPage","filteredWindows","_hoisted_172","totalWindowPages","_hoisted_173","windowsGoToNextPage","_hoisted_175","_hoisted_176","_hoisted_177","isShowFlatRoof","toggleFlatRoof","_hoisted_179","_hoisted_188","_hoisted_189","_hoisted_190","_component_BabylonViewer","command","if3dRoof","showRInfo","_hoisted_191","closeCreateWallGuide","_hoisted_192","_hoisted_193","imageTitles","curPos","imageCaptions","_hoisted_194","prevSlide","_hoisted_195","currentImageUrl","imageUrls","_hoisted_197","imageUrl","_normalizeClass","activeImg","changeSlide","nextSlide","showCreateWallGuide","gridTemplateRows","vBarPosition","gridTemplateColumns","hBarPosition","onMousemove","sizeCtrlMouseMoveEvent","left","display","horizontalCtrlDisplay","onMousedown","horizontalCtrlMouseDownEvent","onMouseup","horizontalCtrlMouseUpEvent","top","verticalCtrlDisplay","verticalCtrlMouseDownEvent","verticalCtrlMouseUpEvent","view2dChange","c2dDisplay","gridColumn","c2dGridColumn","c2dGridColumnSpan","if2d1f","if2d2f","gridRow","c2d2fGridRow","c2d2fGridRowSpan","c2d2fDisplay","c2d1fGridRow","c2d1fGridRowSpan","c2d1fDisplay","c3dDisplay","c3dGridColumn","c3dGridColumnSpan","if3d1f","if3d2f","isShowRoof","toggleRoof","props","data","isHbarClick","hBarOrgPosition","isVbarClick","vBarOrgPosition","btnActColor","btnNonColor","c2dGridColumnOrigin","c2d2fGridColumnSpan","c3dGridColumnOrigin","change2dPos","loadModuleName","doors","windows","watch","oder","moduleName","drawScene1f","removeAllSelectedMesh","CreateModule","Path","CreateWindow","CreateDoor","CreateUnit","CreateOpening","viewUpdate","$nextTick","Resize","viewChange","CreateWall","newValue","oldValue","targets","EntityLoader","modules","filter","x","info","floor","forEach","target","viewRootMesh","setEnabled","setTimeout","updateWall","mounted","initailScenes","methods","updateSceneRoof","drawScene2f","viewScene","location","reload","LoadScene","$refs","scene2d1f","scene2d2f","scene3d","drawScenesInit","window","addEventListener","setDoorData","setWindowData","e","preventDefault","rect","babylonViewer","getBoundingClientRect","width","height","clientX","clientY","pos2d","pos3d","tempRow","isVisible","closeEditPop","onSubmit","placeholder","email","password","onChange","keepLogin","postData","href","$TARGETURL","_hoisted_13","kakaoJoin","client_id","users","image","selectedFile","naverLogin2","account_email","birth","phone","gender","nickname","updatedate","EncodeData","isSocial","address","path","interest","hashPw","isKeepLoin","naver_id_login","state","getUniqState","setButton","setDomain","setState","setPopup","init_naver_id_login","accessToken","oauthParams","access_token","console","log","$","document","on","btnNaverLogin","getElementById","firstChild","click","aaa","Kakao","Auth","login","scope","success","getKakaoAccount","async","API","request","url","kakao_account","res","profile","birth_temp","birthday","token","getAccessToken","today","Date","birthdate","birthyear","slice","phonenumber","phone_number","split","replace","updatetime","getFullYear","getMonth","getDay","receive_s","receive_e","expireDate","setTime","getTime","Cookies","set","expires","domain","$DOMAIN","axios","post","JSON","stringify","headers","then","_data","alert","kakaoLogout","$emit","fail","error","response","cookie","get","catch","CryptoJS","toString","hideMyPage","clickMyPage","showMyPage","userName","navigateToPage","isCurrentPage","logout","IsModalPopup","IsLogin","_createBlock","_component_LogInModal","onChildEvent","getToken","onChildEvent2","LoginChild2","components","LogInModal","userEmail","userIdx","undefined","remove","status","userCode","saveFileToLocal","home","localStorage","setItem","FILE_DATA","event","myInfoWrapper","contains","relatedTarget","page","$route","updateCheckedState","mypage","myhome","computed","currentRoute","emits","OpeningwallGif","createWall2","createWall3","createWall4","intervalId","clickedModuleIndex","clickedUnitIndex","clickedWindowIndex","clickedDoorIndex","show2DOption","show3DOption","showSaveOption","selectedToolIndex","SecondD","require","ThirdD","typeName","panel1Width","panel1Height","showSD","showTD","isToggled","isToggledDoor","isToggledWall","isToggleActive","toggleImg","doorsPerPage","windowsPerPage","if3dRoofValue","firstView","units","activeTab","isEmptySlot","getFileList","moduleInit","windowInit","doorInit","setEvent","unitInit","body","deactivateClickedImage","typeInit","d1Select","selectedEntity","ctgrName","d2Select","toLowerCase","BabylonViewer","Header","params","savedLastClickedId","getItem","clickedModule","find","module","o","dispose","$router","push","updateCreateWallTitle","setUI","setFloorText","changeCategory","category","changeCategoryUnit","idx","save","clickLoad","fileInput","files","reader","FileReader","onload","result","fileContent","load","endInter","setInterval","loadedModules","clearInterval","readAsText","clickedElement","closest","selectEntity","createEntity","size","getSize","Math","round","toLocaleString","z","toFixed","uSize","typeExp","typeRes","exec","handleModuleClick","lastClickedRadioId","handleUnitClick","handleDoorClick","handleWindowClick","resetClickStates","clickedUnit","clickedWindows","clickedDoor","unit","door","onkeydown","CancelModule","SelectedDelete","includes","s1","s2","s","dir","vec","Vector3","Zero","ms","moduleEntity","scaling","clone","multiply","draw1fRootMesh","position","add","draw2fRootMesh","onkeyup","selectedModule","selectedUnit","selectedWindow","selectedDoors","selectedDoor","selectedInfo","createModule","createUnit","createWindow","createDoor","$MODULE_PATH","hval","vval","$UNIT_PATH","selectTool","toggleSwitch","toggleSwitchDoor","toggleSwitchWall","undo","redo","loadModuls","Number","vh","thickness","loadTypes","json","err","types","targetTpye","LoadType","localData","ceil","UnitTotalPages","doorsTotalPages","windowsTotalPages","goToPage","hideModuleInfo","fetch","clickSaveOption","closeSaveOption","createWallTitle","currentImageCaption","lowercaseCategory","filteredModulesCount","filteredUnitsCount","filteredDoorsCount","filteredWindowsCount","startIndex","endIndex","map","_hoisted_29","_hoisted_32","_hoisted_37","_hoisted_40","isEmpty","stringNullOrEmpty","isNameEditing","saveName","showClone","TYPE","AREA","FLOOR","_hoisted_19","toggleActive","_hoisted_26","startEditingName","cloneHome","showDeleteModal","isModalVisible","isSlotAlertVisible","_component_SideMenu","_hoisted_46","_hoisted_52","readonly","userPhone1","userPhone2","userPhone3","userDate","_hoisted_53","_hoisted_56","password_old","password_new","password_new_verify","updatePassword","showAdminLogIn","_component_AdminLogin","LoginChild","i_opjob","keyword","startDate","endDate","$TARGETURL2","isAdminUser","handleAdminClick","handleLoginChild","Boolean","isAdminLoggedIn","AdminLogin","totalMembers","currentPageOnPopupOpen","newVal","oldVal","myPageRadio","myHomeRadio","manageRadio","ISADMIN","Object","SideMenu","homes","activeItem","curType","newName","userPhone","fileCount","getUserInfo","handleClickOutside","aesEncrypt128","text","Utf8","parse","iv","encrypted","encrypt","mode","CBC","padding","Pkcs7","cancelDelete","Enfile_data","Enfile_name","Enthumb_img","saveData","saveResult","replaceAll","action","removeUnusedNewProjectSlots","maxSlots","dataSlotCount","isNewProjectSlot","emptyNewProjectSlotCount","indexToRemove","findIndex","splice","updateInfo","_result","hash_old","hash_new","beforeUnmount","removeEventListener","availableSlotCount","onClickBackBtn","_component_bottomInfo","_component_Footer","selectedLink","showFooterSelect","clickFooterSelect","naverLogin","callbackUrl","naverLogout","bottomInfo","Footer","rowspan","colspan","_hoisted_112","method","allAgree","toggleAllCheckbox","checkAllAgree","termsData","term","agree","date","subtitle","content","subtitle2","innerHTML","content2","subtitle3","content3","subtitle4","content4","title2","subtitle5","content5","subtitle6","content6","subtitle7","content7","subtitle8","content8","subtitle9","content9","subtitle10","content10","subtitle11","content11","title3","subtitle12","content12","subtitle13","content13","title4","subtitle14","content14","subtitle15","content15","subtitle16","content16","subtitle17","content17","subtitle18","_hoisted_35","content18","subtitle19","content19","subtitle20","content20","subtitle21","_hoisted_38","content21","title5","subtitle22","content22","title6","subtitle23","content23","subtitle24","content24","subtitle25","content25","title7","content27","infoData","th1","th2","th3","th4","td1_1","td1_2","td1_3","td5_4","td2_1","td2_2","td3_1","td3_2","td3_3","td4_1","td4_2","td5_3","td5_1","td5_2","td6_1","td6_2","td7_1","td7_2","td7_3","td8_1","td8_2","td8_3","td9_1","td9_2","td9_3","td10_1","td10_2","th5","th6","th7","td5_1_1","td5_1_2","td5_1_3","td6_1_1","td6_1_2","td6_1_3","td7_1_1","td7_1_2","td7_1_3","td8_1_1","td8_1_2","td8_1_3","content4A","td9_1_1","td9_1_2","td9_1_3","td10_1_1","td10_1_2","td10_1_3","td11_1_1","td11_1_2","td12_1_1","td12_1_2","content4B","content4C","title8","title9","title10","content10A","_hoisted_99","th8","th9","th10","td13_1_1","td13_1_2","td13_1_3","td14_1_1","td14_1_2","td14_1_3","content10B","title11","title12","_hoisted_108","_hoisted_110","_hoisted_117","_hoisted_120","fnPopup","_component_scrollToTop","txt","title13","showScrollBtn","moveToTop","handleScroll","destroyed","scrollTo","behavior","scrollY","dataFromSession","scrollToTop","otherCheckboxes","querySelectorAll","checkbox","mustTermsEssencial","mustTermsPersonalInfo","receiveSns","receiveEmail","str","open","email_first","onBlur","validateEmailFirst","updateEmailDomain","emailDomain","email_last","checkEmail","_hoisted_21","autocomplete","validatePassword","_hoisted_23","_hoisted_24","password_verify","validatePasswordMatch","validateName","genderPick","_hoisted_31","_hoisted_34","validateBirthdate","validatePhoneNumber","zonecode","openPostcode","roadAddress","detailAddress","checkboxes1","rootbyweb","onClickChangeCheckbox","checkboxIcons","unchecked","rootbymedia","checkboxes2","interestArc","interestView","meet","PostMemberInfo","userid","isEmailValid","param2","currentIcons","isChecked","query","validation","daum","Postcode","oncomplete","fronttest","validateUserID","check","test","year","parseInt","substring","month","day","isLeapYear","daysInMonth","isValidDay","clickIDForm","clickPWForm","tabVale","client_secret","age","mobile","refreshToken","userInfo","ttt","get_naver_userprofile","naverSignInCallback","getProfileData","data2","data3","opener","sleep","wakeUpTime","now","router","sendDataToParent","param1","birth_year","birth_month","birth_date","$AUTHURL","childPage","receivedData","handleChildEvent","dataFromChild","joindate","findEmail","chagePassword","tempEmail1","tempEmail2","encodeURIComponent","onAdminLoginRequested","showOption","img","Proto38DImage","copiedTypeName","copyCount","Proto20SImage","Proto42D2Image","handleAdminLogin","getClonedTypeName","nameParts","confirmDelete","homeToDelete","totalSlotCount","originalSlotIndex","newProjectSlot","indexOf","clonedHome","topNewProjectSlot","newIndex","clickOption","h","classList","toggleOption","beforeDestroy","onInput","searchMember","changeStartDate","max","changeEndDate","clickExcelButton","memberTables","pageStartIdx","ITEM_PER_PAGE","item","clickAdmin","isadmin","regdate","visitedate","_component_Pagination","_mergeProps","list","PAGE_PER_SECTION","onChangePage","previousPage","getPaginationArray","leftmostPage","curPage","onChangeCurPage","nextPage","Array","required","totalPage","min","Pagination","setup","onBeforeRouteLeave","from","getManageUserInfo","getDate","tempArr","workbook","ExcelJS","worksheet","addWorksheet","columns","header","addRow","blobType","xlsx","writeBuffer","blob","Blob","padStart","str_date","saveAs","confirm","requireLogin","next","loggedIn","routes","component","myHome","beforeEnter","ModuleMake","Edit","LogIn","joinStep1","joinStep2","joinStep2Simple","joinStep3","findID","findPW","findIDResult","LoginNCallback","JoinStepSub","findEmailResult","changePW2","joinChild","findEmailSub","findChild","changePW1","changeChild","changePWSub","myPage","manageMember","createRouter","createWebHistory","store","createStore","mutations","setSelectedLink","link","SelectedLink","actions","commit","getters","VectorHelper","static","line1","line2","pnt","L2","r","BABYLON","abs","sqrt","lineThickness","point","planeOrigin","normal","zeroPoint","subtract","reflectPoint","Reflect","points","y","m_sf","sumX","sumY","vector1","vector2","tolerance","equalsWithEpsilon","negate","point1","point2","vector","MeshHelper","mesh","isCreatedEdgesRenderer","renderer","edgesRenderer","enableEdgesRendering","edgesWidth","edges","linesPositions","e2","start","end","minZ","reduce","prev","curr","disableEdgesRendering","sortedEdges","checkEdge","pop","nextEdge","nextEdgeIndex","parentMatrix","parent","getWorldMatrix","matrix","Matrix","Scaling","RotationAxis","Axis","Y","rotation","meshPos","TransformCoordinates","vertices","maxX","maxXVertices","maxXminZ","checkVertex","nextIndex","nextVertex","Normalize","reverse","SceneBase","constructor","canvas","viewer","canvasElement","colliders","engine","stencil","instance","createScene","scene","clearColor","collisionsEnabled","camera","setPosition","setTarget","attachControl","lowerRadiusLimit","upperRadiusLimit","light","intensity","setViewport","viewport","previewHighlightLayer","blurTextureSizeRatio","mainTextureRatio","alphaBlendingMode","ALPHA_SUBTRACT","highlightLayer","runRenderLoop","createGround","subdivisions","ground","CreateGround","material","getMaterialByName","updateFacetData","addExcludedMesh","spotBox","CreateBox","CsgHelper","bakeTransform","pos","bbox","getBoundingInfo","boundingBox","translateMatrix","Translation","center","bakeTransformIntoVertices","extendsTransFrom","setParent","initialMatrix","bakeCurrentTransformIntoVertices","computeWorldMatrix","m1","m2","p1","p2","pRot1","getParentRotation","pRot2","child1","getChildMeshes","child2","c","csg1","FromMesh","csg2","retcsg","toMesh","setParentSubtractLocation","cos","sin","p","getParentSubtractLocation","getParentScale","scale","rot","getMeshSize","boxInfo","extendSize","depth","loadModuleFromData","entity","sceneLoader","guid","newModule","makeLoadModule","isModule","Entities","equlModuleCommands","equlModuleEntityCommands","getLocatedScene","locatedScene","CreateCommand","DelteCommand","MoveCommand","dataA","dataB","RotateCommand","isHistoryWork","rotateccw","rotate","RotateccwCommand","MirrorvCommand","mirrorv","MirrorhCommand","mirrorh","DoorSwapCommand","doorSwap","ContextItemBase","contextPanels","boundingSideMeshes","boundingSideContexts","fontSize","disposeContextPanel","context","createContextPanel","createToolTip","gui","tooltip","GUI","background","Color4","toHexString","color","adaptWidthToChildren","adaptHeightToChildren","zIndex","addControl","textBlock","resizeToFit","paddingTop","paddingLeft","paddingRight","paddingBottom","getAdvancedTexture","sceneInstance","CreateFullscreenUI","getContextDefaultPanel","toolbar","createPanelContainer","getButtonData","createEntityBoundingSidePanel","advancedTexture","dirs","axisAvailableTypes","box","getBoundingBox2d","nearWall","Walls","wall","line","getWorldWallLine","lineDir","floorPoint","calcNearestPointOnLine","floorDir","nearBox","wallPoint","wallLine","getWallLine","lineCenter","internalDir","createSideButton","worldDir","tempMesh","Mesh","panel","spacing","dirDatas","currentAxis","Z","buttonDir","isVertical","X","axisData","k","axis","availableTypes","some","dirData","button","createImageButton","evt","buttonIndex","scaleModule","linkWithMesh","createShadowedText","cornerRadius","shadowColor","shadowBlur","txtName","spContainer","horizontalAlignment","HORIZONTAL_ALIGNMENT_CENTER","verticalAlignment","VERTICAL_ALIGNMENT_BOTTOM","createButtonPanel","buttons","nameText","press","imageSrc","pressFunction","defaultSrc","onPointerEnterObservable","phlLayer","removeAllMeshes","rectTooltip","getControlByName","tbTooltip","getRenderWidth","getRenderHeight","leftInPixels","centerX","topInPixels","centerY","heightInPixels","onPointerOutObservable","onPointerClickObservable","onWheelObservable","handleMouseWheel","createTextButton","paddingHorizontal","selectModule","makeHistory","HistoryCommand","meshes2d","getAll2DRootMeshes","meshes3d","getAll3DRootMeshes","PI","Tools","ToRadians","updateEntireRoof","cut","meshes","copy","delete","getSnapData","boxes","entities","sceneEntity","prevSnapData","mouseX","mouseZ","availableAxis","offset","allResults","prevSnapDirs","f","positions","maximumWorld","mousePos","minimumWorld","targetBox","values","linePos","minimum","maximum","centerWorld","posDist","absDist","minDist","minPos","results","xItems","Enumerable","zItems","count","minGroup","groupBy","orderBy","first","minx","toArray","minz","EntityBase","super","drawMeshes1f","drawMeshes2f","viewMeshes","isGhost","getCurrentScene","scenes","getCurrentMeshes","getDrawMeshes","concat","_scene","getSceneRootMesh","getContextEntity","getSceneMeshes","is2d","snapEntities","prevPos","drawViewMesh","oriCsg","CSG","m1f","m2f","diffuseTexture","matName","mat1f","oriMat","StandardMaterial","oriTex","Texture","specularColor","Color3","specularPower","mat2f","setEnable","newMin","Minimize","newMax","Maximize","reConstruct","BoundingBox","getOriginBoundingBox2d","translateEntity","setAbsolutePosition","absolutePosition","scaleEntity","moveVector","scaleVector","moveValue","scaleValue","divide","tempPos","tempParent","childs","child","removeChild","addChild","SaveHelper","makeSaveData","deleteEntity","deleteChild","isFixed","WallEntity","wallType","startPointMesh","endPointMesh","getWallThickness","getWorldWallType","wallBox","wallMinPoint","wallMaxPoint","createDrawWallMesh","newWallMesh","MeshBuilder","drawScene","selectBox2d","originPos","createViewWallMesh","selectBox3d","setWallType","boundingInfo","getOriginPos","floorPos","buttonItems","panels","pnButtons","posMesh","initMesh","d1fIns","d2fIns","oldWall","bbinfo","originBoundingInfo","newWall","initViewMesh","initDraw1fMesh","initDraw2fMesh","extendSizeWorld","flatMap","moveNearEntity","resultPos","viewMesh","diff","TransformNormal","boxMin","boxMax","resultLine","deletedItems","targetLine","targetDir","isParallel","projectPoint","Distance","intersectsMinMax","minValue","Dot","maxValue","posValue","Doors","Windows","Openings","crushMesh","crushMesh1f","crushMesh2f","wPos","pos1f","pos2f","viewpos","createCenterLine","dashNb","dashRate","dashLine","CreateDashedLines","dashSize","gapSize","Green","showCenterVertex","isShow","startPoint","wallPointMat","diameter","CreateSphere","segments","deleteItems","makeTempMesh","w","wBox","wWidth","wDepth","cBox","cWidth","cHeight","lengh","parentName","temp","getAbsolutePosition","flipFaces","showBoundingBox","moduleEnt","walls","wallDatas","makeWallData","windowDatas","makeWindowData","openings","openingDatas","makeOpeningData","Units","unitDatas","makeUnitData","doorDatas","makeDoorData","mData","wallexPos","wallexScailing","wallRailPos","wallRailDrawPos","wallRailNmData","bb","simbol1fPositions","simbol2fPositions","rotations","simbol1fRotations","simbol2fRotations","scalings","simbol1fScalings","simbol2fScalings","floorPenetrate","enableDoor","simbol1Scaling","simbol2Scaling","wData","ent","d1Ins","d2Ins","viewIns","d1Mesh","d2Mesh","_x","_y","_z","Floors","Scene2d","zoomRate","mousePosition","snapLines","floorText","scaileBar","scaileTests","setHardwareScalingLevel","enableOfflineSupport","doorDir","isAddWallMode","AdvancedDynamicTexture","movingInter","Set2dMode","getLocatedModule","getCameraByName","ORTHOGRAPHIC_CAMERA","lowerAlphaLimit","upperAlphaLimit","lowerBetaLimit","upperBetaLimit","cameraRender","update","setEvents","setScaileBar","TextBlock","mArea","getArea","clientHeight","clientWidth","svg","Image","btoa","t","wRate","wDump","regex","tempWidth","resize","hRate","hDump","orthoTop","orthoBottom","orthoLeft","orthoRight","onPointerObservable","delta","wheelDelta","detail","POINTERWHEEL","onPointerDown","pickResult","onPointerUp","onPointerMove","removeSnapLines","pointerDownPosition","pickedMesh","movingMesh","pointerDownModulePosition","pickMesh","otherScene","drawScenes","moduleMouseUpEvent","windowMouseUpEvnet","doorMouseUpEvent","rootMesh","pick","pointerX","pointerY","otherPos","viewWorldMatrix","d1fWorldMatrix","d2fWorldMatrix","getTranslation","wallEnt","doorEnt","setCrushModuleEntity","stairEnt","createCrushMesh","setPenetrateMode","wallMouseUpEvent","openingMouseUpEvent","historyIndexTemp","updateColumns","selectMesh","pickingInfo","hit","pickedPoint","moduleMouseMoveEvent","windowMouseMoveEvent","doorMouseMoveEvent","snappedPosition","currentEntities","createEntitySnap","wallMouseMoveEvent","openingMouseMoveEvent","movePos","snapMove","myBox","getModuleBox","otherModules","isInter","intersectsMesh","addMesh","crushes","spot","wallEntity","getMeshesById","hasMesh","actionManager","Purple","registerAction","OnPointerOutTrigger","ev","removeMesh","hoverCursor","loader","roofs","clipper","clipperLib","WasmWithAsmJsFallback","roofFloorHeight","roofRailHeight","roofRailWidth","floorEdges","roofEdges","mergeRoofs","dataEdges","getFloorEdges","isHideRoof","located","roofData","roof","sameLocatedRoofs","isUnioned","targetData","unionClip","clipToPaths","clipType","Union","subjectFillType","EvenOdd","clipInputs","subjectInputs","roofIndex","originEdges","floor2fs","floorData","intersectClip","Intersection","diffClip","Difference","checkOffsetClip","offsetToPaths","offsetInputs","joinType","Miter","endType","ClosedPolygon","widthOffset","clipperVertices","railEdges","flat","roofEdge","clockwiseRoofEdges","GetClockwiseVertices","v","ExtrudePolygon","shape","earcut","roofCSG","clockwiseRailEdges","extrudeRoofRailing","roofRailAreaCSG","multimat","subMaterials","floors","stairs","voids","crusheTops","backMeshes","CrushPoints","b","tempMeshes","includedOnlyMeshes","tempMats","getMeshByName","isEnabled","isCrush","cbox","crushPlane","isOtherThrough","updateViewWall","floor1fs","createColumns","offsetY","newSnapData","lines","moduleBox","intersectsPoint","highlightMeshes","removeSelectedMesh","removeExcludedMesh","panningSensibility","pickedMeshs","multiPick","pickEnts","pickCtgrs","wallMesh","targetEnts","targetModule","endPos","worldMatrix","worldPosition","sPos","xWallPos","zWallPos","xDist","zDist","updateTempWall","setStatus","terrace","getInstancePointer","pointer","snapOffset","targetWall","currentOpenings","nearPos","nearDist","wallWorldType","opening","checkValue","dist","moduleWalls","wallStart","wallEnd","calcIsInsideLineSegment","farPos","startPos","lineDistance","snapLine","infoMesh","greenBoxMat","redBoxMat","mbox","moduleBoxs","ModuleEntity","otherRoot","getAllRoots","setViewModel","setAllEnable","mesh1f","mesh2f","wallPos","winEnt","winMeshes","roots","oriPos","drawMeshToViewMeshTrasfrom","doorName","diffuseColor","wallthk","mbbox","msize","doorMeshes","isRot","Scene3d","addLight","setGuidText","textHorizontalAlignment","HORIZONTAL_ALIGNMENT_LEFT","guidText","HORIZONTAL_ALIGNMENT_RIGHT","light1","direction","light2","light3","radius","maxZ","MaterialLoader","LoadCommonMaterials","smallGridMat","smallGridTexture","uScale","vScale","nomalGridMat","nomalGridTexture","bigGridMat","bigGridTexture","greenBoxMaterial","alpha","backFaceCulling","redBoxMaterial","blueBoxMaterial","openningMat","wallTileMat","Material","wallTileTexture","albedoTexture","bumpTexture","metallic","roughness","maxSimultaneousLights","Fragment_Before_Fog","getShaderCode","LoadDrawMaterials","Door2dMat","Door2dTexture","hasAlpha","winSvg","Window2dMat","Window2dTexture","wallRedPointMat","wallOtherPointMat","wallMat","albedoColor","wallAlphaMat","wallBackMat","LoadViewMaterials","twoSidedLighting","doubleSided","paintMat","getEngine","maxHoleCount","shaderCode","version","SpotItem","spotPos","spotDir","guideVisible","setSpotLightProjectionMatrix","projectionTexture","createTexture","getHierarchyBoundingVectors","makeH","makeV","_projectionTextureProjectionLightDirty","_projectionTextureDirty","_projectionTextureProjectionLightMatrix","OrthoOffCenterLH","p3","p4","CreateLines","guideLine","textureSize","dynamicTexture","TEXTURE_NEAREST_SAMPLINGMODE","getContext","fillStyle","fillRect","DockingEntity","isDock","getCrushMeshes","setModule","root","rootEnt","crushMeshSetting","pRot","newBox","allWallMesh","tempCrush","mPos","DoorEntity","isSimbol","d1f","createSimbol","d2f","loadImage","Promise","resolve","reject","onerror","sceneIns","texturePath","$DOOR_PATH","vFlip","flipType","hFlip","doorMat","doorTexture","minFilter","TRILINEAR_SAMPLINGMODE","doorPlane","CreatePlane","createRootMesh","mergeMesh","MergeMeshes","alwaysSelectAsActiveMesh","projectPosition","reflectToPoint","entityCenter","rotatePoint","setDrawFlipType","vm","setViewFlipType","setModuleParent","viewMeshToDrawMeshTrasfrom","drawDoorMeshes","drawBoxMeshes","viewBoxMesh","vbox","vz","drawDoorMesh","dbox","dy","gap","drawBoxMesh","rootScale","FloorEntity","targetMeshes","ch","meshMin","meshMax","newInfo","BoundingInfo","newPos","retPos","updateMaterial","isFinite","mat","madMat","newMat","materialLoader","uniqueId","addMaterial","TopSpotItem","StairsEntity","crushMeshs","crushMesh1fs","crushMesh2fs","edgesColor","currentMeshes","crushMeshTops","csgList","tempScaling","csg","mList","fHeight","sY","UnitEntity","updateDoorEnable","targetEnt","dEnt","createRoot","unitBox1f","unitBox2f","boxs","tempmat","ColumnEntity","initialize","column","viewPos","balconyVecticalSizeArray","defaultVerticalSizeArray","horizontalSizeArray","Corners","Voids","Stairs","Columns","isCombineTrr","ret","trr","setSize","resultDatas","isBalconyModule","absDir","isShirink","selectMany","GetWorldBottomEdges","dirItems","minXPos","minZPos","boundingPositions","distance","dirItem","otherItem","centerPos","otherCenterPos","floorBoxes","minX","checkBox","isIntersected","floorBox","root1f","root2f","d","mM1fs","mM2fs","vMeshes","m1fs","m2fs","vMesh","dash","createDashLine","rootPos","offsetX","offsetZ","makeBox","ctgrNames","entityCategory","Infinity","datas","hideroof","rotateMatrix","originSize","verticalSizeArray","verticalIndex","horizontalIndex","sizeVector","nextSizeOffset","nextSize","sizeOffset","sizeValue","absVector","buttonAbsVector","moduleCenterLineStart","moduleCenterLineEnd","crossVector","Cross","buttonCrossVector","absCrossVector","thicknessSizeVector","collisionCenter","collisionCenterDir","collisionSizeVector","collisionPoint1","collisionPoint2","collisionBox","targetSize","tempSize","unitBox","itemBox","rootMeshes","targetArray","targetIndex","targetEntitiesIndex","WindowEntity","crushCollider","w1f","w2f","windowPlane","drawWindowMeshes","drawWindowMesh","OpeningEntity","o1f","o2f","drawMeshes","opPlane","dashBox","createDashBox","plane","dashedLines","VoidEntity","v1f","v2f","createLine","CornerEntity","getViewPosition","TempWallEntity","d1fWall","d2fWall","d1fPointer","d2fPointer","editPoint","endPoint","sMat1","fMat1","sMat2","fMat2","wallThk","d1Scene","d2Scene","axisXValue","axisZValue","newD1fWall","createBox","newD2fWall","createWallMesh","mInfos","lastNum","itemNum","d1Pos","d2Pos","vPos","CreateGuid","TempOpningEntity","viewWall","viewBox","boxPos","tempWalls","newViewfWall","container","LoadAssetContainerAsync","tempBox","Center","parsingInfo","findMeshParent","inputBox","findEntityParent","moduleDraw","dInfo","doorData","LoadDoor","wInfo","winData","LoadWindow","cutEnt","ids","retObj","matFullName","loadMat","SceneLoader","saveJson","saveModules","stringtest","ddd","CreateScreenshot","precision","sLength","checkInterval","is1F","cModule","curSize","loadSize","subVector","checkDirs","dirVector","rails","j","corners","flipX","flipZ","loadWall","wallex","exex","exez","exScaling","pData","rData","sData","boxMesh","y1","y2","trNum","random","LoadModule","windowEnt","LoadUnit","cam","flipH","d1wordRoot","d2wordRoot","vWordRoot","hIndex","currentHistory","typeModules","positionX","positionY","flipY","createApp","App","mount","app","use","config","globalProperties","$CLIENTURL","$WINDOW_PATH","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","deferred","O","chunkIds","fn","priority","notFulfilled","fulfilled","keys","every","n","getter","__esModule","a","definition","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}